/* ============================================
   TERRENO — Design Tokens
   ============================================ */
:root{
  --linen: #F3ECDF;
  --linen-deep: #EAE1D0;
  --cream-card: #FBF7EE;
  --terracotta: #C1613A;
  --terracotta-deep: #A34E2D;
  --olive: #6E7248;
  --forest: #29332A;
  --peach: #F0C6A0;
  --espresso: #2B2018;
  --espresso-soft: #4A3B31;
  --paper-line: rgba(43,32,24,0.14);

  --font-display: "Fraunces", serif;
  --font-body: "Work Sans", sans-serif;
  --font-hand: "Caveat", cursive;

  --container: 1180px;
  --radius-organic: 2px 24px 2px 24px;
  --ease: cubic-bezier(.22,.61,.36,1);
}

*,*::before,*::after{ box-sizing: border-box; }
html{ scroll-behavior: smooth; }
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior: auto; }
  *{ animation-duration: 0.001ms !important; animation-iteration-count: 1 !important; transition-duration: 0.001ms !important; }
}

body{
  margin:0;
  background: var(--linen);
  color: var(--espresso);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.6;
  overflow-x: hidden;
  background-image:
    radial-gradient(circle at 20% 10%, rgba(255,255,255,0.35), transparent 45%),
    radial-gradient(circle at 80% 60%, rgba(110,114,72,0.05), transparent 40%);
}

img{ max-width:100%; display:block; }
a{ color:inherit; text-decoration:none; }
ul,ol{ list-style:none; margin:0; padding:0; }
button{ font-family:inherit; cursor:pointer; background:none; border:none; color:inherit; }
input,select,textarea{ font-family:inherit; }

.container{ max-width: var(--container); margin:0 auto; padding:0 32px; }

.italic{ font-style: italic; font-weight: 400; }

::selection{ background: var(--terracotta); color: var(--linen); }

:focus-visible{
  outline: 2px solid var(--terracotta-deep);
  outline-offset: 3px;
}

/* ============================================
   Eyebrow / Section heads / shared type
   ============================================ */
.eyebrow{
  display:inline-block;
  font-family: var(--font-body);
  font-size: 0.78rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--terracotta-deep);
  font-weight: 600;
  margin-bottom: 18px;
}
.eyebrow-light{ color: var(--peach); }

.section-title{
  font-family: var(--font-display);
  font-weight: 450;
  font-size: clamp(2.2rem, 5vw, 3.6rem);
  line-height: 1.06;
  letter-spacing: -0.01em;
  margin: 0 0 28px;
  color: var(--espresso);
}
.section-title.light{ color: var(--linen); }

.section-head{ max-width: 640px; margin-bottom: 56px; }

.ink-underline{ width:140px; height:10px; margin-top:4px; display:block; }
.ink-underline path{
  fill:none; stroke: var(--terracotta); stroke-width:3; stroke-linecap:round;
  stroke-dasharray: 220; stroke-dashoffset: 220;
  transition: stroke-dashoffset 1.1s var(--ease);
}
.philosophy-eyebrow.in-view .ink-underline path{ stroke-dashoffset: 0; }

/* ============================================
   Buttons
   ============================================ */
.btn{
  display:inline-flex; align-items:center; gap:8px;
  padding: 15px 30px;
  font-size: 0.95rem;
  font-weight: 500;
  border-radius: var(--radius-organic);
  transition: transform .45s var(--ease), background .3s ease, color .3s ease, box-shadow .3s ease;
}
.btn-primary{
  background: var(--terracotta);
  color: var(--linen);
  box-shadow: 0 10px 24px -10px rgba(163,78,45,0.55);
}
.btn-primary:hover{ background: var(--terracotta-deep); transform: translateY(-2px); }
.btn-ghost{ color: var(--linen); border-bottom: 1px solid rgba(243,236,223,0.5); border-radius:0; padding: 15px 4px; }
.btn-ghost:hover{ border-color: var(--linen); }
.btn-outline-dark{
  border: 1px solid var(--espresso);
  color: var(--espresso);
}
.btn-outline-dark:hover{ background: var(--espresso); color: var(--linen); }
.btn-block{ width:100%; justify-content:center; }

/* ============================================
   Loader
   ============================================ */
