.elementor-1798849 .elementor-element.elementor-element-6a9f74d{overflow:visible;}.elementor-widget-text-editor{font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-weight:var( --e-global-typography-text-font-weight );color:var( --e-global-color-text );}.elementor-widget-text-editor.elementor-drop-cap-view-stacked .elementor-drop-cap{background-color:var( --e-global-color-primary );}.elementor-widget-text-editor.elementor-drop-cap-view-framed .elementor-drop-cap, .elementor-widget-text-editor.elementor-drop-cap-view-default .elementor-drop-cap{color:var( --e-global-color-primary );border-color:var( --e-global-color-primary );}.elementor-1798849 .elementor-element.elementor-element-1a87591{margin-top:0px;margin-bottom:0px;padding:0px 0px 0px 0px;overflow:visible;}.elementor-1798849 .elementor-element.elementor-element-164cbd8 > .elementor-element-populated{transition:background 0.3s, border 0.3s, border-radius 0.3s, box-shadow 0.3s;padding:0px 0px 0px 0px;}.elementor-1798849 .elementor-element.elementor-element-164cbd8 > .elementor-element-populated > .elementor-background-overlay{transition:background 0.3s, border-radius 0.3s, opacity 0.3s;}.elementor-1798849 .elementor-element.elementor-element-9f7c392{margin:0px 0px calc(var(--kit-widget-spacing, 0px) + 0px) 0px;padding:0px 0px 0px 0px;}@media(max-width:1024px){.elementor-1798849 .elementor-element.elementor-element-164cbd8 > .elementor-element-populated{padding:5px 5px 5px 5px;}}@media(max-width:767px){.elementor-1798849 .elementor-element.elementor-element-164cbd8 > .elementor-element-populated, .elementor-1798849 .elementor-element.elementor-element-164cbd8 > .elementor-element-populated > .elementor-background-overlay, .elementor-1798849 .elementor-element.elementor-element-164cbd8 > .elementor-background-slideshow{border-radius:0px 0px 0px 0px;}.elementor-1798849 .elementor-element.elementor-element-164cbd8 > .elementor-element-populated{padding:05px 05px 05px 05px;}}/* Start custom CSS for html, class: .elementor-element-9f7c392 */<style>
    @import url('https://fonts.googleapis.com/css2?family=Karla:wght@400;700&display=swap');

    #legale-ferramenta-calculadora-prazos {
        font-family: 'Karla', sans-serif;
        background-color: #f9f9f9;
        padding: 20px;
        border-radius: 8px;
        border: 1px solid #e0e0e0;
        max-width: 600px; /* Ajuste conforme necessidade */
        margin: 20px auto;
        color: #333333;
    }

    #legale-ferramenta-calculadora-prazos h3 {
        color: #A31423; /* Vermelho Legale */
        text-align: center;
        margin-bottom: 25px;
        font-size: 1.8em;
    }

    #legale-ferramenta-calculadora-prazos h4 {
        color: #A31423; /* Vermelho Legale */
        margin-top: 0;
        margin-bottom: 15px;
        font-size: 1.3em;
        border-bottom: 2px solid #A31423;
        padding-bottom: 5px;
    }

    #legale-ferramenta-calculadora-prazos p {
        margin-bottom: 15px;
        line-height: 1.6;
    }

    #legale-ferramenta-calculadora-prazos label {
        display: block;
        margin-bottom: 5px;
        font-weight: bold;
        color: #555555;
    }

    #legale-ferramenta-calculadora-prazos input[type="date"],
    #legale-ferramenta-calculadora-prazos input[type="number"],
    #legale-ferramenta-calculadora-prazos input[type="text"],
    #legale-ferramenta-calculadora-prazos select {
        width: 100%;
        padding: 10px;
        border: 1px solid #cccccc;
        border-radius: 4px;
        box-sizing: border-box; /* Para padding não aumentar a largura total */
        margin-bottom: 10px;
        font-family: 'Karla', sans-serif;
        font-size: 1em;
    }
    
    #legale-ferramenta-calculadora-prazos input[type="text"]#legale-feriados-adicionais {
         width: calc(100% - 22px); /* Ajuste para consistência se houver ícones ou padding extra */
    }


    #legale-ferramenta-calculadora-prazos button {
        background-color: #A31423; /* Vermelho Legale */
        color: white;
        padding: 12px 20px;
        border: none;
        border-radius: 4px;
        cursor: pointer;
        font-size: 1em;
        font-family: 'Karla', sans-serif;
        font-weight: bold;
        margin-top: 10px;
        margin-right: 10px;
        transition: background-color 0.3s ease;
    }

    #legale-ferramenta-calculadora-prazos button:hover {
        background-color: #820f1b; /* Vermelho Legale mais escuro */
    }

    #legale-ferramenta-calculadora-prazos button:disabled {
        background-color: #cccccc;
        cursor: not-allowed;
    }
    
    /* Estilo para botão secundário (Voltar) */
    #legale-ferramenta-step-2 button:first-of-type { /* Botão Voltar */
        background-color: #6c757d; /* Cinza */
    }
     #legale-ferramenta-step-2 button:first-of-type:hover {
        background-color: #5a6268;
    }


    #legale-ferramenta-resultado {
        background-color: #e9f5e9; /* Verde claro para sucesso/resultado */
        padding: 15px;
        border-radius: 4px;
        margin-top: 20px;
        border: 1px solid #c3e6cb; /* Borda verde */
    }
    
    #legale-ferramenta-resultado p {
        margin-bottom: 0;
        font-size: 1.1em;
    }
    
    #legale-ferramenta-resultado strong {
        color: #155724; /* Verde escuro */
    }

    #legale-ferramenta-calculadora-prazos div[id^="legale-ferramenta-step-"],
    #legale-ferramenta-resultado {
        padding: 20px;
        border: 1px solid #ddd;
        background-color: #ffffff;
        border-radius: 5px;
        margin-top: 20px;
    }
    
    #legale-ferramenta-calculadora-prazos small, 
    #legale-ferramenta-calculadora-prazos p em {
        font-size: 0.85em;
        color: #777777;
    }

    #legale-ferramenta-calculadora-prazos strong {
         color: #333; /* cor padrão para strong no corpo */
    }
    
    #legale-ferramenta-resultado #legale-resultado-texto strong {
        color: #A31423; /* Destaque para a data no resultado */
    }

