/* ==========================================================
   VISITA LA CRUZ - Identidad turistica propia
   Paleta inspirada en el escudo municipal, el rio y la tierra.
========================================================== */
:root {
  --wine: #6f1824;
  --wine-dark: #481019;
  --gold: #d5a142;
  --gold-soft: #f4dfaf;
  --river: #0e665b;
  --river-light: #1d8b7e;
  --cream: #fbf7ee;
  --sand: #efe5d2;
  --white: #ffffff;
  --ink: #252724;
  --muted: #69706d;
  --line: #e7dfd1;
  --shadow: 0 22px 54px rgba(45, 25, 18, 0.14);
  --radius: 24px;
}

* { box-sizing: border-box; margin: 0; padding: 0; }
html { scroll-behavior: smooth; }
body {
  min-width: 320px;
  color: var(--ink);
  background: var(--cream);
  font-family: "Segoe UI", Arial, sans-serif;
  line-height: 1.6;
}
img { display: block; max-width: 100%; }
a { color: inherit; text-decoration: none; }
button, input { font: inherit; }
button { cursor: pointer; }
.container { width: min(1220px, calc(100% - 48px)); margin: 0 auto; }
.eyebrow {
  margin-bottom: 12px;
  color: var(--gold);
  font-size: 0.73rem;
  font-weight: 800;
  letter-spacing: 0.24em;
  text-transform: uppercase;
}
.section-heading h2, .page-title h1, .feature-copy h2, .detail-copy h1 {
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 500;
  letter-spacing: -0.045em;
  line-height: 1.1;
}
.reveal {
  opacity: 0;
  transform: translateY(28px);
  transition: opacity .65s ease, transform .65s cubic-bezier(.2,.72,.2,1);
}
.reveal.is-visible { opacity: 1; transform: none; }