.loader{
  position:fixed; inset:0; z-index:9999;
  background: var(--linen);
  display:flex; flex-direction:column; align-items:center; justify-content:center;
  gap: 18px;
  transition: opacity .7s var(--ease), visibility .7s;
}
.loader.hidden{ opacity:0; visibility:hidden; pointer-events:none; }
.loader-mark{ width:64px; height:64px; }
.loader-svg{ width:100%; height:100%; }
.loader-path{
  fill:none; stroke: var(--terracotta); stroke-width:3;
  stroke-dasharray: 340; stroke-dashoffset: 340;
  animation: draw-leaf 1.6s var(--ease) forwards infinite;
}
@keyframes draw-leaf{
  0%{ stroke-dashoffset: 340; }
  60%{ stroke-dashoffset: 0; }
  100%{ stroke-dashoffset: -340; }
}
.loader-label{
  font-family: var(--font-display); font-style:italic; letter-spacing:0.04em;
  color: var(--espresso-soft); font-size: 1.1rem; margin:0;
}

.progress-bar{
  position:fixed; top:0; left:0; height:3px; background: var(--terracotta);
  width:0%; z-index:1001; transition: width .1s linear;
}

/* ============================================
   Navigation
   ============================================ */
.site-nav{
  position: fixed; top:0; left:0; right:0; z-index:900;
  padding: 22px 0;
  transition: background .4s ease, padding .4s ease, box-shadow .4s ease;
}
.site-nav.scrolled{
  background: rgba(243,236,223,0.92);
  backdrop-filter: blur(10px);
  padding: 14px 0;
  box-shadow: 0 6px 24px -14px rgba(43,32,24,0.25);
}
.nav-inner{
  max-width: var(--container); margin:0 auto; padding: 0 32px;
  display:flex; align-items:center; justify-content:space-between; gap: 24px;
}
.nav-mark{
  font-family: var(--font-display); font-size: 1.4rem; font-style: italic;
  color: var(--linen); letter-spacing: 0.01em;
  transition: color .4s ease;
}
.site-nav.scrolled .nav-mark{ color: var(--espresso); }
.nav-links{ display:flex; gap: 30px; }
.nav-links a{
  font-size: 0.88rem; color: var(--linen); opacity:0.9;
  position:relative; padding-bottom:2px;
  transition: color .4s ease;
}
.site-nav.scrolled .nav-links a{ color: var(--espresso-soft); }
.nav-links a::after{
  content:''; position:absolute; left:0; bottom:-3px; width:0; height:1px; background: currentColor;
  transition: width .3s var(--ease);
}
.nav-links a:hover::after{ width:100%; }
.nav-cta{
  border:1px solid var(--linen); color: var(--linen);
  padding: 9px 20px; border-radius: var(--radius-organic); font-size: 0.85rem;
  transition: all .4s ease;
}
.site-nav.scrolled .nav-cta{ border-color: var(--terracotta); color: var(--terracotta-deep); }
.nav-cta:hover{ background: var(--linen); color: var(--espresso); }
.nav-burger{ display:none; flex-direction:column; gap:5px; width:26px; }
.nav-burger span{ height:2px; background: var(--linen); border-radius:2px; transition: all .3s ease; }
.site-nav.scrolled .nav-burger span{ background: var(--espresso); }

/* ============================================
   Hero
   ============================================ */
.hero{
  position:relative; height:100svh; min-height:600px;
  display:flex; align-items:flex-end;
  overflow:hidden;
}
.hero-media{ position:absolute; inset:0; }
.hero-media img{
  width:100%; height:100%; object-fit:cover;
  transform: scale(1.08);
  animation: hero-zoom 12s var(--ease) forwards;
}
@keyframes hero-zoom{ to{ transform: scale(1); } }
.hero-scrim{
  position:absolute; inset:0;
  background: linear-gradient(180deg, rgba(20,15,10,0.25) 0%, rgba(20,15,10,0.1) 35%, rgba(20,13,9,0.75) 100%);
}
.hero-badge{
  position:absolute; top:120px; right:6%;
  width:118px; height:118px; border-radius:50%;
  background: rgba(243,236,223,0.94);
  display:flex; flex-direction:column; align-items:center; justify-content:center; text-align:center;
  animation: float-badge 6s ease-in-out infinite;
  box-shadow: 0 14px 30px -12px rgba(0,0,0,0.4);
  z-index:5;
}
.hero-badge-stars{ color: var(--terracotta); font-size:0.85rem; letter-spacing:2px; }
.hero-badge-text{ font-size:0.62rem; letter-spacing:0.08em; text-transform:uppercase; color: var(--espresso-soft); margin-top:4px; line-height:1.3; }
@keyframes float-badge{ 0%,100%{ transform: translateY(0);} 50%{ transform: translateY(-10px);} }

