{"version":3,"file":"shared-lib.BbSoCxWj.mjs","names":[],"sources":["https:/framerusercontent.com/modules/eSIck9PjOqoNmRNOhZvZ/XYtfkx9HvoBoHxlrlLbt/SiteShell.js","https:/framer.com/m/SiteShell-Ck65qI.js"],"sourcesContent":["import{jsx as _jsx}from\"react/jsx-runtime\";import{addPropertyControls}from\"framer\";// =============================================================================\n// SiteShell - single source of truth for the RANGO site header, mobile drawer,\n// footer, and their CSS + wiring.\n//\n// WHY THIS EXISTS\n// Every page component used to carry its own copy of these four blocks. Across\n// 14 components that was ~403,000 duplicated characters, and the copies had\n// already drifted into 5 shell variants and 3 footer variants - including two\n// different live footer background colours (#0B1220 vs #0F0F0F). Editing the\n// header or footer meant editing every page by hand.\n//\n// CANONICAL SOURCE\n// These blocks are taken verbatim from FormsPage.tsx, which already held the\n// intended combination: the 7-file shell PLUS the :root token block, PLUS the\n// Variant A footer (newsletter inside the brand column, matching the homepage\n// footer tuned 2026-08-11). --ft-bg is settled here at #0B1220.\n//\n// HOW TO USE IT FROM A PAGE COMPONENT\n//   import { SHELL_STYLES, NAV_DRAWER_HTML, FOOTER_HTML, wireShell }\n//       from \"https://framer.com/m/SiteShell-XXXX.js\"\n// Get the exact URL from Assets -> Code -> SiteShell -> Copy Import.\n// The URL is unversioned and tracks latest, so editing this file updates every\n// page that imports it - no per-page bump.\n//\n// TO CHANGE THE HEADER OR FOOTER: edit this file only, then Publish.\n// =============================================================================\nexport const SHELL_STYLES=`\n/* Shell tokens are namespaced --shell-* on purpose. Page components each define\n   their own :root (--orange, --muted, --ft-bg with DIFFERENT meanings and values),\n   and page CSS is concatenated AFTER SHELL_STYLES, so an un-namespaced shell token\n   is silently overridden by the page - which is exactly what happened: the shell\n   asked for --ft-bg #0B1220 and got the page's #0F0F0F. Do not un-namespace these. */\n:root { --shell-orange: #D97706; --shell-orange-dk: #B45309; --shell-muted: rgba(255,255,255,0.55); --shell-ft-bg: #0B1220; }\n\n* { box-sizing: border-box; }\na { color: inherit; text-decoration: none; }\nimg { max-width: 100%; height: auto; display: block; }\n.ctn { width: 100%; max-width: 1200px; margin: 0 auto; padding: 0 16px; }\n.nav { position: sticky; top: 0; left: 0; right: 0; z-index: 1000; background: #0F172A; backdrop-filter: blur(16px); -webkit-backdrop-filter: blur(16px); border-bottom: 1px solid rgba(255,255,255,0.08); transition: box-shadow .3s cubic-bezier(.4,0,.2,1); }\n.nav-in { width: 100%; max-width: 1280px; margin: 0 auto; padding-inline: clamp(14px,3vw,32px); padding-top: 0; padding-bottom: 0; display: flex; align-items: center; justify-content: space-between; height: 56px; gap: clamp(8px,1.4vw,20px); min-width: 0; box-sizing: border-box; }\n.nav-logo { display: flex; align-items: center; gap: 8px; font-family: 'Outfit', system-ui, sans-serif; min-height: 44px; }\n.brand-logo { height: 32px; width: auto; max-width: 148px; display: block; object-fit: contain; }\n.nav-logo-t { display: flex; flex-direction: column; line-height: 1.15; }\n.nav-logo-m { font-size: 1.05rem; font-weight: 700; letter-spacing: .04em; color: var(--shell-orange); }\n.nav-logo-s { font-size: .6rem; font-weight: 500; letter-spacing: .14em; text-transform: uppercase; color: var(--shell-muted); }\n.nav-l { display: none; align-items: center; gap: 8px; list-style: none; margin: 0; padding: 0; min-width: 0; flex: 1 1 auto; }\n.nav-l > li { position: relative; }\n.nav-l a, .nav-l .dd-trig { font-family: 'Outfit', system-ui, sans-serif; font-size: .95rem; font-weight: 500; color: #FFFFFF; transition: color .3s cubic-bezier(.4,0,.2,1); padding: 8px 12px; min-height: 44px; display: inline-flex; align-items: center; background: none; border: none; cursor: pointer; gap: 6px; }\n.nav-l a:visited, .nav-l .dd-trig:visited { color: #FFFFFF; }\n.nav-l a:hover, .nav-l .dd-trig:hover, .nav-l a:focus, .nav-l .dd-trig:focus { color: #F59E0B; }\n.nav-l a:focus-visible, .nav-l .dd-trig:focus-visible { outline: 2px solid #F59E0B; outline-offset: 2px; }\n.dd-chev { transition: transform .3s cubic-bezier(.4,0,.2,1); width: 12px; height: 12px; }\n.dd.open .dd-chev { transform: rotate(180deg); }\n.dd.open .dd-trig { color: #F59E0B; }\n.dd-panel { display: none; position: absolute; top: calc(100% + 8px); left: 0; min-width: 280px; background: #0F172A; box-shadow: 0 8px 24px rgba(0,0,0,0.4); border-top: 2px solid #D97706; border-radius: 12px; padding: 8px 0; z-index: 1001; }\n.dd.open .dd-panel { display: block; }\n.dd-panel a { display: flex !important; font-family: 'Outfit', system-ui, sans-serif; font-size: .94rem; font-weight: 500; padding: 12px 20px !important; color: #FFFFFF !important; min-height: auto !important; white-space: nowrap; }\n.dd-panel a:visited { color: #FFFFFF !important; }\n.dd-panel a:hover, .dd-panel a:focus { background: rgba(255,255,255,0.06); color: #F59E0B !important; }\n.nav-c { display: none; align-items: center; gap: 10px; flex-shrink: 0; }\n.nav-ph-dd { position: relative; display: inline-flex; }\n.nav-ph-btn { font-family: 'Outfit', system-ui, sans-serif; font-weight: 600; font-size: .9rem; color: #FFFFFF; display: inline-flex; align-items: center; gap: 6px; padding: 10px; min-height: 44px; min-width: 44px; background: transparent; border: 1px solid rgba(255,255,255,0.16); border-radius: 999px; cursor: pointer; transition: background-color .3s cubic-bezier(.4,0,.2,1), border-color .3s cubic-bezier(.4,0,.2,1), box-shadow .3s cubic-bezier(.4,0,.2,1), color .3s cubic-bezier(.4,0,.2,1), transform .3s cubic-bezier(.4,0,.2,1); white-space: nowrap; }\n.nav-ph-btn:hover { color: #F59E0B; border-color: rgba(245,158,11,0.6); }\n.nav-ph-btn:focus-visible { color: #F59E0B; border-color: rgba(245,158,11,0.6); }\n.nav-ph-dd.open .nav-ph-btn { color: #F59E0B; border-color: #F59E0B; }\n.nav-ph-pop { display: none; position: absolute; top: calc(100% + 8px); right: 0; min-width: 240px; background: #0F172A; box-shadow: 0 8px 24px rgba(0,0,0,0.4); border-top: 2px solid #D97706; border-radius: 12px; padding: 8px 0; z-index: 1001; }\n.nav-ph-dd.open .nav-ph-pop { display: block; }\n.nav-ph-pop a { display: flex !important; padding: 12px 20px !important; color: #FFFFFF !important; font-family: 'Outfit', system-ui, sans-serif; font-size: .94rem; font-weight: 500; min-height: 44px !important; align-items: center; white-space: nowrap; }\n.nav-ph-pop a:visited { color: #FFFFFF !important; }\n.nav-ph-pop a:hover, .nav-ph-pop a:focus { background: rgba(245,158,11,0.12); color: #F59E0B !important; }\n.nav-ph-pop a.dd-row { justify-content: space-between !important; gap: 16px; }\n.dd-row-label { font-size: .76rem; font-weight: 500; opacity: .65; text-transform: uppercase; letter-spacing: .04em; }\n.dd-row-value { font-size: .94rem; font-weight: 600; color: #FFFFFF; }\n.nav-ph-pop a.dd-row:hover .dd-row-value, .nav-ph-pop a.dd-row:focus .dd-row-value { color: #F59E0B !important; }\n.mob-cta-sub { display: block !important; text-align: center; padding: 12px 16px !important; color: #E5E7EB !important; font-size: .9rem; font-weight: 500; text-decoration: none; min-height: 44px; }\n.mob-cta-sub:hover, .mob-cta-sub:focus { color: #D97706 !important; }\n\n.nav-ph { font-family: 'Outfit', system-ui, sans-serif; font-weight: 600; font-size: .9rem; color: #FFFFFF; display: flex; align-items: center; gap: 6px; padding: 8px 10px; min-height: 44px; }\n.nav-ph:visited { color: #FFFFFF; }\n.nav-ph:hover, .nav-ph:focus { color: #F59E0B; }\n.nav-cta { display: inline-flex; align-items: center; justify-content: center; gap: 8px; font-family: 'Outfit', system-ui, sans-serif; font-weight: 600; font-size: clamp(.85rem,.9vw,.95rem); padding: clamp(8px,1vw,12px) clamp(14px,1.6vw,22px); border-radius: 50px; background: #B45309; color: #FFFFFF; transition: background-color .3s cubic-bezier(.4,0,.2,1), box-shadow .3s cubic-bezier(.4,0,.2,1), transform .3s cubic-bezier(.4,0,.2,1); min-height: 44px; white-space: nowrap; flex-shrink: 0; }\n.nav-cta:hover { background: var(--shell-orange-dk); transform: translateY(-1px); box-shadow: 0 8px 24px rgba(232,121,42,.35); }\n.nav-h { display: flex; align-items: center; justify-content: center; background: none; border: none; cursor: pointer; width: 44px; height: 44px; position: relative; z-index: 1002; padding: 0; }\n.nav-h-i { display: block; width: 24px; height: 24px; position: relative; }\n.nav-h-i span { display: block; width: 100%; height: 2.5px; background: #FFFFFF; transition: background-color .3s cubic-bezier(.4,0,.2,1), top .3s cubic-bezier(.4,0,.2,1), bottom .3s cubic-bezier(.4,0,.2,1), transform .3s cubic-bezier(.4,0,.2,1), opacity .3s cubic-bezier(.4,0,.2,1); position: absolute; left: 0; right: 0; }\n.nav-h:active .nav-h-i span, .nav-h.on .nav-h-i span { background: #F59E0B; }\n.nav-h-i span:nth-child(1) { top: 4px; }\n.nav-h-i span:nth-child(2) { top: 50%; transform: translateY(-50%); }\n.nav-h-i span:nth-child(3) { bottom: 4px; }\n.nav-h.on .nav-h-i span:nth-child(1) { top: 50%; transform: translateY(-50%) rotate(45deg); }\n.nav-h.on .nav-h-i span:nth-child(2) { opacity: 0; }\n.nav-h.on .nav-h-i span:nth-child(3) { bottom: 50%; transform: translateY(50%) rotate(-45deg); }\n.mob-bd { position: fixed; inset: 0; background: rgba(0,0,0,.55); opacity: 0; pointer-events: none; transition: opacity .3s cubic-bezier(.4,0,.2,1); z-index: 1000; }\n.mob-bd.on { opacity: 1; pointer-events: auto; }\n.mob { position: fixed; top: 0; right: 0; bottom: 0; width: 100%; max-width: 380px; background: #0F172A; box-shadow: 0 0 40px rgba(0,0,0,.45); color: #FFFFFF; z-index: 1001; display: flex; flex-direction: column; transform: translateX(100%); visibility: hidden; transition: transform .3s cubic-bezier(.4,0,.2,1), visibility 0s .3s; overflow-y: auto; -webkit-overflow-scrolling: touch; }\n.mob.on { transform: translateX(0); visibility: visible; transition: transform .3s cubic-bezier(.4,0,.2,1); }\n.mob-h { display: flex; align-items: center; justify-content: space-between; padding: 16px; border-bottom: 1px solid rgba(255,255,255,.12); position: sticky; top: 0; background: #0F172A; z-index: 2; }\n.mob-logo { font-family: 'Outfit', system-ui, sans-serif; font-weight: 700; font-size: 1.05rem; color: #D97706; letter-spacing: .04em; }\n.mob-x { width: 44px; height: 44px; border: none; background: none; cursor: pointer; font-size: 28px; line-height: 1; color: #FFFFFF; display: flex; align-items: center; justify-content: center; border-radius: 8px; }\n.mob-x:hover, .mob-x:focus { background: rgba(255,255,255,0.08); color: #D97706; }\n.mob-nav { flex: 1; padding: 8px 0; }\n.mob-section { color: #94A3B8; font-size: 11px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; padding: 16px 20px 6px; }\n.mob-divider { height: 1px; background: rgba(255,255,255,.12); margin: 8px 0; }\n.mob-tel { color: #FFFFFF; }\n.mob-tel:hover, .mob-tel:focus { color: #D97706; }\n.mob-tel svg { color: #FFFFFF; }\n.acc { border-bottom: 1px solid rgba(255,255,255,.12); }\n.acc-trig { display: flex; align-items: center; justify-content: space-between; width: 100%; background: none; border: none; cursor: pointer; font-family: 'Outfit', system-ui, sans-serif; font-size: 1.05rem; font-weight: 500; color: #FFFFFF; padding: 14px 20px; min-height: 48px; text-align: left; }\n.acc-chev { transition: transform .3s cubic-bezier(.4,0,.2,1); color: rgba(255,255,255,0.6); }\n.acc.open .acc-chev { transform: rotate(180deg); color: #D97706; }\n.acc.open .acc-trig { color: #D97706; }\n.acc-panel { display: none; flex-direction: column; background: rgba(255,255,255,0.04); padding: 4px 0 8px; }\n.acc.open .acc-panel { display: flex; }\n.acc-panel a { font-family: 'Source Sans 3', system-ui, sans-serif; font-size: .94rem; color: #E5E7EB; padding: 10px 36px; min-height: 44px; display: flex; align-items: center; border-bottom: 1px solid rgba(255,255,255,0.06); }\n.acc-panel a:visited { color: #E5E7EB; }\n.acc-panel a:last-child { border-bottom: none; }\n.acc-panel a:hover, .acc-panel a:focus { color: #D97706; background: rgba(255,255,255,0.06); }\n.mob-link { display: flex; align-items: center; font-family: 'Outfit', system-ui, sans-serif; font-size: 1.05rem; font-weight: 500; color: #FFFFFF; padding: 14px 20px; min-height: 48px; border-bottom: 1px solid rgba(255,255,255,.12); }\n.mob-link:visited { color: #FFFFFF; }\n.mob-link:hover, .mob-link:focus { color: #D97706; }\n.mob-cta { padding: 16px; display: flex; flex-direction: column; gap: 10px; border-top: 1px solid rgba(255,255,255,.12); }\n.mob-cta .btn { min-height: 56px; width: 100%; display: inline-flex; align-items: center; justify-content: center; font-family: 'Outfit', system-ui, sans-serif; font-weight: 700; border-radius: 999px; padding: 14px 20px; font-size: 16px; }\n.mob-cta .btn-p { background: #B45309; color: #FFFFFF !important; }\n.mob-cta .btn-p:hover, .mob-cta .btn-p:focus { background: #D97706; color: #FFFFFF !important; }\n.mob-cta .btn-d { background: transparent; color: #FFFFFF; border: 1px solid rgba(255,255,255,.24); }\n.mob-cta .btn-d:hover, .mob-cta .btn-d:focus { color: #D97706; border-color: #D97706; }\n.ft { background: var(--shell-ft-bg); color: rgba(255,255,255,.6); padding: 48px 0 24px; }\n.ft a { color: rgba(255,255,255,.7); }\n.ft a:hover { color: var(--shell-orange); }\n.ft-g { display: grid; grid-template-columns: 1fr; gap: 0; margin-bottom: 24px; }\n.ft-br { padding: 0 0 28px 0; border-bottom: 1px solid rgba(255,255,255,.08); }\n.ft-br p { font-size: .95rem; line-height: 1.7; margin: 14px 0 0; max-width: 340px; }\n.ft-meta { margin-top: 14px; font-size: .88rem; line-height: 1.7; color: rgba(255,255,255,.55); }\n.ft-trust { margin-top: 14px; font-size: .78rem; line-height: 1.6; color: rgba(255,255,255,.5); }\n.ft-hours { margin-top: 10px; font-size: .85rem; color: rgba(255,255,255,.55); }\n.ft-lo { font-family: 'Outfit', system-ui, sans-serif; font-weight: 700; font-size: 1.2rem; color: #FFFFFF; display: flex; align-items: center; gap: 8px; margin-bottom: 6px; }\n.ft-lo span { color: var(--shell-orange); }\n.ft h4 { font-family: 'Outfit', system-ui, sans-serif; font-size: .85rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #FFFFFF; margin: 0; }\n.ft-acc { border-bottom: 1px solid rgba(255,255,255,.08); }\n.ft-acc-trig { display: flex; align-items: center; justify-content: space-between; width: 100%; background: none; border: none; cursor: pointer; color: #FFFFFF; padding: 18px 0; font-family: 'Outfit', system-ui, sans-serif; font-size: .85rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; text-align: left; min-height: 48px; }\n.ft-acc-chev { transition: transform .3s cubic-bezier(.4,0,.2,1); color: rgba(255,255,255,.5); }\n.ft-acc.open .ft-acc-chev { transform: rotate(180deg); color: var(--shell-orange); }\n.ft-acc-body { display: none; list-style: none; padding: 0 0 18px 0; margin: 0; flex-direction: column; gap: 6px; }\n.ft-acc.open .ft-acc-body { display: flex; }\n.ft-lk { list-style: none; display: flex; flex-direction: column; gap: 8px; padding: 0; margin: 0; }\n.ft-lk a, .ft-acc-body a { font-size: .92rem; color: rgba(255,255,255,.55); transition: color .3s cubic-bezier(.4,0,.2,1); min-height: 40px; display: inline-flex; align-items: center; }\n.ft-lk a:hover, .ft-acc-body a:hover { color: var(--shell-orange); }\n.ft-sm { padding: 24px 0; border-top: 1px solid rgba(255,255,255,.08); border-bottom: 1px solid rgba(255,255,255,.08); }\n.ft-sm .ft-sm-h { font-weight: 700; font-size: 16px; margin-top: 0; margin-bottom: 10px; }\n.ft-sm-list { font-size: 12px; line-height: 1.8; color: rgba(255,255,255,.45); margin: 0; }\n.ft-sm-list a { color: rgba(255,255,255,.55); }\n.ft-sm-list a:hover { color: var(--shell-orange); }\n.ft-bt { padding-top: 20px; display: flex; justify-content: space-between; align-items: center; font-size: .78rem; flex-direction: column; gap: 12px; text-align: center; }\n.ft-bl { display: flex; gap: 12px; flex-wrap: wrap; justify-content: center; }\n.ft-bl a { color: rgba(255,255,255,.72); transition: color .3s cubic-bezier(.4,0,.2,1); display: inline-flex; align-items: center; min-height: 24px; }\n.ft-bl a:hover { color: var(--shell-orange); }\n@media (min-width: 480px) { .ctn { padding: 0 20px; } .nav-in { padding: 0 20px; } }\n@media (min-width: 768px) { .ctn { padding: 0 24px; } .brand-logo { height: 36px; max-width: 220px; } .nav-in { padding: 0 24px; } .ft { padding: 64px 0 32px; } .ft-g { grid-template-columns: 1fr 1fr; gap: 32px; margin-bottom: 36px; } .ft-br { padding: 0; border-bottom: none; grid-column: 1 / -1; } .ft-acc { border: none; } .ft-acc-trig { padding: 0 0 18px 0; cursor: default; pointer-events: none; min-height: auto; } .ft-acc-chev { display: none; } .ft-acc-body { display: flex !important; padding-bottom: 0; } .ft-bt { flex-direction: row; text-align: left; font-size: .82rem; } .ft-bl { flex-wrap: nowrap; justify-content: flex-end; } }\n@media (min-width: 1024px) { .nav-in { padding: 0 28px; height: 64px; } .brand-logo { height: 40px; max-width: 240px; } .nav-l { display: flex; min-width: 0; flex: 1 1 auto; } .nav-c { display: flex; flex-shrink: 0; min-width: 0; } .nav-h { display: none; } .nav-logo-m { font-size: 1.15rem; } .nav-logo-s { font-size: .65rem; } .mob, .mob-bd { display: none !important; } .ft { padding: 72px 0 36px; } .ft-g { grid-template-columns: 2fr 1.4fr 1.4fr 1.4fr 1.2fr; gap: 40px; margin-bottom: 48px; } .ft-br { grid-column: auto; } .ft-lo { font-size: 1.3rem; } .ft h4 { font-size: .88rem; } .ft-lk a, .ft-acc-body a { font-size: .95rem; min-height: 32px; } .ft-sm { padding: 28px 0; } .ft-bt { padding-top: 28px; font-size: .85rem; } .ft-bl { gap: 24px; } }\n@media (min-width: 1280px) { .ctn { padding: 0 32px; } .nav-in { padding-inline: clamp(20px,2vw,32px); } .nav-cta { font-size: .95rem; padding: 12px 22px; } }\n/* === HEADER QUICK ACTIONS === */\n.nav-in { min-width: 0; overflow-x: clip; }\n.nav-logo { min-width: 0; flex-shrink: 1; overflow: hidden; }\n.nav-h { flex-shrink: 0; }\n.nav-mq { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-shrink: 0; min-width: 0; }\n.nav-ico, .nav-ph-btn { width: 44px; height: 44px; min-width: 44px; display: inline-flex !important; align-items: center; justify-content: center; color: #FFFFFF !important; border: 1px solid rgba(245,158,11,.65) !important; border-radius: 999px; background: linear-gradient(135deg,#F59E0B 0%,#D97706 100%) !important; box-shadow: 0 8px 22px rgba(217,119,6,.34), inset 0 1px 0 rgba(255,255,255,.22); transition: transform .22s ease, box-shadow .22s ease, background .22s ease, border-color .22s ease; text-decoration: none; flex-shrink: 0; }\n.nav-ico:visited { color: #FFFFFF !important; }\n.nav-ico:hover, .nav-ico:focus-visible, .nav-ph-btn:hover, .nav-ph-btn:focus-visible, .nav-ph-dd.open .nav-ph-btn { color: #FFFFFF !important; border-color: #FBBF24 !important; background: linear-gradient(135deg,#FBBF24 0%,#E8792A 100%) !important; box-shadow: 0 10px 28px rgba(245,158,11,.46), 0 0 0 3px rgba(245,158,11,.20); transform: translateY(-1px); }\n.nav-ico svg, .nav-ph-btn svg { width: 18px; height: 18px; display: block; color: currentColor !important; stroke: currentColor !important; filter: drop-shadow(0 1px 1px rgba(0,0,0,.25)); }\n.nav-c .nav-ico { display: inline-flex !important; }\n/* Primary conversion control for the compact header. .nav-c is hidden below 1280px,\n   so without this the amber Free IT Assessment button only exists inside the\n   hamburger on exactly the traffic that arrives on phones and tablets.\n   Explicit transition properties only - a bare duration means transition-property:all\n   and pins colour at its start value (CLAUDE.md 6). */\n.nav-mq-cta { display: inline-flex; align-items: center; justify-content: center; height: 44px; min-height: 44px; padding: 0 16px; border-radius: 999px; font-family: 'Outfit', system-ui, sans-serif; font-weight: 700; font-size: .9rem; letter-spacing: -0.01em; white-space: nowrap; text-decoration: none; color: #FFFFFF !important; border: 1px solid rgba(245,158,11,.65); background: linear-gradient(135deg,#F59E0B 0%,#D97706 100%); box-shadow: 0 8px 22px rgba(217,119,6,.34), inset 0 1px 0 rgba(255,255,255,.22); transition: background-color .22s ease, box-shadow .22s ease, transform .22s ease, border-color .22s ease; flex-shrink: 0; }\n.nav-mq-cta:visited { color: #FFFFFF !important; }\n.nav-mq-cta:hover, .nav-mq-cta:focus-visible { color: #FFFFFF !important; border-color: #FBBF24; background: linear-gradient(135deg,#FBBF24 0%,#E8792A 100%); box-shadow: 0 10px 28px rgba(245,158,11,.46), 0 0 0 3px rgba(245,158,11,.20); transform: translateY(-1px); }\n/* Compact header budget (iPhone 17 Pro Max is 440 CSS px, not 400):\n   padding ~28 + gaps ~16 + call 44 + Assessment ~100 + hamburger 44 = ~232\n   before the logo. Logo+support together do not fit. Support is already in the\n   drawer; Assessment must stay visible (clicks-not-impressions). Hide support\n   on every phone, not only under 400px. */\n.nav-mq .nav-support { display: none !important; }\n.nav-c { gap: 10px; }\n@media (max-width: 767px) {\n  .nav-in { gap: 8px; padding-inline: max(12px, env(safe-area-inset-left)) max(12px, env(safe-area-inset-right)); }\n  .nav-mq { gap: 6px; }\n  .nav-mq-cta { padding: 0 12px; font-size: .85rem; }\n  .brand-logo { max-width: 140px; height: 28px; }\n}\n@media (max-width: 430px) {\n  .brand-logo { max-width: 120px; }\n  .nav-mq-cta { padding: 0 10px; font-size: .8rem; }\n}\n@media (max-width: 359px) {\n  .nav-in { gap: 6px; }\n  .nav-mq { gap: 6px; }\n  .nav-mq .nav-call { display: none !important; }\n  .nav-mq-cta { height: 40px; min-height: 40px; padding: 0 10px; }\n  .nav-ico, .nav-ph-btn, .nav-h { width: 40px; height: 40px; min-width: 40px; }\n  .brand-logo { max-width: 108px; }\n}\n@media (min-width: 768px) {\n  .brand-logo { max-width: 220px; height: 36px; }\n  .nav-mq { gap: 10px; }\n  .nav-mq .nav-support { display: inline-flex !important; }\n}\n@media (min-width: 1024px) {\n  .nav-mq { display: none; }\n  .brand-logo { max-width: 240px; height: 40px; }\n  .nav-c .nav-ico { display: inline-flex !important; }\n}\n\n/* iPad landscape / narrow desktop (<1280px): the full nav needs ~1280px to fit, so keep the compact hamburger header until then (prevents nav/icon overlap on iPad Mini landscape). */\n@media (max-width: 1279px) { .nav-l { display: none !important; } .nav-c { display: none !important; } .nav-h { display: flex !important; } .nav-mq { display: flex !important; } .mob { display: flex !important; } .mob-bd { display: block !important; } }\n\n\n.ft-top { padding: 0 0 24px 0; margin: 0 0 24px 0; border-bottom: 1px solid rgba(255,255,255,.10); }\n.ft-news { display: flex; flex-direction: column; gap: 10px; max-width: 480px; }\n.ft-news-h { font-size: 16px; font-weight: 700; color: #FFFFFF; margin: 0; letter-spacing: -0.005em; }\n.ft-news-p { font-size: 13px; line-height: 1.5; color: #E5E7EB; margin: 0; }\n.ft-news-form { width: 100%; }\n.ft-news-row { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; align-items: stretch; width: 100%; }\n.ft-news-row input[type=\"email\"] { grid-column: 1 / -1; min-height: 44px; }\n.ft-news-row input[type=\"text\"] { min-height: 44px; }\n.ft-news-row button[type=\"submit\"] { grid-column: 1 / -1; min-height: 48px; font-weight: 700; letter-spacing: 0.01em; }\n.ft-news-row input[type=\"email\"], .ft-news-row input[type=\"text\"] { background: rgba(255,255,255,.06); border: 1px solid rgba(255,255,255,.18); color: #FFFFFF; border-radius: 8px; padding: 10px 12px; font-size: 13px; line-height: 1.4; outline: none; min-width: 0; }\n.ft-news-row input::placeholder { color: rgba(255,255,255,.5); }\n.ft-news-row input:focus { border-color: #D97706; background: rgba(255,255,255,.10); }\n.ft-news-row button[type=\"submit\"] { background: #B45309; color: #FFFFFF; border: 0; border-radius: 8px; font-weight: 700; font-size: 13px; padding: 0 16px; cursor: pointer; white-space: nowrap; min-height: 40px; }\n.ft-news-row button[type=\"submit\"]:hover { background: #D97706; }\n.ft-news-fine { font-size: 11px; line-height: 1.5; color: #94A3B8; margin: 0; }\n\n.skip-lk { position: absolute; left: -9999px; top: 0; z-index: 3000; background: #0F172A; color: #fff; padding: 10px 16px; font: 600 14px Outfit, system-ui, sans-serif; border-radius: 0 0 8px 0; }\n.skip-lk:focus { left: 0; outline: 2px solid #D97706; }\n  [data-shell-skip-target]:focus { outline: none; }\n.ft .ft-acc-t { font-family: 'Outfit', system-ui, sans-serif; font-size: .85rem; font-weight: 600; letter-spacing: .08em; text-transform: uppercase; color: #FFFFFF; margin: 0; }\na:focus-visible, button:focus-visible { outline: 2px solid #B45309; outline-offset: 2px; }\n@media (prefers-reduced-motion: reduce) { .rv { opacity: 1 !important; transform: none !important; transition: none !important; } .mob { transition: none !important; } * { scroll-behavior: auto !important; } }\n\n/* ===== Footer brand column — clarity & spacing pass (homepage overrides, CSS-only) ===== */\n/* GHL newsletter embed: form_embed.js sets exact height; min-height is the no-JS floor */\n.ft-news-embed { width: 100%; margin-top: 14px; }\n.ft-news-embed iframe { display: block; width: 100%; border: 0; border-radius: 12px; min-height: 300px; }\n/* form_embed.js hides the embed while it measures (opacity:0, visibility:hidden,\n   position:absolute, left:-9999px) and has been observed not reverting, which\n   collapses the wrapper to 0px and loses the signup entirely. A stylesheet\n   !important outranks those inline styles, so the newsletter always stays\n   visible and in flow; the script is still free to set the exact height. */\n.ft-news-embed iframe { position: relative !important; left: auto !important; top: auto !important; opacity: 1 !important; visibility: visible !important; pointer-events: auto !important; }\n/* tagline */\n.ft .ft-br > p { color: #CBD5E1; margin: 12px 0 0; }\n/* address + phone + email: brighter, roomier, tappable */\n.ft .ft-meta { display: block; margin-top: 18px; font-size: .95rem; line-height: 1.9; color: #E5E7EB; }\n.ft .ft-meta a { display: inline-block; color: #FFFFFF; font-weight: 600; text-decoration: none; padding: 3px 0; }\n.ft .ft-meta a:hover, .ft .ft-meta a:focus { color: var(--shell-orange); }\n/* trust badges: quieter so the contact info pops */\n.ft .ft-trust { margin-top: 16px; font-size: .78rem; line-height: 1.7; color: rgba(255,255,255,.45); max-width: 340px; }\n/* office hours: labeled + brighter */\n.ft .ft-hours { margin-top: 14px; font-size: .92rem; font-weight: 600; color: #E5E7EB; }\n.ft .ft-hours::before { content: \"Office Hours\"; display: block; font-size: .72rem; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; color: rgba(255,255,255,.45); margin-bottom: 3px; }\n/* newsletter section: clear separation from the contact block */\n.ft .ft-news { margin-top: 26px; padding-top: 22px; border-top: 1px solid rgba(255,255,255,.10); }\n.ft .ft-news-p { margin-top: 8px; color: #CBD5E1; }\n.ft .ft-news-fine { margin-top: 10px; }\n/* NEWSLETTER TYPE + RHYTHM FIX.\n   Two faults, both measured: (1) \".ft-br p\" (0,1,1) is the brand-tagline rule and\n   outranked every .ft-news-* class (0,1,0), so the heading, blurb and fine print\n   ALL rendered 15.2px / line-height 25.84px / max-width 340px - visually identical\n   to each other instead of 16 / 13 / 11px. (2) .ft-news is a flex column with\n   gap:10px while its children also carry margin-top, so the gaps compounded to\n   18/24/20 instead of the intended 8/14/10.\n   The rules below are (0,3,0) so the newsletter owns its own type, and the flex\n   gap is zeroed so the explicit margins alone set the rhythm. */\n.ft .ft-news { gap: 0; }\n.ft .ft-news .ft-news-h { font-size: 16px; line-height: 1.3; margin: 0; max-width: none; }\n.ft .ft-news .ft-news-p { font-size: 13px; line-height: 1.5; margin: 8px 0 0; max-width: none; }\n.ft .ft-news .ft-news-fine { font-size: 11px; line-height: 1.5; margin: 10px 0 0; max-width: none; }\n.ft .ft-news .ft-news-embed { margin-top: 14px; }\n`;export const NAV_DRAWER_HTML=`\n<a class=\"skip-lk\" href=\"#main\">Skip to content</a><header><nav class=\"nav\" role=\"navigation\" aria-label=\"Primary navigation\"><div class=\"nav-in\"><a href=\"/\" class=\"nav-logo\" aria-label=\"RANGO TECHNOLOGIES home\"><img src=\"https://framerusercontent.com/images/dxsWCchYA4pbhpfnvkADM0aCEF4.png\" alt=\"RANGO TECHNOLOGIES — Managed IT Services South Florida\" width=\"500\" height=\"100\" class=\"brand-logo\" /></a><ul class=\"nav-l\"><li class=\"dd\"><button class=\"dd-trig\" aria-expanded=\"false\" aria-controls=\"dd-services\">Services <svg class=\"dd-chev\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"/></svg></button><div class=\"dd-panel\" id=\"dd-services\"><a href=\"/managed-it-services\">Managed IT Services</a><a href=\"/cybersecurity\">Cybersecurity &amp; Threat Protection</a><a href=\"/mdr-xdr\">Managed Detection &amp; Response (MDR/XDR)</a><a href=\"/microsoft-365-consulting\">Microsoft 365 Consulting</a><a href=\"/hipaa-it-compliance\">HIPAA IT Compliance</a><a href=\"/cloud-backup-disaster-recovery\">Cloud Backup &amp; Disaster Recovery</a><a href=\"/network-administration\">Network Administration</a><a href=\"/business-wifi\">Business Wi-Fi &amp; Networking</a><a href=\"/voip-phone-systems\">VoIP Business Phone Systems</a><a href=\"/security-camera-installation\">Security Cameras</a><a href=\"/access-control\">Access Control</a><a href=\"/remote-it-support\">Remote IT Support</a><a href=\"/onsite-it-support\">Onsite IT Support</a></div></li><li class=\"dd\"><button class=\"dd-trig\" aria-expanded=\"false\" aria-controls=\"dd-industries\">Industries <svg class=\"dd-chev\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"/></svg></button><div class=\"dd-panel\" id=\"dd-industries\"><a href=\"/industries-medical-dental\">Medical &amp; Dental</a><a href=\"/industries-senior-living\">Senior Living</a><a href=\"/industries-law-firms\">Law Firms</a><a href=\"/industries-accounting-cpa\">Accounting &amp; CPA Firms</a><a href=\"/industries-professional-services\">Professional Services</a><a href=\"/industries-construction-aec\">Construction &amp; AEC</a><a href=\"/industries-logistics-freight\">Logistics &amp; Freight</a><a href=\"/industries-manufacturing\">Manufacturing</a><a href=\"/industries-wholesale-distribution\">Wholesale &amp; Distribution</a><a href=\"/industries-nonprofits-churches\">Nonprofits &amp; Churches</a><a href=\"/industries-commercial-offices\">Commercial Offices</a><a href=\"/industries-remote-hybrid-teams\">Remote &amp; Hybrid Teams</a></div></li><li class=\"dd\"><button class=\"dd-trig\" aria-expanded=\"false\" aria-controls=\"dd-areas\">Service Areas <svg class=\"dd-chev\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"/></svg></button><div class=\"dd-panel\" id=\"dd-areas\"><a href=\"/locations-miami-lakes\">Miami Lakes</a><a href=\"/locations-doral\">Doral</a><a href=\"/locations-hialeah\">Hialeah</a><a href=\"/locations-coral-gables\">Coral Gables</a><a href=\"/locations-kendall\">Kendall</a><a href=\"/locations-homestead\">Homestead</a><a href=\"/locations-opa-locka\">Opa-Locka</a><a href=\"/locations-medley\">Medley</a><a href=\"/locations-miramar\">Miramar</a><a href=\"/locations-pembroke-pines\">Pembroke Pines</a><a href=\"/locations-cooper-city\">Cooper City</a><a href=\"/locations-weston\">Weston</a><a href=\"/locations-miami-dade\">Miami-Dade County</a><a href=\"/locations-south-florida\">South Florida</a></div></li><li><a href=\"/about\">About</a></li><li><a href=\"/reviews\">Reviews</a></li><li><a href=\"/blog\">Blog</a></li><li><a href=\"/contact\">Contact</a></li></ul><div class=\"nav-c\"><div class=\"dd nav-ph-dd\"><button class=\"dd-trig nav-ph-btn\" type=\"button\" aria-expanded=\"false\" aria-controls=\"dd-phone\" aria-label=\"Call RANGO Technologies\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><path d=\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72c.12.8.32 1.58.59 2.33a2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.75.27 1.53.47 2.33.59A2 2 0 0122 16.92z\"/></svg></button><div class=\"dd-panel nav-ph-pop\" id=\"dd-phone\"><a href=\"tel:+18667264648\" class=\"dd-row\" aria-label=\"Call toll-free 1.866.RANGO.IT\"><span class=\"dd-row-label\">Toll-free</span><span class=\"dd-row-value\">1.866.RANGO.IT</span></a><a href=\"tel:+13059018990\" class=\"dd-row\" aria-label=\"Call local 305-901-8990\"><span class=\"dd-row-label\">Local</span><span class=\"dd-row-value\">(305) 901-8990</span></a></div></div><a href=\"/support\" class=\"nav-ico nav-support\" aria-label=\"Support\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 13a8 8 0 0116 0\"/><path d=\"M5 13v3a2 2 0 002 2h1v-7H7a2 2 0 00-2 2z\"/><path d=\"M19 13v3a2 2 0 01-2 2h-1v-7h1a2 2 0 012 2z\"/><path d=\"M12 20h2a4 4 0 004-4\"/></svg></a><a href=\"/free-it-assessment\" class=\"nav-cta\">Free IT Assessment</a></div><div class=\"nav-mq\" aria-label=\"Quick header actions\"><a href=\"tel:+18667264648\" class=\"nav-ico nav-call\" aria-label=\"Call RANGO Technologies\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" aria-hidden=\"true\"><path d=\"M22 16.92v3a2 2 0 01-2.18 2 19.79 19.79 0 01-8.63-3.07 19.5 19.5 0 01-6-6 19.79 19.79 0 01-3.07-8.67A2 2 0 014.11 2h3a2 2 0 012 1.72c.12.8.32 1.58.59 2.33a2 2 0 01-.45 2.11L8.09 9.91a16 16 0 006 6l1.27-1.27a2 2 0 012.11-.45c.75.27 1.53.47 2.33.59A2 2 0 0122 16.92z\"/></svg></a><a href=\"/support\" class=\"nav-ico nav-support\" aria-label=\"Support\"><svg width=\"18\" height=\"18\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\" aria-hidden=\"true\"><path d=\"M4 13a8 8 0 0116 0\"/><path d=\"M5 13v3a2 2 0 002 2h1v-7H7a2 2 0 00-2 2z\"/><path d=\"M19 13v3a2 2 0 01-2 2h-1v-7h1a2 2 0 012 2z\"/><path d=\"M12 20h2a4 4 0 004-4\"/></svg></a><a href=\"/free-it-assessment\" class=\"nav-mq-cta\">Assessment</a></div><button class=\"nav-h\" aria-label=\"Menu\" aria-expanded=\"false\" aria-controls=\"mob\"><span class=\"nav-h-i\"><span></span><span></span><span></span></span></button></div></nav></header>\n<div class=\"mob-bd\" aria-hidden=\"true\"></div>\n<aside class=\"mob\" id=\"mob\" role=\"dialog\" aria-label=\"Main menu\" aria-modal=\"true\"><div class=\"mob-h\"><div class=\"mob-logo\">RANGO TECHNOLOGIES</div><button class=\"mob-x\" aria-label=\"Close menu\">&times;</button></div><nav class=\"mob-nav\" aria-label=\"Mobile primary navigation\"><div class=\"acc\"><button class=\"acc-trig\" aria-expanded=\"false\" aria-controls=\"acc-services\">Services <svg class=\"acc-chev\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"/></svg></button><div class=\"acc-panel\" id=\"acc-services\"><a href=\"/managed-it-services\">Managed IT Services</a><a href=\"/cybersecurity\">Cybersecurity &amp; Threat Protection</a><a href=\"/mdr-xdr\">Managed Detection &amp; Response (MDR/XDR)</a><a href=\"/microsoft-365-consulting\">Microsoft 365 Consulting</a><a href=\"/hipaa-it-compliance\">HIPAA IT Compliance</a><a href=\"/cloud-backup-disaster-recovery\">Cloud Backup &amp; Disaster Recovery</a><a href=\"/network-administration\">Network Administration</a><a href=\"/business-wifi\">Business Wi-Fi &amp; Networking</a><a href=\"/voip-phone-systems\">VoIP Business Phone Systems</a><a href=\"/security-camera-installation\">Security Cameras</a><a href=\"/access-control\">Access Control</a><a href=\"/remote-it-support\">Remote IT Support</a><a href=\"/onsite-it-support\">Onsite IT Support</a></div></div><div class=\"acc\"><button class=\"acc-trig\" aria-expanded=\"false\" aria-controls=\"acc-industries\">Industries <svg class=\"acc-chev\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"/></svg></button><div class=\"acc-panel\" id=\"acc-industries\"><a href=\"/industries-medical-dental\">Medical &amp; Dental</a><a href=\"/industries-senior-living\">Senior Living</a><a href=\"/industries-law-firms\">Law Firms</a><a href=\"/industries-accounting-cpa\">Accounting &amp; CPA Firms</a><a href=\"/industries-professional-services\">Professional Services</a><a href=\"/industries-construction-aec\">Construction &amp; AEC</a><a href=\"/industries-logistics-freight\">Logistics &amp; Freight</a><a href=\"/industries-manufacturing\">Manufacturing</a><a href=\"/industries-wholesale-distribution\">Wholesale &amp; Distribution</a><a href=\"/industries-nonprofits-churches\">Nonprofits &amp; Churches</a><a href=\"/industries-commercial-offices\">Commercial Offices</a><a href=\"/industries-remote-hybrid-teams\">Remote &amp; Hybrid Teams</a></div></div><div class=\"acc\"><button class=\"acc-trig\" aria-expanded=\"false\" aria-controls=\"acc-areas\">Service Areas <svg class=\"acc-chev\" width=\"16\" height=\"16\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"/></svg></button><div class=\"acc-panel\" id=\"acc-areas\"><a href=\"/locations-miami-lakes\">Miami Lakes</a><a href=\"/locations-doral\">Doral</a><a href=\"/locations-hialeah\">Hialeah</a><a href=\"/locations-coral-gables\">Coral Gables</a><a href=\"/locations-kendall\">Kendall</a><a href=\"/locations-homestead\">Homestead</a><a href=\"/locations-opa-locka\">Opa-Locka</a><a href=\"/locations-medley\">Medley</a><a href=\"/locations-miramar\">Miramar</a><a href=\"/locations-pembroke-pines\">Pembroke Pines</a><a href=\"/locations-cooper-city\">Cooper City</a><a href=\"/locations-weston\">Weston</a><a href=\"/locations-miami-dade\">Miami-Dade County</a><a href=\"/locations-south-florida\">South Florida</a></div></div><a href=\"/about\" class=\"mob-link\">About</a><a href=\"/reviews\" class=\"mob-link\">Reviews</a><a href=\"/blog\" class=\"mob-link\">Blog</a><a href=\"/support\" class=\"mob-link\">Support</a><a href=\"/contact\" class=\"mob-link\">Contact</a></nav><div class=\"mob-cta\"><a href=\"/free-it-assessment\" class=\"btn btn-p\">Free IT Assessment</a><a href=\"tel:+18667264648\" class=\"btn btn-d\">Call 1.866.RANGO.IT</a><a href=\"tel:+13059018990\" class=\"mob-cta-sub\">or call local (305) 901-8990</a></div></aside>\n`;export const FOOTER_HTML=`\n<footer class=\"ft\" role=\"contentinfo\"><div class=\"ctn\"><div class=\"ft-g\"><div class=\"ft-br\"><div class=\"ft-lo\"><span>RANGO</span> TECHNOLOGIES</div><p>Managed IT and Cybersecurity for South Florida businesses.</p><address style=\"font-style:normal\" class=\"ft-meta\">14100 Palmetto Frontage Rd, Suite 108<br>Miami Lakes, FL 33016<br><a href=\"tel:18667264648\">1.866.RANGO.IT</a><br><a href=\"mailto:sales@rango.tech\">sales@rango.tech</a></address><div class=\"ft-trust\"><a href=\"https://www.bbb.org/us/fl/miami-lakes/profile/information-technology-services/rango-technologies-llc-0633-92036156\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:inherit;text-decoration:none\">BBB A+ Rated</a> &middot; <a href=\"https://maps.google.com/?cid=12462293147300038743\" target=\"_blank\" rel=\"noopener noreferrer\" style=\"color:inherit;text-decoration:none\">5.0&#9733; Google</a> &middot; Microsoft Partner &middot; Ubiquiti Full Stack Pro &middot; Brivo Authorized Dealer &middot; Lenovo Business Partner &middot; ButterflyMX Certified</div><div class=\"ft-hours\">Mon&ndash;Fri, 8:00 AM &ndash; 6:00 PM ET</div><div class=\"ft-news\" aria-labelledby=\"ft-news-h\"><p id=\"ft-news-h\" class=\"ft-news-h\">GET THE RANGO IT BRIEF</p><p class=\"ft-news-p\">Short, useful updates: practical tech tips, technology news from around the world, security alerts and good deals when we find them. No spam.</p><div class=\"ft-news-embed\"><iframe src=\"https://link.rango.tech/widget/form/ibMaj1OyNErBZm2cKYXH\" id=\"inline-ibMaj1OyNErBZm2cKYXH\" data-layout=\"{'id':'INLINE'}\" data-trigger-type=\"alwaysShow\" data-trigger-value=\"\" data-activation-type=\"alwaysActivated\" data-activation-value=\"\" data-deactivation-type=\"neverDeactivate\" data-deactivation-value=\"\" data-form-name=\"Newsletter Subscriptions\" data-height=\"314\" data-layout-iframe-id=\"inline-ibMaj1OyNErBZm2cKYXH\" data-form-id=\"ibMaj1OyNErBZm2cKYXH\" title=\"Newsletter Subscriptions\"></iframe></div><p class=\"ft-news-fine\">By subscribing you agree to receive marketing emails from RANGO Technologies. Unsubscribe anytime.</p></div></div><div class=\"ft-acc\"><button class=\"ft-acc-trig\" aria-expanded=\"false\"><span class=\"ft-acc-t\">Services</span><svg class=\"ft-acc-chev\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"/></svg></button><ul class=\"ft-acc-body ft-lk\"><li><a href=\"/managed-it-services\">Managed IT Services</a></li><li><a href=\"/cybersecurity\">Cybersecurity &amp; Threat Protection</a></li><li><a href=\"/mdr-xdr\">Managed Detection &amp; Response (MDR/XDR)</a></li><li><a href=\"/microsoft-365-consulting\">Microsoft 365 Consulting</a></li><li><a href=\"/hipaa-it-compliance\">HIPAA IT Compliance</a></li><li><a href=\"/cloud-backup-disaster-recovery\">Cloud Backup &amp; Disaster Recovery</a></li><li><a href=\"/network-administration\">Network Administration</a></li><li><a href=\"/business-wifi\">Business Wi-Fi &amp; Networking</a></li><li><a href=\"/voip-phone-systems\">VoIP Business Phone Systems</a></li><li><a href=\"/security-camera-installation\">Security Cameras</a></li><li><a href=\"/access-control\">Access Control</a></li><li><a href=\"/remote-it-support\">Remote IT Support</a></li><li><a href=\"/onsite-it-support\">Onsite IT Support</a></li></ul></div><div class=\"ft-acc\"><button class=\"ft-acc-trig\" aria-expanded=\"false\"><span class=\"ft-acc-t\">Industries</span><svg class=\"ft-acc-chev\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"/></svg></button><ul class=\"ft-acc-body ft-lk\"><li><a href=\"/industries-medical-dental\">Medical &amp; Dental</a></li><li><a href=\"/industries-senior-living\">Senior Living</a></li><li><a href=\"/industries-law-firms\">Law Firms</a></li><li><a href=\"/industries-accounting-cpa\">Accounting &amp; CPA Firms</a></li><li><a href=\"/industries-professional-services\">Professional Services</a></li><li><a href=\"/industries-construction-aec\">Construction &amp; AEC</a></li><li><a href=\"/industries-logistics-freight\">Logistics &amp; Freight</a></li><li><a href=\"/industries-manufacturing\">Manufacturing</a></li><li><a href=\"/industries-wholesale-distribution\">Wholesale &amp; Distribution</a></li><li><a href=\"/industries-nonprofits-churches\">Nonprofits &amp; Churches</a></li><li><a href=\"/industries-commercial-offices\">Commercial Offices</a></li><li><a href=\"/industries-remote-hybrid-teams\">Remote &amp; Hybrid Teams</a></li></ul></div><div class=\"ft-acc\"><button class=\"ft-acc-trig\" aria-expanded=\"false\"><span class=\"ft-acc-t\">Service Areas</span><svg class=\"ft-acc-chev\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"/></svg></button><ul class=\"ft-acc-body ft-lk\"><li><a href=\"/locations-miami-lakes\">Miami Lakes</a></li><li><a href=\"/locations-doral\">Doral</a></li><li><a href=\"/locations-hialeah\">Hialeah</a></li><li><a href=\"/locations-coral-gables\">Coral Gables</a></li><li><a href=\"/locations-kendall\">Kendall</a></li><li><a href=\"/locations-homestead\">Homestead</a></li><li><a href=\"/locations-opa-locka\">Opa-Locka</a></li><li><a href=\"/locations-medley\">Medley</a></li><li><a href=\"/locations-miramar\">Miramar</a></li><li><a href=\"/locations-pembroke-pines\">Pembroke Pines</a></li><li><a href=\"/locations-cooper-city\">Cooper City</a></li><li><a href=\"/locations-weston\">Weston</a></li><li><a href=\"/locations-miami-dade\">Miami-Dade County</a></li><li><a href=\"/locations-south-florida\">South Florida</a></li></ul></div><div class=\"ft-acc\"><button class=\"ft-acc-trig\" aria-expanded=\"false\"><span class=\"ft-acc-t\">Company</span><svg class=\"ft-acc-chev\" width=\"14\" height=\"14\" viewBox=\"0 0 24 24\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2.5\" aria-hidden=\"true\"><polyline points=\"6 9 12 15 18 9\"/></svg></button><ul class=\"ft-acc-body ft-lk\"><li><a href=\"/about\">About</a></li><li><a href=\"/reviews\">Reviews</a></li><li><a href=\"/blog\">Blog</a></li><li><a href=\"/free-it-assessment\">Free IT Assessment</a></li><li><a href=\"/contact\">Contact</a></li></ul></div></div><div class=\"ft-sm\"><p class=\"ft-sm-h\">Sitemap</p><p class=\"ft-sm-list\"><a href=\"/\">Home</a>, <a href=\"/about\">About</a>, <a href=\"/reviews\">Reviews</a>, <a href=\"/blog\">Blog</a>, <a href=\"/contact\">Contact</a>, <a href=\"/free-it-assessment\">Free IT Assessment</a>, <a href=\"/managed-it-services\">Managed IT Services</a>, <a href=\"/cybersecurity\">Cybersecurity</a>, <a href=\"/mdr-xdr\">MDR &amp; XDR</a>, <a href=\"/microsoft-365-consulting\">Microsoft 365</a>, <a href=\"/hipaa-it-compliance\">HIPAA IT Compliance</a>, <a href=\"/cloud-backup-disaster-recovery\">Cloud Backup &amp; DR</a>, <a href=\"/network-administration\">Network Administration</a>, <a href=\"/business-wifi\">Business Wi-Fi</a>, <a href=\"/voip-phone-systems\">VoIP</a>, <a href=\"/security-camera-installation\">Security Cameras</a>, <a href=\"/access-control\">Access Control</a>, <a href=\"/remote-it-support\">Remote IT Support</a>, <a href=\"/onsite-it-support\">Onsite IT Support</a>, <a href=\"/industries-medical-dental\">Medical &amp; Dental</a>, <a href=\"/industries-senior-living\">Senior Living</a>, <a href=\"/industries-law-firms\">Law Firms</a>, <a href=\"/industries-accounting-cpa\">Accounting &amp; CPA Firms</a>, <a href=\"/industries-professional-services\">Professional Services</a>, <a href=\"/industries-construction-aec\">Construction &amp; AEC</a>, <a href=\"/industries-logistics-freight\">Logistics &amp; Freight</a>, <a href=\"/industries-manufacturing\">Manufacturing</a>, <a href=\"/industries-wholesale-distribution\">Wholesale &amp; Distribution</a>, <a href=\"/industries-nonprofits-churches\">Nonprofits &amp; Churches</a>, <a href=\"/industries-commercial-offices\">Commercial Offices</a>, <a href=\"/industries-remote-hybrid-teams\">Remote &amp; Hybrid Teams</a>, <a href=\"/locations-miami-lakes\">Miami Lakes</a>, <a href=\"/locations-doral\">Doral</a>, <a href=\"/locations-hialeah\">Hialeah</a>, <a href=\"/locations-coral-gables\">Coral Gables</a>, <a href=\"/locations-kendall\">Kendall</a>, <a href=\"/locations-homestead\">Homestead</a>, <a href=\"/locations-opa-locka\">Opa-Locka</a>, <a href=\"/locations-medley\">Medley</a>, <a href=\"/locations-miramar\">Miramar</a>, <a href=\"/locations-pembroke-pines\">Pembroke Pines</a>, <a href=\"/locations-cooper-city\">Cooper City</a>, <a href=\"/locations-weston\">Weston</a>, <a href=\"/locations-miami-dade\">Miami-Dade County</a>, <a href=\"/locations-south-florida\">South Florida</a>.</p></div><div class=\"ft-bt\"><div>&copy; 2026 RANGO Technologies IT Services. All rights reserved.</div><div class=\"ft-bl\"><a href=\"/privacy\">Privacy</a><span>&middot;</span><a href=\"/terms\">Terms</a><span>&middot;</span><a href=\"/disclaimer\">Disclaimer</a></div></div></div></footer>\n`;export function wireShell(c){if(typeof document!==\"undefined\"&&!document.querySelector('link[href*=\"Outfit\"]')){const l=document.createElement(\"link\");l.href=\"https://fonts.googleapis.com/css2?family=Outfit:wght@300;400;500;600;700;800&family=Source+Sans+3:ital,wght@0,300;0,400;0,500;0,600;0,700;1,400&display=swap\";l.rel=\"stylesheet\";document.head.appendChild(l);}// The footer newsletter is a GoHighLevel embed. form_embed.js sets its exact\n// height; the .ft-news-embed min-height is the no-JS floor. Loaded here so\n// every page using the shared shell gets it without per-page code.\nif(typeof document!==\"undefined\"&&!document.querySelector('script[src=\"https://link.rango.tech/js/form_embed.js\"]')){const ghl=document.createElement(\"script\");ghl.src=\"https://link.rango.tech/js/form_embed.js\";ghl.async=true;document.body.appendChild(ghl);}const hb=c.querySelector(\".nav-h\");const mob=c.querySelector(\"#mob\");const bd=c.querySelector(\".mob-bd\");const closeBtn=c.querySelector(\".mob-x\");const openDrawer=()=>{mob?.classList.add(\"on\");bd?.classList.add(\"on\");hb?.classList.add(\"on\");hb?.setAttribute(\"aria-expanded\",\"true\");document.body.style.overflow=\"hidden\";closeBtn?.focus();};const closeDrawer=()=>{mob?.classList.remove(\"on\");bd?.classList.remove(\"on\");hb?.classList.remove(\"on\");hb?.setAttribute(\"aria-expanded\",\"false\");document.body.style.overflow=\"\";};const toggleDrawer=()=>{if(mob?.classList.contains(\"on\"))closeDrawer();else openDrawer();};hb?.addEventListener(\"click\",toggleDrawer);const onCloseClick=()=>{closeDrawer();hb?.focus();};closeBtn?.addEventListener(\"click\",onCloseClick);bd?.addEventListener(\"click\",closeDrawer);const drawerLinks=mob?.querySelectorAll(\"a[href]\");drawerLinks?.forEach(a=>a.addEventListener(\"click\",closeDrawer));const closeAllDd=()=>{c.querySelectorAll(\".dd.open\").forEach(d=>{d.classList.remove(\"open\");d.querySelector(\".dd-trig\")?.setAttribute(\"aria-expanded\",\"false\");});};const ddTrigs=c.querySelectorAll(\".dd-trig\");const ddHandlers=[];ddTrigs.forEach(t=>{const fn=e=>{e.stopPropagation();e.preventDefault();const dd=t.parentElement;if(!dd)return;const wasOpen=dd.classList.contains(\"open\");closeAllDd();if(!wasOpen){dd.classList.add(\"open\");t.setAttribute(\"aria-expanded\",\"true\");}};t.addEventListener(\"click\",fn);ddHandlers.push({el:t,fn});});const onDocClick=e=>{const tgt=e.target;if(!tgt.closest(\".dd\"))closeAllDd();};document.addEventListener(\"click\",onDocClick);const onShellKey=e=>{if(e.key===\"Escape\"){if(mob?.classList.contains(\"on\")){closeDrawer();hb?.focus();}closeAllDd();}else if(e.key===\"Tab\"&&mob?.classList.contains(\"on\")){const focusables=Array.from(mob.querySelectorAll(\"a[href], button:not([disabled])\")).filter(el=>el.offsetParent!==null);if(!focusables.length)return;const first=focusables[0];const last=focusables[focusables.length-1];if(e.shiftKey&&document.activeElement===first){e.preventDefault();last.focus();}else if(!e.shiftKey&&document.activeElement===last){e.preventDefault();first.focus();}}};document.addEventListener(\"keydown\",onShellKey);const accTrigs=c.querySelectorAll(\".acc-trig\");const accHandlers=[];accTrigs.forEach(t=>{const fn=e=>{e.preventDefault();e.stopPropagation();const acc=t.parentElement;if(!acc)return;const open=acc.classList.toggle(\"open\");t.setAttribute(\"aria-expanded\",String(open));};t.addEventListener(\"click\",fn);accHandlers.push({el:t,fn});});const ftTrigs=c.querySelectorAll(\".ft-acc-trig\");const ftHandlers=[];ftTrigs.forEach(t=>{const fn=e=>{e.preventDefault();const acc=t.parentElement;if(!acc)return;const open=acc.classList.toggle(\"open\");t.setAttribute(\"aria-expanded\",String(open));};t.addEventListener(\"click\",fn);ftHandlers.push({el:t,fn});});// --- Skip link target ---------------------------------------------------\n// Framer renders its OWN <div id=\"main\"> as the page root, above the header,\n// and each page component also marks its root <main id=\"main\">. Duplicate id,\n// and href=\"#main\" resolved to Framer's div at the very top of the document -\n// so \"Skip to content\" skipped nothing (WCAG 2.4.1). The site header also sits\n// INSIDE that <main>, so there is no lower id to aim at either. Anchor the\n// link to the first block after the header instead, and drop the duplicate id.\nif(c.id===\"main\")c.removeAttribute(\"id\");const skip=c.querySelector(\".skip-lk\");// The <main> landmark IS the content, so prefer it outright. The sibling walk\n// below is only a fallback for a page that has no <main>: it cannot work on\n// BlogPostPage, where the header, <main> and footer are all injected into one\n// wrapper div, so \"the block after the header\" is the whole page.\nlet content=c.querySelector(\"main\");if(!content){let navBlock=c.querySelector(\"header\");while(navBlock&&navBlock.parentElement!==c){navBlock=navBlock.parentElement;}content=navBlock?.nextElementSibling??null;while(content&&content.matches(\"style, script, header, .nav, .mob, .mob-bd, .skip-lk\")){content=content.nextElementSibling;}}const onSkip=e=>{if(!content)return;e.preventDefault();content.focus();content.scrollIntoView();};if(skip&&content){// \"main\" here is the page's own <main id=\"main\">, which duplicates Framer's\n// page-root <div id=\"main\">. Renaming it sheds the duplicate id site-wide.\nif(!content.id||content.id===\"main\")content.id=\"rango-content\";content.setAttribute(\"data-shell-skip-target\",\"\");if(!content.hasAttribute(\"tabindex\")){content.setAttribute(\"tabindex\",\"-1\");}skip.setAttribute(\"href\",\"#\"+content.id);skip.addEventListener(\"click\",onSkip);}return()=>{hb?.removeEventListener(\"click\",toggleDrawer);closeBtn?.removeEventListener(\"click\",onCloseClick);bd?.removeEventListener(\"click\",closeDrawer);drawerLinks?.forEach(a=>a.removeEventListener(\"click\",closeDrawer));ddHandlers.forEach(({el,fn})=>el.removeEventListener(\"click\",fn));accHandlers.forEach(({el,fn})=>el.removeEventListener(\"click\",fn));ftHandlers.forEach(({el,fn})=>el.removeEventListener(\"click\",fn));document.removeEventListener(\"click\",onDocClick);document.removeEventListener(\"keydown\",onShellKey);skip?.removeEventListener(\"click\",onSkip);document.body.style.overflow=\"\";};}/**\n * Placeholder component. This file is a shared module, not a visual component -\n * Framer code files are expected to default-export a component, so this exists\n * to keep the file valid. Do not mount it on a page.\n *\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight any\n */export default function SiteShell(props){return /*#__PURE__*/_jsx(\"div\",{style:{padding:12,font:\"12px ui-monospace, monospace\",color:\"#6B7280\"},children:\"SiteShell is a shared module (styles, nav, footer, wiring). It is not meant to be placed on a page.\"});}addPropertyControls(SiteShell,{});\nexport const __FramerMetadata__ = {\"exports\":{\"FOOTER_HTML\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"SiteShell\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutWidth\":\"any\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\"}},\"wireShell\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SHELL_STYLES\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NAV_DRAWER_HTML\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SiteShell.map","/*\n * SiteShell\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/eSIck9PjOqoNmRNOhZvZ/XYtfkx9HvoBoHxlrlLbt/SiteShell.js\"\nexport { default } from \"https://framerusercontent.com/modules/eSIck9PjOqoNmRNOhZvZ/XYtfkx9HvoBoHxlrlLbt/SiteShell.js\"\n"],"mappings":"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"}