// App entry — composes the page from Nav, Hero, content sections, and Footer.
// Lives in its own file (not inline in index.html) because the static-sites
// proxy strips closing tags of unknown elements like <R> from inline scripts.

// Inline logo data URIs. Components fall back to relative `assets/...` paths
// otherwise — and those resolve against the host (e.g. convesio.com) when
// proxied, where they 404. Inlining keeps logos working in any host context.
window.__resources = Object.assign({}, window.__resources, {
  logoDark:  window.__resources?.logoDark  || "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHdpZHRoPSIxNTgiIGhlaWdodD0iMzUiIHZpZXdCb3g9IjAgMCAxNTggMzUiIGZpbGw9Im5vbmUiPjxnIGNsaXAtcGF0aD0idXJsKCNjbGlwMF8xXzgzOCkiPjxwYXRoIGQ9Ik0zNC44OTUxIDAuMDAwOTc2NTYyTDE5Ljc0NTEgOC43NjIzOVYyNi4yMzk2TDM0Ljg5NTEgMzUuMDAxTDUwLjA0NSAyNi4yMzk2VjguNzYyMzlMMzQuODk1MSAwLjAwMDk3NjU2MlpNNDIuNTYxMyAxMS44NjU0TDM0Ljg5NTEgMTYuMjAwNUwyNy4zMjAxIDExLjgxOThMMzQuODk1MSA3LjQzOTA1TDQyLjU2MTMgMTEuODY1NFpNMjYuNDA3NCAxMy4yOEwzNC4wMjggMTcuNzA2M1YyNi42MDQ2TDI2LjQwNzQgMjIuMTc4M1YxMy4yOFpNMzUuNzYyMSAyNi42MDQ2VjE3LjcwNjNMNDMuMzgyNyAxMy4yOFYyMi4xNzgzTDM1Ljc2MjEgMjYuNjA0NloiIGZpbGw9IiNGRjZBNUIiPjwvcGF0aD48cGF0aCBkPSJNMS4xMTc5OSAxMi44MjM3QzEuODYxOCAxMS40NTAxIDIuODk3NjUgMTAuMzg2OSA0LjIxNjQzIDkuNjI5NDFDNS41MzUyIDguODcxOTEgNy4wNTAyIDguNDkzMTYgOC43NTIyOCA4LjQ5MzE2QzEwLjk0NzIgOC40OTMxNiAxMi43NTg4IDkuMDQwNzUgMTQuMTk2MiAxMC4xMzU5QzE1LjYzMzYgMTEuMjMxMSAxNi41OTY1IDEyLjc3MzUgMTcuMDg0NyAxNC43NTM5SDEyLjI2MTRDMTIuMDA1OSAxMy45ODczIDExLjU3NjkgMTMuMzg1IDEwLjk3IDEyLjk0NjlDMTAuMzYzMSAxMi41MDg4IDkuNjEwMTcgMTIuMjg5OCA4LjcxNTc4IDEyLjI4OThDNy40MzgwNyAxMi4yODk4IDYuNDI1MDMgMTIuNzU1MiA1LjY4MTIzIDEzLjY3N0M0LjkzNzQyIDE0LjYwMzMgNC41NjMyMyAxNS45MTc1IDQuNTYzMjMgMTcuNjI0MkM0LjU2MzIzIDE5LjMzMDggNC45Mzc0MiAyMC42MDg1IDUuNjgxMjMgMjEuNTM5NEM2LjQyNTAzIDIyLjQ2NTggNy40MzgwNyAyMi45MjY3IDguNzE1NzggMjIuOTI2N0MxMC41Mjc0IDIyLjkyNjcgMTEuNzA5MyAyMi4xMTkgMTIuMjYxNCAyMC40OTlIMTcuMDg0N0MxNi41OTY1IDIyLjQxNTYgMTUuNjI0NSAyMy45Mzk3IDE0LjE3OCAyNS4wNjY4QzEyLjczMTQgMjYuMTkzOSAxMC45MTk4IDI2Ljc1OTggOC43NDc3MiAyNi43NTk4QzcuMDQ1NjMgMjYuNzU5OCA1LjUzMDY0IDI2LjM4MSA0LjIxMTg3IDI1LjYyODFDMi44OTMwOSAyNC44NzA2IDEuODU3MjQgMjMuODA3NCAxLjExMzQzIDIyLjQzMzhDMC4zNjk2MjMgMjEuMDYwMyAtMC4wMDQ1NjIzOCAxOS40NTg2IC0wLjAwNDU2MjM4IDE3LjYyNDJDLTAuMDA0NTYyMzggMTUuNzg5OCAwLjM2OTYyMyAxNC4xOTI2IDEuMTEzNDMgMTIuODE5MUwxLjExNzk5IDEyLjgyMzdaIiBmaWxsPSIjMEQyNzQzIj48L3BhdGg+PHBhdGggZD0iTTY5LjEyMzkgMTAuNTI0MUM3MC40MjQ0IDExLjg1NjYgNzEuMDcyNCAxMy43MTM4IDcxLjA3MjQgMTYuMDk1OFYyNi40NzcySDY2LjYwMDRWMTYuNzAyN0M2Ni42MDA0IDE1LjI5NzIgNjYuMjQ5IDE0LjIxNTcgNjUuNTQ2MyAxMy40NjI4QzY0Ljg0MzUgMTIuNzA1MyA2My44ODUzIDEyLjMzMTEgNjIuNjcxNCAxMi4zMzExQzYxLjQ1NzYgMTIuMzMxMSA2MC40NjI4IDEyLjcwOTkgNTkuNzUxIDEzLjQ2MjhDNTkuMDM5MSAxNC4yMjAzIDU4LjY3ODYgMTUuMjk3MiA1OC42Nzg2IDE2LjcwMjdWMjYuNDc3Mkg1NC4yMDY2VjguNzgwOTNINTguNjc4NlYxMC45ODVDNTkuMjc2NCAxMC4yMTg0IDYwLjAzODUgOS42MTYgNjAuOTYwMiA5LjE4MjVDNjEuODg2NiA4Ljc0NDQzIDYyLjkwNDIgOC41MjUzOSA2NC4wMTMgOC41MjUzOUM2Ni4xMjEzIDguNTI1MzkgNjcuODIzMyA5LjE5MTYyIDY5LjEyMzkgMTAuNTI0MVoiIGZpbGw9IiMwRDI3NDMiPjwvcGF0aD48cGF0aCBkPSJNODIuNjk5NSAyMi4zNTY0TDg3LjE3MTQgOC43ODA3Nkg5MS45MzA5TDg1LjM4MjcgMjYuNDc3SDc5Ljk1MjRMNzMuNDM2MSA4Ljc4MDc2SDc4LjIyNzVMODIuNjk5NSAyMi4zNTY0WiIgZmlsbD0iIzBEMjc0MyI+PC9wYXRoPjxwYXRoIGQ9Ik0xMTAuNzc3IDE4Ljk3MDNIOTcuODQwM0M5Ny45NDUyIDIwLjI0ODEgOTguMzkyNCAyMS4yNDc0IDk5LjE4MTkgMjEuOTczQzk5Ljk3MTMgMjIuNjk4NSAxMDAuOTM5IDIzLjA1OSAxMDIuMDg5IDIzLjA1OUMxMDMuNzUgMjMuMDU5IDEwNC45MzIgMjIuMzQ3MSAxMDUuNjM0IDIwLjkxODhIMTEwLjQ1OEMxMDkuOTQ3IDIyLjYyMDkgMTA4Ljk2NSAyNC4wMjE4IDEwNy41MTkgMjUuMTIxNkMxMDYuMDcyIDI2LjIxNjggMTA0LjI5MyAyNi43NjQ0IDEwMi4xODQgMjYuNzY0NEMxMDAuNDgyIDI2Ljc2NDQgOTguOTUzNyAyNi4zODU2IDk3LjYwMyAyNS42MzI3Qzk2LjI1MjMgMjQuODc1MiA5NS4xOTgyIDIzLjgwNzQgOTQuNDQwNyAyMi40MjAyQzkzLjY4MzIgMjEuMDM3NSA5My4zMDkgMTkuNDQwNCA5My4zMDkgMTcuNjI4OEM5My4zMDkgMTUuODE3MiA5My42ODMyIDE0LjE4ODEgOTQuNDI3IDEyLjgwNTRDOTUuMTcwOCAxMS40MjI4IDk2LjIxNTggMTAuMzU1IDk3LjU1NzQgOS42MTExNkM5OC44OTkgOC44NjczNSAxMDAuNDQxIDguNDkzMTYgMTAyLjE4OSA4LjQ5MzE2QzEwMy45MzcgOC40OTMxNiAxMDUuMzc5IDguODUzNjYgMTA2LjcwNyA5LjU3OTIxQzEwOC4wMzkgMTAuMzA0OCAxMDkuMDcgMTEuMzMxNSAxMDkuODA1IDEyLjY1OTRDMTEwLjU0IDEzLjk5MTkgMTEwLjkwOSAxNS41MjA1IDExMC45MDkgMTcuMjQwOUMxMTAuOTA5IDE3Ljg3OTcgMTEwLjg2OCAxOC40NTQ3IDExMC43ODIgMTguOTY1OEwxMTAuNzc3IDE4Ljk3MDNaTTEwNi4yNzMgMTUuOTY3N0MxMDYuMjUgMTQuODE3OCAxMDUuODM1IDEzLjg5NiAxMDUuMDI3IDEzLjIwMjRDMTA0LjIyIDEyLjUwODggMTAzLjIyOSAxMi4xNjY2IDEwMi4wNTcgMTIuMTY2NkMxMDAuOTQ4IDEyLjE2NjYgMTAwLjAxNyAxMi40OTk3IDk5LjI2NCAxMy4xNzVDOTguNTA2NSAxMy44NDU4IDk4LjA0NTYgMTQuNzc2NyA5Ny44NzIyIDE1Ljk2NzdIMTA2LjI3M1oiIGZpbGw9IiMwRDI3NDMiPjwvcGF0aD48cGF0aCBkPSJNMTE3LjAzOCAyNS45Nzk1QzExNS44ODggMjUuNDU5MyAxMTQuOTggMjQuNzUyIDExNC4zMDkgMjMuODUzQzExMy42MzggMjIuOTU4NiAxMTMuMjczIDIxLjk2ODQgMTEzLjIwNSAyMC44ODIzSDExNy43MDlDMTE3Ljc5NSAyMS41NjIzIDExOC4xMjggMjIuMTI4MSAxMTguNzE3IDIyLjU3NTNDMTE5LjMwMSAyMy4wMjI1IDEyMC4wMzEgMjMuMjQ2MSAxMjAuOTAzIDIzLjI0NjFDMTIxLjc3NCAyMy4yNDYxIDEyMi40MTggMjMuMDc3MyAxMjIuOTAyIDIyLjczNUMxMjMuMzgxIDIyLjM5MjggMTIzLjYxOCAyMS45NTkzIDEyMy42MTggMjEuNDI1NEMxMjMuNjE4IDIwLjg1MDQgMTIzLjMyNiAyMC40MTY5IDEyMi43NDIgMjAuMTM0QzEyMi4xNTggMTkuODQ2NSAxMjEuMjIyIDE5LjUzMTYgMTE5Ljk0OSAxOS4xOTM5QzExOC42MyAxOC44NzQ1IDExNy41NDkgMTguNTQ2IDExNi43MDkgMTguMjAzN0MxMTUuODcgMTcuODYxNSAxMTUuMTQ0IDE3LjM0MTMgMTE0LjUzNyAxNi42Mzg1QzExMy45MyAxNS45MzU4IDExMy42MjkgMTQuOTg2NiAxMTMuNjI5IDEzLjc5NTZDMTEzLjYyOSAxMi44MTQ1IDExMy45MTIgMTEuOTIwMiAxMTQuNDczIDExLjExMjVDMTE1LjAzOSAxMC4zMDQ4IDExNS44NDcgOS42NjU5MSAxMTYuOTAxIDkuMTk1OUMxMTcuOTU1IDguNzI1ODkgMTE5LjE5NiA4LjQ5MzE2IDEyMC42MjUgOC40OTMxNkMxMjIuNzMzIDguNDkzMTYgMTI0LjQxNyA5LjAyMjUgMTI1LjY3MSAxMC4wNzY2QzEyNi45MjYgMTEuMTMwNyAxMjcuNjIgMTIuNTQ5OSAxMjcuNzQ4IDE0LjMzODdIMTIzLjQ2N0MxMjMuNDA0IDEzLjYzNTkgMTIzLjExMSAxMy4wNzQ2IDEyMi41ODcgMTIuNjY0QzEyMi4wNjYgMTIuMjQ4NyAxMjEuMzY4IDEyLjAzODggMTIwLjQ5NyAxMi4wMzg4QzExOS42ODkgMTIuMDM4OCAxMTkuMDY0IDEyLjE4OTQgMTE4LjYzIDEyLjQ4NkMxMTguMTkyIDEyLjc4MjYgMTE3Ljk3MyAxMy4xOTc5IDExNy45NzMgMTMuNzMxOEMxMTcuOTczIDE0LjMyOTUgMTE4LjI3IDE0Ljc4MTMgMTE4Ljg2OCAxNS4wOTE2QzExOS40NjUgMTUuNDAxOSAxMjAuMzkyIDE1LjcxNjggMTIxLjY0NyAxNi4wMzE2QzEyMi45MjQgMTYuMzUxMSAxMjMuOTc4IDE2LjY3OTYgMTI0LjgwOSAxNy4wMjE4QzEyNS42NCAxNy4zNjQxIDEyNi4zNiAxNy44ODg5IDEyNi45NjcgMTguNjA1M0MxMjcuNTc0IDE5LjMxNzIgMTI3Ljg4OSAyMC4yNjE3IDEyNy45MDcgMjEuNDI5OUMxMjcuOTA3IDIyLjQ1MjEgMTI3LjYyNSAyMy4zNjkzIDEyNy4wNjMgMjQuMTc3QzEyNi40OTcgMjQuOTg0NyAxMjUuNjkgMjUuNjE5IDEyNC42MzYgMjYuMDc5OUMxMjMuNTgxIDI2LjU0MDggMTIyLjM1NCAyNi43NjQ0IDEyMC45NDggMjYuNzY0NEMxMTkuNTQzIDI2Ljc2NDQgMTE4LjIwMSAyNi41MDQyIDExNy4wNTIgMjUuOTg0TDExNy4wMzggMjUuOTc5NVoiIGZpbGw9IiMwRDI3NDMiPjwvcGF0aD48cGF0aCBkPSJNMTM2LjA0NCA4Ljc4MDc2VjI2LjQ3N0gxMzEuNTcyVjguNzgwNzZIMTM2LjA0NFoiIGZpbGw9IiMwRDI3NDMiPjwvcGF0aD48cGF0aCBkPSJNMTQzLjcxIDI1LjYyODNDMTQyLjM0NSAyNC44NzA4IDE0MS4yNzggMjMuODAzIDE0MC40OTcgMjIuNDE1OEMxMzkuNzIyIDIxLjAzMzEgMTM5LjMyOSAxOS40MzYgMTM5LjMyOSAxNy42MjQ0QzEzOS4zMjkgMTUuODEyOCAxMzkuNzMxIDE0LjIxNTYgMTQwLjUyNSAxMi44MzNDMTQxLjMyMyAxMS40NTAzIDE0Mi40MTQgMTAuMzc3OSAxNDMuODAxIDkuNjI1MDFDMTQ1LjE4NCA4Ljg2NzUyIDE0Ni43MzEgOC40ODg3NyAxNDguNDMzIDguNDg4NzdDMTUwLjEzNSA4LjQ4ODc3IDE1MS42ODIgOC44Njc1MiAxNTMuMDY1IDkuNjI1MDFDMTU0LjQ0NyAxMC4zODI1IDE1NS41MzggMTEuNDUwMyAxNTYuMzM2IDEyLjgzM0MxNTcuMTM1IDE0LjIxNTYgMTU3LjUzMiAxNS44MTI4IDE1Ny41MzIgMTcuNjI0NEMxNTcuNTMyIDE5LjQzNiAxNTcuMTIxIDIxLjAzMzEgMTU2LjMwNCAyMi40MTU4QzE1NS40ODMgMjMuNzk4NCAxNTQuMzc5IDI0Ljg3MDggMTUyLjk4MiAyNS42MjgzQzE1MS41ODYgMjYuMzg1OCAxNTAuMDI1IDI2Ljc2IDE0OC4zMDEgMjYuNzZDMTQ2LjU3NiAyNi43NiAxNDUuMDY1IDI2LjM4MTIgMTQzLjcwMSAyNS42MjgzSDE0My43MVpNMTUwLjU5MSAyMi4yNzQzQzE1MS4zMDMgMjEuODgxOSAxNTEuODc0IDIxLjI4ODYgMTUyLjI5OCAyMC41MDM4QzE1Mi43MjIgMTkuNzE0MyAxNTIuOTM3IDE4Ljc1NiAxNTIuOTM3IDE3LjYyODlDMTUyLjkzNyAxNS45NDUxIDE1Mi40OTQgMTQuNjUzNyAxNTEuNjA5IDEzLjc1MDJDMTUwLjcyNCAxMi44NDY3IDE0OS42NDcgMTIuMzkwMyAxNDguMzY5IDEyLjM5MDNDMTQ3LjA5MSAxMi4zOTAzIDE0Ni4wMTkgMTIuODQyMSAxNDUuMTU2IDEzLjc1MDJDMTQ0LjI5NCAxNC42NTM3IDE0My44NjUgMTUuOTQ5NyAxNDMuODY1IDE3LjYyODlDMTQzLjg2NSAxOS4zMDgyIDE0NC4yODUgMjAuNjA0MiAxNDUuMTI5IDIxLjUxMjJDMTQ1Ljk2OSAyMi40MTU4IDE0Ny4wMzIgMjIuODY3NSAxNDguMzA1IDIyLjg2NzVDMTQ5LjExMyAyMi44Njc1IDE0OS44NzUgMjIuNjcxMyAxNTAuNTkxIDIyLjI3ODlWMjIuMjc0M1oiIGZpbGw9IiMwRDI3NDMiPjwvcGF0aD48cGF0aCBkPSJNMTMxLjg3NyA1LjkxOTQyQzEzMS4zNTcgNS40MTc0NyAxMzEuMDkzIDQuNzk2ODcgMTMxLjA5MyA0LjA0ODVDMTMxLjA5MyAzLjMwMDEzIDEzMS4zNTMgMi42Nzk1MyAxMzEuODc3IDIuMTgyMTNDMTMyLjM5OCAxLjY4MDE4IDEzMy4wNTUgMS40MjkyIDEzMy44NCAxLjQyOTJDMTM0LjYyNSAxLjQyOTIgMTM1LjI4MiAxLjY4MDE4IDEzNS44MDYgMi4xODIxM0MxMzYuMzI3IDIuNjg0MDkgMTM2LjU4NyAzLjMwNDY5IDEzNi41ODcgNC4wNDg1QzEzNi41ODcgNC43OTIzIDEzNi4zMjcgNS40MTc0NyAxMzUuODA2IDUuOTE5NDJDMTM1LjI4NiA2LjQyMTM4IDEzNC42MjkgNi42NzIzNSAxMzMuODQgNi42NzIzNUMxMzMuMDUgNi42NzIzNSAxMzIuMzk4IDYuNDIxMzggMTMxLjg3NyA1LjkxOTQyWiIgZmlsbD0iIzBEMjc0MyI+PC9wYXRoPjwvZz48ZGVmcz48Y2xpcFBhdGggaWQ9ImNsaXAwXzFfODM4Ij48cmVjdCB3aWR0aD0iMTU3LjU0MSIgaGVpZ2h0PSIzNSIgZmlsbD0id2hpdGUiIHRyYW5zZm9ybT0idHJhbnNsYXRlKDAgMC4wMDA5NzY1NjIpIj48L3JlY3Q+PC9jbGlwUGF0aD48L2RlZnM+PC9zdmc+",
  logoWhite: window.__resources?.logoWhite || "data:image/svg+xml;base64,PHN2ZyB4bWxucz0iaHR0cDovL3d3dy53My5vcmcvMjAwMC9zdmciIHZpZXdCb3g9IjAgMCA0ODAgMTA2LjgiPjxnIGlkPSJhIj48L2c+PGcgaWQ9ImIiPjxnIGlkPSJjIj48cGF0aCBkPSJNMTA2LjMsMEw2MC4yLDI2Ljh2NTMuM2w0Ni4yLDI2LjcsNDYuMi0yNi43VjI2LjhMMTA2LjMsMFptMjMuNCwzNi4ybC0yMy40LDEzLjItMjMuMS0xMy4zLDIzLjEtMTMuNCwyMy40LDEzLjVabS00OS4yLDQuM2wyMy4yLDEzLjV2MjcuMWwtMjMuMi0xMy41di0yNy4xWm0yOC41LDQwLjZ2LTI3LjFsMjMuMi0xMy41djI3LjFsLTIzLjIsMTMuNVoiIHN0eWxlPSJmaWxsOiNmZjZhNWI7Ij48L3BhdGg+PHBhdGggZD0iTTMuNCwzOS4xYzIuMy00LjIsNS40LTcuNCw5LjQtOS43czguNi0zLjUsMTMuOC0zLjVjNi43LDAsMTIuMiwxLjcsMTYuNiw1LDQuNCwzLjMsNy4zLDgsOC44LDE0LjFoLTE0LjdjLS44LTIuMy0yLjEtNC4yLTMuOS01LjUtMS44LTEuMy00LjEtMi02LjktMi0zLjksMC03LDEuNC05LjIsNC4yLTIuMywyLjgtMy40LDYuOC0zLjQsMTJzMS4xLDkuMSwzLjQsMTEuOWMyLjMsMi44LDUuNCw0LjIsOS4yLDQuMiw1LjUsMCw5LjEtMi41LDEwLjgtNy40aDE0LjdjLTEuNSw1LjgtNC41LDEwLjUtOC45LDEzLjlzLTkuOSw1LjItMTYuNiw1LjJjLTUuMiwwLTkuOC0xLjItMTMuOC0zLjQtNC0yLjMtNy4yLTUuNS05LjQtOS43LTIuMi00LjItMy4zLTktMy4zLTE0LjZzMS4xLTEwLjUsMy40LTE0LjdoMFoiIHN0eWxlPSJmaWxsOiNmZmY7Ij48L3BhdGg+PHBhdGggZD0iTTIxMC43LDMyLjFjNCw0LjEsNS45LDkuNyw1LjksMTd2MzEuNmgtMTMuNnYtMjkuN2MwLTQuMy0xLjEtNy42LTMuMi05LjktMi4xLTIuMy01LjEtMy40LTguOC0zLjRzLTYuNywxLjItOC45LDMuNGMtMi4yLDIuMy0zLjMsNS42LTMuMyw5Ljl2MjkuOGgtMTMuNlYyNi44aDEzLjZ2Ni43YzEuOC0yLjMsNC4xLTQuMiw3LTUuNSwyLjgtMS4zLDUuOS0yLDkuMy0yLDYuNCwwLDExLjYsMi4xLDE1LjYsNi4xWiIgc3R5bGU9ImZpbGw6I2ZmZjsiPjwvcGF0aD48cGF0aCBkPSJNMjUyLDY4LjJsMTMuNi00MS40aDE0LjVsLTIwLDUzLjloLTE2LjZsLTE5LjktNTMuOWgxNC42bDEzLjgsNDEuNFoiIHN0eWxlPSJmaWxsOiNmZmY7Ij48L3BhdGg+PHBhdGggZD0iTTMzNy42LDU3LjloLTM5LjRjLjMsMy45LDEuNyw2LjksNC4xLDkuMiwyLjQsMi4yLDUuNCwzLjMsOC45LDMuMyw1LjEsMCw4LjctMi4yLDEwLjgtNi41aDE0LjdjLTEuNiw1LjItNC41LDkuNS05LDEyLjgtNC40LDMuMy05LjgsNS0xNi4zLDUtNS4yLDAtOS44LTEuMi0xNC0zLjQtNC4xLTIuMy03LjMtNS42LTkuNi05LjgtMi4zLTQuMi0zLjQtOS4xLTMuNC0xNC42czEuMS0xMC41LDMuNC0xNC43LDUuNS03LjUsOS41LTkuN2M0LjEtMi4zLDguOC0zLjQsMTQuMS0zLjRzOS43LDEuMSwxMy44LDMuM2M0LjEsMi4yLDcuMiw1LjMsOS40LDkuNCwyLjIsNC4xLDMuNCw4LjcsMy40LDE0LDAsMS43LS4xLDMuNS0uNCw1LjFoMFptLTEzLjctOS4yYy0uMS0zLjUtMS4zLTYuMy0zLjgtOC40LTIuNS0yLjEtNS41LTMuMi05LjEtMy4yLTMuNCwwLTYuMiwxLTguNSwzLjEtMi4zLDItMy43LDQuOS00LjIsOC41aDI1LjZaIiBzdHlsZT0iZmlsbDojZmZmOyI+PC9wYXRoPjxwYXRoIGQ9Ik0zNTYuNyw3OS4yYy0zLjUtMS42LTYuMy0zLjctOC4zLTYuNS0yLTIuNy0zLjItNS43LTMuNC05LjFoMTMuN2MuMywyLjEsMS4zLDMuOCwzLjEsNS4yLDEuOCwxLjQsNCwyLDYuNywyczQuNi0uNSw2LjEtMS42YzEuNS0xLDIuMi0yLjQsMi4yLTQsMC0xLjgtLjktMy4xLTIuNy0zLjktMS44LS45LTQuNi0xLjgtOC41LTIuOS00LTEtNy4zLTItOS45LTNzLTQuOC0yLjYtNi42LTQuOGMtMS44LTIuMS0yLjgtNS0yLjgtOC43LDAtMywuOS01LjcsMi42LTguMnM0LjItNC40LDcuNC01LjhjMy4yLTEuNCw3LTIuMSwxMS4zLTIuMSw2LjQsMCwxMS42LDEuNiwxNS40LDQuOHM1LjksNy41LDYuMywxM2gtMTNjLS4yLTIuMS0xLjEtMy45LTIuNy01LjEtMS42LTEuMy0zLjctMS45LTYuNC0xLjktMi41LDAtNC40LC41LTUuNywxLjQtMS4zLC45LTIsMi4yLTIsMy44LDAsMS44LC45LDMuMiwyLjcsNC4xLDEuOCwuOSw0LjYsMS45LDguNSwyLjlzNy4xLDIsOS42LDMsNC43LDIuNiw2LjYsNC44YzEuOCwyLjIsMi44LDUsMi45LDguNiwwLDMuMS0uOSw1LjktMi42LDguNHMtNC4yLDQuNC03LjQsNS44Yy0zLjIsMS40LTcsMi4xLTExLjIsMi4xcy04LjQtLjctMTEuOS0yLjNoMFoiIHN0eWxlPSJmaWxsOiNmZmY7Ij48L3BhdGg+PHBhdGggZD0iTTQxNC42LDI2Ljh2NTMuOWgtMTMuNlYyNi44aDEzLjZaIiBzdHlsZT0iZmlsbDojZmZmOyI+PC9wYXRoPjxwYXRoIGQ9Ik00MzgsNzguMmMtNC4yLTIuMy03LjQtNS42LTkuOC05LjgtMi40LTQuMi0zLjYtOS4xLTMuNi0xNC42czEuMi0xMC40LDMuNi0xNC42YzIuNC00LjIsNS44LTcuNSwxMC05LjhzOC45LTMuNSwxNC4xLTMuNSw5LjksMS4yLDE0LjEsMy41LDcuNSw1LjYsMTAsOS44YzIuNCw0LjIsMy42LDkuMSwzLjYsMTQuNnMtMS4zLDEwLjQtMy43LDE0LjZjLTIuNSw0LjItNS45LDcuNS0xMC4xLDkuOC00LjMsMi4zLTksMy40LTE0LjMsMy40cy05LjgtMS4xLTEzLjktMy40aDBabTIxLTEwLjNjMi4yLTEuMiwzLjktMyw1LjItNS40LDEuMy0yLjQsMS45LTUuMywxLjktOC44LDAtNS4xLTEuMy05LjEtNC0xMS44LTIuNy0yLjgtNi00LjEtOS45LTQuMXMtNy4yLDEuNC05LjgsNC4xYy0yLjYsMi44LTMuOSw2LjctMy45LDExLjhzMS4zLDkuMSwzLjksMTEuOGMyLjYsMi44LDUuOCw0LjEsOS43LDQuMSwyLjQsLjEsNC43LS41LDYuOS0xLjdoMFoiIHN0eWxlPSJmaWxsOiNmZmY7Ij48L3BhdGg+PHBhdGggZD0iTTQwMS45LDE4LjFjLTEuNi0xLjUtMi40LTMuNC0yLjQtNS43cy44LTQuMiwyLjQtNS43LDMuNi0yLjMsNi0yLjMsNC40LC44LDYsMi4zLDIuNCwzLjQsMi40LDUuNy0uOCw0LjItMi40LDUuNy0zLjYsMi4zLTYsMi4zLTQuNC0uOC02LTIuM1oiIHN0eWxlPSJmaWxsOiNmZmY7Ij48L3BhdGg+PC9nPjwvZz48L3N2Zz4=",
});

