/* =========================================================
   CLANDESTINO V4 — LATIN STREET FOOD · LYON
   Author: Studio · 2026
   ========================================================= */

/* ----- RESET & BASE ----- */
*, *::before, *::after { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; font-size: 16px; -webkit-font-smoothing: antialiased; }
body {
  font-family: 'Nunito', system-ui, sans-serif;
  background: var(--crema);
  color: var(--brun);
  overflow-x: hidden;
  line-height: 1.55;
}
body.no-scroll { overflow: hidden; height: 100vh; }
img { display: block; max-width: 100%; height: auto; }
a { color: inherit; text-decoration: none; }
ul { list-style: none; }
button { font-family: inherit; border: none; background: none; cursor: pointer; color: inherit; }
input, select, textarea { font-family: inherit; color: inherit; }
::selection { background: var(--rojo); color: #fff; }

/* ----- VARIABLES ----- */
:root {
  /* Couleurs */
  --rojo:        #C8311A;       /* terracotta */
  --rojo-dark:   #9A2010;
  --oro:         #E8A520;       /* mustard */
  --oro-dark:    #B7831A;
  --verde:       #2A6041;       /* cactus */
  --verde-light: #4F8B6A;
  --naranja:     #E07020;
  --rosa:        #E84A8C;       /* pink magenta */
  --bleu:        #1B6B8E;       /* azulejo */
  --crema:       #FFF8EE;
  --crema2:      #FFEAC8;
  --crema3:      #F4DCB5;
  --brun:        #2C1005;
  --brun-mid:    #4A2010;
  --brun-clair:  #7A4030;
  --noir:        #0F0703;

  /* Typo */
  --ff-serif:  'Playfair Display', Georgia, serif;
  --ff-script: 'Pacifico', cursive;
  --ff-hand:   'Caveat', cursive;
  --ff-display: 'Bebas Neue', impact, sans-serif;
  --ff-sans:   'Nunito', system-ui, sans-serif;

  /* Layout */
  --header-h:    96px;
  --topbar-h:    34px;
  --radius:      14px;
  --radius-sm:   8px;
  --radius-lg:   24px;
  --tr:          .35s cubic-bezier(.2,.7,.2,1);
  --tr-fast:     .2s ease;
  --tr-slow:     .8s cubic-bezier(.2,.7,.2,1);

  --shadow-sm:   0 2px 10px rgba(44,16,5,.08);
  --shadow:      0 8px 30px rgba(44,16,5,.12);
  --shadow-lg:   0 18px 60px rgba(44,16,5,.18);
  --shadow-rojo: 0 10px 40px rgba(200,49,26,.28);

  --border:      1px solid rgba(200,49,26,.18);
}

/* ----- TYPOGRAPHIE ----- */
h1, h2, h3, h4, h5 { font-family: var(--ff-serif); line-height: 1.12; color: var(--brun); }
em { color: var(--rojo); font-style: italic; }
.eyebrow {
  font-family: var(--ff-sans);
  font-weight: 700;
  font-size: 0.78rem;
  letter-spacing: 0.22em;
  text-transform: uppercase;
  color: var(--rojo);
  margin-bottom: 0.7rem;
  display: inline-flex;
  align-items: center;
  gap: 0.5rem;
}
.eyebrow::before, .eyebrow::after {
  content: '';
  display: inline-block;
  width: 24px; height: 2px;
  background: var(--rojo);
}
.eyebrow--light { color: var(--oro); }
.eyebrow--light::before, .eyebrow--light::after { background: var(--oro); }

.section-title {
  font-size: clamp(2rem, 4.5vw, 3.4rem);
  margin-bottom: 0.5rem;
  font-weight: 900;
}
.section-sub {
  font-size: 1.05rem;
  color: var(--brun-clair);
  max-width: 620px;
  margin: 0 auto;
}

/* ----- UTILS ----- */
.container { width: min(94%, 1240px); margin: 0 auto; }
.section-header { text-align: center; margin-bottom: 4rem; }

/* ----- AZTEC DIVIDER ----- */
.aztec-bottom, .aztec-top {
  height: 14px;
  background:
    repeating-linear-gradient(
      90deg,
      var(--rojo)    0px,  var(--rojo)    14px,
      var(--oro)    14px,  var(--oro)    28px,
      var(--verde)  28px,  var(--verde)  42px,
      var(--naranja)42px,  var(--naranja)56px,
      var(--brun)   56px,  var(--brun)   70px,
      var(--crema2) 70px,  var(--crema2) 84px
    );
  background-size: 84px 100%;
}

/* ----- GRAIN OVERLAY ----- */
.grain-overlay {
  position: fixed;
  inset: 0;
  z-index: 9999;
  pointer-events: none;
  opacity: .14;
  mix-blend-mode: multiply;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='1.2' numOctaves='3' stitchTiles='stitch'/></filter><rect width='100%25' height='100%25' filter='url(%23n)'/></svg>");
}

/* =========================================================
   CUSTOM CURSOR — flèche rouge + main verte (Mexique)
   ========================================================= */
.cursor-dot, .cursor-ring { display: none !important; }

@media (hover: hover) and (pointer: fine) {
  /* Default arrow — rouge avec contour vert */
  body {
    cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M3 2 L3 22 L9 17 L13 26 L17 24 L13 16 L21 16 Z' fill='%23C8311A' stroke='%232A6041' stroke-width='2' stroke-linejoin='round' stroke-linecap='round'/%3E%3C/svg%3E") 3 2, auto !important;
  }

  /* Pointer hand — vert avec contour rouge */
  a, button, summary, label, select,
  input[type="submit"], input[type="button"], input[type="reset"],
  input[type="checkbox"], input[type="radio"],
  [role="button"], details > summary,
  .btn, .splash-btn, .filter-btn, .day-card, .menu-card,
  .g-item, .testi-card, .lang-btn, .card-fav, .nav-toggle,
  .rail-link, .float-btn, .p-btn, .lb-nav, .lb-close,
  .modal-close, .check-card, .radio-card, .extra-pill,
  .food-tag, .testi-dot, .nav-logo, .footer-nav a,
  .footer-socials a, .social-link {
    cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='28' height='28' viewBox='0 0 28 28'%3E%3Cpath d='M11 2 C11 1 12 1 12 2 L12 13 L13 13 L13 9 C13 8 14 8 14 9 L14 13 L15 13 L15 10 C15 9 16 9 16 10 L16 13 L17 13 L17 11 C17 10 18 10 18 11 L18 17 C18 21 15 25 11 25 L10 25 C7 25 5 23 5 19 L5 14 C5 13 6 13 6 14 L6 16 L8 16 L8 9 C8 8 9 8 9 9 L9 14 L10 14 L10 5 C10 4 11 4 11 5 Z' fill='%232A6041' stroke='%23C8311A' stroke-width='1.8' stroke-linejoin='round' stroke-linecap='round'/%3E%3C/svg%3E") 12 2, pointer !important;
  }

  /* Text cursor — barre verte avec halo rouge */
  input[type="text"], input[type="email"], input[type="tel"],
  input[type="date"], input[type="number"], input[type="search"],
  input[type="password"], textarea {
    cursor: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='20' height='28' viewBox='0 0 20 28'%3E%3Cpath d='M8 2 L12 2 M10 2 L10 26 M8 26 L12 26' stroke='%232A6041' stroke-width='2.5' stroke-linecap='round' fill='none'/%3E%3Cpath d='M9 4 L11 4 M10 4 L10 24 M9 24 L11 24' stroke='%23C8311A' stroke-width='1' stroke-linecap='round' fill='none'/%3E%3C/svg%3E") 10 14, text !important;
  }
}

/* =========================================================
   BOUTONS
   ========================================================= */
.btn {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  padding: 0.95rem 2.1rem;
  font-family: var(--ff-serif);
  font-size: 1rem;
  font-weight: 700;
  border-radius: 999px;
  transition: var(--tr);
  cursor: pointer;
  letter-spacing: .02em;
  position: relative;
  overflow: hidden;
  white-space: nowrap;
}
.btn::after {
  content: '';
  position: absolute;
  inset: 0;
  background: radial-gradient(circle at var(--mx,50%) var(--my,50%), rgba(255,255,255,.25), transparent 50%);
  opacity: 0;
  transition: opacity var(--tr);
  pointer-events: none;
}
.btn:hover::after { opacity: 1; }

.btn--primary {
  background: var(--rojo);
  color: #fff;
  box-shadow: var(--shadow-rojo);
}
.btn--primary:hover {
  background: var(--rojo-dark);
  transform: translateY(-3px);
  box-shadow: 0 14px 50px rgba(200,49,26,.45);
}
.btn--ghost {
  background: transparent;
  color: var(--brun);
  border: 2px solid var(--brun);
}
.btn--ghost:hover {
  background: var(--brun);
  color: var(--crema);
  transform: translateY(-3px);
}
.btn--outline {
  background: transparent;
  color: var(--rojo);
  border: 2px solid var(--rojo);
}
.btn--outline:hover { background: var(--rojo); color: #fff; transform: translateY(-3px); }
.btn--full { width: 100%; justify-content: center; }
.btn--sm { padding: .65rem 1.3rem; font-size: .9rem; }

/* link arrow */
.link-arrow {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  color: var(--rojo);
  font-weight: 700;
  font-family: var(--ff-serif);
  letter-spacing: .02em;
  transition: gap var(--tr-fast), color var(--tr-fast);
  border-bottom: 1px solid transparent;
}
.link-arrow:hover { gap: .8rem; color: var(--rojo-dark); border-bottom-color: var(--rojo-dark); }
.link-arrow svg { transition: transform var(--tr-fast); }
.link-arrow:hover svg { transform: translateX(3px); }

/* =========================================================
   SPLASH
   ========================================================= */
.splash {
  position: fixed;
  inset: 0;
  z-index: 9000;
  background:
    radial-gradient(circle at 20% 30%, rgba(232,165,32,.12), transparent 50%),
    radial-gradient(circle at 80% 70%, rgba(200,49,26,.18), transparent 50%),
    linear-gradient(145deg, #1C0A02 0%, #3A1A08 50%, #1C0A02 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  flex-direction: column;
  color: var(--crema);
  text-align: center;
  padding: 2rem;
  transition: opacity .8s ease, visibility .8s;
}
.splash.is-hidden { opacity: 0; visibility: hidden; pointer-events: none; }

.splash-papel {
  position: absolute;
  top: 0; left: 0; right: 0;
  height: 90px;
  color: var(--rojo);
  animation: papel-sway 6s ease-in-out infinite;
}
.splash-papel svg { width: 100%; height: 100%; display: block; }
.splash-papel use:nth-child(2n) { color: var(--oro); }
.splash-papel use:nth-child(3n) { color: var(--verde); }
.splash-papel use:nth-child(4n) { color: var(--rosa); }
.splash-papel use:nth-child(5n) { color: var(--naranja); }
@keyframes papel-sway {
  0%,100% { transform: rotate(-1deg) translateY(0); }
  50%     { transform: rotate(1deg) translateY(4px); }
}

.splash-content { position: relative; z-index: 2; max-width: 480px; }

.splash-logo-wrap {
  position: relative;
  width: 130px; height: 130px;
  margin: 0 auto 1.5rem;
}
.splash-logo {
  width: 100%; height: 100%;
  border-radius: 50%;
  object-fit: cover;
  border: 4px solid var(--oro);
  box-shadow: 0 0 0 6px rgba(232,165,32,.25), 0 20px 60px rgba(0,0,0,.5);
  animation: logo-pulse 2.5s ease-in-out infinite;
  position: relative;
  z-index: 2;
}
@keyframes logo-pulse {
  0%,100% { transform: scale(1); }
  50%     { transform: scale(1.04); }
}
.sun-rays {
  position: absolute;
  inset: -25px;
  background:
    conic-gradient(from 0deg,
      transparent 0deg, rgba(232,165,32,.45) 8deg, transparent 16deg,
      transparent 30deg, rgba(232,165,32,.45) 38deg, transparent 46deg,
      transparent 60deg, rgba(232,165,32,.45) 68deg, transparent 76deg,
      transparent 90deg, rgba(232,165,32,.45) 98deg, transparent 106deg,
      transparent 120deg, rgba(232,165,32,.45) 128deg, transparent 136deg,
      transparent 150deg, rgba(232,165,32,.45) 158deg, transparent 166deg,
      transparent 180deg, rgba(232,165,32,.45) 188deg, transparent 196deg,
      transparent 210deg, rgba(232,165,32,.45) 218deg, transparent 226deg,
      transparent 240deg, rgba(232,165,32,.45) 248deg, transparent 256deg,
      transparent 270deg, rgba(232,165,32,.45) 278deg, transparent 286deg,
      transparent 300deg, rgba(232,165,32,.45) 308deg, transparent 316deg,
      transparent 330deg, rgba(232,165,32,.45) 338deg, transparent 346deg);
  border-radius: 50%;
  filter: blur(.5px);
  animation: rays-rotate 18s linear infinite;
  z-index: 1;
}
@keyframes rays-rotate { to { transform: rotate(360deg); } }

.splash-brand {
  font-family: var(--ff-serif);
  font-size: clamp(2.5rem, 6vw, 4rem);
  font-weight: 900;
  letter-spacing: .15em;
  margin-bottom: .3rem;
  color: var(--oro);
  text-shadow: 0 4px 24px rgba(0,0,0,.5);
}
.splash-brand span {
  display: inline-block;
  opacity: 0;
  transform: translateY(20px) rotateX(-90deg);
  animation: letter-in .55s cubic-bezier(.2,.7,.2,1) forwards;
}
.splash-brand span:nth-child(1)  { animation-delay: .05s; }
.splash-brand span:nth-child(2)  { animation-delay: .10s; }
.splash-brand span:nth-child(3)  { animation-delay: .15s; }
.splash-brand span:nth-child(4)  { animation-delay: .20s; }
.splash-brand span:nth-child(5)  { animation-delay: .25s; }
.splash-brand span:nth-child(6)  { animation-delay: .30s; }
.splash-brand span:nth-child(7)  { animation-delay: .35s; }
.splash-brand span:nth-child(8)  { animation-delay: .40s; }
.splash-brand span:nth-child(9)  { animation-delay: .45s; }
.splash-brand span:nth-child(10) { animation-delay: .50s; }
.splash-brand span:nth-child(11) { animation-delay: .55s; }
@keyframes letter-in {
  to { opacity: 1; transform: translateY(0) rotateX(0); }
}

.splash-slogan {
  font-family: var(--ff-script);
  font-size: 1.4rem;
  color: var(--crema);
  margin-bottom: 2rem;
  opacity: 0;
  animation: fade-up .7s ease .8s forwards;
}
@keyframes fade-up { from { opacity: 0; transform: translateY(15px); } to { opacity: 1; transform: none; } }

.splash-progress {
  display: flex;
  align-items: center;
  gap: 1rem;
  margin: 1.5rem 0 1rem;
  opacity: 0;
  animation: fade-up .7s ease 1s forwards;
}
.splash-bar {
  flex: 1;
  height: 6px;
  background: rgba(255,255,255,.15);
  border-radius: 999px;
  overflow: hidden;
}
.splash-bar-fill {
  width: 0%;
  height: 100%;
  background: linear-gradient(90deg, var(--rojo), var(--oro), var(--verde));
  border-radius: 999px;
  transition: width .3s ease;
}
.splash-pct {
  font-family: var(--ff-display);
  font-size: 1.1rem;
  color: var(--oro);
  min-width: 50px;
  text-align: right;
}

.splash-log {
  height: 28px;
  margin-bottom: 2rem;
  position: relative;
}
.log-line {
  position: absolute;
  inset: 0;
  text-align: center;
  font-size: .95rem;
  color: rgba(255,248,238,.8);
  opacity: 0;
  transition: opacity .4s;
}
.log-line.is-active { opacity: 1; }

.splash-btn {
  display: inline-flex;
  align-items: center;
  gap: .7rem;
  padding: 1rem 2.6rem;
  background: var(--rojo);
  color: #fff;
  border: 2px solid var(--oro);
  border-radius: 999px;
  font-family: var(--ff-serif);
  font-weight: 800;
  font-size: 1.1rem;
  letter-spacing: .06em;
  text-transform: uppercase;
  box-shadow: 0 10px 30px rgba(200,49,26,.35);
  transition: transform var(--tr), background var(--tr), box-shadow var(--tr);
  opacity: 0;
  animation: fade-up .7s ease 1.4s forwards, btn-breathe 3s ease-in-out 2.2s infinite;
  outline: none;
  cursor: pointer;
}
.splash-btn svg { transition: transform var(--tr-fast); }
.splash-btn:hover {
  background: var(--rojo-dark);
  transform: translateY(-2px);
  box-shadow: 0 14px 36px rgba(200,49,26,.5);
}
.splash-btn:hover svg { transform: translateX(3px); }
.splash-btn:active { transform: translateY(0); }
.splash-btn:focus-visible {
  box-shadow: 0 10px 30px rgba(200,49,26,.35), 0 0 0 4px rgba(232,165,32,.45);
}

@keyframes btn-breathe {
  0%,100% { transform: translateY(0); }
  50%     { transform: translateY(-3px); }
}

/* =========================================================
   SOCIAL RAIL (left)
   ========================================================= */
.social-rail {
  position: fixed;
  left: 18px;
  top: 50%;
  transform: translateY(-50%);
  z-index: 95;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: 14px;
}
.rail-link {
  width: 42px;
  height: 42px;
  border-radius: 50%;
  background: rgba(255,255,255,.92);
  color: var(--brun);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  border: 1px solid rgba(200,49,26,.18);
  box-shadow: var(--shadow-sm);
  transition: var(--tr-fast);
  position: relative;
  backdrop-filter: blur(6px);
}
.rail-link:hover {
  transform: translateX(3px) scale(1.08);
  box-shadow: var(--shadow);
}
.rail-link--ig:hover {
  color: #fff;
  background: linear-gradient(135deg, #FCAF45 0%, #FD1D1D 50%, #833AB4 100%);
  border-color: transparent;
}
.rail-link--fb:hover {
  color: #fff;
  background: #1877F2;
  border-color: #1877F2;
}
.rail-link--mail:hover {
  color: #fff;
  background: var(--rojo);
  border-color: var(--rojo);
}
.rail-tip {
  position: absolute;
  left: 56px;
  top: 50%;
  transform: translateY(-50%) translateX(-6px);
  background: var(--brun);
  color: var(--crema);
  font-size: .75rem;
  font-weight: 700;
  letter-spacing: .03em;
  padding: .4rem .8rem;
  border-radius: 999px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--tr-fast), transform var(--tr-fast);
  font-family: var(--ff-sans);
}
.rail-tip::before {
  content: '';
  position: absolute;
  left: -5px;
  top: 50%;
  transform: translateY(-50%) rotate(45deg);
  width: 8px; height: 8px;
  background: var(--brun);
}
.rail-link:hover .rail-tip {
  opacity: 1;
  transform: translateY(-50%) translateX(0);
}
.rail-bar {
  width: 1.5px;
  height: 32px;
  background: var(--rojo);
  opacity: .35;
  margin-top: 4px;
}
.rail-label {
  writing-mode: vertical-rl;
  transform: rotate(180deg);
  font-family: var(--ff-display);
  font-size: .72rem;
  letter-spacing: .25em;
  color: var(--brun-clair);
  margin-top: 6px;
}

/* Hide on small screens — float-stack covers it */
@media (max-width: 900px) {
  .social-rail { display: none; }
}

/* When over dark hero/footer, switch to light icons */
.social-rail.is-light .rail-link {
  background: rgba(28,10,2,.55);
  color: var(--crema);
  border-color: rgba(232,165,32,.4);
}
.social-rail.is-light .rail-bar { background: var(--oro); }
.social-rail.is-light .rail-label { color: rgba(232,165,32,.85); }

/* =========================================================
   FLOATING CONTROLS
   ========================================================= */
.float-stack {
  position: fixed;
  right: 24px;
  bottom: 24px;
  z-index: 200;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.float-btn {
  width: 52px; height: 52px;
  border-radius: 50%;
  background: var(--brun);
  color: var(--crema);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  position: relative;
  box-shadow: var(--shadow);
  transition: var(--tr);
}
.float-btn:hover {
  background: var(--rojo);
  transform: translateY(-3px) scale(1.05);
  box-shadow: 0 12px 30px rgba(200,49,26,.4);
}
.float-btn--cta { background: var(--rojo); color: #fff; }
.float-btn--cta:hover { background: var(--rojo-dark); }
.float-btn--call { background: var(--verde); }
.float-btn--top {
  opacity: 0;
  pointer-events: none;
  transform: translateY(10px);
}
.float-btn--top.is-visible { opacity: 1; pointer-events: auto; transform: none; }

.float-tip {
  position: absolute;
  right: 64px;
  top: 50%;
  transform: translateY(-50%) translateX(8px);
  background: var(--brun);
  color: var(--crema);
  font-size: .8rem;
  letter-spacing: .05em;
  padding: .35rem .8rem;
  border-radius: 999px;
  white-space: nowrap;
  opacity: 0;
  pointer-events: none;
  transition: opacity var(--tr), transform var(--tr);
  font-family: var(--ff-sans);
  font-weight: 700;
}
.float-btn:hover .float-tip { opacity: 1; transform: translateY(-50%) translateX(0); }

.float-btn--sound.is-on { background: var(--oro); color: var(--brun); }
.float-btn--sound.is-on .ico-mute { display: none; }
.float-btn--sound.is-on .ico-on   { display: block !important; }

/* =========================================================
   HEADER + TOPBAR
   ========================================================= */
#main-header {
  position: fixed;
  top: 0; left: 0; right: 0;
  z-index: 100;
  background: rgba(255,248,238,.96);
  backdrop-filter: blur(10px);
  -webkit-backdrop-filter: blur(10px);
  transition: var(--tr);
  border-bottom: 1px solid transparent;
}
#main-header.is-scrolled {
  border-bottom-color: rgba(200,49,26,.12);
  box-shadow: 0 4px 30px rgba(44,16,5,.07);
}

.topbar {
  background: var(--brun);
  color: var(--crema2);
  font-size: .8rem;
  letter-spacing: .04em;
}
.topbar-inner {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 6px 0;
  height: var(--topbar-h);
  flex-wrap: wrap;
  gap: 8px;
}
.topbar-left {
  display: inline-flex;
  align-items: center;
  gap: 8px;
  font-weight: 700;
  text-transform: uppercase;
  font-size: .72rem;
  letter-spacing: .12em;
}
.live-dot {
  width: 8px; height: 8px;
  border-radius: 50%;
  background: #888;
  position: relative;
}
.live-dot.is-open { background: #4FCB7B; box-shadow: 0 0 0 4px rgba(79,203,123,.25); }
.live-dot.is-open::after {
  content: '';
  position: absolute;
  inset: -4px;
  border-radius: 50%;
  border: 2px solid #4FCB7B;
  animation: pulse-dot 1.6s ease-out infinite;
}
.live-dot.is-closed { background: #E07020; }
@keyframes pulse-dot { 0%{transform:scale(1);opacity:.7} 100%{transform:scale(2.3);opacity:0} }
.topbar-right {
  display: inline-flex;
  align-items: center;
  gap: 10px;
}
.topbar-right svg { vertical-align: -2px; }
.topbar-right .sep { opacity: .4; }

.navbar {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 1.5rem;
  padding: 16px 0;
  height: calc(var(--header-h) - var(--topbar-h));
}

.nav-logo {
  display: inline-flex;
  align-items: center;
  gap: .8rem;
  flex-shrink: 0;
}
.nav-logo-img {
  width: 48px; height: 48px;
  border-radius: 50%;
  overflow: hidden;
  border: 2px solid var(--rojo);
  box-shadow: 0 4px 14px rgba(200,49,26,.25);
  transition: var(--tr);
}
.nav-logo:hover .nav-logo-img { transform: rotate(-8deg) scale(1.05); }
.nav-logo-img img { width: 100%; height: 100%; object-fit: cover; }
.nav-logo-text {
  display: flex;
  flex-direction: column;
  line-height: 1;
}
.nav-logo-text strong {
  font-family: var(--ff-serif);
  font-size: 1.25rem;
  color: var(--brun);
  font-weight: 900;
  letter-spacing: .02em;
}
.nav-logo-text em {
  font-family: var(--ff-script);
  font-size: .8rem;
  color: var(--rojo);
  margin-top: 4px;
  font-style: normal;
}

.nav-links {
  display: flex;
  align-items: center;
  gap: .3rem;
}
.nav-link {
  position: relative;
  padding: .55rem .9rem;
  font-weight: 700;
  font-size: .92rem;
  color: var(--brun);
  letter-spacing: .02em;
  border-radius: 999px;
  transition: var(--tr-fast);
}
.nav-link::after {
  content: '';
  position: absolute;
  left: 50%; bottom: 4px;
  transform: translateX(-50%);
  width: 0; height: 2px;
  background: var(--rojo);
  transition: width var(--tr);
  border-radius: 2px;
}
.nav-link:hover { color: var(--rojo); }
.nav-link:hover::after, .nav-link.is-current::after { width: calc(100% - 1.6rem); }

.nav-link--cta {
  background: var(--rojo);
  color: #fff !important;
  padding: .55rem 1.3rem;
}
.nav-link--cta:hover { background: var(--rojo-dark); transform: translateY(-2px); }
.nav-link--cta::after { display: none; }

.nav-right {
  display: inline-flex;
  align-items: center;
  gap: 1rem;
}

.lang-switcher {
  display: inline-flex;
  align-items: center;
  background: var(--crema2);
  border: 1px solid rgba(200,49,26,.15);
  border-radius: 999px;
  padding: 4px;
  gap: 2px;
}
.lang-btn {
  padding: 5px 11px;
  font-size: .78rem;
  font-weight: 800;
  letter-spacing: .06em;
  color: var(--brun-clair);
  border-radius: 999px;
  transition: var(--tr-fast);
}
.lang-btn:hover { color: var(--rojo); }
.lang-btn.active {
  background: var(--rojo);
  color: #fff;
  box-shadow: 0 2px 8px rgba(200,49,26,.3);
}

.nav-toggle {
  display: none;
  width: 44px; height: 44px;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
}
.nav-toggle .hbar {
  width: 24px; height: 2.5px;
  background: var(--brun);
  border-radius: 2px;
  transition: var(--tr);
}
.nav-toggle.is-open .hbar:nth-child(1) { transform: translateY(7.5px) rotate(45deg); }
.nav-toggle.is-open .hbar:nth-child(2) { opacity: 0; }
.nav-toggle.is-open .hbar:nth-child(3) { transform: translateY(-7.5px) rotate(-45deg); }

.scroll-progress {
  position: absolute;
  bottom: -3px;
  left: 0;
  height: 3px;
  width: 0%;
  background: linear-gradient(90deg, var(--rojo), var(--oro), var(--verde));
  transition: width .15s linear;
}

/* =========================================================
   HERO
   ========================================================= */
.hero {
  position: relative;
  min-height: 100vh;
  padding-top: var(--header-h);
  display: flex;
  align-items: center;
  justify-content: center;
  overflow: hidden;
  isolation: isolate;
}
.hero-bg {
  position: absolute;
  inset: 0;
  background-size: cover;
  background-position: center;
  z-index: -3;
  filter: saturate(1.05);
  transform: scale(1.05);
  transition: transform 8s ease;
}
.hero.is-loaded .hero-bg { transform: scale(1); }

.hero-bg-grain {
  position: absolute;
  inset: 0;
  z-index: -2;
  background-image: url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='200' height='200'><filter id='n'><feTurbulence type='fractalNoise' baseFrequency='2' numOctaves='2'/></filter><rect width='100%25' height='100%25' filter='url(%23n)' opacity='0.55'/></svg>");
  mix-blend-mode: overlay;
  opacity: .35;
}

.hero-overlay {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(180deg, rgba(28,10,2,.45) 0%, rgba(28,10,2,.65) 50%, rgba(28,10,2,.85) 100%),
    radial-gradient(circle at 70% 30%, rgba(200,49,26,.25), transparent 60%);
}

.hero-papel {
  position: absolute;
  top: var(--header-h);
  left: 0; right: 0;
  height: 80px;
  z-index: 1;
  color: var(--rojo);
  pointer-events: none;
  animation: papel-sway 7s ease-in-out infinite;
}
.hero-papel svg { width: 100%; height: 100%; }
.hero-papel use:nth-child(2n) { color: var(--oro); }
.hero-papel use:nth-child(3n) { color: var(--verde); }
.hero-papel use:nth-child(4n) { color: var(--rosa); }
.hero-papel use:nth-child(5n) { color: var(--naranja); }

.hero-content {
  position: relative;
  z-index: 2;
  max-width: 900px;
  text-align: center;
  color: var(--crema);
  padding: 1rem;
}

.hero-tag {
  display: inline-block;
  font-family: var(--ff-sans);
  font-weight: 700;
  letter-spacing: .25em;
  font-size: .82rem;
  color: var(--oro);
  text-transform: uppercase;
  padding: .5rem 1.2rem;
  border: 1px solid rgba(232,165,32,.5);
  border-radius: 999px;
  margin-bottom: 1.5rem;
  backdrop-filter: blur(4px);
  background: rgba(28,10,2,.35);
}

.hero-title {
  margin-bottom: 1.5rem;
  display: flex;
  flex-direction: column;
  gap: .2rem;
}
.title-row { display: block; }
.title-script {
  font-family: var(--ff-script);
  font-size: clamp(2.5rem, 8vw, 5.5rem);
  color: var(--oro);
  font-weight: 400;
  text-shadow: 0 4px 30px rgba(0,0,0,.5);
}
.title-block {
  font-family: var(--ff-display);
  font-size: clamp(3.5rem, 12vw, 8rem);
  letter-spacing: .03em;
  color: var(--crema);
  text-shadow: 0 6px 30px rgba(0,0,0,.5);
}
.title-row .ch {
  display: inline-block;
  opacity: 0;
  transform: translateY(60px) rotateX(-90deg);
  transform-origin: 50% 100%;
}
.title-row.is-revealed .ch {
  animation: char-in .7s cubic-bezier(.2,.7,.2,1) forwards;
}
.title-row .ch--space { width: .25em; }
@keyframes char-in {
  to { opacity: 1; transform: translateY(0) rotateX(0); }
}

.hero-sub {
  font-size: clamp(1rem, 1.6vw, 1.2rem);
  color: var(--crema2);
  margin-bottom: 2rem;
  line-height: 1.6;
}
.hero-actions {
  display: inline-flex;
  flex-wrap: wrap;
  gap: 1rem;
  justify-content: center;
  margin-bottom: 2.5rem;
}
.hero-actions .btn--ghost {
  color: #fff;
  border-color: rgba(255,255,255,.6);
}
.hero-actions .btn--ghost:hover {
  background: #fff; color: var(--brun);
}

.hero-meta {
  display: inline-flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 1.5rem;
  font-size: .85rem;
  color: var(--crema2);
}
.meta-item {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .5rem 1rem;
  background: rgba(28,10,2,.5);
  border-radius: 999px;
  backdrop-filter: blur(6px);
  border: 1px solid rgba(232,165,32,.2);
}
.meta-item svg { color: var(--oro); }
.meta-item strong { color: var(--crema); font-weight: 700; }

/* Floating emojis */
.hero-floats { position: absolute; inset: 0; pointer-events: none; z-index: 1; }
.float-emoji {
  position: absolute;
  font-size: 2.5rem;
  filter: drop-shadow(0 6px 18px rgba(0,0,0,.3));
  animation: float-up 14s ease-in-out infinite;
  opacity: .6;
}
.float-emoji.f1 { left: 6%;  top: 25%; animation-delay: 0s; }
.float-emoji.f2 { right: 8%; top: 30%; animation-delay: 2.5s; }
.float-emoji.f3 { left: 12%; top: 70%; animation-delay: 4.5s; }
.float-emoji.f4 { right: 14%; top: 65%; animation-delay: 6.5s; }
.float-emoji.f5 { left: 50%; top: 12%; animation-delay: 8.5s; }
@keyframes float-up {
  0%,100% { transform: translateY(0) rotate(0deg); }
  50%     { transform: translateY(-25px) rotate(8deg); }
}

.hero-scroll {
  position: absolute;
  bottom: 28px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  align-items: center;
  flex-direction: column;
  gap: .4rem;
  color: var(--crema2);
  font-size: .72rem;
  letter-spacing: .25em;
  font-weight: 700;
  z-index: 2;
}
.scroll-arrow {
  width: 1.5px; height: 36px;
  background: linear-gradient(to bottom, var(--oro), transparent);
  position: relative;
  overflow: hidden;
}
.scroll-arrow::after {
  content: '';
  position: absolute;
  top: -36px; left: 0;
  width: 100%; height: 100%;
  background: linear-gradient(to bottom, transparent, var(--oro));
  animation: scroll-down 2s ease-in-out infinite;
}
@keyframes scroll-down {
  0%   { transform: translateY(0); }
  100% { transform: translateY(72px); }
}

/* =========================================================
   STAT BAND (marquee)
   ========================================================= */
.stat-band {
  background: var(--brun);
  color: var(--crema);
  padding: 1rem 0;
  overflow: hidden;
  border-top: 4px solid var(--oro);
  border-bottom: 4px solid var(--oro);
  position: relative;
  font-family: var(--ff-display);
  letter-spacing: .15em;
}
.stat-band-track {
  display: inline-flex;
  gap: 3rem;
  white-space: nowrap;
  animation: marquee 40s linear infinite;
  font-size: 1.1rem;
}
.stat-band-track > span { display: inline-block; }
@keyframes marquee {
  from { transform: translateX(0); }
  to   { transform: translateX(-50%); }
}

/* =========================================================
   MANIFEST
   ========================================================= */
.manifest { padding: 7rem 0 5rem; position: relative; }
.manifest-inner {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 5rem;
  align-items: center;
  margin-bottom: 5rem;
}
.manifest-title {
  font-size: clamp(2.2rem, 5vw, 3.6rem);
  margin-bottom: 1.5rem;
  font-weight: 900;
}
.manifest-body {
  font-size: 1.08rem;
  color: var(--brun-mid);
  margin-bottom: 1.5rem;
  line-height: 1.7;
}
.manifest-bullets {
  margin-bottom: 1.5rem;
}
.manifest-bullets li {
  display: flex;
  align-items: center;
  gap: .7rem;
  padding: .5rem 0;
  color: var(--brun-mid);
}
.manifest-bullets svg { color: var(--verde); flex-shrink: 0; }

.manifest-visual { position: relative; }
.manifest-img {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-lg);
  aspect-ratio: 4/5;
}
.manifest-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 1.4s cubic-bezier(.2,.7,.2,1);
}
.manifest-img:hover img { transform: scale(1.06); }

.img-corner {
  position: absolute;
  width: 50px; height: 50px;
  border: 3px solid var(--oro);
  z-index: 2;
}
.img-corner--tl { top: -12px; left: -12px; border-right: none; border-bottom: none; }
.img-corner--br { bottom: -12px; right: -12px; border-left: none; border-top: none; }

.manifest-tags {
  position: absolute;
  bottom: -22px;
  left: 50%;
  transform: translateX(-50%);
  display: flex;
  gap: 6px;
  flex-wrap: wrap;
  justify-content: center;
  background: var(--crema);
  padding: 14px 18px;
  border-radius: 999px;
  box-shadow: var(--shadow);
  max-width: 92%;
}
.food-tag {
  display: inline-flex;
  align-items: center;
  gap: 4px;
  padding: .35rem .8rem;
  background: var(--crema2);
  border-radius: 999px;
  font-size: .78rem;
  font-weight: 700;
  color: var(--brun);
  white-space: nowrap;
  transition: var(--tr-fast);
  cursor: default;
}
.food-tag:hover { background: var(--rojo); color: #fff; transform: translateY(-2px); }

.manifest-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2rem;
  padding: 3rem 0;
  border-top: 1px dashed rgba(200,49,26,.25);
  border-bottom: 1px dashed rgba(200,49,26,.25);
  text-align: center;
}
.ms-item {
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .3rem;
}
.ms-value {
  display: inline-flex;
  align-items: baseline;
  justify-content: center;
  gap: 2px;
  line-height: 1;
}
.ms-num {
  font-family: var(--ff-display);
  font-size: clamp(2.5rem, 5vw, 3.6rem);
  color: var(--rojo);
  line-height: 1;
}
.ms-sfx {
  font-family: var(--ff-display);
  font-size: 1.6rem;
  color: var(--oro);
  line-height: 1;
}
.ms-lbl {
  font-size: .78rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--brun-clair);
  font-weight: 700;
  margin-top: .4rem;
}

/* =========================================================
   WORLDS
   ========================================================= */
.worlds {
  padding: 7rem 0;
  background:
    radial-gradient(circle at 80% 0%, rgba(232,165,32,.08), transparent 50%),
    var(--crema2);
}
.worlds-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
}
.world-card {
  background: #fff;
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow);
  transition: transform var(--tr), box-shadow var(--tr);
  display: flex;
  flex-direction: column;
  position: relative;
}
.world-card:hover {
  transform: translateY(-8px);
  box-shadow: var(--shadow-lg);
}
.world-card--featured {
  border: 2px solid var(--rojo);
}
.world-soon {
  position: absolute;
  top: 14px; right: -32px;
  background: var(--rojo);
  color: #fff;
  font-family: var(--ff-display);
  font-size: .82rem;
  letter-spacing: .12em;
  padding: 6px 40px;
  transform: rotate(35deg);
  z-index: 3;
  box-shadow: 0 6px 18px rgba(200,49,26,.35);
  animation: ribbon-flash 2.4s ease-in-out infinite;
}
@keyframes ribbon-flash {
  0%,100% { background: var(--rojo); }
  50%     { background: var(--oro); color: var(--brun); }
}
.world-img { position: relative; aspect-ratio: 5/3; overflow: hidden; }
.world-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 1s cubic-bezier(.2,.7,.2,1);
}
.world-card:hover .world-img img { transform: scale(1.08); }
.world-img::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 60%, rgba(28,10,2,.4));
}

