1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="utf-8" /> 5 <link rel="icon" href="/favicon.ico" /> 6 <meta name="viewport" content="width=device-width, initial-scale=1" /> 7 <meta name="theme-color" content="#000000" /> 8 <meta 9 name="description" 10 content="WebAbility.io provides comprehensive web accessibility solutions including ADA compliance widgets, WCAG testing, and accessibility scanning tools. Make your website accessible to everyone with our affordable solutions." 11 charset="utf-8" 12 /> 13 <meta 14 name="keywords" 15 content="WebAbility.io,Web Accessibility Widget,ADA Compliance,WCAG Compliance,WebAbility.io features,Free Trial Accessibility Widget,Affordable ADA Compliance,Rapid Integration Accessibility,Official Accessibility Statement,Accessible Websites,WebAbility.io solutions,ADA Website Widget,WCAG 2.0 Compliance,Web Accessibility Certification,WebAbility.io benefits,ADA Compliance Tool,WCAG Compliance Widget,Accessibility for Websites,Affordable Accessibility Solutions,Accessibility Compliance Statement,accessibility scanner,website accessibility test" 16 /> 17 <link rel="apple-touch-icon" href="/favicon.ico" /> 18 19 <link rel="manifest" href="/manifest.json" /> 20 <link rel="preconnect" href="https://fonts.googleapis.com" /> 21 <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin /> 22 <!-- Inter, variable. The range is 300..900 because src/ uses font-light 23 through font-black; the old link fetched only 400/500/600, so every 24 font-bold on the site was being synthesised by the browser. --> 25 <link 26 rel="stylesheet" 27 href="https://fonts.googleapis.com/css2?family=Inter:[email protected]&display=swap" 28 /> 29 30 <!-- Google Tag Manager (GTM-NQQHF865) --> 31 <!-- Loaded unconditionally: logged-in dashboard users are treated as 32 consented (product decision DEV-937). No cookie banner / c15t gate 33 here, unlike the marketing site. --> 34
34<script>
vendor: 455 bytes, lines 34-44
34 35 (function (w, d, s, l, i) { 36 w[l] = w[l] || []; 37 w[l].push({ 'gtm.start': new Date().getTime(), event: 'gtm.js' }); 38 var f = d.getElementsByTagName(s)[0], 39 j = d.createElement(s), 40 dl = l != 'dataLayer' ? '&l=' + l : ''; 41 j.async = true; 42 j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 43 f.parentNode.insertBefore(j, f); 44 })(window, document, 'script', 'dataLayer', '
44GTM-NQQHF865
vendor: 8 bytes, lines 44-45
44'); 45
45</script>
45 46 47 <!-- Rewardful Integration --> 48
48<script> 49 (function (w, r) { 50 w._rwq = r; 51 w[r] = 52 w[r] || 53 function () { 54 (w[r].q = w[r].q || []).push(arguments); 55 }; 56 })(window, 'rewardful'); 57 </script>
57 58
58<script 59 async 60 src="https://r.wdfl.co/rw.js" 61 data-rewardful="bf2fdc" 62 ></script>
62 63 64 <title> 65 WebAbility.io - Web Accessibility Solutions & ADA Compliance Widget 66 </title> 67 68 <style> 69 noscript { 70 font-weight: bold; 71 font-size: large; 72 display: flex; 73 justify-content: center; 74 background-color: #ef4444; 75 color: #ffffff; 76 padding: 20px; 77 border-radius: 10px; 78 width: 40%; 79 margin: 0 auto; 80 } 81 /* Google Translate - hide "Translated into" top banner */ 82 .goog-te-banner-frame.skiptranslate, 83 iframe.goog-te-banner-frame, 84 .skiptranslate iframe { 85 display: none !important; 86 height: 0 !important; 87 visibility: hidden !important; 88 } 89 body, html { top: 0 !important; position: static !important; } 90 /* Prevent body shift when banner is hidden */ 91 body.te-translated { top: 0 !important; } 92 </style> 93
93<script type="module" crossorigin src="/assets/index-BVVRvbjs.js"></script>
93 94 <link rel="modulepreload" crossorigin href="/assets/vendor-CXh69xiq.js"> 95 <link rel="modulepreload" crossorigin href="/assets/app-vendor-nlFuy7bi.js"> 96 <link rel="stylesheet" crossorigin href="/assets/index-BTsPM9Aa.css"> 97 </head> 98 <body> 99 <!-- Google Translate + React compatibility: patch DOM methods before React loads (prod-ready) --> 100
100<script> 101 (function () { 102 if (window.__googTranslateReactFix) return; 103 window.__googTranslateReactFix = true; 104 var origRemoveChild = Node.prototype.removeChild; 105 var origInsertBefore = Node.prototype.insertBefore; 106 var origReplaceChild = Node.prototype.replaceChild; 107 Node.prototype.removeChild = function (child) { 108 try { 109 if (!this.contains(child)) return child; 110 return origRemoveChild.call(this, child); 111 } catch (e) { 112 return child; 113 } 114 }; 115 Node.prototype.insertBefore = function (newNode, ref) { 116 try { 117 if (ref && !this.contains(ref)) return this.appendChild(newNode); 118 return origInsertBefore.call(this, newNode, ref); 119 } catch (e) { 120 try { return this.appendChild(newNode); } catch (_) { return newNode; } 121 } 122 }; 123 Node.prototype.replaceChild = function (newChild, oldChild) { 124 try { 125 if (!this.contains(oldChild)) return this.appendChild(newChild); 126 return origReplaceChild.call(this, newChild, oldChild); 127 } catch (e) { 128 try { return this.appendChild(newChild); } catch (_) { return newChild; } 129 } 130 }; 131 })(); 132 </script>
132 133 <noscript>You need to enable JavaScript to run this app.</noscript> 134 <!-- Google Tag Manager (noscript) -->
vendor: 87 bytes, lines 134-137
134 135 <noscript> 136 <iframe 137 src="https://www.googletagmanager.com/ns.html?id=
137GTM-NQQHF865
vendor: 126 bytes, lines 137-143
137" 138 height="0" 139 width="0" 140 style="display: none; visibility: hidden" 141 ></iframe> 142 </noscript> 143
143<div id="root"></div> 144
144<script type="module" src="https://static.cloudflareinsights.com/beacon.min.js/v31edd6df95cf4e85bb4c19e7a9bdbcba1788362987495" integrity="sha512-iIg7k2xntmwu6/uSb5tpc/hySgZc4eoL31yB29W6tJFo2akwjPWcEqnCEdJvGexCL0KEQwVYv5BlowfhVz26hg==" data-cf-beacon='{"version":"2024.11.0","token":"696347ea49ed47df8351bf44403275ce","r":1,"spa":2}' crossorigin="anonymous"></script>
144 145</body> 146</html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.