const MotionGlobalStyles = window.MotionGlobalStyles;
const MotionReveal = window.MotionReveal;
const MotionPricingTagger = window.MotionPricingTagger;
const MotionPrimaryCTATagger = window.MotionPrimaryCTATagger;

// Tag feature-card grids with .mo-feat so they pick up hover polish + stagger reveal.
function FeatCardTagger() {
  React.useEffect(() => {
    const tag = () => {
      // Find the section grids that look like "4 equal cards" or "3 equal cards"
      // by their grid-template-columns, and tag those children as feature cards.
      document.querySelectorAll('section div[style*="grid-template-columns"]').forEach(grid => {
        const cols = getComputedStyle(grid).gridTemplateColumns;
        const colCount = cols.split(' ').length;
        if (colCount < 3 || colCount > 4) return;
        // Only if the children look like solid cards (have padding + border-radius)
        [...grid.children].forEach(card => {
          const cs = getComputedStyle(card);
          const hasCardShape =
            parseInt(cs.borderRadius) >= 10 &&
            parseInt(cs.paddingTop) >= 20 &&
            cs.display === 'block';
          if (hasCardShape && !card.classList.contains('mo-feat')) {
            card.classList.add('mo-feat');
          }
        });
      });
    };
    tag();
    const id = setInterval(tag, 500);
    const stop = setTimeout(() => clearInterval(id), 4000);
    return () => { clearInterval(id); clearTimeout(stop); };
  }, []);
  return null;
}

// Wrap everything below the hero in blur-fade reveals.
const R = ({children}) => MotionReveal
  ? <MotionReveal>{children}</MotionReveal>
  : <>{children}</>;

function App() {
  return (
    <>
      {MotionGlobalStyles && <MotionGlobalStyles />}
      <SaaSNav />
      <SaaSHero />
      <R><SaaSWhatIs /></R>
      <R><SaaSHowItWorks /></R>
      <R><SaaSVibeCoding /></R>
      <R><SaaSEdgePerf /></R>
      <R><SaaSDomainsAutodeploy /></R>
      <R><SaaSProof /></R>
      <R><SaaSSupport /></R>
      <R><SaaSPricing /></R>
      <R><SaaSFaq /></R>
      <R><SaaSFinalCta /></R>
      <SaaSFooter />
      {MotionPricingTagger && <MotionPricingTagger />}
      {MotionPrimaryCTATagger && <MotionPrimaryCTATagger />}
      <FeatCardTagger />
    </>
  );
}
ReactDOM.createRoot(document.getElementById('root')).render(<App />);