.world-body { padding: 2rem 1.8rem; flex: 1; display: flex; flex-direction: column; }
.world-num {
  font-family: var(--ff-display);
  font-size: 1.8rem;
  color: var(--rojo);
  letter-spacing: .05em;
  display: inline-block;
  margin-bottom: .3rem;
}
.world-body h3 {
  font-size: 1.7rem;
  margin-bottom: .8rem;
}
.world-body > p {
  color: var(--brun-mid);
  margin-bottom: 1rem;
  line-height: 1.6;
}
.world-bullets {
  margin-bottom: 1.4rem;
  flex: 1;
}
.world-bullets li {
  padding: .35rem 0 .35rem 1.2rem;
  position: relative;
  color: var(--brun-mid);
  font-size: .92rem;
}
.world-bullets li::before {
  content: '✦';
  color: var(--rojo);
  position: absolute;
  left: 0;
  top: .4rem;
}

/* =========================================================
   MENU
   ========================================================= */
.menu-section {
  padding: 6rem 0 5rem;
  position: relative;
  overflow: hidden;
}
.menu-bg-deco {
  position: absolute;
  inset: 0;
  background-image:
    radial-gradient(circle at 10% 20%, rgba(232,165,32,.05) 0, transparent 30%),
    radial-gradient(circle at 90% 80%, rgba(200,49,26,.05) 0, transparent 30%);
  pointer-events: none;
}

