From LA to Your Table — Chef Júlio Carneiro
Chef Júlio Carneiro finalizando o empratamento à mesa

JÚLIO CARNEIRO  /  PRIVATE CHEF

DE UM PRIVATE CHEF DO VALE DO SILÍCIO E DE LOS ANGELES

Você já sabe receber. O que falta é o que acontece entre a porta e a sobremesa.

As 13 receitas do menu que eu sirvo para bilionários do Vale do Silício e celebridades do entretenimento em Los Angeles, com o guia de empratamento que faz a mesa parar antes da primeira garfada.

Entrada empratada
Prato principal empratado
Sobremesa empratada

ENTRADA  /  PRINCIPAL  /  SOBREMESA

A noite começa antes do primeiro prato.

+400 jantares executados Private chef de bilionários do Vale do Silício e de celebridades em Los Angeles Culinary Institute of America

Mesa de jantar montada ao ar livre

ASSISTA ANTES DE CONHECER O MENU

QUERO O MENU COMPLETO

[PREÇO COM DESCONTO] à vista ou [Nº DE PARCELAS]× de [VALOR DA PARCELA]

40% DE DESCONTO ATÉ [PRAZO DA OFERTA]

O jantar que você já sabe dar não é o jantar que eles vão lembrar.

As receitas que você irá surpreender seus convidados

Amuse bouche: mil folhas de batata douradaAMUSE BOUCHE: MIL FOLHAS DE BATATA DOURADA COM CREME AZEDO E CIBOULETTEABERTURASVer Ingredientes ✦
Smoked salmon board + breadSMOKED SALMON BOARD + BREADABERTURASVer Ingredientes ✦
Crudo de peixe branco com crocante de arrozCRUDO DE PEIXE BRANCO COM CROCANTE DE ARROZABERTURASVer Ingredientes ✦
Costela braseada ao vinho tintoCOSTELA BRASEADA AO VINHO TINTOPRATOS PRINCIPAISVer Ingredientes ✦
Frango piccataFRANGO PICCATAPRATOS PRINCIPAISVer Ingredientes ✦
Salmão glaceado ao molho de missô e melSALMÃO GLACEADO AO MOLHO DE MISSÔ E MELPRATOS PRINCIPAISVer Ingredientes ✦
Salada composta de acompanhamentoSALADA COMPOSTA DE ACOMPANHAMENTOGUARNIÇÕESVer Ingredientes ✦
Espaguete scampi ao vôngoleESPAGUETE SCAMPI AO VÔNGOLE COM CAMARÕES GRELHADOS, LIMÃO SICILIANO E PARMESÃOPRATOS PRINCIPAISVer Ingredientes ✦
Cenouras assadas com mel de ervas e coalhada secaCENOURAS ASSADAS COM MEL DE ERVAS E COALHADA SECAGUARNIÇÕESVer Ingredientes ✦
Purê de batata profissionalPURÊ DE BATATA PROFISSIONALGUARNIÇÕESVer Ingredientes ✦
Couscous marroquino com amêndoas e ervas frescasCOUSCOUS MARROQUINHO COM AMÊNDOAS E ERVAS FRESCASGUARNIÇÕESVer Ingredientes ✦
1 massa, 3 receitas1 MASSA, 3 RECEITASCOMPOSIÇÃO DE MESA:Ver Ingredientes ✦
Quiche de alho-poróQUICHE DE ALHO-PORÓCOMPOSIÇÃO DE MESA:Ver Ingredientes ✦
Galette de maçãGALETTE DE MAÇÃCOMPOSIÇÃO DE MESA:Ver Ingredientes ✦
Egg salad sandwichEGG SALAD SANDWICHCOMPOSIÇÃO DE MESA:Ver Ingredientes ✦
Banana flambada com sorvete e farofa de paçocaBANANA FLAMBADA COM SORVETE E FAROFA DE PAÇOCASOBREMESSASVer Ingredientes ✦
Bolo de festa com compota de frutasBOLO DE FESTA COM COMPOTA DE FRUTASSOBREMESSASVer Ingredientes ✦
QUERO O MENU COMPLETO

O RECONHECIMENTO  /  O INIMIGO

Ninguém nunca reclamou da sua comida. E esse é exatamente o problema.

Você recebe bem. Cozinha bem, provavelmente melhor que a maioria dos seus amigos.

Chega gente e você já sabe o que vai fazer, porque é o que você sempre faz. A tábua de frios de entrada. O prato principal que você domina de olhos fechados. Uma boa garrafa.

Tudo vai pra mesa de uma vez, cada um se serve, senta, come. Em quarenta minutos acabou e a galera já está no sofá.

Foi bom. Todo mundo elogiou. Alguém disse
"está ótimo".

E no dia seguinte ninguém comentou nada.

Comida boa todo mundo já comeu. Ninguém guarda na memória mais um jantar agradável. O que fica na cabeça das pessoas é a primeira vez que elas viram alguma coisa que não esperavam ver na casa de um amigo.

