/* =============================================================
   La Table — Restaurant Reservations · Public Stylesheet
   Fonts + palette vars loaded dynamically via wp_head.
   ============================================================= */

/* ── Custom Properties (defaults, overridden by wp_head) ─────── */
:root {
  --obsidian:         #0D0D0D;
  --ivory:            #F7F3EE;
  --ivory-dark:       #EDE8E0;
  --champagne:        #C9A96E;
  --champagne-light:  #E8D5B0;
  --champagne-pale:   #F5EDD9;
  --stone:            #8A8078;
  --stone-light:      #C4BDB4;
  --cream:            #FAFAF8;
  --white:            #FFFFFF;
  --error:            #9B3A3A;
  --success:          #3A6E5A;
  --font-display:     'Cormorant Garamond', Georgia, serif;
  --font-body:        'Jost', 'Helvetica Neue', sans-serif;
  --transition:       280ms cubic-bezier(.4,0,.2,1);
  --border:           1px solid var(--ivory-dark);
}

/* ── Base ───────────────────────────────────────────────────── */
.rb-booking-hub,
.rb-form-wrap,
.rb-event-wrap {
  font-family: inherit;
  font-weight:    300;
  color:          var(--obsidian);
  box-sizing:     border-box;
  letter-spacing: .02em;
  -webkit-font-smoothing: antialiased;
}
.rb-booking-hub *, .rb-form-wrap *, .rb-event-wrap * { box-sizing: border-box; }

/* ── Restaurant Name Banner ──────────────────────────────────── */
.rb-restaurant-name {
  text-align:     center;
  padding:        36px 24px 28px;
  background:     var(--cream);
  border-bottom:  var(--border);
}
.rb-restaurant-name h2 {
  font-family:    var(--theme-font-heading, var(--rb-font-display));
  font-size:      42px;
  font-weight:    300;
  font-style:     italic;
  letter-spacing: .04em;
  color:          var(--obsidian);
  margin:         0 0 8px;
  line-height:    1.1;
}
.rb-restaurant-name p {
  font-size:      13px;
  font-weight:    700;
  letter-spacing: .18em;
  text-transform: uppercase;
  color:          inherit;
  opacity:        .55;
  margin:         0;
}

/* ── Tabs ───────────────────────────────────────────────────── */
.rb-tabs {
  display:               grid;
  grid-template-columns: repeat(4,1fr);
  background:            var(--obsidian);
}
@media (max-width:680px) { .rb-tabs { grid-template-columns: repeat(2,1fr); } }
@media (max-width:360px) { .rb-tabs { grid-template-columns: 1fr; } }

.rb-tab-btn {
  position:        relative;
  display:         flex;
  flex-direction:  column;
  align-items:     center;
  justify-content: center;
  gap:             5px;
  padding:         24px 14px 20px;
  background:      transparent;
  border:          none;
  border-right:    1px solid rgba(255,255,255,.07);
  cursor:          pointer;
  text-align:      center;
  color:           var(--stone-light);
  transition:      background var(--transition), color var(--transition);
  overflow:        hidden;
}
.rb-tab-btn:last-child { border-right: none; }
.rb-tab-btn::after {
  content:         '';
  position:        absolute;
  bottom:          0; left:50%;
  transform:       translateX(-50%) scaleX(0);
  width:           32px; height: 2px;
  background:      var(--champagne);
  transition:      transform var(--transition);
  transform-origin: center;
}
.rb-tab-btn:hover         { background: rgba(255,255,255,.04); color: var(--champagne-light); }
.rb-tab-btn.active        { background: rgba(201,169,110,.10); color: var(--champagne); }
.rb-tab-btn.active::after { transform: translateX(-50%) scaleX(1); }

/* Tab labels — NO icon, just text */
.rb-tab-icon  { display: none; }   /* icons hidden globally */
.rb-tab-label {
  font-family:    var(--theme-font-heading, var(--rb-font-display));
  font-size:      15px;
  font-weight:    400;
  font-style:     italic;
  letter-spacing: .04em;
  line-height:    1.2;
}
.rb-tab-sub {
  font-size:      11px;
  font-weight:    500;
  opacity:        .7;
  letter-spacing: .08em;
  text-transform: uppercase;
  line-height:    1.3;
}

/* ── Tab Panels ─────────────────────────────────────────────── */
.rb-tab-panels { background: var(--cream); }
.rb-tab-panel  { display: none; padding: 52px 48px 48px; }
.rb-tab-panel.active { display: block; }
@media (max-width:600px) { .rb-tab-panel { padding: 32px 20px; } }

/* ── Standalone wrap ────────────────────────────────────────── */
.rb-form-wrap {
  background: var(--cream);
  border:     var(--border);
  border-radius: var(--rb-radius);
  overflow:   hidden;
  max-width:  820px;
  padding:    0 0 52px;
}
/* Padding only on inner content, not the restaurant banner */
.rb-form-wrap .rb-form-header,
.rb-form-wrap .rb-success-msg,
.rb-form-wrap .rb-error-msg,
.rb-form-wrap .rb-booking-form { padding-left: 52px; padding-right: 52px; }
.rb-form-wrap .rb-booking-form { padding-top: 0; }
@media (max-width:600px) {
  .rb-form-wrap .rb-form-header,
  .rb-form-wrap .rb-success-msg,
  .rb-form-wrap .rb-error-msg,
  .rb-form-wrap .rb-booking-form { padding-left: 20px; padding-right: 20px; }
}

/* When inside a tab panel, hide duplicate restaurant name */
.rb-tab-panel .rb-form-wrap .rb-restaurant-name,
.rb-tab-panel .rb-event-wrap .rb-restaurant-name { display: none; }
/* Tab panels handle their own padding */
.rb-tab-panel .rb-form-wrap { border: none; max-width: 100%; padding: 0; }
.rb-tab-panel .rb-form-wrap .rb-form-header,
.rb-tab-panel .rb-form-wrap .rb-success-msg,
.rb-tab-panel .rb-form-wrap .rb-error-msg,
.rb-tab-panel .rb-form-wrap .rb-booking-form { padding-left: 0; padding-right: 0; }

/* ── Form Header — centred, no icon ─────────────────────────── */
.rb-form-header {
  margin-bottom:  48px;
  padding-bottom: 36px;
  border-bottom:  var(--border);
  text-align:     center;
}
.rb-form-icon  { display: none; }   /* icons removed */
.rb-form-title {
  font-family:    var(--theme-font-heading, var(--rb-font-display));
  font-size:      54px;
  font-weight:    300;
  font-style:     italic;
  letter-spacing: .02em;
  margin:         0 0 16px;
  color:          var(--obsidian);
  line-height:    1.05;
}
.rb-form-avail {
  margin:         0;
  font-size:      14px;
  font-weight:    700;
  letter-spacing: .16em;
  text-transform: uppercase;
  color:          inherit;
  opacity:        .65;
}

/* ── Event form header (dark, centred) ──────────────────────── */
.rb-event-header {
  background:    var(--obsidian);
  padding:       48px 40px 44px;
  margin-bottom: 52px;
  text-align:    center;
}
.rb-event-header .rb-form-title { color: var(--champagne-light); margin-bottom: 12px; font-size: 54px; }
.rb-event-header .rb-form-avail { color: var(--stone-light); }

/* ── Form Grid ──────────────────────────────────────────────── */
.rb-form-grid {
  display:               grid;
  grid-template-columns: 1fr 1fr;
  gap:                   24px 32px;
}
.rb-field-full { grid-column: 1/-1; }
@media (max-width:540px) { .rb-form-grid { grid-template-columns: 1fr; } }