/* Plat du jour — version compacte */
.dish-of-day {
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 1.5rem;
  background: linear-gradient(135deg, var(--brun) 0%, #1A0701 100%);
  color: var(--crema);
  padding: 1.4rem;
  border-radius: var(--radius);
  margin-bottom: 2.5rem;
  position: relative;
  overflow: hidden;
  box-shadow: var(--shadow);
  align-items: center;
}
.dish-of-day::before {
  content: '';
  position: absolute;
  top: 0; right: 0;
  width: 200px; height: 200px;
  background: radial-gradient(circle, rgba(232,165,32,.25), transparent 70%);
  border-radius: 50%;
  filter: blur(40px);
}
.dod-img {
  border-radius: var(--radius-sm);
  overflow: hidden;
  aspect-ratio: 1/1;
  position: relative;
  z-index: 1;
}
.dod-img img { width: 100%; height: 100%; object-fit: cover; }
.dod-body { position: relative; z-index: 1; }
.dod-tag {
  display: inline-block;
  background: var(--oro);
  color: var(--brun);
  padding: .25rem .7rem;
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .14em;
  border-radius: 999px;
  margin-bottom: .6rem;
}
.dod-body h3 {
  color: var(--crema);
  font-size: 1.5rem;
  margin-bottom: .35rem;
}
.dod-body > p {
  color: rgba(255,248,238,.85);
  margin-bottom: .9rem;
  line-height: 1.55;
  font-size: .92rem;
}
.dod-bottom {
  display: flex;
  align-items: center;
  gap: 1.2rem;
  flex-wrap: wrap;
}
.dod-price {
  font-family: var(--ff-display);
  font-size: 1.8rem;
  color: var(--oro);
}
.dod-spice {
  position: absolute;
  top: .8rem; right: .8rem;
  font-size: 1rem;
  z-index: 1;
  letter-spacing: -2px;
}

/* Filters */
.menu-filters {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: 6px;
  margin-bottom: 2rem;
}
.filter-btn {
  padding: .45rem 1rem;
  background: var(--crema2);
  color: var(--brun);
  font-weight: 700;
  font-size: .82rem;
  border-radius: 999px;
  transition: var(--tr-fast);
  border: 1px solid transparent;
  white-space: nowrap;
}
.filter-btn:hover { background: var(--crema3); transform: translateY(-2px); }
.filter-btn.is-active {
  background: var(--rojo);
  color: #fff;
  box-shadow: 0 4px 16px rgba(200,49,26,.3);
}

/* Menu grid — version compacte horizontale */
.menu-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 14px;
}
.menu-card {
  background: #fff;
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: transform var(--tr-fast), box-shadow var(--tr-fast), border-color var(--tr-fast), opacity var(--tr);
  display: grid;
  grid-template-columns: 110px 1fr;
  gap: 0;
  position: relative;
  border: 1px solid rgba(200,49,26,.08);
  cursor: pointer;
}
.menu-card.is-hidden {
  opacity: 0;
  transform: scale(.96);
  pointer-events: none;
  position: absolute;
  visibility: hidden;
  width: 0;
  height: 0;
}
.menu-card:hover {
  transform: translateY(-3px);
  box-shadow: var(--shadow);
  border-color: rgba(200,49,26,.25);
}
.menu-card__img-wrap {
  position: relative;
  overflow: hidden;
  background: var(--crema2);
}
.menu-card__img-wrap img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform .8s cubic-bezier(.2,.7,.2,1);
}
.menu-card:hover .menu-card__img-wrap img { transform: scale(1.08); }

