/* ==========================================================================
   FIGALLO STUDIO — Hoja de estilos única para todo el sitio
   --------------------------------------------------------------------------
   Guía rápida para editar:
   · Los colores y medidas viven en :root (abajo). Cambia ahí y cambia todo.
   · Cada bloque está rotulado con un comentario en MAYÚSCULAS.
   · No hace falta compilar nada: es CSS puro.
   ========================================================================== */


/* ==========================================================================
   1. VARIABLES DE MARCA
   ========================================================================== */

:root {
  /* --- Paleta oficial (no añadir colores nuevos) --- */
  --navy:        #28374A;
  --sand:        #D3C7AD;
  --terracotta:  #754437;
  --olive:       #6B6751;
  --crema:       #F7F3EC;  /* crema derivada del sand, para fondos claros */
  --blanco:      #FFFFFF;

  /* --- Variantes translúcidas (mismos colores, distinta opacidad) --- */
  --navy-velo:      rgba(40, 55, 74, .72);
  --navy-velo-alto: rgba(40, 55, 74, .88);
  --navy-10:        rgba(40, 55, 74, .10);
  --navy-16:        rgba(40, 55, 74, .16);
  --sand-40:        rgba(211, 199, 173, .40);
  --crema-70:       rgba(247, 243, 236, .70);

  /* --- Tipografías --- */
  --fuente-titulo: 'Gloock', Georgia, 'Times New Roman', serif;
  --fuente-texto:  'Instrument Sans', -apple-system, BlinkMacSystemFont, 'Segoe UI', Helvetica, Arial, sans-serif;

  /* --- Medidas --- */
  --ancho-max:      1240px;
  --ancho-texto:    62ch;
  --alto-nav:       78px;
  --radio:          4px;
  --radio-tarjeta:  10px;

  /* --- Ritmo vertical de las secciones --- */
  --seccion-y: clamp(5.5rem, 11vw, 9.5rem);
  --gutter:    clamp(1.25rem, 5vw, 3rem);

  /* --- Sombras y transiciones --- */
  --sombra-suave: 0 10px 30px -18px rgba(40, 55, 74, .45);
  --sombra-alta:  0 22px 48px -22px rgba(40, 55, 74, .38);
  --ease:         cubic-bezier(.22, .61, .36, 1);
  --transicion:   .45s var(--ease);
}


/* ==========================================================================
   2. BASE Y REINICIO
   ========================================================================== */

*,
*::before,
*::after { box-sizing: border-box; }

html {
  scroll-behavior: smooth;
  -webkit-text-size-adjust: 100%;
  /* `clip` recorta el desbordamiento lateral SIN crear un contenedor de
     scroll. Con `hidden` en el body, el body pasa a ser el scroller y eso
     rompe el desplazamiento por JavaScript y los elementos fijos. */
  overflow-x: clip;
}

body {
  margin: 0;
  background: var(--crema);
  color: var(--navy);
  font-family: var(--fuente-texto);
  font-size: clamp(1rem, .95rem + .25vw, 1.0625rem);
  line-height: 1.7;
  font-weight: 400;
  letter-spacing: .005em;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  overflow-x: clip;
}

/* Bloquea el scroll cuando el menú móvil está abierto */
body.menu-abierto { overflow: hidden; }

img,
video { display: block; max-width: 100%; height: auto; }

a { color: inherit; }

button {
  font: inherit;
  color: inherit;
  background: none;
  border: none;
  cursor: pointer;
}

/* Anillo de foco visible y coherente para accesibilidad por teclado */
:focus-visible {
  outline: 2px solid var(--terracotta);
  outline-offset: 3px;
  border-radius: 2px;
}

/* Enlace "saltar al contenido" para lectores de pantalla */
.salto-contenido {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 999;
  padding: .75rem 1.25rem;
  background: var(--navy);
  color: var(--crema);
}
.salto-contenido:focus { left: 1rem; top: 1rem; }

/* Texto solo para lectores de pantalla */
.solo-lectores {
  position: absolute;
  width: 1px; height: 1px;
  padding: 0; margin: -1px;
  overflow: hidden;
  clip: rect(0 0 0 0);
  white-space: nowrap;
}


/* ==========================================================================
   3. TIPOGRAFÍA
   ========================================================================== */

h1, h2, h3, h4 {
  font-family: var(--fuente-titulo);
  font-weight: 400;
  line-height: 1.08;
  letter-spacing: -.015em;
  margin: 0 0 .6em;
  text-wrap: balance;
}

h1 { font-size: clamp(2.6rem, 1.6rem + 4.4vw, 5rem); }
h2 { font-size: clamp(2.05rem, 1.4rem + 2.7vw, 3.4rem); }
h3 { font-size: clamp(1.3rem, 1.15rem + .6vw, 1.65rem); line-height: 1.22; }

/* Un H1 que se ve como un H2. Se usa en estudio.html: cada página necesita un
   H1 por SEO, pero ahí el titular debe verse al tamaño de un H2. */