.hero-content{ position:relative; z-index:4; padding: 0 6% 110px; color: var(--linen); max-width:820px; }
.hero-eyebrow{ font-size:0.85rem; letter-spacing:0.24em; text-transform:uppercase; color: var(--peach); margin-bottom:18px; overflow:hidden; }
.hero-eyebrow span{ display:inline-block; transform: translateY(110%); animation: line-up .8s var(--ease) forwards; animation-delay: .9s; }

.hero-title{ font-family: var(--font-display); font-weight:450; font-size: clamp(2.6rem, 7vw, 5.4rem); line-height:1.02; margin:0 0 22px; }
.hero-title .line{ display:block; overflow:hidden; }
.hero-title .word{ display:inline-block; transform: translateY(115%); opacity:0; animation: word-up .9s var(--ease) forwards; }
.hero-title .line:nth-child(1) .word:nth-child(1){ animation-delay: .15s; }
.hero-title .line:nth-child(1) .word:nth-child(2){ animation-delay: .25s; }
.hero-title .line:nth-child(2) .word:nth-child(1){ animation-delay: .35s; }
.hero-title .line:nth-child(2) .word:nth-child(2){ animation-delay: .45s; }
.hero-title .line:nth-child(3) .word{ animation-delay: .55s; }
@keyframes word-up{ to{ transform: translateY(0); opacity:1; } }
@keyframes line-up{ to{ transform: translateY(0); } }

.hero-sub{ font-size:1.15rem; max-width:480px; margin-bottom:34px; overflow:hidden; font-weight:300; }
.hero-sub span{ display:inline-block; transform: translateY(110%); animation: line-up .8s var(--ease) forwards; animation-delay:1.05s; }
.hero-actions{ display:flex; gap:18px; flex-wrap:wrap; opacity:0; animation: fade-in .8s ease forwards; animation-delay:1.3s; }
@keyframes fade-in{ to{ opacity:1; } }

.scroll-indicator{
  position:absolute; bottom:36px; left:6%; z-index:4; color: var(--linen);
  display:flex; flex-direction:column; align-items:center; gap:10px;
  opacity:0; animation: fade-in .8s ease forwards; animation-delay:1.6s;
}
.scroll-line{ width:1px; height:52px; background: rgba(243,236,223,0.5); position:relative; overflow:hidden; }
.scroll-line::after{
  content:''; position:absolute; top:-100%; left:0; width:100%; height:100%; background: var(--peach);
  animation: scroll-drip 2.2s ease-in-out infinite;
}
@keyframes scroll-drip{ 0%{ top:-100%;} 100%{ top:100%;} }
.scroll-word{ font-size:0.7rem; letter-spacing:0.2em; text-transform:uppercase; writing-mode: vertical-rl; }

/* ============================================
   Reveal-on-scroll utility
   ============================================ */
.reveal-up{ opacity:0; transform: translateY(36px); transition: opacity .9s var(--ease), transform .9s var(--ease); }
.reveal-up.in-view{ opacity:1; transform: translateY(0); }
.reveal-image{ opacity:0; clip-path: inset(0 0 100% 0); transition: opacity 1s var(--ease), clip-path 1.1s var(--ease); }
.reveal-image.in-view{ opacity:1; clip-path: inset(0 0 0% 0); }

/* ============================================
   Philosophy
   ============================================ */
.philosophy{ padding: 150px 0 130px; background: var(--linen); }
.philosophy-grid{ max-width: 760px; }
.philosophy-quote{
  font-family: var(--font-display); font-weight:400; font-style:italic;
  font-size: clamp(1.7rem, 3.4vw, 2.6rem); line-height:1.35; margin: 8px 0 34px; color: var(--espresso);
}
.philosophy-body{ font-size:1.08rem; color: var(--espresso-soft); max-width:600px; margin-bottom:70px; }
.philosophy-pillars{ display:grid; grid-template-columns: repeat(3,1fr); gap: 40px; border-top:1px solid var(--paper-line); padding-top:44px; }
.pillar-mark{ font-family: var(--font-hand); font-size:1.6rem; color: var(--terracotta); }
.pillar h3{ font-family: var(--font-display); font-size:1.3rem; margin: 10px 0 10px; font-weight:500; }
.pillar p{ font-size:0.94rem; color: var(--espresso-soft); margin:0; }