.card-badge {
  position: absolute;
  top: 8px; left: 8px;
  background: var(--brun);
  color: var(--crema);
  font-size: .6rem;
  font-weight: 800;
  letter-spacing: .1em;
  padding: .25rem .5rem;
  border-radius: 999px;
  line-height: 1;
}
.card-badge--gold { background: var(--oro); color: var(--brun); }
.card-badge--red  { background: var(--rojo); color: #fff; }

.card-fav {
  position: absolute;
  top: 6px; right: 6px;
  width: 28px; height: 28px;
  border-radius: 50%;
  background: rgba(255,255,255,.92);
  color: var(--brun-clair);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: var(--tr-fast);
  backdrop-filter: blur(4px);
  z-index: 2;
}
.card-fav svg { width: 13px; height: 13px; }
.card-fav:hover { background: #fff; transform: scale(1.1); color: var(--rojo); }
.card-fav.is-faved { color: var(--rojo); background: #fff; }

.menu-card__body {
  padding: .9rem 1rem;
  display: flex;
  flex-direction: column;
  gap: .35rem;
  min-width: 0;
}
.menu-card__top {
  display: flex;
  align-items: baseline;
  gap: .5rem;
  position: relative;
}
.menu-card__top h3 {
  font-size: 1rem;
  line-height: 1.2;
  font-weight: 700;
  color: var(--brun);
  font-family: var(--ff-serif);
  flex-shrink: 0;
  max-width: 75%;
}
.menu-card__top::after {
  content: '';
  flex: 1;
  margin: 0 4px;
  height: 0;
  border-bottom: 2px dotted rgba(200,49,26,.25);
  transform: translateY(-3px);
}
.price {
  font-family: var(--ff-display);
  font-size: 1.05rem;
  color: var(--rojo);
  flex-shrink: 0;
  letter-spacing: .03em;
  margin-left: auto;
}
.menu-card__body > p {
  color: var(--brun-mid);
  font-size: .82rem;
  line-height: 1.45;
  display: -webkit-box;
  -webkit-line-clamp: 2;
  -webkit-box-orient: vertical;
  overflow: hidden;
}
.card-tags {
  display: flex;
  flex-wrap: wrap;
  gap: 4px;
  margin-top: .15rem;
}
.tag {
  font-size: .65rem;
  padding: .15rem .5rem;
  background: var(--crema2);
  border-radius: 999px;
  color: var(--brun-clair);
  font-weight: 700;
  letter-spacing: .02em;
  line-height: 1.4;
}
.tag--hot { background: rgba(200,49,26,.1); color: var(--rojo); }
.tag--star { background: rgba(232,165,32,.18); color: var(--oro-dark); }

/* "Détails" button is now hidden — full card is clickable via JS */
.card-detail {
  display: none;
}

.menu-bottom-note {
  margin-top: 2rem;
  text-align: center;
  padding: 1rem 1.5rem;
  background: var(--crema2);
  border-radius: var(--radius);
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: .8rem 1.5rem;
  font-size: .9rem;
}
.menu-bottom-note p { color: var(--brun-mid); }

/* =========================================================
   MENU MODAL
   ========================================================= */
.modal {
  position: fixed;
  inset: 0;
  z-index: 9500;
  display: none;
  align-items: center;
  justify-content: center;
  padding: 2rem;
}
.modal.is-open { display: flex; }
.modal-overlay {
  position: absolute;
  inset: 0;
  background: rgba(28,10,2,.75);
  backdrop-filter: blur(6px);
  animation: fade-in .25s ease;
}
.modal-content {
  position: relative;
  background: #fff;
  border-radius: var(--radius-lg);
  max-width: 720px;
  width: 100%;
  max-height: 90vh;
  overflow-y: auto;
  box-shadow: var(--shadow-lg);
  animation: modal-pop .35s cubic-bezier(.2,.7,.2,1);
}
@keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }
@keyframes modal-pop { from { opacity: 0; transform: translateY(20px) scale(.95); } to { opacity: 1; transform: none; } }
.modal-close {
  position: absolute;
  top: 14px; right: 14px;
  width: 40px; height: 40px;
  border-radius: 50%;
  background: var(--crema2);
  color: var(--brun);
  z-index: 5;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: var(--tr-fast);
}
.modal-close:hover { background: var(--rojo); color: #fff; transform: rotate(90deg); }
.modal-body img { width: 100%; aspect-ratio: 16/9; object-fit: cover; border-radius: var(--radius-lg) var(--radius-lg) 0 0; }
.modal-body-inner { padding: 2rem; }
.modal-body h3 { font-size: 2rem; margin-bottom: .5rem; }
.modal-body .price { font-size: 2rem; }
.modal-body-meta { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; margin-bottom: 1rem; }
.modal-body p.long { color: var(--brun-mid); line-height: 1.7; margin-bottom: 1.5rem; }
.modal-body h4 { font-size: 1rem; margin-bottom: .5rem; color: var(--rojo); text-transform: uppercase; letter-spacing: .12em; }
.modal-body ul.ingredients { display: flex; flex-wrap: wrap; gap: .4rem; margin-bottom: 1.5rem; }
.modal-body ul.ingredients li {
  background: var(--crema2);
  color: var(--brun);
  padding: .3rem .7rem;
  border-radius: 999px;
  font-size: .85rem;
  font-weight: 700;
}
.modal-body .allergens { color: var(--brun-clair); font-size: .85rem; margin-bottom: 1.5rem; }

/* =========================================================
   FOOD TRUCK
   ========================================================= */
.ft-section { padding: 0 0 7rem; background: var(--crema); }

.ft-hero {
  position: relative;
  height: 56vh;
  min-height: 420px;
  overflow: hidden;
  margin-bottom: 4rem;
}
.ft-hero img { width: 100%; height: 100%; object-fit: cover; }
.ft-hero-overlay {
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(28,10,2,.5) 0%, rgba(28,10,2,.8) 100%);
  display: flex;
  align-items: center;
  justify-content: center;
  text-align: center;
  color: var(--crema);
  padding: 1rem;
}
.ft-hero-content { max-width: 700px; }
.ft-hero-content h2 {
  font-size: clamp(2rem, 5vw, 3.6rem);
  color: var(--crema);
  margin-bottom: 1rem;
}
.ft-hero-content em { color: var(--oro); }
.ft-hero-content > p { color: rgba(255,248,238,.85); font-size: 1.05rem; }

/* Stats */
.ft-stats {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2rem;
  padding: 3rem 2rem;
  background: var(--brun);
  color: var(--crema);
  border-radius: var(--radius-lg);
  margin-bottom: 4rem;
  text-align: center;
}
.ft-stat {
  display: flex;
  flex-direction: column;
  gap: .3rem;
}
.stat-num {
  font-family: var(--ff-display);
  font-size: clamp(2.5rem, 5vw, 3.5rem);
  color: var(--oro);
  line-height: 1;
}
.stat-sfx {
  font-family: var(--ff-display);
  font-size: 1.5rem;
  color: var(--oro);
  margin-left: -4px;
}
.stat-lbl {
  font-size: .78rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: rgba(255,248,238,.75);
  font-weight: 700;
  margin-top: .4rem;
}

/* Week */
.ft-week { margin-bottom: 4rem; }
.ft-week-title {
  font-size: 1.8rem;
  text-align: center;
  margin-bottom: .3rem;
}
.ft-week-sub {
  text-align: center;
  color: var(--brun-clair);
  margin-bottom: 2rem;
}

.ft-week-grid {
  display: grid;
  grid-template-columns: repeat(7, 1fr);
  gap: 12px;
  margin-bottom: 2rem;
}
.day-card {
  background: #fff;
  border: 2px solid transparent;
  border-radius: var(--radius);
  padding: 1.2rem .8rem;
  text-align: center;
  transition: var(--tr);
  display: flex;
  flex-direction: column;
  gap: .35rem;
  position: relative;
  box-shadow: var(--shadow-sm);
}
.day-card:hover, .day-card.is-active {
  border-color: var(--rojo);
  transform: translateY(-4px);
  box-shadow: var(--shadow);
}
.day-card.is-today {
  background: var(--rojo);
  color: #fff;
  box-shadow: 0 8px 22px rgba(200,49,26,.35);
}
.day-card.is-today:hover { transform: translateY(-4px) scale(1.03); }
.day-card.day-card--off { opacity: .65; }
.day-name {
  font-family: var(--ff-display);
  font-size: 1.4rem;
  color: var(--brun);
  letter-spacing: .05em;
}
.day-card.is-today .day-name { color: #fff; }
.day-loc {
  font-size: .82rem;
  font-weight: 700;
  color: var(--brun);
  line-height: 1.3;
}
.day-card.is-today .day-loc { color: rgba(255,255,255,.95); }
.day-time {
  font-size: .76rem;
  color: var(--brun-clair);
  letter-spacing: .03em;
}
.day-card.is-today .day-time { color: rgba(255,255,255,.85); }
.day-pin {
  position: absolute;
  top: 8px; right: 8px;
  color: var(--rojo);
  opacity: .5;
}
.day-card.is-today .day-pin { color: var(--oro); opacity: 1; }

/* Day detail */
.day-detail {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  background: var(--crema2);
  border-radius: var(--radius-lg);
  padding: 2rem;
  align-items: center;
}
.dd-map {
  border-radius: var(--radius);
  overflow: hidden;
  background: #FFF0DC;
  aspect-ratio: 4/3;
  position: relative;
}
.dd-map svg { width: 100%; height: 100%; display: block; }
.dd-info h4 {
  font-size: 1.6rem;
  margin-bottom: .8rem;
}
.dd-loc, .dd-time {
  display: flex;
  align-items: center;
  gap: .5rem;
  margin-bottom: .5rem;
  color: var(--brun-mid);
}
.dd-loc svg, .dd-time svg { color: var(--rojo); flex-shrink: 0; }
.dd-desc {
  color: var(--brun-mid);
  margin: 1rem 0;
  line-height: 1.6;
}
.dd-actions { display: flex; gap: .8rem; flex-wrap: wrap; }

.map-pulse {
  animation: map-pulse 2s ease-out infinite;
  transform-origin: center;
}
@keyframes map-pulse {
  0% { transform: scale(.8); opacity: .8; }
  100% { transform: scale(2.5); opacity: 0; }
}

/* Privatisation */
.ft-privat {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  align-items: center;
}
.ftp-text h3 {
  font-size: clamp(1.8rem, 3.5vw, 2.4rem);
  margin-bottom: 1rem;
}
.ftp-text > p {
  color: var(--brun-mid);
  margin-bottom: 1.5rem;
  line-height: 1.7;
}
.ftp-bullets { margin-bottom: 1.5rem; }
.ftp-bullets li {
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: .4rem 0;
  color: var(--brun-mid);
}
.ftp-bullets svg { color: var(--verde); flex-shrink: 0; }
.ftp-img {
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-lg);
  aspect-ratio: 4/3;
}
.ftp-img img { width: 100%; height: 100%; object-fit: cover; }

/* =========================================================
   GALLERY
   ========================================================= */
.gallery-section {
  padding: 7rem 0;
  background: var(--crema2);
}
.gallery-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  grid-auto-rows: 200px;
  gap: 14px;
}
.g-item {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  cursor: pointer;
  transition: var(--tr);
}
.g-tall { grid-row: span 2; }
.g-wide { grid-column: span 2; }
.g-item img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 1s cubic-bezier(.2,.7,.2,1);
}
.g-item::after {
  content: '';
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, transparent 50%, rgba(28,10,2,.7));
  opacity: 0;
  transition: opacity var(--tr);
}
.g-item:hover img { transform: scale(1.1); }
.g-item:hover::after { opacity: 1; }
.g-cap {
  position: absolute;
  bottom: 12px;
  left: 14px;
  color: var(--crema);
  font-family: var(--ff-script);
  font-size: 1.1rem;
  z-index: 2;
  opacity: 0;
  transform: translateY(10px);
  transition: opacity var(--tr), transform var(--tr);
}
.g-item:hover .g-cap { opacity: 1; transform: none; }