.titulo-como-h2 { font-size: clamp(2.05rem, 1.4rem + 2.7vw, 3.4rem); }

p { margin: 0 0 1.15em; }
p:last-child { margin-bottom: 0; }

/* Antetítulo: la línea pequeña en versalitas sobre cada H2 */
.eyebrow {
  display: block;
  font-size: .72rem;
  font-weight: 500;
  letter-spacing: .19em;
  text-transform: uppercase;
  color: var(--terracotta);
  margin: 0 0 1.35rem;
  line-height: 1.5;
}
.eyebrow--claro { color: var(--sand); }

/* Párrafo de entrada, algo mayor que el cuerpo */
.entradilla {
  font-size: clamp(1.05rem, 1rem + .35vw, 1.2rem);
  line-height: 1.65;
  max-width: var(--ancho-texto);
}

.texto-limitado { max-width: var(--ancho-texto); }
.cursiva { font-style: italic; }


/* ==========================================================================
   4. ESTRUCTURA Y SECCIONES
   ========================================================================== */

.contenedor {
  width: 100%;
  max-width: var(--ancho-max);
  margin-inline: auto;
  padding-inline: var(--gutter);
}

.seccion { padding-block: var(--seccion-y); }

/* Fondos de sección */
.fondo-crema  { background: var(--crema); color: var(--navy); }
.fondo-sand   { background: var(--sand);  color: var(--navy); }
.fondo-navy   { background: var(--navy);  color: var(--crema); }
.fondo-navy .eyebrow { color: var(--sand); }

/* Encabezado de sección centrado */
.cabecera-seccion {
  max-width: 720px;
  margin: 0 auto clamp(3rem, 6vw, 4.5rem);
  text-align: center;
}
.cabecera-seccion .entradilla { margin-inline: auto; }

/* Variante sin espacio inferior: para cabeceras que ya llevan botón dentro */
.cabecera-seccion--suelta { margin-bottom: 0; }
.cabecera-seccion--suelta .entradilla { margin-bottom: 2.4rem; }

/* Deja hueco bajo la barra fija cuando la sección es la primera de la página */
.seccion--bajo-nav { padding-top: calc(var(--alto-nav) + var(--seccion-y)); }

/* Filete decorativo fino */
.filete {
  width: 56px;
  height: 1px;
  background: var(--terracotta);
  border: 0;
  margin: 0 0 1.75rem;
}
.cabecera-seccion .filete { margin-inline: auto; }


/* ==========================================================================
   5. BOTONES
   ========================================================================== */

.boton {
  display: inline-flex;
  align-items: center;
  gap: .6rem;
  padding: .95rem 1.9rem;
  border-radius: var(--radio);
  font-size: .82rem;
  font-weight: 500;
  letter-spacing: .13em;
  text-transform: uppercase;
  text-decoration: none;
  white-space: nowrap;
  transition: background-color var(--transicion),
              color var(--transicion),
              border-color var(--transicion),
              transform var(--transicion),
              box-shadow var(--transicion);
}

/* Botón principal: sand → terracotta al pasar el cursor */
.boton--principal {
  background: var(--sand);
  color: var(--navy);
  border: 1px solid var(--sand);
}
.boton--principal:hover,
.boton--principal:focus-visible {
  background: var(--terracotta);
  border-color: var(--terracotta);
  color: var(--crema);
  transform: translateY(-3px);
  box-shadow: var(--sombra-suave);
}

/* Botón secundario: contorno */
.boton--contorno {
  background: transparent;
  color: currentColor;
  border: 1px solid currentColor;
}
.boton--contorno:hover,
.boton--contorno:focus-visible {
  background: var(--terracotta);
  border-color: var(--terracotta);
  color: var(--crema);
  transform: translateY(-3px);
  box-shadow: var(--sombra-suave);
}

/* Botón navy sólido, para fondos claros */
.boton--navy {
  background: var(--navy);
  color: var(--crema);
  border: 1px solid var(--navy);
}
.boton--navy:hover,
.boton--navy:focus-visible {
  background: var(--terracotta);
  border-color: var(--terracotta);
  transform: translateY(-3px);
  box-shadow: var(--sombra-suave);
}

.grupo-botones {
  display: flex;
  flex-wrap: wrap;
  gap: .9rem;
}
/* En el pie los botones van centrados bajo el texto */
.grupo-botones--centrado { justify-content: center; }

/* Icono dentro de un botón: hereda color y tamaño de la línea de texto */
.boton svg {
  width: 17px;
  height: 17px;
  flex: none;
}

/* Enlace con subrayado animado */
.enlace-fino {
  display: inline-block;
  text-decoration: none;
  font-size: .82rem;
  font-weight: 500;
  letter-spacing: .13em;
  text-transform: uppercase;
  padding-bottom: 3px;
  background-image: linear-gradient(currentColor, currentColor);
  background-size: 100% 1px;
  background-position: 0 100%;
  background-repeat: no-repeat;
  transition: color var(--transicion), background-size var(--transicion);
}
.enlace-fino:hover,
.enlace-fino:focus-visible {
  color: var(--terracotta);
  background-size: 30% 1px;
}


