.elementor-kit-6{--e-global-color-primary:#6EC1E4;--e-global-color-secondary:#54595F;--e-global-color-text:#7A7A7A;--e-global-color-accent:#61CE70;--e-global-typography-primary-font-family:"Roboto";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Roboto Slab";--e-global-typography-secondary-font-weight:400;--e-global-typography-text-font-family:"Roboto";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Roboto";--e-global-typography-accent-font-weight:500;}.elementor-kit-6 e-page-transition{background-color:#FFBC7D;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1140px;}.e-con{--container-max-width:1140px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}:root { --c-bg:#fbe1e7; --c-bg-alt:#edb1c4; --c-rose:#d995a9; --c-white:#ffffff; --c-text:#4b4c4c; --c-text-muted:#676869; --c-brand:#4a1525; --c-accent:#912e48; --c-accent-hover:#7a2640; --c-gold:#d4af37; --f-heading:Playfair Display; --f-sans:Poppins; --t-hero:4rem; --t-hero-tablet:3.25rem; --t-hero-mobile:2.375rem; --t-h1:3.75rem; --t-h1-tablet:2.875rem; --t-h1-mobile:2.25rem; --t-h2:2rem; --t-h2-tablet:1.75rem; --t-h2-mobile:1.5rem; --t-h3:1.5rem; --t-h3-tablet:1.375rem; --t-h3-mobile:1.25rem; --t-lead:1.125rem; --t-lead-tablet:1.0625rem; --t-lead-mobile:1rem; --t-body:1rem; --t-body-tablet:1rem; --t-body-mobile:1rem; --t-sm:0.875rem; --t-sm-tablet:0.875rem; --t-sm-mobile:0.875rem; --s-1:0.25rem; --s-2:0.5rem; --s-3:0.75rem; --s-4:1rem; --s-5:1.5rem; --s-6:2rem; --s-7:3rem; --s-8:4rem; --s-9:6rem; --pad-x:1.5rem; --pad-x-tablet:1.5rem; --pad-x-mobile:1.25rem; --sec-y:6rem; --sec-y-tablet:4rem; --sec-y-mobile:3rem; --sec-y-lg:8rem; --sec-y-lg-tablet:6rem; --sec-y-lg-mobile:4rem; --max-w:72rem; --max-w-narrow:48rem; --max-w-text:32rem; --r-sm:8px; --r-md:16px; --r-full:9999px; --e-gv-0f8121d:#ffffff; --e-gv-66bcae1:#fbe1e7; }
/* Start custom CSS *//* ---------- Tarjeta de servicio ---------- */
/* Recorte de la descripción a 2 líneas. Limitación: el panel no tiene line-clamp (el conversor rechaza display:-webkit-box). */
.elementor .mn-service-description { display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 2; overflow: hidden; }
.elementor .mn-service-description.is-open { display: block; -webkit-line-clamp: unset; overflow: visible; }
/* «Ver detalles» / «Ocultar detalles»: los muestra el snippet solo si el texto se recorta. Sin JS (y en el editor) siguen visibles para poder editarlos. */
.mn-js .elementor .mn-service-toggle { display: none; }
.mn-js .elementor .mn-service-toggle.is-visible { display: inline-flex; }
/* Flecha del botón. Limitación: el botón atómico no admite icono. */
.elementor .mn-service-toggle::after { content: ""; width: 0.4em; height: 0.4em; margin-left: 0.4em; border-right: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: translateY(-25%) rotate(45deg); }
.elementor .mn-service-toggle + .mn-service-toggle::after { transform: translateY(25%) rotate(-135deg); }
/* Iconos de línea (lucide). Limitación: el widget SVG atómico fuerza fill="currentColor" y los rellena. */
.elementor .e-svg-base svg { fill: none; } /* todos los iconos del sitio son de línea (lucide) */
/* Servicios sin foto (retiros, adicionales): Elementor imprime un <img> sin src; se oculta para no dejar hueco. */
.elementor .mn-service-card-img:not([src]), .elementor .mn-service-card-img[src=""] { display: none; }
/* ---------- fin Tarjeta de servicio ---------- */

/* ---------- Inicio ---------- */
/* Ticker infinito (se mueve siempre, también con «reducir movimiento», por decisión de la marca). Limitación: el panel no tiene animaciones con keyframes (Interactions de Pro bloqueado); el snippet duplica los textos para que el bucle no tenga saltos. */
.elementor .mn-ticker-track { animation: mn-ticker 40s linear infinite; }
@keyframes mn-ticker { to { transform: translateX(-50%); } }
.elementor .mn-ticker-item { position: relative; white-space: nowrap; }
.elementor .mn-ticker-item::after { content: ""; position: absolute; right: -3px; top: 50%; width: 6px; height: 6px; margin-top: -3px; border-radius: 50%; background: rgba(74, 21, 37, 0.25); }

/* Carruseles: snap y barra oculta. Limitación: el panel no tiene scroll-snap ni oculta la barra de scroll. El tamaño y el desborde de las filas están en las clases globales (variantes tablet/móvil). */
.elementor :is(.mn-services-track, .mn-looks-track, .mn-locations-track) { scroll-snap-type: x mandatory; scrollbar-width: none; }
.elementor :is(.mn-services-track, .mn-looks-track, .mn-locations-track)::-webkit-scrollbar { display: none; }
.elementor .mn-looks-track > * { scroll-snap-align: center; }
.elementor :is(.mn-services-track, .mn-locations-track) > * { scroll-snap-align: start; }
@media (max-width: 1024px) { .elementor :is(.mn-services-track, .mn-locations-track) { scroll-padding-inline: var(--pad-x-tablet); } }
@media (max-width: 767px) { .elementor :is(.mn-services-track, .mn-looks-track, .mn-locations-track) { scroll-padding-inline: var(--pad-x-mobile); } .elementor .mn-looks-track > * { scroll-snap-align: start; } }

/* Texto solo para lectores de pantalla (flechas). Limitación: el conversor no admite clip ni clip-path. */
.elementor .mn-sr-only { clip: rect(0 0 0 0); clip-path: inset(50%); white-space: nowrap; }

/* Compromisos: foto y estado activos. Limitación: el panel no tiene estados que dependan de otro elemento; los alterna el snippet. Sin JS se ve la primera foto. */
.elementor .mn-trust-img { opacity: 0; visibility: hidden; transition: opacity 0.4s, visibility 0.4s; }
.elementor .mn-trust-media:not(.is-ready) .mn-trust-img:first-child, .elementor .mn-trust-img.is-active { opacity: 1; visibility: visible; }
.elementor .mn-trust-item:is(.is-active, :hover, :focus-visible) { padding-left: var(--s-3); }
.elementor .mn-trust-item.is-active .mn-trust-icon { background-color: var(--c-accent); color: var(--c-white); }

/* Etiquetas de pestañas en una línea. Limitación: el conversor no admite white-space. */
.elementor :is(.mn-catalog-tab-label, .mn-look-tab-label) { white-space: nowrap; }

/* Pestañas: sin el fondo oscuro por defecto del botón al pasar el cursor o al enfocar, sin tocar la pestaña activa. */
.elementor :is(.mn-look-tab, .mn-catalog-tab):not(.e--selected):is(:hover, :focus) { background-color: transparent; }
.elementor .mn-look-tab.e--selected { background-color: var(--c-accent); color: var(--c-white); }
/* ---------- fin Inicio ---------- */

/* ---------- Agenda tu cita ---------- */
/* Datos prácticos: puntos separadores y texto en una línea. Limitación: el panel no tiene ::after ni white-space. */
.elementor .mn-booking-info-text { white-space: nowrap; }
.elementor .mn-booking-info-item:not(:last-child)::after { content: ""; width: 4px; height: 4px; margin-left: var(--s-4); border-radius: 50%; background: var(--c-bg-alt); }
@media (max-width: 767px) { .elementor .mn-booking-info-item::after { display: none; } }
.elementor :is(.mn-booking-info-track, .mn-locations-list) { scrollbar-width: none; }
.elementor :is(.mn-booking-info-track, .mn-locations-list)::-webkit-scrollbar { display: none; }

/* Directorio: tarjetas de altura natural en la lista y estado de selección. Limitación: el panel no tiene estados que dependan de un clic ni estilos de hijos. */
.elementor .mn-locations-list .mn-location-card { flex: 0 0 auto; cursor: pointer; }
@media (max-width: 1024px) { .elementor .mn-locations-list .mn-location-card { flex-basis: calc(50% - 12px); } .elementor .mn-locations-list { scroll-snap-type: x mandatory; scroll-padding-inline: var(--pad-x-tablet); } .elementor .mn-locations-list > * { scroll-snap-align: start; } }
@media (max-width: 767px) { .elementor .mn-locations-list .mn-location-card { flex-basis: calc(100% - 40px); } .elementor .mn-locations-list { scroll-padding-inline: var(--pad-x-mobile); } }
/* Margen lateral en móvil: sin scroll-padding el encaje pegaba la 1.ª sede al borde (0 px). */
.elementor .mn-location-card.is-selected { border-color: var(--c-accent); box-shadow: 0 8px 30px -12px rgba(74, 21, 37, 0.22); }
.elementor .mn-zone-chip.is-active { background-color: var(--c-accent); border-color: var(--c-accent); color: var(--c-white); }

/* Mapa: el iframe ocupa todo el recuadro. Limitación: no hay widget atómico de mapa; lo crea el snippet con la dirección de la tarjeta. */
.elementor .mn-locations-map iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }
/* Pastilla de zona: al pulsar no toma el fondo oscuro por defecto del botón atómico. */
.elementor .mn-zone-chip:active:not(.is-active) { background-color: var(--c-white); color: var(--c-accent); }
.elementor .mn-zone-chip.is-active:is(:hover, :focus, :active) { background-color: var(--c-accent); border-color: var(--c-accent); color: var(--c-white); }
/* ---------- fin Agenda tu cita ---------- */