.gallery-foot {
  margin-top: 3rem;
  text-align: center;
  color: var(--brun-mid);
}
.ig-link {
  display: inline-flex;
  align-items: center;
  gap: .4rem;
  margin-left: .5rem;
  color: var(--rojo);
  font-weight: 700;
  border-bottom: 1px solid currentColor;
}

/* Lightbox */
.lightbox {
  position: fixed;
  inset: 0;
  z-index: 9700;
  background: rgba(15,7,3,.94);
  display: none;
  align-items: center;
  justify-content: center;
  padding: 2rem;
  flex-direction: column;
  gap: 1rem;
}
.lightbox.is-open { display: flex; }
.lightbox img {
  max-width: min(90vw, 1100px);
  max-height: 80vh;
  border-radius: var(--radius);
  box-shadow: 0 20px 60px rgba(0,0,0,.5);
  animation: modal-pop .3s ease;
}
.lb-cap {
  font-family: var(--ff-script);
  color: var(--oro);
  font-size: 1.3rem;
}
.lb-close {
  position: absolute;
  top: 24px; right: 24px;
  width: 48px; height: 48px;
  background: rgba(255,255,255,.1);
  color: #fff;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: var(--tr-fast);
  backdrop-filter: blur(8px);
}
.lb-close:hover { background: var(--rojo); transform: rotate(90deg); }
.lb-nav {
  position: absolute;
  top: 50%;
  transform: translateY(-50%);
  font-size: 3rem;
  color: #fff;
  background: rgba(255,255,255,.08);
  width: 56px; height: 56px;
  border-radius: 50%;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: var(--tr-fast);
  font-family: var(--ff-serif);
  backdrop-filter: blur(8px);
}
.lb-nav:hover { background: var(--rojo); }
.lb-prev { left: 24px; }
.lb-next { right: 24px; }

/* =========================================================
   ABOUT
   ========================================================= */
.about-section { padding: 7rem 0; }

.about-story {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 4rem;
  margin-bottom: 5rem;
  align-items: center;
}
.as-img {
  position: relative;
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow-lg);
  aspect-ratio: 4/5;
}
.as-img img {
  width: 100%; height: 100%;
  object-fit: cover;
  transition: transform 1.4s ease;
}
.as-img:hover img { transform: scale(1.06); }

.as-text { display: flex; flex-direction: column; gap: 1rem; }
.as-line {
  display: flex;
  gap: 1rem;
  padding: 1.2rem 1.4rem;
  background: var(--crema2);
  border-radius: var(--radius);
  border-left: 4px solid var(--rojo);
  font-size: 1rem;
  color: var(--brun-mid);
  line-height: 1.6;
  transition: var(--tr-fast);
}
.as-line:hover { transform: translateX(6px); border-left-color: var(--oro); }
.as-icon { font-size: 1.5rem; flex-shrink: 0; }

