{"id":6480,"date":"2026-04-10T17:50:39","date_gmt":"2026-04-10T17:50:39","guid":{"rendered":"https:\/\/p90rapidcut.com\/registro\/"},"modified":"2026-05-05T14:42:07","modified_gmt":"2026-05-05T14:42:07","slug":"registro","status":"publish","type":"page","link":"https:\/\/p90rapidcut.com\/en\/registro\/","title":{"rendered":"Sign Up"},"content":{"rendered":"\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Bebas+Neue&#038;family=Inter:wght@300;400;500;600;700&#038;display=swap\" rel=\"stylesheet\">\n<script src=\"https:\/\/cdn.tailwindcss.com\/3.4.16\"><\/script>\n<script>tailwind.config={theme:{extend:{colors:{brand:'#21AC19',smoke:'#0A0A0A'},fontFamily:{heading:['Bebas Neue','sans-serif'],body:['Inter','system-ui','sans-serif']}}}}<\/script>\n\n<style>\n  .site-header, .site-footer, #masthead, .kadence-header, .kadence-footer,\n  .site-branding, .main-navigation, .footer-navigation,\n  header.entry-header, .entry-meta, .post-navigation,\n  .comments-area, .sidebar, #colophon, .breadcrumb,\n  .kadence-breadcrumbs, .wp-site-blocks > header,\n  .wp-site-blocks > footer { display: none !important; }\n  .site-content, .content-area, .site-main, .entry-content,\n  .wp-site-blocks, .wp-block-post-content,\n  main, article, .site-inner, .site {\n    max-width: 100% !important; width: 100% !important; padding: 0 !important; margin: 0 !important;\n  }\n  body, html { background: #000000 !important; margin: 0 !important; padding: 0 !important; overflow-x: hidden; }\n  h1, h2, h3, h4, h5, h6, .font-heading { color: #FFFFFF !important; }\n  .entry-content-wrap, .content-container { max-width: 100% !important; padding: 0 !important; }\n<\/style>\n\n<style>\n  *, *::before, *::after { margin: 0; padding: 0; box-sizing: border-box; }\n  html { scroll-behavior: smooth; }\n  body { font-family: 'Inter', system-ui, sans-serif; background: #000000; color: #FFFFFF; overflow-x: hidden; -webkit-font-smoothing: antialiased; }\n\n  ::-webkit-scrollbar { width: 4px; }\n  ::-webkit-scrollbar-track { background: #000; }\n  ::-webkit-scrollbar-thumb { background: #21AC19; border-radius: 2px; }\n\n  .text-gradient {\n    background: linear-gradient(135deg, #21AC19 0%, #35D89A 50%, #1EEE2E 100%);\n    -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;\n  }\n\n  \/* Nav *\/\n  .nav-link { position: relative; }\n  .nav-link::after { content: ''; position: absolute; bottom: -4px; left: 0; width: 100%; height: 2px; background: #21AC19; transform: scaleX(0); transform-origin: center; transition: transform 0.3s ease; }\n  .nav-link:hover::after { transform: scaleX(0.6); }\n  .nav-link.active { color: #21AC19 !important; }\n  .nav-link.active::after { transform: scaleX(1); }\n  .mobile-menu-bg { background: rgba(0,0,0,0.97); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); }\n  .mobile-menu-link { opacity: 0; transform: translateY(20px); transition: opacity 0.4s ease, transform 0.4s ease; }\n  .mobile-menu-link.visible { opacity: 1; transform: translateY(0); }\n\n  \/* Toggle tabs *\/\n  .tab-container { display: inline-flex; border: 1px solid rgba(255,255,255,0.15); border-radius: 999px; padding: 4px; background: rgba(255,255,255,0.03); }\n  .mode-tab { padding: 10px 28px; border-radius: 999px; font-size: 0.85rem; font-weight: 600; letter-spacing: 0.08em; text-transform: uppercase; cursor: pointer; transition: all 0.3s ease; border: none; background: transparent; color: rgba(255,255,255,0.6); }\n  .mode-tab.active { background: #21AC19; color: #000000; box-shadow: 0 0 20px rgba(33,172,25,0.3); }\n  .mode-tab:not(.active):hover { color: #FFFFFF; }\n\n  \/* CTA submit button *\/\n  .submit-btn {\n    position: relative; overflow: hidden; cursor: pointer;\n    background: linear-gradient(135deg, #21AC19 0%, #1EEE2E 50%, #21AC19 100%);\n    background-size: 200% 200%;\n    animation: gradient-shift 4s ease-in-out infinite, glow-pulse 3s ease-in-out infinite;\n    border: none; outline: none;\n    transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1), box-shadow 0.3s ease, letter-spacing 0.3s ease;\n  }\n  @keyframes gradient-shift { 0%,100% { background-position: 0% 50%; } 50% { background-position: 100% 50%; } }\n  @keyframes glow-pulse { 0%, 100% { box-shadow: 0 0 15px rgba(33,172,25,0.25), 0 4px 15px rgba(0,0,0,0.3); } 50% { box-shadow: 0 0 40px rgba(33,172,25,0.45), 0 0 80px rgba(33,172,25,0.12), 0 4px 15px rgba(0,0,0,0.3); } }\n\n  \/* Shine sweep *\/\n  .submit-btn::before {\n    content: ''; position: absolute; top: 0; left: -100%; width: 60%; height: 100%;\n    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.25), transparent);\n    transform: skewX(-25deg); transition: left 0.7s ease;\n  }\n  .submit-btn:hover::before { left: 140%; }\n\n  \/* Bottom edge glow line *\/\n  .submit-btn::after {\n    content: ''; position: absolute; bottom: 0; left: 10%; width: 80%; height: 2px;\n    background: linear-gradient(90deg, transparent, rgba(255,255,255,0.6), transparent);\n    opacity: 0; transition: opacity 0.3s ease;\n  }\n  .submit-btn:hover::after { opacity: 1; }\n\n  .submit-btn:hover { transform: translateY(-3px) scale(1.02); letter-spacing: 0.2em; }\n  .submit-btn:active { transform: translateY(0) scale(0.98); }\n\n  \/* Arrow icon inside button *\/\n  .btn-arrow { display: inline-block; transition: transform 0.3s cubic-bezier(0.34, 1.56, 0.64, 1); margin-left: 8px; }\n  .submit-btn:hover .btn-arrow { transform: translateX(6px); }\n\n  \/* Particle burst on hover *\/\n  .submit-btn .btn-particles { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }\n  .submit-btn .btn-particles span {\n    position: absolute; width: 4px; height: 4px; border-radius: 50%;\n    background: rgba(255,255,255,0.7); opacity: 0;\n  }\n  .submit-btn:hover .btn-particles span { animation: particle-burst 0.8s ease-out forwards; }\n  @keyframes particle-burst {\n    0% { opacity: 1; transform: translate(0,0) scale(1); }\n    100% { opacity: 0; transform: translate(var(--px), var(--py)) scale(0); }\n  }\n\n  \/* Toggle mode tabs enhanced *\/\n  .mode-tab { position: relative; overflow: hidden; }\n  .mode-tab::before {\n    content: ''; position: absolute; inset: 0; border-radius: 999px;\n    background: linear-gradient(135deg, rgba(33,172,25,0.2), transparent);\n    opacity: 0; transition: opacity 0.3s ease;\n  }\n  .mode-tab:not(.active):hover::before { opacity: 1; }\n  .mode-tab.active {\n    background: linear-gradient(135deg, #21AC19 0%, #1EEE2E 100%);\n    box-shadow: 0 0 20px rgba(33,172,25,0.3), inset 0 1px 0 rgba(255,255,255,0.2);\n    text-shadow: 0 1px 2px rgba(0,0,0,0.3);\n  }\n\n  \/* Form inputs *\/\n  .form-input {\n    width: 100%;\n    padding: 14px 16px;\n    background: rgba(255,255,255,0.04);\n    border: 1px solid rgba(255,255,255,0.12);\n    border-radius: 12px;\n    color: #FFFFFF;\n    font-family: 'Inter', system-ui, sans-serif;\n    font-size: 0.9rem;\n    transition: border-color 0.3s ease, box-shadow 0.3s ease;\n    outline: none;\n  }\n  .form-input::placeholder { color: rgba(255,255,255,0.35); }\n  .form-input:focus {\n    border-color: rgba(33,172,25,0.6);\n    box-shadow: 0 0 0 3px rgba(33,172,25,0.1), 0 0 20px rgba(33,172,25,0.08);\n  }\n\n  \/* Password eye toggle *\/\n  .eye-btn {\n    position: absolute; right: 36px; top: 50%; transform: translateY(-50%);\n    background: none; border: none; cursor: pointer; padding: 6px;\n    border-radius: 50%; transition: all 0.4s cubic-bezier(0.34, 1.56, 0.64, 1);\n  }\n  .eye-btn svg { transition: transform 0.4s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.3s ease, filter 0.4s ease; }\n\n  \/* Closed state: red *\/\n  .eye-btn.closed { color: #ef4444; }\n  .eye-btn.closed:hover { background: rgba(239,68,68,0.1); }\n  .eye-btn.closed svg { filter: drop-shadow(0 0 4px rgba(239,68,68,0.4)); }\n\n  \/* Open state: green *\/\n  .eye-btn.open { color: #21AC19; }\n  .eye-btn.open:hover { background: rgba(33,172,25,0.1); }\n  .eye-btn.open svg { filter: drop-shadow(0 0 6px rgba(33,172,25,0.5)); transform: scale(1.15); }\n\n  \/* Pulse animation on toggle *\/\n  @keyframes eye-pulse {\n    0% { transform: scale(1); }\n    40% { transform: scale(1.35); }\n    70% { transform: scale(0.9); }\n    100% { transform: scale(1.15); }\n  }\n  @keyframes eye-pulse-close {\n    0% { transform: scale(1.15); }\n    40% { transform: scale(0.7); }\n    70% { transform: scale(1.1); }\n    100% { transform: scale(1); }\n  }\n  .eye-btn.animate-open svg { animation: eye-pulse 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\n  .eye-btn.animate-close svg { animation: eye-pulse-close 0.5s cubic-bezier(0.34, 1.56, 0.64, 1) forwards; }\n\n  \/* Glow ring on open *\/\n  .eye-btn::after {\n    content: ''; position: absolute; inset: -2px; border-radius: 50%;\n    border: 2px solid transparent; transition: all 0.4s ease; opacity: 0;\n  }\n  .eye-btn.open::after { border-color: rgba(33,172,25,0.4); opacity: 1; box-shadow: 0 0 10px rgba(33,172,25,0.2); }\n\n  \/* Checkbox *\/\n  .custom-check { appearance: none; -webkit-appearance: none; width: 18px; height: 18px; border: 1px solid rgba(255,255,255,0.25); border-radius: 4px; background: rgba(255,255,255,0.04); cursor: pointer; transition: all 0.2s ease; flex-shrink: 0; position: relative; }\n  .custom-check:checked { background: #21AC19; border-color: #21AC19; }\n  .custom-check:checked::after { content: ''; position: absolute; left: 5px; top: 2px; width: 5px; height: 9px; border: solid #000; border-width: 0 2px 2px 0; transform: rotate(45deg); }\n\n  \/* Form transitions *\/\n  .form-panel { transition: opacity 0.35s ease, transform 0.35s ease; }\n  .form-panel.hidden { opacity: 0; transform: translateY(10px); position: absolute; pointer-events: none; }\n  .form-panel.visible { opacity: 1; transform: translateY(0); position: relative; pointer-events: auto; }\n\n  \/* Image transitions *\/\n  .deco-img {\n    transition: opacity 0.5s ease, transform 0.6s cubic-bezier(0.25, 0.46, 0.45, 0.94);\n    position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover;\n  }\n  .deco-img.entering { opacity: 1; transform: translateY(0); }\n  .deco-img.exiting { opacity: 0; transform: translateY(40px); }\n  .deco-img.hidden { opacity: 0; transform: translateY(40px); display: none; }\n\n  \/* Neon border on form card *\/\n  @keyframes neon-breathe {\n    0%, 100% { box-shadow: 0 0 5px rgba(33,172,25,0.15), inset 0 0 5px rgba(33,172,25,0.05); border-color: rgba(33,172,25,0.25); }\n    50% { box-shadow: 0 0 15px rgba(33,172,25,0.3), inset 0 0 8px rgba(33,172,25,0.08); border-color: rgba(33,172,25,0.5); }\n  }\n\n  \/* Error state *\/\n  .form-input.error { border-color: #ef4444; }\n  .error-msg { color: #ef4444; font-size: 0.75rem; margin-top: 4px; display: none; }\n  .error-msg.show { display: block; }\n\n  a:focus-visible, button:focus-visible { outline: 2px solid #21AC19; outline-offset: 2px; }\n<\/style>\n\n<!-- ========== HEADER ========== -->\n<header id=\"nav\" class=\"fixed top-0 left-0 right-0 z-50\" style=\"background: rgba(0,0,0,0.92); backdrop-filter: blur(20px); -webkit-backdrop-filter: blur(20px); border-bottom: 1px solid rgba(33,172,25,0.15);\">\n  <div class=\"max-w-7xl mx-auto px-6 lg:px-10 flex items-center justify-between h-20\">\n    <a href=\"\/\" class=\"flex items-center gap-3\">\n      <img decoding=\"async\" src=\"https:\/\/p90rapidcut.com\/wp-content\/uploads\/2025\/10\/cropped-LIFTED_MIND_sin_fondo-removebg-preview.png\" alt=\"P90 RapidCut\" class=\"h-9 lg:h-10 w-auto\">\n    <\/a>\n    <nav class=\"hidden lg:flex items-center gap-10\" aria-label=\"Navegacion principal\">\n      <a href=\"\/\" class=\"nav-link text-sm tracking-[0.15em] uppercase text-white hover:text-brand transition-colors duration-300\">Inicio<\/a>\n      <a href=\"\/#programa\" class=\"nav-link text-sm tracking-[0.15em] uppercase text-white hover:text-brand transition-colors duration-300\">Programa<\/a>\n      <a href=\"\/precios\" class=\"nav-link text-sm tracking-[0.15em] uppercase text-white hover:text-brand transition-colors duration-300\">Precios<\/a>\n      <a href=\"\/#faq\" class=\"nav-link text-sm tracking-[0.15em] uppercase text-white hover:text-brand transition-colors duration-300\">FAQ<\/a>\n      <a href=\"\/#contacto\" class=\"nav-link text-sm tracking-[0.15em] uppercase text-white hover:text-brand transition-colors duration-300\">Contacto<\/a>\n    <\/nav>\n    <button type=\"button\" id=\"menuToggle\" class=\"lg:hidden text-white\" onclick=\"openMenu()\" aria-label=\"Abrir menu\">\n      <svg aria-hidden=\"true\" width=\"28\" height=\"28\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M4 6h16M4 12h16M4 18h16\"\/><\/svg>\n    <\/button>\n  <\/div>\n<\/header>\n\n<!-- Mobile menu -->\n<div id=\"mobileMenu\" class=\"fixed inset-0 z-[999] flex flex-col items-center justify-center gap-8 transition-opacity duration-500 opacity-0 pointer-events-none mobile-menu-bg\" role=\"dialog\" aria-modal=\"true\">\n  <button type=\"button\" onclick=\"closeMenu()\" class=\"absolute top-6 right-6 text-white\" aria-label=\"Cerrar menu\">\n    <svg aria-hidden=\"true\" width=\"28\" height=\"28\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" viewBox=\"0 0 24 24\"><path d=\"M6 6l12 12M18 6L6 18\"\/><\/svg>\n  <\/button>\n  <nav class=\"flex flex-col items-center gap-8\">\n    <a href=\"\/\" onclick=\"closeMenu()\" class=\"mobile-menu-link font-heading text-4xl tracking-wider text-white hover:text-brand transition-colors\">INICIO<\/a>\n    <a href=\"\/#programa\" onclick=\"closeMenu()\" class=\"mobile-menu-link font-heading text-4xl tracking-wider text-white hover:text-brand transition-colors\">PROGRAMA<\/a>\n    <a href=\"\/precios\" onclick=\"closeMenu()\" class=\"mobile-menu-link font-heading text-4xl tracking-wider text-white hover:text-brand transition-colors\">PRECIOS<\/a>\n    <a href=\"\/#faq\" onclick=\"closeMenu()\" class=\"mobile-menu-link font-heading text-4xl tracking-wider text-white hover:text-brand transition-colors\">FAQ<\/a>\n    <a href=\"\/#contacto\" onclick=\"closeMenu()\" class=\"mobile-menu-link font-heading text-4xl tracking-wider text-white hover:text-brand transition-colors\">CONTACTO<\/a>\n  <\/nav>\n<\/div>\n\n\n<!-- ========== MAIN CONTENT ========== -->\n<section class=\"min-h-screen flex\" style=\"background: #000000; padding-top: 80px;\">\n  <div class=\"flex flex-col lg:flex-row w-full min-h-[calc(100vh-80px)]\">\n\n      <!-- LEFT COLUMN: FORM (centered within 50%) -->\n      <div id=\"left-col\" class=\"w-full lg:w-1\/2 flex items-center justify-center px-6 lg:px-16 py-12 lg:py-0\">\n        <div class=\"w-full max-w-md\">\n        <!-- Title -->\n        <h1 id=\"title-registro\" class=\"font-heading text-4xl lg:text-5xl tracking-wide leading-tight mb-8 text-white\">REGISTRATE Y PRUEBA 2 SEMANAS GRATIS CON EL PLAN <span class=\"text-gradient\">PEON<\/span><\/h1>\n        <h1 id=\"title-inicio\" class=\"font-heading text-4xl lg:text-5xl tracking-wide leading-tight mb-8 text-white\" style=\"display:none;\">ACCEDE A <span class=\"text-gradient\">RAPIDCUT<\/span><\/h1>\n        <h1 id=\"title-recuperar\" class=\"font-heading text-4xl lg:text-5xl tracking-wide leading-tight mb-8 text-white\" style=\"display:none;\">RECUPERA TU <span class=\"text-gradient\">CONTRASE\u00d1A<\/span><\/h1>\n        <h1 id=\"title-nueva\" class=\"font-heading text-4xl lg:text-5xl tracking-wide leading-tight mb-8 text-white\" style=\"display:none;\">CREA TU NUEVA <span class=\"text-gradient\">CONTRASE\u00d1A<\/span><\/h1>\n\n        <!-- Toggle hint text -->\n        <div id=\"hint-registro\" class=\"flex items-center gap-2 mb-4 text-white\/50 text-sm transition-opacity duration-300\">\n          <span>\u00bfTienes una cuenta? Dale al boton de inicio<\/span>\n          <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"text-brand\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg>\n        <\/div>\n        <div id=\"hint-inicio\" class=\"flex items-center gap-2 mb-4 text-white\/50 text-sm transition-opacity duration-300\" style=\"display:none;\">\n          <svg width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" class=\"text-brand\"><path d=\"M19 12H5\"\/><path d=\"m12 19-7-7 7-7\"\/><\/svg>\n          <span>\u00bfNo tienes una cuenta? Registrate con este boton<\/span>\n        <\/div>\n\n        <!-- Mode toggle -->\n        <div id=\"toggle-container\" class=\"flex justify-start mb-8\">\n          <div class=\"tab-container\">\n            <button class=\"mode-tab active\" id=\"tab-registro\" onclick=\"switchMode('registro')\">Registro<\/button>\n            <button class=\"mode-tab\" id=\"tab-inicio\" onclick=\"switchMode('inicio')\">Inicio<\/button>\n          <\/div>\n        <\/div>\n\n        <!-- Form card -->\n        <div class=\"relative\" style=\"border: 1px solid rgba(33,172,25,0.25); border-radius: 16px; animation: neon-breathe 4s ease-in-out infinite; padding: 32px; background: rgba(255,255,255,0.02);\">\n\n          <!-- REGISTRO FORM -->\n          <form id=\"form-registro\" class=\"form-panel visible\" onsubmit=\"return handleRegistro(event)\" novalidate>\n            <div class=\"flex flex-col gap-5\">\n              <!-- Username -->\n              <div>\n                <label for=\"reg-username\" class=\"block text-xs tracking-[0.15em] uppercase text-white\/60 mb-2 font-medium\">Nombre de usuario<\/label>\n                <input type=\"text\" id=\"reg-username\" name=\"username\" class=\"form-input\" placeholder=\"Tu nombre de usuario\" required autocomplete=\"username\">\n                <p class=\"error-msg\" id=\"err-username\">El nombre de usuario es obligatorio<\/p>\n              <\/div>\n              <!-- Email -->\n              <div>\n                <label for=\"reg-email\" class=\"block text-xs tracking-[0.15em] uppercase text-white\/60 mb-2 font-medium\">Correo electronico<\/label>\n                <input type=\"email\" id=\"reg-email\" name=\"email\" class=\"form-input\" placeholder=\"tu@correo.com\" required autocomplete=\"email\">\n                <p class=\"error-msg\" id=\"err-email\">Introduce un correo valido<\/p>\n              <\/div>\n              <!-- Password -->\n              <div>\n                <label for=\"reg-password\" class=\"block text-xs tracking-[0.15em] uppercase text-white\/60 mb-2 font-medium\">Contrase\u00f1a<\/label>\n                <div class=\"relative\">\n                  <input type=\"password\" id=\"reg-password\" name=\"password\" class=\"form-input pr-12\" placeholder=\"Tu contrase\u00f1a\" required autocomplete=\"new-password\">\n                  <button type=\"button\" class=\"eye-btn closed\" onclick=\"toggleEye('reg-password', this)\" aria-label=\"Mostrar contrase\u00f1a\">\n                    <svg class=\"eye-icon eye-open\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display:none;\"><path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n                    <svg class=\"eye-icon eye-closed\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\"\/><path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\"\/><path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\"\/><path d=\"m2 2 20 20\"\/><\/svg>\n                  <\/button>\n                <\/div>\n                <p class=\"error-msg\" id=\"err-password\">La contrase\u00f1a es obligatoria<\/p>\n              <\/div>\n              <!-- Phone -->\n              <div>\n                <label for=\"reg-phone\" class=\"block text-xs tracking-[0.15em] uppercase text-white\/60 mb-2 font-medium\">Numero de telefono<\/label>\n                <input type=\"tel\" id=\"reg-phone\" name=\"phone\" class=\"form-input\" placeholder=\"+34 600 000 000\" autocomplete=\"tel\">\n              <\/div>\n              <!-- Terms checkbox -->\n              <div class=\"flex items-start gap-3\">\n                <input type=\"checkbox\" id=\"reg-terms\" class=\"custom-check mt-0.5\" required>\n                <label for=\"reg-terms\" class=\"text-sm text-white\/70 leading-snug cursor-pointer\">\n                  Acepto los <a href=\"\/terminos-y-condiciones\/\" target=\"_blank\" class=\"text-brand underline underline-offset-2 hover:text-white transition-colors\">Terminos y Condiciones<\/a>\n                <\/label>\n              <\/div>\n              <p class=\"error-msg\" id=\"err-terms\" style=\"margin-top:-8px;\">Debes aceptar los terminos para continuar<\/p>\n              <!-- Submit -->\n              <button type=\"submit\" class=\"submit-btn w-full mt-2 py-4 rounded-xl font-heading text-2xl tracking-wider uppercase text-black\">\n                <span class=\"relative z-10 flex items-center justify-center\">\n                  Registrarse\n                  <svg class=\"btn-arrow\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14\"\/><path d=\"m12 5 7 7-7 7\"\/><\/svg>\n                <\/span>\n                <span class=\"btn-particles\">\n                  <span style=\"left:20%;top:50%;--px:-30px;--py:-40px\"><\/span>\n                  <span style=\"left:40%;top:30%;--px:20px;--py:-50px\"><\/span>\n                  <span style=\"left:60%;top:60%;--px:40px;--py:30px\"><\/span>\n                  <span style=\"left:80%;top:40%;--px:30px;--py:-35px\"><\/span>\n                  <span style=\"left:50%;top:70%;--px:-20px;--py:40px\"><\/span>\n                  <span style=\"left:30%;top:20%;--px:-40px;--py:-20px\"><\/span>\n                <\/span>\n              <\/button>\n            <\/div>\n          <\/form>\n\n          <!-- INICIO FORM -->\n          <form id=\"form-inicio\" class=\"form-panel hidden\" action=\"\/wp-login.php\" method=\"post\" onsubmit=\"return handleInicio(event)\" novalidate>\n            <div class=\"flex flex-col gap-5\">\n              <!-- Username or Email -->\n              <div>\n                <label for=\"login-user\" class=\"block text-xs tracking-[0.15em] uppercase text-white\/60 mb-2 font-medium\">Usuario o correo electronico<\/label>\n                <input type=\"text\" id=\"login-user\" name=\"log\" class=\"form-input\" placeholder=\"Nombre de usuario o correo electronico\" required autocomplete=\"username\">\n                <p class=\"error-msg\" id=\"err-login-user\">Introduce tu usuario o correo<\/p>\n              <\/div>\n              <!-- Password -->\n              <div>\n                <label for=\"login-password\" class=\"block text-xs tracking-[0.15em] uppercase text-white\/60 mb-2 font-medium\">Contrase\u00f1a<\/label>\n                <div class=\"relative\">\n                  <input type=\"password\" id=\"login-password\" name=\"pwd\" class=\"form-input pr-12\" placeholder=\"Tu contrase\u00f1a\" required autocomplete=\"current-password\">\n                  <button type=\"button\" class=\"eye-btn closed\" onclick=\"toggleEye('login-password', this)\" aria-label=\"Mostrar contrase\u00f1a\">\n                    <svg class=\"eye-icon eye-open\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display:none;\"><path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n                    <svg class=\"eye-icon eye-closed\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\"\/><path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\"\/><path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\"\/><path d=\"m2 2 20 20\"\/><\/svg>\n                  <\/button>\n                <\/div>\n                <p class=\"error-msg\" id=\"err-login-password\">La contrase\u00f1a es obligatoria<\/p>\n              <\/div>\n              <!-- Remember me -->\n              <div class=\"flex items-center gap-3\">\n                <input type=\"checkbox\" id=\"login-remember\" name=\"rememberme\" class=\"custom-check\" value=\"forever\">\n                <label for=\"login-remember\" class=\"text-sm text-white\/70 cursor-pointer\">Recordar inicio<\/label>\n              <\/div>\n              <!-- Forgot password -->\n              <div class=\"text-right\">\n                <a href=\"#\" onclick=\"switchMode('recuperar');return false;\" class=\"text-xs text-white\/40 hover:text-brand transition-colors underline underline-offset-2\">\u00bfOlvidaste tu contrase\u00f1a?<\/a>\n              <\/div>\n              <!-- Submit -->\n              <button type=\"submit\" class=\"submit-btn w-full mt-2 py-4 rounded-xl font-heading text-2xl tracking-wider uppercase text-black\">\n                <span class=\"relative z-10 flex items-center justify-center\">\n                  Iniciar sesion\n                  <svg class=\"btn-arrow\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M15 3h4a2 2 0 0 1 2 2v14a2 2 0 0 1-2 2h-4\"\/><path d=\"m10 17 5-5-5-5\"\/><path d=\"M15 12H3\"\/><\/svg>\n                <\/span>\n                <span class=\"btn-particles\">\n                  <span style=\"left:20%;top:50%;--px:-30px;--py:-40px\"><\/span>\n                  <span style=\"left:40%;top:30%;--px:20px;--py:-50px\"><\/span>\n                  <span style=\"left:60%;top:60%;--px:40px;--py:30px\"><\/span>\n                  <span style=\"left:80%;top:40%;--px:30px;--py:-35px\"><\/span>\n                  <span style=\"left:50%;top:70%;--px:-20px;--py:40px\"><\/span>\n                  <span style=\"left:30%;top:20%;--px:-40px;--py:-20px\"><\/span>\n                <\/span>\n              <\/button>\n            <\/div>\n          <\/form>\n\n          <!-- RECUPERAR FORM -->\n          <form id=\"form-recuperar\" class=\"form-panel hidden\" onsubmit=\"return handleRecuperar(event)\" novalidate>\n            <div class=\"flex flex-col gap-5\">\n              <div>\n                <label for=\"recover-email\" class=\"block text-xs tracking-[0.15em] uppercase text-white\/60 mb-2 font-medium\">Correo electronico<\/label>\n                <input type=\"email\" id=\"recover-email\" name=\"email\" class=\"form-input\" placeholder=\"Escribe tu correo electronico\" required autocomplete=\"email\">\n                <p class=\"error-msg\" id=\"err-recover-email\">Introduce un correo valido<\/p>\n              <\/div>\n              <button type=\"submit\" class=\"submit-btn w-full mt-2 py-4 rounded-xl font-heading text-2xl tracking-wider uppercase text-black\">\n                <span class=\"relative z-10 flex items-center justify-center\">\n                  Enviar\n                  <svg class=\"btn-arrow\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 2 11 13\"\/><path d=\"m22 2-7 20-4-9-9-4z\"\/><\/svg>\n                <\/span>\n                <span class=\"btn-particles\">\n                  <span style=\"left:20%;top:50%;--px:-30px;--py:-40px\"><\/span>\n                  <span style=\"left:40%;top:30%;--px:20px;--py:-50px\"><\/span>\n                  <span style=\"left:60%;top:60%;--px:40px;--py:30px\"><\/span>\n                  <span style=\"left:80%;top:40%;--px:30px;--py:-35px\"><\/span>\n                <\/span>\n              <\/button>\n              <p id=\"recover-success\" class=\"text-sm text-brand text-center mt-2\" style=\"display:none;\">\n                <svg class=\"inline-block mr-1\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#21AC19\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"\/><path d=\"m9 11 3 3L22 4\"\/><\/svg>\n                Correo de cambio de contrase\u00f1a enviado a tu correo electronico\n              <\/p>\n              <div class=\"text-center mt-2\">\n                <a href=\"#\" onclick=\"switchMode('inicio');return false;\" class=\"text-xs text-white\/40 hover:text-brand transition-colors underline underline-offset-2\">Volver a iniciar sesion<\/a>\n              <\/div>\n            <\/div>\n          <\/form>\n\n          <!-- NUEVA CONTRASE\u00d1A FORM -->\n          <form id=\"form-nueva\" class=\"form-panel hidden\" onsubmit=\"return handleNueva(event)\" novalidate>\n            <div class=\"flex flex-col gap-5\">\n              <div>\n                <label for=\"new-password\" class=\"block text-xs tracking-[0.15em] uppercase text-white\/60 mb-2 font-medium\">Escribe tu nueva contrase\u00f1a<\/label>\n                <div class=\"relative\">\n                  <input type=\"password\" id=\"new-password\" name=\"new_password\" class=\"form-input pr-12\" placeholder=\"Nueva contrase\u00f1a\" required autocomplete=\"new-password\">\n                  <button type=\"button\" class=\"eye-btn closed\" onclick=\"toggleEye('new-password', this)\" aria-label=\"Mostrar contrase\u00f1a\">\n                    <svg class=\"eye-icon eye-open\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display:none;\"><path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n                    <svg class=\"eye-icon eye-closed\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\"\/><path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\"\/><path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\"\/><path d=\"m2 2 20 20\"\/><\/svg>\n                  <\/button>\n                <\/div>\n                <p class=\"error-msg\" id=\"err-new-password\">La contrase\u00f1a es obligatoria<\/p>\n              <\/div>\n              <div>\n                <label for=\"confirm-password\" class=\"block text-xs tracking-[0.15em] uppercase text-white\/60 mb-2 font-medium\">Vuelve a escribir tu contrase\u00f1a<\/label>\n                <div class=\"relative\">\n                  <input type=\"password\" id=\"confirm-password\" name=\"confirm_password\" class=\"form-input pr-12\" placeholder=\"Repite la contrase\u00f1a\" required autocomplete=\"new-password\">\n                  <button type=\"button\" class=\"eye-btn closed\" onclick=\"toggleEye('confirm-password', this)\" aria-label=\"Mostrar contrase\u00f1a\">\n                    <svg class=\"eye-icon eye-open\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" style=\"display:none;\"><path d=\"M2.062 12.348a1 1 0 0 1 0-.696 10.75 10.75 0 0 1 19.876 0 1 1 0 0 1 0 .696 10.75 10.75 0 0 1-19.876 0\"\/><circle cx=\"12\" cy=\"12\" r=\"3\"\/><\/svg>\n                    <svg class=\"eye-icon eye-closed\" width=\"20\" height=\"20\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M10.733 5.076a10.744 10.744 0 0 1 11.205 6.575 1 1 0 0 1 0 .696 10.747 10.747 0 0 1-1.444 2.49\"\/><path d=\"M14.084 14.158a3 3 0 0 1-4.242-4.242\"\/><path d=\"M17.479 17.499a10.75 10.75 0 0 1-15.417-5.151 1 1 0 0 1 0-.696 10.75 10.75 0 0 1 4.446-5.143\"\/><path d=\"m2 2 20 20\"\/><\/svg>\n                  <\/button>\n                <\/div>\n                <p class=\"error-msg\" id=\"err-confirm-password\">Las contrase\u00f1as no coinciden<\/p>\n              <\/div>\n              <button type=\"submit\" class=\"submit-btn w-full mt-2 py-4 rounded-xl font-heading text-2xl tracking-wider uppercase text-black\">\n                <span class=\"relative z-10 flex items-center justify-center\">\n                  Cambiar contrase\u00f1a\n                  <svg class=\"btn-arrow\" width=\"22\" height=\"22\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 22s8-4 8-10V5l-8-3-8 3v7c0 6 8 10 8 10z\"\/><\/svg>\n                <\/span>\n                <span class=\"btn-particles\">\n                  <span style=\"left:20%;top:50%;--px:-30px;--py:-40px\"><\/span>\n                  <span style=\"left:40%;top:30%;--px:20px;--py:-50px\"><\/span>\n                  <span style=\"left:60%;top:60%;--px:40px;--py:30px\"><\/span>\n                  <span style=\"left:80%;top:40%;--px:30px;--py:-35px\"><\/span>\n                <\/span>\n              <\/button>\n            <\/div>\n          <\/form>\n\n          <!-- Loading spinner (hidden by default) -->\n          <div id=\"form-loading\" class=\"absolute inset-0 flex items-center justify-center rounded-2xl\" style=\"background: rgba(0,0,0,0.85); display:none; z-index:10;\">\n            <div style=\"width:40px;height:40px;border:3px solid rgba(33,172,25,0.2);border-top-color:#21AC19;border-radius:50%;animation:spin 0.7s linear infinite;\"><\/div>\n          <\/div>\n          <style>@keyframes spin { to { transform: rotate(360deg); } }<\/style>\n\n          <!-- Success\/Error message -->\n          <div id=\"form-message\" class=\"absolute inset-0 flex flex-col items-center justify-center rounded-2xl text-center px-8\" style=\"background: rgba(0,0,0,0.92); display:none; z-index:10;\">\n            <div id=\"msg-icon\" class=\"mb-4\"><\/div>\n            <p id=\"msg-text\" class=\"text-lg font-medium\"><\/p>\n            <p id=\"msg-sub\" class=\"text-sm text-white\/50 mt-2\"><\/p>\n          <\/div>\n        <\/div>\n        <\/div>\n      <\/div>\n\n      <!-- RIGHT COLUMN: COMPOSITE IMAGE -->\n      <div id=\"right-col\" class=\"hidden lg:block w-1\/2 relative overflow-hidden\" style=\"min-height: calc(100vh - 80px);\">\n\n        <!-- === REGISTRO COMPOSITE === -->\n        <div id=\"composite-registro\" class=\"deco-img entering\" style=\"background:#000;\">\n          <!-- Main photo -->\n          <img decoding=\"async\" src=\"https:\/\/p90rapidcut.com\/wp-content\/uploads\/2025\/11\/3-1.png\"\n               alt=\"P90 RapidCut Entrenamiento\"\n               style=\"position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top center;\"\n               loading=\"eager\">\n          <!-- Dark gradient overlay for text readability -->\n          <div style=\"position:absolute;inset:0;background:linear-gradient(to top, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.4) 35%, rgba(0,0,0,0.1) 55%, rgba(0,0,0,0.3) 100%);\"><\/div>\n          <!-- Logo top-right -->\n          <div style=\"position:absolute;top:24px;right:24px;z-index:5;display:flex;align-items:center;gap:8px;\">\n            <img decoding=\"async\" src=\"https:\/\/p90rapidcut.com\/wp-content\/uploads\/2025\/10\/cropped-cropped-Diseno-sin-titulo.webp\"\n                 alt=\"P90 RapidCut\" style=\"height:48px;width:auto;\" loading=\"lazy\">\n          <\/div>\n          <!-- Center text -->\n          <div style=\"position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:5;padding:0 32px;text-align:center;\">\n            <h2 class=\"font-heading\" style=\"font-size:clamp(2.5rem,4vw,3.5rem);letter-spacing:0.05em;line-height:1.1;margin-bottom:16px;color:#fff !important;\">\n              CADA SEGUNDO<br><span class=\"text-gradient\">CUENTA<\/span>\n            <\/h2>\n            <p style=\"color:rgba(255,255,255,0.8);font-size:0.95rem;max-width:380px;line-height:1.6;font-style:italic;\">\n              Llevamos tu cuerpo a un nivel que ahora mismo ni imaginas. Cada sesion te hace mas agil, mas resistente, mas duro.\n            <\/p>\n          <\/div>\n          <!-- Testimonials banner at bottom -->\n          <div style=\"position:absolute;bottom:0;left:0;right:0;z-index:5;\">\n            <img decoding=\"async\" src=\"https:\/\/p90rapidcut.com\/wp-content\/uploads\/2025\/11\/Copia-de-Cada-segundo-cuenta-1600-x-253-px-e1763640651925.png\"\n                 alt=\"Testimonios\"\n                 style=\"width:100%;height:auto;display:block;opacity:0.9;\"\n                 loading=\"lazy\">\n          <\/div>\n        <\/div>\n\n        <!-- === INICIO COMPOSITE === -->\n        <div id=\"composite-inicio\" class=\"deco-img hidden\" style=\"background:#000;\">\n          <!-- Main photo -->\n          <img decoding=\"async\" src=\"https:\/\/p90rapidcut.com\/wp-content\/uploads\/2025\/11\/Cada-segundo-cuenta-1563-x-1563-px-1-e1764420867886.png\"\n               alt=\"Bienvenido de vuelta\"\n               style=\"position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:top center;\"\n               loading=\"lazy\">\n          <!-- Dark gradient overlay -->\n          <div style=\"position:absolute;inset:0;background:linear-gradient(to top, rgba(0,0,0,0.85) 0%, rgba(0,0,0,0.35) 35%, rgba(0,0,0,0.1) 55%, rgba(0,0,0,0.3) 100%);\"><\/div>\n          <!-- Logo top-right -->\n          <div style=\"position:absolute;top:24px;right:24px;z-index:5;display:flex;align-items:center;gap:8px;\">\n            <img decoding=\"async\" src=\"https:\/\/p90rapidcut.com\/wp-content\/uploads\/2025\/10\/cropped-cropped-Diseno-sin-titulo.webp\"\n                 alt=\"P90 RapidCut\" style=\"height:48px;width:auto;\" loading=\"lazy\">\n          <\/div>\n          <!-- Center text -->\n          <div style=\"position:absolute;inset:0;display:flex;flex-direction:column;align-items:center;justify-content:center;z-index:5;padding:0 32px;text-align:center;\">\n            <h2 class=\"font-heading\" style=\"font-size:clamp(2.5rem,4vw,3.5rem);letter-spacing:0.05em;line-height:1.1;margin-bottom:16px;color:#fff !important;\">\n              BIENVENIDO DE VUELTA<br>A TU <span class=\"text-gradient\">COMUNIDAD FITNESS ONLINE<\/span>\n            <\/h2>\n            <p style=\"color:rgba(255,255,255,0.8);font-size:0.95rem;max-width:380px;line-height:1.6;font-style:italic;\">\n              Juntos alcanzaremos nuestro maximo potencial sesion a sesion.\n            <\/p>\n          <\/div>\n        <\/div>\n\n      <\/div>\n\n  <\/div>\n<\/section>\n\n\n<!-- ========== FOOTER ========== -->\n<footer class=\"border-t border-white\/[0.05] py-14\" style=\"background: #000000;\">\n  <div class=\"max-w-7xl mx-auto px-6 lg:px-10\">\n    <div class=\"grid grid-cols-1 md:grid-cols-3 gap-12 items-start\">\n      <div>\n        <img decoding=\"async\" src=\"https:\/\/p90rapidcut.com\/wp-content\/uploads\/2025\/10\/cropped-LIFTED_MIND_sin_fondo-removebg-preview.png\" alt=\"P90 RapidCut\" class=\"h-12 w-auto mb-4\" loading=\"lazy\">\n        <p class=\"text-white text-sm leading-relaxed max-w-xs\">El protocolo de kettlebell que transforma cuerpo y mente en 90 d\u00edas. Sin gimnasio, sin excusas.<\/p>\n      <\/div>\n      <nav class=\"flex flex-col gap-3\">\n        <span class=\"text-xs tracking-[0.2em] uppercase text-white font-medium mb-2\">NAVEGACION<\/span>\n        <a href=\"\/\" class=\"text-white hover:text-brand text-sm transition-colors\">Inicio<\/a>\n        <a href=\"\/#programa\" class=\"text-white hover:text-brand text-sm transition-colors\">Programa<\/a>\n        <a href=\"\/precios\" class=\"text-white hover:text-brand text-sm transition-colors\">Precios<\/a>\n        <a href=\"\/#faq\" class=\"text-white hover:text-brand text-sm transition-colors\">FAQ<\/a>\n        <a href=\"\/#contacto\" class=\"text-white hover:text-brand text-sm transition-colors\">Contacto<\/a>\n      <\/nav>\n      <div class=\"flex flex-col items-start md:items-end gap-4\">\n        <img decoding=\"async\" src=\"https:\/\/p90rapidcut.com\/wp-content\/uploads\/2025\/09\/LIFTED-MIND-sin-fondo.webp\" alt=\"Lifted Mind\" class=\"h-8 w-auto\" loading=\"lazy\">\n        <a href=\"mailto:info@p90rapidcut.com\" class=\"text-white text-sm hover:text-brand transition-all duration-300 flex items-center gap-2\">\n          <svg aria-hidden=\"true\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"16\" rx=\"2\"\/><path d=\"m22 7-8.97 5.7a1.94 1.94 0 0 1-2.06 0L2 7\"\/><\/svg>\n          info@p90rapidcut.com\n        <\/a>\n        <a href=\"https:\/\/www.instagram.com\/p90rapidcut\" target=\"_blank\" rel=\"noopener\" class=\"text-white text-sm hover:text-brand transition-all duration-300 flex items-center gap-2\">\n          <svg aria-hidden=\"true\" width=\"16\" height=\"16\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\" viewBox=\"0 0 24 24\"><rect x=\"2\" y=\"2\" width=\"20\" height=\"20\" rx=\"5\"\/><path d=\"M16 11.37A4 4 0 1 1 12.63 8 4 4 0 0 1 16 11.37z\"\/><line x1=\"17.5\" y1=\"6.5\" x2=\"17.51\" y2=\"6.5\"\/><\/svg>\n          @p90rapidcut\n        <\/a>\n      <\/div>\n    <\/div>\n    <div class=\"mt-12 pt-6 border-t border-white\/[0.05] text-center\">\n      <p class=\"text-white\/25 text-xs\">&copy; 2026 P90 RapidCut. Todos los derechos reservados.<\/p>\n    <\/div>\n  <\/div>\n<\/footer>\n\n\n<script>\n\/* ===== Mode switching ===== *\/\nlet currentMode = 'registro';\n\nfunction switchMode(mode) {\n  if (mode === currentMode) return;\n\n  const allModes = ['registro', 'inicio', 'recuperar', 'nueva'];\n  const leftCol = document.getElementById('left-col');\n  const rightCol = document.getElementById('right-col');\n\n  \/\/ Toggle tabs (only show for registro\/inicio)\n  document.getElementById('tab-registro').classList.toggle('active', mode === 'registro');\n  document.getElementById('tab-inicio').classList.toggle('active', mode === 'inicio');\n  document.getElementById('toggle-container').style.display = (mode === 'nueva') ? 'none' : 'flex';\n\n  \/\/ Toggle titles\n  allModes.forEach(m => {\n    const t = document.getElementById('title-' + m);\n    if (t) t.style.display = m === mode ? 'block' : 'none';\n  });\n\n  \/\/ Toggle hints (only for registro\/inicio)\n  document.getElementById('hint-registro').style.display = mode === 'registro' ? 'flex' : 'none';\n  document.getElementById('hint-inicio').style.display = mode === 'inicio' ? 'flex' : 'none';\n\n  \/\/ Toggle forms with animation\n  const formOut = document.getElementById('form-' + currentMode);\n  const formIn = document.getElementById('form-' + mode);\n  formOut.classList.remove('visible');\n  formOut.classList.add('hidden');\n  setTimeout(() => {\n    formIn.classList.remove('hidden');\n    formIn.classList.add('visible');\n  }, 150);\n\n  \/\/ Full-width centered layout for \"nueva\" mode (no image)\n  if (mode === 'nueva') {\n    leftCol.classList.remove('lg:w-1\/2');\n    leftCol.classList.add('lg:w-full');\n    rightCol.style.display = 'none';\n  } else {\n    leftCol.classList.remove('lg:w-full');\n    leftCol.classList.add('lg:w-1\/2');\n    rightCol.style.display = '';\n  }\n\n  \/\/ Toggle images with animation (recuperar uses inicio image)\n  const imgMap = { registro: 'registro', inicio: 'inicio', recuperar: 'inicio', nueva: null };\n  const outKey = imgMap[currentMode];\n  const inKey = imgMap[mode];\n  if (outKey) {\n    const imgOut = document.getElementById('composite-' + outKey);\n    if (imgOut) { imgOut.classList.remove('entering'); imgOut.classList.add('exiting');\n      setTimeout(() => { imgOut.classList.add('hidden'); imgOut.classList.remove('exiting'); }, 400);\n    }\n  }\n  if (inKey && inKey !== outKey) {\n    const imgIn = document.getElementById('composite-' + inKey);\n    if (imgIn) { setTimeout(() => { imgIn.style.display = ''; imgIn.classList.remove('hidden'); imgIn.classList.add('entering'); }, outKey ? 400 : 0); }\n  } else if (inKey && inKey === outKey && mode !== 'nueva') {\n    const imgIn = document.getElementById('composite-' + inKey);\n    if (imgIn) { setTimeout(() => { imgIn.style.display = ''; imgIn.classList.remove('hidden','exiting'); imgIn.classList.add('entering'); }, 400); }\n  }\n\n  \/\/ Hide any messages\n  document.getElementById('form-message').style.display = 'none';\n  document.getElementById('form-loading').style.display = 'none';\n  document.getElementById('recover-success').style.display = 'none';\n\n  \/\/ Clear errors\n  document.querySelectorAll('.form-input.error').forEach(el => el.classList.remove('error'));\n  document.querySelectorAll('.error-msg.show').forEach(el => el.classList.remove('show'));\n\n  currentMode = mode;\n}\n\n\/* ===== Eye toggle ===== *\/\nfunction toggleEye(inputId, btn) {\n  const input = document.getElementById(inputId);\n  const isPassword = input.type === 'password';\n  input.type = isPassword ? 'text' : 'password';\n\n  const openSvg = btn.querySelector('.eye-open');\n  const closedSvg = btn.querySelector('.eye-closed');\n\n  \/\/ Remove previous animation classes\n  btn.classList.remove('animate-open', 'animate-close');\n\n  if (isPassword) {\n    \/\/ Showing password -> eye open, green\n    openSvg.style.display = 'block';\n    closedSvg.style.display = 'none';\n    btn.classList.remove('closed');\n    btn.classList.add('open', 'animate-open');\n  } else {\n    \/\/ Hiding password -> eye closed, red\n    openSvg.style.display = 'none';\n    closedSvg.style.display = 'block';\n    btn.classList.remove('open');\n    btn.classList.add('closed', 'animate-close');\n  }\n\n  \/\/ Clean up animation class after it finishes\n  setTimeout(() => { btn.classList.remove('animate-open', 'animate-close'); }, 550);\n}\n\n\/* ===== Registration handler ===== *\/\nfunction handleRegistro(e) {\n  e.preventDefault();\n  clearErrors();\n\n  const username = document.getElementById('reg-username').value.trim();\n  const email = document.getElementById('reg-email').value.trim();\n  const password = document.getElementById('reg-password').value;\n  const phone = document.getElementById('reg-phone').value.trim();\n  const terms = document.getElementById('reg-terms').checked;\n  let valid = true;\n\n  if (!username) { showError('reg-username', 'err-username'); valid = false; }\n  if (!email || !email.match(\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/)) { showError('reg-email', 'err-email'); valid = false; }\n  if (!password) { showError('reg-password', 'err-password'); valid = false; }\n  if (!terms) { document.getElementById('err-terms').classList.add('show'); valid = false; }\n\n  if (!valid) return false;\n\n  showLoading();\n\n  \/\/ Custom REST endpoint for registration (no admin auth needed)\n  const redirectTo = getRedirectUrl();\n  fetch('\/wp-json\/p90\/v1\/register', {\n    method: 'POST',\n    headers: { 'Content-Type': 'application\/json' },\n    body: JSON.stringify({\n      username: username,\n      email: email,\n      password: password,\n      phone: phone\n    })\n  }).then(r => r.json()).then(data => {\n    if (data.success) {\n      \/\/ Auto-login after registration\n      const formData = new FormData();\n      formData.append('log', username);\n      formData.append('pwd', password);\n      formData.append('redirect_to', redirectTo);\n      fetch('\/wp-login.php', { method: 'POST', body: formData, redirect: 'manual' })\n        .then(() => {\n          showMessage('success', '\u00a1Registro exitoso!', 'Redirigiendo...');\n          setTimeout(() => { window.location.href = redirectTo; }, 1200);\n        });\n    } else {\n      const msg = data.message || 'Error al registrarse. Intentalo de nuevo.';\n      showMessage('error', 'Error', msg.replace(\/<[^>]*>\/g, ''));\n    }\n  }).catch(() => {\n    showMessage('error', 'Error de conexion', 'Intentalo de nuevo mas tarde.');\n  });\n\n  return false;\n}\n\n\/* ===== Login handler ===== *\/\nfunction handleInicio(e) {\n  e.preventDefault();\n  clearErrors();\n\n  const user = document.getElementById('login-user').value.trim();\n  const password = document.getElementById('login-password').value;\n  const remember = document.getElementById('login-remember').checked;\n  let valid = true;\n\n  if (!user) { showError('login-user', 'err-login-user'); valid = false; }\n  if (!password) { showError('login-password', 'err-login-password'); valid = false; }\n\n  if (!valid) return false;\n\n  showLoading();\n\n  \/* Native form submit \u2014 WordPress sets auth cookies server-side,\n     browser handles Set-Cookie headers properly, and Safari\/macOS\n     credential manager can save\/autofill credentials via Touch ID *\/\n  const form = document.getElementById('form-inicio');\n  const redirectTo = getRedirectUrl();\n\n  \/* Set hidden fields for wp-login.php *\/\n  let h;\n  h = form.querySelector('input[name=\"redirect_to\"]');\n  if (!h) { h = document.createElement('input'); h.type = 'hidden'; h.name = 'redirect_to'; form.appendChild(h); }\n  h.value = redirectTo;\n\n  h = form.querySelector('input[name=\"wp-submit\"]');\n  if (!h) { h = document.createElement('input'); h.type = 'hidden'; h.name = 'wp-submit'; form.appendChild(h); }\n  h.value = 'Log In';\n\n  if (!remember) {\n    const rem = form.querySelector('input[name=\"rememberme\"]');\n    if (rem) rem.disabled = true;\n  }\n\n  \/* Submit natively \u2014 wp-login.php sets cookies and redirects to redirect_to *\/\n  form.submit();\n  return false;\n}\n\n\/* ===== Recover password handler ===== *\/\nfunction handleRecuperar(e) {\n  e.preventDefault();\n  clearErrors();\n\n  const email = document.getElementById('recover-email').value.trim();\n  if (!email || !email.match(\/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/)) {\n    showError('recover-email', 'err-recover-email');\n    return false;\n  }\n\n  showLoading();\n\n  fetch('\/wp-login.php?action=lostpassword', {\n    method: 'POST',\n    headers: { 'Content-Type': 'application\/x-www-form-urlencoded' },\n    body: 'user_login=' + encodeURIComponent(email) + '&redirect_to=&wp-submit=Get+New+Password',\n    redirect: 'manual'\n  }).then(() => {\n    document.getElementById('form-loading').style.display = 'none';\n    document.getElementById('recover-success').style.display = 'block';\n  }).catch(() => {\n    document.getElementById('form-loading').style.display = 'none';\n    document.getElementById('recover-success').style.display = 'block';\n  });\n\n  return false;\n}\n\n\/* ===== New password handler ===== *\/\nfunction handleNueva(e) {\n  e.preventDefault();\n  clearErrors();\n\n  const pass1 = document.getElementById('new-password').value;\n  const pass2 = document.getElementById('confirm-password').value;\n  let valid = true;\n\n  if (!pass1) { showError('new-password', 'err-new-password'); valid = false; }\n  if (pass1 !== pass2 || !pass2) { showError('confirm-password', 'err-confirm-password'); valid = false; }\n\n  if (!valid) return false;\n\n  showLoading();\n\n  \/\/ Get reset key and login from URL params\n  const params = new URLSearchParams(window.location.search);\n  const key = params.get('key') || '';\n  const login = params.get('login') || '';\n\n  if (!key || !login) {\n    showMessage('error', 'Enlace incompleto', 'El enlace de restablecimiento no es valido. Solicita uno nuevo desde \"\u00bfOlvidaste tu contrase\u00f1a?\".');\n    return false;\n  }\n\n  fetch('\/wp-json\/p90\/v1\/reset-password', {\n    method: 'POST',\n    headers: { 'Content-Type': 'application\/json' },\n    credentials: 'include',\n    body: JSON.stringify({ key: key, login: login, pass1: pass1, pass2: pass2 })\n  }).then(r => {\n    if (!r.ok) {\n      return r.json().then(err => {\n        const msg = err.message || (err.data && err.data.message) || 'El enlace ha expirado o no es valido. Solicita uno nuevo.';\n        showMessage('error', 'Error', msg);\n      });\n    }\n    return r.json().then(data => {\n      showMessage('success', '\u00a1Contrase\u00f1a cambiada!', 'Ahora puedes iniciar sesion con tu nueva contrase\u00f1a.');\n      setTimeout(() => { switchMode('inicio'); }, 3000);\n    });\n  }).catch(() => {\n    showMessage('error', 'Error de conexion', 'Intentalo de nuevo mas tarde.');\n  });\n\n  return false;\n}\n\n\/* ===== Helpers ===== *\/\nfunction getRedirectUrl() {\n  const params = new URLSearchParams(window.location.search);\n  return params.get('redirect_to') || '\/entrenos\/';\n}\n\nfunction showError(inputId, msgId) {\n  document.getElementById(inputId).classList.add('error');\n  document.getElementById(msgId).classList.add('show');\n}\n\nfunction clearErrors() {\n  document.querySelectorAll('.form-input.error').forEach(el => el.classList.remove('error'));\n  document.querySelectorAll('.error-msg.show').forEach(el => el.classList.remove('show'));\n}\n\nfunction showLoading() {\n  document.getElementById('form-loading').style.display = 'flex';\n}\n\nfunction showMessage(type, title, sub) {\n  document.getElementById('form-loading').style.display = 'none';\n  const msgEl = document.getElementById('form-message');\n  const iconEl = document.getElementById('msg-icon');\n  document.getElementById('msg-text').textContent = title;\n  document.getElementById('msg-sub').textContent = sub;\n\n  if (type === 'success') {\n    iconEl.innerHTML = '<svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#21AC19\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M22 11.08V12a10 10 0 1 1-5.93-9.14\"\/><path d=\"m9 11 3 3L22 4\"\/><\/svg>';\n  } else {\n    iconEl.innerHTML = '<svg width=\"48\" height=\"48\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"#ef4444\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"10\"\/><line x1=\"15\" y1=\"9\" x2=\"9\" y2=\"15\"\/><line x1=\"9\" y1=\"9\" x2=\"15\" y2=\"15\"\/><\/svg>';\n    setTimeout(() => { msgEl.style.display = 'none'; }, 4000);\n  }\n  msgEl.style.display = 'flex';\n}\n\n\/* ===== Mobile menu ===== *\/\nfunction openMenu() {\n  const m = document.getElementById('mobileMenu');\n  m.classList.remove('pointer-events-none', 'opacity-0');\n  m.classList.add('opacity-100');\n  document.body.style.overflow = 'hidden';\n  m.querySelectorAll('.mobile-menu-link').forEach((l, i) => {\n    setTimeout(() => l.classList.add('visible'), 80 * i);\n  });\n}\nfunction closeMenu() {\n  const m = document.getElementById('mobileMenu');\n  m.querySelectorAll('.mobile-menu-link').forEach(l => l.classList.remove('visible'));\n  setTimeout(() => {\n    m.classList.add('pointer-events-none', 'opacity-0');\n    m.classList.remove('opacity-100');\n    document.body.style.overflow = '';\n  }, 300);\n}\n\n\/* ===== Auto-switch based on URL params ===== *\/\n(function() {\n  const params = new URLSearchParams(window.location.search);\n  \/\/ Password reset link: \/registro\/?action=rp&key=XXX&login=XXX\n  if (params.get('action') === 'rp' && params.get('key') && params.get('login')) {\n    switchMode('nueva');\n  } else if (params.get('mode') === 'login') {\n    switchMode('inicio');\n  }\n})();\n<\/script>\n\n","protected":false},"excerpt":{"rendered":"<p>Registrate en P90 RapidCut y empieza tu transformacion. Crea tu cuenta para acceder a entrenamientos con kettlebells.<\/p>","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"_surecart_dashboard_logo_width":"180px","_surecart_dashboard_show_logo":true,"_surecart_dashboard_navigation_orders":true,"_surecart_dashboard_navigation_invoices":true,"_surecart_dashboard_navigation_subscriptions":true,"_surecart_dashboard_navigation_downloads":true,"_surecart_dashboard_navigation_billing":true,"_surecart_dashboard_navigation_account":true,"_kad_post_transparent":"","_kad_post_title":"","_kad_post_layout":"","_kad_post_sidebar_id":"","_kad_post_content_style":"","_kad_post_vertical_padding":"","_kad_post_feature":"","_kad_post_feature_position":"","_kad_post_header":false,"_kad_post_footer":false,"_kad_post_classname":"","footnotes":""},"class_list":["post-6480","page","type-page","status-publish","hentry"],"acf":[],"_links":{"self":[{"href":"https:\/\/p90rapidcut.com\/en\/wp-json\/wp\/v2\/pages\/6480","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/p90rapidcut.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/p90rapidcut.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/p90rapidcut.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/p90rapidcut.com\/en\/wp-json\/wp\/v2\/comments?post=6480"}],"version-history":[{"count":26,"href":"https:\/\/p90rapidcut.com\/en\/wp-json\/wp\/v2\/pages\/6480\/revisions"}],"predecessor-version":[{"id":7208,"href":"https:\/\/p90rapidcut.com\/en\/wp-json\/wp\/v2\/pages\/6480\/revisions\/7208"}],"wp:attachment":[{"href":"https:\/\/p90rapidcut.com\/en\/wp-json\/wp\/v2\/media?parent=6480"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}