/* ==========================================================================
   6. NAVEGACIÓN
   ========================================================================== */

.nav {
  position: fixed;
  inset: 0 0 auto 0;
  z-index: 100;
  height: var(--alto-nav);
  display: flex;
  align-items: center;
  background: transparent;
  border-bottom: 1px solid transparent;
  /* El color de la barra se controla con --nav-color (ver "Estados" más abajo) */
  color: var(--nav-color, var(--navy));
  transition: background-color var(--transicion),
              border-color var(--transicion),
              box-shadow var(--transicion),
              color var(--transicion);
}

.nav__interior {
  width: 100%;
  max-width: var(--ancho-max);
  margin-inline: auto;
  padding-inline: var(--gutter);
  display: flex;
  align-items: center;
  gap: 1.5rem;
}

/* --- Logo --- */
.nav__logo {
  display: flex;
  align-items: center;
  gap: .7rem;
  text-decoration: none;
  margin-right: auto;
  min-width: 0;        /* deja que el bloque encoja en vez de desbordarse */
}
.nav__logo img {
  width: 34px;
  height: 34px;
  object-fit: cover;
  border-radius: 3px;
}
.nav__logo span {
  font-family: var(--fuente-titulo);
  font-size: 1.12rem;
  letter-spacing: .01em;
  white-space: nowrap;
}

/* --- Enlaces --- */
.nav__menu {
  display: flex;
  align-items: center;
  gap: clamp(1.1rem, 2.4vw, 2.2rem);
  list-style: none;
  margin: 0;
  padding: 0;
}
.nav__enlace {
  position: relative;
  text-decoration: none;
  font-size: .74rem;
  font-weight: 500;
  letter-spacing: .16em;
  text-transform: uppercase;
  padding-block: .4rem;
  transition: color var(--transicion);
}
/* Subrayado que crece desde la izquierda */
.nav__enlace::after {
  content: '';
  position: absolute;
  left: 0;
  bottom: 0;
  width: 100%;
  height: 1px;
  background: currentColor;
  transform: scaleX(0);
  transform-origin: left;
  transition: transform var(--transicion);
}
.nav__enlace:hover::after,
.nav__enlace:focus-visible::after,
.nav__enlace[aria-current='page']::after { transform: scaleX(1); }
.nav__enlace:hover { color: var(--terracotta); }

/* --- Botón de idioma ES/EN --- */
.idioma {
  display: inline-flex;
  align-items: center;
  border: 1px solid currentColor;
  border-radius: 999px;
  padding: 3px;
  opacity: .9;
  transition: opacity var(--transicion), border-color var(--transicion);
}
.idioma:hover { opacity: 1; }
.idioma__opcion {
  padding: .22rem .62rem;
  border-radius: 999px;
  font-size: .68rem;
  font-weight: 600;
  letter-spacing: .1em;
  line-height: 1.4;
  opacity: .55;
  transition: background-color var(--transicion), color var(--transicion), opacity var(--transicion);
}
.idioma__opcion[aria-pressed='true'] {
  background: var(--terracotta);
  color: var(--crema);
  opacity: 1;
}

/* --- Botón hamburguesa (solo móvil) --- */
.hamburguesa {
  display: none;                 /* se activa en el media query de móvil */
  width: 40px;
  height: 40px;
  padding: 0;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 6px;                      /* 6px de hueco + 1.5px de barra = 7.5px entre centros */
}
.hamburguesa span {
  display: block;
  width: 22px;
  height: 1.5px;
  flex: none;
  background: currentColor;
  transition: transform var(--transicion), opacity var(--transicion);
}
.hamburguesa[aria-expanded='true'] span:nth-child(1) { transform: translateY(7.5px) rotate(45deg); }
.hamburguesa[aria-expanded='true'] span:nth-child(2) { opacity: 0; }
.hamburguesa[aria-expanded='true'] span:nth-child(3) { transform: translateY(-7.5px) rotate(-45deg); }

/* --- Estados de la barra --- */

/* Páginas con hero oscuro: la barra empieza transparente y en color crema */
body.hero-oscuro { --nav-color: var(--crema); }

/* Fondo que aparece al hacer scroll (lo activa main.js) */
.nav--fondo {
  background: var(--crema-70);
  -webkit-backdrop-filter: blur(14px);
  backdrop-filter: blur(14px);
  border-bottom-color: var(--navy-10);
  box-shadow: 0 1px 24px -14px rgba(40, 55, 74, .55);
  --nav-color: var(--navy);   /* vuelve a texto navy sobre el fondo claro */
}


/* ==========================================================================
   7. HERO
   ========================================================================== */

.hero {
  position: relative;
  isolation: isolate;
  display: flex;
  align-items: center;
  min-height: 100svh;
  padding-block: calc(var(--alto-nav) + 4rem) clamp(5rem, 10vh, 8rem);
  overflow: hidden;
  color: var(--crema);
}

