Calculadora do Intervalo Interjornada (Art. 66, da CLT)

Advogados
Versão 4.1 — Atualizado em Junho/2026

Calculadora do Intervalo Interjornada (Art. 66, CLT)

Apure a indenização pela supressão das 11 horas de descanso entre duas jornadas de trabalho, com demonstrativo mensal e parâmetros próprios para petição inicial trabalhista.

Petição Inicial
estimativa jurídica para formulação do pedido trabalhista
Art. 66 CLT
fundamento legal do intervalo mínimo entre jornadas
11h descanso
parâmetro legal de repouso interjornada consecutivo
60 meses
limite máximo de apuração pela prescrição quinquenal

A Calculadora Intervalo Interjornada CALTRAB foi atualizada para apurar a supressão das 11 horas mínimas de descanso entre duas jornadas de trabalho, conforme o art. 66 da CLT.

Objeto do Cálculo: estimar o pagamento das horas efetivamente suprimidas do intervalo interjornada, com aplicação do adicional configurado e geração de demonstrativo para análise jurídica, petição inicial, impressão, PDF e Excel.

Lógica: 11 horas (mínimo legal) - horas efetivamente descansadas = horas suprimidas. Amplitude máxima: 60 meses.

📅 Datas do Cálculo ℹ️ Informe o período inicial e final. Máximo de 60 meses (prescrição quinquenal).

🎉 Gestão de Feriados ℹ️ Selecione feriados para excluir dias não trabalhados do cálculo.

🚫 Períodos Não Trabalhados ℹ️Férias, licenças, etc. são dias sem violação.


💰 Remuneração e Parâmetros ℹ️Base de cálculo para o valor da hora extra.

Salário Mínimo

Utiliza os valores oficiais

Remuneração Fixa

Valor único para todo o período

Evolução Salarial

Valores por período específico

⚖️ Controvérsia Jurisprudencial — Adicional em Domingos e Feriados

Há divergência na jurisprudência quanto ao adicional aplicável à supressão do intervalo interjornada em domingos e feriados, uma vez que existem entendimentos no sentido de que o adicional de 100% é devido apenas nas hipóteses de efetiva prestação de horas extras, não sendo extensível ao intervalo suprimido, cuja natureza é indenizatória.

Ver fundamentação jurisprudencial

TRT-4 — AP 207508220185040122:

"A interpretação de que intervalos interjornadas suprimidos em dias de repouso semanal ou feriados devem ser pagos com adicional de 100% [...] não tem amparo legal."

TRT-2 — 10012720420175020303 SP (21/07/2022):

"Ainda que a remuneração das horas extras pelo trabalho em domingos e feriados seja devida em dobro, o mesmo não ocorre com o pagamento das horas extras fictas pelo intervalo [...] suprimido nesses mesmos dias, que é devido com acréscimo de 50%, não havendo previsão legal para aplicação de adicional de 100%."

ℹ️ Esta calculadora permite selecionar entre os percentuas de 50% e 100%. Recomenda-se a consulta à jurisprudência predominante no âmbito do respectivo TRT e do TST.

⏱️ Jornada e Descanso Usufruído ℹ️ Informe quantas horas o trabalhador efetivamente descansou entre o fim de uma jornada e o início da outra.

Instrução: Informe abaixo quantas horas de descanso o trabalhador teve (Ex: se saiu às 22h e voltou às 06h, descansou 8 horas). O sistema calculará automaticamente a diferença para as 11h legais.

* Se o dia for de folga ou feriado não trabalhado, deixe 11 ou mais (sem violação).

Horas de Descanso Usufruídas (Média por dia da semana):

Se folga, mantenha 11h
Ex: 8 horas
Se folga, mantenha 11h
Se trabalhou, informe descanso

⚠️ Atenção: Como você informou que há violação do intervalo aos domingos, informe abaixo em quantos domingos por mês ocorreu a violação:

Selecione "Todos" se a violação ocorreu em todos os domingos trabalhados, ou escolha o número específico (1, 2, 3 ou 4 domingos por mês).

Selecione os feriados trabalhados:

Demonstrativo Final (Art. 66 CLT)

Detalhamento Mês a Mês

Mês/AnoSal. MensalSal. HoraDias ÚteisDom/Feriados Trab.Total Mês
SupressãoValor Hora+50%DevidoSupressãoValor Hora+50%Devido
TOTAIS--0h00-R$ 0,000h00-R$ 0,00R$ 0,00
📖  Manual de Uso

📘 Calculadora Intervalo Interjornada: Guia Rápido do Art. 66 da CLT

O intervalo interjornada é o descanso mínimo de 11 horas consecutivas entre o fim de uma jornada e o início da seguinte, nos termos do art. 66 da CLT .

Quando esse período não é respeitado, pode haver condenação ao pagamento do tempo efetivamente suprimido, com adicional aplicável, conforme a construção jurisprudencial predominante no período pós-Reforma.

Na prática forense atual, o fundamento central do pedido deve se apoiar no art. 66 da CLT, na prova da jornada efetivamente cumprida e na apuração objetiva das horas faltantes até o mínimo legal de 11 horas.

Exemplo: se o empregado encerra a jornada às 23h e retorna às 7h, houve apenas 8 horas de descanso. Logo, a supressão corresponde a 3 horas.

Observação técnica: a antiga OJ nº 355 da SDI-1 do TST teve relevância histórica na evolução do tema, mas foi cancelada em 30/06/2025 . Por isso, recomenda-se evitar sua citação como fundamento vigente e priorizar a redação do art. 66 da CLT, a jurisprudência atual e o recorte prescricional do caso concreto.

📖 Ler artigo completo sobre intervalo interjornada

Perguntas Frequentes (FAQ)

É o período mínimo de descanso entre o término de uma jornada de trabalho e o início da seguinte. Está previsto no art. 66 da CLT, que exige 11 horas consecutivas para descanso entre duas jornadas. Trata-se de norma de proteção à saúde, higiene e segurança do trabalho.

A violação pode gerar o pagamento do período de descanso não usufruído. Para os fatos posteriores à Reforma Trabalhista, a jurisprudência mais recente tem aplicado, por analogia, a lógica do art. 71, § 4º, da CLT, limitando a reparação ao tempo efetivamente suprimido, acrescido do adicional aplicável (mínimo de 50%).

Depende do período analisado.

Até 10/11/2017: a construção jurisprudencial tradicional — baseada na antiga OJ nº 355 da SDI-1 do TST, cancelada em 30/06/2025 — tratava a parcela com natureza salarial e reflexos nas demais verbas.

A partir de 11/11/2017: predomina o entendimento de natureza predominantemente indenizatória, por aplicação analógica do art. 71, § 4º, da CLT, com a redação dada pela Lei nº 13.467/2017.

O cálculo envolve três etapas:

Passo 1: apurar quantas horas de descanso o trabalhador realmente teve entre uma jornada e outra.

Passo 2: comparar com o mínimo legal de 11 horas (diferença = horas suprimidas).

Passo 3: multiplicar as horas suprimidas pelo valor da hora acrescida do adicional aplicável.

Exemplo: saída às 23h, retorno às 7h = 8h de descanso → supressão de 3h. Salário R$ 2.200 ÷ 220 = R$ 10,00/h × 1,5 = R$ 15,00 × 3h = R$ 45,00/dia.

Em regra, não. O intervalo mínimo de 11 horas é medida de proteção à saúde e segurança, relacionada à integridade física do trabalhador. O entendimento predominante na jurisprudência trabalhista é de que sua redução não é admitida, nem mesmo por negociação coletiva.

Em regra, não. Na jornada 12x36 (art. 59-A da CLT), o descanso entre uma jornada e outra normalmente é superior a 11 horas, respeitando o art. 66 da CLT. A discussão pode surgir em situações excepcionais: convocação irregular, dobra de plantão ou desvirtuamento da escala.

A prova costuma girar em torno de cartões de ponto, escalas de trabalho, mensagens, ordens de serviço e prova testemunhal. O ônus probatório segue as regras gerais do processo do trabalho, sendo relevante a análise dos controles de jornada nos termos da Súmula 338 do TST.

Aplicam-se as regras gerais de prescrição trabalhista do art. 11 da CLT:

Prescrição quinquenal: podem ser cobradas parcelas dos últimos 5 anos (contados do ajuizamento da ação).

Prescrição bienal: após o fim do contrato, a ação deve ser proposta em até 2 anos.

Por isso, esta calculadora limita o período a 60 meses (5 anos).

CaracterísticaInterjornada (Art. 66)Intrajornada (Art. 71)
O que éDescanso ENTRE jornadasDescanso DURANTE a jornada
Duração mínima11 horas consecutivas1h (jornada +6h) ou 15min (4–6h)
Pode reduzir?Em regra, nãoSim, em casos específicos (art. 611-A)

