{"id":4210,"date":"2026-09-30T00:24:22","date_gmt":"2026-09-30T00:24:22","guid":{"rendered":"https:\/\/anigami.studio\/landings\/software\/"},"modified":"2026-10-08T22:51:52","modified_gmt":"2026-10-08T22:51:52","slug":"software","status":"publish","type":"page","link":"https:\/\/anigami.studio\/en\/landings\/software\/","title":{"rendered":"Desarrollo de software a la medida con React y Next.js"},"content":{"rendered":"\n<!-- ANIGAMI Studio \u00b7 landing \"software\" \u00b7 generado por scripts\/build.js \u00b7 NO editar en dist\/ -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\">\n<link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin>\n<link href=\"https:\/\/fonts.googleapis.com\/css2?family=Manrope:wght@400;600;700;800;900&#038;display=swap\" rel=\"stylesheet\">\n<style>\n\n.ag-lp.ag-lp.ag-lp {\n  --amber: #FEB406;\n  --amber-600: #d99700;\n  --brown: #724809;\n  --brown-900: #3d2604;\n  --lime: #F2FF66;\n  --ink: #0d0d10;\n  --ink-2: #16161b;\n  --ink-3: #1f1f26;\n  --line: rgba(255, 255, 255, .10);\n  --line-2: rgba(255, 255, 255, .18);\n  --fg: #f4f4f6;\n  --fg-dim: #a9a9b4;\n  --fg-dimmer: #74747f;\n  --paper: #ffffff;\n  --paper-2: #f7f6f3;\n  --ink-on-paper: #14141a;\n  --dim-on-paper: #5a5a66;\n  --radius: 4px;\n  --radius-lg: 6px;\n  --maxw: 1200px;\n  --pad: clamp(20px, 5vw, 40px);\n\n  font-family: 'Manrope', system-ui, -apple-system, 'Segoe UI', sans-serif;\n  color: var(--fg);\n  background: var(--ink);\n  line-height: 1.6;\n  -webkit-font-smoothing: antialiased;\n  text-rendering: optimizeLegibility;\n}\n.ag-lp.ag-lp.ag-lp *, .ag-lp.ag-lp.ag-lp *::before, .ag-lp.ag-lp.ag-lp *::after { box-sizing: border-box; }\n.ag-lp.ag-lp.ag-lp img { max-width: 100%; height: auto; display: block; }\n.ag-lp.ag-lp.ag-lp h1, .ag-lp.ag-lp.ag-lp h2, .ag-lp.ag-lp.ag-lp h3, .ag-lp.ag-lp.ag-lp h4 {\n  margin: 0 0 .5em; font-weight: 800; line-height: 1.08; letter-spacing: -.032em;\n}\n.ag-lp.ag-lp.ag-lp p { margin: 0 0 1em; }\n.ag-lp.ag-lp.ag-lp a { color: inherit; }\n.ag-lp.ag-lp.ag-lp ul { margin: 0; padding: 0; list-style: none; }\n.ag-lp.ag-lp.ag-lp .wrap { width: 100%; max-width: var(--maxw); margin-inline: auto; padding-inline: var(--pad); }\n.ag-lp.ag-lp.ag-lp section { padding-block: clamp(72px, 10vw, 136px); position: relative; }\n.ag-lp.ag-lp.ag-lp .sec-paper { background: var(--paper); color: var(--ink-on-paper); }\n.ag-lp.ag-lp.ag-lp .sec-paper-2 { background: var(--paper-2); color: var(--ink-on-paper); }\n.ag-lp.ag-lp.ag-lp .sec-ink-2 { background: var(--ink-2); }\n.ag-lp.ag-lp.ag-lp .eyebrow {\n  display: inline-flex; align-items: center; gap: 8px;\n  font-size: .7rem; font-weight: 800; letter-spacing: .2em; text-transform: uppercase;\n  color: var(--fg-dimmer); margin-bottom: 22px;\n}\n.ag-lp.ag-lp.ag-lp .sec-paper .eyebrow, .ag-lp.ag-lp.ag-lp .sec-paper-2 .eyebrow { color: var(--dim-on-paper); }\n.ag-lp.ag-lp.ag-lp h1 { font-size: clamp(2.5rem, 6.4vw, 4.5rem); letter-spacing: -.038em; }\n.ag-lp.ag-lp.ag-lp h2 { font-size: clamp(2rem, 4.4vw, 3.15rem); }\n.ag-lp.ag-lp.ag-lp h3 { font-size: clamp(1.1rem, 2.1vw, 1.32rem); }\n.ag-lp.ag-lp.ag-lp .lede { font-size: clamp(1.05rem, 2vw, 1.22rem); color: var(--fg-dim); max-width: 62ch; }\n.ag-lp.ag-lp.ag-lp .sec-paper .lede, .ag-lp.ag-lp.ag-lp .sec-paper-2 .lede { color: var(--dim-on-paper); }\n.ag-lp.ag-lp.ag-lp .sec-head { max-width: 46rem; margin-bottom: clamp(36px, 5vw, 56px); }\n.ag-lp.ag-lp.ag-lp .sec-head.center { margin-inline: 0; text-align: left; }\n.ag-lp.ag-lp.ag-lp .hl { color: var(--amber); }\n.ag-lp.ag-lp.ag-lp .sec-paper .hl, .ag-lp.ag-lp.ag-lp .sec-paper-2 .hl { color: var(--brown); }\n.ag-lp.ag-lp.ag-lp .btn {\n  display: inline-flex; align-items: center; justify-content: center; gap: 9px;\n  padding: 15px 28px; border-radius: 3px; font-weight: 800; font-size: .96rem;\n  text-decoration: none; border: 1.5px solid transparent; cursor: pointer;\n  transition: transform .16s ease, background .16s ease, border-color .16s ease, color .16s ease;\n  white-space: nowrap; font-family: inherit;\n}\n.ag-lp.ag-lp.ag-lp .btn-primary { background: var(--amber); color: #1a1000; }\n.ag-lp.ag-lp.ag-lp .btn-primary:hover { background: #ffc633; }\n.ag-lp.ag-lp.ag-lp .btn-ghost { border-color: var(--line-2); color: var(--fg); background: transparent; }\n.ag-lp.ag-lp.ag-lp .btn-ghost:hover { border-color: var(--amber); color: var(--amber); }\n.ag-lp.ag-lp.ag-lp .sec-paper .btn-ghost, .ag-lp.ag-lp.ag-lp .sec-paper-2 .btn-ghost { border-color: rgba(0,0,0,.18); color: var(--ink-on-paper); }\n.ag-lp.ag-lp.ag-lp .sec-paper .btn-ghost:hover, .ag-lp.ag-lp.ag-lp .sec-paper-2 .btn-ghost:hover { border-color: var(--brown); color: var(--brown); }\n.ag-lp.ag-lp.ag-lp .btn-wa { background: transparent; border-color: rgba(37,211,102,.45); color: #4ade80; }\n.ag-lp.ag-lp.ag-lp .btn-wa:hover { border-color: #25D366; color: #6ee7a0; }\n.ag-lp.ag-lp.ag-lp .btn-lg { padding: 18px 34px; font-size: 1.02rem; }\n.ag-lp.ag-lp.ag-lp .btn-primary:hover, .ag-lp.ag-lp.ag-lp .btn-primary:focus, .ag-lp.ag-lp.ag-lp .btn-primary:active { color: #1a1000 !important; }\n.ag-lp.ag-lp.ag-lp .btn-wa:hover, .ag-lp.ag-lp.ag-lp .btn-wa:focus, .ag-lp.ag-lp.ag-lp .btn-wa:active { color: #6ee7a0 !important; }\n.ag-lp.ag-lp.ag-lp .btn-row { display: flex; flex-wrap: wrap; gap: 12px; align-items: center; }\n.ag-lp.ag-lp.ag-lp .lp-header {\n  position: sticky; top: 0; z-index: 90;\n  background: rgba(13, 13, 16, .82); backdrop-filter: blur(14px);\n  border-bottom: 1px solid var(--line);\n}\n.ag-lp.ag-lp.ag-lp .lp-header .wrap {\n  display: flex; align-items: center; justify-content: space-between; gap: 16px;\n  min-height: 70px;\n}\n.ag-lp.ag-lp.ag-lp .lp-header .wrap > a { flex: none; }\n.ag-lp.ag-lp.ag-lp .lp-header img { height: 30px; width: auto; max-width: none; }\n.ag-lp.ag-lp.ag-lp .hdr-nav {\n  display: flex; align-items: center; gap: clamp(16px, 2vw, 26px);\n  flex: 0 1 auto; min-width: 0;\n}\n.ag-lp.ag-lp.ag-lp .hdr-nav a {\n  font-size: .9rem; font-weight: 600; color: var(--fg-dim); text-decoration: none;\n  white-space: nowrap; transition: color .16s ease;\n}\n.ag-lp.ag-lp.ag-lp .hdr-nav a:hover { color: var(--amber); }\n@media (max-width: 1000px) {\n.ag-lp.ag-lp.ag-lp .hdr-nav { display: none; } }\n.ag-lp.ag-lp.ag-lp .lp-header .btn { padding: 11px 20px; font-size: .86rem; }\n.ag-lp.ag-lp.ag-lp .hero { padding-block: clamp(64px, 10vw, 118px) clamp(52px, 8vw, 92px); overflow: hidden; }\n.ag-lp.ag-lp.ag-lp .hero::before {\n  content: \"\"; position: absolute; inset: -20% -10% auto -10%; height: 130%;\n  background:\n    radial-gradient(52% 46% at 18% 8%, rgba(254,180,6,.10), transparent 68%),\n    radial-gradient(44% 40% at 88% 22%, rgba(242,255,102,.05), transparent 70%);\n  pointer-events: none;\n}\n.ag-lp.ag-lp.ag-lp .hero .wrap { position: relative; }\n.ag-lp.ag-lp.ag-lp .hero-grid { display: grid; grid-template-columns: 1.15fr .85fr; gap: clamp(32px, 5vw, 64px); align-items: center; }\n@media (max-width: 940px) {\n.ag-lp.ag-lp.ag-lp .hero-grid { grid-template-columns: 1fr; } }\n.ag-lp.ag-lp.ag-lp .hero h1 { margin-bottom: 20px; }\n.ag-lp.ag-lp.ag-lp .hero .lede { margin-bottom: 30px; }\n.ag-lp.ag-lp.ag-lp .hero-note { font-size: .86rem; color: var(--fg-dimmer); margin-top: 18px; }\n.ag-lp.ag-lp.ag-lp .badge-partner {\n  display: inline-flex; align-items: center; gap: 12px;\n  background: rgba(255,255,255,.055); border: 1px solid var(--line-2);\n  padding: 10px 18px 10px 14px; border-radius: 3px; margin-bottom: 26px;\n  text-decoration: none;\n}\n.ag-lp.ag-lp.ag-lp .badge-partner img { height: 48px; width: auto; }\n.ag-lp.ag-lp.ag-lp .badge-partner span { font-size: .84rem; font-weight: 700; color: var(--fg-dim); letter-spacing: .01em; }\n.ag-lp.ag-lp.ag-lp .badge-partner:hover span { color: var(--amber); }\n.ag-lp.ag-lp.ag-lp .hero-card {\n  background: linear-gradient(160deg, var(--ink-3), var(--ink-2));\n  border: 1px solid var(--line-2); border-radius: var(--radius-lg);\n  padding: clamp(24px, 3.2vw, 34px);\n  box-shadow: none;\n}\n.ag-lp.ag-lp.ag-lp .hero-card h3 { font-size: 1.06rem; margin-bottom: 18px; }\n.ag-lp.ag-lp.ag-lp .hero-card li {\n  display: flex; gap: 12px; align-items: flex-start;\n  padding: 11px 0; border-bottom: 1px solid var(--line); font-size: .93rem; color: var(--fg-dim);\n}\n.ag-lp.ag-lp.ag-lp .hero-card li:last-child { border-bottom: 0; }\n.ag-lp.ag-lp.ag-lp .tick {\n  flex: none; width: 20px; height: 20px; border-radius: 50%;\n  background: rgba(254,180,6,.16); color: var(--amber);\n  display: grid; place-items: center; font-size: .68rem; font-weight: 900; margin-top: 2px;\n}\n.ag-lp.ag-lp.ag-lp .logowall { padding-block: clamp(34px, 5vw, 52px); border-block: 1px solid var(--line); background: var(--ink-2); }\n.ag-lp.ag-lp.ag-lp .logowall p {\n  text-align: center; font-size: .74rem; letter-spacing: .15em; text-transform: uppercase;\n  color: var(--fg-dimmer); font-weight: 800; margin-bottom: 26px;\n}\n.ag-lp.ag-lp.ag-lp .logowall ul {\n  display: flex; flex-wrap: wrap; justify-content: center; align-items: center;\n  gap: clamp(22px, 4.5vw, 56px);\n}\n.ag-lp.ag-lp.ag-lp .logowall img {\n  height: clamp(26px, 3.4vw, 34px); width: auto; opacity: .58;\n  filter: grayscale(1) brightness(2.6); transition: opacity .2s ease, filter .2s ease;\n}\n.ag-lp.ag-lp.ag-lp .logowall img:hover { opacity: 1; filter: grayscale(0) brightness(1); }\n.ag-lp.ag-lp.ag-lp .grid { display: grid; gap: clamp(16px, 2.2vw, 22px); }\n.ag-lp.ag-lp.ag-lp .g2 { grid-template-columns: repeat(2, 1fr); }\n.ag-lp.ag-lp.ag-lp .g3 { grid-template-columns: repeat(3, 1fr); }\n.ag-lp.ag-lp.ag-lp .g4 { grid-template-columns: repeat(4, 1fr); }\n@media (max-width: 1100px) {\n.ag-lp.ag-lp.ag-lp .g4 { grid-template-columns: repeat(2, 1fr); } }\n@media (max-width: 980px) {\n.ag-lp.ag-lp.ag-lp .g3 { grid-template-columns: repeat(2, 1fr); } }\n@media (max-width: 980px) {\n.ag-lp.ag-lp.ag-lp .g2, .ag-lp.ag-lp.ag-lp .g3, .ag-lp.ag-lp.ag-lp .g4 { grid-template-columns: 1fr; } }\n.ag-lp.ag-lp.ag-lp .card {\n  background: var(--ink-2); border: 1px solid var(--line);\n  border-radius: var(--radius); padding: clamp(22px, 2.6vw, 30px);\n  transition: border-color .18s ease, transform .18s ease;\n}\n.ag-lp.ag-lp.ag-lp .card:hover { border-color: var(--line-2); }\n.ag-lp.ag-lp.ag-lp .card h3 { margin-bottom: 10px; }\n.ag-lp.ag-lp.ag-lp .card p { color: var(--fg-dim); font-size: .95rem; margin-bottom: 0; }\n.ag-lp.ag-lp.ag-lp .sec-paper .card, .ag-lp.ag-lp.ag-lp .sec-paper-2 .card {\n  background: #fff; border-color: rgba(0,0,0,.09);\n  box-shadow: 0 1px 2px rgba(0,0,0,.04);\n}\n.ag-lp.ag-lp.ag-lp .sec-paper .card:hover, .ag-lp.ag-lp.ag-lp .sec-paper-2 .card:hover { border-color: rgba(114,72,9,.35); }\n.ag-lp.ag-lp.ag-lp .sec-paper .card p, .ag-lp.ag-lp.ag-lp .sec-paper-2 .card p { color: var(--dim-on-paper); }\n.ag-lp.ag-lp.ag-lp .card-icon {\n  width: 44px; height: 44px; border-radius: 4px; display: grid; place-items: center;\n  background: rgba(254,180,6,.14); color: var(--amber); margin-bottom: 16px;\n}\n.ag-lp.ag-lp.ag-lp .sec-paper .card-icon, .ag-lp.ag-lp.ag-lp .sec-paper-2 .card-icon { background: rgba(114,72,9,.10); color: var(--brown); }\n.ag-lp.ag-lp.ag-lp .card-icon svg { width: 22px; height: 22px; }\n.ag-lp.ag-lp.ag-lp .card ul.checks { margin-top: 16px; }\n.ag-lp.ag-lp.ag-lp .card ul.checks li {\n  position: relative; padding-left: 24px; font-size: .9rem; color: var(--fg-dim); margin-bottom: 9px;\n}\n.ag-lp.ag-lp.ag-lp .card ul.checks li::before {\n  content: \"\"; position: absolute; left: 0; top: .46em; width: 11px; height: 6px;\n  border-left: 2px solid var(--amber); border-bottom: 2px solid var(--amber);\n  transform: rotate(-45deg);\n}\n.ag-lp.ag-lp.ag-lp .sec-paper .card ul.checks li, .ag-lp.ag-lp.ag-lp .sec-paper-2 .card ul.checks li { color: var(--dim-on-paper); }\n.ag-lp.ag-lp.ag-lp .sec-paper .card ul.checks li::before, .ag-lp.ag-lp.ag-lp .sec-paper-2 .card ul.checks li::before { border-color: var(--brown); }\n.ag-lp.ag-lp.ag-lp .pain { display: flex; gap: 14px; align-items: flex-start; padding: 18px 0; border-bottom: 1px solid rgba(0,0,0,.08); }\n.ag-lp.ag-lp.ag-lp .pain:last-child { border-bottom: 0; }\n.ag-lp.ag-lp.ag-lp .pain-x {\n  flex: none; width: 26px; height: 26px; border-radius: 4px; display: grid; place-items: center;\n  background: rgba(203,32,38,.10); color: #cb2026; font-weight: 900; font-size: .8rem; margin-top: 1px;\n}\n.ag-lp.ag-lp.ag-lp .pain p { margin: 0; font-size: .98rem; color: var(--dim-on-paper); }\n.ag-lp.ag-lp.ag-lp .pain strong { color: var(--ink-on-paper); font-weight: 800; }\n.ag-lp.ag-lp.ag-lp .steps { counter-reset: s; display: grid; gap: 2px; }\n.ag-lp.ag-lp.ag-lp .step {\n  display: grid; grid-template-columns: 78px 1fr; gap: clamp(16px, 3vw, 34px);\n  padding: clamp(22px, 3vw, 30px) 0; border-top: 1px solid var(--line);\n  align-items: start;\n}\n.ag-lp.ag-lp.ag-lp .step:last-child { border-bottom: 1px solid var(--line); }\n.ag-lp.ag-lp.ag-lp .step-n {\n  font-size: 1.9rem; font-weight: 900; color: var(--amber);\n  font-variant-numeric: tabular-nums; line-height: 1;\n}\n.ag-lp.ag-lp.ag-lp .step-n small { display: block; font-size: .64rem; letter-spacing: .12em; color: var(--fg-dimmer); font-weight: 800; margin-top: 8px; text-transform: uppercase; }\n.ag-lp.ag-lp.ag-lp .step h3 { margin-bottom: 8px; }\n.ag-lp.ag-lp.ag-lp .step p { color: var(--fg-dim); font-size: .96rem; margin-bottom: 0; max-width: 60ch; }\n@media (max-width: 600px) {\n.ag-lp.ag-lp.ag-lp .step { grid-template-columns: 1fr; gap: 10px; } }\n.ag-lp.ag-lp.ag-lp .tier {\n  background: #fff; border: 1px solid rgba(0,0,0,.10); border-radius: var(--radius-lg);\n  padding: clamp(24px, 3vw, 32px); display: flex; flex-direction: column;\n}\n.ag-lp.ag-lp.ag-lp .tier.featured { border: 2px solid var(--amber); box-shadow: 0 22px 54px rgba(114,72,9,.13); position: relative; }\n.ag-lp.ag-lp.ag-lp .tier-flag {\n  position: absolute; top: -13px; left: 50%; transform: translateX(-50%);\n  background: var(--amber); color: #1a1000; font-size: .68rem; font-weight: 900;\n  letter-spacing: .1em; text-transform: uppercase; padding: 6px 15px; border-radius: 3px; white-space: nowrap;\n}\n.ag-lp.ag-lp.ag-lp .tier h3 { font-size: 1.24rem; margin-bottom: 6px; }\n.ag-lp.ag-lp.ag-lp .tier .tier-for { font-size: .87rem; color: var(--dim-on-paper); margin-bottom: 18px; min-height: 2.6em; }\n.ag-lp.ag-lp.ag-lp .tier .tier-price { font-size: 1.02rem; font-weight: 800; color: var(--brown); margin-bottom: 20px; padding-bottom: 20px; border-bottom: 1px solid rgba(0,0,0,.09); }\n.ag-lp.ag-lp.ag-lp .tier .tier-price small { display: block; font-weight: 600; font-size: .8rem; color: var(--dim-on-paper); margin-top: 4px; }\n.ag-lp.ag-lp.ag-lp .tier ul { flex: 1; margin-bottom: 24px; }\n.ag-lp.ag-lp.ag-lp .tier ul li { position: relative; padding-left: 24px; font-size: .91rem; color: var(--dim-on-paper); margin-bottom: 11px; }\n.ag-lp.ag-lp.ag-lp .tier ul li::before {\n  content: \"\"; position: absolute; left: 0; top: .42em; width: 11px; height: 6px;\n  border-left: 2px solid var(--brown); border-bottom: 2px solid var(--brown); transform: rotate(-45deg);\n}\n.ag-lp.ag-lp.ag-lp .tier .btn { width: 100%; }\n.ag-lp.ag-lp.ag-lp .stats { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(16px, 3vw, 30px); }\n@media (max-width: 760px) {\n.ag-lp.ag-lp.ag-lp .stats { grid-template-columns: repeat(2, 1fr); } }\n.ag-lp.ag-lp.ag-lp .stat .n { font-size: clamp(2rem, 4.4vw, 2.9rem); font-weight: 900; color: var(--amber); line-height: 1; letter-spacing: -.03em; }\n.ag-lp.ag-lp.ag-lp .stat .l { font-size: .87rem; color: var(--fg-dim); margin-top: 10px; }\n.ag-lp.ag-lp.ag-lp .faq { max-width: 54rem; margin-inline: 0; }\n.ag-lp.ag-lp.ag-lp details {\n  border-bottom: 1px solid rgba(0,0,0,.10); padding: 4px 0;\n}\n.ag-lp.ag-lp.ag-lp details summary {\n  cursor: pointer; list-style: none; padding: 20px 40px 20px 0; position: relative;\n  font-weight: 700; font-size: 1.02rem; color: var(--ink-on-paper);\n}\n.ag-lp.ag-lp.ag-lp details summary::-webkit-details-marker { display: none; }\n.ag-lp.ag-lp.ag-lp details summary::after {\n  content: \"+\"; position: absolute; right: 6px; top: 50%; transform: translateY(-50%);\n  font-size: 1.5rem; font-weight: 400; color: var(--brown); transition: transform .2s ease;\n}\n.ag-lp.ag-lp.ag-lp details[open] summary::after { content: \"\u2013\"; }\n.ag-lp.ag-lp.ag-lp details .faq-a { padding: 0 40px 22px 0; color: var(--dim-on-paper); font-size: .97rem; }\n.ag-lp.ag-lp.ag-lp details .faq-a p:last-child { margin-bottom: 0; }\n.ag-lp.ag-lp.ag-lp .cta { background: linear-gradient(165deg, var(--brown-900), var(--ink)); position: relative; overflow: hidden; }\n.ag-lp.ag-lp.ag-lp .cta::before {\n  content: \"\"; position: absolute; inset: auto -10% -60% 30%; height: 120%;\n  background: radial-gradient(48% 48% at 50% 50%, rgba(254,180,6,.20), transparent 70%); pointer-events: none;\n}\n.ag-lp.ag-lp.ag-lp .cta .wrap { position: relative; }\n.ag-lp.ag-lp.ag-lp .cta-grid { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(32px, 5vw, 60px); align-items: start; }\n@media (max-width: 940px) {\n.ag-lp.ag-lp.ag-lp .cta-grid { grid-template-columns: 1fr; } }\n.ag-lp.ag-lp.ag-lp .cta ul.checks li { position: relative; padding-left: 26px; color: var(--fg-dim); margin-bottom: 12px; font-size: .96rem; }\n.ag-lp.ag-lp.ag-lp .cta ul.checks li::before {\n  content: \"\"; position: absolute; left: 0; top: .46em; width: 12px; height: 6px;\n  border-left: 2px solid var(--lime); border-bottom: 2px solid var(--lime); transform: rotate(-45deg);\n}\n.ag-lp.ag-lp.ag-lp .alt-contact { margin-top: 30px; padding-top: 26px; border-top: 1px solid var(--line); }\n.ag-lp.ag-lp.ag-lp .alt-contact p { font-size: .86rem; color: var(--fg-dimmer); margin-bottom: 14px; }\n.ag-lp.ag-lp.ag-lp .form-card {\n  background: rgba(255,255,255,.045); border: 1px solid var(--line-2);\n  border-radius: var(--radius-lg); padding: clamp(24px, 3.2vw, 34px);\n  backdrop-filter: blur(8px);\n}\n.ag-lp.ag-lp.ag-lp .form-card h3 { font-size: 1.16rem; margin-bottom: 6px; }\n.ag-lp.ag-lp.ag-lp .form-card > p { font-size: .88rem; color: var(--fg-dim); margin-bottom: 22px; }\n.ag-lp.ag-lp.ag-lp .field { margin-bottom: 15px; }\n.ag-lp.ag-lp.ag-lp .field label {\n  display: block; font-size: .78rem; font-weight: 800; letter-spacing: .05em;\n  text-transform: uppercase; color: var(--fg-dim); margin-bottom: 7px;\n}\n.ag-lp.ag-lp.ag-lp .field input, .ag-lp.ag-lp.ag-lp .field select, .ag-lp.ag-lp.ag-lp .field textarea {\n  width: 100%; padding: 13px 15px; border-radius: 3px;\n  background: rgba(0,0,0,.30); border: 1px solid var(--line-2); color: var(--fg);\n  font-family: inherit; font-size: .95rem; transition: border-color .16s ease;\n}\n.ag-lp.ag-lp.ag-lp .field textarea { resize: vertical; min-height: 92px; }\n.ag-lp.ag-lp.ag-lp .field input:focus, .ag-lp.ag-lp.ag-lp .field select:focus, .ag-lp.ag-lp.ag-lp .field textarea:focus {\n  outline: none; border-color: var(--amber);\n}\n.ag-lp.ag-lp.ag-lp .field input::placeholder, .ag-lp.ag-lp.ag-lp .field textarea::placeholder { color: var(--fg-dimmer); }\n.ag-lp.ag-lp.ag-lp .field select { appearance: none; background-image: linear-gradient(45deg, transparent 50%, var(--fg-dim) 50%), linear-gradient(135deg, var(--fg-dim) 50%, transparent 50%); background-position: calc(100% - 20px) 55%, calc(100% - 14px) 55%; background-size: 6px 6px, 6px 6px; background-repeat: no-repeat; }\n.ag-lp.ag-lp.ag-lp .field select option { background: var(--ink-2); color: var(--fg); }\n.ag-lp.ag-lp.ag-lp .field-row { display: grid; grid-template-columns: 1fr 1fr; gap: 15px; }\n@media (max-width: 520px) {\n.ag-lp.ag-lp.ag-lp .field-row { grid-template-columns: 1fr; } }\n.ag-lp.ag-lp.ag-lp .form-card .btn { width: 100%; margin-top: 8px; }\n.ag-lp.ag-lp.ag-lp .privacy { font-size: .76rem; color: var(--fg-dimmer); margin: 14px 0 0; text-align: center; }\n.ag-lp.ag-lp.ag-lp .privacy a { color: var(--fg-dim); }\n.ag-lp.ag-lp.ag-lp .mobile-cta { display: none; }\n@media (max-width: 860px) {\n.ag-lp.ag-lp.ag-lp .mobile-cta {\n    display: flex; gap: 10px; position: fixed; bottom: 0; left: 0; right: 0; z-index: 95;\n    padding: 11px 14px calc(11px + env(safe-area-inset-bottom));\n    background: rgba(13,13,16,.94); backdrop-filter: blur(14px); border-top: 1px solid var(--line);\n  }\n.ag-lp.ag-lp.ag-lp .mobile-cta .btn { flex: 1; padding: 13px 14px; font-size: .88rem; }\n}\n\n@media (prefers-reduced-motion: reduce) {\n.ag-lp.ag-lp.ag-lp *, .ag-lp.ag-lp.ag-lp *::before, .ag-lp.ag-lp.ag-lp *::after { transition: none !important; animation: none !important; }\n}\nhtml { scroll-behavior: smooth; }\n.ag-lp.ag-lp.ag-lp section[id] { scroll-margin-top: 86px; }\n@media (prefers-reduced-motion: reduce) {\nhtml { scroll-behavior: auto; } }\n.ag-lp.ag-lp.ag-lp .ctx { padding: 17px 0; border-bottom: 1px solid rgba(0,0,0,.08); }\n.ag-lp.ag-lp.ag-lp .ctx:last-child { border-bottom: 0; }\n.ag-lp.ag-lp.ag-lp .ctx h4 {\n  font-size: .96rem; font-weight: 800; margin: 0 0 7px;\n  color: var(--ink-on-paper); position: relative; padding-left: 24px;\n}\n.ag-lp.ag-lp.ag-lp .ctx h4::before {\n  content: \"\"; position: absolute; left: 0; top: .62em;\n  width: 14px; height: 2px; background: var(--brown); border-radius: 2px;\n}\n.ag-lp.ag-lp.ag-lp .ctx p { margin: 0; padding-left: 24px; font-size: .95rem; color: var(--dim-on-paper); }\n.ag-lp.ag-lp.ag-lp .suite { display: grid; grid-template-columns: repeat(4, 1fr); gap: clamp(14px, 1.8vw, 20px); }\n@media (max-width: 1100px) {\n.ag-lp.ag-lp.ag-lp .suite { grid-template-columns: repeat(2, 1fr); } }\n@media (max-width: 620px)  {\n.ag-lp.ag-lp.ag-lp .suite { grid-template-columns: 1fr; } }\n.ag-lp.ag-lp.ag-lp .suite-cat {\n  background: var(--ink-3); border: 1px solid var(--line);\n  border-radius: var(--radius); padding: 20px 20px 22px;\n}\n.ag-lp.ag-lp.ag-lp .suite-cat h4 {\n  font-size: .72rem; letter-spacing: .12em; text-transform: uppercase;\n  color: var(--amber); margin: 0 0 14px; font-weight: 800;\n}\n.ag-lp.ag-lp.ag-lp .chips { display: flex; flex-wrap: wrap; gap: 6px; }\n.ag-lp.ag-lp.ag-lp .chips li {\n  font-size: .78rem; font-weight: 600; color: var(--fg-dim);\n  border: 1px solid var(--line-2); border-radius: 3px; padding: 4px 9px;\n  white-space: nowrap;\n}\n.ag-lp.ag-lp.ag-lp .explain { display: grid; grid-template-columns: 1fr 1fr; gap: clamp(28px, 4vw, 56px); align-items: start; }\n@media (max-width: 900px) {\n.ag-lp.ag-lp.ag-lp .explain { grid-template-columns: 1fr; } }\n.ag-lp.ag-lp.ag-lp .define {\n  border-left: 3px solid var(--brown); padding-left: clamp(18px, 2.4vw, 26px);\n}\n.ag-lp.ag-lp.ag-lp .define h3 { font-size: 1.14rem; margin-bottom: 12px; }\n.ag-lp.ag-lp.ag-lp .define p { color: var(--dim-on-paper); font-size: 1rem; }\n.ag-lp.ag-lp.ag-lp .benefits li {\n  position: relative; padding-left: 28px; margin-bottom: 15px; font-size: .97rem; color: var(--dim-on-paper);\n}\n.ag-lp.ag-lp.ag-lp .benefits li strong { display: block; color: var(--ink-on-paper); font-weight: 800; margin-bottom: 2px; }\n.ag-lp.ag-lp.ag-lp .benefits li::before {\n  content: \"\"; position: absolute; left: 0; top: .42em; width: 13px; height: 7px;\n  border-left: 2px solid var(--brown); border-bottom: 2px solid var(--brown); transform: rotate(-45deg);\n}\n.ag-lp.ag-lp.ag-lp .roi {\n  background: linear-gradient(162deg, var(--ink-2), var(--ink));\n  border: 1px solid rgba(255,255,255,.10); border-radius: var(--radius-lg);\n  padding: clamp(24px, 3.4vw, 40px); color: var(--fg);\n  margin-top: clamp(36px, 5vw, 56px);\n  box-shadow: none;\n}\n.ag-lp.ag-lp.ag-lp .roi h3 { color: var(--fg); font-size: clamp(1.3rem, 2.6vw, 1.7rem); margin-bottom: 8px; }\n.ag-lp.ag-lp.ag-lp .roi > p.roi-sub { color: var(--fg-dim); font-size: .95rem; max-width: 60ch; margin-bottom: 26px; }\n.ag-lp.ag-lp.ag-lp .roi-inputs {\n  display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px;\n  padding-bottom: 26px; margin-bottom: 28px; border-bottom: 1px solid var(--line);\n}\n@media (max-width: 860px) {\n.ag-lp.ag-lp.ag-lp .roi-inputs { grid-template-columns: repeat(2, 1fr); } }\n@media (max-width: 460px) {\n.ag-lp.ag-lp.ag-lp .roi-inputs { grid-template-columns: 1fr; } }\n.ag-lp.ag-lp.ag-lp .roi-inputs label {\n  display: block; font-size: .7rem; font-weight: 800; letter-spacing: .07em;\n  text-transform: uppercase; color: var(--fg-dimmer); margin-bottom: 7px;\n}\n.ag-lp.ag-lp.ag-lp .roi-inputs input {\n  width: 100%; padding: 11px 13px; border-radius: 3px; font-family: inherit;\n  background: rgba(0,0,0,.34); border: 1px solid var(--line-2); color: var(--fg);\n  font-size: 1rem; font-weight: 700; font-variant-numeric: tabular-nums;\n}\n.ag-lp.ag-lp.ag-lp .roi-inputs input:focus { outline: none; border-color: var(--amber); }\n.ag-lp.ag-lp.ag-lp .roi-hero { margin-bottom: 28px; }\n.ag-lp.ag-lp.ag-lp .roi-tag {\n  display: inline-flex; align-items: center; gap: 8px; margin-bottom: 12px;\n  font-size: .7rem; font-weight: 900; letter-spacing: .12em; text-transform: uppercase;\n  color: var(--lime); background: rgba(242,255,102,.10);\n  border: 1px solid rgba(242,255,102,.30); border-radius: 3px; padding: 5px 13px;\n}\n.ag-lp.ag-lp.ag-lp .roi-tag svg { width: 13px; height: 13px; flex: none; }\n.ag-lp.ag-lp.ag-lp .roi-hero .figure {\n  font-size: clamp(2.8rem, 7.5vw, 4.6rem); font-weight: 900; line-height: 1;\n  letter-spacing: -.035em; color: var(--amber); font-variant-numeric: tabular-nums;\n}\n.ag-lp.ag-lp.ag-lp .roi-hero .figure-label { font-size: 1rem; color: var(--fg-dim); margin-top: 12px; max-width: 46ch; }\n.ag-lp.ag-lp.ag-lp .kpis { display: grid; grid-template-columns: repeat(3, 1fr); gap: 2px; }\n@media (max-width: 760px) {\n.ag-lp.ag-lp.ag-lp .kpis { grid-template-columns: 1fr; } }\n.ag-lp.ag-lp.ag-lp .kpi { padding: 22px 24px; background: rgba(255,255,255,.04); }\n.ag-lp.ag-lp.ag-lp .kpi:first-child { border-radius: 4px 0 0 4px; }\n.ag-lp.ag-lp.ag-lp .kpi:last-child { border-radius: 0 4px 4px 0; }\n@media (max-width: 760px) {\n.ag-lp.ag-lp.ag-lp .kpi:first-child { border-radius: 4px 4px 0 0; }\n.ag-lp.ag-lp.ag-lp .kpi:last-child { border-radius: 0 0 4px 4px; }\n}\n.ag-lp.ag-lp.ag-lp .kpi .k-label {\n  font-size: .7rem; font-weight: 800; letter-spacing: .1em; text-transform: uppercase;\n  color: var(--fg-dimmer); margin-bottom: 12px;\n}\n.ag-lp.ag-lp.ag-lp .kpi .k-value {\n  font-size: clamp(1.7rem, 3.4vw, 2.3rem); font-weight: 900; line-height: 1;\n  letter-spacing: -.03em; color: var(--fg); font-variant-numeric: tabular-nums;\n}\n.ag-lp.ag-lp.ag-lp .kpi .k-note { font-size: .84rem; color: var(--fg-dim); margin-top: 11px; }\n.ag-lp.ag-lp.ag-lp .roi-assume {\n  margin-top: 24px; padding-top: 20px; border-top: 1px solid var(--line);\n  font-size: .8rem; color: var(--fg-dimmer); line-height: 1.6;\n}\n.ag-lp.ag-lp.ag-lp .roi-assume strong { color: var(--fg-dim); font-weight: 700; }\n.ag-lp.ag-lp.ag-lp .ai-band {\n  margin-top: clamp(30px, 4vw, 44px); padding-top: clamp(30px, 4vw, 40px);\n  border-top: 1px solid rgba(0,0,0,.10);\n}\n.ag-lp.ag-lp.ag-lp .ai-band .eyebrow { margin-bottom: 14px; }\n.ag-lp.ag-lp.ag-lp .ai-band h3 { font-size: clamp(1.2rem, 2.4vw, 1.5rem); margin-bottom: 10px; }\n.ag-lp.ag-lp.ag-lp .ai-band > p { color: var(--dim-on-paper); max-width: 62ch; margin-bottom: 26px; }\n.ag-lp.ag-lp.ag-lp .agents { display: grid; grid-template-columns: repeat(3, 1fr); gap: clamp(14px, 2vw, 20px); }\n@media (max-width: 860px) {\n.ag-lp.ag-lp.ag-lp .agents { grid-template-columns: 1fr; } }\n.ag-lp.ag-lp.ag-lp .agent {\n  background: #fff; border: 1px solid rgba(0,0,0,.10); border-radius: var(--radius); padding: 22px 24px;\n}\n.ag-lp.ag-lp.ag-lp .agent h4 { font-size: 1rem; margin: 0 0 8px; color: var(--ink-on-paper); }\n.ag-lp.ag-lp.ag-lp .agent p { font-size: .91rem; color: var(--dim-on-paper); margin: 0; }\n.ag-lp.ag-lp.ag-lp .agent .a-tag {\n  display: inline-block; font-size: .64rem; font-weight: 900; letter-spacing: .1em;\n  text-transform: uppercase; color: var(--brown); background: rgba(114,72,9,.10);\n  border-radius: 2px; padding: 3px 8px; margin-bottom: 12px;\n}\n.ag-lp.ag-lp.ag-lp .pill {\n  display: inline; border-radius: 3px; font-weight: 800;\n  padding: .08em .45em; border: 1px solid transparent; font-size: .94em;\n  white-space: nowrap;\n  -webkit-box-decoration-break: clone; box-decoration-break: clone;\n}\n.ag-lp.ag-lp.ag-lp .pill-key { background: var(--lime); color: #14170a; border-color: var(--lime); }\n.ag-lp.ag-lp.ag-lp .lede.has-pills { line-height: 2.05; }\n.ag-lp.ag-lp.ag-lp .pill-cat { color: var(--amber); background: rgba(254,180,6,.10); }\n.ag-lp.ag-lp.ag-lp .sec-paper .pill-cat, .ag-lp.ag-lp.ag-lp .sec-paper-2 .pill-cat { color: var(--brown); background: rgba(114,72,9,.08); }\n.ag-lp.ag-lp.ag-lp .zapps-block {\n  margin-top: clamp(40px, 5.5vw, 62px);\n  padding-top: clamp(30px, 4vw, 40px);\n  border-top: 1px solid var(--line);\n}\n.ag-lp.ag-lp.ag-lp .zapps-head {\n  display: flex; flex-wrap: wrap; gap: 10px 20px; align-items: center;\n  justify-content: space-between; margin-bottom: 22px;\n}\n.ag-lp.ag-lp.ag-lp .zapps-title {\n  margin: 0; font-size: clamp(1.4rem, 2.8vw, 1.85rem);\n  font-weight: 800; letter-spacing: -.032em; line-height: 1.12;\n}\n.ag-lp.ag-lp.ag-lp .zapps {\n  display: grid; grid-template-columns: repeat(3, 1fr); gap: 1px;\n  background: var(--ink-2); border: 1px solid var(--line);\n  border-radius: var(--radius); overflow: hidden;\n}\n@media (max-width: 700px)  {\n.ag-lp.ag-lp.ag-lp .zapps { grid-template-columns: repeat(2, 1fr); } }\n.ag-lp.ag-lp.ag-lp .zapp { background: var(--ink-2); padding: clamp(16px, 1.8vw, 22px); outline: 1px solid var(--line); }\n.ag-lp.ag-lp.ag-lp .zapp-top { display: flex; align-items: center; gap: 10px; margin-bottom: 9px; }\n.ag-lp.ag-lp.ag-lp .zapp-ico {\n  flex: none; width: 30px; height: 30px; border-radius: 4px; display: grid; place-items: center;\n  background: rgba(254,180,6,.13); color: var(--amber);\n}\n.ag-lp.ag-lp.ag-lp .zapp-ico svg { width: 16px; height: 16px; }\n.ag-lp.ag-lp.ag-lp .zapp h4 { margin: 0; font-size: .98rem; font-weight: 800; letter-spacing: -.01em; }\n.ag-lp.ag-lp.ag-lp .zapp p { margin: 0; font-size: .84rem; line-height: 1.5; color: var(--fg-dim); }\n@media (max-width: 430px) {\n.ag-lp.ag-lp.ag-lp .zapp-ico { width: 26px; height: 26px; }\n.ag-lp.ag-lp.ag-lp .zapp h4 { font-size: .9rem; }\n.ag-lp.ag-lp.ag-lp .zapp p { font-size: .79rem; }\n}\n.ag-lp.ag-lp.ag-lp .hero-card li strong { display: block; color: var(--fg); font-weight: 800; margin-bottom: 2px; }\n.ag-lp.ag-lp.ag-lp .hero-card li { align-items: flex-start; }\n.ag-lp.ag-lp.ag-lp .tick.tick-ok { position: relative; }\n.ag-lp.ag-lp.ag-lp .tick.tick-ok::before {\n  content: \"\"; position: absolute; left: 50%; top: 50%;\n  width: 9px; height: 5px; margin: -3px 0 0 -5px;\n  border-left: 2px solid currentColor; border-bottom: 2px solid currentColor;\n  transform: rotate(-45deg);\n}\n.ag-lp.ag-lp.ag-lp .tablist { display: none; }\n.ag-lp.ag-lp.ag-lp .tabs-on .tablist {\n  display: inline-flex; gap: 4px; padding: 5px;\n  background: rgba(0,0,0,.055); border: 1px solid rgba(0,0,0,.11);\n  border-radius: 3px; margin-bottom: clamp(26px, 3.4vw, 38px);\n}\n.ag-lp.ag-lp.ag-lp .tab {\n  appearance: none; font-family: inherit; cursor: pointer;\n  display: inline-flex; align-items: center; justify-content: center; gap: 9px;\n  padding: 11px 24px; border-radius: 3px; border: 0; background: transparent;\n  color: var(--dim-on-paper); font-size: .98rem; font-weight: 800; white-space: nowrap;\n  transition: background .16s ease, color .16s ease, box-shadow .16s ease;\n}\n.ag-lp.ag-lp.ag-lp .tab:hover { color: var(--ink-on-paper); background: rgba(0,0,0,.05); }\n.ag-lp.ag-lp.ag-lp .tab[aria-selected=\"true\"] {\n  background: var(--ink); color: var(--fg);\n  box-shadow: 0 2px 9px rgba(0,0,0,.20);\n}\n.ag-lp.ag-lp.ag-lp .tab[aria-selected=\"true\"]:hover { background: var(--ink); color: var(--fg); }\n.ag-lp.ag-lp.ag-lp .tab svg { width: 17px; height: 17px; opacity: .9; }\n.ag-lp.ag-lp.ag-lp .tab:focus-visible { outline: 3px solid var(--amber); outline-offset: 3px; }\n\n\n@media (max-width: 660px) {\n.ag-lp.ag-lp.ag-lp .tabs-on .tablist { display: flex; width: 100%; }\n.ag-lp.ag-lp.ag-lp .tab {\n    flex: 1 1 0; min-width: 0; padding: 10px 10px; font-size: .82rem;\n    white-space: normal; text-align: center; line-height: 1.25;\n  }\n.ag-lp.ag-lp.ag-lp .tab svg { display: none; }\n}\n.ag-lp.ag-lp.ag-lp .tabpanel + .tabpanel { margin-top: clamp(48px, 7vw, 86px); }\n.ag-lp.ag-lp.ag-lp .tabs-on .tabpanel + .tabpanel { margin-top: 0; }\n.ag-lp.ag-lp.ag-lp .tabpanel.is-hidden { display: none; }\n.ag-lp.ag-lp.ag-lp .modulo-intro {\n  max-width: 68ch; margin-bottom: clamp(30px, 4vw, 44px);\n  padding-bottom: clamp(26px, 3.4vw, 34px); border-bottom: 1px solid rgba(0,0,0,.10);\n}\n.ag-lp.ag-lp.ag-lp .modulo-intro h3 { font-size: clamp(1.4rem, 2.8vw, 1.85rem); margin-bottom: 12px; }\n.ag-lp.ag-lp.ag-lp .modulo-intro p { color: var(--dim-on-paper); font-size: 1.02rem; margin-bottom: 15px; }\n.ag-lp.ag-lp.ag-lp .modulo-intro p:last-child { margin-bottom: 0; }\n.ag-lp.ag-lp.ag-lp .modulo-grid {\n  display: grid; grid-template-columns: 1.08fr .92fr; gap: clamp(28px, 3.6vw, 48px);\n  align-items: start;\n}\n@media (max-width: 980px) {\n.ag-lp.ag-lp.ag-lp .modulo-grid { grid-template-columns: 1fr; } }\n.ag-lp.ag-lp.ag-lp .wows { margin-bottom: clamp(28px, 3.4vw, 36px); }\n.ag-lp.ag-lp.ag-lp .wow { display: flex; gap: 14px; padding: 15px 0; border-bottom: 1px solid rgba(0,0,0,.08); }\n.ag-lp.ag-lp.ag-lp .wow:first-child { padding-top: 0; }\n.ag-lp.ag-lp.ag-lp .wow:last-child { border-bottom: 0; }\n.ag-lp.ag-lp.ag-lp .wow-mark {\n  flex: none; width: 26px; height: 26px; border-radius: 4px; margin-top: 1px;\n  background: rgba(114,72,9,.10); color: var(--brown); display: grid; place-items: center;\n}\n.ag-lp.ag-lp.ag-lp .wow-mark::before {\n  content: \"\"; width: 11px; height: 6px; margin-top: -3px;\n  border-left: 2px solid currentColor; border-bottom: 2px solid currentColor; transform: rotate(-45deg);\n}\n.ag-lp.ag-lp.ag-lp .wow h4 { margin: 0 0 4px; font-size: 1.02rem; color: var(--ink-on-paper); }\n.ag-lp.ag-lp.ag-lp .wow p { margin: 0; font-size: .95rem; color: var(--dim-on-paper); }\n.ag-lp.ag-lp.ag-lp .feats h4 {\n  font-size: .72rem; letter-spacing: .13em; text-transform: uppercase;\n  color: var(--brown); margin-bottom: 14px; font-weight: 800;\n}\n.ag-lp.ag-lp.ag-lp .feats ul { display: flex; flex-wrap: wrap; gap: 7px; }\n.ag-lp.ag-lp.ag-lp .feats li {\n  font-size: .82rem; font-weight: 600; color: var(--dim-on-paper);\n  border: 1px solid rgba(0,0,0,.14); border-radius: 3px; padding: 5px 11px; background: #fff;\n}\n.ag-lp.ag-lp.ag-lp .roi-compact { margin-top: 0; padding: clamp(22px, 2.6vw, 30px); position: sticky; top: 92px; }\n@media (max-width: 980px) {\n.ag-lp.ag-lp.ag-lp .roi-compact { position: static; } }\n.ag-lp.ag-lp.ag-lp .roi-compact h3 { font-size: clamp(1.1rem, 2vw, 1.28rem); }\n.ag-lp.ag-lp.ag-lp .roi-compact > p.roi-sub { font-size: .88rem; margin-bottom: 20px; }\n.ag-lp.ag-lp.ag-lp .roi-compact .roi-inputs {\n  grid-template-columns: repeat(2, 1fr); gap: 12px;\n  padding-bottom: 22px; margin-bottom: 22px;\n}\n@media (max-width: 420px) {\n.ag-lp.ag-lp.ag-lp .roi-compact .roi-inputs { grid-template-columns: 1fr; } }\n.ag-lp.ag-lp.ag-lp .roi-compact .roi-inputs input { padding: 10px 12px; font-size: .95rem; }\n.ag-lp.ag-lp.ag-lp .roi-compact .roi-hero { margin-bottom: 22px; }\n.ag-lp.ag-lp.ag-lp .roi-compact .roi-hero .figure { font-size: clamp(2.1rem, 4.6vw, 2.9rem); }\n.ag-lp.ag-lp.ag-lp .roi-compact .roi-hero .figure-label { font-size: .88rem; margin-top: 10px; }\n.ag-lp.ag-lp.ag-lp .roi-compact .kpis { grid-template-columns: 1fr; }\n.ag-lp.ag-lp.ag-lp .roi-compact .kpi { padding: 15px 18px; border-radius: 0; }\n.ag-lp.ag-lp.ag-lp .roi-compact .kpi:first-child { border-radius: 4px 4px 0 0; }\n.ag-lp.ag-lp.ag-lp .roi-compact .kpi:last-child { border-radius: 0 0 4px 4px; }\n.ag-lp.ag-lp.ag-lp .roi-compact .k-row { display: flex; align-items: baseline; justify-content: space-between; gap: 14px; }\n.ag-lp.ag-lp.ag-lp .roi-compact .k-label { margin-bottom: 0; }\n.ag-lp.ag-lp.ag-lp .roi-compact .k-value { font-size: clamp(1.25rem, 2.4vw, 1.5rem); white-space: nowrap; }\n.ag-lp.ag-lp.ag-lp .roi-compact .k-note { margin-top: 7px; font-size: .79rem; }\n.ag-lp.ag-lp.ag-lp .roi details { border-bottom: 0; margin-top: 20px; padding-top: 16px; border-top: 1px solid var(--line); }\n.ag-lp.ag-lp.ag-lp .roi details summary {\n  padding: 0; font-size: .78rem; font-weight: 800; letter-spacing: .06em;\n  text-transform: uppercase; color: var(--fg-dimmer);\n}\n.ag-lp.ag-lp.ag-lp .roi details summary::after { font-size: 1.1rem; color: var(--fg-dimmer); right: 2px; }\n.ag-lp.ag-lp.ag-lp .roi details summary:hover { color: var(--fg-dim); }\n.ag-lp.ag-lp.ag-lp .roi details .roi-assume { margin-top: 12px; padding-top: 0; border-top: 0; }\n.ag-lp.ag-lp.ag-lp .modulo-intro.no-rule { border-bottom: 0; padding-bottom: clamp(16px, 2.2vw, 22px); }\n.ag-lp.ag-lp.ag-lp .pipeline-block {\n  margin-bottom: clamp(30px, 4vw, 44px);\n  padding-bottom: clamp(26px, 3.4vw, 34px);\n  border-bottom: 1px solid rgba(0,0,0,.10);\n}\n.ag-lp.ag-lp.ag-lp .pipeline-block > h4 {\n  font-size: clamp(1.12rem, 2.2vw, 1.34rem); margin: 0 0 8px; color: var(--ink-on-paper);\n}\n.ag-lp.ag-lp.ag-lp .pipeline-block > p { color: var(--dim-on-paper); font-size: .97rem; max-width: 68ch; margin-bottom: 22px; }\n.ag-lp.ag-lp.ag-lp .pipeline-scroll {\n  overflow-x: auto; overflow-y: hidden; padding-bottom: 6px;\n  scrollbar-width: thin; -webkit-overflow-scrolling: touch;\n}\n.ag-lp.ag-lp.ag-lp .pipeline { display: flex; align-items: stretch; min-width: max-content; }\n.ag-lp.ag-lp.ag-lp .pipe-step {\n  position: relative; flex: none; height: 46px;\n  display: flex; align-items: center; gap: 8px;\n  padding: 0 15px 0 27px; margin-right: 2px;\n  background: var(--paper-2); color: var(--dim-on-paper);\n  font-size: .87rem; font-weight: 700; white-space: nowrap;\n}\n.ag-lp.ag-lp.ag-lp .pipe-step:first-child { padding-left: 16px; border-radius: 4px 0 0 4px; }\n.ag-lp.ag-lp.ag-lp .pipe-step:last-child { margin-right: 0; }\n.ag-lp.ag-lp.ag-lp .pipe-step::before {\n  content: \"\"; position: absolute; left: 0; top: 0; z-index: 1;\n  border-top: 23px solid transparent; border-bottom: 23px solid transparent;\n  border-left: 13px solid var(--paper);\n}\n.ag-lp.ag-lp.ag-lp .pipe-step:first-child::before { display: none; }\n.ag-lp.ag-lp.ag-lp .pipe-step::after {\n  content: \"\"; position: absolute; left: 100%; top: 0; z-index: 2;\n  border-top: 23px solid transparent; border-bottom: 23px solid transparent;\n  border-left: 13px solid var(--paper-2);\n}\n.ag-lp.ag-lp.ag-lp .pipe-step:last-child::after { display: none; }\n.ag-lp.ag-lp.ag-lp .pipe-step:last-child { border-radius: 0 4px 4px 0; padding-right: 17px; }\n.ag-lp.ag-lp.ag-lp .pipe-step.is-active { background: var(--amber); color: #1a1000; }\n.ag-lp.ag-lp.ag-lp .pipe-step.is-active::after { border-left-color: var(--amber); }\n.ag-lp.ag-lp.ag-lp .pipe-step.is-won { color: var(--brown); }\n.ag-lp.ag-lp.ag-lp .pipe-step.is-lost { color: var(--fg-dimmer); }\n.ag-lp.ag-lp.ag-lp .pipe-step svg { width: 15px; height: 15px; flex: none; }\n.ag-lp.ag-lp.ag-lp .pipeline-note { font-size: .84rem; color: var(--dim-on-paper); margin: 16px 0 0; }\n.ag-lp.ag-lp.ag-lp .pipeline-wrap { position: relative; }\n.ag-lp.ag-lp.ag-lp .pipeline-wrap::after {\n  content: \"\"; position: absolute; right: 0; top: 0; bottom: 6px; width: 56px;\n  background: linear-gradient(90deg, rgba(255,255,255,0), var(--paper) 78%);\n  pointer-events: none; opacity: 0; transition: opacity .18s ease; z-index: 3;\n}\n.ag-lp.ag-lp.ag-lp .pipeline-wrap.has-more::after { opacity: 1; }\n.ag-lp.ag-lp.ag-lp .pipe-step { transition: background-color .38s ease, color .38s ease; }\n.ag-lp.ag-lp.ag-lp .pipe-step::after { transition: border-left-color .38s ease; }\n.ag-lp.ag-lp.ag-lp .pipe-step.is-done { background: rgba(254,180,6,.24); color: var(--brown); }\n.ag-lp.ag-lp.ag-lp .pipe-step.is-done::after { border-left-color: rgba(254,180,6,.24); }\n.ag-lp.ag-lp.ag-lp .trust-sub {\n  font-size: .74rem; letter-spacing: .14em; text-transform: uppercase;\n  color: var(--fg-dimmer); font-weight: 800; margin: 0 0 20px;\n}\n.ag-lp.ag-lp.ag-lp .trust-logos {\n  margin-top: clamp(40px, 5vw, 60px);\n  padding: clamp(24px, 3vw, 32px) clamp(20px, 3vw, 34px);\n  background: var(--ink-2); border: 1px solid var(--line); border-radius: var(--radius-lg);\n}\n.ag-lp.ag-lp.ag-lp .trust-logos p { text-align: center; }\n.ag-lp.ag-lp.ag-lp .marquee {\n  overflow: hidden;\n  -webkit-mask-image: linear-gradient(90deg, transparent, #000 9%, #000 91%, transparent);\n          mask-image: linear-gradient(90deg, transparent, #000 9%, #000 91%, transparent);\n}\n.ag-lp.ag-lp.ag-lp .marquee-track {\n  display: flex; align-items: center; width: max-content;\n  animation: ag-marquee 190s linear infinite;\n  pointer-events: none; list-style: none; margin: 0; padding: 0;\n}\n.ag-lp.ag-lp.ag-lp .marquee-track li { flex: none; margin-right: clamp(40px, 5vw, 76px); }\n@keyframes ag-marquee { from { transform: translateX(0); } to { transform: translateX(-50%); } }\n@media (prefers-reduced-motion: reduce) {\n.ag-lp.ag-lp.ag-lp .marquee-track { animation: none; } }\n.ag-lp.ag-lp.ag-lp .trust-logos img {\n  height: clamp(60px, 7.2vw, 88px); width: auto; opacity: .62;\n  filter: grayscale(1) brightness(2.6);\n}\n.ag-lp.ag-lp.ag-lp .method-block { margin-top: clamp(44px, 5.5vw, 66px); }\n.ag-lp.ag-lp.ag-lp .method-head {\n  display: flex; align-items: flex-end; justify-content: space-between; gap: 18px 28px; flex-wrap: wrap;\n}\n.ag-lp.ag-lp.ag-lp .method-head > p { margin: 0; flex: 1 1 28rem; }\n.ag-lp.ag-lp.ag-lp .method-block > p {\n  color: var(--fg-dim); font-size: .97rem; max-width: 62ch; margin: -8px 0 26px;\n}\n.ag-lp.ag-lp.ag-lp .car-nav { display: flex; gap: 8px; margin-bottom: 0; flex: none; }\n.ag-lp.ag-lp.ag-lp .car-btn {\n  appearance: none; cursor: pointer; width: 40px; height: 40px; border-radius: 2px;\n  background: transparent; border: 1.5px solid var(--line-2); color: var(--fg-dim);\n  display: grid; place-items: center; transition: all .16s ease;\n}\n.ag-lp.ag-lp.ag-lp .car-btn:hover:not(:disabled) { border-color: var(--amber); color: var(--amber); }\n.ag-lp.ag-lp.ag-lp .car-btn:disabled { opacity: .3; cursor: default; }\n.ag-lp.ag-lp.ag-lp .car-btn svg { width: 17px; height: 17px; }\n.ag-lp.ag-lp.ag-lp .car-btn:focus-visible { outline: 3px solid var(--amber); outline-offset: 2px; }\n.ag-lp.ag-lp.ag-lp .proc-rail {\n  overflow-x: auto; overflow-y: hidden;\n  \n  scrollbar-width: none; -ms-overflow-style: none;\n  cursor: grab; padding-bottom: 4px;\n}\n.ag-lp.ag-lp.ag-lp .proc-rail::-webkit-scrollbar { display: none; }\n.ag-lp.ag-lp.ag-lp .proc-rail.is-dragging { cursor: grabbing; }\n.ag-lp.ag-lp.ag-lp .proc-rail.is-dragging * { user-select: none; }\n.ag-lp.ag-lp.ag-lp .proc {\n  display: flex; gap: 16px; position: relative; padding-top: 28px;\n  width: max-content; min-width: 100%;\n}\n.ag-lp.ag-lp.ag-lp .proc::before {\n  content: \"\"; position: absolute; top: 5px; left: 0; right: 0; height: 2px;\n  background: var(--line); border-radius: 2px;\n}\n.ag-lp.ag-lp.ag-lp .proc-card {\n  position: relative; flex: 0 0 clamp(238px, 24vw, 252px);\n  background: var(--ink-2); border: 1px solid var(--line);\n  border-radius: var(--radius); padding: 20px;\n}\n.ag-lp.ag-lp.ag-lp .proc-card::before {\n  content: \"\"; position: absolute; top: -28px; left: 0;\n  width: 11px; height: 11px; border-radius: 50%;\n  background: var(--amber); box-shadow: 0 0 0 4px var(--ink);\n}\n.ag-lp.ag-lp.ag-lp .proc-top { display: flex; align-items: baseline; gap: 10px; margin-bottom: 9px; }\n.ag-lp.ag-lp.ag-lp .proc-n {\n  font-size: 1.45rem; font-weight: 900; color: var(--amber); line-height: 1;\n  font-variant-numeric: tabular-nums;\n}\n.ag-lp.ag-lp.ag-lp .proc-dur {\n  font-size: .66rem; font-weight: 800; letter-spacing: .09em; text-transform: uppercase;\n  color: var(--fg-dimmer); border: 1px solid var(--line-2); border-radius: 3px; padding: 3px 9px;\n  white-space: nowrap;\n}\n.ag-lp.ag-lp.ag-lp .proc-card h4 { margin: 0 0 7px; font-size: 1rem; }\n.ag-lp.ag-lp.ag-lp .proc-card p { margin: 0; font-size: .88rem; color: var(--fg-dim); line-height: 1.55; }\n.ag-lp.ag-lp.ag-lp .proc-card .proc-deliv { display: block; margin-top: 8px; color: var(--fg-dimmer); font-size: .83rem; }\n.ag-lp.ag-lp.ag-lp .zapps-nav { margin-bottom: 0; }\n.ag-lp.ag-lp.ag-lp .zapps-rail {\n  overflow-x: auto; overflow-y: hidden; cursor: grab; min-width: 0;\n  scrollbar-width: none; -ms-overflow-style: none;\n}\n.ag-lp.ag-lp.ag-lp .zapps-rail::-webkit-scrollbar { display: none; }\n.ag-lp.ag-lp.ag-lp .zapps-rail.is-dragging { cursor: grabbing; }\n.ag-lp.ag-lp.ag-lp .zapps-rail.is-dragging * { user-select: none; }\n.ag-lp.ag-lp.ag-lp .zapps {\n  display: flex; grid-template-columns: none;\n  width: max-content; min-width: 100%;\n}\n.ag-lp.ag-lp.ag-lp .zapp { flex: 0 0 clamp(208px, 24vw, 276px); width: clamp(208px, 24vw, 276px); }\n.ag-lp.ag-lp.ag-lp .stat { border-top: 1px solid var(--line); padding-top: 20px; }\n.ag-lp.ag-lp.ag-lp .sec-paper .stat, .ag-lp.ag-lp.ag-lp .sec-paper-2 .stat { border-top-color: rgba(0,0,0,.14); }\n.ag-lp.ag-lp.ag-lp .stat .n { letter-spacing: -.035em; }\n.ag-lp.ag-lp.ag-lp .sec-head { border-top: 1px solid var(--line); padding-top: 26px; }\n.ag-lp.ag-lp.ag-lp .sec-paper .sec-head, .ag-lp.ag-lp.ag-lp .sec-paper-2 .sec-head { border-top-color: rgba(0,0,0,.13); }\n.ag-lp.ag-lp.ag-lp .hero .sec-head, .ag-lp.ag-lp.ag-lp .cta .sec-head { border-top: 0; padding-top: 0; }\n.ag-lp.ag-lp.ag-lp .lp-header .wrap { min-height: 76px; }\n.ag-lp.ag-lp.ag-lp .lp-header .btn { padding: 12px 22px; font-size: .84rem; }\n.ag-lp.ag-lp.ag-lp .hdr-nav a { font-size: .87rem; font-weight: 700; }\n.ag-lp.ag-lp.ag-lp .trust-sub.logos-title {\n  font-size: clamp(1rem, 1.6vw, 1.18rem); font-weight: 800; letter-spacing: -.02em;\n  text-transform: none; color: var(--fg-dim);\n}\n.ag-lp.ag-lp.ag-lp .car-rail { --fade: 52px; }\n.ag-lp.ag-lp.ag-lp .car-rail.fade-izq {\n  -webkit-mask-image: linear-gradient(90deg, transparent, #000 var(--fade));\n          mask-image: linear-gradient(90deg, transparent, #000 var(--fade));\n}\n.ag-lp.ag-lp.ag-lp .car-rail.fade-der {\n  -webkit-mask-image: linear-gradient(90deg, #000 calc(100% - var(--fade)), transparent);\n          mask-image: linear-gradient(90deg, #000 calc(100% - var(--fade)), transparent);\n}\n.ag-lp.ag-lp.ag-lp .car-rail.fade-izq.fade-der {\n  -webkit-mask-image: linear-gradient(90deg, transparent, #000 var(--fade), #000 calc(100% - var(--fade)), transparent);\n          mask-image: linear-gradient(90deg, transparent, #000 var(--fade), #000 calc(100% - var(--fade)), transparent);\n}\n.ag-lp.ag-lp.ag-lp .combo { position: relative; }\n.ag-lp.ag-lp.ag-lp .field .combo-nativo {\n  position: absolute; left: 12px; bottom: 0; width: 1px; height: 1px;\n  padding: 0; margin: 0; border: 0; opacity: 0; pointer-events: none;\n  background: none; appearance: none;\n}\n.ag-lp.ag-lp.ag-lp .combo-btn {\n  width: 100%; padding: 13px 40px 13px 15px; border-radius: 3px; cursor: pointer;\n  background: rgba(0,0,0,.30); border: 1px solid var(--line-2); color: var(--fg);\n  font-family: inherit; font-size: .95rem; font-weight: 400; text-align: left;\n  transition: border-color .16s ease;\n  background-image: linear-gradient(45deg, transparent 50%, var(--fg-dim) 50%),\n                    linear-gradient(135deg, var(--fg-dim) 50%, transparent 50%);\n  background-position: calc(100% - 20px) 55%, calc(100% - 14px) 55%;\n  background-size: 6px 6px, 6px 6px;\n  background-repeat: no-repeat;\n}\n.ag-lp.ag-lp.ag-lp .combo-btn.is-vacio { color: var(--fg-dimmer); }\n.ag-lp.ag-lp.ag-lp .combo-btn:hover { border-color: var(--fg-dimmer); }\n.ag-lp.ag-lp.ag-lp .combo-btn[aria-expanded=\"true\"], .ag-lp.ag-lp.ag-lp .combo-btn:focus-visible { outline: none; border-color: var(--amber); }\n.ag-lp.ag-lp.ag-lp .combo-btn.is-invalido { border-color: #e06b5a; }\n.ag-lp.ag-lp.ag-lp .combo-pop {\n  position: absolute; z-index: 40; left: 0; right: 0; top: calc(100% + 6px);\n  background: var(--ink-2); border: 1px solid var(--line-2); border-radius: 3px;\n  padding: 8px; box-shadow: 0 14px 34px rgba(0,0,0,.45);\n}\n.ag-lp.ag-lp.ag-lp .combo-lista {\n  list-style: none; margin: 0; padding: 0; max-height: 224px; overflow-y: auto;\n}\n.ag-lp.ag-lp.ag-lp .combo-op {\n  padding: 10px 11px; border-radius: 2px; cursor: pointer;\n  font-size: .9rem; color: var(--fg-dim); line-height: 1.35;\n}\n.ag-lp.ag-lp.ag-lp .combo-op.is-activo { background: rgba(254,180,6,.14); color: var(--fg); }\n.ag-lp.ag-lp.ag-lp .combo-op[aria-selected=\"true\"] { color: var(--amber); font-weight: 700; }\n.ag-lp.ag-lp.ag-lp .field-error {\n  margin: 7px 0 0; font-size: .83rem; line-height: 1.4; color: #ff9c8a;\n}\n.ag-lp.ag-lp.ag-lp .field input[aria-invalid=\"true\"], .ag-lp.ag-lp.ag-lp .field select[aria-invalid=\"true\"], .ag-lp.ag-lp.ag-lp .field textarea[aria-invalid=\"true\"] {\n  border-color: #e06b5a;\n}\n.ag-lp.ag-lp.ag-lp .field input[aria-invalid=\"true\"]:focus-visible, .ag-lp.ag-lp.ag-lp .field textarea[aria-invalid=\"true\"]:focus-visible {\n  border-color: #ff9c8a; box-shadow: inset 0 0 0 1px #ff9c8a;\n}\n.ag-lp.ag-lp.ag-lp .combo.is-error .combo-btn { border-color: #e06b5a; }\n\n.ag-lp.ag-lp.ag-lp#ag-zoho {\n  --ink: #101111;\n  --ink-2: #181a19;\n  --ink-3: #202321;\n  --paper: #f5f4f0;\n  --paper-2: #eae9e4;\n  --fg-dimmer: #a1a59f;\n  --maxw: 1320px;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero::before { display: none; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero { padding-top: clamp(48px, 7vw, 104px); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-video-section { position: relative; isolation: isolate; background: #0b0d0c; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-video {\n  position: absolute; inset: 0; z-index: -2; width: 100%; height: 100%;\n  object-fit: cover; object-position: center; pointer-events: none;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-video-overlay {\n  position: absolute; inset: 0; z-index: -1; pointer-events: none;\n  background:\n    linear-gradient(90deg, rgba(10,12,11,.82) 0%, rgba(10,12,11,.64) 42%, rgba(10,12,11,.5) 100%),\n    linear-gradient(180deg, rgba(10,12,11,0) 55%, rgba(10,12,11,.7) 100%);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-video-section .wrap { z-index: 1; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-video-section .wrap { text-shadow: 0 1px 14px rgba(0,0,0,.55); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-video-section .btn { text-shadow: none; }\n@media (max-width: 1000px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-video-overlay { background: rgba(10,12,11,.64); }\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-grid { grid-template-columns: 1.5fr 1fr; align-items: end; gap: 64px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero h1 { font-size: clamp(1.55rem, 3.85vw, 3.4rem); line-height: 1.04; letter-spacing: -.05em; margin-bottom: 28px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero .lede { max-width: 49ch; font-size: 1.08rem; line-height: 1.7; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .badge-partner { background: none; border: 0; padding: 0; margin-bottom: 38px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-kicker { display: block; font-size: .64rem; letter-spacing: .13em; margin-bottom: 20px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero .btn-lg { font-size: .88rem; padding: 16px 21px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-card { background: transparent; border: 0; border-left: 1px solid var(--line-2); border-radius: 0; padding: 12px 0 12px 36px; margin-bottom: 18px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-card h2 { font-size: clamp(1.7rem, 2.7vw, 2.35rem); letter-spacing: -.04em; margin-bottom: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hc-head {\n  display: flex; flex-wrap: wrap; gap: 10px 20px; align-items: flex-end;\n  justify-content: space-between; margin-bottom: 28px;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-card .eyebrow { font-size: .62rem; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-card li { padding: 17px 0; font-size: .9rem; gap: 18px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-card strong { display: block; color: var(--fg); font-weight: 700; margin-bottom: 3px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .priority-n { font-size: .7rem; color: var(--fg-dimmer); padding-top: 3px; font-variant-numeric: tabular-nums; }\n.ag-lp.ag-lp.ag-lp#ag-zoho[data-landing=\"ai\"] #modulos .module-overview { align-items: stretch; }\n.ag-lp.ag-lp.ag-lp#ag-zoho[data-landing=\"ai\"] #modulos .module-copy { min-width: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .zapps-block { margin-top: 0; padding-top: 0; border-top: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho[data-landing=\"software\"] .project-paths {\n  margin-top: clamp(48px, 6vw, 76px);\n  padding-top: clamp(38px, 4.5vw, 56px);\n  border-top: 1px solid var(--line);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho[data-landing=\"software\"] .project-paths .sec-head {\n  margin-bottom: clamp(22px, 2.8vw, 32px);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .zapps { gap: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .zapp { background: transparent; border: 0; border-top: 1px solid var(--line); border-radius: 0; padding: 22px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .zapp-ico { background: transparent; color: var(--fg-dim); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .zapp p { font-size: .8rem; max-width: 29ch; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .sec-head { max-width: none; }\n.ag-lp.ag-lp.ag-lp#ag-zoho h2 { font-size: clamp(2.15rem, 4.4vw, 3.65rem); letter-spacing: -.045em; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .modulo-intro { max-width: 850px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .modulo-intro h3 { font-size: clamp(1.6rem, 3vw, 2.4rem); max-width: 25ch; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .modulo-intro p { max-width: 72ch; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .pipeline-block { background: transparent; border-radius: 0; border-inline: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .wow { padding-block: 23px; border-bottom: 1px solid rgba(0,0,0,.13); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .wow h4 { font-size: 1.08rem; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .wow-mark { background: #55594d; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .roi { background: #e9e9e1; border: 1px solid #d3d4ca; box-shadow: none; border-radius: 4px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .roi .figure { color: #333a26; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .roi-tag { color: #4a5337; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .ai-band { background: transparent; border-radius: 0; border-top: 1px solid rgba(0,0,0,.18); padding-inline: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .agent { background: transparent; border-radius: 0; box-shadow: none; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .stat .n { color: var(--fg); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .proc-card { background: transparent; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .cta { border-top: 1px solid var(--line-2); background: #191c19; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .cta::before { display: none; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .form-card { box-shadow: none; border-radius: 4px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .faq { max-width: 950px; margin-inline: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .faq details { border-radius: 0; background: transparent; border: 0; border-bottom: 1px solid rgba(0,0,0,.18); }\n.ag-lp.ag-lp.ag-lp#ag-zoho a:focus-visible, .ag-lp.ag-lp.ag-lp#ag-zoho button:focus-visible, .ag-lp.ag-lp.ag-lp#ag-zoho summary:focus-visible { outline: 3px solid #9b6d00; outline-offset: 4px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho input:focus-visible, .ag-lp.ag-lp.ag-lp#ag-zoho select:focus-visible, .ag-lp.ag-lp.ag-lp#ag-zoho textarea:focus-visible, .ag-lp.ag-lp.ag-lp#ag-zoho .combo-btn:focus-visible {\n  outline: none; border-color: var(--amber);\n  box-shadow: inset 0 0 0 1px var(--amber);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho section, .ag-lp.ag-lp.ag-lp#ag-zoho .tabpanel, .ag-lp.ag-lp.ag-lp#ag-zoho #apps { scroll-margin-top: 96px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hdr-nav a {\n  text-transform: uppercase; letter-spacing: .085em; font-size: .78rem; font-weight: 800;\n}\n@media (max-width: 1000px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-grid { grid-template-columns: 1fr; gap: 40px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero h1 { font-size: clamp(1.55rem, 6.2vw, 3.4rem); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-card { border-left: 0; border-top: 1px solid var(--line-2); padding: 30px 0 0; margin: 0; }\n}\n@media (max-width: 540px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-kicker { max-width: 35ch; line-height: 1.7; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero .btn-row { align-items: stretch; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero .btn-row .btn { width: 100%; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .lp-header .btn { padding: 10px 12px; font-size: .72rem; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .lp-header img { max-width: 120px; height: auto; }\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos { padding-block: 32px; scroll-margin-top: 76px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .sec-head { border: 0; padding: 0; margin-bottom: 18px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .sec-head .eyebrow { margin-bottom: 8px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .sec-head h2 { font-size: clamp(1.8rem, 3vw, 2.55rem); margin: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tablist { margin-bottom: 24px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-overview {\n  display: grid; grid-template-columns: minmax(0, 1fr) clamp(240px, 22vw, 300px);\n  gap: 44px; align-items: start;\n}\n@media (max-width: 1000px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-overview { grid-template-columns: 1fr; gap: 28px; }\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-copy .modulo-intro { padding: 0; margin: 0 0 20px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-copy .modulo-intro h3 {\n  font-size: clamp(1.35rem, 2.3vw, 2rem); max-width: none; margin-bottom: 14px;\n  text-wrap: balance;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-copy .modulo-intro p { font-size: .91rem; line-height: 1.6; margin-bottom: 10px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-actions { display: flex; align-items: center; flex-wrap: wrap; gap: 12px 20px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-actions .btn { font-size: .82rem; padding: 12px 18px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-link { font: inherit; font-size: .81rem; font-weight: 700; color: #343a2e; border: 0; border-bottom: 1px solid #858a7e; padding: 6px 0; background: transparent; cursor: pointer; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-overview .wows { margin: 0; display: grid; grid-template-columns: 1fr 1fr; gap: 22px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-overview .wow { display: block; padding: 14px 0 0; border: 0; border-top: 1px solid #d3d4ca; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-overview .wow-mark { display: none; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-overview .wow h4 { font-size: .95rem; line-height: 1.3; margin-bottom: 7px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-overview .wow p { font-size: .84rem; line-height: 1.55; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .tabpanel > .pipeline-block { border: 0; border-top: 1px solid #d3d4ca; padding: 16px 0 0; margin: 24px 0 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .tabpanel > .pipeline-block > h4 { font-size: .85rem; margin-bottom: 6px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .tabpanel > .pipeline-block > p { font-size: .78rem; margin-bottom: 10px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .tabpanel > .pipeline-block .pipeline-note { margin: 8px 0 0; font-size: .72rem; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .tabpanel > .pipeline-block .pipeline-wrap { margin: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-dialog { color: var(--ink-on-paper); background: var(--paper); border: 1px solid #babeb2; border-radius: 6px; padding: 28px; width: min(900px, calc(100vw - 32px)); max-height: calc(100dvh - 48px); overflow-y: auto; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-dialog::backdrop { background: rgba(0,0,0,.7); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .dialog-header { display: flex; justify-content: space-between; gap: 24px; align-items: start; margin-bottom: 24px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .dialog-header h2 { font-size: 1.45rem; margin: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .dialog-close { font: inherit; font-size: .85rem; white-space: nowrap; cursor: pointer; background: transparent; border: 1px solid #767a71; padding: 8px 12px; border-radius: 3px; color: #222; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-dialog .roi { position: static; margin: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-dialog .roi details summary { color: #4a5337; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-dialog .ai-band { margin-top: 24px; padding-top: 24px; }\n@media (min-width: 1001px) and (max-height: 800px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos { padding-block: 22px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .sec-head { margin-bottom: 12px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tablist { margin-bottom: 18px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .tabpanel > .pipeline-block { margin-top: 18px; }\n}\n@media (max-width: 1000px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos { padding-block: 48px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .sec-head { margin-bottom: 30px; }\n}\n@media (max-width: 540px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-overview .wows { grid-template-columns: 1fr; gap: 16px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-dialog { padding: 18px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .dialog-header h2 { font-size: 1.15rem; }\n}\n@media (min-width: 1001px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos > .wrap { display: grid; grid-template-columns: 1fr auto; column-gap: 28px; row-gap: 24px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .sec-head { margin: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tablist { margin: 0; align-self: end; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tabpanel { grid-column: 1 \/ -1; }\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-dialog .roi {\n  --fg: #252b20;\n  --fg-dim: #4f5847;\n  --fg-dimmer: #535d49;\n  --line: rgba(40,50,30,.15);\n  --line-2: rgba(40,50,30,.25);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-dialog .roi-inputs input { background: #fff; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tablist {\n  display: flex; width: fit-content; gap: 6px; padding: 0; background: transparent;\n  border: 0; border-radius: 0; border-bottom: 1px solid #bfc3b8;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tab {\n  border: 1px solid transparent; border-bottom: 3px solid transparent;\n  border-radius: 5px 5px 0 0; padding: 12px 26px; color: #63685d;\n  background: #e7e8e1; box-shadow: none; margin: 0; font-size: .95rem;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tab[aria-selected=\"true\"] {\n  color: #182013; background: #fff; border-color: #bfc3b8; border-bottom-color: #c88800;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tab:hover { color: #182013; background: #fdfdfb; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .metrics-heading { font-size: .69rem; font-weight: 800; letter-spacing: .12em; text-transform: uppercase; color: #535d49; margin: 0 0 12px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .metrics-grid { display: grid; grid-template-columns: 1fr; gap: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .metric-card { border-top: 1px solid #cdd1c5; padding: 12px 0 14px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .metric-card:first-child { padding-top: 0; border-top: 0; }\n\n@media (max-width: 1000px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho .metrics-grid {\n    grid-template-columns: 1fr 1fr; column-gap: clamp(18px, 3vw, 30px);\n  }\n.ag-lp.ag-lp.ag-lp#ag-zoho .metric-card:nth-child(2) { padding-top: 0; border-top: 0; }\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .metric-unit { display: block; color: #424e34; font-size: 1.7rem; font-weight: 800; line-height: 1; letter-spacing: -.04em; margin-bottom: 6px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .metric-unit.is-texto { font-size: 1.3rem; letter-spacing: -.028em; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .metric-card h4 { font-size: .89rem; line-height: 1.3; margin-bottom: 4px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .metric-card p { color: #58604f; font-size: .77rem; line-height: 1.4; margin: 0; max-width: 30ch; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .metrics-note { font-size: .73rem; color: #58604f; margin: 12px 0 0; }\n@media (min-width: 1001px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos > .wrap { grid-template-columns: 1fr; row-gap: 30px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tablist { justify-self: start; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-copy .modulo-intro h3 { font-size: 1.8rem; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .tabpanel > .pipeline-block { margin-top: 16px; padding-top: 12px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .tabpanel > .pipeline-block > p { max-width: none; }\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos { overflow-anchor: none; }\n\n@media (max-width: 980px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tablist { width: 100%; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tab {\n    flex: 1 1 0; min-width: 0; padding: 11px 10px; font-size: .82rem;\n    white-space: normal; text-align: center; line-height: 1.25;\n  }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tab svg { display: none; }\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .module-copy .modulo-intro { margin-bottom: 12px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .metrics-note a { text-underline-offset: 3px; font-weight: 700; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .faq-a a { color: #182013; font-weight: 700; text-underline-offset: 3px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-group {\n  font-size: clamp(1rem, 1.5vw, 1.15rem); font-weight: 800; letter-spacing: -.02em;\n  text-transform: none; color: #535d49; margin: 26px 0 14px;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .agent .a-tag { letter-spacing: normal; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-group:first-of-type { margin-top: 4px; }\n\n\n@media (max-width: 460px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tablist {\n    width: 100%; overflow-x: auto; scrollbar-width: none; -webkit-overflow-scrolling: touch;\n  }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tablist::-webkit-scrollbar { display: none; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .tab {\n    flex: 0 0 auto; white-space: nowrap; padding: 11px 16px; font-size: .82rem;\n  }\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .agents { gap: 12px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .agent { padding: 16px 18px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .agent h4 { font-size: .95rem; margin-bottom: 6px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #modulos .agent p { font-size: .82rem; line-height: 1.45; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #ia .agents-note {\n  font-size: .78rem; color: #58604f; margin: 16px 0 0; max-width: 70ch;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho #ia .module-actions { margin-top: 22px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-2 { grid-template-columns: repeat(2, 1fr); margin: 0 0 18px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-2 .agent:last-child:nth-child(odd) { grid-column: 1 \/ -1; }\n@media (max-width: 620px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-2 { grid-template-columns: 1fr; } }\n.ag-lp.ag-lp.ag-lp#ag-zoho .method-head { margin-bottom: 22px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .method-block > .trust-sub { margin-bottom: 14px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .value-card {\n  border: 1px solid var(--line); padding: clamp(20px, 2.4vw, 28px);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .value-card h3 { font-size: 1.06rem; margin: 0 0 10px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .value-card p {\n  margin: 0; font-size: .92rem; line-height: 1.55; color: var(--fg-dim);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho #metodologia { padding-block: clamp(40px, 3.2vw, 44px); }\n.ag-lp.ag-lp.ag-lp#ag-zoho #metodologia .sec-head {\n  max-width: none; margin-bottom: 0;\n  display: grid; grid-template-columns: minmax(0, 1.02fr) minmax(0, 1fr);\n  column-gap: clamp(22px, 3.6vw, 56px); row-gap: 9px; align-items: start;\n  padding-top: 20px;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho #metodologia .sec-head h2 { grid-column: 1; grid-row: 1 \/ span 2; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .tag-inline {\n  display: inline-block; font-size: .72em; font-weight: 900; letter-spacing: .13em;\n  text-transform: uppercase; color: var(--amber); line-height: 1.2;\n  border: 1px solid rgba(254,180,6,.35); border-radius: 2px;\n  padding: 2px 7px; margin: 0 1px; vertical-align: 1px; white-space: nowrap;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho #metodologia .sec-head .lede { grid-column: 2; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #metodologia .sec-head h2 {\n  margin: 0; font-size: clamp(2rem, 3.45vw, 2.95rem);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho #metodologia .sec-head .lede {\n  max-width: none; margin: 0; font-size: clamp(.85rem, .98vw, .92rem); line-height: 1.6;\n}\n\n@media (max-width: 900px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho #metodologia .sec-head { grid-template-columns: 1fr; row-gap: 14px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #metodologia .sec-head h2, .ag-lp.ag-lp.ag-lp#ag-zoho #metodologia .sec-head .lede { grid-column: 1; grid-row: auto; }\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .oc-grid {\n  display: grid; grid-template-columns: repeat(2, 1fr); gap: clamp(14px, 1.8vw, 20px);\n  margin: 0;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .oc-rail { margin-top: clamp(22px, 2.2vw, 28px); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .oc-nav { justify-content: flex-end; margin-top: clamp(22px, 2.2vw, 28px); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .oc-card {\n  color: var(--fg);\n  background: var(--ink-2); border: 1px solid var(--line); border-radius: var(--radius);\n  padding: clamp(17px, 1.8vw, 21px);\n  display: flex; flex-direction: column;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .oc-tag {\n  align-self: flex-start; font-size: .76rem; font-weight: 900; letter-spacing: .14em;\n  text-transform: uppercase; color: var(--amber);\n  border: 1px solid rgba(254,180,6,.35); border-radius: 2px; padding: 5px 12px; margin-bottom: 14px;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .oc-card h3 { font-size: 1.05rem; margin: 0 0 7px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .oc-card p { margin: 0; font-size: .875rem; line-height: 1.45; color: var(--fg-dim); flex: 1; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .oc-chips {\n  display: flex; flex-wrap: wrap; gap: 6px 16px; list-style: none; margin: 15px 0 0; padding: 14px 0 0;\n  border-top: 1px solid var(--line-2);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .oc-chips li {\n  position: relative; font-size: .79rem; font-weight: 700; color: var(--fg);\n  padding-left: 14px;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .oc-chips li::before {\n  content: \"\"; position: absolute; left: 0; top: .5em;\n  width: 6px; height: 6px; background: var(--amber);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .planes-block { margin-top: clamp(30px, 3vw, 40px); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .planes-head {\n  display: flex; flex-wrap: wrap; gap: 10px 20px; align-items: center;\n  justify-content: space-between; margin-bottom: 13px;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .planes-head .logos-title { margin-bottom: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .planes {\n  display: grid; grid-template-columns: repeat(3, minmax(0, 1fr));\n  align-items: stretch; gap: clamp(12px, 1.6vw, 20px);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan {\n  background: var(--ink-2); border: 1px solid var(--line); border-radius: var(--radius);\n  border-top: 2px solid var(--amber); padding: 22px;\n  display: flex; flex-direction: column;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan h4 { font-size: 1.22rem; margin: 0 0 8px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan p { margin: 0; font-size: .86rem; line-height: 1.5; color: var(--fg-dim); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan p.plan-enfoque {\n  min-height: 2.7em; margin: -2px 0 10px;\n  color: var(--fg); font-size: .68rem; font-weight: 800;\n  letter-spacing: .1em; line-height: 1.35; text-transform: uppercase;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan p.plan-precio {\n  font-size: 1.05rem; font-weight: 800; letter-spacing: -.025em;\n  line-height: 1.15; color: var(--amber); margin: 0 0 12px;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan p.plan-precio.is-texto { color: var(--fg); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan-lista {\n  flex: 1; display: grid; gap: 8px; align-content: start;\n  list-style: none; margin: 16px 0 0; padding: 15px 0 0;\n  border-top: 1px solid var(--line-2);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan-lista li {\n  position: relative; padding-left: 16px;\n  font-size: .84rem; line-height: 1.45; color: var(--fg);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan-lista li::before {\n  content: \"\"; position: absolute; left: 0; top: .52em;\n  width: 6px; height: 6px; background: var(--amber);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan-lista li.plan-base { color: var(--fg-dim); font-weight: 700; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan-lista li.plan-base::before { background: var(--fg-dimmer); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan-ref {\n  align-self: flex-start; margin-top: 18px; cursor: pointer; font-family: inherit;\n  background: transparent; border: 0; padding: 0;\n  color: var(--fg-dim); font-size: .82rem; font-weight: 700;\n  text-decoration: underline; text-underline-offset: 3px;\n  transition: color .16s ease;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan-ref:hover { color: var(--amber); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan-cta { width: 100%; margin-top: 20px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .planes-nota { margin: 14px 0 0; font-size: .8rem; color: var(--fg-dimmer); }\n.ag-lp.ag-lp.ag-lp#ag-zoho #metodologia .trust-logos {\n  margin-top: clamp(22px, 2.2vw, 28px);\n  padding: clamp(14px, 1.5vw, 18px) clamp(18px, 2.4vw, 28px);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho #metodologia .trust-logos .logos-title { margin-bottom: 12px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #metodologia .trust-logos img { height: clamp(64px, 7.4vw, 92px); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .cifras-head {\n  display: flex; flex-wrap: wrap; gap: 10px 20px; align-items: center;\n  justify-content: space-between;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .cifras-head .logos-title { margin-bottom: 0; flex: 1 1 auto; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .cifras-rail {\n  padding-bottom: clamp(22px, 2.6vw, 30px);\n  margin: clamp(16px, 2vw, 22px) 0 clamp(22px, 2.6vw, 30px);\n  border-bottom: 1px solid var(--line);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .cifras {\n  display: grid; grid-template-columns: repeat(3, 1fr);\n  list-style: none; margin: 0; padding: 0;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .cifras li {\n  padding: 0 clamp(10px, 1.8vw, 24px); text-align: center;\n  border-left: 1px solid var(--line);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .cifras li:first-child { border-left: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .cifra-n {\n  display: block; font-size: clamp(1.9rem, 3.2vw, 2.6rem); font-weight: 900;\n  letter-spacing: -.035em; line-height: 1.05; color: var(--amber);\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .cifra-l {\n  display: block; margin-top: 9px; font-size: .84rem; line-height: 1.4; color: var(--fg-dim);\n}\n\n\n\n\n@media (min-width: 1001px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-nav, .ag-lp.ag-lp.ag-lp#ag-zoho .hc-nav, .ag-lp.ag-lp.ag-lp#ag-zoho .oc-nav, .ag-lp.ag-lp.ag-lp#ag-zoho .planes-nav, .ag-lp.ag-lp.ag-lp#ag-zoho .cifras-nav { display: none; }\n}\n\n@media (max-width: 1000px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-rail, .ag-lp.ag-lp.ag-lp#ag-zoho .hc-rail, .ag-lp.ag-lp.ag-lp#ag-zoho .oc-rail, .ag-lp.ag-lp.ag-lp#ag-zoho .planes-rail, .ag-lp.ag-lp.ag-lp#ag-zoho .cifras-rail {\n    overflow-x: auto; overflow-y: hidden; cursor: grab;\n    scrollbar-width: none; -ms-overflow-style: none;\n  }\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-rail::-webkit-scrollbar, .ag-lp.ag-lp.ag-lp#ag-zoho .hc-rail::-webkit-scrollbar, .ag-lp.ag-lp.ag-lp#ag-zoho .oc-rail::-webkit-scrollbar, .ag-lp.ag-lp.ag-lp#ag-zoho .planes-rail::-webkit-scrollbar, .ag-lp.ag-lp.ag-lp#ag-zoho .cifras-rail::-webkit-scrollbar { display: none; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-grid > *, .ag-lp.ag-lp.ag-lp#ag-zoho .module-overview > * { min-width: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .car-rail { min-width: 0; max-width: 100%; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .car-rail.is-dragging { cursor: grabbing; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .car-rail.is-dragging * { user-select: none; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents, .ag-lp.ag-lp.ag-lp#ag-zoho .hero-card ul, .ag-lp.ag-lp.ag-lp#ag-zoho .oc-grid, .ag-lp.ag-lp.ag-lp#ag-zoho .planes, .ag-lp.ag-lp.ag-lp#ag-zoho .cifras {\n    display: flex; grid-template-columns: none; width: max-content; min-width: 100%;\n  }\n.ag-lp.ag-lp.ag-lp#ag-zoho .oc-rail { margin-top: 14px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .oc-card { flex: 0 0 clamp(258px, 74vw, 360px); width: clamp(258px, 74vw, 360px); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .planes { gap: clamp(16px, 4vw, 26px); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .plan { flex: 0 0 clamp(262px, 76vw, 330px); width: clamp(262px, 76vw, 330px); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .cifras li { flex: 0 0 clamp(186px, 54vw, 240px); width: clamp(186px, 54vw, 240px); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-2 { margin-bottom: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .agent { flex: 0 0 clamp(248px, 70vw, 330px); width: clamp(248px, 70vw, 330px); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-rail { margin-bottom: 18px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-nav { justify-content: flex-end; margin-bottom: 12px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-head .agents-nav { margin-bottom: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-card ul { gap: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-card li {\n    flex: 0 0 clamp(236px, 68vw, 300px); width: clamp(236px, 68vw, 300px);\n    border-bottom: 0; border-right: 1px solid var(--line);\n    padding: 0 22px 0 0; margin-right: 22px;\n  }\n.ag-lp.ag-lp.ag-lp#ag-zoho .hero-card li:last-child { border-right: 0; margin-right: 0; padding-right: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho[data-landing=\"ai\"] #modulos .agents, .ag-lp.ag-lp.ag-lp#ag-zoho[data-landing=\"ai\"] #modulos .agents.agents-2 {\n    display: grid; grid-template-columns: 1fr; width: 100%; min-width: 0;\n  }\n.ag-lp.ag-lp.ag-lp#ag-zoho[data-landing=\"ai\"] #modulos .agent { width: auto; }\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-head {\n  display: flex; flex-wrap: wrap; gap: 10px 20px; align-items: center;\n  justify-content: space-between;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .agents-head .agents-group { margin-bottom: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .sec-paper .car-btn {\n  width: 44px; height: 44px; border-radius: 3px;\n  background: #fff; border: 1.5px solid #7c8374; color: #232a20;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .sec-paper .car-btn svg { width: 19px; height: 19px; stroke-width: 2.6; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .sec-paper .car-btn:hover:not(:disabled) {\n  border-color: #c88800; color: #8a5f00; background: #fffdf6;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .sec-paper .car-btn:disabled { opacity: .32; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .sec-paper .car-btn:focus-visible { outline: 3px solid #9b6d00; outline-offset: 2px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho #apps-sec { padding-top: clamp(26px, 3.4vw, 46px); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .zapps-title {\n  font-size: clamp(1rem, 1.6vw, 1.18rem); font-weight: 800;\n  letter-spacing: -.02em; color: #535d49;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .sec-paper .zapps {\n  background: transparent; border: 0; border-radius: 0; overflow: visible;\n  gap: 12px;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .sec-paper .zapp {\n  background: transparent; outline: 0; box-shadow: none;\n  border: 1px solid rgba(0,0,0,.10); border-radius: 0;\n  padding: 16px 18px;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .sec-paper .zapp-top { margin-bottom: 8px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .sec-paper .zapp h4 { font-size: .95rem; color: var(--ink-on-paper); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .sec-paper .zapp p {\n  font-size: .82rem; line-height: 1.45; color: var(--dim-on-paper); max-width: none;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .sec-paper .zapp-ico { color: var(--dim-on-paper); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .zapp-top h4 { margin: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .zapp-logo { height: 26px; width: auto; max-width: none; display: block; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .modulo-intro { display: block; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .modulo-logo {\n  height: clamp(46px, 4.5vw, 66px); width: auto; max-width: none;\n  display: block; margin: 0 0 14px;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .ref-dialog { max-width: min(560px, calc(100vw - 32px)); }\n.ag-lp.ag-lp.ag-lp#ag-zoho .ref-dialog p { font-size: .94rem; line-height: 1.6; margin: 0 0 16px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .ref-ejemplo {\n  border: 1px solid #c3c7bb; border-radius: var(--radius); padding: 20px 22px; margin-bottom: 16px;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .ref-eyebrow {\n  font-size: .68rem; font-weight: 800; letter-spacing: .14em; text-transform: uppercase;\n  color: #535d49; margin: 0 0 10px !important;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .ref-cifras {\n  display: flex; flex-wrap: wrap; gap: 0; list-style: none; margin: 18px 0 0; padding: 0;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .ref-cifras li {\n  flex: 1 1 0; min-width: 140px; padding: 0 20px;\n  border-left: 1px solid #c3c7bb;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .ref-cifras li:first-child { border-left: 0; padding-left: 0; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .ref-n {\n  display: block; font-size: 1.7rem; font-weight: 800; letter-spacing: -.035em;\n  line-height: 1.05; color: #424e34;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .ref-l { display: block; margin-top: 5px; font-size: .84rem; color: #58604f; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .ref-nota { font-size: .8rem !important; color: #58604f; margin-bottom: 0 !important; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .field-error {\n  margin: 7px 0 0; font-size: .83rem; line-height: 1.4; color: #ff9c8a;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .field input[aria-invalid=\"true\"], .ag-lp.ag-lp.ag-lp#ag-zoho .field select[aria-invalid=\"true\"], .ag-lp.ag-lp.ag-lp#ag-zoho .field textarea[aria-invalid=\"true\"] {\n  border-color: #e06b5a;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .field input[aria-invalid=\"true\"]:focus-visible, .ag-lp.ag-lp.ag-lp#ag-zoho .field textarea[aria-invalid=\"true\"]:focus-visible {\n  border-color: #ff9c8a; box-shadow: inset 0 0 0 1px #ff9c8a;\n}\n.ag-lp.ag-lp.ag-lp#ag-zoho .combo.is-error .combo-btn { border-color: #e06b5a; }\n\n\n\n\n@media (max-width: 860px) {\n.ag-lp.ag-lp.ag-lp#ag-zoho .mobile-cta { justify-content: flex-start; padding-right: 92px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .mobile-cta .btn { flex: 0 1 auto; min-width: 232px; padding: 14px 32px; }\n.ag-lp.ag-lp.ag-lp#ag-zoho .mobile-cta .btn svg { width: 18px; height: 18px; flex: none; }\n}\n<\/style>\n<!-- Comparte dise\u00f1o y guiones con \/zoho: zoho.css, roi.js y modules.js\n     est\u00e1n acotados a #ag-zoho, por eso la ra\u00edz conserva ese id. -->\n<div class=\"ag-lp\" id=\"ag-zoho\" data-landing=\"software\">\n\n  <!-- ============ HEADER ============ -->\n  <header class=\"lp-header\">\n    <div class=\"wrap\">\n      <a href=\"https:\/\/anigami.studio\/\" aria-label=\"ANIGAMI Studio\">\n        <img decoding=\"async\" src=\"https:\/\/anigami.studio\/wp-content\/uploads\/2025\/07\/anigami-studio-logo-img-w.png\" alt=\"ANIGAMI Studio\" width=\"176\" height=\"30\">\n      <\/a>\n      <nav class=\"hdr-nav\">\n        <a href=\"#modulos\">Capacidades<\/a>\n        <a href=\"#seguridad\">Seguridad<\/a>\n        <a href=\"#metodologia\">Metodolog\u00eda<\/a>\n        <a href=\"#planes\">Esquemas<\/a>\n        <a href=\"#faq\">Preguntas<\/a>\n      <\/nav>\n      <a href=\"https:\/\/bookings.anigami.studio\/sales\" class=\"btn btn-primary\" target=\"_blank\" rel=\"noopener\">Agendar diagn\u00f3stico<\/a>\n    <\/div>\n  <\/header>\n\n  <!-- ============ HERO ============ -->\n  <section class=\"hero hero-video-section\">\n    <!-- Video de fondo del hero. URL absoluta desde config.json: una ruta\n         relativa se resolver\u00eda contra \/landings\/<slug>\/, que WordPress no sirve.\n         El servidor rechaza subidas de m\u00e1s de ~1 MB (413), de ah\u00ed la resoluci\u00f3n. -->\n    <video class=\"hero-video\" autoplay muted loop playsinline preload=\"metadata\" poster=\"https:\/\/anigami.studio\/wp-content\/uploads\/2026\/09\/hero-oficinas-poster.jpg\" aria-hidden=\"true\">\n      <source src=\"https:\/\/anigami.studio\/wp-content\/uploads\/2026\/09\/hero-oficinas.mp4\" type=\"video\/mp4\">\n    <\/video>\n    <div class=\"hero-video-overlay\" aria-hidden=\"true\"><\/div>\n    <script>\n    (function () {\n      \/\/ Con movimiento reducido el video queda detenido en el p\u00f3ster.\n      var m = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)');\n      if (!m || !m.matches) return;\n      document.querySelectorAll('.hero-video').forEach(function (v) { v.removeAttribute('autoplay'); v.pause(); });\n    })();\n    <\/script>\n\n    <div class=\"wrap\">\n      <div class=\"hero-grid\">\n        <div>\n          <h1>Software e IA para innovar, escalar y <span class=\"hl\">transformar.<\/span><\/h1>\n          <p class=\"lede\">Acompa\u00f1amos startups y empresas desde un MVP hasta plataformas enterprise. Construimos el proyecto de principio a fin, potenciamos equipos existentes e incorporamos IA y Agentes AI para automatizar procesos y crear soluciones con mayor valor.<\/p>\n          <div class=\"btn-row\">\n            <a href=\"https:\/\/bookings.anigami.studio\/sales\" class=\"btn btn-primary btn-lg\" target=\"_blank\" rel=\"noopener\">Agendar diagn\u00f3stico<\/a>\n            <a href=\"#contacto\" class=\"btn btn-ghost btn-lg\">Hablar con un experto<\/a>\n          <\/div>\n        <\/div>\n\n        <aside class=\"hero-card\">\n          <div class=\"hc-head\">\n            <h2>Un aliado para<br>cada etapa.<\/h2>\n            <div class=\"car-nav hc-nav\">\n              <button type=\"button\" class=\"car-btn\" data-car=\"-1\" data-car-rail=\"hc-rail\" aria-label=\"Prioridades anteriores\" aria-controls=\"hc-rail\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m15 18-6-6 6-6\"\/><\/svg><\/button>\n              <button type=\"button\" class=\"car-btn\" data-car=\"1\" data-car-rail=\"hc-rail\" aria-label=\"Prioridades siguientes\" aria-controls=\"hc-rail\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\"\/><\/svg><\/button>\n            <\/div>\n          <\/div>\n          <div class=\"hc-rail car-rail\" id=\"hc-rail\">\n          <ul>\n            <li><span class=\"priority-n\">01<\/span><span><strong>MVP.<\/strong> Lanzamos una primera versi\u00f3n enfocada en validar y generar aprendizaje real.<\/span><\/li>\n            <li><span class=\"priority-n\">02<\/span><span><strong>Escala.<\/strong> Evolucionamos arquitectura, experiencia y capacidad conforme crece el negocio.<\/span><\/li>\n            <li><span class=\"priority-n\">03<\/span><span><strong>Equipo especializado.<\/strong> Sumamos talento experto para acelerar entregas y resolver retos cr\u00edticos.<\/span><\/li>\n            <li><span class=\"priority-n\">04<\/span><span><strong>Enterprise.<\/strong> Modernizamos e integramos plataformas con seguridad, gobierno y continuidad.<\/span><\/li>\n          <\/ul>\n          <\/div>\n        <\/aside>\n      <\/div>\n\n    <\/div>\n  <\/section>\n\n  <!-- ============ CAPACIDADES (PESTA\u00d1AS) ============ -->\n  <section id=\"modulos\" class=\"sec-paper\">\n    <div class=\"wrap\">\n      <div class=\"sec-head\">\n        <h2>Software e IA aplicada. <span class=\"hl\">De un MVP a escala enterprise.<\/span><\/h2>\n      <\/div>\n\n      <div class=\"tablist\" role=\"tablist\" aria-label=\"Capacidades de desarrollo\">\n        <button type=\"button\" class=\"tab\" role=\"tab\" id=\"tab-plataformas\" data-tab=\"plataformas\" aria-controls=\"plataformas\" aria-selected=\"true\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"2\" y=\"4\" width=\"20\" height=\"14\" rx=\"2\"\/><path d=\"M8 22h8M12 18v4\"\/><path d=\"m9 9-2 2 2 2M15 9l2 2-2 2\"\/><\/svg> Aplicaciones y plataformas<\/button>\n        <button type=\"button\" class=\"tab\" role=\"tab\" id=\"tab-integraciones\" data-tab=\"integraciones\" aria-controls=\"integraciones\" aria-selected=\"false\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"6\" cy=\"6\" r=\"3\"\/><circle cx=\"18\" cy=\"18\" r=\"3\"\/><path d=\"M9 6h5a4 4 0 0 1 4 4v5\"\/><path d=\"M15 18h-5a4 4 0 0 1-4-4V9\"\/><\/svg> Integraciones y APIs<\/button>\n        <button type=\"button\" class=\"tab\" role=\"tab\" id=\"tab-ia\" data-tab=\"ia\" aria-controls=\"ia\" aria-selected=\"false\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"4\" y=\"7\" width=\"16\" height=\"12\" rx=\"2\"\/><path d=\"M12 3v4M9 12h.01M15 12h.01M9.5 16h5\"\/><path d=\"M2 11v3M22 11v3\"\/><\/svg> IA y Agentes AI<\/button>\n      <\/div>\n\n      <div class=\"tabpanel\" id=\"plataformas\" role=\"tabpanel\" aria-labelledby=\"tab-plataformas\">\n        <div class=\"module-overview\">\n          <div class=\"module-copy\">\n            <div class=\"modulo-intro no-rule\">\n          <h3>Software preparado para crecer.<\/h3>\n          <p>Construimos aplicaciones, plataformas SaaS y soluciones m\u00f3viles para clientes, equipos y nuevos modelos de negocio. Nuestro mayor expertise est\u00e1 en React, Next.js y Node.js; en cada proyecto combinamos estrategia, UX\/UI, arquitectura escalable e ingenier\u00eda asistida por IA para acelerar la entrega sin sacrificar calidad.<\/p>\n        <\/div>\n            <div class=\"car-nav agents-nav\">\n              <button type=\"button\" class=\"car-btn\" data-car=\"-1\" data-car-rail=\"crm-agents\" aria-label=\"Tarjetas anteriores\" aria-controls=\"crm-agents\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m15 18-6-6 6-6\"\/><\/svg><\/button>\n              <button type=\"button\" class=\"car-btn\" data-car=\"1\" data-car-rail=\"crm-agents\" aria-label=\"Tarjetas siguientes\" aria-controls=\"crm-agents\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\"\/><\/svg><\/button>\n            <\/div>\n            <div class=\"crm-rail agents-rail car-rail\" id=\"crm-agents\">\n            <div class=\"agents agents-2\">\n              <article class=\"agent\">\n                <h4>Plataformas SaaS<\/h4>\n                <p>Soluciones para lanzar nuevos servicios, validar modelos de negocio y operar experiencias de principio a fin.<\/p>\n              <\/article>\n              <article class=\"agent\">\n                <h4>Aplicaciones m\u00f3viles<\/h4>\n                <p>Apps para clientes, equipos y comunidades, conectadas con servicios, datos y procesos de negocio.<\/p>\n              <\/article>\n              <article class=\"agent\">\n                <h4>Comercio digital y marketplaces<\/h4>\n                <p>Experiencias de compra, suscripciones y plataformas de m\u00faltiples participantes con integraciones comerciales y operativas.<\/p>\n              <\/article>\n              <article class=\"agent\">\n                <h4>Portales y experiencias de autoservicio<\/h4>\n                <p>Acceso personalizado para clientes, proveedores o socios, con informaci\u00f3n y procesos disponibles en cualquier momento.<\/p>\n              <\/article>\n              <article class=\"agent\">\n                <h4>Software para operaciones complejas<\/h4>\n                <p>Aplicaciones que coordinan procesos, responsables, reglas e informaci\u00f3n cuando una soluci\u00f3n est\u00e1ndar no es suficiente.<\/p>\n              <\/article>\n            <\/div>\n            <\/div>\n            <div class=\"module-actions\">\n              <a href=\"#contacto\" class=\"btn btn-primary\">Cotizar proyecto<\/a>\n              <a href=\"https:\/\/bookings.anigami.studio\/sales\" class=\"btn btn-ghost\" target=\"_blank\" rel=\"noopener\">Agendar diagn\u00f3stico<\/a>\n            <\/div>\n          <\/div>\n          <aside class=\"module-metrics\" aria-label=\"Capacidades de producto\"><div class=\"metrics-grid\"><div class=\"metric-card\"><span class=\"metric-unit is-texto\">MVP<\/span><h4>Validaci\u00f3n y lanzamiento<\/h4><\/div><div class=\"metric-card\"><span class=\"metric-unit is-texto\">SaaS<\/span><h4>Productos y plataformas<\/h4><\/div><div class=\"metric-card\"><span class=\"metric-unit is-texto\">Mobile<\/span><h4>Aplicaciones conectadas<\/h4><\/div><div class=\"metric-card\"><span class=\"metric-unit is-texto\">Enterprise<\/span><h4>Escala e integraci\u00f3n<\/h4><\/div><\/div><\/aside>\n        <\/div>\n        <div class=\"pipeline-block\">\n          <h4>Un ciclo de entrega seguro, creativo y orientado a resultados<\/h4>\n          <div class=\"pipeline-wrap\">\n            <div class=\"pipeline-scroll\">\n            <div class=\"pipeline\">\n              <div class=\"pipe-step\">Descubrimiento<\/div>\n              <div class=\"pipe-step\">UX y arquitectura<\/div>\n              <div class=\"pipe-step\">Desarrollo seguro<\/div>\n              <div class=\"pipe-step is-active\">Pruebas automatizadas<\/div>\n              <div class=\"pipe-step\">Despliegue<\/div>\n              <div class=\"pipe-step is-won\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m4 12.5 5 5L20 6.5\"\/><\/svg>En producci\u00f3n<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"tabpanel\" id=\"integraciones\" role=\"tabpanel\" aria-labelledby=\"tab-integraciones\">\n        <div class=\"module-overview\">\n          <div class=\"module-copy\">\n            <div class=\"modulo-intro no-rule\">\n          <h3>Integraci\u00f3n entre los sistemas que ya operas.<\/h3>\n          <p>Conectamos ERP, CRM, comercio electr\u00f3nico, bancos y aplicaciones heredadas para que la informaci\u00f3n fluya sin recaptura y con una sola versi\u00f3n de cada dato. Las APIs y los servicios de mensajer\u00eda aportan el mecanismo de conexi\u00f3n. ANIGAMI aporta el mapeo de datos, las reglas de validaci\u00f3n, el manejo de errores y el monitoreo de cada integraci\u00f3n.<\/p>\n        <\/div>\n            <div class=\"car-nav agents-nav\">\n              <button type=\"button\" class=\"car-btn\" data-car=\"-1\" data-car-rail=\"books-agents\" aria-label=\"Tarjetas anteriores\" aria-controls=\"books-agents\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m15 18-6-6 6-6\"\/><\/svg><\/button>\n              <button type=\"button\" class=\"car-btn\" data-car=\"1\" data-car-rail=\"books-agents\" aria-label=\"Tarjetas siguientes\" aria-controls=\"books-agents\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\"\/><\/svg><\/button>\n            <\/div>\n            <div class=\"books-rail agents-rail car-rail\" id=\"books-agents\">\n            <div class=\"agents agents-2\">\n              <article class=\"agent\">\n                <h4>APIs y servicios a la medida<\/h4>\n                <p>Dise\u00f1amos y documentamos APIs que exponen datos y procesos a otras aplicaciones, con autenticaci\u00f3n y control de accesos.<\/p>\n              <\/article>\n              <article class=\"agent\">\n                <h4>Integraci\u00f3n con ERP y CRM<\/h4>\n                <p>Sincronizamos clientes, pedidos, inventario y facturaci\u00f3n entre el ERP corporativo, el CRM y las plataformas de comercio electr\u00f3nico.<\/p>\n              <\/article>\n              <article class=\"agent\">\n                <h4>Migraci\u00f3n desde sistemas heredados<\/h4>\n                <p>Extraemos, depuramos y validamos la informaci\u00f3n de los sistemas anteriores antes de llevarla a la nueva plataforma.<\/p>\n              <\/article>\n              <article class=\"agent\">\n                <h4>Monitoreo y manejo de errores<\/h4>\n                <p>Cada integraci\u00f3n registra sus operaciones, reintenta los fallos y alerta al equipo cuando un proceso requiere intervenci\u00f3n.<\/p>\n              <\/article>\n            <\/div>\n            <\/div>\n            <div class=\"module-actions\">\n              <a href=\"#contacto\" class=\"btn btn-primary\">Cotizar proyecto<\/a>\n            <\/div>\n          <\/div>\n          <aside class=\"module-metrics\" aria-label=\"Alcance t\u00e9cnico\"><div class=\"metrics-grid\"><div class=\"metric-card\"><span class=\"metric-unit is-texto\">REST y webhooks<\/span><h4>Conexi\u00f3n entre sistemas<\/h4><\/div><div class=\"metric-card\"><span class=\"metric-unit is-texto\">Una fuente<\/span><h4>Sin recaptura de datos<\/h4><\/div><div class=\"metric-card\"><span class=\"metric-unit is-texto\">Trazabilidad<\/span><h4>Registro de cada operaci\u00f3n<\/h4><\/div><\/div><\/aside>\n        <\/div>\n        <div class=\"pipeline-block\">\n          <h4>Un flujo de datos con validaci\u00f3n en cada paso<\/h4>\n          <div class=\"pipeline-wrap\">\n            <div class=\"pipeline-scroll\">\n              <div class=\"pipeline\">\n                  <div class=\"pipe-step\">Sistema origen<\/div>\n                  <div class=\"pipe-step\">Extracci\u00f3n<\/div>\n                  <div class=\"pipe-step\">Validaci\u00f3n<\/div>\n                  <div class=\"pipe-step\">Transformaci\u00f3n<\/div>\n                  <div class=\"pipe-step is-active\">Carga en destino<\/div>\n                  <div class=\"pipe-step is-won\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.6\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m4 12.5 5 5L20 6.5\"\/><\/svg>Sincronizado<\/div>\n              <\/div>\n            <\/div>\n          <\/div>\n        <\/div>\n      <\/div>\n\n      <div class=\"tabpanel\" id=\"ia\" role=\"tabpanel\" aria-labelledby=\"tab-ia\">\n        <div class=\"module-overview\">\n          <div class=\"module-copy\">\n            <div class=\"modulo-intro no-rule\">\n          <h3>IA para automatizar procesos y potenciar tu software.<\/h3>\n          <p>Desarrollamos Agentes AI a la medida e incorporamos capacidades inteligentes en aplicaciones nuevas o existentes. Los conectamos con tus datos y sistemas para ejecutar trabajo real, con permisos, supervisi\u00f3n humana e indicadores claros.<\/p>\n        <\/div>\n            <div class=\"agents-head\">\n              <p class=\"agents-group\">Capacidades a la medida<\/p>\n              <div class=\"car-nav agents-nav\">\n                <button type=\"button\" class=\"car-btn\" data-car=\"-1\" data-car-rail=\"ia-crm-agents\" aria-label=\"Tarjetas anteriores\" aria-controls=\"ia-crm-agents\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m15 18-6-6 6-6\"\/><\/svg><\/button>\n                <button type=\"button\" class=\"car-btn\" data-car=\"1\" data-car-rail=\"ia-crm-agents\" aria-label=\"Tarjetas siguientes\" aria-controls=\"ia-crm-agents\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\"\/><\/svg><\/button>\n              <\/div>\n            <\/div>\n            <div class=\"agents-rail car-rail\" id=\"ia-crm-agents\">\n            <div class=\"agents\">\n            <article class=\"agent\">\n              <span class=\"a-tag\">Agentes AI<\/span>\n              <h4>Agentes para cualquier proceso<\/h4>\n              <p>Atenci\u00f3n, ventas, seguimiento, an\u00e1lisis y operaci\u00f3n: dise\u00f1amos cada agente alrededor del objetivo, las reglas y los sistemas de tu empresa.<\/p>\n            <\/article>\n            <article class=\"agent\">\n              <span class=\"a-tag\">Automatizaci\u00f3n inteligente<\/span>\n              <h4>Procesos que avanzan solos<\/h4>\n              <p>Clasificamos documentos, interpretamos solicitudes y coordinamos tareas entre sistemas para reducir trabajo manual y tiempos de respuesta.<\/p>\n            <\/article>\n            <article class=\"agent\">\n              <span class=\"a-tag\">IA integrada<\/span>\n              <h4>M\u00e1s valor dentro de tu producto<\/h4>\n              <p>Integramos copilotos, b\u00fasqueda inteligente, recomendaciones y an\u00e1lisis para mejorar la experiencia y diferenciar la soluci\u00f3n.<\/p>\n            <\/article>\n            <\/div>\n            <\/div>\n            <div class=\"module-actions\">\n              <a href=\"#contacto\" class=\"btn btn-primary\">Cotizar proyecto<\/a>\n              <a href=\"https:\/\/bookings.anigami.studio\/sales\" class=\"btn btn-ghost\" target=\"_blank\" rel=\"noopener\">Agendar diagn\u00f3stico<\/a>\n            <\/div>\n          <\/div>\n          <aside class=\"module-metrics\" aria-label=\"Valor de la IA aplicada\"><div class=\"metrics-grid\"><div class=\"metric-card\"><span class=\"metric-unit is-texto\">A la medida<\/span><h4>Seg\u00fan tu proceso<\/h4><\/div><div class=\"metric-card\"><span class=\"metric-unit is-texto\">Integrada<\/span><h4>Con datos y sistemas reales<\/h4><\/div><div class=\"metric-card\"><span class=\"metric-unit is-texto\">Controlada<\/span><h4>Con supervisi\u00f3n humana<\/h4><\/div><div class=\"metric-card\"><span class=\"metric-unit is-texto\">Medible<\/span><h4>Con KPIs definidos<\/h4><\/div><\/div><\/aside>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============ STARTUPS + ENTERPRISE ============ -->\n  <section class=\"sec-paper-2 audience-paths\">\n    <div class=\"wrap\">\n      <div class=\"sec-head\">\n        <h2>Un equipo de software para startups y empresas.<\/h2>\n        <p class=\"lede\">Adaptamos el esquema de trabajo al momento del producto, la capacidad de tu equipo y la complejidad de la organizaci\u00f3n.<\/p>\n      <\/div>\n      <div class=\"oc-rail car-rail\">\n        <div class=\"oc-grid\">\n          <article class=\"oc-card\">\n            <span class=\"oc-tag\">Startups<\/span>\n            <h3>De la idea a tracci\u00f3n.<\/h3>\n            <p>Priorizamos un MVP que permita validar antes, aprender con usuarios reales y concentrar la inversi\u00f3n en lo que genera valor. Podemos funcionar como tu equipo de producto completo o reforzar capacidades espec\u00edficas para acelerar el lanzamiento.<\/p>\n            <ul class=\"oc-chips\"><li>MVP enfocado<\/li><li>Iteraci\u00f3n r\u00e1pida<\/li><li>Equipo flexible<\/li><li>Arquitectura para crecer<\/li><\/ul>\n          <\/article>\n          <article class=\"oc-card\">\n            <span class=\"oc-tag\">Enterprise<\/span>\n            <h3>M\u00e1s velocidad para transformar.<\/h3>\n            <p>Potenciamos equipos existentes, modernizamos plataformas e integramos sistemas sin perder continuidad. Trabajamos con SSDLC, gobierno t\u00e9cnico y entregas por fases para avanzar sobre operaciones y arquitecturas complejas.<\/p>\n            <ul class=\"oc-chips\"><li>Equipos extendidos<\/li><li>Modernizaci\u00f3n<\/li><li>Seguridad y gobierno<\/li><li>Resultados medibles<\/li><\/ul>\n          <\/article>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============ SEGURIDAD \u00b7 ESCALABILIDAD \u00b7 CREATIVIDAD ============ -->\n  <section id=\"seguridad\" class=\"sec-ink-2\">\n    <div class=\"wrap\">\n      <div class=\"sec-head\">\n        <h2>Seguridad desde el d\u00eda 0. Arquitectura preparada para escalar.<\/h2>\n        <p class=\"lede\">Trabajamos con un Secure Software Development Life Cycle (SSDLC) que incorpora seguridad durante todo el proyecto. La creatividad define una soluci\u00f3n valiosa; la ingenier\u00eda asegura que pueda crecer y operar con confianza.<\/p>\n      <\/div>\n      <div class=\"grid g3\">\n        <article class=\"card\">\n          <h3>SSDLC en todo el desarrollo<\/h3>\n          <p>Modelado de amenazas, revisi\u00f3n de c\u00f3digo, control de dependencias, pruebas de seguridad y criterios de liberaci\u00f3n integrados al ciclo de entrega.<\/p>\n        <\/article>\n        <article class=\"card\">\n          <h3>Escalabilidad por dise\u00f1o<\/h3>\n          <p>Arquitectura, datos, infraestructura y observabilidad preparados para crecer en usuarios, transacciones e integraciones sin reconstruir el producto.<\/p>\n        <\/article>\n        <article class=\"card\">\n          <h3>Creatividad con prop\u00f3sito<\/h3>\n          <p>Cuestionamos supuestos, exploramos alternativas y dise\u00f1amos experiencias diferenciadas, siempre vinculadas con los objetivos y KPIs del proyecto.<\/p>\n        <\/article>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============ TECNOLOG\u00cdA ============ -->\n  <section id=\"apps-sec\" class=\"sec-paper\">\n    <div class=\"wrap\">\n        <div class=\"zapps-block\" id=\"apps\">\n          <div class=\"zapps-head\">\n            <h3 class=\"zapps-title\">Nuestro stack principal y capacidades complementarias.<\/h3>\n            <div class=\"car-nav zapps-nav\">\n              <button type=\"button\" class=\"car-btn\" data-car=\"-1\" data-car-rail=\"zapps-rail\" aria-label=\"Tecnolog\u00edas anteriores\" aria-controls=\"zapps-rail\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m15 18-6-6 6-6\"\/><\/svg><\/button>\n              <button type=\"button\" class=\"car-btn\" data-car=\"1\" data-car-rail=\"zapps-rail\" aria-label=\"Tecnolog\u00edas siguientes\" aria-controls=\"zapps-rail\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\"\/><\/svg><\/button>\n            <\/div>\n          <\/div>\n          <div class=\"zapps-rail car-rail\" id=\"zapps-rail\">\n          <div class=\"zapps\">\n            <article class=\"zapp\">\n              <div class=\"zapp-top\"><h4>React<\/h4><\/div>\n              <p>Interfaces de usuario basadas en componentes reutilizables.<\/p>\n            <\/article>\n            <article class=\"zapp\">\n              <div class=\"zapp-top\"><h4>Next.js<\/h4><\/div>\n              <p>Renderizado en servidor, rutas y optimizaci\u00f3n de carga.<\/p>\n            <\/article>\n            <article class=\"zapp\">\n              <div class=\"zapp-top\"><h4>React Native<\/h4><\/div>\n              <p>Aplicaciones m\u00f3viles para iOS y Android con una base tecnol\u00f3gica compartida.<\/p>\n            <\/article>\n            <article class=\"zapp\">\n              <div class=\"zapp-top\"><h4>Node.js<\/h4><\/div>\n              <p>APIs, servicios y procesos que conectan la aplicaci\u00f3n con la operaci\u00f3n.<\/p>\n            <\/article>\n            <article class=\"zapp\">\n              <div class=\"zapp-top\"><h4>APIs e integraciones<\/h4><\/div>\n              <p>Servicios REST, webhooks y conectores con sistemas corporativos.<\/p>\n            <\/article>\n            <article class=\"zapp\">\n              <div class=\"zapp-top\"><h4>Arquitectura de datos<\/h4><\/div>\n              <p>Arquitectura y modelado de datos para el volumen, la integridad y la consulta que exige la operaci\u00f3n.<\/p>\n            <\/article>\n            <article class=\"zapp\">\n              <div class=\"zapp-top\"><h4>Nube y despliegue<\/h4><\/div>\n              <p>Entornos de desarrollo, pruebas y producci\u00f3n separados.<\/p>\n            <\/article>\n            <article class=\"zapp\">\n              <div class=\"zapp-top\"><h4>Agentic AI y MCP<\/h4><\/div>\n              <p>Implementaci\u00f3n e integraci\u00f3n de IA: Agentes AI y servidores MCP conectados a tus sistemas y datos.<\/p>\n            <\/article>\n            <article class=\"zapp\">\n              <div class=\"zapp-top\"><h4>Dise\u00f1o de producto<\/h4><\/div>\n              <p>Investigaci\u00f3n con usuarios, prototipos y sistema de dise\u00f1o.<\/p>\n            <\/article>\n          <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"project-paths\">\n          <div class=\"sec-head\">\n            <h2>Construir desde cero o evolucionar lo que ya existe.<\/h2>\n            <p class=\"lede\">Trabajamos tanto en proyectos greenfield como brownfield. La estrategia, la velocidad y la inversi\u00f3n cambian seg\u00fan la libertad t\u00e9cnica y las dependencias existentes.<\/p>\n          <\/div>\n          <div class=\"oc-rail car-rail\">\n            <div class=\"oc-grid\">\n              <article class=\"oc-card\">\n                <span class=\"oc-tag\">Greenfield<\/span>\n                <h3>Construir bien desde el inicio.<\/h3>\n                <p>Cuando partimos de una soluci\u00f3n nueva, aplicamos desde el primer d\u00eda nuestro stack principal, arquitectura moderna, mejores pr\u00e1cticas e ingenier\u00eda asistida por IA. Menos dependencias heredadas permiten llegar antes a producci\u00f3n, validar m\u00e1s r\u00e1pido y maximizar el retorno.<\/p>\n                <ul class=\"oc-chips\"><li>React, Next.js y Node.js<\/li><li>Mayor velocidad<\/li><li>ROI m\u00e1s temprano<\/li><\/ul>\n              <\/article>\n              <article class=\"oc-card\">\n                <span class=\"oc-tag\">Brownfield<\/span>\n                <h3>Evolucionar sin detener la operaci\u00f3n.<\/h3>\n                <p>Cuando existe una plataforma en uso, nos adaptamos a su stack, arquitectura y procesos. Iniciamos con una auditor\u00eda y avanzamos por fases para proteger la continuidad y la inversi\u00f3n existente. La ruta suele requerir m\u00e1s diagn\u00f3stico y una ejecuci\u00f3n gradual por sus dependencias t\u00e9cnicas y operativas.<\/p>\n                <ul class=\"oc-chips\"><li>Otros stacks<\/li><li>Modernizaci\u00f3n por fases<\/li><li>Continuidad operativa<\/li><\/ul>\n              <\/article>\n            <\/div>\n          <\/div>\n        <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============ METODOLOG\u00cdA \u00b7 MODELOS \u00b7 CLIENTES ============ -->\n  <section id=\"metodologia\">\n    <div class=\"wrap\">\n      <div class=\"sec-head\">\n        <h2>Una metodolog\u00eda enfocada en <span class=\"hl\">resultados<\/span>, no en horas.<\/h2>\n        <p class=\"lede\">La creatividad produce soluciones diferenciadas; la ingenier\u00eda las convierte en productos seguros y escalables. Medimos tanto lo que entregamos <span class=\"tag-inline\">Output<\/span> como el valor que generamos <span class=\"tag-inline\">Outcome<\/span>, alineando cada desarrollo con objetivos y KPIs concretos.<\/p>\n        <p class=\"lede\">Acompa\u00f1amos cada proyecto despu\u00e9s de su salida a producci\u00f3n para medir resultados y maximizar el valor generado.<\/p>\n      <\/div>\n\n      <div class=\"car-nav oc-nav\">\n        <button type=\"button\" class=\"car-btn\" data-car=\"-1\" data-car-rail=\"oc-rail\" aria-label=\"Tarjetas anteriores\" aria-controls=\"oc-rail\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m15 18-6-6 6-6\"\/><\/svg><\/button>\n        <button type=\"button\" class=\"car-btn\" data-car=\"1\" data-car-rail=\"oc-rail\" aria-label=\"Tarjetas siguientes\" aria-controls=\"oc-rail\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\"\/><\/svg><\/button>\n      <\/div>\n      <div class=\"oc-rail car-rail\" id=\"oc-rail\">\n      <div class=\"oc-grid\">\n        <article class=\"oc-card\">\n          <span class=\"oc-tag\">Output<\/span>\n          <h3>Lo que entregamos.<\/h3>\n          <p>Definimos desde el inicio un alcance claro y medible: funcionalidades, integraciones, entornos y documentaci\u00f3n. La inversi\u00f3n se basa en los entregables y la complejidad de la soluci\u00f3n, no en las horas utilizadas para construirla.<\/p>\n          <ul class=\"oc-chips\"><li>Alcance claro<\/li> <li>Entregables medibles<\/li> <li>Cotizado por proyecto<\/li><\/ul>\n        <\/article>\n        <article class=\"oc-card\">\n          <span class=\"oc-tag\">Outcome<\/span>\n          <h3>El valor que generamos.<\/h3>\n          <p>Definimos KPIs y objetivos de negocio para cuantificar el impacto esperado. La p\u00f3liza mensual representa una fracci\u00f3n de ese valor y nos permite acompa\u00f1ar el proyecto, dar seguimiento a sus objetivos y maximizar los resultados.<\/p>\n          <ul class=\"oc-chips\"><li>KPIs claros<\/li> <li>Resultados medibles<\/li> <li>P\u00f3liza seg\u00fan impacto esperado<\/li><\/ul>\n        <\/article>\n      <\/div>\n      <\/div>\n\n      <div class=\"planes-block\" id=\"planes\">\n        <div class=\"planes-head\">\n          <p class=\"trust-sub logos-title\">Esquemas de trabajo<\/p>\n          <div class=\"car-nav planes-nav\">\n            <button type=\"button\" class=\"car-btn\" data-car=\"-1\" data-car-rail=\"planes-rail\" aria-label=\"Esquemas anteriores\" aria-controls=\"planes-rail\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m15 18-6-6 6-6\"\/><\/svg><\/button>\n            <button type=\"button\" class=\"car-btn\" data-car=\"1\" data-car-rail=\"planes-rail\" aria-label=\"Esquemas siguientes\" aria-controls=\"planes-rail\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\"\/><\/svg><\/button>\n          <\/div>\n        <\/div>\n        <div class=\"planes-rail car-rail\" id=\"planes-rail\">\n        <div class=\"planes\">\n          <article class=\"plan\">\n            <h4>Proyecto \/ MVP<\/h4>\n            <p class=\"plan-precio is-texto\">Cotizado por alcance<\/p>\n            <p class=\"plan-desc\">Para lanzar un producto, validar una idea o construir una soluci\u00f3n completa con alcance, entregables y criterios de aceptaci\u00f3n definidos.<\/p>\n            <ul class=\"plan-lista\">\n              <li>Descubrimiento y arquitectura<\/li>\n              <li>Dise\u00f1o de interfaz y prototipo<\/li>\n              <li>Desarrollo web, m\u00f3vil y backend<\/li>\n              <li>Pruebas, despliegue y documentaci\u00f3n<\/li>\n            <\/ul>\n            <a href=\"#contacto\" class=\"btn btn-ghost plan-cta\" data-plan=\"Proyecto \/ MVP\">Solicitar informaci\u00f3n<\/a>\n          <\/article>\n          <article class=\"plan\">\n            <h4>Equipo dedicado<\/h4>\n            <p class=\"plan-precio is-texto\">Esquema mensual flexible<\/p>\n            <p class=\"plan-desc\">Especialistas que se integran a tu roadmap, tecnolog\u00eda y procesos para aumentar capacidad, resolver retos cr\u00edticos y acelerar entregas.<\/p>\n            <ul class=\"plan-lista\">\n              <li>Especialistas web, mobile y backend<\/li>\n              <li>L\u00edder t\u00e9cnico y control de calidad<\/li>\n              <li>Planeaci\u00f3n por iteraciones y reportes de avance<\/li>\n              <li>Ajuste de capacidad seg\u00fan la planeaci\u00f3n<\/li>\n            <\/ul>\n            <a href=\"#contacto\" class=\"btn btn-ghost plan-cta\" data-plan=\"Equipo dedicado\">Solicitar informaci\u00f3n<\/a>\n          <\/article>\n          <article class=\"plan\">\n            <h4>Enterprise<\/h4>\n            <p class=\"plan-precio is-texto\">Desarrollo vinculado a resultados (Outcome Assurance)<\/p>\n            <p class=\"plan-desc\">Cotizamos el proyecto en proporci\u00f3n al valor esperado y a los KPIs acordados. As\u00ed, trabajamos contigo para alcanzar los objetivos que impulsar\u00e1n el crecimiento de tu empresa.<\/p>\n            <ul class=\"plan-lista\">\n              <li class=\"plan-base\">Todo lo incluido en Proyecto<\/li>\n              <li>Arquitectura para varias unidades de negocio<\/li>\n              <li>Integraci\u00f3n con ERP y sistemas corporativos<\/li>\n              <li>Agentes AI con supervisi\u00f3n humana<\/li>\n              <li>Outcome Assurance: resultados medibles alineados con los KPIs acordados<\/li>\n            <\/ul>\n            <button type=\"button\" class=\"plan-ref\" data-module-dialog=\"ref-outcome\">Ver ejemplo de Outcome Assurance<\/button>\n            <a href=\"#contacto\" class=\"btn btn-ghost plan-cta\" data-plan=\"Enterprise\">Solicitar informaci\u00f3n<\/a>\n          <\/article>\n        <\/div>\n        <\/div>\n        <p class=\"planes-nota\">Cada esquema se cotiza despu\u00e9s de la sesi\u00f3n de diagn\u00f3stico. La infraestructura y las licencias de terceros se contratan por separado.<\/p>\n      <\/div>\n\n        <dialog class=\"module-dialog ref-dialog\" id=\"ref-outcome\" aria-labelledby=\"ref-outcome-title\">\n          <div class=\"dialog-header\">\n            <h2 id=\"ref-outcome-title\">C\u00f3mo funciona Outcome Assurance<\/h2>\n            <form method=\"dialog\"><button class=\"dialog-close\" aria-label=\"Cerrar\" autofocus>Cerrar <span aria-hidden=\"true\">\u00d7<\/span><\/button><\/form>\n          <\/div>\n          <p>Outcome Assurance vincula una parte de la inversi\u00f3n al cumplimiento de los KPIs acordados. Antes de iniciar, definimos la l\u00ednea base, las metas y c\u00f3mo mediremos el avance. Si los resultados quedan debajo del rango acordado, ese componente se ajusta y priorizamos las acciones necesarias para corregir el rumbo. As\u00ed, trabajamos contigo para alcanzar los objetivos que impulsar\u00e1n el crecimiento de tu empresa.<\/p>\n          <div class=\"ref-ejemplo\">\n            <p class=\"ref-eyebrow\">Ejemplo<\/p>\n            <p>Si la meta es generar <strong>$3 MDP<\/strong> de impacto incremental al a\u00f1o y el componente variable equivale al <strong>15 %<\/strong> del valor generado:<\/p>\n            <ul class=\"ref-cifras\">\n              <li><span class=\"ref-n\">$450,000<\/span><span class=\"ref-l\">con 100 % de cumplimiento<\/span><\/li>\n              <li><span class=\"ref-n\">$360,000<\/span><span class=\"ref-l\">con 80 % de cumplimiento<\/span><\/li>\n            <\/ul>\n          <\/div>\n          <p class=\"ref-nota\">Los KPIs, los rangos de cumplimiento, la forma de medici\u00f3n y la estructura de la p\u00f3liza se acuerdan durante el diagn\u00f3stico.<\/p>\n        <\/dialog>\n\n      <div class=\"trust-logos\">\n        <div class=\"cifras-head\">\n          <p class=\"trust-sub logos-title\">Las empresas que trabajan con nosotros generan, en promedio:<\/p>\n          <div class=\"car-nav cifras-nav\">\n            <button type=\"button\" class=\"car-btn\" data-car=\"-1\" data-car-rail=\"cifras-rail\" aria-label=\"Cifras anteriores\" aria-controls=\"cifras-rail\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m15 18-6-6 6-6\"\/><\/svg><\/button>\n            <button type=\"button\" class=\"car-btn\" data-car=\"1\" data-car-rail=\"cifras-rail\" aria-label=\"Cifras siguientes\" aria-controls=\"cifras-rail\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.3\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"m9 18 6-6-6-6\"\/><\/svg><\/button>\n          <\/div>\n        <\/div>\n        <div class=\"cifras-rail car-rail\" id=\"cifras-rail\">\n        <ul class=\"cifras\">\n            <li><span class=\"cifra-n\">+40%<\/span><span class=\"cifra-l\">Mayor productividad percibida<\/span><\/li>\n            <li><span class=\"cifra-n\">3-5\u00d7<\/span><span class=\"cifra-l\">Mayor velocidad de ejecuci\u00f3n<\/span><\/li>\n            <li><span class=\"cifra-n\">3\u00d7<\/span><span class=\"cifra-l\">ROI sobre los proyectos implementados<\/span><\/li>\n          <\/ul>\n        <\/div>\n        <div class=\"marquee\">\n          <ul class=\"marquee-track\">\n            <li><img decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/aeromexico_logoA.png\" alt=\"Aerom\u00e9xico\" width=\"184\" height=\"92\"><\/li>\n            <li><img decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/giz_logoA.png\" alt=\"GIZ\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/odonnell-logo-color-1.png\" alt=\"O'Donnell\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/Contramar-logoA.png\" alt=\"Contramar\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/DMI-logo-A.png\" alt=\"Grupo DMI\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/UAL-logo-A.png\" alt=\"UAL\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_pisaA.png\" alt=\"PiSA\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/dasa-color.png\" alt=\"DASA\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/ampip-color-1.png\" alt=\"AMPIP\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/imeplan-logoA.png\" alt=\"IMEPLAN\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/gdl-logoA.png\" alt=\"Guadalajara\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_UtegA.png\" alt=\"UTEG\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/grupo-gea.png\" alt=\"Grupo GEA\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/agm.png\" alt=\"AGM\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/la-nogalera-color-1.png\" alt=\"La Nogalera\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/kalmy-color-1.png\" alt=\"Kalmy\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_fibras-A.png\" alt=\"Fibras\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_logicbus-A.png\" alt=\"Logicbus\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_ABgourmet-A.png\" alt=\"AB Gourmet\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_Lacteos.png\" alt=\"L\u00e1cteos\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_upper_house-A.png\" alt=\"Upper House\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_AmacaA.png\" alt=\"Amaca\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_DecorA.png\" alt=\"Decor\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_KumerkA.png\" alt=\"Kumerk\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_PlaiA.png\" alt=\"Plai\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_Axenda-B.png\" alt=\"Axenda\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_ReddTrack-A.png\" alt=\"ReddTrack\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/Figuro-logo-B.png\" alt=\"Figuro\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/apolloS-logo-A.png\" alt=\"Apollo S\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/bnzero-logo-A.png\" alt=\"BN Zero\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/neon-logo-A.png\" alt=\"Neon\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/reps-logo-A.png\" alt=\"REPS\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/static-logo-A.png\" alt=\"Static\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/youteam-logoA.png\" alt=\"YouTeam\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/local_adv-logoA.png\" alt=\"Local ADV\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/avec-logoA.png\" alt=\"AVEC\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/GAS-logoA.png\" alt=\"GAS\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/i-am.png\" alt=\"I AM\" width=\"184\" height=\"92\"><\/li>\n            <li><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/lpet.png\" alt=\"LPET\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/aeromexico_logoA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/giz_logoA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/odonnell-logo-color-1.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/Contramar-logoA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/DMI-logo-A.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/UAL-logo-A.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_pisaA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/dasa-color.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/ampip-color-1.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/imeplan-logoA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/gdl-logoA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_UtegA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/grupo-gea.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/agm.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/la-nogalera-color-1.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/kalmy-color-1.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_fibras-A.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_logicbus-A.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_ABgourmet-A.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_Lacteos.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_upper_house-A.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_AmacaA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_DecorA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_KumerkA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_PlaiA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_Axenda-B.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/logo_ReddTrack-A.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/Figuro-logo-B.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/apolloS-logo-A.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/bnzero-logo-A.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/neon-logo-A.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/reps-logo-A.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/static-logo-A.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/youteam-logoA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/local_adv-logoA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/avec-logoA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/GAS-logoA.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/i-am.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n            <li aria-hidden=\"true\"><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/kimera.inc\/assets\/clients\/lpet.png\" alt=\"\" width=\"184\" height=\"92\"><\/li>\n          <\/ul>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============ CONTACTO ============ -->\n  <section id=\"contacto\" class=\"cta\">\n    <div class=\"wrap\">\n      <div class=\"cta-grid\">\n        <div>\n          <h2>Hablemos de tu proyecto.<\/h2>\n          <p class=\"lede\">Te ayudaremos a convertir tus necesidades en un proyecto claro, con objetivos medibles, prioridades definidas y una arquitectura alineada a los resultados que buscas.<\/p>\n          <ul class=\"checks\">\n            <li>Clarificar objetivos, usuarios y criterios de \u00e9xito<\/li>\n            <li>Identificar los sistemas que la soluci\u00f3n debe integrar<\/li>\n            <li>Evaluar la arquitectura, la tecnolog\u00eda y d\u00f3nde aplicar IA<\/li>\n            <li>Trazar un alcance inicial y los siguientes pasos del proyecto<\/li>\n          <\/ul>\n          <div class=\"alt-contact\">\n            <div class=\"btn-row\">\n              <a href=\"tel:+5215629162161\" class=\"btn btn-ghost\">Llamar<\/a>\n              <a href=\"https:\/\/api.whatsapp.com\/send?phone=5215629162161&amp;text=Hola%20ANIGAMI%2C%20quiero%20informaci%C3%B3n%20sobre%20desarrollo%20de%20software\" class=\"btn btn-ghost\" target=\"_blank\" rel=\"noopener\">WhatsApp<\/a>\n              <a href=\"https:\/\/bookings.anigami.studio\/sales\" class=\"btn btn-primary\" target=\"_blank\" rel=\"noopener\">Agendar diagn\u00f3stico<\/a>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"form-card\">\n          <p>Completa el formulario. Un experto en software revisar\u00e1 tu solicitud y te contactar\u00e1.<\/p>\n          <!-- ZOHO CRM WEBFORM \u00b7 mismos campos que \/zoho y \/ai: comparten webform. -->\n          <form action=\"https:\/\/crm.zoho.com\/crm\/WebToLeadForm\" name=\"WebToLeads_Zoho\" method=\"POST\" accept-charset=\"UTF-8\" data-origen=\"Landing Software\">\n            <input type=\"text\" style=\"display:none\" name=\"xnQsjsdp\" value=\"c677b1f04091619480a43bd3fdcb1202e77ecc636264cfbae4a15a830f998e66\">\n            <input type=\"hidden\" name=\"zc_gad\" value=\"\">\n            <input type=\"text\" style=\"display:none\" name=\"xmIwtLD\" value=\"892b5b3c98062d5c1eabe7e5ca65187ef734c135881864f023ecc74b455fae04810cc341d283a40b92c52f73afd98122\">\n            <input type=\"text\" style=\"display:none\" name=\"actionType\" value=\"TGVhZHM=\">\n            <input type=\"text\" style=\"display:none\" name=\"returnURL\" value=\"https:\/\/anigami.studio\/landings\/gracias\/\">\n            <input type=\"hidden\" name=\"Lead Source\" value=\"Website\">\n            <input type=\"hidden\" name=\"Lead Status\" value=\"Not Contacted\">\n            <!-- Campo trampa del propio Zoho: descarta env\u00edos automatizados. -->\n            <input type=\"text\" name=\"aG9uZXlwb3Q\" value=\"\" tabindex=\"-1\" autocomplete=\"off\" style=\"position:absolute;left:-9999px\" aria-hidden=\"true\">\n\n            <div class=\"field-row\">\n              <div class=\"field\">\n                <label for=\"z-first\">Nombre<\/label>\n                <input id=\"z-first\" type=\"text\" name=\"First Name\" required data-msg-vacio=\"Escribe tu nombre.\">\n              <\/div>\n              <div class=\"field\">\n                <label for=\"z-last\">Apellido<\/label>\n                <input id=\"z-last\" type=\"text\" name=\"Last Name\" required data-msg-vacio=\"Escribe tus apellidos.\">\n              <\/div>\n            <\/div>\n            <div class=\"field\">\n              <label for=\"z-company\">Empresa<\/label>\n              <input id=\"z-company\" type=\"text\" name=\"Company\" required data-msg-vacio=\"Escribe el nombre de tu empresa.\">\n            <\/div>\n            <div class=\"field-row\">\n              <div class=\"field\">\n                <label for=\"z-email\">Correo corporativo<\/label>\n                <input id=\"z-email\" type=\"email\" name=\"Email\" required placeholder=\"correo@empresa.com\" data-msg-vacio=\"Escribe tu correo corporativo.\" data-msg-formato=\"Revisa el correo: necesita una arroba y un dominio.\">\n              <\/div>\n              <div class=\"field\">\n                <label for=\"z-phone\">Tel\u00e9fono \/ WhatsApp<\/label>\n                <input id=\"z-phone\" type=\"tel\" name=\"Mobile\" required placeholder=\"+52 33 0000 0000\" data-msg-vacio=\"Escribe un tel\u00e9fono de contacto.\">\n              <\/div>\n            <\/div>\n            <div class=\"field\">\n              <label for=\"z-size\">Tama\u00f1o de la empresa<\/label>\n              <select data-combo id=\"z-size\" name=\"LEADCF12\" required data-msg-vacio=\"Selecciona el tama\u00f1o de tu empresa.\">\n                <option value=\"\">Selecciona una opci\u00f3n<\/option>\n                <option value=\"1-10\">1\u201310 colaboradores<\/option>\n                <option value=\"11-50\">11\u201350 colaboradores<\/option>\n                <option value=\"51-200\">51\u2013200 colaboradores<\/option>\n                <option value=\"201-1000\">201\u20131,000 colaboradores<\/option>\n                <option value=\"1000+\">M\u00e1s de 1,000 colaboradores<\/option>\n              <\/select>\n            <\/div>\n            <div class=\"field\">\n              <label for=\"z-need\">\u00bfQu\u00e9 necesitas?<\/label>\n              <select data-combo id=\"z-need\" data-desc-label=\"Necesidad\" required data-msg-vacio=\"Selecciona qu\u00e9 necesitas.\">\n                <option value=\"\">Selecciona una opci\u00f3n<\/option>\n                <option value=\"Plataforma web nueva\">Lanzar un MVP o una nueva plataforma<\/option>\n                <option value=\"Modernizar sistema existente\">Escalar o modernizar software existente<\/option>\n                <option value=\"Integraciones y APIs\">Integraciones y APIs<\/option>\n                <option value=\"Equipo de desarrollo dedicado\">Potenciar mi equipo de desarrollo<\/option>\n                <option value=\"Agentes AI y automatizaci\u00f3n con IA\">Agentes AI o automatizaci\u00f3n con IA<\/option>\n                <option value=\"Otro\">Otro<\/option>\n              <\/select>\n            <\/div>\n            <input type=\"hidden\" id=\"z-plan\" value=\"\">\n            <div class=\"field\">\n              <label for=\"z-desc\">Contexto y objetivo del proyecto<\/label>\n              <textarea id=\"z-desc\" name=\"Description\" placeholder=\"Cu\u00e9ntanos qu\u00e9 producto quieres construir, para qui\u00e9n y qu\u00e9 resultado esperas obtener.\"><\/textarea>\n            <\/div>\n            <button type=\"submit\" class=\"btn btn-primary btn-lg\">Enviar<\/button>\n            <p class=\"privacy\">Al enviar aceptas nuestro <a href=\"https:\/\/anigami.studio\/politica-de-privacidad\/\">aviso de privacidad<\/a>. No compartimos tus datos con terceros.<\/p>\n          <\/form>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <!-- ============ FAQ ============ -->\n  <section id=\"faq\" class=\"sec-paper-2\">\n    <div class=\"wrap\">\n      <div class=\"sec-head center\">\n        <h2>Preguntas frecuentes<\/h2>\n      <\/div>\n      <div class=\"faq\">\n        <details>\n          <summary>\u00bfCu\u00e1nto cuesta desarrollar software a la medida?<\/summary>\n          <div class=\"faq-a\"><p>Depende del alcance, del n\u00famero de integraciones y del nivel de disponibilidad requerido. Despu\u00e9s de la sesi\u00f3n de diagn\u00f3stico entregamos una propuesta por fases que separa desarrollo, infraestructura y soporte, con entregables y criterios de aceptaci\u00f3n en cada una.<\/p><\/div>\n        <\/details>\n        <details>\n          <summary>\u00bfPor qu\u00e9 React, Next.js y Node.js?<\/summary>\n          <div class=\"faq-a\"><p>Es nuestro stack principal para proyectos nuevos porque nos permite reutilizar componentes, automatizar pruebas, integrar servicios y desplegar con rapidez. Tambi\u00e9n facilita mantener el c\u00f3digo y ampliar el equipo a largo plazo. Cuando trabajamos sobre una plataforma existente, nos adaptamos al stack y a la arquitectura que el proyecto requiere.<\/p><\/div>\n        <\/details>\n        <details>\n          <summary>\u00bfEl c\u00f3digo queda a nombre de mi organizaci\u00f3n?<\/summary>\n          <div class=\"faq-a\"><p>S\u00ed. La propuesta establece que el c\u00f3digo, los repositorios, la documentaci\u00f3n y los accesos a la infraestructura quedan a nombre de tu organizaci\u00f3n.<\/p><\/div>\n        <\/details>\n        <details>\n          <summary>\u00bfPueden retomar un desarrollo iniciado por otro proveedor?<\/summary>\n          <div class=\"faq-a\"><p>S\u00ed. En proyectos brownfield auditamos el c\u00f3digo, la arquitectura, la infraestructura y las dependencias antes de intervenir. A partir de ah\u00ed definimos una modernizaci\u00f3n por fases que protege la continuidad de la operaci\u00f3n y prioriza las mejoras con mayor impacto.<\/p><\/div>\n        <\/details>\n        <details>\n          <summary>\u00bfLa soluci\u00f3n se integra con nuestro ERP o CRM?<\/summary>\n          <div class=\"faq-a\"><p>Revisamos las APIs y los mecanismos de integraci\u00f3n que ofrece cada sistema. Cuando un sistema no expone una API, evaluamos alternativas como bases de datos intermedias o procesos de sincronizaci\u00f3n programados.<\/p><\/div>\n        <\/details>\n        <details>\n          <summary>\u00bfCu\u00e1nto tarda un proyecto?<\/summary>\n          <div class=\"faq-a\"><p>El plazo se define en la propuesta seg\u00fan el alcance. El trabajo se organiza en entregas parciales, de modo que tu equipo valida avances funcionales desde las primeras iteraciones.<\/p><\/div>\n        <\/details>\n        <details>\n          <summary>\u00bfD\u00f3nde se aloja la aplicaci\u00f3n?<\/summary>\n          <div class=\"faq-a\"><p>En la nube que tu organizaci\u00f3n ya utiliza o en la que recomendemos seg\u00fan los requisitos de seguridad, costo y disponibilidad. Configuramos entornos separados de desarrollo, pruebas y producci\u00f3n.<\/p><\/div>\n        <\/details>\n        <details>\n          <summary>\u00bfC\u00f3mo incorporan seguridad al desarrollo?<\/summary>\n          <div class=\"faq-a\"><p>Aplicamos SSDLC desde el d\u00eda 0. Definimos riesgos y controles durante el dise\u00f1o, revisamos c\u00f3digo y dependencias, automatizamos pruebas y validamos los criterios de seguridad antes de cada liberaci\u00f3n. Tambi\u00e9n acordamos con TI los accesos, el cifrado, los respaldos y la trazabilidad.<\/p><\/div>\n        <\/details>\n        <details>\n          <summary>\u00bfLa arquitectura puede escalar con el producto?<\/summary>\n          <div class=\"faq-a\"><p>S\u00ed. Dimensionamos arquitectura, datos, infraestructura y observabilidad seg\u00fan el crecimiento esperado. El objetivo es ampliar usuarios, transacciones y funcionalidades sin reconstruir la soluci\u00f3n cuando cambie la demanda.<\/p><\/div>\n        <\/details>\n        <details>\n          <summary>\u00bfPueden incorporar Agentes AI a la plataforma?<\/summary>\n          <div class=\"faq-a\"><p>S\u00ed. Podemos integrar IA dentro de una soluci\u00f3n nueva o existente y desarrollar Agentes AI para atenci\u00f3n, ventas, an\u00e1lisis y procesos operativos. Cada agente parte de un objetivo definido y opera conectado con tus sistemas, con permisos acotados, supervisi\u00f3n humana e indicadores de desempe\u00f1o.<\/p><\/div>\n        <\/details>\n        <details>\n          <summary>\u00bfQu\u00e9 dedicaci\u00f3n requiere el equipo interno?<\/summary>\n          <div class=\"faq-a\"><p>Un responsable del proyecto, referentes de las \u00e1reas que usar\u00e1n la soluci\u00f3n e, idealmente, una persona de sistemas o TI. Acordamos su participaci\u00f3n en decisiones, pruebas y adopci\u00f3n desde el inicio.<\/p><\/div>\n        <\/details>\n        <details>\n          <summary>\u00bfQu\u00e9 sucede al concluir el proyecto?<\/summary>\n          <div class=\"faq-a\"><p>Entregamos la documentaci\u00f3n y los accesos para que tu equipo tenga control de la soluci\u00f3n. A partir de ah\u00ed, la metodolog\u00eda contin\u00faa con una p\u00f3liza de seguimiento en la que medimos los KPIs definidos, revisamos resultados contigo e implementamos ajustes para seguir mejorando el desempe\u00f1o de la plataforma.<\/p><\/div>\n        <\/details>\n      <\/div>\n    <\/div>\n  <\/section>\n\n\n  <!-- ============ CTA M\u00d3VIL ============ -->\n  <div class=\"mobile-cta\">\n    <a href=\"tel:+5215629162161\" class=\"btn btn-primary\"><svg viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.1\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6A19.79 19.79 0 0 1 2.12 4.22 2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.91.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z\"\/><\/svg>Llamar<\/a>\n  <\/div>\n\n  <!-- ============ CALCULADORA ROI ============\n       Mejora progresiva: los valores por defecto ya est\u00e1n renderizados en el\n       HTML, de modo que la secci\u00f3n se lee correctamente aunque este script\n       no se ejecute, por ejemplo si WordPress filtra las etiquetas de guion. -->\n  <script>\n  (function () {\n    'use strict';\n    var root = document.getElementById('ag-zoho');\n    if (!root) return;\n\n    var MXN = new Intl.NumberFormat('es-MX', { style: 'currency', currency: 'MXN', maximumFractionDigits: 0 });\n    var NUM = new Intl.NumberFormat('es-MX', { maximumFractionDigits: 0 });\n\n    \/\/ Supuestos \u2014 deben coincidir con el texto de .roi-assume\n    var A = {\n      sinSeguimiento: 0.25,   \/\/ prospectos que hoy no reciben seguimiento\n      recuperacion: 0.50,     \/\/ proporci\u00f3n de esos prospectos que se recupera\n      horasVendedorSem: 5,    \/\/ captura, b\u00fasqueda de informaci\u00f3n y reportes\n      automatizacion: 0.60,   \/\/ proporci\u00f3n de ese trabajo manual que absorbe el sistema\n      costoHoraVendedor: 300, \/\/ MXN\n      horasPorFactura: 0.25,  \/\/ emisi\u00f3n, conciliaci\u00f3n y seguimiento\n      horasCierrePersona: 8,  \/\/ por persona al mes\n      costoHoraAdmin: 250,    \/\/ MXN\n      diasCobroRef: 45,       \/\/ ciclo de cobro alcanzable con cobranza automatizada\n      costoCapital: 0.15,     \/\/ anual\n      semanasMes: 4.33,\n      \/\/ Agentes de IA\n      minutosPorInteraccion: 6,   \/\/ referencia por defecto, editable en el panel\n      costoPorInteraccionIA: 2.5  \/\/ costo operativo estimado del agente, en MXN\n    };\n\n    function val(id, min, max, fallback) {\n      var el = document.getElementById(id);\n      if (!el) return fallback;\n      var n = parseFloat(el.value);\n      if (!isFinite(n)) return fallback;\n      return Math.min(max, Math.max(min, n));\n    }\n    function put(key, text) {\n      var el = root.querySelector('[data-out=\"' + key + '\"]');\n      if (el) el.textContent = text;\n    }\n\n    function calcCRM() {\n      var sellers = val('crm-sellers', 1, 500, 5),\n          leads   = val('crm-leads', 1, 100000, 200),\n          ticket  = val('crm-ticket', 100, 100000000, 45000),\n          close   = val('crm-close', 1, 100, 15) \/ 100;\n\n      var sinAtender  = leads * 12 * A.sinSeguimiento;\n      var recuperables = sinAtender * A.recuperacion;\n      var ingreso     = recuperables * close * ticket;\n      var horasLibres = sellers * A.horasVendedorSem * A.semanasMes * A.automatizacion;\n      var valorHoras  = horasLibres * 12 * A.costoHoraVendedor;\n\n      put('crm-total', MXN.format(ingreso + valorHoras));\n      put('crm-income', MXN.format(ingreso));\n      put('crm-opps', NUM.format(Math.round(recuperables)));\n      put('crm-hours', NUM.format(Math.round(horasLibres)) + ' h');\n    }\n\n    function calcBooks() {\n      var invoices = val('bk-invoices', 1, 100000, 250),\n          staff    = val('bk-staff', 1, 500, 3),\n          ar       = val('bk-ar', 1000, 1000000000, 4000000),\n          days     = val('bk-days', 1, 365, 62);\n\n      var horas       = invoices * A.horasPorFactura + staff * A.horasCierrePersona;\n      var horasLibres = horas * A.automatizacion;\n      var ahorroAdmin = horasLibres * 12 * A.costoHoraAdmin;\n      var exceso      = Math.max(0, days - A.diasCobroRef);\n      var liberado    = days > 0 ? ar * (exceso \/ days) : 0;\n      var ahorroFin   = liberado * A.costoCapital;\n\n      put('bk-total', MXN.format(ahorroAdmin + ahorroFin));\n      put('bk-hours', NUM.format(Math.round(horasLibres)) + ' h');\n      put('bk-cash', MXN.format(liberado));\n      put('bk-fin', MXN.format(ahorroFin));\n    }\n\n    function calcIA() {\n      var vol   = val('ia-vol', 1, 5000000, 3000),\n          mins  = val('ia-min', 0.5, 600, 6),\n          costo = val('ia-costo', 10, 100000, 220),\n          auto  = val('ia-auto', 1, 100, 45) \/ 100;\n\n      var atendidas   = vol * auto;\n      var horasMes    = (vol * mins \/ 60) * auto;\n      var ahorroAnual = horasMes * 12 * costo;\n      var costoAgente = atendidas * A.costoPorInteraccionIA * 12;\n\n      put('ia-total', MXN.format(ahorroAnual - costoAgente));\n      put('ia-hours', NUM.format(Math.round(horasMes)) + ' h');\n      put('ia-handled', NUM.format(Math.round(atendidas)));\n      put('ia-cost', MXN.format(costoAgente));\n    }\n\n    function recalc() {\n      try { calcCRM(); calcBooks(); calcIA(); } catch (e) { \/* se conservan los valores por defecto *\/ }\n    }\n\n    \/\/ ---- Pesta\u00f1as CRM \/ Books -------------------------------------------\n    \/\/ Sin este script los dos paneles quedan visibles, as\u00ed que el contenido\n    \/\/ se lee igual; la clase .tabs-on es la que habilita el ocultamiento.\n    (function () {\n      var sec = document.getElementById('modulos');\n      if (!sec) return;\n      var tabs = [].slice.call(sec.querySelectorAll('.tab'));\n      var panels = [].slice.call(sec.querySelectorAll('.tabpanel'));\n      if (!tabs.length || !panels.length) return;\n      sec.classList.add('tabs-on');\n\n      function activar(id, mover) {\n        tabs.forEach(function (t) {\n          var on = t.getAttribute('data-tab') === id;\n          t.setAttribute('aria-selected', on ? 'true' : 'false');\n          t.tabIndex = on ? 0 : -1;\n        });\n        panels.forEach(function (pn) { pn.classList.toggle('is-hidden', pn.id !== id); });\n        window.dispatchEvent(new Event('resize'));\n        if (mover) {\n          var y = sec.getBoundingClientRect().top + window.pageYOffset - 78;\n          window.scrollTo({ top: y, behavior: 'smooth' });\n        }\n      }\n\n      tabs.forEach(function (t, i) {\n        t.addEventListener('click', function () { activar(t.getAttribute('data-tab'), false); });\n        t.addEventListener('keydown', function (e) {\n          var d = e.key === 'ArrowRight' ? 1 : e.key === 'ArrowLeft' ? -1 : 0;\n          if (!d) return;\n          e.preventDefault();\n          var n = tabs[(i + d + tabs.length) % tabs.length];\n          n.focus(); activar(n.getAttribute('data-tab'), false);\n        });\n      });\n\n      \/\/ Los enlaces del men\u00fa (#crm, #books) abren la pesta\u00f1a correspondiente.\n      document.querySelectorAll('a[href=\"#crm\"], a[href=\"#books\"], a[href=\"#ia\"]').forEach(function (a) {\n        a.addEventListener('click', function (e) {\n          e.preventDefault();\n          activar(a.getAttribute('href').slice(1), true);\n        });\n      });\n\n      var inicial = (location.hash || '').slice(1);\n      activar(panels.some(function (pn) { return pn.id === inicial; }) ? inicial : panels[0].id, false);\n      window.addEventListener('hashchange', function () {\n        var h = (location.hash || '').slice(1);\n        if (panels.some(function (pn) { return pn.id === h; })) activar(h, true);\n      });\n    })();\n\n    \/\/ ---- Velocidad del marquee de clientes -------------------------------\n    \/\/ La duraci\u00f3n se calcula del ancho real de una serie, no se fija a mano:\n    \/\/ as\u00ed la velocidad no cambia al a\u00f1adir o quitar logotipos.\n    (function () {\n      var VELOCIDAD = 55;   \/\/ px por segundo\n      [].forEach.call(root.querySelectorAll('.marquee-track'), function (pista) {\n        function ajustar() {\n          var serie = pista.scrollWidth \/ 2;\n          if (serie > 0) pista.style.animationDuration = Math.round(serie \/ VELOCIDAD) + 's';\n        }\n        ajustar();\n        window.addEventListener('resize', ajustar);\n        [].forEach.call(pista.querySelectorAll('img'), function (img) {\n          if (!img.complete) img.addEventListener('load', ajustar, { once: true });\n        });\n      });\n    })();\n\n    \/\/ ---- Carruseles horizontales ----------------------------------------\n    \/\/ Sirve a cualquier .car-rail: sus elementos son los hijos del contenedor\n    \/\/ interno. Los botones se asocian por data-car-rail. En anchos donde el\n    \/\/ contenido cabe entero, el riel no desplaza y las flechas se deshabilitan.\n    (function () {\n      var quieto = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n      var FRICCION = 0.94, V_MINIMA = 0.02, V_MAXIMA = 2.5, DT_MINIMO = 6;\n\n      [].forEach.call(root.querySelectorAll('.car-rail'), function (rail) {\n        var btns = [].slice.call(root.querySelectorAll('.car-btn[data-car-rail=\"' + rail.id + '\"]'));\n        var caja = rail.firstElementChild;\n        if (!caja) return;\n\n        function items() {\n          return [].slice.call(caja.children).filter(function (el) {\n            return el.getBoundingClientRect().width > 0;   \/\/ omite los ocultos\n          });\n        }\n        function posDe(el) {\n          return el.getBoundingClientRect().left - rail.getBoundingClientRect().left + rail.scrollLeft;\n        }\n        function destino(dir) {\n          var lista = items(), x = rail.scrollLeft, i;\n          if (dir > 0) {\n            for (i = 0; i < lista.length; i++) if (posDe(lista[i]) > x + 2) return posDe(lista[i]);\n            return rail.scrollWidth;\n          }\n          for (i = lista.length - 1; i >= 0; i--) if (posDe(lista[i]) < x - 2) return posDe(lista[i]);\n          return 0;\n        }\n        function sync() {\n          var max = rail.scrollWidth - rail.clientWidth;\n          \/\/ El desvanecido de cada borde se enciende solo cuando por ese lado\n          \/\/ queda contenido: al inicio del riel no se recorta la primera\n          \/\/ tarjeta, y al final tampoco la \u00faltima.\n          rail.classList.toggle('fade-izq', max > 1 && rail.scrollLeft > 1);\n          rail.classList.toggle('fade-der', max > 1 && rail.scrollLeft < max - 1);\n          btns.forEach(function (b) {\n            var dir = parseInt(b.getAttribute('data-car'), 10);\n            b.disabled = max <= 1 || (dir < 0 ? rail.scrollLeft <= 1 : rail.scrollLeft >= max - 1);\n          });\n        }\n\n        var activo = false, x0 = 0, s0 = 0, vel = 0, ultX = 0, ultT = 0, raf = null;\n        function detener() { if (raf) { cancelAnimationFrame(raf); raf = null; } vel = 0; }\n        function inercia() {\n          if (quieto || V_MINIMA > Math.abs(vel)) { sync(); return; }\n          var previo = performance.now();\n          raf = requestAnimationFrame(function paso(t) {\n            var dt = Math.min(32, t - previo); previo = t;\n            var antes = rail.scrollLeft;\n            rail.scrollLeft = antes + vel * dt;\n            vel *= Math.pow(FRICCION, dt \/ 16.67);\n            var tope = 0.4 > Math.abs(rail.scrollLeft - antes) && Math.abs(vel) > V_MINIMA;\n            if (V_MINIMA > Math.abs(vel) || tope) { raf = null; vel = 0; sync(); return; }\n            raf = requestAnimationFrame(paso);\n          });\n        }\n\n        btns.forEach(function (b) {\n          b.addEventListener('click', function () {\n            detener();\n            rail.scrollTo({ left: destino(parseInt(b.getAttribute('data-car'), 10)), behavior: 'smooth' });\n          });\n        });\n        rail.addEventListener('scroll', sync, { passive: true });\n        window.addEventListener('resize', sync);\n\n        rail.addEventListener('pointerdown', function (e) {\n          if (e.pointerType !== 'mouse' || e.button !== 0) return;\n          if (rail.scrollWidth <= rail.clientWidth) return;   \/\/ nada que arrastrar\n          detener();\n          activo = true; x0 = e.clientX; s0 = rail.scrollLeft;\n          ultX = e.clientX; ultT = performance.now();\n          rail.classList.add('is-dragging');\n        });\n        rail.addEventListener('pointermove', function (e) {\n          if (!activo) return;\n          var dx = e.clientX - x0;\n          if (Math.abs(dx) > 3 && !rail.hasPointerCapture(e.pointerId)) rail.setPointerCapture(e.pointerId);\n          var ahora = performance.now(), dt = ahora - ultT;\n          if (dt > 0) {\n            var v = -(e.clientX - ultX) \/ Math.max(DT_MINIMO, dt);\n            vel = vel * 0.7 + v * 0.3;\n            if (vel > V_MAXIMA) vel = V_MAXIMA; else if (-V_MAXIMA > vel) vel = -V_MAXIMA;\n            ultX = e.clientX; ultT = ahora;\n          }\n          rail.scrollLeft = s0 - dx;\n        });\n        function soltar(e) {\n          if (!activo) return;\n          activo = false;\n          rail.classList.remove('is-dragging');\n          if (e && e.pointerId != null && rail.hasPointerCapture(e.pointerId)) rail.releasePointerCapture(e.pointerId);\n          if (performance.now() - ultT > 90) vel = 0;\n          inercia();\n        }\n        rail.addEventListener('pointerup', soltar);\n        rail.addEventListener('pointercancel', soltar);\n        rail.addEventListener('dragstart', function (e) { e.preventDefault(); });\n\n        sync();\n      });\n    })();\n\n    \/\/ ---- Avance animado del pipeline ------------------------------------\n    \/\/ El marcador \u00e1mbar recorre las etapas en bucle. Se detiene fuera de\n    \/\/ pantalla, al pasar el cursor y si el sistema pide movimiento reducido.\n    (function () {\n      var quieto = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n      var PASO = 1500, PAUSA_FINAL = 2600;\n\n      [].forEach.call(root.querySelectorAll('.pipeline'), function (pl) {\n        var pasos = [].filter.call(pl.querySelectorAll('.pipe-step'), function (p) {\n          return !p.classList.contains('is-lost');\n        });\n        if (pasos.length < 2 || quieto) return;\n\n        var i = Math.max(0, pasos.indexOf(pl.querySelector('.pipe-step.is-active')));\n        var t = null, visible = false, encima = false;\n\n        function pintar() {\n          pasos.forEach(function (p, n) {\n            p.classList.toggle('is-active', n === i);\n            p.classList.toggle('is-done', n < i);\n          });\n        }\n        function siguiente() {\n          i = (i + 1) % pasos.length;\n          pintar();\n          programar();\n        }\n        function programar() {\n          clearTimeout(t);\n          if (!visible || encima) return;\n          t = setTimeout(siguiente, i === pasos.length - 1 ? PAUSA_FINAL : PASO);\n        }\n\n        pl.addEventListener('pointerenter', function () { encima = true; clearTimeout(t); });\n        pl.addEventListener('pointerleave', function () { encima = false; programar(); });\n\n        if ('IntersectionObserver' in window) {\n          new IntersectionObserver(function (ents) {\n            visible = ents[0].isIntersecting;\n            programar();\n          }, { threshold: 0.35 }).observe(pl);\n        } else {\n          visible = true; programar();\n        }\n        pintar();\n      });\n    })();\n\n    \/\/ ---- Se\u00f1al de desplazamiento del pipeline ---------------------------\n    (function () {\n      var syncs = [];\n      [].forEach.call(root.querySelectorAll('.pipeline-wrap'), function (wrap) {\n        var box = wrap.querySelector('.pipeline-scroll');\n        if (!box) return;\n        function sync() {\n          var resto = box.scrollWidth - box.clientWidth - box.scrollLeft;\n          wrap.classList.toggle('has-more', resto > 4);\n        }\n        box.addEventListener('scroll', sync, { passive: true });\n        syncs.push(sync);\n        sync();\n      });\n      \/\/ Al abrir una pesta\u00f1a el panel pasa de oculto a visible y hay que remedir.\n      window.addEventListener('resize', function () { syncs.forEach(function (f) { f(); }); });\n      [].forEach.call(root.querySelectorAll('.tab'), function (t) {\n        t.addEventListener('click', function () {\n          setTimeout(function () { syncs.forEach(function (f) { f(); }); }, 30);\n        });\n      });\n    })();\n\n    root.querySelectorAll('.roi-inputs input').forEach(function (el) {\n      el.addEventListener('input', recalc);\n      el.addEventListener('change', recalc);\n    });\n    recalc();\n  })();\n  <\/script>\n\n<script>\n(function () {\n  var root = document.getElementById('ag-zoho');\n  if (!root) return;\n  root.querySelectorAll('[data-module-dialog]').forEach(function (button) {\n    var dialog = document.getElementById(button.dataset.moduleDialog);\n    button.addEventListener('click', function () { dialog.showModal(); });\n    dialog.addEventListener('close', function () { button.focus(); });\n  });\n})();\n<\/script>\n\n  <!-- ============ DESPLEGABLES A LA MEDIDA ============\n       Mejora progresiva: el <select> nativo se queda en el formulario y sigue\n       siendo el que env\u00eda el valor a Zoho. Si este guion no corre \u2014por ejemplo\n       si WordPress filtra las etiquetas de script\u2014 el campo funciona como un\n       desplegable normal y el formulario no se rompe.\n\n       El nativo no se oculta con display:none: un control con `required` que no\n       se puede enfocar bloquea el env\u00edo en Chrome (\u00abAn invalid form control is\n       not focusable\u00bb). Se deja renderizado a 1\u00d71 y transparente, de modo que la\n       validaci\u00f3n del navegador lo puede enfocar y su globo apunta al campo. -->\n  <script>\n  (function () {\n    'use strict';\n    \/\/ Cualquier landing: cada p\u00e1gina tiene una sola ra\u00edz .ag-lp.\n    var root = document.querySelector('.ag-lp');\n    if (!root) return;\n\n    var combos = root.querySelectorAll('select[data-combo]');\n    if (!combos.length) return;\n\n    \/\/ ---- Respuestas sin campo propio en el CRM viajan dentro de Description --\n    \/\/ Zoho no tiene campos para el origen de la landing, el plan elegido ni la\n    \/\/ pregunta de cualificaci\u00f3n de cada p\u00e1gina, as\u00ed que encabezan el texto\n    \/\/ libre, en este orden:\n    \/\/\n    \/\/   Origen: Landing IA          \u2190 data-origen del <form>, si lo lleva\n    \/\/   Plan de inter\u00e9s: Advanced   \u2190 #z-plan, que fija el CTA de cada plan\n    \/\/   Necesidad: Implementar Zoho \u2190 cada <select data-desc-label=\"\u2026\">\n    \/\/\n    \/\/   <texto del visitante>\n    \/\/\n    \/\/ Los selects que viajan as\u00ed no llevan `name`, y #z-plan tampoco: Zoho\n    \/\/ rechaza los campos que no conoce. Se compone al enviar a partir de una\n    \/\/ copia intacta de lo que escribi\u00f3 el visitante: si el env\u00edo se rechaza y\n    \/\/ vuelve a intentarlo, el encabezado no se acumula.\n    (function () {\n      var form = root.querySelector('#contacto form');\n      var desc = form && form.querySelector('textarea[name=\"Description\"]');\n      if (!desc) return;\n      var plan = root.querySelector('#z-plan');\n      var preguntas = [].slice.call(form.querySelectorAll('select[data-desc-label]'));\n      if (plan) {\n        root.addEventListener('click', function (e) {\n          var cta = e.target.closest ? e.target.closest('[data-plan]') : null;\n          if (cta) plan.value = cta.getAttribute('data-plan');\n        });\n      }\n      desc.dataset.txt = desc.value;\n      desc.addEventListener('input', function () { desc.dataset.txt = desc.value; });\n      form.addEventListener('submit', function () {\n        \/\/ Si la validaci\u00f3n va a detener el env\u00edo, no se toca el textarea:\n        \/\/ ver aparecer el encabezado tras un error desconcierta.\n        if (!form.checkValidity()) return;\n        var base = (desc.dataset.txt || '').trim();\n        var lineas = [];\n        if (form.getAttribute('data-origen')) lineas.push('Origen: ' + form.getAttribute('data-origen'));\n        if (plan && plan.value) lineas.push('Plan de inter\u00e9s: ' + plan.value);\n        preguntas.forEach(function (sel) {\n          var op = sel.options[sel.selectedIndex];\n          if (sel.value && op) lineas.push(sel.getAttribute('data-desc-label') + ': ' + op.textContent.trim());\n        });\n        var cabecera = lineas.join('\\n');\n        desc.value = cabecera ? cabecera + (base ? '\\n\\n' + base : '') : base;\n      });\n    })();\n\n    [].forEach.call(combos, function (nativo, n) {\n      var id = nativo.id || 'combo-' + n;\n      var opciones = [].slice.call(nativo.options).filter(function (o) { return o.value !== ''; });\n      var vacia = [].slice.call(nativo.options).filter(function (o) { return o.value === ''; })[0];\n      var textoVacio = vacia ? vacia.textContent : 'Selecciona una opci\u00f3n';\n\n      var caja = document.createElement('div');\n      caja.className = 'combo';\n\n      var boton = document.createElement('button');\n      boton.type = 'button';\n      boton.className = 'combo-btn is-vacio';\n      boton.id = id + '-btn';\n      boton.setAttribute('role', 'combobox');\n      boton.setAttribute('aria-haspopup', 'listbox');\n      boton.setAttribute('aria-expanded', 'false');\n      boton.setAttribute('aria-controls', id + '-lista');\n      var etiqueta = root.querySelector('label[for=\"' + id + '\"]');\n      if (etiqueta) boton.setAttribute('aria-labelledby', etiqueta.id || (etiqueta.id = id + '-label'));\n      var valor = document.createElement('span');\n      valor.className = 'combo-valor';\n      valor.textContent = textoVacio;\n      boton.appendChild(valor);\n\n      var pop = document.createElement('div');\n      pop.className = 'combo-pop';\n      pop.hidden = true;\n\n      var lista = document.createElement('ul');\n      lista.className = 'combo-lista';\n      lista.id = id + '-lista';\n      lista.setAttribute('role', 'listbox');\n\n      var items = opciones.map(function (o, i) {\n        var li = document.createElement('li');\n        li.className = 'combo-op';\n        li.id = id + '-op-' + i;\n        li.setAttribute('role', 'option');\n        li.setAttribute('aria-selected', 'false');\n        li.dataset.valor = o.value;\n        li.textContent = o.textContent;\n        lista.appendChild(li);\n        return li;\n      });\n\n      pop.appendChild(lista);\n      caja.appendChild(boton);\n      caja.appendChild(pop);\n      nativo.parentNode.insertBefore(caja, nativo);\n      caja.appendChild(nativo);\n      nativo.classList.add('combo-nativo');\n      nativo.tabIndex = -1;\n\n      var abierto = false, activo = -1;\n\n      function marcar(i) {\n        activo = i;\n        items.forEach(function (x, j) { x.classList.toggle('is-activo', j === i); });\n        if (i < 0) { boton.removeAttribute('aria-activedescendant'); return; }\n        var li = items[i];\n        boton.setAttribute('aria-activedescendant', li.id);\n        var lr = li.getBoundingClientRect(), cr = lista.getBoundingClientRect();\n        if (lr.bottom > cr.bottom) lista.scrollTop += lr.bottom - cr.bottom;\n        else if (lr.top < cr.top) lista.scrollTop -= cr.top - lr.top;\n      }\n      function mover(paso) {\n        if (!items.length) return;\n        var i = activo + paso;\n        if (i < 0) i = items.length - 1;\n        if (i >= items.length) i = 0;\n        marcar(i);\n      }\n      function elegir(li) {\n        nativo.value = li.dataset.valor;\n        nativo.dispatchEvent(new Event('change', { bubbles: true }));\n        valor.textContent = li.textContent;\n        boton.classList.remove('is-vacio');\n        items.forEach(function (x) { x.setAttribute('aria-selected', String(x === li)); });\n        cerrar(true);\n      }\n      function abrir() {\n        if (abierto) return;\n        abierto = true;\n        pop.hidden = false;\n        boton.setAttribute('aria-expanded', 'true');\n        var sel = items.filter(function (x) { return x.dataset.valor === nativo.value; })[0];\n        marcar(sel ? items.indexOf(sel) : (items.length ? 0 : -1));\n      }\n      function cerrar(devolverFoco) {\n        if (!abierto) return;\n        abierto = false;\n        pop.hidden = true;\n        boton.setAttribute('aria-expanded', 'false');\n        boton.removeAttribute('aria-activedescendant');\n        if (devolverFoco) boton.focus();\n      }\n\n      boton.addEventListener('click', function () { abierto ? cerrar(true) : abrir(); });\n      boton.addEventListener('keydown', function (e) {\n        if (e.key === 'ArrowDown') { e.preventDefault(); abierto ? mover(1) : abrir(); }\n        else if (e.key === 'ArrowUp') { e.preventDefault(); abierto ? mover(-1) : abrir(); }\n        else if (e.key === 'Home' && abierto) { e.preventDefault(); marcar(0); }\n        else if (e.key === 'End' && abierto) { e.preventDefault(); marcar(items.length - 1); }\n        else if (e.key === 'Enter' || e.key === ' ') {\n          e.preventDefault();\n          if (abierto && activo > -1) elegir(items[activo]); else abrir();\n        }\n        else if (e.key === 'Escape' && abierto) { e.preventDefault(); cerrar(true); }\n      });\n      boton.addEventListener('blur', function () { cerrar(false); });\n      lista.addEventListener('mousedown', function (e) { e.preventDefault(); });  \/\/ conserva el foco del bot\u00f3n\n      lista.addEventListener('click', function (e) {\n        var li = e.target.closest('.combo-op');\n        if (li) elegir(li);\n      });\n      lista.addEventListener('mousemove', function (e) {\n        var li = e.target.closest('.combo-op');\n        if (li && items.indexOf(li) !== activo) marcar(items.indexOf(li));\n      });\n      document.addEventListener('click', function (e) {\n        if (abierto && !caja.contains(e.target)) cerrar(false);\n      });\n      nativo.addEventListener('invalid', function () { boton.classList.add('is-invalido'); });\n      nativo.addEventListener('change', function () {\n        if (nativo.value) boton.classList.remove('is-invalido');\n      });\n    });\n  })();\n  <\/script>\n\n  <!-- ============ VALIDACI\u00d3N DEL FORMULARIO ============\n       Sustituye los globos nativos del navegador por mensajes propios, en\n       espa\u00f1ol y con el tono del resto de la p\u00e1gina.\n\n       Mejora progresiva: `novalidate` lo pone este guion, no el HTML. Si no\n       corre, el navegador sigue validando por su cuenta con sus propios\n       mensajes; se pierde el estilo, no la protecci\u00f3n. -->\n  <script>\n  (function () {\n    'use strict';\n    \/\/ Cualquier landing: cada p\u00e1gina tiene una sola ra\u00edz .ag-lp.\n    var root = document.querySelector('.ag-lp');\n    if (!root) return;\n    var form = root.querySelector('#contacto form');\n    if (!form) return;\n\n    var campos = [].slice.call(form.querySelectorAll('[data-msg-vacio]'));\n    if (!campos.length) return;\n    form.setAttribute('novalidate', 'novalidate');\n\n    \/\/ Los combobox a la medida ocultan su <select>: el mensaje se coloca bajo\n    \/\/ la caja y el foco va al bot\u00f3n, que es lo que el visitante ve.\n    function caja(c) { return c.closest('.combo') || c; }\n    function foco(c) {\n      var cb = c.closest('.combo');\n      return cb ? cb.querySelector('.combo-btn') : c;\n    }\n    function mensaje(c) {\n      if (c.validity.valid) return '';\n      if (c.validity.valueMissing) return c.dataset.msgVacio;\n      return c.dataset.msgFormato || c.dataset.msgVacio;\n    }\n    function pintar(c, txt) {\n      var ancla = caja(c);\n      var id = c.id + '-error';\n      var el = document.getElementById(id);\n      if (!txt) {\n        if (el) el.remove();\n        c.removeAttribute('aria-invalid');\n        c.removeAttribute('aria-describedby');\n        ancla.classList.remove('is-error');\n        var b = ancla.querySelector && ancla.querySelector('.combo-btn');\n        if (b) b.classList.remove('is-invalido');\n        return;\n      }\n      if (!el) {\n        el = document.createElement('p');\n        el.className = 'field-error';\n        el.id = id;\n        el.setAttribute('role', 'alert');\n        ancla.parentNode.insertBefore(el, ancla.nextSibling);\n      }\n      el.textContent = txt;\n      c.setAttribute('aria-invalid', 'true');\n      c.setAttribute('aria-describedby', id);\n      ancla.classList.add('is-error');\n      var btn = ancla.querySelector && ancla.querySelector('.combo-btn');\n      if (btn) btn.classList.add('is-invalido');\n    }\n\n    campos.forEach(function (c) {\n      \/\/ El mensaje desaparece en cuanto el campo queda bien, sin esperar a\n      \/\/ reenviar: corregir y seguir viendo el error en rojo desconcierta.\n      var revisar = function () { if (c.validity.valid) pintar(c, ''); };\n      c.addEventListener('input', revisar);\n      c.addEventListener('change', revisar);\n      c.addEventListener('blur', function () { pintar(c, mensaje(c)); }, true);\n    });\n\n    form.addEventListener('submit', function (e) {\n      var primero = null;\n      campos.forEach(function (c) {\n        var txt = mensaje(c);\n        pintar(c, txt);\n        if (txt && !primero) primero = c;\n      });\n      if (primero) {\n        e.preventDefault();\n        var f = foco(primero);\n        f.focus();\n        if (f.scrollIntoView) f.scrollIntoView({ block: 'center', behavior: 'smooth' });\n      }\n    });\n  })();\n  <\/script>\n\n<script>\n  (function () {\n    'use strict';\n    \/\/ Medici\u00f3n de los CTA de salida: Bookings, WhatsApp y llamada. El env\u00edo del\n    \/\/ formulario NO se mide aqu\u00ed \u2014la p\u00e1gina se descarga a media petici\u00f3n hacia\n    \/\/ Zoho\u2014: ya lo cuenta el fragmento de p\u00e1gina de conversi\u00f3n que hay en\n    \/\/ \/landings\/gracias\/, que adem\u00e1s es la prueba de que el alta se cre\u00f3.\n    \/\/\n    \/\/ La p\u00e1gina no conoce ning\u00fan identificador de Google Ads: empuja un evento\n    \/\/ con nombre al dataLayer y deja que GTM decida qu\u00e9 etiqueta dispara, de\n    \/\/ modo que la etiqueta viva en un solo sitio. Si adem\u00e1s est\u00e1 presente el\n    \/\/ fragmento de evento pegado a mano \u2014el que define\n    \/\/ `gtag_report_conversion`\u2014, tambi\u00e9n se llama; conectar las dos rutas a la\n    \/\/ vez contar\u00eda doble.\n    \/\/\n    \/\/ Se llama SIN url a prop\u00f3sito: Bookings y WhatsApp abren en otra pesta\u00f1a y\n    \/\/ los `tel:` no descargan la p\u00e1gina, as\u00ed que nadie necesita que el guion\n    \/\/ retrase la navegaci\u00f3n con `event_callback`.\n    var ACCIONES = [\n      { nombre: 'bookings', sel: 'a[href*=\"bookings.anigami.studio\"]' },\n      { nombre: 'whatsapp', sel: 'a[href*=\"api.whatsapp.com\"], a[href*=\"wa.me\"]' },\n      { nombre: 'llamada',  sel: 'a[href^=\"tel:\"]' }\n    ];\n\n    document.addEventListener('click', function (e) {\n      var origen = e.target;\n      var enlace = origen && origen.closest ? origen.closest('a[href]') : null;\n      if (!enlace) return;\n      for (var i = 0; i !== ACCIONES.length; i++) {\n        if (!enlace.matches(ACCIONES[i].sel)) continue;\n        window.dataLayer = window.dataLayer || [];\n        window.dataLayer.push({\n          event: 'ag_conversion',\n          ag_accion: ACCIONES[i].nombre,\n          ag_destino: enlace.getAttribute('href') || ''\n        });\n        if (typeof window.gtag_report_conversion === 'function') window.gtag_report_conversion();\n        return;\n      }\n    });\n  }());\n<\/script>\n\n\n<\/div>\n\n\n","protected":false},"excerpt":{"rendered":"<p>Dise\u00f1amos y construimos plataformas web, portales y sistemas internos en React y Next.js, integrados al ERP, al CRM y a los sistemas que ya operas.<\/p>","protected":false},"author":1,"featured_media":0,"parent":4181,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-4210","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Desarrollo de Software a la Medida con IA en M\u00e9xico | ANIGAMI<\/title>\n<meta name=\"description\" content=\"Software a la medida del MVP a plataformas enterprise, con React, Next.js e IA. Tambi\u00e9n reforzamos a tu equipo de desarrollo. Agenda un diagn\u00f3stico.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/anigami.studio\/en\/landings\/software\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Desarrollo de Software a la Medida con IA en M\u00e9xico | ANIGAMI\" \/>\n<meta property=\"og:description\" content=\"Software a la medida del MVP a plataformas enterprise, con React, Next.js e IA. Tambi\u00e9n reforzamos a tu equipo de desarrollo. Agenda un diagn\u00f3stico.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/anigami.studio\/en\/landings\/software\/\" \/>\n<meta property=\"og:site_name\" content=\"ANIGAMI Studio\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/ignuscorp\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-08T22:51:52+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/anigami.studio\/wp-content\/uploads\/2025\/07\/anigami-studio-logo-img-w.png\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:site\" content=\"@ignuscorp\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/anigami.studio\\\/landings\\\/software\\\/\",\"url\":\"https:\\\/\\\/anigami.studio\\\/landings\\\/software\\\/\",\"name\":\"Desarrollo de Software a la Medida con IA en M\u00e9xico | ANIGAMI\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/anigami.studio\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/anigami.studio\\\/landings\\\/software\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/anigami.studio\\\/landings\\\/software\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/anigami.studio\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/anigami-studio-logo-img-w.png\",\"datePublished\":\"2026-09-30T00:24:22+00:00\",\"dateModified\":\"2026-10-08T22:51:52+00:00\",\"description\":\"Software a la medida del MVP a plataformas enterprise, con React, Next.js e IA. Tambi\u00e9n reforzamos a tu equipo de desarrollo. Agenda un diagn\u00f3stico.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/anigami.studio\\\/landings\\\/software\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/anigami.studio\\\/landings\\\/software\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/anigami.studio\\\/landings\\\/software\\\/#primaryimage\",\"url\":\"https:\\\/\\\/anigami.studio\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/anigami-studio-logo-img-w.png\",\"contentUrl\":\"https:\\\/\\\/anigami.studio\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/anigami-studio-logo-img-w.png\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/anigami.studio\\\/landings\\\/software\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/anigami.studio\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Landings\",\"item\":\"https:\\\/\\\/anigami.studio\\\/landings\\\/\"},{\"@type\":\"ListItem\",\"position\":3,\"name\":\"Desarrollo de software a la medida con React y Next.js\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/anigami.studio\\\/#website\",\"url\":\"https:\\\/\\\/anigami.studio\\\/\",\"name\":\"ANIGAMI Studio\",\"description\":\"ANIGAMI Studio is your on-demand Software Agency and Zoho Partner\",\"publisher\":{\"@id\":\"https:\\\/\\\/anigami.studio\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/anigami.studio\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/anigami.studio\\\/#organization\",\"name\":\"ANIGAMI Studio\",\"url\":\"https:\\\/\\\/anigami.studio\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/anigami.studio\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/anigami.studio\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/cropped-anigami_studio_imago-1.png\",\"contentUrl\":\"https:\\\/\\\/anigami.studio\\\/wp-content\\\/uploads\\\/2025\\\/07\\\/cropped-anigami_studio_imago-1.png\",\"width\":512,\"height\":512,\"caption\":\"ANIGAMI Studio\"},\"image\":{\"@id\":\"https:\\\/\\\/anigami.studio\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/www.facebook.com\\\/ignuscorp\",\"https:\\\/\\\/x.com\\\/ignuscorp\",\"https:\\\/\\\/www.instagram.com\\\/ignuscorp\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/ignuscorp\"],\"description\":\"ANIGAMI Studio is a Zoho Advanced Partner and software studio with offices in Guadalajara, Mexico and Austin, Texas. We implement Zoho CRM, Books and Zoho One, build AI agents and develop custom software.\",\"email\":\"contacto@anigami.studio\",\"telephone\":\"+52 1 56 2916 2161\",\"address\":[{\"@type\":\"PostalAddress\",\"streetAddress\":\"Calle Marsella 155, Int. 105 A, Col. Americana, Lafayette\",\"addressLocality\":\"Guadalajara\",\"addressRegion\":\"Jalisco\",\"postalCode\":\"44160\",\"addressCountry\":\"MX\"},{\"@type\":\"PostalAddress\",\"streetAddress\":\"2021 Guadalupe Street, Suite 260\",\"addressLocality\":\"Austin\",\"addressRegion\":\"TX\",\"postalCode\":\"78705\",\"addressCountry\":\"US\"}],\"contactPoint\":[{\"@type\":\"ContactPoint\",\"contactType\":\"sales\",\"telephone\":\"+52 1 56 2916 2161\",\"email\":\"contacto@anigami.studio\",\"areaServed\":[\"MX\",\"LATAM\"],\"availableLanguage\":[\"Spanish\",\"English\"]},{\"@type\":\"ContactPoint\",\"contactType\":\"sales\",\"telephone\":\"+1 737 241 2844\",\"email\":\"contacto@anigami.studio\",\"areaServed\":[\"US\"],\"availableLanguage\":[\"English\",\"Spanish\"]}],\"areaServed\":[{\"@type\":\"Country\",\"name\":\"Mexico\"},{\"@type\":\"Country\",\"name\":\"United States\"},{\"@type\":\"Place\",\"name\":\"Latin America\"}],\"knowsAbout\":[\"Zoho CRM\",\"Zoho One\",\"Zoho Books\",\"Zoho implementation\",\"AI agents\",\"Business process automation\",\"Custom software development\",\"React\",\"Next.js\",\"Nearshore software development\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Desarrollo de Software a la Medida con IA en M\u00e9xico | ANIGAMI","description":"Software a la medida del MVP a plataformas enterprise, con React, Next.js e IA. Tambi\u00e9n reforzamos a tu equipo de desarrollo. Agenda un diagn\u00f3stico.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/anigami.studio\/en\/landings\/software\/","og_locale":"en_US","og_type":"article","og_title":"Desarrollo de Software a la Medida con IA en M\u00e9xico | ANIGAMI","og_description":"Software a la medida del MVP a plataformas enterprise, con React, Next.js e IA. Tambi\u00e9n reforzamos a tu equipo de desarrollo. Agenda un diagn\u00f3stico.","og_url":"https:\/\/anigami.studio\/en\/landings\/software\/","og_site_name":"ANIGAMI Studio","article_publisher":"https:\/\/www.facebook.com\/ignuscorp","article_modified_time":"2026-10-08T22:51:52+00:00","og_image":[{"url":"https:\/\/anigami.studio\/wp-content\/uploads\/2025\/07\/anigami-studio-logo-img-w.png","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_site":"@ignuscorp","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/anigami.studio\/landings\/software\/","url":"https:\/\/anigami.studio\/landings\/software\/","name":"Desarrollo de Software a la Medida con IA en M\u00e9xico | ANIGAMI","isPartOf":{"@id":"https:\/\/anigami.studio\/#website"},"primaryImageOfPage":{"@id":"https:\/\/anigami.studio\/landings\/software\/#primaryimage"},"image":{"@id":"https:\/\/anigami.studio\/landings\/software\/#primaryimage"},"thumbnailUrl":"https:\/\/anigami.studio\/wp-content\/uploads\/2025\/07\/anigami-studio-logo-img-w.png","datePublished":"2026-09-30T00:24:22+00:00","dateModified":"2026-10-08T22:51:52+00:00","description":"Software a la medida del MVP a plataformas enterprise, con React, Next.js e IA. Tambi\u00e9n reforzamos a tu equipo de desarrollo. Agenda un diagn\u00f3stico.","breadcrumb":{"@id":"https:\/\/anigami.studio\/landings\/software\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/anigami.studio\/landings\/software\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/anigami.studio\/landings\/software\/#primaryimage","url":"https:\/\/anigami.studio\/wp-content\/uploads\/2025\/07\/anigami-studio-logo-img-w.png","contentUrl":"https:\/\/anigami.studio\/wp-content\/uploads\/2025\/07\/anigami-studio-logo-img-w.png"},{"@type":"BreadcrumbList","@id":"https:\/\/anigami.studio\/landings\/software\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/anigami.studio\/"},{"@type":"ListItem","position":2,"name":"Landings","item":"https:\/\/anigami.studio\/landings\/"},{"@type":"ListItem","position":3,"name":"Desarrollo de software a la medida con React y Next.js"}]},{"@type":"WebSite","@id":"https:\/\/anigami.studio\/#website","url":"https:\/\/anigami.studio\/","name":"ANIGAMI Studio","description":"ANIGAMI Studio is your on-demand Software Agency and Zoho Partner","publisher":{"@id":"https:\/\/anigami.studio\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/anigami.studio\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/anigami.studio\/#organization","name":"ANIGAMI Studio","url":"https:\/\/anigami.studio\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/anigami.studio\/#\/schema\/logo\/image\/","url":"https:\/\/anigami.studio\/wp-content\/uploads\/2025\/07\/cropped-anigami_studio_imago-1.png","contentUrl":"https:\/\/anigami.studio\/wp-content\/uploads\/2025\/07\/cropped-anigami_studio_imago-1.png","width":512,"height":512,"caption":"ANIGAMI Studio"},"image":{"@id":"https:\/\/anigami.studio\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/ignuscorp","https:\/\/x.com\/ignuscorp","https:\/\/www.instagram.com\/ignuscorp","https:\/\/www.linkedin.com\/company\/ignuscorp"],"description":"ANIGAMI Studio is a Zoho Advanced Partner and software studio with offices in Guadalajara, Mexico and Austin, Texas. We implement Zoho CRM, Books and Zoho One, build AI agents and develop custom software.","email":"contacto@anigami.studio","telephone":"+52 1 56 2916 2161","address":[{"@type":"PostalAddress","streetAddress":"Calle Marsella 155, Int. 105 A, Col. Americana, Lafayette","addressLocality":"Guadalajara","addressRegion":"Jalisco","postalCode":"44160","addressCountry":"MX"},{"@type":"PostalAddress","streetAddress":"2021 Guadalupe Street, Suite 260","addressLocality":"Austin","addressRegion":"TX","postalCode":"78705","addressCountry":"US"}],"contactPoint":[{"@type":"ContactPoint","contactType":"sales","telephone":"+52 1 56 2916 2161","email":"contacto@anigami.studio","areaServed":["MX","LATAM"],"availableLanguage":["Spanish","English"]},{"@type":"ContactPoint","contactType":"sales","telephone":"+1 737 241 2844","email":"contacto@anigami.studio","areaServed":["US"],"availableLanguage":["English","Spanish"]}],"areaServed":[{"@type":"Country","name":"Mexico"},{"@type":"Country","name":"United States"},{"@type":"Place","name":"Latin America"}],"knowsAbout":["Zoho CRM","Zoho One","Zoho Books","Zoho implementation","AI agents","Business process automation","Custom software development","React","Next.js","Nearshore software development"]}]}},"_links":{"self":[{"href":"https:\/\/anigami.studio\/en\/wp-json\/wp\/v2\/pages\/4210","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/anigami.studio\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/anigami.studio\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/anigami.studio\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/anigami.studio\/en\/wp-json\/wp\/v2\/comments?post=4210"}],"version-history":[{"count":6,"href":"https:\/\/anigami.studio\/en\/wp-json\/wp\/v2\/pages\/4210\/revisions"}],"predecessor-version":[{"id":4355,"href":"https:\/\/anigami.studio\/en\/wp-json\/wp\/v2\/pages\/4210\/revisions\/4355"}],"up":[{"embeddable":true,"href":"https:\/\/anigami.studio\/en\/wp-json\/wp\/v2\/pages\/4181"}],"wp:attachment":[{"href":"https:\/\/anigami.studio\/en\/wp-json\/wp\/v2\/media?parent=4210"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}