/* ============================================
   Chef
   ============================================ */
.chef{ padding: 60px 0 140px; }
.chef-grid{ display:grid; grid-template-columns: 0.85fr 1.15fr; gap:70px; align-items:center; }
.chef-media{ position:relative; border-radius: var(--radius-organic); overflow:hidden; }
.chef-media img{ width:100%; height:560px; object-fit:cover; }
.chef-caption{
  position:absolute; bottom:0; left:0; right:0; padding:16px 20px;
  background: linear-gradient(0deg, rgba(20,15,10,0.7), transparent);
  color: var(--linen); font-size:0.78rem; letter-spacing:0.03em;
}
.chef-text p{ font-size:1.05rem; color: var(--espresso-soft); margin: 0 0 20px; }
.chef-signature{ font-family: var(--font-hand); font-size:1.5rem; color: var(--terracotta-deep) !important; margin-top:14px !important; }

/* ============================================
   Journey
   ============================================ */
.journey{ background: var(--forest); color: var(--linen); padding: 140px 0; position:relative; }
.journey .section-head{ margin-bottom:80px; }
.journey-list{ display:flex; flex-direction:column; gap: 90px; position:relative; }
.journey-list::before{
  content:''; position:absolute; left:27px; top:20px; bottom:20px; width:1px;
  background: repeating-linear-gradient(0deg, rgba(240,198,160,0.4) 0 6px, transparent 6px 14px);
}
.journey-step{ display:grid; grid-template-columns: 56px 1fr 1.3fr; gap:36px; align-items:center; }
.journey-num{
  font-family: var(--font-display); font-style:italic; font-size:1.3rem; color: var(--peach);
  width:56px; height:56px; border:1px solid rgba(240,198,160,0.4); border-radius:50%;
  display:flex; align-items:center; justify-content:center; background: var(--forest); z-index:1;
}
.journey-media{ border-radius: var(--radius-organic); overflow:hidden; aspect-ratio:4/3; }
.journey-media img{ width:100%; height:100%; object-fit:cover; transition: transform .8s var(--ease); }
.journey-step:hover .journey-media img{ transform: scale(1.06); }
.journey-text h3{ font-family: var(--font-display); font-size:1.7rem; font-weight:450; margin:0 0 12px; }
.journey-text p{ color: rgba(243,236,223,0.75); font-size:1rem; max-width:420px; margin:0; }

/* ============================================
   Signature Dishes — Notebook cards
   ============================================ */
