/* Autentik: muro verde salvia, ladrillo blanco, terciopelo verde y dorado del letrero. */
:root {
  --salvia: oklch(0.6 0.072 138);
  --salvia-clara: oklch(0.86 0.035 135);
  --terciopelo: oklch(0.34 0.062 163);
  --bosque: oklch(0.235 0.035 162);
  --tinta: oklch(0.24 0.028 160);
  --tinta-suave: oklch(0.42 0.03 155);
  --ladrillo: oklch(0.975 0.006 100);
  --crema: oklch(0.948 0.014 92);
  --linea: oklch(0.86 0.018 110);
  --oro: oklch(0.8 0.115 84);
  --oro-claro: oklch(0.9 0.08 90);
  --oro-hondo: oklch(0.5 0.095 70);
  --nogal: oklch(0.37 0.04 55);
  --luz: oklch(0.93 0.13 100);

  --f-marca: "Pinyon Script", "Brush Script MT", cursive;
  --f-titulo: "Cormorant Garamond", Georgia, serif;
  --f-versal: "Cormorant SC", "Cormorant Garamond", Georgia, serif;
  --f-texto: "Figtree", "Segoe UI", sans-serif;

  --borde: clamp(1rem, 4vw, 3.5rem);
  --ease: cubic-bezier(0.22, 1, 0.36, 1);
  --cabecera: 4.25rem;
}

*, *::before, *::after { box-sizing: border-box; }
/* Sin scroll-behavior: smooth global: rompe las mediciones de ScrollTrigger al recargar. El suave va en app.js. */
html { scroll-padding-top: var(--cabecera); -webkit-text-size-adjust: 100%; }
body {
  margin: 0;
  background: var(--ladrillo);
  color: var(--tinta);
  font: 400 1.0625rem/1.65 var(--f-texto);
  overflow-x: clip;
}
img, video { display: block; max-width: 100%; height: auto; }
a { color: inherit; }
h1, h2, h3 { font-family: var(--f-titulo); font-weight: 500; line-height: 1.05; margin: 0; text-wrap: balance; }
h2 { font-size: clamp(2.3rem, 5.2vw, 4.2rem); letter-spacing: -0.01em; }
h3 { font-size: clamp(1.6rem, 2.6vw, 2.1rem); }
p { margin: 0; text-wrap: pretty; }
:focus-visible { outline: 2px solid var(--oro-hondo); outline-offset: 3px; border-radius: 2px; }

.antetitulo {
  font-family: var(--f-versal);
  font-weight: 600;
  font-size: 1.05rem;
  letter-spacing: 0.14em;
  color: var(--oro-hondo);
  margin-bottom: 1rem;
}

.saltar { position: absolute; left: 1rem; top: -4rem; z-index: 100; background: var(--bosque); color: var(--ladrillo); padding: .6rem 1rem; }
.saltar:focus { top: 1rem; }

/* Botones */
.boton {
  --fondo: var(--terciopelo); --texto: var(--ladrillo);
  display: inline-flex; align-items: center; justify-content: center;
  min-height: 3rem; padding: .8rem 1.5rem;
  border: 1px solid var(--fondo); border-radius: 999px;
  background: var(--fondo); color: var(--texto);
  font: 600 .95rem/1 var(--f-texto); letter-spacing: .02em; text-decoration: none;
  cursor: pointer;
  transition: background-color .3s var(--ease), color .3s var(--ease), transform .2s var(--ease), border-color .3s var(--ease);
}
.boton:active { transform: scale(.97); }
.boton--verde:hover { --fondo: var(--bosque); }
.boton--oro { --fondo: var(--oro); --texto: var(--bosque); }
.boton--oro:hover { --fondo: var(--oro-claro); }
.boton--linea { background: transparent; color: var(--tinta); border-color: color-mix(in oklch, var(--tinta) 40%, transparent); }
.boton--linea:hover { border-color: var(--tinta); background: color-mix(in oklch, var(--tinta) 6%, transparent); }
.boton--linea-clara { background: transparent; color: var(--ladrillo); border-color: color-mix(in oklch, var(--ladrillo) 45%, transparent); width: 100%; }
.boton--linea-clara:hover { border-color: var(--oro); color: var(--oro-claro); }
.boton--chico { min-height: 2.5rem; padding: .55rem 1.1rem; font-size: .88rem; }