/* ── Fields ─────────────────────────────────────────────────── */
.rb-field label {
  display:        block;
  font-size:      13px;
  font-weight:    600;
  letter-spacing: .10em;
  text-transform: uppercase;
  color:          inherit;
  opacity:        .6;
  margin-bottom:  9px;
}
.rb-field input[type="text"],
.rb-field input[type="email"],
.rb-field input[type="tel"],
.rb-field input[type="date"],
.rb-field input[type="number"],
.rb-field select,
.rb-field textarea {
  width:          100%;
  padding:        15px 18px;
  background:     var(--white);
  border:         1px solid var(--ivory-dark);
  border-radius: var(--rb-radius);
  font-family: inherit;
  font-size:      16px;
  font-weight:    300;
  color:          inherit;
  letter-spacing: .02em;
  line-height:    1.5;
  min-height:     54px;
  transition:     border-color var(--transition), box-shadow var(--transition);
  -webkit-appearance: none;
  appearance:     none;
}
.rb-field select {
  background-image:    url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='10' height='6'%3E%3Cpath d='M1 1l4 4 4-4' stroke='%238A8078' stroke-width='1.5' fill='none' stroke-linecap='round'/%3E%3C/svg%3E");
  background-repeat:   no-repeat;
  background-position: right 18px center;
  padding-right:       46px;
  cursor:              pointer;
}
.rb-field textarea {
  min-height: 120px;
  resize:     vertical;
}
.rb-field input:focus,
.rb-field select:focus,
.rb-field textarea:focus {
  outline:      none;
  border-color: var(--champagne);
  box-shadow:   0 0 0 3px var(--champagne-pale);
}
.rb-field input::placeholder,
.rb-field textarea::placeholder { color: var(--stone-light); font-size: 15px; }
.rb-field-hint { font-size: 13px; color: inherit; opacity: .55; margin-top: 7px; letter-spacing: .02em; display: block; }
.rb-req { color: var(--champagne); }

/* ── Button ─────────────────────────────────────────────────── */
.rb-form-footer { margin-top: 44px; }
.rb-btn {
  display:         inline-flex;
  align-items:     center;
  justify-content: center;
  gap:             10px;
  padding:         17px 48px;
  border:          1px solid var(--obsidian);
  background:      var(--obsidian);
  color:           var(--ivory);
  font-family: inherit;
  font-size:       11px;
  font-weight:     500;
  letter-spacing:  .20em;
  text-transform:  uppercase;
  cursor:          pointer;
  border-radius: var(--rb-radius);
  position:        relative;
  overflow:        hidden;
  transition:      background var(--transition), color var(--transition), border-color var(--transition);
}
.rb-btn::before {
  content:          '';
  position:         absolute;
  inset:            0;
  background:       var(--champagne);
  transform:        scaleX(0);
  transform-origin: left;
  transition:       transform var(--transition);
}
.rb-btn:hover::before { transform: scaleX(1); }
.rb-btn:hover         { color: var(--obsidian); border-color: var(--champagne); }
.rb-btn span          { position: relative; }
.rb-btn:disabled      { opacity: .55; cursor: not-allowed; }

.rb-form-notice {
  margin-top:     16px;
  font-size:      14px;
  color:          inherit;
  opacity:        .6;
  letter-spacing: .02em;
  line-height:    1.7;
}

/* ── Messages ───────────────────────────────────────────────── */
.rb-success-msg,
.rb-error-msg {
  padding:      16px 20px;
  margin-bottom: 24px;
  font-size:    14px;
  font-weight:  400;
  letter-spacing: .02em;
  line-height:  1.5;
}
.rb-success-msg { background: #EAF4EF; color: var(--success, #3A6E5A); border-left: 3px solid var(--success, #3A6E5A); }
.rb-error-msg   { background: #F9EDED; color: var(--error, #9B3A3A);   border-left: 3px solid var(--error, #9B3A3A); }

/* ── Private Event — section numbers ────────────────────────── */
.rb-section-num {
  display:         inline-flex;
  align-items:     center;
  justify-content: center;
  width:           32px; height: 32px;
  border:          1px solid var(--champagne);
  color:           var(--champagne);
  font-family:     var(--theme-font-heading, var(--rb-font-display));
  font-size:       14px;
  font-style:      italic;
  margin-right:    12px;
  flex-shrink:     0;
}
.rb-section-heading {
  display:        flex;
  align-items:    center;
  font-family:    var(--theme-font-heading, var(--rb-font-display));
  font-size:      28px;
  font-style:     italic;
  font-weight:    300;
  color:          var(--obsidian);
  margin:         0 0 8px;
}
.rb-section-sub {
  font-size:   15px;
  font-weight: 400;
  color:       inherit;
  opacity:     .65;
  margin:      -16px 0 20px;
  line-height: 1.5;
}
.rb-event-section {
  margin-bottom: 48px;
  padding-bottom: 40px;
  border-bottom:  var(--border);
}
.rb-event-section:last-child { border-bottom: none; margin-bottom: 0; }

/* ── Item Cards (event menu) ────────────────────────────────── */
.rb-items-by-cat {}
.rb-cat-label {
  font-size:      9px;
  font-weight:    500;
  letter-spacing: .22em;
  text-transform: uppercase;
  color:          var(--champagne);
  margin:         24px 0 12px;
}
.rb-cat-label:first-child { margin-top: 0; }
.rb-items-grid {
  display:               grid;
  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));
  gap:                   12px;
}
.rb-item-card {
  position:    relative;
  padding:     18px 20px 18px 24px;
  background:  var(--white);
  border:      1px solid var(--ivory-dark);
  cursor:      pointer;
  transition:  border-color var(--transition), background var(--transition);
  overflow:    hidden;
}
.rb-item-card::before {
  content:         '';
  position:        absolute;
  left:            0; top: 0; bottom: 0;
  width:           3px;
  background:      var(--champagne);
  transform:       scaleY(0);
  transform-origin: bottom;
  transition:      transform var(--transition);
}
.rb-item-card:hover           { border-color: var(--champagne-light); }
.rb-item-card:hover::before   { transform: scaleY(.5); }
.rb-item-card.selected        { background: var(--champagne-pale); border-color: var(--champagne); }
.rb-item-card.selected::before { transform: scaleY(1); }
.rb-item-name  { font-size: 15px; font-weight: 400; color: var(--obsidian); margin: 0 0 4px; }
.rb-item-desc  { font-size: 14px; color: inherit; opacity: .65; margin: 0 0 10px; line-height: 1.5; }
.rb-item-price {
  font-family: var(--theme-font-heading, var(--rb-font-display));
  font-size:   18px;
  font-style:  italic;
  color:       var(--champagne);
}
.rb-item-pg    { font-size: 10px; color: var(--stone-light); letter-spacing: .06em; margin-left: 4px; }