/* Capa de vídeo / imagen de fondo */
.hero__media {
  position: absolute;
  inset: 0;
  z-index: -2;
}
.hero__media video,
.hero__media img {
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* La imagen poster queda debajo del vídeo: si el vídeo no carga, se ve ella */
.hero__media img { position: absolute; inset: 0; }
.hero__media video { position: relative; }

/* Velo navy para que el texto siempre se lea */
.hero__velo {
  position: absolute;
  inset: 0;
  z-index: -1;
  background:
    linear-gradient(to right, var(--navy-velo-alto) 0%, var(--navy-velo) 55%, rgba(40, 55, 74, .55) 100%),
    linear-gradient(to top, rgba(40, 55, 74, .8) 0%, transparent 45%);
}

.hero__contenido { max-width: 780px; }
.hero__contenido .eyebrow { color: var(--sand); }
.hero h1 { margin-bottom: .45em; }
.hero .entradilla { margin-bottom: 2.4rem; max-width: 58ch; }

/* Indicador de scroll */
.hero__scroll {
  position: absolute;
  left: 50%;
  bottom: 2rem;
  transform: translateX(-50%);
  width: 1px;
  height: 56px;
  background: linear-gradient(to bottom, transparent, var(--sand));
  opacity: .7;
}
.hero__scroll::after {
  content: '';
  position: absolute;
  left: -2px;
  top: 0;
  width: 5px;
  height: 5px;
  border-radius: 50%;
  background: var(--sand);
  animation: bajar 2.6s var(--ease) infinite;
}
@keyframes bajar {
  0%        { transform: translateY(0);    opacity: 0; }
  25%       { opacity: 1; }
  75%, 100% { transform: translateY(52px); opacity: 0; }
}

/* Hero interior, más corto, para páginas secundarias */
.hero--interior {
  min-height: 62svh;
  padding-block: calc(var(--alto-nav) + 5rem) clamp(4rem, 8vh, 6rem);
}
/* Hero claro (contacto) */
.hero--claro { color: var(--navy); background: var(--sand); }
.hero--claro .eyebrow { color: var(--terracotta); }


/* ==========================================================================
   8. SECCIÓN ESTUDIO (texto + foto circular)
   ========================================================================== */

.duo {
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  gap: clamp(2.5rem, 6vw, 5.5rem);
  align-items: center;
}

.retrato {
  position: relative;
  width: min(100%, 400px);
  aspect-ratio: 1;
  margin-inline: auto;
  border-radius: 50%;
  overflow: hidden;
  box-shadow: 0 30px 70px -30px rgba(0, 0, 0, .6);
}
.retrato img { width: 100%; height: 100%; object-fit: cover; }
/* Aro decorativo alrededor de la foto */
.retrato::after {
  content: '';
  position: absolute;
  inset: -14px;
  border: 1px solid var(--sand-40);
  border-radius: 50%;
  pointer-events: none;
}


/* ==========================================================================
   9. TARJETAS (paquetes, reviews, FAQ)
   ========================================================================== */

/* --------------------------------------------------------------------------
   COMPONENTE .media — vídeo con imagen de respaldo
   --------------------------------------------------------------------------
   Se usa en las tarjetas de la portada y en los bloques de servicios.html.
   Estructura en el HTML:

     <div class="media tarjeta__media">
       <img   class="media__poster" src="assets/servicio-1.jpg" alt="...">
       <video class="media__video" data-src="assets/servicio-1.mp4" ...></video>
     </div>

   · La imagen va SIEMPRE debajo: se ve mientras el vídeo carga.
   · En móvil (≤640px) el vídeo se oculta y sólo queda la imagen: carga rápido.
   · El vídeo usa data-src en vez de src para que no se descargue hasta que
     entra en pantalla (lo gestiona main.js).
   -------------------------------------------------------------------------- */

.media {
  position: relative;
  overflow: hidden;
  background: var(--navy);   /* color de fondo mientras carga la imagen */
}

/* Variante a pantalla completa: el vídeo va DETRÁS del contenido de la sección.
   Se usa en el pie de página y en la sección "Una familia detrás de cada marca".
   El z-index negativo lo deja por debajo del texto pero por encima del color
   de fondo de la sección. */
.media--fondo {
  position: absolute;
  inset: 0;
  z-index: -2;
}
.media__poster,
.media__video {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
/* Zoom lentísimo al pasar el cursor, igual que tenían las imágenes */
.media__poster { transition: transform 1.1s var(--ease); }

/* El vídeo va ENCIMA de la imagen y la taparía. Arranca invisible y solo
   aparece cuando está reproduciendo de verdad (main.js le pone la clase al
   recibir el evento 'playing'). Así, si el navegador no deja reproducir
   —modo de bajo consumo en iOS, ahorro de datos, o simplemente mientras
   carga— se sigue viendo la imagen en vez de un rectángulo vacío. */
.media__video,
.hero__media video {
  opacity: 0;
  transition: opacity .7s var(--ease), transform 1.1s var(--ease);
}
.media__video.reproduciendo,
.hero__media video.reproduciendo { opacity: 1; }
.tarjeta:hover .media__poster,
.tarjeta:hover .media__video,
.servicio:hover .media__poster,
.servicio:hover .media__video { transform: scale(1.045); }

.rejilla {
  display: grid;
  gap: clamp(1.25rem, 2.5vw, 1.9rem);
}
.rejilla--4 { grid-template-columns: repeat(4, 1fr); }
.rejilla--3 { grid-template-columns: repeat(3, 1fr); }

.tarjeta {
  display: flex;
  flex-direction: column;
  margin: 0;                       /* anula el margen que traen <figure> y <blockquote> */
  padding: clamp(1.75rem, 3vw, 2.4rem);
  border-radius: var(--radio-tarjeta);
  border: 1px solid transparent;
  transition: transform var(--transicion),
              box-shadow var(--transicion),
              border-color var(--transicion);
}
.tarjeta:hover {
  transform: translateY(-6px);
  box-shadow: var(--sombra-alta);
}

/* Tarjeta sand (paquetes) */
.tarjeta--sand {
  background: var(--sand);
  color: var(--navy);
}
.tarjeta--sand:hover { border-color: var(--terracotta); }

/* Tarjeta blanca con borde (reviews, FAQ).
   Fija su propio color de texto: si no, dentro de una sección oscura heredaría
   el crema y el texto desaparecería sobre el fondo blanco. */
.tarjeta--borde {
  background: var(--blanco);
  border-color: var(--navy-10);
  color: var(--navy);
}
.tarjeta--borde:hover { border-color: var(--sand); }

.tarjeta h3 { margin-bottom: .55rem; }
.tarjeta p  { font-size: .97rem; line-height: 1.68; }

/* Icono superior de las tarjetas de paquete.
   (Ya no se usa en la portada, donde ahora va vídeo; se conserva por si
   quieres volver a los iconos: basta con recuperar el <div> en el HTML.) */
.tarjeta__icono {
  width: 42px;
  height: 42px;
  margin-bottom: 1.4rem;
  color: var(--terracotta);
  transition: transform var(--transicion);
}
.tarjeta__icono svg { width: 100%; height: 100%; display: block; }
.tarjeta:hover .tarjeta__icono { transform: translateY(-2px) scale(1.05); }

/* Vídeo de cabecera de las tarjetas de paquete.
   Los vídeos son verticales (828x1108), por eso la proporción 4/5. */
.tarjeta__media {
  aspect-ratio: 4 / 5;
  margin-bottom: 1.5rem;
  border-radius: calc(var(--radio-tarjeta) - 3px);
}
/* La tarjeta con vídeo aprieta un poco el padding para dar aire a la imagen */
.tarjeta--con-media { padding: clamp(1rem, 1.6vw, 1.25rem); }
.tarjeta--con-media h3,
.tarjeta--con-media p { padding-inline: clamp(.5rem, 1vw, .9rem); }
.tarjeta--con-media p:last-child { padding-bottom: clamp(.6rem, 1.2vw, 1rem); }

/* Número de orden discreto */
.tarjeta__numero {
  font-family: var(--fuente-titulo);
  font-size: .85rem;
  letter-spacing: .12em;
  color: var(--terracotta);
  margin-bottom: .9rem;
}

/* --- Reviews --- */
/* La cita va en terracotta: es el acento de la marca y funciona como
   destacado, igual que los titulares de las preguntas frecuentes. */
.review__texto {
  font-family: var(--fuente-titulo);
  font-size: clamp(1.05rem, 1rem + .4vw, 1.22rem);
  line-height: 1.5;
  letter-spacing: -.01em;
  margin: 0 0 1.6rem;
  color: var(--terracotta);
}
.review__autor {
  margin-top: auto;
  padding-top: 1.2rem;
  border-top: 1px solid var(--navy-10);
  font-size: .78rem;
  letter-spacing: .1em;
  text-transform: uppercase;
  line-height: 1.6;
}
.review__autor strong { display: block; font-weight: 600; }
.review__autor span   { opacity: .68; letter-spacing: .06em; text-transform: none; }
/* Comillas decorativas */
.review__comillas {
  font-family: var(--fuente-titulo);
  font-size: 3rem;
  line-height: .8;
  color: var(--sand);
  margin-bottom: .8rem;
}

/* --- FAQ --- */
.tarjeta--faq h3 { color: var(--terracotta); }


/* ==========================================================================
   10. BLOQUES DE SERVICIOS (imagen + texto alternados)
   ========================================================================== */

.servicio {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: clamp(2rem, 5vw, 4.5rem);
  align-items: center;
  padding-block: clamp(3rem, 6vw, 5rem);
  border-top: 1px solid var(--navy-10);
}
.servicio:first-of-type { border-top: 0; }

/* Alterna el orden en los bloques pares */
.servicio:nth-child(even) .servicio__media { order: 2; }

/* Proporción 3/4: es el formato real de los vídeos (828x1108, verticales) */
.servicio__media {
  border-radius: var(--radio-tarjeta);
  aspect-ratio: 3 / 4;
  box-shadow: var(--sombra-suave);
}

.servicio__numero {
  font-family: var(--fuente-titulo);
  font-size: .9rem;
  letter-spacing: .14em;
  color: var(--terracotta);
  margin-bottom: 1rem;
}
.servicio h2 { font-size: clamp(1.8rem, 1.35rem + 1.8vw, 2.6rem); }


/* ==========================================================================
   11. SECCIÓN CON IMAGEN DE FONDO Y VELO
   ========================================================================== */

.seccion--imagen {
  position: relative;
  isolation: isolate;
  color: var(--crema);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}
/* Velo navy sobre la foto. Sube las opacidades si tu imagen es muy clara y el
   texto pierde legibilidad; bájalas si quieres que se vea más la foto. */
.seccion--imagen::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(to bottom, rgba(40, 55, 74, .84), rgba(40, 55, 74, .70));
}
.seccion--imagen .eyebrow { color: var(--sand); }

/* --------------------------------------------------------------------------
   SECCIÓN CON VÍDEO DE FONDO
   --------------------------------------------------------------------------
   Igual que .seccion--imagen pero con vídeo. Necesita dentro un
   <div class="media media--fondo"> con su imagen y su vídeo.
   -------------------------------------------------------------------------- */
.seccion--video {
  position: relative;
  isolation: isolate;
  color: var(--crema);
}
/* Velo navy para que el texto se lea sobre el vídeo.
   Sube las opacidades si tu vídeo es claro; bájalas para verlo más. */
.seccion--video::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(to bottom, rgba(40, 55, 74, .86), rgba(40, 55, 74, .93));
}
.seccion--video .eyebrow { color: var(--sand); }

