{"id":4221,"date":"2026-07-16T17:16:19","date_gmt":"2026-07-16T17:16:19","guid":{"rendered":"https:\/\/jpdirector.net\/?page_id=4221"},"modified":"2026-09-10T21:34:52","modified_gmt":"2026-09-10T21:34:52","slug":"home-2","status":"publish","type":"page","link":"https:\/\/jpdirector.net\/en\/","title":{"rendered":"Home"},"content":{"rendered":"\n<div class=\"wp-block-greenshift-blocks-container alignfull gspb_container gspb_container-gsbp-f669173\" id=\"gspb_container-id-gsbp-f669173\">\n<meta charset=\"utf-8\">\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1, viewport-fit=cover\">\n<title>Especialista en Ads para Empresas en Estados Unidos | JP Director<\/title>\n<meta name=\"description\" content=\"Trabaja con un especialista en Ads que gestiona tus campa\u00f1as en Google, Meta y TikTok para generar m\u00e1s leads y mejorar tu retorno publicitario en Estados Unidos.\">\n<link rel=\"canonical\" href=\"https:\/\/jpdirector.net\/\">\n<meta name=\"robots\" content=\"index, follow, max-image-preview:large\">\n<meta name=\"theme-color\" content=\"#00041C\">\n\n<meta property=\"og:type\" content=\"website\">\n<meta property=\"og:locale\" content=\"es_ES\">\n<meta property=\"og:site_name\" content=\"JP Director\">\n<meta property=\"og:title\" content=\"Especialista en Ads para Empresas en Estados Unidos | JP Director\">\n<meta property=\"og:description\" content=\"Estrategia y educaci\u00f3n en publicidad digital. Campa\u00f1as en Google, Meta y TikTok construidas como sistemas de crecimiento, no como esfuerzos aislados.\">\n<meta property=\"og:url\" content=\"https:\/\/jpdirector.net\/\">\n<meta property=\"og:image\" content=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2025\/11\/satellite_vyiytt.png\">\n<meta name=\"twitter:card\" content=\"summary_large_image\">\n\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin=\"\">\n<link rel=\"stylesheet\" href=\"https:\/\/fonts.googleapis.com\/css2?family=IBM+Plex+Mono:wght@400&amp;family=Poppins:wght@400;500;600&amp;display=swap\">\n<style>\n\/* styles.css embebido \u2014 versi\u00f3n de un solo archivo para previsualizaci\u00f3n *\/\n\/* ============================================================================\n   JP DIRECTOR \u2014 Homepage\n   Arquitectura: Variables \/ Reset \/ Blindaje \/ Base \/ Typography \/ Layout \/\n                 Components \/ Utilities \/ Animations \/ Responsive\n   Solo HTML5 sem\u00e1ntico y CSS nativo moderno. Sin librer\u00edas. Sin JavaScript.\n   ============================================================================ *\/\n\n\n\/* ============================================================================\n   1. VARIABLES\n   ============================================================================ *\/\n\n:root {\n\n  \/* --- Paleta de marca (\u00fanica fuente de color) --- *\/\n  --c-ink:    #00041C;\n  --c-navy:   #040D36;\n  --c-cyan:   #15E0FB;\n  --c-white:  #FFFEFE;\n\n  \/* --- Derivados: solo opacidad, mezcla y gradiente --- *\/\n  --c-text:      var(--c-white);\n  --c-dim:       color-mix(in srgb, var(--c-white) 66%, transparent);\n  --c-dimmer:    color-mix(in srgb, var(--c-white) 44%, transparent);\n  --c-faint:     color-mix(in srgb, var(--c-white) 22%, transparent);\n\n  --c-line:      color-mix(in srgb, var(--c-cyan) 16%, transparent);\n  --c-line-hi:   color-mix(in srgb, var(--c-cyan) 38%, transparent);\n  --c-line-soft: color-mix(in srgb, var(--c-white) 9%,  transparent);\n  --c-cyan-dim:  color-mix(in srgb, var(--c-cyan) 52%, transparent);\n  \/* \u00danico color fuera de la paleta de marca: las estrellas de Google. *\/\n  --c-gold:      #F5B942;\n\n  --c-panel:     color-mix(in srgb, var(--c-cyan) 4%,  var(--c-navy));\n  --c-panel-hi:  color-mix(in srgb, var(--c-cyan) 9%,  var(--c-navy));\n  --c-glow:      color-mix(in srgb, var(--c-cyan) 26%, transparent);\n  --c-glow-soft: color-mix(in srgb, var(--c-cyan) 10%, transparent);\n\n  --c-on-light:      var(--c-navy);\n  --c-on-light-dim:  color-mix(in srgb, var(--c-navy) 66%, var(--c-white));\n  --c-on-light-line: color-mix(in srgb, var(--c-navy) 14%, var(--c-white));\n\n  \/* --- Tipograf\u00eda --- *\/\n  --f-sans: \"Poppins\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\n  --f-mono: \"IBM Plex Mono\", ui-monospace, SFMono-Regular, Menlo, monospace;\n\n  --t-xs:   0.6875rem;\n  --t-sm:   clamp(0.8125rem, 0.79rem + 0.12vw, 0.9rem);\n  --t-base: clamp(1rem, 0.96rem + 0.2vw, 1.125rem);\n  --t-md:   clamp(1.0625rem, 1rem + 0.3vw, 1.25rem);\n  --t-lg:   clamp(1.25rem, 1.12rem + 0.55vw, 1.6rem);\n  --t-xl:   clamp(1.5rem, 1.24rem + 1.1vw, 2.25rem);\n  --t-2xl:  clamp(2rem, 1.5rem + 2.2vw, 3.4rem);\n  --t-3xl:  clamp(2.5rem, 1.6rem + 4vw, 5rem);\n\n  --lh-tight: 1.04;\n  --lh-head:  1.14;\n  --lh-body:  1.65;\n\n  \/* --- Espacio y layout --- *\/\n  --s-1: 0.25rem;\n  --s-2: 0.5rem;\n  --s-3: 0.75rem;\n  --s-4: 1rem;\n  --s-5: 1.5rem;\n  --s-6: 2rem;\n  --s-7: 2.5rem;\n  --s-8: 3rem;\n  --s-9: 4rem;\n  --s-10: 5rem;\n\n  --maxw: 1240px;\n  --gutter: clamp(1.25rem, 0.7rem + 2.4vw, 3rem);\n  --sec-y: clamp(4.5rem, 3rem + 6vw, 9rem);\n  \/* Alto de la cabecera de WordPress. Ajustar si el tema usa otra medida. *\/\n  --hdr-h: 76px;\n\n  --r-sm: 4px;\n  --r-md: 10px;\n  --r-lg: 20px;\n  --r-full: 999px;\n\n  \/* --- Movimiento --- *\/\n  --e-out: cubic-bezier(0.16, 1, 0.3, 1);\n  --e-in-out: cubic-bezier(0.65, 0, 0.35, 1);\n  --d-fast: 0.22s;\n  --d-mid: 0.45s;\n  --d-slow: 0.8s;\n}\n\n\n\/* ============================================================================\n   2. RESET\n   ============================================================================ *\/\n\n*, *::before, *::after { box-sizing: border-box; }\n\n* { margin: 0; padding: 0; }\n\nhtml {\n  -webkit-text-size-adjust: 100%;\n  scroll-behavior: smooth;\n  scroll-padding-top: calc(var(--hdr-h) + 1rem);\n  overflow-x: clip;\n}\n\nbody {\n  min-height: 100vh;\n  background: var(--c-ink);\n  color: var(--c-text);\n  font-family: var(--f-sans);\n  font-size: var(--t-base);\n  line-height: var(--lh-body);\n  font-weight: 400;\n  -webkit-font-smoothing: antialiased;\n  \/* Sin text-rendering: optimizeLegibility. Fuerza el procesado completo de\n     ligaduras y kerning en todo el documento y puede retrasar el primer\n     pintado del texto; Poppins ya trae kerning por defecto. *\/\n  overflow-x: clip;\n}\n\nimg, video, svg { display: block; max-width: 100%; height: auto; }\n\nul, ol { list-style: none; }\n\na { color: inherit; text-decoration: none; }\n\nbutton, input, label { font: inherit; color: inherit; }\n\nh1, h2, h3, h4 { font-weight: 600; line-height: var(--lh-head); text-wrap: balance; }\n\np { text-wrap: pretty; }\n\nblockquote, cite { font-style: normal; }\n\n:focus-visible {\n  outline: 2px solid var(--c-cyan);\n  outline-offset: 3px;\n  border-radius: var(--r-sm);\n}\n\n\n\/* ============================================================================\n   2.5 BLINDAJE FRENTE AL TEMA DE WORDPRESS\n   ----------------------------------------------------------------------------\n   Por qu\u00e9 existe este bloque:\n\n   El reset de arriba usa el selector universal, cuya especificidad es 0-0-0.\n   Cualquier regla del tema lo gana, incluso las m\u00e1s triviales:\n\n       p  { margin-bottom: 1.6em; }        \u2192  0-0-1   gana\n       ul { padding-left: 40px; }          \u2192  0-0-1   gana\n       .entry-content p { ... }            \u2192  0-1-1   gana\n\n   Aislado, este archivo se ve correcto. Dentro de WordPress, el tema reinyecta\n   sus m\u00e1rgenes y sangr\u00edas de lista y descuadra el carrusel de m\u00e9tricas:\n\n     \u00b7 la <ul class=\"tel__deck\"> recupera ~40px de padding-inline-start, y como\n       su contenido va centrado, todo se corre ~20px a la derecha;\n     \u00b7 <p class=\"tel__num\"> recupera margin-bottom: 1.6em, que sobre un\n       font-size de 44px son ~70px de hueco entre la cifra y su etiqueta;\n     \u00b7 la propia <ul> recupera margin-bottom, que separa el mazo de los\n       controles.\n\n   Soluci\u00f3n: repetir esas declaraciones con prioridad definitiva. Se marcan\n   como !important \u00fanicamente propiedades que esta hoja NO usa en esos\n   elementos, as\u00ed que no compiten contra ninguna regla propia ni bloquean\n   nada de lo que viene m\u00e1s abajo. Si el tema deja de interferir, este bloque\n   se puede borrar entero sin que cambie el resultado.\n   ============================================================================ *\/\n\n\/* --- A. Listas: sin vi\u00f1eta y sin sangr\u00eda heredada --- *\/\n.tel__deck,\n.tel__dots,\n.ticker__list,\n.sys__grid,\n.svcs__row,\n.conf__list,\n.blog__list,\n.focus__list,\n.test__stars {\n  list-style: none !important;\n  padding-inline-start: 0 !important;\n}\n\n\/* --- B. M\u00e1rgenes que el tema a\u00f1ade y que aqu\u00ed nunca se usan --- *\/\n.tel__deck,\n.tel__slide,\n.tel__num,\n.tel__label,\n.tel__dots,\n.tel__dots i,\n.ticker__list,\n.ticker__list li,\n.blog__list,\n.blog__item,\n.conf__list,\n.conf__list li,\n.sys__cell,\n.sys__name,\n.svc__text,\n.svc__title {\n  margin: 0 !important;\n}\n\n\/* --- C. Titulares y p\u00e1rrafos: se anula solo el margen inferior, porque el\n       superior s\u00ed lo define esta hoja en varios de ellos --- *\/\n.hero__title,\n.hero__lead,\n.sys__title,\n.sys__lead,\n.sys__status,\n.focus__title,\n.focus__lead,\n.sec__title,\n.conf__title,\n.test__title,\n.blog__title,\n.svc__title,\n.sys__name,\n.end__title,\n.end__note,\n.vsl__cap {\n  margin-block-end: 0 !important;\n}\n\n\n\/* ============================================================================\n   3. BASE\n   ============================================================================ *\/\n\n.wrap {\n  width: 100%;\n  max-width: var(--maxw);\n  margin-inline: auto;\n  padding-inline: var(--gutter);\n}\n\n\n.vh {\n  position: absolute;\n  width: 1px; height: 1px;\n  overflow: hidden;\n  clip-path: inset(50%);\n  white-space: nowrap;\n}\n\n\n\/* ============================================================================\n   4. TYPOGRAPHY\n   ============================================================================ *\/\n\n.mono {\n  font-family: var(--f-mono);\n  font-size: var(--t-xs);\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  font-weight: 400;\n}\n\n.eyebrow {\n  font-family: var(--f-mono);\n  font-size: var(--t-xs);\n  letter-spacing: 0.16em;\n  text-transform: uppercase;\n  color: var(--c-cyan);\n  margin-bottom: var(--s-5);\n}\n.eyebrow--dark { color: var(--c-navy); }\n\nem {\n  font-style: normal;\n  color: var(--c-cyan);\n}\n\n\/* --- Palabra con aurora ---------------------------------------------------\n   El truco: la palabra va en blanco y encima se apilan manchas de color con\n   mix-blend-mode: darken. Darken toma el canal m\u00e1s oscuro de los dos, as\u00ed que\n   sobre el texto blanco gana la mancha y sobre el fondo profundo gana el fondo.\n   Resultado: el color solo vive dentro de las letras. Sin isolation en la\n   palabra, porque la mezcla necesita ver el fondo real del hero.\n   -------------------------------------------------------------------------- *\/\n.aurora-word {\n  position: relative;\n  display: inline-block;\n  color: var(--c-white);\n  vertical-align: baseline;\n  \/* La frase con aurora no se parte: el subrayado y la capa de mezcla asumen\n     una sola l\u00ednea. Si se envolviera, el subrayado quedar\u00eda a media palabra. *\/\n  white-space: nowrap;\n  \/* El relleno abre sitio bajo la l\u00ednea base: ah\u00ed caen el descendente de la g\n     y el subrayado, y adem\u00e1s hace que la caja de la aurora los cubra.\n     Los m\u00e1rgenes negativos devuelven la altura original a la l\u00ednea. *\/\n  padding-block: 0.06em 0.24em;\n  margin-block: -0.06em -0.24em;\n}\n\n\/* Subrayado: ra\u00edl tenue con un pulso que lo recorre, como un barrido de radar.\n   Va sobre la aurora para que la mezcla no lo apague, y se mueve con\n   background-position en vez de con un elemento que haya que recortar. *\/\n.aurora-word::after {\n  content: \"\";\n  position: absolute;\n  left: 0;\n  right: 0;\n  \/* Anclado a la l\u00ednea base, no al pie de la caja: el h1 va a interlineado 1.04\n     y no hay hueco libre entre l\u00edneas. Medido sobre Poppins. *\/\n  top: 0.99em;\n  z-index: 3;\n  height: 0.055em;\n  border-radius: 999px;\n  background:\n    linear-gradient(90deg, transparent, var(--c-cyan), transparent) no-repeat,\n    linear-gradient(color-mix(in srgb, var(--c-cyan) 26%, transparent) 0 100%) no-repeat;\n  background-size: 34% 100%, 100% 100%;\n  animation: underline-scan 3.6s var(--e-in-out) infinite;\n}\n\n\/* El recorte vive aqu\u00ed, no en la palabra: overflow sobre un inline-block\n   mueve su l\u00ednea base y descuadraba el h1. *\/\n.aurora {\n  position: absolute;\n  inset: 0;\n  z-index: 2;\n  overflow: hidden;\n  mix-blend-mode: darken;\n  pointer-events: none;\n}\n\n.aurora__item {\n  position: absolute;\n  top: -55%;\n  left: 0;\n  width: 13rem;\n  height: 13rem;\n  border-radius: 37% 29% 27% 27% \/ 28% 25% 41% 37%;\n  filter: blur(1.1rem);\n  mix-blend-mode: overlay;\n  will-change: transform;\n}\n\n\/* Solo azules: el cian de marca mezclado contra blanco y contra los dos azules *\/\n.aurora__item:nth-of-type(1) {\n  background-color: var(--c-cyan);\n  animation: aurora-border 7s var(--e-in-out) infinite,\n             aurora-1 11s var(--e-in-out) infinite alternate;\n}\n.aurora__item:nth-of-type(2) {\n  background-color: color-mix(in srgb, var(--c-cyan) 72%, var(--c-white));\n  animation: aurora-border 7s var(--e-in-out) infinite,\n             aurora-2 14s var(--e-in-out) infinite alternate;\n}\n.aurora__item:nth-of-type(3) {\n  background-color: color-mix(in srgb, var(--c-cyan) 62%, var(--c-navy));\n  animation: aurora-border 7s var(--e-in-out) infinite,\n             aurora-3 9s var(--e-in-out) infinite alternate;\n}\n.aurora__item:nth-of-type(4) {\n  background-color: color-mix(in srgb, var(--c-cyan) 88%, var(--c-navy));\n  animation: aurora-border 7s var(--e-in-out) infinite,\n             aurora-4 17s var(--e-in-out) infinite alternate;\n}\n\n\/* Tres palabras de la p\u00e1gina llevan aurora. Sin desfase arrancar\u00edan las tres\n   en el mismo fotograma y, al recorrer la p\u00e1gina, se notar\u00eda el patr\u00f3n\n   repetido. Los retardos negativos las meten en puntos distintos del ciclo. *\/\n.aurora--b .aurora__item { animation-delay: -3s, -5s; }\n.aurora--c .aurora__item { animation-delay: -6s, -11s; }\n\n.link {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.5em;\n  font-family: var(--f-mono);\n  font-size: var(--t-xs);\n  letter-spacing: 0.1em;\n  text-transform: uppercase;\n  color: var(--c-cyan);\n  padding-block: 0.4em;\n  border-bottom: 1px solid var(--c-line-hi);\n  transition: border-color var(--d-fast) var(--e-out), gap var(--d-fast) var(--e-out);\n}\n.link::after {\n  content: \"\u2192\";\n  transition: transform var(--d-fast) var(--e-out);\n}\n.link:hover, .link:focus-visible { border-bottom-color: var(--c-cyan); gap: 0.9em; }\n.link:hover::after { transform: translateX(2px); }\n\n\n\/* ============================================================================\n   5. LAYOUT \u2014 secciones y fondos\n   ============================================================================ *\/\n\n.hero  { background: var(--c-ink); }\n.tel   { background: var(--c-ink);  padding-block: clamp(3rem, 2rem + 3vw, 5.5rem); }\n\/* isolation en .sys y .focus: ambas alojan una palabra con aurora, y la mezcla\n   darken debe resolverse contra el fondo de la propia secci\u00f3n, igual que en el\n   hero. Sin aislar tambi\u00e9n funcionar\u00eda, pero quedar\u00eda dependiendo del orden de\n   pintado del documento entero. *\/\n.sys   { background: var(--c-navy); padding-block: var(--sec-y); border-block: 1px solid var(--c-line-soft); overflow-x: clip; isolation: isolate; }\n.focus { background: var(--c-ink);  padding-block: var(--sec-y); isolation: isolate; }\n.svcs  { background: var(--c-navy); padding-block: var(--sec-y); border-block: 1px solid var(--c-line-soft);\n         position: relative; overflow-x: clip; view-timeline: --svcs block; }\n.conf  { background: var(--c-white); color: var(--c-on-light); padding-block: var(--sec-y); }\n.test  { background: var(--c-navy); padding-block: var(--sec-y); }\n.blog  { background: var(--c-ink);  padding-block: var(--sec-y); border-top: 1px solid var(--c-line-soft); }\n.end   { background: var(--c-navy); padding-block: var(--sec-y); position: relative; overflow: hidden; }\n\n.sec__head { max-width: 62ch; margin-bottom: clamp(2.5rem, 1.5rem + 3vw, 4.5rem); }\n.sec__title { font-size: var(--t-2xl); letter-spacing: -0.02em; }\n\/* Cabecera de dos bloques: t\u00edtulo a la izquierda, enlace o apoyo a la derecha *\/\n.sec__head--split {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: var(--s-5);\n  max-width: none;\n  align-items: end;\n}\n\n\/* Columnas de texto dentro de grids en fr: neutraliza el min-width:auto\n   impl\u00edcito para que las palabras largas nunca desborden la pista *\/\n.hero__copy,\n.focus__copy,\n.conf__copy { min-width: 0; }\n\n\n\/* ============================================================================\n   6. COMPONENTS\n   ============================================================================ *\/\n\n\/* ---------- 6.1 Botones ---------- *\/\n\n.btn {\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  gap: 0.6em;\n  padding: 0.95em 1.9em;\n  background: var(--c-cyan);\n  color: var(--c-ink);\n  font-weight: 600;\n  font-size: var(--t-sm);\n  letter-spacing: 0.01em;\n  border-radius: var(--r-full);\n  border: 1px solid var(--c-cyan);\n  position: relative;\n  overflow: hidden;\n  isolation: isolate;\n  transition: transform var(--d-fast) var(--e-out), box-shadow var(--d-mid) var(--e-out);\n  \/* Rebote lento y sutil que llama la atenci\u00f3n hacia la acci\u00f3n *\/\n  animation: btn-bounce 2.4s var(--e-in-out) infinite;\n}\n.btn::before {\n  content: \"\";\n  position: absolute;\n  inset: 0;\n  z-index: -1;\n  background: var(--c-white);\n  transform: translateY(101%);\n  transition: transform var(--d-mid) var(--e-out);\n}\n.btn:hover, .btn:focus-visible {\n  transform: translateY(-2px);\n  box-shadow: 0 10px 34px var(--c-glow);\n  animation-play-state: paused;\n}\n.btn:hover::before, .btn:focus-visible::before { transform: translateY(0); }\n.btn:active { transform: translateY(0); }\n\n\/* --- Latido de color en los CTA s\u00f3lidos (\"Agenda...\") ---------------------\n   Va montado sobre el mismo comp\u00e1s de 2.4s que el rebote, as\u00ed el aclarado\n   coincide con el punto m\u00e1s alto del salto en vez de ir por libre.\n   Se excluyen las variantes fantasma y oscura: ambas definen su propio fondo,\n   y una animaci\u00f3n de background-color las pisar\u00eda (las animaciones ganan a\n   las declaraciones normales, sea cual sea la especificidad).\n   -------------------------------------------------------------------------- *\/\n.btn:not(.btn--ghost):not(.btn--dark) {\n  animation: btn-bounce 2.4s var(--e-in-out) infinite,\n             btn-tint   2.4s var(--e-in-out) infinite;\n}\n\n\/* En hover se corta la animaci\u00f3n entera en vez de pausarla: si solo se pausara,\n   el fotograma congelado seguir\u00eda imponiendo su color de borde por encima del\n   estado hover. Al quitarla, el translateY(-2px) y el glow del hover mandan. *\/\n.btn:not(.btn--ghost):not(.btn--dark):hover,\n.btn:not(.btn--ghost):not(.btn--dark):focus-visible {\n  animation: none;\n  background-color: var(--c-cyan);\n  border-color: var(--c-cyan);\n}\n\n.btn--ghost {\n  background: transparent;\n  color: var(--c-white);\n  border-color: var(--c-line-hi);\n}\n\/* Mismo relleno que el CTA s\u00f3lido: la cortina que sube es blanca, no cian *\/\n.btn--ghost::before { background: var(--c-white); }\n.btn--ghost:hover, .btn--ghost:focus-visible { color: var(--c-ink); border-color: var(--c-cyan); }\n\n.btn--dark {\n  background: var(--c-navy);\n  color: var(--c-white);\n  border-color: var(--c-navy);\n}\n.btn--dark::before { background: var(--c-ink); }\n.btn--dark:hover, .btn--dark:focus-visible { color: var(--c-cyan); box-shadow: none; }\n\n.btn--lg { padding: 1.15em 2.6em; font-size: var(--t-md); }\n\n\/* Flecha que empuja la mirada hacia la etiqueta del CTA *\/\n.btn--arrow { padding-left: 1.5em; }\n.btn__arrow {\n  width: 1.15em;\n  height: 1.15em;\n  flex: none;\n  display: grid;\n  place-items: center;\n  margin-right: -0.15em;\n  animation: nudge 1.7s var(--e-in-out) infinite;\n}\n.btn__arrow svg { width: 100%; height: 100%; }\n.btn:hover .btn__arrow, .btn:focus-visible .btn__arrow { animation-play-state: paused; transform: translateX(4px); }\n\n\n\/* ---------- 6.3 Hero ---------- *\/\n\n.hero {\n  position: relative;\n  padding-block: clamp(3.5rem, 2rem + 7vw, 7.5rem) clamp(4rem, 2rem + 6vw, 7rem);\n  overflow: hidden;\n  isolation: isolate;\n}\n\n.hero__field {\n  position: absolute;\n  inset: 0;\n  z-index: -1;\n  background-image:\n    linear-gradient(to right, var(--c-line-soft) 1px, transparent 1px),\n    linear-gradient(to bottom, var(--c-line-soft) 1px, transparent 1px);\n  background-size: 84px 84px;\n  mask-image: radial-gradient(120% 90% at 70% 20%, #000 0%, transparent 72%);\n  -webkit-mask-image: radial-gradient(120% 90% at 70% 20%, #000 0%, transparent 72%);\n}\n\n.hero__sweep {\n  position: absolute;\n  top: 50%; left: 72%;\n  width: 130vmax; height: 130vmax;\n  translate: -50% -50%;\n  border-radius: 50%;\n  background: conic-gradient(from 0deg, transparent 0deg, var(--c-glow-soft) 26deg, transparent 60deg);\n  mask-image: radial-gradient(circle, #000 0%, transparent 62%);\n  -webkit-mask-image: radial-gradient(circle, #000 0%, transparent 62%);\n  opacity: 0.7;\n  animation: sweep 16s linear infinite;\n  will-change: transform;\n}\n\n.hero__grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: clamp(2.5rem, 1rem + 5vw, 4.5rem);\n  align-items: center;\n}\n\n.hero__title {\n  font-size: clamp(2.35rem, 1.5rem + 3.4vw, 4.35rem);\n  font-weight: 600;\n  letter-spacing: -0.035em;\n  line-height: var(--lh-tight);\n}\n\n.hero__lead {\n  margin-top: var(--s-6);\n  max-width: 52ch;\n  color: var(--c-dim);\n  font-size: var(--t-md);\n}\n\n.hero__actions {\n  margin-top: var(--s-7);\n  display: flex;\n  flex-wrap: wrap;\n  gap: var(--s-4);\n}\n\n\n\/* ---------- 6.4 Panel VSL ---------- *\/\n\n.vsl { position: relative; }\n\n.vsl__frame {\n  position: relative;\n  padding: 14px;\n  background: linear-gradient(160deg, var(--c-panel-hi), var(--c-navy) 60%);\n  border: 1px solid var(--c-line);\n  border-radius: var(--r-lg);\n  box-shadow: 0 30px 90px color-mix(in srgb, var(--c-ink) 80%, transparent);\n}\n\n.vsl__screen {\n  position: relative;\n  aspect-ratio: 16 \/ 9;\n  border-radius: var(--r-md);\n  overflow: hidden;\n  background:\n    radial-gradient(90% 70% at 50% 40%, var(--c-glow-soft), transparent 70%),\n    var(--c-ink);\n  border: 1px solid var(--c-line-soft);\n}\n\n.vsl__media {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  display: block;\n}\n\n\/* Capa de activaci\u00f3n de sonido. Cubre el video entero: cualquier clic sirve. *\/\n.vsl__unmute {\n  position: absolute;\n  inset: 0;\n  z-index: 3;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  gap: var(--s-4);\n  padding: var(--s-4);\n  border: 0;\n  cursor: pointer;\n  font-family: inherit;\n  color: var(--c-white);\n  background: linear-gradient(\n    to bottom,\n    color-mix(in srgb, var(--c-ink) 28%, transparent),\n    color-mix(in srgb, var(--c-ink) 74%, transparent));\n  transition: background var(--d-mid) var(--e-out);\n}\n.vsl__unmute[hidden] { display: none; }\n.vsl__unmute:hover { background: color-mix(in srgb, var(--c-ink) 40%, transparent); }\n\n.vsl__unmute__icon {\n  width: clamp(56px, 4rem + 2vw, 78px);\n  aspect-ratio: 1;\n  display: grid;\n  place-items: center;\n  border-radius: 50%;\n  background: var(--c-cyan);\n  color: var(--c-ink);\n  box-shadow: 0 0 0 0 color-mix(in srgb, var(--c-cyan) 50%, transparent);\n  animation: ring 2.8s var(--e-out) infinite;\n  transition: transform var(--d-fast) var(--e-out);\n}\n.vsl__unmute__icon svg { width: 46%; height: 46%; }\n\n.vsl__unmute__text {\n  font-size: var(--t-md);\n  font-weight: 600;\n  letter-spacing: -0.01em;\n  text-align: center;\n  padding: 0.6em 1.15em;\n  border-radius: var(--r-full);\n  background: color-mix(in srgb, var(--c-ink) 68%, transparent);\n  border: 1px solid var(--c-line);\n  backdrop-filter: blur(8px);\n}\n\n.vsl__unmute:hover .vsl__unmute__icon,\n.vsl__unmute:focus-visible .vsl__unmute__icon { transform: scale(1.07); }\n\n.vsl__scan {\n  position: absolute;\n  left: 0; right: 0; top: 0;\n  height: 30%;\n  background: linear-gradient(to bottom, transparent, var(--c-glow-soft), transparent);\n  animation: scan 5.5s var(--e-in-out) infinite;\n  pointer-events: none;\n}\n\n.vsl__bracket {\n  position: absolute;\n  width: 20px; height: 20px;\n  border: 1.5px solid var(--c-cyan);\n  opacity: 0.85;\n}\n.vsl__bracket--tl { top: -1px; left: -1px; border-right: 0; border-bottom: 0; border-radius: var(--r-lg) 0 0 0; }\n.vsl__bracket--tr { top: -1px; right: -1px; border-left: 0; border-bottom: 0; border-radius: 0 var(--r-lg) 0 0; }\n.vsl__bracket--bl { bottom: -1px; left: -1px; border-right: 0; border-top: 0; border-radius: 0 0 0 var(--r-lg); }\n.vsl__bracket--br { bottom: -1px; right: -1px; border-left: 0; border-top: 0; border-radius: 0 0 var(--r-lg) 0; }\n\n.vsl__rec {\n  position: absolute;\n  top: 26px; left: 26px;\n  display: inline-flex;\n  align-items: center;\n  gap: 0.5em;\n  padding: 0.35em 0.75em;\n  background: color-mix(in srgb, var(--c-ink) 72%, transparent);\n  border: 1px solid var(--c-line);\n  border-radius: var(--r-full);\n  color: var(--c-cyan);\n  \/* Sin backdrop-filter: esta insignia mide 60\u00d724px y se apoya en un fondo de\n     tinta al 72% sobre un v\u00eddeo oscuro. El desenfoque no se distingue y cuesta\n     una pasada de composici\u00f3n en el hero, que es lo \u00faltimo que conviene\n     encarecer. El del texto del bot\u00f3n s\u00ed se queda: ah\u00ed s\u00ed se lee. *\/\n}\n.vsl__dot {\n  width: 6px; height: 6px;\n  border-radius: 50%;\n  background: var(--c-cyan);\n  animation: pulse 2s ease-in-out infinite;\n}\n\n.vsl__cap {\n  margin-top: var(--s-4);\n  color: var(--c-dimmer);\n  text-align: center;\n  letter-spacing: 0.08em;\n}\n\n\n\/* ---------- 6.5 Ticker ---------- *\/\n\n.ticker {\n  background: var(--c-navy);\n  border-block: 1px solid var(--c-line-soft);\n  padding-block: var(--s-5);\n  overflow: hidden;\n  mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent);\n  -webkit-mask-image: linear-gradient(to right, transparent, #000 8%, #000 92%, transparent);\n}\n.ticker__track {\n  display: flex;\n  width: max-content;\n  animation: slide 34s linear infinite;\n  will-change: transform;\n}\n.ticker__list {\n  display: flex;\n  align-items: center;\n  gap: clamp(1.5rem, 3vw, 3rem);\n  padding-right: clamp(1.5rem, 3vw, 3rem);\n}\n.ticker__list li {\n  \/* Cada item es su propia caja centrada con line-height fijo. Sin esto, las\n     m\u00e9tricas de ascendente y descendente de la fuente pueden dejar una palabra\n     unos p\u00edxeles m\u00e1s alta que las dem\u00e1s en cuanto carga IBM Plex Mono. *\/\n  display: flex;\n  align-items: center;\n  line-height: 1;\n  height: 1.2em;\n  font-family: var(--f-mono);\n  font-size: clamp(0.8rem, 0.7rem + 0.4vw, 1rem);\n  letter-spacing: 0.14em;\n  text-transform: uppercase;\n  color: var(--c-dimmer);\n  white-space: nowrap;\n}\n.ticker__sep { color: var(--c-cyan); }\n\n\n\/* ---------- 6.6 M\u00e9tricas (carrusel con profundidad) ----------\n   Nota: la geometr\u00eda de este bloque depende de que la <ul> no tenga sangr\u00eda y\n   de que los <p> no tengan margen. Eso queda garantizado en el bloque 2.5;\n   sin \u00e9l, el tema de WordPress corre el conjunto a la derecha y abre un hueco\n   enorme entre la cifra y su etiqueta. *\/\n\n.tel__carousel {\n  position: relative;\n  max-width: 52rem;\n  margin-inline: auto;\n  text-align: center;\n}\n\n\/* Las tres cifras se apilan; la profundidad las separa con escala, opacidad y blur *\/\n.tel__deck {\n  display: grid;\n  place-items: center;\n  min-height: clamp(6.5rem, 5.5rem + 4vw, 9rem);\n  perspective: 1000px;\n}\n\n\/* Rejilla, no flex: las dos filas se dimensionan por su contenido y align-content\n   las agrupa en el centro. As\u00ed el n\u00famero y la etiqueta quedan siempre juntos,\n   pase lo que pase con las m\u00e9tricas de la fuente. *\/\n.tel__slide {\n  grid-area: 1 \/ 1;\n  width: 100%;\n  max-width: 100%;\n  display: grid;\n  grid-auto-rows: min-content;\n  align-content: center;\n  justify-items: center;\n  gap: var(--s-3);\n  animation: tel-carousel 13.5s var(--e-in-out) infinite both;\n}\n\/* Desfases negativos: cada cifra arranca ya metida en su tercio, as\u00ed al cargar\n   solo se ve una al frente y no las tres apiladas. *\/\n.tel__slide:nth-child(1) { animation-delay: 0s; }\n.tel__slide:nth-child(2) { animation-delay: -9s; }\n.tel__slide:nth-child(3) { animation-delay: -4.5s; }\n\n.tel__num {\n  font-size: clamp(2.75rem, 1.9rem + 3.4vw, 4.75rem);\n  font-weight: 600;\n  line-height: 1;\n  letter-spacing: -0.05em;\n  color: var(--c-white);\n  font-variant-numeric: tabular-nums;\n}\n.tel__plus { color: var(--c-cyan); }\n\n.tel__label {\n  color: var(--c-dimmer);\n  max-width: min(34ch, 100%);\n  line-height: 1.55;\n  letter-spacing: 0.08em;\n}\n\n\/* Los controles viven bajo el mazo, nunca encima de la cifra *\/\n.tel__controls {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  gap: var(--s-5);\n  flex-wrap: wrap;\n  margin-top: clamp(0.9rem, 0.7rem + 0.8vw, 1.4rem);\n}\n\n.tel__dots { display: flex; gap: 0.55rem; }\n.tel__dots i {\n  width: 6px;\n  height: 6px;\n  border-radius: 50%;\n  background: var(--c-line-hi);\n  animation: tel-dot 13.5s var(--e-in-out) infinite both;\n}\n.tel__dots i:nth-child(1) { animation-delay: 0s; }\n.tel__dots i:nth-child(2) { animation-delay: -9s; }\n.tel__dots i:nth-child(3) { animation-delay: -4.5s; }\n\n\/* Control de pausa. Contenido que se mueve solo necesita una forma de detenerlo. *\/\n.tel__pausebtn {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.5em;\n  padding: 0.45em 0.9em;\n  border: 1px solid var(--c-line-soft);\n  border-radius: var(--r-full);\n  color: var(--c-dimmer);\n  letter-spacing: 0.12em;\n  cursor: pointer;\n  transition: color var(--d-fast) var(--e-out), border-color var(--d-fast) var(--e-out);\n}\n.tel__pausebtn::before { content: \"\u275a\u275a\"; font-size: 0.7em; letter-spacing: -0.1em; }\n.tel__pausebtn::after  { content: \"Pausar\"; }\n.tel__pausebtn:hover { color: var(--c-cyan); border-color: var(--c-line-hi); }\n.tel__pause:focus-visible ~ .tel__controls .tel__pausebtn { outline: 2px solid var(--c-cyan); outline-offset: 3px; }\n\n.tel__pause:checked ~ .tel__controls .tel__pausebtn::before { content: \"\u25b6\"; }\n.tel__pause:checked ~ .tel__controls .tel__pausebtn::after  { content: \"Reanudar\"; }\n.tel__pause:checked ~ .tel__deck .tel__slide,\n.tel__pause:checked ~ .tel__controls .tel__dots i { animation-play-state: paused; }\n\n\n\/* ---------- 6.7 El sistema (componente firma) ---------- *\/\n\n.sys__head { max-width: 68ch; }\n.sys__title { font-size: var(--t-2xl); letter-spacing: -0.03em; }\n.sys__lead { margin-top: var(--s-5); color: var(--c-dim); max-width: 60ch; }\n\n.sys__status {\n  margin-top: clamp(2.5rem, 1.5rem + 3vw, 4rem);\n  display: inline-flex;\n  align-items: center;\n  gap: 0.7em;\n  color: var(--c-cyan);\n  letter-spacing: 0.14em;\n}\n.sys__led {\n  width: 6px; height: 6px;\n  border-radius: 50%;\n  background: var(--c-cyan);\n  box-shadow: 0 0 0 0 var(--c-glow);\n  animation: pulse 2.2s ease-in-out infinite;\n}\n\n.sys__grid {\n  margin-top: var(--s-5);\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: var(--s-4);\n}\n\n.sys__cell {\n  position: relative;\n  padding: clamp(1.5rem, 1rem + 1.6vw, 2.25rem);\n  min-height: clamp(140px, 12vw, 180px);\n  background: var(--c-panel);\n  border: 1px solid var(--c-line-soft);\n  border-radius: var(--r-md);\n  display: flex;\n  flex-direction: column;\n  justify-content: space-between;\n  gap: var(--s-5);\n  overflow: hidden;\n  transition: border-color var(--d-mid) var(--e-out), background var(--d-mid) var(--e-out);\n}\n.sys__cell::after {\n  content: \"\";\n  position: absolute;\n  right: -30%; bottom: -60%;\n  width: 70%; aspect-ratio: 1;\n  border-radius: 50%;\n  background: radial-gradient(circle, var(--c-glow-soft), transparent 65%);\n  opacity: 0;\n  transition: opacity var(--d-slow) var(--e-out);\n}\n.sys__cell:hover { border-color: var(--c-line-hi); background: var(--c-panel-hi); }\n.sys__cell:hover::after { opacity: 1; }\n\n.sys__idx { color: var(--c-cyan); letter-spacing: 0.16em; }\n.sys__name { font-size: var(--t-lg); font-weight: 500; letter-spacing: -0.015em; }\n\n\n\/* ---------- 6.8 Enfoque ---------- *\/\n\n.focus__grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: clamp(2.5rem, 1rem + 5vw, 5rem);\n  align-items: center;\n}\n\n.focus__art {\n  position: relative;\n  display: grid;\n  place-items: center;\n  aspect-ratio: 1;\n  max-width: 520px;\n  margin-inline: auto;\n  width: 100%;\n}\n\/* Se adapta a cualquier proporci\u00f3n sin deformar ni desbordar el disco de \u00f3rbitas *\/\n.focus__img {\n  width: 76%;\n  max-height: 86%;\n  object-fit: contain;\n  position: relative;\n  z-index: 1;\n  border-radius: var(--r-md);\n  filter: drop-shadow(0 20px 60px var(--c-glow));\n  animation: float 9s ease-in-out infinite;\n}\n.orbit { position: absolute; inset: 0; }\n.orbit__ring {\n  position: absolute;\n  inset: 0;\n  border-radius: 50%;\n  border: 1px solid var(--c-line);\n}\n.orbit__ring--1 { inset: 4%; border-style: solid; animation: spin 26s linear infinite; }\n.orbit__ring--1::before {\n  content: \"\";\n  position: absolute;\n  top: -4px; left: 50%;\n  width: 7px; height: 7px;\n  border-radius: 50%;\n  background: var(--c-cyan);\n  box-shadow: 0 0 14px var(--c-cyan);\n}\n.orbit__ring--2 { inset: 20%; border-style: dashed; border-color: var(--c-line-soft); animation: spin 42s linear infinite reverse; }\n\n.focus__title { font-size: var(--t-2xl); letter-spacing: -0.03em; }\n.focus__lead { margin-top: var(--s-5); color: var(--c-dim); max-width: 54ch; }\n\n.focus__list { margin-block: var(--s-8) var(--s-8); }\n.focus__row {\n  padding-block: var(--s-5);\n  border-top: 1px solid var(--c-line-soft);\n  display: grid;\n  gap: var(--s-2);\n  transition: padding-left var(--d-mid) var(--e-out);\n}\n.focus__row:last-child { border-bottom: 1px solid var(--c-line-soft); }\n.focus__row:hover { padding-left: var(--s-4); }\n.focus__row dt {\n  font-weight: 600;\n  font-size: var(--t-md);\n  display: flex;\n  align-items: center;\n  gap: 0.7em;\n}\n.focus__row dt::before {\n  content: \"\";\n  width: 14px; height: 1px;\n  background: var(--c-cyan);\n  flex: none;\n  transition: width var(--d-mid) var(--e-out);\n}\n.focus__row:hover dt::before { width: 26px; }\n.focus__row dd { color: var(--c-dim); font-size: var(--t-sm); padding-left: calc(14px + 0.7em); }\n\n\n\/* ---------- 6.9 Servicios (tarjetas con volteo) ---------- *\/\n\n.svcs__row {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: var(--s-4);\n  \/* Canaleta a la derecha en m\u00f3vil: el carril del cohete, para que no pise\n     las tarjetas. Se anula desde 1180px, donde el cohete vive fuera del wrap. *\/\n  margin-right: 44px;\n}\n@media (min-width: 1180px) { .svcs__row { margin-right: 0; } }\n\n.svc {\n  position: relative;\n  perspective: 1400px;\n}\n\n\/* La casilla solo guarda el estado: nunca cubre nada ni recibe toques.\n   Queda enfocable por teclado, pero fuera del camino del puntero. *\/\n.svc__switch {\n  position: absolute;\n  top: 0; left: 0;\n  width: 1px; height: 1px;\n  margin: 0;\n  opacity: 0;\n  pointer-events: none;\n  appearance: none;\n  -webkit-appearance: none;\n}\n\n\/* La zona de toque es una etiqueta, no la casilla: los navegadores m\u00f3viles\n   activan etiquetas de forma fiable, mientras que un input transparente\n   con appearance:none se comporta de manera irregular en iOS. *\/\n.svc__tap {\n  display: none;\n  position: absolute;\n  inset: 0;\n  z-index: 4;\n  cursor: pointer;\n  -webkit-tap-highlight-color: transparent;\n}\n\n\/* El giro por estado no depende de ninguna media query: si la detecci\u00f3n de\n   hover del dispositivo falla, el toque sigue funcionando igual. *\/\n.svc__switch:checked ~ .svc__inner { transform: rotateY(180deg); }\n\n\/* Ya girada, la etiqueta se retira para que el enlace de la cara trasera\n   reciba el toque; se vuelve con el bot\u00f3n de cierre. *\/\n.svc__switch:checked ~ .svc__tap { display: none; }\n\n.svc__switch:focus-visible ~ .svc__inner {\n  outline: 2px solid var(--c-cyan);\n  outline-offset: 3px;\n  border-radius: var(--r-md);\n}\n\n.svc__inner {\n  display: grid;\n  transform-style: preserve-3d;\n  transition: transform 0.75s cubic-bezier(0.2, 0.72, 0.16, 1);\n  min-height: clamp(230px, 20vw, 300px);\n  \/* La rejilla estira la tarjeta al alto de la fila, pero el interior no\n     heredaba ese alto: sin esto, cada tarjeta terminaba a una altura distinta. *\/\n  height: 100%;\n}\n\n.svc__face {\n  grid-area: 1 \/ 1;\n  backface-visibility: hidden;\n  -webkit-backface-visibility: hidden;\n  padding: clamp(1.5rem, 1rem + 1.5vw, 2.25rem);\n  border: 1px solid var(--c-line);\n  border-radius: var(--r-md);\n  display: flex;\n  flex-direction: column;\n  gap: var(--s-4);\n  transition: border-color var(--d-mid) var(--e-out),\n              box-shadow var(--d-mid) var(--e-out),\n              transform var(--d-mid) var(--e-out);\n}\n\n\/* La cara frontal se anuncia como pulsable: relieve, cursor y esquina de acento *\/\n.svc__face--front {\n  position: relative;\n  overflow: hidden;\n  cursor: pointer;\n  background:\n    linear-gradient(180deg, var(--c-panel-hi), var(--c-panel));\n  justify-content: space-between;\n  box-shadow: 0 1px 0 0 color-mix(in srgb, var(--c-white) 6%, transparent) inset,\n              0 10px 24px -18px rgba(0, 0, 0, 0.9);\n}\n\n.svc__face--back {\n  transform: rotateY(180deg);\n  background:\n    linear-gradient(150deg, var(--c-glow-soft), transparent 60%),\n    var(--c-panel-hi);\n  border-color: var(--c-cyan-dim);\n  justify-content: space-between;\n}\n\n\/* Riel de acento en el canto izquierdo de la cara frontal *\/\n.svc__face--front::before {\n  content: \"\";\n  position: absolute;\n  top: 0; left: 0;\n  width: 3px; height: 100%;\n  background: var(--c-cyan);\n  border-radius: var(--r-md) 0 0 var(--r-md);\n  transform: scaleY(0.001);\n  transform-origin: bottom;\n  transition: transform var(--d-mid) var(--e-out);\n}\n\n\/* Glifo de volteo en la esquina: se\u00f1a universal de \"esto gira \/ se abre\" *\/\n.svc__flip {\n  position: absolute;\n  top: clamp(1.1rem, 0.8rem + 0.8vw, 1.6rem);\n  right: clamp(1.1rem, 0.8rem + 0.8vw, 1.6rem);\n  width: 34px;\n  height: 34px;\n  display: grid;\n  place-items: center;\n  border: 1px solid var(--c-line-hi);\n  border-radius: 50%;\n  color: var(--c-cyan);\n  background: color-mix(in srgb, var(--c-cyan) 8%, transparent);\n  transition: background var(--d-mid) var(--e-out), border-color var(--d-mid) var(--e-out), transform var(--d-mid) var(--e-out);\n  pointer-events: none;\n}\n.svc__flip svg { width: 17px; height: 17px; }\n\n.svc__idx { color: var(--c-cyan); letter-spacing: 0.16em; }\n\n.svc__title {\n  font-size: var(--t-lg);\n  font-weight: 500;\n  letter-spacing: -0.02em;\n  display: flex;\n  flex-wrap: wrap;\n  align-items: baseline;\n  gap: 0.7em;\n  padding-right: 2.5rem;\n}\n.svc__meta {\n  color: var(--c-dimmer);\n  border: 1px solid var(--c-line-soft);\n  border-radius: var(--r-full);\n  padding: 0.25em 0.7em;\n}\n\n.svc__hint {\n  color: var(--c-cyan);\n  letter-spacing: 0.14em;\n  display: inline-flex;\n  align-items: center;\n  gap: 0.6em;\n  transition: gap var(--d-mid) var(--e-out);\n}\n.svc__hint::after {\n  content: \"\";\n  width: 14px; height: 1px;\n  background: currentColor;\n  transition: width var(--d-mid) var(--e-out);\n}\n\n.svc__text { color: var(--c-dim); font-size: var(--t-sm); }\n.svc__link { align-self: start; }\n\n\/* --- Escritorio: el volteo lo dispara el puntero o el foco --- *\/\n@media (hover: hover) {\n  .svc:hover .svc__inner,\n  .svc:focus-within .svc__inner { transform: rotateY(180deg); }\n\n  \/* La tarjeta se levanta al acercar el puntero: refuerza que es interactiva *\/\n  .svc:hover .svc__face--front {\n    transform: translateY(-4px);\n    border-color: var(--c-cyan-dim);\n    box-shadow: 0 1px 0 0 color-mix(in srgb, var(--c-white) 8%, transparent) inset,\n                0 22px 40px -24px rgba(0, 0, 0, 0.95);\n  }\n  .svc:hover .svc__face--front::before { transform: scaleY(1); transform-origin: top; }\n  .svc:hover .svc__flip { background: var(--c-cyan); color: var(--c-ink); border-color: var(--c-cyan); transform: rotate(180deg); }\n  .svc:hover .svc__hint { gap: 0.95em; }\n  .svc:hover .svc__hint::after { width: 26px; }\n}\n\n\/* --- T\u00e1ctil: aparece la zona de toque y el bot\u00f3n de cierre --- *\/\n@media (hover: none) {\n  .svc__tap { display: block; }\n\n  \/* Bot\u00f3n de cierre en la cara trasera para volver a la frontal *\/\n  .svc__close {\n    position: absolute;\n    top: clamp(1.1rem, 0.8rem + 0.8vw, 1.6rem);\n    right: clamp(1.1rem, 0.8rem + 0.8vw, 1.6rem);\n    z-index: 5;\n    width: 38px; height: 38px;\n    display: grid;\n    place-items: center;\n    border: 1px solid var(--c-line-hi);\n    border-radius: 50%;\n    background: var(--c-panel);\n    color: var(--c-cyan);\n    cursor: pointer;\n    -webkit-tap-highlight-color: transparent;\n  }\n  .svc__close svg { width: 15px; height: 15px; }\n\n  .svc__hint::before { content: \"Toca para \"; }\n  .svc__flip { transform: none; }\n}\n\n\/* En escritorio no hace falta el cierre t\u00e1ctil *\/\n@media (hover: hover) { .svc__close { display: none; } }\n\n\n\/* ---------- 6.11 Confidencialidad (fondo claro) ---------- *\/\n\n.conf__grid {\n  display: grid;\n  grid-template-columns: 1fr;\n  gap: clamp(2.5rem, 1.5rem + 4vw, 5rem);\n  align-items: center;\n}\n\n.conf__title {\n  font-size: var(--t-2xl);\n  letter-spacing: -0.03em;\n  color: var(--c-on-light);\n}\n.conf__title em { color: var(--c-on-light); text-decoration: underline; text-decoration-color: var(--c-cyan); text-decoration-thickness: 4px; text-underline-offset: 6px; }\n.conf__lead { margin-block: var(--s-5) var(--s-7); color: var(--c-on-light-dim); max-width: 52ch; }\n\n.conf__list {\n  display: grid;\n  gap: var(--s-4);\n  padding: clamp(1.75rem, 1.2rem + 2vw, 2.75rem);\n  border: 1px solid var(--c-on-light-line);\n  border-radius: var(--r-lg);\n  background: color-mix(in srgb, var(--c-cyan) 4%, var(--c-white));\n}\n\/* El blindaje del bloque 2.5 anula la sangr\u00eda de lista, pero este recuadro s\u00ed\n   necesita su propio relleno: se vuelve a declarar con la misma prioridad. *\/\n.conf__list { padding-inline-start: clamp(1.75rem, 1.2rem + 2vw, 2.75rem) !important; }\n\n.redact {\n  display: block;\n  width: var(--w, 60%);\n  height: 15px;\n  border-radius: 3px;\n  background: var(--c-cyan);\n  position: relative;\n  overflow: hidden;\n}\n.redact::after {\n  content: \"\";\n  position: absolute;\n  inset: 0;\n  background: linear-gradient(100deg, transparent 20%, color-mix(in srgb, var(--c-white) 55%, transparent) 50%, transparent 80%);\n  transform: translateX(-120%);\n  animation: shine 4.5s var(--e-in-out) infinite;\n}\n.conf__list li:nth-child(2) .redact::after { animation-delay: 0.3s; }\n.conf__list li:nth-child(3) .redact::after { animation-delay: 0.6s; }\n.conf__list li:nth-child(4) .redact::after { animation-delay: 0.9s; }\n.conf__list li:nth-child(5) .redact::after { animation-delay: 1.2s; }\n.conf__list li:nth-child(6) .redact::after { animation-delay: 1.5s; }\n.conf__list li:nth-child(7) .redact::after { animation-delay: 1.8s; }\n.conf__list li:nth-child(8) .redact::after { animation-delay: 2.1s; }\n\n\n\/* ---------- 6.14 Testimonios ---------- *\/\n\n.test__head {\n  text-align: center;\n  margin-bottom: clamp(1.75rem, 1.2rem + 2vw, 3rem);\n}\n\n.test__stars {\n  display: flex;\n  justify-content: center;\n  gap: 0.3rem;\n  margin-bottom: var(--s-4);\n}\n.test__star {\n  width: clamp(24px, 1.2rem + 1vw, 32px);\n  height: clamp(24px, 1.2rem + 1vw, 32px);\n  fill: var(--c-gold);\n  animation: star-twinkle 3.2s var(--e-in-out) infinite;\n}\n\/* Escalonado de izquierda a derecha: el brillo recorre las cinco como una ola\n   en vez de encenderlas todas a la vez, que resultar\u00eda parpadeante. *\/\n.test__stars .test__star:nth-child(1) { animation-delay: 0s; }\n.test__stars .test__star:nth-child(2) { animation-delay: 0.16s; }\n.test__stars .test__star:nth-child(3) { animation-delay: 0.32s; }\n.test__stars .test__star:nth-child(4) { animation-delay: 0.48s; }\n.test__stars .test__star:nth-child(5) { animation-delay: 0.64s; }\n\n.test__title {\n  font-size: var(--t-2xl);\n  letter-spacing: -0.02em;\n}\n\n\/* Sin marco: el widget ocupa todo el ancho disponible *\/\n.test__widget { width: 100%; }\n\n\/* El iframe de rese\u00f1as no trae altura propia, as\u00ed que el navegador le da los\n   150px por defecto y las rese\u00f1as salen cortadas. El script del proveedor\n   deber\u00eda agrandarlo, pero si no llega el recorte se queda. min-height pone un\n   suelo: garantiza sitio y no impide que el script lo agrande cuando s\u00ed\n   funciona. Los valores bajan al ensanchar porque las rese\u00f1as pasan de\n   apiladas a en fila. *\/\n.test__widget iframe {\n  display: block;\n  width: 100%;\n  border: 0;\n  min-height: 400px;\n}\n@media (min-width: 640px) { .test__widget iframe { min-height: 300px; } }\n@media (min-width: 960px) { .test__widget iframe { min-height: 200px; } }\n\n\n\/* ---------- 6.14b Cohete de la secci\u00f3n de servicios ---------- *\/\n\n.rocket {\n  position: absolute;\n  top: 0;\n  bottom: 0;\n  \/* M\u00f3vil: centrado en la canaleta de 44px abierta a la derecha de las tarjetas *\/\n  right: max(2px, calc(var(--gutter) - 8px));\n  width: 40px;\n  display: block;\n  pointer-events: none;\n  opacity: 0.72;\n}\n\n.rocket__ship {\n  position: absolute;\n  left: 0;\n  width: 40px;\n  \/* Sin soporte de scroll timeline se queda quieto a media secci\u00f3n *\/\n  top: 42%;\n  rotate: -3deg;\n  filter: drop-shadow(0 0 16px var(--c-glow));\n  \/* Sin will-change: top. \"top\" no es una propiedad componible, as\u00ed que el\n     aviso ped\u00eda una capa de GPU para algo que recalcula posici\u00f3n de todas\n     formas: coste de memoria sin ninguna ganancia. *\/\n}\n.rocket__ship svg { width: 100%; height: auto; display: block; }\n\n.rocket__hull { fill: var(--c-navy); stroke: var(--c-cyan); stroke-width: 2; stroke-linejoin: round; }\n.rocket__fin  { fill: color-mix(in srgb, var(--c-cyan) 22%, var(--c-navy)); stroke: var(--c-cyan); stroke-width: 2; stroke-linejoin: round; }\n.rocket__glass { fill: var(--c-ink); stroke: var(--c-cyan); stroke-width: 2; }\n.rocket__pupil { fill: var(--c-cyan); }\n\n\/* Va de morro hacia abajo, as\u00ed que la estela sale por la cola: arriba *\/\n.rocket__flame {\n  fill: var(--c-cyan);\n  transform-box: fill-box;\n  transform-origin: bottom center;\n  animation: thrust 0.4s var(--e-in-out) infinite alternate;\n}\n\n\/* Desde 1180px hay margen lateral de sobra: cohete m\u00e1s grande y separado *\/\n@media (min-width: 1180px) {\n  .rocket {\n    right: clamp(0.5rem, calc((100vw - var(--maxw)) \/ 4), 4.5rem);\n    width: 56px;\n    opacity: 1;\n  }\n  .rocket__ship { width: 56px; filter: drop-shadow(0 0 22px var(--c-glow)); }\n}\n\n@supports (animation-timeline: view()) {\n  .rocket__ship {\n    animation: descend linear both;\n    animation-timeline: --svcs;\n    animation-range: cover 6% cover 94%;\n  }\n  \/* top en % se resuelve contra el ra\u00edl, que mide toda la secci\u00f3n.\n     Se resta el alto del cohete para que aterrice dentro y no se salga. *\/\n  @keyframes descend {\n    from { top: 0;                 rotate: -7deg; }\n    to   { top: calc(100% - 7rem); rotate: 7deg; }\n  }\n}\n\n\n\/* ---------- 6.15 Blog ---------- *\/\n\n.blog__list { border-top: 1px solid var(--c-line-soft); }\n\n.blog__item { border-bottom: 1px solid var(--c-line-soft); }\n\n.blog__link {\n  display: grid;\n  grid-template-columns: auto 1fr;\n  align-items: center;\n  gap: var(--s-4) var(--s-5);\n  padding-block: clamp(1.5rem, 1rem + 1.5vw, 2.25rem);\n  position: relative;\n  transition: padding-left var(--d-mid) var(--e-out);\n}\n.blog__link:hover, .blog__link:focus-visible { padding-left: var(--s-4); }\n\n.blog__idx { color: var(--c-cyan); letter-spacing: 0.16em; align-self: center; }\n\n.blog__title {\n  font-size: var(--t-lg);\n  font-weight: 500;\n  letter-spacing: -0.02em;\n  color: var(--c-dim);\n  transition: color var(--d-fast) var(--e-out);\n  max-width: 58ch;\n}\n.blog__link:hover .blog__title, .blog__link:focus-visible .blog__title { color: var(--c-white); }\n\n.blog__thumb {\n  grid-column: 2;\n  width: 64px; height: 64px;\n  border-radius: var(--r-md);\n  object-fit: cover;\n  border: 1px solid var(--c-line-soft);\n}\n\n.blog__go {\n  grid-column: 2;\n  color: var(--c-cyan);\n  letter-spacing: 0.14em;\n}\n\n\n\/* ---------- 6.16 CTA final ---------- *\/\n\n.end::before {\n  content: \"\";\n  position: absolute;\n  bottom: -55%; left: 50%;\n  translate: -50% 0;\n  width: min(1100px, 130vw);\n  aspect-ratio: 1;\n  border-radius: 50%;\n  background: radial-gradient(circle, var(--c-glow-soft), transparent 62%);\n  pointer-events: none;\n}\n\n.end__inner {\n  position: relative;\n  text-align: center;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n}\n.end__title { font-size: var(--t-3xl); letter-spacing: -0.04em; line-height: var(--lh-tight); }\n.end__lead { margin-block: var(--s-6) var(--s-8); color: var(--c-dim); max-width: 46ch; font-size: var(--t-md); }\n.end__note { margin-top: var(--s-5); color: var(--c-faint); letter-spacing: 0.12em; }\n\n\n\/* ---------- 6.17 Salto de renderizado de la cola de la p\u00e1gina ----------\n   content-visibility: auto le permite al navegador no maquetar ni pintar estas\n   secciones hasta que se acercan al viewport. Aqu\u00ed importa m\u00e1s que en una\n   p\u00e1gina normal: la aurora son cuatro manchas con blur y dos modos de mezcla\n   cada una, y sin esto el navegador sigue componi\u00e9ndolas fuera de pantalla.\n\n   contain-intrinsic-size: auto <alto> da una altura estimada para que la barra\n   de scroll no d\u00e9 saltos, y el \"auto\" hace que recuerde la medida real una vez\n   calculada.\n\n   .test queda FUERA a prop\u00f3sito: su iframe de rese\u00f1as se dimensiona con un\n   script del proveedor, y si mide mientras la secci\u00f3n est\u00e1 sin renderizar\n   puede quedarse con una altura equivocada. Si ves saltos de scroll, quita\n   este bloque: es puramente una mejora, nada depende de \u00e9l. *\/\n.conf { content-visibility: auto; contain-intrinsic-size: auto 700px; }\n.blog { content-visibility: auto; contain-intrinsic-size: auto 800px; }\n.end  { content-visibility: auto; contain-intrinsic-size: auto 620px; }\n\n\n\/* ============================================================================\n   7. ANIMATIONS\n   ============================================================================ *\/\n\n@keyframes sweep {\n  to { rotate: 360deg; }\n}\n\n@keyframes scan {\n  0%   { transform: translateY(-110%); }\n  100% { transform: translateY(430%); }\n}\n\n@keyframes pulse {\n  0%, 100% { box-shadow: 0 0 0 0 var(--c-glow); opacity: 1; }\n  50%      { box-shadow: 0 0 0 6px transparent; opacity: 0.55; }\n}\n\n@keyframes slide {\n  to { transform: translateX(-50%); }\n}\n\n@keyframes spin {\n  to { rotate: 360deg; }\n}\n\n@keyframes float {\n  0%, 100% { transform: translateY(-1.5%); }\n  50%      { transform: translateY(1.5%); }\n}\n\n\/* Cada slide domina 1\/3 del ciclo. Los tramos se solapan: cuando una empieza a\n   irse al fondo, la siguiente ya est\u00e1 entrando, as\u00ed nunca queda el escenario\n   vac\u00edo. Con desfases de 4.5s y 9s siempre hay una n\u00edtida y otra difumin\u00e1ndose. *\/\n\/* Profundidad sin desplazamiento lateral: la cifra activa siempre est\u00e1 en el\n   eje central. El movimiento horizontal anterior hac\u00eda que, a mitad de\n   transici\u00f3n, el n\u00famero se viera corrido hacia un lado. Ahora la sensaci\u00f3n de\n   ir al fondo la dan solo la escala, el desenfoque y la opacidad. *\/\n@keyframes tel-carousel {\n  0% {\n    opacity: 1;\n    filter: blur(0);\n    transform: scale(1) translateY(0);\n    z-index: 2;\n  }\n  28% {\n    opacity: 1;\n    filter: blur(0);\n    transform: scale(1) translateY(0);\n    z-index: 2;\n  }\n  36% {\n    opacity: 0;\n    filter: blur(10px);\n    transform: scale(0.6) translateY(-9%);\n    z-index: 0;\n  }\n  92% {\n    opacity: 0;\n    filter: blur(10px);\n    transform: scale(0.6) translateY(9%);\n    z-index: 0;\n  }\n  100% {\n    opacity: 1;\n    filter: blur(0);\n    transform: scale(1) translateY(0);\n    z-index: 2;\n  }\n}\n\n@keyframes tel-dot {\n  0%, 28%   { background: var(--c-cyan);    transform: scale(1.35); }\n  36%, 100% { background: var(--c-line-hi); transform: scale(1); }\n}\n\n@keyframes thrust {\n  from { transform: scaleY(0.6) scaleX(0.85); opacity: 0.55; }\n  to   { transform: scaleY(1.15) scaleX(1);   opacity: 1; }\n}\n\n@keyframes underline-scan {\n  0%   { background-position: -45% 0, 0 0; }\n  100% { background-position: 145% 0, 0 0; }\n}\n\n@keyframes aurora-border {\n  0%   { border-radius: 37% 29% 27% 27% \/ 28% 25% 41% 37%; }\n  25%  { border-radius: 47% 29% 39% 49% \/ 61% 19% 66% 26%; }\n  50%  { border-radius: 57% 23% 47% 72% \/ 63% 17% 66% 33%; }\n  75%  { border-radius: 28% 49% 29% 100% \/ 93% 20% 64% 25%; }\n  100% { border-radius: 37% 29% 27% 27% \/ 28% 25% 41% 37%; }\n}\n\n@keyframes aurora-1 {\n  0%   { transform: translate(-55%, -10%); }\n  50%  { transform: translate(45%, 10%); }\n  100% { transform: translate(140%, -6%); }\n}\n@keyframes aurora-2 {\n  0%   { transform: translate(130%, 8%); }\n  50%  { transform: translate(25%, -11%); }\n  100% { transform: translate(-50%, 4%); }\n}\n@keyframes aurora-3 {\n  0%   { transform: translate(35%, -12%); }\n  50%  { transform: translate(135%, 9%); }\n  100% { transform: translate(-25%, -4%); }\n}\n@keyframes aurora-4 {\n  0%   { transform: translate(95%, 6%); }\n  50%  { transform: translate(-45%, -9%); }\n  100% { transform: translate(115%, 11%); }\n}\n\n@keyframes nudge {\n  0%, 100% { transform: translateX(0); opacity: 0.75; }\n  50%      { transform: translateX(5px); opacity: 1; }\n}\n\n\/* Rebote de los botones: dos toques suaves y una pausa larga, para no cansar *\/\n@keyframes btn-bounce {\n  0%, 40%, 100% { transform: translateY(0); }\n  20%           { transform: translateY(-5px); }\n  30%           { transform: translateY(-2px); }\n}\n\n\/* Aclarado en el pico del salto. No se toca el color del texto: sobre ambos\n   tonos de cian el tinta (--c-ink) mantiene contraste de sobra. *\/\n@keyframes btn-tint {\n  0%, 40%, 100% {\n    background-color: var(--c-cyan);\n    border-color: var(--c-cyan);\n    box-shadow: 0 0 0 0 transparent;\n  }\n  20% {\n    background-color: color-mix(in srgb, var(--c-cyan) 58%, var(--c-white));\n    border-color:     color-mix(in srgb, var(--c-cyan) 58%, var(--c-white));\n    box-shadow: 0 8px 26px var(--c-glow);\n  }\n}\n\n@keyframes ring {\n  0%   { box-shadow: 0 0 0 0 color-mix(in srgb, var(--c-cyan) 50%, transparent); }\n  70%  { box-shadow: 0 0 0 18px transparent; }\n  100% { box-shadow: 0 0 0 0 transparent; }\n}\n\n@keyframes shine {\n  0%, 55% { transform: translateX(-120%); }\n  85%, 100% { transform: translateX(120%); }\n}\n\n\/* Titileo de las estrellas: el oro se aclara, crece un punto y suelta un halo.\n   La escala se queda en 1.08 porque las estrellas van en flex con gap fijo;\n   m\u00e1s all\u00e1 de eso empiezan a rozarse. *\/\n@keyframes star-twinkle {\n  0%, 70%, 100% {\n    fill: var(--c-gold);\n    transform: scale(1);\n    filter: drop-shadow(0 0 0 transparent);\n  }\n  35% {\n    fill: color-mix(in srgb, var(--c-gold) 55%, var(--c-white));\n    transform: scale(1.08);\n    filter: drop-shadow(0 0 9px color-mix(in srgb, var(--c-gold) 65%, transparent));\n  }\n}\n\n\/* --- Mejora progresiva: animaciones ligadas al scroll --- *\/\n@supports (animation-timeline: view()) {\n\n  \/* Componente firma: del ruido al orden *\/\n  .sys__cell {\n    animation: snap linear both;\n    animation-timeline: view();\n    animation-range: entry 5% cover 42%;\n  }\n  @keyframes snap {\n    from {\n      transform: translate(var(--tx, 0), var(--ty, 0)) rotate(var(--rot, 0deg)) scale(0.92);\n      opacity: 0.18;\n      border-color: transparent;\n      filter: saturate(0.2);\n    }\n    to {\n      transform: translate(0, 0) rotate(0deg) scale(1);\n      opacity: 1;\n      border-color: var(--c-line-soft);\n      filter: saturate(1);\n    }\n  }\n\n  .sys__status {\n    animation: fade-in linear both;\n    animation-timeline: view();\n    animation-range: entry 10% cover 30%;\n  }\n  @keyframes fade-in { from { opacity: 0; } to { opacity: 1; } }\n\n  \/* Entradas discretas *\/\n  .tel__carousel, .svc {\n    animation: rise linear both;\n    animation-timeline: view();\n    animation-range: entry 0% cover 32%;\n  }\n  @keyframes rise {\n    from { opacity: 0; transform: translateY(24px); }\n    to   { opacity: 1; transform: translateY(0); }\n  }\n}\n\n\n\/* ============================================================================\n   8. RESPONSIVE\n   ============================================================================ *\/\n\n\/* --- Tablet --- *\/\n@media (min-width: 640px) {\n\n  .sys__grid { grid-template-columns: repeat(2, 1fr); gap: var(--s-5); }\n\n  .svcs__row { grid-template-columns: repeat(2, 1fr); }\n\n  .blog__link {\n    grid-template-columns: auto 1fr auto auto;\n    gap: var(--s-6);\n  }\n  .blog__thumb {\n    grid-column: 3;\n    opacity: 0;\n    transform: translateX(14px) scale(0.9);\n    transition: opacity var(--d-mid) var(--e-out), transform var(--d-mid) var(--e-out);\n  }\n  .blog__link:hover .blog__thumb, .blog__link:focus-visible .blog__thumb {\n    opacity: 1;\n    transform: translateX(0) scale(1);\n  }\n  .blog__go { grid-column: 4; }\n}\n\n\/* --- Desktop --- *\/\n@media (min-width: 960px) {\n\n  .hero__grid { grid-template-columns: 1.05fr 0.95fr; }\n\n  .sec__head--split { grid-template-columns: 1fr auto; gap: var(--s-8); }\n\n  .sys__grid { grid-template-columns: repeat(4, 1fr); }\n\n  .focus__grid { grid-template-columns: 0.9fr 1.1fr; }\n  .focus__art { order: -1; }\n\n  .svcs__row { grid-template-columns: repeat(3, 1fr); }\n\n  .conf__grid { grid-template-columns: 1.15fr 0.85fr; }\n\n}\n\n\/* --- Desktop ancho: los cinco servicios caben en una sola fila --- *\/\n@media (min-width: 1180px) {\n  .svcs__row { grid-template-columns: repeat(5, 1fr); }\n}\n\n\/* --- Pantallas muy estrechas: la palabra con aurora no puede partirse ---\n   .aurora-word lleva white-space: nowrap porque el subrayado y la capa de\n   mezcla asumen una sola l\u00ednea. \"decisiones seguras\" mide ~9,6em, as\u00ed que a\n   2rem (el m\u00ednimo de --t-2xl) pide ~317px y en un m\u00f3vil de 360px solo hay\n   320px de contenido: se sale por un pelo. Bajar el cuerpo de esos dos\n   titulares es m\u00e1s barato que renunciar al efecto. *\/\n@media (max-width: 400px) {\n  .sys__title,\n  .focus__title { font-size: clamp(1.6rem, 1rem + 3vw, 2rem); }\n}\n\n\/* --- Dispositivos sin hover: los thumbs del blog no dependen del puntero --- *\/\n@media (hover: none) {\n  .blog__thumb { opacity: 1; transform: none; }\n}\n\n\/* ============================================================================\n   9. UTILITIES \/ PREFERENCIAS\n   ============================================================================ *\/\n\n@media (prefers-reduced-motion: reduce) {\n  html { scroll-behavior: auto; }\n  *, *::before, *::after {\n    animation-duration: 0.001ms !important;\n    animation-iteration-count: 1 !important;\n    animation-delay: 0s !important;\n    transition-duration: 0.001ms !important;\n    scroll-behavior: auto !important;\n  }\n  .hero__sweep, .vsl__scan, .redact::after, .aurora, .rocket { display: none; }\n  .aurora-word { color: var(--c-cyan); }\n  .sys__cell { transform: none !important; opacity: 1 !important; filter: none !important; }\n  .focus__img, .orbit__ring, .btn__arrow, .btn { animation: none !important; }\n  .aurora-word::after { animation: none !important; background: var(--c-cyan); }\n  .vsl__unmute__icon { animation: none; box-shadow: 0 0 0 6px color-mix(in srgb, var(--c-cyan) 22%, transparent); }\n  .svc__inner { transition: none; }\n\n  \/* Las cifras dejan de rotar y se leen las tres a la vez, n\u00edtidas *\/\n  .tel__deck { grid-template-columns: repeat(auto-fit, minmax(11rem, 1fr)); gap: var(--s-6); min-height: 0; perspective: none; }\n  .tel__slide { grid-area: auto; animation: none !important; opacity: 1; filter: none; transform: none; }\n  .tel__controls, .tel__pause { display: none; }\n}\n\n@media print {\n  .hero__field, .vsl__scan, .vsl__unmute, .ticker { display: none; }\n  body { background: #fff; color: #000; }\n}\n\n<\/style>\n\n<script type=\"application\/ld+json\">\n{\n  \"@context\": \"https:\/\/schema.org\",\n  \"@type\": \"Person\",\n  \"name\": \"Jorge P\u00e9rez\",\n  \"alternateName\": \"JP Director\",\n  \"url\": \"https:\/\/jpdirector.net\/\",\n  \"jobTitle\": \"Especialista en Publicidad Digital\",\n  \"description\": \"Especialista en publicidad digital y estratega en tr\u00e1fico pago. Ayuda a empresas y emprendedores a generar clientes reales mediante campa\u00f1as de Facebook Ads y Google Ads.\",\n  \"sameAs\": [\n    \"https:\/\/www.facebook.com\/jpdirector\",\n    \"https:\/\/www.instagram.com\/jpdirector\/\",\n    \"https:\/\/www.tiktok.com\/@jpdirectorr\",\n    \"https:\/\/www.linkedin.com\/in\/jpdirector\/\"\n  ]\n}\n<\/script>\n\n\n\n\n\n\n<main id=\"main\">\n\n<!-- ============================================================\n     01. HERO \u2014 Sala de control\n     ============================================================ -->\n<section class=\"hero\" id=\"inicio\" aria-labelledby=\"hero-title\">\n\n  <div class=\"hero__field\" aria-hidden=\"true\">\n    <span class=\"hero__sweep\"><\/span>\n  <\/div>\n\n  <div class=\"wrap hero__grid\">\n\n    <div class=\"hero__copy\">\n      <p class=\"eyebrow\">[ Especialista en Ads \u00b7 Estados Unidos ]<\/p>\n\n      <h1 class=\"hero__title\" id=\"hero-title\">\n        Vende m\u00e1s con un experto en <em class=\"aurora-word\">publicidad digital<span class=\"aurora\" aria-hidden=\"true\"><i class=\"aurora__item\"><\/i><i class=\"aurora__item\"><\/i><i class=\"aurora__item\"><\/i><i class=\"aurora__item\"><\/i><\/span><\/em>\n      <\/h1>\n\n      <p class=\"hero__lead\">\n        Gestiono tus campa\u00f1as en Meta, Google, TikTok y ChatGPT. T\u00fa te enfocas en tu negocio,\n        yo me ocupo de tus anuncios.\n      <\/p>\n\n      <div class=\"hero__actions\">\n        <a class=\"btn btn--arrow\" href=\"https:\/\/jpdirector.net\/contact\/\"><span class=\"btn__arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" focusable=\"false\"><path d=\"M3.5 12h15\"><\/path><path d=\"M12.5 5.5 19 12l-6.5 6.5\"><\/path><\/svg><\/span>Agenda tu consulta<\/a>\n        <a class=\"btn btn--ghost\" href=\"https:\/\/jpdirector.net\/resultados-de-campanas\/\">Ver resultados<\/a>\n      <\/div>\n\n    <\/div>\n\n    <!-- Panel de video: encuadre tipo monitor de telemetr\u00eda -->\n    <figure class=\"vsl\">\n      <div class=\"vsl__frame\">\n        <span class=\"vsl__bracket vsl__bracket--tl\" aria-hidden=\"true\"><\/span>\n        <span class=\"vsl__bracket vsl__bracket--tr\" aria-hidden=\"true\"><\/span>\n        <span class=\"vsl__bracket vsl__bracket--bl\" aria-hidden=\"true\"><\/span>\n        <span class=\"vsl__bracket vsl__bracket--br\" aria-hidden=\"true\"><\/span>\n\n        <div class=\"vsl__screen\">\n          <!-- La URL va en data-src y no en src, y sin autoplay: el v\u00eddeo se\n               pide cuando la p\u00e1gina ya ha cargado, para que no compita con la\n               hoja de estilos, las fuentes ni el primer pintado. La capa de\n               sonido cubre el panel mientras tanto, as\u00ed que no se ve ning\u00fan\n               hueco. Opcional: a\u00f1adir poster=\"RUTA\" con el primer fotograma\n               (JPEG o WebP, <80 kb) para que asome tras la capa. -->\n          <video class=\"vsl__media\" id=\"vsl\" data-src=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/07\/VSL-2-1-1-1-1-1-1.mp4\" muted=\"\" loop=\"\" playsinline=\"\" preload=\"none\" width=\"1280\" height=\"720\" aria-label=\"C\u00f3mo trabajo tus campa\u00f1as, explicado por JP\"><\/video>\n\n          <button class=\"vsl__unmute\" id=\"vsl-unmute\" type=\"button\">\n            <span class=\"vsl__unmute__icon\" aria-hidden=\"true\">\n              <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\" focusable=\"false\">\n                <path d=\"M11 5 6.5 9H3v6h3.5L11 19z\"><\/path>\n                <line x1=\"16.5\" y1=\"9.5\" x2=\"21.5\" y2=\"14.5\"><\/line>\n                <line x1=\"21.5\" y1=\"9.5\" x2=\"16.5\" y2=\"14.5\"><\/line>\n              <\/svg>\n            <\/span>\n            <span class=\"vsl__unmute__text\">Click para activar el sonido<\/span>\n          <\/button>\n\n          <span class=\"vsl__scan\" aria-hidden=\"true\"><\/span>\n        <\/div>\n\n        <span class=\"vsl__rec mono\" aria-hidden=\"true\">\n          <i class=\"vsl__dot\"><\/i> VSL\n        <\/span>\n      <\/div>\n      <figcaption class=\"vsl__cap mono\">C\u00d3MO ES TRABAJAR TUS CAMPA\u00d1AS CON JP<\/figcaption>\n    <\/figure>\n\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     02. CINTA DE PLATAFORMAS\n     ============================================================ -->\n<section class=\"ticker\" aria-label=\"Plataformas publicitarias gestionadas\">\n  <div class=\"ticker__track\">\n    <ul class=\"ticker__list\">\n      <li>Meta Ads<\/li><li aria-hidden=\"true\" class=\"ticker__sep\">\/<\/li>\n      <li>Google Ads<\/li><li aria-hidden=\"true\" class=\"ticker__sep\">\/<\/li>\n      <li>TikTok Ads<\/li><li aria-hidden=\"true\" class=\"ticker__sep\">\/<\/li>\n      <li>Instagram Ads<\/li><li aria-hidden=\"true\" class=\"ticker__sep\">\/<\/li>\n      <li>Facebook Ads<\/li><li aria-hidden=\"true\" class=\"ticker__sep\">\/<\/li>\n      <li>ChatGPT Ads<\/li><li aria-hidden=\"true\" class=\"ticker__sep\">\/<\/li>\n    <\/ul>\n    <ul class=\"ticker__list\" aria-hidden=\"true\">\n      <li>Meta Ads<\/li><li class=\"ticker__sep\">\/<\/li>\n      <li>Google Ads<\/li><li class=\"ticker__sep\">\/<\/li>\n      <li>TikTok Ads<\/li><li class=\"ticker__sep\">\/<\/li>\n      <li>Instagram Ads<\/li><li class=\"ticker__sep\">\/<\/li>\n      <li>Facebook Ads<\/li><li class=\"ticker__sep\">\/<\/li>\n      <li>ChatGPT Ads<\/li><li class=\"ticker__sep\">\/<\/li>\n    <\/ul>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     03. TELEMETR\u00cdA \u2014 cifras\n     ============================================================ -->\n<section class=\"tel\" aria-labelledby=\"tel-title\">\n  <div class=\"wrap\">\n    <h2 class=\"vh\" id=\"tel-title\">Cifras de JP Director<\/h2>\n\n    <div class=\"tel__carousel\">\n\n      <!-- El interruptor precede al mazo: las reglas de pausa dependen de ese orden -->\n      <input type=\"checkbox\" id=\"tel-pause\" class=\"tel__pause vh\">\n\n      <ul class=\"tel__deck\">\n        <li class=\"tel__slide\">\n          <p class=\"tel__num\"><span class=\"tel__plus\">+<\/span>220<\/p>\n          <p class=\"tel__label mono\">Millones USD en ventas generadas para clientes<\/p>\n        <\/li>\n        <li class=\"tel__slide\">\n          <p class=\"tel__num\"><span class=\"tel__plus\">+<\/span>6<\/p>\n          <p class=\"tel__label mono\">A\u00f1os en publicidad digital<\/p>\n        <\/li>\n        <li class=\"tel__slide\">\n          <p class=\"tel__num\"><span class=\"tel__plus\">+<\/span>1.000<\/p>\n          <p class=\"tel__label mono\">Estudiantes formados<\/p>\n        <\/li>\n      <\/ul>\n\n      <div class=\"tel__controls\">\n        <div class=\"tel__dots\" aria-hidden=\"true\"><i><\/i><i><\/i><i><\/i><\/div>\n        <label for=\"tel-pause\" class=\"tel__pausebtn mono\"><\/label>\n      <\/div>\n\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     04. EL SISTEMA \u2014 componente firma: del ruido al orden\n     ============================================================ -->\n<section class=\"sys\" id=\"sistema\" aria-labelledby=\"sys-title\">\n  <div class=\"wrap\">\n\n    <header class=\"sys__head\">\n      <p class=\"eyebrow\">[ El sistema ]<\/p>\n      <h2 class=\"sys__title\" id=\"sys-title\">\n        Mereces tener un <em class=\"aurora-word\">negocio exitoso<span class=\"aurora aurora--b\" aria-hidden=\"true\"><i class=\"aurora__item\"><\/i><i class=\"aurora__item\"><\/i><i class=\"aurora__item\"><\/i><i class=\"aurora__item\"><\/i><\/span><\/em>\n      <\/h2>\n      <p class=\"sys__lead\">\n        Cada negocio parte de un contexto distinto. Algunos nunca hab\u00edan invertido en\n        publicidad digital, otros ya ten\u00edan campa\u00f1as activas pero sin estructura ni control\n        real de resultados. El trabajo empieza ordenando, midiendo y sistematizando, antes\n        de escalar.\n      <\/p>\n    <\/header>\n\n    <p class=\"sys__status mono\" aria-hidden=\"true\">\n      <i class=\"sys__led\"><\/i> Alineando elementos del sistema\n    <\/p>\n\n    <ol class=\"sys__grid\">\n      <li class=\"sys__cell\" style=\"--tx:-13vw; --ty:5rem;  --rot:-9deg\">\n        <span class=\"sys__idx mono\">01<\/span>\n        <h3 class=\"sys__name\">Objetivos claros<\/h3>\n      <\/li>\n      <li class=\"sys__cell\" style=\"--tx:8vw;   --ty:-5rem; --rot:7deg\">\n        <span class=\"sys__idx mono\">02<\/span>\n        <h3 class=\"sys__name\">Embudos definidos<\/h3>\n      <\/li>\n      <li class=\"sys__cell\" style=\"--tx:-7vw;  --ty:7rem;  --rot:10deg\">\n        <span class=\"sys__idx mono\">03<\/span>\n        <h3 class=\"sys__name\">Optimizaci\u00f3n continua<\/h3>\n      <\/li>\n      <li class=\"sys__cell\" style=\"--tx:12vw;  --ty:-4rem; --rot:-6deg\">\n        <span class=\"sys__idx mono\">04<\/span>\n        <h3 class=\"sys__name\">M\u00e9tricas accionables<\/h3>\n      <\/li>\n    <\/ol>\n\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     05. ENFOQUE \u2014 sat\u00e9lite\n     ============================================================ -->\n<section class=\"focus\" id=\"enfoque\" aria-labelledby=\"focus-title\">\n  <div class=\"wrap focus__grid\">\n\n    <div class=\"focus__art\">\n      <div class=\"orbit\" aria-hidden=\"true\">\n        <span class=\"orbit__ring orbit__ring--1\"><\/span>\n        <span class=\"orbit__ring orbit__ring--2\"><\/span>\n      <\/div>\n      <!-- Si conoces el ancho y alto reales del archivo, a\u00f1\u00e1delos como\n           width y height: el navegador reservar\u00e1 el espacio exacto. -->\n      <img class=\"focus__img\" src=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/01\/Diseno-sin-titulo-2.png\" alt=\"\" loading=\"lazy\" decoding=\"async\">\n    <\/div>\n\n    <div class=\"focus__copy\">\n      <p class=\"eyebrow\">[ Enfoque ]<\/p>\n      <h2 class=\"focus__title\" id=\"focus-title\">\n        Estrategias inteligentes, datos claros y <em class=\"aurora-word\">decisiones seguras<span class=\"aurora aurora--c\" aria-hidden=\"true\"><i class=\"aurora__item\"><\/i><i class=\"aurora__item\"><\/i><i class=\"aurora__item\"><\/i><i class=\"aurora__item\"><\/i><\/span><\/em>\n      <\/h2>\n      <p class=\"focus__lead\">\n        Trabajo contigo bajo total confidencialidad, analizando tus m\u00e9tricas con precisi\u00f3n\n        para optimizar cada d\u00f3lar invertido y construir campa\u00f1as estables, seguras y rentables.\n      <\/p>\n\n      <dl class=\"focus__list\">\n        <div class=\"focus__row\">\n          <dt>Estrategias personalizadas<\/dt>\n          <dd>Planes dise\u00f1ados seg\u00fan tu mercado, presupuesto y objetivos.<\/dd>\n        <\/div>\n        <div class=\"focus__row\">\n          <dt>Optimizaci\u00f3n continua<\/dt>\n          <dd>An\u00e1lisis y ajustes basados en datos reales, no suposiciones.<\/dd>\n        <\/div>\n        <div class=\"focus__row\">\n          <dt>Campa\u00f1as que escalan<\/dt>\n          <dd>Sistemas publicitarios creados para crecer sin perder rentabilidad.<\/dd>\n        <\/div>\n      <\/dl>\n\n      <a class=\"btn btn--arrow\" href=\"https:\/\/jpdirector.net\/contact\/\"><span class=\"btn__arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" focusable=\"false\"><path d=\"M3.5 12h15\"><\/path><path d=\"M12.5 5.5 19 12l-6.5 6.5\"><\/path><\/svg><\/span>Agenda ahora<\/a>\n    <\/div>\n\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     06. SERVICIOS \u2014 tarjetas con volteo\n     ============================================================ -->\n<section class=\"svcs\" id=\"servicios\" aria-labelledby=\"svcs-title\">\n\n  <!-- Recorre el lateral al ritmo del scroll de esta secci\u00f3n. Decorativo. -->\n  <div class=\"rocket\" aria-hidden=\"true\">\n    <div class=\"rocket__ship\">\n      <svg viewBox=\"0 0 48 120\" focusable=\"false\">\n        <path class=\"rocket__flame\" d=\"M24 2c5 10 8.5 18 8.5 23 0 5-3.9 9-8.5 9s-8.5-4-8.5-9c0-5 3.5-13 8.5-23z\"><\/path>\n        <path class=\"rocket__fin\" d=\"M12 40 2 58l10 8z\"><\/path>\n        <path class=\"rocket__fin\" d=\"M36 40l10 18-10 8z\"><\/path>\n        <path class=\"rocket__hull\" d=\"M24 116c7-16 14-34 14-54 0-16-5-26-8-30H18c-3 4-8 14-8 30 0 20 7 38 14 54z\"><\/path>\n        <circle class=\"rocket__glass\" cx=\"24\" cy=\"58\" r=\"6\"><\/circle>\n        <circle class=\"rocket__pupil\" cx=\"24\" cy=\"58\" r=\"2.4\"><\/circle>\n      <\/svg>\n    <\/div>\n  <\/div>\n\n  <div class=\"wrap\">\n\n    <header class=\"sec__head\">\n      <p class=\"eyebrow\">[ Servicios ]<\/p>\n      <h2 class=\"sec__title\" id=\"svcs-title\">\n        Descubre c\u00f3mo puedo <em>ayudarte a crecer<\/em>\n      <\/h2>\n    <\/header>\n\n    <div class=\"svcs__row\">\n\n      <article class=\"svc\">\n\n        <!-- Casilla oculta que guarda el estado, m\u00e1s una etiqueta que cubre la\n             tarjeta. En t\u00e1ctil el toque va a la etiqueta, que es lo que los\n             navegadores m\u00f3viles activan de forma fiable. -->\n        <input type=\"checkbox\" id=\"svc-01\" class=\"svc__switch\" aria-label=\"Ver detalle de Ser el encargado\">\n        <label for=\"svc-01\" class=\"svc__tap\"><\/label>\n\n        <div class=\"svc__inner\">\n\n          <div class=\"svc__face svc__face--front\">\n            <span class=\"svc__flip\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" focusable=\"false\"><path d=\"M4 8.5a7.5 7.5 0 0 1 12.8-3.3L20 8\"><\/path><path d=\"M20 4v4h-4\"><\/path><path d=\"M20 15.5a7.5 7.5 0 0 1-12.8 3.3L4 16\"><\/path><path d=\"M4 20v-4h4\"><\/path><\/svg><\/span>\n            <span class=\"svc__idx mono\">Servicio 01<\/span>\n            <h3 class=\"svc__title\">Ser el encargado<\/h3>\n            <span class=\"svc__hint mono\" aria-hidden=\"true\">Ver detalle<\/span>\n          <\/div>\n\n          <div class=\"svc__face svc__face--back\">\n            <label for=\"svc-01\" class=\"svc__close\" aria-label=\"Volver\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" focusable=\"false\"><path d=\"M6 6l12 12M18 6 6 18\"><\/path><\/svg><\/label>\n            <span class=\"svc__idx mono\">Servicio 01<\/span>\n            <p class=\"svc__text\">Me ocupo completamente de tu publicidad, estrategia, campa\u00f1as y optimizaci\u00f3n, para que tu negocio crezca sin que t\u00fa te preocupes por nada.<\/p>\n            <a class=\"link svc__link\" href=\"https:\/\/jpdirector.net\/ser-el-encargado\/\">M\u00e1s informaci\u00f3n<\/a>\n          <\/div>\n\n        <\/div>\n      <\/article>\n\n      <article class=\"svc\">\n\n        <!-- Casilla oculta que guarda el estado, m\u00e1s una etiqueta que cubre la\n             tarjeta. En t\u00e1ctil el toque va a la etiqueta, que es lo que los\n             navegadores m\u00f3viles activan de forma fiable. -->\n        <input type=\"checkbox\" id=\"svc-02\" class=\"svc__switch\" aria-label=\"Ver detalle de Asesor\u00edas 1:1\">\n        <label for=\"svc-02\" class=\"svc__tap\"><\/label>\n\n        <div class=\"svc__inner\">\n\n          <div class=\"svc__face svc__face--front\">\n            <span class=\"svc__flip\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" focusable=\"false\"><path d=\"M4 8.5a7.5 7.5 0 0 1 12.8-3.3L20 8\"><\/path><path d=\"M20 4v4h-4\"><\/path><path d=\"M20 15.5a7.5 7.5 0 0 1-12.8 3.3L4 16\"><\/path><path d=\"M4 20v-4h4\"><\/path><\/svg><\/span>\n            <span class=\"svc__idx mono\">Servicio 02<\/span>\n            <h3 class=\"svc__title\">Asesor\u00edas 1:1<\/h3>\n            <span class=\"svc__hint mono\" aria-hidden=\"true\">Ver detalle<\/span>\n          <\/div>\n\n          <div class=\"svc__face svc__face--back\">\n            <label for=\"svc-02\" class=\"svc__close\" aria-label=\"Volver\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" focusable=\"false\"><path d=\"M6 6l12 12M18 6 6 18\"><\/path><\/svg><\/label>\n            <span class=\"svc__idx mono\">Servicio 02<\/span>\n            <p class=\"svc__text\">Llamadas personalizadas donde revisamos tus ads para obtener claridad y mejorar resultados.<\/p>\n            <a class=\"link svc__link\" href=\"https:\/\/jpdirector.net\/asesoria-1-a-1\/\">M\u00e1s informaci\u00f3n<\/a>\n          <\/div>\n\n        <\/div>\n      <\/article>\n\n      <article class=\"svc\">\n\n        <!-- Casilla oculta que guarda el estado, m\u00e1s una etiqueta que cubre la\n             tarjeta. En t\u00e1ctil el toque va a la etiqueta, que es lo que los\n             navegadores m\u00f3viles activan de forma fiable. -->\n        <input type=\"checkbox\" id=\"svc-03\" class=\"svc__switch\" aria-label=\"Ver detalle de Clon IA\">\n        <label for=\"svc-03\" class=\"svc__tap\"><\/label>\n\n        <div class=\"svc__inner\">\n\n          <div class=\"svc__face svc__face--front\">\n            <span class=\"svc__flip\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" focusable=\"false\"><path d=\"M4 8.5a7.5 7.5 0 0 1 12.8-3.3L20 8\"><\/path><path d=\"M20 4v4h-4\"><\/path><path d=\"M20 15.5a7.5 7.5 0 0 1-12.8 3.3L4 16\"><\/path><path d=\"M4 20v-4h4\"><\/path><\/svg><\/span>\n            <span class=\"svc__idx mono\">Servicio 03<\/span>\n            <h3 class=\"svc__title\">Clon IA<\/h3>\n            <span class=\"svc__hint mono\" aria-hidden=\"true\">Ver detalle<\/span>\n          <\/div>\n\n          <div class=\"svc__face svc__face--back\">\n            <label for=\"svc-03\" class=\"svc__close\" aria-label=\"Volver\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" focusable=\"false\"><path d=\"M6 6l12 12M18 6 6 18\"><\/path><\/svg><\/label>\n            <span class=\"svc__idx mono\">Servicio 03<\/span>\n            <p class=\"svc__text\">Anuncios protagonizados por rostros de personas reales recreados con inteligencia artificial, para producir variaciones sin volver a grabar.<\/p>\n            <a class=\"link svc__link\" href=\"https:\/\/jpdirector.net\/clon-ia\/\">M\u00e1s informaci\u00f3n<\/a>\n          <\/div>\n\n        <\/div>\n      <\/article>\n\n      <article class=\"svc\">\n\n        <!-- Casilla oculta que guarda el estado, m\u00e1s una etiqueta que cubre la\n             tarjeta. En t\u00e1ctil el toque va a la etiqueta, que es lo que los\n             navegadores m\u00f3viles activan de forma fiable. -->\n        <input type=\"checkbox\" id=\"svc-04\" class=\"svc__switch\" aria-label=\"Ver detalle de Mentor\u00eda Intensiva\">\n        <label for=\"svc-04\" class=\"svc__tap\"><\/label>\n\n        <div class=\"svc__inner\">\n\n          <div class=\"svc__face svc__face--front\">\n            <span class=\"svc__flip\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" focusable=\"false\"><path d=\"M4 8.5a7.5 7.5 0 0 1 12.8-3.3L20 8\"><\/path><path d=\"M20 4v4h-4\"><\/path><path d=\"M20 15.5a7.5 7.5 0 0 1-12.8 3.3L4 16\"><\/path><path d=\"M4 20v-4h4\"><\/path><\/svg><\/span>\n            <span class=\"svc__idx mono\">Servicio 04<\/span>\n            <h3 class=\"svc__title\">Mentor\u00eda Intensiva<span class=\"svc__meta mono\">2 meses<\/span><\/h3>\n            <span class=\"svc__hint mono\" aria-hidden=\"true\">Ver detalle<\/span>\n          <\/div>\n\n          <div class=\"svc__face svc__face--back\">\n            <label for=\"svc-04\" class=\"svc__close\" aria-label=\"Volver\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" focusable=\"false\"><path d=\"M6 6l12 12M18 6 6 18\"><\/path><\/svg><\/label>\n            <span class=\"svc__idx mono\">Servicio 04<\/span>\n            <p class=\"svc__text\">Acompa\u00f1amiento mano a mano para aprender, crear, lanzar y optimizar publicidad desde cero hasta un nivel profesional.<\/p>\n            <a class=\"link svc__link\" href=\"https:\/\/jpdirector.net\/mentoria-intensiva\/\">M\u00e1s informaci\u00f3n<\/a>\n          <\/div>\n\n        <\/div>\n      <\/article>\n\n      <article class=\"svc\">\n\n        <!-- Casilla oculta que guarda el estado, m\u00e1s una etiqueta que cubre la\n             tarjeta. En t\u00e1ctil el toque va a la etiqueta, que es lo que los\n             navegadores m\u00f3viles activan de forma fiable. -->\n        <input type=\"checkbox\" id=\"svc-05\" class=\"svc__switch\" aria-label=\"Ver detalle de Conferencias\">\n        <label for=\"svc-05\" class=\"svc__tap\"><\/label>\n\n        <div class=\"svc__inner\">\n\n          <div class=\"svc__face svc__face--front\">\n            <span class=\"svc__flip\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.7\" stroke-linecap=\"round\" stroke-linejoin=\"round\" focusable=\"false\"><path d=\"M4 8.5a7.5 7.5 0 0 1 12.8-3.3L20 8\"><\/path><path d=\"M20 4v4h-4\"><\/path><path d=\"M20 15.5a7.5 7.5 0 0 1-12.8 3.3L4 16\"><\/path><path d=\"M4 20v-4h4\"><\/path><\/svg><\/span>\n            <span class=\"svc__idx mono\">Servicio 05<\/span>\n            <h3 class=\"svc__title\">Conferencias<\/h3>\n            <span class=\"svc__hint mono\" aria-hidden=\"true\">Ver detalle<\/span>\n          <\/div>\n\n          <div class=\"svc__face svc__face--back\">\n            <label for=\"svc-05\" class=\"svc__close\" aria-label=\"Volver\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" focusable=\"false\"><path d=\"M6 6l12 12M18 6 6 18\"><\/path><\/svg><\/label>\n            <span class=\"svc__idx mono\">Servicio 05<\/span>\n            <p class=\"svc__text\">Charlas din\u00e1micas y personalizadas sobre publicidad y crecimiento que ense\u00f1an, inspiran y entregan herramientas listas para aplicar.<\/p>\n            <a class=\"link svc__link\" href=\"https:\/\/jpdirector.net\/conferencias\/\">M\u00e1s informaci\u00f3n<\/a>\n          <\/div>\n\n        <\/div>\n      <\/article>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     08. CONFIDENCIALIDAD \u2014 ruptura de fondo\n     ============================================================ -->\n<section class=\"conf\" aria-labelledby=\"conf-title\">\n  <div class=\"wrap conf__grid\">\n\n    <div class=\"conf__copy\">\n      <p class=\"eyebrow eyebrow--dark\">[ Aviso de confidencialidad ]<\/p>\n      <h2 class=\"conf__title\" id=\"conf-title\">\n        Muchos clientes prefieren mantener su identidad <em>en reserva<\/em>\n      <\/h2>\n      <p class=\"conf__lead\">\n        Para nosotros eso no es una limitaci\u00f3n, sino una muestra de la confianza que\n        depositan en nuestro trabajo. Por eso presentamos resultados por categor\u00eda y\n        no por nombre.\n      <\/p>\n      <a class=\"btn btn--dark\" href=\"https:\/\/jpdirector.net\/resultados-de-campanas\/\">Ver resultados por categor\u00eda<\/a>\n    <\/div>\n\n    <ul class=\"conf__list\" aria-hidden=\"true\">\n      <li><span class=\"redact\" style=\"--w:74%\"><\/span><\/li>\n      <li><span class=\"redact\" style=\"--w:52%\"><\/span><\/li>\n      <li><span class=\"redact\" style=\"--w:88%\"><\/span><\/li>\n      <li><span class=\"redact\" style=\"--w:41%\"><\/span><\/li>\n      <li><span class=\"redact\" style=\"--w:66%\"><\/span><\/li>\n      <li><span class=\"redact\" style=\"--w:79%\"><\/span><\/li>\n      <li><span class=\"redact\" style=\"--w:35%\"><\/span><\/li>\n      <li><span class=\"redact\" style=\"--w:60%\"><\/span><\/li>\n    <\/ul>\n\n  <\/div>\n<\/section>\n\n\n\n\n\n<!-- ============================================================\n     11. TESTIMONIOS\n     ============================================================ -->\n<section class=\"test\" aria-labelledby=\"test-title\">\n  <div class=\"wrap\">\n\n    <header class=\"test__head\">\n      <p class=\"test__stars\" aria-label=\"5 de 5 estrellas\"><svg class=\"test__star\" viewBox=\"0 0 24 24\" focusable=\"false\"><path d=\"M12 2.6l2.9 5.9 6.5.95-4.7 4.6 1.1 6.45L12 17.45 6.2 20.5l1.1-6.45-4.7-4.6 6.5-.95z\"><\/path><\/svg><svg class=\"test__star\" viewBox=\"0 0 24 24\" focusable=\"false\"><path d=\"M12 2.6l2.9 5.9 6.5.95-4.7 4.6 1.1 6.45L12 17.45 6.2 20.5l1.1-6.45-4.7-4.6 6.5-.95z\"><\/path><\/svg><svg class=\"test__star\" viewBox=\"0 0 24 24\" focusable=\"false\"><path d=\"M12 2.6l2.9 5.9 6.5.95-4.7 4.6 1.1 6.45L12 17.45 6.2 20.5l1.1-6.45-4.7-4.6 6.5-.95z\"><\/path><\/svg><svg class=\"test__star\" viewBox=\"0 0 24 24\" focusable=\"false\"><path d=\"M12 2.6l2.9 5.9 6.5.95-4.7 4.6 1.1 6.45L12 17.45 6.2 20.5l1.1-6.45-4.7-4.6 6.5-.95z\"><\/path><\/svg><svg class=\"test__star\" viewBox=\"0 0 24 24\" focusable=\"false\"><path d=\"M12 2.6l2.9 5.9 6.5.95-4.7 4.6 1.1 6.45L12 17.45 6.2 20.5l1.1-6.45-4.7-4.6 6.5-.95z\"><\/path><\/svg><\/p>\n      <h2 class=\"test__title\" id=\"test-title\">Google Reviews<\/h2>\n    <\/header>\n    <div class=\"test__widget\">\n      <!-- loading=\"lazy\": el iframe est\u00e1 bajo la primera pantalla, as\u00ed que su\n           documento de terceros no se descarga hasta que se acerca. El script\n           que lo dimensiona se carga con defer al final del documento. -->\n      <iframe class=\"lc_reviews_widget\" src=\"https:\/\/reputationhub.site\/reputation\/widgets\/review_widget\/powHyccYpXJbi41R1FZy\" title=\"Rese\u00f1as de clientes de JP Director\" loading=\"lazy\" frameborder=\"0\" scrolling=\"no\" style=\"min-width: 100%; width: 100%;\"><\/iframe>\n    <\/div>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     12. TENDENCIA AHORA \u2014 blog\n     ============================================================ -->\n<section class=\"blog\" id=\"blog\" aria-labelledby=\"blog-title\">\n  <div class=\"wrap\">\n\n    <header class=\"sec__head sec__head--split\">\n      <div>\n        <p class=\"eyebrow\">[ Tendencia ahora ]<\/p>\n        <h2 class=\"sec__title\" id=\"blog-title\">Lo que est\u00e1 cambiando en Ads<\/h2>\n      <\/div>\n      <a class=\"link\" href=\"https:\/\/jpdirector.net\/blog\/\">Ver todo el blog<\/a>\n    <\/header>\n\n    <ul class=\"blog__list\">\n\n      <li class=\"blog__item\">\n        <a class=\"blog__link\" href=\"https:\/\/jpdirector.net\/uncategorized\/chatgpt-ads-se-actualiza-audiencias-personalizadas-borradores-de-anuncios-y-expansion-a-japon-y-corea-del-sur\/\">\n          <span class=\"blog__idx mono\">01<\/span>\n          <h3 class=\"blog__title\">ChatGPT Ads se actualiza: audiencias personalizadas, borradores de anuncios y expansi\u00f3n a Jap\u00f3n y Corea del Sur<\/h3>\n          <img class=\"blog__thumb\" src=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/07\/ChatGPT-Image-10-jul-2026-12_21_21-150x150.png\" alt=\"\" width=\"150\" height=\"150\" loading=\"lazy\" decoding=\"async\">\n          <span class=\"blog__go mono\" aria-hidden=\"true\">Leer<\/span>\n        <\/a>\n      <\/li>\n\n      <li class=\"blog__item\">\n        <a class=\"blog__link\" href=\"https:\/\/jpdirector.net\/uncategorized\/anuncios-en-video-en-vivo-en-facebook-la-novedad-de-la-publicidad-digital-2026\/\">\n          <span class=\"blog__idx mono\">02<\/span>\n          <h3 class=\"blog__title\">Anuncios en video en vivo en Facebook: la novedad de la publicidad digital 2026<\/h3>\n          <img class=\"blog__thumb\" src=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2020\/01\/Diseno-sin-titulo-28-150x150.png\" alt=\"\" width=\"150\" height=\"150\" loading=\"lazy\" decoding=\"async\">\n          <span class=\"blog__go mono\" aria-hidden=\"true\">Leer<\/span>\n        <\/a>\n      <\/li>\n\n      <li class=\"blog__item\">\n        <a class=\"blog__link\" href=\"https:\/\/jpdirector.net\/uncategorized\/empresas-de-marketing-digital-que-hace-que-una-campana-sea-rentable-en-2026\/\">\n          <span class=\"blog__idx mono\">03<\/span>\n          <h3 class=\"blog__title\">Empresas de marketing digital: qu\u00e9 hace que una campa\u00f1a sea rentable en 2026<\/h3>\n          <img class=\"blog__thumb\" src=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/03\/Diseno-sin-titulo-39-150x150.png\" alt=\"\" width=\"150\" height=\"150\" loading=\"lazy\" decoding=\"async\">\n          <span class=\"blog__go mono\" aria-hidden=\"true\">Leer<\/span>\n        <\/a>\n      <\/li>\n\n      <li class=\"blog__item\">\n        <a class=\"blog__link\" href=\"https:\/\/jpdirector.net\/uncategorized\/optimizacion-de-campanas\/\">\n          <span class=\"blog__idx mono\">04<\/span>\n          <h3 class=\"blog__title\">\u00bfTu agencia de marketing est\u00e1 optimizando tus campa\u00f1as o solo administrando presupuesto?<\/h3>\n          <img class=\"blog__thumb\" src=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/03\/Diseno-sin-titulo-43-150x150.png\" alt=\"\" width=\"150\" height=\"150\" loading=\"lazy\" decoding=\"async\">\n          <span class=\"blog__go mono\" aria-hidden=\"true\">Leer<\/span>\n        <\/a>\n      <\/li>\n\n    <\/ul>\n  <\/div>\n<\/section>\n\n<!-- ============================================================\n     13. CTA FINAL\n     ============================================================ -->\n<section class=\"end\" id=\"contacto\" aria-labelledby=\"end-title\">\n  <div class=\"wrap end__inner\">\n    <p class=\"eyebrow\">[ Siguiente paso ]<\/p>\n    <h2 class=\"end__title\" id=\"end-title\">\n      Transforma tu contenido <em>en leads<\/em>\n    <\/h2>\n    <p class=\"end__lead\">\n      Mis servicios est\u00e1n dise\u00f1ados para que entiendas cada paso, tomes decisiones\n      inteligentes y veas resultados medibles.\n    <\/p>\n    <a class=\"btn btn--lg btn--arrow\" href=\"https:\/\/jpdirector.net\/contact\/\"><span class=\"btn__arrow\" aria-hidden=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" focusable=\"false\"><path d=\"M3.5 12h15\"><\/path><path d=\"M12.5 5.5 19 12l-6.5 6.5\"><\/path><\/svg><\/span>Agenda tu consulta<\/a>\n    <p class=\"end__note mono\">Respuesta directa del equipo de JP<\/p>\n  <\/div>\n<\/section>\n\n<\/main>\n\n<!-- ============================================================\n     Scripts, los dos al final del documento.\n     ============================================================ -->\n\n<!-- 1. El VSL. Activar sonido, rebobinar y reproducir son estados del elemento\n     <video> que CSS no puede tocar; ahora tambi\u00e9n decide CU\u00c1NDO se descarga. -->\n<script>\n(function () {\n  var v = document.getElementById('vsl');\n  var b = document.getElementById('vsl-unmute');\n  if (!v || !b) return;\n\n  var etiqueta = b.querySelector('.vsl__unmute__text');\n  var reducido = window.matchMedia &&\n                 window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  var ahorroDatos = navigator.connection && navigator.connection.saveData;\n\n  \/\/ La URL vive en data-src, as\u00ed que hasta que no se llama a esto el navegador\n  \/\/ no pide un solo byte del v\u00eddeo.\n  function cargar() {\n    if (!v.src && v.dataset.src) { v.src = v.dataset.src; }\n  }\n\n  function arrancar() {\n    cargar();\n    var p = v.play();\n    if (p && p.catch) {\n      p.catch(function () {\n        \/\/ Si el navegador bloquea incluso el autoplay silenciado, el bot\u00f3n lo asume\n        b.classList.add('is-blocked');\n        etiqueta.textContent = 'Click para reproducir con sonido';\n      });\n    }\n  }\n\n  if (reducido || ahorroDatos) {\n    \/\/ Con \"reducir movimiento\" no arranca solo, y con ahorro de datos no se\n    \/\/ gastan megas sin permiso. En ambos casos lo arranca el bot\u00f3n.\n    etiqueta.textContent = 'Click para reproducir con sonido';\n  } else if (document.readyState === 'complete') {\n    arrancar();\n  } else {\n    \/\/ Despu\u00e9s de load: el v\u00eddeo deja de competir con el CSS, las fuentes y el\n    \/\/ primer pintado, que es lo que mide Google como velocidad percibida.\n    window.addEventListener('load', arrancar, { once: true });\n  }\n\n  b.addEventListener('click', function () {\n    cargar();\n    v.loop = false;\n    v.muted = false;\n    v.volume = 1;\n    \/\/ currentTime solo se puede fijar cuando ya hay metadatos: antes de eso\n    \/\/ algunos navegadores lanzan InvalidStateError.\n    if (v.readyState >= 1) { v.currentTime = 0; }\n    v.controls = true;\n    var q = v.play();\n    if (q && q.catch) { q.catch(function () {}); }\n    b.hidden = true;\n  });\n})();\n<\/script>\n\n<!-- 2. Widget de rese\u00f1as. Antes estaba en medio del <body> y sin defer, as\u00ed que\n     deten\u00eda el an\u00e1lisis del HTML y con \u00e9l el pintado de todo lo que ven\u00eda\n     despu\u00e9s: blog y CTA final incluidos. Con defer se ejecuta cuando el\n     documento ya est\u00e1 analizado, momento en el que su iframe ya existe. -->\n<script src=\"https:\/\/reputationhub.site\/reputation\/assets\/review-widget.js\" defer=\"\"><\/script>\n\n\n\n<meta charset=\"UTF-8\">\n<meta name=\"viewport\" content=\"width=device-width,initial-scale=1.0\">\n<title>JP Director \u2014 Clones Digitales<\/title>\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=Sora:ital,wght@0,400;0,600;0,700;0,800;1,400;1,700&amp;family=Manrope:wght@400;500;600;700&amp;display=swap\" rel=\"stylesheet\">\n<style>\n\n\/* \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\n   PANEL 4 \u2014 Clones Digitales\n   All styles scoped to .panel4 \u2014 zero global CSS\n   \u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 *\/\n\n.panel4 {\n  --accent: #3A83F6;\n  --accent-glow: rgba(58,131,246,0.35);\n  --bg: #e8eaed;\n  --fg: #111113;\n  --muted: #5a6272;\n  --card-radius: 12px;\n  --thumb-radius: 10px;\n\n  background: linear-gradient(180deg, #d8dce3 0%, #eaecef 30%, #f4f5f7 60%, #ffffff 100%);\n  color: var(--fg);\n  font-family: 'Manrope', sans-serif;\n  -webkit-font-smoothing: antialiased;\n  position: relative;\n  overflow: hidden;\n}\n\n.panel4 *, .panel4 *::before, .panel4 *::after {\n  box-sizing: border-box;\n  margin: 0;\n  padding: 0;\n}\n\n\/* \u2500\u2500 INNER \u2500\u2500 *\/\n.panel4 .p4-inner {\n  width: 100%;\n  max-width: 480px;\n  margin: 0 auto;\n  padding: 52px 20px 60px;\n}\n\n\/* \u2500\u2500 HEADLINE \u2500\u2500 *\/\n.panel4 .p4-title {\n  font-family: 'Sora', sans-serif;\n  font-weight: 800;\n  font-size: clamp(34px, 9vw, 52px);\n  line-height: 1.05;\n  letter-spacing: -0.025em;\n  text-align: center;\n  color: var(--fg);\n  margin-bottom: 10px;\n}\n.panel4 .p4-title .p4-blue { color: var(--accent); }\n\n\/* \u2500\u2500 SUBTITLE \u2500\u2500 *\/\n.panel4 .p4-sub {\n  font-family: 'Sora', sans-serif;\n  font-weight: 600;\n  font-size: clamp(17px, 4.5vw, 22px);\n  text-align: center;\n  color: var(--fg);\n  margin-bottom: 16px;\n  line-height: 1.3;\n}\n.panel4 .p4-sub .p4-blue { color: var(--accent); }\n\n\/* \u2500\u2500 DESCRIPTION \u2500\u2500 *\/\n.panel4 .p4-desc {\n  font-size: clamp(13px, 3.2vw, 15px);\n  line-height: 1.6;\n  color: var(--muted);\n  text-align: center;\n  max-width: 360px;\n  margin: 0 auto 32px;\n}\n.panel4 .p4-desc strong { color: var(--fg); font-weight: 700; }\n\n\/* \u2500\u2500 THUMBNAIL GRID \u2500\u2500 *\/\n.panel4 .p4-grid {\n  display: flex;\n  flex-direction: column;\n  gap: 8px;\n  margin-bottom: 24px;\n}\n.panel4 .p4-row {\n  display: flex;\n  gap: 8px;\n  justify-content: center;\n}\n\/* Mobile: row1 = 3 items, row2 = 2 items *\/\n.panel4 .p4-row-1 { \/* 3 cols *\/ }\n.panel4 .p4-row-2 { \/* 2 cols, centered *\/ }\n\n.panel4 .p4-thumb {\n  position: relative;\n  flex: 0 0 calc((100% - 16px) \/ 3);  \/* 3 items with 2 gaps *\/\n  aspect-ratio: 9 \/ 16;\n  border-radius: var(--thumb-radius);\n  overflow: hidden;\n  cursor: pointer;\n  background: #1a1b20;\n  transition: transform 300ms ease, opacity 300ms ease, box-shadow 300ms ease;\n  opacity: 0.78;\n  transform: scale(1);\n}\n\/* 2nd row: 2 items each same width as above *\/\n.panel4 .p4-row-2 .p4-thumb {\n  flex: 0 0 calc((100% - 16px) \/ 3);\n}\n.panel4 .p4-thumb img {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  display: block;\n  pointer-events: none;\n}\n\n\/* ACTIVE thumbnail state *\/\n.panel4 .p4-thumb.p4-active {\n  opacity: 1;\n  transform: scale(1.05);\n  box-shadow:\n    0 0 0 2.5px var(--accent),\n    0 6px 24px rgba(58,131,246,0.35);\n  z-index: 2;\n}\n\n\/* Filename label on thumbnail *\/\n.panel4 .p4-thumb-label {\n  position: absolute;\n  bottom: 6px; left: 6px;\n  background: rgba(0,0,0,0.55);\n  backdrop-filter: blur(4px);\n  color: #fff;\n  font-size: 8px;\n  font-weight: 600;\n  padding: 2px 6px;\n  border-radius: 4px;\n  letter-spacing: 0.03em;\n  pointer-events: none;\n}\n\n\/* \u2500\u2500 VIRTUAL CURSOR \u2500\u2500 *\/\n.panel4 .p4-cursor {\n  position: fixed;\n  pointer-events: none;\n  z-index: 9999;\n  transition: left 500ms cubic-bezier(0.4, 0, 0.2, 1),\n              top  500ms cubic-bezier(0.4, 0, 0.2, 1);\n  \/* SVG cursor \u2014 hand pointer style *\/\n  width: 28px;\n  height: 36px;\n  display: none; \/* shown by JS when ready *\/\n}\n.panel4 .p4-cursor svg {\n  width: 28px;\n  height: 36px;\n  filter: drop-shadow(1px 2px 4px rgba(0,0,0,0.35));\n}\n\n\/* \u2500\u2500 VIDEO SECTION \u2500\u2500 *\/\n.panel4 .p4-video-section {\n  position: relative;\n  display: flex;\n  justify-content: center;\n  align-items: flex-start;\n  margin-bottom: 28px;\n}\n.panel4 .p4-video-wrap {\n  position: relative;\n  width: 100%;\n  max-width: 300px;\n  aspect-ratio: 9 \/ 16;\n  border-radius: 20px;\n  overflow: hidden;\n  background: #000;\n  box-shadow:\n    0 0 0 2px rgba(255,255,255,0.6),\n    0 24px 60px rgba(0,0,0,0.3),\n    0 0 0 6px rgba(58,131,246,0.15);\n}\n.panel4 .p4-video-wrap video {\n  width: 100%;\n  height: 100%;\n  object-fit: cover;\n  display: block;\n  opacity: 1;\n  transition: opacity 250ms ease;\n}\n.panel4 .p4-video-wrap video.p4-fading {\n  opacity: 0;\n}\n\n\/* CLON IA badge below video *\/\n.panel4 .p4-badge-wrap {\n  display: flex;\n  justify-content: center;\n  margin-top: -1px;\n}\n.panel4 .p4-badge {\n  background: #fff;\n  border: 2.5px solid var(--fg);\n  border-radius: 40px;\n  padding: 10px 28px;\n  font-family: 'Sora', sans-serif;\n  font-weight: 800;\n  font-size: clamp(18px, 5vw, 22px);\n  letter-spacing: 0.06em;\n  color: var(--fg);\n  display: inline-flex;\n  align-items: center;\n  gap: 10px;\n  box-shadow: 0 4px 16px rgba(0,0,0,0.1);\n  margin-top: 16px;\n}\n.panel4 .p4-badge .p4-badge-blue {\n  color: var(--accent);\n}\n\n\/* \u2500\u2500 BOTTOM TEXT \u2500\u2500 *\/\n.panel4 .p4-bottom-text {\n  font-family: 'Sora', sans-serif;\n  font-style: italic;\n  font-weight: 400;\n  font-size: clamp(17px, 4.5vw, 22px);\n  text-align: center;\n  color: var(--fg);\n  line-height: 1.4;\n  margin-bottom: 32px;\n}\n.panel4 .p4-bottom-text .p4-blue {\n  color: var(--accent);\n  font-style: italic;\n}\n\n\n\/* \u2500\u2500 DESKTOP \u2500\u2500 *\/\n@media (min-width: 1024px) {\n  .panel4 .p4-inner { max-width: 900px; padding: 72px 48px 72px; }\n  .panel4 .p4-title { font-size: 64px; }\n  .panel4 .p4-sub { font-size: 26px; }\n  .panel4 .p4-grid { flex-direction: row; gap: 10px; margin-bottom: 28px; }\n  .panel4 .p4-row { flex: 1; gap: 10px; }\n  .panel4 .p4-row-1 { flex: 5 }\n  .panel4 .p4-row-2 { flex: 0; display: none; }\n  .panel4 .p4-thumb { flex: 1; max-width: none; }\n  .panel4 .p4-video-section { gap: 32px; align-items: center; }\n  .panel4 .p4-video-wrap { max-width: 400px; }\n  .panel4 .p4-cta-btn { font-size: 20px; padding: 20px 56px; }\n}\n\n\/* \u2500\u2500 CTA BUTTON \u2014 all screens \u2500\u2500 *\/\n.panel4 .p4-mobile-cta {\n  display: flex;\n  justify-content: center;\n  margin-bottom: 36px;\n}\n.panel4 .p4-cta-btn {\n  background: var(--accent);\n  color: #fff;\n  font-family: 'Sora', sans-serif;\n  font-weight: 800;\n  font-size: clamp(17px, 4.5vw, 20px);\n  padding: 18px 44px;\n  border-radius: 40px;\n  border: none;\n  cursor: pointer;\n  box-shadow: 0 6px 28px rgba(58,131,246,0.45);\n  transition: transform .2s ease, box-shadow .2s ease, background .2s ease;\n  letter-spacing: 0.02em;\n  width: 100%;\n  max-width: 320px;\n}\n.panel4 .p4-cta-btn:hover {\n  background: #2f74e8;\n  transform: translateY(-3px);\n  box-shadow: 0 12px 40px rgba(58,131,246,0.6), 0 0 0 4px rgba(58,131,246,0.18);\n}\n.panel4 .p4-cta-btn:active { transform: translateY(0); }\n\n\/* prefers-reduced-motion *\/\n@media (prefers-reduced-motion: reduce) {\n  .panel4 .p4-thumb { transition: none !important; }\n  .panel4 .p4-cursor { display: none !important; }\n  .panel4 .p4-video-wrap video { transition: none !important; }\n}\n<\/style>\n\n\n\n<div class=\"panel4\" id=\"panel4\">\n\n  <!-- Virtual cursor (moved by JS) -->\n  <div class=\"p4-cursor\" id=\"p4Cursor\">\n    <svg viewBox=\"0 0 28 36\" fill=\"none\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\">\n      <!-- Hand pointer cursor -->\n      <path d=\"M8 28V10.5C8 9.67 8.67 9 9.5 9C10.33 9 11 9.67 11 10.5V20\" stroke=\"#111\" stroke-width=\"1.4\" fill=\"white\"><\/path>\n      <path d=\"M11 20V15.5C11 14.67 11.67 14 12.5 14C13.33 14 14 14.67 14 15.5V20\" stroke=\"#111\" stroke-width=\"1.4\" fill=\"white\"><\/path>\n      <path d=\"M14 20V16.5C14 15.67 14.67 15 15.5 15C16.33 15 17 15.67 17 16.5V20\" stroke=\"#111\" stroke-width=\"1.4\" fill=\"white\"><\/path>\n      <path d=\"M17 20.5V18.5C17 17.67 17.67 17 18.5 17C19.33 17 20 17.67 20 18.5V24C20 27.31 17.31 30 14 30H13C10.24 30 8 27.76 8 25V25\" stroke=\"#111\" stroke-width=\"1.4\" fill=\"white\"><\/path>\n      <path fill-rule=\"evenodd\" clip-rule=\"evenodd\" d=\"M9.5 8C8.12 8 7 9.12 7 10.5V25C7 28.31 9.69 31 13 31H14C17.87 31 21 27.87 21 24V18.5C21 17.12 19.88 16 18.5 16C18.16 16 17.84 16.07 17.55 16.2C17.22 15.48 16.42 15 15.5 15C15.16 15 14.84 15.07 14.55 15.2C14.22 14.48 13.42 14 12.5 14C12.16 14 11.84 14.07 11.55 14.2C11.22 13.48 10.42 13 9.5 13C8.12 13 7 14.12 7 15.5V10.5C7 9.12 8.12 8 9.5 8Z\" fill=\"white\" stroke=\"#222\" stroke-width=\"1.2\"><\/path>\n    <\/svg>\n  <\/div>\n\n  <div class=\"p4-inner\">\n\n    <!-- TITLE -->\n    <h2 class=\"p4-title\">\n      Clones <span class=\"p4-blue\">Digitales<\/span>\n    <\/h2>\n\n    <!-- SUBTITLE -->\n    <p class=\"p4-sub\">\n      Graba <span class=\"p4-blue\">una vez.<\/span> Habla para <span class=\"p4-blue\">siempre.<\/span>\n    <\/p>\n\n    <!-- DESCRIPTION -->\n    <p class=\"p4-desc\">\n      Con un solo pago mensual, te grabas una vez y generas <strong>m\u00faltiples videos con edici\u00f3n profesional<\/strong> para escalar tu contenido en redes.\n    <\/p>\n\n    <!-- THUMBNAIL GRID -->\n    <div class=\"p4-grid\" id=\"p4Grid\">\n      <!-- Row 1: items 0,1,2 (mobile) \/ all 5 on desktop via JS -->\n      <div class=\"p4-row p4-row-1\" id=\"p4Row1\">\n        <div class=\"p4-thumb\" data-idx=\"0\" id=\"p4Thumb0\">\n          <img decoding=\"async\" src=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/JP-DESPIDOS-frame.png\" alt=\"\" loading=\"eager\">\n          <span class=\"p4-thumb-label\">JP-DESPIDOS.mp4<\/span>\n        <\/div>\n        <div class=\"p4-thumb\" data-idx=\"1\" id=\"p4Thumb1\">\n          <img decoding=\"async\" src=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/JPDIRECTOR-LINKEDIN-frame.png\" alt=\"\" loading=\"eager\">\n          <span class=\"p4-thumb-label\">JP-LINKEDIN.mp4<\/span>\n        <\/div>\n        <div class=\"p4-thumb\" data-idx=\"2\" id=\"p4Thumb2\">\n          <img decoding=\"async\" src=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/video-jp-9-frame.png\" alt=\"\" loading=\"eager\">\n          <span class=\"p4-thumb-label\">LAS-AGENCIAS.mp4<\/span>\n        <\/div>\n      <\/div>\n      <!-- Row 2: items 3,4 (mobile only) -->\n      <div class=\"p4-row p4-row-2\" id=\"p4Row2\">\n        <div class=\"p4-thumb\" data-idx=\"3\" id=\"p4Thumb3\">\n          <img decoding=\"async\" src=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/buscando-mejores-influencers-frame.png\" alt=\"\" loading=\"lazy\">\n          <span class=\"p4-thumb-label\">INFLUENCERS.mp4<\/span>\n        <\/div>\n        <div class=\"p4-thumb\" data-idx=\"4\" id=\"p4Thumb4\">\n          <img decoding=\"async\" src=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/orlando-florida-talento-frame.png\" alt=\"\" loading=\"lazy\">\n          <span class=\"p4-thumb-label\">ORLANDO.mp4<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n\n    <!-- VIDEO SECTION -->\n    <div class=\"p4-video-section\">\n      <div class=\"p4-video-wrap\" id=\"p4VideoWrap\">\n        <video id=\"p4Video\" src=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/JP-DESPIDOS.mp4\" autoplay=\"\" muted=\"\" loop=\"\" playsinline=\"\" webkit-playsinline=\"\" preload=\"auto\">\n        <\/video>\n      <\/div>\n\n    <\/div>\n\n    <!-- CLON IA BADGE -->\n    <div class=\"p4-badge-wrap\">\n      <div class=\"p4-badge\">\n        CLON &nbsp;<span class=\"p4-badge-blue\">IA<\/span>\n      <\/div>\n    <\/div>\n\n    <!-- MOBILE CTA -->\n<div class=\"p4-mobile-cta\" style=\"margin-top:28px\">\n  <button class=\"p4-cta-btn\" type=\"button\" onclick=\"window.location.href='https:\/\/jpdirector.net\/contact'\">\n  Quiero mi Clon Digital\n<\/button>\n<\/div>\n\n    <!-- BOTTOM TEXT -->\n    <p class=\"p4-bottom-text\">\n      Tu clon no se cansa, no improvisa,<br>\n      <span class=\"p4-blue\">no falla.<\/span>\n    <\/p>\n\n\n  <\/div><!-- \/p4-inner -->\n<\/div><!-- \/panel4 -->\n\n<script>\n(function () {\n  'use strict';\n\n  \/* \u2500\u2500 DATA \u2500\u2500 *\/\n  const ITEMS = [\n    {\n      img: 'https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/JP-DESPIDOS-frame.png',\n      src: 'https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/JP-DESPIDOS.mp4',\n    },\n    {\n      img: 'https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/JPDIRECTOR-LINKEDIN-frame.png',\n      src: 'https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/JP-LINKEDIN.mp4',\n    },\n    {\n      img: 'https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/video-jp-9-frame.png',\n      src: 'https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/VIDEO-JP-9-3-LAS-AGENCIAS-DESAPARECER.mp4',\n    },\n    {\n      img: 'https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/buscando-mejores-influencers-frame.png',\n      src: 'https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/Buscando-los-mejores-influence-orlando-florida.mp4',\n    },\n    {\n      img: 'https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/orlando-florida-talento-frame.png',\n      src: 'https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/06\/orlando-florida-talento.mp4',\n    },\n  ];\n\n  \/* \u2500\u2500 ELEMENTS \u2500\u2500 *\/\n  const cursor   = document.getElementById('p4Cursor');\n  const video    = document.getElementById('p4Video');\n  const row1     = document.getElementById('p4Row1');\n  const row2     = document.getElementById('p4Row2');\n  const panel    = document.getElementById('panel4');\n\n  const thumbEls = ITEMS.map((_, i) => document.getElementById('p4Thumb' + i));\n\n  \/* \u2500\u2500 PRELOAD VIDEOS \u2500\u2500 *\/\n  const videoCache = {};\n  ITEMS.forEach((item, i) => {\n    const v = document.createElement('video');\n    v.src = item.src;\n    v.muted = true;\n    v.loop = true;\n    v.playsInline = true;\n    v.setAttribute('playsinline', '');\n    v.preload = 'auto';\n    videoCache[i] = v;\n  });\n\n  \/* \u2500\u2500 DESKTOP GRID REBUILD \u2500\u2500 *\/\n  function isDesktop() { return window.innerWidth >= 1024; }\n\n  function rebuildGrid() {\n    if (isDesktop()) {\n      \/\/ Move all thumbs into row1, hide row2\n      thumbEls.forEach(t => row1.appendChild(t));\n      row2.style.display = 'none';\n      thumbEls.forEach(t => {\n        t.style.flex = '1';\n        t.style.maxWidth = 'none';\n      });\n    } else {\n      \/\/ Mobile: row1 = 0,1,2 \/ row2 = 3,4\n      row2.style.display = 'flex';\n      [0, 1, 2].forEach(i => row1.appendChild(thumbEls[i]));\n      [3, 4].forEach(i => row2.appendChild(thumbEls[i]));\n      thumbEls.forEach(t => {\n        t.style.flex = '';\n        t.style.maxWidth = '';\n      });\n    }\n  }\n  rebuildGrid();\n  window.addEventListener('resize', rebuildGrid);\n\n  \/* \u2500\u2500 VIDEO SWAP \u2500\u2500 *\/\n  let currentIdx = -1;\n  let swapping = false;\n\n  function activateItem(idx) {\n    if (idx === currentIdx) return;\n\n    \/\/ Update thumbnails\n    thumbEls.forEach((t, i) => {\n      t.classList.toggle('p4-active', i === idx);\n    });\n\n    \/\/ Swap video with fade\n    if (swapping) return;\n    swapping = true;\n\n    video.classList.add('p4-fading');\n\n    setTimeout(() => {\n      video.src = ITEMS[idx].src;\n      video.load();\n      const p = video.play();\n      if (p && p.catch) p.catch(() => {});\n      video.classList.remove('p4-fading');\n      swapping = false;\n    }, 250);\n\n    currentIdx = idx;\n  }\n\n  \/* \u2500\u2500 VIRTUAL CURSOR ANIMATION \u2500\u2500 *\/\n  const HOVER_DURATION  = 2000;  \/\/ ms each thumb stays active\n  const MOVE_DURATION   = 500;   \/\/ ms cursor travel time (matches CSS transition)\n\n  let cursorIdx   = 0;\n  let loopTimer   = null;\n  let moveTimer   = null;\n  let isVisible   = false;\n  let animRunning = false;\n\n  function getThumbCenter(el) {\n    const r = el.getBoundingClientRect();\n    return {\n      x: r.left + r.width  * 0.55,\n      y: r.top  + r.height * 0.65,\n    };\n  }\n\n  function moveCursorTo(el, onArrived) {\n    const { x, y } = getThumbCenter(el);\n    cursor.style.left = (x - 8) + 'px';\n    cursor.style.top  = (y - 4) + 'px';\n    \/\/ Wait for transition to finish\n    clearTimeout(moveTimer);\n    moveTimer = setTimeout(onArrived, MOVE_DURATION + 40);\n  }\n\n  function doStep() {\n    if (!animRunning) return;\n    const thumb = thumbEls[cursorIdx];\n\n    \/\/ Move cursor to this thumb\n    moveCursorTo(thumb, function () {\n      if (!animRunning) return;\n      \/\/ Activate video\n      activateItem(cursorIdx);\n      \/\/ Wait hover duration, then move to next\n      loopTimer = setTimeout(function () {\n        cursorIdx = (cursorIdx + 1) % ITEMS.length;\n        doStep();\n      }, HOVER_DURATION);\n    });\n  }\n\n  function startAnimation() {\n    if (animRunning) return;\n    animRunning = true;\n    cursor.style.display = 'block';\n    \/\/ Place cursor at first thumb immediately (no transition on first place)\n    cursor.style.transition = 'none';\n    const { x, y } = getThumbCenter(thumbEls[0]);\n    cursor.style.left = (x - 8) + 'px';\n    cursor.style.top  = (y - 4) + 'px';\n    \/\/ Re-enable transition after first placement\n    requestAnimationFrame(() => {\n      requestAnimationFrame(() => {\n        cursor.style.transition = '';\n        doStep();\n      });\n    });\n  }\n\n  function stopAnimation() {\n    animRunning = false;\n    clearTimeout(loopTimer);\n    clearTimeout(moveTimer);\n    cursor.style.display = 'none';\n  }\n\n  \/* \u2500\u2500 INTERSECTION OBSERVER \u2014 start when panel enters viewport \u2500\u2500 *\/\n  const observer = new IntersectionObserver(function (entries) {\n    entries.forEach(function (entry) {\n      if (entry.isIntersecting && !animRunning) {\n        \/\/ Small delay so layout is settled\n        setTimeout(startAnimation, 300);\n      } else if (!entry.isIntersecting && animRunning) {\n        stopAnimation();\n        cursorIdx = 0;\n        currentIdx = -1;\n      }\n    });\n  }, { threshold: 0.2 });\n\n  observer.observe(panel);\n\n  \/* \u2500\u2500 AUTOPLAY video \u2500\u2500 *\/\n  function tryPlay() {\n    video.muted = true;\n    const p = video.play();\n    if (p && p.catch) p.catch(() => {});\n  }\n  document.addEventListener('DOMContentLoaded', tryPlay);\n  window.addEventListener('load', tryPlay);\n  ['click', 'touchstart'].forEach(ev =>\n    document.addEventListener(ev, tryPlay, { once: true, passive: true })\n  );\n\n  \/* \u2500\u2500 Manual thumb click \u2500\u2500 *\/\n  thumbEls.forEach((el, i) => {\n    el.addEventListener('click', function () {\n      activateItem(i);\n    });\n  });\n\n})();\n<\/script>\n<\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_gspb_post_css":".gspb_container-id-gsbp-f669173{flex-direction:column;box-sizing:border-box}#gspb_container-id-gsbp-f669173.gspb_container>p:last-of-type{margin-bottom:0}#gspb_container-id-gsbp-f669173.gspb_container{position:relative;box-sizing:border-box}","footnotes":""},"class_list":["post-4221","page","type-page","status-publish","hentry"],"blocksy_meta":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.4 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Vende m\u00e1s con un experto en publicidad digital<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/jpdirector.net\/en\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Vende m\u00e1s con un experto en publicidad digital\" \/>\n<meta property=\"og:url\" content=\"https:\/\/jpdirector.net\/en\/\" \/>\n<meta property=\"og:site_name\" content=\"JP Director\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/jpdirector\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-10T21:34:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/01\/Diseno-sin-titulo-2.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"5 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/jpdirector.net\\\/\",\"url\":\"https:\\\/\\\/jpdirector.net\\\/\",\"name\":\"Vende m\u00e1s con un experto en publicidad digital\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/jpdirector.net\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/jpdirector.net\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/jpdirector.net\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/jpdirector.net\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Diseno-sin-titulo-2.png\",\"datePublished\":\"2026-07-16T17:16:19+00:00\",\"dateModified\":\"2026-09-10T21:34:52+00:00\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/jpdirector.net\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/jpdirector.net\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jpdirector.net\\\/#primaryimage\",\"url\":\"https:\\\/\\\/jpdirector.net\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Diseno-sin-titulo-2.png\",\"contentUrl\":\"https:\\\/\\\/jpdirector.net\\\/wp-content\\\/uploads\\\/2026\\\/01\\\/Diseno-sin-titulo-2.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/jpdirector.net\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/jpdirector.net\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Home\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/jpdirector.net\\\/#website\",\"url\":\"https:\\\/\\\/jpdirector.net\\\/\",\"name\":\"JP Director\",\"description\":\"JP Director\",\"publisher\":{\"@id\":\"https:\\\/\\\/jpdirector.net\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/jpdirector.net\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/jpdirector.net\\\/#organization\",\"name\":\"JP Director\",\"url\":\"https:\\\/\\\/jpdirector.net\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/jpdirector.net\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/jpdirector.net\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Logo-home-08-1.png\",\"contentUrl\":\"https:\\\/\\\/jpdirector.net\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/Logo-home-08-1.png\",\"width\":330,\"height\":76,\"caption\":\"JP Director\"},\"image\":{\"@id\":\"https:\\\/\\\/jpdirector.net\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/jpdirector\",\"https:\\\/\\\/www.instagram.com\\\/jp.director\\\/?hl=en\",\"https:\\\/\\\/www.linkedin.com\\\/in\\\/jpdirector\\\/?locale=en_US\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Vende m\u00e1s con un experto en publicidad digital","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/jpdirector.net\/en\/","og_locale":"en_US","og_type":"article","og_title":"Vende m\u00e1s con un experto en publicidad digital","og_url":"https:\/\/jpdirector.net\/en\/","og_site_name":"JP Director","article_publisher":"https:\/\/www.facebook.com\/jpdirector","article_modified_time":"2026-09-10T21:34:52+00:00","og_image":[{"url":"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/01\/Diseno-sin-titulo-2.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"5 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/jpdirector.net\/","url":"https:\/\/jpdirector.net\/","name":"Vende m\u00e1s con un experto en publicidad digital","isPartOf":{"@id":"https:\/\/jpdirector.net\/#website"},"primaryImageOfPage":{"@id":"https:\/\/jpdirector.net\/#primaryimage"},"image":{"@id":"https:\/\/jpdirector.net\/#primaryimage"},"thumbnailUrl":"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/01\/Diseno-sin-titulo-2.png","datePublished":"2026-07-16T17:16:19+00:00","dateModified":"2026-09-10T21:34:52+00:00","breadcrumb":{"@id":"https:\/\/jpdirector.net\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/jpdirector.net\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jpdirector.net\/#primaryimage","url":"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/01\/Diseno-sin-titulo-2.png","contentUrl":"https:\/\/jpdirector.net\/wp-content\/uploads\/2026\/01\/Diseno-sin-titulo-2.png"},{"@type":"BreadcrumbList","@id":"https:\/\/jpdirector.net\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/jpdirector.net\/"},{"@type":"ListItem","position":2,"name":"Home"}]},{"@type":"WebSite","@id":"https:\/\/jpdirector.net\/#website","url":"https:\/\/jpdirector.net\/","name":"JP Director","description":"JP Director","publisher":{"@id":"https:\/\/jpdirector.net\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/jpdirector.net\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/jpdirector.net\/#organization","name":"JP Director","url":"https:\/\/jpdirector.net\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/jpdirector.net\/#\/schema\/logo\/image\/","url":"https:\/\/jpdirector.net\/wp-content\/uploads\/2025\/10\/Logo-home-08-1.png","contentUrl":"https:\/\/jpdirector.net\/wp-content\/uploads\/2025\/10\/Logo-home-08-1.png","width":330,"height":76,"caption":"JP Director"},"image":{"@id":"https:\/\/jpdirector.net\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/jpdirector","https:\/\/www.instagram.com\/jp.director\/?hl=en","https:\/\/www.linkedin.com\/in\/jpdirector\/?locale=en_US"]}]}},"_links":{"self":[{"href":"https:\/\/jpdirector.net\/en\/wp-json\/wp\/v2\/pages\/4221","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/jpdirector.net\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/jpdirector.net\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/jpdirector.net\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/jpdirector.net\/en\/wp-json\/wp\/v2\/comments?post=4221"}],"version-history":[{"count":20,"href":"https:\/\/jpdirector.net\/en\/wp-json\/wp\/v2\/pages\/4221\/revisions"}],"predecessor-version":[{"id":4432,"href":"https:\/\/jpdirector.net\/en\/wp-json\/wp\/v2\/pages\/4221\/revisions\/4432"}],"wp:attachment":[{"href":"https:\/\/jpdirector.net\/en\/wp-json\/wp\/v2\/media?parent=4221"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}