/* ==========================================================================
   Quanjude Peking Duck Ottawa — design system
   Palette: deep Chinese red (primary), rice-paper ivory, charcoal ink, dark wood, restrained antique gold.
   ========================================================================== */
:root{
  --red-950:#260607; --red-900:#430b0d; --red-800:#640f12; --red-700:#821517; --red-600:#9c1c1d; --red-500:#b72d27;
  --ivory:#f7f1e5; --paper:#efe6d2; --paper-2:#e3d6b9; --card:#fbf7ee;
  --ink:#1c1714; --ink-2:#463c35; --ink-3:#7b6e62;
  --wood-950:#150d09; --wood-900:#1f140e; --wood-800:#2c1d14; --wood-700:#3f2b1d;
  --gold:#b69556; --gold-2:#d0b479; --gold-3:#8c7140;
  --line:rgba(44,29,20,.15); --line-inv:rgba(247,241,229,.18);
  --serif:"Cormorant Garamond","Noto Serif SC","Songti SC","STSong",Georgia,serif;
  --sans:"Jost","Noto Sans SC","PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,-apple-system,"Segoe UI",sans-serif;
  --maxw:1240px; --gut:clamp(18px,4vw,48px); --radius:3px;
  --ease:cubic-bezier(.22,.7,.2,1);
  --header-h:76px; --bar-h:64px;
}
*,*::before,*::after{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;scroll-padding-top:calc(var(--header-h) + 14px)}
body{margin:0;background:var(--ivory);color:var(--ink);font:400 17px/1.65 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}
:lang(zh) body,body:lang(zh){line-height:1.85;letter-spacing:.01em}
img,video,svg{display:block;max-width:100%;height:auto}
a{color:inherit;text-decoration-color:var(--gold);text-underline-offset:.2em}
a:hover{color:var(--red-700)}
button{font:inherit;color:inherit;cursor:pointer}
:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:2px}
.skip{position:absolute;left:-999px;top:8px;background:var(--ivory);color:var(--ink);padding:10px 16px;z-index:200}
.skip:focus{left:8px}
.sr{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap}

h1,h2,h3,h4{font-family:var(--serif);font-weight:500;line-height:1.08;letter-spacing:-.005em;margin:0 0 .5em;text-wrap:balance}
:lang(zh) h1,:lang(zh) h2,:lang(zh) h3,:lang(zh) h4{font-weight:700;letter-spacing:.02em;line-height:1.28}
h1{font-size:clamp(2.7rem,6.2vw,5.6rem)}
h2{font-size:clamp(2.1rem,4.2vw,3.5rem)}
h3{font-size:clamp(1.45rem,2.2vw,1.9rem)}
h4{font-size:1.2rem}
:lang(zh) h1{font-size:clamp(2.3rem,5.4vw,4.6rem)}
:lang(zh) h2{font-size:clamp(1.85rem,3.6vw,3rem)}
:lang(zh) h3{font-size:clamp(1.3rem,2vw,1.65rem)}
p{margin:0 0 1.05em;text-wrap:pretty}
.lede{font-size:clamp(1.12rem,1.5vw,1.32rem);color:var(--ink-2);max-width:44rem}
.eyebrow{font:500 .76rem/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--red-700);display:flex;gap:.9em;align-items:center;margin:0 0 1.3rem}
.eyebrow::before{content:"";width:34px;height:1px;background:currentColor;opacity:.7}
:lang(zh) .eyebrow{letter-spacing:.3em;font-size:.85rem}
.on-dark .eyebrow,.dark .eyebrow{color:var(--gold-2)}
.muted{color:var(--ink-3)}
small,.small{font-size:.88rem}
.num{font-variant-numeric:lining-nums tabular-nums}
.zh-inline{font-family:"Noto Serif SC","Songti SC",serif;font-weight:600}

.wrap{width:100%;max-width:calc(var(--maxw) + var(--gut)*2);margin-inline:auto;padding-inline:var(--gut)}
.wrap-narrow{max-width:calc(820px + var(--gut)*2)}
section{position:relative}
.sec{padding-block:clamp(64px,10vw,140px)}
.sec-tight{padding-block:clamp(44px,6vw,84px)}
.paper{background:var(--paper)}
.card-bg{background:var(--card)}
.dark{background:var(--wood-900);color:var(--ivory)}
.dark .lede,.dark p{color:rgba(247,241,229,.82)}
.dark .muted{color:rgba(247,241,229,.55)}
.red{background:var(--red-800);color:var(--ivory)}
.red .lede,.red p{color:rgba(247,241,229,.88)}
.lattice{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='56' height='56'%3E%3Cg fill='none' stroke='%23b69556' stroke-width='1' opacity='.32'%3E%3Cpath d='M0 .5H56M0 28.5H56M.5 0V56M28.5 0V56'/%3E%3Cpath d='M14 14h28v28H14z'/%3E%3C/g%3E%3C/svg%3E");background-size:56px 56px}
.grid{display:grid;gap:clamp(18px,3vw,40px)}
.g2{grid-template-columns:repeat(2,1fr)}.g3{grid-template-columns:repeat(3,1fr)}.g4{grid-template-columns:repeat(4,1fr)}
.split{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(28px,6vw,96px);align-items:center}
.split.rev{grid-template-columns:.95fr 1.05fr}.split.rev>:first-child{order:2}
@media (max-width:900px){
  .g2,.g3,.g4{grid-template-columns:1fr}.g4.keep2,.g3.keep2{grid-template-columns:repeat(2,1fr)}
  .split,.split.rev{grid-template-columns:1fr}.split.rev>:first-child{order:0}
}
.center{text-align:center}.center .lede{margin-inline:auto}.center .eyebrow{justify-content:center}
.center .eyebrow::after{content:"";width:34px;height:1px;background:currentColor;opacity:.7}

/* ---- buttons ---------------------------------------------------------------- */
.btn{display:inline-flex;align-items:center;justify-content:center;gap:.65em;min-height:50px;padding:.9em 1.7em;border:1px solid var(--red-700);background:var(--red-700);color:#fff;
  font:500 .86rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;border-radius:var(--radius);transition:background .35s var(--ease),color .35s var(--ease),border-color .35s,transform .35s var(--ease)}
:lang(zh) .btn{letter-spacing:.2em;font-size:.95rem}
.btn:hover{background:var(--red-900);border-color:var(--red-900);color:#fff;transform:translateY(-1px)}
.btn.ghost{background:transparent;color:inherit;border-color:currentColor}
.btn.ghost:hover{background:var(--ivory);color:var(--ink);border-color:var(--ivory)}
.dark .btn.ghost:hover,.on-dark .btn.ghost:hover{background:var(--ivory);color:var(--ink)}
.btn.gold{background:var(--gold);border-color:var(--gold);color:var(--wood-950)}
.btn.gold:hover{background:var(--gold-2);border-color:var(--gold-2);color:var(--wood-950)}
.btn svg{width:1.15em;height:1.15em}
.btn-row{display:flex;flex-wrap:wrap;gap:12px;align-items:center}
.link-arrow{display:inline-flex;gap:.6em;align-items:center;font:500 .82rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;border-bottom:1px solid var(--gold);padding-bottom:.45em}
.link-arrow::after{content:"→";transition:transform .3s var(--ease)}
.link-arrow:hover::after{transform:translateX(5px)}
:lang(zh) .link-arrow{letter-spacing:.14em;font-size:.92rem}

/* ---- seal ------------------------------------------------------------------- */
.seal{display:inline-grid;place-items:center;width:54px;height:54px;background:var(--red-700);color:var(--ivory);font:700 .98rem/1 "Noto Serif SC",var(--serif);letter-spacing:.02em;border-radius:3px;
  box-shadow:inset 0 0 0 2px var(--red-700),inset 0 0 0 3.5px rgba(247,241,229,.55);transform:rotate(-3deg)}
.seal.lg{width:84px;height:84px;font-size:1.5rem}

/* ---- header ----------------------------------------------------------------- */
.hdr{position:fixed;inset:0 0 auto 0;z-index:90;height:var(--header-h);display:flex;align-items:center;color:var(--ivory);transition:background .45s var(--ease),box-shadow .45s,color .45s,height .45s,transform .45s var(--ease)}
.hdr::before{content:"";position:absolute;inset:0;background:linear-gradient(to bottom,rgba(21,13,9,.7),rgba(21,13,9,0));pointer-events:none;transition:opacity .4s}
.hdr.solid{background:rgba(247,241,229,.96);color:var(--ink);box-shadow:0 1px 0 var(--line);backdrop-filter:saturate(1.3) blur(10px);height:66px}
.hdr.solid::before{opacity:0}
.hdr.hide{transform:translateY(-100%)}
.hdr .wrap{display:flex;align-items:center;gap:clamp(14px,2.4vw,36px);width:100%}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none;color:inherit;line-height:1}
.brand:hover{color:inherit}
.brand-zh{font:700 1.7rem/1 "Noto Serif SC","Songti SC",serif;letter-spacing:.06em}
.brand-logo{display:block;height:44px;width:auto;transition:height .45s var(--ease),filter .45s}
.hdr:not(.solid) .brand-logo{filter:drop-shadow(0 0 1px rgba(247,241,229,.55)) drop-shadow(0 2px 10px rgba(0,0,0,.45))}
.hdr.solid .brand-logo{height:38px}
.ftr-logo{display:block;height:64px;width:auto}
.brand-en{display:flex;flex-direction:column;gap:5px;font:500 .62rem/1 var(--sans);letter-spacing:.3em;text-transform:uppercase;opacity:.85;border-left:1px solid currentColor;padding-left:12px}
.brand-en b{font-weight:600;letter-spacing:.34em}
.nav{margin-left:auto;display:flex;gap:clamp(12px,1.6vw,26px);align-items:center}
.nav a{font:500 .76rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;text-decoration:none;position:relative;padding:.6em 0;white-space:nowrap}
:lang(zh) .nav a{letter-spacing:.12em;font-size:.92rem}
.nav a::after{content:"";position:absolute;left:0;right:0;bottom:.1em;height:1px;background:var(--gold);transform:scaleX(0);transform-origin:left;transition:transform .4s var(--ease)}
.nav a:hover::after,.nav a[aria-current="page"]::after{transform:scaleX(1)}
.nav a:hover{color:inherit}
.hdr-actions{display:flex;align-items:center;gap:16px}
.lang{position:relative}
.lang>button{white-space:nowrap;background:none;border:0;display:flex;align-items:center;gap:.5em;font:500 .78rem/1 var(--sans);letter-spacing:.14em;padding:.7em .2em}
.lang ul{position:absolute;right:0;top:calc(100% + 6px);margin:0;padding:6px;list-style:none;background:var(--ivory);color:var(--ink);min-width:150px;box-shadow:0 12px 36px rgba(0,0,0,.25);border-radius:3px;display:none}
.lang.open ul{display:block}
.lang a{display:block;padding:.65em .9em;text-decoration:none;font-size:.95rem;letter-spacing:0;text-transform:none;border-radius:2px}
.lang a:hover,.lang a[aria-current="true"]{background:var(--paper)}
.hdr .btn{min-height:42px;padding:.7em 1.2em;font-size:.74rem;white-space:nowrap}
.burger{display:none;background:none;border:0;width:44px;height:44px;position:relative}
.burger i,.burger i::before,.burger i::after{content:"";position:absolute;left:11px;right:11px;height:1.5px;background:currentColor;transition:transform .35s var(--ease),opacity .2s}
.burger i{top:21px}.burger i::before{top:-7px;left:0;right:0}.burger i::after{top:7px;left:0;right:0}
.menu-open .burger i{background:transparent}.menu-open .burger i::before{transform:translateY(7px) rotate(45deg)}.menu-open .burger i::after{transform:translateY(-7px) rotate(-45deg)}
@media (max-width:1120px){
  .nav{display:none}.burger{display:block;margin-left:auto}.hdr-actions .btn{display:none}.hdr-actions{margin-left:0}
  .menu-open .hdr{background:var(--wood-900)!important;color:var(--ivory)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;transform:none!important;height:var(--header-h)!important}
  .menu-open .hdr::before{display:none}
  .nav.open{display:flex;position:fixed;inset:var(--header-h) 0 0 0;background:var(--wood-950);color:var(--ivory);flex-direction:column;align-items:flex-start;justify-content:flex-start;gap:0;padding:28px var(--gut) calc(var(--bar-h) + 30px);overflow:auto;margin:0}
  .nav.open a{font:500 2rem/1.1 var(--serif);letter-spacing:0;text-transform:none;padding:.5em 0;border-bottom:1px solid var(--line-inv);width:100%}
  :lang(zh) .nav.open a{font-size:1.6rem;letter-spacing:.06em}
  .nav.open a::after{display:none}
}
@media (max-width:560px){.brand-en{display:none}}

/* ---- mobile action bar --------------------------------------------------------- */
.actionbar{display:none}
@media (max-width:820px){
  body{padding-bottom:var(--bar-h)}
  .hero-ctrl{bottom:calc(var(--bar-h) + 16px)}
  .hero-inner{padding-bottom:calc(var(--bar-h) + 44px)}
  .actionbar{display:grid;grid-template-columns:repeat(4,1fr);position:fixed;inset:auto 0 0 0;z-index:95;height:var(--bar-h);background:var(--wood-950);border-top:1px solid rgba(182,149,86,.4);padding-bottom:env(safe-area-inset-bottom)}
  .actionbar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;color:var(--ivory);text-decoration:none;font:500 .66rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase}
  :lang(zh) .actionbar a{font-size:.74rem;letter-spacing:.08em}
  .actionbar a:first-child{background:var(--red-700)}
  .actionbar svg{width:20px;height:20px}
}

/* ---- hero ------------------------------------------------------------------- */
.hero{position:relative;min-height:100svh;display:grid;align-items:end;color:var(--ivory);background:var(--wood-950);overflow:hidden;isolation:isolate}
.hero-media{position:absolute;inset:-4% 0 -4% 0;z-index:-2;will-change:transform}
.hero-media video,.hero-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:60% 50%}
.hero-poster{opacity:1;transition:opacity 1s var(--ease)}
.hero.playing .hero-poster{opacity:0}
.hero::before{content:"";position:absolute;inset:0;z-index:-1;background:
  linear-gradient(90deg,rgba(21,13,9,.82) 0%,rgba(21,13,9,.5) 42%,rgba(21,13,9,.08) 78%),
  linear-gradient(0deg,rgba(21,13,9,.85) 0%,rgba(21,13,9,0) 38%),
  linear-gradient(180deg,rgba(21,13,9,.5),rgba(21,13,9,0) 22%)}
.hero-inner{padding-block:calc(var(--header-h) + 60px) clamp(58px,9vh,110px);width:100%}
.hero h1{max-width:12ch;font-size:clamp(3rem,8vw,7.4rem);margin-bottom:.28em;color:#fff;text-shadow:0 2px 40px rgba(0,0,0,.35)}
:lang(zh) .hero h1{max-width:9em;font-size:clamp(2.6rem,6.6vw,5.8rem)}
.hero .lede{color:rgba(247,241,229,.92);max-width:36rem;margin-bottom:2rem}
.hero .eyebrow{color:var(--gold-2)}
.hero-meta{display:flex;flex-wrap:wrap;gap:6px 28px;margin-top:clamp(28px,5vh,52px);font:500 .78rem/1.4 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:rgba(247,241,229,.75)}
:lang(zh) .hero-meta{letter-spacing:.1em;font-size:.88rem}
.hero-meta a{text-decoration:none;border-bottom:1px solid rgba(182,149,86,.6)}
.hero-ctrl{position:absolute;right:var(--gut);bottom:clamp(20px,4vh,44px);display:flex;gap:10px;align-items:center;z-index:3}
.vid-toggle{width:42px;height:42px;border-radius:50%;background:rgba(21,13,9,.5);border:1px solid rgba(247,241,229,.45);display:grid;place-items:center;backdrop-filter:blur(4px)}
.vid-toggle svg{width:16px;height:16px}
.vid-toggle .i-play{display:none}.hero.paused .vid-toggle .i-play{display:block}.hero.paused .vid-toggle .i-pause{display:none}
.scroll-cue{position:absolute;left:50%;bottom:18px;width:1px;height:46px;background:linear-gradient(var(--gold-2),transparent);transform-origin:top;animation:cue 2.4s var(--ease) infinite;display:none}
@keyframes cue{0%{transform:scaleY(0)}60%{transform:scaleY(1)}100%{transform:scaleY(1);opacity:0}}
@media (min-width:900px){.scroll-cue{display:block}}
.vert-tag{position:absolute;right:clamp(14px,3vw,46px);top:calc(var(--header-h) + 40px);writing-mode:vertical-rl;font:600 1.15rem/1.8 "Noto Serif SC","Songti SC",serif;letter-spacing:.5em;color:rgba(247,241,229,.78);z-index:2;display:none}
@media (min-width:1000px){.vert-tag{display:block}}

/* ---- reveal ------------------------------------------------------------------- */
.js .rv{opacity:0;transform:translateY(26px);transition:opacity 1s var(--ease),transform 1s var(--ease);transition-delay:var(--d,0s)}
.js .rv.in{opacity:1;transform:none}
.js .rv-img{overflow:hidden}
.js .rv-img img{opacity:0;transform:scale(1.1);transition:opacity 1.2s var(--ease),transform 1.8s var(--ease)}
.js .rv-img.in img{opacity:1;transform:none}
@media (prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .js .rv,.js .rv-img img{opacity:1;transform:none;transition:none}
  .scroll-cue{animation:none}
  *{animation-duration:.01ms!important;transition-duration:.01ms!important}
}

/* ---- intro pillars ------------------------------------------------------------------ */
.pillars{display:grid;grid-template-columns:repeat(3,1fr);border-top:1px solid var(--line);border-bottom:1px solid var(--line)}
.pillar{padding:clamp(26px,4vw,52px) clamp(18px,3vw,40px);border-right:1px solid var(--line)}
.pillar:last-child{border-right:0}
.pillar .big{font:500 clamp(3rem,6vw,5rem)/1 var(--serif);color:var(--red-700);display:block;margin-bottom:.1em}
.pillar h3{font-size:1.5rem}
.pillar p{color:var(--ink-2);margin:0}
@media (max-width:820px){.pillars{grid-template-columns:1fr}.pillar{border-right:0;border-bottom:1px solid var(--line)}.pillar:last-child{border-bottom:0}}

/* ---- figures ------------------------------------------------------------------------- */
.fig{margin:0;position:relative;overflow:hidden;background:var(--paper-2);border-radius:var(--radius)}
.fig img{width:100%;height:100%;object-fit:cover}
.fig figcaption{font-size:.8rem;color:var(--ink-3);padding:.7em 0 0}
.fig.tall{aspect-ratio:4/5}.fig.wide{aspect-ratio:16/9}.fig.sq{aspect-ratio:1}.fig.land{aspect-ratio:4/3}
.fig.bleed{border-radius:0}
.cap-over{position:absolute;left:0;right:0;bottom:0;padding:48px 20px 18px;background:linear-gradient(transparent,rgba(21,13,9,.82));color:var(--ivory);font-size:.9rem}
.ink-band{position:relative;height:clamp(180px,32vw,420px);overflow:hidden}
.ink-band img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 40%;mix-blend-mode:multiply}

/* ---- signature dish cards (large editorial) ------------------------------------------ */
.sig-grid{display:grid;grid-template-columns:repeat(12,1fr);gap:clamp(14px,2vw,26px)}
.sig{position:relative;overflow:hidden;background:var(--wood-800);color:var(--ivory);grid-column:span 4;min-height:420px;display:flex;align-items:flex-end;border-radius:var(--radius);isolation:isolate}
.sig.big{grid-column:span 7;min-height:560px}.sig.mid{grid-column:span 5;min-height:560px}.sig.wide{grid-column:span 8}
.sig img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;transition:transform 1.4s var(--ease)}
.sig:hover img{transform:scale(1.04)}
.sig::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,rgba(21,13,9,.88) 0%,rgba(21,13,9,.1) 60%,rgba(21,13,9,0) 100%)}
.sig-body{padding:clamp(18px,2.4vw,32px);width:100%}
.sig .zh{font:600 1rem/1 "Noto Serif SC",serif;letter-spacing:.14em;color:var(--gold-2);display:block;margin-bottom:.6em}
.sig h3{margin:0 0 .25em;color:#fff;font-size:clamp(1.55rem,2.6vw,2.2rem)}
.sig p{margin:0;font-size:.95rem;color:rgba(247,241,229,.85);max-width:34rem}
.sig .price{font:500 1.15rem/1 var(--serif);color:var(--gold-2);position:absolute;top:18px;right:20px}
@media (max-width:900px){.sig,.sig.big,.sig.mid,.sig.wide{grid-column:span 12;min-height:380px}}

/* ---- steps ------------------------------------------------------------------- */
.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,3vw,40px);counter-reset:s}
.step{counter-increment:s}
.step .fig{aspect-ratio:4/3;margin-bottom:20px}
.step h3::before{content:counter(s,decimal-leading-zero);display:block;font:500 .8rem/1 var(--sans);letter-spacing:.24em;color:var(--red-700);margin-bottom:.9em}
.dark .step h3::before{color:var(--gold-2)}
@media (max-width:900px){.steps{grid-template-columns:1fr}}
.steps.four{grid-template-columns:repeat(4,1fr)}@media (max-width:1000px){.steps.four{grid-template-columns:repeat(2,1fr)}}@media (max-width:600px){.steps.four{grid-template-columns:1fr}}