.enlace {
  font-weight: 600; text-decoration: none; color: var(--terciopelo);
  background: linear-gradient(currentColor, currentColor) 0 100% / 100% 1px no-repeat;
  padding-bottom: 2px; transition: background-size .35s var(--ease);
}
.enlace:hover { background-size: 0 1px; background-position: 100% 100%; }

/* ---------- Puerta corrediza ---------- */
.puerta { display: none; }
.con-puerta .puerta {
  display: block; position: fixed; inset: 0; z-index: 90; cursor: pointer;
  perspective: 1400px;
}
.con-puerta body { overflow: hidden; }
.puerta__marco {
  position: absolute; inset: 0;
  display: grid; grid-template-columns: 1fr 1fr;
  border: clamp(10px, 1.6vw, 18px) solid oklch(0.3 0.012 70);
  box-shadow: inset 0 0 0 2px oklch(0.45 0.015 70);
  transform-origin: 50% 55%;
}
.puerta__hoja {
  position: relative;
  border: clamp(8px, 1.2vw, 14px) solid oklch(0.34 0.012 70);
  box-shadow: inset 0 0 0 1px oklch(0.55 0.015 70), 0 0 0 1px oklch(0.22 0.01 70);
}
.puerta__hoja--movil { z-index: 2; }
.puerta__vidrio {
  position: absolute; inset: 0;
  background:
    linear-gradient(115deg, transparent 30%, oklch(1 0 0 / .18) 38%, transparent 46%, transparent 62%, oklch(1 0 0 / .1) 66%, transparent 72%),
    oklch(0.92 0.012 140 / .55);
  backdrop-filter: blur(14px) saturate(1.1);
  -webkit-backdrop-filter: blur(14px) saturate(1.1);
}
.puerta__grabado {
  position: absolute; top: 50%; left: 50%;
  width: min(66%, 24rem); height: auto; translate: -50% -50%;
  opacity: .82; filter: drop-shadow(0 1px 0 oklch(1 0 0 / .4));
}
.puerta__manilla {
  position: absolute; left: clamp(10px, 2vw, 26px); top: 50%;
  width: 10px; height: clamp(90px, 18vh, 160px); translate: 0 -50%;
  border-radius: 6px;
  background: linear-gradient(90deg, oklch(0.45 0.015 70), oklch(0.62 0.02 75), oklch(0.38 0.012 70));
  box-shadow: 2px 3px 6px oklch(0 0 0 / .3);
}
.puerta__pista {
  position: absolute; left: 50%; bottom: clamp(1.5rem, 5vh, 3rem); translate: -50% 0; z-index: 3;
  font: 600 .8rem/1 var(--f-texto); letter-spacing: .18em; text-transform: uppercase;
  color: var(--bosque); background: oklch(0.975 0.006 100 / .75);
  padding: .65rem 1rem; border-radius: 999px; white-space: nowrap;
}

/* ---------- Cabecera ---------- */
.cabecera {
  position: sticky; top: 0; z-index: 40;
  height: var(--cabecera);
  display: flex; align-items: center; gap: 1.5rem;
  padding: 0 var(--borde);
  background: color-mix(in oklch, var(--ladrillo) 88%, transparent);
  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);
  border-bottom: 1px solid color-mix(in oklch, var(--linea) 70%, transparent);
}
.cabecera__marca { margin-right: auto; display: block; }
.cabecera__marca img { height: 2.6rem; width: auto; }
.cabecera__nav { display: flex; gap: 1.6rem; }
.cabecera__nav a { text-decoration: none; font-size: .92rem; font-weight: 500; color: var(--tinta-suave); transition: color .2s; }
.cabecera__nav a:hover { color: var(--tinta); }
.cabecera__menu { display: none; }
.menu-movil { display: none; }

@media (max-width: 860px) {
  .cabecera { gap: .75rem; }
  .cabecera__nav { display: none; }
  .cabecera__menu {
    display: inline-flex; align-items: center; min-height: 2.5rem; padding: 0 1rem; border-radius: 999px;
    border: 1px solid color-mix(in oklch, var(--tinta) 30%, transparent);
    background: transparent; color: var(--tinta); font: 500 .9rem var(--f-texto); cursor: pointer;
  }
  .menu-movil:not([hidden]) {
    display: grid; position: fixed; inset: var(--cabecera) 0 auto; z-index: 39;
    background: var(--ladrillo); border-bottom: 1px solid var(--linea);
    padding: .5rem var(--borde) 1.5rem;
  }
  .menu-movil a { padding: .85rem 0; font: 500 1.5rem/1.2 var(--f-titulo); text-decoration: none; border-bottom: 1px solid var(--linea); }
}

