/* Header */
.site-header {
  position: sticky;
  top: 0;
  z-index: 100;
  background: var(--c-beige);
}
.site-header__inner {
  position: relative;
  max-width: var(--container);
  margin-inline: auto;
  min-height: var(--header-h);
  padding-inline: var(--pad-x);
  padding-right: clamp(180px, 20vw, 320px);
  display: flex;
  align-items: center;
  gap: clamp(1.5rem, 4vw, 4rem);
}
.logo { display: inline-flex; align-items: center; gap: 0.75rem; }
.logo__mark { width: auto; height: clamp(46px, 3.8vw, 66px); }
.logo__word {
  font-family: var(--font-sans);
  font-weight: 700;
  font-size: clamp(0.95rem, 0.75rem + 0.6vw, 1.3rem);
  line-height: 1;
  color: var(--c-verde);
}
.site-nav { display: flex; gap: clamp(1.6rem, 3.2vw, 3.6rem); margin-inline: auto; }
.site-nav a {
  font-family: var(--font-sans);
  font-weight: 400;
  font-size: clamp(0.78rem, 0.7rem + 0.22vw, 0.92rem);
  letter-spacing: 0.05em;
  color: var(--c-verde);
  position: relative;
  padding-block: 0.4em;
}
.site-nav a::after {
  content: ""; position: absolute; left: 0; right: 100%; bottom: 0.1em; height: 2px;
  background: var(--c-verde); transition: right 0.3s var(--ease);
}
.site-nav a:hover::after,
.site-nav a.is-active::after { right: 0; }
.menu-toggle {
  display: none;
  font-family: var(--font-sans); font-weight: 700; font-size: var(--fs-small);
  letter-spacing: 0.1em; color: var(--c-verde);
}
.reserva {
  position: relative;
  --reserva-r: clamp(20px, 2.4vw, 32px);
  --reserva-pad: clamp(0.7rem, 0.28rem + 0.62vw, 1.1rem);
}
.reserva-tab {
  position: relative;
  height: calc(var(--header-h) - clamp(12px, 1.6vw, 22px));
  display: inline-flex; align-items: center; justify-content: center;
  padding-inline: clamp(1.8rem, 3vw, 3.4rem);
  background: var(--c-verde-cta);
  color: var(--c-crema);
  font-family: var(--font-sans); font-weight: 700; font-size: var(--fs-small);
  letter-spacing: 0.045em; text-transform: uppercase;
  border-radius: 0 0 var(--reserva-r) var(--reserva-r);
  transition: background 0.25s var(--ease), border-radius 0.13s var(--ease) 0.36s;
  cursor: pointer;
}
.reserva-tab:hover { background: var(--c-verde-texto); }
.reserva.is-open .reserva-tab,
.reserva.is-open .reserva-tab:hover {
  border-bottom-left-radius: 0; border-bottom-right-radius: 0;
  background: var(--c-verde-cta);
  transition: background 0.25s var(--ease), border-radius 0.13s var(--ease);
}
.reserva__menu {
  position: absolute; top: 100%; right: 0; width: 100%;
  background: var(--c-verde-cta);
  border-radius: 0 0 var(--reserva-r) var(--reserva-r);
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows 0.26s var(--ease) 0.1s, box-shadow 0.22s var(--ease) 0.1s;
  box-shadow: 0 0 0 -20px rgba(20, 30, 12, 0);
}
.reserva__menu-inner { min-height: 0; overflow: hidden; }
.reserva.is-open .reserva__menu {
  grid-template-rows: 1fr;
  transition: grid-template-rows 0.3s var(--ease) 0.11s, box-shadow 0.34s var(--ease) 0.11s;
  box-shadow: 0 22px 46px -20px rgba(20, 30, 12, 0.55);
}
.reserva__menu-bar { display: none; }
.reserva__menu-title { padding: 0.7rem var(--reserva-pad) 0.3rem; font-family: var(--font-sans); font-weight: 400; font-size: clamp(0.57rem, 0.26rem + 0.42vw, 0.62rem); letter-spacing: 0.06em; text-transform: uppercase; color: rgba(236, 232, 222, 0.6); white-space: nowrap; }
.reserva__opt {
  display: flex; align-items: center; gap: 0.5em; width: 100%;
  padding: 0.62rem var(--reserva-pad);
  font-family: var(--font-sans); font-weight: 700; font-size: clamp(0.66rem, 0.28rem + 0.5vw, 0.72rem);
  letter-spacing: 0.04em; text-transform: uppercase;
  color: var(--c-crema); background: none; border: 0; cursor: pointer; text-align: left; white-space: nowrap;
  transition: background 0.2s var(--ease);
}
/* Al cerrar, la secuencia es la de abrir del reves: primero se van los textos,
   luego se recoge la lengua y al final vuelven las esquinas redondas */
