/* GRAPES 葡 · WINE & GRILL — v3 亮色版
   白色主调 + 深色导航/地图 + 金色点缀 */

@font-face{
  font-family:'Noto Serif TC';
  font-style:normal;
  font-weight:400 600;
  font-display:swap;
  src:url('assets/fonts/notoseriftc-tc.woff2') format('woff2');
}

@font-face{
  font-family:"Cormorant Garamond";
  src:url("assets/fonts/cormorant.woff2") format("woff2");
  font-weight:300 700;font-style:normal;font-display:swap;
}

/* 手寫體（霞鶩文楷 TC · 67 字形子集 18KB）—— 只用於「人味」位置，不進正文 */
@font-face{
  font-family:'Grapes Hand';
  src:url("assets/fonts/lxgw-hand.woff2") format("woff2");
  font-weight:400;font-style:normal;font-display:swap;
}

:root{
  --ink:#FAF8F3;        /* 页面底色：暖白 */
  --ink-2:#EFE9DC;      /* 次级区块（加深，与 --ink 1.14:1） */
  --ink-3:#E6DECD;      /* 卡片/占位 */
  --paper:#1B1712;      /* 正文：近黑 */
  --on-dark:#F7F4EC;    /* 深色面上的文字：白 */
  --muted:#655E4F;      /* 6.06:1 on --ink / 4.80:1 on --ink-3（AA） */
  --brass:#7A5A24;      /* 金（5.97:1 on --ink / 4.73:1 on --ink-3，AA） */
  --brass-lite:#E2CBA0; /* 浅金（用于深色面） */
  --line:rgba(169,131,63,.30);
  --line-soft:rgba(27,23,18,.16);
  --serif:"Noto Serif TC","Songti TC","Source Han Serif TC",serif;
  --display:"Cormorant Garamond","Songti TC",serif;
  --sans:"PingFang TC","Hiragino Sans CNS","Microsoft JhengHei","Heiti TC",system-ui,sans-serif;
  --pad:clamp(1.25rem,5vw,4.5rem);
  --max:1320px;
  --ease:cubic-bezier(.22,.61,.36,1);
}