/* ---------- Hero ---------- */
.hero {
  display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr);
  min-height: calc(100svh - var(--cabecera));
}
.hero__texto {
  align-self: center;
  padding: clamp(3rem, 8vh, 6rem) clamp(1.5rem, 5vw, 5rem) clamp(3rem, 8vh, 6rem) var(--borde);
  /* ladrillo blanco pintado, como los muros del estudio */
  background-color: var(--ladrillo);
}
.hero::before { content: none; }
.hero { background:
  url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='56'%3E%3Cg fill='none' stroke='%23d9dccf' stroke-width='1.2'%3E%3Cpath d='M0 .6h120M0 28.6h120M30 0v28M90 0v28M0 28v28M60 28v28M120 28v28'/%3E%3C/g%3E%3C/svg%3E") var(--ladrillo);
}
.hero__titulo { font-size: clamp(2.9rem, 6.6vw, 5.8rem); font-weight: 500; letter-spacing: -0.02em; line-height: .98; }
.hero__titulo em { display: block; font-style: italic; color: var(--terciopelo); }
.hero__bajada { max-width: 34rem; margin-top: 1.6rem; font-size: 1.1rem; color: var(--tinta-suave); }
.hero__acciones { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 2.2rem; }
.hero__pago { margin-top: 1.4rem; font-size: .9rem; color: var(--tinta-suave); }

.hero__muro {
  position: relative; display: grid; place-items: center;
  background:
    radial-gradient(60% 50% at 50% 46%, oklch(0.68 0.08 128) 0%, transparent 70%),
    var(--salvia);
  overflow: hidden;
  padding: 3rem 1.5rem 5rem;
}

/* Letrero redondo iluminado */
.letrero { position: relative; width: min(34vw, 30rem); aspect-ratio: 1; }
.letrero__halo {
  position: absolute; inset: -14%; border-radius: 50%;
  background: radial-gradient(circle, oklch(0.95 0.15 105 / .9) 46%, oklch(0.9 0.16 100 / .45) 58%, transparent 72%);
  filter: blur(18px);
  opacity: var(--encendido, 1);
}
.letrero__disco {
  position: absolute; inset: 0; border-radius: 50%; overflow: hidden;
  background: radial-gradient(circle at 50% 45%, oklch(0.985 0.008 100), oklch(0.94 0.018 110));
  box-shadow: 0 1px 0 oklch(1 0 0 / .4), 0 0 0 1px oklch(0.78 0.11 84 / .5);
}
.letrero__logo { position: absolute; inset: 0; width: 100%; height: 100%; }
.letrero__reflejo {
  position: absolute; inset: 0; border-radius: 50%; pointer-events: none; z-index: 1;
  background: radial-gradient(40% 30% at var(--rx, 35%) var(--ry, 28%), oklch(1 0 0 / .55), transparent 70%);
  mix-blend-mode: soft-light;
}

@media (max-width: 860px) {
  .hero { grid-template-columns: minmax(0, 1fr); min-height: 0; }
  .hero__muro { order: -1; min-height: 0; padding: 1.6rem 1rem 2rem; }
  .letrero { width: min(52vw, 15rem); }
  .hero__texto { padding: 1.8rem var(--borde) 3rem; }
  .hero__titulo { font-size: clamp(2.3rem, 10.5vw, 3.2rem); }
  .hero__bajada { margin-top: 1rem; font-size: 1rem; }
  .hero__acciones { margin-top: 1.4rem; }
}

