/* Shared rhythm, optical alignment and input states. */
:root {
  --paper-faint: #a69b87;
  --ease-ui: cubic-bezier(.22,.61,.36,1);
}
a, button { -webkit-tap-highlight-color: rgba(201,163,92,.18); }
button { font: inherit; }
a:focus-visible, button:focus-visible {
  outline: 2px solid var(--gold-soft);
  outline-offset: 5px;
}
.lang-switch:focus-within { overflow: visible; }
.lang-switch button:first-child { border-radius: 999px 0 0 999px; }
.lang-switch button:last-child { border-radius: 0 999px 999px 0; }
.skip-link {
  position: fixed; left: 20px; top: 12px; z-index: 100;
  padding: 10px 18px; border-radius: 6px; background: var(--gold); color: var(--ink);
  transform: translateY(-180%);
}
.skip-link:focus { transform: none; }
header { background: linear-gradient(rgba(12,11,9,.82),rgba(12,11,9,.12)); }
.nav { gap: 24px; }
.brand { min-width: 0; flex-shrink: 0; }
.brand-name, .brand-sub { white-space: nowrap; }
.brand-name { display: block; letter-spacing: .08em; }
.brand br { display: none; }
.brand-sub { display: block; margin-top: 5px; letter-spacing: .2em; }
.nav-links { gap: clamp(18px,2vw,28px); }
.nav-links a { position: relative; white-space: nowrap; letter-spacing: .06em; padding-block: 10px; }
.nav-links a:not(.nav-book)::after {
  content: ""; position: absolute; bottom: 3px; left: 0; right: .06em; height: 1px;
  background: var(--gold-soft); transform: scaleX(0); transform-origin: left;
  transition: transform 200ms var(--ease-ui);
}
.nav-links a[aria-current="location"] { color: var(--gold-soft); }
.nav-links a[aria-current="location"]::after { transform: scaleX(1); }
.nav-book { padding-inline: 22px; }
.lang-switch button { min-width: 46px; min-height: 40px; padding: 8px 12px; line-height: 1.25; }
.menu-toggle { display: none; }
.hero h1 { text-indent: .06em; }
.hero-inner { width: 100%; min-width: 0; }
html[lang="en"] .hero h1 { text-indent: .015em; }
.hero-sub .key { display: inline-block; text-indent: .3em; }
html[lang="en"] .hero-sub .key { text-indent: .06em; }
.hero-cta { display: flex; justify-content: center; align-items: stretch; gap: 16px; }
.btn, .hero-cta .btn-gold {
  display: inline-grid; place-items: center; min-height: 58px;
  padding: 15px 36px; font-size: 17px; line-height: 1.5; letter-spacing: .12em; text-indent: .12em;
}
.btn-ghost { margin: 0; }
.btn, .nav-book, .nav-book-mobile, .book-cta-btn, .book-fallback a {
  transition: background 200ms var(--ease-ui), color 200ms var(--ease-ui), border-color 200ms var(--ease-ui), box-shadow 200ms var(--ease-ui), transform 200ms var(--ease-ui);
}
.hero-cta .btn-gold { box-shadow: 0 8px 26px rgba(201,163,92,.16); }
.sec-head { margin-bottom: 48px; }
.sec-lede { line-height: 1.9; }
html[lang="zh-CN"] .sec-lede { text-align: center; text-indent: 0; text-wrap: pretty; }
html[lang="zh-CN"] .about-copy p:not(.about-role):not(.about-scarce),
html[lang="zh-CN"] .svc p.desc, html[lang="zh-CN"] .rev blockquote {
  text-indent: 0; text-align: start; text-wrap: pretty;
}
.svc { overflow: visible; }
.svc:hover { transform: none; border-color: rgba(201,163,92,.16); }
.pkg-grid { gap: 20px; padding-top: 16px; }
.pkg-card { min-width: 0; padding-top: 38px; border-width: 1px; }
.pkg-card.rec, .pkg-card.rec:hover { transform: none; }
.pkg-card.rec { box-shadow: 0 8px 28px rgba(0,0,0,.24); }
.pkg-num, .pkg-price, .svc-opt .price { font-variant-numeric: lining-nums tabular-nums; }
.pkg-dur { min-height: 64px; }
.pkg-name { letter-spacing: .06em; text-indent: .06em; }
.pkg-price { margin-top: 18px; }
.pkg-price small { line-height: 1.6; letter-spacing: .06em; }
.pkg-cta span { box-shadow: none; letter-spacing: .08em; text-indent: .08em; }
.pkg-badge { top: 0; transform: translate(-50%,-50%); padding: 5px 16px; line-height: 1.5; letter-spacing: .12em; text-indent: .12em; box-shadow: none; }
/* These cards open bookings; an arrow avoids suggesting a radio selection. */
.pkg-radio { top: 14px; right: 14px; border: 0; color: var(--gold); }
.pkg-radio::after {
  content: "↗"; width: auto; height: auto; border-radius: 0; background: none;
  opacity: .65; transform: none; font: 20px/1 var(--sans);
  transition: opacity 200ms, transform 200ms var(--ease-ui);
}
.pkg-card.rec .pkg-radio::after { opacity: .85; }
.pass-head { flex-wrap: wrap; gap: 8px 12px; }
.svc-opt .dur { min-width: 0; }
.svc-opt .price { flex-shrink: 0; }
.svc-opt .dots { min-width: 12px; }
.about-grid { grid-template-columns: minmax(0,400px) minmax(0,1fr); gap: 56px; }
.about-copy .about-role { color: var(--gold-soft); font-size: 14px; letter-spacing: .12em; }
.stat-row { gap: 28px; }
.stat { min-width: 0; }
.stat .n { min-height: 44px; display: flex; align-items: center; font-variant-numeric: lining-nums; }
.stat .t { letter-spacing: .08em; }
.rev { margin: 0; min-width: 0; }
.rev .stars { line-height: 1; }
.rev figcaption { align-items: baseline; }
.rev figcaption > span:first-child { white-space: normal; }
.book-steps { display: grid; grid-template-columns: repeat(3,minmax(0,1fr)); gap: 24px; max-width: 920px; margin-inline: auto; }
.book-steps .step { align-items: start; letter-spacing: .02em; line-height: 1.7; }
.book-steps .num { font-family: var(--sans); font-size: 13px; margin-top: -2px; }
.book-cta-btn, .book-fallback a { box-shadow: 0 8px 24px rgba(201,163,92,.12); }
.book-cta-btn .cta-sub { font-family: var(--sans); font-size: 13px; letter-spacing: .02em; line-height: 1.7; }
.room-frame img { height: auto; }
.book-fallback a { font-size: 17px; padding: 15px 22px; }
.contact-grid { grid-template-columns: repeat(4,minmax(0,1fr)); column-gap: 28px; row-gap: 16px; }
.c-item {
  display: grid; grid-row: span 3; grid-template-rows: subgrid; gap: 16px;
  padding-top: 22px; align-content: start;
}
.c-item .c-label { margin: 0; line-height: 1.5; letter-spacing: .22em; }
.c-item .c-value { margin: 0; font-size: 16px; font-weight: 400; line-height: 1.75; }
.c-item .c-note, html[lang="zh-CN"] .c-item .c-note {
  margin: 0; padding: 0; font-size: 13px; line-height: 1.8; text-wrap: pretty;
}
.c-item .c-value a { padding: 3px 0; border: 0; text-decoration: underline; text-decoration-color: var(--gold-dim); text-decoration-thickness: 1px; text-underline-offset: 6px; transition: color 200ms, text-decoration-color 200ms; }
.c-item .c-value a[href^="mailto"] { white-space: normal; overflow-wrap: anywhere; font-size: inherit; letter-spacing: 0; }
.hours-table { align-self: start; width: 100%; font-family: var(--sans); font-size: 16px; font-weight: 400; line-height: 1.75; border-spacing: 0; }
.hours-table td { padding: 0 0 8px; vertical-align: baseline; }
.hours-table td:last-child { font-family: inherit; font-variant-numeric: lining-nums tabular-nums; letter-spacing: 0; white-space: nowrap; padding-left: 12px; }
.hours-table tr:last-child td { padding-bottom: 0; }
html[lang="en"] .hours-table { font-size: 16px; }
.c-item a[href^="tel"] { font-variant-numeric: lining-nums tabular-nums; }
.disclaimer p { text-wrap: pretty; }
html[lang="zh-CN"] .disclaimer p:first-child { text-indent: 0; text-align: start; }
.foot-emblem { transform: translateX(-8px); }
.foot small { display: block; }