/* ── Cost Summary ───────────────────────────────────────────── */
.rb-cost-summary {
  background:    var(--obsidian);
  padding:       28px 32px;
  margin-top:    32px;
}
.rb-cost-summary::before {
  content:    '';
  display:    block;
  height:     1px;
  background: linear-gradient(90deg, var(--champagne), transparent);
  margin-bottom: 24px;
}
.rb-cost-table { width: 100%; border-collapse: collapse; }
.rb-cost-table td {
  padding:    6px 0;
  font-size:  13px;
  color:      var(--stone-light);
  font-weight: 300;
}
.rb-cost-table td:last-child { text-align: right; }
.rb-breakdown-empty {
  font-size:  13px;
  color:      var(--stone);
  font-style: italic;
  margin:     0 0 12px;
}
.rb-grand-total {
  display:       flex;
  justify-content: space-between;
  align-items:   center;
  padding-top:   16px;
  margin-top:    12px;
  border-top:    1px solid rgba(201,169,110,.3);
}
.rb-grand-total span:first-child {
  font-size:      10px;
  font-weight:    400;
  letter-spacing: .18em;
  text-transform: uppercase;
  color:          var(--stone-light);
}
.rb-grand-total strong {
  font-family: var(--theme-font-heading, var(--rb-font-display));
  font-size:   28px;
  font-style:  italic;
  color:       var(--champagne);
}

/* =============================================================
   La Table — Availability Calendar
   ============================================================= */

.rb-cal-wrap {
  font-family: inherit;
  font-weight:    300;
  color:          var(--obsidian);
  box-sizing:     border-box;
  letter-spacing: .02em;
  -webkit-font-smoothing: antialiased;
  max-width:      900px;
}
.rb-cal-wrap * { box-sizing: border-box; }

/* ── Header ─────────────────────────────────────────────────── */
.rb-cal-header {
  background:     var(--obsidian);
  padding:        36px 40px 28px;
}
.rb-cal-header-top { text-align: center; margin-bottom: 24px; }
.rb-cal-rest-name {
  font-family:    var(--theme-font-heading, var(--rb-font-display));
  font-size:      38px;
  font-weight:    300;
  font-style:     italic;
  letter-spacing: .04em;
  color:          var(--champagne);
  margin:         0 0 8px;
  line-height:    1.1;
}
.rb-cal-subtitle {
  font-size:      10px;
  font-weight:    400;
  letter-spacing: .24em;
  text-transform: uppercase;
  color:          rgba(255,255,255,.35);
  margin:         0;
}

/* Month navigation */
.rb-cal-nav {
  display:        flex;
  align-items:    center;
  justify-content: center;
  gap:            24px;
}
.rb-cal-nav-btn {
  background:     transparent;
  border:         1px solid rgba(201,169,110,.3);
  color:          var(--champagne);
  width:          36px;
  height:         36px;
  cursor:         pointer;
  font-size:      16px;
  display:        flex;
  align-items:    center;
  justify-content: center;
  transition:     background 200ms, border-color 200ms;
}
.rb-cal-nav-btn:hover { background: rgba(201,169,110,.1); border-color: var(--champagne); }
.rb-cal-month-label {
  font-family:    var(--theme-font-heading, var(--rb-font-display));
  font-size:      22px;
  font-weight:    300;
  font-style:     italic;
  color:          var(--ivory);
  letter-spacing: .06em;
  margin:         0;
  min-width:      200px;
  text-align:     center;
}

/* ── Legend ─────────────────────────────────────────────────── */
.rb-cal-legend {
  display:        flex;
  flex-wrap:      wrap;
  gap:            8px 24px;
  padding:        14px 40px;
  background:     rgba(13,13,13,.96);
  border-bottom:  1px solid rgba(255,255,255,.06);
}
.rb-cal-legend-item {
  display:        flex;
  align-items:    center;
  gap:            7px;
  font-size:      10px;
  font-weight:    400;
  letter-spacing: .12em;
  text-transform: uppercase;
  color:          rgba(255,255,255,.45);
}
.rb-cal-legend-dot {
  display:        inline-block;
  width:          8px;
  height:         8px;
  border-radius:  50%;
  flex-shrink:    0;
}

/* ── Grid ───────────────────────────────────────────────────── */
.rb-cal-grid {
  display:               grid;
  grid-template-columns: repeat(7, 1fr);
  background:            var(--cream);
}

/* Day name row */
.rb-cal-daynames {
  background:    var(--obsidian);
  border-bottom: 1px solid rgba(255,255,255,.08);
}
.rb-cal-dayname {
  padding:        10px 0;
  text-align:     center;
  font-size:      9px;
  font-weight:    500;
  letter-spacing: .18em;
  text-transform: uppercase;
  color:          rgba(255,255,255,.3);
}

/* Day cells */
.rb-cal-days {
  border-left:   1px solid var(--ivory-dark);
  border-top:    1px solid var(--ivory-dark);
}
.rb-cal-cell {
  min-height:     88px;
  padding:        10px 10px 8px;
  border-right:   1px solid var(--ivory-dark);
  border-bottom:  1px solid var(--ivory-dark);
  background:     var(--white);
  position:       relative;
  transition:     background 180ms;
  cursor:         default;
}
.rb-cal-cell.rb-cal-has-bookings {
  cursor:         pointer;
  background:     var(--cream);
}
.rb-cal-cell.rb-cal-has-bookings:hover { background: var(--champagne-pale); }
.rb-cal-cell.rb-cal-empty { background: transparent; border-color: transparent; }
.rb-cal-cell.rb-cal-past  { opacity: .5; }
.rb-cal-cell.rb-cal-today .rb-cal-day-num {
  background:    var(--champagne);
  color:         var(--obsidian);
}

.rb-cal-day-num {
  display:        inline-flex;
  align-items:    center;
  justify-content: center;
  width:          26px;
  height:         26px;
  font-size:      13px;
  font-weight:    400;
  color:          var(--obsidian);
  margin-bottom:  6px;
  letter-spacing: 0;
}

/* Service dots */
.rb-cal-dots {
  display:    flex;
  flex-wrap:  wrap;
  gap:        4px;
  margin-bottom: 5px;
}
.rb-cal-dot {
  display:      inline-block;
  width:        7px;
  height:       7px;
  border-radius: 50%;
}

/* Guest count */
.rb-cal-cell-guests {
  font-size:      10px;
  font-weight:    400;
  color:          var(--stone);
  letter-spacing: .04em;
}

/* Loading */
.rb-cal-loading {
  grid-column: 1 / -1;
  display:     flex;
  align-items: center;
  justify-content: center;
  padding:     60px 0;
}
.rb-cal-spinner {
  display:      inline-block;
  width:        22px;
  height:       22px;
  border:       2px solid var(--ivory-dark);
  border-top-color: var(--champagne);
  border-radius: 50%;
  animation:    rb-spin .7s linear infinite;
}
@keyframes rb-spin { to { transform: rotate(360deg); } }

/* ── Day Detail Panel ───────────────────────────────────────── */
.rb-cal-detail {
  border-top:  2px solid var(--champagne);
  background:  var(--white);
  border:      1px solid var(--ivory-dark);
  border-top:  3px solid var(--champagne);
}
.rb-cal-detail-header {
  display:     flex;
  align-items: center;
  justify-content: space-between;
  padding:     18px 28px;
  background:  var(--obsidian);
}
.rb-cal-detail-date {
  font-family:    var(--theme-font-heading, var(--rb-font-display));
  font-size:      20px;
  font-style:     italic;
  font-weight:    300;
  color:          var(--champagne-light);
  letter-spacing: .03em;
}
.rb-cal-detail-close {
  background:  transparent;
  border:      none;
  color:       var(--stone-light);
  font-size:   22px;
  cursor:      pointer;
  line-height: 1;
  padding:     0 4px;
  transition:  color 180ms;
}
.rb-cal-detail-close:hover { color: var(--champagne); }

