Explora PILAT3S por Todo el Mundo

Encuentra tu Estudio

Eleva tu estilo de vida con PILAT3S. Descubre tu estudio más cercano. 

Filtros

País

function separarFiltros() {
  const optionTexts = document.querySelectorAll('.brxe-filter-radio .brx-option-text:not([data-processed])');

  optionTexts.forEach(span => {
    const text = span.textContent.trim();
    const match = text.match(/^(.+?)\s*\((\d+)\)$/);
    if (match) {
      const name = match[1];
      const count = match[2];

      span.textContent = name;
      span.dataset.processed = "true";

      const countSpan = document.createElement('span');
      countSpan.className = 'country-count';
      countSpan.textContent = count;

      span.parentElement.appendChild(countSpan);
    }
  });
}

// Roda ao carregar a página
document.addEventListener("DOMContentLoaded", separarFiltros);

// Roda novamente sempre que o Bricks atualizar algo via AJAX
document.addEventListener('bricks/ajax/load', separarFiltros);

// Fallback universal: observa o DOM por mudanças
const observer = new MutationObserver(separarFiltros);
observer.observe(document.body, { childList: true, subtree: true });
<div id="loadMoreContainer" style="text-align:center; margin-top: 40px;">
  <button id="loadMoreBtn" class="custom-load-more" style="display:none;">
    Descubra más
    <svg xmlns="http://www.w3.org/2000/svg" width="24" height="24" viewBox="0 0 24 24" fill="none" style="margin-left:8px;">
      <path d="M12 19L12 5" stroke="#566251" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
      <path d="M7 14L12 19" stroke="#566251" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
      <path d="M17 14L12 19" stroke="#566251" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round"/>
    </svg>
  </button>
</div>

