{"id":10894,"date":"2024-02-20T11:17:44","date_gmt":"2024-02-20T14:17:44","guid":{"rendered":"https:\/\/www.tcit.cl\/?p=10894"},"modified":"2026-09-24T15:54:44","modified_gmt":"2026-09-24T18:54:44","slug":"banco-de-chile","status":"publish","type":"post","link":"https:\/\/www.tcit.cl\/ingles\/banco-de-chile\/","title":{"rendered":"Caso de \u00e9xito: Banco de chile"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background hundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:0px;--awb-padding-right:0px;--awb-padding-bottom:0px;--awb-padding-left:0px;--awb-margin-top:0px;--awb-margin-bottom:0px;--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"width:104% !important;max-width:104% !important;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:1.92%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:1.92%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><!-- TCIT \u2014 Caso banco-de-chile: single-paste bundle for the Avada Code Block element.\n     Generated from tcit-case-banco-de-chile.html + shared CSS\/JS. -->\n<link rel=\"preconnect\" href=\"https:\/\/fonts.googleapis.com\"><link rel=\"preconnect\" href=\"https:\/\/fonts.gstatic.com\" crossorigin><link href=\"https:\/\/fonts.googleapis.com\/css2?family=Sora:wght@400;500;600;700;800&display=swap\" rel=\"stylesheet\">\n<style>\n\/* ==========================================================================\n   Avada shield: neutralizes theme typography inside #tcx-root.\n   Avada styles h1-h6, p, a and lists through .post-content \/ .fusion-* selectors;\n   \"#tcx-root :where(...)\" outranks them while staying below every component rule.\n   ========================================================================== *\/\n#tcx-root :where(h1, h2, h3, h4, h5, h6) {\n  font-family: \"Sora\", system-ui, -apple-system, \"Segoe UI\", sans-serif; color: inherit; font-weight: 700; font-size: inherit;\n  font-style: normal; text-transform: none; letter-spacing: -.01em; line-height: 1.25; margin: 0; padding: 0; border: 0; background: none;\n}\n#tcx-root :where(p, li, span, strong, small, em, b, i, label, button, input, select, textarea, a, div, ul, ol, figure, blockquote) {\n  font-family: inherit; letter-spacing: inherit; text-transform: inherit;\n}\n#tcx-root :where(p, ul, ol, li, figure, blockquote) { margin: 0; padding: 0; }\n#tcx-root :where(p) { color: inherit; line-height: 1.6; font-size: inherit; }\n#tcx-root :where(li) { list-style: none; line-height: inherit; }\n#tcx-root :where(a, a:hover, a:focus, a:visited) { color: inherit; text-decoration: none; box-shadow: none; }\n#tcx-root :where(img) { border: 0; box-shadow: none; }\n\n\/* ==========================================================================\n   TCIT Home 2026 \u2014 AI-first landing page\n   Scope: every selector is namespaced under .tcx to avoid collisions with Avada.\n   Font: Sora (required). Palette: #0A182E navy \u00b7 #00FFFF cyan \u00b7 #43B17B green.\n   ========================================================================== *\/\n\n#tcx-root.tcx {\n  --navy: #0A182E;\n  --navy-2: #0F2240;\n  --navy-3: #16305A;\n  --cyan: #00FFFF;\n  --green: #43B17B;\n  --green-2: #5CC994;\n  --ink: #0A182E;\n  --paper: #F5F8FC;\n  --white: #FFFFFF;\n  --muted: #5B6B82;\n  --muted-dark: #A9B8CF;\n  --line: rgba(10, 24, 46, .10);\n  --line-dark: rgba(255, 255, 255, .10);\n  --grad: linear-gradient(120deg, var(--cyan) 0%, var(--green) 100%);\n  --radius: 18px;\n  --radius-sm: 12px;\n  --shadow: 0 18px 50px -20px rgba(10, 24, 46, .35);\n  --ease: cubic-bezier(.2, .8, .2, 1);\n  --container: 1200px;\n  --header-h: 76px;\n\n  font-family: \"Sora\", system-ui, -apple-system, \"Segoe UI\", sans-serif;\n  color: var(--ink);\n  background: var(--paper);\n  line-height: 1.6;\n  font-size: 16px;\n  -webkit-font-smoothing: antialiased;\n  \/* Full-bleed escape from Avada containers *\/\n  width: 100vw;\n  position: relative;\n  left: 50%;\n  margin-left: -50vw;\n  overflow-x: clip;\n}\n#tcx-root.tcx *, #tcx-root.tcx *::before, #tcx-root.tcx *::after { box-sizing: border-box; }\n#tcx-root.tcx img, #tcx-root.tcx svg { display: block; max-width: 100%; }\n#tcx-root a { color: inherit; text-decoration: none; }\n#tcx-root.tcx h1, #tcx-root.tcx h2, #tcx-root.tcx h3, #tcx-root.tcx h4, #tcx-root.tcx p { margin: 0; font-family: inherit; letter-spacing: -.01em; }\n#tcx-root.tcx ul { list-style: none; margin: 0; padding: 0; }\n#tcx-root.tcx button { font-family: inherit; cursor: pointer; }\n#tcx-root.tcx :focus-visible { outline: 2px solid var(--cyan); outline-offset: 3px; border-radius: 6px; }\n\n#tcx-root .tcx-container { width: min(var(--container), 100% - 40px); margin-inline: auto; }\n#tcx-root .tcx-skip { position: absolute; left: -9999px; top: 8px; z-index: 1000; background: var(--cyan); color: var(--navy); padding: 10px 16px; border-radius: 8px; font-weight: 600; }\n#tcx-root .tcx-skip:focus { left: 16px; }\n\n\/* ---------- Typography helpers ---------- *\/\n#tcx-root .tcx-eyebrow {\n  display: inline-flex; align-items: center; gap: 10px;\n  font-size: 12px; font-weight: 600; letter-spacing: .16em; text-transform: uppercase;\n  color: var(--green);\n}\n#tcx-root .tcx-eyebrow::before { content: \"\"; width: 22px; height: 2px; background: var(--grad); border-radius: 2px; }\n#tcx-root .tcx-on-dark .tcx-eyebrow { color: var(--cyan); }\n#tcx-root .tcx-h2 { font-size: clamp(28px, 3.6vw, 44px); line-height: 1.12; font-weight: 700; margin-top: 14px; }\n#tcx-root .tcx-lead { font-size: clamp(16px, 1.3vw, 18px); color: var(--muted); max-width: 640px; margin-top: 16px; }\n#tcx-root .tcx-on-dark .tcx-lead { color: var(--muted-dark); }\n#tcx-root .tcx-grad-text { background: var(--grad); -webkit-background-clip: text; background-clip: text; color: transparent; }\n#tcx-root .tcx-section { padding: clamp(72px, 9vw, 120px) 0; position: relative; }\n#tcx-root .tcx-section-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: flex-end; gap: 24px; margin-bottom: 48px; }\n#tcx-root .tcx-on-dark { background: var(--navy); color: var(--white); }\n\n\/* ---------- Buttons ---------- *\/\n#tcx-root .tcx-btn {\n  --bg: var(--green); --fg: var(--navy);\n  position: relative; display: inline-flex; align-items: center; justify-content: center; gap: 10px;\n  min-height: 48px; padding: 12px 24px; border-radius: 999px; border: 0;\n  background: var(--bg); color: var(--fg) !important; font-weight: 600; font-size: 15px;\n  overflow: hidden; isolation: isolate; white-space: nowrap;\n  transition: transform .35s var(--ease), box-shadow .35s var(--ease);\n}\n#tcx-root .tcx-btn::before {\n  content: \"\"; position: absolute; inset: 0; z-index: -1;\n  background: var(--grad); transform: translateX(-101%); transition: transform .45s var(--ease);\n}\n#tcx-root .tcx-btn:hover { transform: translateY(-2px); box-shadow: 0 12px 30px -10px rgba(0, 255, 255, .55); }\n#tcx-root .tcx-btn:hover::before { transform: translateX(0); }\n#tcx-root .tcx-btn .tcx-arrow { transition: transform .35s var(--ease); }\n#tcx-root .tcx-btn:hover .tcx-arrow { transform: translateX(4px); }\n#tcx-root .tcx-btn--ghost { --bg: transparent; --fg: currentColor; box-shadow: inset 0 0 0 1.5px currentColor; }\n#tcx-root .tcx-on-dark .tcx-btn--ghost, #tcx-root .tcx-hero .tcx-btn--ghost { --fg: var(--white); }\n#tcx-root .tcx-btn--ghost::before { background: rgba(0, 255, 255, .12); }\n#tcx-root .tcx-btn--sm { min-height: 40px; padding: 8px 18px; font-size: 14px; }\n#tcx-root .tcx-link { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; color: var(--green); }\n#tcx-root .tcx-link .tcx-arrow { transition: transform .3s var(--ease); }\n#tcx-root .tcx-link:hover .tcx-arrow { transform: translateX(5px); }\n\n\/* ==========================================================================\n   HEADER\n   ========================================================================== *\/\n#tcx-root .tcx-header {\n  position: fixed; inset: 0 0 auto 0; z-index: 999; height: var(--header-h);\n  color: var(--white); transition: background .35s var(--ease), box-shadow .35s var(--ease), height .35s var(--ease);\n}\nbody.admin-bar #tcx-root .tcx-header { top: 32px; }\n#tcx-root .tcx-header.is-scrolled {\n  --header-h: 66px;\n  background: rgba(10, 24, 46, .82); backdrop-filter: saturate(160%) blur(14px); -webkit-backdrop-filter: saturate(160%) blur(14px);\n  box-shadow: 0 1px 0 var(--line-dark);\n}\n#tcx-root .tcx-header__inner { height: 100%; display: flex; align-items: center; justify-content: space-between; gap: 24px; }\n#tcx-root .tcx-logo img { height: 36px; width: auto; }\n#tcx-root .tcx-nav { display: flex; align-items: center; gap: 4px; }\n#tcx-root .tcx-nav__item { position: relative; }\n#tcx-root .tcx-nav__link {\n  display: inline-flex; align-items: center; gap: 6px; padding: 10px 14px; border-radius: 10px;\n  font-size: 14px; font-weight: 500; color: rgba(255, 255, 255, .86); background: none; border: 0;\n  transition: color .25s, background .25s;\n}\n#tcx-root .tcx-nav__link:hover, #tcx-root .tcx-nav__item.is-open > .tcx-nav__link { color: var(--white); background: rgba(255, 255, 255, .07); }\n#tcx-root .tcx-nav__link .tcx-chev { transition: transform .3s var(--ease); }\n#tcx-root .tcx-nav__item.is-open .tcx-chev, #tcx-root .tcx-nav__item:hover .tcx-chev { transform: rotate(180deg); }\n#tcx-root .tcx-nav__ai { font-size: 10px; font-weight: 700; padding: 2px 6px; border-radius: 6px; background: var(--grad); color: var(--navy); }\n\n#tcx-root .tcx-dropdown {\n  position: absolute; top: calc(100% + 10px); left: 50%; min-width: 240px;\n  background: var(--white); color: var(--ink); border-radius: var(--radius); box-shadow: var(--shadow);\n  padding: 10px; opacity: 0; visibility: hidden; transform: translate(-50%, 8px);\n  transition: opacity .25s var(--ease), transform .3s var(--ease), visibility .25s;\n}\n#tcx-root .tcx-dropdown::before { content: \"\"; position: absolute; inset: -12px 0 auto; height: 12px; }\n#tcx-root .tcx-nav__item:hover > .tcx-dropdown, #tcx-root .tcx-nav__item.is-open > .tcx-dropdown { opacity: 1; visibility: visible; transform: translate(-50%, 0); }\n#tcx-root .tcx-mega { left: 0; transform: translate(0, 8px); }\n#tcx-root .tcx-nav__item:hover > .tcx-mega, #tcx-root .tcx-nav__item.is-open > .tcx-mega { transform: none; }\n#tcx-root .tcx-mega__promo .tcx-btn { white-space: normal; }\n#tcx-root .tcx-dropdown a { display: block; padding: 10px 12px; border-radius: 10px; font-size: 14px; font-weight: 500; transition: background .2s, color .2s; }\n#tcx-root .tcx-dropdown a:hover { background: var(--paper); color: var(--green); }\n\n\/* Mega menu *\/\n#tcx-root .tcx-mega { width: min(880px, 92vw); padding: 22px; display: grid; grid-template-columns: repeat(3, 1fr) 1.1fr; gap: 18px; }\n#tcx-root .tcx-mega__col h4 { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--muted); margin: 4px 12px 8px; font-weight: 600; }\n#tcx-root .tcx-mega__col a { display: grid; grid-template-columns: 34px 1fr; gap: 10px; align-items: start; padding: 10px 12px; }\n#tcx-root .tcx-mega__col a strong { display: block; font-size: 14px; font-weight: 600; line-height: 1.3; }\n#tcx-root .tcx-mega__col a span { display: block; font-size: 12px; color: var(--muted); font-weight: 400; line-height: 1.4; margin-top: 2px; }\n#tcx-root .tcx-mega__icon { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: rgba(67, 177, 123, .12); color: var(--green); transition: background .25s, color .25s; }\n#tcx-root .tcx-mega__col a:hover .tcx-mega__icon { background: var(--navy); color: var(--cyan); }\n#tcx-root .tcx-mega__icon svg { width: 18px; height: 18px; }\n#tcx-root .tcx-mega__promo {\n  border-radius: 14px; padding: 20px; color: var(--white); position: relative; overflow: hidden;\n  background: radial-gradient(120% 90% at 100% 0%, rgba(0, 255, 255, .28), transparent 60%), var(--navy);\n  display: flex; flex-direction: column; justify-content: space-between; gap: 16px;\n}\n#tcx-root .tcx-mega__promo p { font-size: 13px; color: var(--muted-dark); }\n#tcx-root .tcx-mega__promo strong { font-size: 17px; line-height: 1.3; display: block; margin: 6px 0; }\n\n#tcx-root .tcx-header__actions { display: flex; align-items: center; gap: 10px; }\n#tcx-root .tcx-lang { display: inline-flex; border-radius: 999px; box-shadow: inset 0 0 0 1px var(--line-dark); padding: 3px; }\n#tcx-root .tcx-lang a { font-size: 12px; font-weight: 600; padding: 5px 10px; border-radius: 999px; color: rgba(255, 255, 255, .7); transition: background .2s, color .2s; }\n#tcx-root .tcx-lang a[aria-current=\"true\"] { background: rgba(255, 255, 255, .12); color: var(--white); }\n#tcx-root .tcx-lang a:hover { color: var(--cyan); }\n#tcx-root .tcx-burger { display: none; width: 44px; height: 44px; border-radius: 12px; border: 0; background: rgba(255, 255, 255, .08); color: var(--white); align-items: center; justify-content: center; }\n#tcx-root .tcx-burger span, #tcx-root .tcx-burger span::before, #tcx-root .tcx-burger span::after { display: block; width: 20px; height: 2px; background: currentColor; border-radius: 2px; position: relative; transition: transform .3s var(--ease), background .3s; }\n#tcx-root .tcx-burger span::before, #tcx-root .tcx-burger span::after { content: \"\"; position: absolute; left: 0; }\n#tcx-root .tcx-burger span::before { top: -6px; } #tcx-root .tcx-burger span::after { top: 6px; }\n#tcx-root .tcx-burger[aria-expanded=\"true\"] span { background: transparent; }\n#tcx-root .tcx-burger[aria-expanded=\"true\"] span::before { transform: translateY(6px) rotate(45deg); }\n#tcx-root .tcx-burger[aria-expanded=\"true\"] span::after { transform: translateY(-6px) rotate(-45deg); }\n\n\/* Mobile drawer *\/\n#tcx-root .tcx-drawer {\n  position: fixed; inset: var(--header-h) 0 0 0; z-index: 998; background: var(--navy); color: var(--white);\n  padding: 20px 20px 40px; overflow-y: auto; transform: translateX(100%); transition: transform .45s var(--ease);\n}\n#tcx-root .tcx-drawer.is-open { transform: none; }\n#tcx-root .tcx-drawer details { border-bottom: 1px solid var(--line-dark); }\n#tcx-root .tcx-drawer summary, #tcx-root .tcx-drawer > nav > a:not(.tcx-btn) { display: flex; justify-content: space-between; align-items: center; padding: 16px 4px; font-weight: 600; font-size: 17px; list-style: none; cursor: pointer; }\n#tcx-root .tcx-drawer > nav > a:not(.tcx-btn) { border-bottom: 1px solid var(--line-dark); }\n#tcx-root .tcx-drawer summary::-webkit-details-marker { display: none; }\n#tcx-root .tcx-drawer details[open] summary .tcx-chev { transform: rotate(180deg); }\n#tcx-root .tcx-drawer details a { display: block; padding: 10px 12px; color: var(--muted-dark); font-size: 15px; }\n#tcx-root .tcx-drawer details a:hover { color: var(--cyan); }\n#tcx-root .tcx-drawer .tcx-btn { width: 100%; margin-top: 24px; }\nbody.tcx-lock { overflow: hidden; }\n\n\/* ==========================================================================\n   HERO\n   ========================================================================== *\/\n#tcx-root .tcx-hero {\n  position: relative; min-height: min(100svh, 920px); display: flex; align-items: center;\n  padding: calc(var(--header-h) + 48px) 0 72px; color: var(--white); overflow: hidden;\n  background:\n    radial-gradient(60% 60% at 85% 20%, rgba(0, 255, 255, .16), transparent 60%),\n    radial-gradient(50% 60% at 10% 90%, rgba(67, 177, 123, .20), transparent 60%),\n    var(--navy);\n}\n#tcx-root .tcx-hero__canvas { position: absolute; inset: 0; width: 100%; height: 100%; opacity: .75; }\n#tcx-root .tcx-hero__grid {\n  position: absolute; inset: 0; pointer-events: none; opacity: .35;\n  background-image: linear-gradient(var(--line-dark) 1px, transparent 1px), linear-gradient(90deg, var(--line-dark) 1px, transparent 1px);\n  background-size: 64px 64px; mask-image: radial-gradient(70% 60% at 50% 40%, #000 30%, transparent 80%);\n  -webkit-mask-image: radial-gradient(70% 60% at 50% 40%, #000 30%, transparent 80%);\n}\n#tcx-root .tcx-hero__inner { position: relative; display: grid; grid-template-columns: 1.1fr .9fr; gap: 56px; align-items: center; }\n#tcx-root .tcx-hero__badge {\n  display: inline-flex; align-items: center; gap: 10px; padding: 6px 14px 6px 6px; border-radius: 999px;\n  background: rgba(255, 255, 255, .06); box-shadow: inset 0 0 0 1px var(--line-dark); font-size: 13px; color: var(--muted-dark);\n}\n#tcx-root .tcx-hero__badge b { background: var(--grad); color: var(--navy); padding: 3px 10px; border-radius: 999px; font-size: 11px; letter-spacing: .08em; }\n#tcx-root .tcx-hero h1 { font-size: clamp(36px, 5.4vw, 68px); line-height: 1.04; font-weight: 700; letter-spacing: -.03em; margin-top: 22px; }\n#tcx-root .tcx-hero__rotator { display: inline-block; position: relative; min-width: 6ch; }\n#tcx-root .tcx-hero__rotator span { display: inline-block; animation: tcx-word-in .6s var(--ease) both; }\n@keyframes tcx-word-in { from { opacity: 0; transform: translateY(.4em); filter: blur(6px); } to { opacity: 1; transform: none; filter: none; } }\n#tcx-root .tcx-hero__sub { margin-top: 28px; font-size: clamp(16px, 1.4vw, 19px); color: var(--muted-dark); max-width: 580px; }\n#tcx-root .tcx-hero__ctas { display: flex; flex-wrap: wrap; gap: 14px; margin-top: 34px; }\n#tcx-root .tcx-hero__proof { margin-top: 44px; display: flex; flex-wrap: wrap; gap: 28px; }\n#tcx-root .tcx-hero__proof div { display: flex; flex-direction: column; }\n#tcx-root .tcx-hero__proof strong { font-size: 26px; font-weight: 700; }\n#tcx-root .tcx-hero__proof div > span { font-size: 13px; color: var(--muted-dark); }\n\n\/* Hero console card *\/\n#tcx-root .tcx-console {\n  position: relative; border-radius: 22px; padding: 1px;\n  background: linear-gradient(140deg, rgba(0, 255, 255, .55), rgba(67, 177, 123, .15) 40%, rgba(255, 255, 255, .06));\n  box-shadow: 0 40px 90px -30px rgba(0, 255, 255, .35);\n  animation: tcx-float 7s ease-in-out infinite;\n}\n@keyframes tcx-float { 50% { transform: translateY(-10px); } }\n#tcx-root .tcx-console__body { border-radius: 21px; background: rgba(10, 24, 46, .92); padding: 22px; backdrop-filter: blur(10px); }\n#tcx-root .tcx-console__top { display: flex; align-items: center; gap: 8px; margin-bottom: 18px; }\n#tcx-root .tcx-console__top i { width: 10px; height: 10px; border-radius: 50%; background: rgba(255, 255, 255, .18); }\n#tcx-root .tcx-console__top em { margin-left: auto; font-style: normal; font-size: 12px; color: var(--muted-dark); display: flex; align-items: center; gap: 6px; }\n#tcx-root .tcx-console__top em::before { content: \"\"; width: 7px; height: 7px; border-radius: 50%; background: var(--green); box-shadow: 0 0 0 0 rgba(67, 177, 123, .6); animation: tcx-pulse 2s infinite; }\n@keyframes tcx-pulse { 70% { box-shadow: 0 0 0 8px rgba(67, 177, 123, 0); } 100% { box-shadow: 0 0 0 0 rgba(67, 177, 123, 0); } }\n#tcx-root .tcx-steps { display: grid; gap: 10px; }\n#tcx-root .tcx-step {\n  display: grid; grid-template-columns: 34px 1fr auto; gap: 12px; align-items: center; padding: 12px 14px;\n  border-radius: 14px; background: rgba(255, 255, 255, .04); box-shadow: inset 0 0 0 1px var(--line-dark);\n  opacity: .45; transition: opacity .4s, background .4s, box-shadow .4s;\n}\n#tcx-root .tcx-step.is-active { opacity: 1; background: rgba(0, 255, 255, .07); box-shadow: inset 0 0 0 1px rgba(0, 255, 255, .35); }\n#tcx-root .tcx-step.is-done { opacity: 1; }\n#tcx-root .tcx-step__ico { width: 34px; height: 34px; border-radius: 10px; display: grid; place-items: center; background: rgba(255, 255, 255, .06); color: var(--cyan); }\n#tcx-root .tcx-step__ico svg { width: 18px; height: 18px; }\n#tcx-root .tcx-step strong { display: block; font-size: 14px; font-weight: 600; }\n#tcx-root .tcx-step small { display: block; font-size: 12px; color: var(--muted-dark); }\n#tcx-root .tcx-step__state { font-size: 11px; font-weight: 600; padding: 3px 8px; border-radius: 6px; color: var(--muted-dark); background: rgba(255, 255, 255, .06); }\n#tcx-root .tcx-step.is-active .tcx-step__state { color: var(--navy); background: var(--cyan); }\n#tcx-root .tcx-step.is-done .tcx-step__state { color: var(--navy); background: var(--green); }\n#tcx-root .tcx-console__foot { margin-top: 16px; font-family: ui-monospace, Menlo, monospace; font-size: 12px; color: var(--green-2); min-height: 18px; }\n#tcx-root .tcx-console__foot::after { content: \"\u258d\"; animation: tcx-blink 1s steps(1) infinite; color: var(--cyan); }\n@keyframes tcx-blink { 50% { opacity: 0; } }\n\n\/* ---------- Logos \/ trust bar ---------- *\/\n#tcx-root .tcx-trust { background: var(--navy); color: var(--muted-dark); border-top: 1px solid var(--line-dark); padding: 28px 0; }\n#tcx-root .tcx-trust__inner { display: flex; align-items: center; gap: 36px; }\n#tcx-root .tcx-trust p { font-size: 13px; white-space: nowrap; }\n#tcx-root .tcx-marquee { overflow: hidden; flex: 1; mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); -webkit-mask-image: linear-gradient(90deg, transparent, #000 10%, #000 90%, transparent); }\n#tcx-root .tcx-marquee__track { display: flex; gap: 56px; width: max-content; animation: tcx-marquee 32s linear infinite; }\n#tcx-root .tcx-marquee:hover .tcx-marquee__track { animation-play-state: paused; }\n#tcx-root .tcx-marquee__track a, #tcx-root .tcx-marquee__track span { font-size: 18px; font-weight: 700; color: rgba(255, 255, 255, .55); white-space: nowrap; transition: color .25s; }\n#tcx-root .tcx-marquee__track a:hover { color: var(--cyan); }\n@keyframes tcx-marquee { to { transform: translateX(-50%); } }\n\n\/* ---------- Event bar (optional, toggled from JS config) ---------- *\/\n#tcx-root .tcx-event { display: none; }\n#tcx-root .tcx-event.is-on { display: block; background: var(--grad); color: var(--navy); font-size: 14px; font-weight: 500; }\n#tcx-root .tcx-event .tcx-container { display: flex; justify-content: center; align-items: center; gap: 14px; padding: 10px 0; flex-wrap: wrap; text-align: center; }\n#tcx-root .tcx-event a { font-weight: 700; text-decoration: underline; text-underline-offset: 3px; }\n\n\/* ==========================================================================\n   SERVICES\n   ========================================================================== *\/\n#tcx-root .tcx-filters { display: inline-flex; flex-wrap: wrap; gap: 6px; padding: 5px; border-radius: 999px; background: var(--white); box-shadow: inset 0 0 0 1px var(--line); }\n#tcx-root .tcx-filters button { border: 0; background: none; padding: 9px 16px; border-radius: 999px; font-size: 14px; font-weight: 500; color: var(--muted); transition: background .25s, color .25s; }\n#tcx-root .tcx-filters button:hover { color: var(--ink); }\n#tcx-root .tcx-filters button[aria-pressed=\"true\"] { background: var(--navy); color: var(--white); }\n#tcx-root .tcx-services { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; }\n#tcx-root .tcx-card {\n  --mx: 50%; --my: 50%;\n  position: relative; display: flex; flex-direction: column; gap: 14px; padding: 28px; border-radius: var(--radius);\n  background: var(--white); box-shadow: inset 0 0 0 1px var(--line); overflow: hidden; isolation: isolate;\n  transition: transform .45s var(--ease), box-shadow .45s var(--ease), opacity .35s;\n}\n#tcx-root .tcx-card::before {\n  content: \"\"; position: absolute; inset: 0; z-index: -1; opacity: 0; transition: opacity .4s;\n  background: radial-gradient(420px circle at var(--mx) var(--my), rgba(0, 255, 255, .14), transparent 45%);\n}\n#tcx-root .tcx-card::after { content: \"\"; position: absolute; left: 0; right: 0; bottom: 0; height: 3px; background: var(--grad); transform: scaleX(0); transform-origin: left; transition: transform .5s var(--ease); }\n#tcx-root .tcx-card:hover { transform: translateY(-6px); box-shadow: inset 0 0 0 1px rgba(67, 177, 123, .35), var(--shadow); }\n#tcx-root .tcx-card:hover::before { opacity: 1; }\n#tcx-root .tcx-card:hover::after { transform: scaleX(1); }\n#tcx-root .tcx-card.is-hidden { display: none; }\n#tcx-root .tcx-card__icon { width: 52px; height: 52px; border-radius: 14px; display: grid; place-items: center; background: var(--navy); color: var(--cyan); transition: transform .45s var(--ease), background .45s; }\n#tcx-root .tcx-card:hover .tcx-card__icon { transform: rotate(-6deg) scale(1.06); background: var(--green); color: var(--navy); }\n#tcx-root .tcx-card__icon svg { width: 26px; height: 26px; }\n#tcx-root .tcx-card h3 { font-size: 19px; line-height: 1.3; font-weight: 700; }\n#tcx-root .tcx-card p { font-size: 14.5px; color: var(--muted); }\n#tcx-root .tcx-card__ai { font-size: 13px; padding: 10px 12px; border-radius: 10px; background: var(--paper); color: var(--ink); display: flex; gap: 8px; align-items: flex-start; }\n#tcx-root .tcx-card__ai b { flex: none; font-size: 10px; letter-spacing: .08em; padding: 2px 6px; border-radius: 5px; background: var(--navy); color: var(--cyan); margin-top: 2px; }\n#tcx-root .tcx-card .tcx-link { margin-top: auto; padding-top: 6px; font-size: 14px; }\n#tcx-root .tcx-card--feature { grid-column: span 2; background: var(--navy); color: var(--white); box-shadow: none; }\n#tcx-root .tcx-card--feature p { color: var(--muted-dark); }\n#tcx-root .tcx-card--feature .tcx-card__ai { background: rgba(255, 255, 255, .06); color: var(--white); }\n#tcx-root .tcx-card--feature .tcx-card__icon { background: var(--grad); color: var(--navy); }\n#tcx-root .tcx-card--feature .tcx-link { color: var(--cyan); }\n#tcx-root .tcx-chips { display: flex; flex-wrap: wrap; gap: 8px; }\n#tcx-root .tcx-chip { font-size: 12px; font-weight: 500; padding: 5px 11px; border-radius: 999px; background: rgba(255, 255, 255, .07); box-shadow: inset 0 0 0 1px var(--line-dark); color: var(--white); }\n#tcx-root .tcx-services__cta { display: flex; justify-content: center; margin-top: 44px; }\n\n\/* ==========================================================================\n   BOT FIX-IT (product highlight)\n   ========================================================================== *\/\n#tcx-root .tcx-product { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }\n#tcx-root .tcx-flow { position: relative; display: grid; gap: 14px; }\n#tcx-root .tcx-flow__node {\n  display: flex; gap: 14px; align-items: center; padding: 16px 18px; border-radius: 16px; background: rgba(255, 255, 255, .04);\n  box-shadow: inset 0 0 0 1px var(--line-dark); transition: transform .35s var(--ease), box-shadow .35s;\n}\n#tcx-root .tcx-flow__node:hover { transform: translateX(6px); box-shadow: inset 0 0 0 1px rgba(0, 255, 255, .45); }\n#tcx-root .tcx-flow__node span { flex: none; width: 34px; height: 34px; border-radius: 50%; display: grid; place-items: center; font-weight: 700; font-size: 14px; background: var(--grad); color: var(--navy); }\n#tcx-root .tcx-flow__node strong { display: block; font-size: 15px; }\n#tcx-root .tcx-flow__node small { color: var(--muted-dark); font-size: 13px; }\n#tcx-root .tcx-flow::before { content: \"\"; position: absolute; left: 34px; top: 24px; bottom: 24px; width: 2px; background: linear-gradient(var(--cyan), var(--green)); opacity: .35; z-index: -1; }\n#tcx-root .tcx-product__list { margin-top: 26px; display: grid; gap: 12px; }\n#tcx-root .tcx-product__list li { display: flex; gap: 12px; color: var(--muted-dark); font-size: 15px; }\n#tcx-root .tcx-product__list li::before { content: \"\"; flex: none; width: 20px; height: 20px; margin-top: 2px; border-radius: 50%; background: var(--green) url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 24 24' fill='none' stroke='%230A182E' stroke-width='3'%3E%3Cpath d='M5 12l5 5 9-10'\/%3E%3C\/svg%3E\") center\/12px no-repeat; }\n#tcx-root .tcx-product .tcx-hero__ctas { margin-top: 30px; }\n\n\/* ==========================================================================\n   TCIT PATH\n   ========================================================================== *\/\n#tcx-root .tcx-path { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; position: relative; counter-reset: path; }\n#tcx-root .tcx-path__line { position: absolute; top: 27px; left: 6%; right: 6%; height: 2px; background: var(--line); overflow: hidden; }\n#tcx-root .tcx-path__line::after { content: \"\"; position: absolute; inset: 0; background: var(--grad); transform: scaleX(0); transform-origin: left; transition: transform 1.6s var(--ease); }\n#tcx-root .tcx-path.is-in .tcx-path__line::after { transform: scaleX(1); }\n#tcx-root .tcx-path__step { position: relative; padding-top: 76px; }\n#tcx-root .tcx-path__step::before {\n  counter-increment: path; content: \"0\" counter(path);\n  position: absolute; top: 0; left: 0; width: 56px; height: 56px; border-radius: 16px; display: grid; place-items: center;\n  font-weight: 700; background: var(--white); box-shadow: inset 0 0 0 1px var(--line), 0 10px 25px -12px rgba(10, 24, 46, .3);\n  transition: background .35s, color .35s, transform .35s var(--ease);\n}\n#tcx-root .tcx-path__step:hover::before { background: var(--navy); color: var(--cyan); transform: translateY(-4px); }\n#tcx-root .tcx-path__step h3 { font-size: 18px; font-weight: 700; }\n#tcx-root .tcx-path__step p { margin-top: 8px; font-size: 14.5px; color: var(--muted); }\n#tcx-root .tcx-path__step em { display: inline-block; margin-top: 12px; font-style: normal; font-size: 12px; font-weight: 600; color: var(--green); }\n\n\/* ==========================================================================\n   WHY TCIT \/ STATS\n   ========================================================================== *\/\n#tcx-root .tcx-why { display: grid; grid-template-columns: .9fr 1.1fr; gap: 56px; align-items: start; }\n#tcx-root .tcx-why__grid { display: grid; grid-template-columns: repeat(2, 1fr); gap: 16px; }\n#tcx-root .tcx-why__item { padding: 24px; border-radius: var(--radius); background: rgba(255, 255, 255, .04); box-shadow: inset 0 0 0 1px var(--line-dark); transition: transform .4s var(--ease), background .4s; }\n#tcx-root .tcx-why__item:hover { transform: translateY(-4px); background: rgba(0, 255, 255, .06); }\n#tcx-root .tcx-why__item strong { display: block; font-size: 40px; line-height: 1; font-weight: 700; }\n#tcx-root .tcx-why__item h3 { font-size: 16px; font-weight: 600; margin-top: 12px; }\n#tcx-root .tcx-why__item p { font-size: 14px; color: var(--muted-dark); margin-top: 6px; }\n\n\/* ==========================================================================\n   CASES\n   ========================================================================== *\/\n#tcx-root .tcx-cases { display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }\n#tcx-root .tcx-case {\n  position: relative; min-height: 280px; border-radius: var(--radius); padding: 26px; overflow: hidden; color: var(--white);\n  display: flex; flex-direction: column; justify-content: flex-end; gap: 8px; background: var(--navy); isolation: isolate;\n  transition: transform .45s var(--ease);\n}\n#tcx-root .tcx-case::before { content: \"\"; position: absolute; inset: 0; z-index: -1; background: radial-gradient(90% 70% at 100% 0%, rgba(0, 255, 255, .25), transparent 60%); transition: transform .8s var(--ease), opacity .5s; }\n#tcx-root .tcx-case:nth-child(2)::before { background: radial-gradient(90% 70% at 0% 0%, rgba(67, 177, 123, .35), transparent 60%); }\n#tcx-root .tcx-case:nth-child(3)::before { background: radial-gradient(90% 70% at 100% 100%, rgba(0, 255, 255, .22), transparent 60%); }\n#tcx-root .tcx-case:nth-child(4)::before { background: radial-gradient(90% 70% at 0% 100%, rgba(67, 177, 123, .3), transparent 60%); }\n#tcx-root .tcx-case:hover { transform: translateY(-6px); }\n#tcx-root .tcx-case:hover::before { transform: scale(1.3); }\n#tcx-root .tcx-case__sector { font-size: 12px; font-weight: 600; letter-spacing: .1em; text-transform: uppercase; color: var(--cyan); }\n#tcx-root .tcx-case h3 { font-size: 24px; font-weight: 700; }\n#tcx-root .tcx-case p { font-size: 14px; color: var(--muted-dark); }\n#tcx-root .tcx-case .tcx-link { color: var(--white); margin-top: 8px; opacity: .7; transition: opacity .3s; }\n#tcx-root .tcx-case:hover .tcx-link { opacity: 1; color: var(--cyan); }\n\n\/* ==========================================================================\n   TECH MARQUEE\n   ========================================================================== *\/\n#tcx-root .tcx-tech { padding: 28px 0 0; }\n#tcx-root .tcx-tech .tcx-marquee__track { animation-duration: 40s; }\n#tcx-root .tcx-tech .tcx-marquee__track span {\n  font-size: 15px; font-weight: 600; color: var(--ink); padding: 12px 20px; border-radius: 999px; background: var(--white);\n  box-shadow: inset 0 0 0 1px var(--line);\n}\n#tcx-root .tcx-tech .tcx-marquee--rev .tcx-marquee__track { animation-direction: reverse; }\n#tcx-root .tcx-tech .tcx-marquee + .tcx-marquee { margin-top: 14px; }\n\n\/* ==========================================================================\n   FORMS (HubSpot embed skin) \u2014 ebook + contact\n   ========================================================================== *\/\n#tcx-root .tcx-ebook { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }\n#tcx-root .tcx-ebook__cover {\n  aspect-ratio: 4 \/ 5; max-width: 380px; margin-inline: auto; border-radius: 22px; padding: 32px; color: var(--white);\n  display: flex; flex-direction: column; justify-content: space-between; position: relative; overflow: hidden;\n  background: radial-gradient(90% 70% at 100% 0%, rgba(0, 255, 255, .35), transparent 60%), radial-gradient(80% 60% at 0% 100%, rgba(67, 177, 123, .45), transparent 60%), var(--navy);\n  box-shadow: 30px 40px 80px -30px rgba(10, 24, 46, .55); transform: perspective(900px) rotateY(-10deg) rotateX(4deg);\n  transition: transform .6s var(--ease);\n}\n#tcx-root .tcx-ebook__cover:hover { transform: perspective(900px) rotateY(0) rotateX(0) translateY(-6px); }\n#tcx-root .tcx-ebook__cover small { font-size: 12px; letter-spacing: .14em; text-transform: uppercase; color: var(--cyan); }\n#tcx-root .tcx-ebook__cover strong { font-size: 34px; line-height: 1.1; }\n#tcx-root .tcx-ebook__cover > span { font-size: 13px; color: var(--muted-dark); }\n\n#tcx-root .tcx-formcard { background: var(--white); border-radius: 22px; padding: clamp(22px, 3vw, 36px); box-shadow: var(--shadow); color: var(--ink); position: relative; }\n#tcx-root .tcx-formcard h3 { font-size: 22px; font-weight: 700; }\n#tcx-root .tcx-formcard > p { font-size: 14px; color: var(--muted); margin-top: 6px; margin-bottom: 18px; }\n#tcx-root .tcx-form-slot { min-height: 360px; position: relative; }\n#tcx-root .tcx-form-slot.is-loading::before { \/* skeleton while the HubSpot script loads *\/\n  content: \"\"; position: absolute; inset: 0; border-radius: 12px;\n  background: repeating-linear-gradient(180deg, var(--paper) 0 46px, transparent 46px 70px);\n  animation: tcx-shimmer 1.4s ease-in-out infinite;\n}\n@keyframes tcx-shimmer { 50% { opacity: .45; } }\n#tcx-root .tcx-form-fallback { font-size: 14px; color: var(--muted); }\n#tcx-root .tcx-form-fallback a { color: var(--green); font-weight: 600; text-decoration: underline; }\n\n\/* HubSpot legacy (raw HTML) form skin \u2014 applies when embed uses css:\"\" *\/\n#tcx-root.tcx .hs-form fieldset { max-width: none !important; }\n#tcx-root.tcx .hs-form .hs-form-field { margin-bottom: 14px; }\n#tcx-root.tcx .hs-form fieldset.form-columns-2 .hs-form-field { padding-right: 10px; }\n#tcx-root.tcx .hs-form label { font-family: inherit !important; font-size: 13px !important; font-weight: 600; color: var(--ink) !important; display: block; margin-bottom: 6px; }\n#tcx-root.tcx .hs-form .hs-input:not([type=\"checkbox\"]):not([type=\"radio\"]) {\n  width: 100% !important; height: auto !important; min-height: 46px !important; padding: 11px 14px !important; border-radius: 12px !important; border: 1.5px solid var(--line) !important;\n  background: var(--paper) !important; font-family: inherit !important; font-size: 15px !important; line-height: 1.4 !important; color: var(--ink) !important; transition: border-color .2s, box-shadow .2s, background .2s;\n}\n#tcx-root.tcx .hs-form textarea.hs-input { min-height: 110px !important; resize: vertical; }\n#tcx-root.tcx .hs-form .hs-input:focus { outline: 0; border-color: var(--green) !important; background: var(--white) !important; box-shadow: 0 0 0 4px rgba(67, 177, 123, .15); }\n#tcx-root.tcx .hs-form .hs-fieldtype-intl-phone { display: flex; gap: 8px; }\n#tcx-root.tcx .tcx-formcard .hs-form .hs-fieldtype-intl-phone.hs-input.hs-input { border: 0 !important; padding: 0 !important; background: none !important; min-height: 0 !important; box-shadow: none !important; }\n#tcx-root.tcx .hs-form .hs-fieldtype-intl-phone select { flex: 0 0 44% !important; width: 44% !important; }\n#tcx-root.tcx .hs-form .hs-fieldtype-intl-phone input { flex: 1 1 auto !important; }\n#tcx-root.tcx .hs-form .hs-error-msgs label, #tcx-root.tcx .hs-form .hs-error-msg { color: #D6455D; font-size: 12px; font-weight: 500; }\n#tcx-root.tcx .hs-form .legal-consent-container, #tcx-root.tcx .hs-form .hs-richtext { font-size: 12px; color: var(--muted); }\n#tcx-root.tcx .hs-form .hs-submit .hs-button {\n  width: 100% !important; min-height: 50px !important; border: 0 !important; border-radius: 999px !important; background: var(--green) !important; color: var(--navy) !important;\n  font-family: inherit !important; font-weight: 700 !important; font-size: 15px !important; padding: 12px 24px !important; text-transform: none !important; cursor: pointer; transition: transform .3s var(--ease), box-shadow .3s, background .3s;\n}\n#tcx-root.tcx .hs-form .hs-submit .hs-button:hover { transform: translateY(-2px); background: var(--green-2) !important; box-shadow: 0 12px 30px -10px rgba(67, 177, 123, .7); }\n#tcx-root.tcx .submitted-message { padding: 24px; border-radius: 14px; background: rgba(67, 177, 123, .12); color: var(--ink); font-weight: 500; }\n\n\/* Contact *\/\n#tcx-root .tcx-contact { display: grid; grid-template-columns: .95fr 1.05fr; gap: 56px; align-items: start; }\n#tcx-root .tcx-contact__points { margin-top: 30px; display: grid; gap: 16px; }\n#tcx-root .tcx-contact__points li { display: grid; grid-template-columns: 44px 1fr; gap: 14px; }\n#tcx-root .tcx-contact__points li > span { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; background: rgba(0, 255, 255, .08); color: var(--cyan); }\n#tcx-root .tcx-contact__points strong { display: block; font-size: 15px; }\n#tcx-root .tcx-contact__points small { color: var(--muted-dark); font-size: 14px; }\n\n\/* Partners strip *\/\n#tcx-root .tcx-partners { border-radius: 24px; padding: clamp(28px, 4vw, 48px); display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 24px; background: var(--white); box-shadow: inset 0 0 0 1px var(--line); position: relative; overflow: hidden; }\n#tcx-root .tcx-partners::after { content: \"\"; position: absolute; right: -80px; top: -80px; width: 260px; height: 260px; border-radius: 50%; background: radial-gradient(circle, rgba(0, 255, 255, .25), transparent 70%); transition: transform .8s var(--ease); }\n#tcx-root .tcx-partners:hover::after { transform: scale(1.4); }\n#tcx-root .tcx-partners h3 { font-size: clamp(20px, 2.2vw, 28px); font-weight: 700; }\n#tcx-root .tcx-partners p { color: var(--muted); margin-top: 6px; }\n\n\/* ==========================================================================\n   FOOTER\n   ========================================================================== *\/\n#tcx-root .tcx-footer { background: #07111F; color: var(--muted-dark); padding: 80px 0 32px; position: relative; overflow: hidden; }\n#tcx-root .tcx-footer::before { content: \"\"; position: absolute; top: 0; left: 0; right: 0; height: 1px; background: var(--grad); opacity: .6; }\n#tcx-root .tcx-footer__top { display: grid; grid-template-columns: 1.4fr repeat(3, 1fr); gap: 40px; }\n#tcx-root .tcx-footer__brand img { height: 38px; width: auto; }\n#tcx-root .tcx-footer__brand p { margin-top: 18px; font-size: 14px; max-width: 320px; }\n#tcx-root .tcx-footer h4 { color: var(--white); font-size: 14px; font-weight: 600; margin-bottom: 16px; }\n#tcx-root .tcx-footer li + li { margin-top: 10px; }\n#tcx-root .tcx-footer a { font-size: 14px; position: relative; transition: color .25s; }\n#tcx-root .tcx-footer a:not(.tcx-btn):not(.tcx-social a)::after { content: \"\"; position: absolute; left: 0; bottom: -2px; width: 100%; height: 1px; background: var(--cyan); transform: scaleX(0); transform-origin: left; transition: transform .35s var(--ease); }\n#tcx-root .tcx-footer a:hover { color: var(--cyan); }\n#tcx-root .tcx-footer a:hover::after { transform: scaleX(1); }\n#tcx-root .tcx-footer .tcx-btn { margin-top: 20px; }\n#tcx-root .tcx-social { display: flex; gap: 10px; margin-top: 22px; }\n#tcx-root .tcx-social a { width: 40px; height: 40px; border-radius: 12px; display: grid; place-items: center; background: rgba(255, 255, 255, .06); color: var(--white); transition: background .3s, color .3s, transform .3s var(--ease); }\n#tcx-root .tcx-social a:hover { background: var(--cyan); color: var(--navy); transform: translateY(-3px); }\n#tcx-root .tcx-social svg { width: 18px; height: 18px; }\n#tcx-root .tcx-footer__word { font-size: clamp(64px, 16vw, 220px); font-weight: 800; line-height: .8; letter-spacing: -.05em; margin: 60px 0 0; color: transparent; -webkit-text-stroke: 1px rgba(255, 255, 255, .08); user-select: none; white-space: nowrap; }\n#tcx-root .tcx-footer__bottom { display: flex; flex-wrap: wrap; justify-content: space-between; gap: 16px; padding-top: 24px; margin-top: 24px; border-top: 1px solid var(--line-dark); font-size: 13px; }\n#tcx-root .tcx-totop { position: fixed; right: 20px; bottom: 20px; z-index: 50; width: 46px; height: 46px; border-radius: 14px; border: 0; background: var(--navy); color: var(--cyan); display: grid; place-items: center; box-shadow: var(--shadow); opacity: 0; transform: translateY(12px); pointer-events: none; transition: opacity .3s, transform .3s var(--ease), background .3s; }\n#tcx-root .tcx-totop.is-on { opacity: 1; transform: none; pointer-events: auto; }\n#tcx-root .tcx-totop:hover { background: var(--green); color: var(--navy); }\n\n\/* ==========================================================================\n   REVEAL ON SCROLL\n   ========================================================================== *\/\n#tcx-root.tcx-js [data-reveal] { opacity: 0; transform: translateY(26px); transition: opacity .8s var(--ease), transform .8s var(--ease); transition-delay: var(--d, 0s); }\n#tcx-root.tcx-js [data-reveal].is-in { opacity: 1; transform: none; }\n\n\/* ==========================================================================\n   RESPONSIVE\n   ========================================================================== *\/\n@media (max-width: 1100px) {\n  #tcx-root .tcx-nav, #tcx-root .tcx-header__actions .tcx-lang, #tcx-root .tcx-header__actions .tcx-btn { display: none; }\n  #tcx-root .tcx-burger { display: inline-flex; }\n  #tcx-root .tcx-services { grid-template-columns: repeat(2, 1fr); }\n  #tcx-root .tcx-cases { grid-template-columns: repeat(2, 1fr); }\n  #tcx-root .tcx-footer__top { grid-template-columns: 1fr 1fr; }\n}\n@media (max-width: 900px) {\n  #tcx-root .tcx-hero__inner, #tcx-root .tcx-product, #tcx-root .tcx-why, #tcx-root .tcx-ebook, #tcx-root .tcx-contact { grid-template-columns: 1fr; gap: 40px; }\n  #tcx-root .tcx-path { grid-template-columns: 1fr 1fr; row-gap: 36px; }\n  #tcx-root .tcx-path__line { display: none; }\n  #tcx-root .tcx-trust__inner { flex-direction: column; align-items: flex-start; gap: 14px; }\n  #tcx-root .tcx-trust .tcx-marquee { width: 100%; }\n}\n@media (max-width: 640px) {\n  #tcx-root .tcx-services, #tcx-root .tcx-cases, #tcx-root .tcx-why__grid, #tcx-root .tcx-path { grid-template-columns: 1fr; }\n  #tcx-root .tcx-card--feature { grid-column: auto; }\n  #tcx-root .tcx-footer__top { grid-template-columns: 1fr; }\n  #tcx-root .tcx-hero__ctas .tcx-btn { width: 100%; }\n  #tcx-root .tcx-filters { border-radius: 16px; }\n  #tcx-root.tcx .hs-form fieldset.form-columns-2 .hs-form-field { width: 100% !important; float: none !important; padding-right: 0; }\n  #tcx-root .tcx-console { animation: none; }\n  #tcx-root .tcx-hero__badge { font-size: 12px; }\n  #tcx-root .tcx-hero__proof { display: grid; grid-template-columns: 1fr 1fr; gap: 18px; }\n  #tcx-root .tcx-hero__proof strong { font-size: 20px; }\n}\n@media (prefers-reduced-motion: reduce) {\n  #tcx-root.tcx *, #tcx-root.tcx *::before, #tcx-root.tcx *::after { animation-duration: .01ms !important; animation-iteration-count: 1 !important; transition-duration: .01ms !important; }\n  #tcx-root.tcx-js [data-reveal] { opacity: 1; transform: none; }\n}\n\n\/* ==========================================================================\n   v2 \u2014 feedback round (single cyan accent, glass forms, mascot, tech stack,\n   partners rotator, background video, atom cursor)\n   ========================================================================== *\/\n\n\/* Single-color highlight for titles: cyan only *\/\n#tcx-root .tcx-hl { color: var(--cyan); }\n\/* On light backgrounds cyan text is unreadable \u2192 navy text with a cyan marker *\/\n#tcx-root .tcx-section:not(.tcx-on-dark) .tcx-hl {\n  color: var(--navy);\n  background: linear-gradient(transparent 58%, rgba(0, 255, 255, .55) 58%, rgba(0, 255, 255, .55) 92%, transparent 92%);\n  padding: 0 .08em;\n}\n#tcx-root .tcx-hero__badge b { background: var(--cyan); }\n#tcx-root .tcx-nav__ai { background: var(--cyan); }\n#tcx-root .tcx-why__item strong { color: var(--cyan); }\n\n\/* Canvas \/ video backgrounds inside dark sections *\/\n#tcx-root .tcx-has-canvas, #tcx-root .tcx-has-video, #tcx-root .tcx-glow { overflow: hidden; }\n#tcx-root .tcx-has-canvas > .tcx-container, #tcx-root .tcx-has-video > .tcx-container, #tcx-root .tcx-glow > .tcx-container { position: relative; z-index: 1; }\n#tcx-root .tcx-has-canvas .tcx-hero__canvas { opacity: .55; }\n#tcx-root .tcx-bgvideo { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; opacity: 0; transition: opacity 1.2s var(--ease); }\n#tcx-root .tcx-bgvideo.is-playing { opacity: .55; }\n#tcx-root .tcx-bgvideo__shade { position: absolute; inset: 0; background: linear-gradient(90deg, rgba(10, 24, 46, .92) 0%, rgba(10, 24, 46, .6) 55%, rgba(10, 24, 46, .75) 100%); }\n#tcx-root .tcx-has-video .tcx-why__item { background: rgba(10, 24, 46, .45); backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px); }\n#tcx-root .tcx-glow::before, #tcx-root .tcx-glow::after { content: \"\"; position: absolute; width: 520px; height: 520px; border-radius: 50%; filter: blur(40px); pointer-events: none; }\n#tcx-root .tcx-glow::before { top: -160px; right: -120px; background: radial-gradient(circle, rgba(0, 255, 255, .22), transparent 65%); }\n#tcx-root .tcx-glow::after { bottom: -200px; left: -160px; background: radial-gradient(circle, rgba(67, 177, 123, .22), transparent 65%); }\n\n\/* ---------- Glass form card ---------- *\/\n#tcx-root .tcx-glass {\n  background: linear-gradient(145deg, rgba(255, 255, 255, .10), rgba(255, 255, 255, .03)) !important;\n  backdrop-filter: blur(22px) saturate(160%); -webkit-backdrop-filter: blur(22px) saturate(160%);\n  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .14), 0 30px 80px -30px rgba(0, 0, 0, .6) !important;\n  color: var(--white) !important;\n}\n#tcx-root .tcx-glass::before { content: \"\"; position: absolute; inset: 0; border-radius: inherit; pointer-events: none; background: radial-gradient(120% 60% at 0% 0%, rgba(0, 255, 255, .12), transparent 55%); }\n#tcx-root .tcx-glass h3 { color: var(--white); }\n#tcx-root .tcx-glass > p { color: var(--muted-dark) !important; }\n#tcx-root.tcx .tcx-glass .hs-form label, #tcx-root.tcx .tcx-glass .hs-form legend { color: rgba(255, 255, 255, .88) !important; }\n#tcx-root.tcx .tcx-glass .hs-form .hs-input:not([type=\"checkbox\"]):not([type=\"radio\"]) {\n  background: rgba(255, 255, 255, .06) !important; border-color: rgba(255, 255, 255, .16) !important; color: var(--white) !important;\n}\n#tcx-root.tcx .tcx-glass .hs-form .hs-input::placeholder { color: rgba(255, 255, 255, .45); }\n#tcx-root.tcx .tcx-glass .hs-form .hs-input:focus { background: rgba(255, 255, 255, .10) !important; border-color: var(--cyan) !important; box-shadow: 0 0 0 4px rgba(0, 255, 255, .15) !important; }\n#tcx-root.tcx .tcx-glass .hs-form select.hs-input option { color: var(--navy); background: var(--white); }\n#tcx-root.tcx .tcx-glass .hs-form .legal-consent-container, #tcx-root.tcx .tcx-glass .hs-form .hs-richtext, #tcx-root.tcx .tcx-glass .hs-form .hs-richtext p { color: var(--muted-dark) !important; }\n#tcx-root.tcx .tcx-glass .hs-form .hs-submit .hs-button:hover { background: var(--cyan) !important; box-shadow: 0 12px 30px -10px rgba(0, 255, 255, .6); }\n#tcx-root.tcx .tcx-glass .submitted-message { background: rgba(0, 255, 255, .08); color: var(--white); }\n#tcx-root .tcx-glass .tcx-form-slot.is-loading::before { background: repeating-linear-gradient(180deg, rgba(255, 255, 255, .07) 0 46px, transparent 46px 70px); }\n\n\/* ---------- Mascot ---------- *\/\n#tcx-root .tcx-mascot { pointer-events: none; user-select: none; filter: drop-shadow(0 30px 40px rgba(0, 0, 0, .35)); }\n#tcx-root .tcx-mascot--path { width: clamp(120px, 14vw, 190px); height: auto; margin-bottom: -60px; animation: tcx-float 8s ease-in-out infinite; }\n#tcx-root .tcx-mascot--fixit {\n  position: absolute; right: -40px; bottom: -40px; width: 230px; height: 258px; object-fit: cover; object-position: 22% 100%;\n  z-index: -1; opacity: .95; animation: tcx-float 9s ease-in-out infinite;\n}\n#tcx-root .tcx-flow { padding-right: 150px; }\n#tcx-root .tcx-mascot--contact { width: min(340px, 80%); height: auto; margin: 36px 0 0 -10px; animation: tcx-float 8s ease-in-out infinite; filter: drop-shadow(0 30px 50px rgba(0, 255, 255, .18)); }\n#tcx-root .tcx-ebook__cover { aspect-ratio: 4 \/ 5; justify-content: flex-start; padding-bottom: 0; }\n#tcx-root .tcx-ebook__cover .tcx-ebook__text { display: flex; flex-direction: column; gap: 10px; position: relative; z-index: 1; }\n#tcx-root .tcx-ebook__mascot {\n  position: absolute; bottom: -8px; right: -22px; width: 78%; height: auto; transition: transform .6s var(--ease);\n  filter: drop-shadow(0 20px 30px rgba(0, 0, 0, .45));\n}\n#tcx-root .tcx-ebook__cover:hover .tcx-ebook__mascot { transform: translateY(-8px) rotate(-2deg); }\n#tcx-root .tcx-ebook .tcx-lead { color: var(--muted-dark); }\n\n\/* ---------- Technologies ---------- *\/\n#tcx-root .tcx-techgrid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 18px; }\n#tcx-root .tcx-techcard {\n  padding: 22px 22px 20px; border-radius: var(--radius); background: var(--white); box-shadow: inset 0 0 0 1px var(--line);\n  transition: transform .4s var(--ease), box-shadow .4s var(--ease);\n}\n#tcx-root .tcx-techcard:hover { transform: translateY(-5px); box-shadow: inset 0 0 0 1px rgba(0, 255, 255, .6), var(--shadow); }\n#tcx-root .tcx-techcard h3 { font-size: 16px; font-weight: 700; margin-bottom: 16px; }\n#tcx-root .tcx-techcard ul { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; }\n#tcx-root .tcx-techcard li {\n  width: 58px; height: 46px; border-radius: 12px; display: grid; place-items: center; background: var(--paper);\n  transition: transform .3s var(--ease), background .3s;\n}\n#tcx-root .tcx-techcard li:hover { transform: translateY(-3px) scale(1.08); background: rgba(0, 255, 255, .12); }\n#tcx-root .tcx-techcard img { max-width: 40px; max-height: 30px; width: auto; height: auto; object-fit: contain; filter: grayscale(1); opacity: .7; transition: filter .3s, opacity .3s; }\n#tcx-root .tcx-techcard:hover img { filter: none; opacity: 1; }\n\n\/* ---------- Partners (rotating logos) ---------- *\/\n#tcx-root .tcx-section-head--center { justify-content: center; text-align: center; }\n#tcx-root .tcx-section-head--center .tcx-lead { margin-inline: auto; }\n#tcx-root .tcx-logos { display: grid; grid-template-columns: repeat(6, 1fr); gap: 16px; }\n#tcx-root .tcx-logos li { height: 96px; }\n#tcx-root .tcx-logos li[hidden] { display: none; }\n#tcx-root .tcx-logos a {\n  height: 100%; display: grid; place-items: center; padding: 18px; border-radius: 16px; background: rgba(255, 255, 255, .03);\n  box-shadow: inset 0 0 0 1px var(--line-dark); transition: background .35s, box-shadow .35s, transform .35s var(--ease);\n}\n#tcx-root .tcx-logos a:hover { background: rgba(0, 255, 255, .07); box-shadow: inset 0 0 0 1px rgba(0, 255, 255, .45); transform: translateY(-4px); }\n#tcx-root .tcx-logos img {\n  max-width: 100%; max-height: 44px; width: auto; height: auto; object-fit: contain;\n  filter: brightness(0) invert(1); opacity: .75; transition: opacity .6s var(--ease), transform .6s var(--ease), filter .3s;\n}\n#tcx-root .tcx-logos a:hover img { opacity: 1; }\n#tcx-root .tcx-logos .is-swapping img { opacity: 0; transform: scale(.85); }\n#tcx-root .tcx-miti { margin-top: 48px; padding: 28px 32px; border-radius: 20px; display: flex; flex-wrap: wrap; align-items: center; gap: 28px; background: rgba(255, 255, 255, .04); box-shadow: inset 0 0 0 1px var(--line-dark); }\n#tcx-root .tcx-miti img { height: 64px; width: auto; filter: brightness(0) invert(1); }\n#tcx-root .tcx-miti p { flex: 1; min-width: 220px; font-size: clamp(16px, 1.6vw, 20px); color: var(--muted-dark); }\n#tcx-root .tcx-miti strong { color: var(--white); }\n\n\/* ---------- Atom cursor (desktop only, shown when the pointer is idle) ---------- *\/\n#tcx-root .tcx-atom { position: fixed; left: 0; top: 0; z-index: 10000; pointer-events: none; opacity: 0; transform: translate(-50%, -50%) scale(.4); transition: opacity .35s var(--ease), transform .45s var(--ease); }\n#tcx-root .tcx-atom.is-on { opacity: 1; transform: translate(-50%, -50%) scale(1); }\n#tcx-root .tcx-atom svg { overflow: visible; filter: drop-shadow(0 0 6px rgba(0, 255, 255, .6)); }\n#tcx-root .tcx-atom ellipse { fill: none; stroke: var(--cyan); stroke-width: 1.3; opacity: .7; }\n#tcx-root .tcx-atom__e { fill: var(--cyan); }\n#tcx-root .tcx-atom__n { fill: var(--green); }\n#tcx-root .tcx-atom.is-on svg { animation: tcx-spin 6s linear infinite; }\n@keyframes tcx-spin { to { transform: rotate(360deg); } }\nhtml.tcx-cursor-idle, html.tcx-cursor-idle * { cursor: none !important; }\n\n@media (max-width: 1100px) {\n  #tcx-root .tcx-logos { grid-template-columns: repeat(4, 1fr); }\n  #tcx-root .tcx-techgrid { grid-template-columns: repeat(2, 1fr); }\n}\n@media (max-width: 900px) {\n  #tcx-root .tcx-flow { padding-right: 0; }\n  #tcx-root .tcx-mascot--fixit { display: none; }\n  #tcx-root .tcx-mascot--path { margin-bottom: 0; }\n  #tcx-root .tcx-mascot--contact { width: 220px; }\n}\n@media (max-width: 640px) {\n  #tcx-root .tcx-logos { grid-template-columns: repeat(2, 1fr); }\n  #tcx-root .tcx-techgrid { grid-template-columns: 1fr; }\n  #tcx-root .tcx-mascot--path { display: none; }\n  #tcx-root .tcx-miti { justify-content: center; text-align: center; }\n}\n\n\/* v2 polish *\/\n#tcx-root .tcx-on-dark .tcx-ebook__cover {\n  background: radial-gradient(90% 60% at 100% 0%, rgba(0, 255, 255, .30), transparent 60%), radial-gradient(80% 60% at 0% 100%, rgba(67, 177, 123, .35), transparent 60%), var(--navy-2);\n  box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .12), 30px 40px 80px -30px rgba(0, 0, 0, .7);\n}\n#tcx-root .tcx-ebook__mascot { width: 56%; right: -6px; bottom: 0; }\n#tcx-root .tcx-techcard img { filter: none; opacity: 1; }\n\n\/* v3 feedback *\/\n\/* Highlights are cyan text everywhere (no marker) *\/\n#tcx-root .tcx-section:not(.tcx-on-dark) .tcx-hl { color: var(--cyan); background: none; padding: 0; }\n\/* Bot Fix-It: same interactive background as the hero *\/\n#tcx-root .tcx-has-canvas { background: radial-gradient(60% 60% at 85% 20%, rgba(0, 255, 255, .14), transparent 60%), radial-gradient(50% 60% at 10% 90%, rgba(67, 177, 123, .16), transparent 60%), var(--navy); }\n#tcx-root .tcx-has-canvas .tcx-hero__canvas { opacity: .75; }\n#tcx-root .tcx-flow { padding-right: 0; }\n\/* Ebook: small note bottom-left *\/\n#tcx-root .tcx-ebook__note { position: absolute; left: 28px; bottom: 22px; z-index: 2; max-width: 44%; font-size: 11px !important; line-height: 1.35; color: var(--muted-dark); }\n\/* Contact mascot: bigger and flush with the section bottom edge *\/\n#tcx-root #tcx-contacto { padding-bottom: clamp(72px, 9vw, 120px); }\n#tcx-root .tcx-mascot--contact {\n  position: absolute; bottom: 0; left: max(20px, calc((100% - var(--container)) \/ 2 - 20px)); z-index: 0;\n  width: clamp(360px, 32vw, 520px); height: auto; margin: 0; animation: none;\n}\n@media (max-width: 900px) {\n  #tcx-root #tcx-contacto { padding-bottom: 0; }\n  #tcx-root .tcx-mascot--contact { position: relative; left: auto; display: block; width: min(360px, 86%); margin: 32px auto 0; }\n}\n\n\/* v4 feedback *\/\n\/* Light backgrounds: highlights in brand navy only (cyan reserved for dark backgrounds) *\/\n#tcx-root .tcx-section:not(.tcx-on-dark) .tcx-hl { color: var(--navy); background: none; padding: 0; }\n\/* Technologies: wider container, logos in a single row, no grey tiles *\/\n\/* container keeps the standard width so it aligns with the other sections *\/\n#tcx-root .tcx-techcard ul { flex-wrap: nowrap; gap: 12px; justify-content: flex-start; }\n#tcx-root .tcx-techcard li { flex: 0 1 52px; min-width: 0; width: auto; height: 40px; background: none; border-radius: 0; }\n#tcx-root .tcx-techcard li:hover { background: none; transform: translateY(-3px) scale(1.12); }\n#tcx-root .tcx-techcard img { max-width: 100%; max-height: 32px; }\n\n\/* v5 \u2014 hide Avada's \"to top\" button on this page only (the block ships its own).\n   The TranslatePress floating language switcher is intentionally left visible. *\/\nbody .to-top-container { display: none !important; }\n\/* Keep the TranslatePress switcher above the block's layers (header, drawer, to-top button) *\/\nbody .trp-floating-switcher { z-index: 1000 !important; width: auto !important; min-width: 120px; }\n\n\/* v6 \u2014 partners: 4 logos, staggered fade in \/ out loop (no JS rotation needed) *\/\n#tcx-root .tcx-logos { grid-template-columns: repeat(4, 1fr); max-width: 980px; margin-inline: auto; }\n#tcx-root .tcx-logos li { height: 110px; }\n#tcx-root .tcx-logos img { max-height: 52px; animation: tcx-logo-cycle 8s ease-in-out infinite; animation-delay: calc(var(--i, 0) * 2s); }\n#tcx-root .tcx-logos a:hover img { animation-play-state: paused; opacity: 1; }\n@keyframes tcx-logo-cycle { 0%, 100% { opacity: .9; transform: none; } 45% { opacity: .9; transform: none; } 60% { opacity: .15; transform: scale(.9); } 75% { opacity: .9; transform: none; } }\n@media (max-width: 640px) { #tcx-root .tcx-logos { grid-template-columns: repeat(2, 1fr); } }\n\/* Center the 4-logo grid and compensate the transparent padding baked into some PNGs *\/\n#tcx-root.tcx ul.tcx-logos { margin-left: auto; margin-right: auto; }\n#tcx-root.tcx .tcx-logos a { overflow: hidden; }\n#tcx-root.tcx .tcx-logos li:nth-child(1) img { max-height: 54px; }\n#tcx-root.tcx .tcx-logos li:nth-child(2) img { max-height: none; height: 78px; }\n#tcx-root.tcx .tcx-logos li:nth-child(3) img { max-height: none; height: 120px; }\n#tcx-root.tcx .tcx-logos li:nth-child(4) img { max-height: none; height: 104px; }\n@media (max-width: 640px) {\n  #tcx-root.tcx .tcx-logos li:nth-child(2) img { height: 60px; }\n  #tcx-root.tcx .tcx-logos li:nth-child(3) img { height: 96px; }\n  #tcx-root.tcx .tcx-logos li:nth-child(4) img { height: 80px; }\n}\n#tcx-root.tcx .tcx-logos li:nth-child(2) img { margin: -12px 0; }\n#tcx-root.tcx .tcx-logos li:nth-child(3) img { margin: -34px 0; }\n#tcx-root.tcx .tcx-logos li:nth-child(4) img { margin: -28px 0; }\n@media (max-width: 640px) {\n  #tcx-root.tcx .tcx-logos li:nth-child(2) img { margin: -8px 0; }\n  #tcx-root.tcx .tcx-logos li:nth-child(3) img { margin: -26px 0; }\n  #tcx-root.tcx .tcx-logos li:nth-child(4) img { margin: -20px 0; }\n}\n\n\/* v8 \u2014 technology logos: greyscale by default, original colors on hover of each logo *\/\n#tcx-root.tcx .tcx-techcard img { filter: grayscale(1); opacity: .55; transition: filter .35s var(--ease), opacity .35s var(--ease), transform .35s var(--ease); }\n#tcx-root.tcx .tcx-techcard:hover img { filter: grayscale(1); opacity: .7; }\n#tcx-root.tcx .tcx-techcard li:hover img, #tcx-root.tcx .tcx-techcard li:focus-within img { filter: none; opacity: 1; }\n\n\n\/* ==========================================================================\n   Desarrollo de software page \u2014 components on top of the shared TCIT system\n   ========================================================================== *\/\n\n\/* Extra icons used on this page are inlined in the sprite *\/\n\n\/* ---------- Page hero ---------- *\/\n#tcx-root .tcx-hero--page { min-height: min(86svh, 760px); }\n#tcx-root .tcx-hero__photo {\n  position: absolute; right: 0; top: 0; height: 100%; width: 62%; object-fit: cover; object-position: 70% 30%;\n  opacity: .55; mix-blend-mode: screen;\n  -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 45%); mask-image: linear-gradient(90deg, transparent 0%, #000 45%);\n}\n#tcx-root .tcx-hero--page .tcx-container { position: relative; z-index: 1; }\n#tcx-root .tcx-hero__copy { max-width: 720px; }\n#tcx-root .tcx-hero--page h1 { font-size: clamp(36px, 5.2vw, 66px); }\n\n\/* ---------- \u00bfQu\u00e9 hacemos? ---------- *\/\n#tcx-root .tcx-intro { display: grid; grid-template-columns: .8fr 1.2fr; gap: 56px; align-items: center; }\n#tcx-root .tcx-intro__robot { width: min(360px, 90%); height: auto; margin-inline: auto; animation: tcx-float 7s ease-in-out infinite; filter: drop-shadow(0 30px 40px rgba(10, 24, 46, .18)); }\n#tcx-root .tcx-intro .tcx-lead { max-width: 680px; }\n\n\/* ---------- Adopci\u00f3n tecnol\u00f3gica ---------- *\/\n#tcx-root .tcx-adopt { position: relative; display: grid; grid-template-columns: repeat(4, 1fr); gap: 20px; }\n#tcx-root .tcx-adopt__line { position: absolute; left: 8%; right: 8%; top: 52px; height: 2px; background: var(--line-dark); overflow: hidden; }\n#tcx-root .tcx-adopt__line::after { content: \"\"; position: absolute; inset: 0; background: linear-gradient(90deg, var(--cyan), var(--green)); transform: scaleX(0); transform-origin: left; transition: transform 1.6s var(--ease); }\n#tcx-root .tcx-adopt.is-in .tcx-adopt__line::after { transform: scaleX(1); }\n#tcx-root .tcx-adopt__card {\n  position: relative; padding: 28px 24px; border-radius: var(--radius); background: rgba(255, 255, 255, .04);\n  box-shadow: inset 0 0 0 1px var(--line-dark); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px);\n  transition: transform .45s var(--ease), background .45s, box-shadow .45s;\n}\n#tcx-root .tcx-adopt__card:hover { transform: translateY(-8px); background: rgba(0, 255, 255, .06); box-shadow: inset 0 0 0 1px rgba(0, 255, 255, .45), 0 30px 60px -30px rgba(0, 255, 255, .35); }\n#tcx-root .tcx-adopt__icon { position: relative; z-index: 1; width: 52px; height: 52px; border-radius: 16px; display: grid; place-items: center; background: var(--navy-2); color: var(--cyan); box-shadow: inset 0 0 0 1px rgba(0, 255, 255, .35); transition: background .4s, color .4s, transform .4s var(--ease); }\n#tcx-root .tcx-adopt__card:hover .tcx-adopt__icon { background: var(--cyan); color: var(--navy); transform: rotate(-6deg) scale(1.06); }\n#tcx-root .tcx-adopt__icon svg { width: 24px; height: 24px; }\n#tcx-root .tcx-adopt__num { position: absolute; top: 24px; right: 24px; font-size: 13px; font-weight: 700; color: var(--muted-dark); letter-spacing: .1em; }\n#tcx-root .tcx-adopt__card h3 { margin-top: 20px; font-size: 19px; line-height: 1.25; color: var(--white); }\n#tcx-root .tcx-adopt__card p { margin-top: 12px; font-size: 14.5px; color: var(--muted-dark); }\n\n\/* ---------- \u00bfQu\u00e9 ofrecemos? ---------- *\/\n#tcx-root .tcx-offer { display: grid; grid-template-columns: repeat(2, 1fr); gap: 20px; max-width: 980px; margin-inline: auto; }\n#tcx-root .tcx-offer .tcx-card--feature { grid-column: auto; }\n\n\/* ---------- Clients ---------- *\/\n#tcx-root .tcx-clients__inner { display: grid; grid-template-columns: .55fr 1.45fr; gap: 40px; align-items: end; }\n#tcx-root .tcx-clients__robot { width: 100%; max-width: 300px; height: auto; margin-bottom: -120px; align-self: end; }\n#tcx-root .tcx-clients { overflow: hidden; }\n#tcx-root .tcx-clients__claim { font-size: clamp(20px, 2.2vw, 28px); line-height: 1.35; font-weight: 500; color: var(--navy); margin-bottom: 28px !important; }\n#tcx-root .tcx-clients__claim strong { font-weight: 700; }\n#tcx-root.tcx ul.tcx-clientgrid { display: grid; grid-template-columns: repeat(7, 1fr); gap: 10px; padding: 18px; border-radius: 20px; background: var(--white); box-shadow: inset 0 0 0 1px var(--line); }\n#tcx-root .tcx-clientgrid li { height: 58px; display: grid; place-items: center; border-radius: 10px; transition: background .3s; }\n#tcx-root .tcx-clientgrid li:hover { background: var(--paper); }\n#tcx-root .tcx-clientgrid img { max-width: 86%; max-height: 38px; width: auto; height: auto; object-fit: contain; filter: grayscale(1); opacity: .6; mix-blend-mode: multiply; transition: filter .35s, opacity .35s, transform .35s var(--ease); }\n#tcx-root .tcx-clientgrid li:hover img { filter: none; opacity: 1; transform: scale(1.08); }\n\n\/* ---------- Nuestros procesos ---------- *\/\n#tcx-root .tcx-process { display: grid; grid-template-columns: 1fr 1fr; gap: 56px; align-items: center; }\n#tcx-root.tcx ol.tcx-pr-steps { margin-top: 28px; display: grid; gap: 14px; counter-reset: none; }\n#tcx-root .tcx-pr-steps li { display: grid; grid-template-columns: 44px 1fr; gap: 14px; padding: 16px 18px; border-radius: 16px; background: rgba(255, 255, 255, .04); box-shadow: inset 0 0 0 1px var(--line-dark); transition: background .35s, box-shadow .35s, transform .35s var(--ease); }\n#tcx-root .tcx-pr-steps li:hover { transform: translateX(6px); background: rgba(0, 255, 255, .06); box-shadow: inset 0 0 0 1px rgba(0, 255, 255, .4); }\n#tcx-root .tcx-pr-steps li > span { width: 44px; height: 44px; border-radius: 12px; display: grid; place-items: center; font-weight: 700; font-size: 14px; background: var(--cyan); color: var(--navy); }\n#tcx-root .tcx-pr-steps strong { display: block; font-size: 16px; color: var(--white); }\n#tcx-root .tcx-pr-steps p { font-size: 14px; color: var(--muted-dark); margin-top: 2px; }\n#tcx-root .tcx-more { margin-top: 18px; }\n#tcx-root .tcx-more summary { cursor: pointer; list-style: none; display: inline-flex; align-items: center; gap: 8px; font-weight: 600; font-size: 14px; color: var(--cyan); }\n#tcx-root .tcx-more summary::-webkit-details-marker { display: none; }\n#tcx-root .tcx-more[open] summary .tcx-chev { transform: rotate(180deg); }\n#tcx-root .tcx-more .tcx-chev { transition: transform .3s var(--ease); }\n#tcx-root .tcx-more p { margin-top: 12px; font-size: 14px; color: var(--muted-dark); }\n\n\/* Solar system *\/\n#tcx-root .tcx-orbit { --size: min(520px, 86vw); position: relative; width: var(--size); height: var(--size); margin-inline: auto; }\n#tcx-root .tcx-orbit__ring { position: absolute; border-radius: 50%; box-shadow: inset 0 0 0 1px rgba(0, 255, 255, .22); }\n#tcx-root .tcx-orbit__ring--1 { inset: 0; }\n#tcx-root .tcx-orbit__ring--2 { inset: 20%; box-shadow: inset 0 0 0 1px rgba(67, 177, 123, .25); border: 1px dashed rgba(255, 255, 255, .08); animation: tcx-spin 60s linear infinite reverse; }\n#tcx-root .tcx-orbit__sun {\n  position: absolute; inset: 30%; border-radius: 50%; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; padding: 18px;\n  background: radial-gradient(circle at 35% 30%, rgba(0, 255, 255, .35), rgba(10, 24, 46, .95) 70%); box-shadow: 0 0 60px rgba(0, 255, 255, .25), inset 0 0 0 1px rgba(0, 255, 255, .4);\n}\n#tcx-root .tcx-orbit__sun::after { content: \"\"; position: absolute; inset: -14px; border-radius: 50%; box-shadow: 0 0 0 1px rgba(0, 255, 255, .15); animation: tcx-pulse-ring 3s ease-out infinite; }\n@keyframes tcx-pulse-ring { from { transform: scale(.92); opacity: 1; } to { transform: scale(1.18); opacity: 0; } }\n#tcx-root .tcx-orbit__sun small { font-size: 11px; letter-spacing: .14em; text-transform: uppercase; color: var(--cyan); font-weight: 600; }\n#tcx-root .tcx-orbit__sun strong { font-size: clamp(15px, 1.6vw, 19px); line-height: 1.25; color: var(--white); margin-top: 6px; transition: opacity .3s; }\n#tcx-root .tcx-orbit__sun span { font-size: 12.5px; color: var(--muted-dark); margin-top: 6px; line-height: 1.4; transition: opacity .3s; }\n#tcx-root .tcx-orbit.is-swapping .tcx-orbit__sun strong, #tcx-root .tcx-orbit.is-swapping .tcx-orbit__sun span { opacity: 0; }\n#tcx-root .tcx-orbit__spin { position: absolute; inset: 0; animation: tcx-spin 40s linear infinite; }\n#tcx-root .tcx-orbit.is-paused .tcx-orbit__spin, #tcx-root .tcx-orbit.is-paused .tcx-planet span, #tcx-root .tcx-orbit.is-paused .tcx-planet em { animation-play-state: paused; }\n#tcx-root .tcx-planet {\n  position: absolute; left: 50%; top: 50%; width: 64px; height: 64px; margin: -32px 0 0 -32px; padding: 0; border: 0; background: none; color: inherit;\n  transform: rotate(var(--a)) translate(calc(var(--size) \/ 2)) rotate(calc(var(--a) * -1));\n}\n#tcx-root .tcx-planet span, #tcx-root .tcx-planet em { animation: tcx-spin 40s linear infinite reverse; }  \/* keep icons upright while orbiting *\/\n#tcx-root .tcx-planet span {\n  display: grid; place-items: center; width: 64px; height: 64px; border-radius: 50%; background: var(--navy-2); color: var(--cyan);\n  box-shadow: inset 0 0 0 1px rgba(0, 255, 255, .4), 0 10px 30px -10px rgba(0, 255, 255, .45); transition: background .35s, color .35s, transform .35s var(--ease), box-shadow .35s;\n}\n#tcx-root .tcx-planet svg { width: 26px; height: 26px; }\n#tcx-root .tcx-planet em { position: absolute; left: 50%; top: 72px; width: 140px; margin-left: -70px; font-style: normal; font-size: 12.5px; font-weight: 600; color: var(--white); text-align: center; line-height: 1.25; pointer-events: none; }\n#tcx-root .tcx-planet:hover span, #tcx-root .tcx-planet:focus-visible span, #tcx-root .tcx-planet.is-active span { background: var(--cyan); color: var(--navy); transform: scale(1.14); box-shadow: 0 0 0 8px rgba(0, 255, 255, .12), 0 0 40px rgba(0, 255, 255, .6); }\n#tcx-root .tcx-planet.is-active em { color: var(--cyan); }\n\n\/* ---------- Casos con imagen ---------- *\/\n#tcx-root .tcx-cases--img .tcx-case { background: linear-gradient(180deg, rgba(10, 24, 46, .15) 0%, rgba(10, 24, 46, .92) 78%), var(--img) center \/ cover no-repeat, var(--navy); min-height: 340px; }\n#tcx-root .tcx-cases--img .tcx-case::before { display: none; }\n#tcx-root .tcx-cases--img .tcx-case { transition: transform .45s var(--ease), background-size .8s var(--ease); background-size: auto, 100%, auto; }\n\n\/* ---------- Experiencia ---------- *\/\n#tcx-root .tcx-stats { display: grid; grid-template-columns: repeat(3, 1fr); gap: 20px; max-width: 900px; margin-inline: auto; }\n#tcx-root .tcx-stat { aspect-ratio: 1; max-width: 240px; width: 100%; margin-inline: auto; border-radius: 50%; display: flex; flex-direction: column; align-items: center; justify-content: center; text-align: center; box-shadow: inset 0 0 0 1px rgba(0, 255, 255, .3); background: radial-gradient(circle at 30% 25%, rgba(0, 255, 255, .12), transparent 60%); transition: transform .45s var(--ease), box-shadow .45s; }\n#tcx-root .tcx-stat:hover { transform: translateY(-6px) scale(1.03); box-shadow: inset 0 0 0 1px var(--cyan), 0 0 50px rgba(0, 255, 255, .25); }\n#tcx-root .tcx-stat strong { font-size: clamp(40px, 5vw, 64px); line-height: 1; color: var(--cyan); font-weight: 700; }\n#tcx-root .tcx-stat > span { margin-top: 8px; font-size: 14px; color: var(--muted-dark); }\n\n\/* ---------- Otros servicios ---------- *\/\n#tcx-root .tcx-others { display: grid; grid-template-columns: repeat(4, 1fr); gap: 14px; }\n#tcx-root .tcx-other { display: flex; gap: 14px; align-items: center; padding: 18px; border-radius: 16px; background: var(--white); box-shadow: inset 0 0 0 1px var(--line); transition: transform .35s var(--ease), box-shadow .35s; }\n#tcx-root .tcx-other:hover { transform: translateY(-4px); box-shadow: inset 0 0 0 1px rgba(67, 177, 123, .45), var(--shadow); }\n#tcx-root .tcx-other:hover .tcx-mega__icon { background: var(--navy); color: var(--cyan); }\n#tcx-root .tcx-other strong { display: block; font-size: 15px; }\n#tcx-root .tcx-other small { display: block; font-size: 13px; color: var(--muted); }\n#tcx-root .tcx-other.is-current { background: var(--navy); color: var(--white); box-shadow: none; }\n#tcx-root .tcx-other.is-current small { color: var(--muted-dark); }\n#tcx-root .tcx-other.is-current .tcx-mega__icon { background: var(--cyan); color: var(--navy); }\n\n@media (max-width: 1100px) {\n  #tcx-root .tcx-adopt { grid-template-columns: repeat(2, 1fr); }\n  #tcx-root .tcx-adopt__line { display: none; }\n  #tcx-root.tcx ul.tcx-clientgrid { grid-template-columns: repeat(5, 1fr); }\n  #tcx-root .tcx-others { grid-template-columns: repeat(2, 1fr); }\n}\n@media (max-width: 900px) {\n  #tcx-root .tcx-intro, #tcx-root .tcx-process, #tcx-root .tcx-clients__inner { grid-template-columns: 1fr; gap: 36px; }\n  #tcx-root .tcx-hero__photo { width: 100%; opacity: .28; -webkit-mask-image: linear-gradient(180deg, transparent, #000 40%); mask-image: linear-gradient(180deg, transparent, #000 40%); }\n  #tcx-root .tcx-clients__robot { display: none; }\n  #tcx-root .tcx-orbit { --size: min(440px, 74vw); margin-top: 20px; margin-bottom: 40px; }\n}\n@media (max-width: 640px) {\n  #tcx-root .tcx-adopt, #tcx-root .tcx-offer, #tcx-root .tcx-stats, #tcx-root .tcx-others { grid-template-columns: 1fr; }\n  #tcx-root.tcx ul.tcx-clientgrid { grid-template-columns: repeat(3, 1fr); }\n  #tcx-root .tcx-stat { max-width: 200px; }\n  #tcx-root .tcx-planet, #tcx-root .tcx-planet span { width: 50px; height: 50px; }\n  #tcx-root .tcx-planet { margin: -25px 0 0 -25px; }\n  #tcx-root .tcx-planet em { top: 56px; font-size: 11px; width: 100px; margin-left: -50px; }\n  #tcx-root .tcx-orbit__sun { inset: 26%; }\n  #tcx-root .tcx-orbit__sun span { display: none; }\n}\n@media (prefers-reduced-motion: reduce) {\n  #tcx-root .tcx-orbit__spin, #tcx-root .tcx-planet span, #tcx-root .tcx-planet em, #tcx-root .tcx-orbit__ring--2 { animation: none !important; }\n}\n#tcx-root .tcx-orbit { margin-bottom: 56px; }\n\/* planets: counter-rotate the whole body (icon + label) around the planet center *\/\n#tcx-root .tcx-planet span, #tcx-root .tcx-planet em { animation: none; }\n#tcx-root .tcx-planet__b { display: block; position: relative; width: 64px; height: 64px; font-style: normal; animation: tcx-spin 40s linear infinite reverse; }\n#tcx-root .tcx-orbit.is-paused .tcx-planet__b { animation-play-state: paused; }\n@media (max-width: 640px) { #tcx-root .tcx-planet__b { width: 50px; height: 50px; } }\n@media (prefers-reduced-motion: reduce) { #tcx-root .tcx-planet__b { animation: none !important; } }\n\/* case cards: the photos already carry the client name, keep text only for screen readers *\/\n#tcx-root .tcx-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }\n#tcx-root .tcx-cases--img .tcx-case { justify-content: flex-end; background: linear-gradient(180deg, transparent 55%, rgba(10, 24, 46, .85) 100%), var(--img) center \/ cover no-repeat, var(--navy); }\n#tcx-root .tcx-cases--img .tcx-case .tcx-link { opacity: 1; align-self: flex-start; padding: 8px 14px; border-radius: 999px; background: rgba(255, 255, 255, .12); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }\n#tcx-root .tcx-cases--img .tcx-case:hover .tcx-link { background: var(--cyan); color: var(--navy); }\n\/* case cards: whole card is the link; arrow badge top-right *\/\n#tcx-root .tcx-cases--img .tcx-case { background: var(--img) center \/ cover no-repeat, var(--navy); box-shadow: inset 0 0 0 1px transparent; transition: transform .45s var(--ease), box-shadow .45s; }\n#tcx-root .tcx-cases--img .tcx-case:hover { box-shadow: inset 0 0 0 2px var(--cyan), 0 30px 60px -30px rgba(0, 255, 255, .45); }\n#tcx-root .tcx-case__go { position: absolute; top: 16px; right: 16px; width: 40px; height: 40px; border-radius: 50%; display: grid; place-items: center; background: rgba(255, 255, 255, .14); backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); color: var(--white); transform: rotate(-45deg); transition: background .35s, color .35s, transform .45s var(--ease); }\n#tcx-root .tcx-cases--img .tcx-case:hover .tcx-case__go { background: var(--cyan); color: var(--navy); transform: rotate(0); }\n\n\n\/* ==========================================================================\n   Case study pages\n   ========================================================================== *\/\n#tcx-root .tcx-hero--case { min-height: min(78svh, 700px); }\n#tcx-root .tcx-hero__bg--case { position: absolute; inset: 0; background-size: cover; background-position: center; }\n#tcx-root .tcx-hero--case::after { content: \"\"; position: absolute; inset: 0; pointer-events: none; background: linear-gradient(90deg, rgba(10, 24, 46, .96) 0%, rgba(10, 24, 46, .82) 45%, rgba(10, 24, 46, .45) 100%); }\n#tcx-root .tcx-hero--case .tcx-hero__canvas { z-index: 1; opacity: .5; }\n#tcx-root .tcx-hero--case .tcx-container { position: relative; z-index: 2; }\n#tcx-root .tcx-hero--case h1 { font-size: clamp(34px, 4.6vw, 58px); }\n#tcx-root .tcx-hero--case .tcx-chips { margin-top: 22px; }\n#tcx-root .tcx-crumb { display: inline-flex; gap: 8px; font-size: 13px; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: var(--cyan) !important; }\n#tcx-root .tcx-crumb span { color: var(--muted-dark); }\n\n#tcx-root .tcx-case2 { display: grid; gap: clamp(48px, 7vw, 88px); }\n#tcx-root .tcx-case2__intro { max-width: 900px; margin-inline: auto; text-align: center; }\n#tcx-root .tcx-case2__lead p { margin-top: 14px !important; font-size: clamp(17px, 1.6vw, 20px); line-height: 1.6; color: var(--ink); }\n#tcx-root .tcx-case2__lead strong, #tcx-root .tcx-case2__txt strong { color: var(--navy); font-weight: 700; }\n#tcx-root .tcx-case2__row { display: grid; grid-template-columns: 1.1fr .9fr; gap: 56px; align-items: center; }\n#tcx-root .tcx-case2__row--rev .tcx-case2__txt { order: 2; }\n#tcx-root .tcx-case2__row--full { grid-template-columns: 1fr; max-width: 900px; margin-inline: auto; }\n#tcx-root .tcx-case2__ico { display: grid; place-items: center; width: 52px; height: 52px; border-radius: 16px; background: var(--navy); color: var(--cyan); margin-bottom: 14px; }\n#tcx-root .tcx-case2__ico svg { width: 24px; height: 24px; }\n#tcx-root .tcx-case2__txt .tcx-h2 { margin: 0 0 14px !important; font-size: clamp(26px, 2.8vw, 36px); }\n#tcx-root .tcx-case2__txt p { margin-top: 12px !important; font-size: 16px; line-height: 1.7; color: var(--muted); }\n#tcx-root .tcx-case2__media { margin: 0; position: relative; }\n#tcx-root .tcx-case2__media img { width: 100%; height: auto; display: block; transition: transform .7s var(--ease); }\n#tcx-root .tcx-case2__media--photo img { border-radius: 24px; box-shadow: var(--shadow); aspect-ratio: 4 \/ 3; object-fit: cover; }\n#tcx-root .tcx-case2__media--photo::before { content: \"\"; position: absolute; inset: 18px -18px -18px 18px; border-radius: 24px; background: linear-gradient(135deg, rgba(0, 255, 255, .35), rgba(67, 177, 123, .25)); z-index: -1; }\n#tcx-root .tcx-case2__media--mock img { filter: drop-shadow(0 30px 40px rgba(10, 24, 46, .25)); }\n#tcx-root .tcx-case2__media--round img { width: min(420px, 100%); margin-inline: auto; aspect-ratio: 1; object-fit: cover; border-radius: 50%; box-shadow: 0 0 0 10px var(--white), 0 0 0 11px rgba(0, 255, 255, .5), var(--shadow); }\n#tcx-root .tcx-case2__media:hover img { transform: translateY(-6px) scale(1.02); }\n#tcx-root.tcx ul.tcx-checks { display: grid; gap: 10px; margin-top: 16px !important; }\n#tcx-root .tcx-checks li { display: flex; gap: 12px; align-items: flex-start; font-size: 15.5px; color: var(--ink); line-height: 1.55; }\n#tcx-root .tcx-checks svg { flex: none; width: 22px; height: 22px; padding: 4px; border-radius: 50%; background: var(--green); color: var(--navy); margin-top: 2px; }\n#tcx-root .tcx-case2__about { display: grid; grid-template-columns: auto 1fr; gap: 28px; align-items: center; max-width: 960px; margin-inline: auto; padding: clamp(24px, 3vw, 36px); border-radius: 24px; background: var(--navy); color: var(--white); }\n#tcx-root .tcx-case2__about img { width: 140px; height: auto; }\n#tcx-root .tcx-case2__about h3 { font-size: 22px; color: var(--white); }\n#tcx-root .tcx-case2__about p { margin-top: 10px !important; color: var(--muted-dark); font-size: 15px; }\n#tcx-root .tcx-case2__about strong { color: var(--white); }\n#tcx-root .tcx-case2__about .tcx-link { color: var(--cyan); }\n#tcx-root .tcx-why6s--4 { grid-template-columns: repeat(4, 1fr); }\n#tcx-root .tcx-kh__ico { display: grid !important; place-items: center; width: 48px; height: 48px; border-radius: 14px; background: rgba(0, 255, 255, .12); color: var(--cyan); }\n#tcx-root .tcx-kh__ico svg { width: 22px; height: 22px; }\n#tcx-root .tcx-why6s--4 .tcx-why6 p { margin-top: 16px !important; font-size: 15px; color: var(--white); opacity: .88; }\n#tcx-root .tcx-cases--3 { grid-template-columns: repeat(3, 1fr); }\n@media (max-width: 1100px) { #tcx-root .tcx-why6s--4 { grid-template-columns: repeat(2, 1fr); } }\n@media (max-width: 900px) {\n  #tcx-root .tcx-case2__row { grid-template-columns: 1fr; gap: 28px; }\n  #tcx-root .tcx-case2__row--rev .tcx-case2__txt { order: 0; }\n  #tcx-root .tcx-hero--case::after { background: linear-gradient(180deg, rgba(10, 24, 46, .7), rgba(10, 24, 46, .95)); }\n  #tcx-root .tcx-cases--3 { grid-template-columns: 1fr 1fr; }\n}\n@media (max-width: 640px) {\n  #tcx-root .tcx-why6s--4, #tcx-root .tcx-cases--3 { grid-template-columns: 1fr; }\n  #tcx-root .tcx-case2__about { grid-template-columns: 1fr; text-align: center; }\n  #tcx-root .tcx-case2__about img { margin-inline: auto; width: 110px; }\n  #tcx-root .tcx-case2__media--photo::before { inset: 10px -10px -10px 10px; }\n}\n\/* hero photo on the right half so the client logo baked into the image never touches the title *\/\n#tcx-root .tcx-hero__bg--case { left: 42%; -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 35%); mask-image: linear-gradient(90deg, transparent 0%, #000 35%); }\n#tcx-root .tcx-hero--case::after { background: linear-gradient(90deg, rgba(10, 24, 46, 1) 0%, rgba(10, 24, 46, .9) 40%, rgba(10, 24, 46, .15) 75%, rgba(10, 24, 46, .35) 100%); }\n#tcx-root .tcx-hero--case .tcx-hero__copy { max-width: 620px; }\n\/* Know how cards (shared look with partners \"why\" cards) *\/\n#tcx-root .tcx-why6s { display: grid; gap: 18px; }\n#tcx-root .tcx-why6 { padding: 26px; border-radius: 20px; background: rgba(255, 255, 255, .04); box-shadow: inset 0 0 0 1px var(--line-dark); backdrop-filter: blur(8px); -webkit-backdrop-filter: blur(8px); transition: transform .4s var(--ease), background .4s, box-shadow .4s; }\n#tcx-root .tcx-why6:hover { transform: translateY(-6px); background: rgba(0, 255, 255, .06); box-shadow: inset 0 0 0 1px rgba(0, 255, 255, .45); }\n@media (max-width: 900px) {\n  #tcx-root .tcx-hero__bg--case { left: 0; opacity: .35; -webkit-mask-image: none; mask-image: none; }\n}\n#tcx-root .tcx-hero__bg--case { left: 50%; background-size: 120% auto; background-repeat: no-repeat; background-position: center; -webkit-mask-image: linear-gradient(90deg, transparent 0%, #000 22%); mask-image: linear-gradient(90deg, transparent 0%, #000 22%); }\n#tcx-root .tcx-hero--case .tcx-hero__copy { max-width: 540px; }\n#tcx-root .tcx-hero--case h1 { font-size: clamp(32px, 3.8vw, 50px); }\n#tcx-root .tcx-hero--case::after { background: linear-gradient(90deg, rgba(10, 24, 46, 1) 0%, rgba(10, 24, 46, .95) 48%, rgba(10, 24, 46, .1) 70%, rgba(10, 24, 46, .3) 100%); }\n@media (max-width: 1100px) { #tcx-root .tcx-hero__bg--case { background-size: cover; } }\n@media (max-width: 900px) { #tcx-root .tcx-hero__bg--case { left: 0; opacity: .3; -webkit-mask-image: none; mask-image: none; } #tcx-root .tcx-hero--case::after { background: linear-gradient(180deg, rgba(10, 24, 46, .7), rgba(10, 24, 46, .95)); } }\n#tcx-root .tcx-hero__bg--case { background-size: cover !important; background-position: center !important; }\n\/* Hero with clean client photo + mounted white logo (Salfa) *\/\n#tcx-root .tcx-hero--photo .tcx-hero__bg--case { filter: brightness(.72) saturate(1.05); }\n#tcx-root .tcx-case-logo { position: absolute; z-index: 3; right: max(40px, calc((100% - var(--container)) \/ 2)); bottom: 64px; padding: 18px 24px; border-radius: 20px;\n  background: rgba(10, 24, 46, .5); box-shadow: inset 0 0 0 1px rgba(255, 255, 255, .22), 0 20px 50px rgba(0, 0, 0, .35); backdrop-filter: blur(12px); -webkit-backdrop-filter: blur(12px); animation: tcx-float 7s ease-in-out infinite; }\n\/* Source PNG has large transparent padding: crop to the logo's bounding box via background positioning *\/\n#tcx-root .tcx-case-logo__mark { display: block; width: 256px; height: 72px; background: url('https:\/\/www.tcit.cl\/wp-content\/uploads\/2026\/09\/salfa-scaled.png') no-repeat -22px -128px \/ 339px auto; }\n@media (max-width: 900px) {\n  #tcx-root .tcx-hero--photo .tcx-hero__bg--case { opacity: .55; }\n  #tcx-root .tcx-case-logo { position: static; display: inline-block; margin: 0 0 22px; padding: 12px 16px; border-radius: 14px; animation: none; }\n  #tcx-root .tcx-case-logo__mark { width: 180px; height: 51px; background-position: -15.6px -89.9px; background-size: 238.4px auto; }\n}\n\n<\/style>\n<!-- ==========================================================================\n     TCIT \u2014 Caso banco-de-chile page (shares the TCIT Home 2026 system) \u2014 markup (paste inside an Avada \"Code Block\" element).\n     Requires tcit-home.css and tcit-home.js (see README.md for install options).\n     ========================================================================== -->\n<div class=\"tcx\" id=\"tcx-root\">\n\n  <!-- SVG icon sprite (inline to avoid extra requests \/ icon fonts) -->\n  <svg width=\"0\" height=\"0\" style=\"position:absolute\" aria-hidden=\"true\">\n    <defs>\n      <symbol id=\"i-code\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M8 7l-5 5 5 5M16 7l5 5-5 5M14 4l-4 16\"\/><\/symbol>\n      <symbol id=\"i-phone\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"6\" y=\"2.5\" width=\"12\" height=\"19\" rx=\"3\"\/><path d=\"M11 18h2\"\/><\/symbol>\n      <symbol id=\"i-web\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M3 12h18M12 3a14 14 0 010 18M12 3a14 14 0 000 18\"\/><\/symbol>\n      <symbol id=\"i-bot\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"4\" y=\"8\" width=\"16\" height=\"11\" rx=\"3\"\/><path d=\"M12 8V4M9 13h.01M15 13h.01M9 16h6M2 13v2M22 13v2\"\/><circle cx=\"12\" cy=\"3.5\" r=\"1\"\/><\/symbol>\n      <symbol id=\"i-chat\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M21 12a8 8 0 01-11.6 7.1L4 20l1-4.6A8 8 0 1121 12z\"\/><path d=\"M8.5 12h.01M12 12h.01M15.5 12h.01\"\/><\/symbol>\n      <symbol id=\"i-data\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><ellipse cx=\"12\" cy=\"5.5\" rx=\"7.5\" ry=\"2.8\"\/><path d=\"M4.5 5.5v6c0 1.5 3.4 2.8 7.5 2.8s7.5-1.3 7.5-2.8v-6M4.5 11.5v6c0 1.5 3.4 2.8 7.5 2.8s7.5-1.3 7.5-2.8v-6\"\/><\/symbol>\n      <symbol id=\"i-cloud\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 18a4.5 4.5 0 01-.5-9A6 6 0 0118 9.5a4 4 0 01-.5 8.5z\"\/><path d=\"M12 11v5M9.5 13.5L12 11l2.5 2.5\"\/><\/symbol>\n      <symbol id=\"i-plug\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"5\" cy=\"12\" r=\"2.5\"\/><circle cx=\"19\" cy=\"5\" r=\"2.5\"\/><circle cx=\"19\" cy=\"19\" r=\"2.5\"\/><path d=\"M7.3 11l9.4-5M7.3 13l9.4 5\"\/><\/symbol>\n      <symbol id=\"i-shield\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 3l8 3v6c0 4.5-3.4 8.3-8 9-4.6-.7-8-4.5-8-9V6z\"\/><path d=\"M8.5 12l2.5 2.5 4.5-5\"\/><\/symbol>\n      <symbol id=\"i-users\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"9\" cy=\"8\" r=\"3.5\"\/><path d=\"M2.5 20a6.5 6.5 0 0113 0M16 4.5a3.5 3.5 0 010 7M18 14.5a6.5 6.5 0 013.5 5.5\"\/><\/symbol>\n      <symbol id=\"i-compass\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M15.5 8.5l-2 5-5 2 2-5z\"\/><\/symbol>\n      <symbol id=\"i-bug\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"7\" y=\"7\" width=\"10\" height=\"13\" rx=\"5\"\/><path d=\"M12 11v9M3 13h4M17 13h4M4 7l3 2M20 7l-3 2M4 19l3-2M20 19l-3-2M9 7a3 3 0 016 0\"\/><\/symbol>\n      <symbol id=\"i-brain\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M9 4a3 3 0 00-3 3 3 3 0 00-2 5 3 3 0 002 5 3 3 0 006 1V5a2 2 0 00-3-1zM15 4a3 3 0 013 3 3 3 0 012 5 3 3 0 01-2 5 3 3 0 01-6 1\"\/><\/symbol>\n      <symbol id=\"i-pr\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"6\" cy=\"6\" r=\"2.5\"\/><circle cx=\"6\" cy=\"18\" r=\"2.5\"\/><circle cx=\"18\" cy=\"18\" r=\"2.5\"\/><path d=\"M6 8.5v7M18 15.5V9a3 3 0 00-3-3h-4M13 3.5L10.5 6 13 8.5\"\/><\/symbol>\n      <symbol id=\"i-bell\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 16V11a6 6 0 0112 0v5l1.5 2h-15zM10 20.5a2 2 0 004 0\"\/><\/symbol>\n      <symbol id=\"i-arrow\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12h14M13 6l6 6-6 6\"\/><\/symbol>\n      <symbol id=\"i-chev\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 9l6 6 6-6\"\/><\/symbol>\n      <symbol id=\"i-spark\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 3l1.8 5.2L19 10l-5.2 1.8L12 17l-1.8-5.2L5 10l5.2-1.8zM19 16l.8 2.2L22 19l-2.2.8L19 22l-.8-2.2L16 19l2.2-.8z\"\/><\/symbol>\n      <symbol id=\"i-fb\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M14 8.5V6.8c0-.8.2-1.3 1.4-1.3H17V2.3C16.6 2.2 15.6 2 14.4 2 11.9 2 10.5 3.5 10.5 6.2v2.3H8V12h2.5v10H14V12h2.7l.4-3.5z\"\/><\/symbol>\n      <symbol id=\"i-ig\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\"><rect x=\"3\" y=\"3\" width=\"18\" height=\"18\" rx=\"5\"\/><circle cx=\"12\" cy=\"12\" r=\"4\"\/><circle cx=\"17.5\" cy=\"6.5\" r=\"1\" fill=\"currentColor\"\/><\/symbol>\n      <symbol id=\"i-in\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M4.5 3a2 2 0 110 4 2 2 0 010-4zM3 8.5h3V21H3zM9 8.5h2.9v1.7h.1c.4-.8 1.4-1.9 3.3-1.9 3.1 0 3.7 2 3.7 4.7V21h-3v-7c0-1.4 0-3-1.9-3s-2.1 1.4-2.1 2.9V21H9z\"\/><\/symbol>\n      <symbol id=\"i-up\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 19V5M6 11l6-6 6 6\"\/><\/symbol>\n      <symbol id=\"i-flag\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 21V4M5 4h11l-2 4 2 4H5\"\/><\/symbol>\n      <symbol id=\"i-doc\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M7 3h7l5 5v13H7z\"\/><path d=\"M14 3v5h5M10 13h6M10 17h6\"\/><\/symbol>\n      <symbol id=\"i-screen\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><rect x=\"3\" y=\"4\" width=\"18\" height=\"12\" rx=\"2\"\/><path d=\"M8 20h8M12 16v4M10 8l-2 2 2 2M14 8l2 2-2 2\"\/><\/symbol>\n      <symbol id=\"i-check\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"12\" cy=\"12\" r=\"9\"\/><path d=\"M8 12.5l2.8 2.8L16.5 9\"\/><\/symbol>\n      <symbol id=\"i-cart\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M3 4h2l2.4 11.2a2 2 0 002 1.6h7.7a2 2 0 002-1.5L21 8H6.2\"\/><circle cx=\"10\" cy=\"20\" r=\"1.3\"\/><circle cx=\"17\" cy=\"20\" r=\"1.3\"\/><\/symbol>\n      <symbol id=\"i-search\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><circle cx=\"11\" cy=\"11\" r=\"7\"\/><path d=\"M20 20l-3.5-3.5\"\/><\/symbol>\n      <symbol id=\"i-play\" viewBox=\"0 0 24 24\" fill=\"currentColor\"><path d=\"M8 5.5v13l11-6.5z\"\/><\/symbol>\n      <symbol id=\"i-refresh\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M20 11a8 8 0 00-14.3-4.9L4 8M4 4v4h4M4 13a8 8 0 0014.3 4.9L20 16M20 20v-4h-4\"\/><\/symbol>\n      <symbol id=\"i-layers\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M12 3l9 5-9 5-9-5z\"\/><path d=\"M3 13l9 5 9-5M3 17.5l9 5 9-5\"\/><\/symbol>\n      <symbol id=\"i-chart\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M4 20V4M4 20h16M8 15l4-4 3 3 5-6\"\/><path d=\"M16 8h4v4\"\/><\/symbol>\n      <symbol id=\"i-bolt\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M13 3L5 14h6l-1 7 8-11h-6z\"\/><\/symbol>\n      <symbol id=\"i-yes\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M5 12.5l4.5 4.5L19 7.5\"\/><\/symbol>\n      <symbol id=\"i-no\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.4\" stroke-linecap=\"round\" stroke-linejoin=\"round\"><path d=\"M6 6l12 12M18 6L6 18\"\/><\/symbol>\n    <\/defs>\n  <\/svg>\n\n  <a class=\"tcx-skip\" href=\"#tcx-main\">Saltar al contenido<\/a>\n\n  <!-- ======================= HEADER ======================= -->\n  <header class=\"tcx-header\" id=\"tcx-header\">\n    <div class=\"tcx-container tcx-header__inner\">\n      <a class=\"tcx-logo\" href=\"https:\/\/www.tcit.cl\/\" aria-label=\"TCIT AI Solutions \u2014 Inicio\">\n        <img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27150%27%20height%3D%2736%27%20viewBox%3D%270%200%20150%2036%27%3E%3Crect%20width%3D%27150%27%20height%3D%2736%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.tcit.cl\/wp-content\/uploads\/2025\/09\/TCIT_blanco-isocolor.svg\" alt=\"TCIT AI Solutions\" width=\"150\" height=\"36\">\n      <\/a>\n\n      <nav class=\"tcx-nav\" aria-label=\"Men\u00fa principal\">\n        <div class=\"tcx-nav__item\" data-dropdown>\n          <button class=\"tcx-nav__link\" aria-expanded=\"false\" aria-haspopup=\"true\">Soluciones <span class=\"tcx-nav__ai\">IA<\/span> <svg class=\"tcx-chev\" width=\"14\" height=\"14\"><use href=\"#i-chev\"\/><\/svg><\/button>\n          <div class=\"tcx-dropdown tcx-mega\" role=\"menu\">\n            <div class=\"tcx-mega__col\">\n              <h4>Construye con IA<\/h4>\n              <a href=\"https:\/\/www.tcit.cl\/desarrollo-de-software\/\"><i class=\"tcx-mega__icon\"><svg><use href=\"#i-code\"\/><\/svg><\/i><div><strong>Desarrollo de software<\/strong><span>A la medida, con IA integrada<\/span><\/div><\/a>\n              <a href=\"https:\/\/www.tcit.cl\/desarrollo-de-apps\/\"><i class=\"tcx-mega__icon\"><svg><use href=\"#i-phone\"\/><\/svg><\/i><div><strong>Desarrollo de apps<\/strong><span>Apps con asistentes inteligentes<\/span><\/div><\/a>\n              <a href=\"https:\/\/www.tcit.cl\/desarrollo-web\/\"><i class=\"tcx-mega__icon\"><svg><use href=\"#i-web\"\/><\/svg><\/i><div><strong>Web & eCommerce<\/strong><span>Sitios listos para buscadores IA<\/span><\/div><\/a>\n            <\/div>\n            <div class=\"tcx-mega__col\">\n              <h4>Automatiza con IA<\/h4>\n              <a href=\"https:\/\/www.tcit.cl\/seriviciosia\/\"><i class=\"tcx-mega__icon\"><svg><use href=\"#i-bot\"\/><\/svg><\/i><div><strong>Automatizaci\u00f3n IA & RPA<\/strong><span>Agentes, Low Code y No Code<\/span><\/div><\/a>\n              <a href=\"#tcx-contacto\" data-service=\"Mesa de ayuda omnicanal y Agente IA\"><i class=\"tcx-mega__icon\"><svg><use href=\"#i-chat\"\/><\/svg><\/i><div><strong>Mesa de ayuda + Agente IA<\/strong><span>Atenci\u00f3n omnicanal 24\/7<\/span><\/div><\/a>\n              <a href=\"#tcx-contacto\" data-service=\"Data Engineering & Data Science\"><i class=\"tcx-mega__icon\"><svg><use href=\"#i-data\"\/><\/svg><\/i><div><strong>Data Engineering & Science<\/strong><span>Datos listos para modelos IA<\/span><\/div><\/a>\n            <\/div>\n            <div class=\"tcx-mega__col\">\n              <h4>Moderniza y escala<\/h4>\n              <a href=\"https:\/\/www.tcit.cl\/migracion-a-la-nube\/\"><i class=\"tcx-mega__icon\"><svg><use href=\"#i-cloud\"\/><\/svg><\/i><div><strong>Cloud Migration<\/strong><span>Infraestructura AI-Ready<\/span><\/div><\/a>\n              <a href=\"https:\/\/www.tcit.cl\/integraciones\/\"><i class=\"tcx-mega__icon\"><svg><use href=\"#i-plug\"\/><\/svg><\/i><div><strong>Integraciones<\/strong><span>BUK, SAP, Oracle y m\u00e1s<\/span><\/div><\/a>\n              <a href=\"https:\/\/www.tcit.cl\/mantenciones\/\"><i class=\"tcx-mega__icon\"><svg><use href=\"#i-shield\"\/><\/svg><\/i><div><strong>Continuidad operacional<\/strong><span>Soporte con monitoreo inteligente<\/span><\/div><\/a>\n              <a href=\"https:\/\/www.tcit.cl\/talent-as-a-service\/\"><i class=\"tcx-mega__icon\"><svg><use href=\"#i-users\"\/><\/svg><\/i><div><strong>Talent as a Service<\/strong><span>Perfiles TI con skills en IA<\/span><\/div><\/a>\n            <\/div>\n            <div class=\"tcx-mega__promo\">\n              <div>\n                <small class=\"tcx-eyebrow\">Producto TCIT<\/small>\n                <strong>Bot Fix-It: corrige errores de tu c\u00f3digo con IA<\/strong>\n                <p>Detecta el error en Sentry, analiza la causa ra\u00edz y entrega un Pull Request listo.<\/p>\n              <\/div>\n              <a class=\"tcx-btn tcx-btn--sm\" href=\"https:\/\/www.tcit.cl\/#tcx-fixit\">Ver Bot Fix-It <svg class=\"tcx-arrow\" width=\"16\" height=\"16\"><use href=\"#i-arrow\"\/><\/svg><\/a>\n            <\/div>\n          <\/div>\n        <\/div>\n\n        <div class=\"tcx-nav__item\" data-dropdown>\n          <button class=\"tcx-nav__link\" aria-expanded=\"false\" aria-haspopup=\"true\">Nosotros <svg class=\"tcx-chev\" width=\"14\" height=\"14\"><use href=\"#i-chev\"\/><\/svg><\/button>\n          <div class=\"tcx-dropdown\" role=\"menu\">\n            <a href=\"https:\/\/www.tcit.cl\/nosotros\/\">\u00bfQui\u00e9nes somos?<\/a>\n            <a href=\"https:\/\/www.tcit.cl\/tecnologias-cloud\/\">Tecnolog\u00edas<\/a>\n            <a href=\"https:\/\/www.tcit.cl\/#tcx-path\">Modelo TCIT PATH<\/a>\n          <\/div>\n        <\/div>\n\n        <div class=\"tcx-nav__item\" data-dropdown>\n          <button class=\"tcx-nav__link\" aria-expanded=\"false\" aria-haspopup=\"true\">Casos de \u00e9xito <svg class=\"tcx-chev\" width=\"14\" height=\"14\"><use href=\"#i-chev\"\/><\/svg><\/button>\n          <div class=\"tcx-dropdown\" role=\"menu\">\n            <a href=\"https:\/\/www.tcit.cl\/banco-de-chile\/\">Banco de Chile<\/a>\n            <a href=\"https:\/\/www.tcit.cl\/salfa\/\">Salfa<\/a>\n            <a href=\"https:\/\/www.tcit.cl\/tattersall\/\">Tattersall GDA<\/a>\n            <a href=\"https:\/\/www.tcit.cl\/jetsmart\/\">JetSMART<\/a>\n          <\/div>\n        <\/div>\n\n        <div class=\"tcx-nav__item\"><a class=\"tcx-nav__link\" href=\"https:\/\/www.tcit.cl\/blog\/\">Publicaciones<\/a><\/div>\n        <div class=\"tcx-nav__item\"><a class=\"tcx-nav__link\" href=\"https:\/\/www.tcit.cl\/eventos\/\">Eventos<\/a><\/div>\n        <div class=\"tcx-nav__item\"><a class=\"tcx-nav__link\" href=\"https:\/\/www.tcit.cl\/partners\/\">Partners<\/a><\/div>\n      <\/nav>\n\n      <div class=\"tcx-header__actions\">\n        <a class=\"tcx-btn tcx-btn--sm\" href=\"#tcx-contacto\" data-track=\"header_cta\">Asesor\u00eda gratuita<\/a>\n        <button class=\"tcx-burger\" aria-label=\"Abrir men\u00fa\" aria-expanded=\"false\" aria-controls=\"tcx-drawer\"><span><\/span><\/button>\n      <\/div>\n    <\/div>\n  <\/header>\n\n  <!-- Mobile drawer -->\n  <div class=\"tcx-drawer\" id=\"tcx-drawer\" aria-hidden=\"true\">\n    <nav aria-label=\"Men\u00fa m\u00f3vil\">\n      <details>\n        <summary>Soluciones IA <svg class=\"tcx-chev\" width=\"16\" height=\"16\"><use href=\"#i-chev\"\/><\/svg><\/summary>\n        <a href=\"https:\/\/www.tcit.cl\/desarrollo-de-software\/\">Desarrollo de software<\/a>\n        <a href=\"https:\/\/www.tcit.cl\/desarrollo-de-apps\/\">Desarrollo de apps<\/a>\n        <a href=\"https:\/\/www.tcit.cl\/desarrollo-web\/\">Web & eCommerce<\/a>\n        <a href=\"https:\/\/www.tcit.cl\/seriviciosia\/\">Automatizaci\u00f3n IA & RPA<\/a>\n        <a href=\"#tcx-contacto\" data-service=\"Mesa de ayuda omnicanal y Agente IA\">Mesa de ayuda + Agente IA<\/a>\n        <a href=\"#tcx-contacto\" data-service=\"Data Engineering & Data Science\">Data Engineering & Science<\/a>\n        <a href=\"https:\/\/www.tcit.cl\/migracion-a-la-nube\/\">Cloud Migration<\/a>\n        <a href=\"https:\/\/www.tcit.cl\/integraciones\/\">Integraciones<\/a>\n        <a href=\"https:\/\/www.tcit.cl\/mantenciones\/\">Continuidad operacional<\/a>\n        <a href=\"https:\/\/www.tcit.cl\/talent-as-a-service\/\">Talent as a Service<\/a>\n      <\/details>\n      <details>\n        <summary>Nosotros <svg class=\"tcx-chev\" width=\"16\" height=\"16\"><use href=\"#i-chev\"\/><\/svg><\/summary>\n        <a href=\"https:\/\/www.tcit.cl\/nosotros\/\">\u00bfQui\u00e9nes somos?<\/a>\n        <a href=\"https:\/\/www.tcit.cl\/tecnologias-cloud\/\">Tecnolog\u00edas<\/a>\n        <a href=\"https:\/\/www.tcit.cl\/#tcx-path\">Modelo TCIT PATH<\/a>\n      <\/details>\n      <details>\n        <summary>Casos de \u00e9xito <svg class=\"tcx-chev\" width=\"16\" height=\"16\"><use href=\"#i-chev\"\/><\/svg><\/summary>\n        <a href=\"https:\/\/www.tcit.cl\/banco-de-chile\/\">Banco de Chile<\/a>\n        <a href=\"https:\/\/www.tcit.cl\/salfa\/\">Salfa<\/a>\n        <a href=\"https:\/\/www.tcit.cl\/tattersall\/\">Tattersall GDA<\/a>\n        <a href=\"https:\/\/www.tcit.cl\/jetsmart\/\">JetSMART<\/a>\n      <\/details>\n      <a href=\"https:\/\/www.tcit.cl\/blog\/\">Publicaciones<\/a>\n      <a href=\"https:\/\/www.tcit.cl\/eventos\/\">Eventos<\/a>\n      <a href=\"https:\/\/www.tcit.cl\/partners\/\">Partners<\/a>\n      <a class=\"tcx-btn\" href=\"#tcx-contacto\">Solicitar asesor\u00eda gratuita <svg class=\"tcx-arrow\" width=\"16\" height=\"16\"><use href=\"#i-arrow\"\/><\/svg><\/a>\n    <\/nav>\n  <\/div>\n\n  <main id=\"tcx-main\">\n\n    <!-- ======================= HERO (caso de \u00e9xito) ======================= -->\n    <section class=\"tcx-hero tcx-hero--page tcx-hero--case tcx-hero--photo\" aria-labelledby=\"tcx-pg-title\">\n      <div class=\"tcx-hero__bg tcx-hero__bg--case\" style=\"background-image:url('https:\/\/www.tcit.cl\/wp-content\/uploads\/2026\/09\/bancodechile.jpeg');background-position:22% center !important\" aria-hidden=\"true\"><\/div>\n      <canvas class=\"tcx-hero__canvas\" data-neural aria-hidden=\"true\"><\/canvas>\n      <div class=\"tcx-container\">\n        <div class=\"tcx-hero__copy\">\n          <a class=\"tcx-crumb\" href=\"https:\/\/www.tcit.cl\/#tcx-servicios\" data-reveal>Casos de \u00e9xito <span>\/<\/span> Banco de Chile<\/a>\n          <h1 id=\"tcx-pg-title\" data-reveal style=\"--d:.08s\">Soluciones digitales para la banca: <span class=\"tcx-hl\">el caso de Banco de Chile<\/span><\/h1>\n          <div class=\"tcx-chips\" data-reveal style=\"--d:.16s\"><span class=\"tcx-chip\">Basilea III<\/span><span class=\"tcx-chip\">Data & c\u00e1lculo de riesgo<\/span><\/div>\n          <div class=\"tcx-hero__ctas\" data-reveal style=\"--d:.24s\"><a class=\"tcx-btn\" href=\"#tcx-contacto\" data-service=\"Desarrollo de software\">Quiero un caso as\u00ed <svg class=\"tcx-arrow\" width=\"18\" height=\"18\"><use href=\"#i-arrow\"\/><\/svg><\/a><a class=\"tcx-btn tcx-btn--ghost\" href=\"#tcx-case-body\">Leer el caso<\/a><\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- ======================= CASE BODY ======================= -->\n    <section class=\"tcx-section\" id=\"tcx-case-body\" aria-label=\"Caso de \u00e9xito Banco de Chile\">\n      <div class=\"tcx-container tcx-case2\">\n        <article class=\"tcx-case2__row tcx-case2__row--full\" data-reveal>\n          <div class=\"tcx-case2__txt\"><span class=\"tcx-case2__ico\"><svg><use href=\"#i-users\"\/><\/svg><\/span><h2 class=\"tcx-h2\">Presentaci\u00f3n<\/h2><p>El <strong>Banco de Chile<\/strong> es una instituci\u00f3n financiera que ofrece servicios bancarios en l\u00ednea y presenciales a personas, empresas e inversionistas. Es el segundo banco m\u00e1s grande del pa\u00eds por activos y el primero en capitalizaci\u00f3n burs\u00e1til. Su misi\u00f3n es contribuir al desarrollo econ\u00f3mico y social de Chile, apoyando a sus clientes con soluciones financieras innovadoras y de calidad.<\/p><\/div>\n          \n        <\/article>\n        <article class=\"tcx-case2__row tcx-case2__row--rev\" data-reveal>\n          <div class=\"tcx-case2__txt\"><span class=\"tcx-case2__ico\"><svg><use href=\"#i-compass\"\/><\/svg><\/span><h2 class=\"tcx-h2\">Desaf\u00edo<\/h2><p>El Banco de Chile se enfrentaba al reto de cumplir con los est\u00e1ndares internacionales de Basilea III, un conjunto de medidas que buscan reforzar la regulaci\u00f3n, la supervisi\u00f3n y la gesti\u00f3n del riesgo de los bancos, en respuesta a la crisis financiera de 2007-09. Entre los requerimientos de Basilea III se encuentra el c\u00e1lculo del indicador de riesgo financiero (IRF), que mide la capacidad de un banco para absorber p\u00e9rdidas inesperadas en su cartera crediticia.<\/p><p>Para calcular el IRF, el Banco de Chile necesitaba una herramienta que le permitiera integrar y procesar grandes vol\u00famenes de datos provenientes de diferentes fuentes, aplicar modelos estad\u00edsticos complejos y generar reportes confiables y oportunos para las autoridades regulatorias y los gestores internos.<\/p><\/div>\n          <figure class=\"tcx-case2__media tcx-case2__media--round\"><img class=\"lazyload\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27573%27%20height%3D%27573%27%20viewBox%3D%270%200%20573%20573%27%3E%3Crect%20width%3D%27573%27%20height%3D%27573%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.tcit.cl\/wp-content\/uploads\/2024\/02\/Recurso-19-50.jpg\" alt=\"Banco de Chile: desaf\u00edo\" loading=\"lazy\" decoding=\"async\"><\/figure>\n        <\/article>\n        <article class=\"tcx-case2__row\" data-reveal>\n          <div class=\"tcx-case2__txt\"><span class=\"tcx-case2__ico\"><svg><use href=\"#i-refresh\"\/><\/svg><\/span><h2 class=\"tcx-h2\">Metodolog\u00eda<\/h2><p>Para desarrollar la calculadora de IRF, el Banco de Chile cont\u00f3 con la colaboraci\u00f3n de un equipo multidisciplinario formado por un scrum master, un ingeniero de datos, un QA, arquitectos y desarrolladores. El equipo utiliz\u00f3 la metodolog\u00eda \u00e1gil Scrum, que consiste en dividir el proyecto en ciclos cortos llamados sprints, donde se definen las prioridades, se realizan las tareas y se entregan los resultados.<\/p><p>El equipo tambi\u00e9n aplic\u00f3 las mejores pr\u00e1cticas de ingenier\u00eda de software, como el control de versiones, las pruebas automatizadas, la integraci\u00f3n continua y la entrega continua. Asimismo, el equipo emple\u00f3 herramientas tecnol\u00f3gicas avanzadas, como plataformas en la nube, bases de datos no relacionales y lenguajes de programaci\u00f3n modernos.<\/p><\/div>\n          <figure class=\"tcx-case2__media tcx-case2__media--round\"><img class=\"lazyload\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27573%27%20height%3D%27573%27%20viewBox%3D%270%200%20573%20573%27%3E%3Crect%20width%3D%27573%27%20height%3D%27573%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.tcit.cl\/wp-content\/uploads\/2024\/02\/Recurso-21-50.jpg\" alt=\"Banco de Chile: metodolog\u00eda\" loading=\"lazy\" decoding=\"async\"><\/figure>\n        <\/article>\n        <article class=\"tcx-case2__row tcx-case2__row--rev\" data-reveal>\n          <div class=\"tcx-case2__txt\"><span class=\"tcx-case2__ico\"><svg><use href=\"#i-check\"\/><\/svg><\/span><h2 class=\"tcx-h2\">Resultado y conclusi\u00f3n<\/h2><p>El proyecto para crear la calculadora de IRF forma parte de un proyecto m\u00e1s grande llamado Basilea III, que a\u00fan est\u00e1 en proceso. Sin embargo, se han obtenido resultados parciales que demuestran el \u00e9xito de la iniciativa. Entre ellos se destacan:<\/p><ul class=\"tcx-checks\"><li><svg><use href=\"#i-yes\"\/><\/svg><span>La implementaci\u00f3n de una soluci\u00f3n escalable, robusta y flexible que permite calcular el IRF con precisi\u00f3n y rapidez.<\/span><\/li><li><svg><use href=\"#i-yes\"\/><\/svg><span>La mejora en la calidad y disponibilidad de la informaci\u00f3n para el an\u00e1lisis y la toma de decisiones.<\/span><\/li><li><svg><use href=\"#i-yes\"\/><\/svg><span>La optimizaci\u00f3n de los procesos operativos del banco y el cumplimiento de los requerimientos normativos.<\/span><\/li><li><svg><use href=\"#i-yes\"\/><\/svg><span>La generaci\u00f3n de valor agregado para los clientes del banco, al ofrecerles productos y servicios m\u00e1s adecuados a su perfil de riesgo.<\/span><\/li><\/ul><\/div>\n          <figure class=\"tcx-case2__media tcx-case2__media--round\"><img class=\"lazyload\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27573%27%20height%3D%27573%27%20viewBox%3D%270%200%20573%20573%27%3E%3Crect%20width%3D%27573%27%20height%3D%27573%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.tcit.cl\/wp-content\/uploads\/2024\/02\/Recurso-20-50.jpg\" alt=\"Banco de Chile: resultado y conclusi\u00f3n\" loading=\"lazy\" decoding=\"async\"><\/figure>\n        <\/article>\n        <aside class=\"tcx-case2__about\" data-reveal><img class=\"lazyload\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27400%27%20height%3D%27447%27%20viewBox%3D%270%200%20400%20447%27%3E%3Crect%20width%3D%27400%27%20height%3D%27447%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.tcit.cl\/wp-content\/uploads\/2026\/06\/Talent-as-a-Service-Robot-400x447.png\" alt=\"\" loading=\"lazy\" decoding=\"async\" aria-hidden=\"true\"><div><h3>Sobre TCIT<\/h3><p>TCIT Somos una consultora de software y tecnolog\u00edas cloud con 10 a\u00f1os de experiencia entregando soluciones completas y a la medida de cada negocio. Estamos orgullosos de los resultados que hemos alcanzado en este proyecto con <strong>Banco de Chile<\/strong>.<\/p><p>Este caso de \u00e9xito demuestra c\u00f3mo la tecnolog\u00eda es clave para mantener vigente a empresas tradicionales y mejorar continuamente.<\/p><p>Si deseas obtener m\u00e1s informaci\u00f3n, nuestro equipo de consultores estar\u00e1 encantado *de acompa\u00f1arte en el proceso. <a class=\"tcx-link\" href=\"#tcx-contacto\">Contacte con nuestro equipo ac\u00e1.<\/a><\/p><\/div><\/aside>\n      <\/div>\n    <\/section>\n\n    <!-- ======================= KNOW HOW ======================= -->\n    <section class=\"tcx-section tcx-on-dark tcx-has-canvas\" aria-labelledby=\"tcx-kh-title\">\n      <canvas class=\"tcx-hero__canvas\" data-neural aria-hidden=\"true\"><\/canvas>\n      <div class=\"tcx-container\">\n        <div class=\"tcx-section-head tcx-section-head--center\" data-reveal><div><span class=\"tcx-eyebrow\">C\u00f3mo trabajamos<\/span><h2 class=\"tcx-h2\" id=\"tcx-kh-title\">Know <span class=\"tcx-hl\">how?<\/span><\/h2><\/div><\/div>\n        <div class=\"tcx-why6s tcx-why6s--4\"><article class=\"tcx-why6\" data-reveal style=\"--d:0.00s\"><span class=\"tcx-kh__ico\"><svg><use href=\"#i-compass\"\/><\/svg><\/span><p>Trabajamos con metodolog\u00eda AGILE, esto nos permite abordar tus proyectos de forma eficiente.<\/p><\/article><article class=\"tcx-why6\" data-reveal style=\"--d:0.06s\"><span class=\"tcx-kh__ico\"><svg><use href=\"#i-users\"\/><\/svg><\/span><p>Lo principal es entender tu negocio y las necesidades del mismo, as\u00ed podemos contribuir en la toma de decisiones aportando nuestra expertise en la construcci\u00f3n de software.<\/p><\/article><article class=\"tcx-why6\" data-reveal style=\"--d:0.12s\"><span class=\"tcx-kh__ico\"><svg><use href=\"#i-code\"\/><\/svg><\/span><p>Nuestros colaboradores y profesionales se basan en las buenas pr\u00e1cticas y las metodolog\u00edas \u00e1giles de desarrollo para entregar soluciones tecnol\u00f3gicas de primer nivel.<\/p><\/article><article class=\"tcx-why6\" data-reveal style=\"--d:0.18s\"><span class=\"tcx-kh__ico\"><svg><use href=\"#i-chart\"\/><\/svg><\/span><p>El objetivo es entregarte proyectos y soluciones escalables en el tiempo, adapt\u00e1ndose al crecimiento de tu empresa adem\u00e1s de ofrecerte servicios de continuidad operacional.<\/p><\/article><\/div>\n      <\/div>\n    <\/section>\n\n    <!-- ======================= OTROS CASOS ======================= -->\n    <section class=\"tcx-section\" aria-labelledby=\"tcx-oc-title\">\n      <div class=\"tcx-container\">\n        <div class=\"tcx-section-head\"><div data-reveal><span class=\"tcx-eyebrow\">Casos de \u00e9xito<\/span><h2 class=\"tcx-h2\" id=\"tcx-oc-title\">Otros <span class=\"tcx-hl\">casos de \u00e9xito<\/span><\/h2><\/div><\/div>\n        <div class=\"tcx-cases tcx-cases--img tcx-cases--3\"><a class=\"tcx-case\" href=\"https:\/\/www.tcit.cl\/salfa\/\" data-reveal style=\"--d:0.00s;--img:url('https:\/\/www.tcit.cl\/wp-content\/uploads\/2024\/04\/salfa-0-80.jpg')\"><span class=\"tcx-case__sector tcx-sr\">Caso de \u00e9xito<\/span><h3 class=\"tcx-sr\">Salfa<\/h3><span class=\"tcx-case__go\" aria-hidden=\"true\"><svg width=\"18\" height=\"18\"><use href=\"#i-arrow\"\/><\/svg><\/span><\/a><a class=\"tcx-case\" href=\"https:\/\/www.tcit.cl\/tattersall\/\" data-reveal style=\"--d:0.08s;--img:url('https:\/\/www.tcit.cl\/wp-content\/uploads\/2024\/03\/tattersall-0-80.jpg')\"><span class=\"tcx-case__sector tcx-sr\">Caso de \u00e9xito<\/span><h3 class=\"tcx-sr\">Tattersall<\/h3><span class=\"tcx-case__go\" aria-hidden=\"true\"><svg width=\"18\" height=\"18\"><use href=\"#i-arrow\"\/><\/svg><\/span><\/a><a class=\"tcx-case\" href=\"https:\/\/www.tcit.cl\/jetsmart\/\" data-reveal style=\"--d:0.16s;--img:url('https:\/\/www.tcit.cl\/wp-content\/uploads\/2024\/03\/jetsmart-80.jpg')\"><span class=\"tcx-case__sector tcx-sr\">Caso de \u00e9xito<\/span><h3 class=\"tcx-sr\">JetSMART<\/h3><span class=\"tcx-case__go\" aria-hidden=\"true\"><svg width=\"18\" height=\"18\"><use href=\"#i-arrow\"\/><\/svg><\/span><\/a><\/div>\n      <\/div>\n    <\/section>\n\n    <!-- ======================= NUESTRA EXPERIENCIA ======================= -->\n    <section class=\"tcx-section tcx-on-dark tcx-glow\" aria-labelledby=\"tcx-ex-title\">\n      <div class=\"tcx-container\">\n        <div class=\"tcx-section-head tcx-section-head--center\" data-reveal>\n          <div><span class=\"tcx-eyebrow\">Trayectoria<\/span><h2 class=\"tcx-h2\" id=\"tcx-ex-title\">Nuestra <span class=\"tcx-hl\">experiencia<\/span><\/h2><\/div>\n        <\/div>\n        <div class=\"tcx-stats\">\n          <div class=\"tcx-stat\" data-reveal><strong>+<span data-count=\"10\">10<\/span><\/strong><span>A\u00f1os de experiencia<\/span><\/div>\n          <div class=\"tcx-stat\" data-reveal style=\"--d:.08s\"><strong>+<span data-count=\"70\">70<\/span><\/strong><span>Especialistas<\/span><\/div>\n          <div class=\"tcx-stat\" data-reveal style=\"--d:.16s\"><strong>+<span data-count=\"100\">100<\/span><\/strong><span>Grandes proyectos<\/span><\/div>\n        <\/div>\n      <\/div>\n    <\/section>\n\n    <!-- ======================= PARTNERS ======================= -->\n    <section class=\"tcx-section tcx-on-dark\" id=\"tcx-partners\" aria-labelledby=\"tcx-partners-title\">\n      <div class=\"tcx-container\">\n        <div class=\"tcx-section-head tcx-section-head--center\" data-reveal>\n          <div>\n            <span class=\"tcx-eyebrow\">Partners tecnol\u00f3gicos<\/span>\n            <h2 class=\"tcx-h2\" id=\"tcx-partners-title\">Somos un ecosistema <span class=\"tcx-hl\">tecnol\u00f3gico unido<\/span><\/h2>\n            <p class=\"tcx-lead\">Fortalece tu equipo TI con nosotros. Trabajamos junto a las plataformas l\u00edderes del mercado.<\/p>\n          <\/div>\n        <\/div>\n        <ul class=\"tcx-logos\" id=\"tcx-logos\" data-reveal>\n            <li style=\"--i:0\"><a href=\"https:\/\/www.buk.cl\/\" target=\"_blank\" rel=\"noopener\" aria-label=\"BUK (se abre en una pesta\u00f1a nueva)\"><img class=\"lazyload\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271101%27%20height%3D%27498%27%20viewBox%3D%270%200%201101%20498%27%3E%3Crect%20width%3D%271101%27%20height%3D%27498%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.tcit.cl\/wp-content\/uploads\/2026\/03\/50a56b76ba4a0895277b23665abcb985f1e83e1e-1.png\" alt=\"BUK\" loading=\"lazy\" decoding=\"async\"><\/a><\/li>\n            <li style=\"--i:1\"><a href=\"https:\/\/claude.com\/\" target=\"_blank\" rel=\"noopener\" aria-label=\"Claude (se abre en una pesta\u00f1a nueva)\"><img class=\"lazyload\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27768%27%20height%3D%27303%27%20viewBox%3D%270%200%20768%20303%27%3E%3Crect%20width%3D%27768%27%20height%3D%27303%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.tcit.cl\/wp-content\/uploads\/2026\/09\/claude-Partner.png\" alt=\"Claude\" loading=\"lazy\" decoding=\"async\"><\/a><\/li>\n            <li style=\"--i:2\"><a href=\"https:\/\/www.google.com\/partners\/?hl=es-419\" target=\"_blank\" rel=\"noopener\" aria-label=\"Google Partners (se abre en una pesta\u00f1a nueva)\"><img class=\"lazyload\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27320%27%20height%3D%27320%27%20viewBox%3D%270%200%20320%20320%27%3E%3Crect%20width%3D%27320%27%20height%3D%27320%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.tcit.cl\/wp-content\/uploads\/2026\/03\/google-partner-logo-png_seeklogo-338099-1.png\" alt=\"Google Partners\" loading=\"lazy\" decoding=\"async\"><\/a><\/li>\n            <li style=\"--i:3\"><a href=\"https:\/\/www.zebra.com\/la\/es.html\" target=\"_blank\" rel=\"noopener\" aria-label=\"Zebra (se abre en una pesta\u00f1a nueva)\"><img class=\"lazyload\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271024%27%20height%3D%27768%27%20viewBox%3D%270%200%201024%20768%27%3E%3Crect%20width%3D%271024%27%20height%3D%27768%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.tcit.cl\/wp-content\/uploads\/2026\/03\/1-Zebra-logo-2015-logotype-1024x768-1.png\" alt=\"Zebra\" loading=\"lazy\" decoding=\"async\"><\/a><\/li>\n        <\/ul>\n        <div class=\"tcx-miti\" data-reveal>\n          <a href=\"https:\/\/www.miti.cl\/\" target=\"_blank\" rel=\"noopener\" aria-label=\"MITI (se abre en una pesta\u00f1a nueva)\"><img class=\"lazyload\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27317%27%20height%3D%27137%27%20viewBox%3D%270%200%20317%20137%27%3E%3Crect%20width%3D%27317%27%20height%3D%27137%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.tcit.cl\/wp-content\/uploads\/2021\/01\/LOGO-MITI.png\" alt=\"MITI\" loading=\"lazy\" decoding=\"async\"><\/a>\n          <p>Somos parte de la <strong>Asociaci\u00f3n por una Mejor Industria TI<\/strong><\/p>\n          <a class=\"tcx-btn\" href=\"https:\/\/www.tcit.cl\/partners\/\">Seamos partners <svg class=\"tcx-arrow\" width=\"18\" height=\"18\"><use href=\"#i-arrow\"\/><\/svg><\/a>\n        <\/div>\n      <\/div>\n    <\/section>\n\n\n\n    <!-- ======================= CONTACT ======================= -->\n    <section class=\"tcx-section tcx-on-dark tcx-glow\" id=\"tcx-contacto\" aria-labelledby=\"tcx-contact-title\">\n      <div class=\"tcx-container tcx-contact\">\n        <div data-reveal>\n          <span class=\"tcx-eyebrow\">Asesor\u00eda gratuita<\/span>\n          <h2 class=\"tcx-h2\" id=\"tcx-contact-title\">Conversemos sobre tus desaf\u00edos tecnol\u00f3gicos<\/h2>\n          <p class=\"tcx-lead\">Obsolescencia tecnol\u00f3gica, un stack desconocido o equipos sin capacidad: enfrentemos juntos el proyecto que todos prefieren evitar. Una asesor\u00eda gratuita y sin compromiso para entender lo que realmente necesitas.<\/p>\n          <ul class=\"tcx-contact__points\">\n            <li><span><svg width=\"20\" height=\"20\"><use href=\"#i-spark\"\/><\/svg><\/span><div><strong>Diagn\u00f3stico de oportunidades IA<\/strong><small>Identificamos d\u00f3nde automatizar primero.<\/small><\/div><\/li>\n            <li><span><svg width=\"20\" height=\"20\"><use href=\"#i-compass\"\/><\/svg><\/span><div><strong>Hoja de ruta con TCIT PATH<\/strong><small>Etapas, alcance y pr\u00f3ximos pasos claros.<\/small><\/div><\/li>\n            <li><span><svg width=\"20\" height=\"20\"><use href=\"#i-users\"\/><\/svg><\/span><div><strong>Un especialista, no un bot<\/strong><small>Te contacta alguien del equipo TCIT.<\/small><\/div><\/li>\n          <\/ul>\n        <\/div>\n        <div class=\"tcx-formcard tcx-glass\" data-reveal style=\"--d:.1s\">\n          <h3>Solicita tu asesor\u00eda<\/h3>\n          <p>Cu\u00e9ntanos qu\u00e9 necesitas y te contactaremos.<\/p>\n          <div class=\"tcx-form-slot is-loading\" id=\"tcx-form-contact\" data-hs-form=\"contact\"><\/div>\n        <\/div>\n      <\/div>\n      <img class=\"lazyload tcx-mascot tcx-mascot--contact\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%271803%27%20height%3D%271536%27%20viewBox%3D%270%200%201803%201536%27%3E%3Crect%20width%3D%271803%27%20height%3D%271536%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.tcit.cl\/wp-content\/uploads\/2026\/09\/de.png\" alt=\"Robot mascota de TCIT dando la bienvenida\" width=\"1803\" height=\"1536\" loading=\"lazy\" decoding=\"async\">\n    <\/section>\n\n\n  <\/main>\n\n  <!-- ======================= FOOTER ======================= -->\n  <footer class=\"tcx-footer\">\n    <div class=\"tcx-container\">\n      <div class=\"tcx-footer__top\">\n        <div class=\"tcx-footer__brand\">\n          <img class=\"lazyload\" decoding=\"async\" src=\"data:image\/svg+xml,%3Csvg%20xmlns%3D%27http%3A%2F%2Fwww.w3.org%2F2000%2Fsvg%27%20width%3D%27160%27%20height%3D%2738%27%20viewBox%3D%270%200%20160%2038%27%3E%3Crect%20width%3D%27160%27%20height%3D%2738%27%20fill-opacity%3D%220%22%2F%3E%3C%2Fsvg%3E\" data-orig-src=\"https:\/\/www.tcit.cl\/wp-content\/uploads\/2025\/09\/TCIT_blanco-isocolor.svg\" alt=\"TCIT AI Solutions\" width=\"160\" height=\"38\" loading=\"lazy\">\n          <p>De la nube a la IA, del presente al futuro. Consultor\u00eda tecnol\u00f3gica, ingenier\u00eda de software, Staffing TI y continuidad operacional.<\/p>\n          <div class=\"tcx-social\">\n            <a href=\"https:\/\/www.linkedin.com\/company\/tcit-cloud-solutions\/\" target=\"_blank\" rel=\"noopener\" aria-label=\"LinkedIn\"><svg><use href=\"#i-in\"\/><\/svg><\/a>\n            <a href=\"https:\/\/www.instagram.com\/tcitcloudsolutions\/\" target=\"_blank\" rel=\"noopener\" aria-label=\"Instagram\"><svg><use href=\"#i-ig\"\/><\/svg><\/a>\n            <a href=\"https:\/\/www.facebook.com\/tcitcloudsolutions\/\" target=\"_blank\" rel=\"noopener\" aria-label=\"Facebook\"><svg><use href=\"#i-fb\"\/><\/svg><\/a>\n          <\/div>\n        <\/div>\n        <div>\n          <h4>Soluciones IA<\/h4>\n          <ul>\n            <li><a href=\"https:\/\/www.tcit.cl\/seriviciosia\/\">Automatizaci\u00f3n IA & RPA<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/desarrollo-de-software\/\">Desarrollo de software<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/desarrollo-de-apps\/\">Desarrollo de apps<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/desarrollo-web\/\">Web & eCommerce<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/migracion-a-la-nube\/\">Migraci\u00f3n a la nube<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/integraciones\/\">Integraciones<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/mantenciones\/\">Continuidad operacional<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/talent-as-a-service\/\">Talent as a Service<\/a><\/li>\n          <\/ul>\n        <\/div>\n        <div>\n          <h4>Compa\u00f1\u00eda<\/h4>\n          <ul>\n            <li><a href=\"https:\/\/www.tcit.cl\/nosotros\/\">\u00bfQui\u00e9nes somos?<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/tecnologias-cloud\/\">Tecnolog\u00edas<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/partners\/\">Partners<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/eventos\/\">Eventos<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/blog\/\">Publicaciones<\/a><\/li>\n          <\/ul>\n        <\/div>\n        <div>\n          <h4>Casos de \u00e9xito<\/h4>\n          <ul>\n            <li><a href=\"https:\/\/www.tcit.cl\/banco-de-chile\/\">Banco de Chile<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/salfa\/\">Salfa<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/tattersall\/\">Tattersall GDA<\/a><\/li>\n            <li><a href=\"https:\/\/www.tcit.cl\/jetsmart\/\">JetSMART<\/a><\/li>\n          <\/ul>\n          <a class=\"tcx-btn tcx-btn--sm\" href=\"https:\/\/www.tcit.cl\/contacto\/\">Contacto <svg class=\"tcx-arrow\" width=\"16\" height=\"16\"><use href=\"#i-arrow\"\/><\/svg><\/a>\n        <\/div>\n      <\/div>\n      <div class=\"tcx-footer__bottom\">\n        <span>\u00a9 <span id=\"tcx-year\">2026<\/span> TCIT AI Solutions. Todos los derechos reservados.<\/span>\n        <span>Hecho en Chile<\/span>\n      <\/div>\n    <\/div>\n  <\/footer>\n\n  <div class=\"tcx-atom\" id=\"tcx-atom\" aria-hidden=\"true\">\n    <svg viewBox=\"-24 -24 48 48\" width=\"44\" height=\"44\">\n      <g class=\"tcx-atom__orbit\"><ellipse rx=\"20\" ry=\"7.5\"\/><circle class=\"tcx-atom__e\" r=\"2.6\"><animateMotion dur=\"1.4s\" repeatCount=\"indefinite\" path=\"M20,0 A20,7.5 0 1,1 -20,0 A20,7.5 0 1,1 20,0\"\/><\/circle><\/g>\n      <g class=\"tcx-atom__orbit\" transform=\"rotate(60)\"><ellipse rx=\"20\" ry=\"7.5\"\/><circle class=\"tcx-atom__e\" r=\"2.6\"><animateMotion dur=\"1.9s\" repeatCount=\"indefinite\" path=\"M-20,0 A20,7.5 0 1,1 20,0 A20,7.5 0 1,1 -20,0\"\/><\/circle><\/g>\n      <circle class=\"tcx-atom__n\" r=\"4.5\"\/>\n    <\/svg>\n  <\/div>\n\n  <button class=\"tcx-totop\" id=\"tcx-totop\" aria-label=\"Volver arriba\"><svg width=\"20\" height=\"20\"><use href=\"#i-up\"\/><\/svg><\/button>\n<\/div>\n\n<script>\n\/* ==========================================================================\n   TCIT Home 2026 \u2014 interactions + HubSpot form integration\n   Vanilla JS, no jQuery dependency. Safe to load with `defer`.\n   ========================================================================== *\/\n(function () {\n  'use strict';\n\n  \/* ------------------------------------------------------------------\n     CONFIG \u2014 edit here, no need to touch the markup\n     ------------------------------------------------------------------ *\/\n  var CONFIG = {\n    hubspot: {\n      portalId: '20858831',\n      region: 'na1',\n      scriptSrc: 'https:\/\/js.hsforms.net\/forms\/embed\/v2.js',\n      forms: {\n        contact: '98ab690c-86e7-46ce-8d92-e538c886b198', \/\/ \"Conversemos sobre tus desaf\u00edos\" form\n        ebook: '294ce74c-10bc-4440-ac9f-c2ca48961255',   \/\/ \"Tendencias en IA 2027\" ebook form\n        webinar: '480940e4-87db-44ff-bf9c-a74f89ce8ce0', \/\/ Webinar form (used by the event bar modal)\n        quote: { id: '4dbe6cb7-fe6d-4b9e-8ed9-f40d7d70db1e', portalId: '24433604' } \/\/ \"Cotizar\" web plans form (desarrollo-web)\n      },\n      defaultCountry: 'CL',           \/\/ Phone field country preselection (best effort)\n      serviceFieldName: 'servicio'    \/\/ Internal name of the \"Servicio a solicitar\" field in HubSpot \u2014 VERIFY in HubSpot\n    },\n    atomCursor: {\n      enabled: true,                  \/\/ Set false to disable the idle \"atom\" cursor\n      idleMs: 1200                    \/\/ Milliseconds without movement before the atom appears\n    },\n    event: {\n      enabled: false,                 \/\/ Set true when there is an upcoming webinar\/event\n      text: 'Webinar en vivo: Bot Fix-It, corrige errores de tu c\u00f3digo con IA',\n      linkLabel: 'Inscr\u00edbete aqu\u00ed',\n      href: 'https:\/\/www.tcit.cl\/eventos\/',\n      endsAt: '2026-09-11T11:00:00-03:00' \/\/ Auto-hides after this date so the home never shows expired events\n    }\n  };\n\n  var root = document.getElementById('tcx-root');\n  if (!root) return;\n  root.classList.add('tcx-js');\n\n  \/* ------------------------------------------------------------------\n     Avada guard: Avada's responsive-typography script writes inline\n     font-size \/ line-height (and --fontSize) on every heading, which beats\n     any stylesheet. Strip those inline values inside #tcx-root and keep\n     stripping them if Avada re-applies them (e.g. on resize).\n     ------------------------------------------------------------------ *\/\n  var AVADA_INLINE = ['line-height', 'font-size', '--fontSize', '--minFontSize', 'font-family', 'letter-spacing', 'color'];\n  function cleanAvadaTypography(scope) {\n    (scope || root).querySelectorAll('h1, h2, h3, h4, h5, h6, p').forEach(function (el) {\n      AVADA_INLINE.forEach(function (prop) { if (el.style.getPropertyValue(prop)) el.style.removeProperty(prop); });\n      el.classList.remove('fusion-responsive-typography-calculated');\n    });\n  }\n  cleanAvadaTypography();\n  window.addEventListener('load', function () { cleanAvadaTypography(); });\n  if ('MutationObserver' in window) {\n    new MutationObserver(function (list) {\n      for (var i = 0; i < list.length; i++) {\n        var t = list[i].target;\n        if (t.nodeType === 1 && \/^(H[1-6]|P)$\/.test(t.tagName) && (t.style.lineHeight || t.style.fontSize || t.style.getPropertyValue('--fontSize') || t.classList.contains('fusion-responsive-typography-calculated'))) { cleanAvadaTypography(t.parentNode); }\n      }\n    }).observe(root, { subtree: true, attributes: true, attributeFilter: ['style', 'class'] });\n  }\n  var reduceMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n\n  function track(event, data) {\n    window.dataLayer = window.dataLayer || [];\n    var payload = { event: event };\n    for (var k in data) if (Object.prototype.hasOwnProperty.call(data, k)) payload[k] = data[k];\n    window.dataLayer.push(payload);\n  }\n\n  \/* ------------------------------------------------------------------\n     Header: scroll state, dropdowns, mobile drawer\n     ------------------------------------------------------------------ *\/\n  var header = document.getElementById('tcx-header');\n  var toTop = document.getElementById('tcx-totop');\n  var ticking = false;\n  function onScroll() {\n    if (ticking) return;\n    ticking = true;\n    requestAnimationFrame(function () {\n      var y = window.scrollY || window.pageYOffset;\n      header.classList.toggle('is-scrolled', y > 24);\n      if (toTop) toTop.classList.toggle('is-on', y > 900);\n      ticking = false;\n    });\n  }\n  window.addEventListener('scroll', onScroll, { passive: true });\n  onScroll();\n  if (toTop) toTop.addEventListener('click', function () { window.scrollTo({ top: 0, behavior: reduceMotion ? 'auto' : 'smooth' }); });\n\n  var dropdowns = root.querySelectorAll('[data-dropdown]');\n  function closeAll(except) {\n    dropdowns.forEach(function (d) {\n      if (d !== except) { d.classList.remove('is-open'); d.querySelector('button').setAttribute('aria-expanded', 'false'); }\n    });\n  }\n  dropdowns.forEach(function (d) {\n    var btn = d.querySelector('button');\n    btn.addEventListener('click', function (e) {\n      e.stopPropagation();\n      var open = !d.classList.contains('is-open');\n      closeAll(d);\n      d.classList.toggle('is-open', open);\n      btn.setAttribute('aria-expanded', String(open));\n    });\n  });\n  document.addEventListener('click', function () { closeAll(); });\n  document.addEventListener('keydown', function (e) { if (e.key === 'Escape') { closeAll(); toggleDrawer(false); } });\n\n  var burger = root.querySelector('.tcx-burger');\n  var drawer = document.getElementById('tcx-drawer');\n  function toggleDrawer(force) {\n    if (!drawer) return;\n    var open = typeof force === 'boolean' ? force : !drawer.classList.contains('is-open');\n    drawer.classList.toggle('is-open', open);\n    drawer.setAttribute('aria-hidden', String(!open));\n    burger.setAttribute('aria-expanded', String(open));\n    burger.setAttribute('aria-label', open ? 'Cerrar men\u00fa' : 'Abrir men\u00fa');\n    document.body.classList.toggle('tcx-lock', open);\n  }\n  if (burger) burger.addEventListener('click', function () { toggleDrawer(); });\n  if (drawer) drawer.addEventListener('click', function (e) { if (e.target.closest('a')) toggleDrawer(false); });\n\n  \/* Smooth anchor scroll with fixed-header offset *\/\n  root.addEventListener('click', function (e) {\n    var a = e.target.closest('a[href^=\"#\"]');\n    if (!a) return;\n    var id = a.getAttribute('href');\n    if (id.length < 2) return;\n    var target = document.querySelector(id);\n    if (!target) return;\n    e.preventDefault();\n    closeAll();\n    if (a.dataset.service) preselectService(a.dataset.service);\n    if (a.dataset.track) track('tcit_cta_click', { cta_id: a.dataset.track });\n    var top = target.getBoundingClientRect().top + window.pageYOffset - (header.offsetHeight - 1);\n    window.scrollTo({ top: top, behavior: reduceMotion ? 'auto' : 'smooth' });\n  });\n\n  \/* ------------------------------------------------------------------\n     Reveal on scroll + counters + PATH line\n     ------------------------------------------------------------------ *\/\n  var revealEls = root.querySelectorAll('[data-reveal], [data-path]');\n  if ('IntersectionObserver' in window && !reduceMotion) {\n    var io = new IntersectionObserver(function (entries) {\n      entries.forEach(function (en) {\n        if (!en.isIntersecting) return;\n        en.target.classList.add('is-in');\n        en.target.querySelectorAll('[data-count]').forEach(countUp);\n        io.unobserve(en.target);\n      });\n    }, { rootMargin: '0px 0px -8% 0px', threshold: 0.12 });\n    revealEls.forEach(function (el) { io.observe(el); });\n  } else {\n    revealEls.forEach(function (el) { el.classList.add('is-in'); });\n  }\n  function countUp(el) {\n    if (el.dataset.done) return;\n    el.dataset.done = '1';\n    var end = parseInt(el.dataset.count, 10), start = performance.now(), dur = 1400;\n    (function step(now) {\n      var p = Math.min(1, (now - start) \/ dur);\n      el.textContent = Math.round(end * (1 - Math.pow(1 - p, 3)));\n      if (p < 1) requestAnimationFrame(step);\n    })(start);\n  }\n\n  \/* ------------------------------------------------------------------\n     Hero: rotating word + agent console simulation\n     ------------------------------------------------------------------ *\/\n  var rot = root.querySelector('[data-rotator]');\n  if (rot && !reduceMotion) {\n    var words = JSON.parse(rot.dataset.rotator), wi = 0;\n    setInterval(function () {\n      wi = (wi + 1) % words.length;\n      rot.innerHTML = '<span>' + words[wi] + '<\/span>';\n    }, 2600);\n  }\n\n  var steps = root.querySelectorAll('#tcx-steps .tcx-step');\n  var log = document.getElementById('tcx-console-log');\n  var logs = ['$ sentry: event received \u00b7 checkout.ts:142', '$ ai: root cause \u2192 null reference on cart.total', '$ github: PR #482 opened \u00b7 fix(checkout)', '$ jira: TCIT-311 \u2192 In Review \u00b7 zendesk notified'];\n  var si = -1;\n  function runConsole() {\n    si = (si + 1) % (steps.length + 1);\n    steps.forEach(function (s, i) {\n      s.classList.toggle('is-done', i < si);\n      s.classList.toggle('is-active', i === si);\n      s.querySelector('.tcx-step__state').textContent = i < si ? 'Listo' : (i === si ? 'Procesando' : 'En cola');\n    });\n    if (log) log.textContent = si < steps.length ? logs[si] : '$ done \u00b7 0 intervenci\u00f3n manual';\n  }\n  if (steps.length) { runConsole(); if (!reduceMotion) setInterval(runConsole, 1800); }\n\n  \/* ------------------------------------------------------------------\n     Neural network canvas \u2014 reusable for every [data-neural] canvas\n     (hero + Bot Fix-It). Paused off-screen, disabled for reduced motion.\n     ------------------------------------------------------------------ *\/\n  function initNeural(cv) {\n    if (!cv.getContext || reduceMotion) return;\n    var ctx = cv.getContext('2d'), nodes = [], W = 0, H = 0, dpr = Math.min(window.devicePixelRatio || 1, 2), running = false, raf, mouse = { x: -999, y: -999 };\n    function size() {\n      var r = cv.getBoundingClientRect(); W = r.width; H = r.height;\n      cv.width = W * dpr; cv.height = H * dpr; ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n      var n = Math.round(Math.min(90, (W * H) \/ 16000));\n      nodes = [];\n      for (var i = 0; i < n; i++) nodes.push({ x: Math.random() * W, y: Math.random() * H, vx: (Math.random() - .5) * .35, vy: (Math.random() - .5) * .35, r: Math.random() * 1.6 + .6 });\n    }\n    function frame() {\n      ctx.clearRect(0, 0, W, H);\n      if (mouse.x > -900) { \/\/ soft glow that follows the pointer\n        var g = ctx.createRadialGradient(mouse.x, mouse.y, 0, mouse.x, mouse.y, 180);\n        g.addColorStop(0, 'rgba(0,255,255,.10)'); g.addColorStop(1, 'rgba(0,255,255,0)');\n        ctx.fillStyle = g; ctx.fillRect(mouse.x - 180, mouse.y - 180, 360, 360);\n      }\n      for (var i = 0; i < nodes.length; i++) {\n        var a = nodes[i];\n        a.x += a.vx; a.y += a.vy;\n        if (a.x < 0 || a.x > W) a.vx *= -1;\n        if (a.y < 0 || a.y > H) a.vy *= -1;\n        for (var j = i + 1; j < nodes.length; j++) {\n          var b = nodes[j], dx = a.x - b.x, dy = a.y - b.y, d2 = dx * dx + dy * dy;\n          if (d2 < 15000) { ctx.strokeStyle = 'rgba(0,255,255,' + (0.16 * (1 - d2 \/ 15000)) + ')'; ctx.lineWidth = 1; ctx.beginPath(); ctx.moveTo(a.x, a.y); ctx.lineTo(b.x, b.y); ctx.stroke(); }\n        }\n        var mx = a.x - mouse.x, my = a.y - mouse.y, md = mx * mx + my * my;\n        if (md < 48000) {\n          \/\/ Pointer interaction: link nearby nodes to the cursor and pull them gently\n          ctx.strokeStyle = 'rgba(0,255,255,' + (0.6 * (1 - md \/ 48000)) + ')'; ctx.beginPath(); ctx.moveTo(a.x, a.y); ctx.lineTo(mouse.x, mouse.y); ctx.stroke();\n          a.x -= mx * 0.006; a.y -= my * 0.006;\n        }\n        ctx.fillStyle = i % 3 ? 'rgba(0,255,255,.75)' : 'rgba(67,177,123,.9)';\n        ctx.beginPath(); ctx.arc(a.x, a.y, a.r, 0, Math.PI * 2); ctx.fill();\n      }\n      raf = requestAnimationFrame(frame);\n    }\n    size();\n    window.addEventListener('resize', function () { clearTimeout(cv._t); cv._t = setTimeout(size, 200); });\n    var host = cv.parentElement;\n    host.addEventListener('pointermove', function (e) { var r = cv.getBoundingClientRect(); mouse.x = e.clientX - r.left; mouse.y = e.clientY - r.top; });\n    host.addEventListener('pointerleave', function () { mouse.x = mouse.y = -999; });\n    new IntersectionObserver(function (en) {\n      if (en[0].isIntersecting && !running && !document.hidden) { running = true; frame(); }\n      else if (!en[0].isIntersecting && running) { running = false; cancelAnimationFrame(raf); }\n    }).observe(cv);\n    document.addEventListener('visibilitychange', function () { if (document.hidden) { running = false; cancelAnimationFrame(raf); } });\n  }\n  root.querySelectorAll('canvas[data-neural]').forEach(initNeural);\n\n  \/* ------------------------------------------------------------------\n     Background video (lazy: only downloads when the section is near)\n     ------------------------------------------------------------------ *\/\n  root.querySelectorAll('video[data-src]').forEach(function (v) {\n    if (reduceMotion || !('IntersectionObserver' in window)) return;\n    new IntersectionObserver(function (en, obs) {\n      if (!en[0].isIntersecting) { if (!v.paused) v.pause(); return; }\n      if (!v.src) { v.src = v.dataset.src; v.load(); }\n      var pr = v.play(); if (pr && pr.catch) pr.catch(function () {});\n    }, { rootMargin: '300px 0px' }).observe(v);\n    v.addEventListener('playing', function () { v.classList.add('is-playing'); });\n  });\n\n  \/* ------------------------------------------------------------------\n     Partner logos: fixed slots that fade in\/out cycling through the pool\n     ------------------------------------------------------------------ *\/\n  var logoList = document.getElementById('tcx-logos');\n  if (logoList) {\n    var items = [].slice.call(logoList.children);\n    var slotsFor = function () { return window.innerWidth < 640 ? 4 : (window.innerWidth < 1100 ? 8 : 6); };\n    var logoSlots = slotsFor();\n    if (!reduceMotion && items.length > logoSlots) {\n      var pool = items.slice(logoSlots).map(function (li) { var a = li.querySelector('a'); return { href: a.href, label: a.getAttribute('aria-label'), src: li.querySelector('img').src, alt: li.querySelector('img').alt }; });\n      items.slice(logoSlots).forEach(function (li) { li.hidden = true; });\n      var turn = 0, paused = false;\n      logoList.addEventListener('pointerenter', function () { paused = true; });\n      logoList.addEventListener('pointerleave', function () { paused = false; });\n      setInterval(function () {\n        if (paused || document.hidden) return;\n        var li = items[turn % logoSlots], a = li.querySelector('a'), img = li.querySelector('img');\n        var next = pool.shift();\n        pool.push({ href: a.href, label: a.getAttribute('aria-label'), src: img.src, alt: img.alt });\n        a.classList.add('is-swapping');\n        setTimeout(function () {\n          a.href = next.href; a.setAttribute('aria-label', next.label); img.src = next.src; img.alt = next.alt;\n          a.classList.remove('is-swapping');\n        }, 600);\n        turn += 3; \/\/ jump across the grid so the change feels scattered, not sequential\n        if (turn % logoSlots === 0) turn++;\n      }, 1600);\n    }\n  }\n\n  \/* ------------------------------------------------------------------\n     Solar-system process diagram (#tcx-orbit): planets orbit the \"sun\";\n     the sun shows the active pillar. Auto-cycles, pauses on hover\/focus.\n     ------------------------------------------------------------------ *\/\n  var orbit = document.getElementById('tcx-orbit');\n  if (orbit) {\n    var planets = [].slice.call(orbit.querySelectorAll('.tcx-planet'));\n    var kicker = document.getElementById('tcx-orbit-kicker'), oTitle = document.getElementById('tcx-orbit-title'), oText = document.getElementById('tcx-orbit-text');\n    var base = { k: kicker.textContent, t: oTitle.textContent, x: oText.textContent };\n    var current = -1, cycleTimer = null, holdUntil = 0;\n    var show = function (idx) {\n      if (idx === current) return;\n      current = idx;\n      orbit.classList.add('is-swapping');\n      setTimeout(function () {\n        planets.forEach(function (p, i) { p.classList.toggle('is-active', i === idx); p.setAttribute('aria-pressed', String(i === idx)); });\n        if (idx < 0) { kicker.textContent = base.k; oTitle.textContent = base.t; oText.textContent = base.x; }\n        else { kicker.textContent = orbit.dataset.kicker || base.k; oTitle.textContent = planets[idx].dataset.title; oText.textContent = planets[idx].dataset.text; }\n        orbit.classList.remove('is-swapping');\n      }, 220);\n    };\n    planets.forEach(function (p, i) {\n      p.addEventListener('pointerenter', function () { orbit.classList.add('is-paused'); show(i); });\n      p.addEventListener('focus', function () { orbit.classList.add('is-paused'); show(i); });\n      p.addEventListener('click', function () { show(i); holdUntil = Date.now() + 8000; });\n    });\n    orbit.addEventListener('pointerleave', function () { orbit.classList.remove('is-paused'); });\n    orbit.addEventListener('focusout', function (e) { if (!orbit.contains(e.relatedTarget)) orbit.classList.remove('is-paused'); });\n    if (!reduceMotion) {\n      cycleTimer = setInterval(function () {\n        if (orbit.classList.contains('is-paused') || Date.now() < holdUntil || document.hidden) return;\n        var next = current + 1; if (next >= planets.length) next = -1;\n        show(next);\n      }, 3500);\n    }\n  }\n\n  \/* ------------------------------------------------------------------\n     Atom cursor: after the pointer stays still, the cursor turns into an\n     atom (nucleus + 2 orbiting electrons). Desktop \/ fine pointer only.\n     ------------------------------------------------------------------ *\/\n  var atom = document.getElementById('tcx-atom');\n  if (atom && CONFIG.atomCursor.enabled && !reduceMotion && window.matchMedia('(hover: hover) and (pointer: fine)').matches) {\n    var idleTimer, html = document.documentElement;\n    var wake = function (e) {\n      atom.classList.remove('is-on'); html.classList.remove('tcx-cursor-idle');\n      atom.style.left = e.clientX + 'px'; atom.style.top = e.clientY + 'px';\n      clearTimeout(idleTimer);\n      var interactive = e.target.closest && e.target.closest('a, button, input, select, textarea, iframe, .hs-form');\n      if (interactive) return; \/\/ never hide the cursor over clickable or form elements\n      idleTimer = setTimeout(function () { atom.classList.add('is-on'); html.classList.add('tcx-cursor-idle'); }, CONFIG.atomCursor.idleMs);\n    };\n    document.addEventListener('pointermove', wake, { passive: true });\n    document.addEventListener('pointerdown', function () { clearTimeout(idleTimer); atom.classList.remove('is-on'); html.classList.remove('tcx-cursor-idle'); });\n    document.addEventListener('mouseleave', function () { clearTimeout(idleTimer); atom.classList.remove('is-on'); html.classList.remove('tcx-cursor-idle'); });\n  }\n\n  \/* ------------------------------------------------------------------\n     Service cards: filter + cursor-follow glow\n     ------------------------------------------------------------------ *\/\n  var filterBtns = root.querySelectorAll('[data-filter]');\n  var cards = root.querySelectorAll('#tcx-services .tcx-card');\n  filterBtns.forEach(function (btn) {\n    btn.addEventListener('click', function () {\n      var f = btn.dataset.filter;\n      filterBtns.forEach(function (b) { b.setAttribute('aria-pressed', String(b === btn)); });\n      cards.forEach(function (c) { c.classList.toggle('is-hidden', f !== 'all' && c.dataset.cat !== f); });\n      track('tcit_service_filter', { filter: f });\n    });\n  });\n  cards.forEach(function (c) {\n    c.addEventListener('pointermove', function (e) {\n      var r = c.getBoundingClientRect();\n      c.style.setProperty('--mx', (e.clientX - r.left) + 'px');\n      c.style.setProperty('--my', (e.clientY - r.top) + 'px');\n    });\n  });\n\n  \/* ------------------------------------------------------------------\n     Event bar (auto-expires)\n     ------------------------------------------------------------------ *\/\n  var ev = CONFIG.event, bar = document.getElementById('tcx-event');\n  if (bar && ev.enabled && new Date() < new Date(ev.endsAt)) {\n    document.getElementById('tcx-event-text').textContent = ev.text;\n    var el = document.getElementById('tcx-event-link');\n    el.textContent = ev.linkLabel; el.href = ev.href;\n    bar.classList.add('is-on');\n  }\n\n  var yearEl = document.getElementById('tcx-year');\n  if (yearEl) yearEl.textContent = new Date().getFullYear();\n\n  \/* ------------------------------------------------------------------\n     HubSpot forms \u2014 lazy loaded when the form is near the viewport.\n     Keeps the same portal and form IDs currently used on tcit.cl, so\n     submissions, workflows and attribution keep working unchanged.\n     ------------------------------------------------------------------ *\/\n  var hsLoading = null, pendingService = null;\n  function loadHubspot() {\n    if (window.hbspt && window.hbspt.forms) return Promise.resolve();\n    if (hsLoading) return hsLoading;\n    hsLoading = new Promise(function (resolve, reject) {\n      var s = document.createElement('script');\n      s.src = CONFIG.hubspot.scriptSrc; s.async = true; s.charset = 'utf-8';\n      s.onload = resolve; s.onerror = reject;\n      document.head.appendChild(s);\n    });\n    return hsLoading;\n  }\n\n  function setCountry(form) {\n    var sel = form.querySelector('.hs-fieldtype-intl-phone select, select[name*=\"country\" i]');\n    if (sel && sel.querySelector('option[value=\"' + CONFIG.hubspot.defaultCountry + '\"]')) {\n      sel.value = CONFIG.hubspot.defaultCountry;\n      sel.dispatchEvent(new Event('change', { bubbles: true }));\n    }\n  }\n\n  function preselectService(label) {\n    pendingService = label;\n    var form = document.querySelector('#tcx-form-contact form');\n    if (form) applyService(form);\n  }\n  function applyService(form) {\n    if (!pendingService) return;\n    var sel = form.querySelector('select[name=\"' + CONFIG.hubspot.serviceFieldName + '\"]');\n    if (!sel) return;\n    var wanted = pendingService.toLowerCase();\n    for (var i = 0; i < sel.options.length; i++) {\n      var o = sel.options[i];\n      if (o.text.toLowerCase().indexOf(wanted.split(' ')[0]) > -1) { sel.value = o.value; sel.dispatchEvent(new Event('change', { bubbles: true })); break; }\n    }\n  }\n\n  \/* Some HubSpot portals (e.g. the quote form) only render inside an iframe.\n     The iframe is same-origin, so the TCIT glass skin is injected into it. *\/\n  var IFRAME_SKIN = '@import url(\"https:\/\/fonts.googleapis.com\/css2?family=Sora:wght@400;500;600;700&display=swap\");' +\n    'html,body{background:transparent!important;margin:0;font-family:Sora,system-ui,sans-serif!important;color:#fff}' +\n    '.hs-form fieldset{max-width:none!important}.hs-form-field{margin-bottom:14px}' +\n    'label,legend{font-family:Sora,sans-serif!important;font-size:13px!important;font-weight:600!important;color:rgba(255,255,255,.88)!important}' +\n    '.hs-input:not([type=checkbox]):not([type=radio]){width:100%!important;box-sizing:border-box;min-height:46px;padding:11px 14px!important;border-radius:12px!important;border:1.5px solid rgba(255,255,255,.16)!important;background:rgba(255,255,255,.06)!important;color:#fff!important;font-family:Sora,sans-serif!important;font-size:15px!important}' +\n    '.hs-input:focus{outline:0;border-color:#00FFFF!important;box-shadow:0 0 0 4px rgba(0,255,255,.15)}select.hs-input option{color:#0A182E;background:#fff}textarea.hs-input{min-height:100px}' +\n    '.hs-button{width:100%;min-height:50px;border:0!important;border-radius:999px!important;background:#43B17B!important;color:#0A182E!important;font-family:Sora,sans-serif!important;font-weight:700!important;font-size:15px!important;cursor:pointer;transition:background .3s}.hs-button:hover{background:#00FFFF!important}' +\n    '.hs-error-msgs label,.hs-error-msg{color:#FF7A8A!important;font-size:12px!important}.legal-consent-container,.hs-richtext,.hs-richtext p{color:#A9B8CF!important;font-size:12px!important}' +\n    '.hs-fieldtype-intl-phone.hs-input{display:flex!important;gap:8px;border:0!important;padding:0!important;background:none!important;min-height:0!important;box-shadow:none!important}.hs-fieldtype-intl-phone select{flex:0 0 44%!important;width:44%!important}.hs-fieldtype-intl-phone input{flex:1 1 auto!important;width:auto!important}' +\n    '.submitted-message{color:#fff;font-size:15px;padding:12px 0}fieldset.form-columns-2 .hs-form-field{padding-right:10px}';\n  function skinIframe(slot) {\n    var fr = slot.querySelector('iframe.hs-form-iframe');\n    if (!fr) return;\n    var apply = function () {\n      try {\n        var d = fr.contentDocument; if (!d || !d.head || d.getElementById('tcx-skin')) return;\n        var st = d.createElement('style'); st.id = 'tcx-skin'; st.textContent = IFRAME_SKIN; d.head.appendChild(st);\n      } catch (e) {}\n    };\n    apply(); fr.addEventListener('load', apply);\n  }\n\n  function createForm(slot) {\n    var key = slot.dataset.hsForm, entry = CONFIG.hubspot.forms[key];\n    var formId = entry && typeof entry === 'object' ? entry.id : entry;\n    var portalId = entry && typeof entry === 'object' && entry.portalId ? entry.portalId : CONFIG.hubspot.portalId;\n    if (!formId || slot.dataset.ready) return;\n    slot.dataset.ready = '1';\n    loadHubspot().then(function () {\n      window.hbspt.forms.create({\n        region: CONFIG.hubspot.region,\n        portalId: portalId,\n        formId: formId,\n        target: '#' + slot.id,\n        css: '', \/\/ disable HubSpot default CSS so the TCIT skin applies\n        onFormReady: function ($form) {\n          slot.classList.remove('is-loading');\n          skinIframe(slot);\n          var form = $form && $form.jquery ? $form[0] : ($form || slot.querySelector('form'));\n          if (!form) return;\n          setCountry(form);\n          if (key === 'contact') applyService(form);\n          track('tcit_form_view', { form_key: key, form_id: formId });\n        },\n        onFormSubmitted: function () {\n          track('tcit_form_submit', { form_key: key, form_id: formId });\n        }\n      });\n      \/\/ Safety net: remove skeleton even if onFormReady is not fired (e.g. new-editor forms)\n      setTimeout(function () { slot.classList.remove('is-loading'); }, 6000);\n    }).catch(function () {\n      slot.classList.remove('is-loading');\n      slot.innerHTML = '<p class=\"tcx-form-fallback\">No pudimos cargar el formulario. Escr\u00edbenos desde <a href=\"https:\/\/www.tcit.cl\/contacto\/\">nuestra p\u00e1gina de contacto<\/a>.<\/p>';\n    });\n  }\n\n  var slots = root.querySelectorAll('[data-hs-form]:not([data-hs-lazy=\"manual\"])');\n  if ('IntersectionObserver' in window) {\n    var fio = new IntersectionObserver(function (entries) {\n      entries.forEach(function (en) { if (en.isIntersecting) { createForm(en.target); fio.unobserve(en.target); } });\n    }, { rootMargin: '600px 0px' });\n    slots.forEach(function (s) { fio.observe(s); });\n  } else {\n    slots.forEach(createForm);\n  }\n  \/\/ Load contact form immediately when a CTA points to it (user intent)\n  root.querySelectorAll('a[href=\"#tcx-contacto\"]').forEach(function (a) {\n    a.addEventListener('pointerenter', function () { createForm(document.getElementById('tcx-form-contact')); }, { once: true });\n  });\n\n  \/* ------------------------------------------------------------------\n     Quote modal (web plans): opens a <dialog> and loads its HubSpot form\n     ------------------------------------------------------------------ *\/\n  var quote = document.getElementById('tcx-quote');\n  if (quote) {\n    var planLabel = document.getElementById('tcx-quote-plan');\n    var closeQuote = function () { if (quote.open) quote.close(); document.body.classList.remove('tcx-lock'); };\n    root.querySelectorAll('[data-quote]').forEach(function (btn) {\n      btn.addEventListener('click', function () {\n        planLabel.textContent = btn.dataset.quote;\n        if (typeof quote.showModal === 'function') quote.showModal(); else quote.setAttribute('open', '');\n        document.body.classList.add('tcx-lock');\n        createForm(document.getElementById('tcx-form-quote'));\n        track('tcit_quote_open', { plan: btn.dataset.quote });\n      });\n    });\n    quote.querySelector('.tcx-modal__close').addEventListener('click', closeQuote);\n    quote.addEventListener('click', function (e) { if (e.target === quote) closeQuote(); });\n    quote.addEventListener('close', function () { document.body.classList.remove('tcx-lock'); });\n  }\n\n  \/* ------------------------------------------------------------------\n     Horizontal slider (sites gallery): scroll-snap + arrow buttons\n     ------------------------------------------------------------------ *\/\n  root.querySelectorAll('.tcx-slider').forEach(function (sl) {\n    var track = sl.querySelector('.tcx-slider__track');\n    var nav = sl.previousElementSibling && sl.previousElementSibling.querySelector('.tcx-slider__nav') || root.querySelector('.tcx-slider__nav');\n    if (!track || !nav) return;\n    nav.querySelectorAll('[data-dir]').forEach(function (b) {\n      b.addEventListener('click', function () {\n        var item = track.querySelector('li');\n        var step = item ? item.getBoundingClientRect().width + 20 : track.clientWidth * .8;\n        track.scrollBy({ left: step * parseInt(b.dataset.dir, 10), behavior: reduceMotion ? 'auto' : 'smooth' });\n      });\n    });\n  });\n\n  \/* ------------------------------------------------------------------\n     3D cluster parallax (Automatizaci\u00f3n IA hero)\n     ------------------------------------------------------------------ *\/\n  var f3d = root.querySelector('.tcx-float3d');\n  if (f3d && !reduceMotion && window.matchMedia('(hover: hover)').matches) {\n    var host3d = f3d.closest('section') || f3d;\n    host3d.addEventListener('pointermove', function (e) {\n      var r = host3d.getBoundingClientRect();\n      f3d.style.setProperty('--mx', ((e.clientX - r.left) \/ r.width - .5).toFixed(3));\n      f3d.style.setProperty('--my', ((e.clientY - r.top) \/ r.height - .5).toFixed(3));\n    });\n    host3d.addEventListener('pointerleave', function () { f3d.style.setProperty('--mx', 0); f3d.style.setProperty('--my', 0); });\n  }\n\n  \/* ------------------------------------------------------------------\n     Tabs (Tecnolog\u00edas cloud stack): click, hover-intent and arrow keys\n     ------------------------------------------------------------------ *\/\n  root.querySelectorAll('[role=\"tablist\"]').forEach(function (list) {\n    var tabs = [].slice.call(list.querySelectorAll('[role=\"tab\"]'));\n    var select = function (tab, focus) {\n      tabs.forEach(function (t) {\n        var on = t === tab, panel = document.getElementById(t.getAttribute('aria-controls'));\n        t.setAttribute('aria-selected', String(on)); t.tabIndex = on ? 0 : -1;\n        if (panel) { panel.hidden = !on; panel.classList.toggle('is-on', on); }\n      });\n      if (focus) tab.focus();\n    };\n    tabs.forEach(function (t, i) {\n      t.addEventListener('click', function () { select(t); });\n      t.addEventListener('keydown', function (e) {\n        var k = e.key, n = null;\n        if (k === 'ArrowDown' || k === 'ArrowRight') n = tabs[(i + 1) % tabs.length];\n        if (k === 'ArrowUp' || k === 'ArrowLeft') n = tabs[(i - 1 + tabs.length) % tabs.length];\n        if (n) { e.preventDefault(); select(n, true); }\n      });\n    });\n  });\n\n  \/* ------------------------------------------------------------------\n     Generic filter chips: [data-filter-group=\"#grid\"] over [data-cat]\n     ------------------------------------------------------------------ *\/\n  root.querySelectorAll('[data-filter-group]').forEach(function (grp) {\n    var grid = document.querySelector(grp.dataset.filterGroup);\n    if (!grid) return;\n    var btns = grp.querySelectorAll('[data-filter]');\n    var empty = grid.parentElement.querySelector('.tcx-posts__empty');\n    btns.forEach(function (b) {\n      b.addEventListener('click', function () {\n        var f = b.dataset.filter, shown = 0;\n        btns.forEach(function (x) { x.setAttribute('aria-pressed', String(x === b)); });\n        grid.querySelectorAll('[data-cat]').forEach(function (c) { var on = f === 'all' || c.dataset.cat === f; c.classList.toggle('is-hidden', !on); if (on) shown++; });\n        if (empty) empty.hidden = shown > 0;\n      });\n    });\n  });\n\n  \/* ------------------------------------------------------------------\n     Blog: search + \"Ver m\u00e1s\" (9 at a time)\n     ------------------------------------------------------------------ *\/\n  var postsWrap = document.getElementById('tcx-posts');\n  if (postsWrap) {\n    var posts = [].slice.call(postsWrap.querySelectorAll('[data-post]'));\n    var moreBtn = root.querySelector('[data-post-more]'), search = root.querySelector('[data-post-search]');\n    var emptyP = postsWrap.parentElement.querySelector('.tcx-posts__empty');\n    var limit = 9, norm = function (t) { return t.toLowerCase().normalize('NFD').replace(\/[\\u0300-\\u036f]\/g, ''); };\n    var render = function () {\n      var q = search ? norm(search.value.trim()) : '', matches = posts.filter(function (p) { return !q || norm(p.textContent).indexOf(q) > -1; });\n      posts.forEach(function (p) { p.hidden = true; });\n      matches.slice(0, q ? matches.length : limit).forEach(function (p) { p.hidden = false; });\n      if (moreBtn) moreBtn.parentElement.hidden = !!q || limit >= matches.length;\n      if (emptyP) emptyP.hidden = matches.length > 0;\n    };\n    if (moreBtn) moreBtn.addEventListener('click', function () { limit += 9; render(); });\n    if (search) search.addEventListener('input', render);\n    render();\n  }\n\n  \/* ------------------------------------------------------------------\n     Story slider (blog highlight): arrows + dots + keyboard\n     ------------------------------------------------------------------ *\/\n  root.querySelectorAll('.tcx-story').forEach(function (st) {\n    var track = st.querySelector('.tcx-story__track'), slides = track.children, dots = st.querySelector('.tcx-story__dots');\n    for (var i = 0; i < slides.length; i++) dots.appendChild(document.createElement('i'));\n    var idx = function () { return Math.round(track.scrollLeft \/ track.clientWidth); };\n    var paint = function () { var n = idx(); [].forEach.call(dots.children, function (d, i) { d.classList.toggle('is-on', i === n); }); };\n    var go = function (n) { n = Math.max(0, Math.min(slides.length - 1, n)); track.scrollTo({ left: n * track.clientWidth, behavior: reduceMotion ? 'auto' : 'smooth' }); };\n    st.querySelectorAll('[data-story]').forEach(function (b) { b.addEventListener('click', function () { go(idx() + parseInt(b.dataset.story, 10)); }); });\n    track.addEventListener('scroll', function () { clearTimeout(track._t); track._t = setTimeout(paint, 60); }, { passive: true });\n    track.addEventListener('keydown', function (e) { if (e.key === 'ArrowRight') { e.preventDefault(); go(idx() + 1); } if (e.key === 'ArrowLeft') { e.preventDefault(); go(idx() - 1); } });\n    paint();\n  });\n\n  \/* ------------------------------------------------------------------\n     Lightbox gallery (eventos)\n     ------------------------------------------------------------------ *\/\n  var lb = document.getElementById('tcx-lightbox');\n  if (lb) {\n    var items = [].slice.call(root.querySelectorAll('.tcx-gal__item')), cur = 0, lbImg = lb.querySelector('img');\n    var show = function (i) { cur = (i + items.length) % items.length; lbImg.src = items[cur].dataset.full; lbImg.alt = items[cur].querySelector('img').alt; };\n    items.forEach(function (it, i) { it.addEventListener('click', function () { show(i); if (lb.showModal) lb.showModal(); else lb.setAttribute('open', ''); }); });\n    lb.querySelector('.tcx-modal__close').addEventListener('click', function () { lb.close(); });\n    lb.querySelector('.tcx-lightbox__nav--prev').addEventListener('click', function () { show(cur - 1); });\n    lb.querySelector('.tcx-lightbox__nav--next').addEventListener('click', function () { show(cur + 1); });\n    lb.addEventListener('click', function (e) { if (e.target === lb) lb.close(); });\n    lb.addEventListener('keydown', function (e) { if (e.key === 'ArrowRight') show(cur + 1); if (e.key === 'ArrowLeft') show(cur - 1); });\n  }\n})();\n\n<\/script>\n<\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":9,"featured_media":10895,"comment_status":"open","ping_status":"open","sticky":false,"template":"","format":"standard","meta":{"content-type":"","footnotes":""},"categories":[64],"tags":[],"class_list":["post-10894","post","type-post","status-publish","format-standard","has-post-thumbnail","hentry","category-cases"],"yoast_head":"<!-- This site is optimized with the Yoast SEO Premium plugin v21.7 (Yoast SEO v28.2) - https:\/\/yoast.com\/product\/yoast-seo-premium-wordpress\/ -->\n<title>Caso de \u00e9xito: Banco de Chile<\/title>\n<meta name=\"description\" content=\"Conoce c\u00f3mo Banco de Chile logr\u00f3 una soluci\u00f3n digital adaptada a sus necesidades y una experiencia de usuario sencilla e intuitiva para compradores y vendedores.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.tcit.cl\/ingles\/banco-de-chile\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Caso de \u00e9xito: Banco de chile\" \/>\n<meta property=\"og:description\" content=\"Conoce c\u00f3mo Banco de Chile logr\u00f3 una soluci\u00f3n digital adaptada a sus necesidades y una experiencia de usuario sencilla e intuitiva para compradores y vendedores.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.tcit.cl\/ingles\/banco-de-chile\/\" \/>\n<meta property=\"og:site_name\" content=\"TCIT\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/web.facebook.com\/tcitcloudsolutions\/\" \/>\n<meta property=\"article:published_time\" content=\"2024-02-20T14:17:44+00:00\" \/>\n<meta property=\"article:modified_time\" content=\"2026-09-24T18:54:44+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/www.tcit.cl\/wp-content\/uploads\/2024\/02\/CE-banco-chile-50.jpg.jpg\" \/>\n\t<meta property=\"og:image:width\" content=\"1905\" \/>\n\t<meta property=\"og:image:height\" content=\"330\" \/>\n\t<meta property=\"og:image:type\" content=\"image\/jpeg\" \/>\n<meta name=\"author\" content=\"Gonzalo Burgos\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Written by\" \/>\n\t<meta name=\"twitter:data1\" content=\"Gonzalo Burgos\" \/>\n\t<meta name=\"twitter:label2\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data2\" content=\"4 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"Article\",\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/banco-de-chile\\\/#article\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/banco-de-chile\\\/\"},\"author\":{\"name\":\"Gonzalo Burgos\",\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/#\\\/schema\\\/person\\\/3feac3eca66491ec20151f9127ed7ea1\"},\"headline\":\"Caso de \u00e9xito: Banco de chile\",\"datePublished\":\"2024-02-20T14:17:44+00:00\",\"dateModified\":\"2026-09-24T18:54:44+00:00\",\"mainEntityOfPage\":{\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/banco-de-chile\\\/\"},\"wordCount\":26672,\"commentCount\":0,\"publisher\":{\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/#organization\"},\"image\":{\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/banco-de-chile\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.tcit.cl\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/CE-banco-chile-50.jpg.jpg\",\"articleSection\":[\"Casos de \u00e9xito\"],\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"CommentAction\",\"name\":\"Comment\",\"target\":[\"https:\\\/\\\/www.tcit.cl\\\/banco-de-chile\\\/#respond\"]}]},{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/banco-de-chile\\\/\",\"url\":\"https:\\\/\\\/www.tcit.cl\\\/banco-de-chile\\\/\",\"name\":\"Caso de \u00e9xito: Banco de Chile\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/banco-de-chile\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/banco-de-chile\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/www.tcit.cl\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/CE-banco-chile-50.jpg.jpg\",\"datePublished\":\"2024-02-20T14:17:44+00:00\",\"dateModified\":\"2026-09-24T18:54:44+00:00\",\"description\":\"Conoce c\u00f3mo Banco de Chile logr\u00f3 una soluci\u00f3n digital adaptada a sus necesidades y una experiencia de usuario sencilla e intuitiva para compradores y vendedores.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/banco-de-chile\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/www.tcit.cl\\\/banco-de-chile\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/banco-de-chile\\\/#primaryimage\",\"url\":\"https:\\\/\\\/www.tcit.cl\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/CE-banco-chile-50.jpg.jpg\",\"contentUrl\":\"https:\\\/\\\/www.tcit.cl\\\/wp-content\\\/uploads\\\/2024\\\/02\\\/CE-banco-chile-50.jpg.jpg\",\"width\":1905,\"height\":330,\"caption\":\"TCIT casos de \u00e9xito Banco de chile\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/banco-de-chile\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\\\/\\\/www.tcit.cl\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Caso de \u00e9xito: Banco de chile\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/#website\",\"url\":\"https:\\\/\\\/www.tcit.cl\\\/\",\"name\":\"https:\\\/\\\/www.tcit.cl\\\/\",\"description\":\"AI Solutions\",\"publisher\":{\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/www.tcit.cl\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/#organization\",\"name\":\"TCIT EIRL\",\"alternateName\":\"TCIT AI Solutions\",\"url\":\"https:\\\/\\\/www.tcit.cl\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/www.tcit.cl\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/cropped-TCIT_isotipo-color.png\",\"contentUrl\":\"https:\\\/\\\/www.tcit.cl\\\/wp-content\\\/uploads\\\/2025\\\/09\\\/cropped-TCIT_isotipo-color.png\",\"width\":512,\"height\":512,\"caption\":\"TCIT EIRL\"},\"image\":{\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/#\\\/schema\\\/logo\\\/image\\\/\"},\"sameAs\":[\"https:\\\/\\\/web.facebook.com\\\/tcitcloudsolutions\\\/\",\"https:\\\/\\\/www.instagram.com\\\/tcitcloudsolutions\\\/\",\"https:\\\/\\\/www.linkedin.com\\\/company\\\/tcit-cloud-solutions\\\/\"]},{\"@type\":\"Person\",\"@id\":\"https:\\\/\\\/www.tcit.cl\\\/#\\\/schema\\\/person\\\/3feac3eca66491ec20151f9127ed7ea1\",\"name\":\"Gonzalo Burgos\",\"image\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e2d4d08554b58b6bdc8ddfc801c6b583fb9207e71f73b8a119ced6a71fc814d0?s=96&d=mm&r=g\",\"url\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e2d4d08554b58b6bdc8ddfc801c6b583fb9207e71f73b8a119ced6a71fc814d0?s=96&d=mm&r=g\",\"contentUrl\":\"https:\\\/\\\/secure.gravatar.com\\\/avatar\\\/e2d4d08554b58b6bdc8ddfc801c6b583fb9207e71f73b8a119ced6a71fc814d0?s=96&d=mm&r=g\",\"caption\":\"Gonzalo Burgos\"},\"url\":\"https:\\\/\\\/www.tcit.cl\\\/ingles\\\/author\\\/eduardo-albornoz-2\\\/\"}]}<\/script>\n<!-- \/ Yoast SEO Premium plugin. -->","yoast_head_json":{"title":"Caso de \u00e9xito: Banco de Chile","description":"Conoce c\u00f3mo Banco de Chile logr\u00f3 una soluci\u00f3n digital adaptada a sus necesidades y una experiencia de usuario sencilla e intuitiva para compradores y vendedores.","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:\/\/www.tcit.cl\/ingles\/banco-de-chile\/","og_locale":"en_US","og_type":"article","og_title":"Caso de \u00e9xito: Banco de chile","og_description":"Conoce c\u00f3mo Banco de Chile logr\u00f3 una soluci\u00f3n digital adaptada a sus necesidades y una experiencia de usuario sencilla e intuitiva para compradores y vendedores.","og_url":"https:\/\/www.tcit.cl\/ingles\/banco-de-chile\/","og_site_name":"TCIT","article_publisher":"https:\/\/web.facebook.com\/tcitcloudsolutions\/","article_published_time":"2024-02-20T14:17:44+00:00","article_modified_time":"2026-09-24T18:54:44+00:00","og_image":[{"width":1905,"height":330,"url":"https:\/\/www.tcit.cl\/wp-content\/uploads\/2024\/02\/CE-banco-chile-50.jpg.jpg","type":"image\/jpeg"}],"author":"Gonzalo Burgos","twitter_card":"summary_large_image","twitter_misc":{"Written by":"Gonzalo Burgos","Est. reading time":"4 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"Article","@id":"https:\/\/www.tcit.cl\/banco-de-chile\/#article","isPartOf":{"@id":"https:\/\/www.tcit.cl\/banco-de-chile\/"},"author":{"name":"Gonzalo Burgos","@id":"https:\/\/www.tcit.cl\/#\/schema\/person\/3feac3eca66491ec20151f9127ed7ea1"},"headline":"Caso de \u00e9xito: Banco de chile","datePublished":"2024-02-20T14:17:44+00:00","dateModified":"2026-09-24T18:54:44+00:00","mainEntityOfPage":{"@id":"https:\/\/www.tcit.cl\/banco-de-chile\/"},"wordCount":26672,"commentCount":0,"publisher":{"@id":"https:\/\/www.tcit.cl\/#organization"},"image":{"@id":"https:\/\/www.tcit.cl\/banco-de-chile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.tcit.cl\/wp-content\/uploads\/2024\/02\/CE-banco-chile-50.jpg.jpg","articleSection":["Casos de \u00e9xito"],"inLanguage":"en-US","potentialAction":[{"@type":"CommentAction","name":"Comment","target":["https:\/\/www.tcit.cl\/banco-de-chile\/#respond"]}]},{"@type":"WebPage","@id":"https:\/\/www.tcit.cl\/banco-de-chile\/","url":"https:\/\/www.tcit.cl\/banco-de-chile\/","name":"Caso de \u00e9xito: Banco de Chile","isPartOf":{"@id":"https:\/\/www.tcit.cl\/#website"},"primaryImageOfPage":{"@id":"https:\/\/www.tcit.cl\/banco-de-chile\/#primaryimage"},"image":{"@id":"https:\/\/www.tcit.cl\/banco-de-chile\/#primaryimage"},"thumbnailUrl":"https:\/\/www.tcit.cl\/wp-content\/uploads\/2024\/02\/CE-banco-chile-50.jpg.jpg","datePublished":"2024-02-20T14:17:44+00:00","dateModified":"2026-09-24T18:54:44+00:00","description":"Conoce c\u00f3mo Banco de Chile logr\u00f3 una soluci\u00f3n digital adaptada a sus necesidades y una experiencia de usuario sencilla e intuitiva para compradores y vendedores.","breadcrumb":{"@id":"https:\/\/www.tcit.cl\/banco-de-chile\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.tcit.cl\/banco-de-chile\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.tcit.cl\/banco-de-chile\/#primaryimage","url":"https:\/\/www.tcit.cl\/wp-content\/uploads\/2024\/02\/CE-banco-chile-50.jpg.jpg","contentUrl":"https:\/\/www.tcit.cl\/wp-content\/uploads\/2024\/02\/CE-banco-chile-50.jpg.jpg","width":1905,"height":330,"caption":"TCIT casos de \u00e9xito Banco de chile"},{"@type":"BreadcrumbList","@id":"https:\/\/www.tcit.cl\/banco-de-chile\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/www.tcit.cl\/"},{"@type":"ListItem","position":2,"name":"Caso de \u00e9xito: Banco de chile"}]},{"@type":"WebSite","@id":"https:\/\/www.tcit.cl\/#website","url":"https:\/\/www.tcit.cl\/","name":"https:\/\/www.tcit.cl\/","description":"AI Solutions","publisher":{"@id":"https:\/\/www.tcit.cl\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.tcit.cl\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.tcit.cl\/#organization","name":"TCIT EIRL","alternateName":"TCIT AI Solutions","url":"https:\/\/www.tcit.cl\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.tcit.cl\/#\/schema\/logo\/image\/","url":"https:\/\/www.tcit.cl\/wp-content\/uploads\/2025\/09\/cropped-TCIT_isotipo-color.png","contentUrl":"https:\/\/www.tcit.cl\/wp-content\/uploads\/2025\/09\/cropped-TCIT_isotipo-color.png","width":512,"height":512,"caption":"TCIT EIRL"},"image":{"@id":"https:\/\/www.tcit.cl\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/web.facebook.com\/tcitcloudsolutions\/","https:\/\/www.instagram.com\/tcitcloudsolutions\/","https:\/\/www.linkedin.com\/company\/tcit-cloud-solutions\/"]},{"@type":"Person","@id":"https:\/\/www.tcit.cl\/#\/schema\/person\/3feac3eca66491ec20151f9127ed7ea1","name":"Gonzalo Burgos","image":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/secure.gravatar.com\/avatar\/e2d4d08554b58b6bdc8ddfc801c6b583fb9207e71f73b8a119ced6a71fc814d0?s=96&d=mm&r=g","url":"https:\/\/secure.gravatar.com\/avatar\/e2d4d08554b58b6bdc8ddfc801c6b583fb9207e71f73b8a119ced6a71fc814d0?s=96&d=mm&r=g","contentUrl":"https:\/\/secure.gravatar.com\/avatar\/e2d4d08554b58b6bdc8ddfc801c6b583fb9207e71f73b8a119ced6a71fc814d0?s=96&d=mm&r=g","caption":"Gonzalo Burgos"},"url":"https:\/\/www.tcit.cl\/ingles\/author\/eduardo-albornoz-2\/"}]}},"_links":{"self":[{"href":"https:\/\/www.tcit.cl\/ingles\/wp-json\/wp\/v2\/posts\/10894","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.tcit.cl\/ingles\/wp-json\/wp\/v2\/posts"}],"about":[{"href":"https:\/\/www.tcit.cl\/ingles\/wp-json\/wp\/v2\/types\/post"}],"author":[{"embeddable":true,"href":"https:\/\/www.tcit.cl\/ingles\/wp-json\/wp\/v2\/users\/9"}],"replies":[{"embeddable":true,"href":"https:\/\/www.tcit.cl\/ingles\/wp-json\/wp\/v2\/comments?post=10894"}],"version-history":[{"count":16,"href":"https:\/\/www.tcit.cl\/ingles\/wp-json\/wp\/v2\/posts\/10894\/revisions"}],"predecessor-version":[{"id":12349,"href":"https:\/\/www.tcit.cl\/ingles\/wp-json\/wp\/v2\/posts\/10894\/revisions\/12349"}],"wp:featuredmedia":[{"embeddable":true,"href":"https:\/\/www.tcit.cl\/ingles\/wp-json\/wp\/v2\/media\/10895"}],"wp:attachment":[{"href":"https:\/\/www.tcit.cl\/ingles\/wp-json\/wp\/v2\/media?parent=10894"}],"wp:term":[{"taxonomy":"category","embeddable":true,"href":"https:\/\/www.tcit.cl\/ingles\/wp-json\/wp\/v2\/categories?post=10894"},{"taxonomy":"post_tag","embeddable":true,"href":"https:\/\/www.tcit.cl\/ingles\/wp-json\/wp\/v2\/tags?post=10894"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}