/* ---------- Servicios ---------- */
.servicios { padding: clamp(5rem, 12vh, 9rem) var(--borde); background: var(--crema); }
.servicios__cabeza { max-width: 46rem; margin-bottom: clamp(3rem, 7vh, 5rem); }
.servicios__nota { margin-top: 1.4rem; color: var(--tinta-suave); max-width: 38rem; }
.servicios__cuerpo { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(2rem, 6vw, 6rem); align-items: start; }
.servicios__visor { position: sticky; top: calc(var(--cabecera) + 2rem); }
.visor__marco {
  position: relative; margin: 0 auto; aspect-ratio: 4 / 5; overflow: hidden; max-height: calc(100vh - var(--cabecera) - 4rem);
  border-radius: 6px;
  background: var(--terciopelo);
}
.visor__media {
  position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;
  opacity: 0; scale: 1.06;
  transition: opacity .7s var(--ease), scale 1.2s var(--ease);
}
.visor__media.is-activa { opacity: 1; scale: 1; }

.grupo { padding: 2rem 0 2.2rem; border-top: 1px solid var(--linea); }
.grupo:last-child { border-bottom: 1px solid var(--linea); }
.grupo h3 { display: flex; align-items: baseline; gap: .8rem; transition: color .3s; }
.grupo.is-activa h3 { color: var(--terciopelo); }
.grupo h3::after { content: ""; flex: 1; height: 1px; background: currentColor; opacity: .15; translate: 0 -.3em; }
.grupo__foto { display: none; }
.grupo ul { list-style: none; margin: 1.1rem 0 0; padding: 0; display: grid; gap: .1rem; }
.grupo li {
  display: grid; grid-template-columns: minmax(0, 1fr) auto auto; align-items: center; gap: .3rem 1.2rem;
  padding: .6rem 0; font-size: 1.08rem;
}
.grupo li + li { border-top: 1px dashed color-mix(in oklch, var(--linea) 80%, transparent); }
.precio { font: 600 1.15rem/1.1 var(--f-titulo); color: var(--terciopelo); white-space: nowrap; font-variant-numeric: lining-nums; }
.precio--consulta { font: 500 .85rem/1.2 var(--f-texto); color: var(--tinta-suave); }
.grupo li a {
  flex-shrink: 0; font-size: .85rem; font-weight: 600; color: var(--terciopelo); text-decoration: none;
  padding: .55rem 1rem; border-radius: 999px; border: 1px solid transparent;
  transition: border-color .25s, background-color .25s;
}
.grupo li a:hover { border-color: color-mix(in oklch, var(--terciopelo) 35%, transparent); background: oklch(1 0 0 / .5); }

@media (max-width: 860px) {
  .servicios__cuerpo { grid-template-columns: minmax(0, 1fr); }
  .servicios__visor { display: none; }
  .grupo__foto { display: block; width: min(100%, 24rem); aspect-ratio: 4 / 5; object-fit: cover; border-radius: 6px; margin-top: 1rem; }
  .grupo li { grid-template-columns: minmax(0, 1fr) auto; grid-template-areas: "servicio enlace" "precio enlace"; }
  .grupo li .servicio { grid-area: servicio; }
  .grupo li .precio { grid-area: precio; }
  .grupo li a { grid-area: enlace; padding: .5rem .2rem .5rem .8rem; }
}

/* ---------- Ritual (recorrido horizontal) ---------- */
.ritual { background: var(--bosque); color: var(--ladrillo); overflow: hidden; }
.ritual__pista {
  scroll-padding-inline: var(--borde);
  display: flex; gap: clamp(1.5rem, 4vw, 4rem);
  padding: clamp(5rem, 12vh, 8rem) var(--borde);
  overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none;
}
.ritual__pista::-webkit-scrollbar { display: none; }
.ritual__intro { flex: 0 0 min(80vw, 26rem); align-self: center; scroll-snap-align: start; }
.ritual__intro .antetitulo { color: var(--oro); }
.ritual__intro p:not(.antetitulo) { margin-top: 1.2rem; color: oklch(0.86 0.02 140); }
.ritual__guia { font: 600 .8rem/1 var(--f-texto) !important; letter-spacing: .18em; text-transform: uppercase; color: var(--oro) !important; }
.ritual__guia::after { content: " →"; }
.escena { flex: 0 0 min(78vw, 23rem, 44vh); scroll-snap-align: start; }
.escena:nth-of-type(even) { margin-top: clamp(1.5rem, 6vh, 4rem); }
@media (max-width: 860px) {
  /* En el celular las escenas van alineadas y dejan sitio al botón flotante */
  .ritual__pista {
    display: grid; grid-auto-flow: column; grid-template-rows: auto auto; grid-auto-columns: 82vw;
    gap: 1.8rem 1rem; padding-block: 3rem 6.5rem;
  }
  .ritual__intro {
    grid-row: 1; grid-column: 1 / 7; position: sticky; left: 0;
    width: calc(100vw - 2 * var(--borde)); scroll-snap-align: none;
  }
  .ritual__intro p:not(.antetitulo) { margin-top: .8rem; }
  .escena { grid-row: 2; }
  .escena:nth-of-type(even) { margin-top: 0; }
  .escena img { max-height: 58svh; }
  .escena h3 { margin-top: 1rem; font-size: 2.1rem; }
}
.ritual.is-fijado .ritual__pista { min-height: 100vh; align-items: center; padding-block: calc(var(--cabecera) + 1rem) 2rem; }
.ritual.is-fijado .escena:nth-of-type(even) { margin-top: 0; translate: 0 clamp(1.5rem, 6vh, 4rem); }
.escena img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 4px; }
.escena h3 {
  margin-top: 1.2rem; font-size: clamp(2.2rem, 3.6vw, 3.2rem); font-style: italic;
  color: var(--oro-claro);
}
.escena p { margin-top: .6rem; color: oklch(0.86 0.02 140); max-width: 22rem; }
.ritual.is-fijado .ritual__pista { overflow: visible; width: max-content; }

