.holiday-closure-banner {
  position: relative;
  z-index: 5;
  box-sizing: border-box;
  width: min(1100px, calc(100% - 32px));
  margin: 18px auto;
  padding: 14px 18px;
  border: 1px solid #d5ad5f;
  border-left: 5px solid #8b1e2d;
  border-radius: 5px;
  background: #fff8e7;
  color: #3b2817;
  font-size: 16px;
  font-weight: 650;
  line-height: 1.55;
  text-align: center;
  box-shadow: 0 5px 16px rgba(36, 23, 15, 0.1);
}

.reservation-origin-other[hidden] {
  display: none !important;
}

.reservation-phone-code-other[hidden] {
  display: none !important;
}

.reservation-origin-other {
  animation: reservation-origin-reveal 180ms ease-out;
}

@keyframes reservation-origin-reveal {
  from {
    opacity: 0;
    transform: translateY(-4px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}

@media (max-width: 600px) {
  .holiday-closure-banner {
    width: calc(100% - 22px);
    margin: 12px auto;
    padding: 12px 14px;
    font-size: 15px;
    text-align: left;
  }
}

@media (prefers-reduced-motion: reduce) {
  .reservation-origin-other {
    animation: none;
  }
}

/* Revision 86: suggest the visitor's device language without redirecting the
   canonical Traditional Chinese URLs. The choice remains entirely voluntary. */
.language-suggestion {
  position: fixed;
  z-index: 1350;
  right: auto;
  bottom: calc(18px + env(safe-area-inset-bottom, 0px));
  left: 50%;
  display: grid;
  width: min(760px, calc(100% - 36px));
  padding: 14px;
  box-sizing: border-box;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  color: #341935;
  background: rgba(255, 253, 249, 0.98);
  border: 2px solid #6f3b70;
  border-radius: 12px;
  box-shadow: 0 12px 34px rgba(24, 10, 25, 0.3);
  transform: translateX(-50%);
  animation: language-suggestion-in 0.24s ease-out both;
}

.language-suggestion-message {
  margin: 0;
  font: 600 16px/1.45 Arial, "Noto Sans", "Noto Sans CJK TC", "PingFang TC", "Microsoft JhengHei", sans-serif;
}

.language-suggestion-actions {
  display: flex;
  gap: 9px;
  align-items: stretch;
}

.language-suggestion-switch,
.language-suggestion-stay {
  display: inline-flex;
  min-height: 44px;
  padding: 9px 14px;
  box-sizing: border-box;
  align-items: center;
  justify-content: center;
  font: 700 14px/1.35 Arial, "Noto Sans", "Noto Sans CJK TC", "PingFang TC", "Microsoft JhengHei", sans-serif;
  text-align: center;
  text-decoration: none;
  border: 2px solid #6f3b70;
  border-radius: 8px;
  cursor: pointer;
}

.language-suggestion-switch,
.language-suggestion-switch:link,
.language-suggestion-switch:visited {
  color: #ffffff !important;
  background: #6f3b70;
  -webkit-text-fill-color: currentColor;
}

.language-suggestion-stay {
  color: #4d2850;
  background: #ffffff;
}

.language-suggestion-switch:hover,
.language-suggestion-switch:focus-visible {
  color: #ffffff !important;
  background: #4d2850;
}

.language-suggestion-stay:hover,
.language-suggestion-stay:focus-visible {
  color: #341935;
  background: #f3e7f2;
}

.language-suggestion-switch:focus-visible,
.language-suggestion-stay:focus-visible {
  outline: 3px solid rgba(52, 25, 53, 0.28);
  outline-offset: 3px;
}

@keyframes language-suggestion-in {
  from {
    opacity: 0;
    transform: translate(-50%, 12px);
  }

  to {
    opacity: 1;
    transform: translate(-50%, 0);
  }
}

@media (max-width: 680px) {
  .language-suggestion {
    width: min(100% - 20px, 520px);
    padding: 13px;
    grid-template-columns: minmax(0, 1fr);
    gap: 11px;
  }

  .language-suggestion-message {
    font-size: 15px;
  }

  .language-suggestion-actions {
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .language-suggestion-switch,
  .language-suggestion-stay {
    width: 100%;
    padding: 9px 8px;
    font-size: 13px;
  }
}

@media (max-width: 390px) {
  .language-suggestion-actions {
    grid-template-columns: minmax(0, 1fr);
  }
}

@media (prefers-reduced-motion: reduce) {
  .language-suggestion {
    animation: none;
  }
}

/* Revision 35: consistent controls, calendar access and request guidance. */
.reservation-field select {
  -webkit-appearance: none;
  appearance: none;
  padding-right: 44px;
  background-color: #fff;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='14' height='9' viewBox='0 0 14 9'%3E%3Cpath fill='none' stroke='%23341935' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' d='m2 2 5 5 5-5'/%3E%3C/svg%3E");
  background-repeat: no-repeat;
  background-position: right 15px center;
  background-size: 14px 9px;
}

.reservation-grid-spacer {
  min-width: 0;
}

.reservation-name-guidance {
  grid-column: 1 / -1;
  margin: -10px 0 18px;
  color: #665768;
  font: 13px/1.45 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
}

.required-marker {
  color: #b3202a;
  font-weight: 800;
}

.reservation-privacy-note {
  margin: -6px 0 18px;
  padding: 12px 14px;
  border: 1px solid #d8ccc1;
  border-left: 4px solid #6f3b70;
  border-radius: 3px;
  background: #f8f4f8;
  color: #514452;
  font: 13px/1.55 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
}

.reservation-privacy-note strong {
  display: block;
  margin-bottom: 3px;
  color: #341935;
  font-weight: 750;
}

.reservation-privacy-note a,
.reservation-privacy-note a:link,
.reservation-privacy-note a:visited,
.reservation-privacy-note a:hover,
.reservation-privacy-note a:focus,
.reservation-privacy-note a:active {
  color: inherit !important;
  -webkit-text-fill-color: currentColor;
  text-decoration-color: currentColor !important;
  text-underline-offset: 2px;
}

.reservation-lead-time {
  margin: -4px 0 18px;
  padding: 10px 13px;
  border-left: 4px solid #8b1e2d;
  background: #fff8ee;
  color: #4f3529;
  font: 650 14px/1.5 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
}

.reservation-phone-link,
.reservation-phone-link:link,
.reservation-phone-link:visited,
.reservation-phone-link:hover,
.reservation-phone-link:focus,
.reservation-phone-link:active {
  color: inherit !important;
  -webkit-text-fill-color: currentColor;
  text-decoration-color: currentColor !important;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.18em;
}

.reservation-phone-advisory {
  display: block;
  margin-top: 7px;
  padding: 8px 10px;
  border-left: 3px solid #a15c13;
  border-radius: 3px;
  background: #fff8e7;
  color: #69400f;
  font: 650 13px/1.45 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
}

.reservation-calling-code-search {
  position: relative;
  display: block;
  margin-top: 7px;
}

.reservation-field .reservation-calling-code-search input[type="search"] {
  width: 100%;
  min-height: 48px;
  margin: 0;
  padding-left: 42px;
  padding-right: 148px;
  border: 2px solid #7d476f;
  background: #fffdfb;
  box-shadow: inset 0 0 0 1px rgba(125, 71, 111, 0.08);
  color: #2d2029;
  font-weight: 650;
  cursor: text;
}

.reservation-calling-code-search::before {
  content: "";
  position: absolute;
  z-index: 2;
  top: 15px;
  left: 15px;
  width: 11px;
  height: 11px;
  border: 2px solid #6b315d;
  border-radius: 50%;
  pointer-events: none;
}

.reservation-calling-code-search::after {
  content: "";
  position: absolute;
  z-index: 2;
  top: 27px;
  left: 27px;
  width: 8px;
  height: 2px;
  background: #6b315d;
  transform: rotate(45deg);
  transform-origin: left center;
  pointer-events: none;
}

.reservation-calling-code-action {
  position: absolute;
  z-index: 2;
  top: 50%;
  right: 10px;
  padding: 4px 8px;
  border-radius: 999px;
  background: #eee2eb;
  color: #5b2850;
  font: 700 12px/1.2 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  white-space: nowrap;
  transform: translateY(-50%);
  pointer-events: none;
}

.reservation-field .reservation-calling-code-search input[type="search"]:focus {
  border-color: #5d2551;
  box-shadow: 0 0 0 3px rgba(93, 37, 81, 0.16);
}

.reservation-calling-code-guidance {
  display: block;
  margin-top: 7px;
}

@media screen and (max-width: 430px) {
  .reservation-field .reservation-calling-code-search input[type="search"] {
    padding-right: 112px;
    font-size: 14px;
  }

  .reservation-calling-code-action {
    max-width: 92px;
    overflow: hidden;
    font-size: 11px;
    text-overflow: ellipsis;
  }
}

.reservation-country-flag {
  display: inline-block;
  width: 1.35em;
  margin-right: 0.35em;
  font-family: "Apple Color Emoji", "Segoe UI Emoji", "Noto Color Emoji", sans-serif;
  text-align: center;
}

/* Six-language control: a normal-sized desktop navigation item whose choices
   open below it without adding another row to the masthead. */
@media screen and (min-width: 801px) {
  .desktop-language-picker {
    position: relative;
    display: inline-block;
    width: auto;
    flex: 0 0 auto;
    margin: 0 10px;
    color: #d5bfd6;
    font-family: var(--font-latin, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif);
    font-size: 16px;
    font-weight: 650;
    line-height: 1.3;
    vertical-align: middle;
  }

  .desktop-language-picker summary {
    box-sizing: border-box;
    width: auto;
    min-width: 0;
    margin: 0;
    padding: 10px;
    border: 0;
    border-radius: 999px;
    box-shadow: inset 0 0 0 1px rgba(213, 191, 214, 0.75);
    color: inherit;
    font: inherit;
    text-align: center;
    white-space: nowrap;
    cursor: pointer;
    list-style: none;
    transition: color 0.2s ease, background-color 0.2s ease;
  }

  .desktop-language-picker summary::-webkit-details-marker {
    display: none;
  }

  .desktop-language-picker summary::after {
    content: " ▾";
  }

  .desktop-language-picker[open] summary::after {
    content: " ▴";
  }

  .desktop-language-picker summary:hover,
  .desktop-language-picker summary:focus-visible,
  .desktop-language-picker[open] summary {
    background: rgba(213, 191, 214, 0.14);
    color: #fff;
  }

  .desktop-language-picker summary:focus-visible {
    outline: 2px solid #d5bfd6;
    outline-offset: 2px;
  }

  .desktop-language-options {
    position: absolute;
    top: calc(100% + 8px);
    right: 0;
    z-index: 1200;
    display: grid;
    width: 170px;
    gap: 4px;
    padding: 8px;
    border: 1px solid rgba(213, 191, 214, 0.8);
    border-radius: 8px;
    background: #341935;
    box-shadow: 0 10px 26px rgba(0, 0, 0, 0.3);
  }

  body > .hideinmobile.is-compact .desktop-language-picker {
    margin: 0 2px;
  }

  body > .hideinmobile.is-compact .desktop-language-picker summary {
    padding: 7px 6px;
    font-size: clamp(12px, 1.35vw, 15px);
  }

  .item6.container .desktop-language-options a {
    margin: 0;
    padding: 9px 11px;
    border-radius: 5px;
    font-size: 13px;
    text-align: left;
  }

  .item6.container .desktop-language-options a::before,
  .item6.container .desktop-language-options a::after {
    display: none;
  }

  .item6.container .desktop-language-options a:hover,
  .item6.container .desktop-language-options a:focus,
  .item6.container .desktop-language-options a[aria-current="page"] {
    background: #eadfeb;
    color: #341935;
  }
}

@media screen and (max-width: 800px) {
  .mobile-language-options {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.reservation-manual-code-toggle {
  display: block;
  width: 100%;
  min-height: 40px;
  margin: 8px 0 0;
  padding: 7px 9px;
  border: 1px solid #8e768f;
  border-radius: 4px;
  background: #fff;
  color: #513252;
  font: 650 12px/1.35 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  text-align: left;
  text-decoration: underline;
  text-decoration-thickness: 1px;
  text-underline-offset: 0.16em;
  cursor: pointer;
}

.reservation-manual-code-toggle:hover,
.reservation-manual-code-toggle:focus {
  border-color: #341935;
  background: #f4eaf4;
  outline: 3px solid rgba(52, 25, 53, 0.14);
}

.reservation-phone-code-other {
  margin-top: 9px;
  padding: 10px;
  border: 1px solid #b8a5b9;
  border-radius: 4px;
  background: #faf6fa;
}

.reservation-phone-code-other[hidden] {
  display: none !important;
}

.reservation-phone-code-other label {
  display: block;
  margin-top: 7px;
}

.reservation-manual-code-warning {
  display: block;
  color: #665768;
  font: 600 12px/1.45 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
}

.reservation-phone-code-match {
  display: block;
  margin-top: 7px;
  color: #355b36;
  font: 650 12px/1.45 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
}

.reservation-phone-code-match.is-warning {
  color: #69400f;
}

.reservation-phone-code-match[hidden] {
  display: none !important;
}

.reservation-calling-code-results {
  max-height: 238px;
  margin-top: 7px;
  overflow-y: auto;
  overscroll-behavior: contain;
  border: 1px solid #9e8d9f;
  border-radius: 4px;
  background: #fff;
  box-shadow: 0 8px 20px rgba(52, 25, 53, 0.13);
  -webkit-overflow-scrolling: touch;
}

.reservation-calling-code-results[hidden] {
  display: none !important;
}

.reservation-calling-code-results button {
  display: block;
  width: 100%;
  margin: 0;
  padding: 10px 12px;
  border: 0;
  border-bottom: 1px solid #e3d9e4;
  background: #fff;
  color: #341935;
  font: 650 14px/1.35 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  text-align: left;
  cursor: pointer;
}

.reservation-calling-code-results button:last-child {
  border-bottom: 0;
}

.reservation-calling-code-results button:hover,
.reservation-calling-code-results button:focus,
.reservation-calling-code-results button[aria-selected="true"] {
  background: #f4eaf4;
  outline: 0;
}

.reservation-calling-code-empty,
.reservation-calling-code-note {
  margin: 0;
  padding: 12px;
  color: #665768;
  font: 600 13px/1.45 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
}

.reservation-calling-code-note {
  border-top: 1px solid #e3d9e4;
  background: #fff8e7;
  color: #69400f;
}

.reservation-calling-code-results + select {
  margin-top: 8px;
}

.reservation-form.calling-code-enhanced [data-calling-code-select] {
  display: none;
}

.reservation-notes-label .reservation-label-detail {
  display: inline;
}

.takeaway-note {
  margin: 18px auto 0 !important;
  padding-top: 16px;
  border-top: 1px solid rgba(213, 191, 214, 0.32);
  font-size: 15px !important;
  line-height: 1.55 !important;
}

.takeaway-note a,
.takeaway-note a:visited,
.contact-takeaway a,
.contact-takeaway a:visited {
  color: inherit;
  text-decoration-color: currentColor;
  text-underline-offset: 0.18em;
}

.mainland-map-launcher {
  display: flex;
  min-height: 190px;
  margin: 18px 0;
  padding: 24px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(213, 191, 214, 0.42);
  border-radius: 9px;
  background:
    radial-gradient(circle at 30% 30%, rgba(213, 191, 214, 0.2), transparent 38%),
    linear-gradient(135deg, #4b2a4c, #281329);
  color: #fff;
  text-align: center;
  text-decoration: none;
}

.mainland-map-launcher:hover,
.mainland-map-launcher:focus {
  border-color: #fff;
  background: linear-gradient(135deg, #5c355e, #341935);
  color: #fff;
  outline: 3px solid rgba(213, 191, 214, 0.3);
  outline-offset: 3px;
}

.mainland-map-launcher-icon {
  margin-bottom: 10px;
  font-size: 38px;
  line-height: 1;
}

.mainland-map-launcher strong {
  font: 750 20px/1.3 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
}

.mainland-map-launcher span:last-child {
  margin-top: 6px;
  color: #eadfeb;
  font: 14px/1.45 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
}

.reservation-phone-advisory[hidden],
.reservation-date-readable[hidden] {
  display: none !important;
}

.reservation-date-readable {
  display: block;
  margin-top: 8px;
  color: #341935;
  font: 700 14px/1.45 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
}

.reservation-date-entry {
  display: grid;
  grid-template-columns: minmax(0, 1fr) auto;
  gap: 9px;
  align-items: end;
  margin-top: 7px;
}

.reservation-date-entry > input[name="date_display"] {
  margin-top: 0;
}

.reservation-calendar-control {
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 7px;
  min-height: 48px;
  padding: 10px 14px;
  overflow: hidden;
  box-sizing: border-box;
  border: 1px solid #6f3b70;
  border-radius: 4px;
  background: #f4eaf4;
  color: #341935;
  font: 700 14px/1.25 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  white-space: nowrap;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}

.reservation-calendar-control:hover,
.reservation-calendar-control:focus-within {
  border-color: #341935;
  background: #ead9eb;
  outline: 3px solid rgba(52, 25, 53, 0.14);
}

.reservation-calendar-panel {
  position: relative;
  z-index: 6;
  margin-top: 10px;
  padding: 13px;
  border: 1px solid #bba6bc;
  border-radius: 6px;
  background: #fff;
  box-shadow: 0 12px 28px rgba(37, 20, 38, 0.18);
}

.reservation-calendar-panel[hidden] {
  display: none !important;
}

.reservation-calendar-header {
  display: grid;
  grid-template-columns: 42px minmax(0, 1fr) 42px;
  gap: 8px;
  align-items: center;
  margin-bottom: 10px;
}

.reservation-calendar-month {
  color: #341935;
  font: 750 15px/1.3 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  text-align: center;
  text-transform: capitalize;
}

.reservation-calendar-nav,
.reservation-calendar-day {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 1px solid transparent;
  border-radius: 4px;
  background: transparent;
  color: #341935;
  font: 700 15px/1 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
  cursor: pointer;
  -webkit-appearance: none;
  appearance: none;
}

.reservation-calendar-nav {
  width: 42px;
  height: 38px;
  border-color: #cfbfd0;
  background: #f7f0f7;
  font-size: 25px;
}

.reservation-calendar-grid {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 4px;
}

.reservation-calendar-weekday {
  display: flex;
  min-height: 28px;
  align-items: center;
  justify-content: center;
  color: #6c5b6d;
  font: 700 12px/1 -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif;
}

.reservation-calendar-day,
.reservation-calendar-blank {
  min-height: 38px;
}

.reservation-calendar-day:hover,
.reservation-calendar-day:focus-visible,
.reservation-calendar-nav:hover,
.reservation-calendar-nav:focus-visible {
  border-color: #6f3b70;
  background: #efe2f0;
  outline: 2px solid rgba(52, 25, 53, 0.14);
  outline-offset: 1px;
}

.reservation-calendar-day:disabled,
.reservation-calendar-nav:disabled {
  color: #aaa0aa;
  background: #f5f3f5;
  cursor: not-allowed;
  opacity: 0.68;
}

.reservation-calendar-today:not(:disabled) {
  border-color: #a98cab;
}

.reservation-calendar-selected:not(:disabled) {
  border-color: #341935;
  background: #341935;
  color: #fff;
}

.homepage-carousel [data-carousel-direction] {
  width: 48px;
  min-width: 48px;
  height: 48px;
  min-height: 48px;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, 0.82);
  border-radius: 50%;
  background: rgba(52, 25, 53, 0.84);
  box-shadow: 0 4px 14px rgba(19, 10, 20, 0.28);
}

.homepage-carousel [data-carousel-direction="-1"] {
  left: 14px;
}

.homepage-carousel [data-carousel-direction="1"] {
  right: 14px;
}

.homepage-carousel [data-carousel-direction]:hover,
.homepage-carousel [data-carousel-direction]:focus {
  background: #6f3b70;
  border-color: #fff;
}

.mainland-map-panel {
  display: flex;
  min-height: 430px;
  padding: clamp(24px, 5vw, 54px);
  box-sizing: border-box;
  flex-direction: column;
  justify-content: center;
  background: linear-gradient(145deg, #f7eff7, #fffaf4);
  color: #341935;
}

.mainland-map-panel[hidden],
.restaurant-map[hidden] {
  display: none !important;
}

.mainland-map-panel h2 {
  margin: 4px 0 12px;
}

.mainland-map-panel .map-link-group {
  margin: 18px 0 8px;
}

@media (max-width: 680px) {
  .reservation-grid-spacer {
    display: none;
  }

  .reservation-date-entry {
    grid-template-columns: minmax(0, 1fr);
  }

  .reservation-notes-label .reservation-label-detail {
    display: block;
    margin-top: 4px;
    font-weight: 500;
    line-height: 1.45;
  }

  .reservation-calendar-control {
    width: 100%;
  }

  .homepage-carousel [data-carousel-direction] {
    width: 44px;
    min-width: 44px;
    height: 44px;
    min-height: 44px;
  }

  .homepage-carousel [data-carousel-direction="-1"] {
    left: 8px;
  }

  .homepage-carousel [data-carousel-direction="1"] {
    right: 8px;
  }

  .mainland-map-panel {
    min-height: 360px;
  }
}

/* Revision 43: keep the complete mobile masthead and menu within reach. */
@media screen and (max-width: 800px) {
  html {
    scroll-padding-top: 100px;
  }

  .hamburger {
    position: -webkit-sticky;
    position: sticky;
    top: 0;
    z-index: 1000;
    padding-top: calc(15px + env(safe-area-inset-top, 0px));
  }

  .hamburger > div {
    background: #341935;
  }

  .hamburger .dropdown-content {
    max-height: calc(100vh - 100px);
    max-height: calc(100dvh - 100px - env(safe-area-inset-bottom, 0px));
    overflow-y: auto;
    overscroll-behavior: contain;
    -webkit-overflow-scrolling: touch;
  }
}

/* Revision 68: let the full desktop identity scroll naturally, then pin the
   compact navigation without changing document height. The flow placeholder
   prevents Safari scroll anchoring from bouncing across the transition. */
@media screen and (min-width: 801px) {
  html {
    scroll-padding-top: calc(var(--desktop-masthead-height, 0px) + 20px);
  }

  body > .hideinmobile {
    position: relative;
    z-index: 1000;
    width: 100%;
    background: transparent;
    box-shadow: none;
  }

  .masthead-flow-placeholder {
    display: none;
    width: 100%;
    height: var(--desktop-masthead-expanded-height, 264px);
    pointer-events: none;
    visibility: hidden;
  }

  .masthead-flow-placeholder.is-active {
    display: block;
  }

  body > .hideinmobile .grid-container,
  body > .hideinmobile .grid-container > .item1,
  body > .hideinmobile .grid-container > .item2,
  body > .hideinmobile .grid-container > .item4,
  body > .hideinmobile .grid-container > .item5,
  body > .hideinmobile .grid-container > .item6,
  body > .hideinmobile .item1 img,
  body > .hideinmobile .brand-latin,
  body > .hideinmobile .brand-chinese,
  body > .hideinmobile .item6 a {
    transition: all 0.28s ease;
  }

  /* Japanese and Korean show the local translation of the Chinese restaurant
     name. Their longer scripts need a dedicated scale to remain on one line. */
  body > .hideinmobile .brand-chinese.brand-localized {
    font-size: clamp(28px, 4vw, 48px);
    letter-spacing: 0.025em;
  }

  html[lang="ko"] body > .hideinmobile .brand-chinese.brand-localized {
    font-size: clamp(25px, 3.55vw, 43px);
    letter-spacing: 0.01em;
  }

  body > .hideinmobile.is-compact .grid-container {
    grid-template-columns: 64px clamp(150px, 16vw, 210px) clamp(180px, 18vw, 230px) minmax(0, 1fr);
    grid-template-areas: "logo chinese name navbar";
    gap: 0;
    max-width: 100%;
  }

  body > .hideinmobile.is-compact {
    position: fixed;
    top: 0;
    right: 0;
    left: 0;
    background: #341935;
    box-shadow: 0 6px 18px rgba(0, 0, 0, 0.3);
  }

  body > .hideinmobile.is-compact .item1,
  body > .hideinmobile.is-compact .item2,
  body > .hideinmobile.is-compact .item4 {
    min-height: 64px;
    padding: 6px 10px;
  }

  body > .hideinmobile.is-compact .item1 img {
    width: auto !important;
    max-width: none !important;
    height: 50px;
  }

  body > .hideinmobile.is-compact .item2 {
    justify-content: flex-start;
    min-width: 0;
    overflow: visible;
  }

  body > .hideinmobile.is-compact .item4 {
    display: flex;
  }

  body > .hideinmobile.is-compact .brand-chinese {
    font-size: clamp(16px, 1.8vw, 26px);
    letter-spacing: 0.04em;
    line-height: 1;
    white-space: nowrap;
  }

  body > .hideinmobile.is-compact .brand-chinese.brand-localized,
  html[lang="ko"] body > .hideinmobile.is-compact .brand-chinese.brand-localized {
    font-size: clamp(12px, 1.2vw, 17px);
    letter-spacing: 0;
  }

  body > .hideinmobile.is-compact .brand-latin {
    display: flex;
    width: 100%;
    min-width: 0;
    gap: 0.3em;
    align-items: center;
    font-size: clamp(17px, 1.55vw, 22px);
    letter-spacing: 0.025em;
    line-height: 1;
    white-space: nowrap;
    overflow: visible;
  }

  body > .hideinmobile.is-compact .brand-latin span {
    display: inline;
  }

  body > .hideinmobile.is-compact .brand-latin span + span {
    margin-top: 0;
  }

  body > .hideinmobile.is-compact .item5 {
    display: none;
  }

  body > .hideinmobile.is-compact .item6 {
    display: flex;
    min-height: 64px;
    padding: 6px 12px;
    align-items: center;
    justify-content: flex-end;
    white-space: nowrap;
  }

  body > .hideinmobile.is-compact .item6 > a {
    margin: 0 2px;
    padding: 7px 6px;
    font-size: clamp(12px, 1.35vw, 15px);
  }

  .contact-summary {
    top: calc(var(--desktop-masthead-height, 238px) + 20px);
  }
}

/* On short laptops the contact card scrolls normally instead of being trapped
   between the large identity masthead and the bottom of the viewport. */
@media screen and (min-width: 801px) and (max-height: 850px) {
  .contact-summary {
    position: static;
  }
}

@media (prefers-reduced-motion: reduce) {
  body > .hideinmobile .grid-container,
  body > .hideinmobile .grid-container > div,
  body > .hideinmobile .item1 img,
  body > .hideinmobile .brand-latin,
  body > .hideinmobile .brand-chinese,
  body > .hideinmobile .item6 a {
    transition: none;
  }
}

/* Revision 87: compact, localized social links above every page copyright. */
.footer-social {
  display: flex;
  width: fit-content;
  max-width: calc(100% - 32px);
  margin: 24px auto 12px;
  gap: 9px;
  align-items: center;
  justify-content: center;
  flex-wrap: wrap;
  color: #eadfeb;
  font: 650 14px/1.4 var(--font-latin, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif);
  text-align: center;
}

.footer-social-label {
  margin-right: 2px;
}

.footer-social-link,
.footer-social-link:link,
.footer-social-link:visited {
  display: inline-flex;
  min-height: 38px;
  padding: 7px 13px;
  box-sizing: border-box;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(234, 223, 235, 0.78);
  border-radius: 999px;
  background: rgba(255, 255, 255, 0.06);
  color: #ffffff !important;
  -webkit-text-fill-color: currentColor;
  text-decoration: none;
  transition: background-color 0.18s ease, color 0.18s ease, transform 0.18s ease;
}

.footer-social-icon {
  display: block;
  width: 20px;
  height: 20px;
  margin-right: 7px;
  object-fit: contain;
  flex: 0 0 20px;
}

.footer-social-icon[src="/img/social/facebook.png"] {
  border-radius: 50%;
  clip-path: circle(48% at 50% 50%);
}

.footer-social-icon[src="/img/social/instagram.png"] {
  border-radius: 5px;
}

.footer-social-link:hover,
.footer-social-link:focus-visible {
  background: #eadfeb;
  color: #341935 !important;
  transform: translateY(-1px);
}

.footer-social-link:focus-visible {
  outline: 3px solid rgba(234, 223, 235, 0.42);
  outline-offset: 3px;
}

@media screen and (max-width: 430px) {
  .footer-social {
    width: calc(100% - 24px);
    margin-top: 20px;
    gap: 7px;
  }

  .footer-social-label {
    width: 100%;
    margin: 0 0 2px;
  }

  .footer-social-link {
    flex: 1 1 128px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .footer-social-link {
    transition: none;
  }

  .footer-social-link:hover,
  .footer-social-link:focus-visible {
    transform: none;
  }
}

.footer-review-link,
.footer-review-link:link,
.footer-review-link:visited {
  border-color: rgba(230, 189, 86, 0.76);
  color: #fff3c8 !important;
}

/* Revision 90: streamlined review page; QR code stays on the separate print card. */
.review-page {
  box-sizing: border-box;
  width: min(1040px, calc(100% - 40px));
  margin: clamp(34px, 5vw, 64px) auto clamp(48px, 7vw, 82px);
  padding: clamp(44px, 6vw, 72px) clamp(24px, 4.8vw, 56px) clamp(48px, 6vw, 70px);
  border: 1px solid rgba(255, 255, 255, 0.5);
  border-radius: 26px;
  background: linear-gradient(145deg, #fbf9f7 0%, #f1ecef 100%);
  box-shadow: 0 24px 60px rgba(0, 0, 0, 0.24);
  color: #302936;
}

.review-hero {
  max-width: 810px;
  margin-bottom: clamp(30px, 5vw, 48px);
  padding: 0;
  background: transparent;
  font-family: var(--font-latin, -apple-system, BlinkMacSystemFont, "Helvetica Neue", Arial, sans-serif);
  text-align: left;
}

.review-hero .section-kicker {
  margin: 0 0 10px;
  color: #7a3f65;
  font-size: 0.8rem;
  font-weight: 750;
  letter-spacing: 0.14em;
  text-transform: uppercase;
}

.review-hero h1 {
  margin: 0 0 18px;
  padding: 0;
  color: #341935;
  font-size: clamp(2rem, 4.6vw, 3.55rem);
  line-height: 1.08;
  letter-spacing: -0.035em;
  text-align: left;
  text-wrap: balance;
}

.review-hero > p:not(.section-kicker) {
  max-width: 760px;
  margin: 0;
  color: #5b5260;
  font-size: clamp(1rem, 1.7vw, 1.13rem);
  line-height: 1.75;
}

.review-layout {
  display: grid;
  gap: 24px;
}

.review-platforms {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 16px;
}

.review-platform-card,
.review-platform-card:link,
.review-platform-card:visited {
  position: relative;
  display: grid;
  grid-template-columns: 48px minmax(0, 1fr) auto;
  gap: 14px;
  align-items: center;
  min-height: 138px;
  height: 100%;
  box-sizing: border-box;
  padding: 21px 20px;
  overflow: hidden;
  border: 1px solid rgba(52, 25, 53, 0.16);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 12px 30px rgba(52, 25, 53, 0.08);
  color: #341935;
  text-decoration: none;
  transition: transform 180ms ease, border-color 180ms ease, box-shadow 180ms ease;
}

.review-platform-card:hover,
.review-platform-card:focus-visible {
  transform: translateY(-3px);
  border-color: rgba(122, 63, 101, 0.5);
  box-shadow: 0 18px 38px rgba(52, 25, 53, 0.14);
}

.review-platform-card:focus-visible {
  outline: 3px solid rgba(122, 63, 101, 0.26);
  outline-offset: 3px;
}

.review-platform-logo {
  display: block;
  width: 48px;
  height: 48px;
  padding: 0;
  box-sizing: border-box;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  object-fit: contain;
}

.review-platform-copy strong,
.review-platform-copy span {
  display: block;
}

.review-platform-copy strong {
  margin-bottom: 5px;
  font-size: 1.02rem;
}

.review-platform-copy span {
  color: #6d6470;
  font-size: 0.86rem;
  line-height: 1.45;
}

.review-platform-arrow {
  color: #8d6d87;
  font-size: 1.25rem;
}

.review-neutral-note {
  grid-column: 1 / -1;
  align-self: start;
  margin: 4px 0 0;
  padding: 17px 19px;
  border-left: 4px solid #b99240;
  border-radius: 0 12px 12px 0;
  background: #faf6eb;
  color: #615743;
  font-size: 0.92rem;
  line-height: 1.65;
}

.review-follow {
  display: grid;
  grid-template-columns: minmax(0, 1fr) repeat(2, minmax(142px, auto));
  gap: 10px;
  align-items: center;
  margin: 0;
  padding: 16px;
  border: 1px solid rgba(52, 25, 53, 0.1);
  border-radius: 16px;
  background: rgba(244, 237, 243, 0.88);
  color: #655b68;
  font-size: 0.94rem;
}

.review-follow > span {
  padding-right: 8px;
}

.review-follow a,
.review-follow a:link,
.review-follow a:visited {
  display: inline-flex;
  width: 100%;
  min-height: 46px;
  box-sizing: border-box;
  align-items: center;
  justify-content: center;
  padding: 8px 15px;
  border: 1px solid rgba(52, 25, 53, 0.18);
  border-radius: 999px;
  background: #fffafc;
  color: #5f3157 !important;
  -webkit-text-fill-color: currentColor;
  font-weight: 700;
  text-decoration: none;
}

.review-follow .footer-social-icon {
  margin-right: 7px;
}

.review-platform-logo[src="/img/social/tripadvisor.png"],
.review-platform-logo[src="/img/social/dianping.png"] {
  border-radius: 10px;
  object-fit: cover;
}

.review-page + .words {
  background: rgba(24, 24, 24, 0.72);
}

.review-page + .words .copy {
  float: none;
  margin: 0;
  box-sizing: border-box;
  border-top: 1px solid rgba(234, 223, 235, 0.16);
  background: transparent;
  box-shadow: none;
  color: #eadfeb;
}

/* Revision 89: special set menus and local platform marks. */
.special-menu-section {
  width: min(100%, 980px);
  margin: 0 auto clamp(34px, 5vw, 58px);
  padding: clamp(24px, 4vw, 38px);
  box-sizing: border-box;
  border: 1px solid rgba(255, 255, 255, 0.4);
  border-radius: 24px;
  background: linear-gradient(145deg, rgba(255, 252, 244, 0.97), rgba(242, 235, 241, 0.96));
  box-shadow: 0 18px 46px rgba(30, 12, 34, 0.22);
  color: #302936;
  text-align: center;
}

.special-menu-heading {
  margin: 0 0 10px;
  color: #341935;
  font-size: clamp(1.65rem, 3vw, 2.35rem);
  line-height: 1.16;
}

.special-menu-intro {
  max-width: 720px;
  margin: 0 auto 24px;
  color: #665b66;
  font-size: 0.98rem;
  line-height: 1.65;
}

.special-menu-grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(16px, 3vw, 26px);
  align-items: start;
}

.special-menu-card {
  margin: 0;
  overflow: hidden;
  border: 1px solid rgba(52, 25, 53, 0.14);
  border-radius: 18px;
  background: #fff;
  box-shadow: 0 10px 26px rgba(52, 25, 53, 0.11);
}

.special-menu-link {
  position: relative;
  display: block;
  overflow: hidden;
  background: #efe8df;
}

.special-menu-link::after {
  content: "＋";
  position: absolute;
  right: 13px;
  bottom: 13px;
  display: grid;
  width: 42px;
  height: 42px;
  place-items: center;
  border: 1px solid rgba(255, 255, 255, 0.75);
  border-radius: 50%;
  background: rgba(52, 25, 53, 0.86);
  color: #fff;
  font: 700 1.25rem/1 var(--font-latin, sans-serif);
  box-shadow: 0 6px 16px rgba(0, 0, 0, 0.25);
  transition: transform 180ms ease, background-color 180ms ease;
}

.special-menu-link:hover::after,
.special-menu-link:focus-visible::after {
  transform: scale(1.08);
  background: #6f345f;
}

.special-menu-link:focus-visible {
  outline: 3px solid rgba(122, 63, 101, 0.38);
  outline-offset: -3px;
}

.special-menu-image {
  display: block;
  width: 100%;
  height: auto;
  aspect-ratio: 1181 / 2161;
  object-fit: cover;
}

.special-menu-card figcaption {
  padding: 15px 16px 17px;
  color: #4f3f4e;
  font-size: 0.96rem;
  font-weight: 750;
  line-height: 1.45;
}

@media (max-width: 640px) {
  .special-menu-section {
    width: calc(100% - 24px);
    padding: 23px 14px 20px;
    border-radius: 20px;
  }

  .special-menu-grid {
    grid-template-columns: 1fr;
  }
}

/* Revision 102: full restaurant story video with an optional external media
   feature. The locally hosted film remains the primary experience so the
   section still works where YouTube is unavailable. This surface uses the
   same solid brand colour, width, radius and shadow language as the other
   homepage cards so grey page-background strips do not frame the heading. */
.restaurant-media-section {
  width: min(1100px, calc(100% - 32px));
  margin: 26px auto 34px;
  padding: clamp(24px, 4vw, 40px);
  box-sizing: border-box;
  border: 1px solid rgba(213, 191, 214, 0.34);
  border-radius: 10px;
  background: #341935;
  box-shadow: 0 4px 8px rgba(0, 0, 0, 0.2), 0 6px 20px rgba(0, 0, 0, 0.19);
  color: #eadfeb;
}

.restaurant-media-header {
  width: 100%;
  max-width: 780px;
  margin: 0 auto 25px;
  padding: 0;
  border: 0;
  background: transparent;
  box-shadow: none;
  box-sizing: border-box;
  text-align: center;
}

.restaurant-media-header h2 {
  margin: 0 0 10px;
  color: #f5edf5;
  font-size: clamp(1.65rem, 3vw, 2.35rem);
  line-height: 1.16;
}

.restaurant-media-header p {
  margin: 0;
  color: #d6cbd6;
  font-size: 1rem;
  line-height: 1.65;
}

.restaurant-media-grid {
  display: grid;
  grid-template-columns: minmax(0, 720px);
  gap: 0;
  align-items: center;
  justify-content: center;
}

.restaurant-media-feature {
  min-width: 0;
  text-align: center;
}

.restaurant-media-kicker {
  margin: 0 0 9px;
  color: #d5ad5f;
  font-size: 0.82rem;
  font-weight: 800;
  letter-spacing: 0.08em;
  line-height: 1.4;
  text-transform: uppercase;
}

.restaurant-media-feature h3 {
  margin: 0 0 11px;
  color: #f5edf5;
  font-size: clamp(1.35rem, 2.5vw, 1.9rem);
  line-height: 1.3;
}

.restaurant-media-feature > p:not(.restaurant-media-kicker) {
  max-width: 620px;
  margin: 0 auto 20px;
  color: #d6cbd6;
  font-size: 0.98rem;
  line-height: 1.65;
}

.restaurant-youtube-link,
.restaurant-youtube-link:link,
.restaurant-youtube-link:visited {
  display: grid;
  grid-template-columns: 58px minmax(0, 1fr) auto;
  gap: 14px;
  min-height: 82px;
  width: 100%;
  max-width: 680px;
  margin: 0 auto;
  padding: 15px 17px;
  box-sizing: border-box;
  align-items: center;
  border: 1px solid rgba(213, 191, 214, 0.28);
  border-radius: 16px;
  background: rgba(255, 255, 255, 0.07);
  color: #f5edf5 !important;
  -webkit-text-fill-color: currentColor;
  text-decoration: none;
  box-shadow: 0 9px 24px rgba(15, 6, 16, 0.2);
  transition: transform 180ms ease, border-color 180ms ease, background-color 180ms ease, box-shadow 180ms ease;
}

.restaurant-youtube-link:hover,
.restaurant-youtube-link:focus-visible {
  border-color: rgba(213, 191, 214, 0.62);
  background: rgba(255, 255, 255, 0.12);
  color: #ffffff !important;
  transform: translateY(-2px);
  box-shadow: 0 13px 30px rgba(15, 6, 16, 0.28);
}

.restaurant-youtube-link:focus-visible {
  outline: 3px solid rgba(213, 191, 214, 0.46);
  outline-offset: 3px;
}

.restaurant-youtube-icon {
  display: block;
  width: 58px;
  height: 41px;
}

.restaurant-youtube-copy {
  min-width: 0;
}

.restaurant-youtube-copy strong,
.restaurant-youtube-copy span {
  display: block;
}

.restaurant-youtube-copy strong {
  margin-bottom: 4px;
  font-size: 1rem;
  line-height: 1.4;
}

.restaurant-youtube-copy span {
  color: #cdbfce;
  font-size: 0.84rem;
  line-height: 1.4;
}

.restaurant-youtube-arrow {
  color: #d5bfd6;
  font-size: 1.35rem;
  font-weight: 800;
}

@media (max-width: 760px) {
  .restaurant-media-section {
    width: calc(100% - 24px);
    padding: 24px 16px 22px;
    border-radius: 10px;
  }

  .restaurant-media-grid {
    grid-template-columns: minmax(0, 430px);
  }

  .restaurant-media-feature {
    text-align: center;
  }

  .restaurant-media-kicker {
    margin-top: 2px;
  }

  .restaurant-media-feature > p:not(.restaurant-media-kicker) {
    max-width: 520px;
    margin-right: auto;
    margin-left: auto;
  }

  .restaurant-youtube-link {
    text-align: left;
  }
}

@media (max-width: 390px) {
  .restaurant-youtube-link,
  .restaurant-youtube-link:link,
  .restaurant-youtube-link:visited {
    grid-template-columns: 48px minmax(0, 1fr) auto;
    gap: 11px;
    padding: 13px;
  }

  .restaurant-youtube-icon {
    width: 48px;
    height: 34px;
  }
}

@media (prefers-reduced-motion: reduce) {
  .restaurant-youtube-link {
    transition: none;
  }

  .restaurant-youtube-link:hover,
  .restaurant-youtube-link:focus-visible {
    transform: none;
  }
}

.review-follow a:hover,
.review-follow a:focus-visible {
  border-color: #7a3f65;
  background: #f7f0f6;
  color: #341935 !important;
}

@media (max-width: 820px) {
  .review-platforms {
    grid-template-columns: 1fr;
  }
}

@media (max-width: 580px) {
  .review-page {
    width: min(100% - 28px, 1120px);
    margin-top: 24px;
    margin-bottom: 34px;
    padding: 34px 18px 40px;
    border-radius: 20px;
  }

  .review-platforms {
    grid-template-columns: 1fr;
  }

  .review-platform-card,
  .review-platform-card:link,
  .review-platform-card:visited {
    grid-template-columns: 44px minmax(0, 1fr) 24px;
    min-height: 110px;
    padding: 18px 17px;
  }

  .review-platform-logo {
    width: 44px;
    height: 44px;
  }

  .review-neutral-note {
    grid-column: 1;
  }

  .review-follow {
    grid-template-columns: repeat(2, minmax(0, 1fr));
    padding: 15px;
  }

  .review-follow > span {
    grid-column: 1 / -1;
    padding: 0 0 2px;
    text-align: center;
  }

  .review-follow .footer-social-link {
    flex: none;
    min-width: 0;
    padding-inline: 10px;
  }
}

@media print {
  body {
    background: #fff !important;
  }

  body > .hideinmobile,
  body > .hamburger,
  body > .animateme,
  body > .holiday-closure-banner,
  body > .words,
  body > iframe {
    display: none !important;
  }

  .review-page {
    width: 100%;
    margin: 0;
    padding: 24px;
    border: 0;
    background: #fff;
    box-shadow: none;
  }

  .review-follow {
    display: none;
  }

  .review-layout {
    display: block;
  }

  .review-platform-card {
    box-shadow: none;
    break-inside: avoid;
  }
}

/* Revision 95: one consistent footer surface on every page and language. */
body > .words,
.review-page + .words {
  background: #341935;
}

body > .words > .copy,
.review-page + .words > .copy,
.recommendation-page > .copy {
  position: static;
  float: none;
  width: 100%;
  max-width: none;
  margin: 0;
  box-sizing: border-box;
  border-top: 1px solid rgba(234, 223, 235, 0.16);
  border-radius: 0 0 9px 9px;
  background: transparent;
  box-shadow: none;
  color: #eadfeb;
}

.recommendation-page > .copy {
  width: calc(100% + 60px);
  margin-right: -30px;
  margin-bottom: -30px;
  margin-left: -30px;
}

@media screen and (max-width: 760px) {
  .recommendation-page > .copy {
    width: calc(100% + 30px);
    margin-right: -15px;
    margin-bottom: -23px;
    margin-left: -15px;
  }
}
