/* ==========================================================================
   RIO FIT · estilos de marca para las plantillas de Elementor
   Cada clase rf-* se asigna en Elementor → Avanzado → Clases CSS.
   Colores: variables globales de Elementor (Ajustes del sitio → Colores).
   ========================================================================== */

/* --- Scroll: fluido, sin imán por secciones -------------------------------- */
@media (prefers-reduced-motion: no-preference) {
  html { scroll-behavior: smooth; }
}

/* --- Cabecera fija ---------------------------------------------------------- */
.rf-header.elementor-sticky--effects { box-shadow: 0 6px 24px rgba(42, 33, 29, .08); }
.rf-header .elementor-nav-menu--dropdown { border-radius: 0 0 16px 16px; overflow: hidden; }

/* --- Tarjetas de tratamiento (foto + degradado verde) ----------------------- */
.rf-card { position: relative; overflow: hidden; isolation: isolate; text-decoration: none !important; }
.rf-card::before {
  content: ""; position: absolute; inset: 0; z-index: -1;
  background: inherit; background-size: cover; background-position: center;
  transition: transform .6s cubic-bezier(.2, .7, .2, 1);
}
.rf-card::after {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(180deg, rgba(46, 80, 69, 0) 35%, rgba(46, 80, 69, .88) 70%, #2E5045 100%);
}
@media (hover: hover) {
  .rf-card:hover::before { transform: scale(1.05); }
}
.rf-card:focus-visible { outline: 3px solid var(--e-global-color-primary); outline-offset: 3px; }

/* --- Columna lateral fija (fichas y artículos) ------------------------------ */
@media (min-width: 1025px) {
  .rf-sticky { position: sticky !important; top: 110px; align-self: flex-start; }
}

/* --- Antes y después: carrusel con imán ------------------------------------- */
.rf-slider { overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; -webkit-overflow-scrolling: touch; flex-wrap: nowrap !important; }
.rf-slider::-webkit-scrollbar { display: none; }
.rf-slider > .e-con, .rf-slider .rf-ba-item { flex: none !important; scroll-snap-align: start; }

/* --- Campos vacíos de la ficha: se ocultan solos ---------------------------- */
.rf-ben:not(:has(.elementor-heading-title)),
.rf-para:not(:has(.elementor-heading-title)),
.rf-prow:not(:has(.elementor-heading-title)),
.rf-ba-item:not(:has(img)),
.rf-ba:not(:has(.rf-ba-item img)) { display: none !important; }
.rf-prices > .e-con:last-of-type, .rf-prices .rf-prow:last-child { border-bottom: 0 !important; }

/* --- Carrusel de marcas ----------------------------------------------------- */
.rf-marquee { width: max-content !important; flex-wrap: nowrap !important; animation: rf-marquee 32s linear infinite; }
.rf-marquee-wrap:hover .rf-marquee { animation-play-state: paused; }
@keyframes rf-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }
@media (prefers-reduced-motion: reduce) { .rf-marquee { animation: none; } }

/* --- Números de pasos ------------------------------------------------------- */
.rf-num .elementor-heading-title {
  width: 44px; height: 44px; border-radius: 999px; display: grid; place-items: center;
  background: var(--e-global-color-primary); font-size: 20px !important;
}

/* --- «+20 años» sobre la foto (Sobre Rio Fit) ------------------------------- */
.rf-badge { position: absolute !important; left: -24px; bottom: -24px; width: auto !important; box-shadow: 0 16px 40px rgba(42, 33, 29, .18); }
@media (max-width: 767px) { .rf-badge { left: auto; right: 12px; bottom: 12px; } }

/* --- Barra fija inferior en móvil ------------------------------------------- */
@media (max-width: 767px) {
  .rf-bottom-bar {
    position: fixed !important; left: 0; right: 0; bottom: 0; z-index: 99;
    padding-bottom: max(14px, env(safe-area-inset-bottom)) !important;
    box-shadow: 0 -6px 20px rgba(42, 33, 29, .08);
  }
  body { padding-bottom: 76px; }
  .rf-bottom-bar .elementor-button { padding-left: 8px !important; padding-right: 8px !important; }
}