/* Variante con el velo del hero (más suave arriba a la derecha), para que las
   secciones que repiten el vídeo del hero se sientan de la misma familia. */
.seccion--video--hero::before {
  background:
    linear-gradient(to right, var(--navy-velo-alto) 0%, var(--navy-velo) 55%, rgba(40, 55, 74, .55) 100%),
    linear-gradient(to top, rgba(40, 55, 74, .8) 0%, transparent 45%);
}

/* --------------------------------------------------------------------------
   KEN BURNS — zoom lentísimo sobre una imagen fija
   --------------------------------------------------------------------------
   Se usa en el hero de estudio.html: en vez de cargar el vídeo (3,4 MB) se
   muestra su primer fotograma (100 KB) con un zoom que da sensación de
   movimiento. La página pesa 34 veces menos.
   Se anima `transform`, que va por GPU; animar background-size daría tirones.
   -------------------------------------------------------------------------- */
/* Zoom + desplazamiento suave. El desplazamiento es lo que hace que el
   movimiento se note: solo con zoom, a esta lentitud, casi no se percibe.
   La escala nunca baja de 1.05 para que al desplazarse no asome ningún borde.
   Para más o menos movimiento, toca la escala final (1.14) o la duración. */
@keyframes ken-burns {
  from { transform: scale(1.05) translate3d(-1.5%, -1%, 0); }
  to   { transform: scale(1.14) translate3d(1.5%,  1%, 0); }
}
.ken-burns {
  animation: ken-burns 24s ease-in-out infinite alternate;
  transform-origin: center;
  will-change: transform;   /* lo manda a la GPU: movimiento sin tirones */
}

