.reservation-selection{--rs-canvas:#faf7f2;--rs-paper:#fff;--rs-ink:#2b241f;--rs-muted:#6b5a4c;--rs-red:#b5353c;--rs-line:#e6d8c8;--rs-soft:#f5e8d8;box-sizing:border-box;max-width:1180px;margin:0 auto;padding:40px 32px calc(var(--reservation-selection-bottom-height, 84px) + 16px);color:var(--rs-ink);font-family:"PingFang TC","Noto Sans TC","Microsoft JhengHei",sans-serif;line-height:1.65;letter-spacing:.02em}
.reservation-selection *{box-sizing:border-box}.reservation-selection h1,.reservation-selection h2,.reservation-selection h3,.reservation-selection p{margin:0}.reservation-selection button,.reservation-selection input,.reservation-selection select{font:inherit}.reservation-selection button{cursor:pointer;min-height:48px;border:1px solid var(--rs-line);border-radius:12px;padding:10px 18px;background:var(--rs-paper);color:var(--rs-ink);font-weight:600;line-height:1.45}.reservation-selection button:disabled{cursor:default;opacity:.45}.reservation-selection :is(button,input,select,summary):focus-visible{outline:3px solid #be7c46;outline-offset:3px}.reservation-selection :is(input,select){min-height:48px;width:100%;padding:10px 12px;border:1px solid var(--rs-line);border-radius:10px;background:#fff;color:var(--rs-ink)}.reservation-selection input[type=radio],.reservation-selection input[type=checkbox]{width:20px;min-height:20px;height:20px;accent-color:var(--rs-red);flex-shrink:0}.reservation-selection fieldset{border:0;padding:0;margin:24px 0 0;min-width:0}.reservation-selection legend{font-weight:600;margin-bottom:12px}.reservation-selection-heading{margin-bottom:32px}.reservation-selection-heading>p{color:var(--rs-muted);font-size:14px;letter-spacing:.08em}.reservation-selection-heading h1{font-family:"Songti TC","Noto Serif TC",serif;font-size:clamp(28px,3.5vw,40px);font-weight:600;letter-spacing:.06em;margin:8px 0}.reservation-selection-heading>span{color:var(--rs-muted)}.reservation-selection-layout{display:grid;grid-template-columns:minmax(300px,.9fr) minmax(0,1.3fr);gap:24px;align-items:start}.reservation-selection-panel{background:var(--rs-paper);border:1px solid var(--rs-line);border-radius:18px;padding:28px}.reservation-selection-segment{display:flex;background:var(--rs-canvas);padding:5px;border:1px solid var(--rs-line);border-radius:14px;gap:5px}.reservation-selection-segment button{flex:1;border-color:transparent;background:transparent}.reservation-selection button[aria-pressed=true]{background:var(--rs-soft);border-color:#c79766;color:#6c321b}.reservation-selection-segment button[aria-pressed=true]{background:var(--rs-red);color:#fff;border-color:var(--rs-red)}.reservation-selection-field{display:flex;flex-direction:column;gap:8px;font-weight:600;margin-top:24px}.reservation-selection-field:first-child{margin-top:0}.reservation-selection-field input,.reservation-selection-field select{font-weight:400}.reservation-selection-person{display:flex;justify-content:space-between;align-items:center;gap:12px;padding:10px 0}.reservation-selection-stepper{display:flex;align-items:center;border:1px solid var(--rs-line);border-radius:12px;width:176px}.reservation-selection-stepper button{border:0;padding:8px;min-width:48px}.reservation-selection-stepper input{border:0;text-align:center;width:76px;padding:8px 0;appearance:textfield}.reservation-selection-stepper input::-webkit-inner-spin-button{appearance:none}.reservation-selection-timing label{display:inline-flex;gap:10px;align-items:center;min-height:48px;margin-right:24px}.reservation-selection-section-title{display:flex;align-items:center;justify-content:space-between;gap:12px}.reservation-selection-section-title h2{font-size:20px;font-weight:600}.reservation-selection-section-title>span{font-size:14px;color:var(--rs-muted)}.reservation-selection-slot-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:12px;margin-top:24px}.reservation-selection-slot-grid button{padding:16px 8px;min-height:64px;display:flex;flex-direction:column;justify-content:center;gap:4px}.reservation-selection-slot-grid small{font-size:12px;font-weight:400}.reservation-selection-policy{border-top:1px solid var(--rs-line);margin-top:24px;padding-top:20px;color:var(--rs-muted);font-size:14px}.reservation-selection-policy p+p{margin-top:8px}.reservation-selection-empty{color:var(--rs-muted);padding:40px 0;min-height:180px}.reservation-selection-error{padding:16px!important;background:#fff0ee;border:1px solid #edc2bf;border-radius:12px;margin:16px 0!important;color:#8d262d}.reservation-selection-notice{background:var(--rs-soft);border-radius:12px;padding:16px!important;margin:16px 0!important}.reservation-selection-primary{background:var(--rs-red)!important;border-color:var(--rs-red)!important;color:white!important;min-width:144px}.reservation-selection-primary:hover:not(:disabled){background:#9c2e34!important}.reservation-selection-secondary{background:#fff!important}.reservation-selection-bottom{position:fixed;bottom:0;left:0;right:0;z-index:20;display:flex;align-items:center;justify-content:space-between;gap:20px;max-width:1180px;margin:auto;padding:20px 32px calc(20px + env(safe-area-inset-bottom));border-top:1px solid var(--rs-line);background:rgba(250,247,242,.98)}.reservation-selection-bottom>div{display:flex;flex-direction:column}.reservation-selection-bottom span{font-size:14px;color:var(--rs-muted)}.reservation-selection-catalog-layout{grid-template-columns:minmax(0,1fr) 340px}.reservation-selection-catalog-tools{background:var(--rs-canvas);padding-bottom:20px}.reservation-selection-categories{display:flex;gap:8px;flex-wrap:wrap;margin-top:16px}.reservation-selection-categories button{padding:10px 16px}.reservation-selection-dishes{display:flex;flex-direction:column;gap:16px}.reservation-selection-dish{display:flex;overflow:hidden;background:var(--rs-paper);border:1px solid var(--rs-line);border-radius:16px}.reservation-selection-dish>img{width:128px;height:128px;object-fit:cover;margin:20px 0 20px 20px;border-radius:10px}.reservation-selection-dish-main{padding:22px;min-width:0;width:100%}.reservation-selection-dish-top{display:flex;justify-content:space-between;gap:16px}.reservation-selection-dish h3{font-size:18px}.reservation-selection-dish-top p{font-size:14px;color:var(--rs-muted);margin-top:4px}.reservation-selection-price{display:flex;flex-direction:column;white-space:nowrap;align-items:flex-end}.reservation-selection-price del,.reservation-selection-price small{font-size:12px;color:var(--rs-muted)}.reservation-selection-price strong{font-size:18px}.reservation-selection-description{margin:10px 0;font-size:14px;color:var(--rs-muted)}.reservation-selection-description summary{cursor:pointer;list-style:none}.reservation-selection-description p{margin-top:8px}.reservation-selection-muted{color:var(--rs-muted);font-size:14px}.reservation-selection-dish-actions{display:flex;gap:8px;justify-content:flex-end;margin-top:18px}.reservation-selection-options{border-top:1px solid var(--rs-line);margin-top:16px;padding-top:16px}.reservation-selection-modifier{display:flex;gap:10px;align-items:center;min-height:48px}.reservation-selection-cart{position:sticky;top:24px}.reservation-selection-cart-line{border-bottom:1px solid var(--rs-line);padding:18px 0;display:grid;grid-template-columns:1fr auto;gap:6px 12px}.reservation-selection-cart-line strong{font-size:15px;overflow-wrap:anywhere}.reservation-selection-cart-line>span{font-size:14px}.reservation-selection-cart-line small{grid-column:1/-1;color:var(--rs-muted)}.reservation-selection-line-stepper{display:flex;align-items:center;gap:12px;grid-column:1/-1;justify-content:flex-end;margin-top:4px}.reservation-selection-line-stepper button{width:48px;padding:8px}.reservation-selection-total{display:flex;justify-content:space-between;padding:20px 0;font-size:17px}.reservation-selection-cart>.reservation-selection-secondary{width:100%;margin-top:12px}.reservation-selection-preview{background:#faf7f2;margin:0}.reservation-selection-preview-nav{display:flex;gap:12px;align-items:center;padding:20px 32px;border-bottom:1px solid #e6d8c8;font-family:system-ui;background:#fff}.reservation-selection-preview-nav strong{margin-right:auto}.reservation-selection-preview-nav button{padding:8px 12px;min-height:48px;font:inherit;background:#fff;border:1px solid #e6d8c8;border-radius:10px}.reservation-selection-preview-output{max-width:1100px;margin:20px auto;padding:16px;white-space:pre-wrap;overflow-wrap:anywhere;font-family:system-ui;background:#f5e8d8}
@media(max-width:760px){.reservation-selection{padding:28px 18px calc(var(--reservation-selection-bottom-height, 84px) + 16px)}.reservation-selection-heading{margin-bottom:24px}.reservation-selection-layout,.reservation-selection-catalog-layout{grid-template-columns:minmax(0,1fr);gap:18px}.reservation-selection-panel{padding:22px}.reservation-selection-bottom{gap:12px;padding:14px 18px calc(14px + env(safe-area-inset-bottom))}.reservation-selection-bottom .reservation-selection-primary{min-width:112px;padding:12px}.reservation-selection-bottom .reservation-selection-secondary{padding:10px;font-size:14px}.reservation-selection-bottom strong{font-size:14px}.reservation-selection-bottom span{font-size:12px}.reservation-selection-cart{position:static}.reservation-selection-dish-main{padding:18px}.reservation-selection-dish>img{width:80px;height:80px;margin:18px 0 0 14px}.reservation-selection-dish-top{gap:10px}.reservation-selection-dish h3{font-size:17px}.reservation-selection-price strong{font-size:16px}.reservation-selection-preview-nav{padding:12px 18px;flex-wrap:wrap;gap:8px}.reservation-selection-preview-nav strong{width:100%}.reservation-selection-slot-grid{gap:10px}.reservation-selection-categories{flex-wrap:nowrap;overflow-x:auto;padding:3px 3px 8px}.reservation-selection-categories button{flex-shrink:0}}
@media(prefers-reduced-motion:no-preference){.reservation-selection button{transition:background-color .12s,border-color .12s}}
.reservation-selection-required{display:inline-block;margin-left:8px;padding:2px 7px;border-radius:6px;background:#f5e8d8;color:#783d22;font:500 12px/1.5 sans-serif;vertical-align:middle}

/* Original reservation assistance and published store content. */
.reservation-selection-extras { display: grid; gap: 16px; margin-top: 16px; }
.reservation-support-entry { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 16px; border: 1px solid var(--rs-line); border-radius: 12px; background: var(--rs-paper); }
.reservation-selection-shared-entry { display: inline-flex; justify-self: start; align-items: center; min-height: 48px; max-width: 100%; padding: 8px 4px; color: var(--rs-muted); text-decoration: none; font-weight: 500; }
.reservation-selection-shared-entry:hover { text-decoration: underline; }
.reservation-support-dialog.reservation-support-contact { width: min(840px, calc(100% - 32px)); }
.reservation-support-contact-layout { display: grid; grid-template-columns: minmax(0, 1fr) 216px; gap: 20px; align-items: start; }
.reservation-support-qr { margin: 12px 0 0; width: 216px; text-align: center; }
.reservation-support-qr svg { display: block; width: 216px; height: 216px; background: #fff; }
.reservation-support-qr figcaption { color: var(--rs-muted); font-size: 13px; margin-top: 8px; }
@media (max-width: 760px) {
  .reservation-support-contact-layout { grid-template-columns: minmax(0, 1fr); }
  .reservation-support-qr { display: none; }
  .reservation-support-dialog.reservation-support-contact { width: min(580px, calc(100% - 16px)); }
}
.reservation-store-content { border-bottom: 1px solid var(--rs-line); }
.reservation-store-content > summary { min-height: 52px; padding: 12px 4px; cursor: pointer; color: var(--rs-muted); font-weight: 600; }
.reservation-store-content-body { display: grid; gap: 20px; padding: 12px 16px 20px; background: var(--rs-paper); border: 1px solid var(--rs-line); border-radius: 16px; margin-bottom: 16px; }
.reservation-store-content-body h2 { font-size: 20px; }
.reservation-store-notice p { white-space: pre-wrap; overflow-wrap: anywhere; line-height: 2; }
.reservation-store-notice h3 { margin-bottom: 12px; font-size: 18px; }
.reservation-store-menu-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(min(100%, 220px), 1fr)); gap: 12px; }
.reservation-selection .reservation-store-menu-preview { position: relative; padding: 6px; border-radius: 16px; overflow: hidden; }
.reservation-store-menu-preview img { display: block; width: 100%; aspect-ratio: 3/4; object-fit: contain; background: #fff; }
.reservation-store-menu-preview > span:last-child { position: absolute; bottom: 12px; right: 12px; border-radius: 20px; padding: 6px 12px; background: #2f2925e0; color: #fff; font-size: 13px; }
.reservation-support-dialog { color: var(--rs-ink); background: var(--rs-canvas); border: 1px solid var(--rs-line); border-radius: 20px; padding: 20px; width: min(580px, calc(100% - 32px)); max-width: calc(100% - 32px); max-height: calc(100dvh - 32px); overflow-y: auto; overscroll-behavior: contain; }
.reservation-support-dialog::backdrop { background: #2b241f80; }
.reservation-support-dialog-heading { display: flex; flex-wrap: wrap; position: sticky; top: 0; z-index: 1; background: var(--rs-canvas); justify-content: space-between; align-items: center; gap: 12px; margin-bottom: 12px; }
.reservation-support-dialog-heading h2 { font-size: 22px; }
.reservation-support-dialog-heading button { flex-shrink: 0; min-width: 48px; padding: 10px; }
.reservation-support-message { margin: 12px 0; padding: 16px; border: 1px solid var(--rs-line); border-radius: 12px; background: var(--rs-paper); font: inherit; white-space: pre-wrap; overflow-wrap: anywhere; }
.reservation-support-message-field { display: block; font-weight: 600; }
.reservation-support-message-field textarea { display: block; min-height: 240px; font-weight: 400; }
.reservation-support-description { color: var(--rs-muted); font-size: 14px; margin-top: 12px !important; }
.reservation-support-actions { display: grid; gap: 10px; margin-top: 16px; }
.reservation-support-link { display: flex; align-items: center; justify-content: center; min-height: 48px; padding: 10px 14px; border: 1px solid var(--rs-line); border-radius: 12px; text-decoration: none; background: var(--rs-paper); color: var(--rs-ink); font-weight: 600; text-align: center; }
.reservation-selection :is(a,textarea,pre):focus-visible { outline: 3px solid #be7c46; outline-offset: 3px; }
.reservation-support-dialog textarea { width: 100%; padding: 12px; border: 1px solid var(--rs-line); border-radius: 10px; background: #fff; color: var(--rs-ink); font: inherit; resize: vertical; }
.reservation-support-dialog label small { text-align: right; color: var(--rs-muted); font-weight: 400; }
.reservation-support-status { color: #346248; margin-top: 12px !important; }
.reservation-support-gallery { width: min(1040px, calc(100% - 32px)); }
.reservation-store-menu-scroll { overflow-x: auto; }
.reservation-store-menu-pages { display: grid; gap: 20px; margin-inline: auto; }
.reservation-store-menu-zoom { display: flex; gap: 8px; flex-basis: 100%; padding-bottom: 8px; }
.reservation-selection .reservation-store-menu-zoom button { min-width: 48px; padding: 10px; }
.reservation-support-gallery .reservation-support-dialog-heading h2 { flex-basis: calc(100% - 60px); font-size: 18px; }
.reservation-store-menu-pages figure { margin: 0; }
.reservation-store-menu-pages img { display: block; width: 100%; height: auto; }
.reservation-store-menu-pages figcaption { margin-top: 8px; color: var(--rs-muted); font-size: 14px; }
.reservation-store-image-fallback { display: grid; min-height: 120px; place-content: center; color: var(--rs-muted); }
@media (max-width: 640px) {
  .reservation-support-dialog { width: calc(100% - 16px); max-width: calc(100% - 16px); max-height: calc(100dvh - 16px); padding: 16px; border-radius: 16px; }
  .reservation-support-dialog-heading h2 { font-size: 20px; }
  .reservation-support-message { padding: 12px; font-size: 14px; }
  .reservation-support-entry { padding: 10px 12px; }
  .reservation-store-content-body { padding: 12px; }
}

/* Customer flow polish: compact headings and lighter auxiliary controls.
   Preserve the original 48px targets, focus, state colors and flow behavior. */
.reservation-selection {
  max-width: 1104px;
  padding-top: 24px;
}
.reservation-selection-heading { margin-bottom: 20px; }
.reservation-selection-heading > p { font-size: 13px; line-height: 1.5; letter-spacing: .04em; }
.reservation-selection-heading h1 {
  font-size: clamp(26px, 2.5vw, 28px);
  line-height: 1.35;
  letter-spacing: .025em;
  margin: 4px 0 0;
}
.reservation-selection-preorder .reservation-selection-heading {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  align-items: center;
  gap: 4px 16px;
}
.reservation-selection-preorder .reservation-selection-heading > p { grid-column: 1 / -1; }
.reservation-selection-preorder .reservation-selection-heading h1 { margin: 0; }
.reservation-selection-preorder .reservation-selection-heading > span { font-size: 13px; line-height: 1.5; }
.reservation-selection-layout { gap: 20px; }
.reservation-selection-panel { padding: 24px; border-radius: 16px; }
.reservation-selection fieldset { margin-top: 18px; }
.reservation-selection legend { margin-bottom: 8px; }
.reservation-selection-field { margin-top: 18px; }
.reservation-selection-person { padding-block: 6px; }
.reservation-selection-slot-grid { margin-top: 18px; }
.reservation-selection-slot-grid button[aria-pressed=true] {
  background: var(--rs-red);
  border-color: var(--rs-red);
  color: #fff;
}
.reservation-selection-policy { margin-top: 18px; padding-top: 16px; }
.reservation-selection-empty { padding-block: 24px; min-height: 120px; }
.reservation-selection-catalog-tools { padding-bottom: 12px; }
.reservation-selection-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip-path: inset(50%);
  white-space: nowrap;
  border: 0;
}
.reservation-selection-categories {
  gap: 4px;
  margin-top: 6px;
  padding: 0;
  border-bottom: 1px solid var(--rs-line);
}
.reservation-selection-categories button {
  background: transparent;
  padding-inline: 12px;
  border-color: transparent;
  border-bottom-width: 2px;
  border-radius: 0;
  color: var(--rs-muted);
  font-weight: 500;
}
.reservation-selection-categories button[aria-pressed=true] {
  background: transparent;
  border-color: transparent;
  border-bottom-color: var(--rs-red);
  color: var(--rs-red);
  font-weight: 600;
}
.reservation-selection-categories button:focus-visible { outline-offset: -4px; }
.reservation-selection-dishes { gap: 12px; }
.reservation-selection-dish-main { padding: 18px; }
.reservation-selection-dish-actions { margin-top: 12px; }
.reservation-selection-cart-line { padding-block: 14px; }
.reservation-selection-total { padding-block: 16px; }
.reservation-selection-bottom {
  max-width: 1104px;
  padding-block: 16px calc(16px + env(safe-area-inset-bottom));
}
.reservation-selection-bottom > div { min-width: 0; }
.reservation-selection-preorder .reservation-selection-bottom {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
}
.reservation-selection .reservation-selection-back {
  min-width: 48px;
  padding-inline: 8px;
  border-color: transparent;
  background: transparent !important;
  color: var(--rs-muted);
  font-weight: 500;
}
@media (max-width: 760px) {
  .reservation-selection { padding-top: 16px; }
  .reservation-selection-heading { margin-bottom: 16px; }
  .reservation-selection-heading h1 { font-size: 26px; }
  .reservation-selection-layout { gap: 12px; }
  .reservation-selection-panel { padding: 18px; }
  .reservation-selection fieldset, .reservation-selection-field { margin-top: 16px; }
  .reservation-selection-dish-main { padding: 16px; }
  .reservation-selection-bottom {
    gap: 8px;
    padding-block: 12px calc(12px + env(safe-area-inset-bottom));
  }
  .reservation-selection-preorder .reservation-selection-bottom .reservation-selection-back { padding-inline: 8px; }
  .reservation-selection-reserve .reservation-selection-bottom .reservation-selection-primary { max-width: 58%; }
}

/* The native shell owns its end-of-document footer clearance. Standalone views
   reserve exactly the measured bar plus a small content gap. */
.reservation-body .reservation-selection { padding-bottom: 24px; }
.reservation-selection :is(button, a, input, select, summary) { scroll-margin-bottom: calc(var(--reservation-selection-bottom-height, 84px) + 16px); }
.reservation-calendar { min-width: 0; font-weight: 400; }
.reservation-calendar-heading { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 4px 8px; margin-bottom: 8px; }
.reservation-calendar-heading > strong { font-size: 13px; }
.reservation-calendar-heading > div { display: flex; gap: 4px; }
.reservation-calendar-heading button { width: 48px; padding: 8px; font-size: 22px; }
.reservation-calendar-days { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 6px; }
.reservation-calendar-days button { min-width: 48px; min-height: 88px; padding: 8px 3px; display: flex; flex-direction: column; align-items: center; gap: 2px; font-size: 14px; }
.reservation-calendar-days button > span { font-size: 12px; color: var(--rs-muted); font-weight: 400; }
.reservation-calendar-days button > strong { font-size: 17px; }
.reservation-calendar-days button small { font-size: 12px; font-weight: 400; overflow-wrap: anywhere; }
.reservation-calendar-days button[data-status="available"] small { color: #346248; }
.reservation-calendar-days button[aria-disabled="true"] { background: #f7f4ef; color: var(--rs-muted); cursor: default; }
.reservation-calendar-days button[data-status="full"] small { color: #8d262d; }
.reservation-calendar-days button[data-status="unknown"] { border-style: dashed; }
.reservation-calendar-days button[aria-pressed="true"] { border: 2px solid var(--rs-red); padding: 7px 2px; background: var(--rs-soft); color: var(--rs-ink); }
.reservation-calendar-message { margin-top: 8px !important; color: var(--rs-muted); font-size: 13px; overflow-wrap: anywhere; }
.reservation-calendar-message button { margin: 6px 0 0 8px; font-size: 13px; padding: 8px; }
@media (max-width: 380px) { .reservation-calendar-days { grid-template-columns: repeat(3, minmax(0, 1fr)); } }

/* Reservation date and time composition; shared preorder styling stays intact. */
.reservation-selection-reserve { max-width: 1120px; }
.reservation-selection-reserve > .reservation-selection-layout { grid-template-columns: minmax(350px, 1fr) minmax(0, 1.12fr); gap: 24px; }
.reservation-selection-reserve > .reservation-selection-heading { margin-bottom: 20px; }
.reservation-reserve-conditions { container-type: inline-size; }
.reservation-selection-reserve .reservation-selection-panel { padding: 24px; }
.reservation-selection-reserve .reservation-selection-people { margin-top: 22px; }
.reservation-selection-reserve .reservation-selection-person { padding-block: 5px; }
.reservation-selection-reserve .reservation-selection-stepper { width: 164px; }
.reservation-selection-reserve .reservation-selection-stepper input { width: 66px; }
.reservation-reserve-date { padding-top: 22px; margin-top: 22px !important; border-top: 1px solid var(--rs-line); }
.reservation-calendar-trigger { display: flex; align-items: center; justify-content: space-between; width: 100%; gap: 12px; text-align: left; }
.reservation-calendar-trigger > span:first-child { display: grid; gap: 4px; }
.reservation-calendar-trigger small { color: var(--rs-muted); font-size: 13px; font-weight: 400; }
.reservation-calendar-trigger strong { font-size: 17px; }
.reservation-calendar-trigger strong span { font-size: 14px; font-weight: 400; margin-left: 6px; }
.reservation-calendar-heading { margin: 12px 0 6px; }
.reservation-calendar-heading > div { align-items: center; }
.reservation-calendar-heading > div > span { color: var(--rs-muted); font-size: 12px; margin-right: 4px; }
.reservation-calendar-heading button { background: transparent; border-color: transparent; }
.reservation-calendar-days { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 5px; }
.reservation-calendar-days button { min-height: 78px; }
.reservation-calendar-days button small { font-size: 12px; }
@container (min-width: 360px) { .reservation-calendar-days { grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 4px; } }
.reservation-selection-times { position: sticky; top: 20px; }
.reservation-reserve-time-heading { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 6px 12px; }
.reservation-reserve-time-heading h2 { flex-basis: 100%; font-size: 21px; }
.reservation-reserve-selected-date { font-size: 16px; font-weight: 600; }
.reservation-reserve-context { color: var(--rs-muted); font-size: 14px; }
.reservation-reserve-prompt { margin-top: 20px !important; padding-block: 12px; color: var(--rs-muted); font-size: 15px; }
.reservation-reserve-day-state { margin-top: 18px; padding: 12px 0 16px; border-bottom: 1px solid var(--rs-line); }
.reservation-reserve-day-state > strong { display: inline-block; padding: 4px 10px; border-radius: 6px; background: var(--rs-soft); color: var(--rs-muted); font-size: 14px; font-weight: 600; }
.reservation-reserve-day-state[data-day-status="available"] > strong { background: #eaf1e8; color: #346248; }
.reservation-reserve-day-state > p { margin-top: 8px; color: var(--rs-muted); font-size: 14px; line-height: 1.7; }
.reservation-reserve-slot-group { margin-top: 22px; }
.reservation-reserve-slot-group > h3 { font-size: 15px; font-weight: 600; color: var(--rs-muted); }
.reservation-reserve-slot-group .reservation-selection-slot-grid { margin-top: 8px; gap: 8px; }
.reservation-reserve-slot-group .reservation-selection-slot-grid button { min-height: 56px; padding: 12px 6px; }
.reservation-reserve-slot-group .reservation-selection-slot-grid button small { overflow-wrap: anywhere; }
.reservation-selection-reserve .reservation-selection-extras { grid-template-columns: minmax(0, 1fr) auto; gap: 12px 24px; margin-top: 24px; align-items: center; }
.reservation-selection-reserve .reservation-selection-extras > .reservation-store-content { grid-column: 1 / -1; grid-row: 2; }
.reservation-selection-reserve .reservation-support-entry { padding: 6px 0; background: transparent; border: 0; }
.reservation-calendar-dialog { box-sizing: border-box; width: min(560px, calc(100% - 32px)); max-width: calc(100% - 32px); max-height: calc(100dvh - 24px); overflow-y: auto; padding: 20px; border: 1px solid var(--rs-line); border-radius: 20px; background: var(--rs-paper); color: var(--rs-ink); overscroll-behavior: contain; }
.reservation-calendar-dialog::backdrop { background: #2b241f80; }
.reservation-calendar-dialog-title { position: sticky; top: -20px; display: flex; align-items: center; justify-content: space-between; gap: 12px; background: var(--rs-paper); z-index: 1; }
.reservation-calendar-dialog-title h2 { font-size: 20px; }
.reservation-calendar-dialog-title button, .reservation-calendar-month-heading button { width: 48px; min-width: 48px; padding: 8px; font-size: 24px; border-color: transparent; }
.reservation-calendar-month-heading { display: grid; grid-template-columns: 48px minmax(0, 1fr) 48px; align-items: center; margin: 6px 0 12px; gap: 8px; }
.reservation-calendar-month-heading h3 { font-size: 19px; text-align: center; }
.reservation-calendar-weekdays, .reservation-calendar-month-days { display: grid; grid-template-columns: repeat(7, minmax(0, 1fr)); gap: 0; }
.reservation-calendar-weekdays span { text-align: center; padding-block: 6px; font-size: 13px; color: var(--rs-muted); }
.reservation-calendar-month-days button { min-width: 48px; min-height: 64px; padding: 6px 1px; border: 1px solid transparent; border-radius: 9px; background: transparent; display: flex; flex-direction: column; align-items: center; justify-content: center; gap: 3px; }
.reservation-calendar-month-days button > strong { font-size: 18px; }
.reservation-calendar-month-days button small { color: var(--rs-muted); font-size: 12px; font-weight: 400; white-space: nowrap; }
.reservation-calendar-month-days button[data-status="available"] small { color: #346248; }
.reservation-calendar-month-days button[aria-disabled="true"] { color: var(--rs-muted); cursor: default; background: #faf8f4; }
.reservation-calendar-month-days button[aria-pressed="true"] { background: var(--rs-red); color: #fff; border-color: var(--rs-red); }
.reservation-calendar-month-days button[aria-pressed="true"] small { color: #fff; }
.reservation-calendar-month-days button:focus-visible { outline-offset: -3px; }
.reservation-calendar-legend, .reservation-calendar-detail { margin-top: 12px !important; font-size: 12px; color: var(--rs-muted); line-height: 1.7; overflow-wrap: anywhere; }
.reservation-calendar-detail { padding-top: 12px; border-top: 1px solid var(--rs-line); font-size: 13px; }
@media (max-width: 760px) {
  .reservation-selection-reserve > .reservation-selection-layout { grid-template-columns: minmax(0, 1fr); gap: 14px; }
  .reservation-selection-reserve .reservation-selection-panel { padding: 18px; }
  .reservation-selection-times { position: static; }
  .reservation-reserve-date { padding-top: 18px; margin-top: 18px !important; }
  .reservation-selection-reserve .reservation-selection-extras { display: grid; grid-template-columns: minmax(0, 1fr); gap: 8px; margin-top: 18px; }
  .reservation-selection-reserve .reservation-selection-extras > .reservation-store-content { grid-row: auto; }
  .reservation-selection-reserve .reservation-support-entry { padding-block: 8px; }
  .reservation-reserve-time-heading h2 { font-size: 20px; }
}
@media (max-width: 640px) {
  .reservation-calendar-dialog { width: calc(100% - 16px); max-width: calc(100% - 16px); padding: 10px; border-radius: 16px; }
  .reservation-calendar-dialog-title { top: -10px; }
}
@media (max-width: 374px) {
  .reservation-calendar-dialog { width: 100%; max-width: 100%; padding: 6px; border: 0; border-radius: 16px; }
  .reservation-calendar-dialog-title { top: -6px; padding-left: 6px; }
  .reservation-calendar-month-days button { min-width: 44px; }
  .reservation-calendar-days { grid-template-columns: repeat(3, minmax(0, 1fr)); }
}
.reservation-month-preview-tools { display: flex; align-items: center; flex-wrap: wrap; gap: 8px; padding: 12px 18px; border-bottom: 1px solid #e6d8c8; font: 13px/1.5 sans-serif; background: #fff; }
.reservation-month-preview-tools strong { margin-right: auto; }
.reservation-month-preview-tools button { min-height: 48px; min-width: 48px; border: 1px solid #e6d8c8; border-radius: 10px; padding: 8px 12px; background: #fff; font: inherit; }
.reservation-month-preview-output { display: block; max-width: 1104px; margin: 0 auto 120px; padding: 12px 18px; font: 13px/1.5 sans-serif; }
.reservation-reserve-slot-note { margin-top: 8px !important; color: var(--rs-muted); font-size: 12px; line-height: 1.7; }

/* Selected meal quantities and configuration-specific controls. */
.reservation-selection-dish-selected { border-color: #ae6b46; box-shadow: inset 3px 0 #ae6b46; }
.reservation-selection-dish-top > div:first-child { min-width: 0; }
.reservation-selection-dish h3 { overflow-wrap: anywhere; }
.reservation-selection-selected-badge { display: inline-block; margin-top: 8px; padding: 3px 9px; border-radius: 6px; background: #f4e5d5; color: #703b22; font-size: 13px; font-weight: 600; }
.reservation-selection-dish-actions { flex-wrap: wrap; align-items: center; }
.reservation-selection-dish-actions > .reservation-selection-line-stepper { margin: 0 auto 0 0; }
.reservation-selection-line-stepper > span { display: inline-flex; align-items: baseline; gap: 4px; min-width: 32px; justify-content: center; font-size: 18px; font-weight: 600; }
.reservation-selection-line-stepper > span > small { color: var(--rs-muted); font-size: 12px; font-weight: 400; }
.reservation-selection-cart-quantity { display: block; margin-top: 4px; color: #703b22; font-size: 13px; }
.reservation-selection-selected-configurations { margin-top: 12px; border-top: 1px solid var(--rs-line); }
.reservation-selection .reservation-selection-config-toggle { width: 100%; background: transparent; border-color: transparent; padding: 10px 0; text-align: left; color: #703b22; }
.reservation-selection-selected-line { display: grid; gap: 5px; padding: 12px 0; border-top: 1px solid var(--rs-line); }
.reservation-selection-selected-line > strong { font-size: 14px; }
.reservation-selection-selected-line > small { color: var(--rs-muted); overflow-wrap: anywhere; white-space: pre-wrap; }
.reservation-selection-description p { margin-top: 0; white-space: pre-wrap; overflow-wrap: anywhere; }
.reservation-selection .reservation-selection-description-toggle,
.reservation-selection .reservation-selection-alternate { background: transparent; border-color: transparent; color: #703b22; padding-inline: 8px; font-size: 14px; font-weight: 500; text-decoration: underline; text-underline-offset: 4px; }
.reservation-selection-dish-controls .reservation-selection-dish-actions > .reservation-selection-line-stepper { margin: 0; }
.reservation-selection-dish-controls .reservation-selection-config-toggle { width: auto; padding-inline: 8px; }
.reservation-selection-card-details { display: grid; gap: 3px; margin-top: 10px; padding-left: 10px; border-left: 2px solid var(--rs-line); color: var(--rs-muted); }
.reservation-selection-card-details small { font-size: 13px; overflow-wrap: anywhere; white-space: pre-wrap; }
.reservation-selection-preorder .reservation-selection-cart-line { margin-top: 10px; padding: 12px; background: var(--rs-canvas); border: 1px solid var(--rs-line); border-radius: 10px; }
.reservation-selection-cart-line > small { overflow-wrap: anywhere; white-space: pre-wrap; }
.reservation-selection-cart-line > .reservation-selection-line-stepper { margin-top: 2px; }
.reservation-selection-dish-missing { border-color: #b5353c; }
.reservation-selection-required-error { margin-top: 10px !important; color: #8d262d; font-size: 14px; font-weight: 600; }
.reservation-selection-error-details { display: block; margin-top: 4px; font-size: 14px; }
.reservation-selection-options [data-option-error="true"] { border-left: 3px solid #b5353c; padding-left: 10px; }
.reservation-selection-options [aria-invalid="true"]:is(input, select) { border-color: #b5353c; }
.reservation-selection-dish-missing, .reservation-selection-preorder > .reservation-selection-error, .reservation-selection-options [data-option-error="true"] { scroll-margin-block: 24px calc(var(--reservation-selection-bottom-height, 84px) + 24px); }
.reservation-selection-add-dialog { box-sizing: border-box; width: min(440px, calc(100% - 32px)); max-width: calc(100% - 32px); max-height: calc(100dvh - 32px); overflow-y: auto; padding: 24px; border: 1px solid var(--rs-line); border-radius: 18px; background: var(--rs-paper); color: var(--rs-ink); overscroll-behavior: contain; }
.reservation-selection-add-dialog::backdrop { background: #2b241f80; }
.reservation-selection-add-dialog h2 { font-size: 21px; }
.reservation-selection-add-dialog p { margin-top: 12px; line-height: 1.7; overflow-wrap: anywhere; white-space: pre-wrap; }
.reservation-selection-dialog-actions { display: flex; flex-wrap: wrap; gap: 10px; justify-content: flex-end; margin-top: 20px; }
.reservation-selection-dialog-actions button { flex: 1; }
@media (max-width: 400px) {
  .reservation-selection-dish-top { flex-wrap: wrap; }
  .reservation-selection-price { margin-left: auto; }
  .reservation-selection-dish > img { width: 64px; height: 64px; margin-left: 10px; }
  .reservation-selection-dish-actions > .reservation-selection-line-stepper { flex-basis: 100%; justify-content: flex-start; }
  .reservation-selection-add-dialog { padding: 18px; }
}

/* Mobile keeps the original item / subtotal / utility order and page scroll. */
.reservation-selection-preorder .reservation-selection-cart { display: flex; flex-direction: column; }
.reservation-selection-cart-scroll { display: contents; }
.reservation-selection-cart-items { order: 1; }
.reservation-selection-cart .reservation-selection-total { order: 2; }
.reservation-selection-cart-utilities { order: 3; }
.reservation-selection-cart-utilities > .reservation-selection-secondary { width: 100%; margin-top: 12px; }
/* Keep a long desktop selection above the measured fixed action bar. */
@media (min-width: 761px) {
  .reservation-selection-preorder .reservation-selection-cart {
    --reservation-cart-top: 24px;
    top: var(--reservation-cart-top);
    max-height: calc(100dvh - max(var(--reservation-cart-top), var(--reservation-cart-viewport-top, 0px)) - var(--reservation-selection-bottom-height, 84px) - 16px);
    display: flex;
    flex-direction: column;
    min-height: 0;
  }
  .reservation-body .reservation-selection-preorder .reservation-selection-cart { --reservation-cart-top: 84px; }
  .reservation-selection-preorder .reservation-selection-cart > :not(.reservation-selection-cart-scroll) { flex-shrink: 0; }
  .reservation-selection-cart-scroll { display: block; order: 1; min-height: 0; overflow-y: auto; overscroll-behavior-y: contain; scrollbar-gutter: stable; }
  .reservation-selection-cart-scroll:focus-visible { outline: 2px solid var(--rs-red); outline-offset: 2px; }
}
