:root { --green:#163e32; --ink:#222c27; --muted:#657067; --line:#dbe1dc; --lime:#e0ee91; --paper:#fff; --soft:#f2f5f2; --serif:'Libre Caslon Display',Georgia,serif; --sans:'DM Sans',Arial,sans-serif; }
* { box-sizing:border-box; letter-spacing:0; }
html { scroll-behavior:smooth; scroll-padding-top:100px; }
body { margin:0; background:var(--paper); color:var(--ink); font:16px/1.6 var(--sans); }
button,a { -webkit-tap-highlight-color:transparent; touch-action:manipulation; }
button { font:inherit; cursor:pointer; } a { color:inherit; text-decoration:none; }
img { display:block; width:100%; object-fit:cover; }
svg { width:20px; height:20px; flex-shrink:0; stroke-width:1.6; } button svg { pointer-events:none; }
a:focus-visible,button:focus-visible,summary:focus-visible { outline:3px solid #96732a; outline-offset:5px; }
.wrap { width:min(1240px,calc(100% - 112px)); margin-inline:auto; }
.header { height:100px; padding:0 48px; display:flex; align-items:center; gap:40px; background:#fff; position:relative; z-index:20; }
.brand { display:flex; align-items:center; gap:12px; flex-shrink:0; }
.brand-mark { font:28px var(--serif); width:48px; height:48px; border:1px solid var(--green); border-radius:50%; display:grid; place-items:center; color:var(--green); }
.brand strong { display:block; font:30px/1 var(--serif); color:var(--green); }
.brand small { display:block; font-size:10px; line-height:1.3; margin-top:7px; font-weight:600; }
.nav { display:flex; gap:30px; margin-left:auto; font-size:14px; }
.nav a { padding:12px 0; position:relative; }
.nav a:after { content:''; position:absolute; left:0; right:100%; bottom:7px; background:var(--green); height:1px; transition:right .2s; }
.nav a:hover:after { right:0; }
.button { display:inline-flex; justify-content:center; align-items:center; gap:11px; min-height:50px; padding:13px 22px; background:var(--green); color:white; font-size:14px; font-weight:600; border:0; border-radius:3px; transition:background .2s,transform .2s; }
.button:hover { background:#275442; transform:translateY(-1px); }
.button-lime { background:var(--lime); color:var(--green); } .button-lime:hover { background:#edf6b5; }
.icon-button { width:44px; height:44px; display:grid; place-items:center; border:1px solid var(--line); border-radius:3px; background:white; color:var(--green); }
.menu-button { display:none; }
.hero { height:620px; max-height:calc(100svh - 180px); min-height:490px; position:relative; background:#292820; color:white; overflow:hidden; }
.hero-image { height:100%; position:absolute; inset:0; object-position:center 49%; }
.hero-shade { position:absolute; inset:0; background:rgba(9,22,16,.28); }
.hero-content { position:relative; z-index:1; padding-top:70px; padding-bottom:65px; height:100%; display:flex; align-items:flex-start; justify-content:center; flex-direction:column; }
.eyebrow { font-size:12px; line-height:1.5; font-weight:600; color:var(--green); margin:0 0 24px; }
.eyebrow.light { color:var(--lime); }
.eyebrow span { width:25px; height:1px; display:inline-block; background:currentColor; vertical-align:middle; margin-right:10px; }
h1,h2,h3,h4,p { margin-top:0; }
h1 { font:84px/.98 var(--serif); margin-bottom:20px; text-shadow:0 2px 20px #0007; }
h1 em { font-style:normal; }
h2 { font:58px/1.05 var(--serif); margin-bottom:0; }
h3 { font-size:18px; line-height:1.4; font-weight:500; }
h4 { font:26px/1.15 var(--serif); margin:0 0 10px; }
.hero-description { font-size:18px; line-height:1.6; margin-bottom:28px; text-shadow:0 1px 8px #000; }
.hero-actions { display:flex; align-items:center; gap:28px; }
.hero-link { display:flex; align-items:center; gap:15px; font-size:14px; border-bottom:1px solid #ffffff70; padding:10px 0; }
.hero-caption { position:absolute; right:35px; bottom:22px; z-index:2; font-size:12px; display:flex; align-items:center; gap:8px; text-shadow:0 1px 8px #000; background:#14221c8c; padding:6px 10px; border-radius:3px; }
.hero-caption svg { width:14px; height:14px; }
.welcome-strip { border-bottom:1px solid var(--line); padding:24px 0; }
.strip-content { display:flex; align-items:center; justify-content:space-between; gap:28px; font-size:14px; }
.strip-content p,.strip-content a { display:flex; align-items:center; gap:9px; margin:0; }
.strip-content svg { width:17px; height:17px; color:var(--green); }
.rating-small { font-size:16px; font-weight:700; } .rating-small span { color:#ae791e; } .muted { color:var(--muted); }
.section { padding-block:100px; }
.section-heading { display:flex; justify-content:space-between; align-items:flex-end; gap:65px; margin-bottom:60px; }
.section-heading>p { max-width:395px; color:var(--muted); margin:0 0 4px; }
.section-heading .eyebrow { margin-bottom:18px; }
.dish-heading { display:flex; justify-content:space-between; align-items:baseline; gap:20px; border-bottom:1px solid var(--line); padding-bottom:19px; }
.dish-heading h3 { margin:0; } .dish-heading>span { font-size:12px; color:var(--muted); }
.dish-grid { display:grid; grid-template-columns:1fr 1fr; column-gap:60px; }
.dish { display:flex; align-items:flex-start; gap:20px; padding:28px 0; border-bottom:1px solid var(--line); }
.dish-number { font-size:12px; color:#778279; margin-top:6px; }
.dish div { flex:1; } .dish p { color:var(--muted); font-size:14px; margin:0; }
.dish>svg { width:18px; height:18px; margin-top:6px; color:#7d8e80; }
.availability { display:flex; align-items:center; gap:8px; margin:22px 0 0; color:var(--muted); font-size:12px; }
.availability svg { width:15px; height:15px; }
.gallery-section { padding:85px 0 90px; background:var(--soft); }
.compact { margin-bottom:40px; } .compact>p { font-size:14px; max-width:280px; }
.gallery { display:grid; grid-template-columns:1.55fr 1fr; grid-template-rows:230px 230px; gap:18px; }
.gallery-item { position:relative; border:0; padding:0; background:#d7ddd8; overflow:hidden; text-align:left; border-radius:3px; }
.gallery-large { grid-row:span 2; } .gallery-item img { height:100%; transition:transform .5s; }
.gallery-item:hover img { transform:scale(1.035); }
.photo-label { position:absolute; inset:auto 12px 12px; display:flex; align-items:center; justify-content:space-between; gap:15px; font-size:14px; color:var(--green); background:#fffffff2; padding:12px 16px; border-radius:2px; }
.photo-label svg { width:16px; height:16px; }
.reviews .section-heading { align-items:center; }
.review-rating { display:flex; gap:18px; align-items:center; }
.review-rating>strong { font:64px/1 var(--serif); white-space:nowrap; }
.review-rating>strong>span { font:16px var(--sans); color:var(--muted); margin-left:5px; }
.review-rating a { font-size:12px; display:flex; align-items:center; gap:6px; }
.review-rating a svg { height:14px; width:14px; }
.stars { color:#a77827; font-size:21px; line-height:1.3; margin-bottom:8px; } .stars span { color:#cad0ca; }
.review-grid { display:grid; grid-template-columns:1fr 1fr 1fr; gap:40px; }
.review { margin:0; display:flex; flex-direction:column; border-top:1px solid var(--line); padding-top:15px; }
.quote-mark { font:58px/1 var(--serif); color:#889a72; height:47px; }
.review blockquote { font:28px/1.35 var(--serif); margin:0 0 30px; min-height:115px; }
.review figcaption { display:flex; align-items:center; gap:12px; margin-top:auto; }
.avatar { width:40px; height:40px; border-radius:50%; background:#e9f0e8; display:grid; place-items:center; color:#395144; font-size:12px; }
.avatar.plum { background:#f1e9ee; color:#774e6a; } .avatar.gold { background:#f5efd9; color:#79612d; }
.review figcaption strong { display:block; font-size:14px; font-weight:500; }
.review figcaption small { display:block; color:var(--muted); font-size:12px; margin-top:2px; }
.review-foot { display:flex; justify-content:space-between; align-items:center; gap:25px; margin-top:40px; padding-top:25px; border-top:1px solid var(--line); }
.review-foot p { font-size:12px; color:var(--muted); margin:0; max-width:540px; }
.text-link { display:inline-flex; align-items:center; gap:10px; font-size:14px; font-weight:500; }
.text-link:hover { text-decoration:underline; } .text-link svg { width:17px; height:17px; }
.visit-section { background:var(--green); color:#fff; padding:80px 0; }
.visit-layout { display:grid; grid-template-columns:1fr 1fr; gap:80px; align-items:center; }
.visit-content h2 { font-size:54px; }
.visit-intro { color:#d5e0d7; margin:25px 0; }
.contact-phone { font:40px/1.25 var(--serif); display:flex; align-items:center; gap:20px; width:fit-content; padding-bottom:15px; border-bottom:1px solid #ffffff40; margin-bottom:28px; }
.contact-phone:hover { color:var(--lime); }
.contact-detail { display:flex; gap:14px; margin:18px 0; font-size:14px; }
.contact-detail>svg { margin-top:3px; color:var(--lime); width:18px; }
.contact-detail strong { font-weight:500; display:block; }
.contact-detail span { display:block; color:#c3d2c6; max-width:290px; margin-top:3px; }
.visit-content>.button { margin-top:15px; }
.map-panel { height:500px; background:#e5e9e4; display:flex; flex-direction:column; border-radius:3px; overflow:hidden; }
.map-panel iframe { width:100%; flex:1; min-height:0; border:0; }
.map-panel>a { color:var(--ink); display:flex; justify-content:space-between; align-items:center; gap:20px; padding:22px 25px; background:white; }
.map-panel strong { font-weight:500; font-size:15px; display:block; }
.map-panel small { font-size:12px; color:var(--muted); display:block; margin-top:3px; }
.footer { padding:45px 0 22px; }
.footer-top { display:flex; align-items:center; justify-content:space-between; gap:40px; padding-bottom:40px; }
.footer-top>p { font-size:14px; color:var(--muted); margin:0; }
.footer-bottom { font-size:12px; color:var(--muted); border-top:1px solid var(--line); padding-top:20px; display:flex; justify-content:space-between; gap:30px; }
.credits { max-width:760px; text-align:right; } .credits summary { cursor:pointer; }
.credits>div { text-align:left; padding:18px 0; font-size:12px; } .credits a { text-decoration:underline; } .credits p:last-child { margin-bottom:0; }
.mobile-contact { display:none; }
.skip { position:fixed; top:10px; left:10px; z-index:100; padding:12px 20px; background:white; color:var(--green); transform:translateY(-150%); } .skip:focus { transform:translateY(0); }
.lightbox { width:min(1000px,calc(100% - 40px)); padding:0; border:0; border-radius:4px; background:#fff; overflow:visible; }
.lightbox::backdrop { background:#0b1918dd; }
.lightbox>img { width:100%; height:min(70vh,700px); object-fit:contain; background:#111; }
.close-lightbox { position:absolute; top:12px; right:12px; z-index:2; background:white; }
.lightbox-caption { padding:18px 24px; display:flex; align-items:center; justify-content:space-between; gap:20px; font-size:15px; }
.lightbox-caption a { color:var(--muted); font-size:12px; text-decoration:underline; } body.modal-open { overflow:hidden; }
@media(min-width:1600px) { .hero { height:680px; } .hero-content { padding-top:65px; } }
@media(max-width:1100px) {
  .header { padding:0 30px; gap:25px; } .nav { gap:20px; } .brand small { font-size:9px; } .header-call { padding:12px 16px; }
  .wrap { width:calc(100% - 64px); } .strip-phone { display:none!important; } .section-heading { gap:40px; } .visit-layout { gap:40px; }
  .review-rating { gap:12px; } .review-rating>strong { font-size:52px; } .review-grid { gap:28px; } .dish-grid { column-gap:35px; }
}
@media(max-width:850px) {
  .header { height:84px; padding:0 24px; } .header-call { margin-left:auto; } .menu-button { display:grid; }
  .nav { display:none; position:absolute; top:84px; left:0; right:0; background:#fff; border-top:1px solid var(--line); border-bottom:1px solid var(--line); padding:20px 30px; flex-direction:column; gap:8px; margin:0; box-shadow:0 12px 20px #0001; }
  .nav.is-open { display:flex; } .nav a { font-size:16px; }
  .hero { min-height:510px; max-height:none; height:570px; } .hero-content { padding-top:40px; } .hero-caption { right:24px; bottom:16px; }
  .strip-content { font-size:12px; gap:15px; } .muted { display:none; } .section-heading>p { max-width:330px; }
  .section { padding-block:70px; } h2 { font-size:48px; } .review-rating { align-self:flex-start; flex-direction:column; align-items:flex-start; gap:10px; }
  .review-grid { gap:23px; } .review blockquote { font-size:25px; } .visit-layout { gap:35px; } .visit-content h2 { font-size:44px; }
  .contact-phone { font-size:33px; } .map-panel { height:470px; } .gallery { grid-template-rows:200px 200px; } .gallery-section { padding:70px 0; }
}
@media(max-width:600px) {
  html { scroll-padding-top:20px; } .wrap { width:calc(100% - 40px); } .header { height:80px; padding:0 20px; gap:15px; }
  .brand { gap:9px; } .brand-mark { width:39px; height:39px; font-size:24px; } .brand strong { font-size:27px; } .brand small { font-size:9px; margin-top:5px; }
  .header-call { display:none; } .menu-button { margin-left:auto; border:0; } .nav { top:80px; padding:16px 24px; }
  .hero { height:570px; min-height:480px; max-height:calc(100svh - 118px); } .hero-image { object-position:60% center; } .hero-shade { background:#09171054; }
  .hero-content { padding-top:38px; padding-bottom:55px; } .hero .eyebrow { font-size:12px; margin-bottom:24px; }
  h1 { font-size:64px; line-height:1.02; margin-bottom:20px; } .hero-description { font-size:17px; line-height:1.5; margin-bottom:25px; }
  .hero-actions { gap:12px; align-items:flex-start; flex-direction:column; } .hero-actions .button { font-size:14px; padding:13px 18px; }
  .hero-link { font-size:14px; gap:10px; padding:8px 0; } .hero-caption { font-size:12px; bottom:12px; right:15px; padding:5px 8px; max-width:calc(100% - 30px); }
  .hero-caption svg { height:12px; width:12px; } .welcome-strip { padding:20px 0; } .strip-content { flex-direction:column; align-items:flex-start; gap:9px; }
  .strip-content p,.strip-content a { font-size:12px; } .rating-small { font-size:14px; } .section { padding-block:60px; }
  .section-heading { flex-direction:column; align-items:flex-start; gap:25px; margin-bottom:35px; } .section-heading>p { max-width:none; font-size:16px; }
  .section-heading .eyebrow { margin-bottom:16px; } h2 { font-size:47px; } .dish-heading { display:block; padding-bottom:17px; }
  .dish-heading h3 { font-size:16px; margin-bottom:6px; } .dish-heading span { font-size:12px; } .dish-grid { grid-template-columns:1fr; }
  .dish { padding:23px 0; gap:17px; } h4 { font-size:26px; } .dish p { font-size:14px; }
  .availability { align-items:flex-start; line-height:1.6; font-size:12px; } .availability svg { margin-top:3px; }
  .gallery-section { padding:60px 0; } .compact>p { max-width:none; font-size:14px; }
  .gallery { grid-template-columns:1fr 1fr; grid-template-rows:300px 200px; gap:12px; } .gallery-large { grid-column:span 2; grid-row:span 1; }
  .gallery-item:not(.gallery-large) .photo-label { inset:auto 8px 8px; padding:8px; font-size:12px; gap:4px; }
  .gallery-item:not(.gallery-large) .photo-label svg { width:12px; height:12px; } .photo-label { padding:11px 12px; }
  .reviews .section-heading { align-items:flex-start; } .review-rating { flex-direction:row; align-items:center; gap:16px; } .review-rating>strong { font-size:56px; }
  .review-grid { grid-template-columns:1fr; gap:32px; } .review { padding-top:10px; } .review blockquote { font-size:28px; min-height:0; margin-bottom:23px; max-width:350px; }
  .review-foot { flex-direction:column; align-items:flex-start; gap:15px; margin-top:32px; padding-top:20px; }
  .visit-section { padding:60px 0; } .visit-layout { grid-template-columns:1fr; gap:40px; } .visit-content h2 { font-size:47px; }
  .visit-intro { font-size:16px; } .contact-phone { font-size:40px; } .map-panel { height:370px; } .map-panel>a { padding:18px 20px; }
  .footer { padding:35px 0 95px; } .footer-top { flex-wrap:wrap; gap:28px; padding-bottom:30px; } .footer-top .brand { width:100%; }
  .footer-top>p { font-size:14px; } .footer-bottom { gap:25px; flex-direction:column; } .credits { text-align:left; }
  .mobile-contact { display:flex; position:fixed; bottom:0; left:0; right:0; background:white; border-top:1px solid var(--line); z-index:30; box-shadow:0 -3px 15px #00000008; padding-bottom:env(safe-area-inset-bottom); }
  .mobile-contact a { flex:1; min-height:59px; display:flex; align-items:center; justify-content:center; gap:10px; font-size:14px; font-weight:500; }
  .mobile-contact a:first-child { background:var(--green); color:#fff; } .mobile-contact svg { width:17px; height:17px; }
  .lightbox { width:calc(100% - 24px); } .lightbox>img { height:auto; max-height:70vh; } .lightbox-caption { padding:15px; align-items:flex-start; flex-direction:column; gap:6px; }
}
@media(max-width:360px) { h1 { font-size:55px; } .hero .eyebrow { font-size:12px; } .hero-description { font-size:16px; } h2,.visit-content h2 { font-size:42px; } .contact-phone { font-size:35px; } .gallery { grid-template-rows:260px 180px; } }
@media(prefers-reduced-motion:reduce) { html { scroll-behavior:auto; } *,*:before,*:after { transition:none!important; } }
