:root{--navy:#0a2647;--teal:#008a83;--orange:#f06a2f;--ink:#132238;--muted:#6b788c;--line:#dfe7ee;--mint:#edf9f6;--bg:#f8fbfc}*{box-sizing:border-box}body{margin:0;font:16px/1.45 system-ui,-apple-system,Segoe UI,Roboto,Arial;color:var(--ink);background:#fff}a{color:var(--navy);text-decoration:none}.site-header{height:72px;display:flex;align-items:center;justify-content:space-between;padding:0 max(20px,calc((100vw - 1180px)/2));border-bottom:1px solid var(--line);background:#fff;position:sticky;top:0;z-index:5}.brand{font-size:18px;font-weight:800;letter-spacing:-.5px}.brand span{color:var(--navy)}.brand strong{color:var(--teal)}.brand b{color:var(--orange)}.brand em{font-style:normal;color:#555}.site-header nav{display:flex;gap:20px;font-size:14px}main{max-width:1180px;margin:auto;padding:30px 20px 70px}.hero{display:grid;grid-template-columns:1.3fr .7fr;gap:40px;align-items:center;min-height:480px}.hero h1{font-size:56px;line-height:1.02;margin:0 0 18px;color:var(--navy);max-width:780px}.hero p{font-size:20px;color:var(--muted);max-width:650px}.hero-card,.panel,.search-card,.booking-card,.auth{background:#fff;border:1px solid var(--line);border-radius:18px;padding:26px;box-shadow:0 10px 30px #06223b0c}.country-grid{display:grid;gap:10px}.country-grid a{padding:12px 14px;border-radius:12px;background:var(--mint);font-weight:700}.actions{display:flex;gap:12px;flex-wrap:wrap}.btn,button{display:inline-flex;align-items:center;justify-content:center;border:0;border-radius:10px;padding:12px 18px;font-weight:750;cursor:pointer}.primary{background:var(--teal);color:#fff}.secondary{background:#fff;color:var(--navy);border:1px solid var(--line)}.search-card{margin:5px 0 35px}.search-card form,.search-form{display:flex;gap:10px}.search-card input,.search-form input{flex:1}.features{display:grid;grid-template-columns:repeat(3,1fr);gap:20px}.features>div{padding:24px;background:var(--mint);border-radius:16px}.features b{color:var(--navy)}input,select,textarea{width:100%;border:1px solid #cfd9e1;border-radius:10px;padding:12px;font:inherit;background:#fff}label{display:grid;gap:6px;margin:0 0 15px;font-weight:650}.auth{max-width:520px;margin:50px auto}.auth.wide{max-width:650px}.error{background:#fff0ef;color:#9a281e;border:1px solid #fac5c0;padding:10px 12px;border-radius:10px}.success{background:#ecfaf4;color:#0d6845;padding:10px 12px;border-radius:10px}.hidden{display:none!important}.results article{display:flex;justify-content:space-between;gap:20px;padding:18px 0;border-bottom:1px solid var(--line)}.dashboard-head{display:flex;justify-content:space-between;gap:20px;align-items:center}.dashboard-head h1{margin-bottom:0}.stats{display:grid;grid-template-columns:repeat(3,1fr);gap:16px;margin:24px 0}.stats div{padding:22px;border-radius:14px;background:var(--mint)}.stats b{display:block;font-size:32px;color:var(--navy)}.stats span{color:var(--muted)}.booking-list article{display:grid;grid-template-columns:1fr 1.5fr .8fr;gap:15px;padding:15px 0;border-bottom:1px solid var(--line)}.link-btn{background:none;color:var(--navy);padding:10px}.settings-form{max-width:600px}.muted{color:var(--muted)}.booking-shell{max-width:680px;margin:10px auto}.restaurant-banner{margin-bottom:18px}.banner-placeholder{height:130px;border-radius:18px;background:linear-gradient(135deg,var(--navy),var(--teal))}.restaurant-title{padding:14px 4px}.restaurant-title h1{margin:0}.restaurant-title p{margin:4px 0;color:var(--muted)}.booking-card{margin-bottom:16px}.grid2{display:grid;grid-template-columns:1fr 1.5fr;gap:12px}.slots{display:grid;grid-template-columns:repeat(3,1fr);gap:10px}.slot{padding:15px 8px;border-radius:12px;border:1px solid #a9d7d2;background:#fff;color:var(--teal);font-weight:800}.slot:hover,.slot.selected{background:var(--teal);color:#fff}.slot.unavailable{background:#f0f2f4;color:#9ba5af;border-color:#e5e9ed;cursor:not-allowed}.summary{padding:12px;border-radius:12px;background:var(--mint);margin-bottom:18px;font-weight:700}.full{width:100%}.back{background:none;color:var(--navy);padding:0 0 10px}.notice{text-align:center;padding:40px 20px;background:var(--mint);border-radius:18px}.booking-pass{max-width:520px;margin:30px auto;text-align:center;border:1px solid var(--line);border-radius:22px;padding:28px;box-shadow:0 14px 35px #06223b0d}.check{width:52px;height:52px;display:grid;place-items:center;margin:auto;background:var(--teal);color:#fff;border-radius:50%;font-size:30px}.booking-pass h1{color:var(--navy)}.reference{display:flex;align-items:center;justify-content:center;gap:12px;margin:22px 0}.reference span{color:var(--muted)}.reference b{font-size:36px;letter-spacing:5px;color:var(--navy)}.reference button{background:var(--mint);color:var(--teal)}.qr-placeholder{width:180px;height:180px;margin:20px auto;display:grid;place-items:center;border:10px solid #111;background:repeating-linear-gradient(45deg,#111 0 6px,#fff 6px 12px);color:#fff;font-weight:900}footer{text-align:center;padding:28px;color:var(--muted);border-top:1px solid var(--line)}
@media(max-width:760px){.site-header{height:62px;padding:0 14px}.site-header nav a:first-child{display:none}.brand{font-size:15px}.hero{grid-template-columns:1fr;min-height:auto}.hero h1{font-size:40px}.hero-card{display:none}.features{grid-template-columns:1fr}.results article,.dashboard-head{display:block}.results .actions,.dashboard-head .actions{margin-top:12px}.stats{grid-template-columns:1fr 1fr}.booking-list article{grid-template-columns:1fr}.grid2{grid-template-columns:1fr 1fr}.slots{grid-template-columns:repeat(3,1fr)}main{padding:20px 14px 60px}}

.booking-qr{width:min(280px,72vw);height:auto;display:block;margin:18px auto;background:#fff;padding:10px;border-radius:18px}
.btn.danger,.danger{background:#b42318;color:#fff;border-color:#b42318}
.check.cancelled{background:#fee4e2;color:#b42318}
.booking-pass form{display:inline-block;margin:0}
.subnav{display:flex;gap:10px;flex-wrap:wrap;margin:18px 0}.subnav a{padding:8px 11px;border:1px solid var(--line);border-radius:10px;background:#fff}.booking-list article>div{display:grid;gap:3px}.booking-list article form{display:flex;gap:8px;align-items:center}.booking-list article select{min-width:110px}.hours-row{display:grid;grid-template-columns:130px 95px 1fr 1fr 95px 1fr 1fr;gap:8px;align-items:center;padding:10px 0;border-bottom:1px solid var(--line)}.hours-row label{margin:0;display:flex;gap:5px;align-items:center;font-size:13px}.hours-row label input{width:auto}.block-row{display:flex;justify-content:space-between;gap:15px;padding:12px 0;border-bottom:1px solid var(--line)}.banner-image{width:100%;height:180px;object-fit:cover;border-radius:18px}.restaurant-title{display:flex;gap:12px;align-items:center}.restaurant-logo{width:58px;height:58px;object-fit:cover;border-radius:14px;border:1px solid var(--line);background:#fff}.restaurant-grid{display:grid;gap:10px;margin:15px 0}.restaurant-choice{display:flex;gap:12px;align-items:center;border:1px solid var(--line);padding:14px;border-radius:12px}.restaurant-choice input{width:auto}.share-url{word-break:break-all;background:var(--mint);padding:12px;border-radius:10px}.admin-table{width:100%;border-collapse:collapse;margin:15px 0 30px}.admin-table th,.admin-table td{border-bottom:1px solid var(--line);padding:10px;text-align:left}.change-booking{margin:18px 0}.change-booking summary{list-style:none}.change-booking form{display:grid;text-align:left;margin-top:15px}.notice{padding:16px;background:var(--mint);border-radius:12px}.site-header nav{align-items:center}
@media(max-width:760px){.site-header nav a:nth-child(1),.site-header nav a:nth-child(2){display:none}.hours-row{grid-template-columns:1fr 1fr 1fr}.hours-row strong{grid-column:1/-1}.block-row{display:block}.block-row form{margin-top:8px}.dashboard-head .actions{display:grid;grid-template-columns:1fr 1fr}.subnav{overflow-x:auto;flex-wrap:nowrap}.banner-image{height:125px}}


/* RBL dashboard service list — one booking per row */
.dashboard-bookings{padding:20px 24px}
.booking-section-title{display:flex;align-items:center;justify-content:space-between;gap:16px;margin-bottom:10px}
.booking-section-title h2{margin:0}
.booking-section-title>span{font-size:13px;color:var(--muted)}
.service-list{width:100%;overflow-x:auto}
.service-row{display:grid;grid-template-columns:72px minmax(150px,1.05fr) minmax(230px,1.5fr) minmax(120px,.9fr) 110px minmax(220px,auto);gap:14px;align-items:center;min-width:980px;min-height:50px;padding:7px 4px;border-bottom:1px solid var(--line)}
.service-head{min-height:34px;padding-top:0;font-size:12px;font-weight:750;color:var(--muted)}
.service-row:not(.service-head):hover{background:var(--bg)}
.service-time{font-size:17px;font-weight:850;color:var(--navy);font-variant-numeric:tabular-nums}
.service-guest,.service-contact,.service-status,.service-actions{display:flex;align-items:center;gap:6px;min-width:0}
.service-guest strong,.service-contact span,.service-request{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}
.service-guest>span,.contact-sep{color:var(--muted)}
.service-request{min-width:0}
.status-chip,.override-chip,.visit-chip{display:inline-flex;align-items:center;border-radius:999px;padding:5px 8px;font-size:12px;font-weight:750;white-space:nowrap}
.status-chip{background:var(--mint);color:var(--teal);text-transform:capitalize}
.override-chip{background:#fff4e8;color:#9a4a16}
.service-actions{justify-content:flex-end}
.service-actions form{margin:0}
.visit-btn{padding:7px 10px;border-radius:8px;background:var(--teal);color:#fff;font-size:12px}
.visit-btn.muted-action{background:#fff;color:var(--navy);border:1px solid var(--line)}
.visit-chip.arrived{background:var(--mint);color:var(--teal)}
.visit-chip.no-show{background:#fff0ef;color:#9a281e}
.service-ref{margin-left:2px;color:var(--muted);font-size:12px;white-space:nowrap}
@media(max-width:760px){.dashboard-bookings{padding:16px}.service-list{margin:0 -2px}.service-row{min-width:900px}.service-head{display:grid}}

/* RBL_FEEDBACK_V1_2_CSS */
.rbl-feedback-fab{
  position:fixed;right:18px;bottom:18px;z-index:200;
  background:#0b766e;color:#fff;padding:10px 14px;border-radius:999px;
  font-size:13px;font-weight:750;text-decoration:none;
  box-shadow:0 8px 24px rgba(0,0,0,.18)
}
.feedback-admin-head,.feedback-item-top,.feedback-meta,.feedback-status-form{
  display:flex;gap:12px;align-items:center;flex-wrap:wrap
}
.feedback-admin-head{justify-content:space-between;margin-bottom:18px}
.feedback-item{padding:16px 0;border-bottom:1px solid var(--line,#e5e7eb)}
.feedback-item-top{justify-content:space-between}
.feedback-meta{font-size:13px;color:var(--muted,#667085)}
.feedback-error{
  white-space:pre-wrap;word-break:break-word;background:#f7f7f8;
  border-radius:8px;padding:10px
}
.feedback-status-form{margin-top:10px}
.feedback-status-form select,.feedback-status-form button{width:auto;margin:0}
@media(max-width:760px){.rbl-feedback-fab{right:12px;bottom:76px}}

/* RBL_RESTAURANT_APPROVAL_UI_V1_1_5_CSS */
.approval-head,.approval-title,.approval-actions{display:flex;gap:12px;align-items:center;justify-content:space-between;flex-wrap:wrap}
.approval-list{display:grid;gap:16px}
.approval-card{border:1px solid var(--line,#e5e7eb);border-radius:12px;padding:18px;background:#fff}
.approval-title h2{margin:0 0 4px}
.approval-title p{margin:0;color:var(--muted,#667085)}
.approval-badge{padding:5px 10px;border-radius:999px;font-size:12px;font-weight:800;text-transform:uppercase}
.approval-pending{background:#fff3cd}.approval-approved{background:#d1e7dd}.approval-rejected{background:#f8d7da}
.approval-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin:16px 0}
.approval-grid div{padding:10px;background:#f7f7f8;border-radius:8px}
.approval-grid span{display:block;font-size:12px;color:var(--muted,#667085);margin-bottom:3px}
.approval-actions{justify-content:flex-start}
.approval-actions form,.approval-reject{margin:0}
.approval-reject{display:flex;gap:8px;margin-top:12px}
.approval-reject input{flex:1;margin:0}
.approval-reason{margin-top:12px}
@media(max-width:760px){.approval-grid{grid-template-columns:1fr}.approval-reject{flex-direction:column}}

/* RBL Trial signup form */
.trial-signup-form{
  display:grid;
  grid-template-columns:1fr;
  gap:0;
  max-width:620px;
  margin-top:24px;
}

.trial-signup-form label{
  display:block;
  margin:0 0 16px;
}

.trial-signup-form input,
.trial-signup-form select{
  display:block;
  width:100%;
  box-sizing:border-box;
  margin-top:7px;
}

.trial-signup-form .btn{
  width:auto;
  justify-self:start;
  margin-top:4px;
}

@media(max-width:760px){
  .trial-signup-form{
    max-width:none;
  }

  .trial-signup-form .btn{
    width:100%;
  }
}


/* Trial signup — force vertical form layout */
.search-card .trial-signup-form{
  display:block !important;
  width:100% !important;
  max-width:620px !important;
  margin:24px 0 0 !important;
}

.search-card .trial-signup-form label{
  display:block !important;
  width:100% !important;
  margin:0 0 18px !important;
}

.search-card .trial-signup-form input,
.search-card .trial-signup-form select{
  display:block !important;
  width:100% !important;
  max-width:100% !important;
  min-width:0 !important;
  box-sizing:border-box !important;
  margin:7px 0 0 !important;
}

.search-card .trial-signup-form .btn{
  display:inline-block !important;
  width:auto !important;
  min-width:160px !important;
  margin-top:4px !important;
}

@media(max-width:760px){
  .search-card .trial-signup-form{
    max-width:none !important;
  }

  .search-card .trial-signup-form .btn{
    width:100% !important;
  }
}


/* Trial country selector — match input height */
.search-card .trial-signup-form select{
  height:96px !important;
  min-height:96px !important;
}


/* Trial signup — reduce vertical whitespace */
.search-card:has(.trial-signup-form){
  padding-top:32px !important;
  padding-bottom:32px !important;
}

.search-card:has(.trial-signup-form) h1{
  margin-top:0 !important;
  margin-bottom:16px !important;
}

.search-card:has(.trial-signup-form) p{
  margin-top:0 !important;
  margin-bottom:18px !important;
}


/* Trial signup — tighter vertical spacing */
.search-card:has(.trial-signup-form){
  padding-top:16px !important;
  padding-bottom:20px !important;
}

.search-card:has(.trial-signup-form) h1{
  margin-bottom:10px !important;
}

.search-card:has(.trial-signup-form) p{
  margin-bottom:12px !important;
}

.search-card:has(.trial-signup-form) .trial-signup-form{
  margin-top:12px !important;
}


/* =========================================================
   RBL RESTAURANT ADMIN SIDEBAR
   ========================================================= */

.rbl-admin-shell{
  display:flex;
  min-height:calc(100vh - 82px);
  width:100%;
}

.rbl-admin-sidebar{
  width:250px;
  min-width:250px;
  background:#ffffff;
  border-right:1px solid #e5e7eb;
  padding:22px 14px;
  box-sizing:border-box;
}

.rbl-admin-sidebar-inner{
  position:sticky;
  top:18px;
}

.rbl-admin-restaurant{
  padding:4px 12px 18px;
  margin-bottom:12px;
  border-bottom:1px solid #e5e7eb;
}

.rbl-admin-restaurant-name{
  font-size:17px;
  line-height:1.35;
  font-weight:750;
  color:#172b4d;
  word-break:break-word;
}

.rbl-admin-restaurant-country{
  margin-top:4px;
  font-size:13px;
  color:#667085;
}

.rbl-admin-nav{
  display:flex;
  flex-direction:column;
  gap:3px;
}

.rbl-admin-nav a{
  display:flex;
  align-items:center;
  gap:10px;
  min-height:44px;
  padding:0 12px;
  border-radius:8px;
  box-sizing:border-box;
  color:#344054;
  text-decoration:none;
  font-size:14px;
  font-weight:600;
  transition:background .15s ease,color .15s ease;
}

.rbl-admin-nav a:hover{
  background:#f2f6fa;
  color:#0b766e;
}

.rbl-admin-nav a.active{
  background:#e8f4f2;
  color:#0b766e;
  font-weight:750;
}

.rbl-admin-nav .rbl-admin-icon{
  width:22px;
  min-width:22px;
  text-align:center;
  font-size:17px;
  line-height:1;
}

.rbl-admin-nav-divider{
  height:1px;
  background:#e5e7eb;
  margin:12px 8px;
}

.rbl-admin-content{
  flex:1;
  min-width:0;
  box-sizing:border-box;
  padding:28px 32px 40px;
}

.rbl-admin-back{
  display:inline-flex;
  align-items:center;
  gap:7px;
  margin-bottom:18px;
  padding:8px 12px;
  border:1px solid #d0d5dd;
  border-radius:7px;
  background:#fff;
  color:#344054;
  text-decoration:none;
  font-size:14px;
  font-weight:650;
}

.rbl-admin-back:hover{
  background:#f8fafc;
  color:#0b766e;
}

/* Mobile */
@media(max-width:760px){

  .rbl-admin-shell{
    display:block;
  }

  .rbl-admin-sidebar{
    width:100%;
    min-width:0;
    border-right:0;
    border-bottom:1px solid #e5e7eb;
    padding:10px;
  }

  .rbl-admin-sidebar-inner{
    position:static;
  }

  .rbl-admin-restaurant{
    padding:5px 8px 10px;
    margin-bottom:8px;
  }

  .rbl-admin-nav{
    display:grid;
    grid-template-columns:repeat(2,minmax(0,1fr));
    gap:4px;
  }

  .rbl-admin-nav a{
    min-height:42px;
    font-size:13px;
  }

  .rbl-admin-nav-divider{
    display:none;
  }

  .rbl-admin-content{
    padding:20px 14px 30px;
  }
}

/* Small phones */
@media(max-width:420px){

  .rbl-admin-nav{
    grid-template-columns:1fr;
  }

}


/* =========================================================
   RBL RESTAURANT ADMIN MENU
   Moved from views/partials/header.ejs inline <style>.
   Reason: Helmet CSP sets styleSrc:['self'] with no
   'unsafe-inline'/nonce/hash, so the browser refuses to apply
   ANY inline <style> tag. app.css is loaded via
   <link rel="stylesheet" href="/app.css"> (same-origin), which
   IS allowed by styleSrc:'self', so this CSS must live here.

   .rbl-admin-shell and .rbl-admin-content below intentionally
   redeclare `display` / `flex` even though the "new" design
   never needed them (a <div> is display:block by default).
   That's because app.css already has OLDER rules for these same
   two selectors (the retired sidebar layout, left in place further
   up in this file: .rbl-admin-shell{display:flex...},
   .rbl-admin-content{flex:1...}). CSS cascades per property, not
   per rule, so without an explicit override here those two old
   properties would keep applying and force the menu bar and the
   page content back into a horizontal flex row on desktop widths.
   .rbl-admin-back is not repeated here — the existing app.css copy
   is byte-identical, so there is nothing to override.
   ========================================================= */

.rbl-admin-shell{
  display:block;
  width:100%;
  min-height:calc(100vh - 82px);
  box-sizing:border-box;
}

.rbl-top-menu-bar{
  width:100%;
  min-height:72px;
  box-sizing:border-box;
  display:flex;
  align-items:center;
  justify-content:flex-start;
  gap:20px;
  padding:14px 24px;
  background:#fff;
  border-bottom:1px solid #e5e7eb;
}

.rbl-top-menu{
  position:relative;
  flex:0 0 auto;
}

.rbl-top-menu summary{
  list-style:none;
  cursor:pointer;
  user-select:none;
  display:flex;
  align-items:center;
  justify-content:center;
  gap:8px;
  width:110px;
  height:40px;
  padding:0 14px;
  box-sizing:border-box;
  border:1px solid #d0d5dd;
  border-radius:8px;
  background:#fff;
  color:#344054;
  font-size:14px;
  font-weight:700;
}

.rbl-top-menu summary::-webkit-details-marker{
  display:none;
}

.rbl-top-menu summary::after{
  content:"▾";
  font-size:12px;
}

.rbl-top-menu[open] summary{
  background:#f2f6fa;
  color:#0b766e;
}

.rbl-top-menu[open] summary::after{
  content:"▴";
}

.rbl-top-menu-list{
  position:absolute;
  top:48px;
  left:0;
  right:auto;
  z-index:10000;

  width:230px;
  max-width:calc(100vw - 28px);

  padding:8px;
  margin:0;

  display:block;

  box-sizing:border-box;

  background:#fff;
  border:1px solid #d0d5dd;
  border-radius:10px;
  box-shadow:0 10px 30px rgba(0,0,0,.12);
}

.rbl-logout-form{
  margin:0;
}

.rbl-top-menu-button{
  border:0;
  background:transparent;
  text-align:left;
  font:inherit;
  cursor:pointer;
}

.rbl-top-menu-item{
  display:flex;
  align-items:center;
  width:100%;
  min-height:42px;
  box-sizing:border-box;
  padding:0 11px;
  margin:0;
  border-radius:7px;
  color:#344054;
  text-decoration:none;
  font-size:14px;
  font-weight:600;
  white-space:nowrap;
}

.rbl-top-menu-item:hover{
  background:#f2f6fa;
  color:#0b766e;
}

.rbl-top-menu-item.active{
  background:#e8f4f2;
  color:#0b766e;
  font-weight:750;
}

.rbl-top-menu-icon{
  display:inline-block;
  width:22px;
  min-width:22px;
  margin-right:8px;
  text-align:center;
  font-size:16px;
  line-height:1;
}

.rbl-top-menu-divider{
  display:block;
  width:auto;
  height:1px;
  background:#e5e7eb;
  margin:7px 4px;
}

.rbl-top-restaurant{
  min-width:0;
  margin-left:auto;
}

.rbl-top-restaurant-name{
  font-size:17px;
  line-height:1.35;
  font-weight:750;
  color:#172b4d;
  word-break:break-word;
}

.rbl-top-restaurant-country{
  margin-top:2px;
  font-size:12px;
  color:#667085;
}

.rbl-admin-content{
  flex:none;
  width:100%;
  min-width:0;
  box-sizing:border-box;
  padding:28px 32px 40px;
}

@media(max-width:760px){
  .rbl-top-menu-bar{
    padding:12px 14px;
    gap:12px;
  }

  .rbl-top-menu-list{
    left:0;
    right:auto;
    width:220px;
    max-width:calc(100vw - 28px);
  }

  .rbl-top-restaurant-name{
    font-size:15px;
  }
}

/* ===== Patch A — Dashboard booking responsive (2026-08-29) ===== */

/* Desktop (>1024px)：解除 980px 强制宽度，改用弹性轨道 */
.dashboard-bookings .service-row{
  min-width: 0;
  grid-template-columns:
    minmax(120px, 135px)
    minmax(150px, 1fr)
    minmax(190px, 1.4fr)
    minmax(90px,  .7fr)
    minmax(110px, 120px)
    minmax(120px, 150px);
}
.dashboard-bookings .service-row > *{ min-width: 0; }
.dashboard-bookings .service-time{ white-space: nowrap; }
.dashboard-bookings .service-contact,
.dashboard-bookings .service-contact > *{
  overflow: hidden;
  text-overflow: ellipsis;
  white-space: nowrap;
}

/* Card mode (<=1024px) */
@media (max-width: 1024px){
  .dashboard-bookings .service-head{ display: none; }

  .dashboard-bookings .service-row{
    min-width: 0;
    width: 100%;
    display: grid;
    grid-template-columns: 1fr auto;
    grid-template-areas:
      "time    status"
      "guest   guest"
      "contact contact"
      "request request"
      "action  action";
    gap: 6px 10px;
    align-items: start;
  }

  .dashboard-bookings .service-row > .service-time   { grid-area: time; }
  .dashboard-bookings .service-row > .service-status { grid-area: status; justify-self: end; }
  .dashboard-bookings .service-row > .service-guest  { grid-area: guest; }
  .dashboard-bookings .service-row > .service-contact{ grid-area: contact; }
  .dashboard-bookings .service-row > .service-request{ grid-area: request; }
  .dashboard-bookings .service-row > .service-actions{ grid-area: action; }

  .dashboard-bookings .service-contact,
  .dashboard-bookings .service-contact > *{
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    overflow-wrap: anywhere;
  }

  .dashboard-bookings .service-row:not(.service-head) .service-request::before{
    content: "Request: ";
  }

  .dashboard-bookings .service-actions{
    display: flex;
    flex-wrap: wrap;
    align-items: center;
    gap: 8px;
  }
  .dashboard-bookings .service-actions .service-ref{
    margin-left: auto;
  }
  .dashboard-bookings .service-actions button,
  .dashboard-bookings .service-actions .btn,
  .dashboard-bookings .service-actions a{
    min-height: 44px;
    display: inline-flex;
    align-items: center;
  }
}
/* ===== end Patch A ===== */


/* RBL multilingual marketing language selector */
.rbl-language-picker{
  display:inline-flex;
  align-items:center;
  gap:4px;
  margin:0 4px;
}
.rbl-language-picker select{
  font:inherit;
  color:inherit;
  background:transparent;
  border:1px solid rgba(0,0,0,.18);
  border-radius:8px;
  padding:6px 8px;
  cursor:pointer;
}

/* =========================================================
   RBL MOBILE UI v1
   ========================================================= */

.rbl-mobile-bar,
.rbl-mobile-panel,
.rbl-mobile-backdrop {
  display: none;
}

@media (max-width: 760px) {

  html,
  body {
    max-width: 100%;
    overflow-x: hidden;
  }

  body {
    padding-top: 64px;
  }

  body.rbl-mobile-panel-open {
    overflow: hidden;
  }

  .rbl-desktop-header {
    display: none !important;
  }

  .rbl-mobile-bar {
    position: fixed;
    top: 0;
    left: 0;
    right: 0;
    z-index: 1000;

    height: 64px;

    display: flex;
    align-items: center;
    justify-content: space-between;

    padding: 0 16px;

    background: rgba(255,255,255,.97);
    border-bottom: 1px solid #e5e7eb;
    backdrop-filter: blur(10px);
    -webkit-backdrop-filter: blur(10px);
  }

  .rbl-mobile-brand {
    display: inline-flex;
    align-items: center;

    color: #163a63;
    font-size: 23px;
    font-weight: 800;
    letter-spacing: -0.04em;

    text-decoration: none;
  }

  .rbl-mobile-actions {
    display: flex;
    align-items: center;
    gap: 6px;
  }

  .rbl-mobile-language-button,
  .rbl-mobile-menu-button {
    border: 0;
    background: transparent;
    color: #111827;

    min-height: 44px;
    border-radius: 10px;

    cursor: pointer;
  }

  .rbl-mobile-language-button {
    display: flex;
    align-items: center;
    gap: 5px;

    padding: 0 8px;

    font-size: 14px;
    font-weight: 600;
  }

  .rbl-globe {
    font-size: 17px;
    line-height: 1;
  }

  .rbl-mobile-menu-button {
    width: 44px;
    padding: 11px;
  }

  .rbl-mobile-menu-button span {
    display: block;
    width: 21px;
    height: 2px;

    margin: 4px auto;

    background: #163a63;
    border-radius: 999px;
  }

  .rbl-mobile-backdrop {
    position: fixed;
    inset: 0;

    z-index: 1090;

    background: rgba(15,23,42,.36);

    opacity: 0;
    pointer-events: none;

    transition: opacity .2s ease;
  }

  .rbl-mobile-backdrop.open {
    display: block;
    opacity: 1;
    pointer-events: auto;
  }

  .rbl-mobile-panel {
    position: fixed;

    top: 0;
    right: 0;
    bottom: 0;

    z-index: 1100;

    display: block;

    width: min(88vw, 370px);

    padding: 20px;

    background: #ffffff;

    box-shadow: -12px 0 40px rgba(15,23,42,.18);

    transform: translateX(105%);
    transition: transform .22s ease;

    overflow-y: auto;
  }

  .rbl-mobile-panel.open {
    transform: translateX(0);
  }

  .rbl-mobile-panel-header {
    display: flex;
    align-items: center;
    justify-content: space-between;

    min-height: 48px;

    margin-bottom: 18px;

    color: #111827;
    font-size: 20px;
  }

  .rbl-panel-close {
    width: 44px;
    height: 44px;

    border: 0;
    border-radius: 10px;

    background: #f3f4f6;
    color: #111827;

    font-size: 28px;
    line-height: 1;

    cursor: pointer;
  }

  .rbl-mobile-nav {
    display: flex;
    flex-direction: column;
    gap: 4px;
  }

  .rbl-mobile-nav a {
    display: flex;
    align-items: center;

    min-height: 52px;

    padding: 0 14px;

    border-radius: 10px;

    color: #111827;
    text-decoration: none;

    font-size: 16px;
    font-weight: 600;
  }

  .rbl-mobile-nav a:hover,
  .rbl-mobile-nav a:active {
    background: #f3f6f9;
  }

  .rbl-mobile-nav .rbl-mobile-primary {
    justify-content: center;

    margin-top: 12px;

    background: #163a63;
    color: #ffffff;
  }

  .rbl-language-grid {
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: 8px;
  }

  .rbl-mobile-language-option {
    min-height: 46px;

    padding: 8px 10px;

    border: 1px solid #e5e7eb;
    border-radius: 9px;

    background: #ffffff;
    color: #111827;

    text-align: left;

    font-size: 14px;
    font-weight: 500;

    cursor: pointer;
  }

  .rbl-mobile-language-option:active,
  .rbl-mobile-language-option:hover {
    background: #f3f6f9;
    border-color: #cbd5e1;
  }

  .rbl-mobile-language-option.rbl-language-active {
    background: #edf4fa;
    border-color: #163a63;
    color: #163a63;
    font-weight: 700;
  }

  /* General mobile marketing improvements */

  main,
  .container,
  .page-container,
  .content {
    max-width: 100%;
  }

  h1 {
    font-size: clamp(34px, 10vw, 46px);
    line-height: 1.06;
    letter-spacing: -0.035em;
  }

  h2 {
    font-size: clamp(27px, 7vw, 34px);
    line-height: 1.12;
  }

  p {
    line-height: 1.6;
  }

  button,
  .button,
  .btn,
  input[type="submit"],
  input[type="button"] {
    min-height: 44px;
  }

  img,
  video,
  iframe {
    max-width: 100%;
    height: auto;
  }
}

@media (max-width: 390px) {

  .rbl-mobile-bar {
    padding-left: 13px;
    padding-right: 8px;
  }

  .rbl-mobile-brand {
    font-size: 21px;
  }

  .rbl-mobile-language-button {
    font-size: 13px;
    padding-left: 5px;
    padding-right: 5px;
  }

  .rbl-language-grid {
    grid-template-columns: 1fr;
  }
}

/* RBL MOBILE UI v1.1 — logo + hamburger fix */

@media (max-width:760px) {

  .rbl-mobile-brand {
    display:flex;
    align-items:center;
    min-width:0;
    max-width:52%;
    overflow:hidden;
    text-decoration:none;
  }

  .rbl-mobile-brand img {
    display:block;
    width:auto;
    max-width:100%;
    max-height:38px;
    object-fit:contain;
  }

  .rbl-mobile-brand svg {
    display:block;
    width:auto;
    max-width:100%;
    max-height:38px;
  }

  .rbl-mobile-menu-button {
    display:flex !important;
    align-items:center;
    justify-content:center;
    width:44px;
    height:44px;
    padding:0 !important;
    color:#163a63;
  }

  .rbl-mobile-menu-button svg {
    display:block !important;
    width:24px !important;
    height:24px !important;
    max-width:none !important;
  }

  .rbl-mobile-menu-button svg path {
    stroke:#163a63;
  }

  /* Disable old span hamburger styling */
  .rbl-mobile-menu-button span {
    display:none !important;
  }
}

/* RBL MOBILE UI v1.2 — smaller full logo */
@media (max-width:760px) {
  .rbl-mobile-brand {
    max-width:60% !important;
    flex:0 1 60%;
    overflow:visible !important;
  }

  .rbl-mobile-brand img,
  .rbl-mobile-brand svg {
    max-width:100% !important;
    max-height:30px !important;
    width:auto !important;
    height:auto !important;
    object-fit:contain;
  }

  .rbl-mobile-actions {
    flex:0 0 auto;
    gap:2px;
  }

  .rbl-mobile-language-button {
    padding-left:4px;
    padding-right:4px;
  }
}

@media (max-width:390px) {
  .rbl-mobile-brand {
    max-width:56% !important;
    flex-basis:56%;
  }

  .rbl-mobile-brand img,
  .rbl-mobile-brand svg {
    max-height:27px !important;
  }
}

/* RBL MOBILE UI v1.3 — prevent header overlap */
@media (max-width:760px) {

  .rbl-mobile-bar {
    display:grid !important;
    grid-template-columns:minmax(0, 1fr) auto 44px;
    align-items:center;
    gap:4px;
    padding-left:12px;
    padding-right:8px;
  }

  .rbl-mobile-brand {
    min-width:0 !important;
    max-width:none !important;
    width:100% !important;
    overflow:hidden !important;
    flex:none !important;
  }

  .rbl-mobile-brand img,
  .rbl-mobile-brand svg {
    display:block;
    width:auto !important;
    height:auto !important;
    max-width:150px !important;
    max-height:28px !important;
    object-fit:contain;
  }

  .rbl-mobile-actions {
    display:contents !important;
  }

  .rbl-mobile-language-button {
    min-width:0;
    max-width:110px;
    padding:0 4px !important;
    white-space:nowrap;
    overflow:hidden;
    text-overflow:ellipsis;
    justify-self:end;
  }

  .rbl-current-language {
    overflow:hidden;
    text-overflow:ellipsis;
    white-space:nowrap;
  }

  .rbl-mobile-menu-button {
    width:44px !important;
    min-width:44px !important;
    height:44px !important;
    justify-self:end;
  }
}

@media (max-width:390px) {

  .rbl-mobile-brand img,
  .rbl-mobile-brand svg {
    max-width:125px !important;
    max-height:26px !important;
  }

  .rbl-mobile-language-button {
    max-width:90px;
    font-size:12px;
  }
}

/* RBL MOBILE UI v1.4 — keep original tri-colour logo, only scale it down */
@media (max-width:760px) {

  .rbl-mobile-brand {
    display:flex !important;
    align-items:center !important;
    min-width:0 !important;
    max-width:none !important;
    width:auto !important;
    overflow:visible !important;
  }

  .rbl-mobile-brand img {
    display:block !important;
    width:auto !important;
    height:24px !important;
    max-width:140px !important;
    max-height:24px !important;
    object-fit:contain !important;
    object-position:left center !important;
  }

  .rbl-mobile-brand svg {
    width:auto !important;
    height:24px !important;
    max-width:140px !important;
    max-height:24px !important;
  }
}

@media (max-width:390px) {
  .rbl-mobile-brand img,
  .rbl-mobile-brand svg {
    height:22px !important;
    max-height:22px !important;
    max-width:125px !important;
  }
}

/* RBL mobile booking request full-text fix */
@media (max-width: 1024px){
  .dashboard-bookings .service-row > .service-request{
    min-width: 0;
    width: 100%;
    white-space: normal;
    overflow: visible;
    text-overflow: clip;
    overflow-wrap: anywhere;
    word-break: break-word;
    line-height: 1.45;
    height: auto;
    max-height: none;
  }
}
