// Redes sociales: si una URL queda vacía, su ícono no se muestra.
const SOCIAL = {
  linkedinLex: "https://www.linkedin.com/company/145221785/",
  instagramLex: "https://www.instagram.com/lexsecurities/",
  instagramCarlos: "",
  tiktokCarlos: ""
};
// Titular del sitio (persona natural). ruc y domicilio vacíos no se muestran. El domicilio solo se muestra en el Libro de Reclamaciones y en la política de privacidad.
const TITULAR = { nombre: "Carlos Huarcaya Villafana", ruc: "10721607441", domicilio: "Calle Fermín Tanguis 160, La Victoria, Lima" };
const CAL_NUM = "103407"; // Colegiatura CAL: la línea se muestra cuando haya número.
const FMP_NOMBRE = "Fondos Mutuos Perú"; // Entidad de la especialización en Fondos Mutuos.
const EMAIL = "carlos.huarcaya@lexsecurities.pe"; // Correo de contacto: se muestra cuando haya dirección.
// Códigos de inscripción de los bancos de datos en el Registro Nacional de Protección de Datos Personales. Vacíos no se muestran.
const BANCOS = { contactos: "PN-2026-334", libro: "PN-2026-335", suscriptores: "PN-2026-336" };

const DS = window.LexSecuritiesDesignSystem_30b8ea;
const { Button, Icon, IconButton, Logo, Dialog, Input, Toast } = DS;
const AB = window.LEX_BASE || "../..";
const A = AB + "/assets";
const WA_NUM = "51933764167";
const WA_MSG = {
  inversionistas: "Hola, quiero revisar mi caso con mi SAB o mi SAF",
  empresas: "Hola, quiero evaluar una emisión de deuda para mi empresa",
  general: "Hola, quiero agendar una llamada gratuita",
  contacto: "Hola, quiero hacer una consulta a Lex Securities Advisory",
  ruta: "Hola, quiero entender dónde está mi inversión",
  sab: "Hola, tengo una inversión con una SAB",
  saf: "Hola, tengo una inversión con una SAF o un fondo",
  tit: "Hola, tengo una inversión en valores de una titulizadora",
  academia: "Hola, quiero información sobre Lex Securities Academia",
  incompany: "Hola, quiero información sobre la capacitación in-company de Lex Securities Academia"
};
const waT = (t) => "https://wa.me/" + WA_NUM + "?text=" + encodeURIComponent(t);
const wa = (ctx) => waT(WA_MSG[ctx] || WA_MSG.general);
const WA = wa("general");
const ctxOf = (page) => (page === "inversionistas" || page === "empresas" || page === "academia" || page === "contacto" || page === "ruta") ? page : "general";
const LINKEDIN = "https://www.linkedin.com/in/carlos-huarcaya-villafana-999978149/";

const NAV = [["/inversionistas", "Inversionistas"], ["/empresas", "Empresas"], ["/academia", "Academia"], ["/publicaciones", "Publicaciones"], ["/nosotros", "Nosotros"]];

const STEPS = [
  ["Conversación inicial", "Nos dejas tus datos, te llamamos y te decimos si podemos ayudarte."],
  ["Propuesta por escrito", "Te enviamos el alcance del trabajo, el plan y las alternativas que mejor se ajustan a tu caso."],
  ["Acompañamiento", "Te asesoramos, te acompañamos y te representamos hasta cerrar tu caso, con aviso antes de cada plazo."]
];

const PILLARS = [
  ["Visión", "telescope", "Especialización en mercado de valores. Miramos cada operación como la mira un inversionista."],
  ["Estrategia", "compass", "Criterio legal preciso y bien fundamentado para decidir cómo, cuándo y en qué condiciones se estructura el capital."],
  ["Confianza", "messages-square", "Explicamos lo complejo de forma fácil y sencilla, para que tomes cada decisión de inversión con seguridad."]
];