/* Columnas del proceso */
.paso { padding-top: 1.75rem; border-top: 1px solid var(--sand-40); }
.paso__numero {
  font-family: var(--fuente-titulo);
  font-size: 2.2rem;
  line-height: 1;
  color: var(--sand);
  margin-bottom: 1rem;
  opacity: .85;
}
.paso h3 { margin-bottom: .6rem; }
.paso p  { font-size: .97rem; opacity: .88; }


/* ==========================================================================
   12. PÁGINA CONTACTO — arco decorativo con monograma
   ========================================================================== */

.bloque-formulario { text-align: center; }
.bloque-formulario h2 { margin-bottom: .35rem; }
.bloque-formulario .subtitulo {
  font-size: 1.05rem;
  opacity: .75;
  margin-bottom: 2.4rem;
}

/* Medio óvalo terracotta con el monograma centrado */
.arco {
  position: relative;
  width: min(90%, 460px);
  aspect-ratio: 5 / 4;
  margin: clamp(3.5rem, 8vw, 6rem) auto 0;
  background: var(--terracotta);
  border-radius: 50% 50% 0 0 / 62% 62% 0 0;
  display: grid;
  place-items: center;
  overflow: hidden;
}
/* monograma.png trae mucho margen alrededor de la marca y su fondo es
   exactamente el terracotta de marca (#754437), así que se funde con el arco:
   por eso se coloca grande, sin que se note el borde del cuadrado. */
