{"version":3,"file":"script_main.FsPKy-9w.mjs","names":["EmbedFonts","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","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/47cNhk39ReIhRJHwdBDG/Jc07M3rRqzXsn3PcFGXY/JnzAem52X.js","https:/framerusercontent.com/modules/gex4SYf6HHKZ9qXOfohy/K5bw0rAZwSbHhxgeUc8J/t1isjFhUD.js","https:/framerusercontent.com/modules/6Z29e0zv6aU2AwJdzeUi/0hHxMCZUXVNNzlEJkJHx/qhnRAmdje.js","framer:toplevel/main"],"sourcesContent":["// Generated by Framer (56ce7df)\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-vLlvr\";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(244, 244, 241)\",...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:#f3f3ef; --muted:#8b8b8b; --line:rgba(255,255,255,.11); --blue:#3485ff;\\n    position:relative; display:block; width:100%; max-width:none; margin:0; overflow:hidden; color:var(--text); background:var(--bg);\\n    font-family:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;\\n    border-top:1px solid var(--line);\\n  }\\n  .ogf::before { content:\"\"; position:absolute; left:48%; top:-240px; width:560px; height:360px; background:rgba(52,133,255,.09); border-radius:50%; filter:blur(115px); pointer-events:none; }\\n  .ogf__inner { position:relative; width:100%; margin:0; padding:clamp(34px,4vw,52px) clamp(18px,4vw,58px) 20px; }\\n\\n  .ogf__cta { display:grid; grid-template-columns:minmax(0,1fr) auto; align-items:end; gap:clamp(32px,7vw,100px); padding-bottom:clamp(58px,8vw,96px); }\\n  .ogf__eyebrow { display:flex; align-items:center; gap:10px; margin:0 0 20px; color:#aaa; font-size:10px; font-weight:720; letter-spacing:.17em; text-transform:uppercase; }\\n  .ogf__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  .ogf__title { max-width:880px; margin:0; font-size:clamp(48px,7.6vw,98px); font-weight:560; letter-spacing:-.072em; line-height:.91; }\\n  .ogf__title span { color:#747474; }\\n  .ogf__start { display:grid; place-items:center; flex:none; width:clamp(126px,13vw,166px); aspect-ratio:1; color:#171717; background:#f3f3ef; border-radius:50%; text-decoration:none; transform:rotate(-7deg); transition:transform .45s cubic-bezier(.2,.8,.2,1),background .3s,box-shadow .4s; box-shadow:0 24px 70px rgba(0,0,0,.26); }\\n  .ogf__start-inner { display:flex; flex-direction:column; align-items:center; gap:9px; font-size:10px; font-weight:780; letter-spacing:.1em; text-align:center; text-transform:uppercase; }\\n  .ogf__start i { font-size:22px; font-style:normal; transition:transform .35s; }\\n  .ogf__start:hover { background:#fff; transform:rotate(0deg) scale(1.045); box-shadow:0 28px 80px rgba(0,0,0,.34); }\\n  .ogf__start:hover i { transform:translate(3px,-3px); }\\n\\n  .ogf__body { display:grid; grid-template-columns:.65fr 1.35fr 1fr .8fr 1.15fr; gap:clamp(24px,4vw,70px); padding:0 0 clamp(26px,3vw,38px); }\\n  .ogf__brand { max-width:360px; }\\n  .ogf__wordmark { display:inline-flex; align-items:center; gap:11px; margin-bottom:19px; color:#fff; text-decoration:none; font-size:14px; font-weight:780; letter-spacing:-.02em; }\\n  .ogf__mark { position:relative; width:24px; height:24px; background:var(--blue); border-radius:8px; transform:rotate(-8deg); box-shadow:inset 0 1px rgba(255,255,255,.25),0 8px 20px rgba(52,133,255,.2); }\\n  .ogf__mark::before { content:\"\"; position:absolute; width:8px; height:8px; right:4px; top:4px; background:#171717; border-radius:3px; }\\n  .ogf__brand-copy { margin:0; color:var(--muted); font-size:12.5px; line-height:1.7; }\\n  .ogf__label { margin:0 0 14px; color:#686868; font-size:9px; font-weight:750; letter-spacing:.17em; text-transform:uppercase; }\\n  .ogf__links { display:grid; gap:2px; margin:0; padding:0; list-style:none; }\\n  .ogf__link { position:relative; display:inline-flex; align-items:center; width:max-content; max-width:100%; padding:4px 0; color:#b1b1b1; font-size:12px; line-height:1.35; text-decoration:none; transition:color .25s,transform .3s; }\\n  .ogf__link::after { content:\"\"; position:absolute; left:0; bottom:3px; width:100%; height:1px; background:currentColor; transform:scaleX(0); transform-origin:right; transition:transform .35s cubic-bezier(.2,.75,.2,1); }\\n  .ogf__link:hover { color:#fff; transform:translateX(4px); }\\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:#ecece8; border-bottom:1px solid var(--line); text-decoration:none; }\\n  .ogf__contact small { display:block; margin-bottom:5px; color:#676767; font-size:8px; font-weight:730; letter-spacing:.14em; text-transform:uppercase; }\\n  .ogf__contact span { display:flex; align-items:center; justify-content:space-between; gap:12px; font-size:12px; }\\n  .ogf__contact i { color:var(--blue); font-size:14px; font-style:normal; transition:transform .3s; }\\n  .ogf__contact:hover i { transform:translate(3px,-3px); }\\n\\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:#666; 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:#8b8b8b; border:1px solid var(--line); border-radius:999px; font-size:8px; font-weight:730; 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:#f1f1ed; border-color:#f1f1ed; transform:translateY(-2px); }\\n  .ogf__top { display:grid; place-items:center; width:38px; height:38px; margin-left:4px; padding:0; color:#a6a6a6; background:transparent; border:1px solid var(--line); border-radius:50%; cursor:pointer; transition:color .25s,border-color .25s,transform .25s; }\\n  .ogf__top:hover { color:#fff; border-color:rgba(255,255,255,.3); transform:translateY(-3px); }\\n  .ogf-reveal { opacity:0; transform:translateY(20px); transition:opacity .7s ease,transform .7s cubic-bezier(.2,.75,.2,1); }\\n  .ogf-reveal.is-visible { opacity:1; transform:none; }\\n\\n  @media (max-width:800px) {\\n    .ogf__cta { grid-template-columns:1fr; align-items:start; }\\n    .ogf__start { width:126px; }\\n    .ogf__body { grid-template-columns:repeat(2,minmax(0,1fr)); gap:30px 46px; }\\n    .ogf__brand { grid-column:1/-1; max-width:450px; }\\n  }\\n  @media (max-width:540px) {\\n    .ogf__inner { padding-top:34px; }\\n    .ogf__title { font-size:clamp(48px,15vw,68px); }\\n    .ogf__body { grid-template-columns:1fr; gap:38px; }\\n    .ogf__brand { grid-column:auto; }\\n    .ogf__legal { grid-template-columns:1fr; }\\n    .ogf__socials { justify-content:flex-start; }\\n  }\\n  @media (prefers-reduced-motion:reduce) {\\n    .ogf-reveal { opacity:1; transform:none; transition:none; }\\n    .ogf__start,.ogf__start i,.ogf__link,.ogf__link::after,.ogf__contact i,.ogf__social,.ogf__top { transition:none; }\\n  }\\n  /* Shared Optima light theme; footer content and links stay unchanged. */\\n  html,body{background:#f4f4f1}\\n  .ogf{--bg:#f4f4f1;--text:#111;--muted:#55575a;--line:rgba(17,18,20,.2);--blue:#111;isolation:isolate;color:#111;background:#f4f4f1;border-top-color:#111}\\n  .ogf::before{content:\"\";position:absolute;z-index:0;inset:0;width:auto;height:auto;border-radius:0;filter: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  .ogf__inner{z-index:1}\\n  .ogf__body>*,.ogf__legal{position:relative;background:#f4f4f1;box-shadow:0 0 0 10px #f4f4f1}\\n  .ogf__wordmark,.ogf__label,.ogf__link,.ogf__contact{color:#111}\\n  .ogf__brand-copy,.ogf__copyright{color:#55575a}.ogf__contact small{color:#65676b}\\n  .ogf__link:hover{color:#111}.ogf__contact{border-bottom-color:rgba(17,18,20,.2)}.ogf__contact i{color:#111}\\n  .ogf__legal{border-top-color:rgba(17,18,20,.2)}\\n  .ogf__social{color:#111;background:#f4f4f1;border:1px solid #111;font-weight:800}\\n  .ogf__social:hover{color:#fff;background:#111;border-color:#111}\\n  .ogf__top{color:#111;background:#f4f4f1;border-color:#111}.ogf__top:hover{color:#fff;background:#111;border-color:#111}\\n  @media(max-width:540px){.ogf__body>*,.ogf__legal{box-shadow:0 0 0 7px #f4f4f1}}\\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=\"Footer navigation\">\\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=\"/contact\" target=\"_top\">Contact</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\">↗</i></span></a>\\n          <a class=\"ogf__contact\" href=\"tel:+27815001968\"><small>Phone</small><span>+27 81 500 1968 <i aria-hidden=\"true\">↗</i></span></a>\\n        </div>\\n      </div>\\n      <div><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></div>\\n      <div><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></div>\\n      <div><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></div>\\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\">↗</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\">↗</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\">↗</i></a>\\n        <button class=\"ogf__top\" type=\"button\" aria-label=\"Back to top\">↑</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; root.dataset.ready=\\'true\\';\\n    const year=root.querySelector(\\'[data-ogf-year]\\'); 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    const observer=new IntersectionObserver(entries=>entries.forEach(entry=>{if(entry.isIntersecting){entry.target.classList.add(\\'is-visible\\');observer.unobserve(entry.target)}}),{threshold:.1});\\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||200)*1,width:componentViewport?.width||\"100vw\",y:(componentViewport?.y||0)+0,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-vLlvr.framer-1fq8shv, .framer-vLlvr .framer-1fq8shv { display: block; }\",\".framer-vLlvr.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-vLlvr .framer-4w484g-container { flex: 1 0 0px; height: auto; position: relative; width: 1px; }\",\".framer-vLlvr .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-vLlvr.framer-v-1ljrgyj.framer-6m69re { padding: 130px 0px 50px 0px; width: 810px; }\",\".framer-vLlvr.framer-v-1qyqddu.framer-6m69re { padding: 100px 0px 40px 0px; width: 360px; }\"];/**\n * This is a generated Framer component.\n * @framerIntrinsicHeight 342\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-vLlvr\");export default FramerJnzAem52X;FramerJnzAem52X.displayName=\"Footer\";FramerJnzAem52X.defaultProps={height:342,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\":{\"Props\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerJnzAem52X\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerDisplayContentsDiv\":\"false\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicWidth\":\"1200\",\"framerColorSyntax\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"EAE4hFzUn\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]},\\\"Qk6E2mkA1\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"auto\\\"]}}}\",\"framerIntrinsicHeight\":\"342\",\"framerAutoSizeImages\":\"true\"}},\"__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 (27dd866)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,Container,cx,forwardLoader,GeneratedComponentContext,getFonts,PropertyOverrides,RenderTarget,useCustomCursors,useHydratedBreakpointVariants,useIsOnFramerCanvas,useLocaleInfo,withCSS,withVariantAppearEffect}from\"framer\";import{LayoutGroup,motion}from\"framer-motion\";import*as React from\"react\";import{useRef}from\"react\";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 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-tTl7q\";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-tTl7q .framer-1yx8o3w-container { top: 0px; }\"],X7aN0nU2I:[\".framer-tTl7q .framer-1yx8o3w-container { top: 0px; }\"]};const breakpointKeys=Object.keys(breakpointRules);const selectors={JKJSCCaio:\".framer-12s58mq-override\",X7aN0nU2I:\".framer-rd941r-override\"};const rules=[\".framer-tTl7q.framer-phyuta, .framer-tTl7q .framer-phyuta { display: block; }\",\".framer-tTl7q.framer-1upato1 { align-content: center; align-items: center; background-color: #f4f4f1; 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-tTl7q .framer-l82au1 { background: transparent; flex-grow: 1; height: 0px; margin: 0px; margin-bottom: -0px; position: relative; width: 0px; }\",\".framer-tTl7q .framer-1cofu7r-container { flex: none; height: auto; order: 1001; position: relative; width: 100%; }\",\".framer-tTl7q .framer-ekkwtd-container { flex: none; height: auto; order: 1002; position: relative; width: 100%; }\",\".framer-tTl7q .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-tTl7q .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(244, 244, 241); }\"}),/*#__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:'<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</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    <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 CONFIG = {\\n    apiKey: \"AIzaSyAlkld_RqMfBoKPVYLa_ZJWAq3aohmd0oc\",\\n    placeId: \"\",\\n    textQuery: \"OptimaWebAI, South Africa\",\\n    businessLocation: \"South Africa\"\\n  };\\n\\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\\n  const escapeHTML = value => String(value ?? \"\").replace(/[&<>\\'\"]/g, char => ({\\n    \"&\": \"&amp;\", \"<\": \"&lt;\", \">\": \"&gt;\", \"\\'\": \"&#39;\", \\'\"\\': \"&quot;\"\\n  })[char]);\\n\\n  const stars = rating => {\\n    const rounded = Math.max(1, Math.min(5, Math.round(Number(rating) || 5)));\\n    return `${\"★\".repeat(rounded)}${\"☆\".repeat(5 - rounded)}`;\\n  };\\n\\n  const card = review => {\\n    const author = review.authorAttribution || {};\\n    const name = author.displayName || \"Google reviewer\";\\n    const avatar = author.photoURI\\n      ? `<img class=\"ogr__avatar\" src=\"${escapeHTML(author.photoURI)}\" alt=\"\" loading=\"lazy\" referrerpolicy=\"no-referrer\">`\\n      : `<span class=\"ogr__avatar ogr__initial\">${escapeHTML(name.charAt(0).toUpperCase())}</span>`;\\n    const reviewURL = review.googleMapsURI || author.uri || \"https://maps.app.goo.gl/AKoURzbxSUf3poQU7\";\\n    const text = typeof review.text === \"string\" ? review.text : (review.text?.text || \"\");\\n    return `<a class=\"ogr__card\" href=\"${escapeHTML(reviewURL)}\" target=\"_blank\" rel=\"noopener\" aria-label=\"Read ${escapeHTML(name)}\\'s review on Google Maps\">\\n      <div class=\"ogr__author\">\\n        ${avatar}\\n        <div class=\"ogr__person\"><div class=\"ogr__name-line\"><div class=\"ogr__name\">${escapeHTML(name)}</div><span class=\"ogr__verified\" title=\"Review sourced directly from Google\"><svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><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 review</span></div><div class=\"ogr__meta\">${escapeHTML(review.relativePublishTimeDescription || CONFIG.businessLocation)}</div></div>\\n        <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      </div>\\n      <div class=\"ogr__card-stars\" aria-label=\"${escapeHTML(review.rating || 5)} out of 5 stars\">${stars(review.rating)}</div>\\n      <p class=\"ogr__text\">${escapeHTML(text)}</p>\\n      <span class=\"ogr__source\">View original review ↗</span>\\n    </a>`;\\n  };\\n\\n  const row = (reviews, reverse = false) => {\\n    const cards = reviews.map(card).join(\"\");\\n    return `<div class=\"ogr__row${reverse ? \" ogr__row--reverse\" : \"\"}\">${cards.repeat(4)}</div>`;\\n  };\\n\\n  const showError = () => {\\n    live.innerHTML = `<div class=\"ogr__status\"><div>Live reviews are reconnecting…</div></div>`;\\n    countNode.textContent = \"Connecting to Google\";\\n  };\\n\\n  window.initOptimaReviews = async () => {\\n    try {\\n      const { Place } = await google.maps.importLibrary(\"places\");\\n      let place;\\n      if (CONFIG.placeId) {\\n        place = new Place({ id: CONFIG.placeId });\\n      } else {\\n        const { places } = await Place.searchByText({\\n          textQuery: CONFIG.textQuery,\\n          fields: [\"id\", \"displayName\"],\\n          maxResultCount: 1,\\n          region: \"ZA\",\\n          pureServiceAreaBusinessesIncluded: true\\n        });\\n        place = places?.[0];\\n        if (!place) throw new Error(\"OptimaWebAI listing not found\");\\n      }\\n      await place.fetchFields({ fields: [\"displayName\", \"rating\", \"userRatingCount\", \"reviews\", \"googleMapsURI\"] });\\n      const reviewTime = review => {\\n        const value = review.publishTime || review.publishTimeDate || 0;\\n        const time = value instanceof Date ? value.getTime() : Date.parse(value);\\n        return Number.isFinite(time) ? time : 0;\\n      };\\n      const reviews = (place.reviews || [])\\n        .filter(review => review.text)\\n        .sort((a, b) => reviewTime(b) - reviewTime(a));\\n      if (!reviews.length) throw new Error(\"No reviews returned\");\\n      ratingNode.textContent = Number(place.rating || 0).toFixed(1);\\n      countNode.textContent = `Based on ${Number(place.userRatingCount || reviews.length).toLocaleString()} live 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).length ? reviews.slice(midpoint) : [...reviews].reverse();\\n      live.innerHTML = `<div class=\"ogr__tracks\">${row(top)}${row(bottom, true)}</div>`;\\n      if (place.attributions?.length) {\\n        const providers = place.attributions.map(item => item.providerURI\\n          ? `<a href=\"${escapeHTML(item.providerURI)}\" target=\"_blank\" rel=\"noopener\">${escapeHTML(item.provider || \"Data provider\")}</a>`\\n          : escapeHTML(item.provider || \"Data provider\"));\\n        attributionNode.innerHTML = `Reviews supplied by Google Maps and ordered by relevance \\xb7 ${providers.join(\" \\xb7 \")}`;\\n      }\\n    } catch (error) {\\n      console.error(\"OptimaWebAI Google reviews:\", error);\\n      showError();\\n    }\\n  };\\n\\n  if (CONFIG.apiKey.startsWith(\"YOUR_\")) {\\n    live.innerHTML = `<div class=\"ogr__status\"><div><div class=\"ogr__status-dot\"></div>Secure Google connection pending activation…</div></div>`;\\n    countNode.textContent = \"Connection pending\";\\n    return;\\n  }\\n\\n  if (window.location.protocol === \"file:\") {\\n    live.innerHTML = `<div class=\"ogr__status\"><div><div class=\"ogr__status-dot\"></div>Secure live reviews activate inside Framer Preview and on your published website.</div></div>`;\\n    countNode.textContent = \"Framer connection ready\";\\n    return;\\n  }\\n\\n  const script = document.createElement(\"script\");\\n  script.src = `https://maps.googleapis.com/maps/api/js?key=${encodeURIComponent(CONFIG.apiKey)}&loading=async&callback=initOptimaReviews`;\\n  script.async = true;\\n  script.defer = true;\\n  script.onerror = showError;\\n  document.head.appendChild(script);\\n})();\\n</script>\\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-ekkwtd-container\",isAuthoredByUser:true,isModuleExternal:true,nodeId:\"HAV1w0ziz\",scopeId:\"qhnRAmdje\",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  .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</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=\"/contact\" target=\"_top\" aria-label=\"Start your project with OptimaWebAI\"><span>Start your project</span><i aria-hidden=\"true\">↗</i></a>\\n    <p class=\"octa__note\">Your website could be live in as little as 7 days.</p>\\n  </div>\\n</section>\\n\\n<script>\\n(() => {\\n  document.querySelectorAll(\\'[data-conversion-cta]\\').forEach(root => {\\n    if(root.dataset.ready) return; root.dataset.ready=\\'true\\';\\n    const item=root.querySelector(\\'.octa-reveal\\');\\n    const observer=new IntersectionObserver(entries=>entries.forEach(entry=>{if(entry.isIntersecting){entry.target.classList.add(\\'is-visible\\');observer.unobserve(entry.target)}}),{threshold:.2});\\n    observer.observe(item);\\n  });\\n})();\\n</script>\\n',id:\"HAV1w0ziz\",layoutId:\"HAV1w0ziz\",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:342,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-ekkwtd-container\",\".framer-1yx8o3w-container\",\".framer-mykkz1-container\"],\"X7aN0nU2I\":[\".framer-1cofu7r-container\",\".framer-ekkwtd-container\",\".framer-1yx8o3w-container\",\".framer-mykkz1-container\"],\"JKJSCCaio\":[\".framer-1cofu7r-container\",\".framer-ekkwtd-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-tTl7q\");export default FramerqhnRAmdje;FramerqhnRAmdje.displayName=\"Main\";FramerqhnRAmdje.defaultProps={height:1723,width:1200};addFonts(FramerqhnRAmdje,[{explicitInter:true,fonts:[]},...EmbedFonts,...DynamicNotchNavigationFonts,...FooterFonts],{supportsExplicitInterCodegen:true});FramerqhnRAmdje.loader={load:(props,context)=>{const locale=context.locale;return Promise.allSettled([forwardLoader(DynamicNotchNavigation,{},context),forwardLoader(Footer,{},context)]);}};\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerqhnRAmdje\",\"slots\":[],\"annotations\":{\"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}}\",\"framerHitTargets\":\"{\\\"Dst6lrXHO\\\":[\\\".framer-1cofu7r-container\\\",\\\".framer-ekkwtd-container\\\",\\\".framer-1yx8o3w-container\\\",\\\".framer-mykkz1-container\\\"],\\\"X7aN0nU2I\\\":[\\\".framer-1cofu7r-container\\\",\\\".framer-ekkwtd-container\\\",\\\".framer-1yx8o3w-container\\\",\\\".framer-mykkz1-container\\\"],\\\"JKJSCCaio\\\":[\\\".framer-1cofu7r-container\\\",\\\".framer-ekkwtd-container\\\",\\\".framer-1yx8o3w-container\\\",\\\".framer-mykkz1-container\\\"]}\",\"framerComponentViewportWidth\":\"true\",\"framerContractVersion\":\"1\",\"framerDisplayContentsDiv\":\"false\",\"framerAutoSizeImages\":\"true\",\"framerIntrinsicWidth\":\"1200\",\"framerColorSyntax\":\"true\",\"framerLayoutTemplate\":\"true\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"X7aN0nU2I\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"JKJSCCaio\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerDefaultVariant\":\"Dst6lrXHO\",\"framerImmutableVariables\":\"true\",\"framerIntrinsicHeight\":\"1723\"}},\"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/0hHxMCZUXVNNzlEJkJHx/qhnRAmdje.js\";\r\n\r\n\t\tconst routes = {augiA20Il: {elements: {eD0YNdCjv: \"step-02\", OfRShLmis: \"step-01\", wmczKrk5i: \"achievements\", ymhlHm5RN: \"step-03\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/oiXsQFToSk7uUtt4yKc4/QCPjoO3gHZ59B1sjM7ua/augiA20Il.js\")), path: \"/\"}, GjQI_B82s: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/Rtz1e9RKrDiSnY0ziow5/K4ezozIMsYz9V0L9I9qr/GjQI_B82s.js\")), path: \"/contact\"}, eUrueYB8r: {elements: {haVDaBK3N: \"awards\", kxSTjKlzP: \"journey\", LcSYkrLmv: \"image-move\", lwykHGyqh: \"team-move\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/8vKeZU6grMFCLhv1wXIZ/14VIzsxiiXFxrr02ZQSh/eUrueYB8r.js\")), path: \"/about\"}, Ut3jRQf0w: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/ezEQ8E0GMslb9PuYc0Kh/9m0mD958TGkXSJWS7wAK/Ut3jRQf0w.js\")), path: \"/projects\"}, t7hebT43B: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/j3Iwz1cX7Bg2EkPdMXfY/eAkhD8EbM9zfT6AGvrXF/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/9WZ6ReOdhIbdiUEJw5Jb/AhVuLVFn3.js\")), path: \"/experience-lab\"}, C_zIb4FOn: {collectionId: \"jNTn1_54d\", elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/6GSPmoPiQBqveIQtKWqD/9Hl8leP35VYfZRrWbP6x/C_zIb4FOn.js\")), path: \"/projects/:cgdrFtBQf\"}, sHEHHPUZ6: {collectionId: \"zZao9MpMu\", elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/AjjTOZix3c1GNVUZfpRz/NIuPdCZpmCCB9tiBdV1D/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/3EtkM7a7wTNoXX2YsHmp/jNTn1_54d.js\"))?.[\"utils\"], zZao9MpMu: async () => (await import(\"https://framerusercontent.com/modules/bsbdi6Aj9TZp5ko8Jbjx/NYfpE5LolbtKE7LNabof/zZao9MpMu.js\"))?.[\"utils\"]}\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 \"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 \"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\texport async function getPageRoot({ routeId, pathVariables, localeId, collectionItemId }) {\r\n\t\t\tconst rootPreload = routes[routeId].page.preload()\r\n\r\n\t\t\tFramer.setLibraryFeatures({disableCustomCode: false, editorBarDisableFrameAncestorsSecurity: false, motionDivToDiv: false, onPageLocalizationSupport: true, onPageMoveTool: true, onPageRichTextBlockSelection: true, privateRouterReplaceState: true, scrollRestoration: true, synchronousNavigationOnDesktop: false, yieldOnTap: false})\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\troutes,\r\n\t\t\t\t\tcollectionUtils,\r\n\t\t\t\t\tframerSiteId,\r\n\t\t\t\t\tnotFoundPage: Framer.lazy(() => import(\"https://framerusercontent.com/modules/j3Iwz1cX7Bg2EkPdMXfY/eAkhD8EbM9zfT6AGvrXF/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/ugnCjcSejYSjtKkmXcoj/snippets.js\")),\r\n\t\t\t\t\tinitialCollectionItemId: collectionItemId,\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\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\t\r\n\t\t\t\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, pathVariables, 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\tpathVariables = routeData.pathVariables\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 serverRouteExperimentEnabled = true\r\n\t\t\t\t\tconst serverRoute = serverRouteExperimentEnabled && 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\tpathVariables,\r\n\t\t\t\t\tcollectionItemId: routeData?.collectionItemId,\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\tlet collectionItemId = routeData?.collectionItemId ?? null\r\n\t\tif (collectionItemId === null && route?.collectionId && collectionUtils) {\r\n\t\t\t  const utils = await collectionUtils[route.collectionId]?.()\r\n\t\t\t  const [slug] = Object.values(pathVariables)\r\n\t\t\t  if (utils && typeof slug === \"string\") {\r\n\t\t\t\t  collectionItemId = (await utils.getRecordIdBySlug(slug, framerLocale || undefined)) ?? null\r\n\t\t\t  }\r\n\t\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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"}