/* ==========================================================================
   Donde Aquellos — hoja de estilo
   Identidad: rojo y amarillo del logotipo, sobre fondo oscuro
   ========================================================================== */

/* ─────────────────────────── TOKENS ─────────────────────────── */
:root{
  /* Fondo oscuro, nunca negro puro: hace resaltar la comida */
  --bg:        #14100F;
  --bg-2:      #1B1615;
  --bg-3:      #241E1C;
  --bg-4:      #2E2724;

  /* Texto crema, nunca blanco puro */
  --cream:     #FFF7E9;
  --cream-2:   #E0D5C8;
  --cream-3:   #9C9089;

  /* Colores del logotipo: rojo de marca + amarillo del sello.
     Los nombres --ember/--gold se conservan para no romper referencias. */
  --ember:     #E01B24;   /* rojo Donde Aquellos */
  --ember-2:   #F4444C;   /* rojo claro, para hover */
  --ember-3:   #A8131A;   /* rojo profundo */
  --gold:      #FFC916;   /* amarillo del sello */

  --line:      rgba(255,247,233,.12);
  --line-2:    rgba(255,247,233,.22);

  --font-display: "Bricolage Grotesque", "Segoe UI", system-ui, sans-serif;
  --font-serif:   "Instrument Serif", Georgia, "Times New Roman", serif;
  --font-body:    "Inter", "Segoe UI", system-ui, -apple-system, sans-serif;

  --ease:      cubic-bezier(.22,.61,.36,1);
  --ease-out:  cubic-bezier(.16,1,.3,1);

  --maxw:      1240px;
  --pad:       clamp(1.25rem, 5vw, 4rem);
  --nav-h:     76px;

  --r-sm: 6px;
  --r:    12px;
  --r-lg: 20px;
}

/* ─────────────────────────── RESET ─────────────────────────── */
*,*::before,*::after{ box-sizing:border-box; }

html{
  overflow-x: clip;              /* clip (no hidden): no rompe position:sticky */
  scroll-behavior: smooth;
  scroll-padding-top: calc(var(--nav-h) + 16px);
  -webkit-text-size-adjust:100%;
}
@media (prefers-reduced-motion: reduce){
  html{ scroll-behavior:auto; }
}

body{
  margin:0;
  overflow-x: clip;
  background: var(--bg);
  color: var(--cream);
  font-family: var(--font-body);
  font-size: 16px;
  line-height: 1.6;
  -webkit-font-smoothing: antialiased;
  text-rendering: optimizeLegibility;
}

img,svg,iframe{ display:block; max-width:100%; }
a{ color:inherit; text-decoration:none; }
ul,ol{ margin:0; padding:0; list-style:none; }
h1,h2,h3,h4,p,dl,dd{ margin:0; }
button{ font:inherit; color:inherit; background:none; border:0; cursor:pointer; }