const AUDIENCES = [
  { id: "inversionistas", t: "Inversionistas", p: "Para quienes invierten en el mercado de valores: bolsa, fondos, titulizaciones, entre otros.", hero: "Antes de invertir, durante tu inversión y frente a un incumplimiento.", lead: "Asesoría legal para quienes invierten en bolsa, en fondos o en titulizaciones. Revisamos lo que firmas, te representamos y te defendemos si vulneran tus derechos.",
    perfiles: ["Compras acciones o valores en la Bolsa de Valores de Lima a través de una SAB.", "Quieres invertir en un fondo o en una titulización, o ya eres partícipe o titular de bonos.", "Necesitas defensa legal porque se vulneraron tus derechos frente a una SAB, una administradora o una titulizadora.", "Quieres que te representemos en una asamblea de partícipes, de fideicomisarios o de obligacionistas."] },
  { id: "empresas", t: "Empresas", p: "Para empresas que se financian en el mercado de valores y para las entidades que operan en él.", hero: "Financiamiento y regulación en el mercado de valores.",
    perfiles: ["Startups, mypes y empresas en crecimiento que buscan financiarse emitiendo deuda.", "Entidades reguladas: sociedades agentes de bolsa, administradoras de fondos (SAF y SAFI) y titulizadoras.", "Entidades no reguladas: sociedades gestoras de fondos privados, fondos de venture capital y family offices.", "Tu empresa tiene excedentes y quieres invertirlos en el mercado de valores."] }
];

const FAQS = [
  ["¿Qué debo revisar antes de invertir?", "Qué estás comprando, qué garantías te respaldan y en qué casos puedes exigir tu dinero antes de plazo. Si lo revisas antes de firmar, todavía puedes negociar."],
  ["¿Mi empresa necesita ser grande para emitir bonos?", "No necesariamente. Importan más el orden financiero y una buena estructura. Una emisión por oferta privada se dirige solo a inversionistas institucionales o de montos altos, y tiene requisitos más simples que una oferta pública."],
  ["¿Qué hago si mi SAB o mi SAF no responde mi reclamo?", "Reclama por escrito y guarda el cargo. Si no responden a tiempo o no estás de acuerdo con la respuesta, puedes acudir a la SMV o al Indecopi. Te ayudamos a elegir la vía antes de que venza el plazo."],
  ["¿Puedo crear un fondo privado con un grupo de inversionistas?", "Sí. Un fondo de inversión de oferta privada se dirige a un grupo limitado de inversionistas que cumplen los requisitos de la oferta privada y lo gestiona una sociedad gestora. Te ayudamos a estructurar ambos."]
];

const ARTICLES = [
  { slug: "bonos-o-prestamo", cat: "Empresas", tema: "Financiamiento", t: "¿Cuándo conviene emitir bonos en lugar de pedir un préstamo?", p: "Plazo, costo y garantías: cómo elegir la mejor forma de financiar tu empresa.",
    body: ["Un préstamo bancario se negocia con una sola entidad y suele ser rápido, pero muchas veces tiene plazos cortos y pide garantías exigentes. Una emisión de bonos permite reunir financiamiento de varios inversionistas, con plazos y condiciones que la empresa propone.", "La decisión depende del monto que necesitas, del plazo, del orden de tu información financiera y del costo de estructurar la emisión. Para montos pequeños o necesidades urgentes, el préstamo puede ser la mejor opción.", "Si evalúas emitir, conviene definir primero si la oferta será pública o privada, qué información tendrás que entregar y qué compromisos asumirás frente a los inversionistas."] },
  { slug: "vencimiento-anticipado", cat: "Inversionistas", tema: "Bolsa", t: "Vencimiento anticipado: la cláusula que define tu riesgo", p: "Permite exigir el pago total antes de plazo. Qué la activa y cómo te protege.",
    body: ["El vencimiento anticipado permite exigir el pago total de una deuda antes de la fecha pactada cuando ocurren ciertos eventos: la falta de pago, el incumplimiento de compromisos o un deterioro grave del emisor.", "Para el inversionista es una protección central. Revisa qué eventos la activan, quién puede declararla (cada inversionista o la asamblea) y si el emisor tiene un plazo para corregir el incumplimiento.", "Una cláusula con muchos eventos pero difícil de ejecutar protege menos de lo que parece. Por eso conviene leerla junto con las reglas de la asamblea."] },
  { slug: "term-sheet", cat: "Inversionistas", tema: "Fondos", t: "Qué revisar en un term sheet antes de invertir", p: "El term sheet resume las condiciones de una inversión. Estos son los puntos que conviene negociar.",
    body: ["El term sheet resume las condiciones principales de una inversión antes de firmar los contratos definitivos: monto, plazo, rentabilidad, garantías, derechos y formas de salida.", "Aunque muchas veces no obliga a las partes, fija la base de la negociación. Lo que no se pide en esta etapa es difícil de conseguir después.", "Revisa en especial tus derechos de información, los casos de salida anticipada, las comisiones y quién decide si algo sale mal."] },
  { slug: "informar-despues-de-emitir", cat: "Regulación", tema: "Financiamiento", t: "Qué debe informar una empresa después de emitir", p: "Los reportes y avisos que pide la Superintendencia del Mercado de Valores, y sus plazos.",
    body: ["Una empresa que emite valores por oferta pública asume obligaciones de información: estados financieros periódicos, memoria anual y hechos de importancia que puedan influir en la decisión de los inversionistas.", "Los hechos de importancia deben comunicarse a la SMV y al mercado dentro de los plazos de la norma. Un retraso o una omisión puede dar lugar a sanciones.", "Antes de emitir, conviene definir quién reúne, revisa y comunica esa información dentro de la empresa."] },
  { slug: "garantias", cat: "Inversionistas", tema: "Titulización", t: "Garantías: cómo saber si realmente te protegen", p: "La diferencia entre una garantía que funciona y una que solo existe en el papel.",
    body: ["Una garantía protege al inversionista solo si existe, está bien constituida y se puede ejecutar a tiempo. En una titulización, el respaldo es el patrimonio y los flujos que lo alimentan.", "Revisa qué activos respaldan tus valores, quién los administra, si están inscritos cuando corresponde y en qué orden se pagan las obligaciones.", "Si tienes dudas sobre el respaldo, pide la documentación antes de invertir y revísala con calma."] }
];

