/* =========================================================
   Atelier de Beauté — Hoja de estilos
   ---------------------------------------------------------
   Índice:
     1.  Variables y reset
     2.  Tipografía base
     3.  Utilidades (fil, skip link)
     4.  Nav + menú hamburguesa
     5.  Hero
     6.  Estado (abierto / cerrado)
     7.  Secciones genéricas
     8.  Soins (servicios)
     9.  Vitrina (galería: passe-partout y óvalos)
     10. Mots (reseñas)
     11. Rendez-vous (horario y contacto)
     12. Formulario + mapa
     13. FAQ
     14. Flotantes
     15. Footer
     16. Páginas de texto legal
     17. Consentimiento en el formulario de cita
     18. Mapa con carga diferida por consentimiento
     19. Banner de cookies
     20. Enlaces legales del footer
     21. Utilidad .vh (solo lectores de pantalla)
     22. Nav: utilidades
     23. Tarifas
     24. (libre — fusionada en la 9)
     25. Lightbox de la galería
     26. Quiénes somos
     27. Cuidados post-servicio
     28. Bonos y tarjetas regalo
     29. Reseñas: firma y enlace a Google
     30. Reserva online
     31. Contacto: cómo llegar + ayuda del formulario
     32. Portada de página interior
     33. Enlace «ver más» a la página de detalle
     34. Vídeo de fondo del hero
     35. Carta compacta de la home
     36. Servicios: pestañas y fichas editoriales
     37. Comparador de acabados
     38. Asistente flotante «Te ayudo a elegir»
     39. Redes en la barra de navegación
   ========================================================= */


/* =========================================================
   1. VARIABLES Y RESET
   ---------------------------------------------------------
   Dos familias de tokens:
     · Tonos de marca (--lino, --dorado, --rose): SOLO para
       bordes, puntos, líneas y decoración, donde WCAG 1.4.3
       no aplica. NO usar como color de texto.
     · Tonos de texto (--lino-txt, --dorado-txt, --rose-txt,
       --verde-txt): mismo matiz, oscurecidos lo justo para
       superar 4.5:1 sobre --porcelana, --poudre y blanco.
   Ratios medidos (fórmula de luminancia relativa WCAG 2.1):
     --lino-txt   #6D5E57 → porcelana 5.82 · poudre 4.51 · blanco 6.20
     --dorado-txt #765D35 → porcelana 5.82 · poudre 4.52 · blanco 6.20
     --rose-txt   #A75E53 → porcelana 4.51 · blanco 4.81
     --verde-txt  #4E7551 → porcelana 4.94
   ========================================================= */
:root{
  color-scheme:light;

  --porcelana:#FBF7F4;
  --poudre:#EBD8D3;
  --rose:#C99A93;
  --ciruela:#4A2E33;
  --lino:#A99A93;
  --dorado:#B8965F;

  /* Variantes accesibles para texto (ver ratios arriba) */
  --lino-txt:#6D5E57;
  --dorado-txt:#765D35;
  --rose-txt:#A75E53;
  --verde-txt:#4E7551;

  /* --- Tokens extraídos de valores antes escritos a mano ---
     Existían ya en la hoja como literales repetidos (#fff,
     #6d5a57, #F0E4DF…). Se convierten en tokens para poder
     reajustar la paleta desde un solo sitio.
     Ratios medidos sobre los fondos reales donde se usan:
       --gris-txt  #6D5A57 → porcelana 6.06 · superficie 6.53 · poudre 4.70
       --pend-txt  #5A4212 → --pend-fondo 7.75 */
  --superficie:#FFFFFF;      /* tarjetas, campos de formulario */
  --borde:#F0E4DF;           /* filetes y bordes de tarjeta */
  --borde-suave:#F3E9E5;     /* separadores internos de lista */
  --gris-txt:#6D5A57;        /* párrafo secundario sobre superficie */
  --pend-fondo:#F7E7C8;      /* resalte de dato pendiente */
  --pend-txt:#5A4212;
  --sombra:rgba(74,46,51,.28);

  /* Fondos translúcidos de la nav sticky */
  --nav-fondo:rgba(251,247,244,.92);
  --nav-panel:rgba(251,247,244,.98);

  /* Degradados decorativos de óvalos y camafeos */
  --deg-1a:#F8ECE8; --deg-1b:#EBD8D3;
  --deg-2a:#F3E0DA; --deg-2b:#E5CCC6;
  --deg-3a:#FAF1EC; --deg-3b:#EDD9CF;
  --deg-cameo:#F6E9E5;
}

*{margin:0;padding:0;box-sizing:border-box}
html{scroll-behavior:smooth}
/* Las anclas no deben quedar tapadas por la nav sticky (~80px). */
:target,section[id],header[id],main[id]{scroll-margin-top:6rem}


/* =========================================================
   2. TIPOGRAFÍA BASE
   ========================================================= */
body{background:var(--porcelana);color:var(--ciruela);font-family:'Jost',sans-serif;font-weight:300;line-height:1.7}
::selection{background:var(--poudre);color:var(--ciruela)}
/* El foco visible debe cubrir TODOS los elementos enfocables, no solo <a>. */
a:focus-visible,
button:focus-visible,
input:focus-visible,
select:focus-visible,
textarea:focus-visible,
summary:focus-visible{outline:2px solid var(--rose-txt);outline-offset:3px}

@media(prefers-reduced-motion:reduce){
  html{scroll-behavior:auto}
}


/* =========================================================
   3. UTILIDADES
   ========================================================= */
.fil{height:1px;background:linear-gradient(90deg,transparent,var(--rose),transparent);max-width:520px;margin:0 auto}

/* Skip link: oculto hasta recibir el foco por teclado. */
.saltar{position:absolute;left:1rem;top:-100px;z-index:200;
  background:var(--ciruela);color:var(--porcelana);
  font-size:.72rem;letter-spacing:.28em;text-transform:uppercase;text-decoration:none;
  padding:.85rem 1.8rem;border-radius:100px;
  transition:top .2s}
.saltar:focus{top:1rem}


/* =========================================================
   4. NAV + MENÚ HAMBURGUESA
   ========================================================= */
nav{display:flex;justify-content:space-between;align-items:center;padding:1.4rem clamp(1.4rem,6vw,5rem);position:sticky;top:0;background:var(--nav-fondo);-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);z-index:50}
.marque{font-family:'Cormorant Garamond',serif;font-size:1.45rem;font-weight:500;letter-spacing:.05em;color:var(--ciruela);text-decoration:none}
.marque i{font-style:italic;color:var(--rose)}
nav ul{display:flex;gap:2.4rem;list-style:none;align-items:center}
nav a{color:var(--lino-txt);text-decoration:none;font-size:.78rem;text-transform:uppercase;letter-spacing:.28em;transition:color .25s}
nav a:hover{color:var(--ciruela)}
.rdv{border:1px solid var(--ciruela);color:var(--ciruela)!important;padding:.55rem 1.4rem;border-radius:100px}
.rdv:hover{background:var(--ciruela);color:var(--porcelana)!important}