Prato assinatura empratado
Sobremesa finalizada
Detalhe da execução em cozinha

“Foi bom” não é o mesmo que “eu ainda estou pensando nisso”.

Você não precisa aprender a cozinhar. Precisa de repertório novo, e de saber apresentá-lo.

QUERO O MENU COMPLETO

Por que procurar receita nova quase nunca resolve.

Receita nova troca o prato, e o prato não é onde a noite se perde. O que faz um jantar ser esquecível é ele acontecer de uma vez só: tudo chega junto, todo mundo se serve junto, acaba junto. Sem sequência não tem momento, e o que as pessoas guardam é momento.

Em toda casa onde eu trabalho, a noite acontece em tempos. Uma coisa de cada vez, e cada uma com um efeito próprio.

Mesa completa montada para o jantar
Preparação de entradas
Pães e acompanhamentos

01  /  A CHEGADA

O convidado entra e já recebe alguma coisa na mão.

Antes de sentar, antes de qualquer conversa começar. Uma mil folhas de batata dourada com creme azedo, uma por pessoa. Chama amuse bouche, e é assim que restaurante bom recebe.

02  /  A ENTRADA

A entrada chega à mesa montada, não servida.

É o que faz a pessoa parar e olhar antes de encostar o garfo, antes mesmo de saber se está bom.

03  /  O PRINCIPAL

O principal sai empratado, prato a prato.

Ou em family style, se a noite pedir intimidade. Ou em buffet, se for muita gente. Cada formato tem uma logística e uma ambientação, e escolher certo muda a noite inteira.

04  /  O FINAL

E a sobremesa você acende na frente deles.

É o momento em que a mesa para de falar e todo mundo pega o celular.

QUERO O MENU COMPLETO

Quatro decisões que você pode testar no próximo jantar, sem comprar nada.

Nenhuma delas muda o que você cozinha. Todas mudam o que o convidado sente quando o prato chega à mesa.

01

Um protagonista

Escolha uma estrela do prato e rebaixe todo o resto. Prato onde tudo compete é prato onde nada brilha.

02

No máximo três cores

A quarta vira ruído visual. Duas cores e um contraste já resolvem quase todo prato.

03

Três alturas

Base embaixo, proteína em cima, verde por último. Sem altura é travessa. Com altura é composição.

04

Borda vazia

O espaço em volta é o que o olho lê como escolha, e não como sobra. Nunca encha até a borda.

Faz isso no mesmo prato de sempre, no próximo jantar, e repara em quem pega o celular antes de comer.

Jantar em Tempos™

Mesma casa, mesmas pessoas, mesmo orçamento, e uma noite que passa a ter atos.

Execução de um jantar privado
Serviço em andamento

EXECUÇÃO REAL  /  PRIVATE DINNER

01  /  ANTES
PREPARAR

02  /  DURANTE
CONDUZIR

03  /  DEPOIS
MARCAR

QUERO O MENU COMPLETO
Retrato do chef Júlio Carneiro

04 / QUEM EU COZINHO, E POR QUE ELES ME CHAMAM DE VOLTA

Julio Carneiro

Eu sou private chef de bilionários do Vale do Silício e de celebridades do entretenimento em Los Angeles. São cinco anos entrando nessas casas com uma caixa de ingredientes e saindo depois que o último convidado foi embora.

E tem um detalhe que diz mais que os números: as maiores agências de staffing privado dos Estados Unidos me mandam trabalho. The Help Company, Pocketbook Agency, SLG Group, Hire Society. São elas que decidem qual chef entra na casa de quem pode contratar qualquer um.

Só que eu não vim de casa de chef. Meus pais tinham uma barraca de pastel numa esquina. Eu andava quarenta minutos por uma estrada de terra para chegar na escola, com um par de sapatos extra na mochila para não chegar sujo.

Aos 16 anos entrei como jovem aprendiz num hotel de luxo construído dentro da minha própria comunidade. Foi a primeira vez que eu vi um prato sair da cozinha montado, e fiquei parado olhando.

Vim para os Estados Unidos aos 20 anos, com trinta dólares no bolso, e trabalhei dois anos juntando dinheiro para estudar no Culinary Institute of America. Hoje tenho empresa própria registrada por lá, a Caju Food.

Nada do que eu vou te ensinar aqui veio de berço nem de equipamento caro. Eu aprendi tudo depois, dentro de cozinha de gente que podia pagar o melhor do mundo.

"Essas famílias podem contratar qualquer chef do planeta, e me chamam de volta. Contrato renovado é o único depoimento que esse mercado dá."

+400

jantares e eventos
nos EUA, México e Brasil

+5 ANOS

cozinhando para famílias
do Vale do Silício

+40

contratos como private chef

US$ 200K

em contratos anuais de serviço

ALGUMAS DAS MESAS QUE EU SERVI