*{box-sizing:border-box}
html{-webkit-text-size-adjust:100%;scroll-behavior:smooth;font-size:17px}
body{
  margin:0;background:var(--ink);color:var(--paper);
  font-family:var(--sans);font-size:17px;line-height:1.82;
  -webkit-font-smoothing:antialiased;overflow-x:hidden;
  min-height:100svh;
}
img{max-width:100%;display:block}
a{color:inherit;text-decoration:none}
::selection{background:var(--brass);color:#1B1408}
.wrap{width:min(100% - var(--pad)*2,var(--max));margin-inline:auto}

h1,h2,h3{font-family:var(--serif);font-weight:400;line-height:1.30;letter-spacing:.01em;margin:0}
p{margin:0 0 1.05rem;color:#4A4237}

.label{
  font-family:var(--sans);font-size:.84rem;letter-spacing:.24em;text-transform:uppercase;
  color:var(--brass);margin:0 0 1.6rem;
}

/* ============ NAV（桌機完整導覽 / 手機漢堡） ============ */
.nav{
  position:fixed;inset:0 0 auto 0;z-index:60;
  background:rgba(8,7,6,.90);
  transition:background .4s var(--ease),border-color .4s var(--ease),backdrop-filter .4s;
  border-bottom:1px solid transparent;
}
/* 首屏：nav 下方漸隱融入照片，避免硬邊 */
.nav::after{
  content:"";position:absolute;left:0;right:0;top:100%;height:64px;pointer-events:none;
  background:linear-gradient(180deg,rgba(8,7,6,.55),rgba(8,7,6,0));
  opacity:1;transition:opacity .4s var(--ease);
}
.nav.solid::after{opacity:0}
.nav.solid{
  background:rgba(10,9,8,.94);
  backdrop-filter:blur(18px) saturate(140%);
  border-bottom-color:rgba(169,131,63,.24);
}
.nav-in{
  width:min(100% - var(--pad)*2,1320px);margin-inline:auto;
  min-height:88px;display:flex;align-items:center;gap:clamp(1rem,3vw,2.6rem);
  transition:min-height .4s var(--ease);
}
.nav.solid .nav-in{min-height:68px}
.nav-brand{display:flex;align-items:center;gap:.7rem;text-decoration:none;flex:0 0 auto}
.nav-logo{width:44px;height:44px;display:block;border-radius:5px;transition:width .4s var(--ease),height .4s var(--ease)}
.nav.solid .nav-logo{width:38px;height:38px}
.nav-word{display:flex;flex-direction:column;line-height:1.1}
.nav-word b{
  font-family:var(--display);font-size:1.18rem;font-weight:600;letter-spacing:.16em;color:#F7F4EC;
}
.nav-word i{
  font-style:normal;font-size:.76rem;letter-spacing:.26em;text-transform:uppercase;
  color:rgba(226,203,160,.78);margin-top:.25rem;
}
.nav-links{display:flex;align-items:center;gap:clamp(1rem,2.2vw,2rem);margin-left:auto}
.nav-links a{
  position:relative;font-size:.86rem;letter-spacing:.16em;color:rgba(247,244,236,.82);
  text-decoration:none;padding:.55rem 0;transition:color .3s var(--ease);
}
.nav-links a::after{
  content:"";position:absolute;left:0;right:0;bottom:.1rem;height:1px;
  background:var(--brass-lite);transform:scaleX(0);transform-origin:left;transition:transform .35s var(--ease);
}
.nav-links a:hover,.nav-links a[aria-current="true"]{color:#FFFFFF}
.nav-links a:hover::after,.nav-links a[aria-current="true"]::after{transform:scaleX(1)}
.nav-actions{display:flex;align-items:center;gap:1.1rem;flex:0 0 auto}
.nav-tel{font-size:.84rem;letter-spacing:.1em;color:rgba(247,244,236,.72);text-decoration:none;white-space:nowrap}
.nav-tel span{color:rgba(226,203,160,.7);letter-spacing:.18em;font-size:.8rem;margin-right:.35rem}
.nav-tel:hover{color:#FFFFFF}
.nav-book{
  font-size:.84rem;letter-spacing:.18em;text-decoration:none;color:#1B1408;background:var(--brass-lite);
  padding:.62rem 1.35rem;white-space:nowrap;transition:background .3s var(--ease),color .3s;
}
.nav-book:hover{background:#F0DFC0}
.nav-burger{display:none;background:none;border:0;padding:.7rem;cursor:pointer;margin-left:auto}
.nav-burger i{display:block;width:26px;height:1px;background:#FFFFFF;margin:7px 0;transition:.3s var(--ease)}
.nav.open .nav-burger i:nth-child(1){transform:translateY(4px) rotate(45deg)}
.nav.open .nav-burger i:nth-child(2){transform:translateY(-4px) rotate(-45deg)}

@media(max-width:1000px){
  .nav-in{min-height:64px}
  .nav.solid .nav-in{min-height:60px}
  .nav-links,.nav-actions{display:none}
  .nav-burger{display:block}
  .nav-logo{width:38px;height:38px}
  .nav.solid .nav-logo{width:34px;height:34px}
  .nav-word b{font-size:1rem;letter-spacing:.14em}
  .nav-word i{font-size:.7rem;letter-spacing:.2em}
}

/* 下拉選單 */
.nav-drawer{
  position:fixed;inset:0;z-index:80;
  background:rgba(0,0,0,.97);
  display:flex;align-items:flex-start;justify-content:center;
  padding:7rem var(--pad) 4rem;
  opacity:0;visibility:hidden;transform:translateY(-14px);
  transition:opacity .35s var(--ease),transform .35s var(--ease),visibility .35s;
}
.nav-drawer.open{opacity:1;visibility:visible;transform:none}
.drawer-inner{display:flex;flex-direction:column;align-items:center;gap:1.7rem;width:100%;max-width:360px}
.drawer-inner a{color:#F7F4EC;font-size:1.35rem;letter-spacing:.2em;text-decoration:none;padding:.2rem 0}
.drawer-inner a:hover{color:var(--brass-lite)}
.drawer-inner .drawer-book{color:var(--brass-lite);border:1px solid rgba(226,203,160,.4);padding:.7rem 1.6rem;margin-top:.6rem;letter-spacing:.18em}

/* 首屏 logo 居中 */
.stage{
  min-height:100svh;
  display:grid;place-items:center;
  background:var(--ink);
  padding:5.5rem var(--pad) 2rem;
}
/* ============ HERO（上：深色地圖 1/3 · 下：白色文字） ============ */
.hero{
  position:relative;display:flex;flex-direction:column;min-height:100svh;
  padding:105px 0 0;background:var(--ink);overflow:hidden;
}
.hero-title .l{display:block;overflow:hidden}
.hero-title .l > span{display:block;transform:translateY(110%);animation:lineUp 1.15s var(--ease) forwards}
.hero-title .l:nth-child(2) > span{animation-delay:.14s}
@keyframes lineUp{to{transform:translateY(0)}}
.btn{
  display:inline-block;padding:1rem 2rem;font-size:.88rem;letter-spacing:.16em;
  border:1px solid transparent;border-radius:1px;transition:.35s var(--ease);white-space:nowrap
}
.btn-solid{background:var(--brass);color:#FBF7EE;font-weight:600}
.btn-solid:hover{background:var(--brass-lite);color:#1B1408;transform:translateY(-2px)}
.btn-outline{border-color:rgba(27,23,18,.30);color:var(--paper)}
.btn-outline:hover{border-color:var(--brass);color:var(--brass)}
/* ============ MARQUEE ============ */
.marquee{border-block:1px solid var(--line-soft);overflow:hidden;background:var(--ink-2)}
.marquee-track{
  display:flex;align-items:center;white-space:nowrap;padding:.95rem 0;
  font-family:var(--display);font-size:.86rem;letter-spacing:.34em;color:#5A5145;
  animation:slide 34s linear infinite;width:max-content
}
.marquee-track>*{margin-right:1.6rem}
.marquee-track b{color:var(--brass);font-weight:400}
.marquee:hover .marquee-track{animation-play-state:paused}
@keyframes slide{to{transform:translateX(-50%)}}

/* ============ SECTION 通用 ============ */
section{padding:clamp(5rem,11vw,10rem) 0}
.sec-head{margin-bottom:clamp(2.5rem,6vw,4.5rem);max-width:44ch}
.sec-head h2{font-size:clamp(2rem,4.6vw,3.6rem);margin-bottom:1rem}
.sec-lede{color:#6B6355;font-size:.97rem;max-width:40ch}

/* ============ CONCEPT ============ */
.concept{background:var(--ink)}
.concept-head{margin-bottom:clamp(2.5rem,6vw,4rem)}
.concept-head .quote{
  font-size:clamp(2rem,4.6vw,3.6rem);line-height:1.16;letter-spacing:.02em;
  padding-left:clamp(0rem,4vw,3rem);border-left:1px solid var(--line)
}
.concept-body{
  display:grid;grid-template-columns:1fr 1fr;gap:clamp(1.5rem,5vw,4rem);
  max-width:1000px;margin-left:auto;margin-bottom:clamp(3rem,7vw,5rem)
}
.concept-col p{font-size:1.02rem;color:#4A4237;line-height:2}
.concept-strip{display:grid;grid-template-columns:1.2fr 1fr 1fr;gap:1rem;margin:0}
.concept-strip img{width:100%;height:clamp(220px,30vw,380px);object-fit:cover;filter:saturate(1)}
.concept-strip img:nth-child(2){margin-top:clamp(1rem,4vw,3rem)}
.concept-strip img:nth-child(3){margin-top:clamp(.5rem,2vw,1.5rem)}

/* ============ MENU ============ */
.menu{background:var(--ink-2)}
.menu-grid{
  display:grid;grid-template-columns:repeat(3,1fr);
  gap:clamp(1.5rem,3vw,2.6rem) clamp(1.2rem,2.5vw,2.2rem)
}
.dish{display:flex;flex-direction:column}
.dish-img{overflow:hidden;aspect-ratio:4/5;margin-bottom:1.3rem;background:var(--ink-3)}
.dish-img img{width:100%;height:100%;object-fit:cover;transition:transform 1.2s var(--ease),filter .6s}
.dish:hover .dish-img img{transform:scale(1.05);filter:brightness(1.02)}
.dish-txt{position:relative}
.dish-txt .no{
  font-family:var(--display);font-size:.82rem;letter-spacing:.3em;color:var(--brass);
  display:block;margin-bottom:.5rem
}
.dish-txt h3{font-size:1.45rem;margin-bottom:.45rem;letter-spacing:.04em}
.dish-txt p{font-size:.92rem;color:#5A5145;margin-bottom:.7rem;line-height:1.9}
.dish-txt .meta{font-size:.8rem;letter-spacing:.24em;color:var(--muted);text-transform:uppercase}

/* ============ WINE ============ */
.wine{
  background:
    radial-gradient(70% 90% at 12% 40%,rgba(169,131,63,.09),transparent 65%),
    var(--ink)
}
.wine-grid{display:grid;grid-template-columns:.85fr 1.15fr;gap:clamp(2rem,6vw,5rem);align-items:center}
.wine-num{display:flex;flex-direction:column;align-items:flex-start;border-right:1px solid var(--line-soft);padding-right:clamp(1rem,3vw,3rem)}
.wine-num .big{
  font-family:var(--display);font-size:clamp(7rem,20vw,16rem);line-height:.82;
  color:transparent;-webkit-text-stroke:1px var(--brass);letter-spacing:-.02em
}
.wine-num .cap{font-size:.8rem;letter-spacing:.34em;color:var(--muted);margin-top:1.2rem;text-transform:uppercase}
.wine-copy h2{font-size:clamp(2rem,4.6vw,3.6rem);margin-bottom:1.2rem}
.steps{list-style:none;padding:0;margin:2rem 0;counter-reset:s}
.steps li{position:relative;padding-left:3.4rem;margin-bottom:1.5rem}
.steps li::before{
  counter-increment:s;content:"0" counter(s);position:absolute;left:0;top:.15rem;
  font-family:var(--display);font-size:.95rem;color:var(--brass);letter-spacing:.1em
}
.steps b{display:block;font-weight:600;letter-spacing:.06em}
.steps span{font-size:.88rem;color:var(--muted)}
.fine{font-size:.84rem;color:var(--muted);line-height:1.9;max-width:46ch;margin-bottom:2rem}

/* ============ LUNCH ============ */
.lunch{
  display:grid;grid-template-columns:1fr 1fr;align-items:stretch;
  padding:0;background:var(--ink-3)
}
.lunch-media{position:relative;min-height:clamp(320px,60vh,720px);overflow:hidden}
.lunch-media img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;filter:saturate(1.04)}
.lunch-copy{padding:clamp(3rem,7vw,6.5rem) clamp(1.5rem,6vw,6rem);display:flex;flex-direction:column;justify-content:center}
.lunch-copy h2{font-size:clamp(2rem,4.6vw,3.6rem);margin-bottom:1rem}
.lunch-copy .big{font-family:var(--display);font-size:clamp(1.5rem,3vw,2.4rem);color:var(--brass);letter-spacing:.04em;margin-bottom:1.2rem}

/* ============ GALLERY ============ */
.grid{
  display:grid;grid-template-columns:repeat(4,1fr);
  grid-auto-rows:minmax(120px,auto);gap:.8rem
}
.g-item{padding:0;border:0;background:var(--ink-3);cursor:zoom-in;overflow:hidden;position:relative}
.g-item img{width:100%;height:100%;object-fit:cover;aspect-ratio:1;transition:transform 1.1s var(--ease),opacity .4s}
.g-item::after{content:"";position:absolute;inset:0;background:rgba(10,9,8,.0);transition:background .4s}
.g-item:hover::after{background:rgba(10,9,8,.14)}
.g-item:hover img{transform:scale(1.06)}
.g-item.tall{grid-row:span 2}
.g-item.tall img{aspect-ratio:1/2}
.g-item.wide{grid-column:span 2}
.g-item.wide img{aspect-ratio:2/1}

/* ============ VISIT ============ */
.visit{background:var(--ink-2);border-top:1px solid var(--line-soft)}
.visit-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(2rem,5vw,4.5rem);align-items:start}
.visit-info dl{display:grid;grid-template-columns:5rem 1fr;gap:1.2rem 1rem;margin:0 0 2.4rem}
.visit-info dt{font-size:.82rem;letter-spacing:.22em;color:var(--brass);padding-top:.35rem}
.visit-info dd{margin:0;font-size:.97rem;color:#4A4237;line-height:1.9}
.visit-info dd a{color:var(--brass)}
.visit-cta{display:flex;gap:.8rem;flex-wrap:wrap}
.map{aspect-ratio:1/1;overflow:hidden;border:1px solid var(--line-soft)}
.map iframe{width:100%;height:100%;border:0}

/* ============ FOOTER ============ */
.foot{padding:clamp(3rem,6vw,4.5rem) 0 2rem;background:var(--ink);border-top:1px solid var(--line-soft)}
/* ============ 中間留白（主體待填）v19 ============ */

/* ============ MAP：必到之地 v19 ============ */
.map-section{
  background:var(--ink);
  min-height:clamp(480px,80svh,820px);
  display:flex;align-items:center;justify-content:center;
  padding:clamp(2.4rem,6vw,4rem) var(--pad);
}
.map-embed{
  width:min(480px,100%);aspect-ratio:16/10;
  border:1px solid var(--line-soft);overflow:hidden;background:#EDE9E0;
}
.map-embed iframe{width:100%;height:100%;border:0;display:block;filter:grayscale(.12) contrast(1.02)}

@media(max-width:860px){
  .map-section{min-height:clamp(360px,62svh,520px)}
  .map-embed{width:min(420px,100%)}
}

/* ============ FOOTER 封頁（深色·居中）v18 ============ */
.footer{
  background:#0A0908;color:#F7F4EC;
  border-top:1px solid rgba(169,131,63,.30);
  padding:clamp(3.4rem,6vw,5rem) 0 clamp(1.6rem,3vw,2.2rem);
}
.footer-in{width:min(100% - var(--pad)*2,1320px);margin-inline:auto}
.footer-main{
  display:grid;grid-template-columns:1.6fr .8fr 1.1fr 1fr .9fr;
  gap:clamp(1.8rem,3.6vw,3.6rem);
  padding-bottom:clamp(2.2rem,4.5vw,3.2rem);
  text-align:left;align-items:start;
}
.footer-brand{display:flex;flex-direction:column;align-items:flex-start;gap:.55rem}
.footer-logo{width:52px;height:52px;border-radius:5px;display:block}
.footer-name{
  font-family:var(--display);font-size:clamp(1.4rem,2.4vw,1.75rem);
  letter-spacing:.16em;line-height:1;margin:.5rem 0 0;color:#F7F4EC
}
.footer-name span{font-family:var(--serif);letter-spacing:.08em;margin-left:.3em}
.footer-tag{
  font-size:.76rem;letter-spacing:.32em;color:var(--brass-lite);
  margin:.35rem 0 0;text-transform:uppercase
}
.footer-social{list-style:none;display:flex;gap:.6rem;padding:0;margin:1.2rem 0 0}
.footer-social a{
  width:40px;height:40px;display:grid;place-items:center;border-radius:50%;
  border:1px solid rgba(226,203,160,.30);color:rgba(247,244,236,.78);
  transition:color .3s var(--ease),background .3s var(--ease),border-color .3s,transform .3s var(--ease)
}
.footer-social a:hover,.footer-social a:focus-visible{
  color:#0A0908;background:var(--brass-lite);border-color:var(--brass-lite);transform:translateY(-2px)
}
.footer-label{
  font-size:.76rem;letter-spacing:.3em;color:var(--brass-lite);
  text-transform:uppercase;margin:0 0 1rem;opacity:.85
}
.footer-col p{font-size:.88rem;line-height:1.95;color:#C6BDAE;margin:0}
.footer-col a{color:#C6BDAE;transition:color .3s var(--ease)}
.footer-col a:hover{color:var(--brass-lite)}
.footer-col nav a,.footer-col > a{display:block;font-size:.88rem;line-height:2.1;text-decoration:none}
.footer-link{margin-top:.7rem;display:inline-block;font-size:.84rem;letter-spacing:.1em;color:var(--brass-lite)!important}
.footer-book{
  display:inline-block;margin-top:1rem;padding:.6rem 1.2rem;
  border:1px solid rgba(226,203,160,.45);color:var(--brass-lite)!important;
  font-size:.82rem;letter-spacing:.18em;text-decoration:none;
  transition:background .3s var(--ease),color .3s var(--ease)
}
.footer-book:hover{background:var(--brass-lite);color:#0A0908!important}
.footer-bottom{
  display:flex;justify-content:space-between;align-items:center;gap:1rem;flex-wrap:wrap;
  padding-top:clamp(1.3rem,2.6vw,1.8rem);border-top:1px solid rgba(247,244,236,.10);
  text-align:left
}
.footer-copy{margin:0;font-size:.8rem;letter-spacing:.14em;color:rgba(247,244,236,.62);line-height:1.9}
.footer-legal{margin:0;font-size:.8rem;letter-spacing:.12em;color:rgba(247,244,236,.55)}

@media(max-width:1000px){
  .footer-main{grid-template-columns:1fr 1fr;gap:2rem 1.8rem}
  .footer-brand{grid-column:1 / -1;flex-direction:row;flex-wrap:wrap;align-items:center;gap:.9rem}
  .footer-brand .footer-name{margin:0}
  .footer-tag{margin:0;width:100%}
  .footer-social{margin:.2rem 0 0;margin-left:auto}
}
@media(max-width:640px){
  .footer-main{grid-template-columns:1fr 1fr;gap:1.6rem 1.2rem}
  .footer-brand{flex-direction:column;align-items:center;text-align:center}
  .footer-tag{width:auto}
  .footer-social{margin-left:0}
  .footer-col{text-align:left}
  .footer-col:last-child{grid-column:1 / -1}
  .footer-bottom{flex-direction:column;justify-content:center;text-align:center;gap:.5rem}
}

/* ============ LIGHTBOX ============ */
.lightbox{position:fixed;inset:0;z-index:99;background:rgba(6,5,4,.96);display:grid;place-items:center;padding:2rem}
.lightbox[hidden]{display:none}
.lightbox img{max-width:92vw;max-height:86vh;object-fit:contain}
.lb-close{position:absolute;top:1rem;right:1rem;background:none;border:0;color:#fff;font-size:2rem;line-height:1;cursor:pointer;opacity:.85;width:44px;height:44px;display:flex;align-items:center;justify-content:center}
.lightbox img{max-width:calc(100vw - 2rem);max-height:calc(100svh - 2rem);object-fit:contain}

/* ============ 移动端底部 CTA（深色条） ============ */
.mobile-cta{display:none}
@media(max-width:860px){
  .mobile-cta{
    display:flex;position:fixed;left:0;right:0;bottom:0;z-index:70;padding-bottom:env(safe-area-inset-bottom);
    background:rgba(12,11,9,.94);backdrop-filter:blur(14px);border-top:1px solid rgba(247,244,236,.08);
    padding:.6rem .8rem calc(.6rem + env(safe-area-inset-bottom));
    gap:.6rem
  }
  .mobile-cta a{flex:1;text-align:center;padding:.8rem 0;font-size:.86rem;letter-spacing:.14em;border-radius:1px}
  .mobile-cta .m-book{background:#E2CBA0;color:#1B1408;font-weight:700}
  .mobile-cta .m-wa{border:1px solid rgba(247,244,236,.30);color:var(--on-dark)}
  body{padding-bottom:4.2rem}
}

/* ============ REVEAL ============ */
html.js .reveal{opacity:0;transform:translateY(28px);transition:opacity 1s var(--ease),transform 1s var(--ease)}
html.js .reveal.in{opacity:1;transform:none}

/* ============ RESPONSIVE ============ */
@media(max-width:1080px){
  .menu-grid{grid-template-columns:repeat(2,1fr)}
  .nav-menu{gap:1.1rem;font-size:.84rem}
}
@media(max-width:860px){
  .nav-menu,.nav-book{display:none}
  .nav-burger{display:block}
  .nav.open .nav-menu{
    display:flex;position:absolute;top:100%;left:0;right:0;flex-direction:column;
    gap:0;background:rgba(12,11,9,.98);padding:.5rem var(--pad) 1.4rem;border-bottom:1px solid rgba(247,244,236,.08)
  }
  .nav.open .nav-menu a{padding:1rem 0;border-bottom:1px solid rgba(247,244,236,.08);font-size:.97rem}

  .hero{min-height:100svh}
  .hero-map{height:30svh;min-height:200px}
  .hero-map-frame{inset:-4% 0 0;height:108%}
  .hero-map-meta{left:1.1rem;bottom:1.4rem}
  .hero-map-name{font-size:.8rem;letter-spacing:.26em}
  .hero-map-addr{font-size:.82rem}
  .hero-map-open{right:1.1rem;bottom:1.4rem;font-size:.78rem}
  .hero-title{font-size:clamp(2.3rem,10vw,3.4rem)}
  .hero-copy{padding:1.6rem 0 2.6rem}
  .hero-facts{gap:1.2rem;flex-wrap:wrap;padding-top:1.1rem}
  .hero-facts dd{font-size:.84rem}
  .scroll-cue{display:none}

  .concept-body{grid-template-columns:1fr;gap:0}
  .concept-head .quote{font-size:clamp(1.9rem,7vw,2.8rem);padding-left:1.1rem}
  .concept-strip{grid-template-columns:1fr 1fr}
  .concept-strip > figure:first-child{grid-column:1/-1}

  .menu-grid{grid-template-columns:1fr;gap:2.4rem}
  .wine-grid{grid-template-columns:1fr}
  .wine-num{border-right:0;border-bottom:1px solid var(--line-soft);padding-right:0;padding-bottom:1.6rem}
  .wine-num .big{font-size:clamp(5rem,32vw,9rem)}
  .lunch{grid-template-columns:1fr}
  .lunch-media{min-height:0;aspect-ratio:1/1}
  .grid{grid-template-columns:1fr 1fr;gap:.5rem}
  .g-item.wide{grid-column:span 2}
  .visit-grid{grid-template-columns:1fr}
  .map{aspect-ratio:4/3}
  .visit-info dl{grid-template-columns:4.2rem 1fr}
  .foot-row{flex-direction:column;align-items:flex-start;gap:1rem}
}
@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
  .hero-title .l > span{transform:none;animation:none}
  .marquee-track,.scroll-cue i{animation:none}
  html.js .reveal{opacity:1;transform:none;transition:none}
}


/* ============ 預留板塊佔位 v26 ============ */
main{padding-top:105px}
.ph-section{
  padding:clamp(2.4rem,5vw,4.2rem) 0;background:var(--ink);
  border-top:1px solid var(--line-soft);
}
.ph-section:first-child{border-top:0}
.ph-box{
  position:relative;
  width:min(100% - var(--pad)*2,var(--max));
  margin-inline:auto;
  min-height:clamp(280px,44svh,430px);
  border:1px dashed rgba(169,131,63,.72);
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  text-align:center;gap:.55rem;padding:clamp(2rem,5vw,3.4rem) 1.5rem;
  background:linear-gradient(180deg,rgba(169,131,63,.055),rgba(169,131,63,.012));
}
.ph-no{
  font-family:var(--display);font-size:.84rem;letter-spacing:.42em;
  color:var(--brass);opacity:.85
}
.ph-cn{
  font-family:var(--serif);font-size:clamp(1.7rem,3.6vw,2.7rem);
  font-weight:500;letter-spacing:.14em;color:var(--paper);margin:0
}
.ph-en{
  font-family:var(--display);font-size:.8rem;letter-spacing:.46em;
  text-transform:uppercase;color:var(--muted);margin:.1rem 0 .5rem
}
.ph-desc{font-size:.86rem;color:#7C7568;letter-spacing:.06em;margin:0}
.ph-tag{
  margin-top:.9rem;font-size:.76rem;letter-spacing:.3em;
  color:var(--brass);border:1px solid rgba(169,131,63,.4);
  padding:.42rem 1rem
}
@media(max-width:860px){
  main{padding-top:105px}
  .ph-box{min-height:clamp(240px,40svh,340px)}
  .ph-cn{letter-spacing:.1em}
}


/* ============ 預定板塊 v30 · 參考 le-rendezvous 佈局｜黑金白配色 ============ */
.reserve{
  position:relative;height:auto;background:#0A0908;color:#F4EFE6;padding:0;
  margin-top:-105px  /* 抵消 main 的 padding-top，讓舞台從視口頂開始 */
}
.rv-stage{position:relative;height:auto;overflow:visible}
.rv-figure{
  position:relative;inset:auto;margin:0;display:block;padding:0;
  height:clamp(260px,46svh,460px);overflow:hidden;
  transform:none;transform-origin:center center
}
/* 照片底边融进黑场，避免硬切 */
.rv-figure::after{
  content:"";position:absolute;left:0;right:0;bottom:0;height:clamp(48px,8svh,88px);
  background:linear-gradient(to bottom,rgba(10,9,8,0),rgba(10,9,8,.92));
  pointer-events:none
}
.rv-figure img{
  width:100%;height:100%;max-height:none;max-width:none;
  object-fit:cover;object-position:center 42%;display:block
}
.rv-veil{display:none}
.rv-content{
  position:absolute;inset:0;display:flex;align-items:center;
  opacity:0;will-change:opacity,transform
}
.rv-content .reserve-in{padding:clamp(48px,7vw,90px) 0}
.reserve-in[hidden]{display:none}
.rv-placeholder{
  width:min(100% - var(--pad)*2,1180px);margin-inline:auto;text-align:center;
  display:flex;flex-direction:column;align-items:center
}
.rv-placeholder .label{
  font-family:var(--sans);font-size:.8rem;font-weight:500;
  letter-spacing:.22em;text-transform:uppercase;color:#E2CBA0;margin:0 0 18px
}
.rv-placeholder .reserve-divider{margin:0 0 26px}
.rv-placeholder .reserve-title{margin:0 0 22px}
.rv-ph-tag{
  font-family:var(--sans);font-size:.78rem;letter-spacing:.3em;
  text-transform:uppercase;color:#E2CBA0;border:1px solid rgba(226,203,160,.5);
  padding:.5rem 1.15rem
}
.reserve-in{
  width:min(100% - var(--pad)*2,1180px);margin-inline:auto;
  display:grid;grid-template-columns:1fr 1fr;
  gap:clamp(40px,6vw,80px);align-items:center;
}
.reserve-copy .label{
  font-family:var(--sans);font-size:.8rem;font-weight:500;
  letter-spacing:.22em;text-transform:uppercase;color:#E2CBA0;
  margin:0 0 18px;opacity:1
}
.reserve-divider{width:48px;height:1px;background:#A9833F;margin:0 0 26px}
.reserve-title{
  font-family:var(--serif);font-weight:300;
  font-size:clamp(2rem,4vw,3.1rem);line-height:1.12;letter-spacing:.06em;
  color:#F4EFE6;margin:0 0 20px
}
.reserve-lede{
  font-size:.95rem;line-height:1.95;color:rgba(244,239,230,.72);
  letter-spacing:.03em;margin:0 0 32px
}
.reserve-steps{list-style:none;counter-reset:s;margin:0 0 30px;padding:0;
  display:flex;flex-direction:column;gap:1rem}
.reserve-steps li{counter-increment:s;position:relative;padding-left:2.7rem;
  display:flex;flex-direction:column;gap:.15rem}
.reserve-steps li::before{
  content:counter(s,decimal-leading-zero);position:absolute;left:0;top:.1rem;
  font-family:var(--display);font-size:.82rem;letter-spacing:.14em;color:#E2CBA0;
  border:1px solid rgba(226,203,160,.42);width:1.85rem;height:1.85rem;
  display:grid;place-items:center
}
.reserve-steps b{font-weight:500;font-size:.95rem;letter-spacing:.08em;color:#F4EFE6}
.reserve-steps span{font-size:.86rem;color:rgba(244,239,230,.55);letter-spacing:.03em}
.reserve-alt{display:flex;align-items:center;gap:.9rem;font-size:.84rem;
  letter-spacing:.16em;color:rgba(244,239,230,.5);text-transform:uppercase;
  padding-top:20px;border-top:1px solid rgba(226,203,160,.22);flex-wrap:wrap}
.reserve-alt a{font-family:var(--sans);font-size:.95rem;letter-spacing:.08em;
  color:#F4EFE6;text-transform:none;text-decoration:none;
  border-bottom:1px solid rgba(226,203,160,.45);padding-bottom:2px}
.reserve-alt a:hover{color:#E2CBA0;border-bottom-color:#E2CBA0}

/* 右側預留框（模仿 widget-area：半透明 + 金邊 + 居中） */
.reserve-panel{
  background:rgba(244,239,230,.05);
  border:1px solid rgba(226,203,160,.25);
  padding:clamp(32px,4.6vw,52px) clamp(22px,3.2vw,34px);
  min-width:0
}
.reserve-card{display:flex;flex-direction:column;gap:1.05rem}
.reserve-card[hidden]{display:none}
.rc-block{display:flex;flex-direction:column;gap:.5rem}
.rc-lbl{
  font-family:var(--sans);font-size:.82rem;font-weight:500;
  letter-spacing:.14em;text-transform:uppercase;color:#E2CBA0
}
.chips{display:flex;flex-wrap:wrap;gap:.4rem}
.chips.grid3{display:grid;grid-template-columns:repeat(3,1fr);gap:.4rem}
.chips.grid5{display:grid;grid-template-columns:repeat(5,1fr);gap:.4rem}
.chip{
  font-family:var(--sans);font-size:.84rem;letter-spacing:.05em;
  border:1px solid rgba(226,203,160,.3);background:transparent;
  color:rgba(244,239,230,.82);padding:.52rem .2rem;cursor:pointer;
  border-radius:0;text-align:center;min-width:44px;min-height:44px;
  display:inline-flex;align-items:center;justify-content:center;
  transition:background .25s var(--ease),border-color .25s var(--ease),color .25s var(--ease)
}
.chip:hover{border-color:rgba(226,203,160,.8);color:#F4EFE6}
.chip.on{background:#F4EFE6;border-color:#F4EFE6;color:#0A0908;font-weight:600}
.chip:focus-visible{outline:1px solid #E2CBA0;outline-offset:2px}
#dateChips .chip{flex:1 1 0;padding:.52rem .6rem}

.rc-row{display:grid;grid-template-columns:1fr 1fr;gap:1rem}
.rc-field{display:flex;flex-direction:column;gap:.4rem}
.rc-field > span{
  font-family:var(--sans);font-size:.82rem;letter-spacing:.14em;
  text-transform:uppercase;color:#E2CBA0
}
.rc-field > span i{font-style:normal;color:rgba(244,239,230,.45);letter-spacing:.1em}
.rc-field input,.rc-field select{
  appearance:none;font-family:var(--sans);font-size:1rem;color:#F4EFE6;
  background:transparent;border:0;border-bottom:1px solid rgba(244,239,230,.22);
  padding:.55rem 0;border-radius:0;width:100%;
  transition:border-color .3s var(--ease)
}
.rc-field select{
  background-image:linear-gradient(45deg,transparent 50%,#E2CBA0 50%),linear-gradient(135deg,#E2CBA0 50%,transparent 50%);
  background-position:calc(100% - 9px) calc(50% + 2px),calc(100% - 4px) calc(50% + 2px);
  background-size:5px 5px,5px 5px;background-repeat:no-repeat;padding-right:1.2rem
}
.rc-field select option{background:#161310;color:#F7F4EC}
.rc-field input::placeholder{color:rgba(244,239,230,.55)}
.rc-field input:focus,.rc-field select:focus{
  outline:0;border-bottom-color:#E2CBA0
}
.rc-field input[type=date]{color-scheme:dark}
.rc-err{margin:0;font-size:.82rem;color:#E8A08C;letter-spacing:.03em;min-height:1.1em}
.rc-submit{
  font-family:var(--sans);font-size:.82rem;font-weight:500;
  letter-spacing:.14em;text-transform:uppercase;
  background:#F4EFE6;color:#0A0908;border:1px solid #F4EFE6;
  padding:15px 20px;cursor:pointer;transition:.25s var(--ease);
  text-align:center;text-decoration:none;display:block
}
.rc-submit:hover{background:#A9833F;border-color:#A9833F;color:#FFF6E2}
.rc-fine{margin:0;font-size:.82rem;line-height:1.75;color:rgba(244,239,230,.62);letter-spacing:.03em}

/* 完成卡 */
.rc-done{
  display:flex;flex-direction:column;gap:.8rem
}
.rc-done[hidden]{display:none}
.rc-done-h{
  margin:0;font-family:var(--serif);font-weight:300;font-size:1.3rem;
  letter-spacing:.08em;color:#F4EFE6
}
.rc-done-ref{
  margin:0;font-family:var(--display);font-size:.82rem;
  letter-spacing:.24em;text-transform:uppercase;color:#E2CBA0
}
.rc-done-msg{
  margin:0;white-space:pre-wrap;font-family:var(--sans);font-size:.84rem;
  line-height:1.95;color:rgba(244,239,230,.86);
  background:rgba(244,239,230,.05);
  border:1px dashed rgba(226,203,160,.32);padding:1rem;letter-spacing:.03em
}
.rc-done-btns{display:flex;flex-direction:column;gap:.5rem}
.rc-copy{
  padding:.9rem 1rem;font-size:.8rem;letter-spacing:.14em;text-transform:uppercase;
  background:transparent;color:rgba(244,239,230,.8)
}
.rc-copy.ok{border-color:#E2CBA0;background:rgba(226,203,160,.16);color:#F4EFE6}
.rc-back{
  align-self:flex-start;background:none;border:0;padding:.2rem 0;cursor:pointer;
  font-family:var(--sans);font-size:.8rem;letter-spacing:.14em;
  color:rgba(244,239,230,.45);text-transform:uppercase
}
.rc-back:hover{color:#E2CBA0}

@media(max-width:860px){
  .rv-figure img{max-width:88vw;max-height:66svh}
  .rv-content .reserve-in{padding:80px 0 40px}
  .reserve-in{grid-template-columns:1fr;gap:2.4rem}
  .reserve-panel{padding:1.6rem 1.3rem}
  .chips.grid5{grid-template-columns:repeat(5,1fr)}
}
@media(max-width:420px){
  .chips.grid3{grid-template-columns:repeat(3,1fr)}
  .chip{font-size:.82rem;padding:.5rem .1rem}
}

/* ============ v33 · 板塊填滿（延續 01–05 編輯式語彙） ============ */
section[id]{scroll-margin-top:100px}

/* 首屏內容（滾動後浮出） */
.rv-line{
  font-family:var(--serif);font-size:clamp(.92rem,1.6vw,1.12rem);
  letter-spacing:.16em;color:rgba(244,239,230,.78);margin:0 0 clamp(26px,4vh,38px)
}
.rv-cta{display:flex;align-items:center;gap:clamp(18px,3vw,34px);flex-wrap:wrap;justify-content:center}
.rv-btn{
  font-family:var(--sans);font-size:.88rem;letter-spacing:.16em;
  color:#0A0908;background:#E2CBA0;border:1px solid #E2CBA0;
  padding:.95rem 2.1rem;text-decoration:none;
  transition:background .35s var(--ease),color .35s var(--ease),transform .35s var(--ease)
}
.rv-btn:hover{background:transparent;color:#F4EFE6;transform:translateY(-2px)}
.rv-link{
  font-size:.84rem;letter-spacing:.2em;color:rgba(244,239,230,.62);text-decoration:none;
  border-bottom:1px solid rgba(226,203,160,.28);padding-bottom:3px;transition:color .3s,border-color .3s
}
.rv-link span{display:inline-block;margin-left:.35em;transition:transform .35s var(--ease)}
.rv-link:hover{color:#E2CBA0;border-bottom-color:rgba(226,203,160,.7)}
.rv-link:hover span{transform:translateY(3px)}
.rv-hours{
  margin:clamp(26px,4.6vh,40px) 0 0;font-size:.82rem;letter-spacing:.24em;
  text-transform:uppercase;color:rgba(244,239,230,.42)
}

/* 02 品牌故事：收緊節奏 + 圖片說明 */
.concept{border-top:1px solid var(--line-soft)}
.concept-head .quote{border-left:0;padding-left:0;font-weight:300;letter-spacing:.03em}
.concept-head .quote::first-line{letter-spacing:.03em}
.concept-strip figcaption{
  grid-column:1/-1;margin-top:1rem;font-size:.8rem;letter-spacing:.26em;
  text-transform:uppercase;color:var(--muted);text-align:right
}

/* 03 菜譜：圖片底部編號細線 */
.dish-txt{border-top:1px solid var(--line-soft);padding-top:.95rem}
.dish-txt .no{margin-bottom:.55rem}
.menu .sec-lede{max-width:44ch}

/* 午市：金線分隔 + 價格級差 */
.lunch{border-block:1px solid var(--line-soft)}
.lunch-copy .label{margin-bottom:1.4rem}
.lunch-copy .fine{max-width:38ch}
.lunch-copy .btn{align-self:flex-start}

/* 04 酒單：數字描邊在白底偏淡，補一點重量 */
.wine{border-top:1px solid var(--line-soft)}
.wine-num .big{-webkit-text-stroke:1.2px var(--brass)}
.wine-copy p{max-width:46ch}

/* 05 位置與時間 */
.visit .sec-head h2 em{font-style:normal;color:var(--brass)}
.visit .sec-head{max-width:52ch}
.visit-info dd i{
  display:block;font-style:normal;font-size:.82rem;letter-spacing:.06em;
  color:var(--muted);margin-top:.35rem
}
.map{border-color:var(--line)}

@media(max-width:860px){
  .rv-line{letter-spacing:.1em}
  .rv-cta{flex-direction:column;gap:16px}
  .rv-btn{width:100%;max-width:320px;text-align:center}
  .rv-hours{letter-spacing:.16em;text-align:center}
  .concept-strip figcaption{text-align:left}
  .dish-txt{padding-top:.85rem}
  .lunch-copy .btn{align-self:stretch;text-align:center}
}

/* 手機上菜譜改兩欄，避免六道菜拉成一條長卷 */
@media(max-width:600px){
  .menu-grid{grid-template-columns:1fr 1fr;gap:1.4rem 1rem}
  .dish-img{aspect-ratio:4/5}
  .dish-txt h3{font-size:1.3rem}
  .dish-txt p{font-size:.86rem;line-height:1.75}
  .dish-txt .meta{font-size:.72rem;letter-spacing:.16em}
}

/* ============ v34 · 首屏重构 + 預訂區 + 地圖 facade + 可及性 ============ */
/* 1) 首屏：全幅照片带 + 黑场文案，不把标题压在照片上 */
.reserve{height:auto}
.rv-stage{position:relative;height:auto;overflow:visible}
.rv-figure{
  position:relative;left:auto;right:auto;top:auto;
  height:clamp(260px,46svh,460px);overflow:hidden;
  display:block;padding:0;transform:none;transform-origin:50% 30%;
}
.rv-figure img{
  width:100%;height:100%;max-width:none;max-height:none;
  object-fit:cover;object-position:center 42%;
}
.rv-content{
  position:relative;left:auto;right:auto;bottom:auto;top:auto;
  display:block;opacity:1;z-index:2;transform:none !important;
  padding:clamp(20px,3.2svh,36px) 0 clamp(24px,3.6svh,40px);
  background:linear-gradient(to bottom,#0A0908 0%,#0A0908 100%);
}
.rv-inner{
  width:min(100% - var(--pad)*2,760px);margin-inline:auto;text-align:center;
  display:flex;flex-direction:column;align-items:center;
}
.rv-inner .reserve-title{font-size:clamp(42px,6vw,76px);font-weight:400;margin:0 0 16px;color:#F7F4EC}
.rv-inner .rv-line{margin:0 0 20px}
.rv-inner .rv-cta{justify-content:center}
.rv-inner .rv-hours{margin-top:20px}
@media(max-width:860px){
  .rv-figure{height:clamp(200px,44svh,380px)}
  .rv-inner .reserve-title{font-size:clamp(36px,10.5vw,46px)}
  .rv-inner .rv-line{font-size:.88rem;letter-spacing:.06em}
  .rv-inner .rv-hours{font-size:.82rem;letter-spacing:.12em;line-height:1.9}
}

/* 2) 預訂區（WhatsApp 深链，恢复可用） */
.book{background:#0A0908;color:#F4EFE6;padding:clamp(56px,8vw,104px) 0}
.book-grid{display:grid;grid-template-columns:1fr 1fr;gap:clamp(32px,5vw,80px);align-items:start}
.book-title{font-size:clamp(32px,4.6vw,61px);color:#F7F4EC;margin:0 0 20px}
.book-lede{color:rgba(244,239,230,.72);font-size:.97rem;line-height:1.9;margin:0 0 28px;max-width:34ch}
.book-fine{font-size:.82rem;line-height:1.8;color:rgba(244,239,230,.62);margin:24px 0 0;max-width:38ch}
.book-panel{background:rgba(244,239,230,.05);border:1px solid rgba(226,203,160,.25);padding:clamp(28px,4.4vw,48px) clamp(20px,3vw,32px);min-width:0}
.book-panel .reserve-card{display:flex}
@media(max-width:860px){
  .book-grid{grid-template-columns:1fr;gap:28px}
  .book-panel{padding:1.6rem 1.2rem}
  .book .reserve-steps{margin-bottom:22px}
}

/* 3) 地圖 facade（點擊才載入 iframe） */
.map{position:relative;min-height:320px;aspect-ratio:auto;width:100%;align-self:start;background:#14110D;border:1px solid var(--line)}
.map-facade{
  position:absolute;inset:0;width:100%;height:100%;display:flex;flex-direction:column;
  align-items:center;justify-content:center;gap:14px;cursor:pointer;
  background:
    radial-gradient(circle at 50% 42%,rgba(226,203,160,.14),transparent 60%),
    repeating-linear-gradient(0deg,transparent,transparent 39px,rgba(226,203,160,.07) 40px),
    repeating-linear-gradient(90deg,transparent,transparent 39px,rgba(226,203,160,.07) 40px),
    #14110D;
  color:#F4EFE6;font-family:var(--sans);border:0
}
.map-pin{font-size:1.6rem;color:#E2CBA0}
.map-addr{font-family:var(--serif);font-size:1.15rem;line-height:1.6;text-align:center;letter-spacing:.04em}
.map-addr i{font-style:normal;font-size:.86rem;color:rgba(244,239,230,.62);letter-spacing:.06em}
.map-btn{font-size:.82rem;letter-spacing:.2em;text-transform:uppercase;color:#E2CBA0;border:1px solid rgba(226,203,160,.55);padding:.7rem 1.4rem}
.map-facade:hover .map-btn{background:#E2CBA0;color:#0A0908}
.map iframe{position:absolute;inset:0;width:100%;height:100%;border:0}

/* 4) 可及性：跳转链接 / 焦点可见 */
.skip{
  position:absolute;left:-9999px;top:0;z-index:200;background:#E2CBA0;color:#0A0908;
  padding:.7rem 1.1rem;font-size:.88rem;letter-spacing:.08em
}
.skip:focus{left:12px;top:12px}
a:focus-visible,button:focus-visible,[tabindex]:focus-visible{
  outline:2px solid #E2CBA0;outline-offset:3px
}
.chip:focus-visible{outline:2px solid #E2CBA0;outline-offset:2px}

/* 5) 抽屜打開時隱藏手機底欄（避免誤觸撥號） */
.nav.open ~ .mobile-cta{display:none}

/* 6) 圖片可點：菜品圖 lightbox */
.dish-img.g-item{cursor:zoom-in}

/* 7) 表单在窄屏不撑破视口 */
@media(max-width:600px){
  .chips.grid5{grid-template-columns:repeat(auto-fit,minmax(48px,1fr))}
  .chip{min-width:44px;padding:.5rem .1rem;font-size:.82rem;white-space:nowrap}
  .rc-row{grid-template-columns:1fr 1fr;gap:.7rem}
  .rc-field input{font-size:16px}
}
.book-panel,.book-grid,.reserve-card{min-width:0}

/* 8) 深色区块上的小标用浅金（--brass 在 #0A0908 上只有 3.7:1） */
.rv-inner .label,.book .label,.footer .footer-label{color:#E2CBA0}
.rv-inner .rv-hours{font-size:.84rem}
@media(max-width:860px){ .dish-txt .meta{font-size:.82rem} }

/* 9) 字号下限：把剩余 <11.5px 的文字抬到 12px */
.rc-back,.cap,.footer-tag,.footer-copy{font-size:.82rem}

/* 10) 菜價（2026-10-22 趙總：先編個樣子，交付時逐個定） */
.dish-head{display:flex;align-items:baseline;justify-content:space-between;gap:.9rem}
.dish-head h3{margin-bottom:.45rem}
.price{
  font-family:var(--display);font-size:1.1rem;font-weight:500;letter-spacing:.02em;
  color:var(--brass);white-space:nowrap;font-variant-numeric:tabular-nums;
}
.dish:hover .price{color:var(--paper)}
.lunch-price{
  font-family:var(--display);font-size:1.5rem;letter-spacing:.04em;color:var(--brass);
  margin:-.4rem 0 1.1rem;
}
.lunch-price b{font-weight:600}
@media(max-width:860px){
  .price{font-size:1rem}
  .lunch-price{font-size:1.3rem}
}

/* 11) picture 包裹後的高度傳遞（v36 WebP/響應式圖） */
.dish-img{position:relative}
.dish-img picture{position:absolute;inset:0;display:block}
.rv-figure picture{display:block;width:100%;height:100%}
.dish-img img{width:100%;height:100%;object-fit:cover}

/* 17) 404 頁 */
.page-404{display:grid;place-items:center;min-height:100svh;background:var(--ink)}
.nf{max-width:640px;padding-block:clamp(3rem,10vh,8rem)}
.nf-title{font-size:clamp(2.6rem,9vw,5.4rem);line-height:1.05;margin:.6rem 0 1.4rem}
.nf-title em{font-style:normal;color:var(--brass)}
.nf-lede{font-size:1rem;color:var(--muted);line-height:1.9;max-width:38ch;margin-bottom:2rem}
.nf-cta{display:flex;gap:.8rem;flex-wrap:wrap;margin-bottom:2.4rem}
.nf-addr{font-size:.82rem;letter-spacing:.12em;color:var(--muted)}

/* 18) 列印（餐廳可以直接印餐牌） */
@media print{
  .nav,.mobile-cta,.rv-figure,.rv-veil,.book-panel,.map,.lightbox,.skip{display:none!important}
  body{background:#fff;color:#000}
  .reserve,.book,.wine,.story,.concept{background:#fff!important;color:#000!important}
  .menu-grid{grid-template-columns:1fr 1fr!important;gap:1.2rem}
  .dish-img{display:none}
  a[href^="tel"]::after{content:" " attr(href)}
  .sec-head h2{font-size:1.6rem}
}

/* 19) 全站小字下限 12px（10.88px 的 meta 等） */
.dish-txt .meta,.reserve-alt,.reserve-alt a,.rc-fine,.visit-info dd i,.menu-promo{font-size:.82rem}
@media(max-width:860px){ .dish-txt .meta,.visit-info dd i,.menu-promo{font-size:.82rem} }

/* 20) 恢復：首屏次級鏈接 / 餐牌促銷條 / 日期回顯 / 錨點留白
   （2026-10-22 替換 footer 樣式時誤刪 12)13)16) 段，此處補回並驗證） */
.rv-cta{flex-wrap:wrap}
.rv-link-2{
  font-size:.84rem;letter-spacing:.14em;color:rgba(244,239,230,.62);
  border-bottom:1px solid rgba(244,239,230,.22);padding-bottom:2px;
}
.rv-link-2:hover{color:var(--brass-lite);border-color:var(--brass-lite)}

.menu-promo{
  display:inline-flex;flex-wrap:wrap;align-items:baseline;gap:.5rem;
  margin:.9rem 0 0;padding:.6rem 1rem;border:1px solid var(--line);
  font-family:var(--sans);letter-spacing:.1em;color:var(--muted);
}
.menu-promo b{font-family:var(--display);font-size:1.15rem;color:var(--brass);letter-spacing:.02em}
.menu-promo a{color:var(--brass);text-decoration:none;border-bottom:1px solid rgba(122,90,36,.4);padding-bottom:1px}
.menu-promo a:hover{border-color:var(--brass)}

.rc-dateout{
  margin:.5rem 0 0;font-size:.82rem;letter-spacing:.1em;color:rgba(247,244,236,.72);
  min-height:1.1em;
}

section[id],div[id="book"]{scroll-margin-top:96px}
@media(max-width:1000px){ section[id],div[id="book"]{scroll-margin-top:76px} }

/* ============================================================
   21) 手寫體（v41 保留字體、撤掉蠟筆紋理）
   目的：短句/標籤/簽名用楷書手寫，打散模板感。不進正文。
   ============================================================ */
.hand{
  font-family:'Grapes Hand',var(--serif);
  font-weight:400;letter-spacing:.03em;line-height:1.5;
  -webkit-font-smoothing:antialiased;
}
/* 毛邊濾鏡在低 DPI 或縮放時會糊 → 只給 ≥15px 的用手寫 */
.hand{font-size:clamp(15px,1.7vw,20px)}

/* 手繪下劃線（不規則線，不是 CSS border） */

/* 手繪圈：圈住價格／關鍵詞 */
.circled{position:relative;display:inline-block;white-space:nowrap}
.circled > svg{
  position:absolute;left:-.42em;top:-.32em;width:calc(100% + .84em);height:calc(100% + .64em);
  overflow:visible;pointer-events:none;color:var(--brass);
}
.circled > svg path{fill:none;stroke:currentColor;stroke-width:1.9;stroke-linecap:round;opacity:.9}

/* 首屏手寫旁註 */
.rv-hand{
  margin:1.15rem 0 0;color:rgba(244,239,230,.86);
  font-size:clamp(16px,1.9vw,21px);line-height:1.45;
}
.rv-hand b{font-weight:400;color:var(--brass-lite)}
.rv-hand-wrap{display:inline-block;transform:rotate(-1.2deg)}

/* 章節標籤：中文手寫 + 英文編號小字 */
.label .hand{font-size:1.28em;color:var(--brass);letter-spacing:.04em;margin-right:.5em;vertical-align:-.06em}
.label i{
  font-style:normal;font-family:var(--sans);font-size:max(.78em,12.5px);
  letter-spacing:.24em;text-transform:uppercase;opacity:.66;
}
.dark .label .hand,.rv-inner .label .hand,.book .label .hand,.reserve .label .hand,.footer .label .hand{color:var(--brass-lite)}
.book .label i,.reserve .label i{color:rgba(247,244,236,.66);opacity:1}

/* 午市標題：整句手寫 + 圈住「半價」 */
.lunch-copy h2.hand-title{
  font-family:'Grapes Hand',var(--serif);font-weight:400;
  font-size:clamp(2rem,4.6vw,3.6rem);line-height:1.25;letter-spacing:.02em;
}
.lunch-copy h2.hand-title .circled > svg{color:#B8863B}

/* 頁腳手寫簽名 */
.footer-hand{
  margin:.9rem 0 0;font-size:clamp(15px,1.5vw,18px);
  color:rgba(226,203,160,.88);transform:rotate(-1deg);display:inline-block;
}

/* 菜品圖：拍立得白邊 + 微斜（交替方向），hover 轉正
   白邊用 inset 陰影「蓋」上去，不佔佈局 → 圖片區比例不變 */
.dish-img{
  background:#FBF8F2;
  box-shadow:0 12px 28px rgba(28,22,12,.13),0 2px 6px rgba(28,22,12,.08);
}
.dish-img::after{
  content:"";position:absolute;inset:0;z-index:2;pointer-events:none;
  box-shadow:inset 0 0 0 9px #FBF8F2, inset 0 -26px 0 0 #FBF8F2;
}
.menu-grid .dish:nth-child(odd) .dish-img{transform:rotate(-1.15deg)}
.menu-grid .dish:nth-child(even) .dish-img{transform:rotate(1.05deg)}
.menu-grid .dish .dish-img{transition:transform .5s cubic-bezier(.22,1,.36,1),box-shadow .5s}
.menu-grid .dish:hover .dish-img{transform:rotate(0deg) translateY(-3px);box-shadow:0 20px 40px rgba(28,22,12,.18)}

@media(max-width:860px){
  .dish-img::after{box-shadow:inset 0 0 0 7px #FBF8F2, inset 0 -20px 0 0 #FBF8F2}
  .menu-grid .dish:nth-child(odd) .dish-img{transform:rotate(-.8deg)}
  .menu-grid .dish:nth-child(even) .dish-img{transform:rotate(.7deg)}
}
@media(prefers-reduced-motion:reduce){
  .menu-grid .dish .dish-img{transition:none}
}
@media print{ .hand{filter:none} .dish-img{display:none} }

/* 首屏手繪箭頭（指向 CTA） */
.rv-arrow{
  display:block;margin:-.2rem 0 .4rem 6.8rem;color:rgba(226,203,160,.62);
  transform:rotate(6deg);opacity:.9;
}
@media(max-width:860px){ .rv-arrow{margin-left:5.2rem;width:78px;height:28px} }

/* ============ v45 · 手機首屏一屏裝完 + 01–05 分章硬邊 ============ */
/* R8：章節之間補硬邊（原本只靠空白，交界 1.14:1 看不出換章） */
main section[id] ~ section[id]{border-top:1px solid var(--line-soft)}

@media(max-width:860px){
  /* R1：照片＋文案＋CTA＋營業資訊壓進一屏，不被常駐底欄切掉 */
  .rv-figure{height:clamp(190px,36svh,330px)}
  .rv-content{padding:18px 0 14px}
  .rv-inner .reserve-title{margin-bottom:10px}
  .rv-inner .rv-line{margin-bottom:10px}
  .rv-hand{margin:8px 0 0}
  .rv-arrow{margin-left:4rem;width:66px;height:24px}
  .rv-inner .rv-cta{margin-top:10px;flex-direction:row;flex-wrap:wrap;gap:8px 18px;justify-content:center}
  .rv-cta .rv-btn{flex:0 0 100%;max-width:320px;margin-inline:auto}
  .rv-cta .rv-link{display:inline-flex;align-items:center;justify-content:center;min-height:44px}
  /* R9：電話在常駐底欄已有，首屏不重複第二個 */
  .rv-cta .rv-link[href^="tel"]{display:none}
  .rv-inner .rv-hours{margin-top:10px}
}

/* 矮屏手機（如 360×780）：照片再收一檔，保證營業資訊不被底欄切 */
@media(max-width:860px) and (max-height:820px){
  .rv-figure{height:clamp(160px,30svh,300px)}
  .rv-inner .rv-line{font-size:.92rem;margin-bottom:8px}
}

/* 矮屏手機（如 375×667）：首屏只保留最关键的，手寫裝飾讓位 */
@media(max-width:860px) and (max-height:700px){
  .rv-hand,.rv-arrow{display:none}
  .rv-figure{height:clamp(150px,26svh,260px)}
  .rv-inner .rv-hours{font-size:.74rem;letter-spacing:.1em}
}

@media(max-width:860px){ .book-title,.sec-head h2,.wine-copy h2{font-size:34px} }

/* ============ v46 · 中英切換鍵 ============ */
.lang-toggle{
  flex:0 0 auto;min-width:44px;min-height:36px;padding:0 .55rem;margin-right:.2rem;
  background:transparent;border:1px solid rgba(226,203,160,.42);color:#F4EFE6;
  font-family:var(--display);font-size:.8rem;letter-spacing:.14em;line-height:1;
  cursor:pointer;border-radius:2px;transition:background .25s,color .25s,border-color .25s
}
.lang-toggle:hover,.lang-toggle:focus-visible{background:rgba(226,203,160,.16);border-color:#E2CBA0;outline:none}
.lang-toggle--drawer{
  display:none;width:100%;min-height:48px;margin:0 0 .4rem;font-size:.95rem;
  border-color:rgba(247,244,236,.24);color:rgba(247,244,236,.9);letter-spacing:.1em
}
@media(max-width:860px){
  .nav-actions .lang-toggle{min-height:44px;min-width:44px;margin-right:0}
  .nav-drawer .lang-toggle--drawer{display:block}
}

/* ============ v46 · 英文版首屏（英文比中文長，需另給一套尺度） ============ */
@media(max-width:860px){
  html[lang="en"] .rv-inner .reserve-title{font-size:clamp(29px,9.4vw,37px);letter-spacing:.01em}
  html[lang="en"] .rv-inner .rv-line{font-size:.86rem;letter-spacing:.02em}
}
@media(max-width:860px) and (min-height:821px){
  html[lang="en"] .rv-figure{height:clamp(180px,34svh,300px)}
}

/* 英文模式：手寫章節標籤與編號之間要留氣口（中文原本靠字距） */
html[lang="en"] .label .hand{margin-right:.5em}
html[lang="en"] .label i{letter-spacing:.18em}


/* ============ v48 · 位置板塊：實時地圖佔右半，左緣漸隱（趙總要求） ============ */
.visit{position:relative;overflow:hidden}
.visit .wrap{position:relative;z-index:2;pointer-events:none}
.visit .wrap a,.visit .wrap button,.visit-info,.visit .sec-head{pointer-events:auto}
.map{background:#EFE9DC;border:0}
.map iframe{
  position:absolute;inset:0;width:100%;height:100%;border:0;display:block;
  filter:saturate(1.25) brightness(1.02)
}
.map-open{
  position:absolute;z-index:3;bottom:1rem;right:max(1rem,env(safe-area-inset-right));
  font-size:.76rem;letter-spacing:.16em;text-transform:uppercase;text-decoration:none;
  color:#0A0908;background:#E2CBA0;padding:.72rem 1.05rem;
  box-shadow:0 6px 18px rgba(10,9,8,.3)
}
.map-open:hover{background:#F0DCB4}

@media (min-width:861px){
  /* v60 · 地圖鋪滿整個板塊當底，左側漸隱讓文字浮在上面 */
  .visit{min-height:clamp(660px,76svh,820px);display:flex;align-items:center}
  .visit .wrap{position:static}
  .visit .sec-head,.visit-info{position:relative;z-index:2}
  .visit-grid{grid-template-columns:minmax(0,1fr);gap:0}
  .visit-info{max-width:min(34%,30rem)}
  .map{
    position:absolute;inset:0;z-index:1;
    width:100%;height:100%;min-height:0;aspect-ratio:auto;align-self:stretch;
    -webkit-mask-image:linear-gradient(90deg,transparent 0%,transparent 39%,rgba(0,0,0,.4) 54%,#000 74%);
    mask-image:linear-gradient(90deg,transparent 0%,transparent 39%,rgba(0,0,0,.4) 54%,#000 74%)
  }
  .map-open{right:2.2rem;bottom:2.2rem}
}

@media (max-width:860px){
  .visit{min-height:0}
  .visit-grid{grid-template-columns:1fr}
  .map{
    position:relative;width:auto;margin:1.6rem calc(var(--pad) * -1) 0;
    height:clamp(300px,50svh,400px);min-height:0;aspect-ratio:auto;
    -webkit-mask-image:linear-gradient(180deg,transparent 0%,#000 18%,#000 100%);
    mask-image:linear-gradient(180deg,transparent 0%,#000 18%,#000 100%)
  }
  .map iframe{pointer-events:none}
  .map-open{right:1rem;bottom:1rem;font-size:.7rem;letter-spacing:.12em}
}

/* v48 · 靜態地圖後備（Google 被牆時顯示，本地檔案，零外鏈） */
.map-static{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block}

/* v56 · 靜態地圖作「先顯示」的底圖，Google 畫好才淡出 */
.map-poster{
  position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:60% 45%;display:block;z-index:2;
  transition:opacity .45s var(--ease)
}
.map-poster-wrap{position:absolute;inset:0;z-index:2;transition:opacity .45s var(--ease)}
.map-poster-wrap.is-hidden{opacity:0;pointer-events:none}
.map-marker{
  position:absolute;left:60%;top:45%;transform:translate(-50%,-100%);
  display:flex;flex-direction:column;align-items:center;pointer-events:none
}
.map-pin-card{
  position:relative;transform:none;
  background:#fff;color:#1c1c1c;border-radius:9px;padding:9px 13px 10px;
  box-shadow:0 6px 18px rgba(20,14,6,.22),0 1px 3px rgba(20,14,6,.16);
  font-size:.72rem;line-height:1.35;white-space:nowrap;margin-bottom:7px
}
.map-pin-card:after{
  content:"";position:absolute;left:50%;bottom:-5px;width:10px;height:10px;background:#fff;
  transform:translateX(-50%) rotate(45deg);box-shadow:2px 2px 4px rgba(20,14,6,.10)
}
.map-pin-card b{display:block;font-size:.8rem;font-weight:600;color:#a3814a;letter-spacing:.01em}
.map-pin-card span{display:block;color:#5b5b5b;font-size:.68rem;margin-top:2px}
.map-marker-dot{
  width:16px;height:16px;border-radius:50%;background:#9a6020;border:3px solid #fff;
  box-shadow:0 2px 7px rgba(20,14,6,.35);flex:none
}
@media (max-width:860px){
  .map-pin-card{font-size:.66rem;padding:8px 11px 9px}
  .map-pin-card b{font-size:.73rem}
  .map-pin-card span{font-size:.62rem}
}

/* v63 · 離線可拖動地圖（自帶瓦片，不依賴任何外部服務） */
.om{
  position:absolute;inset:0;overflow:hidden;touch-action:none;cursor:grab;
  background:#EFE9DC url("assets/map/offline-lqip.webp") center/cover no-repeat
}
.om.is-drag{cursor:grabbing}
.om-layer{position:absolute;left:0;top:0;transform-origin:0 0;will-change:transform}
.om-img{
  display:block;width:1440px;height:1440px;max-width:none;
  user-select:none;-webkit-user-drag:none;-webkit-user-select:none;
  opacity:0;transition:opacity .5s var(--ease)
}
.om-img.is-ready{opacity:1}
.om .map-marker{left:50.03%;top:50.05%;transform-origin:50% 100%}
.om-ui{position:absolute;right:1rem;top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:.4rem;z-index:3}
.om-btn{
  width:38px;height:38px;border:0;border-radius:2px;cursor:pointer;
  background:rgba(255,255,255,.94);color:#1B1408;font-size:1.05rem;line-height:1;
  box-shadow:0 4px 12px rgba(10,9,8,.22);display:flex;align-items:center;justify-content:center
}
.om-btn:hover{background:#fff}
@media (max-width:860px){
  .om-ui{right:.6rem;top:auto;bottom:3.6rem;transform:none}
  .om-btn{width:34px;height:34px;font-size:.95rem}
}
/* v63 修正 · 地圖要能接收拖動（.wrap 是 pointer-events:none） */
.visit .map{pointer-events:auto}

/* ================= v67 · 18+ 年齡閘門 + Cookie 提示 + 私隱政策 ================= */
/* ---- 18+ 閘門 ---- */
.age-gate{
  position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;
  padding:clamp(1rem,4vw,2.5rem);
  background:rgba(10,9,8,.60);
  -webkit-backdrop-filter:blur(5px) saturate(1.05);
  backdrop-filter:blur(5px) saturate(1.05);
  overflow-y:auto
}
html.age-ok .age-gate{display:none}
html.age-lock{overflow:hidden}
.ag-box{
  position:relative;width:100%;max-width:27rem;text-align:center;
  padding:clamp(1.5rem,5vw,2.4rem) clamp(1.25rem,4.5vw,2.1rem);
  background:#12100D;border:1px solid rgba(169,131,63,.42);
  box-shadow:0 30px 80px rgba(0,0,0,.5)
}
.ag-box::before,.ag-box::after{
  content:"";position:absolute;width:14px;height:14px;border:1px solid rgba(169,131,63,.7)
}
.ag-box::before{left:8px;top:8px;border-right:0;border-bottom:0}
.ag-box::after{right:8px;bottom:8px;border-left:0;border-top:0}
.ag-logo{font-family:var(--display);font-size:clamp(1.6rem,5.2vw,2.1rem);letter-spacing:.16em;color:var(--on-dark);line-height:1}
.ag-logo span{display:inline-block;margin-left:.35em;font-family:var(--serif);letter-spacing:0}
.ag-kicker{margin-top:.55rem;font-family:var(--sans);font-size:.8rem;letter-spacing:.22em;text-transform:uppercase;color:var(--brass-lite)}
.ag-ttl{margin-top:clamp(1.1rem,3.4vw,1.5rem);font-family:var(--serif);font-weight:500;font-size:clamp(1.45rem,4.2vw,1.85rem);line-height:1.45;color:var(--on-dark)}
.ag-txt{margin-top:.85rem;font-size:.9rem;line-height:1.8;color:rgba(247,244,236,.72)}
.ag-btns{margin-top:clamp(1.2rem,3.5vw,1.7rem);display:grid;grid-template-columns:1fr 1fr;gap:.6rem}
.ag-yes,.ag-no{
  min-height:48px;padding:.75rem .8rem;border-radius:0;cursor:pointer;
  font-family:var(--sans);font-size:.94rem;letter-spacing:.03em;white-space:nowrap
}
.ag-yes{border:0;background:var(--brass-lite);color:#1B1712;font-weight:600}
.ag-yes:hover{background:#EEDCBB}
.ag-no{border:1px solid rgba(247,244,236,.34);background:transparent;color:rgba(247,244,236,.86)}
.ag-no:hover{border-color:rgba(247,244,236,.6)}
.ag-note{margin-top:.9rem;font-size:.74rem;line-height:1.65;color:rgba(247,244,236,.5)}
.ag-deny{width:100%;max-width:24rem;padding:clamp(1.5rem,5vw,2.2rem);background:#12100D;border:1px solid rgba(169,131,63,.42);text-align:center;color:var(--on-dark)}
.ag-deny-ttl{font-family:var(--serif);font-size:1.2rem;line-height:1.6}
.ag-deny-txt{margin:1rem 0 1.6rem;font-size:.92rem;line-height:1.85;color:rgba(247,244,236,.72)}
.ag-deny .btn{display:inline-flex}
.age-gate.is-denied .ag-box{display:none}
.age-gate.is-denied .ag-deny{display:block}

/* ---- Cookie 提示（只講事實：無追蹤、無廣告） ---- */
.ck{
  position:fixed;left:0;right:0;bottom:0;z-index:120;
  display:flex;flex-wrap:wrap;align-items:center;gap:.9rem 1.4rem;justify-content:space-between;
  padding:1rem clamp(1.25rem,5vw,4.5rem) calc(1rem + env(safe-area-inset-bottom,0px));
  background:rgba(12,11,9,.97);border-top:1px solid rgba(169,131,63,.4);
  backdrop-filter:saturate(1.1) blur(2px)
}
.ck[hidden]{display:none}
.ck-txt{margin:0;flex:1 1 20rem;font-size:.86rem;line-height:1.75;color:rgba(247,244,236,.84)}
.ck-txt b{color:var(--brass-lite);font-weight:600;margin-right:.32em}
.ck-btns{display:flex;align-items:center;gap:1rem;flex:0 0 auto}
.ck-ok{
  min-height:44px;padding:.6rem 1.4rem;border:0;cursor:pointer;
  background:var(--brass-lite);color:#1B1712;font-family:var(--sans);font-size:.92rem;font-weight:600;letter-spacing:.04em
}
.ck-ok:hover{background:#EEDCBB}
.ck-txt .ck-more{margin-left:.3em}
.ck-more{font-size:.86rem;color:rgba(247,244,236,.72);text-decoration:underline;text-underline-offset:3px}
.ck-more:hover{color:var(--on-dark)}
@media (max-width:860px){
  .ck{padding-bottom:calc(.9rem + env(safe-area-inset-bottom,0px));gap:.7rem}
  .ck-txt{font-size:.8rem;line-height:1.7}
  .ck-btns{width:100%;justify-content:space-between}
  .ck-ok{flex:1 1 auto;justify-content:center}
}

/* ---- 私隱政策頁 ---- */
.page-legal{background:var(--ink)}
.legal{padding-block:clamp(3rem,8vw,6rem)}
.legal-h1{font-family:var(--serif);font-weight:400;font-size:clamp(1.9rem,4.6vw,3rem);line-height:1.35;color:var(--paper)}
.legal-upd{margin-top:.6rem;font-size:.82rem;letter-spacing:.06em;color:var(--muted)}
.legal-sec{margin-top:clamp(1.8rem,4vw,2.6rem)}
.legal-h2{margin-bottom:.7rem;font-family:var(--sans);font-size:1.05rem;font-weight:600;letter-spacing:.02em;color:var(--paper)}
.legal p,.legal li{font-size:.95rem;line-height:1.95;color:#2A241C}
.legal ul{margin:.5rem 0 0 1.1rem;padding:0}
.legal li{margin-bottom:.35rem}
.legal a{color:var(--brass);text-decoration:underline;text-underline-offset:3px}
.legal-en{margin-top:clamp(2.4rem,6vw,4rem);padding-top:clamp(1.6rem,4vw,2.4rem);border-top:1px solid var(--line-soft)}
.legal-en p,.legal-en li{color:#3A332A}
.legal-back{display:inline-flex;margin-top:clamp(2rem,5vw,3rem);font-size:.9rem;letter-spacing:.04em;color:var(--brass)}

@media (max-width:520px){
  .age-gate{background:rgba(10,9,8,.55);-webkit-backdrop-filter:blur(3px);backdrop-filter:blur(3px)}
  .ag-btns{grid-template-columns:1fr}
  .ag-yes,.ag-no{white-space:normal}
}