/* ---------- Ambiente ---------- */
.ambiente {
  display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(2rem, 6vw, 6rem);
  align-items: center; padding: clamp(5rem, 12vh, 9rem) var(--borde);
}
.ambiente__fotos { position: relative; padding-bottom: 14%; }
.ambiente__grande { width: 86%; aspect-ratio: 4 / 3; object-fit: cover; border-radius: 4px; }
.ambiente__chica {
  position: absolute; right: 0; bottom: 0; width: 46%; aspect-ratio: 1; object-fit: cover;
  border-radius: 50%; border: clamp(6px, 1vw, 12px) solid var(--ladrillo);
  object-position: 50% 30%;
}
.ambiente__texto p { margin-top: 1.3rem; color: var(--tinta-suave); }
.radio { margin-top: 2.6rem; padding: 1.4rem 1.4rem 1.2rem; border: 1px solid var(--linea); border-radius: 6px; background: var(--crema); }
.radio__titulo { margin: 0 !important; font: 600 .8rem/1 var(--f-texto); letter-spacing: .16em; text-transform: uppercase; color: var(--oro-hondo) !important; }
.radio__dial {
  position: relative; margin-top: 1.1rem; padding: 1.3rem 0 .4rem;
  background: repeating-linear-gradient(90deg, var(--tinta-suave) 0 1px, transparent 1px 10%) 0 0 / 100% .6rem no-repeat;
}
.radio__dial ul { list-style: none; margin: 0; padding: 0; display: flex; justify-content: space-between; gap: .5rem; }
.radio__dial li { font: 500 1.25rem/1.1 var(--f-titulo); color: var(--tinta-suave); transition: color .3s; }
.radio__dial li.is-sonando { color: var(--terciopelo); }
.radio__aguja {
  position: absolute; top: -.3rem; left: 0; width: 2px; height: 1.3rem; background: oklch(0.58 0.17 30);
  translate: var(--aguja, 0px) 0; border-radius: 2px;
}
.radio__nota { margin-top: .9rem !important; font-size: .92rem; }

@media (max-width: 860px) {
  .ambiente { grid-template-columns: minmax(0, 1fr); }
  .radio__dial li { font-size: 1.05rem; }
}