Elon Musk · Sundar Pichai · Peter Thiel · David O. Sacks · Larry Page
· Rupert Murdoch · Travis Kalanick · Alice Waters

FORMAÇÃO

Culinary Institute of America · Bacharelado e MBA em Gastronomia pela Mackenzie · Stanford University

NA IMPRENSA

Folha de S. Paulo · R7 / Record TV · case oficial de aluno de destaque do Mackenzie

COMO VOCÊ IRÁ RECEBER

Pratos Autorais do Chef

PRATOS AUTORAIS MONTAGEM HOSPITALIDADE MOMENTO
QUERO O MENU COMPLETO

O CURSO  /  12 AULAS

Empratado. Family style. Buffet.

Como escolher pelo número de convidados e pelo tipo de noite que você quer, com a logística e a ambientação completa de cada formato. É o módulo que transforma uma reunião em Jantar em Tempos.

Módulo: A arte de receber
Módulo: Boas-vindas à experiência
Módulo: Receitas
Módulo: Bebidas
Módulo: Definindo o formato do seu evento
Módulo: Parabéns e próximos passos
QUERO O MENU COMPLETO

O CURSO  /  12 AULAS

O que entra junto, e quanto custaria separado.

O BÔNUS QUE RESPONDE: “FICA GOSTOSO, MAS NÃO FICA BONITO”

Guia de Montagem,
Estética e Empratamento

Como definir o protagonista do prato, usar espaço negativo, escolher a louça certa, trabalhar altura e camadas, e combinar cores pela regra dos três tons. Mais como escalar tudo isso para family style e buffet.

De [VALOR ANCORADO 1]Gratuito

Aula do guia de empratamento aberta no tablet

Ebook: Drinks Brasileiros

PDF com drinks autorais que unem ingrediente brasileiro e apresentação internacional.

De [VALOR ANCORADO 2]Gratuito

Capa do ebook Drinks Brasileiros no tablet

20 RECEITAS SOFISTICADAS EM PDF / ALÉM DAS TREZE DO MENU

20 Receitas Sofisticadas
para Encantar

Vinte receitas além das treze do menu, no mesmo padrão, para montar jantar completo com mais variedade.

Vale [VALOR ANCORADO 3] sozinho.

De [VALOR ANCORADO 3]Gratuito

Cartões com as receitas sofisticadas do bônus
QUERO O MENU COMPLETO
Tábua de composição de mesa

O que muda no seu próximo jantar.

  1. 01

    Quem chega recebe alguma coisa na mão antes de sentar, e a noite começa diferente na porta.

  2. 02

    Os pratos vão à mesa montados, com a mesma lógica visual de restaurante.

  3. 03

    A noite tem sequência: uma coisa de cada vez, com um momento de virada no fim.

  4. 04

    Você tem um drink com a sua assinatura, que só existe na sua casa.

  5. 05

    E no dia seguinte, a conversa do grupo é sobre a sua casa.

A PERGUNTA QUE VOCÊ VAI OUVIR:

“Onde você aprendeu a fazer isso?”

QUERO O MENU COMPLETO

Tudo que entra, e por quanto.

Os seis módulos, os bônus e o chef Júlio Carneiro
MÓDULO 01Boas-vindas à experiência4 aulas + PDF
MÓDULO 02A arte de receber6 aulas
MÓDULO 03As receitas13 aulas
MÓDULO 04Bebidas4 aulas + 3 PDFs
MÓDULO 05Formatos de jantar12 aulas
MÓDULO 06Próximos passos2 aulas
BÔNUS 1Guia de estética e empratamento7 aulas · [VALOR ANCORADO 1]
BÔNUS 2Ebook Drinks BrasileirosPDF · [VALOR ANCORADO 2]
BÔNUS 320 Receitas SofisticadasPDF · [VALOR ANCORADO 3]

DE [PREÇO CHEIO] POR APENAS

[PREÇO COM DESCONTO]

ou [Nº DE PARCELAS]× de [VALOR DA PARCELA]

QUERO ENTRAR AGORA

Depois de [PRAZO DA OFERTA], o valor volta para [PREÇO CHEIO].

Sete dias para ver tudo por dentro antes de decidir.

Selo de garantia de 7 dias

O curso é gravado e está inteiro no ar desde o primeiro minuto. Em sete dias você assiste ao menu completo, abre os PDFs, vê o guia de empratamento e testa as quatro decisões do prato numa refeição comum da sua casa.

Se depois disso você achar que não serve, pede o reembolso dentro de sete dias e devolvemos tudo, sem pergunta nenhuma.

Você decide com o material na mão, não com a promessa dele.

QUERO ENTRAR AGORA

Antes de colocar a mesa,
tire o que ainda está no caminho.

Não precisa ser chef, mas este curso não é de cozinha básica. Não vou te ensinar a temperar carne ou cortar cebola. Ele foi feito para quem já cozinha e quer repertório novo e apresentação de outro nível. Se você já recebe em casa, o curso começa exatamente de onde você parou.

