/* ===== Base / utilities ===== */
:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:4px}
::selection{background:var(--primary);color:#fff}
.section{padding:var(--pad) 0}
.section-head{max-width:760px;margin-bottom:clamp(32px,4vw,56px)}
.section-head h2,.story-copy h2,.location-copy h2,.cta-inner h2,.contact-info h2{font-size:clamp(32px,3.2vw + 1rem,58px)}
.section-head h2 em,.story-copy h2 em,.cta-inner h2 em,.page-hero h1 em,.location-copy h2 em{font-style:italic;color:var(--primary)}
.section-lead{font-size:18px;color:var(--muted);max-width:60ch}
.section-actions{display:flex;flex-wrap:wrap;gap:12px;margin-top:clamp(32px,4vw,48px)}
.text-link{display:inline-flex;align-items:center;gap:10px;min-height:48px;font:600 13px/1 var(--sans);letter-spacing:.16em;text-transform:uppercase;text-decoration:none;color:var(--accent)}
.text-link .icon{transition:transform .3s var(--ease)}
.text-link:hover .icon{transform:translateX(5px)}
.js .reveal{opacity:0;transform:translateY(26px);transition:opacity .8s var(--ease),transform .8s var(--ease);transition-delay:var(--delay,0ms)}
.js .reveal.in{opacity:1;transform:none}

/* ===== Mobile nav overlay ===== */
.nav-overlay{position:fixed;inset:0;z-index:55;background:var(--bg);opacity:0;transition:opacity .3s var(--ease);overflow-y:auto}
.nav-overlay.is-open{opacity:1}
.nav-overlay-inner{min-height:100%;display:flex;flex-direction:column;justify-content:space-between;gap:40px;padding:calc(var(--header) + 24px) 0 calc(var(--bar) + 32px)}
.overlay-list{list-style:none;margin:0;padding:0}
.overlay-list li{border-bottom:1px solid var(--line)}
.overlay-list a{display:flex;align-items:center;min-height:64px;font:var(--dw) clamp(30px,8vw,44px)/1.1 var(--display);text-decoration:none;transition:color .3s var(--ease),padding .3s var(--ease)}
.overlay-list a:hover,.overlay-list .current-menu-item a{color:var(--primary);padding-left:8px}
.overlay-foot{display:grid;gap:14px}
.overlay-foot .btn{width:100%}
.overlay-line{display:flex;align-items:center;gap:12px;min-height:48px;text-decoration:none;color:var(--muted)}
.overlay-line .icon{color:var(--primary)}
.nav-open{overflow:hidden}

/* ===== Proof strip ===== */
.proof{border-block:1px solid var(--line);background:var(--surface)}
.proof-row{display:grid;grid-template-columns:repeat(2,minmax(0,1fr))}
.proof-item{display:flex;flex-direction:column;justify-content:center;gap:6px;min-height:104px;padding:22px 16px;text-decoration:none;border-right:1px solid var(--line);border-bottom:1px solid var(--line);transition:background-color .3s var(--ease)}
.proof-item:nth-child(2n){border-right:0}
.proof-item:last-child:nth-child(odd){grid-column:1/-1;border-right:0}
a.proof-item:hover{background:var(--surface-2)}
.proof-item strong{display:flex;align-items:center;gap:8px;font:var(--dw) clamp(24px,2vw + 1rem,34px)/1 var(--display);color:var(--text)}
.proof-item strong .icon{width:22px;height:22px;color:var(--primary)}
.proof-item span{font:500 11px/1.4 var(--sans);letter-spacing:.16em;text-transform:uppercase;color:var(--muted)}
@media (min-width:1024px){.proof-row{grid-template-columns:repeat(5,minmax(0,1fr))}.proof-item{border-bottom:0;padding:28px 26px}.proof-item:nth-child(2n){border-right:1px solid var(--line)}.proof-item:last-child{border-right:0}}

/* ===== Cards (1 / 2 / 3 columns) ===== */
.cards{display:grid;grid-template-columns:1fr;gap:20px}
@media (min-width:768px){.cards{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1024px){.cards{grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}}
.card{position:relative;background:var(--surface);border:1px solid var(--line);border-radius:var(--radius);overflow:hidden;transition:transform .3s var(--ease),border-color .3s var(--ease),box-shadow .3s var(--ease)}
.card:hover{transform:translateY(-6px);border-color:color-mix(in srgb,var(--primary) 60%,transparent);box-shadow:0 24px 60px -30px rgba(0,0,0,.8)}
.card-media{aspect-ratio:4/3;overflow:hidden}
.card-media img{width:100%;height:100%;object-fit:cover;transition:transform .6s var(--ease)}
.card:hover .card-media img{transform:scale(1.05)}
.card-body{padding:26px 24px 24px}
.dish-top{display:flex;align-items:baseline;justify-content:space-between;gap:16px}
.dish h3{font-size:24px;margin:0}
.price{font:600 15px/1 var(--sans);color:var(--primary);white-space:nowrap}
.dish p{margin:12px 0 0;color:var(--muted);font-size:15px}
.tag{display:inline-block;margin-bottom:14px;padding:6px 10px;border-radius:999px;font:600 10px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--accent);background:rgba(231,226,205,.08);border:1px solid var(--line)}

/* ===== Daily specials ===== */
.specials{margin-top:clamp(28px,4vw,48px);padding:clamp(24px,3vw,40px);border-radius:var(--radius);background:linear-gradient(135deg,color-mix(in srgb,var(--primary) 16%,var(--surface)) 0%,var(--surface) 70%);border:1px solid var(--line)}
.specials-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 24px;margin-bottom:18px}
.specials-head h3{font-size:clamp(26px,2vw + 1rem,36px);margin:0}
.specials-head p{margin:0;color:var(--muted);font-size:14px}
.specials-list{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr}
@media (min-width:768px){.specials-list{grid-template-columns:repeat(2,minmax(0,1fr));column-gap:40px}}
.specials-list li{display:grid;grid-template-columns:64px 1fr auto;align-items:baseline;gap:12px;padding:14px 0;border-bottom:1px solid var(--line);transition:color .3s var(--ease)}
.sp-day{font:600 11px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.sp-name{font:500 17px/1.3 var(--display)}
.sp-price{font-weight:600;color:var(--accent);font-size:14px}
.specials-list li.is-today{color:var(--accent)}
.specials-list li.is-today .sp-day{color:var(--primary)}
.specials-list li.is-today .sp-day::after{content:" · tonight";color:var(--primary)}

/* ===== Story (asymmetric, overlapping) ===== */
.story-grid{display:grid;gap:clamp(40px,6vw,88px);align-items:center}
@media (min-width:1024px){.story-grid{grid-template-columns:1.05fr 1fr}}
.story-media{position:relative;padding:0 0 38px}
.story-main{border-radius:var(--radius);overflow:hidden;aspect-ratio:3/2;box-shadow:0 40px 80px -40px rgba(0,0,0,.9)}
@media (min-width:1024px){.story-main{aspect-ratio:4/5;margin-right:12%}}
.story-main img{width:100%;height:100%;object-fit:cover}
.story-mark{position:absolute;right:0;bottom:0;width:clamp(120px,24%,210px);height:auto;transform:rotate(7deg);filter:drop-shadow(0 18px 30px rgba(0,0,0,.55));transition:transform .5s var(--ease)}
.story-media:hover .story-mark{transform:rotate(0) translateY(-6px)}
.story-copy p{color:#d9d2c2;font-size:17px;max-width:58ch}
.story-quote{margin:28px 0;padding:6px 0 6px 24px;border-left:2px solid var(--primary);font:italic 500 clamp(22px,1.4vw + 1rem,30px)/1.3 var(--display);color:var(--text)}

/* ===== USPs ===== */
.usps{background:var(--surface);border-block:1px solid var(--line)}
.usp-list{list-style:none;margin:0;padding:0;display:grid;gap:20px;counter-reset:usp}
@media (min-width:768px){.usp-list{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1024px){.usp-list{grid-template-columns:repeat(3,minmax(0,1fr));gap:28px}}
.usp{position:relative;padding:34px 28px 30px;border-radius:var(--radius);border:1px solid var(--line);background:var(--bg);transition:transform .3s var(--ease),border-color .3s var(--ease)}
.usp:hover{transform:translateY(-6px);border-color:var(--primary)}
.usp-num{display:block;font:var(--dw) 64px/1 var(--display);color:transparent;-webkit-text-stroke:1px var(--primary);margin-bottom:18px}
.usp h3{font-size:26px}
.usp p{color:var(--muted);margin:0}

/* ===== Press & ratings ===== */
.ratings{display:grid;grid-template-columns:1fr;gap:16px;margin-bottom:28px}
@media (min-width:768px){.ratings{grid-template-columns:repeat(2,minmax(0,1fr))}}
.rating{display:grid;grid-template-columns:auto 1fr;grid-template-areas:"score src" "score stars" "score note";column-gap:20px;align-items:center;padding:24px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);text-decoration:none;transition:border-color .3s var(--ease),transform .3s var(--ease)}
.rating:hover{border-color:var(--accent);transform:translateY(-4px)}
.rating-score{grid-area:score;font:var(--dw) 52px/1 var(--display);color:var(--accent)}
.rating-src{grid-area:src;font:600 12px/1.2 var(--sans);letter-spacing:.18em;text-transform:uppercase}
.rating-note{grid-area:note;font-size:13px;color:var(--muted)}
.stars{grid-area:stars;--pct:calc(var(--rating) / 5 * 100%);display:inline-block;font-size:18px;line-height:1.4;letter-spacing:3px;background:linear-gradient(90deg,var(--primary) var(--pct),rgba(243,239,228,.2) var(--pct));-webkit-background-clip:text;background-clip:text;color:transparent}
.stars::before{content:"★★★★★"}
.quotes{display:grid;grid-template-columns:1fr;gap:20px}
@media (min-width:768px){.quotes{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1024px){.quotes{grid-template-columns:repeat(3,minmax(0,1fr))}}
.quote{margin:0;display:flex;flex-direction:column;justify-content:space-between;gap:24px;padding:32px 28px;border-radius:var(--radius);border:1px solid var(--line);background:var(--surface);transition:transform .3s var(--ease),border-color .3s var(--ease)}
.quote:hover{transform:translateY(-6px);border-color:var(--primary)}
.quote blockquote{margin:0}
.quote p{margin:0;font:italic 500 clamp(21px,1vw + 1rem,26px)/1.35 var(--display)}
.quote figcaption a{display:flex;flex-direction:column;gap:4px;text-decoration:none;min-height:48px;justify-content:center}
.quote figcaption strong{font:600 12px/1.2 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--primary)}
.quote figcaption span{font-size:13px;color:var(--muted)}

/* ===== Masonry gallery (1 / 2 / 3 columns) ===== */
.masonry{columns:1;column-gap:18px}
@media (min-width:768px){.masonry{columns:2}}
@media (min-width:1024px){.masonry{columns:3;column-gap:22px}}
.masonry-item{position:relative;display:block;margin:0 0 18px;border-radius:var(--radius);overflow:hidden;break-inside:avoid;background:var(--surface)}
@media (min-width:1024px){.masonry-item{margin-bottom:22px}}
.masonry-item.shape-square{aspect-ratio:1/1}
.masonry-item.shape-portrait{aspect-ratio:3/4}
.masonry-item img,.masonry-item .img-fallback{width:100%;height:100%;object-fit:cover;transition:transform .7s var(--ease),filter .7s var(--ease)}
.masonry-item::after{content:"";position:absolute;inset:0;background:linear-gradient(180deg,transparent 55%,rgba(12,10,9,.55));opacity:0;transition:opacity .3s var(--ease)}
.masonry-item:hover img{transform:scale(1.06)}
.masonry-item:hover::after{opacity:1}

/* ===== FAQ accordion ===== */
.faq-grid{display:grid;gap:32px}
@media (min-width:1024px){.faq-grid{grid-template-columns:.8fr 1.2fr;gap:80px;align-items:start}.faq-grid .section-head{position:sticky;top:calc(var(--header) + 32px)}}
.accordion{border-top:1px solid var(--line)}
.acc{border-bottom:1px solid var(--line)}
.acc summary{display:flex;align-items:center;justify-content:space-between;gap:20px;min-height:72px;padding:18px 0;cursor:pointer;list-style:none;font:600 clamp(18px,.6vw + 1rem,22px)/1.35 var(--display);transition:color .3s var(--ease)}
.acc summary::-webkit-details-marker{display:none}
.acc summary:hover{color:var(--accent)}
.acc summary i{position:relative;flex:none;width:34px;height:34px;border-radius:50%;border:1px solid var(--line);transition:background-color .3s var(--ease),border-color .3s var(--ease)}
.acc summary i::before,.acc summary i::after{content:"";position:absolute;left:50%;top:50%;width:12px;height:1.5px;background:var(--text);transform:translate(-50%,-50%);transition:transform .3s var(--ease)}
.acc summary i::after{transform:translate(-50%,-50%) rotate(90deg)}
.acc[open] summary i{background:var(--primary);border-color:var(--primary)}
.acc[open] summary i::after{transform:translate(-50%,-50%) rotate(0)}
.acc-body{padding:0 0 22px;color:var(--muted);max-width:62ch}
.acc-body a{color:var(--accent)}

/* ===== Location ===== */
.location{background:var(--surface);border-top:1px solid var(--line)}
.location-grid{display:grid;gap:40px;align-items:center}
@media (min-width:1024px){.location-grid{grid-template-columns:1fr 1.15fr;gap:72px}}
.location-lead{color:var(--muted);font-size:17px}
.info-list{list-style:none;margin:24px 0 30px;padding:0;display:grid;gap:4px}
.info-list li{display:flex;align-items:flex-start;gap:14px;padding:12px 0;border-bottom:1px solid var(--line)}
.info-list .icon{margin-top:3px;color:var(--primary)}
.info-list a{text-decoration:none;min-height:24px}
.info-list a:hover{color:var(--accent)}
.hours-summary{margin:0}
.hours-list{margin:0;display:grid;gap:4px;min-width:220px}
.hours-list div{display:flex;justify-content:space-between;gap:24px}
.hours-list dt{color:var(--muted)}
.hours-list dd{margin:0}
.hours-list .is-today{color:var(--accent)}
.map{border-radius:var(--radius);overflow:hidden;aspect-ratio:4/3;border:1px solid var(--line);background:var(--surface-2)}
.map iframe{width:100%;height:100%;border:0;filter:grayscale(.35) contrast(1.05)}

/* ===== Final CTA ===== */
.cta-final{position:relative;isolation:isolate;overflow:hidden;min-height:78vh;display:flex;align-items:center}
.cta-media{position:absolute;inset:0;z-index:-2}
.cta-media img,.cta-media .img-fallback{width:100%;height:100%;object-fit:cover}
.cta-final::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(90deg,rgba(12,10,9,.92) 0%,rgba(12,10,9,.7) 50%,rgba(12,10,9,.35) 100%)}
.cta-inner{padding:var(--pad) 0}
.cta-inner h2{max-width:14ch}
.cta-inner .lead{font-size:18px;color:#e6dfcf;max-width:44ch;margin-bottom:30px}

/* ===== Inner page hero ===== */
.page-hero{position:relative;isolation:isolate;overflow:hidden;padding:calc(var(--header) + 56px) 0 clamp(40px,6vw,80px);border-bottom:1px solid var(--line);background:radial-gradient(1200px 500px at 85% -10%,color-mix(in srgb,var(--primary) 26%,transparent),transparent 60%),var(--bg)}
.page-hero.has-media{min-height:58vh;display:flex;align-items:flex-end}
.page-hero-media{position:absolute;inset:0;z-index:-2}
.page-hero-media img{width:100%;height:100%;object-fit:cover}
.page-hero.has-media::after{content:"";position:absolute;inset:0;z-index:-1;background:linear-gradient(180deg,rgba(12,10,9,.55),rgba(12,10,9,.94))}
.page-hero h1{font-size:clamp(38px,4.6vw + 1rem,72px);max-width:16ch}
.page-hero .lead{font-size:18px;color:#e6dfcf;max-width:56ch;margin:0}
.crumbs{display:flex;flex-wrap:wrap;gap:10px;margin-bottom:22px;font-size:13px;color:var(--muted)}
.crumbs a{text-decoration:none}
.crumbs a:hover{color:var(--accent)}

/* ===== Menu page ===== */
.menu-chips{position:sticky;top:var(--header);z-index:10;display:flex;gap:10px;overflow-x:auto;scrollbar-width:none;padding:14px 0;margin:-14px 0 8px;background:var(--bg)}
.menu-chips::-webkit-scrollbar{display:none}
.menu-chips a{flex:none;display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border-radius:999px;border:1px solid var(--line);font:600 12px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;text-decoration:none;transition:border-color .3s var(--ease),color .3s var(--ease),background-color .3s var(--ease)}
.menu-chips a:hover{border-color:var(--primary);color:#fff;background:var(--primary)}
.menu-section{padding-top:clamp(40px,5vw,64px)}
.menu-section-head{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 24px;padding-bottom:18px;margin-bottom:8px;border-bottom:1px solid var(--primary)}
.menu-section-head h2{font-size:clamp(30px,2.4vw + 1rem,46px);margin:0}
.menu-section-head p{margin:0;color:var(--muted);font-style:italic}
.menu-items{list-style:none;margin:0;padding:0;display:grid;grid-template-columns:1fr;column-gap:56px}
@media (min-width:1024px){.menu-items{grid-template-columns:repeat(2,minmax(0,1fr))}}
.menu-items li{padding:18px 0;border-bottom:1px solid var(--line)}
.mi-top{display:flex;align-items:baseline;gap:12px}
.mi-top h3{font-size:20px;margin:0}
.mi-dots{flex:1;border-bottom:1px dotted rgba(243,239,228,.3);transform:translateY(-4px)}
.mi-price{font-weight:600;color:var(--accent);white-space:nowrap}
.menu-items p{margin:6px 0 0;color:var(--muted);font-size:15px}
.menu-note{margin-top:32px;color:var(--muted);font-size:14px}

/* ===== Contact ===== */
.contact-grid{display:grid;gap:48px}
@media (min-width:1024px){.contact-grid{grid-template-columns:1fr 1.1fr;gap:80px}}
.contact-info p{color:var(--muted)}
.contact-form{display:grid;gap:18px;padding:clamp(24px,3vw,40px);border-radius:var(--radius);border:1px solid var(--line);background:var(--surface)}
.contact-form label{display:grid;gap:8px}
.contact-form label span{font:600 11px/1 var(--sans);letter-spacing:.18em;text-transform:uppercase;color:var(--muted)}
.contact-form em{text-transform:none;letter-spacing:0;font-style:normal;opacity:.7}
.contact-form input,.contact-form textarea{width:100%;min-height:52px;padding:14px 16px;border-radius:12px;border:1px solid var(--line);background:var(--bg);font-size:16px;transition:border-color .3s var(--ease)}
.contact-form input:focus,.contact-form textarea:focus{outline:none;border-color:var(--primary)}
.contact-form .btn{justify-self:start}
.hp{position:absolute;left:-9999px}
.form-msg{margin:0;padding:14px 16px;border-radius:12px;font-size:15px}
.form-msg.is-ok{background:rgba(64,160,96,.15);color:#bfe8cb}
.form-msg.is-err{background:color-mix(in srgb,var(--primary) 18%,transparent);color:#ffd9cf}

/* ===== Prose (privacy, terms) ===== */
.prose{max-width:760px}
.prose h2{font-size:30px;margin-top:1.4em}
.prose h3{font-size:22px;margin-top:1.2em}
.prose p,.prose li{color:#d9d2c2}
.prose a{color:var(--accent)}

/* ===== Footer ===== */
.site-footer{padding:clamp(56px,7vw,96px) 0 28px;border-top:1px solid var(--line);background:#080706}
.footer-grid{display:grid;gap:36px}
@media (min-width:768px){.footer-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media (min-width:1024px){.footer-grid{grid-template-columns:1.4fr 1fr 1fr 1fr}}
.footer-logo{height:46px}
.footer-brand p{color:var(--muted);max-width:34ch;margin:18px 0}
.footer-h{font:600 12px/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin:0 0 18px}
.site-footer p{margin:0 0 10px}
.site-footer a{text-decoration:none;transition:color .3s var(--ease)}
.site-footer a:hover{color:var(--primary)}
.footer-list{list-style:none;margin:0;padding:0;display:grid;gap:4px}
.footer-list a{display:inline-flex;align-items:center;min-height:48px}
.socials{display:flex;gap:10px}
.social{display:grid;place-items:center;width:48px;height:48px;border-radius:50%;border:1px solid var(--line);transition:border-color .3s var(--ease),background-color .3s var(--ease),transform .3s var(--ease)}
.social:hover{border-color:var(--primary);background:var(--primary);transform:translateY(-3px)}
.social .icon{width:20px;height:20px}
.footer-bottom{display:flex;flex-wrap:wrap;justify-content:space-between;gap:12px;margin-top:48px;padding-top:24px;border-top:1px solid var(--line);font-size:13px;color:var(--muted)}
.footer-bottom p{display:flex;gap:20px;margin:0}

/* ===== Mobile action bar ===== */
.action-bar{position:fixed;left:0;right:0;bottom:0;z-index:50;height:var(--bar);display:grid;grid-template-columns:repeat(3,1fr);background:var(--primary);box-shadow:0 -10px 30px -10px rgba(0,0,0,.6);padding-bottom:env(safe-area-inset-bottom)}
.action-bar a{display:flex;flex-direction:column;align-items:center;justify-content:center;gap:5px;min-height:48px;color:#fff;text-decoration:none;font:600 10px/1 var(--sans);letter-spacing:.14em;text-transform:uppercase;transition:background-color .3s var(--ease)}
.action-bar a + a{border-left:1px solid rgba(255,255,255,.22)}
.action-bar a:active,.action-bar a:hover{background:rgba(0,0,0,.14)}
.action-bar .icon{width:22px;height:22px}
@media (min-width:1024px){.action-bar{display:none}}

/* ===== Lightbox ===== */
.lightbox{padding:0;border:0;background:transparent;max-width:min(92vw,1400px);max-height:90vh}
.lightbox::backdrop{background:rgba(8,7,6,.92)}
.lightbox img{max-height:90vh;width:auto;margin:auto;border-radius:12px}
.lightbox-close{position:fixed;top:16px;right:16px;width:48px;height:48px;border-radius:50%;border:1px solid var(--line);background:var(--bg);font-size:28px;line-height:1;cursor:pointer}

/* ===== Touch targets: standalone links at least 48px tall ===== */
.info-list li{padding:0;align-items:center}
.info-list a{display:inline-flex;align-items:center;min-height:48px}
.info-list li > div{padding:12px 0}
.site-footer p a,.footer-bottom a{display:inline-flex;align-items:center;min-height:48px}
.footer-bottom p{gap:24px}

@media (prefers-reduced-motion:reduce){*,*::before,*::after{transition:none!important;animation:none!important;scroll-behavior:auto!important}}