const FOUNDER = {
  name: "Carlos Huarcaya Villafana",
  bio: "Abogado especializado en mercado de valores, fondos de inversión y protección del consumidor financiero. Divulgador de educación financiera.",
  tray: ["Ex asesor legal de una sociedad administradora de fondos (Grupo Coril SAF).", "Ex asesor financiero de fondos mutuos en Tyba por Credicorp Capital."],
  form: ["Maestrista en Derecho Bancario y Financiero — Pontificia Universidad Católica del Perú.", "Abogado — Universidad San Ignacio de Loyola.", "Especialización avanzada en Mercado de Capitales — Universidad de Lima.", "Especialización en Fondos Mutuos — " + FMP_NOMBRE + ".", "Prevención del lavado de activos (SPLAFT) — Superintendencia de Banca, Seguros y AFP."],
  spec: ["Estructuración de fondos de inversión públicos y privados.", "Consultoría y estructuración de emisiones de deuda.", "Derecho corporativo, societario y financiero.", "Protección del inversionista en el mercado de valores."]
};

// Netlify Forms
const postForm = (name, data) => fetch("/", { method: "POST", headers: { "Content-Type": "application/x-www-form-urlencoded" }, body: new URLSearchParams({ "form-name": name, "bot-field": "", ...data }).toString() }).then((r) => { if (!r.ok) throw new Error(r.status); return r; });
const formData = (o) => Object.fromEntries(Object.entries(o).map(([k, v]) => [k, typeof v === "boolean" ? (v ? "sí" : "no") : String(v ?? "")]));
const FormFail = ({ ctx = "general" }) => <div className="ffail" role="alert"><p>No pudimos enviar tu mensaje. Escríbenos por WhatsApp.</p><Button variant="accent" size="sm" iconStart={<Icon name="message-circle" size={16} />} onClick={() => openWA(ctx)}>Escríbenos por WhatsApp</Button></div>;
const Honeypot = ({ value, onChange }) => <p className="hp" aria-hidden="true"><label>No llenes este campo <input name="bot-field" tabIndex="-1" autoComplete="off" value={value} onChange={onChange} /></label></p>;

const go = (path) => { location.hash = "#" + path; };
const CALL_LINE = "Déjanos tus datos y te llamamos. La llamada es gratuita.";
const toAgenda = (e) => { if (e) e.preventDefault(); if (location.hash === "#/contacto/agenda") { const el = document.getElementById("agenda"); if (el) window.scrollTo({ top: el.getBoundingClientRect().top + window.scrollY - 96, behavior: "smooth" }); } else go("/contacto/agenda"); };
const FreeCall = ({ className = "fine" }) => <a className={className + " freecall"} href="#/contacto/agenda" onClick={toAgenda}>{CALL_LINE}</a>;
const openWA = (ctx) => window.open(wa(ctx), "_blank");
const toast = (detail) => window.dispatchEvent(new CustomEvent("lex-toast", { detail }));
const Label = ({ n, children }) => <p className="label">{n && <b>{n}</b>}<i className="ln"></i><span>{children}</span></p>;
const Rules = ({ side = "l", n = 5 }) => <div className={"rules " + side} aria-hidden="true">{Array.from({ length: n }).map((_, i) => <i key={i}></i>)}</div>;

