{"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":"private"},"updatedAt":"2026-10-15T19:50:34.779Z","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":"6ab193b55b7f36852210555e","component":"data2-core-types@Component","system":"6a62e4640613f70fa449ff5d","params":{"extends":"data2-core-primitives@Block","component":"kDeckTroca","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 A = {\n  selva:'https://granado-app.data2.media/file/vtX2WoickNniXWiKw8Wlu',\n  d2:'https://granado-app.data2.media/file/LpTFBwceU18zO_Rq851DZ',\n  gr:'https://granado-app.data2.media/file/KeuqyqRJshxUgDSlJ3-cP',\n  ring:'https://granado-app.data2.media/file/75u1HgbGXdpQYuO5K6Qkr',\n};\nconst FONT_CSS =\n  \"@font-face{font-family:'AkzExt';src:url(https://granado-app.data2.media/file/0CZkejVeZq0bfAk8k7gcV) format('opentype');font-weight:400;font-display:block}\"+\n  \"@font-face{font-family:'AkzExtLight';src:url(https://granado-app.data2.media/file/7byzMrjAumJjhuFgYCpbk) format('opentype');font-weight:300;font-display:block}\";\nfunction injectFonts(){ try{ 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) } }catch(e){} }\n\nconst stat = (id, eyebrow, h, apoio, extra) =>\n  '<section id=\"'+id+'\" class=\"statement\"><div class=\"eyebrow rv\">'+eyebrow+'</div>'+\n  '<div class=\"split\"><h1 class=\"rv\">'+h+'</h1>'+\n  '<p class=\"apoio rv\">'+apoio+'</p></div>'+(extra||'')+'</section>';\n\nconst SENHA = 'yestemosbananas';\nconst lockHtml = () =>\n  '<div class=\"lock\">'+\n    '<img class=\"lkbg\" src=\"'+A.selva+'\" alt=\"\">'+\n    '<div class=\"lkin\">'+\n      '<div class=\"lockup\">'+\n        '<img class=\"d2m\" src=\"'+A.d2+'\" alt=\"Data²\"><span class=\"plus\">+</span>'+\n        '<img class=\"grm\" src=\"'+A.gr+'\" alt=\"Granado\"></div>'+\n      '<div class=\"lksub\">Troca e devolução B2C omnichannel · discovery</div>'+\n      '<form class=\"lkf\"><input class=\"lki\" type=\"password\" placeholder=\"senha\" autocomplete=\"off\" spellcheck=\"false\" aria-label=\"senha\">'+\n      '<button class=\"lkb\" type=\"submit\">entrar</button></form>'+\n      '<div class=\"lke\"></div>'+\n    '</div></div>';\n\nconst SLIDES = [\n\n'<section id=\"capa\" class=\"capa\">'+\n  '<div class=\"frame kb rv\"><img class=\"bgimg\" src=\"'+A.selva+'\" alt=\"\">'+\n    '<div class=\"mid\"><div class=\"lockup\">'+\n      '<img class=\"d2m\" src=\"'+A.d2+'\" alt=\"Data²\"><span class=\"plus\">+</span>'+\n      '<img class=\"grm\" src=\"'+A.gr+'\" alt=\"Granado\"></div>'+\n      '<div class=\"sub\">Troca e devolução B2C omnichannel</div></div></div>'+\n  '<div class=\"caption rv\"><div class=\"frase-cap\">We build Data² while imagining a world where things just … work.</div>'+\n  '<div class=\"meta\">Discovery · Setembro 2026</div></div></section>',\n\n'<section id=\"discovery\"><div class=\"eyebrow rv\">01 · O discovery</div>'+\n '<div class=\"split rv\"><h1 class=\"rv\" style=\"font-family:var(--ext);font-size:clamp(25px,3.3vw,43px);line-height:1.12;max-width:21ch\">'+\n 'Entramos pela troca omnichannel e encontramos o pós-venda B2C inteiro.</h1>'+\n '<p class=\"apoio rv\">O recorte inicial era o caminho da troca entre canais. Percorrendo caso a caso com quem executa, o problema apareceu na abertura, na logística, no fiscal e nas duas pontas do dinheiro.</p></div>'+\n '<div class=\"distt rv\" style=\"margin-top:clamp(18px,3vh,36px)\">De onde veio cada coisa</div>'+\n '<ul class=\"klist rv\">'+\n '<li><b>5 reuniões gravadas</b> com SAC, marketplace, adquirentes, financeiro e CD.</li>'+\n '<li><b>Relatório de Dores da Auditoria Interna</b>, com 44 dores catalogadas por área, impacto e requisito.</li>'+\n '<li><b>Discovery presencial</b>, percorrendo o fluxo real caso a caso com quem executa.</li>'+\n '<li><b>WhatsApp da operação</b>, com 1.757 mensagens capturadas em vinte dias.</li></ul>'+\n '<p class=\"cond rv\">Nenhuma dessas conversas foi com o time de loja física. O que este documento diz sobre o balcão é inferência, não apuração.</p></section>',\n\n'<section id=\"numeros\"><div class=\"eyebrow rv\">02 · O tamanho do problema</div>'+\n '<div class=\"split rv\"><h1 class=\"rv\" style=\"font-family:var(--ext);font-size:clamp(24px,3.2vw,42px);line-height:1.12;max-width:19ch\">'+\n 'A conta do pós-venda é paga por seis áreas.</h1>'+\n '<p class=\"apoio rv\">As dores catalogadas pela Auditoria Interna não ficam no atendimento. Elas se espalham por quem vende, quem separa, quem fatura e quem paga.</p></div>'+\n '<div class=\"dist rv\"><div class=\"distt\">As 44 dores da Auditoria Interna, por área</div>'+\n '<div class=\"barr\">'+\n [['Canais Digitais',13],['Lojas',12],['CD',9],['SAC',4],['Fiscal',3],['Contas a Receber',3]].map((a,i)=>\n   '<div class=\"seg s'+i+'\" style=\"flex:'+a[1]+'\">'+a[1]+'</div>').join('')+\n '</div><div class=\"barl\">'+\n [['Canais Digitais',13],['Lojas',12],['CD',9],['SAC',4],['Fiscal',3],['Contas a Receber',3]].map((a,i)=>\n   '<span><i class=\"s'+i+'\"></i>'+a[0]+'</span>').join('')+\n '</div></div>'+\n '<div class=\"kpis rv\" style=\"margin-top:clamp(14px,2.4vh,28px)\">'+\n [['80/dia','e-mails do SAC na fila do CD','e 100 a 200 caixas chegando em pico'],\n  ['5 a 10 dias','autorização no CD','contra a meta de 1 dia'],\n  ['150','pedidos travados no fiscal em um dia','rotina diária, mandada pro grupo do Teams'],\n  ['zero','indicadores monitorados','“não sei nem quantos trocos eu faço”']].map(k=>\n '<div class=\"k\"><div class=\"kt\">'+k[0]+'</div><p>'+k[1]+'</p><div class=\"kb\">'+k[2]+'</div></div>').join('')+\n '</div>'+\n '<div class=\"leits rv\">'+\n [['A política não é clara','O prazo de arrependimento <b>não é validado por sistema</b>. A plataforma de troca abre ocorrência sem o cliente sequer dizer qual produto quer no lugar. A regra vive na cabeça de quem está atendendo.'],\n  ['O ruído entra na operação','Casos sem retorno físico são roteados ao CD assim mesmo. <b>Duas planilhas paralelas</b> alimentam o mesmo financeiro. A curadoria manual do pedido de pagamento consome o dia do CD.'],\n  ['Nada disso vira número','Todo cancelamento entra como <b>“desistência do cliente”</b> no OMS e no SAP, o que apaga o motivo real e impede qualquer leitura preventiva.']].map(x=>\n '<div class=\"lei\"><div class=\"ln\">'+x[0]+'</div><div class=\"ld\">'+x[1]+'</div></div>').join('')+\n '</div>'+\n '<p class=\"cond rv\">Na plataforma de troca, que cobre CD e darkstore, foram 734 devoluções, 24 trocas por produto e 16 trocas-crédito em trinta dias, com 72% declarando arrependimento. É o único recorte com número, e ele não alcança a loja.</p></section>',\n\n'<section id=\"fluxo\"><div class=\"eyebrow rv\">03 · O fluxo mapeado</div>'+\n '<div class=\"split rv\"><h1 class=\"rv\" style=\"font-family:var(--ext);font-size:clamp(24px,3.2vw,42px);line-height:1.12;max-width:22ch\">'+\n 'Três trilhas que não conversam, e o SAC no meio de todas.</h1>'+\n '<p class=\"apoio rv\">Caso TR-1042, percorrido no discovery de 28 de agosto com o time que executa: pedido do CD, arrependimento, pago no cartão.</p></div>'+\n '<div class=\"lanes rv\">'+\n '<div class=\"lane\"><div class=\"ln\">Abertura</div><div class=\"passos\">'+\n [['parcial','Solicitação','TroqueCommerce, quando o pedido sai do CD ou da darkstore','ou formulário do site e e-mail, no SAC'],\n  ['parcial','Postagem pelo cliente','Correios · o caso fica em espera até o cliente postar','']].map(x=>\n '<div class=\"ps '+x[0]+'\"><div class=\"pn\">'+x[1]+'</div><div class=\"pw\">'+x[2]+'</div>'+\n (x[3]?'<div class=\"pl\">'+x[3]+'</div>':'')+'</div>').join('')+'</div></div>'+\n '<div class=\"faixa\"><div class=\"fn\">SAC · camada de interface</div>'+\n '<div class=\"fd\">Toda conversa com o cliente passa por aqui, e ele é chamado de volta em qualquer ponto do processo.</div>'+\n '<ul><li>A logística identifica que é troca, mas o SAC ainda não perguntou ao cliente qual produto ele quer no lugar.</li>'+\n '<li>O cliente pede o comprovante depois de encerrado, e o SAC precisa pedir ao financeiro.</li></ul></div>'+\n [['Logística',[\n   ['manual','Recebimento da caixa','chega sem identificação do pedido',''],\n   ['manual','Atribuição a um caso','aberta uma a uma, casada à mão com o chamado do SAC',''],\n   ['manual','Conferência e autorização','Logística, fora de sistema','5 a 10 dias · meta de 1']]],\n  ['Financeiro',[\n   ['manual','Aguarda a autorização','o reembolso não inicia antes disso',''],\n   ['manual','Cancela o pedido','Magento, na mão',''],\n   ['manual','Baixa a nota e concilia estoque','SAP',''],\n   ['manual','Preenche a planilha','OMNI+SAC 2026.xlsx',''],\n   ['manual','Libera o reembolso','Adyen, uma linha por vez','até 24h']]]].map(l=>\n '<div class=\"lane\"><div class=\"ln\">'+l[0]+'</div><div class=\"passos\">'+\n l[1].map(x=>'<div class=\"ps '+x[0]+'\"><div class=\"pn\">'+x[1]+'</div>'+\n (x[2]?'<div class=\"pw\">'+x[2]+'</div>':'')+(x[3]?'<div class=\"pl\">'+x[3]+'</div>':'')+'</div>').join('')+\n '</div></div>').join('')+'</div>'+\n '<div class=\"legenda rv\"><span><i style=\"background:var(--ok)\"></i>automático</span>'+\n '<span><i style=\"background:var(--banana)\"></i>parcial</span>'+\n '<span><i style=\"background:var(--hibisco)\"></i>manual</span></div>'+\n '<div class=\"contagem rv\">'+\n [['man','40','etapas manuais'],['','3','parciais'],['','13','inexistentes'],\n  ['aut','5','automáticas'],['','12','sem resposta']].map(c=>\n '<div class=\"'+c[0]+'\"><b>'+c[1]+'</b><span>'+c[2]+'</span></div>').join('')+\n '</div></section>',\n\n'<section id=\"hoje\"><div class=\"eyebrow rv\">04 · Onde estamos</div>'+\n '<div class=\"split rv\"><h1 class=\"rv\" style=\"font-family:var(--ext);font-size:clamp(24px,3.2vw,42px);line-height:1.12;max-width:22ch\">'+\n 'Da abertura ao comprovante, todas as etapas são manuais.</h1>'+\n '<p class=\"apoio rv\">O cliente não sabe por onde contestar, e a partir daí nada no processo devolve previsibilidade.</p></div>'+\n '<div class=\"etapas rv\">'+\n [['01','Abertura','ruído',['O cliente não sabe se abre na plataforma de troca, no formulário do site ou por e-mail para o SAC',\n     'Depende de onde o pedido saiu para entrega, e isso não aparece em nenhuma tela',\n     'O que entra pelo SAC é triado à mão'],\n    [['CD · entrega normal','parcial'],['Darkstore · expressa','parcial'],['Loja · expressa (SFS)','nao'],\n     ['Loja · retirada','nao'],['Loja · balcão','nao']]],\n  ['02','Tratativa','ruído',['Todo o tratamento acontece por e-mail',\n     'Sem resposta imediata ao cliente','Sem prazo e sem próximos passos']],\n  ['03','Logística','gargalo',['A etiqueta dos Correios sai sem o código do pedido original',\n     'As caixas chegam sem identificação e são abertas uma a uma',\n     'Cada devolução é atribuída a um caso do SAC manualmente','A triagem acumula']],\n  ['04','Reembolso','gargalo',['A operação preenche a planilha de reembolsos à mão',\n     'O financeiro processa a planilha à mão',\n     'O comprovante é pedido por e-mail e repassado por e-mail']]].map(e=>\n '<div class=\"et'+(e[2]==='gargalo'?' gg':(e[2]?' rd':''))+'\"><div class=\"en\">'+e[0]+'</div>'+\n '<div class=\"eh\">'+e[1]+(e[2]?'<span class=\"tag\">'+e[2]+'</span>':'')+'</div><ul>'+\n e[3].map(x=>'<li>'+x+'</li>').join('')+'</ul>'+\n (e[4]?'<div class=\"mini\"><div class=\"mh\">Consegue abrir sozinho?</div>'+\n   e[4].map(m=>'<div class=\"mr '+m[1]+'\"><span>'+m[0]+'</span><b>'+\n     (m[1]==='sim'?'✓':(m[1]==='parcial'?'~':'✕'))+'</b></div>').join('')+\n   '<div class=\"mn\"><b>~</b> atende, mas sem crivo: a ocorrência entra incompleta e alguém precisa completar depois.</div>'+\n   '</div>':'')+'</div>').join('')+\n '</div>'+\n '<div class=\"callout rv\"><div class=\"cl\">Achado</div><div class=\"cq\">A etiqueta dos Correios tem um campo livre que o SAC consegue preencher, e ele vai vazio. <b>É esse campo em branco que obriga a abrir caixa por caixa</b> e que empilha a fila de triagem.</div></div>'+\n '<p class=\"cond rv\">As regras e as políticas não são claras, e o processo não é visível enquanto corre. Sem regra escrita e sem visibilidade, cumprir prazo depende de quem estiver atendendo.</p></section>',\n\n'<section id=\"proposta\" class=\"statement selva\"><div class=\"bg\"><img src=\"'+A.selva+'\" alt=\"\"></div>'+\n '<div class=\"mid\"><img class=\"ring branco rv\" src=\"'+A.ring+'\" alt=\"\">'+\n '<div class=\"eyebrow rv\" style=\"color:rgba(250,250,246,.7);margin-bottom:0\">05 · Proposta</div>'+\n '<h1 class=\"rv\" style=\"max-width:19ch\">Uma entrada só, com prazo informado na abertura.</h1>'+\n '<p class=\"frase rv\">O cliente abre a ocorrência no mesmo lugar, em qualquer canal, e vê o prazo antes de confirmar. A regra decide elegibilidade, reparação e prazo. <i>O atendente trata as exceções.</i></p></div></section>',\n\n'<section id=\"arquitetura\"><div class=\"eyebrow rv\">06 · Como funciona</div>'+\n '<h1 class=\"rv\" style=\"font-family:var(--ext);font-size:clamp(24px,3.2vw,42px);line-height:1.12;max-width:24ch;margin-bottom:clamp(14px,2.4vh,28px)\">'+\n 'Três camadas: entrada do cliente, motor de regras e execução.</h1>'+\n '<div class=\"arq rv\">'+\n '<div class=\"col\"><div class=\"col-h\">Cliente</div>'+\n '<div class=\"box\"><div class=\"bn\">Portal de pós-venda</div><div class=\"bd\">seleciona o pedido e escolhe entre o que a regra permite</div></div>'+\n '<div class=\"box\"><div class=\"bn\">Assistente no WhatsApp</div><div class=\"bd\">mesma regra, mesmo prazo</div></div>'+\n '<div class=\"box\"><div class=\"bn\">Atendente</div><div class=\"bd\">abre pelo mesmo caminho, em nome do cliente</div></div></div>'+\n '<div class=\"link\"><span>entrada única</span></div>'+\n '<div class=\"core\"><div class=\"ch\">Motor de pós-venda</div>'+\n '<div class=\"box\"><div class=\"bn\">Deriva e enumera</div><div class=\"bd\">preenche o que o cliente não sabe e calcula o que ainda pode ser aberto</div></div>'+\n '<div class=\"box\"><div class=\"bn\">Decide</div><div class=\"bd\">elegibilidade, reparação e prazo, pela política escrita</div></div>'+\n '<div class=\"box\"><div class=\"bn\">Classifica e orquestra</div><div class=\"bd\">separa declarado de concluído e dispara as duas trilhas</div></div></div>'+\n '<div class=\"link\"><span>acionamento</span></div>'+\n '<div class=\"col\"><div class=\"col-h\">Execução</div>'+\n '<div class=\"box\"><div class=\"bn\">Logística</div><div class=\"bd\">só recebe caso com retorno físico real</div></div>'+\n '<div class=\"box\"><div class=\"bn\">Finanças e Fiscal</div><div class=\"bd\">abre junto com a logística, não depois</div></div>'+\n '<div class=\"box\"><div class=\"bn\">Service Cloud</div><div class=\"bd\">recebe a ocorrência sincronizada, com histórico</div></div></div>'+\n '</div><p class=\"cond rv\">As duas trilhas abrem no mesmo momento, e a inclusão do reembolso deixa de depender de alguém digitar uma planilha. Hoje o estorno fica parado de 5 a 10 dias esperando a autorização da logística. O compliance da Granado proíbe o cliente de falar direto com o CD ou o financeiro, e nesse desenho ele nunca precisa.</p></section>',\n\n'<section id=\"motor\"><div class=\"eyebrow rv\">07 · O que o motor faz</div>'+\n '<h1 class=\"rv\" style=\"font-family:var(--ext);font-size:clamp(26px,3.6vw,46px);line-height:1.1;max-width:16ch;margin-bottom:clamp(18px,3vh,36px)\">'+\n 'Cinco funções, em ordem.</h1>'+\n '<div class=\"funcs rv\">'+\n [['Deriva','Lê o pedido no Magento e preenche sozinho o que o cliente não sabe: de onde saiu, qual adquirente processou, há quantos dias foi a compra e em que status ele está. O cliente não responde nada disso.'],\n  ['Enumera','Com esses dados, calcula quais contestações ainda cabem naquele pedido. O que a regra não permite não chega a aparecer como opção, então o cliente nunca escolhe um caminho que seria recusado depois.'],\n  ['Decide','Aplica a política escrita: se é elegível, qual reparação cabe, se exige retorno físico do produto e qual o prazo de cada etapa. A decisão deixa de depender de quem está atendendo.'],\n  ['Classifica','Guarda em campos separados o que o cliente declarou e o que a operação concluiu. Hoje é um campo só, e ele recebe “desistência do cliente” em todos os casos, inclusive nos de defeito.'],\n  ['Orquestra','Abre as tarefas da logística e do financeiro no mesmo momento, com prazo em cada uma, e devolve o andamento ao cliente sem que ninguém precise perguntar. A inclusão do reembolso e o processamento do pagamento entram por aí, sem planilha no meio.']].map((v,i)=>\n '<div class=\"fx\"><div class=\"fnum\">'+String(i+1).padStart(2,'0')+'</div>'+\n '<div class=\"fnome\">'+v[0]+'</div><div class=\"fdesc\">'+v[1]+'</div></div>').join('')+\n '</div><p class=\"cond rv\">O motivo declarado pelo cliente e a conclusão da apuração passam a ser campos separados. Hoje é um campo só, e ele recebe “desistência do cliente”.</p></section>',\n\n'<section id=\"cliente\"><div class=\"eyebrow rv\">08 · O que muda para o cliente</div>'+\n '<h1 class=\"rv\" style=\"font-family:var(--ext);font-size:clamp(26px,3.6vw,48px);line-height:1.1;max-width:20ch;margin-bottom:clamp(18px,3vh,36px)\">'+\n 'Portal, WhatsApp e atendente passam a devolver a mesma resposta.</h1>'+\n '<div class=\"comps rv\"><div class=\"comp\">'+\n '<div class=\"hj\"><div class=\"lk\">Hoje</div><ul class=\"steps\">'+\n ['Descobre tentando se a plataforma atende o pedido dele','Escreve em texto livre e aguarda retorno',\n  'Recebe um protocolo, mas não enxerga o processo andar. Tudo corre por e-mail','Trocar por item mais barato é possível, mas o acerto da diferença é lento e manual'].map(x=>'<li>'+x+'</li>').join('')+\n '</ul></div><div class=\"cn\"><div class=\"lk\">Proposto</div><ul class=\"steps\">'+\n ['Seleciona o pedido e vê só as opções que a regra permite','Recebe o prazo junto de cada escolha',\n  'Sai com protocolo e ocorrência sincronizada com o Service Cloud','A diferença vira vale-troca, saldo no Loyalty ou checkout'].map(x=>'<li>'+x+'</li>').join('')+\n '</ul></div></div></div>'+\n '<p class=\"cond rv\">Quando o cliente escolhe um item de valor maior, a ocorrência fecha e a diferença vai para o checkout. A troca deixa de ser só custo.</p></section>',\n\n'<section id=\"asistobe\"><div class=\"eyebrow rv\">09 · Um caso, dos dois jeitos</div>'+\n '<h1 class=\"rv\" style=\"font-family:var(--ext);font-size:clamp(24px,3.2vw,42px);line-height:1.12;max-width:22ch;margin-bottom:0\">'+\n 'Trinta dias e nenhum prazo, contra três dias com prazo no minuto zero.</h1>'+\n '<div class=\"casobox rv\"><div class=\"cn2\">O caso</div><div class=\"cd2\">'+\n 'Pedido <b>#21008440292</b>, do CD, <b>R$ 301,00</b> no cartão. O cliente devolve o perfume de <b>R$ 241,50</b> '+\n 'e escolhe no lugar uma colônia de <b>R$ 98,00</b>. Sobram <b>R$ 143,50</b> a favor dele, que vão para a carteira do Loyalty. '+\n 'Fosse arrependimento, voltariam em dinheiro.</div></div>'+\n '<div class=\"vs rv\">'+\n [['hoje2','Hoje','≈ 30 dias',[\n   ['dia 0','Manda e-mail para o SAC, <em>sem saber se era ali que se abre</em>'],\n   ['dias 1–3','Troca de e-mails até o SAC entender o caso'],\n   ['dia 4','Etiqueta dos Correios emitida, <em>sem o código do pedido</em>'],\n   ['dia 7','A caixa chega ao CD sem identificação'],\n   ['dias 8–12','Aberta uma a uma e casada à mão com o chamado'],\n   ['dias 13–20','Conferência e autorização na fila da logística'],\n   ['dia 21','<em>Só aqui</em> o SAC pergunta qual produto ele quer no lugar'],\n   ['—','Os R$ 143,50 de sobra não têm cálculo no fluxo. O acerto é manual e lento'],\n   ['—','Nenhum prazo foi informado ao cliente em nenhum momento']]],\n  ['prop','Proposto','≈ 3 dias',[\n   ['0 min','Seleciona o pedido no portal, no WhatsApp ou com o atendente'],\n   ['0 min','O motor deriva origem, adquirente, prazo e status'],\n   ['1 min','Marca o perfume como item a devolver e escolhe a colônia de R$ 98'],\n   ['1 min','O motor calcula os R$ 143,50 de sobra e pergunta onde guardar'],\n   ['2 min','Escolhe a carteira do Loyalty. <em>Protocolo e prazo na tela</em>'],\n   ['2 min','Logística e financeiro abrem no mesmo momento'],\n   ['dia 2','Posta com etiqueta que carrega o código do pedido'],\n   ['dia 3','Conferência, e o pedido novo é despachado'],\n   ['—','O prazo foi dito no minuto zero e cumprido']]]].map(c=>\n '<div class=\"'+c[0]+'\"><div class=\"vsh\"><span class=\"vt\">'+c[1]+'</span><span class=\"vv\">'+c[2]+'</span></div>'+\n '<ul class=\"tl\">'+c[3].map(r=>'<li><span class=\"d\">'+r[0]+'</span><span class=\"x\">'+r[1]+'</span></li>').join('')+\n '</ul></div>').join('')+'</div></section>',\n\n'<section id=\"simulador\" class=\"statement selva\"><div class=\"bg\"><img src=\"'+A.selva+'\" alt=\"\"></div>'+\n '<div class=\"mid\"><div class=\"eyebrow rv\" style=\"color:rgba(250,250,246,.7)\">10 · Simulador</div>'+\n '<h1 class=\"rv\" style=\"max-width:18ch\">Simulador navegável com oito pedidos de exemplo.</h1>'+\n '<p class=\"frase rv\">Selecione um pedido, informe o que aconteceu e acompanhe a decisão do motor e as duas trilhas. Um botão alterna entre o fluxo atual e o proposto.</p>'+\n '<div class=\"rv\" style=\"font-family:var(--lt);font-size:clamp(12px,1.4vw,17px);letter-spacing:.06em;border:1px solid rgba(250,250,246,.35);border-radius:999px;padding:14px 26px\">'+\n 'simulador-posvenda.granado-app.next.data2.app</div></div></section>',\n\n'<section id=\"pendencias\"><div class=\"eyebrow rv\">11 · Pendências</div>'+\n '<div class=\"split rv\"><h1 class=\"rv\" style=\"font-family:var(--ext);font-size:clamp(24px,3.2vw,42px);line-height:1.12;max-width:21ch\">'+\n 'Dois bloqueadores. O resto entra depois, em qualquer ordem.</h1>'+\n '<p class=\"apoio rv\">Nenhuma integração de backoffice precisa estar pronta para o cliente ver diferença. Cada uma encurta o prazo e tira uma pessoa do caminho.</p></div>'+\n '<div class=\"pend rv\">'+\n '<div class=\"pcol bloq\"><div class=\"pct\">Bloqueadores</div>'+\n [['Integração no e-commerce','O motor precisa ler o pedido no Magento — origem, status, itens e forma de pagamento — e gravar a ocorrência de volta. Sem isso ele não deriva nada, e o autosserviço não sai do papel.'],\n  ['Políticas de troca escritas','O motor executa política. Enquanto as regras não estiverem escritas e aprovadas, não existe o que executar, e a decisão continua dependendo de quem estiver atendendo.']].map(x=>\n '<div class=\"pi\"><div class=\"pin\">'+x[0]+'</div><div class=\"pid\">'+x[1]+'</div></div>').join('')+\n '</div>'+\n '<div class=\"pcol prop\"><div class=\"pct\">Backoffice · aos poucos, em qualquer ordem</div>'+\n [['SAP','Rotinas de estoque: baixa da nota, conciliação e destino do item devolvido. Hoje é digitado à mão depois que a logística autoriza.'],\n  ['Gestão centralizada dos reembolsos','Inclusão e processamento automáticos. É o fim da planilha OMNI+SAC e do e-mail para o financeiro.'],\n  ['Sistemas das adquirentes','Adyen, PagBrasil e PagLeve. O estorno passa a ser disparado pela regra, com prazo em cada um, inclusive onde não há automação hoje.'],\n  ['Service','Consulta dos chamados anteriores e abertura no canal centralizado, com o histórico junto da ocorrência.']].map(x=>\n '<div class=\"pi\"><div class=\"pin\">'+x[0]+'</div><div class=\"pid\">'+x[1]+'</div></div>').join('')+\n '</div></div>'+\n '<p class=\"cond rv\">Continuam em aberto e dependem de vocês: a expressa que sai de loja física, único quadrante do mapa sem processo definido, e os critérios do score, que sugerimos como ocorrências recentes do cliente e nível no programa de fidelidade.</p></section>',\n\n'<section id=\"maturidade\" class=\"mat\">'+\n '<div class=\"matbar rv\"><h2>Maturidade de serviços por canal e marca — jornada de evolução em 3 ondas</h2>'+\n '<div class=\"matlogo\"><span>Grupo</span><b>GRANADO</b><i>— desde 1870 —</i></div></div>'+\n '<p class=\"matsub rv\">Nível de maturidade do atendimento por canal (SAC · Site · Bot · Telefônico · App), para cada marca do grupo, '+\n 'ao longo das 3 ondas do plano de ação do Assessment CX 2026. <b>Telefônico e App são novos — ainda sem avaliação por marca (ver nota).</b></p>'+\n '<div class=\"matleg rv\">'+\n [['v','✓','Maduro / disponível'],['e','~','Em evolução'],['x','✕','Não iniciado'],['n','△','Novo canal — a mapear']]\n   .map(l=>'<span><i class=\"mbd '+l[0]+'\">'+l[1]+'</i>'+l[2]+'</span>').join('')+'</div>'+\n (function(){\n   var ICO = {\n     sac:'<svg viewBox=\"0 0 16 16\"><circle cx=\"8\" cy=\"5\" r=\"2.7\"/><path d=\"M2.4 14.2a5.6 5.6 0 0 1 11.2 0z\"/></svg>',\n     site:'<svg viewBox=\"0 0 16 16\"><rect x=\"1.4\" y=\"2.6\" width=\"13.2\" height=\"9\" rx=\"1.2\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.5\"/><rect x=\"5.4\" y=\"13\" width=\"5.2\" height=\"1.5\" rx=\".6\"/></svg>',\n     bot:'<svg viewBox=\"0 0 16 16\"><path d=\"M8 1.2v2.2\" stroke=\"currentColor\" stroke-width=\"1.4\"/><circle cx=\"8\" cy=\"1\" r=\"1\"/><rect x=\"2.2\" y=\"4.4\" width=\"11.6\" height=\"8.2\" rx=\"2.2\"/><circle cx=\"5.9\" cy=\"8.5\" r=\"1.25\" fill=\"#FDF6E6\"/><circle cx=\"10.1\" cy=\"8.5\" r=\"1.25\" fill=\"#FDF6E6\"/></svg>'\n   };\n   var SRV = ['Informações (FAQ)','Consulta de pedido (ecomm)','Tracking do pedido','Cancelamento do pedido',\n     'Troca de produto','Alteração cadastral','Consulta cupom','Consulta pontos fidelidade','Cobrança',\n     'Pedido incompleto','Consulta de estorno','Devolução de pedido'];\n   /* por linha: [onda1, onda2, onda3], cada uma [SAC, SITE, BOT] — mesmo nível para Granado, Phebo e Care */\n   var M = [\n     [['v','x','x'],['v','v','v'],['v','v','v']],\n     [['v','x','x'],['v','v','v'],['v','v','v']],\n     [['v','x','x'],['v','v','v'],['v','v','v']],\n     [['v','x','x'],['v','v','v'],['v','v','e']],\n     [['v','x','x'],['v','v','v'],['v','v','v']],\n     [['x','x','x'],['v','v','v'],['v','v','v']],\n     [['x','x','x'],['v','v','v'],['v','v','v']],\n     [['v','x','x'],['v','v','v'],['v','v','v']],\n     [['v','x','x'],['v','v','v'],['v','v','v']],\n     [['v','x','x'],['v','v','v'],['v','v','v']],\n     [['v','x','x'],['v','v','v'],['v','v','v']],\n     [['v','x','x'],['v','v','v'],['v','v','v']]\n   ];\n   var ONDAS = [['o1','Onda 1 · Fundação','Meses 1–6 (atual)','mb1'],\n                ['o2','Onda 2 · Automação &amp; Autosserviço','Meses TBD','mb2'],\n                ['o3','Onda 3 · Escala Global','Meses TBD (meta)','mb3']];\n   var CEN = ['Cenário atual','Em evolução','Cenário meta'];\n   var GLY = { v:'✓', e:'~', x:'✕', n:'△' };\n   var out = '<div class=\"mg rv\"><div></div>'+\n     CEN.map((c,i)=>'<div class=\"mcen c'+(i+1)+'\">'+c+'</div>').join('')+\n     '<div></div>'+ONDAS.map(o=>'<div class=\"mhd '+o[0]+'\"><b>'+o[1]+'</b><i>'+o[2]+'</i></div>').join('')+\n     '<div></div>'+ONDAS.map(o=>'<div class=\"mw '+o[3]+'\">'+\n       '<div class=\"mch\" style=\"grid-column:span 3\">'+ICO.sac+'SAC</div>'+\n       '<div class=\"mch\" style=\"grid-column:span 3\">'+ICO.site+'SITE</div>'+\n       '<div class=\"mch\" style=\"grid-column:span 3\">'+ICO.bot+'BOT</div>'+\n       '<div class=\"mch\">TEL.</div><div class=\"mch\">APP</div></div>').join('')+\n     '<div></div>'+ONDAS.map(o=>'<div class=\"mw '+o[3]+'\">'+\n       [0,1,2].map(()=>'<div class=\"mbc g\"><u>G</u><em>Granado</em></div>'+\n                        '<div class=\"mbc p\"><u>P</u><em>Phebo</em></div>'+\n                        '<div class=\"mbc c\"><u>C</u><em>Care</em></div>').join('')+\n       '<div></div><div></div></div>').join('');\n   out += SRV.map((nome,r)=>'<div class=\"mrl\">'+nome+'</div>'+\n     ONDAS.map((o,w)=>'<div class=\"mw '+o[3]+'\">'+\n       M[r][w].map(v=>'<div class=\"mcell\"><i class=\"mbd '+v+'\">'+GLY[v]+'</i></div>'+\n                      '<div class=\"mcell\"><i class=\"mbd '+v+'\">'+GLY[v]+'</i></div>'+\n                      '<div class=\"mcell\"><i class=\"mbd '+v+'\">'+GLY[v]+'</i></div>').join('')+\n       '<div class=\"mcell\"><i class=\"mbd n\">△</i></div><div class=\"mcell\"><i class=\"mbd n\">△</i></div>'+\n       '</div>').join('')).join('');\n   return out+'</div>';\n })()+\n '<div class=\"matnota rv\">'+\n '<p>Onda 1 reflete o cenário atual pré plano de aceleração do Datacloud. Ondas 2 e 3 projetadas com base no roadmap do Assessment CX 2026 '+\n '(Fundação → Automação &amp; Autosserviço → Escala Global). Mesmo nível de maturidade assumido para Granado, Phebo e Care, '+\n 'por não haver dado quebrado por marca no assessment original — ajustável por marca assim que houver esse detalhamento.</p>'+\n '<p>Telefônico e App: colunas adicionadas nesta revisão a pedido do time. Não fazem parte do escopo avaliado no Assessment CX 2026 original, '+\n 'e por isso não têm quebra por marca nem nível de maturidade atribuído — marcadas como “△ a mapear” até validação específica.</p>'+\n '</div></section>',\n\n'<section id=\"investimento\"><div class=\"eyebrow rv\">12 · Investimento</div>'+\n '<div class=\"split rv\"><h1 class=\"rv\" style=\"font-family:var(--ext);font-size:clamp(25px,3.3vw,44px);line-height:1.12;max-width:17ch\">'+\n 'Uma sprint resolve os dois bloqueadores.</h1>'+\n '<p class=\"apoio rv\">O escopo abaixo entrega o cliente resolvendo sozinho, em qualquer canal, com prazo dito na abertura.</p></div>'+\n '<div class=\"custos rv\" style=\"margin-top:clamp(16px,2.8vh,34px)\">'+\n [['Sprint 1 — Motor de pós-venda, chat e tela embed',\n   'A política escrita virando regra executável. O canal de chat como assistente de pós-venda, e a tela embed dentro da área de conta do cliente. Inclui a entrada do atendente pelo mesmo caminho, a etiqueta com o código do pedido, a ocorrência sincronizada com o Service Cloud e o painel de indicadores.',\n   'R$ 100.000',''],\n  ['Analista Data² dedicado',\n   'Opcional. Um analista full-time na frente: sustentação, calibragem das regras e resposta imediata, como extensão do time Granado.',\n   'R$ 26.000','<em> /mês</em>']].map((x,i)=>\n '<div class=\"row'+(i===1?' total':'')+'\"><div><div class=\"t\">'+x[0]+'</div><div class=\"d\">'+x[1]+'</div></div>'+\n '<div class=\"v\">'+x[2]+x[3]+'</div></div>').join('')+\n '</div>'+\n '<p class=\"cond rv\">Faturamento por sprint entregue. A sprint depende de dois acessos do lado da Granado: a integração no e-commerce e a política de troca aprovada.</p></section>',\n\n'<section id=\"oportunidades\"><div class=\"eyebrow rv\">13 · Oportunidades</div>'+\n '<div class=\"split rv\"><h1 class=\"rv\" style=\"font-family:var(--ext);font-size:clamp(24px,3.2vw,42px);line-height:1.12;max-width:22ch\">'+\n 'A loja também precisa de um canal com regra, protocolo e prazo.</h1>'+\n '<p class=\"apoio rv\">Hoje o pedido de socorro da loja é uma mensagem num grupo de WhatsApp. Chega, alguém responde quando vê, e nada disso vira registro.</p></div>'+\n '<div class=\"opgrid rv\">'+\n '<div class=\"pcol\"><div class=\"pct\">O que o WhatsApp da operação mostrou em 20 dias</div>'+\n [['Cupom de troca','A filial 53 pergunta no grupo se pode emitir cupom de um pedido já entregue, com o prazo de 7 dias correndo.'],\n  ['Cancelamento invisível','O SAC cancelou o pedido 21008457815, e ele continua aberto no sistema da loja.'],\n  ['Sem caminho de sistema','<b>“Não estou conseguindo cancelar no OMS”</b>, três vezes em três minutos, e depois um e-mail.'],\n  ['Acesso','Três resets de senha do OMS em menos de 24 horas, com entregador parado esperando na loja.']].map(x=>\n '<div class=\"pi\"><div class=\"pin\">'+x[0]+'</div><div class=\"pid\">'+x[1]+'</div></div>').join('')+\n '<div class=\"opct\">Vinte e três mensagens de troca em 1.757, e nenhuma virou protocolo, prazo ou indicador.</div>'+\n '</div>'+\n '<div class=\"pcol prop\"><div class=\"pct\">Central de atendimento e suporte a lojas</div>'+\n [['Gestão dos pedidos da loja','Consultar, cancelar, emitir cupom de troca e acompanhar o que saiu da filial, sem depender de quem responde o grupo. A mesma regra que atende o cliente atende o balcão.'],\n  ['Gestão do estoque','Ativação e inativação de produto, divergência de saldo e o que está travando a venda, com o status visível para quem está na loja.'],\n  ['Incidentes e chamados','Abertura estruturada, com protocolo, prazo e histórico. O que hoje se perde numa conversa passa a ter dono, fila e medida.']].map(x=>\n '<div class=\"pi\"><div class=\"pin\">'+x[0]+'</div><div class=\"pid\">'+x[1]+'</div></div>').join('')+\n '</div></div>'+\n '<div class=\"fora rv\"><div class=\"forat\">Também ficaram fora deste recorte</div>'+\n [['Pós-venda do Box Granado','Vinte mil assinaturas, com 2% de cancelamento. Cancelar interrompe as cobranças futuras e não trata o que já foi enviado. A assinatura ainda gera dois pedidos no Magento por natureza, o que confunde a devolução.'],\n  ['Pós-venda do Loyalty','O programa vive num site separado e movimenta só pontos, por e-mail ao time de fidelidade. Enquanto for assim, o crédito em carteira depende de alguém do outro lado.']].map(x=>\n '<div class=\"pi\" style=\"border-bottom:0;padding-top:0\"><div class=\"pin\">'+x[0]+'</div><div class=\"pid\">'+x[1]+'</div></div>').join('')+\n '</div>'+\n '<p class=\"cond rv\">Parte disso já vem desta frente. Com a inclusão do reembolso e o processamento do pagamento saindo da planilha, a loja para de perguntar pelo estorno no grupo, e passa a acompanhar o caso pelo mesmo lugar em que o cliente acompanha.</p></section>',\n\n'<section id=\"fim\" class=\"statement selva fecho\"><div class=\"bg\"><img src=\"'+A.selva+'\" alt=\"\"></div>'+\n '<div class=\"mid\"><div class=\"lockup\">'+\n '<img class=\"d2m\" src=\"'+A.d2+'\" alt=\"Data²\"><span class=\"plus\">+</span>'+\n '<img class=\"grm\" src=\"'+A.gr+'\" alt=\"Granado\"></div>'+\n '<p class=\"frase rv\">Necessidade elevada à produção. <i>Rascunho para discussão, setembro de 2026.</i></p></div></section>',\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  @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  .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  @media(max-width:820px){.ondas{grid-template-columns:1fr}.onda::before{display:none}}\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  .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  .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  .selva .frase{font-family:var(--lt);font-size:clamp(15px,1.7vw,23px);line-height:1.65;letter-spacing:.02em;max-width:46ch;text-wrap:balance}\n  .selva .frase i{font-style:normal;opacity:.7}\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\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,.onda li,.custos .row .d,.cond,.arq .box .bd,.klist li{font-family:var(--sf)}\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 .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  .comp .cn .steps li::before{color:var(--ok)}\n  @media(max-width:820px){.comp{grid-template-columns:1fr}}\n\n  .etapas{display:grid;grid-template-columns:1.45fr 1fr 1.1fr 1.1fr;border-top:1px solid var(--linha);margin-top:clamp(18px,3vh,34px)}\n  .et{padding:clamp(18px,2.8vh,26px) clamp(18px,1.8vw,28px) clamp(16px,2.4vh,22px) 0}\n  .et + .et{border-left:1px solid var(--linha);padding-left:clamp(18px,1.8vw,28px)}\n  .et:last-child{padding-right:0}\n  .et .en{font-family:var(--lt);font-size:10.5px;letter-spacing:.24em;color:var(--musgo)}\n  .et .eh{font-family:var(--ext);font-size:clamp(13px,1.25vw,16px);line-height:1.3;margin:10px 0 16px}\n  .et.gg .eh{color:var(--hibisco)}\n  .et.rd .eh{color:var(--banana)}\n  .et.rd li::before{background:var(--banana)}\n  .et.rd .tag{color:var(--banana);border-color:var(--banana)}\n  .et .tag{display:inline-block;font-family:var(--lt);font-size:8.5px;letter-spacing:.2em;text-transform:uppercase;\n    color:var(--hibisco);border:1px solid var(--hibisco);padding:3px 7px;border-radius:2px;margin-left:8px;vertical-align:2px}\n  .et ul{list-style:none}\n  .et li{font-family:var(--sf);font-size:12px;line-height:1.55;color:var(--musgo);padding:5px 0;display:flex;gap:9px}\n  .et li::before{content:'';width:5px;height:5px;border-radius:50%;background:var(--linha);margin-top:6px;flex:none}\n  .et.gg li::before{background:var(--hibisco)}\n  .mini{margin-top:clamp(12px,2vh,18px);border-top:1px solid var(--linha);padding-top:clamp(8px,1.4vh,12px)}\n  .mini .mh{font-family:var(--lt);font-size:9px;letter-spacing:.2em;text-transform:uppercase;color:var(--musgo);margin-bottom:9px}\n  .mini .mr{display:flex;justify-content:space-between;align-items:baseline;gap:12px;\n    font-family:var(--sf);font-size:11px;color:var(--musgo);padding:4.5px 0;border-bottom:1px solid var(--linha)}\n  .mini .mr:last-child{border-bottom:0}\n  .mini .mr b{font-weight:400;flex:none;font-size:12px}\n  .mini .sim b{color:var(--ok)} .mini .nao b{color:var(--hibisco)}\n  .mini .parcial b{color:var(--banana);font-size:14px;line-height:1}\n  .mini .mn{font-family:var(--sf);font-size:10px;color:var(--musgo);line-height:1.5;margin-top:9px}\n  .mini .mn b{color:var(--banana);font-weight:400}\n  @media(max-width:900px){.etapas{grid-template-columns:1fr 1fr;column-gap:clamp(20px,3vw,34px)}\n    .et,.et + .et{border-left:0;padding-left:0;border-bottom:1px solid var(--linha)}}\n  @media(max-width:620px){.etapas{grid-template-columns:1fr}}\n  .callout{display:flex;gap:clamp(16px,2.4vw,30px);align-items:flex-start;border:1px solid var(--banana);\n    border-left-width:3px;border-radius:0 3px 3px 0;padding:clamp(14px,2.2vh,20px) clamp(16px,2vw,24px);margin-top:clamp(16px,2.6vh,30px)}\n  .callout .cl{font-family:var(--lt);font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--banana);\n    white-space:nowrap;padding-top:3px}\n  .callout .cq{font-family:var(--sf);font-size:13px;line-height:1.65;color:var(--ink);flex:1}\n  .callout .cq b{font-weight:600}\n  @media(max-width:820px){.callout{flex-direction:column;gap:8px}}\n\n  .lanes{margin-top:clamp(16px,2.6vh,30px)}\n  .lane{border-top:1px solid var(--linha);padding:clamp(14px,2.2vh,20px) 0 clamp(12px,2vh,18px)}\n  .lane .ln{font-family:var(--lt);font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;\n    color:var(--musgo);margin-bottom:clamp(10px,1.8vh,16px)}\n  .passos{display:grid;grid-auto-flow:column;grid-auto-columns:1fr;gap:clamp(12px,1.6vw,24px)}\n  .ps{position:relative;padding-left:17px}\n  .ps::before{content:'';position:absolute;left:0;top:4px;width:8px;height:8px;border-radius:50%;background:var(--hibisco)}\n  .ps.auto::before{background:var(--ok)}\n  .ps.parcial::before{background:var(--banana)}\n  .ps .pn{font-family:var(--ext);font-size:clamp(12px,1.1vw,14.5px);line-height:1.3}\n  .ps .pw{font-family:var(--sf);font-size:11px;color:var(--musgo);margin-top:5px;line-height:1.5}\n  .ps .pl{font-family:var(--lt);font-size:10px;letter-spacing:.12em;color:var(--hibisco);margin-top:7px}\n  .mat{padding:clamp(52px,6.5vh,84px) clamp(12px,2.2vw,36px) clamp(30px,4vh,52px);justify-content:flex-start;gap:0}\n  .matbar{display:flex;align-items:center;gap:20px;background:#16221B;color:#FAFAF6;padding:12px clamp(12px,1.6vw,24px);border-radius:2px}\n  .matbar h2{font-family:var(--ext);font-size:clamp(11px,1.32vw,19px);line-height:1.15;letter-spacing:.005em;text-transform:uppercase;font-weight:400}\n  .matlogo{margin-left:auto;text-align:right;color:var(--banana);line-height:1.1}\n  .matlogo span{display:block;font-family:var(--lt);font-size:clamp(7px,.62vw,9px);letter-spacing:.3em}\n  .matlogo b{display:block;font-family:var(--ext);font-size:clamp(12px,1.25vw,18px);letter-spacing:.06em;font-weight:400}\n  .matlogo i{display:block;font-family:var(--lt);font-size:clamp(6px,.5vw,7.5px);letter-spacing:.2em;font-style:normal;opacity:.85}\n  .matsub{font-family:var(--sf);font-size:clamp(8.5px,.82vw,12px);line-height:1.5;color:var(--musgo);margin-top:11px;max-width:150ch}\n  .matsub b{color:var(--ink);font-weight:600}\n  .matleg{display:flex;gap:clamp(14px,2.4vw,44px);margin-top:10px;flex-wrap:wrap}\n  .matleg span{display:flex;align-items:center;gap:8px;font-family:var(--sf);font-size:clamp(8.5px,.8vw,12px);color:var(--ink)}\n  .mg{display:grid;grid-template-columns:clamp(104px,11.5vw,192px) repeat(3,minmax(0,1fr));column-gap:clamp(6px,.9vw,16px);margin-top:12px}\n  .mw{display:grid;grid-template-columns:repeat(11,minmax(0,1fr))}\n  .mcen{font-family:var(--lt);font-size:clamp(8px,.85vw,12.5px);letter-spacing:.16em;text-transform:uppercase;text-align:center;padding-bottom:7px;position:relative}\n  .mcen.c1{color:var(--hibisco)} .mcen.c2{color:#C9A227} .mcen.c3{color:var(--verde)}\n  .mcen.c1::after,.mcen.c2::after{content:'→';position:absolute;right:calc(-1 * clamp(6px,.9vw,16px) / 2 - .4em);top:0;color:var(--musgo)}\n  .mhd{text-align:center;color:#FAFAF6;padding:6px 4px 5px;border-radius:2px 2px 0 0}\n  .mhd b{display:block;font-family:var(--ext);font-size:clamp(8.5px,.92vw,13.5px);letter-spacing:.04em;font-weight:400;text-transform:uppercase}\n  .mhd i{display:block;font-family:var(--lt);font-size:clamp(7px,.62vw,9.5px);font-style:normal;opacity:.9;margin-top:1px}\n  .mhd.o1{background:#A93526} .mhd.o2{background:#C9A227} .mhd.o3{background:#24422F}\n  .mch{display:flex;align-items:center;justify-content:center;gap:5px;padding:6px 2px;border-bottom:1px solid rgba(18,22,15,.16);\n    font-family:var(--lt);font-size:clamp(7px,.72vw,10.5px);letter-spacing:.12em;color:var(--ink)}\n  .mch svg{width:clamp(9px,.92vw,13px);height:clamp(9px,.92vw,13px);fill:currentColor;flex:0 0 auto}\n  .mbc{display:flex;flex-direction:column;align-items:center;gap:3px;padding:6px 0 5px}\n  .mbc u{width:clamp(13px,1.28vw,20px);height:clamp(13px,1.28vw,20px);border-radius:50%;display:flex;align-items:center;justify-content:center;\n    font-family:var(--ext);font-size:clamp(7px,.68vw,10px);color:#FAFAF6;text-decoration:none}\n  .mbc.g u{background:#24422F} .mbc.p u{background:#D99A26} .mbc.c u{background:#3A5A8C}\n  .mbc em{font-family:var(--sf);font-size:clamp(5.5px,.56vw,8px);font-style:normal;color:var(--musgo)}\n  .mrl{display:flex;align-items:center;font-family:var(--sf);font-size:clamp(8px,.8vw,12px);font-weight:600;color:var(--ink);padding-right:8px}\n  .mcell{display:flex;align-items:center;justify-content:center;padding:clamp(2px,.42vh,5px) 0}\n  .mbd{width:clamp(13px,1.32vw,21px);height:clamp(13px,1.32vw,21px);border-radius:50%;display:flex;align-items:center;justify-content:center;\n    font-size:clamp(7px,.72vw,11px);line-height:1;color:#FAFAF6;font-family:var(--sf)}\n  .mbd.v{background:#3C8C5E} .mbd.e{background:#D9A72C} .mbd.x{background:#B5352A}\n  .mbd.n{background:none;border:1.5px solid #B4B9B0;color:#9AA096}\n  .mb1{background:#FBEDEA} .mb2{background:#FDF6E6} .mb3{background:#EAF1EC}\n  .matnota{font-family:var(--sf);font-size:clamp(7px,.7vw,10px);line-height:1.5;color:var(--musgo);margin-top:11px;font-style:italic}\n  .matnota p+p{margin-top:5px}\n  @media(max-width:980px){.mat{overflow-x:auto}.mg{min-width:900px}}\n  .lock{position:absolute;inset:0;z-index:90;display:flex;align-items:center;justify-content:center;\n    background:var(--verde-fundo);overflow:hidden;transition:opacity .42s}\n  .lock.off{opacity:0;pointer-events:none}\n  .lkbg{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;opacity:.5}\n  .lkin{position:relative;z-index:1;display:flex;flex-direction:column;align-items:center;gap:26px;padding:0 24px;text-align:center}\n  .lock .lockup img{filter:none}\n  .lksub{font-family:var(--lt);font-size:clamp(11px,1.3vw,14px);letter-spacing:.16em;text-transform:uppercase;color:rgba(250,250,246,.78)}\n  .lkf{display:flex;gap:10px;align-items:stretch}\n  .lki{appearance:none;background:rgba(250,250,246,.08);border:1px solid rgba(250,250,246,.32);border-radius:999px;\n    padding:13px 22px;font-family:var(--lt);font-size:14px;letter-spacing:.12em;color:#FAFAF6;outline:none;width:min(62vw,260px)}\n  .lki::placeholder{color:rgba(250,250,246,.45);letter-spacing:.2em}\n  .lki:focus{border-color:rgba(250,250,246,.7);background:rgba(250,250,246,.14)}\n  .lkb{appearance:none;cursor:pointer;border:0;border-radius:999px;padding:13px 26px;background:#FAFAF6;color:var(--verde);\n    font-family:var(--lt);font-size:13px;letter-spacing:.16em;text-transform:uppercase}\n  .lkb:hover{background:#fff}\n  .lke{min-height:16px;font-family:var(--lt);font-size:12px;letter-spacing:.1em;color:#E5A9A0}\n  @keyframes shk{10%,90%{transform:translateX(-2px)}30%,70%{transform:translateX(4px)}50%{transform:translateX(-6px)}}\n  .lock.sh .lkin{animation:shk .42s}\n  @media(max-width:560px){.lkf{flex-direction:column;width:min(80vw,300px)}.lki{width:100%;text-align:center}}\n  .dist{margin-top:clamp(12px,2.2vh,26px)}\n  .distt{font-family:var(--lt);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--musgo);margin-bottom:9px}\n  .barr{display:flex;height:clamp(26px,3.6vh,40px);border-radius:2px;overflow:hidden}\n  .barr .seg{display:flex;align-items:center;justify-content:center;font-family:var(--ext);\n    font-size:clamp(11px,1.15vw,15px);color:#FAFAF6}\n  .barr .s0{background:#24422F} .barr .s1{background:#3C6349} .barr .s2{background:#5A8168}\n  .barr .s3{background:#7C9C88} .barr .s4{background:#9DB6A7} .barr .s5{background:#BCCDC3;color:#24422F}\n  .barl{display:flex;flex-wrap:wrap;gap:6px 20px;margin-top:9px}\n  .barl span{display:flex;align-items:center;gap:6px;font-family:var(--sf);font-size:11px;color:var(--musgo)}\n  .barl i{width:9px;height:9px;border-radius:2px;display:block}\n  .barl .s0{background:#24422F} .barl .s1{background:#3C6349} .barl .s2{background:#5A8168}\n  .barl .s3{background:#7C9C88} .barl .s4{background:#9DB6A7} .barl .s5{background:#BCCDC3}\n  .leits{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,2.6vw,40px);\n    margin-top:clamp(14px,2.4vh,28px);border-top:1px solid var(--linha);padding-top:clamp(12px,2vh,22px)}\n  .lei .ln{font-family:var(--ext);font-size:clamp(14px,1.55vw,20px);line-height:1.22;margin-bottom:6px}\n  .lei .ld{font-family:var(--sf);font-size:11.5px;line-height:1.6;color:var(--musgo)}\n  .lei .ld b{color:var(--ink);font-weight:600}\n  @media(max-width:900px){.leits{grid-template-columns:1fr}}\n  .pend{display:grid;grid-template-columns:1fr 1.25fr;gap:clamp(18px,3.2vw,52px);margin-top:clamp(14px,2.6vh,30px)}\n  .opgrid{display:grid;grid-template-columns:.92fr 1.18fr;gap:clamp(18px,3.2vw,52px);margin-top:clamp(14px,2.6vh,30px)}\n  .pct{font-family:var(--lt);font-size:9.5px;letter-spacing:.22em;text-transform:uppercase;color:var(--musgo);\n    padding-bottom:8px;border-bottom:1px solid var(--linha);margin-bottom:10px}\n  .pcol.bloq .pct{color:var(--hibisco);border-bottom-color:var(--hibisco)}\n  .pcol.prop .pct{color:var(--verde);border-bottom-color:var(--verde)}\n  .pi{padding:10px 0;border-bottom:1px solid var(--linha)}\n  .pi:last-child{border-bottom:0}\n  .pin{font-family:var(--ext);font-size:clamp(13px,1.42vw,18px);line-height:1.25;margin-bottom:4px}\n  .pcol.bloq .pin{color:var(--hibisco)}\n  .pcol.prop .pin{color:var(--verde)}\n  .pid{font-family:var(--sf);font-size:11.5px;line-height:1.55;color:var(--musgo)}\n  .pid b{color:var(--ink);font-weight:600}\n  .fora{display:grid;grid-template-columns:1fr 1fr;gap:clamp(18px,3.2vw,52px);\n    margin-top:clamp(14px,2.4vh,28px);border-top:1px solid var(--linha);padding-top:clamp(12px,2vh,20px)}\n  .forat{grid-column:1 / -1;font-family:var(--lt);font-size:9.5px;letter-spacing:.22em;\n    text-transform:uppercase;color:var(--musgo);margin-bottom:-4px}\n  @media(max-width:900px){.fora{grid-template-columns:1fr}}\n  .opct{font-family:var(--sf);font-size:11.5px;line-height:1.5;color:var(--ink);margin-top:11px;\n    padding-top:10px;border-top:2px solid var(--linha)}\n  @media(max-width:900px){.pend,.opgrid{grid-template-columns:1fr}}\n  .ops{display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(14px,1.8vw,26px);margin-top:clamp(16px,2.8vh,30px)}\n  .op{border-top:2px solid var(--linha);padding-top:12px}\n  .op .oh{font-family:var(--lt);font-size:9.5px;letter-spacing:.2em;text-transform:uppercase;color:var(--banana);margin-bottom:8px}\n  .op .oq{font-family:var(--sf);font-size:12.5px;line-height:1.55;color:var(--ink)}\n  .op .od{font-family:var(--sf);font-size:11.5px;line-height:1.5;color:var(--musgo);margin-top:7px}\n  @media(max-width:900px){.ops{grid-template-columns:1fr 1fr}}\n  @media(max-width:620px){.ops{grid-template-columns:1fr}}\n  .casobox{border:1px solid var(--linha);border-left:3px solid var(--banana);padding:clamp(12px,2vh,18px) clamp(14px,1.8vw,22px);margin-top:clamp(14px,2.4vh,26px)}\n  .casobox .cn2{font-family:var(--lt);font-size:9.5px;letter-spacing:.24em;text-transform:uppercase;color:var(--banana);margin-bottom:7px}\n  .casobox .cd2{font-family:var(--sf);font-size:12.5px;line-height:1.6;color:var(--ink);max-width:88ch}\n  .casobox .cd2 b{font-weight:600}\n  .vs{display:grid;grid-template-columns:1fr 1fr;gap:clamp(20px,3.4vw,54px);margin-top:clamp(14px,2.4vh,26px)}\n  .vsh{display:flex;align-items:baseline;gap:12px;padding-bottom:9px;border-bottom:2px solid;margin-bottom:12px}\n  .vsh .vt{font-family:var(--lt);font-size:10.5px;letter-spacing:.24em;text-transform:uppercase}\n  .vsh .vv{margin-left:auto;font-family:var(--ext);font-size:clamp(14px,1.6vw,20px)}\n  .vs .hoje2 .vsh{border-color:var(--hibisco);color:var(--hibisco)}\n  .vs .prop .vsh{border-color:var(--ok);color:var(--ok)}\n  .tl{list-style:none}\n  .tl li{display:grid;grid-template-columns:clamp(44px,4.6vw,62px) 1fr;gap:clamp(8px,1vw,14px);\n    padding:6px 0;align-items:baseline;border-bottom:1px solid var(--linha)}\n  .tl li:last-child{border-bottom:0}\n  .tl .d{font-family:var(--lt);font-size:10px;letter-spacing:.08em;color:var(--musgo)}\n  .tl .x{font-family:var(--sf);font-size:11.5px;line-height:1.5;color:var(--ink)}\n  .tl .x em{font-style:normal;color:var(--musgo)}\n  @media(max-width:900px){.vs{grid-template-columns:1fr;gap:26px}}\n  .funcs{border-top:1px solid var(--linha);margin-top:clamp(16px,2.6vh,30px)}\n  .fx{display:grid;grid-template-columns:auto minmax(110px,160px) 1fr;gap:clamp(14px,2.2vw,34px);\n    align-items:baseline;padding:clamp(12px,2vh,18px) 0;border-bottom:1px solid var(--linha)}\n  .fx:last-child{border-bottom:0}\n  .fx .fnum{font-family:var(--lt);font-size:10.5px;letter-spacing:.2em;color:var(--banana)}\n  .fx .fnome{font-family:var(--ext);font-size:clamp(14px,1.4vw,18px);line-height:1.25}\n  .fx .fdesc{font-family:var(--sf);font-size:12.5px;line-height:1.65;color:var(--musgo);max-width:80ch}\n  @media(max-width:820px){.fx{grid-template-columns:auto 1fr;gap:8px 14px}.fx .fdesc{grid-column:1/-1}}\n  .faixa{border-top:1px solid var(--banana);border-bottom:1px solid var(--banana);\n    background:rgba(217,154,38,.06);padding:clamp(12px,2vh,18px) clamp(14px,1.8vw,22px)}\n  .faixa .fn{font-family:var(--lt);font-size:10.5px;letter-spacing:.24em;text-transform:uppercase;\n    color:var(--banana);margin-bottom:7px}\n  .faixa .fd{font-family:var(--sf);font-size:12px;color:var(--ink);line-height:1.6;max-width:78ch}\n  .faixa ul{list-style:none;margin-top:10px;display:grid;grid-template-columns:1fr 1fr;gap:5px clamp(20px,3vw,44px)}\n  .faixa li{font-family:var(--sf);font-size:11.5px;color:var(--musgo);line-height:1.55;display:flex;gap:9px}\n  .faixa li::before{content:'⇄';color:var(--banana);flex:none}\n  @media(max-width:820px){.faixa ul{grid-template-columns:1fr}}\n  .legenda{display:flex;gap:24px;flex-wrap:wrap;margin-top:clamp(12px,2vh,20px);\n    font-family:var(--sf);font-size:11.5px;color:var(--musgo)}\n  .legenda span{display:flex;align-items:center;gap:8px}\n  .legenda i{width:8px;height:8px;border-radius:50%;flex:none}\n  .contagem{display:flex;gap:clamp(18px,3vw,44px);flex-wrap:wrap;border-top:1px solid var(--linha);\n    margin-top:clamp(14px,2.4vh,24px);padding-top:clamp(12px,2vh,18px)}\n  .contagem div b{font-family:var(--ext);font-size:clamp(17px,1.8vw,24px);display:block;line-height:1}\n  .contagem div span{font-family:var(--sf);font-size:11px;color:var(--musgo);display:block;margin-top:5px}\n  .contagem .man b{color:var(--hibisco)} .contagem .aut b{color:var(--ok)}\n  @media(max-width:900px){.passos{grid-auto-flow:row;gap:14px}}\n\n  .klist{list-style:none;margin-top:6px}\n  .klist li{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(3,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(22px,2.6vw,36px);line-height:1.1;letter-spacing:-.01em}\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:absolute;inset:0;overflow:hidden}\n  .deckroot{position:absolute;inset:0;overflow-y:auto;overflow-x:hidden;scroll-snap-type:y proximity;scroll-behavior:smooth;-webkit-overflow-scrolling:touch;overscroll-behavior-y:contain}\n  :host{display:block;position:relative;width:100%;height:100%}\n`,\n  render(){\n    const n = SLIDES.length;\n    return '<div class=\"deckwrap\">'+\n      '<header><img src=\"'+A.d2+'\" alt=\"Data²\"><img class=\"gr\" src=\"'+A.gr+'\" alt=\"Granado\"></header>'+\n      '<div class=\"counter\">01 — '+(n<10?'0':'')+n+'</div>'+\n      '<div class=\"hint\">↓ navegue</div>'+\n      '<nav class=\"dots\"></nav>'+\n      '<div class=\"deckroot\">'+SLIDES.join('')+'</div>'+lockHtml()+'</div>';\n  },\n  mounted(d2){\n    injectFonts();\n    const wrap = d2.$('.deckwrap'); if (!wrap || wrap.dataset.init) return;\n    wrap.dataset.init = '1';\n\n    const lk = wrap.querySelector('.lock');\n    if (lk){\n      const inp = lk.querySelector('.lki'), err = lk.querySelector('.lke');\n      const abrir = () => { lk.classList.add('off');\n        setTimeout(()=>{ if (lk.parentNode) lk.parentNode.removeChild(lk) }, 460) };\n      try{ if (sessionStorage.getItem('deck-troca') === '1') abrir() }catch(e){}\n      lk.querySelector('.lkf').addEventListener('submit',(e)=>{\n        e.preventDefault();\n        if (String(inp.value||'').trim().toLowerCase() === SENHA){\n          try{ sessionStorage.setItem('deck-troca','1') }catch(e2){}\n          abrir();\n        } else {\n          err.textContent = 'Senha incorreta.';\n          lk.classList.remove('sh'); void lk.offsetWidth; lk.classList.add('sh');\n          inp.select();\n        }\n      });\n      setTimeout(()=>{ try{ inp.focus() }catch(e){} }, 140);\n    }\n    const root = wrap.querySelector('.deckroot');\n    const secs = [].slice.call(root.querySelectorAll('section'));\n    const dots = wrap.querySelector('nav.dots');\n    const counter = wrap.querySelector('.counter');\n    const pad = (x) => (x<10?'0':'')+x;\n    let cur = 0;\n\n    secs.forEach((s,i)=>{ const a=document.createElement('a'); a.href='#'+s.id;\n      a.setAttribute('aria-label','Slide '+(i+1)); dots.appendChild(a) });\n    const links = [].slice.call(dots.querySelectorAll('a'));\n\n    const go = (i) => { const n=Math.max(0,Math.min(secs.length-1,i));\n      secs[n].scrollIntoView({behavior:'smooth',block:'start'}) };\n\n    const io = new IntersectionObserver((es)=>{\n      es.forEach(e=>{\n        if (e.isIntersecting){\n          e.target.classList.add('in');\n          if (e.intersectionRatio > 0.5){\n            const i = secs.indexOf(e.target);\n            if (i >= 0 && i !== cur){\n              cur = i;\n              links.forEach((l,j)=>l.classList.toggle('on', j===i));\n              counter.textContent = pad(i+1)+' — '+pad(secs.length);\n              wrap.classList.toggle('on-dark', e.target.classList.contains('selva'));\n              wrap.classList.toggle('last', i === secs.length-1);\n            }\n          }\n        }\n      });\n    }, { root: root, threshold:[0.15,0.5,0.75] });\n    secs.forEach(s=>io.observe(s));\n    d2.onUnmount(()=>io.disconnect());\n\n    d2.on('nav.dots a','click',(e,el)=>{ e.preventDefault(); go(links.indexOf(el)) });\n    d2.on('.indice a','click',(e,el)=>{ e.preventDefault();\n      const id = (el.getAttribute('href')||'').slice(1);\n      for (let i=0;i<secs.length;i++) if (secs[i].id===id) return go(i) });\n    d2.on(window,'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(secs.length-1) }\n    });\n  },\n}"}}}}}}}}]}},{"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":{"component":"data2-core-types@Getter","displayName":"isData2User","params":{"module":{"component":"data2-core-functions@Match","params":{"pattern":{"component":"data2-core-types@Regex","params":{"pattern":"@data2\\.app$","flags":"i"}},"text":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.email"}}}}}},"prop":{"component":"data2-core-primitives@String","params":{"content":"0"}}}},"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":{"component":"data2-core-flow@If","displayName":"management exception never picks the system","params":{"compare":{"component":"data2-core-logical-operators@Or","params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-logical-operators@Not","params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}}}]}},"then":{"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"else":{"d2_app":"management"}}},"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-10-29T19:05:43.007Z","updateMetadata":{"updatedBy":{"user":"5f1609be1ca96def427e1559"}}},{"_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"},{"component":"data2-core@DataSet","reference":"SessionsDataSet","params":{"requiresConfirmation":false,"pk":"key","datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"data2sessionsdatasource"}}}},{"component":"data2-core@ServerSessionsDataSource","reference":"data2sessionsdatasource","params":{}},{"reference":"UsersTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_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}},"policies":[{"component":"data2-core-auth@PublicPolicy","params":{"reason":"Explicit so data2 can go private, 2026-11-05. Access is decided by the drive/file gate (applyFileTableGates, docs/drive-file-access.md), which runs after this policy; same behavior as today."}}]},"reference":"FileComponentInstancesDataSet","updatedAt":"2026-11-05T17:23:34.217Z","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"},"policies":[{"component":"data2-core-auth@PublicPolicy","params":{"reason":"Explicit so data2 can go private, 2026-11-05. Access is decided by the drive/file gate (applyFileTableGates, docs/drive-file-access.md), which runs after this policy; same behavior as today."}}]},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2026-11-05T17:23:34.254Z","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}},"policies":[{"component":"data2-core-auth@PublicPolicy","params":{"reason":"Explicit so data2 can go private, 2026-11-05. Access is decided by the drive/file gate (applyFileTableGates, docs/drive-file-access.md), which runs after this policy; same behavior as today."}}]},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2026-11-05T17:23:34.347Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6ab193b8467229f7f0aac4b1","component":"data2-core-primitives@Artboard","system":"6a62e4640613f70fa449ff5d","displayName":"Deck Troca B2C Omni","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Deck Troca B2C Omni"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"Q32WxMHfnSx_Z8Q73Ezj4"},{"_id":"2626d90f8fb0ce4b7739ec35","parent":"6ab193b8467229f7f0aac4b1","component":"granado-app@kDeckTroca","system":"6a62e4640613f70fa449ff5d","displayName":"kDeckTroca","params":{"super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":false,"growH":true,"growV":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}}}},"reference":"zMTuoaPuevqYzgzYMIvv9"}]}},{"_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":"6ab193c02086c2e434103f36","displayName":"Deck Troca B2C Omni","reference":"ZufsBBhm3UBsMkoHH8HrD","params":{"domain":{"component":"data2-core-primitives@String","params":{"content":"deck-troca"}},"entryPoint":{"component":"data2-core-types@ComponentInstanceReference","params":{"component":"data2-core-primitives@Artboard","reference":"Q32WxMHfnSx_Z8Q73Ezj4"}}},"system":"6a62e4640613f70fa449ff5d","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}