/* Botón hamburguesa — mismo lenguaje que .rdv: píldora de 100px,
   trazo fino en ciruela. Solo aparece en móvil y solo si hay JS. */
.burger{display:none;width:46px;height:46px;flex:0 0 auto;
  align-items:center;justify-content:center;
  background:transparent;border:1px solid var(--ciruela);border-radius:100px;
  cursor:pointer;transition:background .25s}
.burger:hover{background:var(--poudre)}
.burger-lineas{display:block;width:18px}
.burger-lineas span{display:block;height:1px;background:var(--ciruela);border-radius:1px;
  transition:transform .25s,opacity .2s}
.burger-lineas span+span{margin-top:5px}
/* Estado abierto: las tres líneas se convierten en aspa. */
.burger[aria-expanded="true"] .burger-lineas span:nth-child(1){transform:translateY(6px) rotate(45deg)}
.burger[aria-expanded="true"] .burger-lineas span:nth-child(2){opacity:0}
.burger[aria-expanded="true"] .burger-lineas span:nth-child(3){transform:translateY(-6px) rotate(-45deg)}

/* Con «Inicio» en el menú son seis enlaces más la píldora de cita.
   Entre tablet y portátil pequeño la fila se aprieta un poco para
   no desbordar antes de llegar a la hamburguesa (760px). */
@media(min-width:761px) and (max-width:1150px){
  nav ul{gap:1.4rem}
  nav a{font-size:.74rem;letter-spacing:.18em}
  .rdv{padding:.5rem 1.05rem}
}

@media(max-width:760px){
  /* Sin JS: la navegación se conserva y simplemente se envuelve
     en dos filas. Nunca desaparece (antes hacía display:none). */
  nav{flex-wrap:wrap;row-gap:.9rem}
  nav ul{flex-wrap:wrap;justify-content:center;width:100%;gap:1rem 1.6rem}

  /* Con JS: hamburguesa + panel desplegable. */
  .js .burger{display:inline-flex}
  .js nav ul{
    display:none;
    position:absolute;top:100%;left:0;right:0;width:auto;margin:0;
    flex-direction:column;align-items:stretch;gap:0;
    padding:.4rem clamp(1.4rem,6vw,5rem) 1.6rem;
    background:var(--nav-panel);
    -webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);
    border-bottom:1px solid var(--poudre);
    box-shadow:0 26px 44px -30px rgba(74,46,51,.5)
  }
  .js nav.abierto ul{display:flex}
  .js nav ul li{border-bottom:1px solid var(--borde)}
  .js nav ul li:last-child{border-bottom:0}
  .js nav ul a{display:block;padding:1.05rem .2rem}
  .js nav ul .rdv{text-align:center;margin-top:1.1rem;padding:.9rem 1.4rem}
}
@media(prefers-reduced-motion:reduce){
  .burger-lineas span{transition:none}
}


/* =========================================================
   5. HERO (con camafeo oval)
   ========================================================= */
.hero{text-align:center;padding:clamp(3rem,8vw,6rem) 1.4rem clamp(3.5rem,9vw,6.5rem)}
.sur{font-size:.72rem;letter-spacing:.45em;text-transform:uppercase;color:var(--dorado-txt);display:block;margin-bottom:2rem}
h1{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:clamp(2.8rem,7.5vw,5.6rem);line-height:1.06;letter-spacing:.01em}
h1 i{font-style:italic;color:var(--rose-txt)}
.hero p.lead{max-width:52ch;margin:1.8rem auto 0;color:var(--lino-txt);font-size:1.02rem}
.cameo{width:min(240px,58vw);aspect-ratio:3/4;margin:3rem auto 0;border-radius:50%/38%;border:1px solid var(--rose);position:relative;display:flex;align-items:center;justify-content:center;max-width:100%;background:
 radial-gradient(ellipse at 50% 30%, var(--deg-cameo), var(--poudre));animation:breathe 7s ease-in-out infinite}
.cameo::before{content:"";position:absolute;inset:9px;border:1px solid rgba(184,150,95,.5);border-radius:50%/38%}
.cameo span{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.35rem;color:var(--ciruela);text-align:center;line-height:1.4;padding:0 1.4rem}
@keyframes breathe{0%,100%{transform:scale(1)}50%{transform:scale(1.02)}}
@media(prefers-reduced-motion:reduce){.cameo{animation:none}.soin,.mot{opacity:1!important;transform:none!important;transition:none!important}}
.hero-actions{margin-top:2.8rem;display:flex;gap:1.2rem;justify-content:center;flex-wrap:wrap}
.btn{font-size:.78rem;letter-spacing:.28em;text-transform:uppercase;text-decoration:none;padding:.95rem 2.4rem;border-radius:100px;transition:all .25s}
.btn-plein{background:var(--ciruela);color:var(--porcelana)}
.btn-plein:hover{background:var(--rose-txt)}
.btn-vide{border:1px solid var(--rose);color:var(--ciruela)}
.btn-vide:hover{background:var(--poudre)}


/* =========================================================
   6. ESTADO (badge abierto / cerrado)
   El badge está en el HTML con clase neutra; JS solo cambia
   clase y texto, por lo que no provoca salto de layout.
   ========================================================= */
.estado{display:inline-flex;align-items:center;gap:.55rem;font-size:.68rem;letter-spacing:.3em;text-transform:uppercase;margin-top:1.4rem;color:var(--lino-txt);min-height:1.6em}
.estado .dot{width:8px;height:8px;border-radius:50%;background:var(--lino);flex:0 0 auto}
.estado.on{color:var(--verde-txt)}.estado.on .dot{background:var(--verde-txt)}
.estado.off{color:var(--rose-txt)}.estado.off .dot{background:var(--rose-txt)}


/* =========================================================
   7. SECCIONES GENÉRICAS
   ========================================================= */
section{padding:clamp(3.5rem,8vw,6.5rem) clamp(1.4rem,6vw,5rem)}
.sec-sur{font-size:.7rem;letter-spacing:.45em;text-transform:uppercase;color:var(--dorado-txt);display:block;text-align:center;margin-bottom:1rem}
h2{font-family:'Cormorant Garamond',serif;font-weight:400;font-size:clamp(2rem,5vw,3.2rem);text-align:center;margin-bottom:.6rem}
.sec-note{text-align:center;color:var(--lino-txt);max-width:50ch;margin:0 auto 3.4rem}


/* =========================================================
   8. SOINS (servicios)
   El contenido solo se oculta si hay JS (clase .js en <html>).
   Sin JS todo es visible desde el primer paint.
   ========================================================= */
.soins{display:grid;grid-template-columns:repeat(3,1fr);gap:2.4rem;max-width:1100px;margin:0 auto}
.soin{text-align:center;padding:2.6rem 1.8rem;background:var(--superficie);border-radius:180px 180px 18px 18px;border:1px solid var(--borde);transition:opacity .6s,transform .6s,box-shadow .3s}
.js .soin{opacity:0;transform:translateY(20px)}
.js .soin.vis{opacity:1;transform:none}
.soin:hover{box-shadow:0 18px 40px -18px rgba(74,46,51,.18)}
.soin .num{font-family:'Cormorant Garamond',serif;font-style:italic;color:var(--rose-txt);font-size:1.1rem}
.soin h3{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:1.7rem;margin:.6rem 0 1.1rem}
.soin ul{list-style:none;color:var(--lino-txt);font-size:.93rem}
.soin li{padding:.42rem 0}
.soin li+li{border-top:1px solid var(--borde-suave)}
@media(max-width:880px){.soins{grid-template-columns:1fr;max-width:420px}}