/* ========================== Cabecera ========================== */
.site-header {
  position: sticky;
  top: 0;
  z-index: 30;
  background: rgba(251, 247, 238, .97);
  box-shadow: 0 3px 17px rgba(50, 27, 20, .07);
  backdrop-filter: blur(12px);
}
.top-nav {
  display: flex;
  align-items: center;
  gap: 30px;
  width: min(1400px, calc(100% - 42px));
  min-height: 86px;
  margin: auto;
}
.brand {
  display: inline-flex;
  align-items: center;
  gap: 12px;
  flex-shrink: 0;
  color: var(--wine);
}
.brand img {
  width: 67px;
  height: 67px;
  object-fit: contain;
}
.brand-copy { display: flex; flex-direction: column; line-height: 1; }
.brand-copy strong {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.28rem;
}
.brand-copy small {
  margin-top: 7px;
  color: var(--gold);
  font-size: .64rem;
  font-weight: 800;
  letter-spacing: .25em;
  text-transform: uppercase;
}
.site-navigation {
  display: flex;
  justify-content: center;
  gap: clamp(16px, 2.1vw, 32px);
  flex: 1;
  list-style: none;
  color: var(--wine-dark);
  font-size: .93rem;
  font-weight: 650;
}
.site-navigation a {
  position: relative;
  white-space: nowrap;
}
.site-navigation a::after {
  content: "";
  position: absolute;
  right: 0;
  bottom: -12px;
  left: 0;
  height: 2px;
  background: var(--gold);
  transform: scaleX(0);
  transition: transform .24s ease;
}
.site-navigation a:hover::after, .site-navigation a.current::after { transform: scaleX(1); }
.language-panel {
  flex-shrink: 0;
  padding: 7px 9px 8px;
  border: 1px solid var(--line);
  border-radius: 15px;
  background: var(--white);
}
.language-label {
  display: block;
  margin: 0 3px 5px;
  color: var(--muted);
  font-size: .62rem;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.language-switch { display: flex; gap: 4px; }
.language-switch button {
  display: flex;
  align-items: center;
  gap: 5px;
  padding: 5px 7px;
  border: 0;
  border-radius: 9px;
  background: transparent;
  color: var(--muted);
  font-size: .7rem;
  font-weight: 800;
}
.language-switch button.active {
  background: var(--wine);
  color: var(--white);
}
.flag {
  display: inline-block;
  width: 18px;
  height: 12px;
  border-radius: 2px;
  box-shadow: inset 0 0 0 1px rgba(0,0,0,.1);
}
.flag-es {
  background: linear-gradient(#74bfe7 0 33%, #fff 33% 67%, #74bfe7 67%);
}
.flag-en {
  background:
    linear-gradient(90deg, transparent 42%, #cf142b 42% 58%, transparent 58%),
    linear-gradient(transparent 36%, #cf142b 36% 64%, transparent 64%),
    #fff;
}
.flag-pt {
  position: relative;
  overflow: hidden;
  background: #009b3a;
}
.flag-pt::before {
  content: "";
  position: absolute;
  inset: 2px 4px;
  background: #ffdf00;
  transform: rotate(45deg);
}
.flag-pt::after {
  content: "";
  position: absolute;
  left: 6px;
  top: 3px;
  width: 6px;
  height: 6px;
  border-radius: 50%;
  background: #002776;
}
.menu-button {
  display: none;
  gap: 5px;
  margin-left: auto;
  border: 0;
  background: transparent;
}
.menu-button span { width: 25px; height: 2px; background: var(--wine); }

/* ========================== Portada ========================== */
.home-hero {
  position: relative;
  min-height: 670px;
  overflow: hidden;
  color: var(--white);
}
.hero-photo {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  animation: breathe 17s ease-in-out infinite alternate;
}
.home-hero::after {
  content: "";
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(45, 14, 20, .78), rgba(45, 14, 20, .27) 54%, rgba(14, 48, 44, .26)),
    linear-gradient(0deg, rgba(24, 22, 19, .62), transparent 53%);
}
.hero-content {
  position: relative;
  z-index: 1;
  padding: 112px 0 130px;
}
.hero-content h1 {
  max-width: 700px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(3.3rem, 6.4vw, 5.9rem);
  font-weight: 500;
  letter-spacing: -.065em;
  line-height: .98;
}
.hero-content > p:not(.eyebrow) {
  max-width: 515px;
  margin-top: 24px;
  color: rgba(255,255,255,.88);
  font-size: 1.05rem;
}
.search-box {
  display: flex;
  gap: 9px;
  max-width: 690px;
  margin-top: 42px;
  padding: 8px;
  border-radius: 17px;
  background: var(--white);
  box-shadow: var(--shadow);
}
.search-box label {
  position: absolute;
  width: 1px;
  height: 1px;
  overflow: hidden;
}
.search-box input {
  flex: 1;
  min-width: 0;
  padding: 0 17px;
  border: 0;
  color: var(--ink);
  outline: none;
}
.search-box button {
  min-height: 53px;
  padding: 0 28px;
  border: 0;
  border-radius: 12px;
  background: var(--gold);
  color: var(--wine-dark);
  font-weight: 800;
}
.search-status {
  min-height: 25px;
  margin-top: 13px;
  color: var(--gold-soft);
  font-size: .9rem;
}
.main-paths {
  position: relative;
  z-index: 2;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 14px;
  margin-top: 0;
}
.path-card {
  position: relative;
  display: flex;
  flex-direction: column;
  justify-content: end;
  min-height: 212px;
  padding: 27px;
  border-radius: var(--radius);
  color: var(--white);
  overflow: hidden;
  box-shadow: var(--shadow);
  transition: transform .28s ease;
}
.path-card:hover { transform: translateY(-9px); }
.path-card img, .visual-card img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .65s ease;
}
.path-card:hover img, .visual-card:hover img { transform: scale(1.08); }
.path-card::after {
  content: "";
  position: absolute;
  inset: 0;
}
.path-card.wine::after { background: linear-gradient(transparent, rgba(87, 14, 26, .94)); }
.path-card.river::after { background: linear-gradient(transparent, rgba(7, 73, 65, .94)); }
.path-card.gold::after { background: linear-gradient(transparent, rgba(93, 58, 17, .93)); }
.path-card div { position: relative; z-index: 1; }
.path-card span {
  color: var(--gold-soft);
  font-size: .7rem;
  font-weight: 800;
  letter-spacing: .18em;
  text-transform: uppercase;
}
.path-card h2 { font-size: clamp(1.45rem, 2.2vw, 1.8rem); }
.path-card p { color: rgba(255,255,255,.84); font-size: .88rem; }

/* ========================== Clima ========================== */
.weather-strip {
  position: relative;
  z-index: 3;
  margin-top: 18px;
  margin-bottom: 16px;
}
.weather-card {
  position: relative;
  display: grid;
  grid-template-columns: auto minmax(160px, .62fr) 1fr;
  gap: 14px;
  align-items: center;
  min-height: 82px;
  padding: 12px 16px;
  border: 1px solid rgba(213, 161, 66, .24);
  border-radius: 18px;
  background:
    linear-gradient(135deg, rgba(255,255,255,.92), rgba(244,223,175,.34)),
    var(--white);
  box-shadow: 0 12px 28px rgba(45, 25, 18, .09);
  overflow: hidden;
  backdrop-filter: blur(10px);
}
.weather-card::after {
  content: "";
  position: absolute;
  right: -58px;
  bottom: -80px;
  width: 180px;
  height: 180px;
  border-radius: 50%;
  background: radial-gradient(circle, rgba(14,102,91,.1), transparent 64%);
  pointer-events: none;
}
.weather-orb {
  position: relative;
  width: 46px;
  height: 46px;
  border-radius: 14px;
  background: linear-gradient(145deg, var(--river), var(--river-light));
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.16), 0 10px 20px rgba(14,102,91,.18);
  overflow: hidden;
}
.sun-core {
  position: absolute;
  top: 9px;
  left: 9px;
  width: 18px;
  height: 18px;
  border-radius: 50%;
  background: var(--gold);
  box-shadow: 0 0 24px rgba(244,223,175,.88);
}
.cloud-core,
.cloud-core::before,
.cloud-core::after {
  position: absolute;
  display: block;
  border-radius: 999px;
  background: rgba(255,255,255,.88);
  content: "";
}
.cloud-core {
  right: 7px;
  bottom: 11px;
  width: 28px;
  height: 11px;
}
.cloud-core::before {
  left: 4px;
  bottom: 4px;
  width: 12px;
  height: 12px;
}
.cloud-core::after {
  right: 4px;
  bottom: 3px;
  width: 15px;
  height: 15px;
}
.weather-orb.rainy::before {
  content: "";
  position: absolute;
  right: 14px;
  bottom: 4px;
  width: 3px;
  height: 8px;
  border-radius: 999px;
  background: var(--gold-soft);
  box-shadow: 7px -2px 0 var(--gold-soft), -7px -2px 0 var(--gold-soft);
  transform: rotate(20deg);
}
.weather-orb.clear .cloud-core { opacity: .32; }
.weather-main { position: relative; z-index: 1; }
.weather-main .eyebrow { margin-bottom: 1px; color: var(--river); font-size: .58rem; letter-spacing: .15em; }
.weather-main h2 {
  color: var(--wine-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.72rem, 2.4vw, 2.15rem);
  font-weight: 500;
  line-height: .95;
  letter-spacing: -.04em;
}
.weather-unit {
  margin-left: 3px;
  color: var(--gold);
  font-size: .46em;
  vertical-align: super;
}
.weather-main p:last-child {
  margin-top: 2px;
  color: var(--muted);
  font-size: .8rem;
  font-weight: 650;
}
.weather-data {
  position: relative;
  z-index: 1;
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: 6px;
}
.weather-data div {
  padding: 7px 10px;
  border: 1px solid var(--line);
  border-radius: 12px;
  background: rgba(255,255,255,.74);
}
.weather-data span {
  display: block;
  color: var(--muted);
  font-size: .56rem;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.weather-data strong {
  display: block;
  margin-top: 2px;
  color: var(--wine-dark);
  font-size: .82rem;
}
.weather-updated {
  position: absolute;
  right: 14px;
  bottom: 5px;
  color: var(--muted);
  font-size: .58rem;
}

/* ========================== Home sections/cards ========================== */
.home-section { padding: 96px 0 0; }
.section-heading {
  display: flex;
  align-items: end;
  justify-content: space-between;
  gap: 25px;
  margin-bottom: 34px;
}
.section-heading h2 { font-size: clamp(2.1rem, 4vw, 3.25rem); color: var(--wine-dark); }
.section-heading p:last-child { max-width: 360px; color: var(--muted); }
.visual-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 16px; }
.visual-card {
  position: relative;
  min-height: 360px;
  border-radius: var(--radius);
  color: var(--white);
  overflow: hidden;
}
.visual-card::after {
  content: "";
  position: absolute;
  inset: 28% 0 0;
  background: linear-gradient(transparent, rgba(29,20,18,.88));
}
.visual-card div {
  position: absolute;
  right: 23px;
  bottom: 23px;
  left: 23px;
  z-index: 1;
}
.tag {
  display: inline-block;
  margin-bottom: 9px;
  padding: 5px 11px;
  border-radius: 999px;
  background: var(--gold);
  color: var(--wine-dark);
  font-size: .68rem;
  font-weight: 800;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.visual-card h3 { font-size: 1.35rem; }
.visual-card p { color: rgba(255,255,255,.84); font-size: .88rem; }
.identity-band {
  display: grid;
  grid-template-columns: .82fr 1fr;
  gap: 66px;
  align-items: center;
  margin-top: 100px;
  padding: 86px max(calc((100% - 1220px) / 2), 24px);
  background: var(--wine-dark);
  color: var(--white);
}
.identity-band h2 { font-family: Georgia, serif; font-size: clamp(2.1rem, 4vw, 3.2rem); font-weight: 500; line-height: 1.12; }
.identity-links { display: grid; grid-template-columns: repeat(2, 1fr); gap: 12px; }
.identity-links a {
  padding: 22px;
  border: 1px solid rgba(244,223,175,.25);
  border-radius: 16px;
  transition: background .2s ease, border-color .2s ease;
}
.identity-links a:hover { border-color: var(--gold); background: rgba(213,161,66,.12); }
.identity-links strong { display: block; color: var(--gold-soft); }
.identity-links span { color: #d7c9c4; font-size: .88rem; }

/* ========================== Paginas interiores ========================== */
.page-hero {
  padding: 66px 0 55px;
  background: var(--wine-dark);
  color: var(--white);
}
.site-page-hero-has-image {
  background:
    linear-gradient(90deg, rgba(39, 16, 20, .88), rgba(76, 36, 35, .62), rgba(76, 36, 35, .28)),
    var(--site-page-hero-image) center/cover no-repeat,
    var(--wine-dark);
}
.page-title { max-width: 790px; }
.page-title h1 { font-size: clamp(2.7rem, 5vw, 4.3rem); }
.page-title p:last-child { margin-top: 18px; color: #e4d9d4; font-size: 1rem; }
.page-content { padding: 64px 0 88px; }
.cards-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }
.listing-card {
  display: flex;
  flex-direction: column;
  border-radius: var(--radius);
  background: var(--white);
  box-shadow: 0 12px 32px rgba(44,28,17,.08);
  overflow: hidden;
  transition: transform .25s ease, box-shadow .25s ease;
}
.listing-card:hover { transform: translateY(-7px); box-shadow: var(--shadow); }
.listing-card img { height: 245px; object-fit: cover; }
.listing-card div { padding: 23px; }
.listing-card h2, .listing-card h3 { color: var(--wine-dark); font-size: 1.28rem; }
.listing-card p { margin: 9px 0 19px; color: var(--muted); font-size: .92rem; }
.text-link { color: var(--river); font-weight: 750; }

/* ========================== Eventos premium ========================== */
.events-premium {
  min-height: 100vh;
  background:
    linear-gradient(180deg, #171110 0, var(--cream) 430px),
    var(--cream);
}
.events-hero {
  position: relative;
  overflow: hidden;
  padding: clamp(98px, 11vw, 150px) 0 clamp(58px, 7vw, 90px);
  background:
    radial-gradient(circle at 78% 18%, rgba(213, 161, 66, .22), transparent 34%),
    linear-gradient(135deg, #1b1411, #241713 76%);
  color: var(--white);
  isolation: isolate;
}
.events-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(90deg, rgba(17, 12, 10, .90), rgba(31, 19, 14, .50), rgba(31, 19, 14, .18)),
    linear-gradient(0deg, rgba(17, 12, 10, .86), transparent 62%);
}
.events-hero-content {
  max-width: 800px;
}
.events-hero-content .eyebrow {
  color: rgba(244, 223, 175, .94);
  letter-spacing: .19em;
}
.events-hero-content h1 {
  color: var(--white);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(3rem, 7vw, 6.5rem);
  font-weight: 500;
  letter-spacing: -.065em;
  line-height: .95;
}
.events-hero-content > p:last-child {
  max-width: 620px;
  margin-top: 18px;
  color: rgba(255, 255, 255, .86);
  font-size: clamp(1.02rem, 1.5vw, 1.22rem);
  font-weight: 600;
}
.events-agenda {
  display: grid;
  gap: clamp(34px, 5vw, 62px);
  padding-top: clamp(28px, 4vw, 54px);
  padding-bottom: 86px;
}
.event-featured {
  display: grid;
  grid-template-columns: minmax(0, .98fr) minmax(320px, .62fr);
  overflow: hidden;
  border: 1px solid rgba(244, 223, 175, .32);
  border-radius: clamp(22px, 3vw, 34px);
  background:
    radial-gradient(circle at top right, rgba(213, 161, 66, .18), transparent 36%),
    rgba(255, 255, 255, .96);
  box-shadow: 0 28px 70px rgba(44, 28, 17, .16);
}
.event-featured-media {
  position: relative;
  min-height: clamp(360px, 42vw, 560px);
  overflow: hidden;
  background: var(--sand);
}
.event-featured-media img,
.event-featured-media > span {
  width: 100%;
  height: 100%;
}
.event-featured-media img {
  object-fit: cover;
  transition: transform .32s ease;
}
.event-featured:hover .event-featured-media img {
  transform: scale(1.035);
}
.event-featured-media > span {
  display: grid;
  place-items: center;
  color: var(--gold-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.4rem, 6vw, 4.8rem);
}
.event-featured-copy {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(28px, 4.6vw, 62px);
}
.event-status {
  display: inline-flex;
  width: fit-content;
  margin-bottom: 13px;
  padding: 8px 12px;
  border: 1px solid rgba(184, 141, 60, .30);
  border-radius: 999px;
  background: rgba(244, 223, 175, .34);
  color: var(--gold-dark);
  font-size: .74rem;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.event-featured h2,
.events-section-heading h2,
.events-empty h2 {
  margin: 0;
  color: var(--wine-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-weight: 500;
  line-height: 1.04;
}
.event-featured h2 {
  font-size: clamp(2.1rem, 4vw, 4.35rem);
  letter-spacing: -.055em;
}
.event-place {
  margin-top: 14px;
  color: var(--river);
  font-size: .96rem;
  font-weight: 850;
  letter-spacing: .03em;
}
.event-summary {
  margin-top: 16px;
  color: color-mix(in srgb, var(--muted) 86%, #1d261c);
  line-height: 1.72;
}
.event-featured-action {
  width: fit-content;
}
.events-section {
  display: grid;
  gap: 18px;
}
.events-section-heading {
  display: grid;
  gap: 4px;
}
.events-section-heading h2,
.events-empty h2 {
  font-size: clamp(1.8rem, 3vw, 2.8rem);
}
.events-card-grid {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(16px, 2vw, 24px);
}
.event-agenda-card {
  display: flex;
  flex-direction: column;
  min-height: 100%;
  overflow: hidden;
  border: 1px solid rgba(231, 223, 209, .94);
  border-radius: 22px;
  background: rgba(255, 255, 255, .96);
  box-shadow: 0 18px 46px rgba(44, 28, 17, .10);
  transition: transform .24s ease, box-shadow .24s ease, border-color .24s ease;
}
.event-agenda-card:hover {
  border-color: rgba(184, 141, 60, .38);
  box-shadow: 0 28px 66px rgba(44, 28, 17, .16);
  transform: translateY(-7px);
}
.event-agenda-media {
  position: relative;
  display: block;
  height: clamp(230px, 24vw, 315px);
  overflow: hidden;
  background: var(--sand);
}
.event-agenda-media img,
.event-agenda-media > span {
  width: 100%;
  height: 100%;
}
.event-agenda-media img {
  object-fit: cover;
  transition: transform .28s ease;
}
.event-agenda-card:hover .event-agenda-media img {
  transform: scale(1.045);
}
.event-agenda-media > span {
  display: grid;
  place-items: center;
  color: var(--gold-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 2.1rem;
}
.event-date-badge {
  position: absolute;
  left: 16px;
  bottom: 16px;
  display: grid;
  min-width: 74px;
  padding: 11px 12px 10px;
  border: 1px solid rgba(255, 255, 255, .55);
  border-radius: 16px;
  background: rgba(255, 255, 255, .92);
  color: var(--wine-dark);
  text-align: center;
  box-shadow: 0 18px 34px rgba(0, 0, 0, .18);
  backdrop-filter: blur(10px);
}
.event-date-badge strong {
  font-family: Georgia, "Times New Roman", serif;
  font-size: 2rem;
  font-weight: 500;
  line-height: .95;
}
.event-date-badge small {
  margin-top: 3px;
  color: var(--gold-dark);
  font-size: .72rem;
  font-weight: 900;
  letter-spacing: .12em;
  text-transform: uppercase;
}
.event-agenda-content {
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  padding: 22px;
}
.event-agenda-content h3 {
  color: var(--wine-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.35rem, 2vw, 1.75rem);
  font-weight: 500;
  line-height: 1.08;
}
.event-agenda-content .event-place {
  margin-top: 10px;
}
.event-agenda-content .event-summary {
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 3;
  margin-top: 12px;
  font-size: .94rem;
}
.event-card-action {
  width: fit-content;
  margin-top: auto;
}
.events-section-past {
  opacity: .88;
}
.events-section-past .event-agenda-card {
  box-shadow: 0 12px 34px rgba(44, 28, 17, .08);
}
.events-section-past .event-agenda-media {
  height: clamp(190px, 20vw, 245px);
}
.events-empty {
  max-width: 720px;
  padding: clamp(28px, 4vw, 46px);
  border: 1px solid rgba(184, 141, 60, .30);
  border-radius: 24px;
  background:
    radial-gradient(circle at top right, rgba(213, 161, 66, .18), transparent 38%),
    rgba(255, 255, 255, .96);
  box-shadow: 0 24px 58px rgba(44, 28, 17, .12);
}
.events-empty > p:not(.tourist-attraction-section-kicker) {
  margin-top: 14px;
  color: var(--muted);
  line-height: 1.72;
}
@media (max-width: 1020px) {
  .event-featured {
    grid-template-columns: 1fr;
  }
  .events-card-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}
@media (max-width: 640px) {
  .events-hero {
    padding: 82px 0 48px;
  }
  .events-agenda {
    padding-top: 28px;
    padding-bottom: 64px;
  }
  .events-card-grid {
    grid-template-columns: 1fr;
  }
  .event-featured {
    border-radius: 20px;
  }
  .event-featured-media,
  .event-agenda-media,
  .events-section-past .event-agenda-media {
    height: 250px;
  }
  .event-featured-copy,
  .event-agenda-content {
    padding: 20px;
  }
  .event-date-badge {
    left: 12px;
    bottom: 12px;
    min-width: 68px;
  }
}

/* ========================== Que hacer premium ========================== */
.things-to-do-premium {
  min-height: 100vh;
  background: linear-gradient(180deg, #f7f1e7 0%, var(--cream) 58%, #efe3d3 100%);
}
.things-to-do-stage {
  position: relative;
  overflow: hidden;
  padding: clamp(18px, 3vw, 34px) 0 clamp(34px, 4vw, 52px);
}
.things-to-do-stage::before {
  content: none;
}
.things-to-do-shell {
  position: relative;
  display: block;
  width: min(1800px, calc(100vw - 40px));
  max-width: none;
  min-height: clamp(720px, 82vh, 780px);
  border-radius: clamp(28px, 4vw, 42px);
  overflow: hidden;
  box-shadow: 0 34px 90px rgba(44, 28, 17, .24);
  isolation: isolate;
}
.things-to-do-feature {
  position: absolute;
  right: clamp(20px, 2.5vw, 44px);
  bottom: clamp(42px, 8%, 62px);
  z-index: 4;
  width: min(1120px, 62%);
  min-width: 0;
  padding-top: 0;
}
.things-to-do-info {
  position: absolute;
  top: 16%;
  left: 5.2%;
  z-index: 3;
  display: grid;
  gap: 12px;
  width: min(500px, 34%);
  padding-top: 0;
  color: var(--white);
}
.things-to-do-info .eyebrow {
  color: rgba(244, 223, 175, .94);
  letter-spacing: .18em;
}
.things-to-do-info h1 {
  max-width: 520px;
  color: var(--white);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.45rem, 4.4vw, 4.7rem);
  font-weight: 500;
  letter-spacing: -.052em;
  line-height: .98;
  text-shadow: 0 16px 44px rgba(0, 0, 0, .42);
  transition: opacity .22s ease, transform .22s ease;
}
.things-to-do-location {
  margin-top: 0;
  color: rgba(244, 223, 175, .94);
  font-size: .94rem;
  font-weight: 850;
  letter-spacing: .04em;
}
.things-to-do-summary {
  max-width: 500px;
  margin-top: 0;
  color: rgba(255, 255, 255, .88);
  font-size: clamp(1rem, 1.25vw, 1.12rem);
  font-weight: 650;
  line-height: 1.65;
  transition: opacity .22s ease, transform .22s ease;
}
.things-to-do-info.is-changing h1,
.things-to-do-info.is-changing .things-to-do-location,
.things-to-do-info.is-changing .things-to-do-summary,
.things-to-do-info.is-changing .things-to-do-main-action {
  opacity: .18;
  transform: translateY(8px);
}
.things-to-do-visual {
  position: absolute;
  inset: 0;
  z-index: 0;
}
.things-to-do-hero-card {
  position: relative;
  display: block;
  width: 100%;
  height: 100%;
  min-height: inherit;
  overflow: hidden;
  border-radius: 0;
  background: linear-gradient(135deg, #21311f, #5d2b24);
  box-shadow: none;
  isolation: isolate;
}
.things-to-do-hero-card img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transform: scale(1.01);
  transition: opacity .25s ease, transform .45s ease;
}
.things-to-do-hero-card.is-changing img {
  opacity: .22;
  transform: scale(1.025);
}
.things-to-do-hero-overlay {
  position: absolute;
  inset: 0;
  z-index: 1;
  pointer-events: none;
  background:
    linear-gradient(90deg, rgba(11, 10, 9, .90) 0%, rgba(11, 10, 9, .66) 34%, rgba(11, 10, 9, .28) 62%, rgba(11, 10, 9, .12) 100%),
    linear-gradient(0deg, rgba(11, 10, 9, .80) 0%, rgba(11, 10, 9, .16) 46%, rgba(11, 10, 9, .10) 100%);
}
.things-to-do-hero-place {
  position: absolute;
  right: clamp(24px, 4vw, 58px);
  top: clamp(24px, 4vw, 58px);
  bottom: auto;
  z-index: 2;
  color: rgba(255, 255, 255, .82);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.35rem, 2.3vw, 2rem);
  font-weight: 500;
  letter-spacing: .02em;
  text-shadow: 0 12px 30px rgba(0, 0, 0, .32);
}
.things-to-do-image-placeholder {
  position: absolute;
  inset: 0;
  display: grid;
  place-items: center;
  color: rgba(255, 255, 255, .78);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.2rem, 5vw, 4.8rem);
}
.things-to-do-main-action {
  width: fit-content;
  margin-top: 4px;
  background: var(--gold);
  color: var(--wine-dark);
  box-shadow: 0 18px 40px rgba(0, 0, 0, .22);
}
.things-to-do-carousel-panel {
  width: 100%;
  min-width: 0;
  margin-top: 0;
  padding: 0 2px;
  border: 0;
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  backdrop-filter: none;
}
.things-to-do-carousel-header {
  display: flex;
  justify-content: space-between;
  gap: 12px;
  align-items: center;
  margin-bottom: 18px;
  min-width: 0;
}
.things-to-do-carousel-header > div:first-child {
  min-width: 0;
}
.things-to-do-carousel-header p {
  margin: 0;
  color: rgba(244, 223, 175, .94);
  font-size: .78rem;
  font-weight: 900;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.things-to-do-carousel-header strong {
  display: block;
  margin-top: 2px;
  color: var(--white);
  font-size: .98rem;
}
.things-to-do-controls {
  flex: 0 0 auto;
  display: flex;
  gap: 10px;
}
.things-to-do-controls button {
  display: grid;
  place-items: center;
  width: 54px;
  height: 54px;
  border: 1px solid rgba(244, 223, 175, .62);
  border-radius: 999px;
  background: rgba(244, 223, 175, .92);
  color: var(--wine-dark);
  font-size: 2rem;
  line-height: 1;
  box-shadow:
    0 16px 34px rgba(0, 0, 0, .26),
    0 1px 0 rgba(255, 255, 255, .55) inset;
  transition: transform .2s ease, background .2s ease, border-color .2s ease, box-shadow .2s ease;
}
.things-to-do-controls button:hover,
.things-to-do-controls button:focus-visible {
  border-color: rgba(255, 255, 255, .72);
  background: var(--white);
  outline: none;
  transform: translateY(-3px);
  box-shadow:
    0 22px 44px rgba(0, 0, 0, .30),
    0 1px 0 rgba(255, 255, 255, .65) inset;
}
.things-to-do-carousel {
  display: flex;
  gap: 20px;
  overflow-x: auto;
  max-width: 100%;
  padding: 24px 10px 38px;
  scroll-snap-type: x mandatory;
  scrollbar-width: none;
  perspective: 1200px;
}
.things-to-do-carousel::-webkit-scrollbar {
  display: none;
}
.things-to-do-card-shell {
  display: flex;
  flex: 0 0 clamp(150px, 8.6vw, 168px);
  flex-direction: column;
  height: clamp(340px, 27vw, 405px);
  scroll-snap-align: start;
}
.things-to-do-card-shell:nth-child(3n + 2) {
  transform: translateY(22px) rotate(-1.2deg);
}
.things-to-do-card-shell:nth-child(3n) {
  transform: translateY(6px) rotate(1deg);
}
.things-to-do-card {
  position: relative;
  display: flex;
  flex: 1 1 auto;
  flex-direction: column;
  width: 100%;
  min-height: 0;
  overflow: hidden;
  border: 1px solid rgba(255, 255, 255, .48);
  border-radius: 26px;
  background: var(--sand);
  color: var(--white);
  text-align: left;
  box-shadow:
    0 24px 52px rgba(44, 28, 17, .22),
    0 1px 0 rgba(255, 255, 255, .45) inset;
  transition: transform .24s ease, box-shadow .24s ease, border-color .24s ease, background .24s ease;
}
.things-to-do-card:hover,
.things-to-do-card:focus-visible {
  border-color: rgba(244, 223, 175, .72);
  box-shadow:
    0 34px 70px rgba(44, 28, 17, .28),
    0 1px 0 rgba(255, 255, 255, .52) inset;
  outline: none;
  transform: translateY(-8px) scale(1.015);
}
.things-to-do-card.is-active {
  border-color: rgba(244, 223, 175, .86);
  background: var(--sand);
  box-shadow:
    0 34px 72px rgba(44, 28, 17, .30),
    0 0 0 3px rgba(244, 223, 175, .24),
    0 1px 0 rgba(255, 255, 255, .52) inset;
  outline: none;
  transform: translateY(-8px) scale(1.018);
}
.things-to-do-card.is-active::after {
  content: "";
  position: absolute;
  top: 12px;
  right: 12px;
  z-index: 2;
  width: 12px;
  height: 12px;
  border: 2px solid var(--white);
  border-radius: 999px;
  background: var(--river);
  box-shadow: 0 6px 14px rgba(0, 0, 0, .20);
}
.things-to-do-card-image {
  position: absolute;
  inset: 0;
  display: block;
  width: 100%;
  height: 100%;
  overflow: hidden;
  background: var(--sand);
}
.things-to-do-card-image img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: transform .35s ease;
}
.things-to-do-card:hover img,
.things-to-do-card:focus-visible img,
.things-to-do-card.is-active img {
  transform: scale(1.045);
}
.things-to-do-card-image > span {
  display: grid;
  place-items: center;
  height: 100%;
  color: var(--river);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.4rem;
}
.things-to-do-card-copy {
  position: absolute;
  right: 0;
  bottom: 0;
  left: 0;
  z-index: 2;
  display: flex;
  flex-direction: column;
  justify-content: flex-end;
  min-height: 46%;
  padding: 56px 16px 16px;
  background: linear-gradient(0deg, rgba(14, 13, 10, .78) 0%, rgba(14, 13, 10, .42) 58%, transparent 100%);
}
.things-to-do-card-copy strong {
  color: var(--white);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.05rem, 1.2vw, 1.28rem);
  font-weight: 600;
  line-height: 1.08;
  text-shadow: 0 8px 22px rgba(0, 0, 0, .32);
  display: -webkit-box;
  overflow: hidden;
  -webkit-box-orient: vertical;
  -webkit-line-clamp: 2;
}
.things-to-do-mobile-list {
  display: none;
}
@media (min-width: 981px) and (max-width: 1180px) {
  .things-to-do-shell {
    width: calc(100vw - 16px);
  }
  .things-to-do-info {
    left: 5%;
    width: min(440px, 40%);
  }
  .things-to-do-info h1 {
    font-size: clamp(2.25rem, 4vw, 4rem);
  }
  .things-to-do-feature {
    right: 3%;
    width: min(580px, 52%);
  }
  .things-to-do-card-shell {
    flex-basis: clamp(158px, 14vw, 176px);
    height: clamp(315px, 30vw, 360px);
  }
}
@media (max-width: 980px) {
  .things-to-do-stage {
    padding-top: 78px;
  }
  .things-to-do-shell {
    display: grid;
    grid-template-columns: 1fr;
    gap: 26px;
    min-height: 0;
    overflow: visible;
    border-radius: 0;
    box-shadow: none;
  }
  .things-to-do-feature {
    position: static;
    width: 100%;
    min-height: 0;
    padding-bottom: 0;
  }
  .things-to-do-info {
    position: static;
    width: 100%;
    min-height: 0;
    color: var(--text);
  }
  .things-to-do-info .eyebrow {
    color: var(--gold-dark);
  }
  .things-to-do-info h1 {
    max-width: 760px;
    color: var(--wine-dark);
    text-shadow: none;
  }
  .things-to-do-summary {
    max-width: 680px;
    color: color-mix(in srgb, var(--muted) 86%, #21311f);
  }
  .things-to-do-location {
    color: var(--river);
  }
  .things-to-do-visual {
    position: static;
  }
  .things-to-do-hero-card {
    aspect-ratio: 16 / 11;
    max-height: none;
    border-radius: 24px;
    box-shadow: 0 24px 58px rgba(44, 28, 17, .18);
  }
  .things-to-do-carousel-panel {
    width: 100%;
    margin-top: 26px;
  }
  .things-to-do-carousel-header p {
    color: var(--gold-dark);
  }
  .things-to-do-carousel-header strong {
    color: var(--wine-dark);
  }
  .things-to-do-controls button {
    border-color: rgba(184, 141, 60, .34);
    background: rgba(255, 255, 255, .92);
    color: var(--wine-dark);
  }
}
@media (max-width: 640px) {
  .things-to-do-stage {
    padding: 48px 0 64px;
  }
  .things-to-do-shell {
    display: none;
  }
  .things-to-do-mobile-list {
    display: grid;
    gap: 18px;
  }
  .things-to-do-mobile-heading {
    margin-bottom: 4px;
  }
  .things-to-do-mobile-heading h1 {
    color: var(--wine-dark);
    font-family: Georgia, "Times New Roman", serif;
    font-size: clamp(2.2rem, 12vw, 3.3rem);
    font-weight: 500;
    letter-spacing: -.052em;
    line-height: 1;
  }
  .things-to-do-mobile-card {
    overflow: hidden;
    border: 1px solid rgba(231, 223, 209, .92);
    border-radius: 20px;
    background: rgba(255, 255, 255, .96);
    box-shadow: 0 14px 34px rgba(44, 28, 17, .10);
  }
  .things-to-do-mobile-card img,
  .things-to-do-mobile-placeholder {
    display: block;
    width: 100%;
    aspect-ratio: 16 / 10;
    object-fit: cover;
    background: var(--sand);
  }
  .things-to-do-mobile-placeholder {
    display: grid;
    place-items: center;
    color: var(--river);
    font-family: Georgia, "Times New Roman", serif;
    font-size: 1.8rem;
  }
  .things-to-do-mobile-card > div {
    display: grid;
    gap: 10px;
    padding: 18px;
  }
  .things-to-do-mobile-card h2 {
    margin: 0;
    color: var(--wine-dark);
    font-family: Georgia, "Times New Roman", serif;
    font-size: 1.55rem;
    font-weight: 600;
    line-height: 1.08;
  }
  .things-to-do-mobile-card p {
    margin: 0;
    color: var(--muted);
    font-size: .98rem;
    line-height: 1.55;
  }
  .things-to-do-mobile-card span {
    color: var(--river);
    font-size: .88rem;
    font-weight: 800;
  }
  .things-to-do-mobile-card .button-link {
    width: 100%;
    justify-content: center;
    margin-top: 4px;
  }
}

.accommodation-showcase {
  display: grid;
  gap: clamp(32px, 5vw, 64px);
  padding: clamp(42px, 7vw, 86px) 0 clamp(74px, 9vw, 124px);
}
.accommodation-feature {
  display: grid;
  grid-template-columns: 1fr;
  gap: 0;
  width: min(1220px, calc(100% - 48px));
  margin: 0 auto;
  overflow: hidden;
  border: 1px solid rgba(231, 223, 209, .88);
  border-radius: clamp(22px, 3vw, 34px);
  background: var(--white);
  box-shadow: 0 20px 60px rgba(44, 28, 17, .10);
}
.accommodation-feature-media {
  display: block;
  overflow: hidden;
  border-radius: 0;
  background: var(--sand);
}
.accommodation-feature-media img {
  width: 100%;
  height: clamp(340px, 46vw, 560px);
  max-height: 64svh;
  object-fit: cover;
  transform: scale(1.01);
  transition: transform .75s cubic-bezier(.2,.72,.2,1);
}
.accommodation-feature-media:hover img { transform: scale(1.045); }
.accommodation-feature-copy {
  max-width: 760px;
  padding: clamp(28px, 4vw, 54px);
}
.accommodation-feature-copy h2 {
  margin-top: 8px;
  color: var(--wine-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.25rem, 4vw, 4.05rem);
  font-weight: 500;
  letter-spacing: -.055em;
  line-height: .98;
}
.accommodation-feature-copy p {
  margin: 20px 0 28px;
  color: var(--muted);
  font-size: clamp(1rem, 1.4vw, 1.18rem);
}
.accommodation-feature-text-only {
  width: min(900px, calc(100% - 48px));
}
.accommodation-feature-text-only .accommodation-feature-copy {
  max-width: 760px;
}
.food-card { color: inherit; }
.food-card:hover { transform: translateY(-7px); }
.food-card .food-gallery {
  display: grid;
  grid-template-columns: 1.2fr .8fr;
  grid-template-rows: repeat(2, 122px);
  gap: 3px;
  padding: 0;
}
.food-gallery img {
  width: 100%;
  height: 100%;
  min-height: 0;
  object-fit: cover;
}
.food-gallery img:first-child { grid-row: span 2; }
.food-info {
  display: grid;
  gap: 12px;
  margin-top: 18px;
}
.food-info li {
  padding-top: 12px;
  border-top: 1px solid var(--line);
}
.food-info span {
  display: block;
  margin-bottom: 4px;
  color: var(--muted);
  font-size: .7rem;
  font-weight: 800;
  letter-spacing: .1em;
  text-transform: uppercase;
}
.food-info strong,
.food-info a {
  color: var(--wine-dark);
  font-size: .92rem;
  font-weight: 700;
  overflow-wrap: anywhere;
}
.food-info a { color: var(--river); }
.split-content { display: grid; grid-template-columns: .88fr 1fr; gap: 58px; align-items: start; }
.heritage-photo {
  margin: 0 0 27px;
  overflow: hidden;
  border-radius: var(--radius);
  background: var(--white);
  box-shadow: 0 12px 32px rgba(44,28,17,.08);
}
.heritage-photo img {
  width: 100%;
  aspect-ratio: 4 / 3;
  object-fit: cover;
}
.heritage-photo figcaption {
  padding: 12px 15px 14px;
  color: var(--muted);
  font-size: .78rem;
  line-height: 1.45;
}
.copy-panel h2 { margin-bottom: 18px; color: var(--wine-dark); font-family: Georgia, serif; font-size: 2.2rem; font-weight: 500; }
.copy-panel p { margin-bottom: 17px; color: var(--muted); }
.info-panel {
  padding: 29px;
  border-radius: var(--radius);
  background: var(--white);
  box-shadow: var(--shadow);
}
.info-row { padding: 16px 0; border-bottom: 1px solid var(--line); }
.info-row:last-child { border: 0; }
.info-row span { display: block; color: var(--muted); font-size: .75rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; }
.info-row strong, .info-row a { color: var(--wine-dark); font-weight: 650; }
.button-link {
  display: inline-flex;
  margin-top: 25px;
  padding: 13px 20px;
  border-radius: 12px;
  background: var(--river);
  color: var(--white);
  font-weight: 750;
}
.detail-layout { display: grid; grid-template-columns: 1.05fr .83fr; gap: 40px; }
.detail-page { display: grid; gap: 34px; }
.detail-page .detail-copy { max-width: 880px; }
.detail-main-image img {
  width: 100%;
  max-height: 560px;
  object-fit: cover;
  border-radius: var(--radius);
}
.detail-extra-gallery { margin-top: 4px; }
.detail-gallery img { width: 100%; max-height: 490px; object-fit: cover; border-radius: var(--radius); }
.detail-gallery.detail-main-image img { max-height: 560px; }
.food-detail-gallery {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 12px;
}
.food-detail-gallery img {
  width: 100%;
  height: 220px;
  max-height: none;
}
.food-detail-gallery img:first-child {
  grid-column: 1 / -1;
  height: 420px;
}
.accommodation-detail-page {
  display: grid;
  gap: 34px;
}
.accommodation-detail-hero {
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(320px, .85fr);
  overflow: hidden;
  border: 1px solid rgba(231, 223, 209, .92);
  border-radius: clamp(22px, 3vw, 34px);
  background: var(--white);
  box-shadow: 0 24px 68px rgba(44, 28, 17, .12);
}
.accommodation-detail-media {
  min-height: 100%;
  background: var(--sand);
}
.accommodation-detail-media img {
  width: 100%;
  height: 100%;
  min-height: clamp(420px, 52vw, 660px);
  max-height: 74svh;
  object-fit: cover;
  transition: opacity .22s ease, transform .38s ease;
}
.accommodation-detail-content {
  display: flex;
  flex-direction: column;
  justify-content: center;
  padding: clamp(30px, 4.6vw, 64px);
}
.accommodation-detail-content h1 {
  color: var(--wine-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.4rem, 4.7vw, 4.8rem);
  font-weight: 500;
  letter-spacing: -.06em;
  line-height: .98;
}
.accommodation-detail-summary {
  margin-top: 18px;
  color: var(--river);
  font-size: clamp(1.05rem, 1.5vw, 1.22rem);
  font-weight: 700;
}
.accommodation-detail-description {
  margin-top: 18px;
  color: var(--muted);
  font-size: 1rem;
}
.accommodation-thumbnails {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: 10px;
  margin-top: 28px;
}
.accommodation-thumb {
  overflow: hidden;
  height: 96px;
  border: 2px solid transparent;
  border-radius: 16px;
  background: var(--sand);
  box-shadow: 0 10px 22px rgba(44, 28, 17, .10);
  transition: border-color .2s ease, transform .2s ease;
}
.accommodation-thumb:hover,
.accommodation-thumb:focus-visible {
  border-color: var(--gold);
  transform: translateY(-2px);
  outline: none;
}
.accommodation-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.accommodation-detail-grid {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, .42fr);
  gap: 24px;
  align-items: start;
}
.accommodation-detail-rating {
  margin: 0;
}
.review-rating {
  display: inline-grid;
  gap: 7px;
  margin: 0 0 18px;
  padding: 12px 15px;
  border: 1px solid rgba(213, 161, 66, .34);
  border-radius: 16px;
  background: linear-gradient(135deg, rgba(255,255,255,.96), rgba(244,223,175,.34));
  box-shadow: 0 12px 28px rgba(45,25,18,.08);
}
.review-rating h2 {
  margin: 0;
  color: var(--river);
  font-size: .72rem;
  font-weight: 850;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.rating-stars {
  display: inline-flex;
  gap: 3px;
}
.rating-stars button {
  width: 30px;
  height: 30px;
  border: 1px solid rgba(213, 161, 66, .34);
  border-radius: 10px;
  background: rgba(255,255,255,.72);
  color: #c9b892;
  font-size: 1.05rem;
  line-height: 1;
  transition: transform .16s ease, color .16s ease, background .16s ease, border-color .16s ease;
}
.rating-stars button:hover,
.rating-stars button:focus-visible {
  border-color: var(--gold);
  color: var(--gold);
  transform: translateY(-1px);
  outline: none;
}
.rating-stars button.active {
  border-color: rgba(213, 161, 66, .62);
  background: rgba(244,223,175,.72);
  color: var(--gold);
}
.review-rating p {
  margin: 0;
  color: var(--muted);
  font-size: .82rem;
}
.review-rating strong {
  color: var(--wine-dark);
  font-weight: 800;
}
.detail-copy h1 { margin: 8px 0 17px; color: var(--wine-dark); font-size: clamp(2.15rem,4vw,3.1rem); }
.detail-copy > p { margin-bottom: 27px; color: var(--muted); }
.map-action {
  display: block;
  margin-top: 18px;
  padding: 17px;
  border-radius: 13px;
  background: var(--gold);
  color: var(--wine-dark);
  text-align: center;
  font-weight: 800;
}
.pending-note {
  margin-top: 26px;
  padding: 17px;
  border-left: 4px solid var(--gold);
  background: #fff7e6;
  color: var(--muted);
  font-size: .89rem;
}

/* ========================== Asistente ========================== */
.assistant-button {
  position: fixed;
  right: 24px;
  bottom: 22px;
  z-index: 40;
  display: grid;
  place-items: center;
  width: 68px;
  height: 68px;
  border: 0;
  border-radius: 50%;
  background: var(--wine);
  color: var(--white);
  box-shadow: var(--shadow);
  font-size: 1.65rem;
}
.assistant-panel {
  position: fixed;
  right: 24px;
  bottom: 100px;
  z-index: 40;
  display: none;
  flex-direction: column;
  width: min(365px, calc(100vw - 32px));
  max-height: 560px;
  border-radius: 20px;
  background: var(--white);
  box-shadow: var(--shadow);
  overflow: hidden;
}
.assistant-panel.open { display: flex; animation: rise .25s ease; }
.assistant-header { display: flex; justify-content: space-between; padding: 18px 19px; background: var(--wine); color: var(--white); }
.assistant-header button { border: 0; background: transparent; color: var(--white); font-size: 1.25rem; }
.assistant-messages { display: flex; flex-direction: column; gap: 11px; padding: 18px; overflow-y: auto; }
.bot-message {
  padding: 12px 14px;
  border-radius: 14px 14px 14px 3px;
  background: var(--cream);
  color: var(--ink);
  font-size: .9rem;
}
.bot-links { display: grid; gap: 8px; }
.bot-links a, .bot-links button {
  display: block;
  width: 100%;
  padding: 10px 12px;
  border: 1px solid var(--line);
  border-radius: 11px;
  background: var(--white);
  color: var(--river);
  text-align: left;
  font-weight: 700;
}
.assistant-security {
  padding: 0 18px 15px;
  color: var(--muted);
  font-size: .72rem;
}

/* ========================== Pie ========================== */
.footer {
  margin-top: 90px;
  padding: 44px max(calc((100% - 1220px) / 2), 24px) 22px;
  background: #321018;
  color: #d9cbc7;
  font-size: .86rem;
}

/* Footer global: mapa, contacto, legales y credito de desarrollo N2. */
.footer-grid {
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(190px, 1fr));
  gap: 28px;
}
.footer strong { display: block; color: var(--gold-soft); font-family: Georgia, serif; font-size: 1.22rem; }
.footer h3 { margin-bottom: 12px; color: var(--gold-soft); font-size: .95rem; text-transform: uppercase; letter-spacing: .08em; }
.footer p { margin-top: 8px; color: #d9cbc7; }
.footer-links { display: grid; gap: 8px; list-style: none; }
.footer-links a { color: #f4e7dd; opacity: .88; }
.footer-links a:hover { color: var(--gold-soft); opacity: 1; }
.footer-credit { align-self: start; }

/* Credito N2: enlace de desarrollo sin logo para mantener el footer limpio. */
.n2-credit {
  display: inline-flex;
  align-items: center;
  margin-top: 2px;
  padding: 10px 16px;
  border: 1px solid rgba(226, 184, 109, .42);
  border-radius: 999px;
  background: linear-gradient(135deg, rgba(226, 184, 109, .22), rgba(26, 107, 121, .2));
  color: var(--gold-soft);
  font-weight: 800;
  letter-spacing: .02em;
  box-shadow: inset 0 1px 0 rgba(255,255,255,.12);
  transition: transform .2s ease, background .2s ease, border-color .2s ease, color .2s ease;
}
.n2-credit:hover {
  border-color: rgba(226, 184, 109, .78);
  background: linear-gradient(135deg, rgba(226, 184, 109, .34), rgba(26, 107, 121, .28));
  color: var(--white);
  transform: translateY(-2px);
}
.footer-bottom {
  display: flex;
  justify-content: space-between;
  gap: 18px;
  margin-top: 34px;
  padding-top: 20px;
  border-top: 1px solid rgba(255,255,255,.12);
  color: #c8b8b3;
}

/* Paginas legales simples para privacidad, terminos y accesibilidad. */
.legal-page { padding-top: 58px; }
.legal-card {
  margin-bottom: 18px;
  padding: 24px;
  border: 1px solid var(--line);
  border-radius: var(--radius);
  background: var(--white);
  box-shadow: 0 16px 42px rgba(73, 24, 34, .08);
}
.legal-card h2 { margin-bottom: 9px; color: var(--wine-dark); }

/* ========================== Animaciones ========================== */
@keyframes breathe { to { transform: scale(1.06); } }
@keyframes rise { from { opacity: 0; transform: translateY(14px); } }

/* ========================== Responsive ========================== */
@media (max-width: 1080px) {
  .top-nav { gap: 14px; }
  .site-navigation { font-size: .85rem; gap: 14px; }
  .language-switch button span:last-child { display: none; }
}
@media (max-width: 880px) {
  .top-nav { min-height: 76px; }
  .brand img { width: 56px; height: 56px; }
  .brand-copy strong { font-size: 1.1rem; }
  .menu-button { display: grid; order: 2; }
  .language-panel { order: 1; margin-left: auto; }
  .site-navigation {
    position: absolute;
    top: 76px;
    right: 0;
    left: 0;
    display: none;
    flex-direction: column;
    gap: 0;
    padding: 15px 25px;
    background: var(--cream);
    box-shadow: var(--shadow);
  }
  .site-navigation.open { display: flex; }
  .site-navigation a { display: block; padding: 12px 0; }
  .main-paths, .visual-grid, .cards-grid, .identity-band, .split-content, .detail-layout { grid-template-columns: 1fr; }
  .accommodation-showcase {
    gap: 34px;
    padding-top: 42px;
  }
  .accommodation-feature {
    width: calc(100% - 40px);
    border-radius: 24px;
  }
  .accommodation-feature-media img {
    height: clamp(230px, 48vw, 360px);
    max-height: none;
  }
  .accommodation-feature-copy {
    max-width: none;
    padding: 26px;
  }
  .weather-card {
    grid-template-columns: auto 1fr;
    gap: 12px;
  }
  .weather-data {
    grid-column: 1 / -1;
  }
  .main-paths { margin-top: 0; }
  .path-card { min-height: 180px; }
  .identity-band { gap: 35px; margin-top: 68px; padding-top: 54px; padding-bottom: 54px; }
  .detail-gallery img { max-height: 390px; }
  .food-detail-gallery img:first-child,
  .food-detail-gallery img { height: 260px; }
  .accommodation-detail-hero,
  .accommodation-detail-grid {
    grid-template-columns: 1fr;
  }
  .accommodation-detail-media img {
    min-height: clamp(280px, 56vw, 420px);
    max-height: none;
  }
  .accommodation-detail-content {
    padding: 30px;
  }
  .accommodation-thumbnails {
    display: flex;
    gap: 10px;
    overflow-x: auto;
    padding-bottom: 4px;
    scroll-snap-type: x proximity;
  }
  .accommodation-thumb {
    flex: 0 0 118px;
    height: 82px;
    scroll-snap-align: start;
  }
}
@media (max-width: 560px) {
  .container { width: calc(100% - 32px); }
  .brand-copy small { letter-spacing: .15em; }
  .language-label { display: none; }
  .language-panel { padding: 5px; }
  .language-switch button { padding: 5px; }
  .home-hero { min-height: 610px; }
  .hero-content { padding-top: 68px; }
  .search-box { flex-direction: column; padding: 9px; }
  .search-box input { min-height: 49px; }
  .main-paths { gap: 10px; }
  .section-heading { align-items: start; flex-direction: column; }
  .accommodation-showcase {
    gap: 24px;
    padding-top: 30px;
    padding-bottom: 76px;
  }
  .accommodation-feature {
    width: calc(100% - 28px);
    border-radius: 18px;
    box-shadow: 0 14px 36px rgba(44, 28, 17, .10);
  }
  .accommodation-feature-media {
    border-radius: 0;
  }
  .accommodation-feature-media img {
    height: clamp(170px, 52vw, 245px);
  }
  .accommodation-feature-copy {
    padding: 20px;
  }
  .accommodation-feature-copy h2 {
    font-size: clamp(1.85rem, 9vw, 2.55rem);
  }
  .accommodation-feature-copy p {
    margin: 12px 0 18px;
    font-size: .98rem;
  }
  .accommodation-feature-text-only {
    width: calc(100% - 28px);
  }
  .identity-links { grid-template-columns: 1fr; }
  .weather-card {
    grid-template-columns: 1fr;
    gap: 10px;
    padding: 14px;
  }
  .weather-orb {
    width: 46px;
    height: 46px;
  }
  .weather-data {
    grid-template-columns: 1fr;
  }
  .weather-updated {
    position: static;
    margin-top: 2px;
  }
  .assistant-button { right: 16px; bottom: 16px; }
  .assistant-panel { right: 16px; bottom: 92px; }
  .accommodation-detail-page {
    gap: 24px;
  }
  .accommodation-detail-hero {
    border-radius: 18px;
  }
  .accommodation-detail-media img {
    min-height: 220px;
    height: 235px;
  }
  .accommodation-detail-content {
    padding: 22px;
  }
  .accommodation-detail-content h1 {
    font-size: clamp(2rem, 10vw, 2.75rem);
  }
  .accommodation-detail-summary {
    margin-top: 14px;
    font-size: 1rem;
  }
  .accommodation-detail-description {
    margin-top: 14px;
    font-size: .95rem;
  }
  .accommodation-thumb {
    flex-basis: 104px;
    height: 72px;
    border-radius: 12px;
  }
  .food-detail-gallery { grid-template-columns: 1fr; }
  .food-detail-gallery img:first-child { grid-column: auto; }
  .footer { margin-top: 62px; }
  .footer-bottom { align-items: flex-start; flex-direction: column; }
}

/* ========================== Alojamientos estables - FASE 4A.3 ========================== */
.accommodation-directory {
  display: grid;
  gap: 18px;
}
.accommodation-page-title {
  margin-inline: auto;
  text-align: center;
}
.accommodation-page-title .eyebrow {
  text-transform: uppercase;
  animation: accommodationHeroEyebrow .42s ease-out both;
}
.accommodation-page-title h1 {
  position: relative;
  display: inline-block;
  padding-bottom: 18px;
  text-transform: uppercase;
  animation: accommodationHeroTitle 1s cubic-bezier(.16,.84,.24,1) .34s both;
}
.accommodation-page-title h1::after {
  content: "";
  position: absolute;
  left: 50%;
  bottom: 0;
  width: 120px;
  height: 2px;
  border-radius: 999px;
  background: linear-gradient(90deg, rgba(184,141,60,0), var(--gold), rgba(184,141,60,0));
  transform: translateX(-50%) scaleX(0);
  transform-origin: center;
  animation: accommodationHeroLine .5s ease-out 1.24s both;
}
.accommodation-page-title p:last-child {
  animation: accommodationHeroSubtitle .4s ease-out 1.68s both;
}
.accommodation-list-card {
  display: grid;
  grid-template-columns: 300px minmax(0, 1fr);
  gap: 0;
  overflow: hidden;
  border: 1px solid rgba(231, 223, 209, .95);
  border-radius: 18px;
  background: var(--white);
  box-shadow: 0 12px 34px rgba(44, 28, 17, .08);
}
.accommodation-list-card-no-image {
  grid-template-columns: 1fr;
}
.accommodation-list-media {
  display: block;
  min-height: 100%;
  background: var(--sand);
}
.accommodation-list-media img {
  width: 100%;
  height: 100%;
  min-height: 230px;
  max-height: 260px;
  object-fit: cover;
}
.accommodation-list-content {
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: center;
  padding: 26px 30px;
}
.accommodation-list-content h2 {
  margin-top: 8px;
  color: var(--wine-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.65rem, 2.6vw, 2.55rem);
  font-weight: 500;
  letter-spacing: -.04em;
  line-height: 1.05;
}
.accommodation-list-content p {
  max-width: 720px;
  margin: 12px 0 0;
  color: var(--muted);
  font-size: .98rem;
}
.accommodation-action {
  width: auto;
  max-width: 240px;
  justify-content: center;
  white-space: nowrap;
}
.accommodation-stable-detail {
  display: grid;
  gap: 28px;
}
.accommodation-detail-header {
  max-width: 860px;
}
.accommodation-detail-header h1 {
  color: var(--wine-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.35rem, 5vw, 4.5rem);
  font-weight: 500;
  letter-spacing: -.055em;
  line-height: 1;
}
.accommodation-detail-header p:not(.eyebrow) {
  margin-top: 16px;
  color: var(--river);
  font-size: clamp(1rem, 1.4vw, 1.18rem);
  font-weight: 700;
}
.accommodation-carousel {
  display: flex;
  gap: 14px;
  overflow-x: auto;
  padding: 4px 2px 14px;
  scroll-snap-type: x mandatory;
  scrollbar-width: thin;
}
.accommodation-carousel-item {
  flex: 0 0 min(78vw, 720px);
  overflow: hidden;
  border-radius: 20px;
  background: var(--sand);
  box-shadow: 0 14px 40px rgba(44, 28, 17, .10);
  scroll-snap-align: start;
}
.accommodation-carousel-item img {
  width: 100%;
  height: clamp(300px, 42vw, 430px);
  object-fit: cover;
}
.accommodation-detail-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(300px, .42fr);
  gap: 24px;
  align-items: start;
}
.accommodation-detail-description-card,
.accommodation-contact-card {
  border: 1px solid rgba(231, 223, 209, .95);
  border-radius: 18px;
  background: var(--white);
  box-shadow: 0 12px 34px rgba(44, 28, 17, .07);
}
.accommodation-detail-description-card {
  padding: clamp(26px, 4vw, 42px);
}
.accommodation-contact-card {
  padding: 24px;
}
.accommodation-detail-description-card h2,
.accommodation-contact-card h2 {
  margin-bottom: 14px;
  color: var(--wine-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.45rem;
  font-weight: 500;
}
.accommodation-detail-description-card p {
  color: var(--muted);
}
.accommodation-back-action {
  justify-self: start;
}
@keyframes accommodationTitleReveal {
  from {
    opacity: 0;
    transform: translateY(16px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
@keyframes accommodationHeroEyebrow {
  from { opacity: 0; }
  to { opacity: 1; }
}
@keyframes accommodationHeroTitle {
  from {
    opacity: 0;
    transform: translateX(-120px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
@keyframes accommodationHeroLine {
  from { transform: translateX(-50%) scaleX(0); }
  to { transform: translateX(-50%) scaleX(1); }
}
@keyframes accommodationHeroSubtitle {
  from { opacity: 0; }
  to { opacity: 1; }
}
@media (min-width: 1024px) {
  .accommodation-directory {
    width: min(1320px, calc(100% - 48px));
    grid-template-columns: repeat(2, minmax(0, 1fr));
    gap: 22px 24px;
    align-items: stretch;
  }
  .accommodation-list-card {
    grid-template-columns: 1fr;
    grid-template-rows: auto 1fr;
    height: 100%;
    border-color: rgba(184, 141, 60, .24);
    border-radius: 16px;
    background:
      linear-gradient(145deg, rgba(255,255,255,.98), rgba(244,223,175,.16)),
      var(--white);
    box-shadow:
      inset 1px 0 0 rgba(184, 141, 60, .10),
      0 10px 28px rgba(44, 28, 17, .075);
  }
  .accommodation-list-card.reveal {
    opacity: 0;
    transform: translateX(-80px);
    transition:
      opacity .8s ease,
      transform .8s cubic-bezier(.18,.82,.22,1),
      box-shadow .3s ease,
      border-color .3s ease;
  }
  .accommodation-list-card.reveal:nth-child(even) {
    transform: translateX(80px);
  }
  .accommodation-list-card.reveal.is-visible {
    opacity: 1;
    transform: none;
  }
  .accommodation-list-card.reveal.is-visible:hover {
    border-color: rgba(184, 141, 60, .46);
    box-shadow:
      inset 1px 0 0 rgba(184, 141, 60, .16),
      0 22px 54px rgba(44, 28, 17, .16);
    transform: translateY(-8px);
  }
  .accommodation-list-media {
    min-height: 0;
    overflow: hidden;
  }
  .accommodation-list-media img {
    height: 270px;
    min-height: 270px;
    max-height: 270px;
    transition: transform .3s ease;
  }
  .accommodation-list-card.reveal.is-visible:hover .accommodation-list-media img {
    transform: scale(1.035);
  }
  .accommodation-list-content {
    flex: 1;
    min-height: 0;
    justify-content: flex-start;
    padding: 16px 20px 18px;
  }
  .accommodation-list-content h2 {
    margin-top: 6px;
    font-size: clamp(1.4rem, 1.75vw, 1.95rem);
  }
  .accommodation-list-content p {
    flex: 1;
    margin-top: 8px;
    font-size: .94rem;
    line-height: 1.48;
  }
  .accommodation-action {
    margin-top: 12px;
  }
}
@media (max-width: 880px) {
  .accommodation-list-card {
    grid-template-columns: 1fr;
  }
  .accommodation-list-media img {
    height: clamp(190px, 48vw, 300px);
    min-height: 0;
    max-height: none;
  }
  .accommodation-list-content {
    padding: 22px;
  }
  .accommodation-detail-layout {
    grid-template-columns: 1fr;
  }
  .accommodation-carousel-item {
    flex-basis: min(84vw, 560px);
  }
  .accommodation-carousel-item img {
    height: clamp(240px, 48vw, 340px);
  }
}
@media (max-width: 560px) {
  .accommodation-directory {
    gap: 16px;
    padding-top: 34px;
  }
  .accommodation-list-card {
    border-radius: 16px;
    border-color: rgba(111, 24, 36, .24);
    box-shadow: 0 16px 42px rgba(44, 28, 17, .13);
  }
  .accommodation-list-media img {
    height: clamp(170px, 52vw, 230px);
  }
  .accommodation-list-content {
    padding: 18px;
  }
  .accommodation-list-content h2 {
    font-size: clamp(1.55rem, 8vw, 2.15rem);
  }
  .accommodation-list-content p {
    font-size: .94rem;
  }
  .accommodation-action {
    width: 100%;
    max-width: none;
  }
  .accommodation-stable-detail {
    gap: 22px;
    padding-top: 34px;
  }
  .accommodation-detail-header h1 {
    font-size: clamp(2rem, 10vw, 2.8rem);
  }
  .accommodation-detail-header p:not(.eyebrow) {
    margin-top: 12px;
    font-size: .98rem;
  }
  .accommodation-carousel {
    gap: 10px;
    margin-right: -16px;
    padding-bottom: 10px;
  }
  .accommodation-carousel-item {
    flex-basis: 84%;
    border-radius: 16px;
  }
  .accommodation-carousel-item img {
    height: clamp(185px, 56vw, 235px);
  }
  .accommodation-detail-description-card,
  .accommodation-contact-card {
    border-radius: 16px;
  }
  .accommodation-detail-description-card,
  .accommodation-contact-card {
    padding: 20px;
  }
  .accommodation-back-action {
    justify-self: stretch;
  }
}
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { animation: none !important; transition-duration: .01ms !important; scroll-behavior: auto !important; }
  .reveal { opacity: 1; transform: none; }
}

/* ========================== Detalle alojamientos premium - FASE 4A.4 ========================== */
.accommodation-premium-detail {
  background: linear-gradient(180deg, #171311 0, var(--cream) 430px);
}
.accommodation-premium-hero {
  position: relative;
  display: flex;
  align-items: flex-end;
  min-height: min(58vh, 540px);
  overflow: hidden;
  color: var(--white);
  isolation: isolate;
}
.accommodation-premium-hero::before {
  content: "";
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(90deg, rgba(14, 11, 10, .92) 0%, rgba(14, 11, 10, .72) 38%, rgba(14, 11, 10, .20) 100%),
    linear-gradient(0deg, rgba(14, 11, 10, .92) 0%, rgba(14, 11, 10, .08) 56%);
}
.accommodation-premium-hero-empty {
  background:
    radial-gradient(circle at 76% 18%, rgba(213, 161, 66, .22), transparent 34%),
    linear-gradient(135deg, var(--wine-dark), #161918 72%);
}
.accommodation-premium-hero-image {
  position: absolute;
  inset: 0;
  z-index: -2;
  width: 100%;
  height: 100%;
  object-fit: cover;
  transition: opacity .24s ease, transform .32s ease;
}
.accommodation-premium-hero-content {
  padding-top: clamp(76px, 8vw, 112px);
  padding-bottom: clamp(32px, 5vw, 58px);
}
.accommodation-premium-hero-content h1 {
  max-width: 760px;
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(2.7rem, 6vw, 5.7rem);
  font-weight: 500;
  letter-spacing: -.065em;
  line-height: .95;
}
.accommodation-premium-summary {
  max-width: 620px;
  margin-top: 18px;
  color: rgba(255, 255, 255, .88);
  font-size: clamp(1rem, 1.6vw, 1.25rem);
  font-weight: 600;
}
.accommodation-premium-actions {
  display: flex;
  flex-wrap: wrap;
  gap: 10px;
  margin-top: 22px;
}
.accommodation-premium-actions .button-link {
  margin-top: 0;
}
.accommodation-premium-action-primary {
  background: var(--gold);
  color: var(--wine-dark);
}
.accommodation-premium-action-secondary {
  border: 1px solid rgba(255, 255, 255, .36);
  background: rgba(255, 255, 255, .14);
  color: var(--white);
  backdrop-filter: blur(10px);
}
.accommodation-premium-body {
  display: grid;
  gap: 18px;
  padding-top: 18px;
  padding-bottom: 72px;
}
.accommodation-premium-gallery {
  display: flex;
  gap: 12px;
  overflow-x: auto;
  padding: 2px 2px 14px;
  scroll-snap-type: x proximity;
  scrollbar-width: thin;
}
.accommodation-premium-thumb {
  flex: 0 0 160px;
  height: 96px;
  overflow: hidden;
  border: 2px solid transparent;
  border-radius: 14px;
  background: var(--sand);
  box-shadow: 0 12px 28px rgba(16, 13, 11, .18);
  scroll-snap-align: start;
  transition: border-color .2s ease, transform .2s ease, opacity .2s ease;
}
.accommodation-premium-thumb:hover,
.accommodation-premium-thumb:focus-visible {
  border-color: var(--gold);
  outline: none;
}
.accommodation-premium-thumb:hover,
.accommodation-premium-thumb:focus-visible {
  transform: translateY(-2px);
}
.accommodation-premium-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.accommodation-premium-grid {
  display: grid;
  grid-template-columns: minmax(0, .98fr) minmax(320px, .48fr);
  gap: 18px;
  align-items: start;
}
.accommodation-premium-card {
  padding: clamp(22px, 3vw, 34px);
  border: 1px solid rgba(231, 223, 209, .94);
  border-radius: 20px;
  background: rgba(255, 255, 255, .96);
  box-shadow: 0 16px 42px rgba(44, 28, 17, .08);
}
.accommodation-premium-card h2 {
  margin-bottom: 14px;
  color: var(--wine-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.55rem;
  font-weight: 500;
}
.accommodation-premium-card p {
  color: var(--muted);
}
.accommodation-premium-facts {
  padding: 22px;
  background:
    linear-gradient(145deg, rgba(255,255,255,.98), rgba(244,223,175,.22));
}
.accommodation-premium-facts .info-row a,
.accommodation-premium-facts .info-row strong {
  overflow-wrap: anywhere;
}
.accommodation-premium-facts .empty-value {
  color: var(--muted);
  font-weight: 700;
}
.accommodation-premium-facts .fact-action {
  display: inline-flex;
  width: fit-content;
  max-width: 100%;
  padding: 10px 13px;
  border-radius: 11px;
  background: var(--gold);
  color: var(--wine-dark);
  font-size: .9rem;
  font-weight: 800;
  text-align: center;
}
.accommodation-fact-cards {
  display: grid;
  gap: 12px;
  width: min(100%, 330px);
  margin-inline: auto;
  padding: 2px;
  transition: all 200ms ease-in-out;
}
.accommodation-fact-card {
  --fact-accent: var(--wine);
  position: relative;
  display: grid;
  grid-template-columns: auto minmax(0, 1fr) auto;
  gap: 12px;
  align-items: center;
  min-height: 64px;
  padding: 12px 15px;
  border: 1px solid color-mix(in srgb, var(--fact-accent) 24%, transparent);
  border-radius: 12px;
  background:
    linear-gradient(135deg, color-mix(in srgb, var(--fact-accent) 16%, var(--white)), rgba(255,255,255,.96));
  color: var(--wine-dark);
  box-shadow: 0 8px 20px rgba(44, 28, 17, .07);
  cursor: pointer;
  transition: transform 200ms ease-in-out, box-shadow 200ms ease-in-out, border-color 200ms ease-in-out, opacity 200ms ease-in-out, filter 200ms ease-in-out;
}
.accommodation-fact-card:nth-child(3n) {
  --fact-accent: var(--river);
}
.accommodation-fact-card:nth-child(3n + 2) {
  --fact-accent: var(--gold);
}
.accommodation-fact-card:hover,
.accommodation-fact-card:focus-visible {
  z-index: 3;
  border-color: color-mix(in srgb, var(--fact-accent) 72%, var(--gold));
  box-shadow: 0 20px 44px rgba(44, 28, 17, .18);
  outline: none;
  transform: scale(1.085);
}
.accommodation-fact-cards:hover > .accommodation-fact-card:not(:hover):not(:focus-visible) {
  filter: blur(2.3px);
  opacity: .56;
}
.accommodation-fact-card.is-disabled {
  cursor: default;
  opacity: .66;
  background: rgba(255, 255, 255, .68);
}
.accommodation-fact-card.is-disabled:hover {
  border-color: color-mix(in srgb, var(--fact-accent) 24%, transparent);
  box-shadow: 0 8px 22px rgba(44, 28, 17, .06);
  filter: none;
  transform: none;
}
.accommodation-fact-icon {
  display: grid;
  place-items: center;
  width: 36px;
  height: 36px;
  border-radius: 11px;
  background: var(--fact-accent);
  color: var(--white);
  font-size: 1.05rem;
  line-height: 1;
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.18);
}
.accommodation-fact-card:nth-child(3n + 2) .accommodation-fact-icon {
  color: var(--wine-dark);
}
.accommodation-fact-label {
  min-width: 0;
  color: var(--wine-dark);
  font-size: .94rem;
  font-weight: 800;
}
.accommodation-fact-value {
  max-width: 160px;
  color: var(--river);
  font-size: .86rem;
  font-weight: 800;
  text-align: right;
  overflow-wrap: anywhere;
}
.accommodation-fact-card:hover .accommodation-fact-value,
.accommodation-fact-card:focus-visible .accommodation-fact-value {
  color: var(--wine-dark);
}
.accommodation-fact-card.is-disabled .accommodation-fact-value {
  color: var(--muted);
}
.accommodation-lightbox {
  position: fixed;
  inset: 0;
  z-index: 80;
  display: grid;
  place-items: center;
  padding: 24px;
  background: rgba(12, 10, 9, .88);
  backdrop-filter: blur(8px);
}
.accommodation-lightbox[hidden] {
  display: none;
}
.accommodation-lightbox img {
  width: min(1040px, 100%);
  max-height: 86vh;
  object-fit: contain;
  border-radius: 18px;
  box-shadow: 0 28px 90px rgba(0, 0, 0, .45);
}
.accommodation-lightbox-frame {
  display: grid;
  justify-items: center;
  gap: 12px;
  width: min(1040px, 100%);
}
.accommodation-lightbox-frame img {
  transition: opacity .18s ease, transform .18s ease;
}
.accommodation-lightbox-frame img.is-changing {
  opacity: .35;
  transform: scale(.992);
}
.accommodation-lightbox-frame figcaption {
  color: rgba(255, 255, 255, .86);
  font-size: .9rem;
  font-weight: 700;
}
.accommodation-lightbox-close {
  position: fixed;
  top: 18px;
  right: 18px;
  display: grid;
  place-items: center;
  width: 44px;
  height: 44px;
  border: 1px solid rgba(255, 255, 255, .35);
  border-radius: 999px;
  background: rgba(255, 255, 255, .14);
  color: var(--white);
  font-size: 1.7rem;
  line-height: 1;
  backdrop-filter: blur(8px);
}
.accommodation-lightbox-nav {
  position: fixed;
  top: 50%;
  z-index: 1;
  display: grid;
  place-items: center;
  width: 50px;
  height: 50px;
  border: 1px solid rgba(255, 255, 255, .32);
  border-radius: 999px;
  background: rgba(255, 255, 255, .14);
  color: var(--white);
  font-size: 2.2rem;
  line-height: 1;
  transform: translateY(-50%);
  backdrop-filter: blur(8px);
}
.accommodation-lightbox-prev { left: 18px; }
.accommodation-lightbox-next { right: 18px; }
.accommodation-lightbox-thumbs {
  position: fixed;
  right: 24px;
  bottom: 18px;
  left: 24px;
  display: flex;
  justify-content: center;
  gap: 8px;
  overflow-x: auto;
  padding: 4px 0 8px;
}
.accommodation-lightbox-thumb {
  flex: 0 0 72px;
  height: 48px;
  overflow: hidden;
  border: 2px solid transparent;
  border-radius: 9px;
  background: rgba(255, 255, 255, .12);
  opacity: .72;
}
.accommodation-lightbox-thumb.is-active,
.accommodation-lightbox-thumb:hover,
.accommodation-lightbox-thumb:focus-visible {
  border-color: var(--gold);
  opacity: 1;
  outline: none;
}
.accommodation-lightbox-thumb img {
  width: 100%;
  height: 100%;
  object-fit: cover;
  border-radius: 0;
  box-shadow: none;
}
.lightbox-open {
  overflow: hidden;
}
@media (max-width: 880px) {
  .accommodation-premium-hero {
    min-height: 460px;
  }
  .accommodation-premium-grid {
    grid-template-columns: 1fr;
  }
  .accommodation-premium-thumb {
    flex-basis: 152px;
    height: 98px;
  }
}
@media (max-width: 560px) {
  .accommodation-premium-detail {
    background: linear-gradient(180deg, #171311 0, var(--cream) 410px);
  }
  .accommodation-premium-hero {
    min-height: 390px;
  }
  .accommodation-premium-hero::before {
    background:
      linear-gradient(0deg, rgba(14, 11, 10, .92) 0%, rgba(14, 11, 10, .48) 58%, rgba(14, 11, 10, .18) 100%);
  }
  .accommodation-premium-hero-content {
    padding-top: 96px;
    padding-bottom: 30px;
  }
  .accommodation-premium-hero-content h1 {
    font-size: clamp(2.05rem, 11vw, 3.25rem);
  }
  .accommodation-premium-summary {
    margin-top: 12px;
    font-size: .98rem;
  }
  .accommodation-premium-actions {
    display: grid;
    gap: 8px;
    margin-top: 20px;
  }
  .accommodation-premium-actions .button-link {
    width: 100%;
    justify-content: center;
    padding-right: 16px;
    padding-left: 16px;
    white-space: normal;
    text-align: center;
  }
  .accommodation-premium-body {
    gap: 20px;
    padding-top: 18px;
    padding-bottom: 70px;
  }
  .accommodation-premium-gallery {
    gap: 10px;
    margin-right: -16px;
    padding-bottom: 10px;
  }
  .accommodation-premium-thumb {
    flex-basis: 132px;
    height: 86px;
    border-radius: 12px;
  }
  .accommodation-premium-card,
  .accommodation-premium-facts {
    padding: 20px;
    border-radius: 16px;
  }
  .accommodation-fact-cards:hover > .accommodation-fact-card:not(:hover):not(:focus-visible) {
    filter: none;
    opacity: 1;
  }
  .accommodation-fact-card {
    min-height: 56px;
    padding: 10px 11px;
  }
  .accommodation-fact-card:hover,
  .accommodation-fact-card:focus-visible {
    box-shadow: 0 12px 26px rgba(44, 28, 17, .10);
    transform: scale(1.01);
  }
  .accommodation-fact-card:active {
    transform: scale(.99);
  }
  .accommodation-fact-value {
    max-width: 126px;
  }
  .accommodation-lightbox {
    padding: 14px;
  }
  .accommodation-lightbox img {
    max-height: 78vh;
    border-radius: 14px;
  }
  .accommodation-lightbox-close {
    top: 12px;
    right: 12px;
  }
  .accommodation-lightbox-nav {
    width: 42px;
    height: 42px;
    font-size: 1.8rem;
  }
  .accommodation-lightbox-prev { left: 10px; }
  .accommodation-lightbox-next { right: 10px; }
  .accommodation-lightbox-frame {
    gap: 9px;
  }
  .accommodation-lightbox-frame figcaption {
    font-size: .82rem;
  }
  .accommodation-lightbox-thumbs {
    justify-content: flex-start;
    right: 12px;
    bottom: 10px;
    left: 12px;
  }
  .accommodation-lightbox-thumb {
    flex-basis: 58px;
    height: 40px;
  }
}

/* ========================== Detalle atractivos turisticos premium ========================== */
.tourist-attraction-premium-detail {
  background:
    linear-gradient(180deg, #141512 0, var(--cream) 430px),
    var(--cream);
}
.tourist-attraction-hero {
  min-height: min(64vh, 620px);
  background:
    radial-gradient(circle at 78% 22%, rgba(102, 132, 85, .28), transparent 32%),
    linear-gradient(135deg, #161a15, #231713 72%);
}
.tourist-attraction-hero::before {
  background:
    linear-gradient(90deg, rgba(12, 15, 12, .90) 0%, rgba(18, 20, 15, .70) 42%, rgba(18, 20, 15, .20) 100%),
    linear-gradient(0deg, rgba(12, 13, 11, .94) 0%, rgba(12, 13, 11, .14) 58%);
}
.tourist-attraction-hero .accommodation-premium-hero-image {
  filter: saturate(.94) contrast(1.03);
}
.tourist-attraction-hero-content .eyebrow {
  color: rgba(244, 223, 175, .94);
  letter-spacing: .19em;
}
.tourist-attraction-body {
  gap: clamp(26px, 4vw, 42px);
  padding-top: clamp(30px, 4vw, 54px);
}
.tourist-attraction-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(300px, 380px);
  gap: clamp(24px, 4vw, 46px);
  align-items: start;
}
.tourist-attraction-description {
  max-width: 760px;
}
.tourist-attraction-description h2,
.tourist-attraction-visitor-card h2,
.tourist-attraction-gallery-heading h2 {
  margin: 0;
  color: var(--wine-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.7rem, 3vw, 2.45rem);
  font-weight: 500;
  line-height: 1.08;
}
.tourist-attraction-description p:not(.tourist-attraction-section-kicker) {
  margin-top: 18px;
  color: color-mix(in srgb, var(--muted) 82%, #1d261c);
  font-size: clamp(1.02rem, 1.45vw, 1.16rem);
  line-height: 1.86;
}
.tourist-attraction-section-kicker {
  margin: 0 0 8px;
  color: var(--gold-dark);
  font-size: .78rem;
  font-weight: 900;
  letter-spacing: .16em;
  text-transform: uppercase;
}
.tourist-attraction-visitor-card {
  position: sticky;
  top: 112px;
  padding: clamp(22px, 3vw, 30px);
  border: 1px solid rgba(184, 141, 60, .30);
  border-radius: 20px;
  background:
    radial-gradient(circle at top right, rgba(102, 132, 85, .16), transparent 38%),
    linear-gradient(145deg, rgba(255,255,255,.94), rgba(244,223,175,.28));
  box-shadow: 0 20px 48px rgba(44, 28, 17, .12);
}
.tourist-attraction-visitor-card h2 {
  max-width: 260px;
  font-size: clamp(1.35rem, 2.2vw, 1.75rem);
}
.tourist-attraction-visitor-list {
  display: grid;
  gap: 12px;
  margin-top: 20px;
}
.tourist-attraction-visitor-row {
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: 12px;
  align-items: center;
  padding: 12px 0;
  border-bottom: 1px solid rgba(184, 141, 60, .18);
  color: var(--wine-dark);
}
.tourist-attraction-visitor-row:last-child {
  border-bottom: 0;
}
a.tourist-attraction-visitor-row:hover,
a.tourist-attraction-visitor-row:focus-visible {
  color: var(--river);
  outline: none;
}
.tourist-attraction-visitor-icon {
  display: grid;
  place-items: center;
  width: 38px;
  height: 38px;
  border-radius: 12px;
  background: rgba(102, 132, 85, .14);
  color: var(--river);
}
.tourist-attraction-visitor-icon svg {
  width: 20px;
  height: 20px;
  fill: none;
  stroke: currentColor;
  stroke-width: 1.9;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.tourist-attraction-visitor-label,
.tourist-attraction-visitor-value {
  display: block;
}
.tourist-attraction-visitor-label {
  color: var(--muted);
  font-size: .78rem;
  font-weight: 850;
  letter-spacing: .08em;
  text-transform: uppercase;
}
.tourist-attraction-visitor-value {
  margin-top: 3px;
  color: currentColor;
  font-size: .98rem;
  font-weight: 760;
  line-height: 1.35;
  overflow-wrap: anywhere;
}
.tourist-attraction-gallery-section {
  display: grid;
  gap: 16px;
}
.tourist-attraction-gallery-heading {
  display: grid;
  gap: 4px;
}
.tourist-attraction-gallery {
  padding-bottom: 16px;
}
.tourist-attraction-thumb {
  flex-basis: clamp(190px, 22vw, 260px);
  height: clamp(124px, 15vw, 172px);
  border-radius: 18px;
}
@media (max-width: 880px) {
  .tourist-attraction-layout {
    grid-template-columns: 1fr;
  }
  .tourist-attraction-visitor-card {
    position: static;
  }
}
@media (max-width: 560px) {
  .tourist-attraction-premium-detail {
    background: linear-gradient(180deg, #141512 0, var(--cream) 410px);
  }
  .tourist-attraction-hero {
    min-height: 420px;
  }
  .tourist-attraction-body {
    padding-top: 28px;
  }
  .tourist-attraction-description p:not(.tourist-attraction-section-kicker) {
    line-height: 1.72;
  }
  .tourist-attraction-visitor-card {
    padding: 20px;
    border-radius: 16px;
  }
  .tourist-attraction-thumb {
    flex-basis: 150px;
    height: 98px;
    border-radius: 13px;
  }
}

/* ========================== Detalle eventos premium ========================== */
.tourism-event-premium-detail {
  background:
    linear-gradient(180deg, #171110 0, var(--cream) 430px),
    var(--cream);
}
.tourism-event-hero {
  min-height: min(62vh, 600px);
  background:
    radial-gradient(circle at 76% 18%, rgba(213, 161, 66, .24), transparent 34%),
    linear-gradient(135deg, #1b1411, #231713 72%);
}
.tourism-event-hero::before {
  background:
    linear-gradient(90deg, rgba(17, 12, 10, .92) 0%, rgba(31, 19, 14, .72) 42%, rgba(31, 19, 14, .22) 100%),
    linear-gradient(0deg, rgba(17, 12, 10, .94) 0%, rgba(17, 12, 10, .12) 58%);
}
.tourism-event-hero .accommodation-premium-hero-image {
  filter: saturate(.96) contrast(1.04);
}
.tourism-event-hero-content .eyebrow {
  color: rgba(244, 223, 175, .94);
  letter-spacing: .19em;
}
.tourism-event-body {
  gap: clamp(26px, 4vw, 42px);
  padding-top: clamp(30px, 4vw, 54px);
}
.tourism-event-gallery-section {
  display: grid;
  gap: 16px;
}
.tourism-event-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(300px, 380px);
  gap: clamp(24px, 4vw, 46px);
  align-items: start;
}
.tourism-event-info-card {
  background:
    radial-gradient(circle at top right, rgba(213, 161, 66, .18), transparent 38%),
    linear-gradient(145deg, rgba(255,255,255,.94), rgba(244,223,175,.30));
}
.tourism-event-info-card .tourist-attraction-visitor-icon {
  background: rgba(213, 161, 66, .16);
  color: var(--gold-dark);
}
.tourism-event-return {
  display: flex;
  justify-content: center;
}
.tourism-event-return .button-link {
  margin-top: 0;
}
@media (max-width: 880px) {
  .tourism-event-layout {
    grid-template-columns: 1fr;
  }
}
@media (max-width: 560px) {
  .tourism-event-premium-detail {
    background: linear-gradient(180deg, #171110 0, var(--cream) 410px);
  }
  .tourism-event-hero {
    min-height: 420px;
  }
  .tourism-event-body {
    padding-top: 28px;
  }
}

/* ========================== Datos utiles compactos - FASE 4A.15 revert ========================== */
.accommodation-premium-grid {
  grid-template-columns: minmax(0, .9fr) minmax(340px, .54fr);
  gap: 16px;
  align-items: start;
}
.accommodation-premium-facts {
  align-self: start;
  padding: 18px;
  border-color: rgba(184, 141, 60, .26);
  background:
    linear-gradient(145deg, rgba(255,255,255,.96), rgba(244,223,175,.20)),
    var(--white);
  box-shadow: 0 14px 34px rgba(44, 28, 17, .09);
}
.accommodation-premium-facts h2 {
  margin-bottom: 10px;
  font-size: 1.34rem;
}
.accommodation-fact-cards {
  width: 100%;
  gap: 7px;
  padding: 0;
}
.accommodation-fact-card {
  grid-template-columns: auto minmax(0, 1fr) minmax(78px, auto);
  gap: 9px;
  min-height: 44px;
  padding: 8px 10px;
  border-color: rgba(184, 141, 60, .18);
  border-radius: 10px;
  background: rgba(255, 255, 255, .70);
  box-shadow: none;
  transition: transform .2s ease, box-shadow .2s ease, border-color .2s ease, background .2s ease;
}
.accommodation-fact-card:hover,
.accommodation-fact-card:focus-visible {
  border-color: rgba(184, 141, 60, .42);
  background: rgba(255, 255, 255, .92);
  box-shadow: 0 10px 24px rgba(44, 28, 17, .10);
  outline: none;
  transform: translateY(-2px);
}
.accommodation-fact-cards:hover > .accommodation-fact-card:not(:hover):not(:focus-visible) {
  filter: none;
  opacity: 1;
}
.accommodation-fact-card.is-disabled {
  opacity: .76;
}
.accommodation-fact-card.is-disabled:hover {
  box-shadow: none;
  transform: none;
}
.accommodation-fact-icon {
  width: 24px;
  height: 24px;
  border-radius: 0;
  background: transparent;
  color: inherit;
  font-size: .95rem;
  box-shadow: none;
}
.accommodation-fact-card:nth-child(3n + 2) .accommodation-fact-icon {
  color: inherit;
}
.accommodation-fact-label {
  font-size: .86rem;
}
.accommodation-fact-value {
  max-width: 132px;
  font-size: .8rem;
  line-height: 1.25;
}
@media (max-width: 880px) {
  .accommodation-premium-grid {
    grid-template-columns: 1fr;
  }
  .accommodation-premium-facts {
    padding: 18px;
  }
}

/* ========================== Datos utiles como ficha textual - FASE 4A.16 ========================== */
.accommodation-premium-grid {
  width: min(100%, 920px);
  margin-inline: auto;
  grid-template-columns: 1fr;
  gap: 14px;
}
.accommodation-premium-card {
  border-color: rgba(184, 141, 60, .22);
  background:
    linear-gradient(145deg, rgba(255,255,255,.98), rgba(244,223,175,.14)),
    var(--white);
  box-shadow: 0 14px 34px rgba(44, 28, 17, .08);
}
.accommodation-premium-facts {
  padding: clamp(20px, 3vw, 28px);
  border-radius: 18px;
  background:
    linear-gradient(145deg, rgba(255,255,255,.98), rgba(244,223,175,.20)),
    var(--white);
}
.accommodation-premium-facts h2 {
  margin-bottom: 16px;
}
.accommodation-fact-cards {
  width: 100%;
  gap: 0;
  padding: 0;
}
.accommodation-fact-card {
  display: grid;
  grid-template-columns: 28px minmax(0, 1fr);
  gap: 3px 12px;
  min-height: 0;
  padding: 13px 0;
  border: 0;
  border-bottom: 1px solid rgba(184, 141, 60, .18);
  border-radius: 0;
  background: transparent;
  box-shadow: none;
  color: var(--wine-dark);
  cursor: default;
  text-decoration: none;
  transition: color .2s ease;
}
.accommodation-fact-card:last-child {
  border-bottom: 0;
}
a.accommodation-fact-card {
  cursor: pointer;
}
.accommodation-fact-card:hover,
.accommodation-fact-card:focus-visible {
  border-color: rgba(184, 141, 60, .18);
  background: transparent;
  box-shadow: none;
  outline: none;
  transform: none;
}
.accommodation-fact-cards:hover > .accommodation-fact-card:not(:hover):not(:focus-visible) {
  filter: none;
  opacity: 1;
}
.accommodation-fact-icon {
  grid-row: 1 / span 2;
  width: 24px;
  height: 24px;
  align-self: start;
  border-radius: 0;
  background: transparent;
  color: var(--gold);
  font-size: 1rem;
  box-shadow: none;
}
.accommodation-fact-card:nth-child(3n + 2) .accommodation-fact-icon {
  color: var(--gold);
}
.accommodation-fact-label {
  color: var(--wine-dark);
  font-size: .82rem;
  font-weight: 800;
  letter-spacing: .01em;
}
.accommodation-fact-value {
  grid-column: 2;
  max-width: none;
  color: var(--muted);
  font-size: .95rem;
  font-weight: 600;
  line-height: 1.45;
  text-align: left;
  overflow-wrap: anywhere;
}
a.accommodation-fact-card .accommodation-fact-value {
  color: var(--river);
}
a.accommodation-fact-card:hover .accommodation-fact-value,
a.accommodation-fact-card:focus-visible .accommodation-fact-value {
  color: var(--wine);
  text-decoration: underline;
  text-decoration-color: rgba(111, 24, 36, .35);
  text-underline-offset: 4px;
}
.accommodation-fact-card.is-disabled {
  opacity: 1;
}
.accommodation-fact-card.is-disabled .accommodation-fact-value {
  color: var(--muted);
}
@media (max-width: 560px) {
  .accommodation-premium-grid {
    width: 100%;
    gap: 12px;
  }
  .accommodation-premium-facts {
    padding: 20px;
  }
  .accommodation-fact-card {
    padding: 12px 0;
  }
  .accommodation-fact-value {
    font-size: .92rem;
  }
}

/* ========================== Ajustes mapa, galeria e iconos contacto ========================== */
.accommodation-premium-gallery {
  justify-content: center;
}
@supports (justify-content: safe center) {
  .accommodation-premium-gallery {
    justify-content: safe center;
  }
}
.accommodation-premium-facts {
  width: min(100%, 1080px);
  margin-inline: auto;
}
.accommodation-facts-layout {
  display: grid;
  grid-template-columns: minmax(280px, .9fr) minmax(360px, 1.1fr);
  gap: 16px;
  align-items: stretch;
}
.accommodation-fact-icon svg {
  display: block;
  width: 19px;
  height: 19px;
  stroke: currentColor;
  stroke-width: 1.8;
  fill: none;
  stroke-linecap: round;
  stroke-linejoin: round;
}
.accommodation-fact-icon svg circle,
.accommodation-fact-icon svg rect {
  fill: none;
}
.accommodation-map-panel {
  display: grid;
  min-height: 320px;
}
.accommodation-map-frame,
.accommodation-map-placeholder {
  width: 100%;
  min-height: 320px;
  height: 100%;
  overflow: hidden;
  border: 1px solid rgba(184, 141, 60, .22);
  border-radius: 16px;
  background:
    linear-gradient(145deg, rgba(244,223,175,.28), rgba(255,255,255,.92)),
    var(--sand);
  box-shadow: inset 0 0 0 1px rgba(255,255,255,.35);
}
.accommodation-map-frame {
  display: block;
}
.accommodation-map-placeholder {
  display: grid;
  place-items: center;
  align-content: center;
  gap: 12px;
  padding: 26px;
  color: var(--muted);
  text-align: center;
}
.accommodation-map-placeholder strong {
  color: var(--wine-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.3rem, 2vw, 1.75rem);
  font-weight: 500;
}
.accommodation-map-placeholder p {
  max-width: 420px;
  margin: 0;
  color: var(--muted);
  font-size: .98rem;
}
.accommodation-map-placeholder svg {
  width: 42px;
  height: 42px;
  stroke: var(--gold);
  stroke-width: 1.8;
  fill: none;
}
.accommodation-map-link {
  display: inline-flex;
  justify-self: center;
  align-items: center;
  width: fit-content;
  color: var(--river);
  font-size: .9rem;
  font-weight: 800;
  text-decoration: none;
  transition: color .2s ease;
}
.accommodation-map-link:hover,
.accommodation-map-link:focus-visible {
  color: var(--wine);
  text-decoration: underline;
  text-decoration-color: rgba(111, 24, 36, .35);
  text-underline-offset: 4px;
}
@media (max-width: 880px) {
  .accommodation-facts-layout {
    grid-template-columns: 1fr;
  }
  .accommodation-map-panel,
  .accommodation-map-frame,
  .accommodation-map-placeholder {
    min-height: 240px;
  }
}

/* ========================== Datos utiles sin mapa - ajuste final ========================== */
.accommodation-premium-grid {
  width: min(100%, 700px);
  gap: 12px;
}
.accommodation-premium-facts {
  width: min(100%, 680px);
  padding: clamp(18px, 2.4vw, 24px);
  border-color: rgba(184, 141, 60, .20);
  border-radius: 18px;
  background:
    linear-gradient(145deg, rgba(255,255,255,.98), rgba(244,223,175,.16)),
    var(--white);
  box-shadow: 0 12px 30px rgba(44, 28, 17, .075);
}
.accommodation-premium-facts h2 {
  margin-bottom: 10px;
  font-size: 1.32rem;
}
.accommodation-facts-layout {
  display: block;
}
.accommodation-fact-cards {
  gap: 0;
}
.accommodation-fact-card {
  grid-template-columns: 26px minmax(108px, .30fr) minmax(0, 1fr);
  gap: 8px 12px;
  padding: 9px 0;
  border-bottom: 1px solid rgba(184, 141, 60, .14);
}
.accommodation-fact-card:last-child {
  border-bottom: 0;
}
.accommodation-fact-icon {
  grid-row: auto;
  width: 20px;
  height: 20px;
  align-self: center;
}
.accommodation-fact-icon svg {
  width: 18px;
  height: 18px;
}
.accommodation-fact-label {
  align-self: center;
  font-size: .83rem;
}
.accommodation-fact-value {
  grid-column: auto;
  align-self: center;
  font-size: .9rem;
  line-height: 1.35;
}
.accommodation-map-panel,
.accommodation-map-frame,
.accommodation-map-placeholder,
.accommodation-map-link {
  display: none;
}
@media (max-width: 560px) {
  .accommodation-premium-grid,
  .accommodation-premium-facts {
    width: 100%;
  }
  .accommodation-fact-card {
    grid-template-columns: 24px minmax(0, 1fr);
    gap: 4px 10px;
    padding: 10px 0;
  }
  .accommodation-fact-icon {
    grid-row: 1 / span 2;
  }
  .accommodation-fact-value {
    grid-column: 2;
  }
}

/* ========================== Detalle gastronomia premium ========================== */
.restaurant-premium-detail .accommodation-premium-hero {
  min-height: clamp(430px, 50vh, 480px);
  background: #171311;
}
.restaurant-premium-detail .accommodation-premium-hero::before {
  background:
    linear-gradient(90deg, rgba(14, 11, 10, .94) 0%, rgba(14, 11, 10, .78) 42%, rgba(14, 11, 10, .44) 100%),
    linear-gradient(0deg, rgba(14, 11, 10, .94) 0%, rgba(14, 11, 10, .32) 58%, rgba(14, 11, 10, .52) 100%);
}
.restaurant-premium-hero-backdrop {
  position: absolute;
  inset: -18px;
  z-index: -3;
  width: calc(100% + 36px);
  height: calc(100% + 36px);
  object-fit: cover;
  object-position: center center;
  filter: blur(18px) saturate(.9);
  opacity: .56;
  transform: none;
}
.restaurant-premium-detail .accommodation-premium-hero-image {
  object-fit: contain;
  object-position: center center;
  transform: none !important;
  transition: opacity .24s ease;
}
.restaurant-premium-detail .accommodation-premium-hero-content {
  padding-top: clamp(86px, 8vw, 116px);
  padding-bottom: clamp(36px, 4.6vw, 58px);
}
.restaurant-premium-detail .accommodation-premium-hero-content h1 {
  font-size: clamp(2.35rem, 5vw, 4.8rem);
  letter-spacing: -.045em;
}
.restaurant-detail-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(280px, 340px);
  align-items: start;
  gap: clamp(18px, 3vw, 30px);
  width: min(100%, 980px);
  margin: 0 auto;
}
.restaurant-detail-main {
  display: grid;
  gap: 12px;
}
.restaurant-detail-layout > .accommodation-premium-facts {
  grid-column: 1;
  justify-self: stretch;
  width: 100%;
}
.restaurant-specialties ul {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 10px 28px;
  margin: 0;
  padding: 0;
  list-style: none;
}
.restaurant-specialties li {
  position: relative;
  padding-left: 18px;
  color: var(--muted);
  font-weight: 650;
  line-height: 1.45;
}
.restaurant-specialties li::before {
  content: "";
  position: absolute;
  top: .68em;
  left: 0;
  width: 6px;
  height: 6px;
  border-radius: 999px;
  background: var(--gold);
  transform: translateY(-50%);
}
.restaurant-hours-shell {
  position: sticky;
  top: 120px;
  align-self: start;
  min-height: 240px;
  perspective: 1100px;
  z-index: 2;
  animation: restaurantHoursEntrance .85s cubic-bezier(.18, .82, .22, 1) both;
}
.restaurant-hours-flip {
  position: relative;
  min-height: 240px;
  transform-style: preserve-3d;
  transition: transform .75s cubic-bezier(.2, .72, .2, 1);
  outline: none;
  cursor: pointer;
}
.restaurant-hours-shell:hover .restaurant-hours-flip,
.restaurant-hours-flip:focus-visible,
.restaurant-hours-flip.is-flipped,
.restaurant-hours-shell .restaurant-hours-flip.is-flipped {
  transform: rotateY(179.9deg);
}
.restaurant-hours-face {
  position: absolute;
  inset: 0;
  display: grid;
  align-content: center;
  gap: 10px;
  min-height: 240px;
  padding: 26px;
  border: 1px solid rgba(184, 141, 60, .58);
  border-radius: 22px;
  background:
    linear-gradient(120deg, rgba(255,255,255,0) 0%, rgba(255,255,255,.42) 46%, rgba(255,255,255,0) 74%) -160% 0 / 72% 100% no-repeat,
    radial-gradient(circle at top left, rgba(213, 161, 66, .36), transparent 36%),
    linear-gradient(145deg, rgba(255,255,255,.99), rgba(244,223,175,.44));
  box-shadow:
    0 24px 58px rgba(44, 28, 17, .22),
    0 0 0 1px rgba(255,255,255,.52) inset,
    0 0 30px rgba(184, 141, 60, .12);
  backface-visibility: hidden;
}
.restaurant-hours-shell:hover .restaurant-hours-face {
  background-position: 180% 0, center, center;
  transition: background-position .9s ease, box-shadow .25s ease, border-color .25s ease;
  box-shadow:
    0 28px 68px rgba(44, 28, 17, .26),
    0 0 0 1px rgba(255,255,255,.58) inset,
    0 0 34px rgba(184, 141, 60, .16);
}
.restaurant-hours-front {
  text-align: center;
}
.restaurant-hours-back {
  transform: rotateY(180deg);
}
.restaurant-hours-eyebrow {
  margin: 0;
  color: var(--gold-dark);
  font-size: .78rem;
  font-weight: 900;
  letter-spacing: .14em;
  text-transform: uppercase;
}
.restaurant-hours-status {
  color: var(--wine-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: clamp(1.75rem, 3vw, 2.35rem);
  font-weight: 500;
  line-height: 1.05;
  text-shadow: 0 1px 0 rgba(255,255,255,.45);
}
.restaurant-hours-status.is-open {
  color: var(--river);
}
.restaurant-hours-status.is-closed {
  color: var(--wine);
}
.restaurant-hours-status.is-unknown {
  color: var(--wine-dark);
}
.restaurant-hours-front span {
  color: var(--wine);
  font-size: .94rem;
  font-weight: 750;
}
@keyframes restaurantHoursEntrance {
  from {
    opacity: 0;
    transform: translateY(18px);
  }
  to {
    opacity: 1;
    transform: none;
  }
}
.restaurant-hours-back h2 {
  margin: 0;
  color: var(--wine-dark);
  font-family: Georgia, "Times New Roman", serif;
  font-size: 1.35rem;
  font-weight: 500;
}
.restaurant-hours-back p {
  margin: 0;
  color: var(--text);
  line-height: 1.55;
}
.restaurant-hours-list {
  display: grid;
  gap: 10px;
  margin: 0;
}
.restaurant-hours-list div {
  display: grid;
  gap: 3px;
  padding-bottom: 9px;
  border-bottom: 1px solid rgba(184, 141, 60, .15);
}
.restaurant-hours-list div:last-child {
  padding-bottom: 0;
  border-bottom: 0;
}
.restaurant-hours-list dt {
  color: var(--wine-dark);
  font-weight: 850;
}
.restaurant-hours-list dd {
  margin: 0;
  color: var(--muted);
}
@media (prefers-reduced-motion: reduce) {
  .restaurant-hours-flip {
    transition: none;
  }
  .restaurant-hours-shell:hover .restaurant-hours-flip,
  .restaurant-hours-flip:focus-visible,
  .restaurant-hours-flip.is-flipped {
    transform: none;
  }
}
@media (max-width: 820px) {
  .restaurant-detail-layout {
    grid-template-columns: 1fr;
    width: 100%;
  }
  .restaurant-hours-shell {
    position: static;
    min-height: 210px;
    perspective: 1000px;
  }
  .restaurant-hours-flip {
    min-height: 210px;
  }
  .restaurant-hours-shell:hover .restaurant-hours-flip,
  .restaurant-hours-flip:focus-visible {
    transform: none;
  }
  .restaurant-hours-flip.is-flipped,
  .restaurant-hours-shell .restaurant-hours-flip.is-flipped {
    transform: rotateY(179.9deg);
  }
  .restaurant-hours-face {
    position: absolute;
    min-height: 210px;
    backface-visibility: hidden;
  }
  .restaurant-hours-front {
    min-height: 210px;
  }
  .restaurant-hours-back {
    transform: rotateY(180deg);
    align-content: start;
  }
  .restaurant-hours-front span::after {
    content: " con un toque";
  }
  .restaurant-premium-detail .accommodation-premium-hero {
    min-height: clamp(260px, 42vh, 340px);
  }
  .restaurant-premium-detail .accommodation-premium-hero-image {
    object-fit: contain;
    object-position: center center;
  }
  .restaurant-premium-hero-backdrop {
    display: none;
  }
  .restaurant-premium-detail .accommodation-premium-hero-content {
    padding-top: clamp(70px, 7vw, 96px);
    padding-bottom: clamp(22px, 3.2vw, 36px);
  }
}
@media (max-width: 560px) {
  .restaurant-specialties ul {
    grid-template-columns: 1fr;
    gap: 9px;
  }
  .restaurant-hours-face {
    padding: 20px;
    border-radius: 18px;
  }
}
  backdrop-filter: blur(10px);