.arco img {
  width: 82%;
  max-width: 360px;
  height: auto;
  object-fit: contain;
  transform: translateY(-2%);
}
/* Aro interior sutil dentro del arco */
.arco::before {
  content: '';
  position: absolute;
  inset: 18px;
  border: 1px solid var(--sand-40);
  border-radius: 50% 50% 0 0 / 62% 62% 0 0;
  pointer-events: none;
}

/* Tarjetas de contacto directo: email, teléfono, WhatsApp e Instagram */
.contacto-directo {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  gap: 1px;
  background: var(--navy-16);
  border: 1px solid var(--navy-16);
  border-radius: var(--radio-tarjeta);
  overflow: hidden;
  margin-top: clamp(2.5rem, 5vw, 3.5rem);
}
.contacto-directo a {
  display: flex;
  flex-direction: column;
  align-items: center;
  background: var(--crema);
  padding: 1.9rem 1.25rem;
  text-decoration: none;
  text-align: center;
  transition: background-color var(--transicion), color var(--transicion);
}
.contacto-directo a:hover { background: var(--sand); color: var(--terracotta); }

/* El icono hereda el color del enlace, así cambia solo al pasar el cursor */
.contacto-directo svg {
  width: 24px;
  height: 24px;
  margin-bottom: .9rem;
  color: var(--terracotta);
  flex: none;
}
.contacto-directo .etiqueta {
  display: block;
  font-size: .68rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--terracotta);
  margin-bottom: .5rem;
}
/* El dato en sí (correo, número): se selecciona con un doble clic para copiar */
.contacto-directo .valor {
  font-size: .95rem;
  line-height: 1.45;
  word-break: break-word;
}


/* ==========================================================================
   13. PIE DE PÁGINA
   ========================================================================== */

/* El fondo lo pone el <div class="media media--fondo"> que va dentro del pie
   (vídeo hero-poster.mp4 con footer-bg.jpg de respaldo). El navy de aquí es
   solo el color de seguridad mientras carga. */
.pie {
  position: relative;
  isolation: isolate;
  color: var(--crema);
  background: var(--navy);
  padding-block: var(--seccion-y) 2.5rem;
  text-align: center;
}
/* Velo para que el vídeo quede como textura y el texto se lea */
.pie::before {
  content: '';
  position: absolute;
  inset: 0;
  z-index: -1;
  background: linear-gradient(to bottom, rgba(40, 55, 74, .80), rgba(40, 55, 74, .90));
}

.pie h2 { margin-bottom: 1rem; }
.pie .entradilla {
  margin: 0 auto 2.4rem;
  max-width: 48ch;
  opacity: .85;
}
.pie__lema {
  margin-top: 2.2rem;
  font-size: .74rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  color: var(--sand);
}

.pie__base {
  margin-top: clamp(3.5rem, 7vw, 5rem);
  padding-top: 2rem;
  border-top: 1px solid rgba(211, 199, 173, .22);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  justify-content: space-between;
  gap: 1.25rem;
  text-align: left;
}
.pie__copyright { font-size: .82rem; opacity: .7; margin: 0; }

.pie__redes {
  display: flex;
  align-items: center;
  gap: 1.5rem;
}
.pie__redes a {
  display: inline-flex;
  align-items: center;
  gap: .55rem;
  text-decoration: none;
  font-size: .8rem;
  letter-spacing: .06em;
  opacity: .82;
  transition: opacity var(--transicion), color var(--transicion);
}
.pie__redes a:hover { opacity: 1; color: var(--sand); }
.pie__redes svg { width: 17px; height: 17px; flex: none; }


/* ==========================================================================
   14. ANIMACIONES DE APARICIÓN (las activa main.js)
   ========================================================================== */

/* Estado inicial: invisible y ligeramente desplazado hacia abajo */
.reveal {
  opacity: 0;
  transform: translateY(26px);
  transition: opacity .9s var(--ease), transform .9s var(--ease);
  transition-delay: var(--retraso, 0ms);
  will-change: opacity, transform;
}
.reveal.visible {
  opacity: 1;
  transform: none;
}

/* Entrada del hero al cargar la página */
.entrada-hero > * {
  opacity: 0;
  transform: translateY(22px);
  animation: aparecer .95s var(--ease) forwards;
}
.entrada-hero > *:nth-child(1) { animation-delay: .15s; }
.entrada-hero > *:nth-child(2) { animation-delay: .28s; }
.entrada-hero > *:nth-child(3) { animation-delay: .41s; }
.entrada-hero > *:nth-child(4) { animation-delay: .54s; }
.entrada-hero > *:nth-child(5) { animation-delay: .67s; }

@keyframes aparecer {
  to { opacity: 1; transform: none; }
}


/* ==========================================================================
   15. RESPONSIVE
   ========================================================================== */