/* Hover is reserved for devices with a pointer; focus remains explicit. */
@media (hover: hover) and (pointer: fine) {
  .brand:hover .brand-name { color: var(--gold-soft); }
  .nav-links a:not(.nav-book):hover::after { transform: scaleX(1); }
  .lang-switch button:not(.active):hover { color: var(--paper); background: rgba(201,163,92,.12); }
  .btn:hover, .nav-book:hover, .nav-book-mobile:hover, .book-cta-btn:hover, .book-fallback a:hover { transform: translateY(-2px); box-shadow: 0 8px 26px rgba(201,163,92,.2); }
  .btn-ghost:hover { background: rgba(201,163,92,.08); }
  .pkg-card:hover, .pkg-card.rec:hover { transform: translateY(-4px); border-color: var(--gold-soft); box-shadow: 0 14px 32px rgba(0,0,0,.35); }
  .pkg-card:hover .pkg-radio::after { transform: translate(2px,-2px); opacity: 1; }
  .c-item .c-value a:hover { color: var(--gold-soft); text-decoration-color: var(--gold-soft); }
}
.btn:active, .nav-book:active, .nav-book-mobile:active, .book-cta-btn:active, .book-fallback a:active, .pkg-card:active, .pkg-card.rec:active { transform: translateY(1px); box-shadow: none; }
.pkg-card:focus-visible { outline: 2px solid var(--gold-soft); outline-offset: 5px; transform: none; }
.pkg-card:focus-visible .pkg-cta span { background: var(--gold-soft); }
.brand-name { transition: color 200ms; }

