$(function(){

  $('.hamburger').on('click', function(){
    $('.nav-menu').toggleClass('open');
  });

  $(window).on('scroll', function(){
    if($(this).scrollTop() > 50){
      $('.navbar').addClass('scrolled');
    } else {
      $('.navbar').removeClass('scrolled');
    }
  });

  $('.btn-main, .navbar a').hover(
    function(){ $(this).css('transform','scale(1.05)'); },
    function(){ $(this).css('transform','scale(1)'); }
  );

  $('.quiz-option').on('click', function(){
    var ans = $(this).data('answer');
    var $fb = $(this).closest('.question-card').find('.quiz-feedback');
    if(ans === 'correct'){
      $fb.text('¡Correcto!').addClass('good').removeClass('bad');
    } else {
      $fb.text('Intenta otra vez...').addClass('bad').removeClass('good');
    }
  });

  $('.stat-number').each(function(){
    var $el = $(this);
    var target = parseInt($el.data('target'),10) || 0;
    var count = 0;
    var step = Math.ceil(target/60);
    var interval = setInterval(function(){
      count += step;
      if(count >= target){
        count = target;
        clearInterval(interval);
      }
      $el.text(count);
    }, 30);
  });

  var canvas = document.getElementById('poetryCanvas');
  if(canvas && canvas.getContext){
    var ctx = canvas.getContext('2d');
    ctx.fillStyle = '#eee';
    ctx.fillRect(0,0,canvas.width,canvas.height);
    ctx.fillStyle = '#4a148c';
    ctx.font = '16px Poppins';
    ctx.fillText('Poesía Visual', 80, 30);
    ctx.strokeStyle = '#e91e63';
    ctx.beginPath();
    ctx.moveTo(20,60); ctx.lineTo(280,60); ctx.stroke();
    ctx.fillStyle = '#333';
    ctx.fillText('Metáfora', 40, 100);
    ctx.fillText('Símil', 200, 140);
  }

  $('#buscador-blog').on('submit', function(e){
    e.preventDefault();
    var q = $.trim($('#buscar-blog-input').val() || '').toLowerCase();
    if(!q){
      $('.blog-card').show();
      return;
    }
    $('.blog-card').each(function(){
      var txt = $(this).text().toLowerCase();
      $(this).toggle(txt.indexOf(q) !== -1);
    });
  });

  $('#contacto-form').on('submit', function(e){
    e.preventDefault();
    var ok = true;

    function validarCampo(id, fn){
      var $i = $('#'+id);
      var $err = $('.error-msg[data-for="'+id+'"]');
      var val = $.trim($i.val());
      var mensaje = fn(val);
      if(mensaje){
        ok = false;
        $err.text(mensaje).show();
        $i.addClass('invalid');
      } else {
        $err.text('').hide();
        $i.removeClass('invalid');
      }
    }

    validarCampo('con-nombre', function(v){
      if(!v) return 'Obligatorio.';
      if(!/^[A-Za-zÁÉÍÓÚáéíóúÑñ\s]+$/.test(v)) return 'Solo letras.';
    });
    validarCampo('con-apellido', function(v){
      if(!v) return 'Obligatorio.';
      if(!/^[A-Za-zÁÉÍÓÚáéíóúÑñ\s]+$/.test(v)) return 'Solo letras.';
    });
    validarCampo('con-email', function(v){
      if(!v) return 'Obligatorio.';
      if(!/^[^@]+@[^@]+\.[^@]+$/.test(v)) return 'Correo inválido.';
    });
    validarCampo('con-mensaje', function(v){
      if(!v) return 'Obligatorio.';
      if(v.length < 10) return 'Mínimo 10 caracteres.';
    });

    if(ok){
      $('#contacto-respuesta').text('¡Mensaje enviado (simulado)! Gracias por escribir.').fadeIn();
      this.reset();
    }
  });

  $('.gal-filter').on('click', function(){
    var cat = $(this).data('cat');
    $('.gal-filter').removeClass('active'); $(this).addClass('active');
    if(cat === 'all'){
      $('.gal-item').show();
    } else {
      $('.gal-item').hide().filter('[data-cat="'+cat+'"]').show();
    }
  });

  $('.gal-item img').on('click', function(){
    var src = $(this).attr('src');
    $('#lightbox-img').attr('src', src);
    $('#lightbox').attr('aria-hidden','false').fadeIn();
  });
  $('.lightbox-close, #lightbox').on('click', function(e){
    if(e.target !== this && !$(e.target).hasClass('lightbox-close')) return;
    $('#lightbox').fadeOut(function(){
      $('#lightbox').attr('aria-hidden','true');
      $('#lightbox-img').attr('src','');
    });
  });

  $('#ej-gramatica').on('submit', function(e){
    e.preventDefault();
    var verbo = $.trim($(this).find('input[name="v1"]').val());
    var tiempo = $(this).find('select[name="t1"]').val();
    var msg = '';
    if(!verbo || !tiempo){
      msg = 'Completa ambos campos.';
    } else {
      msg = 'Bien, "'+verbo+'" en tiempo '+tiempo+'. (Revisión manual en clase)';
    }
    $('#ej-gramatica-res').text(msg);
    this.reset();
  });

  $('#redac-contar').on('click', function(){
    var txt = $('#redac-texto').val();
    var palabras = txt.trim() ? txt.trim().split(/\s+/).length : 0;
    $('#redac-info').text('Palabras: '+palabras);
  });
  $('#redac-mayus').on('click', function(){
    $('#redac-texto').val(function(_,v){return v.toUpperCase();});
  });
  $('#redac-minus').on('click', function(){
    $('#redac-texto').val(function(_,v){return v.toLowerCase();});
  });
  $('#redac-limpiar').on('click', function(){
    $('#redac-texto').val('');
    $('#redac-info').text('');
  });
  $('.plantilla-btn').on('click', function(){
    $('#redac-texto').val($(this).data('text'));
    $('#redac-info').text('Plantilla cargada.');
  });

  var respuestasQuiz = {
    q1:'B', q2:'B', q3:'B', q4:'C', q5:'B'
  };

  var guardado = localStorage.getItem('quizScore');
  if(guardado !== null){
    $('#quiz-result').html('<h3>Puntaje previo: '+guardado+'/5</h3>');
  }

  $('#quiz-form').on('submit', function(e){
    e.preventDefault();
    var score = 0;
    $.each(respuestasQuiz, function(q, correcto){
      if($('input[name="'+q+'"]:checked').val() === correcto){
        score++;
      }
    });
    $('#quiz-result').html('<h3>Tu puntuación: '+score+'/5</h3>');
    localStorage.setItem('quizScore', score);
  });

  $('#quiz-reintentar').on('click', function(){
    $('#quiz-form')[0].reset();
    $('#quiz-result').html('');
  });

  $('#quiz-limpiar-progreso').on('click', function(){
    localStorage.removeItem('quizScore');
    $('#quiz-result').html('Puntaje borrado.');
  });

});