{"id":5,"date":"2026-08-07T19:05:17","date_gmt":"2026-08-07T19:05:17","guid":{"rendered":"http:\/\/tivimate.us\/index.php\/home\/"},"modified":"2026-08-24T21:47:58","modified_gmt":"2026-08-24T21:47:58","slug":"home","status":"publish","type":"page","link":"https:\/\/tivimate.us\/ar\/","title":{"rendered":"\u0627\u0644\u0635\u0641\u062d\u0629 \u0627\u0644\u0631\u0626\u064a\u0633\u064a\u0629"},"content":{"rendered":"<p class=\"tc-yoast-intro\">TiviMate US is a ready IPTV playlist for USA TiviMate users in the United States (USA) \u2014 stable streaming on 25K TVs, 88K movies and series in FHD, plus worldwide content on every plan.<\/p>\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=Bebas+Neue&#038;family=Manrope:wght@300;400;500;600;700;800&#038;family=JetBrains+Mono:wght@400;500&#038;display=swap\" rel=\"stylesheet\">\n<style id=\"tc-native-shell\">\nbody header.site-header, body .site-header, body footer.site-footer, body .site-footer,\nbody .site-main > article > header.entry-header, body .page-header, #site-header,\nbody .ehf-header, body .ehf-footer, body nav.main-navigation,\nbody.home .entry-title, body.page-template-default .entry-header {display:none!important}\nbody .site-main, body .site-content, body .page-content, body .entry-content {\n  padding:0!important;margin:0!important;max-width:none!important;width:100%!important\n}\nhtml, body { max-width:100vw!important; background:#000!important; }\n\/* overflow-x on html\/body breaks sticky + causes first-section scroll jank on mobile *\/\n@media (min-width:901px){\n  html, body { overflow-x:clip!important; }\n}\n@media (max-width:900px){\n  html, body { overflow-x:visible!important; overflow-y:auto!important; }\n  \/* body must NOT be a scroll container or sticky nav never sticks *\/\n  body, body.home, body.tc-native-home { overflow:visible!important; overflow-x:visible!important; overflow-y:visible!important; }\n  .tc-v2-root, .vv-wrap, .vv-hero-section, .vv-section, .vv-section-alt { overflow-x:clip!important; }\n}\nbody.tc-space-ready, body.home { isolation:auto!important; }\nbody.tc-space-ready::before, body.tc-space-ready::after { z-index:-2!important; }\nbody .site, body #page, body .site-content, .tc-v2-root {\n  background:transparent!important; background-color:transparent!important;\n  position:relative!important; z-index:auto!important; isolation:auto!important;\n}\n.tc-v2-root { overflow:visible!important; width:100%!important; max-width:none!important; }\n.tc-v2-root > * { z-index:auto!important; }\n.tc-v2-root::before, .tc-v2-root::after { content:none!important; display:none!important; }\nbody > .vv-space-fx, .vv-space-fx,\n.vv-space-fx-grid, .vv-space-fx-cross, .vv-space-fx-vanish,\n.vv-space-fx-floor, .vv-space-fx-horizon, .vv-crosshair { display:none!important; }\n@media (pointer:fine){\n  body.vv-has-poly-cursor, body.vv-has-poly-cursor * { cursor:none!important; }\n}\n.vv-network-bg, body > .vv-network-bg, .tc-v2-root > .vv-network-bg {\n  position:fixed!important; inset:0!important; z-index:auto!important;\n  width:100vw!important; height:100vh!important; pointer-events:none!important;\n}\n.vv-cursor-canvas, body > .vv-cursor-canvas, .tc-v2-root > .vv-cursor-canvas {\n  position:fixed!important; inset:0!important; width:100vw!important; height:100vh!important;\n  display:block!important; z-index:2147483600!important; pointer-events:none!important;\n}\n@media (max-width:900px){\n  .vv-cursor-canvas, body > .vv-cursor-canvas, .tc-v2-root > .vv-cursor-canvas { display:none!important; }\n}\n.vv-hero-screen1{display:flex!important;flex-direction:column!important;min-width:0!important;width:100%!important;}\n.vv-topstack {\n  position:relative!important; top:auto!important; z-index:10050!important;\n  background:transparent!important;\n  -webkit-backdrop-filter:none!important;\n  backdrop-filter:none!important;\n}\n.vv-ticker-wrap{\n  position:relative!important; top:auto!important;\n  margin-bottom:.85rem!important;\n}\n.vv-nav-shell{\n  position:sticky!important; top:0!important; z-index:10050!important;\n}\n@media (max-width:900px){\n  html,body.home,body.tc-native-home{margin:0!important;padding:0!important;}\n  body.home #page,body.home .site,body.home .site-content,body.home .content-area,\n  body.home .site-main,body.home .entry-content{margin:0!important;padding:0!important;}\n  .vv-topstack,body.home>header.vv-topstack{\n    position:relative!important;top:auto!important;z-index:40!important;\n    margin:0!important;padding-top:0!important;padding-left:0!important;padding-right:0!important;width:100%!important;\n  }\n  .vv-ticker-wrap{margin:0 0 .55rem!important;min-height:40px!important;padding:8px 0 10px!important;position:relative!important;}\n  .vv-nav-shell{\n    position:sticky!important;top:0!important;z-index:10050!important;\n    padding:.55rem 10px .45rem!important;pointer-events:none!important;\n    background:transparent!important;margin:0!important;\n  }\n  .vv-nav-shell .vv-nav{pointer-events:auto!important;}\n}\n.vv-nav-shell{\n  position:sticky!important; top:0!important; z-index:10050!important;\n  background:transparent!important;\n  -webkit-backdrop-filter:none!important;\n  backdrop-filter:none!important;\n  padding:.55rem 0 1.35rem!important;\n}\n.vv-ticker-track{font-size:.74rem!important;font-weight:500!important;letter-spacing:.12em!important;gap:1.2rem!important;}\n.vv-ticker-track span{gap:1.2rem!important;}\n.vv-ticker-track span::after{font-size:.95rem!important;transform:scale(1.05)!important;}\n\/* Ticker + nav pill \u2014 darker frosted glass (gap stays clear) *\/\n.vv-ticker-wrap{\n  background-color:rgba(0,0,0,.72)!important;\n  backdrop-filter:blur(22px) saturate(1.4)!important;\n  -webkit-backdrop-filter:blur(22px) saturate(1.4)!important;\n  margin-bottom:.85rem!important;\n}\n.vv-nav{\n  padding:26px 28px!important;min-height:90px!important;border-radius:16px!important;\n  background:rgba(0,0,0,.62)!important;\n  backdrop-filter:blur(24px) saturate(1.45)!important;\n  -webkit-backdrop-filter:blur(24px) saturate(1.45)!important;\n  box-shadow:0 10px 40px rgba(0,0,0,.45)!important;\n}\n.vv-nav-links a{font-size:.95rem!important;}\n.vv-lang-switch{\n  display:inline-flex!important;align-items:center!important;gap:.28rem!important;\n  margin:0 .15rem 0 .35rem!important;padding:.32rem .55rem!important;\n  border:1px solid rgba(255,255,255,.16)!important;border-radius:999px!important;\n  background:rgba(0,0,0,.35)!important;\n  font-family:'JetBrains Mono',monospace!important;font-size:.7rem!important;letter-spacing:.08em!important;\n  flex:0 0 auto!important;position:relative!important;z-index:1!important;\n}\n.vv-lang-switch a{color:rgba(255,255,255,.68)!important;-webkit-text-fill-color:rgba(255,255,255,.68)!important;font-weight:600!important;background:transparent!important;padding:.12rem .28rem!important;text-decoration:none!important;}\n.vv-lang-switch a:hover,.vv-lang-switch a.is-active{color:#00E5FF!important;-webkit-text-fill-color:#00E5FF!important;background:transparent!important;}\n.vv-lang-switch a::after{content:none!important;display:none!important;}\n.vv-lang-dock{display:none!important;}\n\/* Hide TranslatePress floater \u2014 custom nav switcher replaces it *\/\n#trp-floater-ls,.trp-floater-ls-container,.trp-language-switcher-container{display:none!important;}\nhtml[lang^=\"ar\"] body,.rtl .tc-v2-root{direction:rtl;}\nhtml[lang^=\"ar\"] .vv-logo{align-items:flex-end;}\nhtml[lang^=\"ar\"] .vv-nav-links{flex-direction:row-reverse;}\nhtml[lang^=\"ar\"] .vv-nav-ctas{flex-direction:row-reverse;}\nhtml[lang^=\"ar\"] .vv-lang-switch{order:1;}\n@media (max-width:900px){\n  .vv-lang-switch{\n    display:inline-flex!important;margin-left:auto!important;margin-right:.1rem!important;\n    padding:.28rem .48rem!important;font-size:.62rem!important;gap:.16rem!important;\n  }\n  .vv-lang-switch a{padding:.1rem .22rem!important;}\n  html[lang^=\"ar\"] .vv-lang-switch{order:0!important;margin-left:0!important;margin-right:auto!important;}\n}\n.vv-nav-order,.vv-nav-trial{padding:.65rem 1.35rem!important;font-size:.8rem!important;}\n@media (max-width:1100px){\n  .vv-nav-shell{padding:2.5rem 0 1rem!important;}\n  .vv-nav{padding:16px 18px!important;min-height:68px!important;}\n}\n@media (max-width:900px){\n  .vv-nav{\n    padding:16px 12px!important;border-radius:14px!important;gap:.6rem!important;min-height:64px!important;\n    background:rgba(0,0,0,.48)!important;\n    -webkit-backdrop-filter:blur(24px) saturate(1.45)!important;\n    backdrop-filter:blur(24px) saturate(1.45)!important;\n    border:1px solid rgba(255,255,255,.1)!important;\n    box-shadow:0 10px 40px rgba(0,0,0,.45)!important;\n  }\n  .vv-ticker-wrap{\n    background-color:rgba(0,0,0,.42)!important;\n    -webkit-backdrop-filter:blur(22px) saturate(1.4)!important;\n    backdrop-filter:blur(22px) saturate(1.4)!important;\n  }\n  .vv-ticker-track{will-change:auto!important;}\n}\n\/* Footer frosted glass (must win over any transparent section rules) *\/\n.vv-footer, footer.vv-footer {\n  background:rgba(6,10,18,.42)!important;\n  backdrop-filter:blur(22px) saturate(1.35)!important;\n  -webkit-backdrop-filter:blur(22px) saturate(1.35)!important;\n  border-top:1px solid rgba(255,255,255,.12)!important;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.06),0 -24px 48px rgba(0,0,0,.35)!important;\n  position:relative!important; z-index:4!important;\n}\n.vv-footer > .vv-max { border-top:none!important; }\n.vv-footer{overflow:hidden!important;}\n.vv-footer-map{position:absolute!important;inset:0!important;z-index:0!important;pointer-events:none!important;display:flex!important;align-items:center!important;justify-content:center!important;}\n.vv-footer-map img{width:auto!important;height:auto!important;max-width:100%!important;max-height:100%!important;opacity:.28!important;object-fit:contain!important;object-position:center center!important;filter:saturate(.9) brightness(1.05)!important;transform:none!important;margin:0 auto!important;}\n.vv-footer > .vv-max{position:relative!important;z-index:1!important;}\n\/* Devices CTA \u2014 white \/ black under right illustration *\/\n.vv-devices-cta{\n  background:#fff!important;color:#0a0a12!important;-webkit-text-fill-color:#0a0a12!important;\n  border:1px solid rgba(255,255,255,.9)!important;align-self:center!important;\n}\n.vv-devices-cta:hover{background:#f4f4f5!important;color:#000!important;-webkit-text-fill-color:#000!important;}\n.vv-devices-cta{align-self:flex-start!important;background:#fff!important;color:#0a0a12!important;-webkit-text-fill-color:#0a0a12!important;border:1px solid #fff!important;}\n.vv-devices-right{order:1!important;min-height:640px!important;align-items:center!important;}\n.vv-devices-left{order:2!important;}\n.vv-devices-lottie{min-height:640px!important;width:100%!important;}\n.vv-devices-lottie dotlottie-wc{width:min(760px,100%)!important;height:min(760px,72vw)!important;max-height:780px!important;}\n.vv-devices-layout{grid-template-columns:minmax(380px,1.2fr) minmax(280px,.95fr)!important;}\n\/* Speed result \u2014 white panel + Order Now *\/\n.vv-result-card{\n  background:#fff!important;border:1px solid #fff!important;border-radius:14px!important;\n  box-shadow:0 14px 40px rgba(0,0,0,.35)!important;text-align:left!important;\n  align-items:center!important;gap:1rem 1.25rem!important;padding:1.15rem 1.25rem!important;\n}\n.vv-result-card.is-open{display:flex!important;}\n.vv-result-msg{color:#0a0a12!important;font-weight:650!important;}\n.vv-result-order{\n  background:#0a0a12!important;color:#fff!important;-webkit-text-fill-color:#fff!important;\n  border:1px solid #0a0a12!important;border-radius:8px!important;font-weight:700!important;\n  letter-spacing:.08em!important;text-transform:uppercase!important;text-decoration:none!important;\n  padding:.75rem 1.35rem!important;\n}\n.vv-result-order:hover{color:#fff!important;-webkit-text-fill-color:#fff!important;filter:brightness(1.08);}\n\/* 1 Month plan \u2014 Order Now white border *\/\na#vvOrder1m,.vv-plan-card a#vvOrder1m{\n  border:1.5px solid #ffffff!important;color:#ffffff!important;-webkit-text-fill-color:#ffffff!important;\n  box-shadow:0 0 0 1px rgba(255,255,255,.15)!important;background:transparent!important;\n}\na#vvOrder1m:hover{\n  background:#fff!important;border-color:#fff!important;color:#0a0a12!important;-webkit-text-fill-color:#0a0a12!important;\n}\n#vv-speedtest,.vv-speed-tester,.vv-speed-frame-wrap{\n  background:transparent!important;\n  border:none!important;\n  box-shadow:none!important;\n  isolation:auto!important;\n  overflow:visible!important;\n  transform:none!important;\n  filter:none!important;\n  z-index:auto!important;\n}\n.vv-speed-head{\n  text-align:center!important;justify-content:center!important;align-items:center!important;\n}\n.vv-speed-head>div{width:100%!important;max-width:min(72rem,100%)!important;margin-left:auto!important;margin-right:auto!important;}\n.vv-speed-head .vv-h2,.vv-speed-head .vv-lead,.vv-speed-head .vv-eyebrow{text-align:center!important;}\n.vv-speed-head .vv-lead,.vv-speed-head .vv-cdn-note{margin-left:auto!important;margin-right:auto!important;}\n.vv-speed-head .vv-cdn-note{max-width:none!important;width:100%!important;}\n#vvSpeedPanel{\n  background:rgba(8,12,24,.28)!important;\n  border:1px solid rgba(255,255,255,.14)!important;\n  border-radius:16px!important;\n  backdrop-filter:blur(18px) saturate(1.35)!important;\n  -webkit-backdrop-filter:blur(18px) saturate(1.35)!important;\n  box-shadow:inset 0 1px 0 rgba(255,255,255,.10),0 18px 50px rgba(0,0,0,.18)!important;\n  isolation:auto!important;\n}\n\/* Hero H1 \u2014 one tight title block (no gap before soft line) *\/\n.vv-hero-h1{\n  letter-spacing:.04em!important;line-height:.9!important;\n  text-shadow:0 0 28px rgba(0,229,255,.12)!important;\n  font-size:clamp(2.7rem,4.55vw,4.45rem)!important;\n}\n.vv-h1-soft{\n  display:block!important;margin:-.22em 0 0!important;padding:0!important;\n  font-family:'Manrope',sans-serif!important;font-weight:300!important;\n  font-size:.55em!important;letter-spacing:.14em!important;line-height:1!important;\n  text-transform:uppercase!important;color:rgba(255,255,255,.92)!important;\n  -webkit-text-fill-color:rgba(255,255,255,.92)!important;text-shadow:none!important;\n}\n.vv-h1-soft .vv-h1-cyan{font-weight:300!important;color:#00E5FF!important;-webkit-text-fill-color:#00E5FF!important;}\n\/* Hero \u2014 fuller type + spacing; CTAs stay same size *\/\n.vv-hero-section{\n  min-height:calc(100vh - 240px)!important;\n  min-height:calc(100dvh - 240px)!important;\n  align-items:center!important;\n  padding-top:1.45rem!important;\n  padding-bottom:3.5rem!important;\n  box-sizing:border-box!important;\n}\n.vv-hero-section .vv-eyebrow{\n  font-size:.78rem!important;letter-spacing:.14em!important;margin-bottom:.4rem!important;\n}\n.vv-hero-sub{\n  font-size:clamp(.88rem,1.05vw,1rem)!important;\n  line-height:1.55!important;opacity:.72!important;\n  max-width:36rem!important;margin-top:.25rem!important;\n}\n.vv-hero-btns{margin-top:1.25rem!important;margin-bottom:.35rem!important;}\n.vv-hero-how{font-size:.92rem!important;letter-spacing:.04em!important;}\n.vv-hero-trust{\n  justify-content:flex-start!important;align-items:flex-start!important;\n  gap:.5rem 1.65rem!important;margin-left:0!important;margin-right:auto!important;\n  margin-top:1.45rem!important;padding:1.15rem .85rem .9rem!important;\n  position:relative!important;isolation:isolate!important;z-index:6!important;\n  border-radius:12px!important;background:transparent!important;box-shadow:none!important;\n}\n.vv-mesh-block{\n  position:absolute!important;inset:-10px -14px -14px!important;z-index:0!important;\n  pointer-events:none!important;border-radius:24px!important;\n  background:radial-gradient(ellipse 90% 80% at 50% 50%,rgba(0,0,0,.95) 0%,rgba(0,0,0,.78) 42%,rgba(0,0,0,.4) 68%,rgba(0,0,0,.12) 84%,transparent 94%)!important;\n  box-shadow:none!important;\n}\n\/* Soft black overlay \u2014 full player, faded from bottom, ABOVE content *\/\n.vv-soft-shade{display:none!important;}\n.vv-soft-shade--player{\n  display:block!important;visibility:visible!important;opacity:1!important;\n  position:absolute!important;inset:0!important;left:0!important;right:0!important;top:0!important;bottom:0!important;\n  height:auto!important;z-index:20!important;pointer-events:none!important;border-radius:18px!important;\n  background:linear-gradient(to top,#000 0%,rgba(0,0,0,.95) 10%,rgba(0,0,0,.7) 28%,rgba(0,0,0,.42) 50%,rgba(0,0,0,.2) 72%,rgba(0,0,0,.08) 100%)!important;\n  backdrop-filter:none!important;-webkit-backdrop-filter:none!important;box-shadow:none!important;\n  -webkit-mask-image:none!important;mask-image:none!important;\n}\n.vv-app-window-stats{\n  overflow:hidden!important;isolation:isolate!important;\n  border-top:1px solid rgba(255,255,255,.06)!important;\n  border-left:1px solid rgba(255,255,255,.06)!important;\n  border-right:1px solid rgba(255,255,255,.06)!important;\n  border-bottom:none!important;\n  -webkit-mask-image:linear-gradient(to top,transparent 0%,#000 22px,#000 100%)!important;\n  mask-image:linear-gradient(to top,transparent 0%,#000 22px,#000 100%)!important;\n}\n.vv-hero-trust>.vv-soft-shade{display:none!important;}\n.vv-app-window-stats>.vv-soft-shade{display:block!important;z-index:20!important;}\n.vv-hero-trust>.vv-mesh-block,.vv-app-window-stats>.vv-mesh-block{display:none!important;}\n.vv-hero-trust::before,.vv-hero-trust::after,\n.vv-app-window-stats::before,.vv-app-window-stats::after,\n.vv-app-stats::before{content:none!important;display:none!important;}\n.vv-hero-trust>*:not(.vv-soft-shade),.vv-app-window-stats>*:not(.vv-soft-shade){\n  position:relative!important;z-index:1!important;\n}\n.vv-mesh-block--scroll{\n  inset:auto!important;left:50%!important;top:52%!important;width:160px!important;height:160px!important;\n  transform:translate(-50%,-50%)!important;border-radius:50%!important;\n  background:radial-gradient(circle,#000 0%,#000 55%,rgba(0,0,0,.75) 72%,transparent 100%)!important;\n  box-shadow:0 0 28px 12px rgba(0,0,0,.9)!important;\n}\n.vv-mesh-block--player{\n  inset:-14px -18px -18px!important;border-radius:28px!important;\n  background:radial-gradient(ellipse 90% 80% at 50% 50%,rgba(0,0,0,.95) 0%,rgba(0,0,0,.78) 42%,rgba(0,0,0,.4) 68%,rgba(0,0,0,.12) 84%,transparent 94%)!important;\n  box-shadow:none!important;\n}\n.vv-hero-section{position:relative!important;z-index:3!important;}\n.vv-network-bg,.tc-v2-root>.vv-network-bg,body>.vv-network-bg{z-index:0!important;}\n\/* Soft black under trust \u2014 disabled; .vv-soft-shade handles it *\/\n.vv-hero-trust::before,.vv-hero-trust::after{content:none!important;display:none!important;}\n.vv-trust-item{\n  flex:0 0 auto!important;text-align:center!important;align-items:center!important;\n  font-size:.95rem!important;gap:.2rem!important;position:relative!important;z-index:5!important;\n  color:rgba(210,216,228,.95)!important;\n}\n.vv-trust-num{\n  font-size:clamp(1.95rem,2.55vw,2.7rem)!important;line-height:1!important;position:relative!important;z-index:6!important;\n}\n\/* Lock hero buttons \u2014 do not scale with larger section type *\/\n.vv-hero-section .vv-btn{\n  padding:.55rem 1.15rem!important;font-size:.72rem!important;font-weight:700!important;\n  letter-spacing:.08em!important;border-radius:6px!important;line-height:1.2!important;\n  min-height:0!important;\n}\n@media (min-width:1025px){\n  .vv-hero-section .vv-btn{\n    padding:.85rem 1.85rem!important;font-size:.88rem!important;\n    letter-spacing:.09em!important;border-radius:8px!important;min-height:48px!important;\n  }\n}\n@media (max-width:900px){\n  .vv-hero-section{\n    min-height:0!important;\n    align-items:flex-start!important;\n    padding-top:3.4rem!important;\n    padding-bottom:2.25rem!important;\n  }\n  .vv-hero-h1{font-size:clamp(2.05rem,8vw,2.65rem)!important;line-height:.92!important;}\n  .vv-hero-sub{font-size:.8rem!important;line-height:1.45!important;max-width:100%!important;}\n  .vv-hero-section .vv-eyebrow{font-size:.55rem!important;letter-spacing:.1em!important;margin-bottom:.25rem!important;}\n  .vv-hero-btns{margin-top:.7rem!important;margin-bottom:0!important;gap:.4rem!important;}\n  .vv-hero-how{font-size:.78rem!important;}\n  .vv-hero-trust{margin-top:.35rem!important;padding:.45rem 0 .1rem!important;}\n  .vv-trust-num{font-size:1.4rem!important;}\n  .vv-hero-section .vv-btn{\n    padding:.68rem 1.15rem!important;font-size:.76rem!important;min-height:0!important;\n  }\n}\n\/* News Live tile \u2014 slightly higher toward center *\/\n\/* News Live tile \u2014 slightly higher toward center (desktop only) *\/\n@media (min-width:901px){\n  .vv-app-float-grid .vv-app-cell:nth-child(3),\n  .vv-app-float-grid .vv-cell-news{\n    top:calc(50% - 12%)!important;\n  }\n}\n\/* Trust \/ features row \u2014 left group, centered text per item *\/\n\/* (sizes set in hero block above) *\/\n\/* Trial CTA \u2014 filled band: copy grows, dual CTAs on the right *\/\n.vv-final-cta-inner{\n  display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;\n  align-items:center!important;justify-content:space-between!important;\n  gap:1.35rem 1.75rem!important;text-align:left!important;\n  max-width:min(1320px,100%)!important;width:100%!important;\n  padding:2.35rem 2.25rem!important;margin:0 auto!important;\n  background:linear-gradient(105deg,#00E5FF 0%,#2F6BFF 48%,#7c5cff 100%)!important;\n  border:1px solid rgba(255,255,255,.18)!important;\n  box-shadow:0 20px 60px rgba(47,107,255,.35),inset 0 1px 0 rgba(255,255,255,.2)!important;\n}\n.vv-final-cta-copy{flex:1 1 auto!important;min-width:0!important;max-width:none!important;text-align:left!important}\n.vv-final-cta-inner .vv-h2{\n  margin:.2rem 0 .55rem!important;white-space:normal!important;\n  font-size:clamp(2.15rem,3.4vw,3.15rem)!important;line-height:1.05!important;\n  color:#fff!important;-webkit-text-fill-color:#fff!important;\n}\n.vv-final-cta-inner .vv-h2 span,\n.vv-final-cta-inner .vv-h2 .vv-trial-brand{\n  color:#00E5FF!important;-webkit-text-fill-color:#00E5FF!important;background:none!important;opacity:1!important;\n}\n.vv-final-cta-inner .vv-lead{\n  margin:0!important;max-width:52ch!important;\n  color:rgba(255,255,255,.98)!important;font-size:1.08rem!important;\n  line-height:1.62!important;font-weight:500!important;opacity:1!important;\n}\n.vv-final-cta-inner .vv-eyebrow{color:#fff!important;-webkit-text-fill-color:#fff!important;font-size:.88rem!important}\n.vv-trial-lottie dotlottie-wc{width:150px!important;height:150px!important;max-width:150px!important}\n.vv-final-cta-btns{\n  display:flex!important;flex-direction:row!important;flex-wrap:nowrap!important;\n  justify-content:flex-end!important;align-items:center!important;gap:.75rem .9rem!important;\n  margin:0 0 0 auto!important;width:auto!important;max-width:none!important;flex:0 0 auto!important;\n}\n.vv-final-cta-btns .vv-btn{\n  display:inline-flex!important;width:auto!important;max-width:none!important;flex:0 0 auto!important;\n  border-radius:999px!important;white-space:nowrap!important;\n  font-size:.92rem!important;padding:1.05rem 1.55rem!important;line-height:1.15!important;\n}\n.vv-final-cta-btns .vv-trial-primary{\n  background:#fff!important;color:#0a0a12!important;-webkit-text-fill-color:#0a0a12!important;\n  border:none!important;box-shadow:0 8px 28px rgba(0,0,0,.22)!important;\n}\n.vv-final-cta-btns .vv-trial-primary:hover{\n  background:#0a0a12!important;color:#fff!important;-webkit-text-fill-color:#fff!important;\n}\n.vv-final-cta-btns .vv-btn-outline,\n.vv-final-cta-btns .vv-trial-pricing{\n  display:inline-flex!important;\n  background:rgba(0,0,0,.22)!important;color:#fff!important;-webkit-text-fill-color:#fff!important;\n  border:none!important;box-shadow:0 0 0 1.5px rgba(255,255,255,.95)!important;\n}\n.vv-final-cta-btns .vv-btn-outline:hover,\n.vv-final-cta-btns .vv-trial-pricing:hover{\n  background:#fff!important;color:#0a0a12!important;-webkit-text-fill-color:#0a0a12!important;\n  box-shadow:0 0 0 1.5px #fff!important;\n}\n@media (max-width:1100px){\n  .vv-final-cta-inner{flex-wrap:wrap!important}\n  .vv-final-cta-inner .vv-h2{white-space:normal!important}\n  .vv-final-cta-btns{flex:1 1 100%!important;justify-content:flex-start!important;width:100%!important;margin-left:0!important}\n}\n@media (max-width:600px){\n  .vv-final-cta-inner{flex-direction:column!important;align-items:stretch!important;padding:1.55rem 1.1rem!important}\n  .vv-final-cta-copy{text-align:center!important}\n  .vv-final-cta-inner .vv-lead{margin-left:auto!important;margin-right:auto!important}\n  .vv-final-cta-btns{flex-direction:row!important;flex-wrap:nowrap!important;justify-content:center!important;width:100%!important;margin:0!important}\n  .vv-final-cta-btns .vv-btn{flex:1 1 0!important;white-space:normal!important;padding:.95rem 1rem!important;font-size:.85rem!important}\n}\n\/* How it works hover *\/\n.vv-hero-how:hover{color:#00E5FF!important;transform:translateX(4px)!important;text-shadow:0 0 18px rgba(0,229,255,.45)!important;}\n.vv-hero-how:hover .vv-hero-how-arrow{transform:translateX(6px)!important;}\n\/* Get Free Trial outline \u2014 try 0.3px hairline *\/\n.vv-btn-outline,\n.vv-hero-section .vv-btn-outline{\n  border:none!important;\n  box-shadow:0 0 0 .3px #fff!important;\n}\n.vv-btn-outline:hover,\n.vv-hero-section .vv-btn-outline:hover{\n  border:none!important;\n  box-shadow:0 0 0 .3px #fff!important;\n}\n\/* Nav Get Trial \u2014 outline default, white fill on hover only *\/\n.tc-v2-root a.vv-nav-trial,\n.vv-wrap a.vv-nav-trial,\na.vv-nav-trial,\n.tc-v2-root a.vv-mob-trial,\n.vv-wrap a.vv-mob-trial,\na.vv-mob-trial{\n  background:transparent!important;\n  background-color:transparent!important;\n  background-image:none!important;\n  color:#fff!important;\n  -webkit-text-fill-color:#fff!important;\n  border:1.5px solid #fff!important;\n  box-shadow:none!important;\n}\n.tc-v2-root a.vv-nav-trial:hover,\n.vv-wrap a.vv-nav-trial:hover,\na.vv-nav-trial:hover,\n.tc-v2-root a.vv-mob-trial:hover,\n.vv-wrap a.vv-mob-trial:hover,\na.vv-mob-trial:hover,\n.tc-v2-root a.vv-nav-trial:focus-visible,\na.vv-nav-trial:focus-visible{\n  background:#fff!important;\n  background-color:#fff!important;\n  background-image:none!important;\n  color:#0a0a12!important;\n  -webkit-text-fill-color:#0a0a12!important;\n  border-color:#fff!important;\n  box-shadow:0 8px 28px rgba(255,255,255,.22)!important;\n}\n\/* Header nav links \u2014 white pill hover *\/\n.vv-nav-links a:hover, .vv-nav-links a:focus, .vv-nav-links a:focus-visible,\n.tc-v2-root .vv-nav-links a:hover, .vv-wrap .vv-nav-links a:hover{\n  color:#0a0a12!important;-webkit-text-fill-color:#0a0a12!important;\n  background:#fff!important;background-color:#fff!important;\n  box-shadow:0 6px 20px rgba(255,255,255,.18)!important;\n  text-shadow:none!important;\n}\n.vv-mobile-menu a:hover{\n  color:#0a0a12!important;-webkit-text-fill-color:#0a0a12!important;background:#fff!important;\n}\n\/* FAQ hover \u2014 white fill \/ dark text *\/\n.vv-faq-item:hover > .vv-faq-q,\n.vv-faq-q:hover, .vv-faq-q:focus, .vv-faq-q:focus-visible,\n.tc-v2-root .vv-faq-list .vv-faq-item .vv-faq-q:hover,\n.vv-wrap .vv-faq-list .vv-faq-item .vv-faq-q:hover,\n.tc-v2-root .vv-faq-q:hover, .vv-wrap .vv-faq-q:hover{\n  background:#fff!important;background-color:#fff!important;background-image:none!important;\n  color:#0a0a12!important;-webkit-text-fill-color:#0a0a12!important;\n  box-shadow:0 8px 28px rgba(255,255,255,.14)!important;\n}\n.vv-faq-item:hover > .vv-faq-q .vv-faq-icon,\n.vv-faq-q:hover .vv-faq-icon, .vv-faq-q:focus .vv-faq-icon,\n.vv-faq-q.open:hover .vv-faq-icon{\n  color:#0a0a12!important;\n}\n.vv-faq-item:hover > .vv-faq-q.open,\n.vv-faq-q.open:hover, .vv-faq-q.open:focus{\n  background:#fff!important;background-color:#fff!important;\n  color:#0a0a12!important;-webkit-text-fill-color:#0a0a12!important;\n}\n\/* Soft merge \u2014 hero \u2192 pure black (fade UNDER Lottie\/tiles\/scroll \u2014 never cover media) *\/\n.vv-hero-section::after{\n  content:''!important;position:absolute!important;left:0!important;right:0!important;bottom:0!important;\n  height:min(460px,55vh)!important;z-index:0!important;pointer-events:none!important;\n  background:linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgba(0,0,0,.28) 16%,rgba(0,0,0,.62) 38%,rgba(0,0,0,.88) 58%,rgba(0,0,0,.98) 78%,#000 100%)!important;\n}\n.vv-hero-inner,.vv-hero-text,.vv-hero-mockup{position:relative!important;z-index:2!important;}\n\/* Soft faded black band under features row (trust + player) *\/\n.vv-hero-inner::after{\n  content:''!important;display:block!important;position:absolute!important;\n  left:-1%!important;right:-1%!important;bottom:3.25rem!important;height:min(220px,32%)!important;\n  z-index:1!important;pointer-events:none!important;\n  background:radial-gradient(ellipse 98% 85% at 50% 55%,rgba(0,0,0,.94) 0%,rgba(0,0,0,.78) 38%,rgba(0,0,0,.42) 62%,rgba(0,0,0,.12) 80%,transparent 92%)!important;\n}\n.vv-hero-stage{position:relative!important;z-index:4!important;}\n.vv-hero-lottie{position:relative!important;z-index:5!important;opacity:1!important;visibility:visible!important;display:flex!important;}\n.vv-float-badge.vv-float-uptime{position:absolute!important;top:-32px!important;left:0!important;right:0!important;width:100%!important;transform:none!important;z-index:12!important;opacity:1!important;visibility:visible!important;display:flex!important;align-items:center!important;justify-content:center!important;isolation:isolate!important;background:transparent!important;border:none!important;box-shadow:none!important;margin:0!important;}\n.vv-float-uptime-inner{\n  position:relative!important;z-index:2!important;display:flex!important;align-items:center!important;justify-content:center!important;gap:.85rem!important;margin:0 auto!important;\n  background:transparent!important;border:none!important;border-radius:0!important;padding:0!important;\n  color:#e8fbff!important;box-shadow:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;\n  text-shadow:0 0 10px rgba(0,229,255,.35)!important;overflow:visible!important;\n  animation:vvFloatUptime 4.6s ease-in-out infinite!important;\n}\n.vv-float-uptime-inner::before{content:none!important;display:none!important;}\n.vv-live-gif{width:56px!important;height:56px!important;filter:drop-shadow(0 0 12px rgba(0,229,255,.7))!important;}\n.vv-live-gif dotlottie-wc{width:56px!important;height:56px!important;}\n@keyframes vvHoloFlicker{\n  0%,100%{opacity:1;filter:brightness(1)}\n  42%{opacity:.92;filter:brightness(1.08)}\n  48%{opacity:1;filter:brightness(1.15)}\n  52%{opacity:.88;filter:brightness(.95)}\n  58%{opacity:1;filter:brightness(1.05)}\n}\n.vv-app-float-grid{position:absolute!important;inset:0!important;z-index:5!important;display:block!important;opacity:1!important;visibility:visible!important;}\n.vv-app-float-grid .vv-app-cell{opacity:1!important;visibility:visible!important;}\n.vv-scroll-cue{isolation:isolate!important;z-index:20!important;position:absolute!important;opacity:1!important;visibility:visible!important;}\n.vv-scroll-cue--inline{display:none!important;}\n.vv-scroll-cue--dock{display:flex!important;}\n.vv-scroll-cue::before{\n  content:''!important;position:absolute!important;left:50%!important;top:55%!important;\n  width:150px!important;height:150px!important;transform:translate(-50%,-50%)!important;\n  z-index:0!important;pointer-events:none!important;border-radius:50%!important;\n  background:radial-gradient(circle at 50% 50%,rgba(0,0,0,.95) 0%,rgba(0,0,0,.75) 48%,rgba(0,0,0,.35) 72%,transparent 88%)!important;\n  box-shadow:none!important;\n}\n.vv-scroll-cue::after{\n  content:''!important;display:block!important;position:absolute!important;\n  left:0!important;right:0!important;bottom:0!important;height:58%!important;\n  z-index:6!important;pointer-events:none!important;\n  background:linear-gradient(to top,#000 0%,#000 38%,rgba(0,0,0,.9) 62%,rgba(0,0,0,.45) 82%,rgba(0,0,0,.12) 94%,transparent 100%)!important;\n}\n.vv-scroll-cue>*{position:relative!important;z-index:2!important;}\n.vv-scroll-cue dotlottie-wc{display:block!important;width:140px!important;height:140px!important;opacity:1!important;visibility:visible!important;position:relative!important;z-index:3!important;}\n.vv-app-window{background:rgba(8,10,18,.96)!important;z-index:6!important;opacity:1!important;border:1px solid rgba(255,255,255,.06)!important;}\n.vv-app-window-stats{\n  position:relative!important;isolation:isolate!important;z-index:5!important;\n  background:rgba(8,10,18,.82)!important;backdrop-filter:blur(10px) saturate(1.05)!important;-webkit-backdrop-filter:blur(10px) saturate(1.05)!important;\n  overflow:hidden!important;\n  border-top:1px solid rgba(255,255,255,.06)!important;\n  border-left:1px solid rgba(255,255,255,.06)!important;\n  border-right:1px solid rgba(255,255,255,.06)!important;\n  border-bottom:none!important;\n  -webkit-mask-image:linear-gradient(to top,transparent 0%,#000 22px,#000 100%)!important;\n  mask-image:linear-gradient(to top,transparent 0%,#000 22px,#000 100%)!important;\n}\n.vv-app-window-stats::before,.vv-app-window-stats::after,.vv-app-stats::before{content:none!important;display:none!important;}\n.vv-app-window-stats>*:not(.vv-soft-shade){position:relative!important;z-index:1!important;}\n.vv-app-window-stats>.vv-soft-shade{z-index:20!important;display:block!important;}\n.vv-app-bar{background:rgba(0,0,0,.35)!important;position:relative!important;z-index:1!important;}\n.vv-app-stats{\n  background:rgba(0,0,0,.28)!important;position:relative!important;isolation:isolate!important;z-index:1!important;\n}\n.vv-app-stat{position:relative!important;z-index:1!important;}\n.vv-app-stat strong{position:relative!important;z-index:1!important;color:#fff!important;-webkit-text-fill-color:#fff!important;}\n.vv-app-stat span{color:rgba(220,220,230,.95)!important;}\n.vv-app-title{color:rgba(210,210,220,.95)!important;}\n.vv-trust-num{position:relative!important;z-index:6!important;}\n.vv-trust-item{position:relative!important;z-index:5!important;}\n\/* Terminal \u2014 transparent black body, solid header, mobile page-scroll *\/\n.vv-term-layout{align-items:stretch!important;}\n.vv-term-window{\n  height:100%!important;min-height:560px!important;max-height:none!important;\n  overflow:hidden!important;display:flex!important;flex-direction:column!important;\n  contain:layout style;box-sizing:border-box!important;position:relative!important;\n  align-self:stretch!important;\n  background:rgba(0,0,0,.48)!important;\n  -webkit-backdrop-filter:blur(12px)!important;backdrop-filter:blur(12px)!important;\n  touch-action:pan-y!important;\n}\n.vv-term-bar{\n  flex:0 0 auto!important;background:#1a1a1a!important;\n  -webkit-backdrop-filter:none!important;backdrop-filter:none!important;\n}\n.vv-term-input-row{\n  flex:0 0 auto!important;background:transparent!important;\n  border-top:1px solid rgba(42,42,42,.55)!important;\n}\n.vv-term-scroll{\n  flex:1 1 0%!important;min-height:0!important;height:auto!important;\n  overflow-y:auto!important;overflow-x:hidden!important;overscroll-behavior:auto;\n  scrollbar-width:none!important;-ms-overflow-style:none!important;\n  background:transparent!important;touch-action:pan-y!important;\n  display:block!important;justify-content:flex-start!important;\n}\n.vv-term-scroll::-webkit-scrollbar{display:none!important;width:0!important;height:0!important;}\n.vv-term-body,pre.vv-term-body,#vvTermBody{\n  min-height:0!important;max-height:none!important;height:auto!important;\n  width:100%!important;max-width:100%!important;box-sizing:border-box!important;\n  overflow:visible!important;white-space:pre-wrap!important;word-break:break-word!important;\n  background:transparent!important;text-align:left!important;\n}\n@media (max-width:900px){\n  .vv-term-window{height:420px!important;max-height:420px!important;min-height:420px!important;touch-action:pan-y!important;}\n  .vv-term-scroll{\n    overflow:hidden!important;overscroll-behavior:auto!important;\n    touch-action:pan-y!important;-webkit-overflow-scrolling:auto!important;\n  }\n}\n\/* Speed gauge \u2014 stable SVG needle (no CSS rotate on <g>) *\/\n.vv-odo-needle{transition:none!important;will-change:auto!important;transform:none!important;}\n.vv-odo-fill{transition:none!important;}\n.vv-odo-needle polygon,.vv-odo-needle circle{transition:none!important;}\n\/* Guides marquee \u2014 continuous ticker-style scroll *\/\n@keyframes vvGuidesMarquee{\n  from{transform:translate3d(0,0,0)}\n  to{transform:translate3d(-50%,0,0)}\n}\n#vv-guides .vv-guides-carousel{position:relative!important;}\n#vv-guides .vv-guides-viewport{\n  overflow:hidden!important;margin:0 3rem!important;\n  -webkit-mask-image:linear-gradient(90deg,transparent 0%,#000 3%,#000 97%,transparent 100%)!important;\n  mask-image:linear-gradient(90deg,transparent 0%,#000 3%,#000 97%,transparent 100%)!important;\n}\n#vv-guides .vv-guides-track{\n  display:flex!important;flex-wrap:nowrap!important;gap:1.15rem!important;width:max-content!important;\n  overflow:visible!important;scroll-snap-type:none!important;\n  padding:.35rem .15rem .85rem!important;will-change:transform!important;\n  animation:vvGuidesMarquee 48s linear infinite!important;\n}\n#vv-guides .vv-guides-carousel.is-paused .vv-guides-track,\n#vv-guides .vv-guides-carousel:hover .vv-guides-track{animation-play-state:paused!important;}\n#vv-guides .vv-guide-card{\n  flex:0 0 280px!important;width:280px!important;\n  display:flex!important;flex-direction:column!important;gap:.65rem!important;\n  min-height:172px!important;padding:1.45rem 1.35rem 1.3rem!important;\n  border:1px solid rgba(255,255,255,.1)!important;border-radius:16px!important;\n  background:rgba(14,16,26,.88)!important;color:#f4f4f5!important;text-decoration:none!important;\n  transition:border-color .22s ease,background .22s ease,box-shadow .22s ease!important;\n}\n#vv-guides .vv-guide-card:hover,#vv-guides .vv-guide-card:focus-visible{\n  border-color:rgba(0,229,255,.55)!important;\n  background:rgba(18,24,40,.98)!important;\n  box-shadow:0 16px 40px rgba(0,0,0,.45),0 0 0 1px rgba(0,229,255,.18),0 0 28px rgba(0,229,255,.16)!important;\n}\n#vv-guides .vv-guide-kicker{display:block!important;font-size:.7rem!important;letter-spacing:.14em!important;text-transform:uppercase!important;color:#00E5FF!important;font-weight:600!important;}\n#vv-guides .vv-guide-title{display:block!important;font-weight:700!important;font-size:1.05rem!important;line-height:1.35!important;color:#fff!important;flex:1 1 auto!important;}\n#vv-guides .vv-guide-desc{display:block!important;color:#a1a1aa!important;font-size:.88rem!important;line-height:1.45!important;margin-top:auto!important;}\n#vv-guides .vv-guides-nav{\n  position:absolute!important;top:50%!important;transform:translateY(-55%)!important;z-index:2!important;\n  width:42px!important;height:42px!important;border-radius:50%!important;\n  border:1px solid rgba(0,229,255,.35)!important;background:rgba(8,12,22,.92)!important;color:#00E5FF!important;\n  cursor:pointer!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;padding:0!important;\n}\n#vv-guides .vv-guides-prev{left:0!important;}\n#vv-guides .vv-guides-next{right:0!important;}\n#vv-guides .vv-guides-dots{display:none!important;}\n@media (max-width:900px){\n  #vv-guides .vv-guides-viewport{margin:0 2.6rem!important;}\n  #vv-guides .vv-guide-card{flex-basis:240px!important;width:240px!important;min-height:156px!important;}\n  #vv-guides .vv-guides-track{animation-duration:42s!important;}\n}\n@media (max-width:560px){\n  #vv-guides .vv-guides-viewport{margin:0 2.35rem!important;}\n  #vv-guides .vv-guide-card{flex-basis:220px!important;width:220px!important;}\n  #vv-guides .vv-guides-track{animation-duration:38s!important;}\n}\n\/* Float widgets \u2014 external portal, always on top *\/\na.vv-wa-float, .vv-wa-float, body > a.vv-wa-float, .tc-v2-root > a.vv-wa-float, #vv-float-portal > a.vv-wa-float{\n  bottom:calc(48px + env(safe-area-inset-bottom, 0px))!important;\n  z-index:2147483647!important;\n}\n.vv-back-top, body > .vv-back-top, .tc-v2-root > .vv-back-top, #vv-float-portal > .vv-back-top{\n  bottom:calc(120px + env(safe-area-inset-bottom, 0px))!important;\n  z-index:2147483646!important;\n}\n#vv-float-portal{\n  position:fixed!important;top:0!important;left:0!important;right:auto!important;bottom:auto!important;\n  width:0!important;height:0!important;pointer-events:none!important;overflow:visible!important;\n  z-index:2147483646!important;transform:none!important;isolation:auto!important;contain:none!important;\n}\n@media (max-width:900px){\n  a.vv-wa-float, .vv-wa-float, body > a.vv-wa-float, #vv-float-portal > a.vv-wa-float{\n    bottom:36px!important;right:14px!important;\n    transform:none!important;-webkit-transform:none!important;\n    isolation:auto!important;contain:none!important;\n  }\n  .vv-back-top, body > .vv-back-top, #vv-float-portal > .vv-back-top{\n    bottom:100px!important;right:14px!important;\n    transform:none!important;-webkit-transform:none!important;\n    isolation:auto!important;contain:none!important;\n  }\n  body.tc-space-ready::after{animation:none!important;transform:none!important;}\n}\n\/* ========== MOBILE PARITY \u2014 keep desktop look as much as possible ========== *\/\n@media (max-width:900px){\n  html{overflow-x:visible!important;overflow-y:auto!important;}\n  body,body.home,body.tc-native-home{overflow:visible!important;overflow-x:visible!important;overflow-y:visible!important;}\n  .tc-v2-root,.vv-wrap,.vv-hero-section,.vv-section,.vv-section-alt{overflow-x:clip!important;}\n  .vv-max{max-width:100%!important;padding-left:1.15rem!important;padding-right:1.15rem!important;box-sizing:border-box!important;}\n  .vv-section,.vv-section-alt{padding:3.75rem 1.15rem!important;}\n  .vv-h2{font-size:clamp(2.15rem,7.5vw,3.35rem)!important;line-height:1.05!important;}\n  .vv-lead{font-size:1rem!important;line-height:1.6!important;max-width:40rem!important;}\n  .vv-eyebrow{font-size:.78rem!important;}<\/p>\n<p>  \/* Hero \u2014 first screen ends at mid Scroll Down (full GIF, lower half clipped) *\/\n  .vv-hero-section{\n    padding:1.35rem 1.1rem 0!important;\n    min-height:0!important;\n    display:flex!important;flex-direction:column!important;align-items:flex-start!important;\n  }\n  .vv-hero-section::after{\n    height:min(380px,48vh)!important;\n    background:linear-gradient(to bottom,rgba(0,0,0,0) 0%,rgba(0,0,0,.28) 20%,rgba(0,0,0,.7) 48%,rgba(0,0,0,.94) 78%,#000 100%)!important;\n  }\n  .vv-scroll-cue::before{width:118px!important;height:118px!important;}\n  .vv-scroll-cue--dock{display:none!important;}\n  .vv-hero-mockup::after{display:none!important;}\n  .vv-hero-inner{\n    width:100%!important;max-width:100%!important;text-align:left!important;\n    display:flex!important;flex-direction:column!important;\n    gap:0!important;position:relative!important;\n  }\n  .vv-hero-inner::before{content:none!important;display:none!important;}\n  .vv-hero-section{padding:.35rem 1rem 0!important;min-height:0!important;align-items:flex-start!important;display:flex!important;flex-direction:column!important;}\n  .vv-hero-inner::after{content:none!important;display:none!important;}\n  .vv-hero-screen1{\n    display:flex!important;flex-direction:column!important;justify-content:center!important;width:100%!important;\n    min-height:calc(var(--vv-hero-vh,100vh) - 5.75rem)!important;max-height:none!important;\n    overflow:visible!important;position:relative!important;box-sizing:border-box!important;\n    padding-top:.25rem!important;padding-bottom:6.75rem!important;\n  }\n  .vv-hero-screen1::after{content:none!important;display:none!important;}\n  .vv-hero-text{\n    display:flex!important;flex-direction:column!important;\n    align-items:flex-start!important;text-align:left!important;\n    width:100%!important;max-width:100%!important;gap:.45rem!important;order:1!important;\n    height:auto!important;flex:0 0 auto!important;box-sizing:border-box!important;padding-bottom:0!important;z-index:5!important;\n    margin-top:0!important;margin-bottom:0!important;\n  }\n  .vv-scroll-cue--inline{\n    display:flex!important;position:absolute!important;left:50%!important;bottom:.55rem!important;\n    right:auto!important;top:auto!important;transform:translate3d(-50%,0,0)!important;margin:0!important;\n    order:unset!important;z-index:25!important;width:fit-content!important;height:auto!important;max-height:none!important;\n    pointer-events:auto!important;align-self:center!important;isolation:isolate!important;overflow:visible!important;\n    flex:0 0 auto!important;transition:none!important;will-change:auto!important;\n  }\n  .vv-scroll-cue--inline .vv-mesh-block--scroll{display:none!important;}\n  .vv-scroll-cue--inline::before{\n    content:''!important;display:block!important;position:absolute!important;left:50%!important;top:52%!important;\n    width:118px!important;height:118px!important;transform:translate(-50%,-50%)!important;\n    z-index:0!important;pointer-events:none!important;border-radius:50%!important;\n    background:radial-gradient(circle at 50% 50%,rgba(0,0,0,.95) 0%,rgba(0,0,0,.78) 42%,rgba(0,0,0,.4) 68%,transparent 88%)!important;\n  }\n  .vv-scroll-cue--inline::after{\n    content:''!important;display:block!important;position:absolute!important;\n    left:-12%!important;right:-12%!important;bottom:-4%!important;height:62%!important;\n    z-index:6!important;pointer-events:none!important;\n    background:linear-gradient(to top,#000 0%,rgba(0,0,0,.92) 30%,rgba(0,0,0,.55) 62%,transparent 100%)!important;\n  }\n  .vv-scroll-cue--inline>*{position:relative!important;z-index:2!important;}\n  .vv-scroll-cue--inline,.vv-scroll-cue--inline *{pointer-events:auto!important;}\n  .vv-scroll-cue--inline:hover,.vv-scroll-cue--inline:active,.vv-scroll-cue--inline:focus{transform:translate3d(-50%,0,0)!important;}\n  .vv-scroll-cue--inline dotlottie-wc{width:100px!important;height:100px!important;display:block!important;position:relative!important;z-index:3!important;transform:none!important;transition:none!important;}\n  .vv-hero-trust{position:relative!important;z-index:6!important;}\n  .vv-hero-text .vv-eyebrow,\n  .vv-hero-text .vv-hero-h1,\n  .vv-hero-text .vv-hero-sub,\n  .vv-hero-text .vv-hero-btns{max-width:100%!important;text-align:left!important;}\n  .vv-hero-section .vv-eyebrow{justify-content:flex-start!important;}\n  .vv-hero-h1{font-size:clamp(2.05rem,8vw,2.65rem)!important;text-align:left!important;line-height:.92!important;}\n  .vv-hero-sub{text-align:left!important;font-size:.8rem!important;opacity:.78!important;max-width:100%!important;line-height:1.45!important;}\n  .vv-hero-btns{\n    display:grid!important;\n    grid-template-columns:max-content max-content!important;\n    grid-template-areas:\"pricing trial\" \"how .\"!important;\n    justify-content:start!important;align-items:center!important;\n    column-gap:.55rem!important;row-gap:.4rem!important;\n    width:auto!important;margin-top:.55rem!important;margin-bottom:0!important;\n  }\n  .vv-hero-btns .vv-btn-red{grid-area:pricing!important;margin-right:0!important;}\n  .vv-hero-btns .vv-btn-outline{grid-area:trial!important;}\n  .vv-hero-section .vv-btn{\n    width:auto!important;max-width:none!important;flex:0 0 auto!important;\n    padding:.68rem 1.15rem!important;font-size:.76rem!important;\n  }\n  .vv-hero-how{\n    grid-area:how!important;width:auto!important;justify-self:start!important;\n    text-align:left!important;font-size:.78rem!important;margin-top:.05rem!important;\n  }\n  .vv-hero-trust{\n    display:flex!important;flex-wrap:nowrap!important;grid-template-columns:unset!important;\n    overflow:visible!important;justify-content:space-between!important;align-items:stretch!important;\n    gap:.15rem!important;width:100%!important;\n    margin-top:.55rem!important;padding:.55rem .2rem .45rem!important;\n    border-top:1px solid rgba(255,255,255,.1)!important;position:relative!important;isolation:isolate!important;\n  }\n  .vv-hero-trust::after,.vv-hero-trust::before{content:none!important;display:none!important;}\n  .vv-hero-trust::-webkit-scrollbar{display:none!important;}\n  .vv-hero-trust .vv-trust-item,\n  .vv-hero-trust .vv-trust-item:nth-child(n+5){\n    display:flex!important;flex:1 1 0!important;min-width:0!important;width:auto!important;\n    font-size:.48rem!important;padding-left:.22rem!important;padding-right:.02rem!important;\n    gap:.1rem!important;position:relative!important;z-index:5!important;overflow:hidden!important;\n  }\n  .vv-trust-num{font-size:.92rem!important;line-height:1.05!important;position:relative!important;z-index:6!important;}\n  .vv-trust-item:not(:first-child){padding-left:.22rem!important;}\n  .vv-trust-item>span:not(.vv-trust-num){\n    line-height:1.1!important;white-space:nowrap!important;overflow:hidden!important;\n    text-overflow:ellipsis!important;max-width:100%!important;\n  }\n  .vv-hero-mockup{\n    order:3!important;width:100%!important;margin-top:1.25rem!important;padding-bottom:1.5rem!important;\n    display:flex!important;flex-direction:column!important;gap:.75rem!important;min-height:0!important;\n  }\n  .vv-hero-stage{\n    position:relative!important;width:100%!important;\n    min-height:min(400px,108vw)!important;padding-bottom:1.25rem!important;\n    overflow:visible!important;clip-path:none!important;\n    display:flex!important;align-items:center!important;justify-content:center!important;\n  }\n  .vv-hero-lottie{\n    position:relative!important;z-index:6!important;margin:0 auto!important;\n    width:min(240px,58%)!important;order:unset!important;\n  }\n  .vv-hero-lottie dotlottie-wc{width:min(240px,58vw)!important;height:min(240px,58vw)!important;max-width:58vw!important;max-height:58vw!important;}\n  .vv-float-badge.vv-float-uptime,.vv-float-uptime{\n    display:flex!important;visibility:visible!important;opacity:1!important;\n    position:absolute!important;top:calc(50% - min(120px,29vw) - 2.6rem)!important;\n    left:0!important;right:0!important;bottom:auto!important;width:100%!important;height:auto!important;\n    transform:none!important;justify-content:center!important;align-items:center!important;z-index:14!important;\n    margin:0!important;padding:0!important;animation:none!important;pointer-events:none!important;\n  }\n  .vv-float-uptime-inner{\n    display:flex!important;visibility:visible!important;opacity:1!important;\n    align-items:center!important;justify-content:center!important;gap:.45rem!important;margin:0 auto!important;\n    font-size:.62rem!important;color:#e8fbff!important;\n    text-shadow:0 0 8px rgba(0,229,255,.55),0 0 18px rgba(0,229,255,.28),0 1px 0 rgba(0,0,0,.65)!important;\n    animation:vvFloatUptimeMobile 4.8s ease-in-out infinite!important;\n    transform:perspective(420px) rotateX(12deg)!important;-webkit-transform:perspective(420px) rotateX(12deg)!important;\n    will-change:transform,opacity!important;filter:brightness(1.05)!important;\n  }\n  .vv-live-gif{display:flex!important;visibility:visible!important;opacity:1!important;width:36px!important;height:36px!important;\n    filter:drop-shadow(0 0 10px rgba(0,229,255,.7)) drop-shadow(0 0 18px rgba(47,107,255,.35))!important;}\n  .vv-live-gif dotlottie-wc{display:block!important;width:36px!important;height:36px!important;}\n  @keyframes vvFloatUptimeMobile{\n    0%,100%{transform:perspective(420px) rotateX(12deg) translateY(0);opacity:1;filter:brightness(1.05)}\n    40%{transform:perspective(420px) rotateX(14deg) translateY(-7px);opacity:.96;filter:brightness(1.18)}\n    70%{transform:perspective(420px) rotateX(11deg) translateY(-3px);opacity:1;filter:brightness(1.08)}\n  }\n  .vv-scroll-cue--dock{display:none!important;}\n  .vv-soft-shade,.vv-soft-shade.vv-soft-shade--player,.vv-soft-shade--player{display:none!important;visibility:hidden!important;opacity:0!important;}\n  \/* Floating tiles + LIVE \u2014 same idea as desktop, scaled for phones *\/\n  .vv-app-float-grid{\n    position:absolute!important;inset:0!important;width:100%!important;height:100%!important;\n    display:block!important;margin:0!important;padding:0!important;order:unset!important;\n    z-index:10!important;transform:none!important;pointer-events:none!important;\n  }\n  .vv-app-float-grid .vv-app-cell,\n  .vv-app-float-grid .vv-app-cell.vv-cell-front,\n  .vv-app-float-grid .vv-app-cell.vv-cell-behind,\n  .vv-app-float-grid .vv-cell-icon,\n  .vv-app-float-grid .vv-live,\n  .vv-app-float-grid .vv-live::before,\n  .vv-cell-movies .vv-cell-icon,\n  .vv-cell-football .vv-cell-icon{\n    animation:none!important;transform:none!important;transition:none!important;will-change:auto!important;\n    filter:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;\n  }\n  .vv-app-float-grid .vv-app-cell{\n    width:88px!important;padding:.68rem .4rem!important;gap:.32rem!important;pointer-events:none!important;\n    background:rgba(10,12,22,.92)!important;\n  }\n  .vv-app-float-grid .vv-app-cell:nth-child(1),\n  .vv-app-float-grid .vv-app-cell:nth-child(2),\n  .vv-app-float-grid .vv-app-cell:nth-child(3),\n  .vv-app-float-grid .vv-app-cell:nth-child(4),\n  .vv-app-float-grid .vv-app-cell:nth-child(5),\n  .vv-app-float-grid .vv-app-cell:nth-child(6){\n    animation:none!important;transform:none!important;filter:none!important;\n  }\n  .vv-app-float-grid .vv-app-cell.vv-cell-front{z-index:12!important;opacity:1!important;}\n  .vv-app-float-grid .vv-app-cell.vv-cell-behind{z-index:4!important;opacity:.82!important;filter:none!important;}\n  .vv-app-float-grid .vv-app-cell:nth-child(1){top:calc(50% - 38%)!important;left:2px!important;right:auto!important;bottom:auto!important;}\n  .vv-app-float-grid .vv-app-cell:nth-child(2){top:calc(50% - 40%)!important;right:2px!important;left:auto!important;bottom:auto!important;}\n  .vv-app-float-grid .vv-app-cell:nth-child(3){top:calc(50% - 8%)!important;left:2px!important;right:auto!important;bottom:auto!important;}\n  .vv-app-float-grid .vv-app-cell:nth-child(4){top:calc(50% - 2%)!important;right:2px!important;left:auto!important;bottom:auto!important;}\n  .vv-app-float-grid .vv-app-cell:nth-child(5){top:calc(50% + 22%)!important;left:2px!important;right:auto!important;bottom:auto!important;}\n  .vv-app-float-grid .vv-app-cell:nth-child(6){top:calc(50% + 24%)!important;right:2px!important;left:auto!important;bottom:auto!important;}\n  .vv-app-float-grid .vv-live{\n    display:block!important;position:absolute!important;top:5px!important;right:5px!important;font-size:.38rem!important;\n    animation:none!important;\n  }\n  .vv-app-float-grid .vv-live::before{animation:none!important;opacity:1!important;}\n  .vv-app-float-grid .vv-cell-icon{font-size:1.35rem!important;animation:none!important;transform:none!important;}\n  .vv-app-float-grid .vv-cell-name{font-size:.62rem!important;}\n  .vv-hero-lottie{filter:none!important;will-change:auto!important;transition:none!important;transform:none!important;contain:none!important;}\n  .vv-hero-mockup,.vv-hero-stage{contain:none!important;isolation:isolate!important;transform:none!important;filter:none!important;will-change:auto!important;}\n  .vv-hero-mockup::before,\n  .vv-soft-shade,.vv-soft-shade--player{display:none!important;content:none!important;animation:none!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;filter:none!important;}\n  .vv-app-window{\n    width:100%!important;max-width:100%!important;margin:.65rem auto 0!important;order:3!important;\n    z-index:8!important;opacity:1!important;background:rgba(0,0,0,.94)!important;\n    isolation:isolate!important;overflow:visible!important;\n  }\n  .vv-app-window-stats,.vv-app-window.vv-app-window-stats{\n    margin-top:.5rem!important;z-index:8!important;isolation:isolate!important;\n    background:rgba(8,10,18,.94)!important;backdrop-filter:none!important;-webkit-backdrop-filter:none!important;\n    will-change:auto!important;overflow:hidden!important;border-bottom:none!important;\n    -webkit-mask-image:none!important;mask-image:none!important;\n  }\n  .vv-app-window-stats::before,.vv-app-window-stats::after,.vv-app-stats::before{content:none!important;display:none!important;}\n  .vv-app-window-stats>*:not(.vv-soft-shade){position:relative!important;z-index:1!important;}\n  .vv-app-window-stats>.vv-soft-shade{z-index:20!important;display:block!important;}\n  .vv-app-bar{background:rgba(0,0,0,.45)!important;border-radius:18px 18px 0 0!important;position:relative!important;z-index:6!important;}\n  .vv-app-stats{\n    display:grid!important;grid-template-columns:1fr 1fr!important;gap:.5rem .35rem!important;\n    padding:.85rem .7rem!important;min-height:0!important;background:rgba(0,0,0,.45)!important;\n    border-radius:0 0 18px 18px!important;position:relative!important;z-index:5!important;\n  }\n  .vv-app-stat{min-width:0!important;width:100%!important;position:relative!important;z-index:5!important;}\n  .vv-app-stat strong{\n    font-size:clamp(1.1rem,4.8vw,1.4rem)!important;white-space:normal!important;\n    color:#fff!important;-webkit-text-fill-color:#fff!important;position:relative!important;z-index:5!important;\n  }\n  .vv-app-stat span{\n    font-size:.55rem!important;white-space:normal!important;color:rgba(220,220,230,.95)!important;\n  }\n  .vv-app-title{color:rgba(210,210,220,.95)!important;}\n  .vv-app-stat-sep{display:none!important;}<\/p>\n<p>  \/* Steps \/ plans \/ features \/ channels \u2014 keep multi-col like desktop *\/\n  .vv-steps-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:.55rem!important;}\n  #vv-steps .vv-section-center{margin-bottom:1.15rem!important;}\n  .vv-step-card{padding:.7rem .6rem!important;border-radius:10px!important;}\n  .vv-step-num{font-size:1.2rem!important;margin-bottom:.28rem!important;letter-spacing:.04em!important;}\n  .vv-step-title{font-size:.8rem!important;margin-bottom:.28rem!important;line-height:1.25!important;}\n  .vv-step-desc{font-size:.68rem!important;line-height:1.4!important;}\n  .vv-plans-row,.vv-plans-row-4{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:1rem!important;}\n  .vv-plan-card{padding:1.35rem 1.15rem!important;}\n  .vv-plan-price{font-size:2.55rem!important;}\n  .vv-feat-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:1.1rem!important;}\n  .vv-feat-large{grid-column:span 2!important;}\n  .vv-ch-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:.85rem!important;}\n  .vv-devices-layout{grid-template-columns:1fr!important;gap:.55rem!important;align-items:start!important;}\n  .vv-devices-right{min-height:0!important;height:auto!important;order:1!important;}\n  .vv-devices-left{order:2!important;gap:1rem!important;}\n  .vv-devices-lottie{min-height:0!important;height:auto!important;margin:0!important;}\n  .vv-devices-lottie dotlottie-wc{\n    width:min(320px,78vw)!important;height:min(320px,78vw)!important;max-height:340px!important;\n  }\n  .vv-devices-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;}\n  .vv-faq-layout{grid-template-columns:1fr!important;}\n  .vv-footer-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:1.5rem!important;}<\/p>\n<p>  \/* Speed iframe widget *\/\n  .vv-speed-frame-wrap,#vvSpeedPanel{min-height:520px!important;height:auto!important;}\n  .vv-speed-wrap{grid-template-columns:1fr!important;gap:1.5rem!important;}\n  .vv-speed-head{text-align:center!important;justify-content:center!important;}\n  .vv-speed-head>div{max-width:100%!important;}\n  .vv-speed-head .vv-h2,.vv-speed-head .vv-lead,.vv-speed-head .vv-eyebrow{text-align:center!important;}\n  .vv-speed-head .vv-lead,.vv-speed-head .vv-cdn-note{margin-left:auto!important;margin-right:auto!important;max-width:100%!important;}\n  .vv-speed-head .vv-cdn-note{max-width:100%!important;width:100%!important;}<\/p>\n<p>  \/* Guides marquee \u2014 keep fixed card widths on mobile *\/\n  #vv-guides .vv-guides-viewport{margin:0 2.4rem!important;}\n  #vv-guides .vv-guide-card{flex-basis:240px!important;width:240px!important;min-height:160px!important;}\n  #vv-guides .vv-guides-track{animation-duration:42s!important;}<\/p>\n<p>  \/* Final CTA \u2014 keep band energy, dual buttons *\/\n  .vv-final-cta-inner{\n    flex-direction:column!important;align-items:stretch!important;\n    padding:1.75rem 1.25rem!important;gap:1.15rem!important;\n  }\n  .vv-final-cta-copy{text-align:left!important;}\n  .vv-final-cta-inner .vv-h2{font-size:clamp(1.85rem,7vw,2.45rem)!important;text-align:left!important;}\n  .vv-final-cta-inner .vv-lead{font-size:1rem!important;max-width:100%!important;margin:0!important;}\n  .vv-trial-lottie{align-self:center!important;margin-left:auto!important;margin-right:auto!important;}\n  .vv-trial-lottie dotlottie-wc{width:110px!important;height:110px!important;max-width:110px!important;}\n  .vv-final-cta-btns{\n    flex-direction:row!important;flex-wrap:nowrap!important;\n    justify-content:flex-start!important;width:100%!important;margin:0!important;gap:.65rem!important;\n  }\n  .vv-final-cta-btns .vv-btn{\n    flex:1 1 0!important;white-space:nowrap!important;\n    font-size:.78rem!important;padding:.95rem 1rem!important;\n  }\n}\n@media (max-width:900px){\n  .vv-ssl-badge{\n    gap:.4rem!important;padding:.38rem .6rem!important;border-radius:9px!important;\n    max-width:min(230px,72vw)!important;\n  }\n  .vv-ssl-shield{width:22px!important;height:auto!important;}\n  .vv-ssl-copy strong{font-size:.68rem!important;}\n  .vv-ssl-copy span{font-size:.58rem!important;margin-top:.05rem!important;}\n  .vv-pay-badge{flex-wrap:nowrap!important;gap:.18rem .28rem!important;max-width:min(100%,96vw)!important;width:100%!important;justify-content:center!important;overflow:visible!important;}\n  .vv-pay-methods{height:22px!important;max-width:none!important;width:auto!important;flex:0 1 auto!important;min-width:0!important;max-height:22px!important;}\n  .vv-pay-icon,.vv-pay-icon svg{height:18px!important;max-height:18px!important;width:auto!important;flex-shrink:0!important;}\n  .vv-payment-note{font-size:.55rem!important;letter-spacing:.05em!important;}\n}\n@media (max-width:560px){\n  .vv-max{padding-left:1rem!important;padding-right:1rem!important;}\n  .vv-section,.vv-section-alt{padding:3.25rem 1rem!important;}\n  .vv-hero-h1{font-size:clamp(1.9rem,8.5vw,2.45rem)!important;}\n  .vv-hero-btns{gap:.4rem .5rem!important;}\n  .vv-hero-section .vv-btn{padding:.62rem 1.05rem!important;font-size:.72rem!important;}\n  .vv-trust-num{font-size:1.45rem!important;}\n  .vv-steps-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:.45rem!important;}\n  .vv-step-card{padding:.6rem .5rem!important;}\n  .vv-step-num{font-size:1.1rem!important;}\n  .vv-step-title{font-size:.76rem!important;}\n  .vv-step-desc{font-size:.64rem!important;line-height:1.35!important;}\n  .vv-plans-row,.vv-plans-row-4{grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:.75rem!important;}\n  .vv-plan-card{padding:1.1rem .85rem!important;}\n  .vv-plan-price{font-size:2.15rem!important;}\n  .vv-feat-grid{grid-template-columns:1fr!important;}\n  .vv-feat-large{grid-column:auto!important;}\n  .vv-ch-grid{grid-template-columns:repeat(2,minmax(0,1fr))!important;}\n  .vv-devices-layout{gap:.35rem!important;}\n  .vv-devices-lottie dotlottie-wc{\n    width:min(280px,76vw)!important;height:min(280px,76vw)!important;max-height:300px!important;\n  }\n  .vv-footer-grid{grid-template-columns:1fr 1fr!important;}\n  #vv-guides .vv-guide-card{flex-basis:220px!important;width:220px!important;}\n  #vv-guides .vv-guides-track{animation-duration:38s!important;}\n  .vv-final-cta-inner .vv-h2{font-size:clamp(1.7rem,8vw,2.2rem)!important;}\n  .vv-final-cta-btns .vv-btn{font-size:.72rem!important;padding:.88rem .7rem!important;letter-spacing:.04em!important;}\n}\n@media (max-width:380px){\n  .vv-plans-row,.vv-plans-row-4{grid-template-columns:1fr!important;}\n  .vv-steps-grid{grid-template-columns:1fr!important;}\n  .vv-hero-section .vv-btn{width:auto!important;max-width:none!important;justify-content:center!important;}\n  .vv-hero-how{width:auto!important;text-align:left!important;justify-self:start!important;}\n  .vv-hero-btns{justify-content:start!important;}\n}\n\/* Fluid responsive lock \u2014 all resolutions *\/\nhtml,body,.tc-v2-root{max-width:100%!important;}\n@media (min-width:901px){\n  html,body,.tc-v2-root{overflow-x:clip!important;}\n}\n@media (max-width:900px){\n  html,body{overflow-x:visible!important;}\n  body,body.home,body.tc-native-home{overflow:visible!important;overflow-x:visible!important;overflow-y:visible!important;}\n  .tc-v2-root{overflow-x:clip!important;}\n}\n.tc-v2-root img,.tc-v2-root video,.tc-v2-root iframe,.tc-v2-root canvas,.tc-v2-root svg{max-width:100%!important;height:auto;}\n.vv-hero-inner{grid-template-columns:minmax(0,1fr) minmax(0,1.12fr)!important;width:100%!important;max-width:min(1760px,98vw)!important;}\n@media (max-width:1400px) and (min-width:1101px){\n  .vv-hero-inner{grid-template-columns:minmax(0,1fr) minmax(0,1.05fr)!important;max-width:min(1280px,96vw)!important;}\n}\n@media (max-width:1100px) and (min-width:901px){\n  .vv-hero-inner{grid-template-columns:minmax(0,1fr) minmax(0,.95fr)!important;max-width:min(1040px,96vw)!important;gap:1.25rem!important;}\n  .vv-plans-row-4{grid-template-columns:repeat(2,1fr)!important;}\n  .vv-feat-grid{grid-template-columns:repeat(2,1fr)!important;}\n}\n@media (max-width:900px){\n  .vv-hero-inner{display:flex!important;flex-direction:column!important;max-width:100%!important;}\n  .vv-hero-text,.vv-hero-mockup,.vv-hero-stage,.vv-app-window-stats{width:100%!important;max-width:100%!important;}\n  .vv-devices-layout,.vv-download-layout,.vv-faq-layout,.vv-term-layout,.vv-speed-wrap{grid-template-columns:1fr!important;}\n  .vv-final-cta-inner{flex-direction:column!important;align-items:center!important;text-align:center!important;}\n}\n@media (max-width:640px){\n  .vv-plans-row,.vv-plans-row-4,.vv-steps-grid{grid-template-columns:1fr!important;}\n}\n@media (max-height:500px) and (orientation:landscape){\n  .vv-app-float-grid,.vv-float-uptime,.vv-scroll-cue{display:none!important;}\n  .vv-hero-section{min-height:0!important;padding-top:1.25rem!important;padding-bottom:1.25rem!important;}\n}\nbody.home .entry-content > *:not(.tc-v2-root) { display:none!important; }\n\/* Yoast intro paragraph sibling \u2014 hidden on front; still in post HTML for analysis *\/\n.tc-yoast-intro{display:none!important;}\n<\/style>\n<div class=\"tc-v2-root\">\n<style id=\"tc-v2-ui\">\n\/* ============================================================\n   TIVIMATE US v2 \u2014 DESIGN SYSTEM\n   All classes prefixed with .vv- to avoid WP theme conflicts\n   ============================================================ *\/\n:root {\n  --vv-bg:       #000000;\n  --vv-surface:  transparent;\n  --vv-card:     rgba(20,20,28,0.72);\n  --vv-card2:    rgba(28,28,38,0.82);\n  --vv-border:   rgba(255,255,255,0.08);\n  --vv-red:      #00B8E6;\n  --vv-red2:     #00E5FF;\n  --vv-orange:   #2F6BFF;\n  --vv-red-glow: rgba(0,184,230,0.28);\n  --vv-text:     #f4f4f5;\n  --vv-muted:    #52525b;\n  --vv-muted2:   #c4c4cc;\n}<\/p>\n<p>\/* Base reset for TiviMate US sections *\/\n.vv-wrap *, .vv-wrap *::before, .vv-wrap *::after {\n  box-sizing: border-box; margin: 0; padding: 0;\n}\n.vv-wrap {\n  font-family: 'Manrope', sans-serif;\n  color: var(--vv-text);\n  background: transparent;\n  overflow-x: visible;\n  position: relative;\n}\n.vv-wrap a { text-decoration: none; }<\/p>\n<p>\/* Site-wide deep space \u2014 wrappers stay TRANSPARENT so fixed FX shows through *\/\n.tc-v2-root {\n  background: transparent !important;\n  position: relative;\n  \/* z-index:auto \u2014 stacking above fixed network blocks backdrop-filter glass *\/\n  z-index: auto;\n  min-height: 100vh;\n}\nbody.tc-space-ready { isolation: isolate; }\nbody.tc-space-ready::before {\n  content: '';\n  position: fixed;\n  inset: 0;\n  z-index: -2;\n  pointer-events: none;\n  background:\n    radial-gradient(ellipse 90% 55% at 50% -10%, rgba(12,18,32,0.22), transparent 55%),\n    radial-gradient(ellipse 50% 40% at 15% 30%, rgba(0,229,255,0.02), transparent 60%),\n    radial-gradient(ellipse 45% 35% at 85% 20%, rgba(120,80,255,0.025), transparent 55%),\n    radial-gradient(ellipse 70% 50% at 50% 110%, rgba(0,0,0,0.5), transparent 50%);\n}\nbody.tc-space-ready::after {\n  content: '';\n  position: fixed;\n  inset: 0;\n  z-index: -2;\n  pointer-events: none;\n  background-image:\n    radial-gradient(1.4px 1.4px at 4% 8%, #fff, transparent),\n    radial-gradient(1px 1px at 11% 22%, rgba(0,229,255,.95), transparent),\n    radial-gradient(1.6px 1.6px at 19% 14%, #fff, transparent),\n    radial-gradient(1px 1px at 27% 41%, rgba(200,180,255,.85), transparent),\n    radial-gradient(1.2px 1.2px at 35% 6%, #fff, transparent),\n    radial-gradient(2px 2px at 44% 33%, rgba(0,229,255,.8), transparent),\n    radial-gradient(1px 1px at 52% 58%, #fff, transparent),\n    radial-gradient(1px 1px at 61% 19%, rgba(255,255,255,.75), transparent),\n    radial-gradient(1.5px 1.5px at 69% 47%, rgba(140,100,255,.85), transparent),\n    radial-gradient(1px 1px at 78% 11%, #fff, transparent),\n    radial-gradient(1px 1px at 86% 39%, rgba(0,229,255,.75), transparent),\n    radial-gradient(1.8px 1.8px at 93% 66%, #fff, transparent),\n    radial-gradient(1px 1px at 7% 71%, rgba(255,255,255,.6), transparent),\n    radial-gradient(1px 1px at 23% 84%, rgba(0,229,255,.65), transparent),\n    radial-gradient(1.3px 1.3px at 48% 91%, #fff, transparent),\n    radial-gradient(1px 1px at 72% 88%, rgba(180,160,255,.7), transparent);\n  opacity: 0.9;\n  animation: vvSiteStars 60s linear infinite;\n}\n@keyframes vvSiteStars {\n  from { transform: translate3d(0,0,0); }\n  to { transform: translate3d(-1.5%, 1%, 0); }\n}\n\/* position:relative only \u2014 do NOT set z-index (that isolates backdrop-filter from the network) *\/\n.tc-v2-root > *:not(.vv-network-bg):not(.vv-cursor-canvas):not(.vv-space-fx) {\n  position: relative;\n  z-index: auto;\n}<\/p>\n<p>\/* Fixed site-wide 4D space FX \u2014 above body bg, below page content *\/\n.vv-space-fx {\n  position: fixed !important;\n  inset: 0;\n  z-index: 0 !important;\n  pointer-events: none;\n  overflow: hidden !important;\n  width: 100vw !important;\n  height: 100vh !important;\n  max-width: 100vw !important;\n  contain: paint;\n}\n\/* Sky orthogonal crossed grid *\/\n.vv-space-fx-grid {\n  position: absolute; inset: 0;\n  background-image:\n    linear-gradient(rgba(0,229,255,0.07) 1px, transparent 1px),\n    linear-gradient(90deg, rgba(0,229,255,0.07) 1px, transparent 1px),\n    linear-gradient(rgba(140,100,255,0.04) 1px, transparent 1px),\n    linear-gradient(90deg, rgba(140,100,255,0.04) 1px, transparent 1px);\n  background-size: 64px 64px, 64px 64px, 192px 192px, 192px 192px;\n  mask-image: linear-gradient(to bottom, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.35) 48%, transparent 72%);\n  -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,0.7) 0%, rgba(0,0,0,0.35) 48%, transparent 72%);\n  opacity: 0.55;\n  animation: vvSpaceGridDrift 28s linear infinite;\n}\n\/* Diagonal X \/ crossed beams \u2014 4D depth cue *\/\n.vv-space-fx-cross {\n  position: absolute; inset: -10%;\n  background-image:\n    repeating-linear-gradient(\n      32deg,\n      transparent 0,\n      transparent 46px,\n      rgba(0,229,255,0.055) 46px,\n      rgba(0,229,255,0.055) 47px\n    ),\n    repeating-linear-gradient(\n      -32deg,\n      transparent 0,\n      transparent 46px,\n      rgba(167,139,250,0.05) 46px,\n      rgba(167,139,250,0.05) 47px\n    ),\n    repeating-linear-gradient(\n      58deg,\n      transparent 0,\n      transparent 90px,\n      rgba(0,229,255,0.03) 90px,\n      rgba(0,229,255,0.03) 91px\n    ),\n    repeating-linear-gradient(\n      -58deg,\n      transparent 0,\n      transparent 90px,\n      rgba(120,80,255,0.028) 90px,\n      rgba(120,80,255,0.028) 91px\n    );\n  mask-image: radial-gradient(ellipse 85% 70% at 50% 40%, #000 0%, rgba(0,0,0,0.55) 55%, transparent 85%);\n  -webkit-mask-image: radial-gradient(ellipse 85% 70% at 50% 40%, #000 0%, rgba(0,0,0,0.55) 55%, transparent 85%);\n  opacity: 0.7;\n  animation: vvSpaceCrossPulse 16s ease-in-out infinite alternate;\n}\n\/* Vanishing-point tunnel lines (perspective 4D) *\/\n.vv-space-fx-vanish {\n  position: absolute;\n  left: 50%; top: 42%;\n  width: 160vmax; height: 160vmax;\n  margin-left: -80vmax; margin-top: -80vmax;\n  background:\n    repeating-conic-gradient(\n      from 0deg,\n      transparent 0deg 7deg,\n      rgba(0,229,255,0.035) 7deg 7.35deg,\n      transparent 7.35deg 18deg,\n      rgba(140,100,255,0.028) 18deg 18.3deg\n    );\n  -webkit-mask-image: radial-gradient(circle at center, transparent 8%, rgba(0,0,0,0.55) 28%, rgba(0,0,0,0.25) 55%, transparent 72%);\n  mask-image: radial-gradient(circle at center, transparent 8%, rgba(0,0,0,0.55) 28%, rgba(0,0,0,0.25) 55%, transparent 72%);\n  opacity: 0.55;\n  animation: vvSpaceVanishSpin 90s linear infinite;\n  transform: perspective(900px) rotateX(62deg) scale(1.05);\n  transform-origin: center center;\n}\n.vv-space-fx-floor {\n  position: absolute;\n  left: 0; right: 0;\n  bottom: -35%;\n  height: 62%;\n  width: 100%;\n  background:\n    radial-gradient(ellipse 80% 48% at 50% 0%, rgba(0,229,255,0.16), transparent 72%),\n    radial-gradient(ellipse 40% 30% at 70% 18%, rgba(120,80,255,0.1), transparent 70%),\n    linear-gradient(rgba(0,229,255,0.12) 1px, transparent 1px),\n    linear-gradient(90deg, rgba(0,229,255,0.12) 1px, transparent 1px),\n    linear-gradient(rgba(167,139,250,0.05) 1px, transparent 1px),\n    linear-gradient(90deg, rgba(167,139,250,0.05) 1px, transparent 1px);\n  background-size: auto, auto, 48px 48px, 48px 48px, 144px 144px, 144px 144px;\n  transform: perspective(520px) rotateX(58deg) scale(1.35);\n  transform-origin: center top;\n  mask-image: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.35) 18%, rgba(0,0,0,0.8) 48%, rgba(0,0,0,0.45) 78%, transparent 100%);\n  -webkit-mask-image: linear-gradient(to bottom, transparent 0%, rgba(0,0,0,0.35) 18%, rgba(0,0,0,0.8) 48%, rgba(0,0,0,0.45) 78%, transparent 100%);\n  opacity: 0.55;\n  animation: vvSiteFloor 14s ease-in-out infinite alternate;\n  will-change: opacity;\n}\n.vv-space-fx-horizon {\n  position: absolute;\n  left: 8%; right: 8%;\n  top: 64%;\n  height: 140px;\n  background:\n    radial-gradient(ellipse 70% 55% at 50% 40%, rgba(0,229,255,0.14), transparent 70%),\n    radial-gradient(ellipse 40% 40% at 50% 50%, rgba(120,80,255,0.08), transparent 70%);\n  opacity: 0.55;\n  filter: blur(16px);\n  pointer-events: none;\n}\n@keyframes vvSiteFloor {\n  from { opacity: 0.48; filter: brightness(0.92); }\n  to { opacity: 0.7; filter: brightness(1.1); }\n}\n@keyframes vvSpaceGridDrift {\n  from { background-position: 0 0, 0 0, 0 0, 0 0; }\n  to { background-position: 0 64px, 64px 0, 0 192px, 192px 0; }\n}\n@keyframes vvSpaceCrossPulse {\n  from { opacity: 0.45; transform: scale(1); }\n  to { opacity: 0.75; transform: scale(1.03); }\n}\n@keyframes vvSpaceVanishSpin {\n  from { transform: perspective(900px) rotateX(62deg) rotate(0deg) scale(1.05); }\n  to { transform: perspective(900px) rotateX(62deg) rotate(360deg) scale(1.05); }\n}\nbody > .vv-space-fx,\n.tc-v2-root > .vv-space-fx {\n  position: fixed !important;\n  inset: 0 !important;\n  z-index: 0 !important;\n}<\/p>\n<p>\/* Soft black overlay \u2014 FULL player window, faded from bottom (on TOP of content) *\/\n.vv-soft-shade {\n  display: none !important;\n}\n.vv-soft-shade--player {\n  display: block !important;\n  visibility: visible !important;\n  opacity: 1 !important;\n  position: absolute !important;\n  inset: 0 !important;\n  left: 0 !important;\n  right: 0 !important;\n  top: 0 !important;\n  bottom: 0 !important;\n  height: auto !important;\n  width: auto !important;\n  z-index: 20 !important;\n  pointer-events: none !important;\n  border-radius: 18px !important;\n  \/* Stronger black at bottom so edge melts \u2014 no hard line *\/\n  background: linear-gradient(\n    to top,\n    #000 0%,\n    rgba(0, 0, 0, 0.95) 10%,\n    rgba(0, 0, 0, 0.7) 28%,\n    rgba(0, 0, 0, 0.42) 50%,\n    rgba(0, 0, 0, 0.2) 72%,\n    rgba(0, 0, 0, 0.08) 100%\n  ) !important;\n  backdrop-filter: none !important;\n  -webkit-backdrop-filter: none !important;\n  box-shadow: none !important;\n  -webkit-mask-image: none !important;\n  mask-image: none !important;\n}\n\/* Kill old mesh plates on trust\/player \u2014 shade replaces them *\/\n.vv-hero-trust > .vv-mesh-block,\n.vv-app-window-stats > .vv-mesh-block {\n  display: none !important;\n}\n\/* Black plate under scroll GIF only *\/\n.vv-mesh-block {\n  position: absolute !important;\n  inset: -10px -14px -14px !important;\n  z-index: 0 !important;\n  pointer-events: none !important;\n  border-radius: 24px !important;\n  background: radial-gradient(\n    ellipse 90% 80% at 50% 50%,\n    rgba(0, 0, 0, 0.95) 0%,\n    rgba(0, 0, 0, 0.78) 42%,\n    rgba(0, 0, 0, 0.4) 68%,\n    rgba(0, 0, 0, 0.12) 84%,\n    transparent 94%\n  ) !important;\n  box-shadow: none !important;\n}\n.vv-mesh-block--scroll {\n  inset: auto !important;\n  left: 50% !important;\n  top: 52% !important;\n  width: 160px !important;\n  height: 160px !important;\n  transform: translate(-50%, -50%) !important;\n  border-radius: 50% !important;\n  background: radial-gradient(circle, #000 0%, #000 55%, rgba(0,0,0,0.75) 72%, transparent 100%) !important;\n  box-shadow: 0 0 28px 12px rgba(0, 0, 0, 0.9) !important;\n}\n.vv-mesh-block--player {\n  inset: -14px -18px -18px !important;\n  border-radius: 28px !important;\n  background: radial-gradient(\n    ellipse 90% 80% at 50% 50%,\n    rgba(0, 0, 0, 0.95) 0%,\n    rgba(0, 0, 0, 0.78) 42%,\n    rgba(0, 0, 0, 0.4) 68%,\n    rgba(0, 0, 0, 0.12) 84%,\n    transparent 94%\n  ) !important;\n  box-shadow: none !important;\n}\n.vv-hero-section {\n  position: relative !important;\n  z-index: 3 !important;\n}\n.vv-hero-trust,\n.vv-app-window-stats {\n  position: relative !important;\n  z-index: 5 !important;\n  isolation: isolate !important;\n}\n.vv-scroll-cue {\n  position: absolute !important;\n  z-index: 20 !important;\n  isolation: isolate !important;\n}\n.vv-hero-trust > *:not(.vv-mesh-block):not(.vv-soft-shade),\n.vv-scroll-cue > *:not(.vv-mesh-block),\n.vv-app-window-stats > *:not(.vv-mesh-block):not(.vv-soft-shade) {\n  position: relative !important;\n  z-index: 5 !important;\n}\n\/* Trust shade off; player shade MUST sit above bar\/stats so fade is visible *\/\n.vv-hero-trust > .vv-soft-shade {\n  display: none !important;\n}\n.vv-app-window-stats {\n  isolation: isolate !important;\n  overflow: hidden !important;\n}\n.vv-app-window-stats > .vv-soft-shade {\n  z-index: 20 !important;\n  display: block !important;\n}\n.vv-app-window-stats > .vv-app-bar,\n.vv-app-window-stats > .vv-app-stats,\n.vv-app-window-stats > *:not(.vv-soft-shade) {\n  position: relative !important;\n  z-index: 1 !important;\n}\n\/* Soften hard chrome \u2014 melt bottom edge into page (no sharp border) *\/\n.vv-app-window.vv-app-window-stats {\n  border-top: 1px solid rgba(255, 255, 255, 0.06) !important;\n  border-left: 1px solid rgba(255, 255, 255, 0.06) !important;\n  border-right: 1px solid rgba(255, 255, 255, 0.06) !important;\n  border-bottom: none !important;\n  box-shadow:\n    0 24px 60px rgba(0, 0, 0, 0.75),\n    0 0 28px rgba(0, 0, 0, 0.45) !important;\n  \/* Fade bottom ~22px so edge melts into black *\/\n  -webkit-mask-image: linear-gradient(to top, transparent 0%, #000 22px, #000 100%) !important;\n  mask-image: linear-gradient(to top, transparent 0%, #000 22px, #000 100%) !important;\n}<\/p>\n<p>\/* Polygon network canvas \u2014 parallel with space FX *\/\n.vv-network-bg,\nbody > .vv-network-bg,\n.tc-v2-root > .vv-network-bg {\n  position: fixed !important;\n  inset: 0 !important;\n  \/* Stay UNDER hero UI so black plates can block the mesh *\/\n  z-index: 0 !important;\n  width: 100vw !important;\n  height: 100vh !important;\n  pointer-events: none !important;\n  overflow: hidden !important;\n  background:\n    radial-gradient(ellipse 90% 70% at 20% 20%, rgba(8,145,178,0.03), transparent 55%),\n    radial-gradient(ellipse 90% 70% at 80% 80%, rgba(147,51,234,0.035), transparent 55%),\n    transparent;\n}\n.vv-network-canvas {\n  position: absolute;\n  inset: 0;\n  width: 100%;\n  height: 100%;\n  display: block;\n  opacity: 0.9;\n  \/* no translateZ \u2014 keeps polygons in the same backdrop as glass panels *\/\n  filter: none;\n  will-change: auto;\n  z-index: 0;\n}\n.vv-network-vignette {\n  position: absolute;\n  inset: 0;\n  background: radial-gradient(ellipse 85% 85% at 50% 45%, transparent 42%, rgba(0,0,0,0.58) 100%);\n  pointer-events: none;\n  backdrop-filter: none;\n  -webkit-backdrop-filter: none;\n  z-index: 1;\n}\n\/* Sharp polygon cursor \u2014 above all page UI; still draws links to network nodes *\/\n.vv-cursor-canvas,\nbody > .vv-cursor-canvas,\n.tc-v2-root > .vv-cursor-canvas {\n  position: fixed !important;\n  inset: 0 !important;\n  width: 100vw !important;\n  height: 100vh !important;\n  display: block !important;\n  z-index: 2147483000 !important;\n  opacity: 1 !important;\n  filter: none !important;\n  pointer-events: none !important;\n  background: transparent !important;\n}\n\/* Old white\/cyan line grids removed \u2014 polygon network is the BG *\/\n.vv-space-fx,\n.vv-space-fx-grid,\n.vv-space-fx-cross,\n.vv-space-fx-vanish,\n.vv-space-fx-floor,\n.vv-space-fx-horizon { display: none !important; }<\/p>\n<p>\/* Crosshair is drawn on the network canvas as a connecting polygon *\/\n.vv-crosshair { display: none !important; }\n@media (pointer: fine) {\n  body.vv-has-poly-cursor,\n  body.vv-has-poly-cursor * { cursor: none !important; }\n  body.vv-has-poly-cursor a,\n  body.vv-has-poly-cursor button,\n  body.vv-has-poly-cursor input,\n  body.vv-has-poly-cursor textarea,\n  body.vv-has-poly-cursor select { cursor: none !important; }\n}\n.tc-v2-root > a.vv-wa-float,\n#vv-float-portal > a.vv-wa-float {\n  position: fixed !important;\n  z-index: 2147483647 !important;\n  bottom: 48px !important;\n  right: 22px !important;\n  left: auto !important;\n  top: auto !important;\n}<\/p>\n<p>\/* Grain overlay \u2014 applied to each section wrapper *\/\n.vv-grain::after {\n  content: '';\n  position: absolute; inset: 0; pointer-events: none; z-index: 10;\n  background-image: url(\"data:image\/svg+xml,%3Csvg viewBox='0 0 256 256' xmlns='http:\/\/www.w3.org\/2000\/svg'%3E%3Cfilter id='g'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='4' stitchTiles='stitch'\/%3E%3C\/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23g)' opacity='0.028'\/%3E%3C\/svg%3E\");\n}<\/p>\n<p>\/* Shared section spacing \u2014 transparent so grid shows through *\/\n.vv-section { padding: 6rem 3rem; background: transparent; }\n.vv-section-alt { padding: 6rem 3rem; background: transparent; }\n.vv-section-center { text-align: center; }\n.vv-max { max-width: min(1440px, 94vw); margin: 0 auto; }<\/p>\n<p>\/* Typography helpers *\/\n.vv-eyebrow {\n  display: inline-flex; align-items: center; gap: 0.5rem;\n  font-family: 'JetBrains Mono', monospace; font-size: 0.65rem;\n  letter-spacing: 0.25em; text-transform: uppercase; color: var(--vv-red);\n  margin: 0 0 1rem; padding: 0; max-width: none;\n}\n.vv-eyebrow::before { content: '\u25cf'; font-size: 0.5rem; animation: vvPulse 1.8s ease-in-out infinite; }\n@keyframes vvPulse { 0%,100%{opacity:1} 50%{opacity:0.3} }<\/p>\n<p>.vv-h2 {\n  font-family: 'Bebas Neue', sans-serif;\n  font-size: clamp(2.4rem, 4.5vw, 4.5rem);\n  line-height: 0.95; letter-spacing: 0.02em; color: var(--vv-text);\n}\n.vv-h2 em { font-style: normal; color: var(--vv-red); }\n.vv-h2 span {\n  background: linear-gradient(90deg, var(--vv-red), var(--vv-orange));\n  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;\n}\n.vv-lead {\n  font-size: 0.98rem; color: var(--vv-muted2); line-height: 1.8;\n  font-weight: 400; max-width: 520px;\n}<\/p>\n<p>\/* Buttons *\/\n.vv-btn {\n  display: inline-flex; align-items: center; gap: 0.5rem;\n  font-family: 'Manrope', sans-serif; font-weight: 700;\n  font-size: 0.8rem; letter-spacing: 0.08em; text-transform: uppercase;\n  padding: 0.9rem 2rem; border-radius: 6px;\n  cursor: pointer; border: none; text-decoration: none;\n  transition: transform 0.2s, box-shadow 0.2s, opacity 0.2s, background 0.25s, color 0.25s, border-color 0.25s, filter 0.25s;\n}\n.vv-btn:hover { transform: translateY(-2px); opacity: 1; }\n.vv-btn-red {\n  background: linear-gradient(135deg, #00E5FF 0%, #2F6BFF 55%, #7c5cff 100%);\n  color: #fff;\n  box-shadow: 0 4px 24px var(--vv-red-glow);\n}\n.vv-btn-red:hover {\n  background: #fff !important;\n  color: #0a0a12 !important;\n  box-shadow: 0 8px 28px rgba(255,255,255,0.22);\n}\n.vv-btn-outline {\n  background: transparent;\n  color: #fff;\n  border: none;\n  box-shadow: 0 0 0 0.3px #fff;\n  box-sizing: border-box;\n}\n.vv-btn-outline:hover {\n  background: #fff !important;\n  color: #0a0a12 !important;\n  border: none !important;\n  box-shadow: 0 0 0 0.3px #fff !important;\n}<\/p>\n<p>\/* LIVE badge \u2014 true red *\/\n.vv-live {\n  display: inline-flex; align-items: center; gap: 4px;\n  background: #e11d48; color: #fff;\n  font-family: 'JetBrains Mono', monospace;\n  font-size: 0.5rem; font-weight: 600; letter-spacing: 0.15em; text-transform: uppercase;\n  padding: 3px 7px; border-radius: 3px;\n  box-shadow: 0 0 10px rgba(225,29,72,0.45);\n}\n.vv-live::before {\n  content: ''; width: 5px; height: 5px; border-radius: 50%; background: #fff;\n  box-shadow: 0 0 4px rgba(255,255,255,0.8);\n  animation: vvBlink 1.4s ease-in-out infinite;\n}\n@keyframes vvBlink { 0%,100%{opacity:1} 50%{opacity:0.2} }<\/p>\n<p>\/* Scroll reveal *\/\n.vv-reveal {\n  opacity: 0; transform: translateY(22px);\n  transition: opacity 0.55s ease, transform 0.55s ease;\n}\n.vv-reveal.vv-in { opacity: 1; transform: translateY(0); }\n.vv-reveal-delay-1 { transition-delay: 0.08s; }\n.vv-reveal-delay-2 { transition-delay: 0.16s; }\n.vv-reveal-delay-3 { transition-delay: 0.24s; }\n.vv-reveal-delay-4 { transition-delay: 0.32s; }<\/p>\n<p>\/* External float portal \u2014 0\u00d70 shell so mobile chrome resize can't move WA *\/\n#vv-float-portal {\n  position: fixed !important;\n  top: 0 !important;\n  left: 0 !important;\n  right: auto !important;\n  bottom: auto !important;\n  width: 0 !important;\n  height: 0 !important;\n  margin: 0 !important;\n  padding: 0 !important;\n  border: 0 !important;\n  background: transparent !important;\n  pointer-events: none !important;\n  z-index: 2147483646 !important;\n  overflow: visible !important;\n  transform: none !important;\n  -webkit-transform: none !important;\n  filter: none !important;\n  perspective: none !important;\n  contain: none !important;\n  isolation: auto !important;\n  mix-blend-mode: normal !important;\n}\n#vv-float-portal > .vv-wa-float,\n#vv-float-portal > .vv-back-top,\n#vv-float-portal > a.vv-wa-float {\n  pointer-events: auto !important;\n  position: fixed !important;\n  z-index: 2147483647 !important;\n}<\/p>\n<p>\/* WhatsApp float *\/\n.vv-wa-float {\n  position: fixed !important;\n  bottom: calc(48px + env(safe-area-inset-bottom, 0px)) !important;\n  right: 22px !important;\n  left: auto !important;\n  top: auto !important;\n  width: 58px; height: 58px; border-radius: 50%;\n  background: #25D366; color: #fff;\n  display: flex !important; align-items: center; justify-content: center;\n  text-decoration: none !important;\n  z-index: 2147483647 !important;\n  box-shadow: 0 4px 20px rgba(37,211,102,0.45);\n  animation: vvWaPop 2.8s ease-in-out infinite;\n  transition: transform 0.25s, box-shadow 0.25s;\n  -webkit-transform: translateZ(0);\n  transform: translateZ(0);\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n  touch-action: manipulation;\n}\n.vv-wa-float svg { width: 30px; height: 30px; display: block; fill: #fff; }\n.vv-wa-float:hover {\n  transform: translateZ(0) scale(1.08) !important;\n  animation: none;\n  color: #fff !important;\n  box-shadow: 0 6px 28px rgba(37,211,102,0.65);\n}\n.vv-wa-float:hover svg { fill: #fff; }\n@keyframes vvWaPop {\n  0%,100%{box-shadow:0 4px 20px rgba(37,211,102,0.4)}\n  50%{box-shadow:0 4px 40px rgba(37,211,102,0.65),0 0 0 10px rgba(37,211,102,0.07)}\n}<\/p>\n<p>\/* Back to top \u2014 sits above WhatsApp float *\/\n.vv-back-top {\n  position: fixed !important;\n  bottom: calc(120px + env(safe-area-inset-bottom, 0px)) !important;\n  right: 22px !important;\n  left: auto !important;\n  top: auto !important;\n  width: 48px; height: 48px; border-radius: 50%;\n  border: 1px solid rgba(0,229,255,0.45);\n  background: rgba(0,0,0,0.85);\n  color: #00E5FF;\n  display: flex !important; align-items: center; justify-content: center;\n  cursor: pointer;\n  z-index: 2147483646 !important;\n  box-shadow: 0 4px 18px rgba(0,229,255,0.25);\n  opacity: 0; visibility: hidden; pointer-events: none;\n  -webkit-transform: translateZ(0);\n  transform: translateZ(0);\n  transition: opacity 0.2s, visibility 0.2s, background 0.25s, box-shadow 0.25s;\n  padding: 0;\n  -webkit-backface-visibility: hidden;\n  backface-visibility: hidden;\n  touch-action: manipulation;\n}\n.vv-back-top.is-visible {\n  opacity: 1; visibility: visible; pointer-events: auto;\n  transform: translateZ(0);\n}\n.vv-back-top svg { width: 20px; height: 20px; display: block; stroke: currentColor; fill: none; stroke-width: 2.4; stroke-linecap: round; stroke-linejoin: round; }\n.vv-back-top:hover {\n  background: #fff; color: #0a0a12 !important;\n  box-shadow: 0 6px 24px rgba(255,255,255,0.28);\n  transform: translateZ(0) scale(1.05);\n}<\/p>\n<p>\/* Responsive helpers *\/\n@media (max-width: 768px) {\n  .vv-section, .vv-section-alt { padding: 4rem 1.25rem; }\n  .vv-back-top { bottom: 110px !important; width: 44px; height: 44px; }\n}<\/p>\n<p>\/* ===== GLOBAL MOBILE \/ RESPONSIVE ===== *\/\n@media (max-width: 900px) {\n  html {\n    overflow-x: visible !important;\n    overflow-y: auto !important;\n    max-width: 100vw;\n  }\n  body, body.home, body.tc-native-home {\n    \/* visible \u2014 overflow:auto on body kills position:sticky for the nav *\/\n    overflow: visible !important;\n    overflow-x: visible !important;\n    overflow-y: visible !important;\n    max-width: 100vw;\n  }\n  .tc-v2-root, .vv-wrap, .vv-hero-section, .vv-section, .vv-section-alt {\n    overflow-x: clip !important;\n    max-width: 100vw;\n  }\n  .vv-max { max-width: 100%; padding-inline: 0; }\n  .vv-section, .vv-section-alt { padding: 3.5rem 1.15rem !important; }\n  .vv-h2 { font-size: clamp(2.1rem, 9vw, 3.2rem) !important; }\n  .vv-lead { font-size: 0.95rem !important; max-width: 100% !important; }\n  .vv-btn { padding: 0.7rem 1.25rem !important; font-size: 0.8rem !important; }\n  body.tc-space-ready::after {\n    animation: none !important;\n    transform: none !important;\n  }\n  .vv-wa-float {\n    width: 52px !important; height: 52px !important;\n    bottom: 36px !important;\n    right: 14px !important;\n    animation: none !important;\n    transition: none !important;\n    transform: none !important;\n    -webkit-transform: none !important;\n    will-change: auto !important;\n    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.45) !important;\n    filter: none !important;\n    isolation: auto !important;\n    contain: none !important;\n  }\n  .vv-back-top {\n    right: 14px !important;\n    bottom: 100px !important;\n    animation: none !important;\n    transition: opacity 0.15s, visibility 0.15s !important;\n    transform: none !important;\n    -webkit-transform: none !important;\n    will-change: auto !important;\n    filter: none !important;\n    isolation: auto !important;\n    contain: none !important;\n  }\n  .vv-back-top.is-visible,\n  .vv-back-top:hover,\n  .vv-wa-float:hover {\n    transform: none !important;\n    -webkit-transform: none !important;\n    box-shadow: 0 2px 10px rgba(0, 0, 0, 0.45) !important;\n  }\n  .vv-crosshair,\n  .vv-cursor-canvas,\n  body > .vv-cursor-canvas,\n  .tc-v2-root > .vv-cursor-canvas,\n  .vv-space-fx,\n  .vv-space-fx-floor,\n  .vv-space-fx-grid,\n  .vv-space-fx-cross,\n  .vv-space-fx-vanish,\n  .vv-space-fx-horizon { display: none !important; }\n  .vv-ticker-track { font-size: 0.66rem !important; gap: 0.9rem !important; font-weight: 500 !important; will-change: auto !important; }\n  .vv-nav-shell { padding: 0.55rem 10px 0.45rem !important; }\n  .vv-nav {\n    padding: 16px 12px !important; border-radius: 14px !important; gap: 0.6rem !important; min-height: 64px !important;\n    \/* Lighter frosted glass on mobile *\/\n    background: rgba(0, 0, 0, 0.48) !important;\n    -webkit-backdrop-filter: blur(24px) saturate(1.45) !important;\n    backdrop-filter: blur(24px) saturate(1.45) !important;\n    border: 1px solid rgba(255, 255, 255, 0.1) !important;\n    box-shadow: 0 10px 40px rgba(0, 0, 0, 0.45) !important;\n  }\n  .vv-ticker-wrap {\n    background-color: rgba(0, 0, 0, 0.42) !important;\n    -webkit-backdrop-filter: blur(22px) saturate(1.4) !important;\n    backdrop-filter: blur(22px) saturate(1.4) !important;\n  }\n  .vv-logo { min-width: 0 !important; font-size: 1.05rem !important; }\n  .vv-logo-sub { font-size: 0.48rem !important; letter-spacing: 0.08em !important; }\n  .vv-mobile-menu { padding: 1.25rem; gap: 1.25rem !important; }\n  .vv-mobile-menu a { font-size: clamp(1.4rem, 7vw, 1.9rem) !important; }\n  .vv-mob-cta { width: min(280px, 86vw); text-align: center; }\n  .vv-pricing-controls { flex-wrap: wrap; justify-content: center; }\n  .vv-plan-card { padding: 1.25rem 1rem !important; }\n  .vv-plan-price { font-size: 2.4rem !important; }\n  .vv-app-stats { flex-wrap: wrap; min-height: 0 !important; padding: 1rem 0.75rem !important; gap: 0.6rem !important; }\n  .vv-app-stat { flex: 1 1 40% !important; }\n  .vv-app-stat-sep { display: none !important; }\n  .vv-app-float-grid { display: block !important; width: 100% !important; height: 100% !important; }\n  .vv-app-float-grid .vv-app-cell:nth-child(n+5) { display: flex !important; }\n  .vv-devices-layout {\n    display: grid !important;\n    grid-template-columns: 1fr !important;\n    gap: 0.55rem !important;\n    align-items: start !important;\n  }\n  .vv-devices-right { min-height: 0 !important; height: auto !important; }\n  .vv-devices-lottie { min-height: 0 !important; height: auto !important; }\n  .vv-devices-lottie dotlottie-wc {\n    width: min(320px, 78vw) !important;\n    height: min(320px, 78vw) !important;\n    max-height: 340px !important;\n  }\n  .vv-devices-grid { grid-template-columns: repeat(2, 1fr) !important; }\n  .vv-faq-q { font-size: 0.9rem !important; padding: 1.1rem 0 !important; }\n  .vv-footer-grid { gap: 1.75rem !important; }\n  .vv-term-window { max-width: 100%; }\n  .vv-speed-metrics { gap: 0.7rem !important; flex-wrap: wrap; }\n  .vv-metric-val { font-size: 1.4rem !important; }\n}\n@media (max-width: 480px) {\n  .vv-section, .vv-section-alt { padding: 3.25rem 1rem !important; }\n  .vv-hero-section { padding: 0.75rem 1rem 0 !important; }\n  .vv-hero-h1 { font-size: clamp(1.9rem, 8.5vw, 2.45rem) !important; max-width: none !important; }\n  .vv-hero-sub { font-size: 0.8rem !important; opacity: 0.72 !important; }\n  .vv-hero-btns { justify-content: flex-start; gap: 0.4rem !important; }\n  .vv-hero-section .vv-btn { width: auto; max-width: none; padding: 0.62rem 1.05rem !important; font-size: 0.72rem !important; }\n  .vv-hero-trust { gap: 0.25rem 0.35rem !important; margin-top: 0.35rem !important; padding: 0.45rem 0 0.1rem !important; }\n  .vv-trust-num { font-size: 1.7rem !important; }\n  .vv-trust-item { font-size: 0.7rem !important; }\n  .vv-ch-grid { grid-template-columns: repeat(2, 1fr) !important; }\n  .vv-feat-grid { grid-template-columns: 1fr !important; }\n  .vv-feat-large { grid-column: auto !important; }\n  .vv-plans-row, .vv-plans-row-4 { grid-template-columns: repeat(2, 1fr) !important; }\n  .vv-steps-grid { grid-template-columns: repeat(2, 1fr) !important; }\n  .vv-footer-grid { grid-template-columns: repeat(2, 1fr) !important; }\n  .vv-odo { width: min(300px, 90%) !important; }\n  .vv-test-btn { font-size: 0.78rem !important; padding: 0.8rem 1.2rem !important; }\n}<\/p>\n<p>\/* Header stack \u2014 ticker scrolls away; nav menu sticky only *\/\n.vv-topstack {\n  position: relative !important;\n  top: auto !important;\n  left: 0 !important;\n  right: 0 !important;\n  z-index: 2147482500 !important;\n  width: 100% !important;\n  padding-top: env(safe-area-inset-top, 0px);\n  pointer-events: none;\n  isolation: isolate;\n  transform: none !important;\n  background: transparent !important;\n  -webkit-backdrop-filter: none !important;\n  backdrop-filter: none !important;\n}\n.vv-ticker-wrap {\n  position: relative !important;\n  top: auto !important;\n  margin-bottom: 0.85rem !important; \/* small spacer before menu bar *\/\n}\n.vv-nav-shell {\n  position: sticky !important;\n  top: 0 !important;\n  z-index: 10050 !important;\n}\n\/* Mobile: ticker at absolute top (not sticky); nav menu stays sticky *\/\n@media (max-width: 900px) {\n  html, body.home, body.tc-native-home {\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n  body.home #page,\n  body.home .site,\n  body.home .site-content,\n  body.home .content-area,\n  body.home .site-main,\n  body.home .entry-content {\n    margin: 0 !important;\n    padding: 0 !important;\n  }\n  body.home > header.vv-topstack,\n  header.vv-topstack {\n    position: relative !important;\n    top: auto !important;\n    z-index: 40 !important;\n    margin: 0 !important;\n    padding-top: 0 !important;\n    padding-left: 0 !important;\n    padding-right: 0 !important;\n    width: 100% !important;\n  }\n  .vv-ticker-wrap {\n    margin: 0 0 0.55rem !important;\n    min-height: 40px !important;\n    padding: 8px 0 10px !important;\n    position: relative !important;\n  }\n  .vv-nav-shell {\n    position: sticky !important;\n    top: 0 !important;\n    z-index: 10050 !important;\n    padding: 0.55rem 10px 0.45rem !important;\n    pointer-events: none !important;\n    background: transparent !important;\n    margin: 0 !important;\n  }\n  .vv-nav-shell .vv-nav {\n    pointer-events: auto !important;\n  }\n}\n.vv-topstack .vv-ticker-wrap,\n.vv-topstack .vv-nav { pointer-events: auto; }\n\/* TICKER \u2014 darker frosted glass + cyan\u2192purple gradient separator *\/\n.vv-ticker-wrap {\n  background-color: rgba(0, 0, 0, 0.72) !important;\n  background-image:\n    linear-gradient(90deg, transparent 0%, #00E5FF 12%, #7dd3fc 38%, #a78bfa 68%, #7c5cff 88%, transparent 100%);\n  background-repeat: no-repeat;\n  background-position: left bottom;\n  background-size: 100% 2px;\n  border-bottom: none;\n  backdrop-filter: blur(22px) saturate(1.4);\n  -webkit-backdrop-filter: blur(22px) saturate(1.4);\n  overflow: hidden;\n  white-space: nowrap;\n  min-height: 48px;\n  padding: 12px 0 14px;\n  margin: 0 0 0.85rem;\n  position: relative;\n  z-index: 2;\n  display: flex; align-items: center;\n  box-sizing: border-box;\n}\n.vv-ticker-wrap::before,\n.vv-ticker-wrap::after {\n  content: '';\n  position: absolute; top: 0; bottom: 2px; width: 56px; z-index: 2;\n  pointer-events: none;\n}\n.vv-ticker-wrap::before {\n  left: 0;\n  background: linear-gradient(90deg, rgba(4,6,12,0.65), transparent);\n}\n.vv-ticker-wrap::after {\n  right: 0;\n  background: linear-gradient(270deg, rgba(4,6,12,0.65), transparent);\n}\n.vv-ticker-track {\n  display: inline-flex; align-items: center; gap: 1.2rem;\n  animation: vvTicker 28s linear infinite;\n  font-family: 'JetBrains Mono', monospace;\n  font-size: 0.74rem; font-weight: 500;\n  letter-spacing: 0.12em; text-transform: uppercase; line-height: 1.25;\n  will-change: transform;\n  position: relative; z-index: 1;\n}\n.vv-ticker-track span {\n  display: inline-flex; align-items: center; gap: 1.2rem;\n  line-height: 1.25; padding: 0;\n  color: #7dd3fc;\n  background: linear-gradient(90deg, #00E5FF 0%, #7dd3fc 35%, #a78bfa 70%, #00E5FF 100%);\n  background-size: 220% 100%;\n  -webkit-background-clip: text;\n  background-clip: text;\n  -webkit-text-fill-color: transparent;\n  animation: vvGradSlide 6s linear infinite;\n}\n.vv-ticker-track span::after {\n  content: '\u2726'; \/* 4-point star *\/\n  font-size: 0.95rem;\n  line-height: 1;\n  letter-spacing: 0;\n  -webkit-text-fill-color: #00E5FF;\n  color: #00E5FF;\n  background: none;\n  text-shadow: 0 0 12px rgba(0,229,255,0.7), 0 0 4px rgba(0,229,255,0.85);\n  opacity: 1;\n  transform: scale(1.05);\n}\n@keyframes vvTicker { from{transform:translate3d(0,0,0)} to{transform:translate3d(-50%,0,0)} }\n@keyframes vvTickerShimmer { 0%{background-position:0% 50%} 100%{background-position:200% 50%} }\n@keyframes vvGradSlide { 0%{background-position:0% 50%} 100%{background-position:220% 50%} }<\/p>\n<p>\/* NAV \u2014 lowered under ticker to match desktop spacing *\/\n.vv-nav-shell {\n  display: flex; justify-content: center; width: 100%;\n  \/* Compact padding \u2014 ticker is in-flow now (not stuck), so no huge offset *\/\n  padding: 0.55rem 0 1.35rem;\n  box-sizing: border-box;\n  pointer-events: none;\n  position: sticky !important;\n  top: 0 !important;\n  z-index: 10050 !important;\n}\n.vv-nav {\n  position: relative;\n  z-index: auto;\n  display: flex; align-items: center; justify-content: space-between;\n  gap: 1.25rem;\n  width: 100%;\n  max-width: min(1440px, 94vw);\n  padding: 26px 28px;\n  min-height: 90px;\n  background: rgba(0, 0, 0, 0.62) !important;\n  -webkit-backdrop-filter: blur(24px) saturate(1.45) !important;\n  backdrop-filter: blur(24px) saturate(1.45) !important;\n  border: 1px solid rgba(255,255,255,0.1) !important;\n  border-radius: 16px;\n  box-shadow: 0 10px 40px rgba(0,0,0,0.45);\n  overflow: visible;\n  pointer-events: auto;\n}\n.vv-nav::before,\n.vv-nav::after { display: none !important; content: none !important; }\n.vv-logo {\n  font-family: 'Bebas Neue', sans-serif; font-size: 1.65rem;\n  letter-spacing: 0.05em; color: #fff;\n  text-decoration: none; display: flex; flex-direction: column; align-items: flex-start;\n  line-height: 1; position: relative; z-index: 1; white-space: nowrap;\n  flex: 0 0 auto; min-width: 180px;\n}\n\/* Language pill \u2014 between nav links and CTA buttons *\/\n.vv-lang-switch {\n  display: inline-flex;\n  align-items: center;\n  gap: 0.28rem;\n  margin: 0 0.15rem 0 0.35rem;\n  padding: 0.32rem 0.55rem;\n  border: 1px solid rgba(255,255,255,0.16);\n  border-radius: 999px;\n  background: rgba(0, 0, 0, 0.35);\n  font-family: 'JetBrains Mono', monospace;\n  font-size: 0.7rem;\n  letter-spacing: 0.08em;\n  flex: 0 0 auto;\n  position: relative;\n  z-index: 1;\n}\n.vv-lang-switch a {\n  color: rgba(255,255,255,0.68) !important;\n  -webkit-text-fill-color: rgba(255,255,255,0.68) !important;\n  font-weight: 600 !important;\n  text-decoration: none !important;\n  padding: 0.12rem 0.28rem !important;\n  background: transparent !important;\n  border-radius: 4px !important;\n}\n.vv-lang-switch a:hover,\n.vv-lang-switch a:focus {\n  color: #00E5FF !important;\n  -webkit-text-fill-color: #00E5FF !important;\n  background: transparent !important;\n}\n.vv-lang-switch a.is-active {\n  color: #00E5FF !important;\n  -webkit-text-fill-color: #00E5FF !important;\n}\n.vv-lang-switch span { color: rgba(255,255,255,0.28); }\n.vv-lang-switch a::after { content: none !important; display: none !important; }\n.vv-mob-langs {\n  display: flex;\n  gap: 0.55rem;\n  margin: 0 0 0.75rem;\n  padding: 0.35rem;\n  border: 1px solid rgba(255,255,255,0.12);\n  border-radius: 12px;\n}\n.vv-mob-langs a {\n  flex: 1;\n  text-align: center;\n  font-family: 'JetBrains Mono', monospace;\n  font-size: 0.78rem;\n  letter-spacing: 0.08em;\n}\n.vv-mob-langs a.is-active {\n  color: #00E5FF !important;\n  -webkit-text-fill-color: #00E5FF !important;\n}\n.vv-logo-mark { display: block; color: #fff; }\n.vv-logo-v {\n  color: #00E5FF !important;\n  animation: none;\n}\n.vv-logo-sub {\n  font-family: 'Manrope', sans-serif;\n  font-size: 0.55rem;\n  font-weight: 700;\n  letter-spacing: 0.12em;\n  color: rgba(255,255,255,0.78);\n  margin-top: 5px;\n}\n.vv-logo:hover { color: #fff !important; }\n.vv-logo:hover .vv-logo-v { color: #2F6BFF !important; }\n.vv-nav-links {\n  display: flex; flex-wrap: nowrap; align-items: center; justify-content: center;\n  gap: 0.25rem 1.35rem; position: relative; z-index: 1; flex: 1 1 auto;\n  max-width: none;\n  min-width: 0;\n}\n.vv-nav-links a {\n  color: rgba(255,255,255,0.88) !important; text-decoration: none;\n  font-family: 'Manrope', sans-serif;\n  font-size: 0.95rem; font-weight: 300; letter-spacing: 0.03em;\n  transition: color 0.22s ease, background 0.22s ease, box-shadow 0.22s ease,\n              opacity 0.22s ease, transform 0.22s ease;\n  white-space: nowrap;\n  padding: 0.4rem 0.65rem;\n  position: relative;\n  border-radius: 8px;\n  background: transparent;\n}\n.vv-nav-links a:not(:last-child)::after {\n  content: '|';\n  position: absolute; right: -0.55rem; top: 50%; transform: translateY(-50%);\n  color: rgba(255,255,255,0.35); font-weight: 300; pointer-events: none;\n}\n.vv-nav-links a:hover,\n.vv-nav-links a:focus,\n.vv-nav-links a:focus-visible {\n  color: #0a0a12 !important;\n  -webkit-text-fill-color: #0a0a12 !important;\n  background: #fff !important;\n  background-color: #fff !important;\n  opacity: 1;\n  box-shadow: 0 6px 20px rgba(255,255,255,0.18);\n  outline: none;\n  transform: translateY(-1px);\n  text-shadow: none;\n}\n.vv-nav-links a:hover::after,\n.vv-nav-links a:focus::after {\n  color: transparent;\n}\n.vv-mobile-menu a {\n  transition: color 0.22s ease, background 0.22s ease;\n  border-radius: 10px;\n  padding: 0.55rem 0.75rem;\n}\n.vv-mobile-menu a:hover {\n  color: #0a0a12 !important;\n  -webkit-text-fill-color: #0a0a12 !important;\n  background: #fff !important;\n}\n.vv-footer-col a:hover { color: #fff !important; }\n.vv-ch-card:hover { background: var(--vv-card2); border-color: rgba(255,255,255,0.28); box-shadow: 0 0 0 1px rgba(255,255,255,0.12) inset; }\n.vv-plan-card:hover {\n  background: var(--vv-card2);\n  transform: translateY(-12px);\n  box-shadow: 0 22px 48px rgba(0,0,0,0.45), 0 0 28px rgba(0,229,255,0.14);\n}\n.vv-feat-card:hover { background: var(--vv-card2); box-shadow: inset 0 0 0 1px rgba(255,255,255,0.22); }\n.vv-device-card:hover {\n  background: var(--vv-card2); border-color: rgba(255,255,255,0.35);\n  transform: translateY(-3px); box-shadow: 0 8px 24px rgba(255,255,255,0.08);\n}\n.vv-screen-btn:hover:not(.active) {\n  border-color: #fff; color: #fff;\n}\n.vv-plan-btn-outline:hover {\n  background: #fff !important;\n  border-color: #fff !important;\n  color: #0a0a12 !important;\n}\n.vv-faq-q:hover {\n  color: #0a0a12 !important;\n  -webkit-text-fill-color: #0a0a12 !important;\n  background: #fff !important;\n  background-color: #fff !important;\n}\n.vv-faq-q:hover .vv-faq-icon { color: #0a0a12 !important; }\n.vv-viewall:hover { border-color: #fff; color: #fff !important; }\n.tc-v2-root a:hover, .vv-wrap a:hover { color: #fff; }\n.tc-v2-root .vv-nav-links a:hover,\n.vv-wrap .vv-nav-links a:hover,\n.tc-v2-root .vv-mobile-menu a:hover,\n.vv-wrap .vv-mobile-menu a:hover {\n  color: #0a0a12 !important;\n  -webkit-text-fill-color: #0a0a12 !important;\n}\n.tc-v2-root a.vv-plan-btn-red,\n.tc-v2-root a.vv-plan-btn-gold,\n.vv-wrap a.vv-plan-btn-red,\n.vv-wrap a.vv-plan-btn-gold,\n.vv-nav-order, .vv-mob-order {\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n}\n.tc-v2-root a.vv-btn-red:hover,\n.tc-v2-root a.vv-plan-btn-red:hover,\n.tc-v2-root a.vv-dl-primary:hover,\n.vv-wrap a.vv-btn-red:hover,\n.vv-wrap a.vv-btn-outline:hover,\n.vv-wrap a.vv-plan-btn-outline:hover,\n.vv-wrap a.vv-nav-trial:hover { color: #0a0a12 !important; -webkit-text-fill-color: #0a0a12 !important; }\n.tc-v2-root a.vv-nav-order:hover,\n.tc-v2-root a.vv-plan-btn-gold:hover,\n.vv-wrap a.vv-nav-order:hover,\n.vv-wrap a.vv-plan-btn-gold:hover {\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n}\n.vv-nav-ctas {\n  display: flex; align-items: center; gap: 0.7rem; flex: 0 0 auto;\n}\n.vv-nav-order {\n  color: #fff !important;\n  border: 0 !important;\n  background: linear-gradient(135deg, #00E5FF 0%, #2F6BFF 55%, #7c5cff 100%) !important;\n  padding: 0.65rem 1.35rem; border-radius: 999px;\n  font-weight: 800 !important; letter-spacing: 0.04em; font-size: 0.8rem !important;\n  text-decoration: none !important;\n  box-shadow: 0 6px 22px rgba(0,229,255,0.28);\n  transition: transform 0.2s, background 0.25s, color 0.25s, box-shadow 0.2s !important;\n}\n.vv-nav-order:hover {\n  background: linear-gradient(135deg, #7c5cff 0%, #2F6BFF 45%, #00E5FF 100%) !important;\n  color: #fff !important;\n  text-shadow: none !important;\n  transform: translateY(-1px);\n  box-shadow: 0 8px 28px rgba(124,92,255,0.4) !important;\n}\n.vv-nav-trial {\n  background: transparent !important;\n  background-color: transparent !important;\n  background-image: none !important;\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n  border: 1.5px solid #fff !important;\n  padding: 0.65rem 1.35rem; border-radius: 999px;\n  font-weight: 800 !important; letter-spacing: 0.04em; font-size: 0.8rem !important;\n  text-decoration: none !important;\n  transition: transform 0.2s, background 0.25s, color 0.25s, box-shadow 0.2s, border-color 0.2s !important;\n  box-shadow: none !important;\n}\n.vv-nav-trial:hover,\n.vv-nav-trial:focus-visible {\n  background: #fff !important;\n  background-color: #fff !important;\n  background-image: none !important;\n  color: #0a0a12 !important;\n  -webkit-text-fill-color: #0a0a12 !important;\n  border-color: #fff !important;\n  transform: translateY(-1px) !important;\n  text-shadow: none !important;\n  box-shadow: 0 8px 28px rgba(255,255,255,0.22) !important;\n}<\/p>\n<p>\/* Hamburger *\/\n.vv-hamburger {\n  display: none; flex-direction: column; gap: 5px;\n  background: none; border: none; cursor: pointer; padding: 4px;\n}\n.vv-hamburger span {\n  display: block; width: 22px; height: 2px;\n  background: var(--vv-text); border-radius: 2px;\n  transition: transform 0.3s, opacity 0.3s;\n}\n.vv-hamburger.open span:nth-child(1) { transform: translateY(7px) rotate(45deg); }\n.vv-hamburger.open span:nth-child(2) { opacity: 0; }\n.vv-hamburger.open span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }<\/p>\n<p>\/* Mobile Menu *\/\n.vv-mobile-menu {\n  display: none; position: fixed; inset: 0;\n  background: rgba(9,9,11,0.98); z-index: 2147482600;\n  flex-direction: column; align-items: center; justify-content: center;\n  gap: 2rem; backdrop-filter: blur(20px);\n}\n.vv-mobile-menu.open { display: flex; }\n.vv-menu-close {\n  position: absolute; top: 1.5rem; right: 1.5rem;\n  background: none; border: none; color: var(--vv-muted2);\n  font-size: 1.5rem; cursor: pointer;\n}\n.vv-mobile-menu a {\n  font-family: 'Bebas Neue', sans-serif; font-size: 2.2rem;\n  letter-spacing: 0.06em; color: var(--vv-text); text-decoration: none;\n  transition: color 0.2s;\n}\n.vv-mobile-menu a:hover { color: #fff !important; }\n.vv-mob-cta {\n  padding: 0.8rem 2.5rem; border-radius: 6px;\n  font-size: 1rem !important; font-family: 'Manrope', sans-serif !important;\n  font-weight: 700 !important; letter-spacing: 0.1em !important;\n}\n.vv-mob-order {\n  background: linear-gradient(135deg, #00E5FF 0%, #2F6BFF 55%, #7c5cff 100%) !important;\n  color: #fff !important;\n  border: 0 !important;\n  border-radius: 999px;\n}\n.vv-mob-order:hover {\n  background: linear-gradient(135deg, #7c5cff 0%, #2F6BFF 45%, #00E5FF 100%) !important;\n  color: #fff !important;\n}\n.vv-mob-trial {\n  background: transparent !important;\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n  border: 1.5px solid #fff !important;\n  border-radius: 999px;\n}\n.vv-mob-trial:hover {\n  background: #fff !important;\n  color: #0a0a12 !important;\n  -webkit-text-fill-color: #0a0a12 !important;\n  border-color: #fff !important;\n}<\/p>\n<p>@media (max-width: 1100px) {\n  .vv-nav-shell { padding: 1.75rem 0 1rem; }\n  .vv-nav { padding: 16px 18px; min-height: 68px; max-width: min(1440px, 94vw); gap: 1rem; }\n  .vv-nav-links { gap: 0.35rem 1.75rem !important; }\n  .vv-nav-links a { font-size: 1rem; font-weight: 300; padding: 0.3rem 0.25rem; }\n  .vv-nav-order, .vv-nav-trial { padding: 0.9rem 1.5rem !important; font-size: 0.88rem !important; }\n  .vv-logo { min-width: 0; font-size: 1.7rem; }\n  .vv-logo-sub { font-size: 0.58rem; }\n}\n@media (max-width: 900px) {\n  .vv-nav-shell { padding: 0.55rem 10px 0.45rem !important; }\n  .vv-nav { padding: 14px 14px; border-radius: 14px; min-height: 58px; max-width: min(1440px, 94vw); gap: 0.55rem; }\n  .vv-nav-links, .vv-nav-ctas { display: none; }\n  .vv-lang-switch {\n    display: inline-flex !important;\n    margin-left: auto !important;\n    margin-right: 0.1rem !important;\n    padding: 0.28rem 0.48rem !important;\n    font-size: 0.62rem !important;\n    gap: 0.16rem !important;\n  }\n  .vv-lang-switch a { padding: 0.1rem 0.22rem !important; }\n  .vv-logo { font-size: 1.45rem; min-width: 0; }\n  .vv-hamburger { display: flex; flex: 0 0 auto; }\n}<\/p>\n<p>.vv-hero-section {\n  position: relative !important;\n  z-index: 3 !important;\n  \/* Fill viewport under sticky ticker+nav; center content on desktop (1920\u00d71080) *\/\n  min-height: calc(100vh - 260px);\n  min-height: calc(100dvh - 260px);\n  display: flex;\n  align-items: center;\n  padding: 1.25rem 0.6vw 3.25rem;\n  overflow-x: clip;\n  overflow-y: visible;\n  background: transparent;\n  width: 100%;\n  max-width: 100%;\n  box-sizing: border-box;\n}\n\/* Soft merge \u2014 hero \u2192 pure black (MUST stay under mockup\/Lottie\/tiles\/scroll) *\/\n.vv-hero-section::after {\n  content: '';\n  position: absolute;\n  left: 0; right: 0; bottom: 0;\n  height: min(460px, 55vh);\n  z-index: 0 !important;\n  pointer-events: none;\n  background: linear-gradient(\n    to bottom,\n    rgba(0, 0, 0, 0) 0%,\n    rgba(0, 0, 0, 0.28) 16%,\n    rgba(0, 0, 0, 0.62) 38%,\n    rgba(0, 0, 0, 0.88) 58%,\n    rgba(0, 0, 0, 0.98) 78%,\n    #000 100%\n  );\n}\n.vv-hero-inner,\n.vv-hero-text,\n.vv-hero-mockup {\n  position: relative !important;\n  z-index: 2 !important;\n}\n\/* Soft faded black band under features row (trust + player) \u2014 visible like scroll plate, behind text *\/\n.vv-hero-inner::after {\n  content: '' !important;\n  display: block !important;\n  position: absolute !important;\n  left: -1% !important;\n  right: -1% !important;\n  bottom: 3.25rem !important;\n  height: min(220px, 32%) !important;\n  z-index: 1 !important;\n  pointer-events: none !important;\n  background: radial-gradient(\n    ellipse 98% 85% at 50% 55%,\n    rgba(0, 0, 0, 0.94) 0%,\n    rgba(0, 0, 0, 0.78) 38%,\n    rgba(0, 0, 0, 0.42) 62%,\n    rgba(0, 0, 0, 0.12) 80%,\n    transparent 92%\n  ) !important;\n}\n.vv-hero-stage {\n  position: relative !important;\n  z-index: 4 !important;\n}\n.vv-hero-lottie {\n  position: relative !important;\n  z-index: 5 !important;\n  opacity: 1 !important;\n  visibility: visible !important;\n  display: flex !important;\n}\n.vv-float-badge.vv-float-uptime {\n  position: absolute !important;\n  top: -32px !important;\n  left: 0 !important;\n  right: 0 !important;\n  width: 100% !important;\n  transform: none !important;\n  -webkit-transform: none !important;\n  z-index: 12 !important;\n  opacity: 1 !important;\n  visibility: visible !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  margin: 0 !important;\n  pointer-events: none !important;\n}\n.vv-app-float-grid {\n  position: absolute !important;\n  inset: 0 !important;\n  z-index: 5 !important;\n  display: block !important;\n  opacity: 1 !important;\n  visibility: visible !important;\n  pointer-events: none !important;\n}\n.vv-app-float-grid .vv-app-cell {\n  opacity: 1 !important;\n  visibility: visible !important;\n}\n.vv-scroll-cue {\n  position: absolute;\n  left: 50%;\n  bottom: 0.85rem;\n  transform: translateX(-50%);\n  z-index: 20 !important;\n  display: flex !important;\n  flex-direction: column;\n  align-items: center;\n  gap: 0.15rem;\n  text-decoration: none !important;\n  color: rgba(255,255,255,0.78) !important;\n  pointer-events: auto;\n  transition: opacity 0.2s, transform 0.2s;\n  isolation: isolate;\n  opacity: 1 !important;\n  visibility: visible !important;\n}\n\/* Inline cue (under features) \u2014 desktop hidden; mobile shows *\/\n.vv-scroll-cue--inline { display: none !important; }\n.vv-scroll-cue--dock { display: flex !important; }\n.vv-hero-inner > .vv-scroll-cue--inline,\n.vv-hero-inner > .vv-scroll-cue--inline * {\n  pointer-events: auto !important;\n}\n\/* Soft black under Scroll GIF *\/\n.vv-scroll-cue::before {\n  content: '';\n  position: absolute;\n  left: 50%;\n  top: 55%;\n  width: 150px;\n  height: 150px;\n  transform: translate(-50%, -50%);\n  z-index: 0;\n  pointer-events: none;\n  border-radius: 50%;\n  background: radial-gradient(\n    circle at 50% 50%,\n    rgba(0, 0, 0, 0.95) 0%,\n    rgba(0, 0, 0, 0.75) 48%,\n    rgba(0, 0, 0, 0.35) 72%,\n    transparent 88%\n  );\n}\n\/* Black overlay \u2014 bottom up to mid arrow \/ \u201cScroll\u201d (user mark) *\/\n.vv-scroll-cue::after {\n  content: '' !important;\n  display: block !important;\n  position: absolute !important;\n  left: 0 !important;\n  right: 0 !important;\n  bottom: 0 !important;\n  height: 58% !important;\n  z-index: 6 !important;\n  pointer-events: none !important;\n  background: linear-gradient(\n    to top,\n    #000 0%,\n    #000 38%,\n    rgba(0, 0, 0, 0.9) 62%,\n    rgba(0, 0, 0, 0.45) 82%,\n    rgba(0, 0, 0, 0.12) 94%,\n    transparent 100%\n  ) !important;\n}\n.vv-scroll-cue > * {\n  position: relative;\n  z-index: 2;\n}\n.vv-scroll-cue:hover {\n  color: #00E5FF !important;\n  opacity: 1;\n  transform: translateX(-50%) translateY(2px);\n}\n.vv-scroll-cue-label { display: none !important; }\n.vv-scroll-cue dotlottie-wc {\n  display: block !important;\n  width: 140px !important;\n  height: 140px !important;\n  opacity: 1 !important;\n  visibility: visible !important;\n  position: relative !important;\n  z-index: 3 !important;\n}\n\/* Site-wide floor handles depth \u2014 hide hero duplicate (was hard-cutting the bg) *\/\n.vv-hero-section .vv-space-depth {\n  display: none !important;\n}\n\/* ---- BACKGROUND ---- *\/\n.vv-hero-bg {\n  position: absolute; inset: 0;\n  overflow: hidden !important;\n  max-width: 100%;\n  pointer-events: none;\n  -webkit-mask-image: linear-gradient(\n    to bottom,\n    #000 0%,\n    #000 52%,\n    rgba(0, 0, 0, 0.75) 72%,\n    rgba(0, 0, 0, 0.35) 88%,\n    transparent 100%\n  );\n  mask-image: linear-gradient(\n    to bottom,\n    #000 0%,\n    #000 52%,\n    rgba(0, 0, 0, 0.75) 72%,\n    rgba(0, 0, 0, 0.35) 88%,\n    transparent 100%\n  );\n}<\/p>\n<p>\/* Deep space nebula wash \u2014 barely tinted so bg stays near black *\/\n.vv-nebula {\n  position: absolute; inset: -15%;\n  background:\n    radial-gradient(ellipse 55% 40% at 20% 25%, rgba(0,120,180,0.06), transparent 60%),\n    radial-gradient(ellipse 50% 45% at 80% 15%, rgba(90,40,180,0.05), transparent 58%),\n    radial-gradient(ellipse 70% 50% at 50% 85%, rgba(0,60,120,0.08), transparent 55%),\n    radial-gradient(circle at 60% 40%, rgba(0,229,255,0.015), transparent 40%);\n  filter: blur(8px);\n  opacity: 0.45;\n  animation: vvNebulaDrift 18s ease-in-out infinite alternate;\n}\n@keyframes vvNebulaDrift {\n  from { transform: scale(1) translate(0,0); opacity: 0.35; }\n  to { transform: scale(1.08) translate(-2%, 1%); opacity: 0.5; }\n}<\/p>\n<p>\/* Deep-space starfield *\/\n.vv-stars {\n  position: absolute; inset: -10%;\n  pointer-events: none;\n}\n.vv-stars-a {\n  background-image:\n    radial-gradient(1.2px 1.2px at 5% 10%, #fff, transparent),\n    radial-gradient(1px 1px at 12% 35%, rgba(0,229,255,.9), transparent),\n    radial-gradient(1.5px 1.5px at 22% 18%, #fff, transparent),\n    radial-gradient(1px 1px at 31% 62%, rgba(200,180,255,.85), transparent),\n    radial-gradient(1px 1px at 40% 8%, #fff, transparent),\n    radial-gradient(1.8px 1.8px at 49% 44%, rgba(0,229,255,.75), transparent),\n    radial-gradient(1px 1px at 57% 72%, #fff, transparent),\n    radial-gradient(1px 1px at 66% 25%, rgba(255,255,255,.7), transparent),\n    radial-gradient(1.4px 1.4px at 73% 58%, rgba(140,100,255,.8), transparent),\n    radial-gradient(1px 1px at 81% 12%, #fff, transparent),\n    radial-gradient(1px 1px at 88% 48%, rgba(0,229,255,.7), transparent),\n    radial-gradient(1.5px 1.5px at 94% 78%, #fff, transparent),\n    radial-gradient(1px 1px at 8% 88%, rgba(255,255,255,.55), transparent),\n    radial-gradient(1px 1px at 28% 92%, rgba(0,229,255,.6), transparent),\n    radial-gradient(1.2px 1.2px at 52% 96%, #fff, transparent),\n    radial-gradient(1px 1px at 76% 90%, rgba(180,160,255,.65), transparent);\n  animation: vvStarDrift 48s linear infinite;\n  opacity: 0.9;\n}\n.vv-stars-b {\n  background-image:\n    radial-gradient(1px 1px at 15% 22%, rgba(255,255,255,.5), transparent),\n    radial-gradient(1px 1px at 25% 55%, rgba(0,229,255,.45), transparent),\n    radial-gradient(1px 1px at 38% 33%, rgba(255,255,255,.4), transparent),\n    radial-gradient(1px 1px at 55% 15%, rgba(180,160,255,.5), transparent),\n    radial-gradient(1px 1px at 70% 40%, rgba(255,255,255,.45), transparent),\n    radial-gradient(1px 1px at 85% 65%, rgba(0,229,255,.4), transparent),\n    radial-gradient(1px 1px at 45% 70%, rgba(255,255,255,.35), transparent),\n    radial-gradient(1px 1px at 62% 85%, rgba(140,100,255,.4), transparent);\n  animation: vvTwinkle 5s ease-in-out infinite alternate;\n  opacity: 0.75;\n}\n@keyframes vvStarDrift {\n  from { transform: translate3d(0,0,0); }\n  to { transform: translate3d(-2%, 1.5%, 0); }\n}\n@keyframes vvTwinkle {\n  from { opacity: 0.45; }\n  to { opacity: 0.9; }\n}<\/p>\n<p>\/* Hero floor \u2014 stronger, same language as site-wide fx *\/\n.vv-space-depth {\n  position: absolute;\n  left: -35%; right: -35%;\n  bottom: -42%;\n  height: 85%;\n  background:\n    radial-gradient(ellipse 80% 50% at 50% 0%, rgba(0,229,255,0.24), transparent 65%),\n    radial-gradient(ellipse 40% 30% at 30% 20%, rgba(120,80,255,0.14), transparent 70%),\n    linear-gradient(rgba(0,229,255,0.12) 1px, transparent 1px),\n    linear-gradient(90deg, rgba(0,229,255,0.12) 1px, transparent 1px);\n  background-size: auto, auto, 52px 52px, 52px 52px;\n  transform: perspective(420px) rotateX(62deg) scale(1.15);\n  transform-origin: center top;\n  mask-image: linear-gradient(to bottom, rgba(0,0,0,.95), transparent 90%);\n  -webkit-mask-image: linear-gradient(to bottom, rgba(0,0,0,.95), transparent 90%);\n  opacity: 0.9;\n  animation: vvDepthPulse 10s ease-in-out infinite alternate;\n}\n@keyframes vvDepthPulse {\n  from { opacity: 0.72; filter: brightness(0.92); }\n  to { opacity: 0.98; filter: brightness(1.12); }\n}\n\/* Flat hero grid removed \u2014 it fought the perspective floor *\/<\/p>\n<p>.vv-orb {\n  position: absolute; border-radius: 50%;\n  filter: blur(80px); opacity: 0.18;\n}\n.vv-orb1 {\n  width: 520px; height: 520px;\n  background: radial-gradient(circle, rgba(0,229,255,0.1) 0%, transparent 70%);\n  top: -10%; left: -10%;\n  animation: vvOrbDrift1 12s ease-in-out infinite;\n}\n.vv-orb2 {\n  width: 420px; height: 420px;\n  background: radial-gradient(circle, rgba(140,80,255,0.08) 0%, transparent 70%);\n  bottom: -10%; right: 15%;\n  animation: vvOrbDrift2 15s ease-in-out infinite;\n}\n.vv-orb3 {\n  width: 320px; height: 320px;\n  background: radial-gradient(circle, rgba(47,107,255,0.07) 0%, transparent 70%);\n  top: 35%; right: -5%;\n  animation: vvOrbDrift3 10s ease-in-out infinite;\n}\n@keyframes vvOrbDrift1 { 0%,100%{transform:translate(0,0)} 50%{transform:translate(40px,30px)} }\n@keyframes vvOrbDrift2 { 0%,100%{transform:translate(0,0)} 50%{transform:translate(-30px,-20px)} }\n@keyframes vvOrbDrift3 { 0%,100%{transform:translate(0,0)} 50%{transform:translate(20px,-40px)} }<\/p>\n<p>.vv-grid-lines { display: none !important; }<\/p>\n<p>\/* ---- LAYOUT \u2014 spread left copy + right gif toward outer edges ---- *\/\n.vv-hero-inner {\n  display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.12fr);\n  align-items: center; gap: clamp(1.25rem, 3.5vw, 4rem);\n  max-width: min(1760px, 98vw); margin: 0 auto; width: 100%;\n  position: relative; z-index: 2;\n  box-sizing: border-box;\n  justify-content: space-between;\n}\n.vv-hero-screen1 {\n  display: flex;\n  flex-direction: column;\n  min-width: 0;\n  width: 100%;\n}<\/p>\n<p>\/* ---- TEXT ---- *\/\n.vv-hero-text {\n  display: flex; flex-direction: column; gap: 0.95rem;\n  width: 100%; max-width: min(640px, 100%); min-width: 0;\n  justify-self: start;\n}\n.vv-hero-text .vv-eyebrow,\n.vv-hero-text .vv-hero-h1,\n.vv-hero-text .vv-hero-sub,\n.vv-hero-text .vv-hero-btns { max-width: 100%; }\n.vv-hero-section .vv-eyebrow { font-size: 0.78rem; letter-spacing: 0.14em; margin-bottom: 0.4rem; }<\/p>\n<p>.vv-hero-h1 {\n  font-family: 'Bebas Neue', sans-serif;\n  font-size: clamp(2.7rem, 4.55vw, 4.45rem);\n  font-weight: 400;\n  line-height: 0.9; letter-spacing: 0.04em; color: #fff;\n  text-shadow: 0 0 28px rgba(0,229,255,0.12);\n  animation: vvFadeUp 0.8s ease both;\n  max-width: 100%;\n  width: 100%;\n  text-transform: uppercase;\n}\n.vv-h1-gradient,\n.vv-h1-grad {\n  background: linear-gradient(90deg, #00E5FF 0%, #7dd3fc 35%, #a78bfa 70%, #8b5cf6 100%);\n  -webkit-background-clip: text;\n  -webkit-text-fill-color: transparent;\n  background-clip: text;\n  color: transparent;\n  font-weight: 400;\n}\n.vv-h1-sep {\n  display: inline-block;\n  width: min(168px, 32vw);\n  height: 2px;\n  margin: 0 0 0.22em 0.65rem;\n  vertical-align: middle;\n  border-radius: 999px;\n  background: linear-gradient(90deg, #00E5FF 0%, #7dd3fc 40%, #a78bfa 75%, #8b5cf6 100%);\n  box-shadow: 0 0 14px rgba(0, 229, 255, 0.5), 0 0 22px rgba(167, 139, 250, 0.28);\n}\n.vv-h1-cyan {\n  color: #00E5FF !important;\n  -webkit-text-fill-color: #00E5FF !important;\n}\n\/* Third line \u2014 flush under playlist line (one title block) *\/\n.vv-h1-soft {\n  display: block;\n  margin: -0.22em 0 0;\n  padding: 0;\n  font-family: 'Manrope', sans-serif !important;\n  font-weight: 300 !important;\n  font-size: 0.55em !important;\n  letter-spacing: 0.14em !important;\n  line-height: 1 !important;\n  text-transform: uppercase;\n  color: rgba(255,255,255,0.92) !important;\n  -webkit-text-fill-color: rgba(255,255,255,0.92) !important;\n  text-shadow: none !important;\n}\n.vv-h1-soft .vv-h1-cyan {\n  font-weight: 300 !important;\n  color: #00E5FF !important;\n  -webkit-text-fill-color: #00E5FF !important;\n}\n\/* Second line stays same size \/ weight as title \u2014 only \u201cTivimate\u201d is cyan *\/\n.vv-h1-regular {\n  font: inherit !important;\n  font-size: 1em !important;\n  font-weight: inherit !important;\n  letter-spacing: inherit !important;\n  text-transform: inherit !important;\n  color: inherit !important;\n  display: inline;\n  margin: 0;\n  line-height: inherit;\n}<\/p>\n<p>.vv-hero-sub {\n  font-family: 'Manrope', sans-serif;\n  font-size: clamp(0.88rem, 1.05vw, 1rem);\n  color: #d8dce8 !important;\n  -webkit-text-fill-color: #d8dce8 !important;\n  line-height: 1.55;\n  max-width: 36rem;\n  font-weight: 400;\n  letter-spacing: 0.005em;\n  opacity: 0.72 !important;\n  margin: 0.25rem 0 0.2rem;\n  text-wrap: pretty;\n  animation: vvFadeUp 0.9s 0.1s ease both;\n}\n.vv-hero-sub strong {\n  color: rgba(235, 236, 242, 0.9);\n  font-weight: 300;\n}<\/p>\n<p>.vv-hero-btns {\n  display: flex; gap: 1.1rem; flex-wrap: wrap; align-items: center;\n  animation: vvFadeUp 1s 0.2s ease both;\n  margin-top: 1.25rem;\n  margin-bottom: 0.35rem;\n}\n.vv-hero-btns .vv-btn-red {\n  margin-right: 0.45rem;\n}\n\/* Default \/ medium: compact CTAs *\/\n.vv-hero-section .vv-btn {\n  padding: 0.55rem 1.15rem !important;\n  font-size: 0.72rem !important;\n  font-weight: 700 !important;\n  letter-spacing: 0.08em !important;\n  border-radius: 6px !important;\n  line-height: 1.2 !important;\n  box-shadow: none !important;\n  min-height: 0 !important;\n}\n.vv-hero-section .vv-btn-red {\n  box-shadow: 0 4px 16px rgba(0,184,230,0.28) !important;\n}\n\/* Desktop \u2014 modest CTAs (not oversized) *\/\n@media (min-width: 1025px) {\n  .vv-hero-btns { gap: 1.35rem; }\n  .vv-hero-btns .vv-btn-red { margin-right: 0.55rem; }\n  .vv-hero-section .vv-btn {\n    padding: 0.85rem 1.85rem !important;\n    font-size: 0.88rem !important;\n    letter-spacing: 0.09em !important;\n    border-radius: 8px !important;\n    min-height: 48px !important;\n  }\n  .vv-hero-section .vv-btn-red {\n    box-shadow: 0 6px 22px rgba(0,184,230,0.35) !important;\n  }\n}\n@media (min-width: 901px) and (max-width: 1024px) {\n  .vv-hero-section .vv-btn {\n    padding: 0.62rem 1.35rem !important;\n    font-size: 0.78rem !important;\n    min-height: 0 !important;\n  }\n}\n.vv-hero-section .vv-btn-outline {\n  opacity: 1;\n  border: none !important;\n  box-shadow: 0 0 0 0.3px #fff !important;\n  color: #fff !important;\n}\n.vv-hero-section .vv-btn-outline:hover {\n  opacity: 1;\n  background: #fff !important;\n  color: #0a0a12 !important;\n  border: none !important;\n  box-shadow: 0 0 0 0.3px #fff !important;\n}\n.vv-hero-how {\n  position: relative;\n  align-self: center;\n  display: inline-flex;\n  align-items: center;\n  gap: 0.35rem;\n  color: #fff !important;\n  font-size: 1.02rem;\n  font-weight: 600;\n  letter-spacing: 0.04em;\n  text-decoration: none !important;\n  border-bottom: none !important;\n  padding: 0.2rem 0.1rem 0.35rem;\n  opacity: 1 !important;\n  text-shadow: none;\n  transition:\n    color 0.28s ease,\n    transform 0.28s ease,\n    text-shadow 0.28s ease;\n}\n.vv-hero-how::after {\n  content: '';\n  position: absolute;\n  left: 0;\n  bottom: 0;\n  width: 100%;\n  height: 1.5px;\n  background: linear-gradient(90deg, #00E5FF, #7c5cff);\n  transform: scaleX(0);\n  transform-origin: left center;\n  transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1);\n  border-radius: 2px;\n  opacity: 0.95;\n}\n.vv-hero-how-arrow {\n  display: inline-block;\n  transition: transform 0.32s cubic-bezier(0.22, 1, 0.36, 1);\n}\n.vv-hero-how:hover {\n  color: #00E5FF !important;\n  opacity: 1 !important;\n  transform: translateX(4px);\n  text-shadow: 0 0 18px rgba(0,229,255,0.45);\n}\n.vv-hero-how:hover::after {\n  transform: scaleX(1);\n}\n.vv-hero-how:hover .vv-hero-how-arrow {\n  transform: translateX(6px);\n}\n.vv-hero-how:active {\n  transform: translateX(2px);\n}<\/p>\n<p>\/* Trust row \u2014 5 stats left-aligned group, text centered in each item *\/\n.vv-hero-trust {\n  display: flex;\n  flex-wrap: nowrap;\n  align-items: flex-start;\n  justify-content: flex-start;\n  gap: 0.35rem 1.35rem;\n  width: 100%;\n  max-width: 100%;\n  margin-top: 1.75rem;\n  margin-left: 0;\n  margin-right: auto;\n  padding: 1.15rem 0.85rem 0.9rem;\n  border-top: 1px solid rgba(255,255,255,0.1);\n  animation: vvFadeUp 1s 0.3s ease both;\n  overflow: visible;\n  box-sizing: border-box;\n  position: relative;\n  isolation: isolate;\n  z-index: 6;\n  border-radius: 12px;\n  background: transparent;\n  box-shadow: none;\n}\n\/* Soft plate under trust \u2014 disabled; .vv-soft-shade handles it *\/\n.vv-hero-trust::before {\n  content: none !important;\n  display: none !important;\n}\n\/* Soft black overlay \u2014 disabled; .vv-soft-shade handles it *\/\n.vv-hero-trust::after {\n  content: none !important;\n  display: none !important;\n}\n.vv-hero-trust::-webkit-scrollbar { display: none; }\n.vv-trust-item {\n  display: flex; flex-direction: column; gap: 0.25rem; align-items: center;\n  font-size: 0.78rem; color: rgba(210, 216, 228, 0.95); font-weight: 400;\n  min-width: 0;\n  padding: 0.1rem 0.35rem;\n  position: relative;\n  z-index: 5;\n  flex: 0 0 auto;\n  letter-spacing: 0.02em;\n  white-space: normal;\n  text-align: center;\n}\n.vv-trust-item:not(:first-child) {\n  padding-left: 1.15rem;\n  margin-left: 0;\n}\n.vv-trust-item:not(:first-child)::before {\n  content: '';\n  position: absolute;\n  left: 0;\n  top: 0.2rem;\n  bottom: 0.15rem;\n  width: 1px;\n  background: linear-gradient(\n    180deg,\n    transparent 0%,\n    #00E5FF 18%,\n    #7dd3fc 45%,\n    #a78bfa 72%,\n    transparent 100%\n  );\n  opacity: 0.9;\n  box-shadow: 0 0 10px rgba(0,229,255,0.35);\n  pointer-events: none;\n}\n.vv-trust-num {\n  font-family: 'Bebas Neue', sans-serif; font-size: clamp(1.95rem, 2.55vw, 2.7rem);\n  color: var(--vv-text); line-height: 0.95;\n  background: linear-gradient(135deg, #00E5FF, #a78bfa);\n  -webkit-background-clip: text; -webkit-text-fill-color: transparent;\n  background-clip: text;\n  white-space: nowrap;\n  position: relative;\n  z-index: 6;\n}<\/p>\n<p>\/* ---- MOCKUP ---- *\/\n.vv-hero-mockup {\n  position: relative; display: flex;\n  flex-direction: column;\n  justify-content: flex-start; align-items: center;\n  width: 100%;\n  height: auto;\n  min-height: 0;\n  align-self: center;\n  justify-self: end;\n  animation: vvFadeUp 1s 0.4s ease both;\n  isolation: isolate;\n  gap: 0;\n  padding: 0.5rem 0 0;\n  touch-action: pan-y;\n  \/* full right-column hit area for mouse-drag *\/\n  cursor: default;\n}\n\/* Stage = Lottie + orbit tiles only (stats sits below in normal flow) *\/\n.vv-hero-stage {\n  position: relative;\n  width: 100%;\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  min-height: min(460px, 90vw);\n  padding-bottom: 1.25rem;\n  box-sizing: content-box;\n  \/* Clip bottom spill onto stats; keep top\/side tiles visible *\/\n  overflow: visible;\n  clip-path: inset(-72px -120px 0 -120px);\n}\n\/* Invisible full-column hit layer \u2014 drag works anywhere on the right side *\/\n.vv-hero-mockup::after {\n  content: '';\n  position: absolute;\n  inset: 0;\n  z-index: 20;\n  pointer-events: auto;\n  background: transparent;\n}\n.vv-hero-mockup .vv-app-float-grid,\n.vv-hero-mockup .vv-app-float-grid .vv-app-cell,\n.vv-hero-mockup .vv-float-badge,\n.vv-hero-mockup .vv-app-window,\n.vv-hero-mockup .vv-hero-lottie {\n  pointer-events: none !important;\n}\n.vv-hero-mockup.is-hover-drag .vv-hero-lottie {\n  filter: drop-shadow(0 16px 40px rgba(0,229,255,0.18));\n}\n.vv-hero-lottie {\n  position: relative;\n  z-index: 6;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: min(460px, 92%);\n  margin: 0 auto 0;\n  pointer-events: none;\n  filter: drop-shadow(0 12px 32px rgba(0,229,255,0.12));\n  will-change: transform;\n  transform: translate3d(0, 0, 0);\n  transition: filter 0.35s ease;\n}\n.vv-hero-lottie dotlottie-wc {\n  display: block;\n  width: 460px !important;\n  height: 460px !important;\n  max-width: min(460px, 90vw);\n  max-height: min(460px, 90vw);\n}\n\/* Cyan \u2192 purple radial glow behind the glass player *\/\n.vv-hero-mockup::before {\n  content: '';\n  position: absolute;\n  width: 135%;\n  height: 135%;\n  left: 50%; top: 50%;\n  transform: translate(-50%, -50%);\n  z-index: 0;\n  pointer-events: none;\n  background: radial-gradient(\n    circle at 50% 45%,\n    rgba(0,229,255,0.18) 0%,\n    rgba(120,80,255,0.12) 32%,\n    rgba(47,107,255,0.06) 52%,\n    transparent 72%\n  );\n  filter: blur(28px);\n  opacity: 0.45;\n}<\/p>\n<p>\/* Floating badges *\/\n.vv-float-badge {\n  position: absolute; z-index: 10;\n  background: rgba(12,12,18,0.45);\n  border: 1px solid rgba(255,255,255,0.12);\n  border-radius: 10px; padding: 0.6rem 1rem;\n  backdrop-filter: blur(16px) saturate(1.3);\n  -webkit-backdrop-filter: blur(16px) saturate(1.3);\n  box-shadow: 0 8px 32px rgba(0,0,0,0.35), 0 0 24px rgba(0,184,230,0.12);\n  animation: vvBadgeFloat 4s ease-in-out infinite;\n}\n.vv-float-8k { display: none !important; }\n.vv-float-uptime {\n  top: -32px !important;\n  left: 0 !important;\n  right: 0 !important;\n  width: 100% !important;\n  transform: none !important;\n  -webkit-transform: none !important;\n  display: flex !important;\n  align-items: center !important;\n  justify-content: center !important;\n  z-index: 12 !important;\n  padding: 0;\n  border: none;\n  background: transparent;\n  box-shadow: none;\n  backdrop-filter: none;\n  -webkit-backdrop-filter: none;\n  animation: none; \/* float lives on inner so drag JS can't kill it *\/\n  position: absolute !important;\n  isolation: isolate;\n  opacity: 1 !important;\n  margin: 0 !important;\n}\n.vv-float-uptime-inner {\n  position: relative;\n  z-index: 2;\n  display: flex; align-items: center; justify-content: center; gap: 0.85rem;\n  font-family: 'JetBrains Mono', monospace; font-size: 0.88rem;\n  font-weight: 700;\n  color: #e8fbff; letter-spacing: 0.1em;\n  text-transform: uppercase;\n  white-space: nowrap;\n  padding: 0;\n  border-radius: 0;\n  background: transparent !important;\n  border: none !important;\n  backdrop-filter: none !important;\n  -webkit-backdrop-filter: none !important;\n  box-shadow: none !important;\n  text-shadow: 0 0 10px rgba(0, 229, 255, 0.35);\n  animation: vvFloatUptime 4.6s ease-in-out infinite;\n  will-change: transform, opacity, filter;\n  overflow: visible;\n  margin: 0 auto !important;\n}\n\/* No rectangle \/ scanline plate \u2014 icon + text only *\/\n.vv-float-uptime-inner::before {\n  content: none !important;\n  display: none !important;\n}\n.vv-float-uptime .vv-live { display: none !important; }\n.vv-live-gif {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-shrink: 0;\n  width: 56px;\n  height: 56px;\n  margin: 0;\n  filter: drop-shadow(0 0 12px rgba(0, 229, 255, 0.7));\n}\n.vv-live-gif dotlottie-wc {\n  display: block;\n  width: 56px !important;\n  height: 56px !important;\n}\n.vv-stream-bars { display: none !important; }\n.vv-badge-label {\n  font-family: 'JetBrains Mono', monospace; font-size: 0.5rem;\n  color: var(--vv-muted2); letter-spacing: 0.15em; text-transform: uppercase;\n}\n.vv-badge-value {\n  font-family: 'Bebas Neue', sans-serif; font-size: 2rem; line-height: 1;\n  background: linear-gradient(135deg, var(--vv-red), var(--vv-orange));\n  -webkit-background-clip: text; -webkit-text-fill-color: transparent;\n  background-clip: text;\n}\n@keyframes vvBadgeFloat { 0%,100%{transform:translateY(0)} 50%{transform:translateY(-10px)} }\n@keyframes vvBadgeFloatCenter {\n  0%,100%{transform:translateX(-50%) translateY(0)}\n  50%{transform:translateX(-50%) translateY(-8px)}\n}\n@keyframes vvFloatUptime {\n  0%, 100% { transform: translateY(0) rotate(-0.5deg); }\n  35% { transform: translateY(-12px) rotate(0.8deg); }\n  70% { transform: translateY(-5px) rotate(-0.6deg); }\n}\n@keyframes vvHoloFlicker {\n  0%, 100% { opacity: 1; filter: brightness(1); }\n  42% { opacity: 0.92; filter: brightness(1.08); }\n  48% { opacity: 1; filter: brightness(1.15); }\n  52% { opacity: 0.88; filter: brightness(0.95); }\n  58% { opacity: 1; filter: brightness(1.05); }\n}<\/p>\n<p>\/* Category tiles \u2014 orbit around Lottie only (not over stats) *\/\n.vv-app-float-grid {\n  position: absolute;\n  inset: 0;\n  z-index: 10;\n  display: block;\n  width: 100%;\n  height: 100%;\n  margin: 0;\n  padding: 0;\n  pointer-events: none;\n  \/* no transform here \u2014 keeps cell z-index competing with Lottie\/stats *\/\n}\n.vv-app-float-grid .vv-app-cell {\n  position: absolute;\n  width: 128px;\n  background: rgba(14, 16, 28, 0.55);\n  border-radius: 14px;\n  padding: 1.05rem 0.75rem;\n  display: flex; flex-direction: column; align-items: center;\n  gap: 0.5rem; cursor: default;\n  transition: background 0.2s, border-color 0.2s, box-shadow 0.25s, opacity 0.25s;\n  border: 1px solid rgba(255,255,255,0.14);\n  backdrop-filter: blur(14px) saturate(1.3);\n  -webkit-backdrop-filter: blur(14px) saturate(1.3);\n  box-shadow: 0 10px 28px rgba(0,0,0,0.35), 0 0 18px rgba(0,229,255,0.1);\n  pointer-events: auto;\n}\n\/* Behind the Lottie \u2014 tucked under the gif *\/\n.vv-app-float-grid .vv-app-cell.vv-cell-behind {\n  z-index: 4;\n  opacity: 0.78;\n  filter: saturate(0.85) brightness(0.92);\n  backdrop-filter: blur(8px) saturate(1.1);\n  -webkit-backdrop-filter: blur(8px) saturate(1.1);\n  box-shadow: 0 6px 18px rgba(0,0,0,0.28);\n}\n\/* Above the Lottie \u2014 frosted glass *\/\n.vv-app-float-grid .vv-app-cell.vv-cell-front {\n  z-index: 12;\n  opacity: 1;\n  background: rgba(10, 12, 22, 0.38);\n  border: 1px solid rgba(255,255,255,0.18);\n  backdrop-filter: blur(22px) saturate(1.45);\n  -webkit-backdrop-filter: blur(22px) saturate(1.45);\n  box-shadow:\n    0 14px 36px rgba(0,0,0,0.42),\n    0 0 24px rgba(0,229,255,0.14),\n    inset 0 1px 0 rgba(255,255,255,0.12);\n}\n\/* Circular orbit around the Lottie (6 points) \u2014 tight center cluster *\/\n.vv-app-float-grid .vv-app-cell:nth-child(1) {\n  \/* Sports \u2014 upper-left arc *\/\n  top: calc(50% - 34%); left: calc(50% - 34%); right: auto; bottom: auto;\n  animation: vvFloatA 5.2s ease-in-out infinite;\n}\n.vv-app-float-grid .vv-app-cell:nth-child(2) {\n  \/* Movies \u2014 upper-right arc *\/\n  top: calc(50% - 36%); left: calc(50% + 16%); right: auto; bottom: auto;\n  animation: vvFloatB 6.1s ease-in-out infinite 0.3s;\n}\n.vv-app-float-grid .vv-app-cell:nth-child(3) {\n  \/* News \u2014 mid-left, behind gif \u2014 nudged up toward center *\/\n  top: calc(50% - 12%); left: calc(50% - 36%); right: auto; bottom: auto;\n  animation: vvFloatC 4.8s ease-in-out infinite 0.7s;\n}\n.vv-app-float-grid .vv-app-cell:nth-child(4) {\n  \/* Music \u2014 mid-right, behind gif *\/\n  top: calc(50% - 6%); left: calc(50% + 18%); right: auto; bottom: auto;\n  animation: vvFloatA 5.6s ease-in-out infinite 1.1s;\n}\n.vv-app-float-grid .vv-app-cell:nth-child(5) {\n  \/* Football \u2014 lower-left, kept inside stage (never over stats) *\/\n  top: calc(50% + 16%); left: calc(50% - 30%); right: auto; bottom: auto;\n  animation: vvFloatB 5s ease-in-out infinite 0.5s;\n}\n.vv-app-float-grid .vv-app-cell:nth-child(6) {\n  \/* World \u2014 lower-right arc *\/\n  top: calc(50% + 18%); left: calc(50% + 14%); right: auto; bottom: auto;\n  animation: vvFloatC 6.4s ease-in-out infinite 0.9s;\n}\n.vv-app-float-grid .vv-app-cell.vv-cell-front:hover {\n  background: rgba(0,229,255,0.16);\n  border-color: rgba(0,229,255,0.45);\n  box-shadow: 0 16px 40px rgba(0,0,0,0.45), 0 0 28px rgba(0,229,255,0.22);\n  z-index: 15;\n}\n.vv-app-float-grid .vv-app-cell.vv-cell-behind:hover {\n  opacity: 0.9;\n  z-index: 5;\n}\n@keyframes vvFloatA {\n  0%, 100% { transform: translate(0, 0) rotate(-1.5deg); }\n  50% { transform: translate(6px, -12px) rotate(1deg); }\n}\n@keyframes vvFloatB {\n  0%, 100% { transform: translate(0, 0) rotate(1deg); }\n  50% { transform: translate(-8px, -10px) rotate(-2deg); }\n}\n@keyframes vvFloatC {\n  0%, 100% { transform: translate(0, 0) rotate(0deg); }\n  33% { transform: translate(5px, -8px) rotate(1.5deg); }\n  66% { transform: translate(-4px, -14px) rotate(-1deg); }\n}\n.vv-cell-icon { font-size: 2rem; }\n.vv-cell-name {\n  font-size: 0.86rem; font-weight: 600; color: var(--vv-muted2);\n  text-align: center; letter-spacing: 0.03em;\n}\n.vv-app-float-grid .vv-live {\n  position: absolute; top: 6px; right: 6px; font-size: 0.42rem;\n}\n.vv-cell-sports { border-color: rgba(0,184,230,0.28); }\n.vv-cell-movies .vv-cell-icon { animation: vvCellPop 3s ease-in-out infinite; }\n.vv-cell-football .vv-cell-icon { animation: vvCellPop 3s 1s ease-in-out infinite; }\n@keyframes vvCellPop { 0%,100%{transform:scale(1)} 50%{transform:scale(1.12)} }<\/p>\n<p>\/* Stats widget \u2014 wide player bar under Lottie *\/\n.vv-app-window {\n  position: relative; z-index: 6;\n  width: min(720px, 100%);\n  display: flex; flex-direction: column;\n  background: rgba(8, 10, 18, 0.92);\n  backdrop-filter: blur(18px) saturate(1.15);\n  -webkit-backdrop-filter: blur(18px) saturate(1.15);\n  border-radius: 18px;\n  border: 1px solid rgba(255,255,255,0.14);\n  box-shadow:\n    0 24px 60px rgba(0,0,0,0.65),\n    0 0 40px rgba(0,184,230,0.1),\n    inset 0 1px 0 rgba(255,255,255,0.08);\n  overflow: hidden;\n  opacity: 1;\n}\n.vv-app-window-stats {\n  margin-top: 1.15rem; \/* clear of orbit stage *\/\n  margin-bottom: 0.35rem;\n  will-change: transform;\n  transform: translate3d(0, 0, 0);\n  position: relative;\n  z-index: 16; \/* always above any orbit tile overflow *\/\n  isolation: isolate;\n  background: rgba(8, 10, 18, 0.82) !important;\n  backdrop-filter: blur(10px) saturate(1.05) !important;\n  -webkit-backdrop-filter: blur(10px) saturate(1.05) !important;\n  overflow: hidden !important;\n  border-bottom: none !important;\n  box-shadow:\n    0 24px 60px rgba(0,0,0,0.55),\n    inset 0 1px 0 rgba(255,255,255,0.08);\n  -webkit-mask-image: linear-gradient(to top, transparent 0%, #000 22px, #000 100%) !important;\n  mask-image: linear-gradient(to top, transparent 0%, #000 22px, #000 100%) !important;\n}\n\/* Soft plate under player \u2014 disabled; .vv-soft-shade handles it *\/\n.vv-app-window-stats::before {\n  content: none !important;\n  display: none !important;\n}\n\/* Soft black overlay \u2014 disabled; .vv-soft-shade handles it *\/\n.vv-app-window-stats::after {\n  content: none !important;\n  display: none !important;\n}\n.vv-app-window-stats > * {\n  position: relative;\n  z-index: 1;\n}\n.vv-app-bar {\n  background: rgba(0, 0, 0, 0.35); padding: 0.8rem 1rem;\n  display: flex; align-items: center; gap: 1rem;\n  border-bottom: 1px solid rgba(255,255,255,0.06);\n  position: relative;\n  z-index: 1;\n}\n.vv-traffic-lights { display: flex; gap: 6px; }\n.vv-tl { width: 10px; height: 10px; border-radius: 50%; }\n.tl-red { background: #00E5FF; }\n.tl-yellow { background: #febc2e; }\n.tl-green { background: #28c840; }\n.vv-app-title {\n  font-family: 'JetBrains Mono', monospace; font-size: 0.65rem;\n  color: var(--vv-muted2); letter-spacing: 0.1em; margin-left: auto;\n}<\/p>\n<p>\/* App stats strip \u2014 taller so it fills the mockup footer *\/\n.vv-app-stats {\n  display: flex; align-items: center; justify-content: space-between;\n  gap: 0.65rem;\n  background: rgba(0, 0, 0, 0.28);\n  padding: 1.35rem 1.25rem 1.45rem;\n  border-top: 1px solid rgba(255,255,255,0.06);\n  min-height: 92px;\n  box-sizing: border-box;\n  position: relative;\n  isolation: isolate;\n  z-index: 2;\n}\n.vv-app-stats::before {\n  content: none !important;\n  display: none !important;\n}\n.vv-app-stat {\n  display: flex; flex-direction: column; align-items: center; justify-content: center;\n  gap: 0.35rem; flex: 1 1 auto; min-width: max-content;\n  position: relative;\n  z-index: 5;\n}\n.vv-app-stat strong {\n  position: relative;\n  z-index: 5;\n  font-family: 'Bebas Neue', sans-serif; font-size: clamp(1.55rem, 2.7vw, 2.05rem);\n  color: #fff; -webkit-text-fill-color: #fff;\n  line-height: 1; letter-spacing: 0.02em;\n  white-space: nowrap;\n}\n.vv-app-stat span {\n  font-family: 'JetBrains Mono', monospace; font-size: 0.68rem;\n  color: rgba(220,220,230,0.95); letter-spacing: 0.04em; text-transform: uppercase;\n  text-align: center; max-width: none; line-height: 1.2;\n  white-space: nowrap;\n}\n.vv-app-stat-sep {\n  width: 1px; height: 52px; flex: 0 0 auto;\n  background: rgba(255,255,255,0.14);\n}\n.vv-stat-highlight {\n  background: var(--vv-red); border-radius: 10px;\n  padding: 0.8rem 1rem; flex: 0 1 auto;\n  min-width: 5rem;\n}\n.vv-stat-highlight strong {\n  font-size: clamp(1.55rem, 2.7vw, 2.05rem);\n  color: #fff !important;\n}\n.vv-stat-highlight span {\n  color: rgba(255,255,255,0.92) !important;\n  font-size: 0.72rem;\n  font-weight: 600;\n}<\/p>\n<p>\/* Animations *\/\n@keyframes vvFadeUp { from{opacity:0;transform:translateY(24px)} to{opacity:1;transform:translateY(0)} }<\/p>\n<p>\/* Responsive *\/\n@media (max-width: 900px) {\n  \/* First hero: pack content, show scroll GIF at bottom of viewport *\/\n  .vv-hero-section {\n    padding: 0.85rem 1rem 0 !important;\n    min-height: 0 !important;\n    align-items: flex-start;\n    display: flex !important;\n    flex-direction: column !important;\n  }\n  .vv-scroll-cue { bottom: 0.25rem; }\n  .vv-scroll-cue dotlottie-wc { width: 110px !important; height: 110px !important; }\n  .vv-scroll-cue--dock { display: none !important; }\n  .vv-hero-mockup::after { display: none !important; }\n  .vv-hero-inner {\n    width: 100% !important;\n    max-width: 100% !important;\n    text-align: left;\n    display: flex !important;\n    flex-direction: column !important;\n    gap: 0 !important;\n    position: relative !important;\n  }\n  .vv-hero-inner::before {\n    content: none !important;\n    display: none !important;\n  }\n  .vv-hero-screen1 {\n    display: flex !important;\n    flex-direction: column !important;\n    justify-content: center !important;\n    width: 100% !important;\n    \/* min-height only \u2014 max-height+overflow:hidden fights finger scroll in first section *\/\n    min-height: calc(var(--vv-hero-vh, 100vh) - 5.75rem) !important;\n    max-height: none !important;\n    overflow: visible !important;\n    position: relative !important;\n    padding-top: 0.25rem !important;\n    padding-bottom: 6.75rem !important;\n    box-sizing: border-box !important;\n  }\n  .vv-hero-screen1::after {\n    content: none !important;\n    display: none !important;\n  }\n  .vv-hero-text {\n    display: flex !important;\n    flex-direction: column !important;\n    align-items: flex-start;\n    gap: 0.4rem;\n    text-align: left;\n    width: 100% !important;\n    order: 1 !important;\n    z-index: 5 !important;\n    height: auto !important;\n    flex: 0 0 auto !important;\n    box-sizing: border-box !important;\n    padding-bottom: 0 !important;\n    margin-top: 0 !important;\n    margin-bottom: 0 !important;\n  }\n  .vv-scroll-cue--inline {\n    display: flex !important;\n    position: absolute !important;\n    left: 50% !important;\n    bottom: 0.55rem !important;\n    right: auto !important;\n    top: auto !important;\n    transform: translate3d(-50%, 0, 0) !important;\n    margin: 0 !important;\n    order: unset !important;\n    z-index: 25 !important;\n    width: fit-content !important;\n    height: auto !important;\n    max-height: none !important;\n    pointer-events: auto !important;\n    align-self: center !important;\n    isolation: isolate !important;\n    overflow: visible !important;\n    flex: 0 0 auto !important;\n    transition: none !important;\n    will-change: auto !important;\n    background: transparent !important;\n    color: inherit !important;\n    border-radius: 0 !important;\n  }\n  .vv-scroll-cue--inline .vv-mesh-block--scroll {\n    display: none !important;\n  }\n  \/* Dark overlay under scroll GIF *\/\n  .vv-scroll-cue--inline::before {\n    content: '' !important;\n    display: block !important;\n    position: absolute !important;\n    left: 50% !important;\n    top: 52% !important;\n    width: 118px !important;\n    height: 118px !important;\n    transform: translate(-50%, -50%) !important;\n    z-index: 0 !important;\n    pointer-events: none !important;\n    border-radius: 50% !important;\n    background: radial-gradient(\n      circle at 50% 50%,\n      rgba(0, 0, 0, 0.95) 0%,\n      rgba(0, 0, 0, 0.78) 42%,\n      rgba(0, 0, 0, 0.4) 68%,\n      transparent 88%\n    ) !important;\n  }\n  .vv-scroll-cue--inline::after {\n    content: '' !important;\n    display: block !important;\n    position: absolute !important;\n    left: -12% !important;\n    right: -12% !important;\n    bottom: -4% !important;\n    height: 62% !important;\n    z-index: 6 !important;\n    pointer-events: none !important;\n    background: linear-gradient(\n      to top,\n      #000 0%,\n      rgba(0, 0, 0, 0.92) 30%,\n      rgba(0, 0, 0, 0.55) 62%,\n      transparent 100%\n    ) !important;\n  }\n  .vv-scroll-cue--inline > * { position: relative !important; z-index: 2 !important; }\n  .vv-scroll-cue--inline * { pointer-events: auto !important; }\n  .vv-scroll-cue--inline:hover,\n  .vv-scroll-cue--inline:active,\n  .vv-scroll-cue--inline:focus {\n    transform: translate3d(-50%, 0, 0) !important;\n  }\n  .vv-scroll-cue--inline dotlottie-wc {\n    width: 100px !important;\n    height: 100px !important;\n    display: block !important;\n    position: relative !important;\n    z-index: 3 !important;\n    transform: none !important;\n    transition: none !important;\n    visibility: visible !important;\n    opacity: 1 !important;\n  }\n  .vv-hero-trust { position: relative !important; z-index: 6 !important; }\n  .vv-hero-mockup {\n    order: 3 !important;\n    width: 100% !important;\n    margin-top: 1.25rem !important;\n    padding-bottom: 1.5rem !important;\n  }\n  .vv-hero-text .vv-eyebrow,\n  .vv-hero-text .vv-hero-h1,\n  .vv-hero-text .vv-hero-sub,\n  .vv-hero-text .vv-hero-btns { max-width: 100%; text-align: left; }\n  .vv-hero-section .vv-eyebrow {\n    font-size: 0.55rem !important;\n    letter-spacing: 0.1em !important;\n    justify-content: flex-start !important;\n  }\n  .vv-hero-h1 { font-size: clamp(2.05rem, 8vw, 2.65rem) !important; line-height: 0.92 !important; text-align: left !important; }\n  .vv-hero-sub { text-align: left; font-size: 0.8rem !important; line-height: 1.45 !important; }\n  .vv-hero-btns {\n    display: grid !important;\n    grid-template-columns: max-content max-content;\n    grid-template-areas:\n      \"pricing trial\"\n      \"how .\";\n    justify-content: start;\n    align-items: center;\n    column-gap: 0.55rem;\n    row-gap: 0.4rem;\n    margin-top: 0.7rem;\n  }\n  .vv-hero-btns .vv-btn-red { grid-area: pricing; margin-right: 0 !important; }\n  .vv-hero-btns .vv-btn-outline { grid-area: trial; }\n  .vv-hero-section .vv-btn { padding: 0.68rem 1.15rem !important; font-size: 0.76rem !important; }\n  .vv-hero-how {\n    grid-area: how;\n    width: auto;\n    justify-self: start;\n    text-align: left;\n    font-size: 0.78rem !important;\n    margin-top: 0.05rem;\n  }\n  .vv-hero-trust {\n    display: flex !important;\n    flex-wrap: nowrap !important;\n    justify-content: space-between;\n    align-items: stretch;\n    gap: 0.15rem !important;\n    width: 100%;\n    overflow: visible !important;\n    margin-top: 0.55rem !important;\n    padding: 0.55rem 0.2rem 0.45rem !important;\n    border-top: 1px solid rgba(255,255,255,0.1) !important;\n    background: rgba(0, 0, 0, 0.5) !important;\n  }\n  .vv-hero-trust::before {\n    content: none !important;\n    display: none !important;\n  }\n  .vv-hero-trust::after {\n    content: none !important;\n    display: none !important;\n  }\n  .vv-hero-trust::-webkit-scrollbar { display: none; }\n  \/* All 5 features on one horizontal line *\/\n  .vv-hero-trust .vv-trust-item,\n  .vv-hero-trust .vv-trust-item:nth-child(n+5) {\n    display: flex !important;\n    flex: 1 1 0 !important;\n    min-width: 0 !important;\n    width: auto !important;\n    padding-left: 0.22rem !important;\n    padding-right: 0.02rem !important;\n    font-size: 0.48rem !important;\n    gap: 0.1rem !important;\n    overflow: hidden !important;\n  }\n  .vv-trust-num { font-size: 0.92rem !important; line-height: 1.05 !important; }\n  .vv-trust-item > span:not(.vv-trust-num) {\n    line-height: 1.1 !important;\n    white-space: nowrap !important;\n    overflow: hidden !important;\n    text-overflow: ellipsis !important;\n    max-width: 100% !important;\n  }\n  \/* Mockup below copy + scroll *\/\n  .vv-hero-mockup {\n    order: 3 !important;\n    margin-top: 1.25rem !important;\n    padding-bottom: 1.5rem !important;\n    width: 100% !important;\n    min-height: 0 !important;\n    gap: 0.75rem !important;\n    display: flex !important;\n    flex-direction: column !important;\n  }\n  .vv-hero-stage {\n    position: relative !important;\n    width: 100% !important;\n    min-height: min(400px, 108vw) !important;\n    padding-bottom: 1.25rem !important;\n    overflow: visible !important;\n    clip-path: none !important;\n    display: flex !important;\n    align-items: center !important;\n    justify-content: center !important;\n  }\n  .vv-hero-lottie {\n    position: relative !important;\n    z-index: 6 !important;\n    margin: 0 auto !important;\n    width: min(240px, 58%) !important;\n    order: unset !important;\n  }\n  .vv-hero-lottie dotlottie-wc {\n    width: 240px !important; height: 240px !important;\n    max-width: 58vw !important; max-height: 58vw !important;\n  }\n  \/* Stable Streaming \u2014 projected holographic look (match desktop) *\/\n  .vv-float-badge.vv-float-uptime,\n  .vv-float-uptime {\n    display: flex !important;\n    visibility: visible !important;\n    opacity: 1 !important;\n    position: absolute !important;\n    top: calc(50% - min(120px, 29vw) - 2.6rem) !important;\n    right: 0 !important;\n    bottom: auto !important;\n    left: 0 !important;\n    width: 100% !important;\n    height: auto !important;\n    transform: none !important;\n    -webkit-transform: none !important;\n    justify-content: center !important;\n    align-items: center !important;\n    z-index: 14 !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    pointer-events: none !important;\n    animation: none !important;\n  }\n  .vv-float-uptime-inner {\n    display: flex !important;\n    visibility: visible !important;\n    opacity: 1 !important;\n    align-items: center !important;\n    justify-content: center !important;\n    gap: 0.45rem !important;\n    margin: 0 auto !important;\n    font-size: 0.62rem !important;\n    letter-spacing: 0.08em !important;\n    color: #e8fbff !important;\n    text-shadow:\n      0 0 8px rgba(0, 229, 255, 0.55),\n      0 0 18px rgba(0, 229, 255, 0.28),\n      0 1px 0 rgba(0, 0, 0, 0.65) !important;\n    \/* Soft projected hologram \u2014 small float only (avoids WA flicker) *\/\n    animation: vvFloatUptimeMobile 4.8s ease-in-out infinite !important;\n    transform: perspective(420px) rotateX(12deg) !important;\n    -webkit-transform: perspective(420px) rotateX(12deg) !important;\n    will-change: transform, opacity !important;\n    filter: brightness(1.05) !important;\n    background: transparent !important;\n    border: none !important;\n    box-shadow: none !important;\n  }\n  .vv-live-gif {\n    display: flex !important;\n    visibility: visible !important;\n    opacity: 1 !important;\n    width: 36px !important;\n    height: 36px !important;\n    filter: drop-shadow(0 0 10px rgba(0, 229, 255, 0.7)) drop-shadow(0 0 18px rgba(47, 107, 255, 0.35)) !important;\n  }\n  .vv-live-gif dotlottie-wc {\n    display: block !important;\n    width: 36px !important;\n    height: 36px !important;\n  }\n  @keyframes vvFloatUptimeMobile {\n    0%, 100% {\n      transform: perspective(420px) rotateX(12deg) translateY(0);\n      opacity: 1;\n      filter: brightness(1.05);\n    }\n    40% {\n      transform: perspective(420px) rotateX(14deg) translateY(-7px);\n      opacity: 0.96;\n      filter: brightness(1.18);\n    }\n    70% {\n      transform: perspective(420px) rotateX(11deg) translateY(-3px);\n      opacity: 1;\n      filter: brightness(1.08);\n    }\n  }\n  .vv-scroll-cue--dock { display: none !important; }\n  .vv-soft-shade,\n  .vv-soft-shade.vv-soft-shade--player,\n  .vv-soft-shade--player { display: none !important; visibility: hidden !important; opacity: 0 !important; }\n  \/* Keep floating category tiles + LIVE labels (match desktop) *\/\n  .vv-app-float-grid {\n    position: absolute !important;\n    inset: 0 !important;\n    width: 100% !important;\n    height: 100% !important;\n    display: block !important;\n    margin: 0 !important;\n    padding: 0 !important;\n    order: unset !important;\n    z-index: 10 !important;\n    transform: none !important;\n    pointer-events: none !important;\n  }\n  .vv-app-float-grid .vv-app-cell,\n  .vv-app-float-grid .vv-app-cell.vv-cell-front,\n  .vv-app-float-grid .vv-app-cell.vv-cell-behind,\n  .vv-app-float-grid .vv-cell-icon,\n  .vv-app-float-grid .vv-live,\n  .vv-app-float-grid .vv-live::before {\n    \/* Hard freeze tiles only \u2014 Stable Streaming keeps projected hologram *\/\n    animation: none !important;\n    transform: none !important;\n    transition: none !important;\n    will-change: auto !important;\n    filter: none !important;\n    backdrop-filter: none !important;\n    -webkit-backdrop-filter: none !important;\n  }\n  .vv-app-float-grid .vv-app-cell {\n    width: 88px !important;\n    padding: 0.68rem 0.4rem !important;\n    gap: 0.32rem !important;\n    pointer-events: none !important;\n    background: rgba(10, 12, 22, 0.92) !important;\n  }\n  .vv-app-float-grid .vv-app-cell:nth-child(1),\n  .vv-app-float-grid .vv-app-cell:nth-child(2),\n  .vv-app-float-grid .vv-app-cell:nth-child(3),\n  .vv-app-float-grid .vv-app-cell:nth-child(4),\n  .vv-app-float-grid .vv-app-cell:nth-child(5),\n  .vv-app-float-grid .vv-app-cell:nth-child(6) {\n    animation: none !important;\n    transform: none !important;\n    filter: none !important;\n  }\n  .vv-app-float-grid .vv-app-cell.vv-cell-front {\n    z-index: 12 !important;\n    opacity: 1 !important;\n  }\n  .vv-app-float-grid .vv-app-cell.vv-cell-behind {\n    z-index: 4 !important;\n    opacity: 0.82 !important;\n    filter: none !important;\n  }\n  .vv-hero-lottie {\n    filter: none !important;\n    will-change: auto !important;\n    transition: none !important;\n    transform: none !important;\n    contain: none !important;\n  }\n  .vv-hero-mockup,\n  .vv-hero-stage {\n    contain: none !important;\n    isolation: isolate !important;\n    transform: none !important;\n    filter: none !important;\n    will-change: auto !important;\n  }\n  .vv-hero-mockup::before,\n  .vv-soft-shade,\n  .vv-soft-shade--player {\n    display: none !important;\n    content: none !important;\n    animation: none !important;\n    backdrop-filter: none !important;\n    -webkit-backdrop-filter: none !important;\n    filter: none !important;\n  }\n  \/* Keep scroll-GIF overlays (::before\/::after) \u2014 do not kill them here *\/\n  .vv-eyebrow::before { animation: none !important; }\n  .vv-network-canvas {\n    will-change: auto !important;\n    image-rendering: auto !important;\n  }\n  .vv-app-window-stats,\n  .vv-app-window.vv-app-window-stats {\n    backdrop-filter: none !important;\n    -webkit-backdrop-filter: none !important;\n    will-change: auto !important;\n    background: rgba(8, 10, 18, 0.94) !important;\n  }\n  \/* Keep Stable Streaming visible + projected above cubes *\/\n  .vv-float-uptime,\n  .vv-float-uptime-inner,\n  .vv-live-gif,\n  .vv-live-gif dotlottie-wc {\n    display: flex !important;\n    visibility: visible !important;\n    opacity: 1 !important;\n  }\n  .vv-float-uptime-inner {\n    animation: vvFloatUptimeMobile 4.8s ease-in-out infinite !important;\n    transform: perspective(420px) rotateX(12deg) !important;\n    -webkit-transform: perspective(420px) rotateX(12deg) !important;\n    text-shadow:\n      0 0 8px rgba(0, 229, 255, 0.55),\n      0 0 18px rgba(0, 229, 255, 0.28),\n      0 1px 0 rgba(0, 0, 0, 0.65) !important;\n    filter: brightness(1.05) !important;\n    will-change: transform, opacity !important;\n  }\n  .vv-live-gif {\n    filter: drop-shadow(0 0 10px rgba(0, 229, 255, 0.7)) drop-shadow(0 0 18px rgba(47, 107, 255, 0.35)) !important;\n  }\n  .vv-live-gif dotlottie-wc {\n    display: block !important;\n  }\n  .vv-app-float-grid .vv-app-cell:nth-child(1) {\n    \/* Sports \u2014 top-left edge *\/\n    top: calc(50% - 38%) !important; left: 2px !important;\n    right: auto !important; bottom: auto !important;\n  }\n  .vv-app-float-grid .vv-app-cell:nth-child(2) {\n    \/* Movies \u2014 top-right edge *\/\n    top: calc(50% - 40%) !important; right: 2px !important;\n    left: auto !important; bottom: auto !important;\n  }\n  .vv-app-float-grid .vv-app-cell:nth-child(3) {\n    \/* News \u2014 mid-left edge *\/\n    top: calc(50% - 8%) !important; left: 2px !important;\n    right: auto !important; bottom: auto !important;\n  }\n  .vv-app-float-grid .vv-app-cell:nth-child(4) {\n    \/* Music \u2014 mid-right edge *\/\n    top: calc(50% - 2%) !important; right: 2px !important;\n    left: auto !important; bottom: auto !important;\n  }\n  .vv-app-float-grid .vv-app-cell:nth-child(5) {\n    \/* Football \u2014 bottom-left edge *\/\n    top: calc(50% + 22%) !important; left: 2px !important;\n    right: auto !important; bottom: auto !important;\n  }\n  .vv-app-float-grid .vv-app-cell:nth-child(6) {\n    \/* World \u2014 bottom-right edge *\/\n    top: calc(50% + 24%) !important; right: 2px !important;\n    left: auto !important; bottom: auto !important;\n  }\n  .vv-app-float-grid .vv-live {\n    display: block !important;\n    position: absolute !important;\n    top: 5px !important;\n    right: 5px !important;\n    font-size: 0.38rem !important;\n    animation: none !important;\n  }\n  .vv-app-float-grid .vv-live::before {\n    animation: none !important;\n    opacity: 1 !important;\n  }\n  .vv-cell-movies .vv-cell-icon,\n  .vv-cell-football .vv-cell-icon {\n    animation: none !important;\n    transform: none !important;\n  }\n  .vv-cell-icon { font-size: 1.35rem !important; }\n  .vv-cell-name { font-size: 0.62rem !important; letter-spacing: 0.02em !important; }\n  .vv-app-window {\n    width: 100% !important; max-width: 100% !important;\n    margin: 0.65rem auto 0 !important; order: 3 !important;\n    z-index: 8 !important; opacity: 1 !important;\n    background: rgba(0, 0, 0, 0.94) !important;\n    isolation: isolate !important;\n    overflow: visible !important;\n  }\n  .vv-app-window-stats {\n    margin-top: 0.5rem !important; z-index: 8 !important;\n    isolation: isolate !important;\n    background: rgba(8, 10, 18, 0.94) !important;\n    backdrop-filter: none !important;\n    -webkit-backdrop-filter: none !important;\n    will-change: auto !important;\n    -webkit-mask-image: none !important;\n    mask-image: none !important;\n  }\n  \/* Soft shade element handles player darkening *\/\n  .vv-app-window-stats::before,\n  .vv-app-window-stats::after,\n  .vv-app-stats::before {\n    content: none !important;\n    display: none !important;\n  }\n  .vv-app-window-stats > *:not(.vv-soft-shade) { position: relative !important; z-index: 5 !important; }\n  .vv-app-bar {\n    background: rgba(0, 0, 0, 0.45) !important;\n    border-radius: 18px 18px 0 0 !important;\n    position: relative !important;\n    z-index: 6 !important;\n  }\n  .vv-app-stats {\n    display: grid !important;\n    grid-template-columns: 1fr 1fr !important;\n    gap: 0.5rem 0.35rem !important;\n    padding: 0.85rem 0.7rem !important;\n    min-height: 0 !important;\n    background: rgba(0, 0, 0, 0.45) !important;\n    border-radius: 0 0 18px 18px !important;\n    position: relative !important;\n    z-index: 5 !important;\n  }\n  .vv-app-stat { min-width: 0 !important; width: 100% !important; position: relative !important; z-index: 5 !important; }\n  .vv-app-stat strong {\n    font-size: clamp(1.1rem, 4.8vw, 1.4rem) !important;\n    white-space: normal !important;\n    color: #fff !important;\n    -webkit-text-fill-color: #fff !important;\n    position: relative !important;\n    z-index: 5 !important;\n  }\n  .vv-app-stat span {\n    font-size: 0.55rem !important; white-space: normal !important;\n    color: rgba(220,220,230,0.95) !important;\n  }\n  .vv-app-title { color: rgba(210,210,220,0.95) !important; }\n  .vv-app-stat-sep { display: none !important; }\n  .vv-stat-highlight { padding: 0.5rem 0.4rem !important; min-width: 0 !important; }\n  .vv-space-depth { opacity: 0.45; }\n}\n@media (max-width: 480px) {\n  .vv-hero-h1 { font-size: clamp(1.9rem, 8.5vw, 2.45rem) !important; }\n  .vv-hero-stage { min-height: min(380px, 112vw) !important; }\n  .vv-hero-lottie { width: min(210px, 54%) !important; }\n  .vv-hero-lottie dotlottie-wc {\n    width: 210px !important; height: 210px !important;\n    max-width: 54vw !important; max-height: 54vw !important;\n  }\n  .vv-app-float-grid .vv-app-cell { width: 86px !important; padding: 0.6rem 0.35rem !important; }\n  .vv-cell-icon { font-size: 1.15rem !important; }\n  .vv-cell-name { font-size: 0.55rem !important; }\n}\n@media (pointer: coarse) {\n  .vv-hero-lottie { transform: none !important; }\n}\n@media (prefers-reduced-motion: reduce) {\n  .vv-hero-lottie, .vv-app-float-grid { transform: none !important; }\n  .vv-app-float-grid .vv-app-cell { animation: none !important; }\n}<\/p>\n<p>#vv-steps {\n  position: relative;\n  overflow: visible;\n}\n.vv-hero-blend {\n  position: absolute;\n  left: 0; right: 0;\n  top: -140px;\n  height: 180px;\n  z-index: 2;\n  pointer-events: none;\n  background: linear-gradient(\n    to bottom,\n    rgba(0, 0, 0, 0) 0%,\n    rgba(5, 7, 13, 0.45) 35%,\n    rgba(0, 0, 0, 0.92) 70%,\n    #000 100%\n  );\n}\n.vv-steps-grid {\n  display: grid;\n  grid-template-columns: repeat(4, 1fr);\n  gap: 1rem;\n}\n.vv-step-card {\n  background: rgba(14,16,28,0.45);\n  border: 1px solid rgba(255,255,255,0.08);\n  border-radius: 14px;\n  padding: 1.6rem 1.35rem;\n  backdrop-filter: blur(12px);\n  transition: border-color 0.25s, transform 0.25s, box-shadow 0.25s;\n}\n.vv-step-card:hover {\n  border-color: rgba(0,229,255,0.35);\n  transform: translateY(-3px);\n  box-shadow: 0 12px 32px rgba(0,229,255,0.1);\n}\n.vv-step-num {\n  font-family: 'Bebas Neue', sans-serif;\n  font-size: 2rem;\n  letter-spacing: 0.06em;\n  background: linear-gradient(90deg, #00E5FF, #a78bfa);\n  -webkit-background-clip: text; background-clip: text; color: transparent;\n  margin-bottom: 0.7rem;\n}\n.vv-step-title {\n  font-size: 1.05rem; font-weight: 700; color: #fff; margin-bottom: 0.55rem;\n}\n.vv-step-desc {\n  font-size: 0.9rem; color: #c4c4cc; line-height: 1.6; margin: 0;\n}\n@media (max-width: 1000px) {\n  .vv-steps-grid { grid-template-columns: repeat(2, 1fr); }\n}\n@media (max-width: 900px) {\n  #vv-steps .vv-section-center { margin-bottom: 1.15rem !important; }\n  .vv-steps-grid { gap: 0.55rem !important; }\n  .vv-step-card {\n    padding: 0.7rem 0.6rem !important;\n    border-radius: 10px !important;\n  }\n  .vv-step-num {\n    font-size: 1.2rem !important;\n    margin-bottom: 0.28rem !important;\n    letter-spacing: 0.04em !important;\n  }\n  .vv-step-title {\n    font-size: 0.8rem !important;\n    margin-bottom: 0.28rem !important;\n    line-height: 1.25 !important;\n  }\n  .vv-step-desc {\n    font-size: 0.68rem !important;\n    line-height: 1.4 !important;\n  }\n}\n@media (max-width: 560px) {\n  .vv-steps-grid { grid-template-columns: repeat(2, 1fr); gap: 0.45rem !important; }\n  .vv-step-card { padding: 0.6rem 0.5rem !important; }\n  .vv-step-num { font-size: 1.1rem !important; }\n  .vv-step-title { font-size: 0.76rem !important; }\n  .vv-step-desc { font-size: 0.64rem !important; line-height: 1.35 !important; }\n}<\/p>\n<p>\/* Controls row *\/\n.vv-pricing-controls {\n  display: flex; flex-direction: column; align-items: center; justify-content: center;\n  gap: 0; margin: 2.5rem 0 3rem;\n}\n.vv-screens-wrap { display: flex; align-items: center; gap: 0.8rem; }\n.vv-screens-label {\n  font-family: 'JetBrains Mono', monospace; font-size: 0.7rem;\n  color: var(--vv-muted2); letter-spacing: 0.12em; text-transform: uppercase;\n}\n.vv-screens-btns {\n  display: flex;\n  align-items: center;\n  gap: 0;\n  padding: 4px 6px;\n  border-radius: 12px;\n  background: rgba(255,255,255,0.03);\n  border: 1px solid rgba(255,255,255,0.08);\n}\n.vv-screen-btn {\n  position: relative;\n  z-index: 1;\n  width: 38px; height: 38px; border-radius: 8px;\n  background: transparent; border: 1px solid transparent;\n  color: var(--vv-muted2); font-family: 'Manrope', sans-serif;\n  font-weight: 700; font-size: 0.9rem; cursor: pointer;\n  transition: background 0.25s ease, color 0.25s ease, border-color 0.25s ease,\n              box-shadow 0.25s ease, transform 0.25s cubic-bezier(0.22, 1, 0.36, 1);\n  margin: 0 2px;\n  overflow: visible;\n}\n\/* Separators between device options *\/\n.vv-screen-btn:not(:last-child)::after {\n  content: '';\n  position: absolute;\n  top: 20%;\n  bottom: 20%;\n  right: -3px;\n  width: 1px;\n  background: linear-gradient(180deg, transparent, rgba(0,229,255,0.55), rgba(124,92,255,0.55), transparent);\n  pointer-events: none;\n}\n.vv-screen-btn.active {\n  background: var(--vv-red); color: #fff;\n  border-color: var(--vv-red);\n  box-shadow:\n    0 0 0 1px rgba(0,229,255,0.35),\n    0 0 18px rgba(0,229,255,0.45),\n    0 2px 10px var(--vv-red-glow);\n  transform: scale(1.06);\n  z-index: 2;\n}\n.vv-screen-btn:hover {\n  color: #fff;\n  border-color: rgba(0,229,255,0.75);\n  background: rgba(0,229,255,0.18);\n  transform: scale(1.12);\n  z-index: 3;\n  box-shadow:\n    0 0 0 1px rgba(0,229,255,0.4),\n    0 0 22px rgba(0,229,255,0.55),\n    0 0 40px rgba(124,92,255,0.25);\n}\n.vv-screen-btn:hover:not(.active)::before {\n  content: '';\n  position: absolute;\n  inset: -10px;\n  border-radius: 50%;\n  background: radial-gradient(circle, rgba(0,229,255,0.22) 0%, transparent 70%);\n  pointer-events: none;\n  z-index: -1;\n}\n.vv-screen-btn.active:hover {\n  background: var(--vv-red);\n  border-color: #5ef0ff;\n  box-shadow:\n    0 0 0 1px rgba(0,229,255,0.55),\n    0 0 28px rgba(0,229,255,0.65),\n    0 0 48px rgba(124,92,255,0.3);\n}<\/p>\n<p>\/* Coverage row \u2014 separated line under Devices *\/\n.vv-pricing-highlights {\n  display: inline-flex;\n  flex-wrap: wrap;\n  align-items: flex-start;\n  justify-content: center;\n  gap: 0;\n  margin-top: 1.15rem;\n  padding-top: 1.15rem;\n  border-top: 1px solid rgba(255,255,255,0.1);\n  max-width: 100%;\n}\n.vv-pricing-hi {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: 0.28rem;\n  padding: 0.15rem 1.15rem;\n  position: relative;\n  font-size: 0.62rem;\n  color: var(--vv-muted2);\n  letter-spacing: 0.03em;\n  white-space: nowrap;\n}\n.vv-pricing-hi:not(:first-child)::before {\n  content: '';\n  position: absolute;\n  left: 0;\n  top: 0.15rem;\n  bottom: 0.1rem;\n  width: 1px;\n  background: linear-gradient(180deg, transparent, rgba(0,229,255,0.55), rgba(124,92,255,0.55), transparent);\n}\n.vv-pricing-hi-num {\n  font-family: 'Bebas Neue', sans-serif;\n  font-size: clamp(1.15rem, 1.8vw, 1.55rem);\n  line-height: 0.95;\n  background: linear-gradient(135deg, #00E5FF, #a78bfa);\n  -webkit-background-clip: text;\n  -webkit-text-fill-color: transparent;\n  background-clip: text;\n}<\/p>\n<p>.vv-plans-row {\n  display: grid !important; grid-template-columns: repeat(4, 1fr);\n  gap: 0; border: none;\n  border-radius: 0; overflow: visible;\n  text-align: left;\n  background: transparent;\n}\n.vv-plans-row-4 { display: grid !important; grid-template-columns: repeat(4, 1fr) !important; }<\/p>\n<p>.vv-plan-card {\n  background: var(--vv-card); padding: 2.2rem 1.6rem;\n  display: flex; flex-direction: column; position: relative;\n  border-radius: 16px;\n  transition: transform 0.4s cubic-bezier(0.22, 1, 0.36, 1),\n              box-shadow 0.4s ease,\n              background 0.35s ease;\n  will-change: transform;\n  z-index: 1;\n}\n.vv-plan-card:not(:last-child)::after {\n  content: '';\n  position: absolute;\n  top: 10%;\n  bottom: 10%;\n  right: 0;\n  width: 1px;\n  background: linear-gradient(\n    180deg,\n    transparent 0%,\n    rgba(0, 229, 255, 0.15) 12%,\n    #00E5FF 48%,\n    #7c5cff 72%,\n    transparent 100%\n  );\n  box-shadow: 0 0 10px rgba(0, 229, 255, 0.35);\n  pointer-events: none;\n  z-index: 2;\n}\n.vv-plan-card:hover {\n  background: var(--vv-card2);\n  transform: translateY(-12px);\n  z-index: 4;\n  box-shadow:\n    0 22px 48px rgba(0, 0, 0, 0.45),\n    0 0 28px rgba(0, 229, 255, 0.14);\n}\n.vv-plan-vip {\n  background: linear-gradient(160deg, rgba(0,40,55,0.55) 0%, rgba(10,8,28,0.65) 100%);\n  backdrop-filter: blur(12px);\n}\n.vv-plan-vip:hover {\n  background: linear-gradient(160deg, rgba(0,50,70,0.7) 0%, rgba(16,12,40,0.78) 100%);\n}<\/p>\n<p>.vv-plan-popular {\n  position: absolute; top: 0; left: 50%; transform: translateX(-50%);\n  background: linear-gradient(90deg, var(--vv-red), var(--vv-orange));\n  color: #fff; font-family: 'JetBrains Mono', monospace;\n  font-size: 0.52rem; letter-spacing: 0.2em; font-weight: 600;\n  padding: 0.3rem 1.2rem; border-radius: 0 0 8px 8px;\n  white-space: nowrap;\n}\n.vv-plan-tag {\n  display: inline-block; background: rgba(255,255,255,0.06);\n  color: var(--vv-muted2); font-family: 'JetBrains Mono', monospace;\n  font-size: 0.52rem; letter-spacing: 0.08em; font-weight: 600;\n  padding: 0.35rem 0.75rem; border-radius: 50px;\n  margin-bottom: 1.2rem; margin-top: 0.8rem; align-self: flex-start;\n  max-width: 100%; line-height: 1.35; white-space: normal; text-align: left;\n}\n.vv-plan-tag-vip {\n  background: linear-gradient(135deg, rgba(0,229,255,0.14), rgba(124,92,255,0.22));\n  color: #b8f4ff;\n  border: 1px solid rgba(0,229,255,0.28);\n}\n.vv-plan-name {\n  font-family: 'Bebas Neue', sans-serif; font-size: 2rem;\n  letter-spacing: 0.05em; color: var(--vv-text); line-height: 1; margin-bottom: 0.4rem;\n}\n.vv-name-gold {\n  background: linear-gradient(90deg, #00E5FF 0%, #2F6BFF 55%, #7c5cff 100%);\n  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;\n}\n.vv-plan-desc { font-size: 0.82rem; color: var(--vv-muted2); margin-bottom: 1.5rem; line-height: 1.5; }\n.vv-plan-price-wrap { margin-bottom: 0.5rem; }\n.vv-plan-price { display: flex; align-items: flex-end; gap: 4px; line-height: 1; flex-wrap: wrap; }\n.vv-price-currency {\n  font-family: 'Manrope', sans-serif; font-size: 1.2rem;\n  color: var(--vv-muted2); font-weight: 600; margin-bottom: 0.3rem;\n}\n.vv-price-num {\n  font-family: 'Bebas Neue', sans-serif; font-size: 3.4rem;\n  color: var(--vv-text); line-height: 0.9; transition: all 0.3s ease;\n}\n.vv-price-red .vv-price-num { color: var(--vv-red2); }\n.vv-price-gold .vv-price-num {\n  background: linear-gradient(90deg, #00E5FF 0%, #2F6BFF 55%, #7c5cff 100%);\n  -webkit-background-clip: text; -webkit-text-fill-color: transparent; background-clip: text;\n}\n.vv-badge-discount {\n  display:inline-block; margin-left:0.5rem; font-size:0.65rem;\n  background:var(--vv-red); color:#fff; padding:0.2rem 0.45rem; border-radius:4px;\n  font-family:'JetBrains Mono',monospace; vertical-align:middle;\n}\n.vv-price-was {\n  font-family: 'JetBrains Mono', monospace; font-size: 0.65rem;\n  color: var(--vv-muted); margin-top: 4px;\n}\n.vv-price-screens-note {\n  font-family: 'JetBrains Mono', monospace; font-size: 0.6rem;\n  color: var(--vv-muted); letter-spacing: 0.1em; margin-top: 4px; min-height: 1rem;\n}\n.vv-plan-divider { height: 1px; background: var(--vv-border); margin: 1.5rem 0; }\n.vv-plan-feats {\n  list-style: none; display: flex; flex-direction: column;\n  gap: 0.75rem; flex: 1; margin-bottom: 1.4rem; padding: 0;\n}\n.vv-plan-feats li {\n  display: flex; align-items: center; gap: 0.7rem;\n  font-size: 0.84rem; color: var(--vv-text); line-height: 1.4;\n}\n.vv-feat-check {\n  width: 20px; height: 20px; border-radius: 50%;\n  background: rgba(0,184,230,0.15); color: var(--vv-red);\n  display: inline-flex; align-items: center; justify-content: center;\n  font-size: 0.65rem; font-weight: 700; flex-shrink: 0;\n}\n.vv-check-gold {\n  background: linear-gradient(135deg, #00E5FF 0%, #2F6BFF 55%, #7c5cff 100%);\n  color: #0a0a12;\n  box-shadow: 0 0 12px rgba(0,229,255,0.35);\n}\n.vv-plan-btn {\n  display: block; text-align: center; text-decoration: none;\n  padding: 0.9rem; border-radius: 8px; font-family: 'Manrope', sans-serif;\n  font-size: 0.8rem; font-weight: 700; letter-spacing: 0.08em;\n  text-transform: uppercase; transition: transform 0.2s, opacity 0.2s, box-shadow 0.2s;\n  margin-top: auto;\n}\n.vv-plan-btn:hover { transform: translateY(-2px); opacity: 1; }\n.vv-plan-btn-outline {\n  border: 1px solid var(--vv-border); color: var(--vv-text); background: transparent;\n}\n.vv-plan-btn-outline:hover {\n  background: #fff !important;\n  border-color: #fff !important;\n  color: #0a0a12 !important;\n}\n\/* 1 Month \u2014 Order Now gets a clear white border *\/\na#vvOrder1m.vv-plan-btn-outline,\n#vvOrder1m {\n  border: 1.5px solid #ffffff !important;\n  color: #ffffff !important;\n  -webkit-text-fill-color: #ffffff !important;\n  box-shadow: 0 0 0 1px rgba(255, 255, 255, 0.15) !important;\n}\na#vvOrder1m.vv-plan-btn-outline:hover,\n#vvOrder1m:hover {\n  background: #fff !important;\n  border-color: #fff !important;\n  color: #0a0a12 !important;\n  -webkit-text-fill-color: #0a0a12 !important;\n}\n.vv-plan-btn-red {\n  background: linear-gradient(135deg, #00E5FF 0%, #2F6BFF 55%, #7c5cff 100%);\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n  box-shadow: 0 4px 20px var(--vv-red-glow);\n}\n.vv-plan-btn-red:hover {\n  background: #fff !important;\n  color: #0a0a12 !important;\n  -webkit-text-fill-color: #0a0a12 !important;\n  box-shadow: 0 8px 28px rgba(255,255,255,0.2);\n}\n.vv-plan-btn-gold {\n  background: linear-gradient(135deg, #00E5FF 0%, #2F6BFF 55%, #7c5cff 100%);\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n  font-weight: 800;\n  box-shadow: 0 4px 20px var(--vv-red-glow);\n}\n.vv-plan-btn-gold:hover {\n  background: linear-gradient(135deg, #7c5cff 0%, #2F6BFF 45%, #00E5FF 100%) !important;\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n}\n.vv-trust-pay {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  justify-content: center;\n  gap: 1.1rem;\n  width: min(920px, 100%);\n  margin: 1.5rem auto 0;\n  padding: 0.25rem 0.5rem;\n  text-align: center;\n  box-sizing: border-box;\n}\n.vv-ssl-badge {\n  display: inline-flex !important;\n  align-items: center;\n  gap: 0.85rem;\n  padding: 0.75rem 1.2rem;\n  border-radius: 14px;\n  background: linear-gradient(135deg, rgba(38,38,87,0.85), rgba(0,0,0,0.9));\n  border: 1px solid rgba(161,0,255,0.35);\n  max-width: min(420px, 94vw);\n  text-align: left;\n}\n.vv-ssl-shield {\n  width: 44px;\n  height: auto;\n  flex-shrink: 0;\n  display: block;\n}\n.vv-ssl-copy strong {\n  display: block;\n  color: #fff;\n  font-size: 1.02rem;\n  font-weight: 800;\n  line-height: 1.2;\n  font-family: 'Manrope', sans-serif;\n}\n.vv-ssl-copy span {\n  display: block;\n  color: #b4b4d6;\n  font-size: 0.86rem;\n  margin-top: 0.15rem;\n  font-family: 'Manrope', sans-serif;\n}\n.vv-pay-badge {\n  display: flex;\n  flex-wrap: wrap;\n  align-items: center;\n  justify-content: center;\n  gap: 0.45rem 0.65rem;\n  width: 100%;\n  max-width: 720px;\n}\n.vv-pay-methods {\n  width: auto !important;\n  height: 44px !important;\n  max-width: min(480px, 90vw) !important;\n  object-fit: contain !important;\n  display: block !important;\n}\n.vv-pay-icon {\n  display: inline-flex !important;\n  align-items: center !important;\n  line-height: 0 !important;\n  height: 36px !important;\n  flex-shrink: 0 !important;\n}\n.vv-pay-icon svg {\n  height: 36px !important;\n  width: auto !important;\n  max-height: 36px !important;\n  display: block !important;\n}\n.vv-payment-note {\n  text-align: center;\n  font-family: 'JetBrains Mono', monospace;\n  font-size: 0.65rem;\n  color: var(--vv-muted);\n  letter-spacing: 0.08em;\n  margin: 0;\n}\n@media (max-width: 900px) {\n  .vv-ssl-badge {\n    gap: 0.4rem !important;\n    padding: 0.38rem 0.6rem !important;\n    border-radius: 9px !important;\n    max-width: min(230px, 72vw) !important;\n  }\n  .vv-ssl-shield {\n    width: 22px !important;\n    height: auto !important;\n  }\n  .vv-ssl-copy strong {\n    font-size: 0.68rem !important;\n  }\n  .vv-ssl-copy span {\n    font-size: 0.58rem !important;\n    margin-top: 0.05rem !important;\n  }\n  .vv-pay-badge {\n    flex-wrap: nowrap !important;\n    gap: 0.18rem 0.28rem !important;\n    max-width: min(100%, 96vw) !important;\n    width: 100% !important;\n    justify-content: center !important;\n    overflow: visible !important;\n  }\n  .vv-pay-methods {\n    height: 22px !important;\n    max-width: none !important;\n    width: auto !important;\n    flex: 0 1 auto !important;\n    min-width: 0 !important;\n    max-height: 22px !important;\n  }\n  .vv-pay-icon,\n  .vv-pay-icon svg {\n    height: 18px !important;\n    max-height: 18px !important;\n    width: auto !important;\n    flex-shrink: 0 !important;\n  }\n  .vv-payment-note {\n    font-size: 0.55rem !important;\n    letter-spacing: 0.05em !important;\n  }\n}\n.vv-pay-badges { display: none; }\n.vv-ssl-badge img, img.vv-ssl-badge { display: none !important; }\n@keyframes vvPriceFlip {\n  0%{transform:translateY(0);opacity:1}\n  40%{transform:translateY(-10px);opacity:0}\n  60%{transform:translateY(10px);opacity:0}\n  100%{transform:translateY(0);opacity:1}\n}\n.vv-price-animating { animation: vvPriceFlip 0.35s ease; }<\/p>\n<p>@media (max-width: 1100px) {\n  .vv-plans-row, .vv-plans-row-4 { grid-template-columns: repeat(2, 1fr) !important; gap: 0 !important; }\n  .vv-plan-card:nth-child(2n)::after { display: none; }\n  .vv-plan-card:nth-child(-n+2)::before {\n    content: '';\n    position: absolute;\n    left: 12%; right: 12%; bottom: 0; height: 1px;\n    background: linear-gradient(90deg, transparent, #00E5FF, #7c5cff, transparent);\n    box-shadow: 0 0 8px rgba(0,229,255,0.3);\n    pointer-events: none;\n  }\n}\n@media (max-width: 640px) {\n  .vv-plans-row, .vv-plans-row-4 { grid-template-columns: 1fr !important; border: none; gap: 0 !important; }\n  .vv-plan-card { border: none; border-radius: 12px; }\n  .vv-plan-card:not(:last-child)::after { display: none; }\n  .vv-plan-card:not(:last-child)::before {\n    content: '';\n    position: absolute;\n    left: 10%; right: 10%; bottom: 0; height: 1px;\n    background: linear-gradient(90deg, transparent, #00E5FF, #7c5cff, transparent);\n    box-shadow: 0 0 8px rgba(0,229,255,0.3);\n    pointer-events: none;\n  }\n  .vv-pricing-controls { flex-direction: column; gap: 1rem; }\n}<\/p>\n<p>.vv-term-layout {\n  display: grid;\n  grid-template-columns: 0.72fr 1.45fr;\n  gap: 2.25rem;\n  align-items: stretch;\n}\n.vv-term-copy {\n  display: flex;\n  flex-direction: column;\n  justify-content: center;\n  min-width: 0;\n}\n.vv-term-lottie {\n  display: flex;\n  justify-content: flex-start;\n  align-items: center;\n  margin: 0 0 0.55rem;\n  max-width: 100%;\n  filter: drop-shadow(0 0 18px rgba(0,229,255,0.2));\n}\n.vv-term-lottie dotlottie-wc {\n  display: block;\n  width: min(130px, 36vw) !important;\n  height: min(130px, 36vw) !important;\n  max-width: 100%;\n}\n.vv-term-bullets {\n  list-style: none; margin: 1.4rem 0 0; padding: 0;\n  display: flex; flex-direction: column; gap: 0.65rem;\n}\n.vv-term-bullets li {\n  font-size: 0.95rem; color: #c8c8d4; font-weight: 300;\n  padding-left: 1.2rem; position: relative;\n}\n.vv-term-bullets li::before {\n  content: '\u203a'; position: absolute; left: 0; color: #00E5FF; font-weight: 700;\n}\n.vv-term-window {\n  width: 100%;\n  height: 100% !important;\n  min-height: 560px !important;\n  max-height: none !important;\n  background: rgba(0, 0, 0, 0.48) !important;\n  border: 1px solid rgba(42, 42, 42, 0.85);\n  border-radius: 10px;\n  overflow: hidden !important;\n  box-shadow: 0 24px 60px rgba(0,0,0,0.45);\n  -webkit-backdrop-filter: blur(12px) !important;\n  backdrop-filter: blur(12px) !important;\n  display: flex !important;\n  flex-direction: column !important;\n  position: relative;\n  contain: layout style;\n  box-sizing: border-box !important;\n  align-self: stretch;\n  touch-action: pan-y;\n}\n.vv-term-bar {\n  display: flex; align-items: center; gap: 0.75rem;\n  padding: 0.7rem 1rem;\n  background: #1a1a1a !important;\n  -webkit-backdrop-filter: none !important;\n  backdrop-filter: none !important;\n  border-bottom: 1px solid #2a2a2a;\n  flex: 0 0 auto !important;\n  height: 44px;\n  box-sizing: border-box;\n}\n.vv-term-dots { display: flex; gap: 6px; }\n.vv-term-dots span {\n  width: 11px; height: 11px; border-radius: 50%;\n  background: #3f3f46;\n}\n.vv-term-dots span:nth-child(1) { background: #ff5f56; }\n.vv-term-dots span:nth-child(2) { background: #ffbd2e; }\n.vv-term-dots span:nth-child(3) { background: #27c93f; }\n.vv-term-title {\n  flex: 1;\n  font-family: 'JetBrains Mono', monospace;\n  font-size: 0.74rem;\n  color: #8a8a8a;\n  letter-spacing: 0.04em;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.vv-term-live {\n  display: inline-flex; align-items: center; gap: 6px;\n  font-family: 'JetBrains Mono', monospace;\n  font-size: 0.62rem; font-weight: 700; letter-spacing: 0.14em;\n  color: #ff6b6b;\n}\n.vv-term-live i {\n  width: 7px; height: 7px; border-radius: 50%;\n  background: #ff3b3b;\n  box-shadow: 0 0 8px rgba(255,59,59,0.75);\n  animation: vvBlink 1.2s ease-in-out infinite;\n}\n.vv-term-scroll {\n  flex: 1 1 0% !important;\n  min-height: 0 !important;\n  max-height: none !important;\n  height: auto !important;\n  overflow-y: auto !important;\n  overflow-x: hidden !important;\n  background: transparent !important;\n  overscroll-behavior: auto;\n  -webkit-overflow-scrolling: touch;\n  box-sizing: border-box !important;\n  scrollbar-width: none !important; \/* Firefox *\/\n  -ms-overflow-style: none !important; \/* IE\/Edge *\/\n  touch-action: pan-y;\n  display: block !important;\n  justify-content: flex-start !important;\n  align-items: stretch !important;\n}\n.vv-term-scroll::-webkit-scrollbar {\n  display: none !important;\n  width: 0 !important;\n  height: 0 !important;\n  background: transparent !important;\n}\n.vv-term-body,\npre.vv-term-body,\n#vvTermBody {\n  display: block !important;\n  margin: 0 !important;\n  padding: 1.1rem 1.15rem 0.55rem !important;\n  min-height: 0 !important;\n  max-height: none !important;\n  height: auto !important;\n  width: 100% !important;\n  max-width: 100% !important;\n  box-sizing: border-box !important;\n  background: transparent !important;\n  font-family: 'JetBrains Mono', 'Cascadia Code', Consolas, monospace;\n  font-size: 0.82rem;\n  line-height: 1.65;\n  color: #cccccc;\n  white-space: pre-wrap !important;\n  word-break: break-word !important;\n  overflow-wrap: anywhere !important;\n  overflow: visible !important;\n  text-align: left !important;\n  vertical-align: top !important;\n}\n.vv-term-body .t-cmd { color: #00ff41; }\n.vv-term-body .t-ok { color: #00ff41; }\n.vv-term-body .t-info { color: #3b9eff; }\n.vv-term-body .t-dim { color: #6a6a6a; }\n.vv-term-body .t-warn { color: #e5c07b; }\n.vv-term-body .t-cursor {\n  display: inline-block; width: 8px; height: 1em;\n  background: #00ff41; margin-left: 2px; vertical-align: text-bottom;\n  animation: vvTermCursor 1s step-end infinite;\n}\n.vv-term-input-row {\n  display: flex;\n  align-items: center;\n  gap: 0.55rem;\n  padding: 0.55rem 1.15rem 1rem;\n  background: transparent !important;\n  border-top: 1px solid rgba(42, 42, 42, 0.55);\n  flex: 0 0 auto !important;\n  height: 48px;\n  box-sizing: border-box;\n  margin: 0;\n  touch-action: manipulation;\n}\n.vv-term-prompt {\n  font-family: 'JetBrains Mono', 'Cascadia Code', Consolas, monospace;\n  font-size: 0.78rem;\n  color: #00ff41;\n  line-height: 1.35;\n  flex-shrink: 0;\n  white-space: nowrap;\n}\n.vv-term-prompt .vv-term-user { color: #3b9eff; }\n.vv-term-prompt .vv-term-path { color: #e5c07b; }\n.vv-term-prompt .vv-term-dollar { color: #00ff41; margin-left: 0.2rem; }\n.vv-term-input {\n  flex: 1;\n  min-width: 0;\n  background: transparent !important;\n  border: 0 !important;\n  outline: none !important;\n  box-shadow: none !important;\n  color: #cccccc !important;\n  caret-color: #00ff41;\n  font-family: 'JetBrains Mono', 'Cascadia Code', Consolas, monospace;\n  font-size: 0.82rem;\n  line-height: 1.4;\n  padding: 0 !important;\n  margin: 0;\n  -webkit-appearance: none;\n  appearance: none;\n}\n.vv-term-input::placeholder { color: #4a4a4a; }\n@keyframes vvTermCursor { 50% { opacity: 0; } }\n@media (max-width: 900px) {\n  .vv-term-layout { grid-template-columns: 1fr; gap: 1.75rem; }\n  .vv-term-lottie { justify-content: center; margin-bottom: 0.35rem; }\n  .vv-term-lottie dotlottie-wc {\n    width: min(110px, 32vw) !important;\n    height: min(110px, 32vw) !important;\n  }\n  .vv-term-window {\n    height: 420px !important; max-height: 420px !important; min-height: 420px !important;\n    touch-action: pan-y !important;\n  }\n  \/* Let page scroll win on mobile \u2014 no nested terminal scroll trap *\/\n  .vv-term-scroll {\n    overflow: hidden !important;\n    overscroll-behavior: auto !important;\n    touch-action: pan-y !important;\n    -webkit-overflow-scrolling: auto !important;\n  }\n  .vv-term-body, pre.vv-term-body, #vvTermBody { font-size: 0.74rem; touch-action: pan-y !important; }\n  .vv-term-input, .vv-term-prompt { font-size: 0.74rem; }\n}<\/p>\n<p>.vv-ch-header {\n  display: flex; align-items: flex-end; justify-content: space-between;\n  margin-bottom: 3rem; flex-wrap: wrap; gap: 1rem;\n}\n.vv-viewall {\n  font-family: 'JetBrains Mono', monospace; font-size: 0.65rem;\n  letter-spacing: 0.18em; color: var(--vv-red); text-decoration: none;\n  border-bottom: 1px solid rgba(0,184,230,0.35); padding-bottom: 2px;\n  transition: border-color 0.2s; white-space: nowrap; align-self: flex-end;\n}\n.vv-viewall:hover { border-color: var(--vv-red); }<\/p>\n<p>.vv-ch-grid {\n  display: grid;\n  grid-template-columns: repeat(5, 1fr);\n  gap: 1px; border: 1px solid var(--vv-border);\n  border-radius: 12px; overflow: hidden;\n}\n.vv-ch-card {\n  background: rgba(18,18,26,0.55); padding: 1.5rem;\n  backdrop-filter: blur(10px); -webkit-backdrop-filter: blur(10px);\n  display: flex; flex-direction: column; gap: 0.6rem;\n  transition: background 0.25s; cursor: pointer;\n  position: relative;\n}\n.vv-ch-card:hover { background: var(--vv-card2); }\n.vv-ch-top {\n  display: flex; align-items: flex-start; justify-content: space-between;\n  margin-bottom: 0.4rem;\n}\n.vv-ch-icon {\n  width: 44px; height: 44px; border-radius: 10px;\n  display: flex; align-items: center; justify-content: center; font-size: 1.4rem;\n}\n.vv-ch-name { font-weight: 700; font-size: 0.9rem; color: var(--vv-text); }\n.vv-ch-count {\n  font-family: 'JetBrains Mono', monospace; font-size: 0.62rem;\n  color: var(--vv-muted); letter-spacing: 0.06em;\n}\n.vv-ch-bar {\n  height: 2px; background: rgba(255,255,255,0.06);\n  border-radius: 1px; margin-top: auto;\n}\n.vv-ch-fill { height: 100%; border-radius: 1px; transition: width 1.2s ease; }<\/p>\n<p>@media (max-width: 1100px) {\n  .vv-ch-grid { grid-template-columns: repeat(3, 1fr); }\n}\n@media (max-width: 768px) {\n  .vv-ch-header { flex-direction: column; align-items: flex-start; }\n  .vv-ch-grid { grid-template-columns: repeat(2,1fr); }\n}\n@media (max-width: 400px) {\n  .vv-ch-grid { grid-template-columns: 1fr; }\n}<\/p>\n<p>.vv-feat-header { margin-bottom: 3.5rem; }\n.vv-feat-header .vv-h2 { margin: 0.5rem 0 0.8rem; }<\/p>\n<p>.vv-feat-grid {\n  display: grid;\n  grid-template-columns: repeat(3, 1fr);\n  gap: 1px; border: 1px solid var(--vv-border);\n  border-radius: 14px; overflow: hidden;\n}<\/p>\n<p>.vv-feat-card {\n  background: var(--vv-card); padding: 2.2rem;\n  position: relative; transition: background 0.25s; overflow: hidden;\n}\n.vv-feat-card:hover { background: var(--vv-card2); }<\/p>\n<p>\/* Large cards span 2 rows on desktop via CSS grid *\/\n.vv-feat-large { grid-row: span 1; }<\/p>\n<p>.vv-feat-glow {\n  position: absolute; top: -40%; left: -20%; width: 140%; height: 140%;\n  pointer-events: none; opacity: 0.6;\n}<\/p>\n<p>.vv-feat-num {\n  font-family: 'Bebas Neue', sans-serif; font-size: 5rem;\n  color: rgba(255,255,255,0.04); line-height: 1;\n  position: absolute; top: 1rem; right: 1.5rem;\n  pointer-events: none; user-select: none;\n}\n.vv-feat-icon-big { font-size: 2rem; margin-bottom: 1.2rem; display: block; }\n.vv-feat-title {\n  font-family: 'Manrope', sans-serif; font-size: 1rem;\n  font-weight: 700; color: var(--vv-text); margin-bottom: 0.7rem;\n}\n.vv-feat-desc { font-size: 0.86rem; color: var(--vv-muted2); line-height: 1.75; font-weight: 400; }<\/p>\n<p>.vv-feat-tag {\n  display: inline-block; margin-top: 1.2rem;\n  background: rgba(0,184,230,0.12); color: var(--vv-red);\n  font-family: 'JetBrains Mono', monospace; font-size: 0.58rem;\n  letter-spacing: 0.15em; text-transform: uppercase;\n  padding: 0.25rem 0.7rem; border-radius: 4px;\n}\n.vv-feat-link {\n  display: inline-block; margin-top: 1.2rem;\n  font-family: 'JetBrains Mono', monospace; font-size: 0.65rem;\n  color: #22c55e; letter-spacing: 0.12em; text-decoration: none;\n  border-bottom: 1px solid rgba(34,197,94,0.35); padding-bottom: 1px;\n  transition: border-color 0.2s;\n}\n.vv-feat-link:hover { border-color: #fff; color: #fff !important; }<\/p>\n<p>@media (max-width: 900px) {\n  .vv-feat-grid { grid-template-columns: repeat(2,1fr); }\n}\n@media (max-width: 560px) {\n  .vv-feat-grid { grid-template-columns: 1fr; }\n}<\/p>\n<p>.vv-speed-head {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  flex-wrap: wrap;\n  gap: 1rem 1.5rem;\n  margin-bottom: 3.15rem;\n  text-align: center;\n}\n.vv-speed-head > div {\n  width: 100%;\n  max-width: min(72rem, 100%);\n  margin-left: auto;\n  margin-right: auto;\n}\n.vv-speed-head .vv-h2,\n.vv-speed-head .vv-lead,\n.vv-speed-head .vv-eyebrow {\n  text-align: center;\n}\n.vv-speed-head .vv-lead,\n.vv-speed-head .vv-cdn-note {\n  margin-left: auto;\n  margin-right: auto;\n}\n.vv-speed-head .vv-cdn-note {\n  max-width: none !important;\n  width: 100% !important;\n}\n.vv-speed-wrap {\n  display: grid; grid-template-columns: 1.05fr 0.95fr;\n  gap: 2rem; align-items: stretch;\n  min-height: 0;\n}\n.vv-speed-tester {\n  background: transparent;\n  border: none;\n  border-radius: 0;\n  padding: 0;\n  display: flex; flex-direction: column; align-items: stretch;\n  justify-content: stretch; gap: 0;\n  height: 100%; min-height: 0;\n  align-self: stretch;\n  box-sizing: border-box;\n}\n.vv-speed-frame-wrap {\n  width: 100%;\n  flex: 1 1 auto;\n  min-height: 560px;\n  height: 100%;\n  position: relative;\n  border-radius: 16px;\n  overflow: visible;\n  border: none;\n  background: transparent;\n  box-shadow: none;\n  padding: 0;\n}\n.vv-speed-frame-wrap #vvSpeedPanel {\n  min-height: 560px;\n  height: 100%;\n  box-sizing: border-box;\n}\n.vv-speed-metrics {\n  display: flex; align-items: center; gap: 1rem; width: 100%; justify-content: center;\n}\n.vv-metric { text-align: center; }\n.vv-metric-icon {\n  font-size: 1rem; color: var(--vv-muted); margin-bottom: 4px;\n  font-family: 'JetBrains Mono', monospace;\n}\n.vv-metric-label {\n  font-size: 0.65rem; color: var(--vv-muted); letter-spacing: 0.1em;\n  text-transform: uppercase; font-family: 'JetBrains Mono', monospace;\n}\n.vv-metric-val {\n  font-family: 'Bebas Neue', sans-serif; font-size: 1.5rem; color: var(--vv-text);\n  margin-top: 2px; min-width: 60px;\n}\n.vv-metric-sep { width: 1px; height: 40px; background: var(--vv-border); }\n.vv-test-btn {\n  background: linear-gradient(135deg, #00E5FF 0%, #2F6BFF 55%, #7c5cff 100%);\n  color: #fff; border: none; cursor: pointer;\n  font-family: 'Manrope', sans-serif; font-weight: 700; font-size: 0.85rem;\n  letter-spacing: 0.1em; text-transform: uppercase;\n  padding: 0.9rem 2.4rem; border-radius: 8px; width: 100%; max-width: 320px;\n  box-shadow: 0 4px 20px var(--vv-red-glow);\n  transition: opacity 0.2s, transform 0.2s, box-shadow 0.2s;\n}\n.vv-test-btn:hover:not(:disabled) { transform: translateY(-2px); box-shadow: 0 8px 32px rgba(0,184,230,0.4); }\n.vv-test-btn:disabled { opacity: 0.6; cursor: not-allowed; }\n.vv-test-status {\n  font-family: 'JetBrains Mono', monospace; font-size: 0.62rem;\n  color: var(--vv-muted); letter-spacing: 0.1em; min-height: 1rem;\n  text-align: center; text-transform: uppercase;\n}\n.vv-speed-tiers {\n  display: flex; flex-direction: column; gap: 1rem;\n  height: 100%; min-height: 100%;\n  box-sizing: border-box;\n}\n.vv-speed-world {\n  margin: 0 0 0.55rem;\n  flex: 0 0 auto;\n  width: 100%;\n  max-height: 300px;\n  display: flex; align-items: center; justify-content: center;\n  min-height: 0;\n  border: none;\n  background: transparent !important;\n  box-shadow: none;\n  border-radius: 0;\n  overflow: visible;\n  padding: 0;\n}\n.vv-speed-world img {\n  display: block;\n  width: 100%;\n  max-width: none;\n  height: auto;\n  max-height: 290px;\n  object-fit: contain;\n  object-position: center;\n  transform: none;\n  image-rendering: -webkit-optimize-contrast;\n  background: transparent !important;\n  mix-blend-mode: normal;\n  filter: drop-shadow(0 0 18px rgba(0,229,255,0.18));\n}\n.vv-tiers-title {\n  font-family: 'JetBrains Mono', monospace; font-size: 0.65rem;\n  color: var(--vv-muted); letter-spacing: 0.2em; text-transform: uppercase;\n  margin-bottom: 0.5rem;\n}\n.vv-tiers-list { display: flex; flex-direction: column; gap: 0.8rem; }\n.vv-tier {\n  background: var(--vv-card); border: 1px solid var(--vv-border);\n  border-radius: 10px; padding: 1rem 1.2rem;\n  display: flex; align-items: center; justify-content: space-between;\n  transition: border-color 0.3s, background 0.3s, box-shadow 0.3s, transform 0.25s;\n}\n.vv-tier.vv-tier-active {\n  border-color: rgba(34,197,94,0.4); background: rgba(34,197,94,0.05);\n}\n.vv-tier.vv-tier-best {\n  border-color: rgba(0,229,255,0.55) !important;\n  background: rgba(0,229,255,0.08) !important;\n  box-shadow: 0 0 22px rgba(0,229,255,0.18);\n  transform: translateX(2px);\n}\n.vv-tier-left { display: flex; align-items: center; gap: 0.9rem; }\n.vv-tier-badge {\n  font-family: 'Bebas Neue', sans-serif; font-size: 0.85rem;\n  letter-spacing: 0.08em; padding: 0.25rem 0.6rem; border-radius: 5px;\n  min-width: 36px; text-align: center;\n}\n.vv-tier-name { font-size: 0.88rem; font-weight: 600; color: var(--vv-text); }\n.vv-tier-speed {\n  font-family: 'JetBrains Mono', monospace; font-size: 0.6rem;\n  color: var(--vv-muted); letter-spacing: 0.08em; margin-top: 2px;\n}\n.vv-tier-indicator {\n  width: 10px; height: 10px; border-radius: 50%;\n  background: var(--vv-border); transition: background 0.4s, box-shadow 0.4s;\n}\n.vv-tier.vv-tier-active .vv-tier-indicator {\n  background: #22c55e; box-shadow: 0 0 10px rgba(34,197,94,0.5);\n}\n.vv-tier.vv-tier-best .vv-tier-indicator {\n  background: #00E5FF; box-shadow: 0 0 12px rgba(0,229,255,0.65);\n}\n.vv-result-card {\n  display: none;\n  align-items: center;\n  gap: 1rem 1.25rem;\n  flex-wrap: wrap;\n  background: #fff;\n  border: 1px solid rgba(255,255,255,0.95);\n  border-radius: 14px;\n  padding: 1.15rem 1.25rem 1.15rem 1.35rem;\n  text-align: left;\n  box-shadow: 0 14px 40px rgba(0,0,0,.35);\n  margin-top: 0.85rem;\n}\n.vv-result-card.is-open { display: flex; }\n.vv-result-badge {\n  flex: 0 0 auto;\n  min-width: 3.1rem;\n  height: 3.1rem;\n  padding: 0 0.65rem;\n  border-radius: 10px;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  font-family: 'Bebas Neue', sans-serif;\n  font-size: 1.35rem;\n  letter-spacing: 0.06em;\n  color: #0a0a12;\n  background: linear-gradient(135deg, #00E5FF 0%, #7c5cff 100%);\n}\n.vv-result-body {\n  flex: 1 1 180px;\n  display: flex;\n  align-items: center;\n  justify-content: space-between;\n  gap: 0.85rem 1.1rem;\n  flex-wrap: wrap;\n  min-width: 0;\n}\n.vv-result-msg {\n  flex: 1 1 160px;\n  font-size: 0.92rem;\n  font-weight: 650;\n  color: #0a0a12;\n  line-height: 1.45;\n}\n.vv-result-order {\n  flex: 0 0 auto;\n  display: inline-flex;\n  align-items: center;\n  justify-content: center;\n  padding: 0.75rem 1.35rem;\n  border-radius: 8px;\n  background: #0a0a12 !important;\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n  font-family: 'Manrope', sans-serif;\n  font-weight: 700;\n  font-size: 0.78rem;\n  letter-spacing: 0.08em;\n  text-transform: uppercase;\n  text-decoration: none !important;\n  border: 1px solid #0a0a12;\n  box-shadow: 0 6px 18px rgba(0,0,0,.22);\n  transition: transform 0.2s, filter 0.2s;\n}\n.vv-result-order:hover {\n  filter: brightness(1.08);\n  transform: translateY(-1px);\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n}\n@media (max-width: 900px) {\n  .vv-speed-head { justify-content: center; text-align: center; margin-bottom: 2.35rem; }\n  .vv-speed-wrap { grid-template-columns: 1fr; min-height: 0; }\n  .vv-speed-tester, .vv-speed-tiers { height: auto; min-height: 0; }\n  .vv-speed-world { width: 100%; max-height: 240px; }\n  .vv-speed-world img { width: 100%; max-width: none; max-height: 230px; transform: none; object-fit: contain; }\n  .vv-speed-frame-wrap {\n    position: relative;\n    min-height: 520px;\n    height: auto;\n    flex: none;\n  }\n  .vv-speed-frame-wrap #vvSpeedPanel { min-height: 520px; }\n}<\/p>\n<p>.vv-devices-layout {\n  display: grid;\n  grid-template-columns: minmax(380px, 1.2fr) minmax(280px, 0.95fr);\n  gap: 1.5rem 1.5rem;\n  align-items: center;\n}\n.vv-devices-left,\n.vv-devices-right {\n  display: flex;\n  flex-direction: column;\n  min-height: 0;\n  width: 100%;\n}\n.vv-devices-left {\n  order: 2;\n  justify-content: center;\n  gap: 1.35rem;\n  max-width: none;\n}\n.vv-devices-right {\n  order: 1;\n  justify-content: center;\n  align-items: center;\n  gap: 0;\n  min-height: 640px;\n}\n.vv-devices-copy {\n  max-width: 560px;\n  text-align: left;\n}\n.vv-devices-h2 {\n  white-space: normal;\n  font-size: clamp(1.85rem, 2.8vw, 3.1rem) !important;\n  line-height: 1.1;\n}\n.vv-devices-copy .vv-lead { max-width: 480px; }\n.vv-devices-lottie {\n  display: flex !important;\n  justify-content: center;\n  align-items: center;\n  width: 100%;\n  height: 100%;\n  min-height: 640px;\n  margin: 0;\n  filter: drop-shadow(0 0 36px rgba(168,85,247,.32));\n}\n.vv-devices-lottie dotlottie-wc {\n  width: min(760px, 100%) !important;\n  height: min(760px, 72vw) !important;\n  max-width: 100%;\n  max-height: 780px;\n}\n.vv-devices-cta {\n  margin-top: 0.35rem;\n  align-self: flex-start;\n  background: #fff !important;\n  color: #0a0a12 !important;\n  -webkit-text-fill-color: #0a0a12 !important;\n  border: 1px solid #fff !important;\n  box-shadow: 0 8px 28px rgba(0,0,0,0.35);\n  font-weight: 700;\n  letter-spacing: 0.04em;\n}\n.vv-devices-cta:hover {\n  background: #f4f4f5 !important;\n  color: #000 !important;\n  -webkit-text-fill-color: #000 !important;\n  transform: translateY(-1px);\n}\n\/* Two vertical lines of device cards \u2014 slightly larger *\/\n.vv-devices-grid {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 10px 12px;\n  flex: 0 1 auto;\n  align-content: start;\n  width: 100%;\n  max-width: 580px;\n}\n.vv-devices-col {\n  display: flex;\n  flex-direction: column;\n  gap: 10px;\n  min-width: 0;\n}\n.vv-device-card {\n  background: var(--vv-card); border: 1px solid var(--vv-border);\n  border-radius: 11px;\n  padding: 0.78rem 0.85rem;\n  display: flex;\n  flex-direction: row;\n  align-items: center;\n  justify-content: flex-start;\n  gap: 0.7rem;\n  text-align: left;\n  transition: background 0.2s, border-color 0.2s, transform 0.2s;\n  cursor: default;\n  aspect-ratio: auto;\n  min-height: 0;\n  height: auto;\n  width: 100%;\n  box-sizing: border-box;\n}\n.vv-device-card:hover {\n  background: var(--vv-card2); border-color: rgba(255,255,255,0.28);\n  transform: translateY(-2px);\n}\n.vv-device-icon {\n  font-size: 1.35rem;\n  line-height: 1;\n  flex: 0 0 auto;\n  width: 1.65rem;\n  text-align: center;\n}\n.vv-device-meta {\n  display: flex;\n  flex-direction: column;\n  gap: 0.18rem;\n  min-width: 0;\n  flex: 1 1 auto;\n}\n.vv-device-name {\n  font-size: 0.86rem;\n  font-weight: 700;\n  color: var(--vv-text);\n  line-height: 1.15;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}\n.vv-device-apps {\n  font-size: 0.58rem;\n  color: var(--vv-muted);\n  letter-spacing: 0.02em;\n  line-height: 1.2;\n  white-space: nowrap;\n  overflow: hidden;\n  text-overflow: ellipsis;\n}<\/p>\n<p>@media (max-width: 900px) {\n  .vv-devices-layout {\n    grid-template-columns: 1fr;\n    gap: 0.55rem;\n    text-align: center;\n    align-items: start;\n  }\n  .vv-devices-right {\n    order: 1;\n    align-items: center;\n    min-height: 0 !important;\n    height: auto !important;\n  }\n  .vv-devices-left {\n    order: 2;\n    max-width: 560px;\n    margin: 0 auto;\n    width: 100%;\n    align-items: center;\n    gap: 1rem;\n  }\n  .vv-devices-copy { text-align: center; margin: 0 auto; }\n  .vv-devices-copy .vv-lead { margin-left: auto; margin-right: auto; }\n  .vv-devices-cta { margin-left: auto; margin-right: auto; align-self: center; }\n  .vv-devices-grid { max-width: 480px; margin: 0 auto; }\n  .vv-devices-lottie {\n    min-height: 0 !important;\n    height: auto !important;\n    margin: 0 !important;\n  }\n  .vv-devices-lottie dotlottie-wc {\n    width: min(320px, 78vw) !important;\n    height: min(320px, 78vw) !important;\n    max-height: 340px !important;\n  }\n}\n@media (max-width: 480px) {\n  .vv-devices-grid { gap: 8px; }\n  .vv-device-card { padding: 0.65rem 0.7rem; }\n  .vv-device-name { font-size: 0.78rem; }\n  .vv-device-apps { font-size: 0.52rem; }\n  .vv-devices-layout { gap: 0.35rem !important; }\n  .vv-devices-lottie { min-height: 0 !important; }\n  .vv-devices-lottie dotlottie-wc {\n    width: min(280px, 76vw) !important;\n    height: min(280px, 76vw) !important;\n    max-height: 300px !important;\n  }\n}<\/p>\n<p>.vv-download-layout {\n  display: grid;\n  grid-template-columns: 0.95fr 1.05fr;\n  gap: 2.75rem;\n  align-items: center;\n}\n.vv-download-visual {\n  display: flex;\n  flex-direction: column;\n  align-items: center;\n  gap: 0;\n  width: 100%;\n}\n.vv-download-visual .vv-devices-logos {\n  align-self: center;\n  max-width: 260px;\n  margin-top: 3.5rem;\n  padding-top: 0.35rem;\n  text-align: center;\n}\n.vv-download-visual .vv-devices-logos img {\n  display: block;\n  max-width: 240px;\n  width: 100%;\n  height: auto;\n  margin-left: auto;\n  margin-right: auto;\n}\n.vv-download-btns {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 0.7rem;\n  margin-top: 1.6rem;\n}\n.vv-dl-btn {\n  display: inline-flex; align-items: center; justify-content: center;\n  text-align: center;\n  padding: 0.72rem 0.9rem;\n  border-radius: 8px;\n  border: 1px solid rgba(255,255,255,0.16);\n  background: rgba(255,255,255,0.04);\n  color: #fff !important;\n  font-size: 0.78rem;\n  font-weight: 700;\n  letter-spacing: 0.03em;\n  text-decoration: none !important;\n  transition: background 0.2s, border-color 0.2s, transform 0.2s;\n}\n.vv-dl-btn:hover {\n  background: #fff !important;\n  border-color: #fff !important;\n  color: #0a0a12 !important;\n  transform: translateY(-1px);\n}\n.vv-dl-primary {\n  background: linear-gradient(135deg, #00E5FF 0%, #2F6BFF 55%, #7c5cff 100%) !important;\n  border: 0 !important;\n  color: #fff !important;\n  box-shadow: 0 8px 24px rgba(0,229,255,0.25);\n}\n.vv-dl-primary:hover {\n  background: linear-gradient(135deg, #7c5cff 0%, #2F6BFF 45%, #00E5FF 100%) !important;\n  color: #fff !important;\n  filter: none;\n}\n.vv-download-media {\n  border-radius: 16px;\n  overflow: hidden;\n  border: 1px solid rgba(255,255,255,0.1);\n  background: #05070d;\n  box-shadow: 0 24px 60px rgba(0,0,0,0.45), 0 0 40px rgba(0,229,255,0.1);\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  padding: 1.15rem 1.25rem;\n  max-width: 92%;\n  width: 100%;\n  margin-left: auto;\n  margin-right: auto;\n  box-sizing: border-box;\n}\n.vv-download-lottie {\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  width: 100%;\n  max-width: 92%;\n  margin-left: auto;\n  margin-right: 0;\n  pointer-events: none;\n  filter: drop-shadow(0 12px 36px rgba(0,229,255,0.18));\n}\n.vv-download-lottie dotlottie-wc {\n  display: block;\n  width: 280px !important;\n  height: 280px !important;\n  max-width: min(280px, 70vw);\n  max-height: min(280px, 70vw);\n}\n.vv-download-media img {\n  display: block;\n  width: 100%;\n  max-width: 100%;\n  height: auto;\n  border-radius: 10px;\n  vertical-align: middle;\n}\n@media (max-width: 900px) {\n  .vv-download-layout { grid-template-columns: 1fr; gap: 1.75rem; text-align: center; }\n  .vv-download-btns { grid-template-columns: 1fr; max-width: 420px; margin-left: auto; margin-right: auto; }\n  .vv-download-visual { align-items: center; }\n  .vv-download-visual .vv-devices-logos { margin-top: 2rem; }\n  .vv-download-media {\n    max-width: 100%;\n    margin: 0 auto;\n    padding: 0.85rem;\n  }\n  .vv-download-lottie {\n    max-width: 100%;\n    margin: 0 auto;\n  }\n  .vv-download-lottie dotlottie-wc {\n    width: 240px !important;\n    height: 240px !important;\n  }\n}<\/p>\n<p>.vv-faq-layout {\n  display: grid; grid-template-columns: 1fr 1.6fr; gap: 4rem; align-items: start;\n}\n.vv-faq-list { display: flex; flex-direction: column; }\n.vv-faq-item { border-bottom: 1px solid var(--vv-border); }\n.vv-faq-q {\n  width: 100%;\n  background: transparent;\n  background-color: transparent;\n  background-image: none;\n  border: none !important; cursor: pointer; box-shadow: none !important;\n  color: var(--vv-text) !important; font-family: 'Manrope', sans-serif;\n  font-size: 0.95rem; font-weight: 600; text-align: left;\n  padding: 1.15rem 1rem; margin: 0 -0.35rem; border-radius: 10px;\n  display: flex; justify-content: space-between; align-items: center;\n  gap: 1rem;\n  transition: color 0.22s ease, background-color 0.22s ease, box-shadow 0.22s ease, transform 0.22s ease;\n}\n.vv-faq-item:hover > .vv-faq-q,\n.vv-faq-q:hover,\n.vv-faq-q:focus,\n.vv-faq-q:focus-visible,\n.tc-v2-root .vv-faq-list .vv-faq-item .vv-faq-q:hover,\n.vv-wrap .vv-faq-list .vv-faq-item .vv-faq-q:hover {\n  color: #0a0a12 !important;\n  -webkit-text-fill-color: #0a0a12 !important;\n  background: #fff !important;\n  background-color: #fff !important;\n  background-image: none !important;\n  box-shadow: 0 8px 28px rgba(255,255,255,0.14) !important;\n  outline: none !important;\n}\n.vv-faq-item:hover > .vv-faq-q .vv-faq-icon,\n.vv-faq-q:hover .vv-faq-icon,\n.vv-faq-q:focus .vv-faq-icon {\n  color: #0a0a12 !important;\n}\n.vv-faq-q.open {\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n  background: transparent !important;\n  background-color: transparent !important;\n}\n.vv-faq-item:hover > .vv-faq-q.open,\n.vv-faq-q.open:hover,\n.vv-faq-q.open:focus {\n  color: #0a0a12 !important;\n  -webkit-text-fill-color: #0a0a12 !important;\n  background: #fff !important;\n  background-color: #fff !important;\n}\n.vv-faq-icon {\n  font-family: 'Bebas Neue', sans-serif; font-size: 1.4rem; color: var(--vv-red);\n  transition: transform 0.3s, color 0.22s; flex-shrink: 0;\n}\n.vv-faq-icon::before { content: \"+\"; }\n.vv-faq-q.open .vv-faq-icon { transform: rotate(45deg); }\n.vv-faq-item:hover > .vv-faq-q.open .vv-faq-icon,\n.vv-faq-q.open:hover .vv-faq-icon {\n  color: #0a0a12 !important;\n}\n.vv-faq-a {\n  display: none; color: var(--vv-muted2); font-size: 0.88rem;\n  line-height: 1.8; padding: 0 1rem 1.4rem; font-weight: 400;\n}\n.vv-faq-a.show { display: block; animation: vvFadeUp 0.3s ease; }<\/p>\n<p>@media (max-width: 900px) {\n  .vv-faq-layout { grid-template-columns: 1fr; gap: 2rem; }\n}<\/p>\n<p>.vv-final-cta {\n  position: relative;\n  padding-top: 2.25rem !important;\n  padding-bottom: 3.25rem !important;\n  overflow: hidden;\n}\n\/* Wide horizontal band \u2014 icon | copy (fills) | buttons (right) *\/\n.vv-final-cta-inner {\n  position: relative;\n  display: flex !important;\n  flex-direction: row !important;\n  flex-wrap: nowrap !important;\n  align-items: center !important;\n  justify-content: space-between !important;\n  gap: 1.35rem 1.75rem;\n  text-align: left;\n  width: 100%;\n  max-width: min(1320px, 100%);\n  margin: 0 auto;\n  padding: 2.35rem 2.25rem;\n  border-radius: 18px;\n  border: 1px solid rgba(255,255,255,0.18);\n  background: linear-gradient(105deg, #00E5FF 0%, #2F6BFF 48%, #7c5cff 100%) !important;\n  box-shadow: 0 20px 60px rgba(47,107,255,0.35), inset 0 1px 0 rgba(255,255,255,0.2);\n}\n.vv-trial-lottie {\n  display: flex;\n  justify-content: center;\n  align-items: center;\n  flex: 0 0 auto;\n  margin: 0;\n  filter: drop-shadow(0 0 16px rgba(0,0,0,0.25));\n}\n.vv-trial-lottie dotlottie-wc {\n  display: block;\n  width: 150px !important;\n  height: 150px !important;\n  max-width: 150px;\n}\n.vv-final-cta-copy {\n  flex: 1 1 auto;\n  min-width: 0;\n  max-width: none;\n  text-align: left;\n}\n.vv-final-cta-inner .vv-h2 {\n  margin: 0.2rem 0 0.55rem;\n  line-height: 1.05;\n  white-space: normal;\n  font-size: clamp(2.15rem, 3.4vw, 3.15rem) !important;\n  letter-spacing: 0.02em;\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n  text-shadow: 0 2px 18px rgba(0,0,0,0.2);\n}\n.vv-final-cta-inner .vv-h2 span,\n.vv-final-cta-inner .vv-h2 .vv-trial-brand {\n  color: #00E5FF !important;\n  -webkit-text-fill-color: #00E5FF !important;\n  background: none !important;\n  opacity: 1;\n}\n.vv-final-cta-inner .vv-lead {\n  margin: 0;\n  max-width: 52ch;\n  color: rgba(255,255,255,0.98);\n  font-size: 1.08rem;\n  line-height: 1.62;\n  font-weight: 500;\n  opacity: 1;\n}\n.vv-final-cta-inner .vv-eyebrow {\n  font-size: 0.88rem;\n  letter-spacing: 0.22em;\n  margin: 0;\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n}\n.vv-final-cta-btns {\n  display: flex !important;\n  flex-direction: row !important;\n  flex-wrap: nowrap !important;\n  gap: 0.75rem 0.9rem;\n  justify-content: flex-end !important;\n  align-items: center;\n  margin: 0 0 0 auto !important;\n  width: auto !important;\n  max-width: none !important;\n  flex: 0 0 auto;\n}\n.vv-final-cta-btns .vv-btn {\n  min-width: 0;\n  width: auto !important;\n  max-width: none !important;\n  flex: 0 0 auto !important;\n  white-space: nowrap;\n  justify-content: center;\n  display: inline-flex !important;\n  box-sizing: border-box;\n}\n.vv-final-cta-btns .vv-trial-primary {\n  font-size: 0.92rem !important;\n  letter-spacing: 0.06em;\n  padding: 1.05rem 1.55rem !important;\n  line-height: 1.15;\n  background: #fff !important;\n  color: #0a0a12 !important;\n  -webkit-text-fill-color: #0a0a12 !important;\n  border: none !important;\n  box-shadow: 0 8px 28px rgba(0,0,0,0.22);\n  font-weight: 700;\n  border-radius: 999px !important;\n}\n.vv-final-cta-btns .vv-trial-primary:hover {\n  background: #0a0a12 !important;\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n  box-shadow: 0 8px 28px rgba(0,0,0,0.35);\n}\n.vv-final-cta-btns .vv-btn-outline {\n  font-size: 0.88rem !important;\n  padding: 1rem 1.35rem !important;\n  background: transparent !important;\n  background-color: transparent !important;\n  background-image: none !important;\n  color: #fff !important;\n  -webkit-text-fill-color: #fff !important;\n  border: 1.5px solid #fff !important;\n  box-shadow: none !important;\n  border-radius: 999px !important;\n}\n.vv-final-cta-btns .vv-btn-outline:hover {\n  background: #fff !important;\n  background-color: #fff !important;\n  color: #0a0a12 !important;\n  -webkit-text-fill-color: #0a0a12 !important;\n  border-color: #fff !important;\n  box-shadow: 0 8px 28px rgba(255,255,255,0.22) !important;\n}\n@media (max-width: 1100px) {\n  .vv-final-cta-inner {\n    flex-wrap: wrap !important;\n    padding: 1.5rem 1.35rem;\n    gap: 1.15rem 1.25rem;\n  }\n  .vv-final-cta-copy { flex: 1 1 280px; }\n  .vv-final-cta-inner .vv-h2 { white-space: normal; }\n  .vv-final-cta-btns {\n    flex: 1 1 100%;\n    justify-content: flex-start !important;\n    width: 100% !important;\n  }\n}\n@media (max-width: 600px) {\n  .vv-final-cta-inner {\n    flex-direction: column !important;\n    align-items: stretch !important;\n    padding: 1.75rem 1.2rem;\n    border-radius: 14px;\n  }\n  .vv-trial-lottie { align-self: center; margin-left: auto; margin-right: auto; }\n  .vv-trial-lottie dotlottie-wc { width: 110px !important; height: 110px !important; max-width: 110px; }\n  .vv-final-cta-copy { text-align: left; }\n  .vv-final-cta-inner .vv-lead { margin: 0; max-width: 100%; }\n  .vv-final-cta-inner .vv-h2 { font-size: clamp(1.7rem, 7.5vw, 2.25rem) !important; }\n  .vv-final-cta-btns {\n    flex-direction: row !important;\n    flex-wrap: nowrap !important;\n    justify-content: flex-start !important;\n    gap: 0.55rem;\n    width: 100% !important;\n  }\n  .vv-final-cta-btns .vv-btn {\n    flex: 1 1 0 !important;\n    white-space: nowrap;\n    text-align: center;\n    line-height: 1.25;\n  }\n  .vv-final-cta-btns .vv-trial-primary {\n    font-size: 0.74rem !important;\n    padding: 0.9rem 0.7rem !important;\n    letter-spacing: 0.04em;\n  }\n  .vv-final-cta-btns .vv-btn-outline {\n    font-size: 0.74rem !important;\n    padding: 0.9rem 0.7rem !important;\n  }\n}<\/p>\n<p>\/* Footer \u2014 frosted \/ blurry glass band *\/\n.vv-footer {\n  position: relative;\n  z-index: 4;\n  background: rgba(6, 10, 18, 0.42);\n  backdrop-filter: blur(22px) saturate(1.35);\n  -webkit-backdrop-filter: blur(22px) saturate(1.35);\n  border-top: 1px solid rgba(255,255,255,0.12);\n  box-shadow:\n    inset 0 1px 0 rgba(255,255,255,0.06),\n    0 -24px 48px rgba(0,0,0,0.35);\n  padding: 0 3rem 2.75rem;\n  isolation: isolate;\n  overflow: hidden;\n}\n.vv-footer-map {\n  position: absolute;\n  inset: 0;\n  z-index: 0;\n  pointer-events: none;\n  display: flex;\n  align-items: center;\n  justify-content: center;\n  overflow: hidden;\n}\n.vv-footer-map img {\n  display: block;\n  width: auto;\n  height: auto;\n  max-width: 100%;\n  max-height: 100%;\n  object-fit: contain;\n  object-position: center center;\n  opacity: 0.28;\n  filter: saturate(0.9) brightness(1.05);\n  user-select: none;\n  -webkit-user-drag: none;\n  transform: none;\n  image-rendering: auto;\n}\n.vv-footer > .vv-max {\n  position: relative;\n  z-index: 1;\n  width: 100%;\n  border-top: none;\n  padding-top: 4rem;\n  box-sizing: border-box;\n}<\/p>\n<p>.vv-footer-grid {\n  display: grid;\n  grid-template-columns: 2fr repeat(3, 1fr);\n  gap: 2.75rem 3rem;\n  margin-bottom: 0;\n  padding-bottom: 3rem;\n}<\/p>\n<p>.vv-footer-tag {\n  font-family: 'JetBrains Mono', monospace;\n  font-size: 0.62rem; letter-spacing: 0.12em; text-transform: uppercase;\n  color: #00E5FF; margin: 0.45rem 0 0.7rem;\n}\n.vv-footer-logo {\n  font-family: 'Bebas Neue', sans-serif;\n  font-size: 2rem;\n  letter-spacing: 0.06em;\n  color: #fff;\n  margin-bottom: 0.35rem;\n}<\/p>\n<p>.vv-footer-desc {\n  font-size: 0.88rem;\n  color: rgba(220, 222, 230, 0.78);\n  line-height: 1.7;\n  max-width: 320px;\n  font-weight: 400;\n  margin: 0;\n}<\/p>\n<p>.vv-footer-col h4 {\n  font-family: 'JetBrains Mono', monospace;\n  font-size: 0.62rem;\n  letter-spacing: 0.22em;\n  color: #00E5FF;\n  text-transform: uppercase;\n  margin: 0 0 1.15rem;\n}<\/p>\n<p>.vv-footer-col a {\n  display: block;\n  color: rgba(220, 222, 230, 0.82);\n  text-decoration: none;\n  font-size: 0.9rem;\n  margin-bottom: 0.65rem;\n  transition: color 0.2s;\n  font-weight: 400;\n}<\/p>\n<p>.vv-footer-col a:hover {\n  color: #fff !important;\n}<\/p>\n<p>.vv-footer-bottom {\n  width: 100%;\n  box-sizing: border-box;\n  border-top: 1px solid rgba(255,255,255,0.12);\n  padding: 1.35rem 0 0;\n  display: flex;\n  justify-content: space-between;\n  align-items: center;\n  flex-wrap: wrap;\n  gap: 0.75rem 1.25rem;\n}<\/p>\n<p>.vv-footer-copy,\n.vv-footer-meta {\n  margin: 0;\n  font-family: 'Manrope', sans-serif;\n  font-size: 0.78rem;\n  color: rgba(255,255,255,0.72);\n  letter-spacing: 0.02em;\n  line-height: 1.45;\n}\n.vv-footer-meta {\n  display: inline-flex;\n  align-items: center;\n  flex-wrap: wrap;\n  gap: 0.45rem 0.55rem;\n  justify-content: flex-end;\n}\n.vv-footer-meta a {\n  color: rgba(255,255,255,0.72) !important;\n  text-decoration: none !important;\n  transition: color 0.2s;\n}\n.vv-footer-meta a:hover { color: #fff !important; }\n.vv-footer-meta span { color: rgba(255,255,255,0.35); }<\/p>\n<p>@media (max-width: 900px) {\n  .vv-footer { padding: 0 1.5rem 2rem; }\n  .vv-footer > .vv-max { padding-top: 3rem; }\n  .vv-footer-grid { grid-template-columns: 1fr 1fr; gap: 2rem; padding-bottom: 2.25rem; }\n  .vv-footer-bottom { flex-direction: column; align-items: flex-start; }\n  .vv-footer-meta { justify-content: flex-start; }\n}<\/p>\n<p>@media (max-width: 480px) {\n  .vv-footer-grid { grid-template-columns: 1fr; }\n}<\/p>\n<p>\/* ============================================================\n   FLUID RESPONSIVE \u2014 all resolutions (phone \u2192 ultrawide)\n   Loaded last so it wins over section-local media queries.\n   ============================================================ *\/\nhtml {\n  -webkit-text-size-adjust: 100%;\n  text-size-adjust: 100%;\n}\nhtml, body, .tc-v2-root {\n  max-width: 100%;\n  overflow-x: clip;\n}\n.tc-v2-root img,\n.tc-v2-root video,\n.tc-v2-root iframe,\n.tc-v2-root canvas,\n.tc-v2-root svg,\n.tc-v2-root dotlottie-wc {\n  max-width: 100% !important;\n  height: auto;\n}\n.tc-v2-root iframe { width: 100% !important; }\n.vv-wrap, .vv-max, .vv-hero-inner, .vv-section, .vv-section-alt {\n  box-sizing: border-box;\n  max-width: 100%;\n}\n.vv-max {\n  width: 100%;\n  padding-inline: clamp(0.85rem, 2.4vw, 2rem);\n}<\/p>\n<p>\/* ---- Ultrawide \/ large desktop ---- *\/\n@media (min-width: 1600px) {\n  .vv-hero-inner { max-width: min(1760px, 92vw) !important; gap: clamp(2rem, 3vw, 4.5rem) !important; }\n  .vv-hero-h1 { font-size: clamp(3.4rem, 4.2vw, 5.2rem) !important; }\n  .vv-max { max-width: min(1400px, 90vw); margin-inline: auto; }\n}\n@media (min-width: 1920px) {\n  .vv-hero-inner { max-width: min(1840px, 90vw) !important; }\n  .vv-hero-section { padding-inline: clamp(1rem, 2vw, 3rem) !important; }\n}<\/p>\n<p>\/* ---- Laptop \/ small desktop: fix rigid 480px hero column ---- *\/\n@media (max-width: 1400px) and (min-width: 1101px) {\n  .vv-hero-inner {\n    grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr) !important;\n    max-width: min(1280px, 96vw) !important;\n    gap: clamp(1.25rem, 2.5vw, 2.75rem) !important;\n  }\n  .vv-hero-text { max-width: min(560px, 100%) !important; }\n  .vv-hero-lottie dotlottie-wc {\n    width: min(400px, 100%) !important;\n    height: min(400px, 42vw) !important;\n  }\n}\n@media (max-width: 1100px) and (min-width: 901px) {\n  .vv-hero-inner {\n    grid-template-columns: minmax(0, 1fr) minmax(0, 0.95fr) !important;\n    max-width: min(1040px, 96vw) !important;\n    gap: 1.25rem !important;\n  }\n  .vv-hero-text { max-width: 100% !important; }\n  .vv-hero-h1 { font-size: clamp(2.4rem, 4.5vw, 3.4rem) !important; }\n  .vv-hero-lottie { width: min(320px, 100%) !important; }\n  .vv-hero-lottie dotlottie-wc {\n    width: min(320px, 36vw) !important;\n    height: min(320px, 36vw) !important;\n  }\n  .vv-app-float-grid .vv-app-cell { width: 108px !important; padding: 0.85rem 0.55rem !important; }\n  .vv-plans-row-4 { grid-template-columns: repeat(2, 1fr) !important; }\n  .vv-feat-grid { grid-template-columns: repeat(2, 1fr) !important; }\n  .vv-devices-layout { grid-template-columns: 1fr 1fr !important; gap: 1rem !important; }\n  .vv-download-layout, .vv-faq-layout, .vv-term-layout, .vv-speed-wrap {\n    grid-template-columns: 1fr 1fr !important;\n    gap: 1.5rem !important;\n  }\n  .vv-nav-links { gap: 0.25rem 1.1rem !important; }\n  .vv-nav-links a { font-size: 0.92rem !important; }\n}<\/p>\n<p>\/* ---- Tablet \/ fold to stacked hero ---- *\/\n@media (max-width: 900px) {\n  .vv-hero-inner {\n    display: flex !important;\n    flex-direction: column !important;\n    max-width: 100% !important;\n    gap: 0.75rem !important;\n    padding-inline: 0 !important;\n  }\n  .vv-hero-section {\n    min-height: 0 !important;\n    \/* Moderate mobile padding \u2014 reduced from large clamp, not flush *\/\n    padding: 0.85rem 1rem 0 !important;\n  }\n  .vv-hero-text { max-width: 100% !important; width: 100% !important; }\n  .vv-hero-h1 {\n    font-size: clamp(2.05rem, 8.2vw, 2.85rem) !important;\n    line-height: 0.94 !important;\n  }\n  .vv-hero-sub { font-size: clamp(0.78rem, 2.8vw, 0.92rem) !important; }\n  .vv-hero-btns {\n    flex-wrap: wrap !important;\n    gap: 0.45rem !important;\n  }\n  .vv-hero-section .vv-btn {\n    flex: 0 1 auto !important;\n    white-space: nowrap !important;\n  }\n  .vv-hero-trust {\n    width: 100% !important;\n    display: flex !important;\n    flex-wrap: nowrap !important;\n    grid-template-columns: unset !important;\n    overflow: visible !important;\n    -webkit-overflow-scrolling: auto;\n    scrollbar-width: none;\n    gap: 0.15rem !important;\n  }\n  .vv-hero-trust::-webkit-scrollbar { display: none; }\n  .vv-hero-trust .vv-trust-item,\n  .vv-hero-trust .vv-trust-item:nth-child(n+5) {\n    display: flex !important;\n    flex: 1 1 0 !important;\n    min-width: 0 !important;\n  }\n  .vv-soft-shade {\n    display: none !important;\n  }\n  .vv-soft-shade--player {\n    display: block !important;\n    inset: 0 !important;\n    left: 0 !important;\n    right: 0 !important;\n    top: 0 !important;\n    bottom: 0 !important;\n    height: auto !important;\n    border-radius: 18px !important;\n    z-index: 20 !important;\n    background: linear-gradient(\n      to top,\n      #000 0%,\n      rgba(0, 0, 0, 0.95) 10%,\n      rgba(0, 0, 0, 0.7) 28%,\n      rgba(0, 0, 0, 0.42) 50%,\n      rgba(0, 0, 0, 0.2) 72%,\n      rgba(0, 0, 0, 0.08) 100%\n    ) !important;\n    box-shadow: none !important;\n  }\n  .vv-app-window-stats {\n    overflow: hidden !important;\n    border-bottom: none !important;\n    -webkit-mask-image: linear-gradient(to top, transparent 0%, #000 22px, #000 100%) !important;\n    mask-image: linear-gradient(to top, transparent 0%, #000 22px, #000 100%) !important;\n  }\n  .vv-hero-mockup, .vv-hero-stage, .vv-app-window-stats {\n    width: 100% !important;\n    max-width: 100% !important;\n  }\n  .vv-hero-lottie {\n    margin-inline: auto !important;\n    width: min(260px, 62vw) !important;\n  }\n  .vv-hero-lottie dotlottie-wc {\n    width: min(260px, 62vw) !important;\n    height: min(260px, 62vw) !important;\n  }\n  .vv-plans-row, .vv-plans-row-4 {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n  .vv-steps-grid {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n  .vv-feat-grid, .vv-ch-grid {\n    grid-template-columns: repeat(2, minmax(0, 1fr)) !important;\n  }\n  .vv-feat-large { grid-column: 1 \/ -1 !important; }\n  .vv-devices-layout,\n  .vv-download-layout,\n  .vv-faq-layout,\n  .vv-term-layout,\n  .vv-speed-wrap,\n  .vv-final-cta-inner {\n    grid-template-columns: 1fr !important;\n    display: grid !important;\n  }\n  .vv-final-cta-inner {\n    flex-direction: column !important;\n    text-align: center !important;\n    align-items: center !important;\n    padding: 1.5rem 1.15rem !important;\n  }\n  .vv-final-cta-btns {\n    width: 100% !important;\n    justify-content: center !important;\n    flex-wrap: wrap !important;\n  }\n  .vv-pricing-controls {\n    flex-direction: column !important;\n    align-items: center !important;\n  }\n  .vv-guides-viewport { margin-inline: 2.2rem !important; }\n  .vv-guide-card {\n    flex-basis: min(240px, 72vw) !important;\n    width: min(240px, 72vw) !important;\n  }\n}<\/p>\n<p>\/* ---- Large phones ---- *\/\n@media (max-width: 640px) {\n  .vv-plans-row, .vv-plans-row-4,\n  .vv-steps-grid {\n    grid-template-columns: 1fr !important;\n  }\n  .vv-plan-card { width: 100% !important; max-width: 100% !important; }\n  .vv-devices-grid { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; }\n  .vv-footer-grid { grid-template-columns: 1fr 1fr !important; }\n  .vv-app-stats {\n    display: grid !important;\n    grid-template-columns: 1fr 1fr !important;\n  }\n  .vv-app-stat-sep { display: none !important; }\n  .vv-download-btns {\n    display: grid !important;\n    grid-template-columns: 1fr !important;\n    width: 100% !important;\n  }\n  .vv-dl-btn { width: 100% !important; justify-content: center !important; }\n}<\/p>\n<p>\/* ---- Small phones ---- *\/\n@media (max-width: 480px) {\n  .vv-max { padding-inline: 0.85rem !important; }\n  .vv-section, .vv-section-alt { padding: 2.85rem 0.85rem !important; }\n  .vv-h2 { font-size: clamp(1.85rem, 8.5vw, 2.55rem) !important; }\n  .vv-feat-grid, .vv-ch-grid, .vv-footer-grid {\n    grid-template-columns: 1fr !important;\n  }\n  .vv-devices-grid { grid-template-columns: 1fr 1fr !important; gap: 0.55rem !important; }\n  .vv-hero-trust .vv-trust-item { min-width: 4.2rem !important; }\n  .vv-trust-num { font-size: clamp(1.25rem, 6vw, 1.65rem) !important; }\n  .vv-trust-item { font-size: 0.62rem !important; }\n  .vv-scroll-cue--dock { display: none !important; }\n  .vv-wa-float {\n    width: 48px !important; height: 48px !important;\n    bottom: calc(22px + env(safe-area-inset-bottom, 0px)) !important;\n    right: 12px !important;\n  }\n  .vv-back-top {\n    width: 42px !important; height: 42px !important;\n    bottom: calc(82px + env(safe-area-inset-bottom, 0px)) !important;\n    right: 12px !important;\n  }\n}<\/p>\n<p>\/* ---- Tiny \/ notch phones ---- *\/\n@media (max-width: 360px) {\n  .vv-hero-h1 { font-size: clamp(1.7rem, 9vw, 2.1rem) !important; }\n  .vv-logo { font-size: 1.15rem !important; }\n  .vv-hero-btns .vv-btn { padding: 0.55rem 0.85rem !important; font-size: 0.68rem !important; }\n  .vv-devices-grid { grid-template-columns: 1fr !important; }\n  .vv-app-stats { grid-template-columns: 1fr !important; }\n}<\/p>\n<p>\/* ---- Short landscape phones \/ foldables ---- *\/\n@media (max-height: 500px) and (orientation: landscape) {\n  .vv-hero-section {\n    min-height: 0 !important;\n    padding-top: 1.25rem !important;\n    padding-bottom: 1.25rem !important;\n  }\n  .vv-hero-lottie dotlottie-wc {\n    width: min(180px, 28vw) !important;\n    height: min(180px, 28vw) !important;\n  }\n  .vv-app-float-grid { display: none !important; }\n  .vv-float-uptime { display: none !important; }\n  .vv-scroll-cue { display: none !important; }\n}<\/p>\n<p>\/* ---- Reduced motion ---- *\/\n@media (prefers-reduced-motion: reduce) {\n  .vv-soft-shade,\n  .vv-soft-shade--player {\n    backdrop-filter: none !important;\n    -webkit-backdrop-filter: none !important;\n  }\n}\n<\/style>\n<p><!-- Fixed 4D space layer \u2014 site-wide --><\/p>\n<div class=\"vv-space-fx\" aria-hidden=\"true\">\n<div class=\"vv-space-fx-grid\"><\/div>\n<div class=\"vv-space-fx-cross\"><\/div>\n<div class=\"vv-space-fx-vanish\"><\/div>\n<div class=\"vv-space-fx-floor\"><\/div>\n<div class=\"vv-space-fx-horizon\"><\/div>\n<\/div>\n<p><!-- Polygon network \u2014 cyan\/purple nodes + mouse links (parallel BG) --><\/p>\n<div class=\"vv-network-bg\" id=\"vvNetworkBg\" aria-hidden=\"true\">\n  <canvas id=\"vvNetworkCanvas\" class=\"vv-network-canvas\"><\/canvas><\/p>\n<div class=\"vv-network-vignette\"><\/div>\n<\/div>\n<p><canvas id=\"vvCursorCanvas\" class=\"vv-cursor-canvas\" aria-hidden=\"true\"><\/canvas><\/p>\n<p><!-- ============================================================\n  TIVIMATE US v2 \u2014 SECTION 01: TICKER + NAV\n  First HTML widget on the page\n============================================================ --><\/p>\n<p><!-- Back to top + WhatsApp float --><br \/>\n<button type=\"button\" class=\"vv-back-top\" id=\"vvBackTop\" aria-label=\"Back to top\" title=\"Back to top\"><br \/>\n  <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><polyline points=\"6 14 12 8 18 14\"><\/polyline><\/svg><br \/>\n<\/button><br \/>\n<a class=\"vv-wa-float\" href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" aria-label=\"Contact us on WhatsApp\" title=\"Contact us on WhatsApp\" rel=\"nofollow noopener\"><br \/>\n  <svg viewBox=\"0 0 32 32\" aria-hidden=\"true\"><path d=\"M16.004 3C9.38 3 4 8.374 4 14.99c0 2.11.55 4.16 1.6 5.97L4 29l8.27-1.57a12.03 12.03 0 0 0 3.73.59C22.62 28.02 28 22.646 28 15.03 28 8.374 22.62 3 16.004 3zm0 22.02c-1.2 0-2.38-.2-3.5-.6l-.25-.1-4.9.93.93-4.77-.16-.28a9.94 9.94 0 0 1-1.53-5.27c0-5.5 4.48-9.97 9.99-9.97 5.5 0 9.98 4.47 9.98 9.97 0 5.5-4.48 9.99-9.98 9.99zm5.47-7.48c-.3-.15-1.77-.87-2.04-.97-.27-.1-.47-.15-.67.15-.2.3-.77.97-.95 1.17-.17.2-.35.22-.65.07-.3-.15-1.26-.46-2.4-1.48-.89-.79-1.49-1.77-1.66-2.07-.17-.3-.02-.46.13-.61.13-.13.3-.35.45-.52.15-.17.2-.3.3-.5.1-.2.05-.37-.02-.52-.08-.15-.67-1.62-.92-2.22-.24-.58-.49-.5-.67-.51h-.57c-.2 0-.52.07-.79.37-.27.3-1.04 1.02-1.04 2.48s1.07 2.88 1.22 3.08c.15.2 2.1 3.2 5.08 4.49.71.3 1.26.49 1.69.63.71.23 1.36.2 1.87.12.57-.09 1.77-.72 2.02-1.42.25-.7.25-1.3.17-1.42-.07-.12-.27-.2-.57-.35z\"\/><\/svg><br \/>\n<\/a><br \/>\n<script>\n(function () {\n  document.documentElement.style.background = '#000';\n  document.body.style.background = '#000';\n  document.body.classList.add('tc-space-ready');\n  function hoist(sel, prepend) {\n    var el = document.querySelector(sel);\n    if (!el) return false;\n    if (prepend) {\n      if (el.parentElement !== document.body || document.body.firstElementChild !== el) {\n        document.body.insertBefore(el, document.body.firstChild);\n      }\n    } else if (el.parentElement !== document.body) {\n      document.body.appendChild(el);\n    }\n    return true;\n  }\n\/* Keep network in-document (not body-hoisted) so glass can blur polygons *\/\n  function hoistChrome() {\n    hoist('.vv-space-fx');\n    \/* network stays inside .tc-v2-root - required for backdrop-filter glass *\/\n    \/* Unwrap ticker + nav onto body so ONLY nav can sticky for the full page *\/\n    var hdr = document.querySelector('header.vv-topstack');\n    var ticker = document.querySelector('.vv-ticker-wrap');\n    var navShell = document.querySelector('.vv-nav-shell');\n    if (ticker && ticker.parentElement !== document.body) {\n      document.body.insertBefore(ticker, document.body.firstChild);\n    }\n    if (navShell) {\n      if (ticker && ticker.parentElement === document.body) {\n        if (navShell.previousElementSibling !== ticker) {\n          document.body.insertBefore(navShell, ticker.nextSibling);\n        }\n      } else if (navShell.parentElement !== document.body) {\n        document.body.insertBefore(navShell, document.body.firstChild);\n      }\n    }\n    if (hdr && hdr.parentElement && !hdr.children.length) {\n      hdr.remove();\n    } else if (hdr && hdr.parentElement !== document.body) {\n      \/* leftover header chrome - keep out of content flow *\/\n      hoist('header.vv-topstack', true);\n    }\n    hoist('.vv-mobile-menu');\n    \/* Floats live in an html-level portal - external to every section *\/\n    var portal = document.getElementById('vv-float-portal');\n    if (!portal) {\n      portal = document.createElement('div');\n      portal.id = 'vv-float-portal';\n    }\n    if (portal.parentElement !== document.documentElement || document.documentElement.lastElementChild !== portal) {\n      document.documentElement.appendChild(portal);\n    }\n    var wa = document.querySelector('a.vv-wa-float');\n    var bt = document.getElementById('vvBackTop');\n    if (wa && wa.parentElement !== portal) portal.appendChild(wa);\n    if (bt && bt.parentElement !== portal) portal.appendChild(bt);\n    \/* Cursor canvas last on body \u2192 under float portal; pointer-events none *\/\n    var cur = document.getElementById('vvCursorCanvas');\n    if (cur) document.body.appendChild(cur);\n  }\n  hoistChrome();\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', hoistChrome);\n  }\n  \/\/ Elementor widgets can mount after first paint - keep header on body\n  var hoistTries = 0;\n  var hoistTimer = setInterval(function () {\n    hoistChrome();\n    hoistTries += 1;\n    var hdr = document.querySelector('header.vv-topstack');\n    var navOk = document.querySelector('.vv-nav-shell');\n    var tickOk = document.querySelector('.vv-ticker-wrap');\n    if (\n      (navOk && navOk.parentElement === document.body && tickOk && tickOk.parentElement === document.body) ||\n      hoistTries > 40\n    ) {\n      clearInterval(hoistTimer);\n    }\n  }, 150);\n  var btn = document.getElementById('vvBackTop');\n  if (btn) {\n    function sync() {\n      if (window.scrollY > 420) btn.classList.add('is-visible');\n      else btn.classList.remove('is-visible');\n    }\n    window.addEventListener('scroll', sync, { passive: true });\n    sync();\n    btn.addEventListener('click', function () {\n      window.scrollTo({ top: 0, behavior: 'smooth' });\n    });\n  }\n  \/\/ Polygon cursor is drawn inside the network canvas (no DOM crosshair)\n  if (window.matchMedia && window.matchMedia('(pointer: fine)').matches) {\n    document.body.classList.add('vv-has-poly-cursor');\n  }\n})();\n<\/script><\/p>\n<p><script>\n\/* Polygon network - depth layers + sharp polygon cursor overlay *\/\n(function () {\n  if (window._vvNetworkInit) return;\n  window._vvNetworkInit = true;\n  var canvas = document.getElementById('vvNetworkCanvas');\n  var curCanvas = document.getElementById('vvCursorCanvas');\n  if (!canvas) return;\n  var ctx = canvas.getContext('2d');\n  if (!ctx) return;\n  var cctx = curCanvas ? curCanvas.getContext('2d') : null;\n  var W = 0, H = 0, DPR = 1;\n  var nodes = [];\n  var mouse = { x: null, y: null };\n  var NODE_COUNT_BASE = 78;\n  var MAX_LINK_DIST = 165;\n  var MOUSE_LINK_DIST = 230;\n  var reduced = window.matchMedia && window.matchMedia('(prefers-reduced-motion: reduce)').matches;\n  var fine = window.matchMedia && window.matchMedia('(pointer: fine)').matches;\n  var mqMobile = window.matchMedia ? window.matchMedia('(max-width: 900px)') : null;\n  function isMobileUI() { return !!(mqMobile && mqMobile.matches); }\n  \/* Mobile: fewer nodes + no glow - blur\/glow over moving mesh flickers *\/\n  var raf = 0;\n  var lastW = 0, lastH = 0;<\/p>\n<p>  function sizeCanvas(el, c) {\n    el.width = Math.floor(W * DPR);\n    el.height = Math.floor(H * DPR);\n    el.style.width = W + 'px';\n    el.style.height = H + 'px';\n    c.setTransform(DPR, 0, 0, DPR, 0, 0);\n  }<\/p>\n<p>  function resize() {\n    DPR = Math.min(window.devicePixelRatio || 1, isMobileUI() ? 1 : 2);\n    W = window.innerWidth;\n    H = window.innerHeight;\n    \/* Ignore iOS URL-bar height-only changes - rebuild causes flicker *\/\n    if (lastW && Math.abs(W - lastW) < 2 &#038;&#038; Math.abs(H - lastH) < 120 &#038;&#038; nodes.length) {\n      if (isMobileUI() &#038;&#038; window._vvMobileMeshDrawn) {\n        lastH = H;\n        return;\n      }\n      canvas.style.width = W + 'px';\n      canvas.style.height = H + 'px';\n      if (curCanvas &#038;&#038; cctx) {\n        curCanvas.style.width = W + 'px';\n        curCanvas.style.height = H + 'px';\n      }\n      lastH = H;\n      return;\n    }\n    lastW = W; lastH = H;\n    sizeCanvas(canvas, ctx);\n    if (curCanvas &#038;&#038; cctx) sizeCanvas(curCanvas, cctx);\n    buildNodes();\n    window._vvMobileMeshDrawn = false;\n    canvas.style.display = '';\n    var oldImg = document.getElementById('vvNetworkStatic');\n    if (oldImg) oldImg.remove();\n    if (!raf) raf = requestAnimationFrame(step);\n  }\n\n  function buildNodes() {\n    var area = W * H;\n    var count = Math.min(120, Math.max(40, Math.round(NODE_COUNT_BASE * area \/ (1440 * 800))));\n    if (isMobileUI()) count = Math.min(count, 36);\n    if (reduced) count = Math.min(count, 28);\n    nodes = [];\n    for (var i = 0; i < count; i++) {\n      var z = 0.18 + Math.random() * 0.82;\n      nodes.push({\n        bx: Math.random() * W,\n        by: Math.random() * H,\n        vx: (Math.random() - 0.5) * (0.12 + z * 0.28),\n        vy: (Math.random() - 0.5) * (0.12 + z * 0.28),\n        z: z,\n        r: 1.1 + z * 2.4,\n        pulsePhase: Math.random() * Math.PI * 2,\n        sides: 3 + Math.floor(Math.random() * 3)\n      });\n    }\n  }\n\n  function lerpColor(t) {\n    var c1 = [34, 211, 238];\n    var c2 = [168, 85, 247];\n    var r = Math.round(c1[0] + (c2[0] - c1[0]) * t);\n    var g = Math.round(c1[1] + (c2[1] - c1[1]) * t);\n    var b = Math.round(c1[2] + (c2[2] - c1[2]) * t);\n    return r + ',' + g + ',' + b;\n  }\n\n  function project(n) {\n    return {\n      x: n.bx,\n      y: n.by,\n      z: n.z,\n      r: n.r * (0.4 + n.z * 0.95),\n      sides: n.sides,\n      pulsePhase: n.pulsePhase\n    };\n  }\n\n  function drawPoly(c, x, y, r, sides, rot) {\n    c.beginPath();\n    for (var i = 0; i < sides; i++) {\n      var a = rot + (i \/ sides) * Math.PI * 2;\n      var px = x + Math.cos(a) * r;\n      var py = y + Math.sin(a) * r;\n      if (i === 0) c.moveTo(px, py);\n      else c.lineTo(px, py);\n    }\n    c.closePath();\n  }\n\n  function step(time) {\n    var mobileMesh = isMobileUI();\n    \/* Mobile: draw mesh once and stop RAF - continuous canvas + Lottie GIFs flickers hard *\/\n    if (mobileMesh &#038;&#038; window._vvMobileMeshDrawn) {\n      raf = 0;\n      return;\n    }\n\n    ctx.clearRect(0, 0, W, H);\n    if (cctx) cctx.clearRect(0, 0, W, H);\n    var i, j, a, b, dx, dy, dist, alpha, t, grad, n, p, pulse, color, projected, linkScale;\n\n    if (!mobileMesh) {\n      for (i = 0; i < nodes.length; i++) {\n        n = nodes[i];\n        n.bx += n.vx;\n        n.by += n.vy;\n        if (n.bx < -40 || n.bx > W + 40) n.vx *= -1;\n        if (n.by < -40 || n.by > H + 40) n.vy *= -1;\n        n.bx = Math.max(-40, Math.min(W + 40, n.bx));\n        n.by = Math.max(-40, Math.min(H + 40, n.by));\n      }\n    }<\/p>\n<p>    projected = [];\n    for (i = 0; i < nodes.length; i++) projected.push(project(nodes[i]));\n    projected.sort(function (u, v) { return u.z - v.z; });\n\n    for (i = 0; i < projected.length; i++) {\n      a = projected[i];\n      for (j = i + 1; j < projected.length; j++) {\n        b = projected[j];\n        if (Math.abs(a.z - b.z) > 0.42) continue;\n        dx = a.x - b.x;\n        dy = a.y - b.y;\n        dist = Math.sqrt(dx * dx + dy * dy);\n        linkScale = MAX_LINK_DIST * (0.55 + (a.z + b.z) * 0.35);\n        if (dist < linkScale) {\n          alpha = (1 - dist \/ linkScale) * (0.18 + (a.z + b.z) * 0.22);\n          t = (a.x \/ W + b.x \/ W) \/ 2;\n          grad = ctx.createLinearGradient(a.x, a.y, b.x, b.y);\n          grad.addColorStop(0, 'rgba(' + lerpColor(t) + ',' + alpha + ')');\n          grad.addColorStop(1, 'rgba(' + lerpColor(1 - t) + ',' + alpha + ')');\n          ctx.strokeStyle = grad;\n          ctx.lineWidth = 0.45 + (a.z + b.z) * 0.35;\n          ctx.beginPath();\n          ctx.moveTo(a.x, a.y);\n          ctx.lineTo(b.x, b.y);\n          ctx.stroke();\n        }\n      }\n    }\n\n    for (i = 0; i < projected.length; i++) {\n      p = projected[i];\n      pulse = mobileMesh ? 1 : (0.7 + 0.3 * Math.sin(time * 0.002 + p.pulsePhase));\n      color = lerpColor(p.x \/ W);\n      alpha = (0.35 + p.z * 0.55) * pulse;\n      if (!mobileMesh) {\n        ctx.shadowBlur = 4 + p.z * 10;\n        ctx.shadowColor = 'rgba(' + color + ',' + (0.35 + p.z * 0.45) + ')';\n      }\n      drawPoly(ctx, p.x, p.y, p.r, p.sides, (mobileMesh ? 0 : time * 0.00015 * p.z) + p.pulsePhase);\n      ctx.fillStyle = 'rgba(' + color + ',' + alpha + ')';\n      ctx.fill();\n      if (p.z > 0.55) {\n        ctx.strokeStyle = 'rgba(' + color + ',' + (0.35 * pulse) + ')';\n        ctx.lineWidth = 0.6;\n        ctx.stroke();\n      }\n    }\n    ctx.shadowBlur = 0;<\/p>\n<p>    if (mobileMesh) {\n      window._vvMobileMeshDrawn = true;\n      raf = 0;\n      \/* True static image - canvas layer gone so WA\/compositor stop fighting *\/\n      try {\n        var dataUrl = canvas.toDataURL('image\/png');\n        var wrap = canvas.parentElement;\n        var img = document.getElementById('vvNetworkStatic');\n        if (!img && wrap) {\n          img = document.createElement('img');\n          img.id = 'vvNetworkStatic';\n          img.alt = '';\n          img.setAttribute('aria-hidden', 'true');\n          img.decoding = 'async';\n          img.style.cssText = 'position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none;display:block;z-index:0;';\n          wrap.insertBefore(img, canvas);\n        }\n        if (img) img.src = dataUrl;\n        canvas.style.display = 'none';\n        canvas.setAttribute('aria-hidden', 'true');\n      } catch (err) {}\n      return;\n    }<\/p>\n<p>    \/* Sharp cursor + crosshair links - desktop only *\/\n    if (cctx && mouse.x !== null) {\n      var mx = mouse.x, my = mouse.y;\n      var rot = time * 0.0012;\n      var rad = 13;\n      cctx.beginPath();\n      cctx.arc(mx, my, 30, 0, Math.PI * 2);\n      cctx.fillStyle = 'rgba(0,229,255,0.1)';\n      cctx.fill();<\/p>\n<p>      drawPoly(cctx, mx, my, rad, 6, rot);\n      cctx.strokeStyle = 'rgba(0,229,255,1)';\n      cctx.lineWidth = 1.8;\n      cctx.shadowBlur = 16;\n      cctx.shadowColor = 'rgba(0,229,255,0.85)';\n      cctx.stroke();\n      drawPoly(cctx, mx, my, rad * 0.45, 6, -rot * 1.4);\n      cctx.strokeStyle = 'rgba(196,181,253,1)';\n      cctx.lineWidth = 1.35;\n      cctx.shadowColor = 'rgba(167,139,250,0.8)';\n      cctx.stroke();\n      cctx.shadowBlur = 0;\n      cctx.beginPath();\n      cctx.fillStyle = '#fff';\n      cctx.arc(mx, my, 2.6, 0, Math.PI * 2);\n      cctx.fill();<\/p>\n<p>      for (i = 0; i < projected.length; i++) {\n        a = projected[i];\n        dx = a.x - mx;\n        dy = a.y - my;\n        dist = Math.sqrt(dx * dx + dy * dy);\n        if (dist < MOUSE_LINK_DIST * (0.7 + a.z * 0.4)) {\n          alpha = (1 - dist \/ (MOUSE_LINK_DIST * 1.15)) * (0.55 + a.z * 0.4);\n          var ang = Math.atan2(dy, dx);\n          var vx = mx + Math.cos(ang) * rad;\n          var vy = my + Math.sin(ang) * rad;\n          grad = cctx.createLinearGradient(vx, vy, a.x, a.y);\n          grad.addColorStop(0, 'rgba(0,229,255,' + alpha + ')');\n          grad.addColorStop(1, 'rgba(168,85,247,' + (alpha * 0.75) + ')');\n          cctx.strokeStyle = grad;\n          cctx.lineWidth = 1 + a.z * 0.7;\n          cctx.beginPath();\n          cctx.moveTo(vx, vy);\n          cctx.lineTo(a.x, a.y);\n          cctx.stroke();\n          cctx.beginPath();\n          cctx.fillStyle = 'rgba(168,85,247,' + Math.min(1, alpha + 0.25) + ')';\n          cctx.arc(a.x, a.y, 1.8 + a.z * 1.2, 0, Math.PI * 2);\n          cctx.fill();\n        }\n      }\n    }\n\n    raf = requestAnimationFrame(step);\n  }\n\n  window.addEventListener('resize', function () {\n    if (isMobileUI()) { mouse.x = null; mouse.y = null; }\n    resize();\n  });\n  window.addEventListener('mousemove', function (e) {\n    if (isMobileUI()) return;\n    mouse.x = e.clientX;\n    mouse.y = e.clientY;\n  }, { passive: true });\n  window.addEventListener('mouseleave', function () {\n    mouse.x = null;\n    mouse.y = null;\n  });\n  \/* Touch crosshair disabled on mobile - keep network mesh only *\/\n\n  function start() {\n    resize();\n    if (!raf) raf = requestAnimationFrame(step);\n  }\n  if (document.readyState === 'loading') {\n    document.addEventListener('DOMContentLoaded', start);\n  } else {\n    start();\n  }\n})();\n<\/script><br \/>\n<script>\n\/* Lock hero viewport height once - prevents scroll-GIF jump when mobile chrome hides *\/\n(function () {\n  try {\n    if (!window.matchMedia || !window.matchMedia('(max-width: 900px)').matches) return;\n    var lastW = window.innerWidth;\n    function lockHeroVh() {\n      document.documentElement.style.setProperty('--vv-hero-vh', window.innerHeight + 'px');\n    }\n    lockHeroVh();\n    window.addEventListener('resize', function () {\n      if (Math.abs(window.innerWidth - lastW) < 2) return; \/* ignore URL-bar height-only *\/\n      lastW = window.innerWidth;\n      lockHeroVh();\n    }, { passive: true });\n    window.addEventListener('orientationchange', function () {\n      setTimeout(function () {\n        lastW = window.innerWidth;\n        lockHeroVh();\n      }, 120);\n    });\n  } catch (e) {}\n})();\n<\/script><br \/>\n<script>\n\/* Float bottoms stay static px - no visualViewport \/ safe-area updates on scroll *\/\n(function () {\n  try {\n    if (!window.matchMedia || !window.matchMedia('(max-width: 900px)').matches) return;\n    document.documentElement.style.setProperty('--vv-float-gap', '0px');\n  } catch (e) {}\n})();\n<\/script><br \/>\n<script>\n\/* Mobile hero: strip hidden Lotties so they never decode frames under the main GIF *\/\n(function () {\n  try {\n    if (!window.matchMedia || !window.matchMedia('(max-width: 900px)').matches) return;\n    function killExtra() {\n      \/* Soft shades only - keep Stable Streaming badge visible + centered *\/\n      document.querySelectorAll('.vv-soft-shade, .vv-soft-shade--player').forEach(function (el) {\n        el.setAttribute('hidden', '');\n        el.style.setProperty('display', 'none', 'important');\n      });\n      \/* Dock scroll cue is desktop-only - remove its Lottie on phones *\/\n      document.querySelectorAll('.vv-scroll-cue--dock').forEach(function (el) {\n        el.querySelectorAll('dotlottie-wc').forEach(function (n) { n.remove(); });\n        el.style.setProperty('display', 'none', 'important');\n      });\n    }\n    if (document.readyState === 'loading') document.addEventListener('DOMContentLoaded', killExtra);\n    else killExtra();\n    setTimeout(killExtra, 200);\n    setTimeout(killExtra, 800);\n  } catch (e) {}\n})();\n<\/script><\/p>\n<p><!-- Mobile Overlay --><\/p>\n<div class=\"vv-mobile-menu\" id=\"vvMenu\">\n  <button class=\"vv-menu-close\" onclick=\"vvClose()\" aria-label=\"Close menu\">\u2715<\/button><\/p>\n<div class=\"vv-mob-langs\" aria-label=\"Language\">\n    <a href=\"\/\" onclick=\"vvClose()\" hreflang=\"en\" lang=\"en\" data-lang=\"en\">EN<\/a><br \/>\n    <a href=\"\/fr\/\" onclick=\"vvClose()\" hreflang=\"fr\" lang=\"fr\" data-lang=\"fr\">FR<\/a><br \/>\n    <a href=\"\/ar\/\" onclick=\"vvClose()\" hreflang=\"ar\" lang=\"ar\" data-lang=\"ar\">AR<\/a>\n  <\/div>\n<p>  <a href=\"#vv-features\" onclick=\"vvClose()\">Features<\/a><br \/>\n  <a href=\"#vv-plans\" onclick=\"vvClose()\">Pricing<\/a><br \/>\n  <a href=\"#vv-download\" onclick=\"vvClose()\">Download<\/a><br \/>\n  <a href=\"#vv-steps\" onclick=\"vvClose()\">How it works<\/a><br \/>\n  <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" onclick=\"vvClose()\" rel=\"nofollow noopener\">Contact us on WhatsApp<\/a><br \/>\n  <a href=\"#vv-plans\" class=\"vv-mob-cta vv-mob-order\" onclick=\"vvClose()\">Order Now<\/a><br \/>\n  <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" class=\"vv-mob-cta vv-mob-trial\" onclick=\"vvClose()\" rel=\"nofollow noopener\">Get Trial<\/a>\n<\/div>\n<p><!-- Top stack: ticker + nav (sticky header) --><\/p>\n<header class=\"vv-topstack\">\n<div class=\"vv-ticker-wrap\" role=\"marquee\">\n<div class=\"vv-ticker-track\">\n    <span>TIVIMATE US<\/span><br \/>\n    <span>STABLE STREAMING<\/span><br \/>\n    <span>TIVIMATE IPTV PREMIUM PLAYLIST<\/span><br \/>\n    <span>TIVIMATE SUBSCRIPTION READY<\/span><br \/>\n    <span>22,000+ LIVE CHANNELS<\/span><br \/>\n    <span>TIVIMATE APP FIRE STICK<\/span><br \/>\n    <span>88K+ VOD ORDER ON WHATSAPP<\/span><br \/>\n    <span>TIVIMATE US<\/span><br \/>\n    <span>STABLE STREAMING<\/span><br \/>\n    <span>TIVIMATE IPTV PREMIUM PLAYLIST<\/span><br \/>\n    <span>TIVIMATE SUBSCRIPTION READY<\/span><br \/>\n    <span>22,000+ LIVE CHANNELS<\/span><br \/>\n    <span>TIVIMATE APP FIRE STICK<\/span><br \/>\n    <span>88K+ VOD ORDER ON WHATSAPP<\/span>\n  <\/div>\n<\/div>\n<div class=\"vv-nav-shell\">\n<nav class=\"vv-nav\" role=\"navigation\" aria-label=\"Main\">\n  <a class=\"vv-logo\" href=\"\/\" aria-label=\"TiviMate US Home\"><br \/>\n    <span class=\"vv-logo-mark\"><br \/>\n      <span class=\"vv-logo-v\">TIVIMATE<\/span>&nbsp;US<br \/>\n    <\/span><br \/>\n    <span class=\"vv-logo-sub\">BEST IPTV FOR TIVIMATE USA USA<\/span><br \/>\n  <\/a><\/p>\n<div class=\"vv-nav-links\">\n    <a href=\"#vv-features\">Features<\/a><br \/>\n    <a href=\"#vv-plans\">Pricing<\/a><br \/>\n    <a href=\"#vv-steps\">How it works<\/a><br \/>\n    <a href=\"#vv-download\">Download<\/a><br \/>\n    <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" rel=\"nofollow noopener\">Contact Us<\/a>\n  <\/div>\n<nav class=\"vv-lang-switch\" aria-label=\"Language\">\n    <a href=\"\/\" hreflang=\"en\" lang=\"en\" data-lang=\"en\">EN<\/a><br \/>\n    <span aria-hidden=\"true\">|<\/span><br \/>\n    <a href=\"\/fr\/\" hreflang=\"fr\" lang=\"fr\" data-lang=\"fr\">FR<\/a><br \/>\n    <span aria-hidden=\"true\">|<\/span><br \/>\n    <a href=\"\/ar\/\" hreflang=\"ar\" lang=\"ar\" data-lang=\"ar\">AR<\/a><br \/>\n  <\/nav>\n<div class=\"vv-nav-ctas\">\n    <a href=\"#vv-plans\" class=\"vv-nav-order\">Order Now<\/a><br \/>\n    <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" class=\"vv-nav-trial\" rel=\"nofollow noopener\">Get Trial<\/a>\n  <\/div>\n<p>  <button class=\"vv-hamburger\" id=\"vvBurger\" onclick=\"vvToggle()\" aria-label=\"Open menu\"><br \/>\n    <span><\/span><span><\/span><span><\/span><br \/>\n  <\/button><br \/>\n<\/nav>\n<\/div>\n<\/header>\n<p><script>\nfunction vvToggle(){\n  var m=document.getElementById('vvMenu'), b=document.getElementById('vvBurger');\n  m.classList.toggle('open'); b.classList.toggle('open');\n  document.body.style.overflow=m.classList.contains('open')?'hidden':'';\n}\nfunction vvClose(){\n  document.getElementById('vvMenu').classList.remove('open');\n  document.getElementById('vvBurger').classList.remove('open');\n  document.body.style.overflow='';\n}\n(function () {\n  var path = (location.pathname || '\/').toLowerCase();\n  var lang = 'en';\n  if (path.indexOf('\/ar') === 0) lang = 'ar';\n  else if (path.indexOf('\/fr') === 0) lang = 'fr';\n  document.querySelectorAll('.vv-lang-switch a[data-lang], .vv-mob-langs a[hreflang]').forEach(function (a) {\n    var code = a.getAttribute('data-lang') || a.getAttribute('hreflang') || '';\n    if (code === lang) a.classList.add('is-active');\n  });\n})();\n<\/script><\/p>\n<p><script src=\"https:\/\/unpkg.com\/@lottiefiles\/dotlottie-wc@0.9.4\/dist\/dotlottie-wc.js\" type=\"module\"><\/script>\n<link rel=\"preconnect\" href=\"https:\/\/unpkg.com\" crossorigin>\n<link rel=\"preload\" as=\"fetch\" href=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-hero-cubes.lottie\" crossorigin>\n<link rel=\"preload\" as=\"fetch\" href=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-scroll-down.lottie\" crossorigin>\n<link rel=\"preload\" as=\"image\" href=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-world-map-700-nobg.webp\" type=\"image\/webp\">\n<!-- ============================================================\n  TIVIMATE US v2 \u2014 SECTION 02: HERO\n  Dynamic hero with animated app mockup, floating stats, particle bg\n============================================================ --><\/p>\n<section class=\"vv-wrap vv-hero-section\" id=\"vv-hero\">\n<p>  <!-- Animated background particles --><\/p>\n<div class=\"vv-hero-bg\" aria-hidden=\"true\">\n<div class=\"vv-nebula\"><\/div>\n<div class=\"vv-stars vv-stars-a\"><\/div>\n<div class=\"vv-stars vv-stars-b\"><\/div>\n<div class=\"vv-space-depth\"><\/div>\n<div class=\"vv-orb vv-orb1\"><\/div>\n<div class=\"vv-orb vv-orb2\"><\/div>\n<div class=\"vv-orb vv-orb3\"><\/div>\n<\/p><\/div>\n<div class=\"vv-hero-inner\">\n<div class=\"vv-hero-screen1\">\n    <!-- LEFT: Text --><\/p>\n<div class=\"vv-hero-text\">\n<div class=\"vv-eyebrow\">TiviMate US \u00b7 TiviMate IPTV Premium<\/div>\n<h1 class=\"vv-hero-h1\">\n        <span class=\"vv-h1-grad\">TIVIMATE IPTV<\/span><span class=\"vv-h1-sep\" aria-hidden=\"true\"><\/span><br \/>\n        BEST IPTV PLAYLIST<br \/>\n        <span class=\"vv-h1-soft\">FOR <span class=\"vv-h1-cyan\">TIVIMATE<\/span> USERS<\/span><br \/>\n      <\/h1>\n<p class=\"vv-hero-sub\">\n        TiviMate US delivers a ready playlist for USA TiviMate users across the United States \u2014 stable streaming on 25K TVs, 88K movies &amp; series in FHD, plus USA and worldwide content on every plan. Additionally, it works on all devices. Moreover, we provide our TiviMate US app <strong>exclusively free for our customers<\/strong> with <strong>all features unlocked<\/strong>.\n      <\/p>\n<div class=\"vv-hero-btns\">\n        <a href=\"#vv-plans\" class=\"vv-btn vv-btn-red\">See Pricing<\/a><br \/>\n        <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" class=\"vv-btn vv-btn-outline\" rel=\"nofollow noopener\">Get Free Trial<\/a><br \/>\n        <a href=\"#vv-steps\" class=\"vv-hero-how\">How it works <span class=\"vv-hero-how-arrow\" aria-hidden=\"true\">\u2192<\/span><\/a>\n      <\/div>\n<p>      <!-- Trust row --><\/p>\n<div class=\"vv-hero-trust\">\n        <span class=\"vv-soft-shade\" aria-hidden=\"true\"><\/span><\/p>\n<div class=\"vv-trust-item\"><span class=\"vv-trust-num\">25K<\/span><span>TVs<\/span><\/div>\n<div class=\"vv-trust-item\"><span class=\"vv-trust-num\">FHD<\/span><span>Quality<\/span><\/div>\n<div class=\"vv-trust-item\"><span class=\"vv-trust-num\">99.9%<\/span><span>Uptime<\/span><\/div>\n<div class=\"vv-trust-item\"><span class=\"vv-trust-num\">88K<\/span><span>Movies<\/span><\/div>\n<div class=\"vv-trust-item\"><span class=\"vv-trust-num\">GLOBAL<\/span><span>Worldwide<\/span><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>    <!-- Mobile: Scroll Down \u2014 first screen clips to top half --><br \/>\n    <a href=\"#vv-steps\" class=\"vv-scroll-cue vv-scroll-cue--inline\" aria-label=\"Scroll down\"><br \/>\n      <span class=\"vv-mesh-block vv-mesh-block--scroll\" aria-hidden=\"true\"><\/span><br \/>\n      <dotlottie-wc\n        src=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-scroll-down.lottie\"\n        style=\"width: 140px; height: 140px\"\n        autoplay\n        loop\n      ><\/dotlottie-wc><br \/>\n    <\/a>\n    <\/div>\n<p><!-- \/.vv-hero-screen1 --><\/p>\n<p>    <!-- RIGHT: Lottie + floating category tiles + stats widget --><\/p>\n<div class=\"vv-hero-mockup\" id=\"vvHeroMockup\">\n<div class=\"vv-hero-stage\">\n<div class=\"vv-hero-lottie\" id=\"vvHeroLottie\" aria-hidden=\"true\">\n        <dotlottie-wc\n          src=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-hero-cubes.lottie\"\n          style=\"width: 460px; height: 460px\"\n          autoplay\n          loop\n        ><\/dotlottie-wc>\n      <\/div>\n<p>      <!-- Floating stable-streaming badge --><\/p>\n<div class=\"vv-float-badge vv-float-uptime\" aria-hidden=\"true\">\n<div class=\"vv-float-uptime-inner\">\n<div class=\"vv-live-gif\" aria-hidden=\"true\">\n            <dotlottie-wc\n              src=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-live-pulse.lottie\"\n              style=\"width: 56px; height: 56px\"\n              autoplay\n              loop\n            ><\/dotlottie-wc>\n          <\/div>\n<p>          <span>Stable Streaming<\/span>\n        <\/div>\n<\/p><\/div>\n<p>      <!-- Category tiles \u2014 randomly floating around the Lottie --><\/p>\n<div class=\"vv-app-float-grid\" aria-hidden=\"true\">\n<div class=\"vv-app-cell vv-cell-front vv-cell-sports\">\n<div class=\"vv-cell-icon\">\ud83d\udcfa<\/div>\n<div class=\"vv-cell-name\">Sports HD<\/div>\n<div class=\"vv-live\">LIVE<\/div>\n<\/p><\/div>\n<div class=\"vv-app-cell vv-cell-front vv-cell-movies\">\n<div class=\"vv-cell-icon\">\ud83c\udfac<\/div>\n<div class=\"vv-cell-name\">Movies 8K<\/div>\n<div class=\"vv-live\">LIVE<\/div>\n<\/p><\/div>\n<div class=\"vv-app-cell vv-cell-behind vv-cell-news\">\n<div class=\"vv-cell-icon\">\ud83d\udce1<\/div>\n<div class=\"vv-cell-name\">News Live<\/div>\n<\/p><\/div>\n<div class=\"vv-app-cell vv-cell-behind vv-cell-music\">\n<div class=\"vv-cell-icon\">\ud83c\udfb5<\/div>\n<div class=\"vv-cell-name\">Music TV<\/div>\n<\/p><\/div>\n<div class=\"vv-app-cell vv-cell-front vv-cell-football\">\n<div class=\"vv-cell-icon\">\u26bd<\/div>\n<div class=\"vv-cell-name\">Football<\/div>\n<div class=\"vv-live\">LIVE<\/div>\n<\/p><\/div>\n<div class=\"vv-app-cell vv-cell-front vv-cell-world\">\n<div class=\"vv-cell-icon\">\ud83c\udf0d<\/div>\n<div class=\"vv-cell-name\">World TV<\/div>\n<div class=\"vv-live\">LIVE<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p><!-- \/.vv-hero-stage --><\/p>\n<p>      <!-- Stats widget \u2014 bar + footer strip (below orbit tiles) --><\/p>\n<div class=\"vv-app-window vv-app-window-stats\" aria-hidden=\"true\">\n        <span class=\"vv-soft-shade vv-soft-shade--player\" aria-hidden=\"true\"><\/span><\/p>\n<div class=\"vv-app-bar\">\n<div class=\"vv-traffic-lights\">\n<div class=\"vv-tl tl-red\"><\/div>\n<div class=\"vv-tl tl-yellow\"><\/div>\n<div class=\"vv-tl tl-green\"><\/div>\n<\/p><\/div>\n<p>          <span class=\"vv-app-title\">TiviMate Player<\/span>\n        <\/div>\n<div class=\"vv-app-stats\">\n<div class=\"vv-app-stat\"><strong>4Y<\/strong><span>In Business<\/span><\/div>\n<div class=\"vv-app-stat-sep\"><\/div>\n<div class=\"vv-app-stat\"><strong>+13,643<\/strong><span>Satisfied Customers<\/span><\/div>\n<div class=\"vv-app-stat-sep\"><\/div>\n<div class=\"vv-app-stat\"><strong>88K<\/strong><span>Movies \/ Series<\/span><\/div>\n<div class=\"vv-app-stat-sep\"><\/div>\n<div class=\"vv-app-stat vv-stat-highlight\"><strong>25K<\/strong><span>TVs<\/span><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>  <a href=\"#vv-steps\" class=\"vv-scroll-cue vv-scroll-cue--dock\" aria-label=\"Scroll down\"><br \/>\n    <span class=\"vv-mesh-block vv-mesh-block--scroll\" aria-hidden=\"true\"><\/span><br \/>\n    <dotlottie-wc\n      src=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-scroll-down.lottie\"\n      style=\"width: 140px; height: 140px\"\n      autoplay\n      loop\n    ><\/dotlottie-wc><br \/>\n  <\/a><br \/>\n<\/section>\n<p><script>\n\/* Hero GIF - mouse-follow drag across the FULL right hero column *\/\n(function () {\n  try {\n    if (!window.matchMedia('(pointer: fine)').matches) return;\n    if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return;\n    var zone = document.getElementById('vvHeroMockup') || document.querySelector('.vv-hero-mockup');\n    var gif = document.getElementById('vvHeroLottie') || document.querySelector('.vv-hero-lottie');\n    var inner = document.querySelector('.vv-hero-inner');\n    var section = document.querySelector('.vv-hero-section');\n    if (!zone || !gif || !inner) return;\n    var grid = zone.querySelector('.vv-app-float-grid');\n    var win = zone.querySelector('.vv-app-window-stats');\n    var maxX = 36, maxY = 28, ease = 0.055;\n    var tx = 0, ty = 0, cx = 0, cy = 0, active = false, raf = 0;<\/p>\n<p>    function hitRect() {\n      var ir = inner.getBoundingClientRect();\n      var zr = zone.getBoundingClientRect();\n      \/* entire right grid column - not just the Lottie box *\/\n      return {\n        left: zr.left,\n        top: Math.min(zr.top, ir.top),\n        right: ir.right,\n        bottom: Math.max(zr.bottom, ir.bottom),\n        width: Math.max(1, ir.right - zr.left),\n        height: Math.max(1, Math.max(zr.bottom, ir.bottom) - Math.min(zr.top, ir.top))\n      };\n    }\n    function inside(e, r) {\n      return e.clientX >= r.left && e.clientX <= r.right &#038;&#038;\n             e.clientY >= r.top && e.clientY <= r.bottom;\n    }\n    function frame() {\n      cx += (tx - cx) * ease;\n      cy += (ty - cy) * ease;\n      if (Math.abs(cx) < 0.05) cx = 0;\n      if (Math.abs(cy) < 0.05) cy = 0;\n      gif.style.transform = 'translate3d(' + cx.toFixed(2) + 'px,' + cy.toFixed(2) + 'px,0)';\n      if (grid) {\n        grid.style.transform = 'translate3d(' + (-cx * 0.38).toFixed(2) + 'px,' + (-cy * 0.38).toFixed(2) + 'px,0)';\n      }\n      if (win) {\n        win.style.transform = 'translate3d(' + (cx * 0.18).toFixed(2) + 'px,' + (cy * 0.18).toFixed(2) + 'px,0)';\n      }\n      if (active || Math.abs(tx - cx) > 0.08 || Math.abs(ty - cy) > 0.08) {\n        raf = requestAnimationFrame(frame);\n      } else {\n        raf = 0;\n      }\n    }\n    function kick() {\n      if (!raf) raf = requestAnimationFrame(frame);\n    }\n    function activate() {\n      if (active) return;\n      active = true;\n      zone.classList.add('is-hover-drag');\n    }\n    function deactivate() {\n      if (!active && !tx && !ty) return;\n      active = false;\n      tx = 0;\n      ty = 0;\n      zone.classList.remove('is-hover-drag');\n      kick();\n    }\n    function onMove(e) {\n      var r = hitRect();\n      if (!inside(e, r)) {\n        deactivate();\n        return;\n      }\n      activate();\n      var nx = ((e.clientX - r.left) \/ r.width - 0.5) * 2;\n      var ny = ((e.clientY - r.top) \/ r.height - 0.5) * 2;\n      nx = Math.max(-1, Math.min(1, nx));\n      ny = Math.max(-1, Math.min(1, ny));\n      tx = nx * maxX;\n      ty = ny * maxY;\n      kick();\n    }\n    \/* Whole right column - track on window so every pixel in the zone counts *\/\n    window.addEventListener('mousemove', onMove, { passive: true });\n    if (section) section.addEventListener('mouseleave', deactivate);\n  } catch (e) {}\n})();\n<\/script><\/p>\n<p><!-- ============================================================\n  TIVIMATE US v2 \u2014 SECTION: HOW IT WORKS \/ STEPS\n============================================================ --><\/p>\n<section class=\"vv-wrap vv-section\" id=\"vv-steps\">\n<div class=\"vv-hero-blend\" aria-hidden=\"true\"><\/div>\n<div class=\"vv-max\">\n<div class=\"vv-section-center\" style=\"margin-bottom:2.5rem;\">\n<div class=\"vv-eyebrow\">Simple setup<\/div>\n<h2 class=\"vv-h2\">How <span>TiviMate US<\/span> Works<\/h2>\n<p class=\"vv-lead\" style=\"margin:0.9rem auto 0;max-width:640px;\">First, four clear steps take you from plan to playlist. Then you get stable streaming in the TiviMate app \u2014 no mystery APKs and no guessing.<\/p>\n<\/p><\/div>\n<div class=\"vv-steps-grid\">\n<article class=\"vv-step-card\">\n<div class=\"vv-step-num\">01<\/div>\n<h3 class=\"vv-step-title\">Pick a TiviMate US plan<\/h3>\n<p class=\"vv-step-desc\">Start with 1, 3, 6, or 12 months on the pricing section. Additionally, add more devices if your household needs them.<\/p>\n<\/article>\n<article class=\"vv-step-card\">\n<div class=\"vv-step-num\">02<\/div>\n<h3 class=\"vv-step-title\">Checkout securely<\/h3>\n<p class=\"vv-step-desc\">Pay online with card \/ Apple Pay \/ Google Pay. Alternatively, message WhatsApp for a free trial first.<\/p>\n<\/article>\n<article class=\"vv-step-card\">\n<div class=\"vv-step-num\">03<\/div>\n<h3 class=\"vv-step-title\">Receive your playlist<\/h3>\n<p class=\"vv-step-desc\">After confirmation, we send M3U or Xtream Codes for your TiviMate playlist \u2014 usually within minutes.<\/p>\n<\/article>\n<article class=\"vv-step-card\">\n<div class=\"vv-step-num\">04<\/div>\n<h3 class=\"vv-step-title\">Load TiviMate US<\/h3>\n<p class=\"vv-step-desc\">Finally, open the TiviMate app on Fire Stick or Android TV, paste login details, refresh EPG, and enjoy stable streaming.<\/p>\n<\/article><\/div>\n<div style=\"text-align:center;margin-top:2.2rem;display:flex;gap:1rem;justify-content:center;flex-wrap:wrap;\">\n      <a href=\"#vv-plans\" class=\"vv-btn vv-btn-red\">See Pricing<\/a><br \/>\n      <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" class=\"vv-btn vv-btn-outline\" rel=\"nofollow noopener\">Get Free Trial<\/a>\n    <\/div>\n<\/p><\/div>\n<\/section>\n<p><!-- ============================================================\n  TIVIMATE US v2 \u2014 SECTION 03: PRICING\n  Plans: 3 Months \/ 6 Months \/ 12 Months\n  Devices selector: 1 \/ 2 \/ 3\n============================================================ --><\/p>\n<section class=\"vv-wrap vv-section-alt\" id=\"vv-plans\">\n<div class=\"vv-max vv-section-center\">\n<div class=\"vv-eyebrow\" style=\"justify-content:center;\">TiviMate Subscription Plans<\/div>\n<h2 class=\"vv-h2\">Choose Your <span>TiviMate US<\/span> Plan.<\/h2>\n<p class=\"vv-lead\" style=\"margin:0.8rem auto 0;\">Pick a <strong>TiviMate IPTV<\/strong> subscription that fits \u2014 monthly to annual. Every plan is a <strong>one-time payment<\/strong> (no auto-renew). In addition, you get stable streaming, a <strong>TiviMate premium<\/strong> channel pack, M3U \/ Xtream login for your <strong>TiviMate playlist<\/strong>, and our TiviMate US app <strong>free exclusively for customers<\/strong> with all features unlocked. Therefore, there are no long contracts.<\/p>\n<h3 class=\"vv-h3\" style=\"margin:1.5rem 0 0.35rem;font-size:1.05rem;color:#e4e4e7;font-weight:700;\">TiviMate US subscription options<\/h3>\n<div class=\"vv-pricing-controls\">\n<div class=\"vv-screens-wrap\">\n        <span class=\"vv-screens-label\">Devices:<\/span><\/p>\n<div class=\"vv-screens-btns\">\n          <button type=\"button\" class=\"vv-screen-btn active\" onclick=\"vvSetAccounts(this,1)\">1<\/button><br \/>\n          <button type=\"button\" class=\"vv-screen-btn\" onclick=\"vvSetAccounts(this,2)\">2<\/button><br \/>\n          <button type=\"button\" class=\"vv-screen-btn\" onclick=\"vvSetAccounts(this,3)\">3<\/button>\n        <\/div>\n<\/p><\/div>\n<div class=\"vv-pricing-highlights\" aria-label=\"Plan coverage\">\n<div class=\"vv-pricing-hi\"><span class=\"vv-pricing-hi-num\">GLOBAL<\/span><span>Worldwide Content<\/span><\/div>\n<div class=\"vv-pricing-hi\"><span class=\"vv-pricing-hi-num\">50+<\/span><span>Languages<\/span><\/div>\n<div class=\"vv-pricing-hi\"><span class=\"vv-pricing-hi-num\">150+<\/span><span>Countries TVs<\/span><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"vv-plans-row vv-plans-row-4\">\n<div class=\"vv-plan-card vv-reveal\">\n<div class=\"vv-plan-tag\">ONE TIME PAYMENT - 1 DEVICE ONLY<\/div>\n<div class=\"vv-plan-name\">1 Month<\/div>\n<div class=\"vv-plan-desc\">Flexible <strong>TiviMate subscription<\/strong> \u2014 try month to month.<\/div>\n<div class=\"vv-plan-price-wrap\">\n<div class=\"vv-plan-price\"><span class=\"vv-price-currency\">$<\/span><span class=\"vv-price-num\" id=\"vvPrice1m\">12.99<\/span><span class=\"vv-badge-discount\" id=\"vvOff1m\" style=\"display:none\"><\/span><\/div>\n<div class=\"vv-price-was\" id=\"vvWas1m\" style=\"visibility:hidden\">Was: <s>$12.99<\/s><\/div>\n<div class=\"vv-price-screens-note\" id=\"vvNote1m\">1 device \u00b7 one-time payment<\/div>\n<\/p><\/div>\n<div class=\"vv-plan-divider\"><\/div>\n<ul class=\"vv-plan-feats\">\n<li><span class=\"vv-feat-check\">\u2713<\/span>Plus 88K movies &amp; series<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Over 22,000 live channels<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Watch in FHD \/ Ultra HD<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Works on all devices<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Round-the-clock support<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Built-in TV guide (EPG)<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Reliable stable streaming<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Global CDN delivery<\/li>\n<\/ul>\n<p>        <a href=\"https:\/\/mediamatestudio.com\/standard\" class=\"vv-plan-btn vv-plan-btn-outline\" id=\"vvOrder1m\" target=\"_blank\" rel=\"noopener\">Order Now<\/a><br \/>\n        <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" class=\"vv-plan-btn vv-plan-btn-outline\" id=\"vvTrial1m\" target=\"_blank\" rel=\"noopener\" style=\"margin-top:0.6rem\">Get Trial on WhatsApp<\/a>\n      <\/div>\n<div class=\"vv-plan-card vv-reveal vv-reveal-delay-1\">\n<div class=\"vv-plan-tag\" style=\"background:rgba(0,184,230,0.2);color:var(--vv-red2);\">ONE TIME PAYMENT - 1 DEVICE ONLY<\/div>\n<div class=\"vv-plan-name\">3 Months<\/div>\n<div class=\"vv-plan-desc\">Quarterly <strong>TiviMate IPTV<\/strong> savings to get started.<\/div>\n<div class=\"vv-plan-price-wrap\">\n<div class=\"vv-plan-price vv-price-red\"><span class=\"vv-price-currency\">$<\/span><span class=\"vv-price-num\" id=\"vvPrice3m\">24.99<\/span><span class=\"vv-badge-discount\" id=\"vvOff3m\" style=\"display:none\"><\/span><\/div>\n<div class=\"vv-price-was\" id=\"vvWas3m\" style=\"visibility:hidden\">Was: <s>$24.99<\/s><\/div>\n<div class=\"vv-price-screens-note\" id=\"vvNote3m\">1 device \u00b7 one-time payment<\/div>\n<\/p><\/div>\n<div class=\"vv-plan-divider\"><\/div>\n<ul class=\"vv-plan-feats\">\n<li><span class=\"vv-feat-check\">\u2713<\/span>Includes 88K movies &amp; series<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Access 22,000+ live channels<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Stream in FHD \/ Ultra HD<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Compatible with major devices<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Human support anytime<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Full electronic program guide<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Steady peak-hour playback<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Worldwide CDN nodes<\/li>\n<\/ul>\n<p>        <a href=\"https:\/\/mediamatestudio.com\/pro\" class=\"vv-plan-btn vv-plan-btn-red\" id=\"vvOrder3m\" target=\"_blank\" rel=\"noopener\">Order Now<\/a><br \/>\n        <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" class=\"vv-plan-btn vv-plan-btn-outline\" id=\"vvTrial3m\" target=\"_blank\" rel=\"noopener\" style=\"margin-top:0.6rem\">Get Trial on WhatsApp<\/a>\n      <\/div>\n<div class=\"vv-plan-card vv-reveal vv-reveal-delay-2\">\n<div class=\"vv-plan-tag\" style=\"background:rgba(0,184,230,0.2);color:var(--vv-red2);\">ONE TIME PAYMENT - 1 DEVICE ONLY<\/div>\n<div class=\"vv-plan-name\">6 Months<\/div>\n<div class=\"vv-plan-desc\">Semi-annual <strong>TiviMate premium<\/strong> access with stronger savings.<\/div>\n<div class=\"vv-plan-price-wrap\">\n<div class=\"vv-plan-price vv-price-red\"><span class=\"vv-price-currency\">$<\/span><span class=\"vv-price-num\" id=\"vvPrice6m\">44.99<\/span><span class=\"vv-badge-discount\" id=\"vvOff6m\" style=\"display:none\"><\/span><\/div>\n<div class=\"vv-price-was\" id=\"vvWas6m\" style=\"visibility:hidden\">Was: <s>$44.99<\/s><\/div>\n<div class=\"vv-price-screens-note\" id=\"vvNote6m\">1 device \u00b7 one-time payment<\/div>\n<\/p><\/div>\n<div class=\"vv-plan-divider\"><\/div>\n<ul class=\"vv-plan-feats\">\n<li><span class=\"vv-feat-check\">\u2713<\/span>Enjoy 88K movies &amp; series<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Browse 22,000+ live channels<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Play in FHD \/ Ultra HD<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Runs on phones, sticks, TVs<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>WhatsApp help when you need it<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>EPG schedule built in<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Smooth evening streaming<\/li>\n<li><span class=\"vv-feat-check\">\u2713<\/span>Edge CDN for faster starts<\/li>\n<\/ul>\n<p>        <a href=\"https:\/\/mediamatestudio.com\/prime\" class=\"vv-plan-btn vv-plan-btn-red\" id=\"vvOrder6m\" target=\"_blank\" rel=\"noopener\">Order Now<\/a><br \/>\n        <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" class=\"vv-plan-btn vv-plan-btn-outline\" id=\"vvTrial6m\" target=\"_blank\" rel=\"noopener\" style=\"margin-top:0.6rem\">Get Trial on WhatsApp<\/a>\n      <\/div>\n<div class=\"vv-plan-card vv-plan-vip vv-reveal vv-reveal-delay-3\">\n<div class=\"vv-plan-popular\">\u2b50 MOST POPULAR<\/div>\n<div class=\"vv-plan-tag vv-plan-tag-vip\">ONE TIME PAYMENT - 1 DEVICE ONLY<\/div>\n<div class=\"vv-plan-name vv-name-gold\">12 Months<\/div>\n<div class=\"vv-plan-desc\">Best-value annual <strong>TiviMate US<\/strong> plan \u2014 save the most.<\/div>\n<div class=\"vv-plan-price-wrap\">\n<div class=\"vv-plan-price vv-price-gold\"><span class=\"vv-price-currency\">$<\/span><span class=\"vv-price-num\" id=\"vvPrice1y\">74.99<\/span><span class=\"vv-badge-discount\" id=\"vvOff1y\" style=\"display:none\"><\/span><\/div>\n<div class=\"vv-price-was\" id=\"vvWas1y\" style=\"visibility:hidden\">Was: <s>$74.99<\/s><\/div>\n<div class=\"vv-price-screens-note\" id=\"vvNote1y\">1 device \u00b7 one-time payment<\/div>\n<\/p><\/div>\n<div class=\"vv-plan-divider\"><\/div>\n<ul class=\"vv-plan-feats\">\n<li><span class=\"vv-feat-check vv-check-gold\">\u2713<\/span>Unlock 88K movies &amp; series<\/li>\n<li><span class=\"vv-feat-check vv-check-gold\">\u2713<\/span>Tune into 22,000+ live channels<\/li>\n<li><span class=\"vv-feat-check vv-check-gold\">\u2713<\/span>Crystal FHD \/ Ultra HD options<\/li>\n<li><span class=\"vv-feat-check vv-check-gold\">\u2713<\/span>Use on Firestick, TV, and phones<\/li>\n<li><span class=\"vv-feat-check vv-check-gold\">\u2713<\/span>Priority help around the clock<\/li>\n<li><span class=\"vv-feat-check vv-check-gold\">\u2713<\/span>Detailed TV guide with EPG<\/li>\n<li><span class=\"vv-feat-check vv-check-gold\">\u2713<\/span>Consistent stable streaming<\/li>\n<li><span class=\"vv-feat-check vv-check-gold\">\u2713<\/span>Multi-region CDN network<\/li>\n<\/ul>\n<p>        <a href=\"https:\/\/mediamatestudio.com\/elite\" class=\"vv-plan-btn vv-plan-btn-gold\" id=\"vvOrder1y\" target=\"_blank\" rel=\"noopener\">Order Now<\/a><br \/>\n        <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" class=\"vv-plan-btn vv-plan-btn-outline\" id=\"vvTrial1y\" target=\"_blank\" rel=\"noopener\" style=\"margin-top:0.6rem\">Get Trial on WhatsApp<\/a>\n      <\/div>\n<\/p><\/div>\n<div class=\"vv-trust-pay\">\n<div class=\"vv-ssl-badge\" role=\"img\" aria-label=\"SSL secure payment\">\n        <svg class=\"vv-ssl-shield\" viewBox=\"0 0 48 56\" aria-hidden=\"true\" width=\"44\" height=\"51\">\n          <defs>\n            <linearGradient id=\"vvSslGrad\" x1=\"4\" y1=\"2\" x2=\"44\" y2=\"54\" gradientUnits=\"userSpaceOnUse\">\n              <stop stop-color=\"#A100FF\"><\/stop>\n              <stop offset=\"1\" stop-color=\"#4A5FFF\"><\/stop>\n            <\/linearGradient>\n          <\/defs>\n          <path fill=\"url(#vvSslGrad)\" d=\"M24 2L4 10v16c0 14.5 8.6 24.8 20 28 11.4-3.2 20-13.5 20-28V10L24 2z\"><\/path>\n          <g transform=\"translate(24 29.5)\">\n            <path d=\"M-5.8-3.2v-3.6a5.8 5.8 0 0 1 11.6 0v3.6\" fill=\"none\" stroke=\"#fff\" stroke-width=\"2.4\" stroke-linecap=\"round\"><\/path>\n            <rect x=\"-8.2\" y=\"-3.2\" width=\"16.4\" height=\"13.2\" rx=\"2.3\" fill=\"#fff\"><\/rect>\n            <circle cx=\"0\" cy=\"1.8\" r=\"1.55\" fill=\"#6b1fb8\"><\/circle>\n            <rect x=\"-0.7\" y=\"2.9\" width=\"1.4\" height=\"3.4\" rx=\"0.7\" fill=\"#6b1fb8\"><\/rect>\n          <\/g>\n        <\/svg><\/p>\n<div class=\"vv-ssl-copy\">\n          <strong>SSL Secure<\/strong><br \/>\n          <span>Guaranteed safe payment<\/span>\n        <\/div>\n<\/p><\/div>\n<div class=\"vv-pay-badge\" aria-label=\"Accepted payment methods\">\n        <img loading=\"lazy\" class=\"vv-pay-methods\" decoding=\"async\" src=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-pay-methods.svg\" alt=\"Visa, Mastercard, Amex, PayPal, Bitcoin and more\" width=\"525\" height=\"70\"><br \/>\n        <span class=\"vv-pay-icon\" title=\"Apple Pay\"><br \/>\n          <svg viewBox=\"0 0 52 24\" aria-hidden=\"true\" width=\"52\" height=\"24\">\n            <g transform=\"translate(1.2 1.6) scale(0.86)\">\n              <path fill=\"#ffffff\" d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"><\/path>\n            <\/g>\n            <text x=\"24.5\" y=\"16.5\" fill=\"#ffffff\" font-family=\"system-ui,-apple-system,BlinkMacSystemFont,sans-serif\" font-size=\"12\" font-weight=\"600\" letter-spacing=\"0.02em\">Pay<\/text>\n          <\/svg><br \/>\n        <\/span><br \/>\n        <span class=\"vv-pay-icon\" title=\"Google Pay\"><br \/>\n          <svg viewBox=\"0 0 52 24\" aria-hidden=\"true\" width=\"52\" height=\"24\">\n            <g transform=\"translate(1 1.2) scale(0.9)\">\n              <path fill=\"#4285F4\" d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"><\/path>\n              <path fill=\"#34A853\" d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"><\/path>\n              <path fill=\"#FBBC05\" d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"><\/path>\n              <path fill=\"#EA4335\" d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"><\/path>\n            <\/g>\n            <text x=\"26\" y=\"16.2\" fill=\"#e8eaed\" font-family=\"system-ui,sans-serif\" font-size=\"11\" font-weight=\"600\">Pay<\/text>\n          <\/svg><br \/>\n        <\/span>\n      <\/div>\n<p class=\"vv-payment-note\">One-time payment &nbsp;\u2022&nbsp; Free trial on WhatsApp &nbsp;\u2022&nbsp; TiviMate playlist delivered fast<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p><script>\nvar vvAccountCount = 1;\nvar vvBasePrices = {'1m': 12.99, '3m': 24.99, '6m': 44.99, '1y': 74.99};\nvar vvOrderUrls = {\n  '1m': 'https:\/\/mediamatestudio.com\/standard',\n  '3m': 'https:\/\/mediamatestudio.com\/pro',\n  '6m': 'https:\/\/mediamatestudio.com\/prime',\n  '1y': 'https:\/\/mediamatestudio.com\/elite'\n};\nvar vvBillingNote = {\n  '1m': 'one-time payment',\n  '3m': 'one-time payment',\n  '6m': 'one-time payment',\n  '1y': 'one-time payment'\n};\nvar vvWA = 'https:\/\/api.whatsapp.com\/send?phone=212772123261';<\/p>\n<p>function vvPriceFor(plan, devices) {\n  var base = vvBasePrices[plan];\n  var sale = base;\n  var list = base;\n  var off = '';\n  \/* Multi-device discount (25% \/ 50%) applies to 1-year plan only *\/\n  if (plan === '1y' && devices === 2) {\n    sale = Math.max(0.99, +(base - 5).toFixed(2));\n    list = +(sale \/ 0.75).toFixed(2);\n    off = '25% OFF';\n  } else if (plan === '1y' && devices === 3) {\n    sale = Math.max(0.99, +(base - 10).toFixed(2));\n    list = +(sale * 2).toFixed(2);\n    off = '50% OFF';\n  } else if (devices > 1) {\n    \/* Other plans: full price \u00d7 devices, no discount badge *\/\n    sale = +(base * devices).toFixed(2);\n    list = sale;\n    off = '';\n  }\n  return {sale: sale, list: list, off: off};\n}<\/p>\n<p>function vvAnimatePrice(el, newVal) {\n  el.classList.add('vv-price-animating');\n  setTimeout(function(){ el.textContent = newVal; }, 175);\n  setTimeout(function(){ el.classList.remove('vv-price-animating'); }, 350);\n}<\/p>\n<p>function vvUpdateAll() {\n  ['1m','3m','6m','1y'].forEach(function(p) {\n    var pr = vvPriceFor(p, vvAccountCount);\n    var el = document.getElementById('vvPrice' + p);\n    if (el) vvAnimatePrice(el, pr.sale.toFixed(2));\n    var was = document.getElementById('vvWas' + p);\n    if (was) {\n      if (pr.off) {\n        was.style.visibility = 'visible';\n        was.innerHTML = 'Was: <s>$' + pr.list.toFixed(2) + '<\/s>';\n      } else {\n        was.style.visibility = 'hidden';\n      }\n    }\n    var noteEl = document.getElementById('vvNote' + p);\n    if (noteEl) {\n      var acc = vvAccountCount + ' device' + (vvAccountCount > 1 ? 's' : '');\n      noteEl.textContent = acc + ' \u00b7 ' + vvBillingNote[p];\n    }\n    var orderEl = document.getElementById('vvOrder' + p);\n    if (orderEl) orderEl.href = vvOrderUrls[p];\n    var trialEl = document.getElementById('vvTrial' + p);\n    if (trialEl) {\n      trialEl.href = vvWA + '&text=' + encodeURIComponent(\n        'hi tivimate us'\n      );\n    }\n    var offEl = document.getElementById('vvOff' + p);\n    if (offEl) {\n      if (pr.off) { offEl.style.display = 'inline-block'; offEl.textContent = pr.off; }\n      else { offEl.style.display = 'none'; }\n    }\n    var card = el && el.closest ? el.closest('.vv-plan-card') : null;\n    var tag = card ? card.querySelector('.vv-plan-tag') : null;\n    if (tag) {\n      if (vvAccountCount === 1) {\n        tag.textContent = 'ONE TIME PAYMENT - 1 DEVICE ONLY';\n      } else if (p === '1y') {\n        tag.textContent = 'ONE TIME PAYMENT - ' + vvAccountCount + ' DEVICES';\n      } else {\n        tag.textContent = 'ONE TIME PAYMENT - ' + vvAccountCount + ' DEVICES';\n      }\n    }\n  });\n}<\/p>\n<p>function vvSetAccounts(btn, n) {\n  vvAccountCount = n;\n  document.querySelectorAll('.vv-screen-btn').forEach(function(b) { b.classList.remove('active'); });\n  btn.classList.add('active');\n  vvUpdateAll();\n}\nvvUpdateAll();\n<\/script><\/p>\n<p><!-- ============================================================\n  TIVIMATE US v2 \u2014 SECTION: LIVE TERMINAL\n============================================================ --><\/p>\n<section class=\"vv-wrap vv-section-alt\" id=\"vv-terminal\">\n<div class=\"vv-max\">\n<div class=\"vv-term-layout\">\n<div class=\"vv-term-copy\">\n<div class=\"vv-term-lottie\" aria-hidden=\"true\">\n          <dotlottie-wc\n            class=\"vv-lottie-lazy\"\n            data-src=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-term-icon.lottie\"\n            style=\"width: 130px; height: 130px\"\n            autoplay\n            loop\n          ><\/dotlottie-wc>\n        <\/div>\n<div class=\"vv-eyebrow\">Edge pipeline<\/div>\n<h2 class=\"vv-h2\">TiviMate US<br \/><span>Stream Ops<\/span><\/h2>\n<p class=\"vv-lead\" style=\"margin-top:0.9rem;\">A live look at how TiviMate US routes your TiviMate playlist for stable streaming. For instance, CDN handshakes, EPG sync, and channel pack delivery happen before you hit play.<\/p>\n<ul class=\"vv-term-bullets\">\n<li>Nearest CDN node selected automatically<\/li>\n<li>Playlist + Xtream session verified<\/li>\n<li>EPG guide refreshed for the TiviMate app<\/li>\n<\/ul><\/div>\n<div class=\"vv-term-window\" id=\"vvTermWin\" aria-label=\"Streaming operations terminal\">\n<div class=\"vv-term-bar\">\n<div class=\"vv-term-dots\"><span><\/span><span><\/span><span><\/span><\/div>\n<div class=\"vv-term-title\">tivimateus@edge:~ \/ stream-ops<\/div>\n<div class=\"vv-term-live\"><i><\/i> LIVE<\/div>\n<\/p><\/div>\n<div class=\"vv-term-scroll\">\n<pre class=\"vv-term-body\" id=\"vvTermBody\" aria-live=\"polite\"><\/pre>\n<\/p><\/div>\n<form class=\"vv-term-input-row\" id=\"vvTermForm\" autocomplete=\"off\">\n          <span class=\"vv-term-prompt\" aria-hidden=\"true\"><span class=\"vv-term-user\">tivimateus@edge<\/span>:<span class=\"vv-term-path\">~\/stream-ops<\/span> <span class=\"vv-term-dollar\">$<\/span><\/span><br \/>\n          <input class=\"vv-term-input\" id=\"vvTermInput\" type=\"text\" spellcheck=\"false\" autocomplete=\"off\" autocapitalize=\"off\" autocorrect=\"off\" aria-label=\"Type a terminal command\" placeholder=\"\"><br \/>\n        <\/form>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p><script>\n(function () {\n  var PATH_LINE = '<span class=\"t-info\">tivimateus@edge<\/span>:<span class=\"t-warn\">~\/stream-ops<\/span>';\n  var sequences = [\n    [\n      { html: '<span class=\"t-dim\"># TiviMate US \u00b7 stream edge session<\/span>' },\n      { html: PATH_LINE },\n      { html: '<span class=\"t-cmd\">$<\/span> companion auth --device firestick --region ca-east' },\n      { html: '<span class=\"t-ok\">\u2713<\/span> token issued \u00b7 session <span class=\"t-info\">tc_7f3a91<\/span>' },\n      { html: '<span class=\"t-cmd\">$<\/span> cdn select --latency-probe --prefer nearest' },\n      { html: '<span class=\"t-ok\">\u2713<\/span> node <span class=\"t-info\">yyz-edge-04<\/span> \u00b7 18ms \u00b7 0% packet loss' },\n      { html: '<span class=\"t-cmd\">$<\/span> playlist sync --player tivimate --format xtream' },\n      { html: '<span class=\"t-ok\">\u2713<\/span> live packs: <span class=\"t-warn\">25,000+<\/span> \u00b7 vod: <span class=\"t-warn\">88,000+<\/span>' },\n      { html: '<span class=\"t-cmd\">$<\/span> epg refresh --guide 7d --catchup on' },\n      { html: '<span class=\"t-ok\">\u2713<\/span> EPG mapped \u00b7 categories ready for TiviMate app' },\n      { html: '<span class=\"t-cmd\">$<\/span> stream open --quality FHD --anti-freeze' },\n      { html: '<span class=\"t-ok\">\u2713<\/span> handshake OK \u00b7 buffer prewarm 2.4s' },\n      { html: '<span class=\"t-info\">\u2192<\/span> status: <span class=\"t-ok\">STREAMING<\/span> \u00b7 uptime target 99.9%' },\n      { html: '<span class=\"t-dim\"># watching \u00b7 press \u25b6 in TiviMate<\/span>' }\n    ],\n    [\n      { html: '<span class=\"t-dim\"># health check \u00b7 edge heartbeat<\/span>' },\n      { html: PATH_LINE },\n      { html: '<span class=\"t-cmd\">$<\/span> companion probe --qos --bitrate-target fhd' },\n      { html: '<span class=\"t-ok\">\u2713<\/span> bitrate stable <span class=\"t-warn\">8.2 Mbps<\/span> \u00b7 jitter 2ms' },\n      { html: '<span class=\"t-cmd\">$<\/span> cdn failover --from yyz-edge-04 --to yul-edge-02' },\n      { html: '<span class=\"t-ok\">\u2713<\/span> switched \u00b7 RTT <span class=\"t-info\">21ms<\/span> \u00b7 resume seamless' },\n      { html: '<span class=\"t-cmd\">$<\/span> playlist validate --xtream --epg' },\n      { html: '<span class=\"t-ok\">\u2713<\/span> categories OK \u00b7 sports \/ cinema \/ news' },\n      { html: '<span class=\"t-cmd\">$<\/span> anti-freeze tune --buffer 2.4s --rebuffer off' },\n      { html: '<span class=\"t-ok\">\u2713<\/span> freeze guard armed \u00b7 peak-hour mode' },\n      { html: '<span class=\"t-info\">\u2192<\/span> status: <span class=\"t-ok\">HEALTHY<\/span> \u00b7 sessions active 1' }\n    ],\n    [\n      { html: '<span class=\"t-dim\"># renew path \u00b7 companion keep-alive<\/span>' },\n      { html: PATH_LINE },\n      { html: '<span class=\"t-cmd\">$<\/span> companion renew --session tc_7f3a91 --soft' },\n      { html: '<span class=\"t-ok\">\u2713<\/span> lease extended \u00b7 <span class=\"t-info\">+24h<\/span>' },\n      { html: '<span class=\"t-cmd\">$<\/span> epg pull --sources ca,us,eu --merge' },\n      { html: '<span class=\"t-ok\">\u2713<\/span> guide refreshed \u00b7 <span class=\"t-warn\">7-day<\/span> window' },\n      { html: '<span class=\"t-cmd\">$<\/span> vod index --new-releases --4k' },\n      { html: '<span class=\"t-ok\">\u2713<\/span> library sync \u00b7 <span class=\"t-warn\">88,000+<\/span> titles' },\n      { html: '<span class=\"t-cmd\">$<\/span> stream open --quality UHD --hdr auto' },\n      { html: '<span class=\"t-ok\">\u2713<\/span> UHD path ready \u00b7 Dolby where available' },\n      { html: '<span class=\"t-info\">\u2192<\/span> status: <span class=\"t-ok\">STREAMING<\/span> \u00b7 edge warm' }\n    ]\n  ];\n  var body = document.getElementById('vvTermBody');\n  var win = document.getElementById('vvTermWin');\n  var form = document.getElementById('vvTermForm');\n  var input = document.getElementById('vvTermInput');\n  var scroll = win ? win.querySelector('.vv-term-scroll') : null;\n  if (!body || !win || !form || !input) return;<\/p>\n<p>  var running = false;\n  var started = false;\n  var seqIdx = 0;\n  var buf = '';\n  var timer = null;\n  var MAX_BUF_CHARS = 1600;\n  var MAX_BUF_LINES = 16;\n  var NL = String.fromCharCode(10);<\/p>\n<p>  function sleep(ms) {\n    return new Promise(function (r) { timer = setTimeout(r, ms); });\n  }\n  function scrollFollow() {\n    if (!scroll) return;\n    \/* Top-down terminal: keep content at top when it fits.\n       Only follow the newest lines once content overflows. *\/\n    var overflow = scroll.scrollHeight > scroll.clientHeight + 2;\n    scroll.scrollTop = overflow ? scroll.scrollHeight : 0;\n  }\n  function esc(s) {\n    \/* no regex with \/ or & - WP stripslashes breaks \/ and wptexturize breaks & *\/\n    return String(s)\n      .split(String.fromCharCode(38)).join('&')\n      .split('<').join('<')\n      .split('>').join('>')\n      .split('\"').join('\"');\n  }\n  function stripCursor(html) {\n    return String(html).split('<span class=\"t-cursor\"><\/span>').join('');\n  }\n  function paint(extra) {\n    body.innerHTML = buf + (extra || '');\n    scrollFollow();\n  }\n  function trimBuf() {\n    var lines = buf.split(NL);\n    if (lines.length > MAX_BUF_LINES) {\n      buf = '<span class=\"t-dim\"># \u2026session continues<\/span>' + NL + lines.slice(-MAX_BUF_LINES).join(NL);\n    }\n    if (buf.length <= MAX_BUF_CHARS) return;\n    var cut = buf.indexOf(NL, Math.max(0, buf.length - MAX_BUF_CHARS));\n    if (cut < 0) cut = Math.max(0, buf.length - MAX_BUF_CHARS);\n    buf = '<span class=\"t-dim\"># \u2026session continues<\/span>' + NL + buf.slice(cut + 1);\n  }<\/p>\n<p>  async function typeLine(raw) {\n    var out = '';\n    var j = 0;\n    while (j < raw.length) {\n      if (raw[j] === '<') {\n        var end = raw.indexOf('>', j);\n        out += raw.slice(j, end + 1);\n        j = end + 1;\n        paint(out + '<span class=\"t-cursor\"><\/span>');\n        continue;\n      }\n      out += raw[j];\n      j++;\n      paint(out + '<span class=\"t-cursor\"><\/span>');\n      await sleep(raw[j - 1] === ' ' ? 7 : 14);\n    }\n    buf += out + NL;\n    trimBuf();\n    paint('<span class=\"t-cursor\"><\/span>');\n  }<\/p>\n<p>  async function runForever() {\n    if (running) return;\n    running = true;\n    paint('<span class=\"t-cursor\"><\/span>');\n    while (true) {\n      var lines = sequences[seqIdx % sequences.length];\n      seqIdx++;\n      for (var i = 0; i < lines.length; i++) {\n        await typeLine(lines[i].html);\n        await sleep(i === 0 ? 160 : 320);\n      }\n      buf += '<span class=\"t-dim\"># \u2500\u2500 loop \u00b7 next edge pass \u2500\u2500<\/span>' + NL;\n      trimBuf();\n      paint('<span class=\"t-cursor\"><\/span>');\n      await sleep(900);\n    }\n  }<\/p>\n<p>  \/* User can type anytime - auto stream-ops never pauses *\/\n  form.addEventListener('submit', function (e) {\n    e.preventDefault();\n    var cmd = String(input.value || '').trim();\n    input.value = '';\n    if (!cmd.length) {\n      input.focus({ preventScroll: true });\n      return;\n    }\n    buf = stripCursor(buf);\n    buf += PATH_LINE + NL;\n    buf += '<span class=\"t-cmd\">$<\/span> ' + esc(cmd) + NL;\n    buf += '<span class=\"t-dim\">(ok \u00b7 auto stream-ops continues)<\/span>' + NL;\n    trimBuf();\n    paint('<span class=\"t-cursor\"><\/span>');\n    input.focus({ preventScroll: true });\n  });<\/p>\n<p>  win.addEventListener('click', function (e) {\n    \/* Mobile: don't steal focus when tapping the terminal - that blocks page scroll *\/\n    if (window.matchMedia && window.matchMedia('(max-width: 900px)').matches) {\n      if (e.target === input || (e.target.closest && e.target.closest('.vv-term-input-row'))) {\n        input.focus({ preventScroll: true });\n      }\n      return;\n    }\n    if (e.target === input) return;\n    input.focus({ preventScroll: true });\n  });\n  \/* Allow vertical page scroll gestures that start on the terminal (mobile) *\/\n  win.addEventListener('touchstart', function () { \/* passive *\/ }, { passive: true });\n  if (scroll) {\n    scroll.addEventListener('touchstart', function () { \/* passive *\/ }, { passive: true });\n    scroll.addEventListener('touchmove', function () { \/* passive - page can scroll *\/ }, { passive: true });\n  }<\/p>\n<p>  function start() {\n    if (started) return;\n    started = true;\n    runForever();\n  }<\/p>\n<p>  if ('IntersectionObserver' in window) {\n    var io = new IntersectionObserver(function (entries) {\n      entries.forEach(function (e) {\n        if (e.isIntersecting) start();\n      });\n    }, { threshold: 0.12 });\n    io.observe(win);\n    \/* if already on-screen (hash jump), start immediately *\/\n    var r0 = win.getBoundingClientRect();\n    if (r0.top < (window.innerHeight || 800) &#038;&#038; r0.bottom > 0) start();\n  } else {\n    start();\n  }\n})();\n<\/script><\/p>\n<p><!-- ============================================================\n  TIVIMATE US v2 \u2014 SECTION 04: CHANNELS\n============================================================ --><\/p>\n<section class=\"vv-wrap vv-section\" id=\"vv-channels\">\n<div class=\"vv-max\">\n<div class=\"vv-ch-header\">\n<div>\n<div class=\"vv-eyebrow\">TiviMate Playlist Library<\/div>\n<h2 class=\"vv-h2\">TiviMate US<br \/><span>Every Genre.<\/span><\/h2>\n<p class=\"vv-lead\" style=\"margin-top:0.8rem;\">Your <strong>TiviMate playlist<\/strong> loads sports, cinema, series, news, and kids with stable streaming. In addition, categories match what you expect from a full <strong>TiviMate IPTV<\/strong> lineup, tuned for the <strong>TiviMate app<\/strong>.<\/p>\n<\/p><\/div>\n<p>      <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" class=\"vv-viewall\" rel=\"nofollow noopener\">ALL CHANNELS \u2192<\/a>\n    <\/div>\n<div class=\"vv-ch-grid\">\n<div class=\"vv-ch-card vv-reveal\">\n<div class=\"vv-ch-top\">\n<div class=\"vv-ch-icon\" style=\"background:rgba(0,184,230,0.12);\">\u26bd<\/div>\n<div class=\"vv-live\">LIVE<\/div>\n<\/p><\/div>\n<div class=\"vv-ch-name\">Sports 8K<\/div>\n<div class=\"vv-ch-count\">3,200+ channels<\/div>\n<div class=\"vv-ch-bar\">\n<div class=\"vv-ch-fill\" style=\"width:92%;background:var(--vv-red)\"><\/div>\n<\/div><\/div>\n<div class=\"vv-ch-card vv-reveal vv-reveal-delay-1\">\n<div class=\"vv-ch-top\">\n<div class=\"vv-ch-icon\" style=\"background:rgba(47,107,255,0.14);\">\ud83c\udfac<\/div>\n<div class=\"vv-live\">LIVE<\/div>\n<\/p><\/div>\n<div class=\"vv-ch-name\">Cinema 4K \/ 8K<\/div>\n<div class=\"vv-ch-count\">15,000+ movies<\/div>\n<div class=\"vv-ch-bar\">\n<div class=\"vv-ch-fill\" style=\"width:85%;background:var(--vv-orange)\"><\/div>\n<\/div><\/div>\n<div class=\"vv-ch-card vv-reveal vv-reveal-delay-2\">\n<div class=\"vv-ch-top\">\n<div class=\"vv-ch-icon\" style=\"background:rgba(139,92,246,0.12);\">\ud83d\udcfa<\/div>\n<\/p><\/div>\n<div class=\"vv-ch-name\">Series & TV<\/div>\n<div class=\"vv-ch-count\">65,000+ episodes<\/div>\n<div class=\"vv-ch-bar\">\n<div class=\"vv-ch-fill\" style=\"width:78%;background:#7c3aed\"><\/div>\n<\/div><\/div>\n<div class=\"vv-ch-card vv-reveal vv-reveal-delay-3\">\n<div class=\"vv-ch-top\">\n<div class=\"vv-ch-icon\" style=\"background:rgba(59,130,246,0.12);\">\ud83d\udcf0<\/div>\n<div class=\"vv-live\">LIVE<\/div>\n<\/p><\/div>\n<div class=\"vv-ch-name\">News 24\/7<\/div>\n<div class=\"vv-ch-count\">500+ news channels<\/div>\n<div class=\"vv-ch-bar\">\n<div class=\"vv-ch-fill\" style=\"width:65%;background:#3b82f6\"><\/div>\n<\/div><\/div>\n<div class=\"vv-ch-card vv-reveal\">\n<div class=\"vv-ch-top\">\n<div class=\"vv-ch-icon\" style=\"background:rgba(236,72,153,0.12);\">\ud83c\udfb5<\/div>\n<div class=\"vv-live\">LIVE<\/div>\n<\/p><\/div>\n<div class=\"vv-ch-name\">Music & Radio<\/div>\n<div class=\"vv-ch-count\">1,800+ stations<\/div>\n<div class=\"vv-ch-bar\">\n<div class=\"vv-ch-fill\" style=\"width:58%;background:var(--vv-red)\"><\/div>\n<\/div><\/div>\n<div class=\"vv-ch-card vv-reveal vv-reveal-delay-1\">\n<div class=\"vv-ch-top\">\n<div class=\"vv-ch-icon\" style=\"background:rgba(34,197,94,0.12);\">\ud83d\udc76<\/div>\n<div class=\"vv-live\">LIVE<\/div>\n<\/p><\/div>\n<div class=\"vv-ch-name\">Kids Zone<\/div>\n<div class=\"vv-ch-count\">400+ channels<\/div>\n<div class=\"vv-ch-bar\">\n<div class=\"vv-ch-fill\" style=\"width:42%;background:#22c55e\"><\/div>\n<\/div><\/div>\n<div class=\"vv-ch-card vv-reveal vv-reveal-delay-2\">\n<div class=\"vv-ch-top\">\n<div class=\"vv-ch-icon\" style=\"background:rgba(0,184,230,0.12);\">\ud83c\udf0d<\/div>\n<\/p><\/div>\n<div class=\"vv-ch-name\">International<\/div>\n<div class=\"vv-ch-count\">150+ countries<\/div>\n<div class=\"vv-ch-bar\">\n<div class=\"vv-ch-fill\" style=\"width:88%;background:var(--vv-red)\"><\/div>\n<\/div><\/div>\n<div class=\"vv-ch-card vv-reveal vv-reveal-delay-3\">\n<div class=\"vv-ch-top\">\n<div class=\"vv-ch-icon\" style=\"background:rgba(47,107,255,0.14);\">\ud83c\udfae<\/div>\n<div class=\"vv-live\">LIVE<\/div>\n<\/p><\/div>\n<div class=\"vv-ch-name\">Gaming & Esports<\/div>\n<div class=\"vv-ch-count\">200+ channels<\/div>\n<div class=\"vv-ch-bar\">\n<div class=\"vv-ch-fill\" style=\"width:35%;background:var(--vv-orange)\"><\/div>\n<\/div><\/div>\n<div class=\"vv-ch-card vv-reveal\">\n<div class=\"vv-ch-top\">\n<div class=\"vv-ch-icon\" style=\"background:rgba(245,158,11,0.14);\">\ud83d\udce1<\/div>\n<div class=\"vv-live\">LIVE<\/div>\n<\/p><\/div>\n<div class=\"vv-ch-name\">PPV & Events<\/div>\n<div class=\"vv-ch-count\">Live events feed<\/div>\n<div class=\"vv-ch-bar\">\n<div class=\"vv-ch-fill\" style=\"width:70%;background:#f59e0b\"><\/div>\n<\/div><\/div>\n<div class=\"vv-ch-card vv-reveal vv-reveal-delay-1\">\n<div class=\"vv-ch-top\">\n<div class=\"vv-ch-icon\" style=\"background:rgba(14,165,233,0.14);\">\u23ea<\/div>\n<\/p><\/div>\n<div class=\"vv-ch-name\">Catch-Up TV<\/div>\n<div class=\"vv-ch-count\">Up to 7-day replay<\/div>\n<div class=\"vv-ch-bar\">\n<div class=\"vv-ch-fill\" style=\"width:62%;background:#0ea5e9\"><\/div>\n<\/div><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p><script>\n\/* Scroll reveal init (shared across sections) *\/\n(function(){\n  if(window._vvRevealInit) return;\n  window._vvRevealInit = true;\n  var obs = new IntersectionObserver(function(entries){\n    entries.forEach(function(e){\n      if(e.isIntersecting){ e.target.classList.add('vv-in'); obs.unobserve(e.target); }\n    });\n  },{threshold:0.07});\n  function observe(){\n    document.querySelectorAll('.vv-reveal:not(.vv-in)').forEach(function(el){ obs.observe(el); });\n  }\n  observe();\n  \/* Re-run for dynamically added elements *\/\n  setInterval(observe, 800);\n})();\n<\/script><\/p>\n<p><!-- ============================================================\n  TIVIMATE US v2 \u2014 SECTION 05: FEATURES\n============================================================ --><\/p>\n<section class=\"vv-wrap vv-section\" id=\"vv-features\">\n<div class=\"vv-max\">\n<div class=\"vv-feat-header\">\n<div class=\"vv-eyebrow\">Why TiviMate US<\/div>\n<h2 class=\"vv-h2\">Built for <em>TiviMate US.<\/em><\/h2>\n<p class=\"vv-lead\">Everything in our <strong>TiviMate IPTV<\/strong> service is tuned for stable streaming in the <strong>TiviMate app<\/strong> \u2014 a clean playlist, premium channels, and setup that takes minutes. Furthermore, we provide our TiviMate US app <strong>exclusively free for our customers<\/strong>, with <strong>all features unlocked<\/strong>.<\/p>\n<\/p><\/div>\n<div class=\"vv-feat-grid\">\n<p>      <!-- Large feature card --><\/p>\n<div class=\"vv-feat-card vv-feat-large vv-reveal\">\n<div class=\"vv-feat-glow\" style=\"background:radial-gradient(circle, rgba(0,184,230,0.18) 0%, transparent 70%)\"><\/div>\n<div class=\"vv-feat-num\">01<\/div>\n<div class=\"vv-feat-icon-big\">\u26a1<\/div>\n<h3 class=\"vv-feat-title\">Stable Streaming with TiviMate US<\/h3>\n<p class=\"vv-feat-desc\">Our edge CDN pre-loads your <strong>TiviMate playlist<\/strong> before playback. As a result, you get stable streaming in FHD, 4K, and 8K \u2014 even at peak hours.<\/p>\n<div class=\"vv-feat-tag\">Core technology<\/div>\n<\/p><\/div>\n<p>      <!-- Regular cards --><\/p>\n<div class=\"vv-feat-card vv-reveal vv-reveal-delay-1\">\n<div class=\"vv-feat-num\">02<\/div>\n<div class=\"vv-feat-icon-big\">\ud83c\udf10<\/div>\n<h3 class=\"vv-feat-title\">Global CDN for TiviMate US<\/h3>\n<p class=\"vv-feat-desc\">Coverage spans 150+ countries with servers on 6 continents. Meanwhile, your <strong>TiviMate subscription<\/strong> routes to the nearest node so the <strong>TiviMate app<\/strong> stays snappy anywhere.<\/p>\n<\/p><\/div>\n<div class=\"vv-feat-card vv-reveal vv-reveal-delay-2\">\n<div class=\"vv-feat-num\">03<\/div>\n<div class=\"vv-feat-icon-big\">\ud83c\udfad<\/div>\n<h3 class=\"vv-feat-title\">TiviMate Premium Picture<\/h3>\n<p class=\"vv-feat-desc\">True Ultra HD and 8K options with Dolby Vision \/ Atmos on VIP. In other words, the picture quality people expect from a <strong>TiviMate premium<\/strong> lineup.<\/p>\n<\/p><\/div>\n<div class=\"vv-feat-card vv-reveal\">\n<div class=\"vv-feat-num\">04<\/div>\n<div class=\"vv-feat-icon-big\">\ud83d\udcc5<\/div>\n<h3 class=\"vv-feat-title\">EPG Inside TiviMate<\/h3>\n<p class=\"vv-feat-desc\">Besides live listings, you get catch-up where available \u2014 so your <strong>TiviMate player<\/strong> shows what\u2019s on now and what you missed.<\/p>\n<\/p><\/div>\n<div class=\"vv-feat-card vv-reveal vv-reveal-delay-1\">\n<div class=\"vv-feat-num\">05<\/div>\n<div class=\"vv-feat-icon-big\">\ud83d\udd12<\/div>\n<h3 class=\"vv-feat-title\">VPN + TiviMate Friendly<\/h3>\n<p class=\"vv-feat-desc\">Works with major VPNs alongside your <strong>TiviMate US<\/strong> login. In short, privacy stays yours while the playlist stays under your control.<\/p>\n<\/p><\/div>\n<p>      <!-- Large feature card \u2014 right bottom --><\/p>\n<div class=\"vv-feat-card vv-feat-large vv-reveal vv-reveal-delay-2\">\n<div class=\"vv-feat-glow\" style=\"background:radial-gradient(circle, rgba(34,197,94,0.1) 0%, transparent 70%)\"><\/div>\n<div class=\"vv-feat-num\">06<\/div>\n<div class=\"vv-feat-icon-big\">\ud83d\udcac<\/div>\n<h3 class=\"vv-feat-title\">24\/7 TiviMate US Setup Help<\/h3>\n<p class=\"vv-feat-desc\">Real humans on WhatsApp help with <strong>TiviMate Fire Stick<\/strong> installs, playlist load, Xtream login, and renewals. Similarly, renewals and troubleshooting stay available whenever you need them.<\/p>\n<p>        <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" class=\"vv-feat-link\" rel=\"nofollow noopener\">Contact us on WhatsApp \u2192<\/a>\n      <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p>\t\t\t\t<!-- ============================================================\n  TIVIMATE US v2 \u2014 SECTION 06: INTERNET SPEED TESTER\n  Interactive tool \u2014 helps users know if their connection\n  is good enough for SD \/ HD \/ FHD \/ 4K streaming\n============================================================ --><\/p>\n<section class=\"vv-wrap vv-section-alt\" id=\"vv-speedtest\">\n<div class=\"vv-max\">\n<div class=\"vv-speed-head\">\n<div>\n<div class=\"vv-eyebrow\">Connection Check<\/div>\n<h2 class=\"vv-h2\">Is Your Internet<br \/><span>TiviMate US Ready?<\/span><\/h2>\n<p class=\"vv-lead\" style=\"margin-top:0.7rem;\">Test your speed in the United States before you load a <strong>TiviMate playlist<\/strong> \u2014 see if your USA line is ready for stable streaming in SD, HD, FHD, or 4K <strong>TiviMate IPTV<\/strong>.<\/p>\n<p class=\"vv-lead vv-cdn-note\" style=\"margin-top:0.85rem;max-width:none;width:100%;opacity:0.88;\">We deliver streams with <strong>CDN technology<\/strong> (Content Delivery Network) \u2014 servers close to you, so channels load faster with less buffering. However, a <strong>CDN is better than a VPN<\/strong> for watching: VPNs add an extra tunnel that often slows your line, while a CDN shortens the path to the content. Consequently, you get smoother TiviMate playback without routing everything through a distant VPN.<\/p>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"vv-speed-wrap\">\n<p>      <!-- Left: world map + quality tiers --><\/p>\n<div class=\"vv-speed-tiers\">\n<style id=\"vv-speed-world-nobg\">.vv-speed-world,.vv-speed-world picture,.vv-speed-world img,.vv-footer-map,.vv-footer-map picture,.vv-footer-map img{background:transparent!important;box-shadow:none!important}<\/style>\n<div class=\"vv-speed-world\">\n          <picture><source type=\"image\/webp\" srcset=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-world-map-700-nobg.webp 700w, https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-world-map-900-nobg.webp 900w\" sizes=\"(max-width:900px) 92vw, 520px\"><img decoding=\"async\" src=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-world-map-nobg.png\" alt=\"Global TiviMate IPTV coverage map\" width=\"900\" height=\"347\" loading=\"lazy\">\n          <\/picture>\n        <\/div>\n<div class=\"vv-tiers-title\">Streaming Quality Guide<\/div>\n<div class=\"vv-tiers-list\">\n<div class=\"vv-tier\" id=\"vvTier1\">\n<div class=\"vv-tier-left\">\n<div class=\"vv-tier-badge\" style=\"background:rgba(0,184,230,0.15);color:var(--vv-red);\">SD<\/div>\n<div>\n<div class=\"vv-tier-name\">Standard Definition<\/div>\n<div class=\"vv-tier-speed\">3+ Mbps<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"vv-tier-indicator\" id=\"vvTi1\"><\/div>\n<\/p><\/div>\n<div class=\"vv-tier\" id=\"vvTier2\">\n<div class=\"vv-tier-left\">\n<div class=\"vv-tier-badge\" style=\"background:rgba(245,158,11,0.15);color:var(--vv-orange);\">HD<\/div>\n<div>\n<div class=\"vv-tier-name\">HD 720p<\/div>\n<div class=\"vv-tier-speed\">5+ Mbps<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"vv-tier-indicator\" id=\"vvTi2\"><\/div>\n<\/p><\/div>\n<div class=\"vv-tier\" id=\"vvTier3\">\n<div class=\"vv-tier-left\">\n<div class=\"vv-tier-badge\" style=\"background:rgba(59,130,246,0.15);color:#3b82f6;\">FHD<\/div>\n<div>\n<div class=\"vv-tier-name\">Full HD 1080p<\/div>\n<div class=\"vv-tier-speed\">10+ Mbps<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"vv-tier-indicator\" id=\"vvTi3\"><\/div>\n<\/p><\/div>\n<div class=\"vv-tier\" id=\"vvTier4\">\n<div class=\"vv-tier-left\">\n<div class=\"vv-tier-badge\" style=\"background:rgba(34,197,94,0.15);color:#22c55e;\">4K<\/div>\n<div>\n<div class=\"vv-tier-name\">Ultra HD 4K<\/div>\n<div class=\"vv-tier-speed\">25+ Mbps<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"vv-tier-indicator\" id=\"vvTi4\"><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>      <!-- Right: inlined LibreSpeed gauge (glass over page polygons \u2014 not iframe) --><\/p>\n<div class=\"vv-speed-tester\">\n<div class=\"vv-speed-frame-wrap\" id=\"vvSpeedMount\">\n<style id=\"tc-speed-inline\">\n  :root {\n    --line: rgba(255,255,255,0.1);\n    --cyan: #00E5FF;\n    --text: #f4f4f5;\n    --muted: #9aa3b5;\n  }\n  * { box-sizing: border-box; }<\/p>\n<p>  #vvSpeedPanel {\n    height: 100%;\n    min-height: 100%;\n    display: flex;\n    flex-direction: column;\n    justify-content: space-between;\n    \/* Transparent glass over page polygons (no backdrop-filter \u2014 it sampled black) *\/\n    background: rgba(8, 12, 24, 0.28);\n    border: 1px solid rgba(255,255,255,0.14);\n    border-radius: 16px;\n    padding: clamp(1rem, 2.2vh, 1.6rem) clamp(1rem, 2vw, 1.35rem);\n    overflow: hidden;\n    box-shadow:\n      inset 0 1px 0 rgba(255,255,255,.10),\n      0 18px 50px rgba(0,0,0,.18);\n    \/* Soft frost without trapping an opaque backdrop layer *\/\n    -webkit-backdrop-filter: blur(18px) saturate(1.35);\n    backdrop-filter: blur(18px) saturate(1.35);\n  }\n  .gauge-box {\n    position: relative;\n    width: min(380px, 92%);\n    margin: 0 auto;\n    flex: 1 1 auto;\n    min-height: 200px;\n    max-height: 340px;\n    height: auto;\n    overflow: hidden;\n  }\n  .gauge-box canvas {\n    display: block;\n    width: 100%;\n    height: 100%;\n  }\n  .readout-row {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) auto minmax(0, 1fr);\n    align-items: center;\n    gap: 0.45rem 0.65rem;\n    width: 100%;\n    flex: 0 0 auto;\n    margin: 0 0 0.15rem;\n    padding: 0.1rem 0 0.25rem;\n    z-index: 2;\n  }\n  .meta {\n    min-width: 0;\n    text-align: center;\n    pointer-events: none;\n  }\n  .meta-left { text-align: left; padding-left: 0.15rem; }\n  .meta-right { text-align: right; padding-right: 0.15rem; }\n  .meta .meta-l {\n    font-size: 0.52rem;\n    font-weight: 700;\n    letter-spacing: 0.14em;\n    text-transform: uppercase;\n    color: var(--muted);\n    line-height: 1.2;\n  }\n  .meta .meta-v {\n    margin-top: 0.22rem;\n    font-size: clamp(0.68rem, 1.8vw, 0.82rem);\n    font-weight: 700;\n    color: #fff;\n    line-height: 1.25;\n    word-break: break-word;\n  }\n  .meta-isp-row {\n    display: inline-flex !important;\n    align-items: center;\n    gap: 0.42rem;\n    max-width: 100%;\n  }\n  .meta-dot {\n    width: 0.55rem;\n    height: 0.55rem;\n    border-radius: 50%;\n    flex-shrink: 0;\n    background: #22c55e;\n    box-shadow:\n      0 0 0 2px rgba(34, 197, 94, 0.22),\n      0 0 10px rgba(34, 197, 94, 0.85),\n      0 0 18px rgba(34, 197, 94, 0.45);\n    animation: metaDotPulse 1.6s ease-in-out infinite;\n  }\n  .meta-isp-row.is-detecting .meta-dot {\n    background: #94a3b8;\n    box-shadow: 0 0 0 2px rgba(148, 163, 184, 0.2);\n    animation: none;\n  }\n  @keyframes metaDotPulse {\n    0%, 100% { opacity: 1; transform: scale(1); }\n    50% { opacity: 0.72; transform: scale(0.92); }\n  }\n  .readout {\n    position: relative;\n    flex: 0 0 auto;\n    text-align: center;\n    pointer-events: none;\n    margin: 0;\n    padding: 0;\n    z-index: 2;\n    min-width: 7.5rem;\n  }\n  .readout .num {\n    font-size: clamp(2.2rem, 8vw, 2.85rem);\n    font-weight: 700;\n    letter-spacing: -0.04em;\n    line-height: 1;\n    font-variant-numeric: tabular-nums;\n    color: #fff;\n  }\n  .readout .unit {\n    margin-top: .35rem;\n    font-size: .72rem;\n    font-weight: 700;\n    letter-spacing: .14em;\n    text-transform: uppercase;\n    color: var(--muted);\n  }\n  .readout .unit .phase { color: var(--cyan); }\n  @media (max-width: 900px) {\n    #vvSpeedPanel {\n      justify-content: flex-start;\n      gap: 0.35rem;\n      padding-top: clamp(0.75rem, 1.8vh, 1.1rem);\n    }\n    .readout-row {\n      gap: 0.3rem 0.4rem;\n      margin: 0 0 0.05rem;\n      padding: 0.05rem 0 0.15rem;\n    }\n    .meta .meta-l { font-size: 0.48rem; letter-spacing: 0.1em; }\n    .meta .meta-v { font-size: clamp(0.62rem, 2.8vw, 0.74rem); }\n    .readout { min-width: 6.2rem; }\n    .readout .num {\n      font-size: clamp(2rem, 9vw, 2.55rem);\n    }\n    .gauge-box {\n      min-height: 180px;\n      max-height: 280px;\n      margin-top: 0;\n    }\n  }\n  @media (max-width: 420px) {\n    .readout-row {\n      grid-template-columns: 1fr 1fr;\n      grid-template-areas:\n        \"speed speed\"\n        \"isp loc\";\n    }\n    .readout { grid-area: speed; min-width: 0; }\n    .meta-left { grid-area: isp; text-align: left; }\n    .meta-right { grid-area: loc; text-align: right; }\n  }\n  .metrics {\n    display: grid;\n    grid-template-columns: 1fr 1fr 1fr;\n    gap: 0;\n    margin: clamp(.7rem, 1.8vh, 1.15rem) 0;\n    border: 1px solid var(--line);\n    border-radius: 12px;\n    overflow: hidden;\n    background: rgba(255,255,255,.02);\n    flex: 0 0 auto;\n  }\n  .metric {\n    text-align: center;\n    padding: clamp(.75rem, 1.6vh, 1.05rem) .35rem;\n    border-right: 1px solid var(--line);\n  }\n  .metric:last-child { border-right: 0; }\n  .metric .l {\n    font-size: .58rem;\n    letter-spacing: .12em;\n    text-transform: uppercase;\n    color: var(--muted);\n    font-weight: 600;\n  }\n  .metric .v {\n    margin-top: .35rem;\n    font-size: 1.02rem;\n    font-weight: 700;\n    letter-spacing: -0.01em;\n    color: #fff;\n    font-variant-numeric: tabular-nums;\n    white-space: nowrap;\n  }\n  .btn {\n    display: block;\n    width: 100%;\n    max-width: 320px;\n    margin: 0 auto;\n    border: 1px solid transparent;\n    cursor: pointer;\n    border-radius: 8px;\n    padding: clamp(.9rem, 1.8vh, 1.1rem) 1.4rem;\n    font-weight: 700;\n    font-size: .82rem;\n    letter-spacing: .1em;\n    text-transform: uppercase;\n    color: #fff;\n    background: linear-gradient(135deg, #00E5FF 0%, #2F6BFF 55%, #7c5cff 100%);\n    box-shadow: 0 4px 20px rgba(0,184,230,.28);\n    flex: 0 0 auto;\n    transition: background .2s ease, color .2s ease, border-color .2s ease, box-shadow .2s ease, filter .2s ease;\n  }\n  .btn:disabled { opacity: .65; cursor: wait; }\n  .btn:hover:not(:disabled) {\n    background: #fff;\n    color: #0a0a12;\n    border-color: #fff;\n    box-shadow: 0 6px 22px rgba(255,255,255,.28);\n    filter: none;\n  }\n  .status {\n    min-height: 1.15em;\n    margin-top: .7rem;\n    text-align: center;\n    color: var(--muted);\n    font-size: .78rem;\n  }\n  .hint {\n    margin-top: .35rem;\n    text-align: center;\n    color: var(--muted);\n    font-size: .68rem;\n    opacity: .85;\n  }\n<\/style>\n<div id=\"vvSpeedPanel\">\n<div class=\"readout-row\">\n<div class=\"meta meta-left\">\n<div class=\"meta-l\">ISP<\/div>\n<div class=\"meta-v meta-isp-row is-detecting\">\n          <span class=\"meta-dot\" aria-hidden=\"true\"><\/span><br \/>\n          <span id=\"isp\">Detecting\u2026<\/span>\n        <\/div>\n<\/p><\/div>\n<div class=\"readout\">\n<div class=\"num\" id=\"num\">0.00<\/div>\n<div class=\"unit\"><span class=\"phase\" id=\"phase\">Ready<\/span> \u00b7 Mbps<\/div>\n<\/p><\/div>\n<div class=\"meta meta-right\">\n<div class=\"meta-l\">Location<\/div>\n<div class=\"meta-v\" id=\"loc\">Detecting\u2026<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"gauge-box\">\n      <canvas id=\"gauge\" width=\"640\" height=\"380\" aria-hidden=\"true\"><\/canvas>\n    <\/div>\n<div class=\"metrics\">\n<div class=\"metric\">\n<div class=\"l\">Download<\/div>\n<div class=\"v\" id=\"down\">\u2014<\/div>\n<\/div>\n<div class=\"metric\">\n<div class=\"l\">Upload<\/div>\n<div class=\"v\" id=\"up\">\u2014<\/div>\n<\/div>\n<div class=\"metric\">\n<div class=\"l\">Ping<\/div>\n<div class=\"v\" id=\"ping\">\u2014<\/div>\n<\/div><\/div>\n<p>    <button class=\"btn\" id=\"btn\" type=\"button\">Start Test<\/button><\/p>\n<div class=\"status\" id=\"status\"><\/div>\n<div class=\"hint\">LibreSpeed \u00b7 TiviMate streaming readiness<\/div>\n<\/p><\/div>\n<p><script>\n(function () {\n  'use strict';<\/p>\n<p>  \/* ---- Speedtest.net-style log scale ---- *\/\n  var TICKS = [0, 1, 5, 10, 25, 50, 75, 100, 150, 200, 300, 500, 750, 1000];\n  var MAX_SPEED = 1000;\n  var START_ANG = Math.PI;       \/\/ left\n  var SWEEP = Math.PI;           \/\/ half circle \u2192 right\n  var busy = false;<\/p>\n<p>  \/* Smooth needle state (critically-damped spring feel) *\/\n  var display = 0;\n  var target = 0;\n  var velocity = 0;\n  var raf = 0;\n  var lastTs = 0;\n  var shakeBase = null;\n  var shakeRaf = 0;\n  var shakeT0 = 0;<\/p>\n<p>  var canvas = document.getElementById('gauge');\n  var ctx = canvas.getContext('2d');\n  var dpr = Math.min(2, window.devicePixelRatio || 1);<\/p>\n<p>  function clamp(v, a, b) {\n    v = +v || 0;\n    if (v < a) return a;\n    if (v > b) return b;\n    return v;\n  }\n  function fmt(v) {\n    v = clamp(v, 0, 3000);\n    if (v >= 100) return v.toFixed(0);\n    if (v >= 10) return v.toFixed(1);\n    return v.toFixed(2);\n  }\n  function median(arr) {\n    if (!arr.length) return 0;\n    var a = arr.slice().sort(function (x, y) { return x - y; });\n    var m = Math.floor(a.length \/ 2);\n    return a.length % 2 ? a[m] : (a[m - 1] + a[m]) \/ 2;\n  }\n  \/* LibreSpeed same-origin backends (self-hosted on this domain) *\/\n  var LS_BASE = 'https:\/\/tivimate.us\/speedtest\/backend';\n  function lsGarbage(mb) {\n    \/\/ LibreSpeed: ckSize = number of 1 MiB chunks\n    var n = Math.max(1, Math.min(1024, Math.round(+mb || 1)));\n    return LS_BASE + '\/garbage.php?ckSize=' + n + '&r=' + Math.random().toString(36).slice(2);\n  }\n  function lsEmpty() {\n    return LS_BASE + '\/empty.php?r=' + Math.random().toString(36).slice(2);\n  }\n  function lsPingUrl() {\n    return LS_BASE + '\/empty.php?r=' + Math.random().toString(36).slice(2);\n  }<\/p>\n<p>  \/* Map Mbps \u2192 0..1 on log-ish curve (Speedtest-like) *\/\n  function speedToT(mbps) {\n    mbps = clamp(mbps, 0, MAX_SPEED);\n    if (mbps <= 0) return 0;\n    \/\/ Piecewise log between tick marks for even visual spacing\n    for (var i = 0; i < TICKS.length - 1; i++) {\n      if (mbps <= TICKS[i + 1]) {\n        var lo = TICKS[i], hi = TICKS[i + 1];\n        var local = (mbps - lo) \/ (hi - lo);\n        return (i + local) \/ (TICKS.length - 1);\n      }\n    }\n    return 1;\n  }\n  function tToAngle(t) {\n    return START_ANG + SWEEP * clamp(t, 0, 1);\n  }\n\n  \/* Color along the scale - cyan \u2192 blue \u2192 purple \u2192 magenta as speed rises *\/\n  function colorAtT(t) {\n    t = clamp(t, 0, 1);\n    var stops = [\n      { t: 0,    c: [0, 229, 255] },\n      { t: 0.25, c: [47, 107, 255] },\n      { t: 0.5,  c: [124, 92, 255] },\n      { t: 0.75, c: [168, 85, 247] },\n      { t: 1,    c: [255, 107, 203] }\n    ];\n    for (var i = 0; i < stops.length - 1; i++) {\n      if (t <= stops[i + 1].t) {\n        var u = (t - stops[i].t) \/ (stops[i + 1].t - stops[i].t);\n        var a = stops[i].c, b = stops[i + 1].c;\n        return 'rgb(' +\n          Math.round(a[0] + (b[0] - a[0]) * u) + ',' +\n          Math.round(a[1] + (b[1] - a[1]) * u) + ',' +\n          Math.round(a[2] + (b[2] - a[2]) * u) + ')';\n      }\n    }\n    return 'rgb(255,107,203)';\n  }\n\n  function sizeCanvas() {\n    var box = canvas.parentElement.getBoundingClientRect();\n    var w = Math.max(280, Math.floor(box.width));\n    var h = Math.max(170, Math.floor(box.height));\n    dpr = Math.min(2, window.devicePixelRatio || 1);\n    canvas.width = Math.floor(w * dpr);\n    canvas.height = Math.floor(h * dpr);\n    canvas.style.width = w + 'px';\n    canvas.style.height = h + 'px';\n    ctx.setTransform(dpr, 0, 0, dpr, 0, 0);\n    draw(display);\n  }\n\n  function draw(mbps) {\n    var W = canvas.width \/ dpr;\n    var H = canvas.height \/ dpr;\n    ctx.clearRect(0, 0, W, H);\n\n    var cx = W \/ 2;\n    var cy = H * 0.88;\n    var R = Math.min(W * 0.40, H * 0.72);\n    var trackW = Math.max(10, R * 0.09);\n    var t = speedToT(mbps);\n    var ang = tToAngle(t);\n\n    \/\/ Track (background arc)\n    ctx.beginPath();\n    ctx.arc(cx, cy, R, START_ANG, START_ANG + SWEEP, false);\n    ctx.strokeStyle = '#1a2336';\n    ctx.lineWidth = trackW;\n    ctx.lineCap = 'round';\n    ctx.stroke();\n\n    \/\/ Progress arc - segmented gradient that shifts with speed position\n    if (t > 0.001) {\n      var segs = Math.max(24, Math.floor(t * 72));\n      ctx.lineWidth = trackW;\n      ctx.lineCap = 'butt';\n      for (var s = 0; s < segs; s++) {\n        var t0 = (s \/ segs) * t;\n        var t1 = ((s + 1) \/ segs) * t;\n        var a0 = tToAngle(t0);\n        var a1 = tToAngle(t1);\n        ctx.beginPath();\n        ctx.arc(cx, cy, R, a0, a1, false);\n        ctx.strokeStyle = colorAtT(t1);\n        ctx.stroke();\n      }\n      \/\/ Round tip cap in tip color\n      ctx.beginPath();\n      ctx.arc(cx, cy, R, Math.max(START_ANG, ang - 0.04), ang, false);\n      ctx.strokeStyle = colorAtT(t);\n      ctx.lineCap = 'round';\n      ctx.lineWidth = trackW;\n      ctx.stroke();\n    }\n\n    \/\/ Tick marks + labels\n    ctx.font = '600 ' + Math.max(9, R * 0.085) + 'px Manrope, system-ui, sans-serif';\n    ctx.textAlign = 'center';\n    ctx.textBaseline = 'middle';\n    for (var i = 0; i < TICKS.length; i++) {\n      var tt = i \/ (TICKS.length - 1);\n      var a = tToAngle(tt);\n      var cos = Math.cos(a), sin = Math.sin(a);\n      var inner = R - trackW * 0.85;\n      var outer = R + trackW * 0.55;\n      var major = (TICKS[i] === 0 || TICKS[i] === 10 || TICKS[i] === 50 ||\n                   TICKS[i] === 100 || TICKS[i] === 500 || TICKS[i] === 1000);\n      ctx.beginPath();\n      ctx.moveTo(cx + cos * inner, cy + sin * inner);\n      ctx.lineTo(cx + cos * (major ? outer : inner + (outer - inner) * 0.55),\n                 cy + sin * (major ? outer : inner + (outer - inner) * 0.55));\n      ctx.strokeStyle = major ? 'rgba(255,255,255,0.35)' : 'rgba(255,255,255,0.14)';\n      ctx.lineWidth = major ? 1.5 : 1;\n      ctx.lineCap = 'butt';\n      ctx.stroke();\n\n      if (major) {\n        var lx = cx + cos * (R + trackW * 1.15);\n        var ly = cy + sin * (R + trackW * 1.15);\n        ctx.fillStyle = 'rgba(154,163,181,0.9)';\n        ctx.fillText(String(TICKS[i]), lx, ly);\n      }\n    }\n\n    \/\/ Needle - color matches tip of gradient\n    var needleLen = R - trackW * 0.2;\n    var tipX = cx + Math.cos(ang) * needleLen;\n    var tipY = cy + Math.sin(ang) * needleLen;\n    var nx = Math.cos(ang + Math.PI \/ 2);\n    var ny = Math.sin(ang + Math.PI \/ 2);\n    var base = Math.max(4, R * 0.035);\n    var tipColor = colorAtT(t);\n\n    ctx.beginPath();\n    ctx.moveTo(tipX, tipY);\n    ctx.lineTo(cx + nx * base, cy + ny * base);\n    ctx.lineTo(cx - nx * base, cy - ny * base);\n    ctx.closePath();\n    var nGrad = ctx.createLinearGradient(cx, cy, tipX, tipY);\n    nGrad.addColorStop(0, '#2F6BFF');\n    nGrad.addColorStop(1, tipColor);\n    ctx.fillStyle = nGrad;\n    ctx.fill();\n\n    ctx.beginPath();\n    ctx.arc(tipX, tipY, Math.max(2.5, R * 0.028), 0, Math.PI * 2);\n    ctx.fillStyle = tipColor;\n    ctx.fill();\n\n    \/\/ Hub\n    ctx.beginPath();\n    ctx.arc(cx, cy, Math.max(8, R * 0.08), 0, Math.PI * 2);\n    ctx.fillStyle = '#0d1424';\n    ctx.fill();\n    ctx.beginPath();\n    ctx.arc(cx, cy, Math.max(5, R * 0.05), 0, Math.PI * 2);\n    var hGrad = ctx.createRadialGradient(cx, cy, 0, cx, cy, Math.max(5, R * 0.05));\n    hGrad.addColorStop(0, tipColor);\n    hGrad.addColorStop(1, '#2F6BFF');\n    ctx.fillStyle = hGrad;\n    ctx.fill();\n  }\n\n  \/* Critically-damped spring toward target - Speedtest-smooth *\/\n  function tick(now) {\n    if (!lastTs) lastTs = now;\n    var dt = Math.min(0.033, (now - lastTs) \/ 1000);\n    lastTs = now;\n\n    var stiffness = shakeBase != null ? 95 : 38;\n    var damping = shakeBase != null ? 7 : 12;\n    var force = (target - display) * stiffness - velocity * damping;\n    velocity += force * dt;\n    display += velocity * dt;\n\n    \/\/ Keep spring alive while idling\/shaking at real speed\n    if (shakeBase == null &#038;&#038;\n        Math.abs(target - display) < 0.02 &#038;&#038; Math.abs(velocity) < 0.05) {\n      display = target;\n      velocity = 0;\n      draw(display);\n      document.getElementById('num').textContent = fmt(display);\n      raf = 0;\n      lastTs = 0;\n      return;\n    }\n    draw(display);\n    document.getElementById('num').textContent = fmt(\n      shakeBase != null ? shakeBase : display\n    );\n    raf = requestAnimationFrame(tick);\n  }\n\n  function ensureTick() {\n    if (!raf) {\n      lastTs = 0;\n      raf = requestAnimationFrame(tick);\n    }\n  }\n\n  function setSpeed(mbps, immediate) {\n    target = clamp(mbps, 0, MAX_SPEED);\n    if (immediate) {\n      display = target;\n      velocity = 0;\n      if (raf) cancelAnimationFrame(raf);\n      raf = 0;\n      lastTs = 0;\n      draw(display);\n      document.getElementById('num').textContent = fmt(display);\n      return;\n    }\n    ensureTick();\n  }\n\n  function waitSettled(timeoutMs) {\n    return new Promise(function (resolve) {\n      var start = performance.now();\n      (function check() {\n        if ((Math.abs(target - display) < 0.5 &#038;&#038; Math.abs(velocity) < 0.8) ||\n            performance.now() - start > (timeoutMs || 2500)) {\n          resolve();\n          return;\n        }\n        requestAnimationFrame(check);\n      })();\n    });\n  }<\/p>\n<p>  function stopNeedleShake() {\n    shakeBase = null;\n    if (shakeRaf) cancelAnimationFrame(shakeRaf);\n    shakeRaf = 0;\n  }<\/p>\n<p>  \/* Strong idle tremor around the measured speed *\/\n  function startNeedleShake(mbps) {\n    stopNeedleShake();\n    shakeBase = clamp(mbps, 0, MAX_SPEED);\n    target = shakeBase;\n    shakeT0 = performance.now();\n    ensureTick();\n    (function shake(now) {\n      if (shakeBase == null) return;\n      var t = (now - shakeT0) \/ 1000;\n      \/\/ Much stronger tach quiver at the real reading\n      var amp = Math.max(5.5, Math.min(22, shakeBase * 0.06 + 4.5));\n      var wobble =\n        Math.sin(t * 16.8) * amp * 0.62 +\n        Math.sin(t * 27.2 + 1.15) * amp * 0.38 +\n        Math.sin(t * 9.4 + 0.35) * amp * 0.3 +\n        Math.sin(t * 35.5 + 0.8) * amp * 0.2 +\n        Math.sin(t * 48.0 + 1.6) * amp * 0.12;\n      target = clamp(shakeBase + wobble, 0, MAX_SPEED);\n      ensureTick();\n      shakeRaf = requestAnimationFrame(shake);\n    })(shakeT0);\n  }<\/p>\n<p>  \/* Warm LibreSpeed backends before measuring *\/\n  async function warmupBackend() {\n    try {\n      var ctrl = new AbortController();\n      var to = setTimeout(function () { ctrl.abort(); }, 4000);\n      await fetch(lsEmpty(), { cache: 'no-store', credentials: 'omit', signal: ctrl.signal });\n      clearTimeout(to);\n    } catch (e) {}\n  }<\/p>\n<p>  \/** Quick ignition blip - needle moves the moment loading finishes *\/\n  async function ignitionKick() {\n    stopNeedleShake();\n    var kick = 48;\n    var t0 = performance.now();\n    var dur = 420;\n    await new Promise(function (resolve) {\n      (function step(now) {\n        var p = Math.min(1, (now - t0) \/ dur);\n        var e = 1 - Math.pow(1 - p, 2);\n        display = kick * e;\n        target = display;\n        velocity = 0;\n        draw(display);\n        document.getElementById('num').textContent = fmt(display);\n        if (p < 1) requestAnimationFrame(step);\n        else resolve();\n      })(t0);\n    });\n  }\n\n  \/**\n   * After load\/measure: animate 0 \u2192 1000 Mbps \u2192 real speed.\n   *\/\n  async function revToRealSpeed(mbps) {\n    stopNeedleShake();\n    mbps = clamp(mbps, 0, MAX_SPEED);\n    if (raf) cancelAnimationFrame(raf);\n    raf = 0;\n    lastTs = 0;\n    velocity = 0;\n\n    \/\/ Always start the show from a hard zero\n    display = 0;\n    target = 0;\n    draw(0);\n    document.getElementById('num').textContent = fmt(0);\n\n    var peak = MAX_SPEED; \/\/ full gauge: 1000 Mbps\n    var upMs = 980;\n    var holdMs = 160;\n    var settleMs = 920;\n    var t0 = performance.now();\n\n    \/\/ 0 \u2192 1000 Mbps\n    await new Promise(function (resolve) {\n      (function step(now) {\n        var p = Math.min(1, (now - t0) \/ upMs);\n        var e = 1 - Math.pow(1 - p, 3);\n        display = peak * e;\n        target = display;\n        velocity = 0;\n        draw(display);\n        document.getElementById('num').textContent = fmt(display);\n        if (p < 1) requestAnimationFrame(step);\n        else resolve();\n      })(t0);\n    });\n\n    display = peak;\n    target = peak;\n    draw(peak);\n    document.getElementById('num').textContent = fmt(peak);\n    await new Promise(function (r) { setTimeout(r, holdMs); });\n\n    \/\/ 1000 \u2192 real measured speed\n    var t1 = performance.now();\n    var from = display;\n    await new Promise(function (resolve) {\n      (function step(now) {\n        var p = Math.min(1, (now - t1) \/ settleMs);\n        var e = p < 0.5 ? 2 * p * p : 1 - Math.pow(-2 * p + 2, 2) \/ 2;\n        display = from + (mbps - from) * e;\n        target = display;\n        velocity = 0;\n        draw(display);\n        document.getElementById('num').textContent = fmt(display);\n        if (p < 1) requestAnimationFrame(step);\n        else resolve();\n      })(t1);\n    });\n\n    display = mbps;\n    target = mbps;\n    velocity = 0;\n    draw(mbps);\n    document.getElementById('num').textContent = fmt(mbps);\n  }\n\n  \/* ---- Measurement (LibreSpeed PHP backends) - keep short for UX ---- *\/\n  async function measurePing() {\n    var samples = [];\n    \/\/ 3 samples max - high RTT makes 6 round-trips feel endless\n    for (var i = 0; i < 3; i++) {\n      var t0 = performance.now();\n      try {\n        var ctrl = new AbortController();\n        var to = setTimeout(function () { ctrl.abort(); }, 2500);\n        var res = await fetch(lsPingUrl(), { cache: 'no-store', credentials: 'omit', signal: ctrl.signal });\n        clearTimeout(to);\n        await res.arrayBuffer();\n        samples.push(performance.now() - t0);\n      } catch (e) {}\n    }\n    if (!samples.length) return 0;\n    samples.sort(function (a, b) { return a - b; });\n    return Math.round(median(samples));\n  }\n\n  function percentile(arr, p) {\n    if (!arr.length) return 0;\n    var a = arr.slice().sort(function (x, y) { return x - y; });\n    var i = Math.min(a.length - 1, Math.max(0, Math.floor(a.length * p)));\n    return a[i];\n  }\n  function bestMbps(samples, fallback) {\n    var fb = fallback || 0;\n    if (!samples.length) return clamp(fb, 0, 3000);\n    var late = samples.slice(Math.floor(samples.length * 0.35));\n    if (late.length < 2) late = samples;\n    var p90 = percentile(late, 0.9);\n    var p75 = percentile(late, 0.75);\n    var top = late.slice().sort(function (x, y) { return y - x; }).slice(0, Math.max(2, Math.ceil(late.length * 0.4)));\n    var topAvg = top.reduce(function (s, v) { return s + v; }, 0) \/ top.length;\n    return clamp(Math.max(p90, p75, topAvg, fb), 0, 3000);\n  }\n\n  async function measureDown(ms, onTick, highLatency) {\n    try {\n      var warm = await fetch(lsGarbage(highLatency ? 1 : 2), { cache: 'no-store', credentials: 'omit' });\n      await warm.arrayBuffer();\n    } catch (e) {}\n\n    var total = 0;\n    var samples = [];\n    var tStart = performance.now();\n    var end = tStart + ms;\n    var lastTick = 0;\n\n    async function oneGet(mb) {\n      var t0 = performance.now();\n      var ctrl = new AbortController();\n      var to = setTimeout(function () { ctrl.abort(); }, Math.max(4000, ms + 1500));\n      var res = await fetch(lsGarbage(mb), { cache: 'no-store', credentials: 'omit', signal: ctrl.signal });\n      clearTimeout(to);\n      if (!res.ok) throw new Error('down ' + res.status);\n      var buf = await res.arrayBuffer();\n      var t1 = performance.now();\n      var n = buf.byteLength || 0;\n      var sec = Math.max(0.05, (t1 - t0) \/ 1000);\n      return { n: n, mbps: clamp((n * 8) \/ sec \/ 1e6, 0, 3000) };\n    }\n\n    while (performance.now() < end) {\n      var left = end - performance.now();\n      if (left < 200) break;\n      \/\/ Smaller chunks + fewer parallels when RTT is bad (Hostinger far from user)\n      var mb = highLatency ? (left > 1800 ? 2 : 1) : (left > 2500 ? 4 : left > 1200 ? 2 : 1);\n      var parallel = highLatency ? 2 : (left > 1500 ? 3 : 2);\n      var jobs = [];\n      for (var i = 0; i < parallel; i++) jobs.push(oneGet(mb).catch(function () { return null; }));\n      var results = await Promise.all(jobs);\n      var sumRate = 0, nOk = 0;\n      for (var j = 0; j < results.length; j++) {\n        var r = results[j];\n        if (!r || !r.n) continue;\n        total += r.n;\n        samples.push(r.mbps);\n        sumRate += r.mbps;\n        nOk++;\n      }\n      if (nOk) samples.push(sumRate);\n      var now = performance.now();\n      if (onTick &#038;&#038; now - lastTick > 100) {\n        lastTick = now;\n        var elapsed = Math.max(0.3, (now - tStart) \/ 1000);\n        onTick(bestMbps(samples, (total * 8) \/ elapsed \/ 1e6));\n      }\n      \/\/ Early exit once we have a stable enough sample\n      if (samples.length >= 4 && (now - tStart) > Math.min(2200, ms * 0.55)) break;\n    }<\/p>\n<p>    var elapsed = Math.max(0.3, (performance.now() - tStart) \/ 1000);\n    var overall = total > 40000 ? clamp((total * 8) \/ elapsed \/ 1e6, 0, 3000) : 0;\n    var result = bestMbps(samples, overall);\n    if (result < 0.5) {\n      try {\n        var t0 = performance.now();\n        var res = await fetch(lsGarbage(2), { cache: 'no-store', credentials: 'omit' });\n        var buf = await res.arrayBuffer();\n        var sec = Math.max(0.05, (performance.now() - t0) \/ 1000);\n        result = clamp((buf.byteLength * 8) \/ sec \/ 1e6, 0, 3000);\n      } catch (e) {}\n    }\n    return result;\n  }\n\n  async function measureUp(ms, onTick, highLatency) {\n    try {\n      await fetch(lsEmpty(), {\n        method: 'POST', body: new Uint8Array(32 * 1024),\n        cache: 'no-store', credentials: 'omit'\n      });\n    } catch (e) {}\n\n    var chunk = new Uint8Array(highLatency ? 256 * 1024 : 384 * 1024);\n    var total = 0;\n    var samples = [];\n    var tStart = performance.now();\n    var end = tStart + ms;\n    var lastTick = 0;\n\n    async function onePost() {\n      var t0 = performance.now();\n      var ctrl = new AbortController();\n      var to = setTimeout(function () { ctrl.abort(); }, Math.max(4000, ms + 1500));\n      await fetch(lsEmpty(), {\n        method: 'POST', body: chunk, cache: 'no-store', credentials: 'omit', signal: ctrl.signal\n      });\n      clearTimeout(to);\n      var sec = Math.max(0.05, (performance.now() - t0) \/ 1000);\n      return { n: chunk.byteLength, mbps: clamp((chunk.byteLength * 8) \/ sec \/ 1e6, 0, 3000) };\n    }\n\n    while (performance.now() < end) {\n      var left = end - performance.now();\n      if (left < 180) break;\n      var parallel = highLatency ? 2 : 2;\n      var jobs = [];\n      for (var i = 0; i < parallel; i++) jobs.push(onePost().catch(function () { return null; }));\n      var results = await Promise.all(jobs);\n      var sumRate = 0, nOk = 0;\n      for (var j = 0; j < results.length; j++) {\n        var r = results[j];\n        if (!r) continue;\n        total += r.n;\n        samples.push(r.mbps);\n        sumRate += r.mbps;\n        nOk++;\n      }\n      if (nOk) samples.push(sumRate);\n      var now = performance.now();\n      if (onTick &#038;&#038; now - lastTick > 100) {\n        lastTick = now;\n        var elapsed = Math.max(0.3, (now - tStart) \/ 1000);\n        onTick(bestMbps(samples, (total * 8) \/ elapsed \/ 1e6));\n      }\n      if (samples.length >= 3 && (now - tStart) > Math.min(1600, ms * 0.55)) break;\n    }<\/p>\n<p>    var elapsed = Math.max(0.3, (performance.now() - tStart) \/ 1000);\n    var overall = total > 30000 ? clamp((total * 8) \/ elapsed \/ 1e6, 0, 3000) : 0;\n    return bestMbps(samples, overall);\n  }<\/p>\n<p>  function notify(down) {\n    try {\n      window.postMessage({ type: 'tc-speed-done', down: down }, '*');\n      if (window.parent && window.parent !== window) {\n        window.parent.postMessage({ type: 'tc-speed-done', down: down }, '*');\n      }\n    } catch (e) {}\n  }<\/p>\n<p>  function setMeta(isp, loc) {\n    var ispEl = document.getElementById('isp');\n    var locEl = document.getElementById('loc');\n    var row = ispEl ? ispEl.closest('.meta-isp-row') : null;\n    var text = isp || '-';\n    if (ispEl) ispEl.textContent = text;\n    if (locEl) locEl.textContent = loc || '-';\n    if (row) {\n      var detecting = !isp || isp === 'Detecting\u2026' || isp === '-';\n      row.classList.toggle('is-detecting', detecting);\n    }\n  }<\/p>\n<p>  async function loadGeoInfo() {\n    setMeta('Detecting\u2026', 'Detecting\u2026');\n    try {\n      var res = await fetch('https:\/\/api.ip.sb\/geoip', {\n        cache: 'no-store',\n        credentials: 'omit'\n      });\n      if (res.ok) {\n        var d = await res.json();\n        var isp = d.isp || d.organization || d.asn_organization || '';\n        var city = d.city || '';\n        var region = d.region || '';\n        var country = d.country || d.country_code || '';\n        var loc = [city || region, country].filter(Boolean).join(', ');\n        if (isp || loc) {\n          setMeta(isp || '-', loc || '-');\n          return;\n        }\n      }\n    } catch (e) {}\n    try {\n      var res2 = await fetch('https:\/\/ipwho.is\/', {\n        cache: 'no-store',\n        credentials: 'omit'\n      });\n      if (res2.ok) {\n        var d2 = await res2.json();\n        if (d2 && d2.success !== false) {\n          var isp2 = (d2.connection && (d2.connection.isp || d2.connection.org)) || d2.isp || '';\n          var loc2 = [d2.city || d2.region, d2.country].filter(Boolean).join(', ');\n          setMeta(isp2 || '-', loc2 || '-');\n          return;\n        }\n      }\n    } catch (e2) {}\n    try {\n      var ipRes = await fetch(LS_BASE + '\/getIP.php?r=' + Math.random().toString(36).slice(2), {\n        cache: 'no-store',\n        credentials: 'omit'\n      });\n      if (ipRes.ok) {\n        var ipData = await ipRes.json();\n        var ip = ipData.processedString || '';\n        setMeta(ip || '-', '-');\n        return;\n      }\n    } catch (e3) {}\n    setMeta('-', '-');\n  }<\/p>\n<p>  async function run() {\n    if (busy) return;\n    busy = true;\n    var btn = document.getElementById('btn');\n    var status = document.getElementById('status');\n    var phase = document.getElementById('phase');\n    btn.disabled = true;\n    btn.textContent = 'Testing\u2026';\n    document.getElementById('down').textContent = '-';\n    document.getElementById('up').textContent = '-';\n    document.getElementById('ping').textContent = '-';\n    stopNeedleShake();\n    setSpeed(0, true);<\/p>\n<p>    try {\n      \/\/ Needle stays at 0 until loading + measuring are fully done\n      status.textContent = 'Loading\u2026 preparing servers';\n      phase.textContent = 'Loading';\n      setSpeed(0, true);\n      await warmupBackend();<\/p>\n<p>      status.textContent = 'Connecting\u2026';\n      phase.textContent = 'Ping';\n      setSpeed(0, true);\n      var ping = await measurePing();\n      var highLatency = ping >= 180;\n      var downMs = highLatency ? 3500 : 4500;\n      var upMs = highLatency ? 2000 : 2500;<\/p>\n<p>      status.textContent = highLatency\n        ? 'Measuring download (fast mode)\u2026'\n        : 'Measuring download\u2026';\n      phase.textContent = 'Download';\n      setSpeed(0, true);\n      var down = await measureDown(downMs, function (live) {\n        \/\/ Status only - needle stays at 0 until the final rev\n        status.textContent = 'Measuring download\u2026 ~' + fmt(live) + ' Mbps';\n      }, highLatency);\n      down = Math.round(clamp(down, 0, 3000) * 100) \/ 100;<\/p>\n<p>      status.textContent = 'Measuring upload\u2026';\n      phase.textContent = 'Upload';\n      setSpeed(0, true);\n      var up = await measureUp(upMs, function (live) {\n        status.textContent = 'Measuring upload\u2026 ~' + fmt(live) + ' Mbps';\n      }, highLatency);\n      up = Math.round(clamp(up, 0, 3000) * 100) \/ 100;<\/p>\n<p>      if (down < 0.5 &#038;&#038; up < 0.5) {\n        throw new Error('no-throughput');\n      }\n\n      var showSpeed = down > 0.5 ? down : up;<\/p>\n<p>      \/\/ Loaded + measured \u2192 animate 0 \u2192 1000 \u2192 real speed, then shake\n      status.textContent = 'Revving to 1000 Mbps\u2026 then settling';\n      phase.textContent = 'Ignition';\n      setSpeed(0, true);\n      await revToRealSpeed(showSpeed);\n      startNeedleShake(showSpeed);<\/p>\n<p>      document.getElementById('ping').textContent = ping + ' ms';\n      document.getElementById('down').textContent = fmt(down) + ' Mbps';\n      document.getElementById('up').textContent = fmt(up) + ' Mbps';\n      phase.textContent = 'Download';<\/p>\n<p>      status.textContent = 'Done - compare with the quality guide on the left';\n      notify(showSpeed);\n    } catch (err) {\n      stopNeedleShake();\n      setSpeed(0, true);\n      status.textContent = 'Test failed - check connection and try again';\n      phase.textContent = 'Error';\n    } finally {\n      btn.disabled = false;\n      btn.textContent = 'Test Again';\n      busy = false;\n    }\n  }<\/p>\n<p>  document.getElementById('btn').addEventListener('click', function (e) {\n    e.preventDefault();\n    run();\n  });<\/p>\n<p>  sizeCanvas();\n  window.addEventListener('resize', sizeCanvas);\n  loadGeoInfo();\n})();\n<\/script>\n        <\/div>\n<div class=\"vv-result-card\" id=\"vvResultCard\" hidden>\n<div class=\"vv-result-badge\" id=\"vvResultEmoji\"><\/div>\n<div class=\"vv-result-body\">\n<div class=\"vv-result-msg\" id=\"vvResultMsg\"><\/div>\n<p>            <a href=\"#vv-plans\" class=\"vv-result-order\">Order Now<\/a>\n          <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p><script>\n\/* Speed widget \u2192 quality tiers bridge *\/\n(function () {\n  var TIERS = [\n    { id: 'vvTier1', min: 3,  emoji: 'SD',  label: 'SD' },\n    { id: 'vvTier2', min: 5,  emoji: 'HD',  label: 'HD' },\n    { id: 'vvTier3', min: 10, emoji: 'FHD', label: 'FHD' },\n    { id: 'vvTier4', min: 25, emoji: '4K',  label: '4K' }\n  ];\n  window.addEventListener('message', function (ev) {\n    var d = ev && ev.data;\n    if (!d || d.type !== 'tc-speed-done') return;\n    var mbps = +d.down || 0;\n    var best = null;\n    TIERS.forEach(function (t) {\n      var el = document.getElementById(t.id);\n      if (!el) return;\n      el.classList.remove('vv-tier-active', 'vv-tier-best');\n      if (mbps >= t.min) {\n        el.classList.add('vv-tier-active');\n        best = t;\n      }\n    });\n    if (best) {\n      var bel = document.getElementById(best.id);\n      if (bel) bel.classList.add('vv-tier-best');\n    }\n    var card = document.getElementById('vvResultCard');\n    var emoji = document.getElementById('vvResultEmoji');\n    var msg = document.getElementById('vvResultMsg');\n    if (card && emoji && msg) {\n      if (best) {\n        emoji.textContent = best.emoji;\n        msg.textContent = 'Stable streaming at quality \"' + best.label + '\"';\n      } else {\n        emoji.textContent = '!';\n        msg.textContent = 'Below 3 Mbps - streaming may buffer. Try wired or closer Wi-Fi.';\n      }\n      card.hidden = false;\n      card.classList.add('is-open');\n      card.style.display = 'flex';\n    }\n  });<\/p>\n<p>  \/* Match speed panel height to left quality column *\/\n  function syncSpeedHeight() {\n    if (window.matchMedia && window.matchMedia('(max-width: 900px)').matches) return;\n    var tiers = document.querySelector('.vv-speed-tiers');\n    var panel = document.getElementById('vvSpeedPanel');\n    var wrap = document.getElementById('vvSpeedMount');\n    if (!tiers || !panel) return;\n    var h = Math.ceil(tiers.getBoundingClientRect().height);\n    if (h > 120) {\n      panel.style.minHeight = h + 'px';\n      if (wrap) {\n        wrap.style.minHeight = h + 'px';\n        wrap.style.height = h + 'px';\n      }\n    }\n  }\n  window.addEventListener('DOMContentLoaded', syncSpeedHeight);\n  window.addEventListener('load', syncSpeedHeight);\n  window.addEventListener('resize', syncSpeedHeight);\n  setTimeout(syncSpeedHeight, 400);\n  setTimeout(syncSpeedHeight, 1200);\n})();\n<\/script><\/p>\n<p><!-- ============================================================\n  TIVIMATE US v2 \u2014 SECTION 07: DEVICES\n============================================================ --><\/p>\n<section class=\"vv-wrap vv-section\" id=\"vv-devices\">\n<div class=\"vv-max\">\n<div class=\"vv-devices-layout\">\n<div class=\"vv-devices-left\">\n<div class=\"vv-devices-copy\">\n<div class=\"vv-eyebrow\">TiviMate Devices<\/div>\n<h2 class=\"vv-h2 vv-devices-h2\">Plays with <span>TiviMate US.<\/span><\/h2>\n<p class=\"vv-lead\" style=\"margin-top:0.8rem;\">Add your <strong>TiviMate playlist<\/strong> or Xtream Codes in under a minute \u2014 Fire Stick, Android TV, phones, MAG, and more. Likewise, the same stable streaming follows every screen with your <strong>TiviMate subscription<\/strong>.<\/p>\n<\/p><\/div>\n<div class=\"vv-devices-grid\" aria-label=\"Compatible devices\">\n<div class=\"vv-devices-col\">\n<div class=\"vv-device-card vv-reveal\">\n<div class=\"vv-device-icon\">\ud83d\udcfa<\/div>\n<div class=\"vv-device-meta\">\n<div class=\"vv-device-name\">Smart TV<\/div>\n<div class=\"vv-device-apps\">TiviMate app \u00b7 IPTV Smarters<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"vv-device-card vv-reveal vv-reveal-delay-1\">\n<div class=\"vv-device-icon\">\ud83e\udd16<\/div>\n<div class=\"vv-device-meta\">\n<div class=\"vv-device-name\">Android<\/div>\n<div class=\"vv-device-apps\">TiviMate app \u00b7 Perfect Player<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"vv-device-card vv-reveal vv-reveal-delay-2\">\n<div class=\"vv-device-icon\">\ud83d\udd25<\/div>\n<div class=\"vv-device-meta\">\n<div class=\"vv-device-name\">Fire Stick<\/div>\n<div class=\"vv-device-apps\">TiviMate app \u00b7 Downloader<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"vv-device-card vv-reveal vv-reveal-delay-3\">\n<div class=\"vv-device-icon\">\u229e<\/div>\n<div class=\"vv-device-meta\">\n<div class=\"vv-device-name\">MAG Box<\/div>\n<div class=\"vv-device-apps\">Native portal<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"vv-devices-col\">\n<div class=\"vv-device-card vv-reveal\">\n<div class=\"vv-device-icon\">\ud83d\udcf1<\/div>\n<div class=\"vv-device-meta\">\n<div class=\"vv-device-name\">iOS<\/div>\n<div class=\"vv-device-apps\">IPTV Smarters \u00b7 GSE<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"vv-device-card vv-reveal vv-reveal-delay-1\">\n<div class=\"vv-device-icon\">\ud83d\udcbb<\/div>\n<div class=\"vv-device-meta\">\n<div class=\"vv-device-name\">Mac \/ PC<\/div>\n<div class=\"vv-device-apps\">VLC \u00b7 Kodi<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"vv-device-card vv-reveal vv-reveal-delay-2\">\n<div class=\"vv-device-icon\">\ud83c\udfae<\/div>\n<div class=\"vv-device-meta\">\n<div class=\"vv-device-name\">Xbox \/ PS5<\/div>\n<div class=\"vv-device-apps\">Browser \u00b7 VLC<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<div class=\"vv-device-card vv-reveal vv-reveal-delay-3\">\n<div class=\"vv-device-icon\">\ud83d\udce1<\/div>\n<div class=\"vv-device-meta\">\n<div class=\"vv-device-name\">Any Device<\/div>\n<div class=\"vv-device-apps\">M3U \u00b7 Xtream Codes<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<p>        <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" class=\"vv-btn vv-devices-cta\" rel=\"nofollow noopener\">Setup Help on WhatsApp \u2192<\/a>\n      <\/div>\n<div class=\"vv-devices-right\">\n<div class=\"vv-devices-lottie\" aria-hidden=\"true\">\n          <dotlottie-wc\n            class=\"vv-lottie-lazy\"\n            data-src=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-devices.lottie\"\n            style=\"width: 760px; height: 760px\"\n            autoplay\n            loop\n          ><\/dotlottie-wc>\n        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p><!-- ============================================================\n  SECTION: DOWNLOAD THE APP\n============================================================ --><\/p>\n<section class=\"vv-wrap vv-section-alt\" id=\"vv-download\">\n<div class=\"vv-max\">\n<div class=\"vv-download-layout\">\n<div class=\"vv-download-copy\">\n<div class=\"vv-eyebrow\">Free for customers<\/div>\n<h2 class=\"vv-h2\">Download the<br \/><span>TiviMate US App.<\/span><\/h2>\n<p class=\"vv-lead\" style=\"margin-top:0.85rem;\">\n          Our TiviMate US app is provided <strong>exclusively free for our TiviMate IPTV customers<\/strong>,<br \/>\n          with <strong>all features unlocked<\/strong> \u2014 Firestick \/ Android, MacOS, and Windows.<br \/>\n          After that, install the app, load your playlist login, and start <strong>stable streaming<\/strong>.\n        <\/p>\n<div class=\"vv-download-btns\">\n          <a class=\"vv-dl-btn vv-dl-primary\" href=\"https:\/\/en.wikipedia.org\/wiki\/IPTV6883465\" target=\"_blank\" rel=\"noopener nofollow\">Download For Android\/Firestick<\/a><br \/>\n          <a class=\"vv-dl-btn\" href=\"https:\/\/tivimate.ca\/tutorial\/\/\/\" target=\"_blank\" rel=\"noopener nofollow\">Download For MacOS<\/a><br \/>\n          <a class=\"vv-dl-btn\" href=\"https:\/\/tivimate.ca\/tutorial\/\/\/\" target=\"_blank\" rel=\"noopener nofollow\">Download For Windows 10<\/a><br \/>\n          <a class=\"vv-dl-btn\" href=\"https:\/\/tivimate.ca\/tutorial\/\/\/\" target=\"_blank\" rel=\"noopener nofollow\">Download For Windows 11<\/a>\n        <\/div>\n<\/p><\/div>\n<div class=\"vv-download-visual\">\n<div class=\"vv-download-media\">\n          <picture><source type=\"image\/webp\" srcset=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-app-8k-player-800.webp\"><img\n              src=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-app-8k-player-800.jpg\"\n              alt=\"TiviMate US 8K player showing Movies VOD library and categories\"\n              width=\"800\"\n              height=\"369\"\n              loading=\"lazy\"\n              decoding=\"async\"\n            >\n          <\/picture>\n        <\/div>\n<div class=\"vv-devices-logos\">\n          <img decoding=\"async\" src=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-devices.png\" alt=\"Compatible platforms \u2014 Apple, Android, Windows, Smart TV, Fire TV\" width=\"260\" height=\"52\" loading=\"lazy\">\n        <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p><!-- ============================================================\n  SECTION 08: FAQ\n============================================================ --><\/p>\n<section class=\"vv-wrap vv-section\" id=\"vv-faq\">\n<div class=\"vv-max\">\n<div class=\"vv-faq-layout\">\n<div>\n<div class=\"vv-eyebrow\">TiviMate FAQ<\/div>\n<h2 class=\"vv-h2\">TiviMate US<br \/><span>Questions?<\/span><\/h2>\n<p class=\"vv-lead\" style=\"margin-top:0.8rem;\">Answers about <strong>TiviMate US<\/strong>, stable streaming, playlists, and subscriptions. Still stuck? WhatsApp us \u2014 we usually reply in under 2 minutes.<\/p>\n<p>        <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" class=\"vv-btn vv-btn-red\" style=\"margin-top:1.8rem;\" rel=\"nofollow noopener\">Ask on WhatsApp<\/a>\n      <\/div>\n<div class=\"vv-faq-list\">\n<h3 class=\"vv-h3\" style=\"font-size:0.95rem;letter-spacing:0.06em;text-transform:uppercase;color:#00E5FF;margin:0 0 0.35rem;\">Basics<\/h3>\n<div class=\"vv-faq-item\">\n          <button class=\"vv-faq-q\" onclick=\"vvFaqToggle(this)\"><br \/>\n            What is TiviMate US?<br \/>\n            <span class=\"vv-faq-icon\" aria-hidden=\"true\"><\/span><br \/>\n          <\/button><\/p>\n<div class=\"vv-faq-a\"><strong>TiviMate US<\/strong> is a USA-focused <strong>TiviMate IPTV<\/strong> service built for stable streaming: 22,000+ live channels, 88,000+ VOD titles, and a ready <strong>TiviMate playlist<\/strong> that loads in the <strong>TiviMate app<\/strong>. Additionally, we provide our TiviMate US app <strong>exclusively free for our customers<\/strong> with <strong>all features unlocked<\/strong> \u2014 no dish required.<\/div>\n<\/p><\/div>\n<div class=\"vv-faq-item\">\n          <button class=\"vv-faq-q\" onclick=\"vvFaqToggle(this)\"><br \/>\n            What is a TiviMate playlist?<br \/>\n            <span class=\"vv-faq-icon\" aria-hidden=\"true\"><\/span><br \/>\n          <\/button><\/p>\n<div class=\"vv-faq-a\">A <strong>TiviMate playlist<\/strong> is the M3U or Xtream Codes login we send after you order. Then paste it into the <strong>TiviMate player<\/strong> and your full channel list appears in seconds.<\/div>\n<\/p><\/div>\n<div class=\"vv-faq-item\">\n          <button class=\"vv-faq-q\" onclick=\"vvFaqToggle(this)\"><br \/>\n            How does a TiviMate subscription work?<br \/>\n            <span class=\"vv-faq-icon\" aria-hidden=\"true\"><\/span><br \/>\n          <\/button><\/p>\n<div class=\"vv-faq-a\">Choose a <strong>TiviMate subscription<\/strong> plan (1, 3, 6, or 12 months), pay online or on WhatsApp, then we activate your line and send playlist details. Afterward, renew anytime before expiry.<\/div>\n<\/p><\/div>\n<div class=\"vv-faq-item\">\n          <button class=\"vv-faq-q\" onclick=\"vvFaqToggle(this)\"><br \/>\n            Is this TiviMate premium IPTV?<br \/>\n            <span class=\"vv-faq-icon\" aria-hidden=\"true\"><\/span><br \/>\n          <\/button><\/p>\n<div class=\"vv-faq-a\">Our packs are built as <strong>TiviMate premium<\/strong> entertainment: sports, cinema, series, and international TV in FHD \/ Ultra HD \/ 8K where available. In particular, streams are optimized for the <strong>TiviMate app<\/strong>.<\/div>\n<\/p><\/div>\n<h3 class=\"vv-h3\" style=\"font-size:0.95rem;letter-spacing:0.06em;text-transform:uppercase;color:#00E5FF;margin:1.35rem 0 0.35rem;\">Devices &amp; quality<\/h3>\n<div class=\"vv-faq-item\">\n          <button class=\"vv-faq-q\" onclick=\"vvFaqToggle(this)\"><br \/>\n            Does TiviMate work on Firestick?<br \/>\n            <span class=\"vv-faq-icon\" aria-hidden=\"true\"><\/span><br \/>\n          <\/button><\/p>\n<div class=\"vv-faq-a\"><strong>TiviMate Firestick<\/strong> setups are our most common install. For example, add the <strong>TiviMate app<\/strong>, paste your US service playlist, and stream. We also guide Android TV, Smart TVs, phones, and MAG boxes.<\/div>\n<\/p><\/div>\n<div class=\"vv-faq-item\">\n          <button class=\"vv-faq-q\" onclick=\"vvFaqToggle(this)\"><br \/>\n            Do I need fast internet for 8K TiviMate streams?<br \/>\n            <span class=\"vv-faq-icon\" aria-hidden=\"true\"><\/span><br \/>\n          <\/button><\/p>\n<div class=\"vv-faq-a\">For 8K we recommend 80+ Mbps. Meanwhile, Ultra 4K is fine from ~25 Mbps, and Full HD from ~10 Mbps. Therefore, use the speed tester above before you start your <strong>TiviMate subscription<\/strong>.<\/div>\n<\/p><\/div>\n<div class=\"vv-faq-item\">\n          <button class=\"vv-faq-q\" onclick=\"vvFaqToggle(this)\"><br \/>\n            How do I get my TiviMate playlist after ordering?<br \/>\n            <span class=\"vv-faq-icon\" aria-hidden=\"true\"><\/span><br \/>\n          <\/button><\/p>\n<div class=\"vv-faq-a\">After payment confirmation we send your M3U or Xtream Codes on WhatsApp within minutes. Next, load them in TiviMate, IPTV Smarters, or VLC in under a minute.<\/div>\n<\/p><\/div>\n<div class=\"vv-faq-item\">\n          <button class=\"vv-faq-q\" onclick=\"vvFaqToggle(this)\"><br \/>\n            Can I watch live sports with TiviMate US?<br \/>\n            <span class=\"vv-faq-icon\" aria-hidden=\"true\"><\/span><br \/>\n          <\/button><\/p>\n<div class=\"vv-faq-a\">Sports are included in the <strong>TiviMate IPTV<\/strong> pack \u2014 live games and events in HD, 4K, and 8K where available. Besides that, a stable Wi\u2011Fi link helps most on big nights.<\/div>\n<\/p><\/div>\n<h3 class=\"vv-h3\" style=\"font-size:0.95rem;letter-spacing:0.06em;text-transform:uppercase;color:#00E5FF;margin:1.35rem 0 0.35rem;\">Plans &amp; support<\/h3>\n<div class=\"vv-faq-item\">\n          <button class=\"vv-faq-q\" onclick=\"vvFaqToggle(this)\"><br \/>\n            Is there a free trial for TiviMate US?<br \/>\n            <span class=\"vv-faq-icon\" aria-hidden=\"true\"><\/span><br \/>\n          <\/button><\/p>\n<div class=\"vv-faq-a\">Message us on WhatsApp to ask about trial availability. In practice, trying the playlist first is the best way to confirm your device and internet before a full subscription.<\/div>\n<\/p><\/div>\n<div class=\"vv-faq-item\">\n          <button class=\"vv-faq-q\" onclick=\"vvFaqToggle(this)\"><br \/>\n            What is the VIP TiviMate plan?<br \/>\n            <span class=\"vv-faq-icon\" aria-hidden=\"true\"><\/span><br \/>\n          <\/button><\/p>\n<div class=\"vv-faq-a\">VIP is our top <strong>TiviMate premium<\/strong> tier: stronger peak-hour stability, more simultaneous screens, 8K + Dolby Vision where offered, longer catch-up, and priority 24\/7 support.<\/div>\n<\/p><\/div>\n<div class=\"vv-faq-item\">\n          <button class=\"vv-faq-q\" onclick=\"vvFaqToggle(this)\"><br \/>\n            TiviMate app vs TiviMate US \u2014 what\u2019s the difference?<br \/>\n            <span class=\"vv-faq-icon\" aria-hidden=\"true\"><\/span><br \/>\n          <\/button><\/p>\n<div class=\"vv-faq-a\">The <strong>TiviMate app<\/strong> (player) shows channels. By contrast, <strong>TiviMate US<\/strong> is the IPTV service that provides your live channels and VOD \u2014 you add our playlist inside the player.<\/div>\n<\/p><\/div>\n<div class=\"vv-faq-item\">\n          <button class=\"vv-faq-q\" onclick=\"vvFaqToggle(this)\"><br \/>\n            How do I renew my TiviMate subscription?<br \/>\n            <span class=\"vv-faq-icon\" aria-hidden=\"true\"><\/span><br \/>\n          <\/button><\/p>\n<div class=\"vv-faq-a\">Order the same plan again online or message WhatsApp before expiry. Whenever possible, we extend your line and keep the same playlist login so you don\u2019t reconfigure the app.<\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<p><script>\nfunction vvFaqToggle(btn){\n  var item = btn.parentElement;\n  var ans = item.querySelector('.vv-faq-a');\n  var isOpen = btn.classList.contains('open');\n  document.querySelectorAll('.vv-faq-q.open').forEach(function(b){\n    b.classList.remove('open');\n    b.parentElement.querySelector('.vv-faq-a').classList.remove('show');\n  });\n  if(!isOpen){ btn.classList.add('open'); ans.classList.add('show'); }\n}\n<\/script><\/p>\n<p><!-- ============================================================\n  FINAL CTA \u2014 Free trial \/ test IPTV\n============================================================ --><\/p>\n<section class=\"vv-wrap vv-section vv-final-cta\" id=\"vv-trial-cta\" aria-labelledby=\"vv-trial-cta-title\">\n<div class=\"vv-max\">\n<div class=\"vv-final-cta-inner\">\n<div class=\"vv-trial-lottie\" aria-hidden=\"true\">\n        <dotlottie-wc\n          class=\"vv-lottie-lazy\"\n          data-src=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-trial.lottie\"\n          style=\"width: 150px; height: 150px\"\n          autoplay\n          loop\n        ><\/dotlottie-wc>\n      <\/div>\n<div class=\"vv-final-cta-copy\">\n<div class=\"vv-eyebrow\">Free trial<\/div>\n<h2 class=\"vv-h2\" id=\"vv-trial-cta-title\">Test <span class=\"vv-trial-brand\">TiviMate US<\/span> free.<\/h2>\n<p class=\"vv-lead\">Request a free trial of our service for <strong>24h<\/strong> before you subscribe. Afterward, load the playlist in the TiviMate app and see live channels, sports, and VOD on your device.<\/p>\n<\/p><\/div>\n<div class=\"vv-final-cta-btns\">\n        <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" class=\"vv-btn vv-trial-primary\" rel=\"nofollow noopener\">Get Free Trial<\/a><br \/>\n        <a href=\"#vv-plans\" class=\"vv-btn vv-btn-outline vv-trial-pricing\">See Pricing<\/a>\n      <\/div>\n<\/p><\/div>\n<\/p><\/div>\n<\/section>\n<footer class=\"vv-wrap vv-footer\">\n<div class=\"vv-footer-map\" aria-hidden=\"true\">\n    <picture><source type=\"image\/webp\" srcset=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-world-map-700-nobg.webp\"><img src=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-world-map-nobg.png\" alt=\"\" width=\"700\" height=\"270\" loading=\"lazy\" decoding=\"async\">\n    <\/picture>\n  <\/div>\n<div class=\"vv-max\">\n<div class=\"vv-footer-grid\">\n<div class=\"vv-footer-brand\">\n<div class=\"vv-footer-logo\">\n          <span style=\"color:#00E5FF;\">TIVIMATE<\/span>&nbsp;US<sup style=\"font-family:'JetBrains Mono',monospace;font-size:0.4em;color:var(--vv-muted);vertical-align:super;letter-spacing:0.1em;\">\u2122<\/sup>\n        <\/div>\n<p class=\"vv-footer-tag\">Best IPTV for TiviMate<\/p>\n<p class=\"vv-footer-desc\"><strong>TiviMate US<\/strong> \u2014 USA <strong>TiviMate IPTV<\/strong> with premium playlists, 22,000+ channels, and our TiviMate US app free exclusively for customers with all features unlocked.<\/p>\n<\/p><\/div>\n<div class=\"vv-footer-col\">\n<h4>Product<\/h4>\n<p>        <a href=\"#vv-channels\">Channels<\/a><br \/>\n        <a href=\"#vv-plans\">Pricing<\/a><br \/>\n        <a href=\"#vv-devices\">Devices<\/a><br \/>\n        <a href=\"#vv-features\">Features<\/a><br \/>\n        <a href=\"#vv-download\">Download App<\/a><br \/>\n        <a href=\"#vv-speedtest\">Speed Test<\/a>\n      <\/div>\n<div class=\"vv-footer-col\">\n<h4>Support<\/h4>\n<p>        <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" rel=\"noopener\">Contact us on WhatsApp<\/a><br \/>\n        <a href=\"https:\/\/api.whatsapp.com\/send?phone=212772123261&#038;text=hi%20tivimate%20us\" target=\"_blank\" rel=\"noopener\">Get Trial on WhatsApp<\/a><br \/>\n        <a href=\"#vv-faq\">FAQ<\/a><br \/>\n        <a href=\"#vv-plans\">Order Now<\/a>\n      <\/div>\n<div class=\"vv-footer-col\">\n<h4>Legal<\/h4>\n<p>        <a href=\"\/terms\/\">Terms of Service<\/a><br \/>\n        <a href=\"\/privacy-policy\/\">Privacy Policy<\/a><br \/>\n        <a href=\"\/refund-policy\/\">Refund Policy<\/a><br \/>\n        <a href=\"\/dmca\/\">DMCA Disclaimer<\/a>\n      <\/div>\n<\/p><\/div>\n<div class=\"tri-footer-pay vv-footer-pay\" aria-label=\"Accepted payment methods\">\n<div class=\"vv-pay-badge pay-badge tri-pay-wrap\" aria-label=\"Accepted payment methods\"><img loading=\"lazy\" class=\"vv-pay-methods pay-methods\" decoding=\"async\" src=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-pay-methods.svg\" alt=\"Visa, Mastercard, Amex, PayPal, Bitcoin and more\" width=\"525\" height=\"70\" \/><span class=\"pay-icon vv-pay-icon apple-pay\" title=\"Apple Pay\" aria-label=\"Apple Pay\"><svg viewBox=\"0 0 52 24\" aria-hidden=\"true\" width=\"52\" height=\"24\"><g transform=\"translate(1.2 1.6) scale(0.86)\"><path fill=\"#ffffff\" d=\"M12.152 6.896c-.948 0-2.415-1.078-3.96-1.04-2.04.027-3.91 1.183-4.961 3.014-2.117 3.675-.546 9.103 1.519 12.09 1.013 1.454 2.208 3.09 3.792 3.039 1.52-.065 2.09-.987 3.935-.987 1.831 0 2.35.987 3.96.948 1.637-.026 2.676-1.48 3.676-2.948 1.156-1.688 1.636-3.325 1.662-3.415-.039-.013-3.182-1.221-3.22-4.857-.026-3.04 2.48-4.494 2.597-4.559-1.429-2.09-3.623-2.324-4.39-2.376-2-.156-3.675 1.09-4.61 1.09zM15.53 3.83c.843-1.012 1.4-2.427 1.245-3.83-1.207.052-2.662.805-3.532 1.818-.78.896-1.454 2.338-1.273 3.714 1.338.104 2.715-.688 3.559-1.701\"\/><\/g><text x=\"24.5\" y=\"16.5\" fill=\"#ffffff\" font-family=\"system-ui,-apple-system,BlinkMacSystemFont,sans-serif\" font-size=\"12\" font-weight=\"600\" letter-spacing=\"0.02em\">Pay<\/text><\/svg><\/span><span class=\"pay-icon vv-pay-icon google-pay\" title=\"Google Pay\" aria-label=\"Google Pay\"><svg viewBox=\"0 0 52 24\" aria-hidden=\"true\" width=\"52\" height=\"24\"><g transform=\"translate(1 1.2) scale(0.9)\"><path fill=\"#4285F4\" d=\"M22.56 12.25c0-.78-.07-1.53-.2-2.25H12v4.26h5.92c-.26 1.37-1.04 2.53-2.21 3.31v2.77h3.57c2.08-1.92 3.28-4.74 3.28-8.09z\"\/><path fill=\"#34A853\" d=\"M12 23c2.97 0 5.46-.98 7.28-2.66l-3.57-2.77c-.98.66-2.23 1.06-3.71 1.06-2.86 0-5.29-1.93-6.16-4.53H2.18v2.84C3.99 20.53 7.7 23 12 23z\"\/><path fill=\"#FBBC05\" d=\"M5.84 14.09c-.22-.66-.35-1.36-.35-2.09s.13-1.43.35-2.09V7.07H2.18C1.43 8.55 1 10.22 1 12s.43 3.45 1.18 4.93l2.85-2.22.81-.62z\"\/><path fill=\"#EA4335\" d=\"M12 5.38c1.62 0 3.06.56 4.21 1.64l3.15-3.15C17.45 2.09 14.97 1 12 1 7.7 1 3.99 3.47 2.18 7.07l3.66 2.84c.87-2.6 3.3-4.53 6.16-4.53z\"\/><\/g><text x=\"26\" y=\"16.2\" fill=\"#e8eaed\" font-family=\"system-ui,sans-serif\" font-size=\"11\" font-weight=\"600\">Pay<\/text><\/svg><\/span><\/div>\n<\/div>\n<div class=\"vv-footer-bottom\">\n<p class=\"vv-footer-copy\">\u00a9 2026 TiviMate US. All rights reserved.<\/p>\n<p class=\"vv-footer-meta\">\n        <a href=\"\/#vv-plans\">TiviMate IPTV<\/a><br \/>\n        <span aria-hidden=\"true\">\u00b7<\/span><br \/>\n        <a href=\"\/tivimate-playlist\/\">TiviMate playlist<\/a><br \/>\n        <span aria-hidden=\"true\">\u00b7<\/span><br \/>\n        <a href=\"\/tivimate-subscription\/\">TiviMate subscription<\/a>\n      <\/p>\n<\/p><\/div>\n<\/p><\/div>\n<\/footer>\n<p><script>\n\/* Lazy-load below-fold Lotties - keep hero\/scroll\/badge eager *\/\n(function () {\n  try {\n    var nodes = document.querySelectorAll('dotlottie-wc.vv-lottie-lazy[data-src]');\n    if (!nodes.length) return;\n    function arm(el) {\n      var u = el.getAttribute('data-src');\n      if (!u || el.getAttribute('src')) return;\n      el.setAttribute('src', u);\n    }\n    if (!('IntersectionObserver' in window)) {\n      Array.prototype.forEach.call(nodes, arm);\n      return;\n    }\n    var io = new IntersectionObserver(function (entries) {\n      entries.forEach(function (e) {\n        if (!e.isIntersecting) return;\n        arm(e.target);\n        io.unobserve(e.target);\n      });\n    }, { rootMargin: '220px 0px', threshold: 0.01 });\n    Array.prototype.forEach.call(nodes, function (el) { io.observe(el); });\n  } catch (err) {}\n})();\n<\/script><\/p>\n<p><script>\n\/**\n * Global scroll reveal init \n * Ensures footer visibility elements trigger correctly on scroll\n *\/\n(function(){\n  if(window._vvRevealInit) return;\n  window._vvRevealInit = true;<\/p>\n<p>  var obs = new IntersectionObserver(function(entries){\n    entries.forEach(function(e){\n      if(e.isIntersecting){ \n        e.target.classList.add('vv-in'); \n        obs.unobserve(e.target); \n      }\n    });\n  }, { threshold: 0.07 });<\/p>\n<p>  function observe(){\n    document.querySelectorAll('.vv-reveal:not(.vv-in)').forEach(function(el){ \n      obs.observe(el); \n    });\n  }<\/p>\n<p>  observe();\n  \/\/ Periodic check for dynamically loaded content\n  setInterval(observe, 800);\n})();\n<\/script><\/p>\n<\/div>\n<p><!-- \/.tc-v2-root --><\/p>\n","protected":false},"excerpt":{"rendered":"<p>TiviMate US is a ready IPTV playlist for USA TiviMate users in the United States (USA) \u2014 stable streaming on 25K TVs, 88K movies and series in FHD, plus worldwide content on every plan. \u2715 EN FR AR Features Pricing Download How it works Contact us on WhatsApp Order Now Get Trial TIVIMATE US STABLE [&hellip;]<\/p>\n","protected":false},"author":0,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"footnotes":""},"class_list":["post-5","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.2 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>TiviMate US | Best IPTV for TiviMate USA<\/title>\n<meta name=\"description\" content=\"TiviMate US: IPTV playlist for TiviMate in the United States \u2014 25K+ live TVs, 88K movies and series in FHD, Firestick setup help.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/tivimate.us\/ar\/\" \/>\n<meta property=\"og:locale\" content=\"ar_AR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"TiviMate US | Best IPTV for TiviMate USA\" \/>\n<meta property=\"og:description\" content=\"TiviMate US: IPTV playlist for TiviMate in the United States \u2014 25K+ live TVs, 88K movies and series in FHD, Firestick setup help.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/tivimate.us\/ar\/\" \/>\n<meta property=\"og:site_name\" content=\"TiviMate US\" \/>\n<meta property=\"article:modified_time\" content=\"2026-08-24T21:47:58+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-pay-methods.svg\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"9 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/tivimate.us\\\/\",\"url\":\"https:\\\/\\\/tivimate.us\\\/\",\"name\":\"TiviMate US | Best IPTV for TiviMate USA\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/tivimate.us\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/tivimate.us\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/tivimate.us\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/tivimate.us\\\/wp-content\\\/uploads\\\/tc-brand\\\/tc-pay-methods.svg\",\"datePublished\":\"2026-08-07T19:05:17+00:00\",\"dateModified\":\"2026-08-24T21:47:58+00:00\",\"description\":\"TiviMate US: IPTV playlist for TiviMate in the United States \u2014 25K+ live TVs, 88K movies and series in FHD, Firestick setup help.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/tivimate.us\\\/#breadcrumb\"},\"inLanguage\":\"ar\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/tivimate.us\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"ar\",\"@id\":\"https:\\\/\\\/tivimate.us\\\/#primaryimage\",\"url\":\"https:\\\/\\\/tivimate.us\\\/wp-content\\\/uploads\\\/tc-brand\\\/tc-pay-methods.svg\",\"contentUrl\":\"https:\\\/\\\/tivimate.us\\\/wp-content\\\/uploads\\\/tc-brand\\\/tc-pay-methods.svg\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/tivimate.us\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/tivimate.us\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Home\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/tivimate.us\\\/#website\",\"url\":\"https:\\\/\\\/tivimate.us\\\/\",\"name\":\"TiviMate US\",\"description\":\"Best IPTV Playlist for TiviMate in the USA\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/tivimate.us\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"ar\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"TiviMate US | Best IPTV for TiviMate USA","description":"TiviMate US: IPTV playlist for TiviMate in the United States \u2014 25K+ live TVs, 88K movies and series in FHD, Firestick setup help.","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:\/\/tivimate.us\/ar\/","og_locale":"ar_AR","og_type":"article","og_title":"TiviMate US | Best IPTV for TiviMate USA","og_description":"TiviMate US: IPTV playlist for TiviMate in the United States \u2014 25K+ live TVs, 88K movies and series in FHD, Firestick setup help.","og_url":"https:\/\/tivimate.us\/ar\/","og_site_name":"TiviMate US","article_modified_time":"2026-08-24T21:47:58+00:00","og_image":[{"url":"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-pay-methods.svg","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"9 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/tivimate.us\/","url":"https:\/\/tivimate.us\/","name":"TiviMate US | Best IPTV for TiviMate USA","isPartOf":{"@id":"https:\/\/tivimate.us\/#website"},"primaryImageOfPage":{"@id":"https:\/\/tivimate.us\/#primaryimage"},"image":{"@id":"https:\/\/tivimate.us\/#primaryimage"},"thumbnailUrl":"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-pay-methods.svg","datePublished":"2026-08-07T19:05:17+00:00","dateModified":"2026-08-24T21:47:58+00:00","description":"TiviMate US: IPTV playlist for TiviMate in the United States \u2014 25K+ live TVs, 88K movies and series in FHD, Firestick setup help.","breadcrumb":{"@id":"https:\/\/tivimate.us\/#breadcrumb"},"inLanguage":"ar","potentialAction":[{"@type":"ReadAction","target":["https:\/\/tivimate.us\/"]}]},{"@type":"ImageObject","inLanguage":"ar","@id":"https:\/\/tivimate.us\/#primaryimage","url":"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-pay-methods.svg","contentUrl":"https:\/\/tivimate.us\/wp-content\/uploads\/tc-brand\/tc-pay-methods.svg"},{"@type":"BreadcrumbList","@id":"https:\/\/tivimate.us\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/tivimate.us\/"},{"@type":"ListItem","position":2,"name":"Home"}]},{"@type":"WebSite","@id":"https:\/\/tivimate.us\/#website","url":"https:\/\/tivimate.us\/","name":"\u0631\u0641\u064a\u0642 TiviMate","description":"Best IPTV Playlist for TiviMate in the USA","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/tivimate.us\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"ar"}]}},"_links":{"self":[{"href":"https:\/\/tivimate.us\/ar\/wp-json\/wp\/v2\/pages\/5","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/tivimate.us\/ar\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/tivimate.us\/ar\/wp-json\/wp\/v2\/types\/page"}],"replies":[{"embeddable":true,"href":"https:\/\/tivimate.us\/ar\/wp-json\/wp\/v2\/comments?post=5"}],"version-history":[{"count":9,"href":"https:\/\/tivimate.us\/ar\/wp-json\/wp\/v2\/pages\/5\/revisions"}],"predecessor-version":[{"id":37,"href":"https:\/\/tivimate.us\/ar\/wp-json\/wp\/v2\/pages\/5\/revisions\/37"}],"wp:attachment":[{"href":"https:\/\/tivimate.us\/ar\/wp-json\/wp\/v2\/media?parent=5"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}