/* ---------- Experiencia ---------- */
/* Testimonios: solo el activo se ve (lo elige el snippet; sin JS se ven todos). Limitación: no hay carrusel atómico. */
.elementor .mn-testimonials-stage.is-ready .mn-testimonial-card:not(.is-active) { display: none; }
.elementor .mn-testimonial-dot { width: 10px; height: 10px; padding: 0; border: 1px solid var(--c-accent); border-radius: 9999px; background: transparent; cursor: pointer; transition: width 0.2s, background-color 0.2s; }
.elementor .mn-testimonial-dot.is-active { width: 24px; background: var(--c-accent); }
/* Comillas rellenas (las demás piezas son iconos de línea). */
.elementor .mn-testimonial-quote-icon svg { fill: currentColor; }

/* Instagram: snap y barra oculta. Limitación: el panel no tiene scroll-snap. */
.elementor .mn-ig-track { scroll-snap-type: x mandatory; scrollbar-width: none; }
.elementor .mn-ig-track::-webkit-scrollbar { display: none; }
.elementor .mn-ig-track > * { scroll-snap-align: start; }
@media (max-width: 767px) { .elementor .mn-ig-track { scroll-padding-inline: var(--pad-x-mobile); } }

/* Sincronía: microefectos. Aparición con @keyframes (no la apaga la regla de «reducir movimiento» de Elementor) y
   transiciones con !important por esa misma regla. Sin JS (y en el editor) todo se ve sin animar. */