/* ---------- Emely ---------- */
.emely {
  display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: clamp(2rem, 6vw, 6rem);
  align-items: center; padding: clamp(5rem, 12vh, 9rem) var(--borde);
  background: var(--salvia-clara);
}
.emely__foto { margin: 0; }
.emely__foto img { width: min(100%, 30rem); aspect-ratio: 1; object-fit: cover; border-radius: 50%; margin-inline: auto; box-shadow: 0 0 0 clamp(6px, 1vw, 10px) var(--ladrillo), 0 0 0 calc(clamp(6px, 1vw, 10px) + 2px) var(--oro); }
.emely__texto > p { margin-top: 1.3rem; color: var(--tinta-suave); max-width: 36rem; }
.ruta { display: flex; align-items: center; gap: .8rem; margin-top: 1.6rem; max-width: 30rem; }
.ruta__punto { font: 600 1rem/1 var(--f-versal); letter-spacing: .1em; white-space: nowrap; color: var(--terciopelo); }
.ruta__linea { flex: 1; min-width: 0; width: 100%; height: 2.4rem; overflow: visible; }
.ruta__linea path { fill: none; stroke: var(--oro-hondo); stroke-width: 1.5; stroke-dasharray: 4 6; }
.cita { margin: 2.2rem 0 0; padding-left: 1.4rem; border-left: 1px solid var(--oro-hondo); }
.cita p { font: italic 400 clamp(1.5rem, 2.6vw, 2.1rem)/1.25 var(--f-titulo); color: var(--tinta); }
.cita cite { display: block; margin-top: .8rem; font: normal 500 .88rem var(--f-texto); color: var(--tinta-suave); }

@media (max-width: 860px) {
  .emely { grid-template-columns: minmax(0, 1fr); }
  .emely__foto img { width: min(80vw, 22rem); }
}

/* ---------- Joyas ---------- */
.joyas { position: relative; display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 4fr); align-items: end; }
.joyas__foto { width: 100%; height: 100%; min-height: 32rem; object-fit: cover; }
.joyas__texto {
  padding: clamp(2.5rem, 6vw, 5rem) var(--borde) clamp(2.5rem, 6vw, 5rem) clamp(2rem, 4vw, 4rem);
  align-self: stretch; display: flex; flex-direction: column; justify-content: center;
  background: var(--terciopelo); color: var(--ladrillo);
}
.joyas__texto .antetitulo { color: var(--oro); }
.joyas__texto p:not(.antetitulo) { margin: 1.3rem 0 1.8rem; color: oklch(0.94 0.014 150); }
.joyas__texto .enlace { color: var(--oro-claro); align-self: flex-start; }
@media (max-width: 860px) {
  .joyas { grid-template-columns: minmax(0, 1fr); }
  .joyas__foto { min-height: 0; aspect-ratio: 4 / 3; }
}