::selection{ background: var(--ember); color:#fff; }

:focus-visible{
  outline: 2px solid var(--gold);
  outline-offset: 3px;
  border-radius: 3px;
}

.skip-link{
  position:absolute; left:-9999px; top:0; z-index:9999;
  background:var(--ember); color:#fff; padding:.8rem 1.2rem; border-radius:0 0 var(--r) 0;
  font-weight:600;
}
.skip-link:focus{ left:0; }

/* ─────────────────────────── TIPOGRAFÍA ─────────────────────────── */
.kicker{
  font-family: var(--font-body);
  font-size: .72rem;
  font-weight: 600;
  letter-spacing: .2em;
  text-transform: uppercase;
  color: var(--cream-3);
  display:flex; align-items:center; gap:.6rem;
  margin-bottom: 1.4rem;
}
.kicker-dot{
  width:6px; height:6px; border-radius:50%;
  background: var(--ember);
  box-shadow: 0 0 0 4px rgba(224,27,36,.18);
  flex:none;
}

.h2{
  font-family: var(--font-display);
  font-weight: 800;
  font-size: clamp(2.1rem, 5.4vw, 4.1rem);
  line-height: 1.02;
  letter-spacing: -.03em;
  text-wrap: balance;
  margin-bottom: 1.5rem;
}
.h2 em,
.hero-title em,
.cierre-title em,
.footer-claim em{
  font-family: var(--font-serif);
  font-style: italic;
  font-weight: 400;
  letter-spacing: -.01em;
  color: var(--gold);
}

.lead{
  font-size: clamp(1.02rem, 1.55vw, 1.22rem);
  line-height: 1.62;
  color: var(--cream-2);
  max-width: 54ch;
}
.body{
  font-size: 1rem;
  line-height: 1.75;
  color: var(--cream-2);
  max-width: 54ch;
  margin-top: 1.1rem;
}

.link{
  color: var(--gold);
  border-bottom: 1px solid rgba(255,201,22,.4);
  transition: color .25s var(--ease), border-color .25s var(--ease);
}
.link:hover{ color: var(--ember-2); border-color: var(--ember-2); }

/* ─────────────────────────── LAYOUT ─────────────────────────── */
.section{
  position: relative;
  padding-block: clamp(4.5rem, 11vw, 9rem);
  /* NO overflow:hidden — cortaría los halos difuminados */
}
/* Sin filter: blur(). Un degradado radial con parada intermedia ya es suave,
   y un blur grande obliga al navegador a repintar y desenfocar la capa
   entera en cada frame de scroll — es lo que traba el desplazamiento. */
.section-halo{
  position:absolute;
  inset: -30% -10% -20% -10%;
  background: radial-gradient(42% 38% at 50% 50%,
              rgba(224,27,36,.20),
              rgba(224,27,36,.08) 45%,
              transparent 72%);
  pointer-events:none;
  z-index:0;
}
.section-head{ max-width: 62ch; margin-bottom: clamp(2.5rem,5vw,4rem); position:relative; z-index:1; }
.section-head-center{ margin-inline:auto; text-align:center; }
.section-head-center .kicker{ justify-content:center; }
.section-head-center .lead{ margin-inline:auto; }

/* ─────────────────────────── GRANO ─────────────────────────── */
.grain{
  position: fixed; inset:0; z-index: 400;
  pointer-events:none; opacity:.42; 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='.82' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='160' height='160' filter='url(%23n)' opacity='.5'/%3E%3C/svg%3E");
}

/* ─────────────────────── PLACEHOLDERS DE IMAGEN ───────────────────────
   Bloque gris cálido que marca DÓNDE va cada foto y de QUÉ TAMAÑO.
   Para sustituirlo por una foto real:
     <div class="ph ph-hero" ...></div>
   se cambia por:
     <img class="ph-img" src="assets/img/hero.webp" alt="descripción">
   ------------------------------------------------------------------ */
.ph{
  position: relative;
  width:100%; height:100%;
  display:flex; flex-direction:column;
  align-items:center; justify-content:center;
  gap:.85rem; padding: clamp(1rem,3vw,2rem);
  text-align:center;
  background-color:#272120;
  background-image:
    repeating-linear-gradient(45deg,
      rgba(246,238,224,.028) 0 12px,
      rgba(246,238,224,0)   12px 24px);
  border: 1px dashed var(--line-2);
  border-radius: var(--r);
  overflow:hidden;
}
.ph::before{
  content: attr(data-ph-label);
  font-size: clamp(.74rem,1.1vw,.86rem);
  line-height:1.5;
  font-weight:500;
  color: var(--cream-2);
  max-width: 34ch;
}
.ph::after{
  content: attr(data-ph-size);
  font-size:.64rem;
  font-weight:600;
  letter-spacing:.16em;
  text-transform:uppercase;
  color: var(--ember-2);
  border:1px solid rgba(244,68,76,.45);
  border-radius:999px;
  padding:.32rem .7rem;
  white-space:nowrap;
}
.ph-img{ width:100%; height:100%; object-fit:cover; border-radius: var(--r); }

/* El hueco del hero manda su etiqueta arriba a la derecha para no
   pelearse con el titular (abajo a la izquierda) ni con la tarjeta de estado. */
.ph-hero{
  border-radius:0; border:0; background-color:#1E1918;
  justify-content: flex-start;
  align-items: flex-end;
  padding: calc(var(--nav-h) + 1.6rem) var(--pad) 0;
  gap:.55rem;
}
.ph-hero::before{
  font-size:.8rem; max-width:26ch; text-align:right;
  color: rgba(214,198,175,.5);
}
.ph-hero::after{ opacity:.5; }
.ph-portrait{ aspect-ratio: 4/5; }
.ph-sq{ aspect-ratio: 1/1; }
.ph-dish{ aspect-ratio:1/1; border-radius: var(--r); }

/* ─────────────────────────── SPLASH ─────────────────────────── */
.splash{
  position: fixed; inset:0; z-index: 900;
  background: var(--bg);
  display:grid; place-items:center;
  /* Red de seguridad 1: CSS lo esconde a los 4.5s aunque falle el JS */
  animation: splashSafety .01s 4.5s forwards;
}
.splash.is-out{
  opacity:0; pointer-events:none;
  transition: opacity .7s var(--ease-out), clip-path .9s var(--ease-out);
  clip-path: inset(0 0 100% 0);
}
@keyframes splashSafety{
  to{ opacity:0; pointer-events:none; clip-path: inset(0 0 100% 0); }
}
.splash-inner{ display:flex; flex-direction:column; align-items:center; gap:1.4rem; }
.splash-mark{
  font-family: var(--font-display);
  font-weight:800; font-size: 2.4rem; letter-spacing:-.04em;
  color: var(--cream);
}
.splash-line{ width:120px; height:2px; background: var(--line); display:block; overflow:hidden; border-radius:2px; }
.splash-line i{
  display:block; height:100%; width:100%;
  background: linear-gradient(90deg, var(--ember), var(--gold));
  transform-origin:left; animation: splashBar 1.5s var(--ease-out) forwards;
}
@keyframes splashBar{ from{ transform:scaleX(0);} to{ transform:scaleX(1);} }

/* ─────────────────────────── NAV ─────────────────────────── */
.nav{
  position: fixed; top:0; left:0; right:0; z-index: 500;
  transition: background .4s var(--ease), border-color .4s var(--ease);
  border-bottom: 1px solid transparent;
}
/* Fondo sólido, sin backdrop-filter. La cabecera está fija: con desenfoque
   el navegador tiene que volver a desenfocar lo que hay detrás en CADA frame
   de scroll, y en un celular modesto eso se siente como tirones. */
.nav.is-stuck{
  background: rgba(20,16,15,.94);
  border-bottom-color: var(--line);
}
.nav-progress{
  position:absolute; left:0; bottom:-1px; height:2px; width:100%;
  transform: scaleX(0); transform-origin:left;
  background: linear-gradient(90deg, var(--ember), var(--gold));
}
.nav-inner{
  max-width: var(--maxw); margin-inline:auto;
  padding-inline: var(--pad);
  height: var(--nav-h);
  display:flex; align-items:center; justify-content:space-between; gap:1.5rem;
}

.brand{ display:flex; align-items:center; gap:.75rem; flex:none; }
/* Sello redondo amarillo con el gallo, como el logotipo del negocio. */
.brand-mark{
  width:44px; height:44px; flex:none;
  display:grid; place-items:center;
  border-radius:50%;
  background: var(--gold);
  border:2px solid #14100F;
  box-shadow: 0 5px 16px rgba(224,27,36,.34);
}
.brand-mark svg{ width:27px; height:27px; }
.brand-text{ display:flex; flex-direction:column; line-height:1.15; }
.brand-name{ font-family: var(--font-display); font-weight:600; font-size:1rem; letter-spacing:-.02em; }
.brand-sub{ font-size:.66rem; letter-spacing:.13em; text-transform:uppercase; color: var(--cream-3); }

.nav-links{ display:flex; gap:1.7rem; }
.nav-links a{
  font-size:.87rem; font-weight:500; color: var(--cream-2);
  position:relative; padding-block:.4rem;
  transition: color .25s var(--ease);
}
.nav-links a::after{
  content:""; position:absolute; left:0; bottom:0; height:1px; width:100%;
  background: var(--ember); transform: scaleX(0); transform-origin:right;
  transition: transform .35s var(--ease-out);
}
.nav-links a:hover{ color: var(--cream); }
.nav-links a:hover::after{ transform: scaleX(1); transform-origin:left; }

.nav-actions{ display:flex; align-items:center; gap:.9rem; flex:none; }

.live-pill{
  display:inline-flex; align-items:center; gap:.45rem;
  font-size:.72rem; font-weight:600; letter-spacing:.06em;
  padding:.34rem .7rem; border-radius:999px;
  border:1px solid var(--line-2); color: var(--cream-2);
  white-space:nowrap;
}
.live-pill.is-open{ color:#9BE29B; border-color: rgba(155,226,155,.34); }
.live-pill.is-closed{ color: var(--cream-3); }

.live-dot{
  width:7px; height:7px; border-radius:50%; flex:none;
  background: var(--cream-3);
}
/* El punto solo se pone verde cuando de verdad está abierto. */
.is-open .live-dot{ background:#5FD35F; animation: pulse 2.2s ease-in-out infinite; }
@keyframes pulse{
  0%,100%{ box-shadow: 0 0 0 0 rgba(95,211,95,.5); }
  50%    { box-shadow: 0 0 0 6px rgba(95,211,95,0); }
}
@media (prefers-reduced-motion: reduce){
  .is-open .live-dot{ animation:none; }
}

.nav-toggle{ display:none; width:40px; height:40px; align-items:center; justify-content:center; flex-direction:column; gap:5px; }
.nav-toggle span{ display:block; width:20px; height:2px; background: var(--cream); border-radius:2px; transition: transform .3s var(--ease), opacity .3s var(--ease); }
.nav-toggle[aria-expanded="true"] span:first-child{ transform: translateY(3.5px) rotate(45deg); }
.nav-toggle[aria-expanded="true"] span:last-child{ transform: translateY(-3.5px) rotate(-45deg); }

.nav-mobile{
  display:none; flex-direction:column;
  padding: 1rem var(--pad) 2rem;
  background: rgba(20,16,15,.97);
  border-top:1px solid var(--line);
}
.nav-mobile a{
  padding: .95rem 0; font-size:1.05rem; font-weight:500;
  border-bottom:1px solid var(--line);
}
.nav-mobile-cta{ color: var(--ember-2); font-weight:600; border-bottom:0 !important; }

/* ─────────────────────────── BOTONES ─────────────────────────── */
.btn{
  display:inline-flex; align-items:center; justify-content:center; gap:.55rem;
  font-family: var(--font-body);
  font-weight:600; font-size:.92rem; letter-spacing:.01em;
  padding: .88rem 1.5rem;
  border-radius: 999px;
  border:1px solid transparent;
  cursor:pointer;
  white-space:nowrap;
  transition: transform .28s var(--ease-out), background .28s var(--ease),
              border-color .28s var(--ease), box-shadow .28s var(--ease), color .28s var(--ease);
  will-change: transform;
}
.btn-primary{
  background: var(--ember); color:#fff;
  box-shadow: 0 8px 26px rgba(224,27,36,.3);
}
.btn-primary:hover{
  background: var(--ember-2);
  box-shadow: 0 12px 34px rgba(224,27,36,.42);
  transform: translateY(-2px);
}
.btn-ghost{
  border-color: var(--line-2); color: var(--cream);
  background: rgba(246,238,224,.03);
}
.btn-ghost:hover{
  border-color: var(--cream-2);
  background: rgba(246,238,224,.08);
  transform: translateY(-2px);
}
.btn-lg{ padding: 1.05rem 1.9rem; font-size:1rem; }
.btn-sm{ padding: .62rem 1.15rem; font-size:.83rem; }
.btn-block{ width:100%; margin-top:auto; }
.btn-arrow{ transition: transform .3s var(--ease-out); }
.btn:hover .btn-arrow{ transform: translateX(4px); }
/* Etiqueta corta del CTA de cabecera: solo aparece en móvil estrecho */
.cta-corto{ display:none; }

/* ─────────────────────────── HERO ─────────────────────────── */
.hero{
  position: relative;
  min-height: 100vh;
  min-height: 100svh;          /* evita el salto de la barra de Safari iOS */
  display:flex; flex-direction:column; justify-content:flex-end;
  padding: calc(var(--nav-h) + 3rem) var(--pad) clamp(3rem,7vw,5rem);
  overflow:hidden;
  isolation:isolate;
}
.hero-media{ position:absolute; inset:0; z-index:-2; }

/* Fondo de fuego lento. El desenfoque viene ya rasterizado dentro del PNG,
   así que el navegador solo pinta una imagen: cero coste durante el scroll.
   La fuente editable es assets/fuego-src.html. */
.hero-fuego{
  position:absolute; inset:0;
  background: var(--bg) url("assets/img/fondo-fuego.png") center bottom / cover no-repeat;
}

/* Velo: oscurece la izquierda (donde va el texto) y deja ver el fuego a la
   derecha y abajo. La legibilidad manda sobre el efecto. */
.hero-tint{
  position:absolute; inset:0;
  background:
    linear-gradient(to right,
      rgba(20,16,15,.93) 0%, rgba(20,16,15,.66) 36%,
      rgba(20,16,15,.2) 68%, transparent 100%),
    linear-gradient(to top, rgba(20,16,15,.5) 0%, transparent 42%);
}
/* Resplandor de marca que respira.
   Se anima SOLO transform y opacity sobre una capa cuya pintura es estática
   (degradado suave, sin filter). Así el navegador la compone en la GPU y el
   scroll no tiembla. */
.hero-ember{
  position:absolute; left:50%; bottom:-28%;
  width: min(120vw, 1500px); aspect-ratio:2/1;
  transform: translate3d(-50%,0,0);
  background: radial-gradient(50% 50% at 50% 50%,
              rgba(224,27,36,.46),
              rgba(224,27,36,.20) 32%,
              rgba(255,201,22,.10) 52%,
              transparent 74%);
  will-change: transform, opacity;
  animation: emberBreath 9s ease-in-out infinite;
  pointer-events:none;
}
@keyframes emberBreath{
  0%,100%{ opacity:.42; transform: translate3d(-50%,0,0) scale(1); }
  50%    { opacity:.68; transform: translate3d(-50%,0,0) scale(1.07); }
}
@media (prefers-reduced-motion: reduce){
  .hero-ember{ animation:none; }
}

.hero-inner{
  position:relative; z-index:2;
  width:100%; max-width: var(--maxw); margin-inline:auto;
}
.hero-title{
  font-family: var(--font-display);
  font-weight:800;
  font-size: clamp(2.6rem, 7.4vw, 6.2rem);
  line-height: .98;
  letter-spacing: -.04em;
  text-wrap: balance;
  max-width: 16ch;
  margin-bottom: 1.5rem;
}
.hero-sub{
  font-size: clamp(1.02rem, 1.7vw, 1.28rem);
  line-height:1.6;
  color: var(--cream-2);
  max-width: 46ch;
  margin-bottom: 2.2rem;
}
.hero-actions{ display:flex; flex-wrap:wrap; gap:.85rem; margin-bottom:1.6rem; }
.hero-note{
  font-size:.85rem; color: var(--cream-3);
  display:inline-flex; align-items:center; gap:.55rem;
  max-width:46ch;
}
.hero-note::before{
  content:""; width:22px; height:1px; background: var(--ember); flex:none;
}

.hero-status{
  position:absolute; right: var(--pad); bottom: clamp(3rem,7vw,5rem); z-index:3;
  width: 270px;
  padding: 1.25rem 1.35rem;
  border-radius: var(--r-lg);
  border:1px solid var(--line-2);
  background: rgba(36,30,28,.8);
  box-shadow: 0 20px 50px rgba(0,0,0,.45);
}
@supports (backdrop-filter: blur(16px)){
  .hero-status{ background: rgba(36,30,28,.55); backdrop-filter: blur(18px) saturate(140%); }
}
.hero-status-top{ display:flex; align-items:center; gap:.55rem; margin-bottom:.35rem; }
.hero-status-top strong{ font-size:.95rem; font-weight:600; }
.hero-status-sub{ font-size:.78rem; color: var(--cream-3); margin-bottom:.9rem; }
.hero-status-row{
  display:flex; justify-content:space-between; gap:1rem;
  font-size:.8rem; color: var(--cream-2);
  padding-top:.8rem; border-top:1px solid var(--line);
}
.hero-status-row span:last-child{ color: var(--cream); font-weight:600; }

.hero-scroll{
  position:absolute; left:50%; bottom:1.4rem; transform:translateX(-50%); z-index:3;
  width:26px; height:42px; border:1px solid var(--line-2); border-radius:999px;
  display:grid; place-items:start center; padding-top:7px;
}
.hero-scroll span{
  width:3px; height:8px; border-radius:2px; background: var(--ember);
  animation: scrollHint 1.9s ease-in-out infinite;
}
@keyframes scrollHint{
  0%,100%{ transform: translateY(0); opacity:1; }
  60%    { transform: translateY(14px); opacity:0; }
}
@media (prefers-reduced-motion: reduce){ .hero-scroll span{ animation:none; } }

/* ─────────────────────────── CONFIANZA ─────────────────────────── */
.trust{
  border-block:1px solid var(--line);
  background: var(--bg-2);
}
.trust-inner{
  max-width: var(--maxw); margin-inline:auto; padding: clamp(2rem,4vw,3rem) var(--pad);
  display:grid; grid-template-columns: repeat(4, 1fr); gap: clamp(1.5rem,3vw,2.5rem);
}
.trust-item{ display:flex; flex-direction:column; gap:.4rem; }
.trust-num{
  font-family: var(--font-display); font-weight:800;
  font-size: clamp(1.7rem,3.4vw,2.6rem); line-height:1;
  letter-spacing:-.03em; color: var(--gold);
}
.trust-lab{ font-size:.82rem; color: var(--cream-3); line-height:1.45; max-width:24ch; }

/* ─────────────────────────── EL SAZÓN ─────────────────────────── */
.sazon-inner{
  position:relative; z-index:1;
  max-width: var(--maxw); margin-inline:auto; padding-inline: var(--pad);
  display:grid; grid-template-columns: minmax(0,.85fr) minmax(0,1.15fr);
  gap: clamp(2.5rem,6vw,5.5rem); align-items:start;
}
.sazon-media{ position:sticky; top: calc(var(--nav-h) + 2rem); }
.sazon-cap{
  margin-top:.9rem; font-size:.78rem; color: var(--cream-3);
  font-style:italic; line-height:1.5;
}
.pillars{
  display:grid; gap:1.6rem; margin-top: clamp(2.2rem,4vw,3rem);
  border-top:1px solid var(--line); padding-top: clamp(2rem,3.5vw,2.6rem);
}
.pillar{ display:grid; grid-template-columns: auto 1fr; gap: 0 1.1rem; align-items:start; }
.pillar-num{
  font-family: var(--font-display); font-weight:800; font-size:.8rem;
  color: var(--ember); letter-spacing:.04em;
  padding-top:.22rem; grid-row: span 2;
}
.pillar h3{ font-family: var(--font-display); font-weight:600; font-size:1.08rem; letter-spacing:-.01em; margin-bottom:.28rem; }
.pillar p{ font-size:.92rem; color: var(--cream-3); line-height:1.6; max-width:44ch; }

/* ─────────────────────────── LA CARTA ─────────────────────────── */
.carta{ background: var(--bg-2); border-block:1px solid var(--line); }
.carta-inner{ max-width: var(--maxw); margin-inline:auto; padding-inline: var(--pad); }

/* ── Acordeón de la carta ──
   Hecho con <details>/<summary> nativos: abre y cierra sin una línea de JS,
   funciona con teclado y lo leen bien los lectores de pantalla. */
.carta-group{ border-top:1px solid var(--line); }
.carta-group:last-of-type{ border-bottom:1px solid var(--line); }

.carta-cat{
  display:flex; align-items:center; gap:1rem;
  padding: 1.3rem .2rem;
  cursor:pointer;
  list-style:none;                      /* quita el triangulito por defecto */
  font-family: var(--font-body);
  font-size:.74rem; font-weight:600; letter-spacing:.2em; text-transform:uppercase;
  color: var(--ember-2);
  transition: color .25s var(--ease);
  -webkit-tap-highlight-color: transparent;
}
.carta-cat::-webkit-details-marker{ display:none; }   /* Safari */
.carta-cat:hover{ color: var(--gold); }

.carta-cat-nom{ flex:none; }
.carta-cat-n{
  flex:none;
  font-size:.62rem; font-weight:700; letter-spacing:.06em;
  color: var(--cream-3);
  border:1px solid var(--line-2);
  border-radius:999px; padding:.16rem .52rem;
}
.carta-cat-linea{ flex:1; height:1px; background: var(--line); display:block; }

/* Chevron: apunta abajo cerrado, arriba abierto. */
.carta-cat-ico{
  flex:none; width:9px; height:9px;
  border-right:2px solid currentColor;
  border-bottom:2px solid currentColor;
  transform: translateY(-3px) rotate(45deg);
  transition: transform .32s var(--ease-out);
}
.carta-group[open] > .carta-cat .carta-cat-ico{
  transform: translateY(2px) rotate(-135deg);
}

.carta-group .menu{ padding-bottom: 1.5rem; }
.carta-group[open] .menu{ animation: abrirCarta .38s var(--ease-out); }
@keyframes abrirCarta{
  from{ opacity:0; transform: translateY(-8px); }
  to  { opacity:1; transform:none; }
}

.menu-row{
  display:flex; align-items:baseline; gap:1.5rem;
  padding: 1.15rem 1rem 1.15rem 0;
  border-bottom:1px solid var(--line);
  cursor: default;
  position:relative;
  transition: padding-left .35s var(--ease-out), background .35s var(--ease);
}
.menu-row::before{
  content:""; position:absolute; left:-.6rem; top:50%; transform: translateY(-50%) scaleY(0);
  width:3px; height:62%; border-radius:2px;
  background: linear-gradient(180deg, var(--ember), var(--gold));
  transition: transform .35s var(--ease-out);
}
.menu-row:hover{ padding-left:1.1rem; background: rgba(246,238,224,.022); }
.menu-row:hover::before{ transform: translateY(-50%) scaleY(1); }

.menu-main{ flex:1; min-width:0; display:flex; flex-direction:column; gap:.22rem; }
.menu-name{
  font-family: var(--font-display); font-weight:600;
  font-size: clamp(1.02rem,1.7vw,1.22rem); letter-spacing:-.015em;
  display:flex; align-items:center; gap:.7rem; flex-wrap:wrap;
}
.menu-desc{ font-size:.88rem; color: var(--cream-3); line-height:1.5; }
.menu-price{
  font-family: var(--font-display); font-weight:800;
  font-size: clamp(1.02rem,1.7vw,1.22rem); letter-spacing:-.02em;
  color: var(--cream); flex:none;
  font-variant-numeric: tabular-nums;
}
.menu-row.is-star .menu-price{ color: var(--gold); }
.tag{
  font-family: var(--font-body); font-style:normal;
  font-size:.6rem; font-weight:700; letter-spacing:.14em; text-transform:uppercase;
  color: var(--ember-2);
  border:1px solid rgba(244,68,76,.45);
  border-radius:999px; padding:.2rem .55rem;
  white-space:nowrap;
}
.carta-foot{ font-size:.92rem; color: var(--cream-3); margin-top: clamp(1.8rem,3.5vw,2.6rem); }

/* Preview flotante (efecto firma de la carta) */
.dish-preview{
  position: fixed; top:0; left:0; z-index: 380;
  width: 230px;
  pointer-events:none;
  opacity:0;
  transform: translate3d(-9999px,-9999px,0);
  transition: opacity .3s var(--ease-out);
}
.dish-preview.is-on{ opacity:1; }
.dish-preview-inner{
  border-radius: var(--r);
  overflow:hidden;
  box-shadow: 0 26px 60px rgba(0,0,0,.6);
  rotate: -3deg;
}
@media (hover:none), (max-width: 900px){
  .dish-preview{ display:none; }
}

/* ─────────────────────────── COMBOS ─────────────────────────── */
.combos-inner{ position:relative; z-index:1; max-width: var(--maxw); margin-inline:auto; padding-inline: var(--pad); }
.combo-grid{
  display:grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(1rem,2.2vw,1.6rem);
  align-items:stretch;
}
.combo{
  position:relative;
  display:flex; flex-direction:column;
  padding: clamp(1.6rem,3vw,2.2rem);
  border-radius: var(--r-lg);
  border:1px solid var(--line);
  background: var(--bg-3);
  transition: transform .4s var(--ease-out), border-color .4s var(--ease), box-shadow .4s var(--ease);
  transform-style: preserve-3d;
  will-change: transform;
}
.combo:hover{ border-color: var(--line-2); box-shadow: 0 24px 60px rgba(0,0,0,.4); }

/* Efecto Von Restorff: una opción rompe el patrón y se lleva la atención */
.combo-star{
  background: linear-gradient(170deg, #2E1416, var(--bg-3) 60%);
  border-color: rgba(224,27,36,.45);
  box-shadow: 0 20px 55px rgba(224,27,36,.14);
}
.combo-flag{
  position:absolute; top:-.8rem; left: clamp(1.6rem,3vw,2.2rem);
  font-size:.62rem; font-weight:700; letter-spacing:.16em; text-transform:uppercase;
  background: var(--ember); color:#fff;
  padding:.4rem .85rem; border-radius:999px;
  box-shadow: 0 6px 18px rgba(224,27,36,.4);
}
.combo-head h3{
  font-family: var(--font-display); font-weight:600;
  font-size:1.3rem; letter-spacing:-.02em;
}
.combo-for{ font-size:.76rem; letter-spacing:.12em; text-transform:uppercase; color: var(--cream-3); margin-top:.2rem; }
.combo-price{
  font-family: var(--font-display); font-weight:800;
  font-size: clamp(2.6rem,5vw,3.4rem); line-height:1; letter-spacing:-.04em;
  margin: 1.2rem 0 .3rem;
  font-variant-numeric: tabular-nums;
}
.combo-star .combo-price{ color: var(--gold); }
.combo-price .cur{ font-size:.46em; vertical-align: .5em; margin-right:.12em; color: var(--cream-3); }
/* Anclaje: el precio por persona hace comparable cada opción */
.combo-per{ font-size:.8rem; color: var(--cream-3); margin-bottom:1.5rem; }
.combo-per-best{ color: var(--gold); font-weight:600; }
.combo-list{ display:grid; gap:.6rem; margin-bottom:1.8rem; }
.combo-list li{
  font-size:.9rem; color: var(--cream-2); line-height:1.5;
  padding-left:1.4rem; position:relative;
}
.combo-list li::before{
  content:""; position:absolute; left:0; top:.55em;
  width:7px; height:7px; border-radius:50%;
  background: var(--ember); opacity:.75;
}
.combos-note{
  margin-top: clamp(1.8rem,3vw,2.4rem);
  font-size:.88rem; color: var(--cream-3);
  text-align:center; max-width:52ch; margin-inline:auto;
}

/* ─────────────────────────── CÓMO PEDIR ─────────────────────────── */
.pedir{ background: var(--bg-2); border-block:1px solid var(--line); }
.pedir-inner{ max-width: var(--maxw); margin-inline:auto; padding-inline: var(--pad); }
.pedir-grid{
  display:grid; grid-template-columns: repeat(3,1fr);
  gap: clamp(1rem,2.2vw,1.5rem);
  margin-bottom: clamp(1.8rem,3.5vw,2.6rem);
}
.pedir-card{
  position:relative;
  display:flex; flex-direction:column; gap:.55rem;
  padding: clamp(1.6rem,3vw,2.1rem);
  border-radius: var(--r-lg);
  border:1px solid var(--line);
  background: var(--bg-3);
  min-height: 210px;
  transition: transform .35s var(--ease-out), border-color .35s var(--ease), background .35s var(--ease);
  will-change: transform;
}
.pedir-card:hover{ transform: translateY(-4px); border-color: var(--line-2); background: var(--bg-4); }
.pedir-card-main{
  background: linear-gradient(165deg, #34161A, var(--bg-3) 70%);
  border-color: rgba(224,27,36,.4);
}
.pedir-num{
  font-family: var(--font-display); font-weight:800; font-size:.78rem;
  letter-spacing:.1em; color: var(--ember);
}
.pedir-card h3{ font-family: var(--font-display); font-weight:600; font-size:1.22rem; letter-spacing:-.02em; }
.pedir-card p{ font-size:.9rem; color: var(--cream-3); line-height:1.55; max-width:34ch; }
.pedir-go{
  margin-top:auto; padding-top:1rem;
  font-size:1.25rem; color: var(--ember-2);
  transition: transform .3s var(--ease-out);
}
.pedir-card:hover .pedir-go{ transform: translateX(5px); }

.pedir-local{
  display:flex; align-items:center; justify-content:space-between; gap:2rem; flex-wrap:wrap;
  padding: clamp(1.6rem,3vw,2.2rem);
  border-radius: var(--r-lg);
  border:1px dashed var(--line-2);
}
.pedir-local h3{ font-family: var(--font-display); font-weight:600; font-size:1.3rem; letter-spacing:-.02em; margin-bottom:.4rem; }
.pedir-local p{ font-size:.93rem; color: var(--cream-3); line-height:1.6; max-width:52ch; }

/* ─────────────────────────── REDES ─────────────────────────── */
.redes-inner{ max-width: var(--maxw); margin-inline:auto; padding-inline: var(--pad); }
.redes-grid{
  display:grid; grid-template-columns: repeat(6,1fr);
  gap: clamp(.6rem,1.4vw,1rem);
  margin-bottom: clamp(2rem,4vw,2.8rem);
}
.redes-grid .ph{ transition: transform .4s var(--ease-out); }
.redes-grid .ph:hover{ transform: translateY(-5px) scale(1.02); }
.redes-actions{ display:flex; flex-wrap:wrap; gap:.85rem; }

/* ─────────────────────────── UBICACIÓN ─────────────────────────── */
.ubi{ background: var(--bg-2); border-top:1px solid var(--line); }
.ubi-inner{
  max-width: var(--maxw); margin-inline:auto; padding-inline: var(--pad);
  display:grid; grid-template-columns: minmax(0,1fr) minmax(0,1.05fr);
  gap: clamp(2.5rem,5vw,4.5rem); align-items:center;
}
.ubi-data{ display:grid; gap:1.4rem; margin: 2rem 0; }
.ubi-data dt{
  font-size:.68rem; font-weight:600; letter-spacing:.18em; text-transform:uppercase;
  color: var(--cream-3); margin-bottom:.4rem;
}
.ubi-data dd{ font-size:.98rem; color: var(--cream); line-height:1.6; }
.hours{ display:grid; gap:.35rem; }
.hours li{
  display:flex; justify-content:space-between; gap:1.5rem;
  font-size:.93rem; color: var(--cream-2);
  max-width: 30ch;
}
.hours li span{ color: var(--cream); font-weight:600; font-variant-numeric: tabular-nums; }
.hours li.is-today{ color: var(--gold); }
.hours li.is-today span{ color: var(--gold); }

.ubi-map{
  border-radius: var(--r-lg); overflow:hidden;
  border:1px solid var(--line-2);
  aspect-ratio: 4/3;
  background: var(--bg-3);
}
.ubi-map iframe{
  width:100%; height:100%; border:0;
  filter: grayscale(.4) invert(.92) hue-rotate(180deg) contrast(.88) brightness(.92);
}

/* ─────────────────────────── CIERRE ─────────────────────────── */
.cierre{
  position:relative; overflow:hidden;
  padding-block: clamp(5rem,12vw,9.5rem);
  text-align:center;
  border-top:1px solid var(--line);
}
.cierre-ember{
  position:absolute; left:50%; top:50%;
  width: min(130vw,1400px); aspect-ratio:2/1;
  transform: translate3d(-50%,-50%,0);
  background: radial-gradient(50% 50% at 50% 50%,
              rgba(224,27,36,.34),
              rgba(224,27,36,.14) 44%,
              transparent 72%);
  pointer-events:none;
}
.cierre-inner{ position:relative; z-index:1; max-width: 800px; margin-inline:auto; padding-inline: var(--pad); }
.cierre-title{
  font-family: var(--font-display); font-weight:800;
  font-size: clamp(2.3rem,6.4vw,4.8rem); line-height:1; letter-spacing:-.04em;
  text-wrap: balance; margin-bottom:1.2rem;
}
.cierre-sub{ font-size: clamp(1rem,1.6vw,1.18rem); color: var(--cream-2); max-width:46ch; margin:0 auto 2.2rem; }
.cierre-actions{ display:flex; flex-wrap:wrap; gap:.85rem; justify-content:center; }

/* ─────────────────────────── FOOTER ─────────────────────────── */
.footer{ background: var(--bg-2); border-top:1px solid var(--line); }
.footer-inner{
  max-width: var(--maxw); margin-inline:auto;
  padding: clamp(3rem,6vw,4.5rem) var(--pad) clamp(2rem,4vw,3rem);
  display:grid; grid-template-columns: minmax(0,1fr) minmax(0,1.25fr);
  gap: clamp(2.5rem,5vw,4rem);
}
.footer-brand{ display:flex; flex-direction:column; gap:1.2rem; align-items:flex-start; }
.footer-claim{
  font-family: var(--font-display); font-weight:600;
  font-size: clamp(1.2rem,2.2vw,1.6rem); line-height:1.2; letter-spacing:-.025em;
}
.footer-nav{ display:grid; grid-template-columns: repeat(3,1fr); gap:2rem; }
.footer-nav h4{
  font-size:.68rem; font-weight:600; letter-spacing:.18em; text-transform:uppercase;
  color: var(--cream-3); margin-bottom:1rem;
}
.footer-nav a{
  display:block; font-size:.92rem; color: var(--cream-2);
  padding-block:.32rem;
  transition: color .25s var(--ease), transform .25s var(--ease-out);
}
.footer-nav a:hover{ color: var(--ember-2); transform: translateX(3px); }

.footer-bottom{
  max-width: var(--maxw); margin-inline:auto;
  padding: 1.5rem var(--pad) 2rem;
  border-top:1px solid var(--line);
  display:flex; justify-content:space-between; gap:1.5rem; flex-wrap:wrap;
  font-size:.78rem; color: var(--cream-3);
}
.footer-disclaimer{ max-width: 62ch; line-height:1.6; }

/* ────────────────── REDES FLOTANTES ──────────────────
   Columna fija en el borde derecho, centrada en vertical. No estorba a la
   barra de pedido (que va abajo) ni a la cabecera. */
.social{
  position: fixed; right: 14px; top: 50%;
  transform: translateY(-50%);
  z-index: 440;
  display:flex; flex-direction:column; gap:.6rem;
}
.social-btn{
  width:46px; height:46px; border-radius:50%;
  display:grid; place-items:center;
  color: var(--cream);
  background: rgba(36,30,28,.92);
  border:1px solid var(--line-2);
  box-shadow: 0 6px 18px rgba(0,0,0,.4);
  transition: transform .3s var(--ease-out), background .3s var(--ease),
              border-color .3s var(--ease), color .3s var(--ease);
}
.social-btn svg{ width:22px; height:22px; }
.social-btn:hover{ transform: translateX(-4px) scale(1.06); color:#fff; }

/* En hover toma el color de cada red: se reconoce al instante. */
.social-wa:hover{ background:#25D366; border-color:#25D366; }
.social-ig:hover{ background:#C7318A; border-color:#C7318A; }
.social-fb:hover{ background:#1877F2; border-color:#1877F2; }

@media (max-width: 900px){
  .social{ right: 9px; gap:.5rem; }
  .social-btn{ width:40px; height:40px; }
  .social-btn svg{ width:19px; height:19px; }
}
/* Pantallas muy bajas: no compite con el contenido */
@media (max-height: 520px){
  .social{ display:none; }
}

/* ────────────────── BARRA FIJA DE PEDIDO (móvil) ────────────────── */
.orderbar{
  position: fixed; left:0; right:0; bottom:0; z-index: 450;
  display:none;
  align-items:center; justify-content:space-between; gap:1rem;
  padding: .7rem var(--pad) calc(.7rem + env(safe-area-inset-bottom));
  /* Igual que la cabecera: sólida, sin desenfoque. Es la barra que más
     tiempo pasa en pantalla mientras el usuario baja. */
  background: rgba(20,16,15,.97);
  border-top:1px solid var(--line-2);
  transform: translateY(110%);
  transition: transform .45s var(--ease-out);
}
.orderbar.is-on{ transform: translateY(0); }
.orderbar-info{ display:flex; align-items:center; gap:.5rem; font-size:.8rem; color: var(--cream-2); min-width:0; }
.orderbar-info span:last-child{ overflow:hidden; text-overflow:ellipsis; white-space:nowrap; }

/* ──────────────── ENTRADA DEL HERO (solo CSS) ────────────────
   El hero es lo primero que se ve: no puede depender de que el JS o el
   IntersectionObserver se disparen. Con @keyframes entra siempre, aunque
   el JS falle, llegue cacheado o el navegador no ejecute el observador. */
.reveal-hero{
  opacity:0;
  transform: translateY(22px);
  animation: entrarHero .85s var(--ease-out) forwards;
}
@keyframes entrarHero{ to{ opacity:1; transform:none; } }

.hero-inner .reveal-hero:nth-child(1){ animation-delay:.35s; }
.hero-inner .reveal-hero:nth-child(2){ animation-delay:.45s; }
.hero-inner .reveal-hero:nth-child(3){ animation-delay:.55s; }
.hero-inner .reveal-hero:nth-child(4){ animation-delay:.65s; }
.hero-inner .reveal-hero:nth-child(5){ animation-delay:.75s; }
.hero-status.reveal-hero{ animation-delay:.85s; }

@media (prefers-reduced-motion: reduce){
  /* Ojo: aquí NO se desactiva la animación, solo se acorta.
     Windows trae reduced-motion activado de fábrica en muchos equipos y
     desactivarla dejaría el hero en opacity:0 para esa gente. */
  .reveal-hero{ animation-duration:.01s; animation-delay:0s !important; }
}

/* ─────────────────────────── REVEALS ─────────────────────────── */
.reveal{
  opacity:0;
  transform: translateY(26px);
  transition: opacity .8s var(--ease-out), transform .8s var(--ease-out);
}
.reveal.is-visible{ opacity:1; transform:none; }

/* Defensa obligatoria: si un elemento lleva .reveal Y data-split,
   el JS de split no le quita el opacity:0 y el texto desaparece. */
.reveal[data-split]{ opacity:1; transform:none; }

/* Si el JS está desactivado, el contenido se ve igual (sin animación). */
html:not(.js) .reveal{ opacity:1; transform:none; }

/* ═══════════════════════════ RESPONSIVE ═══════════════════════════ */

@media (max-width: 1080px){
  .nav-links{ display:none; }
  .nav-toggle{ display:flex; }
  .nav.is-open .nav-mobile{ display:flex; }
  .trust-inner{ grid-template-columns: repeat(2,1fr); }
  .redes-grid{ grid-template-columns: repeat(3,1fr); }
  .hero-status{ display:none; }
}

@media (max-width: 900px){
  :root{ --nav-h: 66px; }
  .sazon-inner{ grid-template-columns: 1fr; }
  .sazon-media{ position:static; max-width: 460px; }
  .combo-grid{ grid-template-columns: 1fr; }
  .combo-star{ order:-1; }              /* la opción destacada primero en móvil */
  .pedir-grid{ grid-template-columns: 1fr; }
  .pedir-card{ min-height:0; }
  .ubi-inner{ grid-template-columns: 1fr; }
  .footer-inner{ grid-template-columns: 1fr; }
  .orderbar{ display:flex; }
  body{ padding-bottom: 0; }
}

@media (max-width: 620px){
  /* En pantallas estrechas la cabecera no cabe entera: el estado ya se ve
     en la barra fija de abajo, así que aquí se quita y el CTA se acorta. */
  .nav .live-pill{ display:none; }
  .nav-inner{ gap:.7rem; }
  .nav-actions{ gap:.5rem; }
  .nav-actions .btn-sm{ padding:.6rem .95rem; }
  .cta-largo{ display:none; }
  .cta-corto{ display:inline; }
  .brand-name{ font-size:.94rem; }

  .trust-inner{ grid-template-columns: 1fr 1fr; gap:1.4rem; }
  .trust-lab{ font-size:.76rem; }
  .redes-grid{ grid-template-columns: repeat(2,1fr); }
  .footer-nav{ grid-template-columns: 1fr 1fr; gap:1.6rem; }
  .hero{ justify-content:flex-end; }
  .hero-actions .btn{ flex:1 1 100%; }
  .cierre-actions .btn{ flex:1 1 100%; }
  .menu-row{ flex-direction:row; gap:1rem; }
  .menu-name{ font-size:1.02rem; }
  .pedir-local{ flex-direction:column; align-items:flex-start; gap:1.2rem; }
  .footer-bottom{ flex-direction:column; gap:.8rem; }
}

@media (max-width: 400px){
  .brand-sub{ display:none; }
  .footer-nav{ grid-template-columns: 1fr; }
}

/* Impresión: la carta debe poder imprimirse limpia */
@media print{
  .nav,.orderbar,.hero-media,.splash,.grain,.dish-preview,.hero-scroll,.ubi-map{ display:none !important; }
  body{ background:#fff; color:#000; }
  .reveal{ opacity:1 !important; transform:none !important; }
}