</style>

<div id="legale-ferramenta-calculadora-prazos">
    <h3>Calculadora de Prazos em Processos Administrativos</h3>

    <div id="legale-ferramenta-step-1">
        <h4>Passo 1: Informações do Prazo</h4>
        <p>
            <label for="legale-data-inicio">Data de Início do Prazo (da cientificação oficial):</label>
            <input type="date" id="legale-data-inicio" name="legale-data-inicio">
        </p>
        <p>
            <label for="legale-duracao-prazo">Duração do Prazo (em dias):</label>
            <input type="number" id="legale-duracao-prazo" name="legale-duracao-prazo" min="1" value="5">
        </p>
        <p>
            <label for="legale-tipo-contagem">Tipo de Contagem:</label>
            <select id="legale-tipo-contagem" name="legale-tipo-contagem">
                <option value="corridos">Dias Corridos (Lei 9.784/99)</option>
                <option value="uteis">Dias Úteis (conforme CPC/Legislação Específica)</option>
            </select>
        </p>
        <button onclick="legaleCalculadoraPrazosGoToStep2()">Avançar</button>
    </div>

    <div id="legale-ferramenta-step-2" style="display:none;">
        <h4>Passo 2: Feriados no Período</h4>
        <p>Informe abaixo os feriados (nacionais não fixos, estaduais, municipais ou pontos facultativos) que ocorrem durante o período do prazo. <br><em>Use o formato DD/MM (para feriados anuais) ou DD/MM/AAAA (para feriados específicos). Separe por vírgula.</em></p>
        <p><strong>Feriados Nacionais Fixos já considerados (não precisa adicionar):</strong> 01/01, 21/04, 01/05, 07/09, 12/10, 02/11, 15/11, 25/12.</p>
        <p>
            <label for="legale-feriados-adicionais">Feriados Adicionais (ex: 20/11, 25/01/2025):</label>
            <input type="text" id="legale-feriados-adicionais" name="legale-feriados-adicionais">
        </p>
        <button onclick="legaleCalculadoraPrazosGoToStep1()">Voltar</button>
        <button onclick="legaleCalculadoraPrazosCalcular()">Calcular Prazo</button>
    </div>

    <div id="legale-ferramenta-resultado" style="display:none;">
        <h4>Resultado do Cálculo</h4>
        <p id="legale-resultado-texto"></p>
        <button onclick="legaleCalculadoraPrazosNovoCalculo()">Novo Cálculo</button>
    </div>

    <p style="font-size:0.8em; margin-top:15px; text-align: center;">
        <em><strong>Atenção:</strong> Esta calculadora é uma ferramenta de auxílio e referência. Os resultados devem ser sempre validados por um advogado.
        Verifique a legislação específica aplicável ao seu caso, os atos normativos do órgão competente e o calendário oficial de feriados e pontos facultativos da localidade.
        A contagem de prazos é uma atividade complexa que pode ser influenciada por diversos fatores não abordados integralmente por esta ferramenta simplificada.
        Esta ferramenta não substitui a consulta a um profissional qualificado.</em>
    </p>
