/* =============================================================
   TERRAZA — Editorial Dark Warm
   1. Tokens
   ============================================================= */
:root{
  --bg:#14100C;
  --bg-2:#1B1610;
  --bg-3:#241C14;
  --cream:#F5EEE2;
  --cream-2:#D9CDB8;
  --cream-3:#8C7F6B;
  --accent:#C1502E;
  --accent-2:#9C3F22;
  --olive:#6B7A4F;
  --gold:#D9A566;
  --line:rgba(245,238,226,.12);
  --line-2:rgba(245,238,226,.06);

  --serif:'Cormorant Garamond', Georgia, 'Times New Roman', serif;
  --sans:'Work Sans', system-ui, -apple-system, sans-serif;

  --ease-out:cubic-bezier(.16,1,.3,1);
  --ease-soft:cubic-bezier(.25,.46,.45,.94);

  --gutter:clamp(1.25rem, 5vw, 5rem);
  --maxw:1280px;

  /* driven by scroll: 0 = atardecer, 1 = noche cerrada */
  --dusk:0;
}

/* =============================================================
   2. Reset & base
   ============================================================= */
*,*::before,*::after{ box-sizing:border-box; margin:0; }
html{ -webkit-text-size-adjust:100%; tab-size:2; overflow-x:clip; scroll-behavior:smooth; }
body{
  font-family:var(--sans);
  font-size:16px; line-height:1.65; font-weight:300;
  color:var(--cream-2); background:var(--bg);
  -webkit-font-smoothing:antialiased; text-rendering:optimizeLegibility;
  overflow-x:clip; overscroll-behavior-y:none;
}
img,svg,video{ display:block; max-width:100%; }
img{ height:auto; }
button{ font:inherit; color:inherit; cursor:pointer; border:0; background:none; }
a{ color:inherit; text-decoration:none; }
p{ text-wrap:pretty; }
h1,h2,h3,h4{ font-family:var(--serif); font-weight:400; text-wrap:balance; line-height:1.02; letter-spacing:-.01em; color:var(--cream); }
em{ font-style:italic; }
::selection{ background:var(--accent); color:var(--cream); }
:focus-visible{ outline:2px solid var(--gold); outline-offset:3px; border-radius:3px; }

.skip-link{ position:fixed; top:-100px; left:1rem; padding:.65rem 1.1rem; background:var(--cream); color:var(--bg); z-index:9999; border-radius:6px; font-weight:500; }
.skip-link:focus{ top:1rem; }

/* =============================================================
   3. Utilities
   ============================================================= */
.wrap{ width:100%; max-width:var(--maxw); margin-inline:auto; padding-inline:var(--gutter); }
.wrap-narrow{ max-width:760px; }
.muted{ color:var(--cream-3); }
.kicker{
  font-family:var(--sans); font-size:.68rem; font-weight:500;
  letter-spacing:.24em; text-transform:uppercase; color:var(--accent);
}
.link-underline{ position:relative; color:var(--cream-2); padding-bottom:2px; }
.link-underline::after{
  content:""; position:absolute; left:0; bottom:0; width:100%; height:1px;
  background:currentColor; opacity:.32;
  transition:opacity .45s var(--ease-out), background .45s var(--ease-out);
}
.link-underline:hover::after{ opacity:1; background:var(--gold); }

/* reveal on scroll */
.reveal{ opacity:0; transform:translateY(28px); transition:opacity 1s var(--ease-out), transform 1s var(--ease-out); }
.reveal.is-in{ opacity:1; transform:none; }
/* defensive: split elements must never stay invisible */
.reveal[data-split]{ opacity:1; transform:none; }

/* =============================================================
   4. Buttons
   ============================================================= */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.6rem;
  min-height:48px; padding:.85rem 1.7rem; border-radius:100px;
  font-family:var(--sans); font-size:.82rem; font-weight:500; letter-spacing:.08em; text-transform:uppercase;
  border:1px solid transparent; transition:all .5s var(--ease-out); white-space:nowrap;
}
.btn-primary{ background:var(--accent); color:#fff; }
.btn-primary:hover{ background:var(--accent-2); transform:translateY(-2px); box-shadow:0 14px 34px -14px var(--accent); }
.btn-ghost{ border-color:var(--line); color:var(--cream); }
.btn-ghost:hover{ border-color:var(--cream-2); background:rgba(245,238,226,.05); }

/* =============================================================
   5. Splash
   ============================================================= */
.splash{
  position:fixed; inset:0; z-index:1000; background:var(--bg);
  display:flex; align-items:center; justify-content:center;
  transition:opacity .9s var(--ease-out), visibility .9s;
  animation:splashSafety .01s 4.5s forwards;         /* red de seguridad CSS */
}
.splash.is-out{ opacity:0; visibility:hidden; pointer-events:none; }
@keyframes splashSafety{ to{ opacity:0; visibility:hidden; pointer-events:none; } }
.splash-inner{ text-align:center; }
.splash-mark{
  display:block; font-family:var(--serif); font-size:clamp(1.6rem,5vw,2.6rem);
  letter-spacing:.5em; text-indent:.5em; color:var(--gold);
  animation:splashIn 1.4s var(--ease-out) both;
}
.splash-line{
  display:block; width:0; height:1px; margin:1.4rem auto 0; background:var(--gold); opacity:.5;
  animation:splashLine 2.4s var(--ease-out) .3s both;
}
@keyframes splashIn{ from{ opacity:0; letter-spacing:.9em; } to{ opacity:1; } }
@keyframes splashLine{ from{ width:0; } to{ width:180px; } }

/* =============================================================
   6. Cursor bloom (luz cálida ambiental)
   ============================================================= */
.bloom{
  position:fixed; top:0; left:0; width:420px; height:420px; margin:-210px 0 0 -210px;
  border-radius:50%; pointer-events:none; z-index:2; opacity:0;
  background:radial-gradient(circle, rgba(217,165,102,.16) 0%, rgba(193,80,46,.07) 40%, transparent 70%);
  filter:blur(28px); transition:opacity .8s var(--ease-out);
  will-change:transform;
}
.bloom.is-ready{ opacity:1; }
@media (hover:none){ .bloom{ display:none; } }

/* =============================================================
   7. Nav
   ============================================================= */
.nav{
  position:fixed; top:0; left:0; right:0; z-index:100;
  display:flex; align-items:center; gap:2rem;
  padding:1.5rem var(--gutter);
  transition:background .6s var(--ease-out), padding .6s var(--ease-out), border-color .6s;
  border-bottom:1px solid transparent;
}
.nav.is-stuck{
  background:rgba(20,16,12,.82); backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);
  padding-block:.9rem; border-bottom-color:var(--line-2);
}
.nav-mark{
  font-family:var(--serif); font-size:1.35rem; letter-spacing:.28em; text-indent:.28em;
  color:var(--cream); text-transform:uppercase; flex-shrink:0;
}
.nav-links{ display:none; margin-left:auto; gap:2.2rem; }
.nav-links a{ font-size:.8rem; letter-spacing:.1em; color:var(--cream-2); position:relative; padding-block:.3rem; }
.nav-links a::after{
  content:""; position:absolute; left:0; bottom:0; width:100%; height:1px; background:var(--gold);
  transform:scaleX(0); transform-origin:right; transition:transform .5s var(--ease-out);
}
.nav-links a:hover::after{ transform:scaleX(1); transform-origin:left; }
.nav-cta{ display:none; min-height:42px; padding:.6rem 1.3rem; font-size:.72rem; }
.nav-toggle{ margin-left:auto; display:flex; flex-direction:column; gap:6px; padding:.6rem; }
.nav-toggle span{ display:block; width:26px; height:1px; background:var(--cream); transition:transform .4s var(--ease-out), opacity .4s; }
.nav.is-open .nav-toggle span:first-child{ transform:translateY(3.5px) rotate(45deg); }
.nav.is-open .nav-toggle span:last-child{ transform:translateY(-3.5px) rotate(-45deg); }