/* Founders */
.founders {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 2rem;
  margin-bottom: 5rem;
}
.founder-card {
  background: #fff;
  border-radius: var(--radius-lg);
  overflow: hidden;
  box-shadow: var(--shadow);
  display: grid;
  grid-template-columns: 200px 1fr;
  gap: 0;
  transition: var(--tr);
}
.founder-card:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); }
.founder-img { aspect-ratio: 4/5; overflow: hidden; }
.founder-img img { width: 100%; height: 100%; object-fit: cover; }
.founder-body { padding: 1.8rem 1.5rem; }
.founder-role {
  display: inline-block;
  font-size: .72rem;
  letter-spacing: .14em;
  text-transform: uppercase;
  color: var(--rojo);
  font-weight: 800;
  margin-bottom: .4rem;
}
.founder-body h3 {
  font-size: 1.6rem;
  margin-bottom: .6rem;
}
.founder-body p {
  color: var(--brun-mid);
  font-size: .92rem;
  line-height: 1.6;
}
.founder-sign {
  font-family: var(--ff-hand);
  font-size: 1.4rem;
  color: var(--rojo);
  margin-top: .8rem;
  font-style: italic;
}

/* Values */
.values-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1.5rem;
}
.value-item {
  text-align: center;
  background: var(--crema2);
  padding: 2rem 1.4rem;
  border-radius: var(--radius);
  transition: var(--tr);
  border: 2px solid transparent;
}
.value-item:hover {
  background: #fff;
  border-color: var(--rojo);
  transform: translateY(-4px);
  box-shadow: var(--shadow);
}
.value-ico {
  font-size: 2.4rem;
  display: inline-block;
  margin-bottom: .8rem;
  transition: transform var(--tr);
}
.value-item:hover .value-ico { transform: scale(1.15) rotate(-8deg); }
.value-item h4 {
  font-size: .82rem;
  letter-spacing: .14em;
  color: var(--rojo);
  margin-bottom: .8rem;
  text-transform: uppercase;
  font-weight: 800;
}
.value-item p { color: var(--brun-mid); font-size: .9rem; line-height: 1.55; }

/* =========================================================
   PROCESS
   ========================================================= */
.process {
  padding: 7rem 0;
  background:
    repeating-linear-gradient(45deg, transparent 0 50px, rgba(232,165,32,.03) 50px 51px),
    var(--crema2);
}
.proc-timeline {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 2rem;
  position: relative;
}
.proc-timeline::before {
  content: '';
  position: absolute;
  top: 30px;
  left: 12.5%;
  right: 12.5%;
  height: 2px;
  background: repeating-linear-gradient(90deg, var(--rojo) 0 8px, transparent 8px 16px);
  z-index: 0;
}
.proc-step {
  position: relative;
  z-index: 1;
  text-align: center;
}
.proc-num {
  width: 60px; height: 60px;
  margin: 0 auto 1.2rem;
  background: var(--rojo);
  color: #fff;
  border-radius: 50%;
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--ff-display);
  font-size: 1.4rem;
  letter-spacing: .03em;
  box-shadow: 0 6px 20px rgba(200,49,26,.35);
  border: 4px solid var(--crema);
  transition: var(--tr);
}
.proc-step:hover .proc-num { transform: scale(1.1) rotate(-10deg); }
.proc-body h3 { font-size: 1.25rem; margin-bottom: .6rem; }
.proc-body > p {
  color: var(--brun-mid);
  font-size: .92rem;
  line-height: 1.55;
  margin-bottom: .8rem;
}
.proc-tag {
  display: inline-block;
  font-size: .78rem;
  background: #fff;
  padding: .35rem .7rem;
  border-radius: 999px;
  color: var(--brun);
  font-weight: 700;
  box-shadow: var(--shadow-sm);
}

/* =========================================================
   TESTIMONIALS
   ========================================================= */
.testimonials { padding: 7rem 0; overflow: hidden; }
.press-row {
  display: flex;
  flex-wrap: wrap;
  justify-content: center;
  align-items: center;
  gap: 2rem 3rem;
  margin-bottom: 4rem;
  padding: 1.5rem 0;
  border-top: 1px dashed rgba(200,49,26,.25);
  border-bottom: 1px dashed rgba(200,49,26,.25);
}
.press-logo {
  font-family: var(--ff-display);
  font-size: 1.1rem;
  color: var(--brun-clair);
  letter-spacing: .1em;
  opacity: .65;
  transition: opacity var(--tr-fast);
}
.press-logo:hover { opacity: 1; color: var(--rojo); }

.testi-track-wrap {
  position: relative;
  overflow: hidden;
  margin-bottom: 1.5rem;
}
.testi-track {
  display: flex;
  gap: 2rem;
  transition: transform .6s cubic-bezier(.2,.7,.2,1);
}
.testi-card {
  flex: 0 0 calc(33.333% - 1.34rem);
  background: #fff;
  border-radius: var(--radius-lg);
  padding: 2rem;
  box-shadow: var(--shadow);
  border: 1px solid rgba(200,49,26,.06);
  position: relative;
}
.testi-card::before {
  content: '“';
  font-family: var(--ff-serif);
  font-size: 5rem;
  position: absolute;
  top: -20px; left: 16px;
  color: var(--oro);
  line-height: 1;
}
.testi-stars {
  color: var(--oro);
  letter-spacing: .15em;
  margin-bottom: 1rem;
  font-size: 1.1rem;
}
.testi-card p {
  color: var(--brun-mid);
  font-style: italic;
  line-height: 1.6;
  margin-bottom: 1.2rem;
}
.testi-card p strong { color: var(--brun); font-style: normal; }
.testi-meta {
  display: flex;
  flex-direction: column;
  border-top: 1px solid rgba(200,49,26,.12);
  padding-top: 1rem;
  font-size: .85rem;
  gap: 2px;
}
.testi-meta strong { color: var(--brun); font-weight: 800; }
.testi-meta span { color: var(--brun-clair); }
.testi-reply {
  display: block;
  margin-top: .5rem;
  padding: .5rem .7rem;
  background: var(--crema2);
  border-left: 3px solid var(--rojo);
  border-radius: 0 var(--radius-sm) var(--radius-sm) 0;
  color: var(--brun-mid);
  font-style: italic;
  font-size: .78rem;
  line-height: 1.45;
}

.testi-dots {
  display: flex;
  justify-content: center;
  gap: 8px;
  margin-top: 1rem;
}
.testi-dot {
  width: 10px; height: 10px;
  border-radius: 50%;
  background: var(--crema3);
  transition: var(--tr-fast);
}
.testi-dot.is-active { background: var(--rojo); width: 28px; border-radius: 999px; }

/* =========================================================
   EVENTS
   ========================================================= */