</div>

<script>
    // Feriados Nacionais Fixos (Formato MM-DD para facilitar a comparação com o ano da data)
    const legaleFeriadosNacionaisFixos = [
        "01-01", // Confraternização Universal
        "04-21", // Tiradentes
        "05-01", // Dia do Trabalho
        "09-07", // Independência do Brasil
        "10-12", // Nossa Senhora Aparecida
        "11-02", // Finados
        "11-15", // Proclamação da República
        "12-25"  // Natal
    ];

    let legaleDataInicioGlobal;
    let legaleDuracaoPrazoGlobal;
    let legaleTipoContagemGlobal;
    let legaleFeriadosAdicionaisGlobal = [];

    function legaleParseDate(input) {
        const parts = input.split('-'); // Espera AAAA-MM-DD
        if (parts.length === 3) {
            // Month is 0-indexed in JavaScript Date
            return new Date(parseInt(parts[0]), parseInt(parts[1]) - 1, parseInt(parts[2]));
        }
        return null;
    }

    function legaleFormatDate(date) {
        if (!date || isNaN(date.getTime())) return "Data Inválida";
        const dia = String(date.getDate()).padStart(2, '0');
        const mes = String(date.getMonth() + 1).padStart(2, '0'); // Month is 0-indexed
        const ano = date.getFullYear();
        const diasSemana = ["Domingo", "Segunda-feira", "Terça-feira", "Quarta-feira", "Quinta-feira", "Sexta-feira", "Sábado"];
        return `${dia}/${mes}/${ano} (${diasSemana[date.getDay()]})`;
    }
    
    function legaleIsWeekend(date) {
        const day = date.getDay();
        return day === 0 || day === 6; // 0 = Domingo, 6 = Sábado
    }

    function legaleIsFeriado(date, feriadosAdicionais) {
        if (isNaN(date.getTime())) return false; // Data inválida não é feriado

        const mesDia = String(date.getMonth() + 1).padStart(2, '0') + "-" + String(date.getDate()).padStart(2, '0');
        if (legaleFeriadosNacionaisFixos.includes(mesDia)) {
            return true;
        }
        
        const dataCompletaFormatada = String(date.getDate()).padStart(2, '0') + "/" + String(date.getMonth() + 1).padStart(2, '0') + "/" + date.getFullYear();
        const mesDiaSemAnoFormatado = String(date.getDate()).padStart(2, '0') + "/" + String(date.getMonth() + 1).padStart(2, '0');

        for (const feriado of feriadosAdicionais) {
            // Compara DD/MM (independente do ano)
            if (feriado.length === 5 && feriado === mesDiaSemAnoFormatado) return true;
            // Compara DD/MM/AAAA (ano específico)
            if (feriado.length === 10 && feriado === dataCompletaFormatada) return true; 
        }
        return false;
    }
    
    function legaleIsDiaUtil(date, feriadosAdicionais) {
        if (isNaN(date.getTime())) return false; // Data inválida não é dia útil
        return !legaleIsWeekend(date) && !legaleIsFeriado(date, feriadosAdicionais);
    }

    function legaleCalculadoraPrazosGoToStep1() {
        document.getElementById('legale-ferramenta-step-1').style.display = 'block';
        document.getElementById('legale-ferramenta-step-2').style.display = 'none';
        document.getElementById('legale-ferramenta-resultado').style.display = 'none';
    }

    function legaleCalculadoraPrazosGoToStep2() {
        const dataInicioInput = document.getElementById('legale-data-inicio').value;
        const duracaoPrazoInput = document.getElementById('legale-duracao-prazo').value;

        if (!dataInicioInput) {
            alert("Por favor, informe a Data de Início do Prazo.");
            return;
        }
        legaleDataInicioGlobal = legaleParseDate(dataInicioInput);
         if (!legaleDataInicioGlobal || isNaN(legaleDataInicioGlobal.getTime())) {
             alert("Data de início inválida. Por favor, selecione uma data válida.");
             return;
        }

        if (!duracaoPrazoInput || parseInt(duracaoPrazoInput) <= 0) {
            alert("Por favor, informe uma Duração do Prazo válida (maior que zero).");
            return;
        }
        
        legaleDuracaoPrazoGlobal = parseInt(duracaoPrazoInput);
        legaleTipoContagemGlobal = document.getElementById('legale-tipo-contagem').value;
        
        document.getElementById('legale-ferramenta-step-1').style.display = 'none';
        document.getElementById('legale-ferramenta-step-2').style.display = 'block';
        document.getElementById('legale-ferramenta-resultado').style.display = 'none';
    }

    function legaleCalculadoraPrazosNovoCalculo() {
        document.getElementById('legale-data-inicio').value = '';
        document.getElementById('legale-duracao-prazo').value = '5';
        document.getElementById('legale-tipo-contagem').value = 'corridos';
        document.getElementById('legale-feriados-adicionais').value = '';
        legaleFeriadosAdicionaisGlobal = [];
        legaleCalculadoraPrazosGoToStep1();
    }

    function legaleProcessarFeriadosAdicionais() {
        const inputFeriados = document.getElementById('legale-feriados-adicionais').value;
        if (inputFeriados.trim() === "") {
            return [];
        }
        return inputFeriados.split(',')
            .map(f => f.trim())
            .filter(f => f.match(/^(\d{1,2}\/\d{1,2}|\d{1,2}\/\d{1,2}\/\d{4})$/))
            .map(f => { // Normaliza para DD/MM ou DD/MM/AAAA com zero à esquerda
                let parts = f.split('/');
                parts[0] = parts[0].padStart(2, '0');
                parts[1] = parts[1].padStart(2, '0');
                return parts.join('/');
            });
    }

    function legaleCalculadoraPrazosCalcular() {
        if (!legaleDataInicioGlobal || isNaN(legaleDataInicioGlobal.getTime())) {
            alert("Erro: Data de início não definida corretamente. Por favor, reinicie o cálculo.");
            legaleCalculadoraPrazosNovoCalculo();
            return;
        }

        legaleFeriadosAdicionaisGlobal = legaleProcessarFeriadosAdicionais();
        let dataVencimento = new Date(legaleDataInicioGlobal.getTime()); 
        let resultadoTexto = "";

        let textoFeriadosInformados = "Nenhum feriado adicional informado.";
        if (legaleFeriadosAdicionaisGlobal.length > 0) {
            textoFeriadosInformados = `Feriados adicionais considerados: ${legaleFeriadosAdicionaisGlobal.join(', ')}.`;
        }


        if (legaleTipoContagemGlobal === "corridos") {
            dataVencimento.setDate(dataVencimento.getDate() + legaleDuracaoPrazoGlobal);

            let originalVencimento = new Date(dataVencimento.getTime());
            let prorrogacoesInfo = "";

            while (!legaleIsDiaUtil(dataVencimento, legaleFeriadosAdicionaisGlobal)) {
                let motivo = legaleIsWeekend(dataVencimento) ? "fim de semana" : "feriado";
                prorrogacoesInfo += `Vencimento original em ${legaleFormatDate(dataVencimento)} (${motivo}), prorrogado para o próximo dia útil.<br>`;
                dataVencimento.setDate(dataVencimento.getDate() + 1);
            }
            
            resultadoTexto = `Contagem em Dias Corridos (Lei 9.784/99):<br>
                              Data de Início (Cientificação): ${legaleFormatDate(legaleDataInicioGlobal)}<br>
                              Duração do Prazo: ${legaleDuracaoPrazoGlobal} dias<br>
                              ${textoFeriadosInformados}<br><br>
                              ${prorrogacoesInfo}
                              <strong>Data Final do Prazo: ${legaleFormatDate(dataVencimento)}</strong>`;

        } else if (legaleTipoContagemGlobal === "uteis") {
            let diasUteisContados = 0;
            let dataAtual = new Date(legaleDataInicioGlobal.getTime()); 
            
            dataAtual.setDate(dataAtual.getDate() + 1); 

            while (diasUteisContados < legaleDuracaoPrazoGlobal) {
                if (legaleIsDiaUtil(dataAtual, legaleFeriadosAdicionaisGlobal)) {
                    diasUteisContados++;
                }
                if (diasUteisContados < legaleDuracaoPrazoGlobal) { 
                    dataAtual.setDate(dataAtual.getDate() + 1);
                }
            }
            dataVencimento = dataAtual; 
            
            resultadoTexto = `Contagem em Dias Úteis (CPC / Legislação Específica):<br>
                              Data de Início (Cientificação): ${legaleFormatDate(legaleDataInicioGlobal)}<br>
                              Duração do Prazo: ${legaleDuracaoPrazoGlobal} dias úteis<br>
                              ${textoFeriadosInformados}<br><br>
                              <strong>Data Final do Prazo: ${legaleFormatDate(dataVencimento)}</strong>`;
        }

        document.getElementById('legale-resultado-texto').innerHTML = resultadoTexto;
        document.getElementById('legale-ferramenta-step-1').style.display = 'none';
        document.getElementById('legale-ferramenta-step-2').style.display = 'none';
        document.getElementById('legale-ferramenta-resultado').style.display = 'block';
    }
</script>/* End custom CSS */