.reserva__menu-title, .reserva__opt {
  opacity: 0; transform: translateY(-9px);
  transition: opacity 0.1s linear, transform 0.12s var(--ease), background 0.2s var(--ease);
}
.reserva__opt:nth-of-type(1) { transition-delay: 0.03s, 0.03s, 0s; }
.reserva__menu-title { transition-delay: 0.06s, 0.06s; }
.reserva.is-open .reserva__menu-title,
.reserva.is-open .reserva__opt { opacity: 1; transform: none; }
.reserva.is-open .reserva__menu-title { transition: opacity 0.2s linear 0.2s, transform 0.28s var(--ease) 0.2s; }
.reserva.is-open .reserva__opt:nth-of-type(1) { transition: opacity 0.2s linear 0.26s, transform 0.28s var(--ease) 0.26s, background 0.2s var(--ease); }
.reserva.is-open .reserva__opt:nth-of-type(2) { transition: opacity 0.2s linear 0.31s, transform 0.28s var(--ease) 0.31s, background 0.2s var(--ease); }
.reserva__opt .icon { width: 1.05em; height: 1.05em; flex: none; opacity: 0.85; }
.reserva__opt:hover { background: rgba(255, 255, 255, 0.11); }
.reserva__backdrop { display: none; position: fixed; inset: 0; z-index: 205; background: rgba(20, 30, 12, 0.42); opacity: 0; visibility: hidden; transition: opacity 0.32s var(--ease), visibility 0.32s; }

/* Menu movil */
.mobile-menu {
  position: fixed; inset: 0; z-index: 200;
  background: var(--c-beige);
  display: flex; flex-direction: column;
  padding: 0 0 clamp(2.4rem, 10vh, 4.5rem);
  opacity: 0; visibility: hidden;
  overflow-x: hidden;
  transition: opacity 0.35s var(--ease), visibility 0.35s;
}
.mobile-menu[hidden] { display: none; }
.mobile-menu.is-open { opacity: 1; visibility: visible; }
.mobile-menu__bar { position: relative; min-height: var(--header-h); padding-inline: var(--pad-x); display: flex; align-items: center; justify-content: space-between; }
.mobile-menu__label, .mobile-menu__close {
  font-family: var(--font-sans); font-weight: 700; font-size: var(--fs-small);
  letter-spacing: 0.1em; color: var(--c-verde); text-transform: uppercase; white-space: nowrap;
}
.mobile-menu__logo { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); }
.mobile-menu__logo img { height: clamp(40px, 9vw, 52px); width: auto; }
.mobile-menu__nav { flex: 1; display: flex; flex-direction: column; justify-content: center; align-items: center; text-align: center; gap: clamp(1.6rem, 5vh, 2.8rem); }
.mobile-menu__nav a {
  font-family: var(--font-serif); font-size: clamp(2.2rem, 9vw, 3.6rem);
  color: var(--c-verde); letter-spacing: 0.01em;
  transform: translateY(30px); opacity: 0;
}
.mobile-menu.is-open .mobile-menu__nav a {
  animation: menu-in 0.55s var(--ease) forwards;
  animation-delay: calc(0.18s + var(--i) * 0.09s);
}
@keyframes menu-in { to { transform: translateY(0); opacity: 1; } }
.mobile-menu__nav a.is-active { text-decoration: underline; text-underline-offset: 9px; text-decoration-thickness: 2px; }
.mobile-menu__social { display: flex; gap: 1rem; justify-content: center; opacity: 0; transform: translateY(16px); transition: opacity 0.45s var(--ease), transform 0.45s var(--ease); }
.mobile-menu.is-open .mobile-menu__social { opacity: 1; transform: translateY(0); transition-delay: 0.46s; }
.mobile-menu__social a {
  width: 56px; height: 56px; border-radius: 50%;
  display: grid; place-items: center;
  background: var(--c-verde); color: var(--c-crema);
}
.mobile-menu__social .icon { width: 27px; height: 27px; }

