basic / index.html
maralvic's picture
Update index.html
9697463 verified
<!DOCTYPE html>
<html lang="pt-BR">
<head>
<meta charset="UTF-8">
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<title>Prof. Marcelo Vicente | Tributarista - @profmarcelovicente</title>
<script src="https://cdn.tailwindcss.com"></script>
<link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.4.0/css/all.min.css">
<style>
@import url('https://fonts.cdnfonts.com/css/arial-rounded-mt');
* {
font-family: 'Arial Rounded MT', sans-serif;
}
.search-container {
background-color: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
margin-bottom: 20px;
display: flex;
}
input {
padding: 10px;
flex-grow: 1;
border: 1px solid #ddd;
border-radius: 4px;
font-size: 16px;
}
.search-container button {
padding: 10px 15px;
border: none;
border-radius: 4px;
cursor: pointer;
font-size: 16px;
margin-left: 10px;
}
.result {
background-color: white;
padding: 20px;
border-radius: 8px;
box-shadow: 0 2px 4px rgba(0,0,0,0.1);
margin-top: 20px;
}
.city-item {
margin: 10px 0;
padding: 10px;
border-bottom: 1px solid #eee;
display: flex;
justify-content: space-between;
align-items: center;
}
.access-btn {
background-color: #2196F3;
padding: 5px 10px;
color: white;
text-decoration: none;
border-radius: 4px;
font-size: 14px;
}
.access-btn:hover {
background-color: #0b7dda;
}
.error {
color: #f44336;
}
.loading {
color: #666;
font-style: italic;
}
.loader {
border: 4px solid #f3f3f3;
border-top: 4px solid #3498db;
border-radius: 50%;
width: 30px;
height: 30px;
animation: spin 1s linear infinite;
margin: 20px auto;
}
@keyframes spin {
0% { transform: rotate(0deg); }
100% { transform: rotate(360deg); }
}
.loading-container {
text-align: center;
padding: 20px;
}
<!-- Original Section -->
.profmarcelovicente-bg {
background-color: #5466DD;
}
.profmarcelovicente-text {
color: #667eea;
}
.profmarcelovicente-border {
border-color: #667eea;
}
.profmarcelovicente-btn {
background-color: #6778EE;
color: white;
}
.profmarcelovicente-btn:hover {
background-color: #5b68c7;
}
.dropdown:hover .dropdown-menu {
display: block;
}
html {
scroll-behavior: smooth;
}
.hero-pattern {
background-image: radial-gradient(#2b6cb0 1px, transparent 1px);
background-size: 20px 20px;
}
</style>
</head>
<body class="bg-gray-50">
<!-- Header -->
<header class="text-white shadow-lg" style="background-color: #5466DD;">
<div class="container mx-auto px-4 py-3 flex justify-between items-center">
<div class="text-xl"><a href="https://marcelovicente.prof" style="color: #fff;text-decoration: none;" target="_self" >@profmarcelovicente</a></div>
<div class="flex space-x-4">
<a href="https://instagram.com/profmarcelovicente" target="_blank" class="transition">
<i class="fab fa-instagram text-2xl"></i>
</a>
<a href="https://facebook.com/profmarcelovicente" target="_blank" class="transition">
<i class="fab fa-facebook text-2xl"></i>
</a>
<a href="https://youtube.com/@profmarcelovicente" target="_blank" class="transition">
<i class="fab fa-youtube text-2xl"></i>
</a>
<a href="https://www.linkedin.com/company/profmarcelovicente" target="_blank" class="transition">
<i class="fab fa-linkedin text-2xl"></i>
</a>
</div>
</div> <!-- Close grid div -->
</header>
<!-- Hero Section -->
<section class="text-white bg-cover bg-center" style="background-image: url('https://marcelovicente.prof/img/capa_02.png')">
<div class="bg-blue-900 bg-opacity-70 py-2">
<div class="container mx-auto px-4 text-center py-8">
<h1 class="text-4xl md:text-5xl mb-6">Negociações Tributárias nos Municípios e no DF</h1>
<p class="text-xl md:text-2xl mb-8">Confira as modalidades de negociação disponíveis nas Unidades Federadas</p>
<div class="mt-8 text-center">
<a href="https://marcelovicente.prof/live1947" target="_blank" class="inline-block profmarcelovicente-btn text-xl font-semibold px-8 py-3 rounded-full hover:shadow-md transition-all">
<i class="fas fa-rocket"></i> Quero me tornar expert!
</a>
</div>
</div>
</div>
</section>
<!-- Content Section -->
<section class="container mx-auto px-4 py-12 max-w-4xl">
<div class="bg-white rounded-lg shadow-lg p-8 mb-8">
<h2 class="text-2xl font-bold profmarcelovicente-text mb-6">As Negociações podem ser a solução para débitos fiscais municipais</h2>
<p class="text-gray-700 mb-4">As negociações tributárias, como parcelamentos e transações — já regulamentadas por muitos municípios —, são mecanismos eficazes para regularizar débitos fiscais, oferecendo desde descontos expressivos até a exclusão total de cobranças indevidas.</p>
<p class="text-gray-700 mb-4">No entanto, sua aplicação exige domínio técnico em todas as etapas, da análise à homologação, para evitar nulidades e garantir resultados vantajosos aos contribuintes. A atuação de um advogado especializado é indispensável para identificar irregularidades, contestar exigências ilegais e definir a estratégia mais adequada, assegurando segurança jurídica e maximizando benefícios.</p>
<p class="text-gray-700 mb-6">Dominar esse nicho permite transformar passivos fiscais em oportunidades, agregando valor ao seu escritório e entregando soluções concretas aos clientes.</p>
<div class="text-center mb-8">
<p class="text-gray-700 font-semibold mb-4">Quer transformar passivos fiscais em oportunidades para seus clientes? Eu te ensino a dominar esse nicho e alavancar seus resultados!</p>
<a href="https://marcelovicente.prof/live1947" target="_blank" class="inline-block profmarcelovicente-btn text-xl font-semibold px-8 py-3 rounded-full hover:shadow-md transition-all">
<i class="fas fa-rocket"></i> Quero alavancar!
</a>
</div>
</div>
<div class="bg-white rounded-lg shadow-lg p-8">
<h3 class="text-xl font-semibold profmarcelovicente-text mb-4 text-center">Confira se no município em que você atua existem programas de parcelamento ou transações tributárias:</h3>
<div class="search-container">
<input type="text" id="cityInput" placeholder="Digite o nome de uma cidade e pressione Enter">
<button id="searchBtn" class="profmarcelovicente-btn"><i class="fas fa-search"></i> Buscar</button>
</div>
<div id="resultContainer" class="result" style="display: none;">
<div id="resultContent"></div>
</div>
<script>
let cachedMunicipios = null;
let currentSearchController = null;
// Adiciona evento de tecla no input
document.getElementById('cityInput').addEventListener('keypress', function(e) {
if (e.key === 'Enter') {
searchCity();
}
});
document.getElementById('searchBtn').addEventListener('click', searchCity);
async function searchCity() {
// Cancela a pesquisa anterior se existir
if (currentSearchController) {
currentSearchController.abort();
}
const input = document.getElementById('cityInput').value.trim();
const resultContainer = document.getElementById('resultContainer');
const resultContent = document.getElementById('resultContent');
resultContainer.style.display = 'block';
resultContent.innerHTML = `
<div class="loading-container">
<div class="loader"></div>
<p>Buscando cidades...</p>
</div>
`;
if (!input) {
resultContent.innerHTML = '<p class="error">Por favor, digite o nome de uma cidade.</p>';
return;
}
try {
// Cria um novo AbortController para esta pesquisa
const controller = new AbortController();
currentSearchController = controller;
if (!cachedMunicipios) {
const response = await fetch('https://servicodados.ibge.gov.br/api/v1/localidades/municipios', {
signal: controller.signal
});
cachedMunicipios = await response.json();
}
const normalizedInput = normalizeString(input).toLowerCase();
const matchedCities = cachedMunicipios.filter(municipio =>
normalizeString(municipio.nome).toLowerCase().includes(normalizedInput)
).map(municipio => ({
name: municipio.nome,
state: municipio.microrregiao.mesorregiao.UF.sigla
}));
if (controller.signal.aborted) return;
if (matchedCities.length === 0) {
resultContent.innerHTML = `<p class="error">O nome "${input}" não corresponde a nenhuma cidade brasileira. Tente outro.</p>`;
return;
}
resultContent.innerHTML = `
<div class="loading-container">
<div class="loader"></div>
<p>Aguarde enquanto os acessos estão sendo gerados...</p>
<div class="w-full bg-gray-200 rounded-full h-2.5 mt-4">
<div id="progressBar" class="bg-blue-600 h-2.5 rounded-full" style="width: 0%"></div>
</div>
</div>
`;
// Update progress bar during URL generation
const progressBar = document.getElementById('progressBar');
const progressInterval = setInterval(() => {
const currentWidth = parseInt(progressBar.style.width) || 0;
const newWidth = Math.min(currentWidth + 5, 95);
progressBar.style.width = `${newWidth}%`;
}, 300);
await displayResults(matchedCities, input, resultContent, controller);
// Complete progress bar and remove it
clearInterval(progressInterval);
progressBar.style.width = '100%';
setTimeout(() => {
progressBar.style.display = 'none';
}, 500);
} catch (error) {
if (error.name !== 'AbortError') {
resultContent.innerHTML = '<p class="error">Erro ao carregar dados das cidades. Tente novamente mais tarde.</p>';
console.error("Erro na busca:", error);
}
} finally {
currentSearchController = null;
}
}
async function displayResults(matchedCities, input, resultElement, controller) {
if (controller.signal.aborted) return;
if (matchedCities.length === 1) {
const city = matchedCities[0];
const cityUrl = await generateAccessibleUrl(city.name, city.state, controller);
if (controller.signal.aborted) return;
resultElement.innerHTML = `
<p>Você está procurando pela cidade de ${city.name}, ${city.state}?</p>
<div class="city-item">
<span>${city.name}, ${city.state}</span>
${cityUrl ?
`<a href="${cityUrl}" class="access-btn" target="_blank">Acessar</a>` :
`<span class="error">Acesso não disponível</span>`}
</div>
`;
} else {
resultElement.innerHTML = `<p>Foram encontradas ${matchedCities.length} cidades com o nome "${input}":</p>`;
for (const city of matchedCities) {
if (controller.signal.aborted) return;
const cityUrl = await generateAccessibleUrl(city.name, city.state, controller);
const cityElement = document.createElement('div');
cityElement.className = 'city-item';
cityElement.innerHTML = `
<span>${city.name}, ${city.state}</span>
${cityUrl ?
`<a href="${cityUrl}" class="access-btn" target="_blank">Acessar</a>` :
`<span class="error">Acesso não disponível</span>`}
`;
resultElement.appendChild(cityElement);
}
}
}
function normalizeString(str) {
return str.normalize('NFD').replace(/[\u0300-\u036f]/g, '')
.replace(/ç/g, 'c')
.replace(/Ç/g, 'C');
}
async function generateAccessibleUrl(cityName, state, controller) {
const baseVariations = [
normalizeString(cityName).toLowerCase().replace(/[\s-]/g, ''),
normalizeString(cityName).toLowerCase().replace(/(\sde|\sdo|\sda|\sdos|\sdas|\s)/g, ''),
getCommonShortName(cityName)
];
const prefixVariations = ['', 'portal.', 'www.portal.', 'prefeitura.'];
const testedUrls = new Set();
const validUrls = [];
for (const base of baseVariations) {
for (const prefix of prefixVariations) {
if (controller.signal.aborted) return null;
const url = `https://${prefix}${base}.${state.toLowerCase()}.gov.br`;
if (!testedUrls.has(url)) {
testedUrls.add(url);
const isAccessible = await checkUrlAccessibility(url, controller);
if (isAccessible) {
validUrls.push(url);
}
}
}
}
return validUrls.length > 0 ? validUrls[0] : null;
}
async function checkUrlAccessibility(url, controller) {
try {
const response = await fetch(url, {
method: 'HEAD',
mode: 'no-cors',
signal: controller.signal
});
return true;
} catch (e) {
if (e.name !== 'AbortError') {
console.warn(`URL não acessível: ${url}`);
}
return false;
}
}
function getCommonShortName(cityName) {
const commonShortNames = {
'são paulo': 'sp',
'rio de janeiro': 'rj',
'belo horizonte': 'bh',
'porto alegre': 'poa',
'são bernardo do campo': 'saobernardo',
'santo andré': 'santoandre',
'são josé dos campos': 'sjc',
'são josé do rio preto': 'riopreto'
};
const lowerName = cityName.toLowerCase();
return commonShortNames[lowerName] ||
normalizeString(cityName).toLowerCase().replace(/[\s-]/g, '').slice(0, 10);
}
</script>
<span style="display: inline-block; height: 0;">
</span>
<!-- Torne-se um Expert Section -->
<div class="mb-12">
<h2 class="text-2xl font-bold profmarcelovicente-text mb-6">Como se tornar um Expert em Negociações?</h2>
<div class="text-center mb-12">
<p class="text-gray-700">A especialização nesse nicho de Direito Tributário eleva o prestígio do seu escritório. Clientes satisfeitos são seus melhores embaixadores, construindo uma reputação de solucionador de problemas.</p><div class="mt-12 text-center">
<a href="https://marcelovicente.prof/live1947" target="_blank" class="inline-block text-xl font-semibold px-8 py-3 rounded-full transition-all" style="background-color: #00CC88; color: white; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);">
<i class="fas fa-play"></i> Quero assistir à Live!
</a>
</div>
<!-- Your new section content goes here -->
</div>
<div class="grid grid-cols-1 md:grid-cols-2 gap-6">
<div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm hover:shadow-md transition-shadow">
<h3 class="text-xl font-bold profmarcelovicente-text mb-3 flex items-center gap-2">
<i class="fas fa-graduation-cap"></i>
<span>01 Especialize-se</span>
</h3>
<p class="text-gray-700">Domine as nuances das Negociações Tributárias e como aplicá-las</p>
</div>
<div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm hover:shadow-md transition-shadow">
<h3 class="text-xl font-bold profmarcelovicente-text mb-3 flex items-center gap-2">
<i class="fas fa-user-plus"></i>
<span>02 Conquiste clientes</span>
</h3>
<p class="text-gray-700">Ofereça soluções que outros profissionais não conhecem</p>
</div>
<div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm hover:shadow-md transition-shadow">
<h3 class="text-xl font-bold profmarcelovicente-text mb-3 flex items-center gap-2">
<i class="fas fa-chart-line"></i>
<span>03 Multiplique sua receita</span>
</h3>
<p class="text-gray-700">Transforme conhecimento especializado em resultados financeiros</p>
</div>
<div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm hover:shadow-md transition-shadow">
<h3 class="text-xl font-bold profmarcelovicente-text mb-3 flex items-center gap-2">
<i class="fas fa-star"></i>
<span>04 Diferenciação</span>
</h3>
<p class="text-gray-700">Posicione-se como especialista em Negociações Tributárias</p>
</div>
<div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm hover:shadow-md transition-shadow">
<h3 class="text-xl font-bold profmarcelovicente-text mb-3 flex items-center gap-2">
<i class="fas fa-users"></i>
<span>05 Networking</span>
</h3>
<p class="text-gray-700">Amplie significativamente sua rede de contatos qualificados em âmbito nacional</p>
</div>
<div class="bg-white border border-gray-200 rounded-lg p-6 shadow-sm hover:shadow-md transition-shadow">
<h3 class="text-xl font-bold profmarcelovicente-text mb-3 flex items-center gap-2">
<i class="fas fa-medal"></i>
<span>06 Autoridade</span>
</h3>
<p class="text-gray-700">Construa reputação como referência em Negociações Tributárias</p>
</div>
</div>
</div>
<!-- Revenue Potential Section -->
<div class="mb-12 rounded-lg p-6 shadow-sm" style="background-color: #00CC88;">
<p class="text-lg font-semibold text-white mb-4 flex items-center gap-2">
<i class="fas fa-rocket"></i>
<span>Que tal adicionar de R$ 10.000,00 a R$ 20.000,00 por mês à receita do seu escritório?</span>
</p>
<p class="text-white">A especialização neste nicho pode ser sua chave para conquistar novos clientes e elevar substancialmente seus ganhos.</p>
<p class="text-white mt-2">Clientes que buscam Negociações Tributárias frequentemente têm outras necessidades fiscais e jurídicas, transformando você no parceiro estratégico para demandas futuras, desde planejamento tributário a recuperação de créditos.</p>
</div>
<!-- Final Section -->
<div class="text-center mb-12">
<p class="text-gray-700 mt-4">Torne-se o especialista indispensável e veja seu escritório prosperar com esta poderosa ferramenta do direito tributário.</p>
<div class="mt-12 text-center">
<a href="https://marcelovicente.prof/live1947" target="_blank" class="inline-block text-xl font-semibold px-8 py-3 rounded-full transition-all" style="background-color: #00CC88; color: white; box-shadow: 0 4px 6px -1px rgba(0, 0, 0, 0.1), 0 2px 4px -1px rgba(0, 0, 0, 0.06);">
<i class="fas fa-rocket"></i> Quero Prosperar!
</a>
</div>
<!-- Your new section content goes here -->
</div>
</section>
<!-- Footer -->
<footer class="text-white py-8" style="background-color: #5466DD;">
<div class="container mx-auto px-4">
<div class="flex flex-col md:flex-row justify-between items-center">
<div class="mb-4 md:mb-0">
<h3 class="text-xl"><a href="https://marcelovicente.prof" style="color: #fff;text-decoration: none;" target="_self" >@profmarcelovicente</a></h3>
<p class="text-blue-200">Prof. Marcelo Vicente | Tributarista </p>
</div>
<div class="flex space-x-6">
<a href="https://instagram.com/profmarcelovicente" target="_blank" class="transition">
<i class="fab fa-instagram text-2xl"></i>
</a>
<a href="https://facebook.com/profmarcelovicente" target="_blank" class="transition">
<i class="fab fa-facebook text-2xl"></i>
</a>
<a href="https://youtube.com/@profmarcelovicente" target="_blank" class="transition">
<i class="fab fa-youtube text-2xl"></i>
</a>
<a href="https://www.linkedin.com/company/profmarcelovicente" target="_blank" class="transition">
<i class="fab fa-linkedin text-2xl"></i>
</a>
</div> </div>
<div class="border-t border-[#6778EE] mt-6 pt-6 text-center text-white">
<p>© 2025 ECJ - Educação Corporativa e Jurídica SS Ltda. Todos os direitos reservados.</p>
</div>
</div>
</footer>
<p style="border-radius: 8px; text-align: center; font-size: 12px; color: #fff; margin-top: 16px;position: fixed; left: 8px; bottom: 8px; z-index: 10; background: rgba(0, 0, 0, 0.8); padding: 4px 8px;"><a href="https://marcelovicente.prof" style="color: #fff;text-decoration: underline;" target="_self" >Voltar ao início</a> | <i class="fas fa-rocket"></i> <a href="https://marcelovicente.prof/tta1947" style="color: #fff;text-decoration: underline;" target="_blank" >Fazer a inscrição!</a></p>
</html>