{"version":3,"file":"shared-lib.Bf0qiSC2.mjs","names":["React.useState","React.useState","LIGHT","React.useState","React.useRef","React.useState","_Fragment","React.useState","React.useRef","React.useCallback","React.useState","React.useRef","_Fragment","React.useState","React.useRef","React.Fragment","React.useState","React.useRef"],"sources":["https:/framerusercontent.com/modules/nXCT63GS9tMsCD7rNUA9/FxNSwdszZ5BVAzAZiWd2/config.js","https:/framerusercontent.com/modules/jJQJadxiyfiEQ1dJxBbB/6VEtEBxp9IBw73pQJbVS/tokens.js","https:/framerusercontent.com/modules/91FrcVFAJzJz8HA28DTr/NoRq2SAVd7OiJaD8Xj2A/analytics.js","https:/framerusercontent.com/modules/F734gdfhNwD3tME9moPb/Nvg6t7asS5ci4zp37Lxz/voice.js","https:/framerusercontent.com/modules/DLif1gKEp0hRaG5h0wGG/REoU3SegWil9xVWKRRLJ/links.js","https:/framerusercontent.com/modules/mzh6Ee1s9FemQoNtjygM/gNmurx7GSFPIzltDVgfg/cta.js","https:/framerusercontent.com/modules/61YXww0YSbehJLdVTN7C/LaxkeCWTt1Bv0u8CsFGy/motion.js","https:/framerusercontent.com/modules/wxUe6iJaM8V0uvLiespj/6GuMKWJ47OHDrbC4FcJw/brand.js","https:/framerusercontent.com/modules/xHq10MUmbbwyd1LaK6Xn/aeq77KMqB66Ad3Jfo3Jg/SiteFooter.js","https:/framerusercontent.com/modules/idgc1by0qMjqdue2nXgj/dteVpNBYgkw3r3oxyPZ3/fonts.js","https:/framerusercontent.com/modules/JWfMQBIQAmMXT2NYFjXr/kmreM5JIEuEULEPKng9Y/VoiceDemo.js","https:/framerusercontent.com/modules/KoT1iEDE0dp7et2MQ5yR/bXMECi0YUoeXSW5USS48/VoiceLauncher.js","https:/framerusercontent.com/modules/6F5Bcd8IqKkzgoYHWDlf/Jgb6tYKWwMGgvAS8S0WG/SiteNav.js","https:/framerusercontent.com/modules/JnrYTyOjqjqPtAJfvwc2/bdrAdHGnyxpJnrbnxwxs/controls.js","https:/framerusercontent.com/modules/G0Z39Grxk90jT5O1JkWA/v156oie4XaDiQkgYJotC/Rails.js","https:/framerusercontent.com/modules/haZj8HUgSp3hBgKRgn6a/0vIpUaOZlDAgGxNQby0O/SiteHeader.js"],"sourcesContent":["// Site-wide content for the Synteris shell: name, legal entity, navigation, CTAs, footer.\n// Edit here once; every page's SiteHeader and SiteFooter read it.\n// Values in [square brackets] are placeholders awaiting approved content.\nexport const SITE={name:\"Synteris\",wordmark:\"Synteris\",legalEntity:\"Revive Management Solutions Limited\",tradingLine:\"Synteris is a trading name of Revive Management Solutions Limited.\",legalLine:\"Revive Management Solutions Limited, trading as Synteris. Registered in England and Wales, company number 07881882. Registered office: Walker Begley, 207 Knutsford Road, Grappenhall, Warrington, WA4 2QL.\",companyNumber:\"07881882\",registeredOffice:\"Walker Begley, 207 Knutsford Road, Grappenhall, Warrington, WA4 2QL\",email:\"hello@synteris.ai\",summary:\"We design, build and run customer-contact solutions for regulated UK organisations, on our own AWS platform.\",year:\"2026\"};// Contact form delivery (Contact page). Every submission is POSTed as JSON.\n// CONFIG VALUE FOR GEOFF TO SUPPLY:\n//   FORM_WEBHOOK_URL: the Make webhook. It is the delivery route: Make stores the enquiry and emails it to\n//                     FORM_EMAIL_TO (hello@synteris.ai).\n//   FORM_EMAIL_RELAY_URL: optional second destination; skipped when empty.\n// While FORM_WEBHOOK_URL is empty the form says plainly that nothing was sent.\nexport const FORM_WEBHOOK_URL=\"https://hook.eu2.make.com/m3m3zohq6ao81q89id8f9gmzjobkl5ke\";export const FORM_EMAIL_RELAY_URL=\"\";export const FORM_EMAIL_TO=\"hello@synteris.ai\";// Analytics: Plausible (cookieless, no consent banner needed). CONFIG VALUES:\n//   PLAUSIBLE_DOMAIN: the live domain; the snippet only loads there (synteris.ai and www.synteris.ai).\n//   PLAUSIBLE_SCRIPT: Plausible's site-specific script for synteris.ai (from the Plausible dashboard).\n// The script loads only on the live domain (synteris.ai and www.synteris.ai), so Framer previews and branch\n// previews never count as visits. Custom events: \"Discovery CTA click\" (every \"Book a discovery session\" /\n// \"Book a session\" button, with the page as a property) and \"Enquiry submitted\" (form confirmed success).\n// AI voice demo (the floating \"Talk to our AI agent\" launcher and panel on every page, VoiceLauncher.tsx and\n// VoiceDemo.tsx, plus its text links). Backend: the Synteris voice service on AWS.\n// VOICE_DEMO_LIVE: live on synteris.ai since 29 September 2026, approved by Geoff after Sam confirmed the backend\n// changes in notes/voice-demo-agent-prompt.md (agent instructions, origin check, 5-minute limit, rate limit).\n// Set it to false to hide the launcher, panel and text links on synteris.ai again (previews still show them).\nexport const VOICE_DEMO_LIVE=true;export const VOICE_WS_URL=\"wss://voice-api.synteris.ai\";export const PLAUSIBLE_DOMAIN=\"synteris.ai\";export const PLAUSIBLE_SCRIPT=\"https://plausible.io/js/pa-ut9IVD_oqVwr5-gMWD44B.js\";// Primary and secondary calls to action (brief: never \"Start free\", \"Get started\", \"Sign up\").\nexport const CTA_PRIMARY=[\"Book a discovery session\",\"/contact\"];export const CTA_SECONDARY=[\"See our solutions\",\"/solutions\"];// The British Gas case study: unlisted from the nav, linked from Home proof, About, and the Financial difficulty and Energy pages (\"Read a case study\").\nexport const CASE_STUDY_BG=\"/case-studies/british-gas-digital-triage\";// Framer page ids of every static page. A path that is not listed here is treated as\n// \"not built yet\": SiteNav/SiteFooter hide it. Add each new page here when it is created.\nexport const PAGE_IDS={\"/\":\"augiA20Il\",\"/how-it-works\":\"kmjNAdz0O\",\"/solutions\":\"sf0OCpXGk\",\"/platform\":\"TND7e1S5T\",\"/industries\":\"P1oXcUNl_\",\"/security\":\"zvkm96JP9\",\"/case-studies\":\"uewbfHZJ6\",\"/about\":\"InSjalvY7\",\"/contact\":\"A_osF0638\",\"/privacy\":\"TbAs7Z_sZ\",\"/terms\":\"uov6hgZme\",\"/cookies\":\"K7uxU2GQg\",\"/accessibility\":\"xfrjOnTtP\",// the old synteris.ai calculator address, kept working (not in the nav)\n\"/roi-calculator\":\"bEslxn3zA\",// where revivemanagement.com lands (not in the nav; linked from the footer legal line)\n\"/revive\":\"wB70nE2ae\",\"/404\":\"tGRKO9xI1\"};// CMS detail pages: any path under these prefixes exists when its overview page exists.\nexport const COLLECTION_ROUTES=[\"/solutions/\",\"/industries/\",\"/case-studies/\"];// Approved navigation (reconciled plan, section 1).\nexport const NAV_LINKS=[[\"How it works\",\"/how-it-works\"],[\"Solutions\",\"/solutions\"],[\"Platform\",\"/platform\"],[\"Industries\",\"/industries\"],[\"Security & Compliance\",\"/security\"]];// Dropdown menus, keyed by the parent link. Labels are the short \"Nav label\" field of the Solutions CMS\n// (page titles stay full); Industries use their titles. These mirror the CMS: update both together\n// when an item is added or renamed.\nconst SOLUTIONS_SERVE=[[\"Call volumes\",\"/solutions/inbound-call-volumes\"],[\"Service requests\",\"/solutions/service-and-account-changes\"],[\"Complaints\",\"/solutions/complaints-and-triage\"],[\"Vulnerable customers\",\"/solutions/vulnerability-support\"],[\"Cases behind the contact\",\"/solutions/cases-behind-the-contact\"]];const SOLUTIONS_REACH=[[\"Outbound messaging\",\"/solutions/proactive-outbound\"],[\"Financial difficulty\",\"/solutions/financial-difficulty\"],[\"Customer feedback\",\"/solutions/customer-feedback\"],[\"Migrations and change\",\"/solutions/migrations-and-outreach\"]];// Short solution names by page slug (the CMS \"Nav label\"), e.g. \"inbound-call-volumes\" -> \"Call volumes\"\nexport const SOLUTION_LABELS=Object.fromEntries([...SOLUTIONS_SERVE,...SOLUTIONS_REACH].map(([label,href])=>[href.replace(\"/solutions/\",\"\"),label]));export const NAV_MENUS={\"/solutions\":[...SOLUTIONS_SERVE,...SOLUTIONS_REACH],\"/industries\":[[\"Energy\",\"/industries/energy\"],[\"Water\",\"/industries/water\"],[\"Banking & Lending\",\"/industries/banking-and-lending\"],[\"Telecoms\",\"/industries/telecoms\"]]};// Desktop dropdowns shown in titled columns, with an \"all\" link at the bottom.\nexport const NAV_GROUPS={\"/solutions\":{groups:[[\"Serve customers\",SOLUTIONS_SERVE],[\"Reach customers\",SOLUTIONS_REACH]],all:[\"All solutions\",\"/solutions\"]}};export const FOOTER_COLUMNS=[[\"COMPANY\",[[\"About\",\"/about\"],[\"Contact\",\"/contact\"]]],[\"WHAT WE DO\",[[\"How it works\",\"/how-it-works\"],[\"Solutions\",\"/solutions\"],[\"Platform\",\"/platform\"],[\"Industries\",\"/industries\"],[\"Security & Compliance\",\"/security\"]]],[\"SOLUTIONS\",[...SOLUTIONS_SERVE,...SOLUTIONS_REACH]],[\"LEGAL\",[[\"Privacy\",\"/privacy\"],[\"Terms\",\"/terms\"],[\"Cookies\",\"/cookies\"],[\"Accessibility\",\"/accessibility\"]]]];// Placeholder marker used across components until approved copy lands.\nexport const PH=slot=>`[${slot}]`;\nexport const __FramerMetadata__ = {\"exports\":{\"CTA_SECONDARY\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FORM_EMAIL_RELAY_URL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PLAUSIBLE_DOMAIN\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PAGE_IDS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PH\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CASE_STUDY_BG\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NAV_MENUS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FOOTER_COLUMNS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FORM_WEBHOOK_URL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NAV_LINKS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SOLUTION_LABELS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"CTA_PRIMARY\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"NAV_GROUPS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"COLLECTION_ROUTES\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VOICE_DEMO_LIVE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SITE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"FORM_EMAIL_TO\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PLAUSIBLE_SCRIPT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VOICE_WS_URL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./config.map","// Synteris design tokens. Colours read the project Colour Styles by token id, so changing a style repaints the site. Do not hard-code colours elsewhere.\nexport const EASE=[.22,.61,.36,1];export const DISPLAY_STACK='\"Switzer\", \"Switzer Placeholder\", \"Helvetica Neue\", sans-serif';export const MONO_STACK='\"IBM Plex Mono\", \"IBM Plex Mono Placeholder\", \"SF Mono\", monospace';export const PAPER=\"var(--token-a8370597-93dd-4db7-96e4-501c10d3944e, #F5F5F5)\";export const ELEV=\"var(--token-149059c4-14b1-4ff1-9764-39b2fb1995d7, #FFFFFF)\";export const INK=\"var(--token-542eba09-bb72-44ba-9d6f-7e757eef23cf, #0A1628)\";export const INK2=\"var(--token-f93590fa-2d6a-4921-8745-9cf8ac676fec, #4A5568)\";export const INK3=\"var(--token-0899b335-4de0-4bc8-a25b-e827f3eddf68, #5F6B7A)\";export const HAIR=\"var(--token-d27fde9d-a02c-46bb-a67f-17f46a91d635, rgba(10, 22, 40, 0.12))\";export const HAIR_SOFT=\"color-mix(in srgb, var(--token-542eba09-bb72-44ba-9d6f-7e757eef23cf, #0A1628) 7%, transparent)\";export const ACCENT=\"var(--token-034f52cb-4d37-49a7-b5df-bd007622d24e, #0E9A6A)\";export const ACCENT_DEEP=\"var(--token-1724e718-00c1-44c1-a39d-cf300768b07c, #0B7D57)\";export const ACCENT_WASH=\"color-mix(in srgb, var(--token-034f52cb-4d37-49a7-b5df-bd007622d24e, #0E9A6A) 9%, transparent)\";// Synteris palette (Sept 2026): green accent in line with Emerald in the brand guidelines, Midnight Navy for dark\n// sections, Off White background. No cyan, pink or purple. ACCENT #0E9A6A is for graphics, borders, bars and\n// progress (3.3:1 on Off White: never small text); ACCENT_DEEP #0B7D57 is for accent text and links (4.7:1).\n// LUMINOUS is the lighter green used as a highlight on Midnight Navy sections only (9.6:1 on navy).\n/** Primary CTA button: #0B7D57 with white text (5.1:1). */export const CTA_BG=\"var(--token-a72ea38a-4103-45ad-ab22-42a4262fb86a, #0B7D57)\";export const ALERT=\"var(--token-c024745f-682c-4edd-9bb6-2e203729f31a, #C4453B)\";export const DEEP=\"var(--token-c3f2bdcd-c042-4a31-8e2d-9036b8acf038, #0A1628)\";export const DEEP_ELEV=\"color-mix(in srgb, var(--token-c3f2bdcd-c042-4a31-8e2d-9036b8acf038, #0A1628) 96%, var(--token-a8370597-93dd-4db7-96e4-501c10d3944e, #F5F5F5))\";export const LUMINOUS=\"var(--token-62e61ab6-3fb3-41b4-b434-f372927217db, #3DD598)\";export const LUMINOUS_DIM=\"color-mix(in srgb, var(--token-62e61ab6-3fb3-41b4-b434-f372927217db, #3DD598) 70%, transparent)\";const LUMINOUS_WASH=\"color-mix(in srgb, var(--token-62e61ab6-3fb3-41b4-b434-f372927217db, #3DD598) 8%, transparent)\";export const HAIR_LUMINOUS=\"color-mix(in srgb, var(--token-62e61ab6-3fb3-41b4-b434-f372927217db, #3DD598) 16%, transparent)\";export const SANS='var(--site-display, \"Switzer\", \"Switzer Placeholder\", \"Helvetica Neue\", sans-serif)';export const MONO='var(--site-mono, \"IBM Plex Mono\", \"IBM Plex Mono Placeholder\", \"SF Mono\", monospace)';export const TNUM={fontVariantNumeric:\"tabular-nums\",fontFeatureSettings:'\"tnum\" 1'};export const EASE_CSS=\"cubic-bezier(0.22,0.61,0.36,1)\";\nexport const __FramerMetadata__ = {\"exports\":{\"CTA_BG\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LUMINOUS_DIM\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"INK2\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ELEV\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HAIR\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TNUM\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PAPER\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEEP\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HAIR_SOFT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MONO\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ACCENT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ACCENT_DEEP\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DEEP_ELEV\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LUMINOUS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"DISPLAY_STACK\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"INK3\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"INK\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ACCENT_WASH\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EASE_CSS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ALERT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"MONO_STACK\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"EASE\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"HAIR_LUMINOUS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"SANS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./tokens.map","// Plausible Analytics (cookieless). loadAnalytics() runs once per page from SiteNav (on every page);\n// track() sends a custom event. Both do nothing outside the live domain, on the server and in the editor.\n//\n// loadAnalytics() installs Plausible's site-specific snippet for synteris.ai exactly as Plausible supplied it:\n//   <script async src=\"https://plausible.io/js/pa-ut9IVD_oqVwr5-gMWD44B.js\"></script>\n//   <script>\n//     window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};\n//     plausible.init()\n//   </script>\n// It is added from code (not Framer's site-wide custom code) so it only ever runs on synteris.ai, never on previews.\nimport{PLAUSIBLE_DOMAIN,PLAUSIBLE_SCRIPT}from\"https://framerusercontent.com/modules/nXCT63GS9tMsCD7rNUA9/FxNSwdszZ5BVAzAZiWd2/config.js\";export const EVENTS={discoveryCta:\"Discovery CTA click\",enquirySubmitted:\"Enquiry submitted\",voiceStarted:\"Voice demo started\",voiceCompleted:\"Voice demo completed\"};export function onLiveDomain(){if(typeof window===\"undefined\")return false;const host=window.location.hostname.toLowerCase();return host===PLAUSIBLE_DOMAIN||host===\"www.\"+PLAUSIBLE_DOMAIN;}export function loadAnalytics(){if(!onLiveDomain()||typeof document===\"undefined\")return;if(document.querySelector(\"script[data-syn-plausible]\"))return;// 1. <script async src=\"https://plausible.io/js/pa-ut9IVD_oqVwr5-gMWD44B.js\"></script>\nconst s=document.createElement(\"script\");s.async=true;s.src=PLAUSIBLE_SCRIPT;s.setAttribute(\"data-syn-plausible\",\"\");document.head.appendChild(s);// 2. the inline part of the snippet, verbatim: queues calls until the script arrives, then initialises\nconst inline=document.createElement(\"script\");inline.setAttribute(\"data-syn-plausible\",\"\");inline.text=\"window.plausible=window.plausible||function(){(plausible.q=plausible.q||[]).push(arguments)},plausible.init=plausible.init||function(i){plausible.o=i||{}};\\n  plausible.init()\";document.head.appendChild(inline);}// Custom events: plausible(\"Event name\", { props: { ... } }), which Plausible's script supports.\n// Calls made before the script has loaded are queued by the snippet above and sent once it arrives.\nexport function track(event,props){if(!onLiveDomain())return;try{const p=window.plausible;if(typeof p===\"function\")p(event,props?{props}:undefined);}catch(e){}}\nexport const __FramerMetadata__ = {\"exports\":{\"EVENTS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"loadAnalytics\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"track\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"onLiveDomain\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// The AI voice demo's shared switches: where it may show, how to open its panel, and the text link that opens it.\n// Everything voice-related (the floating launcher, its panel and the text links) follows useVoiceDemoAllowed:\n// shown on previews and the Framer canvas, and on synteris.ai while VOICE_DEMO_LIVE is true (live since\n// 29 September 2026).\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{useIsStaticRenderer}from\"framer\";import{VOICE_DEMO_LIVE}from\"https://framerusercontent.com/modules/nXCT63GS9tMsCD7rNUA9/FxNSwdszZ5BVAzAZiWd2/config.js\";import{onLiveDomain}from\"https://framerusercontent.com/modules/91FrcVFAJzJz8HA28DTr/NoRq2SAVd7OiJaD8Xj2A/analytics.js\";import{ACCENT_DEEP,HAIR}from\"https://framerusercontent.com/modules/jJQJadxiyfiEQ1dJxBbB/6VEtEBxp9IBw73pQJbVS/tokens.js\";/** Window event the launcher listens for; text links dispatch it to open the panel. */export const VOICE_OPEN_EVENT=\"synteris:voice-demo-open\";export function openVoiceDemo(){if(typeof window!==\"undefined\")window.dispatchEvent(new CustomEvent(VOICE_OPEN_EVENT));}export function useVoiceDemoAllowed(){const isStatic=useIsStaticRenderer();const[ok,setOk]=React.useState(false);React.useEffect(()=>{setOk(VOICE_DEMO_LIVE||!onLiveDomain());},[]);return isStatic||ok;}/** A text link that opens the voice demo panel. Renders nothing where the demo is hidden. */export function VoiceDemoLink({label=\"Hear an AI voice agent handle a call\",block=false}){const allowed=useVoiceDemoAllowed();if(!allowed)return null;const link=/*#__PURE__*/_jsxs(\"button\",{type:\"button\",\"aria-haspopup\":\"dialog\",onClick:openVoiceDemo,style:{font:\"inherit\",fontWeight:550,color:ACCENT_DEEP,background:\"none\",border:\"none\",borderBottom:`1px solid ${HAIR}`,padding:0,cursor:\"pointer\",textAlign:\"left\"},children:[label,\" \",/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,children:\"→\"})]});return block?/*#__PURE__*/_jsx(\"p\",{style:{margin:\"14px 0 0\"},children:link}):link;}\nexport const __FramerMetadata__ = {\"exports\":{\"useVoiceDemoAllowed\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"openVoiceDemo\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VoiceDemoLink\":{\"type\":\"reactComponent\",\"name\":\"VoiceDemoLink\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"VOICE_OPEN_EVENT\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Internal links for the Synteris components.\n// Status (Phase 1): SiteLink renders a plain anchor. Plain anchors work on a published Framer site, but\n// inside the editor's Preview they 404 because Preview runs on a sandbox host. Two Framer-native\n// approaches were tried and backed out (see notes/phase-1-report.md): Framer's <Link> wrapper froze\n// Preview, and router.navigate(pageId) did not navigate. Every internal link goes through this one\n// component, so the routing fix lands here once it is verified on a published branch preview.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import*as React from\"react\";import{COLLECTION_ROUTES,PAGE_IDS}from\"https://framerusercontent.com/modules/nXCT63GS9tMsCD7rNUA9/FxNSwdszZ5BVAzAZiWd2/config.js\";import{ACCENT_DEEP,HAIR}from\"https://framerusercontent.com/modules/jJQJadxiyfiEQ1dJxBbB/6VEtEBxp9IBw73pQJbVS/tokens.js\";import{VoiceDemoLink}from\"https://framerusercontent.com/modules/F734gdfhNwD3tME9moPb/Nvg6t7asS5ci4zp37Lxz/voice.js\";function pageIdFor(href){if(!href.startsWith(\"/\"))return undefined;const path=href.split(\"#\")[0]||\"/\";const id=PAGE_IDS[path];return id&&!id.startsWith(\"__\")?id:undefined;}function routeExists(href){if(!href.startsWith(\"/\"))return true;if(pageIdFor(href)!==undefined)return true;const path=href.split(\"#\")[0];// a CMS detail path exists when its overview page exists\nconst base=COLLECTION_ROUTES.find(b=>path.startsWith(b));return!!base&&pageIdFor(base.slice(0,-1))!==undefined;}/** True when an internal path has a page on this site. Used to hide links to pages not built yet. */export function useRouteExists(){return routeExists;}export const SiteLink=/*#__PURE__*/React.forwardRef(function SiteLink({href,children,...rest},ref){return /*#__PURE__*/_jsx(\"a\",{ref:ref,href:href,...rest,children:children});});/** Text with inline site links: \"[label](/path)\" becomes a SiteLink, everything else stays plain text.\n *  Used by FAQ answers and the enquiry form note. */export function withLinks(text){return text.split(/(\\[[^\\]]+\\]\\([^)\\s]+\\))/).map((part,i)=>{const m=part.match(/^\\[([^\\]]+)\\]\\(([^)\\s]+)\\)$/);// \"#voice-demo\" opens the AI voice demo panel (hidden where the demo is)\nif(m&&m[2]===\"#voice-demo\")return /*#__PURE__*/_jsx(VoiceDemoLink,{label:m[1]},i);return m?/*#__PURE__*/_jsx(SiteLink,{href:m[2],style:{color:ACCENT_DEEP,textDecoration:\"none\",borderBottom:`1px solid ${HAIR}`},children:m[1]},i):part;});}\nexport const __FramerMetadata__ = {\"exports\":{\"SiteLink\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"withLinks\":{\"type\":\"reactComponent\",\"name\":\"withLinks\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"useRouteExists\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Calls to action, used everywhere (nav, hero, CTA bands, calculator).\n// Rule: the primary CTA is always a solid green (#0B7D57) button; \"See our solutions\" is always a secondary text link.\n// Never two solid buttons side by side.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{SiteLink}from\"https://framerusercontent.com/modules/DLif1gKEp0hRaG5h0wGG/REoU3SegWil9xVWKRRLJ/links.js\";import{CTA_PRIMARY,CTA_SECONDARY}from\"https://framerusercontent.com/modules/nXCT63GS9tMsCD7rNUA9/FxNSwdszZ5BVAzAZiWd2/config.js\";import{EVENTS,track}from\"https://framerusercontent.com/modules/91FrcVFAJzJz8HA28DTr/NoRq2SAVd7OiJaD8Xj2A/analytics.js\";import{ACCENT,CTA_BG,DEEP,INK,SANS}from\"https://framerusercontent.com/modules/jJQJadxiyfiEQ1dJxBbB/6VEtEBxp9IBw73pQJbVS/tokens.js\";const WHITE=\"var(--token-149059c4-14b1-4ff1-9764-39b2fb1995d7, #FFFFFF)\";const LIGHT=\"var(--token-db200faa-7b39-456a-99c4-f2a62adbdd33, #F5F5F5)\";const ACCENT_SOFT=\"var(--token-fa1435a9-ac65-414c-b87e-697a6806db71, #7FDDB6)\";const PAD={sm:\"9px 14px\",md:\"13px 22px\",lg:\"16px 28px\"};const FS={sm:13.5,md:15,lg:16.5};/** Primary CTA button (green #0B7D57). Defaults to \"Book a discovery session\" -> /contact. */export function CtaButton({label=CTA_PRIMARY[0],href=CTA_PRIMARY[1],size=\"md\",full=false,onDark=false}){const[h,setH]=React.useState(false);return /*#__PURE__*/_jsxs(SiteLink,{href:href,\"data-cta\":\"primary\",onClick:()=>{// \"Book a discovery session\" (and its short header form \"Book a session\")\nif(/^Book a/.test(label))track(EVENTS.discoveryCta,{page:typeof window!==\"undefined\"?window.location.pathname:\"\"});},onMouseEnter:()=>setH(true),onMouseLeave:()=>setH(false),onFocus:()=>setH(true),onBlur:()=>setH(false),style:{display:\"inline-flex\",alignItems:\"center\",justifyContent:\"center\",gap:8,boxSizing:\"border-box\",width:full?\"100%\":undefined,whiteSpace:\"nowrap\",textDecoration:\"none\",fontFamily:SANS,fontSize:FS[size],fontWeight:600,letterSpacing:\"0.004em\",padding:PAD[size],borderRadius:9,// green #0B7D57 with white text on light surfaces; on Midnight Navy it is #0E9A6A with navy text (5.1:1)\ncolor:onDark?DEEP:WHITE,background:onDark?h?ACCENT_SOFT:ACCENT:h?DEEP:CTA_BG,transition:\"background .2s ease\"},children:[label,/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{fontSize:FS[size]-3},children:\"→\"})]});}/** Secondary text link. Defaults to \"See our solutions\" -> /solutions. */export function SecondaryLink({label=CTA_SECONDARY[0],href=CTA_SECONDARY[1],onDark=false}){const[h,setH]=React.useState(false);return /*#__PURE__*/_jsxs(SiteLink,{href:href,onMouseEnter:()=>setH(true),onMouseLeave:()=>setH(false),style:{fontFamily:SANS,fontSize:15,fontWeight:500,textDecoration:\"none\",color:onDark?LIGHT:INK,borderBottom:`1px solid ${h?onDark?LIGHT:INK:\"transparent\"}`,paddingBottom:2,whiteSpace:\"nowrap\",transition:\"border-color .2s ease\"},children:[label,\" →\"]});}\nexport const __FramerMetadata__ = {\"exports\":{\"SecondaryLink\":{\"type\":\"reactComponent\",\"name\":\"SecondaryLink\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"CtaButton\":{\"type\":\"reactComponent\",\"name\":\"CtaButton\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Shared motion and layout primitives: the single rAF ticker, reveal hooks, masked type, section shells.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{ControlType,useIsStaticRenderer}from\"framer\";import{ACCENT,ACCENT_DEEP,EASE_CSS,HAIR_SOFT,INK,LUMINOUS,LUMINOUS_DIM,MONO,PAPER,SANS,TNUM}from\"https://framerusercontent.com/modules/jJQJadxiyfiEQ1dJxBbB/6VEtEBxp9IBw73pQJbVS/tokens.js\";export const TICK=(()=>{const subs=new Set;let running=false;let last=0;const loop=t=>{const dt=Math.min(50,t-last);last=t;subs.forEach(f=>{try{f(t,dt);}catch(e){}});if(subs.size)requestAnimationFrame(loop);else running=false;};return{add(f){subs.add(f);if(!running){running=true;last=performance.now();requestAnimationFrame(loop);}return()=>subs.delete(f);}};})();export const SCROLL={y:0,vel:0};let scrollWired=false;export function wireScroll(){if(scrollWired||typeof window===\"undefined\")return;scrollWired=true;let lastY=window.scrollY;let lastT=performance.now();window.addEventListener(\"scroll\",()=>{const t=performance.now();const y=window.scrollY;const dt=Math.max(8,t-lastT);SCROLL.vel=SCROLL.vel*.7+(y-lastY)/dt*.3;SCROLL.y=y;lastY=y;lastT=t;},{passive:true});}export function fmtMoney(v,dp=0){const neg=v<0;return(neg?\"−$\":\"$\")+Math.abs(v).toLocaleString(\"en-US\",{minimumFractionDigits:dp,maximumFractionDigits:dp});}export function fmtSigned(v){return(v<0?\"−$\":\"+$\")+Math.abs(v).toLocaleString(\"en-US\",{minimumFractionDigits:2,maximumFractionDigits:2});}export function clamp01(v){return v<0?0:v>1?1:v;}export function easeOut(p){return 1-Math.pow(1-p,3);}export function useStill(){const isStatic=useIsStaticRenderer();const[rm,setRm]=React.useState(false);const[touch,setTouch]=React.useState(false);React.useEffect(()=>{try{setRm(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches);setTouch(!window.matchMedia(\"(hover: hover) and (pointer: fine)\").matches);}catch(e){}},[]);return{still:isStatic||rm,touch,isStatic};}/** Hidden per-breakpoint control: the width a component lays itself out for before JavaScript measures it.\n *  Set to 810 on every Tablet breakpoint copy and 390 on every Phone copy (Framer renders all three copies\n *  in the page HTML), so phones get the phone layout from the first paint and nothing shifts on load. */export const LAYOUT_W_CONTROL={type:ControlType.Number,title:\"Layout width\",defaultValue:1200,min:320,max:1600,hidden:()=>true,description:\"Set per breakpoint (desktop 1200, tablet 810, phone 390)\"};export const lw=props=>{const v=Number(props&&props.layoutWidth);return Number.isFinite(v)&&v>=320?v:1200;};export function useMeasure(initialWidth=1200){const ref=React.useRef(null);const[w,setW]=React.useState(initialWidth);React.useEffect(()=>{const el=ref.current;if(!el)return;const ro=new ResizeObserver(es=>{for(const e of es)setW(e.contentRect.width);});ro.observe(el);setW(el.getBoundingClientRect().width);return()=>ro.disconnect();},[]);return{ref,w};}export function useReveal(rootMargin=\"0px 0px -10% 0px\"){const ref=React.useRef(null);const[shown,setShown]=React.useState(false);const seenHidden=React.useRef(false);React.useEffect(()=>{const el=ref.current;if(!el||shown)return;let io=null;try{io=new IntersectionObserver(es=>{for(const e of es){if(!e.isIntersecting)seenHidden.current=true;else if(seenHidden.current){setShown(true);io&&io.disconnect();}}},{rootMargin});io.observe(el);}catch(e){setShown(true);}const settle=setTimeout(()=>{const r=el.getBoundingClientRect();const vh=window.innerHeight;if(r.top>vh||r.bottom<0)seenHidden.current=true;else if(r.top<vh*.9&&r.bottom>vh*.1){setShown(true);io&&io.disconnect();}},380);const iv=setInterval(()=>{const r=el.getBoundingClientRect();const vh=window.innerHeight;if(r.top<vh*.88&&r.bottom>0){setShown(true);io&&io.disconnect();clearInterval(iv);}},900);return()=>{io&&io.disconnect();clearTimeout(settle);clearInterval(iv);};},[shown,rootMargin]);return{ref,shown};}export function Rise({children,delay=0,still,y=26,style}){const{ref,shown}=useReveal();const on=still||shown;return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{opacity:on?1:0,transform:on?\"translate3d(0,0,0)\":`translate3d(0,${y}px,0)`,transition:still?\"none\":`opacity 0.8s ${EASE_CSS} ${delay}s, transform 0.8s ${EASE_CSS} ${delay}s`,willChange:on?undefined:\"opacity, transform\",...style},children:children});}export function useFollower(initial,fmt,rate=.14){const el=React.useRef(null);const cur=React.useRef(initial);const target=React.useRef(initial);const fmtRef=React.useRef(fmt);fmtRef.current=fmt;React.useEffect(()=>{const off=TICK.add(()=>{const d=target.current-cur.current;if(Math.abs(d)<Math.max(.006,Math.abs(target.current)*5e-6)){if(cur.current!==target.current){cur.current=target.current;if(el.current)el.current.textContent=fmtRef.current(cur.current);}return;}cur.current+=d*rate;if(el.current)el.current.textContent=fmtRef.current(cur.current);});return()=>{off();};},[rate]);return{ref:n=>{el.current=n;},set:v=>{target.current=v;},snap:v=>{cur.current=v;target.current=v;if(el.current)el.current.textContent=fmtRef.current(v);},get:()=>target.current};}export function MaskLines({lines,on,still,size,color=INK,delay=0,weight=600,ls=\"-0.028em\",lh=1.06,align,as=\"h2\",intro=false}){const Tag=as;const css=intro&&!still;return /*#__PURE__*/_jsx(Tag,{style:{textAlign:align,margin:0,font:\"inherit\"},children:lines.map((ln,i)=>/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",overflow:\"hidden\"},children:/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",fontFamily:SANS,fontWeight:weight,fontSize:size,lineHeight:lh,letterSpacing:ls,color,...css?{animation:`synRise 0.85s ${EASE_CSS} ${delay+i*.09}s both`}:{transform:still||on?\"translateY(0%)\":\"translateY(114%)\",transition:still?\"none\":`transform 0.85s ${EASE_CSS} ${delay+i*.09}s`}},className:css?\"syn-rise\":undefined,children:ln})},i))});}export function Eyebrow({text,mint,still}){return /*#__PURE__*/_jsxs(\"div\",{style:{fontFamily:MONO,fontSize:11,letterSpacing:\"0.14em\",color:mint?LUMINOUS_DIM:ACCENT_DEEP,display:\"flex\",alignItems:\"center\",gap:8},children:[/*#__PURE__*/_jsxs(\"span\",{style:{position:\"relative\",width:7,height:7},children:[/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",inset:0,borderRadius:99,background:mint?LUMINOUS:ACCENT}}),!still&&/*#__PURE__*/_jsx(\"span\",{className:\"bp-pulse\",style:{position:\"absolute\",inset:0,borderRadius:99,background:mint?LUMINOUS:ACCENT}})]}),text]});}const GLOBAL_CSS=`\n@keyframes bpPulse { 0% { transform: scale(1); opacity: 0.5; } 100% { transform: scale(2.5); opacity: 0; } }\n.bp-pulse { animation: bpPulse 1.9s ease-out 2; opacity: 0; }\n@keyframes bpBlink { 0%,49% { opacity: 1; } 50%,100% { opacity: 0; } }\n.bp-blink { animation: none; }\n@keyframes bpSpin { to { transform: rotate(360deg); } }\n.bp-spin { animation: none; }\n.bp-spin-slow { animation: none; }\n@keyframes bpSpinR { to { transform: rotate(-360deg); } }\n.bp-spin-r { animation: none; }\n@keyframes bpDrift { to { transform: translate3d(-50%,0,0); } }\n.bp-drift { animation: none; }\n@keyframes bpScan { 0% { transform: translateY(102%); opacity: 0; } 12% { opacity: 1; } 88% { opacity: 1; } 100% { transform: translateY(-102%); opacity: 0; } }\n.bp-scan { animation: bpScan 1.1s cubic-bezier(0.22,0.61,0.36,1) both; }\n@keyframes bpBreathe { 0%,100% { transform: scale(1); } 50% { transform: scale(1.035); } }\n.bp-breathe { animation: none; }\n@media (prefers-reduced-motion: reduce) { .bp-pulse, .bp-blink, .bp-spin, .bp-spin-slow, .bp-spin-r, .bp-drift, .bp-scan, .bp-breathe { animation: none; } }\n/* hero entrances: CSS-only, so they play from the first paint instead of waiting for the page's JavaScript\n   (keeps Largest Contentful Paint fast on phones) */\n@keyframes synIn { from { opacity: 0; transform: translateY(12px); } to { opacity: 1; transform: none; } }\n@keyframes synRise { from { transform: translateY(114%); } to { transform: translateY(0%); } }\n.syn-in { animation: synIn 0.8s ${EASE_CSS} 0.05s both; }\n.syn-in-late { animation: synIn 0.7s ${EASE_CSS} 0.3s both; }\n@media (prefers-reduced-motion: reduce) { .syn-in, .syn-in-late, .syn-rise { animation: none !important; } }\n/* keyboard focus: a visible green ring (3.3:1 on Off White, 5:1 on Midnight Navy); mouse clicks show none */\na:focus-visible, button:focus-visible, [role=\"tab\"]:focus-visible, [role=\"radio\"]:focus-visible, [tabindex]:focus-visible { outline: 2px solid ${ACCENT}; outline-offset: 3px; border-radius: 4px; }\ninput:focus-visible, textarea:focus-visible, select:focus-visible { outline: 2px solid ${ACCENT} !important; outline-offset: 1px; }\ninput[type=\"range\"]:focus-visible { outline-offset: 4px; }\n/* \"Skip to content\": hidden until it receives keyboard focus */\n.syn-skip { position: absolute; left: 12px; top: -60px; z-index: 100; padding: 10px 14px; border-radius: 8px; background: ${INK}; color: ${PAPER}; font-weight: 600; text-decoration: none; }\n.syn-skip:focus, .syn-skip:focus-visible { top: 10px; }\n/* anchor targets clear the sticky header */\n#calculator { scroll-margin-top: 84px; }\n`;export function RotatingRing({text,size=140,color=ACCENT_DEEP,reverse,still,fontSize=10,style}){const uid=React.useId().replace(/[^a-zA-Z0-9]/g,\"\");const r=size/2-fontSize-2;const c=size/2;return /*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,className:still?undefined:reverse?\"bp-spin-r\":\"bp-spin\",style:{width:size,height:size,flexShrink:0,...style},children:/*#__PURE__*/_jsxs(\"svg\",{viewBox:`0 0 ${size} ${size}`,width:size,height:size,style:{display:\"block\",overflow:\"visible\"},children:[/*#__PURE__*/_jsx(\"defs\",{children:/*#__PURE__*/_jsx(\"path\",{id:uid,d:`M ${c} ${c-r} A ${r} ${r} 0 1 1 ${c-.01} ${c-r}`,fill:\"none\"})}),/*#__PURE__*/_jsx(\"circle\",{cx:c,cy:c,r:r+fontSize+1,fill:\"none\",style:{stroke:HAIR_SOFT},strokeWidth:1}),/*#__PURE__*/_jsx(\"text\",{style:{fontFamily:MONO,fontSize,letterSpacing:\"0.22em\",fill:color},children:/*#__PURE__*/_jsx(\"textPath\",{href:`#${uid}`,children:text})})]})});}export function GhostWord({text,size=240,style,stroke=\"color-mix(in srgb, var(--token-542eba09-bb72-44ba-9d6f-7e757eef23cf, #0A1628) 10%, transparent)\"}){return /*#__PURE__*/_jsx(\"div\",{\"aria-hidden\":true,style:{position:\"absolute\",fontFamily:SANS,fontWeight:700,fontSize:size,lineHeight:.86,letterSpacing:\"-0.045em\",color:\"transparent\",WebkitTextStroke:`1.2px ${stroke}`,userSelect:\"none\",pointerEvents:\"none\",whiteSpace:\"nowrap\",...TNUM,...style},children:text});}export function useTilt(max=6,live=true){const ref=React.useRef(null);const tx=React.useRef(0);const ty=React.useRef(0);const cx=React.useRef(0);const cy=React.useRef(0);React.useEffect(()=>{if(!live)return;const off=TICK.add(()=>{cx.current+=(tx.current-cx.current)*.075;cy.current+=(ty.current-cy.current)*.075;if(ref.current)ref.current.style.transform=`perspective(1200px) rotateX(${cy.current.toFixed(3)}deg) rotateY(${cx.current.toFixed(3)}deg)`;});return()=>{off();};},[live]);const onMove=e=>{if(!live||!ref.current)return;const r=ref.current.getBoundingClientRect();tx.current=((e.clientX-r.left)/r.width-.5)*2*max;ty.current=-((e.clientY-r.top)/r.height-.5)*2*max;};const onLeave=()=>{tx.current=0;ty.current=0;};return{ref,onMove,onLeave};}export function WordMask({text,on,still,size,color=INK,weight=500,lh=1.28,ls=\"-0.018em\",baseDelay=.08}){const words=text.split(\" \");return /*#__PURE__*/_jsx(\"span\",{style:{fontFamily:SANS,fontWeight:weight,fontSize:size,lineHeight:lh,letterSpacing:ls,color},children:words.map((w,i)=>/*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",overflow:\"hidden\",verticalAlign:\"bottom\"},children:/*#__PURE__*/_jsxs(\"span\",{style:{display:\"inline-block\",transform:still||on?\"translateY(0%)\":\"translateY(112%)\",transition:still?\"none\":`transform 0.7s ${EASE_CSS} ${baseDelay+i*.035}s`},children:[w,i<words.length-1?\"\\xa0\":\"\"]})},i))});}export function Css(){return /*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:GLOBAL_CSS}});}/** Section padding that scales smoothly from the phone value (390px wide) to the desktop value (1200px) in CSS,\n *  so sections render at their final spacing before JavaScript loads (no layout shift on phones).\n *  Returns null when the two values are not matching lists of px lengths. */function fluidPad(phone,desktop){const a=phone.trim().split(/\\s+/),b=desktop.trim().split(/\\s+/);if(a.length!==b.length||![...a,...b].every(v=>/^\\d+(\\.\\d+)?px$/.test(v)))return null;return a.map((v,i)=>{const m=parseFloat(v),d=parseFloat(b[i]);if(m===d)return m+\"px\";const lo=Math.min(m,d),hi=Math.max(m,d);return`clamp(${lo}px, calc(${m}px + ${((d-m)/810).toFixed(5)} * (100vw - 390px)), ${hi}px)`;}).join(\" \");}/* Type scale and rhythm (type-scale-tune, Oct 2026): the site read as \"zoomed in\" on 1280-1536px laptops.\n * Desktop: display headings -22%, secondary headings -18%, ledes -6%, section padding and large gaps -22%.\n * Phones (under 480px): headings and spacing -10%, body text unchanged. Nav, buttons, form fields and small labels\n * are unchanged. Section padding is scaled here, once, for every Shell: the pad / padM values passed in are the\n * original design values, and only their top and bottom are scaled (side gutters keep the 1200px content width). */const RHYTHM_DESKTOP=.78;const RHYTHM_PHONE=.9;function scaleVertical(pad,k){const v=pad.trim().split(/\\s+/);const vertical=i=>i===0||v.length>=3&&i===2;return v.map((x,i)=>vertical(i)&&/^\\d+(\\.\\d+)?(px)?$/.test(x)?Math.round(parseFloat(x)*k)+\"px\":x).join(\" \");}export function Shell({children,bg=PAPER,pad=\"56px 40px\",padM=\"40px 20px\",compact,style,innerStyle,id}){const d=scaleVertical(pad,RHYTHM_DESKTOP),m=scaleVertical(padM,RHYTHM_PHONE);return /*#__PURE__*/_jsx(\"div\",{id:id,style:{width:\"100%\",background:bg,fontFamily:SANS,position:\"relative\",overflow:\"hidden\",...style},children:/*#__PURE__*/_jsx(\"div\",{style:{maxWidth:1200,margin:\"0 auto\",padding:fluidPad(m,d)??(compact?m:d),position:\"relative\",...innerStyle},children:children})});}/* inner-page section shell: tighter padding than the home sections */export function InnerShell(props){return /*#__PURE__*/_jsx(Shell,{pad:\"56px 40px\",padM:\"40px 20px\",...props});}\nexport const __FramerMetadata__ = {\"exports\":{\"fmtSigned\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"TICK\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useFollower\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Shell\":{\"type\":\"reactComponent\",\"name\":\"Shell\",\"slots\":[\"children\"],\"annotations\":{\"framerContractVersion\":\"1\"}},\"MaskLines\":{\"type\":\"reactComponent\",\"name\":\"MaskLines\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"RotatingRing\":{\"type\":\"reactComponent\",\"name\":\"RotatingRing\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"easeOut\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useStill\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"GhostWord\":{\"type\":\"reactComponent\",\"name\":\"GhostWord\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"useReveal\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Css\":{\"type\":\"reactComponent\",\"name\":\"Css\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"Rise\":{\"type\":\"reactComponent\",\"name\":\"Rise\",\"slots\":[\"children\"],\"annotations\":{\"framerContractVersion\":\"1\"}},\"lw\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"LAYOUT_W_CONTROL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"useMeasure\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"InnerShell\":{\"type\":\"reactComponent\",\"name\":\"InnerShell\",\"slots\":[\"children\"],\"annotations\":{\"framerContractVersion\":\"1\"}},\"useTilt\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"Eyebrow\":{\"type\":\"reactComponent\",\"name\":\"Eyebrow\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"SCROLL\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"WordMask\":{\"type\":\"reactComponent\",\"name\":\"WordMask\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"fmtMoney\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"clamp01\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"wireScroll\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./motion.map","// The Synteris logo is the clean text wordmark \"Synteris\" (Switzer 600, -0.02em), as in the header.\n// The old logo files in assets/Logos (synteris-logo.svg and the JPGs) are not used.\n// Outlined SVG copies for reuse outside the site: assets/Logos/synteris-wordmark-dark.svg and -white.svg.\nimport{jsx as _jsx}from\"react/jsx-runtime\";import{SITE}from\"https://framerusercontent.com/modules/nXCT63GS9tMsCD7rNUA9/FxNSwdszZ5BVAzAZiWd2/config.js\";import{INK,SANS}from\"https://framerusercontent.com/modules/jJQJadxiyfiEQ1dJxBbB/6VEtEBxp9IBw73pQJbVS/tokens.js\";export function SynterisWordmark({size=21,color=INK}){return /*#__PURE__*/_jsx(\"span\",{style:{fontFamily:SANS,fontSize:size,fontWeight:600,letterSpacing:\"-0.02em\",lineHeight:1,color,whiteSpace:\"nowrap\"},children:SITE.wordmark});}\nexport const __FramerMetadata__ = {\"exports\":{\"SynterisWordmark\":{\"type\":\"reactComponent\",\"name\":\"SynterisWordmark\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Synteris site footer: wordmark and summary, link columns, giant wordmark, legal bottom bar. Content from site/config.ts.\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls}from\"framer\";import{SiteLink,useRouteExists}from\"https://framerusercontent.com/modules/DLif1gKEp0hRaG5h0wGG/REoU3SegWil9xVWKRRLJ/links.js\";import{FOOTER_COLUMNS,SITE}from\"https://framerusercontent.com/modules/nXCT63GS9tMsCD7rNUA9/FxNSwdszZ5BVAzAZiWd2/config.js\";import{SynterisWordmark}from\"https://framerusercontent.com/modules/wxUe6iJaM8V0uvLiespj/6GuMKWJ47OHDrbC4FcJw/brand.js\";import{Css,LAYOUT_W_CONTROL,lw,useMeasure,useReveal,useStill}from\"https://framerusercontent.com/modules/61YXww0YSbehJLdVTN7C/LaxkeCWTt1Bv0u8CsFGy/motion.js\";import{ACCENT,ACCENT_DEEP,EASE_CSS,ELEV,HAIR,HAIR_SOFT,INK,INK2,INK3,LUMINOUS,MONO,PAPER,SANS}from\"https://framerusercontent.com/modules/jJQJadxiyfiEQ1dJxBbB/6VEtEBxp9IBw73pQJbVS/tokens.js\";function FootLink({label,href}){const[h,setH]=React.useState(false);return /*#__PURE__*/_jsxs(SiteLink,{href:href,onMouseEnter:()=>setH(true),onMouseLeave:()=>setH(false),style:{textDecoration:\"none\",color:h?INK:INK2,fontSize:14.5,fontWeight:450,display:\"inline-flex\",alignItems:\"center\",gap:7,transition:\"color .2s ease\",position:\"relative\",width:\"fit-content\"},children:[/*#__PURE__*/_jsx(\"span\",{style:{width:12,height:1.5,background:ACCENT,transform:h?\"scaleX(1)\":\"scaleX(0)\",transformOrigin:\"left\",transition:`transform .25s ${EASE_CSS}`,flexShrink:0,marginLeft:h?0:-19,opacity:h?1:0}}),/*#__PURE__*/_jsx(\"span\",{children:label})]});}/** @framerSupportedLayoutWidth any-prefer-fixed\n *  @framerSupportedLayoutHeight auto\n *  @framerIntrinsicWidth 1200 */export function SiteFooter(props){const{still,touch}=useStill();const exists=useRouteExists();const{ref,w}=useMeasure(lw(props));const compact=w<800;// four link columns: the summary sits above them until there is room for both side by side\nconst stacked=w<1140;const mark=useReveal(\"0px 0px -6% 0px\");const on=still||mark.shown;const toTop=e=>{e.preventDefault();try{window.scrollTo({top:0,behavior:still?\"auto\":\"smooth\"});}catch(err){window.scrollTo(0,0);}};// the giant footer wordmark, spelled out letter by letter (stagger works at any length)\nconst LETTERS=SITE.wordmark.split(\"\");return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{width:\"100%\",background:PAPER,borderTop:`1px solid ${HAIR}`,fontFamily:SANS,position:\"relative\",overflow:\"hidden\"},children:[/*#__PURE__*/_jsx(Css,{}),/*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:1200,margin:\"0 auto\",padding:compact?\"47px 20px 24px\":\"59px 40px 28px\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexDirection:stacked?\"column\":\"row\",gap:stacked?40:48,justifyContent:\"space-between\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:330},children:[/*#__PURE__*/_jsx(\"div\",{style:{marginBottom:18},children:/*#__PURE__*/_jsx(SynterisWordmark,{size:compact?22:24})}),/*#__PURE__*/_jsx(\"p\",{style:{margin:0,color:INK2,fontSize:14.5,lineHeight:1.55},children:SITE.summary})]}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:compact?\"1fr 1fr\":\"repeat(4, minmax(0, auto))\",gap:compact?\"34px 20px\":\"0 56px\"},children:FOOTER_COLUMNS.map(([title,links])=>/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:{fontFamily:MONO,fontSize:11,letterSpacing:\"0.04em\",color:INK3,marginBottom:16},children:title}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:compact?14:11},children:links.filter(([,href])=>exists(href)).map(([label,href])=>/*#__PURE__*/_jsx(FootLink,{label:label,href:href},label))})]},title))}),!compact&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",alignItems:\"flex-end\",justifyContent:\"space-between\",gap:20},children:/*#__PURE__*/_jsx(SiteLink,{href:\"#top\",\"data-totop\":true,onClick:toTop,style:{textDecoration:\"none\",width:46,height:46,borderRadius:10,border:`1px solid ${HAIR}`,display:\"flex\",alignItems:\"center\",justifyContent:\"center\",color:ACCENT_DEEP,fontSize:14,fontWeight:700,background:ELEV,transition:\"all .25s ease\"},onMouseEnter:e=>{const el=e.currentTarget;el.style.background=INK;el.style.color=LUMINOUS;el.style.transform=\"translateY(-3px)\";},onMouseLeave:e=>{const el=e.currentTarget;el.style.background=ELEV;el.style.color=ACCENT_DEEP;el.style.transform=\"translateY(0)\";},\"aria-label\":\"Back to top\",children:\"↑\"})})]}),/*#__PURE__*/_jsx(\"div\",{ref:mark.ref,\"data-bigmark\":true,style:{marginTop:compact?44:64,display:\"flex\",alignItems:\"flex-end\",justifyContent:\"center\",userSelect:\"none\",lineHeight:.8},children:LETTERS.map((l,i)=>// bottom padding keeps descenders (the \"y\") inside the reveal mask\n    /*#__PURE__*/_jsx(\"span\",{style:{display:\"inline-block\",overflow:\"hidden\",fontSize:compact?\"min(19vw, 120px)\":\"min(10.1vw, 170px)\",paddingBottom:\"0.22em\",marginBottom:\"-0.22em\"},children:/*#__PURE__*/_jsx(\"span\",{\"data-mark-letter\":i,style:{display:\"inline-block\",fontFamily:SANS,fontWeight:650,fontSize:compact?\"min(19vw, 120px)\":\"min(10.1vw, 170px)\",letterSpacing:\"-0.05em\",color:INK,transform:on?\"translateY(4%)\":\"translateY(108%)\",transition:still?\"none\":`transform 0.9s ${EASE_CSS} ${.08+i*.06}s`},children:l})},i))}),/*#__PURE__*/_jsxs(\"div\",{\"data-launcher-avoid\":true,style:{marginTop:compact?36:44,paddingTop:20,borderTop:`1px solid ${HAIR_SOFT}`,display:\"flex\",flexDirection:compact?\"column\":\"row\",gap:compact?12:32,justifyContent:\"space-between\",alignItems:compact?\"flex-start\":\"center\"},children:[/*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:820},children:[/*#__PURE__*/_jsx(SiteLink,{href:\"/security\",style:{display:\"inline-block\",fontSize:12.5,fontWeight:500,color:INK2,textDecoration:\"none\",borderBottom:`1px solid ${HAIR}`,marginBottom:8},children:\"ISO 27001:2022 \\xb7 PCI DSS \\xb7 UK hosted \\xb7 GDPR\"}),/*#__PURE__*/_jsxs(\"div\",{style:{fontSize:12.5,lineHeight:1.6,color:INK3},children:[\"\\xa9 \"+SITE.year+\" \",exists(\"/revive\")&&SITE.legalLine.startsWith(SITE.legalEntity)?/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(SiteLink,{href:\"/revive\",style:{textDecoration:\"none\",color:INK2,fontSize:12.5},children:SITE.legalEntity}),SITE.legalLine.slice(SITE.legalEntity.length)]}):SITE.legalLine]})]}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",gap:22,flexShrink:0},children:[[\"Privacy\",\"/privacy\"],[\"Cookies\",\"/cookies\"],[\"Terms\",\"/terms\"]].map(([label,href])=>/*#__PURE__*/_jsx(SiteLink,{href:href,style:{textDecoration:\"none\",color:INK2,fontSize:12.5},children:label},label))})]})]})]});}addPropertyControls(SiteFooter,{layoutWidth:LAYOUT_W_CONTROL});\nexport const __FramerMetadata__ = {\"exports\":{\"SiteFooter\":{\"type\":\"reactComponent\",\"name\":\"SiteFooter\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\",\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Switzer + IBM Plex Mono, registered once through SiteHeader. Every font file is served from Framer's own\n// asset host (framerusercontent.com): no Google Fonts, so visitors' browsers make no request to Google.\nexport const SITE_FONTS=[{family:\"Switzer\",style:\"normal\",weight:\"400\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/BLNB4FAQFNK56DWWNF7PMGTCOTZHOEII/ST3WKSSDMBK2MIQQO3MAVYWLF4FTOLFV/6IN5WOLRCYP4G4MOCOHOMXNON6Q7MDAR.woff2\"},{family:\"Switzer\",style:\"normal\",weight:\"500\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/OYB4CXKJQXKTNSLJMTDQOIVUL2V5EL7S/WYO2P7DQVV5RNXGMCUO2HL4RJP4VFUAS/6XPIMU23OJVRY676OG5YVJMWEHWICATX.woff2\"},{family:\"Switzer\",style:\"normal\",weight:\"600\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/5SZVFDB7V52TI6ULVC6J3WQZQCIZVDV5/ODYPSTCUDMKSTYIPTV4CLQ7URIK7XYBJ/YS3VPNVO4B3TOJMEXDGFZQ4TLZGGSRZC.woff2\"},{family:\"Switzer\",style:\"normal\",weight:\"700\",url:\"https://framerusercontent.com/third-party-assets/fontshare/wf/HBNTRIISA5MEXGL5WPYI7CV2HIWTDV3Q/YDPDINVT673XLXNSTMLG4JNCZZMVVNPN/Y7SCNZJOT2MW5ADSGOFLDGH4TNL4JCQY.woff2\"}];// IBM Plex Mono (SIL Open Font Licence), self-hosted copies of the Latin-subset files Google served (about 15 KB each).\n// Declared here with font-display: swap so text shows immediately in the fallback mono while the font loads.\nconst PLEX=[[\"400\",\"https://framerusercontent.com/assets/u4dQDjIEo6fGXWYzx5xchAw76NM.woff2\"],[\"500\",\"https://framerusercontent.com/assets/0y8OBwGsYgQ4QBMagAznF6huTuI.woff2\"],[\"600\",\"https://framerusercontent.com/assets/zppco6h02pIBwmMMXLeqpaIwFI.woff2\"]];export const PLEX_FONT_CSS=PLEX.map(([w,url])=>`@font-face { font-family: \"IBM Plex Mono\"; font-style: normal; font-weight: ${w}; font-display: swap; src: url(\"${url}\") format(\"woff2\"); unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6, U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC, U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD; }`).join(\" \");\nexport const __FramerMetadata__ = {\"exports\":{\"SITE_FONTS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"PLEX_FONT_CSS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./fonts.map","// The live AI voice demo (\"Talk to our AI voice agent\"), rebuilt from the original Squarespace widget. It is shown in\n// the floating launcher's panel on every page (VoiceLauncher.tsx), not as a Home section. Rebuilt from\n// (notes/voice-widget-squarespace-original.md). Same backend and protocol:\n//   client -> server: {type:\"startSession\", voiceId, agentName}, {type:\"audio\", data: base64 PCM16 16 kHz mono}, {type:\"endSession\"}\n//   server -> client: sessionStarted, audio (base64 PCM16 24 kHz), transcript {role, text}, bargeIn, turnEnd, error {message}\n// Differences from the original, for mobile Safari and Chrome: the microphone is captured at the device's native\n// rate and downsampled to 16 kHz in code (a forced 16 kHz AudioContext is unreliable on iOS); barge-in stops the\n// queued sources instead of recreating the playback context (a context created outside a tap stays muted on iOS).\n// Shown where allowed (site/voice.tsx): previews, the canvas, and synteris.ai while VOICE_DEMO_LIVE is true.\n// No cookies or storage. The microphone is requested only when the visitor presses Start.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{addPropertyControls,ControlType}from\"framer\";import{VOICE_WS_URL}from\"https://framerusercontent.com/modules/nXCT63GS9tMsCD7rNUA9/FxNSwdszZ5BVAzAZiWd2/config.js\";import{EVENTS,track}from\"https://framerusercontent.com/modules/91FrcVFAJzJz8HA28DTr/NoRq2SAVd7OiJaD8Xj2A/analytics.js\";import{useVoiceDemoAllowed}from\"https://framerusercontent.com/modules/F734gdfhNwD3tME9moPb/Nvg6t7asS5ci4zp37Lxz/voice.js\";import{Css,LAYOUT_W_CONTROL,lw,useMeasure,useStill}from\"https://framerusercontent.com/modules/61YXww0YSbehJLdVTN7C/LaxkeCWTt1Bv0u8CsFGy/motion.js\";import{ACCENT,DEEP,MONO,SANS}from\"https://framerusercontent.com/modules/jJQJadxiyfiEQ1dJxBbB/6VEtEBxp9IBw73pQJbVS/tokens.js\";const LIGHT=\"var(--token-db200faa-7b39-456a-99c4-f2a62adbdd33, #F5F5F5)\";const LIGHT_2=\"color-mix(in srgb, var(--token-db200faa-7b39-456a-99c4-f2a62adbdd33, #F5F5F5) 72%, transparent)\";const LINE=\"color-mix(in srgb, var(--token-db200faa-7b39-456a-99c4-f2a62adbdd33, #F5F5F5) 16%, transparent)\";const PANEL=\"color-mix(in srgb, var(--token-db200faa-7b39-456a-99c4-f2a62adbdd33, #F5F5F5) 6%, transparent)\";const MAX_CALL_MS=5*60*1e3;// shown when the voice service fails or can't be reached\nconst UNAVAILABLE=\"The voice agent isn't available right now. Please try again shortly.\";const COMPLETED_MS=30*1e3;const VOICES=[{id:\"amy\",name:\"Amy\",note:\"British\"},{id:\"matthew\",name:\"Matthew\",note:\"US\"}];export{useVoiceDemoAllowed}from\"https://framerusercontent.com/modules/F734gdfhNwD3tME9moPb/Nvg6t7asS5ci4zp37Lxz/voice.js\";const toBase64=bytes=>{let s=\"\";for(let i=0;i<bytes.length;i+=32768)s+=String.fromCharCode.apply(null,Array.from(bytes.subarray(i,i+32768)));return btoa(s);};/** Float32 at the device rate -> Int16 PCM at 16 kHz (averaging downsampler) */function toPcm16k(input,inRate){const ratio=inRate/16e3;const n=Math.floor(input.length/ratio);const out=new Int16Array(n);for(let i=0;i<n;i++){const a=Math.floor(i*ratio),b=Math.min(input.length,Math.floor((i+1)*ratio));let sum=0;for(let j=a;j<b;j++)sum+=input[j];const v=Math.max(-1,Math.min(1,sum/Math.max(1,b-a)));out[i]=v<0?v*32768:v*32767;}return new Uint8Array(out.buffer);}/** base64 PCM16 -> Float32 samples */function fromPcm16(b64){const bin=atob(b64);const bytes=new Uint8Array(bin.length);for(let i=0;i<bin.length;i++)bytes[i]=bin.charCodeAt(i);const pcm=new Int16Array(bytes.buffer,0,Math.floor(bytes.length/2));const f=new Float32Array(pcm.length);for(let i=0;i<pcm.length;i++)f[i]=pcm[i]/32768;return f;}/** @framerSupportedLayoutWidth any-prefer-fixed\n *  @framerSupportedLayoutHeight auto\n *  @framerIntrinsicWidth 1200 */export function VoiceDemo(props){const{heading=\"Talk to our AI voice agent\",subline=\"A live AI agent built on Amazon Nova Sonic. Pick a scenario and play the customer, or ask it about Synteris.\",note=\"Your browser will ask to use your microphone. Conversations are not recorded.\",scenarios=\"Moving home \\xb7 A billing question \\xb7 Booking an engineer \\xb7 More time to pay \\xb7 A complaint\"}=props;const allowed=useVoiceDemoAllowed();// \"panel\": inside the floating launcher (one column, close button); \"section\": a full-width page section\nconst panel=props.variant===\"panel\";const{still}=useStill();const{ref,w}=useMeasure(lw(props));const compact=w<860;const[voice,setVoice]=React.useState(\"amy\");const[status,setStatus]=React.useState(\"idle\");const[message,setMessage]=React.useState(\"\");const[lines,setLines]=React.useState([]);const[elapsed,setElapsed]=React.useState(0);// live call resources\nconst r=React.useRef({});const canvasRef=React.useRef(null);const logRef=React.useRef(null);const active=status===\"connecting\"||status===\"listening\"||status===\"speaking\";const endCall=React.useCallback(why=>{const c=r.current;if(c.ended)return;c.ended=true;try{if(c.ws&&c.ws.readyState===1)c.ws.send(JSON.stringify({type:\"endSession\"}));}catch(e){}try{c.ws&&c.ws.close();}catch(e){}try{c.proc&&(c.proc.onaudioprocess=null);}catch(e){}try{c.stream&&c.stream.getTracks().forEach(t=>t.stop());}catch(e){}try{c.sources&&c.sources.forEach(s=>s.stop());}catch(e){}try{c.micCtx&&c.micCtx.close();}catch(e){}try{c.playCtx&&c.playCtx.close();}catch(e){}clearTimeout(c.limit);clearInterval(c.tick);(c.timers||[]).forEach(t=>clearTimeout(t));if(c.startedAt&&Date.now()-c.startedAt>=COMPLETED_MS)track(EVENTS.voiceCompleted,{voice:c.voice});r.current={ended:true};setStatus(why===\"error\"?\"error\":\"ended\");if(why&&why!==\"error\")setMessage(why);},[]);// end the call when the visitor scrolls the section out of view or leaves the page\nReact.useEffect(()=>{if(!active)return;const el=ref.current;// as a page section the call ends when it scrolls out of view; the floating panel stays in view\nconst io=el&&!panel?new IntersectionObserver(es=>es.forEach(e=>!e.isIntersecting&&endCall(\"The call ended when you scrolled away.\"))):null;if(io&&el)io.observe(el);const hide=()=>document.visibilityState===\"hidden\"&&endCall(\"The call ended when you left the page.\");const leave=()=>endCall();document.addEventListener(\"visibilitychange\",hide);window.addEventListener(\"pagehide\",leave);return()=>{io&&io.disconnect();document.removeEventListener(\"visibilitychange\",hide);window.removeEventListener(\"pagehide\",leave);};},[active,endCall,panel]);React.useEffect(()=>()=>endCall(),[endCall]);// keep the latest transcript line in view\nReact.useEffect(()=>{const el=logRef.current;if(el)el.scrollTop=el.scrollHeight;},[lines]);// waveform: idle line, larger wave while the agent speaks, microphone level while listening\nReact.useEffect(()=>{const cv=canvasRef.current;if(!cv||!allowed)return;const g=cv.getContext(\"2d\");if(!g)return;let raf=0;const data=new Uint8Array(32);const draw=t=>{const W=cv.width=cv.clientWidth*2,H=cv.height=cv.clientHeight*2;g.clearRect(0,0,W,H);g.lineWidth=3;g.strokeStyle=status===\"speaking\"?LUMINOUS_HEX:status===\"listening\"?ACCENT_HEX:\"rgba(245,245,245,0.35)\";g.beginPath();let level=0;const an=r.current.analyser;if(status===\"listening\"&&an){an.getByteFrequencyData(data);level=data.reduce((a,b)=>a+b,0)/data.length/255;}const amp=still?0:status===\"speaking\"?.32:status===\"listening\"?.08+level*.8:.05;for(let x=0;x<=W;x+=4){const y=H/2+Math.sin(x/38+t/260)*H*amp*Math.sin(Math.PI*x/W);x===0?g.moveTo(x,y):g.lineTo(x,y);}g.stroke();raf=requestAnimationFrame(draw);};raf=requestAnimationFrame(draw);return()=>cancelAnimationFrame(raf);},[status,still,allowed]);const start=async()=>{if(active)return;setMessage(\"\");setLines([]);setElapsed(0);const c={voice,sources:[],timers:[],nextStart:0};r.current=c;setStatus(\"connecting\");// create and resume both audio contexts inside the tap (required on iPhone)\nconst AC=window.AudioContext||window.webkitAudioContext;try{c.playCtx=new AC;c.micCtx=new AC;c.playCtx.resume();c.micCtx.resume();}catch(e){setStatus(\"error\");setMessage(\"Your browser can't play audio for this demo.\");return;}try{c.stream=await navigator.mediaDevices.getUserMedia({audio:{echoCancellation:true,noiseSuppression:true,autoGainControl:true,channelCount:1}});}catch(e){const blocked=e&&(e.name===\"NotAllowedError\"||e.name===\"SecurityError\");endCall(\"error\");setMessage(blocked?\"Microphone access was blocked. Allow it in your browser settings, then press Start again.\":\"We couldn't find a microphone on this device.\");return;}if(c.ended)return;// microphone -> analyser (waveform) and 16 kHz PCM16 frames\nconst src=c.micCtx.createMediaStreamSource(c.stream);c.analyser=c.micCtx.createAnalyser();c.analyser.fftSize=64;src.connect(c.analyser);c.proc=c.micCtx.createScriptProcessor(4096,1,1);const mute=c.micCtx.createGain();mute.gain.value=0;src.connect(c.proc);c.proc.connect(mute);mute.connect(c.micCtx.destination);c.proc.onaudioprocess=ev=>{if(!c.live||!c.ws||c.ws.readyState!==1)return;const pcm=toPcm16k(ev.inputBuffer.getChannelData(0),c.micCtx.sampleRate);c.ws.send(JSON.stringify({type:\"audio\",data:toBase64(pcm)}));};// the conversation\nconst agent=VOICES.find(v=>v.id===voice)||VOICES[0];const ws=new WebSocket(VOICE_WS_URL);c.ws=ws;ws.onopen=()=>ws.send(JSON.stringify({type:\"startSession\",voiceId:agent.id,agentName:agent.name}));ws.onmessage=ev=>{let m;try{m=JSON.parse(ev.data);}catch(e){return;}if(c.ended)return;const pc=c.playCtx;if(m.type===\"sessionStarted\"){c.live=true;c.startedAt=Date.now();setStatus(\"listening\");track(EVENTS.voiceStarted,{voice:agent.id});c.limit=setTimeout(()=>endCall(\"The demo ends after 5 minutes. Press Start to talk again.\"),MAX_CALL_MS);c.tick=setInterval(()=>setElapsed(Date.now()-c.startedAt),1e3);}else if(m.type===\"audio\"){const f=fromPcm16(m.data||m.audio||\"\");if(!f.length)return;const buf=pc.createBuffer(1,f.length,24e3);buf.getChannelData(0).set(f);const s=pc.createBufferSource();s.buffer=buf;s.connect(pc.destination);const at=Math.max(pc.currentTime,c.nextStart);s.start(at);c.nextStart=at+buf.duration;c.sources.push(s);s.onended=()=>c.sources=c.sources.filter(x=>x!==s);setStatus(\"speaking\");}else if(m.type===\"transcript\"){const text=String(m.text||m.content||\"\").trim();if(!text)return;const role=m.role===\"user\"?\"user\":\"assistant\";// assistant lines appear when their audio has played\nconst wait=role===\"assistant\"?Math.max(0,(c.nextStart-pc.currentTime)*1e3):0;// consecutive lines from the same speaker join one bubble (the service sends a turn sentence by sentence)\nc.timers.push(setTimeout(()=>!c.ended&&setLines(l=>l.length&&l[l.length-1].role===role?[...l.slice(0,-1),{role,text:l[l.length-1].text+\" \"+text}]:[...l,{role,text}]),wait));}else if(m.type===\"bargeIn\"){c.sources.forEach(s=>{try{s.stop();}catch(e){}});c.sources=[];c.nextStart=pc.currentTime;setStatus(\"listening\");}else if(m.type===\"turnEnd\"){const wait=Math.max(0,(c.nextStart-pc.currentTime)*1e3);c.timers.push(setTimeout(()=>!c.ended&&setStatus(\"listening\"),wait));}else if(m.type===\"error\"){// the service's own wording (e.g. \"Connection to AI lost\") goes to the console for support, not the visitor\ntry{console.warn(\"Voice demo: service error:\",m.message);}catch(e){}endCall(\"error\");setMessage(UNAVAILABLE);}};ws.onerror=()=>{if(c.ended)return;try{console.warn(\"Voice demo: connection to the voice service failed\");}catch(e){}endCall(\"error\");setMessage(UNAVAILABLE);};ws.onclose=ev=>{if(c.ended)return;// 4003: the backend only accepts calls from synteris.ai (previews are refused)\nif(ev.code===4003){endCall(\"error\");setMessage(\"This preview can't reach the voice agent: it only accepts calls from synteris.ai.\");}else endCall(\"The call has ended.\");};};if(!allowed)return /*#__PURE__*/_jsx(\"div\",{ref:ref,style:{width:\"100%\"}});const statusText=status===\"connecting\"?\"Connecting…\":status===\"listening\"?\"Listening. Go ahead and speak.\":status===\"speaking\"?\"Speaking…\":status===\"error\"?message:status===\"ended\"?message||\"The call has ended.\":\"Ready when you are.\";const mmss=`${Math.floor(elapsed/6e4)}:${String(Math.floor(elapsed%6e4/1e3)).padStart(2,\"0\")}`;const chips=scenarios.split(\"\\xb7\").map(x=>x.trim()).filter(Boolean);return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{width:\"100%\",fontFamily:SANS},children:[/*#__PURE__*/_jsx(Css,{}),/*#__PURE__*/_jsx(\"div\",{style:panel?{}:{maxWidth:1200,margin:\"0 auto\",padding:\"clamp(28px, 4vw, 56px) clamp(20px, 3.3vw, 40px)\"},children:/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\",background:DEEP,color:LIGHT,borderRadius:20,padding:panel?\"22px 20px 20px\":\"clamp(24px, 3.6vw, 44px)\",display:\"flex\",flexWrap:\"wrap\",gap:panel?18:\"clamp(24px, 4vw, 48px)\",alignItems:\"stretch\"},children:[props.onClose&&/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:props.onClose,\"aria-label\":\"Close the voice demo\",style:{position:\"absolute\",top:12,right:12,width:36,height:36,borderRadius:10,border:`1px solid ${LINE}`,background:\"transparent\",color:LIGHT,fontSize:18,lineHeight:1,cursor:\"pointer\"},children:/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,children:\"\\xd7\"})}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:panel?\"1 1 100%\":\"1 1 320px\",minWidth:0,paddingRight:panel?40:0},children:[/*#__PURE__*/_jsx(\"h2\",{id:\"voice-demo-heading\",style:{margin:0,fontSize:panel?24:\"clamp(28px, 2.4vw + 16px, 44px)\",fontWeight:600,letterSpacing:\"-0.025em\",lineHeight:1.1,color:LIGHT},children:heading}),/*#__PURE__*/_jsx(\"p\",{style:{margin:panel?\"10px 0 0\":\"14px 0 0\",fontSize:panel?15:\"clamp(15.5px, 0.25vw + 14.6px, 17.5px)\",lineHeight:1.55,color:LIGHT_2,maxWidth:520},children:subline}),chips.length>0&&/*#__PURE__*/_jsx(\"ul\",{\"aria-label\":\"Scenarios to try\",style:{listStyle:\"none\",margin:\"18px 0 0\",padding:0,display:\"flex\",flexWrap:\"wrap\",gap:8},children:chips.map(s=>/*#__PURE__*/_jsx(\"li\",{style:{fontSize:13.5,padding:\"6px 12px\",borderRadius:99,border:`1px solid ${LINE}`,color:LIGHT},children:s},s))}),/*#__PURE__*/_jsx(\"div\",{role:\"radiogroup\",\"aria-label\":\"Voice\",style:{display:\"flex\",gap:8,marginTop:22},children:VOICES.map(v=>{const on=v.id===voice;return /*#__PURE__*/_jsxs(\"button\",{type:\"button\",role:\"radio\",\"aria-checked\":on,disabled:active,onClick:()=>setVoice(v.id),style:{fontFamily:SANS,fontSize:14,fontWeight:500,padding:\"9px 14px\",borderRadius:10,cursor:active?\"default\":\"pointer\",border:`1px solid ${on?LUMINOUS_HEX:LINE}`,background:on?PANEL:\"transparent\",color:LIGHT,opacity:active&&!on?.5:1},children:[v.name,\" \",/*#__PURE__*/_jsxs(\"span\",{style:{color:LIGHT_2,fontWeight:400},children:[\"(\",v.note,\")\"]})]},v.id);})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",flexWrap:\"wrap\",alignItems:\"center\",gap:14,marginTop:22},children:[!active?/*#__PURE__*/_jsxs(\"button\",{type:\"button\",onClick:start,style:{fontFamily:SANS,fontSize:16,fontWeight:600,padding:\"14px 24px\",borderRadius:10,border:\"none\",cursor:\"pointer\",background:ACCENT,color:DEEP},children:[status===\"ended\"||status===\"error\"?\"Start again\":\"Start\",\" \",/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,children:\"→\"})]}):/*#__PURE__*/_jsx(\"button\",{type:\"button\",onClick:()=>endCall(\"You ended the call.\"),style:{fontFamily:SANS,fontSize:16,fontWeight:600,padding:\"14px 24px\",borderRadius:10,border:`1px solid ${LIGHT_2}`,cursor:\"pointer\",background:\"transparent\",color:LIGHT},children:\"End call\"}),active&&status!==\"connecting\"&&/*#__PURE__*/_jsxs(\"span\",{style:{fontFamily:MONO,fontSize:13,color:LIGHT_2},children:[mmss,\" / 5:00\"]})]}),/*#__PURE__*/_jsx(\"p\",{style:{margin:\"14px 0 0\",fontSize:13.5,lineHeight:1.5,color:LIGHT_2},children:note})]}),/*#__PURE__*/_jsxs(\"div\",{style:{flex:panel?\"1 1 100%\":\"1 1 340px\",minWidth:0,display:\"flex\",flexDirection:\"column\",border:`1px solid ${LINE}`,borderRadius:16,background:PANEL,padding:18},children:[/*#__PURE__*/_jsxs(\"div\",{role:\"status\",\"aria-live\":\"polite\",style:{display:\"flex\",alignItems:\"center\",gap:10,fontSize:14,color:LIGHT},children:[/*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{width:8,height:8,borderRadius:99,background:active?LUMINOUS_HEX:status===\"error\"?\"#E0776F\":LIGHT_2}}),statusText]}),/*#__PURE__*/_jsx(\"canvas\",{ref:canvasRef,\"aria-hidden\":true,style:{width:\"100%\",height:64,marginTop:12}}),/*#__PURE__*/_jsx(\"div\",{ref:logRef,\"aria-label\":\"Conversation transcript\",style:{marginTop:12,minHeight:panel?90:compact?120:160,maxHeight:panel?180:220,overflowY:\"auto\",display:\"flex\",flexDirection:\"column\",gap:8},children:lines.length===0?/*#__PURE__*/_jsx(\"div\",{style:{fontSize:14,color:LIGHT_2,lineHeight:1.5},children:\"The conversation will appear here as you talk.\"}):lines.map((l,i)=>/*#__PURE__*/_jsxs(\"div\",{style:{alignSelf:l.role===\"user\"?\"flex-end\":\"flex-start\",maxWidth:\"88%\",fontSize:14.5,lineHeight:1.45,padding:\"8px 12px\",borderRadius:12,background:l.role===\"user\"?\"rgba(245,245,245,0.1)\":\"rgba(61,213,152,0.12)\",color:LIGHT},children:[/*#__PURE__*/_jsx(\"span\",{style:{display:\"block\",fontSize:11,fontWeight:600,letterSpacing:\"0.04em\",textTransform:\"uppercase\",color:LIGHT_2,marginBottom:2},children:l.role===\"user\"?\"You\":(VOICES.find(v=>v.id===voice)||VOICES[0]).name}),l.text]},i))}),/*#__PURE__*/_jsx(\"div\",{style:{marginTop:\"auto\",paddingTop:12,fontSize:12,color:LIGHT_2},children:\"Powered by Amazon Nova Sonic\"})]})]})})]});}// canvas needs literal colours (CSS variables do not resolve in 2D canvas)\nconst ACCENT_HEX=\"#0E9A6A\";const LUMINOUS_HEX=\"#3DD598\";addPropertyControls(VoiceDemo,{layoutWidth:LAYOUT_W_CONTROL,heading:{type:ControlType.String,title:\"Heading\",defaultValue:\"Talk to our AI voice agent\"},subline:{type:ControlType.String,title:\"Subline\",displayTextArea:true,defaultValue:\"A live AI agent built on Amazon Nova Sonic. Pick a scenario and play the customer, or ask it about Synteris.\"},note:{type:ControlType.String,title:\"Note\",defaultValue:\"Your browser will ask to use your microphone. Conversations are not recorded.\"},scenarios:{type:ControlType.String,title:\"Scenarios\",defaultValue:\"Moving home \\xb7 A billing question \\xb7 Booking an engineer \\xb7 More time to pay \\xb7 A complaint\",description:\"separated by middle dots\"}});\nexport const __FramerMetadata__ = {\"exports\":{\"useVoiceDemoAllowed\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"VoiceDemo\":{\"type\":\"reactComponent\",\"name\":\"VoiceDemo\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerIntrinsicWidth\":\"\",\"framerSupportedLayoutHeight\":\"auto\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Floating \"Talk to our AI agent\" launcher and its panel, on every page (rendered by SiteNav, inside SiteHeader).\n// A calm Midnight Navy pill, bottom-right: microphone icon plus label; icon only on phones. No pulsing, glow or\n// animation. It opens the voice demo (VoiceDemo, panel variant): anchored bottom-right on desktop, a bottom sheet on\n// phones. Text links elsewhere open the same panel (site/voice.tsx, openVoiceDemo).\n// Stays out of the way: hidden while the phone menu is open, and whenever it would overlap an element marked\n// data-launcher-avoid (the enquiry form's submit button, the footer's legal bar). Rendered into document.body so the\n// header's backdrop blur cannot trap its fixed position. On synteris.ai while VOICE_DEMO_LIVE is true (site/voice.tsx).\nimport{jsx as _jsx,jsxs as _jsxs,Fragment as _Fragment}from\"react/jsx-runtime\";import*as React from\"react\";import{createPortal}from\"react-dom\";import{VoiceDemo}from\"https://framerusercontent.com/modules/JWfMQBIQAmMXT2NYFjXr/kmreM5JIEuEULEPKng9Y/VoiceDemo.js\";import{useVoiceDemoAllowed,VOICE_OPEN_EVENT}from\"https://framerusercontent.com/modules/F734gdfhNwD3tME9moPb/Nvg6t7asS5ci4zp37Lxz/voice.js\";import{ACCENT,DEEP,SANS}from\"https://framerusercontent.com/modules/jJQJadxiyfiEQ1dJxBbB/6VEtEBxp9IBw73pQJbVS/tokens.js\";const LIGHT=\"var(--token-db200faa-7b39-456a-99c4-f2a62adbdd33, #F5F5F5)\";const CSS=`\n.syn-voice-launcher { position: fixed; right: 20px; bottom: calc(20px + env(safe-area-inset-bottom, 0px)); z-index: 60; display: inline-flex; align-items: center; gap: 10px; padding: 12px 18px 12px 14px; border-radius: 999px; border: 1px solid transparent; background: ${DEEP}; color: ${LIGHT}; font-family: ${SANS}; font-size: 15px; font-weight: 600; cursor: pointer; box-shadow: 0 8px 24px -12px rgba(10, 22, 40, 0.5); }\n.syn-voice-launcher:hover { border-color: ${ACCENT}; }\n.syn-voice-launcher:hover .syn-voice-mic { color: ${ACCENT}; }\n.syn-voice-launcher[hidden] { display: none; }\n.syn-voice-panel { position: fixed; z-index: 61; right: 20px; bottom: calc(20px + env(safe-area-inset-bottom, 0px)); width: min(440px, calc(100vw - 40px)); max-height: calc(100vh - 110px); overflow-y: auto; border-radius: 20px; box-shadow: 0 24px 60px -20px rgba(10, 22, 40, 0.55); }\n@media (max-width: 640px) {\n  .syn-voice-launcher { right: 16px; bottom: calc(16px + env(safe-area-inset-bottom, 0px)); padding: 0; width: 52px; height: 52px; justify-content: center; gap: 0; }\n  .syn-voice-launcher .syn-voice-label { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }\n  .syn-voice-panel { left: 0; right: 0; bottom: 0; width: auto; max-height: 88vh; border-radius: 20px 20px 0 0; padding-bottom: env(safe-area-inset-bottom, 0px); background: ${DEEP}; }\n}\n`;function Mic(){return /*#__PURE__*/_jsxs(\"svg\",{className:\"syn-voice-mic\",\"aria-hidden\":true,width:\"20\",height:\"20\",viewBox:\"0 0 24 24\",fill:\"none\",stroke:\"currentColor\",strokeWidth:\"2\",strokeLinecap:\"round\",strokeLinejoin:\"round\",children:[/*#__PURE__*/_jsx(\"rect\",{x:\"9\",y:\"3\",width:\"6\",height:\"11\",rx:\"3\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M5 11a7 7 0 0 0 14 0\"}),/*#__PURE__*/_jsx(\"path\",{d:\"M12 18v3\"})]});}export function VoiceLauncher({menuOpen=false}){const allowed=useVoiceDemoAllowed();const[mounted,setMounted]=React.useState(false);const[open,setOpen]=React.useState(false);const[blocked,setBlocked]=React.useState(true)// hidden until the first overlap check\n;const btn=React.useRef(null);const panelRef=React.useRef(null);React.useEffect(()=>setMounted(true),[]);// text links elsewhere open the panel\nReact.useEffect(()=>{const onOpen=()=>setOpen(true);window.addEventListener(VOICE_OPEN_EVENT,onOpen);return()=>window.removeEventListener(VOICE_OPEN_EVENT,onOpen);},[]);// hide the launcher whenever it would overlap the form submit button or the footer legal bar\nReact.useEffect(()=>{if(!mounted||!allowed)return;let raf=0;const check=()=>{raf=0;const b=btn.current;if(!b)return;// measure where the launcher sits even while it is hidden\nconst r={right:window.innerWidth-(window.innerWidth<=640?16:20),bottom:window.innerHeight-(window.innerWidth<=640?16:20)};// while hidden the button measures 0: use its known size (desktop pill about 200 x 48, phone icon 52 x 52)\nconst phone=window.innerWidth<=640;const w=b.offsetWidth||(phone?52:200),h=b.offsetHeight||(phone?52:48);const L=r.right-w-8,T=r.bottom-h-8,R=r.right+8,B=r.bottom+8;const hit=Array.from(document.querySelectorAll(\"[data-launcher-avoid]\")).some(el=>{const e=el.getBoundingClientRect();return e.width>0&&e.left<R&&e.right>L&&e.top<B&&e.bottom>T;});setBlocked(hit);};const queue=()=>{if(!raf)raf=requestAnimationFrame(check);};check();window.addEventListener(\"scroll\",queue,{passive:true});window.addEventListener(\"resize\",queue);// layout changes (fonts, the form, sections revealed): re-check when the page resizes and every half second\nconst ro=typeof ResizeObserver!==\"undefined\"?new ResizeObserver(queue):null;ro&&ro.observe(document.body);const t=setInterval(queue,500);return()=>{window.removeEventListener(\"scroll\",queue);window.removeEventListener(\"resize\",queue);clearInterval(t);ro&&ro.disconnect();if(raf)cancelAnimationFrame(raf);};},[mounted,allowed]);// the panel: focus moves in when it opens, Escape closes it, focus returns to the launcher\nReact.useEffect(()=>{if(!open)return;// the demo renders its controls a moment after mounting: retry briefly until the first button exists\nlet tries=0;const focusIn=()=>{const first=panelRef.current&&panelRef.current.querySelector(\"button\");if(first)first.focus();else if(tries++<20)t=setTimeout(focusIn,50);};let t=setTimeout(focusIn,0);const onKey=e=>e.key===\"Escape\"&&close();window.addEventListener(\"keydown\",onKey);return()=>{clearTimeout(t);window.removeEventListener(\"keydown\",onKey);};},[open])// eslint-disable-line react-hooks/exhaustive-deps\n;const close=()=>{setOpen(false)// unmounting the demo ends any call in progress\n;setTimeout(()=>btn.current&&btn.current.focus(),0);};React.useEffect(()=>{if(menuOpen&&open)setOpen(false);},[menuOpen,open]);if(!mounted||!allowed||typeof document===\"undefined\")return null;return /*#__PURE__*/createPortal(/*#__PURE__*/_jsxs(_Fragment,{children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:CSS}}),/*#__PURE__*/_jsxs(\"button\",{ref:btn,type:\"button\",className:\"syn-voice-launcher\",hidden:open||menuOpen||blocked,\"aria-haspopup\":\"dialog\",\"aria-expanded\":open,\"aria-controls\":\"syn-voice-panel\",\"aria-label\":\"Talk to our AI agent\",onClick:()=>setOpen(true),children:[/*#__PURE__*/_jsx(Mic,{}),/*#__PURE__*/_jsx(\"span\",{className:\"syn-voice-label\",children:\"Talk to our AI agent\"})]}),open&&/*#__PURE__*/_jsx(\"div\",{ref:panelRef,id:\"syn-voice-panel\",className:\"syn-voice-panel\",role:\"dialog\",\"aria-modal\":\"false\",\"aria-labelledby\":\"voice-demo-heading\",children:/*#__PURE__*/_jsx(VoiceDemo,{variant:\"panel\",onClose:close})})]}),document.body);}\nexport const __FramerMetadata__ = {\"exports\":{\"VoiceLauncher\":{\"type\":\"reactComponent\",\"name\":\"VoiceLauncher\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Synteris site navigation. Content comes from site/config.ts; used inside SiteHeader (sticky on every page).\n// \"Book a discovery session\" is always visible as a solid accent button, including on phones.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import{SiteLink,useRouteExists}from\"https://framerusercontent.com/modules/DLif1gKEp0hRaG5h0wGG/REoU3SegWil9xVWKRRLJ/links.js\";import{CtaButton}from\"https://framerusercontent.com/modules/mzh6Ee1s9FemQoNtjygM/gNmurx7GSFPIzltDVgfg/cta.js\";import{createPortal}from\"react-dom\";import{CTA_PRIMARY,NAV_GROUPS,NAV_LINKS,NAV_MENUS,SITE}from\"https://framerusercontent.com/modules/nXCT63GS9tMsCD7rNUA9/FxNSwdszZ5BVAzAZiWd2/config.js\";import{SynterisWordmark}from\"https://framerusercontent.com/modules/wxUe6iJaM8V0uvLiespj/6GuMKWJ47OHDrbC4FcJw/brand.js\";import{loadAnalytics}from\"https://framerusercontent.com/modules/91FrcVFAJzJz8HA28DTr/NoRq2SAVd7OiJaD8Xj2A/analytics.js\";import{VoiceLauncher}from\"https://framerusercontent.com/modules/KoT1iEDE0dp7et2MQ5yR/bXMECi0YUoeXSW5USS48/VoiceLauncher.js\";import{Css,lw,useMeasure}from\"https://framerusercontent.com/modules/61YXww0YSbehJLdVTN7C/LaxkeCWTt1Bv0u8CsFGy/motion.js\";// the page's main heading: the first visible h1 (Framer keeps hidden copies of other breakpoints in the page)\nfunction mainHeading(){if(typeof document===\"undefined\")return null;const all=Array.from(document.querySelectorAll(\"h1\"));return all.find(h=>h.offsetParent!==null)||null;}// \"Skip to content\": moves keyboard focus to the page's main heading (every page has one h1)\nfunction skipToContent(e){const h=mainHeading();if(!h)return;e.preventDefault();if(!h.hasAttribute(\"tabindex\"))h.setAttribute(\"tabindex\",\"-1\");h.focus();h.scrollIntoView({block:\"center\"});}import{ACCENT,HAIR_SOFT,INK,INK2,PAPER,SANS}from\"https://framerusercontent.com/modules/jJQJadxiyfiEQ1dJxBbB/6VEtEBxp9IBw73pQJbVS/tokens.js\";export function SiteNav({layoutWidth}={}){const[ctaLabel,ctaLink]=CTA_PRIMARY;// links to pages not built yet (Phase 2 routes) stay hidden until the page exists\nconst exists=useRouteExists();const links=NAV_LINKS.filter(([,href])=>exists(href));const menuFor=href=>(NAV_MENUS[href]||[]).filter(([,h])=>exists(h));const groupsFor=href=>{const g=NAV_GROUPS[href];if(!g)return null;return{all:g.all,groups:g.groups.map(([t,items])=>[t,items.filter(([,h])=>exists(h))]).filter(([,items])=>items.length>0)};};const itemStyle={display:\"block\",textDecoration:\"none\",color:INK,fontSize:14,fontWeight:500,padding:\"8px 12px\",borderRadius:8,whiteSpace:\"nowrap\"};const hoverOn=e=>e.currentTarget.style.background=HAIR_SOFT;const hoverOff=e=>e.currentTarget.style.background=\"transparent\";const{ref,w}=useMeasure(lw({layoutWidth}));// six links + CTA need ~1020px; below that the phone/tablet menu takes over\nconst compact=w<1040;const[open,setOpen]=React.useState(false);const[hov,setHov]=React.useState(-1);const[mounted,setMounted]=React.useState(false);React.useEffect(()=>setMounted(true),[]);const burgerRef=React.useRef(null);const closeRef=React.useRef(null);// set when a menu link is followed, so closing lands at the top instead of the old scroll position\nconst leaving=React.useRef(false);const follow=()=>{leaving.current=true;setOpen(false);};const menuOpen=compact&&open;// Phone menu: a viewport overlay (portalled to <body>, so the header's place in the page can't move it),\n// with the page behind it pinned in place. overflow: hidden on <html>/<body> is not enough on iOS Safari:\n// it doesn't stop scrolling and it breaks the sticky header, which put the menu at the top of the document.\nReact.useEffect(()=>{if(!menuOpen||typeof document===\"undefined\")return;const bo=document.body;const y=window.scrollY;const prev={position:bo.style.position,top:bo.style.top,left:bo.style.left,right:bo.style.right,width:bo.style.width,overflow:bo.style.overflow};Object.assign(bo.style,{position:\"fixed\",top:`-${y}px`,left:\"0\",right:\"0\",width:\"100%\",overflow:\"hidden\"});const path=window.location.pathname;const onKey=e=>{if(e.key===\"Escape\"){setOpen(false);return;}// keep Tab inside the open menu (aria-modal)\nif(e.key!==\"Tab\")return;const root=document.getElementById(\"syn-mobile-menu\");if(!root)return;const items=Array.from(root.querySelectorAll(\"a[href], button\"));if(!items.length)return;const first=items[0];const last=items[items.length-1];if(e.shiftKey&&document.activeElement===first){e.preventDefault();last.focus();}else if(!e.shiftKey&&document.activeElement===last){e.preventDefault();first.focus();}};const onRoute=()=>setOpen(false);// a client-side route change doesn't fire popstate, so watch the path while the menu is open\nconst iv=window.setInterval(()=>{if(window.location.pathname!==path)setOpen(false);},300);window.addEventListener(\"keydown\",onKey);window.addEventListener(\"popstate\",onRoute);window.addEventListener(\"hashchange\",onRoute);// move focus into the menu straight away (an animation frame can be delayed by the page's own animations)\ncloseRef.current?.focus({preventScroll:true});return()=>{Object.assign(bo.style,prev);window.scrollTo({top:leaving.current?0:y,left:0,behavior:\"instant\"});leaving.current=false;window.clearInterval(iv);window.removeEventListener(\"keydown\",onKey);window.removeEventListener(\"popstate\",onRoute);window.removeEventListener(\"hashchange\",onRoute);burgerRef.current?.focus({preventScroll:true});};},[menuOpen]);React.useEffect(()=>{if(!compact&&open)setOpen(false);},[compact,open]);// Plausible: loads once per page, on the live domain only\nReact.useEffect(()=>{loadAnalytics();// Framer publishes <html> without a lang attribute; screen readers need it to pick UK English\nif(typeof document!==\"undefined\"&&!document.documentElement.lang)document.documentElement.lang=\"en-GB\";// \"Skip to content\" target: the page's main heading\nif(typeof document!==\"undefined\"&&!document.getElementById(\"content\")){const h=mainHeading();if(h){h.id=\"content\";h.setAttribute(\"tabindex\",\"-1\");}}},[]);return /*#__PURE__*/_jsxs(\"div\",{ref:ref,style:{width:\"100%\",// solid Off White so page content never shows through the sticky header. The light blur is desktop\n// only: on phones (iOS Safari) the blur layer let text behind the wordmark show through.\nbackground:PAPER,backdropFilter:w<480?\"none\":\"blur(8px)\",WebkitBackdropFilter:w<480?\"none\":\"blur(8px)\",borderBottom:`1px solid ${HAIR_SOFT}`,fontFamily:SANS,position:\"relative\",zIndex:40},children:[/*#__PURE__*/_jsx(Css,{}),/*#__PURE__*/_jsx(VoiceLauncher,{menuOpen:menuOpen}),/*#__PURE__*/_jsx(\"a\",{href:\"#content\",className:\"syn-skip\",onClick:skipToContent,children:\"Skip to content\"}),/*#__PURE__*/_jsxs(\"div\",{style:{maxWidth:1200,margin:\"0 auto\",padding:compact?w<400?\"0 14px\":\"0 20px\":\"0 40px\",height:68,display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\"},children:[/*#__PURE__*/_jsx(SiteLink,{href:\"/\",\"aria-label\":SITE.name+\" home\",style:{textDecoration:\"none\",display:\"flex\",alignItems:\"center\"},children:/*#__PURE__*/_jsx(SynterisWordmark,{size:w<400?18:21})}),!compact&&/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:28},children:links.map(([label,href],i)=>/*#__PURE__*/_jsxs(\"div\",{style:{position:\"relative\"},onMouseEnter:()=>setHov(i),onMouseLeave:()=>setHov(-1),onFocus:()=>setHov(i),onBlur:e=>{if(!e.currentTarget.contains(e.relatedTarget))setHov(-1);},children:[/*#__PURE__*/_jsxs(SiteLink,{href:href,\"aria-haspopup\":menuFor(href).length?\"true\":undefined,\"aria-expanded\":menuFor(href).length?hov===i:undefined,style:{textDecoration:\"none\",color:hov===i?INK:INK2,fontSize:14.5,fontWeight:500,letterSpacing:\"0.002em\",transition:\"color .18s ease\",position:\"relative\"},children:[label,/*#__PURE__*/_jsx(\"span\",{style:{position:\"absolute\",left:0,right:0,bottom:-4,height:1.5,background:ACCENT,transform:hov===i?\"scaleX(1)\":\"scaleX(0)\",transformOrigin:\"center\",transition:\"transform .22s cubic-bezier(.22,.61,.36,1)\"}})]}),menuFor(href).length>0&&hov===i&&groupsFor(href)&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"100%\",left:-18,paddingTop:16,zIndex:50},children:/*#__PURE__*/_jsxs(\"div\",{style:{background:PAPER,border:`1px solid ${HAIR_SOFT}`,borderRadius:12,padding:10,boxShadow:\"0 18px 40px -18px rgba(10, 22, 40, 0.28)\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{display:\"grid\",gridTemplateColumns:\"repeat(2, minmax(190px, auto))\",gap:8},children:groupsFor(href).groups.map(([gt,items])=>/*#__PURE__*/_jsxs(\"div\",{children:[/*#__PURE__*/_jsx(\"div\",{style:{padding:\"8px 12px 6px\",fontSize:12.5,fontWeight:600,color:INK2},children:gt}),items.map(([cl,ch])=>/*#__PURE__*/_jsx(SiteLink,{href:ch,onClick:()=>setHov(-1),style:itemStyle,onMouseEnter:hoverOn,onMouseLeave:hoverOff,children:cl},ch))]},gt))}),/*#__PURE__*/_jsx(\"div\",{style:{borderTop:`1px solid ${HAIR_SOFT}`,marginTop:8,paddingTop:6},children:/*#__PURE__*/_jsxs(SiteLink,{href:groupsFor(href).all[1],onClick:()=>setHov(-1),style:{...itemStyle,fontWeight:600},onMouseEnter:hoverOn,onMouseLeave:hoverOff,children:[groupsFor(href).all[0],\" →\"]})})]})}),menuFor(href).length>0&&hov===i&&!groupsFor(href)&&/*#__PURE__*/_jsx(\"div\",{style:{position:\"absolute\",top:\"100%\",left:-18,paddingTop:16,zIndex:50},children:/*#__PURE__*/_jsx(\"div\",{style:{minWidth:220,background:PAPER,border:`1px solid ${HAIR_SOFT}`,borderRadius:12,padding:8,boxShadow:\"0 18px 40px -18px rgba(10, 22, 40, 0.28)\"},children:menuFor(href).map(([cl,ch])=>/*#__PURE__*/_jsx(SiteLink,{href:ch,onClick:()=>setHov(-1),style:{display:\"block\",textDecoration:\"none\",color:INK,fontSize:14,fontWeight:500,padding:\"9px 12px\",borderRadius:8},onMouseEnter:e=>e.currentTarget.style.background=HAIR_SOFT,onMouseLeave:e=>e.currentTarget.style.background=\"transparent\",children:cl},ch))})})]},label))}),!compact?/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:22},children:/*#__PURE__*/_jsx(CtaButton,{label:ctaLabel,href:ctaLink,size:\"sm\"})}):/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:8},children:[/*#__PURE__*/_jsx(CtaButton,{label:w<430?\"Book a session\":ctaLabel,href:ctaLink,size:\"sm\"}),/*#__PURE__*/_jsxs(\"button\",{ref:burgerRef,\"aria-label\":\"Menu\",\"aria-haspopup\":\"dialog\",\"aria-expanded\":menuOpen,\"aria-controls\":\"syn-mobile-menu\",onClick:()=>setOpen(!open),style:{width:40,height:40,border:\"none\",background:\"transparent\",cursor:\"pointer\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",alignItems:\"center\",gap:5,padding:0},children:[/*#__PURE__*/_jsx(\"span\",{style:{width:20,height:1.6,background:INK,transition:\"transform .25s\",transform:open?\"translateY(3.3px) rotate(45deg)\":\"none\"}}),/*#__PURE__*/_jsx(\"span\",{style:{width:20,height:1.6,background:INK,transition:\"transform .25s\",transform:open?\"translateY(-3.3px) rotate(-45deg)\":\"none\"}})]})]})]}),mounted&&/*#__PURE__*/createPortal(menuOpen?/*#__PURE__*/_jsxs(\"div\",{id:\"syn-mobile-menu\",className:\"syn-menu-overlay\",role:\"dialog\",\"aria-modal\":\"true\",\"aria-label\":\"Menu\",style:{position:\"fixed\",top:0,left:0,right:0,bottom:0,zIndex:2147483e3,background:PAPER,display:\"flex\",flexDirection:\"column\",fontFamily:SANS},children:[/*#__PURE__*/_jsx(\"style\",{children:`.syn-menu-overlay{height:100vh;height:100dvh;animation:syn-menu-in .2s ease-out}@keyframes syn-menu-in{from{opacity:0}to{opacity:1}}@media (prefers-reduced-motion: reduce){.syn-menu-overlay{animation:none}}`}),/*#__PURE__*/_jsxs(\"div\",{style:{flexShrink:0,height:68,padding:w<400?\"0 14px\":\"0 20px\",display:\"flex\",alignItems:\"center\",justifyContent:\"space-between\",borderBottom:`1px solid ${HAIR_SOFT}`},children:[/*#__PURE__*/_jsx(SiteLink,{href:\"/\",onClick:follow,\"aria-label\":SITE.name+\" home\",style:{textDecoration:\"none\",display:\"flex\",alignItems:\"center\"},children:/*#__PURE__*/_jsx(SynterisWordmark,{size:w<400?18:21})}),/*#__PURE__*/_jsxs(\"div\",{style:{display:\"flex\",alignItems:\"center\",gap:8},children:[/*#__PURE__*/_jsx(\"span\",{onClickCapture:follow,style:{display:\"inline-flex\"},children:/*#__PURE__*/_jsx(CtaButton,{label:w<430?\"Book a session\":ctaLabel,href:ctaLink,size:\"sm\"})}),/*#__PURE__*/_jsxs(\"button\",{ref:closeRef,\"aria-label\":\"Close menu\",onClick:()=>setOpen(false),style:{width:40,height:40,border:\"none\",background:\"transparent\",cursor:\"pointer\",display:\"flex\",flexDirection:\"column\",justifyContent:\"center\",alignItems:\"center\",gap:5,padding:0},children:[/*#__PURE__*/_jsx(\"span\",{style:{width:20,height:1.6,background:INK,transform:\"translateY(3.3px) rotate(45deg)\"}}),/*#__PURE__*/_jsx(\"span\",{style:{width:20,height:1.6,background:INK,transform:\"translateY(-3.3px) rotate(-45deg)\"}})]})]})]}),/*#__PURE__*/_jsx(\"div\",{\"data-lenis-prevent\":true,style:{flex:1,minHeight:0,overflowY:\"auto\",overscrollBehavior:\"contain\",WebkitOverflowScrolling:\"touch\",padding:\"14px 20px 22px\",display:\"flex\",flexDirection:\"column\",gap:4},children:links.map(([label,href])=>/*#__PURE__*/_jsxs(React.Fragment,{children:[/*#__PURE__*/_jsx(SiteLink,{href:href,onClick:follow,style:{textDecoration:\"none\",color:INK,fontSize:17,fontWeight:500,padding:\"11px 2px\",borderBottom:`1px solid ${HAIR_SOFT}`},children:label}),groupsFor(href)?groupsFor(href).groups.map(([gt,items])=>/*#__PURE__*/_jsxs(\"div\",{style:{padding:\"6px 0 2px 16px\"},children:[/*#__PURE__*/_jsx(\"div\",{style:{fontSize:12.5,fontWeight:600,color:INK2,padding:\"6px 0 2px\"},children:gt}),items.map(([cl,ch])=>/*#__PURE__*/_jsx(SiteLink,{href:ch,onClick:follow,style:{display:\"block\",textDecoration:\"none\",color:INK,fontSize:15,fontWeight:450,padding:\"7px 2px\"},children:cl},ch))]},gt)):menuFor(href).map(([cl,ch])=>/*#__PURE__*/_jsx(SiteLink,{href:ch,onClick:follow,style:{textDecoration:\"none\",color:INK2,fontSize:15,fontWeight:450,padding:\"8px 2px 8px 16px\"},children:cl},ch))]},label))})]}):null,document.body)]});}\nexport const __FramerMetadata__ = {\"exports\":{\"SiteNav\":{\"type\":\"reactComponent\",\"name\":\"SiteNav\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./SiteNav.map","// Property-control helpers shared by every Synteris component (empty-field handling, list and cell parsing, row merging).\nexport function ctlFont(v,fallback){if(typeof v!==\"string\")return fallback;const t=v.trim();if(!t||t===\"null\"||t===\"undefined\")return fallback;const clean=t.replace(/[^A-Za-z0-9 ,\"'\\-_]/g,\"\").replace(/\\s+/g,\" \").trim();return clean||fallback;}export function ctlTxt(v,fallback){if(typeof v!==\"string\")return fallback;const t=v.trim();if(!t||t===\"null\"||t===\"undefined\")return fallback;return t;}export function ctlList(v,fallback){if(typeof v!==\"string\")return fallback;const out=v.split(/\\r?\\n/).map(s=>s.trim()).filter(s=>s.length>0&&s!==\"null\");return out.length?out:fallback;}export function ctlCells(v,fallback,n){if(typeof v!==\"string\")return fallback;const out=[];for(const line of v.split(/\\r?\\n/)){const t=line.trim();if(!t||t===\"null\")continue;const cells=t.split(\"\\xb7\").map(s=>s.trim());if(cells.length===n)out.push(cells);}return out.length?out:fallback;}export function ctlNested(v,fallback){if(typeof v!==\"string\")return fallback;const out=[];for(const block of v.split(/\\n\\s*\\n/)){const lines=block.split(/\\r?\\n/).map(s=>s.trim()).filter(s=>s.length>0);if(lines.length<2)continue;const rows=lines.slice(1).map(l=>l.split(\"\\xb7\").map(s=>s.trim())).filter(r=>r.length===2);if(rows.length)out.push([lines[0],rows]);}return out.length?out:fallback;}export function ctlMerge(rows,fallback){const list=Array.isArray(rows)?rows:[];if(!list.length)return fallback;const out=[];for(let i=0;i<list.length;i++){const base=fallback[Math.min(i,fallback.length-1)]||{};const row=list[i]||{};const merged={...base};for(const k of Object.keys(row)){const v=row[k];if(v===undefined||v===null||v===\"null\")continue;if(typeof v===\"string\"&&!v.trim())continue;if(k.endsWith(\"__list\")){merged[k.slice(0,-6)]=ctlList(v,base[k.slice(0,-6)]||[]);continue;}if(k.endsWith(\"__cells2\")){merged[k.slice(0,-8)]=ctlCells(v,base[k.slice(0,-8)]||[],2);continue;}if(k.endsWith(\"__cells4\")){merged[k.slice(0,-8)]=ctlCells(v,base[k.slice(0,-8)]||[],4);continue;}if(k===\"image\"){const s=typeof v===\"string\"?v:v.src;if(s)merged.img=s;continue;}merged[k]=v;}out.push(merged);}return out;}\nexport const __FramerMetadata__ = {\"exports\":{\"ctlFont\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ctlMerge\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ctlNested\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ctlList\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ctlTxt\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ctlCells\":{\"type\":\"function\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}\n//# sourceMappingURL=./controls.map","// Scroll rails used by SiteHeader: SectionRail (home, labelled section dots) and ProgressRail (inner pages, top progress line).\n// Both also start Lenis smooth scrolling on desktop.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import*as React from\"react\";import*as ReactDOM from\"react-dom\";import{ctlCells}from\"https://framerusercontent.com/modules/JnrYTyOjqjqPtAJfvwc2/bdrAdHGnyxpJnrbnxwxs/controls.js\";import{TICK,clamp01,useStill}from\"https://framerusercontent.com/modules/61YXww0YSbehJLdVTN7C/LaxkeCWTt1Bv0u8CsFGy/motion.js\";import{ACCENT,EASE_CSS,INK2,MONO,TNUM}from\"https://framerusercontent.com/modules/jJQJadxiyfiEQ1dJxBbB/6VEtEBxp9IBw73pQJbVS/tokens.js\";/* =================================================================== *//* CINEMA LAYER — smooth scroll + live section rail                     *//* =================================================================== */export const FALLBACK_SEC_LABELS=[[\"01\",\"JOURNEY\"],[\"02\",\"EVIDENCE\"],[\"03\",\"PROOF\"],[\"04\",\"BLOCKS\"],[\"05\",\"STAGES\"],[\"06\",\"SYSTEMS\"],[\"07\",\"ESTIMATE\"],[\"08\",\"RESULTS\"],[\"09\",\"CONTACT\"]];/** @framerSupportedLayoutWidth auto\n *  @framerSupportedLayoutHeight auto */export function SectionRail(props){const SEC_LABELS=ctlCells(props.sections,FALLBACK_SEC_LABELS,2);const{still,touch}=useStill();const[ready,setReady]=React.useState(false);const railRef=React.useRef(null);const fillRef=React.useRef(null);const readoutRef=React.useRef(null);const dotRefs=React.useRef([]);const curRef=React.useRef(-1);/* Lenis smooth scroll (desktop, fine pointer, motion-ok) */React.useEffect(()=>{if(still||touch)return;try{if(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return;}catch(e){}let lenis;let raf=0;(async()=>{try{// site's own copy (site/lenis.ts), loaded only for desktop mouse users: no third-party request\nconst mod=await import(\"https://framerusercontent.com/modules/3QagKoY3shtZKFGMO2bu/HFq6JOMZrjF8BccVWNfG/lenis.js\");const Lenis=mod.default;lenis=new Lenis({lerp:.115,wheelMultiplier:1.02});const loop=t=>{lenis.raf(t);raf=requestAnimationFrame(loop);};raf=requestAnimationFrame(loop);}catch(e){}})();return()=>{cancelAnimationFrame(raf);try{lenis&&lenis.destroy();}catch(e){}};},[still,touch]);/* rail progress + active section */React.useEffect(()=>{if(still||touch)return;setReady(true);const off=TICK.add(()=>{if(window.innerWidth<1180){if(railRef.current)railRef.current.style.opacity=\"0\";return;}const docH=document.documentElement.scrollHeight-window.innerHeight;const p=clamp01(window.scrollY/Math.max(1,docH));if(railRef.current)railRef.current.style.opacity=\"1\";if(fillRef.current)fillRef.current.style.transform=`scaleY(${p.toFixed(4)})`;/* active section by scroll position against [data-sec] tops (hero = before first) */const secs=document.querySelectorAll(\"[data-sec]\");let active=0;const probe=window.scrollY+window.innerHeight*.4;secs.forEach(s=>{const idx=parseInt(s.getAttribute(\"data-sec\")||\"0\",10)-1;const top=s.getBoundingClientRect().top+window.scrollY;if(probe>=top)active=Math.max(active,idx);});if(active!==curRef.current){curRef.current=active;if(readoutRef.current)readoutRef.current.textContent=SEC_LABELS[active][0]+\" \\xb7 \"+SEC_LABELS[active][1];dotRefs.current.forEach((d,i)=>{if(!d)return;d.style.background=i===active?ACCENT:\"color-mix(in srgb, var(--token-542eba09-bb72-44ba-9d6f-7e757eef23cf, #0A1628) 18%, transparent)\";d.style.transform=i===active?\"scale(1.5)\":\"scale(1)\";});}});return()=>{off();};},[still,touch]);if(typeof document===\"undefined\"||still||touch||!ready)return /*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{display:\"none\"}});return /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsxs(\"div\",{ref:railRef,\"data-rail\":true,style:{position:\"fixed\",right:26,top:\"50%\",transform:\"translateY(-50%)\",zIndex:60,display:\"flex\",flexDirection:\"column\",alignItems:\"center\",gap:12,pointerEvents:\"none\",fontFamily:MONO,opacity:0,transition:\"opacity .4s ease\"},children:[/*#__PURE__*/_jsx(\"span\",{ref:readoutRef,\"data-rail-readout\":true,style:{fontSize:8.5,letterSpacing:\"0.14em\",color:INK2,writingMode:\"vertical-rl\",...TNUM},children:SEC_LABELS[0][0]+\" \\xb7 \"+SEC_LABELS[0][1]}),/*#__PURE__*/_jsx(\"div\",{style:{position:\"relative\",width:1.5,height:120,background:\"var(--token-d27fde9d-a02c-46bb-a67f-17f46a91d635, rgba(10, 22, 40, 0.12))\",borderRadius:2},children:/*#__PURE__*/_jsx(\"div\",{ref:fillRef,style:{position:\"absolute\",inset:0,background:ACCENT,transformOrigin:\"top\",transform:\"scaleY(0)\",borderRadius:2}})}),/*#__PURE__*/_jsx(\"div\",{style:{display:\"flex\",flexDirection:\"column\",gap:7,alignItems:\"center\"},children:SEC_LABELS.map((s,i)=>/*#__PURE__*/_jsx(\"div\",{ref:el=>{dotRefs.current[i]=el;},style:{width:4.5,height:4.5,borderRadius:99,background:\"color-mix(in srgb, var(--token-542eba09-bb72-44ba-9d6f-7e757eef23cf, #0A1628) 18%, transparent)\",transition:`all .3s ${EASE_CSS}`}},s[0]))})]}),document.body);}/** @framerSupportedLayoutWidth auto\n *  @framerSupportedLayoutHeight auto */export function ProgressRail(){const{still,touch}=useStill();const[ready,setReady]=React.useState(false);const barRef=React.useRef(null);React.useEffect(()=>{if(still||touch)return;try{if(window.matchMedia(\"(prefers-reduced-motion: reduce)\").matches)return;}catch(e){}let lenis;let raf=0;(async()=>{try{// site's own copy (site/lenis.ts), loaded only for desktop mouse users: no third-party request\nconst mod=await import(\"https://framerusercontent.com/modules/3QagKoY3shtZKFGMO2bu/HFq6JOMZrjF8BccVWNfG/lenis.js\");const Lenis=mod.default;lenis=new Lenis({lerp:.115,wheelMultiplier:1.02});const loop=t=>{lenis.raf(t);raf=requestAnimationFrame(loop);};raf=requestAnimationFrame(loop);}catch(e){}})();return()=>{cancelAnimationFrame(raf);try{lenis&&lenis.destroy();}catch(e){}};},[still,touch]);React.useEffect(()=>{if(still||touch)return;setReady(true);const off=TICK.add(()=>{const docH=document.documentElement.scrollHeight-window.innerHeight;const p=clamp01(window.scrollY/Math.max(1,docH));if(barRef.current)barRef.current.style.transform=`scaleX(${p.toFixed(4)})`;});return()=>{off();};},[still,touch]);if(typeof document===\"undefined\"||still||touch||!ready)return /*#__PURE__*/_jsx(\"span\",{\"aria-hidden\":true,style:{display:\"none\"}});return /*#__PURE__*/ReactDOM.createPortal(/*#__PURE__*/_jsx(\"div\",{\"data-progress\":true,style:{position:\"fixed\",top:0,left:0,right:0,height:2,zIndex:70,pointerEvents:\"none\"},children:/*#__PURE__*/_jsx(\"div\",{ref:barRef,style:{position:\"absolute\",inset:0,background:ACCENT,transformOrigin:\"left\",transform:\"scaleX(0)\"}})}),document.body);}\nexport const __FramerMetadata__ = {\"exports\":{\"FALLBACK_SEC_LABELS\":{\"type\":\"variable\",\"annotations\":{\"framerContractVersion\":\"1\"}},\"ProgressRail\":{\"type\":\"reactComponent\",\"name\":\"ProgressRail\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"\",\"framerContractVersion\":\"1\",\"framerSupportedLayoutWidth\":\"auto\"}},\"SectionRail\":{\"type\":\"reactComponent\",\"name\":\"SectionRail\",\"slots\":[],\"annotations\":{\"framerSupportedLayoutHeight\":\"\",\"framerSupportedLayoutWidth\":\"auto\",\"framerContractVersion\":\"1\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}","// Synteris page shell, top half: navigation + scroll rail, as ONE instance per page. (The Basis entrance\n// curtain was removed in Phase 6: it delayed the first view and used browser storage.)\n// Pair with SiteFooter at the bottom of the page. Site-wide content lives in site/config.ts;\n// the only per-page settings are which rail to show and the home section labels.\nimport{jsx as _jsx,jsxs as _jsxs}from\"react/jsx-runtime\";import{addPropertyControls,ControlType,addFonts}from\"framer\";import{PLEX_FONT_CSS,SITE_FONTS}from\"https://framerusercontent.com/modules/idgc1by0qMjqdue2nXgj/dteVpNBYgkw3r3oxyPZ3/fonts.js\";import{SiteNav}from\"https://framerusercontent.com/modules/6F5Bcd8IqKkzgoYHWDlf/Jgb6tYKWwMGgvAS8S0WG/SiteNav.js\";import{LAYOUT_W_CONTROL,lw}from\"https://framerusercontent.com/modules/61YXww0YSbehJLdVTN7C/LaxkeCWTt1Bv0u8CsFGy/motion.js\";import{FALLBACK_SEC_LABELS,ProgressRail,SectionRail}from\"https://framerusercontent.com/modules/G0Z39Grxk90jT5O1JkWA/v156oie4XaDiQkgYJotC/Rails.js\";/**\n * @framerSupportedLayoutWidth any-prefer-fixed\n * @framerSupportedLayoutHeight auto\n * @framerIntrinsicWidth 1200\n */export function SiteHeader(props){const rail=props.rail||\"progress\";return /*#__PURE__*/_jsxs(\"div\",{style:{width:\"100%\",position:\"relative\"},children:[/*#__PURE__*/_jsx(\"style\",{dangerouslySetInnerHTML:{__html:PLEX_FONT_CSS}}),/*#__PURE__*/_jsx(SiteNav,{layoutWidth:lw(props)}),rail===\"sections\"&&/*#__PURE__*/_jsx(SectionRail,{sections:props.sections}),rail===\"progress\"&&/*#__PURE__*/_jsx(ProgressRail,{})]});}addPropertyControls(SiteHeader,{layoutWidth:LAYOUT_W_CONTROL,rail:{type:ControlType.Enum,title:\"Rail\",options:[\"sections\",\"progress\",\"none\"],optionTitles:[\"Section dots (home)\",\"Progress line\",\"None\"],defaultValue:\"progress\"},sections:{type:ControlType.String,title:\"Sections\",displayTextArea:true,description:\"Section dots only: one per line, number \\xb7 label\",defaultValue:FALLBACK_SEC_LABELS.map(r=>r.join(\" \\xb7 \")).join(\"\\n\"),hidden:p=>p.rail!==\"sections\"}});addFonts(SiteHeader,SITE_FONTS);\nexport const __FramerMetadata__ = {\"exports\":{\"SiteHeader\":{\"type\":\"reactComponent\",\"name\":\"SiteHeader\",\"slots\":[],\"annotations\":{\"framerContractVersion\":\"1\",\"framerSupportedLayoutHeight\":\"auto\",\"framerIntrinsicWidth\":\"1200\",\"framerSupportedLayoutWidth\":\"any-prefer-fixed\"}},\"__FramerMetadata__\":{\"type\":\"variable\"}}}"],"mappings":"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"}