@keyframes mn-rise { from { opacity: 0; transform: translateY(20px); } to { opacity: 1; transform: none; } }
.mn-js .elementor :is(.mn-sync-copy, .mn-sync-item) { opacity: 0; }
.mn-js .elementor :is(.mn-sync-copy, .mn-sync-item).is-visible { animation: mn-rise 0.5s cubic-bezier(0.4, 0, 0.2, 1) both; animation-delay: calc(var(--i, 0) * 120ms); }
.elementor .mn-sync-item { transition: padding-left 0.25s ease !important; }
.elementor .mn-sync-item:hover { padding-left: var(--s-3); }
.elementor .mn-sync-icon { transition: transform 0.3s cubic-bezier(0.4, 0, 0.2, 1), background-color 0.3s !important; }
.elementor .mn-sync-item:hover .mn-sync-icon { transform: scale(1.08) rotate(-6deg); background-color: var(--c-accent-hover); }
/* ---------- fin Experiencia ---------- */



/* ---------- Hero de Inicio ---------- */
.elementor .mn-hero-bg { transform-origin: 65% 50%; animation: mn-kenburns 14s ease-in-out infinite alternate; will-change: transform; }
@keyframes mn-kenburns { from { transform: scale(1); } to { transform: scale(1.24) translate(-4%, -3%); } }
.elementor .mn-hero-circle { pointer-events: none; will-change: transform; animation: mn-hero-orbita 11s ease-in-out infinite alternate; }
@keyframes mn-hero-orbita { 0% { transform: translate(-28%, 10%) scale(0.85); } 50% { transform: translate(4%, -8%) scale(1.15); } 100% { transform: translate(24%, 12%) scale(0.95); } }
.elementor .mn-hero-grain { display: none !important; }
@media (max-width: 767px) { .elementor .mn-hero-bg { object-position: 65% center; } }
/* ---------- fin Hero de Inicio ---------- */