const TikTok = ({ size = 18 }) => <svg width={size} height={size} viewBox="0 0 24 24" fill="none" stroke="currentColor" strokeWidth="1.6" strokeLinecap="round" strokeLinejoin="round" aria-hidden="true"><path d="M14 3v11.5a3.5 3.5 0 1 1-3.5-3.5"></path><path d="M14 3a5 5 0 0 0 5 5"></path></svg>;
const SOCIAL_META = {
  linkedinLex: ["LinkedIn de Lex Securities Advisory", "linkedin"],
  instagramLex: ["Instagram de Lex Securities Advisory", "instagram"],
  instagramCarlos: ["Instagram de Carlos Huarcaya", "instagram"],
  tiktokCarlos: ["TikTok de Carlos Huarcaya", "tiktok"]
};
const socialLinks = (keys) => keys.filter((k) => SOCIAL[k]);
function SocialIcons({ keys, className = "social" }) {
  const list = socialLinks(keys);
  if (!list.length) return null;
  return <div className={className}>{list.map((k) => <a key={k} href={SOCIAL[k]} target="_blank" rel="noopener" aria-label={SOCIAL_META[k][0]}>{SOCIAL_META[k][1] === "tiktok" ? <TikTok /> : <Icon name={SOCIAL_META[k][1]} size={18} />}</a>)}</div>;
}

function Header({ page }) {
  const [scrolled, setScrolled] = React.useState(false);
  const [open, setOpen] = React.useState(false);
  React.useEffect(() => { const f = () => setScrolled(window.scrollY > 12); f(); addEventListener("scroll", f, { passive: true }); return () => removeEventListener("scroll", f); }, []);
  React.useEffect(() => setOpen(false), [page]);
  const on = (p) => ("/" + page) === p;
  const ctx = ctxOf(page);
  const solid = scrolled || open || page === "ruta";
  return <>
    <header className={"hdr" + (solid ? " solid" : "")}>
      <div className="wrap hdr-in">
        <a className="brand" href="#/" aria-label="Lex Securities Advisory, inicio"><Logo variant="horizontal" assetBase={AB} tone="white" height={34} /></a>
        <nav className="nav">{NAV.map(([p, l]) => <a key={p} href={"#" + p} className={on(p) ? "on" : ""}>{l}</a>)}</nav>
        <div className="hdr-cta"><Button variant="accent" onClick={toAgenda}>Agenda una llamada gratuita</Button><IconButton label="Escríbenos por WhatsApp" variant="inverse" round onClick={() => openWA(ctx)}><Icon name="message-circle" size={20} /></IconButton></div>
        <button className="burger" aria-label={open ? "Cerrar menú" : "Abrir menú"} aria-expanded={open} onClick={() => setOpen(!open)}><Icon name={open ? "x" : "menu"} size={22} /></button>
      </div>
    </header>
    {open && <div className="mnav">
      {NAV.map(([p, l]) => <a key={p} href={"#" + p} className={"l" + (on(p) ? " on" : "")}>{l}</a>)}
      <div className="cta"><Button variant="accent" size="lg" fullWidth onClick={toAgenda}>Agenda una llamada gratuita</Button><a className="wa" href={wa(ctx)} target="_blank" rel="noopener"><Icon name="message-circle" size={18} color="var(--lex-bronze)" />Escríbenos por WhatsApp</a></div>
    </div>}
  </>;
}