Não. Uma panela que vá ao forno, uma frigideira e pratos brancos resolvem a maior parte do menu. A minha cozinha é bonita, e nada do que eu ensino depende dela. O que muda o resultado é decisão, não equipamento.

De um jantar íntimo de quatro pessoas a um evento maior. É justamente para isso que existem os três formatos, empratado, family style e buffet, com a logística de cada um.

Não, o curso é totalmente gravado. Você assiste no seu ritmo, quantas vezes quiser, e volta na receita na hora de executar.

Sim. O menu foi montado com ingredientes que se compram em mercado comum.

O módulo de bebidas inclui um guia completo de mocktails sofisticados, com o mesmo cuidado dos coquetéis alcoólicos.

[TEMPO DE ACESSO].

' } ← VTurb, Panda, etc. // Deixe null para o player continuar apenas como imagem estática. vsl: null, /* ------------------------------------------------------- comportamento */ // false = só as perguntas aparecem; o lead clica para abrir a resposta. // true = todas as respostas visíveis de cara (como o Figma exibe o frame). faqComecaAberto: false, ctaFixaNoMobile: true // barra fixa de compra no rodapé em telas pequenas }; /* === MAIN SCRIPT (js/main.js) === */ /* ============================================================================ From LA to Your Table — comportamento da página de vendas ========================================================================= */ (function () { 'use strict'; var CFG = window.PAGE_CONFIG || {}; var DESKTOP_MIN = 1200; /* ========================================================================== 1 · ESCALA — mantém 1rem = viewport/192 usando a largura real do documento (clientWidth), sem contar a barra de rolagem. É isso que faz o desktop bater pixel a pixel com o Figma em 1920px. ====================================================================== */ function applyScale() { var w = document.documentElement.clientWidth; document.documentElement.style.setProperty('--vw', w + 'px'); } applyScale(); window.addEventListener('resize', applyScale, { passive: true }); window.addEventListener('orientationchange', applyScale); function isDesktop() { return document.documentElement.clientWidth >= DESKTOP_MIN; } /* ========================================================================== 2 · PLACEHOLDERS — troca os campos [ ... ] do Figma pelos valores do config.js. O que não estiver preenchido continua aparecendo como no design. ====================================================================== */ var TOKENS = { '[PREÇO CHEIO]': CFG.precoCheio, '[PREÇO COM DESCONTO]': CFG.precoComDesconto, '[Nº DE PARCELAS]': CFG.numeroParcelas, '[VALOR DA PARCELA]': CFG.valorParcela, '[PRAZO DA OFERTA]': CFG.prazoDaOferta, '[TEMPO DE ACESSO]': CFG.tempoDeAcesso, '[VALOR ANCORADO 1]': CFG.valorAncorado1, '[VALOR ANCORADO 2]': CFG.valorAncorado2, '[VALOR ANCORADO 3]': CFG.valorAncorado3 }; function fillTokens(root) { var pending = Object.keys(TOKENS).filter(function (k) { return TOKENS[k] !== null && TOKENS[k] !== undefined && TOKENS[k] !== ''; }); if (!pending.length) return; var walker = document.createTreeWalker(root, NodeFilter.SHOW_TEXT, null); var nodes = []; var n; while ((n = walker.nextNode())) { if (n.nodeValue.indexOf('[') !== -1) nodes.push(n); } nodes.forEach(function (node) { var text = node.nodeValue; pending.forEach(function (key) { if (text.indexOf(key) !== -1) text = text.split(key).join(TOKENS[key]); // versão em caixa alta usada nos eyebrows do design var upper = key.toUpperCase(); if (upper !== key && text.indexOf(upper) !== -1) { text = text.split(upper).join(String(TOKENS[key]).toUpperCase()); } }); if (text !== node.nodeValue) node.nodeValue = text; }); } fillTokens(document.body); /* ========================================================================== 3 · CTAs — aponta os botões para o checkout quando houver URL. ====================================================================== */ (function wireCtas() { var ctas = document.querySelectorAll('[data-cta]'); Array.prototype.forEach.call(ctas, function (el) { if (CFG.checkoutUrl) { el.setAttribute('href', CFG.checkoutUrl); el.setAttribute('rel', 'noopener'); } else if (el.hasAttribute('data-checkout')) { // sem checkout definido: os botões finais rolam até a oferta el.setAttribute('href', '#oferta'); } }); // rolagem suave nas âncoras internas document.addEventListener('click', function (e) { var a = e.target.closest && e.target.closest('a[href^="#"]'); if (!a) return; var id = a.getAttribute('href'); if (!id || id === '#') return; var target = document.querySelector(id); if (!target) return; e.preventDefault(); target.scrollIntoView({ behavior: 'smooth', block: 'start' }); }); })(); /* ========================================================================== 4 · MARQUEES — as faixas de pratos e a fileira de módulos. No Figma as duas fileiras são estáticas, com deslocamentos horizontais diferentes (data-offset). Aqui elas partem exatamente desses offsets e deslizam em sentidos opostos, em loop contínuo. ====================================================================== */ function initMarquees() { var marquees = document.querySelectorAll('[data-marquee]'); Array.prototype.forEach.call(marquees, function (mq) { var track = mq.querySelector('[data-marquee-track]'); if (!track) return; // fileira espelhada (fileira 2 das receitas) — clona os cards da fileira 1 var cloneFrom = mq.getAttribute('data-clone-from'); if (cloneFrom && !track.children.length) { var source = document.querySelector(cloneFrom + ' [data-marquee-track]'); if (source) { // só os cards originais — os duplicados do loop levam aria-hidden Array.prototype.forEach.call(source.children, function (child) { if (child.getAttribute('aria-hidden') === 'true') return; track.appendChild(child.cloneNode(true)); }); } } if (!track.children.length) return; var originals = Array.prototype.slice.call(track.children); var loopWidth = 0; var direction = mq.getAttribute('data-direction') === 'right' ? 1 : -1; var speed = parseFloat(mq.getAttribute('data-speed')) || 40; // px/s @1920 var offset = 0; var paused = false; var rafId = null; var last = 0; function measure() { // largura de uma volta = soma dos cards originais + gaps var styles = window.getComputedStyle(track); var gap = parseFloat(styles.columnGap || styles.gap) || 0; loopWidth = originals.reduce(function (sum, el) { return sum + el.getBoundingClientRect().width + gap; }, 0); } function fill() { // duplica até cobrir a viewport + uma volta inteira var need = mq.getBoundingClientRect().width + loopWidth; var guard = 0; while (track.scrollWidth < need && guard < 8) { originals.forEach(function (el) { var c = el.cloneNode(true); c.setAttribute('aria-hidden', 'true'); track.appendChild(c); }); guard++; } } function setup() { measure(); fill(); var start = parseFloat(mq.getAttribute('data-offset')) || 0; // o offset do Figma está em px de 1920; converte para a escala atual var rootPx = parseFloat(window.getComputedStyle(document.documentElement).fontSize) || 10; offset = (start / 10) * rootPx; // normaliza para dentro de uma volta if (loopWidth > 0) offset = offset % loopWidth; track.style.transform = 'translate3d(' + offset + 'px,0,0)'; } function tick(now) { if (!last) last = now; var dt = Math.min((now - last) / 1000, 0.05); last = now; if (!paused && loopWidth > 0) { var rootPx = parseFloat(window.getComputedStyle(document.documentElement).fontSize) || 10; offset += direction * speed * (rootPx / 10) * dt; if (offset <= -loopWidth) offset += loopWidth; if (offset >= 0) offset -= loopWidth; track.style.transform = 'translate3d(' + offset + 'px,0,0)'; } rafId = window.requestAnimationFrame(tick); } // pausa para ler: hover no desktop, toque e segure no celular mq.addEventListener('mouseenter', function () { paused = true; }); mq.addEventListener('mouseleave', function () { paused = false; }); mq.addEventListener('touchstart', function () { paused = true; }, { passive: true }); mq.addEventListener('touchend', function () { paused = false; }, { passive: true }); mq.addEventListener('touchcancel', function () { paused = false; }, { passive: true }); setup(); // só anima quando está visível na tela if ('IntersectionObserver' in window) { var io = new IntersectionObserver(function (entries) { entries.forEach(function (entry) { if (entry.isIntersecting) { if (!rafId) { last = 0; rafId = window.requestAnimationFrame(tick); } } else if (rafId) { window.cancelAnimationFrame(rafId); rafId = null; } }); }, { rootMargin: '200px 0px' }); io.observe(mq); } else { rafId = window.requestAnimationFrame(tick); } var resizeTimer; window.addEventListener('resize', function () { clearTimeout(resizeTimer); resizeTimer = setTimeout(setup, 180); }, { passive: true }); }); } if (!window.matchMedia('(prefers-reduced-motion: reduce)').matches) { initMarquees(); } else { // sem animação: apenas posiciona as fileiras no offset do Figma Array.prototype.forEach.call(document.querySelectorAll('[data-clone-from]'), function (mq) { var track = mq.querySelector('[data-marquee-track]'); var source = document.querySelector(mq.getAttribute('data-clone-from') + ' [data-marquee-track]'); if (track && source && !track.children.length) { Array.prototype.forEach.call(source.children, function (c) { track.appendChild(c.cloneNode(true)); }); } }); } /* ========================================================================== 5 · FAQ — acordeão. Começa só com as perguntas; o lead clica para abrir a resposta. Coloque faqComecaAberto: true no config para abrir tudo de cara. ====================================================================== */ (function initFaq() { var list = document.querySelector('[data-faq]'); if (!list) return; var items = list.querySelectorAll('.faq-item'); // padrão: todas fechadas — o lead abre a que interessa. // faqComecaAberto: true no config deixa tudo aberto, como o Figma mostra. var startOpen = CFG.faqComecaAberto === true; Array.prototype.forEach.call(items, function (item) { var btn = item.querySelector('.faq-q'); if (!startOpen) { item.classList.add('is-closed'); btn.setAttribute('aria-expanded', 'false'); } btn.addEventListener('click', function () { var closed = item.classList.toggle('is-closed'); btn.setAttribute('aria-expanded', closed ? 'false' : 'true'); }); }); })(); /* ========================================================================== 6 · PLAYER DA VSL — o poster vira o vídeo real no primeiro clique. ====================================================================== */ (function initPlayer() { var player = document.getElementById('vsl-player'); if (!player) return; function play() { var v = CFG.vsl; if (!v) return; var markup = ''; if (v.tipo === 'iframe' && v.src) { markup = ''; } else if (v.tipo === 'video' && v.src) { markup = ''; } else if (v.tipo === 'html' && v.html) { markup = v.html; } if (!markup) return; player.innerHTML = markup; player.removeAttribute('role'); player.removeAttribute('tabindex'); player.style.cursor = 'default'; } player.addEventListener('click', play); player.addEventListener('keydown', function (e) { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); play(); } }); })(); /* ========================================================================== 7 · REVELAÇÃO NO SCROLL Hero e VSL entram prontos; da 3ª seção em diante os elementos sobem e aparecem conforme entram na tela. A classe .rv é adicionada aqui, nunca no HTML: sem JS a página continua inteira e visível. ====================================================================== */ (function initReveal() { if (window.matchMedia('(prefers-reduced-motion: reduce)').matches) return; if (!('IntersectionObserver' in window)) return; // containers cujos filhos animam em cascata em vez do bloco inteiro var EXPAND = [ ['.mec__steps', '.mecstep'], ['.mec__rules', '.rulecard'], ['.stats__row', '.stat'], ['.res__list', 'li'], ['.pratos__pills', '.pill'], ['.faq__list', '.faq-item'] ]; var sections = Array.prototype.slice.call(document.querySelectorAll('.sec')); var targets = []; sections.slice(2).forEach(function (sec) { var canvas = sec.querySelector('.canvas'); if (!canvas) return; Array.prototype.forEach.call(canvas.children, function (child) { var kids = null; for (var i = 0; i < EXPAND.length; i++) { if (child.matches(EXPAND[i][0])) { kids = child.querySelectorAll(EXPAND[i][1]); break; } } if (kids && kids.length) { Array.prototype.push.apply(targets, Array.prototype.slice.call(kids)); } else { targets.push(child); } }); }); // um elemento com display:none nunca intersecta e ficaria preso invisível // se voltasse a aparecer (ex.: o brilho da oferta, escondido no mobile) targets = targets.filter(function (el) { return el.getClientRects().length > 0; }); targets.forEach(function (el) { el.classList.add('rv'); }); var io = new IntersectionObserver(function (entries) { // tudo que entrou na mesma leva sobe em cascata, de cima para baixo var shown = entries.filter(function (e) { return e.isIntersecting; }); shown.sort(function (a, b) { return a.boundingClientRect.top - b.boundingClientRect.top; }); shown.forEach(function (e, i) { e.target.style.transitionDelay = Math.min(i * 70, 350) + 'ms'; e.target.classList.add('is-in'); io.unobserve(e.target); }); }, { rootMargin: '0px 0px -12% 0px', threshold: 0 }); targets.forEach(function (el) { io.observe(el); }); })(); /* ========================================================================== 8 · CTA FIXA NO MOBILE — aparece depois do primeiro scroll, some quando a seção da oferta entra na tela. ====================================================================== */ (function initStickyBar() { var bar = document.querySelector('[data-sticky]'); if (!bar) return; if (CFG.ctaFixaNoMobile === false) { bar.remove(); return; } bar.hidden = false; var oferta = document.getElementById('oferta'); var overOffer = false; if (oferta && 'IntersectionObserver' in window) { new IntersectionObserver(function (entries) { overOffer = entries[0].isIntersecting; update(); }, { threshold: 0.02 }).observe(oferta); } function update() { if (isDesktop()) { bar.classList.remove('is-visible'); return; } var past = window.scrollY > window.innerHeight * 0.9; bar.classList.toggle('is-visible', past && !overOffer); } window.addEventListener('scroll', update, { passive: true }); window.addEventListener('resize', update, { passive: true }); update(); })(); /* ========================================================================== 9 · MODAL DE RECEITAS (COMPONENTE ESTILO APP STORE / MOTION.DEV) Ao clicar na foto/card de qualquer receita, abre o modal expansível com imagem, título, categoria, avaliação e lista completa de ingredientes. ====================================================================== */ (function initRecipeModal() { var RECIPES_DATA = { "1": { title: "AMUSE BOUCHE: MIL FOLHAS DE BATATA DOURADA COM CREME AZEDO E CIBOULETTE", cat: "ABERTURAS", img: "https://decola.company/wp-content/uploads/2026/08/Group-22_cvt.webp", ingredients: [ "Batata", "Manteiga", "Azeite de oliva", "Creme azedo (sour cream)", "Ciboulette", "Sal marinho", "Pimenta-do-reino", "Caviar (opcional)" ] }, "2": { title: "SMOKED SALMON BOARD + BREAD", cat: "ABERTURAS", img: "https://decola.company/wp-content/uploads/2026/08/Group-23_cvt.webp", ingredients: [ "Salmão defumado", "Cream cheese", "Pão artesanal", "Picles de cebola roxa", "Alcaparras", "Limão siciliano", "Dill", "Cebolinha", "Everything Bagel Seasoning", "Flores comestíveis", "Azeite de oliva" ] }, "3": { title: "CRUDO DE PEIXE BRANCO COM CROCANTE DE ARROZ", cat: "ABERTURAS", img: "https://decola.company/wp-content/uploads/2026/08/Group-24_cvt.webp", ingredients: [ "Peixe branco fresco", "Limão siciliano", "Limão-taiti", "Gengibre", "Azeite de oliva extravirgem", "Shoyu", "Rabanete", "Óleo de gergelim", "Pimenta fresca", "Ciboulette", "Coentro", "Arroz crocante", "Gergelim", "Flor de sal" ] }, "4": { title: "COSTELA BRASEADA AO VINHO TINTO", cat: "PRATOS PRINCIPAIS", img: "https://decola.company/wp-content/uploads/2026/08/Group-25_cvt.webp", ingredients: [ "Costela bovina", "Vinho tinto", "Caldo de carne", "Cenoura", "Cebola", "Salsão", "Alho", "Extrato de tomate", "Tomilho fresco", "Alecrim", "Louro", "Manteiga", "Azeite de oliva", "Salsa", "Sal marinho", "Pimenta-do-reino" ] }, "5": { title: "FRANGO PICCATA", cat: "PRATOS PRINCIPAIS", img: "https://decola.company/wp-content/uploads/2026/08/Group-26_cvt.webp", ingredients: [ "Peito de frango", "Farinha de trigo", "Manteiga", "Azeite de oliva", "Vinho branco", "Caldo de frango", "Limão siciliano", "Alcaparras", "Alho", "Manjericão fresco", "Salsa fresca", "Sal marinho", "Pimenta-do-reino" ] }, "6": { title: "SALMÃO GLACEADO AO MOLHO DE MISSÔ E MEL", cat: "PRATOS PRINCIPAIS", img: "https://decola.company/wp-content/uploads/2026/08/Group-27_cvt.webp", ingredients: [ "Salmão", "Missô branco", "Mel", "Shoyu", "Óleo de gergelim", "Manteiga", "Gengibre fresco", "Alho", "Limão", "Gergelim", "Cebolinha" ] }, "7": { title: "SALADA COMPOSTA DE ACOMPANHAMENTO", cat: "GUARNIÇÕES", img: "https://decola.company/wp-content/uploads/2026/08/Group-28_cvt.webp", ingredients: [ "Mix de folhas verdes", "Rúcula", "Radicchio", "Pepino", "Tomate-cereja", "Avocado", "Cebola roxa", "Ervas frescas", "Sementes tostadas", "Limão", "Azeite de oliva extravirgem", "Mostarda Dijon", "Mel", "Sal marinho", "Pimenta-do-reino" ] }, "8": { title: "ESPAGUETE SCAMPI AO VÔNGOLE COM CAMARÕES GRELHADOS, LIMÃO SICILIANO E PARMESÃO", cat: "PRATOS PRINCIPAIS", img: "https://decola.company/wp-content/uploads/2026/08/Group-29_cvt.webp", ingredients: [ "Espaguete", "Vôngole", "Camarões", "Vinho branco", "Manteiga", "Azeite de oliva", "Alho", "Limão siciliano", "Parmesão", "Salsa fresca", "Pimenta calabresa", "Sal marinho", "Pimenta-do-reino" ] }, "9": { title: "CENOURAS ASSADAS COM MEL DE ERVAS E COALHADA SECA", cat: "GUARNIÇÕES", img: "https://decola.company/wp-content/uploads/2026/08/Group-30_cvt.webp", ingredients: [ "Cenouras baby", "Coalhada seca", "Mel", "Manteiga", "Azeite de oliva", "Alho", "Tomilho fresco", "Alecrim", "Salsa fresca", "Limão siciliano", "Pistache tostado", "Sal marinho", "Pimenta-do-reino" ] }, "10": { title: "PURÊ DE BATATA PROFISSIONAL", cat: "GUARNIÇÕES", img: "https://decola.company/wp-content/uploads/2026/08/Group-31_cvt.webp", ingredients: [ "Batatas", "Manteiga", "Creme de leite fresco", "Iogurte grego", "Maionese", "Alho", "Sal marinho", "Pimenta-do-reino" ] }, "11": { title: "COUSCOUS MARROQUINHO COM AMÊNDOAS E ERVAS FRESCAS", cat: "GUARNIÇÕES", img: "https://decola.company/wp-content/uploads/2026/08/Group-32_cvt.webp", ingredients: [ "Couscous marroquino", "Amêndoas laminadas tostadas", "Caldo de legumes", "Manteiga", "Azeite de oliva", "Alho", "Cominho", "Páprica", "Coentro em pó", "Limão siciliano", "Salsa fresca", "Hortelã", "Ciboulette", "Sal marinho", "Pimenta-do-reino" ] }, "12": { title: "1 MASSA, 3 RECEITAS", cat: "COMPOSIÇÃO DE MESA", img: "https://decola.company/wp-content/uploads/2026/08/Group-33_cvt.webp", ingredients: [ "Farinha de trigo", "Manteiga", "Ovo", "Água gelada", "Sal", "Açúcar" ] }, "13": { title: "QUICHE DE ALHO-PORÓ", cat: "COMPOSIÇÃO DE MESA", img: "https://decola.company/wp-content/uploads/2026/08/Group-34_cvt.webp", ingredients: [ "Massa base", "Alho-poró", "Ovos", "Creme de leite fresco", "Queijo Gruyère", "Manteiga", "Noz-moscada", "Sal", "Pimenta-do-reino" ] }, "14": { title: "GALETTE DE MAÇÃ", cat: "COMPOSIÇÃO DE MESA", img: "https://decola.company/wp-content/uploads/2026/08/Group-35_cvt.webp", ingredients: [ "Massa base", "Maçãs", "Cream cheese", "Açúcar", "Baunilha", "Limão siciliano", "Canela", "Manteiga", "Açúcar mascavo", "Ovo para pincelar" ] }, "15": { title: "EGG SALAD SANDWICH", cat: "COMPOSIÇÃO DE MESA", img: "https://decola.company/wp-content/uploads/2026/08/Group-36_cvt.webp", ingredients: [ "Ovos", "Maionese", "Mostarda Dijon", "Ciboulette", "Salsão", "Dill fresco", "Limão", "Páprica defumada", "Pão de forma macio", "Manteiga", "Sal marinho", "Pimenta-do-reino" ] }, "16": { title: "BANANA FLAMBADA COM SORVETE E FAROFA DE PAÇOCA", cat: "SOBREMESAS", img: "https://decola.company/wp-content/uploads/2026/08/Group-37_cvt.webp", ingredients: [ "Banana", "Manteiga", "Cachaça", "Doce de leite", "Creme de leite fresco", "Canela", "Sorvete de baunilha", "Paçoca", "Flor de sal", "Limão" ] }, "17": { title: "BOLO DE FESTA COM COMPOTA DE FRUTAS", cat: "SOBREMESAS", img: "https://decola.company/wp-content/uploads/2026/08/Group-38_cvt.webp", ingredients: [ "Farinha de trigo", "Ovos", "Açúcar", "Manteiga", "Leite", "Baunilha", "Fermento químico", "Frutas vermelhas", "Limão siciliano", "Creme de leite fresco", "Mascarpone", "Açúcar de confeiteiro" ] } }; var modal = document.getElementById('recipe-modal'); if (!modal) return; var modalImg = document.getElementById('recipe-modal-img'); var modalCat = document.getElementById('recipe-modal-cat'); var modalTitle = document.getElementById('recipe-modal-title'); var modalIngredients = document.getElementById('recipe-modal-ingredients'); function openRecipeModal(id) { var data = RECIPES_DATA[id]; if (!data) return; if (modalImg) { modalImg.src = data.img; modalImg.alt = data.title; } if (modalCat) modalCat.textContent = data.cat; if (modalTitle) modalTitle.textContent = data.title; if (modalIngredients) { modalIngredients.innerHTML = data.ingredients.map(function (item) { return '
  • ' + item + '
  • '; }).join(''); } modal.classList.add('is-open'); modal.setAttribute('aria-hidden', 'false'); document.body.style.overflow = 'hidden'; } function closeRecipeModal() { modal.classList.remove('is-open'); modal.setAttribute('aria-hidden', 'true'); document.body.style.overflow = ''; } document.addEventListener('click', function (e) { var card = e.target.closest('.dishcard'); if (card) { var id = card.getAttribute('data-recipe-id'); if (id) { e.preventDefault(); openRecipeModal(id); return; } } if (e.target.closest('[data-close-recipe-modal]')) { closeRecipeModal(); } }); document.addEventListener('keydown', function (e) { if (e.key === 'Escape' && modal.classList.contains('is-open')) { closeRecipeModal(); return; } var card = e.target.closest && e.target.closest('.dishcard'); if (card && (e.key === 'Enter' || e.key === ' ')) { var id = card.getAttribute('data-recipe-id'); if (id) { e.preventDefault(); openRecipeModal(id); } } }); })(); })();