{"id":447,"date":"2026-08-05T16:24:05","date_gmt":"2026-08-05T16:24:05","guid":{"rendered":"https:\/\/togrowagencia.com\/en\/?page_id=447"},"modified":"2026-08-14T17:11:26","modified_gmt":"2026-08-14T17:11:26","slug":"blog","status":"publish","type":"page","link":"https:\/\/togrowagencia.com\/en\/blog\/","title":{"rendered":"Blog"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"447\" class=\"elementor elementor-447\" data-elementor-post-type=\"page\">\n\t\t\t\t<div class=\"elementor-element elementor-element-a7cade8 e-flex e-con-boxed e-con e-parent\" data-id=\"a7cade8\" 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-8307223 elementor-widget elementor-widget-html\" data-id=\"8307223\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ============================================================\r\n  TGUS BLOG \u2014 09-blog-hero.html\r\n  Full-screen slider: last 3 articles, 1 slide per screen, controls.\r\n  Persistent stat card (does not change between slides) \u2014 liquid glass style.\r\n  Prefijo CSS: #tgus-blog-hero\r\n  CONECTADO A WORDPRESS: usa shortcode [tgus_blog_hero_slides] (ver tgus-blog-connect.php)\r\n  Paste into an Elementor HTML widget\r\n============================================================= -->\r\n<section id=\"tgus-blog-hero\">\r\n  <style>\r\n    #tgus-blog-hero{\r\n      --tgus-bg-0:#05050a;\r\n      --tgus-blue:#3b82f6;\r\n      --tgus-violet:#8b7cf6;\r\n      --tgus-cyan:#5ec8f2;\r\n      --tgus-font-display:'Bricolage Grotesque', sans-serif;\r\n      --tgus-font-body:'Plus Jakarta Sans', sans-serif;\r\n      background:var(--tgus-bg-0);\r\n      color:#f4f4f7;\r\n      font-family:var(--tgus-font-body);\r\n      position:relative;\r\n      overflow:hidden;\r\n      min-height:88dvh;\r\n      width:100%;\r\n    }\r\n    #tgus-blog-hero *{box-sizing:border-box;margin:0;padding:0;}\r\n\r\n    \/* ---------- slider viewport (full screen) ---------- *\/\r\n    #tgus-blog-hero .tgus-blog-slider{\r\n      position:relative;\r\n      width:100%;\r\n      min-height:88dvh;\r\n      overflow:hidden;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-slider__track{\r\n      display:flex;\r\n      width:100%;\r\n      height:100%;\r\n      will-change:transform;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-slide{\r\n      position:relative;\r\n      flex:0 0 100%;\r\n      min-width:100%;\r\n      min-height:88dvh;\r\n      display:block; \/* img es position:absolute, no depende de flex del padre *\/\r\n    }\r\n    #tgus-blog-hero .tgus-blog-slide__img{\r\n      position:absolute;\r\n      top:0;left:0;right:0;bottom:0;\r\n      width:100%;height:100%;\r\n      object-fit:cover;\r\n      object-position:center center;\r\n      z-index:-2;\r\n      display:block;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-slide__scrim{\r\n      position:absolute;inset:0;z-index:-1;\r\n      background:\r\n        linear-gradient(0deg, rgba(5,5,10,.98) 0%, rgba(5,5,10,.8) 30%, rgba(5,5,10,.4) 58%, rgba(5,5,10,.6) 100%),\r\n        linear-gradient(180deg, rgba(5,5,10,.75) 0%, rgba(5,5,10,0) 35%);\r\n    }\r\n\r\n    \/* ---------- slide content (bottom-left, minimal: category \/ image \/ title \/ excerpt) ---------- *\/\r\n    #tgus-blog-hero .tgus-blog-slide__body{\r\n      position:absolute;\r\n      left:0;right:0;bottom:0;\r\n      width:100%;\r\n      max-width:1360px;\r\n      margin:0 auto;\r\n      padding:0 56px 130px;\r\n      z-index:2;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-slide__inner{\r\n      max-width:760px;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-tag{\r\n      display:inline-flex;align-items:center;gap:8px;\r\n      font-size:12px;font-weight:700;letter-spacing:.08em;text-transform:uppercase;\r\n      padding:7px 14px;border-radius:999px;\r\n      color:#eaf3ff;\r\n      background:linear-gradient(90deg, rgba(59,130,246,.35), rgba(139,124,246,.35));\r\n      border:1px solid rgba(255,255,255,.16);\r\n      -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);\r\n      margin-bottom:22px;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-tag::before{\r\n      content:\"\";width:6px;height:6px;border-radius:50%;\r\n      background:var(--tgus-cyan);\r\n      box-shadow:0 0 10px 2px rgba(94,200,242,.7);\r\n    }\r\n    #tgus-blog-hero .tgus-blog-slide__title{\r\n      font-family:var(--tgus-font-display);\r\n      font-weight:600;\r\n      font-size:clamp(36px,5.4vw,68px);\r\n      line-height:1.06;\r\n      letter-spacing:-0.02em;\r\n      margin-bottom:0;\r\n      padding-bottom:.08em; \/* evita corte de descendentes (y, g, j) *\/\r\n    }\r\n\r\n    \/* ---------- bottom bar: counter \/ dots \/ arrows ---------- *\/\r\n    #tgus-blog-hero .tgus-blog-slider__bar{\r\n      position:absolute;\r\n      left:0;right:0;bottom:0;\r\n      z-index:5;\r\n      display:flex;align-items:center;justify-content:space-between;\r\n      gap:24px;\r\n      padding:26px 56px;\r\n      max-width:1360px;margin:0 auto;\r\n      border-top:1px solid rgba(255,255,255,.14);\r\n    }\r\n    #tgus-blog-hero .tgus-blog-slider__label{\r\n      font-size:13px;color:#e6e6ee;\r\n      display:flex;align-items:center;gap:10px;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-slider__label .is-current{\r\n      font-weight:700;color:#fff;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-slider__dots{ display:flex;gap:8px; }\r\n    #tgus-blog-hero .tgus-blog-slider__dot{\r\n      width:8px;height:8px;border-radius:50%;\r\n      background:rgba(255,255,255,.22);\r\n      border:none;padding:0;cursor:pointer;\r\n      transition:background .3s ease, width .3s ease;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-slider__dot.is-active{\r\n      background:linear-gradient(90deg,var(--tgus-blue),var(--tgus-cyan));\r\n      width:22px;border-radius:5px;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-slider__arrows{ display:flex;gap:10px; }\r\n    #tgus-blog-hero .tgus-blog-slider__btn{\r\n      width:46px;height:46px;border-radius:50%;\r\n      display:flex;align-items:center;justify-content:center;\r\n      border:1px solid rgba(255,255,255,.2);\r\n      background:rgba(255,255,255,.06);\r\n      -webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px);\r\n      color:#f4f4f7;cursor:pointer;\r\n      transition:border-color .3s ease, background .3s ease, transform .2s ease;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-slider__btn svg{ width:17px;height:17px; }\r\n    #tgus-blog-hero .tgus-blog-slider__btn:hover{\r\n      border-color:rgba(139,124,246,.6);\r\n      background:linear-gradient(90deg, rgba(59,130,246,.18), rgba(139,124,246,.18));\r\n    }\r\n    #tgus-blog-hero .tgus-blog-slider__btn:active{ transform:scale(.94); }\r\n\r\n    \/* ==========================================================\r\n       PERSISTENT STAT CARD \u2014 liquid glass del sistema, cursor-glow border.\r\n       Reposicionada: arriba a la derecha del bottom bar (columna derecha).\r\n    ========================================================== *\/\r\n    #tgus-blog-hero .tgus-blog-stat-wrap{\r\n      position:absolute;\r\n      left:0;right:0;bottom:112px; \/* justo arriba de la barra de controles *\/\r\n      z-index:6;\r\n      width:100%;\r\n      max-width:1360px;\r\n      margin:0 auto;\r\n      padding:0 56px;\r\n      display:flex;\r\n      justify-content:flex-end;\r\n      pointer-events:none;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-stat{\r\n      position:relative;\r\n      width:200px;\r\n      height:150px;\r\n      border-radius:10px;\r\n      padding:1px;\r\n      background:radial-gradient(circle 200px at 0% 0%, var(--tgus-cyan), var(--tgus-violet) 55%, #0c0d0d 100%);\r\n    }\r\n    #tgus-blog-hero .tgus-blog-stat__dot{\r\n      width:5px;aspect-ratio:1;position:absolute;\r\n      background-color:var(--tgus-cyan);\r\n      box-shadow:0 0 10px 2px var(--tgus-cyan);\r\n      border-radius:100px;z-index:2;\r\n      right:10%;top:10%;\r\n      animation:tgusBlogStatDot 6s linear infinite;\r\n    }\r\n    @keyframes tgusBlogStatDot{\r\n      0%,100%{ top:10%; right:10%; }\r\n      25%{ top:10%; right:calc(100% - 24px); }\r\n      50%{ top:calc(100% - 20px); right:calc(100% - 24px); }\r\n      75%{ top:calc(100% - 20px); right:10%; }\r\n    }\r\n    #tgus-blog-hero .tgus-blog-stat__card{\r\n      position:relative;\r\n      z-index:1;width:100%;height:100%;\r\n      border-radius:9px;\r\n      border:solid 1px #202222;\r\n      background:radial-gradient(circle 190px at 0% 0%, #2a3a5c, #0c0d0d);\r\n      display:flex;align-items:center;justify-content:center;flex-direction:column;\r\n      overflow:hidden;\r\n      color:#fff;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-stat__ray{\r\n      width:150px;height:30px;border-radius:100px;\r\n      position:absolute;background-color:var(--tgus-cyan);opacity:.4;\r\n      box-shadow:0 0 50px var(--tgus-cyan);filter:blur(10px);\r\n      transform-origin:10%;top:0;left:0;\r\n      transform:rotate(40deg);\r\n    }\r\n    #tgus-blog-hero .tgus-blog-stat__num{\r\n      font-weight:bolder;font-size:2.6rem;line-height:1;\r\n      background:linear-gradient(45deg,var(--tgus-blue) 4%,#fff,var(--tgus-violet));\r\n      -webkit-background-clip:text;background-clip:text;color:transparent;\r\n      position:relative;z-index:1;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-stat__label{\r\n      font-size:13px;color:#fff;margin-top:4px;position:relative;z-index:1;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-stat__line{\r\n      width:100%;height:1px;position:absolute;background-color:#2c2c2c;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-stat__line.topl{ top:10%; background:linear-gradient(90deg,#888 30%,#1d1f1f 70%); }\r\n    #tgus-blog-hero .tgus-blog-stat__line.bottoml{ bottom:10%; }\r\n    #tgus-blog-hero .tgus-blog-stat__line.leftl{ left:10%;width:1px;height:100%;background:linear-gradient(180deg,#747474 30%,#222424 70%); }\r\n    #tgus-blog-hero .tgus-blog-stat__line.rightl{ right:10%;width:1px;height:100%; }\r\n\r\n    @media(prefers-reduced-motion:reduce){\r\n      #tgus-blog-hero .tgus-blog-stat__dot{ animation:none; top:10%; right:10%; }\r\n    }\r\n\r\n    \/* ==========================================================\r\n       READ ARTICLE BUTTON \u2014 Uiverse by dexter-st, recolored to ToGrow palette.\r\n    ========================================================== *\/\r\n    #tgus-blog-hero .tgus-blog-btn-wrap{\r\n      position:relative;\r\n      display:inline-block;\r\n      margin-top:28px;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-btn{\r\n      --tgus-btn-radius:24px;\r\n      --tgus-btn-padding:4px;\r\n      --tgus-btn-transition:0.4s;\r\n      position:relative;\r\n      user-select:none;\r\n      display:flex;\r\n      align-items:center;\r\n      justify-content:center;\r\n      padding:0.65em 1.3em 0.65em 1.1em;\r\n      font-family:var(--tgus-font-body);\r\n      font-size:0.95em;\r\n      font-weight:600;\r\n      color:inherit;\r\n      background:linear-gradient(135deg,var(--tgus-blue),var(--tgus-violet));\r\n      box-shadow:\r\n        inset 0px 1px 1px rgba(255,255,255,.35),\r\n        inset 0px 2px 2px rgba(255,255,255,.2),\r\n        inset 0px 4px 4px rgba(255,255,255,.12),\r\n        inset 0px 8px 8px rgba(255,255,255,.06),\r\n        0px -1px 1px rgba(0,0,0,.05),\r\n        0px -4px 6px rgba(0,0,0,.08),\r\n        0px -10px 14px rgba(0,0,0,.12);\r\n      border:solid 1px rgba(255,255,255,.35);\r\n      border-radius:var(--tgus-btn-radius);\r\n      cursor:pointer;\r\n      text-decoration:none;\r\n      transition:box-shadow var(--tgus-btn-transition), border var(--tgus-btn-transition), transform .2s ease;\r\n    }\r\n    #tgus-blog-hero .tgus-blog-btn::before{\r\n      content:\"\";\r\n      position:absolute;\r\n      top:calc(0px - var(--tgus-btn-padding));\r\n      left:calc(0px - var(--tgus-btn-padding));\r\n      width:calc(100% + var(--tgus-btn-padding) * 2);\r\n      height:calc(100% + var(--tgus-btn-padding) * 2);\r\n      border-radius:calc(var(--tgus-btn-radius) + var(--tgus-btn-padding));\r\n      pointer-events:none;\r\n      background-image:linear-gradient(0deg,#0004,#000a);\r\n      z-index:-1;\r\n      transition:box-shadow var(--tgus-btn-transition), filter var(--tgus-btn-transition);\r\n      box-shadow:\r\n        1px 1px 1px rgba(255,255,255,.15),\r\n        2px 2px 2px rgba(255,255,255,.08),\r\n        -1px -1px 1px rgba(0,0,0,.15),\r\n        -2px -2px 2px rgba(0,0,0,.08);\r\n    }\r\n    #tgus-blog-hero .tgus-blog-btn::after{\r\n      content:\"\";\r\n      position:absolute;inset:0;\r\n      border-radius:inherit;\r\n      pointer-events:none;\r\n      background-image:linear-gradient(0deg,#fff,var(--tgus-cyan) 40%,transparent 80%);\r\n      opacity:0;\r\n      transition:opacity var(--tgus-btn-transition), filter var(--tgus-btn-transition);\r\n    }\r\n    #tgus-blog-hero .tgus-blog-btn-svg{\r\n      width:16px;height:16px;\r\n      margin-right:.55rem;\r\n      fill:#fff;\r\n      filter:drop-shadow(0 0 2px rgba(255,255,255,.6));\r\n      transition:fill var(--tgus-btn-transition), filter var(--tgus-btn-transition);\r\n    }\r\n    #tgus-blog-hero .tgus-blog-btn-txt{\r\n      position:relative;\r\n      color:#fff;\r\n      white-space:nowrap;\r\n      transition:text-shadow var(--tgus-btn-transition);\r\n    }\r\n    #tgus-blog-hero .tgus-blog-btn:hover{\r\n      border-color:rgba(255,255,255,.6);\r\n      transform:translateY(-2px);\r\n    }\r\n    #tgus-blog-hero .tgus-blog-btn:hover::after{\r\n      opacity:.7;\r\n      mask-image:linear-gradient(0deg,#fff,transparent);\r\n    }\r\n    #tgus-blog-hero .tgus-blog-btn:hover .tgus-blog-btn-svg{\r\n      filter:drop-shadow(0 0 4px var(--tgus-cyan));\r\n    }\r\n    #tgus-blog-hero .tgus-blog-btn:active{\r\n      transform:translateY(0) scale(.97);\r\n      border-color:rgba(255,255,255,.7);\r\n    }\r\n    #tgus-blog-hero .tgus-blog-btn:active::after{\r\n      opacity:1;\r\n      mask-image:linear-gradient(0deg,#fff,transparent);\r\n      filter:brightness(140%);\r\n    }\r\n\r\n    \/* ---------- responsive ---------- *\/\r\n    @media(max-width:1024px){\r\n      #tgus-blog-hero .tgus-blog-slide__body{ padding:0 40px 118px; }\r\n      #tgus-blog-hero .tgus-blog-slider__bar{ padding:22px 40px; }\r\n      #tgus-blog-hero .tgus-blog-stat-wrap{ padding:0 40px;bottom:106px; }\r\n      #tgus-blog-hero .tgus-blog-stat{ width:170px;height:128px; }\r\n      #tgus-blog-hero .tgus-blog-stat__num{ font-size:2.2rem; }\r\n    }\r\n    @media(max-width:768px){\r\n      #tgus-blog-hero .tgus-blog-stat-wrap{ display:none; } \/* card oculta en mobile: prioriza legibilidad del t\u00edtulo *\/\r\n      #tgus-blog-hero .tgus-blog-slide__body{ padding:0 22px 108px; }\r\n      #tgus-blog-hero .tgus-blog-slider__bar{ padding:18px 22px;flex-wrap:wrap; }\r\n      #tgus-blog-hero .tgus-blog-slider__label{ order:2;width:100%; }\r\n    }\r\n    @media(max-width:420px){\r\n      #tgus-blog-hero .tgus-blog-slide__title{ font-size:clamp(30px,9vw,40px); }\r\n      #tgus-blog-hero .tgus-blog-slider__btn{ width:40px;height:40px; }\r\n      #tgus-blog-hero .tgus-blog-btn{ padding:0.6em 1.1em 0.6em 1em;font-size:0.88em; }\r\n      #tgus-blog-hero .tgus-blog-btn-wrap{ margin-top:20px; }\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"tgus-blog-slider\" id=\"tgusBlogSlider\">\r\n    <div class=\"tgus-blog-slider__track\" id=\"tgusBlogSliderTrack\">\r\n\r\n              <div class=\"tgus-blog-slide\" data-article=\"1\">\n          <img class=\"tgus-blog-slide__img\" loading=\"lazy\" decoding=\"async\"\n               src=\"https:\/\/togrowagencia.com\/en\/wp-content\/uploads\/2026\/11\/Custom-Software-Development-Partner-.jpg\" alt=\"How to Choose a Custom Software Development Partner (A Guide for US Startups)\">\n          <span class=\"tgus-blog-slide__scrim\"><\/span>\n          <div class=\"tgus-blog-slide__body\">\n            <div class=\"tgus-blog-slide__inner\">\n              <span class=\"tgus-blog-tag\">Automation<\/span>\n              <h1 class=\"tgus-blog-slide__title\">How to Choose a Custom Software Development Partner (A Guide for US Startups)<\/h1>\n              <div class=\"tgus-blog-btn-wrap\">\n                <a href=\"https:\/\/togrowagencia.com\/en\/how-to-choose-custom-software-development\/\" class=\"tgus-blog-btn\">\n                  <svg class=\"tgus-blog-btn-svg\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\">\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 12h14M13 6l6 6-6 6\"\/>\n                  <\/svg>\n                  <span class=\"tgus-blog-btn-txt\">Read Article<\/span>\n                <\/a>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n            <div class=\"tgus-blog-slide\" data-article=\"2\">\n          <img class=\"tgus-blog-slide__img\" loading=\"lazy\" decoding=\"async\"\n               src=\"https:\/\/togrowagencia.com\/en\/wp-content\/uploads\/2026\/08\/persona-que-gestiona-la-optimizacion-de-motores-de-busqueda-seo-para-marketing-digital-con-contenido-de-redes-sociales-2048x1152-1.webp\" alt=\"How to Build a Digital Presence for Your Business From Scratch: A Practical 2026 Guide\">\n          <span class=\"tgus-blog-slide__scrim\"><\/span>\n          <div class=\"tgus-blog-slide__body\">\n            <div class=\"tgus-blog-slide__inner\">\n              <span class=\"tgus-blog-tag\">Automation<\/span>\n              <h1 class=\"tgus-blog-slide__title\">How to Build a Digital Presence for Your Business From Scratch: A Practical 2026 Guide<\/h1>\n              <div class=\"tgus-blog-btn-wrap\">\n                <a href=\"https:\/\/togrowagencia.com\/en\/como-crear-presencia-digital-para-tu-empresa-desde-cero-guia-practica-2026\/\" class=\"tgus-blog-btn\">\n                  <svg class=\"tgus-blog-btn-svg\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\">\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M5 12h14M13 6l6 6-6 6\"\/>\n                  <\/svg>\n                  <span class=\"tgus-blog-btn-txt\">Read Article<\/span>\n                <\/a>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n    \r\n\r\n    <\/div>\r\n\r\n    <!-- persistent stat card \u2014 identical on every slide, liquid glass style, right side above bar -->\r\n    <div class=\"tgus-blog-stat-wrap\" aria-hidden=\"true\">\r\n      <div class=\"tgus-blog-stat\">\r\n        <div class=\"tgus-blog-stat__dot\"><\/div>\r\n        <div class=\"tgus-blog-stat__card\">\r\n          <div class=\"tgus-blog-stat__ray\"><\/div>\r\n          <div class=\"tgus-blog-stat__num\">750k<\/div>\r\n          <div class=\"tgus-blog-stat__label\">Monthly readers<\/div>\r\n          <div class=\"tgus-blog-stat__line topl\"><\/div>\r\n          <div class=\"tgus-blog-stat__line leftl\"><\/div>\r\n          <div class=\"tgus-blog-stat__line bottoml\"><\/div>\r\n          <div class=\"tgus-blog-stat__line rightl\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <!-- bottom bar: label \/ dots \/ arrows -->\r\n    <div class=\"tgus-blog-slider__bar\">\r\n      <span class=\"tgus-blog-slider__label\">\r\n        <span class=\"is-current\" id=\"tgusBlogSliderCurrent\">01<\/span> \/ <span id=\"tgusBlogSliderTotal\">03<\/span> \u2014 Latest articles\r\n      <\/span>\r\n      <div class=\"tgus-blog-slider__dots\" id=\"tgusBlogSliderDots\"><\/div>\r\n      <div class=\"tgus-blog-slider__arrows\">\r\n        <button type=\"button\" class=\"tgus-blog-slider__btn\" id=\"tgusBlogSliderPrev\" aria-label=\"Previous article\">\r\n          <svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M15 6l-6 6 6 6\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n        <\/button>\r\n        <button type=\"button\" class=\"tgus-blog-slider__btn\" id=\"tgusBlogSliderNext\" aria-label=\"Next article\">\r\n          <svg viewBox=\"0 0 24 24\" fill=\"none\"><path d=\"M9 6l6 6-6 6\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n        <\/button>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <script>\r\n  (function(){\r\n    var root = document.getElementById('tgus-blog-hero');\r\n    if(!root) return;\r\n    var reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n    function loadGSAP(cb){\r\n      if(typeof gsap !== 'undefined') return cb();\r\n      var s = document.createElement('script');\r\n      s.src = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.12.5\/gsap.min.js';\r\n      s.defer = true;\r\n      s.onload = cb;\r\n      document.head.appendChild(s);\r\n    }\r\n\r\n    function initSlider(){\r\n      var track   = document.getElementById('tgusBlogSliderTrack');\r\n      var slides  = track ? track.querySelectorAll('.tgus-blog-slide') : [];\r\n      var prevBtn = document.getElementById('tgusBlogSliderPrev');\r\n      var nextBtn = document.getElementById('tgusBlogSliderNext');\r\n      var dotsWrap= document.getElementById('tgusBlogSliderDots');\r\n      var curEl   = document.getElementById('tgusBlogSliderCurrent');\r\n      var totEl   = document.getElementById('tgusBlogSliderTotal');\r\n      if(!track || !slides.length) return;\r\n\r\n      var total = slides.length;\r\n      var index = 0;\r\n      var autoplayDelay = 6000;\r\n      var autoplayTimer = null;\r\n\r\n      totEl.textContent = String(total).padStart(2,'0');\r\n\r\n      dotsWrap.innerHTML = '';\r\n      for(var i=0;i<total;i++){\r\n        var dot = document.createElement('button');\r\n        dot.type = 'button';\r\n        dot.className = 'tgus-blog-slider__dot' + (i===0 ? ' is-active' : '');\r\n        dot.setAttribute('aria-label', 'Go to article ' + (i+1));\r\n        (function(idx){ dot.addEventListener('click', function(){ goTo(idx, true); }); })(i);\r\n        dotsWrap.appendChild(dot);\r\n      }\r\n      var dots = dotsWrap.querySelectorAll('.tgus-blog-slider__dot');\r\n\r\n      function render(animate){\r\n        curEl.textContent = String(index+1).padStart(2,'0');\r\n        dots.forEach(function(d,i){ d.classList.toggle('is-active', i===index); });\r\n\r\n        var targetXPercent = -index * 100;\r\n        if(!animate || reduceMotion || typeof gsap === 'undefined'){\r\n          track.style.transform = 'translateX(' + targetXPercent + '%)';\r\n        } else {\r\n          gsap.to(track, { xPercent: targetXPercent, duration:.7, ease:'power3.inOut' });\r\n        }\r\n      }\r\n\r\n      function goTo(i, userAction){\r\n        index = (i + total) % total;\r\n        render(true);\r\n        if(userAction) resetAutoplay();\r\n      }\r\n\r\n      prevBtn.addEventListener('click', function(){ goTo(index-1, true); });\r\n      nextBtn.addEventListener('click', function(){ goTo(index+1, true); });\r\n\r\n      var startX = null;\r\n      track.addEventListener('touchstart', function(e){ startX = e.touches[0].clientX; }, {passive:true});\r\n      track.addEventListener('touchend', function(e){\r\n        if(startX === null) return;\r\n        var diff = e.changedTouches[0].clientX - startX;\r\n        if(Math.abs(diff) > 40){ diff < 0 ? goTo(index+1,true) : goTo(index-1,true); }\r\n        startX = null;\r\n      }, {passive:true});\r\n\r\n      function resetAutoplay(){\r\n        if(autoplayTimer) clearInterval(autoplayTimer);\r\n        if(reduceMotion) return;\r\n        autoplayTimer = setInterval(function(){ goTo(index+1, false); }, autoplayDelay);\r\n      }\r\n\r\n      render(false);\r\n      resetAutoplay();\r\n\r\n      window.addEventListener('resize', function(){ render(false); });\r\n    }\r\n\r\n    loadGSAP(initSlider);\r\n  })();\r\n  <\/script>\r\n<\/section>\t\t\t\t<\/div>\n\t\t\t\t<div class=\"elementor-element elementor-element-fc68489 elementor-widget elementor-widget-html\" data-id=\"fc68489\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<!-- ============================================================\r\n  TGUS BLOG \u2014 09c-blog-grid.html\r\n  All-articles grid + filters (category, date, search, sort) + pagination\r\n  Prefijo CSS: #tgus-blog-grid\r\n  CONECTADO A WORDPRESS: usa shortcodes [tgus_blog_cat_options] [tgus_blog_cat_listitems] [tgus_blog_posts]\r\n  (ver tgus-blog-connect.php). Filtros\/orden\/paginaci\u00f3n siguen 100% en cliente (JS sin cambios).\r\n  Paste into an Elementor HTML widget\r\n============================================================= -->\r\n<section id=\"tgus-blog-grid\">\r\n  <style>\r\n    #tgus-blog-grid{\r\n      --tgus-bg-0:#05050a;\r\n      --tgus-blue:#3b82f6;\r\n      --tgus-violet:#8b7cf6;\r\n      --tgus-cyan:#5ec8f2;\r\n      --tgus-font-display:'Bricolage Grotesque', sans-serif;\r\n      --tgus-font-body:'Plus Jakarta Sans', sans-serif;\r\n      background:var(--tgus-bg-0);\r\n      color:#f4f4f7;\r\n      font-family:var(--tgus-font-body);\r\n      padding:88px 24px 120px;\r\n    }\r\n    #tgus-blog-grid *{box-sizing:border-box;margin:0;padding:0;}\r\n    #tgus-blog-grid .tgus-blog-grid__wrap{ max-width:1360px;margin:0 auto; }\r\n\r\n    #tgus-blog-grid .tgus-blog-grid__head{\r\n      display:flex;align-items:flex-end;justify-content:space-between;\r\n      gap:24px;margin-bottom:32px;\r\n      flex-wrap:wrap;\r\n    }\r\n    #tgus-blog-grid h2.tgus-reveal{\r\n      font-family:var(--tgus-font-display);\r\n      font-weight:600;\r\n      font-size:clamp(26px,3vw,38px);\r\n      letter-spacing:-0.01em;\r\n      padding-bottom:.15em;\r\n    }\r\n    #tgus-blog-grid .tgus-reveal-line{\r\n      display:block;\r\n      background-image:linear-gradient(90deg,#f4f4f7 0%,#f4f4f7 40%, rgba(244,244,247,.15) 55%, #f4f4f7 70%, #f4f4f7 100%);\r\n      background-size:250% 100%;\r\n      background-position:150% 0;\r\n      -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;\r\n    }\r\n    #tgus-blog-grid .tgus-grad-word{\r\n      background-image:linear-gradient(90deg,var(--tgus-blue),var(--tgus-violet),var(--tgus-cyan),var(--tgus-blue));\r\n      background-size:300% 100%;\r\n      -webkit-background-clip:text;background-clip:text;-webkit-text-fill-color:transparent;\r\n      animation:tgusBlogGridGradWord 6s linear infinite;\r\n      padding-bottom:.15em;\r\n    }\r\n    @keyframes tgusBlogGridGradWord{ to{ background-position:300% 0; } }\r\n\r\n    #tgus-blog-grid .tgus-blog-grid__count{\r\n      font-size:14px;color:#8f8fa0;\r\n      padding-bottom:6px;\r\n      white-space:nowrap;\r\n    }\r\n\r\n    \/* ==========================================================\r\n       FILTER BAR \u2014 category \/ date \/ sort are all selects, search is a text input\r\n    ========================================================== *\/\r\n    #tgus-blog-grid .tgus-blog-filters{\r\n      display:flex;\r\n      align-items:center;\r\n      justify-content:space-between;\r\n      gap:16px 24px;\r\n      flex-wrap:wrap;\r\n      margin-bottom:36px;\r\n      padding-bottom:24px;\r\n      border-bottom:1px solid rgba(255,255,255,.08);\r\n    }\r\n\r\n    #tgus-blog-grid .tgus-blog-search{\r\n      position:relative;\r\n      display:flex;align-items:center;\r\n      flex:1 1 220px;\r\n      min-width:200px;\r\n      max-width:340px;\r\n    }\r\n    #tgus-blog-grid .tgus-blog-search svg{\r\n      position:absolute;left:13px;\r\n      width:15px;height:15px;\r\n      color:#8f8fa0;\r\n      pointer-events:none;\r\n    }\r\n    #tgus-blog-grid .tgus-blog-search input{\r\n      width:100%;\r\n      font-family:var(--tgus-font-body);\r\n      font-size:13.5px;color:#f4f4f7;\r\n      background:rgba(255,255,255,.03);\r\n      border:1px solid rgba(255,255,255,.14);\r\n      border-radius:999px;\r\n      padding:10px 14px 10px 36px;\r\n      -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);\r\n      outline:none;\r\n      transition:border-color .3s ease, background .3s ease;\r\n    }\r\n    #tgus-blog-grid .tgus-blog-search input::placeholder{ color:#7a7a88; }\r\n    #tgus-blog-grid .tgus-blog-search input:focus{\r\n      border-color:rgba(94,200,242,.5);\r\n      background:rgba(255,255,255,.05);\r\n    }\r\n\r\n    #tgus-blog-grid .tgus-blog-controls{\r\n      display:flex;\r\n      align-items:center;\r\n      gap:10px;\r\n      flex-wrap:wrap;\r\n    }\r\n\r\n    \/* ==========================================================\r\n       CUSTOM DROPDOWN \u2014 vanilla port of a React\/Motion listbox component.\r\n       Native <select> is kept off-DOM (sr-only) per instance to drive\r\n       the existing filter JS unchanged (value + 'change' event), while\r\n       this custom listbox owns everything the user actually sees\/clicks.\r\n    ========================================================== *\/\r\n    #tgus-blog-grid .tgus-dd{\r\n      position:relative;\r\n      display:inline-block;\r\n    }\r\n    #tgus-blog-grid .tgus-dd__native{\r\n      position:absolute;width:1px;height:1px;\r\n      opacity:0;pointer-events:none;\r\n    }\r\n    #tgus-blog-grid .tgus-dd__trigger{\r\n      display:flex;align-items:center;justify-content:space-between;\r\n      gap:10px;width:100%;\r\n      font-family:var(--tgus-font-body);\r\n      font-size:14px;font-weight:600;\r\n      color:#f4f4f7;\r\n      background:#0a0a10;\r\n      border:1px solid rgba(255,255,255,.14);\r\n      border-radius:18px;\r\n      padding:13px 16px;\r\n      outline:none;cursor:pointer;\r\n      transition:border-color .3s ease, box-shadow .2s ease;\r\n    }\r\n    #tgus-blog-grid .tgus-dd__trigger-label{\r\n      overflow:hidden;text-overflow:ellipsis;white-space:nowrap;\r\n    }\r\n    #tgus-blog-grid .tgus-dd__trigger:hover{\r\n      border-color:rgba(255,255,255,.24);\r\n    }\r\n    #tgus-blog-grid .tgus-dd.is-open .tgus-dd__trigger,\r\n    #tgus-blog-grid .tgus-dd__trigger:focus-visible{\r\n      border-color:rgba(139,124,246,.55);\r\n      box-shadow:inset 0 1px 3px rgba(0,0,0,.4);\r\n    }\r\n    #tgus-blog-grid .tgus-dd__chevron{\r\n      width:14px;height:14px;color:#9a9aa8;flex-shrink:0;\r\n      transition:transform .3s cubic-bezier(.16,1,.3,1), color .3s ease;\r\n    }\r\n    #tgus-blog-grid .tgus-dd__trigger:hover .tgus-dd__chevron{ color:#c9c9d4; }\r\n    #tgus-blog-grid .tgus-dd.is-open .tgus-dd__chevron{ transform:rotate(180deg); }\r\n\r\n    #tgus-blog-grid .tgus-dd__panel{\r\n      position:absolute;left:0;top:calc(100% + 6px);z-index:20;\r\n      width:max-content;\r\n      min-width:100%;\r\n      max-width:240px;\r\n      background:#0f0f18;\r\n      border:1px solid rgba(255,255,255,.14);\r\n      border-radius:18px;\r\n      padding:5px;\r\n      box-shadow:0 16px 36px -18px rgba(0,0,0,.7);\r\n      opacity:0;transform:scale(.94) translateY(-8px);\r\n      transform-origin:top left;\r\n      pointer-events:none;\r\n      transition:opacity .16s ease, transform .22s cubic-bezier(.16,1,.3,1);\r\n    }\r\n    #tgus-blog-grid .tgus-dd.is-open .tgus-dd__panel{\r\n      opacity:1;transform:scale(1) translateY(0);\r\n      pointer-events:auto;\r\n    }\r\n    #tgus-blog-grid .tgus-dd__list{\r\n      position:relative;\r\n      max-height:260px;overflow-y:auto;\r\n      list-style:none;\r\n      scrollbar-gutter:stable;\r\n    }\r\n    #tgus-blog-grid .tgus-dd__hl{\r\n      position:absolute;left:0;right:0;top:0;\r\n      height:36px;\r\n      border-radius:11px;\r\n      background:rgba(139,124,246,.16);\r\n      opacity:0;pointer-events:none;\r\n      transition:transform .28s cubic-bezier(.16,1,.3,1), opacity .12s ease;\r\n      will-change:transform;\r\n    }\r\n    #tgus-blog-grid .tgus-dd__opt{\r\n      position:relative;z-index:1;\r\n      display:flex;align-items:center;\r\n      height:36px;\r\n      padding:0 10px;\r\n      border-radius:11px;\r\n      font-size:13.5px;font-weight:500;\r\n      color:#c9c9d4;\r\n      cursor:pointer;\r\n      user-select:none;\r\n      white-space:nowrap;\r\n      gap:24px;\r\n    }\r\n    #tgus-blog-grid .tgus-dd__opt.is-active{ color:#fff; }\r\n    #tgus-blog-grid .tgus-dd__opt.is-selected{ color:#fff;font-weight:700; }\r\n    #tgus-blog-grid .tgus-dd__opt-label{ flex:1;min-width:0; }\r\n    #tgus-blog-grid .tgus-dd__opt-check{\r\n      width:14px;height:14px;flex-shrink:0;\r\n      color:var(--tgus-cyan);\r\n      opacity:0;transform:scale(.7);\r\n      transition:opacity .2s ease, transform .2s cubic-bezier(.16,1,.3,1);\r\n    }\r\n    #tgus-blog-grid .tgus-dd__opt.is-selected .tgus-dd__opt-check{\r\n      opacity:1;transform:scale(1);\r\n    }\r\n\r\n\r\n\r\n    \/* empty state *\/\r\n    #tgus-blog-grid .tgus-blog-empty{\r\n      display:none;\r\n      text-align:center;\r\n      padding:80px 20px;\r\n      color:#8f8fa0;\r\n      font-size:15px;\r\n    }\r\n    #tgus-blog-grid .tgus-blog-empty.is-visible{ display:block; }\r\n\r\n    \/* GRID *\/\r\n    #tgus-blog-grid .tgus-blog-grid__list{\r\n      display:grid;\r\n      grid-template-columns:repeat(3, 1fr);\r\n      gap:28px 24px;\r\n    }\r\n\r\n    #tgus-blog-grid .tgus-blog-post{\r\n      display:flex;flex-direction:column;\r\n      text-decoration:none;color:inherit;\r\n      opacity:0;transform:translateY(24px);\r\n      transition:opacity .3s ease, transform .3s ease;\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post.is-hidden{\r\n      display:none;\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post__media{\r\n      position:relative;\r\n      border-radius:18px;overflow:hidden;\r\n      aspect-ratio:3\/4;\r\n      background:#0b0b14;\r\n      display:flex;\r\n      flex-direction:column;\r\n      justify-content:flex-end;\r\n      isolation:isolate;\r\n      box-shadow:0px -16px 24px 0px rgba(255,255,255,.14) inset;\r\n    }\r\n    \/* animated glow border \u2014 ported from Uiverse \"card__border\" (MuhammadHasann),\r\n       recolored to the ToGrow palette and rebuilt with conic-gradient + @property\r\n       instead of a rotating position:fixed pseudo-element, which breaks inside\r\n       overflow:hidden ancestors (see 02-two-types notes). Full-perimeter gradient\r\n       (not a narrow arc) so the glow reads on every side, not just where the\r\n       moving segment happens to be. *\/\r\n    @property --tgus-post-angle{ syntax:'<angle>'; inherits:false; initial-value:0deg; }\r\n    #tgus-blog-grid .tgus-blog-post__media::before{\r\n      content:\"\";\r\n      position:absolute;\r\n      inset:-1px;\r\n      z-index:3;\r\n      border-radius:inherit;\r\n      padding:2px;\r\n      background:conic-gradient(from var(--tgus-post-angle,0deg),\r\n        rgba(59,130,246,.35) 0deg,\r\n        rgba(59,130,246,.35) 40deg,\r\n        #fff 60deg,\r\n        var(--tgus-cyan) 75deg,\r\n        var(--tgus-violet) 95deg,\r\n        rgba(139,124,246,.35) 115deg,\r\n        rgba(59,130,246,.35) 360deg);\r\n      -webkit-mask:linear-gradient(#fff 0 0) content-box, linear-gradient(#fff 0 0);\r\n      -webkit-mask-composite:xor;\r\n      mask-composite:exclude;\r\n      pointer-events:none;\r\n      animation:tgusPostBorderSpin 4s linear infinite;\r\n    }\r\n    @keyframes tgusPostBorderSpin{ to{ --tgus-post-angle:360deg; } }\r\n\r\n    \/* glass gradient overlay: color bloom rising from the bottom of the card.\r\n       Uses overlay blend so it tints bright\/light source photos too, not just\r\n       dark ones \u2014 a flat multiply\/normal blend disappears over light imagery. *\/\r\n    #tgus-blog-grid .tgus-blog-post__glass{\r\n      position:absolute;inset:0;z-index:1.5;\r\n      background:linear-gradient(0deg,\r\n        rgba(59,130,246,.85) 0%,\r\n        rgba(139,124,246,.65) 32%,\r\n        rgba(94,200,242,.4) 58%,\r\n        transparent 88%);\r\n      mix-blend-mode:overlay;\r\n      opacity:.55;\r\n      transition:opacity .5s ease;\r\n      pointer-events:none;\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post:hover .tgus-blog-post__glass{ opacity:1; }\r\n\r\n    #tgus-blog-grid .tgus-blog-post__img{\r\n      position:absolute;inset:0;z-index:0;\r\n      width:100%;height:100%;object-fit:cover;display:block;\r\n      transform:scale(1.02);\r\n      transition:transform .7s cubic-bezier(.16,1,.3,1);\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post:hover .tgus-blog-post__img{ transform:scale(1.08); }\r\n\r\n    \/* permanent scrim so info stays legible over the photo at all times *\/\r\n    #tgus-blog-grid .tgus-blog-post__scrim{\r\n      position:absolute;left:0;right:0;bottom:0;z-index:1;\r\n      height:62%;\r\n      background:linear-gradient(0deg, rgba(5,5,10,.96) 0%, rgba(5,5,10,.78) 45%, rgba(5,5,10,0) 100%);\r\n      pointer-events:none;\r\n    }\r\n\r\n    #tgus-blog-grid .tgus-blog-post__tag{\r\n      position:absolute;top:14px;left:14px;\r\n      z-index:2;\r\n      font-size:11px;font-weight:700;letter-spacing:.05em;text-transform:uppercase;\r\n      padding:6px 11px;border-radius:999px;color:#eaf3ff;\r\n      background:rgba(8,8,16,.55);\r\n      border:1px solid rgba(255,255,255,.16);\r\n      -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);\r\n    }\r\n\r\n    \/* body block: sits at the bottom of the card, on top of the scrim *\/\r\n    #tgus-blog-grid .tgus-blog-post__body{\r\n      position:relative;z-index:2;\r\n      padding:0 18px 18px;\r\n    }\r\n\r\n    #tgus-blog-grid .tgus-blog-post__title{\r\n      font-family:var(--tgus-font-display);\r\n      font-weight:600;\r\n      font-size:18px;line-height:1.28;\r\n      letter-spacing:-0.005em;\r\n      color:#f4f4f7;\r\n      margin-bottom:10px;\r\n      transition:margin-bottom .4s cubic-bezier(.16,1,.3,1);\r\n    }\r\n\r\n    \/* excerpt: collapsed to 0 height by default, expands above the button on hover *\/\r\n    #tgus-blog-grid .tgus-blog-post__excerpt{\r\n      font-size:13px;line-height:1.55;color:#c3c3ce;\r\n      max-height:0;\r\n      opacity:0;\r\n      overflow:hidden;\r\n      display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;\r\n      transition:max-height .4s cubic-bezier(.16,1,.3,1), opacity .3s ease, margin-bottom .4s cubic-bezier(.16,1,.3,1);\r\n      margin-bottom:0;\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post:hover .tgus-blog-post__excerpt{\r\n      max-height:56px;\r\n      opacity:1;\r\n      margin-bottom:14px;\r\n    }\r\n\r\n    \/* ==========================================================\r\n       READ ARTICLE BUTTON \u2014 same Uiverse by dexter-st component used\r\n       in the blog hero, scaled down to fit inside the card.\r\n    ========================================================== *\/\r\n    #tgus-blog-grid .tgus-blog-post__btn-wrap{\r\n      position:relative;\r\n      display:inline-block;\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post__btn{\r\n      --tgus-pbtn-radius:20px;\r\n      --tgus-pbtn-padding:3px;\r\n      --tgus-pbtn-transition:0.4s;\r\n      position:relative;\r\n      user-select:none;\r\n      display:flex;\r\n      align-items:center;\r\n      justify-content:center;\r\n      padding:0.5em 1.05em 0.5em 0.9em;\r\n      font-family:var(--tgus-font-body);\r\n      font-size:0.82em;\r\n      font-weight:600;\r\n      color:inherit;\r\n      background:linear-gradient(135deg,var(--tgus-blue),var(--tgus-violet));\r\n      box-shadow:\r\n        inset 0px 1px 1px rgba(255,255,255,.35),\r\n        inset 0px 2px 2px rgba(255,255,255,.2),\r\n        inset 0px 4px 4px rgba(255,255,255,.12),\r\n        inset 0px 8px 8px rgba(255,255,255,.06),\r\n        0px -1px 1px rgba(0,0,0,.05),\r\n        0px -4px 6px rgba(0,0,0,.08),\r\n        0px -10px 14px rgba(0,0,0,.12);\r\n      border:solid 1px rgba(255,255,255,.35);\r\n      border-radius:var(--tgus-pbtn-radius);\r\n      cursor:pointer;\r\n      text-decoration:none;\r\n      transition:box-shadow var(--tgus-pbtn-transition), border var(--tgus-pbtn-transition), transform .2s ease;\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post__btn::before{\r\n      content:\"\";\r\n      position:absolute;\r\n      top:calc(0px - var(--tgus-pbtn-padding));\r\n      left:calc(0px - var(--tgus-pbtn-padding));\r\n      width:calc(100% + var(--tgus-pbtn-padding) * 2);\r\n      height:calc(100% + var(--tgus-pbtn-padding) * 2);\r\n      border-radius:calc(var(--tgus-pbtn-radius) + var(--tgus-pbtn-padding));\r\n      pointer-events:none;\r\n      background-image:linear-gradient(0deg,#0004,#000a);\r\n      z-index:-1;\r\n      transition:box-shadow var(--tgus-pbtn-transition), filter var(--tgus-pbtn-transition);\r\n      box-shadow:\r\n        1px 1px 1px rgba(255,255,255,.15),\r\n        2px 2px 2px rgba(255,255,255,.08),\r\n        -1px -1px 1px rgba(0,0,0,.15),\r\n        -2px -2px 2px rgba(0,0,0,.08);\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post__btn::after{\r\n      content:\"\";\r\n      position:absolute;inset:0;\r\n      border-radius:inherit;\r\n      pointer-events:none;\r\n      background-image:linear-gradient(0deg,#fff,var(--tgus-cyan) 40%,transparent 80%);\r\n      opacity:0;\r\n      transition:opacity var(--tgus-pbtn-transition), filter var(--tgus-pbtn-transition);\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post__btn-svg{\r\n      width:14px;height:14px;\r\n      margin-right:.5rem;\r\n      fill:#fff;\r\n      filter:drop-shadow(0 0 2px rgba(255,255,255,.6));\r\n      transition:fill var(--tgus-pbtn-transition), filter var(--tgus-pbtn-transition);\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post__btn-txt{\r\n      position:relative;\r\n      color:#fff;\r\n      white-space:nowrap;\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post:hover .tgus-blog-post__btn{\r\n      border-color:rgba(255,255,255,.6);\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post:hover .tgus-blog-post__btn::after{\r\n      opacity:.7;\r\n      mask-image:linear-gradient(0deg,#fff,transparent);\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post:hover .tgus-blog-post__btn .tgus-blog-post__btn-svg{\r\n      filter:drop-shadow(0 0 4px var(--tgus-cyan));\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post__btn:active{\r\n      transform:scale(.97);\r\n      border-color:rgba(255,255,255,.7);\r\n    }\r\n    #tgus-blog-grid .tgus-blog-post__btn:active::after{\r\n      opacity:1;\r\n      mask-image:linear-gradient(0deg,#fff,transparent);\r\n      filter:brightness(140%);\r\n    }\r\n\r\n    \/* ==========================================================\r\n       PAGINATION \u2014 first\/prev\/numbers\/next\/last, matching reference\r\n    ========================================================== *\/\r\n    #tgus-blog-grid .tgus-blog-pagination{\r\n      display:flex;align-items:center;justify-content:center;\r\n      gap:6px;margin-top:56px;\r\n    }\r\n    #tgus-blog-grid .tgus-page-btn{\r\n      display:flex;align-items:center;justify-content:center;\r\n      min-width:38px;height:38px;\r\n      padding:0 6px;\r\n      border-radius:10px;\r\n      border:1px solid transparent;\r\n      background:transparent;\r\n      color:#8f8fa0;\r\n      font-family:var(--tgus-font-body);\r\n      font-size:14px;font-weight:600;\r\n      cursor:pointer;\r\n      transition:border-color .25s ease, background .25s ease, color .25s ease;\r\n    }\r\n    #tgus-blog-grid .tgus-page-btn svg{ width:16px;height:16px; }\r\n    #tgus-blog-grid .tgus-page-btn:hover:not([disabled]):not(.is-active){\r\n      color:#f4f4f7;\r\n      background:rgba(255,255,255,.05);\r\n    }\r\n    #tgus-blog-grid .tgus-page-btn.is-active{\r\n      color:#fff;\r\n      border-color:rgba(255,255,255,.22);\r\n      background:rgba(255,255,255,.04);\r\n    }\r\n    #tgus-blog-grid .tgus-page-btn[disabled]{\r\n      opacity:.35;cursor:default;\r\n    }\r\n    #tgus-blog-grid .tgus-page-ellipsis{\r\n      display:flex;align-items:center;justify-content:center;\r\n      min-width:38px;height:38px;\r\n      color:#5a5a68;\r\n      font-size:14px;font-weight:700;\r\n      letter-spacing:.05em;\r\n    }\r\n\r\n    @media(prefers-reduced-motion:reduce){\r\n      #tgus-blog-grid .tgus-reveal-line,\r\n      #tgus-blog-grid .tgus-grad-word{ animation:none !important; background-position:0 0 !important; -webkit-text-fill-color:currentColor; }\r\n      #tgus-blog-grid .tgus-blog-post{ opacity:1;transform:none; }\r\n      #tgus-blog-grid .tgus-blog-post__img{ transition:none; }\r\n      #tgus-blog-grid .tgus-blog-post__excerpt{ transition:none; }\r\n      #tgus-blog-grid .tgus-blog-post__btn-svg{ transition:none; }\r\n      #tgus-blog-grid .tgus-blog-post__media::before{ animation:none; }\r\n      #tgus-blog-grid .tgus-blog-post__glass{ transition:none; }\r\n      #tgus-blog-grid .tgus-dd__panel{ transition:opacity .12s ease; }\r\n      #tgus-blog-grid .tgus-dd__chevron{ transition:none; }\r\n      #tgus-blog-grid .tgus-dd__hl{ transition:opacity .12s ease; }\r\n      #tgus-blog-grid .tgus-dd__opt-check{ transition:opacity .12s ease; }\r\n    }\r\n\r\n    @media(max-width:1024px){\r\n      #tgus-blog-grid .tgus-blog-grid__list{ grid-template-columns:repeat(2, 1fr); }\r\n      #tgus-blog-grid .tgus-blog-filters{ flex-direction:column;align-items:stretch; }\r\n      #tgus-blog-grid .tgus-blog-search{ max-width:none; }\r\n      #tgus-blog-grid .tgus-blog-controls{ justify-content:space-between; }\r\n    }\r\n    @media(max-width:768px){\r\n      #tgus-blog-grid{ padding:64px 20px 90px; }\r\n      #tgus-blog-grid .tgus-blog-grid__list{ grid-template-columns:1fr; gap:32px; }\r\n      #tgus-blog-grid .tgus-blog-grid__head{ margin-bottom:24px; }\r\n      #tgus-blog-grid .tgus-blog-controls{ width:100%;flex-direction:column;align-items:stretch; }\r\n      #tgus-blog-grid .tgus-dd{ width:100%; }\r\n      #tgus-blog-grid .tgus-dd__panel{ left:0;right:0;width:auto; }\r\n    }\r\n  <\/style>\r\n\r\n  <div class=\"tgus-blog-grid__wrap\">\r\n    <div class=\"tgus-blog-grid__head\">\r\n      <h2 class=\"tgus-reveal\">\r\n        <span class=\"tgus-reveal-line\">All <span class=\"tgus-grad-word\">articles<\/span><\/span>\r\n      <\/h2>\r\n      <span class=\"tgus-blog-grid__count\" id=\"tgusBlogGridCount\">\u2014 posts<\/span>\r\n    <\/div>\r\n\r\n    <!-- ================= FILTER BAR ================= -->\r\n    <div class=\"tgus-blog-filters\">\r\n      <div class=\"tgus-blog-search\">\r\n        <svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><circle cx=\"11\" cy=\"11\" r=\"7\"\/><path stroke-linecap=\"round\" d=\"M21 21l-4.35-4.35\"\/><\/svg>\r\n        <input type=\"text\" id=\"tgusBlogSearch\" placeholder=\"Search articles\u2026\" autocomplete=\"off\">\r\n      <\/div>\r\n\r\n      <div class=\"tgus-blog-controls\">\r\n        <div class=\"tgus-dd\" data-dd>\r\n          <select class=\"tgus-dd__native\" id=\"tgusBlogCatFilter\" tabindex=\"-1\" aria-hidden=\"true\">\r\n            <option value=\"all\">All categories<\/option><option value=\"automation\">Automation<\/option><option value=\"uncategorized\">Uncategorized<\/option>\r\n          <\/select>\r\n          <button type=\"button\" class=\"tgus-dd__trigger\" aria-haspopup=\"listbox\" aria-expanded=\"false\">\r\n            <span class=\"tgus-dd__trigger-label\">All categories<\/span>\r\n            <svg class=\"tgus-dd__chevron\" viewBox=\"0 0 12 12\" fill=\"none\"><path d=\"M3 4.75 6 7.75 9 4.75\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n          <\/button>\r\n          <div class=\"tgus-dd__panel\">\r\n            <ul class=\"tgus-dd__list\" role=\"listbox\" tabindex=\"-1\">\r\n              <span class=\"tgus-dd__hl\" aria-hidden=\"true\"><\/span>\r\n                  <li class=\"tgus-dd__opt\" role=\"option\" data-value=\"all\">\n      <span class=\"tgus-dd__opt-label\">All categories<\/span>\n      <svg class=\"tgus-dd__opt-check\" viewBox=\"0 0 14 14\" fill=\"none\"><path d=\"M3 7.4 5.8 10.2 11 4.4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n    <\/li>\n        <li class=\"tgus-dd__opt\" role=\"option\" data-value=\"automation\">\n      <span class=\"tgus-dd__opt-label\">Automation<\/span>\n      <svg class=\"tgus-dd__opt-check\" viewBox=\"0 0 14 14\" fill=\"none\"><path d=\"M3 7.4 5.8 10.2 11 4.4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n    <\/li>\n        <li class=\"tgus-dd__opt\" role=\"option\" data-value=\"uncategorized\">\n      <span class=\"tgus-dd__opt-label\">Uncategorized<\/span>\n      <svg class=\"tgus-dd__opt-check\" viewBox=\"0 0 14 14\" fill=\"none\"><path d=\"M3 7.4 5.8 10.2 11 4.4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n    <\/li>\n    \r\n            <\/ul>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"tgus-dd\" data-dd>\r\n          <select class=\"tgus-dd__native\" id=\"tgusBlogDateFilter\" tabindex=\"-1\" aria-hidden=\"true\">\r\n            <option value=\"all\">Any time<\/option>\r\n            <option value=\"7\">Last 7 days<\/option>\r\n            <option value=\"30\">This month<\/option>\r\n            <option value=\"365\">This year<\/option>\r\n          <\/select>\r\n          <button type=\"button\" class=\"tgus-dd__trigger\" aria-haspopup=\"listbox\" aria-expanded=\"false\">\r\n            <span class=\"tgus-dd__trigger-label\">Any time<\/span>\r\n            <svg class=\"tgus-dd__chevron\" viewBox=\"0 0 12 12\" fill=\"none\"><path d=\"M3 4.75 6 7.75 9 4.75\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n          <\/button>\r\n          <div class=\"tgus-dd__panel\">\r\n            <ul class=\"tgus-dd__list\" role=\"listbox\" tabindex=\"-1\">\r\n              <span class=\"tgus-dd__hl\" aria-hidden=\"true\"><\/span>\r\n              <li class=\"tgus-dd__opt\" role=\"option\" data-value=\"all\">\r\n                <span class=\"tgus-dd__opt-label\">Any time<\/span>\r\n                <svg class=\"tgus-dd__opt-check\" viewBox=\"0 0 14 14\" fill=\"none\"><path d=\"M3 7.4 5.8 10.2 11 4.4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n              <\/li>\r\n              <li class=\"tgus-dd__opt\" role=\"option\" data-value=\"7\">\r\n                <span class=\"tgus-dd__opt-label\">Last 7 days<\/span>\r\n                <svg class=\"tgus-dd__opt-check\" viewBox=\"0 0 14 14\" fill=\"none\"><path d=\"M3 7.4 5.8 10.2 11 4.4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n              <\/li>\r\n              <li class=\"tgus-dd__opt\" role=\"option\" data-value=\"30\">\r\n                <span class=\"tgus-dd__opt-label\">This month<\/span>\r\n                <svg class=\"tgus-dd__opt-check\" viewBox=\"0 0 14 14\" fill=\"none\"><path d=\"M3 7.4 5.8 10.2 11 4.4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n              <\/li>\r\n              <li class=\"tgus-dd__opt\" role=\"option\" data-value=\"365\">\r\n                <span class=\"tgus-dd__opt-label\">This year<\/span>\r\n                <svg class=\"tgus-dd__opt-check\" viewBox=\"0 0 14 14\" fill=\"none\"><path d=\"M3 7.4 5.8 10.2 11 4.4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n              <\/li>\r\n            <\/ul>\r\n          <\/div>\r\n        <\/div>\r\n\r\n        <div class=\"tgus-dd\" data-dd>\r\n          <select class=\"tgus-dd__native\" id=\"tgusBlogSort\" tabindex=\"-1\" aria-hidden=\"true\">\r\n            <option value=\"recent\">Most recent<\/option>\r\n            <option value=\"oldest\">Oldest first<\/option>\r\n            <option value=\"popular\">Most read<\/option>\r\n          <\/select>\r\n          <button type=\"button\" class=\"tgus-dd__trigger\" aria-haspopup=\"listbox\" aria-expanded=\"false\">\r\n            <span class=\"tgus-dd__trigger-label\">Most recent<\/span>\r\n            <svg class=\"tgus-dd__chevron\" viewBox=\"0 0 12 12\" fill=\"none\"><path d=\"M3 4.75 6 7.75 9 4.75\" stroke=\"currentColor\" stroke-width=\"1.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n          <\/button>\r\n          <div class=\"tgus-dd__panel\">\r\n            <ul class=\"tgus-dd__list\" role=\"listbox\" tabindex=\"-1\">\r\n              <span class=\"tgus-dd__hl\" aria-hidden=\"true\"><\/span>\r\n              <li class=\"tgus-dd__opt\" role=\"option\" data-value=\"recent\">\r\n                <span class=\"tgus-dd__opt-label\">Most recent<\/span>\r\n                <svg class=\"tgus-dd__opt-check\" viewBox=\"0 0 14 14\" fill=\"none\"><path d=\"M3 7.4 5.8 10.2 11 4.4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n              <\/li>\r\n              <li class=\"tgus-dd__opt\" role=\"option\" data-value=\"oldest\">\r\n                <span class=\"tgus-dd__opt-label\">Oldest first<\/span>\r\n                <svg class=\"tgus-dd__opt-check\" viewBox=\"0 0 14 14\" fill=\"none\"><path d=\"M3 7.4 5.8 10.2 11 4.4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n              <\/li>\r\n              <li class=\"tgus-dd__opt\" role=\"option\" data-value=\"popular\">\r\n                <span class=\"tgus-dd__opt-label\">Most read<\/span>\r\n                <svg class=\"tgus-dd__opt-check\" viewBox=\"0 0 14 14\" fill=\"none\"><path d=\"M3 7.4 5.8 10.2 11 4.4\" stroke=\"currentColor\" stroke-width=\"1.5\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\r\n              <\/li>\r\n            <\/ul>\r\n          <\/div>\r\n        <\/div>\r\n      <\/div>\r\n    <\/div>\r\n\r\n    <p class=\"tgus-blog-empty\" id=\"tgusBlogEmpty\">No articles match those filters. Try a different category or search term.<\/p>\r\n\r\n    <div class=\"tgus-blog-grid__list\" id=\"tgusBlogGridList\">\r\n\r\n              <a href=\"https:\/\/togrowagencia.com\/en\/how-to-choose-custom-software-development\/\" class=\"tgus-blog-post\" data-cat=\"automation\" data-date=\"2026-11-09\" data-views=\"13\">\n          <span class=\"tgus-blog-post__media\">\n            <img class=\"tgus-blog-post__img\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/togrowagencia.com\/en\/wp-content\/uploads\/2026\/11\/Custom-Software-Development-Partner--1024x554.jpg\" alt=\"How to Choose a Custom Software Development Partner (A Guide for US Startups)\">\n            <span class=\"tgus-blog-post__glass\"><\/span>\n            <span class=\"tgus-blog-post__scrim\"><\/span>\n            <span class=\"tgus-blog-post__tag\">Automation<\/span>\n            <span class=\"tgus-blog-post__body\">\n              <h3 class=\"tgus-blog-post__title\">How to Choose a Custom Software Development Partner (A Guide for US Startups)<\/h3>\n              <p class=\"tgus-blog-post__excerpt\">ToGrow is a US company with its engineering hub in Medell\u00edn, Colombia. We design and build custom software, web platforms and mobile apps for startups and growing companies. You work directly with the engineers who write your code, in your business hours, from the first call to ongoing support. A custom software development company that [&hellip;]<\/p>\n              <span class=\"tgus-blog-post__btn-wrap\">\n                <span class=\"tgus-blog-post__btn\">\n                  <svg class=\"tgus-blog-post__btn-svg\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\">\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z\"><\/path>\n                  <\/svg>\n                  <span class=\"tgus-blog-post__btn-txt\">Read article<\/span>\n                <\/span>\n              <\/span>\n            <\/span>\n          <\/span>\n        <\/a>\n            <a href=\"https:\/\/togrowagencia.com\/en\/como-crear-presencia-digital-para-tu-empresa-desde-cero-guia-practica-2026\/\" class=\"tgus-blog-post\" data-cat=\"automation\" data-date=\"2026-08-14\" data-views=\"41\">\n          <span class=\"tgus-blog-post__media\">\n            <img class=\"tgus-blog-post__img\" loading=\"lazy\" decoding=\"async\" src=\"https:\/\/togrowagencia.com\/en\/wp-content\/uploads\/2026\/08\/persona-que-gestiona-la-optimizacion-de-motores-de-busqueda-seo-para-marketing-digital-con-contenido-de-redes-sociales-2048x1152-1-1024x576.webp\" alt=\"How to Build a Digital Presence for Your Business From Scratch: A Practical 2026 Guide\">\n            <span class=\"tgus-blog-post__glass\"><\/span>\n            <span class=\"tgus-blog-post__scrim\"><\/span>\n            <span class=\"tgus-blog-post__tag\">Automation<\/span>\n            <span class=\"tgus-blog-post__body\">\n              <h3 class=\"tgus-blog-post__title\">How to Build a Digital Presence for Your Business From Scratch: A Practical 2026 Guide<\/h3>\n              <p class=\"tgus-blog-post__excerpt\">In a world where customers research, compare, and decide in a matter of seconds, building a solid digital presence is no longer optional \u2014 it&#8217;s the foundation for any company&#8217;s sustainable growth. As experts in positioning and digital strategy, we&#8217;ve guided numerous companies through this journey, and we know that starting from zero can feel [&hellip;]<\/p>\n              <span class=\"tgus-blog-post__btn-wrap\">\n                <span class=\"tgus-blog-post__btn\">\n                  <svg class=\"tgus-blog-post__btn-svg\" xmlns=\"http:\/\/www.w3.org\/2000\/svg\" viewBox=\"0 0 24 24\">\n                    <path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9.813 15.904 9 18.75l-.813-2.846a4.5 4.5 0 0 0-3.09-3.09L2.25 12l2.846-.813a4.5 4.5 0 0 0 3.09-3.09L9 5.25l.813 2.846a4.5 4.5 0 0 0 3.09 3.09L15.75 12l-2.846.813a4.5 4.5 0 0 0-3.09 3.09ZM18.259 8.715 18 9.75l-.259-1.035a3.375 3.375 0 0 0-2.455-2.456L14.25 6l1.036-.259a3.375 3.375 0 0 0 2.455-2.456L18 2.25l.259 1.035a3.375 3.375 0 0 0 2.456 2.456L21.75 6l-1.035.259a3.375 3.375 0 0 0-2.456 2.456ZM16.894 20.567 16.5 21.75l-.394-1.183a2.25 2.25 0 0 0-1.423-1.423L13.5 18.75l1.183-.394a2.25 2.25 0 0 0 1.423-1.423l.394-1.183.394 1.183a2.25 2.25 0 0 0 1.423 1.423l1.183.394-1.183.394a2.25 2.25 0 0 0-1.423 1.423Z\"><\/path>\n                  <\/svg>\n                  <span class=\"tgus-blog-post__btn-txt\">Read article<\/span>\n                <\/span>\n              <\/span>\n            <\/span>\n          <\/span>\n        <\/a>\n    \r\n\r\n    <\/div>\r\n\r\n    <nav class=\"tgus-blog-pagination\" id=\"tgusBlogPagination\" aria-label=\"Articles pagination\"><\/nav>\r\n  <\/div>\r\n\r\n  <script>\r\n  (function(){\r\n    var root = document.getElementById('tgus-blog-grid');\r\n    if(!root) return;\r\n    var reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\r\n\r\n    function loadGSAP(cb){\r\n      if(typeof gsap !== 'undefined') return cb();\r\n      var s = document.createElement('script');\r\n      s.src = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.12.5\/gsap.min.js';\r\n      s.defer = true;\r\n      s.onload = cb;\r\n      document.head.appendChild(s);\r\n    }\r\n    function loadST(cb){\r\n      if(typeof ScrollTrigger !== 'undefined') return cb();\r\n      var s = document.createElement('script');\r\n      s.src = 'https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/gsap\/3.12.5\/ScrollTrigger.min.js';\r\n      s.defer = true;\r\n      s.onload = cb;\r\n      document.head.appendChild(s);\r\n    }\r\n\r\n    function initReveal(){\r\n      var headLines = root.querySelectorAll('.tgus-reveal-line');\r\n      if(reduceMotion || typeof gsap === 'undefined'){\r\n        headLines.forEach(function(l){ l.style.backgroundPosition='0 0'; l.style.webkitTextFillColor='currentColor'; });\r\n        return;\r\n      }\r\n      gsap.registerPlugin(ScrollTrigger);\r\n\r\n      gsap.to(headLines, {\r\n        backgroundPosition:'-50% 0',\r\n        duration:1.2, ease:'power3.out',\r\n        scrollTrigger:{ trigger: headLines[0], start:'top 85%', once:true }\r\n      });\r\n\r\n      var posts = root.querySelectorAll('.tgus-blog-post');\r\n      gsap.to(posts, {\r\n        opacity:1, y:0, duration:.7, ease:'power2.out',\r\n        stagger:{ each:0.08, grid:'auto', from:'start' },\r\n        scrollTrigger:{ trigger:'#tgusBlogGridList', start:'top 85%', once:true }\r\n      });\r\n    }\r\n\r\n    loadGSAP(function(){ loadST(initReveal); });\r\n\r\n    \/* ==========================================================\r\n       CUSTOM DROPDOWN ENGINE \u2014 vanilla port of the React\/Motion listbox.\r\n       Drives the visible .tgus-dd markup and keeps a hidden native\r\n       <select> in sync (value + dispatched 'change' event) so the\r\n       filter logic below needs zero changes.\r\n    ========================================================== *\/\r\n    (function initDropdowns(){\r\n      var dds = Array.prototype.slice.call(root.querySelectorAll('[data-dd]'));\r\n\r\n      dds.forEach(function(dd){\r\n        var nativeSelect = dd.querySelector('.tgus-dd__native');\r\n        var trigger      = dd.querySelector('.tgus-dd__trigger');\r\n        var triggerLabel = dd.querySelector('.tgus-dd__trigger-label');\r\n        var panel        = dd.querySelector('.tgus-dd__panel');\r\n        var list         = dd.querySelector('.tgus-dd__list');\r\n        var hl           = dd.querySelector('.tgus-dd__hl');\r\n        var opts         = Array.prototype.slice.call(dd.querySelectorAll('.tgus-dd__opt'));\r\n\r\n        var activeIndex = -1;\r\n        var open = false;\r\n        var rowH = 36; \/\/ must match .tgus-dd__opt \/ .tgus-dd__hl height\r\n\r\n        function selectedIndex(){\r\n          var val = nativeSelect.value;\r\n          for(var i=0;i<opts.length;i++){ if(opts[i].getAttribute('data-value') === val) return i; }\r\n          return -1;\r\n        }\r\n\r\n        function paint(){\r\n          var sel = selectedIndex();\r\n          opts.forEach(function(o,i){\r\n            o.classList.toggle('is-selected', i === sel);\r\n            o.classList.toggle('is-active', i === activeIndex);\r\n          });\r\n          if(activeIndex >= 0){\r\n            hl.style.opacity = '1';\r\n            hl.style.transform = 'translateY(' + (activeIndex*rowH) + 'px)';\r\n          } else {\r\n            hl.style.opacity = '0';\r\n          }\r\n        }\r\n\r\n        function setLabel(){\r\n          var sel = selectedIndex();\r\n          triggerLabel.textContent = sel >= 0 ? opts[sel].querySelector('.tgus-dd__opt-label').textContent : '';\r\n        }\r\n\r\n        function openMenu(){\r\n          if(open) return;\r\n          \/\/ close any other open dropdown first\r\n          dds.forEach(function(other){ if(other !== dd) other.classList.remove('is-open'); });\r\n          open = true;\r\n          dd.classList.add('is-open');\r\n          trigger.setAttribute('aria-expanded','true');\r\n          activeIndex = selectedIndex() >= 0 ? selectedIndex() : 0;\r\n          paint();\r\n          list.focus({ preventScroll:true });\r\n        }\r\n\r\n        function closeMenu(restoreFocus){\r\n          if(!open) return;\r\n          open = false;\r\n          dd.classList.remove('is-open');\r\n          trigger.setAttribute('aria-expanded','false');\r\n          activeIndex = -1;\r\n          if(restoreFocus) trigger.focus();\r\n        }\r\n\r\n        function commit(index){\r\n          var opt = opts[index];\r\n          if(!opt) return;\r\n          var val = opt.getAttribute('data-value');\r\n          if(nativeSelect.value !== val){\r\n            nativeSelect.value = val;\r\n            nativeSelect.dispatchEvent(new Event('change', { bubbles:true }));\r\n          }\r\n          setLabel();\r\n          closeMenu(true);\r\n        }\r\n\r\n        trigger.addEventListener('click', function(){\r\n          open ? closeMenu(true) : openMenu();\r\n        });\r\n\r\n        trigger.addEventListener('keydown', function(e){\r\n          if(e.key === 'ArrowDown' || e.key === 'Enter' || e.key === ' '){\r\n            e.preventDefault(); openMenu();\r\n          } else if(e.key === 'ArrowUp'){\r\n            e.preventDefault(); openMenu();\r\n          }\r\n        });\r\n\r\n        opts.forEach(function(opt, i){\r\n          opt.addEventListener('mousemove', function(){ activeIndex = i; paint(); });\r\n          opt.addEventListener('click', function(){ commit(i); });\r\n        });\r\n\r\n        list.addEventListener('keydown', function(e){\r\n          if(e.key === 'ArrowDown' || e.key === 'ArrowUp'){\r\n            e.preventDefault();\r\n            var dir = e.key === 'ArrowDown' ? 1 : -1;\r\n            activeIndex = (activeIndex + dir + opts.length) % opts.length;\r\n            paint();\r\n          } else if(e.key === 'Home'){\r\n            e.preventDefault(); activeIndex = 0; paint();\r\n          } else if(e.key === 'End'){\r\n            e.preventDefault(); activeIndex = opts.length-1; paint();\r\n          } else if(e.key === 'Enter' || e.key === ' '){\r\n            e.preventDefault(); commit(activeIndex);\r\n          } else if(e.key === 'Escape' || e.key === 'Tab'){\r\n            e.preventDefault(); closeMenu(true);\r\n          }\r\n        });\r\n\r\n        document.addEventListener('pointerdown', function(e){\r\n          if(open && !dd.contains(e.target)) closeMenu(false);\r\n        }, true);\r\n\r\n        setLabel();\r\n      });\r\n    })();\r\n\r\n    \/* ==========================================================\r\n       FILTERS: category, date range, search, sort \u2014 plus numbered pagination\r\n       over the filtered\/sorted result set. Works on the existing DOM via\r\n       data attributes (data-cat, data-date, data-views vienen del PHP).\r\n    ========================================================== *\/\r\n    var list        = document.getElementById('tgusBlogGridList');\r\n    var allPosts     = Array.prototype.slice.call(list.querySelectorAll('.tgus-blog-post'));\r\n    var catSelect    = document.getElementById('tgusBlogCatFilter');\r\n    var searchInput  = document.getElementById('tgusBlogSearch');\r\n    var dateSelect   = document.getElementById('tgusBlogDateFilter');\r\n    var sortSelect   = document.getElementById('tgusBlogSort');\r\n    var countEl      = document.getElementById('tgusBlogGridCount');\r\n    var emptyEl      = document.getElementById('tgusBlogEmpty');\r\n    var paginationEl = document.getElementById('tgusBlogPagination');\r\n\r\n    var PAGE_SIZE = 6;\r\n    var state = { cat:'all', date:'all', q:'', sort:'recent', page:1 };\r\n    var searchDebounce;\r\n\r\n    function matchesFilters(post){\r\n      if(state.cat !== 'all' && post.getAttribute('data-cat') !== state.cat) return false;\r\n\r\n      if(state.date !== 'all'){\r\n        var days = parseInt(state.date, 10);\r\n        var postDate = new Date(post.getAttribute('data-date') + 'T00:00:00');\r\n        var cutoff = new Date();\r\n        cutoff.setDate(cutoff.getDate() - days);\r\n        if(postDate < cutoff) return false;\r\n      }\r\n\r\n      if(state.q){\r\n        var haystack = (post.querySelector('.tgus-blog-post__title').textContent + ' ' +\r\n                        post.querySelector('.tgus-blog-post__excerpt').textContent).toLowerCase();\r\n        if(haystack.indexOf(state.q) === -1) return false;\r\n      }\r\n\r\n      return true;\r\n    }\r\n\r\n    function sortPosts(posts){\r\n      var sorted = posts.slice();\r\n      if(state.sort === 'recent'){\r\n        sorted.sort(function(a,b){ return new Date(b.getAttribute('data-date')) - new Date(a.getAttribute('data-date')); });\r\n      } else if(state.sort === 'oldest'){\r\n        sorted.sort(function(a,b){ return new Date(a.getAttribute('data-date')) - new Date(b.getAttribute('data-date')); });\r\n      } else if(state.sort === 'popular'){\r\n        sorted.sort(function(a,b){ return parseInt(b.getAttribute('data-views'),10) - parseInt(a.getAttribute('data-views'),10); });\r\n      }\r\n      return sorted;\r\n    }\r\n\r\n    function pageButton(opts){\r\n      var btn = document.createElement('button');\r\n      btn.type = 'button';\r\n      btn.className = 'tgus-page-btn' + (opts.active ? ' is-active' : '');\r\n      if(opts.disabled) btn.disabled = true;\r\n      if(opts.label) btn.textContent = opts.label;\r\n      if(opts.svg) btn.innerHTML = opts.svg;\r\n      if(opts.aria) btn.setAttribute('aria-label', opts.aria);\r\n      if(opts.onClick) btn.addEventListener('click', opts.onClick);\r\n      return btn;\r\n    }\r\n\r\n    var ICON_FIRST = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M11 17l-5-5 5-5M18 17l-5-5 5-5\"\/><\/svg>';\r\n    var ICON_PREV  = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M15 6l-6 6 6 6\"\/><\/svg>';\r\n    var ICON_NEXT  = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M9 6l6 6-6 6\"\/><\/svg>';\r\n    var ICON_LAST  = '<svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\"><path stroke-linecap=\"round\" stroke-linejoin=\"round\" d=\"M13 17l5-5-5-5M6 17l5-5-5-5\"\/><\/svg>';\r\n\r\n    function goToPage(p){\r\n      state.page = p;\r\n      render();\r\n      \/\/ scroll the grid back into view so paging feels like a real navigation\r\n      list.scrollIntoView({ behavior: reduceMotion ? 'auto' : 'smooth', block:'start' });\r\n    }\r\n\r\n    function renderPagination(totalPages){\r\n      paginationEl.innerHTML = '';\r\n      if(totalPages <= 1) return;\r\n\r\n      var cur = state.page;\r\n\r\n      paginationEl.appendChild(pageButton({ svg:ICON_FIRST, aria:'First page', disabled:cur===1, onClick:function(){ goToPage(1); } }));\r\n      paginationEl.appendChild(pageButton({ svg:ICON_PREV,  aria:'Previous page', disabled:cur===1, onClick:function(){ goToPage(cur-1); } }));\r\n\r\n      \/\/ window of page numbers around the current page, always showing 1 and last\r\n      var windowSize = 1;\r\n      var pages = [];\r\n      for(var i=1;i<=totalPages;i++){\r\n        if(i === 1 || i === totalPages || Math.abs(i-cur) <= windowSize) pages.push(i);\r\n      }\r\n\r\n      var prev = null;\r\n      pages.forEach(function(p){\r\n        if(prev !== null && p - prev > 1){\r\n          var ell = document.createElement('span');\r\n          ell.className = 'tgus-page-ellipsis';\r\n          ell.textContent = '\u2026';\r\n          paginationEl.appendChild(ell);\r\n        }\r\n        paginationEl.appendChild(pageButton({\r\n          label:String(p), active:p===cur,\r\n          aria:'Page ' + p,\r\n          onClick:function(){ goToPage(p); }\r\n        }));\r\n        prev = p;\r\n      });\r\n\r\n      paginationEl.appendChild(pageButton({ svg:ICON_NEXT, aria:'Next page', disabled:cur===totalPages, onClick:function(){ goToPage(cur+1); } }));\r\n      paginationEl.appendChild(pageButton({ svg:ICON_LAST, aria:'Last page', disabled:cur===totalPages, onClick:function(){ goToPage(totalPages); } }));\r\n    }\r\n\r\n    function render(){\r\n      var matched = allPosts.filter(matchesFilters);\r\n      var sorted = sortPosts(matched);\r\n\r\n      var totalPages = Math.max(1, Math.ceil(sorted.length \/ PAGE_SIZE));\r\n      if(state.page > totalPages) state.page = totalPages;\r\n      if(state.page < 1) state.page = 1;\r\n\r\n      var start = (state.page - 1) * PAGE_SIZE;\r\n      var pageItems = sorted.slice(start, start + PAGE_SIZE);\r\n      var pageSet = new Set(pageItems);\r\n\r\n      \/\/ reorder in the DOM according to the active sort, then show only this page's slice\r\n      sorted.forEach(function(post){ list.appendChild(post); });\r\n      allPosts.forEach(function(post){\r\n        post.classList.toggle('is-hidden', !pageSet.has(post));\r\n      });\r\n\r\n      var visibleCount = sorted.length;\r\n      countEl.textContent = visibleCount + (visibleCount === 1 ? ' post' : ' posts');\r\n      emptyEl.classList.toggle('is-visible', visibleCount === 0);\r\n      list.style.display = visibleCount === 0 ? 'none' : 'grid';\r\n\r\n      renderPagination(totalPages);\r\n\r\n      if(!reduceMotion && typeof gsap !== 'undefined'){\r\n        gsap.fromTo(pageItems, { opacity:0, y:12 }, { opacity:1, y:0, duration:.4, stagger:0.04, ease:'power2.out' });\r\n      } else {\r\n        pageItems.forEach(function(p){ p.style.opacity = 1; p.style.transform = 'none'; });\r\n      }\r\n    }\r\n\r\n    catSelect.addEventListener('change', function(){\r\n      state.cat = catSelect.value;\r\n      state.page = 1;\r\n      render();\r\n    });\r\n\r\n    searchInput.addEventListener('input', function(){\r\n      clearTimeout(searchDebounce);\r\n      var val = searchInput.value;\r\n      searchDebounce = setTimeout(function(){\r\n        state.q = val.trim().toLowerCase();\r\n        state.page = 1;\r\n        render();\r\n      }, 220);\r\n    });\r\n\r\n    dateSelect.addEventListener('change', function(){\r\n      state.date = dateSelect.value;\r\n      state.page = 1;\r\n      render();\r\n    });\r\n\r\n    sortSelect.addEventListener('change', function(){\r\n      state.sort = sortSelect.value;\r\n      state.page = 1;\r\n      render();\r\n    });\r\n\r\n    \/\/ initial render: page 1, no filters applied\r\n    render();\r\n  })();\r\n  <\/script>\r\n<\/section>\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":"<p>Automation C\u00f3mo crear presencia digital para tu empresa desde cero: gu\u00eda pr\u00e1ctica 2026 En un mundo donde los clientes investigan, comparan y deciden en cuesti\u00f3n de segundos, construir una&nbsp;presencia digital&nbsp;s\u00f3lida ya no es una opci\u00f3n, sino la base para el crecimiento sostenible de cualquier empresa. Nosotros, como expertos en posicionamiento y estrategias digitales, hemos acompa\u00f1ado [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-447","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/togrowagencia.com\/en\/wp-json\/wp\/v2\/pages\/447","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/togrowagencia.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/togrowagencia.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/togrowagencia.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/togrowagencia.com\/en\/wp-json\/wp\/v2\/comments?post=447"}],"version-history":[{"count":64,"href":"https:\/\/togrowagencia.com\/en\/wp-json\/wp\/v2\/pages\/447\/revisions"}],"predecessor-version":[{"id":1261,"href":"https:\/\/togrowagencia.com\/en\/wp-json\/wp\/v2\/pages\/447\/revisions\/1261"}],"wp:attachment":[{"href":"https:\/\/togrowagencia.com\/en\/wp-json\/wp\/v2\/media?parent=447"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}