function Footer() {
  return <footer className="ftr">
    <div className="wrap">
      <a href="#/" aria-label="Inicio"><img className="flogo" src={A + "/logo/logo-centered-white-bronze.png"} alt="Lex Securities Advisory" /></a>
      <div className="fgrid">
        <div className="fcol"><h5>Navegación</h5>{NAV.map(([p, l]) => <a key={p} href={"#" + p}>{l}</a>)}</div>
        <div className="fcol fcontact"><h5>Contacto</h5>
          {EMAIL && <a href={"mailto:" + EMAIL}><Icon name="mail" size={16} strokeWidth={1.4} />{EMAIL}</a>}
          <a href={WA} target="_blank" rel="noopener"><Icon name="message-circle" size={16} strokeWidth={1.4} />WhatsApp</a>
          {SOCIAL.linkedinLex && <a href={SOCIAL.linkedinLex} target="_blank" rel="noopener"><Icon name="linkedin" size={16} strokeWidth={1.4} />LinkedIn</a>}
          {SOCIAL.instagramLex && <a href={SOCIAL.instagramLex} target="_blank" rel="noopener"><Icon name="instagram" size={16} strokeWidth={1.4} />Instagram</a>}
        </div>
        <div className="fcol"><h5>Legal</h5><a href="#/legal">Legal</a><a href="#/libro-de-reclamaciones">Libro de Reclamaciones</a></div>
      </div>
      <p className="fdisc">Lex Securities Advisory es una marca de {TITULAR.nombre}{TITULAR.ruc ? ", RUC " + TITULAR.ruc : ""}. Brindamos asesoría legal; no asesoría de inversión ni intermediación de valores.</p>
      <div className="fbot"><span>© 2026 Lex Securities Advisory. Todos los derechos reservados.</span><span>Asesoría Legal en Mercado de Valores · Perú</span></div>
    </div>
  </footer>;
}

const CLOSE_MASCOTS = { phone: ["03-on-phone.png", "La mascota de Lex, un toro con traje, hablando por teléfono"], briefcase: ["09-briefcase-three-quarter.png", "La mascota de Lex, un toro con traje, con maletín"] };
function ClosingBand({ ctx = "general", mascot = "phone" }) {
  const m = CLOSE_MASCOTS[mascot] || CLOSE_MASCOTS.phone;
  return <section className="ivory2 sec close">
    <div className="wrap close-grid">
      <div className="rv">
        <h2 className="h2">¿Tienes una decisión de capital en camino?</h2>
        <p className="lead">Agenda una llamada gratuita y revisemos juntos tu operación.</p>
        <div className="btns">
          <Button variant="accent" size="lg" onClick={toAgenda}>Agenda una llamada gratuita</Button>
          <Button variant="secondary" size="lg" iconStart={<Icon name="message-circle" size={18} />} onClick={() => openWA(ctx)}>Escríbenos por WhatsApp</Button>
        </div>
        <p className="fine"><FreeCall className="" /></p>
      </div>
      <img className="mascot rv d2" src={A + "/character/" + m[0]} alt={m[1]} />
    </div>
  </section>;
}

const Steps = () => <ol className="steps">{STEPS.map(([t, d], i) => <li className="step rv" key={t}><span className="n">{"0" + (i + 1)}</span><h3>{t}</h3><p>{d}</p></li>)}</ol>;

const FounderPhoto = () => <div className="tphoto"><img src={A + "/photos/carlos-huarcaya.jpg"} alt="Carlos Huarcaya Villafana, abogado fundador de Lex Securities Advisory" /></div>;

function TeamCard({ compact = false }) {
  if (compact) return <article className="team compact rv">
    <FounderPhoto />
    <div className="tinfo">
      <h3 className="h3">{FOUNDER.name}</h3>
      <p className="prole">Abogado fundador</p>
      <p className="tbio">{FOUNDER.bio}</p>
      <a className="tlink" href="#/nosotros">Ver perfil completo <Icon name="arrow-right" size={14} /></a>
    </div>
  </article>;
  return <article className="team rv">
    <FounderPhoto />
    <div className="tinfo">
      <h3 className="h3">{FOUNDER.name}</h3>
      <p className="prole">Abogado fundador</p>
      <p className="tbio">{FOUNDER.bio}</p>
      {[["Trayectoria", FOUNDER.tray], ["Formación", FOUNDER.form], ["Especialización", FOUNDER.spec]].map(([k, l]) => <div className="tblock" key={k}><p className="k">{k}</p><ul className="tspec">{l.map((x) => <li key={x}>{x}</li>)}</ul></div>)}
      {CAL_NUM && <p className="tcal">Colegiatura CAL N.° {CAL_NUM}</p>}
      <div className="tlinks">
        <a className="tlink" href={LINKEDIN} target="_blank" rel="noopener"><Icon name="linkedin" size={15} />LinkedIn</a>
        <SocialIcons keys={["instagramCarlos", "tiktokCarlos"]} className="social team-social" />
      </div>
    </div>
  </article>;
}