<style>
/* === Botão personalizado === */
.custom-load-more {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 6px;
  border: 1px solid var(--Green-Main, #566251);
  color: var(--Green-Main, #566251);
  font-family: "TT Norms Pro";
  font-size: 14px;
  font-style: normal;
  font-weight: 500;
  line-height: normal;
  background: transparent;
  border-radius: 50px;
  padding: 10px 24px;
  cursor: pointer;
  transition: all 0.3s ease;
}

.custom-load-more:hover {
  background: var(--Green-Main, #566251);
  color: #fff;
}

.custom-load-more:hover svg path {
  stroke: #fff;
}

.custom-load-more:hover svg {
  transform: translateY(2px);
  transition: transform 0.3s ease;
}

/* Fade suave */
.product-card {
  opacity: 0;
  transform: translateY(15px);
  transition: opacity 0.4s ease, transform 0.4s ease;
}

.product-card[style*="block"] {
  opacity: 1;
  transform: translateY(0);
}
</style>

<script>
document.addEventListener("DOMContentLoaded", function() {
  const ITEMS_PER_PAGE = 3;
  const loadMoreBtn = document.getElementById("loadMoreBtn");
  const containerSelector = ".alm-listing, #brxe-soaaks";

  function initLoadMore() {
    const container = document.querySelector(containerSelector);
    if (!container) return;

    const items = container.querySelectorAll(".product-card");
    if (!items.length) {
      loadMoreBtn.style.display = "none";
      return;
    }

    // Detecta filtro ativo
    const activeFilter = document.querySelector('.brx-option-active input');
    const filterValue = activeFilter ? activeFilter.value : "";

    // Ajuste aqui se o value do AU for outro
    const behavesAsDefault = (filterValue === "" || filterValue === "all");

    // Sempre mostra todos inicialmente
    items.forEach(item => item.style.display = "block");
    loadMoreBtn.style.display = "none";

    // ✅ FILTRO APLICADO (exceto ALL)
    if (!behavesAsDefault) {
      return; // Mostra todos → sem botão
    }

    // ✅ SEM FILTRO ou AU → comportamento LOAD MORE
    let visibleCount = ITEMS_PER_PAGE;

    items.forEach((item, i) => {
      item.style.display = i < ITEMS_PER_PAGE ? "block" : "none";
    });

    toggleButton();

    loadMoreBtn.onclick = function() {
      const nextVisible = visibleCount + ITEMS_PER_PAGE;
      for (let i = visibleCount; i < nextVisible && i < items.length; i++) {
        items[i].style.display = "block";
      }
      visibleCount += ITEMS_PER_PAGE;
      toggleButton();
    };

    function toggleButton() {
      const visibleItems = Array.from(items).filter(el => el.style.display !== "none");
      loadMoreBtn.style.display =
        items.length > visibleItems.length ? "inline-flex" : "none";
    }
  }

  initLoadMore();

  // Reaplica após AJAX
  document.addEventListener("bricks/ajax/load", function() {
    setTimeout(initLoadMore, 100);
  });

  // Observer (caso Bricks re-renderize)
  const observer = new MutationObserver(() => {
    if (document.querySelectorAll(".product-card").length) {
      setTimeout(initLoadMore, 100);
    }
  });

  observer.observe(document.body, { childList: true, subtree: true });
});
</script>

<script>
document.addEventListener("DOMContentLoaded", function() {
  const filterList = document.querySelector('.brxe-filter-radio');
  if (!filterList) return;

  const select = document.createElement('select');
  select.className = 'country-filter-dropdown';

  const options = filterList.querySelectorAll('li label');
  options.forEach((label) => {
    const text = label.querySelector('.brx-option-text')?.textContent.trim();
    const count = label.querySelector('.country-count')?.textContent.trim() || '';
    const value = label.querySelector('input')?.value || '';

    const option = document.createElement('option');
    option.value = value;
    option.textContent = count ? `${text} (${count})` : text;

    if (label.classList.contains('brx-option-active')) {
      option.selected = true;
    }
    select.appendChild(option);
  });

  filterList.parentNode.insertBefore(select, filterList);

  select.addEventListener('change', function() {
    const radios = filterList.querySelectorAll('input[type="radio"]');
    radios.forEach(radio => {
      if (radio.value === select.value) {
        radio.click();
      }
    });
  });

  document.addEventListener("bricks/ajax/load", () => {
    const activeLabel = filterList.querySelector('.brx-option-active input');
    if (activeLabel) select.value = activeLabel.value;
  });
});
</script>

<script>
document.addEventListener("DOMContentLoaded", function () {

  // Função para resetar o dropdown sempre que limpar
  function resetDropdownToAll() {
    const select = document.querySelector(".country-filter-dropdown");
    if (select) {
      select.selectedIndex = 0;
    }
  }

  // Observa mudanças no DOM após reset
  const observer = new MutationObserver(() => {
    // Quando o filtro for resetado, o texto ativo volta para ALL,
    // então sincronizamos o dropdown
    const activeInput = document.querySelector(".brx-option-active input");
    if (activeInput && activeInput.value === "all") {
      resetDropdownToAll();
    }
  });

  observer.observe(document.body, {
    childList: true,
    subtree: true
  });

  // Captura clique no botão CLEAR (type=reset)
  document.addEventListener("click", function (e) {
    if (e.target.closest(".brxe-filter-submit[type='reset']")) {
      // Pequeno delay para o browser resetar os radios
      setTimeout(() => {
        resetDropdownToAll();
      }, 50);
    }
  });

});
</script>




<style>
.country-filter-dropdown {
  display: none;
}

@media (max-width: 768px) {
  .brxe-filter-radio {
    display: none !important;
  }

  .country-filter-dropdown {
    display: block;
    width: 100%;
    background-color: var(--bricks-color-fappzc);
    border: 1px solid var(--bricks-color-dyuxyf);
    border-radius: 24px;
    padding: 4px 16px;
    color: var(--bricks-color-ubyowm);
    margin-top: 20px;
    font-family: "TT Norms Pro", sans-serif;
    font-size: 16px;
    font-weight: 400;
    appearance: none;
    cursor: pointer;

    /* Ícone seta preenchida e menor */
    background-image: url("data:image/svg+xml,%3Csvg width='10' height='6' viewBox='0 0 10 6' fill='%23566251' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath d='M1 1L5 5L9 1H1Z'/%3E%3C/svg%3E");
    background-repeat: no-repeat;
    background-position: right 16px center;
    background-size: 10px;
  }
}
</style>
Contáctanos

Contáctanos

¿Tienes alguna pregunta o necesitas ayuda? Rellena el formulario y nuestro equipo se pondrá en contacto contigo lo antes posible.

¿Tienes alguna pregunta sobre tu estudio?

Síguenos en Redes Sociales:
<form id="brxe-bjdyin" action="<?php echo esc_url($_SERVER['REQUEST_URI']); ?>" method="post">
  <div class="form-group" role="group">
    <input
      id="form-field-feefcf"
      name="form-field-30d577"
      aria-label="Nombre"
      spellcheck="false"
      type="text"
      value=""
      placeholder="Introduce tu nombre"
  		required
    >
  </div>

  <div class="form-group" role="group">
    <input
      id="form-field-97c8ca"
      name="form-field-bxhina"
      aria-label="Apellido"
      spellcheck="false"
      type="text"
      value=""
      placeholder="Introduce tu apellido"
    >
  </div>

  <div class="form-group" role="group">
    <input
      id="form-field-7d3755"
      name="form-field-40ae92"
      aria-label="Correo electrónico"
      type="email"
      value=""
      placeholder="Introduce tu correo electrónico"
      maxlength="320"
      required
    >
  </div>

  <div class="form-group" role="group">
    <input
      id="form-field-4a09f6"
      name="form-field-madcme"
      aria-label="Teléfono"
      type="tel"
      value=""
      placeholder="Introduce tu número de teléfono"
    >
  </div>

<?php echo do_shortcode('[filter_country_studio]'); ?>

  <div class="form-group" role="group">
    <textarea
      id="form-field-c2b017"
      name="form-field-2f0f5e"
      aria-label="Message"
      spellcheck="false"
      placeholder="Tu mensage…"
      required
    ></textarea>
  </div><!-- Honeypot escondido -->
<div style="display:none !important;">
  <input type="text" name="anti_robot_field" tabindex="-1" autocomplete="off">
</div>

<!-- reCAPTCHA v2 -->
<div class="g-recaptcha" data-sitekey="6Lc48RksAAAAAH3KnpT2sH_OCu-tkc4KTyNWpaRE"></div>

<script src="https://www.google.com/recaptcha/api.js" async defer></script>


  <div class="form-group" role="radiogroup" aria-labelledby="label-yicrye">
    <ul class="options-wrapper">
      <li>
        <input
          type="radio"
          id="form-field-yicrye-0"
          name="form-field-yicrye[]"
          required
          value="Autorizo a que me contacten con respecto a mi consulta."
        >
        <label for="form-field-yicrye-0">
         Autorizo a que me contacten con respecto a mi consulta.
        </label>
      </li>
    </ul>
  </div>

  <div class="form-group submit-button-wrapper">
    <button type="submit" class="bricks-button bricks-background-primary icon-right">
      <span class="text">Enviar mensaje</span>
      <svg class="icon-send" xmlns="http://www.w3.org/2000/svg" width="24" height="25" viewBox="0 0 24 25" fill="none">
        <path d="M19 12.2798H5" stroke="#FAFAFA" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
        <path d="M14 17.2798L19 12.2798" stroke="#FAFAFA" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
        <path d="M14 7.27979L19 12.2798" stroke="#FAFAFA" stroke-width="1.5" stroke-linecap="round" stroke-linejoin="round" />
      </svg>
      <span class="loading">
        <svg version="1.1" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg">
          <g stroke-linecap="round" stroke-width="1" stroke="currentColor" fill="none" stroke-linejoin="round">
            <path d="M0.927,10.199l2.787,4.151l3.205,-3.838"></path>
            <path d="M23.5,14.5l-2.786,-4.15l-3.206,3.838"></path>
            <path d="M20.677,10.387c0.834,4.408 -2.273,8.729 -6.509,9.729c-2.954,0.699 -5.916,-0.238 -7.931,-2.224"></path>
            <path d="M3.719,14.325c-1.314,-4.883 1.969,-9.675 6.538,-10.753c3.156,-0.747 6.316,0.372 8.324,2.641"></path>
          </g>
          <path fill="none" d="M0,0h24v24h-24Z"></path>
        </svg>
      </span>
    </button>
    
    <input type="hidden" name="custom_studio_form" value="1">
  </div>
</form>

<!-- Mensagem de sucesso opcional -->
<?php if (isset($_GET['success'])) : ?>
  <div class="alert alert-success">
    <?php
      $lang = function_exists('pll_current_language') ? pll_current_language() : 'en';

      switch ($lang) {
        case 'pt':
          echo 'Sua mensagem foi enviada com sucesso!';
          break;
        case 'es':
          echo '¡Tu mensaje ha sido enviado con éxito!';
          break;
        case 'en':
        default:
          echo 'Your message has been sent successfully!';
          break;
      }
    ?>
  </div>
<?php endif; ?>
#brxe-bjdyin {
  display: flex;
  flex-wrap: wrap;
  justify-content: space-between;
}

.form-group {
    display: flex;
    flex-direction: column;
    padding: 0 0 20px;
    width: 100%;
}

.form-group {
    padding-bottom: 12px;
}

.form-group:nth-child(1) {
    width: 48.6%;
}

.form-group:nth-child(2) {
    width: 48.6%;
}

.form-group input {
    font-size: 16px;
    font-weight: 400;
    color: var(--bricks-color-gymnyz);
    line-height: 1.5;
    background-color: var(--bricks-color-fappzc);
    border-radius: 24px;
    padding-top: 12px;
    padding-right: 18px;
    padding-bottom: 12px;
    padding-left: 18px;
}

.form-group select {
    font-size: 16px;
    font-weight: 400;
    color: var(--bricks-color-ubyowm);
    line-height: 1.5;
    background-color: var(--bricks-color-fappzc);
    border-radius: 24px;
    padding-top: 12px;
    padding-right: 18px;
    padding-bottom: 12px;
    padding-left: 18px;
}

.form-group textarea {
    font-size: 16px;
    font-weight: 400;
    color: var(--bricks-color-gymnyz);
    line-height: 1.5;
    background-color: var(--bricks-color-fappzc);
    border-radius: 24px;
    padding-top: 12px;
    padding-right: 18px;
    padding-bottom: 12px;
    padding-left: 18px;
  	resize: none;
}

.form-group label {
    font-size: 14px;
    text-transform: none;
    letter-spacing: 0px;
    font-weight: 400;
}

.options-wrapper {
    list-style-type: none;
    margin: 0;
    padding: 0;
}

.options-wrapper li {
    display: flex;
    align-items: center;
    justify-content: flex-start;
    flex-wrap: nowrap;
    gap: 5px;
}

.options-wrapper input,.options-wrapper label {
    display: inline-block;
    height: auto;
    margin: 0 5px 0 0;
    width: auto;
}

.submit-button-wrapper {
    margin-top: 0;
    margin-right: 0;
    margin-bottom: 0;
    margin-left: 0;
}

.submit-button-wrapper {
    width: 100%;
  	max-width: 200px;
}

.g-recaptcha {
    margin-bottom: 15px !important;
}

.bricks-button {
  width: 100%;
    font-size: 14px;
    line-height: 1.1;
    color: var(--bricks-color-fappzc);
    border-radius: 100px;
    transition: .2s;
    padding-top: 8px;
    padding-right: 16px;
    padding-bottom: 8px;
    padding-left: 16px;
}

button[type=submit] .loading {
    display: none;
}


@media(max-width: 991px) {
  .submit-button-wrapper {
        max-width: 100%;
    		height: 100%;
    }
  
  .bricks-button {
        width: 100% !important;
        min-width: 100% !important;
    		height: 41px;
    }
}

@media(max-width: 478px) {
  .form-group:nth-child(1) {
    width: 100%;
}

.form-group:nth-child(2) {
    width: 100%;
}
}
document.addEventListener('DOMContentLoaded', function () {
  const form = document.getElementById('brxe-bjdyin');
  const button = document.getElementById('submitBtn');
  const icon = button.querySelector('.icon-send');
  const loading = button.querySelector('.loading');
  const text = button.querySelector('.text');

  form.addEventListener('submit', function () {
    icon.style.display = 'none';
    loading.style.display = 'inline-block';
    text.textContent = getLocalizedSendingText();
  });

  function getLocalizedSendingText() {
    const lang = document.documentElement.lang || 'en';
    switch (lang) {
      case 'pt': return 'Enviando...';
      case 'es': return 'Enviando...';
      case 'fr': return 'Envoi en cours...';
      default: return 'Sending...';
    }
  }
});

document.addEventListener("DOMContentLoaded", function () {
  const form = document.getElementById("brxe-bjdyin");

  form.addEventListener("submit", function (e) {

    // HONEYPOT → Si rempli, bloquer
    const honeypot = form.querySelector("input[name='anti_robot_field']");
    if (honeypot && honeypot.value.trim() !== "") {
      e.preventDefault();
      alert("Erreur de validation.");
      return false;
    }

    // reCAPTCHA vide → bloquer
    const recaptcha = grecaptcha.getResponse();
    if (recaptcha.length === 0) {
      e.preventDefault();
      alert("Veuillez confirmer que vous n’êtes pas un robot.");
      return false;
    }

    // 🔥 Délai de 1,5 s pour réinitialiser après envoi réussi
    setTimeout(() => {
      if (typeof grecaptcha !== "undefined") {
        grecaptcha.reset();
      }
    }, 1500);
  });
});
Muy pronto

Mantente atento a lo que viene a continuación

Estamos trabajando entre bastidores para ofrecerte nuevas y emocionantes funciones que mejoren tu experiencia con PILAT3S. Esta página se encuentra actualmente en desarrollo y se lanzará pronto. Vuelve a visitarla más tarde para ver las actualizaciones y prepárate para mejorar tu experiencia de acondicionamiento físico.