

  /* ---------- header ---------- */
  .site-header{
    position:sticky; top:0; z-index:90; display:flex; align-items:center; justify-content:space-between;
    padding:14px var(--pad); background:rgba(242,234,217,0.92); backdrop-filter:blur(8px);
    border-bottom:1px solid var(--line); transition:box-shadow .3s ease;
  }
  .site-header.scrolled{box-shadow:0 8px 24px rgba(26,24,21,0.08);}
  .brand{display:flex; align-items:center; gap:12px; text-decoration:none;}
  .brand img{height:38px;width:38px;border-radius:50%;object-fit:cover;}
  .brand-word{font-family:var(--font-display); font-weight:500; font-size:14.5px; letter-spacing:.05em; text-transform:uppercase; line-height:1.15;}
  .brand-word span:not(.i18n-text){display:block; font-size:9.5px; letter-spacing:.14em; color:var(--soy); font-family:var(--font-sans); font-weight:600; margin-top:2px;}
  nav.primary-nav{display:flex; align-items:center; gap:26px;}
  nav.primary-nav a{
    font-size:12px; letter-spacing:.08em; text-transform:uppercase; text-decoration:none; color:var(--ink);
    font-weight:600; padding-bottom:3px; border-bottom:1px solid transparent; transition:border-color .2s ease, color .2s ease; white-space:nowrap;
  }
  nav.primary-nav a:hover, nav.primary-nav a.active{border-color:var(--chilli); color:var(--chilli);}
  .header-actions{display:flex; align-items:center; gap:12px;}
  .lang-switch{display:flex; align-items:center; gap:2px; font-size:11px; letter-spacing:.06em; font-weight:700;}
  .lang-switch a{color:var(--soy); text-decoration:none; padding:6px 7px; border-radius:2px; line-height:1; min-width:30px; text-align:center;}
  .lang-switch a:hover{background:var(--line);}
  .lang-switch a.active{background:var(--ink); color:var(--bone);}
  .lang-switch a:focus-visible{outline:2px solid var(--chilli); outline-offset:2px;}
  .lang-sep{color:var(--soy); opacity:.35; font-weight:400;}
  .btn{display:inline-block; font-size:11.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; text-decoration:none; padding:10px 17px; border-radius:2px; border:1px solid var(--ink); transition:all .2s ease; cursor:pointer;}
  .btn-solid{background:var(--ink); color:var(--bone);}
  .btn-solid:hover{background:var(--chilli); border-color:var(--chilli); transform:translateY(-1px);}
  .btn-ghost{background:transparent; color:var(--ink);}
  .btn-ghost:hover{background:var(--ink); color:var(--bone);}
  .btn-ghost-light{border-color:var(--line-on-dark); color:var(--bone); background:transparent;}
  .btn-ghost-light:hover{background:var(--bone); color:var(--ink);}
  .chapter--dark .btn-solid, .chapter--soy .btn-solid{background:var(--bone); color:var(--ink); border-color:var(--bone);}
  .chapter--dark .btn-solid:hover, .chapter--soy .btn-solid:hover{background:var(--chilli); border-color:var(--chilli); color:var(--bone);}
  .nav-toggle{display:none; background:none; border:1px solid var(--ink); border-radius:2px; padding:8px 10px; font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; font-weight:700; cursor:pointer;}
  @media (max-width:920px){
    nav.primary-nav{display:none;} .nav-toggle{display:inline-block;}
    .header-actions .btn-ghost{display:none;} .brand-word{font-size:12.5px;} .brand-word span:not(.i18n-text){display:none;}
    .site-header{padding:11px 16px; gap:8px;} .brand img{height:30px;width:30px;}
  }
  @media (max-width:480px){ .btn-solid{padding:9px 12px; font-size:10.5px;} .nav-toggle{padding:9px 10px; font-size:9.5px;} }

  /* mobile drawer */
  .mobile-drawer{
    position:fixed; inset:0; z-index:150; background:var(--ink); color:var(--bone);
    display:flex; flex-direction:column; padding:24px; transform:translateX(100%); transition:transform .35s var(--ease);
  }
  .mobile-drawer{visibility:hidden; transition:transform .35s var(--ease), visibility 0s linear .35s;}
  .mobile-drawer.open{transform:translateX(0); visibility:visible; transition:transform .35s var(--ease), visibility 0s;}
  html.drawer-open, html.drawer-open body{overflow:hidden;}
  .mobile-drawer a{color:var(--bone); text-decoration:none; font-family:var(--font-display); font-size:26px; padding:12px 0; border-bottom:1px solid var(--line-on-dark);}
  .drawer-close{align-self:flex-end; background:none; border:1px solid var(--line-on-dark); color:var(--bone); padding:8px 12px; border-radius:2px; font-size:11px; letter-spacing:.08em; text-transform:uppercase; cursor:pointer; margin-bottom:20px;}

  /* ---------- chapter label (floating, desktop) ---------- */
  .chapter-flag{
    position:fixed; right:22px; top:50%; transform:translateY(-50%); z-index:80;
    writing-mode:vertical-rl; text-orientation:mixed; font-size:10.5px; letter-spacing:.14em; text-transform:uppercase;
    font-weight:700; color:var(--soy); opacity:.55; transition:opacity .4s ease;
  }
  @media (max-width:1100px){.chapter-flag{display:none;}}

  /* ---------- chapter shell ---------- */
  .chapter{position:relative; padding:104px var(--pad); border-bottom:1px solid var(--line); overflow:hidden;}
  .chapter--dark{background:var(--ink); color:var(--bone); border-color:var(--line-on-dark);}
  .chapter--dark .eyebrow{color:var(--brass-soft);}
  .chapter--soy{background:linear-gradient(180deg, var(--soy), var(--soy-2)); color:var(--bone); border-color:var(--line-on-dark);}
  .chapter--soy .eyebrow{color:var(--brass-soft);}

  /* Madam Dai Jun Snacks - a deliberately distinct sub-brand treatment: more
     immediate/energetic than the ink/soy restaurant chapters, but staying in-family
     (brass + chilli forward instead of a new colour). Signals "different expression
     of Madam Dai Jun" per the brand-architecture rule, without a full new brand. */
  .chapter--kiosk{
    background:
      radial-gradient(120% 90% at 85% -10%, rgba(2,111,56,0.30), transparent 55%),
      radial-gradient(90% 70% at 0% 110%, rgba(142,72,11,0.28), transparent 55%),
      linear-gradient(155deg, #12241b, #0b1510);
    color:var(--bone); border-color:var(--line-on-dark);
  }
  .chapter--kiosk .eyebrow{color:var(--brass-soft);}
  .chapter--kiosk .lede{color:var(--bone-deep);}
  .kiosk-sub-brand{
    display:inline-flex; align-items:center; gap:8px; font-size:10px; letter-spacing:.14em; text-transform:uppercase;
    font-weight:700; color:var(--ink); background:var(--brass-soft); padding:5px 12px; border-radius:20px; margin-bottom:20px;
  }
  .kiosk-sub-brand::before{content:"●"; color:var(--chilli); font-size:8px;}
  h2.chapter-title.kiosk-title{
    font-family:var(--font-sans); font-weight:700; text-transform:uppercase; letter-spacing:.01em;
    font-size:clamp(28px,4vw,46px); max-width:20ch;
  }
  .kiosk-strip .frame{aspect-ratio:3/4; min-width:180px;}
  .kiosk-strip .frame.cup{background:
      radial-gradient(60% 60% at 50% 30%, rgba(2,111,56,0.18), transparent 65%),
      linear-gradient(160deg, #182c22, #0e1c15);}
  .kiosk-ctas{display:flex; gap:14px; flex-wrap:wrap; margin-top:28px;}
  .kiosk-audience{display:grid; grid-template-columns:1fr 1fr; gap:20px; margin-top:36px;}
  @media (max-width:760px){.kiosk-audience{grid-template-columns:1fr;}}
  .kiosk-audience-card{border:1px solid var(--line-on-dark); border-radius:3px; padding:22px;}
  .kiosk-audience-card h4{font-family:var(--font-display); font-size:17px; margin:0 0 8px; color:var(--bone);}
  .kiosk-audience-card p{font-size:12.5px; color:var(--bone-deep); margin:0 0 14px;}
  .chapter-inner{max-width:var(--max); margin:0 auto; position:relative; z-index:2;}
  .eyebrow{font-size:11px; letter-spacing:.18em; text-transform:uppercase; font-weight:700; color:var(--chilli); margin:0 0 14px; display:flex; align-items:center; gap:10px;}
  .eyebrow::before{content:""; width:22px; height:1px; background:currentColor; opacity:.6;}
  .chapter-number{font-family:var(--font-display); font-style:italic; font-size:13px; color:var(--soy); opacity:.55; letter-spacing:.04em; margin-bottom:8px;}
  .chapter--dark .chapter-number, .chapter--soy .chapter-number{color:var(--bone); opacity:.45;}
  h2.chapter-title{font-family:var(--font-display); font-weight:500; font-size:clamp(30px,4.4vw,54px); line-height:1.06; margin:0 0 22px; max-width:17ch;}
  .lede{font-family:var(--font-display); font-style:italic; font-size:clamp(17px,1.8vw,21px); line-height:1.55; max-width:640px; margin:0 0 22px; color:var(--soy);}
  .chapter--dark .lede, .chapter--soy .lede{color:var(--bone-deep);}
  .body-text{max-width:560px; font-size:15.5px; line-height:1.75;}
  .body-text p{margin:0 0 16px;}

  /* pending markers */
  .pending{display:inline-block; font-size:10px; font-weight:700; letter-spacing:.08em; text-transform:uppercase; color:var(--brass); border:1px dashed var(--brass); padding:3px 9px; border-radius:2px;}
  .pending-block{border:1px dashed var(--brass); border-radius:3px; padding:16px 18px; font-size:13px; color:var(--soy); background:rgba(2,111,56,0.08); max-width:560px;}
  .chapter--dark .pending-block, .chapter--soy .pending-block, .chapter--kiosk .pending-block{color:var(--bone-deep); background:rgba(242,234,217,0.06); border-color:var(--brass-soft);}
  .chapter--dark .pending, .chapter--soy .pending, .chapter--kiosk .pending{color:var(--brass-soft); border-color:var(--brass-soft);}
  .chapter--dark .frame .frame-tick, .chapter--soy .frame .frame-tick{border-color:var(--brass-soft);}

  /* ---------- frame (elevated placeholder component) ---------- */
  .frame{
    position:relative; border-radius:2px; overflow:hidden; border:1px solid var(--line);
    background:
      radial-gradient(120% 100% at 20% 0%, rgba(2,111,56,0.10), transparent 60%),
      linear-gradient(150deg, var(--bone-deep) 0%, var(--bone) 65%);
    display:flex; align-items:center; justify-content:center; text-align:center; min-height:230px;
    transition:transform .5s var(--ease);
  }
  .chapter--dark .frame, .chapter--soy .frame{
    background: radial-gradient(120% 100% at 20% 0%, rgba(2,111,56,0.08), transparent 60%), linear-gradient(150deg, #192a22, #121e18);
    border-color:var(--line-on-dark);
  }
  @media (hover:hover){ .frame:hover{transform:scale(1.015);} }
  .frame .frame-tick{position:absolute; width:16px; height:16px; border-color:var(--brass); opacity:.55;}
  .frame .tl{top:10px; left:10px; border-top:1px solid; border-left:1px solid;}
  .frame .tr{top:10px; right:10px; border-top:1px solid; border-right:1px solid;}
  .frame .bl{bottom:10px; left:10px; border-bottom:1px solid; border-left:1px solid;}
  .frame .br{bottom:10px; right:10px; border-bottom:1px solid; border-right:1px solid;}
  .frame-label{font-size:10.5px; letter-spacing:.09em; text-transform:uppercase; font-weight:700; color:var(--soy); opacity:.8; padding:0 26px; max-width:280px;}
  .chapter--dark .frame-label, .chapter--soy .frame-label{color:var(--bone-deep);}
  .frame.tall{min-height:440px;} .frame.short{min-height:170px;}
  .frame-caption{font-size:11px; color:var(--soy); margin-top:9px; font-style:italic;}
  .chapter--dark .frame-caption, .chapter--soy .frame-caption{color:var(--bone-deep);}

  /* ---------- hero ---------- */
  .hero{padding:0; border-bottom:1px solid var(--line); background:var(--ink); position:relative;}
  .hero-frame{max-width:none; margin:0; padding:0; position:relative;}
  .hero-media{
    position:relative; width:100%; height:90vh; min-height:640px; max-height:920px; overflow:hidden;
    display:flex; flex-direction:row; align-items:center; justify-content:flex-end; text-align:left; color:var(--bone);
    padding:0 clamp(28px,7vw,112px) 0 0;
    background:
      radial-gradient(60% 60% at 30% 20%, rgba(142,72,11,0.14), transparent 60%),
      radial-gradient(70% 70% at 75% 80%, rgba(2,111,56,0.10), transparent 60%),
      radial-gradient(120% 90% at 50% 15%, #1c3529 0%, #0f1713 75%);
  }
  #heroParallax{position:absolute; inset:-8% -4%; will-change:transform;}
  @media (max-width:900px){
    .hero-media{
      flex-direction:column; align-items:stretch; justify-content:flex-end; text-align:left;
      height:86vh; min-height:560px; max-height:780px;
      padding:0 var(--pad) 42px;
    }
  }
  .hero-media .ph-label{position:absolute; top:18px; left:18px; z-index:3; font-size:9.5px; letter-spacing:.1em; text-transform:uppercase; color:rgba(242,234,217,0.42); font-weight:700; max-width:60%; text-align:left;}
  .hero-content{position:relative; z-index:3; max-width:560px; width:min(560px,44vw); margin-top:4vh;}
  @media (max-width:900px){ .hero-content{max-width:none; width:100%; margin-top:0;} }
  .hero-zh{font-family:var(--font-display); font-size:14px; letter-spacing:.18em; color:var(--brass-soft); margin-bottom:22px;}
  .hero-line{
    font-family:var(--font-display); font-style:italic; font-weight:500;
    font-size:clamp(38px, 32px + 2.1vw, 72px); line-height:1.14; letter-spacing:-0.005em; margin:0;
  }
  /* base .hero-ctas rule kept as-is: reused untouched by the Chapter 03 menu
     teaser ("Explore The Menu"); the hero's own CTA row is styled more
     specifically below so that reuse is unaffected by this rework. */
  .hero-ctas{display:flex; gap:14px; justify-content:center; padding:30px var(--pad) 46px; flex-wrap:wrap;}
  .hero-content .hero-ctas{display:flex; align-items:center; gap:16px; flex-wrap:wrap; margin-top:34px; padding:0; justify-content:flex-start;}
  .hero-btn{display:inline-block; font-size:12px; font-weight:700; letter-spacing:.07em; text-transform:uppercase; text-decoration:none; padding:14px 27px; border-radius:2px; transition:all .2s ease;}
  .hero-btn-primary{background:var(--chilli); color:var(--bone); border:1px solid var(--chilli);}
  .hero-btn-primary:hover{background:var(--bone); color:var(--ink); border-color:var(--bone); transform:translateY(-1px);}
  .hero-btn-secondary{background:transparent; color:var(--bone); border:1px solid rgba(242,234,217,0.55);}
  .hero-btn-secondary:hover{background:rgba(242,234,217,0.12); border-color:var(--bone);}
  .hero-btn-tertiary{display:inline-flex; align-items:center; padding:14px 2px; background:none; border:none; color:rgba(242,234,217,0.68); font-size:11px; font-weight:600; letter-spacing:.06em; text-transform:uppercase; text-decoration:underline; text-underline-offset:3px; text-decoration-color:rgba(242,234,217,0.32); transition:color .2s ease;}
  .hero-btn-tertiary:hover{color:var(--bone); text-decoration-color:var(--bone);}
  @media (max-width:520px){ .hero-content .hero-ctas{flex-direction:column; align-items:stretch; gap:11px;} .hero-btn{text-align:center;} .hero-btn-tertiary{justify-content:center;} }

  /* ---------- split ---------- */
  .split{display:grid; grid-template-columns:1.05fr .95fr; gap:56px; align-items:center;}
  .split.reverse{grid-template-columns:.95fr 1.05fr;}
  .split.reverse .split-media{order:2;}
  @media (max-width:860px){ .split, .split.reverse{grid-template-columns:1fr; gap:30px;} .split.reverse .split-media{order:0;} }

  /* pull quote */
  .pull-quote{max-width:720px; margin:30px 0 0; font-family:var(--font-display); font-style:italic; font-weight:400; font-size:clamp(19px,2.4vw,26px); line-height:1.6;}
  .pull-quote span:not(.i18n-text){display:block;}
  .pull-quote span:not(.i18n-text):nth-child(2){padding-left:3%;}
  .pull-quote span:not(.i18n-text):nth-child(3){padding-left:6%;}
  .pull-quote cite{display:block; margin-top:14px; font-family:var(--font-sans); font-style:normal; font-size:11px; letter-spacing:.08em; text-transform:uppercase; color:var(--brass-soft); font-weight:700;}

  .dot-divider{text-align:center; color:var(--brass); letter-spacing:6px; font-size:11px;}

  /* ---------- horizontal strip ---------- */
  .h-strip{display:flex; gap:16px; overflow-x:auto; scroll-snap-type:x mandatory; padding:6px 2px 18px; margin-top:36px; -webkit-overflow-scrolling:touch;}
  .h-strip::-webkit-scrollbar{height:5px;}
  .h-strip::-webkit-scrollbar-thumb{background:var(--brass); border-radius:4px;}
  .h-strip .frame{min-width:230px; flex:0 0 auto; scroll-snap-align:start; aspect-ratio:4/5;}
  @media (max-width:600px){ .h-strip .frame{min-width:74vw;} }

  /* ---------- dish cards ---------- */
  .dish-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:20px; margin-top:38px;}
  @media (max-width:900px){.dish-grid{grid-template-columns:1fr 1fr;}}
  @media (max-width:560px){.dish-grid{grid-template-columns:1fr;}}
  .dish-card{display:flex; flex-direction:column; border:1px solid var(--line); border-radius:3px; background:rgba(255,255,255,0.4); overflow:hidden; transition:box-shadow .3s ease, transform .3s ease;}
  .dish-card:hover{box-shadow:0 14px 30px rgba(26,24,21,0.12); transform:translateY(-3px);}
  .dish-card .frame{border-radius:0; border:none; border-bottom:1px solid var(--line); aspect-ratio:5/4; min-height:0;}
  .dish-body{display:flex; flex:1; flex-direction:column; padding:16px 18px 20px;}
  .dish-tag{align-self:flex-start; display:inline-block; font-size:9.5px; letter-spacing:.08em; text-transform:uppercase; font-weight:700; color:var(--chilli); border:1px solid var(--chilli); padding:2px 7px; border-radius:2px; margin-bottom:10px;}
  .dish-names{font-family:var(--font-display); font-size:19px; font-weight:500; margin:0 0 3px;}
  .dish-names .zh{font-family:var(--font-display); font-size:14px; color:var(--soy); margin-left:6px;}
  .dish-bm{font-size:11.5px; color:var(--soy); font-style:italic; margin:0 0 8px;}
  .dish-desc{font-size:12.5px; color:var(--soy); line-height:1.55; margin:0;}
  .dish-meta{display:flex; justify-content:space-between; align-items:center; margin-top:auto; padding-top:12px;}
  .dish-spice{font-size:11px; color:var(--chilli);}

  /* ---------- location cards ---------- */
  .loc-card{border:1px solid var(--line); border-radius:2px; background:rgba(255,255,255,0.35); padding:34px;}
  .chapter--soy .loc-card{border-color:var(--line-on-dark); background:rgba(242,234,217,0.05);}
  .loc-tag{display:inline-block; font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; font-weight:700; padding:4px 10px; border-radius:2px; margin-bottom:14px;}
  .loc-tag.flagship{background:var(--green); color:var(--bone);}
  .loc-tag.secondary{background:var(--brass-soft); color:var(--ink);}
  .loc-meta{display:flex; flex-wrap:wrap; gap:20px; margin-top:20px; font-size:13px;}
  .loc-meta div{min-width:150px;}
  .loc-meta strong{display:block; font-size:10.5px; letter-spacing:.08em; text-transform:uppercase; color:var(--chilli); margin-bottom:4px; font-weight:700;}
  .loc-grid{display:grid; grid-template-columns:1.1fr .9fr; gap:26px;}
  @media (max-width:820px){.loc-grid{grid-template-columns:1fr;}}
  .loc-ctas{display:flex; gap:10px; margin-top:24px; flex-wrap:wrap;}

  /* Johor - intentionally lighter / smaller scale, ~15-20% visual weight of Cyberjaya */
  .johor-wrap{max-width:640px;}
  .johor-wrap .frame{min-height:180px;}

  /* ---------- catering ---------- */
  .catering-grid{display:grid; grid-template-columns:1fr 1fr; gap:40px; margin-top:20px; align-items:start;}
  @media (max-width:860px){.catering-grid{grid-template-columns:1fr;}}
  .mini-form{display:grid; gap:12px;}
  .mini-form .row2{display:grid; grid-template-columns:1fr 1fr; gap:12px;}
  .mini-form label{font-size:10.5px; letter-spacing:.07em; text-transform:uppercase; font-weight:700; color:var(--brass-soft); display:block; margin-bottom:5px;}
  .mini-form input, .mini-form select, .mini-form textarea{
    width:100%; background:rgba(242,234,217,0.06); border:1px solid var(--line-on-dark); color:var(--bone);
    padding:10px 12px; border-radius:2px; font-family:var(--font-sans); font-size:13px;
  }
  .mini-form textarea{resize:vertical; min-height:70px;}
  .mini-form button{margin-top:6px;}

  /* ---------- teaser ---------- */
  .teaser-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:18px; margin-top:36px;}
  @media (max-width:760px){.teaser-grid{grid-template-columns:1fr;}}
  .teaser-card{border:1px solid var(--line); padding:22px; border-radius:2px; transition:border-color .3s ease;}
  .teaser-card:hover{border-color:var(--brass);}
  .teaser-card h4{font-family:var(--font-display); font-weight:500; font-size:17px; margin:0 0 6px;}
  .teaser-card p{font-size:12.5px; color:var(--soy); margin:0;}

  /* ---------- footer ---------- */
  footer{background:var(--ink); color:var(--bone-deep); padding:64px var(--pad) 120px;}
  .footer-inner{max-width:var(--max); margin:0 auto;}
  .footer-brands{display:flex; flex-wrap:wrap; gap:40px; padding-bottom:36px; border-bottom:1px solid var(--line-on-dark); margin-bottom:32px;}
  .footer-brands div{max-width:280px;}
  .footer-brands h5{font-family:var(--font-display); color:var(--bone); font-size:16px; margin:0 0 8px; font-weight:500;}
  .footer-brands p{font-size:12.5px; line-height:1.6; margin:0;}
  .footer-cols{display:grid; grid-template-columns:repeat(4,1fr); gap:24px; font-size:12.5px;}
  @media (max-width:760px){.footer-cols{grid-template-columns:1fr 1fr;}}
  .footer-cols h6{font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; color:var(--brass-soft); margin:0 0 12px; font-weight:700;}
  .footer-cols a{display:block; text-decoration:none; color:var(--bone-deep); margin-bottom:8px;}
  .footer-cols a:hover{color:var(--bone);}
  .footer-bottom{margin-top:40px; padding-top:20px; border-top:1px solid var(--line-on-dark); font-size:11px; color:rgba(242,234,217,0.42); display:flex; justify-content:space-between; flex-wrap:wrap; gap:10px;}

  /* ---------- mobile action dock ---------- */
  .mobile-dock{position:fixed; bottom:0; left:0; right:0; z-index:120; display:none; grid-template-columns:1fr 1fr 1fr; background:var(--ink); border-top:1px solid var(--line-on-dark);}
  .mobile-dock a{display:flex; flex-direction:column; align-items:center; gap:3px; padding:11px 4px 14px; text-decoration:none; color:var(--bone); font-size:10px; letter-spacing:.05em; text-transform:uppercase; font-weight:700; border-right:1px solid var(--line-on-dark);}
  .mobile-dock a:last-child{border-right:none;}
  .mobile-dock a .ico{font-size:16px; line-height:1;}
  @media (max-width:760px){ .mobile-dock{display:grid;} body{padding-bottom:64px;} }

  .reveal{opacity:0; transform:translateY(18px); transition:opacity .7s var(--ease), transform .7s var(--ease);}
  .reveal.is-visible{opacity:1; transform:translateY(0);}
  .reveal-stagger.is-visible span:not(.i18n-text){transition-delay: calc(var(--i, 0) * 80ms);}

  /* ---------- Phase 2 additions ---------- */
  .big-number{
    font-family:var(--font-display); font-weight:500; font-size:clamp(64px,14vw,168px);
    line-height:.95; margin:0 0 18px; color:var(--bone);
  }
  .chapter--dark .big-number, .chapter--soy .big-number, .chapter--kiosk .big-number{color:var(--bone);}
  .peace-phrase{
    font-family:var(--font-display); font-style:italic; font-weight:400;
    font-size:clamp(28px,5vw,56px); line-height:1.2; max-width:16ch; margin:20px 0;
  }
  .timeline{border-left:1px solid var(--line-on-dark); margin-top:40px; max-width:640px;}
  .chapter:not(.chapter--dark):not(.chapter--soy):not(.chapter--kiosk) .timeline{border-color:var(--line);}
  .timeline-item{position:relative; padding:0 0 34px 28px;}
  .timeline-item::before{content:""; position:absolute; left:-5px; top:4px; width:9px; height:9px; border-radius:50%; background:var(--brass-soft);}
  .timeline-item .t-date{font-size:10.5px; letter-spacing:.1em; text-transform:uppercase; font-weight:700; color:var(--chilli); margin-bottom:6px; display:block;}
  .chapter--dark .timeline-item .t-date, .chapter--soy .timeline-item .t-date, .chapter--kiosk .timeline-item .t-date{color:var(--brass-soft);}
  .timeline-item h4{font-family:var(--font-display); font-weight:500; font-size:19px; margin:0 0 6px;}
  .timeline-item p{font-size:13.5px; line-height:1.6; margin:0; max-width:480px;}
  .quote-tag{display:inline-block; font-size:10px; letter-spacing:.1em; text-transform:uppercase; font-weight:700; color:var(--brass-soft); margin-top:10px;}

  .filter-bar{display:flex; flex-wrap:wrap; gap:10px; margin:32px 0 8px;}
  .filter-chip{font-size:11px; letter-spacing:.05em; text-transform:uppercase; font-weight:700; padding:7px 14px; border:1px solid var(--line); border-radius:20px; background:transparent; cursor:pointer; color:var(--ink); transition:all .2s ease;}
  .filter-chip.active, .filter-chip:hover{background:var(--ink); color:var(--bone); border-color:var(--ink);}
  .lang-note{font-size:11.5px; color:var(--soy); font-style:italic; margin:6px 0 0;}
  .menu-section-title{font-family:var(--font-display); font-weight:500; font-size:24px; margin:56px 0 6px;}
  .menu-category-block:first-child .menu-section-title{margin-top:20px;}
  .dish-row-list{border-top:1px solid var(--line); margin-top:22px;}
  .dish-row{display:flex; justify-content:space-between; align-items:baseline; gap:18px; padding:14px 2px; border-bottom:1px solid var(--line);}
  .dish-row-main{min-width:0;}
  .dish-row-name{font-family:var(--font-display); font-size:15.5px; font-weight:500; margin:0;}
  .dish-row-name .zh{font-family:var(--font-display); font-size:12px; color:var(--soy); margin-left:6px; font-weight:400;}
  .dish-row-name .status-tag{margin-left:8px; vertical-align:middle;}
  .dish-row-desc{font-size:11.5px; color:var(--soy); line-height:1.5; margin:3px 0 0;}
  .dish-row-meta{display:flex; align-items:baseline; gap:10px; white-space:nowrap; font-size:13.5px; font-weight:600;}
  .dish-row-meta .dish-spice{font-size:11px; font-weight:400;}
  .dish-row-meta .pending{font-size:11px; font-weight:400; color:var(--soy); font-style:italic;}
  .menu-section-sub{font-size:12.5px; color:var(--soy); margin:0 0 4px;}
  .status-tag{display:inline-block; font-size:9px; letter-spacing:.08em; text-transform:uppercase; font-weight:700; padding:2px 7px; border-radius:2px; margin-left:8px; vertical-align:middle;}
  .status-tag.signature{background:var(--green); color:var(--bone);}
  .status-tag.unavailable{background:transparent; border:1px solid var(--line); color:var(--soy);}
  .status-tag.confirm{background:transparent; border:1px solid var(--chilli); color:var(--chilli);}
  .chapter--dark .status-tag.confirm, .chapter--soy .status-tag.confirm, .chapter--kiosk .status-tag.confirm{border-color:var(--brass-soft); color:var(--brass-soft);}
  .price-note{font-size:10.5px; color:var(--soy); font-weight:400;}
  .chapter--dark .price-note, .chapter--soy .price-note, .chapter--kiosk .price-note{color:var(--bone-deep);}

  .approach-grid{display:grid; grid-template-columns:repeat(3,1fr); gap:24px; margin-top:36px;}
  @media (max-width:860px){.approach-grid{grid-template-columns:1fr 1fr;}}
  @media (max-width:560px){.approach-grid{grid-template-columns:1fr;}}
  .approach-card{padding:26px 22px; border:1px solid var(--line); border-radius:3px;}
  .chapter--dark .approach-card, .chapter--soy .approach-card, .chapter--kiosk .approach-card{border-color:var(--line-on-dark);}
  .approach-card .num{font-family:var(--font-display); font-style:italic; font-size:13px; color:var(--chilli); margin-bottom:10px; display:block;}
  .chapter--dark .approach-card .num, .chapter--soy .approach-card .num, .chapter--kiosk .approach-card .num{color:var(--brass-soft);}
  .approach-card h4{font-family:var(--font-display); font-weight:500; font-size:17px; margin:0 0 8px;}
  .approach-card p{font-size:12.5px; line-height:1.6; margin:0; color:var(--soy);}
  .chapter--dark .approach-card p, .chapter--soy .approach-card p, .chapter--kiosk .approach-card p{color:var(--bone-deep);}

  .faith-note{border-left:2px solid var(--brass-soft); padding-left:18px; font-size:13px; line-height:1.7; max-width:520px; margin-top:22px; color:var(--bone-deep);}

  .page-hero{padding:150px var(--pad) 64px; text-align:left;}
  .page-hero .eyebrow{justify-content:flex-start;}
  .page-hero h1.chapter-title{font-size:clamp(34px,5.4vw,64px); max-width:14ch;}

  /* ---------- real photography (Phase 2 correction pass) ---------- */
  .frame.has-photo{padding:0; background:none;}
  .frame.has-photo img{position:absolute; inset:0; width:100%; height:100%; object-fit:cover; object-position:center 18%; display:block;}
  .frame.has-photo.tall{min-height:520px;}

  /* ---------- food image asset integration (2026-09-06) ---------- */
  .frame-confirm-note{position:absolute; top:10px; right:10px; z-index:2; font-size:9px; letter-spacing:.06em; text-transform:uppercase; font-weight:700; padding:3px 8px; border-radius:2px; background:rgba(26,24,21,0.72); color:var(--bone);}

  /* ---------- hero full-bleed photo (2026-09-24 - FSNH-1.png) ---------- */
  .hero-media.has-photo{background:#0f1713;}
  .hero-media.has-photo #heroParallax img{
    position:absolute; inset:0; width:100%; height:100%; object-fit:cover;
    object-position:46% 30%; display:block; opacity:1;
  }
  /* directional reading zone (2026-09-24 rework) - strongest behind the right-side
     copy column, fading to fully transparent over the food; food stays untouched. */
  .hero-media.has-photo::after{
    content:""; position:absolute; inset:0; z-index:2; pointer-events:none;
    background:
      linear-gradient(90deg, rgba(13,20,16,0) 0%, rgba(13,20,16,0) 32%, rgba(13,20,16,.30) 52%, rgba(13,20,16,.62) 70%, rgba(13,20,16,.74) 100%),
      linear-gradient(180deg, rgba(13,20,16,.16) 0%, rgba(13,20,16,0) 22%, rgba(13,20,16,0) 72%, rgba(13,20,16,.30) 100%);
  }
  @media (max-width:900px){
    .hero-media.has-photo #heroParallax img{ object-position:44% 35%; }
    /* mobile: copy sits in the lower third, so the reading zone shifts to a bottom fade */
    .hero-media.has-photo::after{
      background:
        linear-gradient(180deg, rgba(13,20,16,0) 0%, rgba(13,20,16,0) 34%, rgba(13,20,16,.38) 60%, rgba(13,20,16,.72) 82%, rgba(13,20,16,.86) 100%);
    }
  }
  /* tighten the transition straight from hero into Chapter 02 - no detached CTA
     band, no dead gap; scoped to the section immediately after the hero only. */
  .hero + .chapter{padding-top:56px;}
  @media (max-width:900px){ .hero + .chapter{padding-top:44px;} }

  /* ---------- Phase 3 additions: master launch restructure + premium pass ---------- */
  /* tighter vertical rhythm sitewide - same component system, better restraint */
  .chapter{padding:84px var(--pad);}
  .chapter--compact{padding-top:60px; padding-bottom:60px;}
  @media (max-width:760px){ .chapter{padding:56px var(--pad);} .chapter--compact{padding-top:44px; padding-bottom:44px;} }

  /* Madam Dai Jun Snacks - full red/cream kiosk identity, distinct from the
     restaurant's ink/soy/jade world on purpose: this is the sub-brand's own
     visual language, still built from the same component system. */
  .chapter--red{
    background:
      radial-gradient(120% 90% at 85% -10%, rgba(255,217,176,0.16), transparent 55%),
      radial-gradient(90% 70% at 0% 110%, rgba(0,0,0,0.22), transparent 55%),
      linear-gradient(160deg, #8a2415 0%, #6b1a0f 55%, #4a1109 100%);
    color:#fff6ec; border-color: rgba(255,246,236,0.18);
  }
  .chapter--red .eyebrow{color:#ffd9b0;}
  .chapter--red .lede{color:rgba(255,246,236,0.86);}
  .chapter--red .body-text{color:rgba(255,246,236,0.86);}
  .chapter--red .chapter-number{color:#fff6ec; opacity:.5;}
  .chapter--red .btn-solid{background:#fff6ec; color:#6b1a0f; border-color:#fff6ec;}
  .chapter--red .btn-solid:hover{background:#ffd9b0; border-color:#ffd9b0; color:#4a1109;}
  .chapter--red .btn-ghost-light{border-color:rgba(255,246,236,0.5); color:#fff6ec;}
  .chapter--red .btn-ghost-light:hover{background:#fff6ec; color:#6b1a0f;}
  .chapter--red .frame{background: linear-gradient(160deg, rgba(255,246,236,0.10), rgba(0,0,0,0.16)); border-color: rgba(255,246,236,0.2);}
  .chapter--red .frame .frame-tick{border-color:#ffd9b0;}
  .chapter--red .frame-label{color:rgba(255,246,236,0.75);}
  .chapter--red .dish-card{background:rgba(255,246,236,0.05); border-color:rgba(255,246,236,0.18);}
  .chapter--red .dish-names, .chapter--red h2.chapter-title, .chapter--red h3, .chapter--red h4{color:#fff6ec;}
  .chapter--red .dish-desc, .chapter--red .dish-bm{color:rgba(255,246,236,0.75);}
  .chapter--red .dish-tag{color:#ffd9b0; border-color:#ffd9b0;}
  .snack-sub-brand{
    display:inline-flex; align-items:center; gap:8px; font-size:10px; letter-spacing:.14em; text-transform:uppercase;
    font-weight:700; color:#6b1a0f; background:#fff6ec; padding:5px 12px; border-radius:20px; margin-bottom:20px;
  }
  .snack-sub-brand::before{content:"●"; color:#6b1a0f; font-size:8px;}
  .snack-hero{
    background:
      radial-gradient(120% 90% at 85% -10%, rgba(255,217,176,0.18), transparent 55%),
      linear-gradient(160deg, #8a2415 0%, #6b1a0f 60%, #4a1109 100%);
  }

  /* text-only dish treatment - a confirmed dish with no confirmed exact photo yet.
     A clean editorial row, never an empty photo box. */
  .dish-card--text{border:1px solid var(--line); border-radius:3px; padding:24px 22px; display:flex; flex-direction:column; justify-content:center;}
  .chapter--dark .dish-card--text, .chapter--soy .dish-card--text, .chapter--kiosk .dish-card--text, .chapter--red .dish-card--text{border-color:var(--line-on-dark);}
  .dish-card--text .dish-names{margin-bottom:6px;}

  .enquiry-strip{border:1px solid rgba(255,246,236,0.3); border-radius:3px; padding:30px 32px; max-width:540px; margin-top:32px; background:rgba(255,246,236,0.06);}
  .enquiry-strip h4{font-family:var(--font-display); font-size:20px; margin:0 0 8px; font-weight:500;}
  .enquiry-strip p{font-size:13px; margin:0 0 18px; color:rgba(255,246,236,0.8);}

  /* condensed editorial timeline label (Madam Dai Jun page) */
  .timeline--tight .timeline-item{padding-bottom:26px;}

  .photo-credit{position:absolute; right:10px; bottom:8px; z-index:2; font-size:10px; letter-spacing:.04em; color:#f2ead9; background:rgba(26,24,21,.55); padding:3px 7px; border-radius:2px; pointer-events:none;}

  /* Phones: the bottom dock already carries WhatsApp, so the header keeps brand, EN | BM and Menu */
  @media (max-width:760px){ .header-actions .btn-solid{display:none;} .header-actions{gap:8px;} }
  @media (max-width:360px){ .brand{gap:8px;} .brand-word{font-size:13px;} .lang-switch a{padding:6px 5px; min-width:26px;} }

  /* Hero copy (Oct 2026): brand eyebrow in the label style used elsewhere, plus one supporting line */
  .hero-zh.hero-eyebrow{font-family:var(--font-sans); font-size:11.5px; font-weight:700; letter-spacing:.18em; text-transform:uppercase;}
  .hero-line{text-wrap:balance;}
  .hero-sub{margin:20px 0 0; max-width:34em; font-family:var(--font-sans); font-size:clamp(15px, 13px + .45vw, 18px); line-height:1.55; color:rgba(242,234,217,.92); text-wrap:pretty; text-shadow:0 1px 14px rgba(10,14,12,.7), 0 0 2px rgba(10,14,12,.5);}

  /* "At the Four Seasons Table": guided five-photo introduction to the food world */
  .serve-section{padding-top:clamp(56px,7vw,84px); padding-bottom:clamp(48px,6vw,72px);}
  .serve-section .body-text{max-width:620px;}
  .serve-section .chapter-title{max-width:none; text-wrap:balance;}
  .serve-strip{display:grid; grid-template-columns:repeat(5,minmax(0,1fr)); gap:14px; margin-top:30px;
    width:min(1400px, calc(100vw - 2 * var(--pad))); margin-left:50%; transform:translateX(-50%);}
  .serve-item{margin:0; aspect-ratio:3/4; min-width:0; min-height:0;}
  .serve-item:hover{transform:none;}
  .serve-label{position:absolute; left:0; right:0; bottom:0; z-index:2; display:flex; flex-direction:column; align-items:flex-start; gap:5px; text-align:left;
    padding:56px 16px 15px; background:linear-gradient(to bottom, rgba(12,14,13,0), rgba(12,14,13,.62) 45%, rgba(12,14,13,.9));}
  .serve-cat{font-family:var(--font-sans); font-size:10.5px; font-weight:700; letter-spacing:.17em; text-transform:uppercase; color:var(--bone);}
  .serve-note{font-family:var(--font-display); font-style:italic; font-size:15px; line-height:1.3; color:var(--bone-deep);}
  .serve-indicator{display:none;}
  .serve-rule{display:block; width:56px; height:2px; background:var(--brass-soft); margin-top:28px; opacity:.85;}
  /* tablet and phone: swipeable strip with a real position indicator in place of the scrollbar */
  @media (max-width:1024px){
    .serve-strip{display:flex; overflow-x:auto; scroll-snap-type:x mandatory; scrollbar-width:none; -webkit-overflow-scrolling:touch;
      width:auto; margin-left:0; transform:none; padding-bottom:2px;}
    .serve-strip::-webkit-scrollbar{display:none;}
    .serve-item{flex:0 0 clamp(240px, 38vw, 340px); scroll-snap-align:start;}
    .serve-rule{display:none;}
    .serve-indicator{display:flex; gap:8px; margin-top:20px;}
    .serve-dot{width:22px; height:3px; padding:0; border:0; border-radius:2px; background:var(--line-on-dark); cursor:pointer; transition:background .2s ease, width .2s ease;}
    .serve-dot.is-active{width:40px; background:var(--brass-soft);}
    .serve-dot:focus-visible{outline:2px solid var(--brass-soft); outline-offset:4px;}
  }
  @media (max-width:600px){ .serve-item{flex-basis:72vw;} }

  /* "Her Way, Still.": founder section, portrait stays the anchor; kitchen/handmade cluster below */
  .mhw-text .body-text{max-width:34em;}
  .mhw-text .btn{margin-top:10px;}
  .mhw-cluster{width:100%; display:grid; grid-template-columns:minmax(0,1.75fr) minmax(0,1fr) minmax(0,1fr); gap:14px; margin-top:clamp(36px,4vw,56px); height:clamp(230px,24vw,330px);}
  .mhw-cluster .frame{margin:0; aspect-ratio:auto; min-width:0; min-height:0; height:100%;}
  .mhw-cluster .frame.has-photo img{object-position:center;}
  .mhw-cluster .mhw-wide img{object-position:64% 42%;}
  @media (max-width:760px){
    .mhw-cluster{grid-template-columns:1fr 1fr; height:auto; gap:10px;}
    .mhw-cluster .frame{height:auto;}
    .mhw-cluster .mhw-wide{grid-column:1 / -1; aspect-ratio:16/10;}
    .mhw-cluster .mhw-small{aspect-ratio:1/1;}
  }


  /* "Your Table Awaits." unified location section (Oct 17): copy left 45%, photo + directions + expandable map right 55% */
  .table-section{padding-top:clamp(56px,7vw,88px); padding-bottom:clamp(56px,7vw,88px);}
  .table-grid{display:grid; grid-template-columns:minmax(0,45fr) minmax(0,55fr); gap:clamp(32px,5vw,72px); align-items:center;}
  .table-copy{min-width:0;}
  .table-copy .lede{margin-bottom:14px;}
  .table-copy .body-text{max-width:34em; margin:0 0 12px;}
  .table-place{margin-top:22px; padding-top:18px; border-top:1px solid var(--line); max-width:34em;}
  .table-place-name{margin:0 0 10px; font-family:var(--font-display); font-size:19px; line-height:1.25;}
  .table-place-name span:not(.i18n-text){display:block; font-family:var(--font-sans); font-size:12.5px; color:var(--soy); margin-top:3px;}
  .table-info{margin:0; display:grid;}
  .table-info div{display:grid; grid-template-columns:118px minmax(0,1fr); gap:14px; padding:11px 0; border-top:1px solid var(--line);}
  .table-info div:last-child{border-bottom:1px solid var(--line);}
  .table-info dt{font-size:10.5px; font-weight:700; letter-spacing:.14em; text-transform:uppercase; color:var(--chilli); padding-top:3px;}
  .table-info dd{margin:0; font-size:14.5px; line-height:1.55;}
  .table-ctas{display:flex; flex-wrap:wrap; gap:12px; margin-top:24px;}
  .table-ctas .btn{display:inline-block; padding:13px 22px;}
  .table-visual{display:flex; flex-direction:column; gap:12px; min-width:0;}
  .frame.table-photo{margin:0; flex:none; aspect-ratio:1/1; min-height:0; min-width:0;}
  .table-directions{display:flex; flex-wrap:wrap; align-items:center; gap:8px 10px;}
  .table-directions-label{font-size:10.5px; letter-spacing:.14em; text-transform:uppercase; font-weight:700; color:var(--soy); margin-right:4px;}
  .table-directions a{display:inline-block; padding:8px 13px; border:1px solid var(--line); border-radius:2px; color:var(--ink); text-decoration:none; font-size:10.5px; font-weight:700; letter-spacing:.06em; text-transform:uppercase; transition:border-color .2s ease, background .2s ease;}
  .table-directions a:hover{border-color:var(--brass); background:rgba(2,111,56,.06);}
  .table-directions a:focus-visible, .table-map summary:focus-visible{outline:2px solid var(--brass); outline-offset:2px;}
  .table-map{border-top:1px solid var(--line);}
  .table-map summary{list-style:none; cursor:pointer; display:flex; align-items:center; gap:10px; padding:11px 0 2px; font-size:11.5px; font-weight:700; letter-spacing:.1em; text-transform:uppercase; color:var(--brass);}
  .table-map summary::-webkit-details-marker{display:none;}
  .table-map summary::after{content:"+"; margin-left:auto; font-size:16px; font-weight:400; color:var(--soy); transition:transform .2s ease;}
  .table-map[open] summary::after{transform:rotate(45deg);}
  .table-map-pin{width:11px; height:11px; border-radius:50% 50% 50% 0; background:var(--brass-soft); transform:rotate(-45deg);}
  .table-map-frame{position:relative; height:clamp(220px,22vw,280px); margin-top:10px; border:1px solid var(--line); border-radius:3px; overflow:hidden; background:var(--soy-2);}
  .table-map-frame iframe{position:absolute; inset:0; width:100%; height:100%; border:0; display:block;}
  .table-map-fallback{position:absolute; inset:0; display:flex; flex-direction:column; align-items:center; justify-content:center; gap:5px; padding:16px; text-align:center; color:var(--bone);}
  .table-map-fallback strong{font-family:var(--font-display); font-weight:500; font-size:16px;}
  .table-map-fallback span:not(.i18n-text){font-size:12.5px; opacity:.8;}
  .table-map-fallback .map-open{font-size:11px; letter-spacing:.12em; text-transform:uppercase; font-weight:700; color:var(--brass-soft); text-decoration:none; border-bottom:1px solid rgba(107,199,153,.45); margin-top:6px; pointer-events:auto;}
  @media (max-width:860px){
    .table-grid{grid-template-columns:1fr;}
    .frame.table-photo{aspect-ratio:5/4;}
  }
  @media (max-width:1180px) and (min-width:861px){ .table-info div{grid-template-columns:1fr; gap:4px;} }
  @media (max-width:480px){ .table-info div{grid-template-columns:1fr; gap:4px;} .frame.table-photo{aspect-ratio:1/1;} .table-directions-label{flex-basis:100%;} }

  /* Compact footer (Oct 17) */
  footer.site-footer{padding:44px var(--pad) 32px;}
  @media (max-width:760px){ footer.site-footer{padding-bottom:96px;} }
  .footer-row{display:grid; grid-template-columns:auto 1fr auto; align-items:center; gap:20px 40px; padding-bottom:26px;}
  .footer-brand{display:flex; align-items:center; gap:12px; text-decoration:none; color:var(--bone);}
  .footer-brand img{width:40px; height:40px; border-radius:50%; object-fit:cover;}
  .footer-brand span:not(.i18n-text){font-family:var(--font-display); font-size:17px; line-height:1.2;}
  .footer-brand em{display:block; font-style:normal; font-family:var(--font-sans); font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:var(--brass-soft); margin-top:4px;}
  .footer-nav{display:flex; flex-wrap:wrap; justify-content:center; gap:8px 26px;}
  .footer-nav a{color:var(--bone-deep); text-decoration:none; font-size:11.5px; font-weight:600; letter-spacing:.1em; text-transform:uppercase;}
  .footer-nav a:hover, .footer-contact a:hover{color:var(--bone);}
  .footer-contact{margin:0; font-size:13px; text-align:right; color:var(--bone-deep);}
  .footer-contact span:not(.i18n-text){display:block; font-size:10.5px; letter-spacing:.12em; text-transform:uppercase; color:var(--brass-soft); font-weight:700; margin-bottom:3px;}
  .footer-contact a{color:var(--bone); text-decoration:none;}
  .site-footer .footer-bottom{display:flex; flex-wrap:wrap; align-items:center; justify-content:space-between; gap:12px 24px; margin-top:0; padding-top:18px; border-top:1px solid var(--line-on-dark); font-size:11.5px; color:rgba(242,234,217,.62);}
  .footer-credit{display:inline-flex; align-items:center; gap:10px; opacity:.75;}
  .footer-credit img{height:15px; width:auto; display:block;}
  @media (max-width:860px){
    .footer-row{grid-template-columns:1fr; justify-items:start; gap:18px;}
    .footer-nav{justify-content:flex-start;}
    .footer-contact{text-align:left;}
  }

  /* ---------- Simplified Chinese (简中) typography, 20 Oct 2026 ----------
     Chinese has no true italic, so no synthetic slant; Latin-style wide tracking is
     tightened; slightly taller line height for dense characters; lines break at
     natural points and headings are not held to Latin character widths. */
  html:lang(zh) body *{font-style:normal !important;}
  html:lang(zh) .eyebrow, html:lang(zh) .btn, html:lang(zh) .primary-nav a, html:lang(zh) .filter-chip,
  html:lang(zh) dt, html:lang(zh) .map-nav-label, html:lang(zh) .loc-meta strong, html:lang(zh) .dream-cite,
  html:lang(zh) .visit-map .map-open, html:lang(zh) h6{letter-spacing:.08em;}
  html:lang(zh) .mobile-drawer a{letter-spacing:.02em;}  /* large display links: wide tracking spread out the Latin name */
  html:lang(zh) p, html:lang(zh) dd, html:lang(zh) li{line-height:1.85; line-break:strict;}
  html:lang(zh) h1, html:lang(zh) h2, html:lang(zh) h3{letter-spacing:.01em; line-break:strict; word-break:normal;}
  html:lang(zh) h1, html:lang(zh) h2, html:lang(zh) h3, html:lang(zh) blockquote p, html:lang(zh) .lede{text-wrap:balance;}
  html:lang(zh) .heart-quote p, html:lang(zh) .dream-quote blockquote p, html:lang(zh) .menu-title{line-height:1.38 !important;}
  html:lang(zh) .chapter-title, html:lang(zh) h1.chapter-title, html:lang(zh) h2.chapter-title{max-width:22em;}
  .zh.en-alt{white-space:normal !important; font-family:var(--font-sans) !important; font-size:12px !important; font-weight:400 !important; letter-spacing:.01em !important; color:var(--soy); opacity:.82;}
  .menu-section-title .zh.en-alt, .menu-subsection-title .zh.en-alt{font-size:.5em !important; letter-spacing:.06em !important;}
  .lang-switch a[lang="zh-Hans"]{font-family:'Noto Sans SC','PingFang SC','Hiragino Sans GB','Microsoft YaHei',sans-serif; letter-spacing:.02em;}

  /* ---------- Touch targets (20 Oct 2026): larger hit areas for small links and
     controls, without changing how they look (WCAG 2.2 target size). ---------- */
  .lang-switch a, .serve-dot, .footer-nav a, .footer-cols a, .footer-contact a, a.map-open, a[href^="tel:"]{position:relative;}
  .lang-switch a::after{content:""; position:absolute; inset:-10px 0;}
  .serve-dot::after{content:""; position:absolute; inset:-14px -4px;}
  .footer-nav a::after, .footer-cols a::after, .footer-contact a::after, a.map-open::after, a[href^="tel:"]::after{content:""; position:absolute; inset:-4px 0;}
