{"version":3,"file":"script_main.BODSZPJE.mjs","names":["useMemo","useState","useRef","React.useRef","React.useState","React.useRef","css","useRef","React.useId","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/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js","https:/framerusercontent.com/modules/D4TWeLfcxT6Tysr2BlYg/iZjmqdxVx1EOiM3k1FaW/useOnNavigationTargetChange.js","https:/framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js","https:/framerusercontent.com/modules/D2Lz5CmnNVPZFFiZXalt/QaCzPbriZBfXWZIIycFI/colorFromToken.js","https:/framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js","https:/framerusercontent.com/modules/xDiQsqBGXzmMsv7AlEVy/uhunpMiNsbXxzjlXsg1y/useUniqueClassName.js","https:/framerusercontent.com/modules/ETACN5BJyFTSo0VVDJfu/NHRqowOiXkF9UwOzczF7/variantUtils.js","https:/framerusercontent.com/modules/eMBrwoqQK7h6mEeGQUH8/GuplvPJVjmxpk9zqOTcb/isBrowser.js","https:/framerusercontent.com/modules/v9AWX2URmiYsHf7GbctE/XxKAZ9KlhWqf5x1JMyyF/useOnChange.js","https:/framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/fSIr3AOAYbGlfSPgXpYu/useAutoMotionValue.js","https:/framerusercontent.com/modules/cuQH4dmpDnV8YK1mSgQX/KqRXqunFjE6ufhpc7ZRu/useFontControls.js","https:/framerusercontent.com/modules/afBE9Yx1W6bY5q32qPxe/m3q7puE2tbo1S2C0s0CT/useRenderTarget.js","https:/framerusercontent.com/modules/zGkoP8tPDCkoBzMdt5uq/0zFSjxIYliHxrQQnryFX/useControlledState.js","https:/framerusercontent.com/modules/5SM58HxZHxjjv7aLMOgQ/WXz9i6mVki0bBCrKdqB3/propUtils.js","https:/framerusercontent.com/modules/G4IfyjvwmaeSBpdb4TWu/OIjZRBmWDcIE2B6qgG1j/index.js","https:/framer.com/m/framer/default-utils.js","https:/framerusercontent.com/modules/o1PI5S8YtkA5bP5g4dFz/cAPMVEI6osbJ1UvICgTq/Embed.js","https:/framerusercontent.com/modules/2VMQ9M2JIwJipvvlyaH9/XCUgFdWddYb0ShYRO4Ma/OptimaHalftoneFooter.js","https:/framerusercontent.com/modules/XYhjVa2GSBmPpYgB48pY/9JkJVfwicUSUqMXuL687/OptimaPillNavigation.js","https:/framerusercontent.com/modules/6Z29e0zv6aU2AwJdzeUi/7kR0cgZtyeqVLUmuj8GR/qhnRAmdje.js","framer:toplevel/main"],"sourcesContent":["import { ControlType } from \"framer\";\nexport const fontStack = `\"Inter\", system-ui, -apple-system, BlinkMacSystemFont, \"Segoe UI\", Roboto, Helvetica, Arial, sans-serif, \"Apple Color Emoji\", \"Segoe UI Emoji\", \"Segoe UI Symbol\"`;\nexport const containerStyles = {\n    position: \"relative\",\n    width: \"100%\",\n    height: \"100%\",\n    display: \"flex\",\n    justifyContent: \"center\",\n    alignItems: \"center\"\n};\nexport const emptyStateStyle = {\n    ...containerStyles,\n    borderRadius: 6,\n    background: \"rgba(136, 85, 255, 0.3)\",\n    color: \"#85F\",\n    border: \"1px dashed #85F\",\n    flexDirection: \"column\"\n};\nexport const defaultEvents = {\n    onClick: {\n        type: ControlType.EventHandler\n    },\n    onMouseEnter: {\n        type: ControlType.EventHandler\n    },\n    onMouseLeave: {\n        type: ControlType.EventHandler\n    }\n};\nexport const fontSizeOptions = {\n    type: ControlType.Number,\n    title: \"Font Size\",\n    min: 2,\n    max: 200,\n    step: 1,\n    displayStepper: true\n};\nexport const fontControls = {\n    font: {\n        type: ControlType.Boolean,\n        title: \"Font\",\n        defaultValue: false,\n        disabledTitle: \"Default\",\n        enabledTitle: \"Custom\"\n    },\n    fontFamily: {\n        type: ControlType.String,\n        title: \"Family\",\n        placeholder: \"Inter\",\n        hidden: ({ font  })=>!font\n    },\n    fontWeight: {\n        type: ControlType.Enum,\n        title: \"Weight\",\n        options: [\n            100,\n            200,\n            300,\n            400,\n            500,\n            600,\n            700,\n            800,\n            900\n        ],\n        optionTitles: [\n            \"Thin\",\n            \"Extra-light\",\n            \"Light\",\n            \"Regular\",\n            \"Medium\",\n            \"Semi-bold\",\n            \"Bold\",\n            \"Extra-bold\",\n            \"Black\", \n        ],\n        hidden: ({ font  })=>!font\n    }\n};\n// @TODO check if we're missing anything here — there doesn't seem to be a reliable browser API for this\nexport const localeOptions = {\n    af: \"Afrikaans\",\n    sq: \"Albanian\",\n    an: \"Aragonese\",\n    ar: \"Arabic (Standard)\",\n    \"ar-dz\": \"Arabic (Algeria)\",\n    \"ar-bh\": \"Arabic (Bahrain)\",\n    \"ar-eg\": \"Arabic (Egypt)\",\n    \"ar-iq\": \"Arabic (Iraq)\",\n    \"ar-jo\": \"Arabic (Jordan)\",\n    \"ar-kw\": \"Arabic (Kuwait)\",\n    \"ar-lb\": \"Arabic (Lebanon)\",\n    \"ar-ly\": \"Arabic (Libya)\",\n    \"ar-ma\": \"Arabic (Morocco)\",\n    \"ar-om\": \"Arabic (Oman)\",\n    \"ar-qa\": \"Arabic (Qatar)\",\n    \"ar-sa\": \"Arabic (Saudi Arabia)\",\n    \"ar-sy\": \"Arabic (Syria)\",\n    \"ar-tn\": \"Arabic (Tunisia)\",\n    \"ar-ae\": \"Arabic (U.A.E.)\",\n    \"ar-ye\": \"Arabic (Yemen)\",\n    hy: \"Armenian\",\n    as: \"Assamese\",\n    ast: \"Asturian\",\n    az: \"Azerbaijani\",\n    eu: \"Basque\",\n    bg: \"Bulgarian\",\n    be: \"Belarusian\",\n    bn: \"Bengali\",\n    bs: \"Bosnian\",\n    br: \"Breton\",\n    my: \"Burmese\",\n    ca: \"Catalan\",\n    ch: \"Chamorro\",\n    ce: \"Chechen\",\n    zh: \"Chinese\",\n    \"zh-hk\": \"Chinese (Hong Kong)\",\n    \"zh-cn\": \"Chinese (PRC)\",\n    \"zh-sg\": \"Chinese (Singapore)\",\n    \"zh-tw\": \"Chinese (Taiwan)\",\n    cv: \"Chuvash\",\n    co: \"Corsican\",\n    cr: \"Cree\",\n    hr: \"Croatian\",\n    cs: \"Czech\",\n    da: \"Danish\",\n    nl: \"Dutch (Standard)\",\n    \"nl-be\": \"Dutch (Belgian)\",\n    en: \"English\",\n    \"en-au\": \"English (Australia)\",\n    \"en-bz\": \"English (Belize)\",\n    \"en-ca\": \"English (Canada)\",\n    \"en-ie\": \"English (Ireland)\",\n    \"en-jm\": \"English (Jamaica)\",\n    \"en-nz\": \"English (New Zealand)\",\n    \"en-ph\": \"English (Philippines)\",\n    \"en-za\": \"English (South Africa)\",\n    \"en-tt\": \"English (Trinidad & Tobago)\",\n    \"en-gb\": \"English (United Kingdom)\",\n    \"en-us\": \"English (United States)\",\n    \"en-zw\": \"English (Zimbabwe)\",\n    eo: \"Esperanto\",\n    et: \"Estonian\",\n    fo: \"Faeroese\",\n    fa: \"Farsi\",\n    fj: \"Fijian\",\n    fi: \"Finnish\",\n    fr: \"French (Standard)\",\n    \"fr-be\": \"French (Belgium)\",\n    \"fr-ca\": \"French (Canada)\",\n    \"fr-fr\": \"French (France)\",\n    \"fr-lu\": \"French (Luxembourg)\",\n    \"fr-mc\": \"French (Monaco)\",\n    \"fr-ch\": \"French (Switzerland)\",\n    fy: \"Frisian\",\n    fur: \"Friulian\",\n    gd: \"Gaelic (Scots)\",\n    \"gd-ie\": \"Gaelic (Irish)\",\n    gl: \"Galacian\",\n    ka: \"Georgian\",\n    de: \"German (Standard)\",\n    \"de-at\": \"German (Austria)\",\n    \"de-de\": \"German (Germany)\",\n    \"de-li\": \"German (Liechtenstein)\",\n    \"de-lu\": \"German (Luxembourg)\",\n    \"de-ch\": \"German (Switzerland)\",\n    el: \"Greek\",\n    gu: \"Gujurati\",\n    ht: \"Haitian\",\n    he: \"Hebrew\",\n    hi: \"Hindi\",\n    hu: \"Hungarian\",\n    is: \"Icelandic\",\n    id: \"Indonesian\",\n    iu: \"Inuktitut\",\n    ga: \"Irish\",\n    it: \"Italian (Standard)\",\n    \"it-ch\": \"Italian (Switzerland)\",\n    ja: \"Japanese\",\n    kn: \"Kannada\",\n    ks: \"Kashmiri\",\n    kk: \"Kazakh\",\n    km: \"Khmer\",\n    ky: \"Kirghiz\",\n    tlh: \"Klingon\",\n    ko: \"Korean\",\n    \"ko-kp\": \"Korean (North Korea)\",\n    \"ko-kr\": \"Korean (South Korea)\",\n    la: \"Latin\",\n    lv: \"Latvian\",\n    lt: \"Lithuanian\",\n    lb: \"Luxembourgish\",\n    mk: \"FYRO Macedonian\",\n    ms: \"Malay\",\n    ml: \"Malayalam\",\n    mt: \"Maltese\",\n    mi: \"Maori\",\n    mr: \"Marathi\",\n    mo: \"Moldavian\",\n    nv: \"Navajo\",\n    ng: \"Ndonga\",\n    ne: \"Nepali\",\n    no: \"Norwegian\",\n    nb: \"Norwegian (Bokmal)\",\n    nn: \"Norwegian (Nynorsk)\",\n    oc: \"Occitan\",\n    or: \"Oriya\",\n    om: \"Oromo\",\n    \"fa-ir\": \"Persian/Iran\",\n    pl: \"Polish\",\n    pt: \"Portuguese\",\n    \"pt-br\": \"Portuguese (Brazil)\",\n    pa: \"Punjabi\",\n    \"pa-in\": \"Punjabi (India)\",\n    \"pa-pk\": \"Punjabi (Pakistan)\",\n    qu: \"Quechua\",\n    rm: \"Rhaeto-Romanic\",\n    ro: \"Romanian\",\n    \"ro-mo\": \"Romanian (Moldavia)\",\n    ru: \"Russian\",\n    \"ru-mo\": \"Russian (Moldavia)\",\n    sz: \"Sami (Lappish)\",\n    sg: \"Sango\",\n    sa: \"Sanskrit\",\n    sc: \"Sardinian\",\n    sd: \"Sindhi\",\n    si: \"Singhalese\",\n    sr: \"Serbian\",\n    sk: \"Slovak\",\n    sl: \"Slovenian\",\n    so: \"Somani\",\n    sb: \"Sorbian\",\n    es: \"Spanish\",\n    \"es-ar\": \"Spanish (Argentina)\",\n    \"es-bo\": \"Spanish (Bolivia)\",\n    \"es-cl\": \"Spanish (Chile)\",\n    \"es-co\": \"Spanish (Colombia)\",\n    \"es-cr\": \"Spanish (Costa Rica)\",\n    \"es-do\": \"Spanish (Dominican Republic)\",\n    \"es-ec\": \"Spanish (Ecuador)\",\n    \"es-sv\": \"Spanish (El Salvador)\",\n    \"es-gt\": \"Spanish (Guatemala)\",\n    \"es-hn\": \"Spanish (Honduras)\",\n    \"es-mx\": \"Spanish (Mexico)\",\n    \"es-ni\": \"Spanish (Nicaragua)\",\n    \"es-pa\": \"Spanish (Panama)\",\n    \"es-py\": \"Spanish (Paraguay)\",\n    \"es-pe\": \"Spanish (Peru)\",\n    \"es-pr\": \"Spanish (Puerto Rico)\",\n    \"es-es\": \"Spanish (Spain)\",\n    \"es-uy\": \"Spanish (Uruguay)\",\n    \"es-ve\": \"Spanish (Venezuela)\",\n    sx: \"Sutu\",\n    sw: \"Swahili\",\n    sv: \"Swedish\",\n    \"sv-fi\": \"Swedish (Finland)\",\n    \"sv-sv\": \"Swedish (Sweden)\",\n    ta: \"Tamil\",\n    tt: \"Tatar\",\n    te: \"Teluga\",\n    th: \"Thai\",\n    tig: \"Tigre\",\n    ts: \"Tsonga\",\n    tn: \"Tswana\",\n    tr: \"Turkish\",\n    tk: \"Turkmen\",\n    uk: \"Ukrainian\",\n    hsb: \"Upper Sorbian\",\n    ur: \"Urdu\",\n    ve: \"Venda\",\n    vi: \"Vietnamese\",\n    vo: \"Volapuk\",\n    wa: \"Walloon\",\n    cy: \"Welsh\",\n    xh: \"Xhosa\",\n    ji: \"Yiddish\",\n    zu: \"Zulu\"\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"fontSizeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"localeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontStack\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyStateStyle\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./constants.map","import { useIsInCurrentNavigationTarget } from \"framer\";\nimport { useEffect } from \"react\";\nexport function useOnEnter(onEnter, enabled) {\n    return useOnSpecificTargetChange(true, onEnter, enabled);\n}\nexport function useOnExit(onExit, enabled) {\n    return useOnSpecificTargetChange(false, onExit, enabled);\n}\nfunction useOnSpecificTargetChange(goal, callback, enabled = true) {\n    const isInTarget = useIsInCurrentNavigationTarget();\n    useEffect(()=>{\n        if (enabled && isInTarget === goal) callback();\n    }, [\n        isInTarget\n    ]);\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useOnEnter\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnExit\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useOnNavigationTargetChange.map","import { useRef } from \"react\";\n/**\n * Creates a constant value over the lifecycle of a component.\n *\n * Even if `useMemo` is provided an empty array as its final argument, it doesn't offer\n * a guarantee that it won't re-run for performance reasons later on. By using `useConstant`\n * you can ensure that initialisers don't execute twice or more.\n */ export function useConstant(init) {\n    const ref = useRef(null);\n    if (ref.current === null) {\n        ref.current = init();\n    }\n    return ref.current;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useConstant\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useConstant.map","import { Color } from \"framer\";\nexport function colorFromToken(color) {\n    if (color.startsWith(\"var(--token-\")) return \"rgb\" + color.split(\") /*\")[0].split(\", rgb\")[1];\n    return color;\n}\nexport function colorTokentoValue(color) {\n    return Color(colorFromToken(color)).toValue();\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"colorFromToken\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorTokentoValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./colorFromToken.map","import { MotionValue } from \"framer\";\nexport const isMotionValue = (v)=>v instanceof MotionValue\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"isMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./isMotionValue.map","import * as React from \"react\";\nconst letters = \"ABCDEFGHIJKLMNOPQRSTUVWXYZabcdefghijklmnopqrstuvwxyz\";\nconst l = ()=>letters[Math.floor(Math.random() * letters.length)]\n;\nexport const randomID = ()=>l() + l() + l() + l() + l() + l() + l() + l() + l()\n;\nfunction createUniqueClass(suffix) {\n    return `framer-${suffix}-${randomID()}`;\n}\nexport function useUniqueClassName(suffix, deps) {\n    const [className, setClassName] = React.useState(createUniqueClass(suffix));\n    React.useEffect(()=>{\n        setClassName(createUniqueClass(suffix));\n    }, [\n        suffix,\n        ...deps\n    ]);\n    return className;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useUniqueClassName\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useUniqueClassName.map","import { ControlType } from \"framer\";\n// I realize this only applies to select right now\n// but we can work on it in here\nexport function getVariantControls(Component, variant, additionalControls = {\n}) {\n    return {\n        [`${variant}TextColor`]: {\n            type: ControlType.Color,\n            title: \"Text Color\",\n            defaultValue: Component.defaultProps[`${variant}TextColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}IconColor`]: {\n            type: ControlType.Color,\n            title: \"Icon Color\",\n            defaultValue: Component.defaultProps[`${variant}IconColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BackgroundColor`]: {\n            type: ControlType.Color,\n            title: \"Bg Color\",\n            defaultValue: Component.defaultProps[`${variant}BackgroundColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BorderColor`]: {\n            type: ControlType.Color,\n            title: \"Border Color\",\n            defaultValue: Component.defaultProps[`${variant}BorderColor`],\n            hidden: (props)=>props.variant !== variant\n        },\n        [`${variant}BorderWidth`]: {\n            type: ControlType.Number,\n            title: \" \",\n            min: 0,\n            max: 5,\n            displayStepper: true,\n            defaultValue: Component.defaultProps[`${variant}BorderWidth`],\n            hidden: (props)=>props.variant !== variant\n        },\n        ...additionalControls\n    };\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"getVariantControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./variantUtils.map","import { useMemo } from \"react\";\nexport const isBrowserSafari = ()=>{\n    if (typeof navigator !== `undefined`) {\n        const userAgent = navigator.userAgent.toLowerCase();\n        const isSafari = (userAgent.indexOf(\"safari\") > -1 || userAgent.indexOf(\"framermobile\") > -1 || userAgent.indexOf(\"framerx\") > -1) && userAgent.indexOf(\"chrome\") < 0;\n        return isSafari;\n    } else return false;\n};\nexport const useIsBrowserSafari = ()=>useMemo(()=>isBrowserSafari()\n    , [])\n;\n\nexport const __FramerMetadata__ = {\"exports\":{\"useIsBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./isBrowser.map","import { useEffect } from \"react\";\n//@ts-ignore\nimport { isMotionValue } from \"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";\nexport function useOnChange(value, callback) {\n    useEffect(()=>// @ts-ignore this should be detected as a MV :shrug:\n        isMotionValue(value) ? value.onChange(callback) : undefined\n    );\n}\nexport function useMultiOnChange(values, handler) {\n    useEffect(()=>{\n        const subscriptions = values.map((value)=>value.onChange(handler)\n        );\n        return ()=>subscriptions.forEach((unsubscribe)=>unsubscribe()\n            )\n        ;\n    });\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"Subscriber\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnChange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMultiOnChange\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useOnChange.map","import { useCallback, useEffect, useRef } from \"react\";\nimport { motionValue, animate, RenderTarget } from \"framer\";\n// @ts-ignore\nimport { isMotionValue } from \"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";\n// @ts-ignore\nimport { useConstant } from \"https://framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js\";\nexport function useAutoMotionValue(inputValue, options) {\n    var ref;\n    // Put options on a local ref\n    // Might wanna just memo instead but it works for now\n    const optionsRef = useRef(options);\n    const animation = useRef();\n    const didInitialMount = useRef(false);\n    const isOnCanvas = RenderTarget.current() === RenderTarget.canvas;\n    // in-progress - trying to figure out effect hooks\n    const onChangeDeps = (options === null || options === void 0 ? void 0 : options.onChangeDeps) ? options.onChangeDeps : [];\n    // Memoize the onChange handler\n    const onChange = useCallback(options === null || options === void 0 ? void 0 : options.onChange, [\n        ...onChangeDeps, \n    ]);\n    // Optionally scale the value from props\n    const transformer = useCallback((value)=>((ref = optionsRef.current) === null || ref === void 0 ? void 0 : ref.transform) ? optionsRef.current.transform(value) : value\n    , []);\n    // Create new MotionValue from inputValue\n    const value = useConstant(()=>isMotionValue(inputValue) ? inputValue : motionValue(transformer(inputValue))\n    );\n    // Setting value from prop change\n    useEffect(()=>{\n        if (!isMotionValue(inputValue) && didInitialMount.current) {\n            var ref1, ref2;\n            const newValue = transformer(inputValue);\n            (ref1 = animation.current) === null || ref1 === void 0 ? void 0 : ref1.stop();\n            // Call change callback\n            if (onChange) onChange(newValue, value);\n            // Trigger animation to new value\n            if (((ref2 = optionsRef.current) === null || ref2 === void 0 ? void 0 : ref2.animate) && !isOnCanvas) {\n                var ref3;\n                // @ts-ignore\n                animation.current = animate(value, newValue, (ref3 = optionsRef.current) === null || ref3 === void 0 ? void 0 : ref3.transition);\n            } else {\n                value.set(newValue);\n            }\n        }\n        didInitialMount.current = true;\n    }, [\n        inputValue,\n        ...onChangeDeps\n    ]);\n    return value;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useAutoMotionValue\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}","// @ts-ignore\nimport{fontStore}from\"framer\";import{useEffect}from\"react\";import{fontStack}from\"https://framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js\";const fontWeights={100:\"Thin\",200:\"Extra-light\",300:\"Light\",400:\"Regular\",500:\"Medium\",600:\"Semi-bold\",700:\"Bold\",800:\"Extra-bold\",900:\"Black\"};export function useFontControls(props){const{fontFamily=\"Inter\",fontSize=16,fontWeight=400,font=false}=props;const fontWeightName=fontWeights[fontWeight];const customFontStack=`\"${fontFamily} ${fontWeightName}\", \"${fontFamily}\", ${fontStack}`;const fontFamilyStyle=fontFamily?{fontSize,fontWeight,fontFamily:customFontStack}:{fontSize,fontWeight};const fetchCustomFonts=async()=>{await fontStore.loadWebFontsFromSelectors([`CUSTOM;${fontFamily}`,`CUSTOM;${fontFamily} ${fontWeightName}`,`GF;${fontFamily}-${fontWeightName.toLowerCase()}`,]).catch(e=>console.error(e));};useEffect(()=>{if(font)fetchCustomFonts();},[font,fontFamily,fontWeight]);return fontFamilyStyle;}\nexport const __FramerMetadata__ = {\"exports\":{\"useFontControls\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useFontControls.map","import { useMemo } from \"react\";\nimport { RenderTarget } from \"framer\";\nexport function useRenderTarget() {\n    const currentRenderTarget = useMemo(()=>RenderTarget.current()\n    , []);\n    return currentRenderTarget;\n}\nexport function useIsInPreview() {\n    const inPreview = useMemo(()=>RenderTarget.current() === RenderTarget.preview\n    , []);\n    return inPreview;\n}\nexport function useIsOnCanvas() {\n    const onCanvas = useMemo(()=>RenderTarget.current() === RenderTarget.canvas\n    , []);\n    return onCanvas;\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useIsInPreview\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRenderTarget\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsOnCanvas\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useRenderTarget.map","import * as React from \"react\";\nexport function useControlledState(value) {\n    const [controlledValue, setValue] = React.useState(value);\n    React.useEffect(()=>{\n        setValue(value);\n    }, [\n        value\n    ]);\n    return [\n        controlledValue,\n        setValue\n    ];\n}\n\nexport const __FramerMetadata__ = {\"exports\":{\"useControlledState\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./useControlledState.map","import { useMemo } from \"react\";\nimport { ControlType } from \"framer\";\nexport function useRadius(props) {\n    const { borderRadius , isMixedBorderRadius , topLeftRadius , topRightRadius , bottomRightRadius , bottomLeftRadius ,  } = props;\n    const radiusValue = useMemo(()=>isMixedBorderRadius ? `${topLeftRadius}px ${topRightRadius}px ${bottomRightRadius}px ${bottomLeftRadius}px` : `${borderRadius}px`\n    , [\n        borderRadius,\n        isMixedBorderRadius,\n        topLeftRadius,\n        topRightRadius,\n        bottomRightRadius,\n        bottomLeftRadius, \n    ]);\n    return radiusValue;\n}\nexport const borderRadiusControl = {\n    borderRadius: {\n        title: \"Radius\",\n        type: ControlType.FusedNumber,\n        toggleKey: \"isMixedBorderRadius\",\n        toggleTitles: [\n            \"Radius\",\n            \"Radius per corner\"\n        ],\n        valueKeys: [\n            \"topLeftRadius\",\n            \"topRightRadius\",\n            \"bottomRightRadius\",\n            \"bottomLeftRadius\", \n        ],\n        valueLabels: [\n            \"TL\",\n            \"TR\",\n            \"BR\",\n            \"BL\"\n        ],\n        min: 0\n    }\n};\nexport function usePadding(props) {\n    const { padding , paddingPerSide , paddingTop , paddingRight , paddingBottom , paddingLeft ,  } = props;\n    const paddingValue = useMemo(()=>paddingPerSide ? `${paddingTop}px ${paddingRight}px ${paddingBottom}px ${paddingLeft}px` : padding\n    , [\n        padding,\n        paddingPerSide,\n        paddingTop,\n        paddingRight,\n        paddingBottom,\n        paddingLeft, \n    ]);\n    return paddingValue;\n}\nexport const paddingControl = {\n    padding: {\n        type: ControlType.FusedNumber,\n        toggleKey: \"paddingPerSide\",\n        toggleTitles: [\n            \"Padding\",\n            \"Padding per side\"\n        ],\n        valueKeys: [\n            \"paddingTop\",\n            \"paddingRight\",\n            \"paddingBottom\",\n            \"paddingLeft\", \n        ],\n        valueLabels: [\n            \"T\",\n            \"R\",\n            \"B\",\n            \"L\"\n        ],\n        min: 0,\n        title: \"Padding\"\n    }\n};\n\nexport const __FramerMetadata__ = {\"exports\":{\"borderRadiusControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRadius\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"RadiusProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PaddingProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePadding\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paddingControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}\n//# sourceMappingURL=./propUtils.map","import{defaultEvents,localeOptions,fontControls,fontSizeOptions,emptyStateStyle,containerStyles,fontStack}from\"https://framerusercontent.com/modules/VTUDdizacRHpwbkOamr7/AykinQJbgwl92LvMGZwu/constants.js\";import{useOnEnter,useOnExit}from\"https://framerusercontent.com/modules/D4TWeLfcxT6Tysr2BlYg/iZjmqdxVx1EOiM3k1FaW/useOnNavigationTargetChange.js\";import{useConstant}from\"https://framerusercontent.com/modules/ExNgrA7EJTKUPpH6vIlN/eiOrSJ2Ab5M9jPCvVwUz/useConstant.js\";import{colorTokentoValue,colorFromToken}from\"https://framerusercontent.com/modules/D2Lz5CmnNVPZFFiZXalt/QaCzPbriZBfXWZIIycFI/colorFromToken.js\";import{isMotionValue}from\"https://framerusercontent.com/modules/3mKFSGQqKHV82uOV1eBc/5fbRLvOpxZC0JOXugvwm/isMotionValue.js\";import{useUniqueClassName,randomID}from\"https://framerusercontent.com/modules/xDiQsqBGXzmMsv7AlEVy/uhunpMiNsbXxzjlXsg1y/useUniqueClassName.js\";import{getVariantControls}from\"https://framerusercontent.com/modules/ETACN5BJyFTSo0VVDJfu/NHRqowOiXkF9UwOzczF7/variantUtils.js\";import{useIsBrowserSafari}from\"https://framerusercontent.com/modules/eMBrwoqQK7h6mEeGQUH8/GuplvPJVjmxpk9zqOTcb/isBrowser.js\";import{useMultiOnChange,useOnChange}from\"https://framerusercontent.com/modules/v9AWX2URmiYsHf7GbctE/XxKAZ9KlhWqf5x1JMyyF/useOnChange.js\";import{mstoMinAndSec,secondsToMinutes}from\"https://framerusercontent.com/modules/4zHZnO5JojN1PrIbu2jm/revv9QCWpkh8lPzi2jje/time.js\";import{useAutoMotionValue}from\"https://framerusercontent.com/modules/kNDwabfjDEb3vUxkQlZS/fSIr3AOAYbGlfSPgXpYu/useAutoMotionValue.js\";import{useFontControls}from\"https://framerusercontent.com/modules/cuQH4dmpDnV8YK1mSgQX/KqRXqunFjE6ufhpc7ZRu/useFontControls.js\";import{useRenderTarget,useIsInPreview,useIsOnCanvas}from\"https://framerusercontent.com/modules/afBE9Yx1W6bY5q32qPxe/m3q7puE2tbo1S2C0s0CT/useRenderTarget.js\";import{useControlledState}from\"https://framerusercontent.com/modules/zGkoP8tPDCkoBzMdt5uq/0zFSjxIYliHxrQQnryFX/useControlledState.js\";import{usePadding,useRadius,paddingControl,borderRadiusControl}from\"https://framerusercontent.com/modules/5SM58HxZHxjjv7aLMOgQ/WXz9i6mVki0bBCrKdqB3/propUtils.js\";import{detectAutoSizingAxis}from\"https://framerusercontent.com/modules/8CkHAZatUz1UR8jNTcfD/HwbnIAZlUmQ2oTpcLkaH/detectAutoSizingAxis.js\";export{useOnEnter,useOnExit,defaultEvents,isMotionValue,colorFromToken,colorTokentoValue,localeOptions,fontControls,fontSizeOptions,emptyStateStyle,containerStyles,fontStack,useUniqueClassName,getVariantControls,useIsBrowserSafari,randomID,useConstant,useMultiOnChange,useOnChange,usePadding,useRadius,paddingControl,borderRadiusControl,mstoMinAndSec,useFontControls,secondsToMinutes,useAutoMotionValue,useRenderTarget,useIsInPreview,useControlledState,detectAutoSizingAxis,useIsOnCanvas,};\nexport const __FramerMetadata__ = {\"exports\":{\"useConstant\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"isMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"defaultEvents\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useUniqueClassName\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMultiOnChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnChange\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsOnCanvas\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnExit\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontSizeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorTokentoValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRadius\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"getVariantControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"colorFromToken\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"containerStyles\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"usePadding\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"fontStack\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useControlledState\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useFontControls\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useAutoMotionValue\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"emptyStateStyle\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsInPreview\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useIsBrowserSafari\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"detectAutoSizingAxis\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"borderRadiusControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"mstoMinAndSec\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"randomID\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"localeOptions\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useOnEnter\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"secondsToMinutes\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRenderTarget\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"paddingControl\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}}}}","/*\n * index (framer/default-utils@0.45.0)\n *\n * Learn More: https://www.framer.com/asset-urls\n */\n\nexport * from \"https://framerusercontent.com/modules/G4IfyjvwmaeSBpdb4TWu/OIjZRBmWDcIE2B6qgG1j/index.js\"\n","import{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:\"To embed a website or widget, add it to the properties\\xa0panel.\"})});}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\":{\"framerSupportedLayoutHeight\":\"any-prefer-fixed\",\"framerIntrinsicWidth\":\"600\",\"framerDisableUnlink\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"fixed\",\"framerIntrinsicHeight\":\"400\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./Embed.map","\"use client\";import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";// Halftone Wordmark Footer — a site footer whose wordmark is set enormous and\n// cropped by the bottom edge, printed as a field of halftone dots. Each dot is\n// sized by how much of the letter covers its cell, so the type keeps its edges\n// at any scale. Move across it and the dots part around the pointer on springs,\n// warming in colour as they are pushed off their place; click and a shock ring\n// runs through the word. Above it sit the studio line, tracked link columns and\n// a back-to-top, separated by a hairline, all over a fine print grain.\n//\n// One file, React only. A 2D canvas for the dots and the grain, real anchors\n// for the links. Every rule in the scoped <style> is .hwf- prefixed and nothing\n// is fetched: the faces come from the host page or the fallback stacks.\nimport*as React from\"react\";import{addPropertyControls,ControlType,useIsStaticRenderer,Link}from\"framer\";const PRESETS={night:{background:\"#171717\",ink:\"#ffffff\",warm:\"#c3c3c3\"},paper:{background:\"#efebe3\",ink:\"#17150f\",warm:\"#c2361c\"},ember:{background:\"#160a06\",ink:\"#f2c48c\",warm:\"#ff5a1f\"},cobalt:{background:\"#0d1b4d\",ink:\"#dfe7ff\",warm:\"#ffcd3c\"}};const DEFAULT_COLUMNS=[{title:\"Explore\",links:[{label:\"Home\",href:\"/\"},{label:\"About\",href:\"/about\"},{label:\"Our Work\",href:\"/projects\"},{label:\"Experience Lab\",href:\"/experience-lab\"},{label:\"Pricing\",href:\"/pricing\"},{label:\"Start a Project\",href:\"/contact\"}]},{title:\"Services\",links:[{label:\"Web Design\",href:\"/web-design\"},{label:\"Ecommerce Web Design\",href:\"/ecommerce-web-design\"},{label:\"Shopify Web Design\",href:\"/shopify-web-design\"},{label:\"Custom Development\",href:\"/custom-web-development\"},{label:\"Website Redesign\",href:\"/website-redesign\"},{label:\"Interactive Web Design\",href:\"/interactive-web-design\"},{label:\"Landing Page Design\",href:\"/landing-page-design\"}]},{title:\"Policies\",links:[{label:\"Privacy Policy\",href:\"/legal-pages/privacy-policy\"},{label:\"Terms & Conditions\",href:\"/legal-pages/terms-and-conditions\"},{label:\"Disclaimer\",href:\"/legal-pages/disclaimer\"},{label:\"Cookie Policy\",href:\"/legal-pages/cookie-policy\"},{label:\"Refund & Cancellation\",href:\"/legal-pages/refund-and-cancellation-policy\"},{label:\"Service Level Agreement\",href:\"/legal-pages/service-level-agreement-(sla)\"}]},{title:\"Connect\",links:[{label:\"optimawebai@gmail.com\",href:\"mailto:optimawebai@gmail.com\"},{label:\"+27 81 500 1968\",href:\"tel:+27815001968\"},{label:\"WhatsApp\",href:\"https://wa.me/27815001968\"},{label:\"Instagram\",href:\"https://www.instagram.com/optimawebai/\"},{label:\"TikTok\",href:\"https://www.tiktok.com/@optimawebai\"},{label:\"Facebook\",href:\"https://www.facebook.com/share/1DiEsb7GoH/?mibextid=wwXIfr\"},{label:\"optimawebai.com\",href:\"https://www.optimawebai.com\"}]}];const SANS_STACK='\"Inter Tight\", \"Inter Variable\", \"Inter\", \"Helvetica Neue\", Arial, system-ui, sans-serif';const MONO_STACK='\"JetBrains Mono\", \"SF Mono\", ui-monospace, Menlo, Consolas, monospace';// #region halftone\n// Pure helpers, lifted out and executed by tests/halftone-wordmark-footer.test.mjs.\n/** Hex → [r, g, b] in 0–255, or null for anything that isn't #rgb / #rrggbb. */export function hwfHex(hex){const m=/^#?([0-9a-f]{3}|[0-9a-f]{6})$/i.exec((hex||\"\").trim());if(!m)return null;const h=m[1].length===3?m[1].split(\"\").map(c=>c+c).join(\"\"):m[1];return[parseInt(h.slice(0,2),16),parseInt(h.slice(2,4),16),parseInt(h.slice(4,6),16)];}/** Dot radius for a cell coverage in [0, 1]: area-true, so tone stays even. */export function hwfRadius(coverage,gap){const c=coverage<0?0:coverage>1?1:coverage;return Math.sqrt(c)*gap*.56;}/**\n * One step of a dot's spring back to home, plus the push from a pointer at\n * (px, py) within radius r. Returns [x, y, vx, vy]. Away from the pointer a\n * displaced dot always heads home and comes to rest.\n */export function hwfStep(x,y,vx,vy,hx,hy,px,py,r){const dx=x-px;const dy=y-py;const d2=dx*dx+dy*dy;if(r>0&&d2<r*r){const d=Math.sqrt(d2)+.001;const f=(1-d/r)*2.6;vx+=dx/d*f;vy+=dy/d*f;}vx=(vx+(hx-x)*.05)*.84;vy=(vy+(hy-y)*.05)*.84;return[x+vx,y+vy,vx,vy];}/** How warm a dot is drawn: 0 at home, 1 once it is `span` px or more away. */export function hwfWarmth(x,y,hx,hy,span){const d=Math.hypot(x-hx,y-hy);return span>0?Math.min(1,d/span):0;}/** Font size that sets `measured` (width at 100px) to fill `width` exactly. */export function hwfFitSize(measured,width){return measured>0?width/measured*100:0;}// #endregion\nconst HWF_CSS=`\n.hwf-root {\n  position: relative; width: 100%; overflow: hidden; isolation: isolate;\n  background: var(--hwf-bg); color: var(--hwf-ink); -webkit-font-smoothing: antialiased;\n}\n.hwf-root canvas { position: absolute; inset: 0; width: 100%; height: 100%; display: block; max-width: none; pointer-events:none; }\n.hwf-top {\n  position: relative; z-index: 1; display: grid; grid-template-columns: minmax(0, 1.25fr) repeat(4, minmax(0, 1fr));\n  gap: 24px; padding: clamp(22px, 3.4vw, 40px) clamp(20px, 3.4vw, 44px) 0;\n  font-family: var(--hwf-mono); font-size: 11px; letter-spacing: .08em; text-transform: uppercase; line-height: 1.75;\n}\n.hwf-brand strong { display: block; font-weight: 500; }\n.hwf-brand span { opacity: .7; display:block; margin-top:12px; }\n.hwf-copyright{display:block;margin-top:20px;opacity:.65;font-size:10px;letter-spacing:.04em}\n.hwf-root *{box-sizing:border-box}\n.hwf-root{padding-bottom:clamp(112px,14vw,240px);min-height:520px}\n.hwf-top > *{min-width:0}\n.hwf-col a{display:inline-flex;align-items:center;min-height:34px;overflow-wrap:anywhere;letter-spacing:.045em}\n.hwf-col h3{margin-bottom:12px!important}\n.hwf-up{display:inline-flex;align-items:center;gap:10px;min-height:44px}\n.hwf-up svg{width:16px;height:16px}\n@media(max-width:1100px) and (min-width:721px){.hwf-top{grid-template-columns:repeat(4,minmax(0,1fr))}.hwf-brand{grid-column:1/-1}}\n.hwf-col h3 { margin: 0; font: inherit; opacity: .65; font-weight: 500; }\n.hwf-col ul { list-style: none; margin: 0; padding: 0; }\n.hwf-col a, .hwf-up {\n  color: inherit; text-decoration: none; opacity: .78; background: none; border: 0; padding: 0;\n  font: inherit; letter-spacing: inherit; text-transform: inherit; cursor: pointer;\n  background-image: linear-gradient(currentColor, currentColor); background-size: 0% 1px;\n  background-repeat: no-repeat; background-position: 0 100%; transition: opacity .25s ease, background-size .35s cubic-bezier(.2,.7,.1,1);\n}\n.hwf-col a:hover, .hwf-up:hover { opacity: 1; background-size: 100% 1px; }\n.hwf-col a:focus-visible, .hwf-up:focus-visible { outline: 1px solid currentColor; outline-offset: 3px; opacity: 1; }\n.hwf-rule {\n  position: relative; z-index: 1; display: flex; justify-content: flex-end; align-items: center; gap: 16px;\n  margin: clamp(18px, 2.6vw, 30px) clamp(20px, 3.4vw, 44px) 0; padding-top: 12px;\n  border-top: 0.5px solid color-mix(in srgb, var(--hwf-ink) 16%, transparent);\n  font-family: var(--hwf-mono); font-size: 10.5px; letter-spacing: .08em; text-transform: uppercase;\n}\n.hwf-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip-path: inset(50%); white-space: nowrap; }\n@media (max-width: 720px) {\n  .hwf-top { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); row-gap: 18px; }\n  .hwf-brand { grid-column: 1 / -1; }\n  .hwf-col a { min-height: 44px; font-size: 11.5px; }\n}\n@media (prefers-reduced-motion: reduce) {\n  .hwf-col a, .hwf-up { transition: none; }\n}\n`;/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 1440\n * @framerIntrinsicHeight 560\n */export default function OptimaHalftoneFooter({wordmark=\"OptimaWebAI\",style,label=\"OptimaWebAI\",meta=\"Web design & digital solutions \\xb7 South Africa\",columns=DEFAULT_COLUMNS,exploreLinks=DEFAULT_COLUMNS[0].links,serviceLinks=DEFAULT_COLUMNS[1].links,policyLinks=DEFAULT_COLUMNS[2].links,contactLinks=DEFAULT_COLUMNS[3].links,backToTop=true,preset=\"night\",palette,dotGap=6,radius=80,crop=.2,grain=.5,interactive=true,fontFamily=SANS_STACK,fontWeight=800,monoFamily=MONO_STACK,height=\"auto\",className=\"\"}){const isStatic=useIsStaticRenderer();// Separate link-list controls keep every URL directly editable in Framer.\nconst editableLinks=[exploreLinks,serviceLinks,policyLinks,contactLinks];const resolvedColumns=(columns?.length?columns:DEFAULT_COLUMNS).map((col,index)=>({...col,links:editableLinks[index]||col.links||[]}));const colors={...PRESETS[preset]||PRESETS.night,...palette||{}};const rootRef=React.useRef(null);const canvasRef=React.useRef(null);const opts=React.useRef({colors,dotGap,radius,crop,grain,interactive,fontFamily,fontWeight,wordmark});opts.current={colors,dotGap,radius,crop,grain,interactive,fontFamily,fontWeight,wordmark};const key=[wordmark,dotGap,crop,grain,fontFamily,fontWeight,colors.background,colors.ink,colors.warm].join(\"|\");React.useEffect(()=>{const root=rootRef.current;const canvas=canvasRef.current;if(!root||!canvas)return;const ctx=canvas.getContext(\"2d\");if(!ctx)return;const motionQuery=window.matchMedia(\"(prefers-reduced-motion: reduce)\");let reduced=motionQuery.matches;let w=0;let h=0;let dpr=1;let px=-1e5;let py=-1e5;let raf=0;let visible=!document.hidden;let inView=true;let awake=true;let ring={x:0,y:0,t:-1};// Flat arrays: x, y, vx, vy, hx, hy, r per dot.\nlet dots=new Float32Array(0);let count=0;let grainTile=null;let grainPattern=null;const ink=hwfHex(opts.current.colors.ink)||[233,228,218];const warm=hwfHex(opts.current.colors.warm)||[233,118,43];const layout=(force=false)=>{const o=opts.current;const rect=root.getBoundingClientRect();const nextW=Math.max(1,Math.round(rect.width));const nextH=Math.max(1,Math.round(rect.height));const nextDpr=Math.min(window.devicePixelRatio||1,2);if(!force&&nextW===w&&nextH===h&&nextDpr===dpr)return false;w=nextW;h=nextH;dpr=nextDpr;canvas.width=Math.round(w*dpr);canvas.height=Math.round(h*dpr);// Set the word once, at a size that fills the width, on a 1x mask.\nconst mask=document.createElement(\"canvas\");mask.width=w;mask.height=h;const m=mask.getContext(\"2d\",{willReadFrequently:true});if(!m)return;const face=o.fontWeight+\" 100px \"+o.fontFamily;m.font=face;const word=o.wordmark||\" \";const fit=hwfFitSize(m.measureText(word).width,w*1.02);m.font=o.fontWeight+\" \"+fit+\"px \"+o.fontFamily;const box=m.measureText(word);const cap=box.actualBoundingBoxAscent||fit*.72;const c=Math.max(0,Math.min(.6,o.crop));m.fillStyle=\"#000\";m.textBaseline=\"alphabetic\";m.fillText(word,(w-box.width)/2,h+cap*c);const img=m.getImageData(0,0,w,h).data;const gap=Math.max(3,Math.min(o.dotGap,w<720?3.5:o.dotGap));const cols=Math.ceil(w/gap);const rows=Math.ceil(h/gap);const tmp=[];for(let gy=0;gy<rows;gy++){for(let gx=0;gx<cols;gx++){// Coverage: average alpha over a 3×3 sample of the cell.\nlet sum=0;for(let sy=0;sy<3;sy++){for(let sx=0;sx<3;sx++){const x=Math.min(w-1,Math.floor(gx*gap+(sx+.5)*gap/3));const y=Math.min(h-1,Math.floor(gy*gap+(sy+.5)*gap/3));sum+=img[(y*w+x)*4+3];}}const cov=sum/(9*255);if(cov<.06)continue;const hx=gx*gap+gap/2;const hy=gy*gap+gap/2;tmp.push(hx,hy,0,0,hx,hy,hwfRadius(cov,gap));}}dots=new Float32Array(tmp);count=tmp.length/7;// A fixed tile of print grain, drawn once and laid over every frame.\nif(!grainTile){grainTile=document.createElement(\"canvas\");grainTile.width=256;grainTile.height=256;const g=grainTile.getContext(\"2d\");if(g){const id=g.createImageData(256,256);for(let i=0;i<id.data.length;i+=4){const v=Math.random()*255;id.data[i]=id.data[i+1]=id.data[i+2]=v;id.data[i+3]=Math.random()<.5?0:255;}g.putImageData(id,0,0);}grainPattern=ctx.createPattern(grainTile,\"repeat\");}awake=true;return true;};const draw=now=>{const o=opts.current;ctx.setTransform(dpr,0,0,dpr,0,0);ctx.fillStyle=o.colors.background;ctx.fillRect(0,0,w,h);const r=o.interactive&&!reduced&&!isStatic?Math.max(0,o.radius):0;const ringAge=ring.t<0?1e9:now-ring.t;const ringR=ringAge*.9;let moving=false;for(let i=0;i<count;i++){const j=i*7;let x=dots[j];let y=dots[j+1];let vx=dots[j+2];let vy=dots[j+3];const hx=dots[j+4];const hy=dots[j+5];if(!reduced&&!isStatic){if(ringAge<900){const dx=hx-ring.x;const dy=hy-ring.y;const d=Math.sqrt(dx*dx+dy*dy)+.001;const band=1-Math.min(1,Math.abs(d-ringR)/26);if(band>0){const f=band*3.2*(1-ringAge/900);vx+=dx/d*f;vy+=dy/d*f;}}const s=hwfStep(x,y,vx,vy,hx,hy,px,py,r);x=s[0];y=s[1];vx=s[2];vy=s[3];if(Math.abs(vx)+Math.abs(vy)>.02||Math.abs(x-hx)+Math.abs(y-hy)>.05)moving=true;else{x=hx;y=hy;vx=0;vy=0;}dots[j]=x;dots[j+1]=y;dots[j+2]=vx;dots[j+3]=vy;}const k=hwfWarmth(x,y,hx,hy,28);ctx.fillStyle=k>.02?\"rgb(\"+Math.round(ink[0]+(warm[0]-ink[0])*k)+\",\"+Math.round(ink[1]+(warm[1]-ink[1])*k)+\",\"+Math.round(ink[2]+(warm[2]-ink[2])*k)+\")\":o.colors.ink;ctx.beginPath();ctx.arc(x,y,dots[j+6],0,6.2832);ctx.fill();}if(grainPattern&&o.grain>0){ctx.globalAlpha=Math.min(1,o.grain)*.09;ctx.globalCompositeOperation=\"overlay\";if(grainPattern){ctx.fillStyle=grainPattern;ctx.fillRect(0,0,w,h);}ctx.globalAlpha=1;ctx.globalCompositeOperation=\"source-over\";}// Sleep once everything is home and nothing is pushing.\nawake=!reduced&&!isStatic&&(moving||o.interactive&&ringAge<900);};const loop=now=>{raf=0;if(!visible)return;draw(now);if(awake)raf=requestAnimationFrame(loop);};const wake=()=>{awake=true;if(!raf&&visible)raf=requestAnimationFrame(loop);};const toLocal=e=>{const b=canvas.getBoundingClientRect();return[e.clientX-b.left,e.clientY-b.top];};const onMove=e=>{if(!opts.current.interactive||reduced||isStatic)return;const p=toLocal(e);px=p[0];py=p[1];wake();};const onLeave=()=>{px=-1e5;py=-1e5;wake();};const onDown=e=>{if(!opts.current.interactive||reduced||isStatic)return;if(e.target.closest(\"a,button\"))return;const p=toLocal(e);ring={x:p[0],y:p[1],t:performance.now()};wake();};layout();draw(performance.now());wake();root.addEventListener(\"pointermove\",onMove);root.addEventListener(\"pointerleave\",onLeave);root.addEventListener(\"pointerdown\",onDown);const ro=new ResizeObserver(()=>{if(layout())wake();});ro.observe(root);const io=new IntersectionObserver(entries=>{inView=entries[0]?entries[0].isIntersecting:true;visible=inView&&!document.hidden;if(visible)wake();else{cancelAnimationFrame(raf);raf=0;}});io.observe(root);const onVisibility=()=>{visible=inView&&!document.hidden;if(visible)wake();else{cancelAnimationFrame(raf);raf=0;}};document.addEventListener(\"visibilitychange\",onVisibility);const onFonts=()=>{layout(true);wake();};document.fonts?.addEventListener(\"loadingdone\",onFonts);const onMotion=()=>{reduced=motionQuery.matches;if(reduced){px=py=-1e5;ring.t=-1;for(let i=0;i<dots.length;i+=7){dots[i]=dots[i+4];dots[i+1]=dots[i+5];dots[i+2]=dots[i+3]=0;}}wake();};motionQuery.addEventListener?.(\"change\",onMotion);return()=>{document.fonts?.removeEventListener(\"loadingdone\",onFonts);motionQuery.removeEventListener?.(\"change\",onMotion);document.removeEventListener(\"visibilitychange\",onVisibility);cancelAnimationFrame(raf);ro.disconnect();io.disconnect();root.removeEventListener(\"pointermove\",onMove);root.removeEventListener(\"pointerleave\",onLeave);root.removeEventListener(\"pointerdown\",onDown);};},[key,isStatic]);const toTop=()=>{window.scrollTo({top:0,behavior:window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches?\"auto\":\"smooth\"});};return /*#__PURE__*/_jsxs(\"footer\",{ref:rootRef,className:\"hwf-root \"+className,style:{...style,height:\"auto\",\"--hwf-bg\":colors.background,\"--hwf-ink\":colors.ink,\"--hwf-mono\":monoFamily},children:[/*#__PURE__*/_jsx(\"style\",{children:HWF_CSS}),/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,\"aria-hidden\":\"true\"}),/*#__PURE__*/_jsx(\"span\",{className:\"hwf-sr\",children:wordmark}),/*#__PURE__*/_jsxs(\"div\",{className:\"hwf-top\",children:[/*#__PURE__*/_jsxs(\"div\",{className:\"hwf-brand\",children:[/*#__PURE__*/_jsx(\"strong\",{children:label}),/*#__PURE__*/_jsx(\"span\",{children:meta}),/*#__PURE__*/_jsxs(\"small\",{className:\"hwf-copyright\",children:[\"\\xa9 \",new Date().getFullYear(),\" OptimaWebAI (Pty) Ltd.\",/*#__PURE__*/_jsx(\"br\",{}),\"All rights reserved.\"]})]}),resolvedColumns.map(col=>/*#__PURE__*/_jsxs(\"nav\",{className:\"hwf-col\",\"aria-label\":col.title,children:[/*#__PURE__*/_jsx(\"h3\",{children:col.title}),/*#__PURE__*/_jsx(\"ul\",{children:col.links.map(l=>/*#__PURE__*/_jsx(\"li\",{children:/*#__PURE__*/_jsx(Link,{href:l.href||\"#\",children:/*#__PURE__*/_jsx(\"a\",{children:l.label})})},l.label))})]},col.title))]}),/*#__PURE__*/_jsx(\"div\",{className:\"hwf-rule\",children:backToTop?/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:\"hwf-up\",onClick:toTop,children:[\"Back to top\",/*#__PURE__*/_jsx(\"svg\",{viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"1.8\",strokeLinecap:\"round\",strokeLinejoin:\"round\",\"aria-hidden\":\"true\",children:/*#__PURE__*/_jsx(\"path\",{d:\"M12 20V4M5 11l7-7 7 7\"})})]}):null})]});}const footerLinkControl={type:ControlType.Object,controls:{label:{type:ControlType.String,title:\"Label\"},href:{type:ControlType.Link,title:\"Link\"}}};addPropertyControls(OptimaHalftoneFooter,{wordmark:{type:ControlType.String,title:\"Wordmark\",defaultValue:\"OptimaWebAI\"},label:{type:ControlType.String,title:\"Agency\",defaultValue:\"OptimaWebAI\"},meta:{type:ControlType.String,title:\"Studio line\",defaultValue:\"Web design & digital solutions \\xb7 South Africa\"},exploreLinks:{type:ControlType.Array,title:\"Explore links\",defaultValue:DEFAULT_COLUMNS[0].links,control:footerLinkControl},serviceLinks:{type:ControlType.Array,title:\"Service links\",defaultValue:DEFAULT_COLUMNS[1].links,control:footerLinkControl},policyLinks:{type:ControlType.Array,title:\"Policy links\",defaultValue:DEFAULT_COLUMNS[2].links,control:footerLinkControl},contactLinks:{type:ControlType.Array,title:\"Contact links\",defaultValue:DEFAULT_COLUMNS[3].links,control:footerLinkControl},preset:{type:ControlType.Enum,title:\"Palette\",options:[\"night\",\"paper\",\"ember\",\"cobalt\"],defaultValue:\"night\"},dotGap:{type:ControlType.Number,title:\"Dot spacing\",min:3,max:12,step:1,defaultValue:6},radius:{type:ControlType.Number,title:\"Interaction size\",min:20,max:180,defaultValue:80},crop:{type:ControlType.Number,title:\"Word crop\",min:0,max:.6,step:.01,defaultValue:.2},grain:{type:ControlType.Number,title:\"Grain\",min:0,max:1,step:.1,defaultValue:.5},interactive:{type:ControlType.Boolean,title:\"Interactive\",defaultValue:true},backToTop:{type:ControlType.Boolean,title:\"Back to top\",defaultValue:true}});\nexport const __FramerMetadata__ = {\"exports\":{\"HalftonePalette\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FooterLink\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"default\":{\"type\":\"reactComponent\",\"name\":\"OptimaHalftoneFooter\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\",\"framerIntrinsicWidth\":\"1440\",\"framerSupportedLayoutHeight\":\"auto\",\"framerIntrinsicHeight\":\"560\"}},\"hwfStep\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"hwfFitSize\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"hwfRadius\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FooterColumn\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HalftoneWordmarkFooterProps\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"hwfHex\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HalftonePreset\":{\"type\":\"tsType\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"hwfWarmth\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./OptimaHalftoneFooter.map","import{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType,Link}from\"framer\";const SERVICES=[{label:\"Web Design\",href:\"/web-design\"},{label:\"E-commerce Web Design\",href:\"/ecommerce-web-design\"},{label:\"Shopify Web Design\",href:\"/shopify-web-design\"},{label:\"Custom Web Development\",href:\"/custom-web-development\"},{label:\"Website Redesign\",href:\"/website-redesign\"},{label:\"Interactive Web Design\",href:\"/interactive-web-design\"},{label:\"Landing Page Design\",href:\"/landing-page-design\"}];const LINKS=[{label:\"Home\",href:\"/\"},{label:\"About\",href:\"/about\"},{label:\"Our Work\",href:\"/projects\"},{label:\"Experience Lab\",href:\"/experience-lab\"},{label:\"Pricing\",href:\"/pricing\"}];const CTA={label:\"Start a Project\",href:\"/contact\"};function NavigationLink({href,children,...props}){return /*#__PURE__*/_jsx(Link,{href:href,children:/*#__PURE__*/_jsx(\"a\",{...props,href:href,children:children})});}const norm=p=>(p||\"/\").replace(/\\/+$/,\"\")||\"/\";const isActive=(cur,href)=>{if(!cur)return false;const a=norm(cur),b=norm(href);return b===\"/\"?a===\"/\":a===b||a.startsWith(b+\"/\");};/**\n * @framerSupportedLayoutWidth any\n * @framerSupportedLayoutHeight fixed\n */export default function OptimaPillNavigation(props){const{style,accentColor=\"#325CFF\",tone=\"light\"}=props;const[path,setPath]=React.useState(\"\");const[open,setOpen]=React.useState(false);const[svcOpen,setSvcOpen]=React.useState(false);const[mSvcOpen,setMSvcOpen]=React.useState(false);const[scrolled,setScrolled]=React.useState(false);const wrapRef=React.useRef(null);const timer=React.useRef(null);React.useEffect(()=>{if(typeof window===\"undefined\")return;const upd=()=>setPath(norm(window.location.pathname));upd();const onScroll=()=>setScrolled(window.scrollY>8);onScroll();window.addEventListener(\"popstate\",upd);let routeTimers=[];const clearRouteTimers=()=>{routeTimers.forEach(id=>window.clearTimeout(id));routeTimers=[];};const onClick=event=>{const link=event.target?.closest?.(\"a[href]\");if(!link||link.origin!==window.location.origin||link.target===\"_blank\")return;clearRouteTimers();routeTimers=[window.setTimeout(upd,80),window.setTimeout(upd,400)];};document.addEventListener(\"click\",onClick);window.addEventListener(\"scroll\",onScroll,{passive:true});return()=>{window.removeEventListener(\"popstate\",upd);window.removeEventListener(\"scroll\",onScroll);document.removeEventListener(\"click\",onClick);clearRouteTimers();if(timer.current!==null)window.clearTimeout(timer.current);};},[]);React.useEffect(()=>{setOpen(false);setSvcOpen(false);setMSvcOpen(false);},[path]);React.useEffect(()=>{if(typeof document===\"undefined\")return;const out=e=>{if(wrapRef.current&&!wrapRef.current.contains(e.target))setSvcOpen(false);};const esc=e=>{if(e.key===\"Escape\"){setOpen(false);setSvcOpen(false);setMSvcOpen(false);}};document.addEventListener(\"mousedown\",out);document.addEventListener(\"keydown\",esc);const previousOverflow=document.body.style.overflow;if(open)document.body.style.overflow=\"hidden\";return()=>{document.removeEventListener(\"mousedown\",out);document.removeEventListener(\"keydown\",esc);if(open)document.body.style.overflow=previousOverflow;};},[open]);React.useEffect(()=>{const mobileQuery=window.matchMedia(\"(max-width:1060px)\");const closeAtBreakpoint=()=>{setOpen(false);setSvcOpen(false);setMSvcOpen(false);};mobileQuery.addEventListener?.(\"change\",closeAtBreakpoint);return()=>mobileQuery.removeEventListener?.(\"change\",closeAtBreakpoint);},[]);const svcActive=SERVICES.some(s=>isActive(path,s.href));const close=()=>{setOpen(false);setSvcOpen(false);setMSvcOpen(false);};const enter=()=>{if(!window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches)return;if(timer.current!==null)window.clearTimeout(timer.current);timer.current=null;setSvcOpen(true);};const leave=()=>{if(timer.current!==null)window.clearTimeout(timer.current);timer.current=window.setTimeout(()=>{timer.current=null;setSvcOpen(false);},140);};return /*#__PURE__*/_jsxs(\"div\",{className:\"ow-nav-slot\",style:{position:\"relative\",width:\"100%\",height:76,...style},\"data-tone\":tone,children:[/*#__PURE__*/_jsx(\"style\",{suppressHydrationWarning:true,children:css.replaceAll(\"__ACC__\",accentColor)}),/*#__PURE__*/_jsxs(\"div\",{className:\"ow-nav\"+(scrolled?\" is-scrolled\":\"\")+(open?\" is-open\":\"\"),ref:wrapRef,children:[/*#__PURE__*/_jsxs(\"div\",{className:\"ow-bar\",children:[/*#__PURE__*/_jsxs(NavigationLink,{className:\"ow-brand\",href:\"/\",onClick:close,\"aria-label\":\"OptimaWebAI home\",children:[\"OPTIMA\",/*#__PURE__*/_jsx(\"span\",{children:\"WEBAI\"})]}),/*#__PURE__*/_jsxs(\"nav\",{className:\"ow-links\",\"aria-label\":\"Main navigation\",children:[LINKS.slice(0,2).map(l=>/*#__PURE__*/_jsx(NavigationLink,{href:l.href,className:\"ow-link\",\"data-active\":isActive(path,l.href),\"aria-current\":isActive(path,l.href)?\"page\":undefined,children:l.label},l.href)),/*#__PURE__*/_jsxs(\"div\",{className:\"ow-svc\",onMouseEnter:enter,onMouseLeave:leave,children:[/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:\"ow-link ow-svc-btn\",\"data-active\":svcActive,\"aria-expanded\":svcOpen,\"aria-controls\":\"ow-svc-panel\",onClick:event=>{const hoverPointer=window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches;if(hoverPointer&&event.detail>0){setSvcOpen(true);}else{setSvcOpen(value=>!value);}},children:[\"Services \",/*#__PURE__*/_jsx(\"i\",{\"aria-hidden\":\"true\"})]}),/*#__PURE__*/_jsxs(\"div\",{id:\"ow-svc-panel\",className:\"ow-panel\",hidden:!svcOpen,children:[/*#__PURE__*/_jsx(\"p\",{className:\"ow-panel-label\",children:\"Services\"}),SERVICES.map((s,i)=>/*#__PURE__*/_jsxs(NavigationLink,{href:s.href,onClick:close,\"data-active\":isActive(path,s.href),children:[/*#__PURE__*/_jsx(\"span\",{className:\"ow-num\",children:String(i+1).padStart(2,\"0\")}),s.label,/*#__PURE__*/_jsx(\"span\",{className:\"ow-arr ow-css-arrow\",\"aria-hidden\":\"true\"})]},s.href))]})]}),LINKS.slice(2).map(l=>/*#__PURE__*/_jsx(NavigationLink,{href:l.href,className:\"ow-link\",\"data-active\":isActive(path,l.href),\"aria-current\":isActive(path,l.href)?\"page\":undefined,children:l.label},l.href))]}),/*#__PURE__*/_jsxs(NavigationLink,{className:\"ow-cta\",href:CTA.href,onClick:close,children:[CTA.label,\" \",/*#__PURE__*/_jsx(\"span\",{className:\"ow-css-arrow\",\"aria-hidden\":\"true\"})]}),/*#__PURE__*/_jsx(\"button\",{type:\"button\",className:\"ow-toggle\",\"aria-label\":open?\"Close menu\":\"Open menu\",\"aria-expanded\":open,\"aria-controls\":\"ow-mobile\",onClick:()=>setOpen(v=>!v),children:open?\"Close\":\"Menu\"})]}),/*#__PURE__*/_jsxs(\"div\",{id:\"ow-mobile\",className:\"ow-mobile\",hidden:!open,children:[LINKS.slice(0,2).map(l=>/*#__PURE__*/_jsx(NavigationLink,{href:l.href,onClick:close,className:\"ow-m-link\",\"data-active\":isActive(path,l.href),children:l.label},l.href)),/*#__PURE__*/_jsxs(\"button\",{type:\"button\",className:\"ow-m-link ow-m-svc\",\"aria-expanded\":mSvcOpen,onClick:()=>setMSvcOpen(v=>!v),children:[\"Services \",/*#__PURE__*/_jsx(\"span\",{children:mSvcOpen?\"−\":\"+\"})]}),/*#__PURE__*/_jsx(\"div\",{className:\"ow-m-sub\",hidden:!mSvcOpen,children:SERVICES.map(s=>/*#__PURE__*/_jsx(NavigationLink,{href:s.href,onClick:close,\"data-active\":isActive(path,s.href),children:s.label},s.href))}),LINKS.slice(2).map(l=>/*#__PURE__*/_jsx(NavigationLink,{href:l.href,onClick:close,className:\"ow-m-link\",\"data-active\":isActive(path,l.href),children:l.label},l.href)),/*#__PURE__*/_jsxs(NavigationLink,{className:\"ow-m-cta\",href:CTA.href,onClick:close,children:[CTA.label,\" \",/*#__PURE__*/_jsx(\"span\",{className:\"ow-css-arrow\",\"aria-hidden\":\"true\"})]})]})]})]});}addPropertyControls(OptimaPillNavigation,{accentColor:{type:ControlType.Color,title:\"Accent\",defaultValue:\"#325CFF\"},tone:{type:ControlType.Enum,title:\"Tone\",options:[\"light\",\"dark\"],optionTitles:[\"Light\",\"Dark\"],defaultValue:\"light\"}});const css=`\n.ow-nav{position:fixed;top:0;left:0;right:0;z-index:1200;background:rgba(246,246,243,.97);border-bottom:1px solid transparent;transition:border-color .3s;font-family:Inter,\"Inter var\",system-ui,sans-serif;color:#111}\n.ow-nav.is-scrolled{border-bottom-color:#DDDDDA}\n[data-tone=dark] .ow-nav{background:rgba(11,11,11,.82);color:#F6F6F3}\n[data-tone=dark] .ow-nav.is-scrolled{border-bottom-color:#2A2A2A}\n.ow-bar{max-width:1504px;margin:0 auto;height:76px;padding:0 32px;display:flex;align-items:center;gap:28px}\n.ow-brand{font-family:\"Hanken Grotesk\",\"Neue Montreal\",Inter,sans-serif;font-weight:700;font-size:20px;letter-spacing:-.035em;color:inherit;text-decoration:none;margin-right:auto;white-space:nowrap}\n.ow-brand span{color:__ACC__}\n.ow-links{display:flex;align-items:center;gap:30px}\n.ow-link{position:relative;display:inline-flex;align-items:center;gap:8px;padding:8px 0;border:0;background:none;color:inherit;font:500 14.5px/1 Inter,system-ui,sans-serif;text-decoration:none;cursor:pointer;opacity:.9;transition:opacity .25s,color .25s}\n.ow-link:hover{opacity:1}\n.ow-link::after{content:\"\";position:absolute;left:0;right:0;bottom:2px;height:1px;background:currentColor;transform:scaleX(0);transform-origin:right;transition:transform .5s cubic-bezier(.19,1,.22,1)}\n.ow-link:hover::after,.ow-link[data-active=true]::after{transform:scaleX(1);transform-origin:left}\n.ow-link[data-active=true]{opacity:1;color:__ACC__}\n.ow-svc{position:relative}\n.ow-svc-btn i{width:6px;height:6px;border-right:1.2px solid currentColor;border-bottom:1.2px solid currentColor;transform:translateY(-2px) rotate(45deg);transition:transform .3s}\n.ow-svc-btn[aria-expanded=true] i{transform:translateY(1px) rotate(225deg)}\n.ow-panel{position:absolute;top:calc(100% + 18px);left:-24px;width:360px;padding:18px 0 10px;border-radius:6px;box-shadow:0 24px 48px -28px rgba(17,17,17,.25);background:#F6F6F3;border:1px solid #DDDDDA;color:#111}\n[data-tone=dark] .ow-panel{background:#0B0B0B;border-color:#2A2A2A;color:#F6F6F3}\n.ow-panel[hidden]{display:none}\n.ow-panel-label{margin:0 24px 10px;font:500 11px/1.4 \"Geist Mono\",ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase;color:#6F6F6F}\n.ow-panel a{display:flex;align-items:center;gap:14px;padding:12px 24px;color:inherit;text-decoration:none;font:400 15px/1.3 Inter,system-ui,sans-serif;transition:background .2s,color .2s}\n.ow-panel a:hover,.ow-panel a[data-active=true]{color:__ACC__}\n.ow-num{font:400 11px/1 \"Geist Mono\",monospace;color:#8A8A86;width:18px}\n.ow-arr{margin-left:auto;opacity:0;transform:translate(-4px,4px);transition:.3s}\n.ow-panel a:hover .ow-arr{opacity:1;transform:none}\n.ow-cta{display:inline-flex;align-items:center;gap:10px;padding:13px 18px;border-radius:6px;background:#111;color:#F6F6F3;text-decoration:none;font:500 11.5px/1 \"Geist Mono\",ui-monospace,monospace;letter-spacing:.1em;text-transform:uppercase;white-space:nowrap;transition:background .3s,transform .3s}\n.ow-cta:hover{background:__ACC__;transform:translateY(-1px)}\n[data-tone=dark] .ow-cta{background:#F6F6F3;color:#111}\n.ow-toggle{display:none;border:0;background:none;color:inherit;font:500 12px/1 \"Geist Mono\",monospace;letter-spacing:.1em;text-transform:uppercase;min-height:44px;padding:0 4px;cursor:pointer}\n.ow-mobile{display:none}\n.ow-nav a:focus-visible,.ow-nav button:focus-visible{outline:2px solid __ACC__;outline-offset:3px}\n@media (max-width:1060px){\n .ow-links,.ow-cta{display:none}\n .ow-toggle{display:block}\n .ow-bar{padding:0 20px;height:68px}\n .ow-nav.is-open{bottom:0;background:#F6F6F3}\n [data-tone=dark] .ow-nav.is-open{background:#0B0B0B}\n .ow-mobile{display:flex;flex-direction:column;padding:24px 20px 40px;height:calc(100dvh - 68px);overflow-y:auto}\n .ow-mobile[hidden]{display:none}\n .ow-m-link{display:flex;justify-content:space-between;align-items:center;width:100%;padding:10px 0;border:0;background:none;color:inherit;text-align:left;text-decoration:none;font-family:\"Hanken Grotesk\",Inter,sans-serif;font-weight:500;font-size:clamp(34px,9vw,52px);letter-spacing:-.045em;line-height:1.05;cursor:pointer}\n .ow-m-link[data-active=true]{color:__ACC__}\n .ow-m-link span{font-size:.6em}\n .ow-m-sub{display:flex;flex-direction:column;gap:2px;padding:6px 0 14px}\n .ow-m-sub[hidden]{display:none}\n .ow-m-sub a{padding:9px 0;color:inherit;opacity:.75;text-decoration:none;font:400 17px/1.3 Inter,sans-serif}\n .ow-m-sub a[data-active=true]{color:__ACC__;opacity:1}\n .ow-m-cta{margin-top:auto;display:inline-flex;justify-content:center;padding:18px;border-radius:6px;background:#111;color:#F6F6F3;text-decoration:none;font:500 12px/1 \"Geist Mono\",monospace;letter-spacing:.1em;text-transform:uppercase}\n [data-tone=dark] .ow-m-cta{background:#F6F6F3;color:#111}\n}\n@media (prefers-reduced-motion:reduce){.ow-nav *{transition:none!important}}\n/* ===== OptimaWebAI site-wide layout + motion (targets layer names) ===== */\n[data-framer-name^=\"Card \\xb7\"]{transition:transform .6s cubic-bezier(.19,1,.22,1),box-shadow .6s cubic-bezier(.19,1,.22,1),border-color .3s}\n[data-framer-name=\"Card Image\"] img{transition:transform 1.2s cubic-bezier(.19,1,.22,1)}\n[data-framer-name=\"Arrow\"],[data-framer-name=\"Service Name\"]{transition:transform .6s cubic-bezier(.19,1,.22,1)}\n[data-framer-name^=\"Button \\xb7\"]{transition:background-color .35s,transform .35s}\n[data-framer-name^=\"Link \\xb7\"],[data-framer-name^=\"Footer Link\"]{transition:opacity .3s}\n@media (hover:hover){\n [data-framer-name^=\"Card \\xb7\"]:hover{transform:translateY(-6px);box-shadow:0 30px 60px -34px rgba(17,17,17,.3)}\n [data-framer-name^=\"Card \\xb7\"]:hover [data-framer-name=\"Card Image\"] img{transform:scale(1.045)}\n [data-framer-name^=\"Card \\xb7\"]:hover [data-framer-name=\"Arrow\"]{transform:translate(3px,-3px)}\n [data-framer-name^=\"Service Row\"]:hover [data-framer-name=\"Service Name\"]{transform:translateX(14px)}\n [data-framer-name^=\"Service Row\"]:hover [data-framer-name=\"Arrow\"]{transform:translateX(6px)}\n [data-framer-name^=\"Button \\xb7\"]:hover{background-color:__ACC__!important}\n}\n@media (min-width:810px) and (max-width:1199px){\n [data-framer-name^=\"Section \\xb7\"]{padding-left:32px!important;padding-right:32px!important;padding-top:112px!important;padding-bottom:112px!important}\n [data-framer-name=\"Section \\xb7 Hero\"]{padding-top:48px!important;padding-bottom:40px!important}\n [data-framer-name=\"Space XL\"]{height:80px!important}\n}\n@media (max-width:809px){\n [data-framer-name^=\"Section \\xb7\"]{padding-left:20px!important;padding-right:20px!important;padding-top:84px!important;padding-bottom:84px!important}\n [data-framer-name=\"Section \\xb7 Hero\"]{padding-top:28px!important;padding-bottom:36px!important}\n [data-framer-name=\"Section \\xb7 Footer\"]{padding-bottom:14px!important}\n [data-framer-name=\"Space XL\"]{height:60px!important}\n [data-framer-name=\"Space L\"]{height:36px!important}\n [data-framer-name=\"Space M\"]{height:22px!important}\n [data-framer-name=\"Indent\"]{display:none!important}\n [data-framer-name=\"Hero Actions\"]{justify-content:flex-start!important;gap:18px 22px!important}\n [data-framer-name=\"Hero Actions\"]>[data-framer-name^=\"Button \\xb7\"],[data-framer-name=\"CTA Actions\"]>[data-framer-name^=\"Button \\xb7\"]{width:100%!important;justify-content:center!important}\n [data-framer-name=\"CTA Actions\"]{width:100%!important}\n [data-framer-name^=\"Service Row\"]{padding-top:24px!important;padding-bottom:24px!important;gap:10px 16px!important}\n [data-framer-name^=\"Service Row\"] [data-framer-name=\"Arrow\"]{display:none!important}\n [data-framer-name=\"Footer Nav\"]{gap:40px 20px!important}\n [data-framer-name^=\"Footer Col\"]{min-width:calc(50% - 10px)!important;flex:1 1 calc(50% - 10px)!important}\n [data-framer-name=\"Footer Col \\xb7 Brand\"]{min-width:100%!important;flex-basis:100%!important}\n [data-framer-name=\"Socials\"]{gap:14px 20px!important}\n}\n@media (prefers-reduced-motion:reduce){[data-framer-name]{transition:none!important}}\n\n/* Shared navigation colour update; page content styles are unchanged. */\n.ow-nav,[data-tone] .ow-nav,.ow-nav.is-open,[data-tone] .ow-nav.is-open{background:#171717;color:#fff}\n.ow-nav .ow-brand,.ow-nav .ow-brand span,.ow-nav .ow-link,.ow-nav .ow-link[data-active=true],.ow-nav .ow-toggle,.ow-nav .ow-m-link,.ow-nav .ow-m-link[data-active=true]{color:#fff}\n.ow-nav .ow-panel,[data-tone] .ow-nav .ow-panel{background:#171717;color:#fff;border-color:#393939}\n.ow-nav .ow-panel a:hover,.ow-nav .ow-panel a[data-active=true],.ow-nav .ow-m-sub a[data-active=true]{color:#fff}\n.ow-nav .ow-cta,[data-tone] .ow-nav .ow-cta,.ow-nav .ow-m-cta,[data-tone] .ow-nav .ow-m-cta{background:#fff;color:#111;border-radius:20px}\n.ow-nav .ow-cta:hover{background:#ededed;color:#111}\n.ow-nav a:focus-visible,.ow-nav button:focus-visible{outline-color:#fff}\n\n/* Navigation-only spacing and CSS arrows. */\n.ow-css-arrow{position:relative;display:inline-block;flex:0 0 16px;width:16px;height:16px;vertical-align:middle}\n.ow-css-arrow::before{content:\"\";position:absolute;left:0;top:7px;width:14px;height:1.5px;background:currentColor}\n.ow-css-arrow::after{content:\"\";position:absolute;right:1px;top:4px;width:6px;height:6px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor;transform:rotate(45deg)}\n.ow-cta,.ow-m-cta{gap:12px;align-items:center}\n.ow-bar{gap:24px}.ow-links{gap:24px}\n@media(max-width:1060px){\n .ow-nav-slot{height:68px!important}\n .ow-bar{padding:0 20px;gap:16px}\n .ow-toggle{min-width:44px;padding:0 8px}\n .ow-mobile{box-sizing:border-box;padding:16px 20px 24px;gap:4px;height:calc(100dvh - 68px);overscroll-behavior:contain;-webkit-overflow-scrolling:touch}\n .ow-m-link{box-sizing:border-box;min-height:48px;padding:10px 0;font-size:clamp(28px,7.5vw,38px);line-height:1.12;letter-spacing:-.03em;flex-shrink:0}\n .ow-m-sub{padding:4px 0 12px 12px;gap:2px}\n .ow-m-sub a{min-height:44px;box-sizing:border-box;display:flex;align-items:center;padding:8px 0;font-size:16px;line-height:1.4}\n .ow-nav .ow-m-cta{box-sizing:border-box;min-height:48px;margin-top:20px;padding:14px 18px;flex-shrink:0}\n}\n@media(max-width:360px){.ow-bar{padding:0 16px}.ow-brand{font-size:18px}.ow-mobile{padding-left:16px;padding-right:16px}}\n\n\n/* Shared native-page arrow geometry and mobile text containment. */\n[data-framer-name=\"Arrow\"], [data-framer-name=\"↗\"]{position:relative!important;min-width:18px!important;min-height:18px!important;flex-shrink:0!important}\n[data-framer-name=\"Arrow\"] p,[data-framer-name=\"↗\"] p{font-size:0!important;color:transparent!important}\n[data-framer-name=\"Arrow\"]::before,[data-framer-name=\"↗\"]::before{content:\"\";position:absolute;left:50%;top:50%;width:15px;height:1.5px;background:currentColor;transform:translate(-50%,-50%) rotate(-45deg)}\n[data-framer-name=\"Arrow\"]::after,[data-framer-name=\"↗\"]::after{content:\"\";position:absolute;left:calc(50% + 1px);top:calc(50% - 6px);width:7px;height:7px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor}\n[data-framer-name^=\"Service Row\"] [data-framer-name=\"Arrow\"]::before{transform:translate(-50%,-50%)}\n[data-framer-name^=\"Service Row\"] [data-framer-name=\"Arrow\"]::after{left:calc(50% + 1px);top:calc(50% - 4px);transform:rotate(45deg)}\n[data-framer-name=\"Section \\xb7 Selected Work\"] [data-framer-name=\"Work Top\"]{display:contents!important}\n[data-framer-name=\"Section \\xb7 Selected Work\"] [data-framer-name=\"Link \\xb7 View all projects\"]{order:99!important;align-self:flex-start!important;margin-top:32px!important;min-height:44px!important;display:flex!important;align-items:center!important}\n[data-framer-name=\"Section \\xb7 Footer\"] p{line-height:1.5!important}\n[data-framer-name=\"Section \\xb7 Footer\"] [data-framer-name=\"Button \\xb7 Start your project\"]{padding:12px 18px!important;min-height:44px!important;height:auto!important;gap:12px!important;width:fit-content!important;max-width:100%!important}\n[data-framer-name=\"Section \\xb7 Footer\"] [data-framer-name=\"Button \\xb7 Start your project\"] p{font-size:13px!important}\n[data-framer-name=\"Section \\xb7 Footer\"] [data-framer-name=\"Button \\xb7 Start your project\"] [data-framer-name=\"↗\"] p{font-size:0!important}\n@media(max-width:809px){\n [data-framer-name=\"Section \\xb7 Footer\"] [data-framer-name=\"CTA Actions\"]{gap:20px!important}\n [data-framer-name=\"Card \\xb7 Info\"],[data-framer-name=\"Card Body\"]{min-width:0!important}\n [data-framer-name=\"Card \\xb7 Info\"] p,[data-framer-name=\"Card \\xb7 Info\"] h3,[data-framer-name=\"Card Body\"] p,[data-framer-name=\"Card Body\"] h3{overflow-wrap:anywhere!important;max-width:100%!important}\n}\n\n\n/* CSS-drawn arrows beside native footer labels; no emoji assets. */\n[data-framer-name=\"Footer Email\"] [data-framer-name=\"optimawebai@gmail.com ↗\"] p,[data-framer-name=\"Footer Phone\"] [data-framer-name=\"+27 81 500 1968 ↗\"] p,[data-framer-name=\"Socials\"] a p{position:relative;padding-right:22px!important;box-sizing:border-box}\n[data-framer-name=\"Footer Email\"] [data-framer-name=\"optimawebai@gmail.com ↗\"] p::before,[data-framer-name=\"Footer Phone\"] [data-framer-name=\"+27 81 500 1968 ↗\"] p::before,[data-framer-name=\"Socials\"] a p::before{content:\"\";position:absolute;right:1px;top:50%;width:12px;height:1.5px;background:currentColor;transform:translateY(-50%) rotate(-45deg)}\n[data-framer-name=\"Footer Email\"] [data-framer-name=\"optimawebai@gmail.com ↗\"] p::after,[data-framer-name=\"Footer Phone\"] [data-framer-name=\"+27 81 500 1968 ↗\"] p::after,[data-framer-name=\"Socials\"] a p::after{content:\"\";position:absolute;right:0;top:calc(50% - 6px);width:6px;height:6px;border-top:1.5px solid currentColor;border-right:1.5px solid currentColor}\n[data-framer-name=\"Socials\"] a[href=\"/\"] p::before{transform:translateY(-50%) rotate(-90deg)}\n[data-framer-name=\"Socials\"] a[href=\"/\"] p::after{right:3px;transform:rotate(-45deg)}\n\n\n:is([data-framer-name=\"Card Action\"],[data-framer-name=\"Project Action\"]) [data-framer-name=\"Arrow\"],[data-framer-name=\"Button \\xb7 Start your project\"] [data-framer-name=\"↗\"]{color:#171717!important}\n[data-framer-name=\"Section \\xb7 Selected Work\"] [data-framer-name=\"Link \\xb7 View all projects\"]{border:none!important;text-decoration:underline!important;text-underline-offset:5px!important}\n@media(max-width:809px){\n [data-framer-name=\"Project Metadata\"]{flex-wrap:wrap!important;gap:8px!important;max-width:100%!important;min-width:0!important}\n [data-framer-name=\"Project Metadata\"]>*{max-width:100%!important;min-width:0!important}\n [data-framer-name=\"Ready to turn your idea into s\"]{width:100%!important;max-width:100%!important;min-width:0!important}\n [data-framer-name=\"Ready to turn your idea into s\"] h2{font-size:clamp(30px,8vw,44px)!important;overflow-wrap:anywhere!important}\n}\n\n\n@media(max-width:809px){\n [data-framer-name=\"Section \\xb7 Footer\"] [data-framer-name=\"Footer Nav\"] a{width:100%!important;align-self:stretch!important}\n [data-framer-name=\"Section \\xb7 Footer\"] [data-framer-name=\"Footer Nav\"] a [data-framer-component-type=\"RichTextContainer\"]{width:100%!important}\n [data-framer-name=\"Footer Bottom\"]{flex-direction:column!important;align-items:flex-start!important;gap:24px!important}\n [data-framer-name=\"Footer Bottom\"] [data-framer-name=\"Copyright\"]{width:100%!important}\n [data-framer-name=\"Footer Bottom\"] [data-framer-name=\"Socials\"]{width:100%!important;flex-wrap:wrap!important;gap:16px!important;justify-content:flex-start!important}\n [data-framer-name=\"Socials\"] a{width:auto!important;min-width:max-content!important;min-height:44px!important;display:flex!important;align-items:center!important}\n [data-framer-name=\"Socials\"] a [data-framer-component-type=\"RichTextContainer\"]{width:auto!important}\n [data-framer-name=\"Socials\"] a p{white-space:nowrap!important;overflow-wrap:normal!important}\n}\n\n\n[data-framer-name=\"Socials\"] [data-framer-name=\"Link \\xb7 Back to top ↑\"] p::before{transform:translateY(-50%) rotate(-90deg)}\n[data-framer-name=\"Socials\"] [data-framer-name=\"Link \\xb7 Back to top ↑\"] p::after{right:3px;transform:rotate(-45deg)}\n@media(max-width:809px){[data-framer-name=\"Footer Nav\"] [data-framer-component-type=\"RichTextContainer\"]{width:100%!important;min-width:0!important}}\n\n\n@media(max-width:380px){\n [data-framer-name=\"Section \\xb7 Footer\"] [data-framer-name=\"Wordmark\"]{width:100%!important;max-width:100%!important;min-width:0!important;overflow:hidden!important}\n [data-framer-name=\"Section \\xb7 Footer\"] [data-framer-name=\"Wordmark\"] p{font-size:clamp(28px,8.5vw,38px)!important;letter-spacing:-.04em!important;white-space:nowrap!important}\n [data-framer-name=\"Section \\xb7 Footer\"] [data-framer-name^=\"Your website could be live in\"]{width:100%!important;max-width:100%!important;white-space:normal!important}\n}\n\n\n[data-framer-name=\"Section \\xb7 Selected Work\"] [data-framer-name=\"Link \\xb7 View all projects\"]::after{display:none!important}\n\n\n/* Unified rounded vector arrows, coloured through CSS; never emoji glyphs. */\n.ow-css-arrow,[data-framer-name=\"Arrow\"],[data-framer-name=\"↗\"]{width:24px!important;height:24px!important;min-width:24px!important;min-height:24px!important;flex:0 0 24px!important}\n.ow-css-arrow::before,[data-framer-name=\"Arrow\"]::before,[data-framer-name=\"↗\"]::before,[data-framer-name^=\"Service Row\"] [data-framer-name=\"Arrow\"]::before{content:\"\";position:absolute;inset:0!important;width:24px!important;height:24px!important;background:currentColor;transform:none!important;-webkit-mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12h16m-7-7 7 7-7 7' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\") center/contain no-repeat;mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M4 12h16m-7-7 7 7-7 7' fill='none' stroke='black' stroke-width='2.4' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\") center/contain no-repeat}\n.ow-css-arrow::after,[data-framer-name=\"Arrow\"]::after,[data-framer-name=\"↗\"]::after{display:none!important}\n[data-framer-name=\"Card \\xb7 Project\"],[data-framer-name=\"Card \\xb7 Project\"]:visited{color:#171717!important;text-decoration:none!important}\n[data-framer-name=\"Card \\xb7 Project\"] [data-framer-name=\"Project Content\"]{background:#fff!important;color:#171717!important}\n[data-framer-name=\"Card \\xb7 Project\"] :is([data-framer-name=\"Card Action\"],[data-framer-name=\"Project Action\"]){color:#171717!important}\n@media(hover:hover){[data-framer-name^=\"Card \\xb7\"]:hover [data-framer-name=\"Arrow\"]{transform:translateX(4px)}}\n/* Pricing deck: existing editable content and links retained. */\n[data-framer-name=\"Package Grid\"]{display:grid!important;grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:28px!important;align-items:stretch!important;perspective:1600px}\n[data-framer-name=\"Card \\xb7 Package\"]{--package-ink:#171717;background:#bce8e2!important;color:var(--package-ink)!important;border-radius:16px!important;padding:28px!important;min-width:0!important;width:100%!important;height:auto!important;border:1px solid rgba(0,0,0,.16)!important;box-shadow:0 8px 0 rgba(0,0,0,.07),0 18px 36px -24px rgba(0,0,0,.35);transition:transform .35s ease,box-shadow .35s ease!important;transform-origin:50% 85%}\n[data-framer-name=\"Card \\xb7 Package\"]:nth-child(2){background:#d3c5eb!important}\n[data-framer-name=\"Card \\xb7 Package\"]:nth-child(3){background:#164e63!important;--package-ink:#fff}\n[data-framer-name=\"Card \\xb7 Package\"]:nth-child(4){background:#f26735!important}\n[data-framer-name=\"Card \\xb7 Package\"]:nth-child(5){background:#171717!important;--package-ink:#fff}\n[data-framer-name=\"Card \\xb7 Package\"]:nth-child(6){background:#185a46!important;--package-ink:#fff}\n[data-framer-name=\"Card \\xb7 Package\"] p,[data-framer-name=\"Card \\xb7 Package\"] h3{color:var(--package-ink)!important}\n[data-framer-name=\"Card \\xb7 Package\"] h3{font-weight:700!important;letter-spacing:-.035em!important;font-size:30px!important;line-height:1.12!important}\n[data-framer-name=\"Card \\xb7 Package\"] [data-framer-name=\"Badge\"]{background:rgba(255,255,255,.18)!important;border:1px solid currentColor!important}\n[data-framer-name=\"Card \\xb7 Package\"] [data-framer-name^=\"Button \\xb7\"]{background:#171717!important;border:1px solid rgba(255,255,255,.4)!important;border-radius:24px!important;margin-top:auto!important;min-height:48px!important;white-space:normal!important;color:#fff!important}\n[data-framer-name=\"Card \\xb7 Package\"] [data-framer-name^=\"Button \\xb7\"] p,[data-framer-name=\"Card \\xb7 Package\"] [data-framer-name^=\"Button \\xb7\"] [data-framer-name=\"↗\"]{color:#fff!important}\n@media(min-width:768px) and (max-width:1100px){[data-framer-name=\"Package Grid\"]{grid-template-columns:repeat(3,minmax(0,1fr))!important;gap:16px!important}[data-framer-name=\"Card \\xb7 Package\"]{padding:18px!important}[data-framer-name=\"Card \\xb7 Package\"] h3{font-size:24px!important}}\n@media(max-width:767px){[data-framer-name=\"Package Grid\"]{grid-template-columns:minmax(0,1fr)!important;gap:24px!important}[data-framer-name=\"Card \\xb7 Package\"]{padding:24px!important;transform:none!important}}\n@media(prefers-reduced-motion:reduce){[data-framer-name=\"Card \\xb7 Package\"]{transform:none!important;transition:none!important}}\n\n[data-framer-name=\"Card \\xb7 Package\"] [data-framer-name=\"Space S\"]{height:12px!important;flex-shrink:0!important}\n[data-framer-name=\"Card \\xb7 Package\"] [data-framer-name=\"Space M\"]{height:20px!important;flex-shrink:0!important}\n[data-framer-name=\"Card \\xb7 Package\"] [data-framer-name=\"Included List\"] p{font-size:13px!important;line-height:1.5!important}\n/* Separate pricing cards, and readable native service cards at every breakpoint. */\n[data-framer-name=\"Package Grid\"]>[data-framer-name=\"Card \\xb7 Package\"],[data-framer-name=\"Package Grid\"]>[data-framer-name=\"Card \\xb7 Package\"]:hover{transform:none!important;margin-left:0!important;min-width:0!important;box-sizing:border-box!important}\n[data-framer-name=\"Card \\xb7 Package\"] [data-framer-name^=\"Button \\xb7\"]{width:100%!important;box-sizing:border-box!important;gap:8px!important;padding:12px!important}\n[data-framer-name=\"Card \\xb7 Package\"] [data-framer-name^=\"Button \\xb7\"] p{white-space:normal!important;overflow-wrap:normal!important;line-height:1.4!important}\n@media(max-width:1199px){\n [data-framer-name=\"Cards\"]:has(>[data-framer-name=\"Card \\xb7 Info\"]){display:grid!important;grid-template-columns:repeat(2,minmax(0,1fr))!important;gap:20px!important;width:100%!important;min-width:0!important}\n [data-framer-name=\"Cards\"]>[data-framer-name=\"Card \\xb7 Info\"]{width:100%!important;min-width:0!important;max-width:100%!important;height:auto!important;box-sizing:border-box!important}\n}\n@media(max-width:809px){\n [data-framer-name=\"Cards\"]:has(>[data-framer-name=\"Card \\xb7 Info\"]){grid-template-columns:minmax(0,1fr)!important;gap:16px!important}\n [data-framer-name=\"Cards\"]>[data-framer-name=\"Card \\xb7 Info\"]{padding:24px!important;min-height:0!important;transform:none!important}\n [data-framer-name=\"Cards\"]>[data-framer-name=\"Card \\xb7 Info\"] [data-framer-component-type=\"RichTextContainer\"]{width:100%!important;min-width:0!important;max-width:100%!important}\n [data-framer-name=\"Cards\"]>[data-framer-name=\"Card \\xb7 Info\"] h3{font-size:24px!important;line-height:1.2!important;word-break:normal!important;overflow-wrap:break-word!important}\n [data-framer-name=\"Cards\"]>[data-framer-name=\"Card \\xb7 Info\"] p{line-height:1.5!important;word-break:normal!important;overflow-wrap:break-word!important}\n [data-framer-name=\"Cards\"]>[data-framer-name=\"Card \\xb7 Info\"] [data-framer-name=\"Space M\"]{height:20px!important}\n [data-framer-name^=\"Section \\xb7\"] h1,[data-framer-name^=\"Section \\xb7\"] h2{max-width:100%!important;word-break:normal!important;overflow-wrap:break-word!important}\n}\n\n@media(max-width:809px){[data-framer-name=\"Footer Nav\"] a p{white-space:normal!important;overflow-wrap:break-word!important;word-break:normal!important}}\n\n/* White project panels and high-contrast circular arrow controls. */\nbody [data-framer-name=\"Card \\xb7 Project\"] [data-framer-name=\"Project Content\"],body [data-framer-name=\"Card \\xb7 Project\"] [data-framer-name=\"Project Content\"]::before{background:#fff!important;background-color:#fff!important}\nbody [data-framer-name=\"Card \\xb7 Project\"] [data-framer-name=\"Project Content\"]::after{background:transparent!important;background-color:transparent!important}\nbody [data-framer-name=\"Card \\xb7 Project\"] [data-framer-name=\"Arrow\"]{background:#171717!important;color:#fff!important;border-radius:50%!important;width:28px!important;height:28px!important;flex-basis:28px!important}\nbody [data-framer-name=\"Card \\xb7 Project\"] [data-framer-name=\"Arrow\"]::before{background:#fff!important;inset:2px!important}\n/* Shared CTA finish: black outlined pills and CSS-drawn arrows. */\nbody [data-framer-name=\"Card \\xb7 Project\"]::after{position:absolute;inset:0;box-sizing:border-box;border:1px solid #171717!important;border-radius:inherit;z-index:5;background:transparent!important;pointer-events:none}\nbody :is([data-framer-name^=\"Button \\xb7\"],[data-reset=\"button\"]){box-sizing:border-box!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:14px!important;min-height:48px!important;height:auto!important;max-width:100%!important;padding:12px 20px!important;border:1px solid #858585!important;--border-color:#858585!important;border-radius:999px!important;background:#171717!important;background-color:#171717!important;color:#fff!important;text-decoration:none!important;transition:background-color .25s ease,transform .25s ease,box-shadow .25s ease!important}\nbody :is([data-framer-name^=\"Button \\xb7\"],[data-reset=\"button\"]) [data-framer-component-type=\"RichTextContainer\"]{min-width:0!important;flex-shrink:1!important}\nbody :is([data-framer-name^=\"Button \\xb7\"],[data-reset=\"button\"]) .framer-text{color:#fff!important;-webkit-text-fill-color:#fff!important;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif!important;font-weight:500!important;font-size:12px!important;text-transform:uppercase!important;letter-spacing:.1em!important;line-height:1.3!important;white-space:normal!important;word-break:normal!important;text-align:center!important}\nbody :is([data-framer-name^=\"Button \\xb7\"],[data-reset=\"button\"]) :is([data-framer-name=\"↗\"],[data-framer-name=\"→\"],[data-framer-name=\"Arrow circle\"]),body [data-reset=\"button\"]>:is([data-framer-name=\"1\"],[data-framer-name=\"2\"],[data-framer-name=\"3\"],[data-framer-name=\"4\"]){display:none!important}\nbody :is([data-framer-name^=\"Button \\xb7\"],[data-reset=\"button\"])::before{content:\"\";position:static;order:2;align-self:center;pointer-events:none;border:0;display:block;flex:0 0 22px;width:22px;height:22px;background:#fff;mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 12h17M13 5l7 7-7 7' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\") center/contain no-repeat;-webkit-mask:url(\"data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cpath d='M3 12h17M13 5l7 7-7 7' fill='none' stroke='black' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'/%3E%3C/svg%3E\") center/contain no-repeat}\n@media(hover:hover){body :is([data-framer-name^=\"Button \\xb7\"],[data-reset=\"button\"]):hover{background:#292929!important;background-color:#292929!important;transform:translateY(-2px)!important;box-shadow:0 8px 18px rgba(0,0,0,.16)!important}}\nbody :is([data-framer-name^=\"Button \\xb7\"],[data-reset=\"button\"]):focus-visible{outline:2px solid #325cff!important;outline-offset:3px!important}\n.ow-nav .ow-cta,.ow-nav .ow-m-cta,[data-tone] .ow-nav .ow-cta,[data-tone] .ow-nav .ow-m-cta{box-sizing:border-box;border:1px solid #8a8a8a!important;border-radius:999px!important;background:#171717!important;background-color:#171717!important;color:#fff!important;min-height:44px;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif;font-size:12px;letter-spacing:.1em}\n.ow-nav .ow-cta:hover,.ow-nav .ow-m-cta:hover{background:#292929!important;background-color:#292929!important;color:#fff!important}\n@media(prefers-reduced-motion:reduce){body :is([data-framer-name^=\"Button \\xb7\"],[data-reset=\"button\"]){transition:none!important}}\n\n/* Project actions and form submissions use the same pill proportions. */\nbody [data-framer-name=\"Card \\xb7 Project\"] :is([data-framer-name=\"Card Action\"],[data-framer-name=\"Project Action\"]),form button[type=\"submit\"]{box-sizing:border-box!important;display:inline-flex!important;align-items:center!important;justify-content:center!important;gap:12px!important;min-height:48px!important;height:auto!important;padding:12px 18px!important;border:1px solid #858585!important;border-radius:999px!important;background:#171717!important;color:#fff!important;text-decoration:none!important}\nbody [data-framer-name=\"Card \\xb7 Project\"] :is([data-framer-name=\"Card Action\"],[data-framer-name=\"Project Action\"]){width:fit-content!important;max-width:100%!important}\nbody [data-framer-name=\"Card \\xb7 Project\"] :is([data-framer-name=\"Card Action\"],[data-framer-name=\"Project Action\"]) p,form button[type=\"submit\"] p{color:#fff!important;-webkit-text-fill-color:#fff!important;text-transform:uppercase!important;letter-spacing:.1em!important;line-height:1.3!important;font-family:Inter,system-ui,-apple-system,BlinkMacSystemFont,\"Segoe UI\",sans-serif!important;font-weight:500!important;font-size:12px!important}\nbody [data-framer-name=\"Card \\xb7 Project\"] :is([data-framer-name=\"Card Action\"],[data-framer-name=\"Project Action\"]) :is([data-framer-name=\"Arrow\"],[data-framer-name=\"↗\"]){order:2;background:transparent!important;color:#fff!important;border-radius:0!important}\nbody [data-framer-name=\"Card \\xb7 Project\"] :is([data-framer-name=\"Card Action\"],[data-framer-name=\"Project Action\"]) :is([data-framer-name=\"Arrow\"],[data-framer-name=\"↗\"])::before{background:#fff!important}\nform button[type=\"submit\"] [data-framer-name=\"Arrow circle\"]{background:transparent!important;border-radius:0!important;width:24px!important;height:24px!important;flex:0 0 24px!important}\nform button[type=\"submit\"] svg{width:22px!important;height:22px!important}\nform button[type=\"submit\"] svg path{stroke:#fff!important;stroke-width:2.4!important;stroke-linecap:round;stroke-linejoin:round}\nform button[type=\"submit\"]::after{border-color:#858585!important;background:transparent!important}\nform button[type=\"submit\"]:focus-visible{outline:2px solid #325cff!important;outline-offset:3px!important}\nbody [data-framer-name=\"Card \\xb7 Project\"] [data-framer-name=\"Project Content\"]{border:0!important;box-sizing:border-box!important}\nbody [data-framer-name=\"Card \\xb7 Project\"] [data-framer-name=\"Project Content\"]::after{border-color:transparent!important;background:transparent!important}\nbody [data-framer-name=\"Card \\xb7 Project\"] [data-framer-name=\"Project Action\"] [data-framer-name=\"Action Marker\"]{order:2;background:transparent!important;border:0!important;border-radius:0!important;width:24px!important;height:24px!important;flex:0 0 24px!important}\nbody [data-framer-name=\"Card \\xb7 Project\"] :is([data-framer-name=\"Card Action\"],[data-framer-name=\"Project Action\"]) :is([data-framer-name=\"Arrow\"],[data-framer-name=\"↗\"]) p{font-size:0!important;line-height:0!important;color:transparent!important;-webkit-text-fill-color:transparent!important}\nbody a[data-reset=\"button\"]{width:max-content!important;min-width:0!important;max-width:100%!important}\nbody a[data-reset=\"button\"] [data-framer-component-type=\"RichTextContainer\"]{width:auto!important;min-width:0!important}\nbody a[data-reset=\"button\"] .framer-text{white-space:nowrap!important}\nbody [data-framer-name^=\"Button \\xb7\"]{width:max-content!important;flex-shrink:0!important}\nbody [data-framer-name=\"Hero Actions\"],body [data-framer-name=\"CTA Actions\"]{flex-wrap:wrap!important}\n`;\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"OptimaPillNavigation\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"fixed\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"any\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./OptimaPillNavigation.map","// Generated by Framer (6783177)\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addFonts,ComponentViewportProvider,Container,cx,GeneratedComponentContext,getFonts,RenderTarget,useCustomCursors,useHydratedBreakpointVariants,useIsOnFramerCanvas,useLocaleInfo,withCSS}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 OptimaHalftoneFooter from\"#framer/local/codeFile/XG2a1vD/OptimaHalftoneFooter.js\";import OptimaPillNavigation from\"#framer/local/codeFile/zMc0Vsn/OptimaPillNavigation.js\";const OptimaPillNavigationFonts=getFonts(OptimaPillNavigation);const EmbedFonts=getFonts(Embed);const OptimaHalftoneFooterFonts=getFonts(OptimaHalftoneFooter);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-zDPse\";const variantClassNames={Dst6lrXHO:\"framer-v-1upato1\",JKJSCCaio:\"framer-v-12s58mq\",X7aN0nU2I:\"framer-v-rd941r\"};const breakpointRules={};const breakpointKeys=Object.keys(breakpointRules);const rules=[\".framer-zDPse.framer-phyuta, .framer-zDPse .framer-phyuta { display: block; }\",\".framer-zDPse.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-zDPse .framer-cb6scc-container { flex: none; height: 72px; order: -1000; position: relative; width: 100%; }\",\".framer-zDPse .framer-l82au1 { background: transparent; flex-grow: 1; height: 0px; margin: 0px; margin-bottom: -0px; position: relative; width: 0px; }\",\".framer-zDPse .framer-1cofu7r-container { flex: none; height: auto; order: 1002; position: relative; width: 100%; }\",\".framer-zDPse .framer-dqlwkp-container { flex: none; height: auto; order: 1003; 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:[/*#__PURE__*/_jsx(ComponentViewportProvider,{children:/*#__PURE__*/_jsx(Container,{className:\"framer-cb6scc-container\",\"data-framer-name\":\"Main Navigation\",isAuthoredByUser:true,name:\"Main Navigation\",nodeId:\"obRRaAO_Q\",scopeId:\"qhnRAmdje\",children:/*#__PURE__*/_jsx(OptimaPillNavigation,{accentColor:\"rgb(50, 92, 255)\",height:\"100%\",id:\"obRRaAO_Q\",layoutId:\"obRRaAO_Q\",name:\"Main Navigation\",style:{height:\"100%\",width:\"100%\"},tone:\"dark\",width:\"100%\"})})}),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 .ogr__motion-toggle{display:none!important}\\n .ogr__tracks{gap:10px;padding:7px 0 13px}\\n .ogr__row{--review-gap:10px}\\n .ogr__card,.ogr__card:hover,.ogr__card:nth-child(even):hover{width:min(68vw,220px);min-height:172px;padding:12px;border-radius:9px}\\n .ogr__avatar{width:28px;height:28px;flex-basis:28px}\\n .ogr__name{font-size:11px}\\n .ogr__verified{font-size:7px}\\n .ogr__meta{font-size:8.5px}\\n .ogr__google{width:14px;height:14px;flex-basis:14px}\\n .ogr__card-stars{margin:9px 0 6px;font-size:10.5px}\\n .ogr__text{-webkit-line-clamp:4;font-size:10.5px;line-height:1.45}\\n .ogr__source{padding-top:8px;font-size:7.5px}\\n .ogr__foot{margin-top:13px;font-size:8px}\\n}\\n\\n@media(max-width:390px){\\n .ogr__card,.ogr__card:hover,.ogr__card:nth-child(even):hover{width:min(70vw,205px);min-height:166px;padding:11px}\\n .ogr__text{font-size:10px}\\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    <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\\');\\nif(!root)return;\\nconst visibility=()=>root.dataset.background=String(document.hidden);\\ndocument.addEventListener(\\'visibilitychange\\',visibility);visibility();\\nwindow.addEventListener(\\'pagehide\\',()=>document.removeEventListener(\\'visibilitychange\\',visibility),{once:true});\\n})();</script>\\n\\n<style>\\n/* OptimaWebAI redesign theme — review data and logic unchanged */\\n@import url(\\'https://fonts.googleapis.com/css2?family=Hanken+Grotesk:wght@400;500&family=Inter:wght@400;500&family=Geist+Mono:wght@400;500&display=swap\\');\\nhtml,body{background:#F6F6F3!important}\\n.ogr{--bg:#F6F6F3;--line:#DDDDDA;--muted:#6F6F6F;--blue:#325CFF;background:#F6F6F3!important;color:#111!important;padding:clamp(96px,11vw,170px) 0 clamp(96px,10vw,150px)!important;font-family:Inter,system-ui,sans-serif!important}\\n.ogr::before{display:none!important}\\n.ogr__head{justify-items:start!important;text-align:left!important;grid-template-columns:1fr auto;align-items:end!important;width:min(1440px,calc(100% - 64px))!important;margin:0 auto 64px!important}\\n.ogr__head>div:first-child,.ogr__summary{box-shadow:none!important;background:transparent!important}\\n.ogr__eyebrow{justify-content:flex-start!important;font-family:\"Geist Mono\",ui-monospace,monospace!important;font-weight:400!important;font-size:12px!important;letter-spacing:.1em!important;color:#6F6F6F!important;margin-bottom:32px!important}\\n.ogr__eyebrow::before{display:none!important}\\n.ogr h2{font-family:\"Hanken Grotesk\",Inter,sans-serif!important;font-weight:500!important;letter-spacing:-.052em!important;font-size:clamp(44px,6.2vw,96px)!important;line-height:.96!important;color:#111!important;max-width:900px!important}\\n.ogr h2 span{color:#111!important;font-weight:500!important}\\n.ogr__summary{border:0!important;border-top:1px solid #111!important;border-radius:0!important;padding:16px 0 0!important;min-width:240px}\\n.ogr__rating{font-family:\"Hanken Grotesk\",Inter,sans-serif!important;font-weight:500!important}\\n.ogr__tracks{gap:22px;padding:14px 0 26px}\\n.ogr__card,.ogr__card:hover,.ogr__card:nth-child(even):hover{border-radius:16px!important;border:1px solid #171717!important;background:#FFFFFF!important;box-shadow:0 3px 0 #e8e8e3,0 6px 0 -1px #bcbcb6,0 15px 22px -14px #17171755!important;transform:none!important;transition:transform .3s ease,box-shadow .3s ease}\\n.ogr__card::after{display:none}\\n.ogr__author,.ogr__card-stars,.ogr__text,.ogr__source{transform:none}\\n.ogr__name{font-size:13px}\\n.ogr__text{font-size:12px;line-height:1.6}\\n.ogr__source{text-decoration:none}\\n@media(hover:hover) and (pointer:fine){\\n .ogr__card:hover{transform:perspective(900px) translateY(-5px) rotateX(3deg) rotateY(-2deg)!important;box-shadow:0 4px 0 #e8e8e3,0 8px 0 -1px #bcbcb6,0 25px 30px -18px #17171766!important}\\n .ogr__card:nth-child(even):hover{transform:perspective(900px) translateY(-5px) rotateX(3deg) rotateY(2deg)!important}\\n}\\n@media(max-width:720px){\\n .ogr__tracks{gap:18px;padding:10px 0 20px}\\n .ogr__card,.ogr__card:hover,.ogr__card:nth-child(even):hover{width:min(72vw,240px);min-height:198px;padding:15px;border-radius:14px!important;transform:none!important}\\n .ogr__name{font-size:12px}.ogr__verified,.ogr__meta{font-size:9px}\\n .ogr__text{font-size:12px;line-height:1.55}.ogr__source{font-size:9px;padding-top:12px}\\n}\\n@media(prefers-reduced-motion:reduce){.ogr__card,.ogr__card:hover,.ogr__card:nth-child(even):hover{transform:none!important;transition:none!important}}\\n.ogr__name{font-weight:500!important}\\n.ogr__source,.ogr__verified,.ogr__meta{font-family:\"Geist Mono\",ui-monospace,monospace!important;letter-spacing:.08em!important;font-weight:400!important}\\n.ogr__status{border-radius:0!important;border-color:#DDDDDA!important;width:min(1440px,calc(100% - 64px))!important}\\n.ogr__status-dot{background:#325CFF!important;box-shadow:none!important}\\n.ogr__foot{width:min(1440px,calc(100% - 64px))!important;font-family:\"Geist Mono\",ui-monospace,monospace!important;text-transform:uppercase;letter-spacing:.08em;font-size:10px!important;color:#6F6F6F!important}\\n@media (max-width:720px){.ogr__head{grid-template-columns:1fr;width:calc(100% - 40px)!important}.ogr__foot,.ogr__status{width:calc(100% - 40px)!important}}\\n</style>\\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-dqlwkp-container\",isAuthoredByUser:true,nodeId:\"rPLlzyrd4\",scopeId:\"qhnRAmdje\",children:/*#__PURE__*/_jsx(OptimaHalftoneFooter,{backToTop:true,columns:[{id:\"default-item-0\",links:[],title:\"Explore\"},{id:\"default-item-1\",links:[],title:\"Services\"},{id:\"default-item-2\",links:[],title:\"Policies\"},{id:\"default-item-3\",links:[],title:\"Connect\"}],crop:.2,dotGap:6,grain:.5,height:\"100%\",id:\"rPLlzyrd4\",interactive:true,label:\"OptimaWebAI\",layoutId:\"rPLlzyrd4\",meta:\"Web design & digital solutions \\xb7 South Africa\",preset:\"night\",radius:80,style:{width:\"100%\"},width:\"100%\",wordmark:\"OptimaWebAI\"})})})]}),/*#__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=breakpointRules[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-cb6scc-container\",\".framer-1cofu7r-container\",\".framer-dqlwkp-container\"],\"X7aN0nU2I\":[\".framer-cb6scc-container\",\".framer-1cofu7r-container\",\".framer-dqlwkp-container\"],\"JKJSCCaio\":[\".framer-cb6scc-container\",\".framer-1cofu7r-container\",\".framer-dqlwkp-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-zDPse\");export default FramerqhnRAmdje;FramerqhnRAmdje.displayName=\"Main\";FramerqhnRAmdje.defaultProps={height:1723,width:1200};addFonts(FramerqhnRAmdje,[{explicitInter:true,fonts:[]},...OptimaPillNavigationFonts,...EmbedFonts,...OptimaHalftoneFooterFonts],{supportsExplicitInterCodegen:true});\nexport const __FramerMetadata__ = {\"exports\":{\"default\":{\"type\":\"reactComponent\",\"name\":\"FramerqhnRAmdje\",\"slots\":[],\"annotations\":{\"framerIntrinsicHeight\":\"1723\",\"framerLayoutTemplate\":\"true\",\"framerAutoSizeImages\":\"true\",\"framerDefaultVariant\":\"Dst6lrXHO\",\"framerImmutableVariables\":\"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}}\",\"framerCanvasComponentVariantDetails\":\"{\\\"propertyName\\\":\\\"variant\\\",\\\"data\\\":{\\\"default\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"X7aN0nU2I\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]},\\\"JKJSCCaio\\\":{\\\"layout\\\":[\\\"fixed\\\",\\\"fixed\\\"]}}}\",\"framerIntrinsicWidth\":\"1200\",\"framerContractVersion\":\"1\",\"framerComponentViewportWidth\":\"true\",\"framerHitTargets\":\"{\\\"Dst6lrXHO\\\":[\\\".framer-cb6scc-container\\\",\\\".framer-1cofu7r-container\\\",\\\".framer-dqlwkp-container\\\"],\\\"X7aN0nU2I\\\":[\\\".framer-cb6scc-container\\\",\\\".framer-1cofu7r-container\\\",\\\".framer-dqlwkp-container\\\"],\\\"JKJSCCaio\\\":[\\\".framer-cb6scc-container\\\",\\\".framer-1cofu7r-container\\\",\\\".framer-dqlwkp-container\\\"]}\",\"framerDisplayContentsDiv\":\"false\",\"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/7kR0cgZtyeqVLUmuj8GR/qhnRAmdje.js\";\r\n\r\n\t\tconst routes = {augiA20Il: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/oiXsQFToSk7uUtt4yKc4/FJL5pFlW0K95a4KOWldW/augiA20Il.js\")), path: \"/\"}, GjQI_B82s: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/Rtz1e9RKrDiSnY0ziow5/4RnwvQ87Bj5RLtB2T5sq/GjQI_B82s.js\")), path: \"/contact\"}, eUrueYB8r: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/8vKeZU6grMFCLhv1wXIZ/6Ziz20y20J1uQaA4suVL/eUrueYB8r.js\")), path: \"/about\"}, Ut3jRQf0w: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/ezEQ8E0GMslb9PuYc0Kh/b7zw3eKLWmJEDAErDjqj/Ut3jRQf0w.js\")), path: \"/projects\"}, t7hebT43B: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/j3Iwz1cX7Bg2EkPdMXfY/tkWjeF9SKkONlQBKMfrX/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/9TUXlA8Lv8ALgyPnrayG/AhVuLVFn3.js\")), path: \"/experience-lab\"}, sxtmEF53n: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/8n3wRUIYo9QvgIOcGLXb/58VZxp4SbrrIfKnQXISO/sxtmEF53n.js\")), path: \"/web-design\"}, Z21kgnOoJ: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/1jM8jEs9cBIAvrwxwGAz/Zi1zbJXsYJ0AxdPStFhs/Z21kgnOoJ.js\")), path: \"/ecommerce-web-design\"}, YbQWkhTd0: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/ofZpZQ1ldgh3Al4p7Phm/uL7BVXqs77VcN9RYePA8/YbQWkhTd0.js\")), path: \"/shopify-web-design\"}, KOZu0eT83: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/isLcuUP3vdOrPxcMTgIW/wKuIibBuIQFtIuinXjJe/KOZu0eT83.js\")), path: \"/custom-web-development\"}, FHrrxenhk: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/hQbyoTWejHZTEjBVgKWf/2nXOdBYb7ebEoHQabzWc/FHrrxenhk.js\")), path: \"/website-redesign\"}, BGE16AQ6b: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/76AufwcXbZXFk8Ff58T8/Z1jVbKjEZ99OXCr4RXai/BGE16AQ6b.js\")), path: \"/interactive-web-design\"}, ttv6phx9j: {elements: {}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/OphpU8hMwPcLbhELDaov/9612GCJnxMsu4Xl3BEjU/ttv6phx9j.js\")), path: \"/landing-page-design\"}, ZFeBeVv_Y: {elements: {D0heEa4EU: \"packages\"}, page: Framer.lazy(() => import(\"https://framerusercontent.com/modules/VWHRz8jGxn8cONNUETq9/KRlcdomMrah8ftltG9SR/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/UrtaqLQbfTJI5Fv8E8r7/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/dLL8pCTArUFX6AyrKAT0/jNTn1_54d.js\"))?.[\"utils\"], zZao9MpMu: async () => (await import(\"https://framerusercontent.com/modules/bsbdi6Aj9TZp5ko8Jbjx/Xbq2s5HWgm54SvmEnpz5/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/tkWjeF9SKkONlQBKMfrX/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/ECLQ3EEHjWWl1ZIPB0Yf/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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"}