/* =========================================================
   9. VITRINA (galería de trabajos)
   ---------------------------------------------------------
   Dos variantes sobre EL MISMO marcado:
       figure.vit-item > a.vit-link > picture > img
   El <picture> lleva display:contents, así que quien hereda la
   caja es el <img>, hijo directo del enlace (variante marco) o
   del <span class="ovalo"> (variante óvalo).

     · .vitrina--marco → passe-partout escalonado. Home.
       Respeta el cuadrado original de la foto: no recorta nada.
     · .vitrina--ovalo → camafeo ovalado. trabajos.html.
       Recorta a 3/4 vertical; repite el óvalo de "Quiénes somos".

   IMPORTANTE: el tamaño del <img> se define SIEMPRE en una de
   las dos variantes. Un .vitrina sin variante deja la imagen a
   su tamaño intrínseco (1200 px) y desborda la rejilla.
   ========================================================= */
.vitrina{display:grid;max-width:1100px;margin:0 auto}
.vitrina figure{margin:0}
.vit-link{display:block;text-decoration:none;cursor:zoom-in}
.vit-link picture{display:contents}
.vit-link:focus-visible{outline:2px solid var(--rose-txt);outline-offset:6px}

/* --- 9.a  PASSE-PARTOUT (Home) -------------------------------
   La foto va montada como un cuadro: marco blanco por tres
   lados y el pie ocupando el cuarto, como el cartón de un
   passe-partout de verdad. ---------------------------------- */
.vitrina--marco{grid-template-columns:repeat(auto-fit,minmax(230px,1fr));
  gap:clamp(1.5rem,4vw,2.5rem);align-items:start;max-width:1060px}
.vitrina--marco figure{background:var(--superficie);padding:14px 14px 0;
  border:1px solid var(--borde);box-shadow:0 14px 34px -22px var(--sombra);
  transition:transform .4s,box-shadow .4s}
.vitrina--marco figure:hover{transform:translateY(-6px);box-shadow:0 22px 44px -22px var(--sombra)}
.vitrina--marco .vit-link{overflow:hidden}
.vitrina--marco .vit-link img{display:block;width:100%;height:auto;
  aspect-ratio:1/1;object-fit:cover;transition:transform .6s}
.vitrina--marco .vit-link:hover img{transform:scale(1.04)}
.vitrina--marco figcaption{padding:1rem .2rem 1.1rem;text-align:center;
  font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1rem;color:var(--ciruela)}
/* El escalonado solo cuando de verdad hay tres columnas: apilado
   en una sola, ese margen se leería como un hueco suelto. */
@media(min-width:820px){
  .vitrina--marco figure:nth-child(2){margin-top:2.75rem}
}

/* --- 9.b  ÓVALOS (trabajos.html) ----------------------------- */
.vitrina--ovalo{grid-template-columns:repeat(auto-fit,minmax(200px,1fr));
  gap:clamp(1.5rem,4vw,2.75rem);max-width:1000px}
.vitrina--ovalo .vit-link{border-radius:50%/38%}
.vitrina--ovalo .ovalo{position:relative;display:block;aspect-ratio:3/4;
  border-radius:50%/38%;overflow:hidden;border:1px solid var(--rose);
  background:radial-gradient(ellipse at 50% 40%,var(--deg-1a),var(--deg-1b));
  transition:transform .4s}
/* Filete dorado interior. Va en ::after para no pisar el
   degradado de reserva del propio óvalo. */
.vitrina--ovalo .ovalo::after{content:"";position:absolute;inset:8px;
  border:1px solid rgba(184,150,95,.45);border-radius:50%/38%;pointer-events:none;z-index:2}
.vitrina--ovalo .ovalo img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:cover;display:block}
.vitrina--ovalo .vit-link:hover .ovalo{transform:scale(1.02)}
.vitrina--ovalo figcaption{margin-top:.9rem;text-align:center;
  font-family:'Jost',sans-serif;font-size:.66rem;letter-spacing:.28em;
  text-transform:uppercase;color:var(--lino-txt)}

@media(prefers-reduced-motion:reduce){
  .vitrina--marco figure,.vitrina--marco .vit-link img,.vitrina--ovalo .ovalo{transition:none}
  .vitrina--marco figure:hover,.vitrina--marco .vit-link:hover img,
  .vitrina--ovalo .vit-link:hover .ovalo{transform:none}
}


/* =========================================================
   10. MOTS (reseñas) — fondo --poudre
   ========================================================= */
.mots{background:var(--poudre)}
.mots h2,.mots .sec-sur{color:var(--ciruela)}
.mots-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(250px,1fr));gap:2rem;max-width:1100px;margin:0 auto}
.mot{background:var(--porcelana);padding:2.4rem 2rem;border-radius:14px;text-align:center;transition:opacity .6s,transform .6s}
.js .mot{opacity:0;transform:translateY(20px)}
.js .mot.vis{opacity:1;transform:none}
.mot::before{content:"“";font-family:'Cormorant Garamond',serif;font-size:3rem;color:var(--rose);line-height:.4;display:block;margin-bottom:1rem}
.mot p{font-size:.95rem;color:var(--gris-txt)}
.mot .cinq{margin-top:1.2rem;color:var(--dorado-txt);letter-spacing:.35em;font-size:.8rem}


/* =========================================================
   11. RENDEZ-VOUS (horario y contacto)
   ========================================================= */
.rdv-grid{display:grid;grid-template-columns:1fr 1fr;gap:4rem;max-width:1000px;margin:0 auto;align-items:start}
.rdv-grid h3{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:1.5rem;margin-bottom:1.4rem}
.horaires{list-style:none;font-size:.95rem}
.horaires li{display:flex;justify-content:space-between;gap:1rem;padding:.7rem 0;border-bottom:1px solid var(--borde)}
.horaires .j{color:var(--lino-txt);text-transform:uppercase;font-size:.75rem;letter-spacing:.22em;padding-top:.2rem}
.horaires .h{text-align:right}
.horaires .ferme{color:var(--rose-txt);font-style:italic;font-family:'Cormorant Garamond',serif;font-size:1.05rem}
.coord p{margin-bottom:1.1rem;color:var(--gris-txt);font-size:.98rem}
.coord strong{display:block;font-weight:500;color:var(--ciruela);text-transform:uppercase;font-size:.72rem;letter-spacing:.28em;margin-bottom:.25rem}
.coord a{color:var(--ciruela);text-decoration:underline;text-decoration-color:var(--rose);text-underline-offset:5px}
@media(max-width:820px){.rdv-grid{grid-template-columns:1fr;gap:2.5rem}}