/* Footer */
.site-footer {
  position: relative;
  background: var(--c-greige);
  margin-top: 0;
  padding-top: clamp(150px, 17vw, 270px);
  padding-bottom: clamp(2.5rem, 5vw, 4.5rem);
  overflow: hidden;
}
.site-footer__arc {
  position: absolute; top: 0; left: 50%; transform: translateX(-50%);
  width: min(2400px, 170%); aspect-ratio: 1000 / 235; height: auto;
  pointer-events: none; z-index: 0;
}
.site-footer__mask { fill: var(--footer-mask, transparent); }
.site-footer__inner { position: relative; z-index: 1; display: flex; flex-direction: column; align-items: center; }
.site-footer__logo { display: inline-flex; align-items: center; gap: 0.75rem; margin-bottom: clamp(2.2rem, 5vw, 4rem); }
.site-footer__logo img { height: clamp(58px, 6vw, 80px); width: auto; }
.site-footer__logo .logo__word { font-size: clamp(1rem, 0.8rem + 0.6vw, 1.35rem); color: var(--c-verde); }
.site-footer__cols {
  width: 100%; max-width: 880px; margin-inline: auto;
  padding-inline: clamp(1rem, 5vw, 4.5rem);
  display: flex; justify-content: space-between; gap: clamp(2rem, 6vw, 5rem);
}
.footer-col { flex: 0 1 auto; }
.footer-col:last-child { text-align: right; }
.footer-col__title { font-family: var(--font-sans); font-size: clamp(1.5rem, 1rem + 1.4vw, 2.3rem); color: var(--c-verde); font-weight: 500; margin-bottom: 1.3rem; }
.footer-contact { display: flex; flex-direction: column; gap: 0.5rem; }
.footer-contact li { display: flex; align-items: flex-start; gap: 0.7rem; color: var(--c-verde); }
.footer-ico { width: 1.3em; height: 1.3em; color: var(--c-verde); flex: none; margin-top: 0.15em; }
.footer-contact a { color: var(--c-verde); transition: color 0.25s var(--ease); }
.footer-policies a { color: var(--c-verde); transition: color 0.25s var(--ease); }
/* Subrayado animado (crece desde la izquierda) en los enlaces simples del footer */
.footer-contact a:not(.footer-address), .footer-policies a { position: relative; }
.footer-contact a:not(.footer-address)::after, .footer-policies a::after {
  content: ""; position: absolute; left: 0; right: 100%; bottom: -2px; height: 1.5px;
  background: currentColor; transition: right 0.3s var(--ease);
}
.footer-contact a:not(.footer-address):hover::after, .footer-policies a:hover::after { right: 0; }
.footer-contact a:hover, .footer-policies a:hover, .footer-note a:hover, .footer-address:hover { color: var(--c-verde-oscuro); }
.footer-address { text-decoration: underline; text-underline-offset: 3px; line-height: 1.45; transition: color 0.25s var(--ease); }
.footer-note { margin-top: 1.2rem; color: var(--c-verde); }
.footer-note a { text-decoration: underline; text-underline-offset: 3px; transition: color 0.25s var(--ease); }
.footer-policies { display: flex; flex-direction: column; gap: 0.5rem; }
/* Pagina actual marcada igual que en el header (subrayado completo) */
.footer-policies a.is-active { color: var(--c-verde-oscuro); font-weight: 500; }
.footer-policies a.is-active::after { right: 0; }