/* --- Tablet --- */
@media (max-width: 1024px) {
  .rejilla--4 { grid-template-columns: repeat(2, 1fr); }
  .duo { grid-template-columns: 1fr; }
  .duo .retrato { order: -1; width: min(100%, 320px); }
  /* Las cuatro vías de contacto pasan a dos filas de dos */
  .contacto-directo { grid-template-columns: repeat(2, 1fr); }

  .servicio { grid-template-columns: 1fr; }
  .servicio:nth-child(even) .servicio__media { order: 0; }
  /* En una sola columna el vídeo vertical se limita para no comerse la pantalla */
  .servicio__media { width: min(100%, 440px); margin-inline: auto; }
}

/* --- Móvil: menú hamburguesa --- */
@media (max-width: 860px) {
  :root { --alto-nav: 68px; }

  .hamburguesa { display: flex; }

  /* La barra siempre con fondo en móvil para que el menú se lea */
  .nav {
    background: var(--crema-70);
    -webkit-backdrop-filter: blur(14px);
    backdrop-filter: blur(14px);
    --nav-color: var(--navy);
  }

  /* Panel desplegable a pantalla completa */
  .nav__menu {
    position: fixed;
    inset: var(--alto-nav) 0 auto 0;
    flex-direction: column;
    align-items: flex-start;
    gap: 0;
    background: var(--crema);
    border-bottom: 1px solid var(--navy-10);
    padding: 1rem var(--gutter) 2rem;
    transform: translateY(-12px);
    opacity: 0;
    visibility: hidden;
    pointer-events: none;
    transition: opacity .35s var(--ease), transform .35s var(--ease), visibility .35s;
  }
  .nav__menu.abierto {
    transform: none;
    opacity: 1;
    visibility: visible;
    pointer-events: auto;
  }
  .nav__menu li { width: 100%; }
  .nav__enlace {
    display: block;
    width: 100%;
    padding: 1.05rem 0;
    font-size: .85rem;
    border-bottom: 1px solid var(--navy-10);
  }
  .nav__enlace::after { display: none; }
  .nav__menu li:last-child .nav__enlace { border-bottom: 0; }

  .idioma { margin-left: auto; margin-right: .35rem; }
}

/* --- Móvil pequeño --- */
@media (max-width: 640px) {
  :root { --seccion-y: clamp(4rem, 14vw, 5.5rem); }

  /* En móvil los vídeos SÍ se reproducen, igual que en escritorio.
     La imagen de respaldo sigue debajo: se ve mientras el vídeo carga y es lo
     que queda si el móvil está en modo de bajo consumo (iOS bloquea el
     autoplay en ese caso y no hay forma de forzarlo). */

  .rejilla--4,
  .rejilla--3 { grid-template-columns: 1fr; }

  /* En móvil las vías de contacto se apilan: cada una a lo ancho y bien
     grande para acertar con el dedo */
  .contacto-directo { grid-template-columns: 1fr; }
  /* Alineados a la izquierda, no centrados: así los iconos caen todos en la
     misma columna y la lista se lee de un vistazo. Centrarlos dejaría cada
     icono en una posición distinta, porque los textos miden distinto. */
  .contacto-directo a {
    flex-direction: row;
    align-items: center;
    gap: 1rem;
    justify-content: flex-start;
    padding: 1.35rem clamp(1.25rem, 6vw, 2rem);
  }
  .contacto-directo svg { margin-bottom: 0; }
  .contacto-directo .etiqueta { margin-bottom: .15rem; }
  .contacto-directo a > div { text-align: left; }

  .hero { min-height: 92svh; }
  .hero__scroll { display: none; }

  .grupo-botones .boton { flex: 1 1 100%; justify-content: center; }

  .pie__base { flex-direction: column; text-align: center; }
  .nav__logo span { font-size: 1rem; }
  .nav__interior { gap: 1rem; }   /* más aire para el selector de idioma */
}

/* --- Móviles muy estrechos (≤360px) --- */
@media (max-width: 360px) {
  /* Ya no cabe el nombre junto al selector ES/EN: se queda solo la marca */
  .nav__logo span { display: none; }
}


/* ==========================================================================
   16. MOVIMIENTO REDUCIDO — respeta la preferencia del sistema
   ========================================================================== */

@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
  .reveal { opacity: 1; transform: none; }
  .entrada-hero > * { opacity: 1; transform: none; animation: none; }
  .tarjeta:hover,
  .tarjeta:hover .media__poster,
  .tarjeta:hover .media__video,
  .servicio:hover .media__poster,
  .servicio:hover .media__video { transform: none; }

  /* El zoom Ken Burns se desactiva del todo (la regla global lo dejaría
     congelado a mitad de camino, ya ampliado). */
  .ken-burns { animation: none !important; transform: none !important; }
}


/* ==========================================================================
   17. IMPRESIÓN
   ========================================================================== */

@media print {
  .nav, .hero__media, .hero__scroll { display: none !important; }
  body { background: #fff; color: #000; }
  .reveal { opacity: 1; transform: none; }
}