/* --- Formularios: casillas y mensajes --------------------------------------- */
.elementor-field-type-acceptance label { font-size: 13px; line-height: 1.5; }
.elementor-field-type-acceptance input[type="checkbox"] { accent-color: var(--e-global-color-primary); width: 18px; height: 18px; }
.elementor-form .elementor-field-textual { font-size: 16px; } /* evita el zoom en iPhone */

/* --- Pie --------------------------------------------------------------------- */
.rf-footer a { color: inherit; }
.rf-footer a:hover { color: var(--e-global-color-rf_light); }

/* --- Accesibilidad ----------------------------------------------------------- */
a:focus-visible, .elementor-button:focus-visible { outline: 3px solid var(--e-global-color-primary); outline-offset: 3px; }

/* --- Filas de precio: el importe nunca se parte ----------------------------- */
.rf-prow > .elementor-widget:last-child, .rf-prow .e-con-inner > .elementor-widget:last-child { flex-shrink: 0; white-space: nowrap; }
.rf-ben .elementor-widget-icon { flex-shrink: 0; }

/* --- Nunca scroll horizontal en móvil (sin romper la cabecera fija) --------- */
html, body { overflow-x: clip; }

/* --- Hero: «alma carioca» en cursiva ---------------------------------------- */
.rf-hero h1 em { font-style: italic; font-weight: 600; color: #F2B08F; }

/* --- Sobre: foto de Joyce a la derecha en ordenador ------------------------- */
@media (min-width: 768px) {
  .rf-flip > .elementor-widget-image, .rf-flip > .e-con-inner > .elementor-widget-image { order: 2; }
}

/* --- Tratamientos estrella: carrusel deslizable en móvil -------------------- */
@media (max-width: 767px) {
  .rf-slider-m { overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; margin-right: -16px; padding-right: 16px !important; }
  .rf-slider-m::-webkit-scrollbar { display: none; }
  .rf-slider-m > .e-con { flex: none !important; width: 290px !important; scroll-snap-align: start; }
}

/* --- Sello circular sobre la foto de Valéria (Inicio) ----------------------- */
.rf-badge-r { left: auto; right: -18px; bottom: 28px; text-align: center; }
@media (max-width: 767px) { .rf-badge-r { right: 12px; bottom: -22px; } }

/* --- Marcas: bordes difuminados ---------------------------------------------- */
.rf-marquee-wrap { min-width: 0; -webkit-mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }
.rf-marcas > .elementor-widget-heading, .rf-marcas > .e-con-inner > .elementor-widget-heading { flex: 0 0 260px; }
.rf-marcas .rf-marquee-wrap { flex: 1 1 0 !important; width: auto !important; }
@media (max-width: 767px) {
  .rf-marcas > .elementor-widget-heading, .rf-marcas > .e-con-inner > .elementor-widget-heading { flex: none; }
  .rf-marcas .rf-marquee-wrap { flex: none !important; width: 100% !important; }
}
.rf-steps .e-con { min-width: 0; }
.rf-steps .e-con .e-con { flex: 1 1 0 !important; }

/* --- Enlaces «Ver todos… →» ------------------------------------------------- */
.rf-link .elementor-heading-title a { background: linear-gradient(currentColor, currentColor) 0 100% / 0 2px no-repeat; padding-bottom: 3px; transition: background-size .3s ease; }
.rf-link .elementor-heading-title a:hover { background-size: 100% 2px; }

/* --- Etiqueta destacada (Tarjeta regalo, Cumpleaños) ------------------------ */
.rf-pill .elementor-heading-title { display: inline-block; background: #F8F5ED; padding: 8px 16px; border-radius: 999px; letter-spacing: .08em; text-transform: uppercase; font-size: 14px !important; box-shadow: 0 6px 18px rgba(42, 33, 29, .18); }

/* --- Bloques «regalo»: degradado, cinta, lazo y brillo ---------------------- */
.rf-gift {
  position: relative; overflow: hidden; isolation: isolate;
  background: linear-gradient(135deg, #C35E35 0%, #B4522C 55%, #8E3F20 100%) !important;
}
.rf-gift::after {
  content: ""; position: absolute; inset: 0; z-index: -1; pointer-events: none;
  background: linear-gradient(115deg, transparent 35%, rgba(255, 255, 255, .14) 48%, transparent 60%);
  transform: translateX(-100%);
}
@media (prefers-reduced-motion: no-preference) {
  .rf-gift::after { animation: rf-shine 7s ease-in-out infinite; }
}
@keyframes rf-shine { 0%, 60% { transform: translateX(-100%); } 100% { transform: translateX(100%); } }
/* Lazo sobre la tarjeta blanca del formulario regalo */
.rf-bow { position: relative; overflow: visible !important; }
.rf-bow::before { content: ""; position: absolute; z-index: 2; top: -58px; left: auto !important; bottom: auto !important; right: 22px; width: 124px; height: 102px; background: url("lazo.webp") center / contain no-repeat; pointer-events: none; }
@media (max-width: 767px) { .rf-bow::before { top: -40px; right: 14px; width: 98px; height: 80px; } }

/* --- Promoción de cumpleaños: confeti y número grande ----------------------- */
.rf-promo {
  background:
    url("lazo.webp") no-repeat right 40px top 0 / 150px auto,
    radial-gradient(circle at 12% 18%, rgba(246, 211, 191, .55) 0 3px, transparent 4px),
    radial-gradient(circle at 34% 84%, rgba(248, 245, 237, .5) 0 2px, transparent 3px),
    radial-gradient(circle at 52% 12%, rgba(242, 176, 143, .7) 0 4px, transparent 5px),
    radial-gradient(circle at 66% 70%, rgba(248, 245, 237, .45) 0 3px, transparent 4px),
    radial-gradient(circle at 88% 88%, rgba(246, 211, 191, .6) 0 3px, transparent 4px),
    radial-gradient(circle at 6% 72%, rgba(242, 176, 143, .6) 0 2px, transparent 3px),
    linear-gradient(90deg, transparent calc(100% - 128px), rgba(248, 245, 237, .16) calc(100% - 128px), rgba(248, 245, 237, .16) calc(100% - 102px), transparent calc(100% - 102px)),
    linear-gradient(135deg, #C35E35 0%, #A9492A 50%, #2A211D 130%) !important;
}
@media (max-width: 767px) {
  .rf-promo {
    background:
      url("lazo.webp") no-repeat right 18px top 0 / 104px auto,
      radial-gradient(circle at 12% 10%, rgba(246, 211, 191, .55) 0 3px, transparent 4px),
      radial-gradient(circle at 80% 60%, rgba(248, 245, 237, .5) 0 2px, transparent 3px),
      radial-gradient(circle at 30% 92%, rgba(242, 176, 143, .7) 0 4px, transparent 5px),
      linear-gradient(90deg, transparent calc(100% - 83px), rgba(248, 245, 237, .16) calc(100% - 83px), rgba(248, 245, 237, .16) calc(100% - 61px), transparent calc(100% - 61px)),
      linear-gradient(160deg, #C35E35 0%, #A9492A 60%, #2A211D 140%) !important;
  }
}
.rf-big .elementor-heading-title { font-size: clamp(96px, 13vw, 176px) !important; line-height: .9 !important; font-style: italic; letter-spacing: -.02em; text-shadow: 0 10px 30px rgba(42, 33, 29, .25); }

/* --- H1 de categoría: «en Valencia» en una segunda línea -------------------- */
.rf-h1-loc .elementor-heading-title span { display: block; font-size: .55em; line-height: 1.2; color: var(--e-global-color-primary); font-style: italic; font-weight: 600; }

/* --- Foto cuadrada (Joyce) --------------------------------------------------- */
.rf-sq img { aspect-ratio: 1 / 1; height: auto !important; width: 100% !important; object-fit: cover; }

/* --- Preguntas frecuentes en dos columnas ------------------------------------ */
.rf-faq .elementor-accordion-item { border-radius: 14px; overflow: hidden; margin-bottom: 10px; border: 0 !important; }
.rf-faq .elementor-tab-title { display: flex; align-items: center; justify-content: space-between; gap: 12px; }
.rf-faq .elementor-accordion-icon { order: 2; font-size: 14px; }

/* --- Enlaces a una sección (#reservar): no quedar tapados por la cabecera fija */
html { scroll-padding-top: 110px; }
@media (max-width: 767px) { html { scroll-padding-top: 76px; } }

/* --- Palabra destacada en títulos (cursiva terracota) ----------------------- */
.rf-em .elementor-heading-title em { font-style: italic; font-weight: 600; color: var(--e-global-color-primary); }

/* --- Texto de los artículos: aire entre secciones ---------------------------- */
.elementor-widget-theme-post-content h2 { margin: 1.6em 0 .5em; }
.elementor-widget-theme-post-content h2:first-child { margin-top: 0; }
.elementor-widget-theme-post-content ul, .elementor-widget-theme-post-content ol { margin: 0 0 1.2em; padding-left: 1.2em; }
.elementor-widget-theme-post-content li { margin-bottom: .35em; }
.elementor-widget-theme-post-content a { text-decoration: underline; text-underline-offset: 3px; }

/* --- Tarjetas de artículo: zoom suave de la foto al pasar el ratón ---------- */
.rf-post .elementor-widget-image { overflow: hidden; }
.rf-post .elementor-widget-image img { transition: transform .7s cubic-bezier(.2, .7, .2, 1); }
.rf-post .elementor-heading-title { transition: color .25s ease; }
@media (hover: hover) {
  .rf-post:hover .elementor-widget-image img { transform: scale(1.06); }
  .rf-post:hover h3 .elementor-heading-title, .rf-post:hover h3.elementor-heading-title { color: var(--e-global-color-primary); }
}
.rf-post-mini .elementor-widget-image { border-radius: 14px; }
.rf-post-mini, .rf-post-mini .e-con { min-width: 0; }
.rf-post-mini > .e-con { flex: 1 1 0 !important; }

/* --- Listado del blog: el primer artículo, destacado a dos columnas --------- */
@media (min-width: 768px) {
  .rf-blog-grid .elementor-loop-container > .e-loop-item:nth-child(1 of .e-loop-item) { grid-column: span 2; }
}
@media (min-width: 1025px) {
  .rf-blog-grid .elementor-loop-container > .e-loop-item:nth-child(-n+2 of .e-loop-item) .elementor-widget-image img { height: 360px !important; }
  .rf-blog-grid .elementor-loop-container > .e-loop-item:nth-child(1 of .e-loop-item) h3.elementor-heading-title { font-size: 34px !important; line-height: 1.15; }
}
.rf-blog-grid .elementor-pagination { margin-top: 40px; font-weight: 700; }

/* --- Categorías del blog (chips) -------------------------------------------- */
.rf-chips .elementor-button { padding: 9px 18px !important; font-size: 14px !important; border-width: 1.5px !important; }
.rf-chips-sm .elementor-button { padding: 7px 14px !important; font-size: 13px !important; }
.rf-chips .rf-chip-on .elementor-button { background: var(--e-global-color-secondary) !important; color: #fff !important; border-color: var(--e-global-color-secondary) !important; }

/* --- Menú móvil: panel lateral ---------------------------------------------- */
.rf-header .elementor-nav-menu--dropdown { display: none !important; }
.rf-drawer { position: fixed; inset: 0; z-index: 9999; visibility: hidden; pointer-events: none; }
.rf-drawer.is-open { visibility: visible; pointer-events: auto; }
.rf-drawer__overlay { position: absolute; inset: 0; background: rgba(42, 33, 29, .55); backdrop-filter: blur(3px); opacity: 0; transition: opacity .35s ease; }
.rf-drawer.is-open .rf-drawer__overlay { opacity: 1; }
.rf-drawer__panel {
  position: absolute; top: 0; right: 0; bottom: 0; width: min(88vw, 380px);
  background: #F8F5ED; display: flex; flex-direction: column; gap: 28px;
  padding: max(18px, env(safe-area-inset-top)) 24px max(24px, env(safe-area-inset-bottom));
  transform: translateX(104%); transition: transform .45s cubic-bezier(.2, .8, .2, 1);
  box-shadow: -20px 0 50px rgba(42, 33, 29, .25); overflow-y: auto; border-radius: 24px 0 0 24px;
}
.rf-drawer.is-open .rf-drawer__panel { transform: none; }
.rf-drawer__top { display: flex; align-items: center; justify-content: space-between; }
.rf-drawer__top img { height: 38px; width: auto; }
.rf-drawer__close { width: 44px; height: 44px; border-radius: 999px; border: 0; background: #E9D8C8 !important; color: #2A211D !important; font-size: 18px; line-height: 1; cursor: pointer; display: grid; place-items: center; padding: 0 !important; }
.rf-drawer__nav { display: flex; flex-direction: column; }
.rf-drawer__nav a {
  display: flex; align-items: center; justify-content: space-between; gap: 12px;
  padding: 16px 2px; border-bottom: 1px solid #E9D8C8; color: #2A211D; text-decoration: none;
  font-family: "Playfair Display", Georgia, serif; font-size: 22px; font-weight: 600; line-height: 1.2;
  opacity: 0; transform: translateX(24px); transition: opacity .4s ease, transform .4s ease, color .2s;
}
.rf-drawer__nav a::after { content: "→"; font-family: "Open Sans", sans-serif; font-size: 18px; color: #C35E35; }
.rf-drawer__nav a[aria-current="page"] { color: #C35E35; }
.rf-drawer.is-open .rf-drawer__nav a { opacity: 1; transform: none; }
.rf-drawer__cta { display: grid; gap: 10px; }
.rf-drawer__cta a { display: flex; align-items: center; justify-content: center; gap: 8px; padding: 15px 20px; border-radius: 999px; font-weight: 700; font-size: 15px; text-decoration: none; }
.rf-drawer__cta .is-primary { background: #C35E35; color: #fff; }
.rf-drawer__cta .is-outline { border: 2px solid #2A211D; color: #2A211D; }
.rf-drawer__info { margin-top: auto; display: grid; gap: 6px; font-size: 14px; line-height: 1.5; color: #4A3F39; }
.rf-drawer__info a { color: #C35E35; font-weight: 700; text-decoration: none; }
html.rf-lock, html.rf-lock body { overflow: hidden; }
@media (prefers-reduced-motion: reduce) { .rf-drawer__panel, .rf-drawer__nav a, .rf-drawer__overlay { transition: none; } }

/* --- Vídeo de fondo: nunca mostrar el botón de reproducir del sistema -------- */
.elementor-background-video-hosted::-webkit-media-controls,
.elementor-background-video-hosted::-webkit-media-controls-start-playback-button,
.elementor-background-video-hosted::-webkit-media-controls-overlay-play-button,
.elementor-background-video-hosted::-webkit-media-controls-panel { display: none !important; -webkit-appearance: none; opacity: 0 !important; }
.elementor-background-video-container { pointer-events: none; }

/* --- Barra inferior del móvil: entra deslizando, no está desde el principio -- */
@media (max-width: 767px) {
  .rf-bottom-bar { transform: translateY(115%); transition: transform .55s cubic-bezier(.2, .8, .2, 1); will-change: transform; }
  .rf-bottom-bar.is-visible { transform: none; }
}
@media (max-width: 767px) and (prefers-reduced-motion: reduce) { .rf-bottom-bar { transition: none; } }

/* --- «¿Qué se siente?»: los tres datos en una fila también en el móvil ------ */
@media (max-width: 767px) {
  .rf-facts > .e-con { padding: 12px 8px !important; text-align: center; }
  .rf-facts .elementor-heading-title { font-size: 13px !important; line-height: 1.25 !important; }
  .rf-facts p.elementor-heading-title { text-align: center; }
}

/* --- Pie de página ------------------------------------------------------------ */
.rf-footer .elementor-field-type-acceptance input[type="checkbox"] { width: 18px !important; height: 18px !important; min-height: 0 !important; padding: 0 !important; margin: 2px 8px 0 0; vertical-align: top; }
.rf-footer .elementor-field-type-acceptance label { font-size: 12px; line-height: 1.5; }
.rf-foot-news .elementor-button { width: 100%; }
@media (max-width: 767px) {
  .rf-foot-brand { align-items: center; text-align: center; }
  .rf-foot-brand p { text-align: center; }
  .rf-foot-menu .elementor-icon-list-items { display: grid !important; grid-template-columns: 1fr 1fr; gap: 10px 16px; }
  .rf-foot-menu .elementor-icon-list-item { margin: 0 !important; padding: 0 !important; }
  .rf-foot-legal { text-align: center; }
  .rf-foot-legal .elementor-icon-list-items { justify-content: center; }
}

/* --- Datos del hero (+20 años, 3 cabinas, 1 a 1) sobre el vídeo en el móvil --- */
.rf-hero-stats > .e-con { min-width: 0; }
@media (max-width: 767px) {
  .rf-hero-stats .rf-stat-n .elementor-heading-title { font-size: 19px !important; line-height: 1.2 !important; }
  .rf-hero-stats .rf-stat-l .elementor-heading-title { font-size: 12px !important; line-height: 1.35 !important; }
}

/* --- Reseñas de Google (Trustindex): tipografía de la web -------------------- */
.rf-reviews .ti-widget, .rf-reviews .ti-widget * { font-family: "Open Sans", sans-serif !important; }
.rf-reviews .ti-widget .ti-name { font-weight: 700 !important; color: var(--e-global-color-secondary) !important; }
.rf-reviews .ti-widget .ti-review-item > .ti-inner, .rf-reviews .ti-widget .ti-review-content { border-radius: 20px !important; }

/* Cierre con foto de Rio: formulario ligeramente translúcido */
.rf-glass{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);box-shadow:0 20px 60px rgba(0,0,0,.25)}
.rf-cierre .elementor-heading-title{text-shadow:0 2px 18px rgba(0,0,0,.25)}

/* reCAPTCHA v3: sello oculto (el aviso legal va dentro de cada formulario) */
.grecaptcha-badge{visibility:hidden !important}
.rf-captcha-note{margin:0;font-size:11px;line-height:1.45;color:#6B5F58;opacity:.85}
.rf-captcha-note a{color:inherit;text-decoration:underline}
.elementor-field-type-recaptcha_v3{margin:0 !important;padding:0 !important}
.elementor-field-type-recaptcha_v3:empty,.elementor-field-type-recaptcha_v3 .elementor-field:empty{display:none}
footer .rf-captcha-note,.rf-foot-news .rf-captcha-note{color:#D8CEC6}

/* Popup de reserva: nombre del tratamiento destacado */
.rf-pop-title .elementor-heading-title em{font-style:italic;color:#C35E35}

/* Textos legales */
.rf-legal h2{font-family:"Playfair Display",serif;font-size:24px;line-height:1.25;color:#2A211D;margin:36px 0 12px}
.rf-legal p,.rf-legal ul{margin:0 0 14px}
.rf-legal ul{padding-left:20px}
.rf-legal li{margin-bottom:6px}
.rf-legal a{color:#C35E35;text-decoration:underline}
.rf-legal code{font-size:.9em;background:#F8F5ED;padding:1px 6px;border-radius:6px}
@media (max-width:767px){.rf-legal h2{font-size:20px;margin-top:28px}}