@media (max-width: 1180px) {
  .site-header__inner { padding-inline: var(--pad-x); gap: 0; justify-content: flex-start; }
  .site-nav { display: none; }
  .menu-toggle { display: inline-block; letter-spacing: 0.1em; }
  .logo { position: absolute; left: 50%; top: 50%; transform: translate(-50%, -50%); gap: 0.5rem; }
  .logo__word { display: block; font-size: clamp(0.72rem, 0.55rem + 0.95vw, 1rem); }
  .logo__mark { height: clamp(36px, 8vw, 48px); }
  .reserva { height: var(--header-h); display: inline-flex; align-items: center; }
  .header-acciones { align-items: center; height: var(--header-h); }
  .carrito-btn { height: var(--header-h); }
  .reserva-tab {
    height: auto; padding: 0; background: none; border-radius: 0;
    font-weight: 700; letter-spacing: 0.1em; color: var(--c-verde);
  }
  .reserva-tab:hover { background: none; color: var(--c-verde-texto); }
  .reserva.is-open .reserva-tab, .reserva.is-open .reserva-tab:hover { border-radius: 0; background: none; }
  .reserva-tab__ahora { display: none; }
  .reserva__menu {
    position: fixed; top: auto; bottom: 0; left: 0; right: 0;
    display: block; width: auto; min-width: 0; max-width: none; max-height: none;
    border-radius: 22px 22px 0 0;
    transform: translateY(105%);
    transition: transform 0.4s var(--ease);
    padding-bottom: calc(0.8rem + env(safe-area-inset-bottom, 0px));
    z-index: 210;
  }
  .reserva__menu-inner { overflow: visible; }
  .reserva.is-open .reserva__menu { transform: translateY(0); transition: transform 0.4s var(--ease); }
  .reserva__menu-title, .reserva__opt { opacity: 1; transform: none; transition: background 0.2s var(--ease); }
  .reserva__menu-bar { display: block; width: 42px; height: 5px; border-radius: 999px; background: rgba(236, 232, 222, 0.4); margin: 0.7rem auto 0.4rem; }
  .reserva__menu-title { font-size: 0.82rem; padding: 0.4rem 1.6rem 0.6rem; }
  .reserva__opt { padding: 1.15rem 1.6rem; font-size: 1rem; }
  .reserva__backdrop { display: block; }
  .reserva.is-open .reserva__backdrop { opacity: 1; visibility: visible; }
}
@media (max-width: 720px) {
  .site-footer__cols { flex-direction: column; align-items: flex-start; gap: clamp(1.8rem, 6vw, 2.6rem); }
  .footer-col, .footer-col:last-child { flex: 0 1 auto; text-align: left; }
}

/* Banner de cookies */
.cookie-banner {
  position: fixed; left: 50%; bottom: clamp(0.8rem, 2vw, 1.5rem);
  transform: translateX(-50%) translateY(24px);
  z-index: 190; width: min(960px, calc(100% - 1.6rem));
  background: var(--c-crema); color: var(--c-verde-texto);
  border: 1px solid rgba(78, 107, 60, 0.16); border-radius: 20px;
  box-shadow: 0 24px 60px -24px rgba(20, 30, 12, 0.55);
  padding: clamp(1.1rem, 2.5vw, 1.6rem);
  opacity: 0; visibility: hidden;
  transition: opacity 0.4s var(--ease), transform 0.4s var(--ease), visibility 0.4s;
}
.cookie-banner[hidden] { display: none; }
.cookie-banner.is-visible { opacity: 1; visibility: visible; transform: translateX(-50%) translateY(0); }
.cookie-banner__inner { display: flex; align-items: center; gap: clamp(1rem, 3vw, 2rem); }
.cookie-banner__text { flex: 1; }
.cookie-banner__title { font-family: var(--font-sans); font-weight: 700; color: var(--c-verde); font-size: 1.05rem; margin-bottom: 0.3rem; }
.cookie-banner__text p { font-size: 0.92rem; line-height: 1.5; }
.cookie-banner__text a { color: var(--c-verde); text-decoration: underline; text-underline-offset: 3px; }
.cookie-banner__actions { display: flex; gap: 0.7rem; flex: none; }

.cookie-btn {
  font-family: var(--font-sans); font-weight: 700; font-size: 0.85rem;
  letter-spacing: 0.03em; text-transform: uppercase; white-space: nowrap;
  padding: 0.75em 1.5em; border-radius: 999px;
  transition: background 0.25s var(--ease), color 0.25s, transform 0.25s var(--ease), border-color 0.25s;
}
.cookie-btn--solid { background: var(--c-verde-cta); color: var(--c-crema); }
.cookie-btn--solid:hover { background: var(--c-verde-texto); transform: translateY(-2px); }
.cookie-btn--ghost { background: transparent; color: var(--c-verde); border: 1.5px solid rgba(78, 107, 60, 0.35); }
.cookie-btn--ghost:hover { border-color: var(--c-verde); background: rgba(78, 107, 60, 0.08); }

@media (max-width: 640px) {
  .cookie-banner__inner { flex-direction: column; align-items: stretch; gap: 1rem; }
  .cookie-banner__actions { justify-content: stretch; }
  .cookie-banner__actions .cookie-btn { flex: 1; text-align: center; }
}

