{"context":{"domain":"granado-app"},"layers":{"ApplicationLayer":{"reference":"ApplicationLayer","availableInstances":[{"reference":"ComponentsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"SystemsDataSet","params":{"filter":{"domain":"data2"},"pagination":{"size":1},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSource"}}}},{"reference":"ExternalComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"SystemsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5e3b796d6228227ca637d0f4","name":"data2","domain":"data2","organization":"62292184611f480b3191c37c","visibility":"public","updatedAt":"2026-07-27T14:19:36.810Z"}]}},{"reference":"OrganizationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"DataComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@DataSet","reference":"OneFileComponentInstancesDataSet","params":{"pagination":{"size":1},"master":{"dataset":{"component":"data2-core-types@ProcessReference","params":{"reference":"SystemsDataSet"}},"localField":"system","masterField":"_id"},"datasource":{"component":"data2-core-types@ProcessReference","params":{"reference":"FileComponentInstancesDataSource"}}}},{"reference":"ApplicationsDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ServiceComponentInstancesDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@Data2TableDataSource","reference":"FileComponentInstancesDataSource","params":{"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}}]}},{"component":"data2-core@MemoryDataSource","reference":"EmptyDataSource","params":{"initialData":[]}},{"reference":"ComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"UserComponentsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"DataComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ServiceComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ExternalComponentInstancesDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}},{"reference":"ApplicationsDataSet","component":"data2-core@DataSet","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"EmptyDataSource"}}}}],"processesParams":{}},"HostApplicationLayer":{"reference":"HostApplicationLayer","availableInstances":[{"_id":"5f15ff190528b92601890f71","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"SystemsTableDataSource"}},"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"domain"}}},"pk":"_id","fields":[{"component":"data2-core-types@FieldReference","params":{"key":"_id"}},{"component":"data2-core-types@FieldReference","params":{"key":"name"}},{"component":"data2-core-types@FieldReference","params":{"key":"domain"}},{"component":"data2-core-types@FieldReference","params":{"key":"visibility"}},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization._id"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.name"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.billingStatus"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"organization.publicTrial.active"}}},"break":true},{"component":"data2-core-types@FieldReference","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"settings.defaultAccessPolicy"}}},"break":true}],"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"staticPagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}},"policies":[{"component":"data2-core-auth@Policy","params":{"allow":{"params":{"actions":[{"params":{"components":[{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"_id"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"domain"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"},{"params":{"query":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$params.query"}}}},"field":{"component":"data2-core-primitives@String","params":{"content":"customDomains"}},"fieldType":"string"},"component":"data2@7KkQq0vK4a7D2gg6IVJT7"}]},"component":"data2-core-logical-operators@Or"}]},"component":"data2-core-flow@Series"}}}]},"reference":"SystemsDataSet","updatedAt":"2026-08-07T21:51:24.037Z","createdAt":"2020-07-20T20:31:21.838Z"},{"_id":"5f1601ce0528b92601890f7c","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":1000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"sort":{"params.package":1,"params.component":1},"pk":"_id","autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"staticFilter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}},"filter":{"system":{"exists":{"params":{"content":false},"component":"data2-core-primitives@Boolean"}}}},"reference":"ComponentsDataSet","updatedAt":"2025-11-05T19:37:01.935Z","createdAt":"2020-07-20T20:42:54.898Z"},{"_id":"5f9041dbc8da12be8b94aea4","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":2000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentsTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"UserComponentsDataSet","updatedAt":"2025-11-06T21:06:58.095Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"65d8c4fabc9dbb8f94de8d53","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ExternalComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ExternalComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:23.742Z","createdAt":"2024-02-23T16:17:01.816Z"},{"reference":"SystemsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a62e4640613f70fa449ff5d","name":"app","domain":"granado-app","visibility":"public","settings":{"defaultAccessPolicy":"public"},"updatedAt":"2026-08-26T18:18:29.764Z","createdAt":"2026-07-24T04:04:52.993Z"}]}},{"reference":"ComponentsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"5f52a278a575399a45d239b4","component":"data2-core-types@Component","params":{"package":"data2-core-primitives","component":"Router","interactions":{"component":"data2-core-types@FieldSet","params":{"fields":{"goBack":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.goBack","args":[]}}}},"icon":{"component":"data2-core-primitives@String","params":{"content":"arrow-left"}},"visibility":"public"}},"goTo":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"component":"data2-core-types@Reference","params":{"reference":"url"}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}}}]}},"parameters":[{"component":"data2-core-primitives@String","params":{"content":"url"}},{"component":"data2-core-primitives@String","params":{"content":"preserveQuery"}}]},"break":true},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Path to route"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Path to redirect user"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Boolean"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Preserve Query"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Preserve query string parameters  preserve query parameters on navigating."}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"}]}},"open":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"component":"data2-core-types@This","params":{}},"prop":"history.push","args":[{"pathname":{"component":"data2-core-types@Reference","params":{"reference":"value"}}}]}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"share"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}]}},"close":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-types@Function"}},"definition":{"component":"data2-core-functions@Function","params":{"body":{"preventEvaluation":true,"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":"close"}},"parameters":["value"]}},"icon":{"component":"data2-core-primitives@String","params":{"content":"times"}},"visibility":"public","arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Link to open"}},"description":{"component":"data2-core-primitives@String","params":{"content":""}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2-core-types@ComponentParameter"},{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Target"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Where to open the link"}},"visibility":"public","required":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"oneOf":[{"params":{"content":"_blank"},"component":"data2-core-primitives@String"},{"params":{"content":"_self"},"component":"data2-core-primitives@String"},{"params":{"content":"_parent"},"component":"data2-core-primitives@String"},{"params":{"content":"_top"},"component":"data2-core-primitives@String"}]},"component":"data2-core-types@ComponentParameter"}],"description":{"component":"data2-core-primitives@String","params":{"content":"Closes a window that was opened via router.open."}}}}}}}}},{"_id":"620d28658271aa4129919d89","component":"data2-core-types@Component","params":{"package":"data2-interface-services","component":"DeviceController","interactions":{"params":{"fields":{"postMessage":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@String","title":{"component":"data2-core-primitives@String","params":{"content":"data"}}}}]},"component":"data2-core-types@ComponentParameter"},"print":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"zoom":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Number"}},"title":{"component":"data2-core-primitives@String","params":{"content":"zoom"}},"visibility":"public"}}},"visibility":"public"},"component":"data2-core-types@ComponentParameter"}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"share":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}}},"component":"data2-core-types@ComponentParameter"},"clipboard.copy":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"clipboard.paste":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}}}}]},"component":"data2-core-types@ComponentParameter"},"download":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}]},"component":"data2-core-types@ComponentParameter"},"downloadUrl":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Url"}}}}]},"component":"data2-core-types@ComponentParameter"},"promptFiles":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"parameters":{"params":{"fields":{"multiple":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Multiple"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Whether or not to allow selecting multiple files"}},"component":"data2-core-primitives@Boolean"}},"acceptedFormats":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Accepted Formats"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Accepted file formats"}},"component":"data2-core-primitives@String","list":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}},"timeout":{"component":"data2-core-types@ComponentParameter","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Timeout"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Max milliseconds to wait for file upload"}},"component":"data2-core-primitives@Number"}}}},"component":"data2-core-types@FieldSet"}}}],"visibility":"public"},"component":"data2-core-types@ComponentParameter"},"meetingRecord":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","definition":{"params":{"actions":[{"params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"meeting"}},"script":{"component":"data2-core-primitives@String","params":{"content":"(function() {\n  let mediaRecorder;\n  let audioChunks = [];\n  let combinedStream;\n  let audioContext;\n  \n  window.meetingCapture = async function() {\n    try {\n      // Solicitar acesso ao áudio da guia (e vídeo, que será ignorado depois)\n      const tabStream = await navigator.mediaDevices.getDisplayMedia({ \n        video: true, // Necessário para alguns navegadores\n        audio: true\n      });\n      \n      // Remover a trilha de vídeo\n      const tabAudioTrack = tabStream.getAudioTracks()[0];\n      \n      // Solicitar acesso ao microfone\n      const micStream = await navigator.mediaDevices.getUserMedia({ audio: true });\n      const micAudioTrack = micStream.getAudioTracks()[0];\n      \n      // Criar um novo MediaStream com ambas as trilhas de áudio\n      combinedStream = new MediaStream([tabAudioTrack, micAudioTrack]);\n      \n      // Criar um contexto de áudio para misturar os streams\n      audioContext = new AudioContext();\n      const destination = audioContext.createMediaStreamDestination();\n      \n      // Conectar a trilha de áudio da guia\n      const tabSource = audioContext.createMediaStreamSource(new MediaStream([tabAudioTrack]));\n      tabSource.connect(destination);\n      \n      // Conectar a trilha de áudio do microfone\n      const micSource = audioContext.createMediaStreamSource(new MediaStream([micAudioTrack]));\n      micSource.connect(destination);\n      \n      // Iniciar gravação com o stream misturado\n      mediaRecorder = new MediaRecorder(destination.stream);\n      audioChunks = [];\n      mediaRecorder.ondataavailable = (e) => audioChunks.push(e.data);\n      mediaRecorder.start();\n      \n      console.log('Gravação iniciada. Chame meetingCaptureStop() para finalizar.');\n    } catch (error) {\n      console.error('Erro ao iniciar a captura:', error);\n    }\n  };\n  \n  window.meetingCaptureStop = function() {\n    return new Promise((resolve, reject) => {\n      if (!mediaRecorder) {\n        reject('Nenhuma gravação em andamento.');\n        return;\n      }\n      \n      mediaRecorder.onstop = () => {\n        const audioBlob = new Blob(audioChunks, { type: 'audio/webm' });\n        combinedStream.getTracks().forEach(track => track.stop());\n        audioContext.close();\n        \n        resolve(audioBlob);\n        console.log('Gravação finalizada. O arquivo de áudio está pronto para upload.');\n      };\n      \n      mediaRecorder.stop();\n    });\n  };\n})();"}}},"component":"data2-core-web@Script"},{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCapture"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"meetingRecordStop":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"public","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Filename"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Content"}}}},{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Object"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Options"}},"parameters":{"params":{"fields":{"type":{"component":"data2-core-types@ComponentParameter","params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@String"}},"title":{"component":"data2-core-primitives@String","params":{"content":"Mimetype"}}}}}},"component":"data2-core-types@FieldSet"}}}],"definition":{"params":{"actions":[{"component":"data2-core-types@Getter","params":{"module":{"params":{},"component":"data2-core-web@Window"},"prop":{"component":"data2-core-primitives@String","params":{"content":"meetingCaptureStop"}}}}]},"component":"data2-core-flow@Series"}},"component":"data2-core-types@ComponentParameter"},"notify":{"params":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core-primitives@Function"}},"visibility":"private","arguments":[{"component":"data2-core-types@ComponentParameter","params":{"component":"data2-core-primitives@Object","parameters":{"title":{"params":{"component":"data2-core-primitives@String","index":{"component":"data2-core-primitives@Number","params":{"content":0}},"title":{"component":"data2-core-primitives@String","params":{"content":"title"}}},"component":"data2-core-types@ComponentParameter"},"sound":{"params":{"component":"data2-core-types@FileComponentUrlReference","index":{"component":"data2-core-primitives@Number","params":{"content":1}},"title":{"component":"data2-core-primitives@String","params":{"content":"sound"}}},"component":"data2-core-types@ComponentParameter"}},"flat":{"component":"data2-core-primitives@Boolean","params":{"content":true}}}}]},"component":"data2-core-types@ComponentParameter"}}},"component":"data2-core-types@FieldSet"}}},{"_id":"6a91c00796814ecdd8a7a9f7","component":"data2-core-types@Component","system":"6a62e4640613f70fa449ff5d","params":{"extends":"data2-core-primitives@Block","component":"kDeckB2b","package":"granado-app","definition":{"preventEvaluation":true,"component":"data2-core-types@Definition","params":{"def":{"component":"data2-code-components@CodeHost","params":{"code":{"component":"data2-core-primitives@String","params":{"content":"const FONT_CSS = `@font-face{font-family:'AkzExt';src:url(https://granado-app.data2.media/file/EBpu8brvJpn11D4il45TS) format('opentype');font-weight:400;font-display:block}@font-face{font-family:'AkzExtLight';src:url(https://granado-app.data2.media/file/8orsK0wtYTghGT7sGMiC6) format('opentype');font-weight:300;font-display:block}`\nconst PASS='yestemosbananas'\nconst OPEN=false\n\nconst GATE = `<div class=\"gwrap\">\n  <img class=\"gbg\" src=\"https://granado-app.data2.media/file/gypbe6V0A-Zv7jM4xaJ-l\" alt=\"\">\n  <div class=\"gcard\">\n    <div class=\"glock\"><img src=\"https://granado-app.data2.media/file/eNKhy9aF3ky_usZNZkmWt\" style=\"height:22px\" alt=\"Data²\"><span>+</span><img src=\"https://granado-app.data2.media/file/T6YAJeTNwwvYpaJJPQg9K\" style=\"height:14px\" alt=\"Granado\"></div>\n    <div class=\"gsub\">Proposta · Auto-atendimento do canal B2B</div>\n    <input class=\"ginput\" type=\"password\" placeholder=\"Senha de acesso\" autocomplete=\"off\"/>\n    <button class=\"gbtn\">Entrar</button>\n    <div class=\"gerr\">Senha incorreta — tente novamente.</div>\n  </div>\n</div>`\n\nconst DECK = `<div class=\"deckwrap\">\n<header>\n  <img class=\"d2\" src=\"https://granado-app.data2.media/file/eNKhy9aF3ky_usZNZkmWt\" alt=\"Data²\">\n  <img class=\"gr\" src=\"https://granado-app.data2.media/file/T6YAJeTNwwvYpaJJPQg9K\" alt=\"Granado\">\n</header>\n<div class=\"counter\" id=\"counter\">01 — 08</div>\n<div class=\"hint\">↓ navegue</div>\n<nav class=\"dots\" id=\"dots\" aria-label=\"Slides\"></nav>\n\n\n<div class=\"deckroot\">\n<!-- 01 · CAPA -->\n<section class=\"capa\" id=\"capa\">\n  <div class=\"frame kb rv\">\n    <img class=\"bgimg\" src=\"https://granado-app.data2.media/file/gypbe6V0A-Zv7jM4xaJ-l\" alt=\"\">\n    <div class=\"mid\">\n      <div class=\"lockup\">\n        <img class=\"d2m\" src=\"https://granado-app.data2.media/file/eNKhy9aF3ky_usZNZkmWt\" alt=\"Data²\">\n        <span class=\"plus\">+</span>\n        <img class=\"grm\" src=\"https://granado-app.data2.media/file/T6YAJeTNwwvYpaJJPQg9K\" alt=\"Granado\">\n      </div>\n      <div class=\"sub\">Auto-atendimento do canal B2B</div>\n    </div>\n  </div>\n  <div class=\"caption rv\">\n    <div class=\"frase-cap\">We build Data² while imagining a world where things just … work.</div>\n    <div class=\"meta\">Proposta · Agosto 2026</div>\n  </div>\n</section>\n\n<!-- ÍNDICE -->\n<section id=\"indice\">\n  <div class=\"eyebrow rv\">Índice</div>\n  <div class=\"indice rv\">\n    <a href=\"#data2\"><span class=\"n\">01</span><span class=\"t\">Quem somos</span></a>\n    <a href=\"#consultoria\"><span class=\"n\">02</span><span class=\"t\">Como trabalhamos</span></a>\n    <a href=\"#experts\"><span class=\"n\">03</span><span class=\"t\">Domain Experts</span></a>\n    <a href=\"#tese\"><span class=\"n\">04</span><span class=\"t\">A proposta</span></a>\n    <a href=\"#conceito\"><span class=\"n\">05</span><span class=\"t\">O conceito</span></a>\n    <a href=\"#arquitetura\"><span class=\"n\">06</span><span class=\"t\">Arquitetura e integração</span></a>\n    <a href=\"#pratica\"><span class=\"n\">07</span><span class=\"t\">Na prática</span></a>\n    <a href=\"#sprint1\"><span class=\"n\">08</span><span class=\"t\">Sprint 1 · O essencial</span></a>\n    <a href=\"#sprint2\"><span class=\"n\">09</span><span class=\"t\">Sprint 2 · O canal ideal</span></a>\n    <a href=\"#kpis\"><span class=\"n\">10</span><span class=\"t\">O que vamos medir</span></a>\n    <a href=\"#cronograma\"><span class=\"n\">11</span><span class=\"t\">Cronograma</span></a>\n    <a href=\"#investimento\"><span class=\"n\">12</span><span class=\"t\">Investimento</span></a>\n    <a href=\"#kickoff\"><span class=\"n\">13</span><span class=\"t\">Antes do kickoff</span></a>\n  </div>\n</section>\n\n<!-- 02 · DATA² -->\n<section id=\"data2\">\n  <div class=\"eyebrow rv\">Data² · Filosofia e tecnologia</div>\n  <div class=\"split\" style=\"align-items:end;margin-bottom:clamp(26px,5vh,52px)\">\n    <div>\n      <img class=\"logofull rv\" src=\"https://granado-app.data2.media/file/eNKhy9aF3ky_usZNZkmWt\" alt=\"Data²\">\n      <h2 class=\"rv\" style=\"font-size:clamp(24px,3.2vw,46px);line-height:1.14;max-width:16ch\">Necessidade elevada à produção.</h2>\n    </div>\n    <div style=\"display:flex;flex-direction:column;align-items:flex-start;gap:clamp(20px,3.4vh,32px)\">\n      <img class=\"ring rv\" src=\"https://granado-app.data2.media/file/YHYIIb0_WelaXTRzjFKsb\" alt=\"\">\n      <p class=\"apoio destaque rv\" style=\"margin-top:0\">Construímos a Data² imaginando um mundo onde as coisas simplesmente … funcionam. Uma plataforma onde dados, lógica, interfaces e agentes de IA vivem no mesmo runtime — a ideia que o time de negócio descreve hoje é a solução que ele opera amanhã.</p>\n    </div>\n  </div>\n  <div class=\"prods rv\">\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#FA48DC\"></span>Domain</div><p>A inteligência: conversa, decide e raciocina sobre o negócio.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#4866FA\"></span>UI</div><p>Interfaces completas, geradas e evoluídas na plataforma.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#FA4848\"></span>Registry</div><p>Os dados: catálogos, tabelas, milhões de registros tipados.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#8448FA\"></span>Rush</div><p>Escuta tudo que entra: eventos, webhooks, mensagens.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#48FAFA\"></span>Connect</div><p>Integra tudo que sai: ERP, WhatsApp, APIs, e-mail.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#48FAA1\"></span>ID</div><p>Identidade, permissões e políticas de acesso.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#BFFA48\"></span>Cashier</div><p>Transaciona: pagamentos, cobrança, conciliação.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#FADC48\"></span>Media</div><p>Gera imagem e mídia a partir do catálogo e da marca.</p></div>\n  </div>\n</section>\n\n<!-- 03 · CONSULTORIA / SPRINTS -->\n<section id=\"consultoria\">\n  <div class=\"eyebrow rv\">Como trabalhamos</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(30px,6vh,60px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(28px,4vw,56px);line-height:1.12;max-width:16ch\">Sprints que começam num KPI e terminam em produção.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">Nada de projetos de um ano. Cada sprint ataca um problema medível, com escopo fechado, custo conhecido e resultado rodando em semanas.</p>\n  </div>\n  <div class=\"pilares\">\n    <div class=\"pilar rv d2\"><span class=\"k\">01 · KPI</span><div class=\"t\">Escolhemos o número que precisa mexer</div><p>Reativação, conversão, custo de atendimento. O sprint nasce de um indicador de negócio — não de um levantamento de requisitos.</p></div>\n    <div class=\"pilar rv d3\"><span class=\"k\">02 · Sprint</span><div class=\"t\">Semanas, com escopo e custo fechados</div><p>Time sênior da Data² desenha e constrói direto na plataforma. Quem projeta é quem entrega — o know-how não se perde em repasses.</p></div>\n    <div class=\"pilar rv d4\"><span class=\"k\">03 · Produção</span><div class=\"t\">Entrega medida no mesmo KPI</div><p>O sprint termina com a solução em produção e o indicador sendo acompanhado. O que funciona, escala na onda seguinte.</p></div>\n  </div>\n</section>\n\n<!-- 04 · DOMAIN EXPERTS -->\n<section id=\"experts\">\n  <div class=\"eyebrow rv\">Domain Experts</div>\n  <div class=\"split\" style=\"align-items:center\">\n    <div>\n      <h2 class=\"rv\" style=\"font-size:clamp(28px,4vw,56px);line-height:1.12;max-width:15ch\">Tecnologia, com quem conhece a operação por dentro.</h2>\n      <p class=\"apoio rv\">A cada projeto, um parceiro especialista do domínio trabalha lado a lado com o time Data². É essa combinação que nos permite ir além: redesenhar o processo por inteiro, em vez de automatizar o que já não funciona.</p>\n    </div>\n    <div class=\"expert rv d2\">\n      <div class=\"mono\">AS</div>\n      <div class=\"nome\">Ale Schwab</div>\n      <div class=\"firma\">AS.Consulting</div>\n      <p>Especialista em processos de atendimento e operações logísticas. Já está dentro da descoberta deste projeto, ao lado do time Granado.</p>\n    </div>\n  </div>\n</section>\n\n<!-- 05 · STATEMENT -->\n<section class=\"statement\" id=\"tese\">\n  <div class=\"eyebrow rv\">A proposta</div>\n  <div class=\"split\">\n    <h1 class=\"rv\">Atender bem quem o comercial não alcança.</h1>\n    <p class=\"apoio destaque rv\">Os pequenos e médios clientes do portal B2B compram sozinhos, recorrentemente — e hoje não têm com quem falar. A proposta: um canal digital que resolve de ponta a ponta, com o comercial entrando só onde ele importa.</p>\n  </div>\n</section>\n\n<!-- 04 · CONCEITO -->\n<section id=\"conceito\">\n  <div class=\"eyebrow rv\">O conceito</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(30px,6vh,60px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(28px,4vw,60px);line-height:1.12;max-width:15ch\">Um canal que resolve — não roteia.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">O bot antigo terminava quase todo caminho em \"abra um chamado\". O novo canal termina em resposta: consulta os sistemas da Granado (Magento, JD Edwards, OMS) e responde na hora.</p>\n  </div>\n  <div class=\"pilares\">\n    <div class=\"pilar rv d2\"><span class=\"k\">Resolver</span><div class=\"t\">Resposta na hora, com dado de verdade</div><p>Cadastro validado em tempo real com motivo de rejeição na tela, rastreio de pedido, segunda via de NF direto no canal.</p></div>\n    <div class=\"pilar rv d3\"><span class=\"k\">Avisar</span><div class=\"t\">A Granado fala primeiro</div><p>Boleto pendente, pedido cancelado pelo financeiro, produto de volta ao estoque: hoje o cliente descobre sozinho. Passa a ser avisado.</p></div>\n    <div class=\"pilar rv d4\"><span class=\"k\">Vender</span><div class=\"t\">O atendimento fecha pedido</div><p>Catálogo, carrinho e checkout completos dentro da conversa — inclusive split de pagamento quando o limite de boleto não cobre.</p></div>\n  </div>\n</section>\n\n<!-- ARQUITETURA -->\n<section id=\"arquitetura\">\n  <div class=\"eyebrow rv\">Arquitetura e integração</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(24px,4vh,44px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(26px,3.6vw,52px);line-height:1.12;max-width:16ch\">Aceleramos porque a fundação já está no ar.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">A engine Data² que já roda na Granado é a mesma que vai operar este canal — motor de conversa, catálogo, carrinho, rastreio e crédito já validados em produção com dado real. Integramos por leitura; nada do que funciona hoje é alterado.</p>\n  </div>\n  <div class=\"arq rv\">\n    <div class=\"col\">\n      <div class=\"col-h\">Sistemas Granado · intocados</div>\n      <div class=\"box\"><div class=\"bn\">Magento</div><div class=\"bd\">Portal B2B, catálogo, carrinho</div></div>\n      <div class=\"box\"><div class=\"bn\">JD Edwards</div><div class=\"bd\">ERP, financeiro, boletos</div></div>\n      <div class=\"box\"><div class=\"bn\">OMS + Confirma Fácil</div><div class=\"bd\">Pedidos, NF, entrega</div></div>\n      <div class=\"box\"><div class=\"bn\">Salesforce Service Cloud</div><div class=\"bd\">Cada interação do canal vira caso no histórico do cliente</div></div>\n    </div>\n    <div class=\"link\"><span>leitura · API</span></div>\n    <div class=\"core\">\n      <div class=\"ch\">Data² · engine já publicada</div>\n      <div class=\"box\"><div class=\"bn\">Conectores de leitura</div><div class=\"bd\">Consultam os sistemas na hora da conversa — sem réplica, sem batch</div></div>\n      <div class=\"box\"><div class=\"bn\">Agente de atendimento</div><div class=\"bd\">Regras do canal, macros higienizadas, roteamento pro comercial ≥ R$ 50k</div></div>\n      <div class=\"box\"><div class=\"bn\">Avisos proativos</div><div class=\"bd\">Boleto pendente, estoque de volta, status de cadastro</div></div>\n    </div>\n    <div class=\"link\"><span>conversa</span></div>\n    <div class=\"col\">\n      <div class=\"col-h\">Revendedor</div>\n      <div class=\"box\"><div class=\"bn\">WhatsApp</div><div class=\"bd\">Onde o cliente já está</div></div>\n      <div class=\"box\"><div class=\"bn\">Portal B2B</div><div class=\"bd\">Mesmo atendimento, embarcado no site</div></div>\n      <div class=\"box\"><div class=\"bn\">Comercial Granado</div><div class=\"bd\">Recebe só o que é dele — grandes contas e exceções</div></div>\n    </div>\n  </div>\n</section>\n\n<!-- NA PRÁTICA -->\n<section id=\"pratica\">\n  <div class=\"eyebrow rv\">Na prática · hoje × com o canal</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(18px,3vh,32px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(26px,3.6vw,52px);line-height:1.12;max-width:16ch\">A diferença que o revendedor sente.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">Dois momentos comuns do dia a dia do canal, lado a lado: o caminho de hoje e a mesma tarefa dentro da conversa.</p>\n  </div>\n  <div class=\"comps rv\">\n    <div class=\"comp\">\n      <div class=\"ctit\">Rastrear um pedido</div>\n      <div class=\"hj\">\n        <div class=\"lk\">Hoje · até 48 horas</div>\n        <ul class=\"steps\">\n          <li>O cliente abre uma solicitação no portal de chamados</li>\n          <li>O time consulta o Magento, o OMS e o Confirma Fácil, sistema por sistema</li>\n          <li>A resposta volta dentro do prazo padrão de 48 horas</li>\n        </ul>\n      </div>\n      <div class=\"cn\">\n        <div class=\"lk\">Com o canal · segundos</div>\n        <div class=\"demo\">\n          <div class=\"b cli\">Cadê meu pedido 48122?</div>\n          <div class=\"b can\">Saiu do CD ontem e está com a transportadora — previsão de entrega sexta.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"comp\">\n      <div class=\"ctit\">Montar um pedido — difusores pro escritório</div>\n      <div class=\"hj\">\n        <div class=\"lk\">Hoje · página por página</div>\n        <ul class=\"steps\">\n          <li>Pesquisar cada aroma de difusor, um por um</li>\n          <li>Adicionar item a item, com a página recarregando a cada passo</li>\n          <li>Repetir o processo inteiro pra cada variação</li>\n        </ul>\n      </div>\n      <div class=\"cn\">\n        <div class=\"lk\">Com o canal · uma conversa</div>\n        <div class=\"demo\">\n          <div class=\"b cli\">Quais aromas de difusor vocês têm?</div>\n          <div class=\"b can\">Quatro: alecrim, capim-limão, lavanda e flor de laranjeira.</div>\n          <div class=\"b cli\">Quero 10 de cada.</div>\n          <div class=\"b can\">Fechado: 40 itens no carrinho — link do checkout aqui.</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</section>\n\n<!-- SPRINT 1 -->\n<section id=\"sprint1\">\n  <div class=\"eyebrow rv\">O que vamos construir · <b>Sprint 1 · R$ 100.000</b></div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(16px,2.6vh,28px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(26px,3.4vw,48px);line-height:1.12;max-width:16ch\">O essencial, impecável.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">Comprar, acompanhar e resolver — no WhatsApp e no portal, pra toda a base. Boa parte já roda em produção com dado real: o piloto começa daqui.</p>\n  </div>\n  <div class=\"leg rv\"><span><i class=\"ok\"></i>Validado — já roda em produção</span><span><i class=\"nv\"></i>Novo — o que vamos construir</span></div>\n  <div class=\"frentes rv\">\n    <div class=\"f\"><div class=\"fn\">Gestão de carrinhos <span class=\"ct\">5 validados · 2 novos</span></div>\n      <div class=\"fi ok\">Buscar produto no catálogo</div>\n      <div class=\"fi ok\">Avise-me quando chegar</div>\n      <div class=\"fi ok\">Montar e ver carrinho com total real</div>\n      <div class=\"fi ok\">Remover item / atualizar quantidade</div>\n      <div class=\"fi ok\">Consultar meus pedidos</div>\n      <div class=\"fi nv\">Finalizar em PIX e cartão (página de checkout)</div>\n      <div class=\"fi nv\">Pedido mínimo por região + cupom</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Pedidos e histórico <span class=\"ct\">2 validados · 3 novos</span></div>\n      <div class=\"fi ok\">Rastrear pedido (Confirma Fácil)</div>\n      <div class=\"fi ok\">Consulta de crédito</div>\n      <div class=\"fi nv\">Segunda via de nota fiscal</div>\n      <div class=\"fi nv\">Segunda via de boleto</div>\n      <div class=\"fi nv\">Boleto bloqueado por limite ou pendência</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">WhatsApp + widget web <span class=\"ct\">1 validado · 2 novos</span></div>\n      <div class=\"fi ok\">Motor de atendimento (login, sessão, ações)</div>\n      <div class=\"fi nv\">Widget embarcado no portal B2B</div>\n      <div class=\"fi nv\">Número próprio de WhatsApp</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">FAQs <span class=\"ct\">4 novos</span></div>\n      <div class=\"fi nv\">Explicar o catálogo restrito e as políticas, com dado real</div>\n      <div class=\"fi nv\">Painel de FAQ — o time Granado alimenta sozinho</div>\n      <div class=\"fi nv\">Pesquisa de satisfação (CSAT) ao fim da conversa</div>\n      <div class=\"fi nv\">Respostas fora de escopo roteadas certo</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Fluxos guiados <span class=\"ct\">3 novos</span></div>\n      <div class=\"fi nv\">Avaria, sobra ou item faltando — coleta completa</div>\n      <div class=\"fi nv\">Cancelamento e devolução guiados</div>\n      <div class=\"fi nv\">Saída manual pro portal de chamados</div>\n      <div class=\"fnote\">O bot coleta NF, itens e fotos; a decisão final segue humana, registrada no Service Cloud.</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Service Cloud <span class=\"ct\">2 novos</span></div>\n      <div class=\"fi nv\">Cada interação vira caso, no histórico do cliente</div>\n      <div class=\"fi nv\">Mapeamento das jornadas na própria sprint</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Indicadores <span class=\"ct\">1 novo</span></div>\n      <div class=\"fi nv\">Dashboard com os 7 KPIs, medindo desde o 1º dia</div>\n    </div>\n    <div class=\"f\"><div class=\"demo\">\n      <div class=\"b cli\">Cadê meu pedido 48122?</div>\n      <div class=\"b can\">Saiu do CD ontem e está com a transportadora — previsão de entrega sexta. Se precisar, a nota fiscal está aqui.</div>\n    </div></div>\n  </div>\n</section>\n\n<!-- SPRINT 2 -->\n<section id=\"sprint2\">\n  <div class=\"eyebrow rv\">O que vamos construir · <b>Sprint 2 · R$ 100.000</b></div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(16px,2.6vh,28px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(26px,3.4vw,48px);line-height:1.12;max-width:16ch\">O canal ideal.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">O que faz o atendimento virar experiência: cadastro aprovado na hora, crédito, compra sem esforço e um humano a um toque — com as integrações novas de Receita Federal, SEFAZ e bureau de crédito.</p>\n  </div>\n  <div class=\"leg rv\"><span><i class=\"nv\"></i>Novo — o que vamos construir</span></div>\n  <div class=\"frentes rv\">\n    <div class=\"f\"><div class=\"fn\">Cadastro (CNPJ) <span class=\"ct\">4 novos</span></div>\n      <div class=\"fi nv\">Novo cadastro direto na conversa</div>\n      <div class=\"fi nv\">Rejeitado — com o motivo na hora</div>\n      <div class=\"fi nv\">Pendente — status e \"te aviso quando aprovar\"</div>\n      <div class=\"fi nv\">Alterar dados da empresa</div>\n      <div class=\"fnote\">Depende de desbloqueio de TI Granado: cadastro sem captcha e integrações com Receita, SEFAZ e bureau.</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Crédito <span class=\"ct\">2 novos</span></div>\n      <div class=\"fi nv\">Solicitar análise pra comprar no boleto a prazo</div>\n      <div class=\"fi nv\">Pedir aumento do limite aprovado</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Compra sem esforço <span class=\"ct\">3 novos</span></div>\n      <div class=\"fi nv\">Refazer pedido — o \"pedido de sempre\" em um toque</div>\n      <div class=\"fi nv\">Recorrência automática, no ciclo de compra do cliente</div>\n      <div class=\"fi nv\">Sugestões de produto com base no histórico de pedidos</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Transbordo humano <span class=\"ct\">1 novo</span></div>\n      <div class=\"fi nv\">Escalar pra atendente — nada fica sem resposta</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Catálogo e roteamento <span class=\"ct\">2 novos</span></div>\n      <div class=\"fi nv\">Catálogo completo de revenda em PDF</div>\n      <div class=\"fi nv\">Roteamento do que é fora de escopo</div>\n    </div>\n    <div class=\"f\"><div class=\"demo\">\n      <div class=\"b cli\">Fecha meu pedido de sempre.</div>\n      <div class=\"b can\">Fechado: 18 itens, R$ 1.870 — link do checkout aqui. Posso repetir esse pedido todo dia 5? E o polvilho antisséptico combina com o seu mix.</div>\n    </div></div>\n  </div>\n</section>\n\n<!-- KPIS -->\n<section id=\"kpis\">\n  <div class=\"eyebrow rv\">O que vamos medir</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(24px,4vh,44px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(26px,3.6vw,52px);line-height:1.12;max-width:16ch\">Cada sprint começa num número. Estes são os nossos.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">Os sete indicadores já validados com Secco e Papa — o dashboard entra na Sprint 1, medindo desde o primeiro dia do piloto. Onde já existe número conhecido, ele entra como linha de base.</p>\n  </div>\n  <div class=\"kpis rv\">\n    <div class=\"k\"><div class=\"kt\">Conversão</div><p>Interações no canal que terminam em pedido fechado.</p></div>\n    <div class=\"k\"><div class=\"kt\">Incremento de receita</div><p>Pedidos originados na conversa + receita de clientes reativados.</p><div class=\"kb\">Referência: 2.287 inativos na base</div></div>\n    <div class=\"k\"><div class=\"kt\">Horas desoneradas</div><p>Chamados evitados × tempo médio de tratamento de um chamado.</p></div>\n    <div class=\"k\"><div class=\"kt\">Retenção</div><p>Percentual da base que segue comprando, mês a mês.</p><div class=\"kb\">Linha de base: 56,8% de base ativa</div></div>\n    <div class=\"k\"><div class=\"kt\">Satisfação</div><p>Nota rápida ao fim de cada conversa; acompanhamos o % de notas altas.</p></div>\n    <div class=\"k\"><div class=\"kt\">Inadimplência</div><p>Boletos vencidos sobre emitidos, antes e depois dos avisos e do bloqueio.</p></div>\n    <div class=\"k\"><div class=\"kt\">Tempo de resposta</div><p>Da pergunta do cliente à resposta que resolve.</p><div class=\"kb\">Hoje: SLA de 48h → consultas simples, imediatas</div></div>\n  </div>\n</section>\n\n<!-- CRONOGRAMA -->\n<section id=\"cronograma\">\n  <div class=\"eyebrow rv\">Cronograma</div>\n  <h2 class=\"rv\" style=\"font-size:clamp(24px,3vw,44px);margin-bottom:clamp(10px,2vh,20px)\">Kickoff em 1º de setembro. Piloto no ar dia 20.</h2>\n  <p class=\"rv lead\" style=\"color:var(--musgo);font-size:14.5px;max-width:56ch;line-height:1.7;margin-bottom:clamp(26px,5vh,54px)\">O piloto cobre a Sprint 1, com clientes reais — o revendedor sente a diferença antes do projeto acabar.</p>\n  <div class=\"ondas rv\">\n    <div class=\"onda\"><div class=\"fase\">01 de setembro</div><div class=\"t\">Kickoff</div><ul><li>Mobilização, acessos e desbloqueios do lado Granado</li><li>Mapeamento das jornadas do Service Cloud</li><li>Time de homologação definido</li></ul></div>\n    <div class=\"onda\"><div class=\"fase\">20 de setembro</div><div class=\"t\">Piloto no ar — Sprint 1</div><ul><li>Canal com clientes reais: comprar, acompanhar, resolver</li><li>Homologação junto com o time Granado</li><li>Dashboard dos 7 KPIs medindo desde o 1º dia</li></ul></div>\n    <div class=\"onda\"><div class=\"fase\">Na sequência</div><div class=\"t\">Sprint 2 — o canal ideal</div><ul><li>Cadastro aprovado na hora, crédito e transbordo humano</li><li>Refazer pedido, recorrência automática e sugestões</li><li>Integrações novas: Receita Federal, SEFAZ, bureau</li></ul></div>\n  </div>\n</section>\n\n<!-- INVESTIMENTO -->\n<section id=\"investimento\">\n  <div class=\"eyebrow rv\">Investimento</div>\n  <div class=\"custos rv\">\n    <div class=\"row\"><div><div class=\"t\">Sprint 1 — O essencial</div><div class=\"d\">Carrinho, pedidos, FAQs, fluxos guiados, WhatsApp + widget, Service Cloud, dashboard de KPIs.</div></div><div class=\"v\">R$ 100.000</div></div>\n    <div class=\"row\"><div><div class=\"t\">Sprint 2 — O canal ideal</div><div class=\"d\">Cadastro na conversa, crédito, refazer pedido, recorrência e sugestões, transbordo humano, catálogo e roteamento.</div></div><div class=\"v\">R$ 100.000</div></div>\n    <div class=\"row\"><div><div class=\"t\">Analista Data² dedicado</div><div class=\"d\">Opcional — um analista full-time no canal: rotinas de sustentação garantidas, melhoria contínua e resposta imediata, como extensão do time Granado.</div></div><div class=\"v\">R$ 26.000<em> /mês</em></div></div>\n    <div class=\"row total\"><div><div class=\"t\">Operação do canal</div><div class=\"d\">Custo de running medido em testes reais no ambiente Granado — IA responde por 92%; infraestrutura fica abaixo de R$ 0,06 por sessão.</div></div><div class=\"v\">~R$ 0,77<em> /sessão</em></div></div>\n  </div>\n  <p class=\"cond rv\">Faturamento por sprint entregue.</p>\n</section>\n\n<!-- ANTES DO KICKOFF -->\n<section id=\"kickoff\">\n  <div class=\"eyebrow rv\">Antes do kickoff · 1º de setembro</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(24px,4vh,44px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(26px,3.6vw,52px);line-height:1.12;max-width:16ch\">O que fechamos juntos até lá.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">Nada aqui muda o escopo — são decisões e desbloqueios que deixam o caminho livre pras sprints correrem no ritmo combinado.</p>\n  </div>\n  <div class=\"pilares dois\">\n    <div class=\"pilar rv d2\"><span class=\"k\">Decidimos juntos</span>\n      <ul class=\"klist\">\n        <li><b>SFMC × WhatsApp</b> — orquestração de campanhas e trilha de cobrança de boleto: em qual sprint entra, e com que profundidade</li>\n        <li><b>Homologação do piloto</b> — quantas pessoas do time Granado, e em que momento</li>\n        <li><b>Retenção do histórico de conversa</b> — por quanto tempo guardar antes de arquivar</li>\n        <li><b>Telas de exemplo</b> — entram na próxima versão desta proposta</li>\n      </ul>\n    </div>\n    <div class=\"pilar rv d3\"><span class=\"k\">Desbloqueios do lado Granado</span>\n      <ul class=\"klist\">\n        <li><b>Tech</b> — cadastro sem captcha; sessão compartilhada entre portal e widget; envio direto à página de checkout</li>\n        <li><b>Financeiro</b> — como funciona a emissão de 2ª via de boleto e de nota fiscal</li>\n        <li><b>CRM</b> — mapear quais jornadas da conversa viram registro no Service Cloud</li>\n      </ul>\n    </div>\n  </div>\n</section>\n\n<!-- 08 · FECHAMENTO -->\n<section class=\"selva fecho\" data-dark id=\"fim\">\n  <div class=\"bg kb\"><img src=\"https://granado-app.data2.media/file/gypbe6V0A-Zv7jM4xaJ-l\" alt=\"\"></div>\n  <div class=\"mid\">\n    <img class=\"ring branco rv\" style=\"width:52px\" src=\"https://granado-app.data2.media/file/YHYIIb0_WelaXTRzjFKsb\" alt=\"\">\n    <p class=\"frase rv\">We build Data² while imagining a world where things just <i>…</i> work.</p>\n    <div class=\"lockup rv\"><img class=\"d2m\" style=\"height:26px\" src=\"https://granado-app.data2.media/file/eNKhy9aF3ky_usZNZkmWt\" alt=\"Data²\"><span class=\"plus\" style=\"font-size:20px\">+</span><img class=\"grm\" style=\"height:18px\" src=\"https://granado-app.data2.media/file/T6YAJeTNwwvYpaJJPQg9K\" alt=\"Granado\"></div>\n    <div class=\"sub rv\">gui@data2.app · data2.app</div>\n  </div>\n</section>\n</div>\n</div>`\n\nfunction injectFonts(){\n  try{\n    if(!document.getElementById('akz-deck-fonts')){\n      const st=document.createElement('style'); st.id='akz-deck-fonts'; st.textContent=FONT_CSS\n      document.head.appendChild(st)\n    }\n  }catch(e){}\n}\n\nfunction initDeck(d2){\n  const wrap=d2.$('.deckwrap'); if(!wrap||wrap.dataset.init) return\n  wrap.dataset.init='1'\n  const rootEl=wrap.querySelector('.deckroot')\n  const slides=[].slice.call(rootEl.querySelectorAll('section'))\n  const dots=wrap.querySelector('.dots'), counter=wrap.querySelector('.counter')\n  const pad=n=>(n<10?'0':'')+n\n  let cur=0\n  slides.forEach((s,i)=>{const a=document.createElement('a');a.href='#'+s.id;a.setAttribute('aria-label','Slide '+(i+1));dots.appendChild(a)})\n  const links=[].slice.call(dots.children)\n  const io=new IntersectionObserver(es=>{es.forEach(e=>{\n    if(e.isIntersecting){\n      e.target.classList.add('in')\n      cur=slides.indexOf(e.target)\n      counter.textContent=pad(cur+1)+' — '+pad(slides.length)\n      links.forEach((l,i)=>l.classList.toggle('on',i===cur))\n      wrap.classList.toggle('on-dark',e.target.hasAttribute('data-dark'))\n      wrap.classList.toggle('last',cur===slides.length-1)\n    }\n  })},{root:rootEl,threshold:.55})\n  slides.forEach(s=>io.observe(s))\n  const rm=(typeof matchMedia==='function')&&matchMedia('(prefers-reduced-motion: reduce)').matches\n  const go=i=>{i=Math.max(0,Math.min(slides.length-1,i));slides[i].scrollIntoView({behavior:rm?'auto':'smooth'})}\n  wrap.addEventListener('click',ev=>{\n    const a=ev.target.closest&&ev.target.closest('a[href^=\"#\"]'); if(!a)return\n    ev.preventDefault()\n    const id=a.getAttribute('href').slice(1)\n    const t=slides.find(s=>s.id===id); if(t)t.scrollIntoView({behavior:rm?'auto':'smooth'})\n  })\n  window.addEventListener('keydown',e=>{\n    if(!wrap.isConnected)return\n    if(e.key==='ArrowDown'||e.key==='ArrowRight'||e.key==='PageDown'||e.key===' '){e.preventDefault();go(cur+1)}\n    if(e.key==='ArrowUp'||e.key==='ArrowLeft'||e.key==='PageUp'){e.preventDefault();go(cur-1)}\n    if(e.key==='Home'){e.preventDefault();go(0)}\n    if(e.key==='End'){e.preventDefault();go(slides.length-1)}\n  })\n}\n\nexport default {\n  css:`\n  :host,.deckwrap{\n    --verde:#24422F;\n    --verde-fundo:#1C3526;\n    --paper:#FAFAF6;\n    --ink:#12160F;\n    --musgo:#66755F;\n    --banana:#D99A26;\n    --hibisco:#A93526;\n    --ok:#2F6E5B;\n    --linha:rgba(18,22,15,.14);\n    --mx:clamp(20px,4vw,56px);\n    --ext:'AkzExt','Helvetica Neue',Helvetica,Arial,sans-serif;\n    --lt:'AkzExtLight','Helvetica Neue',Helvetica,Arial,sans-serif;\n    --sf:-apple-system,BlinkMacSystemFont,'SF Pro Text','Helvetica Neue',Helvetica,Arial,sans-serif;\n  }\n  *{box-sizing:border-box;margin:0;padding:0}\n\n  .deckwrap{background:var(--paper);color:var(--ink);font-family:var(--lt);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}\n\n  header{position:absolute;inset:0 0 auto 0;z-index:40;display:flex;justify-content:space-between;align-items:center;padding:22px var(--mx) 34px;pointer-events:none;background:linear-gradient(to bottom,var(--paper) 52%,rgba(250,250,246,0))}\n  .deckwrap.on-dark header{background:none}\n  header img{height:16px;display:block;filter:brightness(0) invert(8%) sepia(9%) saturate(600%) hue-rotate(60deg)}\n  header .gr{height:13px}\n  .deckwrap.on-dark header img{filter:none}\n  .counter{position:absolute;z-index:40;left:var(--mx);bottom:22px;font-family:var(--lt);font-size:11px;letter-spacing:.22em;color:var(--musgo)}\n  .deckwrap.on-dark .counter{color:rgba(250,250,246,.75)}\n  nav.dots{position:absolute;z-index:40;right:clamp(14px,2.4vw,32px);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:14px}\n  nav.dots a{width:6px;height:6px;border-radius:50%;background:var(--musgo);opacity:.35;transition:opacity .3s,transform .3s}\n  nav.dots a.on{opacity:1;transform:scale(1.5);background:var(--ink)}\n  .deckwrap.on-dark nav.dots a{background:#FAFAF6}\n  .deckwrap.on-dark nav.dots a.on{background:#FAFAF6}\n  .hint{position:absolute;z-index:40;right:var(--mx);bottom:22px;font-size:11px;letter-spacing:.22em;color:var(--musgo);text-transform:uppercase;transition:opacity .4s}\n  .deckwrap.last .hint{opacity:0}\n  .deckwrap.on-dark .hint{color:rgba(250,250,246,.6)}\n\n  section{min-height:100%;scroll-snap-align:start;position:relative;display:flex;flex-direction:column;justify-content:center;padding:clamp(84px,12vh,140px) clamp(20px,7vw,120px);overflow:hidden}\n  .eyebrow{font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--musgo);margin-bottom:clamp(20px,4vh,44px)}\n  .eyebrow b{font-weight:400;color:var(--banana)}\n\n  .rv{opacity:0;transform:translateY(26px);transition:opacity .9s cubic-bezier(.2,.6,.2,1),transform .9s cubic-bezier(.2,.6,.2,1)}\n  section.in .rv{opacity:1;transform:none}\n  section.in .rv:nth-child(2),section.in .d2{transition-delay:.12s}\n  section.in .rv:nth-child(3),section.in .d3{transition-delay:.24s}\n  section.in .rv:nth-child(4),section.in .d4{transition-delay:.36s}\n  section.in .rv:nth-child(5),section.in .d5{transition-delay:.48s}\n  section.in .rv:nth-child(6),section.in .d6{transition-delay:.6s}\n\n  .selva{color:#FAFAF6}\n  .selva .bg{position:absolute;inset:0;z-index:0}\n  .selva .bg img{width:100%;height:100%;object-fit:cover;display:block}\n  .selva .bg::after{content:'';position:absolute;inset:0;background:rgba(18,30,20,.38)}\n  .selva .mid{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;text-align:center;gap:34px}\n  .lockup{display:flex;align-items:center;gap:clamp(18px,3vw,34px)}\n  .lockup img{display:block}\n  .lockup .d2m{height:clamp(30px,4.6vw,54px)}\n  .lockup .grm{height:clamp(20px,3.2vw,38px)}\n  .lockup .plus{font-family:var(--lt);font-size:clamp(22px,3vw,36px);line-height:1;opacity:.9}\n  .selva .sub{font-family:var(--lt);font-size:clamp(13px,1.4vw,17px);letter-spacing:.14em;text-transform:uppercase;opacity:.92}\n  .selva .foot{position:absolute;z-index:1;left:0;right:0;bottom:clamp(56px,9vh,88px);text-align:center;font-size:12px;letter-spacing:.26em;text-transform:uppercase;opacity:.8}\n  @media (prefers-reduced-motion:no-preference){\n    .kb img{animation:kb 36s ease-in-out infinite alternate}\n    @keyframes kb{from{transform:scale(1)}to{transform:scale(1.07)}}\n  }\n\n  h1,h2{font-family:var(--ext);font-weight:400;text-wrap:balance}\n  .statement h1{font-size:clamp(34px,5.6vw,86px);line-height:1.08;letter-spacing:-.01em;max-width:16ch}\n  .apoio{max-width:44ch;font-size:clamp(15px,1.5vw,19px);line-height:1.65;color:var(--musgo)}\n  .split{display:grid;grid-template-columns:1.4fr .8fr;gap:clamp(28px,6vw,90px);align-items:end}\n  .split>*{min-width:0}\n  @media(max-width:820px){.split{grid-template-columns:1fr}}\n\n  .pilares{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(22px,3.4vw,56px);border-top:1px solid var(--linha);padding-top:clamp(26px,5vh,52px)}\n  .pilar .t{font-family:var(--ext);font-size:clamp(17px,1.7vw,23px);line-height:1.3;margin-bottom:16px}\n  .pilar p{font-size:14.5px;line-height:1.7;color:var(--musgo)}\n  .pilar .k{display:block;font-size:11px;letter-spacing:.26em;color:var(--banana);text-transform:uppercase;margin-bottom:18px}\n  @media(max-width:820px){.pilares{grid-template-columns:1fr}}\n\n  .demo{border:1px solid var(--linha);border-radius:18px;padding:clamp(12px,1.6vh,18px);display:flex;flex-direction:column;gap:8px}\n  .demo .b{max-width:90%;padding:9px 13px;border-radius:14px;font-size:12.5px;line-height:1.5}\n  .demo .cli{align-self:flex-end;background:#ECEDE3;color:var(--ink);border-bottom-right-radius:4px}\n  .demo .can{align-self:flex-start;background:var(--verde);color:#FAFAF6;border-bottom-left-radius:4px}\n\n  .arq{display:grid;grid-template-columns:1fr 44px 1.15fr 44px 1fr;gap:clamp(10px,1.2vw,18px);align-items:stretch;border-top:1px solid var(--linha);padding-top:clamp(24px,4vh,44px)}\n  .arq .col{display:flex;flex-direction:column;gap:10px}\n  .arq .col-h{font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--musgo);margin-bottom:8px;line-height:1.5}\n  .arq .box{border:1px solid var(--linha);border-radius:14px;padding:13px 15px}\n  .arq .box .bn{font-family:var(--ext);font-size:12.5px;line-height:1.4}\n  .arq .box .bd{font-size:11.5px;color:var(--musgo);margin-top:4px;line-height:1.5}\n  .arq .core{background:var(--verde);color:#FAFAF6;border-radius:18px;padding:clamp(16px,2.4vh,26px);display:flex;flex-direction:column;gap:12px;height:100%}\n  .arq .core .ch{font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--banana)}\n  .arq .core .box{border-color:rgba(250,250,246,.25)}\n  .arq .core .box .bd{color:rgba(250,250,246,.72)}\n  .arq .link{position:relative;display:flex;align-items:center;justify-content:center}\n  .arq .link::before{content:'';position:absolute;left:-6px;right:-6px;top:50%;height:1px;background:var(--musgo);opacity:.5}\n  .arq .link span{position:relative;background:var(--paper);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--musgo);transform:rotate(-90deg);white-space:nowrap;padding:0 6px}\n  @media(max-width:900px){.arq{grid-template-columns:1fr}.arq .link{min-height:34px}.arq .link::before{left:50%;right:auto;top:0;bottom:0;width:1px;height:auto}.arq .link span{transform:none}}\n\n  .ondas{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(22px,3vw,48px);position:relative;padding-top:clamp(30px,5vh,52px)}\n  .ondas::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--linha)}\n  .onda{position:relative}\n  .onda::before{content:'';position:absolute;top:calc(-1 * clamp(30px,5vh,52px));left:0;width:9px;height:9px;border-radius:50%;background:var(--banana);transform:translateY(-4px)}\n  .onda .fase{font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--musgo);margin-bottom:10px}\n  .onda .t{font-family:var(--ext);font-size:clamp(17px,1.8vw,24px);margin-bottom:18px}\n  .onda ul{list-style:none}\n  .onda li{font-size:14px;line-height:1.6;color:var(--musgo);padding:9px 0;border-bottom:1px solid var(--linha)}\n  .pilares.dois{grid-template-columns:1fr 1fr}\n  @media(max-width:820px){.ondas{grid-template-columns:1fr}.onda::before{display:none}.pilares.dois{grid-template-columns:1fr}}\n\n  .custos{border-top:1px solid var(--linha);max-width:880px}\n  .custos .row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:24px;padding:clamp(18px,3vh,30px) 0;border-bottom:1px solid var(--linha)}\n  .custos .row .t{font-family:var(--ext);font-size:clamp(16px,1.7vw,22px)}\n  .custos .row .d{font-size:13.5px;color:var(--musgo);margin-top:8px;max-width:52ch;line-height:1.6}\n  .custos .row .v{font-family:var(--ext);font-size:clamp(20px,2.4vw,34px);font-variant-numeric:tabular-nums;white-space:nowrap}\n  .custos .row .v em{font-style:normal;color:var(--musgo);font-family:var(--lt);font-size:.55em;letter-spacing:.1em}\n  .custos .total .v{color:var(--banana)}\n  .cond{margin-top:clamp(22px,4vh,40px);font-size:13px;line-height:1.7;color:var(--musgo);max-width:60ch}\n\n  .capa{padding:clamp(72px,10vh,104px) var(--mx) clamp(62px,9vh,88px);background:var(--paper)}\n  .capa .frame{position:relative;border-radius:clamp(18px,2.4vw,30px);overflow:hidden;flex:1;min-height:min(58vh,640px);display:flex;align-items:center;justify-content:center;color:#FAFAF6}\n  .capa .frame .bgimg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}\n  .capa .frame::after{content:'';position:absolute;inset:0;background:rgba(18,30,20,.34);z-index:0}\n  .capa .frame .mid{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;text-align:center;gap:30px}\n  .capa .frame .sub{font-family:var(--lt);font-size:clamp(12px,1.3vw,16px);letter-spacing:.16em;text-transform:uppercase;opacity:.92}\n  .capa .caption{display:flex;justify-content:space-between;align-items:baseline;gap:24px;padding:clamp(16px,2.6vh,26px) 0 0;flex-wrap:wrap}\n  .capa .caption .frase-cap{font-family:var(--lt);font-size:clamp(14px,1.55vw,19px);color:var(--ink);letter-spacing:.01em}\n  .capa .caption .meta{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--musgo)}\n\n  .expert{border:1px solid var(--linha);border-radius:20px;padding:clamp(22px,3.4vh,36px);display:flex;flex-direction:column;gap:5px;max-width:400px;justify-self:end}\n  .expert .mono{width:54px;height:54px;border-radius:50%;background:var(--verde);color:#FAFAF6;font-family:var(--ext);font-size:16px;display:flex;align-items:center;justify-content:center;margin-bottom:16px;letter-spacing:.06em}\n  .expert .nome{font-family:var(--ext);font-size:clamp(18px,1.9vw,25px)}\n  .expert .firma{font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--banana);margin:4px 0 12px}\n  .expert p{font-size:13.5px;line-height:1.68;color:var(--musgo)}\n  @media(max-width:820px){.expert{justify-self:start}}\n\n  .fecho .bg::after{background:rgba(12,22,14,.64)}\n  .fecho .mid{gap:44px}\n  .fecho .frase{font-family:var(--lt);font-size:clamp(16px,1.8vw,25px);line-height:1.65;letter-spacing:.025em;max-width:44ch;text-wrap:balance}\n  .fecho .frase i{font-style:normal;opacity:.65}\n\n  .ring{width:clamp(54px,5.4vw,80px);height:auto;display:block}\n  .ring.branco{filter:brightness(0) invert(1)}\n\n  .apoio::before{content:'';display:block;width:36px;height:2px;background:var(--banana);margin-bottom:18px}\n  .apoio.destaque{color:var(--ink);font-size:clamp(16px,1.7vw,21px);line-height:1.6}\n\n  .indice{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(28px,5vw,90px);border-top:1px solid var(--linha)}\n  .indice a{display:flex;align-items:baseline;gap:18px;padding:clamp(13px,2.2vh,22px) 0;border-bottom:1px solid var(--linha);text-decoration:none;color:var(--ink)}\n  .indice a .n{font-family:var(--lt);font-size:11px;letter-spacing:.18em;color:var(--musgo);min-width:28px;transition:color .25s}\n  .indice a .t{font-family:var(--ext);font-size:clamp(16px,1.9vw,26px);line-height:1.25;transition:transform .3s cubic-bezier(.2,.6,.2,1)}\n  .indice a:hover .n,.indice a:focus-visible .n{color:var(--banana)}\n  .indice a:hover .t,.indice a:focus-visible .t{transform:translateX(6px)}\n  @media(max-width:820px){.indice{grid-template-columns:1fr}}\n\n  .apoio,.pilar p,.demo .b,.onda li,.custos .row .d,.cond,.arq .box .bd,.expert p,.lead{font-family:var(--sf)}\n\n  .logofull{height:clamp(38px,5.4vw,66px);width:auto;filter:brightness(0);display:block;margin-bottom:clamp(20px,3.4vh,34px)}\n  .prods{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--linha)}\n  .prods .p{padding:clamp(14px,2vh,20px) 20px clamp(14px,2vh,20px) 0;border-bottom:1px solid var(--linha)}\n  .prods .pn{display:flex;align-items:center;gap:9px;font-family:var(--ext);font-size:clamp(12.5px,1.1vw,14.5px)}\n  .prods .dot{width:8px;height:8px;border-radius:50%;flex:none}\n  .prods .p p{font-family:var(--sf);font-size:12.5px;color:var(--musgo);line-height:1.55;margin-top:6px}\n  @media(max-width:900px){.prods{grid-template-columns:1fr 1fr}}\n\n  .leg{display:flex;gap:26px;flex-wrap:wrap;margin-bottom:clamp(18px,3vh,30px);font-family:var(--sf);font-size:12.5px;color:var(--musgo)}\n  .leg span{display:flex;align-items:center;gap:8px}\n  .leg i{width:9px;height:9px;border-radius:50%;display:inline-block}\n  .leg .ok{background:var(--ok)}\n  .leg .nv{background:var(--banana)}\n  .frentes{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--linha);column-gap:clamp(24px,4vw,64px)}\n  .frentes .f{border-bottom:1px solid var(--linha);padding:clamp(12px,1.8vh,18px) 0}\n  .frentes .fn{font-family:var(--ext);font-size:clamp(13px,1.2vw,15.5px);margin-bottom:8px;display:flex;justify-content:space-between;gap:12px;align-items:baseline}\n  .frentes .fn .ct{font-family:var(--sf);font-size:10.5px;color:var(--musgo);white-space:nowrap;letter-spacing:.04em}\n  .frentes .fi{display:flex;gap:8px;align-items:baseline;font-family:var(--sf);font-size:12px;line-height:1.5;color:var(--ink);padding:2.5px 0}\n  .frentes .fi::before{content:'';width:6px;height:6px;border-radius:50%;flex:none;position:relative;top:-1px}\n  .frentes .fi.ok::before{background:var(--ok)}\n  .frentes .fi.nv::before{background:var(--banana)}\n  .frentes .fnote{font-family:var(--sf);font-size:11px;color:var(--musgo);margin-top:7px;line-height:1.5}\n  .frentes .demo{margin:clamp(12px,1.8vh,18px) 0;align-self:start}\n  @media(max-width:900px){.frentes{grid-template-columns:1fr}}\n\n  .comps{display:flex;flex-direction:column;gap:clamp(18px,3vh,32px)}\n  .comp{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,3vw,48px);border-top:1px solid var(--linha);padding-top:clamp(14px,2.2vh,22px)}\n  .comp .ctit{grid-column:1/-1;font-family:var(--ext);font-size:clamp(15px,1.6vw,20px)}\n  .comp .lk{font-family:var(--lt);font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;margin-bottom:12px}\n  .comp .hj .lk{color:var(--hibisco)}\n  .comp .cn .lk{color:var(--ok)}\n  .steps{list-style:none;counter-reset:s;display:flex;flex-direction:column;gap:9px}\n  .steps li{font-family:var(--sf);font-size:12.5px;line-height:1.55;color:var(--musgo);display:flex;gap:10px;align-items:baseline}\n  .steps li::before{counter-increment:s;content:counter(s);font-family:var(--lt);font-size:10px;color:var(--hibisco);border:1px solid currentColor;border-radius:50%;width:17px;height:17px;display:flex;align-items:center;justify-content:center;flex:none;position:relative;top:2px}\n  @media(max-width:820px){.comp{grid-template-columns:1fr}}\n\n  .klist{list-style:none;margin-top:6px}\n  .klist li{font-family:var(--sf);font-size:13.5px;line-height:1.6;color:var(--ink);padding:10px 0;border-bottom:1px solid var(--linha)}\n  .klist li b{font-weight:600}\n\n  .kpis{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--linha)}\n  .kpis .k{padding:clamp(16px,2.6vh,26px) 22px clamp(16px,2.6vh,26px) 0;border-bottom:1px solid var(--linha)}\n  .kpis .k .kt{font-family:var(--ext);font-size:clamp(13.5px,1.25vw,16px);line-height:1.35}\n  .kpis .k p{font-family:var(--sf);font-size:12.5px;color:var(--musgo);line-height:1.6;margin-top:8px}\n  .kpis .k .kb{font-family:var(--sf);font-size:11.5px;color:var(--banana);margin-top:8px;line-height:1.5}\n  @media(max-width:900px){.kpis{grid-template-columns:1fr 1fr}}\n  @media(max-width:600px){.kpis{grid-template-columns:1fr}}\n\n  @media(max-width:820px){\n    .deckroot{scroll-snap-type:y proximity}\n    nav.dots{display:none}\n    section{padding:72px 20px 82px}\n    .counter,.hint{bottom:16px}\n    .capa{padding:60px var(--mx) 96px}\n    .capa .frame{min-height:42svh}\n    .capa .frame .mid{gap:18px;padding:0 20px}\n    .capa .frame .sub{font-size:10.5px;letter-spacing:.12em;text-wrap:balance;line-height:1.7}\n    .capa .lockup{gap:14px}\n    .capa .lockup .d2m{height:25px}\n    .capa .lockup .grm{height:16px}\n    .capa .lockup .plus{font-size:17px}\n    .capa .caption{flex-direction:column;align-items:flex-start;gap:10px;padding:18px 2px 0}\n    .capa .caption .frase-cap{font-size:15px;line-height:1.5;max-width:34ch}\n    .eyebrow{margin-bottom:18px}\n    .fecho .frase{font-size:15px}\n  }\n\n  :focus-visible{outline:2px solid var(--banana);outline-offset:4px}\n  @media (prefers-reduced-motion:reduce){\n    .deckroot{scroll-behavior:auto}\n    .rv{opacity:1;transform:none;transition:none}\n  }\n\n  .deckwrap{position:relative;height:100vh;height:100svh;overflow:hidden}\n  .deckroot{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;scroll-behavior:smooth}\n\n  .gwrap{position:relative;height:100vh;height:100svh;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--verde-fundo);font-family:var(--lt)}\n  .gwrap .gbg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}\n  .gwrap::after{content:'';position:absolute;inset:0;background:rgba(12,22,14,.5)}\n  .gcard{position:relative;z-index:1;background:var(--paper);border-radius:20px;padding:40px 36px 32px;width:min(380px,88vw);text-align:center;box-shadow:0 30px 80px rgba(0,0,0,.45)}\n  .glock{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:14px}\n  .glock img{filter:brightness(0);display:block}\n  .glock span{font-family:var(--lt);font-size:15px;color:var(--ink)}\n  .gsub{font-family:var(--lt);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--musgo);margin-bottom:26px}\n  .ginput{width:100%;box-sizing:border-box;padding:13px 14px;border:1px solid var(--linha);border-radius:10px;background:#fff;font-size:15px;text-align:center;outline:none;font-family:var(--sf)}\n  .ginput:focus{border-color:var(--verde);box-shadow:0 0 0 3px rgba(36,66,47,.14)}\n  .gbtn{width:100%;margin-top:12px;padding:13px;border:none;border-radius:10px;background:var(--verde);color:var(--paper);font-size:12px;letter-spacing:.24em;text-transform:uppercase;cursor:pointer;font-family:var(--lt)}\n  .gbtn:hover{background:#1C3526}\n  .gerr{display:none;color:var(--hibisco);font-size:13px;margin-top:12px;font-family:var(--sf)}\n  .shake{animation:gsh .4s}\n  @keyframes gsh{0%,100%{transform:translateX(0)}20%{transform:translateX(-9px)}40%{transform:translateX(9px)}60%{transform:translateX(-5px)}80%{transform:translateX(5px)}}\n`,\n  render(d2){\n    return d2.state.unlocked ? DECK : GATE\n  },\n  mounted(d2){\n    injectFonts()\n    let ok=OPEN\n    try{ if(sessionStorage.getItem('deckB2bUnlocked')==='1') ok=true }catch(e){}\n    try{ if((location.search||'').indexOf('k='+PASS)>-1) ok=true }catch(e){}\n    const check=()=>{\n      const inp=d2.$('.ginput'); if(!inp) return\n      if(inp.value===PASS){\n        try{sessionStorage.setItem('deckB2bUnlocked','1')}catch(e){}\n        d2.state.unlocked=true\n      } else {\n        const c=d2.$('.gcard'), er=d2.$('.gerr')\n        if(er)er.style.display='block'\n        if(c){c.classList.remove('shake');void c.offsetWidth;c.classList.add('shake')}\n        if(inp.select)inp.select()\n      }\n    }\n    d2.on('.gbtn','click',check)\n    d2.on('.ginput','keydown',e=>{if(e.key==='Enter')check()})\n    if(ok) d2.state.unlocked=true\n    initDeck(d2)\n  },\n  updated(d2){\n    initDeck(d2)\n  }\n}"}}}}}},"__d2PrevCode":{"code":"const FONT_CSS = `@font-face{font-family:'AkzExt';src:url(https://granado-app.data2.media/file/EBpu8brvJpn11D4il45TS) format('opentype');font-weight:400;font-display:block}@font-face{font-family:'AkzExtLight';src:url(https://granado-app.data2.media/file/8orsK0wtYTghGT7sGMiC6) format('opentype');font-weight:300;font-display:block}`\nconst PASS='yestemosbananas'\nconst OPEN=true\n\nconst GATE = `<div class=\"gwrap\">\n  <img class=\"gbg\" src=\"https://granado-app.data2.media/file/gypbe6V0A-Zv7jM4xaJ-l\" alt=\"\">\n  <div class=\"gcard\">\n    <div class=\"glock\"><img src=\"https://granado-app.data2.media/file/eNKhy9aF3ky_usZNZkmWt\" style=\"height:22px\" alt=\"Data²\"><span>+</span><img src=\"https://granado-app.data2.media/file/T6YAJeTNwwvYpaJJPQg9K\" style=\"height:14px\" alt=\"Granado\"></div>\n    <div class=\"gsub\">Proposta · Auto-atendimento do canal B2B</div>\n    <input class=\"ginput\" type=\"password\" placeholder=\"Senha de acesso\" autocomplete=\"off\"/>\n    <button class=\"gbtn\">Entrar</button>\n    <div class=\"gerr\">Senha incorreta — tente novamente.</div>\n  </div>\n</div>`\n\nconst DECK = `<div class=\"deckwrap\">\n<header>\n  <img class=\"d2\" src=\"https://granado-app.data2.media/file/eNKhy9aF3ky_usZNZkmWt\" alt=\"Data²\">\n  <img class=\"gr\" src=\"https://granado-app.data2.media/file/T6YAJeTNwwvYpaJJPQg9K\" alt=\"Granado\">\n</header>\n<div class=\"counter\" id=\"counter\">01 — 08</div>\n<div class=\"hint\">↓ navegue</div>\n<nav class=\"dots\" id=\"dots\" aria-label=\"Slides\"></nav>\n\n\n<div class=\"deckroot\">\n<!-- 01 · CAPA -->\n<section class=\"capa\" id=\"capa\">\n  <div class=\"frame kb rv\">\n    <img class=\"bgimg\" src=\"https://granado-app.data2.media/file/gypbe6V0A-Zv7jM4xaJ-l\" alt=\"\">\n    <div class=\"mid\">\n      <div class=\"lockup\">\n        <img class=\"d2m\" src=\"https://granado-app.data2.media/file/eNKhy9aF3ky_usZNZkmWt\" alt=\"Data²\">\n        <span class=\"plus\">+</span>\n        <img class=\"grm\" src=\"https://granado-app.data2.media/file/T6YAJeTNwwvYpaJJPQg9K\" alt=\"Granado\">\n      </div>\n      <div class=\"sub\">Auto-atendimento do canal B2B</div>\n    </div>\n  </div>\n  <div class=\"caption rv\">\n    <div class=\"frase-cap\">We build Data² while imagining a world where things just … work.</div>\n    <div class=\"meta\">Proposta · Agosto 2026</div>\n  </div>\n</section>\n\n<!-- ÍNDICE -->\n<section id=\"indice\">\n  <div class=\"eyebrow rv\">Índice</div>\n  <div class=\"indice rv\">\n    <a href=\"#data2\"><span class=\"n\">01</span><span class=\"t\">Quem somos</span></a>\n    <a href=\"#consultoria\"><span class=\"n\">02</span><span class=\"t\">Como trabalhamos</span></a>\n    <a href=\"#experts\"><span class=\"n\">03</span><span class=\"t\">Domain Experts</span></a>\n    <a href=\"#tese\"><span class=\"n\">04</span><span class=\"t\">A proposta</span></a>\n    <a href=\"#conceito\"><span class=\"n\">05</span><span class=\"t\">O conceito</span></a>\n    <a href=\"#arquitetura\"><span class=\"n\">06</span><span class=\"t\">Arquitetura e integração</span></a>\n    <a href=\"#pratica\"><span class=\"n\">07</span><span class=\"t\">Na prática</span></a>\n    <a href=\"#sprint1\"><span class=\"n\">08</span><span class=\"t\">Sprint 1 · O essencial</span></a>\n    <a href=\"#sprint2\"><span class=\"n\">09</span><span class=\"t\">Sprint 2 · O canal ideal</span></a>\n    <a href=\"#kpis\"><span class=\"n\">10</span><span class=\"t\">O que vamos medir</span></a>\n    <a href=\"#cronograma\"><span class=\"n\">11</span><span class=\"t\">Cronograma</span></a>\n    <a href=\"#investimento\"><span class=\"n\">12</span><span class=\"t\">Investimento</span></a>\n    <a href=\"#kickoff\"><span class=\"n\">13</span><span class=\"t\">Antes do kickoff</span></a>\n  </div>\n</section>\n\n<!-- 02 · DATA² -->\n<section id=\"data2\">\n  <div class=\"eyebrow rv\">Data² · Filosofia e tecnologia</div>\n  <div class=\"split\" style=\"align-items:end;margin-bottom:clamp(26px,5vh,52px)\">\n    <div>\n      <img class=\"logofull rv\" src=\"https://granado-app.data2.media/file/eNKhy9aF3ky_usZNZkmWt\" alt=\"Data²\">\n      <h2 class=\"rv\" style=\"font-size:clamp(24px,3.2vw,46px);line-height:1.14;max-width:16ch\">Necessidade elevada à produção.</h2>\n    </div>\n    <div style=\"display:flex;flex-direction:column;align-items:flex-start;gap:clamp(20px,3.4vh,32px)\">\n      <img class=\"ring rv\" src=\"https://granado-app.data2.media/file/YHYIIb0_WelaXTRzjFKsb\" alt=\"\">\n      <p class=\"apoio destaque rv\" style=\"margin-top:0\">Construímos a Data² imaginando um mundo onde as coisas simplesmente … funcionam. Uma plataforma onde dados, lógica, interfaces e agentes de IA vivem no mesmo runtime — a ideia que o time de negócio descreve hoje é a solução que ele opera amanhã.</p>\n    </div>\n  </div>\n  <div class=\"prods rv\">\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#FA48DC\"></span>Domain</div><p>A inteligência: conversa, decide e raciocina sobre o negócio.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#4866FA\"></span>UI</div><p>Interfaces completas, geradas e evoluídas na plataforma.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#FA4848\"></span>Registry</div><p>Os dados: catálogos, tabelas, milhões de registros tipados.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#8448FA\"></span>Rush</div><p>Escuta tudo que entra: eventos, webhooks, mensagens.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#48FAFA\"></span>Connect</div><p>Integra tudo que sai: ERP, WhatsApp, APIs, e-mail.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#48FAA1\"></span>ID</div><p>Identidade, permissões e políticas de acesso.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#BFFA48\"></span>Cashier</div><p>Transaciona: pagamentos, cobrança, conciliação.</p></div>\n    <div class=\"p\"><div class=\"pn\"><span class=\"dot\" style=\"background:#FADC48\"></span>Media</div><p>Gera imagem e mídia a partir do catálogo e da marca.</p></div>\n  </div>\n</section>\n\n<!-- 03 · CONSULTORIA / SPRINTS -->\n<section id=\"consultoria\">\n  <div class=\"eyebrow rv\">Como trabalhamos</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(30px,6vh,60px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(28px,4vw,56px);line-height:1.12;max-width:16ch\">Sprints que começam num KPI e terminam em produção.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">Nada de projetos de um ano. Cada sprint ataca um problema medível, com escopo fechado, custo conhecido e resultado rodando em semanas.</p>\n  </div>\n  <div class=\"pilares\">\n    <div class=\"pilar rv d2\"><span class=\"k\">01 · KPI</span><div class=\"t\">Escolhemos o número que precisa mexer</div><p>Reativação, conversão, custo de atendimento. O sprint nasce de um indicador de negócio — não de um levantamento de requisitos.</p></div>\n    <div class=\"pilar rv d3\"><span class=\"k\">02 · Sprint</span><div class=\"t\">Semanas, com escopo e custo fechados</div><p>Time sênior da Data² desenha e constrói direto na plataforma. Quem projeta é quem entrega — o know-how não se perde em repasses.</p></div>\n    <div class=\"pilar rv d4\"><span class=\"k\">03 · Produção</span><div class=\"t\">Entrega medida no mesmo KPI</div><p>O sprint termina com a solução em produção e o indicador sendo acompanhado. O que funciona, escala na onda seguinte.</p></div>\n  </div>\n</section>\n\n<!-- 04 · DOMAIN EXPERTS -->\n<section id=\"experts\">\n  <div class=\"eyebrow rv\">Domain Experts</div>\n  <div class=\"split\" style=\"align-items:center\">\n    <div>\n      <h2 class=\"rv\" style=\"font-size:clamp(28px,4vw,56px);line-height:1.12;max-width:15ch\">Tecnologia, com quem conhece a operação por dentro.</h2>\n      <p class=\"apoio rv\">A cada projeto, um parceiro especialista do domínio trabalha lado a lado com o time Data². É essa combinação que nos permite ir além: redesenhar o processo por inteiro, em vez de automatizar o que já não funciona.</p>\n    </div>\n    <div class=\"expert rv d2\">\n      <div class=\"mono\">AS</div>\n      <div class=\"nome\">Ale Schwab</div>\n      <div class=\"firma\">AS.Consulting</div>\n      <p>Especialista em processos de atendimento e operações logísticas. Já está dentro da descoberta deste projeto, ao lado do time Granado.</p>\n    </div>\n  </div>\n</section>\n\n<!-- 05 · STATEMENT -->\n<section class=\"statement\" id=\"tese\">\n  <div class=\"eyebrow rv\">A proposta</div>\n  <div class=\"split\">\n    <h1 class=\"rv\">Atender bem quem o comercial não alcança.</h1>\n    <p class=\"apoio destaque rv\">Os pequenos e médios clientes do portal B2B compram sozinhos, recorrentemente — e hoje não têm com quem falar. A proposta: um canal digital que resolve de ponta a ponta, com o comercial entrando só onde ele importa.</p>\n  </div>\n</section>\n\n<!-- 04 · CONCEITO -->\n<section id=\"conceito\">\n  <div class=\"eyebrow rv\">O conceito</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(30px,6vh,60px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(28px,4vw,60px);line-height:1.12;max-width:15ch\">Um canal que resolve — não roteia.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">O bot antigo terminava quase todo caminho em \"abra um chamado\". O novo canal termina em resposta: consulta os sistemas da Granado (Magento, JD Edwards, OMS) e responde na hora.</p>\n  </div>\n  <div class=\"pilares\">\n    <div class=\"pilar rv d2\"><span class=\"k\">Resolver</span><div class=\"t\">Resposta na hora, com dado de verdade</div><p>Cadastro validado em tempo real com motivo de rejeição na tela, rastreio de pedido, segunda via de NF direto no canal.</p></div>\n    <div class=\"pilar rv d3\"><span class=\"k\">Avisar</span><div class=\"t\">A Granado fala primeiro</div><p>Boleto pendente, pedido cancelado pelo financeiro, produto de volta ao estoque: hoje o cliente descobre sozinho. Passa a ser avisado.</p></div>\n    <div class=\"pilar rv d4\"><span class=\"k\">Vender</span><div class=\"t\">O atendimento fecha pedido</div><p>Catálogo, carrinho e checkout completos dentro da conversa — inclusive split de pagamento quando o limite de boleto não cobre.</p></div>\n  </div>\n</section>\n\n<!-- ARQUITETURA -->\n<section id=\"arquitetura\">\n  <div class=\"eyebrow rv\">Arquitetura e integração</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(24px,4vh,44px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(26px,3.6vw,52px);line-height:1.12;max-width:16ch\">Aceleramos porque a fundação já está no ar.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">A engine Data² que já roda na Granado é a mesma que vai operar este canal — motor de conversa, catálogo, carrinho, rastreio e crédito já validados em produção com dado real. Integramos por leitura; nada do que funciona hoje é alterado.</p>\n  </div>\n  <div class=\"arq rv\">\n    <div class=\"col\">\n      <div class=\"col-h\">Sistemas Granado · intocados</div>\n      <div class=\"box\"><div class=\"bn\">Magento</div><div class=\"bd\">Portal B2B, catálogo, carrinho</div></div>\n      <div class=\"box\"><div class=\"bn\">JD Edwards</div><div class=\"bd\">ERP, financeiro, boletos</div></div>\n      <div class=\"box\"><div class=\"bn\">OMS + Confirma Fácil</div><div class=\"bd\">Pedidos, NF, entrega</div></div>\n      <div class=\"box\"><div class=\"bn\">Salesforce Service Cloud</div><div class=\"bd\">Cada interação do canal vira caso no histórico do cliente</div></div>\n    </div>\n    <div class=\"link\"><span>leitura · API</span></div>\n    <div class=\"core\">\n      <div class=\"ch\">Data² · engine já publicada</div>\n      <div class=\"box\"><div class=\"bn\">Conectores de leitura</div><div class=\"bd\">Consultam os sistemas na hora da conversa — sem réplica, sem batch</div></div>\n      <div class=\"box\"><div class=\"bn\">Agente de atendimento</div><div class=\"bd\">Regras do canal, macros higienizadas, roteamento pro comercial ≥ R$ 50k</div></div>\n      <div class=\"box\"><div class=\"bn\">Avisos proativos</div><div class=\"bd\">Boleto pendente, estoque de volta, status de cadastro</div></div>\n    </div>\n    <div class=\"link\"><span>conversa</span></div>\n    <div class=\"col\">\n      <div class=\"col-h\">Revendedor</div>\n      <div class=\"box\"><div class=\"bn\">WhatsApp</div><div class=\"bd\">Onde o cliente já está</div></div>\n      <div class=\"box\"><div class=\"bn\">Portal B2B</div><div class=\"bd\">Mesmo atendimento, embarcado no site</div></div>\n      <div class=\"box\"><div class=\"bn\">Comercial Granado</div><div class=\"bd\">Recebe só o que é dele — grandes contas e exceções</div></div>\n    </div>\n  </div>\n</section>\n\n<!-- NA PRÁTICA -->\n<section id=\"pratica\">\n  <div class=\"eyebrow rv\">Na prática · hoje × com o canal</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(18px,3vh,32px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(26px,3.6vw,52px);line-height:1.12;max-width:16ch\">A diferença que o revendedor sente.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">Dois momentos comuns do dia a dia do canal, lado a lado: o caminho de hoje e a mesma tarefa dentro da conversa.</p>\n  </div>\n  <div class=\"comps rv\">\n    <div class=\"comp\">\n      <div class=\"ctit\">Rastrear um pedido</div>\n      <div class=\"hj\">\n        <div class=\"lk\">Hoje · até 48 horas</div>\n        <ul class=\"steps\">\n          <li>O cliente abre uma solicitação no portal de chamados</li>\n          <li>O time consulta o Magento, o OMS e o Confirma Fácil, sistema por sistema</li>\n          <li>A resposta volta dentro do prazo padrão de 48 horas</li>\n        </ul>\n      </div>\n      <div class=\"cn\">\n        <div class=\"lk\">Com o canal · segundos</div>\n        <div class=\"demo\">\n          <div class=\"b cli\">Cadê meu pedido 48122?</div>\n          <div class=\"b can\">Saiu do CD ontem e está com a transportadora — previsão de entrega sexta.</div>\n        </div>\n      </div>\n    </div>\n    <div class=\"comp\">\n      <div class=\"ctit\">Montar um pedido — difusores pro escritório</div>\n      <div class=\"hj\">\n        <div class=\"lk\">Hoje · página por página</div>\n        <ul class=\"steps\">\n          <li>Pesquisar cada aroma de difusor, um por um</li>\n          <li>Adicionar item a item, com a página recarregando a cada passo</li>\n          <li>Repetir o processo inteiro pra cada variação</li>\n        </ul>\n      </div>\n      <div class=\"cn\">\n        <div class=\"lk\">Com o canal · uma conversa</div>\n        <div class=\"demo\">\n          <div class=\"b cli\">Quais aromas de difusor vocês têm?</div>\n          <div class=\"b can\">Quatro: alecrim, capim-limão, lavanda e flor de laranjeira.</div>\n          <div class=\"b cli\">Quero 10 de cada.</div>\n          <div class=\"b can\">Fechado: 40 itens no carrinho — link do checkout aqui.</div>\n        </div>\n      </div>\n    </div>\n  </div>\n</section>\n\n<!-- SPRINT 1 -->\n<section id=\"sprint1\">\n  <div class=\"eyebrow rv\">O que vamos construir · <b>Sprint 1 · R$ 100.000</b></div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(16px,2.6vh,28px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(26px,3.4vw,48px);line-height:1.12;max-width:16ch\">O essencial, impecável.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">Comprar, acompanhar e resolver — no WhatsApp e no portal, pra toda a base. Boa parte já roda em produção com dado real: o piloto começa daqui.</p>\n  </div>\n  <div class=\"leg rv\"><span><i class=\"ok\"></i>Validado — já roda em produção</span><span><i class=\"nv\"></i>Novo — o que vamos construir</span></div>\n  <div class=\"frentes rv\">\n    <div class=\"f\"><div class=\"fn\">Gestão de carrinhos <span class=\"ct\">5 validados · 2 novos</span></div>\n      <div class=\"fi ok\">Buscar produto no catálogo</div>\n      <div class=\"fi ok\">Avise-me quando chegar</div>\n      <div class=\"fi ok\">Montar e ver carrinho com total real</div>\n      <div class=\"fi ok\">Remover item / atualizar quantidade</div>\n      <div class=\"fi ok\">Consultar meus pedidos</div>\n      <div class=\"fi nv\">Finalizar em PIX e cartão (página de checkout)</div>\n      <div class=\"fi nv\">Pedido mínimo por região + cupom</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Pedidos e histórico <span class=\"ct\">2 validados · 3 novos</span></div>\n      <div class=\"fi ok\">Rastrear pedido (Confirma Fácil)</div>\n      <div class=\"fi ok\">Consulta de crédito</div>\n      <div class=\"fi nv\">Segunda via de nota fiscal</div>\n      <div class=\"fi nv\">Segunda via de boleto</div>\n      <div class=\"fi nv\">Boleto bloqueado por limite ou pendência</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">WhatsApp + widget web <span class=\"ct\">1 validado · 2 novos</span></div>\n      <div class=\"fi ok\">Motor de atendimento (login, sessão, ações)</div>\n      <div class=\"fi nv\">Widget embarcado no portal B2B</div>\n      <div class=\"fi nv\">Número próprio de WhatsApp</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">FAQs <span class=\"ct\">4 novos</span></div>\n      <div class=\"fi nv\">Explicar o catálogo restrito e as políticas, com dado real</div>\n      <div class=\"fi nv\">Painel de FAQ — o time Granado alimenta sozinho</div>\n      <div class=\"fi nv\">Pesquisa de satisfação (CSAT) ao fim da conversa</div>\n      <div class=\"fi nv\">Respostas fora de escopo roteadas certo</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Fluxos guiados <span class=\"ct\">3 novos</span></div>\n      <div class=\"fi nv\">Avaria, sobra ou item faltando — coleta completa</div>\n      <div class=\"fi nv\">Cancelamento e devolução guiados</div>\n      <div class=\"fi nv\">Saída manual pro portal de chamados</div>\n      <div class=\"fnote\">O bot coleta NF, itens e fotos; a decisão final segue humana, registrada no Service Cloud.</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Service Cloud <span class=\"ct\">2 novos</span></div>\n      <div class=\"fi nv\">Cada interação vira caso, no histórico do cliente</div>\n      <div class=\"fi nv\">Mapeamento das jornadas na própria sprint</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Indicadores <span class=\"ct\">1 novo</span></div>\n      <div class=\"fi nv\">Dashboard com os 7 KPIs, medindo desde o 1º dia</div>\n    </div>\n    <div class=\"f\"><div class=\"demo\">\n      <div class=\"b cli\">Cadê meu pedido 48122?</div>\n      <div class=\"b can\">Saiu do CD ontem e está com a transportadora — previsão de entrega sexta. Se precisar, a nota fiscal está aqui.</div>\n    </div></div>\n  </div>\n</section>\n\n<!-- SPRINT 2 -->\n<section id=\"sprint2\">\n  <div class=\"eyebrow rv\">O que vamos construir · <b>Sprint 2 · R$ 100.000</b></div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(16px,2.6vh,28px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(26px,3.4vw,48px);line-height:1.12;max-width:16ch\">O canal ideal.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">O que faz o atendimento virar experiência: cadastro aprovado na hora, crédito, compra sem esforço e um humano a um toque — com as integrações novas de Receita Federal, SEFAZ e bureau de crédito.</p>\n  </div>\n  <div class=\"leg rv\"><span><i class=\"nv\"></i>Novo — o que vamos construir</span></div>\n  <div class=\"frentes rv\">\n    <div class=\"f\"><div class=\"fn\">Cadastro (CNPJ) <span class=\"ct\">4 novos</span></div>\n      <div class=\"fi nv\">Novo cadastro direto na conversa</div>\n      <div class=\"fi nv\">Rejeitado — com o motivo na hora</div>\n      <div class=\"fi nv\">Pendente — status e \"te aviso quando aprovar\"</div>\n      <div class=\"fi nv\">Alterar dados da empresa</div>\n      <div class=\"fnote\">Depende de desbloqueio de TI Granado: cadastro sem captcha e integrações com Receita, SEFAZ e bureau.</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Crédito <span class=\"ct\">2 novos</span></div>\n      <div class=\"fi nv\">Solicitar análise pra comprar no boleto a prazo</div>\n      <div class=\"fi nv\">Pedir aumento do limite aprovado</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Compra sem esforço <span class=\"ct\">3 novos</span></div>\n      <div class=\"fi nv\">Refazer pedido — o \"pedido de sempre\" em um toque</div>\n      <div class=\"fi nv\">Recorrência automática, no ciclo de compra do cliente</div>\n      <div class=\"fi nv\">Sugestões de produto com base no histórico de pedidos</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Transbordo humano <span class=\"ct\">1 novo</span></div>\n      <div class=\"fi nv\">Escalar pra atendente — nada fica sem resposta</div>\n    </div>\n    <div class=\"f\"><div class=\"fn\">Catálogo e roteamento <span class=\"ct\">2 novos</span></div>\n      <div class=\"fi nv\">Catálogo completo de revenda em PDF</div>\n      <div class=\"fi nv\">Roteamento do que é fora de escopo</div>\n    </div>\n    <div class=\"f\"><div class=\"demo\">\n      <div class=\"b cli\">Fecha meu pedido de sempre.</div>\n      <div class=\"b can\">Fechado: 18 itens, R$ 1.870 — link do checkout aqui. Posso repetir esse pedido todo dia 5? E o polvilho antisséptico combina com o seu mix.</div>\n    </div></div>\n  </div>\n</section>\n\n<!-- KPIS -->\n<section id=\"kpis\">\n  <div class=\"eyebrow rv\">O que vamos medir</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(24px,4vh,44px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(26px,3.6vw,52px);line-height:1.12;max-width:16ch\">Cada sprint começa num número. Estes são os nossos.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">Os sete indicadores já validados com Secco e Papa — o dashboard entra na Sprint 1, medindo desde o primeiro dia do piloto. Onde já existe número conhecido, ele entra como linha de base.</p>\n  </div>\n  <div class=\"kpis rv\">\n    <div class=\"k\"><div class=\"kt\">Conversão</div><p>Interações no canal que terminam em pedido fechado.</p></div>\n    <div class=\"k\"><div class=\"kt\">Incremento de receita</div><p>Pedidos originados na conversa + receita de clientes reativados.</p><div class=\"kb\">Referência: 2.287 inativos na base</div></div>\n    <div class=\"k\"><div class=\"kt\">Horas desoneradas</div><p>Chamados evitados × tempo médio de tratamento de um chamado.</p></div>\n    <div class=\"k\"><div class=\"kt\">Retenção</div><p>Percentual da base que segue comprando, mês a mês.</p><div class=\"kb\">Linha de base: 56,8% de base ativa</div></div>\n    <div class=\"k\"><div class=\"kt\">Satisfação</div><p>Nota rápida ao fim de cada conversa; acompanhamos o % de notas altas.</p></div>\n    <div class=\"k\"><div class=\"kt\">Inadimplência</div><p>Boletos vencidos sobre emitidos, antes e depois dos avisos e do bloqueio.</p></div>\n    <div class=\"k\"><div class=\"kt\">Tempo de resposta</div><p>Da pergunta do cliente à resposta que resolve.</p><div class=\"kb\">Hoje: SLA de 48h → consultas simples, imediatas</div></div>\n  </div>\n</section>\n\n<!-- CRONOGRAMA -->\n<section id=\"cronograma\">\n  <div class=\"eyebrow rv\">Cronograma</div>\n  <h2 class=\"rv\" style=\"font-size:clamp(24px,3vw,44px);margin-bottom:clamp(10px,2vh,20px)\">Kickoff em 1º de setembro. Piloto no ar dia 20.</h2>\n  <p class=\"rv lead\" style=\"color:var(--musgo);font-size:14.5px;max-width:56ch;line-height:1.7;margin-bottom:clamp(26px,5vh,54px)\">O piloto cobre a Sprint 1, com clientes reais — o revendedor sente a diferença antes do projeto acabar.</p>\n  <div class=\"ondas rv\">\n    <div class=\"onda\"><div class=\"fase\">01 de setembro</div><div class=\"t\">Kickoff</div><ul><li>Mobilização, acessos e desbloqueios do lado Granado</li><li>Mapeamento das jornadas do Service Cloud</li><li>Time de homologação definido</li></ul></div>\n    <div class=\"onda\"><div class=\"fase\">20 de setembro</div><div class=\"t\">Piloto no ar — Sprint 1</div><ul><li>Canal com clientes reais: comprar, acompanhar, resolver</li><li>Homologação junto com o time Granado</li><li>Dashboard dos 7 KPIs medindo desde o 1º dia</li></ul></div>\n    <div class=\"onda\"><div class=\"fase\">Na sequência</div><div class=\"t\">Sprint 2 — o canal ideal</div><ul><li>Cadastro aprovado na hora, crédito e transbordo humano</li><li>Refazer pedido, recorrência automática e sugestões</li><li>Integrações novas: Receita Federal, SEFAZ, bureau</li></ul></div>\n  </div>\n</section>\n\n<!-- INVESTIMENTO -->\n<section id=\"investimento\">\n  <div class=\"eyebrow rv\">Investimento</div>\n  <div class=\"custos rv\">\n    <div class=\"row\"><div><div class=\"t\">Sprint 1 — O essencial</div><div class=\"d\">Carrinho, pedidos, FAQs, fluxos guiados, WhatsApp + widget, Service Cloud, dashboard de KPIs.</div></div><div class=\"v\">R$ 100.000</div></div>\n    <div class=\"row\"><div><div class=\"t\">Sprint 2 — O canal ideal</div><div class=\"d\">Cadastro na conversa, crédito, refazer pedido, recorrência e sugestões, transbordo humano, catálogo e roteamento.</div></div><div class=\"v\">R$ 100.000</div></div>\n    <div class=\"row\"><div><div class=\"t\">Analista Data² dedicado</div><div class=\"d\">Opcional — um analista full-time no canal: rotinas de sustentação garantidas, melhoria contínua e resposta imediata, como extensão do time Granado.</div></div><div class=\"v\">R$ 26.000<em> /mês</em></div></div>\n    <div class=\"row total\"><div><div class=\"t\">Operação do canal</div><div class=\"d\">Custo de running medido em testes reais no ambiente Granado — IA responde por 92%; infraestrutura fica abaixo de R$ 0,06 por sessão.</div></div><div class=\"v\">~R$ 0,77<em> /sessão</em></div></div>\n  </div>\n  <p class=\"cond rv\">Faturamento por sprint entregue.</p>\n</section>\n\n<!-- ANTES DO KICKOFF -->\n<section id=\"kickoff\">\n  <div class=\"eyebrow rv\">Antes do kickoff · 1º de setembro</div>\n  <div class=\"split\" style=\"align-items:start;margin-bottom:clamp(24px,4vh,44px)\">\n    <h2 class=\"rv\" style=\"font-size:clamp(26px,3.6vw,52px);line-height:1.12;max-width:16ch\">O que fechamos juntos até lá.</h2>\n    <p class=\"apoio rv\" style=\"margin-top:0\">Nada aqui muda o escopo — são decisões e desbloqueios que deixam o caminho livre pras sprints correrem no ritmo combinado.</p>\n  </div>\n  <div class=\"pilares dois\">\n    <div class=\"pilar rv d2\"><span class=\"k\">Decidimos juntos</span>\n      <ul class=\"klist\">\n        <li><b>SFMC × WhatsApp</b> — orquestração de campanhas e trilha de cobrança de boleto: em qual sprint entra, e com que profundidade</li>\n        <li><b>Homologação do piloto</b> — quantas pessoas do time Granado, e em que momento</li>\n        <li><b>Retenção do histórico de conversa</b> — por quanto tempo guardar antes de arquivar</li>\n        <li><b>Telas de exemplo</b> — entram na próxima versão desta proposta</li>\n      </ul>\n    </div>\n    <div class=\"pilar rv d3\"><span class=\"k\">Desbloqueios do lado Granado</span>\n      <ul class=\"klist\">\n        <li><b>Tech</b> — cadastro sem captcha; sessão compartilhada entre portal e widget; envio direto à página de checkout</li>\n        <li><b>Financeiro</b> — como funciona a emissão de 2ª via de boleto e de nota fiscal</li>\n        <li><b>CRM</b> — mapear quais jornadas da conversa viram registro no Service Cloud</li>\n      </ul>\n    </div>\n  </div>\n</section>\n\n<!-- 08 · FECHAMENTO -->\n<section class=\"selva fecho\" data-dark id=\"fim\">\n  <div class=\"bg kb\"><img src=\"https://granado-app.data2.media/file/gypbe6V0A-Zv7jM4xaJ-l\" alt=\"\"></div>\n  <div class=\"mid\">\n    <img class=\"ring branco rv\" style=\"width:52px\" src=\"https://granado-app.data2.media/file/YHYIIb0_WelaXTRzjFKsb\" alt=\"\">\n    <p class=\"frase rv\">We build Data² while imagining a world where things just <i>…</i> work.</p>\n    <div class=\"lockup rv\"><img class=\"d2m\" style=\"height:26px\" src=\"https://granado-app.data2.media/file/eNKhy9aF3ky_usZNZkmWt\" alt=\"Data²\"><span class=\"plus\" style=\"font-size:20px\">+</span><img class=\"grm\" style=\"height:18px\" src=\"https://granado-app.data2.media/file/T6YAJeTNwwvYpaJJPQg9K\" alt=\"Granado\"></div>\n    <div class=\"sub rv\">gui@data2.app · data2.app</div>\n  </div>\n</section>\n</div>\n</div>`\n\nfunction injectFonts(){\n  try{\n    if(!document.getElementById('akz-deck-fonts')){\n      const st=document.createElement('style'); st.id='akz-deck-fonts'; st.textContent=FONT_CSS\n      document.head.appendChild(st)\n    }\n  }catch(e){}\n}\n\nfunction initDeck(d2){\n  const wrap=d2.$('.deckwrap'); if(!wrap||wrap.dataset.init) return\n  wrap.dataset.init='1'\n  const rootEl=wrap.querySelector('.deckroot')\n  const slides=[].slice.call(rootEl.querySelectorAll('section'))\n  const dots=wrap.querySelector('.dots'), counter=wrap.querySelector('.counter')\n  const pad=n=>(n<10?'0':'')+n\n  let cur=0\n  slides.forEach((s,i)=>{const a=document.createElement('a');a.href='#'+s.id;a.setAttribute('aria-label','Slide '+(i+1));dots.appendChild(a)})\n  const links=[].slice.call(dots.children)\n  const io=new IntersectionObserver(es=>{es.forEach(e=>{\n    if(e.isIntersecting){\n      e.target.classList.add('in')\n      cur=slides.indexOf(e.target)\n      counter.textContent=pad(cur+1)+' — '+pad(slides.length)\n      links.forEach((l,i)=>l.classList.toggle('on',i===cur))\n      wrap.classList.toggle('on-dark',e.target.hasAttribute('data-dark'))\n      wrap.classList.toggle('last',cur===slides.length-1)\n    }\n  })},{root:rootEl,threshold:.55})\n  slides.forEach(s=>io.observe(s))\n  const rm=(typeof matchMedia==='function')&&matchMedia('(prefers-reduced-motion: reduce)').matches\n  const go=i=>{i=Math.max(0,Math.min(slides.length-1,i));slides[i].scrollIntoView({behavior:rm?'auto':'smooth'})}\n  wrap.addEventListener('click',ev=>{\n    const a=ev.target.closest&&ev.target.closest('a[href^=\"#\"]'); if(!a)return\n    ev.preventDefault()\n    const id=a.getAttribute('href').slice(1)\n    const t=slides.find(s=>s.id===id); if(t)t.scrollIntoView({behavior:rm?'auto':'smooth'})\n  })\n  window.addEventListener('keydown',e=>{\n    if(!wrap.isConnected)return\n    if(e.key==='ArrowDown'||e.key==='ArrowRight'||e.key==='PageDown'||e.key===' '){e.preventDefault();go(cur+1)}\n    if(e.key==='ArrowUp'||e.key==='ArrowLeft'||e.key==='PageUp'){e.preventDefault();go(cur-1)}\n    if(e.key==='Home'){e.preventDefault();go(0)}\n    if(e.key==='End'){e.preventDefault();go(slides.length-1)}\n  })\n}\n\nexport default {\n  css:`\n  :host,.deckwrap{\n    --verde:#24422F;\n    --verde-fundo:#1C3526;\n    --paper:#FAFAF6;\n    --ink:#12160F;\n    --musgo:#66755F;\n    --banana:#D99A26;\n    --hibisco:#A93526;\n    --ok:#2F6E5B;\n    --linha:rgba(18,22,15,.14);\n    --mx:clamp(20px,4vw,56px);\n    --ext:'AkzExt','Helvetica Neue',Helvetica,Arial,sans-serif;\n    --lt:'AkzExtLight','Helvetica Neue',Helvetica,Arial,sans-serif;\n    --sf:-apple-system,BlinkMacSystemFont,'SF Pro Text','Helvetica Neue',Helvetica,Arial,sans-serif;\n  }\n  *{box-sizing:border-box;margin:0;padding:0}\n\n  .deckwrap{background:var(--paper);color:var(--ink);font-family:var(--lt);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}\n\n  header{position:absolute;inset:0 0 auto 0;z-index:40;display:flex;justify-content:space-between;align-items:center;padding:22px var(--mx) 34px;pointer-events:none;background:linear-gradient(to bottom,var(--paper) 52%,rgba(250,250,246,0))}\n  .deckwrap.on-dark header{background:none}\n  header img{height:16px;display:block;filter:brightness(0) invert(8%) sepia(9%) saturate(600%) hue-rotate(60deg)}\n  header .gr{height:13px}\n  .deckwrap.on-dark header img{filter:none}\n  .counter{position:absolute;z-index:40;left:var(--mx);bottom:22px;font-family:var(--lt);font-size:11px;letter-spacing:.22em;color:var(--musgo)}\n  .deckwrap.on-dark .counter{color:rgba(250,250,246,.75)}\n  nav.dots{position:absolute;z-index:40;right:clamp(14px,2.4vw,32px);top:50%;transform:translateY(-50%);display:flex;flex-direction:column;gap:14px}\n  nav.dots a{width:6px;height:6px;border-radius:50%;background:var(--musgo);opacity:.35;transition:opacity .3s,transform .3s}\n  nav.dots a.on{opacity:1;transform:scale(1.5);background:var(--ink)}\n  .deckwrap.on-dark nav.dots a{background:#FAFAF6}\n  .deckwrap.on-dark nav.dots a.on{background:#FAFAF6}\n  .hint{position:absolute;z-index:40;right:var(--mx);bottom:22px;font-size:11px;letter-spacing:.22em;color:var(--musgo);text-transform:uppercase;transition:opacity .4s}\n  .deckwrap.last .hint{opacity:0}\n  .deckwrap.on-dark .hint{color:rgba(250,250,246,.6)}\n\n  section{min-height:100%;scroll-snap-align:start;position:relative;display:flex;flex-direction:column;justify-content:center;padding:clamp(84px,12vh,140px) clamp(20px,7vw,120px);overflow:hidden}\n  .eyebrow{font-size:12px;letter-spacing:.3em;text-transform:uppercase;color:var(--musgo);margin-bottom:clamp(20px,4vh,44px)}\n  .eyebrow b{font-weight:400;color:var(--banana)}\n\n  .rv{opacity:0;transform:translateY(26px);transition:opacity .9s cubic-bezier(.2,.6,.2,1),transform .9s cubic-bezier(.2,.6,.2,1)}\n  section.in .rv{opacity:1;transform:none}\n  section.in .rv:nth-child(2),section.in .d2{transition-delay:.12s}\n  section.in .rv:nth-child(3),section.in .d3{transition-delay:.24s}\n  section.in .rv:nth-child(4),section.in .d4{transition-delay:.36s}\n  section.in .rv:nth-child(5),section.in .d5{transition-delay:.48s}\n  section.in .rv:nth-child(6),section.in .d6{transition-delay:.6s}\n\n  .selva{color:#FAFAF6}\n  .selva .bg{position:absolute;inset:0;z-index:0}\n  .selva .bg img{width:100%;height:100%;object-fit:cover;display:block}\n  .selva .bg::after{content:'';position:absolute;inset:0;background:rgba(18,30,20,.38)}\n  .selva .mid{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;text-align:center;gap:34px}\n  .lockup{display:flex;align-items:center;gap:clamp(18px,3vw,34px)}\n  .lockup img{display:block}\n  .lockup .d2m{height:clamp(30px,4.6vw,54px)}\n  .lockup .grm{height:clamp(20px,3.2vw,38px)}\n  .lockup .plus{font-family:var(--lt);font-size:clamp(22px,3vw,36px);line-height:1;opacity:.9}\n  .selva .sub{font-family:var(--lt);font-size:clamp(13px,1.4vw,17px);letter-spacing:.14em;text-transform:uppercase;opacity:.92}\n  .selva .foot{position:absolute;z-index:1;left:0;right:0;bottom:clamp(56px,9vh,88px);text-align:center;font-size:12px;letter-spacing:.26em;text-transform:uppercase;opacity:.8}\n  @media (prefers-reduced-motion:no-preference){\n    .kb img{animation:kb 36s ease-in-out infinite alternate}\n    @keyframes kb{from{transform:scale(1)}to{transform:scale(1.07)}}\n  }\n\n  h1,h2{font-family:var(--ext);font-weight:400;text-wrap:balance}\n  .statement h1{font-size:clamp(34px,5.6vw,86px);line-height:1.08;letter-spacing:-.01em;max-width:16ch}\n  .apoio{max-width:44ch;font-size:clamp(15px,1.5vw,19px);line-height:1.65;color:var(--musgo)}\n  .split{display:grid;grid-template-columns:1.4fr .8fr;gap:clamp(28px,6vw,90px);align-items:end}\n  .split>*{min-width:0}\n  @media(max-width:820px){.split{grid-template-columns:1fr}}\n\n  .pilares{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(22px,3.4vw,56px);border-top:1px solid var(--linha);padding-top:clamp(26px,5vh,52px)}\n  .pilar .t{font-family:var(--ext);font-size:clamp(17px,1.7vw,23px);line-height:1.3;margin-bottom:16px}\n  .pilar p{font-size:14.5px;line-height:1.7;color:var(--musgo)}\n  .pilar .k{display:block;font-size:11px;letter-spacing:.26em;color:var(--banana);text-transform:uppercase;margin-bottom:18px}\n  @media(max-width:820px){.pilares{grid-template-columns:1fr}}\n\n  .demo{border:1px solid var(--linha);border-radius:18px;padding:clamp(12px,1.6vh,18px);display:flex;flex-direction:column;gap:8px}\n  .demo .b{max-width:90%;padding:9px 13px;border-radius:14px;font-size:12.5px;line-height:1.5}\n  .demo .cli{align-self:flex-end;background:#ECEDE3;color:var(--ink);border-bottom-right-radius:4px}\n  .demo .can{align-self:flex-start;background:var(--verde);color:#FAFAF6;border-bottom-left-radius:4px}\n\n  .arq{display:grid;grid-template-columns:1fr 44px 1.15fr 44px 1fr;gap:clamp(10px,1.2vw,18px);align-items:stretch;border-top:1px solid var(--linha);padding-top:clamp(24px,4vh,44px)}\n  .arq .col{display:flex;flex-direction:column;gap:10px}\n  .arq .col-h{font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--musgo);margin-bottom:8px;line-height:1.5}\n  .arq .box{border:1px solid var(--linha);border-radius:14px;padding:13px 15px}\n  .arq .box .bn{font-family:var(--ext);font-size:12.5px;line-height:1.4}\n  .arq .box .bd{font-size:11.5px;color:var(--musgo);margin-top:4px;line-height:1.5}\n  .arq .core{background:var(--verde);color:#FAFAF6;border-radius:18px;padding:clamp(16px,2.4vh,26px);display:flex;flex-direction:column;gap:12px;height:100%}\n  .arq .core .ch{font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--banana)}\n  .arq .core .box{border-color:rgba(250,250,246,.25)}\n  .arq .core .box .bd{color:rgba(250,250,246,.72)}\n  .arq .link{position:relative;display:flex;align-items:center;justify-content:center}\n  .arq .link::before{content:'';position:absolute;left:-6px;right:-6px;top:50%;height:1px;background:var(--musgo);opacity:.5}\n  .arq .link span{position:relative;background:var(--paper);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--musgo);transform:rotate(-90deg);white-space:nowrap;padding:0 6px}\n  @media(max-width:900px){.arq{grid-template-columns:1fr}.arq .link{min-height:34px}.arq .link::before{left:50%;right:auto;top:0;bottom:0;width:1px;height:auto}.arq .link span{transform:none}}\n\n  .ondas{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(22px,3vw,48px);position:relative;padding-top:clamp(30px,5vh,52px)}\n  .ondas::before{content:'';position:absolute;top:0;left:0;right:0;height:1px;background:var(--linha)}\n  .onda{position:relative}\n  .onda::before{content:'';position:absolute;top:calc(-1 * clamp(30px,5vh,52px));left:0;width:9px;height:9px;border-radius:50%;background:var(--banana);transform:translateY(-4px)}\n  .onda .fase{font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--musgo);margin-bottom:10px}\n  .onda .t{font-family:var(--ext);font-size:clamp(17px,1.8vw,24px);margin-bottom:18px}\n  .onda ul{list-style:none}\n  .onda li{font-size:14px;line-height:1.6;color:var(--musgo);padding:9px 0;border-bottom:1px solid var(--linha)}\n  .pilares.dois{grid-template-columns:1fr 1fr}\n  @media(max-width:820px){.ondas{grid-template-columns:1fr}.onda::before{display:none}.pilares.dois{grid-template-columns:1fr}}\n\n  .custos{border-top:1px solid var(--linha);max-width:880px}\n  .custos .row{display:grid;grid-template-columns:minmax(0,1fr) auto;align-items:baseline;gap:24px;padding:clamp(18px,3vh,30px) 0;border-bottom:1px solid var(--linha)}\n  .custos .row .t{font-family:var(--ext);font-size:clamp(16px,1.7vw,22px)}\n  .custos .row .d{font-size:13.5px;color:var(--musgo);margin-top:8px;max-width:52ch;line-height:1.6}\n  .custos .row .v{font-family:var(--ext);font-size:clamp(20px,2.4vw,34px);font-variant-numeric:tabular-nums;white-space:nowrap}\n  .custos .row .v em{font-style:normal;color:var(--musgo);font-family:var(--lt);font-size:.55em;letter-spacing:.1em}\n  .custos .total .v{color:var(--banana)}\n  .cond{margin-top:clamp(22px,4vh,40px);font-size:13px;line-height:1.7;color:var(--musgo);max-width:60ch}\n\n  .capa{padding:clamp(72px,10vh,104px) var(--mx) clamp(62px,9vh,88px);background:var(--paper)}\n  .capa .frame{position:relative;border-radius:clamp(18px,2.4vw,30px);overflow:hidden;flex:1;min-height:min(58vh,640px);display:flex;align-items:center;justify-content:center;color:#FAFAF6}\n  .capa .frame .bgimg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;z-index:0}\n  .capa .frame::after{content:'';position:absolute;inset:0;background:rgba(18,30,20,.34);z-index:0}\n  .capa .frame .mid{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;text-align:center;gap:30px}\n  .capa .frame .sub{font-family:var(--lt);font-size:clamp(12px,1.3vw,16px);letter-spacing:.16em;text-transform:uppercase;opacity:.92}\n  .capa .caption{display:flex;justify-content:space-between;align-items:baseline;gap:24px;padding:clamp(16px,2.6vh,26px) 0 0;flex-wrap:wrap}\n  .capa .caption .frase-cap{font-family:var(--lt);font-size:clamp(14px,1.55vw,19px);color:var(--ink);letter-spacing:.01em}\n  .capa .caption .meta{font-size:11px;letter-spacing:.24em;text-transform:uppercase;color:var(--musgo)}\n\n  .expert{border:1px solid var(--linha);border-radius:20px;padding:clamp(22px,3.4vh,36px);display:flex;flex-direction:column;gap:5px;max-width:400px;justify-self:end}\n  .expert .mono{width:54px;height:54px;border-radius:50%;background:var(--verde);color:#FAFAF6;font-family:var(--ext);font-size:16px;display:flex;align-items:center;justify-content:center;margin-bottom:16px;letter-spacing:.06em}\n  .expert .nome{font-family:var(--ext);font-size:clamp(18px,1.9vw,25px)}\n  .expert .firma{font-size:11px;letter-spacing:.26em;text-transform:uppercase;color:var(--banana);margin:4px 0 12px}\n  .expert p{font-size:13.5px;line-height:1.68;color:var(--musgo)}\n  @media(max-width:820px){.expert{justify-self:start}}\n\n  .fecho .bg::after{background:rgba(12,22,14,.64)}\n  .fecho .mid{gap:44px}\n  .fecho .frase{font-family:var(--lt);font-size:clamp(16px,1.8vw,25px);line-height:1.65;letter-spacing:.025em;max-width:44ch;text-wrap:balance}\n  .fecho .frase i{font-style:normal;opacity:.65}\n\n  .ring{width:clamp(54px,5.4vw,80px);height:auto;display:block}\n  .ring.branco{filter:brightness(0) invert(1)}\n\n  .apoio::before{content:'';display:block;width:36px;height:2px;background:var(--banana);margin-bottom:18px}\n  .apoio.destaque{color:var(--ink);font-size:clamp(16px,1.7vw,21px);line-height:1.6}\n\n  .indice{display:grid;grid-template-columns:1fr 1fr;gap:0 clamp(28px,5vw,90px);border-top:1px solid var(--linha)}\n  .indice a{display:flex;align-items:baseline;gap:18px;padding:clamp(13px,2.2vh,22px) 0;border-bottom:1px solid var(--linha);text-decoration:none;color:var(--ink)}\n  .indice a .n{font-family:var(--lt);font-size:11px;letter-spacing:.18em;color:var(--musgo);min-width:28px;transition:color .25s}\n  .indice a .t{font-family:var(--ext);font-size:clamp(16px,1.9vw,26px);line-height:1.25;transition:transform .3s cubic-bezier(.2,.6,.2,1)}\n  .indice a:hover .n,.indice a:focus-visible .n{color:var(--banana)}\n  .indice a:hover .t,.indice a:focus-visible .t{transform:translateX(6px)}\n  @media(max-width:820px){.indice{grid-template-columns:1fr}}\n\n  .apoio,.pilar p,.demo .b,.onda li,.custos .row .d,.cond,.arq .box .bd,.expert p,.lead{font-family:var(--sf)}\n\n  .logofull{height:clamp(38px,5.4vw,66px);width:auto;filter:brightness(0);display:block;margin-bottom:clamp(20px,3.4vh,34px)}\n  .prods{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--linha)}\n  .prods .p{padding:clamp(14px,2vh,20px) 20px clamp(14px,2vh,20px) 0;border-bottom:1px solid var(--linha)}\n  .prods .pn{display:flex;align-items:center;gap:9px;font-family:var(--ext);font-size:clamp(12.5px,1.1vw,14.5px)}\n  .prods .dot{width:8px;height:8px;border-radius:50%;flex:none}\n  .prods .p p{font-family:var(--sf);font-size:12.5px;color:var(--musgo);line-height:1.55;margin-top:6px}\n  @media(max-width:900px){.prods{grid-template-columns:1fr 1fr}}\n\n  .leg{display:flex;gap:26px;flex-wrap:wrap;margin-bottom:clamp(18px,3vh,30px);font-family:var(--sf);font-size:12.5px;color:var(--musgo)}\n  .leg span{display:flex;align-items:center;gap:8px}\n  .leg i{width:9px;height:9px;border-radius:50%;display:inline-block}\n  .leg .ok{background:var(--ok)}\n  .leg .nv{background:var(--banana)}\n  .frentes{display:grid;grid-template-columns:1fr 1fr;border-top:1px solid var(--linha);column-gap:clamp(24px,4vw,64px)}\n  .frentes .f{border-bottom:1px solid var(--linha);padding:clamp(12px,1.8vh,18px) 0}\n  .frentes .fn{font-family:var(--ext);font-size:clamp(13px,1.2vw,15.5px);margin-bottom:8px;display:flex;justify-content:space-between;gap:12px;align-items:baseline}\n  .frentes .fn .ct{font-family:var(--sf);font-size:10.5px;color:var(--musgo);white-space:nowrap;letter-spacing:.04em}\n  .frentes .fi{display:flex;gap:8px;align-items:baseline;font-family:var(--sf);font-size:12px;line-height:1.5;color:var(--ink);padding:2.5px 0}\n  .frentes .fi::before{content:'';width:6px;height:6px;border-radius:50%;flex:none;position:relative;top:-1px}\n  .frentes .fi.ok::before{background:var(--ok)}\n  .frentes .fi.nv::before{background:var(--banana)}\n  .frentes .fnote{font-family:var(--sf);font-size:11px;color:var(--musgo);margin-top:7px;line-height:1.5}\n  .frentes .demo{margin:clamp(12px,1.8vh,18px) 0;align-self:start}\n  @media(max-width:900px){.frentes{grid-template-columns:1fr}}\n\n  .comps{display:flex;flex-direction:column;gap:clamp(18px,3vh,32px)}\n  .comp{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,3vw,48px);border-top:1px solid var(--linha);padding-top:clamp(14px,2.2vh,22px)}\n  .comp .ctit{grid-column:1/-1;font-family:var(--ext);font-size:clamp(15px,1.6vw,20px)}\n  .comp .lk{font-family:var(--lt);font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;margin-bottom:12px}\n  .comp .hj .lk{color:var(--hibisco)}\n  .comp .cn .lk{color:var(--ok)}\n  .steps{list-style:none;counter-reset:s;display:flex;flex-direction:column;gap:9px}\n  .steps li{font-family:var(--sf);font-size:12.5px;line-height:1.55;color:var(--musgo);display:flex;gap:10px;align-items:baseline}\n  .steps li::before{counter-increment:s;content:counter(s);font-family:var(--lt);font-size:10px;color:var(--hibisco);border:1px solid currentColor;border-radius:50%;width:17px;height:17px;display:flex;align-items:center;justify-content:center;flex:none;position:relative;top:2px}\n  @media(max-width:820px){.comp{grid-template-columns:1fr}}\n\n  .klist{list-style:none;margin-top:6px}\n  .klist li{font-family:var(--sf);font-size:13.5px;line-height:1.6;color:var(--ink);padding:10px 0;border-bottom:1px solid var(--linha)}\n  .klist li b{font-weight:600}\n\n  .kpis{display:grid;grid-template-columns:repeat(4,1fr);border-top:1px solid var(--linha)}\n  .kpis .k{padding:clamp(16px,2.6vh,26px) 22px clamp(16px,2.6vh,26px) 0;border-bottom:1px solid var(--linha)}\n  .kpis .k .kt{font-family:var(--ext);font-size:clamp(13.5px,1.25vw,16px);line-height:1.35}\n  .kpis .k p{font-family:var(--sf);font-size:12.5px;color:var(--musgo);line-height:1.6;margin-top:8px}\n  .kpis .k .kb{font-family:var(--sf);font-size:11.5px;color:var(--banana);margin-top:8px;line-height:1.5}\n  @media(max-width:900px){.kpis{grid-template-columns:1fr 1fr}}\n  @media(max-width:600px){.kpis{grid-template-columns:1fr}}\n\n  @media(max-width:820px){\n    .deckroot{scroll-snap-type:y proximity}\n    nav.dots{display:none}\n    section{padding:72px 20px 82px}\n    .counter,.hint{bottom:16px}\n    .capa{padding:60px var(--mx) 96px}\n    .capa .frame{min-height:42svh}\n    .capa .frame .mid{gap:18px;padding:0 20px}\n    .capa .frame .sub{font-size:10.5px;letter-spacing:.12em;text-wrap:balance;line-height:1.7}\n    .capa .lockup{gap:14px}\n    .capa .lockup .d2m{height:25px}\n    .capa .lockup .grm{height:16px}\n    .capa .lockup .plus{font-size:17px}\n    .capa .caption{flex-direction:column;align-items:flex-start;gap:10px;padding:18px 2px 0}\n    .capa .caption .frase-cap{font-size:15px;line-height:1.5;max-width:34ch}\n    .eyebrow{margin-bottom:18px}\n    .fecho .frase{font-size:15px}\n  }\n\n  :focus-visible{outline:2px solid var(--banana);outline-offset:4px}\n  @media (prefers-reduced-motion:reduce){\n    .deckroot{scroll-behavior:auto}\n    .rv{opacity:1;transform:none;transition:none}\n  }\n\n  .deckwrap{position:relative;height:100vh;height:100svh;overflow:hidden}\n  .deckroot{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y mandatory;scroll-behavior:smooth}\n\n  .gwrap{position:relative;height:100vh;height:100svh;overflow:hidden;display:flex;align-items:center;justify-content:center;background:var(--verde-fundo);font-family:var(--lt)}\n  .gwrap .gbg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover}\n  .gwrap::after{content:'';position:absolute;inset:0;background:rgba(12,22,14,.5)}\n  .gcard{position:relative;z-index:1;background:var(--paper);border-radius:20px;padding:40px 36px 32px;width:min(380px,88vw);text-align:center;box-shadow:0 30px 80px rgba(0,0,0,.45)}\n  .glock{display:flex;align-items:center;justify-content:center;gap:12px;margin-bottom:14px}\n  .glock img{filter:brightness(0);display:block}\n  .glock span{font-family:var(--lt);font-size:15px;color:var(--ink)}\n  .gsub{font-family:var(--lt);font-size:10px;letter-spacing:.24em;text-transform:uppercase;color:var(--musgo);margin-bottom:26px}\n  .ginput{width:100%;box-sizing:border-box;padding:13px 14px;border:1px solid var(--linha);border-radius:10px;background:#fff;font-size:15px;text-align:center;outline:none;font-family:var(--sf)}\n  .ginput:focus{border-color:var(--verde);box-shadow:0 0 0 3px rgba(36,66,47,.14)}\n  .gbtn{width:100%;margin-top:12px;padding:13px;border:none;border-radius:10px;background:var(--verde);color:var(--paper);font-size:12px;letter-spacing:.24em;text-transform:uppercase;cursor:pointer;font-family:var(--lt)}\n  .gbtn:hover{background:#1C3526}\n  .gerr{display:none;color:var(--hibisco);font-size:13px;margin-top:12px;font-family:var(--sf)}\n  .shake{animation:gsh .4s}\n  @keyframes gsh{0%,100%{transform:translateX(0)}20%{transform:translateX(-9px)}40%{transform:translateX(9px)}60%{transform:translateX(-5px)}80%{transform:translateX(5px)}}\n`,\n  render(d2){\n    return d2.state.unlocked ? DECK : GATE\n  },\n  mounted(d2){\n    injectFonts()\n    let ok=OPEN\n    try{ if(sessionStorage.getItem('deckB2bUnlocked')==='1') ok=true }catch(e){}\n    try{ if((location.search||'').indexOf('k='+PASS)>-1) ok=true }catch(e){}\n    const check=()=>{\n      const inp=d2.$('.ginput'); if(!inp) return\n      if(inp.value===PASS){\n        try{sessionStorage.setItem('deckB2bUnlocked','1')}catch(e){}\n        d2.state.unlocked=true\n      } else {\n        const c=d2.$('.gcard'), er=d2.$('.gerr')\n        if(er)er.style.display='block'\n        if(c){c.classList.remove('shake');void c.offsetWidth;c.classList.add('shake')}\n        if(inp.select)inp.select()\n      }\n    }\n    d2.on('.gbtn','click',check)\n    d2.on('.ginput','keydown',e=>{if(e.key==='Enter')check()})\n    if(ok) d2.state.unlocked=true\n    initDeck(d2)\n  },\n  updated(d2){\n    initDeck(d2)\n  }\n}","at":"2026-08-28T17:08:33.591Z"}}}]}},{"reference":"ExternalComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_id":"5f060d9b1ca96def42f3c40a","displayName":"Builder AuthStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"credentials":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"UsersDataSet"}},"sessionShared":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},"email":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"nR6Q9d7qdaPtZhJ28Q8Dy"},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"yPCJBTKo8q1Mw0B_3Kpwl"},"component":"data2-core-types@ArtboardReference"}}},"session":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"name"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"sessionMetadata":{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"active"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.status"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is active user"}]},"component":"data2-core-logical-operators@And","displayName":"is active and has _id"}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $user"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-primitives@String","params":{"content":"@data2.app"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.email"}}}}},"component":"data2-core-functions@Includes","displayName":"isData2User"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}},"component":"data2-core-flow@Step"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.d2_app"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"management"}}]},"component":"data2-core-functions@Includes","displayName":"isData2App Exception"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}},"component":"data2-core-flow@Step"},{"params":{"resultName":{"component":"data2-core-primitives@String","params":{"content":"has_access"}},"action":{"params":{"compare":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}]},"component":"data2-core-logical-operators@Or"},"else":{"params":{"actions":[{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $metadata.system"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":"filter","args":[{"_id":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records.length"}}}}},"component":"data2-core-logical-operators@Not","displayName":"systems not found"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check system found"},{"params":{"actions":[{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"organization":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.organization._id"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"}]},"component":"data2-core-flow@Parallel"}]},"component":"data2-core-flow@Series","displayName":"common setup"},{"params":{"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"else":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"compare":{"params":{"components":{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"mapper":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"system"}}],"body":{"params":{"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.visibility"}}}},"defaultCase":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"public"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"billing-owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}},{"component":"data2-core-primitives@String","params":{"content":"member"}}]},"component":"data2-core-functions@Includes","displayName":"has role with access"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"collaborator"}}},"component":"data2-core-comparison-operators@Equal","displayName":"is collaborator"}]},"component":"data2-core-logical-operators@And","displayName":"is org member and collaborator"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is collaborator"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is collaborator and has system access"}]},"component":"data2-core-logical-operators@Or"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"private"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}}]},"component":"data2-core-functions@Includes","displayName":"is owner/admin"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is owner/admin"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is member and has system access"}]},"component":"data2-core-logical-operators@Or","displayName":"is owner/admin or has system access"}}}]},"component":"data2-core-flow@Switch"}}}},"component":"data2-core-functions@ArrayMap"}},"component":"data2-core-logical-operators@And","displayName":"has org member for all systems in request"}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-flow@If"}},"component":"data2-core-flow@Step"},{"params":{"then":{"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"else":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"has_access"}}}}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"sessionExpiresIn":{"component":"data2-core-primitives@Number","params":{"content":604800}},"sessionRenewal":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"identityProviders":[{"provider":{"component":"data2-core-primitives@String","params":{"content":"GOOGLE"}},"clientId":{"component":"data2-core-primitives@String","params":{"content":"55470861603-22pvfc1t49lp8cjnbfk71s5ct9hp1q1v.apps.googleusercontent.com"}}}]},"reference":"Data2BuilderAuthentication","updatedAt":"2026-08-06T19:31:23.557Z"},{"_id":"5f060ee51ca96def42f3fbd1","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"UsersTableDataSource"}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}}},"reference":"UsersDataSet","updatedAt":"2026-03-04T21:16:40.291Z"},{"_id":"68f938cf5fb002e33752a43d","displayName":"InternalApplicationsAuthenticationStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}}},"verifier":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"InternalApplicationsVerifierDataSet"}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"secret"}},"credentials":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}],"session":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}]},"reference":"InternalApplicationsAuthenticationStrategy","updatedAt":"2025-10-22T20:08:54.442Z","createdAt":"2025-10-22T20:04:31.198Z"},{"component":"data2-core@DataSet","reference":"SessionsDataSet","params":{"requiresConfirmation":false,"pk":"key","datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"data2sessionsdatasource"}}}},{"reference":"UsersTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@ServerSessionsDataSource","reference":"data2sessionsdatasource","params":{}},{"_id":"5f1600b70528b92601890f75","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ServiceComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ServiceComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:20.208Z","createdAt":"2020-07-20T20:38:15.436Z"},{"_id":"5f1602190528b92601890f7d","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":40000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentInstancesTableDataSource"}},"sort":{"_id":1},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:07.089Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"5f16017f0528b92601890f7a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"FileComponentInstancesDataSet","updatedAt":"2023-08-03T16:08:18.193Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"5f1601990528b92601890f7b","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ApplicationsTableDataSource"}},"pk":"_id","autoEdit":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"params":{"column":"_id"},"component":"data2-core-types@DataSetColumnReference"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"ApplicationsDataSet","updatedAt":"2022-12-13T21:51:13.995Z","createdAt":"2020-07-20T20:42:01.657Z"},{"_id":"5f16172a0528b92601890f85","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":10000}}},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"DataComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"DataComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:12.831Z","createdAt":"2020-07-20T22:14:02.097Z"},{"_id":"60ddc1bbda3861ca65407c5a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"pagination":{"size":1},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"}},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2022-02-09T19:44:38.036Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"63ee3d38b8c9838c62fb05fb","displayName":"DriveFileComponentInstancesDataSet","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core@Drive"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2025-12-04T21:58:32.367Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a91c013c028f6518566d78f","component":"data2-core-primitives@Artboard","system":"6a62e4640613f70fa449ff5d","displayName":"Deck Proposta B2B","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Deck Proposta B2B"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"gKeq1Sq_d-eO5KzFztHO_","deleteMetadata":{}},{"_id":"2fe64508548001978077c876","parent":"6a91c013c028f6518566d78f","component":"granado-app@kDeckB2b","system":"6a62e4640613f70fa449ff5d","displayName":"Deck B2B","params":{"super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"right":false,"top":true,"bottom":false,"growH":true,"growV":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900,"growWidthWithContent":false,"growHeightWithContent":false}}}},"reference":"H2eR9mMWBEmulEJgu3Cge","deleteMetadata":{}}]}},{"_id":"5fc4faeec8da12be8bf3d08a","component":"data2-core@Data2TableDataSource","system":"5e3b796d6228227ca637d0f4","params":{"paginate":{"default":1000},"super":{},"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"fileId"}},"title":"File ID","component":"data2-core-primitives@ObjectId"},"break":true}],"hooks":{"before":{"all":[{"hook":"softDelete"}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"timestamp","options":{"fields":["createdAt","updatedAt"]}}],"update":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}],"patch":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}]},"after":{"all":[{"hook":"fileUrl","options":{"downloadField":"params.fileUrl","uploadField":"params.uploadFileUrl","enhanceSchema":false}}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"update":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"patch":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"remove":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}]}},"multi":["create"],"useEstimatedDocumentCount":true},"reference":"FileComponentInstancesTableDataSource","updatedAt":"2022-12-19T20:42:51.837Z","createdAt":"2020-11-30T13:59:52.294Z"},{"reference":"ApplicationsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a91c025e388bf7aa9a2ecb2","displayName":"Proposta B2B","reference":"2X7wQM4j9sJbbmuNoJqC5","params":{"domain":{"component":"data2-core-primitives@String","params":{"content":"proposta-b2b"}},"entryPoint":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"gKeq1Sq_d-eO5KzFztHO_"}}},"system":"6a62e4640613f70fa449ff5d","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}