Como regra, o intervalo é analisado dentro de cada contrato de trabalho individualmente. Assim, se o empregado encerra a jornada em uma empresa e inicia em outra antes de 11 horas, isso não gera automaticamente obrigação para um dos empregadores.

A análise pode ser diferente caso exista grupo econômico, unidade de comando, coemprego ou integração na gestão da mão de obra — hipóteses em que a situação pode ser examinada de forma mais ampla.

🎯 Quiz Jurídico – Intervalo Interjornada

Questões em nível avançado, inspiradas em provas da OAB, da Magistratura do Trabalho e do Ministério Público do Trabalho.

🧠 Flashcards – Intervalo Interjornada

Revisão rápida dos principais pontos jurídicos sobre o art. 66 da CLT e a evolução jurisprudencial do tema. Clique no card para revelar a resposta.

📖 Aprofunde o Tema

Publicamos um artigo completo sobre intervalo interjornada, com evolução jurisprudencial detalhada, distinção entre períodos pré e pós-Reforma, exemplos práticos de cálculo, análise da jornada 12x36 e prazo prescricional.

Ler artigo completo

⚖️ Calculadoras de Pedidos Iniciais — CALTRAB

Ferramentas gratuitas para estimar valores em Petições Iniciais Trabalhistas (Art. 840, § 1º, CLT).

✅ Responsabilidade Técnica

GB

Gilberto Braga

OAB/PR 111.943

Advogado Trabalhista e Auditor Fiscal do Trabalho aposentado, com mais de 30 anos de atuação em Direito do Trabalho. Especializado em cálculos trabalhistas.

FB

Flávia Braga

OAB/PR 74.320

Advogada Trabalhista e Previdenciarista, Mestre em Direito, Justiça e Desenvolvimento pelo Instituto Brasileiro de Ensino, Desenvolvimento e Pesquisa — IDP. Revisora jurídica do CALTRAB.