.rb-cal-detail-body {
  padding: 24px 28px;
}

/* Time slot grouping */
.rb-cal-slot {
  margin-bottom: 24px;
}
.rb-cal-slot:last-child { margin-bottom: 0; }
.rb-cal-slot-time {
  font-size:      10px;
  font-weight:    500;
  letter-spacing: .20em;
  text-transform: uppercase;
  color:          var(--champagne);
  margin-bottom:  10px;
  padding-bottom: 6px;
  border-bottom:  1px solid var(--champagne-pale);
}

/* Individual booking card */
.rb-cal-booking-card {
  background:    var(--cream);
  border:        1px solid var(--ivory-dark);
  border-left:   3px solid var(--champagne);
  padding:       14px 16px;
  margin-bottom: 8px;
}
.rb-cal-booking-card:last-child { margin-bottom: 0; }
.rb-cal-booking-top {
  display:     flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 8px;
}
.rb-cal-svc-pill {
  font-size:      9px;
  font-weight:    500;
  letter-spacing: .14em;
  text-transform: uppercase;
  border:         1px solid;
  padding:        2px 8px;
}
.rb-cal-booking-status {
  font-size:      9px;
  font-weight:    500;
  letter-spacing: .12em;
  text-transform: uppercase;
  padding:        2px 8px;
  border:         1px solid;
}
.rb-cal-status-pending   { color: #8B6914; border-color: #E8D5B0; background: #F5EDD9; }
.rb-cal-status-confirmed { color: #2D5C45; border-color: #B8D4C0; background: #EAF4EF; }
.rb-cal-status-completed { color: #5A5550; border-color: #C4BDB4; background: #EDE8E0; }
.rb-cal-status-cancelled { color: #7A3030; border-color: #E0C0C0; background: #FAF0F0; }

.rb-cal-booking-guests {
  display:     flex;
  align-items: center;
  gap:         6px;
  font-size:   14px;
  font-weight: 400;
  color:       var(--obsidian);
}
.rb-cal-booking-guests svg { color: var(--stone); flex-shrink: 0; }

.rb-cal-booking-notes {
  margin-top:  8px;
  font-size:   12px;
  color:       var(--stone);
  font-style:  italic;
  line-height: 1.5;
  letter-spacing: .01em;
}

/* ── Responsive ─────────────────────────────────────────────── */
@media (max-width: 600px) {
  .rb-cal-header { padding: 28px 20px 20px; }
  .rb-cal-rest-name { font-size: 28px; }
  .rb-cal-legend { padding: 12px 20px; gap: 6px 16px; }
  .rb-cal-cell { min-height: 56px; padding: 6px; }
  .rb-cal-day-num { width: 22px; height: 22px; font-size: 11px; }
  .rb-cal-cell-guests { display: none; }
  .rb-cal-detail-header { padding: 14px 16px; }
  .rb-cal-detail-body { padding: 16px; }
  .rb-cal-month-label { font-size: 18px; min-width: 160px; }
}

/* =============================================================
   AVAILABILITY CALENDAR  [restaurant_calendar]
   ============================================================= */

.rb-calendar-wrap {
  font-family:  inherit;
  font-weight:  300;
  color:        var(--obsidian);
  max-width:    900px;
  margin:       0 auto;
  -webkit-font-smoothing: antialiased;
  box-sizing:   border-box;
}
.rb-calendar-wrap * { box-sizing: border-box; }

/* Header — month + nav */
.rb-cal-header {
  display:         flex;
  align-items:     center;
  justify-content: space-between;
  padding:         28px 0 24px;
  border-bottom:   1px solid var(--ivory-dark);
  margin-bottom:   0;
}
.rb-cal-header h2 {
  font-family:  var(--theme-font-heading, var(--rb-font-display));
  font-size:    36px;
  font-weight:  300;
  font-style:   italic;
  letter-spacing: .02em;
  margin:       0;
  color:        var(--obsidian);
}
.rb-cal-nav {
  background:    none;
  border:        1px solid var(--champagne);
  color:         var(--champagne);
  width:         40px;
  height:        40px;
  font-size:     20px;
  cursor:        pointer;
  display:       flex;
  align-items:   center;
  justify-content: center;
  transition:    background var(--transition), color var(--transition);
  flex-shrink:   0;
}
.rb-cal-nav:hover {
  background: var(--champagne);
  color:      var(--white);
}

/* Legend */
.rb-cal-legend {
  display:    flex;
  gap:        20px;
  flex-wrap:  wrap;
  padding:    14px 0;
  border-bottom: 1px solid var(--ivory-dark);
  margin-bottom: 0;
}
.rb-cal-legend-item {
  display:     flex;
  align-items: center;
  gap:         7px;
  font-size:   12px;
  letter-spacing: .06em;
  text-transform: uppercase;
  color:       var(--stone);
}
.rb-cal-legend-dot {
  width:         10px;
  height:        10px;
  border-radius: 50%;
  flex-shrink:   0;
}

/* Day-of-week row */
.rb-cal-dow {
  display:     grid;
  grid-template-columns: repeat(7, 1fr);
  background:  var(--obsidian);
}
.rb-cal-dow span {
  text-align:     center;
  padding:        10px 4px;
  font-size:      11px;
  letter-spacing: .1em;
  text-transform: uppercase;
  color:          var(--champagne);
  font-weight:    400;
}

/* Grid */
.rb-cal-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  border-left:   1px solid var(--ivory-dark);
  border-top:    1px solid var(--ivory-dark);
}

/* Cell */
.rb-cal-cell {
  border-right:  1px solid var(--ivory-dark);
  border-bottom: 1px solid var(--ivory-dark);
  min-height:    100px;
  padding:       8px;
  position:      relative;
  background:    var(--cream);
  transition:    background 200ms;
  vertical-align: top;
}
.rb-cal-cell.rb-cal-empty {
  background: var(--ivory);
  opacity: .5;
}
.rb-cal-cell.rb-cal-past {
  opacity: .45;
}
.rb-cal-cell.rb-cal-today .rb-cal-day-num {
  background:    var(--champagne);
  color:         var(--white);
}
.rb-cal-cell.rb-cal-has-bookings {
  cursor: pointer;
}
.rb-cal-cell.rb-cal-has-bookings:hover {
  background: var(--champagne-pale);
}
.rb-cal-day-num {
  display:       inline-flex;
  align-items:   center;
  justify-content: center;
  width:         26px;
  height:        26px;
  font-size:     13px;
  font-weight:   400;
  letter-spacing: .02em;
  margin-bottom: 4px;
  color:         var(--obsidian);
}

/* Booking pills inside cells */
.rb-cal-pills {
  display:   flex;
  flex-direction: column;
  gap:       3px;
  margin-top: 2px;
}
.rb-cal-pill {
  font-size:     11px;
  padding:       2px 6px;
  white-space:   nowrap;
  overflow:      hidden;
  text-overflow: ellipsis;
  font-weight:   400;
  letter-spacing: .02em;
}
.rb-cal-pill--lunch   { background: #e8f5e9; color: #2e7d32; }
.rb-cal-pill--tea     { background: #fff8e1; color: #f57f17; }
.rb-cal-pill--salad   { background: #e3f2fd; color: #1565c0; }
.rb-cal-more {
  font-size:  10px;
  color:      var(--stone);
  margin-top: 2px;
  letter-spacing: .04em;
}

/* Loading state */
.rb-cal-loading {
  text-align:  center;
  padding:     60px 20px;
  color:       var(--stone);
  font-size:   14px;
  letter-spacing: .06em;
  text-transform: uppercase;
}

/* ── Day Detail Panel ─────────────────────────────────────────── */
.rb-cal-detail {
  margin-top:  0;
  border:      1px solid var(--ivory-dark);
  border-top:  none;
  background:  var(--white);
  padding:     28px 32px;
  animation:   rbFadeIn 200ms ease;
  display:     none;
}
.rb-cal-detail.is-open { display: block; }

@keyframes rbFadeIn {
  from { opacity: 0; transform: translateY(-6px); }
  to   { opacity: 1; transform: translateY(0); }
}

.rb-cal-detail-header {
  display:         flex;
  align-items:     baseline;
  justify-content: space-between;
  margin-bottom:   20px;
  padding-bottom:  14px;
  border-bottom:   1px solid var(--ivory-dark);
}
.rb-cal-detail-header h3 {
  font-family:  var(--theme-font-heading, var(--rb-font-display));
  font-size:    28px;
  font-weight:  300;
  font-style:   italic;
  margin:       0;
  color:        var(--obsidian);
}
.rb-cal-detail-close {
  background:   none;
  border:       none;
  font-size:    22px;
  cursor:       pointer;
  color:        var(--stone);
  line-height:  1;
  padding:      0 4px;
  transition:   color 200ms;
}
.rb-cal-detail-close:hover { color: var(--obsidian); }

/* Booking cards in detail panel */
.rb-cal-booking-list {
  display:   flex;
  flex-direction: column;
  gap:       12px;
}
.rb-cal-booking-card {
  border:      1px solid var(--ivory-dark);
  padding:     14px 18px;
  display:     grid;
  grid-template-columns: auto 1fr auto;
  gap:         0 16px;
  align-items: center;
}
.rb-cal-booking-time {
  font-family:  var(--theme-font-heading, var(--rb-font-display));
  font-size:    22px;
  font-style:   italic;
  color:        var(--champagne);
  white-space:  nowrap;
  min-width:    60px;
}
.rb-cal-booking-info { min-width: 0; }
.rb-cal-booking-name {
  font-size:    15px;
  font-weight:  400;
  letter-spacing: .02em;
  white-space:  nowrap;
  overflow:     hidden;
  text-overflow: ellipsis;
}
.rb-cal-booking-service {
  font-size:   12px;
  color:       var(--stone);
  letter-spacing: .06em;
  text-transform: uppercase;
  margin-top:  2px;
}
.rb-cal-booking-guests {
  font-size:   13px;
  color:       var(--stone);
  white-space: nowrap;
  text-align:  right;
}
.rb-cal-booking-guests strong {
  display:     block;
  font-size:   20px;
  font-family: var(--theme-font-heading, var(--rb-font-display));
  font-style:  italic;
  color:       var(--obsidian);
  font-weight: 300;
  line-height: 1;
}
.rb-cal-no-bookings {
  text-align:     center;
  padding:        30px;
  color:          var(--stone);
  font-size:      14px;
  letter-spacing: .04em;
}

/* Responsive */
@media (max-width: 600px) {
  .rb-cal-cell     { min-height: 60px; padding: 4px; }
  .rb-cal-day-num  { width: 20px; height: 20px; font-size: 11px; }
  .rb-cal-pill     { font-size: 9px; padding: 1px 4px; }
  .rb-cal-detail   { padding: 18px 16px; }
  .rb-cal-booking-card { grid-template-columns: auto 1fr; }
  .rb-cal-booking-guests { display: none; }
  .rb-cal-header h2 { font-size: 26px; }
}

/* ── Lunch menu image ─────────────────────────────────────────── */
.rb-menu-image {
    position: relative;
    width: 100%;
    max-height: 320px;
    overflow: hidden;
    margin-bottom: 0;
}
.rb-menu-image img {
    width: 100%;
    height: 280px;
    object-fit: cover;
    display: block;
}
.rb-menu-image-label {
    position: absolute;
    bottom: 0;
    left: 0;
    right: 0;
    background: linear-gradient(transparent, rgba(13,13,13,.75));
    color: var(--champagne, #C9A96E);
    font-family: var(--rb-font-display, 'Cormorant Garamond', serif);
    font-size: 13px;
    font-style: italic;
    font-weight: 300;
    letter-spacing: .18em;
    text-transform: uppercase;
    padding: 28px 20px 12px;
}

/* ── Members-only gate ──────────────────────────────────────── */
.rb-members-register-link {
    margin-top: 16px;
    font-size: 13px;
    color: var(--rb-color-stone, #8A8078);
}
.rb-members-register-link a {
    color: var(--rb-color-champagne, #C9A96E);
    text-decoration: none;
    border-bottom: 1px solid rgba(201,169,110,.3);
    padding-bottom: 1px;
    transition: border-color 200ms;
}
.rb-members-register-link a:hover {
    border-bottom-color: var(--rb-color-champagne, #C9A96E);
}

/* ── Membership registration form ────────────────────────────── */
.rb-membership-wrap {
    max-width: 560px;
    margin: 0 auto;
}
.rb-membership-header {
    text-align: center;
    padding-bottom: 28px;
    margin-bottom: 28px;
    border-bottom: 1px solid rgba(0,0,0,.08);
}
.rb-membership-icon {
    font-size: 18px;
    color: var(--rb-color-champagne, #C9A96E);
    margin-bottom: 12px;
    letter-spacing: .12em;
}
.rb-membership-title {
    font-family: var(--rb-font-display, 'Cormorant Garamond', serif);
    font-size: 30px;
    font-style: italic;
    font-weight: 300;
    color: var(--rb-color-obsidian, #0D0D0D);
    margin: 0 0 10px;
}
.rb-membership-intro,
.rb-membership-msg {
    font-size: 14px;
    font-weight: 300;
    color: var(--rb-color-stone, #8A8078);
    line-height: 1.7;
    margin: 0;
}
.rb-membership-success {
    background: rgba(201,169,110,.08);
    border-left: 3px solid var(--rb-color-champagne, #C9A96E);
    padding: 16px 20px;
    font-size: 14px;
    color: var(--rb-color-obsidian, #0D0D0D);
    margin-bottom: 20px;
    line-height: 1.6;
}
.rb-membership-error {
    background: rgba(180,40,40,.06);
    border-left: 3px solid #b42828;
    padding: 16px 20px;
    font-size: 14px;
    color: #8B0000;
    margin-bottom: 20px;
    line-height: 1.6;
}
.rb-membership-pending .rb-membership-title,
.rb-membership-already .rb-membership-title {
    font-size: 24px;
}

/* ── My Bookings ─────────────────────────────────────────────── */
.rb-my-bookings-wrap { max-width: 680px; }
.rb-my-bookings-header { margin-bottom: 24px; }
.rb-my-bookings-title {
    font-family: var(--rb-font-display, 'Cormorant Garamond', serif);
    font-size: 28px;
    font-style: italic;
    font-weight: 300;
    color: var(--rb-color-obsidian, #0D0D0D);
    margin: 0 0 6px;
}
.rb-my-bookings-sub {
    font-size: 13px;
    color: var(--rb-color-stone, #8A8078);
    margin: 0;
}
.rb-my-bookings-empty {
    padding: 40px 0;
    text-align: center;
    color: var(--rb-color-stone, #8A8078);
    font-size: 14px;
}
.rb-my-booking-card {
    display: flex;
    justify-content: space-between;
    align-items: center;
    padding: 16px 20px;
    border: 1px solid rgba(0,0,0,.08);
    margin-bottom: 10px;
    background: var(--rb-color-cream, #FAFAF8);
    gap: 16px;
}
.rb-my-booking-card.rb-booking-past {
    opacity: .6;
}
.rb-my-booking-left {
    display: flex;
    flex-direction: column;
    gap: 4px;
}
.rb-my-booking-service {
    font-size: 13px;
    font-weight: 500;
    color: var(--rb-color-obsidian, #0D0D0D);
    letter-spacing: .04em;
}
.rb-my-booking-date {
    font-size: 13px;
    color: var(--rb-color-stone, #8A8078);
}
.rb-my-booking-guests {
    font-size: 12px;
    color: var(--rb-color-stone, #8A8078);
}
.rb-my-booking-right {
    display: flex;
    flex-direction: column;
    align-items: flex-end;
    gap: 6px;
    flex-shrink: 0;
}
.rb-my-booking-cost {
    font-family: var(--rb-font-display, 'Cormorant Garamond', serif);
    font-size: 15px;
    font-style: italic;
    color: var(--rb-color-champagne, #C9A96E);
}


/* =============================================================
   SECTION: Typography, Radius, Gate UI, Member Greeting
   Consolidated — replaces all previous appended blocks
   ============================================================= */

/* ── Typography inheritance ─────────────────────────────────────
   Body text, fields, and buttons inherit the site theme font.
   Display headings use --theme-font-heading if set by the theme,
   falling back to the plugin's own display font.
   ─────────────────────────────────────────────────────────── */
.rb-booking-hub,
.rb-form-wrap,
.rb-event-wrap,
.rb-gate-wrap,
.rb-membership-wrap,
.rb-my-bookings-wrap,
.rb-calendar-wrap           { font-family: inherit; }

.rb-field input,
.rb-field select,
.rb-field textarea,
.rb-btn,
.rb-gate-tab,
.rb-gate-email-input        { font-family: inherit; }

/* Heading elements defer to theme then fall back to plugin display font */
.rb-restaurant-name h2,
.rb-form-title,
.rb-event-header .rb-form-title,
.rb-tab-label,
.rb-member-greeting-text,
.rb-membership-title,
.rb-my-bookings-title,
.rb-gate-nonmember-title    { font-family: var(--theme-font-heading, var(--rb-font-display)); }

/* ── Rounded corners ────────────────────────────────────────────
   Single variable controls all radii. Override in custom CSS:
   :root { --rb-radius: 4px; }
   ─────────────────────────────────────────────────────────── */
.rb-booking-hub             { border-radius: var(--rb-radius-lg, 12px); overflow: hidden; }
.rb-form-wrap               { border-radius: var(--rb-radius, 8px);     overflow: hidden; }
.rb-event-wrap              { border-radius: var(--rb-radius, 8px);     overflow: hidden; }
.rb-gate-wrap               { border-radius: var(--rb-radius, 8px);     overflow: hidden; }
.rb-otp-form-wrap           { border-radius: 0 0 var(--rb-radius, 8px) var(--rb-radius, 8px); overflow: hidden; }
.rb-membership-wrap         { border-radius: var(--rb-radius, 8px);     overflow: hidden; }

.rb-field input[type="text"],
.rb-field input[type="email"],
.rb-field input[type="tel"],
.rb-field input[type="date"],
.rb-field input[type="number"],
.rb-field select,
.rb-field textarea          { border-radius: var(--rb-radius-sm, 6px); }

.rb-btn,
.rb-gate-apply-btn          { border-radius: var(--rb-radius, 8px); }

.rb-success-msg,
.rb-error-msg,
.rb-membership-success,
.rb-membership-error        { border-radius: var(--rb-radius-sm, 6px); }

.rb-status-badge            { border-radius: var(--rb-radius-sm, 6px); }
.rb-cal-day                 { border-radius: var(--rb-radius-sm, 6px); }
.rb-cal-pill                { border-radius: 999px; }
.rb-my-booking-card         { border-radius: var(--rb-radius, 8px); }

/* Gate tabs: top corners rounded, bottom flush with panels */
.rb-gate-tabs               { border-radius: var(--rb-radius, 8px) var(--rb-radius, 8px) 0 0; }
.rb-gate-tab:first-child    { border-radius: var(--rb-radius, 8px) 0 0 0; }
.rb-gate-tab:last-child     { border-radius: 0 var(--rb-radius, 8px) 0 0; }

/* Inline email+button pairs — joined rounded corners */
.rb-gate-email-input        { border-radius: var(--rb-radius-sm, 6px) 0 0 var(--rb-radius-sm, 6px); }
.rb-gate-access-btn,
.rb-gate-access-btn.rb-btn  { border-radius: 0 var(--rb-radius-sm, 6px) var(--rb-radius-sm, 6px) 0 !important; }
.rb-otp-email-input         { border-radius: var(--rb-radius-sm, 6px) 0 0 var(--rb-radius-sm, 6px); }
.rb-otp-send-btn.rb-btn     { border-radius: 0 var(--rb-radius-sm, 6px) var(--rb-radius-sm, 6px) 0 !important; }

/* ── Two-panel Member / Not a Member gate ───────────────────── */
.rb-gate-wrap {
    background: var(--cream, #FAFAF8);
    border: var(--border, 1px solid #EDE8E0);
}
.rb-gate-tabs {
    display: grid;
    grid-template-columns: 1fr 1fr;
    border-bottom: 1px solid var(--ivory-dark, #EDE8E0);
}
.rb-gate-tab {
    display: flex;
    flex-direction: column;
    align-items: center;
    gap: 4px;
    padding: 20px 16px 18px;
    background: none;
    border: none;
    border-bottom: 2px solid transparent;
    margin-bottom: -1px;
    cursor: pointer;
    transition: background var(--transition, 280ms), border-color var(--transition, 280ms);
}
.rb-gate-tab:hover                      { background: var(--ivory, #F7F3EE); }
.rb-gate-tab--active                    { background: var(--white, #fff); border-bottom-color: var(--champagne, #C9A96E); }
.rb-gate-tab-icon                       { font-size: 12px; color: var(--champagne, #C9A96E); margin-bottom: 2px; }
.rb-gate-tab:not(.rb-gate-tab--active) .rb-gate-tab-icon { color: var(--stone-light, #C4BDB4); }
.rb-gate-tab-label                      { font-size: 13px; font-weight: 500; color: inherit; letter-spacing: .04em; }
.rb-gate-tab:not(.rb-gate-tab--active) .rb-gate-tab-label { color: var(--stone, #8A8078); font-weight: 400; }
.rb-gate-tab-hint                       { font-size: 11px; font-weight: 300; color: var(--stone-light, #C4BDB4); letter-spacing: .02em; }

.rb-gate-panel                          { display: block; }
.rb-gate-panel--hidden                  { display: none; }
.rb-gate-panel-inner                    { padding: 28px 32px 32px; }
.rb-gate-panel-desc                     { font-size: 15px; font-weight: 300; color: inherit; opacity: .7; line-height: 1.6; margin: 0 0 18px; }

.rb-gate-nonmember-inner                { text-align: center; padding: 36px 32px 32px; }
.rb-gate-nonmember-icon                 { font-size: 20px; color: var(--stone-light, #C4BDB4); margin-bottom: 14px; }
.rb-gate-nonmember-title                { font-size: 22px; font-style: italic; font-weight: 300; color: var(--obsidian, #0D0D0D); margin: 0 0 12px; line-height: 1.35; }
.rb-gate-nonmember-desc                 { font-size: 15px; font-weight: 300; color: inherit; opacity: .65; line-height: 1.7; margin: 0 0 24px; max-width: 380px; display: inline-block; }
.rb-gate-apply-btn                      { display: inline-block; width: auto; padding: 13px 32px; font-size: 11px; letter-spacing: .18em; text-transform: uppercase; text-decoration: none; margin-bottom: 20px; }
.rb-gate-nonmember-contact              { font-size: 13px; color: var(--stone, #8A8078); margin-bottom: 20px; }
.rb-gate-nonmember-already              { font-size: 12px; color: var(--stone-light, #C4BDB4); margin: 0; }
.rb-gate-nonmember-already a            { color: var(--champagne, #C9A96E); text-decoration: none; border-bottom: 1px solid rgba(201,169,110,.3); padding-bottom: 1px; }
.rb-gate-nonmember-already a:hover      { border-bottom-color: var(--champagne, #C9A96E); }

/* ── Email access input row ─────────────────────────────────── */
.rb-gate-email-row {
    display: flex;
    gap: 0;
    margin: 0 0 14px;
    flex-wrap: wrap;
}
.rb-gate-email-input {
    flex: 1;
    min-width: 180px;
    height: 50px;
    padding: 0 16px;
    font-size: 15px;
    border: 1px solid var(--ivory-dark, #EDE8E0);
    border-right: none;
    background: var(--white, #fff);
    transition: border-color 200ms;
}
.rb-gate-email-input:focus {
    outline: none;
    border-color: var(--champagne, #C9A96E);
    box-shadow: 0 0 0 3px var(--champagne-pale, #F5EDD9);
}
.rb-gate-access-btn {
    flex-shrink: 0;
    height: 50px;
    padding: 0 24px;
    width: auto;
}
.rb-gate-error {
    background: rgba(155,58,58,.07);
    border-left: 3px solid var(--error, #9B3A3A);
    padding: 10px 14px;
    font-size: 13px;
    color: var(--error, #9B3A3A);
    margin-bottom: 14px;
    border-radius: 0 var(--rb-radius-sm, 6px) var(--rb-radius-sm, 6px) 0;
    line-height: 1.5;
}
.rb-gate-error a                        { color: inherit; text-decoration: underline; }
.rb-gate-remember {
    display: flex;
    align-items: center;
    gap: 8px;
    font-size: 13px;
    color: var(--stone, #8A8078);
    cursor: pointer;
    font-weight: 300;
    letter-spacing: .02em;
    user-select: none;
}
.rb-gate-remember input[type="checkbox"] {
    width: 15px;
    height: 15px;
    accent-color: var(--champagne, #C9A96E);
    cursor: pointer;
    flex-shrink: 0;
}

/* ── Member greeting (authenticated, cookie valid) ──────────── */
.rb-member-greeting {
    padding: 24px 28px 20px;
    border-bottom: 1px solid rgba(201,169,110,.15);
    margin-bottom: 4px;
    display: flex;
    flex-direction: column;
    gap: 5px;
}
.rb-member-greeting-text {
    font-size: 26px;
    font-style: italic;
    font-weight: 300;
    color: var(--obsidian, #0D0D0D);
    line-height: 1.2;
}
.rb-member-greeting-sub {
    font-size: 15px;
    font-weight: 600;
    color: inherit;
    opacity: .6;
    letter-spacing: .01em;
}

/* ── Slim member form (authenticated state) ─────────────────── */
.rb-form-grid--slim                     { grid-template-columns: 1fr; max-width: 420px; }
.rb-form-grid--slim .rb-field-full      { grid-column: 1; }
.rb-form-wrap--member .rb-field input[type="date"],
.rb-form-wrap--member .rb-field select  { font-size: 16px; height: 52px; padding: 0 16px; }
.rb-form-wrap--member .rb-form-notice   { font-size: 13px; color: inherit; opacity: .55; letter-spacing: .02em; font-style: italic; }

/* ── Responsive ─────────────────────────────────────────────── */
@media (max-width: 480px) {
    .rb-gate-panel-inner                { padding: 20px 18px 22px; }
    .rb-gate-nonmember-inner            { padding: 26px 18px 22px; }
    .rb-gate-tab                        { padding: 14px 10px 12px; }
    .rb-gate-tab-hint                   { display: none; }
    .rb-gate-email-row                  { flex-direction: column; gap: 8px; }
    .rb-gate-email-input                { border-right: 1px solid var(--ivory-dark, #EDE8E0); border-radius: var(--rb-radius-sm, 6px) !important; }
    .rb-gate-access-btn                 { border-radius: var(--rb-radius-sm, 6px) !important; width: 100%; }
}

/* ── Full theme colour & typography inheritance ──────────────
   All plugin text inherits the site theme's colors and fonts.
   Plugin-specific colors (champagne, stone etc.) are used only
   for structural elements (tabs, borders, focus rings).
   ─────────────────────────────────────────────────────────── */

/* Every container starts from the theme baseline */
.rb-booking-hub,
.rb-form-wrap,
.rb-event-wrap,
.rb-gate-wrap,
.rb-membership-wrap,
.rb-my-bookings-wrap,
.rb-calendar-wrap {
  color: inherit;
  font-size: inherit;
  line-height: inherit;
}

/* Body text sizes bumped across the board */
.rb-field input,
.rb-field select,
.rb-field textarea  { font-size: 16px; }

.rb-gate-panel-desc,
.rb-gate-nonmember-desc,
.rb-gate-tab-hint,
.rb-membership-intro,
.rb-my-bookings-sub,
.rb-form-notice,
.rb-field-hint      { font-size: 13px; }

.rb-card-sub,
.rb-my-booking-date,
.rb-my-booking-guests { font-size: 13px; }

/* Heading elements: inherit theme heading color */
.rb-form-title,
.rb-restaurant-name h2,
.rb-membership-title,
.rb-my-bookings-title,
.rb-gate-nonmember-title,
.rb-member-greeting-text { color: inherit; }

/* Muted/secondary text: theme color at reduced opacity */
.rb-form-avail,
.rb-form-notice,
.rb-field-hint,
.rb-field label,
.rb-gate-panel-desc,
.rb-gate-tab-hint,
.rb-my-bookings-sub,
.rb-membership-intro { color: inherit; }

/* Tab labels inherit body color (they sit on dark background so that's fine) */
.rb-tab-label { color: inherit; }

/* Success and error messages use their own semantic colors — do not inherit */
.rb-success-msg { color: var(--success, #3A6E5A); }
.rb-error-msg   { color: var(--error,   #9B3A3A); }

/* Booking status badges keep their semantic colors */
.rb-status-pending,
.rb-status-confirmed,
.rb-status-completed,
.rb-status-cancelled { color: inherit; }

/* ── Special Event tab & form ────────────────────────────────
   The special event tab gets a gold accent and badge treatment
   to draw the eye and signal it's something different.
   ─────────────────────────────────────────────────────────── */

/* Special tab — warm gold border on active, pulse indicator */
.rb-tab-btn--special {
    position: relative;
}
.rb-tab-btn--special::before {
    content: '';
    position: absolute;
    top: 8px; right: 8px;
    width: 6px; height: 6px;
    border-radius: 50%;
    background: var(--champagne, #C9A96E);
    animation: rb-pulse 2s infinite;
}
.rb-tab-btn--special.active::before { display: none; }

@keyframes rb-pulse {
    0%, 100% { opacity: 1; transform: scale(1); }
    50%       { opacity: .5; transform: scale(1.4); }
}

/* Badge above tab label */
.rb-tab-badge {
    display: block;
    font-size: 9px;
    font-weight: 600;
    letter-spacing: .16em;
    text-transform: uppercase;
    color: var(--champagne, #C9A96E);
    margin-bottom: 2px;
    line-height: 1;
}

/* Special event form header */
.rb-special-header {
    padding: 28px 28px 20px;
    border-bottom: 1px solid var(--ivory-dark, #EDE8E0);
    text-align: center;
}
.rb-special-badge {
    display: inline-block;
    padding: 4px 12px;
    border-radius: 20px;
    border: 1px solid var(--champagne-light, #E8D5B0);
    background: var(--champagne-pale, #F5EDD9);
    color: var(--stone, #8A8078);
    font-size: 10px;
    font-weight: 600;
    letter-spacing: .16em;
    text-transform: uppercase;
    margin-bottom: 12px;
}
.rb-special-intro {
    font-size: 14px;
    font-weight: 300;
    color: inherit;
    opacity: .7;
    line-height: 1.65;
    margin-top: 10px;
    max-width: 460px;
    display: inline-block;
}
.rb-special-dates {
    display: inline-block;
    margin-top: 8px;
    font-size: 12px;
    font-weight: 600;
    letter-spacing: .12em;
    text-transform: uppercase;
    color: var(--champagne, #C9A96E);
    opacity: .85;
}

/* Special event submit button — gold fill */
.rb-btn--special {
    background: var(--champagne, #C9A96E);
    border-color: var(--champagne, #C9A96E);
    color: var(--obsidian, #0D0D0D);
}
.rb-btn--special::before { background: var(--obsidian, #0D0D0D); }
.rb-btn--special:hover    { color: var(--ivory, #F7F3EE); }

/* ── Inline non-member registration form ────────────────────── */
.rb-nm-form-wrap {
    padding: 24px 28px 28px;
}
.rb-nm-form-header {
    margin-bottom: 20px;
    padding-bottom: 16px;
    border-bottom: 1px solid var(--ivory-dark, #EDE8E0);
}
.rb-nm-back {
    background: none;
    border: none;
    padding: 0 0 10px;
    font-size: 12px;
    font-weight: 500;
    letter-spacing: .1em;
    text-transform: uppercase;
    color: var(--stone, #8A8078);
    cursor: pointer;
    display: flex;
    align-items: center;
    gap: 6px;
    transition: color .15s;
    font-family: inherit;
}
.rb-nm-back:hover { color: var(--obsidian, #0D0D0D); }

.rb-nm-form-title {
    font-family: var(--theme-font-heading, var(--rb-font-display));
    font-size: 22px;
    font-style: italic;
    font-weight: 300;
    color: inherit;
    margin: 0 0 6px;
    line-height: 1.2;
}
.rb-nm-form-sub {
    font-size: 13px;
    color: inherit;
    opacity: .6;
    margin: 0;
    line-height: 1.5;
}
.rb-nm-success {
    background: #EAF4EF;
    color: var(--success, #3A6E5A);
    border-radius: 8px;
    padding: 14px 16px;
    font-size: 14px;
    line-height: 1.5;
    margin-bottom: 16px;
}
.rb-nm-success p { margin: 0; }
.rb-nm-error {
    background: #F9EDED;
    color: var(--error, #9B3A3A);
    border-radius: 8px;
    padding: 12px 14px;
    font-size: 13px;
    margin-bottom: 14px;
}

/* ── Reservation confirmation popup ─────────────────────────
   Shown after successful booking submission.
   Slides up from below with darkened backdrop.
   ─────────────────────────────────────────────────────────── */

#rb-confirm-overlay {
    display:          none;
    position:         fixed;
    inset:            0;
    z-index:          99999;
    background:       rgba(13,13,13,.7);
    align-items:      center;
    justify-content:  center;
    padding:          20px 16px;
    backdrop-filter:  blur(4px);
    -webkit-backdrop-filter: blur(4px);
    opacity:          0;
    transition:       opacity .3s ease;
}
#rb-confirm-overlay.rb-popup-visible {
    opacity: 1;
}
#rb-confirm-overlay.rb-popup-visible .rb-popup-card {
    transform: translateY(0);
    opacity:   1;
}

.rb-popup-card {
    background:    var(--cream, #FAFAF8);
    border-radius: var(--rb-radius-lg, 16px);
    padding:       40px 32px 36px;
    max-width:     400px;
    width:         100%;
    text-align:    center;
    transform:     translateY(32px);
    opacity:       0;
    transition:    transform .35s cubic-bezier(.2,.8,.3,1), opacity .3s ease;
    box-shadow:    0 24px 64px rgba(0,0,0,.22);
    position:      relative;
}

.rb-popup-icon {
    font-size:   16px;
    color:       var(--champagne, #C9A96E);
    margin-bottom: 16px;
    letter-spacing: .1em;
}
.rb-popup-title {
    font-family:   var(--theme-font-heading, var(--rb-font-display));
    font-size:     28px;
    font-style:    italic;
    font-weight:   300;
    color:         var(--obsidian, #0D0D0D);
    margin:        0 0 10px;
    line-height:   1.2;
}
.rb-popup-greeting {
    font-size:     14px;
    font-weight:   300;
    color:         var(--stone, #8A8078);
    margin:        0 0 20px;
    line-height:   1.5;
}
.rb-popup-details {
    background:    var(--white, #fff);
    border:        1px solid var(--ivory-dark, #EDE8E0);
    border-radius: var(--rb-radius, 10px);
    padding:       16px 20px;
    margin:        0 0 18px;
    text-align:    left;
}
.rb-popup-detail-row {
    font-size:       14px;
    font-weight:     400;
    color:           var(--obsidian, #0D0D0D);
    padding:         7px 0;
    border-bottom:   1px solid var(--ivory-dark, #EDE8E0);
    line-height:     1.4;
}
.rb-popup-detail-row:last-child {
    border-bottom: none;
    padding-bottom: 0;
}
.rb-popup-detail-row:first-child {
    padding-top: 0;
    font-weight: 500;
    font-size:   15px;
}
.rb-popup-email {
    font-size:   12px;
    color:       var(--stone, #8A8078);
    margin:      0 0 22px;
    line-height: 1.5;
}
.rb-popup-email strong {
    color: var(--obsidian, #0D0D0D);
    font-weight: 500;
}
.rb-popup-btn {
    width:           100%;
    padding:         14px 24px;
    font-size:       11px;
    letter-spacing:  .18em;
    text-transform:  uppercase;
    background:      var(--obsidian, #0D0D0D);
    color:           var(--white, #fff);
    border:          none;
    border-radius:   var(--rb-radius, 8px);
    cursor:          pointer;
    font-family:     inherit;
    font-weight:     500;
    transition:      opacity .15s, transform .1s;
}
.rb-popup-btn:hover  { opacity: .85; }
.rb-popup-btn:active { transform: scale(.98); }
.rb-popup-btn:focus  {
    outline:     2px solid var(--champagne, #C9A96E);
    outline-offset: 3px;
}

@media (max-width: 400px) {
    .rb-popup-card  { padding: 32px 20px 28px; }
    .rb-popup-title { font-size: 24px; }
}