.dishes{ padding: 150px 0; }
.dishes .section-head{ text-align:center; margin: 0 auto 90px; }
.notebook{ display:flex; flex-direction:column; gap: 90px; }
.dish-card{
  display:grid; grid-template-columns: 1fr 1fr; gap: 60px; align-items:center;
  position:relative;
}
.dish-card.reverse{ direction: rtl; }
.dish-card.reverse > *{ direction: ltr; }
.pin{
  position:absolute; top:-14px; left:calc(50% - 7px); width:14px; height:14px; border-radius:50%;
  background: radial-gradient(circle at 35% 30%, #e8896a, var(--terracotta-deep));
  box-shadow: 0 4px 8px rgba(0,0,0,0.25); z-index:2;
}
.dish-photo{
  position:relative; border-radius: 4px; overflow:hidden;
  box-shadow: 0 24px 50px -22px rgba(43,32,24,0.35);
  transform: rotate(-1.2deg);
}
.dish-card.reverse .dish-photo{ transform: rotate(1.2deg); }
.dish-photo img{ width:100%; aspect-ratio: 5/4; object-fit:cover; }
.dish-note{
  background: var(--cream-card);
  border: 1px solid var(--paper-line);
  padding: 40px 42px;
  border-radius: 2px;
  position:relative;
  transform: rotate(0.6deg);
  box-shadow: 0 18px 40px -26px rgba(43,32,24,0.3);
}
.dish-card.reverse .dish-note{ transform: rotate(-0.6deg); }
.dish-number{ font-size:0.75rem; letter-spacing:0.16em; text-transform:uppercase; color: var(--olive); font-weight:600; }
.dish-note h3{ font-family: var(--font-display); font-size:1.9rem; font-weight:500; margin:12px 0 16px; }
.dish-story{ color: var(--espresso-soft); margin-bottom:18px; }
.dish-ingredients{ font-size:0.92rem; color: var(--espresso-soft); margin-bottom:20px; }
.dish-ingredients strong{ color: var(--espresso); }
.dish-handwriting{ font-family: var(--font-hand); font-size:1.35rem; color: var(--terracotta-deep); margin:0; }

/* ============================================
   Interactive Menu
   ============================================ */
.menu{ background: var(--linen-deep); padding: 140px 0; }
.menu .section-head{ text-align:center; margin: 0 auto 20px; }
.menu-note{ color: var(--espresso-soft); font-size:0.98rem; }
.menu-tabs{ display:flex; justify-content:center; gap:8px; margin: 46px 0 44px; flex-wrap:wrap; }
.menu-tab{
  padding: 11px 22px; font-size:0.88rem; letter-spacing:0.02em;
  border: 1px solid var(--paper-line); border-radius: var(--radius-organic);
  color: var(--espresso-soft); transition: all .3s ease;
}
.menu-tab.active, .menu-tab:hover{ background: var(--espresso); color: var(--linen); border-color: var(--espresso); }
.menu-panels{ max-width:720px; margin:0 auto; }
.menu-panel{ display:none; }
.menu-panel.active{ display:block; animation: fade-in .5s ease; }
.menu-panel li{ padding: 22px 0; border-bottom:1px solid var(--paper-line); }
.menu-panel li:first-child{ padding-top:0; }
.menu-line{ display:flex; justify-content:space-between; align-items:baseline; font-family: var(--font-display); font-size:1.25rem; }
.menu-line .price{ color: var(--terracotta-deep); font-family: var(--font-body); }
.menu-panel li p{ margin: 8px 0 0; color: var(--espresso-soft); font-size:0.92rem; }
.menu-disclaimer{ text-align:center; margin-top:40px; font-size:0.85rem; color: var(--espresso-soft); font-style:italic; }

/* ============================================
   Wine
   ============================================ */
.wine{ padding: 140px 0; }
.wine .section-head{ text-align:center; margin:0 auto 60px; }
.wine-grid{ display:grid; grid-template-columns: repeat(4, 1fr); gap: 28px; }
.wine-card{
  background: var(--cream-card); border:1px solid var(--paper-line); padding: 34px 28px;
  border-radius: var(--radius-organic); transition: transform .4s var(--ease), box-shadow .4s var(--ease);
}
.wine-card:hover{ transform: translateY(-8px); box-shadow: 0 24px 40px -24px rgba(43,32,24,0.3); }
.wine-region{ font-size:0.72rem; letter-spacing:0.14em; text-transform:uppercase; color: var(--olive); font-weight:600; }
.wine-card h3{ font-family: var(--font-display); font-size:1.35rem; margin:12px 0 10px; font-weight:500; }
.wine-card p{ font-size:0.92rem; color: var(--espresso-soft); margin:0; }

/* ============================================
   Private Dining
   ============================================ */
.private-dining{ display:grid; grid-template-columns: 1.1fr 0.9fr; min-height:640px; }
.private-media{ overflow:hidden; }
.private-media img{ width:100%; height:100%; object-fit:cover; }
.private-panel{
  background: var(--peach); display:flex; flex-direction:column; justify-content:center;
  padding: 80px 70px; color: var(--espresso);
}
.private-panel p{ font-size:1.05rem; color: var(--espresso-soft); margin-bottom:28px; max-width:420px; }
.private-list{ margin-bottom:36px; }
.private-list li{ padding: 10px 0 10px 26px; border-bottom:1px solid rgba(43,32,24,0.15); position:relative; font-size:0.95rem; }
.private-list li::before{ content:'—'; position:absolute; left:0; color: var(--terracotta-deep); }

/* ============================================
   Gallery
   ============================================ */
.gallery{ padding: 140px 0; position:relative; }
.gallery .section-head{ text-align:center; margin:0 auto 50px; }
.gallery-grid{ display:grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.gallery-item{ overflow:hidden; border-radius:2px; aspect-ratio: 1/1; position:relative; }
.gallery-item img{ width:100%; height:100%; object-fit:cover; transition: transform .7s var(--ease); }
.gallery-item:hover img{ transform: scale(1.08); }
.gallery-item:nth-child(3n+2){ aspect-ratio: 1/1.2; }

.lightbox{
  position:fixed; inset:0; background: rgba(20,15,10,0.92); z-index:1000;
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:20px;
  opacity:0; visibility:hidden; transition: opacity .4s ease, visibility .4s;
  padding: 40px;
}
.lightbox.open{ opacity:1; visibility:visible; }
.lightbox img{ max-width:min(880px, 90vw); max-height:70vh; object-fit:contain; border-radius:2px; }
.lightbox-caption{ color: var(--linen); font-family: var(--font-display); font-style:italic; font-size:1.1rem; }
.lightbox-close{ position:absolute; top:30px; right:40px; color: var(--linen); font-size:1.4rem; }

/* ============================================
   Awards / Counters
   ============================================ */
.awards{ background: var(--espresso); color: var(--linen); padding: 100px 0; }
.awards-grid{ display:grid; grid-template-columns: repeat(4,1fr); text-align:center; gap:20px; }
.award-number{ display:block; font-family: var(--font-display); font-size: clamp(2.4rem,4vw,3.4rem); color: var(--peach); font-weight:450; }
.award-label{ font-size:0.82rem; letter-spacing:0.1em; text-transform:uppercase; color: rgba(243,236,223,0.7); }

/* ============================================
   Testimonials
   ============================================ */
.testimonials{ padding: 140px 0; text-align:center; }
.testimonials .eyebrow{ display:block; }
.testimonial-track{ position:relative; max-width:760px; margin: 30px auto 0; min-height:180px; }
.testimonial{
  position:absolute; inset:0; opacity:0; transform: translateY(14px); transition: opacity .6s ease, transform .6s ease;
  pointer-events:none;
}
.testimonial.active{ opacity:1; transform: translateY(0); pointer-events:auto; position:relative; }
.testimonial p{ font-family: var(--font-display); font-style:italic; font-size: clamp(1.3rem,2.6vw,1.75rem); line-height:1.5; color: var(--espresso); }
.testimonial cite{ display:block; margin-top:22px; font-style:normal; font-size:0.85rem; letter-spacing:0.08em; text-transform:uppercase; color: var(--olive); }
.testimonial-dots{ display:flex; justify-content:center; gap:10px; margin-top:20px; }
.testimonial-dots button{ width:8px; height:8px; border-radius:50%; background: var(--paper-line); transition: background .3s ease, transform .3s ease; }
.testimonial-dots button.active{ background: var(--terracotta); transform: scale(1.3); }

/* ============================================
   Reservation
   ============================================ */
.reserve{ background: var(--forest); color: var(--linen); padding: 140px 0; }
.reserve-grid{ display:grid; grid-template-columns: 0.9fr 1.1fr; gap: 70px; }
.reserve-text p{ color: rgba(243,236,223,0.78); font-size:1.05rem; max-width:400px; }
.reserve-form{ background: var(--linen); color: var(--espresso); padding: 44px; border-radius: var(--radius-organic); }
.form-row{ display:grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom:20px; }
.reserve-form label{ display:flex; flex-direction:column; gap:8px; font-size:0.82rem; letter-spacing:0.04em; color: var(--espresso-soft); margin-bottom:20px; }
.form-row label{ margin-bottom:0; }
.reserve-form input, .reserve-form select, .reserve-form textarea{
  padding: 13px 14px; border: 1px solid var(--paper-line); border-radius:2px; background: var(--cream-card);
  color: var(--espresso); font-size:0.95rem;
}
.reserve-form input:focus, .reserve-form select:focus, .reserve-form textarea:focus{ border-color: var(--terracotta); }
.form-confirm{ margin-top:16px; font-size:0.9rem; color: var(--olive); min-height:1.2em; }

/* ============================================
   Location
   ============================================ */
.location{ padding: 140px 0; }
.location-grid{ display:grid; grid-template-columns: 1fr 1fr; gap:70px; align-items:center; }
.location-address{ font-family: var(--font-display); font-size:1.3rem; margin: 6px 0 30px; }
.location-hours div{ display:flex; justify-content:space-between; padding:12px 0; border-bottom:1px solid var(--paper-line); font-size:0.92rem; max-width:380px; }
.location-hours{ margin-bottom:36px; }
.map-svg{ width:100%; height:auto; }
.map-contour{ fill:none; stroke: var(--olive); stroke-opacity:0.35; stroke-width:1.4; }
.map-road{ fill:none; stroke: var(--terracotta); stroke-width:2.4; stroke-dasharray:8 8; }
.map-pin{ fill: var(--terracotta-deep); }
.map-label{ font-family: var(--font-display); font-style:italic; font-size:15px; fill: var(--espresso); }

/* ============================================
   Journal
   ============================================ */
.journal{ background: var(--linen-deep); padding: 140px 0; }
.journal .section-head{ text-align:center; margin:0 auto 60px; }
.journal-grid{ display:grid; grid-template-columns: repeat(3,1fr); gap:34px; }
.journal-card img{ width:100%; aspect-ratio: 4/3; object-fit:cover; border-radius:2px; margin-bottom:18px; transition: transform .6s var(--ease); }
.journal-card:hover img{ transform: scale(1.03); }
.journal-date{ font-size:0.75rem; letter-spacing:0.14em; text-transform:uppercase; color: var(--terracotta-deep); font-weight:600; }
.journal-card h3{ font-family: var(--font-display); font-size:1.3rem; font-weight:500; margin:10px 0 10px; }
.journal-card p{ font-size:0.92rem; color: var(--espresso-soft); margin:0; }

/* ============================================
   Footer
   ============================================ */
.site-footer{ background: var(--espresso); color: var(--linen); padding: 90px 0 0; }
.footer-grid{ display:grid; grid-template-columns: 1.4fr 1fr 1fr 1.2fr; gap:40px; padding-bottom:70px; border-bottom:1px solid rgba(243,236,223,0.15); }
.nav-mark.light{ font-family: var(--font-display); font-style:italic; font-size:1.6rem; color: var(--linen); }
.footer-brand p{ margin-top:14px; color: rgba(243,236,223,0.6); font-size:0.92rem; }
.footer-links h4, .footer-contact h4{ font-size:0.78rem; letter-spacing:0.14em; text-transform:uppercase; color: var(--peach); margin-bottom:18px; }
.footer-links a{ display:block; padding:6px 0; color: rgba(243,236,223,0.75); font-size:0.92rem; }
.footer-links a:hover{ color: var(--linen); }
.footer-contact p{ color: rgba(243,236,223,0.75); font-size:0.92rem; margin:0 0 16px; }
.footer-social{ display:flex; gap:16px; }
.footer-social a{ font-size:0.85rem; border-bottom:1px solid rgba(243,236,223,0.3); }
.footer-base{ text-align:center; padding: 26px 0; font-size:0.8rem; color: rgba(243,236,223,0.5); }

/* ============================================
   Back to top
   ============================================ */
.back-to-top{
  position:fixed; bottom:26px; right:26px; width:48px; height:48px; border-radius:50%;
  background: var(--espresso); color: var(--linen); display:flex; align-items:center; justify-content:center;
  font-size:1.2rem; z-index:500; opacity:0; visibility:hidden; transform: translateY(10px);
  transition: opacity .3s ease, transform .3s ease, visibility .3s;
}
.back-to-top.visible{ opacity:1; visibility:visible; transform: translateY(0); }

/* ============================================
   Responsive
   ============================================ */
@media (max-width: 1024px){
  .chef-grid, .private-dining, .location-grid, .reserve-grid{ grid-template-columns: 1fr; }
  .private-panel{ padding: 60px 40px; }
  .wine-grid{ grid-template-columns: repeat(2,1fr); }
  .journal-grid{ grid-template-columns: repeat(2,1fr); }
  .dish-card, .dish-card.reverse{ grid-template-columns:1fr; direction:ltr; }
  .footer-grid{ grid-template-columns: 1fr 1fr; row-gap:40px; }
}

@media (max-width: 780px){
  .nav-links{ display:none; }
  .nav-burger{ display:flex; }
  .nav-cta{ display:none; }
  .philosophy-pillars{ grid-template-columns:1fr; }
  .journey-step{ grid-template-columns:1fr; text-align:left; }
  .journey-list::before{ display:none; }
  .journey-num{ margin-bottom:6px; }
  .awards-grid{ grid-template-columns: repeat(2,1fr); gap:40px; }
  .gallery-grid{ grid-template-columns: repeat(2,1fr); }
  .form-row{ grid-template-columns:1fr; }
  .footer-grid{ grid-template-columns:1fr; }
  .container{ padding: 0 22px; }
  .hero-content{ padding: 0 22px 90px; }
  .private-panel{ padding: 50px 26px; }
}