📧 Dúvidas ou sugestões: contato@caltrab.com
`); win.document.close(); win.focus(); setTimeout(() => { win.print(); win.close(); }, 300); }// --- HELPERS --- function parseDate(str) { if(!str) return null; const [y, m, d] = str.split('-').map(Number); return new Date(y, m-1, d); } function formatDate(date) { return date.toISOString().split('T')[0]; } function formatMoney(val) { return val.toLocaleString('pt-BR', {style: 'currency', currency: 'BRL'}); } function formatTime(mins) { const h = Math.floor(mins / 60); const m = Math.round(mins % 60); return `${h}h${m.toString().padStart(2, '0')}`; } function formatDateDisplay(dateString) { const [year, month, day] = dateString.split('-'); return `${day}/${month}/${year}`; }function getRemuneracao(date) { if (selectedRemuneracao === 'fixa') return parseFloat(document.getElementById('remuneracao-fixa').value) || 0; if (selectedRemuneracao === 'salario-minimo') { const year = date.getFullYear(); const month = date.getMonth(); if (year === 2023) return month < 4 ? 1302 : 1320; return salarioMinimoPorAno[year] || 1100; } if (selectedRemuneracao === 'evolucao') { const els = document.querySelectorAll('.periodo-salarial'); for(let el of els) { const ini = parseMMYYYY(el.querySelector('.periodo-inicio').value); const fim = parseMMYYYY(el.querySelector('.periodo-fim').value); const val = parseFloat(el.querySelector('.valor-salarial').value); const dtIni = new Date(ini[1], ini[0]-1, 1); const dtFim = new Date(fim[1], fim[0], 0); if (date >= dtIni && date <= dtFim) return val; } } return 0; }function parseMMYYYY(str) { const parts = str.split('/'); return [parseInt(parts[0]), parseInt(parts[1])]; } function getAllPossibleHolidays(y1, y2) { const holidays = []; // Feriados municipais configurados pelo usuário const municipais = []; for (let i = 1; i <= 4; i++) { const val = (document.getElementById(`feriado-municipal-${i}`)?.value || '').trim(); if (val && /^\d{2}\/\d{2}$/.test(val)) { const [dia, mes] = val.split('/').map(Number); if (mes >= 1 && mes <= 12 && dia >= 1 && dia <= 31) { municipais.push({ dia, mes, name: `Feriado Municipal ${i}` }); } } } for (let y = y1; y <= y2; y++) { feriadosFixos.forEach(d => holidays.push({ date: `${y}-${d}`, name: nomesFeriados[d] })); // Consciência Negra - feriado nacional a partir de 2024 (Lei 14.759/2023) if (y >= 2024) { holidays.push({ date: `${y}-11-20`, name: nomesFeriados['11-20'] }); } const pascoa = getPascoa(y); if(document.getElementById('feriado-sexta-santa').checked) holidays.push({ date: formatDate(addDays(pascoa, -2)), name: nomesFeriados['sexta-santa'] }); if(document.getElementById('feriado-corpus-christi').checked) holidays.push({ date: formatDate(addDays(pascoa, 60)), name: nomesFeriados['corpus-christi'] }); if(document.getElementById('feriado-carnaval-terca').checked) holidays.push({ date: formatDate(addDays(pascoa, -47)), name: nomesFeriados['carnaval'] }); // Segunda de Carnaval não trabalhada if(document.getElementById('carnaval-segunda-nao-trabalhado')?.checked) holidays.push({ date: formatDate(addDays(pascoa, -48)), name: 'Segunda de Carnaval' }); // Feriados municipais municipais.forEach(m => { const mm = String(m.mes).padStart(2,'0'); const dd = String(m.dia).padStart(2,'0'); holidays.push({ date: `${y}-${mm}-${dd}`, name: m.name }); }); } return holidays; } function getPascoa(year) { const a=year%19, b=Math.floor(year/100), c=year%100, d=Math.floor(b/4), e=b%4, f=Math.floor((b+8)/25), g=Math.floor((b-f+1)/3), h=(19*a+b-d-g+15)%30, i=Math.floor(c/4), k=c%4, l=(32+2*e+2*i-h-k)%7, m=Math.floor((a+11*h+22*l)/451), n=Math.floor((h+l-7*m+114)/31), p=(h+l-7*m+114)%31; return new Date(year, n-1, p+1); } function addDays(d, n) { return new Date(d.getTime() + n*86400000); }function getPeriodosNaoTrabalhados() { const arr = []; document.querySelectorAll('.periodo-nao-trabalhado').forEach(el => { const i = parseDate(el.querySelector('.data-inicio-nao-trab').value); const f = parseDate(el.querySelector('.data-fim-nao-trab').value); if(i && f) arr.push({i, f}); }); return arr; }function isDiaNaoTrabalhado(date, periodos) { for(let p of periodos) { if(date >= p.i && date <= p.f) return true; } return false; }function addPeriodoNaoTrabalhado() { const div = document.createElement('div'); div.className = 'periodo-nao-trabalhado'; div.innerHTML = ``; div.querySelector('button').onclick = () => div.remove(); document.getElementById('periodos-nao-trabalhados-container').appendChild(div); } function addPeriodoSalarial(first=false) { const div = document.createElement('div'); div.className = 'periodo-salarial'; let valorInicio = first ? '01/2021' : ''; if (!first) { const periodosExistentes = document.querySelectorAll('.periodo-salarial'); if (periodosExistentes.length > 0) { const fimAnterior = periodosExistentes[periodosExistentes.length - 1].querySelector('.periodo-fim').value; if (fimAnterior && fimAnterior.match(/^\d{2}\/\d{4}$/)) { let [mes, ano] = fimAnterior.split('/').map(Number); if (++mes > 12) { mes = 1; ano++; } valorInicio = `${mes.toString().padStart(2, '0')}/${ano}`; } } } div.innerHTML = ``; div.querySelector('button').onclick = () => div.remove(); document.getElementById('evolucao-salarial-container').appendChild(div); } function setupMasks() { document.addEventListener('input', e => { if(e.target.matches('.periodo-inicio, .periodo-fim, [id^="feriado-municipal"]')) { let v = e.target.value.replace(/\D/g,''); if(v.length > 2) v = v.slice(0,2)+'/'+v.slice(2,6); e.target.value = v; } }); }function populateFeriadosTrabalhados() { const container = document.getElementById('feriados-trabalhados-container'); container.innerHTML = ''; const d1 = parseDate(document.getElementById('data-inicial').value); const d2 = parseDate(document.getElementById('data-final').value); if(!d1 || !d2) return; const hols = getAllPossibleHolidays(d1.getFullYear(), d2.getFullYear()); const feriadosPorAno = {}; hols.forEach(h => { const hDate = parseDate(h.date); if(hDate >= d1 && hDate <= d2) { const ano = hDate.getFullYear(); if(!feriadosPorAno[ano]) feriadosPorAno[ano] = []; feriadosPorAno[ano].push(h); } }); const gridContainer = document.createElement('div'); gridContainer.className = 'feriados-por-ano-container'; Object.keys(feriadosPorAno).sort().forEach(ano => { const anoGrupo = document.createElement('div'); anoGrupo.className = 'feriados-ano-grupo'; anoGrupo.innerHTML = `
${ano}
`; const lista = document.createElement('div'); lista.className = 'feriados-ano-lista'; feriadosPorAno[ano].forEach(h => { const [ano, mes, dia] = h.date.split('-'); const div = document.createElement('div'); div.className = 'checkbox-item'; div.innerHTML = ``; lista.appendChild(div); }); anoGrupo.appendChild(lista); gridContainer.appendChild(anoGrupo); }); container.appendChild(gridContainer); // Listener toggle-all: marcar/desmarcar todos os feriados trabalhados const toggleAll = document.getElementById('feriados-toggle-all'); if (toggleAll) { toggleAll.replaceWith(toggleAll.cloneNode(true)); // remove listeners anteriores document.getElementById('feriados-toggle-all').addEventListener('change', function() { container.querySelectorAll('input[type="checkbox"]').forEach(cb => { cb.checked = this.checked; }); }); } }function showError(msg) { const el = document.getElementById('error-message'); el.textContent = msg; el.style.display = 'block'; } function showSuccess(msg) { const el = document.getElementById('success-message'); el.textContent = msg; el.style.display = 'block'; setTimeout(() => { el.style.display = 'none'; }, 5000); } function hideMessages() { ['error-message', 'success-message', 'info-message'].forEach(id => document.getElementById(id).style.display = 'none'); }function toggleDarkMode() { document.getElementById('caltrab-wrapper').classList.toggle('dark-mode'); const isDarkMode = document.getElementById('caltrab-wrapper').classList.contains('dark-mode'); CALTRAB_Storage.set('caltrab_dark_mode', isDarkMode ? '1' : '0'); darkModeToggle.innerHTML = isDarkMode ? '☀️' : '🌙'; } function loadDarkModePreference() { if (CALTRAB_Storage.get('caltrab_dark_mode') === '1') { document.getElementById('caltrab-wrapper').classList.add('dark-mode'); darkModeToggle.innerHTML = '☀️'; } }function clearForm() { if (!confirm('Tem certeza que deseja limpar todos os campos?')) return; document.getElementById('data-inicial').value = ''; document.getElementById('data-final').value = ''; document.getElementById('feriado-sexta-santa').checked = true; document.getElementById('feriado-corpus-christi').checked = true; document.getElementById('feriado-carnaval-terca').checked = true; ['feriado-municipal-1','feriado-municipal-2','feriado-municipal-3','feriado-municipal-4'].forEach(id => document.getElementById(id).value = ''); document.getElementById('periodos-nao-trabalhados-container').innerHTML = ''; document.getElementById('carnaval-segunda-nao-trabalhado').checked = false; document.getElementById('carnaval-terca-nao-trabalhado').checked = false; addPeriodoNaoTrabalhado(); document.querySelector('.remuneracao-option[data-option="salario-minimo"]').click(); document.getElementById('remuneracao-fixa').value = ''; document.getElementById('evolucao-salarial-container').innerHTML = ''; addPeriodoSalarial(true); document.getElementById('divisor').value = '220'; document.getElementById('adicional-dias-uteis').value = '50'; document.getElementById('adicional-dom-fer').value = '50'; ['domingo','segunda','terca','quarta','quinta','sexta'].forEach((d,i) => document.getElementById(`intervalo-${d}`).value = i === 0 ? '11' : '8'); document.getElementById('intervalo-sabado').value = '11'; document.getElementById('intervalo-feriados').value = '11'; document.getElementById('domingos-trabalhados-section').style.display = 'none'; document.getElementById('feriados-trabalhados-section').style.display = 'none'; resultsContainer.style.display = 'none'; showSuccess('Formulário limpo com sucesso!'); }// --- HISTÓRICO --- function saveToHistory(calculation) { let history = JSON.parse(CALTRAB_Storage.get('caltrab-interjornada-history') || '[]'); history.unshift(calculation); if (history.length > 10) history = history.slice(0, 10); CALTRAB_Storage.set('caltrab-interjornada-history', JSON.stringify(history)); } function loadCalculationHistory() { const history = JSON.parse(CALTRAB_Storage.get('caltrab-interjornada-history') || '[]'); const container = document.getElementById('history-list'); if (history.length === 0) { container.innerHTML = '

Nenhum cálculo no histórico.

'; return; } container.innerHTML = ''; history.forEach((item, index) => { let totalGeral = 0; for (const mesKey of Object.keys(item.resultados || {})) totalGeral += (item.resultados[mesKey].valSupUteis || 0) + (item.resultados[mesKey].valSupDomFer || 0); const historyItem = document.createElement('div'); historyItem.className = 'history-item'; historyItem.innerHTML = `
${formatDateDisplay(item.dataInicial)} a ${formatDateDisplay(item.dataFinal)} ${formatMoney(totalGeral)}
Divisor: ${item.divisor} | Adic. Úteis: ${item.adicionalUteis}% | Adic. Dom/Fer: ${item.adicionalDomFer || '50'}% | ${new Date(item.timestamp).toLocaleDateString('pt-BR')} ${new Date(item.timestamp).toLocaleTimeString('pt-BR')}
`; historyItem.addEventListener('click', function(e) { if (!e.target.classList.contains('history-delete-btn')) loadHistoryItem(item); }); container.appendChild(historyItem); }); container.querySelectorAll('.history-delete-btn').forEach(btn => btn.addEventListener('click', function(e) { e.stopPropagation(); if (confirm('Excluir este item do histórico?')) { let h = JSON.parse(CALTRAB_Storage.get('caltrab-interjornada-history') || '[]'); h.splice(parseInt(this.dataset.index), 1); CALTRAB_Storage.set('caltrab-interjornada-history', JSON.stringify(h)); loadCalculationHistory(); } })); } function loadHistoryItem(item) { document.getElementById('data-inicial').value = item.dataInicial; document.getElementById('data-final').value = item.dataFinal; document.getElementById('divisor').value = item.divisor; document.getElementById('adicional-dias-uteis').value = item.adicionalUteis; document.getElementById('adicional-dom-fer').value = item.adicionalDomFer || '50'; if (item.intervalos) { ['domingo','segunda','terca','quarta','quinta','sexta','sabado'].forEach((d, i) => document.getElementById(`intervalo-${d}`).value = item.intervalos[i]); document.getElementById('intervalo-feriados').value = item.intervalos[7]; } closeModal('history-modal'); showSuccess('Cálculo carregado do histórico!'); }// --- CONFIGURAÇÕES --- function saveCurrentConfig() { const configName = prompt('Digite um nome para esta configuração:'); if (!configName) return; const config = getCurrentConfig(); config.name = configName; config.date = new Date().toISOString(); let savedConfigs = JSON.parse(CALTRAB_Storage.get('caltrab-interjornada-configs') || '[]'); savedConfigs.push(config); CALTRAB_Storage.set('caltrab-interjornada-configs', JSON.stringify(savedConfigs)); loadSavedConfigs(); showSuccess('Configuração salva com sucesso!'); } function getCurrentConfig() { const config = { dataInicial: document.getElementById('data-inicial').value, dataFinal: document.getElementById('data-final').value, feriados: { sextaSanta: document.getElementById('feriado-sexta-santa').checked, corpusChristi: document.getElementById('feriado-corpus-christi').checked, carnavalTerca: document.getElementById('feriado-carnaval-terca').checked, municipal1: document.getElementById('feriado-municipal-1').value, municipal2: document.getElementById('feriado-municipal-2').value, municipal3: document.getElementById('feriado-municipal-3').value, municipal4: document.getElementById('feriado-municipal-4').value }, periodosNaoTrabalhados: { carnavalSegunda: document.getElementById('carnaval-segunda-nao-trabalhado').checked, carnavalTerca: document.getElementById('carnaval-terca-nao-trabalhado').checked }, periodosNaoTrabalhadosList: [], remuneracao: selectedRemuneracao, remuneracaoFixa: document.getElementById('remuneracao-fixa').value, divisor: document.getElementById('divisor').value, adicionalUteis: document.getElementById('adicional-dias-uteis').value, adicionalDomFer: document.getElementById('adicional-dom-fer').value, intervalos: { domingo: document.getElementById('intervalo-domingo').value, segunda: document.getElementById('intervalo-segunda').value, terca: document.getElementById('intervalo-terca').value, quarta: document.getElementById('intervalo-quarta').value, quinta: document.getElementById('intervalo-quinta').value, sexta: document.getElementById('intervalo-sexta').value, sabado: document.getElementById('intervalo-sabado').value, feriados: document.getElementById('intervalo-feriados').value }, domingosPorMes: document.getElementById('domingos-por-mes').value }; document.querySelectorAll('.periodo-nao-trabalhado').forEach(el => { config.periodosNaoTrabalhadosList.push({ inicio: el.querySelector('.data-inicio-nao-trab').value, fim: el.querySelector('.data-fim-nao-trab').value, motivo: el.querySelector('.motivo-nao-trab').value }); }); if (selectedRemuneracao === 'evolucao') { config.evolucaoSalarial = []; document.querySelectorAll('.periodo-salarial').forEach(el => { config.evolucaoSalarial.push({ inicio: el.querySelector('.periodo-inicio').value, fim: el.querySelector('.periodo-fim').value, valor: el.querySelector('.valor-salarial').value }); }); } return config; } function loadSavedConfigs() { const savedConfigs = JSON.parse(CALTRAB_Storage.get('caltrab-interjornada-configs') || '[]'); const container = document.getElementById('saved-configs-list'); if (savedConfigs.length === 0) { container.innerHTML = '

Nenhuma configuração salva.

'; return; } container.innerHTML = ''; savedConfigs.forEach((config, index) => { const configItem = document.createElement('div'); configItem.className = 'saved-config-item'; configItem.innerHTML = `
${config.name}
Salvo em: ${new Date(config.date).toLocaleDateString('pt-BR')}
`; configItem.addEventListener('click', function(e) { if (!e.target.classList.contains('delete-config-btn')) { loadConfigData(config); closeModal('config-modal'); showSuccess('Configuração carregada!'); } }); container.appendChild(configItem); }); container.querySelectorAll('.delete-config-btn').forEach(btn => btn.addEventListener('click', function(e) { e.stopPropagation(); if (confirm('Excluir esta configuração?')) { let configs = JSON.parse(CALTRAB_Storage.get('caltrab-interjornada-configs') || '[]'); configs.splice(parseInt(this.dataset.index), 1); CALTRAB_Storage.set('caltrab-interjornada-configs', JSON.stringify(configs)); loadSavedConfigs(); } })); } function loadConfigData(config) { if (config.dataInicial) document.getElementById('data-inicial').value = config.dataInicial; if (config.dataFinal) document.getElementById('data-final').value = config.dataFinal; if (config.feriados) { document.getElementById('feriado-sexta-santa').checked = config.feriados.sextaSanta; document.getElementById('feriado-corpus-christi').checked = config.feriados.corpusChristi; document.getElementById('feriado-carnaval-terca').checked = config.feriados.carnavalTerca; ['municipal1','municipal2','municipal3','municipal4'].forEach((m, i) => document.getElementById(`feriado-municipal-${i+1}`).value = config.feriados[m] || ''); } if (config.periodosNaoTrabalhados) { document.getElementById('carnaval-segunda-nao-trabalhado').checked = config.periodosNaoTrabalhados.carnavalSegunda; document.getElementById('carnaval-terca-nao-trabalhado').checked = config.periodosNaoTrabalhados.carnavalTerca; } if (config.remuneracao) { selectedRemuneracao = config.remuneracao; document.querySelectorAll('.remuneracao-option').forEach(o => o.classList.remove('selected')); document.querySelector(`.remuneracao-option[data-option="${config.remuneracao}"]`).classList.add('selected'); document.querySelectorAll('.remuneracao-inputs').forEach(el => el.classList.remove('active')); document.getElementById(config.remuneracao + '-inputs').classList.add('active'); } if (config.remuneracaoFixa) document.getElementById('remuneracao-fixa').value = config.remuneracaoFixa; if (config.divisor) document.getElementById('divisor').value = config.divisor; if (config.adicionalUteis) document.getElementById('adicional-dias-uteis').value = config.adicionalUteis; if (config.adicionalDomFer) document.getElementById('adicional-dom-fer').value = config.adicionalDomFer; if (config.intervalos) { ['domingo','segunda','terca','quarta','quinta','sexta','sabado','feriados'].forEach(d => { if (config.intervalos[d]) document.getElementById(`intervalo-${d}`).value = config.intervalos[d]; }); } if (config.domingosPorMes) document.getElementById('domingos-por-mes').value = config.domingosPorMes; document.getElementById('evolucao-salarial-container').innerHTML = ''; if (config.remuneracao === 'evolucao' && config.evolucaoSalarial && config.evolucaoSalarial.length > 0) { config.evolucaoSalarial.forEach(periodo => { const div = document.createElement('div'); div.className = 'periodo-salarial'; div.innerHTML = ``; div.querySelector('button').onclick = () => div.remove(); document.getElementById('evolucao-salarial-container').appendChild(div); }); } else { addPeriodoSalarial(true); } document.getElementById('periodos-nao-trabalhados-container').innerHTML = ''; if (config.periodosNaoTrabalhadosList && config.periodosNaoTrabalhadosList.length > 0) { config.periodosNaoTrabalhadosList.forEach(periodo => { const div = document.createElement('div'); div.className = 'periodo-nao-trabalhado'; div.innerHTML = ``; div.querySelector('.motivo-nao-trab').value = periodo.motivo || 'ferias'; div.querySelector('button').onclick = () => div.remove(); document.getElementById('periodos-nao-trabalhados-container').appendChild(div); }); } else { addPeriodoNaoTrabalhado(); } }// --- COMPARTILHAMENTO --- function shareCalculation() { try { const config = getCurrentConfig(); const jsonString = JSON.stringify(config); const base64String = btoa(unescape(encodeURIComponent(jsonString))); const url = window.location.origin + window.location.pathname + '?config=' + base64String; document.getElementById('share-url-textarea').value = url; openModal('share-modal'); } catch (e) { console.error('Erro ao gerar link:', e); showError('Erro ao gerar link de compartilhamento: ' + e.message); } } function loadConfigFromURL() { const urlParams = new URLSearchParams(window.location.search); const configData = urlParams.get('config'); if (configData) { try { const jsonString = decodeURIComponent(escape(atob(configData))); const params = JSON.parse(jsonString); loadConfigData(params); showSuccess('Configuração carregada da URL com sucesso!'); window.history.replaceState({}, document.title, window.location.pathname); } catch (e) { console.error('Falha ao carregar config da URL:', e); showError('Não foi possível carregar a configuração da URL.'); } } }// --- LAZY LOAD bibliotecas de exportação --- function carregarJsPDF(callback) { if (window.jspdf) { callback(); return; } const msgEl = document.getElementById('export-loading-msg'); if (msgEl) { msgEl.style.display = 'block'; msgEl.textContent = 'Carregando biblioteca PDF…'; } const s = document.createElement('script'); s.src = 'https://cdnjs.cloudflare.com/ajax/libs/jspdf/2.5.1/jspdf.umd.min.js'; s.onerror = () => { if (msgEl) { msgEl.style.display = 'block'; msgEl.textContent = 'Falha ao carregar PDF. Verifique sua conexão.'; msgEl.className = 'msg-erro'; } }; s.onload = () => { const s2 = document.createElement('script'); s2.src = 'https://cdnjs.cloudflare.com/ajax/libs/jspdf-autotable/3.5.31/jspdf.plugin.autotable.min.js'; s2.onerror = () => { if (msgEl) { msgEl.style.display = 'block'; msgEl.textContent = 'Falha ao carregar PDF. Verifique sua conexão.'; msgEl.className = 'msg-erro'; } }; s2.onload = () => { if (msgEl) msgEl.style.display = 'none'; callback(); }; document.head.appendChild(s2); }; document.head.appendChild(s); }function carregarXLSX(callback) { if (window.XLSX) { callback(); return; } const msgEl = document.getElementById('export-loading-msg'); if (msgEl) { msgEl.style.display = 'block'; msgEl.textContent = 'Carregando biblioteca Excel…'; } const s = document.createElement('script'); s.src = 'https://cdnjs.cloudflare.com/ajax/libs/xlsx/0.18.5/xlsx.full.min.js'; s.onerror = () => { if (msgEl) { msgEl.style.display = 'block'; msgEl.textContent = 'Falha ao carregar Excel. Verifique sua conexão.'; msgEl.className = 'msg-erro'; } }; s.onload = () => { if (msgEl) msgEl.style.display = 'none'; callback(); }; document.head.appendChild(s); }// --- EXPORTAÇÃO PDF --- function exportToPDF() { carregarJsPDF(function() { _executarExportPDF(); }); } function _executarExportPDF() { if (!window.jspdf) return; if (!resultsContainer.style.display || resultsContainer.style.display === 'none') { showError('Execute um cálculo antes de exportar para PDF.'); return; }try { const doc = new window.jspdf.jsPDF('l', 'mm', 'a4'); const pageWidth = doc.internal.pageSize.getWidth(); const pageHeight = doc.internal.pageSize.getHeight(); const marginLeft = 14; const marginRight = 14; const usableWidth = pageWidth - marginLeft - marginRight; let y = 34;const addWrappedText = (text, x, yStart, width, options = {}) => { const fontSize = options.fontSize || 9; const lineHeight = options.lineHeight || 4.2; const fontStyle = options.fontStyle || 'normal'; const color = options.color || [0, 0, 0];doc.setFont('helvetica', fontStyle); doc.setFontSize(fontSize); doc.setTextColor(...color);const lines = doc.splitTextToSize(String(text || ''), width); lines.forEach(line => { if (yStart > pageHeight - 20) { doc.addPage(); yStart = 18; } doc.text(line, x, yStart); yStart += lineHeight; }); return yStart; };const addSectionTitle = (title, yStart) => { if (yStart > pageHeight - 30) { doc.addPage(); yStart = 18; } doc.setFont('helvetica', 'bold'); doc.setFontSize(11); doc.setTextColor(26, 54, 93); doc.text(title, marginLeft, yStart); doc.setDrawColor(26, 54, 93); doc.line(marginLeft, yStart + 2, pageWidth - marginRight, yStart + 2); return yStart + 8; };const addHeader = () => { doc.setFillColor(26, 54, 93); doc.rect(0, 0, pageWidth, 26, 'F'); doc.setTextColor(255, 255, 255); doc.setFontSize(15); doc.setFont('helvetica', 'bold'); doc.text('Calculadora de Intervalo Interjornada (Art. 66 da CLT)', marginLeft, 12); doc.setFontSize(9); doc.setFont('helvetica', 'normal'); doc.text('CALTRAB - Cálculo estimativo para Petição Inicial Trabalhista', marginLeft, 19); doc.text(`Gerado em ${new Date().toLocaleDateString('pt-BR')} às ${new Date().toLocaleTimeString('pt-BR')}`, pageWidth - marginRight, 19, { align: 'right' }); };addHeader();const dataInicialStr = document.getElementById('data-inicial').value; const dataFinalStr = document.getElementById('data-final').value; const valorTotalStr = document.getElementById('total-coluna-total').textContent || valorTotalElement.textContent.replace('Indenização Total Estimada:', '').trim(); const adicUteis = document.getElementById('adicional-dias-uteis').value; const adicDomFer = document.getElementById('adicional-dom-fer').value;y = addSectionTitle('1. Resumo executivo', y); const resumoRows = [ ['Período de cálculo', `${formatDateDisplay(dataInicialStr)} a ${formatDateDisplay(dataFinalStr)}`], ['Divisor utilizado', document.getElementById('divisor').value], ['Adicional em dias úteis', `${adicUteis}%`], ['Adicional em domingos/feriados', `${adicDomFer}%`], ['Supressão total em dias úteis', document.getElementById('total-coluna-uteis-tempo').textContent], ['Valor em dias úteis', document.getElementById('total-coluna-uteis-valor').textContent], ['Supressão total em domingos/feriados', document.getElementById('total-coluna-domfer-tempo').textContent], ['Valor em domingos/feriados', document.getElementById('total-coluna-domfer-valor').textContent], ['Valor estimado do pedido', valorTotalStr] ];doc.autoTable({ body: resumoRows, startY: y, theme: 'grid', styles: { fontSize: 8.5, cellPadding: 2.5, overflow: 'linebreak' }, columnStyles: { 0: { fontStyle: 'bold', cellWidth: 72 }, 1: { cellWidth: usableWidth - 72 } }, margin: { left: marginLeft, right: marginRight }, didParseCell: function(data) { if (data.row.index === resumoRows.length - 1) { data.cell.styles.fontStyle = 'bold'; data.cell.styles.fillColor = [232, 245, 232]; data.cell.styles.textColor = [26, 54, 93]; } } }); y = doc.lastAutoTable.finalY + 8;y = addSectionTitle('2. Critério jurídico e premissas de cálculo', y); y = addWrappedText( 'O cálculo considera o intervalo mínimo de 11 horas consecutivas entre duas jornadas, previsto no art. 66 da CLT. A ferramenta apura apenas o tempo efetivamente suprimido: 11 horas legais menos as horas de descanso informadas pelo usuário. A rubrica é tratada como estimativa indenizatória, conforme premissa pós-Reforma Trabalhista adotada nesta calculadora, sem apuração automática de reflexos. A antiga OJ nº 355 da SDI-1 do TST foi cancelada em 30/06/2025 e, por isso, não é indicada neste relatório como fundamento jurisprudencial vigente.', marginLeft, y, usableWidth, { fontSize: 8.8, lineHeight: 4.1 } ); y += 4;y = addSectionTitle('3. Detalhamento mensal', y); doc.autoTable({ html: '#tabela-detalhamento', startY: y, theme: 'grid', headStyles: { fillColor: [26, 54, 93], textColor: [255, 255, 255], fontStyle: 'bold', fontSize: 7 }, styles: { fontSize: 6.8, cellPadding: 1.8, overflow: 'linebreak' }, margin: { left: marginLeft, right: marginRight }, alternateRowStyles: { fillColor: [248, 249, 250] } }); y = doc.lastAutoTable.finalY + 8;if (y > pageHeight - 60) { doc.addPage(); y = 18; }y = addSectionTitle('4. Modelo de redação do pedido', y); const pedido = `Requer a condenação da Reclamada ao pagamento da indenização decorrente da supressão parcial do intervalo interjornada mínimo de 11 horas consecutivas, nos termos do art. 66 da CLT, correspondente ao período de descanso efetivamente suprimido, acrescido do adicional legal ou normativo aplicável.Para fins meramente estimativos, atribui-se ao pedido o valor de ${valorTotalStr}, sem prejuízo de posterior apuração em liquidação de sentença, com base nos controles de jornada, recibos salariais, normas coletivas, documentos e prova testemunhal a serem produzidos nos autos.`; y = addWrappedText(pedido, marginLeft, y, usableWidth, { fontSize: 8.7, lineHeight: 4.1 }); y += 4;y = addSectionTitle('5. Advertência técnica', y); y = addWrappedText( 'Este relatório constitui estimativa auxiliar de cálculo para uso técnico-profissional. Os valores dependem da fidelidade dos dados inseridos, da prova documental e testemunhal, da norma coletiva aplicável, da evolução remuneratória, dos períodos efetivamente trabalhados e dos critérios acolhidos pelo Juízo. A ferramenta não substitui a conferência jurídica individualizada pelo advogado responsável.', marginLeft, y, usableWidth, { fontSize: 8.4, lineHeight: 4 } );const pageCount = doc.internal.getNumberOfPages(); for (let i = 1; i <= pageCount; i++) { doc.setPage(i); // Não redesenha o cabeçalho nas páginas seguintes, evitando sobreposição às tabelas paginadas pelo autoTable. doc.setDrawColor(220, 220, 220); doc.line(marginLeft, pageHeight - 14, pageWidth - marginRight, pageHeight - 14); doc.setFontSize(7.5); doc.setFont('helvetica', 'normal'); doc.setTextColor(110, 110, 110); doc.text(`Página ${i} de ${pageCount}`, marginLeft, pageHeight - 9); doc.text('Desenvolvido por Gilberto Braga (OAB/PR 111.943) - CALTRAB', pageWidth / 2, pageHeight - 9, { align: 'center' }); doc.text('caltrab.com', pageWidth - marginRight, pageHeight - 9, { align: 'right' }); }doc.save(`Intervalo_Interjornada_v4_1_${dataInicialStr}_${dataFinalStr}.pdf`); showSuccess('PDF jurídico gerado com sucesso!'); } catch (error) { console.error('Erro ao exportar PDF:', error); showError('Erro ao exportar PDF: ' + error.message + '. Tente usar "Imprimir" e salvar como PDF.'); } }// --- EXPORTAÇÃO EXCEL (4 ABAS) --- function exportToExcel() { carregarXLSX(function() { _executarExportExcel(); }); } function _executarExportExcel() { if (!window.XLSX) return; try { const wb = XLSX.utils.book_new(); // ABA 1: PARÂMETROS const adicUteis = document.getElementById('adicional-dias-uteis').value; const adicDomFer = document.getElementById('adicional-dom-fer').value; const paramsData = [ ['CALCULADORA INTERVALO INTERJORNADA (Art. 66 CLT)'], ['CALTRAB - Calculadoras Jurídicas'], [], ['PARÂMETROS DO CÁLCULO'], [], ['Data Inicial:', formatDateDisplay(document.getElementById('data-inicial').value)], ['Data Final:', formatDateDisplay(document.getElementById('data-final').value)], ['Divisor:', document.getElementById('divisor').value], ['Adicional Dias Úteis:', adicUteis + '%'], ['Adicional Dom/Feriados:', adicDomFer + '%'], [], ['HORAS DE DESCANSO INFORMADAS'], ['Domingo:', document.getElementById('intervalo-domingo').value + 'h'], ['Segunda:', document.getElementById('intervalo-segunda').value + 'h'], ['Terça:', document.getElementById('intervalo-terca').value + 'h'], ['Quarta:', document.getElementById('intervalo-quarta').value + 'h'], ['Quinta:', document.getElementById('intervalo-quinta').value + 'h'], ['Sexta:', document.getElementById('intervalo-sexta').value + 'h'], ['Sábado:', document.getElementById('intervalo-sabado').value + 'h'], ['Feriados:', document.getElementById('intervalo-feriados').value + 'h'], [], ['Gerado em:', new Date().toLocaleDateString('pt-BR') + ' ' + new Date().toLocaleTimeString('pt-BR')] ]; const paramsSheet = XLSX.utils.aoa_to_sheet(paramsData); paramsSheet['!cols'] = [{ width: 25 }, { width: 30 }]; // ABA 2: RESUMO const resumoData = [ ['RESUMO DO CÁLCULO'], [], ['Supressão Total (Dias Úteis):', document.getElementById('total-coluna-uteis-tempo').textContent], ['Valor Dias Úteis:', document.getElementById('total-coluna-uteis-valor').textContent], ['Supressão Total (Dom/Fer):', document.getElementById('total-coluna-domfer-tempo').textContent], ['Valor Dom/Feriados:', document.getElementById('total-coluna-domfer-valor').textContent], [], ['INDENIZAÇÃO TOTAL:', document.getElementById('total-coluna-total').textContent] ]; const resumoSheet = XLSX.utils.aoa_to_sheet(resumoData); resumoSheet['!cols'] = [{ width: 30 }, { width: 20 }]; // ABA 3: DETALHAMENTO MENSAL const detalhamentoData = [['Mês/Ano', 'Sal. Mensal', 'Sal. Hora', 'Tempo Suprimido Úteis', `Sal. Hora+${adicUteis}%`, 'Valor Devido Úteis', 'Tempo Suprimido Dom/Fer', `Sal. Hora+${adicDomFer}%`, 'Valor Devido Dom/Fer', 'Valor Total (Mês)']]; document.querySelectorAll('#corpo-tabela tr').forEach(row => { const rowData = []; row.querySelectorAll('td').forEach(cell => rowData.push(cell.textContent.trim().replace('R$', '').trim())); detalhamentoData.push(rowData); }); const totalRow = []; document.querySelectorAll('#tabela-detalhamento tfoot td').forEach(cell => totalRow.push(cell.textContent.trim().replace('R$', '').trim())); detalhamentoData.push(totalRow); const detalhamentoSheet = XLSX.utils.aoa_to_sheet(detalhamentoData); detalhamentoSheet['!cols'] = [{ width: 10 }, { width: 12 }, { width: 10 }, { width: 18 }, { width: 15 }, { width: 15 }, { width: 20 }, { width: 15 }, { width: 18 }, { width: 15 }];// ABA 4: INFORMAÇÕES LEGAIS const infoLegalData = [ ['INFORMAÇÕES LEGAIS'], [], ['Intervalo Interjornada – O que diz a Lei'], [], ['Art. 66 da CLT'], ['"Entre 2 (duas) jornadas de trabalho haverá um período mínimo de 11 (onze) horas consecutivas para descanso."'], [], ['Observação sobre a antiga OJ nº 355 da SDI-1 do TST'], ['A antiga OJ nº 355 teve relevância histórica na construção jurisprudencial do intervalo interjornada,'], ['mas foi cancelada em 30/06/2025 e não deve ser citada como fundamento vigente.'], ['O eixo atual do pedido deve priorizar o art. 66 da CLT, a prova da jornada e a apuração objetiva do tempo suprimido.'], [], ['Natureza do Pagamento (Pós-Reforma)'], ['• Natureza indenizatória no regime pós-Reforma: em regra, a ferramenta não apura reflexos em férias, 13º salário, FGTS ou aviso prévio.'], ['• Pagamento do Tempo Suprimido: paga-se a diferença entre as 11 horas devidas e as horas efetivamente descansadas, conforme premissa adotada pela ferramenta.'], [], ['Desenvolvido por: Gilberto Braga – OAB/PR 111.943 – CALTRAB'] ]; const infoLegalSheet = XLSX.utils.aoa_to_sheet(infoLegalData); infoLegalSheet['!cols'] = [{ width: 100 }]; XLSX.utils.book_append_sheet(wb, paramsSheet, 'Parâmetros'); XLSX.utils.book_append_sheet(wb, resumoSheet, 'Resumo'); XLSX.utils.book_append_sheet(wb, detalhamentoSheet, 'Detalhamento Mensal'); XLSX.utils.book_append_sheet(wb, infoLegalSheet, 'Informações Legais'); XLSX.writeFile(wb, `Calculadora_Intervalo_Interjornada_${document.getElementById('data-inicial').value.replace(/-/g, '')}_${document.getElementById('data-final').value.replace(/-/g, '')}.xlsx`); showSuccess('Planilha Excel exportada com sucesso! (4 abas)'); } catch (error) { console.error('Erro ao exportar Excel:', error); showError('Erro ao exportar Excel: ' + error.message); } }init(); setupFeedback(); setupFAQ();// Renderizar flashcards e quiz (novo) if (window.renderFlashcards) window.renderFlashcards(); if (window.renderQuiz) window.renderQuiz(); }// Funções globais function copyShareLink() { const textArea = document.getElementById('share-url-textarea'); textArea.select(); try { navigator.clipboard.writeText(textArea.value); } catch (err) { document.execCommand('copy'); } const btn = document.querySelector('.share-btn-copy'); if (btn) { const orig = btn.textContent; btn.textContent = '✅ Copiado!'; setTimeout(() => { btn.textContent = orig; }, 2000); } }function shareOnWhatsApp() { const url = document.getElementById('share-url-textarea').value; window.open('https://api.whatsapp.com/send?text=' + encodeURIComponent('Confira este cálculo de intervalo interjornada (Art. 66, CLT) feito na calculadora CALTRAB: ' + url), '_blank'); }function shareOnEmail() { const url = document.getElementById('share-url-textarea').value; window.open('mailto:?subject=' + encodeURIComponent('Cálculo de Intervalo Interjornada (CALTRAB)') + '&body=' + encodeURIComponent('Olá,\n\nConfira esta configuração de cálculo de intervalo interjornada (Art. 66, CLT) que preparei na calculadora CALTRAB:\n\n' + url + '\n\nAtenciosamente.'), '_blank'); }// ========================================================= // FLASHCARDS // ========================================================= const flashcardsData = [ { pergunta: "Qual é a base legal direta do intervalo interjornada?", resposta: "Art. 66 da CLT: mínimo de 11 horas consecutivas de descanso entre duas jornadas." }, { pergunta: "A OJ 355 da SDI-1 do TST ainda está vigente?", resposta: "Não. Foi cancelada pelo TST em 30/06/2025, devendo ser tratada como referência histórica." }, { pergunta: "Como se apura o tempo de supressão do intervalo?", resposta: "Subtrai-se do mínimo legal de 11 horas o descanso efetivamente usufruído entre as jornadas." }, { pergunta: "A violação do intervalo interjornada gera pagamento integral de 11 horas?", resposta: "Não necessariamente. Para o período posterior à Reforma Trabalhista, a tendência jurisprudencial predominante é limitar a reparação ao tempo efetivamente suprimido, com acréscimo do adicional aplicável." }, { pergunta: "Qual a natureza jurídica da parcela após 11/11/2017?", resposta: "Predominantemente indenizatória, por analogia ao art. 71, § 4º, da CLT com a redação da Lei nº 13.467/2017." }, { pergunta: "Antes da Reforma, qual era a natureza da parcela?", resposta: "Salarial, com reflexos em férias, 13º salário, FGTS e aviso prévio, conforme construção jurisprudencial anterior ao cancelamento da OJ 355." }, { pergunta: "A jornada 12x36 viola automaticamente o art. 66 da CLT?", resposta: "Não, em regra. O descanso de 36 horas supera as 11 horas mínimas. A controvérsia surge em casos de desvirtuamento da escala." }, { pergunta: "Quando a 12x36 pode gerar discussão sobre interjornada?", resposta: "Em convocação irregular, dobra de plantão ou desvirtuamento da escala — hipóteses excepcionais." }, { pergunta: "Qual o prazo prescricional para cobrar a parcela?", resposta: "Cinco anos (prescrição quinquenal), com limite de dois anos após a extinção do contrato (art. 11 da CLT)." }, { pergunta: "Como deve ser tratada a antiga OJ 355 em peça processual hoje?", resposta: "Como referência histórica da evolução jurisprudencial, e não como fundamento vigente. O eixo principal da fundamentação atual deve ser o art. 66 da CLT, a prova da jornada efetivamente cumprida e a apuração do tempo efetivamente suprimido." }, { pergunta: "Qual é a lógica de cálculo adotada pela calculadora?", resposta: "A calculadora aplica a fórmula: 11 horas (mínimo legal) menos horas efetivamente descansadas, multiplicando o resultado pelo valor da hora acrescida do adicional configurado." }, { pergunta: "Há reflexos da parcela em férias, 13º salário, FGTS e aviso-prévio?", resposta: "Em regra, para o período posterior à Reforma Trabalhista, não, porque a natureza predominante é indenizatória. Para períodos anteriores, a discussão exige análise do enquadramento jurídico aplicável." }, { pergunta: "Qual adicional costuma ser aplicado sobre o tempo suprimido?", resposta: "Em regra, utiliza-se o adicional de 50%. Em domingos e feriados, pode haver controvérsia jurisprudencial sobre a incidência de 50% ou 100%, razão pela qual a calculadora permite parametrização." }, { pergunta: "Quais provas são mais importantes para demonstrar a violação do intervalo interjornada?", resposta: "Cartões de ponto, escalas, espelhos de jornada, mensagens, ordens de convocação, registros eletrônicos e prova testemunhal são elementos centrais para demonstrar o descanso efetivamente usufruído." }, { pergunta: "Qual é a principal diferença entre intervalo interjornada e intrajornada?", resposta: "O interjornada é o descanso entre duas jornadas de trabalho, previsto no art. 66 da CLT. O intrajornada é a pausa concedida dentro da própria jornada, disciplinada pelo art. 71 da CLT." } ];window.renderFlashcards = function() { const container = document.getElementById('flashcards-container'); if (!container) return; container.innerHTML = ''; flashcardsData.forEach((card, i) => { const div = document.createElement('div'); div.className = 'flashcard-item'; div.setAttribute('tabindex', '0'); div.setAttribute('aria-label', 'Flashcard ' + (i+1)); div.innerHTML = `
${card.pergunta}Clique para revelar ▼