/* ---------- Reservar ---------- */
.reservar { padding: clamp(5rem, 12vh, 9rem) var(--borde); background: var(--bosque); color: var(--ladrillo); }
.reservar__cabeza { max-width: 40rem; }
.reservar__cabeza h2 { color: var(--oro-claro); }
.reservar__cabeza p { margin-top: 1.2rem; color: oklch(0.86 0.02 140); }
.reservar__vias { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(1.5rem, 3vw, 2.5rem); margin-top: 3.5rem; }
.via { padding: clamp(1.6rem, 3vw, 2.6rem); border: 1px solid oklch(1 0 0 / .14); border-radius: 8px; }
.via h3 { color: var(--ladrillo); }
.via--agenda { background: var(--terciopelo); display: flex; flex-direction: column; align-items: flex-start; gap: 1.1rem; }
.via--agenda p { color: oklch(0.94 0.014 150); }
.via--agenda .boton { margin-top: auto; }
.via--whatsapp { display: grid; gap: .45rem; }
.via--whatsapp h3 { margin-bottom: .8rem; }
.via label { font-size: .9rem; font-weight: 500; color: oklch(0.94 0.014 150); margin-top: .5rem; }
.via label span { font-weight: 400; opacity: .7; }
.via input, .via select {
  width: 100%; min-height: 3rem; padding: .7rem .9rem; border-radius: 6px;
  border: 1px solid oklch(1 0 0 / .22); background: oklch(1 0 0 / .06); color: var(--ladrillo);
  font: 400 1rem var(--f-texto);
}
.via select option { color: var(--tinta); background: var(--ladrillo); }
.via input::placeholder { color: oklch(0.8 0.02 150 / .7); }
.via input:focus-visible, .via select:focus-visible { outline: 2px solid var(--oro); outline-offset: 1px; }
.via input[aria-invalid="true"] { border-color: oklch(0.72 0.14 35); }
.campo-error { min-height: 1.2em; font-size: .85rem; color: oklch(0.82 0.11 45); }
.via button { margin-top: .8rem; }
.via__nota { font-size: .82rem; color: oklch(0.8 0.02 150); }
.pagos { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem 1rem; margin: 3rem 0 0; }
.pagos dt { font: 600 .8rem/1 var(--f-texto); letter-spacing: .16em; text-transform: uppercase; color: var(--oro); margin-right: .5rem; }
.pagos dd { margin: 0; padding: .55rem 1rem; border-radius: 999px; border: 1px solid oklch(1 0 0 / .2); font-size: .9rem; }
@media (max-width: 860px) { .reservar__vias { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Ubicación ---------- */
.ubicacion { display: grid; grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: clamp(2rem, 5vw, 5rem); padding: clamp(5rem, 12vh, 9rem) var(--borde); align-items: center; }
.ubicacion address { margin-top: 1.4rem; font: normal 500 clamp(1.5rem, 2.4vw, 2rem)/1.25 var(--f-titulo); }
.ubicacion__texto > p { margin-top: 1rem; color: var(--tinta-suave); }
.ubicacion__acciones { display: flex; flex-wrap: wrap; gap: .75rem; margin-top: 1.8rem; }
.redes { list-style: none; padding: 0; margin: 2rem 0 0; display: flex; flex-wrap: wrap; gap: .4rem 1.4rem; }
.redes a { font-weight: 500; text-decoration: none; border-bottom: 1px solid var(--linea); padding-bottom: 2px; }
.redes a:hover { border-color: var(--tinta); }
.ubicacion__mapa { aspect-ratio: 4 / 3; border-radius: 8px; overflow: hidden; background: var(--crema); border: 1px solid var(--linea); }
.ubicacion__mapa iframe { width: 100%; height: 100%; border: 0; filter: saturate(.75) sepia(.08); }
@media (max-width: 860px) { .ubicacion { grid-template-columns: minmax(0, 1fr); } }

/* ---------- Pie ---------- */
.pie { padding: clamp(4rem, 10vh, 7rem) var(--borde) 6rem; background: var(--ladrillo); border-top: 1px solid var(--linea); color: var(--bosque); text-align: center; }
.pie__marca { width: min(78vw, 22rem); height: auto; margin: 0 auto; }
.pie__lema { margin-top: 1.2rem; font: italic 400 1.4rem/1.2 var(--f-titulo); }
.pie__legal { margin-top: 2.5rem; font-size: .85rem; }

/* Botón flotante en móvil */
.flotante { display: none; }
@media (max-width: 860px) {
  .flotante {
    display: inline-flex; position: fixed; right: 1rem; bottom: 1rem; z-index: 30;
    min-height: 3.1rem; align-items: center; padding: 0 1.4rem; border-radius: 999px;
    background: var(--oro); color: var(--bosque); font-weight: 600; text-decoration: none;
    box-shadow: 0 6px 20px oklch(0.2 0.03 160 / .3);
    transition: opacity .3s, translate .3s var(--ease);
  }
  .flotante.is-oculto { opacity: 0; translate: 0 1rem; pointer-events: none; }
  .cabecera .boton--chico { min-height: 2.75rem; padding: .55rem .95rem; }
  .cabecera__marca img { height: 2.2rem; }
  .pie { padding-bottom: 7rem; }
  .carta-cta { margin-bottom: 4rem; }
}

/* Entradas al hacer scroll (solo con JS y sin movimiento reducido) */
@media (prefers-reduced-motion: no-preference) {
  .js .aparece { opacity: 0; translate: 0 1.6rem; transition: opacity .9s var(--ease), translate .9s var(--ease); }
  .js .aparece.is-visible { opacity: 1; translate: 0 0; }
  .js .letrero { --encendido: 0; }
  .js .letrero__halo { transition: opacity 1.6s cubic-bezier(.3, 0, .2, 1); }
  .js .letrero.is-encendido { --encendido: 1; }
  .js .ruta__linea path { stroke-dashoffset: var(--ruta, 0); }
}

/* Bloque de reserva al final de la carta */
.carta-cta { display: flex; flex-wrap: wrap; align-items: center; gap: .75rem 1rem; margin-top: 2.2rem; }
.carta-cta p { font: italic 500 1.5rem/1.2 var(--f-titulo); margin-right: .5rem; }

/* Objetivos táctiles de al menos 44 px */
.grupo li a, .redes a, .joyas__texto .enlace { min-height: 44px; display: inline-flex; align-items: center; }
.cabecera__menu { min-height: 2.75rem !important; }

/* Foco visible en secciones oscuras */
.ritual :focus-visible, .reservar :focus-visible, .joyas__texto :focus-visible { outline-color: var(--oro); }

/* Horario */
.horario { margin-top: 1.4rem; padding: 1.1rem 1.2rem; border: 1px solid var(--linea); border-radius: 8px; background: var(--crema); max-width: 24rem; }
.horario__estado { display: inline-flex; align-items: center; gap: .5rem; font-weight: 600; font-size: .92rem; margin-bottom: .7rem; color: var(--terciopelo); }
.horario__estado::before { content: ""; width: .55rem; height: .55rem; border-radius: 50%; background: currentColor; }
.horario__estado.is-cerrado { color: var(--tinta-suave); }
.horario dl { display: grid; grid-template-columns: auto auto; justify-content: space-between; gap: .35rem 2rem; margin: 0; }
.horario dt { font-weight: 500; }
.horario dd { margin: 0; font-variant-numeric: tabular-nums; }
.horario__nota { margin-top: .7rem; font-size: .88rem; color: var(--tinta-suave); }

/* Cómo reservar */
.pasos { list-style: none; margin: 2.4rem 0 0; padding: 0; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1.2rem; }
.pasos li { display: flex; gap: .8rem; align-items: flex-start; color: oklch(0.94 0.014 150); }
.pasos span { flex: none; display: grid; place-items: center; width: 2.1rem; height: 2.1rem; border-radius: 50%; border: 1px solid var(--oro); color: var(--oro-claro); font: 600 .95rem/1 var(--f-texto); font-variant-numeric: lining-nums; }
@media (max-width: 860px) { .pasos { grid-template-columns: minmax(0, 1fr); } }

/* Galería de trabajos */
.galeria { padding-block: clamp(4rem, 9vw, 7rem); background: var(--ladrillo); }
.galeria__cabeza { padding-inline: var(--borde); max-width: 44rem; }
.galeria__cabeza p:not(.antetitulo) { margin-top: 1rem; color: var(--tinta-suave); }
.galeria__pista {
  list-style: none; margin: 2.2rem 0 0; padding: 0 var(--borde) 1.2rem;
  display: grid; grid-auto-flow: column; grid-auto-columns: clamp(13.5rem, 62vw, 19rem); gap: clamp(.8rem, 1.6vw, 1.4rem);
  overflow-x: auto; scroll-snap-type: x mandatory; scroll-padding-inline: var(--borde);
  scrollbar-width: thin; scrollbar-color: var(--salvia) transparent;
}
.galeria__pista figure { margin: 0; scroll-snap-align: start; }
.galeria__pista img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 4px; background: var(--crema); }
.galeria__pista figcaption { margin-top: .6rem; font-size: .92rem; color: var(--tinta-suave); }
.galeria__pista:focus-visible { outline-offset: -4px; }

/* Mientras te atendemos */
.mimos {
  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); align-items: center;
  gap: clamp(2rem, 5vw, 5rem); padding: clamp(4rem, 9vw, 7rem) var(--borde); background: var(--crema);
}
.mimos__media { display: grid; grid-template-columns: minmax(0, 1.05fr) minmax(0, 1fr); gap: clamp(.8rem, 1.6vw, 1.2rem); align-items: end; }
.mimos__video { width: 100%; aspect-ratio: 9 / 16; object-fit: cover; border-radius: 4px; background: var(--nogal); }
.mimos__foto { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; border-radius: 4px; margin-bottom: clamp(1.5rem, 5vw, 4rem); }
.mimos__lista { list-style: none; margin: 1.8rem 0 0; padding: 0; display: grid; gap: 1.1rem; }
.mimos__lista li { padding-left: 1.4rem; position: relative; color: var(--tinta-suave); }
.mimos__lista li::before { content: ""; position: absolute; left: 0; top: .62em; width: .5rem; height: .5rem; border-radius: 50%; background: var(--oro); }
.mimos__lista strong { color: var(--tinta); font-weight: 600; }
@media (max-width: 860px) {
  .mimos { grid-template-columns: minmax(0, 1fr); }
  .mimos__texto { order: -1; }
  .radio__dial ul { gap: .4rem; }
  .radio__dial li { font-size: .92rem; white-space: nowrap; }
}