@media (max-width: 1150px) {
  .contact-grid { grid-template-columns: repeat(2,minmax(0,1fr)); column-gap: 40px; }
  .c-item:nth-child(n+3) { margin-top: 24px; }
  .hours-table { max-width: 330px; }
  html[lang="en"] .hours-table { font-size: 16px; }
}
@media (max-width: 1040px) {
  header { background: rgba(12,11,9,.94); backdrop-filter: blur(14px); border-bottom-color: var(--line); }
  .nav { position: relative; flex-wrap: wrap; gap: 10px 14px; padding: 12px 24px; }
  .brand-name { font-size: 17px; }
  .brand { flex: 1 1 0; margin-right: 0; }
  .brand > span:last-child { min-width: 0; }
  html[lang="en"] .brand-name { white-space: normal; max-width: 155px; font-size: 15px; line-height: 1.3; }
  .brand-sub { display: none; }
  .menu-toggle { display: grid; place-items: center; width: 42px; height: 42px; border: 1px solid var(--line); border-radius: 50%; background: transparent; color: var(--paper); cursor: pointer; }
  .menu-toggle svg { width: 20px; height: 20px; }
  .menu-toggle[aria-expanded="true"] { color: var(--gold-soft); background: rgba(201,163,92,.12); }
  .nav-links { display: none; position: absolute; top: 100%; left: 0; right: 0; background: #12100d; border-bottom: 1px solid var(--line); padding: 18px 24px 24px; box-shadow: 0 18px 24px rgba(0,0,0,.24); }
  header.menu-open .nav-links { display: grid; grid-template-columns: 1fr 1fr; gap: 10px 22px; }
  .nav-links a { padding: 12px 0; }
  .nav-links .nav-book { display: none; }
  .nav-book-mobile { display: block; order: 3; flex: 1 1 100%; text-align: center; background: var(--gold); color: #17130a; text-decoration: none; font: 600 15px/1.4 var(--serif); letter-spacing: .12em; text-indent: .12em; padding: 12px 16px; border-radius: 8px; box-shadow: none; }
  section { scroll-margin-top: 150px; }
  .hero-inner { padding-top: 182px; }
  .about-grid { grid-template-columns: 1fr; gap: 36px; }
}
@media (max-width: 760px) {
  .wrap { padding: 76px 24px; }
  .nav { padding-inline: 18px; gap: 10px; }
  .brand-name { font-size: 15px; letter-spacing: .02em; }
  .brand { gap: 9px; }
  .seal { width: 36px; height: 36px; font-size: 22px; }
  .lang-switch button { padding-inline: 10px; min-width: 42px; }
  .menu-toggle { width: 40px; height: 40px; }
  .hero-over { line-height: 1.9; }
  .hero .nw { white-space: normal; }
  .hero h1 .nw { white-space: nowrap; }
  .hero-cta { flex-direction: row; flex-wrap: wrap; gap: 12px; }
  .btn, .hero-cta .btn-gold { min-height: 54px; padding: 14px 28px; font-size: 16px; }
  .hero-sub .key { text-indent: .18em; }
  .svc { padding: 28px 22px; }
  .pkg-grid { gap: 26px; }
  .pkg-card { padding: 30px 24px 24px; }
  .pkg-dur { min-height: 56px; }
  .book-steps { grid-template-columns: 1fr; gap: 18px; max-width: 440px; }
  .rev { padding: 28px 24px; }
  .book-cta { padding: 24px 20px; }
  .book-cta-btn { padding: 20px 16px; }
}
@media (max-width: 540px) {
  .contact-grid { grid-template-columns: 1fr; gap: 28px; }
  .c-item { grid-row: auto; grid-template-rows: auto auto auto; gap: 12px; padding-top: 20px; }
  .c-item:nth-child(n+3) { margin-top: 0; }
  .c-item .c-note { max-width: 38ch; }
  .c-item .c-value a { display: inline-block; }
  .hero h1 { font-size: clamp(40px,10.8vw,58px); }
  html[lang="en"] .hero h1 { font-size: clamp(32px,8.5vw,44px); }
  html[lang="en"] .hero h1 .nw { white-space: normal; }
  .hero-inner { padding-inline: 20px; }
  .hero-scarce { margin-bottom: 30px; }
  .hero-cta { flex-direction: column; align-items: stretch; max-width: 300px; margin-inline: auto; }
  .stat-row { display: grid; grid-template-columns: 1.3fr 1fr 1fr; gap: 16px; }
  .stat .t { font-size: 12px; line-height: 1.7; }
  .stat .n { font-size: 32px; }
  .book-note, .disclaimer { padding: 18px; }
}
@media (max-width: 370px) {
  .nav { padding-inline: 12px; gap: 8px; }
  .brand-name { font-size: 13px; }
  .brand .seal { width: 30px; height: 30px; font-size: 19px; }
  .lang-switch button { min-width: 36px; padding-inline: 8px; }
  .menu-toggle { width: 36px; height: 36px; }
}
@media (hover: none) {
  .pkg-card:hover, .pkg-card.rec:hover, .btn:hover, .book-cta-btn:hover, .book-fallback a:hover { transform: none; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto !important; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
  .rv.pre { opacity: 1; transform: none; }
  .btn:hover, .pkg-card:hover, .pkg-card.rec:hover, .book-cta-btn:hover, .nav-book:hover, .nav-book-mobile:hover, .book-fallback a:hover { transform: none; }
}