.events-section {
  padding: 7rem 0;
  background:
    radial-gradient(circle at 20% 80%, rgba(232,165,32,.08), transparent 50%),
    var(--crema);
}
.events-grid {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 2rem;
  margin-bottom: 4rem;
  align-items: stretch;
}
.event-pack {
  background: #fff;
  border-radius: var(--radius-lg);
  padding: 2rem 1.8rem;
  box-shadow: var(--shadow);
  display: flex;
  flex-direction: column;
  position: relative;
  border: 2px solid transparent;
  transition: var(--tr);
}
.event-pack:hover { transform: translateY(-6px); box-shadow: var(--shadow-lg); }
.event-pack--featured {
  border-color: var(--rojo);
  background: linear-gradient(180deg, #fff 0%, var(--crema2) 100%);
  transform: scale(1.03);
  box-shadow: var(--shadow-lg);
}
.event-pack--featured:hover { transform: scale(1.03) translateY(-6px); }
.ep-ribbon {
  position: absolute;
  top: -12px; left: 50%;
  transform: translateX(-50%);
  background: var(--rojo);
  color: #fff;
  padding: .35rem 1rem;
  border-radius: 999px;
  font-weight: 800;
  font-size: .72rem;
  letter-spacing: .14em;
  box-shadow: 0 4px 16px rgba(200,49,26,.4);
}
.ep-head { text-align: center; padding-bottom: 1.2rem; border-bottom: 1px dashed rgba(200,49,26,.2); margin-bottom: 1.2rem; }
.ep-tag {
  display: inline-block;
  font-size: .72rem;
  letter-spacing: .14em;
  color: var(--rojo);
  font-weight: 800;
  margin-bottom: .5rem;
}
.ep-head h3 { font-size: 1.7rem; margin-bottom: .3rem; }
.ep-pers { color: var(--brun-clair); font-size: .9rem; }

.ep-price {
  text-align: center;
  margin-bottom: 1.5rem;
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 4px;
}
.ep-price .from { font-size: .78rem; color: var(--brun-clair); margin-right: 6px; text-transform: uppercase; letter-spacing: .1em; }
.ep-price .num { font-family: var(--ff-display); font-size: 3rem; color: var(--rojo); line-height: 1; }
.ep-price .cur { font-family: var(--ff-display); font-size: 1.4rem; color: var(--rojo); }
.ep-price .per { font-size: .9rem; color: var(--brun-clair); margin-left: 4px; }

.ep-bullets { flex: 1; margin-bottom: 1.5rem; }
.ep-bullets li {
  display: flex;
  align-items: center;
  gap: .6rem;
  padding: .45rem 0;
  font-size: .92rem;
  color: var(--brun-mid);
  border-bottom: 1px solid rgba(200,49,26,.06);
}
.ep-bullets li:last-child { border-bottom: none; }
.ep-bullets svg { color: var(--verde); flex-shrink: 0; }

.event-pack .btn { align-self: center; }

.event-extras { text-align: center; padding-top: 2rem; border-top: 1px dashed rgba(200,49,26,.2); }
.event-extras h4 { font-size: 1.2rem; margin-bottom: 1rem; color: var(--brun-clair); }
.extras-row {
  display: inline-flex;
  flex-wrap: wrap;
  justify-content: center;
  gap: .5rem;
}
.extra-pill {
  background: var(--crema2);
  color: var(--brun);
  padding: .5rem 1rem;
  border-radius: 999px;
  font-weight: 700;
  font-size: .88rem;
  transition: var(--tr-fast);
  cursor: default;
}
.extra-pill:hover { background: var(--rojo); color: #fff; transform: translateY(-2px); }

/* =========================================================
   FAQ
   ========================================================= */
.faq { padding: 7rem 0; background: var(--crema2); }
.faq-list {
  max-width: 820px;
  margin: 0 auto;
  display: flex;
  flex-direction: column;
  gap: 12px;
}
.faq-item {
  background: #fff;
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
  transition: box-shadow var(--tr);
  border: 1px solid transparent;
}
.faq-item[open] { box-shadow: var(--shadow); border-color: rgba(200,49,26,.12); }
.faq-item summary {
  padding: 1.2rem 1.5rem;
  cursor: pointer;
  display: flex;
  justify-content: space-between;
  align-items: center;
  font-weight: 700;
  color: var(--brun);
  font-size: 1rem;
  list-style: none;
  font-family: var(--ff-serif);
  transition: var(--tr-fast);
}
.faq-item summary::-webkit-details-marker { display: none; }
.faq-item summary:hover { color: var(--rojo); }
.faq-icon {
  width: 32px; height: 32px;
  border-radius: 50%;
  background: var(--crema2);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--rojo);
  flex-shrink: 0;
  transition: var(--tr);
}
.faq-item[open] .faq-icon { background: var(--rojo); color: #fff; transform: rotate(45deg); }
.faq-body {
  padding: 0 1.5rem 1.4rem;
  color: var(--brun-mid);
  line-height: 1.65;
}

/* =========================================================
   RESERVATION
   ========================================================= */
.resa-section { padding: 7rem 0; }
.resa-inner {
  display: grid;
  grid-template-columns: 1.7fr 1fr;
  gap: 3rem;
  align-items: start;
}

.resa-form {
  background: #fff;
  padding: 2.5rem;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
  border: 1px solid rgba(200,49,26,.08);
}

/* Stepper */
.resa-steps {
  display: flex;
  align-items: center;
  justify-content: space-between;
  margin-bottom: 2rem;
  position: relative;
  padding: 0 1rem;
}
.resa-steps::before {
  content: '';
  position: absolute;
  top: 18px;
  left: 14%; right: 14%;
  height: 2px;
  background: var(--crema2);
  z-index: 0;
}
.step {
  position: relative;
  z-index: 1;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .4rem;
}
.step-num {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: var(--crema2);
  color: var(--brun-clair);
  display: flex;
  align-items: center;
  justify-content: center;
  font-family: var(--ff-display);
  font-size: 1.1rem;
  border: 2px solid var(--crema2);
  transition: var(--tr);
}
.step-lbl {
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: var(--brun-clair);
}
.step.is-active .step-num,
.step.is-done .step-num {
  background: var(--rojo);
  color: #fff;
  border-color: var(--rojo);
}
.step.is-active .step-lbl,
.step.is-done .step-lbl { color: var(--rojo); }

/* Panes */
.resa-pane { display: none; animation: fade-up .4s ease; }
.resa-pane.is-active { display: block; }

.form-row {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin-bottom: 1.2rem;
}
.form-group { margin-bottom: 1.2rem; }
.form-group label {
  display: block;
  font-size: .72rem;
  letter-spacing: .14em;
  font-weight: 800;
  color: var(--brun-clair);
  margin-bottom: .5rem;
  text-transform: uppercase;
}
.form-group input,
.form-group select,
.form-group textarea {
  width: 100%;
  padding: .9rem 1rem;
  border: 2px solid var(--crema2);
  border-radius: var(--radius);
  font-size: .95rem;
  background: var(--crema);
  color: var(--brun);
  transition: var(--tr-fast);
}
.form-group input:focus,
.form-group select:focus,
.form-group textarea:focus {
  border-color: var(--rojo);
  background: #fff;
  outline: none;
  box-shadow: 0 0 0 4px rgba(200,49,26,.1);
}
.field-hint {
  display: block;
  font-size: .82rem;
  color: var(--brun-clair);
  margin-top: .4rem;
}

.persons-sel {
  display: inline-flex;
  align-items: center;
  background: var(--crema2);
  border-radius: 999px;
  padding: 6px;
  gap: 4px;
}
.p-btn {
  width: 38px; height: 38px;
  border-radius: 50%;
  background: #fff;
  color: var(--rojo);
  font-size: 1.3rem;
  font-weight: 800;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  transition: var(--tr-fast);
  box-shadow: var(--shadow-sm);
}
.p-btn:hover { background: var(--rojo); color: #fff; }
.p-display {
  min-width: 90px;
  text-align: center;
  font-family: var(--ff-display);
  font-size: 1.4rem;
  color: var(--brun);
  display: flex;
  align-items: baseline;
  justify-content: center;
  gap: 4px;
  letter-spacing: .03em;
}
.p-unit { font-family: var(--ff-sans); font-size: .8rem; color: var(--brun-clair); font-weight: 700; }

.radio-cards {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 8px;
}
.radio-card { cursor: pointer; }
.radio-card input { display: none; }
.radio-card span {
  display: flex;
  flex-direction: column;
  text-align: center;
  padding: .9rem;
  border: 2px solid var(--crema2);
  border-radius: var(--radius);
  background: var(--crema);
  transition: var(--tr-fast);
}
.radio-card span strong { color: var(--brun); margin-bottom: 2px; font-family: var(--ff-serif); }
.radio-card span em { font-style: normal; font-size: .75rem; color: var(--brun-clair); }
.radio-card input:checked + span {
  border-color: var(--rojo);
  background: rgba(200,49,26,.06);
}
.radio-card input:checked + span strong { color: var(--rojo); }

.form-group--check { margin-bottom: 1rem; }
/* Override .form-group label which would otherwise force uppercase + tiny */
.form-group--check label.check-card,
.form-group label.check-card {
  display: flex;
  align-items: flex-start;
  gap: .8rem;
  cursor: pointer;
  font-size: .9rem;
  color: var(--brun-mid);
  font-weight: 400;
  line-height: 1.5;
  text-transform: none;
  letter-spacing: 0;
  font-family: var(--ff-sans);
  margin-bottom: 0;
  padding: .85rem 1rem;
  background: var(--crema2);
  border-radius: var(--radius-sm);
  border: 1px solid rgba(200,49,26,.15);
  transition: var(--tr-fast);
}
.check-card:hover {
  border-color: var(--rojo);
  background: rgba(200,49,26,.05);
}
.check-card input { display: none; }
.check-box {
  width: 22px;
  height: 22px;
  border: 2px solid var(--brun-clair);
  background: #fff;
  border-radius: 5px;
  flex-shrink: 0;
  position: relative;
  transition: var(--tr-fast);
  margin-top: 1px;
  box-shadow: 0 1px 2px rgba(0,0,0,.06);
}
.check-card:hover .check-box {
  border-color: var(--rojo);
}
.check-card input:checked + .check-box {
  background: var(--rojo);
  border-color: var(--rojo);
}
.check-card input:checked + .check-box::after {
  content: '';
  position: absolute;
  top: 2px;
  left: 6px;
  width: 6px;
  height: 11px;
  border: solid #fff;
  border-width: 0 2.5px 2.5px 0;
  transform: rotate(45deg);
}

.pane-actions {
  display: flex;
  justify-content: flex-end;
  margin-top: 1rem;
  gap: 1rem;
}
.pane-actions--split { justify-content: space-between; }

.resa-recap {
  background: var(--crema2);
  border-radius: var(--radius);
  padding: 1.5rem;
  margin-bottom: 1rem;
}
.recap-title {
  font-family: var(--ff-serif);
  font-size: 1.2rem;
  color: var(--brun);
  margin-bottom: 1rem;
  font-weight: 700;
}
.recap-grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: 12px;
  margin-bottom: 1rem;
}
.recap-item {
  background: #fff;
  padding: .8rem 1rem;
  border-radius: var(--radius-sm);
  border-left: 3px solid var(--rojo);
}
.recap-item .lbl {
  display: block;
  font-size: .7rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--brun-clair);
  font-weight: 800;
  margin-bottom: 2px;
}
.recap-item .val {
  font-weight: 700;
  color: var(--brun);
  font-size: .92rem;
}
.recap-fine {
  font-size: .82rem;
  color: var(--brun-clair);
  font-style: italic;
  text-align: center;
  margin-top: 1rem;
}

.resa-success {
  text-align: center;
  padding: 3rem 1.5rem;
  background: var(--crema2);
  border-radius: var(--radius);
  margin-top: 1rem;
}
.success-icon {
  font-size: 3.5rem;
  margin-bottom: 1rem;
  animation: bounce 1s ease;
}
@keyframes bounce {
  0%   { transform: scale(0); }
  60%  { transform: scale(1.2); }
  100% { transform: scale(1); }
}
.success-title {
  font-family: var(--ff-serif);
  font-size: 1.6rem;
  color: var(--rojo);
  margin-bottom: .8rem;
  font-weight: 800;
}
.resa-success p { color: var(--brun-mid); margin-bottom: .4rem; }
.success-foot {
  margin-top: 1rem;
  font-family: var(--ff-script);
  color: var(--rojo);
  font-size: 1.1rem;
}

/* Aside info panels */
.resa-info {
  display: flex;
  flex-direction: column;
  gap: 1.2rem;
}
.info-panel {
  background: #fff;
  border-radius: var(--radius);
  padding: 1.5rem;
  box-shadow: var(--shadow-sm);
  border-left: 4px solid var(--rojo);
}
.panel-title {
  font-family: var(--ff-serif);
  font-size: 1.05rem;
  font-weight: 700;
  color: var(--brun);
  margin-bottom: .8rem;
  display: flex;
  align-items: center;
  gap: .4rem;
}
.hours-list, .rules-list {
  display: flex;
  flex-direction: column;
  gap: .35rem;
  font-size: .88rem;
}
.hours-list li {
  display: flex;
  justify-content: space-between;
  padding: .35rem 0;
  border-bottom: 1px dashed rgba(200,49,26,.1);
  color: var(--brun-mid);
}
.hours-list li:last-child { border-bottom: none; }
.hours-list .closed { color: var(--brun-clair); opacity: .7; }
.hours-list .closed span:last-child { color: var(--rojo); font-weight: 700; }
.panel-fine {
  margin-top: .8rem;
  padding-top: .8rem;
  border-top: 1px dashed rgba(200,49,26,.15);
  font-size: .82rem;
  color: var(--brun-clair);
  font-style: italic;
}
.rules-list li {
  padding: .35rem 0 .35rem 1.2rem;
  position: relative;
  color: var(--brun-mid);
}
.rules-list li::before {
  content: '✓';
  color: var(--verde);
  position: absolute;
  left: 0;
  font-weight: 800;
}
.panel--cta { background: linear-gradient(135deg, var(--brun) 0%, #1A0701 100%); color: var(--crema); border-left-color: var(--oro); }
.panel--cta .panel-title { color: var(--crema); }
.panel--cta p { color: rgba(255,248,238,.8); }
.phone-link {
  display: block;
  font-family: var(--ff-display);
  font-size: 1.7rem;
  color: var(--oro);
  margin: .5rem 0 .3rem;
  letter-spacing: .03em;
}

/* =========================================================
   NEWSLETTER
   ========================================================= */
.newsletter {
  padding: 5rem 0;
  background: linear-gradient(135deg, var(--rojo) 0%, var(--rojo-dark) 100%);
  color: var(--crema);
  position: relative;
  overflow: hidden;
}
.newsletter::before, .newsletter::after {
  content: '';
  position: absolute;
  width: 300px; height: 300px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(232,165,32,.18), transparent 70%);
  filter: blur(40px);
}
.newsletter::before { top: -100px; left: -100px; }
.newsletter::after { bottom: -100px; right: -100px; }

.news-inner {
  display: grid;
  grid-template-columns: 1.3fr 1fr;
  gap: 2rem;
  align-items: center;
  position: relative;
  z-index: 1;
}
.news-text h2 {
  color: var(--crema);
  font-size: clamp(1.6rem, 3vw, 2.2rem);
  margin-bottom: .8rem;
}
.news-text p { color: rgba(255,248,238,.85); }
.news-form {
  display: flex;
  gap: .6rem;
  background: #fff;
  padding: 6px;
  border-radius: 999px;
  box-shadow: 0 12px 30px rgba(0,0,0,.18);
}
.news-form input {
  flex: 1;
  padding: 0 1rem;
  border: none;
  background: transparent;
  outline: none;
  color: var(--brun);
  font-size: .95rem;
}
.news-form .btn { white-space: nowrap; }
.news-success {
  grid-column: 1 / -1;
  text-align: center;
  font-family: var(--ff-script);
  font-size: 1.3rem;
  color: var(--oro);
  margin-top: 1rem;
}

/* =========================================================
   CONTACT
   ========================================================= */
.contact-section { padding: 7rem 0; background: var(--crema2); }
.contact-inner {
  display: grid;
  grid-template-columns: 1.4fr 1fr;
  gap: 3rem;
  align-items: start;
}
.contact-form {
  background: #fff;
  padding: 2.5rem;
  border-radius: var(--radius-lg);
  box-shadow: var(--shadow);
}
.contact-info {
  display: flex;
  flex-direction: column;
  gap: 1.2rem;
}
.info-block {
  display: flex;
  gap: 1rem;
  background: #fff;
  padding: 1.4rem;
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
  transition: var(--tr-fast);
}
.info-block:hover { transform: translateX(4px); }
.info-ico {
  width: 44px; height: 44px;
  border-radius: 50%;
  background: rgba(200,49,26,.1);
  color: var(--rojo);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  flex-shrink: 0;
}
.info-block h4 {
  font-size: .82rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--brun-clair);
  margin-bottom: .3rem;
}
.info-block p {
  color: var(--brun);
  font-weight: 700;
  line-height: 1.4;
}
.info-block a { color: var(--rojo); }
.info-sub {
  font-weight: 400 !important;
  color: var(--brun-clair) !important;
  font-size: .85rem;
  margin-top: 4px;
}

.contact-socials {
  background: #fff;
  padding: 1.4rem;
  border-radius: var(--radius);
  box-shadow: var(--shadow-sm);
}
.contact-socials h4 {
  font-size: .82rem;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: var(--brun-clair);
  margin-bottom: .8rem;
}
.social-row { display: flex; flex-wrap: wrap; gap: .5rem; }
.social-link {
  display: inline-flex;
  align-items: center;
  gap: .5rem;
  padding: .55rem 1rem;
  background: var(--crema2);
  color: var(--brun);
  border-radius: 999px;
  font-weight: 700;
  font-size: .85rem;
  transition: var(--tr-fast);
}
.social-link:hover { background: var(--rojo); color: #fff; transform: translateY(-2px); }

.mini-map {
  background: #fff;
  border-radius: var(--radius);
  overflow: hidden;
  box-shadow: var(--shadow-sm);
}
.mini-map svg { width: 100%; height: auto; display: block; }

/* =========================================================
   FOOTER
   ========================================================= */
.footer {
  background: linear-gradient(180deg, #1C0A02 0%, #0F0703 100%);
  color: var(--crema2);
  position: relative;
  padding-top: 80px;
}
.footer-papel {
  position: absolute;
  top: 14px; left: 0; right: 0;
  height: 60px;
  pointer-events: none;
  color: var(--rojo);
  animation: papel-sway 7s ease-in-out infinite;
}
.footer-papel svg { width: 100%; height: 100%; }
.footer-papel use:nth-child(2n) { color: var(--oro); }
.footer-papel use:nth-child(3n) { color: var(--verde); }
.footer-papel use:nth-child(4n) { color: var(--rosa); }

.footer-grid {
  display: grid;
  grid-template-columns: 1.2fr 1fr 1fr 1fr;
  gap: 2.5rem;
  padding: 4rem 0 2.5rem;
}
.footer-brand {
  display: flex;
  flex-direction: column;
  gap: .4rem;
}
.footer-logo {
  width: 64px; height: 64px;
  border-radius: 50%;
  border: 2px solid var(--oro);
  margin-bottom: .8rem;
}
.footer-name {
  font-family: var(--ff-serif);
  font-size: 1.4rem;
  font-weight: 900;
  color: var(--crema);
  letter-spacing: .03em;
}
.footer-slogan {
  font-family: var(--ff-script);
  color: var(--oro);
  font-size: 1.1rem;
}
.footer-tag {
  font-size: .82rem;
  color: rgba(255,248,238,.5);
  letter-spacing: .05em;
  margin-top: .3rem;
}
.footer-nav-title {
  font-family: var(--ff-serif);
  font-weight: 700;
  color: var(--oro);
  margin-bottom: 1rem;
  font-size: 1rem;
  letter-spacing: .03em;
}
.footer-nav ul, .footer-hours { display: flex; flex-direction: column; gap: .4rem; }
.footer-nav a {
  color: rgba(255,248,238,.7);
  font-size: .92rem;
  transition: var(--tr-fast);
}
.footer-nav a:hover { color: var(--oro); padding-left: 6px; }
.footer-col p { color: rgba(255,248,238,.7); font-size: .92rem; margin-bottom: .4rem; }
.footer-col a { color: var(--crema); }
.footer-col a:hover { color: var(--oro); }
.footer-socials {
  display: flex;
  gap: 8px;
  margin-top: 1rem;
}
.footer-socials a {
  width: 36px; height: 36px;
  border-radius: 50%;
  background: rgba(232,165,32,.1);
  display: inline-flex;
  align-items: center;
  justify-content: center;
  color: var(--oro);
  transition: var(--tr-fast);
}
.footer-socials a:hover { background: var(--oro); color: var(--brun); transform: translateY(-2px); }

.footer-hours li {
  display: flex;
  justify-content: space-between;
  font-size: .85rem;
  padding: .25rem 0;
  border-bottom: 1px dashed rgba(255,248,238,.08);
  color: rgba(255,248,238,.7);
}
.footer-hours .closed span:last-child { color: var(--rojo); font-weight: 700; }

.foot-cert {
  font-family: var(--ff-display);
  color: var(--oro);
  letter-spacing: .1em;
  font-size: .9rem;
  margin-top: 1rem;
}

.footer-bottom {
  border-top: 1px solid rgba(255,248,238,.1);
  padding: 1.5rem 0 2rem;
  display: flex;
  justify-content: space-between;
  align-items: center;
  gap: 1rem;
  flex-wrap: wrap;
  font-size: .82rem;
  color: rgba(255,248,238,.5);
}
.footer-bottom a { color: rgba(255,248,238,.6); transition: var(--tr-fast); }
.footer-bottom a:hover { color: var(--oro); }
.footer-switch { display: inline-flex; gap: 8px; }

/* =========================================================
   REVEAL (scroll animation)
   ========================================================= */
.reveal {
  opacity: 0;
  transform: translateY(30px);
  transition: opacity .8s cubic-bezier(.2,.7,.2,1), transform .8s cubic-bezier(.2,.7,.2,1);
}
.reveal.is-revealed {
  opacity: 1;
  transform: none;
}

/* =========================================================
   RESPONSIVE
   ========================================================= */
@media (max-width: 1100px) {
  .events-grid, .worlds-grid { grid-template-columns: repeat(2, 1fr); }
  .testi-card { flex: 0 0 calc(50% - 1rem); }
  .ftp-img, .as-img, .manifest-img { aspect-ratio: 4/3; }
  .footer-grid { grid-template-columns: 1fr 1fr; }
}

@media (max-width: 900px) {
  .nav-links {
    position: fixed;
    top: var(--header-h);
    left: 0;
    right: 0;
    bottom: 0;
    background: var(--crema);
    background-image:
      radial-gradient(circle at 90% 10%, rgba(232,165,32,.08), transparent 40%),
      radial-gradient(circle at 10% 90%, rgba(200,49,26,.06), transparent 40%);
    z-index: 95;
    flex-direction: column;
    align-items: stretch;
    padding: 1.5rem 1.5rem 6rem;
    transform: translateX(100%);
    transition: transform var(--tr);
    overflow-y: auto;
    overscroll-behavior: contain;
    box-shadow: -10px 0 30px rgba(0,0,0,.15);
    gap: 0;
  }
  .nav-links.is-open { transform: none; }
  .nav-links li { width: 100%; }
  .nav-link {
    display: flex;
    align-items: center;
    padding: 1.1rem 1rem;
    text-align: left;
    border-bottom: 1px solid rgba(200,49,26,.1);
    border-radius: 0;
    font-size: 1.05rem;
    font-family: var(--ff-serif);
    font-weight: 700;
    color: var(--brun);
    transition: padding-left var(--tr-fast), color var(--tr-fast), background var(--tr-fast);
  }
  .nav-link::after { display: none; }
  .nav-link:hover, .nav-link.is-current {
    padding-left: 1.4rem;
    color: var(--rojo);
    background: rgba(200,49,26,.04);
  }
  .nav-link--cta {
    margin-top: 1.2rem;
    border-radius: 999px !important;
    text-align: center;
    justify-content: center;
    border-bottom: none;
  }
  .nav-toggle {
    display: flex;
    position: relative;
    z-index: 100;
  }
  .topbar-right { display: none; }

  .manifest-inner, .ft-privat, .about-story, .news-inner, .resa-inner, .contact-inner, .day-detail, .founders {
    grid-template-columns: 1fr;
    gap: 2.5rem;
  }
  .manifest-stats, .ft-stats { grid-template-columns: repeat(2, 1fr); }
  .menu-grid { grid-template-columns: 1fr; }
  .dish-of-day { grid-template-columns: 140px 1fr; }
  .proc-timeline {
    grid-template-columns: 1fr;
    gap: 2.5rem;
  }
  .proc-timeline::before { display: none; }
  .values-grid { grid-template-columns: repeat(2, 1fr); }
  .events-grid { grid-template-columns: 1fr; }
  .event-pack--featured { transform: none; }
  .event-pack--featured:hover { transform: translateY(-6px); }
  .ft-week-grid { grid-template-columns: repeat(4, 1fr); }
  .gallery-grid { grid-template-columns: repeat(2, 1fr); }
  .g-wide { grid-column: span 1; }
  .testi-card { flex: 0 0 100%; }
  .dish-of-day { grid-template-columns: 1fr; }

  .founder-card { grid-template-columns: 100px 1fr; }
  .footer-grid { grid-template-columns: 1fr; }
  .footer-bottom { flex-direction: column; text-align: center; }
}

@media (max-width: 700px) {
  /* Hide lang switcher on small phones so the hamburger stays in viewport */
  .lang-switcher { display: none; }
  .nav-right { gap: .5rem; }
  .nav-logo-text em { display: none; }

  /* Hide SCROLL indicator on mobile — overlaps hero meta badges */
  .hero-scroll { display: none; }

  /* Lighter hero meta on mobile so it doesn't crowd the bottom */
  .hero-meta { gap: .4rem; }
  .hero { padding-bottom: 2.5rem; }
}

@media (max-width: 600px) {
  :root { --header-h: 84px; }
  .container { width: 92%; }
  .topbar-inner { flex-direction: column; gap: 4px; padding: 4px 0; }
  .navbar { padding: 12px 0; gap: .5rem; }
  .nav-logo-img { width: 40px; height: 40px; }
  .nav-logo-text strong { font-size: 1.1rem; }
  .worlds-grid { grid-template-columns: 1fr; }
  .menu-grid { grid-template-columns: 1fr; }
  .menu-card { grid-template-columns: 90px 1fr; }
  .dish-of-day { grid-template-columns: 1fr; padding: 1.2rem; }
  .gallery-grid { grid-template-columns: 1fr; grid-auto-rows: 220px; }
  .g-tall { grid-row: span 1; }
  .ft-stats, .manifest-stats { grid-template-columns: 1fr 1fr; gap: 1rem; padding: 2rem 1rem; }
  .ft-week-grid { grid-template-columns: repeat(2, 1fr); }
  .resa-form, .contact-form { padding: 1.5rem; }
  .form-row { grid-template-columns: 1fr; }
  .radio-cards { grid-template-columns: 1fr; }
  .news-form { flex-direction: column; border-radius: var(--radius); }
  .news-form input { padding: .9rem 1rem; }
  .step-lbl { display: none; }
  .float-stack { right: 16px; bottom: 16px; }
  .float-btn { width: 46px; height: 46px; }
  .hero-meta { gap: .5rem; }
  .meta-item { font-size: .75rem; padding: .35rem .7rem; }
  .resa-steps { padding: 0; }
  .testi-card { padding: 1.5rem; }
  .values-grid { grid-template-columns: 1fr 1fr; }
}

/* prefers-reduced-motion */
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after {
    animation-duration: .01ms !important;
    transition-duration: .01ms !important;
  }
  .reveal { opacity: 1; transform: none; }
}