${card.resposta}

`; div.addEventListener('click', () => div.querySelector('.flashcard-inner').classList.toggle('flipped')); div.addEventListener('keydown', e => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); div.querySelector('.flashcard-inner').classList.toggle('flipped'); } }); container.appendChild(div); }); };// ========================================================= // QUIZ NOVO (8 questões) // ========================================================= const quizPerguntasNovo = [ { pergunta: "Qual é o intervalo mínimo entre duas jornadas de trabalho, conforme o art. 66 da CLT?", opcoes: ["8 horas consecutivas","10 horas consecutivas","11 horas consecutivas","12 horas consecutivas"], correta: 2, explicacao: "O art. 66 da CLT exige 11 horas consecutivas de descanso entre duas jornadas de trabalho." }, { pergunta: "O fundamento legal direto do intervalo interjornada é:", opcoes: ["Art. 59 da CLT","Art. 66 da CLT","Art. 71 da CLT","Art. 611-A da CLT"], correta: 1, explicacao: "O fundamento direto é o art. 66 da CLT. O art. 71 trata do intervalo intrajornada (durante a jornada)." }, { pergunta: "A antiga OJ 355 da SDI-1 do TST deve ser tratada hoje como:", opcoes: ["Fundamento vigente principal","Verbete vinculante","Referência histórica da evolução jurisprudencial","Súmula do STF"], correta: 2, explicacao: "A OJ 355 foi cancelada pelo TST em 30/06/2025. O fundamento atual é o art. 66 da CLT." }, { pergunta: "No cenário pós-Reforma (a partir de 11/11/2017), a orientação jurisprudencial mais recente tende a prestigiar:", opcoes: ["Pagamento integral fictício do intervalo","Pagamento apenas do tempo efetivamente suprimido","Multa administrativa substitutiva","Compensação obrigatória em banco de horas"], correta: 1, explicacao: "Predomina a leitura de pagamento do tempo efetivamente suprimido, por analogia ao art. 71, § 4º, da CLT." }, { pergunta: "A natureza jurídica predominante da verba por supressão do intervalo interjornada após a Reforma Trabalhista é:", opcoes: ["Sempre salarial","Sempre indenizatória","Predominantemente indenizatória","Multa administrativa"], correta: 2, explicacao: "Predomina o entendimento de natureza indenizatória, por analogia ao art. 71, § 4º, da CLT (Lei nº 13.467/2017). A matéria pode variar conforme o caso." }, { pergunta: "Em demanda envolvendo jornada 12x36, a discussão sobre violação do intervalo interjornada pode surgir quando:", opcoes: ["Houver efetivo descanso de 36 horas","A escala estiver regular","Houver convocação irregular, dobra de plantão ou desvirtuamento da escala","O empregado receber adicional noturno"], correta: 2, explicacao: "A jornada 12x36 (art. 59-A CLT), em regra, respeita o art. 66. A controvérsia surge apenas nas hipóteses excepcionais de desvirtuamento." }, { pergunta: "O intervalo interjornada se conecta mais diretamente a:", opcoes: ["Liberdade econômica da empresa","Autonomia privada absoluta","Saúde, higiene e segurança do trabalho","Apenas regras salariais"], correta: 2, explicacao: "O intervalo interjornada tem forte conteúdo de proteção à saúde e segurança do trabalho, sendo norma de ordem pública." }, { pergunta: "A violação reiterada do intervalo interjornada pode evidenciar:", opcoes: ["Simples divergência contábil","Prática empresarial potencialmente lesiva ao meio ambiente do trabalho","Matéria exclusivamente previdenciária","Ausência de responsabilidade do empregador"], correta: 1, explicacao: "A reiteração da conduta pode revelar lesão estrutural à saúde ocupacional, com relevância para ações individuais e coletivas." } ];let quizAcertosNovo = 0; let quizRespondidasNovo = 0;window.renderQuiz = function() { const container = document.getElementById('quiz-container'); if (!container) return; container.innerHTML = ''; quizAcertosNovo = 0; quizRespondidasNovo = 0; const rf = document.getElementById('quiz-resultado-final'); if (rf) rf.style.display = 'none'; quizPerguntasNovo.forEach((q, index) => { const numero = index + 1; const bloco = document.createElement('div'); bloco.className = 'quiz-pergunta'; bloco.style.cssText = 'margin-bottom:25px;padding:15px;background:white;color:var(--text-dark);border-radius:8px;border-left:4px solid var(--primary-color);'; let opcoesHtml = '
'; q.opcoes.forEach((op, i) => { opcoesHtml += ``; }); opcoesHtml += '
'; bloco.innerHTML = `