/* ---- timeline ----------------------------------------------------------------- */
.tl{position:relative;margin:0;padding:0;list-style:none}
.tl::before{content:"";position:absolute;left:calc(var(--yr,150px) + 18px);top:8px;bottom:8px;width:1px;background:linear-gradient(var(--gold),rgba(182,149,86,.2))}
.tl li{display:grid;grid-template-columns:var(--yr,150px) 1fr;gap:36px;padding-bottom:clamp(34px,5vw,64px);position:relative}
.tl li::before{content:"";position:absolute;left:calc(var(--yr,150px) + 13px);top:.9em;width:11px;height:11px;border-radius:50%;background:var(--red-600);box-shadow:0 0 0 4px var(--ivory)}
.dark .tl li::before{box-shadow:0 0 0 4px var(--wood-900);background:var(--gold)}
.tl .yr{font:500 clamp(2.2rem,4vw,3.6rem)/1 var(--serif);color:var(--red-700);text-align:right;overflow-wrap:anywhere}
.tl .yr.sm{font-size:clamp(1.5rem,2.4vw,2rem);padding-top:.35em}
.dark .tl .yr{color:var(--gold-2)}
.tl h3{font-size:1.6rem;margin-bottom:.3em}
.tl p{margin:0;max-width:40rem}
@media (max-width:640px){.tl{--yr:0px}.tl::before{left:5px}.tl li{grid-template-columns:1fr;gap:6px;padding-left:34px}.tl li::before{left:0}.tl .yr{text-align:left;font-size:2.2rem}}

