{"id":15,"date":"2026-03-31T07:49:39","date_gmt":"2026-03-31T07:49:39","guid":{"rendered":"https:\/\/vortexmedia.agency\/?page_id=15"},"modified":"2026-04-28T20:55:36","modified_gmt":"2026-04-28T18:55:36","slug":"inicio","status":"publish","type":"page","link":"https:\/\/vortexmedia.agency\/es\/","title":{"rendered":"Inicio"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"15\" class=\"elementor elementor-15\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-d2931aa e-flex e-con-boxed e-con e-parent\" data-id=\"d2931aa\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-df3de74 elementor-widget elementor-widget-shortcode\" data-id=\"df3de74\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"shortcode.default\">\n\t\t\t\t\t\t\t<div class=\"elementor-shortcode\"><!DOCTYPE html>\r\n<html lang=\"es\">\r\n<head>\r\n<meta charset=\"UTF-8\">\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n<title>Vortex Media \u2014 Agencia de Comunicaci\u00f3n y Branding en Espa\u00f1a<\/title>\r\n<meta name=\"description\" content=\"Consultor\u00eda de comunicaci\u00f3n, branding, comunicaci\u00f3n deportiva y gesti\u00f3n de contenidos. Estrategias que conectan tu marca con quien de verdad importa.\">\r\n\r\n<link rel=\"alternate\" hreflang=\"es\" href=\"https:\/\/vortexmedia.agency\/\">\r\n<link rel=\"alternate\" hreflang=\"en\" href=\"https:\/\/vortexmedia.agency\/en\/\">\r\n<link rel=\"alternate\" hreflang=\"x-default\" href=\"https:\/\/vortexmedia.agency\/\">\r\n\r\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\r\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Inter:wght@300;400;500;600;700&family=Space+Grotesk:wght@400;500;600;700&display=swap\" rel=\"stylesheet\">\r\n\r\n<!-- GSAP + ScrollTrigger + ScrollToPlugin (FREE CDN) -->\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.13.0\/gsap.min.js\"><\/script>\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.13.0\/ScrollTrigger.min.js\"><\/script>\r\n<script src=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.13.0\/ScrollToPlugin.min.js\"><\/script>\r\n\r\n<!-- Schema.org -->\r\n<script type=\"application\/ld+json\">\r\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"Organization\",\"name\":\"Vortex Media\",\"url\":\"https:\/\/vortexmedia.agency\",\"description\":\"Agencia de comunicaci\u00f3n y branding en Espa\u00f1a.\",\"areaServed\":[\"ES\",\"Europe\"],\"knowsLanguage\":[\"es\",\"en\"]}\r\n<\/script>\r\n<script type=\"application\/ld+json\">\r\n{\"@context\":\"https:\/\/schema.org\",\"@type\":\"FAQPage\",\"mainEntity\":[\r\n{\"@type\":\"Question\",\"name\":\"\u00bfQu\u00e9 diferencia hay entre una agencia de marketing y una de comunicaci\u00f3n?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Una agencia de marketing se centra en ventas directas. Una de comunicaci\u00f3n trabaja la percepci\u00f3n y reputaci\u00f3n de tu marca. En Vortex Media combinamos ambas visiones.\"}},\r\n{\"@type\":\"Question\",\"name\":\"\u00bfNecesita mi empresa una consultor\u00eda de comunicaci\u00f3n?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Si tu empresa es buena en lo que hace pero no lo transmite como deber\u00eda, probablemente s\u00ed.\"}},\r\n{\"@type\":\"Question\",\"name\":\"\u00bfCu\u00e1nto cuesta contratar una agencia de comunicaci\u00f3n?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Depende del alcance. Trabajamos con presupuestos adaptados. Cu\u00e9ntanos qu\u00e9 necesitas y te preparamos una propuesta sin compromiso.\"}},\r\n{\"@type\":\"Question\",\"name\":\"\u00bfC\u00f3mo funciona el servicio de comunicaci\u00f3n deportiva?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Trabajamos con deportistas profesionales de cualquier disciplina: marca personal, redes sociales, medios y patrocinios.\"}}\r\n]}\r\n<\/script>\r\n\r\n<style>\r\n\/*\u2550\u2550\u2550 RESET \u2550\u2550\u2550*\/\r\n*,*::before,*::after{margin:0;padding:0;box-sizing:border-box}\r\n:root{\r\n  --white:#ffffff;--off-white:#f8f8fa;--light-gray:#eeeff2;--mid-gray:#dcdde2;\r\n  --text-primary:#0a0a0f;--text-secondary:#3a3a4a;--text-muted:#8a8a9a;\r\n  --accent:#0055ff;--accent-rgb:0,85,255;--accent-light:#eef3ff;--accent-hover:#003ecc;\r\n  --surface:#ffffff;--surface-alt:#f4f5f8;\r\n  --font-heading:'Space Grotesk',-apple-system,sans-serif;\r\n  --font-body:'Inter',-apple-system,sans-serif;\r\n}\r\nhtml{scroll-behavior:smooth;-webkit-font-smoothing:antialiased}\r\nbody{font-family:var(--font-body);background:var(--white);color:var(--text-primary);overflow-x:hidden;line-height:1.6}\r\na{text-decoration:none;color:inherit}\r\nimg{max-width:100%;height:auto;display:block}\r\n\r\n::-webkit-scrollbar{width:5px}\r\n::-webkit-scrollbar-track{background:var(--light-gray)}\r\n::-webkit-scrollbar-thumb{background:var(--mid-gray);border-radius:3px}\r\n\r\n\/*\u2550\u2550\u2550 LOADER \u2550\u2550\u2550*\/\r\n.loader{\r\n  position:fixed;inset:0;z-index:9999;\r\n  background:var(--white);\r\n  display:flex;flex-direction:column;align-items:center;justify-content:center;\r\n  transition:opacity .6s,visibility .6s;\r\n}\r\n.loader.hidden{opacity:0;visibility:hidden;pointer-events:none}\r\n.loader-bar{width:180px;height:2px;background:var(--light-gray);border-radius:1px;overflow:hidden}\r\n.loader-bar-fill{width:0;height:100%;background:var(--accent);border-radius:1px;transition:width .3s}\r\n.loader-text{\r\n  margin-top:1.5rem;font-family:var(--font-heading);\r\n  font-size:.68rem;letter-spacing:.25em;text-transform:uppercase;color:var(--text-muted);\r\n}\r\n\r\n\/*\u2550\u2550\u2550 NAV \u2550\u2550\u2550*\/\r\n.nav{\r\n  position:fixed;top:0;left:0;right:0;z-index:1000;\r\n  padding:1.25rem 5%;display:flex;justify-content:space-between;align-items:center;\r\n  background:rgba(255,255,255,.85);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);\r\n  border-bottom:1px solid rgba(0,0,0,.04);transition:padding .4s,box-shadow .4s;\r\n}\r\n.nav.scrolled{padding:.85rem 5%;box-shadow:0 4px 30px rgba(0,0,0,.04)}\r\n.nav-logo{font-family:var(--font-heading);font-weight:700;font-size:1.1rem;letter-spacing:.07em;color:var(--text-primary)}\r\n.nav-logo span{color:var(--accent)}\r\n.nav-links{display:flex;gap:2rem;align-items:center}\r\n.nav-links a{font-size:.82rem;font-weight:500;color:var(--text-secondary);transition:color .3s}\r\n.nav-links a:hover{color:var(--text-primary)}\r\n.nav-cta{\r\n  background:var(--text-primary)!important;color:var(--white)!important;\r\n  padding:.6rem 1.4rem;border-radius:8px;font-weight:600;font-size:.82rem;transition:all .3s;\r\n}\r\n.nav-cta:hover{background:var(--accent)!important;transform:translateY(-1px)}\r\n\r\n\/*\u2550\u2550\u2550 HERO \u2014 Wireframe globe \u2550\u2550\u2550*\/\r\n.hero{\r\n  position:relative;min-height:100vh;\r\n  display:flex;flex-direction:column;justify-content:center;align-items:center;\r\n  text-align:center;overflow:hidden;background:var(--white);\r\n}\r\n.hero-globe{\r\n  position:absolute;inset:0;z-index:0;\r\n  display:flex;align-items:center;justify-content:center;\r\n  pointer-events:none;\r\n}\r\n.hero-globe svg{\r\n  width:min(80vw,700px);height:min(80vw,700px);\r\n  opacity:0;\r\n}\r\n.hero-content{position:relative;z-index:2}\r\n.hero-title{\r\n  font-family:var(--font-heading);font-size:clamp(3.5rem,11vw,9rem);font-weight:700;\r\n  line-height:.9;letter-spacing:-.03em;color:var(--text-primary);opacity:0;transform:translateY(40px);\r\n}\r\n.hero-subtitle{\r\n  font-family:var(--font-body);font-size:clamp(.85rem,1.8vw,1.2rem);font-weight:300;\r\n  letter-spacing:.3em;text-transform:uppercase;color:var(--text-muted);\r\n  margin-top:1.5rem;opacity:0;transform:translateY(20px);\r\n}\r\n.hero-line{width:50px;height:2px;background:var(--accent);margin:2rem auto 0;transform:scaleX(0)}\r\n.hero-scroll-indicator{\r\n  position:absolute;bottom:2.5rem;left:50%;transform:translateX(-50%);\r\n  display:flex;flex-direction:column;align-items:center;gap:.5rem;opacity:0;z-index:2;\r\n}\r\n.hero-scroll-indicator span{font-size:.6rem;letter-spacing:.2em;text-transform:uppercase;color:var(--text-muted)}\r\n.scroll-line{width:1px;height:35px;background:linear-gradient(to bottom,var(--accent),transparent);animation:scrollPulse 2s ease-in-out infinite}\r\n@keyframes scrollPulse{0%,100%{opacity:.3;transform:scaleY(.5)}50%{opacity:1;transform:scaleY(1)}}\r\n\r\n\/* Globe line styles *\/\r\n.globe-line{\r\n  fill:none;stroke:rgba(var(--accent-rgb),.12);stroke-width:.8;\r\n}\r\n.globe-line-strong{\r\n  fill:none;stroke:rgba(var(--accent-rgb),.2);stroke-width:1;\r\n}\r\n.globe-dot{\r\n  fill:rgba(var(--accent-rgb),.25);\r\n}\r\n.globe-dot-accent{\r\n  fill:var(--accent);opacity:.4;\r\n}\r\n\r\n\/*\u2550\u2550\u2550 INTRO \u2550\u2550\u2550*\/\r\n.intro-section{padding:8rem 6%;background:var(--white)}\r\n.intro-grid{display:grid;grid-template-columns:1fr 1fr;gap:5rem;max-width:1300px;margin:0 auto;align-items:center}\r\n.intro-tag{font-size:.7rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:1.2rem}\r\n.intro-title{font-family:var(--font-heading);font-size:clamp(2rem,3.5vw,3rem);font-weight:700;line-height:1.12;margin-bottom:1.8rem}\r\n.intro-lead{font-size:1.1rem;color:var(--text-secondary);line-height:1.8;margin-bottom:1.2rem;font-weight:400}\r\n.intro-text p{font-size:.95rem;color:var(--text-muted);line-height:1.85;margin-bottom:1rem}\r\n.intro-image{\r\n  position:relative;border-radius:20px;overflow:hidden;\r\n  background:var(--surface-alt);aspect-ratio:4\/3;\r\n}\r\n.intro-image-overlay{\r\n  position:absolute;inset:0;\r\n  background:linear-gradient(135deg,rgba(var(--accent-rgb),.06) 0%,rgba(120,0,255,.04) 100%);\r\n  pointer-events:none;\r\n}\r\n\r\n\/*\u2550\u2550\u2550 SERVICES \u2014 Horizontal free-scroll \u2550\u2550\u2550*\/\r\n.services-section{padding:6rem 0 5rem;background:var(--surface-alt);overflow:hidden}\r\n.services-header{padding:0 6% 3rem;max-width:800px}\r\n.services-header .section-tag{font-size:.7rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem;display:block}\r\n.services-header h2{font-family:var(--font-heading);font-size:clamp(2rem,3.8vw,3rem);font-weight:700;line-height:1.08;margin-bottom:.8rem}\r\n.services-header p{font-size:1rem;color:var(--text-secondary);line-height:1.7}\r\n.services-scroll-hint{\r\n  display:inline-flex;align-items:center;gap:.5rem;\r\n  font-size:.75rem;font-weight:500;color:var(--accent);margin-top:1rem;\r\n}\r\n.services-scroll-hint svg{width:16px;height:16px;animation:slideHint 1.5s ease-in-out infinite}\r\n@keyframes slideHint{0%,100%{transform:translateX(0)}50%{transform:translateX(6px)}}\r\n\r\n.services-track-outer{\r\n  overflow-x:auto;overflow-y:hidden;\r\n  -webkit-overflow-scrolling:touch;\r\n  scrollbar-width:none;-ms-overflow-style:none;\r\n  cursor:grab;\r\n}\r\n.services-track-outer::-webkit-scrollbar{display:none}\r\n.services-track-outer:active{cursor:grabbing}\r\n.services-track{\r\n  display:flex;gap:1.5rem;padding:1rem 6% 2rem;width:max-content;\r\n}\r\n\r\n.service-card{\r\n  width:380px;border-radius:20px;overflow:hidden;\r\n  background:var(--white);border:1px solid var(--light-gray);\r\n  transition:all .4s cubic-bezier(.23,1,.32,1);flex-shrink:0;\r\n  display:flex;flex-direction:column;\r\n}\r\n.service-card:hover{\r\n  border-color:rgba(var(--accent-rgb),.15);\r\n  transform:translateY(-6px);\r\n  box-shadow:0 20px 60px rgba(0,0,0,.06);\r\n}\r\n.service-card-image{height:200px;overflow:hidden;position:relative}\r\n.service-card:hover .service-card-image svg{transform:scale(1.03)}\r\n.service-card-image svg{transition:transform .6s cubic-bezier(.23,1,.32,1)}\r\n.service-card-gradient{position:absolute;inset:0;pointer-events:none}\r\n.card-1 .service-card-gradient{background:linear-gradient(135deg,rgba(0,85,255,.08) 0%,rgba(0,85,255,.01) 100%)}\r\n.card-2 .service-card-gradient{background:linear-gradient(135deg,rgba(100,0,255,.08) 0%,rgba(100,0,255,.01) 100%)}\r\n.card-3 .service-card-gradient{background:linear-gradient(135deg,rgba(0,180,100,.08) 0%,rgba(0,180,100,.01) 100%)}\r\n.card-4 .service-card-gradient{background:linear-gradient(135deg,rgba(255,120,0,.08) 0%,rgba(255,120,0,.01) 100%)}\r\n\r\n.service-card-body{padding:2rem 2rem 2.2rem;flex:1;display:flex;flex-direction:column}\r\n.service-card-number{\r\n  font-family:var(--font-heading);font-size:.65rem;font-weight:700;\r\n  letter-spacing:.15em;color:var(--accent);margin-bottom:.8rem;\r\n}\r\n.service-card h3{\r\n  font-family:var(--font-heading);font-size:1.25rem;font-weight:700;\r\n  margin-bottom:.8rem;line-height:1.25;color:var(--text-primary);\r\n}\r\n.service-card p{font-size:.9rem;color:var(--text-secondary);line-height:1.75;margin-bottom:1.2rem;flex:1}\r\n.service-card-link{\r\n  display:inline-flex;align-items:center;gap:.4rem;\r\n  font-size:.85rem;font-weight:600;color:var(--accent);transition:gap .3s;\r\n}\r\n.service-card-link:hover{gap:.8rem}\r\n.service-card-link svg{width:14px;height:14px;transition:transform .3s}\r\n.service-card-link:hover svg{transform:translateX(3px)}\r\n\r\n.services-dots{display:flex;justify-content:center;gap:.4rem;padding:1.5rem 0 0}\r\n.services-dot{width:6px;height:6px;border-radius:50%;background:var(--mid-gray);transition:all .3s;cursor:pointer}\r\n.services-dot.active{background:var(--accent);width:22px;border-radius:3px}\r\n\r\n\/*\u2550\u2550\u2550 MARQUEE \u2550\u2550\u2550*\/\r\n.marquee-section{\r\n  padding:3rem 0;overflow:hidden;background:var(--white);\r\n  border-top:1px solid var(--light-gray);border-bottom:1px solid var(--light-gray);\r\n}\r\n.marquee-track{display:flex;gap:3rem;animation:marquee 35s linear infinite;width:max-content}\r\n.marquee-item{\r\n  font-family:var(--font-heading);font-size:1rem;font-weight:600;\r\n  color:var(--mid-gray);white-space:nowrap;letter-spacing:.05em;text-transform:uppercase;\r\n}\r\n.marquee-item .dot{display:inline-block;width:4px;height:4px;background:var(--accent);border-radius:50%;margin:0 1.5rem;vertical-align:middle}\r\n@keyframes marquee{0%{transform:translateX(0)}100%{transform:translateX(-50%)}}\r\n\r\n\/*\u2550\u2550\u2550 PROCESS \u2014 with glow numbers \u2550\u2550\u2550*\/\r\n.process-section{padding:7rem 6%;background:var(--white)}\r\n.process-header{max-width:750px;margin:0 auto 4rem}\r\n.process-header .section-tag{font-size:.7rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem;display:block;text-align:center}\r\n.process-header h2{font-family:var(--font-heading);font-size:clamp(2rem,3.8vw,3rem);font-weight:700;line-height:1.08;text-align:center;margin-bottom:.8rem}\r\n.process-header p{font-size:1.05rem;color:var(--text-secondary);line-height:1.7;text-align:center}\r\n\r\n.process-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:0;max-width:1200px;margin:0 auto;border-top:1px solid var(--light-gray)}\r\n.process-step{\r\n  padding:3rem 2.5rem;border-right:1px solid var(--light-gray);position:relative;\r\n  cursor:default;transition:background .4s;\r\n}\r\n.process-step:last-child{border-right:none}\r\n.process-step:hover{background:var(--surface-alt)}\r\n\r\n.process-number{\r\n  font-family:var(--font-heading);font-size:3.5rem;font-weight:700;\r\n  line-height:1;margin-bottom:1.5rem;color:var(--light-gray);\r\n  transition:all .5s cubic-bezier(.23,1,.32,1);\r\n  position:relative;display:inline-block;\r\n}\r\n.process-step:hover .process-number{\r\n  color:var(--accent);\r\n  text-shadow:0 0 20px rgba(var(--accent-rgb),.35),0 0 40px rgba(var(--accent-rgb),.2),0 0 60px rgba(var(--accent-rgb),.1);\r\n}\r\n.process-number-glow{\r\n  position:absolute;inset:-20px;border-radius:50%;\r\n  background:radial-gradient(circle,rgba(var(--accent-rgb),.1) 0%,transparent 70%);\r\n  opacity:0;transition:opacity .5s;pointer-events:none;\r\n}\r\n.process-step:hover .process-number-glow{opacity:1}\r\n\r\n.process-step h3{font-family:var(--font-heading);font-size:1.1rem;font-weight:700;margin-bottom:.6rem;color:var(--text-primary)}\r\n.process-step p{font-size:.88rem;color:var(--text-secondary);line-height:1.75}\r\n\r\n\/*\u2550\u2550\u2550 WHY US \u2550\u2550\u2550*\/\r\n.why-section{padding:7rem 6%;background:var(--surface-alt);overflow:hidden}\r\n.why-inner{display:grid;grid-template-columns:1fr 1fr;gap:5rem;max-width:1300px;margin:0 auto;align-items:center}\r\n.why-header .section-tag{font-size:.7rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem;display:block}\r\n.why-header h2{font-family:var(--font-heading);font-size:clamp(2rem,3.5vw,2.8rem);font-weight:700;line-height:1.08;margin-bottom:1rem}\r\n.why-header>p{font-size:1rem;color:var(--text-secondary);line-height:1.7;margin-bottom:2.5rem}\r\n\r\n.why-grid{display:grid;grid-template-columns:1fr 1fr;gap:1.2rem}\r\n.why-card{\r\n  padding:1.8rem;border-radius:16px;background:var(--white);\r\n  border:1px solid var(--light-gray);transition:all .4s cubic-bezier(.23,1,.32,1);\r\n}\r\n.why-card:hover{border-color:rgba(var(--accent-rgb),.15);transform:translateY(-3px);box-shadow:0 12px 40px rgba(0,0,0,.04)}\r\n.why-card h3{font-family:var(--font-heading);font-size:1rem;font-weight:700;margin-bottom:.5rem;color:var(--text-primary)}\r\n.why-card p{font-size:.85rem;color:var(--text-secondary);line-height:1.7}\r\n\r\n.why-image{border-radius:20px;overflow:hidden;aspect-ratio:3\/4;position:relative;background:var(--surface-alt)}\r\n.why-image-overlay{position:absolute;inset:0;background:linear-gradient(180deg,transparent 60%,rgba(var(--accent-rgb),.05) 100%);pointer-events:none}\r\n\r\n\/*\u2550\u2550\u2550 FAQ \u2550\u2550\u2550*\/\r\n.faq-section{padding:7rem 6%;background:var(--white)}\r\n.faq-inner{max-width:800px;margin:0 auto}\r\n.faq-header .section-tag{font-size:.7rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:1rem;display:block}\r\n.faq-header h2{font-family:var(--font-heading);font-size:clamp(2rem,3.5vw,2.6rem);font-weight:700;line-height:1.08;margin-bottom:2.5rem}\r\n.faq-item{border-bottom:1px solid var(--light-gray)}\r\n.faq-question{\r\n  padding:1.4rem 0;font-family:var(--font-heading);font-size:1rem;font-weight:600;\r\n  cursor:pointer;display:flex;justify-content:space-between;align-items:center;gap:1rem;\r\n  color:var(--text-primary);transition:color .3s;\r\n}\r\n.faq-question:hover{color:var(--accent)}\r\n.faq-icon{\r\n  flex-shrink:0;width:26px;height:26px;border-radius:50%;\r\n  border:1px solid var(--mid-gray);display:flex;align-items:center;justify-content:center;\r\n  font-size:.95rem;color:var(--text-muted);transition:all .4s;\r\n}\r\n.faq-item.open .faq-icon{background:var(--accent);border-color:var(--accent);color:var(--white);transform:rotate(45deg)}\r\n.faq-answer{max-height:0;overflow:hidden;transition:max-height .5s cubic-bezier(.23,1,.32,1),padding .5s}\r\n.faq-item.open .faq-answer{max-height:300px;padding-bottom:1.3rem}\r\n.faq-answer p{font-size:.92rem;color:var(--text-secondary);line-height:1.85}\r\n\r\n\/*\u2550\u2550\u2550 CTA FINAL \u2550\u2550\u2550*\/\r\n.cta-section{\r\n  min-height:60vh;display:flex;flex-direction:column;align-items:center;justify-content:center;\r\n  text-align:center;padding:7rem 6%;background:var(--surface-alt);position:relative;overflow:hidden;\r\n}\r\n.cta-section::before{\r\n  content:'';position:absolute;width:500px;height:500px;border-radius:50%;\r\n  background:rgba(var(--accent-rgb),.04);filter:blur(100px);\r\n  bottom:-100px;left:50%;transform:translateX(-50%);pointer-events:none;\r\n}\r\n.cta-tag{font-size:.7rem;font-weight:700;letter-spacing:.2em;text-transform:uppercase;color:var(--accent);margin-bottom:1.5rem;display:block}\r\n.cta-title{font-family:var(--font-heading);font-size:clamp(2.2rem,4.5vw,3.5rem);font-weight:700;line-height:1.05;max-width:550px;margin-bottom:1.2rem}\r\n.cta-desc{font-size:1.05rem;color:var(--text-secondary);max-width:460px;line-height:1.7;margin-bottom:2.5rem}\r\n.cta-btn{\r\n  display:inline-flex;align-items:center;gap:.7rem;\r\n  background:var(--accent);color:var(--white);padding:1.1rem 2.5rem;\r\n  border-radius:14px;font-weight:700;font-size:1.02rem;\r\n  transition:all .4s;position:relative;overflow:hidden;\r\n}\r\n.cta-btn::before{\r\n  content:'';position:absolute;inset:0;\r\n  background:linear-gradient(90deg,transparent,rgba(255,255,255,.18),transparent);\r\n  transform:translateX(-100%);transition:transform .6s;\r\n}\r\n.cta-btn:hover::before{transform:translateX(100%)}\r\n.cta-btn:hover{transform:translateY(-3px);box-shadow:0 15px 50px rgba(var(--accent-rgb),.25)}\r\n.cta-btn svg{width:18px;height:18px;transition:transform .3s}\r\n.cta-btn:hover svg{transform:translateX(4px)}\r\n.cta-sub{margin-top:1rem;font-size:.78rem;color:var(--text-muted)}\r\n\r\n\r\n\/*\u2550\u2550\u2550 PLACEHOLDER IMAGES \u2550\u2550\u2550*\/\r\n.placeholder-img{width:100%;height:100%;background-size:cover;background-position:center}\r\n.img-strategy{background:linear-gradient(135deg,#e8f0ff 0%,#f0e8ff 30%,#e8f8ff 100%)}\r\n.img-branding{background:linear-gradient(135deg,#f0e8ff 0%,#ffe8f0 30%,#e8f0ff 100%)}\r\n.img-sports{background:linear-gradient(135deg,#e8ffe8 0%,#e8f8ff 30%,#e8f0ff 100%)}\r\n.img-content{background:linear-gradient(135deg,#fff5e8 0%,#ffe8e8 30%,#f8e8ff 100%)}\r\n.img-intro{background:linear-gradient(135deg,#e8f0ff 0%,#f0e8ff 50%,#e8f8ff 100%)}\r\n.img-why{background:linear-gradient(135deg,#eef3ff 0%,#f0e8ff 50%,#e8f0ff 100%)}\r\n\r\n\/*\u2550\u2550\u2550 REVEAL STATES \u2550\u2550\u2550*\/\r\n.reveal-up{opacity:0;transform:translateY(50px)}\r\n.reveal-right{opacity:0;transform:translateX(50px)}\r\n.reveal-scale{opacity:0;transform:scale(.92)}\r\n\r\n\/*\u2550\u2550\u2550 RESPONSIVE \u2550\u2550\u2550*\/\r\n@media(max-width:1024px){\r\n  .intro-grid,.why-inner{grid-template-columns:1fr;gap:3rem}\r\n  .intro-image{max-height:350px}\r\n  .why-image{max-height:400px;aspect-ratio:16\/9}\r\n  .process-grid{grid-template-columns:repeat(2,1fr)}\r\n  .process-step{border-bottom:1px solid var(--light-gray)}\r\n  .process-step:nth-child(even){border-right:none}\r\n  .why-grid{grid-template-columns:1fr 1fr}\r\n  .service-card{width:320px}\r\n}\r\n@media(max-width:768px){\r\n  .nav-links a:not(.nav-cta){display:none}\r\n  .process-grid{grid-template-columns:1fr}\r\n  .process-step{border-right:none}\r\n  .why-grid{grid-template-columns:1fr}\r\n  .service-card{width:290px}\r\n  .hero-title{font-size:clamp(2.8rem,13vw,5rem)}\r\n}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n\r\n<!-- \u2550\u2550\u2550 LOADER \u2550\u2550\u2550 -->\r\n<div class=\"loader\" id=\"loader\">\r\n  <div class=\"loader-bar\"><div class=\"loader-bar-fill\" id=\"loader-fill\"><\/div><\/div>\r\n  <div class=\"loader-text\">Cargando experiencia<\/div>\r\n<\/div>\r\n\r\n\r\n<!-- \u2550\u2550\u2550 HERO \u2014 Animated wireframe globe of lines \u2550\u2550\u2550 -->\r\n<section class=\"hero\" id=\"hero\">\r\n  <div class=\"hero-globe\" id=\"hero-globe\">\r\n    <!-- SVG globe generated by JS -->\r\n  <\/div>\r\n  <div class=\"hero-content\">\r\n    <h1 class=\"hero-title\">Vortex Media<\/h1>\r\n    <p class=\"hero-subtitle\">Agencia de Comunicaci\u00f3n<\/p>\r\n    <div class=\"hero-line\"><\/div>\r\n  <\/div>\r\n  <div class=\"hero-scroll-indicator\">\r\n    <span>Scroll<\/span>\r\n    <div class=\"scroll-line\"><\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 INTRO \u2014 Clear hierarchy: one title, one lead, body text \u2550\u2550\u2550 -->\r\n<section class=\"intro-section\" id=\"intro\">\r\n  <div class=\"intro-grid\">\r\n    <div>\r\n      <div class=\"intro-tag reveal-up\">Qui\u00e9nes somos<\/div>\r\n      <h2 class=\"intro-title reveal-up\">Comunicaci\u00f3n con visi\u00f3n estrat\u00e9gica.<\/h2>\r\n      <p class=\"intro-lead reveal-up\">Somos Vortex Media, una agencia especializada en transformar la forma en que las marcas se relacionan con su entorno.<\/p>\r\n      <div class=\"intro-text\">\r\n        <p class=\"reveal-up\">Trabajamos con empresas en crecimiento, marcas que necesitan reinventarse y deportistas que quieren construir una imagen p\u00fablica s\u00f3lida. Comunicar correctamente no es un lujo \u2014 es una ventaja competitiva.<\/p>\r\n        <p class=\"reveal-up\">Cada mensaje que lanzas al mundo tiene consecuencias en c\u00f3mo te percibe tu audiencia. Nosotros nos aseguramos de que esas consecuencias sean exactamente las que buscas.<\/p>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"intro-image reveal-right\">\r\n      <div class=\"placeholder-img img-intro\">\r\n        <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 600 450\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" preserveAspectRatio=\"xMidYMid slice\">\r\n          <circle cx=\"200\" cy=\"180\" r=\"120\" fill=\"none\" stroke=\"rgba(0,85,255,.1)\" stroke-width=\"1\"\/>\r\n          <circle cx=\"200\" cy=\"180\" r=\"80\" fill=\"none\" stroke=\"rgba(0,85,255,.08)\" stroke-width=\"1\"\/>\r\n          <circle cx=\"400\" cy=\"280\" r=\"100\" fill=\"none\" stroke=\"rgba(100,0,255,.08)\" stroke-width=\"1\"\/>\r\n          <circle cx=\"400\" cy=\"280\" r=\"60\" fill=\"none\" stroke=\"rgba(100,0,255,.06)\" stroke-width=\"1\"\/>\r\n          <line x1=\"280\" y1=\"180\" x2=\"340\" y2=\"280\" stroke=\"rgba(0,85,255,.06)\" stroke-width=\"1\"\/>\r\n          <circle cx=\"150\" cy=\"350\" r=\"40\" fill=\"rgba(0,85,255,.03)\"\/>\r\n          <circle cx=\"450\" cy=\"100\" r=\"50\" fill=\"rgba(100,0,255,.03)\"\/>\r\n          <circle cx=\"300\" cy=\"230\" r=\"6\" fill=\"rgba(0,85,255,.15)\"\/>\r\n          <circle cx=\"200\" cy=\"180\" r=\"4\" fill=\"rgba(0,85,255,.2)\"\/>\r\n          <circle cx=\"400\" cy=\"280\" r=\"4\" fill=\"rgba(100,0,255,.2)\"\/>\r\n          <path d=\"M100,350 Q250,300 300,230 Q350,160 500,120\" fill=\"none\" stroke=\"rgba(0,85,255,.06)\" stroke-width=\"1.5\" stroke-dasharray=\"4,6\"\/>\r\n          <text x=\"300\" y=\"240\" text-anchor=\"middle\" font-family=\"Space Grotesk,sans-serif\" font-size=\"42\" font-weight=\"700\" fill=\"rgba(0,85,255,.04)\">VM<\/text>\r\n        <\/svg>\r\n      <\/div>\r\n      <div class=\"intro-image-overlay\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 SERVICES \u2014 Free horizontal scroll \u2550\u2550\u2550 -->\r\n<section class=\"services-section\" id=\"servicios\">\r\n  <div class=\"services-header\">\r\n    <span class=\"section-tag reveal-up\">Qu\u00e9 hacemos<\/span>\r\n    <h2 class=\"reveal-up\">Cuatro \u00e1reas de trabajo.<br>Un mismo objetivo.<\/h2>\r\n    <p class=\"reveal-up\">Que tu comunicaci\u00f3n trabaje para ti, no contra ti.<\/p>\r\n    <div class=\"services-scroll-hint reveal-up\">\r\n      Desliza para explorar\r\n      <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div class=\"services-track-outer\" id=\"services-scroller\">\r\n    <div class=\"services-track\" id=\"services-track\">\r\n\r\n      <div class=\"service-card card-1 reveal-up\">\r\n        <div class=\"service-card-image\">\r\n          <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 400 200\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"background:linear-gradient(135deg,#e8f0ff,#f0e8ff,#e8f8ff)\">\r\n            <circle cx=\"80\" cy=\"100\" r=\"50\" fill=\"rgba(0,85,255,.06)\"\/>\r\n            <circle cx=\"200\" cy=\"80\" r=\"35\" fill=\"rgba(0,85,255,.04)\"\/>\r\n            <circle cx=\"320\" cy=\"120\" r=\"45\" fill=\"rgba(0,85,255,.05)\"\/>\r\n            <path d=\"M80,100 L200,80 L320,120\" fill=\"none\" stroke=\"rgba(0,85,255,.12)\" stroke-width=\"1.5\"\/>\r\n            <circle cx=\"80\" cy=\"100\" r=\"4\" fill=\"rgba(0,85,255,.3)\"\/>\r\n            <circle cx=\"200\" cy=\"80\" r=\"4\" fill=\"rgba(0,85,255,.3)\"\/>\r\n            <circle cx=\"320\" cy=\"120\" r=\"4\" fill=\"rgba(0,85,255,.3)\"\/>\r\n            <text x=\"200\" y=\"170\" text-anchor=\"middle\" font-family=\"Space Grotesk,sans-serif\" font-size=\"13\" font-weight=\"600\" fill=\"rgba(0,85,255,.08)\" letter-spacing=\"4\">STRATEGY<\/text>\r\n          <\/svg>\r\n          <div class=\"service-card-gradient\"><\/div>\r\n        <\/div>\r\n        <div class=\"service-card-body\">\r\n          <div class=\"service-card-number\">01 \u2014 CONSULTOR\u00cdA<\/div>\r\n          <h3>Consultor\u00eda y estrategia de comunicaci\u00f3n<\/h3>\r\n          <p>Analizamos tu posicionamiento, la percepci\u00f3n real de tu audiencia y lo que hace tu competencia. Dise\u00f1amos un plan estrat\u00e9gico con objetivos, mensajes clave y un calendario ejecutable.<\/p>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<a href=\"\/contacto\/\" class=\"service-card-link\">Agendar reuni\u00f3n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg><\/a>\r\n\t\t\t<a href=\"https:\/\/vortexmedia.agency\/es\/consultoria-esp\/\" class=\"service-card-link\">Saber m\u00e1s <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg><\/a>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"service-card card-2 reveal-up\">\r\n        <div class=\"service-card-image\">\r\n          <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 400 200\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"background:linear-gradient(135deg,#f0e8ff,#ffe8f0,#e8f0ff)\">\r\n            <rect x=\"140\" y=\"50\" width=\"120\" height=\"100\" rx=\"8\" fill=\"none\" stroke=\"rgba(100,0,255,.1)\" stroke-width=\"1.5\"\/>\r\n            <rect x=\"150\" y=\"60\" width=\"100\" height=\"80\" rx=\"5\" fill=\"none\" stroke=\"rgba(100,0,255,.07)\" stroke-width=\"1\"\/>\r\n            <circle cx=\"200\" cy=\"100\" r=\"20\" fill=\"rgba(100,0,255,.06)\"\/>\r\n            <text x=\"200\" y=\"108\" text-anchor=\"middle\" font-family=\"Space Grotesk,sans-serif\" font-size=\"18\" font-weight=\"700\" fill=\"rgba(100,0,255,.15)\">B<\/text>\r\n            <line x1=\"80\" y1=\"100\" x2=\"140\" y2=\"100\" stroke=\"rgba(100,0,255,.06)\" stroke-width=\"1\" stroke-dasharray=\"3,5\"\/>\r\n            <line x1=\"260\" y1=\"100\" x2=\"330\" y2=\"100\" stroke=\"rgba(100,0,255,.06)\" stroke-width=\"1\" stroke-dasharray=\"3,5\"\/>\r\n            <text x=\"200\" y=\"178\" text-anchor=\"middle\" font-family=\"Space Grotesk,sans-serif\" font-size=\"13\" font-weight=\"600\" fill=\"rgba(100,0,255,.08)\" letter-spacing=\"4\">BRANDING<\/text>\r\n          <\/svg>\r\n          <div class=\"service-card-gradient\"><\/div>\r\n        <\/div>\r\n        <div class=\"service-card-body\">\r\n          <div class=\"service-card-number\">02 \u2014 BRANDING<\/div>\r\n          <h3>Branding e identidad de marca<\/h3>\r\n          <p>Construimos marcas desde la ra\u00edz: plataforma de marca, identidad verbal, identidad visual y un sistema coherente que funciona en todos los puntos de contacto.<\/p>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<a href=\"\/contacto\/\" class=\"service-card-link\">Pedir an\u00e1lisis de marca <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg><\/a>\r\n\t\t\t<a href=\"https:\/\/vortexmedia.agency\/es\/branding-esp\/\" class=\"service-card-link\">Saber m\u00e1s <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg><\/a>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"service-card card-3 reveal-up\">\r\n        <div class=\"service-card-image\">\r\n          <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 400 200\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"background:linear-gradient(135deg,#e8ffe8,#e8f8ff,#e8f0ff)\">\r\n            <circle cx=\"200\" cy=\"95\" r=\"60\" fill=\"none\" stroke=\"rgba(0,180,100,.08)\" stroke-width=\"1.5\"\/>\r\n            <path d=\"M160,55 Q200,20 240,55\" fill=\"none\" stroke=\"rgba(0,180,100,.1)\" stroke-width=\"1.5\"\/>\r\n            <path d=\"M160,135 Q200,170 240,135\" fill=\"none\" stroke=\"rgba(0,180,100,.1)\" stroke-width=\"1.5\"\/>\r\n            <circle cx=\"200\" cy=\"95\" r=\"3\" fill=\"rgba(0,180,100,.25)\"\/>\r\n            <path d=\"M80,95 L140,95 M260,95 L320,95\" stroke=\"rgba(0,180,100,.06)\" stroke-width=\"1\" stroke-dasharray=\"3,5\"\/>\r\n            <polygon points=\"190,75 210,75 200,60\" fill=\"rgba(0,180,100,.08)\"\/>\r\n            <text x=\"200\" y=\"178\" text-anchor=\"middle\" font-family=\"Space Grotesk,sans-serif\" font-size=\"13\" font-weight=\"600\" fill=\"rgba(0,180,100,.08)\" letter-spacing=\"4\">SPORTS<\/text>\r\n          <\/svg>\r\n          <div class=\"service-card-gradient\"><\/div>\r\n        <\/div>\r\n        <div class=\"service-card-body\">\r\n          <div class=\"service-card-number\">03 \u2014 DEPORTIVO<\/div>\r\n          <h3>Imagen y comunicaci\u00f3n deportiva<\/h3>\r\n          <p>Dise\u00f1amos y gestionamos la imagen de deportistas con la misma rigurosidad estrat\u00e9gica que aplicamos a empresas. Marca personal, medios, redes y gesti\u00f3n de crisis.<\/p>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<a href=\"\/contacto\/\" class=\"service-card-link\">Agendar reuni\u00f3n <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg><\/a>\r\n\t\t\t<a href=\"https:\/\/vortexmedia.agency\/es\/comunicacion-deportiva\/\" class=\"service-card-link\">Saber m\u00e1s <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg><\/a>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"service-card card-4 reveal-up\">\r\n        <div class=\"service-card-image\">\r\n          <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 400 200\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" style=\"background:linear-gradient(135deg,#fff5e8,#ffe8e8,#f8e8ff)\">\r\n            <rect x=\"100\" y=\"45\" width=\"60\" height=\"60\" rx=\"6\" fill=\"rgba(255,120,0,.05)\" stroke=\"rgba(255,120,0,.08)\" stroke-width=\"1\"\/>\r\n            <rect x=\"180\" y=\"65\" width=\"60\" height=\"60\" rx=\"6\" fill=\"rgba(255,120,0,.04)\" stroke=\"rgba(255,120,0,.06)\" stroke-width=\"1\"\/>\r\n            <rect x=\"260\" y=\"50\" width=\"60\" height=\"60\" rx=\"6\" fill=\"rgba(255,120,0,.05)\" stroke=\"rgba(255,120,0,.08)\" stroke-width=\"1\"\/>\r\n            <line x1=\"160\" y1=\"75\" x2=\"180\" y2=\"95\" stroke=\"rgba(255,120,0,.08)\" stroke-width=\"1\"\/>\r\n            <line x1=\"240\" y1=\"95\" x2=\"260\" y2=\"80\" stroke=\"rgba(255,120,0,.08)\" stroke-width=\"1\"\/>\r\n            <rect x=\"110\" y=\"55\" width=\"40\" height=\"5\" rx=\"2\" fill=\"rgba(255,120,0,.06)\"\/>\r\n            <rect x=\"110\" y=\"65\" width=\"30\" height=\"3\" rx=\"1\" fill=\"rgba(255,120,0,.04)\"\/>\r\n            <text x=\"200\" y=\"178\" text-anchor=\"middle\" font-family=\"Space Grotesk,sans-serif\" font-size=\"13\" font-weight=\"600\" fill=\"rgba(255,120,0,.08)\" letter-spacing=\"4\">CONTENT<\/text>\r\n          <\/svg>\r\n          <div class=\"service-card-gradient\"><\/div>\r\n        <\/div>\r\n        <div class=\"service-card-body\">\r\n          <div class=\"service-card-number\">04 \u2014 CONTENIDOS<\/div>\r\n          <h3>Gesti\u00f3n de contenidos y redes sociales<\/h3>\r\n          <p>Estrategia, calendario editorial, creaci\u00f3n, publicaci\u00f3n y reporting mensual con m\u00e9tricas que importan de verdad. Cada pieza tiene un objetivo concreto.<\/p>\r\n          <a href=\"\/contacto\/\" class=\"service-card-link\">Pedir presupuesto <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg><\/a>\r\n\t\t\t<a href=\"https:\/\/vortexmedia.agency\/es\/social-media-esp\/\" class=\"service-card-link\">Saber m\u00e1s <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg><\/a>\r\n        <\/div>\r\n      <\/div>\r\n\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"services-dots\" id=\"services-dots\">\r\n    <div class=\"services-dot active\" data-index=\"0\"><\/div>\r\n    <div class=\"services-dot\" data-index=\"1\"><\/div>\r\n    <div class=\"services-dot\" data-index=\"2\"><\/div>\r\n    <div class=\"services-dot\" data-index=\"3\"><\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 MARQUEE \u2550\u2550\u2550 -->\r\n<div class=\"marquee-section\">\r\n  <div class=\"marquee-track\">\r\n    <span class=\"marquee-item\">Estrategia <span class=\"dot\"><\/span> Branding <span class=\"dot\"><\/span> Comunicaci\u00f3n Deportiva <span class=\"dot\"><\/span> Contenidos <span class=\"dot\"><\/span> Consultor\u00eda <span class=\"dot\"><\/span> Identidad Visual <span class=\"dot\"><\/span> Redes Sociales <span class=\"dot\"><\/span> Gesti\u00f3n de Crisis <span class=\"dot\"><\/span> Marca Personal<\/span>\r\n    <span class=\"marquee-item\">Estrategia <span class=\"dot\"><\/span> Branding <span class=\"dot\"><\/span> Comunicaci\u00f3n Deportiva <span class=\"dot\"><\/span> Contenidos <span class=\"dot\"><\/span> Consultor\u00eda <span class=\"dot\"><\/span> Identidad Visual <span class=\"dot\"><\/span> Redes Sociales <span class=\"dot\"><\/span> Gesti\u00f3n de Crisis <span class=\"dot\"><\/span> Marca Personal<\/span>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- \u2550\u2550\u2550 PROCESS \u2550\u2550\u2550 -->\r\n<section class=\"process-section\" id=\"proceso\">\r\n  <div class=\"process-header\">\r\n    <span class=\"section-tag reveal-up\">C\u00f3mo trabajamos<\/span>\r\n    <h2 class=\"reveal-up\">Un m\u00e9todo claro.<\/h2>\r\n    <p class=\"reveal-up\">No creemos en f\u00f3rmulas m\u00e1gicas. Pero s\u00ed en un proceso que ha demostrado funcionar.<\/p>\r\n  <\/div>\r\n  <div class=\"process-grid\">\r\n    <div class=\"process-step reveal-up\">\r\n      <div class=\"process-number\"><span class=\"process-number-glow\"><\/span>01<\/div>\r\n      <h3>Escuchamos<\/h3>\r\n      <p>Entendemos tu negocio, tus objetivos y tu cultura interna. No empezamos a trabajar hasta que tu realidad sea la nuestra.<\/p>\r\n    <\/div>\r\n    <div class=\"process-step reveal-up\">\r\n      <div class=\"process-number\"><span class=\"process-number-glow\"><\/span>02<\/div>\r\n      <h3>Diagnosticamos<\/h3>\r\n      <p>Analizamos tu comunicaci\u00f3n actual, tu posicionamiento frente a la competencia y la percepci\u00f3n real de tu audiencia.<\/p>\r\n    <\/div>\r\n    <div class=\"process-step reveal-up\">\r\n      <div class=\"process-number\"><span class=\"process-number-glow\"><\/span>03<\/div>\r\n      <h3>Dise\u00f1amos<\/h3>\r\n      <p>Creamos la estrategia: mensajes clave, canales prioritarios, calendario de acciones y m\u00e9tricas de \u00e9xito.<\/p>\r\n    <\/div>\r\n    <div class=\"process-step reveal-up\">\r\n      <div class=\"process-number\"><span class=\"process-number-glow\"><\/span>04<\/div>\r\n      <h3>Ejecutamos<\/h3>\r\n      <p>Acompa\u00f1amos la implementaci\u00f3n, medimos y ajustamos. La estrategia es una herramienta viva que evoluciona contigo.<\/p>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 WHY US \u2550\u2550\u2550 -->\r\n<section class=\"why-section\" id=\"nosotros\">\r\n  <div class=\"why-inner\">\r\n    <div>\r\n      <div class=\"why-header reveal-up\">\r\n        <span class=\"section-tag\">Por qu\u00e9 Vortex Media<\/span>\r\n        <h2>Lo que nos diferencia no es lo que decimos. Es c\u00f3mo trabajamos.<\/h2>\r\n        <p>Hay muchas agencias. La mayor\u00eda te presentar\u00e1n un DAFO y un calendario de redes. Eso no es estrategia \u2014 es el m\u00ednimo.<\/p>\r\n      <\/div>\r\n      <div class=\"why-grid\">\r\n        <div class=\"why-card reveal-up\"><h3>Enfoque estrat\u00e9gico<\/h3><p>Cada recomendaci\u00f3n se basa en datos y an\u00e1lisis profundo, no en intuiciones ni plantillas gen\u00e9ricas.<\/p><\/div>\r\n        <div class=\"why-card reveal-up\"><h3>Equipo <\/h3><p>Tus interlocutores tienen experiencia directa en direcci\u00f3n de comunicaci\u00f3n. <\/p><\/div>\r\n        <div class=\"why-card reveal-up\"><h3>Acompa\u00f1amiento<\/h3><p>Estamos contigo durante la ejecuci\u00f3n, ajustando en tiempo real lo que sea necesario.<\/p><\/div>\r\n        <div class=\"why-card reveal-up\"><h3>Comunicaci\u00f3n deportiva<\/h3><p>La imagen de deportistas profesionales con la misma metodolog\u00eda que aplicamos a empresas.<\/p><\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"why-image reveal-right\">\r\n      <div class=\"placeholder-img img-why\">\r\n        <svg width=\"100%\" height=\"100%\" viewBox=\"0 0 450 600\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" preserveAspectRatio=\"xMidYMid slice\">\r\n          <circle cx=\"225\" cy=\"250\" r=\"150\" fill=\"none\" stroke=\"rgba(0,85,255,.06)\" stroke-width=\"1\"\/>\r\n          <circle cx=\"225\" cy=\"250\" r=\"100\" fill=\"none\" stroke=\"rgba(0,85,255,.05)\" stroke-width=\"1\"\/>\r\n          <circle cx=\"225\" cy=\"250\" r=\"50\" fill=\"none\" stroke=\"rgba(0,85,255,.04)\" stroke-width=\"1\"\/>\r\n          <circle cx=\"225\" cy=\"250\" r=\"5\" fill=\"rgba(0,85,255,.2)\"\/>\r\n          <circle cx=\"130\" cy=\"150\" r=\"3\" fill=\"rgba(0,85,255,.15)\"\/>\r\n          <circle cx=\"320\" cy=\"180\" r=\"3\" fill=\"rgba(100,0,255,.15)\"\/>\r\n          <circle cx=\"160\" cy=\"380\" r=\"3\" fill=\"rgba(0,85,255,.15)\"\/>\r\n          <circle cx=\"340\" cy=\"350\" r=\"3\" fill=\"rgba(100,0,255,.15)\"\/>\r\n          <line x1=\"130\" y1=\"150\" x2=\"225\" y2=\"250\" stroke=\"rgba(0,85,255,.04)\" stroke-width=\"1\"\/>\r\n          <line x1=\"320\" y1=\"180\" x2=\"225\" y2=\"250\" stroke=\"rgba(100,0,255,.04)\" stroke-width=\"1\"\/>\r\n          <line x1=\"160\" y1=\"380\" x2=\"225\" y2=\"250\" stroke=\"rgba(0,85,255,.04)\" stroke-width=\"1\"\/>\r\n          <line x1=\"340\" y1=\"350\" x2=\"225\" y2=\"250\" stroke=\"rgba(100,0,255,.04)\" stroke-width=\"1\"\/>\r\n          <line x1=\"130\" y1=\"150\" x2=\"320\" y2=\"180\" stroke=\"rgba(0,85,255,.03)\" stroke-width=\"1\" stroke-dasharray=\"4,6\"\/>\r\n          <line x1=\"160\" y1=\"380\" x2=\"340\" y2=\"350\" stroke=\"rgba(100,0,255,.03)\" stroke-width=\"1\" stroke-dasharray=\"4,6\"\/>\r\n          <text x=\"225\" y=\"500\" text-anchor=\"middle\" font-family=\"Space Grotesk,sans-serif\" font-size=\"48\" font-weight=\"700\" fill=\"rgba(0,85,255,.03)\">VORTEX<\/text>\r\n        <\/svg>\r\n      <\/div>\r\n      <div class=\"why-image-overlay\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 FAQ \u2550\u2550\u2550 -->\r\n<section class=\"faq-section\" id=\"faq\">\r\n  <div class=\"faq-inner\">\r\n    <div class=\"faq-header\">\r\n      <span class=\"section-tag reveal-up\">Preguntas frecuentes<\/span>\r\n      <h2 class=\"reveal-up\">Lo que suelen preguntarnos<\/h2>\r\n    <\/div>\r\n    <div class=\"faq-list\">\r\n      <div class=\"faq-item reveal-up\">\r\n        <div class=\"faq-question\">\u00bfQu\u00e9 diferencia hay entre una agencia de marketing y una de comunicaci\u00f3n?<span class=\"faq-icon\">+<\/span><\/div>\r\n \u00a0 \u00a0 \u00a0 \u00a0<div class=\"faq-answer\"><p>Una agencia de marketing se centra en generar ventas directas. Una agencia de comunicaci\u00f3n va ms all. En Vortex Media trabajamos la forma en que tu marca se relaciona con su entorno: c\u00f3mo se percibe, qu\u00e9 dice y qu\u00e9 impacto tiene cada mensaje en tu reputaci\u00f3n. Vortex Media combina la visi\u00f3n estrat\u00e9gica con orientaci\u00f3n a resultados de negocio.<\/p><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item reveal-up\">\r\n        <div class=\"faq-question\">\u00bfNecesita mi empresa una consultor\u00eda de comunicaci\u00f3n?<span class=\"faq-icon\">+<\/span><\/div>\r\n        <div class=\"faq-answer\"><p>Si tu empresa es buena en lo que hace pero no lo transmite como deber\u00eda, probablemente s\u00ed. Tambi\u00e9n si est\u00e1s a punto de lanzar un producto nuevo, si has crecido m\u00e1s r\u00e1pido que tu comunicaci\u00f3n o si llevas a\u00f1os publicando sin estrategia clara.<\/p><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item reveal-up\">\r\n        <div class=\"faq-question\">\u00bfCu\u00e1nto cuesta contratar una agencia de comunicaci\u00f3n?<span class=\"faq-icon\">+<\/span><\/div>\r\n        <div class=\"faq-answer\"><p>Depende del proyecto. Trabajamos con presupuestos adaptados a cada cliente. Cu\u00e9ntanos qu\u00e9 necesitas a trav\u00e9s de nuestro cuestionario y te preparamos una propuesta personalizada sin compromiso.<\/p><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item reveal-up\">\r\n        <div class=\"faq-question\">\u00bfTrabaj\u00e1is solo con grandes empresas?<span class=\"faq-icon\">+<\/span><\/div>\r\n \u00a0 \u00a0 \u00a0 \u00a0<div class=\"faq-answer\"><p>Trabajamos con empresas de todos los tama\u00f1os y atletas que entienden el valor de una buena comunicaci\u00f3n. De hecho, muchas veces son las PYMEs en crecimiento las que m\u00e1s se benefician.<\/p><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item reveal-up\">\r\n        <div class=\"faq-question\">\u00bfC\u00f3mo funciona el servicio de comunicaci\u00f3n deportiva?<span class=\"faq-icon\">+<\/span><\/div>\r\n \u00a0 \u00a0 \u00a0 \u00a0<div class=\"faq-answer\"><p>Trabajamos con deportistas profesionales y semiprofesionales de cualquier disciplina. Marca personal, redes sociales, medios, patrocinios y derechos de imagen. Todo con metodolog\u00eda estrat\u00e9gica acorde a su visi\u00f3n.<\/p><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item reveal-up\">\r\n        <div class=\"faq-question\">\u00bfEn qu\u00e9 zonas de trabaj\u00e1is?<span class=\"faq-icon\">+<\/span><\/div>\r\n        <div class=\"faq-answer\"><p> Operamos remota \u2014 por lo que la ubicaci\u00f3n no es una barrera.<\/p><\/div>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/section>\r\n\r\n<!-- \u2550\u2550\u2550 CTA FINAL \u2550\u2550\u2550 -->\r\n<section class=\"cta-section\" id=\"contacto\">\r\n  <span class=\"cta-tag reveal-up\">Empecemos<\/span>\r\n  <h2 class=\"cta-title reveal-up\">Cu\u00e9ntanos qu\u00e9 necesitas<\/h2>\r\n  <p class=\"cta-desc reveal-up\">Rellena nuestro cuestionario. Te preparamos una propuesta personalizada en menos de 48 horas.<\/p>\r\n  <a href=\"https:\/\/vortexmedia.agency\/contacto\/\" class=\"cta-btn reveal-scale\">\r\n    Solicita tu presupuesto\r\n    <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" stroke-linecap=\"round\"><path d=\"M5 12h14M12 5l7 7-7 7\"\/><\/svg>\r\n  <\/a>\r\n  <p class=\"cta-sub reveal-up\">Respuesta en menos de 24 horas \u00b7 Sin compromiso<\/p>\r\n<\/section>\r\n\r\n\r\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\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n     ANIMATED WIREFRAME GLOBE \u2014 Pure SVG + JS (no Three.js needed)\r\n     Guaranteed to work in all browsers\r\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\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n<script>\r\n(function(){\r\n  const container = document.getElementById('hero-globe');\r\n  const size = 700;\r\n  const cx = size\/2, cy = size\/2, R = 260;\r\n\r\n  \/\/ Create SVG\r\n  const ns = 'http:\/\/www.w3.org\/2000\/svg';\r\n  const svg = document.createElementNS(ns,'svg');\r\n  svg.setAttribute('viewBox','0 0 '+size+' '+size);\r\n  svg.setAttribute('xmlns',ns);\r\n  svg.style.width = 'min(80vw,700px)';\r\n  svg.style.height = 'min(80vw,700px)';\r\n  svg.style.opacity = '0';\r\n  container.appendChild(svg);\r\n\r\n  \/\/ Defs for glow filter\r\n  const defs = document.createElementNS(ns,'defs');\r\n  defs.innerHTML = '<filter id=\"glow\"><feGaussianBlur stdDeviation=\"2\" result=\"blur\"\/><feMerge><feMergeNode in=\"blur\"\/><feMergeNode in=\"SourceGraphic\"\/><\/feMerge><\/filter>';\r\n  svg.appendChild(defs);\r\n\r\n  \/\/ Generate longitude lines (meridians)\r\n  const meridians = [];\r\n  const meridianCount = 16;\r\n  for(let i=0; i<meridianCount; i++){\r\n    const path = document.createElementNS(ns,'ellipse');\r\n    path.setAttribute('cx', cx);\r\n    path.setAttribute('cy', cy);\r\n    path.setAttribute('rx', R);\r\n    path.setAttribute('ry', R);\r\n    path.setAttribute('fill', 'none');\r\n    path.setAttribute('stroke', 'rgba(0,85,255,0.12)');\r\n    path.setAttribute('stroke-width', '0.8');\r\n    const angle = (i\/meridianCount)*180;\r\n    path.setAttribute('transform', 'rotate('+angle+' '+cx+' '+cy+')');\r\n    svg.appendChild(path);\r\n    meridians.push({el:path, baseAngle:angle});\r\n  }\r\n\r\n  \/\/ Generate latitude lines (parallels)\r\n  const parallels = [];\r\n  const latitudes = [-0.7,-0.4,-0.15,0.15,0.4,0.7];\r\n  latitudes.forEach(lat => {\r\n    const y = cy + lat * R;\r\n    const rr = Math.sqrt(R*R - (lat*R)*(lat*R));\r\n    const el = document.createElementNS(ns,'ellipse');\r\n    el.setAttribute('cx', cx);\r\n    el.setAttribute('cy', y);\r\n    el.setAttribute('rx', rr);\r\n    el.setAttribute('ry', rr*0.15); \/\/ perspective compression\r\n    el.setAttribute('fill', 'none');\r\n    el.setAttribute('stroke', 'rgba(0,85,255,0.08)');\r\n    el.setAttribute('stroke-width', '0.6');\r\n    svg.appendChild(el);\r\n    parallels.push({el, baseRx:rr, baseRy:rr*0.15, y});\r\n  });\r\n\r\n  \/\/ Equator (stronger)\r\n  const equator = document.createElementNS(ns,'ellipse');\r\n  equator.setAttribute('cx', cx);\r\n  equator.setAttribute('cy', cy);\r\n  equator.setAttribute('rx', R);\r\n  equator.setAttribute('ry', R*0.15);\r\n  equator.setAttribute('fill', 'none');\r\n  equator.setAttribute('stroke', 'rgba(0,85,255,0.18)');\r\n  equator.setAttribute('stroke-width', '1');\r\n  svg.appendChild(equator);\r\n\r\n  \/\/ Orbital ring (tilted, outside globe)\r\n  const orbit = document.createElementNS(ns,'ellipse');\r\n  orbit.setAttribute('cx', cx);\r\n  orbit.setAttribute('cy', cy);\r\n  orbit.setAttribute('rx', R+40);\r\n  orbit.setAttribute('ry', R*0.3);\r\n  orbit.setAttribute('fill', 'none');\r\n  orbit.setAttribute('stroke', 'rgba(0,85,255,0.1)');\r\n  orbit.setAttribute('stroke-width', '0.8');\r\n  orbit.setAttribute('stroke-dasharray', '6,8');\r\n  orbit.setAttribute('transform', 'rotate(-20 '+cx+' '+cy+')');\r\n  svg.appendChild(orbit);\r\n\r\n  \/\/ Small dots on the sphere surface\r\n  const dots = [];\r\n  for(let i=0; i<30; i++){\r\n    const theta = Math.random()*Math.PI*2;\r\n    const phi = Math.acos(2*Math.random()-1);\r\n    const dot = document.createElementNS(ns,'circle');\r\n    dot.setAttribute('r', Math.random()*2+1);\r\n    dot.setAttribute('fill', Math.random()>.5 ? 'rgba(0,85,255,0.2)' : 'rgba(100,0,255,0.15)');\r\n    svg.appendChild(dot);\r\n    dots.push({el:dot, theta, phi, speed:0.2+Math.random()*0.4});\r\n  }\r\n\r\n  \/\/ A few accent dots (brighter)\r\n  for(let i=0; i<5; i++){\r\n    const theta = Math.random()*Math.PI*2;\r\n    const phi = Math.acos(2*Math.random()-1);\r\n    const dot = document.createElementNS(ns,'circle');\r\n    dot.setAttribute('r', 2.5);\r\n    dot.setAttribute('fill', 'rgba(0,85,255,0.35)');\r\n    dot.setAttribute('filter', 'url(#glow)');\r\n    svg.appendChild(dot);\r\n    dots.push({el:dot, theta, phi, speed:0.15+Math.random()*0.3});\r\n  }\r\n\r\n  \/\/ Connection lines between some dots\r\n  const connections = [];\r\n  for(let i=0; i<8; i++){\r\n    const line = document.createElementNS(ns,'line');\r\n    line.setAttribute('stroke', 'rgba(0,85,255,0.06)');\r\n    line.setAttribute('stroke-width', '0.5');\r\n    svg.appendChild(line);\r\n    connections.push({el:line, a:i, b:(i+3)%dots.length});\r\n  }\r\n\r\n  let time = 0;\r\n  let mouseX = 0, mouseY = 0;\r\n  document.addEventListener('mousemove', e => {\r\n    mouseX = (e.clientX \/ window.innerWidth - 0.5) * 0.3;\r\n    mouseY = (e.clientY \/ window.innerHeight - 0.5) * 0.15;\r\n  });\r\n\r\n  function animate(){\r\n    requestAnimationFrame(animate);\r\n    time += 0.004;\r\n\r\n    const rotY = time + mouseX;\r\n    const tiltX = 0.3 + mouseY;\r\n\r\n    \/\/ Rotate meridians\r\n    meridians.forEach((m,i) => {\r\n      const angle = m.baseAngle + (rotY * 180 \/ Math.PI);\r\n      \/\/ Perspective: compress rx based on viewing angle\r\n      const viewAngle = ((angle % 180) \/ 180) * Math.PI;\r\n      const rx = Math.abs(Math.sin(viewAngle)) * R;\r\n      m.el.setAttribute('rx', Math.max(rx, 2));\r\n      m.el.setAttribute('ry', R);\r\n      m.el.setAttribute('transform', 'rotate(0 '+cx+' '+cy+')');\r\n      \/\/ Simpler: just rotate the whole set\r\n      m.el.setAttribute('transform', 'rotate('+(m.baseAngle + time*15)+' '+cx+' '+cy+')');\r\n    });\r\n\r\n    \/\/ Animate dots position on sphere\r\n    dots.forEach(d => {\r\n      d.theta += d.speed * 0.005;\r\n      const x = cx + R * 0.85 * Math.sin(d.phi) * Math.cos(d.theta + rotY);\r\n      const y = cy + R * 0.85 * Math.cos(d.phi) * Math.cos(tiltX) + R * 0.85 * Math.sin(d.phi) * Math.sin(d.theta + rotY) * Math.sin(tiltX);\r\n      const z = Math.sin(d.phi) * Math.sin(d.theta + rotY);\r\n      \/\/ Only show front-facing dots\r\n      const opacity = z > 0 ? 0.05 : (0.15 + z * -0.2);\r\n      d.el.setAttribute('cx', x);\r\n      d.el.setAttribute('cy', y);\r\n      d.el.style.opacity = Math.max(0.05, opacity);\r\n      d._x = x; d._y = y;\r\n    });\r\n\r\n    \/\/ Update connections\r\n    connections.forEach(c => {\r\n      const a = dots[c.a], b = dots[c.b];\r\n      if(a && b && a._x && b._x){\r\n        c.el.setAttribute('x1', a._x);\r\n        c.el.setAttribute('y1', a._y);\r\n        c.el.setAttribute('x2', b._x);\r\n        c.el.setAttribute('y2', b._y);\r\n      }\r\n    });\r\n\r\n    \/\/ Slowly rotate orbital ring\r\n    orbit.setAttribute('transform', 'rotate('+(-20+time*8)+' '+cx+' '+cy+')');\r\n\r\n    \/\/ Gentle equator breathing\r\n    equator.setAttribute('ry', R*0.15 + Math.sin(time*2)*5);\r\n  }\r\n  animate();\r\n})();\r\n<\/script>\r\n\r\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\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550\r\n     GSAP ANIMATIONS\r\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\u2550\u2550\u2550\u2550\u2550\u2550\u2550\u2550 -->\r\n<script>\r\ndocument.addEventListener('DOMContentLoaded',()=>{\r\n  gsap.registerPlugin(ScrollTrigger,ScrollToPlugin);\r\n\r\n  \/\/ \u2500\u2500 Loader \u2500\u2500\r\n  let progress=0;\r\n  const fill=document.getElementById('loader-fill');\r\n  const iv=setInterval(()=>{\r\n    progress+=Math.random()*25+10;\r\n    if(progress>100)progress=100;\r\n    fill.style.width=progress+'%';\r\n    if(progress>=100){clearInterval(iv);setTimeout(()=>{document.getElementById('loader').classList.add('hidden');heroIn()},400)}\r\n  },200);\r\n\r\n  function heroIn(){\r\n    const tl=gsap.timeline();\r\n    \/\/ Fade in globe first\r\n    tl.to('#hero-globe svg',{opacity:1,duration:1.5,ease:'power2.out'})\r\n      .to('.hero-title',{opacity:1,y:0,duration:1.2,ease:'power4.out'},'-=1')\r\n      .to('.hero-subtitle',{opacity:1,y:0,duration:.8,ease:'power3.out'},'-=.6')\r\n      .to('.hero-line',{scaleX:1,duration:.8,ease:'power3.inOut'},'-=.4')\r\n      .to('.hero-scroll-indicator',{opacity:1,duration:1,ease:'power2.out'},'-=.3');\r\n  }\r\n\r\n  \/\/ \u2500\u2500 Hero parallax \u2500\u2500\r\n  gsap.to('.hero-content',{y:-120,opacity:0,scrollTrigger:{trigger:'.hero',start:'top top',end:'bottom top',scrub:1}});\r\n  gsap.to('#hero-globe',{y:-80,scale:.9,opacity:0,scrollTrigger:{trigger:'.hero',start:'top top',end:'bottom top',scrub:1}});\r\n\r\n  \/\/ \u2500\u2500 Nav scroll \u2500\u2500\r\n  window.addEventListener('scroll',()=>{document.getElementById('main-nav').classList.toggle('scrolled',window.scrollY>80)});\r\n\r\n  \/\/ \u2500\u2500 Reveal animations \u2500\u2500\r\n  gsap.utils.toArray('.reveal-up').forEach((el,i)=>{\r\n    gsap.to(el,{opacity:1,y:0,duration:.9,ease:'power3.out',scrollTrigger:{trigger:el,start:'top 87%'},delay:(i%4)*.08});\r\n  });\r\n  gsap.utils.toArray('.reveal-right').forEach(el=>{\r\n    gsap.to(el,{opacity:1,x:0,duration:1,ease:'power3.out',scrollTrigger:{trigger:el,start:'top 85%'}});\r\n  });\r\n  gsap.utils.toArray('.reveal-scale').forEach(el=>{\r\n    gsap.to(el,{opacity:1,scale:1,duration:1,ease:'power3.out',scrollTrigger:{trigger:el,start:'top 85%'}});\r\n  });\r\n\r\n  \/\/ \u2500\u2500 Services \u2014 Free drag scroll \u2500\u2500\r\n  const scroller=document.getElementById('services-scroller');\r\n  const track=document.getElementById('services-track');\r\n  const cards=track.querySelectorAll('.service-card');\r\n  const dots=document.querySelectorAll('.services-dot');\r\n  let isDrag=false,startX,sLeft;\r\n\r\n  scroller.addEventListener('mousedown',e=>{isDrag=true;scroller.style.cursor='grabbing';startX=e.pageX-scroller.offsetLeft;sLeft=scroller.scrollLeft});\r\n  scroller.addEventListener('mouseleave',()=>{isDrag=false;scroller.style.cursor='grab'});\r\n  scroller.addEventListener('mouseup',()=>{isDrag=false;scroller.style.cursor='grab'});\r\n  scroller.addEventListener('mousemove',e=>{if(!isDrag)return;e.preventDefault();const x=e.pageX-scroller.offsetLeft;scroller.scrollLeft=sLeft-(x-startX)*1.5});\r\n\r\n  scroller.addEventListener('scroll',()=>{\r\n    const cardW=cards[0].offsetWidth+24;\r\n    const idx=Math.min(3,Math.round(scroller.scrollLeft\/cardW));\r\n    dots.forEach((d,i)=>d.classList.toggle('active',i===idx));\r\n  });\r\n\r\n  dots.forEach(dot=>{\r\n    dot.addEventListener('click',()=>{\r\n      const idx=parseInt(dot.dataset.index);\r\n      const cardW=cards[0].offsetWidth+24;\r\n      scroller.scrollTo({left:idx*cardW,behavior:'smooth'});\r\n    });\r\n  });\r\n\r\n  \/\/ \u2500\u2500 FAQ accordion \u2500\u2500\r\n  document.querySelectorAll('.faq-question').forEach(q=>{\r\n    q.addEventListener('click',()=>{\r\n      const item=q.parentElement;\r\n      const wasOpen=item.classList.contains('open');\r\n      document.querySelectorAll('.faq-item').forEach(i=>i.classList.remove('open'));\r\n      if(!wasOpen)item.classList.add('open');\r\n    });\r\n  });\r\n\r\n  \/\/ \u2500\u2500 Smooth anchor scrolling \u2500\u2500\r\n  document.querySelectorAll('a[href^=\"#\"]').forEach(link=>{\r\n    link.addEventListener('click',e=>{\r\n      e.preventDefault();\r\n      const target=document.querySelector(link.getAttribute('href'));\r\n      if(target)gsap.to(window,{duration:1,scrollTo:{y:target,offsetY:0},ease:'power3.inOut'});\r\n    });\r\n  });\r\n});\r\n<\/script>\r\n\r\n<\/body>\r\n<\/html><\/div>\n\t\t\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_theme","meta":{"footnotes":""},"class_list":["post-15","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vortexmedia.agency\/es\/wp-json\/wp\/v2\/pages\/15","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/vortexmedia.agency\/es\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/vortexmedia.agency\/es\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/vortexmedia.agency\/es\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/vortexmedia.agency\/es\/wp-json\/wp\/v2\/comments?post=15"}],"version-history":[{"count":237,"href":"https:\/\/vortexmedia.agency\/es\/wp-json\/wp\/v2\/pages\/15\/revisions"}],"predecessor-version":[{"id":617,"href":"https:\/\/vortexmedia.agency\/es\/wp-json\/wp\/v2\/pages\/15\/revisions\/617"}],"wp:attachment":[{"href":"https:\/\/vortexmedia.agency\/es\/wp-json\/wp\/v2\/media?parent=15"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}