{"context":{"domain":"tempo"},"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":"6a45d210b5865956b508ba84","name":"Tempo","domain":"tempo","visibility":"public","settings":{"defaultAccessPolicy":"public"},"updatedAt":"2026-07-27T14:19:36.810Z","createdAt":"2026-07-02T02:50:56.722Z"}]}},{"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":"6a7f3125bb08723b2b6537d7","component":"data2-core-types@Component","system":"6a45d210b5865956b508ba84","params":{"extends":"data2-core-primitives@Block","component":"reserva-form","package":"tempo","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 LOGO = 'https://tempobyporsche.com/wp-content/uploads/2026/02/logo_tempo_by_porsche_white_V.svg';\nconst MAIL = 'oi@tempobyporsche.com';\nconst ENDERECO = 'Rua Maria Carolina, 624 — Pinheiros, São Paulo';\nconst INSTAGRAM = 'https://www.instagram.com/tempobyporsche/';\nconst CAP_MAX = 200;\n\nconst TIPOS = [\n  { v: 'festa', t: 'Festa' },\n  { v: 'jantar', t: 'Jantar' },\n  { v: 'almoco', t: 'Almoço' },\n  { v: 'cafe', t: 'Café da manhã' },\n  { v: 'corporativo', t: 'Corporativo / Talks' },\n];\nconst FORMATOS = [\n  { v: 'coquetel', t: 'Coquetel em pé' },\n  { v: 'sentado', t: 'Sentado' },\n  { v: 'auditorio', t: 'Auditório' },\n  { v: 'misto', t: 'Misto' },\n];\nconst EXCLUSIVIDADE = [\n  { v: 'privativo', t: 'Espaço totalmente privativo' },\n  { v: 'reservada', t: 'Área reservada' },\n  { v: 'indiferente', t: 'Sem preferência' },\n];\nconst INFRA = [\n  { v: 'telao', t: 'Telão / painel de LED' },\n  { v: 'microfone', t: 'Microfone' },\n  { v: 'som', t: 'Sistema de som' },\n  { v: 'luz', t: 'Iluminação cênica' },\n  { v: 'palco', t: 'Palco' },\n  { v: 'transmissao', t: 'Transmissão ao vivo' },\n  { v: 'wifi', t: 'Wi-Fi dedicado' },\n];\nconst MUSICA = [\n  { v: 'ambiente', t: 'Música ambiente' },\n  { v: 'dj', t: 'DJ' },\n  { v: 'aovivo', t: 'Música ao vivo' },\n  { v: 'outros', t: 'Outros' },\n];\nconst CATERING = [\n  { v: 'coquetel', t: 'Coquetel' },\n  { v: 'jantar', t: 'Jantar servido' },\n  { v: 'buffet', t: 'Buffet' },\n  { v: 'bebidas', t: 'Apenas bebidas' },\n  { v: 'nenhum', t: 'Sem gastronomia' },\n];\nconst BEBIDAS = [\n  { v: 'cerveja', t: 'Cerveja' },\n  { v: 'chopp', t: 'Chopp' },\n  { v: 'vinho', t: 'Vinho' },\n  { v: 'espumante', t: 'Espumante' },\n  { v: 'drinks', t: 'Drinks' },\n];\nconst REFERRAL = [\n  { v: 'indicacao', t: 'Indicação' },\n  { v: 'membro', t: 'Sou membro TEMPO' },\n  { v: 'instagram', t: 'Instagram' },\n  { v: 'google', t: 'Busca no Google' },\n  { v: 'imprensa', t: 'Imprensa' },\n  { v: 'evento', t: 'Estive em um evento' },\n  { v: 'porsche', t: 'Porsche / concessionária' },\n  { v: 'outro', t: 'Outro' },\n];\nconst REF_LABEL = {\n  indicacao: 'Quem indicou você?',\n  membro: 'Seu nome ou número do card',\n  outro: 'Conte pra gente',\n};\nconst SIMNAO = [{ v: 'sim', t: 'Sim' }, { v: 'nao', t: 'Não' }];\n\nconst MEDIA = 'https://tempo.data2.media/file/';\nconst HERO = MEDIA + 'Z-X-H5NBvuAtJ5kS4Idm_';\nconst FOTOS = [\n  { u: MEDIA + 'Hft0WFM66p1ednqcVAVXu', t: 'Áreas de eventos' },\n  { u: MEDIA + 'Z-X-H5NBvuAtJ5kS4Idm_', t: 'Área 1' },\n  { u: MEDIA + 'hESMcQKdtyZwCpZcnEC2o', t: 'Área 1' },\n  { u: MEDIA + 'bQV71Gn2mDGCB9Ro6iAXD', t: 'Área 2' },\n  { u: MEDIA + 'WTt5kjJp4V8gwyQZtDLNJ', t: 'Área 2' },\n  { u: MEDIA + 'EOobpdMgnG5fWkooNhPdc', t: 'Área 2' },\n  { u: MEDIA + 'b1Ww-W1YpEXjXp5ReWQww', t: 'Área 3' },\n  { u: MEDIA + 'pLea3qeJsjQ9ux6CRdP0X', t: 'Área 3' },\n  { u: MEDIA + 'MgSnOcryBZ6ys9o5UloHF', t: 'Lounge' },\n];\n\nconst form = {\n  nome: '', email: '', telefone: '', empresa: '', cargo: '',\n  data: '', hora_inicio: '', duracao_horas: '', pessoas: '',\n  transmissao_desc: '', restricoes: '', cardapio_desc: '', bebidas_obs: '',\n  ambientacao_desc: '', musica_desc: '', observacoes: '', referral_detalhe: '',\n};\n\nconst esc = (s) => String(s == null ? '' : s)\n  .replace(/[&<>\"]/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;' }[c]));\n\nexport default {\n  css: `\n    .wrap{ position:fixed; inset:0; overflow-y:auto; overflow-x:hidden;\n      background:#0a0a0b; color:#eae8e3; box-sizing:border-box;\n      font-family:-apple-system,BlinkMacSystemFont,'Helvetica Neue',Arial,sans-serif;\n      -webkit-font-smoothing:antialiased; -webkit-overflow-scrolling:touch; }\n    .inner{ max-width:780px; margin:0 auto; padding:0 28px; box-sizing:border-box; }\n\n    .nav{ position:sticky; top:0; z-index:500; background:rgba(10,10,11,.9);\n      backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);\n      border-bottom:1px solid rgba(255,255,255,.08); }\n    .nav-in{ max-width:780px; margin:0 auto; padding:15px 28px; display:flex; align-items:center;\n      justify-content:space-between; gap:14px; box-sizing:border-box; }\n    .nav .logo{ height:22px; width:auto; display:block; flex:none; }\n    .nav-mail{ font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:#8c8a85;\n      text-decoration:none; transition:color .2s ease; overflow:hidden; text-overflow:ellipsis;\n      white-space:nowrap; }\n    .nav-mail:hover{ color:#f3f1ec; }\n\n    .prog{ position:sticky; top:52px; z-index:490; height:2px; background:rgba(255,255,255,.07); }\n    .prog i{ display:block; height:100%; background:#eae8e3; width:0;\n      transition:width .45s cubic-bezier(.2,.7,.3,1); }\n\n    .hero{ position:relative; overflow:hidden; border-bottom:1px solid rgba(255,255,255,.08); }\n    .hero-bg{ position:absolute; inset:0; z-index:0; }\n    .hero-bg img{ width:100%; height:100%; object-fit:cover; opacity:.34;\n      filter:saturate(.8) contrast(1.05); transform:scale(1.03); }\n    .hero-veil{ position:absolute; inset:0; z-index:1;\n      background:linear-gradient(180deg, rgba(10,10,11,.55) 0%, rgba(10,10,11,.22) 38%, rgba(10,10,11,.96) 100%); }\n    .hero .inner{ position:relative; z-index:2; padding-top:104px; padding-bottom:78px; }\n    .eyebrow{ font-size:10.5px; letter-spacing:.24em; text-transform:uppercase; color:#a8a6a1;\n      display:flex; align-items:center; gap:12px; }\n    .eyebrow::after{ content:''; height:1px; flex:1; background:rgba(255,255,255,.14); }\n    h1{ font-size:clamp(36px,6.4vw,62px); line-height:1.02; font-weight:500; margin:22px 0 0;\n      letter-spacing:-.028em; }\n    h1 em{ font-family:Georgia,'Times New Roman',serif; font-style:italic; font-weight:400;\n      letter-spacing:-.01em; }\n    .sub{ color:#c9c7c2; font-size:16.5px; line-height:1.68; margin-top:22px; max-width:50ch; }\n    .facts{ display:flex; flex-wrap:wrap; margin-top:38px; border-top:1px solid rgba(255,255,255,.1); }\n    .fact{ flex:1 1 150px; padding:18px 20px 16px 0; }\n    .fact .fk{ font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:#77756f; }\n    .fact .fv{ font-size:15px; margin-top:7px; color:#eae8e3; line-height:1.4; }\n\n    .sec{ margin-top:26px; background:#121214; border:1px solid rgba(255,255,255,.07);\n      border-radius:14px; padding:30px 32px 34px; }\n    .sec:first-of-type{ margin-top:44px; }\n    .sec-h{ display:flex; align-items:baseline; gap:14px; margin-bottom:26px;\n      padding-bottom:18px; border-bottom:1px solid rgba(255,255,255,.07); }\n    .sec-n{ font-family:Georgia,'Times New Roman',serif; font-style:italic; font-size:26px;\n      color:#5f5d58; line-height:1; flex:none; }\n    .sec-t{ font-size:19px; font-weight:600; letter-spacing:.01em; color:#f3f1ec; }\n    .sec-note{ font-size:12.5px; color:#77756f; margin-left:auto; text-align:right; letter-spacing:.02em; }\n\n    .fld{ margin-bottom:24px; }\n    .fld:last-child{ margin-bottom:0; }\n    .fld > label{ display:flex; align-items:baseline; flex-wrap:wrap; gap:0 8px;\n      font-size:10.5px; letter-spacing:.18em; text-transform:uppercase;\n      color:#a8a6a1; margin-bottom:11px; line-height:1.5; }\n    .fld .opt{ letter-spacing:.04em; text-transform:none; color:#5f5d58; font-size:11px; }\n\n    /* sistema de campos: altura fixa garante alinhamento entre colunas,\n       independente de o rótulo ocupar uma ou duas linhas */\n    input.f, textarea.f{ width:100%; box-sizing:border-box; display:block; min-width:0;\n      background:rgba(255,255,255,.035);\n      border:1px solid rgba(255,255,255,.10); border-radius:10px; color:#eae8e3;\n      font-family:inherit; font-size:15.5px; line-height:1.35;\n      outline:none; color-scheme:dark;\n      -webkit-appearance:none; appearance:none; text-align:left;\n      transition:border-color .2s ease, background .2s ease, box-shadow .2s ease; }\n    input.f{ height:52px; padding:0 16px; }\n    textarea.f{ min-height:118px; padding:15px 16px; line-height:1.6; resize:vertical; }\n    input.f::placeholder, textarea.f::placeholder{ color:#4e4c48; }\n    input.f:focus, textarea.f:focus{ border-color:rgba(234,232,227,.55); background:rgba(255,255,255,.06);\n      box-shadow:0 0 0 3px rgba(234,232,227,.07); }\n    input.f.bad, textarea.f.bad{ border-color:#8c5b4a; box-shadow:0 0 0 3px rgba(140,91,74,.14); }\n\n    /* normaliza date/time no iOS: sem isso o valor sai centralizado,\n       com altura própria e estourando a coluna */\n    /* o input vira flex container: é o que centraliza verticalmente o shadow DOM\n       do date/time no iOS, que ignora padding e line-height */\n    input.f[type=\"date\"], input.f[type=\"time\"]{\n      display:flex; -webkit-align-items:center; align-items:center; text-align:left; }\n    input.f::-webkit-date-and-time-value{ text-align:left; margin:0; line-height:normal; }\n    input.f::-webkit-datetime-edit{ padding:0; line-height:normal; }\n    input.f::-webkit-datetime-edit-fields-wrapper{ padding:0; }\n    input.f::-webkit-calendar-picker-indicator{ filter:invert(.75); opacity:.45; cursor:pointer; }\n    input.f[type=\"number\"]::-webkit-outer-spin-button,\n    input.f[type=\"number\"]::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }\n    input.f[type=\"number\"]{ -moz-appearance:textfield; }\n\n    .row{ display:flex; gap:14px; flex-wrap:wrap; align-items:flex-end; }\n    .row > .fld{ flex:1 1 150px; min-width:0; margin-bottom:0; }\n    .row + .row{ margin-top:24px; }\n\n    .chips{ display:flex; flex-wrap:wrap; gap:9px; }\n    .chip{ background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.14); color:#c9c7c2;\n      padding:11px 19px; border-radius:999px; font-size:13.5px; font-family:inherit; cursor:pointer;\n      white-space:nowrap; line-height:1.2; min-height:42px;\n      transition:background .18s ease, border-color .18s ease, color .18s ease; }\n    .chip:hover{ border-color:rgba(234,232,227,.55); color:#f3f1ec; }\n    .chip.on{ background:#eae8e3; border-color:#eae8e3; color:#0a0a0b; font-weight:600; }\n    .chips.bad{ outline:1px solid #8c5b4a; outline-offset:8px; border-radius:6px; }\n\n    /* campo que só existe por causa de uma resposta anterior */\n    .cond{ margin:16px 0 28px; padding:6px 0 8px 18px;\n      border-left:2px solid rgba(234,232,227,.2); }\n    .cond .fld{ margin-bottom:20px; }\n    .cond .fld:last-child{ margin-bottom:0; }\n    .fld + .cond{ margin-top:14px; }\n\n    /* lightbox das fotos */\n    .scell{ cursor:zoom-in; }\n    .lb{ position:fixed; inset:0; z-index:900; display:flex; align-items:center;\n      justify-content:center; padding:44px 60px; box-sizing:border-box; }\n    .lbbg{ position:absolute; inset:0; background:rgba(6,6,7,.95);\n      backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); cursor:zoom-out; }\n    .lb img{ position:relative; z-index:2; max-width:100%; max-height:100%;\n      object-fit:contain; border-radius:8px; box-shadow:0 30px 90px rgba(0,0,0,.7); }\n    .lbx{ position:absolute; top:20px; right:22px; z-index:3; width:42px; height:42px;\n      border-radius:50%; background:rgba(20,20,22,.9); border:1px solid rgba(255,255,255,.18);\n      color:#eae8e3; font-size:20px; line-height:1; cursor:pointer; font-family:inherit; }\n    .lbx:hover{ background:rgba(42,42,46,.95); }\n    .lbnav{ position:absolute; top:50%; transform:translateY(-50%); z-index:3;\n      width:44px; height:44px; border-radius:50%; background:rgba(20,20,22,.85);\n      border:1px solid rgba(255,255,255,.18); color:#eae8e3; font-size:21px; line-height:1;\n      cursor:pointer; font-family:inherit; }\n    .lbnav:hover{ background:rgba(42,42,46,.95); }\n    .lbprev{ left:16px; }\n    .lbnext{ right:16px; }\n    .lbcount{ position:absolute; bottom:20px; left:50%; transform:translateX(-50%); z-index:3;\n      font-size:11px; letter-spacing:.16em; color:#8c8a85; }\n\n    .info{ margin-top:20px; padding:14px 17px; background:rgba(255,255,255,.025);\n      border:1px solid rgba(255,255,255,.07); border-radius:10px;\n      font-size:13px; line-height:1.55; color:#8c8a85; }\n    .info b{ color:#c9c7c2; font-weight:600; }\n\n    .note{ font-size:12.5px; color:#77756f; margin-top:12px; line-height:1.55; }\n    .note.warn{ color:#c8a37a; border-left:2px solid #7a6a45; padding-left:12px; }\n\n    .quote{ margin-top:26px; background:#121214; border:1px solid rgba(255,255,255,.07);\n      border-radius:14px; padding:30px 34px; }\n    .quote .qk{ font-size:10px; letter-spacing:.24em; text-transform:uppercase; color:#77756f;\n      margin-bottom:14px; }\n    .quote p{ font-family:Georgia,'Times New Roman',serif; font-style:italic; font-size:16.5px;\n      line-height:1.75; color:#dcdad5; margin:0; }\n\n    .strip{ margin-top:26px; }\n    .strip .sk{ font-size:10px; letter-spacing:.24em; text-transform:uppercase; color:#77756f;\n      margin-bottom:14px; }\n    .sgrid{ display:grid; grid-template-columns:repeat(3,1fr); gap:10px; }\n    .scell{ position:relative; aspect-ratio:4/3; border-radius:10px; overflow:hidden; background:#141416; }\n    .scell img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.92;\n      transition:transform .5s cubic-bezier(.2,.7,.3,1), opacity .3s ease; }\n    .scell:hover img{ transform:scale(1.05); opacity:1; }\n\n    .foot{ margin-top:34px; background:#121214; border:1px solid rgba(255,255,255,.07);\n      border-radius:14px; padding:30px 32px; display:flex; align-items:center; gap:22px; flex-wrap:wrap; }\n    .pill{ background:#eae8e3; color:#0a0a0b; border:0; border-radius:999px; padding:16px 38px;\n      font-size:13px; letter-spacing:.09em; font-weight:700; text-transform:uppercase; cursor:pointer;\n      font-family:inherit; min-height:52px;\n      transition:background .2s ease, box-shadow .2s ease;\n      box-shadow:0 8px 26px rgba(234,232,227,.10); }\n    .pill:hover{ background:#fff; box-shadow:0 12px 34px rgba(234,232,227,.18); }\n    .pill[disabled]{ opacity:.45; cursor:default; box-shadow:none; }\n    .err{ color:#d69a86; font-size:13.5px; }\n    .foot .hint{ font-size:12.5px; color:#5f5d58; line-height:1.55; flex:1; min-width:180px; }\n\n    .end{ margin-top:34px; padding:34px 0 24px; border-top:1px solid rgba(255,255,255,.08);\n      display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; }\n    .end a{ color:#a8a6a1; text-decoration:none; font-size:11.5px; letter-spacing:.12em;\n      text-transform:uppercase; transition:color .2s ease; }\n    .end a:hover{ color:#f3f1ec; }\n    .end .addr{ font-size:11.5px; color:#5f5d58; letter-spacing:.06em; }\n\n    .top-btn{ position:fixed; right:22px; bottom:22px; width:46px; height:46px; border-radius:50%;\n      background:rgba(20,20,22,.9); border:1px solid rgba(255,255,255,.18); cursor:pointer;\n      z-index:800; color:#eae8e3; font-size:17px; line-height:1; display:none; }\n    .top-btn.show{ display:block; }\n    .top-btn:hover{ background:rgba(42,42,46,.95); }\n\n    .done{ position:relative; z-index:2; padding:120px 28px 90px; }\n    .done .mark{ width:44px; height:44px; border-radius:50%; border:1px solid rgba(234,232,227,.4);\n      display:flex; align-items:center; justify-content:center; font-size:19px; margin-bottom:30px; }\n    .done h1{ margin-top:16px; }\n    .done p{ color:#a8a6a1; font-size:15.5px; line-height:1.7; margin:22px 0 36px; max-width:50ch; }\n    .done a{ color:#eae8e3; }\n    .recap{ border:1px solid rgba(255,255,255,.08); border-radius:14px; background:#121214;\n      padding:26px 30px; margin:30px 0 34px; display:flex; flex-wrap:wrap; gap:22px 46px; }\n    .recap div{ min-width:92px; }\n    .recap dt{ font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:#77756f; }\n    .recap dd{ margin:8px 0 0; font-size:16px; }\n\n    @media (max-width:820px){\n      .inner{ padding:0 24px; }\n      .nav-in{ padding:14px 24px; }\n      .hero .inner{ padding-top:80px; padding-bottom:58px; }\n      .sec{ padding:26px 24px 28px; }\n      .quote,.foot{ padding:26px 24px; }\n      .sgrid{ grid-template-columns:repeat(2,1fr); }\n    }\n\n    @media (max-width:600px){\n      .inner{ padding:0 18px; }\n      .nav-in{ padding:12px 18px; }\n      .nav .logo{ height:19px; }\n      .nav-mail{ font-size:9.5px; letter-spacing:.08em; max-width:52%; }\n      .prog{ top:45px; }\n\n      .hero .inner{ padding-top:56px; padding-bottom:44px; }\n      .eyebrow{ font-size:9.5px; letter-spacing:.2em; }\n      h1{ font-size:clamp(32px,10.5vw,44px); margin-top:18px; }\n      .sub{ font-size:15px; margin-top:18px; line-height:1.6; }\n      .facts{ margin-top:28px; }\n      .fact{ flex:1 1 100%; padding:14px 0; border-bottom:1px solid rgba(255,255,255,.07); }\n      .fact:last-child{ border-bottom:0; padding-bottom:0; }\n      .fact .fv{ font-size:14.5px; }\n\n      .sec{ margin-top:16px; padding:24px 18px 26px; border-radius:12px; }\n      .sec:first-of-type{ margin-top:30px; }\n      .sec-h{ margin-bottom:22px; padding-bottom:14px; gap:11px; }\n      .sec-n{ font-size:22px; }\n      .sec-t{ font-size:17px; }\n      .sec-note{ display:none; }\n\n      .fld > label{ font-size:10px; letter-spacing:.13em; margin-bottom:9px; }\n      /* 16px evita o zoom automático do iOS ao focar */\n      input.f, textarea.f{ font-size:16px; }\n      input.f{ height:54px; padding:0 15px; }\n      textarea.f{ padding:15px; min-height:120px; }\n      .row{ gap:10px; }\n      .row > .fld{ flex:1 1 calc(50% - 5px); min-width:0; }\n      /* contato respira melhor em coluna única no celular */\n      .row.stack > .fld{ flex:1 1 100%; }\n      .row + .row{ margin-top:16px; }\n      .fld{ margin-bottom:20px; }\n      .cond{ margin:14px 0 24px; padding:4px 0 6px 14px; }\n\n      .chips{ gap:8px; }\n      .chip{ padding:11px 16px; font-size:13px; min-height:44px; }\n      .lb{ padding:56px 14px; }\n      .lbnav{ width:40px; height:40px; }\n      .lbprev{ left:8px; }\n      .lbnext{ right:8px; }\n\n      .quote{ margin-top:16px; padding:24px 18px; }\n      .quote p{ font-size:15.5px; line-height:1.7; }\n      .strip{ margin-top:16px; }\n      .sgrid{ grid-template-columns:repeat(2,1fr); gap:8px; }\n\n      .foot{ margin-top:20px; padding:22px 18px; gap:16px; }\n      .pill{ width:100%; padding:17px 20px; }\n      .foot .hint{ flex:1 1 100%; font-size:12px; }\n      .end{ margin-top:24px; padding:24px 0 20px; flex-direction:column; gap:10px; }\n\n      .top-btn{ right:16px; bottom:16px; width:42px; height:42px; }\n      .done{ padding:70px 18px 70px; }\n      .recap{ padding:22px 20px; gap:18px 30px; }\n      .recap dd{ font-size:15px; }\n    }\n\n    @media (max-width:380px){\n      .row > .fld{ flex:1 1 100%; }\n    }\n  `,\n\n  render(d2) {\n    const st = d2.state;\n    const bad = (k) => ((st.errs || []).indexOf(k) >= 0 ? ' bad' : '');\n    const lbl = (arr, v) => (arr.find((o) => o.v === v) || {}).t || '—';\n    if (st.sent) {\n      const nome = (st.sentNome || '').split(' ')[0];\n      return `<div class=\"wrap\">\n        <div class=\"hero\">\n          <div class=\"hero-bg\"><img src=\"${HERO}\" alt=\"\"></div>\n          <div class=\"hero-veil\"></div>\n          <div class=\"inner done\">\n            <img class=\"logo\" src=\"${LOGO}\" alt=\"TEMPO by Porsche\" style=\"height:24px;margin-bottom:36px\">\n            <div class=\"mark\">✓</div>\n            <div class=\"eyebrow\">Pedido recebido</div>\n            <h1>Obrigado${nome ? ',<br><em>' + esc(nome) + '</em>' : ''}.</h1>\n            <div class=\"recap\">\n              <div><dt>Evento</dt><dd>${esc(lbl(TIPOS, st.sentTipo))}</dd></div>\n              <div><dt>Data</dt><dd>${esc(st.sentData || '—')}</dd></div>\n              <div><dt>Horário</dt><dd>${esc(st.sentHora || '—')}</dd></div>\n              <div><dt>Pessoas</dt><dd>${esc(st.sentPessoas || '—')}</dd></div>\n            </div>\n            <p>Nossa equipe responde em até 2 dias úteis com disponibilidade, formatos possíveis\n            e o orçamento. Se quiser adiantar alguma informação, escreva para\n            <a href=\"mailto:${MAIL}\">${MAIL}</a>.</p>\n            <button class=\"pill again\">Enviar outro pedido</button>\n          </div>\n        </div>\n      </div>`;\n    }\n\n    const chips = (group, opts, multi) => {\n      const cur = multi ? (st[group] || []) : (st[group] || '');\n      return opts.map((o) => {\n        const on = multi ? cur.indexOf(o.v) >= 0 : cur === o.v;\n        return `<button type=\"button\" class=\"chip${on ? ' on' : ''}\" data-g=\"${group}\" data-v=\"${o.v}\">${esc(o.t)}</button>`;\n      }).join('');\n    };\n\n    const pessoas = parseInt(form.pessoas, 10) || 0;\n    const overCap = pessoas > CAP_MAX;\n    const refExtra = REF_LABEL[st.referral];\n    const temTransmissao = (st.infra || []).indexOf('transmissao') >= 0;\n\n    const req = [\n      !!st.tipo, !!form.data, !!form.hora_inicio, pessoas > 0,\n      !!String(form.nome).trim(), !!String(form.email).trim(),\n      String(form.telefone).replace(/\\D/g, '').length >= 10, !!st.referral,\n    ];\n    const pct = Math.round((req.filter(Boolean).length / req.length) * 100);\n\n    const strip = `<div class=\"strip\"><div class=\"sk\">O espaço</div><div class=\"sgrid\">${FOTOS.map((p, i) => `<div class=\"scell\" data-i=\"${i}\"><img src=\"${p.u}\" alt=\"${esc(p.t)}\" loading=\"lazy\"></div>`).join('')}</div></div>`;\n\n    const lbi = st.lb;\n    const lightbox = (lbi != null && FOTOS[lbi])\n      ? `<div class=\"lb\">\n          <div class=\"lbbg\"></div>\n          <img src=\"${FOTOS[lbi].u}\" alt=\"${esc(FOTOS[lbi].t)}\">\n          <button class=\"lbx\">×</button>\n          <button class=\"lbnav lbprev\">‹</button><button class=\"lbnav lbnext\">›</button>\n          <div class=\"lbcount\">${esc(FOTOS[lbi].t)} · ${lbi + 1}/${FOTOS.length}</div>\n        </div>`\n      : '';\n\n    return `<div class=\"wrap\">\n      <div class=\"nav\"><div class=\"nav-in\">\n        <img class=\"logo\" src=\"${LOGO}\" alt=\"TEMPO by Porsche\">\n        <a class=\"nav-mail\" href=\"mailto:${MAIL}\">${MAIL}</a>\n      </div></div>\n      <div class=\"prog\"><i style=\"width:${pct}%\"></i></div>\n\n      <div class=\"hero\">\n        <div class=\"hero-bg\"><img src=\"${HERO}\" alt=\"\"></div>\n        <div class=\"hero-veil\"></div>\n        <div class=\"inner\">\n          <div class=\"eyebrow\">Eventos privados</div>\n          <h1>Reserve<br><em>o espaço</em></h1>\n          <div class=\"sub\">Conte o que você tem em mente, do formato à gastronomia, e voltamos\n          com a proposta. Arte, som, luz e cozinha no mesmo endereço.</div>\n          <div class=\"facts\">\n            <div class=\"fact\"><div class=\"fk\">Capacidade</div><div class=\"fv\">Até ${CAP_MAX} convidados</div></div>\n            <div class=\"fact\"><div class=\"fk\">Formatos</div><div class=\"fv\">Coquetel · Sentado · Auditório</div></div>\n            <div class=\"fact\"><div class=\"fk\">Resposta</div><div class=\"fv\">Em até 2 dias úteis</div></div>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"inner\">\n\n        <div class=\"sec\">\n          <div class=\"sec-h\"><span class=\"sec-n\">01</span><span class=\"sec-t\">O evento</span>\n            <span class=\"sec-note\">obrigatório</span></div>\n\n          <div class=\"fld\">\n            <label>Tipo de evento</label>\n            <div class=\"chips${bad('tipo')}\">${chips('tipo', TIPOS, false)}</div>\n          </div>\n\n          <div class=\"row\">\n            <div class=\"fld\"><label>Data</label>\n              <input type=\"date\" class=\"f${bad('data')}\" data-k=\"data\" value=\"${esc(form.data)}\"></div>\n            <div class=\"fld\"><label>Início</label>\n              <input type=\"time\" class=\"f${bad('hora_inicio')}\" data-k=\"hora_inicio\" value=\"${esc(form.hora_inicio)}\"></div>\n            <div class=\"fld\"><label>Duração <span class=\"opt\">horas</span></label>\n              <input type=\"number\" min=\"1\" step=\"1\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"f\" data-k=\"duracao_horas\" value=\"${esc(form.duracao_horas)}\" placeholder=\"4\"></div>\n            <div class=\"fld\"><label>Pessoas</label>\n              <input type=\"number\" min=\"1\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"f${bad('pessoas')}\" data-k=\"pessoas\" value=\"${esc(form.pessoas)}\" placeholder=\"80\"></div>\n          </div>\n\n          <div class=\"fld\" style=\"margin-top:20px\">\n            <div class=\"chips\">${chips('flex', [{ v: 'sim', t: 'Minha data é flexível' }], false)}</div>\n            <div class=\"note\">Marque se podemos sugerir outras datas próximas. Costuma abrir mais opções de estrutura.</div>\n          </div>\n\n          ${overCap ? `<div class=\"note warn\">Acima de ${CAP_MAX} convidados avaliamos caso a caso. Envie assim mesmo e retornamos com as opções.</div>` : ''}\n\n          <div class=\"fld\" style=\"margin-top:24px\">\n            <label>Formato da sala <span class=\"opt\">opcional</span></label>\n            <div class=\"chips\">${chips('formato', FORMATOS, false)}</div>\n          </div>\n        </div>\n\n        <div class=\"sec\">\n          <div class=\"sec-h\"><span class=\"sec-n\">02</span><span class=\"sec-t\">O espaço</span>\n            <span class=\"sec-note\">como você imagina a casa</span></div>\n          <div class=\"fld\">\n            <label>Exclusividade <span class=\"opt\">opcional</span></label>\n            <div class=\"chips\">${chips('exclusividade', EXCLUSIVIDADE, false)}</div>\n            <div class=\"note\">Em “área reservada”, o restante da casa segue em operação normal.</div>\n          </div>\n          <div class=\"info\">O prédio tem estacionamento com serviço de manobrista, cobrado à parte.</div>\n        </div>\n\n        <div class=\"sec\">\n          <div class=\"sec-h\"><span class=\"sec-n\">03</span><span class=\"sec-t\">Estrutura e ambientação</span>\n            <span class=\"sec-note\">o que precisa estar montado</span></div>\n\n          <div class=\"fld\">\n            <label>Infra audiovisual <span class=\"opt\">selecione quantos precisar</span></label>\n            <div class=\"chips\">${chips('infra', INFRA, true)}</div>\n          </div>\n\n          ${temTransmissao ? `<div class=\"cond\"><div class=\"fld\">\n            <label>Que transmissão você precisa?</label>\n            <input type=\"text\" class=\"f\" data-k=\"transmissao_desc\" value=\"${esc(form.transmissao_desc)}\"\n              placeholder=\"Ex.: live no YouTube, captação para redes, telão com apresentação…\">\n          </div></div>` : ''}\n\n          <div class=\"fld\" style=\"margin-top:24px\">\n            <label>Música <span class=\"opt\">opcional</span></label>\n            <div class=\"chips\">${chips('musica', MUSICA, false)}</div>\n          </div>\n          ${st.musica === 'outros' ? `<div class=\"cond\"><div class=\"fld\">\n            <label>Que tipo de música?</label>\n            <input type=\"text\" class=\"f\" data-k=\"musica_desc\" value=\"${esc(form.musica_desc)}\"\n              placeholder=\"Ex.: banda, pocket show acústico, playlist própria…\">\n          </div></div>` : ''}\n\n          <div class=\"fld\">\n            <label>Quer cenografia ou personalização de marca?</label>\n            <div class=\"chips\">${chips('ambient', SIMNAO, false)}</div>\n          </div>\n          ${st.ambient === 'sim' ? `<div class=\"cond\"><div class=\"fld\">\n            <label>O que você tem em mente?</label>\n            <textarea class=\"f\" data-k=\"ambientacao_desc\"\n              placeholder=\"Decoração, backdrop, totem, identidade visual da marca…\">${esc(form.ambientacao_desc)}</textarea>\n          </div></div>` : ''}\n        </div>\n\n        <div class=\"sec\">\n          <div class=\"sec-h\"><span class=\"sec-n\">04</span><span class=\"sec-t\">Gastronomia e bebidas</span>\n            <span class=\"sec-note\">o que vamos servir</span></div>\n\n          <div class=\"fld\">\n            <label>Formato do serviço <span class=\"opt\">opcional</span></label>\n            <div class=\"chips\">${chips('catering', CATERING, false)}</div>\n          </div>\n\n          <div class=\"fld\">\n            <label>Restrições alimentares <span class=\"opt\">opcional</span></label>\n            <input type=\"text\" class=\"f\" data-k=\"restricoes\" value=\"${esc(form.restricoes)}\"\n              placeholder=\"Ex.: 2 veganos, 1 sem glúten, alergia a frutos do mar…\">\n          </div>\n\n          <div class=\"fld\">\n            <label>Interesse em cardápio temático ou personalizado?</label>\n            <div class=\"chips\">${chips('cardapio', SIMNAO, false)}</div>\n          </div>\n          ${st.cardapio === 'sim' ? `<div class=\"cond\"><div class=\"fld\">\n            <label>Conte a ideia</label>\n            <input type=\"text\" class=\"f\" data-k=\"cardapio_desc\" value=\"${esc(form.cardapio_desc)}\"\n              placeholder=\"Tema, referência, prato que não pode faltar…\">\n          </div></div>` : ''}\n\n          <div class=\"fld\">\n            <label>Vai ter bebida alcoólica?</label>\n            <div class=\"chips\">${chips('alcool', SIMNAO, false)}</div>\n          </div>\n          ${st.alcool === 'sim' ? `<div class=\"cond\">\n            <div class=\"fld\">\n              <label>Preferências <span class=\"opt\">selecione quantas quiser</span></label>\n              <div class=\"chips\">${chips('bebidas', BEBIDAS, true)}</div>\n            </div>\n            <div class=\"fld\">\n              <label>Algum comentário sobre as bebidas? <span class=\"opt\">opcional</span></label>\n              <input type=\"text\" class=\"f\" data-k=\"bebidas_obs\" value=\"${esc(form.bebidas_obs)}\"\n                placeholder=\"Ex.: preferência por tintos, drink de assinatura, rótulo específico…\">\n            </div>\n          </div>` : ''}\n        </div>\n\n        <div class=\"quote\">\n          <div class=\"qk\">Sobre a casa</div>\n          <p>“Um ecossistema de encontros, curadoria e conteúdo, onde cultura, design\n          e lifestyle se cruzam para criar experiências que vão além do automóvel.”</p>\n        </div>\n\n        ${strip}\n\n        <div class=\"sec\">\n          <div class=\"sec-h\"><span class=\"sec-n\">05</span><span class=\"sec-t\">Contato</span>\n            <span class=\"sec-note\">para retornarmos</span></div>\n          <div class=\"row stack\">\n            <div class=\"fld\"><label>Nome completo</label>\n              <input type=\"text\" class=\"f${bad('nome')}\" data-k=\"nome\" value=\"${esc(form.nome)}\"></div>\n            <div class=\"fld\"><label>Cargo / função <span class=\"opt\">opcional</span></label>\n              <input type=\"text\" class=\"f\" data-k=\"cargo\" value=\"${esc(form.cargo)}\"></div>\n          </div>\n          <div class=\"row stack\" style=\"margin-top:24px\">\n            <div class=\"fld\"><label>Empresa / marca <span class=\"opt\">opcional</span></label>\n              <input type=\"text\" class=\"f\" data-k=\"empresa\" value=\"${esc(form.empresa)}\"></div>\n            <div class=\"fld\"><label>E-mail</label>\n              <input type=\"email\" class=\"f${bad('email')}\" data-k=\"email\" value=\"${esc(form.email)}\"></div>\n          </div>\n          <div class=\"row stack\" style=\"margin-top:24px\">\n            <div class=\"fld\"><label>Telefone / WhatsApp</label>\n              <input type=\"tel\" class=\"f${bad('telefone')}\" data-k=\"telefone\" value=\"${esc(form.telefone)}\" placeholder=\"+55 11 9…\"></div>\n          </div>\n        </div>\n\n        <div class=\"sec\">\n          <div class=\"sec-h\"><span class=\"sec-n\">06</span><span class=\"sec-t\">Últimos detalhes</span>\n            <span class=\"sec-note\">ajuda a acelerar a proposta</span></div>\n          <div class=\"fld\">\n            <label>Como você chegou até a TEMPO?</label>\n            <div class=\"chips${bad('referral')}\">${chips('referral', REFERRAL, false)}</div>\n          </div>\n          ${refExtra ? `<div class=\"cond\"><div class=\"fld\"><label>${esc(refExtra)}</label>\n            <input type=\"text\" class=\"f\" data-k=\"referral_detalhe\" value=\"${esc(form.referral_detalhe)}\"></div></div>` : ''}\n          <div class=\"fld\" style=\"margin-top:24px\">\n            <label>Mais alguma coisa? <span class=\"opt\">opcional</span></label>\n            <textarea class=\"f\" data-k=\"observacoes\" placeholder=\"Referências, pedidos especiais, convidados VIP, horário de acesso para fornecedores…\">${esc(form.observacoes)}</textarea>\n          </div>\n        </div>\n\n        <div class=\"foot\">\n          <button class=\"pill submit\"${st.sending ? ' disabled' : ''}>${st.sending ? 'Enviando…' : 'Enviar pedido'}</button>\n          ${st.err ? `<span class=\"err\">${esc(st.err)}</span>`\n            : `<span class=\"hint\">Ao enviar, você concorda que a equipe da TEMPO entre em contato sobre este pedido.</span>`}\n        </div>\n\n        <div class=\"end\">\n          <span class=\"addr\">${esc(ENDERECO)}</span>\n          <span><a href=\"mailto:${MAIL}\">${MAIL}</a> &nbsp;·&nbsp; <a href=\"${INSTAGRAM}\" target=\"_blank\" rel=\"noopener\">Instagram</a></span>\n        </div>\n      </div>\n\n      <button class=\"top-btn${st.scrolled ? ' show' : ''}\">↑</button>\n      ${lightbox}\n    </div>`;\n  },\n\n  mounted(d2) {\n    const API = d2.param('api') || 'reserva-espaco-api';\n\n    const w = d2.$('.wrap');\n    if (w) {\n      d2.on(w, 'scroll', () => {\n        const past = w.scrollTop > 700;\n        if (past !== !!d2.state.scrolled) d2.state.scrolled = past;\n      }, { passive: true });\n    }\n    d2.on('.top-btn', 'click', () => { const el = d2.$('.wrap'); if (el) el.scrollTo({ top: 0, behavior: 'smooth' }); });\n\n    const totalFotos = () => FOTOS.length;\n    d2.on('.scell', 'click', (e, el) => { d2.state.lb = parseInt(el.dataset.i, 10); });\n    d2.on('.lbbg', 'click', () => { d2.state.lb = null; });\n    d2.on('.lbx', 'click', () => { d2.state.lb = null; });\n    d2.on('.lbprev', 'click', () => {\n      const n = totalFotos();\n      if (n) d2.state.lb = ((d2.state.lb || 0) - 1 + n) % n;\n    });\n    d2.on('.lbnext', 'click', () => {\n      const n = totalFotos();\n      if (n) d2.state.lb = ((d2.state.lb || 0) + 1) % n;\n    });\n    d2.on(window, 'keydown', (e) => {\n      if (d2.state.lb == null) return;\n      const n = totalFotos();\n      if (e.key === 'Escape') d2.state.lb = null;\n      else if (e.key === 'ArrowLeft' && n) d2.state.lb = ((d2.state.lb || 0) - 1 + n) % n;\n      else if (e.key === 'ArrowRight' && n) d2.state.lb = ((d2.state.lb || 0) + 1) % n;\n    });\n\n    const pctNow = () => {\n      const p = parseInt(form.pessoas, 10) || 0;\n      const req = [!!d2.state.tipo, !!form.data, !!form.hora_inicio, p > 0,\n        !!String(form.nome).trim(), !!String(form.email).trim(),\n        String(form.telefone).replace(/\\D/g, '').length >= 10, !!d2.state.referral];\n      return Math.round((req.filter(Boolean).length / req.length) * 100);\n    };\n\n    d2.on('.f', 'input', (e, el) => {\n      form[el.dataset.k] = el.value;\n      const bar = d2.$('.prog i');\n      if (bar) bar.style.width = pctNow() + '%';\n    });\n\n    d2.on('.chip', 'click', (e, el) => {\n      const g = el.dataset.g;\n      const v = el.dataset.v;\n      if (g === 'infra' || g === 'bebidas') {\n        const cur = (d2.state[g] || []).slice();\n        const i = cur.indexOf(v);\n        if (i >= 0) { cur.splice(i, 1); } else { cur.push(v); }\n        d2.state[g] = cur;\n      } else {\n        d2.state[g] = d2.state[g] === v ? '' : v;\n      }\n    });\n\n    d2.on('.again', 'click', () => {\n      Object.keys(form).forEach((k) => { form[k] = ''; });\n      d2.setState({\n        sent: false, tipo: '', formato: '', flex: '', exclusividade: '',\n        infra: [], musica: '', ambient: '', catering: '', cardapio: '',\n        alcool: '', bebidas: [], referral: '', errs: [], err: '', lb: null,\n      });\n    });\n\n    d2.on('.submit', 'click', async () => {\n      const st = d2.state;\n      const miss = [];\n      if (!String(form.nome).trim()) miss.push('nome');\n      if (!/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(String(form.email).trim())) miss.push('email');\n      if (String(form.telefone).replace(/\\D/g, '').length < 10) miss.push('telefone');\n      if (!form.data) miss.push('data');\n      if (!form.hora_inicio) miss.push('hora_inicio');\n      if (!(parseInt(form.pessoas, 10) > 0)) miss.push('pessoas');\n      if (!st.tipo) miss.push('tipo');\n      if (!st.referral) miss.push('referral');\n\n      if (miss.length) {\n        d2.setState({ errs: miss, err: 'Confira os campos destacados.' });\n        const first = d2.$('.bad');\n        if (first && first.scrollIntoView) first.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        return;\n      }\n\n      d2.setState({ errs: [], err: '', sending: true });\n      try {\n        const temTransmissao = (st.infra || []).indexOf('transmissao') >= 0;\n        const res = await d2.rush(API).invoke({\n          action: 'submit',\n          nome: String(form.nome).trim(),\n          email: String(form.email).trim(),\n          telefone: String(form.telefone).trim(),\n          empresa: String(form.empresa).trim(),\n          cargo: String(form.cargo).trim(),\n          tipo_evento: st.tipo,\n          data: form.data,\n          data_flexivel: st.flex === 'sim',\n          hora_inicio: form.hora_inicio,\n          duracao_horas: parseFloat(form.duracao_horas) || null,\n          pessoas: parseInt(form.pessoas, 10),\n          formato: st.formato || '',\n          exclusividade: st.exclusividade || '',\n          infraestrutura: st.infra || [],\n          transmissao_desc: temTransmissao ? String(form.transmissao_desc).trim() : '',\n          musica: st.musica || '',\n          musica_desc: st.musica === 'outros' ? String(form.musica_desc).trim() : '',\n          ambientacao: st.ambient === 'sim',\n          ambientacao_desc: st.ambient === 'sim' ? String(form.ambientacao_desc).trim() : '',\n          catering: st.catering || '',\n          restricoes: String(form.restricoes).trim(),\n          cardapio_personalizado: st.cardapio === 'sim',\n          cardapio_desc: st.cardapio === 'sim' ? String(form.cardapio_desc).trim() : '',\n          bebidas_alcoolicas: st.alcool === 'sim',\n          bebidas: st.alcool === 'sim' ? (st.bebidas || []) : [],\n          bebidas_obs: st.alcool === 'sim' ? String(form.bebidas_obs).trim() : '',\n          referral: st.referral,\n          referral_detalhe: String(form.referral_detalhe).trim(),\n          observacoes: String(form.observacoes).trim(),\n        });\n        const out = res && res.data !== undefined ? res.data : res;\n        if (out && out.ok) {\n          const el = d2.$('.wrap');\n          if (el) el.scrollTo({ top: 0 });\n          d2.setState({\n            sent: true,\n            sentNome: form.nome,\n            sentTipo: st.tipo,\n            sentData: form.data,\n            sentHora: form.hora_inicio,\n            sentPessoas: form.pessoas,\n          });\n        } else {\n          d2.state.err = 'Não conseguimos registrar agora. Tente de novo ou escreva para ' + MAIL + '.';\n        }\n      } catch (e) {\n        d2.log('submit err', e);\n        d2.state.err = 'Erro de conexão. Tente de novo em instantes.';\n      } finally {\n        d2.state.sending = false;\n      }\n    });\n  },\n};"}},"api":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"api"}}}},"gallery":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"gallery"}}}}}}}},"__d2PrevCode":{"code":"const LOGO = 'https://tempobyporsche.com/wp-content/uploads/2026/02/logo_tempo_by_porsche_white_V.svg';\nconst MAIL = 'oi@tempobyporsche.com';\nconst ENDERECO = 'Rua Maria Carolina, 624 — Pinheiros, São Paulo';\nconst INSTAGRAM = 'https://www.instagram.com/tempobyporsche/';\nconst CAP_MAX = 200;\n\nconst TIPOS = [\n  { v: 'festa', t: 'Festa' },\n  { v: 'jantar', t: 'Jantar' },\n  { v: 'almoco', t: 'Almoço' },\n  { v: 'cafe', t: 'Café da manhã' },\n  { v: 'corporativo', t: 'Corporativo / Talks' },\n];\nconst FORMATOS = [\n  { v: 'coquetel', t: 'Coquetel em pé' },\n  { v: 'sentado', t: 'Sentado' },\n  { v: 'auditorio', t: 'Auditório' },\n  { v: 'misto', t: 'Misto' },\n];\nconst EXCLUSIVIDADE = [\n  { v: 'privativo', t: 'Espaço totalmente privativo' },\n  { v: 'reservada', t: 'Área reservada' },\n  { v: 'indiferente', t: 'Sem preferência' },\n];\nconst INFRA = [\n  { v: 'telao', t: 'Telão / painel de LED' },\n  { v: 'microfone', t: 'Microfone' },\n  { v: 'som', t: 'Sistema de som' },\n  { v: 'luz', t: 'Iluminação cênica' },\n  { v: 'palco', t: 'Palco' },\n  { v: 'transmissao', t: 'Transmissão ao vivo' },\n  { v: 'wifi', t: 'Wi-Fi dedicado' },\n];\nconst MUSICA = [\n  { v: 'ambiente', t: 'Música ambiente' },\n  { v: 'dj', t: 'DJ' },\n  { v: 'aovivo', t: 'Música ao vivo' },\n  { v: 'outros', t: 'Outros' },\n];\nconst CATERING = [\n  { v: 'coquetel', t: 'Coquetel' },\n  { v: 'jantar', t: 'Jantar servido' },\n  { v: 'buffet', t: 'Buffet' },\n  { v: 'bebidas', t: 'Apenas bebidas' },\n  { v: 'nenhum', t: 'Sem gastronomia' },\n];\nconst BEBIDAS = [\n  { v: 'cerveja', t: 'Cerveja' },\n  { v: 'chopp', t: 'Chopp' },\n  { v: 'vinho', t: 'Vinho' },\n  { v: 'espumante', t: 'Espumante' },\n  { v: 'drinks', t: 'Drinks' },\n];\nconst REFERRAL = [\n  { v: 'indicacao', t: 'Indicação' },\n  { v: 'membro', t: 'Sou membro TEMPO' },\n  { v: 'instagram', t: 'Instagram' },\n  { v: 'google', t: 'Busca no Google' },\n  { v: 'imprensa', t: 'Imprensa' },\n  { v: 'evento', t: 'Estive em um evento' },\n  { v: 'porsche', t: 'Porsche / concessionária' },\n  { v: 'outro', t: 'Outro' },\n];\nconst REF_LABEL = {\n  indicacao: 'Quem indicou você?',\n  membro: 'Seu nome ou número do card',\n  outro: 'Conte pra gente',\n};\nconst SIMNAO = [{ v: 'sim', t: 'Sim' }, { v: 'nao', t: 'Não' }];\n\nconst form = {\n  nome: '', email: '', telefone: '', empresa: '', cargo: '',\n  data: '', hora_inicio: '', duracao_horas: '', pessoas: '',\n  transmissao_desc: '', restricoes: '', cardapio_desc: '', bebidas_obs: '',\n  ambientacao_desc: '', musica_desc: '', observacoes: '', referral_detalhe: '',\n};\n\nconst esc = (s) => String(s == null ? '' : s)\n  .replace(/[&<>\"]/g, (c) => ({ '&': '&amp;', '<': '&lt;', '>': '&gt;', '\"': '&quot;' }[c]));\n\nexport default {\n  css: `\n    .wrap{ position:fixed; inset:0; overflow-y:auto; overflow-x:hidden;\n      background:#0a0a0b; color:#eae8e3; box-sizing:border-box;\n      font-family:-apple-system,BlinkMacSystemFont,'Helvetica Neue',Arial,sans-serif;\n      -webkit-font-smoothing:antialiased; -webkit-overflow-scrolling:touch; }\n    .inner{ max-width:780px; margin:0 auto; padding:0 28px; box-sizing:border-box; }\n\n    .nav{ position:sticky; top:0; z-index:500; background:rgba(10,10,11,.9);\n      backdrop-filter:blur(14px); -webkit-backdrop-filter:blur(14px);\n      border-bottom:1px solid rgba(255,255,255,.08); }\n    .nav-in{ max-width:780px; margin:0 auto; padding:15px 28px; display:flex; align-items:center;\n      justify-content:space-between; gap:14px; box-sizing:border-box; }\n    .nav .logo{ height:22px; width:auto; display:block; flex:none; }\n    .nav-mail{ font-size:11px; letter-spacing:.12em; text-transform:uppercase; color:#8c8a85;\n      text-decoration:none; transition:color .2s ease; overflow:hidden; text-overflow:ellipsis;\n      white-space:nowrap; }\n    .nav-mail:hover{ color:#f3f1ec; }\n\n    .prog{ position:sticky; top:52px; z-index:490; height:2px; background:rgba(255,255,255,.07); }\n    .prog i{ display:block; height:100%; background:#eae8e3; width:0;\n      transition:width .45s cubic-bezier(.2,.7,.3,1); }\n\n    .hero{ position:relative; overflow:hidden; border-bottom:1px solid rgba(255,255,255,.08); }\n    .hero-bg{ position:absolute; inset:0; z-index:0; }\n    .hero-bg img{ width:100%; height:100%; object-fit:cover; opacity:.34;\n      filter:saturate(.8) contrast(1.05); transform:scale(1.03); }\n    .hero-veil{ position:absolute; inset:0; z-index:1;\n      background:linear-gradient(180deg, rgba(10,10,11,.55) 0%, rgba(10,10,11,.22) 38%, rgba(10,10,11,.96) 100%); }\n    .hero .inner{ position:relative; z-index:2; padding-top:104px; padding-bottom:78px; }\n    .eyebrow{ font-size:10.5px; letter-spacing:.24em; text-transform:uppercase; color:#a8a6a1;\n      display:flex; align-items:center; gap:12px; }\n    .eyebrow::after{ content:''; height:1px; flex:1; background:rgba(255,255,255,.14); }\n    h1{ font-size:clamp(36px,6.4vw,62px); line-height:1.02; font-weight:500; margin:22px 0 0;\n      letter-spacing:-.028em; }\n    h1 em{ font-family:Georgia,'Times New Roman',serif; font-style:italic; font-weight:400;\n      letter-spacing:-.01em; }\n    .sub{ color:#c9c7c2; font-size:16.5px; line-height:1.68; margin-top:22px; max-width:50ch; }\n    .facts{ display:flex; flex-wrap:wrap; margin-top:38px; border-top:1px solid rgba(255,255,255,.1); }\n    .fact{ flex:1 1 150px; padding:18px 20px 16px 0; }\n    .fact .fk{ font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:#77756f; }\n    .fact .fv{ font-size:15px; margin-top:7px; color:#eae8e3; line-height:1.4; }\n\n    .sec{ margin-top:26px; background:#121214; border:1px solid rgba(255,255,255,.07);\n      border-radius:14px; padding:30px 32px 34px; }\n    .sec:first-of-type{ margin-top:44px; }\n    .sec-h{ display:flex; align-items:baseline; gap:14px; margin-bottom:26px;\n      padding-bottom:18px; border-bottom:1px solid rgba(255,255,255,.07); }\n    .sec-n{ font-family:Georgia,'Times New Roman',serif; font-style:italic; font-size:26px;\n      color:#5f5d58; line-height:1; flex:none; }\n    .sec-t{ font-size:19px; font-weight:600; letter-spacing:.01em; color:#f3f1ec; }\n    .sec-note{ font-size:12.5px; color:#77756f; margin-left:auto; text-align:right; letter-spacing:.02em; }\n\n    .fld{ margin-bottom:24px; }\n    .fld:last-child{ margin-bottom:0; }\n    .fld > label{ display:flex; align-items:baseline; flex-wrap:wrap; gap:0 8px;\n      font-size:10.5px; letter-spacing:.18em; text-transform:uppercase;\n      color:#a8a6a1; margin-bottom:11px; line-height:1.5; }\n    .fld .opt{ letter-spacing:.04em; text-transform:none; color:#5f5d58; font-size:11px; }\n\n    /* sistema de campos: altura fixa garante alinhamento entre colunas,\n       independente de o rótulo ocupar uma ou duas linhas */\n    input.f, textarea.f{ width:100%; box-sizing:border-box; display:block; min-width:0;\n      background:rgba(255,255,255,.035);\n      border:1px solid rgba(255,255,255,.10); border-radius:10px; color:#eae8e3;\n      font-family:inherit; font-size:15.5px; line-height:1.35;\n      outline:none; color-scheme:dark;\n      -webkit-appearance:none; appearance:none; text-align:left;\n      transition:border-color .2s ease, background .2s ease, box-shadow .2s ease; }\n    input.f{ height:52px; padding:0 16px; }\n    textarea.f{ min-height:118px; padding:15px 16px; line-height:1.6; resize:vertical; }\n    input.f::placeholder, textarea.f::placeholder{ color:#4e4c48; }\n    input.f:focus, textarea.f:focus{ border-color:rgba(234,232,227,.55); background:rgba(255,255,255,.06);\n      box-shadow:0 0 0 3px rgba(234,232,227,.07); }\n    input.f.bad, textarea.f.bad{ border-color:#8c5b4a; box-shadow:0 0 0 3px rgba(140,91,74,.14); }\n\n    /* normaliza date/time no iOS: sem isso o valor sai centralizado,\n       com altura própria e estourando a coluna */\n    /* o input vira flex container: é o que centraliza verticalmente o shadow DOM\n       do date/time no iOS, que ignora padding e line-height */\n    input.f[type=\"date\"], input.f[type=\"time\"]{\n      display:flex; -webkit-align-items:center; align-items:center; text-align:left; }\n    input.f::-webkit-date-and-time-value{ text-align:left; margin:0; line-height:normal; }\n    input.f::-webkit-datetime-edit{ padding:0; line-height:normal; }\n    input.f::-webkit-datetime-edit-fields-wrapper{ padding:0; }\n    input.f::-webkit-calendar-picker-indicator{ filter:invert(.75); opacity:.45; cursor:pointer; }\n    input.f[type=\"number\"]::-webkit-outer-spin-button,\n    input.f[type=\"number\"]::-webkit-inner-spin-button{ -webkit-appearance:none; margin:0; }\n    input.f[type=\"number\"]{ -moz-appearance:textfield; }\n\n    .row{ display:flex; gap:14px; flex-wrap:wrap; align-items:flex-end; }\n    .row > .fld{ flex:1 1 150px; min-width:0; margin-bottom:0; }\n    .row + .row{ margin-top:24px; }\n\n    .chips{ display:flex; flex-wrap:wrap; gap:9px; }\n    .chip{ background:rgba(255,255,255,.04); border:1px solid rgba(255,255,255,.14); color:#c9c7c2;\n      padding:11px 19px; border-radius:999px; font-size:13.5px; font-family:inherit; cursor:pointer;\n      white-space:nowrap; line-height:1.2; min-height:42px;\n      transition:background .18s ease, border-color .18s ease, color .18s ease; }\n    .chip:hover{ border-color:rgba(234,232,227,.55); color:#f3f1ec; }\n    .chip.on{ background:#eae8e3; border-color:#eae8e3; color:#0a0a0b; font-weight:600; }\n    .chips.bad{ outline:1px solid #8c5b4a; outline-offset:8px; border-radius:6px; }\n\n    /* campo que só existe por causa de uma resposta anterior */\n    .cond{ margin:16px 0 28px; padding:6px 0 8px 18px;\n      border-left:2px solid rgba(234,232,227,.2); }\n    .cond .fld{ margin-bottom:20px; }\n    .cond .fld:last-child{ margin-bottom:0; }\n    .fld + .cond{ margin-top:14px; }\n\n    /* lightbox das fotos */\n    .scell{ cursor:zoom-in; }\n    .lb{ position:fixed; inset:0; z-index:900; display:flex; align-items:center;\n      justify-content:center; padding:44px 60px; box-sizing:border-box; }\n    .lbbg{ position:absolute; inset:0; background:rgba(6,6,7,.95);\n      backdrop-filter:blur(6px); -webkit-backdrop-filter:blur(6px); cursor:zoom-out; }\n    .lb img{ position:relative; z-index:2; max-width:100%; max-height:100%;\n      object-fit:contain; border-radius:8px; box-shadow:0 30px 90px rgba(0,0,0,.7); }\n    .lbx{ position:absolute; top:20px; right:22px; z-index:3; width:42px; height:42px;\n      border-radius:50%; background:rgba(20,20,22,.9); border:1px solid rgba(255,255,255,.18);\n      color:#eae8e3; font-size:20px; line-height:1; cursor:pointer; font-family:inherit; }\n    .lbx:hover{ background:rgba(42,42,46,.95); }\n    .lbnav{ position:absolute; top:50%; transform:translateY(-50%); z-index:3;\n      width:44px; height:44px; border-radius:50%; background:rgba(20,20,22,.85);\n      border:1px solid rgba(255,255,255,.18); color:#eae8e3; font-size:21px; line-height:1;\n      cursor:pointer; font-family:inherit; }\n    .lbnav:hover{ background:rgba(42,42,46,.95); }\n    .lbprev{ left:16px; }\n    .lbnext{ right:16px; }\n    .lbcount{ position:absolute; bottom:20px; left:50%; transform:translateX(-50%); z-index:3;\n      font-size:11px; letter-spacing:.16em; color:#8c8a85; }\n\n    .info{ margin-top:20px; padding:14px 17px; background:rgba(255,255,255,.025);\n      border:1px solid rgba(255,255,255,.07); border-radius:10px;\n      font-size:13px; line-height:1.55; color:#8c8a85; }\n    .info b{ color:#c9c7c2; font-weight:600; }\n\n    .note{ font-size:12.5px; color:#77756f; margin-top:12px; line-height:1.55; }\n    .note.warn{ color:#c8a37a; border-left:2px solid #7a6a45; padding-left:12px; }\n\n    .quote{ margin-top:26px; background:#121214; border:1px solid rgba(255,255,255,.07);\n      border-radius:14px; padding:30px 34px; }\n    .quote .qk{ font-size:10px; letter-spacing:.24em; text-transform:uppercase; color:#77756f;\n      margin-bottom:14px; }\n    .quote p{ font-family:Georgia,'Times New Roman',serif; font-style:italic; font-size:16.5px;\n      line-height:1.75; color:#dcdad5; margin:0; }\n\n    .strip{ margin-top:26px; }\n    .strip .sk{ font-size:10px; letter-spacing:.24em; text-transform:uppercase; color:#77756f;\n      margin-bottom:14px; }\n    .sgrid{ display:grid; grid-template-columns:repeat(4,1fr); gap:10px; }\n    .scell{ position:relative; aspect-ratio:4/3; border-radius:10px; overflow:hidden; background:#141416; }\n    .scell img{ position:absolute; inset:0; width:100%; height:100%; object-fit:cover; opacity:.92;\n      transition:transform .5s cubic-bezier(.2,.7,.3,1), opacity .3s ease; }\n    .scell:hover img{ transform:scale(1.05); opacity:1; }\n\n    .foot{ margin-top:34px; background:#121214; border:1px solid rgba(255,255,255,.07);\n      border-radius:14px; padding:30px 32px; display:flex; align-items:center; gap:22px; flex-wrap:wrap; }\n    .pill{ background:#eae8e3; color:#0a0a0b; border:0; border-radius:999px; padding:16px 38px;\n      font-size:13px; letter-spacing:.09em; font-weight:700; text-transform:uppercase; cursor:pointer;\n      font-family:inherit; min-height:52px;\n      transition:background .2s ease, box-shadow .2s ease;\n      box-shadow:0 8px 26px rgba(234,232,227,.10); }\n    .pill:hover{ background:#fff; box-shadow:0 12px 34px rgba(234,232,227,.18); }\n    .pill[disabled]{ opacity:.45; cursor:default; box-shadow:none; }\n    .err{ color:#d69a86; font-size:13.5px; }\n    .foot .hint{ font-size:12.5px; color:#5f5d58; line-height:1.55; flex:1; min-width:180px; }\n\n    .end{ margin-top:34px; padding:34px 0 24px; border-top:1px solid rgba(255,255,255,.08);\n      display:flex; justify-content:space-between; gap:16px; flex-wrap:wrap; }\n    .end a{ color:#a8a6a1; text-decoration:none; font-size:11.5px; letter-spacing:.12em;\n      text-transform:uppercase; transition:color .2s ease; }\n    .end a:hover{ color:#f3f1ec; }\n    .end .addr{ font-size:11.5px; color:#5f5d58; letter-spacing:.06em; }\n\n    .top-btn{ position:fixed; right:22px; bottom:22px; width:46px; height:46px; border-radius:50%;\n      background:rgba(20,20,22,.9); border:1px solid rgba(255,255,255,.18); cursor:pointer;\n      z-index:800; color:#eae8e3; font-size:17px; line-height:1; display:none; }\n    .top-btn.show{ display:block; }\n    .top-btn:hover{ background:rgba(42,42,46,.95); }\n\n    .done{ position:relative; z-index:2; padding:120px 28px 90px; }\n    .done .mark{ width:44px; height:44px; border-radius:50%; border:1px solid rgba(234,232,227,.4);\n      display:flex; align-items:center; justify-content:center; font-size:19px; margin-bottom:30px; }\n    .done h1{ margin-top:16px; }\n    .done p{ color:#a8a6a1; font-size:15.5px; line-height:1.7; margin:22px 0 36px; max-width:50ch; }\n    .done a{ color:#eae8e3; }\n    .recap{ border:1px solid rgba(255,255,255,.08); border-radius:14px; background:#121214;\n      padding:26px 30px; margin:30px 0 34px; display:flex; flex-wrap:wrap; gap:22px 46px; }\n    .recap div{ min-width:92px; }\n    .recap dt{ font-size:10px; letter-spacing:.2em; text-transform:uppercase; color:#77756f; }\n    .recap dd{ margin:8px 0 0; font-size:16px; }\n\n    @media (max-width:820px){\n      .inner{ padding:0 24px; }\n      .nav-in{ padding:14px 24px; }\n      .hero .inner{ padding-top:80px; padding-bottom:58px; }\n      .sec{ padding:26px 24px 28px; }\n      .quote,.foot{ padding:26px 24px; }\n      .sgrid{ grid-template-columns:repeat(2,1fr); }\n    }\n\n    @media (max-width:600px){\n      .inner{ padding:0 18px; }\n      .nav-in{ padding:12px 18px; }\n      .nav .logo{ height:19px; }\n      .nav-mail{ font-size:9.5px; letter-spacing:.08em; max-width:52%; }\n      .prog{ top:45px; }\n\n      .hero .inner{ padding-top:56px; padding-bottom:44px; }\n      .eyebrow{ font-size:9.5px; letter-spacing:.2em; }\n      h1{ font-size:clamp(32px,10.5vw,44px); margin-top:18px; }\n      .sub{ font-size:15px; margin-top:18px; line-height:1.6; }\n      .facts{ margin-top:28px; }\n      .fact{ flex:1 1 100%; padding:14px 0; border-bottom:1px solid rgba(255,255,255,.07); }\n      .fact:last-child{ border-bottom:0; padding-bottom:0; }\n      .fact .fv{ font-size:14.5px; }\n\n      .sec{ margin-top:16px; padding:24px 18px 26px; border-radius:12px; }\n      .sec:first-of-type{ margin-top:30px; }\n      .sec-h{ margin-bottom:22px; padding-bottom:14px; gap:11px; }\n      .sec-n{ font-size:22px; }\n      .sec-t{ font-size:17px; }\n      .sec-note{ display:none; }\n\n      .fld > label{ font-size:10px; letter-spacing:.13em; margin-bottom:9px; }\n      /* 16px evita o zoom automático do iOS ao focar */\n      input.f, textarea.f{ font-size:16px; }\n      input.f{ height:54px; padding:0 15px; }\n      textarea.f{ padding:15px; min-height:120px; }\n      .row{ gap:10px; }\n      .row > .fld{ flex:1 1 calc(50% - 5px); min-width:0; }\n      /* contato respira melhor em coluna única no celular */\n      .row.stack > .fld{ flex:1 1 100%; }\n      .row + .row{ margin-top:16px; }\n      .fld{ margin-bottom:20px; }\n      .cond{ margin:14px 0 24px; padding:4px 0 6px 14px; }\n\n      .chips{ gap:8px; }\n      .chip{ padding:11px 16px; font-size:13px; min-height:44px; }\n      .lb{ padding:56px 14px; }\n      .lbnav{ width:40px; height:40px; }\n      .lbprev{ left:8px; }\n      .lbnext{ right:8px; }\n\n      .quote{ margin-top:16px; padding:24px 18px; }\n      .quote p{ font-size:15.5px; line-height:1.7; }\n      .strip{ margin-top:16px; }\n      .sgrid{ grid-template-columns:repeat(2,1fr); gap:8px; }\n\n      .foot{ margin-top:20px; padding:22px 18px; gap:16px; }\n      .pill{ width:100%; padding:17px 20px; }\n      .foot .hint{ flex:1 1 100%; font-size:12px; }\n      .end{ margin-top:24px; padding:24px 0 20px; flex-direction:column; gap:10px; }\n\n      .top-btn{ right:16px; bottom:16px; width:42px; height:42px; }\n      .done{ padding:70px 18px 70px; }\n      .recap{ padding:22px 20px; gap:18px 30px; }\n      .recap dd{ font-size:15px; }\n    }\n\n    @media (max-width:380px){\n      .row > .fld{ flex:1 1 100%; }\n    }\n  `,\n\n  render(d2) {\n    const st = d2.state;\n    const bad = (k) => ((st.errs || []).indexOf(k) >= 0 ? ' bad' : '');\n    const lbl = (arr, v) => (arr.find((o) => o.v === v) || {}).t || '—';\n    const photos = st.photos || [];\n    const hero = photos.length ? photos[0] : null;\n\n    if (st.sent) {\n      const nome = (st.sentNome || '').split(' ')[0];\n      return `<div class=\"wrap\">\n        <div class=\"hero\">\n          ${hero ? `<div class=\"hero-bg\"><img src=\"${esc(hero.full)}\" alt=\"\"></div>` : ''}\n          <div class=\"hero-veil\"></div>\n          <div class=\"inner done\">\n            <img class=\"logo\" src=\"${LOGO}\" alt=\"TEMPO by Porsche\" style=\"height:24px;margin-bottom:36px\">\n            <div class=\"mark\">✓</div>\n            <div class=\"eyebrow\">Pedido recebido</div>\n            <h1>Obrigado${nome ? ',<br><em>' + esc(nome) + '</em>' : ''}.</h1>\n            <div class=\"recap\">\n              <div><dt>Evento</dt><dd>${esc(lbl(TIPOS, st.sentTipo))}</dd></div>\n              <div><dt>Data</dt><dd>${esc(st.sentData || '—')}</dd></div>\n              <div><dt>Horário</dt><dd>${esc(st.sentHora || '—')}</dd></div>\n              <div><dt>Pessoas</dt><dd>${esc(st.sentPessoas || '—')}</dd></div>\n            </div>\n            <p>Nossa equipe responde em até 2 dias úteis com disponibilidade, formatos possíveis\n            e o orçamento. Se quiser adiantar alguma informação, escreva para\n            <a href=\"mailto:${MAIL}\">${MAIL}</a>.</p>\n            <button class=\"pill again\">Enviar outro pedido</button>\n          </div>\n        </div>\n      </div>`;\n    }\n\n    const chips = (group, opts, multi) => {\n      const cur = multi ? (st[group] || []) : (st[group] || '');\n      return opts.map((o) => {\n        const on = multi ? cur.indexOf(o.v) >= 0 : cur === o.v;\n        return `<button type=\"button\" class=\"chip${on ? ' on' : ''}\" data-g=\"${group}\" data-v=\"${o.v}\">${esc(o.t)}</button>`;\n      }).join('');\n    };\n\n    const pessoas = parseInt(form.pessoas, 10) || 0;\n    const overCap = pessoas > CAP_MAX;\n    const refExtra = REF_LABEL[st.referral];\n    const temTransmissao = (st.infra || []).indexOf('transmissao') >= 0;\n\n    const req = [\n      !!st.tipo, !!form.data, !!form.hora_inicio, pessoas > 0,\n      !!String(form.nome).trim(), !!String(form.email).trim(),\n      String(form.telefone).replace(/\\D/g, '').length >= 10, !!st.referral,\n    ];\n    const pct = Math.round((req.filter(Boolean).length / req.length) * 100);\n\n    const galeria = photos.slice(1, 5);\n    const strip = galeria.length\n      ? `<div class=\"strip\"><div class=\"sk\">O espaço</div><div class=\"sgrid\">${galeria.map((p, i) => `<div class=\"scell\" data-i=\"${i}\"><img src=\"${esc(p.thumb || p.full)}\" alt=\"\" loading=\"lazy\"></div>`).join('')}</div></div>`\n      : '';\n\n    const lbi = st.lb;\n    const lightbox = (lbi != null && galeria[lbi])\n      ? `<div class=\"lb\">\n          <div class=\"lbbg\"></div>\n          <img src=\"${esc(galeria[lbi].full)}\" alt=\"\">\n          <button class=\"lbx\">×</button>\n          ${galeria.length > 1 ? `<button class=\"lbnav lbprev\">‹</button><button class=\"lbnav lbnext\">›</button>\n          <div class=\"lbcount\">${lbi + 1} / ${galeria.length}</div>` : ''}\n        </div>`\n      : '';\n\n    return `<div class=\"wrap\">\n      <div class=\"nav\"><div class=\"nav-in\">\n        <img class=\"logo\" src=\"${LOGO}\" alt=\"TEMPO by Porsche\">\n        <a class=\"nav-mail\" href=\"mailto:${MAIL}\">${MAIL}</a>\n      </div></div>\n      <div class=\"prog\"><i style=\"width:${pct}%\"></i></div>\n\n      <div class=\"hero\">\n        ${hero ? `<div class=\"hero-bg\"><img src=\"${esc(hero.full)}\" alt=\"\"></div>` : ''}\n        <div class=\"hero-veil\"></div>\n        <div class=\"inner\">\n          <div class=\"eyebrow\">Eventos privados</div>\n          <h1>Reserve<br><em>o espaço</em></h1>\n          <div class=\"sub\">Conte o que você tem em mente, do formato à gastronomia, e voltamos\n          com a proposta. Arte, som, luz e cozinha no mesmo endereço.</div>\n          <div class=\"facts\">\n            <div class=\"fact\"><div class=\"fk\">Capacidade</div><div class=\"fv\">Até ${CAP_MAX} convidados</div></div>\n            <div class=\"fact\"><div class=\"fk\">Formatos</div><div class=\"fv\">Coquetel · Sentado · Auditório</div></div>\n            <div class=\"fact\"><div class=\"fk\">Resposta</div><div class=\"fv\">Em até 2 dias úteis</div></div>\n          </div>\n        </div>\n      </div>\n\n      <div class=\"inner\">\n\n        <div class=\"sec\">\n          <div class=\"sec-h\"><span class=\"sec-n\">01</span><span class=\"sec-t\">O evento</span>\n            <span class=\"sec-note\">obrigatório</span></div>\n\n          <div class=\"fld\">\n            <label>Tipo de evento</label>\n            <div class=\"chips${bad('tipo')}\">${chips('tipo', TIPOS, false)}</div>\n          </div>\n\n          <div class=\"row\">\n            <div class=\"fld\"><label>Data</label>\n              <input type=\"date\" class=\"f${bad('data')}\" data-k=\"data\" value=\"${esc(form.data)}\"></div>\n            <div class=\"fld\"><label>Início</label>\n              <input type=\"time\" class=\"f${bad('hora_inicio')}\" data-k=\"hora_inicio\" value=\"${esc(form.hora_inicio)}\"></div>\n            <div class=\"fld\"><label>Duração <span class=\"opt\">horas</span></label>\n              <input type=\"number\" min=\"1\" step=\"1\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"f\" data-k=\"duracao_horas\" value=\"${esc(form.duracao_horas)}\" placeholder=\"4\"></div>\n            <div class=\"fld\"><label>Pessoas</label>\n              <input type=\"number\" min=\"1\" inputmode=\"numeric\" pattern=\"[0-9]*\" class=\"f${bad('pessoas')}\" data-k=\"pessoas\" value=\"${esc(form.pessoas)}\" placeholder=\"80\"></div>\n          </div>\n\n          <div class=\"fld\" style=\"margin-top:20px\">\n            <div class=\"chips\">${chips('flex', [{ v: 'sim', t: 'Minha data é flexível' }], false)}</div>\n            <div class=\"note\">Marque se podemos sugerir outras datas próximas. Costuma abrir mais opções de estrutura.</div>\n          </div>\n\n          ${overCap ? `<div class=\"note warn\">Acima de ${CAP_MAX} convidados avaliamos caso a caso. Envie assim mesmo e retornamos com as opções.</div>` : ''}\n\n          <div class=\"fld\" style=\"margin-top:24px\">\n            <label>Formato da sala <span class=\"opt\">opcional</span></label>\n            <div class=\"chips\">${chips('formato', FORMATOS, false)}</div>\n          </div>\n        </div>\n\n        <div class=\"sec\">\n          <div class=\"sec-h\"><span class=\"sec-n\">02</span><span class=\"sec-t\">O espaço</span>\n            <span class=\"sec-note\">como você imagina a casa</span></div>\n          <div class=\"fld\">\n            <label>Exclusividade <span class=\"opt\">opcional</span></label>\n            <div class=\"chips\">${chips('exclusividade', EXCLUSIVIDADE, false)}</div>\n            <div class=\"note\">Em “área reservada”, o restante da casa segue em operação normal.</div>\n          </div>\n          <div class=\"info\">O prédio tem estacionamento com serviço de manobrista, cobrado à parte.</div>\n        </div>\n\n        <div class=\"sec\">\n          <div class=\"sec-h\"><span class=\"sec-n\">03</span><span class=\"sec-t\">Estrutura e ambientação</span>\n            <span class=\"sec-note\">o que precisa estar montado</span></div>\n\n          <div class=\"fld\">\n            <label>Infra audiovisual <span class=\"opt\">selecione quantos precisar</span></label>\n            <div class=\"chips\">${chips('infra', INFRA, true)}</div>\n          </div>\n\n          ${temTransmissao ? `<div class=\"cond\"><div class=\"fld\">\n            <label>Que transmissão você precisa?</label>\n            <input type=\"text\" class=\"f\" data-k=\"transmissao_desc\" value=\"${esc(form.transmissao_desc)}\"\n              placeholder=\"Ex.: live no YouTube, captação para redes, telão com apresentação…\">\n          </div></div>` : ''}\n\n          <div class=\"fld\" style=\"margin-top:24px\">\n            <label>Música <span class=\"opt\">opcional</span></label>\n            <div class=\"chips\">${chips('musica', MUSICA, false)}</div>\n          </div>\n          ${st.musica === 'outros' ? `<div class=\"cond\"><div class=\"fld\">\n            <label>Que tipo de música?</label>\n            <input type=\"text\" class=\"f\" data-k=\"musica_desc\" value=\"${esc(form.musica_desc)}\"\n              placeholder=\"Ex.: banda, pocket show acústico, playlist própria…\">\n          </div></div>` : ''}\n\n          <div class=\"fld\">\n            <label>Quer cenografia ou personalização de marca?</label>\n            <div class=\"chips\">${chips('ambient', SIMNAO, false)}</div>\n          </div>\n          ${st.ambient === 'sim' ? `<div class=\"cond\"><div class=\"fld\">\n            <label>O que você tem em mente?</label>\n            <textarea class=\"f\" data-k=\"ambientacao_desc\"\n              placeholder=\"Decoração, backdrop, totem, identidade visual da marca…\">${esc(form.ambientacao_desc)}</textarea>\n          </div></div>` : ''}\n        </div>\n\n        <div class=\"sec\">\n          <div class=\"sec-h\"><span class=\"sec-n\">04</span><span class=\"sec-t\">Gastronomia e bebidas</span>\n            <span class=\"sec-note\">o que vamos servir</span></div>\n\n          <div class=\"fld\">\n            <label>Formato do serviço <span class=\"opt\">opcional</span></label>\n            <div class=\"chips\">${chips('catering', CATERING, false)}</div>\n          </div>\n\n          <div class=\"fld\">\n            <label>Restrições alimentares <span class=\"opt\">opcional</span></label>\n            <input type=\"text\" class=\"f\" data-k=\"restricoes\" value=\"${esc(form.restricoes)}\"\n              placeholder=\"Ex.: 2 veganos, 1 sem glúten, alergia a frutos do mar…\">\n          </div>\n\n          <div class=\"fld\">\n            <label>Interesse em cardápio temático ou personalizado?</label>\n            <div class=\"chips\">${chips('cardapio', SIMNAO, false)}</div>\n          </div>\n          ${st.cardapio === 'sim' ? `<div class=\"cond\"><div class=\"fld\">\n            <label>Conte a ideia</label>\n            <input type=\"text\" class=\"f\" data-k=\"cardapio_desc\" value=\"${esc(form.cardapio_desc)}\"\n              placeholder=\"Tema, referência, prato que não pode faltar…\">\n          </div></div>` : ''}\n\n          <div class=\"fld\">\n            <label>Vai ter bebida alcoólica?</label>\n            <div class=\"chips\">${chips('alcool', SIMNAO, false)}</div>\n          </div>\n          ${st.alcool === 'sim' ? `<div class=\"cond\">\n            <div class=\"fld\">\n              <label>Preferências <span class=\"opt\">selecione quantas quiser</span></label>\n              <div class=\"chips\">${chips('bebidas', BEBIDAS, true)}</div>\n            </div>\n            <div class=\"fld\">\n              <label>Algum comentário sobre as bebidas? <span class=\"opt\">opcional</span></label>\n              <input type=\"text\" class=\"f\" data-k=\"bebidas_obs\" value=\"${esc(form.bebidas_obs)}\"\n                placeholder=\"Ex.: preferência por tintos, drink de assinatura, rótulo específico…\">\n            </div>\n          </div>` : ''}\n        </div>\n\n        <div class=\"quote\">\n          <div class=\"qk\">Sobre a casa</div>\n          <p>“Um ecossistema de encontros, curadoria e conteúdo, onde cultura, design\n          e lifestyle se cruzam para criar experiências que vão além do automóvel.”</p>\n        </div>\n\n        ${strip}\n\n        <div class=\"sec\">\n          <div class=\"sec-h\"><span class=\"sec-n\">05</span><span class=\"sec-t\">Contato</span>\n            <span class=\"sec-note\">para retornarmos</span></div>\n          <div class=\"row stack\">\n            <div class=\"fld\"><label>Nome completo</label>\n              <input type=\"text\" class=\"f${bad('nome')}\" data-k=\"nome\" value=\"${esc(form.nome)}\"></div>\n            <div class=\"fld\"><label>Cargo / função <span class=\"opt\">opcional</span></label>\n              <input type=\"text\" class=\"f\" data-k=\"cargo\" value=\"${esc(form.cargo)}\"></div>\n          </div>\n          <div class=\"row stack\" style=\"margin-top:24px\">\n            <div class=\"fld\"><label>Empresa / marca <span class=\"opt\">opcional</span></label>\n              <input type=\"text\" class=\"f\" data-k=\"empresa\" value=\"${esc(form.empresa)}\"></div>\n            <div class=\"fld\"><label>E-mail</label>\n              <input type=\"email\" class=\"f${bad('email')}\" data-k=\"email\" value=\"${esc(form.email)}\"></div>\n          </div>\n          <div class=\"row stack\" style=\"margin-top:24px\">\n            <div class=\"fld\"><label>Telefone / WhatsApp</label>\n              <input type=\"tel\" class=\"f${bad('telefone')}\" data-k=\"telefone\" value=\"${esc(form.telefone)}\" placeholder=\"+55 11 9…\"></div>\n          </div>\n        </div>\n\n        <div class=\"sec\">\n          <div class=\"sec-h\"><span class=\"sec-n\">06</span><span class=\"sec-t\">Últimos detalhes</span>\n            <span class=\"sec-note\">ajuda a acelerar a proposta</span></div>\n          <div class=\"fld\">\n            <label>Como você chegou até a TEMPO?</label>\n            <div class=\"chips${bad('referral')}\">${chips('referral', REFERRAL, false)}</div>\n          </div>\n          ${refExtra ? `<div class=\"cond\"><div class=\"fld\"><label>${esc(refExtra)}</label>\n            <input type=\"text\" class=\"f\" data-k=\"referral_detalhe\" value=\"${esc(form.referral_detalhe)}\"></div></div>` : ''}\n          <div class=\"fld\" style=\"margin-top:24px\">\n            <label>Mais alguma coisa? <span class=\"opt\">opcional</span></label>\n            <textarea class=\"f\" data-k=\"observacoes\" placeholder=\"Referências, pedidos especiais, convidados VIP, horário de acesso para fornecedores…\">${esc(form.observacoes)}</textarea>\n          </div>\n        </div>\n\n        <div class=\"foot\">\n          <button class=\"pill submit\"${st.sending ? ' disabled' : ''}>${st.sending ? 'Enviando…' : 'Enviar pedido'}</button>\n          ${st.err ? `<span class=\"err\">${esc(st.err)}</span>`\n            : `<span class=\"hint\">Ao enviar, você concorda que a equipe da TEMPO entre em contato sobre este pedido.</span>`}\n        </div>\n\n        <div class=\"end\">\n          <span class=\"addr\">${esc(ENDERECO)}</span>\n          <span><a href=\"mailto:${MAIL}\">${MAIL}</a> &nbsp;·&nbsp; <a href=\"${INSTAGRAM}\" target=\"_blank\" rel=\"noopener\">Instagram</a></span>\n        </div>\n      </div>\n\n      <button class=\"top-btn${st.scrolled ? ' show' : ''}\">↑</button>\n      ${lightbox}\n    </div>`;\n  },\n\n  mounted(d2) {\n    const API = d2.param('api') || 'reserva-espaco-api';\n    const GAL = d2.param('gallery') || 'deck-api';\n\n    (async () => {\n      try {\n        const res = await d2.rush(GAL).invoke({ action: 'gallery' });\n        const out = res && res.data !== undefined ? res.data : res;\n        const ph = (out && out.photos) || [];\n        if (ph.length) d2.state.photos = ph.slice(0, 5);\n      } catch (e) { d2.log('gallery off', e); }\n    })();\n\n    const w = d2.$('.wrap');\n    if (w) {\n      d2.on(w, 'scroll', () => {\n        const past = w.scrollTop > 700;\n        if (past !== !!d2.state.scrolled) d2.state.scrolled = past;\n      }, { passive: true });\n    }\n    d2.on('.top-btn', 'click', () => { const el = d2.$('.wrap'); if (el) el.scrollTo({ top: 0, behavior: 'smooth' }); });\n\n    const totalFotos = () => ((d2.state.photos || []).slice(1, 5)).length;\n    d2.on('.scell', 'click', (e, el) => { d2.state.lb = parseInt(el.dataset.i, 10); });\n    d2.on('.lbbg', 'click', () => { d2.state.lb = null; });\n    d2.on('.lbx', 'click', () => { d2.state.lb = null; });\n    d2.on('.lbprev', 'click', () => {\n      const n = totalFotos();\n      if (n) d2.state.lb = ((d2.state.lb || 0) - 1 + n) % n;\n    });\n    d2.on('.lbnext', 'click', () => {\n      const n = totalFotos();\n      if (n) d2.state.lb = ((d2.state.lb || 0) + 1) % n;\n    });\n    d2.on(window, 'keydown', (e) => {\n      if (d2.state.lb == null) return;\n      const n = totalFotos();\n      if (e.key === 'Escape') d2.state.lb = null;\n      else if (e.key === 'ArrowLeft' && n) d2.state.lb = ((d2.state.lb || 0) - 1 + n) % n;\n      else if (e.key === 'ArrowRight' && n) d2.state.lb = ((d2.state.lb || 0) + 1) % n;\n    });\n\n    const pctNow = () => {\n      const p = parseInt(form.pessoas, 10) || 0;\n      const req = [!!d2.state.tipo, !!form.data, !!form.hora_inicio, p > 0,\n        !!String(form.nome).trim(), !!String(form.email).trim(),\n        String(form.telefone).replace(/\\D/g, '').length >= 10, !!d2.state.referral];\n      return Math.round((req.filter(Boolean).length / req.length) * 100);\n    };\n\n    d2.on('.f', 'input', (e, el) => {\n      form[el.dataset.k] = el.value;\n      const bar = d2.$('.prog i');\n      if (bar) bar.style.width = pctNow() + '%';\n    });\n\n    d2.on('.chip', 'click', (e, el) => {\n      const g = el.dataset.g;\n      const v = el.dataset.v;\n      if (g === 'infra' || g === 'bebidas') {\n        const cur = (d2.state[g] || []).slice();\n        const i = cur.indexOf(v);\n        if (i >= 0) { cur.splice(i, 1); } else { cur.push(v); }\n        d2.state[g] = cur;\n      } else {\n        d2.state[g] = d2.state[g] === v ? '' : v;\n      }\n    });\n\n    d2.on('.again', 'click', () => {\n      Object.keys(form).forEach((k) => { form[k] = ''; });\n      d2.setState({\n        sent: false, tipo: '', formato: '', flex: '', exclusividade: '',\n        infra: [], musica: '', ambient: '', catering: '', cardapio: '',\n        alcool: '', bebidas: [], referral: '', errs: [], err: '', lb: null,\n      });\n    });\n\n    d2.on('.submit', 'click', async () => {\n      const st = d2.state;\n      const miss = [];\n      if (!String(form.nome).trim()) miss.push('nome');\n      if (!/^[^@\\s]+@[^@\\s]+\\.[^@\\s]+$/.test(String(form.email).trim())) miss.push('email');\n      if (String(form.telefone).replace(/\\D/g, '').length < 10) miss.push('telefone');\n      if (!form.data) miss.push('data');\n      if (!form.hora_inicio) miss.push('hora_inicio');\n      if (!(parseInt(form.pessoas, 10) > 0)) miss.push('pessoas');\n      if (!st.tipo) miss.push('tipo');\n      if (!st.referral) miss.push('referral');\n\n      if (miss.length) {\n        d2.setState({ errs: miss, err: 'Confira os campos destacados.' });\n        const first = d2.$('.bad');\n        if (first && first.scrollIntoView) first.scrollIntoView({ behavior: 'smooth', block: 'center' });\n        return;\n      }\n\n      d2.setState({ errs: [], err: '', sending: true });\n      try {\n        const temTransmissao = (st.infra || []).indexOf('transmissao') >= 0;\n        const res = await d2.rush(API).invoke({\n          action: 'submit',\n          nome: String(form.nome).trim(),\n          email: String(form.email).trim(),\n          telefone: String(form.telefone).trim(),\n          empresa: String(form.empresa).trim(),\n          cargo: String(form.cargo).trim(),\n          tipo_evento: st.tipo,\n          data: form.data,\n          data_flexivel: st.flex === 'sim',\n          hora_inicio: form.hora_inicio,\n          duracao_horas: parseFloat(form.duracao_horas) || null,\n          pessoas: parseInt(form.pessoas, 10),\n          formato: st.formato || '',\n          exclusividade: st.exclusividade || '',\n          infraestrutura: st.infra || [],\n          transmissao_desc: temTransmissao ? String(form.transmissao_desc).trim() : '',\n          musica: st.musica || '',\n          musica_desc: st.musica === 'outros' ? String(form.musica_desc).trim() : '',\n          ambientacao: st.ambient === 'sim',\n          ambientacao_desc: st.ambient === 'sim' ? String(form.ambientacao_desc).trim() : '',\n          catering: st.catering || '',\n          restricoes: String(form.restricoes).trim(),\n          cardapio_personalizado: st.cardapio === 'sim',\n          cardapio_desc: st.cardapio === 'sim' ? String(form.cardapio_desc).trim() : '',\n          bebidas_alcoolicas: st.alcool === 'sim',\n          bebidas: st.alcool === 'sim' ? (st.bebidas || []) : [],\n          bebidas_obs: st.alcool === 'sim' ? String(form.bebidas_obs).trim() : '',\n          referral: st.referral,\n          referral_detalhe: String(form.referral_detalhe).trim(),\n          observacoes: String(form.observacoes).trim(),\n        });\n        const out = res && res.data !== undefined ? res.data : res;\n        if (out && out.ok) {\n          const el = d2.$('.wrap');\n          if (el) el.scrollTo({ top: 0 });\n          d2.setState({\n            sent: true,\n            sentNome: form.nome,\n            sentTipo: st.tipo,\n            sentData: form.data,\n            sentHora: form.hora_inicio,\n            sentPessoas: form.pessoas,\n          });\n        } else {\n          d2.state.err = 'Não conseguimos registrar agora. Tente de novo ou escreva para ' + MAIL + '.';\n        }\n      } catch (e) {\n        d2.log('submit err', e);\n        d2.state.err = 'Erro de conexão. Tente de novo em instantes.';\n      } finally {\n        d2.state.sending = false;\n      }\n    });\n  },\n};","at":"2026-08-14T18:12:10.339Z"}}}]}},{"reference":"ExternalComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"_id":"5f060d9b1ca96def42f3c40a","displayName":"Builder AuthStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"credentials":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"verifier":{"component":"data2-core-types@DataSetReference","params":{"reference":"UsersDataSet"}},"sessionShared":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},"email":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"nR6Q9d7qdaPtZhJ28Q8Dy"},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true,"reference":"yPCJBTKo8q1Mw0B_3Kpwl"},"component":"data2-core-types@ArtboardReference"}}},"session":[{"component":"data2-core-types@DataSetColumnReference","params":{"column":"name"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"email"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"password"}},{"component":"data2-core-types@DataSetColumnReference","params":{"column":"status"}}],"sessionMetadata":{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},{"params":{"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"active"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.status"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is active user"}]},"component":"data2-core-logical-operators@And","displayName":"is active and has _id"}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $user"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-primitives@String","params":{"content":"@data2.app"}},"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user.email"}}}}},"component":"data2-core-functions@Includes","displayName":"isData2User"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}},"component":"data2-core-flow@Step"},{"params":{"action":{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.d2_app"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"management"}}]},"component":"data2-core-functions@Includes","displayName":"isData2App Exception"},"resultName":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}},"component":"data2-core-flow@Step"},{"params":{"resultName":{"component":"data2-core-primitives@String","params":{"content":"has_access"}},"action":{"params":{"compare":{"params":{"components":[{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_user"}}}},{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"is_data2_app_exception"}}}}]},"component":"data2-core-logical-operators@Or"},"else":{"params":{"actions":[{"params":{"actions":[{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"component":"data2-core-logical-operators@Not"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check $metadata.system"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":"filter","args":[{"_id":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"compare":{"params":{"subject":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records.length"}}}}},"component":"data2-core-logical-operators@Not","displayName":"systems not found"},"then":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"}},"component":"data2-core-flow@If","displayName":"check system found"},{"params":{"actions":[{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"organization":{"component":"data2-core-types@Getter","params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"cursor.current.organization._id"}}}}}]},"component":"data2-core-types@Interaction"},{"params":{"module":{"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":"filter","args":[{"user":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$user._id"}}}},"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}}]},"component":"data2-core-types@Interaction"}]},"component":"data2-core-flow@Parallel"}]},"component":"data2-core-flow@Series","displayName":"common setup"},{"params":{"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"},"else":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"compare":{"params":{"components":{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"WuUa-VKHhW9uYU0E3-mJ8"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"mapper":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"system"}}],"body":{"params":{"expression":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.visibility"}}}},"defaultCase":{"params":{"content":false},"component":"data2-core-primitives@Boolean"},"cases":[{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"public"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"billing-owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}},{"component":"data2-core-primitives@String","params":{"content":"member"}}]},"component":"data2-core-functions@Includes","displayName":"has role with access"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"comparisonSubject":{"component":"data2-core-primitives@String","params":{"content":"collaborator"}}},"component":"data2-core-comparison-operators@Equal","displayName":"is collaborator"}]},"component":"data2-core-logical-operators@And","displayName":"is org member and collaborator"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is collaborator"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is collaborator and has system access"}]},"component":"data2-core-logical-operators@Or"}}},{"component":"data2-core-flow@Case","params":{"expression":{"component":"data2-core-primitives@String","params":{"content":"private"}},"value":{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"components":[{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal","displayName":"is org member"},{"params":{"pattern":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.role"}}}},"subject":[{"component":"data2-core-primitives@String","params":{"content":"owner"}},{"component":"data2-core-primitives@String","params":{"content":"admin"}}]},"component":"data2-core-functions@Includes","displayName":"is owner/admin"}]},"component":"data2-core-logical-operators@And","displayName":"has org member role with access"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is owner/admin"},{"params":{"components":[{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"Ok6Tsu5XkS7r8PyW_7TyW"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"member"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"member.organization._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system.organization._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"is org member"},{"params":{"array":{"params":{"module":{"disabled":false,"component":"data2-core-types@InteractiveModuleReference","params":{"reference":"NqKAY34n2ffFL64zamp7t"}},"prop":{"component":"data2-core-primitives@String","params":{"content":"data.records"}}},"component":"data2-core-types@Getter"},"filter":{"disabled":false,"component":"data2-core-functions@Function","params":{"parameters":[{"component":"data2-core-primitives@String","params":{"content":"access"}}],"body":{"params":{"subject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"access.system._id"}}}},"comparisonSubject":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"system._id"}}}}},"component":"data2-core-comparison-operators@Equal"}}}},"component":"data2-core-functions@ArrayFind","displayName":"has system access"}]},"component":"data2-core-logical-operators@And","displayName":"is member and has system access"}]},"component":"data2-core-logical-operators@Or","displayName":"is owner/admin or has system access"}}}]},"component":"data2-core-flow@Switch"}}}},"component":"data2-core-functions@ArrayMap"}},"component":"data2-core-logical-operators@And","displayName":"has org member for all systems in request"}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"then":{"params":{"content":true},"component":"data2-core-primitives@Boolean"}},"component":"data2-core-flow@If"}},"component":"data2-core-flow@Step"},{"params":{"then":{"system":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"$metadata.system"}}}}},"else":{"params":{"message":{"component":"data2-core-primitives@String","params":{"content":"Invalid Credentials"}},"code":{"component":"data2-core-primitives@String","params":{"content":"401"}}},"component":"data2-core-types@Error"},"compare":{"component":"data2-core-types@Reference","params":{"reference":{"component":"data2-core-primitives@String","params":{"content":"has_access"}}}}},"component":"data2-core-flow@If"}]},"component":"data2-core-flow@Series"},"sessionExpiresIn":{"component":"data2-core-primitives@Number","params":{"content":604800}},"sessionRenewal":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"identityProviders":[{"provider":{"component":"data2-core-primitives@String","params":{"content":"GOOGLE"}},"clientId":{"component":"data2-core-primitives@String","params":{"content":"55470861603-22pvfc1t49lp8cjnbfk71s5ct9hp1q1v.apps.googleusercontent.com"}}}]},"reference":"Data2BuilderAuthentication","updatedAt":"2026-08-06T19:31:23.557Z"},{"_id":"5f060ee51ca96def42f3fbd1","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"UsersTableDataSource"}},"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":1}}}},"reference":"UsersDataSet","updatedAt":"2026-03-04T21:16:40.291Z"},{"_id":"68f938cf5fb002e33752a43d","displayName":"InternalApplicationsAuthenticationStrategy","component":"data2-core@AuthenticationStrategy","system":"5e3b796d6228227ca637d0f4","params":{"resetPassword":{"resetEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}},"resetSuccessEmail":{"artboard":{"params":{"preventEvaluation":true},"component":"data2-core-types@ArtboardReference"}}},"verifier":{"disabled":false,"component":"data2-core-types@DataSetReference","params":{"reference":"InternalApplicationsVerifierDataSet"}},"password":{"disabled":false,"component":"data2-core-types@DataSetColumnReference","params":{"column":"secret"}},"credentials":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}],"session":[{"component":"data2-core-types@FieldReference","params":{"key":"application"}},{"component":"data2-core-types@FieldReference","params":{"key":"secret"}},{"component":"data2-core-types@FieldReference","params":{"key":"status"}}]},"reference":"InternalApplicationsAuthenticationStrategy","updatedAt":"2025-10-22T20:08:54.442Z","createdAt":"2025-10-22T20:04:31.198Z"},{"component":"data2-core@DataSet","reference":"SessionsDataSet","params":{"requiresConfirmation":false,"pk":"key","datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"data2sessionsdatasource"}}}},{"reference":"UsersTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"component":"data2-core@ServerSessionsDataSource","reference":"data2sessionsdatasource","params":{}},{"_id":"5f1600b70528b92601890f75","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ServiceComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ServiceComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:20.208Z","createdAt":"2020-07-20T20:38:15.436Z"},{"_id":"5f1602190528b92601890f7d","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":40000},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ComponentInstancesTableDataSource"}},"sort":{"_id":1},"pk":"_id","autoEdit":true,"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"ComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:07.089Z","createdAt":"2020-07-20T20:44:09.350Z"},{"_id":"5f16017f0528b92601890f7a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"FileComponentInstancesDataSet","updatedAt":"2023-08-03T16:08:18.193Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"5f1601990528b92601890f7b","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"ApplicationsTableDataSource"}},"pk":"_id","autoEdit":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"master":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"params":{"column":"_id"},"component":"data2-core-types@DataSetColumnReference"}},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"ApplicationsDataSet","updatedAt":"2022-12-13T21:51:13.995Z","createdAt":"2020-07-20T20:42:01.657Z"},{"_id":"5f16172a0528b92601890f85","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"pagination":{"size":{"component":"data2-core-primitives@Number","params":{"content":10000}}},"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"DataComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}},"policies":{"params":{"allowGet":{"component":"data2-core-primitives@Boolean","params":{"content":true}}},"component":"data2@hkXy-UhMjhyfptdE6_fpW"}},"reference":"DataComponentInstancesDataSet","updatedAt":"2025-11-06T21:07:12.831Z","createdAt":"2020-07-20T22:14:02.097Z"},{"_id":"60ddc1bbda3861ca65407c5a","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"domain":{"component":"data2-core-types@Reference","params":{"reference":"clientApplicationDomain"}}},"pagination":{"size":1},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"}},"reference":"OneFileComponentInstancesDataSet","updatedAt":"2022-02-09T19:44:38.036Z","createdAt":"2020-07-20T20:41:35.797Z"},{"_id":"63ee3d38b8c9838c62fb05fb","displayName":"DriveFileComponentInstancesDataSet","component":"data2-core@DataSet","system":"5e3b796d6228227ca637d0f4","params":{"datasource":{"component":"data2-core-types@DataSourceReference","params":{"reference":"FileComponentInstancesTableDataSource"}},"pk":"_id","autoEdit":true,"filter":{"component":{"component":"data2-core-primitives@String","params":{"content":"data2-core@Drive"}}},"master":{"params":{"dataset":{"component":"data2-core-types@DataSetReference","params":{"reference":"SystemsDataSet"}},"localField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"system"}},"masterField":{"component":"data2-core-types@DataSetColumnReference","params":{"column":"_id"}}},"component":"data2-core-types@DataSetMaster"},"autoSelect":{"component":"data2-core-primitives@Boolean","params":{"content":false}}},"reference":"DriveFileComponentInstancesDataSet","updatedAt":"2025-12-04T21:58:32.367Z","createdAt":"2023-02-16T14:27:07.797Z"},{"reference":"ServiceComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"ComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a7f3182e811f18f500dccf3","component":"data2-core-primitives@Artboard","system":"6a45d210b5865956b508ba84","displayName":"Form de Reserva do Espaço","params":{"title":{"component":"data2-core-primitives@String","params":{"content":"Form de Reserva do Espaço"}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}},"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0}}},"reference":"e4p-ALbhdVEHo97MQeG7s","deleteMetadata":{}},{"_id":"9ba0f83644121756eaf5dae6","parent":"6a7f3182e811f18f500dccf3","component":"tempo@reserva-form","system":"6a45d210b5865956b508ba84","displayName":"FormReservaEspaco","params":{"api":"reserva-espaco-api","super":{"position":{"component":"data2-core-types@Position","params":{"x":0,"y":0,"freeTransform":true,"left":true,"right":true,"top":true,"bottom":true}},"dimensions":{"component":"data2-core-types@Dimensions","params":{"width":1440,"height":900}}},"gallery":"deck-api"},"reference":"WpwZBIRhgMfA0dLx6eDql","deleteMetadata":{}}]}},{"_id":"5fc4faeec8da12be8bf3d08a","component":"data2-core@Data2TableDataSource","system":"5e3b796d6228227ca637d0f4","params":{"paginate":{"default":1000},"super":{},"table":"fileComponentInstances","schema":[{"component":"data2-core-types@Field","params":{"key":"component","title":"Component","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"system","title":"System","component":"data2-core-primitives@ObjectId"}},{"component":"data2-core-types@Field","params":{"key":"displayName","title":"Display Name","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":"params","title":"Params","component":"data2-core-primitives@Object"}},{"component":"data2-core-types@Field","params":{"key":"reference","title":"Reference","component":"data2-core-primitives@String"}},{"component":"data2-core-types@Field","params":{"key":{"component":"data2-core-primitives@String","params":{"content":"fileId"}},"title":"File ID","component":"data2-core-primitives@ObjectId"},"break":true}],"hooks":{"before":{"all":[{"hook":"softDelete"}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"timestamp","options":{"fields":["createdAt","updatedAt"]}}],"update":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}],"patch":[{"hook":"timestamp","options":{"fields":["updatedAt"]}}]},"after":{"all":[{"hook":"fileUrl","options":{"downloadField":"params.fileUrl","uploadField":"params.uploadFileUrl","enhanceSchema":false}}],"find":[{"hook":"useCache","options":{"additionalGroupKeys":["$and.0.system","$and.1.system"],"skipCache":true}}],"create":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"update":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"patch":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}],"remove":[{"hook":"invalidateCache","options":{"additionalGroupKeys":["system"],"secondaryUniqueKeys":["reference"]}},{"hook":"invalidateEnvCache"}]}},"multi":["create"],"useEstimatedDocumentCount":true},"reference":"FileComponentInstancesTableDataSource","updatedAt":"2022-12-19T20:42:51.837Z","createdAt":"2020-11-30T13:59:52.294Z"},{"reference":"ApplicationsTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[{"_id":"6a7f385364afb382c92a09df","displayName":"Eventos TEMPO","reference":"dV72VkOBCrJF-uz-qvDXI","params":{"responseHeaders":{"X-Frame-Options":{"params":{"content":""},"component":"data2-core-primitives@String"},"Content-Security-Policy":{"params":{"content":""},"component":"data2-core-primitives@String"},"X-XSS-Protection":{"params":{"content":""},"component":"data2-core-primitives@String"}},"domain":{"component":"data2-core-primitives@String","params":{"content":"evento"}},"name":{"component":"data2-core-primitives@String","params":{"content":"TEMPO · Eventos Privados"}},"entryPoint":{"params":{"component":"data2-core-primitives@Artboard","reference":"e4p-ALbhdVEHo97MQeG7s"},"component":"data2-core-types@ComponentInstanceReference"},"shortName":{"component":"data2-core-primitives@String","params":{"content":"TEMPO · Eventos"}},"serverSideRendering":{"component":"data2-core-primitives@Boolean","params":{"content":true}},"icon":"https://tempobyporsche.com/wp-content/uploads/2026/03/logo-tempo-social.webp","appIcon":{"component":"data2-core-primitives@String","params":{"content":"https://tempobyporsche.com/wp-content/uploads/2026/03/logo-tempo-social.webp"}},"image":{"component":"data2-core-primitives@String","params":{"content":"https://tempobyporsche.com/wp-content/uploads/2026/03/logo-tempo-social.webp"}},"themeColor":{"component":"data2-core-types@Color","params":{"rgba":"#0a0a0b"}},"backgroundColor":{"component":"data2-core-types@Color","params":{"rgba":"#0a0a0b"}},"language":{"component":"data2-core-primitives@String","params":{"content":"pt-BR"}},"display":{"component":"data2-core-primitives@String","params":{"content":"browser"}},"description":{"component":"data2-core-primitives@String","params":{"content":"Reserve o espaço da TEMPO by Porsche para eventos privados — até 200 convidados, com estrutura audiovisual e gastronomia. Envie seu pedido e retornamos em até 2 dias úteis."}}},"system":"6a45d210b5865956b508ba84","component":"data2-core-primitives@Application"}]}},{"reference":"DataComponentInstancesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}},{"reference":"BundlesTableDataSource","component":"data2-core@MemoryDataSource","params":{"initialData":[]}}],"processesParams":{}}}}