1<!DOCTYPE html> 2<html lang="en"> 3 <head> 4 <meta charset="UTF-8" /> 5 <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, viewport-fit=cover" /> 6 <title>FlatRock Labs AI - Turn Ideas Into Interactive Prototypes</title> 7 <meta name="description" content="Transform your concept into working prototypes in minutes with AI-powered tools. From ideation to MVP development with Flat Rock Technology." /> 8 <meta name="author" content="Flat Rock Technology" /> 9 <meta name="keywords" content="AI prototyping, MVP development, interactive prototypes, product design, Flat Rock Technology" /> 10 11 <meta property="og:title" content="FlatRock Labs AI - AI-Powered Prototype Generation" /> 12 <meta property="og:description" content="Transform your concept into working prototypes in minutes. From ideation to MVP development." /> 13 <meta property="og:type" content="website" /> 14 <meta property="og:image" content="" /> 15 16 <meta name="twitter:card" content="summary_large_image" /> 17 <meta name="twitter:site" content="" /> 18 <meta name="twitter:image" content="" /> 19 <!-- Google Analytics Consent Mode --> 20
20<script> 21 window.dataLayer = window.dataLayer || []; 22 function gtag() { 23 dataLayer.push(arguments); 24 } 25 gtag("consent", "default", { 26 ad_storage: "denied", 27 ad_user_data: "denied", 28 ad_personalization: "denied", 29 analytics_storage: "denied", 30 functionality_storage: "denied", 31 personalization_storage: "denied", 32 security_storage: "granted", 33 wait_for_update: 2000, 34 }); 35 gtag("set", "ads_data_redaction", true); 36 gtag("set", "url_passthrough", true); 37</script>
37 38<!-- End Google Analytics Consent Mode --> 39 40<!-- Google Tag Manager -->
41<script>
vendor: 327 bytes, lines 41-45
41(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start': 42new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0], 43j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src= 44'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f); 45})(window,document,'script','dataLayer','
45GTM-K7LW5SV3
vendor: 3 bytes, line 45
45');
45</script>
45 46<!-- End Google Tag Manager --> 47 48 <!-- Start cookieyes banner --> 49
49<script id="cookieyes" type="text/javascript" src="https://cdn-cookieyes.com/client_data/f102e840de717233e9882b43/script.js"></script>
49 50 <!-- End cookieyes banner --> 51 52 <!-- Clutch widget --> 53
53<script type="text/javascript" src="https://widget.clutch.co/static/js/widget.js"></script>
53 54 <!-- End Clutch widget --> 55
55<script src="//code.tidio.co/2fuvmuever1lceedj4oqojtubmwp8aon.js" async></script>
55 56 <style id="sienna-inline-overrides"> 57 :root { 58 --sienna-accent-color: #ff5858; 59 } 60 61 .asw-container .asw-menu-btn { 62 width: 45px !important; 63 height: 45px !important; 64 left: 15px !important; 65 right: auto !important; 66 bottom: 80px !important; 67 border-color: #ff5858 !important; 68 outline: none !important; 69 background: var(--sienna-accent-color) !important; 70 background-image: none !important; 71 } 72 73 .asw-container .asw-menu-btn svg { 74 width: 26px !important; 75 height: 26px !important; 76 min-width: 26px !important; 77 min-height: 26px !important; 78 max-width: 26px !important; 79 max-height: 26px !important; 80 } 81 82 .asw-container .asw-menu-header, 83 .asw-container .asw-menu-reset-footer-btn { 84 background-color: var(--sienna-accent-color) !important; 85 color: #fff !important; 86 } 87 88 .asw-container .asw-menu-header svg, 89 .asw-container .asw-menu-reset svg, 90 .asw-container .asw-menu-close svg { 91 fill: var(--sienna-accent-color) !important; 92 } 93 94 .asw-container .asw-menu-reset, 95 .asw-container .asw-menu-close { 96 border: 2px solid var(--sienna-accent-color) !important; 97 } 98 99 .asw-container .asw-menu-reset:hover, 100 .asw-container .asw-menu-close:hover, 101 .asw-container .asw-menu-reset:focus, 102 .asw-container .asw-menu-close:focus { 103 outline: 3px solid rgba(197, 0, 47, 0.2) !important; 104 } 105 106 .asw-container .asw-plus, 107 .asw-container .asw-minus, 108 .asw-container .asw-btn { 109 border-color: var(--sienna-accent-color) !important; 110 } 111 112 .asw-container .asw-btn:hover, 113 .asw-container .asw-btn.asw-selected { 114 border-color: var(--sienna-accent-color) !important; 115 } 116 117 .asw-container .asw-btn.asw-selected svg, 118 .asw-container .asw-btn.asw-selected span { 119 fill: var(--sienna-accent-color) !important; 120 color: var(--sienna-accent-color) !important; 121 } 122 123 .asw-container .asw-btn.asw-selected:after { 124 background-color: var(--sienna-accent-color) !important; 125 } 126 127 .asw-container .asw-footer { 128 display: none !important; 129 } 130 131 @media (max-width: 640px) { 132 .asw-container .asw-menu-btn { 133 width: 46.4px !important; 134 height: 46.4px !important; 135 bottom: 80px !important; 136 } 137 } 138 </style> 139 <!-- Sienna Accessibility Tool --> 140
140<script src="https://cdn.jsdelivr.net/npm/sienna-accessibility@latest/dist/sienna-accessibility.umd.js" defer></script>
140 141
141<script type="module" crossorigin src="/assets/index-4T-kT5k4.js"></script>
141 142 <link rel="stylesheet" crossorigin href="/assets/index-Ds_vOxh3.css"> 143 </head> 144 145 <body> 146 <div id="root"></div> 147 </body> 148</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.