{"version":3,"file":"shared.DZKBzzkA.mjs","names":[],"sources":["https:/framerusercontent.com/modules/eSIck9PjOqoNmRNOhZvZ/rBgVSXBvj9L92cm2Ik78/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: .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: 200px; 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: .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: .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: .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: .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: .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: .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-logo { min-width: 0; flex-shrink: 1; }\n.brand-logo { max-width: clamp(136px,42vw,200px); }\n.nav-mq { display: flex; align-items: center; gap: 8px; margin-left: auto; flex-shrink: 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.nav-c { gap: 10px; }\n@media (max-width: 359px) { .nav-in { gap: 6px; } .nav-mq { gap: 6px; } .nav-ico, .nav-ph-btn, .nav-h { width: 40px; height: 40px; min-width: 40px; } .brand-logo { max-width: 132px; } }\n@media (min-width: 768px) { .brand-logo { max-width: 220px; } .nav-mq { gap: 10px; } }\n@media (min-width: 1024px) { .nav-mq { display: none; } .brand-logo { max-width: 240px; } .nav-c .nav-ico { display: inline-flex !important; } }\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.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></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 (17 reviews)</a> &middot; Microsoft Partner &middot; Ubiquiti Full Stack Pro &middot; Brivo Authorized Dealer</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});});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);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\":{\"SHELL_STYLES\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"wireShell\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FOOTER_HTML\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NAV_DRAWER_HTML\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"SiteShell\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"any\",\"framerSupportedLayoutWidth\":\"any\"}},\"__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/rBgVSXBvj9L92cm2Ik78/SiteShell.js\"\nexport { default } from \"https://framerusercontent.com/modules/eSIck9PjOqoNmRNOhZvZ/rBgVSXBvj9L92cm2Ik78/SiteShell.js\"\n"],"mappings":"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"}