/* 锦南楼 Kam Nam Lau — demo site */
:root{
  --lacquer:#24130f;
  --lacquer-2:#331b15;
  --lacquer-3:#45261d;
  --gold:#c9a25a;
  --gold-2:#e8cf96;
  --gold-dim:rgba(201,162,90,.35);
  --paper:#f5ecd9;
  --paper-2:#ebdfc6;
  --ink:#22140f;
  --ink-soft:#5a463c;
  --cinnabar:#b3261e;
  --cinnabar-2:#d23b2c;
  --jade:#4c7a62;
  --bamboo:#d8b77c;
  --bamboo-2:#b8914f;
  --serif:"Songti SC","STSong","Noto Serif SC","Source Han Serif SC","SimSun",Georgia,serif;
  --latin:"Cormorant Garamond","Didot","Bodoni 72",Georgia,serif;
  --sans:-apple-system,"PingFang SC","Hiragino Sans GB","Microsoft YaHei",system-ui,sans-serif;
  --radius:14px;
  --shadow:0 18px 50px rgba(0,0,0,.35);
}
*{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--lacquer);color:var(--paper);font-family:var(--serif);line-height:1.65;-webkit-font-smoothing:antialiased;overflow-x:hidden}
img,svg{max-width:100%;display:block}
a{color:inherit}
button{font:inherit;cursor:pointer}
.wrap{width:min(1180px,100% - 32px);margin-inline:auto}
.latin{font-family:var(--latin);letter-spacing:.08em}
.sr{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}

/* subtle lacquer texture */
body::before{content:"";position:fixed;inset:0;pointer-events:none;z-index:-1;opacity:.5;
  background:
   radial-gradient(1200px 600px at 80% -10%,rgba(201,162,90,.10),transparent 60%),
   radial-gradient(900px 500px at -10% 30%,rgba(179,38,30,.10),transparent 60%),
   repeating-linear-gradient(115deg,rgba(255,255,255,.012) 0 2px,transparent 2px 7px)}
main,footer,.ribbon{position:relative}

