{"version":3,"file":"script_main.BTEC0JSW.mjs","names":["useState","useRef","EmbedFonts","Embed","BGItem","cycleOrder","serializationHash","variantClassNames","matchVariant","React.useContext","React.useMemo","humanReadableVariantMap","Variants","React.Fragment","getProps","createLayoutDependency","React.forwardRef","useRef","React.useId","variantClassNames","humanReadableVariantMap","React.Fragment","getProps","React.forwardRef","useRef","React.useId","Embed","Embed1","DynamicNotchNavigation","Footer","useRef","React.useId","PropertyOverrides","React.createElement","Main","Framer.PageRoot","Framer.lazy","Framer.useCurrentRoute","Framer.useLocaleInfo","Framer.useRouter","React.Fragment","React.memo","React.useCallback","React.useEffect","React.useRef","React.useState","React.useLayoutEffect","Framer.LazyValue","Framer.GracefullyDegradingErrorBoundary","Framer.PageEffectsProvider","Framer.patchRoutesForABTesting","Framer.inferInitialRouteFromPath","Framer.yieldToMain","React.startTransition","Framer.ErrorPlaceholder"],"sources":["https:/framerusercontent.com/modules/o1PI5S8YtkA5bP5g4dFz/7LsYGOkyjLv3zWdmJA4n/Embed.js","https:/framerusercontent.com/modules/47cNhk39ReIhRJHwdBDG/KWo6LFJxyA7UI1zAYCbS/JnzAem52X.js","https:/framerusercontent.com/modules/gex4SYf6HHKZ9qXOfohy/K5bw0rAZwSbHhxgeUc8J/t1isjFhUD.js","https:/framerusercontent.com/modules/6Z29e0zv6aU2AwJdzeUi/GkDju3BaxbD8n0Ekg3l0/qhnRAmdje.js","framer:toplevel/main"],"sourcesContent":["// ⚠️⚠️⚠️⚠️⚠️\n// Edit these files in https://github.com/framer/FramerCodeComponents\n// ⚠️⚠️⚠️⚠️⚠️\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{useEffect,useRef,useState}from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{useIsOnCanvas,emptyStateStyle,containerStyles}from\"https://framer.com/m/framer/default-utils.js\";/**\n * @framerIntrinsicWidth 600\n * @framerIntrinsicHeight 400\n *\n * @framerSupportedLayoutWidth fixed\n * @framerSupportedLayoutHeight any-prefer-fixed\n *\n * @framerDisableUnlink\n */export default function Embed({type,url,html,zoom,radius,border,style={}}){if(type===\"url\"&&url){return /*#__PURE__*/_jsx(EmbedUrl,{url:url,zoom:zoom,radius:radius,border:border,style:style});}if(type===\"html\"&&html){return /*#__PURE__*/_jsx(EmbedHtml,{html:html,style:style});}return /*#__PURE__*/_jsx(Instructions,{style:style});}addPropertyControls(Embed,{type:{type:ControlType.Enum,defaultValue:\"url\",displaySegmentedControl:true,options:[\"url\",\"html\"],optionTitles:[\"URL\",\"HTML\"]},url:{title:\"URL\",type:ControlType.String,description:\"Some websites don’t support embedding.\",hidden(props){return props.type!==\"url\";}},html:{title:\"HTML\",type:ControlType.String,displayTextArea:true,hidden(props){return props.type!==\"html\";}},border:{title:\"Border\",type:ControlType.Border,optional:true,hidden(props){return props.type!==\"url\";}},radius:{type:ControlType.BorderRadius,title:\"Radius\",hidden(props){return props.type!==\"url\";}},zoom:{title:\"Zoom\",defaultValue:1,type:ControlType.Number,hidden(props){return props.type!==\"url\";},min:.1,max:1,step:.1,displayStepper:true}});function Instructions({style}){return /*#__PURE__*/_jsx(\"div\",{style:{minHeight:getMinHeight(style),...emptyStateStyle,overflow:\"hidden\",...style},children:/*#__PURE__*/_jsx(\"div\",{style:centerTextStyle,children:\"Add a URL to embed a website.\"})});}function EmbedUrl({url,zoom,radius,border,style}){const hasAutoHeight=!style.height;// Add https:// if the URL does not have a protocol.\nif(!/[a-z]+:\\/\\//.test(url)){url=\"https://\"+url;}const onCanvas=useIsOnCanvas();// We need to check if the url is blocked inside an iframe by the X-Frame-Options\n// or Content-Security-Policy headers on the backend.\nconst[state,setState]=useState(onCanvas?undefined:false);useEffect(()=>{// We only want to check on the canvas.\n// On the website we want to avoid the additional delay.\nif(!onCanvas)return;// TODO: We could also use AbortController here.\nlet isLastEffect=true;setState(undefined);async function load(){const response=await fetch(\"https://api.framer.com/functions/check-iframe-url?url=\"+encodeURIComponent(url));if(response.status==200){const{isBlocked}=await response.json();if(isLastEffect){setState(isBlocked);}}else{const message=await response.text();console.error(message);const error=new Error(\"This site can’t be reached.\");setState(error);}}load().catch(error=>{console.error(error);setState(error);});return()=>{isLastEffect=false;};},[url]);if(onCanvas&&hasAutoHeight){return /*#__PURE__*/_jsx(ErrorMessage,{message:\"URL embeds do not support auto height.\",style:style});}if(!url.startsWith(\"https://\")){return /*#__PURE__*/_jsx(ErrorMessage,{message:\"Unsupported protocol.\",style:style});}if(state===undefined){return /*#__PURE__*/_jsx(LoadingIndicator,{});}if(state instanceof Error){return /*#__PURE__*/_jsx(ErrorMessage,{message:state.message,style:style});}if(state===true){const message=`Can’t embed ${url} due to its content security policy.`;return /*#__PURE__*/_jsx(ErrorMessage,{message:message,style:style});}return /*#__PURE__*/_jsx(\"iframe\",{src:url,style:{...iframeStyle,...style,...border,zoom:zoom,borderRadius:radius,transformOrigin:\"top center\"},loading:\"lazy\",// @ts-ignore\nfetchPriority:onCanvas?\"low\":\"auto\",referrerPolicy:\"no-referrer\",sandbox:getSandbox(onCanvas),allowFullScreen:true,allow:\"presentation; fullscreen; accelerometer; autoplay; encrypted-media; gyroscope; picture-in-picture; clipboard-write\"});}const iframeStyle={width:\"100%\",height:\"100%\",border:\"none\"};function getSandbox(onCanvas){const result=[\"allow-same-origin\",\"allow-scripts\"];if(!onCanvas){result.push(\"allow-downloads\",\"allow-forms\",\"allow-modals\",\"allow-orientation-lock\",\"allow-pointer-lock\",\"allow-popups\",\"allow-popups-to-escape-sandbox\",\"allow-presentation\",\"allow-storage-access-by-user-activation\",\"allow-top-navigation-by-user-activation\");}return result.join(\" \");}function EmbedHtml({html,...props}){const hasScript=html.includes(\"</script>\");if(hasScript){const hasSplineViewer=html.includes(\"</spline-viewer>\");const hasComment=html.includes(\"<!-- framer-direct-embed -->\");if(hasSplineViewer||hasComment){return /*#__PURE__*/_jsx(EmbedHtmlWithScripts,{html:html,...props});}return /*#__PURE__*/_jsx(EmbedHtmlInsideIframe,{html:html,...props});}return /*#__PURE__*/_jsx(EmbedHtmlWithoutScripts,{html:html,...props});}function EmbedHtmlInsideIframe({html,style}){const ref=useRef();const[iframeHeight,setIframeHeight]=useState(0);// Handle auto sizing\nuseEffect(()=>{const iframeWindow=ref.current?.contentWindow;function handleMessage(event){if(event.source!==iframeWindow)return;const data=event.data;if(typeof data!==\"object\"||data===null)return;const height=data.embedHeight;if(typeof height!==\"number\")return;setIframeHeight(height);}window.addEventListener(\"message\",handleMessage);// After SSG the iframe loads before we attach the event handler,\n// therefore we need to request the latest height from the iframe.\niframeWindow?.postMessage(\"getEmbedHeight\",\"*\");return()=>{window.removeEventListener(\"message\",handleMessage);};},[]);// The CSS is mainly copied from:\n// FramerStudio/src/app/vekter/src/renderer/setDefaultFont.ts\n// FramerStudio/src/app/vekter/src/export/globalStylesForExport.ts\nconst srcDoc=`\n<html>\n    <head>\n        <style>\n            html, body {\n                margin: 0;\n                padding: 0;\n            }\n\n            body {\n                display: flex;\n                justify-content: center;\n                align-items: center;\n            }\n\n            :root {\n                -webkit-font-smoothing: antialiased;\n                -moz-osx-font-smoothing: grayscale;\n            }\n\n            * {\n                box-sizing: border-box;\n                -webkit-font-smoothing: inherit;\n            }\n\n            h1, h2, h3, h4, h5, h6, p, figure {\n                margin: 0;\n            }\n\n            body, input, textarea, select, button {\n                font-size: 12px;\n                font-family: sans-serif;\n            }\n        </style>\n    </head>\n    <body>\n        ${html}\n        <script type=\"module\">\n            let height = 0\n\n            function sendEmbedHeight() {\n                window.parent.postMessage({\n                    embedHeight: height\n                }, \"*\")\n            }\n\n            const observer = new ResizeObserver((entries) => {\n                if (entries.length !== 1) return\n                const entry = entries[0]\n                if (entry.target !== document.body) return\n\n                height = entry.contentRect.height\n                sendEmbedHeight()\n            })\n\n            observer.observe(document.body)\n\n            window.addEventListener(\"message\", (event) => {\n                if (event.source !== window.parent) return\n                if (event.data !== \"getEmbedHeight\") return\n                sendEmbedHeight()\n            })\n        </script>\n    <body>\n</html>\n`;const currentStyle={...iframeStyle,...style};const hasAutoHeight=!style.height;if(hasAutoHeight){currentStyle.height=iframeHeight+\"px\";}return /*#__PURE__*/_jsx(\"iframe\",{ref:ref,style:currentStyle,srcDoc:srcDoc});}function EmbedHtmlWithScripts({html,style}){const ref=useRef();useEffect(()=>{const div=ref.current;if(!div)return;div.innerHTML=html;executeScripts(div);return()=>{div.innerHTML=\"\";};},[html]);return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{...htmlStyle,...style}});}function EmbedHtmlWithoutScripts({html,style}){return /*#__PURE__*/_jsx(\"div\",{style:{...htmlStyle,...style},dangerouslySetInnerHTML:{__html:html}});}const htmlStyle={width:\"100%\",height:\"100%\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",alignItems:\"center\"};// This function replaces scripts with executable ones.\n// https://stackoverflow.com/questions/1197575/can-scripts-be-inserted-with-innerhtml\nfunction executeScripts(node){if(node instanceof Element&&node.tagName===\"SCRIPT\"){const script=document.createElement(\"script\");script.text=node.innerHTML;for(const{name,value}of node.attributes){script.setAttribute(name,value);}node.parentElement.replaceChild(script,node);}else{for(const child of node.childNodes){executeScripts(child);}}}// Generic components\nfunction LoadingIndicator(){return /*#__PURE__*/_jsx(\"div\",{className:\"framerInternalUI-componentPlaceholder\",style:{...containerStyles,overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"div\",{style:centerTextStyle,children:\"Loading…\"})});}function ErrorMessage({message,style}){return /*#__PURE__*/_jsx(\"div\",{className:\"framerInternalUI-errorPlaceholder\",style:{minHeight:getMinHeight(style),...containerStyles,overflow:\"hidden\",...style},children:/*#__PURE__*/_jsx(\"div\",{style:centerTextStyle,children:message})});}const centerTextStyle={textAlign:\"center\",minWidth:140};// Returns a min-height if the component is using auto-height.\nfunction getMinHeight(style){const hasAutoHeight=!style.height;if(hasAutoHeight)return 200;}\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Embed\",\"slots\":[],\"annotations\":{\"framerDisableUnlink\":\"\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicHeight\":\"400\",\"framerIntrinsicWidth\":\"600\",\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Embed.map","// Generated by Framer (fd0ec14)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ComponentViewportProvider,ControlType,cx,forwardLoader,getFonts,SmartComponentScopedContainer,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion,MotionConfigContext}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Embed from\"https://framerusercontent.com/modules/o1PI5S8YtkA5bP5g4dFz/cAPMVEI6osbJ1UvICgTq/Embed.js\";import BGItem from\"https://framerusercontent.com/modules/kDwidlxgXcCy4BkZldZw/3ZHySwjqLk06z9Sk6yVO/zGIHREhZy.js\";const EmbedFonts=getFonts(Embed);const BGItemFonts=getFonts(BGItem);const cycleOrder=[\"qxcUNJcIB\",\"EAE4hFzUn\",\"Qk6E2mkA1\"];const serializationHash=\"framer-3x11l\";const variantClassNames={EAE4hFzUn:\"framer-v-1ljrgyj\",Qk6E2mkA1:\"framer-v-1qyqddu\",qxcUNJcIB:\"framer-v-6m69re\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const transition1={bounce:.2,delay:0,duration:.4,type:\"spring\"};const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const Transition=({value,children})=>{const config=React.useContext(MotionConfigContext);const transition=value??config.transition;const contextValue=React.useMemo(()=>({...config,transition}),[JSON.stringify(transition)]);return /*#__PURE__*/_jsx(MotionConfigContext.Provider,{value:contextValue,children:children});};const humanReadableVariantMap={Desktop:\"qxcUNJcIB\",Phone:\"Qk6E2mkA1\",Tablet:\"EAE4hFzUn\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"qxcUNJcIB\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"qxcUNJcIB\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false,children:/*#__PURE__*/_jsx(Transition,{value:transition1,children:/*#__PURE__*/_jsxs(motion.footer,{...restProps,...gestureHandlers,className:cx(scopingClassNames,\"framer-6m69re\",className,classNames),\"data-framer-name\":\"Desktop\",layoutDependency:layoutDependency,layoutId:\"qxcUNJcIB\",ref:refBinding,style:{backgroundColor:\"rgb(23, 23, 23)\",...style},...addPropertyOverrides({EAE4hFzUn:{\"data-framer-name\":\"Tablet\"},Qk6E2mkA1:{\"data-framer-name\":\"Phone\"}},baseVariant,gestureVariant),children:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-4w484g-container\",isAuthoredByUser:true,isModuleExternal:true,layoutDependency:layoutDependency,layoutId:\"GafMD0fC4-container\",nodeId:\"GafMD0fC4\",rendersWithMotion:true,scopeId:\"JnzAem52X\",children:/*#__PURE__*/_jsx(Embed,{height:\"100%\",html:'<style>\\n  html,body{width:100%;margin:0;padding:0;background:#171717}\\n  *{box-sizing:border-box}\\n  .ogf{\\n    --bg:#171717;--text:#fff;--muted:#a7a7a7;--line:rgba(255,255,255,.16);\\n    position:relative;width:100%;overflow:hidden;color:var(--text);background:var(--bg);\\n    border-top:1px solid var(--line);font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif\\n  }\\n  .ogf__inner{width:100%;padding:clamp(42px,5vw,72px) clamp(18px,4vw,58px) 22px}\\n  .ogf__body{display:grid;grid-template-columns:repeat(6,minmax(0,1fr));gap:clamp(24px,3.5vw,60px);padding-bottom:clamp(36px,5vw,64px)}\\n  .ogf__label{margin:0 0 15px;color:#fff;font-size:10px;font-weight:800;letter-spacing:.16em;text-transform:uppercase}\\n  .ogf__links{display:grid;gap:3px;margin:0;padding:0;list-style:none}\\n  .ogf__link{position:relative;display:inline-flex;width:max-content;max-width:100%;padding:4px 0;color:#c4c4c4;font-size:12px;line-height:1.4;text-decoration:none;transition:color .25s,transform .25s}\\n  .ogf__link::after{content:\"\";position:absolute;left:0;bottom:2px;width:100%;height:1px;background:#fff;transform:scaleX(0);transform-origin:right;transition:transform .3s ease}\\n  .ogf__link:hover{color:#fff;transform:translateX(3px)}\\n  .ogf__link:hover::after{transform:scaleX(1);transform-origin:left}\\n  .ogf__contact-list{display:grid;gap:10px}\\n  .ogf__contact{display:block;padding-bottom:10px;color:#fff;border-bottom:1px solid var(--line);text-decoration:none}\\n  .ogf__contact small{display:block;margin-bottom:5px;color:#929292;font-size:8px;font-weight:750;letter-spacing:.14em;text-transform:uppercase}\\n  .ogf__contact span{display:flex;align-items:center;justify-content:space-between;gap:10px;font-size:12px;overflow-wrap:anywhere}\\n  .ogf__contact i{display:grid;place-items:center;flex:0 0 auto;width:22px;height:22px;color:#171717;background:#fff;border-radius:50%;font-size:12px;font-style:normal;transition:transform .25s}\\n  .ogf__contact:hover i{transform:translate(2px,-2px)}\\n  .ogf__legal{display:grid;grid-template-columns:1fr auto;align-items:end;gap:24px;padding-top:18px;border-top:1px solid var(--line)}\\n  .ogf__copyright{margin:0;color:#8f8f8f;font-size:9px;line-height:1.6;letter-spacing:.035em}\\n  .ogf__socials{display:flex;align-items:center;justify-content:flex-end;gap:8px;flex-wrap:wrap}\\n  .ogf__social{display:inline-flex;align-items:center;gap:7px;padding:8px 11px;color:#c4c4c4;border:1px solid var(--line);border-radius:999px;font-size:8px;font-weight:750;letter-spacing:.11em;text-decoration:none;text-transform:uppercase;transition:color .25s,border-color .25s,background .25s,transform .25s}\\n  .ogf__social i{font-size:10px;font-style:normal}\\n  .ogf__social:hover{color:#171717;background:#fff;border-color:#fff;transform:translateY(-2px)}\\n  .ogf__top{display:grid;place-items:center;width:38px;height:38px;margin-left:4px;padding:0;color:#fff;background:transparent;border:1px solid var(--line);border-radius:50%;cursor:pointer;transition:color .25s,background .25s,transform .25s}\\n  .ogf__top:hover{color:#171717;background:#fff;transform:translateY(-2px)}\\n  .ogf-reveal{opacity:0;transform:translateY(18px);transition:opacity .65s ease,transform .65s ease}\\n  .ogf-reveal.is-visible{opacity:1;transform:none}\\n  @media(max-width:1050px){.ogf__body{grid-template-columns:repeat(3,minmax(0,1fr))}}\\n  @media(max-width:650px){.ogf__body{grid-template-columns:repeat(2,minmax(0,1fr));gap:32px 24px}.ogf__legal{grid-template-columns:1fr}.ogf__socials{justify-content:flex-start}}\\n  @media(max-width:420px){.ogf__body{grid-template-columns:1fr}}\\n  @media(prefers-reduced-motion:reduce){.ogf-reveal{opacity:1;transform:none;transition:none}.ogf__link,.ogf__link::after,.ogf__contact i,.ogf__social,.ogf__top{transition:none}}\\n</style>\\n\\n<footer class=\"ogf\" aria-labelledby=\"ogf-title\" data-optima-footer>\\n  <div class=\"ogf__inner\">\\n    <h2 id=\"ogf-title\" style=\"position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0\">OptimaWebAI footer</h2>\\n    <div class=\"ogf__body ogf-reveal\">\\n      <nav aria-label=\"Explore\">\\n        <p class=\"ogf__label\">Explore</p>\\n        <ul class=\"ogf__links\">\\n          <li><a class=\"ogf__link\" href=\"/\" target=\"_top\">Home</a></li>\\n          <li><a class=\"ogf__link\" href=\"/about\" target=\"_top\">About</a></li>\\n          <li><a class=\"ogf__link\" href=\"/projects\" target=\"_top\">Projects</a></li>\\n          <li><a class=\"ogf__link\" href=\"/experience-lab\" target=\"_top\">Experience Lab</a></li>\\n          <li><a class=\"ogf__link\" href=\"/pricing\" target=\"_top\">Pricing</a></li>\\n          <li><a class=\"ogf__link\" href=\"/contact\" target=\"_top\">Contact</a></li>\\n        </ul>\\n      </nav>\\n\\n      <nav aria-label=\"Services\">\\n        <p class=\"ogf__label\">Services</p>\\n        <ul class=\"ogf__links\">\\n          <li><a class=\"ogf__link\" href=\"/web-design\" target=\"_top\">Web Design</a></li>\\n          <li><a class=\"ogf__link\" href=\"/ecommerce-web-design\" target=\"_top\">E-commerce Web Design</a></li>\\n          <li><a class=\"ogf__link\" href=\"/shopify-web-design\" target=\"_top\">Shopify Web Design</a></li>\\n          <li><a class=\"ogf__link\" href=\"/custom-web-development\" target=\"_top\">Custom Web Development</a></li>\\n          <li><a class=\"ogf__link\" href=\"/website-redesign\" target=\"_top\">Website Redesign</a></li>\\n          <li><a class=\"ogf__link\" href=\"/interactive-web-design\" target=\"_top\">Interactive Web Design</a></li>\\n          <li><a class=\"ogf__link\" href=\"/landing-page-design\" target=\"_top\">Landing Page Design</a></li>\\n        </ul>\\n      </nav>\\n\\n      <div>\\n        <p class=\"ogf__label\">Contact</p>\\n        <div class=\"ogf__contact-list\">\\n          <a class=\"ogf__contact\" href=\"mailto:optimawebai@gmail.com\"><small>Email</small><span>optimawebai@gmail.com <i aria-hidden=\"true\">&#8599;</i></span></a>\\n          <a class=\"ogf__contact\" href=\"tel:+27815001968\"><small>Phone</small><span>+27 81 500 1968 <i aria-hidden=\"true\">&#8599;</i></span></a>\\n        </div>\\n      </div>\\n\\n      <nav aria-label=\"Policies\"><p class=\"ogf__label\">Policies</p><ul class=\"ogf__links\"><li><a class=\"ogf__link\" href=\"/legal-pages/privacy-policy\" target=\"_top\">Privacy Policy</a></li><li><a class=\"ogf__link\" href=\"/legal-pages/terms-and-conditions\" target=\"_top\">Terms &amp; Conditions</a></li></ul></nav>\\n      <nav aria-label=\"Information\"><p class=\"ogf__label\">Information</p><ul class=\"ogf__links\"><li><a class=\"ogf__link\" href=\"/legal-pages/disclaimer\" target=\"_top\">Disclaimer</a></li><li><a class=\"ogf__link\" href=\"/legal-pages/cookie-policy\" target=\"_top\">Cookie Policy</a></li></ul></nav>\\n      <nav aria-label=\"Client terms\"><p class=\"ogf__label\">Client Terms</p><ul class=\"ogf__links\"><li><a class=\"ogf__link\" href=\"/legal-pages/refund-and-cancellation-policy\" target=\"_top\">Refund &amp; Cancellation</a></li><li><a class=\"ogf__link\" href=\"/legal-pages/service-level-agreement-%28sla%29\" target=\"_top\">Service Level Agreement</a></li></ul></nav>\\n    </div>\\n\\n    <div class=\"ogf__legal ogf-reveal\">\\n      <p class=\"ogf__copyright\">\\xa9 <span data-ogf-year>2026</span> OptimaWebAI (Pty) Ltd. All rights reserved.<br>Web design &amp; digital solutions \\xb7 South Africa</p>\\n      <div class=\"ogf__socials\">\\n        <a class=\"ogf__social\" href=\"https://www.instagram.com/optimawebai/\" target=\"_blank\" rel=\"noopener\" aria-label=\"OptimaWebAI on Instagram\"><span>Instagram</span><i aria-hidden=\"true\">&#8599;</i></a>\\n        <a class=\"ogf__social\" href=\"https://www.tiktok.com/@optimawebai\" target=\"_blank\" rel=\"noopener\" aria-label=\"OptimaWebAI on TikTok\"><span>TikTok</span><i aria-hidden=\"true\">&#8599;</i></a>\\n        <a class=\"ogf__social\" href=\"https://www.facebook.com/share/1DiEsb7GoH/?mibextid=wwXIfr\" target=\"_blank\" rel=\"noopener\" aria-label=\"OptimaWebAI on Facebook\"><span>Facebook</span><i aria-hidden=\"true\">&#8599;</i></a>\\n        <button class=\"ogf__top\" type=\"button\" aria-label=\"Back to top\">&#8593;</button>\\n      </div>\\n    </div>\\n  </div>\\n</footer>\\n\\n<script>\\n(() => {\\n  document.querySelectorAll(\\'[data-optima-footer]\\').forEach(root => {\\n    if(root.dataset.ready) return;\\n    root.dataset.ready=\\'true\\';\\n    const year=root.querySelector(\\'[data-ogf-year]\\');\\n    if(year) year.textContent=new Date().getFullYear();\\n    root.querySelector(\\'.ogf__top\\')?.addEventListener(\\'click\\',()=>window.scrollTo({top:0,behavior:matchMedia(\\'(prefers-reduced-motion: reduce)\\').matches?\\'auto\\':\\'smooth\\'}));\\n    if(!(\\'IntersectionObserver\\' in window)){root.querySelectorAll(\\'.ogf-reveal\\').forEach(el=>el.classList.add(\\'is-visible\\'));return}\\n    const observer=new IntersectionObserver(entries=>entries.forEach(entry=>{if(entry.isIntersecting){entry.target.classList.add(\\'is-visible\\');observer.unobserve(entry.target)}}),{threshold:.08});\\n    root.querySelectorAll(\\'.ogf-reveal\\').forEach(el=>observer.observe(el));\\n  });\\n})();\\n</script>\\n',id:\"GafMD0fC4\",layoutId:\"GafMD0fC4\",radius:\"0px\",style:{width:\"100%\"},type:\"html\",url:\"\",width:\"100%\",zoom:1})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:(componentViewport?.height||471)*1,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0,...addPropertyOverrides({EAE4hFzUn:{height:(componentViewport?.height||671)*1},Qk6E2mkA1:{height:(componentViewport?.height||200)*1}},baseVariant,gestureVariant),children:/*#__PURE__*/_jsx(SmartComponentScopedContainer,{className:\"framer-1x2enmo-container\",layoutDependency:layoutDependency,layoutId:\"zmmRaFmVN-container\",nodeId:\"zmmRaFmVN\",rendersWithMotion:true,scopeId:\"JnzAem52X\",children:/*#__PURE__*/_jsx(BGItem,{height:\"100%\",id:\"zmmRaFmVN\",layoutId:\"zmmRaFmVN\",style:{height:\"100%\",width:\"100%\"},t9FMFYCtS:\"var(--token-2fbb8a30-5c97-448a-8e88-2c48df67cb52, rgba(255, 255, 255, 0.07))\",variant:matchVariant(\"WX_QHnVLj\"),width:\"100%\",...addPropertyOverrides({EAE4hFzUn:{variant:matchVariant(\"i2j0DmlNt\")},Qk6E2mkA1:{variant:matchVariant(\"k4c5GyTiw\")}},baseVariant,gestureVariant)})})})]})})})});});const css=[\".framer-3x11l.framer-1fq8shv, .framer-3x11l .framer-1fq8shv { display: block; }\",\".framer-3x11l.framer-6m69re { align-content: center; align-items: center; display: flex; flex-direction: row; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: center; overflow: var(--overflow-clip-fallback, clip); padding: 0px 0px 50px 0px; position: relative; width: 1200px; }\",\".framer-3x11l .framer-4w484g-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",\".framer-3x11l .framer-1x2enmo-container { -webkit-user-select: none; flex: none; height: 100%; left: calc(50.00000000000002% - 100% / 2); pointer-events: none; position: absolute; top: 0px; user-select: none; width: 100%; }\",\".framer-3x11l.framer-v-1ljrgyj.framer-6m69re { padding: 130px 0px 50px 0px; width: 810px; }\",\".framer-3x11l.framer-v-1qyqddu.framer-6m69re { padding: 100px 0px 40px 0px; width: 360px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 471\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"auto\"]},\"EAE4hFzUn\":{\"layout\":[\"fixed\",\"auto\"]},\"Qk6E2mkA1\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const FramerJnzAem52X=withCSS(Component,css,\"framer-3x11l\");export default FramerJnzAem52X;FramerJnzAem52X.displayName=\"Footer\";FramerJnzAem52X.defaultProps={height:471,width:1200};addPropertyControls(FramerJnzAem52X,{variant:{options:[\"qxcUNJcIB\",\"EAE4hFzUn\",\"Qk6E2mkA1\"],optionTitles:[\"Desktop\",\"Tablet\",\"Phone\"],title:\"Variant\",type:ControlType.Enum}});addFonts(FramerJnzAem52X,[{explicitInter:true,fonts:[]},...EmbedFonts,...BGItemFonts],{supportsExplicitInterCodegen:true});FramerJnzAem52X.loader={load:(props,context)=>{const locale=context.locale;return Promise.allSettled([forwardLoader(BGItem,{},context)]);}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerJnzAem52X\",\"slots\":[],\"annotations\":{\"framerColorSyntax\":\"true\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"EAE4hFzUn\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"Qk6E2mkA1\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicHeight\":\"471\",\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicWidth\":\"1200\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./JnzAem52X.map","// Generated by Framer (56ce7df)\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{addFonts,addPropertyControls,ControlType,useComponentViewport,useLocaleInfo,useVariantState,withCSS}from\"framer\";import{LayoutGroup,motion}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";const cycleOrder=[\"HSfXNOnjY\",\"WE0ftjICd\",\"dbQ5R5Kal\",\"fu0ER5VHQ\",\"puhMi_Nsd\",\"bdNXbtmXc\"];const serializationHash=\"framer-c9jeh\";const variantClassNames={bdNXbtmXc:\"framer-v-1s3tt6m\",dbQ5R5Kal:\"framer-v-1ti0ddh\",fu0ER5VHQ:\"framer-v-190seyf\",HSfXNOnjY:\"framer-v-f12f5x\",puhMi_Nsd:\"framer-v-1gj7j86\",WE0ftjICd:\"framer-v-wwn3ow\"};function addPropertyOverrides(overrides,...variants){const nextOverrides={};variants?.forEach(variant=>variant&&Object.assign(nextOverrides,overrides[variant]));return nextOverrides;}const humanReadableVariantMap={\"Dekstop Open\":\"WE0ftjICd\",\"Desktop Closed\":\"HSfXNOnjY\",\"Mobile dark open\":\"bdNXbtmXc\",\"Phone Closed\":\"fu0ER5VHQ\",\"Phone dark closed\":\"puhMi_Nsd\",\"Phone Open\":\"dbQ5R5Kal\"};const Variants=motion.create(React.Fragment);const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"HSfXNOnjY\"};};const createLayoutDependency=(props,variants)=>{if(props.layoutDependency)return variants.join(\"-\")+props.layoutDependency;return variants.join(\"-\");};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const componentViewport=useComponentViewport();const{style,className,layoutId,variant,...restProps}=getProps(props);const{baseVariant,classNames,clearLoadingGesture,gestureHandlers,gestureVariant,isLoading,setGestureState,setVariant,variants}=useVariantState({cycleOrder,defaultVariant:\"HSfXNOnjY\",ref:refBinding,variant,variantClassNames});const layoutDependency=createLayoutDependency(props,variants);const sharedStyleClassNames=[];return /*#__PURE__*/_jsx(LayoutGroup,{id:layoutId??defaultLayoutId,children:/*#__PURE__*/_jsx(Variants,{animate:variants,initial:false})});});const css=[\".framer-c9jeh.framer-1nwbsx8, .framer-c9jeh .framer-1nwbsx8 { display: block; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 58\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"WE0ftjICd\":{\"layout\":[\"fixed\",\"fixed\"]},\"dbQ5R5Kal\":{\"layout\":[\"fixed\",\"auto\"]},\"fu0ER5VHQ\":{\"layout\":[\"fixed\",\"fixed\"]},\"puhMi_Nsd\":{\"layout\":[\"fixed\",\"fixed\"]},\"bdNXbtmXc\":{\"layout\":[\"fixed\",\"auto\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n */const Framert1isjFhUD=withCSS(Component,css,\"framer-c9jeh\");export default Framert1isjFhUD;Framert1isjFhUD.displayName=\"Dynamic Notch Navigation\";Framert1isjFhUD.defaultProps={height:58,width:1200};addPropertyControls(Framert1isjFhUD,{variant:{options:[\"HSfXNOnjY\",\"WE0ftjICd\",\"dbQ5R5Kal\",\"fu0ER5VHQ\",\"puhMi_Nsd\",\"bdNXbtmXc\"],optionTitles:[\"Desktop Closed\",\"Dekstop Open\",\"Phone Open\",\"Phone Closed\",\"Phone dark closed\",\"Mobile dark open\"],title:\"Variant\",type:ControlType.Enum}});addFonts(Framert1isjFhUD,[{explicitInter:true,fonts:[]}],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"Framert1isjFhUD\",\"slots\":[],\"annotations\":{\"framerIntrinsicWidth\":\"1200\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"WE0ftjICd\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"dbQ5R5Kal\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"fu0ER5VHQ\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"puhMi_Nsd\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"bdNXbtmXc\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerDisplayContentsDiv\":\"false\",\"framerAutoSizeImages\":\"true\",\"framerComponentViewportWidth\":\"true\",\"framerContractVersion\":\"1\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"58\",\"framerColorSyntax\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./t1isjFhUD.map","// Generated by Framer (4ecd144)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,Container,cx,forwardLoader,GeneratedComponentContext,getFonts,PropertyOverrides,RenderTarget,runTasksWithYield,useCustomCursors,useHydratedBreakpointVariants,useIsOnFramerCanvas,useLocaleInfo,withCSS,withVariantAppearEffect}from\"framer\";import{LayoutGroup,motion}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";import Embed1 from\"https://framerusercontent.com/modules/o1PI5S8YtkA5bP5g4dFz/7LsYGOkyjLv3zWdmJA4n/Embed.js\";import Embed from\"https://framerusercontent.com/modules/o1PI5S8YtkA5bP5g4dFz/cAPMVEI6osbJ1UvICgTq/Embed.js\";import Footer from\"#framer/local/canvasComponent/JnzAem52X/JnzAem52X.js\";import DynamicNotchNavigation from\"#framer/local/canvasComponent/t1isjFhUD/t1isjFhUD.js\";const EmbedFonts=getFonts(Embed);const Embed1Fonts=getFonts(Embed1);const DynamicNotchNavigationFonts=getFonts(DynamicNotchNavigation);const DynamicNotchNavigationWithVariantAppearEffect=withVariantAppearEffect(DynamicNotchNavigation);const FooterFonts=getFonts(Footer);const breakpoints={Dst6lrXHO:\"(min-width: 1200px)\",JKJSCCaio:\"(max-width: 809.98px)\",X7aN0nU2I:\"(min-width: 810px) and (max-width: 1199.98px)\"};const isBrowser=()=>typeof document!==\"undefined\";const serializationHash=\"framer-D6OqI\";const variantClassNames={Dst6lrXHO:\"framer-v-1upato1\",JKJSCCaio:\"framer-v-12s58mq\",X7aN0nU2I:\"framer-v-rd941r\"};const jejTi6G_JhkPf358Pb=undefined;const matchVariant=(...args)=>{for(const arg of args){if(arg&&typeof arg===\"string\")return arg;}return undefined;};const breakpointRules={JKJSCCaio:[\".framer-D6OqI .framer-1yx8o3w-container { top: 0px; }\"],X7aN0nU2I:[\".framer-D6OqI .framer-1yx8o3w-container { top: 0px; }\"]};const breakpointKeys=Object.keys(breakpointRules);const selectors={JKJSCCaio:\".framer-12s58mq-override\",X7aN0nU2I:\".framer-rd941r-override\"};const rules=[\".framer-D6OqI.framer-phyuta, .framer-D6OqI .framer-phyuta { display: block; }\",\".framer-D6OqI.framer-1upato1 { align-content: center; align-items: center; background-color: #ffffff; display: flex; flex-direction: column; flex-wrap: nowrap; gap: 0px; height: min-content; justify-content: flex-start; overflow: var(--overflow-clip-fallback, clip); padding: 0px; position: relative; width: 100%; }\",\".framer-D6OqI .framer-l82au1 { background: transparent; flex-grow: 1; height: 0px; margin: 0px; margin-bottom: -0px; position: relative; width: 0px; }\",\".framer-D6OqI .framer-1cofu7r-container { flex: none; height: auto; order: 1001; position: relative; width: 100%; }\",\".framer-D6OqI .framer-162f2jr-container { flex: none; height: auto; order: 1002; position: relative; width: 100%; }\",\".framer-D6OqI .framer-1yx8o3w-container { flex: none; height: auto; left: 0px; order: 1003; position: var(--framer-canvas-fixed-position, fixed); right: 0px; top: -1px; z-index: 10; }\",\".framer-D6OqI .framer-mykkz1-container { flex: none; height: auto; order: 1004; position: relative; width: 100%; }\",'[data-layout-template=\"true\"] > #overlay { margin-bottom: -0px; }'];const mediaQueries={Dst6lrXHO:\"(min-width: 1200px)\",JKJSCCaio:\"(max-width: 809.98px)\",X7aN0nU2I:\"(min-width: 810px) and (max-width: 1199.98px)\"};const humanReadableVariantMap={Desktop:\"Dst6lrXHO\",Phone:\"JKJSCCaio\",Tablet:\"X7aN0nU2I\"};const HTMLStyle=({value})=>{const onCanvas=useIsOnFramerCanvas();if(onCanvas)return null;return /*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:value},\"data-framer-html-style\":\"\"});};const getProps=({height,id,width,...props})=>{return{...props,variant:humanReadableVariantMap[props.variant]??props.variant??\"Dst6lrXHO\"};};const Component=/*#__PURE__*/React.forwardRef(function(props,ref){const fallbackRef=useRef(null);const refBinding=ref??fallbackRef;const defaultLayoutId=React.useId();const{activeLocale,setLocale}=useLocaleInfo();const{style,className,layoutId,variant,children,...restProps}=getProps(props);const[baseVariant,hydratedBaseVariant]=useHydratedBreakpointVariants(variant,breakpoints,false);const gestureVariant=undefined;const sharedStyleClassNames=[];const scopingClassNames=cx(serializationHash,...sharedStyleClassNames);useCustomCursors({});return /*#__PURE__*/_jsx(GeneratedComponentContext.Provider,{value:{activeVariantId:baseVariant,humanReadableVariantMap,isLayoutTemplate:true,primaryVariantId:\"Dst6lrXHO\",variantClassNames},children:/*#__PURE__*/_jsxs(LayoutGroup,{id:layoutId??defaultLayoutId,children:[/*#__PURE__*/_jsx(HTMLStyle,{value:\":root body { background: rgb(255, 255, 255); }\"}),/*#__PURE__*/_jsxs(motion.div,{...restProps,className:cx(scopingClassNames,\"framer-1upato1\",className),\"data-layout-template\":true,ref:refBinding,style:{...style},children:[children,/*#__PURE__*/_jsx(\"div\",{className:\"framer-l82au1\"}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-1cofu7r-container\",isAuthoredByUser:true,isModuleExternal:true,nodeId:\"POIHqnTDS\",scopeId:\"qhnRAmdje\",children:/*#__PURE__*/_jsx(Embed,{height:\"100%\",html:'<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>Client Feedback</title></head><body>\\n<style>\\n  * { box-sizing: border-box; }\\n  html, body { margin: 0; width: 100%; background: #171717; }\\n  .ogr {\\n    --bg: #171717;\\n    --card: #1d1d1d;\\n    --line: rgba(255,255,255,.09);\\n    --muted: #8d8d8d;\\n    --blue: #3d9cff;\\n    width: 100%; overflow: hidden; color: #f6f6f3; background: var(--bg);\\n    padding: clamp(72px, 8vw, 128px) 0 clamp(76px, 8vw, 120px);\\n    font-family: Inter, ui-sans-serif, -apple-system, BlinkMacSystemFont, \"Segoe UI\", sans-serif;\\n  }\\n  .ogr__head { width: min(1180px, calc(100% - 48px)); margin: 0 auto 48px; display: grid; justify-items: center; gap: 28px; text-align: center; }\\n  .ogr__eyebrow { display: flex; justify-content: center; align-items: center; gap: 9px; margin: 0 0 18px; color: #9b9b9b; font-size: 10px; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; }\\n  .ogr__eyebrow::before { content: \"\"; width: 6px; height: 6px; border-radius: 50%; background: var(--blue); box-shadow: 0 0 12px rgba(61,156,255,.7); }\\n  .ogr h2 { max-width: 760px; margin: 0; font-size: clamp(42px, 6.2vw, 86px); line-height: .94; letter-spacing: -.065em; font-weight: 660; }\\n  .ogr h2 span { color: inherit; }\\n  .ogr__summary { min-width: 215px; padding: 18px 20px; border: 1px solid var(--line); border-radius: 16px; background: rgba(255,255,255,.018); }\\n  .ogr__brand { display: flex; align-items: center; gap: 9px; margin-bottom: 11px; color: #dedede; font-size: 11px; font-weight: 700; }\\n  .ogr__g { display: block; width: 21px; height: 21px; flex: 0 0 21px; }\\n  .ogr__score { display: flex; align-items: baseline; gap: 9px; }\\n  .ogr__rating { font-size: 31px; line-height: 1; font-weight: 690; letter-spacing: -.04em; }\\n  .ogr__stars { color: #fabb05; font-size: 13px; letter-spacing: 1px; white-space: nowrap; }\\n  .ogr__count { margin: 9px 0 0; color: var(--muted); font-size: 11px; }\\n  .ogr__tracks { display: grid; gap: 14px; }\\n  .ogr__row { display: flex; width: max-content; gap: 14px; will-change: transform; animation: ogr-left 24s linear infinite; }\\n  .ogr__row--reverse { animation-name: ogr-right; animation-duration: 28s; transform: translateX(calc(-50% - 7px)); }\\n  .ogr__card { position: relative; width: clamp(280px, 27vw, 380px); min-height: 218px; display: flex; flex-direction: column; padding: 20px; overflow: hidden; border: 1px solid rgba(255,255,255,.82); border-radius: 16px; background: #f7f9fc; color: #171717; text-decoration: none; box-shadow: 0 8px 24px rgba(0,0,0,.14); transform: perspective(900px) translateZ(0); transform-style: preserve-3d; transition: transform .42s cubic-bezier(.2,.8,.2,1), box-shadow .42s ease, background-color .42s ease; }\\n  .ogr__card::after { content: \"\"; position: absolute; inset: auto -40px -70px auto; width: 150px; height: 150px; border-radius: 50%; background: rgba(61,156,255,.055); filter: blur(20px); transition: transform .5s ease, opacity .5s ease; }\\n  .ogr__card:hover { transform: perspective(900px) translateY(-8px) rotateX(2.5deg) rotateY(-2.5deg) translateZ(12px); background: #ffffff; box-shadow: 0 22px 48px rgba(0,0,0,.3), 0 1px 0 rgba(255,255,255,.8) inset; }\\n  .ogr__card:nth-child(even):hover { transform: perspective(900px) translateY(-8px) rotateX(2.5deg) rotateY(2.5deg) translateZ(12px); }\\n  .ogr__card:hover::after { transform: scale(1.25); opacity: .9; }\\n  .ogr__author { position: relative; z-index: 1; display: flex; align-items: center; gap: 12px; }\\n  .ogr__avatar { width: 40px; height: 40px; flex: 0 0 40px; border-radius: 50%; object-fit: cover; background: #292929; border: 1px solid rgba(255,255,255,.12); }\\n  .ogr__initial { display: grid; place-items: center; color: #fff; font-size: 13px; font-weight: 750; }\\n  .ogr__person { min-width: 0; }\\n  .ogr__name { overflow: hidden; text-overflow: ellipsis; white-space: nowrap; color: #1b1b1b; font-size: 13px; font-weight: 700; }\\n  .ogr__name-line { display: flex; align-items: center; gap: 7px; min-width: 0; }\\n  .ogr__verified { display: inline-flex; align-items: center; gap: 4px; flex: 0 0 auto; color: #666; font-size: 9px; font-weight: 700; letter-spacing: .01em; }\\n  .ogr__verified svg { width: 12px; height: 12px; display: block; }\\n  .ogr__meta { margin-top: 4px; color: #77736b; font-size: 10px; }\\n  .ogr__google { width: 18px; height: 18px; margin-left: auto; align-self: flex-start; flex: 0 0 18px; }\\n  .ogr__card-stars { position: relative; z-index: 1; margin: 19px 0 12px; color: #fabb05; font-size: 13px; letter-spacing: 1.5px; }\\n  .ogr__text { position: relative; z-index: 1; display: -webkit-box; -webkit-box-orient: vertical; -webkit-line-clamp: 4; overflow: hidden; margin: 0; color: #4e4b45; font-size: 12px; line-height: 1.6; }\\n  .ogr__source { position: relative; z-index: 1; margin-top: auto; padding-top: 15px; color: #777169; font-size: 9px; font-weight: 700; letter-spacing: .08em; text-transform: uppercase; }\\n  .ogr__foot { width: min(1180px, calc(100% - 48px)); display: flex; justify-content: space-between; gap: 20px; margin: 24px auto 0; color: #626262; font-size: 9px; line-height: 1.5; }\\n  .ogr__foot a { color: #858585; text-decoration: none; }\\n  .ogr__status { width: min(1180px, calc(100% - 48px)); min-height: 160px; display: grid; place-items: center; margin: 0 auto; border: 1px solid var(--line); border-radius: 18px; color: #777; font-size: 12px; text-align: center; }\\n  .ogr__status-dot { width: 7px; height: 7px; margin: 0 auto 12px; border-radius: 50%; background: var(--blue); box-shadow: 0 0 14px rgba(61,156,255,.8); animation: ogr-pulse 1.5s ease-in-out infinite; }\\n  @keyframes ogr-left { to { transform: translateX(calc(-50% - 7px)); } }\\n  @keyframes ogr-right { to { transform: translateX(0); } }\\n  @keyframes ogr-pulse { 50% { opacity: .35; transform: scale(.7); } }\\n  @media (max-width: 720px) {\\n    .ogr { padding: 68px 0 72px; }\\n    .ogr__head { width: min(100% - 32px, 1180px); margin-bottom: 34px; }\\n    .ogr h2 { font-size: clamp(40px, 13vw, 62px); }\\n    .ogr__summary { width: min(100%, 320px); min-width: 0; display: grid; grid-template-columns: auto 1fr; column-gap: 13px; align-items: center; text-align: left; }\\n    .ogr__brand { grid-row: 1 / 3; margin: 0; }\\n    .ogr__score, .ogr__count { margin: 0; }\\n    .ogr__card { width: min(78vw, 290px); min-height: 205px; padding: 17px; border-radius: 14px; }\\n    .ogr__avatar { width: 36px; height: 36px; flex-basis: 36px; }\\n    .ogr__name { font-size: 12px; }\\n    .ogr__verified { font-size: 8px; }\\n    .ogr__card-stars { margin: 15px 0 10px; }\\n    .ogr__text { -webkit-line-clamp: 5; font-size: 12px; line-height: 1.6; }\\n    .ogr__source { padding-top: 14px; }\\n    .ogr__foot { width: min(100% - 32px, 1180px); flex-direction: column; }\\n  }\\n  @media (prefers-reduced-motion: reduce) {\\n    .ogr__row { animation-play-state: paused; }\\n    .ogr__status-dot { animation: none; }\\n  }\\n  /* Shared Optima light theme; structure and review logic remain unchanged. */\\n  html,body{background:#f4f4f1}\\n  .ogr{--bg:#f4f4f1;--card:#f4f4f1;--line:rgba(17,18,20,.2);--muted:#55575a;--blue:#111;position:relative;isolation:isolate;color:#111;background:#f4f4f1}\\n  .ogr::before{content:\"\";position:absolute;z-index:0;inset:0;pointer-events:none;background-color:transparent;background-image:linear-gradient(rgba(17,18,20,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(17,18,20,.055) 1px,transparent 1px);background-size:72px 72px}\\n  .ogr__head,.ogr__live,.ogr__foot{position:relative;z-index:1}\\n  .ogr__head>div:first-child,.ogr__summary{background:#f4f4f1;box-shadow:0 0 0 16px #f4f4f1}\\n  .ogr h2{color:#111;font-weight:730;letter-spacing:-.052em}.ogr h2 span{color:#5f6063;font-weight:780}\\n  .ogr__eyebrow{color:#111;font-weight:800}.ogr__eyebrow::before{background:#111;box-shadow:0 0 0 5px rgba(17,17,17,.09)}\\n  .ogr__summary{border-color:#111;border-radius:5px}.ogr__brand{color:#111}.ogr__count,.ogr__foot{color:#55575a}\\n  .ogr__card{color:#111;background:#f4f4f1;border:1px solid #111;border-radius:5px;box-shadow:0 8px 24px rgba(17,18,20,.08)}\\n  .ogr__card::after{display:none}.ogr__card:hover{background:#f4f4f1;box-shadow:0 18px 42px rgba(17,18,20,.12)}\\n  .ogr__name,.ogr__text{color:#111}.ogr__meta,.ogr__verified,.ogr__source{color:#55575a}\\n  .ogr__status{color:#55575a;background:#f4f4f1;border-color:#111;border-radius:5px}.ogr__status-dot{background:#111;box-shadow:0 0 0 5px rgba(17,17,17,.09)}\\n  @media(max-width:720px){.ogr__head>div:first-child,.ogr__summary{box-shadow:0 0 0 10px #f4f4f1}}\\n\\n  /* Mobile-only refinement — desktop carousel and Google review logic remain unchanged. */\\n  @media(max-width:720px){\\n    .ogr{padding:52px 0 54px}\\n    .ogr__head{width:min(100% - 24px,1180px);gap:16px;margin-bottom:26px}\\n    .ogr__head>div:first-child,.ogr__summary{box-shadow:0 0 0 7px #f4f4f1}\\n    .ogr__eyebrow{gap:8px;margin-bottom:13px;font-size:8.5px}\\n    .ogr h2{font-size:clamp(39px,11.8vw,52px);line-height:.95}\\n    .ogr__summary{width:min(100%,285px);padding:12px 14px;column-gap:10px}\\n    .ogr__brand{gap:7px;font-size:9.5px}\\n    .ogr__g{width:18px;height:18px;flex-basis:18px}\\n    .ogr__rating{font-size:25px}\\n    .ogr__stars{font-size:11px}\\n    .ogr__count{font-size:9px}\\n    .ogr__tracks{gap:8px}\\n    .ogr__row{gap:8px}\\n    .ogr__card{width:min(70vw,250px);min-height:176px;padding:13px;border-radius:5px}\\n    .ogr__card:hover,.ogr__card:nth-child(even):hover{transform:none;background:#f4f4f1;box-shadow:0 8px 24px rgba(17,18,20,.08)}\\n    .ogr__author{gap:9px}\\n    .ogr__avatar{width:32px;height:32px;flex-basis:32px}\\n    .ogr__name{font-size:11px}\\n    .ogr__name-line{gap:5px}\\n    .ogr__verified{font-size:7px}\\n    .ogr__verified svg{width:10px;height:10px}\\n    .ogr__meta{margin-top:3px;font-size:8.5px}\\n    .ogr__google{width:15px;height:15px;flex-basis:15px}\\n    .ogr__card-stars{margin:11px 0 7px;font-size:11px}\\n    .ogr__text{-webkit-line-clamp:4;font-size:10.5px;line-height:1.45}\\n    .ogr__source{padding-top:9px;font-size:7.5px}\\n    .ogr__foot{width:min(100% - 24px,1180px);gap:8px;margin-top:17px;font-size:7.5px}\\n    .ogr__status{width:min(100% - 24px,1180px);min-height:120px;padding:18px;font-size:10.5px}\\n  }\\n\\n  @media(max-width:390px){\\n    .ogr h2{font-size:38px}\\n    .ogr__summary{width:100%}\\n    .ogr__card{width:min(72vw,238px);min-height:170px;padding:12px}\\n    .ogr__text{font-size:10px}\\n  }\\n\\n/* Compact, layered review cards. Google connection and review content unchanged. */\\n.ogr__tracks{gap:18px;padding:12px 0 22px}\\n.ogr__row{--review-gap:14px;gap:var(--review-gap)}\\n.ogr__card,.ogr__card:hover,.ogr__card:nth-child(even):hover{\\n width:clamp(268px,23vw,310px);min-height:202px;flex:0 0 auto;padding:17px;\\n overflow:visible;border:1px solid #11111145;border-radius:10px;background:#f4f4f1;\\n box-shadow:0 3px 0 #dededa,0 6px 0 -1px #c9c9c3,0 13px 20px -13px #1115;\\n transform:perspective(950px) rotateX(0) rotateY(0);transform-style:preserve-3d;\\n transition:transform .4s cubic-bezier(.2,.8,.2,1),box-shadow .4s,border-color .3s;\\n}\\n.ogr__card::after{display:block;inset:0;width:auto;height:auto;border-radius:inherit;filter:none;pointer-events:none;background:linear-gradient(130deg,#ffffff80,transparent 42%,#ffffff18);opacity:.3;transform:translateZ(1px)}\\n.ogr__author{gap:9px;transform:translateZ(12px)}\\n.ogr__avatar{width:34px;height:34px;flex-basis:34px;border:2px solid #f4f4f1;box-shadow:0 2px 0 #1112,0 4px 8px #1111}\\n.ogr__person{flex:1;min-width:0}\\n.ogr__name-line{align-items:flex-start;flex-direction:column;gap:3px}\\n.ogr__name{max-width:100%;font-size:12px}\\n.ogr__verified{font-size:8px}\\n.ogr__meta{font-size:10px}\\n.ogr__card-stars{margin:13px 0 9px;transform:translateZ(15px);text-shadow:0 1px 0 #9b700022}\\n.ogr__text{font-size:12px;line-height:1.55;-webkit-line-clamp:4;transform:translateZ(10px)}\\n.ogr__source{font-size:9px;padding-top:12px;transform:translateZ(12px);text-decoration:underline;text-underline-offset:4px}\\n.ogr__summary{box-shadow:0 3px 0 #dededa,0 10px 20px -15px #1114,0 0 0 10px #f4f4f1;border-radius:10px}\\n.ogr__card:focus-visible{outline:2px solid #111;outline-offset:4px}\\n.ogr__tracks:focus-within .ogr__row{animation-play-state:paused}\\n@keyframes ogr-left{to{transform:translateX(calc(-50% - var(--review-gap)/2))}}\\n@keyframes ogr-right{from{transform:translateX(calc(-50% - var(--review-gap)/2))}to{transform:translateX(0)}}\\n@media(hover:hover) and (pointer:fine){\\n .ogr__tracks:hover .ogr__row{animation-play-state:paused}\\n .ogr__card:hover{z-index:3;transform:perspective(950px) translateY(-5px) rotateX(3deg) rotateY(-3deg);border-color:#1118;box-shadow:0 4px 0 #dededa,0 8px 0 -1px #c9c9c3,0 24px 26px -18px #1115}\\n .ogr__card:nth-child(even):hover{transform:perspective(950px) translateY(-5px) rotateX(3deg) rotateY(3deg)}\\n .ogr__card:hover::after{opacity:.7;transform:translateZ(1px)}\\n}\\n@media(max-width:720px){\\n .ogr{padding:44px 0}\\n .ogr__head{margin-bottom:20px}\\n .ogr__tracks{gap:14px;padding:9px 0 16px;overflow-x:auto;overscroll-behavior-x:contain;-webkit-overflow-scrolling:touch}\\n .ogr__row{--review-gap:12px;animation:none;transform:none;padding:0 14px}\\n .ogr__card[aria-hidden=\"true\"]{display:none}\\n .ogr__card,.ogr__card:hover,.ogr__card:nth-child(even):hover{width:min(76vw,240px);min-height:190px;padding:14px;border-radius:10px;transform:none}\\n .ogr__card::after,.ogr__author,.ogr__card-stars,.ogr__text,.ogr__source{transform:none}\\n .ogr__avatar{width:30px;height:30px;flex-basis:30px}\\n .ogr__name{font-size:12px}.ogr__meta{font-size:10px}\\n .ogr__text{font-size:12px;line-height:1.55}\\n .ogr__card-stars{margin:11px 0 8px}\\n .ogr__source{font-size:9px;padding-top:11px}\\n .ogr__foot{font-size:10px;line-height:1.5}\\n}\\n@media(prefers-reduced-motion:reduce){\\n .ogr__tracks{overflow-x:auto}\\n .ogr__row{animation:none;transform:none}\\n .ogr__card,.ogr__card:hover,.ogr__card:nth-child(even):hover,.ogr__card *,.ogr__card::after{transition:none!important;animation:none!important;transform:none!important}\\n}\\n\\n/* Mobile autoplay; keep desktop motion and the Google connection unchanged. */\\n.ogr__motion-toggle{display:none}\\n@media(max-width:720px){\\n .ogr__tracks{overflow-x:hidden}\\n .ogr__row{padding:0;animation:ogr-left 38s linear infinite;transform:none}\\n .ogr__row--reverse{animation-name:ogr-right;animation-duration:44s}\\n .ogr__card[aria-hidden=\"true\"]{display:flex}\\n .ogr[data-motion-paused=\"true\"] .ogr__row,\\n .ogr[data-touch-paused=\"true\"] .ogr__row,\\n .ogr[data-background=\"true\"] .ogr__row{animation-play-state:paused}\\n .ogr__motion-toggle{display:inline-block;align-self:flex-start;min-height:44px;padding:8px 0;border:0;background:none;color:#55575a;font:600 12px/1.4 Inter,Arial,sans-serif;text-decoration:underline;text-underline-offset:4px;cursor:pointer}\\n .ogr__motion-toggle:focus-visible{outline:2px solid #111;outline-offset:3px}\\n}\\n@media(prefers-reduced-motion:reduce){\\n .ogr__tracks{overflow-x:auto}\\n .ogr__row{animation:none!important;transform:none;padding:0 14px}\\n .ogr__card[aria-hidden=\"true\"]{display:none}\\n .ogr__motion-toggle{display:none}\\n}\\n\\n/* Final slower carousel speeds. */\\n.ogr__row{animation-duration:40s}\\n.ogr__row--reverse{animation-duration:46s}\\n@media(max-width:720px){\\n .ogr__row{animation-duration:56s}\\n .ogr__row--reverse{animation-duration:64s}\\n}\\n\\n/* Final clean white theme. */\\nhtml,body{background:#fff}\\n.ogr{--bg:#fff;--card:#fff;--line:rgba(17,17,17,.18);--muted:#55575a;--blue:#111;background:#fff;color:#111}\\n.ogr::before{background-color:transparent;background-image:linear-gradient(rgba(17,17,17,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(17,17,17,.045) 1px,transparent 1px);background-size:72px 72px}\\n.ogr__head>div:first-child,.ogr__summary{background:#fff;box-shadow:0 0 0 16px #fff}\\n.ogr__summary{background:#fff}\\n.ogr__card,.ogr__card:hover,.ogr__card:nth-child(even):hover{background:#fff}\\n.ogr__avatar{border-color:#fff}\\n.ogr__status{background:#fff}\\n@media(max-width:720px){\\n .ogr__head>div:first-child,.ogr__summary{box-shadow:0 0 0 7px #fff}\\n .ogr__card:hover,.ogr__card:nth-child(even):hover{background:#fff}\\n}\\n\\n</style>\\n\\n<section class=\"ogr\" aria-labelledby=\"ogr-title\">\\n  <div class=\"ogr__head\">\\n    <div>\\n      <p class=\"ogr__eyebrow\">Client feedback</p>\\n      <h2 id=\"ogr-title\">What our clients<br><span>say about us.</span></h2>\\n    </div>\\n    <div class=\"ogr__summary\" aria-live=\"polite\">\\n      <div class=\"ogr__brand\"><svg class=\"ogr__g\" viewBox=\"0 0 24 24\" aria-label=\"Google\" role=\"img\"><path fill=\"#4285F4\" d=\"M21.6 12.23c0-.71-.06-1.4-.18-2.06H12v3.89h5.38a4.6 4.6 0 0 1-2 3.02v2.53h3.24c1.9-1.75 2.98-4.33 2.98-7.38Z\"/><path fill=\"#34A853\" d=\"M12 22c2.7 0 4.96-.9 6.62-2.39l-3.24-2.53c-.9.6-2.05.96-3.38.96-2.6 0-4.81-1.76-5.6-4.13H3.06v2.61A10 10 0 0 0 12 22Z\"/><path fill=\"#FBBC05\" d=\"M6.4 13.91A6 6 0 0 1 6.09 12c0-.66.11-1.31.31-1.91V7.48H3.06A10 10 0 0 0 2 12c0 1.61.39 3.13 1.06 4.52l3.34-2.61Z\"/><path fill=\"#EA4335\" d=\"M12 5.96c1.47 0 2.79.51 3.83 1.5l2.87-2.88A9.63 9.63 0 0 0 12 2a10 10 0 0 0-8.94 5.48l3.34 2.61c.79-2.37 3-4.13 5.6-4.13Z\"/></svg> Google reviews</div>\\n      <div class=\"ogr__score\"><strong class=\"ogr__rating\">—</strong><span class=\"ogr__stars\">★★★★★</span></div>\\n      <p class=\"ogr__count\">Connecting to Google…</p>\\n    </div>\\n  </div>\\n\\n  <div class=\"ogr__live\">\\n    <div class=\"ogr__status\"><div><div class=\"ogr__status-dot\"></div>Loading verified customer feedback…</div></div>\\n  </div>\\n\\n  <div class=\"ogr__foot\">\\n    <button class=\"ogr__motion-toggle\" type=\"button\" aria-pressed=\"false\">Pause motion</button>\\n    <span class=\"ogr__attribution\">Reviews supplied by Google Maps. Newest available reviews are shown first.</span>\\n  </div>\\n</section>\\n\\n<script>\\n(() => {\\n  const ENDPOINT = \"https://optimawebai-google-reviews.vercel.app/api/reviews?v=20260929\";\\n  const root = document.querySelector(\".ogr\");\\n  if (!root) return;\\n  const live = root.querySelector(\".ogr__live\");\\n  const ratingNode = root.querySelector(\".ogr__rating\");\\n  const countNode = root.querySelector(\".ogr__count\");\\n  const attributionNode = root.querySelector(\".ogr__attribution\");\\n  const escapeHTML = value => String(value ?? \"\").replace(/[&<>\"\\']/g, char => ({\"&\":\"&amp;\",\"<\":\"&lt;\",\">\":\"&gt;\",\"\\\\\"\":\"&quot;\",\"\\'\":\"&#39;\"}[char]));\\n  const stars = value => {\\n    const rating = typeof value === \"string\" ? ({ONE:1,TWO:2,THREE:3,FOUR:4,FIVE:5}[value.toUpperCase()] || Number(value)) : Number(value);\\n    const rounded = Math.max(1, Math.min(5, Math.round(rating || 5)));\\n    return \"★\".repeat(rounded) + \"☆\".repeat(5 - rounded);\\n  };\\n  const formatDate = value => {\\n    const date = new Date(value);\\n    return Number.isNaN(date.getTime()) ? \"Google review\" : date.toLocaleDateString(undefined, { year:\"numeric\", month:\"short\", day:\"numeric\" });\\n  };\\n  const googleMark = \\'<svg class=\"ogr__google\" viewBox=\"0 0 24 24\" aria-label=\"Google\" role=\"img\"><path fill=\"#4285F4\" d=\"M21.6 12.23c0-.71-.06-1.4-.18-2.06H12v3.89h5.38a4.6 4.6 0 0 1-2 3.02v2.53h3.24c1.9-1.75 2.98-4.33 2.98-7.38Z\"/><path fill=\"#34A853\" d=\"M12 22c2.7 0 4.96-.9 6.62-2.39l-3.24-2.53c-.9.6-2.05.96-3.38.96-2.6 0-4.81-1.76-5.6-4.13H3.06v2.61A10 10 0 0 0 12 22Z\"/><path fill=\"#FBBC05\" d=\"M6.4 13.91A6 6 0 0 1 6.09 12c0-.66.11-1.31.31-1.91V7.48H3.06A10 10 0 0 0 2 12c0 1.61.39 3.13 1.06 4.52l3.34-2.61Z\"/><path fill=\"#EA4335\" d=\"M12 5.96c1.47 0 2.79.51 3.83 1.5l2.87-2.88A9.63 9.63 0 0 0 12 2a10 10 0 0 0-8.94 5.48l3.34 2.61c.79-2.37 3-4.13 5.6-4.13Z\"/></svg>\\';\\n  const card = review => {\\n    const name = review.name || \"Google reviewer\";\\n    const photo = review.photo ? \\'<img class=\"ogr__avatar\" src=\"\\' + escapeHTML(review.photo) + \\'\" alt=\"\" loading=\"lazy\" referrerpolicy=\"no-referrer\">\\' : \\'<span class=\"ogr__avatar ogr__initial\">\\' + escapeHTML(name.charAt(0).toUpperCase()) + \\'</span>\\';\\n    const message = String(review.comment || \"\").trim() || \"This customer left a rating on Google.\";\\n    const rating = typeof review.rating === \"string\" ? ({ONE:1,TWO:2,THREE:3,FOUR:4,FIVE:5}[review.rating.toUpperCase()] || 5) : Number(review.rating || 5);\\n    return \\'<article class=\"ogr__card\" aria-label=\"\\' + escapeHTML(name) + \\'\\\\\\'s Google review\"><div class=\"ogr__author\">\\' + photo + \\'<div class=\"ogr__person\"><div class=\"ogr__name-line\"><div class=\"ogr__name\">\\' + escapeHTML(name) + \\'</div><span class=\"ogr__verified\" title=\"Review sourced from Google\">Google review</span></div><div class=\"ogr__meta\">\\' + escapeHTML(formatDate(review.createdAt)) + \\'</div></div>\\' + googleMark + \\'</div><div class=\"ogr__card-stars\" aria-label=\"\\' + rating + \\' out of 5 stars\">\\' + stars(rating) + \\'</div><p class=\"ogr__text\">\\' + escapeHTML(message) + \\'</p><span class=\"ogr__source\">Google review</span></article>\\';\\n  };\\n  const row = (reviews, reverse = false) => {\\n    const cards = reviews.map(card).join(\"\");\\n    const repeats = cards.replaceAll(\\'class=\"ogr__card\"\\', \\'class=\"ogr__card\" aria-hidden=\"true\"\\').repeat(3);\\n    return \\'<div class=\"ogr__row\\' + (reverse ? \\' ogr__row--reverse\\' : \\'\\') + \\'\">\\' + cards + repeats + \\'</div>\\';\\n  };\\n  const showError = () => {\\n    live.innerHTML = \\'<div class=\"ogr__status\"><div>Live reviews are temporarily unavailable. Please try again shortly.</div></div>\\';\\n    ratingNode.textContent = \"—\";\\n    countNode.textContent = \"Live reviews unavailable\";\\n  };\\n  const load = async () => {\\n    try {\\n      const response = await fetch(ENDPOINT, { headers: { Accept: \"application/json\" } });\\n      if (!response.ok) throw new Error(\"Review service unavailable\");\\n      const data = await response.json();\\n      const reviews = Array.isArray(data.reviews) ? data.reviews.slice(0, 50).sort((a, b) => new Date(b.createdAt || 0) - new Date(a.createdAt || 0)) : [];\\n      if (!reviews.length) throw new Error(\"No reviews returned\");\\n      ratingNode.textContent = Number(data.averageRating || 0).toFixed(1);\\n      countNode.textContent = \\'Based on \\' + Number(data.totalReviewCount || reviews.length).toLocaleString() + \\' Google reviews\\';\\n      const midpoint = Math.max(1, Math.ceil(reviews.length / 2));\\n      const top = reviews.slice(0, midpoint);\\n      const bottom = reviews.slice(midpoint);\\n      live.innerHTML = \\'<div class=\"ogr__tracks\">\\' + row(top) + row(bottom.length ? bottom : top.slice().reverse(), true) + \\'</div>\\';\\n      attributionNode.textContent = \\'Reviews supplied by Google. Newest available reviews are shown first.\\';\\n    } catch (error) { console.error(\"OptimaWebAI live reviews:\", error); showError(); }\\n  };\\n  load();\\n})();\\n</script>\\n\\n<script>\\n(()=>{\\nconst root=document.querySelector(\\'.ogr\\'),button=root.querySelector(\\'.ogr__motion-toggle\\');\\nlet timer;\\nbutton.addEventListener(\\'click\\',()=>{\\n const paused=root.dataset.motionPaused!==\\'true\\';\\n root.dataset.motionPaused=String(paused);button.setAttribute(\\'aria-pressed\\',String(paused));button.textContent=paused?\\'Resume motion\\':\\'Pause motion\\';\\n});\\nroot.addEventListener(\\'pointerdown\\',e=>{if(e.pointerType===\\'mouse\\'||!e.target.closest(\\'.ogr__tracks\\'))return;clearTimeout(timer);root.dataset.touchPaused=\\'true\\'},{passive:true});\\nfunction release(){clearTimeout(timer);timer=setTimeout(()=>{root.dataset.touchPaused=\\'false\\'},4000)}\\nwindow.addEventListener(\\'pointerup\\',release,{passive:true});\\nwindow.addEventListener(\\'pointercancel\\',release,{passive:true});\\nconst visibility=()=>root.dataset.background=String(document.hidden);\\ndocument.addEventListener(\\'visibilitychange\\',visibility);visibility();\\nwindow.addEventListener(\\'pagehide\\',()=>clearTimeout(timer),{once:true});\\n})();</script>\\n</body></html>\\n',id:\"POIHqnTDS\",layoutId:\"POIHqnTDS\",radius:\"0px\",style:{width:\"100%\"},type:\"html\",url:\"\",width:\"100%\",zoom:1})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-162f2jr-container\",isModuleExternal:true,nodeId:\"WIkcq1NyQ\",scopeId:\"qhnRAmdje\",children:/*#__PURE__*/_jsx(Embed1,{height:\"100%\",html:'<!doctype html><html lang=\"en\"><head><meta charset=\"utf-8\"><meta name=\"viewport\" content=\"width=device-width,initial-scale=1\"><title>Start your project</title></head><body>\\n<style>\\n  html,body { width:100%; margin:0; padding:0; background:#171717; }\\n  * { box-sizing:border-box; }\\n  .octa {\\n    --bg:#171717; --text:#f4f4f1; --muted:#919191; --blue:#3485ff; --line:rgba(255,255,255,.1);\\n    position:relative; display:grid; place-items:center; width:100%; min-height:clamp(430px,56vw,650px);\\n    overflow:hidden; padding:clamp(72px,9vw,118px) clamp(18px,5vw,64px);\\n    color:var(--text); background:var(--bg); text-align:center;\\n    font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;\\n    border-top:1px solid var(--line); border-bottom:1px solid var(--line);\\n  }\\n  .octa::before { content:\"\"; position:absolute; left:50%; bottom:-270px; width:min(720px,90vw); height:430px; background:rgba(52,133,255,.14); border-radius:50%; filter:blur(120px); transform:translateX(-50%); pointer-events:none; }\\n  .octa::after { content:\"\"; position:absolute; inset:20px; border:1px solid rgba(255,255,255,.045); border-radius:22px; pointer-events:none; }\\n  .octa__inner { position:relative; z-index:1; display:flex; flex-direction:column; align-items:center; width:min(900px,100%); }\\n  .octa__eyebrow { display:flex; align-items:center; justify-content:center; gap:10px; margin:0 0 22px; color:#aaa; font-size:10px; font-weight:720; letter-spacing:.17em; text-transform:uppercase; }\\n  .octa__eyebrow::before { content:\"\"; width:7px; height:7px; background:var(--blue); border-radius:50%; box-shadow:0 0 0 5px rgba(52,133,255,.11),0 0 16px rgba(52,133,255,.45); }\\n  .octa__title { margin:0; font-size:clamp(44px,6.8vw,86px); font-weight:560; letter-spacing:-.067em; line-height:.95; text-wrap:balance; }\\n  .octa__title span { color:#747474; }\\n  .octa__copy { max-width:610px; margin:clamp(24px,3vw,34px) auto 0; color:var(--muted); font-size:clamp(14px,1.4vw,17px); line-height:1.7; text-wrap:balance; }\\n  .octa__button { display:inline-flex; align-items:center; justify-content:center; gap:18px; min-width:220px; margin-top:clamp(30px,4vw,44px); padding:8px 9px 8px 24px; color:#171717; background:#f4f4f1; border:1px solid #f4f4f1; border-radius:999px; font-size:10px; font-weight:780; letter-spacing:.1em; text-decoration:none; text-transform:uppercase; transition:transform .35s cubic-bezier(.2,.8,.2,1),box-shadow .35s,background .3s; }\\n  .octa__button i { display:grid; place-items:center; width:40px; height:40px; color:#fff; background:var(--blue); border-radius:50%; font-size:15px; font-style:normal; transition:transform .35s; }\\n  .octa__button:hover { background:#fff; transform:translateY(-4px); box-shadow:0 22px 55px rgba(0,0,0,.3); }\\n  .octa__button:hover i { transform:rotate(45deg); }\\n  .octa__note { display:flex; align-items:center; gap:8px; margin:17px 0 0; color:#656565; font-size:9px; font-weight:650; letter-spacing:.06em; }\\n  .octa__note::before { content:\"\"; width:5px; height:5px; background:#47bd7b; border-radius:50%; box-shadow:0 0 9px rgba(71,189,123,.55); }\\n  .octa-reveal { opacity:0; transform:translateY(22px); transition:opacity .75s ease,transform .75s cubic-bezier(.2,.75,.2,1); }\\n  .octa-reveal.is-visible { opacity:1; transform:none; }\\n  @media(max-width:560px) {\\n    .octa { min-height:500px; padding-inline:22px; }\\n    .octa::after { inset:10px; border-radius:17px; }\\n    .octa__title { font-size:clamp(43px,13.5vw,62px); }\\n    .octa__button { width:100%; max-width:310px; }\\n  }\\n  @media(prefers-reduced-motion:reduce) {\\n    .octa-reveal { opacity:1; transform:none; transition:none; }\\n    .octa__button,.octa__button i { transition:none; }\\n  }\\n  /* Shared Optima light theme; content and interactions stay intact. */\\n  html,body{background:#f4f4f1}\\n  .octa{--bg:#f4f4f1;--text:#111;--muted:#55575a;--blue:#111;--line:rgba(17,18,20,.2);isolation:isolate;background:#f4f4f1;border-color:rgba(17,18,20,.2)}\\n  .octa::before{content:\"\";position:absolute;z-index:0;inset:0;width:auto;height:auto;border-radius:0;filter:none;transform:none;pointer-events:none;background-color:transparent;background-image:linear-gradient(rgba(17,18,20,.055) 1px,transparent 1px),linear-gradient(90deg,rgba(17,18,20,.055) 1px,transparent 1px);background-size:72px 72px}\\n  .octa::after{inset:20px;border:1px solid rgba(17,18,20,.18);border-radius:5px}\\n  .octa__inner{z-index:1}\\n  .octa__eyebrow,.octa__title,.octa__copy,.octa__note{position:relative;background:#f4f4f1;box-shadow:0 0 0 12px #f4f4f1}\\n  .octa__eyebrow{color:#111}.octa__eyebrow::before{background:#111;box-shadow:0 0 0 5px rgba(17,17,17,.09)}\\n  .octa h2{color:#111;font-weight:740;letter-spacing:-.055em}.octa h2 span{color:#5f6063;font-weight:780}\\n  .octa__copy{color:#55575a}.octa__note{color:#55575a}.octa__note::before{background:#111;box-shadow:none}\\n  .octa__button{color:#fff;background:#111;border:1px solid #111;font-weight:800}\\n  .octa__button:hover{color:#fff;background:#292929;box-shadow:0 18px 42px rgba(17,18,20,.14)}\\n  .octa__button i{position:relative;color:#111;background:#fff;font-size:0;transform:none}\\n  .octa__button i::before{content:\"\";grid-area:1/1;width:8px;height:8px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:translate(2px,-2px)}\\n  .octa__button i::after{content:\"\";grid-area:1/1;width:12px;height:1.5px;background:currentColor;transform:rotate(-45deg)}\\n  .octa__button:hover i{transform:none}\\n  @media(max-width:560px){.octa::after{inset:10px;border-radius:5px}.octa__eyebrow,.octa__title,.octa__copy,.octa__note{box-shadow:0 0 0 9px #f4f4f1}}\\n\\n  /* Mobile-only refinement — desktop CTA remains unchanged. */\\n  @media(max-width:560px){\\n    .octa{min-height:390px;padding:48px 14px}\\n    .octa::after{inset:8px}\\n    .octa__inner{max-width:35rem}\\n    .octa__eyebrow{gap:8px;margin-bottom:14px;font-size:8.5px}\\n    .octa__eyebrow::before{width:6px;height:6px}\\n    .octa__title{font-size:clamp(39px,11.8vw,52px);line-height:.96}\\n    .octa__copy{max-width:31rem;margin-top:18px;font-size:12px;line-height:1.55}\\n    .octa__button{min-width:0;min-height:43px;margin-top:22px;padding:6px 7px 6px 16px;font-size:9px}\\n    .octa__button i{width:29px;height:29px}\\n    .octa__button:hover{transform:none}\\n    .octa__note{gap:6px;margin-top:12px;font-size:7.5px;line-height:1.4;text-align:center}\\n    .octa__eyebrow,.octa__title,.octa__copy,.octa__note{box-shadow:0 0 0 7px #f4f4f1}\\n  }\\n\\n  @media(max-width:390px){\\n    .octa{min-height:370px;padding-right:11px;padding-left:11px}\\n    .octa__title{font-size:38px}\\n    .octa__copy{font-size:11.5px}\\n    .octa__note{font-size:7px}\\n  }\\n\\n/* Charcoal finish and restrained dimensional motion. */\\nhtml,body{background:#171717}\\n.octa{--bg:#171717;--text:#f5f5f3;--muted:#b8b8bb;--line:#ffffff18;background:#171717;border-color:var(--line)}\\n.octa::before{background-image:linear-gradient(#ffffff08 1px,transparent 1px),linear-gradient(90deg,#ffffff08 1px,transparent 1px);mask-image:radial-gradient(ellipse at center,transparent 28%,#000 90%);-webkit-mask-image:radial-gradient(ellipse at center,transparent 28%,#000 90%)}\\n.octa::after{border-color:#ffffff18}\\n.octa__eyebrow,.octa__title,.octa__copy,.octa__note{background:transparent;box-shadow:none}\\n.octa__eyebrow{color:#c6c6c8}.octa__eyebrow::before{background:#eee;box-shadow:0 0 0 5px #ffffff0d}\\n.octa h2{color:#f5f5f3}.octa h2 span{color:#a9a9ad}\\n.octa__copy{color:#b8b8bb}\\n.octa__button{position:relative;color:#171717;background:linear-gradient(155deg,#fff,#e6e6e3);border:1px solid #fff9;box-shadow:inset 0 1px 0 #fff,0 3px 0 #999,0 10px 22px #0004;min-height:58px;font-size:11px}\\n.octa__button:hover{color:#111;background:#fff;box-shadow:inset 0 1px 0 #fff,0 3px 0 #aaa,0 16px 32px #0006}\\n.octa__button:active{transform:translateY(1px);box-shadow:0 1px 0 #999,0 5px 12px #0003}\\n.octa__button:focus-visible{outline:2px solid #fff;outline-offset:6px}\\n.octa__button i{position:relative;flex-shrink:0;background:linear-gradient(145deg,#333,#111);color:#fff;box-shadow:inset 0 1px 0 #ffffff30,0 2px 3px #0003;overflow:hidden}\\n.octa__button i::before,.octa__button i::after{display:none}\\n.octa__arrow{position:relative;display:block;width:18px;height:16px;transition:transform .4s cubic-bezier(.2,.8,.2,1)}\\n.octa__arrow::before{content:\"\";position:absolute;left:0;top:7px;width:17px;height:2px;background:currentColor;border-radius:2px}\\n.octa__arrow::after{content:\"\";position:absolute;right:1px;top:3px;width:10px;height:10px;border-top:2px solid currentColor;border-right:2px solid currentColor;transform:rotate(45deg);border-radius:1px}\\n.octa__button:hover .octa__arrow,.octa__button:focus-visible .octa__arrow{animation:octa-arrow-pass .65s cubic-bezier(.2,.7,.2,1) both}\\n@keyframes octa-arrow-pass{0%{transform:translateX(0);opacity:1}45%{transform:translateX(26px);opacity:0}46%{transform:translateX(-26px);opacity:0}100%{transform:translateX(0);opacity:1}}\\n.octa__note{position:relative;isolation:isolate;max-width:100%;gap:12px;margin-top:28px;padding:13px 19px;color:#c9c9cc;font-size:12px;font-weight:400;letter-spacing:.01em;line-height:1.6;border:1px solid #ffffff22;border-radius:12px;background:linear-gradient(130deg,#ffffff0b,#ffffff03);box-shadow:inset 0 1px 0 #ffffff0c,0 7px 20px #0002}\\n.octa__note::before{flex:0 0 6px;width:6px;height:6px;background:#fff;box-shadow:0 0 0 4px #ffffff0b;animation:octa-live 3.4s ease-out infinite}\\n.octa__note strong{display:inline-block;color:#fff;font-weight:700;letter-spacing:-.02em;border-bottom:1px solid #ffffff70}\\n.octa__note-break{display:none}\\n@keyframes octa-live{0%,100%{box-shadow:0 0 0 3px #ffffff14}65%{box-shadow:0 0 0 10px #ffffff00}}\\n.octa-reveal,.octa-reveal.is-visible{opacity:1;transform:none}\\n@media(max-width:560px){\\n.octa{padding:54px 22px}.octa__copy{font-size:14px;line-height:1.65}\\n.octa__button{min-height:52px;font-size:10px}.octa__button i{width:36px;height:36px}\\n.octa__note{font-size:11px;padding:12px 15px;margin-top:23px}.octa__note-break{display:block}\\n}\\n@media(prefers-reduced-motion:reduce){\\n.octa *,.octa *::before,.octa *::after{animation:none!important;transition:none!important}\\n.octa__button:hover,.octa__button:active{transform:none}\\n}\\n\\n/* Final white theme. */\\nhtml,body{background:#fff}\\n.octa{--bg:#fff;--text:#111;--muted:#5f6268;--line:rgba(17,17,17,.16);background:#fff;color:#111;border-color:var(--line)}\\n.octa::before{inset:0;width:auto;height:auto;border-radius:0;filter:none;transform:none;background-color:transparent;background-image:linear-gradient(rgba(17,17,17,.045) 1px,transparent 1px),linear-gradient(90deg,rgba(17,17,17,.045) 1px,transparent 1px);background-size:72px 72px;mask-image:none;-webkit-mask-image:none}\\n.octa::after{border-color:rgba(17,17,17,.16)}\\n.octa__eyebrow,.octa__title,.octa__copy,.octa__note{background:#fff;box-shadow:0 0 0 12px #fff}\\n.octa__eyebrow{color:#555b64}.octa__eyebrow::before{background:#111;box-shadow:0 0 0 5px rgba(17,17,17,.08)}\\n.octa h2{color:#111}.octa h2 span{color:#666a70}\\n.octa__copy{color:#5f6268}\\n.octa__button{color:#fff;background:#111;border-color:#111;box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 3px 0 #000,0 12px 24px rgba(17,17,17,.16)}\\n.octa__button:hover{color:#fff;background:#292929;box-shadow:inset 0 1px 0 rgba(255,255,255,.18),0 3px 0 #000,0 16px 32px rgba(17,17,17,.2)}\\n.octa__button:focus-visible{outline-color:#111}\\n.octa__button i{color:#111;background:#fff;box-shadow:inset 0 1px 0 #fff,0 2px 3px rgba(0,0,0,.2)}\\n.octa__note{color:#555b64;border-color:rgba(17,17,17,.16);background:#fff}\\n.octa__note::before{background:#111;box-shadow:none;animation:none}\\n.octa__note strong{color:#111;border-bottom-color:rgba(17,17,17,.55)}\\n@media(max-width:560px){.octa__eyebrow,.octa__title,.octa__copy,.octa__note{box-shadow:0 0 0 7px #fff}}\\n</style>\\n\\n<section class=\"octa\" aria-labelledby=\"octa-title\" data-conversion-cta>\\n  <div class=\"octa__inner octa-reveal\">\\n    <p class=\"octa__eyebrow\">Ready when you are</p>\\n    <h2 class=\"octa__title\" id=\"octa-title\">Your next customer<br><span>is already comparing you.</span></h2>\\n    <p class=\"octa__copy\">Book a short conversation and we’ll show you exactly what your website needs to build trust, stand out from competitors, and turn more visitors into genuine enquiries.</p>\\n    <a class=\"octa__button\" href=\"https://www.optimawebai.com/contact\" target=\"_top\" aria-label=\"Start your project with OptimaWebAI\"><span>Start your project</span><i aria-hidden=\"true\"><span class=\"octa__arrow\"></span></i></a>\\n    <p class=\"octa__note\"><span>Your website could be live<br class=\"octa__note-break\"> in as little as <strong>7 days.</strong></span></p>\\n  </div>\\n</section>\\n\\n<script>\\n(()=>{\\ndocument.querySelectorAll(\\'[data-conversion-cta]\\').forEach(root=>{\\n if(root.dataset.ready)return;root.dataset.ready=\\'true\\';\\n const item=root.querySelector(\\'.octa__inner\\'),motion=matchMedia(\\'(prefers-reduced-motion: reduce)\\');let animation;\\n const observer=\\'IntersectionObserver\\' in window?new IntersectionObserver(entries=>entries.forEach(e=>{\\n  if(!e.isIntersecting)return;observer.disconnect();\\n  if(!motion.matches&&item.animate)animation=item.animate([{opacity:.65,translate:\\'0 18px\\'},{opacity:1,translate:\\'0 0\\'}],{duration:800,easing:\\'cubic-bezier(.2,.75,.2,1)\\'});\\n }),{threshold:.15}):null;\\n observer?.observe(item);\\n function stop(){if(motion.matches)animation?.cancel()}\\n motion.addEventListener(\\'change\\',stop);\\n window.addEventListener(\\'pagehide\\',()=>{observer?.disconnect();animation?.cancel();motion.removeEventListener(\\'change\\',stop)},{once:true});\\n});\\n})();\\n</script>\\n\\n</body></html>\\n',id:\"WIkcq1NyQ\",layoutId:\"WIkcq1NyQ\",radius:\"0px\",style:{width:\"100%\"},type:\"html\",url:\"\",width:\"100%\",zoom:1})})}),/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{JKJSCCaio:{y:0},X7aN0nU2I:{y:0}},children:/*#__PURE__*/_jsx(ComponentViewportProvider,{height:58,width:\"100vw\",y:-1,children:/*#__PURE__*/_jsx(Container,{className:\"framer-1yx8o3w-container\",layoutScroll:true,nodeId:\"h4J5Sta4u\",rendersWithMotion:true,scopeId:\"qhnRAmdje\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{JKJSCCaio:{__framer__animateOnce:false,__framer__targets:[{ref:jejTi6G_JhkPf358Pb,target:\"rCjE3Y0zz\"}],__framer__threshold:0,__framer__variantAppearEffectEnabled:true,variant:matchVariant(\"fu0ER5VHQ\")},X7aN0nU2I:{__framer__animateOnce:false,__framer__targets:[{ref:jejTi6G_JhkPf358Pb,target:\"rCjE3Y0zz\"}],__framer__threshold:0,__framer__variantAppearEffectEnabled:true,variant:matchVariant(\"fu0ER5VHQ\")}},children:/*#__PURE__*/_jsx(DynamicNotchNavigationWithVariantAppearEffect,{height:\"100%\",id:\"h4J5Sta4u\",layoutId:\"h4J5Sta4u\",style:{width:\"100%\"},variant:matchVariant(\"HSfXNOnjY\"),width:\"100%\"})})})})}),/*#__PURE__*/_jsx(ComponentViewportProvider,{height:471,width:\"100vw\",y:1800,children:/*#__PURE__*/_jsx(Container,{className:\"framer-mykkz1-container\",nodeId:\"pLHToeQzg\",scopeId:\"qhnRAmdje\",children:/*#__PURE__*/_jsx(PropertyOverrides,{breakpoint:baseVariant,overrides:{JKJSCCaio:{variant:matchVariant(\"Qk6E2mkA1\")},X7aN0nU2I:{variant:matchVariant(\"EAE4hFzUn\")}},children:/*#__PURE__*/_jsx(Footer,{height:\"100%\",id:\"pLHToeQzg\",layoutId:\"pLHToeQzg\",style:{width:\"100%\"},variant:matchVariant(\"qxcUNJcIB\"),width:\"100%\"})})})})]}),/*#__PURE__*/_jsx(\"div\",{id:\"template-overlay\"})]})});});const css=target=>{const isStaticRenderer=target===RenderTarget.canvas||target===RenderTarget.export;if(!isStaticRenderer){return[...rules,...breakpointKeys.map(key=>{const query=mediaQueries[key];return`@media ${query} { ${breakpointRules[key].join(\" \")} }`;})];}return[...rules,...breakpointKeys.flatMap(key=>{const selector=selectors[key];return breakpointRules[key].map(rule=>`${selector} {${rule}}`);})];};/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 1723\n * @framerIntrinsicWidth 1200\n * @framerCanvasComponentVariantDetails {\"propertyName\":\"variant\",\"data\":{\"default\":{\"layout\":[\"fixed\",\"fixed\"]},\"X7aN0nU2I\":{\"layout\":[\"fixed\",\"fixed\"]},\"JKJSCCaio\":{\"layout\":[\"fixed\",\"fixed\"]}}}\n * @framerImmutableVariables true\n * @framerDisplayContentsDiv false\n * @framerAutoSizeImages true\n * @framerComponentViewportWidth true\n * @framerColorSyntax true\n * @framerHitTargets {\"Dst6lrXHO\":[\".framer-1cofu7r-container\",\".framer-162f2jr-container\",\".framer-1yx8o3w-container\",\".framer-mykkz1-container\"],\"X7aN0nU2I\":[\".framer-1cofu7r-container\",\".framer-162f2jr-container\",\".framer-1yx8o3w-container\",\".framer-mykkz1-container\"],\"JKJSCCaio\":[\".framer-1cofu7r-container\",\".framer-162f2jr-container\",\".framer-1yx8o3w-container\",\".framer-mykkz1-container\"]}\n * @framerBreakpoints {\"Dst6lrXHO\":{\"min\":1200,\"canvasClassName\":\"framer-1upato1-override\",\"minHeight\":1723,\"name\":\"Desktop\",\"width\":1200,\"rootFontSize\":16},\"X7aN0nU2I\":{\"min\":810,\"max\":1199,\"canvasClassName\":\"framer-rd941r-override\",\"minHeight\":1723,\"viewportHeight\":1080,\"name\":\"Tablet\",\"width\":810,\"rootFontSize\":16},\"JKJSCCaio\":{\"max\":809,\"canvasClassName\":\"framer-12s58mq-override\",\"minHeight\":1723,\"viewportHeight\":844,\"name\":\"Phone\",\"width\":390,\"rootFontSize\":16}}\n * @framerDefaultVariant Dst6lrXHO\n * @framerLayoutTemplate true\n */const FramerqhnRAmdje=withCSS(Component,css,\"framer-D6OqI\");export default FramerqhnRAmdje;FramerqhnRAmdje.displayName=\"Main\";FramerqhnRAmdje.defaultProps={height:1723,width:1200};addFonts(FramerqhnRAmdje,[{explicitInter:true,fonts:[]},...EmbedFonts,...Embed1Fonts,...DynamicNotchNavigationFonts,...FooterFonts],{supportsExplicitInterCodegen:true});FramerqhnRAmdje.loader={load:(props,context)=>{return runTasksWithYield([()=>forwardLoader(DynamicNotchNavigation,{},context),()=>forwardLoader(Footer,{},context)],context);}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerqhnRAmdje\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"1723\",\"framerImmutableVariables\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"X7aN0nU2I\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"JKJSCCaio\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerDefaultVariant\":\"Dst6lrXHO\",\"framerLayoutTemplate\":\"true\",\"framerIntrinsicWidth\":\"1200\",\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerBreakpoints\":\"{\\\"Dst6lrXHO\\\":{\\\"min\\\":1200,\\\"canvasClassName\\\":\\\"framer-1upato1-override\\\",\\\"minHeight\\\":1723,\\\"name\\\":\\\"Desktop\\\",\\\"width\\\":1200,\\\"rootFontSize\\\":16},\\\"X7aN0nU2I\\\":{\\\"min\\\":810,\\\"max\\\":1199,\\\"canvasClassName\\\":\\\"framer-rd941r-override\\\",\\\"minHeight\\\":1723,\\\"viewportHeight\\\":1080,\\\"name\\\":\\\"Tablet\\\",\\\"width\\\":810,\\\"rootFontSize\\\":16},\\\"JKJSCCaio\\\":{\\\"max\\\":809,\\\"canvasClassName\\\":\\\"framer-12s58mq-override\\\",\\\"minHeight\\\":1723,\\\"viewportHeight\\\":844,\\\"name\\\":\\\"Phone\\\",\\\"width\\\":390,\\\"rootFontSize\\\":16}}\",\"framerDisplayContentsDiv\":\"false\",\"framerHitTargets\":\"{\\\"Dst6lrXHO\\\":[\\\".framer-1cofu7r-container\\\",\\\".framer-162f2jr-container\\\",\\\".framer-1yx8o3w-container\\\",\\\".framer-mykkz1-container\\\"],\\\"X7aN0nU2I\\\":[\\\".framer-1cofu7r-container\\\",\\\".framer-162f2jr-container\\\",\\\".framer-1yx8o3w-container\\\",\\\".framer-mykkz1-container\\\"],\\\"JKJSCCaio\\\":[\\\".framer-1cofu7r-container\\\",\\\".framer-162f2jr-container\\\",\\\".framer-1yx8o3w-container\\\",\\\".framer-mykkz1-container\\\"]}\",\"framerColorSyntax\":\"true\"}},\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","\r\n\t\timport * as Framer from \"framer\";\r\nimport * as React from \"react\";\r\nimport { createPortal } from \"react-dom\";\r\nimport * as ReactDOM from \"react-dom/client\";\r\nimport Main from \"https://framerusercontent.com/modules/6Z29e0zv6aU2AwJdzeUi/GkDju3BaxbD8n0Ekg3l0/qhnRAmdje.js\";\r\n\r\n\t\tconst routes = {augiA20Il: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/oiXsQFToSk7uUtt4yKc4/iPhDR2sEQgT6ujIn35cY/augiA20Il.js\")), path: \"/\"}, GjQI_B82s: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/Rtz1e9RKrDiSnY0ziow5/bsP1awq5uxNrPg4EhYJ9/GjQI_B82s.js\")), path: \"/contact\"}, eUrueYB8r: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/8vKeZU6grMFCLhv1wXIZ/sjfCKuihI5VFWLYxwBcA/eUrueYB8r.js\")), path: \"/about\"}, Ut3jRQf0w: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/ezEQ8E0GMslb9PuYc0Kh/zKt98jDadcWXRTAg1OL8/Ut3jRQf0w.js\")), path: \"/projects\"}, t7hebT43B: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/j3Iwz1cX7Bg2EkPdMXfY/0cgOIeZj6kRHdqChAapz/t7hebT43B.js\")), path: \"/404\"}, wfuEsIQdN: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/cWS0dOj0AwRM0RA2XdRq/uUAIt96dMEEW80FGEnp7/wfuEsIQdN.js\"))}, AhVuLVFn3: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/bh4kIeGIHEwaC4NY2r4A/owtuM7MLRAuPBQEhYoXB/AhVuLVFn3.js\")), path: \"/experience-lab\"}, sxtmEF53n: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/8n3wRUIYo9QvgIOcGLXb/KaSq0to5aMKm8CCNSRA8/sxtmEF53n.js\")), path: \"/web-design\"}, Z21kgnOoJ: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/1jM8jEs9cBIAvrwxwGAz/gDMdNyZY0be68Kx6xQNd/Z21kgnOoJ.js\")), path: \"/ecommerce-web-design\"}, YbQWkhTd0: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/ofZpZQ1ldgh3Al4p7Phm/TvVHO7NyPNDaFFfbj5Ma/YbQWkhTd0.js\")), path: \"/shopify-web-design\"}, KOZu0eT83: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/isLcuUP3vdOrPxcMTgIW/hzYvd5QVrbMVbx0GWOUf/KOZu0eT83.js\")), path: \"/custom-web-development\"}, FHrrxenhk: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/hQbyoTWejHZTEjBVgKWf/DK5glf9Pwo6TVdnDDFLs/FHrrxenhk.js\")), path: \"/website-redesign\"}, BGE16AQ6b: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/76AufwcXbZXFk8Ff58T8/87hJrLsU8UTuwOd6a4m2/BGE16AQ6b.js\")), path: \"/interactive-web-design\"}, ttv6phx9j: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/OphpU8hMwPcLbhELDaov/ZzwmBtTmQg0GNAbh8KUA/ttv6phx9j.js\")), path: \"/landing-page-design\"}, ZFeBeVv_Y: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/VWHRz8jGxn8cONNUETq9/VEhgfj4NbZRemPXZEY6G/ZFeBeVv_Y.js\")), path: \"/pricing\"}, C_zIb4FOn: {collectionId: \"jNTn1_54d\", elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/6GSPmoPiQBqveIQtKWqD/k2lBUFgRobBRzYexOqwm/C_zIb4FOn.js\")), path: \"/projects/:cgdrFtBQf\"}, sHEHHPUZ6: {collectionId: \"zZao9MpMu\", elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/AjjTOZix3c1GNVUZfpRz/7HhHKa3iWJqsRNPi1isf/sHEHHPUZ6.js\")), path: \"/legal-pages/:yFci79a0S\"}}\r\n\r\n\t\tconst locales = [{code: \"en\", id: \"default\", name: \"English\", slug: \"\", textDirection: \"ltr\"}]\r\n\t\tconst collectionUtils = {jNTn1_54d: async () => (await import(\"https://framerusercontent.com/modules/9pScq5PhVhsBaUoCQJsU/OATni7FiKLXsbDlwr3qv/jNTn1_54d.js\"))?.[\"utils\"], zZao9MpMu: async () => (await import(\"https://framerusercontent.com/modules/bsbdi6Aj9TZp5ko8Jbjx/NYfpE5LolbtKE7LNabof/zZao9MpMu.js\"))?.[\"utils\"]}\r\n\t\tconst serverDatabaseClient = undefined\r\n\t\tconst framerSiteId = \"270f02dfb27fb8f6380556a2a85510f959a1a52128958ccaf41e5a5495884151\"\r\n\t\tfunction Template({webPageId, children, style, ...rest}) {const templateProps = {}\r\nconst props = templateProps[webPageId] ?? {}\r\nswitch (webPageId) {case \"augiA20Il\":\r\ncase \"GjQI_B82s\":\r\ncase \"eUrueYB8r\":\r\ncase \"Ut3jRQf0w\":\r\ncase \"t7hebT43B\":\r\ncase \"wfuEsIQdN\":\r\ncase \"AhVuLVFn3\":\r\ncase \"sxtmEF53n\":\r\ncase \"Z21kgnOoJ\":\r\ncase \"YbQWkhTd0\":\r\ncase \"KOZu0eT83\":\r\ncase \"FHrrxenhk\":\r\ncase \"BGE16AQ6b\":\r\ncase \"ttv6phx9j\":\r\ncase \"ZFeBeVv_Y\":\r\ncase \"C_zIb4FOn\":\r\ncase \"sHEHHPUZ6\":\r\nreturn React.createElement(Main, {...props, key: \"Main\", style}, children(true));\r\ndefault: { return children(false) }}}\r\nexport function getLayoutTemplateBreakpoints(routeId) {switch (routeId) {case \"augiA20Il\":\r\ncase \"GjQI_B82s\":\r\ncase \"eUrueYB8r\":\r\ncase \"Ut3jRQf0w\":\r\ncase \"t7hebT43B\":\r\ncase \"wfuEsIQdN\":\r\ncase \"AhVuLVFn3\":\r\ncase \"sxtmEF53n\":\r\ncase \"Z21kgnOoJ\":\r\ncase \"YbQWkhTd0\":\r\ncase \"KOZu0eT83\":\r\ncase \"FHrrxenhk\":\r\ncase \"BGE16AQ6b\":\r\ncase \"ttv6phx9j\":\r\ncase \"ZFeBeVv_Y\":\r\ncase \"C_zIb4FOn\":\r\ncase \"sHEHHPUZ6\":\r\nreturn [{hash: \"1upato1\", mediaQuery: \"(min-width: 1200px)\"}, {hash: \"rd941r\", mediaQuery: \"(min-width: 810px) and (max-width: 1199.98px)\"}, {hash: \"12s58mq\", mediaQuery: \"(max-width: 809.98px)\"}]\r\ndefault: { return undefined }}}\r\n\r\n\t\tconst isBrowser = typeof document !== \"undefined\"\r\n\t\tconst isBot = isBrowser && /bot|-google|google-|yandex|ia_archiver|crawl|spider/iu.test(navigator.userAgent)\r\n\r\n\t\t\r\n\t\t\r\n\r\n\t\texport async function getPageRoot({\r\n\t\t\trouteId,\r\n\t\t\tpathVariables,\r\n\t\t\tcanonicalPathVariables,\r\n\t\t\tlocaleId,\r\n\t\t\tcollectionItemId,\r\n\t\t\tcontentLocaleId,\r\n\t\t\tshouldResolveInitialRouteContentState = false,\r\n\t\t}) {\r\n\t\t\tconst rootPreload = routes[routeId].page.preload()\r\n\r\n\t\t\t\r\n\r\n\t\t\tFramer.setLibraryFeatures({checkServerSideRouter: true, disableCustomCode: false, disableHoverOnMobile: false, editorBarDisableFrameAncestorsSecurity: false, motionDivToDiv: false, onPageLocalizationSupport: true, onPageMoveTool: true, onPageRichTextBlockSelection: true, scrollRestoration: true, synchronousNavigationOnDesktop: false, yieldOnTap: false})\r\n\t\t\tFramer.setCurrentSiteId(framerSiteId)\r\n\r\n\t\t\tconst content = React.createElement(\r\n\t\t\t\tFramer.PageRoot,\r\n\t\t\t\t{\r\n\t\t\t\t\tisWebsite: true,\r\n\t\t\t\t\tenvironment: \"site\",\r\n\t\t\t\t\trouteId,\r\n\t\t\t\t\tpathVariables,\r\n\t\t\t\t\tcanonicalPathVariables,\r\n\t\t\t\t\troutes,\r\n\t\t\t\t\tcollectionUtils,\r\n\t\t\t\t\tserverDatabaseClient,\r\n\t\t\t\t\tframerSiteId,\r\n\t\t\t\t\tnotFoundPage: Framer.lazy(() => import(\"https://framerusercontent.com/modules/j3Iwz1cX7Bg2EkPdMXfY/0cgOIeZj6kRHdqChAapz/t7hebT43B.js\")),\r\n\t\t\t\t\tisReducedMotion: true,\r\n\t\t\t\t\tlocaleId,\r\n\t\t\t\t\tlocales,\r\n\t\t\t\t\tpreserveQueryParams: undefined,\r\n\t\t\t\t\tsiteCanonicalURL: \"https://www.optimawebai.com\",\r\n\t\t\t\t\tEditorBar: \r\n\t\t\ttypeof window !== \"undefined\" ? (() => {\r\n\t\t\t\tif (isBot) {\r\n\t\t\t\t\tconsole.log(\"[Framer On-Page Editing] Unavailable because navigator is bot\")\r\n\t\t\t\t\treturn\r\n\t\t\t\t}\r\n\r\n\t\t\t\treturn Framer.lazy(async () => {\r\n\t\t\t\t\tconst dependencies = {\r\n\t\t\t\t\t\t__version: 3,\r\n\t\t\t\t\t\tframer: {\r\n\t\t\t\t\t\t\tuseCurrentRoute: Framer.useCurrentRoute,\r\n\t\t\t\t\t\t\tuseLocaleInfo: Framer.useLocaleInfo,\r\n\t\t\t\t\t\t\tuseRouter: Framer.useRouter,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\treact: {\r\n\t\t\t\t\t\t\tcreateElement: React.createElement,\r\n\t\t\t\t\t\t\tFragment: React.Fragment,\r\n\t\t\t\t\t\t\tmemo: React.memo,\r\n\t\t\t\t\t\t\tuseCallback: React.useCallback,\r\n\t\t\t\t\t\t\tuseEffect: React.useEffect,\r\n\t\t\t\t\t\t\tuseRef: React.useRef,\r\n\t\t\t\t\t\t\tuseState: React.useState,\r\n\t\t\t\t\t\t\tuseLayoutEffect: React.useLayoutEffect,\r\n\t\t\t\t\t\t},\r\n\t\t\t\t\t\t\"react-dom\": { createPortal },\r\n\t\t\t\t\t}\r\n\r\n\t\t\t\t\twindow.__framer_editorBarDependencies = dependencies\r\n\r\n\t\t\t\t\tconst { createEditorBar } = await import(\"https://framer.com/edit/init.mjs\")\r\n\t\t\t\t\treturn {\r\n\t\t\t\t\t\tdefault: createEditorBar(),\r\n\t\t\t\t\t}\r\n\t\t\t\t})\r\n\t\t\t})() : undefined\r\n\t\t,\r\n\t\t\t\t\tadaptLayoutToTextDirection: false,\r\n\t\t\t\t\tLayoutTemplate: Template,\r\n\t\t\t\t\tloadSnippetsModule: new Framer.LazyValue(() => import(\"https://framerusercontent.com/modules/pxw5aoaELly8CSBvrFU1/xg89TQYieAfhBaBvLbHh/snippets.js\")),\r\n\t\t\t\t\tinitialCollectionItemId: collectionItemId,\r\n\t\t\t\t\tinitialContentLocaleIdOverride: contentLocaleId,\r\n\t\t\t\t}\r\n\t\t\t)\r\n\r\n\t\t\tconst contentWithGracefullyDegradingErrorBoundary = React.createElement(Framer.GracefullyDegradingErrorBoundary, {\r\n\t\t\t\tchildren: content\r\n\t\t\t})\r\n\r\n\t\t\t\r\n\t\t\tconst page = React.createElement(Framer.PageEffectsProvider, {\r\n\t\t\t\tchildren: contentWithGracefullyDegradingErrorBoundary,\r\n\t\t\t\tvalue: {routes: {}}\r\n\t\t\t})\r\n\r\n\t\t\t// We don't want the initial render to immediately have to suspend.\r\n\t\t\tawait rootPreload\r\n\t\t\treturn page\r\n\t\t}\r\n\t\r\n\r\n\t\tif (isBrowser) {\r\n\t\t\t// Note: HTTPArchive also uses this function to detect Framer sites; see https://github.com/HTTPArchive/wappalyzer/blob/371a17583f74fd9171b9077f59a5619b24062891/src/technologies/f.json#L1722-L1748.\r\n\t\t\twindow.__framer_importFromPackage = (packageAndFilename, exportIdentifier) => () => {\r\n\t\t\t\treturn React.createElement(Framer.ErrorPlaceholder, { error: 'Package component not supported: \"' + exportIdentifier + '\" in \"' + packageAndFilename + '\"' })\r\n\t\t\t}\r\n\r\n\t\t\twindow.__framer_events = window.__framer_events || []\r\n\r\n\t\t\t// Initialize lazy modules cache for hydration\r\n\t\t\tFramer.initLazyModulesCache()\r\n\r\n\t\t\tconst container = document.getElementById(\"main\")\r\n\t\t\t// We know that #main is parsed before this script, so we don't need to wait for DOMContentLoaded or similar events.\r\n\t\t\tif (\"framerHydrateV2\" in container.dataset) main(true, container)\r\n\t\t\telse main(false, container)\r\n\t\t}\r\n\r\n\t\tfunction track() {\r\n\t\t\tif (!isBrowser) return\r\n\t\t\twindow.__framer_events.push(arguments)\r\n\t\t}\r\n\r\n\t\tasync function main(shouldHydrate, container) {\r\n\t\t\tfunction handleError(error, errorInfo, recoverable = true) {\r\n\t\t\t\tif (error.caught || window.__framer_hadFatalError) return // we already logged it\r\n\r\n\t\t\t\tconst componentStack = errorInfo?.componentStack\r\n\t\t\t\tif (recoverable) {\r\n\t\t\t\t\tconsole.warn(\"Caught a recoverable error. The site is still functional, but might have some UI flickering or degraded page load performance. If you are the author of this website, update external components and check recently added custom code or code overrides to fix the following server/client mismatches:\\n\", error, componentStack)\r\n\t\t\t\t\t// we only want to collect 1%, because this can be quite noisy (floods the data pipeline)\r\n\t\t\t\t\tif (Math.random() > 0.01) return\r\n\t\t\t\t} else {\r\n\t\t\t\t\tconsole.error(\"Caught a fatal error. Please report the following to the Framer team via https://www.framer.com/contact/:\\n\", error, componentStack)\r\n\t\t\t\t}\r\n\t\t\t\ttrack(recoverable ? \"published_site_load_recoverable_error\" : \"published_site_load_error\", {\r\n\t\t\t\t\tmessage: String(error),\r\n\t\t\t\t\tcomponentStack, // componentStack is more useful\r\n\t\t\t\t\tstack: componentStack ? undefined : error instanceof Error && typeof error.stack === \"string\" ? error.stack : null,\r\n\t\t\t\t})\r\n\t\t\t}\r\n\r\n\t\t\ttry {\r\n\t\t\t\tlet routeId, localeId, contentLocaleId, pathVariables, canonicalPathVariables, breakpoints, routeData\r\n\t\t\t\tif (shouldHydrate) {\r\n\t\t\t\t\trouteData = JSON.parse(container.dataset[\"framerHydrateV2\"])\r\n\t\t\t\t\trouteId = routeData.routeId\r\n\t\t\t\t\tlocaleId = routeData.localeId\r\n\t\t\t\t\tcontentLocaleId = routeData.contentLocaleId\r\n\t\t\t\t\tpathVariables = routeData.pathVariables\r\n\t\t\t\t\tcanonicalPathVariables = routeData.canonicalPathVariables\r\n\t\t\t\t\tbreakpoints = routeData.breakpoints\r\n\r\n\t\t\t\t\trouteId = Framer.patchRoutesForABTesting(routes, routeId) // Prioritize optimized route id to avoid flickering in browsers not supporting the server-timing header (Safari older than 16.4)\r\n\t\t\t\t} else {\r\n\t\t\t\t\tFramer.patchRoutesForABTesting(routes, undefined) // This must happen before inferInitialRouteFromPath\r\n\r\n\t\t\t\t\t\r\n\t\t\t\t\tconst serverRoute = performance.getEntriesByType(\"navigation\")[0]?.serverTiming?.find(e => e.name === \"route\")?.description\r\n\t\t\t\t\tif (serverRoute) {\r\n\t\t\t\t\t\tconst routeData = new URLSearchParams(serverRoute)\r\n\t\t\t\t\t\trouteId = routeData.get(\"id\")\r\n\t\t\t\t\t\tlocaleId = routeData.get(\"locale\")\r\n\t\t\t\t\t\tfor (const [key, value] of routeData.entries()) {\r\n\t\t\t\t\t\t\tif (!key.startsWith(\"var.\")) continue\r\n\t\t\t\t\t\t\tpathVariables ??= {}\r\n\t\t\t\t\t\t\tpathVariables[key.slice(4)] = value\r\n\t\t\t\t\t\t}\r\n\t\t\t\t\t}\r\n\t\t\t\t\tif (!routeId || !localeId) {\r\n\t\t\t\t\t\tconst routeData = Framer.inferInitialRouteFromPath(routes, decodeURIComponent(location.pathname), true, locales)\r\n\t\t\t\t\t\trouteId = routeData.routeId\r\n\t\t\t\t\t\tlocaleId = routeData.localeId\r\n\t\t\t\t\t\tpathVariables = routeData.pathVariables\r\n\t\t\t\t\t}\r\n\t\t\t\t\t\r\n\t\t\t\t}\r\n\r\n\t\t\t\tconst pagePromise = getPageRoot({\r\n\t\t\t\t\trouteId,\r\n\t\t\t\t\tlocaleId,\r\n\t\t\t\t\tcontentLocaleId,\r\n\t\t\t\t\tpathVariables,\r\n\t\t\t\t\tcanonicalPathVariables,\r\n\t\t\t\t\tcollectionItemId: shouldHydrate ? routeData?.collectionItemId : undefined,\r\n\t\t\t\t\tshouldResolveInitialRouteContentState: !shouldHydrate,\r\n\t\t\t\t})\r\n\r\n\t\t\t\t\r\nif (typeof window !== \"undefined\") {\r\n\tvoid (async () => {\r\n\t\tconst route = routes[routeId]\r\n\r\n\t\tconst defaultLocaleId = \"default\"\r\n\t\tconst framerLocale = locales.find(({ id }) => !localeId ? id === defaultLocaleId : id === localeId).code\r\n\r\n\t\t\r\n\t\tlet collectionItemId = routeData?.collectionItemId ?? null\r\n\t\tif (collectionItemId === null && route?.collectionId && collectionUtils) {\r\n\t\t\tconst utils = await collectionUtils[route.collectionId]?.()\r\n\t\t\tconst [slug] = Object.values(pathVariables)\r\n\t\t\tif (utils && typeof slug === \"string\") {\r\n\t\t\t\tcollectionItemId = (await utils.getRecordIdBySlug(slug, framerLocale || undefined)) ?? null\r\n\t\t\t}\r\n\t\t}\r\n\t\r\n\r\n\t\tconst resolvedDateTimeOptions = Intl.DateTimeFormat().resolvedOptions()\r\n\t\tconst timezone = resolvedDateTimeOptions.timeZone\r\n\t\tconst locale = resolvedDateTimeOptions.locale\r\n\r\n\t\t// wait for the page to be activated before sending the pageview event\r\n\t\t// https://developer.chrome.com/docs/web-platform/prerender-pages#impact-on-analytics\r\n\t\tawait new Promise((resolve) => {\r\n\t\t\tif (document.prerendering) {\r\n\t\t\t\tdocument.addEventListener(\"prerenderingchange\", resolve, { once: true })\r\n\t\t\t} else {\r\n\t\t\t\tresolve()\r\n\t\t\t}\r\n\t\t})\r\n\r\n\t\twindow.__framer_events.push([\r\n\t\t\t\"published_site_pageview\",\r\n\t\t\t{\r\n\t\t\t\tframerSiteId,\r\n\t\t\t\tversion: 2,\r\n\t\t\t\troutePath: route?.path || \"/\",\r\n\t\t\t\tcollectionItemId,\r\n\t\t\t\tframerLocale: framerLocale || null,\r\n\t\t\t\twebPageId: route?.abTestingVariantId ?? routeId,\r\n\t\t\t\tabTestId: route?.abTestId,\r\n\t\t\t\treferrer: document.referrer || null,\r\n\t\t\t\turl: window.location.href,\r\n\t\t\t\thostname: window.location.hostname || null,\r\n\t\t\t\tpathname: window.location.pathname || null,\r\n\t\t\t\thash: window.location.hash || null,\r\n\t\t\t\tsearch: window.location.search || null,\r\n\t\t\t\ttimezone,\r\n\t\t\t\tlocale,\r\n\t\t\t},\r\n\t\t\t\"eager\"\r\n\t\t])\r\n\r\n\t\t// Yield to avoid blocking the main thread with the user code\r\n\t\tawait Framer.yieldToMain({ priority: \"background\", ensureContinueBeforeUnload: true, continueAfter: \"paint\" })\r\n\r\n\t\tdocument.dispatchEvent(new CustomEvent(\"framer:pageview\", {\r\n\t\t\tdetail: { framerLocale: framerLocale || null }\r\n\t\t}))\r\n\t})()\r\n}\r\n\r\n\r\n\t\t\t\tconst page = await pagePromise\r\n\t\t\t\tif (shouldHydrate) {\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\tFramer.withPerformanceMarks(\"framer-rewrite-breakpoints\", () => {\r\n\t\t\t\t\t\tFramer.removeHiddenBreakpointLayersV2(breakpoints)\r\n\t\t\t\t\t\twindow.__framer_onRewriteBreakpoints?.(breakpoints)\r\n\t\t\t\t\t})\r\n\r\n\t\t\t\t\t\r\n\r\n\t\t\t\t\tconst startTransition = isBot ? cb => cb() : React.startTransition\r\n\t\t\t\t\tstartTransition(() => {\r\n\t\t\t\t\t\tFramer.markHydrationStart()\r\n\t\t\t\t\t\tFramer.turnOffReactEventHandling()\r\n\t\t\t\t\t\tReactDOM.hydrateRoot(container, page, { onRecoverableError: handleError })\r\n\t\t\t\t\t})\r\n\t\t\t\t} else {\r\n\t\t\t\t\t\r\n\t\t\t\t\tReactDOM.createRoot(container, { onRecoverableError: handleError }).render(page)\r\n\t\t\t\t}\r\n\t\t\t} catch (error) {\r\n\t\t\t\thandleError(error, undefined, false)\r\n\t\t\t\tthrow error\r\n\t\t\t}\r\n\t\t}\r\n\r\n\t\t\r\n\r\n\t\t\r\n\t"],"mappings":"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"}