/* ---- occasion tiles -------------------------------------------------------------- */
.occ{display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.occ a,.occ div{background:var(--ivory);padding:clamp(22px,3vw,38px);text-decoration:none;display:block;transition:background .4s}
.occ a:hover{background:var(--card)}
.occ .ic{width:34px;height:34px;color:var(--red-700);margin-bottom:18px}
.occ h3{font-size:1.45rem;margin-bottom:.35em}.occ p{margin:0;color:var(--ink-2);font-size:.98rem}
@media (max-width:900px){.occ{grid-template-columns:1fr 1fr}}@media (max-width:560px){.occ{grid-template-columns:1fr}}

/* ---- info panel (visit) -------------------------------------------------------- */
.facts{display:grid;gap:0;margin:0}
.facts>div{display:grid;grid-template-columns:150px 1fr;gap:18px;padding:16px 0;border-bottom:1px solid var(--line)}
.dark .facts>div{border-color:var(--line-inv)}
.facts dt{font:500 .74rem/1.6 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--red-700);padding-top:.3em}
:lang(zh) .facts dt{letter-spacing:.14em;font-size:.86rem}
.dark .facts dt{color:var(--gold-2)}
.facts dd{margin:0}
.facts a{text-decoration-color:var(--gold)}
@media (max-width:560px){.facts>div{grid-template-columns:1fr;gap:2px}}
.hours{width:100%;border-collapse:collapse;font-variant-numeric:tabular-nums}
.hours td{padding:5px 0;border-bottom:1px dotted var(--line)}.hours td:last-child{text-align:right}
.hours tr.today td{color:var(--red-700);font-weight:600}
.open-badge{display:inline-flex;gap:.5em;align-items:center;font:500 .76rem/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;padding:.55em .9em;border:1px solid currentColor;border-radius:99px}
.open-badge::before{content:"";width:8px;height:8px;border-radius:50%;background:currentColor}
.open-badge.open{color:#2f7a4a}.open-badge.closed{color:var(--red-600)}
.hours-with-badge{display:flex;flex-wrap:wrap;align-items:center;gap:.45rem .85rem}
.hours-with-badge .hours-line{margin:0}
.map-box{position:relative;background:#f1e9d7;border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.map-box svg{width:100%;height:auto}
.map-legend{display:flex;flex-wrap:wrap;gap:8px 22px;padding:14px 18px;border-top:1px solid var(--line);font-size:.86rem;color:var(--ink-2);background:var(--card)}
.map-legend i{display:inline-block;width:12px;height:12px;border-radius:50%;margin-right:.5em;vertical-align:-1px}
.parking-list{list-style:none;margin:0;padding:0;display:grid;gap:0}
.parking-list li{display:grid;grid-template-columns:34px 1fr auto;gap:14px;padding:14px 0;border-bottom:1px solid var(--line);align-items:start}
.parking-list .pin{width:30px;height:30px;border-radius:50%;background:var(--ink);color:#fff;display:grid;place-items:center;font:600 .82rem/1 var(--sans)}
.parking-list b{display:block;font-weight:500}.parking-list span.sm{font-size:.88rem;color:var(--ink-3)}
.parking-list .walk{font:500 .84rem/1.2 var(--sans);color:var(--red-700);white-space:nowrap}
.walk-figs{display:grid;grid-template-columns:1fr 1fr;gap:clamp(16px,2.4vw,28px);margin-bottom:clamp(48px,7vw,88px)}
.walk-fig{margin:0}
.walk-img{aspect-ratio:3/2;overflow:hidden;border-radius:var(--radius);background:var(--paper-2)}
.walk-img img{width:100%;height:100%;object-fit:cover;display:block}
.walk-fig figcaption{font-size:.8rem;line-height:1.5;color:var(--ink-3);padding:.8em 0 0}
.walk-fig figcaption a{color:inherit}
.walk-head h2{margin-bottom:clamp(24px,3vw,40px)}
.walk-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line)}
.walk-list li{background:var(--ivory);padding:clamp(22px,2.6vw,34px)}
.walk-min{margin:0 0 .5em;color:var(--red-700);font:500 .9rem/1 var(--sans);letter-spacing:.06em}
.walk-min span{font:500 clamp(2.6rem,4.4vw,3.6rem)/1 var(--serif);margin-right:.18em;letter-spacing:0;font-variant-numeric:lining-nums}
.walk-list h3{font-size:1.3rem;margin:0 0 .4em}
.walk-list li>p:last-child{margin:0;font-size:.93rem;color:var(--ink-2)}
@media (max-width:1000px){.walk-list{grid-template-columns:1fr 1fr}}
@media (max-width:640px){.walk-figs,.walk-list{grid-template-columns:1fr}}

/* ---- tables ---------------------------------------------------------------------- */
.tbl-wrap{overflow-x:auto;-webkit-overflow-scrolling:touch}
table.cmp{width:100%;border-collapse:collapse;min-width:560px;background:var(--card)}
.cmp th,.cmp td{padding:16px 18px;text-align:left;vertical-align:top;border-bottom:1px solid var(--line)}
.cmp thead th{font:500 .74rem/1.2 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:#fff;background:var(--red-800);border:0}
:lang(zh) .cmp thead th{letter-spacing:.1em;font-size:.88rem}
.cmp tbody th{font-weight:600;width:24%}
.cmp tbody tr:nth-child(even){background:rgba(239,230,210,.4)}

/* ---- FAQ ------------------------------------------------------------------------ */
.faq-cat{margin-top:clamp(36px,5vw,64px)}
.faq-cat>h2{font-size:clamp(1.7rem,3vw,2.4rem);padding-bottom:.4em;border-bottom:1px solid var(--ink);margin-bottom:0}
details.q{border-bottom:1px solid var(--line)}
details.q summary{list-style:none;cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:24px;padding:22px 0;font:500 clamp(1.25rem,2vw,1.6rem)/1.25 var(--serif)}
:lang(zh) details.q summary{font-weight:600;font-size:1.2rem}
details.q summary::-webkit-details-marker{display:none}
details.q summary::after{content:"+";font:300 2rem/1 var(--sans);color:var(--red-700);transition:transform .4s var(--ease);flex:none}
details.q[open] summary::after{transform:rotate(45deg)}
details.q .a{padding:0 0 26px;max-width:46rem;color:var(--ink-2)}
details.q .a p:last-child{margin-bottom:0}
.dark details.q{border-color:var(--line-inv)}.dark details.q summary::after{color:var(--gold-2)}.dark details.q .a{color:rgba(247,241,229,.82)}
.search{width:100%;max-width:520px;padding:15px 18px;border:1px solid var(--line);border-radius:var(--radius);background:var(--card);font:inherit}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1px solid var(--line);background:transparent;border-radius:99px;padding:.55em 1.15em;font:500 .78rem/1 var(--sans);letter-spacing:.1em;text-transform:uppercase;transition:all .3s}
:lang(zh) .chip{letter-spacing:.06em;font-size:.88rem;text-transform:none}
.chip:hover{border-color:var(--red-700)}
.chip[aria-pressed="true"],.chip.on{background:var(--red-700);border-color:var(--red-700);color:#fff}

/* ---- menu --------------------------------------------------------------------- */
.menu-nav{position:sticky;top:66px;transition:top .45s var(--ease);z-index:40;background:rgba(247,241,229,.97);backdrop-filter:blur(8px);border-bottom:1px solid var(--line)}
.hdr-hide .menu-nav{top:0}
.menu-nav .wrap{display:flex;gap:10px;align-items:center;overflow-x:auto;padding-block:12px;scrollbar-width:none}
.menu-nav .wrap::-webkit-scrollbar{display:none}
.menu-nav a{flex:none;text-decoration:none;font:500 .8rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;padding:.8em 1.1em;border-radius:99px;border:1px solid transparent;white-space:nowrap}
:lang(zh) .menu-nav a{letter-spacing:.06em;font-size:.92rem;text-transform:none}
.menu-nav a:hover{border-color:var(--line)}
.menu-nav a.on{background:var(--ink);color:var(--ivory)}
.menu-tools{display:flex;flex-wrap:wrap;gap:14px 24px;align-items:center;justify-content:space-between;padding-block:22px}
.legend{display:flex;flex-wrap:wrap;gap:6px 18px;font-size:.86rem;color:var(--ink-2);align-items:center}
.legend b{font-weight:500}
.ic-s,.ic-n,.ic-v{display:inline-flex;align-items:center;gap:.35em}
.ic-s svg{color:var(--red-600)}.ic-n svg{color:#8a5a2b}.ic-v svg{color:#4a7d3a}
.ic-s svg,.ic-n svg,.ic-v svg{width:1em;height:1em}
.menu-cat{padding-block:clamp(36px,5vw,72px);border-top:1px solid var(--line)}
.menu-cat-head{display:grid;grid-template-columns:1fr 1.2fr;gap:clamp(18px,4vw,60px);align-items:end;margin-bottom:clamp(22px,3vw,40px)}
.menu-cat-head h2{margin:0}.menu-cat-head h2 span{display:block;font:600 1.1rem/1 "Noto Serif SC",serif;letter-spacing:.3em;color:var(--red-700);margin-top:.7em}
:lang(zh) .menu-cat-head h2 span{font-family:var(--serif);letter-spacing:.14em;color:var(--ink-3);font-weight:500;font-size:.95rem}
.menu-cat-head p{margin:0;color:var(--ink-2)}
@media (max-width:760px){.menu-cat-head{grid-template-columns:1fr}}
.dishes{display:grid;grid-template-columns:repeat(2,1fr);gap:0 clamp(22px,4vw,64px)}
@media (max-width:900px){.dishes{grid-template-columns:1fr}}
.dish{display:grid;grid-template-columns:minmax(0,1fr);gap:6px 18px;padding:18px 0;border-bottom:1px solid var(--line);align-items:start}
.dish.has-img{grid-template-columns:104px minmax(0,1fr)}
.dish .th{width:104px;aspect-ratio:1;border-radius:var(--radius);overflow:hidden;background:var(--paper-2);grid-row:1/3;cursor:zoom-in;padding:0;border:0}
.dish .th img{width:100%;height:100%;object-fit:cover}
.dish-top{display:flex;gap:12px;justify-content:space-between;align-items:baseline}
.dish h3{font:500 1.28rem/1.2 var(--serif);margin:0}
:lang(zh) .dish h3{font-family:var(--sans);font-weight:600;font-size:1.1rem}
.dish .alt{display:block;font:500 .95rem/1.3 "Noto Serif SC","Songti SC",serif;color:var(--ink-3);letter-spacing:.06em;margin-top:.2em}
:lang(zh) .dish .alt{font-family:var(--serif);font-size:.95rem;letter-spacing:.01em}
.dish .pr{font:500 1.18rem/1.2 var(--serif);white-space:nowrap;color:var(--red-700);font-variant-numeric:lining-nums}
.dish .pr small{font:400 .72rem/1 var(--sans);color:var(--ink-3);letter-spacing:.06em;margin-left:.3em}
.dish .desc{font-size:.93rem;color:var(--ink-2);margin:.3em 0 0}
.dish .tags{display:flex;gap:10px;margin-top:.4em;font-size:.8rem;color:var(--ink-3)}
.dish.hide{display:none}
.menu-cat.empty{display:none}
.feat{display:grid;grid-template-columns:1.1fr 1fr;gap:clamp(18px,4vw,56px);background:var(--card);margin-bottom:clamp(24px,4vw,48px);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.feat.rev{grid-template-columns:1fr 1.1fr}.feat.rev .fig{order:2}
.feat .fig{border-radius:0;min-height:320px}
.feat .body{padding:clamp(22px,3.5vw,48px)}
.feat h3{font-size:clamp(1.8rem,3vw,2.5rem)}
.feat .pr{font:500 2rem/1 var(--serif);color:var(--red-700)}
@media (max-width:820px){.feat,.feat.rev{grid-template-columns:1fr}.feat.rev .fig{order:0}.feat .fig{min-height:260px}}
.set-grid{display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(16px,2.4vw,30px)}
@media (max-width:900px){.set-grid{grid-template-columns:1fr}}
.set{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(22px,3vw,36px)}
.set header{display:flex;justify-content:space-between;align-items:baseline;gap:12px;border-bottom:1px solid var(--ink);padding-bottom:12px;margin-bottom:14px}
.set h4{margin:0;font-size:1.5rem}.set .pr{font:500 1.9rem/1 var(--serif);color:var(--red-700)}
.set ol{margin:0;padding:0;list-style:none;display:grid;gap:9px}
.set li{display:grid;gap:0;font-size:.97rem;line-height:1.35}.set li span{color:var(--ink-3);font:500 .85rem/1.3 "Noto Serif SC","Songti SC",serif;letter-spacing:.04em}
:lang(zh) .set li span{font-family:var(--serif)}
.set-tabs{display:flex;flex-wrap:wrap;gap:8px;margin:0 0 28px}
.note{font-size:.9rem;color:var(--ink-3);border-left:2px solid var(--gold);padding:.2em 0 .2em 1em;margin:1.4em 0}
.lightbox{position:fixed;inset:0;background:rgba(15,9,6,.92);z-index:300;display:none;place-items:center;padding:24px}
.lightbox.open{display:grid}.lightbox img{max-height:86vh;max-width:94vw;border-radius:3px}
.lightbox button{position:absolute;top:16px;right:18px;background:none;border:0;color:#fff;font-size:2.2rem;line-height:1}
.lightbox p{position:absolute;bottom:18px;left:0;right:0;text-align:center;color:#fff;margin:0}

/* ---- videos ----------------------------------------------------------------------- */
.vcards{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(12px,2vw,24px)}
@media (max-width:1000px){.vcards{grid-template-columns:repeat(2,1fr)}}
.vcard{position:relative;aspect-ratio:9/16;background:var(--wood-800);color:var(--ivory);overflow:hidden;border-radius:var(--radius);display:flex;align-items:flex-end;isolation:isolate}
.vcard>img,.vcard>video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:-2;opacity:.86}
.vcard::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,rgba(21,13,9,.92),rgba(21,13,9,.1) 60%)}
.vcard .b{padding:18px}.vcard h3{font-size:1.25rem;color:#fff;margin:0 0 .3em}.vcard p{font-size:.84rem;margin:0;color:rgba(247,241,229,.8)}
.vcard .tag{position:absolute;top:14px;left:14px;font:500 .66rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;background:rgba(21,13,9,.6);border:1px solid rgba(182,149,86,.6);color:var(--gold-2);padding:.6em .9em;border-radius:99px}
.vcard .play{position:absolute;top:50%;left:50%;width:64px;height:64px;margin:-32px;border-radius:50%;border:1px solid rgba(247,241,229,.7);display:grid;place-items:center;background:rgba(21,13,9,.35);backdrop-filter:blur(3px)}
.vcard .play svg{width:22px;height:22px;margin-left:3px}
.vplayer{background:#000;aspect-ratio:9/16;max-height:80vh;margin-inline:auto;border-radius:var(--radius);overflow:hidden}
.vplayer video{width:100%;height:100%;object-fit:contain}

/* ---- forms -------------------------------------------------------------------------- */
form.f{display:grid;gap:16px}
form.f .row{display:grid;grid-template-columns:1fr 1fr;gap:16px}@media (max-width:600px){form.f .row{grid-template-columns:1fr}}
form.f label{display:grid;gap:6px;font:500 .78rem/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--ink-2)}
:lang(zh) form.f label{letter-spacing:.06em;font-size:.9rem}
form.f input,form.f select,form.f textarea{font:400 1rem/1.4 var(--sans);padding:14px 14px;border:1px solid var(--line);background:#fff;border-radius:var(--radius);width:100%;letter-spacing:0;text-transform:none}
form.f textarea{min-height:120px}

/* ---- breadcrumbs / page head -------------------------------------------------------- */
.page-head{background:var(--wood-900);color:var(--ivory);padding:calc(var(--header-h) + clamp(48px,8vw,110px)) 0 clamp(48px,7vw,96px);position:relative;overflow:hidden;isolation:isolate}
.page-head::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--head-img,none) center/cover;opacity:.38}
.page-head::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(21,13,9,.92),rgba(21,13,9,.5))}
.page-head h1{font-size:clamp(2.6rem,6vw,5rem);margin-bottom:.3em;max-width:18ch}
:lang(zh) .page-head h1{font-size:clamp(2.2rem,5vw,4rem)}
.page-head .lede{color:rgba(247,241,229,.85)}
.crumbs{font:500 .74rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:rgba(247,241,229,.6);margin-bottom:2rem;display:flex;gap:.8em;flex-wrap:wrap}
:lang(zh) .crumbs{letter-spacing:.08em;font-size:.82rem}
.crumbs a{text-decoration:none}.crumbs a:hover{color:var(--gold-2)}
.crumbs span+span::before{content:"/";margin-right:.8em;opacity:.5}
.answer{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--red-700);padding:22px 26px;margin:0 0 clamp(28px,4vw,48px);font-size:1.08rem;color:var(--ink-2);border-radius:var(--radius)}
.answer b{color:var(--ink)}
.dark .answer{background:rgba(247,241,229,.05);border-color:var(--line-inv);border-left-color:var(--gold);color:rgba(247,241,229,.9)}
.dark .answer b{color:#fff}
.prose h2{margin-top:1.4em}.prose h3{margin-top:1.3em}
.prose ul{padding-left:1.2em}.prose li{margin-bottom:.45em}
.quote{font:italic 500 clamp(1.7rem,3.4vw,2.8rem)/1.2 var(--serif);max-width:22em;margin:0;position:relative}
:lang(zh) .quote{font-style:normal;font-weight:600;line-height:1.5}
.quote cite{display:block;font:500 .78rem/1.4 var(--sans);letter-spacing:.2em;text-transform:uppercase;margin-top:1.4em;font-style:normal;color:var(--gold-2)}

/* ---- TODO chip (draft builds only) ---------------------------------------------------- */
mark.todo{background:#ffe27a;color:#3a2a00;padding:.1em .5em;border-radius:3px;font:600 .8em/1.4 var(--sans);letter-spacing:.02em;border:1px dashed #b8860b;display:inline}
.draft-banner{position:fixed;left:50%;transform:translateX(-50%);bottom:calc(var(--bar-h) + 10px);z-index:80;background:#ffe27a;color:#3a2a00;font:600 .74rem/1.3 var(--sans);padding:.6em 1.1em;border-radius:99px;box-shadow:0 6px 24px rgba(0,0,0,.3);display:none}
@media (min-width:821px){.draft-banner{bottom:16px;left:16px;transform:none;display:block}}

/* ---- footer --------------------------------------------------------------------------- */
.ftr{background:var(--wood-950);color:rgba(247,241,229,.8);padding:clamp(56px,8vw,110px) 0 36px}
.ftr a{text-decoration:none;color:inherit}.ftr a:hover{color:var(--gold-2)}
.ftr-top{display:grid;grid-template-columns:1.4fr 1fr 1fr 1.1fr;gap:clamp(24px,4vw,64px);padding-bottom:48px;border-bottom:1px solid var(--line-inv)}
@media (max-width:900px){.ftr-top{grid-template-columns:1fr 1fr}}@media (max-width:560px){.ftr-top{grid-template-columns:1fr}}
.ftr h4{font:500 .74rem/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--gold-2);margin-bottom:1.3em}
:lang(zh) .ftr h4{letter-spacing:.16em;font-size:.88rem}
.ftr ul{list-style:none;margin:0;padding:0;display:grid;gap:.55em}
.ftr address{font-style:normal;line-height:1.7}
.ftr-bottom{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:10px 28px;padding-top:26px;font-size:.82rem;color:rgba(247,241,229,.5)}
.ftr-bottom .ftr-priv{grid-column:1;margin:.5em 0 0;align-self:start}
.ftr-bottom .to-top{grid-column:2;justify-self:end;align-self:center}
.ftr .ftr-credit{grid-column:2;justify-self:end;margin:0;font:400 .72rem/1.4 var(--sans);letter-spacing:.06em;color:rgba(247,241,229,.5);white-space:nowrap}
@media (max-width:640px){.ftr-bottom{grid-template-columns:1fr;gap:6px}.ftr-bottom .ftr-priv{margin:.9em 0 .6em}.ftr .ftr-credit,.ftr-bottom .to-top{grid-column:1;justify-self:start}.ftr-bottom .to-top{margin-top:4px}}
.ftr .ftr-credit a{text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:.22em;text-decoration-color:rgba(247,241,229,.34);color:rgba(247,241,229,.66)}
.ftr .ftr-credit a:hover{color:var(--gold-2);text-decoration-color:var(--gold-2)}
.ftr .brand-zh{font-size:2.6rem;display:block;margin-bottom:.2em;color:var(--ivory)}
.ftr .tagline{font:italic 500 1.4rem/1.3 var(--serif);color:var(--ivory);max-width:19rem;margin:1em 0 0}
:lang(zh) .ftr .tagline{font-style:normal;font-size:1.15rem;letter-spacing:.08em}

/* ---- misc ----------------------------------------------------------------------------- */
hr.rule{border:0;height:1px;background:var(--line);margin:clamp(30px,5vw,60px) 0}
.pill-list{display:flex;flex-wrap:wrap;gap:8px;margin:0;padding:0;list-style:none}
.pill-list li{border:1px solid var(--line);padding:.4em .9em;border-radius:99px;font-size:.88rem;background:var(--card)}
.check{list-style:none;padding:0;margin:0;display:grid;gap:.7em}
.check li{padding-left:1.8em;position:relative}
.check li::before{content:"";position:absolute;left:0;top:.5em;width:.9em;height:.5em;border-left:2px solid var(--red-700);border-bottom:2px solid var(--red-700);transform:rotate(-45deg) scale(.8)}
.dark .check li::before{border-color:var(--gold-2)}
.stat-row{display:flex;flex-wrap:wrap;gap:clamp(22px,5vw,72px)}
.stat b{display:block;font:500 clamp(2.6rem,5vw,4.2rem)/1 var(--serif);color:var(--gold-2)}.stat span{font-size:.82rem;letter-spacing:.14em;text-transform:uppercase;color:rgba(247,241,229,.7)}
@media print{.hdr,.actionbar,.ftr,.menu-nav,.draft-banner{display:none}body{background:#fff}}


/* ==== revision 2 components ================================================================== */
.hours-line{margin:0;line-height:1.5}.hours-line b{font-weight:500;margin-right:.4em}
.dark .hours-line .muted,.pre-ftr .hours-line .muted{color:inherit;opacity:.7}
/* service strip under the hero */
.svc{background:var(--wood-950);color:var(--ivory);border-top:1px solid rgba(182,149,86,.35)}
.svc-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr)}
.svc-grid li{padding:20px clamp(14px,2.4vw,30px);border-right:1px solid var(--line-inv);display:grid;gap:3px;align-content:start}
.svc-grid li:last-child{border-right:0}
.svc-k{font:500 .7rem/1.3 var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--gold-2)}
:lang(zh) .svc-k{letter-spacing:.14em;font-size:.82rem}
.svc-grid b{font:500 1.15rem/1.3 var(--serif);color:#fff}
:lang(zh) .svc-grid b{font-family:var(--sans);font-size:1.02rem}
.svc-s{font-size:.86rem;color:rgba(247,241,229,.7)}
.svc-grid a{font-size:.82rem;color:var(--gold-2);text-decoration:none;margin-top:4px}
@media (max-width:760px){.svc-grid{grid-template-columns:1fr}.svc-grid li{border-right:0;border-bottom:1px solid var(--line-inv);padding:14px var(--gut)}}
/* compact occasions */
.occ2-head{display:flex;justify-content:space-between;align-items:end;gap:16px;flex-wrap:wrap;margin-bottom:18px}
.occ2-head h2{margin:0;font-size:clamp(1.6rem,2.8vw,2.3rem)}.occ2-head .eyebrow{margin-bottom:.8rem}
.occ2-grid{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.occ2-grid li{background:var(--card);display:flex;gap:14px;align-items:flex-start;padding:16px 18px}
.occ2-grid .ic{width:24px;height:24px;flex:none;color:var(--red-700);margin-top:2px}
.occ2-grid b{display:block;font:500 1.12rem/1.25 var(--serif)}:lang(zh) .occ2-grid b{font:600 1rem/1.4 var(--sans)}
.occ2-grid span{display:block;font-size:.88rem;color:var(--ink-2);line-height:1.45;margin-top:2px}
@media (max-width:900px){.occ2-grid{grid-template-columns:1fr 1fr}}@media (max-width:520px){.occ2-grid{grid-template-columns:1fr}.occ2-grid li{padding:12px 14px}}
/* three stages */
.stages{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2.6vw,34px)}
.stage .fig{aspect-ratio:4/3;margin-bottom:16px}
.stage-n{display:inline-block;font:500 .72rem/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;color:#fff;background:var(--red-700);padding:.55em .9em;border-radius:99px;margin-bottom:10px}
:lang(zh) .stage-n{letter-spacing:.12em;font-size:.82rem}
.stage h3{font-size:clamp(1.35rem,2vw,1.7rem);margin-bottom:.3em}.stage p{margin:0 0 .6em;color:var(--ink-2)}
.soup-fig{background:var(--wood-800)}.soup-fig svg{width:100%;height:100%}
.rack-opts{list-style:none;margin:6px 0 0;padding:0;display:grid;gap:0;border-top:1px solid var(--line)}
.rack-opts li{padding:8px 0;border-bottom:1px solid var(--line);display:grid;grid-template-columns:1fr auto;gap:1px 12px}
.rack-opts li b,.rack-opts li span{grid-column:1}.rack-opts .fee{grid-column:2;grid-row:1/3;align-self:center;font:500 .8rem/1.2 var(--sans);font-style:normal;color:var(--red-700);text-align:right;white-space:nowrap}
.rack-opts b{font-weight:500}.rack-opts span{font-size:.88rem;color:var(--ink-3)}
.rack-opts li.rec b em{font:600 .64rem/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;font-style:normal;color:#fff;background:var(--gold-3);padding:.35em .6em;border-radius:99px;margin-left:.5em;vertical-align:2px}
:lang(zh) .rack-opts li.rec b em{letter-spacing:.06em;font-size:.72rem}
.tips{margin-top:clamp(24px,4vw,44px)}.tips h4{margin-bottom:.3em}
@media (max-width:900px){.stages{grid-template-columns:1fr}.stage .fig{aspect-ratio:16/9}}
.duo{display:grid;grid-template-columns:1fr 1fr;gap:12px}.duo .fig{aspect-ratio:3/4}
/* dining environment */
.env{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(20px,4vw,56px);align-items:center}
.env-mosaic{display:grid;grid-template-columns:1.1fr 1fr;grid-template-rows:1fr 1fr;gap:10px;min-height:340px}
.env-mosaic>:first-child{grid-row:1/3}.env-mosaic .fig{aspect-ratio:auto;height:100%}
@media (max-width:900px){.env{grid-template-columns:1fr}.env-mosaic{min-height:260px}}
.fig.slot{background:var(--wood-800) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='44' height='44'%3E%3Cg fill='none' stroke='%23b69556' stroke-width='1' opacity='.28'%3E%3Cpath d='M0 .5H44M0 22.5H44M.5 0V44M22.5 0V44'/%3E%3Cpath d='M11 11h22v22H11z'/%3E%3C/g%3E%3C/svg%3E");display:grid;place-items:center;min-height:150px}
.slot-in{display:grid;justify-items:center;gap:6px;color:var(--gold-2);text-align:center;padding:14px}
.slot-in svg{width:26px;height:26px;opacity:.8}.slot-l{font:500 1.05rem/1.2 var(--serif);color:var(--ivory)}.slot-s{font-size:.8rem;color:rgba(247,241,229,.7)}
.rooms{display:grid;grid-template-columns:1fr 1fr;gap:clamp(14px,2.4vw,28px)}
.room{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:grid;grid-template-rows:auto 1fr}
.room>.fig{border-radius:0;aspect-ratio:2/1;min-height:0}
.room-b{padding:clamp(16px,2.4vw,26px)}.room-b header{display:flex;justify-content:space-between;align-items:baseline;border-bottom:1px solid var(--ink);padding-bottom:10px;margin-bottom:10px}
.room-b h3{margin:0;font-size:1.5rem}.room-n{font:500 1.3rem/1 var(--serif);color:var(--red-700)}
.room-facts{margin:0 0 10px;padding-left:1.1em}.room-facts li{margin-bottom:.2em}
.terms{font-size:.86rem;color:var(--ink-3);margin:0;border-left:2px solid var(--gold);padding-left:.8em}
.connect{display:flex;gap:0;margin:4px 0 12px}.connect i{width:46px;height:22px;border:1.5px solid var(--red-700);background:rgba(138,22,24,.08)}
.connect i+i{border-left-style:dashed}
.slot-row{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-top:14px}.slot-row .fig{min-height:120px}
@media (max-width:900px){.rooms{grid-template-columns:1fr}.slot-row{grid-template-columns:1fr 1fr}}
/* availability + lunch */
.avail{margin:8px 0 12px;display:grid;gap:0}.avail>div{display:flex;justify-content:space-between;gap:16px;padding:9px 0;border-bottom:1px solid var(--line)}
.avail dt{font-weight:500}.avail dd{margin:0;color:var(--red-700);font-weight:500;text-align:right}
.avail-card{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--red-700);border-radius:var(--radius);padding:16px 20px;margin:0 0 22px}
.avail-card .svc-k{color:var(--red-700)}.avail-card.big{padding:22px 26px}
.lunch{padding-top:clamp(28px,4vw,48px)}
.lunch-card{display:grid;grid-template-columns:.9fr 1.1fr;background:var(--wood-900);color:var(--ivory);border-radius:var(--radius);overflow:hidden}
.lunch-media{min-height:230px;position:relative}.lunch-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}
.lunch-body{padding:clamp(20px,3vw,36px)}.lunch-body h2{margin:0 0 .3em;color:#fff;font-size:clamp(1.8rem,3vw,2.5rem)}
.lunch-body .eyebrow{color:var(--gold-2)}.lunch-body .lede,.lunch-body .muted{color:rgba(247,241,229,.82)}
.lunch-when{font:500 1.15rem/1.3 var(--serif);color:var(--gold-2);margin:0 0 10px}
.zh-sub{font:600 1rem/1 "Noto Serif SC",serif;letter-spacing:.2em;color:var(--gold-2);margin-left:.4em;vertical-align:4px}
@media (max-width:820px){.lunch-card{grid-template-columns:1fr}.lunch-media{min-height:180px}}
/* contextual links + pre-footer */
.ctx{display:flex;flex-wrap:wrap;gap:8px;margin:14px 0}
.ctx a{font-size:.84rem;text-decoration:none;border:1px solid var(--line);border-radius:99px;padding:.45em .95em;background:var(--card)}
.ctx a:hover{border-color:var(--red-700);color:var(--red-700)}
.dark .ctx a{background:transparent;border-color:var(--line-inv)}
.pre-ftr{background:var(--paper);border-top:1px solid var(--line);padding:clamp(28px,4vw,48px) 0}
.pf-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(18px,3vw,40px)}
.pf-grid h4{font:500 .72rem/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;color:var(--red-700);margin-bottom:.9em}
:lang(zh) .pf-grid h4{letter-spacing:.12em;font-size:.84rem}
.pf-grid p{margin:0 0 .7em;font-size:.95rem}.pf-links{list-style:none;margin:0;padding:0;display:grid;gap:.4em;font-size:.95rem}
@media (max-width:900px){.pf-grid{grid-template-columns:1fr 1fr}}@media (max-width:520px){.pf-grid{grid-template-columns:1fr}}
.ftr-hours{margin:14px 0 10px}.ftr-hours .hours-line{font-size:.95rem}.ftr-hours .muted{color:rgba(247,241,229,.55)}
.ftr-note{font-size:.88rem;line-height:1.55;margin:0 0 10px;color:rgba(247,241,229,.7)}.ftr-note a{color:var(--gold-2)}
.ftr-maps{display:flex!important;gap:14px!important;font-size:.88rem}
.pillar .big.zhc{font:700 clamp(3.6rem,6vw,5rem)/1 "Noto Serif SC","Songti SC",serif;color:var(--red-700);margin-bottom:.15em}
.pillar .motto{display:block;font:500 .78rem/1.4 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--gold-3);margin-bottom:.9em}
.pillar .motto span{font:600 .95rem/1 "Noto Serif SC",serif;letter-spacing:.2em;text-transform:none;color:var(--red-700)}
:lang(zh) .pillar .motto{letter-spacing:.2em}
/* nav dropdown */
.nav-dd{position:relative;display:flex;align-items:center;gap:2px}
.dd-tog{background:none;border:0;padding:6px 2px;display:grid;place-items:center;color:inherit}
.dd-tog svg{width:14px;height:14px;transition:transform .3s var(--ease)}
.dd{position:absolute;top:calc(100% + 10px);left:-16px;min-width:230px;background:var(--ivory);color:var(--ink);border-radius:3px;box-shadow:0 14px 40px rgba(0,0,0,.22);padding:8px;display:none;z-index:5}
.dd::before{content:"";position:absolute;left:0;right:0;top:-12px;height:12px}
.dd a{display:block;padding:.75em .9em;letter-spacing:.06em;text-transform:none;font-size:.92rem;border-radius:2px}
.dd a::after{display:none}.dd a:hover{background:var(--paper);color:var(--red-700)}
@media (min-width:1121px){.nav-dd:hover .dd,.nav-dd:focus-within .dd,.nav-dd.open .dd{display:block}.nav-dd:hover .dd-tog svg,.nav-dd.open .dd-tog svg{transform:rotate(180deg)}}
@media (max-width:1120px){
  .nav.open .nav-dd{flex-direction:column;align-items:stretch;width:100%}.nav.open .dd-tog{display:none}
  .nav.open .dd{display:block;position:static;box-shadow:none;background:transparent;color:inherit;padding:0 0 10px 18px;min-width:0}
  .nav.open .dd a{font:400 1.05rem/1.3 var(--sans)!important;border-bottom:0!important;padding:.5em 0!important;opacity:.8}
}
/* menu quick-jump (3 menus) */
.menu-jump{display:inline-flex;margin:clamp(18px,3vw,28px) 0 14px;border:1px solid var(--ink);border-radius:99px;overflow:hidden;max-width:100%}
.menu-jump a{padding:.75em 1.3em;text-decoration:none;font:500 .8rem/1 var(--sans);letter-spacing:.12em;text-transform:uppercase;white-space:nowrap}
:lang(zh) .menu-jump a{letter-spacing:.08em;font-size:.95rem;text-transform:none}
.menu-jump a+a{border-left:1px solid var(--ink)}.menu-jump a:hover{background:var(--ink);color:var(--ivory)}
@media (max-width:520px){.menu-jump{display:flex}.menu-jump a{flex:1;text-align:center;padding:.8em .5em;font-size:.7rem;letter-spacing:.06em}}
.menu-group{background:var(--wood-900);color:var(--gold-2);padding:14px 0;scroll-margin-top:120px}
.mg-l{font:500 .78rem/1 var(--sans);letter-spacing:.3em;text-transform:uppercase}:lang(zh) .mg-l{letter-spacing:.2em;font-size:.95rem}
/* three ways — balanced layout */
.stages2{display:grid;grid-template-columns:1fr 1.15fr;gap:clamp(16px,2.6vw,32px);align-items:stretch}
.stages2 .stack{list-style:none;margin:0;padding:0;display:grid;gap:clamp(14px,2vw,22px)}
.stage.mini{display:grid;grid-template-columns:42% 1fr;gap:16px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:12px}
.stage.mini .fig{aspect-ratio:4/3;margin:0}.stage.mini h3{font-size:clamp(1.2rem,1.7vw,1.45rem);margin-bottom:.3em}.stage.mini p{margin:0;font-size:.95rem;color:var(--ink-2)}
.stage.big{background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;display:grid;grid-template-rows:auto 1fr}
.stage.big .fig{aspect-ratio:16/7;border-radius:0}.big-b{padding:clamp(16px,2.4vw,26px)}.big-b h3{font-size:clamp(1.35rem,2vw,1.7rem);margin-bottom:.3em}.big-b>p{margin:0 0 .4em;color:var(--ink-2)}
.rack-opts li{grid-template-columns:1fr!important}.rack-opts li.rec b{color:var(--red-700)}
.price-line{display:block;font:500 .8rem/1.4 var(--sans);color:var(--ink-3);margin-top:4px;letter-spacing:.02em}
@media (max-width:900px){.stages2{grid-template-columns:1fr}.stage.mini{grid-template-columns:38% 1fr}}
/* ==== Peking Duck & Heritage — four themes ==== */
.theme-jump{display:grid;grid-template-columns:repeat(4,1fr);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;background:var(--card)}
.theme-jump a{display:flex;gap:10px;align-items:baseline;padding:14px 16px;text-decoration:none;border-right:1px solid var(--line);font-weight:500}
.theme-jump a:last-child{border-right:0}.theme-jump a span{font:500 1.3rem/1 var(--serif);color:var(--red-700)}
.theme-jump a:hover{background:var(--paper)}
@media (max-width:760px){.theme-jump{grid-template-columns:1fr 1fr}.theme-jump a:nth-child(2){border-right:0}.theme-jump a:nth-child(-n+2){border-bottom:1px solid var(--line)}}
.theme-h{display:grid;grid-template-columns:auto 1fr;gap:clamp(14px,2.4vw,28px);align-items:start;margin-bottom:clamp(22px,3.4vw,40px)}
.theme-n{font:500 clamp(3rem,6vw,5rem)/.85 var(--serif);color:var(--red-700);opacity:.9}
.dark .theme-n,.red .theme-n{color:var(--gold-2)}
.theme-h h2{margin:0 0 .25em}.theme-h .lede{margin:0}.theme-h .eyebrow{margin-bottom:.8rem}
.picks{margin-top:clamp(26px,4vw,44px)}.picks h3{font-size:1.4rem;margin-bottom:12px}
.picks-g{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.duckpick{display:grid;grid-template-columns:40% 1fr;gap:14px;align-items:center;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:10px}
.duckpick .fig{aspect-ratio:4/3}.duckpick h4{margin:0 0 .2em;display:flex;justify-content:space-between;gap:8px;font-size:1.25rem}
.duckpick h4 .num{color:var(--red-700)}.duckpick p{margin:0 0 .3em}
@media (max-width:760px){.picks-g{grid-template-columns:1fr}}
.msteps{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2.4vw,28px)}
.mstep .fig{aspect-ratio:4/3;margin-bottom:14px}.mstep-n{font:500 .8rem/1 var(--sans);letter-spacing:.2em;color:var(--gold-2)}
.mstep h3{font-size:1.45rem;margin:.4em 0 .3em;color:#fff}.mstep p{margin:0;font-size:.95rem}
@media (max-width:900px){.msteps{grid-template-columns:1fr}.mstep .fig{aspect-ratio:16/9}}
.acc{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2.4vw,28px);margin-top:clamp(22px,3vw,36px);padding-top:clamp(18px,3vw,28px);border-top:1px solid var(--line-inv)}
.acc h4{color:var(--gold-2);margin-bottom:.3em}.acc p{margin:0}
@media (max-width:760px){.acc{grid-template-columns:1fr}}
.dark .cmp{background:rgba(247,241,229,.04);color:var(--ivory)}.dark .cmp th,.dark .cmp td{border-color:var(--line-inv)}.dark .cmp tbody tr:nth-child(even){background:rgba(247,241,229,.03)}
.miles{list-style:none;margin:clamp(18px,3vw,30px) 0;padding:0;display:grid;grid-template-columns:repeat(4,1fr);gap:1px;background:var(--line);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden}
.miles li{background:var(--card);padding:16px 18px}.miles b{display:block;font:500 1.7rem/1.1 var(--serif);color:var(--red-700);margin-bottom:6px}
:lang(zh) .miles b{font-size:1.35rem}.miles span{font-size:.92rem;color:var(--ink-2)}
@media (max-width:900px){.miles{grid-template-columns:1fr 1fr}}
.matters-b{align-items:center}.cert{background:#fff;padding:16px}
.small-q{font-size:clamp(1.25rem,2.2vw,1.7rem);margin-top:1em}
.ott{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
.ott li{border:1px solid rgba(247,241,229,.25);border-radius:var(--radius);padding:16px}.ott b{display:block;font:500 1.25rem/1.2 var(--serif);color:#fff;margin-bottom:4px}
.ott span{font-size:.92rem;color:rgba(247,241,229,.85)}.ott a{color:var(--gold-2)}
@media (max-width:760px){.ott{grid-template-columns:1fr}}
/* stories: other card types */
.scard{position:relative;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:18px;display:flex;flex-direction:column;gap:8px;text-decoration:none;color:inherit;overflow:hidden}
.scard img{margin:-18px -18px 6px;width:calc(100% + 36px);aspect-ratio:4/3;object-fit:cover}
.scard .tag{position:static;align-self:flex-start;background:var(--paper);color:var(--red-700);border-color:var(--line)}
.scard h3{font-size:1.25rem;margin:0}.scard p{margin:0;font-size:.93rem;color:var(--ink-2)}.scard small{color:var(--ink-3);margin-top:auto}
.quote-card p{font:italic 500 1.2rem/1.4 var(--serif);color:var(--ink)}.quote-card cite{font-style:normal;font-size:.85rem;color:var(--ink-3)}
.press-card b{font:500 .8rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--ink-3)}
.gmap{position:relative;aspect-ratio:4/3;border-radius:var(--radius);overflow:hidden;border:1px solid var(--line);background:#e8e2d4}
.gmap iframe{position:absolute;inset:0;width:100%;height:100%;border:0}
.gmap-l{font-size:.85rem;margin:10px 0 0}.dark .gmap-l a{color:var(--gold-2)}
@media (max-width:900px){.gmap{aspect-ratio:1/1}}
.stage.mini{grid-template-columns:1fr;grid-template-rows:auto 1fr;align-items:start;padding:0;overflow:hidden}
.stage.mini .fig{aspect-ratio:16/7;border-radius:0}.stage.mini>div{padding:14px 18px 16px}
@media (max-width:900px){.stage.mini{grid-template-columns:1fr}}
.cert{max-width:400px;justify-self:center}
.origin{display:grid;grid-template-columns:1fr 1fr;gap:clamp(14px,2.4vw,28px);margin:clamp(20px,3vw,32px) 0 0}
.origin article{border-left:3px solid var(--red-700);padding:2px 0 2px 16px}.origin h4{margin-bottom:.3em}.origin p{margin:0;font-size:.95rem;color:var(--ink-2)}
@media (max-width:760px){.origin{grid-template-columns:1fr}}
.museum{margin-top:clamp(36px,6vw,72px);padding-top:clamp(24px,4vw,40px);border-top:1px solid var(--line)}
.museum-t{max-width:52rem;margin-bottom:22px}.museum-t h3{margin-bottom:.3em}
.museum-g{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:10px}
.museum-g .fig{aspect-ratio:3/2}.museum-g img{transition:transform 1.2s var(--ease)}.museum-g li:hover img{transform:scale(1.05)}
.museum-g .cap-over{padding:30px 14px 10px;font-size:.82rem}.museum-c{margin:10px 0 0}
@media (max-width:760px){.museum-g{grid-template-columns:1fr 1fr}}
/* ==== art-directed environment imagery ==== */
.inside{padding:clamp(28px,4vw,56px) 0 0}
.inside-g{display:grid;grid-template-columns:1.55fr 1fr;grid-template-rows:auto auto auto;gap:clamp(8px,1.2vw,14px)}
.inside-g .fig{border-radius:var(--radius)}.inside-g img{object-fit:cover}
.in-main{grid-row:1/3;aspect-ratio:auto;min-height:340px}.in-a,.in-b{aspect-ratio:16/10}
.in-main img{object-position:50% 40%}.in-b img{object-position:50% 30%}
.in-txt{grid-column:1/3;display:flex;justify-content:space-between;align-items:end;gap:20px;flex-wrap:wrap;padding-top:clamp(16px,2.4vw,26px)}
.in-txt .eyebrow{margin-bottom:.8rem}.in-txt h2{margin:0;font-size:clamp(1.6rem,3vw,2.5rem);max-width:30ch}
@media (max-width:820px){.inside-g{grid-template-columns:1fr 1fr}.in-main{grid-column:1/3;grid-row:auto;aspect-ratio:4/3;min-height:0}.in-txt{grid-column:1/3}}
.env-mosaic{grid-template-columns:1fr 1fr!important;grid-template-rows:auto auto!important;min-height:0!important}
.env-mosaic>:first-child{grid-row:auto!important;grid-column:1/3}.env-mosaic .fig.wide{aspect-ratio:16/9;height:auto}
.env-mosaic .fig.land{aspect-ratio:4/3;height:auto}
.env-mosaic img{object-fit:cover}
.fig.wide{aspect-ratio:16/9}
.room>.fig img{object-fit:cover}.room>.fig:first-child img{object-position:50% 45%}
.ott-fig{aspect-ratio:21/8;margin:0 0 18px;border-radius:var(--radius)}.ott-fig img{object-position:50% 38%}
@media (max-width:760px){.ott-fig{aspect-ratio:16/9}}

/* ---- Heritage story · Journal · Reviews & media ------------------------------------------------------------ */
.htl{list-style:none;margin:clamp(28px,4vw,48px) 0 0;padding:0;position:relative}
.htl::before{content:"";position:absolute;left:5px;top:10px;bottom:10px;width:1px;background:linear-gradient(var(--gold),rgba(182,149,86,.2))}
.htl-i{position:relative;padding:0 0 clamp(40px,6vw,72px) 36px}
.htl-i::before{content:"";position:absolute;left:0;top:.55em;width:11px;height:11px;border-radius:50%;background:var(--red-600);box-shadow:0 0 0 4px var(--paper)}
.htl-y{font:500 clamp(1.9rem,3.4vw,2.8rem)/1 var(--serif);color:var(--red-700);margin-bottom:.35em}
.htl-b h2{font-size:clamp(1.5rem,2.6vw,2.1rem);margin:0 0 .5em}
.htl-b p{max-width:42rem}
.htl-fig{margin:18px 0 14px;max-width:560px}
.htl-fig figcaption{font-size:.8rem;color:var(--ink-3);padding:.7em 0 0;line-height:1.5}
.htl-fig img{height:auto;max-height:440px;object-fit:cover}
.src a{color:inherit}.src{margin:0}
.note-box{background:var(--card);border:1px solid var(--line);border-left:3px solid var(--gold);padding:20px 24px;border-radius:var(--radius)}.note-box h3{font-size:1.3rem;margin-bottom:.4em}
.jcards{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2.4vw,32px);margin-top:28px}
@media (max-width:980px){.jcards{grid-template-columns:1fr 1fr}}@media (max-width:620px){.jcards{grid-template-columns:1fr}}
.jcard{display:flex;flex-direction:column;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);text-decoration:none;color:inherit;overflow:hidden;transition:transform .4s var(--ease),box-shadow .4s var(--ease)}
.jcard:hover{transform:translateY(-3px);box-shadow:0 14px 34px rgba(44,29,20,.12);color:inherit}
.jcard .fig{aspect-ratio:16/10;border-radius:0}
.jcard .b{padding:18px 20px 22px}.jcard h3{font-size:1.35rem;margin:.5em 0 .4em}.jcard p{font-size:.92rem;color:var(--ink-2);margin:0}
.jcard .tag{font:500 .68rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--red-700)}
.jcard[hidden]{display:none}
.jbody h2{font-size:clamp(1.5rem,2.6vw,2.1rem);margin:1.6em 0 .5em}
.jbody .answer+h2{margin-top:1em}
.jlist{padding-left:1.2em;margin:0 0 1.2em}.jlist li{margin-bottom:.7em;padding-left:.2em}
.jfig{margin:1.4em 0}.jfig figcaption{font-size:.8rem;color:var(--ink-3);padding:.7em 0 0}
.meta-line{color:rgba(247,241,229,.7);margin-top:1.2rem}
.srcs,.rel{margin-top:2.4em;padding-top:1.4em;border-top:1px solid var(--line)}.srcs h3,.rel h3{font:500 .78rem/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.9em}
.srcs ul,.rel ul{margin:0;padding-left:1.1em}.srcs li,.rel li{margin-bottom:.4em;font-size:.95rem}
.rv-head{margin-bottom:clamp(22px,3vw,36px)}
.rate-g{display:grid;grid-template-columns:minmax(260px,.8fr) 1.2fr;gap:clamp(24px,5vw,72px);align-items:start}
@media (max-width:820px){.rate-g{grid-template-columns:1fr}}
.rate{background:var(--card);border:1px solid var(--line);padding:28px;border-radius:var(--radius);text-align:center}
.rate-n{font:500 4.6rem/1 var(--serif);color:var(--red-700)}.rate-n small{font-size:1.4rem;color:var(--ink-3)}
.rate-stars{color:var(--gold);letter-spacing:.2em;font-size:1.2rem;margin:.3em 0 .6em}
.topics{list-style:none;margin:0 0 1em;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:10px}
.topics li{display:flex;justify-content:space-between;gap:10px;background:var(--card);border:1px solid var(--line);padding:12px 16px;border-radius:var(--radius)}.topics b{font-weight:500}.topics span{color:var(--red-700);font-weight:600}
.press-l{display:grid;gap:clamp(20px,3vw,34px)}
.press{display:grid;grid-template-columns:150px 1fr;gap:clamp(14px,3vw,36px);padding-bottom:clamp(20px,3vw,34px);border-bottom:1px solid var(--line)}
@media (max-width:640px){.press{grid-template-columns:1fr;gap:6px}}
.press-m b{display:block;font:500 1.15rem/1.2 var(--serif);color:var(--red-700)}.press-m span{font-size:.85rem;color:var(--ink-3)}
.press h3{font-size:1.35rem;margin:0 0 .3em}.press h3 a{text-decoration:none}.press h3 a:hover{text-decoration:underline}
.press-q{margin:.8em 0 0;padding:.2em 0 .2em 18px;border-left:3px solid var(--gold)}.press-q p{font:italic 500 1.2rem/1.45 var(--serif);margin:0 0 .3em}.press-q cite{font-style:normal;font-size:.82rem;color:var(--ink-3)}
.hub3{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2vw,26px);margin-top:clamp(22px,3vw,40px)}
@media (max-width:820px){.hub3{grid-template-columns:1fr}}
.hub3 a{display:flex;flex-direction:column;gap:.5em;background:rgba(247,241,229,.05);border:1px solid var(--line-inv);padding:22px 24px;text-decoration:none;color:var(--ivory);border-radius:var(--radius);transition:background .3s}
.hub3 a:hover{background:rgba(247,241,229,.1);color:#fff}.hub3 b{font:500 1.5rem/1.15 var(--serif)}.hub3 span{font-size:.92rem;color:rgba(247,241,229,.78)}
.hub-l a{background:var(--card);border-color:var(--line);color:var(--ink)}.hub-l a:hover{background:var(--paper);color:var(--red-700)}

/* ---- Heritage story: “two cities, one table” scroll scene, archive gallery ------------------------------------- */
.two{position:relative;background:var(--wood-950)}
.two-stick{position:relative;height:100vh;min-height:560px;overflow:hidden;color:var(--ivory);isolation:isolate}
.js .two{height:340vh}.js .two-stick{position:sticky;top:0}
.two-l,.two-r{position:absolute;inset:0;margin:0}
.two-l img,.two-r img{width:100%;height:100%;object-fit:cover}
.two-l{filter:sepia(.45) brightness(.78) contrast(1.05)}
.two-r{clip-path:inset(0 0 0 50%)}
.js .two-r{clip-path:inset(0 0 0 calc(100% - var(--p1,0)*50%))}
.two-r img{object-position:70% 50%}
.two-l img{object-position:30% 50%}
.two-veil{position:absolute;inset:0;z-index:1;background:linear-gradient(180deg,rgba(21,13,9,.55),rgba(21,13,9,.15) 40%,rgba(21,13,9,.85));pointer-events:none}
.two-duck{position:absolute;z-index:2;left:50%;top:44%;width:min(46vw,340px);aspect-ratio:1;transform:translate(-50%,-50%) scale(.82);opacity:0;transition:opacity .9s var(--ease),transform 1.1s var(--ease)}
.two-duck img{width:100%;height:100%;border-radius:50%;object-fit:cover;box-shadow:0 0 0 8px rgba(208,180,121,.35),0 40px 90px -20px rgba(0,0,0,.7)}
.two[data-st="2"] .two-duck{opacity:1;transform:translate(-50%,-50%) scale(1)}
.two-txt{position:absolute;z-index:3;left:0;right:0;bottom:clamp(40px,9vh,96px);padding-inline:var(--gut);max-width:var(--maxw);margin-inline:auto}
.two[data-st="2"] .two-txt{bottom:clamp(24px,5vh,56px)}
.two-k{font:500 .78rem/1 var(--sans);letter-spacing:.26em;text-transform:uppercase;color:var(--gold-2);margin:0 0 1.1rem}
.two h1{font-size:clamp(2.3rem,5.6vw,4.8rem);max-width:15em;margin:0 0 .35em;color:#fff}
:lang(zh) .two h1{font-size:clamp(2rem,4.8vw,4rem)}
.two-p{font-size:clamp(1rem,1.5vw,1.25rem);max-width:38rem;color:rgba(247,241,229,.88);margin:0}
.two-hint{position:absolute;z-index:3;right:var(--gut);top:calc(var(--header-h) + 18px);font:500 .7rem/1 var(--sans);letter-spacing:.3em;text-transform:uppercase;color:rgba(247,241,229,.7);margin:0;transition:opacity .4s}
.two[data-st="1"] .two-hint,.two[data-st="2"] .two-hint{opacity:0}
.two-cr{position:absolute;z-index:3;left:var(--gut);top:calc(var(--header-h) + 16px);max-width:46ch;font-size:.68rem;line-height:1.45;color:rgba(247,241,229,.55);margin:0}
.two-cr a{color:inherit}.cr{font-size:.74rem;color:var(--ink-3);display:block;margin-top:.15em}.cr a{color:inherit}
.js .two .s0,.js .two .s1,.js .two .s2{display:none}
.js .two[data-st="0"] .s0,.js .two[data-st="1"] .s1,.js .two[data-st="2"] .s2{display:inline}
.js .two[data-st="0"] .two-p .s0,.js .two[data-st="1"] .two-p .s1,.js .two[data-st="2"] .two-p .s2{display:inline}
.two-k span+span::before{content:" · ";}
html:not(.js) .two h1 span,html:not(.js) .two-p span{display:block;margin-bottom:.4em}
@media (prefers-reduced-motion:reduce){.js .two{height:auto}.js .two-stick{position:relative}.js .two-r{clip-path:inset(0 0 0 50%)}.two-duck{opacity:1;transform:translate(-50%,-50%)}.js .two .s0,.js .two .s1,.js .two .s2{display:block!important;margin-bottom:.4em}}
@media (max-width:700px){.two-cr{display:none}.two-duck{top:34%}}
.page-head-lite{padding:clamp(26px,4vw,48px) 0 0;background:var(--ivory)}
.chapter .eyebrow{margin-bottom:clamp(20px,3vw,34px)}
.gal{display:flex;gap:clamp(14px,2vw,26px);overflow-x:auto;scroll-snap-type:x proximity;padding:clamp(28px,4vw,48px) var(--gut) 28px;margin-top:6px;scrollbar-color:var(--gold-3) transparent}
.gal-i{flex:0 0 auto;margin:0;scroll-snap-align:start;width:min(78vw,560px)}
.gal-i.tall{width:min(62vw,380px)}.gal-i.sq{width:min(70vw,440px)}
.gal-i .fig{height:clamp(260px,38vw,420px);border-radius:var(--radius)}
.gal-i img{filter:sepia(.18)}
.gal-i figcaption{font-size:.9rem;color:rgba(247,241,229,.85);padding:.8em 0 0;line-height:1.45}.gal-i figcaption b{color:var(--gold-2);font-weight:500;margin-right:.5em;font-family:var(--serif);font-size:1.15rem}
.gal-i .cr{color:rgba(247,241,229,.5)}
.dark .htl::before{background:linear-gradient(var(--gold),rgba(182,149,86,.2))}
.chapter:not(.paper):not(.dark) .htl-i::before{box-shadow:0 0 0 4px var(--ivory)}
.src{font-size:.74rem;color:#9a8f84;margin:.9em 0 0}.src a{color:#9a8f84;text-decoration-color:rgba(154,143,132,.5)}
.htl-fig figcaption .cr{display:block}

/* ---- Guest reviews (rating, distribution, topics, quotes) · Media coverage ---------------------------------- */
.rate-hero{display:grid;grid-template-columns:minmax(260px,.75fr) 1.25fr;gap:clamp(24px,5vw,80px);align-items:center}
@media (max-width:820px){.rate-hero{grid-template-columns:1fr}}
.rate-t{font-size:1.1rem;margin:.2em 0}
.rate-stars.sm{font-size:1rem;margin:0 0 .8em}
.rstars{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:12px}
.rstars li{display:grid;grid-template-columns:3.2em 1fr 4.2em 3em;gap:12px;align-items:center;font-size:.98rem}
.rs-l{color:var(--ink-2)}.rs-n{text-align:right;font-weight:600}.rs-p{text-align:right;color:var(--ink-3);font-size:.88rem}
.rs-b,.tp-b{display:block;height:12px;background:rgba(44,29,20,.1);border-radius:99px;overflow:hidden}
.rs-b i,.tp-b i{display:block;height:100%;background:linear-gradient(90deg,var(--red-700),var(--red-500));border-radius:99px}
.rstars li:nth-child(n+2) .rs-b i{background:linear-gradient(90deg,var(--gold-3),var(--gold))}
.topics2{list-style:none;margin:0 0 14px;padding:0;display:grid;gap:12px}
.topics2 li{display:grid;grid-template-columns:minmax(120px,13em) 1fr 3em;gap:14px;align-items:center}
@media (max-width:560px){.topics2 li{grid-template-columns:1fr 3em}.topics2 .tp-b{grid-column:1/-1;order:3}}
.tp-l{font-weight:500}.tp-n{text-align:right;font-weight:600;color:var(--red-700)}
.rv-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,2.4vw,28px)}
@media (max-width:900px){.rv-grid{grid-template-columns:1fr}}
.rv-card{margin:0;background:rgba(247,241,229,.06);border:1px solid var(--line-inv);padding:26px 26px 22px;border-radius:var(--radius);display:flex;flex-direction:column}
.rv-card p{font:italic 500 1.28rem/1.45 var(--serif);color:#fff;margin:0 0 1.2em;flex:1}
.rv-card cite{font-style:normal;font-size:.82rem;color:rgba(247,241,229,.7)}.rv-card cite b{color:var(--gold-2);font-weight:500}
.press-k{display:block;font-size:.74rem;letter-spacing:.14em;text-transform:uppercase;color:var(--ink-3);margin-top:.5em}
.press h2{font-size:clamp(1.35rem,2.2vw,1.8rem);margin:0 0 .3em}
.press h2 a{text-decoration:none}.press h2 a:hover{text-decoration:underline}
.srcline{font-size:.72rem;line-height:1.5;color:#a0958a;margin:2.4em 0 0;padding-top:1em;border-top:1px solid var(--line)}.srcline a{color:#a0958a;text-decoration-color:rgba(160,149,138,.45)}

/* ---- journal article: lead paragraph + dish cards ---- */
.lead p{font-size:1.28rem;line-height:1.75;color:var(--ink)}
.lead p::first-letter{float:left;font:600 4.6rem/.86 var(--serif);color:var(--red-700);margin:.06em .12em 0 0}
:lang(zh) .lead p::first-letter{font-weight:900;font-size:4.2rem;margin-right:.1em}
.dishcards{margin:2.4em 0 .6em;padding:1.6em 0 0;border-top:1px solid var(--line)}
.dishcards h3{font:500 .78rem/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);margin-bottom:1.2em}
.dishcards ul{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:14px}
@media (max-width:760px){.dishcards ul{grid-template-columns:1fr 1fr}}
.dishcards a{display:block;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;text-decoration:none;height:100%;transition:transform .35s var(--ease),box-shadow .35s}
.dishcards a:hover{transform:translateY(-2px);box-shadow:0 10px 26px rgba(44,29,20,.1);color:inherit}
.dishcards img{width:100%;aspect-ratio:4/3;object-fit:cover}
.dishcards span{display:block;padding:12px 14px 14px}.dishcards b{display:block;font:500 1.05rem/1.25 var(--serif);margin-bottom:.2em}.dishcards i{font-style:normal;color:var(--red-700);font-weight:600;font-size:.92rem}
.dishcards small{display:block;color:var(--ink-3);font-size:.8rem;margin-top:.3em;line-height:1.4}

/* ---- Heritage story: tighter, editorial chapters (overrides the first timeline styles) ------------------------------- */
.chapter{padding-block:clamp(44px,6vw,84px)}
.chap-h{display:flex;align-items:baseline;gap:clamp(14px,2.4vw,30px);flex-wrap:wrap;margin-bottom:clamp(20px,3vw,34px)}
.chap-n{font:500 .78rem/1 var(--sans);letter-spacing:.26em;text-transform:uppercase;color:var(--red-700)}
.dark .chap-n{color:var(--gold-2)}
.chap-t{font-size:clamp(1.9rem,3.6vw,3rem);margin:0}
.chapter .lede{margin:.6em 0 0;max-width:46rem}
.htl{margin:0;padding:0;list-style:none}
.htl::before,.htl-i::before{display:none}
.htl-i{display:grid;grid-template-columns:minmax(96px,160px) minmax(0,1fr);gap:clamp(16px,3vw,44px);padding:clamp(22px,3vw,38px) 0;border-top:1px solid var(--line)}
.htl-y{font:500 clamp(1.6rem,2.8vw,2.4rem)/1.05 var(--serif);color:var(--red-700);margin:.1em 0 0;overflow-wrap:anywhere}
.htl-b{display:grid;grid-template-columns:minmax(0,1.15fr) minmax(0,.85fr);column-gap:clamp(22px,4vw,56px);align-items:start}
.htl-b>*{grid-column:1}
.htl-b>.htl-fig{grid-column:2;grid-row:1/span 4;margin:.2em 0 0;max-width:none}
.htl-b:not(:has(.htl-fig)){grid-template-columns:minmax(0,46rem)}
.htl-b h3{font-size:clamp(1.4rem,2.3vw,1.85rem);margin:0 0 .45em}
.htl-b p{max-width:36rem;margin:0 0 .8em}
.htl-fig img{max-height:360px}
@media (max-width:860px){.htl-i{grid-template-columns:1fr;gap:6px}.htl-b,.htl-b:not(:has(.htl-fig)){grid-template-columns:1fr}.htl-b>.htl-fig{grid-column:1;grid-row:auto;margin:.6em 0}}

/* ---- Guest reviews: dark panel + rating bars + topic pills + quote cards ----------------------------------------------- */
.rev-dark{padding-block:clamp(44px,6vw,88px)}
.rev-grid{display:grid;grid-template-columns:minmax(280px,.78fr) 1.5fr;gap:clamp(24px,4vw,56px);align-items:start}
@media (max-width:900px){.rev-grid{grid-template-columns:1fr}}
.rp{background:rgba(247,241,229,.05);border:1px solid rgba(182,149,86,.28);border-radius:22px;padding:clamp(24px,3vw,40px);position:sticky;top:calc(var(--header-h) + 18px)}
@media (max-width:900px){.rp{position:static}}
.rp-n{font:500 clamp(4.6rem,8vw,6.4rem)/1 var(--serif);color:var(--gold)}
.rp-t{font-size:1.05rem;color:rgba(247,241,229,.85);margin:.1em 0 1.6em}
.rp-bars{list-style:none;margin:0 0 1.6em;padding:0;display:grid;gap:14px}
.rp-bars li{display:grid;grid-template-columns:2.4em 1fr 3.6em;gap:14px;align-items:center;color:rgba(247,241,229,.88)}.rp-bars li>span:last-child{text-align:right}
.rp-b{display:block;height:11px;background:rgba(247,241,229,.12);border-radius:99px;overflow:hidden}.rp-b i{display:block;height:100%;background:var(--gold);border-radius:99px}
.rp-s{font-size:.8rem;line-height:1.7;color:rgba(247,241,229,.55);margin:0}.rp-s a{color:var(--gold-2)}
.rev-dark h2{font-size:clamp(1.5rem,2.6vw,2.1rem);margin:0 0 .7em;color:#fff}
.pills{list-style:none;margin:0 0 .9em;padding:0;display:flex;flex-wrap:wrap;gap:10px}
.pill{border:1px solid rgba(182,149,86,.45);border-radius:99px;padding:.55em 1.05em;color:var(--ivory);font-size:.98rem}.pill b{color:var(--gold);font-weight:500;margin-left:.2em}
.rp-note{font-size:.8rem;color:rgba(247,241,229,.55);margin:.4em 0 0}
.rq-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(14px,2vw,22px);margin:clamp(24px,3vw,40px) 0 12px}
@media (max-width:700px){.rq-grid{grid-template-columns:1fr}}
.rq{margin:0;background:rgba(247,241,229,.05);border:1px solid rgba(247,241,229,.14);border-radius:18px;padding:24px 26px 20px;display:flex;flex-direction:column;min-height:230px}
.rq-s{color:var(--gold);letter-spacing:.18em;font-size:1.05rem;margin-bottom:.9em}
.rq p{font:500 1.25rem/1.5 var(--serif);color:#fff;margin:0 0 1.2em;flex:1}
.rq cite{font-style:normal;font-size:.82rem;color:rgba(247,241,229,.55)}

/* ---- plain intro paragraph (replaces the old framed answer box) ---- */
.intro-p{font-size:1.08rem;color:var(--ink-2);max-width:46rem;margin:0 0 clamp(20px,3vw,34px)}
.dark .intro-p{color:rgba(247,241,229,.85)}

/* ---- dark-section textures (learned from the reference: fine dot grain, brick course, gold door studs) ---------------- */
.grain{position:relative;isolation:isolate}
.grain::before{content:"";position:absolute;inset:0;z-index:-1;pointer-events:none;background:radial-gradient(rgba(245,238,223,.07) 1px,transparent 1px) 0 0/3px 3px}
.band{position:relative;background:var(--wood-900);overflow:hidden}
.band-brick{height:56px;opacity:.9;background:var(--wood-950) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='64' height='52'%3E%3Cg fill='none' stroke='%23b69556' stroke-width='1.4' opacity='.34'%3E%3Cpath d='M0 .7H64M0 26.7H64M.7 0V26M32.7 26V52'/%3E%3C/g%3E%3C/svg%3E") 0 0/64px 52px;border-block:1px solid rgba(182,149,86,.25)}
.band-studs{height:64px;background:var(--wood-950) radial-gradient(circle,#e2c27a 0 4px,#8a6a2a 5px,transparent 6px) 0 50%/44px 44px repeat-x;border-block:1px solid rgba(182,149,86,.25);box-shadow:inset 0 0 40px rgba(0,0,0,.55)}

/* ---- Journal article: full-bleed hero, calm reading column, prev/next ---------------------------------------------------- */
.ahero{position:relative;min-height:clamp(440px,72vh,680px);display:flex;align-items:flex-end;color:var(--ivory);background:linear-gradient(180deg,rgba(21,13,9,.6) 0%,rgba(21,13,9,.22) 32%,rgba(21,13,9,.94) 100%),var(--ah) var(--ahp,center)/cover var(--wood-900);padding:calc(var(--header-h) + 36px) 0 clamp(34px,5.5vw,68px);isolation:isolate}
.ahero-in{width:100%}
.ahero-back{display:inline-block;font:500 .74rem/1 var(--sans);letter-spacing:.22em;text-transform:uppercase;color:rgba(247,241,229,.82);text-decoration:none;margin-bottom:clamp(40px,9vw,110px)}
.ahero-back:hover{color:#fff}
.ahero-cat{font:500 .74rem/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--gold-2);margin:0 0 1.1rem}
.ahero h1{font-size:clamp(2.3rem,5.4vw,4.3rem);color:#fff;max-width:17em;margin:0 0 .4em}
:lang(zh) .ahero h1{font-size:clamp(2rem,4.8vw,3.7rem)}
.ahero-sf{font-size:clamp(1.05rem,1.5vw,1.25rem);line-height:1.65;color:rgba(247,241,229,.86);max-width:38rem;margin:0}
.ahero-meta{font-size:.82rem;color:var(--gold-2);margin:1.5em 0 0}
.ahero-crw{position:absolute;left:0;right:0;bottom:12px;margin-inline:auto;pointer-events:none}
.ahero-cr{font-size:.7rem;line-height:1.45;color:rgba(247,241,229,.72);margin:0;text-align:right;text-shadow:0 1px 3px rgba(0,0,0,.6);pointer-events:auto}.ahero-cr a{color:inherit;text-decoration-color:rgba(247,241,229,.4)}
@media (max-width:640px){.ahero-cr{font-size:.66rem;text-align:left}}
.jart{padding-top:clamp(40px,5.5vw,76px);padding-bottom:clamp(48px,6vw,72px)}
.jart .jbody{max-width:41rem;margin-inline:auto;font-size:1.1rem}
.jart .jbody p{line-height:1.9;margin:0 0 1.4em;color:var(--ink-2)}
:lang(zh) .jart .jbody p{line-height:2;letter-spacing:.02em}
.jart .jbody .lead p{font-size:1.28rem;line-height:1.8;color:var(--ink)}
.jart .jbody h2{font-size:clamp(1.55rem,2.5vw,2rem);margin:2.3em 0 .65em;padding-top:1em;position:relative}
.jart .jbody h2::before{content:"";position:absolute;left:0;top:0;width:36px;height:2px;background:var(--red-700)}
.jart .jbody a{color:var(--red-700)}
.jart .jfig{margin:2.2em 0}.jart .jfig img{width:100%;height:auto;max-height:520px;object-fit:cover}
@media (min-width:1000px){.jart .jfig{margin-inline:-72px}}
.jart .jfig figcaption{font-size:.8rem;color:#9a8f84;padding:.8em 0 0}
.anav{display:grid;grid-template-columns:1fr 1fr;gap:clamp(14px,3vw,36px);max-width:41rem;margin:3.4em auto 0;padding-top:1.6em;border-top:1px solid var(--line)}
@media (max-width:640px){.anav{grid-template-columns:1fr}}
.anav a{display:block;text-decoration:none;color:inherit}.anav small{display:block;font:500 .72rem/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3);margin-bottom:.7em}
.anav b{font:500 1.25rem/1.25 var(--serif)}.anav .nx{text-align:right}.anav a:hover b{color:var(--red-700)}

/* ---- Cart: header button, “+”/stepper controls, drawer, sticky bar ----------------------------------------------------------- */
html:not(.js) .cart-ctl,html:not(.js) .cart-fab{display:none!important}
.cart-n{position:absolute;top:-6px;right:-6px;min-width:19px;height:19px;padding:0 5px;border-radius:99px;background:var(--red-600);color:#fff;font:600 .68rem/19px var(--sans);text-align:center}
.cart-n[hidden]{display:none}
.cart-ctl{display:inline-flex;align-items:center;gap:6px;vertical-align:middle;flex:none}
.cart-ctl[hidden]{display:none}
.cart-lab{font:500 .66rem/1 var(--sans);letter-spacing:.1em;color:var(--ink-3);font-style:normal;margin-right:2px}
.cart-add,.cart-dec,.cart-inc{display:inline-flex;align-items:center;justify-content:center;width:30px;height:30px;border:1px solid var(--red-700);border-radius:50%;background:transparent;color:var(--red-700);font:500 1.15rem/1 var(--sans);padding:0;cursor:pointer;transition:background .25s,color .25s,transform .2s}
.cart-add:hover,.cart-inc:hover,.cart-dec:hover{background:var(--red-700);color:#fff}
.cart-add:active,.cart-inc:active,.cart-dec:active{transform:scale(.92)}
.cart-q{min-width:1.5em;text-align:center;font:600 .98rem/1 var(--sans);font-variant-numeric:tabular-nums;color:var(--ink)}
.cart-ctl[data-style="pill"] .cart-add{width:auto;height:42px;border-radius:99px;padding:0 1.5em;font:500 .8rem/1 var(--sans);letter-spacing:.14em;text-transform:uppercase}
:lang(zh) .cart-ctl[data-style="pill"] .cart-add{letter-spacing:.2em;font-size:.9rem}
.cart-ctl[data-style="pill"].on{border:1px solid var(--line);border-radius:99px;padding:4px;background:var(--card)}
.cart-ctl[data-style="pill"].on .cart-q{min-width:2.2em}
.cart-out{font-size:.78rem;color:var(--ink-3);letter-spacing:.06em;white-space:nowrap}
.cart-var{display:inline-flex;gap:10px;margin-left:8px}
.set-act{padding-top:16px;display:flex;justify-content:flex-end}
.feat .btn-row{align-items:center}
.cart-ov{position:fixed;inset:0;z-index:150;background:rgba(21,13,9,.55);backdrop-filter:blur(2px)}
.cart-ov[hidden],.cart-dr[hidden]{display:none}
body.cart-open{overflow:hidden}
.cart-dr{position:fixed;top:0;right:0;bottom:0;z-index:160;width:min(430px,100vw);display:flex;flex-direction:column;background:var(--ivory);color:var(--ink);box-shadow:-20px 0 60px rgba(0,0,0,.35);border-left:1px solid var(--gold);transform:translateX(100%);transition:transform .35s var(--ease);outline:0}
.cart-dr.in{transform:none}
.cart-dr>header{display:flex;align-items:center;justify-content:space-between;gap:12px;background:var(--red-800);color:var(--ivory);padding:18px 22px;padding-top:max(18px,env(safe-area-inset-top))}
.cart-dr h2{margin:0;font-size:1.5rem;color:#fff}
.cart-x{width:36px;height:36px;border:1px solid rgba(247,241,229,.5);border-radius:50%;background:transparent;color:#fff;font-size:1.4rem;line-height:1;cursor:pointer}.cart-x:hover{background:rgba(255,255,255,.15)}
.cart-toast{display:flex;justify-content:space-between;align-items:center;gap:10px;background:var(--ink);color:var(--ivory);font-size:.86rem;padding:10px 22px}
.cart-toast[hidden]{display:none}.cart-toast button{background:none;border:0;color:var(--gold-2);text-decoration:underline;cursor:pointer;font:inherit}
.cart-body{flex:1;overflow:auto;padding:6px 22px}
.cart-empty{padding:48px 6px;text-align:center;color:var(--ink-2)}.cart-empty-t{font:500 1.5rem/1.2 var(--serif);color:var(--ink);margin-bottom:.4em}
.cart-lines{list-style:none;margin:0;padding:0}
.cl{display:grid;grid-template-columns:52px minmax(0,1fr) auto 26px;gap:8px 12px;align-items:center;padding:14px 0;border-bottom:1px solid var(--line)}
.cl-th{grid-row:1/3;align-self:start;width:52px;height:52px;border-radius:3px;object-fit:cover;background:var(--paper-2)}
.cl-th.ph{display:flex;align-items:center;justify-content:center;font:600 1.3rem/1 "Noto Serif SC",serif;color:var(--gold-3);border:1px solid var(--line);background:var(--card)}
.cl-i b{display:block;font:500 1.08rem/1.25 var(--serif)}:lang(zh) .cl-i b{font-family:var(--sans);font-weight:600;font-size:.98rem}
.cl-i small{display:block;font-size:.78rem;color:var(--ink-3);margin-top:2px}.cl-i small.bad{color:var(--red-600)}
.cl-s{min-width:4.4em;text-align:right;font-weight:600}.cl-q{color:var(--ink-3)}
.cl.off .cl-i b,.cl.off .cl-s{opacity:.55}
.cl-x{width:26px;height:26px;border:0;background:none;color:var(--ink-3);font-size:1.2rem;line-height:1;cursor:pointer;border-radius:50%}.cl-x:hover{color:var(--red-700);background:rgba(138,22,24,.08)}
.cart-foot{border-top:1px solid var(--line);background:var(--card);padding:16px 22px;padding-bottom:max(18px,env(safe-area-inset-bottom))}
.cart-total{display:flex;justify-content:space-between;align-items:baseline;font:500 1.15rem/1 var(--serif)}.cart-total b{font:600 1.6rem/1 var(--serif);color:var(--red-700)}
.cart-note{font-size:.76rem;color:var(--ink-3);margin:.5em 0 0}
.cart-actions{display:grid;gap:10px;margin-top:14px}.cart-actions .btn{width:100%;min-height:48px}
.cart-actions .btn[disabled]{opacity:.4;pointer-events:none}
.cart-clear{display:block;margin:12px auto 0;background:none;border:0;color:var(--ink-3);font:inherit;font-size:.82rem;text-decoration:underline;cursor:pointer}
.cart-soon{margin-top:14px;padding:14px 16px;border:1px dashed var(--gold-3);border-radius:var(--radius);background:rgba(182,149,86,.08)}
.cart-soon b{display:block;font:500 1.15rem/1.2 var(--serif);margin-bottom:.3em}.cart-soon p{font-size:.88rem;color:var(--ink-2);margin:0 0 .9em}.cart-soon .btn{width:100%}

@media (prefers-reduced-motion:reduce){.cart-dr{transition:none}}

/* floating cart button (bottom-right) */
.cart-fab{position:fixed;right:clamp(14px,2vw,26px);bottom:clamp(14px,2vw,26px);z-index:85;width:58px;height:58px;border-radius:50%;border:1px solid var(--gold);background:var(--red-800);color:#fff;display:flex;align-items:center;justify-content:center;padding:0;cursor:pointer;box-shadow:0 12px 30px rgba(21,13,9,.4);transition:transform .3s var(--ease),background .3s}
.cart-fab svg{width:25px;height:25px}.cart-fab:hover{background:var(--red-600);transform:translateY(-2px)}
.cart-fab.has{animation:cartpop .5s var(--ease)}
.cart-fab .cart-n{background:var(--gold);color:var(--wood-950)}
body.cart-open .cart-fab{display:none}
@keyframes cartpop{0%{transform:scale(.85)}60%{transform:scale(1.08)}100%{transform:none}}
@media (max-width:900px){.cart-fab{bottom:calc(var(--bar-h) + 14px + env(safe-area-inset-bottom));width:54px;height:54px}}
/* “+” sits at the bottom-right corner of each dish without touching the row layout */
.dish,.feat .body,.set{position:relative}
.dish>div>.cart-ctl{position:absolute;right:0;bottom:14px}
.dish>div>.cart-ctl.on{background:var(--ivory);border-radius:99px}
.dish .desc,.dish .tags{padding-right:44px}
.feat .body>.cart-ctl{position:absolute;right:clamp(16px,2.4vw,28px);bottom:clamp(16px,2.4vw,28px)}
.set .set-act{position:absolute;right:16px;bottom:12px;padding:0}
.set{padding-bottom:50px}

.cl-i{grid-column:2;grid-row:1}.cl>.cl-q,.cl>.cart-ctl{grid-column:2;grid-row:2;justify-self:start}.cl-s{grid-column:3;grid-row:1/3;align-self:center}.cl-x{grid-column:4;grid-row:1/3;align-self:center}

.to-top{display:inline-flex;align-items:center;gap:.5em;color:rgba(247,241,229,.78);text-decoration:none;letter-spacing:.12em;text-transform:uppercase;font-size:.78rem;border:1px solid rgba(182,149,86,.45);border-radius:99px;padding:.6em 1.2em;transition:background .3s,color .3s}
.to-top:hover{background:var(--gold);color:var(--wood-950)}
:lang(zh) .to-top{letter-spacing:.2em;text-transform:none;font-size:.88rem}

/* ---- Dish detail pop-up ---------------------------------------------------------------------------------------------------- */
.dish-open{all:unset;cursor:pointer;color:inherit;font:inherit;letter-spacing:inherit;text-decoration:none}
.dish-open:hover{color:var(--red-700)}.dish-open:focus-visible{outline:2px solid var(--gold);outline-offset:3px;border-radius:2px}
.dish[data-dish],.feat[data-dish],.set[data-dish]{cursor:pointer}
body.dm-open{overflow:hidden}
.dm-ov{position:fixed;inset:0;z-index:170;background:rgba(21,13,9,.62);backdrop-filter:blur(3px);opacity:0;transition:opacity .25s}
.dm-ov.in{opacity:1}.dm-ov[hidden],.dm[hidden]{display:none}
.dm{position:fixed;z-index:175;left:50%;top:50%;width:min(580px,calc(100vw - 24px));max-height:min(92vh,860px);display:flex;flex-direction:column;background:var(--ivory);color:var(--ink);border:1px solid var(--gold);border-radius:6px;box-shadow:0 30px 80px rgba(0,0,0,.5);transform:translate(-50%,-46%) scale(.97);opacity:0;transition:transform .3s var(--ease),opacity .25s;outline:0;overflow:hidden}
.dm.in{transform:translate(-50%,-50%);opacity:1}
.dm-x{position:absolute;top:10px;right:10px;z-index:3;width:40px;height:40px;border-radius:50%;border:1px solid rgba(247,241,229,.7);background:rgba(21,13,9,.55);color:#fff;font-size:1.6rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0 0 3px}
.dm-x:hover{background:var(--red-700)}
.dm-scroll{overflow:auto;flex:1;overscroll-behavior:contain}
.dm-img{margin:0;aspect-ratio:16/10;background:var(--paper-2);position:relative;overflow:hidden}.dm-img img{width:100%;height:100%;object-fit:cover}
.dm-img.none{aspect-ratio:auto;height:96px;background:var(--red-800);display:flex;align-items:center;justify-content:center}.dm-seal{font:600 2.4rem/1 "Noto Serif SC",serif;color:var(--gold-2);border:1px solid var(--gold-3);padding:.1em .3em}
.dm-body{padding:clamp(18px,3vw,28px) clamp(18px,3.4vw,32px) 8px}
.dm h2{font-size:clamp(1.55rem,3vw,2rem);margin:0 0 .15em}.dm-alt{font:500 .95rem/1.3 "Noto Serif SC","Songti SC",serif;color:var(--ink-3);margin:0 0 .5em;letter-spacing:.04em}
.dm-price{font:600 1.25rem/1 var(--serif);color:var(--red-700);margin:.4em 0 .8em}
.dm-desc{color:var(--ink-2);margin:0 0 1.1em}
.dm-sec{margin:0 0 1.2em;padding-top:1em;border-top:1px solid var(--line)}.dm-sec.dm-flat{border-top:0;padding-top:0}
.dm-sec h3{font:500 .72rem/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--red-700);margin:0 0 .8em}.dm-sec h3:empty{display:none}
:lang(zh) .dm-sec h3{letter-spacing:.24em;font-size:.82rem}
.dm-sec p{margin:0 0 .5em}.dm-note{font-size:.84rem;color:var(--ink-3)}
.dm-sub{font:600 .8rem/1 var(--sans);letter-spacing:.06em;color:var(--ink-2);margin:.9em 0 .5em!important}
.dm-list{list-style:none;margin:0;padding:0;display:grid;gap:7px}
.dm-list li{display:flex;gap:10px;align-items:flex-start}
.dm-i{flex:none;width:22px;height:22px;color:var(--red-700);display:inline-flex}.dm-i svg{width:100%;height:100%}
.dm-list .tbc .dm-i,.dm-list .maybe .dm-i{color:var(--gold-3)}.dm-list .hot .dm-i{color:var(--red-600);width:auto}
.dm-list .hot .dm-i svg{width:20px;height:20px}
.dm-t b{font-weight:500}.dm-t small{display:block;font-size:.78rem;color:var(--ink-3);margin-top:1px}
.dm-list .ok .dm-t b::after{content:" ✓";color:var(--red-700)}
.dm-list .tbc .dm-t b::after{content:" ?";color:var(--gold-3)}
.dm-list .maybe .dm-t b::after{content:" △";color:var(--gold-3)}
.dm-other{display:flex;gap:8px;align-items:center;margin-top:.8em!important;font-size:.9rem;color:var(--ink-2)}.dm-other svg{width:18px;height:18px;color:var(--gold-3)}
.dm-disc{font-size:.76rem;color:var(--ink-3);line-height:1.5;margin-top:.5em!important}
.dm-set{margin:0;padding-left:1.3em;color:var(--ink-2)}.dm-set li{margin-bottom:.3em}
.dm-foot{border-top:1px solid var(--line);background:var(--card);padding:12px clamp(16px,3vw,28px);padding-bottom:max(12px,env(safe-area-inset-bottom));display:flex;flex-wrap:wrap;gap:10px 14px;align-items:center}
.dm-foot.plain{justify-content:space-between}
.dm-var{display:flex;gap:8px;width:100%}
.dm-chip{flex:1;border:1px solid var(--line);background:transparent;border-radius:99px;padding:.55em 1em;font:500 .85rem/1 var(--sans);cursor:pointer}
.dm-chip[aria-checked="true"]{background:var(--red-700);border-color:var(--red-700);color:#fff}
.dm-step{display:inline-flex;align-items:center;gap:4px;border:1px solid var(--line);border-radius:99px;padding:3px;background:var(--ivory)}
.dm-step button{width:34px;height:34px;border:0;border-radius:50%;background:transparent;color:var(--red-700);font-size:1.2rem;cursor:pointer}.dm-step button:hover:not(:disabled){background:var(--red-700);color:#fff}.dm-step button:disabled{opacity:.35;cursor:default}
.dm-step output{min-width:2.2em;text-align:center;font-weight:600}
.dm-add{flex:1;min-width:180px;min-height:46px}.dm-add[disabled]{opacity:.55}
.dm-in{width:100%;margin:0;font-size:.8rem;color:var(--ink-3);text-align:right}
@media (max-width:560px){.dm{max-height:94vh}.dm-img{aspect-ratio:4/3}}
@media (prefers-reduced-motion:reduce){.dm,.dm-ov{transition:none}}

/* ===== Beijing on Screen — cards + on-site viewer (viewer.js) ===== */
.vgrid .vcard{aspect-ratio:4/5}
.vcard>img{transition:transform .6s cubic-bezier(.2,.6,.2,1)}.vcard:hover>img,.vcard:focus-visible>img{transform:scale(1.05)}
.vcard small{display:block;margin-top:.6em;font-size:.72rem;letter-spacing:.05em;color:rgba(247,241,229,.6)}
.vcard .play{transition:background .25s,transform .25s}.vcard:hover .play,.vfeat:hover .play{background:var(--red-700);border-color:var(--red-700);transform:scale(1.06)}
.vfeat{display:grid;grid-template-columns:1.35fr 1fr;background:var(--wood-800);color:var(--ivory);border-radius:var(--radius);overflow:hidden;margin-bottom:clamp(18px,3vw,30px);isolation:isolate}
.vfeat-m{position:relative;aspect-ratio:16/9;background:#000;overflow:hidden}.vfeat-m img{width:100%;height:100%;object-fit:cover;opacity:.92;transition:transform .6s cubic-bezier(.2,.6,.2,1)}.vfeat:hover .vfeat-m img{transform:scale(1.04)}
.vfeat .play{position:absolute;top:50%;left:50%;width:76px;height:76px;margin:-38px;border-radius:50%;border:1px solid rgba(247,241,229,.8);display:grid;place-items:center;background:rgba(21,13,9,.4);backdrop-filter:blur(3px);color:#fff;transition:background .25s,transform .25s}
.vfeat .play svg{width:26px;height:26px;margin-left:4px}
.vfeat-b{padding:clamp(22px,3.4vw,46px);display:flex;flex-direction:column;justify-content:center;align-items:flex-start}
.vfeat-b h2{color:#fff;font-size:clamp(1.6rem,2.8vw,2.4rem);margin:.1em 0 .3em}
.vfeat-h{color:rgba(247,241,229,.85);font-size:1.05rem;margin:0}.vfeat-s{font-size:.82rem;color:rgba(247,241,229,.6);margin:.5em 0 1.4em}
@media (max-width:860px){.vfeat{grid-template-columns:1fr}}
.vnote{max-width:64ch;margin:clamp(26px,3.4vw,44px) auto 0;text-align:center}

body.vm-open{overflow:hidden}
.vm-ov{position:fixed;inset:0;z-index:210;background:rgba(21,13,9,.8);backdrop-filter:blur(4px);opacity:0;transition:opacity .25s}
.vm-ov.in{opacity:1}.vm-ov[hidden],.vm[hidden]{display:none}
.vm{position:fixed;z-index:211;left:50%;top:50%;width:min(1040px,94vw);max-height:92vh;overflow:auto;transform:translate(-50%,-47%);opacity:0;transition:opacity .25s,transform .25s;background:var(--ivory);border-radius:var(--radius);box-shadow:0 30px 80px rgba(0,0,0,.5);overscroll-behavior:contain;outline:0}
.vm.in{opacity:1;transform:translate(-50%,-50%)}
.vm-x{position:absolute;top:10px;right:10px;z-index:4;width:40px;height:40px;border-radius:50%;border:1px solid rgba(247,241,229,.7);background:rgba(21,13,9,.6);color:#fff;font-size:1.6rem;line-height:1;cursor:pointer;display:flex;align-items:center;justify-content:center;padding:0 0 3px}.vm-x:hover{background:var(--red-700)}
.vm-g{display:grid}.vm-g.port{grid-template-columns:minmax(0,5fr) minmax(0,6fr)}
.vm-stage{background:#0d0907;display:flex;justify-content:center;align-items:flex-start}
.vm-g.port .vm-stage{padding:clamp(14px,2vw,26px);align-items:center}
.vm-player{position:relative;width:min(100%,calc(74vh*var(--r,.5625)));aspect-ratio:var(--r,.5625);background:#000;border-radius:6px;overflow:hidden}
.vm-g.land .vm-stage{padding-top:52px}.vm-g.land .vm-player{width:min(100%,calc(60vh*var(--r,1.7778)));border-radius:0}
.vm-player.ig{aspect-ratio:auto;width:min(100%,400px);height:740px;background:#fff}
.vm-player iframe{position:absolute;inset:0;width:100%;height:100%;border:0;background:#000}
.vm-load{position:absolute;inset:0;display:grid;place-items:center;color:rgba(247,241,229,.7);font-size:.9rem;letter-spacing:.06em}.vm-player.ig .vm-load{color:#777}
.vm-replay{position:absolute;top:50%;left:50%;transform:translate(-50%,-50%)}
.vm-info{padding:clamp(20px,3vw,36px);display:flex;flex-direction:column;align-items:flex-start}
.vm-by{font:500 .72rem/1.4 var(--sans);letter-spacing:.14em;text-transform:uppercase;color:var(--red-700);margin:0 0 .7em;padding-right:44px}
:lang(zh) .vm-by{letter-spacing:.1em;font-size:.82rem}
.vm h2{font-size:clamp(1.5rem,2.6vw,2.1rem);margin:0 0 .7em}
.vm-act{margin:0 0 1.2em}
.vm-leave{border:1px solid var(--gold-3);border-left:4px solid var(--gold);background:var(--paper-2);border-radius:var(--radius);padding:16px 18px;margin:0 0 1.2em;width:100%}
.vm-leave h3{font:500 1.1rem/1.3 var(--serif);margin:0 0 .35em}.vm-leave p{margin:0 0 .9em;font-size:.92rem;color:var(--ink-2)}
.vm-leave-b{display:flex;flex-wrap:wrap;gap:10px}.vm-leave .btn{min-height:44px;padding:.7em 1.3em}
.vm-ah{font:500 .72rem/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--ink-3);margin:.4em 0 .7em;padding-top:1.1em;border-top:1px solid var(--line);width:100%}
:lang(zh) .vm-ah{letter-spacing:.24em;font-size:.82rem}
.vm-about{color:var(--ink-2);margin:0 0 1em;line-height:1.7}
.vm-small{font-size:.78rem;color:var(--ink-3);line-height:1.55;margin:0 0 .6em}
@media (max-width:800px){
  .vm-g.port{grid-template-columns:1fr}.vm-player.ig{height:700px}
  .vm{width:100vw;max-height:94vh;top:auto;bottom:0;left:0;transform:translateY(24px);border-radius:14px 14px 0 0}.vm.in{transform:none}
}
@media (prefers-reduced-motion:reduce){.vm,.vm-ov,.vcard>img,.vfeat-m img{transition:none}}

/* Media page: social post with thumbnail that opens the same viewer */
.press-th{display:block;position:relative;margin-top:14px;width:132px;aspect-ratio:1;border-radius:var(--radius);overflow:hidden;background:var(--wood-800)}
.press-th img{width:100%;height:100%;object-fit:cover}
.press-th .play{position:absolute;top:50%;left:50%;width:42px;height:42px;margin:-21px;border-radius:50%;border:1px solid rgba(247,241,229,.85);display:grid;place-items:center;background:rgba(21,13,9,.45);color:#fff}.press-th .play svg{width:15px;height:15px;margin-left:2px}
.press-vm h3{font-size:1.35rem}
@media (max-width:640px){.press-th{width:100%;max-width:220px}}
.vfeat-b .eyebrow{line-height:1.6}
@media (max-width:700px){
  .vgrid .vcard .play{top:12px;left:auto;right:12px;margin:0;width:42px;height:42px}.vgrid .vcard .play svg{width:15px;height:15px}
  .vgrid .vcard .tag{max-width:calc(100% - 78px)}.vgrid .vcard h3{font-size:1.08rem}.vgrid .vcard p{font-size:.78rem}
  .vgrid .vcard .b{padding:14px}
}
@media (max-width:800px){.vm-g.port .vm-player:not(.ig){width:min(100%,calc(54vh*var(--r,.5625)))}.vm-g.port .vm-stage{padding:12px 12px 8px}.vm-info{padding:16px 18px 24px}}



/* ==========================================================================
   Dining & Private Rooms (round 2) — overview · Medium (blue-and-white 雅间) · Large (antique gold)
   Immersive, editorial: full-bleed photography, offset image/text, hairline ornament. JS: assets/js/rooms.js
   ========================================================================== */
.rooms-pg{--rp-bg:var(--ivory);--rp-ink:var(--ink);--rp-acc:var(--red-700);--rp-line:rgba(44,29,20,.18);background:var(--rp-bg);color:var(--rp-ink);overflow-x:clip}
.theme-porcelain{--rp-bg:#fafbfc;--rp-ink:#26314a;--rp-acc:#2b4c8c;--rp-line:rgba(43,76,140,.22);
  --ink-blue:#1c2a4a;--cobalt:#2b4c8c;--cobalt-2:#4a6aa8;--mist:#edf1f5;--mist-2:#dfe6ee;--porcelain:#fbfcfd;--wood:#6e4f37;--wood-2:#9a7656}
.theme-gold{--rp-bg:#f7f2e6;--rp-ink:#2a2119;--rp-acc:#9a7b45;--rp-line:rgba(154,123,69,.35);
  --gold-a:#a88a55;--champ:#d9c79f;--ivory-2:#efe6d1;--umber:#1d1611;--umber-2:#2a2019}
.rooms-pg h2{font-size:clamp(2rem,3.8vw,3.2rem)}
.theme-porcelain h2,.theme-porcelain h3{color:var(--ink-blue)}
.theme-porcelain .eyebrow,.theme-gold .eyebrow{color:var(--rp-acc)}
.rooms-pg .orn{display:block;width:84px;height:auto;margin:0 0 1.2rem;color:var(--rp-acc)}
.rooms-pg .center .orn{margin-inline:auto}
.ph{margin:0;position:relative;overflow:hidden;background:var(--paper-2)}
.ph img{width:100%;height:100%;object-fit:cover}

/* ---- hero: full-bleed photograph, quiet type at the lower left ------------------------------------- */
.rh{position:relative;isolation:isolate;overflow:hidden;color:var(--ivory);background:var(--wood-950);height:100vh;height:100svh;min-height:560px;max-height:1100px;display:flex;align-items:flex-end;padding-bottom:clamp(64px,10vh,120px)}
.rh-img{position:absolute;inset:0;z-index:-2}
.rh-img img{width:100%;height:100%;object-fit:cover}
.rh::before{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(0deg,rgba(15,10,7,.86),rgba(15,10,7,.2) 58%,rgba(15,10,7,.4)),linear-gradient(90deg,rgba(15,10,7,.62),rgba(15,10,7,0) 62%)}
.theme-porcelain .rh::before{background:linear-gradient(0deg,rgba(18,28,52,.86),rgba(18,28,52,.18) 58%,rgba(18,28,52,.4)),linear-gradient(90deg,rgba(18,28,52,.6),rgba(18,28,52,0) 62%)}
.rh-in{position:relative}
.rh .crumbs{margin-bottom:clamp(18px,3vh,34px);opacity:.75}
.rh-k{font:500 .76rem/1 var(--sans);letter-spacing:.26em;text-transform:uppercase;color:var(--gold-2);margin:0 0 1.1rem}
:lang(zh) .rh-k{letter-spacing:.24em;font-size:.88rem}
.theme-porcelain .rh-k{color:#c9d6ec}
.rh h1{font-size:clamp(2.8rem,6.4vw,5.8rem);max-width:14ch;margin:0 0 .35em;font-weight:500;letter-spacing:-.01em}
:lang(zh) .rh h1{font-size:clamp(2.4rem,5.4vw,4.6rem);letter-spacing:.06em}
.rh-lede{max-width:30em;font-size:clamp(1.02rem,1.4vw,1.2rem);color:rgba(247,241,229,.88);margin:0}
.rh-cue{position:absolute;left:50%;bottom:18px;width:1px;height:54px;overflow:hidden;color:inherit}
.rh-cue i{position:absolute;inset:0;background:linear-gradient(transparent,currentColor);animation:cue 2.6s var(--ease) infinite}
@keyframes cue{0%{transform:translateY(-100%)}60%,100%{transform:translateY(100%)}}
@keyframes rise{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:none}}

/* ---- overview ------------------------------------------------------------------------------------ */
.ov-in{padding-block:clamp(72px,11vw,160px) clamp(56px,8vw,110px)}
.ov-in-g{display:grid;grid-template-columns:1.15fr .85fr;gap:clamp(28px,7vw,120px);align-items:end}
.ov-big{font:500 clamp(1.9rem,3.6vw,3.1rem)/1.18 var(--serif);margin:0;max-width:16ch;color:var(--ink)}
:lang(zh) .ov-big{font-weight:600;line-height:1.5;letter-spacing:.03em;max-width:18em;font-size:clamp(1.6rem,2.8vw,2.4rem)}
.ov-txt p{color:var(--ink-2)}.ov-txt strong{color:var(--ink);font-weight:500}
.ov-links{display:flex;flex-wrap:wrap;gap:8px 26px;margin-top:1.6em}
.ov-links a{font:500 .76rem/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;text-decoration:none;padding-bottom:.5em;border-bottom:1px solid var(--gold)}
:lang(zh) .ov-links a{letter-spacing:.12em;font-size:.9rem}
@media (max-width:860px){.ov-in-g{grid-template-columns:1fr}}

/* dining hall: a horizontal, draggable "unrolling" gallery between two scroll rods */
.hall{padding-block:clamp(40px,6vw,80px) clamp(64px,9vw,120px);background:linear-gradient(var(--ivory),var(--paper) 60%)}
.hall-h{display:flex;justify-content:space-between;align-items:flex-end;gap:24px 60px;flex-wrap:wrap;margin-bottom:clamp(26px,4vw,48px)}
.hall-h h2{margin:0}
.hall-note{max-width:34em;margin:0;color:var(--ink-2)}
.hs-track{--lead:max(var(--gut),calc((100vw - var(--maxw)) / 2));display:flex;gap:clamp(12px,1.6vw,22px);overflow-x:auto;overscroll-behavior-x:contain;scrollbar-width:none;padding:0 var(--lead) 46px;cursor:grab}
.hs-track::-webkit-scrollbar{display:none}
.hs-track.drag{cursor:grabbing}
.hs-track.drag img{pointer-events:none}
.hs-track:focus-visible{outline:2px solid var(--gold);outline-offset:-2px}
.hs-p{flex:none;position:relative;margin:0;height:clamp(300px,62vh,640px)}
.hs-p img{width:100%;height:100%;object-fit:cover;-webkit-user-drag:none;user-select:none}
.hs-p.w-xl{aspect-ratio:4/3}.hs-p.w-l{aspect-ratio:2/1}.hs-p.w-m{aspect-ratio:5/3}
.hs-p figcaption{position:absolute;left:0;top:100%;margin-top:12px;font-size:.82rem;color:var(--ink-3);letter-spacing:.02em;white-space:nowrap}
.hs-lead{width:clamp(220px,24vw,320px);display:flex;flex-direction:column;justify-content:flex-end;padding-left:34px}
.hs-lead p{font:italic 500 clamp(1.15rem,1.6vw,1.4rem)/1.45 var(--serif);color:var(--ink-2);margin:0}
:lang(zh) .hs-lead p{font-style:normal;font-size:1.05rem;line-height:1.9}
.hs-end{width:30px}
.hs-rod{position:absolute;left:0;top:-14px;bottom:-14px;width:9px;border-radius:5px;background:linear-gradient(90deg,#3a2618,#8a6446 45%,#3a2618)}
.hs-rod::before,.hs-rod::after{content:"";position:absolute;left:-3px;width:15px;height:15px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#e8d6a8,var(--gold) 55%,var(--gold-3))}
.hs-rod::before{top:-8px}.hs-rod::after{bottom:-8px}
.hs-end .hs-rod{left:auto;right:12px}
.hs-ui{display:flex;align-items:center;gap:12px}
.hs-bar{flex:1;height:1px;background:var(--line);position:relative;overflow:hidden;margin-right:14px}
.hs-bar i{position:absolute;inset:0;background:var(--gold-3);transform-origin:left;transform:scaleX(.08);transition:transform .25s linear}
.hs-b{width:46px;height:46px;border-radius:50%;border:1px solid var(--line);background:transparent;font-size:1.05rem;transition:background .3s,border-color .3s}
.hs-b:hover{background:var(--ink);color:var(--ivory);border-color:var(--ink)}
@media (max-width:700px){.hs-p{height:clamp(240px,58vw,380px)}.hs-lead{width:66vw;padding-left:26px}.hs-b{display:none}}

/* gateways into the two rooms */
.gates{padding-top:clamp(64px,9vw,130px)}
.gates-h{margin-bottom:clamp(30px,4vw,54px)}
.gates-g{display:grid;grid-template-columns:1fr 1fr}
.gate{position:relative;display:block;overflow:hidden;height:clamp(500px,86vh,820px);color:var(--ivory);text-decoration:none;isolation:isolate}
.gate:hover{color:var(--ivory)}
.gate-img,.gate-img img{position:absolute;inset:0;width:100%;height:100%;z-index:-2}
.gate-img img{object-fit:cover;transition:transform 2.4s var(--ease)}
.gate:hover .gate-img img{transform:scale(1.045)}
.gate::before{content:"";position:absolute;inset:0;z-index:-1;transition:opacity .8s var(--ease)}
.gate-m::before{background:linear-gradient(0deg,rgba(250,251,252,.98) 0%,rgba(250,251,252,.92) 26%,rgba(250,251,252,0) 52%)}
.gate-l::before{background:linear-gradient(0deg,rgba(23,17,12,.95) 8%,rgba(23,17,12,.7) 36%,rgba(23,17,12,0) 68%)}
.gate-t{position:absolute;left:0;right:0;bottom:0;padding:clamp(28px,4vw,64px);display:flex;flex-direction:column;gap:.5rem}
.gate-m .gate-t{color:#1c2a4a}
.gate-t::before{content:"";display:block;width:180px;height:30px;margin-bottom:.8rem;-webkit-mask:var(--m) left center/auto 30px repeat-x;mask:var(--m) left center/auto 30px repeat-x}
.gate-m .gate-t::before{--m:url(/assets/img/orn/lotus-scroll.svg);background:#2b4c8c;opacity:.7}
.gate-l .gate-t::before{--m:url(/assets/img/orn/cloud-band.svg);background:#c9ad74;opacity:.85}
.gate-t small{font:500 .74rem/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;opacity:.8}
:lang(zh) .gate-t small{letter-spacing:.18em;font-size:.86rem}
.gate-t b{font:500 clamp(2rem,3.6vw,3.2rem)/1.05 var(--serif)}
:lang(zh) .gate-t b{font-weight:700;letter-spacing:.06em}
.gate-t em{font-style:normal;max-width:28em;opacity:.85}
.gate-t i{font:500 .76rem/1 var(--sans);font-style:normal;letter-spacing:.24em;text-transform:uppercase;display:flex;align-items:center;gap:14px;margin-top:.8rem}
.gate-t i::after,.spc-t i::after{content:"";height:1px;width:42px;background:currentColor;transition:width .7s var(--ease)}
.gate:hover .gate-t i::after,.spc:hover .spc-t i::after{width:96px}
@media (max-width:860px){.gates-g{grid-template-columns:1fr}.gate{height:clamp(440px,78vh,640px)}}
.ov-plan{background:var(--paper);padding-block:clamp(56px,8vw,110px)}
.r-terms{font-size:.86rem;color:var(--ink-3);border-left:1px solid var(--rp-acc,var(--gold));padding-left:.9em;max-width:60ch}

/* ---- scroll-transition: Scheme A (shared-element zoom) -------------------------------------------- */
.zoomer{position:fixed;z-index:500;overflow:hidden;pointer-events:none;transition:top .9s cubic-bezier(.7,0,.2,1),left .9s cubic-bezier(.7,0,.2,1),width .9s cubic-bezier(.7,0,.2,1),height .9s cubic-bezier(.7,0,.2,1)}
.zoomer img{width:100%;height:100%;object-fit:cover}
.zoomer::after{content:"";position:absolute;inset:0;background:linear-gradient(0deg,rgba(15,10,7,.86),rgba(15,10,7,.2) 58%,rgba(15,10,7,.4)),linear-gradient(90deg,rgba(15,10,7,.62),rgba(15,10,7,0) 62%);opacity:0;transition:opacity .9s}
.zoomer.go::after{opacity:1}
.js .rh-l .rh-img img{animation:settle 2.8s var(--ease) both}
.zoom-in .rh-l .rh-img img{animation:none}
.js .rh-l .rh-in>*{animation:rise 1.3s var(--ease) both}
.js .rh-l .rh-in>:nth-child(1){animation-delay:.35s}.js .rh-l .rh-in>:nth-child(2){animation-delay:.5s}.js .rh-l .rh-in>:nth-child(3){animation-delay:.65s}.js .rh-l .rh-in>:nth-child(4){animation-delay:.85s}
@keyframes settle{from{transform:scale(1.1)}to{transform:none}}

/* ---- scroll-transition: Scheme B (horizontal unrolling) ------------------------------------------- */
.unveil{display:none}
.js .unveil{display:block;position:fixed;inset:0;z-index:400;pointer-events:none;animation:uvGone 0s 2.3s forwards}
.uv{position:absolute;top:0;bottom:0;width:50.4%;background:#fafbfc;overflow:visible}
.uv::before{content:"";position:absolute;inset:0;background:#2b4c8c;opacity:.07;-webkit-mask:url(/assets/img/orn/lotus-scroll.svg) center/240px 80px repeat;mask:url(/assets/img/orn/lotus-scroll.svg) center/240px 80px repeat}
.uv::after{content:"";position:absolute;top:0;bottom:0;width:12px;background:linear-gradient(90deg,#4a3222,#9a7656 45%,#4a3222);box-shadow:0 0 0 1px rgba(43,76,140,.35),0 0 24px rgba(28,42,74,.25)}
.uv-l{left:0;animation:uvL 1.7s .3s cubic-bezier(.76,0,.2,1) forwards}.uv-l::after{right:0}
.uv-r{right:0;animation:uvR 1.7s .3s cubic-bezier(.76,0,.2,1) forwards}.uv-r::after{left:0}
@keyframes uvL{to{transform:translateX(-101%)}}@keyframes uvR{to{transform:translateX(101%)}}@keyframes uvGone{to{visibility:hidden}}
.js .rh-m .rh-img img{animation:mOpen 2.6s .3s var(--ease) both}
@keyframes mOpen{from{transform:scale(1.07)}to{transform:none}}
.js .rh-m .rh-in>*{animation:rise 1.2s var(--ease) both}
.js .rh-m .rh-in>:nth-child(1){animation-delay:1.25s}.js .rh-m .rh-in>:nth-child(2){animation-delay:1.4s}.js .rh-m .rh-in>:nth-child(3){animation-delay:1.55s}.js .rh-m .rh-in>:nth-child(4){animation-delay:1.75s}

/* ---- bands (pattern hairlines, drawn with CSS masks so the colour stays in the theme) ---------------- */
.band{height:34px;background:var(--rp-acc);-webkit-mask:var(--m) center/auto 100% repeat-x;mask:var(--m) center/auto 100% repeat-x}
.band-lotus{--m:url(/assets/img/orn/lotus-scroll.svg);height:42px;opacity:.5;margin-top:clamp(56px,8vw,110px)}
.band-petal{--m:url(/assets/img/orn/petal-band.svg);height:40px;opacity:.38}
.band-cloud{--m:url(/assets/img/orn/cloud-band.svg);height:30px;opacity:.75;background:var(--gold-a);margin-block:clamp(36px,5vw,60px) 0}

/* ---- Medium: blue-and-white 雅间 ------------------------------------------------------------------- */
.m-rooms{padding-top:clamp(64px,9vw,130px);position:relative}
.m-rooms-g{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(30px,7vw,120px);align-items:start}
.m-rooms-t{padding-top:clamp(0px,6vw,90px)}
.m-rooms-t p{color:var(--rp-ink)}
.rim{padding:clamp(10px,1.2vw,16px);background:var(--porcelain);box-shadow:0 0 0 1px var(--rp-line),0 40px 70px -40px rgba(28,42,74,.35);overflow:visible}
.rim::before{content:"";position:absolute;inset:clamp(4px,.5vw,7px);border:1px solid rgba(43,76,140,.3);pointer-events:none;z-index:1}
.rim::after{content:"";position:absolute;z-index:-1;inset:auto -9% -12% 18%;height:70%;background:var(--mist)}
.rim img{aspect-ratio:2/1}
.m-rooms-f{position:relative;margin-top:calc(clamp(80px,14vw,200px) * -1);z-index:2}
.cap{font-size:.84rem;color:#6b7690;margin:22px 0 0 8%;letter-spacing:.02em}
@media (max-width:860px){.m-rooms-g{grid-template-columns:1fr}.m-rooms-f{margin-top:0}.m-rooms-t{padding-top:0}}
.m-win{background:linear-gradient(var(--mist),#f4f6f9);padding-bottom:clamp(70px,10vw,140px)}
.m-win .band-petal{margin-bottom:clamp(50px,7vw,100px);transform:scaleY(-1)}
.m-win-g{display:grid;grid-template-columns:1fr 1fr;gap:clamp(30px,7vw,120px);align-items:center}
.lat{position:relative;aspect-ratio:1;max-width:560px;width:100%;justify-self:end}
.lat::before{content:"";position:absolute;inset:0;background:var(--wood);opacity:.62;-webkit-mask:url(/assets/img/orn/lattice.svg) center/72px 72px repeat;mask:url(/assets/img/orn/lattice.svg) center/72px 72px repeat}
.lat{background:#f3efe8}
.lat::after{content:"";position:absolute;inset:0;border:clamp(8px,1vw,12px) solid var(--wood);box-shadow:inset 0 0 0 1px rgba(255,255,255,.12),0 30px 60px -30px rgba(40,26,16,.5)}
.lat-in{position:absolute;inset:11%;clip-path:url(#begonia);background:var(--porcelain)}
.lat-in img{width:100%;height:100%;object-fit:cover}
.win-line{position:absolute;inset:0;width:100%;height:100%;fill:none;stroke:var(--wood);stroke-width:14}
.m-win-t .orn{width:92px}
.m-win-t p{color:var(--rp-ink);max-width:32em}
.m-quiet{font:italic 500 1.08rem/1.5 var(--serif);color:#6b7690!important}
:lang(zh) .m-quiet{font-style:normal;font-size:.95rem}
@media (max-width:860px){.m-win-g{grid-template-columns:1fr}.lat{justify-self:center}}
.m-table{padding-block:clamp(80px,11vw,160px)}
.m-table-g{display:grid;grid-template-columns:.8fr 1.2fr;grid-template-rows:auto auto;gap:clamp(24px,4vw,56px) clamp(30px,6vw,100px)}
.mt-tall{grid-row:1/3;aspect-ratio:1176/1746;box-shadow:0 0 0 1px var(--rp-line)}
.mt-t{align-self:end;max-width:32em}
.mt-t p{color:var(--rp-ink)}
.mt-wide{aspect-ratio:2/1;margin-left:-16%;z-index:1;box-shadow:0 0 0 clamp(8px,1vw,14px) var(--rp-bg),0 0 0 calc(clamp(8px,1vw,14px) + 1px) var(--rp-line)}
@media (max-width:860px){.m-table-g{grid-template-columns:1fr}.mt-tall{grid-row:auto;max-height:80vh;width:80%}.mt-wide{margin-left:12%}}
.m-occ{position:relative;isolation:isolate;padding-block:clamp(70px,10vw,140px);background:var(--porcelain)}
.m-occ::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--cobalt);opacity:.045;-webkit-mask:url(/assets/img/orn/lotus-scroll.svg) center/360px 120px repeat;mask:url(/assets/img/orn/lotus-scroll.svg) center/360px 120px repeat}
.occl{list-style:none;margin:clamp(34px,5vw,64px) 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(24px,4vw,64px)}
.occl-4{grid-template-columns:repeat(4,1fr)}
.occl li{border-top:1px solid var(--rp-line);padding-top:22px;display:flex;flex-direction:column;gap:6px}
.occl-n{font:italic 500 1.1rem/1 var(--serif);color:var(--rp-acc);margin-bottom:10px}
:lang(zh) .occl-n{font-style:normal;font-family:"Noto Serif SC",serif}
.occl b{font:500 clamp(1.35rem,2vw,1.7rem)/1.2 var(--serif)}
:lang(zh) .occl b{font-weight:700;font-size:1.25rem}
.occl span:last-child{color:var(--ink-3)}
@media (max-width:860px){.occl,.occl-4{grid-template-columns:1fr 1fr}}
@media (max-width:520px){.occl,.occl-4{grid-template-columns:1fr}}

/* ---- inquiry + "explore another space" ------------------------------------------------------------- */
.r-inq{padding-block:clamp(80px,11vw,150px);text-align:center}
.r-inq h2{margin-bottom:.5em}
.r-inq-l{max-width:36em;margin:0 auto 1.8rem;color:var(--ink-2)}
.r-inq .r-terms{margin:2rem auto 0;text-align:left}
.r-back{margin-top:2rem}.r-back a{font:500 .76rem/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:var(--ink-3)}
:lang(zh) .r-back a{letter-spacing:.1em;font-size:.88rem}
.theme-porcelain .r-btn{background:var(--ink-blue);border-color:var(--ink-blue)}.theme-porcelain .r-btn:hover{background:var(--cobalt);border-color:var(--cobalt)}
.theme-gold .r-btn{background:var(--umber);border-color:var(--umber);color:var(--champ)}.theme-gold .r-btn:hover{background:var(--gold-a);border-color:var(--gold-a);color:var(--umber)}
.r-ghost{color:var(--rp-ink)!important}.r-ghost:hover{background:var(--rp-ink)!important;color:var(--rp-bg)!important;border-color:var(--rp-ink)!important}
.spc{position:relative;display:flex;align-items:center;overflow:hidden;height:clamp(440px,78vh,760px);isolation:isolate;text-decoration:none;color:var(--ivory)}
.spc:hover{color:var(--ivory)}
.spc-img,.spc-img img{position:absolute;inset:0;width:100%;height:100%;z-index:-2}
.spc-img img{object-fit:cover;transition:transform 2.6s var(--ease)}
.spc:hover .spc-img img{transform:scale(1.04)}
.spc::before{content:"";position:absolute;inset:0;z-index:-1}
.spc-large::before{background:linear-gradient(90deg,rgba(23,17,12,.9),rgba(23,17,12,.45) 55%,rgba(23,17,12,.15))}
.spc-medium::before{background:linear-gradient(90deg,rgba(250,251,252,.96),rgba(250,251,252,.78) 45%,rgba(250,251,252,.1))}
.spc-medium{color:#1c2a4a}.spc-medium:hover{color:#1c2a4a}
.spc-t{display:flex;flex-direction:column;gap:.55rem;width:min(100%,calc(var(--maxw) + var(--gut)*2));margin-inline:auto;padding-inline:var(--gut)}
.spc-t small{font:500 .74rem/1 var(--sans);letter-spacing:.26em;text-transform:uppercase;opacity:.8}
:lang(zh) .spc-t small{letter-spacing:.18em;font-size:.86rem}
.spc-t b{font:500 clamp(2.4rem,5vw,4.4rem)/1.04 var(--serif);max-width:12ch}
:lang(zh) .spc-t b{font-weight:700;letter-spacing:.06em}
.spc-t em{font-style:normal;max-width:26em;opacity:.88}
.spc-t i{font:500 .76rem/1 var(--sans);font-style:normal;letter-spacing:.24em;text-transform:uppercase;display:flex;align-items:center;gap:14px;margin-top:1rem}
.spc-medium .spc-t::before{content:"";width:200px;height:34px;background:#2b4c8c;opacity:.6;margin-bottom:.6rem;-webkit-mask:url(/assets/img/orn/lotus-scroll.svg) left center/auto 34px repeat-x;mask:url(/assets/img/orn/lotus-scroll.svg) left center/auto 34px repeat-x}
.spc-large .spc-t::before{content:"";width:200px;height:30px;background:#c9ad74;margin-bottom:.6rem;-webkit-mask:url(/assets/img/orn/cloud-band.svg) left center/auto 30px repeat-x;mask:url(/assets/img/orn/cloud-band.svg) left center/auto 30px repeat-x}

/* ---- Large: antique gold, dragon & cloud ------------------------------------------------------------ */
.rh-l::after{content:"";position:absolute;left:0;right:0;bottom:0;height:1px;background:linear-gradient(90deg,transparent,rgba(217,199,159,.7),transparent)}
.l-room{position:relative;isolation:isolate;overflow:hidden;background:var(--umber);color:#e9dfca;padding-block:clamp(90px,12vw,180px)}
.l-dragon{position:absolute;inset:0;width:100%;height:100%;z-index:-1;opacity:.16}
.l-room h2{color:#f3ead6}.l-room .eyebrow{color:var(--champ)}
.l-room-g{display:grid;grid-template-columns:.9fr 1.1fr;gap:clamp(30px,7vw,120px);align-items:center}
.l-room-t p{color:rgba(233,223,202,.82);max-width:32em}
.l-big{display:flex;align-items:baseline;gap:16px;margin-top:2rem!important;font:500 .78rem/1.3 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--champ)!important}
:lang(zh) .l-big{letter-spacing:.14em;font-size:.95rem}
.l-big span{font:500 clamp(4rem,8vw,6.6rem)/.9 var(--serif);letter-spacing:0;color:transparent;-webkit-text-stroke:1px var(--champ)}
.l-room-f{position:relative}.l-pair{position:relative;padding:0 0 12% 14%}
.l-fa{aspect-ratio:870/560;outline:1px solid rgba(217,199,159,.45);outline-offset:12px;overflow:visible}
.l-fa img{display:block}
.l-fb{position:absolute;left:0;bottom:0;width:38%;aspect-ratio:500/604;border:8px solid var(--umber);box-sizing:content-box}
@media (max-width:860px){.l-room-g{grid-template-columns:1fr}.l-pair{padding:0 0 16% 10%}}
.l-table{padding-block:clamp(70px,10vw,140px) clamp(80px,11vw,160px)}
.l-table-g{display:grid;grid-template-columns:repeat(12,1fr);align-items:center}
.l-tf{grid-column:1/9;grid-row:1;aspect-ratio:880/430;box-shadow:0 50px 80px -50px rgba(29,22,17,.55)}
.l-table-t{grid-column:8/13;grid-row:1;position:relative;z-index:1;background:var(--rp-bg);padding:clamp(26px,3.6vw,52px);box-shadow:0 0 0 1px var(--rp-line);outline:1px solid var(--rp-line);outline-offset:-8px}
.l-table-t .orn{width:110px;color:var(--gold-a)}
@media (max-width:860px){.l-table-g{grid-template-columns:1fr}.l-tf,.l-table-t{grid-column:1;grid-row:auto}.l-table-t{margin:-40px 6% 0}}
.l-host{position:relative;isolation:isolate;padding-block:clamp(80px,11vw,150px);background:var(--ivory-2)}
.l-host::before{content:"";position:absolute;inset:0;z-index:-1;background:var(--gold-a);opacity:.08;-webkit-mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='none' stroke='%23000'%3E%3Cpath d='M0 12a12 12 0 0 1 24 0M-12 24a12 12 0 0 1 24 0M12 24a12 12 0 0 1 24 0'/%3E%3C/g%3E%3C/svg%3E") 0 0/24px 24px repeat;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24'%3E%3Cg fill='none' stroke='%23000'%3E%3Cpath d='M0 12a12 12 0 0 1 24 0M-12 24a12 12 0 0 1 24 0M12 24a12 12 0 0 1 24 0'/%3E%3C/g%3E%3C/svg%3E") 0 0/24px 24px repeat}
.l-host-g{display:grid;grid-template-columns:1.1fr .9fr;gap:clamp(30px,7vw,120px);align-items:center}
.l-quote{font:italic 500 clamp(1.9rem,3.6vw,3.1rem)/1.2 var(--serif);margin:0;color:var(--umber-2);padding-left:clamp(18px,2.4vw,34px);border-left:1px solid var(--gold-a)}
:lang(zh) .l-quote{font-style:normal;font-weight:600;line-height:1.55;letter-spacing:.04em;font-size:clamp(1.5rem,2.6vw,2.2rem)}
.l-host-t p{color:var(--ink-2)}
@media (max-width:860px){.l-host-g{grid-template-columns:1fr}}
.l-occ{padding-block:clamp(80px,11vw,150px)}
.l-occ .orn{width:110px;color:var(--gold-a)}

/* ---- chapter timeline (right edge): quiet dots, a sliding porcelain medallion / cloud mark ------------ */
.ctl{position:fixed;right:clamp(12px,1.8vw,28px);top:50%;transform:translateY(-50%);z-index:60;color:var(--rp-ink);opacity:0;transition:opacity .8s var(--ease),color .6s}
.ctl.ready{opacity:1}
.ctl.ctl-dark{color:#efe6d1}
.ctl ol{list-style:none;margin:0;padding:0;position:relative}
.ctl ol::before{content:"";position:absolute;right:9px;top:13px;bottom:13px;width:1px;background:currentColor;opacity:.22}
.ctl li{margin:0;padding:0}
.ctl a{display:flex;align-items:center;justify-content:flex-end;height:28px;width:20px;margin-left:auto;text-decoration:none;color:inherit;position:relative}
.ctl a i{width:5px;height:5px;border-radius:50%;background:currentColor;opacity:.45;margin-right:7px;flex:none;transition:opacity .4s}
.ctl a span{position:absolute;right:26px;top:50%;margin-top:-.5em;font:500 .64rem/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;opacity:0;transform:translateX(6px);transition:opacity .5s var(--ease),transform .5s var(--ease);white-space:nowrap;pointer-events:none;text-shadow:0 0 10px var(--rp-bg)}
.ctl.ctl-dark a span{text-shadow:0 0 10px rgba(0,0,0,.6)}
:lang(zh) .ctl a span{letter-spacing:.12em;font-size:.76rem}
.ctl a.on span,.ctl:hover a span,.ctl a:focus-visible span{opacity:.85;transform:none}
.ctl:hover a:not(.on) span{opacity:.5}
.ctl a.on i{opacity:0}
.ctl-mark{position:absolute;right:0;top:0;width:19px;height:19px;margin-top:-9.5px;transform:translateY(14px);transition:transform .8s cubic-bezier(.6,0,.2,1);pointer-events:none}
.ctl-gold .ctl-mark{width:24px;right:-2px;height:16px;margin-top:-8px}
.ctl-mark svg{width:100%;height:100%;display:block}
.ctl-porcelain .ctl-mark{filter:drop-shadow(0 1px 3px rgba(28,42,74,.25))}
@media (max-width:900px){
  .ctl{right:6px}.ctl a span{display:none}.ctl a{height:20px}.ctl ol::before{top:9px;bottom:9px}
  .ctl-mark{transform:translateY(10px);width:15px;height:15px;margin-top:-7.5px}.ctl-gold .ctl-mark{width:19px;height:13px;margin-top:-6.5px}
}
@media (prefers-reduced-motion:reduce){
  .js .unveil{display:none}
  .js .rh-m .rh-img img,.js .rh-l .rh-img img,.js .rh-m .rh-in>*,.js .rh-l .rh-in>*,.rh-cue i{animation:none}
  .ctl-mark,.gate-img img,.spc-img img{transition:none}
}

/* round 2b: copy-driven additions */
.ov-big{max-width:24ch;font-size:clamp(1.5rem,2.7vw,2.3rem)}
:lang(zh) .ov-big{max-width:20em;font-size:clamp(1.4rem,2.2vw,1.9rem)}
.hall-hint{font-size:.84rem;color:var(--ink-3)}
.m-lead{font:italic 500 clamp(1.5rem,2.6vw,2.1rem)/1.3 var(--serif);color:var(--ink-blue);margin-bottom:1em}
:lang(zh) .m-lead{font-style:normal;font-weight:600;line-height:1.55;letter-spacing:.04em;font-size:clamp(1.3rem,2.2vw,1.7rem)}
.m-meta{font-size:.84rem;letter-spacing:.06em;color:#6b7690;margin-top:1.4rem}
.cap-t{margin:22px 0 0 8%;max-width:34em;display:flex;flex-direction:column;gap:6px}
.cap-t b{font:500 clamp(1.25rem,1.9vw,1.55rem)/1.25 var(--serif)}:lang(zh) .cap-t b{font-weight:700;font-size:1.2rem}
.cap-t span{color:var(--ink-3);font-size:.95rem}
.theme-porcelain .cap-t b{color:var(--ink-blue)}
.cap-dark{margin:clamp(34px,5vw,56px) 0 0 14%}.cap-dark b{color:#f3ead6}.cap-dark span{color:rgba(233,223,202,.78)}
.l-two p{color:var(--ink-2)}.l-two{margin-top:1.4rem}
.l-sub{font:500 clamp(1.3rem,2vw,1.7rem)/1.3 var(--serif);color:var(--umber-2)}:lang(zh) .l-sub{font-weight:700;font-size:1.25rem}
.m-win-t h2,.l-table-t h2{margin-top:.2em}
.spc-t b{max-width:16ch}:lang(zh) .spc-t b{max-width:none}

/* ---- heritage round 2: evidence-kind chips and review-only placeholders for unlicensed archive photos ---- */
.htl-k{display:inline-block;vertical-align:middle;margin-left:.8em;padding:.28em .8em;border:1px solid currentColor;border-radius:99px;font:500 .64rem/1.2 var(--sans);letter-spacing:.14em;text-transform:uppercase;white-space:nowrap}
:lang(zh) .htl-k{letter-spacing:.08em;font-size:.76rem}
.htl-k-record{color:#3f6b4a}.htl-k-account{color:var(--gold-3)}.htl-k-anecdote{color:var(--red-700)}.htl-k-fiction{color:#5b4a7a}
.pend{background:repeating-linear-gradient(45deg,rgba(182,149,86,.07) 0 10px,transparent 10px 20px);border:1px dashed var(--gold-3);border-radius:var(--radius)}
.pend-in{padding:clamp(22px,4vw,44px) clamp(16px,3vw,28px);display:flex;flex-direction:column;gap:.5rem;text-align:center;color:var(--ink-2)}
.pend-in b{font:500 .72rem/1.3 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--gold-3)}
:lang(zh) .pend-in b{letter-spacing:.1em;font-size:.84rem}
.pend-in span{font:italic 500 1.05rem/1.4 var(--serif)}:lang(zh) .pend-in span{font-style:normal;font-size:.98rem}
.pend-in small{color:var(--ink-3);font-size:.76rem}
.mk-h4{margin:1.4em 0 .4em}

/* ---- heritage round 3: read-more links under timeline nodes, "people behind the craft" ---- */
.htl-more{display:flex;flex-wrap:wrap;gap:6px 18px;align-items:baseline;margin:.2em 0 .9em!important}
.htl-more span{font:500 .7rem/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--ink-3)}
:lang(zh) .htl-more span{letter-spacing:.1em;font-size:.82rem}
.htl-more a{font-size:.95rem;color:var(--red-700);text-decoration-color:var(--gold)}
.ppl{background:var(--paper)}
.ppl-g{list-style:none;margin:clamp(20px,3vw,34px) 0 0;padding:0;display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(18px,3vw,44px)}
.ppl-f{margin:0 0 12px}.ppl-i .fig{aspect-ratio:4/3}.ppl-i .fig img{height:100%;object-fit:cover}
.ppl-i .fig[data-img=h-bucket] img{object-position:50% 88%}.ppl-i .fig[data-img=h-morrison-1933] img{object-position:30% 45%}
.ppl-f figcaption{font-size:.8rem;color:var(--ink-3);padding:.6em 0 0;line-height:1.5}.ppl-f .cr{display:block}
.ppl-i h3{margin:.2em 0 .35em;font-size:clamp(1.3rem,2vw,1.6rem)}
.ppl-i p{color:var(--ink-2);font-size:.98rem}
@media (max-width:860px){.ppl-g{grid-template-columns:1fr}.ppl-i{display:grid;grid-template-columns:1fr 1.2fr;gap:6px 18px}.ppl-f{grid-row:1/5}}
@media (max-width:560px){.ppl-i{display:block}}

/* ---- A Beijing Icon: unfolded heritage scroll (light reading surface inside the dark lattice section) ---- */
.hscroll{position:relative;margin:clamp(34px,5vw,64px) auto 0;max-width:56rem;color:#2a1f16}
.hscroll .hs-r{display:block;height:16px;margin-inline:-14px;border-radius:9px;background:linear-gradient(180deg,#8a6446,#4a3222 55%,#2b1c12);box-shadow:0 6px 14px -4px rgba(0,0,0,.55);position:relative;z-index:1}
.hscroll .hs-r::before,.hscroll .hs-r::after{content:"";position:absolute;top:-4px;width:24px;height:24px;border-radius:50%;background:radial-gradient(circle at 35% 30%,#ecd9ab,var(--gold) 55%,var(--gold-3));box-shadow:0 2px 6px rgba(0,0,0,.45)}
.hscroll .hs-r::before{left:-8px}.hscroll .hs-r::after{right:-8px}
.hscroll-in{background:#f6efdd linear-gradient(90deg,rgba(138,100,70,.09),transparent 7%,transparent 93%,rgba(138,100,70,.09));padding:clamp(26px,5vw,56px) clamp(20px,5vw,60px) clamp(30px,5vw,60px);box-shadow:inset 0 0 0 1px rgba(182,149,86,.55),inset 0 0 0 7px #f6efdd,inset 0 0 0 8px rgba(182,149,86,.35);overflow:hidden}
.hscroll .eyebrow{color:#8a1618}
.hscroll-t{color:#2a1f16;font-size:clamp(1.7rem,3vw,2.4rem);margin:0 0 .6em}
.hscroll h4{color:#2a1f16;font:600 clamp(1.15rem,1.7vw,1.4rem)/1.25 var(--serif);margin:1.7em 0 .4em;padding-top:.9em;border-top:1px solid rgba(182,149,86,.55)}
:lang(zh) .hscroll h4{font-weight:700;letter-spacing:.04em}
.hscroll p{color:#2a1f16;font-size:1.02rem;line-height:1.75;margin:0 0 .9em}
.hscroll a{color:#8a1618;text-decoration-color:rgba(138,22,24,.45)}.hscroll a:hover{color:#5a0c0e}
.hscroll-origin{display:grid;grid-template-columns:minmax(0,1.3fr) minmax(0,.7fr);gap:clamp(22px,4vw,48px);align-items:center;margin-top:1.6em;padding-top:.9em;border-top:1px solid rgba(182,149,86,.55)}
.hscroll-origin h4{margin:0 0 .5em;padding:0;border:0}
.hscroll-ot p:last-child{margin-bottom:0}
.hscroll-fig{margin:0}
.hscroll-fig img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover;object-position:30% 40%;border:1px solid rgba(182,149,86,.6);padding:5px;background:#fffaf0}
.hscroll-fig figcaption{font-size:.8rem;line-height:1.45;color:#5b4a3b;padding-top:.5em}
@media (max-width:760px){.hscroll-origin{grid-template-columns:1fr}.hscroll-fig{max-width:300px}.hscroll-fig img{aspect-ratio:4/3;object-position:30% 35%}}
/* four craft stages: one unified block each — Chinese serif heading (the site's heading face, as under 传承 on the home page) directly above its text */
.hscroll-stages{margin-top:.4em}
.hscroll-stage{margin:0 0 1.5em;padding-left:1.1rem;border-left:2px solid rgba(182,149,86,.65)}
.hscroll-stage h5{display:flex;flex-wrap:wrap;align-items:baseline;gap:.15em .8em;margin:0 0 .25em;color:#8a1618}
.hscroll-stage .st-zh{font:700 clamp(1.5rem,2.4vw,1.9rem)/1.15 "Noto Serif SC","Songti SC",serif;letter-spacing:.14em}
.hscroll-stage .st-tr{font:500 .74rem/1.2 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:#5b4a3b}
.hscroll-stage p{margin:0}
.miles{grid-template-columns:repeat(auto-fit,minmax(200px,1fr))!important}
@media (max-width:700px){.hscroll{margin-inline:6px}.hscroll .hs-r{margin-inline:-4px;height:12px}.hscroll .hs-r::before,.hscroll .hs-r::after{width:18px;height:18px;top:-3px}.hscroll .hs-r::before{left:-5px}.hscroll .hs-r::after{right:-5px}}


/* ==========================================================================
   Editorial captions + brush calligraphy (2026-10-09)
   ========================================================================== */
@font-face{font-family:"QJD Brush";src:url(/assets/fonts/ma-shan-zheng-subset.woff2) format("woff2");font-weight:400;font-style:normal;font-display:swap;unicode-range:U+4E00-9FFF}
:root{--cap-ink:#74695f;--brush:"QJD Brush","Noto Serif SC","Songti SC",serif}

/* one quiet caption style for every editorial figure: below the photo, on the page background, no box */
.fig:has(> figcaption:not(.cap-over)){background:transparent;overflow:visible}
.fig:has(> figcaption:not(.cap-over)) > img,.fig:has(> figcaption:not(.cap-over)) picture{background:var(--paper-2)}
.fig figcaption:not(.cap-over),.jfig figcaption,.htl-fig figcaption,.walk-fig figcaption,.ppl-f figcaption,.jart .jfig figcaption{
  position:static;display:block;background:none;border:0;box-shadow:none;border-radius:0;
  font:400 .8rem/1.45 var(--sans);letter-spacing:.01em;color:var(--cap-ink);padding:7px 0 0;margin:0;text-align:left}
:lang(zh) .fig figcaption:not(.cap-over),:lang(zh) .jfig figcaption,:lang(zh) .htl-fig figcaption{font-size:.84rem;letter-spacing:.03em}
.fig figcaption .cr,.jfig figcaption .cr,.htl-fig figcaption .cr{display:inline;color:var(--cap-ink);opacity:.9}
.fig figcaption a,.htl-fig figcaption a{color:inherit;text-decoration-color:rgba(116,105,95,.45)}
.museum-g .fig{background:transparent}
@media (max-width:640px){.fig figcaption:not(.cap-over),.jfig figcaption,.htl-fig figcaption{font-size:.78rem}}

/* Journal opening character (Chinese): brush initial — same face as the craft-stage headings */
.cinit{float:left;font:400 3.7em/.82 var(--brush);color:var(--red-700);margin:.05em .1em 0 -.03em;font-synthesis:none;padding-bottom:.02em}
:lang(zh) p:has(> .cinit)::first-letter{float:none;font:inherit;color:inherit;margin:0}
@media (max-width:640px){.cinit{font-size:3.2em}}

/* Beijing Icon: four craft-stage headings in the same brush face */
.hscroll-stage .st-zh{font:400 clamp(1.8rem,3vw,2.3rem)/1.1 var(--brush);letter-spacing:.12em;font-synthesis:none;color:#8a1618}

/* ---- Heritage Story timeline & "people" images: caption set inside the photograph, bottom edge, no caption box ---- */
figure.htl-fig.fig:has(> figcaption),.ppl-f{position:relative}
figure.htl-fig.fig:has(> figcaption){background:var(--paper-2);overflow:hidden;border-radius:var(--radius)}
figure.htl-fig > img,figure.htl-fig picture{display:block;width:100%}
figure.htl-fig.fig > figcaption,.ppl-f > figcaption{
  position:absolute;left:0;right:0;bottom:0;margin:0;padding:34px 12px 9px;
  background:linear-gradient(to top,rgba(14,10,7,.62) 0%,rgba(14,10,7,.38) 55%,rgba(14,10,7,0) 100%);
  font:400 .72rem/1.4 var(--sans);letter-spacing:.015em;color:#f5eee0;text-shadow:0 1px 2px rgba(0,0,0,.55);border:0;box-shadow:none}
:lang(zh) figure.htl-fig.fig > figcaption,:lang(zh) .ppl-f > figcaption{font-size:.78rem;letter-spacing:.03em}
figure.htl-fig.fig > figcaption .cr,.ppl-f > figcaption .cr{display:block;color:rgba(245,238,224,.82);font-size:.66rem;margin-top:.1em}
figure.htl-fig.fig > figcaption a,.ppl-f > figcaption a{color:inherit;text-decoration-color:rgba(245,238,224,.5)}
.ppl-i .fig{border-radius:var(--radius);overflow:hidden}
@media (max-width:640px){figure.htl-fig.fig > figcaption,.ppl-f > figcaption{font-size:.7rem;padding:30px 10px 8px}}

/* ---- Menu: Hot Dishes sub-sections, owner notes, dish options (2026-10-11) ---------------------------------------- */
.msub-nav{display:flex;flex-wrap:wrap;gap:4px 18px;margin:-6px 0 6px;font:500 .78rem/1.6 var(--sans);letter-spacing:.14em;text-transform:uppercase}
:lang(zh) .msub-nav{letter-spacing:.06em;font-size:.9rem;text-transform:none}
.msub-nav a{text-decoration:none;color:var(--ink-2);border-bottom:1px solid transparent}.msub-nav a:hover{color:var(--red-700);border-bottom-color:var(--gold)}
.msub-nav a[hidden]{display:none}
.msub{scroll-margin-top:130px}.msub.empty{display:none}
.msub-h{display:flex;align-items:baseline;gap:.7em;margin:clamp(26px,3.4vw,40px) 0 0;padding-bottom:10px;border-bottom:1px solid var(--gold);font:500 .8rem/1.2 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--red-700)}
.msub-h span{font:500 .9rem/1 "Noto Serif SC",serif;letter-spacing:.14em;text-transform:none;color:var(--ink-3)}
:lang(zh) .msub-h{font:600 1rem/1.2 var(--sans);letter-spacing:.08em}:lang(zh) .msub-h span{font:400 .74rem/1 var(--sans);letter-spacing:.14em;text-transform:uppercase}
.dish .pr.ask{font:400 .86rem/1.3 var(--sans);color:var(--ink-3);white-space:normal;text-align:right}
.dnote h3{font:500 .74rem/1.2 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--red-700);margin:0 0 .5em}
:lang(zh) .dnote h3{font:600 .98rem/1.2 var(--sans);letter-spacing:.08em}
.dnote p{margin:0;color:var(--ink-2);font-size:.95rem;max-width:62ch}
.dnote.duck-incl{border-left:2px solid var(--gold);padding:.2em 0 .2em 1em;margin:0 0 clamp(18px,3vw,30px)}
.dnotes{border-top:1px solid var(--line)}
.dnotes-g{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,4vw,64px)}
.dnotes .dnote{border-top:1px solid var(--gold);padding-top:14px}
@media (max-width:700px){.dnotes-g{grid-template-columns:1fr}}
.dm-price.ask{font:500 1rem/1.3 var(--sans);color:var(--ink-2)}
.dm-incl{margin:0 0 1.1em;padding:.2em 0 .2em 1em;border-left:2px solid var(--gold)}.dm-incl b{display:block;font:600 .82rem/1.3 var(--sans);letter-spacing:.04em;color:var(--red-700);margin-bottom:.25em}.dm-incl p{margin:0;font-size:.9rem;color:var(--ink-2)}
.dm-opts{margin:0 0 1.2em}
.dm-og{border:0;border-top:1px solid var(--line);margin:0;padding:1em 0 .4em;min-width:0}
.dm-og legend{float:left;width:100%;padding:0;margin:0 0 .3em;font:600 .92rem/1.3 var(--sans);color:var(--ink)}
.dm-og .dm-note{clear:both;margin:0 0 .6em}
.dm-ol{display:grid;grid-template-columns:1fr 1fr;gap:8px}
@media (max-width:520px){.dm-ol{grid-template-columns:1fr}}
.dm-o{position:relative;display:flex;gap:.7em;align-items:flex-start;border:1px solid var(--line);background:var(--card);border-radius:6px;padding:.8em .9em;cursor:pointer;font:500 .9rem/1.3 var(--sans)}
.dm-o input{flex:none;margin:.15em 0 0;width:1.05em;height:1.05em;accent-color:var(--red-700)}
.dm-o-t{display:flex;flex-direction:column;gap:.2em}.dm-o-t .num{color:var(--red-700);font-variant-numeric:tabular-nums}
.dm-o:has(input:checked){border-color:var(--red-700);box-shadow:inset 0 0 0 1px var(--red-700);background:#fff}
.dm-o:has(input:focus-visible){outline:2px solid var(--gold);outline-offset:2px}
.dm-calc{margin:.6em 0 0;font-size:.88rem;color:var(--ink-2)}.dm-calc.need{color:var(--ink-3)}
.cl-o{list-style:none;margin:3px 0 0;padding:0;font-size:.78rem;line-height:1.35;color:var(--ink-2)}.cl-o li::before{content:"· ";color:var(--gold-3)}
.cl-ed{border:0;background:none;padding:2px 0;margin-top:3px;font:500 .74rem/1.2 var(--sans);letter-spacing:.04em;color:var(--red-700);text-decoration:underline;text-underline-offset:2px;cursor:pointer}

/* ---- Menu sheets 2026-10-12: regular price, set notes, beverages ------------------------------------------------- */
.set-note{margin:14px 0 0;padding-top:12px;border-top:1px solid var(--line);font-size:.85rem;color:var(--ink-2)}
.sauce-note{margin:clamp(18px,3vw,28px) 0 0}
.drink-kind{margin:clamp(30px,4vw,46px) 0 -8px;font:500 .72rem/1 var(--sans);letter-spacing:.24em;text-transform:uppercase;color:var(--ink-3)}
:lang(zh) .drink-kind{font-size:.85rem;letter-spacing:.12em}
.msub-h .num{margin-left:auto;font:500 .82rem/1 var(--sans);letter-spacing:.04em;text-transform:none;color:var(--ink-2)}
.drink-note{margin:10px 0 0;font-size:.86rem;color:var(--ink-3)}
.drinks{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:repeat(2,1fr);gap:0 clamp(22px,4vw,64px)}
@media (max-width:900px){.drinks{grid-template-columns:1fr}}
.drink{padding:12px 0;border-bottom:1px solid var(--line)}
.drink.hide{display:none}
.dk-top{display:flex;justify-content:space-between;align-items:baseline;gap:12px}
.drink b{font:500 1.08rem/1.25 var(--serif)}:lang(zh) .drink b{font-family:var(--sans);font-weight:600;font-size:1rem}
.drink .pr{font:500 1.05rem/1.2 var(--serif);color:var(--red-700);white-space:nowrap}
.drink .alt{display:block;font:500 .88rem/1.3 "Noto Serif SC","Songti SC",serif;color:var(--ink-3);letter-spacing:.04em;margin-top:.15em}
.drink small{display:block;font-size:.8rem;color:var(--ink-3);margin-top:.2em}
.dish-top h3{min-width:0;overflow-wrap:anywhere}
/* special price: regular price struck through, smaller and grey, before the special price (display only) */
.pr .was,.dm-price .was{font-size:.72em;font-weight:400;color:var(--ink-3);text-decoration:line-through;text-decoration-thickness:1px;margin-right:.35em;white-space:nowrap}
.set .pr .was{font-size:.55em}
.dish-top:has(.was){flex-wrap:wrap;row-gap:2px}.dish-top:has(.was) h3{flex:1 1 6em}.dish-top:has(.was) .pr{margin-left:auto}
.set header .pr{white-space:nowrap}

/* ---- venue photo set 2026-10-12 ---------------------------------------------------------------------------------- */
.hs-p.w-p{aspect-ratio:3/4}
.gates-way{display:grid;grid-template-columns:minmax(0,1.9fr) minmax(0,1fr);gap:clamp(24px,5vw,72px);align-items:center;margin:0 0 clamp(36px,5vw,64px)}
.gates-way .ph{margin:0}.gates-way .ph img{width:100%;display:block;object-fit:cover;aspect-ratio:4/3}
.gw-cap{margin:0;padding-left:1.1em;border-left:2px solid var(--gold);font:500 clamp(1.15rem,1.8vw,1.5rem)/1.45 var(--serif);color:var(--ink-2);max-width:20ch}
:lang(zh) .gw-cap{font-family:var(--serif);letter-spacing:.04em;max-width:12em}
@media (max-width:760px){.gates-way{grid-template-columns:1fr;gap:16px}.gw-cap{max-width:none}}
.visit-door{margin:clamp(18px,3vw,28px) 0 0}.visit-door img{width:100%;aspect-ratio:3/2;object-fit:cover;display:block}

/* ---- Reservation choice dialog (2026-10-13) ----------------------------------------------------------------------- */
.rsv-ov{position:fixed;inset:0;z-index:170;background:rgba(21,13,9,.62);backdrop-filter:blur(3px);opacity:0;transition:opacity .25s}.rsv-ov.in{opacity:1}
.rsv-ov[hidden],.rsv[hidden]{display:none}
.rsv{position:fixed;z-index:175;left:50%;top:50%;width:min(720px,calc(100vw - 24px));max-height:min(92vh,760px);overflow:auto;background:var(--ivory);color:var(--ink);border:1px solid var(--gold);border-radius:6px;box-shadow:0 30px 80px rgba(0,0,0,.5);padding:clamp(24px,4vw,44px);transform:translate(-50%,-46%) scale(.97);opacity:0;transition:transform .3s var(--ease),opacity .25s;outline:0}
.rsv.in{transform:translate(-50%,-50%);opacity:1}
.rsv-x{position:absolute;top:10px;right:10px;width:40px;height:40px;border-radius:50%;border:1px solid var(--line);background:transparent;color:var(--ink);font-size:1.6rem;line-height:1;cursor:pointer;padding:0 0 3px}.rsv-x:hover{background:var(--red-700);color:#fff;border-color:var(--red-700)}
.rsv h2{margin:0 0 clamp(18px,3vw,28px);font-size:clamp(1.6rem,3vw,2.1rem)}
.rsv-g{display:grid;grid-template-columns:1fr 1fr;gap:clamp(12px,2vw,20px)}
.rsv-o{display:flex;flex-direction:column;align-items:flex-start;gap:.5em;background:var(--card);border:1px solid var(--line);border-radius:var(--radius);padding:clamp(18px,2.6vw,26px)}
.rsv-o .seal{width:44px;height:44px;margin:0}.rsv-o .seal svg{width:22px;height:22px}
.rsv-o h3{margin:.2em 0 0;font-size:1.25rem}:lang(zh) .rsv-o h3{font-family:var(--sans);font-weight:600;font-size:1.1rem}
.rsv-o p{margin:0 0 .8em;color:var(--ink-2);font-size:.93rem;flex:1}
.rsv-o .btn{width:100%;justify-content:center}
.rsv-n{margin:clamp(14px,2vw,20px) 0 0;font-size:.85rem;text-align:center}.rsv-n a{color:var(--ink-3)}
body.rsv-open{overflow:hidden}
@media (max-width:620px){.rsv-g{grid-template-columns:1fr}.rsv{top:auto;bottom:0;left:0;width:100%;max-height:92vh;border-radius:12px 12px 0 0;transform:translateY(8%);padding-bottom:max(24px,env(safe-area-inset-bottom))}.rsv.in{transform:none}}
@media (prefers-reduced-motion:reduce){.rsv,.rsv-ov{transition:none}}
.ftr-priv{display:block;margin-top:.5em;font-size:.78rem;opacity:.72;max-width:64ch}