@media (max-width:959px){
  .nav.is-open{ background:rgba(20,16,12,.96); backdrop-filter:blur(16px); flex-wrap:wrap; }
  .nav.is-open .nav-links{
    display:flex; flex-direction:column; gap:1.1rem; width:100%;
    margin:1.6rem 0 1rem; order:3;
  }
  .nav.is-open .nav-links a{ font-size:1.6rem; font-family:var(--serif); letter-spacing:.02em; color:var(--cream); }
  .nav.is-open .nav-cta{ display:inline-flex; order:4; margin-bottom:1rem; }
}
@media (min-width:960px){
  .nav-links{ display:flex; }
  .nav-cta{ display:inline-flex; }
  .nav-toggle{ display:none; }
}

/* =============================================================
   8. HERO — escena arquitectónica por capas
   ============================================================= */
.hero{
  position:relative; min-height:100vh; min-height:100svh;
  display:flex; flex-direction:column; justify-content:flex-end;
  overflow:hidden; isolation:isolate;
}
.scene{ position:absolute; inset:0; z-index:0; }
.layer{ position:absolute; inset:0; will-change:transform; }

/* --- cielo --- */
.sky{
  background:
    linear-gradient(180deg,
      #22182C 0%,
      #332034 7%,
      #5E3238 13%,
      #944A38 18%,
      #C0703E 22.5%,
      #D18A4C 25%,
      #8A4A2C 28.5%,
      #4A2A1A 33%,
      #2A1B12 42%,
      #1A120C 62%,
      #150F0A 100%);
  filter:brightness(calc(1 - var(--dusk)*.40)) saturate(calc(1 - var(--dusk)*.22));
}
.sky-glow{
  position:absolute; left:50%; top:24%; width:110%; height:32%;
  transform:translate(-50%,-50%);
  background:radial-gradient(ellipse at center, rgba(240,160,92,.55) 0%, rgba(206,112,56,.22) 42%, transparent 74%);
  filter:blur(46px);
  opacity:calc(1 - var(--dusk)*.55);
}
.stars{
  position:absolute; inset:0 0 84% 0; opacity:calc(var(--dusk)*.8);
  background-image:
    radial-gradient(1.4px 1.4px at 12% 22%, rgba(255,240,220,.9), transparent),
    radial-gradient(1.2px 1.2px at 28% 12%, rgba(255,240,220,.7), transparent),
    radial-gradient(1.5px 1.5px at 46% 28%, rgba(255,240,220,.8), transparent),
    radial-gradient(1.1px 1.1px at 63% 15%, rgba(255,240,220,.65), transparent),
    radial-gradient(1.6px 1.6px at 78% 25%, rgba(255,240,220,.85), transparent),
    radial-gradient(1.2px 1.2px at 88% 10%, rgba(255,240,220,.7), transparent),
    radial-gradient(1.3px 1.3px at 36% 8%, rgba(255,240,220,.6), transparent);
  transition:opacity 1.2s linear;
}
.skyline{ top:6%; bottom:auto; height:22%; opacity:.92; }
.skyline svg{ width:100%; height:100%; }

/* --- fachada --- */
.facade{ display:flex; flex-direction:column; justify-content:flex-start; }
.facade-mass{
  position:absolute; left:-4%; right:-4%; top:24%; height:17%;
  background:
    linear-gradient(180deg, #6B4A38 0%, #56382A 48%, #402920 100%);
  box-shadow:0 24px 60px -18px rgba(0,0,0,.75);
  transform:perspective(1600px) rotateX(1.8deg);
  transform-origin:bottom center;
}
.facade-grain{
  position:absolute; inset:0; opacity:.5; mix-blend-mode:overlay;
  background-image:
    radial-gradient(circle at 20% 30%, rgba(255,255,255,.06) 0 2px, transparent 3px),
    radial-gradient(circle at 70% 60%, rgba(0,0,0,.14) 0 2px, transparent 3px),
    radial-gradient(circle at 45% 80%, rgba(255,255,255,.04) 0 1px, transparent 2px);
  background-size:90px 90px, 130px 130px, 70px 70px;
}
.facade-sign{
  position:absolute; left:50%; top:50%; transform:translate(-50%,-50%);
  width:min(78%, 900px); text-align:center; overflow:hidden;
}
.sign-word{
  display:block; font-family:var(--serif); font-weight:500;
  font-size:clamp(2.2rem, 8.6vw, 8rem); line-height:1;
  letter-spacing:.16em; text-indent:.16em; color:#E8BE86;
  text-shadow:
    0 1px 0 rgba(255,255,255,.35),
    0 -1px 0 rgba(0,0,0,.5),
    0 0 34px rgba(217,165,102,calc(.28 + var(--dusk)*.5)),
    0 0 90px rgba(217,165,102,calc(.14 + var(--dusk)*.3));
}
.sign-sweep{
  position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(105deg, transparent 38%, rgba(255,232,200,.5) 50%, transparent 62%);
  transform:translateX(-120%);
  animation:signSweep 7s var(--ease-soft) 1.6s infinite;
}
@keyframes signSweep{ 0%{ transform:translateX(-120%);} 22%,100%{ transform:translateX(120%);} }

/* techo de listones */
.facade-slat{
  position:absolute; left:-4%; right:-4%; top:41%; height:8%;
  background:
    repeating-linear-gradient(90deg,
      #4A3527 0 6px, #33241A 6px 11px),
    linear-gradient(180deg, #57402F, #2E2118);
  box-shadow:inset 0 -22px 40px -14px rgba(226,164,96,calc(.42 + var(--dusk)*.28));
  transform:perspective(1000px) rotateX(-14deg);
  transform-origin:top center;
}

/* --- interior iluminado --- */
.inner-room{ }
.room-glow{
  position:absolute; left:0; right:0; top:49%; height:24%;
  background:
    radial-gradient(ellipse 70% 100% at 50% 0%, rgba(246,190,120,.5) 0%, rgba(206,134,70,.24) 48%, transparent 78%),
    linear-gradient(180deg, rgba(232,168,98,.30) 0%, rgba(150,92,48,.12) 60%, transparent 100%);
  filter:blur(18px);
  opacity:calc(.78 + var(--dusk)*.22);
}
/* la terraza en primer plano queda más oscura que el interior */
.room-shade{
  position:absolute; left:0; right:0; top:57%; bottom:0;
  background:linear-gradient(180deg, transparent 0%, rgba(14,10,7,.42) 34%, rgba(12,8,5,.72) 100%);
}
.shelf{
  position:absolute; left:8%; top:53%; width:19%; height:9%;
  display:flex; align-items:flex-end; gap:4px;
  opacity:.8;
}
.shelf span{
  flex:1; border-radius:1px 1px 0 0;
  background:linear-gradient(180deg, rgba(244,196,138,.8), rgba(190,120,60,.3));
  box-shadow:0 0 10px rgba(230,170,100,.45);
}
.shelf span:nth-child(odd){ height:70%; }
.shelf span:nth-child(even){ height:52%; }
.shelf span:nth-child(3n){ height:86%; }
.room-pillar{
  position:absolute; left:var(--x); top:49%; width:5px; height:21%;
  background:linear-gradient(180deg,#2A1E14,#181109);
  opacity:.75;
}

/* --- lámparas --- */
.lamps{ }
.lamp{ position:absolute; left:var(--x); top:48.5%; transform:translateX(-50%); }
.lamp i{
  display:block; width:1px; height:26px; margin-inline:auto;
  background:linear-gradient(180deg, rgba(30,22,15,.95), rgba(46,34,24,.95));
}
.lamp b{
  position:relative; display:block; width:44px; height:26px; margin-top:-1px;
  background:linear-gradient(180deg,#2A1D15,#151009);
  clip-path:polygon(18% 0, 82% 0, 100% 100%, 0 100%);
}
.lamp b::after{
  content:""; position:absolute; left:50%; bottom:-3px; width:32px; height:9px;
  transform:translateX(-50%); border-radius:50%;
  background:rgba(255,224,170,1);
  box-shadow:
    0 0 26px 10px rgba(250,192,120,calc(.75 + var(--dusk)*.25)),
    0 0 80px 34px rgba(228,148,74,calc(.34 + var(--dusk)*.3)),
    0 0 160px 70px rgba(198,116,54,calc(.16 + var(--dusk)*.2));
  animation:lampFlicker 5.5s var(--ease-soft) infinite;
  animation-delay:var(--d);
}
/* cono volumétrico */
.lamp b::before{
  content:""; position:absolute; left:50%; top:100%; width:230px; height:300px;
  transform:translateX(-50%);
  background:linear-gradient(180deg, rgba(250,196,126,calc(.30 + var(--dusk)*.16)) 0%, rgba(248,190,120,.06) 55%, rgba(245,185,115,0) 82%);
  clip-path:polygon(40% 0, 60% 0, 100% 100%, 0 100%);
  filter:blur(12px);
}
@keyframes lampFlicker{ 0%,100%{ opacity:1; } 46%{ opacity:.86; } 54%{ opacity:.97; } }

/* --- charcos de luz en el piso --- */
.tables{ }
.pool{
  position:absolute; left:var(--x); top:66%; width:var(--w); height:16%;
  transform:translateX(-50%);
  background:radial-gradient(ellipse 50% 50% at 50% 50%,
    rgba(248,188,118,calc(.30 + var(--dusk)*.16)) 0%,
    rgba(214,132,66,calc(.12 + var(--dusk)*.08)) 45%,
    transparent 76%);
  filter:blur(14px);
}

/* --- vegetación y jardineras --- */
.planters{ }
.tree{
  position:absolute; left:-6%; top:14%; width:min(34%,420px); height:62%;
  opacity:.95;
}
.tree svg{ width:100%; height:100%; }
.foliage{ position:absolute; top:60%; width:min(26%,330px); height:16%; opacity:.95; }
.foliage-r{ right:-2%; }
.planter{
  position:absolute; top:75%; height:7.5%; width:min(24%,300px);
  background:linear-gradient(180deg,#7A5138 0%, #633A26 45%, #4A2A1B 100%);
  box-shadow:
    inset 0 2px 0 rgba(255,196,138,.24),
    0 -16px 44px -10px rgba(230,156,84,calc(.34 + var(--dusk)*.24)),
    0 16px 30px -14px rgba(0,0,0,.8);
}
.planter-r{ right:0; }
.planter-l{ left:0; width:min(19%,240px); top:76.5%; height:6.5%; }

/* --- escalones + suelo --- */
.steps{ }
.step{
  position:absolute; left:42%; transform:translateX(-50%);
  background:linear-gradient(180deg,#2A1E15,#1C140D);
}
.step-1{ top:83.5%; width:min(42%,560px); height:3.2%; box-shadow:0 -4px 22px 2px rgba(244,186,116,calc(.48 + var(--dusk)*.3)); }
.step-2{ top:88%; width:min(52%,700px); height:3.2%; box-shadow:0 -4px 22px 2px rgba(244,186,116,calc(.38 + var(--dusk)*.26)); }
.ground{
  position:absolute; left:0; right:0; top:91%; bottom:0;
  background:linear-gradient(180deg, #241911 0%, #1A120B 55%, #130D08 100%);
}
.ground::after{
  content:""; position:absolute; inset:0;
  background:radial-gradient(ellipse 55% 120% at 42% 0%, rgba(238,170,98,calc(.26 + var(--dusk)*.14)), transparent 72%);
}

.scene-vignette{
  position:absolute; inset:0; pointer-events:none;
  background:
    radial-gradient(ellipse 96% 82% at 50% 42%, transparent 42%, rgba(12,9,6,.42) 82%, rgba(12,9,6,.78) 100%),
    linear-gradient(180deg, rgba(12,9,6,.42) 0%, transparent 16%, transparent 62%, rgba(14,10,7,.72) 100%);
}
.scene-grain{
  position:absolute; inset:0; pointer-events:none; opacity:.16; mix-blend-mode:overlay;
  background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='160' height='160'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='.85' numOctaves='3'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.55'/%3E%3C/svg%3E");
}

/* --- copy del hero --- */
.hero-copy{
  position:relative; z-index:3;
  padding:0 var(--gutter) 1.5rem;
  max-width:min(100%, 46rem);
}
.hero-copy::before{
  content:""; position:absolute; inset:-22% -18% -40% -14%;
  background:radial-gradient(ellipse at 26% 58%, rgba(11,8,5,.88) 0%, rgba(11,8,5,.5) 48%, transparent 74%);
  filter:blur(10px); z-index:-1; pointer-events:none;
}
.hero-title{
  font-size:clamp(2.6rem, 7.6vw, 6rem); line-height:.98; margin-top:1rem;
  max-width:16ch; letter-spacing:-.015em;
}
.hero-title em{ color:var(--gold); }
.hero-sub{
  margin-top:1.3rem; max-width:44ch; font-size:clamp(1rem,1.5vw,1.15rem);
  color:var(--cream-2);
}
.hero-actions{ display:flex; flex-wrap:wrap; gap:.9rem; margin-top:2rem; }

.hero-foot{
  position:relative; z-index:3;
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:1.2rem var(--gutter) 1.6rem; border-top:1px solid var(--line-2);
  font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--cream-3);
}
.hero-hours{ display:inline-flex; align-items:center; gap:.55rem; }
.hero-hours .dot{
  width:6px; height:6px; border-radius:50%; background:var(--olive);
  box-shadow:0 0 0 0 rgba(107,122,79,.6); animation:pulse 2.6s infinite;
}
@keyframes pulse{ 70%{ box-shadow:0 0 0 9px rgba(107,122,79,0);} 100%{ box-shadow:0 0 0 0 rgba(107,122,79,0);} }
.scroll-hint{ display:inline-flex; align-items:center; gap:.7rem; }
.scroll-rule{ display:block; width:52px; height:1px; background:var(--cream-3); position:relative; overflow:hidden; }
.scroll-rule::after{
  content:""; position:absolute; inset:0; background:var(--gold);
  transform:translateX(-100%); animation:ruleSlide 2.6s var(--ease-soft) infinite;
}
@keyframes ruleSlide{ 0%{transform:translateX(-100%);} 60%,100%{transform:translateX(100%);} }

/* =============================================================
   9. Secciones — comunes
   ============================================================= */
.section{ position:relative; padding-block:clamp(5rem, 12vw, 10rem); }
.section-halo{
  position:absolute; inset:-40% -10% -30% -10%; pointer-events:none; z-index:0;
  background:radial-gradient(42% 34% at 50% 50%, rgba(193,80,46,.16), transparent 72%);
  filter:blur(110px);
}
.section > .wrap{ position:relative; z-index:1; }
.section-head{ max-width:60ch; margin-bottom:clamp(2.5rem,5vw,4rem); }
.section-head.center{ margin-inline:auto; text-align:center; }
.section-head h2{ font-size:clamp(2.1rem,5.4vw,4.2rem); margin-top:1.1rem; }
.section-head h2 em{ color:var(--gold); }
.section-note{ margin-top:1.2rem; color:var(--cream-3); max-width:52ch; }
.section-head.center .section-note{ margin-inline:auto; }

/* =============================================================
   10. La casa
   ============================================================= */
.casa-figure{ margin-bottom:2.6rem; position:relative; }
.casa-figure img{
  width:100%; aspect-ratio:16/9; object-fit:cover; border-radius:2px;
  filter:saturate(.9) contrast(1.04) brightness(.82);
}
.casa-figure::after{
  content:""; position:absolute; inset:0; pointer-events:none; border-radius:2px;
  background:linear-gradient(180deg, rgba(20,16,12,.35), rgba(20,16,12,.6));
}
.casa-figure figcaption{
  position:absolute; left:1.2rem; bottom:1rem; z-index:2;
  font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--cream-3);
}
.casa-text{ max-width:62ch; margin-bottom:clamp(3rem,6vw,5rem); }
.lede{ font-family:var(--serif); font-size:clamp(1.3rem,2.4vw,1.85rem); line-height:1.45; color:var(--cream); }

.pillars{ display:grid; gap:2.2rem; }
.pillar{ border-top:1px solid var(--line); padding-top:1.4rem; }
.pillar-num{ font-size:.7rem; letter-spacing:.2em; color:var(--accent); }
.pillar h3{ font-size:1.65rem; margin:.5rem 0 .7rem; }
.pillar p{ color:var(--cream-3); font-size:.95rem; }

/* =============================================================
   11. La carta — índice con revelado
   ============================================================= */
.menu{ display:grid; gap:clamp(2rem,4vw,4rem); align-items:start; }
.menu-group + .menu-group{ margin-top:2.8rem; }
.menu-group-title{
  font-family:var(--sans); font-size:.7rem; font-weight:500; letter-spacing:.24em; text-transform:uppercase;
  color:var(--accent); padding-bottom:.9rem; border-bottom:1px solid var(--line); margin-bottom:.6rem;
}
.dish{
  display:grid; grid-template-columns:1fr auto; gap:.2rem 1.4rem; width:100%;
  padding:1.1rem 0 1.1rem; text-align:left; border-bottom:1px solid var(--line-2);
  transition:padding-left .55s var(--ease-out), border-color .55s;
  position:relative;
}
.dish::before{
  content:""; position:absolute; left:0; top:50%; width:0; height:1px; background:var(--gold);
  transform:translateY(-50%); transition:width .55s var(--ease-out); opacity:.8;
}
.dish:hover, .dish:focus-visible, .dish.is-active{ padding-left:2.2rem; border-color:var(--line); }
.dish:hover::before, .dish:focus-visible::before, .dish.is-active::before{ width:1.4rem; }
.dish-name{
  font-family:var(--serif); font-size:clamp(1.25rem,2.4vw,1.75rem); color:var(--cream);
  transition:color .5s var(--ease-out); line-height:1.15;
}
.dish:hover .dish-name, .dish.is-active .dish-name{ color:var(--gold); }
.dish-desc{ grid-column:1; font-size:.88rem; color:var(--cream-3); line-height:1.5; }
.dish-tag{
  display:inline-block; margin-left:.6rem; font-style:normal;
  font-size:.6rem; letter-spacing:.16em; text-transform:uppercase;
  color:var(--olive); border:1px solid rgba(107,122,79,.5); border-radius:100px; padding:.12rem .5rem;
}
.dish-price{
  grid-row:1; grid-column:2; align-self:start;
  font-size:.95rem; color:var(--cream-2); font-variant-numeric:tabular-nums;
}
.dish-price::before{ content:"$"; color:var(--cream-3); margin-right:.15rem; }

/* visual del plato */
.menu-visual{ display:none; }
.plate-frame{ position:sticky; top:120px; text-align:center; }
.plate{
  position:relative; width:min(100%, 340px); aspect-ratio:1; margin-inline:auto; border-radius:50%;
  background:radial-gradient(circle at 50% 46%, #F3EADB 0%, #E4D7C2 62%, #C9B99F 84%, #9C8D76 100%);
  box-shadow:
    0 40px 70px -30px rgba(0,0,0,.85),
    inset 0 -14px 34px -14px rgba(0,0,0,.35);
  transition:transform .8s var(--ease-out);
}
.plate-ring{
  position:absolute; inset:11%; border-radius:50%;
  border:1px solid rgba(0,0,0,.07);
  box-shadow:inset 0 0 26px rgba(0,0,0,.09);
}
.plate-food{
  position:absolute; inset:22%; border-radius:50%;
  background:
    radial-gradient(ellipse 30% 22% at 40% 40%, var(--f1,#B9CE7A) 0%, transparent 64%),
    radial-gradient(ellipse 24% 18% at 63% 37%, var(--f2,#8FA84F) 0%, transparent 62%),
    radial-gradient(ellipse 26% 19% at 52% 64%, var(--f3,#E8DFC6) 0%, transparent 60%),
    radial-gradient(ellipse 15% 12% at 33% 63%, var(--f4,#D9A566) 0%, transparent 58%),
    radial-gradient(ellipse 12% 10% at 70% 60%, var(--f1,#B9CE7A) 0%, transparent 58%),
    radial-gradient(ellipse 9% 7% at 58% 49%, var(--f4,#D9A566) 0%, transparent 56%),
    radial-gradient(circle at 50% 54%, rgba(60,40,20,.10) 0%, transparent 72%);
  filter:blur(1.1px) saturate(1.12);
  transition:opacity .5s var(--ease-out), transform .7s var(--ease-out);
}
.plate.is-swapping .plate-food{ opacity:0; transform:scale(.94); }
.plate-shine{
  position:absolute; inset:0; border-radius:50%; pointer-events:none;
  background:linear-gradient(135deg, rgba(255,255,255,.3) 0%, transparent 38%, transparent 70%, rgba(0,0,0,.08) 100%);
}
.plate-label{
  margin-top:1.6rem; font-family:var(--serif); font-size:1.35rem; color:var(--cream);
  transition:opacity .4s var(--ease-out);
}
.plate-sub{ font-size:.68rem; letter-spacing:.2em; text-transform:uppercase; color:var(--cream-3); margin-top:.4rem; }
.plate-frame.is-swapping .plate-label{ opacity:0; }

.carta-foot{
  margin-top:3rem; font-size:.82rem; color:var(--cream-3);
  display:flex; flex-wrap:wrap; gap:1.2rem; align-items:center; justify-content:space-between;
}
.carta-foot p{ max-width:52ch; }

/* =============================================================
   12. Los espacios
   ============================================================= */
.spaces{ display:grid; gap:clamp(2rem,4vw,2.6rem); }
.space-media{ position:relative; overflow:hidden; border-radius:2px; }
.space-media img{
  width:100%; aspect-ratio:4/5; object-fit:cover;
  filter:saturate(.5) contrast(1.02) brightness(.52) sepia(.22);
  transition:transform 1.4s var(--ease-out), filter 1.4s var(--ease-out);
}
.space-media::after{
  content:""; position:absolute; inset:0; pointer-events:none;
  background:linear-gradient(180deg, rgba(30,18,10,.34), rgba(16,11,7,.72));
  mix-blend-mode:multiply;
  transition:opacity .9s var(--ease-out);
}
.space:hover .space-media img{ transform:scale(1.06); filter:saturate(.72) contrast(1.04) brightness(.68) sepia(.16); }
.space:hover .space-media::after{ opacity:.55; }
.space-body{ padding-top:1.2rem; }
.space-body h3{ font-size:1.75rem; }
.space-body p{ margin-top:.6rem; color:var(--cream-3); font-size:.95rem; max-width:36ch; }
.space-meta{
  display:block; margin-top:.9rem; font-size:.68rem; letter-spacing:.16em;
  text-transform:uppercase; color:var(--accent);
}

/* =============================================================
   13. Prensa
   ============================================================= */
.prensa{ border-top:1px solid var(--line-2); border-bottom:1px solid var(--line-2); background:var(--bg-2); }
.quotes{ display:grid; gap:2.6rem; }
.quote p{
  font-family:var(--serif); font-style:italic; font-size:clamp(1.15rem,2vw,1.5rem);
  line-height:1.4; color:var(--cream);
}
.quote cite{
  display:block; margin-top:.9rem; font-style:normal;
  font-size:.68rem; letter-spacing:.18em; text-transform:uppercase; color:var(--cream-3);
}
.prensa-badge{
  margin-top:3.4rem; padding-top:1.6rem; border-top:1px solid var(--line);
  font-size:.74rem; letter-spacing:.16em; text-transform:uppercase; color:var(--cream-3);
}
.prensa-badge span{ color:var(--gold); }

/* =============================================================
   14. Formulario
   ============================================================= */
.form{ margin-top:1rem; }
.form-row{ display:grid; gap:1.1rem; margin-bottom:1.1rem; }
.field{ display:flex; flex-direction:column; gap:.5rem; }
.field label{ font-size:.68rem; letter-spacing:.16em; text-transform:uppercase; color:var(--cream-3); }
.field input, .field select, .field textarea{
  font-family:var(--sans); font-size:.95rem; font-weight:300; color:var(--cream);
  background:rgba(245,238,226,.04); border:1px solid var(--line);
  border-radius:3px; padding:.85rem 1rem; width:100%;
  transition:border-color .5s var(--ease-out), background .5s var(--ease-out);
}
.field input::placeholder, .field textarea::placeholder{ color:rgba(140,127,107,.75); }
.field input:focus, .field select:focus, .field textarea:focus{
  outline:none; border-color:var(--gold); background:rgba(245,238,226,.07);
}
.field select{ appearance:none; background-image:linear-gradient(45deg,transparent 50%,var(--cream-3) 50%),linear-gradient(135deg,var(--cream-3) 50%,transparent 50%); background-position:calc(100% - 20px) 55%, calc(100% - 15px) 55%; background-size:5px 5px,5px 5px; background-repeat:no-repeat; }
.field textarea{ resize:vertical; min-height:76px; }

.btn-submit{ width:100%; margin-top:1.6rem; position:relative; overflow:hidden; }
.btn-check{
  position:absolute; width:26px; height:26px; fill:none; stroke:#fff; stroke-width:2;
  stroke-linecap:round; stroke-linejoin:round;
  stroke-dasharray:32; stroke-dashoffset:32; opacity:0;
}
.form.is-sent .btn-submit{ background:var(--olive); border-color:var(--olive); pointer-events:none; }
.form.is-sent .btn-label{ opacity:0; }
.form.is-sent .btn-check{ opacity:1; animation:drawCheck .7s var(--ease-out) .1s forwards; }
@keyframes drawCheck{ to{ stroke-dashoffset:0; } }
.form.is-sending .btn-submit{ pointer-events:none; opacity:.75; }
.form-note{ margin-top:1.1rem; font-size:.78rem; color:var(--cream-3); text-align:center; }
.form-msg{
  margin-top:1.2rem; text-align:center; font-size:.92rem; color:var(--olive);
  opacity:0; transform:translateY(8px); transition:all .6s var(--ease-out);
}
.form.is-sent .form-msg{ opacity:1; transform:none; }

/* =============================================================
   14.5 Reservas — disponibilidad en vivo
   ============================================================= */
.booking{ display:grid; gap:2.6rem; align-items:start; }
.booking-panel{ display:flex; flex-direction:column; gap:2.4rem; }
.booking-row{ display:grid; gap:1.4rem; }

.chips{ display:flex; flex-wrap:wrap; gap:.5rem; }
.chip{
  min-width:46px; min-height:46px; padding:.5rem .9rem; border-radius:100px;
  border:1px solid var(--line); background:rgba(245,238,226,.03); color:var(--cream-2);
  font-size:.92rem; font-variant-numeric:tabular-nums;
  transition:all .4s var(--ease-out);
}
.chip:hover{ border-color:var(--cream-3); color:var(--cream); }
.chip.is-on{ background:var(--accent); border-color:var(--accent); color:#fff; }

.field-date input[type="date"]{ max-width:260px; color-scheme:dark; }

.avail-head{ display:flex; align-items:baseline; justify-content:space-between; gap:1rem; margin-bottom:1rem; flex-wrap:wrap; }
.avail-head h3{ font-size:1.4rem; }
.avail-day{ font-size:.72rem; letter-spacing:.14em; text-transform:uppercase; color:var(--accent); }

.slot-grid{ display:grid; grid-template-columns:repeat(auto-fill, minmax(98px,1fr)); gap:.6rem; }
.slot{
  display:flex; flex-direction:column; align-items:center; justify-content:center; gap:.25rem;
  min-height:66px; padding:.7rem .4rem; border-radius:10px;
  border:1px solid var(--line); background:rgba(245,238,226,.025);
  transition:all .4s var(--ease-out); text-align:center;
}
.slot-time{ font-family:var(--serif); font-size:1.1rem; color:var(--cream); line-height:1; }
.slot-meta{ font-size:.6rem; letter-spacing:.1em; text-transform:uppercase; color:var(--cream-3); }
.slot.is-free:hover, .slot.is-few:hover{ border-color:var(--gold); transform:translateY(-2px); }
.slot.is-few .slot-meta{ color:var(--gold); }
.slot.is-full{
  opacity:.42; cursor:not-allowed; background:transparent; border-style:dashed;
}
.slot.is-full .slot-time{ text-decoration:line-through; text-decoration-thickness:1px; }
.slot.is-selected{
  background:var(--accent); border-color:var(--accent);
  box-shadow:0 12px 30px -14px var(--accent);
}
.slot.is-selected .slot-time{ color:#fff; }
.slot.is-selected .slot-meta{ color:rgba(255,255,255,.82); }

.avail-legend{ display:flex; flex-wrap:wrap; gap:1.3rem; margin-top:1.1rem; font-size:.68rem; color:var(--cream-3); }
.avail-legend span{ display:inline-flex; align-items:center; gap:.45rem; }
.key{ width:8px; height:8px; border-radius:50%; display:inline-block; }
.key-free{ background:var(--olive); }
.key-few{ background:var(--gold); }
.key-full{ background:transparent; border:1px dashed var(--cream-3); }
.avail-note{ margin-top:1rem; font-size:.82rem; color:var(--cream-3); }

.tables-block h3{ font-size:1.4rem; margin-bottom:.7rem; }
.tables-hint{ font-size:.82rem; color:var(--cream-3); margin-bottom:1rem; }
.table-list{ list-style:none; padding:0; display:grid; gap:.45rem; }
.table-row{
  display:grid; grid-template-columns:1fr auto auto; gap:.9rem; align-items:center;
  padding:.75rem .95rem; border:1px solid var(--line-2); border-radius:9px;
  background:rgba(245,238,226,.02); transition:all .4s var(--ease-out);
}
.table-row .t-name{ font-family:var(--serif); font-size:1.05rem; color:var(--cream); }
.table-row .t-zone{ display:block; font-family:var(--sans); font-size:.66rem; letter-spacing:.12em; text-transform:uppercase; color:var(--cream-3); margin-top:.15rem; }
.table-row .t-seats{ font-size:.78rem; color:var(--cream-2); font-variant-numeric:tabular-nums; white-space:nowrap; }
.t-state{ font-size:.6rem; letter-spacing:.12em; text-transform:uppercase; padding:.25rem .6rem; border-radius:100px; white-space:nowrap; }
.t-state.free{ color:var(--olive); border:1px solid rgba(107,122,79,.45); }
.t-state.taken{ color:var(--cream-3); border:1px solid var(--line); opacity:.7; }
.t-state.small{ color:var(--cream-3); border:1px solid var(--line-2); opacity:.55; }
.t-state.pick{ color:#fff; background:var(--accent); border:1px solid var(--accent); }
.table-row.is-pick{ border-color:var(--accent); background:rgba(193,80,46,.08); }

.booking-form{ border:1px solid var(--line); border-radius:14px; padding:1.6rem; background:rgba(245,238,226,.02); }
.summary{ margin-bottom:1.4rem; padding-bottom:1.3rem; border-bottom:1px solid var(--line); }
.summary-empty{ font-size:.88rem; color:var(--cream-3); }
.summary-line{ display:flex; justify-content:space-between; gap:1rem; font-size:.86rem; padding:.3rem 0; }
.summary-line dt{ color:var(--cream-3); }
.summary-line dd{ margin:0; color:var(--cream); font-weight:500; text-align:right; }
.summary-title{ font-family:var(--serif); font-size:1.5rem; color:var(--gold); margin-bottom:.8rem; }

/* lista de espera */
.waitlist{
  margin-top:1.6rem; padding:1.2rem 1.3rem; border-radius:12px;
  border:1px solid rgba(217,165,102,.32); background:rgba(217,165,102,.06);
}
.waitlist[hidden]{ display:none; }
.waitlist h4{ font-family:var(--serif); font-size:1.2rem; color:var(--gold); }
.waitlist p{ font-size:.85rem; color:var(--cream-3); margin-top:.3rem; }
.waitlist-form{ display:flex; flex-wrap:wrap; gap:.6rem; margin-top:.9rem; }
.waitlist-form input{ flex:1 1 150px; min-width:0; font-size:.88rem; padding:.7rem .9rem; border-radius:8px; }
.waitlist-done{ color:var(--olive); font-size:.88rem; margin-top:.8rem; }
.waitlist-done[hidden]{ display:none; }

/* garantía en mesas grandes */
.guarantee{
  font-size:.8rem; color:var(--gold); line-height:1.5;
  padding:.75rem .9rem; border-radius:9px; margin-bottom:1.2rem;
  background:rgba(217,165,102,.08); border:1px solid rgba(217,165,102,.24);
}
.guarantee[hidden]{ display:none; }

/* acciones posteriores a reservar */
.after-book{ display:flex; flex-wrap:wrap; gap:.6rem; margin-top:1.1rem; justify-content:center; }
.after-book[hidden]{ display:none; }

/* gestionar una reserva existente */
.manage{ margin-top:3.4rem; padding-top:2.4rem; border-top:1px solid var(--line-2); }
.manage-inner{ max-width:620px; }
.manage h3{ font-size:1.5rem; }
.manage > .manage-inner > p{ font-size:.88rem; color:var(--cream-3); margin-top:.5rem; }
.manage-form{ display:flex; flex-wrap:wrap; gap:.6rem; margin-top:1rem; }
.manage-form input{
  flex:0 1 190px; font-size:.95rem; letter-spacing:.12em; text-transform:uppercase;
  padding:.75rem 1rem; border-radius:8px;
}
.manage-result{ margin-top:1.2rem; }
.manage-card{
  padding:1.1rem 1.2rem; border:1px solid var(--line); border-radius:12px;
  background:rgba(245,238,226,.02);
}
.manage-card h4{ font-family:var(--serif); font-size:1.35rem; color:var(--gold); margin-bottom:.5rem; }
.manage-card p{ font-size:.88rem; color:var(--cream-2); }
.manage-card .muted{ color:var(--cream-3); }
.manage-actions{ display:flex; gap:.6rem; margin-top:1rem; flex-wrap:wrap; }
.manage-msg{ font-size:.88rem; color:var(--cream-3); }
.manage-msg.ok{ color:var(--olive); }
.manage-msg.err{ color:var(--accent); }

/* =============================================================
   14.7 Panel del personal
   ============================================================= */
.staff[hidden]{ display:none; }
.staff-bar{ display:flex; flex-wrap:wrap; gap:1.2rem; align-items:end; margin-bottom:1.8rem; }
.staff-bar .field{ max-width:240px; }
.staff-stats{ display:grid; grid-template-columns:repeat(auto-fit,minmax(130px,1fr)); gap:.8rem; margin-bottom:1.8rem; }
.stat{
  padding:1rem 1.1rem; border:1px solid var(--line); border-radius:11px;
  background:rgba(245,238,226,.02);
}
.stat-n{ font-family:var(--serif); font-size:1.9rem; color:var(--gold); line-height:1; }
.stat-l{ font-size:.66rem; letter-spacing:.14em; text-transform:uppercase; color:var(--cream-3); margin-top:.4rem; }
.staff-table td{ font-size:.86rem; }
.staff-table .code{ font-family:ui-monospace, SFMono-Regular, Menlo, monospace; font-size:.8rem; color:var(--gold); }
.staff-empty{ padding:2rem 0; color:var(--cream-3); font-size:.9rem; }
.staff-wait{ margin-top:2.4rem; }
.staff-wait h3{ font-size:1.3rem; margin-bottom:.8rem; }
.staff-wait ul{ list-style:none; padding:0; display:grid; gap:.45rem; }
.staff-wait li{
  padding:.7rem .95rem; border:1px solid var(--line-2); border-radius:9px;
  font-size:.86rem; color:var(--cream-2);
}
.footer-staff{ margin-top:.7rem; font-size:.72rem; }
.footer-staff a{ color:var(--cream-3); }
.footer-staff a:hover{ color:var(--gold); }

/* =============================================================
   14.6 Asistente 24/7
   ============================================================= */
.assistant-fab{
  position:fixed; right:1.4rem; bottom:1.4rem; z-index:120;
  width:58px; height:58px; border-radius:100px;
  background:var(--accent); color:#fff;
  display:flex; align-items:center; justify-content:center;
  box-shadow:0 16px 38px -14px rgba(193,80,46,.9);
  transition:transform .5s var(--ease-out), background .5s var(--ease-out);
}
.assistant-fab svg{ width:24px; height:24px; fill:none; stroke:currentColor; stroke-width:1.6; stroke-linecap:round; stroke-linejoin:round; }
.assistant-fab:hover{ transform:translateY(-3px) scale(1.04); background:var(--accent-2); }
.assistant-fab[hidden]{ display:none; }
.fab-pulse{
  position:absolute; inset:0; border-radius:100px; border:1px solid var(--accent);
  animation:fabPulse 2.8s var(--ease-soft) infinite;
}
@keyframes fabPulse{ 0%{ transform:scale(1); opacity:.7; } 70%,100%{ transform:scale(1.5); opacity:0; } }

.assistant{
  position:fixed; right:1.4rem; bottom:1.4rem; z-index:130;
  width:min(384px, calc(100vw - 2rem));
  height:min(560px, calc(100dvh - 2.8rem));
  display:flex; flex-direction:column; overflow:hidden;
  background:var(--bg-2); border:1px solid var(--line); border-radius:18px;
  box-shadow:0 40px 80px -30px rgba(0,0,0,.9);
  animation:assistantIn .38s var(--ease-out);
}
.assistant[hidden]{ display:none; }
@keyframes assistantIn{ from{ opacity:0; transform:translateY(18px) scale(.98); } to{ opacity:1; transform:none; } }

.assistant-head{
  display:flex; align-items:center; justify-content:space-between; gap:1rem;
  padding:1rem 1.1rem; border-bottom:1px solid var(--line-2); flex-shrink:0;
  background:linear-gradient(180deg, rgba(193,80,46,.14), transparent);
}
.assistant-id{ display:flex; align-items:center; gap:.7rem; }
.assistant-avatar{
  width:36px; height:36px; border-radius:100px; flex-shrink:0;
  display:flex; align-items:center; justify-content:center;
  font-family:var(--serif); font-size:1.05rem; color:var(--gold);
  border:1px solid rgba(217,165,102,.4); background:rgba(217,165,102,.09);
}
.assistant-title{ font-size:.88rem; font-weight:500; color:var(--cream); }
.assistant-status{ font-size:.66rem; color:var(--cream-3); display:flex; align-items:center; gap:.35rem; margin-top:.1rem; }
.assistant-status .dot{ width:6px; height:6px; border-radius:50%; background:var(--olive); }
.assistant-close{ width:32px; height:32px; border-radius:100px; display:flex; align-items:center; justify-content:center; color:var(--cream-3); flex-shrink:0; }
.assistant-close:hover{ color:var(--cream); background:rgba(245,238,226,.06); }
.assistant-close svg{ width:15px; height:15px; fill:none; stroke:currentColor; stroke-width:1.8; stroke-linecap:round; }

.assistant-log{ flex:1; overflow-y:auto; padding:1.1rem; display:flex; flex-direction:column; gap:.7rem; }
.msg{ max-width:86%; padding:.7rem .95rem; border-radius:14px; font-size:.86rem; line-height:1.55; animation:msgIn .3s var(--ease-out); }
@keyframes msgIn{ from{ opacity:0; transform:translateY(6px); } to{ opacity:1; transform:none; } }
.msg-bot{ align-self:flex-start; background:var(--bg-3); color:var(--cream-2); border-bottom-left-radius:4px; }
.msg-me{ align-self:flex-end; background:var(--accent); color:#fff; border-bottom-right-radius:4px; }
.msg strong{ color:var(--cream); font-weight:500; }
.msg-bot strong{ color:var(--gold); }
.msg-typing{ display:flex; gap:4px; align-items:center; padding:.85rem .95rem; }
.msg-typing i{ width:6px; height:6px; border-radius:50%; background:var(--cream-3); animation:typing 1.3s infinite; }
.msg-typing i:nth-child(2){ animation-delay:.18s; }
.msg-typing i:nth-child(3){ animation-delay:.36s; }
@keyframes typing{ 0%,60%,100%{ opacity:.25; transform:translateY(0); } 30%{ opacity:1; transform:translateY(-3px); } }

.assistant-chips{ display:flex; flex-wrap:wrap; gap:.4rem; padding:0 1.1rem .8rem; flex-shrink:0; }
.a-chip{
  padding:.45rem .8rem; border-radius:100px; border:1px solid var(--line);
  font-size:.72rem; color:var(--cream-2); background:rgba(245,238,226,.03);
  transition:all .4s var(--ease-out);
}
.a-chip:hover{ border-color:var(--gold); color:var(--gold); }

.assistant-form{ display:flex; gap:.5rem; padding:.85rem 1.1rem 1.1rem; border-top:1px solid var(--line-2); flex-shrink:0; }
.assistant-form input{
  flex:1; min-width:0; font-size:.85rem; padding:.7rem .9rem; border-radius:100px;
  background:rgba(245,238,226,.05); border:1px solid var(--line); color:var(--cream);
}
.assistant-form input:focus{ outline:none; border-color:var(--gold); }
.assistant-form button{
  width:42px; height:42px; flex-shrink:0; border-radius:100px; background:var(--accent); color:#fff;
  display:flex; align-items:center; justify-content:center; transition:background .4s var(--ease-out);
}
.assistant-form button:hover{ background:var(--accent-2); }
.assistant-form button svg{ width:17px; height:17px; fill:none; stroke:currentColor; stroke-width:2; stroke-linecap:round; stroke-linejoin:round; }

/* =============================================================
   15. Encontrarnos + footer
   ============================================================= */
.info{ display:grid; gap:2.6rem; }
.info-block h3{ font-size:1.4rem; margin-bottom:.9rem; }
.info-block p{ color:var(--cream-3); font-size:.95rem; margin-bottom:.7rem; }
.info-block a{ color:var(--cream-2); }

.footer{ border-top:1px solid var(--line-2); padding-block:3rem 2.4rem; }
.footer-inner{ display:grid; gap:1.6rem; align-items:end; }
.footer-mark{
  font-family:var(--serif); font-size:1.5rem; letter-spacing:.3em; text-indent:.3em;
  text-transform:uppercase; color:var(--cream);
}
.footer-meta p{ font-size:.8rem; color:var(--cream-3); }
.footer-credits{ font-size:.78rem; }
.credits-panel{ margin-top:1rem; font-size:.72rem; color:var(--cream-3); line-height:1.8; max-width:52ch; }
.credits-panel a{ color:var(--cream-2); text-decoration:underline; text-underline-offset:2px; }

/* =============================================================
   16. Responsive
   ============================================================= */
@media (min-width:720px){
  .pillars{ grid-template-columns:repeat(3,1fr); gap:2rem; }
  .quotes{ grid-template-columns:repeat(3,1fr); }
  .info{ grid-template-columns:repeat(3,1fr); }
  .form-row{ grid-template-columns:1fr 1fr; }
  .form-row:nth-of-type(2){ grid-template-columns:1.2fr 1fr 1fr; }
  .spaces{ grid-template-columns:repeat(3,1fr); }
  .footer-inner{ grid-template-columns:auto 1fr auto; }
  .hero-copy{ padding-bottom:2.5rem; }
}
@media (min-width:720px){
  .booking-row{ grid-template-columns:1fr auto; align-items:end; }
}
@media (min-width:960px){
  .menu{ grid-template-columns:1.35fr .9fr; }
  .menu-visual{ display:block; }
  .booking{ grid-template-columns:1.3fr .82fr; gap:3rem; }
  .booking-form{ position:sticky; top:104px; }
}
@media (max-width:719px){
  .facade-mass{ top:16%; height:20%; }
  .sign-word{ letter-spacing:.1em; text-indent:.1em; }
  .facade-slat{ top:37%; height:7%; }
  .lamp:nth-child(2), .lamp:nth-child(4){ display:none; }
  .table-set:nth-child(2), .table-set:nth-child(4){ display:none; }
  .shelf{ display:none; }
  .hero-foot{ font-size:.62rem; }
  .plate-frame{ position:static; }
}

/* =============================================================
   16.5 Impresión — la carta y el parte del día sobre papel
   ============================================================= */
@media print{
  @page{ margin:18mm 16mm; }

  /* fondo blanco: no gastar tinta en el negro de pantalla */
  body.print-menu, body.print-staff{
    background:#fff !important; color:#1a1410 !important;
  }
  body.print-menu *, body.print-staff *{
    background:transparent !important; box-shadow:none !important;
    color:#1a1410 !important; border-color:#c9bfae !important;
  }

  /* se imprime solo lo que toca */
  body.print-menu > *:not(#print-root),
  body.print-staff > *:not(#print-root){ display:none !important; }
  #print-root{ display:block !important; }

  .print-head{ text-align:center; margin-bottom:14mm; }
  .print-head .print-mark{
    font-family:'Cormorant Garamond',serif; font-size:30pt; letter-spacing:.34em;
    text-indent:.34em; text-transform:uppercase;
  }
  .print-head .print-sub{ font-size:9pt; letter-spacing:.18em; text-transform:uppercase; margin-top:4mm; }
  .print-head .print-rule{ width:44mm; height:1px; background:#1a1410 !important; margin:6mm auto 0; }

  .print-group{ margin-bottom:9mm; break-inside:avoid; }
  .print-group-title{
    font-size:8.5pt; letter-spacing:.22em; text-transform:uppercase;
    padding-bottom:2mm; border-bottom:1px solid #c9bfae; margin-bottom:3mm;
  }
  .print-dish{ display:flex; justify-content:space-between; gap:8mm; margin-bottom:3.4mm; break-inside:avoid; }
  .print-dish-name{ font-family:'Cormorant Garamond',serif; font-size:13pt; line-height:1.2; }
  .print-dish-desc{ font-size:9pt; line-height:1.4; margin-top:.8mm; }
  .print-dish-price{ font-size:10.5pt; white-space:nowrap; font-variant-numeric:tabular-nums; }
  .print-foot{ margin-top:12mm; padding-top:4mm; border-top:1px solid #c9bfae; font-size:8.5pt; text-align:center; }

  .print-table{ width:100%; border-collapse:collapse; font-size:9.5pt; }
  .print-table th{
    text-align:left; font-size:7.5pt; letter-spacing:.14em; text-transform:uppercase;
    border-bottom:1px solid #1a1410; padding:2mm 2mm;
  }
  .print-table td{ padding:2.4mm 2mm; border-bottom:1px solid #ddd4c4; vertical-align:top; }
  .print-stats{ margin:0 0 8mm; font-size:9.5pt; }
}
#print-root{ display:none; }

/* =============================================================
   17. Reduced motion — solo lo intrusivo
   ============================================================= */
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
  .sign-sweep{ animation:none; opacity:0; }
  .scroll-rule::after{ animation:none; }
  .hero-hours .dot{ animation:none; }
  .candle, .lamp b::after{ animation:none; }
}
