Imprimir
Modalidades como estágio e aprendizagem têm regras específicas e devem garantir formação e proteção aos jovens
11/8/2025 – Neste Dia do Estudante (11), o Tribunal Superior do Trabalho (TST) aproveita a oportunidade para esclarecer algumas dúvidas sobre os direitos de adolescentes e jovens que estão dando os primeiros passos no universo do trabalho. Estágio e aprendizagem são formas legais de ingresso nessa jornada, pensadas para garantir formação, proteção e oportunidades de crescimento. Mas é preciso ter atenção: o uso indevido dessas modalidades tem preocupado a Justiça do Trabalho, que alerta para práticas irregulares.
Somente em 2024, quase 600 mil jovens participaram de programas de aprendizagem, segundo o Ministério do Trabalho e Emprego (MTE). A modalidade é prevista na Consolidação das Leis do Trabalho (CLT) via Lei nº 10.097/2000, também conhecida como Lei da Aprendizagem. De acordo com a norma, o aprendiz deve ter entre 14 e 24 anos.
O estágio, por sua vez, é regulamentado pela Lei nº 11.788/2008 e faz parte da formação de estudantes do ensino médio, técnico e superior. Neste caso, o(a) estagiário(a) deve ter mais de 16 anos, mas não há limite máximo de idade. Segundo a Associação Brasileira de Estágios, atualmente, o Brasil conta com 1,1 milhão de estagiários. Ainda assim, muitas dúvidas sobre esses contratos podem surgir. Que tal aproveitar a data para entender melhor como tudo isso funciona?
Tenho 14 anos. Posso trabalhar?
Sim, mas apenas na condição de aprendiz, conforme prevê a CLT. A aprendizagem é permitida a partir dos 14 anos e deve combinar formação teórica com prática profissional supervisionada. O trabalho infantil, fora dessa modalidade, é proibido pela legislação brasileira e pode acarretar punições às empresas.
Qual a diferença entre estagiário e jovem aprendiz?
O estágio é uma atividade complementar à formação escolar, sem vínculo empregatício, e exige matrícula e frequência regular em instituições de ensino. Já o aprendizado é uma forma de contratação especial regida pela CLT, com carteira assinada, salário, direitos trabalhistas e formação técnico-profissional oferecida por entidades credenciadas.
Estagiário tem direito a férias, 13º e FGTS?
O estagiário não tem vínculo empregatício e, por isso, não tem direito a 13º salário nem ao depósito de FGTS. No entanto, tem direito a recesso remunerado de 30 dias a cada 12 meses de estágio, preferencialmente durante as férias escolares.
Pode ter estagiário no ensino médio?
Sim. O estágio é permitido para estudantes do ensino médio, desde que a atividade seja compatível com a proposta pedagógica da escola e supervisionada adequadamente.
Quem é obrigado a contratar aprendizes?
Empresas de médio e grande porte são obrigadas a contratar aprendizes em número equivalente a 5% a 15% do total de trabalhadores cujas funções demandem formação profissional. A contratação deve respeitar os requisitos legais e garantir a formação técnico-profissional do jovem.
Aprendiz pode trabalhar à noite ou fazer hora extra?
Não. O aprendiz não pode cumprir jornada noturna (das 22h às 5h) nem fazer horas extras, pois está protegido por normas que visam à conciliação do trabalho com os estudos e ao desenvolvimento saudável.
A jornada deve ser previamente definida e respeitada: no máximo 6 horas diárias para estagiários (ou 4 se estiverem no ensino regular) e 6 horas para aprendizes, podendo chegar a 8 horas se já tiverem concluído o ensino fundamental e a carga horária incluir atividades teóricas.
Estagiário e aprendiz podem sair mais cedo em dia de prova?
Sim. A legislação prevê que o estágio deve ser compatível com os horários escolares, e o termo de compromisso pode prever flexibilização da jornada em período de avaliações. No caso do jovem aprendiz, a empresa também deve considerar os compromissos escolares, e o ideal é que haja um diálogo para ajustar a jornada nesses dias. Essa medida é importante para garantir o direito à educação, que tem prioridade.
Empresas condenadas por uso indevido dessas modalidades
A Justiça do Trabalho tem reforçado os limites legais do estágio e da aprendizagem. Um caso julgado pela Quarta Turma do TST manteve a condenação de um banco que utilizava estagiários para substituir empregados em funções administrativas e rotineiras, sem relação com seus cursos. O Tribunal reconheceu o desvirtuamento da atividade e determinou o pagamento de R$ 300 mil por dano moral coletivo. Entenda o caso.
Apoio da Justiça do Trabalho
A Justiça do Trabalho tem promovido apoio institucional para a ampliação da aprendizagem no Brasil por meio do Programa de Combate ao Trabalho Infantil e de Estímulo à Aprendizagem. Uma das finalidades é sensibilizar e instrumentalizar empregadores, juízes do trabalho, servidores e o conjunto da sociedade brasileira, para, empenhando todos os esforços, reconhecer o trabalho infantil como grave forma de violação de direitos humanos, sendo responsabilidade de todos o combate e a erradicação desse tipo de trabalho, além do estímulo à aprendizagem.
Sob o aspecto da finalidade social, o ministro do TST Evandro Valadão, coordenador nacional do programa, ressalta que o cumprimento da legislação do estágio e da aprendizagem não é apenas uma exigência decorrente da lei, mas também um compromisso ético e social com o futuro da juventude. Caso o contrário, pode-se desvirtuar o comprometimento constitucional com o desenvolvimento de uma sociedade mais justa, inclusiva e solidária, além de gerar punições.
“Pode ensejar o reconhecimento de vínculo empregatício com o empregador descumpridor da lei, bem como a aplicação de multas administrativas por auditores fiscais do trabalho, ajuizamento de ações civis públicas, também com eventuais danos à reputação institucional e perda de incentivos fiscais”, disse.
Riscos sociais
O ministro Evandro Valadão destaca que os riscos sociais das violações aos direitos da aprendizagem, do estágio, da adolescência e da infância são inúmeros e perpassam por “precarização do trabalho infantil, evasão escolar, perpetuação do ciclo da pobreza, riscos à integridade física e psicológica, desvalorização profissional e concorrência desleal. Por isso, incumbe às empresas cumprirem não só a lei, mas sua função social, na forma do artigo 170 da Constituição da República”.
Feiras de aprendizagem
Como forma de ajudar a sociedade para evitar esses problemas, a Justiça do Trabalho criou o Guia para realização de Feirões da Aprendizagem, como ferramenta apta a auxiliar na preparação e na execução desses eventos em todo o território nacional. “Sua finalidade é a divulgação da boa prática da realização dos Feirões de Aprendizagem, já implementada por alguns Tribunais Regionais do Trabalho, como estratégia para a concretização dos direitos fundamentais de adolescentes e jovens em nosso País, em articulação com as entidades que integram a rede de proteção à infância”, disse o ministro.
O coordenador esclareceu que os objetivos envolvem a retirada de adolescentes do trabalho infantil; a garantia da inserção de jovens no mercado de trabalho como aprendizes; a conscientização, a sensibilização e o engajamento de empresas para o cumprimento da legislação de aprendizagem; a promoção de rematrícula escolar de adolescentes que necessitam retornar aos estudos; a conscientização dos pais acerca dos malefícios do trabalho infantil e da importância da aprendizagem, como meio de inserção do jovem no mercado de trabalho e de garantir educação de qualidade; além de facilitar o networking entre empresas, instituições formadoras e aprendizes.
Por fim, reforça-se que a Justiça do Trabalho está engajada na luta pela erradicação do trabalho infantil e pelo fortalecimento da aprendizagem.
(Silvia Carneiro e Guilherme Santos/NP)
Receba nossos conteúdos
Quer receber as notícias do TST em seu email? Assine a nossa newsletter.
Se quiser receber as notícias em seu WhatsApp, faça parte da comunidade do TST no aplicativo. Atenção: ao ingressar, os demais membros não terão acesso ao seu contato. Os envios de conteúdo são realizados uma vez por dia, em dias úteis.
Esta matéria é meramente informativa.
Permitida a reprodução mediante citação da fonte.
Secretaria de Comunicação Social
Tribunal Superior do Trabalho
Tel. (61) 3043-4907
secom@tst.jus.br
×
1 / 1
‹
›
Mais detalhes
Número de visualizações
2
Visualizações
// Objeto para armazenar dados das imagens por grupo
const imageGalleries = {};
let currentModalIndex = 0;
let currentGalleryGroup = 0;
// Coletar dados das imagens do DOM por grupo, SEMPRE usando a ordem atual do DOM
function initGalleryCustom() {
// Limpar dados anteriores
Object.keys(imageGalleries).forEach(key => delete imageGalleries[key]);
console.log(‘Inicializando galerias baseado na ordem atual do DOM…’);
// SEMPRE usar a ordem atual do DOM, ignorar scripts JSON após reordenação
const galleryContainers = document.querySelectorAll(‘.gallery-container-custom’);
galleryContainers.forEach((container) => {
const groupId = container.getAttribute(‘data-gallery-group’);
const thumbnails = container.querySelectorAll(‘.thumbnail’);
imageGalleries[groupId] = [];
// Coletar imagens na ordem atual do DOM
thumbnails.forEach((img, index) => {
imageGalleries[groupId].push({
src: img.src,
alt: img.alt,
fileEntryId: img.getAttribute(‘data-fileentryid’),
imageIndex: index, // Usar índice atual do DOM
originalOrder: parseInt(img.getAttribute(‘data-original-order’)) || index
});
});
console.log(‘Grupo ‘ + groupId + ‘ carregado com ‘ + imageGalleries[groupId].length + ‘ imagens (ordem DOM)’);
});
console.log(‘Galerias inicializadas:’, imageGalleries);
// Atualizar contadores nos títulos
updateGalleryTitles();
// Recriar os atributos onclick com os índices corretos
updateOnClickHandlers();
}
// Atualizar os handlers onclick para refletir a ordem atual
function updateOnClickHandlers() {
const galleryContainers = document.querySelectorAll(‘.gallery-container-custom’);
galleryContainers.forEach((container) => {
const groupId = container.getAttribute(‘data-gallery-group’);
const thumbnails = container.querySelectorAll(‘.thumbnail’);
thumbnails.forEach((img, index) => {
// Atualizar o data-image-index para refletir a posição atual
img.setAttribute(‘data-image-index’, index);
// Remover o onclick antigo e adicionar o novo
img.onclick = null;
img.onclick = function() {
openModalCustom(index, groupId);
};
console.log(‘Thumbnail ‘ + index + ‘ do grupo ‘ + groupId + ‘ atualizado’);
});
});
}
// Método fallback – REMOVIDO pois agora sempre usamos DOM
// function fallbackLoadGallery(groupId) { … }
// Atualizar títulos das galerias com contadores corretos
function updateGalleryTitles() {
Object.keys(imageGalleries).forEach(groupId => {
const container = document.querySelector(‘.gallery-container-custom[data-gallery-group=”‘ + groupId + ‘”]’);
if (container) {
const title = container.querySelector(‘.gallery-header h3’);
const imageCount = imageGalleries[groupId].length;
if (title && imageCount > 0) {
title.textContent = ‘Mais imagens (‘ + imageCount + ‘)’;
}
}
});
}
// Função para reinicializar quando a ordem dos campos muda
function handleFieldReorder() {
console.log(‘Reordenação detectada, reinicializando galerias…’);
// Fechar modal se estiver aberto
const modal = document.getElementById(‘imageModalCustom’);
if (modal && modal.style.display === ‘block’) {
closeModalCustom();
}
// Atualizar IDs e reinicializar
updateGroupIds();
initGalleryCustom();
}
// Atualizar modal com nova imagem
function updateModalImage() {
const modalImage = document.getElementById(‘modalImageCustom’);
const modalDescription = document.getElementById(‘modalDescriptionCustom’);
const modalCounter = document.getElementById(‘modalCounterCustom’);
const modalPrev = document.getElementById(‘modalPrevCustom’);
const modalNext = document.getElementById(‘modalNextCustom’);
const currentGallery = imageGalleries[currentGalleryGroup];
if (currentGallery && currentGallery[currentModalIndex]) {
const image = currentGallery[currentModalIndex];
modalImage.src = image.src;
modalImage.alt = image.alt;
modalDescription.textContent = image.alt;
modalCounter.textContent = (currentModalIndex + 1) + ‘ / ‘ + currentGallery.length;
// Atualizar estado dos botões
modalPrev.disabled = (currentModalIndex === 0);
modalNext.disabled = (currentModalIndex === currentGallery.length – 1);
console.log(‘Modal atualizado – Grupo:’, currentGalleryGroup, ‘Índice:’, currentModalIndex, ‘Imagem:’, image.src);
}
}
// Abrir modal
function openModalCustom(index, galleryGroup) {
const modal = document.getElementById(‘imageModalCustom’);
currentGalleryGroup = galleryGroup;
currentModalIndex = index;
console.log(‘Abrindo modal – Grupo:’, galleryGroup, ‘Índice:’, index);
if (imageGalleries[galleryGroup] && imageGalleries[galleryGroup][index]) {
updateModalImage();
modal.style.display = ‘block’;
document.body.style.overflow = ‘hidden’;
} else {
console.error(‘Imagem não encontrada:’, galleryGroup, index, imageGalleries);
}
}
// Próxima imagem no modal
function nextImageModal() {
const currentGallery = imageGalleries[currentGalleryGroup];
if (currentGallery && currentModalIndex 0) {
currentModalIndex–;
updateModalImage();
}
}
// Fechar modal
function closeModalCustom() {
const modal = document.getElementById(‘imageModalCustom’);
modal.style.display = ‘none’;
document.body.style.overflow = ‘auto’;
}
// Event listeners
document.addEventListener(‘DOMContentLoaded’, function() {
// Inicializar galeria
setTimeout(initGalleryCustom, 100);
// Fechar modal clicando fora da imagem
const modal = document.getElementById(‘imageModalCustom’);
if (modal) {
modal.addEventListener(‘click’, function(e) {
if (e.target === modal) {
closeModalCustom();
}
});
}
});
// Escutar eventos de reordenação dos campos repetíveis
document.addEventListener(‘repeatableFieldReordered’, function(e) {
console.log(‘Campo reordenado detectado:’, e.detail);
// Aguardar um pouco para garantir que o DOM foi atualizado
setTimeout(function() {
console.log(‘Detectando e corrigindo duplicação de conteúdo…’);
// Primeiro, detectar e corrigir duplicação de matérias
fixDuplicatedContent();
// Depois atualizar galerias
updateGroupIds();
initGalleryCustom();
// Se o modal estiver aberto, fechar para evitar inconsistências
const modal = document.getElementById(‘imageModalCustom’);
if (modal && modal.style.display === ‘block’) {
closeModalCustom();
console.log(‘Modal fechado devido à reordenação’);
}
}, 200);
});
// Escutar eventos de reordenação dos campos repetíveis
document.addEventListener(‘repeatableFieldReordered’, function(e) {
console.log(‘Campo reordenado detectado:’, e.detail);
handleFieldReorder();
});
// Escutar evento de mudança de ordem do conteúdo
document.addEventListener(‘contentOrderChanged’, function(e) {
console.log(‘Ordem do conteúdo alterada:’, e.detail);
handleContentOrderChange(e.detail);
});
// Lidar com mudança na ordem do conteúdo
function handleContentOrderChange(detail) {
console.log(‘Processando mudança de ordem do conteúdo…’);
// Fechar modal se estiver aberto
const modal = document.getElementById(‘imageModalCustom’);
if (modal && modal.style.display === ‘block’) {
closeModalCustom();
}
// Aguardar e reinicializar completamente
setTimeout(function() {
console.log(‘Reconstruindo galerias após mudança de conteúdo…’);
// Limpar tudo e reconstruir
rebuildGalleries();
}, 300);
}
// Reconstruir galerias completamente
function rebuildGalleries() {
// Limpar dados existentes
Object.keys(imageGalleries).forEach(key => delete imageGalleries[key]);
// Encontrar todas as galerias novamente
const galleryContainers = document.querySelectorAll(‘.gallery-container-custom’);
console.log(‘Reconstruindo ‘ + galleryContainers.length + ‘ galerias’);
galleryContainers.forEach((container, index) => {
// Redefinir IDs de grupo sequencialmente
container.setAttribute(‘data-gallery-group’, index);
const thumbnails = container.querySelectorAll(‘.thumbnail’);
imageGalleries[index] = [];
// Recriar dados da galeria
thumbnails.forEach((img, imgIndex) => {
// Atualizar atributos
img.setAttribute(‘data-gallery-group’, index);
img.setAttribute(‘data-image-index’, imgIndex);
// Recriar onclick
img.onclick = function() {
openModalCustom(imgIndex, index);
};
// Adicionar aos dados
imageGalleries[index].push({
src: img.src,
alt: img.alt,
fileEntryId: img.getAttribute(‘data-fileentryid’),
imageIndex: imgIndex,
originalOrder: imgIndex
});
});
// Atualizar título
const title = container.querySelector(‘.gallery-header h3’);
if (title && imageGalleries[index].length > 0) {
title.textContent = ‘Mais imagens (‘ + imageGalleries[index].length + ‘)’;
}
console.log(‘Galeria ‘ + index + ‘ reconstruída com ‘ + imageGalleries[index].length + ‘ imagens’);
});
console.log(‘Reconstrução concluída:’, imageGalleries);
}
// Função principal para lidar com reordenação (simplificada)
function handleFieldReorder() {
console.log(‘Processando reordenação de campos…’);
// Fechar modal se estiver aberto
const modal = document.getElementById(‘imageModalCustom’);
if (modal && modal.style.display === ‘block’) {
closeModalCustom();
}
// Aguardar e reinicializar
setTimeout(function() {
console.log(‘Reinicializando galerias…’);
updateGroupIds();
initGalleryCustom();
}, 200);
}
// Atualizar os IDs dos grupos após reordenação para manter consistência
function updateGroupIds() {
const galleryContainers = document.querySelectorAll(‘.gallery-container-custom’);
galleryContainers.forEach((container, newIndex) => {
const oldGroupId = container.getAttribute(‘data-gallery-group’);
const newGroupId = newIndex.toString();
if (oldGroupId !== newGroupId) {
console.log(‘Atualizando grupo ID de ‘ + oldGroupId + ‘ para ‘ + newGroupId);
// Atualizar o container
container.setAttribute(‘data-gallery-group’, newGroupId);
// Atualizar todos os thumbnails deste grupo
const thumbnails = container.querySelectorAll(‘.thumbnail’);
thumbnails.forEach((img, imgIndex) => {
img.setAttribute(‘data-gallery-group’, newGroupId);
img.setAttribute(‘data-image-index’, imgIndex);
});
// Atualizar script JSON se existir
const script = document.querySelector(‘script.gallery-data[data-gallery-group=”‘ + oldGroupId + ‘”]’);
if (script) {
script.setAttribute(‘data-gallery-group’, newGroupId);
}
}
});
}
// Observador adicional para mudanças no DOM relacionadas aos campos de imagem
const imageFieldObserver = new MutationObserver(function(mutations) {
let shouldReinitialize = false;
mutations.forEach(function(mutation) {
if (mutation.type === ‘childList’) {
mutation.addedNodes.forEach(function(node) {
if (node.nodeType === 1) {
// Verificar se é um campo de imagem ou contém campos de imagem
if (node.classList && node.classList.contains(‘lfr-forms__form-view-field-repeatable-dnd’) ||
node.querySelector && node.querySelector(‘.gallery-container-custom’)) {
shouldReinitialize = true;
}
}
});
mutation.removedNodes.forEach(function(node) {
if (node.nodeType === 1) {
if (node.classList && node.classList.contains(‘lfr-forms__form-view-field-repeatable-dnd’) ||
node.querySelector && node.querySelector(‘.gallery-container-custom’)) {
shouldReinitialize = true;
}
}
});
}
});
if (shouldReinitialize) {
setTimeout(initGalleryCustom, 300);
}
});
// Observar mudanças no body para capturar reordenações
imageFieldObserver.observe(document.body, {
childList: true,
subtree: true
});
// Navegação por teclado
document.addEventListener(‘keydown’, function(e) {
const modal = document.getElementById(‘imageModalCustom’);
if (modal && modal.style.display === ‘block’) {
if (e.key === ‘Escape’) {
closeModalCustom();
} else if (e.key === ‘ArrowLeft’) {
prevImageModal();
} else if (e.key === ‘ArrowRight’) {
nextImageModal();
}
}
});
$(‘#lightbox-gpkx_ .slider-gallery-wrapper img’).hover(
function() {
const $text=$($($(this).parent()).next());
$text.hasClass(‘inside-description’) && $text.fadeTo( “slow” , 0);
}, function() {
const $text=$($($(this).parent()).next());
$text.hasClass(‘inside-description’) && $text.fadeTo( “slow” , 1);
}
);
$(document).ready(function() {
});
Liferay.on(“allPortletsReady”, function() {
$(‘#header_custom_print’).attr(‘href’, $(“[title*=’Imprimir’]”).children().attr(‘href’));
})
.banner-final-noticia {
margin: 25px auto 20px auto;
padding: 15px 0;
text-align: center;
width: 100%;
max-width: 800px; /* Largura reduzida */
border-top: 1px solid #e6e6e6;
border-bottom: 1px solid #f0f0f0;
}
.banner-final-noticia a {
display: inline-block;
width: 100%;
text-decoration: none;
transition: all 0.3s ease;
}
.banner-final-noticia a:hover {
transform: translateY(-1px);
box-shadow: 0 6px 15px rgba(0, 0, 0, 0.1);
}
.banner-final-noticia .banner-image {
width: 100%;
height: auto;
min-height: 80px; /* Altura mínima reduzida */
max-height: 150px; /* Altura máxima reduzida */
object-fit: cover; /* Mantém proporção e preenche o espaço */
object-position: center;
border-radius: 6px;
box-shadow: 0 2px 10px rgba(0, 0, 0, 0.08);
transition: all 0.3s ease;
cursor: pointer;
}
.banner-final-noticia .banner-image:hover {
opacity: 0.9;
box-shadow: 0 4px 12px rgba(0, 0, 0, 0.12);
}
.banner-final-noticia .banner-legenda {
margin-top: 10px;
font-size: 13px;
font-style: italic;
color: #666;
line-height: 1.4;
max-width: 700px;
margin-left: auto;
margin-right: auto;
}
/* === RESPONSIVIDADE === */
/* Tablets */
@media (max-width: 1024px) {
.banner-final-noticia {
margin: 20px auto 15px auto;
padding: 12px 10px;
max-width: 90%;
}
.banner-final-noticia .banner-image {
min-height: 70px;
max-height: 120px;
border-radius: 5px;
}
.banner-final-noticia .banner-legenda {
font-size: 13px;
max-width: 90%;
}
}
/* Mobile */
@media (max-width: 768px) {
.banner-final-noticia {
margin: 15px auto 12px auto;
padding: 10px 5px;
max-width: 95%;
}
.banner-final-noticia .banner-image {
min-height: 60px;
max-height: 100px;
border-radius: 4px;
}
.banner-final-noticia .banner-legenda {
font-size: 12px;
margin-top: 8px;
padding: 0 10px;
}
.banner-final-noticia a:hover {
transform: none; /* Remove efeito hover no mobile */
}
}
/* Mobile pequeno */
@media (max-width: 480px) {
.banner-final-noticia {
margin: 12px auto 10px auto;
padding: 8px 0;
}
.banner-final-noticia .banner-image {
min-height: 50px;
max-height: 80px;
}
.banner-final-noticia .banner-legenda {
font-size: 11px;
padding: 0 15px;
}
}
.gallery-container-custom {
max-width: 800px;
margin: 20px auto;
background: white;
border-radius: 10px;
box-shadow: 0 4px 6px rgba(0,0,0,0.1);
overflow: hidden;
font-family: Arial, sans-serif;
}
.gallery-header {
background: #e8e8e8;
padding: 15px;
border-bottom: 2px dotted #ccc;
}
.gallery-header h3 {
color: #333;
font-size: 14px;
margin: 0 0 10px 0;
}
.thumbnail-container {
display: flex;
gap: 10px;
flex-wrap: wrap;
justify-content: flex-start;
}
/* Adaptação automática baseada na quantidade de imagens */
.thumbnail-container.images-1 {
justify-content: center;
}
.thumbnail-container.images-2 {
justify-content: center;
}
.thumbnail-container.images-3 {
justify-content: center;
}
.thumbnail-container.images-4 {
justify-content: center;
}
.thumbnail-container.images-5-plus {
justify-content: flex-start;
}
/* Tamanhos adaptativos dos thumbnails */
.thumbnail-container.images-1 .thumbnail {
width: 80px;
height: 80px;
}
.thumbnail-container.images-2 .thumbnail {
width: 70px;
height: 70px;
}
.thumbnail-container.images-3 .thumbnail {
width: 65px;
height: 65px;
}
.thumbnail-container.images-4 .thumbnail {
width: 60px;
height: 60px;
}
.thumbnail-container.images-5-plus .thumbnail {
width: 55px;
height: 55px;
}
.thumbnail {
width: 60px;
height: 60px;
border-radius: 5px;
object-fit: cover;
cursor: pointer;
transition: transform 0.2s, box-shadow 0.2s;
border: 2px solid transparent;
}
.thumbnail:hover {
transform: scale(1.05);
box-shadow: 0 2px 8px rgba(0,0,0,0.2);
border-color: #007bff;
}
/* Modal Styles */
.image-modal {
display: none;
position: fixed;
z-index: 1000;
left: 0;
top: 0;
width: 100%;
height: 100%;
background-color: rgba(0,0,0,0.9);
animation: fadeIn 0.3s;
}
.modal-content-custom {
position: absolute;
top: 50%;
left: 50%;
transform: translate(-50%, -50%);
max-width: 90%;
max-height: 90%;
text-align: center;
}
.modal-image {
max-width: 100%;
max-height: 80vh;
object-fit: contain;
border-radius: 10px;
box-shadow: 0 4px 20px rgba(255,255,255,0.1);
}
.modal-description {
background: white;
color: #333;
padding: 15px;
margin-top: 15px;
border-radius: 8px;
font-size: 16px;
box-shadow: 0 2px 10px rgba(0,0,0,0.2);
max-width: 600px;
margin-left: auto;
margin-right: auto;
}
.modal-close {
position: absolute;
top: 15px;
right: 25px;
color: white;
font-size: 35px;
font-weight: bold;
cursor: pointer;
transition: color 0.3s;
z-index: 1001;
}
.modal-close:hover {
color: #007bff;
}
/* Navegação no Modal */
.modal-nav {
position: absolute;
top: 50%;
transform: translateY(-50%);
background: rgba(0,0,0,0.7);
color: white;
border: none;
width: 50px;
height: 50px;
border-radius: 50%;
cursor: pointer;
font-size: 24px;
display: flex;
align-items: center;
justify-content: center;
transition: background 0.3s;
z-index: 1002;
}
.modal-nav:hover {
background: rgba(0,0,0,0.9);
}
.modal-nav:disabled {
opacity: 0.3;
cursor: not-allowed;
}
.modal-prev {
left: 20px;
}
.modal-next {
right: 20px;
}
.modal-counter {
position: absolute;
top: 20px;
left: 50%;
transform: translateX(-50%);
background: rgba(0,0,0,0.7);
color: white;
padding: 8px 16px;
border-radius: 20px;
font-size: 14px;
z-index: 1002;
}
@keyframes fadeIn {
from { opacity: 0; }
to { opacity: 1; }
}
/* Responsive Design */
@media (max-width: 768px) {
.gallery-container-custom {
margin: 10px;
}
/* Ajustes para mobile – thumbnails menores */
.thumbnail-container.images-1 .thumbnail {
width: 60px;
height: 60px;
}
.thumbnail-container.images-2 .thumbnail {
width: 55px;
height: 55px;
}
.thumbnail-container.images-3 .thumbnail {
width: 50px;
height: 50px;
}
.thumbnail-container.images-4 .thumbnail {
width: 45px;
height: 45px;
}
.thumbnail-container.images-5-plus .thumbnail {
width: 40px;
height: 40px;
}
.modal-close {
font-size: 28px;
top: 10px;
right: 15px;
}
.modal-description {
font-size: 14px;
padding: 12px;
}
.modal-nav {
width: 40px;
height: 40px;
font-size: 20px;
}
.modal-prev {
left: 10px;
}
.modal-next {
right: 10px;
}
.modal-counter {
font-size: 12px;
padding: 6px 12px;
}
}
@media (max-width: 480px) {
/* Para telas muito pequenas */
.thumbnail-container {
gap: 8px;
}
.thumbnail-container.images-5-plus .thumbnail {
width: 35px;
height: 35px;
}
.gallery-header h3 {
font-size: 12px;
}
}
Source: TST

Leave a Comment