/* ---------- Hero de página con efecto ---------- */
/* Hero de página con efecto (Manos): zoom lento de la foto, un brillo perlado que cruza cada pocos segundos y el
   título que entra subiendo. Se activa poniendo la clase mn-hero-zoom en el contenedor que envuelve el componente
   «Hero de página» (Manos → Hero envoltorio); quitarla lo apaga. Limitación: el panel no tiene animaciones con
   keyframes. Va con @keyframes para que se vea también con «reducir movimiento». Reutiliza mn-kenburns (bloque «Hero de Inicio»). */
.elementor .mn-hero-zoom .mn-page-hero-img { transform-origin: 60% 50%; animation: mn-kenburns 14s ease-in-out infinite alternate; will-change: transform; }
.elementor .mn-hero-zoom .mn-page-hero::after { content: ""; position: absolute; inset: 0; z-index: 0; pointer-events: none; background: linear-gradient(115deg, transparent 38%, rgba(255, 255, 255, 0.55) 47%, rgba(251, 225, 231, 0.45) 52%, transparent 62%); background-size: 300% 100%; animation: mn-perla 7s ease-in-out infinite; }
@keyframes mn-perla { 0%, 35% { background-position: 110% 0; } 100% { background-position: -10% 0; } }
.elementor .mn-hero-zoom .mn-page-hero-title { animation: mn-hero-sube 1s cubic-bezier(0.2, 0.8, 0.2, 1) both; }
@keyframes mn-hero-sube { from { opacity: 0; transform: translateY(28px); } to { opacity: 1; transform: none; } }
/* ---------- fin Hero de página con efecto ---------- */

/* ---------- Blog y tarjetas de entradas ---------- */
/* Tarjetas del blog (/blog/) y publicaciones de «Ideas para tu próxima cita» (Experiencia): al pasar el cursor suben 4 px con sombra y la foto se acerca.
   Limitación: el panel no aplica estilos a un hijo según el hover del padre. Las transiciones llevan !important porque
   «reducir movimiento» de Windows las pone a 0 s. */
.elementor :is(.mn-ig-post, .mn-blog-card) { transition: transform 0.35s ease, box-shadow 0.35s ease !important; }
.elementor :is(.mn-ig-post, .mn-blog-card):hover { transform: translateY(-4px); box-shadow: 0 14px 30px rgba(74, 21, 37, 0.12); }
.elementor :is(.mn-ig-img, .mn-blog-card-img) { transition: transform 0.6s ease !important; }
.elementor :is(.mn-ig-post, .mn-blog-card):hover :is(.mn-ig-img, .mn-blog-card-img) { transform: scale(1.05); }
/* Fila de Ideas: sitio arriba para que la publicación suba sin recortarse. Limitación: la fila con scroll recorta lo que sale. */
.elementor .mn-ig-track { padding-top: 8px; }
/* Al acercarse la foto, el texto de la tarjeta queda por encima (si no, la foto ampliada lo pisa unos píxeles). */
.elementor :is(.mn-blog-card-body, .mn-ig-post-header, .mn-ig-caption) { position: relative; z-index: 1; background-color: var(--c-white); }
.elementor .mn-blog-grid .e-loop-item { height: 100%; }

/* Contenido de la entrada (plantilla «Entrada del blog»): títulos y párrafos que se escriben en el editor de entradas.
   Limitación: el widget «Contenido de la entrada» pinta HTML del editor; no lleva clases globales. */
.elementor .mn-blog-content { width: 100%; font-family: var(--f-sans); font-size: var(--t-body); line-height: 1.7; color: var(--c-text); }
.elementor .mn-blog-content :is(h2, h3) { font-family: var(--f-heading); font-size: var(--t-h3); font-weight: 600; line-height: 1.25; color: var(--c-text); margin: var(--s-7) 0 var(--s-3); }
.elementor .mn-blog-content > :first-child { margin-top: 0; }
.elementor .mn-blog-content p { color: var(--c-text-muted); margin: 0 0 var(--s-4); }
.elementor .mn-blog-content a { color: var(--c-accent); }
/* ---------- fin Blog y tarjetas de entradas ---------- *//* End custom CSS */