{"id":693,"date":"2026-05-13T10:38:41","date_gmt":"2026-05-13T08:38:41","guid":{"rendered":"https:\/\/vortexmedia.mindyourgap.es\/?page_id=693"},"modified":"2026-05-14T19:20:54","modified_gmt":"2026-05-14T17:20:54","slug":"portada-ing","status":"publish","type":"page","link":"https:\/\/vortexmedia.agency\/es\/portada-ing\/","title":{"rendered":"Portada Ing"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"693\" class=\"elementor elementor-693\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-09ab09d e-flex e-con-boxed e-con e-parent\" data-id=\"09ab09d\" 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-0b6de96 elementor-widget elementor-widget-shortcode\" data-id=\"0b6de96\" 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 Communications Agency<\/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\">Loading experience<\/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\">Communications Agency<\/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\">Who we are<\/div>\r\n      <h2 class=\"intro-title reveal-up\">Strategic Communications.<\/h2>\r\n \u00a0 \u00a0 \u00a0<p class=\"intro-lead reveal-up\">We are Vortex Media \u2014 a communications agency that transforms how brands engage with their audience.<\/p>\r\n      <div class=\"intro-text\">\r\n        <p class=\"reveal-up\">We work with growing businesses, brands ready to reinvent themselves and athletes who want to build a solid public image. Getting your communications right isn't a luxury \u2014 it's a competitive advantage.<\/p>\r\n        <p class=\"reveal-up\">Every message shapes how your audience perceives you. We make sure those perceptions are precisely the ones you're after.<\/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\">What we do<\/span>\r\n    <h2 class=\"reveal-up\">Four areas of expertise.<br>One clear objective.<\/h2>\r\n    <p class=\"reveal-up\">Making your communications work for you, not against you.<\/p>\r\n    <div class=\"services-scroll-hint reveal-up\">\r\n      Swipe to explore\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 CONSULTANCY<\/div>\r\n          <h3>Communications strategy and consultancy<\/h3>\r\n          <p>We analyse your positioning, the real perception of your audience and what your competitors are doing. Then we design a strategic plan with clear objectives, key messages and an actionable timeline.<\/p>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<a href=\"https:\/\/vortexmedia.agency\/contact\/\" class=\"service-card-link\">Arrange a meeting <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\/consultancy-eng\/\" class=\"service-card-link\">View more <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<\/h3>\r\n          <p>We build brands from the ground up \u2014 brand platform, verbal identity, visual identity and a cohesive system that works across every touchpoint.<\/p>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<a href=\"https:\/\/vortexmedia.agency\/contact\/\" class=\"service-card-link\">Request brand analysis <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\/branding-eng\/\" class=\"service-card-link\">View more <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 SPORTS PR<\/div>\r\n          <h3>Clubs and athlete communications<\/h3>\r\n          <p>We design and manage athletes' public image with the same strategic rigour we apply to businesses. Personal branding, media relations, social media and crisis management.<\/p>\r\n \u00a0 \u00a0 \u00a0 \u00a0 \u00a0<a href=\"https:\/\/vortexmedia.agency\/contact\/\" class=\"service-card-link\">Arrange a meeting <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\/sports-pr\/\" class=\"service-card-link\">View more <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 CONTENT<\/div>\r\n          <h3>Content and social media management<\/h3>\r\n          <p>Strategy, editorial calendar, creation, publishing and monthly reporting with metrics that actually matter. Every piece of content has a clear purpose.<\/p>\r\n          <a href=\"https:\/\/vortexmedia.agency\/contact\/\" class=\"service-card-link\">Get a Quote <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\/social-media-eng\/\" class=\"service-card-link\">View more <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\">Strategy <span class=\"dot\"><\/span> Branding <span class=\"dot\"><\/span> Sports PR <span class=\"dot\"><\/span> Contentent <span class=\"dot\"><\/span> Consultancy <span class=\"dot\"><\/span> Visual Identity <span class=\"dot\"><\/span> Social Media <span class=\"dot\"><\/span> Crisis Management <span class=\"dot\"><\/span> Personal Brand<\/span>\r\n    <span class=\"marquee-item\">Strategy <span class=\"dot\"><\/span> Branding <span class=\"dot\"><\/span> Sports PR <span class=\"dot\"><\/span> Contentent <span class=\"dot\"><\/span> Consultancy <span class=\"dot\"><\/span> Visual Identity <span class=\"dot\"><\/span> Social Media <span class=\"dot\"><\/span> Crisis Management <span class=\"dot\"><\/span> Personal Brand<\/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\">HOW WE WORK<\/span>\r\n    <h2 class=\"reveal-up\">A clear methodology.<\/h2>\r\n    <p class=\"reveal-up\">We don't believe in magic formulas. But we do believe in a process that has proven to deliver results.<\/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>Listen<\/h3>\r\n      <p>We get to know your business, your objectives and your internal culture. We don't start work until your reality becomes ours.<\/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>Diagnose<\/h3>\r\n      <p>We audit your current communications, your positioning against competitors and the real perception of your audience.<\/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>Design<\/h3>\r\n      <p>We craft the strategy \u2014 key messages, priority channels, an action calendar and success metrics.<\/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>Deliver<\/h3>\r\n      <p>We support the rollout, measure performance and fine-tune as we go. Strategy is a living tool that evolves with you.<\/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\">Why Vortex Media<\/span>\r\n        <h2>What sets us apart isn't what we say. It's how we work.<\/h2>\r\n        <p>There are plenty of agencies out there. Most will hand you a SWOT analysis and a social media calendar. That's not strategy \u2014 that's the bare minimum.<\/p>\r\n      <\/div>\r\n      <div class=\"why-grid\">\r\n        <div class=\"why-card reveal-up\"><h3>Strategic focus<\/h3><p>CEvery recommendation is grounded in data and thorough analysis \u2014 never guesswork or off-the-shelf templates.<\/p><\/div>\r\n        <div class=\"why-card reveal-up\"><h3>Team <\/h3><p>Our team contact have hands-on experience in communications leadership. <\/p><\/div>\r\n        <div class=\"why-card reveal-up\"><h3>Ongoing support<\/h3><p>We stay with you through execution, adjusting in real time whenever it's needed.<\/p><\/div>\r\n        <div class=\"why-card reveal-up\"><h3>Sports communications<\/h3><p>We manage professional athletes' public image with the same methodology we apply to businesses.<\/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\">FREQUENTLY ASKED QUESTIONS<\/span>\r\n      <h2 class=\"reveal-up\">What clients usually ask us<\/h2>\r\n    <\/div>\r\n    <div class=\"faq-list\">\r\n      <div class=\"faq-item reveal-up\">\r\n        <div class=\"faq-question\">What is the difference between a marketing agency and a communications agency?<span class=\"faq-icon\">+<\/span><\/div>\r\n \u00a0 \u00a0 \u00a0 \u00a0<div class=\"faq-answer\"><p>A marketing agency focuses on driving direct sales. A communications agency goes further \u2014 it shapes how your brand is perceived, what it stands for and the impact every message has on your reputation. At Vortex Media, we combine strategic vision with a sharp focus on business outcomes.<\/p><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item reveal-up\">\r\n        <div class=\"faq-question\">Does my business need a communications consultancy?<span class=\"faq-icon\">+<\/span><\/div>\r\n        <div class=\"faq-answer\"><p>If your business is good at what it does but struggles to convey that effectively, the answer is very likely YES. The same goes if you're launching a new product, growing faster than your messaging can keep up with, or you've been publishing content for years without a clear strategy.<\/p><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item reveal-up\">\r\n        <div class=\"faq-question\">How much does a communications agency cost?<span class=\"faq-icon\">+<\/span><\/div>\r\n        <div class=\"faq-answer\"><p>It depends entirely on the scope. We work with tailored budgets to suit each client. Fill in our brief and we'll put together a bespoke proposal \u2014 no strings attached.<\/p><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item reveal-up\">\r\n        <div class=\"faq-question\">Do you only work with large corporations?<span class=\"faq-icon\">+<\/span><\/div>\r\n \u00a0 \u00a0 \u00a0 \u00a0<div class=\"faq-answer\"><p>Not at all. We work with businesses of every size, as well as athletes who understand the value of strong communications. In fact, it's often growing SMEs and emerging talent that see the greatest benefit.<\/p><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item reveal-up\">\r\n        <div class=\"faq-question\">How does sports PR and athlete communications work?<span class=\"faq-icon\">+<\/span><\/div>\r\n \u00a0 \u00a0 \u00a0 \u00a0<div class=\"faq-answer\"><p>We work with professional and semi-professional athletes across all disciplines \u2014 personal branding, social media, press relations, sponsorship management and image rights. Everything follows the same rigorous strategic methodology we apply to businesses.<\/p><\/div>\r\n      <\/div>\r\n      <div class=\"faq-item reveal-up\">\r\n        <div class=\"faq-question\">Do you work internationally?<span class=\"faq-icon\">+<\/span><\/div>\r\n \u00a0 \u00a0 \u00a0 \u00a0<div class=\"faq-answer\"><p> We operate fully remotely, so location is never a barrier. We help clients across Europe and work comfortably in English, German and Spanish.<\/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\">LET'S GET STARTED<\/span>\r\n  <h2 class=\"cta-title reveal-up\">Tell us what you need<\/h2>\r\n  <p class=\"cta-desc reveal-up\">Complete our brief and we'll put together a tailored proposal within 48 hours.<\/p>\r\n  <a href=\"https:\/\/vortexmedia.agency\/contacto\/\" class=\"cta-btn reveal-scale\">\r\n    Get a Quote\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\">Response within 48 hours \u00b7 No obligation<\/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":2,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"footnotes":""},"class_list":["post-693","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/vortexmedia.agency\/es\/wp-json\/wp\/v2\/pages\/693","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\/2"}],"replies":[{"embeddable":true,"href":"https:\/\/vortexmedia.agency\/es\/wp-json\/wp\/v2\/comments?post=693"}],"version-history":[{"count":4,"href":"https:\/\/vortexmedia.agency\/es\/wp-json\/wp\/v2\/pages\/693\/revisions"}],"predecessor-version":[{"id":697,"href":"https:\/\/vortexmedia.agency\/es\/wp-json\/wp\/v2\/pages\/693\/revisions\/697"}],"wp:attachment":[{"href":"https:\/\/vortexmedia.agency\/es\/wp-json\/wp\/v2\/media?parent=693"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}