Questão ${numero} de ${quizPerguntasNovo.length}

${q.pergunta}

${opcoesHtml}`; container.appendChild(bloco); }); };window.responderQuiz = function(perguntaIndex, respostaIndex, btn) { const q = quizPerguntasNovo[perguntaIndex]; const feedbackEl = document.getElementById(`novo-feedback-q${perguntaIndex}`); const container = btn.parentElement; const botoes = container.querySelectorAll('.quiz-btn'); botoes.forEach(b => { b.disabled = true; b.style.cursor = 'default'; }); const acertou = q.correta === respostaIndex; if (acertou) { btn.style.background = '#d4edda'; btn.style.borderColor = '#28a745'; feedbackEl.style.background = '#d4edda'; feedbackEl.style.color = '#155724'; feedbackEl.innerHTML = `✅ ${q.explicacao}`; quizAcertosNovo++; } else { btn.style.background = '#f8d7da'; btn.style.borderColor = '#dc3545'; botoes[q.correta].style.background = '#d4edda'; botoes[q.correta].style.borderColor = '#28a745'; feedbackEl.style.background = '#f8d7da'; feedbackEl.style.color = '#721c24'; feedbackEl.innerHTML = `❌ ${q.explicacao}`; } feedbackEl.style.display = 'block'; quizRespondidasNovo++; if (quizRespondidasNovo === quizPerguntasNovo.length) { setTimeout(() => { const rf = document.getElementById('quiz-resultado-final'); const pontuacao = document.getElementById('quiz-pontuacao-final'); const mensagem = document.getElementById('quiz-mensagem-final'); pontuacao.textContent = `${quizAcertosNovo} de ${quizPerguntasNovo.length} acertos`; if (quizAcertosNovo >= 7) { pontuacao.style.color='#28a745'; mensagem.innerHTML='🏆 Excelente! Você domina o tema do intervalo interjornada!'; } else if (quizAcertosNovo >= 5) { pontuacao.style.color='#17a2b8'; mensagem.innerHTML='👍 Muito bem! Você tem sólido conhecimento sobre o art. 66 da CLT.'; } else if (quizAcertosNovo >= 3) { pontuacao.style.color='#ffc107'; mensagem.innerHTML='📚 Continue estudando! Revise o bloco teórico e o FAQ desta página.'; } else { pontuacao.style.color='#dc3545'; mensagem.innerHTML='📖 Hora de revisar! Leia com atenção o fundamento legal e a evolução jurisprudencial acima.'; } rf.style.display = 'block'; rf.scrollIntoView({ behavior:'smooth', block:'center' }); }, 500); } };window.reiniciarQuiz = function() { window.renderQuiz(); };const sugestaoTexto = document.getElementById('sugestaoTexto'); const sugestaoChars = document.getElementById('sugestaoChars');if (sugestaoTexto && sugestaoChars) { sugestaoTexto.addEventListener('input', function () { sugestaoChars.textContent = this.value.length; }); }function enviarSugestao() { const textarea = document.getElementById('sugestaoTexto'); const confirmacao = document.getElementById('sugestaoConfirmacao'); const btn = document.querySelector('.sugestao-btn'); if (!textarea || !confirmacao) return;const texto = textarea.value.trim(); if (!texto) { textarea.focus(); textarea.placeholder = '⚠️ Por favor, escreva sua sugestão antes de enviar.'; return; }CALTRAB_Storage.set('caltrab_sugestao_interjornada', texto);if (typeof gtag !== 'undefined') { gtag('event', 'sugestao_enviada', { 'event_category': 'engagement', 'event_label': 'feedback_negativo_textarea' }); }textarea.disabled = true; if (btn) { btn.disabled = true; btn.textContent = '✅ Enviado'; } confirmacao.classList.add('show'); }window.enviarSugestao = enviarSugestao; const FEEDBACK_STORAGE_KEY = 'caltrab_feedback_interjornada'; const RATING_STORAGE_KEY = 'caltrab_rating_interjornada'; const RATING_META_STORAGE_KEY = 'caltrab_rating_meta_interjornada';function setupFAQ() { const questions = document.querySelectorAll('.faq-question'); questions.forEach(q => { const answer = q.nextElementSibling; const activate = () => { const isOpen = q.getAttribute('aria-expanded') === 'true'; questions.forEach(other => { other.setAttribute('aria-expanded', 'false'); const otherAns = other.nextElementSibling; if (otherAns) otherAns.classList.remove('open'); }); if (!isOpen) { q.setAttribute('aria-expanded', 'true'); if (answer) answer.classList.add('open'); } }; q.addEventListener('click', activate); q.addEventListener('keydown', e => { if (e.key === 'Enter' || e.key === ' ') { e.preventDefault(); activate(); } }); }); }function setupFeedback() { const btnLike = document.getElementById('btnLike'); const btnDislike = document.getElementById('btnDislike'); const ratingInputs = document.querySelectorAll('input[name="caltrab-rating"]'); const ratingStatus = document.getElementById('ratingStatus');if (!btnLike || !btnDislike) return;let previousRating = null; let previousFeedback = null;try { previousRating = CALTRAB_Storage.get(RATING_STORAGE_KEY); } catch(e) {} try { previousFeedback = CALTRAB_Storage.get(FEEDBACK_STORAGE_KEY); } catch(e) {}if (previousRating && ratingInputs.length) { const input = document.querySelector(`input[name="caltrab-rating"][value="${previousRating}"]`); if (input) input.checked = true; if (ratingStatus) { ratingStatus.textContent = `Nota registrada neste navegador: ${previousRating}/5. Você pode alterar a nota clicando em outra estrela.`; } }if (previousFeedback === 'positive' || previousFeedback === 'negative') { showFeedbackResponse(previousFeedback, false); }ratingInputs.forEach(input => { input.addEventListener('change', function() { const nota = this.value; let notaAnterior = null; try { notaAnterior = CALTRAB_Storage.get(RATING_STORAGE_KEY); } catch(e) {} const payload = JSON.stringify({ nota, notaAnterior: notaAnterior || null, atualizadoEm: new Date().toISOString(), calculadora: 'intervalo_interjornada' });try { CALTRAB_Storage.set(RATING_STORAGE_KEY, nota); CALTRAB_Storage.set(RATING_META_STORAGE_KEY, payload); } catch(e) {}if (ratingStatus) { ratingStatus.textContent = notaAnterior && notaAnterior !== nota ? `Nota atualizada de ${notaAnterior}/5 para ${nota}/5 neste navegador.` : `Obrigado. Sua nota ${nota}/5 foi registrada neste navegador.`; }if (typeof gtag !== 'undefined') { gtag('event', notaAnterior && notaAnterior !== nota ? 'rating_updated' : 'rating_saved', { 'event_category': 'engagement', 'event_label': 'calculadora_interjornada', 'value': Number(nota) }); } }); });btnLike.addEventListener('click', () => handleFeedback('positive')); btnDislike.addEventListener('click', () => handleFeedback('negative')); }function handleFeedback(type) { let previousFeedback = null; try { previousFeedback = CALTRAB_Storage.get(FEEDBACK_STORAGE_KEY); } catch(e) {} try { CALTRAB_Storage.set(FEEDBACK_STORAGE_KEY, type); } catch(e) {}const askEl = document.getElementById('feedbackAsk'); if (askEl) askEl.classList.add('fade-out');setTimeout(() => showFeedbackResponse(type, true), 350);if (typeof gtag !== 'undefined') { gtag('event', previousFeedback && previousFeedback !== type ? 'feedback_updated' : 'feedback_saved', { 'event_category': 'engagement', 'event_label': 'calculadora_interjornada_' + type }); } }function showFeedbackResponse(type, animate) { const askEl = document.getElementById('feedbackAsk'); const positiveEl = document.getElementById('feedbackPositive'); const negativeEl = document.getElementById('feedbackNegative');if (!askEl || !positiveEl || !negativeEl) return;askEl.classList.add('hidden'); askEl.classList.remove('fade-out'); positiveEl.classList.add('hidden'); negativeEl.classList.add('hidden');const selectedEl = type === 'positive' ? positiveEl : negativeEl; selectedEl.classList.remove('hidden'); if (animate) selectedEl.classList.add('fade-in'); injectFeedbackEditAction(selectedEl); }function injectFeedbackEditAction(container) { if (!container || container.querySelector('.feedback-edit-action')) return; const editWrap = document.createElement('div'); editWrap.className = 'feedback-edit-action'; editWrap.style.marginTop = '16px'; editWrap.innerHTML = ''; container.appendChild(editWrap); const btnAlterar = editWrap.querySelector('#btnAlterarFeedback'); if (btnAlterar) btnAlterar.addEventListener('click', resetFeedbackView); }function resetFeedbackView() { const askEl = document.getElementById('feedbackAsk'); const positiveEl = document.getElementById('feedbackPositive'); const negativeEl = document.getElementById('feedbackNegative'); if (positiveEl) positiveEl.classList.add('hidden'); if (negativeEl) negativeEl.classList.add('hidden'); if (askEl) { askEl.classList.remove('hidden', 'fade-out'); askEl.scrollIntoView({ behavior: 'smooth', block: 'center' }); } }// Botão Voltar ao Topo (function() { const btn = document.getElementById('scroll-top-btn'); if (!btn) return; window.addEventListener('scroll', function() { if (window.scrollY > 400) { btn.style.display = 'block'; } else { btn.style.display = 'none'; } }); })();// Inicialização blindada (padrão CALTRAB): roda mesmo se o DOM já estiver pronto // (ex.: preview do WordPress / WPCode, onde o DOMContentLoaded pode já ter ocorrido) if (document.readyState === 'loading') { document.addEventListener('DOMContentLoaded', caltrabBoot); } else { caltrabBoot(); }
Rolar para cima
Plugin WordPress Cookie by Real Cookie Banner