/* demo ribbon */
.ribbon{background:#120906;color:var(--gold-2);font-family:var(--sans);font-size:12px;text-align:center;padding:6px 12px;border-bottom:1px solid var(--gold-dim)}
.ribbon b{color:var(--gold)}

/* header */
.site-head{position:sticky;top:0;z-index:50;background:rgba(36,19,15,.86);backdrop-filter:blur(10px);-webkit-backdrop-filter:blur(10px);border-bottom:1px solid var(--gold-dim)}
.head-in{display:flex;align-items:center;gap:20px;height:72px}
.brand{display:flex;align-items:center;gap:12px;text-decoration:none}
.brand-seal{width:44px;height:44px;flex:none}
.brand-txt{display:flex;flex-direction:column;line-height:1.1}
.brand-zh{font-size:22px;letter-spacing:.18em;color:var(--gold-2)}
.brand-zh small{font-size:14px;letter-spacing:.1em;color:var(--paper);margin-left:6px}
.brand-en{font-family:var(--latin);font-size:11px;letter-spacing:.28em;color:var(--gold);text-transform:uppercase}
.nav{display:flex;gap:6px;margin-left:auto;align-items:center}
.nav a{text-decoration:none;font-size:16px;letter-spacing:.12em;padding:8px 14px;border-radius:999px;color:var(--paper);opacity:.85;transition:.2s}
.nav a:hover{opacity:1;color:var(--gold-2)}
.nav a[aria-current="page"]{color:var(--gold-2);opacity:1;box-shadow:inset 0 -2px 0 var(--gold)}
.lang{border:1px solid var(--gold-dim);background:transparent;color:var(--gold-2);border-radius:999px;padding:6px 12px;font-family:var(--sans);font-size:13px}
.lang:hover{border-color:var(--gold)}
.btn{display:inline-flex;align-items:center;justify-content:center;gap:8px;border:0;border-radius:999px;padding:12px 24px;font-size:16px;letter-spacing:.14em;text-decoration:none;transition:transform .15s,box-shadow .2s,background .2s}
.btn:active{transform:translateY(1px)}
.btn-gold{background:linear-gradient(180deg,var(--gold-2),var(--gold));color:var(--ink);box-shadow:0 6px 18px rgba(201,162,90,.3)}
.btn-gold:hover{box-shadow:0 8px 26px rgba(201,162,90,.5)}
.btn-red{background:linear-gradient(180deg,var(--cinnabar-2),var(--cinnabar));color:#fff3df;box-shadow:0 6px 18px rgba(179,38,30,.35)}
.btn-ghost{background:transparent;color:var(--gold-2);border:1px solid var(--gold)}
.btn-ghost:hover{background:rgba(201,162,90,.1)}
.btn-sm{padding:8px 16px;font-size:14px}
.burger{display:none;background:none;border:1px solid var(--gold-dim);border-radius:10px;width:42px;height:42px;color:var(--gold-2);font-size:20px}

/* deco frame (art-deco corners like the old menu) */
.deco{position:relative;border:1px solid var(--gold-dim);padding:clamp(22px,4vw,48px)}
.deco::before,.deco::after{content:"";position:absolute;width:46px;height:46px;border:2px solid var(--gold);pointer-events:none}
.deco::before{top:-7px;left:-7px;border-right:0;border-bottom:0;border-radius:14px 0 0 0}
.deco::after{bottom:-7px;right:-7px;border-left:0;border-top:0;border-radius:0 0 14px 0}

/* section heads */
.sec{padding:clamp(56px,9vw,110px) 0}
.eyebrow{display:flex;align-items:center;justify-content:center;gap:14px;color:var(--gold);font-family:var(--latin);letter-spacing:.32em;font-size:13px;text-transform:uppercase}
.eyebrow::before,.eyebrow::after{content:"";height:1px;width:56px;background:linear-gradient(90deg,transparent,var(--gold))}
.eyebrow::after{transform:scaleX(-1)}
.sec-title{text-align:center;font-size:clamp(28px,4.4vw,46px);letter-spacing:.2em;margin:12px 0 10px;color:var(--paper);font-weight:600}
.sec-lead{text-align:center;max-width:640px;margin:0 auto;color:rgba(245,236,217,.72)}

/* plaque (gold title board like 深圳必打卡老字号) */
.plaque{display:inline-block;position:relative;padding:14px 34px;background:linear-gradient(180deg,#f3dfae,#cfa75e 55%,#b78d45);color:#2a160f;font-size:clamp(26px,4.6vw,48px);letter-spacing:.22em;font-weight:700;border-radius:4px;box-shadow:inset 0 0 0 3px #2a160f,inset 0 0 0 5px #e9cf93,0 14px 40px rgba(0,0,0,.4)}
.plaque::before,.plaque::after{content:"";position:absolute;top:50%;width:12px;height:12px;background:var(--gold);transform:translateY(-50%) rotate(45deg);box-shadow:0 0 0 3px var(--lacquer)}
.plaque::before{left:-6px}.plaque::after{right:-6px}

/* ================= INDEX ================= */
.hero{padding:clamp(40px,7vw,80px) 0 clamp(40px,6vw,70px)}
.hero-grid{display:grid;grid-template-columns:1.05fr .95fr;gap:clamp(24px,5vw,60px);align-items:center}
.hero-kicker{color:var(--gold);letter-spacing:.3em;font-size:14px;margin-bottom:18px;font-family:var(--latin)}
.hero h1{margin:18px 0 6px;font-size:clamp(20px,2.4vw,26px);font-weight:400;letter-spacing:.4em;color:var(--gold-2);display:flex;align-items:center;gap:16px}
.hero h1::before,.hero h1::after{content:"";flex:0 0 40px;height:1px;background:var(--gold)}
.hero p.lead{color:rgba(245,236,217,.78);max-width:520px;font-size:17px}
.hero-cta{display:flex;flex-wrap:wrap;gap:12px;margin-top:28px}
.hero-art{position:relative;aspect-ratio:1/1;max-width:520px;margin-inline:auto;width:100%}
.hero-art .halo{position:absolute;inset:6%;border-radius:50%;background:radial-gradient(circle at 50% 55%,rgba(232,207,150,.22),rgba(201,162,90,.06) 55%,transparent 70%)}
.hero-art .ring{position:absolute;inset:2%;border-radius:50%;border:1px dashed var(--gold-dim);animation:spin 80s linear infinite}
@keyframes spin{to{transform:rotate(360deg)}}
.steamer-btn{position:absolute;inset:8%;background:none;border:0;padding:0;border-radius:50%}
.steamer-btn:focus-visible{outline:2px solid var(--gold);outline-offset:6px}
.steamer-hint{position:absolute;left:50%;bottom:-6px;transform:translateX(-50%);font-family:var(--sans);font-size:12px;letter-spacing:.12em;color:var(--gold-2);background:rgba(36,19,15,.8);border:1px solid var(--gold-dim);padding:6px 14px;border-radius:999px;white-space:nowrap;animation:bob 2.6s ease-in-out infinite}
@keyframes bob{50%{transform:translate(-50%,-5px)}}
#lid{transform-origin:200px 120px;animation:lid 7s ease-in-out infinite}
@keyframes lid{0%,55%,100%{transform:translate(0,0) rotate(0)}65%,85%{transform:translate(-26px,-58px) rotate(-14deg)}}
.hero-art.open #lid{animation:none;transform:translate(-40px,-80px) rotate(-18deg);transition:transform .6s cubic-bezier(.3,1.4,.5,1)}
.steam path{fill:none;stroke:rgba(255,248,235,.55);stroke-width:5;stroke-linecap:round;stroke-dasharray:60 200;animation:steam 3.6s ease-in infinite;opacity:0}
.steam path:nth-child(2){animation-delay:1.2s}.steam path:nth-child(3){animation-delay:2.4s}
@keyframes steam{0%{stroke-dashoffset:60;opacity:0;transform:translateY(10px)}25%{opacity:.9}100%{stroke-dashoffset:-200;opacity:0;transform:translateY(-40px)}}

.badges{display:grid;grid-template-columns:repeat(4,1fr);gap:16px;margin-top:clamp(36px,6vw,64px)}
.badge{aspect-ratio:1;border-radius:50%;background:radial-gradient(circle at 35% 30%,#f2dca6,#c9a25a 55%,#94703a);display:grid;place-items:center;text-align:center;color:#3a1e14;position:relative;box-shadow:0 10px 26px rgba(0,0,0,.35);max-width:160px;margin-inline:auto;width:100%}
.badge::before{content:"";position:absolute;inset:8%;border-radius:50%;border:1.5px solid rgba(58,30,20,.45)}
.badge::after{content:"";position:absolute;inset:13%;border-radius:50%;border:1px dashed rgba(58,30,20,.35)}
.badge b{display:block;font-size:clamp(16px,2.2vw,22px);letter-spacing:.12em;line-height:1.25}
.badge span{font-size:clamp(11px,1.3vw,13px);letter-spacing:.1em}

/* tea-time status band */
.band{background:linear-gradient(90deg,#8e1c15,var(--cinnabar) 30%,var(--cinnabar) 70%,#8e1c15);border-block:2px solid var(--gold);color:#fff1d6}
.band-in{display:flex;align-items:center;justify-content:center;gap:clamp(12px,3vw,32px);flex-wrap:wrap;padding:16px 0;text-align:center}
.band-big{font-size:clamp(20px,3.2vw,30px);letter-spacing:.2em;font-weight:700}
.status{display:inline-flex;align-items:center;gap:10px;font-family:var(--sans);font-size:14px;background:rgba(0,0,0,.18);border:1px solid rgba(255,230,180,.35);padding:7px 14px;border-radius:999px}
.dot{width:9px;height:9px;border-radius:50%;background:#7cf0a0;box-shadow:0 0 0 0 rgba(124,240,160,.7);animation:pulse 1.8s infinite}
.dot.off{background:#f0c27c;animation:none}
@keyframes pulse{70%{box-shadow:0 0 0 10px rgba(124,240,160,0)}100%{box-shadow:0 0 0 0 rgba(124,240,160,0)}}

/* signature grid */
.sig-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:22px;margin-top:44px}
.sig{background:linear-gradient(180deg,var(--lacquer-2),var(--lacquer));border:1px solid var(--gold-dim);border-radius:var(--radius);padding:22px;position:relative;overflow:hidden;transition:transform .25s,border-color .25s}
.sig:hover{transform:translateY(-4px);border-color:var(--gold)}
.sig .art{width:150px;height:150px;margin:0 auto 10px;transition:transform .5s}
.sig:hover .art{transform:rotate(-8deg) scale(1.04)}
.sig h3{margin:4px 0 0;font-size:22px;letter-spacing:.14em;text-align:center}
.sig .en{display:block;text-align:center;font-family:var(--latin);color:var(--gold);letter-spacing:.14em;font-size:14px}
.sig p{color:rgba(245,236,217,.7);font-size:14.5px;text-align:center;margin:10px 0 0}
.sig .tag{position:absolute;top:16px;left:-34px;transform:rotate(-45deg);background:var(--cinnabar);color:#fff;font-size:12px;letter-spacing:.2em;padding:4px 40px;font-family:var(--sans)}

/* chiu chow trio */
.trio{display:grid;grid-template-columns:repeat(3,1fr);gap:0;margin-top:46px;border:1px solid var(--gold-dim);border-radius:var(--radius);overflow:hidden}
.trio > div{padding:34px 28px;background:rgba(245,236,217,.03);position:relative}
.trio > div + div{border-left:1px solid var(--gold-dim)}
.trio .char{font-size:64px;line-height:1;color:var(--cinnabar-2);font-weight:700;opacity:.9}
.trio h3{margin:14px 0 4px;letter-spacing:.16em;font-size:21px;color:var(--gold-2)}
.trio p{margin:0;color:rgba(245,236,217,.72);font-size:15px}

/* timeline */
.paper-sec{background:var(--paper);color:var(--ink)}
.paper-sec .sec-title{color:var(--ink)}
.paper-sec .sec-lead{color:var(--ink-soft)}
.paper-sec .eyebrow{color:var(--cinnabar)}
.paper-sec .eyebrow::before,.paper-sec .eyebrow::after{background:linear-gradient(90deg,transparent,var(--cinnabar))}
.timeline{display:grid;grid-template-columns:repeat(5,1fr);gap:0;margin-top:50px;position:relative}
.timeline::before{content:"";position:absolute;left:0;right:0;top:34px;height:2px;background:repeating-linear-gradient(90deg,var(--cinnabar) 0 10px,transparent 10px 16px)}
.tl{padding:0 12px;text-align:center;position:relative}
.tl .yr{display:inline-grid;place-items:center;width:68px;height:68px;border-radius:50%;background:var(--paper);border:2px solid var(--cinnabar);color:var(--cinnabar);font-family:var(--latin);font-weight:700;font-size:20px;position:relative}
.tl h4{margin:14px 0 4px;font-size:18px;letter-spacing:.12em}
.tl p{margin:0;font-size:14px;color:var(--ink-soft)}

/* visit */
.visit{display:grid;grid-template-columns:1.1fr .9fr;gap:30px;margin-top:44px}
.hours{list-style:none;padding:0;margin:0}
.hours li{display:flex;justify-content:space-between;align-items:center;gap:16px;padding:14px 0;border-bottom:1px dashed var(--gold-dim);font-size:17px}
.hours li.now{color:var(--gold-2)}
.hours li.now::after{content:attr(data-now);font-family:var(--sans);font-size:12px;background:var(--cinnabar);color:#fff;padding:2px 10px;border-radius:999px;margin-left:8px}
.hours .t{font-family:var(--latin);font-size:20px;letter-spacing:.06em;color:var(--gold)}
.hours li > span:first-child{flex:1}
.info-card{background:linear-gradient(160deg,var(--lacquer-3),var(--lacquer-2));border:1px solid var(--gold-dim);border-radius:var(--radius);padding:28px}
.info-card dl{margin:0;display:grid;grid-template-columns:auto 1fr;gap:12px 18px}
.info-card dt{color:var(--gold);letter-spacing:.14em}
.info-card dd{margin:0}
.map{margin-top:20px;height:170px;border-radius:10px;overflow:hidden;border:1px solid var(--gold-dim)}

/* fortune modal */
.modal{position:fixed;inset:0;z-index:100;display:grid;place-items:center;padding:16px;background:rgba(10,5,3,.7);backdrop-filter:blur(4px)}
.modal[hidden]{display:none}
.fortune{width:min(380px,100%);background:var(--paper);color:var(--ink);border-radius:8px;padding:30px 26px 24px;text-align:center;position:relative;box-shadow:var(--shadow);animation:pop .45s cubic-bezier(.3,1.5,.5,1);border-top:8px solid var(--cinnabar)}
@keyframes pop{from{transform:scale(.7) translateY(30px);opacity:0}}
.fortune .lot{font-family:var(--sans);font-size:12px;letter-spacing:.3em;color:var(--cinnabar)}
.fortune .art{width:170px;height:170px;margin:10px auto}
.fortune h3{margin:0;font-size:28px;letter-spacing:.16em}
.fortune .en{font-family:var(--latin);color:var(--ink-soft);letter-spacing:.12em}
.fortune .verse{margin:16px 0 20px;padding:14px;border:1px dashed var(--cinnabar);color:var(--cinnabar);font-size:17px;letter-spacing:.08em}
.fortune .close{position:absolute;top:8px;right:12px;background:none;border:0;font-size:26px;color:var(--ink-soft)}
.fortune .row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap}

/* footer */
.site-foot{border-top:1px solid var(--gold-dim);background:#170c09;padding:44px 0 30px;font-size:14px;color:rgba(245,236,217,.65)}
.foot-grid{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:30px}
.site-foot h5{margin:0 0 10px;color:var(--gold);letter-spacing:.2em;font-size:14px}
.site-foot a{text-decoration:none}
.site-foot a:hover{color:var(--gold-2)}
.fine{margin-top:30px;padding-top:18px;border-top:1px solid rgba(201,162,90,.15);font-family:var(--sans);font-size:12px;line-height:1.7}

/* ================= MENU ================= */
.page-head{padding:48px 0 24px;text-align:center}
.page-head .plaque{font-size:clamp(22px,3.6vw,36px)}
.page-head p{color:rgba(245,236,217,.7);margin-top:18px}
.tier-legend{display:flex;flex-wrap:wrap;justify-content:center;gap:8px;margin-top:16px;font-family:var(--sans);font-size:12.5px}
.tier-legend span{border:1px solid var(--gold-dim);border-radius:999px;padding:4px 12px;color:var(--gold-2)}
.menu-layout{display:grid;grid-template-columns:1fr 360px;gap:28px;align-items:start;padding-bottom:80px}
.cats{position:sticky;top:72px;z-index:20;display:flex;gap:8px;overflow-x:auto;padding:14px 2px;background:linear-gradient(var(--lacquer) 75%,rgba(36,19,15,0));scrollbar-width:none}
.cats::-webkit-scrollbar{display:none}
.cat{flex:none;border:1px solid var(--gold-dim);background:transparent;color:var(--paper);border-radius:999px;padding:8px 16px;font-size:15px;letter-spacing:.1em;white-space:nowrap}
.cat.on{background:var(--gold);color:var(--ink);border-color:var(--gold)}
.menu-sec{scroll-margin-top:140px;margin-top:22px}
.menu-sec h2{display:flex;align-items:baseline;gap:12px;font-size:26px;letter-spacing:.2em;margin:0 0 14px;color:var(--gold-2)}
.menu-sec h2 small{font-family:var(--latin);font-size:14px;color:var(--gold);letter-spacing:.2em;text-transform:uppercase}
.items{display:grid;grid-template-columns:repeat(auto-fill,minmax(210px,1fr));gap:16px}
.item{background:linear-gradient(180deg,var(--lacquer-2),#2a1611);border:1px solid rgba(201,162,90,.22);border-radius:var(--radius);padding:14px 14px 12px;display:flex;flex-direction:column;position:relative;transition:border-color .2s,transform .2s}
.item:hover{border-color:var(--gold)}
.item.has{border-color:var(--gold);box-shadow:0 0 0 1px var(--gold) inset}
.item .art{width:118px;height:118px;margin:2px auto 6px}
.item h3{margin:0;font-size:18px;letter-spacing:.08em}
.item .en{font-family:var(--latin);font-size:14px;color:var(--gold);letter-spacing:.04em;line-height:1.3}
.item .desc{font-size:13px;color:rgba(245,236,217,.62);margin:6px 0 10px;line-height:1.5;flex:1}
.item .foot{display:flex;align-items:center;justify-content:space-between;gap:8px}
.price{font-family:var(--latin);font-size:22px;color:var(--gold-2);font-weight:600}
.price small{font-size:13px;margin-right:2px}
.tier{position:absolute;top:10px;left:10px;font-family:var(--sans);font-size:11px;padding:2px 8px;border-radius:4px;background:rgba(201,162,90,.15);color:var(--gold-2);border:1px solid var(--gold-dim)}
.flags{position:absolute;top:10px;right:10px;display:flex;gap:4px}
.flag{font-family:var(--sans);font-size:11px;padding:2px 7px;border-radius:4px;color:#fff}
.flag.sig{background:var(--cinnabar)}
.flag.hot{background:#c65b1c}
.flag.veg{background:var(--jade)}
.qty{display:flex;align-items:center;gap:6px}
.qty button{width:32px;height:32px;border-radius:50%;border:1px solid var(--gold);background:transparent;color:var(--gold-2);font-size:18px;line-height:1;display:grid;place-items:center}
.qty button.add{background:var(--gold);color:var(--ink)}
.qty output{min-width:18px;text-align:center;font-family:var(--latin);font-size:18px}

/* the paper slip */
.slip-wrap{position:sticky;top:90px}
.slip{background:var(--paper);color:var(--ink);border-radius:4px;padding:20px 18px 18px;position:relative;box-shadow:var(--shadow);background-image:repeating-linear-gradient(0deg,transparent 0 31px,rgba(179,38,30,.13) 31px 32px);font-family:var(--serif)}
.slip::before{content:"";position:absolute;left:0;right:0;top:-8px;height:8px;background:radial-gradient(circle at 6px 8px,var(--paper) 5px,transparent 5.5px) 0 0/12px 8px repeat-x}
.slip-head{text-align:center;border-bottom:2px solid var(--cinnabar);padding-bottom:10px;margin-bottom:10px;background:var(--paper)}
.slip-head .t{font-size:22px;letter-spacing:.3em;color:var(--cinnabar);font-weight:700}
.slip-head .s{font-family:var(--latin);font-size:11px;letter-spacing:.3em;color:var(--ink-soft)}
.slip-boxes{display:grid;grid-template-columns:repeat(4,1fr);gap:6px;margin:10px 0 12px;background:var(--paper)}
.slip-boxes label{display:flex;flex-direction:column;align-items:center;font-size:12px;color:var(--cinnabar);letter-spacing:.1em}
.slip-boxes input{width:100%;text-align:center;border:1.5px solid var(--cinnabar);border-radius:3px;background:#fffaf0;font-family:"Bradley Hand","Segoe Print","Kaiti SC","STKaiti",cursive;font-size:20px;padding:2px 0;color:#1d3e8a}
.slip-lines{min-height:120px;max-height:42vh;overflow:auto;margin:0;padding:0;list-style:none}
.slip-lines li{display:grid;grid-template-columns:1fr auto auto;gap:8px;align-items:center;height:32px;font-size:15px}
.slip-lines .tally{font-family:"Kaiti SC","STKaiti","KaiTi",var(--serif);color:#1d3e8a;font-size:20px;letter-spacing:-.02em;transform:rotate(-3deg)}
.slip-lines .amt{font-family:var(--latin);font-weight:600;min-width:52px;text-align:right}
.slip-empty{color:var(--ink-soft);font-size:14px;text-align:center;padding:30px 6px;line-height:1.6;background:var(--paper)}
.slip-sum{border-top:2px solid var(--cinnabar);margin-top:8px;padding-top:8px;font-size:14px;background:var(--paper)}
.slip-sum div{display:flex;justify-content:space-between;padding:2px 0}
.slip-sum .free{color:var(--jade)}
.slip-sum .grand{font-size:20px;font-weight:700;color:var(--cinnabar);padding-top:6px}
.slip-sum .grand span:last-child{font-family:var(--latin)}
.slip-actions{display:flex;gap:8px;margin-top:14px;background:var(--paper)}
.slip-actions .btn{flex:1;padding:10px 12px;font-size:14px;letter-spacing:.08em}
.slip-actions .btn-ghost{color:var(--cinnabar);border-color:var(--cinnabar)}
.slip-stamp{position:absolute;right:10px;top:6px;width:64px;height:64px;font-size:11px!important;border:3px solid var(--cinnabar);border-radius:50%;color:var(--cinnabar);display:grid;place-items:center;text-align:center;font-size:13px;letter-spacing:.1em;line-height:1.2;transform:rotate(-14deg);opacity:.55;pointer-events:none;z-index:2}
.slip-fab{display:none}

/* ================= BOOKING ================= */
.book-layout{display:grid;grid-template-columns:1fr 340px;gap:28px;align-items:start;padding-bottom:80px}
.step{background:linear-gradient(180deg,var(--lacquer-2),#2a1611);border:1px solid rgba(201,162,90,.25);border-radius:var(--radius);padding:22px;margin-bottom:18px}
.step h2{margin:0 0 14px;font-size:20px;letter-spacing:.16em;display:flex;align-items:center;gap:12px;color:var(--gold-2)}
.step h2 .n{width:30px;height:30px;border-radius:50%;background:var(--cinnabar);color:#fff;display:grid;place-items:center;font-family:var(--latin);font-size:16px;flex:none}
.dates{display:flex;gap:10px;overflow-x:auto;padding-bottom:6px;scrollbar-width:thin}
.date{flex:none;width:76px;border:1px solid var(--gold-dim);background:transparent;color:var(--paper);border-radius:12px;padding:10px 0;text-align:center;line-height:1.25;position:relative}
.date .wd{font-size:13px;color:var(--gold);letter-spacing:.1em}
.date .d{font-family:var(--latin);font-size:28px;font-weight:600}
.date .m{font-size:12px;opacity:.7}
.date .hot{position:absolute;top:-8px;left:50%;transform:translateX(-50%);font-family:var(--sans);font-size:10px;background:var(--cinnabar);color:#fff;padding:1px 6px;border-radius:999px;white-space:nowrap}
.date.on{background:var(--gold);color:var(--ink);border-color:var(--gold)}
.date.on .wd{color:var(--cinnabar)}
.periods{display:grid;grid-template-columns:repeat(4,1fr);gap:10px;margin-bottom:14px}
.period{border:1px solid var(--gold-dim);background:transparent;color:var(--paper);border-radius:12px;padding:12px 6px;text-align:center}
.period b{display:block;font-size:17px;letter-spacing:.14em}
.period span{font-family:var(--latin);font-size:13px;color:var(--gold)}
.period em{display:block;font-style:normal;font-family:var(--sans);font-size:11px;color:#7cf0a0;margin-top:2px}
.period.on{border-color:var(--gold);background:rgba(201,162,90,.14);box-shadow:0 0 0 1px var(--gold) inset}
.slots{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px}
.slot{border:1px solid var(--gold-dim);background:transparent;color:var(--paper);border-radius:10px;padding:8px 4px;text-align:center;font-family:var(--latin);font-size:18px;line-height:1.2}
.slot small{display:block;font-family:var(--sans);font-size:11px;color:rgba(245,236,217,.6)}
.slot.low small{color:#f0c27c}
.slot.on{background:var(--gold);color:var(--ink);border-color:var(--gold)}
.slot.on small{color:var(--ink)}
.slot:disabled{opacity:.35;cursor:not-allowed;text-decoration:line-through}
.party{display:flex;align-items:center;gap:18px;flex-wrap:wrap}
.stepper{display:flex;align-items:center;border:1px solid var(--gold);border-radius:999px;overflow:hidden}
.stepper button{width:46px;height:46px;border:0;background:transparent;color:var(--gold-2);font-size:22px}
.stepper button:hover{background:rgba(201,162,90,.12)}
.stepper output{min-width:56px;text-align:center;font-family:var(--latin);font-size:28px}
.people{display:flex;flex-wrap:wrap;gap:3px;max-width:260px}
.people svg{width:18px;height:22px;animation:popin .25s ease-out}
@keyframes popin{from{transform:scale(0)}}
.seats{display:grid;grid-template-columns:repeat(3,1fr);gap:10px;margin-top:16px}
.seat{border:1px solid var(--gold-dim);background:transparent;color:var(--paper);border-radius:12px;padding:14px 10px;text-align:left}
.seat b{display:block;font-size:16px;letter-spacing:.1em}
.seat span{display:block;font-size:12.5px;color:rgba(245,236,217,.62);font-family:var(--sans);margin-top:3px}
.seat.on{border-color:var(--gold);background:rgba(201,162,90,.14);box-shadow:0 0 0 1px var(--gold) inset}
.seat:disabled{opacity:.35;cursor:not-allowed}
.field{display:flex;flex-direction:column;gap:6px;margin-bottom:14px}
.field label{font-size:14px;color:var(--gold);letter-spacing:.12em}
.field input,.field textarea{background:rgba(245,236,217,.06);border:1px solid var(--gold-dim);border-radius:10px;padding:12px 14px;color:var(--paper);font:inherit;font-family:var(--sans);font-size:15px}
.field input:focus,.field textarea:focus{outline:none;border-color:var(--gold);background:rgba(245,236,217,.09)}
.field .err{color:#ff9a8a;font-family:var(--sans);font-size:12px;min-height:1em}
.grid2{display:grid;grid-template-columns:1fr 1fr;gap:14px}
.chips{display:flex;flex-wrap:wrap;gap:8px}
.chip{border:1px solid var(--gold-dim);background:transparent;color:var(--paper);border-radius:999px;padding:7px 14px;font-size:14px}
.chip.on{background:var(--cinnabar);border-color:var(--cinnabar);color:#fff}
.summary{position:sticky;top:90px;background:var(--paper);color:var(--ink);border-radius:var(--radius);padding:22px;box-shadow:var(--shadow);border-top:6px solid var(--cinnabar)}
.summary h3{margin:0 0 12px;letter-spacing:.2em;color:var(--cinnabar);font-size:19px}
.summary dl{display:grid;grid-template-columns:auto 1fr;gap:8px 14px;margin:0 0 14px;font-size:15px}
.summary dt{color:var(--ink-soft)}
.summary dd{margin:0;font-weight:600;text-align:right}
.preorder{border-top:1px dashed rgba(34,20,15,.3);padding-top:12px;margin-top:6px;font-size:14px}
.preorder ul{list-style:none;margin:6px 0;padding:0}
.preorder li{display:flex;justify-content:space-between}
.preorder .none{color:var(--ink-soft)}
.preorder a{color:var(--cinnabar)}
.summary .btn{width:100%;margin-top:14px}

/* ticket */
.ticket-modal .ticket{width:min(420px,100%);background:linear-gradient(180deg,#9e1f17,#7d140e);color:#fff1d6;border-radius:10px;padding:28px 24px;text-align:center;position:relative;box-shadow:var(--shadow);border:2px solid var(--gold);animation:pop .5s cubic-bezier(.3,1.5,.5,1)}
.ticket::before{content:"";position:absolute;inset:8px;border:1px solid rgba(232,207,150,.55);border-radius:6px;pointer-events:none}
.ticket .k{font-family:var(--latin);letter-spacing:.3em;font-size:12px;color:var(--gold-2)}
.ticket h3{margin:6px 0 2px;font-size:30px;letter-spacing:.3em;color:var(--gold-2)}
.ticket .no{font-family:var(--latin);font-size:40px;letter-spacing:.08em;margin:8px 0;color:#fff}
.ticket dl{display:grid;grid-template-columns:auto 1fr;gap:6px 14px;text-align:left;background:rgba(0,0,0,.18);border-radius:8px;padding:14px 16px;margin:14px 0;font-size:15px}
.ticket dt{color:var(--gold-2)}
.ticket dd{margin:0;text-align:right}
.ticket .seal{position:absolute;right:20px;top:86px;width:96px;height:96px;border:4px solid #ffd9a0;color:#ffd9a0;border-radius:12px;display:grid;place-items:center;font-size:22px;letter-spacing:.1em;line-height:1.1;font-weight:700;transform:rotate(-12deg) scale(2.4);opacity:0;animation:stamp .5s .45s cubic-bezier(.5,0,.6,1.4) forwards;mix-blend-mode:screen}
@keyframes stamp{to{transform:rotate(-12deg) scale(1);opacity:.85}}
.ticket .row{display:flex;gap:10px;justify-content:center;flex-wrap:wrap;margin-top:6px}
.ticket .btn-ghost{color:var(--gold-2);border-color:var(--gold-2)}
.ticket .note{font-family:var(--sans);font-size:11.5px;color:rgba(255,241,214,.7);margin-top:14px}
.ticket .close{position:absolute;top:8px;right:12px;background:none;border:0;font-size:26px;color:var(--gold-2);z-index:2}

/* reveal */
.rise{animation:rise .7s both}
@keyframes rise{from{opacity:0;transform:translateY(18px)}}

/* ================= RESPONSIVE ================= */
@media (max-width:980px){
  .menu-layout,.book-layout{grid-template-columns:1fr}
  .slip-wrap{position:fixed;left:0;right:0;bottom:0;top:auto;z-index:60;transform:translateY(105%);transition:transform .35s ease;padding:0 10px 10px}
  .slip-wrap.open{transform:translateY(0)}
  .slip{max-height:82vh;overflow:auto}
  .slip-fab{display:flex;position:fixed;right:16px;bottom:16px;z-index:55;align-items:center;gap:10px;background:var(--paper);color:var(--ink);border:2px solid var(--cinnabar);border-radius:999px;padding:10px 18px;box-shadow:var(--shadow);font-size:15px}
  .slip-fab b{font-family:var(--latin);font-size:18px;color:var(--cinnabar)}
  .slip-fab .cnt{background:var(--cinnabar);color:#fff;border-radius:999px;min-width:24px;height:24px;display:grid;place-items:center;font-size:13px;font-family:var(--sans)}
  .summary{position:static}
  .visit{grid-template-columns:1fr}
  .hero-grid{grid-template-columns:1fr}
  .hero-art{max-width:400px}
  .sig-grid{grid-template-columns:repeat(2,1fr)}
  .timeline{grid-template-columns:1fr;gap:22px}
  .timeline::before{left:34px;right:auto;top:0;bottom:0;width:2px;height:auto;background:repeating-linear-gradient(180deg,var(--cinnabar) 0 10px,transparent 10px 16px)}
  .tl{display:grid;grid-template-columns:68px 1fr;gap:16px;text-align:left;padding:0;align-items:center}
  .tl h4{margin:0}
}
@media (max-width:760px){
  .burger{display:grid;place-items:center;margin-left:auto}
  .nav{position:fixed;top:72px;left:0;right:0;flex-direction:column;align-items:stretch;background:var(--lacquer);border-bottom:1px solid var(--gold-dim);padding:12px 16px 18px;gap:4px;transform:translateY(-120%);transition:transform .3s;z-index:-1}
  .nav.open{transform:none}
  .nav a{padding:12px 6px;border-radius:8px}
  .nav .btn{margin-top:8px}
  .head-in{gap:10px}
  .brand-zh{font-size:19px}
  .badges{grid-template-columns:repeat(2,1fr);gap:14px}
  .trio{grid-template-columns:1fr}
  .trio > div + div{border-left:0;border-top:1px solid var(--gold-dim)}
  .foot-grid{grid-template-columns:1fr}
  .periods{grid-template-columns:repeat(2,1fr)}
  .seats{grid-template-columns:1fr}
  .grid2{grid-template-columns:1fr}
  .items{grid-template-columns:repeat(2,1fr);gap:10px}
  .item{padding:12px 10px 10px}
  .item .art{width:96px;height:96px}
  .item h3{font-size:16px}
  .item .desc{display:none}
  .price{font-size:19px}
  .qty button{width:30px;height:30px}
  .plaque{padding:12px 20px;letter-spacing:.14em}
}
@media (max-width:420px){
  .sig-grid{grid-template-columns:1fr}
  .brand-en{display:none}
}
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{animation:none!important;transition:none!important}
}
.menu-layout > *,.book-layout > *,.hero-grid > *{min-width:0}
.ticket h3{letter-spacing:.2em}
html[lang="en"] .ticket h3{letter-spacing:.06em;font-size:26px}
.ticket .seal{top:58px;right:14px;width:74px;height:74px;font-size:17px}
html[lang="en"] .ticket .seal{font-size:14px}
@media (max-width:760px){.nav{transform:translateY(calc(-100% - 90px));visibility:hidden;transition:transform .3s,visibility 0s .3s}.nav.open{transform:none;visibility:visible;transition:transform .3s}}