/* =========================================================
   12. FORMULARIO + MAPA
   ========================================================= */
.fm-grid{display:grid;grid-template-columns:1fr 1fr;gap:3rem;max-width:1050px;margin:0 auto}
/* El formulario depende de JS para componer el mensaje de WhatsApp:
   sin JS se oculta y el <noscript> ofrece teléfono y enlace directo. */
.wa-form{display:none;flex-direction:column;gap:1.1rem}
.js .wa-form{display:flex}
.wa-form label{font-size:.68rem;letter-spacing:.3em;text-transform:uppercase;color:var(--dorado-txt)}
.wa-form input,.wa-form select,.wa-form textarea{width:100%;background:var(--superficie);border:1px solid var(--borde);color:var(--ciruela);padding:.9rem 1.1rem;font-family:'Jost',sans-serif;font-weight:300;font-size:.95rem;margin-top:.4rem;border-radius:10px}
.wa-form input:focus,.wa-form select:focus,.wa-form textarea:focus{outline:none;border-color:var(--rose-txt);box-shadow:0 0 0 3px rgba(201,154,147,.35)}
.wa-form textarea{resize:vertical;min-height:110px}
.wa-btn{background:var(--ciruela);color:var(--porcelana);border:none;font-family:'Jost',sans-serif;font-size:.8rem;letter-spacing:.28em;text-transform:uppercase;padding:1rem 2rem;border-radius:100px;cursor:pointer;transition:background .25s}
.wa-btn:hover{background:#25D366;color:#0b2e17}
/* Bloque de respaldo sin JavaScript */
.sin-js{background:var(--superficie);border:1px solid var(--borde);border-radius:24px;padding:2.2rem 1.8rem;text-align:center}
.sin-js h3{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:1.5rem;margin-bottom:.8rem}
.sin-js p{color:var(--gris-txt);font-size:.98rem;margin-bottom:1.6rem}
.sin-js a[href^="tel:"]{color:var(--ciruela);text-decoration:underline;text-decoration-color:var(--rose);text-underline-offset:5px}
.sin-js .btn{display:inline-block}
.mapa{border-radius:24px;overflow:hidden;border:1px solid var(--borde);min-height:360px}
/* En la Home el mapa cierra el bloque horario + dónde encontrarnos:
   mismo ancho máximo que .rdv-grid (1000px) y centrado, para que
   los tres elementos compartan el mismo eje y los mismos bordes. */
.rdv-mapa{max-width:1000px;margin:3rem auto 0}
@media(max-width:820px){.rdv-mapa{margin-top:2.5rem}}
.mapa iframe{width:100%;height:100%;min-height:360px;border:0;filter:sepia(.15) saturate(.85)}
@media(max-width:820px){.fm-grid{grid-template-columns:1fr}}


/* =========================================================
   13. FAQ
   ========================================================= */
.faq{max-width:680px;margin:0 auto}
.faq details{border-bottom:1px solid var(--borde)}
.faq summary{cursor:pointer;padding:1.2rem 0;font-family:'Cormorant Garamond',serif;font-size:1.25rem;font-weight:500;list-style:none;display:flex;justify-content:space-between;gap:1rem}
/* Oculta el triángulo nativo en Safari/WebKit y en el resto de navegadores. */
.faq summary::-webkit-details-marker{display:none}
.faq summary::marker{content:""}
.faq summary::after{content:"+";color:var(--rose-txt);font-size:1.4rem;font-family:'Jost',sans-serif;font-weight:300}
.faq details[open] summary::after{content:"–"}
.faq details p{padding:0 0 1.3rem;color:var(--lino-txt);font-size:.95rem}


/* =========================================================
   14. FLOTANTES
   ========================================================= */
.float-stack{position:fixed;right:1.2rem;bottom:1.2rem;display:flex;flex-direction:column;gap:.7rem;z-index:100}
.fab{width:54px;height:54px;border-radius:50%;display:flex;align-items:center;justify-content:center;text-decoration:none;box-shadow:0 8px 22px rgba(74,46,51,.28);transition:transform .15s}
.fab:hover{transform:scale(1.08)}
.fab svg{width:26px;height:26px;fill:#fff}
.fab-wa{background:#25D366}
.fab-ig{background:radial-gradient(circle at 30% 110%,#fdf497 0%,#fd5949 45%,#d6249f 60%,#285AEB 90%)}
.fab-tt{background:#010101}
@media(prefers-reduced-motion:reduce){.fab{transition:none}.fab:hover{transform:none}}


/* =========================================================
   15. FOOTER
   ========================================================= */
footer.pied{text-align:center;padding:2.6rem 1.4rem;color:var(--lino-txt);font-size:.78rem;letter-spacing:.22em;text-transform:uppercase}
footer.pied .marque{display:block;margin-bottom:.8rem;font-size:1.2rem;letter-spacing:.05em;text-transform:none}


/* =========================================================
   16. PÁGINAS DE TEXTO LEGAL
   ---------------------------------------------------------
   Usadas por aviso-legal.html, privacidad.html y cookies.html.
   Ancho de lectura ~70ch, jerarquía clara y listas legibles,
   manteniendo la paleta y las tipografías del resto del sitio.
   ========================================================= */
.legal{max-width:70ch;margin:0 auto;padding:clamp(2.6rem,7vw,4.6rem) clamp(1.4rem,6vw,2.5rem) clamp(3.5rem,9vw,5.5rem)}
.legal .legal-sur{font-size:.7rem;letter-spacing:.45em;text-transform:uppercase;color:var(--dorado-txt);display:block;margin-bottom:1rem}
.legal h1{font-size:clamp(2.1rem,5.5vw,3.2rem);line-height:1.12;margin-bottom:1.2rem}
.legal .legal-fecha{font-size:.72rem;letter-spacing:.28em;text-transform:uppercase;color:var(--lino-txt);margin-bottom:2.6rem}
.legal h2{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:clamp(1.45rem,3.4vw,1.95rem);text-align:left;margin:2.8rem 0 .9rem;padding-top:1.6rem;border-top:1px solid var(--borde)}
.legal h3{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:1.2rem;margin:1.8rem 0 .6rem}
.legal p{color:var(--gris-txt);font-size:.98rem;margin-bottom:1.1rem}
.legal ul,.legal ol{color:var(--gris-txt);font-size:.98rem;margin:0 0 1.4rem 1.3rem}
.legal li{padding:.3rem 0}
.legal li>strong{color:var(--ciruela);font-weight:500}
.legal a{color:var(--ciruela);text-decoration:underline;text-decoration-color:var(--rose);text-underline-offset:5px}
.legal a:hover{text-decoration-color:var(--ciruela)}
.legal strong{font-weight:500;color:var(--ciruela)}
.legal .legal-intro{font-size:1.05rem;color:var(--lino-txt)}

/* Bloque destacado (avisos, datos del responsable, ejercicio de derechos) */
.legal .legal-caja{background:var(--superficie);border:1px solid var(--borde);border-radius:18px;padding:1.6rem 1.7rem;margin:1.6rem 0 2rem}
.legal .legal-caja p:last-child,.legal .legal-caja ul:last-child{margin-bottom:0}

/* Marcador visible de dato que el cliente aún debe facilitar */
.pendiente{background:var(--pend-fondo);color:var(--pend-txt);border-radius:4px;padding:0 .3em;font-style:normal;font-weight:400}

/* Tabla de cookies: se desplaza en horizontal en pantallas pequeñas */
.legal .tabla-scroll{overflow-x:auto;margin:0 0 2rem;-webkit-overflow-scrolling:touch}
.legal table{border-collapse:collapse;width:100%;min-width:540px;font-size:.88rem;color:var(--gris-txt)}
.legal caption{caption-side:top;text-align:left;font-size:.7rem;letter-spacing:.28em;text-transform:uppercase;color:var(--dorado-txt);padding-bottom:.7rem}
.legal th,.legal td{border:1px solid var(--borde);padding:.7rem .8rem;text-align:left;vertical-align:top}
.legal thead th{background:var(--poudre);color:var(--ciruela);font-weight:500;font-size:.72rem;letter-spacing:.16em;text-transform:uppercase}
.legal tbody th{font-weight:500;color:var(--ciruela)}

.legal .legal-volver{display:inline-block;margin-top:2.6rem}


/* =========================================================
   17. CONSENTIMIENTO EN EL FORMULARIO DE CITA
   ========================================================= */
.wa-consent{display:flex;gap:.7rem;align-items:flex-start;margin-top:.2rem}
.wa-consent input[type="checkbox"]{width:18px;height:18px;flex:0 0 auto;margin:.25rem 0 0;padding:0;accent-color:var(--ciruela);cursor:pointer}
.wa-consent label{font-size:.82rem;letter-spacing:.02em;text-transform:none;color:var(--gris-txt);line-height:1.6;cursor:pointer}
.wa-consent a{color:var(--ciruela);text-decoration:underline;text-decoration-color:var(--rose);text-underline-offset:4px}
.wa-consent .obl{color:var(--rose-txt)}
.wa-consent input[type="checkbox"][aria-invalid="true"]{outline:2px solid var(--rose-txt);outline-offset:2px}
.wa-error{color:var(--rose-txt);font-size:.8rem;letter-spacing:.02em;margin-top:-.5rem}
.wa-error:empty{display:none}
.wa-basica{font-size:.74rem;line-height:1.65;color:var(--lino-txt);background:var(--superficie);border:1px solid var(--borde);border-radius:14px;padding:1rem 1.1rem;margin-top:.2rem}
.wa-basica strong{color:var(--ciruela);font-weight:500}
.wa-basica a{color:var(--ciruela);text-decoration:underline;text-decoration-color:var(--rose);text-underline-offset:4px}


/* =========================================================
   18. MAPA CON CARGA DIFERIDA POR CONSENTIMIENTO
   El iframe de Google Maps NO se inserta hasta que la persona
   lo autoriza: el marcador de posición ocupa exactamente el
   mismo hueco para no provocar saltos de layout.
   ========================================================= */
.mapa-consent{min-height:360px;height:100%;display:flex;flex-direction:column;align-items:center;justify-content:center;text-align:center;gap:.9rem;
  padding:2.2rem 1.6rem;
  background:radial-gradient(ellipse at 50% 30%,var(--deg-1a),var(--deg-1b))}
.mapa-consent .mapa-titulo{font-family:'Cormorant Garamond',serif;font-style:italic;font-size:1.45rem;color:var(--ciruela);margin:0}
.mapa-consent .mapa-txt{font-size:.85rem;color:var(--gris-txt);max-width:38ch;margin:0;line-height:1.6}
.mapa-consent .mapa-txt a{color:var(--ciruela);text-decoration:underline;text-decoration-color:var(--rose);text-underline-offset:4px}
.mapa-acciones{display:flex;flex-wrap:wrap;gap:.8rem;justify-content:center;margin-top:.4rem}
.mapa-btn{font-family:'Jost',sans-serif;font-weight:300;font-size:.76rem;letter-spacing:.28em;text-transform:uppercase;
  background:var(--ciruela);color:var(--porcelana);border:1px solid var(--ciruela);
  padding:.85rem 2rem;border-radius:100px;cursor:pointer;transition:background .25s,color .25s}
.mapa-btn:hover{background:var(--rose-txt);border-color:var(--rose-txt)}
.mapa-alt{font-size:.76rem;letter-spacing:.28em;text-transform:uppercase;text-decoration:none;
  border:1px solid var(--ciruela);color:var(--ciruela);padding:.85rem 2rem;border-radius:100px;transition:background .25s}
/* Fondo tokenizado, no un blanco fijo al 55%: así el par
   texto/fondo se mantiene siempre sobre 4.5:1 aunque se
   reajuste la paleta. */
.mapa-alt:hover{background:var(--superficie)}
.mapa-dir{font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--lino-txt);margin:.3rem 0 0}


/* =========================================================
   19. BANNER DE COOKIES
   Aceptar y Rechazar comparten tamaño, tipografía, borde y
   relación de contraste: la AEPD exige que rechazar sea tan
   fácil como aceptar. No destacar visualmente uno de los dos.
   ========================================================= */
.cookies{position:fixed;left:1.2rem;bottom:1.2rem;z-index:150;
  width:min(420px,calc(100vw - 2.4rem));
  background:var(--porcelana);border:1px solid var(--poudre);border-radius:22px;
  box-shadow:0 26px 54px -26px rgba(74,46,51,.55);
  padding:1.6rem 1.6rem 1.4rem}
.cookies[hidden]{display:none}
.cookies h2{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:1.35rem;text-align:left;margin:0 0 .6rem}
.cookies p{font-size:.85rem;line-height:1.6;color:var(--gris-txt);margin:0 0 1.1rem}
.cookies p a{color:var(--ciruela);text-decoration:underline;text-decoration-color:var(--rose);text-underline-offset:4px}
.cookies-acciones{display:flex;gap:.8rem;flex-wrap:wrap}
.cookies-btn{flex:1 1 0;min-width:130px;
  font-family:'Jost',sans-serif;font-weight:400;font-size:.74rem;letter-spacing:.24em;text-transform:uppercase;
  background:var(--porcelana);color:var(--ciruela);border:1px solid var(--ciruela);
  padding:.85rem 1rem;border-radius:100px;cursor:pointer;text-align:center;transition:background .25s}
.cookies-btn:hover{background:var(--poudre)}
.cookies-estado{font-size:.68rem;letter-spacing:.2em;text-transform:uppercase;color:var(--lino-txt);margin:.9rem 0 0}
.cookies-estado:empty{display:none}
@media(max-width:760px){
  .cookies{left:1rem;right:1rem;bottom:1rem;width:auto;padding:1.4rem 1.3rem 1.2rem}
  /* Mientras el banner está visible, los botones flotantes suben para
     no quedar tapados (--banner-alto lo calcula js/main.js). */
  body.cookies-visible .float-stack{bottom:calc(1.6rem + var(--banner-alto,0px))}
}


/* =========================================================
   20. ENLACES LEGALES DEL FOOTER
   ========================================================= */
.pied-legal{list-style:none;display:flex;flex-wrap:wrap;gap:.6rem 1.6rem;justify-content:center;margin:1.4rem 0 0;padding:0}
.pied-legal a,.pied-legal button{font-family:'Jost',sans-serif;font-weight:300;
  font-size:.7rem;letter-spacing:.22em;text-transform:uppercase;color:var(--lino-txt);
  background:none;border:0;padding:0;cursor:pointer;text-decoration:none;
  border-bottom:1px solid transparent;transition:color .25s,border-color .25s}
.pied-legal a:hover,.pied-legal button:hover{color:var(--ciruela);border-bottom-color:var(--rose)}
.pied-legal a[aria-current="page"]{color:var(--ciruela);border-bottom-color:var(--rose)}


/* =========================================================
   21. UTILIDAD: TEXTO SOLO PARA LECTORES DE PANTALLA
   Etiquetas como "Precio:" o "Duración:" que en pantalla se
   entienden por la maqueta pero que, leídas en línea, hacen
   falta para saber qué es cada número.
   No se usa display:none ni visibility:hidden: eso también lo
   oculta a los lectores de pantalla.
   ========================================================= */
.vh{position:absolute!important;width:1px;height:1px;padding:0;margin:-1px;
  overflow:hidden;clip:rect(0 0 0 0);clip-path:inset(50%);white-space:nowrap;border:0}


/* =========================================================
   22. NAV: ZONA DE UTILIDADES + CONMUTADOR DE TEMA
   El orden de flex coloca marque · menú · utilidades, para que
   el conmutador quede pegado a la hamburguesa en móvil.
   ========================================================= */
.nav-util{display:flex;align-items:center;gap:.6rem;order:3;flex:0 0 auto}
nav ul{order:2;margin-left:auto}


/* =========================================================
   23. TARIFAS
   Tres columnas en escritorio, una en móvil. Cada línea es
   nombre · duración · precio, como una carta.
   ========================================================= */
.tarifas{display:grid;grid-template-columns:repeat(3,1fr);gap:2.4rem;max-width:1100px;margin:0 auto}
.tarifa-grupo{background:var(--superficie);border:1px solid var(--borde);border-radius:24px;padding:2.2rem 1.7rem}
.tarifa-grupo h3{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:1.55rem;
  text-align:center;margin-bottom:1.4rem;padding-bottom:.9rem;border-bottom:1px solid var(--borde-suave)}
.tarifa-lista{list-style:none}
.tarifa{display:grid;grid-template-columns:1fr auto;grid-template-areas:"nom pre" "dur pre";
  gap:.1rem .9rem;align-items:baseline;padding:.85rem 0}
.tarifa+.tarifa{border-top:1px solid var(--borde-suave)}
.t-nom{grid-area:nom;font-size:.95rem;color:var(--ciruela)}
.t-dur{grid-area:dur;font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;color:var(--lino-txt);justify-self:start}
.t-pre{grid-area:pre;font-family:'Cormorant Garamond',serif;font-size:1.4rem;color:var(--ciruela);white-space:nowrap}

/* Mientras el valor siga siendo un ejemplo de la agencia lleva
   data-pendiente y se pinta resaltado. Al borrar el atributo, el
   resalte desaparece solo: no hay que tocar la hoja de estilos. */
.t-dur[data-pendiente],.t-pre[data-pendiente]{
  background:var(--pend-fondo);color:var(--pend-txt);border-radius:4px;padding:0 .3em}

.tarifa-provisional{max-width:70ch;margin:0 auto 2.6rem;text-align:center;
  font-size:.82rem;line-height:1.7;color:var(--gris-txt);
  background:var(--superficie);border:1px dashed var(--dorado);border-radius:16px;padding:1rem 1.2rem}
.tarifa-provisional strong{color:var(--ciruela);font-weight:500}
.tarifa-nota{max-width:60ch;margin:2.6rem auto 0;text-align:center;font-size:.85rem;color:var(--lino-txt)}
.tarifa-cta{display:flex;gap:1.2rem;justify-content:center;flex-wrap:wrap;margin-top:2.2rem}
@media(max-width:880px){.tarifas{grid-template-columns:1fr;max-width:460px}}


/* =========================================================
   25. LIGHTBOX DE LA GALERÍA
   Diálogo propio, sin librerías. Ocupa la ventana entera con
   position:fixed y se cierra desde el fondo, la aspa o Escape.
   El foco lo atrapa js/main.js, no la CSS.
   ========================================================= */
.lb{position:fixed;inset:0;z-index:300;display:flex;align-items:center;justify-content:center;padding:clamp(.8rem,3vw,2.5rem)}
.lb[hidden]{display:none}
.lb-fondo{position:absolute;inset:0;background:rgba(25,15,18,.88);-webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px)}
.lb-caja{position:relative;display:flex;align-items:center;gap:clamp(.4rem,2vw,1.4rem);max-width:1100px;width:100%}
.lb-fig{flex:1 1 auto;min-width:0;display:flex;flex-direction:column;align-items:center;gap:1rem}
.lb-fig img{display:block;max-width:100%;max-height:min(72vh,900px);width:auto;height:auto;
  border-radius:18px;border:1px solid var(--rose);background:var(--poudre)}
.lb-pie{display:flex;flex-direction:column;align-items:center;gap:.4rem;text-align:center;max-width:52ch}
/* El pie va SIEMPRE sobre el velo oscuro del lightbox, no sobre
   la paleta de la página: por eso usa colores fijos y no tokens.
   Ratios sobre rgba(25,15,18,.88) sobre cualquier fondo:
     .lb-texto    #F3E7E4 -> 14.86  ·  .lb-contador #D9C3BC -> 10.36 */
.lb-texto{color:#F3E7E4;font-size:.95rem;line-height:1.6}
.lb-contador{color:#D9C3BC;font-size:.68rem;letter-spacing:.3em;text-transform:uppercase}
.lb-cerrar,.lb-nav{flex:0 0 auto;width:48px;height:48px;border-radius:50%;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  background:rgba(251,247,244,.12);border:1px solid rgba(243,231,228,.55);color:#F3E7E4;
  font-size:1.9rem;line-height:1;font-family:'Jost',sans-serif;font-weight:300;
  transition:background .2s}
.lb-cerrar:hover,.lb-nav:hover{background:rgba(251,247,244,.26)}
.lb-cerrar:focus-visible,.lb-nav:focus-visible{outline:2px solid #F3E7E4;outline-offset:3px}
.lb-cerrar{position:absolute;top:0;right:0;z-index:2;font-size:1.6rem}
.lb-nav[disabled]{opacity:.35;cursor:default}
@media(max-width:700px){
  .lb-caja{flex-direction:column;gap:.9rem}
  .lb-fig{order:1;width:100%}
  .lb-prev{order:3}
  .lb-next{order:4}
  .lb-cerrar{top:-.2rem;right:-.2rem}
}
@media(prefers-reduced-motion:reduce){.lb-cerrar,.lb-nav{transition:none}}


/* =========================================================
   26. QUIÉNES SOMOS
   ========================================================= */
.nosotras-grid{display:grid;grid-template-columns:1fr 1fr;gap:3.4rem;max-width:1100px;margin:0 auto;align-items:center}
.nosotras-txt p{color:var(--gris-txt);font-size:1rem;margin-bottom:1.1rem;max-width:56ch}
.nosotras-txt p i{color:var(--rose-txt);font-style:italic}
.nosotras-firma{font-family:'Cormorant Garamond',serif;font-size:1.25rem;color:var(--ciruela)!important;margin-top:1.6rem!important}
.nosotras-cta{display:flex;gap:1rem;flex-wrap:wrap;margin-top:1.8rem}
/* auto-fit: la Home lleva 2 fotos y equipo.html 4, y la misma regla
   resuelve las dos (2 columnas cuando cabe, 1 cuando no). */
.nosotras-fotos{display:grid;gap:1.6rem;grid-template-columns:repeat(auto-fit,minmax(200px,1fr))}
.nosotras-foto{margin:0}
/* aspect-ratio + object-fit: las cuatro fotos del equipo no comparten
   tamaño nativo (una es de 480×640), así que se normaliza el encuadre
   para que la retícula no quede descuadrada. */
.nosotras-foto img{display:block;width:100%;height:auto;aspect-ratio:3/4;object-fit:cover;
  border-radius:20px;border:1px solid var(--rose)}
.nosotras-foto figcaption{margin-top:.7rem;font-size:.7rem;letter-spacing:.26em;text-transform:uppercase;color:var(--lino-txt)}
@media(max-width:880px){.nosotras-grid{grid-template-columns:1fr;gap:2.6rem}}


/* =========================================================
   27. CUIDADOS POST-SERVICIO
   Reutiliza la caja .faq; solo añade el tratamiento de las
   listas, que la FAQ original no tenía.
   ========================================================= */
.cuidados{max-width:760px}
.cuidados summary{font-size:1.12rem;text-align:left}
.faq details ul{list-style:none;padding:0 0 1.4rem;margin:0}
.faq details li{position:relative;padding:.42rem 0 .42rem 1.4rem;color:var(--lino-txt);font-size:.94rem;line-height:1.65}
.faq details li::before{content:"·";position:absolute;left:.35rem;top:.42rem;
  font-family:'Cormorant Garamond',serif;font-size:1.3rem;line-height:1.2;color:var(--rose-txt)}
.faq details li strong{color:var(--ciruela);font-weight:500}


/* =========================================================
   28. BONOS Y TARJETAS REGALO
   ========================================================= */
.bonos-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:2rem;max-width:1050px;margin:0 auto}
.bono{background:var(--superficie);border:1px solid var(--borde);border-radius:20px 20px 20px 60px;padding:2.1rem 1.7rem}
.bono h3{font-family:'Cormorant Garamond',serif;font-weight:500;font-size:1.45rem;margin-bottom:.8rem}
.bono p{color:var(--gris-txt);font-size:.94rem}
.bono-dato{margin-top:1rem;font-size:.76rem;letter-spacing:.06em;color:var(--lino-txt)!important}
.bonos-cta{display:flex;gap:1.2rem;justify-content:center;flex-wrap:wrap;margin-top:2.6rem}
@media(max-width:880px){.bonos-grid{grid-template-columns:1fr;max-width:460px}}


/* =========================================================
   29. RESEÑAS: FIRMA Y ENLACE AL PERFIL DE GOOGLE
   ========================================================= */
.mot-firma{margin-top:1.2rem;padding-top:1rem;border-top:1px solid var(--borde);
  display:flex;flex-direction:column;gap:.25rem;align-items:center}
.mot-firma cite{font-style:normal;font-size:.84rem;color:var(--ciruela);letter-spacing:.04em}
.mot-fecha{font-size:.68rem;letter-spacing:.24em;text-transform:uppercase;color:var(--lino-txt)}
.mots-google{max-width:640px;margin:3rem auto 0;text-align:center}
.mots-google-txt{color:var(--gris-txt);font-size:.95rem;margin-bottom:1.6rem}
.mots-google-cta{display:flex;gap:1.1rem;justify-content:center;flex-wrap:wrap}
/* Enlace desactivado mientras la URL siga siendo un marcador.
   Lo marca js/main.js; sin JS el enlace sigue visible y al menos
   no engaña: lleva literalmente al texto del marcador. */
.mots-google-cta a[aria-disabled="true"],
.reserva-btn[aria-disabled="true"]{opacity:.45;pointer-events:none;cursor:default}


/* =========================================================
   30. RESERVA ONLINE
   Nace con [hidden]: mientras no haya URL real no se pinta nada.
   ========================================================= */
.reserva{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:1.6rem;
  max-width:1000px;margin:0 auto 3.2rem;
  background:var(--superficie);border:1px solid var(--rose);border-radius:100px 100px 24px 100px;
  padding:1.9rem clamp(1.6rem,4vw,2.6rem)}
.reserva[hidden]{display:none}
.reserva-titulo{font-family:'Cormorant Garamond',serif;font-size:1.6rem;color:var(--ciruela);margin:0}
.reserva-sub{font-size:.9rem;color:var(--gris-txt);margin:.3rem 0 0;max-width:44ch}
.reserva-acciones{display:flex;flex-direction:column;align-items:flex-start;gap:.7rem}
.reserva-nota{font-size:.75rem;color:var(--lino-txt);max-width:38ch}
.reserva-nota a{color:var(--ciruela);text-decoration:underline;text-decoration-color:var(--rose);text-underline-offset:4px}
@media(max-width:760px){
  .reserva{border-radius:24px;flex-direction:column;align-items:flex-start}
  .reserva-acciones{align-items:stretch;width:100%}
  .reserva-btn{text-align:center}
}


/* =========================================================
   31. CONTACTO: CÓMO LLEGAR + AYUDA DEL FORMULARIO
   ========================================================= */
.coord-cta{margin-top:1.8rem}
.coord-mapa{display:inline-flex;align-items:center;gap:.6rem}
.coord-mapa-ico{font-size:.8em;transform:rotate(-45deg);display:inline-block}
.coord-nota{font-size:.74rem!important;color:var(--lino-txt)!important;margin-top:.7rem!important}
.wa-ayuda{font-size:.74rem;color:var(--lino-txt);margin-top:.45rem;letter-spacing:.02em}
.wa-form input[aria-invalid="true"]{border-color:var(--rose-txt);box-shadow:0 0 0 3px rgba(167,94,83,.22)}


/* =========================================================
   32. PORTADA DE PÁGINA INTERIOR
   ---------------------------------------------------------
   Cabecera de servicios.html, trabajos.html, equipo.html,
   cuidados.html y contacto.html. Mismo lenguaje que el hero
   de la Home pero más contenida: sin camafeo y sin CTA, para
   que el contenido empiece antes.
   ========================================================= */
.portada{text-align:center;padding:clamp(2.6rem,6vw,4.4rem) clamp(1.4rem,6vw,5rem) clamp(2rem,5vw,3rem)}
.portada h1{font-family:'Cormorant Garamond',serif;font-weight:400;
  font-size:clamp(2.4rem,6vw,4.2rem);line-height:1.08;letter-spacing:.01em}
.portada h1 i{font-style:italic;color:var(--rose-txt)}
.portada .sur{font-size:.72rem;letter-spacing:.45em;text-transform:uppercase;
  color:var(--dorado-txt);display:block;margin-bottom:1.6rem}
.portada .lead{max-width:56ch;margin:1.4rem auto 0;color:var(--lino-txt);font-size:1.02rem}


/* =========================================================
   33. ENLACE «VER MÁS» A LA PÁGINA DE DETALLE
   ---------------------------------------------------------
   Cierra cada bloque resumen de la Home y lleva a la página
   que desarrolla ese contenido.
   ========================================================= */
.ver-mas{text-align:center;margin-top:2.8rem}


/* =========================================================
   34. VÍDEO DE FONDO DEL HERO
   ---------------------------------------------------------
   El hero pasa a position:relative para poder alojar el vídeo
   detrás del texto. Si el archivo no carga, .hero-video sigue
   pintando el degradado de la casa y el hero se ve como antes.

   Cómo se llegó a estos números está en media/README-hero.md.
   Resumen de lo que hay que saber para no romperlo:

   EL VÍDEO VIENE PRE-GRADUADO. Medido con ffmpeg signalstats
   sobre los 453 fotogramas del archivo publicado, el píxel MÁS
   OSCURO de todo el vídeo es rgb(64,54,48). Ese es el peor caso
   real, y es el que se usa aquí. No es el fotograma medio ni
   una estimación: es el mínimo absoluto.

   EL TEXTO DEL HERO VA MÁS OSCURO QUE EN EL RESTO DEL SITIO.
   Los tokens se redefinen sobre .hero (ver más abajo). No es
   un capricho: es lo que permite que el velo se quede en el
   78 % en vez del 92 % original. Cada punto que se oscurece el
   texto es un punto que se puede quitar del velo, y el vídeo
   se ve casi el triple.

   ⚠️  LAS TRES COSAS VAN ATADAS: el pie de negro del vídeo, la
   opacidad del velo y los tokens de .hero. Si se toca una hay
   que recalcular las otras dos o el hero deja de cumplir
   WCAG 1.4.3. El procedimiento completo está en el README.
   ========================================================= */
.hero{position:relative;isolation:isolate}

/* --- Paleta propia del hero -------------------------------
   Ratios sobre el peor fotograma posible (velo 78 % sobre el
   píxel más oscuro del vídeo) y sobre el mejor:

     elemento          color      peor   mejor  exige
     .sur eyebrow      #68522F    4.68   6.98    4.5
     h1                #4A2E33    7.67  11.45    3.0  (grande)
     h1 i              #A25B51    3.20   4.77    3.0  (grande)
     .lead             #60534D    4.67   6.97    4.5
     .btn-vide texto   #4A2E33    7.67  11.45    4.5
     .btn-vide borde   #876762    3.20   4.78    3.0  (1.4.11)
     .estado neutro    #60534D    4.67   6.97    4.5
     .estado.on        #3E5C40    4.72   7.05    4.5
     .estado.off       #7D463E    4.71   7.03    4.5
     .dot              #786D68    3.17   4.73    3.0  (1.4.11)

   Los cuatro últimos y el borde del botón NO los cubría el
   comentario original, que solo auditaba tres colores. Con el
   velo al 92 % ya incumplían: .estado.off daba 4.12, el borde
   del botón 2.11 y el punto 2.33.

   --rose (el rosa decorativo del camafeo) se deja intacto a
   propósito: es un adorno, no transmite información, y
   oscurecerlo cambiaría el emblema. El borde del botón sí se
   oscurece, pero apuntando solo a .btn-vide, para no arrastrar
   al camafeo.
   ---------------------------------------------------------- */
.hero{
  --lino-txt:#60534D;
  --dorado-txt:#68522F;
  --rose-txt:#7D463E;
  --verde-txt:#3E5C40;
  --lino:#786D68;
}
/* La itálica del h1 es texto grande (45-90 px): le basta 3:1,
   así que se queda casi en el rosa original en vez de heredar
   el --rose-txt oscuro del badge. Si heredase, «ritual» se
   volvería granate y se comería el carácter del titular. */
.hero h1 i{color:#A25B51}
.hero .btn-vide{border-color:#876762}

.hero-video{position:absolute;inset:0;z-index:-1;overflow:hidden;
  background-color:var(--porcelana);
  background-image:radial-gradient(ellipse at 50% 30%,var(--deg-cameo),var(--porcelana))}

.hero-video-el{width:100%;height:100%;object-fit:cover;object-position:50% 50%;display:block}

/* Velo que sostiene el contraste pase lo que pase en el vídeo.
   Va encima del vídeo pero debajo del contenido.

   VELO EN DEGRADADO — el 78 % solo hace falta DONDE HAY TEXTO,
   y el texto del hero está centrado: el lead va limitado a 52ch
   (~640 px) y la fila de botones mide ~860 px. Todo cabe en una
   franja central de 1000 px. Fuera de ella el velo baja al 55 %.

   ⚠️  Los 500 px de media franja están atados al ancho de la
   fila de botones (±430 px desde el centro): quedan 70 px de
   holgura por lado. Si se añade un cuarto botón o se alarga el
   texto de uno, hay que ensanchar la franja o el botón se
   saldrá a la zona clara, donde no se garantiza contraste.

   En viewports de 1000 px o menos las paradas se solapan y el
   velo queda al 78 % de lado a lado, que es justo lo que hace
   falta cuando el texto ocupa todo el ancho.

   La primera declaración es el respaldo plano al 78 % para
   navegadores sin max()/min() dentro de un degradado.
   El blur de 1,5 px no es estética: quita el detalle de alta
   frecuencia justo detrás de las letras, que es lo que más
   estorba a la lectura aunque el ratio de contraste dé bien. */
.hero-video::after{content:"";position:absolute;inset:0;
  background:rgba(251,247,244,.78);
  background:linear-gradient(to right,
    rgba(251,247,244,.55) 0,
    rgba(251,247,244,.78) max(0px,calc(50% - 500px)),
    rgba(251,247,244,.78) min(100%,calc(50% + 500px)),
    rgba(251,247,244,.55) 100%);
  -webkit-backdrop-filter:blur(1.5px);backdrop-filter:blur(1.5px)}

/* WCAG 2.3.3: quien pide menos movimiento no ve el vídeo, solo
   el fotograma fijo. Se resuelve en CSS, no en JS, para que
   siga funcionando aunque el JavaScript falle.
   display:none sobre el <video> se lleva por delante también su
   poster, así que el fotograma se repone como fondo de
   .hero-video. El navegador solo descarga esa imagen si la
   media query casa, de modo que no penaliza a nadie más. */
@media(prefers-reduced-motion:reduce){
  .hero-video-el{display:none}
  .hero-video{background-image:url("../media/hero-poster.jpg");
    background-size:cover;background-position:50% 50%}
}