/* Paginas legales */
.legal { padding-top: clamp(1.5rem, 4vw, 3.2rem); padding-bottom: clamp(3rem, 8vw, 6.5rem); }
.legal__eyebrow { display: block; text-align: center; color: var(--c-verde-medio); }
.legal__title { font-family: var(--font-serif); font-style: italic; font-weight: 400; color: var(--c-verde); font-size: clamp(2.1rem, 1.3rem + 3.4vw, 3.4rem); text-align: center; margin: 0.35em 0 0.3em; }
.legal__meta { text-align: center; color: var(--c-verde-texto); opacity: 0.72; font-size: 0.9rem; margin-bottom: clamp(1.8rem, 4vw, 2.6rem); }
.legal__card { background: var(--c-crema); border-radius: var(--r-card); padding: clamp(1.5rem, 4vw, 3rem); box-shadow: var(--shadow-card); }
.legal__card h2 { font-family: var(--font-sans); font-weight: 700; color: var(--c-verde); font-size: clamp(1.25rem, 1rem + 0.9vw, 1.65rem); margin-top: clamp(1.6rem, 3vw, 2.2rem); }
.legal__card h2:first-child { margin-top: 0; }
.legal__card h3 { font-family: var(--font-sans); font-weight: 700; color: var(--c-verde-texto); font-size: clamp(1.02rem, 0.95rem + 0.4vw, 1.2rem); margin-top: 1.1rem; }
.legal__card p { color: var(--c-verde-texto); line-height: 1.65; margin-top: 0.7rem; }
.legal__card a { color: var(--c-verde); text-decoration: underline; text-underline-offset: 3px; }
.legal__card a:hover { color: var(--c-verde-oscuro); }
.legal__list { margin: 0.7rem 0 0; padding-left: 1.3em; list-style: disc; color: var(--c-verde-texto); }
.legal__list li { line-height: 1.6; margin-top: 0.35rem; }
.legal_lead { color: var(--c-verde-texto); line-height: 1.65; margin-bottom: clamp(1.4rem, 3vw, 2rem); padding-bottom: clamp(1.2rem, 2.5vw, 1.6rem); border-bottom: 1px solid rgba(78, 107, 60, 0.16); }
.legal_full { margin-top: clamp(2rem, 4vw, 2.8rem); padding-top: clamp(1.6rem, 3vw, 2.2rem); border-top: 1px solid rgba(78, 107, 60, 0.16); }
.legal_full-btn { display: inline-flex; align-items: center; gap: 0.45em; font-family: var(--font-sans); font-weight: 700; font-size: 0.8rem; letter-spacing: 0.04em; text-transform: uppercase; color: var(--c-verde); border: 1.5px solid rgba(78, 107, 60, 0.4); border-radius: var(--r-pill); padding: 0.65em 1.4em; cursor: pointer; list-style: none; transition: background 0.25s var(--ease), border-color 0.25s var(--ease); }
.legal_full-btn::-webkit-details-marker { display: none; }
.legal_full-btn:hover { border-color: var(--c-verde); background: rgba(78, 107, 60, 0.08); }
.legal_full-ico { width: 0.85em; height: 0.85em; transform: rotate(90deg); transition: transform 0.3s var(--ease); }
.legal_full[open] .legal_full-ico { transform: rotate(-90deg); }
.legal_full-cerrar { display: none; }
.legal_full[open] .legal_full-abrir { display: none; }
.legal_full[open] .legal_full-cerrar { display: inline; }
.legal_full-body { margin-top: clamp(1.4rem, 3vw, 2rem); }
.legal_full-body h3:first-child { margin-top: 0; font-size: clamp(1.15rem, 1rem + 0.6vw, 1.4rem); color: var(--c-verde); }

.legal__prefs { margin: clamp(1.4rem, 3vw, 2rem) 0; padding: clamp(1.1rem, 2.5vw, 1.6rem); background: var(--c-greige); border-radius: 16px; border: 1px solid rgba(78, 107, 60, 0.14); }
.legal__prefs-title { font-family: var(--font-sans); font-weight: 700; color: var(--c-verde); }
.legal__prefs-desc { font-size: 0.9rem; color: var(--c-verde-texto); margin-top: 0.25rem; line-height: 1.5; }
.legal__prefs-state { margin-top: 0.7rem; font-family: var(--font-sans); font-size: 0.92rem; color: var(--c-verde-texto); }
.legal__prefs-state span { font-weight: 700; color: var(--c-verde); }
.legal__prefs-actions { display: flex; gap: 0.7rem; margin-top: 1.1rem; }
@media (max-width: 480px) { .legal__prefs-actions .cookie-btn { flex: 1; text-align: center; } }