function MobileCTA({ page }) {
  return <div className="mcta">
    <Button variant="accent" size="lg" fullWidth onClick={toAgenda}>Agenda una llamada gratuita</Button>
    <a className="mcta-wa" href={wa(ctxOf(page))} target="_blank" rel="noopener" aria-label="Escríbenos por WhatsApp"><Icon name="message-circle" size={24} /></a>
  </div>;
}

function CookieNotice() {
  const [done, setDone] = React.useState(() => !!localStorage.getItem("lex-cookies"));
  React.useEffect(() => { const f = () => setDone(!!localStorage.getItem("lex-cookies")); addEventListener("lex-cookies-reset", f); return () => removeEventListener("lex-cookies-reset", f); }, []);
  if (done) return null;
  const set = (v) => { localStorage.setItem("lex-cookies", v); setDone(true); };
  return <div className="cookie" role="region" aria-label="Aviso de cookies">
    <p>Usamos cookies técnicas para que el sitio funcione y, si lo aceptas, cookies de medición. <a href="#/legal/cookies">Más información</a></p>
    <div className="cookie-b"><button onClick={() => set("rechazadas")}>Rechazar</button><button className="ok" onClick={() => set("aceptadas")}>Aceptar</button></div>
  </div>;
}

function ArticleCard({ a }) {
  return <a className="art rv" href={"#/publicaciones/articulos/" + a.slug}>
    <div className="meta"><span>{a.cat} · {a.tema}</span></div>
    <h3>{a.t}</h3><p>{a.p}</p>
    <span className="more">Leer artículo <Icon name="arrow-right" size={14} /></span>
  </a>;
}

function FAQ() {
  const [open, setOpen] = React.useState(0);
  return <div className="faq">{FAQS.map(([q, a], i) => <div key={q} className={"qa" + (open === i ? " open" : "")}>
    <button aria-expanded={open === i} onClick={() => setOpen(open === i ? -1 : i)}>{q}<span className="pm"><Icon name="plus" size={16} /></span></button>
    <div className="ans"><div><p>{a}</p></div></div>
  </div>)}</div>;
}

// Testimonios: ocultos hasta tener testimonios reales. Cada uno: { q, name, role }.
const TESTIMONIALS = { clientes: [], alumnos: [] };
function Testimonials({ kind = "clientes" }) {
  const items = TESTIMONIALS[kind] || [];
  if (!items.length) return null;
  return <section className="deep sec">
    <div className="wrap">
      <Label>Testimonios</Label>
      <h2 className="h2">{kind === "alumnos" ? "Lo que dicen quienes han estudiado con nosotros." : "Lo que dicen quienes han trabajado con nosotros."}</h2>
      <div className="quotes">{items.map((t) => <figure className="quote" key={t.q} style={{ margin: 0 }}><span className="q">“</span><p>{t.q}</p><small>{t.name} · {t.role}</small></figure>)}</div>
    </div>
  </section>;
}

function ToastHost() {
  const [items, setItems] = React.useState([]);
  React.useEffect(() => {
    const f = (e) => { const id = Date.now() + Math.random(); setItems((s) => [...s, { id, ...e.detail }]); setTimeout(() => setItems((s) => s.filter((x) => x.id !== id)), 4500); };
    addEventListener("lex-toast", f); return () => removeEventListener("lex-toast", f);
  }, []);
  return <div className="toasts">{items.map((t) => <Toast key={t.id} tone={t.tone} title={t.title} onClose={() => setItems((s) => s.filter((x) => x.id !== t.id))}>{t.body}</Toast>)}</div>;
}

Object.assign(window, { FMP_NOMBRE, CLOSE_MASCOTS, TITULAR, postForm, formData, FormFail, Honeypot, SOCIAL, CAL_NUM, EMAIL, BANCOS, CALL_LINE, FOUNDER, WA_MSG, WA_NUM, waT, toAgenda, FreeCall, Button, Icon, IconButton, Logo, Dialog, Input, Toast, AB, A, WA, wa, openWA, ctxOf, LINKEDIN, NAV, STEPS, PILLARS, AUDIENCES, FAQS, ARTICLES, go, toast, Label, Rules, SocialIcons, Header, Footer, ClosingBand, Steps, TeamCard, MobileCTA, CookieNotice, ArticleCard, FAQ, Testimonials, ToastHost });
