@font-face{font-family:DM;src:url('assets/fonts/dm-sans-400.ttf');font-display:swap}@font-face{font-family:DM;src:url('assets/fonts/dm-sans-600.ttf');font-weight:600;font-display:swap}@font-face{font-family:DM;src:url('assets/fonts/dm-sans-700.ttf');font-weight:700;font-display:swap}@font-face{font-family:Italiana;src:url('assets/fonts/italiana-400.ttf');font-display:swap}
:root{--navy:#062e58;--navy-deep:#021c37;--sun:#f6ba21;--coral:#e95642;--turquoise:#13aeb9;--cream:#fff8e9;--ink:#102038;--line:#dfe4e5;--white:#fff;--serif:Italiana,Georgia,serif;--sans:DM,Arial,sans-serif}*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;background:var(--cream);color:var(--ink);font-family:var(--sans);font-size:16px;line-height:1.5}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}button,input,select{font:inherit}.skip-link{position:fixed;z-index:5000;top:-5rem;left:1rem;padding:.8rem 1rem;background:#fff;color:#000}.skip-link:focus{top:1rem}.sr-only{position:absolute;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0)}.header{position:fixed;z-index:1000;inset:0 0 auto;display:flex;align-items:center;min-height:5rem;padding:.75rem clamp(1rem,4vw,4.5rem);gap:clamp(.75rem,2vw,2rem);color:#fff;transition:background .3s,box-shadow .3s}.header.is-scrolled{background:rgba(2,28,55,.96);box-shadow:0 8px 30px rgba(0,0,0,.18);backdrop-filter:blur(14px)}.brand{display:flex;align-items:center;gap:.55rem;min-width:9.5rem;font-family:var(--serif);font-size:1.55rem;line-height:.8;color:#fff}.brand__mark{display:grid;place-items:center;width:2.5rem;height:2.5rem;border:1px solid rgba(255,255,255,.6);border-radius:50%;font:2.3rem/1 var(--serif);color:var(--sun)}.brand em{font-style:italic}.brand small{display:block;margin-top:.42rem;font:600 .47rem/1 var(--sans);letter-spacing:.2em;text-transform:uppercase;color:var(--sun)}.nav{display:flex;align-items:center;gap:clamp(.8rem,1.8vw,1.8rem);margin-left:auto;font-size:.73rem;font-weight:700;letter-spacing:.09em;text-transform:uppercase}.nav a{opacity:.82}.nav a:hover{opacity:1;color:var(--sun)}.header__call{padding:.72rem 1rem;border:1px solid rgba(255,255,255,.65);border-radius:99px;font-size:.72rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase}.menu-toggle{display:none}.hero{position:relative;min-height:max(44rem,100svh);isolation:isolate;overflow:hidden;color:#fff}.hero__image{position:absolute;z-index:-2;width:100%;height:100%;object-fit:cover;object-position:center 46%}.hero__veil{position:absolute;z-index:-1;inset:0;background:linear-gradient(90deg,rgba(2,21,41,.9) 0%,rgba(2,26,51,.6) 44%,rgba(2,18,36,.12) 72%),linear-gradient(0deg,rgba(2,18,36,.45),transparent 45%)}.hero__content{max-width:51rem;padding:clamp(9rem,18vh,13rem) clamp(1.25rem,7vw,8rem) 6rem}.eyebrow{margin:0 0:1rem;font-size:.68rem;font-weight:700;letter-spacing:.16em;text-transform:uppercase;color:var(--sun)}h1,h2{margin:0;font-family:var(--serif);font-weight:400;line-height:.88;letter-spacing:-.035em}h1{font-size:clamp(4rem,8.2vw,8.3rem)}h1 em,h2 em{color:var(--sun);font-style:italic}.hero__content>p:not(.eyebrow){max-width:38rem;margin:1.6rem 0 2rem;font-size:clamp(1rem,1.5vw,1.2rem);font-weight:600}.hero__actions,.visit__actions{display:flex;flex-wrap:wrap;gap:.7rem}.button{display:inline-flex;justify-content:center;align-items:center;min-height:3.2rem;padding:.82rem 1.15rem;border:1px solid transparent;border-radius:99px;font-size:.7rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase;transition:transform .2s,background .2s,color .2s,border-color .2s;cursor:pointer}.button:hover{transform:translateY(-2px)}.button--sun{background:var(--sun);color:var(--navy)}.button--glass{border-color:rgba(255,255,255,.65);background:rgba(2,22,42,.25);color:#fff}.button--outline{color:#fff;border-color:rgba(255,255,255,.6)}.button--navy{background:var(--navy);color:#fff}.button--outline-dark{border-color:var(--navy);color:var(--navy)}.hero__rating{position:absolute;right:clamp(1.2rem,5vw,5rem);bottom:3.2rem;display:flex;align-items:center;gap:.7rem;padding:.82rem 1rem;background:rgba(255,255,255,.93);color:var(--ink);border-radius:1rem;box-shadow:0 12px 40px rgba(0,0,0,.16)}.hero__rating-g{display:grid;place-items:center;width:2rem;height:2rem;color:#4285f4;font-size:1.8rem;font-weight:700}.hero__rating strong{display:block;line-height:1;font-size:1.05rem}.hero__rating i{display:block;color:#ec9b14;font-size:.62rem;letter-spacing:.05em;font-style:normal}.hero__rating small{display:block;font-size:.55rem;color:#59636c}.hero__location{position:absolute;bottom:2.9rem;left:clamp(1.25rem,7vw,8rem);display:flex;align-items:center;gap:.8rem;font-size:.63rem;font-weight:700;letter-spacing:.13em;text-transform:uppercase}.hero__location b{display:grid;place-items:center;width:2.1rem;height:2.1rem;border:1px solid rgba(255,255,255,.6);border-radius:50%;font-size:1rem}.section{padding:clamp(5rem,10vw,9rem) clamp(1.25rem,7vw,8rem)}.intro{display:grid;grid-template-columns:1.1fr .8fr;gap:2.5rem 7vw;align-items:end}.intro h2,.section-heading h2,.reservation h2,.visit h2{font-size:clamp(3.3rem,6.2vw,6.8rem)}.intro__copy{max-width:38rem;margin:0;font-size:clamp(1.05rem,1.6vw,1.25rem)}.intro__facts{grid-column:1/-1;display:flex;gap:1rem;border-top:1px solid var(--line);padding-top:1rem}.intro__facts span{padding-right:1rem;border-right:1px solid var(--line);font-size:.72rem;text-transform:uppercase;letter-spacing:.08em}.intro__facts b{font-size:1rem;color:var(--coral)}.section-heading{max-width:46rem}.section-heading>p:not(.eyebrow){max-width:35rem;margin:1.4rem 0 0;font-size:1rem}.menu{background:#fff}.menu-tools{display:flex;justify-content:space-between;align-items:center;gap:1rem;margin:2.7rem 0 1rem}.menu-search{display:flex;align-items:center;width:min(100%,34rem);padding:.3rem .45rem .3rem 1rem;background:#f3f5f5;border:1px solid transparent;border-radius:1rem}.menu-search:focus-within{background:#fff;border-color:var(--turquoise)}.menu-search input{width:100%;padding:.7rem 0;border:0;outline:0;background:transparent;color:var(--ink)}.menu-search button{width:2rem;height:2rem;border:0;border-radius:50%;background:#dbe4e4;color:var(--navy);font-size:1.35rem;cursor:pointer}.menu-tools p{margin:0;font-size:.75rem;color:#65717a}.menu-filters{display:flex;gap:.55rem;overflow-x:auto;padding:.3rem 0 1.5rem;scrollbar-width:none}.menu-filters button{flex:0 0 auto;padding:.65rem .85rem;border:1px solid #ccd6d8;border-radius:99px;background:#fff;color:var(--navy);font-size:.68rem;font-weight:700;letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.menu-filters button.is-active{background:var(--navy);border-color:var(--navy);color:#fff}.menu-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem}.menu-category{min-height:100%;padding:1.35rem;background:var(--cream);border:1px solid #e9e1cf;border-radius:1.1rem}.menu-category__name{display:flex;justify-content:space-between;align-items:baseline;gap:.5rem;margin:0 0 1rem;color:var(--navy);font:2rem/1 var(--serif)}.menu-category__name small{font:600 .58rem var(--sans);letter-spacing:.1em;text-transform:uppercase;color:var(--coral)}.menu-item{display:grid;grid-template-columns:1fr auto;gap:.4rem;padding:.75rem 0;border-top:1px solid #dfddd5}.menu-item:first-of-type{border-top:0}.menu-item h3{margin:0;font-size:.88rem;line-height:1.2}.menu-item p{grid-column:1/-1;margin:.18rem 0 0;color:#637078;font-size:.69rem;line-height:1.35}.menu-item b{font-size:.81rem;color:var(--coral);white-space:nowrap}.menu-empty{grid-column:1/-1;padding:3rem;background:var(--cream);border-radius:1rem;text-align:center}.menu-note{margin:1.4rem 0 0;color:#6b7378;font-size:.72rem}.reservation{display:grid;grid-template-columns:minmax(0,1fr) minmax(24rem,.95fr);gap:clamp(2rem,7vw,8rem);align-items:center;background:var(--turquoise);color:var(--navy)}.reservation__image{min-height:36rem;border-radius:1.4rem;overflow:hidden}.reservation__image img{width:100%;height:100%;object-fit:cover}.reservation__content p:not(.eyebrow){max-width:34rem;font-size:1.05rem;font-weight:600}.reservation .eyebrow{color:var(--navy-deep)}.reservation h2 em{color:#fff}.reservation-form{max-width:32rem;margin-top:1.6rem}.reservation-form label{display:grid;gap:.35rem;font-size:.67rem;font-weight:700;letter-spacing:.08em;text-transform:uppercase}.reservation-form input,.reservation-form select{width:100%;min-height:3.1rem;padding:.65rem .75rem;border:1px solid rgba(6,46,88,.32);border-radius:.65rem;background:rgba(255,255,255,.9);color:var(--ink)}.reservation-form__row{display:grid;grid-template-columns:1fr 1fr;gap:.7rem;margin-bottom:.7rem}.reservation-form>label{margin-bottom:.9rem}.reservation-form .button{width:100%;background:var(--navy);color:#fff}.form-message{min-height:1.5rem;margin:.7rem 0 0;font-size:.78rem!important}.reservation small{display:block;max-width:34rem;margin-top:1rem;font-size:.66rem}.experience{background:var(--navy-deep);color:#fff}.section-heading--light .eyebrow{color:var(--sun)}.experience-grid{display:grid;grid-template-columns:1.35fr .75fr .75fr;gap:1rem;margin-top:3rem}.experience-card{position:relative;min-height:27rem;margin:0;overflow:hidden;border-radius:1.2rem;background:#123}.experience-card--wide{min-height:34rem}.experience-card img{width:100%;height:100%;object-fit:cover;transition:transform .7s cubic-bezier(.2,.7,.2,1)}.experience-card:hover img{transform:scale(1.05)}.experience-card:after{content:"";position:absolute;inset:45% 0 0;background:linear-gradient(transparent,rgba(0,0,0,.65))}.experience-card figcaption{position:absolute;z-index:1;bottom:1.1rem;left:1.1rem;font:2rem var(--serif)}.gallery-grid{display:grid;grid-template-columns:1.05fr .9fr .9fr;grid-auto-rows:17rem;gap:1rem;margin-top:3rem}.gallery-item{padding:0;overflow:hidden;border:0;border-radius:1.1rem;background:#ddd;cursor:zoom-in}.gallery-item img{width:100%;height:100%;object-fit:cover;transition:transform .5s}.gallery-item:hover img{transform:scale(1.04)}.gallery-item--tall{grid-row:span 2}.gallery-item--wide{grid-column:span 2}.reviews{background:#f3e2bc}.reviews-track{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:1rem;margin-top:3rem}.review{display:flex;flex-direction:column;min-height:17rem;padding:1.4rem;background:#fff;border-radius:1rem;box-shadow:0 8px 25px rgba(37,43,39,.07)}.review__source{display:flex;align-items:center;gap:.5rem;color:#46515b;font-size:.66rem;font-weight:700}.review__g{display:grid;place-items:center;width:1.65rem;height:1.65rem;border-radius:50%;background:#f2f6ff;color:#4285f4;font-size:1rem}.review blockquote{margin:1rem 0;font:1.45rem/1.15 var(--serif)}.review footer{margin-top:auto;font-size:.72rem;font-weight:700}.review__stars{margin-top:.25rem;color:#e9a41e;letter-spacing:.08em}.reviews-source{margin:1.2rem 0 0;color:#5c646b;font-size:.72rem}.reviews-source a{text-decoration:underline}.visit{display:grid;grid-template-columns:.9fr 1.1fr;gap:5vw;align-items:center}.visit address{margin:1.7rem 0;font-size:1.05rem;font-style:normal;line-height:1.65}.visit__hours{margin-top:1.4rem;color:#ad3a30;font-size:.73rem}.visit__image{min-height:32rem;border-radius:1.3rem;overflow:hidden}.visit__image img{width:100%;height:100%;object-fit:cover}.footer{display:grid;grid-template-columns:1.4fr 1fr 1fr;gap:2rem;padding:4rem clamp(1.25rem,7vw,8rem) 2rem;background:var(--navy-deep);color:#fff}.brand--footer{font-size:1.9rem}.footer>div{display:grid;align-content:start;gap:.7rem;font-size:.78rem}.footer a:hover{color:var(--sun)}.footer small{grid-column:1/-1;padding-top:1.5rem;border-top:1px solid rgba(255,255,255,.2);color:rgba(255,255,255,.65);font-size:.64rem}.lightbox{width:min(92vw,72rem);padding:0;overflow:visible;border:0;background:transparent}.lightbox::backdrop{background:rgba(0,0,0,.82);backdrop-filter:blur(4px)}.lightbox img{max-height:86vh;margin:auto;border-radius:.8rem}.lightbox button{position:absolute;top:-2.8rem;right:0;width:2.2rem;height:2.2rem;border:1px solid #fff;border-radius:50%;background:transparent;color:#fff;font-size:1.5rem;cursor:pointer}.reveal{opacity:1;transform:none}@media(max-width:900px){.nav{display:none}.header__call{margin-left:auto}.menu-toggle{display:grid;place-content:center;gap:4px;width:2.9rem;height:2.9rem;padding:.7rem;border:1px solid rgba(255,255,255,.75);border-radius:50%;background:rgba(2,29,56,.35);color:#fff}.menu-toggle i{display:block;width:100%;height:2px;background:currentColor;border-radius:2px}.mobile-menu-backdrop{position:fixed;z-index:1100;inset:0;background:rgba(1,13,27,.6);opacity:0;visibility:hidden;transition:.25s}.mobile-menu{position:fixed;z-index:1200;top:.7rem;right:.7rem;display:flex;flex-direction:column;width:min(82vw,24rem);min-height:calc(100svh - 1.4rem);padding:2rem 1.4rem;background:var(--navy-deep);color:#fff;border-radius:1.25rem;transform:translateX(calc(100% + 2rem));transition:transform .45s cubic-bezier(.16,1,.3,1)}.mobile-menu p{margin:0 0:1.5rem;color:var(--sun);font-size:.66rem;font-weight:700;letter-spacing:.12em;text-transform:uppercase}.mobile-menu>a{padding:.85rem 0;border-bottom:1px solid rgba(255,255,255,.17);font:clamp(2.2rem,9vw,3.2rem)/1 var(--serif)}.mobile-menu>div{display:grid;gap:.6rem;margin-top:auto;padding-top:1.5rem}.mobile-menu.is-open{transform:none}.mobile-menu-backdrop.is-open{opacity:1;visibility:visible}.menu-toggle.is-open i:first-child{transform:translateY(6px) rotate(45deg)}.menu-toggle.is-open i:nth-child(2){opacity:0}.menu-toggle.is-open i:last-child{transform:translateY(-6px) rotate(-45deg)}.menu-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.experience-grid{grid-template-columns:1.2fr .8fr}.experience-card:last-child{grid-column:span 2;min-height:19rem}.reviews-track{grid-template-columns:1fr 1fr}.reviews-track .review:last-child{grid-column:span 2}.footer{grid-template-columns:1fr 1fr}.footer .brand{grid-column:span 2}}@media(max-width:620px){.header{min-height:4.8rem;padding:.7rem 1rem;gap:.65rem}.brand{min-width:0;font-size:1.3rem}.brand__mark{width:2.15rem;height:2.15rem;font-size:1.9rem}.header__call{padding:.65rem .7rem;font-size:.62rem}.hero{min-height:48rem}.hero__image{object-position:48% center}.hero__veil{background:linear-gradient(180deg,rgba(2,20,42,.66),rgba(2,26,52,.89) 68%,rgba(2,18,36,.96))}.hero__content{padding:9rem 1.25rem 10rem}.hero__content>p:not(.eyebrow){margin:1.2rem 0 1.5rem;font-size:1rem}.hero__rating{right:auto;bottom:3.1rem;left:1.25rem}.hero__location{display:none}.section{padding:4.5rem 1.25rem}.intro,.reservation,.visit{grid-template-columns:1fr}.intro{gap:1.5rem}.intro__facts{gap:.5rem}.intro__facts span{font-size:.62rem}.menu-tools{display:block;margin-top:2rem}.menu-tools p{margin-top:.7rem}.menu-grid{grid-template-columns:1fr}.reservation{padding-top:0;gap:2.5rem}.reservation__image{min-height:21rem;margin:0 -1.25rem;border-radius:0}.reservation-form__row{grid-template-columns:1fr}.experience-grid{grid-template-columns:1fr}.experience-card,.experience-card--wide{min-height:23rem}.experience-card:last-child{grid-column:auto;min-height:23rem}.gallery-grid{grid-template-columns:1fr 1fr;grid-auto-rows:12.5rem;gap:.65rem;margin-top:2rem}.gallery-item--tall{grid-row:span 2}.gallery-item--wide{grid-column:span 1}.reviews-track{display:flex;overflow:auto;margin-inline:-1.25rem;padding:0 1.25rem 1rem;scroll-snap-type:x mandatory}.review{flex:0 0 min(83vw,22rem);min-height:15rem;scroll-snap-align:start}.reviews-track .review:last-child{grid-column:auto}.visit__image{min-height:24rem}.footer{grid-template-columns:1fr;padding:3.5rem 1.25rem 1.5rem}.footer .brand,.footer small{grid-column:auto}}@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none;transition:none}.experience-card img,.gallery-item img{transition:none}.mobile-menu,.mobile-menu-backdrop{transition:none}}
.eyebrow {
  margin: 0 0 1rem;
}
.menu-toggle i {
  width: 1.15rem;
}
.brand__mark {
  width: 4rem;
  height: 2.75rem;
  object-fit: contain;
  background: #fff;
  border: 0;
  border-radius: 0.5rem;
  padding: 0.06rem;
  box-shadow: 0 4px 14px rgba(0, 0, 0, 0.16);
}
.brand__full-logo {
  width: 11.5rem;
  max-width: 100%;
  border-radius: 0.7rem;
  background: #fff;
}
.mobile-menu,
.mobile-menu-backdrop {
  display: none;
}
.mobile-menu__close {
  position: absolute;
  top: 1rem;
  right: 1rem;
  display: grid;
  place-items: center;
  width: 2.5rem;
  height: 2.5rem;
  padding: 0;
  border: 1px solid rgba(255, 255, 255, 0.44);
  border-radius: 50%;
  background: rgba(255, 255, 255, 0.08);
  color: #fff;
  font: 1.65rem/1 var(--sans);
  cursor: pointer;
}
@media (max-width: 900px) {
  .mobile-menu {
    display: flex;
    top: 5.25rem;
    width: min(72vw, 22rem);
    min-height: 0;
    height: min(36rem, calc(100svh - 6.25rem));
    padding-top: 3.35rem;
  }
  .mobile-menu-backdrop {
    display: block;
  }
}

/* Iconografía oficial en blanco sobre azul de marca. */
.footer-contact-action__icon { padding:.54rem; overflow:hidden; background:#073f68 !important; box-shadow:0 .35rem .9rem rgba(3,38,70,.24) !important; }
.footer-contact-action__icon img { width:100%; height:100%; filter:none !important; }
.footer-contact-action--call .footer-contact-action__icon img,
.quick-actions__phone img { filter:brightness(0) invert(1) !important; }
.quick-actions a { overflow:hidden; border:0; background:#073f68 !important; }
.quick-actions a img { width:1.42rem; height:1.42rem; }
.hero h1 { overflow:visible; font-family:Georgia, "Times New Roman", serif; font-size:clamp(3.4rem,5.6vw,6.5rem); font-weight:400; line-height:1.06; letter-spacing:-.045em; text-wrap:balance; }
.hero h1 [data-i18n-html], .hero h1 em { display:inline; animation:none; clip-path:none; }
@media (max-width: 620px) { .hero h1 { font-size:clamp(2.7rem,10.8vw,3.55rem); line-height:1.06; letter-spacing:-.03em; } }
.visit-maps {
  grid-column: 1/-1;
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 1rem;
  margin-top: 1rem;
}
.visit-maps article {
  overflow: hidden;
  border: 1px solid var(--line);
  border-radius: 1rem;
  background: #fff;
}
.visit-maps h3 {
  margin: 0;
  padding: 0.85rem 1rem;
  color: var(--navy);
  font-size: 0.72rem;
  letter-spacing: 0.08em;
  text-transform: uppercase;
}
.visit-maps iframe {
  display: block;
  width: 100%;
  height: 20rem;
  border: 0;
}
.quick-actions {
  position: fixed;
  z-index: 900;
  right: max(0.85rem, env(safe-area-inset-right));
  bottom: max(1rem, env(safe-area-inset-bottom));
  display: grid;
  gap: 0.55rem;
}
.quick-actions a {
  display: grid;
  place-items: center;
  width: 3.25rem;
  height: 3.25rem;
  border: 2px solid #fff;
  border-radius: 50%;
  box-shadow: 0 9px 24px rgba(0, 0, 0, 0.22);
  font: 700 0.64rem var(--sans);
  letter-spacing: 0.02em;
  transition: transform 0.2s;
}
.quick-actions a img {
  width: 1.3rem;
  height: 1.3rem;
  object-fit: contain;
}
.hero__content {
  text-shadow: 0 2px 18px rgba(0, 0, 0, 0.45);
}
.hero__veil {
  background: linear-gradient(0deg, rgba(2, 24, 50, 0.28), transparent 56%);
}
.quick-actions a:hover {
  transform: translateY(-2px);
}
.quick-actions__whatsapp {
  background: #25d366;
  color: #fff;
}
.quick-actions__instagram {
  background: radial-gradient(
    circle at 30% 105%,
    #ffd600 0 11%,
    #ff7a00 28%,
    #ff0169 55%,
    #d300c5 72%,
    #7638fa 100%
  );
  color: #fff;
  font-size: 1.75rem !important;
}
@media (max-width: 620px) {
  .visit-maps {
    grid-template-columns: 1fr;
  }
  .visit-maps iframe {
    height: 17rem;
  }
  .quick-actions {
    right: 0.7rem;
    bottom: 0.8rem;
  }
  .quick-actions a {
    width: 2.6rem;
    height: 2.6rem;
  }
  .brand__mark {
    width: 4.25rem;
    height: 2.85rem;
    border-radius: 0.52rem;
  }
  .brand {
    gap: 0.6rem;
  }
  .quick-actions {
    right: max(0.35rem, env(safe-area-inset-right));
    bottom: max(0.65rem, env(safe-area-inset-bottom));
  }
  .quick-actions a img {
    width: 1.18rem;
    height: 1.18rem;
  }
  .hero__veil {
    background: linear-gradient(0deg, rgba(2, 24, 50, 0.32), transparent 60%);
  }
}

/* Titular legible y estable: sin máscaras, recortes ni desplazamientos. */
.hero h1 { overflow:visible; font-family:Georgia, "Times New Roman", serif; font-size:clamp(3.4rem,5.6vw,6.5rem); font-weight:400; line-height:1.06; letter-spacing:-.045em; text-wrap:balance; }
.hero h1 [data-i18n-html], .hero h1 em { display:inline; animation:none; clip-path:none; }
@media (prefers-reduced-motion: reduce) {
  .quick-actions a {
    transition: none;
  }
}

/* Reserva guiada: el horario se calcula en Benalmádena y la confirmación final la realiza el equipo. */
.booking {
  display: grid;
  grid-template-columns: minmax(19rem, 0.78fr) minmax(0, 1.22fr);
  gap: clamp(1.2rem, 4vw, 4rem);
  align-items: stretch;
  background: linear-gradient(135deg, #e8f5f6 0%, #fffaf0 60%, #f7e2b7 100%);
  color: var(--ink);
}
.booking__visual {
  position: relative;
  min-height: 47rem;
  overflow: hidden;
  border-radius: 1.75rem;
  background: var(--navy-deep);
  box-shadow: 0 1.5rem 3rem rgba(2, 28, 55, 0.16);
}
.booking__visual:after {
  content: "";
  position: absolute;
  inset: 35% 0 0;
  background: linear-gradient(transparent, rgba(2, 26, 51, 0.78));
}
.booking__visual img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center;
}
.booking__visual p {
  position: absolute;
  z-index: 1;
  bottom: 1.25rem;
  left: 1.25rem;
  display: flex;
  align-items: center;
  gap: 0.55rem;
  margin: 0;
  color: #fff;
  font: 600 0.68rem var(--sans);
  letter-spacing: 0.13em;
  text-transform: uppercase;
}
.booking__visual p span {
  display: grid;
  place-items: center;
  width: 2.15rem;
  height: 2.15rem;
  border-radius: 50%;
  background: var(--sun);
  color: var(--navy);
  font-size: 1rem;
}
.booking__content {
  min-width: 0;
  padding: clamp(1.4rem, 3.2vw, 2.75rem);
  border: 1px solid rgba(6, 46, 88, 0.14);
  border-radius: 1.75rem;
  background: rgba(255, 255, 255, 0.78);
  box-shadow: 0 1.5rem 3rem rgba(28, 52, 73, 0.08);
  backdrop-filter: blur(12px);
}
.booking__heading {
  max-width: 43rem;
}
.booking__heading .eyebrow {
  margin-bottom: 0.8rem;
  color: var(--coral);
}
.booking__heading h2 {
  font-size: clamp(2.9rem, 4.8vw, 5rem);
  color: var(--navy);
}
.booking__heading h2 em {
  color: var(--coral);
}
.booking__heading > p:last-child {
  max-width: 38rem;
  margin: 1rem 0 0;
  color: #405666;
  font-size: 0.95rem;
  font-weight: 500;
}
.booking__live-note {
  display: grid;
  grid-template-columns: auto 1fr auto;
  gap: 0.75rem;
  align-items: center;
  margin: 1.6rem 0 1.35rem;
  padding: 1rem 1.1rem;
  border: 1px solid rgba(6, 46, 88, 0.13);
  border-radius: 1rem;
  background: linear-gradient(135deg, #f7fbfc, #edf6f5);
}
.booking__live-note > span {
  width: 0.7rem;
  height: 0.7rem;
  border-radius: 50%;
  background: #5aa865;
  box-shadow: 0 0 0 0.28rem rgba(90, 168, 101, 0.15);
}
.booking__live-note p {
  margin: 0;
  color: #52636e;
  font-size: 0.7rem;
  line-height: 1.4;
}
.booking__live-note strong {
  color: var(--navy);
  font-size: 0.73rem;
  letter-spacing: 0.02em;
}
.booking__live-note a {
  align-self: center;
  white-space: nowrap;
  color: var(--navy);
  font-size: 0.65rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-decoration: underline;
  text-underline-offset: 0.22rem;
  text-transform: uppercase;
}
.booking__live-note a:hover {
  color: var(--coral);
}
.booking-flow {
  margin: 0;
}
.booking-progress {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.35rem;
  margin: 0 0 1.35rem;
  padding: 0;
  list-style: none;
}
.booking-progress li {
  display: flex;
  align-items: center;
  gap: 0.45rem;
  min-width: 0;
  color: #81909a;
  font-size: 0.62rem;
  font-weight: 800;
  letter-spacing: 0.04em;
  text-transform: uppercase;
}
.booking-progress li:after {
  content: "";
  position: absolute;
}
.booking-progress span {
  display: grid;
  place-items: center;
  flex: 0 0 auto;
  width: 1.65rem;
  height: 1.65rem;
  border: 1px solid #cdd7d9;
  border-radius: 50%;
  font: 700 0.67rem var(--sans);
}
.booking-progress .is-current,
.booking-progress .is-complete {
  color: var(--navy);
}
.booking-progress .is-current span {
  border-color: var(--navy);
  background: var(--navy);
  color: #fff;
  box-shadow: 0 0.35rem 0.7rem rgba(6, 46, 88, 0.18);
}
.booking-progress .is-complete span {
  border-color: var(--turquoise);
  background: #e2f6f6;
  color: var(--navy);
}
.booking-step {
  display: none;
  min-width: 0;
  margin: 0;
  padding: 0;
  border: 0;
}
.booking-step.is-active {
  display: block;
  animation: booking-step-in 0.42s cubic-bezier(0.2, 0.8, 0.2, 1);
}
.booking-step legend {
  padding: 0;
  color: var(--navy);
  font: clamp(1.55rem, 2.4vw, 2.15rem)/1.05 var(--serif);
}
.booking-step__intro {
  margin: 0.48rem 0 1.3rem;
  color: #60717d;
  font-size: 0.78rem;
}
.booking-field {
  margin-top: 1.25rem;
}
.booking-field > span {
  display: block;
  margin-bottom: 0.65rem;
  color: var(--navy);
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: 0.075em;
  text-transform: uppercase;
}
.booking-field small,
.booking-contact-grid label small,
.booking-notes small {
  color: #7b8991;
  font-size: 0.58rem;
  font-weight: 700;
  letter-spacing: 0.05em;
  text-transform: none;
}
.booking-calendar {
  display: grid;
  grid-template-columns: repeat(7, minmax(0, 1fr));
  gap: 0.45rem;
}
.booking-calendar button {
  display: grid;
  justify-items: center;
  gap: 0.12rem;
  min-height: 4.45rem;
  padding: 0.35rem 0.15rem;
  border: 1px solid #d5e0e1;
  border-radius: 0.85rem;
  background: #fff;
  color: var(--navy);
  cursor: pointer;
  transition:
    transform 0.18s,
    border-color 0.18s,
    background 0.18s,
    box-shadow 0.18s;
}
.booking-calendar button:hover:not(:disabled) {
  transform: translateY(-2px);
  border-color: var(--turquoise);
  box-shadow: 0 0.55rem 1.1rem rgba(13, 98, 108, 0.12);
}
.booking-calendar button small {
  font-size: 0.52rem;
  font-weight: 800;
  letter-spacing: 0.05em;
  text-transform: uppercase;
}
.booking-calendar button strong {
  font: 1.25rem/1 var(--serif);
}
.booking-calendar button span {
  font-size: 0.52rem;
  color: #83919a;
  text-transform: capitalize;
}
.booking-calendar button.is-selected {
  border-color: var(--navy);
  background: var(--navy);
  color: #fff;
  box-shadow: 0 0.6rem 1.3rem rgba(6, 46, 88, 0.2);
}
.booking-calendar button.is-selected span {
  color: #d7e7ee;
}
.booking-calendar button:disabled {
  cursor: not-allowed;
  border-color: #e6e0d7;
  background: #f1ede5;
  color: #a8a195;
}
.booking-calendar button:disabled small {
  color: #a36c5d;
}
.booking-covers,
.booking-times,
.booking-options {
  display: grid;
  gap: 0.5rem;
}
.booking-covers {
  grid-template-columns: repeat(8, minmax(0, 1fr));
}
.booking-times {
  grid-template-columns: repeat(7, minmax(0, 1fr));
  max-height: 11rem;
  padding-right: 0.15rem;
  overflow: auto;
}
.booking-options {
  grid-template-columns: repeat(3, minmax(0, 1fr));
}
.booking-covers button,
.booking-times button,
.booking-options button {
  min-height: 2.75rem;
  padding: 0.45rem;
  border: 1px solid #d5e0e1;
  border-radius: 0.7rem;
  background: #fff;
  color: var(--navy);
  font-size: 0.71rem;
  font-weight: 800;
  cursor: pointer;
  transition:
    background 0.18s,
    border-color 0.18s,
    color 0.18s,
    transform 0.18s;
}
.booking-options button {
  font-size: 0.62rem;
  line-height: 1.15;
}
.booking-covers button:hover,
.booking-times button:hover:not(:disabled),
.booking-options button:hover {
  transform: translateY(-1px);
  border-color: var(--turquoise);
}
.booking-covers .is-selected,
.booking-times .is-selected,
.booking-options .is-selected {
  border-color: var(--navy);
  background: var(--navy);
  color: #fff;
  box-shadow: 0 0.4rem 0.85rem rgba(6, 46, 88, 0.14);
}
.booking-times button:disabled {
  cursor: not-allowed;
  border-color: #e6e0d7;
  background: #f5f1e9;
  color: #aaa296;
  text-decoration: line-through;
}
.booking-contact-grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0.75rem;
}
.booking-contact-grid--single {
  grid-template-columns: minmax(0, 1fr);
  max-width: 30rem;
}
.booking-contact-grid label,
.booking-notes {
  display: grid;
  gap: 0.42rem;
  color: var(--navy);
  font-size: 0.66rem;
  font-weight: 800;
  letter-spacing: 0.06em;
  text-transform: uppercase;
}
.booking-contact-grid input,
.booking-notes textarea {
  width: 100%;
  border: 1px solid #ccd9dc;
  border-radius: 0.75rem;
  background: #fff;
  color: var(--ink);
  font: 500 0.88rem var(--sans);
  letter-spacing: normal;
  text-transform: none;
  outline: 0;
  transition:
    border-color 0.18s,
    box-shadow 0.18s;
}
.booking-contact-grid input {
  min-height: 3rem;
  padding: 0.72rem 0.78rem;
}
.booking-notes {
  margin-top: 0.85rem;
}
.booking-notes textarea {
  padding: 0.75rem;
  resize: vertical;
}
.booking-contact-grid input:focus,
.booking-notes textarea:focus {
  border-color: var(--turquoise);
  box-shadow: 0 0 0 0.22rem rgba(19, 174, 185, 0.14);
}
.booking-check {
  display: flex;
  align-items: flex-start;
  gap: 0.65rem;
  margin-top: 0.95rem;
  color: #556772;
  font-size: 0.69rem;
  line-height: 1.4;
}
.booking-check input {
  width: 1rem;
  height: 1rem;
  margin: 0.05rem 0 0;
  accent-color: var(--navy);
}
.booking-summary {
  margin-top: 1.3rem;
  padding: 1rem 1.05rem;
  border: 1px solid #dbe4df;
  border-radius: 1rem;
  background: #f7f4ec;
}
.booking-summary > p {
  margin: 0 0 0.65rem;
  color: #7e6443;
  font-size: 0.61rem;
  font-weight: 800;
  letter-spacing: 0.1em;
  text-transform: uppercase;
}
.booking-summary dl {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 0.65rem;
  margin: 0;
}
.booking-summary dl div {
  min-width: 0;
}
.booking-summary dt {
  margin: 0 0 0.17rem;
  color: #81909a;
  font-size: 0.57rem;
  font-weight: 800;
  letter-spacing: 0.055em;
  text-transform: uppercase;
}
.booking-summary dd {
  overflow: hidden;
  margin: 0;
  color: var(--navy);
  font-size: 0.72rem;
  font-weight: 800;
  line-height: 1.25;
  text-overflow: ellipsis;
  white-space: nowrap;
}
.booking-message {
  min-height: 1.25rem;
  margin: 0.8rem 0 0;
  color: #a13e30;
  font-size: 0.72rem;
  font-weight: 700;
}
.booking-actions {
  display: flex;
  justify-content: flex-end;
  gap: 0.65rem;
  margin-top: 0.2rem;
}
.booking-actions .button {
  min-width: 10rem;
}
.booking-actions [hidden] {
  display: none !important;
}
.booking-disclaimer {
  margin: 1rem 0 0;
  color: #657681;
  font-size: 0.64rem;
  line-height: 1.4;
}
@keyframes booking-step-in {
  from {
    opacity: 0;
    transform: translateY(0.5rem);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
@media (max-width: 900px) {
  .booking {
    grid-template-columns: 1fr;
  }
  .booking__visual {
    min-height: 23rem;
  }
  .booking__content {
    padding: clamp(1.15rem, 4vw, 2rem);
  }
  .booking-times {
    grid-template-columns: repeat(6, minmax(0, 1fr));
  }
  .booking-contact-grid {
    grid-template-columns: repeat(3, 1fr);
  }
}
@media (max-width: 620px) {
  .booking {
    padding-top: 3.75rem;
    padding-bottom: 3.75rem;
    gap: 1rem;
  }
  .booking__visual {
    min-height: 17rem;
    border-radius: 1.2rem;
  }
  .booking__content {
    border-radius: 1.2rem;
  }
  .booking__heading h2 {
    font-size: clamp(2.65rem, 12vw, 3.5rem);
  }
  .booking__live-note {
    grid-template-columns: auto 1fr;
    gap: 0.65rem;
    margin: 1.25rem 0;
  }
  .booking__live-note a {
    grid-column: 2;
    justify-self: start;
    margin-top: 0.05rem;
  }
  .booking-progress b {
    font-size: 0.52rem;
  }
  .booking-calendar {
    gap: 0.28rem;
  }
  .booking-calendar button {
    min-height: 3.9rem;
    border-radius: 0.68rem;
  }
  .booking-calendar button strong {
    font-size: 1.05rem;
  }
  .booking-calendar button small,
  .booking-calendar button span {
    font-size: 0.45rem;
  }
  .booking-covers {
    grid-template-columns: repeat(4, 1fr);
  }
  .booking-times {
    grid-template-columns: repeat(4, minmax(0, 1fr));
    max-height: 12.1rem;
  }
  .booking-options {
    grid-template-columns: 1fr;
  }
  .booking-options button {
    text-align: left;
    padding-left: 0.8rem;
  }
  .booking-contact-grid {
    grid-template-columns: 1fr;
  }
  .booking-summary dl {
    grid-template-columns: 1fr 1fr;
    gap: 0.75rem;
  }
  .booking-actions {
    justify-content: stretch;
  }
  .booking-actions .button {
    flex: 1;
    min-width: 0;
    padding-inline: 0.75rem;
    font-size: 0.61rem;
  }
}
@media (prefers-reduced-motion: reduce) {
  .booking-step.is-active {
    animation: none;
  }
  .booking-calendar button,
  .booking-covers button,
  .booking-times button,
  .booking-options button {
    transition: none;
  }
}

/* Capa de interacción de reserva: clara, táctil y pensada para una solicitud directa. */
.booking,
.booking button,
.booking input,
.booking textarea {
  font-family:
    -apple-system, BlinkMacSystemFont, "SF Pro Display", "SF Pro Text",
    "Helvetica Neue", Arial, sans-serif;
}
.booking {
  background: linear-gradient(135deg, #f2f5f7 0%, #fffaf1 52%, #e7f3f5 100%);
}
.booking__content {
  border-color: rgba(8, 46, 88, 0.1);
  border-radius: 1.5rem;
  background: rgba(250, 251, 252, 0.92);
  box-shadow:
    0 1.25rem 3.5rem rgba(12, 37, 58, 0.12),
    inset 0 1px rgba(255, 255, 255, 0.9);
}
.booking__heading h2 {
  color: #082d56;
  font-family:
    -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue",
    Arial, sans-serif;
  font-size: clamp(2.65rem, 4.45vw, 4.7rem);
  font-weight: 760;
  letter-spacing: -0.065em;
  line-height: 0.94;
}
.booking__heading h2 em {
  color: #e75642;
  font-style: normal;
  font-weight: 430;
}
.booking__heading > p:last-child {
  max-width: 33rem;
  color: #536976;
  font-size: 0.98rem;
  letter-spacing: -0.012em;
}
.booking__live-note {
  border-color: #d6e3e5;
  border-radius: 1.15rem;
  background: #f1f7f7;
  box-shadow: inset 0 1px rgba(255, 255, 255, 0.9);
}
.booking__live-note a {
  display: inline-flex;
  align-items: center;
  min-height: 2.25rem;
  padding: 0 0.75rem;
  border-radius: 0.7rem;
  background: #fff;
  box-shadow:
    0 1px 2px rgba(11, 42, 60, 0.12),
    inset 0 0 0 1px #dbe5e6;
  text-decoration: none;
}
.booking-progress {
  gap: 0.3rem;
  padding: 0.38rem;
  border: 1px solid #e0e4e7;
  border-radius: 1.15rem;
  background: #eff1f3;
  box-shadow:
    inset 0 1px 2px rgba(19, 39, 56, 0.05),
    0 1px rgba(255, 255, 255, 0.9);
}
.booking-progress li {
  justify-content: center;
  gap: 0.32rem;
  min-height: 2.6rem;
  border-radius: 0.82rem;
  color: #77858d;
  transition:
    background 0.28s ease,
    color 0.28s ease,
    box-shadow 0.28s ease;
}
.booking-progress span {
  width: 1.25rem;
  height: 1.25rem;
  border: 0;
  background: #d3d8dc;
  color: #617079;
  font-size: 0.55rem;
}
.booking-progress .is-current {
  background: #fff;
  color: #062e58;
  box-shadow:
    0 2px 7px rgba(20, 38, 53, 0.12),
    inset 0 0 0 1px rgba(255, 255, 255, 0.85);
}
.booking-progress .is-current span {
  background: #062e58;
  box-shadow: none;
}
.booking-progress .is-complete {
  color: #365a65;
}
.booking-progress .is-complete span {
  background: #bde8e5;
  color: #164e5e;
}
.booking-step {
  padding: 0.15rem 0.05rem;
}
.booking-step legend {
  font-family:
    -apple-system, BlinkMacSystemFont, "SF Pro Display", "Helvetica Neue",
    Arial, sans-serif;
  font-size: clamp(1.62rem, 2.1vw, 2.15rem);
  font-weight: 720;
  letter-spacing: -0.045em;
}
.booking-date-picker {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: 0.8rem;
  margin: 0.85rem 0 0.65rem;
  padding: 0.72rem 0.78rem 0.72rem 0.9rem;
  border: 1px solid #dfe5e7;
  border-radius: 1rem;
  background: #fff;
  box-shadow: inset 0 1px rgba(255, 255, 255, 0.92);
}
.booking-date-picker span {
  color: #526875;
  font-size: 0.72rem;
  font-weight: 700;
  letter-spacing: -0.01em;
}
.booking-date-picker input {
  min-height: 2.7rem;
  min-width: 10.8rem;
  padding: 0.5rem 0.62rem;
  border: 1px solid #cbd6db;
  border-radius: 0.72rem;
  background: #f6f8f8;
  color: #062e58;
  font: 700 0.78rem/1 -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", Arial, sans-serif;
  font-variant-numeric: tabular-nums;
}
.booking-date-picker input:focus-visible {
  outline: 3px solid rgba(19, 174, 185, 0.42);
  outline-offset: 2px;
}
.booking-date-status {
  min-height: 1.35rem;
  margin: 0.7rem 0 0;
  color: #526875;
  font-size: 0.72rem;
  font-weight: 650;
}
.booking-step__intro {
  color: #6d7c85;
  font-size: 0.82rem;
}
.booking-calendar {
  gap: 0.42rem;
  padding: 0.4rem;
  border: 1px solid #e1e5e7;
  border-radius: 1.25rem;
  background: #f4f5f6;
  box-shadow: inset 0 1px 2px rgba(26, 46, 63, 0.04);
}
.booking-calendar button {
  min-height: 4.55rem;
  border: 0;
  border-radius: 0.93rem;
  box-shadow:
    0 1px 1px rgba(0, 0, 0, 0.05),
    inset 0 0 0 1px rgba(26, 51, 69, 0.075);
}
.booking-calendar button:hover:not(:disabled) {
  border-color: transparent;
  background: #fff;
  box-shadow:
    0 0.45rem 1.1rem rgba(17, 52, 75, 0.13),
    inset 0 0 0 1px #b7d9dc;
}
.booking-calendar button.is-selected {
  background: linear-gradient(150deg, #0a3b6b, #062e58);
  box-shadow:
    0 0.72rem 1.3rem rgba(6, 46, 88, 0.25),
    inset 0 1px rgba(255, 255, 255, 0.18);
}
.booking-covers,
.booking-times,
.booking-options {
  gap: 0.5rem;
  padding: 0.35rem;
  border-radius: 1.05rem;
  background: #f0f2f4;
}
.booking-covers button,
.booking-times button,
.booking-options button {
  min-height: 3rem;
  border: 0;
  border-radius: 0.75rem;
  background: transparent;
  box-shadow: none;
  color: #3a4e5b;
  font-weight: 720;
  letter-spacing: -0.01em;
}
.booking-covers button:hover,
.booking-times button:hover:not(:disabled),
.booking-options button:hover {
  border-color: transparent;
  background: rgba(255, 255, 255, 0.75);
  box-shadow: inset 0 0 0 1px rgba(20, 53, 75, 0.1);
}
.booking-covers .is-selected,
.booking-times .is-selected,
.booking-options .is-selected {
  background: #fff;
  color: #062e58;
  box-shadow:
    0 2px 7px rgba(17, 39, 55, 0.13),
    inset 0 0 0 1px rgba(255, 255, 255, 0.9);
}
.booking-times button:disabled {
  border: 0;
  background: transparent;
  color: #a8b1b6;
}
.booking-contact-grid input,
.booking-notes textarea {
  border-color: #dfe5e7;
  border-radius: 0.9rem;
  background: #f5f6f7;
  box-shadow: inset 0 1px 2px rgba(16, 38, 56, 0.04);
}
.booking-contact-grid input:focus,
.booking-notes textarea:focus {
  border-color: #6eb5bd;
  background: #fff;
  box-shadow: 0 0 0 0.25rem rgba(19, 174, 185, 0.16);
}
.booking-summary {
  border-color: #dfe4e5;
  border-radius: 1.2rem;
  background: linear-gradient(145deg, #fff, #f3f5f6);
  box-shadow:
    inset 0 1px rgba(255, 255, 255, 0.9),
    0 0.5rem 1.35rem rgba(24, 46, 60, 0.055);
}
.booking-actions {
  gap: 0.55rem;
  margin-top: 0.45rem;
}
.booking .button {
  min-height: 3.35rem;
  min-width: 11.5rem;
  border: 0;
  border-radius: 1rem;
  font-family:
    -apple-system, BlinkMacSystemFont, "SF Pro Text", "Helvetica Neue", Arial,
    sans-serif;
  font-size: 0.73rem;
  font-weight: 780;
  letter-spacing: -0.01em;
  text-transform: none;
  transition:
    transform 0.18s ease,
    box-shadow 0.18s ease,
    filter 0.18s ease;
}
.booking .button--navy {
  background: linear-gradient(150deg, #0c3e6c, #062e58);
  box-shadow:
    0 0.65rem 1.25rem rgba(6, 46, 88, 0.26),
    inset 0 1px rgba(255, 255, 255, 0.18);
}
.booking .button--sun {
  background: linear-gradient(145deg, #ffd869, #f6b721);
  box-shadow:
    0 0.65rem 1.25rem rgba(207, 143, 11, 0.24),
    inset 0 1px rgba(255, 255, 255, 0.52);
}
.booking .button--outline-dark {
  border: 1px solid #d7dfe3;
  background: #fff;
  box-shadow:
    0 0.35rem 0.8rem rgba(22, 39, 53, 0.08),
    inset 0 1px #fff;
}
.booking .button:hover {
  transform: translateY(-2px);
  filter: brightness(1.02);
}
.booking .button:active,
.booking-covers button:active,
.booking-times button:active,
.booking-options button:active,
.booking-calendar button:active:not(:disabled) {
  transform: scale(0.975);
}
.booking .button:focus-visible,
.booking-covers button:focus-visible,
.booking-times button:focus-visible,
.booking-options button:focus-visible,
.booking-calendar button:focus-visible {
  outline: 3px solid rgba(19, 174, 185, 0.42);
  outline-offset: 2px;
}
@media (max-width: 620px) {
  .booking__content {
    border-radius: 1.3rem;
  }
  .booking-progress {
    gap: 0.18rem;
    padding: 0.25rem;
    border-radius: 0.95rem;
  }
  .booking-progress li {
    min-height: 2.4rem;
    gap: 0.18rem;
  }
  .booking-progress span {
    width: 1.15rem;
    height: 1.15rem;
  }
  .booking-progress b {
    font-size: 0.47rem;
  }
  .booking-calendar {
    gap: 0.28rem;
    padding: 0.28rem;
  }
  .booking-calendar button {
    min-height: 3.95rem;
    border-radius: 0.7rem;
  }
  .booking-date-picker {
    align-items: stretch;
    flex-direction: column;
    gap: 0.5rem;
  }
  .booking-date-picker input {
    width: 100%;
    min-width: 0;
    min-height: 2.9rem;
  }
  .booking .button {
    min-height: 3.25rem;
    min-width: 0;
    border-radius: 0.9rem;
  }
}
/* Sistema visual Café Del Mar · capa final de interfaz */
:root {
  --sea-950: #061b35;
  --sea-900: #072b54;
  --sea-800: #0b4174;
  --foam: #f8f0df;
  --sand: #efe0c6;
  --sunset: #ef6b45;
  --gold: #f5b736;
  --aqua: #45c2c6;
  --ink-premium: #142337;
  --radius-xl: 2rem;
  --shadow-soft: 0 1.5rem 4rem rgba(4, 25, 50, .12);
}

html { scroll-padding-top: 6.5rem; }
body { background: var(--foam); color: var(--ink-premium); }
body::selection { background: var(--gold); color: var(--sea-950); }
.section { position: relative; overflow: clip; }
/* La página debe pintar completa al abrir un ancla profunda (reserva, mapas o pie).
   Evitamos content-visibility: auto, que podía enseñar un hueco crema un instante al saltar. */
.moments, .gallery, .reviews, .visit { content-visibility: visible; contain-intrinsic-size: auto; }

/* Los enlaces internos se animan desde JavaScript. Dejar el smooth-scroll en
   CSS provoca que una URL profunda intente recorrer miles de píxeles al cargar
   y puede mostrar un fondo vacío durante ese trayecto. */
html,
html.has-cdm-motion { scroll-behavior: auto; }
.section::before { content: ""; position: absolute; pointer-events: none; opacity: .5; }
.eyebrow { color: var(--sunset); font-size: .64rem; letter-spacing: .18em; }
h1, h2, h3 { text-wrap: balance; }
.button { position: relative; min-height: 3.35rem; overflow: hidden; isolation: isolate; border-radius: 1rem; letter-spacing: .075em; font-size: .68rem; }
.button::before { content: ""; position: absolute; z-index: -1; inset: 0; background: currentColor; opacity: 0; transform: translateY(100%); transition: transform .34s cubic-bezier(.16,1,.3,1), opacity .34s; }
.button:hover::before, .button:focus-visible::before { opacity: .1; transform: none; }
.button:focus-visible, button:focus-visible, a:focus-visible, input:focus-visible, textarea:focus-visible { outline: 3px solid var(--gold); outline-offset: 3px; }

/* Cabecera fija con identidad y controles útiles. */
.header { min-height: 5.85rem; padding: .65rem clamp(1rem, 4vw, 4.8rem); gap: 1.25rem; border-bottom: 1px solid rgba(255,255,255,.14); background: linear-gradient(180deg, rgba(3,19,38,.75), transparent); }
.header.is-scrolled { min-height: 5.1rem; background: rgba(6,27,53,.98); box-shadow: 0 .9rem 2.5rem rgba(2,16,33,.26); backdrop-filter: blur(18px) saturate(145%); }
.brand { min-width: 7.75rem; gap: 0; }
.brand__mark { width: clamp(7.75rem, 10vw, 10.5rem); height: 4.2rem; padding: 0; object-fit: contain; object-position: center; border: 0; border-radius: .8rem; background: transparent; box-shadow: none; }
.nav { margin-left: auto; gap: clamp(1rem, 1.9vw, 2.15rem); font-size: .64rem; }
.nav a { position: relative; padding: .7rem 0; opacity: .9; }
.nav a::after { content: ""; position: absolute; right: 0; bottom: .35rem; left: 0; height: 1px; background: var(--gold); transform: scaleX(0); transform-origin: right; transition: transform .28s cubic-bezier(.16,1,.3,1); }
.nav a:hover::after, .nav a:focus-visible::after { transform: scaleX(1); transform-origin: left; }
.header__actions { display: flex; align-items: center; gap: .55rem; }
.header__whatsapp { display: grid; place-items: center; width: 2.85rem; height: 2.85rem; flex: 0 0 auto; border: 2px solid rgba(255,255,255,.88); border-radius: 50%; background: #25d366; box-shadow: 0 .5rem 1.35rem rgba(0,0,0,.23); transition: transform .25s cubic-bezier(.16,1,.3,1), box-shadow .25s; }
.header__whatsapp:hover { transform: translateY(-2px) rotate(-4deg); box-shadow: 0 .8rem 1.8rem rgba(0,0,0,.3); }
.header__whatsapp img { width: 1.32rem; height: 1.32rem; }
.header__reserve { display: inline-flex; align-items: center; justify-content: center; min-height: 2.85rem; padding: .68rem .95rem; border-radius: 999px; background: var(--gold); color: var(--sea-950); box-shadow: 0 .55rem 1.4rem rgba(0,0,0,.17); font-size: .62rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase; transition: transform .25s, background .25s; }
.header__reserve:hover { background: #ffcb54; transform: translateY(-2px); }

/* Selector de idiomas, aplicado a la identidad del local. */
.language-pro { position: relative; z-index: 1300; }
.language-pro__toggle { display: flex; align-items: center; gap: .48rem; min-height: 2.85rem; padding: .35rem .55rem; color: #fff; border: 1px solid rgba(255,255,255,.36); border-radius: 999px; background: rgba(4,25,49,.48); box-shadow: 0 .5rem 1.4rem rgba(0,0,0,.15); backdrop-filter: blur(12px); cursor: pointer; transition: transform .25s, background .25s, border-color .25s; }
.language-pro__toggle:hover, .language-pro.is-open .language-pro__toggle { border-color: rgba(245,183,54,.9); background: rgba(6,27,53,.96); transform: translateY(-1px); }
.language-pro__flag, .language-pro__menu button > span:first-child { display: grid; place-items: center; width: 1.56rem; height: 1.56rem; overflow: hidden; border-radius: 50%; background: rgba(255,255,255,.14); font-size: 1.04rem; line-height: 1; }
.language-pro__copy { display: grid; min-width: 4.65rem; text-align: left; line-height: 1.05; }
.language-pro__copy strong { font-size: .66rem; letter-spacing: .01em; }
.language-pro__copy small { margin-top: .17rem; color: rgba(255,255,255,.66); font-size: .52rem; font-weight: 700; letter-spacing: .07em; }
.language-pro__toggle svg { width: .8rem; fill: none; stroke: currentColor; stroke-width: 1.7; transition: transform .25s; }
.language-pro.is-open .language-pro__toggle svg { transform: rotate(180deg); }
.language-pro__menu { position: absolute; top: calc(100% + .7rem); right: 0; width: min(19rem, calc(100vw - 1.5rem)); padding: .5rem; color: var(--sea-950); border: 1px solid rgba(7,43,84,.1); border-radius: 1.1rem; background: rgba(255,250,241,.98); box-shadow: 0 1.7rem 4.5rem rgba(3,20,40,.3); transform-origin: top right; animation: language-pop .32s cubic-bezier(.16,1,.3,1); }
.language-pro__menu[hidden] { display: none; }
.language-pro__menu button { display: grid; grid-template-columns: 2.05rem 1fr 1rem; align-items: center; width: 100%; min-height: 3.25rem; gap: .68rem; padding: .45rem .6rem; color: inherit; border: 0; border-radius: .75rem; background: transparent; text-align: left; cursor: pointer; transition: background .2s, color .2s, transform .2s; }
.language-pro__menu button:hover { background: #f1dfbb; transform: translateX(2px); }
.language-pro__menu button[aria-checked="true"] { background: var(--sea-900); color: #fff; }
.language-pro__menu strong { display: block; font-size: .76rem; }.language-pro__menu small { display: block; margin-top: .18rem; font-size: .6rem; color: #6d7782; }.language-pro__menu button[aria-checked="true"] small { color: rgba(255,255,255,.66); }.language-pro__menu i { color: var(--gold); font-style: normal; opacity: 0; }.language-pro__menu button[aria-checked="true"] i { opacity: 1; }
@keyframes language-pop { from { opacity: 0; transform: translateY(-.4rem) scale(.96); } to { opacity: 1; transform: none; } }

/* Hero: foto visible, texto legible sin apagar la imagen. */
.hero { min-height: max(47rem, 100svh); background: var(--sea-950); }
.hero__image { filter: saturate(1.05) contrast(1.02); object-position: center 49%; }
.hero__veil { display: none; }
.hero::after { content: ""; position: absolute; z-index: -1; inset: auto 0 0; height: 44%; pointer-events: none; background: linear-gradient(0deg, rgba(3,21,43,.82), rgba(3,21,43,0)); }
.hero__content { max-width: 44.5rem; padding: clamp(9.5rem, 20vh, 12.5rem) clamp(1.25rem, 7vw, 8rem) 5.75rem; }
.hero__content > .eyebrow { display: inline-flex; padding: .5rem .72rem; border: 1px solid rgba(255,255,255,.28); border-radius: 99px; background: rgba(5,24,47,.52); color: #ffe0a1; backdrop-filter: blur(9px); }
.hero h1 { font-size: clamp(4.3rem, 8vw, 8.7rem); text-shadow: 0 .25rem 1.6rem rgba(0,0,0,.33); }
.hero h1 em { color: #ffe0a1; }
.hero__content > p:not(.eyebrow) { max-width: 34rem; font-weight: 500; text-shadow: 0 .15rem 1rem rgba(0,0,0,.5); }
.hero__actions { gap: .7rem; }.hero__actions .button { min-width: 10rem; }.button--sun { color: var(--sea-950); background: var(--gold); }.button--glass { background: rgba(5,25,49,.56); border-color: rgba(255,255,255,.6); backdrop-filter: blur(10px); }
.hero__rating { right: clamp(1rem, 4vw, 4.2rem); bottom: 2.25rem; padding: .85rem 1rem; border: 1px solid rgba(255,255,255,.45); border-radius: 1rem; background: rgba(255,250,240,.94); backdrop-filter: blur(12px); }.hero__rating-g { color: #4285f4; }.hero__location { bottom: 2.3rem; }

/* Ritmo editorial y carta. */
.intro { background: #fbf6eb; }.intro::before { top: 1rem; right: -9rem; width: 24rem; height: 24rem; border: 1px solid rgba(7,43,84,.08); border-radius: 50%; }.intro__facts { border-color: rgba(7,43,84,.14); }.intro__facts b { color: var(--sunset); }
.menu { background: linear-gradient(145deg,#f8f0df,#fffaf1 48%,#f1e2c6); }.menu::before { top: 0; right: 3vw; width: 15rem; height: 9rem; opacity: .33; background: repeating-radial-gradient(ellipse at center,transparent 0 1.25rem,rgba(7,43,84,.12) 1.31rem 1.36rem,transparent 1.42rem 2.4rem); transform: rotate(-18deg); }
.section-heading h2, .intro h2 { color: var(--sea-900); }.section-heading h2 em, .intro h2 em { color: var(--sunset); }.menu-tools { max-width: 57rem; padding: .55rem; border: 1px solid rgba(7,43,84,.12); border-radius: 1.15rem; background: rgba(255,255,255,.6); box-shadow: 0 .75rem 2rem rgba(6,27,53,.05); }.menu-search { background: transparent; border-color: transparent; }.menu-search:focus-within { border-color: var(--aqua); }.menu-search input { font-size: .86rem; }.menu-filters { gap: .6rem; padding: 1.25rem 0 1.55rem; }.menu-filters button { min-height: 2.7rem; padding: .6rem .95rem; border-color: rgba(7,43,84,.14); border-radius: .7rem; background: rgba(255,255,255,.75); transition: transform .25s, background .25s, color .25s, box-shadow .25s; }.menu-filters button:hover { transform: translateY(-2px); box-shadow: 0 .6rem 1.2rem rgba(6,27,53,.1); }.menu-filters button.is-active { background: var(--sea-900); border-color: var(--sea-900); box-shadow: 0 .7rem 1.25rem rgba(7,43,84,.23); }
.menu-grid { grid-template-columns: repeat(12,minmax(0,1fr)); gap: 1rem; }.menu-category { grid-column: span 4; position: relative; overflow: hidden; padding: 1.5rem; border: 1px solid rgba(7,43,84,.1); border-radius: 1.25rem; background: rgba(255,255,255,.76); box-shadow: 0 .9rem 2.2rem rgba(6,27,53,.06); transition: transform .35s cubic-bezier(.16,1,.3,1), box-shadow .35s; }.menu-category:hover { transform: translateY(-.28rem); box-shadow: var(--shadow-soft); }.menu-category::before { content:""; position:absolute; top:0; right:1.3rem; width:2.6rem; height:.2rem; border-radius:1rem; background:var(--gold); }.menu-category__name { color: var(--sea-900); }.menu-category__name small { color: var(--sunset); }.menu-item { position:relative; }.menu-item h3 { font-size: .86rem; }.menu-item b { color: var(--sunset); font-variant-numeric: tabular-nums; }.menu-item p { color: #607080; }.menu-note { max-width: 46rem; }

/* Reserva guiada: refinado sobre la lógica real existente. */
.booking { background: linear-gradient(135deg,#071f3d,#0a4472); color:#fff; }.booking__content { border-color:rgba(255,255,255,.15); background:rgba(255,250,241,.98); }.booking__heading h2,.booking__heading h2 em { color:var(--sea-900); }.booking__heading h2 em { color:var(--sunset); }.booking__live-note { border-color:rgba(7,43,84,.1); }.booking-calendar button.is-selected,.booking-covers .is-selected,.booking-times .is-selected,.booking-options .is-selected { background:var(--sea-900);border-color:var(--sea-900); }.booking__visual { min-height:42rem; }.booking__visual p { font-size:.6rem; }.booking-actions .button--navy { background:var(--sea-900); }.booking-disclaimer { color:rgba(255,255,255,.72); }

/* Historias reales y galería curada. */
.experience { background: var(--sea-950); }.experience::before { top:-12rem; left:-9rem; width:30rem; height:30rem; border:1px solid rgba(245,183,54,.25); border-radius:50%; }.experience-grid { margin-top: 2.75rem; }.experience-card { border:1px solid rgba(255,255,255,.1); border-radius:1.45rem; }.experience-card figcaption { font-size:1.7rem; }.experience-gallery { margin-top:2.75rem; }.experience-gallery .gallery-item { border-color:rgba(255,255,255,.15); background:#0e3558; box-shadow:0 1rem 2.8rem rgba(0,0,0,.2); }.experience-gallery .gallery-item::after { background:linear-gradient(135deg,rgba(245,183,54,.24),transparent 45%); }.moments { background:#fffaf0; }.moments__header { display:flex; align-items:end; justify-content:space-between; gap:2rem; max-width:75rem; }.moments__header p:last-child { max-width:27rem; margin:0; color:#596978; }.moments-grid { display:grid; grid-template-columns:1.15fr .85fr .85fr; gap:1rem; margin-top:2.5rem; }.moment-card { position:relative; min-height:20rem; margin:0; padding:0; overflow:hidden; border:1px solid rgba(7,43,84,.1); border-radius:1.4rem; background:var(--sea-900); box-shadow:0 .8rem 2.2rem rgba(7,43,84,.09); cursor:zoom-in; }.moment-card--lead { grid-row:span 2; min-height:41rem; }.moment-card img { width:100%; height:100%; object-fit:cover; transition:transform .75s cubic-bezier(.16,1,.3,1); }.moment-card:hover img { transform:scale(1.05); }.moment-card::after { content:""; position:absolute; inset:45% 0 0; pointer-events:none; background:linear-gradient(transparent,rgba(2,17,32,.34)); }.moment-card figcaption { position:absolute; z-index:1; right:1rem; bottom:1rem; left:1rem; color:#fff; font:1.5rem/1 var(--serif); }.gallery { background:linear-gradient(145deg,#f5e6ca,#fffaf0); }.gallery-grid { grid-template-columns:repeat(12,minmax(0,1fr)); grid-auto-rows:15rem; gap:1rem; }.gallery-item { position:relative; grid-column:span 3; border:1px solid rgba(7,43,84,.12); border-radius:1.35rem; box-shadow:0 .75rem 1.8rem rgba(7,43,84,.08); }.gallery-item--tall { grid-row:span 2; }.gallery-item--wide { grid-column:span 6; }.gallery-item--feature { grid-column:span 6; grid-row:span 2; }.gallery-item::after { content:""; position:absolute; inset:0; pointer-events:none; background:linear-gradient(135deg,rgba(245,183,54,.17),transparent 40%); opacity:0; transition:opacity .3s; }.gallery-item:hover::after { opacity:1; }

/* Opiniones: se desplazan automáticamente sin bloquear la lectura. */
.reviews { background:var(--sea-950); color:#fff; }.reviews .section-heading h2 { color:#fff; }.reviews .section-heading h2 em { color:#ffe0a1; }.reviews-track { display:flex; gap:1rem; margin-top:2.5rem; overflow:auto; padding:.2rem .1rem 1rem; scroll-snap-type:x mandatory; scrollbar-width:none; }.reviews-track::-webkit-scrollbar { display:none; }.review { flex:0 0 min(25rem, 82vw); min-height:18rem; color:var(--ink-premium); border:1px solid rgba(255,255,255,.3); border-radius:1.35rem; background:#fffaf1; box-shadow:0 1rem 2.7rem rgba(0,0,0,.22); scroll-snap-align:start; }.review__source { color:#586776; }.review__g { background:#f2f6ff; color:#4285f4; }.review blockquote { font-size:1.35rem; }.reviews-source { color:rgba(255,255,255,.72); }.reviews-source a { color:#ffe0a1; }

/* Visita + pie de página completos. */
.visit { background:#fffaf0; }.visit__image { border-radius:1.6rem; box-shadow:var(--shadow-soft); }.visit-maps article { border-color:rgba(7,43,84,.12); border-radius:1.2rem; box-shadow:0 .8rem 2rem rgba(7,43,84,.07); }.visit-maps h3 { color:var(--sea-900); }.footer { grid-template-columns:1.25fr .8fr .95fr; gap:2rem; padding:4.4rem clamp(1.25rem,7vw,8rem) 1.35rem; background:linear-gradient(135deg,#061b35,#092f5a); }.footer .brand--footer { display:block; min-width:0; }.brand__full-logo { width:10.5rem; border-radius:1rem; background:#fff; box-shadow:0 .8rem 2.4rem rgba(0,0,0,.25); }.footer__description { max-width:19rem; margin:1rem 0 0; color:rgba(255,255,255,.66); font-size:.78rem; }.footer h2 { margin:0 0 .75rem; color:#ffe0a1; font:1.2rem/1 var(--serif); }.footer nav,.footer__links { display:grid; gap:.55rem; }.footer a { transition:color .2s,transform .2s; }.footer a:hover { color:#ffe0a1; transform:translateX(2px); }.footer__contact-actions { display:grid; gap:.55rem; }.footer-contact-action { display:flex; align-items:center; gap:.65rem; padding:.65rem; border:1px solid rgba(255,255,255,.15); border-radius:.8rem; background:rgba(255,255,255,.055); }.footer-contact-action img { width:1.35rem; height:1.35rem; }.footer-contact-action strong,.footer-contact-action small { display:block; }.footer-contact-action strong { font-size:.67rem; }.footer-contact-action small { margin-top:.1rem; color:rgba(255,255,255,.6); font-size:.6rem; }.footer__bottom { grid-column:1/-1; display:flex; justify-content:space-between; gap:1rem; margin-top:1.1rem; padding-top:1.15rem; border-top:1px solid rgba(255,255,255,.16); color:rgba(255,255,255,.58); font-size:.62rem; }.footer__bottom nav { display:flex; flex-wrap:wrap; gap:1rem; }

.quick-actions { right:max(.55rem,env(safe-area-inset-right)); bottom:max(.7rem,env(safe-area-inset-bottom)); gap:.42rem; }.quick-actions a { width:2.85rem; height:2.85rem; border-width:2px; box-shadow:0 .6rem 1.5rem rgba(0,0,0,.21); }.quick-actions a img { width:1.25rem; height:1.25rem; }
.cookie-banner { position:fixed; z-index:1500; right:1rem; bottom:1rem; width:min(27rem,calc(100vw - 2rem)); padding:1rem; border:1px solid rgba(255,255,255,.34); border-radius:1.1rem; background:rgba(6,27,53,.98); color:#fff; box-shadow:0 1rem 3.4rem rgba(0,0,0,.31); animation:cookie-up .45s cubic-bezier(.16,1,.3,1); }.cookie-banner[hidden]{display:none}.cookie-banner__row{display:flex;gap:.8rem;align-items:start}.cookie-banner__row img{width:2.65rem;height:2.65rem;object-fit:contain;border-radius:.55rem;background:#fff}.cookie-banner p{margin:.2rem 0 0;color:rgba(255,255,255,.72);font-size:.7rem;line-height:1.45}.cookie-banner strong{font-size:.78rem}.cookie-banner__actions{display:flex;gap:.5rem;margin-top:.85rem}.cookie-banner button{flex:1;min-height:2.5rem;border:1px solid rgba(255,255,255,.33);border-radius:.65rem;background:transparent;color:#fff;font:700 .61rem var(--sans);letter-spacing:.06em;text-transform:uppercase;cursor:pointer}.cookie-banner button[data-cookie-accept]{border-color:var(--gold);background:var(--gold);color:var(--sea-950)}@keyframes cookie-up{from{opacity:0;transform:translateY(1rem)}to{opacity:1;transform:none}}

@media (max-width: 900px) {
  .header { min-height:5.35rem; padding:.55rem .8rem; gap:.65rem; background:rgba(6,27,53,.97); }
  .header.is-scrolled { min-height:5.1rem; background:rgba(6,27,53,.99); }
  .brand__mark { width:8.4rem; height:3.85rem; }.nav { display:none; }.header__actions { margin-left:auto; gap:.4rem; }.menu-toggle { display:grid; border-color:rgba(255,255,255,.48); background:rgba(255,255,255,.08); }.menu-toggle:hover { background:rgba(255,255,255,.15); }
  .mobile-menu { top:5.9rem; right:.7rem; width:min(82vw,23rem); height:auto; min-height:0; max-height:min(34rem,64svh); padding:1.15rem 1.2rem 1.25rem; overflow:auto; border:1px solid rgba(255,255,255,.17); border-radius:1.35rem; background:linear-gradient(145deg,#061b35,#0c4770); box-shadow:0 1.5rem 4rem rgba(0,0,0,.38); transform:translateY(-1rem) translateX(1rem) scale(.96); opacity:0; transition:transform .42s cubic-bezier(.16,1,.3,1),opacity .3s; }.mobile-menu.is-open { transform:none;opacity:1; }.mobile-menu__logo { width:8rem;height:4.4rem;object-fit:contain;margin:0 auto .25rem; }.mobile-menu p{margin:.1rem 0 .8rem;text-align:center;color:#ffe0a1}.mobile-menu>a{padding:.7rem 0;font-size:clamp(1.8rem,8vw,2.55rem)}.mobile-menu>div{grid-template-columns:1fr 1fr;margin-top:1rem;padding-top:1rem}.mobile-menu .button{min-height:2.85rem;padding-inline:.55rem;font-size:.57rem}.mobile-menu__close{top:.75rem;right:.75rem}
  .language-pro__copy { min-width:3.4rem; }.language-pro__copy strong { font-size:.56rem; }.language-pro__copy small { font-size:.47rem; }.language-pro__toggle { gap:.3rem; padding:.28rem .4rem; }.language-pro__menu { position:fixed; top:5.8rem; right:.65rem; left:.65rem; width:auto; }
  .hero__content { padding:clamp(8rem,18vh,10rem) 1.15rem 8.4rem; }.hero__location{display:none}.hero__rating{right:1rem;bottom:1.2rem;left:auto}.hero__content > .eyebrow{font-size:.55rem}.hero h1{font-size:clamp(3.75rem,16vw,5.4rem)}
  .menu-grid{grid-template-columns:repeat(2,minmax(0,1fr));}.menu-category{grid-column:span 1;}.booking{grid-template-columns:1fr}.booking__visual{min-height:22rem}.booking__content{margin:0;padding:1.2rem;border-radius:1.35rem}.moments-grid{grid-template-columns:1fr 1fr}.moment-card--lead{grid-column:span 2;grid-row:auto;min-height:25rem}.gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));grid-auto-rows:12rem}.gallery-item,.gallery-item--wide{grid-column:span 1}.gallery-item--feature{grid-column:span 2;grid-row:span 2}.footer{grid-template-columns:1.2fr 1fr}.footer__bottom{grid-column:1/-1}.brand--footer{grid-column:span 2}.visit{grid-template-columns:1fr}.visit-maps{grid-template-columns:1fr 1fr}
}
@media (max-width: 620px) {
  html{scroll-padding-top:5.75rem}.header,.header.is-scrolled{min-height:5.1rem;padding-inline:.45rem}.brand__mark{width:7.9rem;height:3.55rem}.header__whatsapp{width:2.55rem;height:2.55rem}.header__whatsapp img{width:1.15rem;height:1.15rem}.language-pro__toggle{min-height:2.55rem}.language-pro__flag{width:1.38rem;height:1.38rem;font-size:.93rem}.language-pro__copy{min-width:2.9rem}.language-pro__copy strong{font-size:.49rem}.language-pro__copy small{font-size:.43rem}.menu-toggle{width:2.55rem;height:2.55rem}.hero{min-height:44rem}.hero__image{object-position:51% center}.hero::after{height:62%;background:linear-gradient(0deg,rgba(3,21,43,.88),rgba(3,21,43,.08) 75%,transparent)}.hero__content{padding:8.5rem 1.15rem 7rem}.hero__content>p:not(.eyebrow){font-size:.96rem}.hero__actions{display:grid;grid-template-columns:1fr 1fr}.hero__actions .button{min-width:0;padding-inline:.45rem}.hero__rating{left:1.15rem;right:auto;bottom:1.1rem}.intro__facts{display:grid;grid-template-columns:repeat(3,1fr)}.intro__facts span{padding-right:.35rem;border-right:0}.menu-grid{grid-template-columns:1fr}.menu-category{grid-column:span 1}.menu-tools{padding:.35rem}.menu-search{padding-left:.65rem}.booking{padding-inline:1rem}.booking__visual{margin-inline:-1rem;border-radius:0;min-height:18rem}.booking__content{padding:1.05rem}.booking-progress li b{display:none}.booking-progress{gap:.55rem}.booking-summary dl{grid-template-columns:1fr 1fr}.moments__header{display:block}.moments__header p:last-child{margin-top:1rem}.moments-grid{grid-template-columns:1fr}.moment-card--lead{grid-column:auto;min-height:23rem}.moment-card{min-height:18rem}.gallery-grid{grid-auto-rows:10.7rem;gap:.65rem}.gallery-item{border-radius:1rem}.gallery-item--feature{grid-column:span 2;grid-row:span 2}.review{flex-basis:min(84vw,21rem)}.visit-maps{grid-template-columns:1fr}.footer{grid-template-columns:1fr;padding:3.2rem 1.2rem 1.2rem}.brand--footer{grid-column:auto}.footer__bottom{display:block}.footer__bottom nav{margin-top:.7rem}.quick-actions{right:.3rem;bottom:.55rem}.quick-actions a{width:2.5rem;height:2.5rem}.cookie-banner{right:.65rem;bottom:.65rem;width:calc(100vw - 1.3rem)}
}

/* Anclajes: cada CTA cae en el comienzo útil de su contenido, bajo la cabecera fija. */
html { scroll-padding-top: 0; }
.section[id], .section-heading[id], .booking__content[id], .booking-step[id] { scroll-margin-top: 6.5rem; }
@media (max-width: 900px) {
  .section[id], .section-heading[id], .booking__content[id], .booking-step[id] { scroll-margin-top: 5.75rem; }
}
@media (prefers-reduced-motion: reduce) { *,*::before,*::after { scroll-behavior:auto!important; animation-duration:.01ms!important; animation-iteration-count:1!important; transition-duration:.01ms!important; } }

/* Punto de llegada común para los CTA: respaldo CSS si JavaScript no está disponible. */
:root { --cdm-anchor-offset: 6.75rem; }
#inicio, #carta, #carta-inicio, #reserva, #reserva-mesa, #calendario-reserva,
#experiencia, #momentos, #opiniones, #visita, #pie {
  scroll-margin-top: var(--cdm-anchor-offset);
}
@media (max-width: 900px) {
  :root { --cdm-anchor-offset: 6rem; }
}

/* CTA de reserva siempre disponible en móvil: no obliga a abrir el menú. */
@media (max-width: 900px) {
  .header {
    gap: .38rem;
  }

  .header .brand {
    min-width: 0;
    flex: 0 1 auto;
  }

  .header__actions {
    display: flex;
    align-items: center;
    gap: .32rem;
  }

  .header__reserve {
    display: inline-flex;
    flex: 0 0 auto;
    min-width: 4.4rem;
    min-height: 2.55rem;
    padding: .43rem .62rem;
    border: 1px solid rgba(255, 243, 204, .92);
    border-radius: 999px;
    background: linear-gradient(135deg, #ffe095 0%, #f4af27 100%);
    color: #06213f;
    box-shadow: 0 .45rem 1rem rgba(0, 0, 0, .24), inset 0 1px rgba(255, 255, 255, .6);
    font: 800 .54rem/1 var(--sans);
    letter-spacing: .075em;
    text-align: center;
    text-transform: uppercase;
    white-space: nowrap;
    transition: transform .22s cubic-bezier(.16, 1, .3, 1), box-shadow .22s, filter .22s;
  }

  .header__reserve:hover {
    background: linear-gradient(135deg, #ffe8b0 0%, #ffc247 100%);
    transform: translateY(-1px);
  }

  .header__reserve:active {
    transform: scale(.97);
    box-shadow: 0 .22rem .6rem rgba(0, 0, 0, .2), inset 0 1px rgba(255, 255, 255, .6);
  }

  .header__reserve:focus-visible {
    outline: 3px solid #fff;
    outline-offset: 2px;
  }
}

@media (max-width: 620px) {
  .header,
  .header.is-scrolled {
    gap: .26rem;
    padding-inline: max(.38rem, env(safe-area-inset-left)) max(.38rem, env(safe-area-inset-right));
  }

  .brand__mark {
    width: clamp(5.95rem, 25vw, 7.25rem);
    height: 3.3rem;
  }

  .header__actions {
    gap: .24rem;
  }

  .header__reserve {
    min-width: 3.95rem;
    min-height: 2.55rem;
    padding-inline: .46rem;
    font-size: .5rem;
  }
}

@media (max-width: 390px) {
  .language-pro__toggle {
    gap: .16rem;
    padding-inline: .28rem;
  }

  .language-pro__copy {
    min-width: 2.25rem;
  }

  .language-pro__copy small {
    display: none;
  }
}

/* En pantallas muy estrechas se conserva la reserva y el menú; WhatsApp sigue
   estando disponible dentro del panel. Así ningún control queda recortado. */
@media (max-width: 350px) {
  .header {
    padding-inline: max(.2rem, env(safe-area-inset-left)) max(.2rem, env(safe-area-inset-right));
  }

  .header__whatsapp {
    display: none;
  }

  .language-pro__copy {
    display: none;
  }

  .language-pro__toggle {
    width: 2.55rem;
    justify-content: center;
    padding-inline: 0;
  }

  .header__reserve {
    min-width: 3.7rem;
    padding-inline: .35rem;
  }
}

/* Galería de reserva: seis imágenes reales, con una pieza protagonista. */
.booking-showcase {
  position: relative;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-template-rows: repeat(2, 1fr);
  gap: .55rem;
  height: 42rem;
  padding: .55rem;
  overflow: hidden;
  border: 1px solid rgba(255,255,255,.24);
  border-radius: 1.6rem;
  background: #082e55;
  box-shadow: 0 1.25rem 3rem rgba(2,22,44,.2);
}
.booking-showcase__item { min-width: 0; min-height: 0; padding: 0; overflow: hidden; border: 0; border-radius: 1rem; background: #0e3558; cursor: zoom-in; }
.booking-showcase__item--lead { grid-row: span 2; }
.booking-showcase__item img { width: 100%; height: 100%; object-fit: cover; transition: transform .45s cubic-bezier(.16,1,.3,1); }
.booking-showcase__item:hover img, .booking-showcase__item:focus-visible img { transform: scale(1.06); }
.booking-showcase__item:focus-visible { outline: 3px solid #ffe0a1; outline-offset: 3px; }
.booking-showcase__hint { position: absolute; right: 1.1rem; bottom: 1.1rem; padding: .52rem .7rem; border: 1px solid rgba(255,255,255,.45); border-radius: 99px; background: rgba(3,21,43,.76); color: #fff; font-size: .6rem; font-weight: 700; letter-spacing: .04em; backdrop-filter: blur(8px); }
.lightbox__previous, .lightbox__next { top: 50% !important; right: auto !important; width: 2.75rem !important; height: 2.75rem !important; transform: translateY(-50%); background: rgba(3,21,43,.72) !important; }
.lightbox__previous { left: -3.6rem; }
.lightbox__next { right: -3.6rem !important; left: auto; }
@media (max-width: 900px) { .booking-showcase { height: 24rem; } }
@media (max-width: 620px) {
  .booking-showcase { height: 20rem; margin-inline: -1rem; border-radius: 0; }
  .booking-showcase__item { border-radius: .7rem; }
  .booking-showcase__hint { right: .8rem; bottom: .8rem; font-size: .55rem; }
  .lightbox__previous { left: .55rem; }
  .lightbox__next { right: .55rem !important; }
}

/* Esta regla va después de las capas heredadas de la reserva para conservar
   el mosaico y evitar que las imágenes impongan su altura intrínseca. */
.booking__visual.booking-showcase { display: grid; min-height: 0; }
.booking__visual.booking-showcase::after { display: none; }
.booking__visual.booking-showcase .booking-showcase__item img { height: 100%; }

/* Limpieza editorial: los títulos sostienen la jerarquía; se elimina texto accesorio. */
.hero__content { display: grid; align-content: end; gap: 1.35rem; }
.hero__content h1, .hero__actions { margin: 0; }
.intro { display: block; }
.intro__lead { max-width: 51rem; }
.section-heading { position: relative; }
.section-heading > h2 { margin-bottom: 0; }
.booking__heading { margin-bottom: 1.75rem; }
.booking__visual { display: block; }
.moments__header { display: block; }
.moments__header h2 { margin: 0; }
.reviews .section-heading { display: flex; align-items: flex-end; justify-content: space-between; gap: 1.5rem; }
.reviews__google-wordmark { width: clamp(6.5rem, 12vw, 9.4rem); height: auto; padding: .3rem .5rem; aspect-ratio: 682 / 449; border-radius: .65rem; background: #fff; object-fit: contain; box-shadow: 0 .5rem 1.2rem rgba(0,0,0,.16); }
.hero__rating-g { width: 1.5rem; height: 1.5rem; object-fit: contain; mix-blend-mode: multiply; }
.reviews-track { overflow: hidden; scroll-snap-type: none; cursor: default; }
.review__g { display: inline-grid; flex: 0 0 auto; place-items: center; width: 1.55rem; height: 1.55rem; border-radius: .45rem; }
.review__g--google { object-fit: contain; mix-blend-mode: multiply; background: transparent; }
.review__g--thefork { background: #17283e; color: #fff; font: 800 .8rem/1 var(--sans); }

/* Pie: identidad transparente y accesos de contacto inequívocos. */
.footer .brand--footer { width: min(9rem, 100%); }
.footer .brand__full-logo { width: 100%; height: auto; padding: 0; border: 0; border-radius: 0; background: transparent; box-shadow: none; object-fit: contain; object-position: left center; }
.footer__contact-actions { gap: .7rem; }
.footer-contact-action { min-height: 4.15rem; gap: .8rem; padding: .7rem .85rem; border: 1px solid rgba(255,255,255,.18); border-radius: 1rem; background: rgba(255,255,255,.07); box-shadow: inset 0 1px rgba(255,255,255,.08), 0 .5rem 1.25rem rgba(0,0,0,.12); }
.footer-contact-action:hover { transform: translateY(-2px); }
.footer-contact-action__icon { display: grid; flex: 0 0 auto; place-items: center; width: 2.55rem; height: 2.55rem; border-radius: .8rem; }
.footer-contact-action__icon img { width: 1.35rem; height: 1.35rem; }
.footer-contact-action--whatsapp .footer-contact-action__icon { background: #25d366; color: #fff; box-shadow: 0 .35rem .9rem rgba(37,211,102,.25); }
.footer-contact-action--whatsapp .footer-contact-action__icon img { filter: brightness(0) invert(1); }
.footer-contact-action--call .footer-contact-action__icon { background: linear-gradient(135deg,#f7c94d,#ef9f27); color: var(--sea-950); box-shadow: 0 .35rem .9rem rgba(245,183,54,.24); }
.footer-contact-action strong { font-size: .72rem; letter-spacing: .01em; }
.footer-contact-action small { font-size: .64rem; }

@media (max-width: 620px) {
  .hero__content { gap: 1.1rem; }
  .reviews .section-heading { align-items: flex-start; gap: .7rem; }
  .reviews__google-wordmark { width: 6.3rem; }
  .footer .brand--footer { width: min(9.5rem, 100%); }
  .footer-contact-action { min-height: 4rem; }
}

/* Movimiento editorial de Café Del Mar: orientación, respuesta y jerarquía. */
@media (prefers-reduced-motion: no-preference) {
  html.has-cdm-motion { scroll-behavior: smooth; }

  html.has-cdm-motion .hero__image {
    transform: scale(1.055);
    will-change: transform;
    transition: transform 1.55s cubic-bezier(.16, 1, .3, 1);
  }

  html.has-cdm-motion.is-motion-ready .hero__image { transform: scale(1); }

  html.has-cdm-motion .hero__content > *,
  html.has-cdm-motion .hero__rating,
  html.has-cdm-motion .hero__location {
    transition: opacity .72s ease, transform .88s cubic-bezier(.16, 1, .3, 1);
  }

  html.has-cdm-motion:not(.is-motion-ready) .hero__content > *,
  html.has-cdm-motion:not(.is-motion-ready) .hero__rating,
  html.has-cdm-motion:not(.is-motion-ready) .hero__location {
    opacity: 0;
    transform: translateY(1.4rem);
  }

  html.has-cdm-motion.is-motion-ready .hero__content h1 { transition-delay: .08s; }
  html.has-cdm-motion.is-motion-ready .hero__actions { transition-delay: .18s; }
  html.has-cdm-motion.is-motion-ready .hero__rating { transition-delay: .3s; }
  html.has-cdm-motion.is-motion-ready .hero__location { transition-delay: .38s; }

  .header.is-scrolled { animation: cdm-header-settle .42s cubic-bezier(.16, 1, .3, 1); }

  .section-heading.reveal.is-visible h2,
  .intro__lead.reveal.is-visible h2,
  .booking__content.reveal.is-visible h2,
  .visit__content.reveal.is-visible h2,
  .moments__header.reveal.is-visible h2 {
    animation: cdm-editorial-title .82s both cubic-bezier(.16, 1, .3, 1);
  }

  .motion-card {
    /* La página debe seguir siendo legible aunque una animación o el observador tarde. */
    opacity: 1;
    transform: none;
    will-change: auto;
  }

  .motion-card.is-motion-visible {
    opacity: 1;
    transform: none;
    animation: cdm-card-arrive .7s var(--motion-delay, 0ms) cubic-bezier(.16, 1, .3, 1);
  }

  .motion-card.is-motion-visible .menu-item {
    opacity: 0;
    animation: cdm-menu-row .52s var(--item-delay, 160ms) both cubic-bezier(.16, 1, .3, 1);
  }

  .experience-card.motion-card:nth-child(3n + 2),
  .gallery-item.motion-card:nth-child(4n + 2) { --motion-offset: .25rem; }

  .experience-card.motion-card.is-motion-visible,
  .gallery-item.motion-card.is-motion-visible {
    transform: translateX(var(--motion-offset, 0));
    animation-name: cdm-card-arrive-offset;
  }

  .gallery-item.motion-card.is-motion-visible img,
  .moment-card.motion-card.is-motion-visible img,
  .experience-card.motion-card.is-motion-visible img {
    animation: cdm-image-settle 1.15s var(--motion-delay, 0ms) cubic-bezier(.16, 1, .3, 1);
  }

  .menu-category.motion-card.is-motion-visible:hover { transform: translateY(-.28rem); }
  .experience-card.motion-card.is-motion-visible:hover,
  .moment-card.motion-card.is-motion-visible:hover { transform: translateY(-.42rem) scale(1.008); }
  .gallery-item.motion-card.is-motion-visible:hover { transform: translateY(-.22rem) scale(1.005); }

  .booking-step.is-step-arriving {
    animation: cdm-step-arrive .5s both cubic-bezier(.16, 1, .3, 1);
  }

  .booking-progress li.is-current span {
    animation: cdm-progress-pulse 1.9s ease-in-out infinite;
  }

  .is-motion-tapped { animation: cdm-tap .42s cubic-bezier(.34, 1.56, .64, 1); }

  .footer > div,
  .footer > nav,
  .footer > section {
    transition: transform .32s cubic-bezier(.16, 1, .3, 1), opacity .32s ease;
  }

  .footer-contact-action:hover .footer-contact-action__icon { transform: rotate(-5deg) scale(1.06); }

  @media (max-width: 900px) {
    .mobile-menu .mobile-menu__logo,
    .mobile-menu > a,
    .mobile-menu > div {
      opacity: 0;
      transform: translateX(1.35rem);
      transition: opacity .34s ease, transform .56s cubic-bezier(.16, 1, .3, 1);
    }

    .mobile-menu.is-open .mobile-menu__logo,
    .mobile-menu.is-open > a,
    .mobile-menu.is-open > div {
      opacity: 1;
      transform: none;
    }

    .mobile-menu.is-open > a:nth-of-type(1) { transition-delay: .09s; }
    .mobile-menu.is-open > a:nth-of-type(2) { transition-delay: .14s; }
    .mobile-menu.is-open > a:nth-of-type(3) { transition-delay: .19s; }
    .mobile-menu.is-open > a:nth-of-type(4) { transition-delay: .24s; }
    .mobile-menu.is-open > a:nth-of-type(5) { transition-delay: .29s; }
    .mobile-menu.is-open > div { transition-delay: .35s; }
  }
}

@keyframes cdm-header-settle {
  from { box-shadow: 0 0 0 rgba(2, 16, 33, 0); }
  to { box-shadow: 0 .9rem 2.5rem rgba(2, 16, 33, .26); }
}

@keyframes cdm-editorial-title {
  from { opacity: 0; transform: translateY(1.4rem); letter-spacing: .015em; }
  to { opacity: 1; transform: none; letter-spacing: -.035em; }
}

@keyframes cdm-card-arrive {
  from { opacity: 0; transform: translate3d(0, 2rem, 0) scale(.985); }
  to { opacity: 1; transform: translate3d(0, 0, 0) scale(1); }
}

@keyframes cdm-card-arrive-offset {
  from { opacity: 0; transform: translate3d(var(--motion-offset, 0), 2rem, 0) scale(.985); }
  to { opacity: 1; transform: translate3d(var(--motion-offset, 0), 0, 0) scale(1); }
}

@keyframes cdm-menu-row {
  from { opacity: 0; transform: translateX(-.75rem); }
  to { opacity: 1; transform: none; }
}

@keyframes cdm-image-settle {
  from { transform: scale(1.06); filter: saturate(.9) contrast(.96); }
  to { transform: scale(1); filter: saturate(1) contrast(1); }
}

@keyframes cdm-step-arrive {
  from { opacity: 0; transform: translateX(1rem); }
  to { opacity: 1; transform: none; }
}

@keyframes cdm-progress-pulse {
  50% { box-shadow: 0 0 0 .45rem rgba(245, 183, 54, 0); }
}

@keyframes cdm-tap {
  45% { transform: translateY(-.12rem) scale(1.045); }
}

/* Reserva principal: calendario y controles con jerarquía táctil clara. */
.booking-flow {
  display:grid;
  gap:1.15rem;
  font-family:var(--sans);
  font-variant-numeric:tabular-nums;
}
.booking-live-status {
  display:grid;
  grid-template-columns:auto minmax(0,1fr) auto;
  align-items:center;
  gap:.8rem;
  min-height:4.7rem;
  padding:.8rem .95rem;
  border:1px solid rgba(8,46,88,.13);
  border-radius:1.15rem;
  background:linear-gradient(135deg,#f8fbfa,#eef7f1);
  box-shadow:inset 0 1px rgba(255,255,255,.95),0 .55rem 1.4rem rgba(6,46,88,.05);
}
.booking-live-status__dot {
  width:.72rem;
  height:.72rem;
  border-radius:50%;
  background:#2da65d;
  box-shadow:0 0 0 .32rem rgba(45,166,93,.15);
}
.booking-live-status[data-state="closed"] { background:linear-gradient(135deg,#fbf7f2,#f7ece4); }
.booking-live-status[data-state="closed"] .booking-live-status__dot { background:#c66a49; box-shadow:0 0 0 .32rem rgba(198,106,73,.14); }
.booking-live-status[data-state="opens-soon"] .booking-live-status__dot { background:#e69b2e; box-shadow:0 0 0 .32rem rgba(230,155,46,.15); }
.booking-live-status strong,
.booking-live-status small { display:block; }
.booking-live-status strong { color:var(--sea-900); font-size:.86rem; letter-spacing:-.01em; }
.booking-live-status small { margin-top:.12rem; color:#61717a; font-size:.68rem; line-height:1.35; }
.booking-live-status time { color:#52636c; font-size:.67rem; font-weight:700; white-space:nowrap; }
.booking-progress {
  position:relative;
  gap:.45rem;
  padding:.25rem;
  border:1px solid rgba(8,46,88,.1);
  border-radius:1rem;
  background:#f7f9f8;
}
.booking-progress li { min-height:2.45rem; justify-content:center; border-radius:.75rem; font-size:.59rem; letter-spacing:.055em; }
.booking-progress li.is-current { background:#fff; box-shadow:0 .35rem .9rem rgba(6,46,88,.08); }
.booking-progress li:after { display:none; }
.booking-progress span { width:1.7rem; height:1.7rem; font-family:var(--sans); font-size:.66rem; font-variant-numeric:tabular-nums; }
.booking-step { margin:0; }
.booking-step legend { max-width:32rem; font-family:var(--serif); font-size:clamp(1.8rem,2.6vw,2.35rem); letter-spacing:-.025em; }
.booking-calendar-shell {
  margin-top:1.25rem;
  padding:.95rem;
  border:1px solid rgba(8,46,88,.13);
  border-radius:1.2rem;
  background:#fff;
  box-shadow:0 .75rem 1.9rem rgba(6,46,88,.06);
}
.booking-calendar__toolbar { display:grid; grid-template-columns:2.7rem 1fr 2.7rem; align-items:center; gap:.55rem; margin-bottom:.8rem; }
.booking-calendar__toolbar > div { min-width:0; text-align:center; }
.booking-calendar__toolbar strong,
.booking-calendar__toolbar span { display:block; }
.booking-calendar__toolbar strong { color:var(--sea-900); font-size:.95rem; font-weight:750; letter-spacing:-.02em; text-transform:capitalize; }
.booking-calendar__toolbar span { margin-top:.12rem; color:#78858e; font-size:.59rem; font-weight:700; letter-spacing:.04em; text-transform:uppercase; }
.booking-calendar__nav {
  display:grid;
  place-items:center;
  width:2.7rem;
  height:2.7rem;
  padding:0;
  border:1px solid #d6e0e1;
  border-radius:.8rem;
  background:#fff;
  color:var(--sea-900);
  cursor:pointer;
  transition:transform .18s ease,background .18s ease,border-color .18s ease,box-shadow .18s ease;
}
.booking-calendar__nav svg { width:1.1rem; height:1.1rem; fill:none; stroke:currentColor; stroke-linecap:round; stroke-linejoin:round; stroke-width:2.2; }
.booking-calendar__nav:hover:not(:disabled) { transform:translateY(-1px); border-color:#8aa0b2; background:#f4f8fa; box-shadow:0 .4rem .8rem rgba(6,46,88,.09); }
.booking-calendar__nav:disabled { cursor:not-allowed; opacity:.38; }
.booking-calendar__weekdays,
.booking-calendar { display:grid; grid-template-columns:repeat(7,minmax(0,1fr)); gap:.38rem; }
.booking-calendar__weekdays { margin-bottom:.35rem; }
.booking-calendar__weekdays span { display:grid; place-items:center; min-height:1.45rem; color:#81909a; font-size:.58rem; font-weight:800; }
.booking-calendar { padding:0; border:0; border-radius:0; background:transparent; box-shadow:none; }
.booking-calendar__blank { min-height:2.85rem; }
.booking-calendar .booking-calendar__day {
  display:grid;
  place-items:center;
  min-height:2.85rem;
  padding:0;
  border:1px solid transparent;
  border-radius:.78rem;
  background:#fff;
  color:var(--sea-900);
  font:700 .86rem/1 var(--sans);
  font-variant-numeric:tabular-nums;
  cursor:pointer;
  transition:transform .18s ease,background .18s ease,border-color .18s ease,box-shadow .18s ease,color .18s ease;
}
.booking-calendar .booking-calendar__day:hover:not(:disabled) { transform:translateY(-1px); border-color:#b7ced2; background:#f0f8f8; box-shadow:0 .35rem .8rem rgba(6,46,88,.08); }
.booking-calendar .booking-calendar__day.is-today { border-color:#d7a144; color:#9c6812; }
.booking-calendar .booking-calendar__day.is-selected { border-color:var(--sea-900); background:var(--sea-900); color:#fff; box-shadow:0 .55rem 1.1rem rgba(6,46,88,.2); }
.booking-calendar .booking-calendar__day:disabled { background:transparent; color:#b6b3ae; cursor:not-allowed; text-decoration:line-through; text-decoration-color:#d6a397; }
.booking-date-picker {
  display:flex;
  align-items:center;
  justify-content:space-between;
  gap:.8rem;
  margin-top:.85rem;
  padding:.72rem .78rem;
  border:1px solid rgba(8,46,88,.12);
  border-radius:.9rem;
  background:#f8faf9;
}
.booking-date-picker > span { color:#596b75; font-size:.68rem; font-weight:700; }
.booking-date-picker input { width:auto; min-height:2.45rem; padding:.35rem .45rem; border:1px solid #ccd8dc; border-radius:.65rem; background:#fff; color:var(--sea-900); font:700 .7rem var(--sans); font-variant-numeric:tabular-nums; }
.booking-date-status,
.booking-time-status,
.booking-ready-note { min-height:1.2rem; margin:.75rem 0 0; color:#65747d; font-size:.7rem; font-weight:600; line-height:1.42; }
.booking-field { margin-top:1.1rem; }
.booking-field > span { margin-bottom:.7rem; color:var(--sea-900); font-size:.67rem; }
.booking-covers { grid-template-columns:repeat(auto-fit,minmax(3.15rem,1fr)); }
.booking-times { grid-template-columns:repeat(auto-fit,minmax(4.25rem,1fr)); max-height:none; padding:0; overflow:visible; }
.booking-options { grid-template-columns:repeat(3,minmax(0,1fr)); }
.booking-covers button,
.booking-times button,
.booking-options button {
  min-height:3rem;
  border-color:#d6e0e1;
  border-radius:.8rem;
  background:#fff;
  color:var(--sea-900);
  font:700 .76rem/1 var(--sans);
  font-variant-numeric:tabular-nums;
  letter-spacing:-.01em;
  box-shadow:inset 0 1px rgba(255,255,255,.85);
}
.booking-covers button:hover:not(:disabled),
.booking-times button:hover:not(:disabled),
.booking-options button:hover:not(:disabled) { border-color:#8bb7bd; background:#f1f9f8; transform:translateY(-1px); }
.booking-covers button.is-selected,
.booking-times button.is-selected,
.booking-options button.is-selected { border-color:var(--sea-900); background:var(--sea-900); color:#fff; box-shadow:0 .45rem .95rem rgba(6,46,88,.2); }
.booking-covers button:active:not(:disabled),
.booking-times button:active:not(:disabled),
.booking-options button:active:not(:disabled),
.booking-calendar__nav:active:not(:disabled),
.booking-calendar .booking-calendar__day:active:not(:disabled) { transform:scale(.97); }
.booking-times button:disabled { min-height:3rem; border-color:transparent; background:#f1efeb; color:#aaa49b; text-decoration:line-through; opacity:.78; }
.booking-contact-grid input,
.booking-notes textarea { border-color:#cbd9dd; border-radius:.85rem; font-family:var(--sans); }
.booking-summary { margin-top:.1rem; padding:1rem; border-color:rgba(8,46,88,.12); border-radius:1.05rem; background:linear-gradient(135deg,#f8f5ed,#f0f7f6); }
.booking-summary dl { grid-template-columns:repeat(4,minmax(0,1fr)); }
.booking-summary dd { color:var(--sea-900); font-family:var(--sans); font-variant-numeric:tabular-nums; }
.booking-message { min-height:1.2rem; margin:0; color:#a13e30; }
.booking-actions { display:grid; grid-template-columns:auto 1fr; gap:.65rem; margin-top:1rem; }
.booking-actions .button { min-height:3.35rem; min-width:0; border-radius:.9rem; font-family:var(--sans); font-size:.72rem; letter-spacing:.01em; text-transform:none; }
.booking-actions [data-booking-next],
.booking-actions [data-booking-submit] { width:100%; }
.booking-actions .button--whatsapp { display:inline-flex; gap:.55rem; border:1px solid #20bc5e; background:#25d366; color:#062c1e; box-shadow:0 .65rem 1.3rem rgba(37,211,102,.25),inset 0 1px rgba(255,255,255,.55); }
.booking-actions .button--whatsapp img { width:1.15rem; height:1.15rem; filter:brightness(0) saturate(100%) invert(12%) sepia(20%) saturate(1327%) hue-rotate(100deg) brightness(94%); }
.booking-actions .button--whatsapp:disabled { cursor:wait; opacity:.74; transform:none; }
.booking-flow,
.booking-step,
.booking-actions { overflow-anchor: none; }
.booking .button:focus-visible,
.booking-calendar__nav:focus-visible,
.booking-calendar .booking-calendar__day:focus-visible,
.booking-covers button:focus-visible,
.booking-times button:focus-visible,
.booking-options button:focus-visible { outline:3px solid rgba(7,124,176,.42); outline-offset:3px; }

@media (max-width:620px) {
  .booking-flow { gap:1rem; }
  .booking-live-status { grid-template-columns:auto minmax(0,1fr); min-height:4.9rem; padding:.78rem .82rem; }
  .booking-live-status time { grid-column:2; justify-self:start; margin-top:-.12rem; font-size:.6rem; }
  .booking-progress { gap:.22rem; padding:.22rem; }
  .booking-progress li { min-height:2.35rem; gap:.18rem; font-size:.48rem; letter-spacing:.02em; }
  .booking-progress span { width:1.42rem; height:1.42rem; font-size:.55rem; }
  .booking-step legend { font-size:clamp(1.85rem,9vw,2.35rem); }
  .booking-calendar-shell { padding:.72rem; border-radius:1rem; }
  .booking-calendar__toolbar { grid-template-columns:2.5rem 1fr 2.5rem; }
  .booking-calendar__nav { width:2.5rem; height:2.5rem; }
  .booking-calendar__weekdays,
  .booking-calendar { gap:.24rem; }
  .booking-calendar .booking-calendar__day,
  .booking-calendar__blank { min-height:2.65rem; border-radius:.66rem; }
  .booking-date-picker { align-items:stretch; flex-direction:column; gap:.45rem; }
  .booking-date-picker input { width:100%; }
  .booking-covers { grid-template-columns:repeat(4,minmax(0,1fr)); }
  .booking-times { grid-template-columns:repeat(4,minmax(0,1fr)); gap:.42rem; }
  .booking-options { grid-template-columns:1fr; }
  .booking-options button { text-align:left; padding-left:.9rem; }
  .booking-summary dl { grid-template-columns:1fr 1fr; gap:.7rem; }
  .booking-actions { position:sticky; z-index:12; bottom:max(.65rem, env(safe-area-inset-bottom)); grid-template-columns:1fr; margin-top:.9rem; padding:.5rem; border:1px solid rgba(8,46,88,.1); border-radius:1.1rem; background:rgba(255,250,241,.96); box-shadow:0 .7rem 1.7rem rgba(6,46,88,.16); backdrop-filter:blur(12px); }
  .booking-actions .button--outline-dark { grid-row:2; }
}

/* Acción principal del primer bloque: reserva directa con lenguaje visual de calendario. */
.hero__actions {
  width: fit-content;
}

.hero__actions .button--hero-reserve {
  min-width: 15.25rem;
  min-height: 4.35rem;
  gap: .78rem;
  padding: .6rem 1.25rem .6rem .7rem;
  border: 1px solid rgba(255, 246, 213, .92);
  border-radius: 1.12rem;
  background: linear-gradient(135deg, #ffe6a3 0%, #f7bf42 52%, #e98a23 100%);
  color: #06284c;
  box-shadow: 0 .8rem 2rem rgba(0, 0, 0, .3), inset 0 1px rgba(255, 255, 255, .7);
  font: 800 .78rem/1 var(--sans);
  letter-spacing: .055em;
  text-transform: uppercase;
}

.button--hero-reserve .button__calendar {
  flex: 0 0 auto;
  width: 2.75rem;
  height: 2.75rem;
  padding: .57rem;
  overflow: visible;
  border: 1px solid rgba(6, 40, 76, .18);
  border-radius: .78rem;
  background: rgba(255, 255, 255, .48);
  box-shadow: inset 0 1px rgba(255, 255, 255, .7);
  stroke: currentColor;
  stroke-width: 1.75;
  stroke-linecap: round;
  stroke-linejoin: round;
  transition: transform .28s cubic-bezier(.16, 1, .3, 1), background .28s;
}

.hero__actions .button--hero-reserve:hover {
  background: linear-gradient(135deg, #fff0c2 0%, #ffd061 52%, #f19b37 100%);
  box-shadow: 0 1rem 2.25rem rgba(0, 0, 0, .34), inset 0 1px rgba(255, 255, 255, .75);
  transform: translateY(-3px);
}

.hero__actions .button--hero-reserve:hover .button__calendar {
  background: rgba(255, 255, 255, .72);
  transform: rotate(-5deg) scale(1.06);
}

.hero__actions .button--hero-reserve:active {
  transform: translateY(0) scale(.98);
}

.hero__actions .button--hero-reserve:focus-visible {
  outline: 3px solid #fff;
  outline-offset: 4px;
}

@media (max-width: 620px) {
  .hero__actions {
    display: block;
    width: 100%;
  }

  .hero__actions .button--hero-reserve {
    width: min(100%, 23rem);
    min-height: 4.5rem;
    padding-right: 1rem;
    font-size: .72rem;
  }

  .button--hero-reserve .button__calendar {
    width: 2.9rem;
    height: 2.9rem;
    border-radius: .85rem;
  }
}

/* Reserva: acabado claro y legible, sin promociones ni estados inventados. */
.booking-live-status[data-state="last-call"] {
  background: linear-gradient(135deg, #fff9ed, #fff1db);
}

.booking-live-status[data-state="last-call"] .booking-live-status__dot {
  background: #dd8d22;
  box-shadow: 0 0 0 .32rem rgba(221, 141, 34, .15);
}

.booking-calendar-shell {
  position: relative;
  overflow: hidden;
  isolation: isolate;
  border-color: rgba(8, 46, 88, .16);
  background: linear-gradient(145deg, #ffffff, #f4faf9);
}

.booking-calendar-shell::before {
  position: absolute;
  z-index: -1;
  top: -7rem;
  right: -5rem;
  width: 15rem;
  height: 15rem;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(53, 154, 145, .11), transparent 67%);
  content: "";
  pointer-events: none;
}

.booking-calendar .booking-calendar__day {
  position: relative;
  min-height: 3rem;
  border-color: rgba(8, 46, 88, .08);
  background: rgba(255, 255, 255, .9);
}

.booking-calendar .booking-calendar__day.is-selected {
  border-color: #073f68;
  background: linear-gradient(145deg, #073f68, #075d84);
}

.booking-calendar .booking-calendar__day.is-today:not(.is-selected) {
  border-width: 2px;
  background: #fffaf0;
}

.booking-help {
  display: grid;
  grid-template-columns: 2.6rem minmax(0, 1fr) auto;
  align-items: center;
  gap: .72rem;
  margin-top: .9rem;
  padding: .78rem .85rem;
  border: 1px solid rgba(8, 46, 88, .15);
  border-radius: 1rem;
  background: linear-gradient(135deg, #fffefb, #f6fbfa);
  color: var(--sea-900);
  box-shadow: 0 .55rem 1.4rem rgba(6, 46, 88, .055);
  text-decoration: none;
  transition: transform .22s ease, border-color .22s ease, box-shadow .22s ease;
}

.booking-help:hover {
  border-color: rgba(7, 94, 132, .38);
  box-shadow: 0 .85rem 1.8rem rgba(6, 46, 88, .1);
  transform: translateY(-2px);
}

.booking-help:focus-visible {
  outline: 3px solid rgba(7, 124, 176, .42);
  outline-offset: 3px;
}

.booking-help__icon {
  display: grid;
  place-items: center;
  width: 2.6rem;
  height: 2.6rem;
  border-radius: .8rem;
  background: linear-gradient(135deg, #083f67, #086d84);
  color: #fff;
}

.booking-help__icon svg {
  width: 1.35rem;
  height: 1.35rem;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 1.7;
}

.booking-help__copy { min-width: 0; }
.booking-help__copy strong,
.booking-help__copy small { display: block; }
.booking-help__copy strong { font-size: .76rem; line-height: 1.25; }
.booking-help__copy small { margin-top: .16rem; color: #62747b; font-size: .64rem; line-height: 1.35; }
.booking-help__arrow { font-size: 1.45rem; font-weight: 400; line-height: 1; }

.booking-success {
  position: relative;
  overflow: hidden;
  margin-top: 1.15rem;
  padding: clamp(1.1rem, 3vw, 1.75rem);
  border: 1px solid rgba(8, 80, 90, .19);
  border-radius: 1.35rem;
  background: linear-gradient(145deg, #f5fffc, #eff8f6 57%, #fffdf7);
  box-shadow: 0 1rem 2.2rem rgba(6, 46, 88, .1);
}

.booking-success[hidden] { display: none; }

.booking-success::after {
  position: absolute;
  top: -8rem;
  right: -6rem;
  width: 17rem;
  height: 17rem;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(38, 181, 128, .17), transparent 67%);
  content: "";
  pointer-events: none;
}

.booking-success__intro {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: 3.15rem minmax(0, 1fr);
  align-items: center;
  gap: .85rem;
}

.booking-success__mark {
  display: grid;
  place-items: center;
  width: 3.15rem;
  height: 3.15rem;
  border-radius: 1rem;
  background: linear-gradient(145deg, #09704f, #1dba79);
  color: #fff;
  box-shadow: 0 .65rem 1.2rem rgba(26, 157, 101, .25);
}

.booking-success__mark svg {
  width: 1.6rem;
  height: 1.6rem;
  fill: none;
  stroke: currentColor;
  stroke-linecap: round;
  stroke-linejoin: round;
  stroke-width: 2.35;
}

.booking-success h3 { margin: 0; color: var(--sea-900); font-family: var(--serif); font-size: clamp(1.7rem, 3vw, 2.35rem); letter-spacing: -.035em; }
.booking-success p { margin: .35rem 0 0; color: #536a70; font-size: .75rem; line-height: 1.5; }
.booking-success__summary { position: relative; z-index: 1; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: .55rem; margin: 1.15rem 0 0; }
.booking-success__summary div { min-width: 0; padding: .72rem; border: 1px solid rgba(8, 46, 88, .1); border-radius: .82rem; background: rgba(255, 255, 255, .68); }
.booking-success__summary dt { color: #678087; font-size: .57rem; font-weight: 800; letter-spacing: .07em; text-transform: uppercase; }
.booking-success__summary dd { overflow: hidden; margin: .24rem 0 0; color: var(--sea-900); font: 800 .75rem/1.2 var(--sans); font-variant-numeric: tabular-nums; text-overflow: ellipsis; white-space: nowrap; }
.booking-success__steps { position: relative; z-index: 1; display: grid; gap: .55rem; margin: 1rem 0 0; padding: 0; list-style: none; }
.booking-success__steps li { display: grid; grid-template-columns: 1.5rem minmax(0, 1fr); align-items: start; gap: .55rem; }
.booking-success__steps span { display: grid; place-items: center; width: 1.5rem; height: 1.5rem; border-radius: 50%; background: #dff3ec; color: #087052; font: 800 .63rem var(--sans); }
.booking-success__steps p { margin: 0; }
.booking-success__steps strong,
.booking-success__steps small { display: block; }
.booking-success__steps strong { color: var(--sea-900); font-size: .71rem; }
.booking-success__steps small { margin-top: .14rem; color: #62777d; font-size: .64rem; line-height: 1.35; }
.booking-success__actions { position: relative; z-index: 1; display: flex; flex-wrap: wrap; gap: .6rem; margin-top: 1.15rem; }
.booking-success__actions .button { min-height: 3rem; border-radius: .9rem; font-size: .71rem; text-transform: none; }
.booking-success .button--whatsapp { display: inline-flex; gap: .55rem; border: 1px solid #20bc5e; background: #25d366; color: #062c1e; box-shadow: 0 .65rem 1.25rem rgba(37, 211, 102, .2), inset 0 1px rgba(255,255,255,.5); }
.booking-success .button--whatsapp img { width: 1.1rem; height: 1.1rem; filter: brightness(0) saturate(100%) invert(12%) sepia(20%) saturate(1327%) hue-rotate(100deg) brightness(94%); }

@media (prefers-reduced-motion: no-preference) {
  .booking-success:not([hidden]) { animation: booking-success-in .56s cubic-bezier(.16, 1, .3, 1) both; }
  .booking-success:not([hidden]) .booking-success__mark { animation: booking-success-pop .68s .14s cubic-bezier(.34, 1.56, .64, 1) both; }
}

@keyframes booking-success-in {
  from { opacity: 0; transform: translateY(1rem) scale(.985); }
  to { opacity: 1; transform: translateY(0) scale(1); }
}

@keyframes booking-success-pop {
  from { opacity: 0; transform: scale(.5) rotate(-12deg); }
  to { opacity: 1; transform: scale(1) rotate(0); }
}

@media (max-width: 620px) {
  .booking-help { grid-template-columns: 2.4rem minmax(0, 1fr) auto; padding: .72rem; }
  .booking-help__icon { width: 2.4rem; height: 2.4rem; }
  .booking-help__copy strong { font-size: .72rem; }
  .booking-help__copy small { font-size: .61rem; }
  .booking-success { margin-top: 1rem; border-radius: 1.1rem; }
  .booking-success__summary { grid-template-columns: 1fr 1fr; }
  .booking-success__summary div:last-child { grid-column: span 2; }
  .booking-success__actions { display: grid; grid-template-columns: 1fr; }
  .booking-success__actions .button { width: 100%; }
}

/* Cierre de cascada: la galería sustituye por completo la foto única. */
.booking__visual.booking-showcase {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-template-rows: repeat(2, minmax(0, 1fr));
  height: 42rem;
  min-height: 0;
}
.booking__visual.booking-showcase::after { display: none; }
@media (max-width: 900px) { .booking__visual.booking-showcase { height: 24rem; } }
@media (max-width: 620px) { .booking__visual.booking-showcase { height: 20rem; } }

/* Entrega final: pie y acciones de contacto con una identidad única. */
.footer__brand { display:grid; align-content:start; gap:.85rem; }
.footer__brand p { max-width:18rem; margin:0; color:rgba(255,255,255,.74); font-size:.78rem; line-height:1.5; }
.footer__brand address { color:rgba(255,255,255,.58); font-size:.68rem; font-style:normal; line-height:1.6; }
.footer-contact-action { min-height:4.5rem; }
.footer-contact-action__icon { padding:0; overflow:hidden; background:transparent !important; box-shadow:none !important; }
.footer-contact-action__icon img { width:100%; height:100%; filter:none !important; }
.footer-contact-action--instagram .footer-contact-action__icon { background:transparent; }
.footer__links { margin-top:.8rem; padding-top:.8rem; border-top:1px solid rgba(255,255,255,.13); }
.quick-actions a { overflow:hidden; border:0; background:#073f68 !important; }
.quick-actions a img { width:100%; height:100%; }
.cookie-banner__row a { display:inline-block; margin-top:.55rem; color:#ffe0a1; font-size:.64rem; font-weight:700; text-decoration:underline; text-underline-offset:3px; }
.cookie-banner button:focus-visible, .cookie-banner__row a:focus-visible { outline:3px solid #fff; outline-offset:3px; }
@media (max-width: 620px) {
  .footer__brand { margin-bottom:.65rem; }
  .mobile-menu { padding-bottom:max(1.25rem, env(safe-area-inset-bottom)); }
  .mobile-menu > a { min-height:3.25rem; display:flex; align-items:center; }
  .mobile-menu > div { position:sticky; bottom:-1.25rem; padding-bottom:1.25rem; background:linear-gradient(180deg,transparent,#073052 20%); }
  .quick-actions { gap:.45rem; }
}

/* Paridad móvil: los controles y la prueba social no desaparecen ni se degradan.
   La cabecera reserva espacio real a cada acción para que nunca quede fuera de pantalla. */
@media (max-width: 900px) {
  .header[data-header] {
    display: grid;
    grid-template-columns: minmax(5.05rem, 1fr) auto;
    align-items: center;
    column-gap: .4rem;
  }

  .header[data-header] > .brand {
    display: block;
    min-width: 0;
    width: clamp(5.05rem, 20vw, 8rem);
    overflow: hidden;
  }

  .header[data-header] .brand__mark {
    display: block;
    width: 100%;
    max-width: none;
    height: 3.55rem;
  }

  .header[data-header] .header__actions {
    display: flex;
    min-width: 0;
    margin-left: 0;
    gap: .35rem;
    flex-wrap: nowrap;
  }

  .header[data-header] .header__reserve {
    display: inline-flex !important;
    visibility: visible !important;
    opacity: 1 !important;
    flex: 0 0 auto;
    min-width: 4.8rem;
    min-height: 2.75rem;
    padding: .46rem .62rem;
    border: 1px solid rgba(255, 245, 215, .96);
    border-radius: .82rem;
    background: linear-gradient(145deg, #ffe7a4 0%, #f5b736 58%, #ec9d25 100%);
    color: #061b35;
    box-shadow: 0 .45rem 1rem rgba(0, 0, 0, .26), inset 0 1px rgba(255,255,255,.66);
    font: 850 .59rem/1 var(--sans);
    letter-spacing: .055em;
    text-align: center;
    text-transform: uppercase;
    white-space: nowrap;
  }

  .header[data-header] .header__reserve::before { display: none; }
  .header[data-header] .header__reserve:active { transform: scale(.97); }
}

@media (max-width: 620px) {
  .header[data-header],
  .header[data-header].is-scrolled {
    min-height: 5.1rem;
    padding-inline: max(.38rem, env(safe-area-inset-left)) max(.38rem, env(safe-area-inset-right));
    column-gap: .2rem;
  }

  .header[data-header] > .brand {
    width: clamp(5.05rem, 21vw, 6.75rem);
  }

  .header[data-header] .brand__mark { height: 3.35rem; }
  .header[data-header] .header__actions { gap: .22rem; }
  .header[data-header] .header__whatsapp,
  .header[data-header] .menu-toggle {
    width: 2.75rem;
    min-width: 44px;
    height: 2.75rem;
  }

  .header[data-header] .header__reserve {
    min-width: 4.45rem;
    min-height: 2.75rem;
    padding-inline: .45rem;
    border-radius: .75rem;
    font-size: .53rem;
  }

  .header[data-header] .language-pro__toggle {
    min-width: 3.75rem;
    min-height: 2.75rem;
    gap: .22rem;
    padding-inline: .3rem;
  }

  .header[data-header] .language-pro__flag {
    width: 1.3rem;
    height: 1.3rem;
    font-size: .86rem;
  }

  .header[data-header] .language-pro__copy {
    min-width: 1.8rem;
  }

  .header[data-header] .language-pro__copy strong {
    overflow: hidden;
    color: transparent;
    font-size: 0;
    white-space: nowrap;
  }

  .header[data-header] .language-pro__copy strong::after {
    color: #fff;
    content: "Idioma";
    font: 800 .49rem/1 var(--sans);
    letter-spacing: .025em;
  }

  .header[data-header] .language-pro__copy small,
  .header[data-header] .language-pro__toggle svg { display: none; }

  .reviews .section-heading {
    display: grid;
    grid-template-columns: minmax(0, 1fr);
    align-items: start;
    justify-items: start;
    gap: .95rem;
  }

  .reviews__google-wordmark {
    display: block;
    width: min(10.5rem, 48vw);
    min-width: 8.4rem;
    height: auto;
    aspect-ratio: 2.65 / 1;
    padding: 0;
    border: 1px solid rgba(255,255,255,.92);
    border-radius: .72rem;
    background: #fff;
    box-shadow: 0 .55rem 1.35rem rgba(0,0,0,.22);
    object-fit: cover;
    object-position: center;
  }

  .hero__rating {
    display: flex;
    align-items: center;
    gap: .55rem;
    max-width: calc(100vw - 2.3rem);
  }

  .hero__rating-g {
    display: block;
    flex: 0 0 auto;
    width: 2rem;
    height: 2rem;
    padding: .08rem;
    border-radius: .38rem;
    background: #fff;
    mix-blend-mode: normal;
  }

  .review__g--google {
    background: #fff;
    mix-blend-mode: normal;
  }
}

@media (max-width: 360px) {
  .header[data-header] > .brand { width: 5.05rem; }
  .header[data-header] .header__actions { gap: .18rem; }
  .header[data-header] .header__reserve { min-width: 4.3rem; padding-inline: .32rem; font-size: .5rem; }
  .header[data-header] .language-pro__toggle { min-width: 3.55rem; padding-inline: .22rem; }
}

/* El menú cerrado no puede interceptar toques de los CTA del hero. */
@media (max-width: 900px) {
  .mobile-menu,
  .mobile-menu-backdrop {
    pointer-events: none;
    visibility: hidden;
  }

  .mobile-menu.is-open,
  .mobile-menu-backdrop.is-open {
    pointer-events: auto;
    visibility: visible;
  }
}

/* Cierre de cascada: iconos oficiales y titular sin recortes. */
.footer-contact-action__icon { padding:.54rem; overflow:hidden; background:#073f68 !important; box-shadow:0 .35rem .9rem rgba(3,38,70,.24) !important; }
.footer-contact-action__icon img { width:100%; height:100%; filter:none !important; }
.footer-contact-action--call .footer-contact-action__icon img,
.quick-actions__phone img { filter:brightness(0) invert(1) !important; }
.quick-actions a { overflow:hidden; border:0; background:#073f68 !important; }
.quick-actions a img { width:1.42rem; height:1.42rem; }
.hero h1 { overflow:visible; font-family:Georgia, "Times New Roman", serif; font-size:clamp(3.4rem,5.6vw,6.5rem); font-weight:400; line-height:1.06; letter-spacing:-.045em; text-wrap:balance; }
.hero h1 [data-i18n-html], .hero h1 em { display:inline; animation:none; clip-path:none; }
@media (max-width: 620px) { .hero h1 { font-size:clamp(2.7rem,10.8vw,3.55rem); line-height:1.06; letter-spacing:-.03em; } }
