/** Shopify CDN: Minification failed

Line 28:0 Unexpected "("
Line 37:4 Comments in CSS use "/* ... */" instead of "//"
Line 40:4 Comments in CSS use "/* ... */" instead of "//"
Line 50:4 Comments in CSS use "/* ... */" instead of "//"
Line 72:4 Comments in CSS use "/* ... */" instead of "//"
Line 88:4 Comments in CSS use "/* ... */" instead of "//"
Line 97:6 Comments in CSS use "/* ... */" instead of "//"
Line 112:8 Comments in CSS use "/* ... */" instead of "//"
Line 117:8 Comments in CSS use "/* ... */" instead of "//"
Line 125:12 Comments in CSS use "/* ... */" instead of "//"
... and 23 more hidden warnings

**/
/* ============================================================
   SANO.PT — JS de Conversão v2.0
   Ficheiro: Assets > sano-conversion.js  (SUBSTITUIR o anterior)
   Versão: 2.0 — Junho 2026

   FUNCIONALIDADES:
   1. Botão "Adicionar ao Carrinho" antes do "Comprar agora"
   2. Temporizador de envio ("Envio hoje se encomendar em X:XX:XX")
   3. Contador de pessoas a ver o produto (prova social)
   4. Badge de stock baixo (urgência)
   ============================================================ */

(function () {
  'use strict';

  /* ============================================================
     1. BOTÃO "ADICIONAR AO CARRINHO"
     Insere um botão verde "Adicionar ao Carrinho" ANTES do
     botão "Comprar agora" no product-form
     ============================================================ */
  function injectAddToCartButton() {
    // Só actua em páginas de produto
    if (!document.querySelector('.product-form')) return;

    // Evitar duplicação
    if (document.getElementById('sano-atc-btn')) return;

    var buyNowBtn = document.querySelector('.product-form__add-button, .product-form__payment-container > button[type="submit"]');
    if (!buyNowBtn) return;

    var container = buyNowBtn.parentElement;
    var form = buyNowBtn.closest('form');
    if (!form) return;

    // Criar botão Adicionar ao Carrinho
    var atcBtn = document.createElement('button');
    atcBtn.id = 'sano-atc-btn';
    atcBtn.type = 'button';
    atcBtn.textContent = '🛒 Adicionar ao Carrinho';
    atcBtn.style.cssText = [
      'display: block',
      'width: 100%',
      'padding: 16px 28px',
      'margin-bottom: 10px',
      'background-color: #16a34a',
      'color: #ffffff',
      'border: none',
      'border-radius: 6px',
      'font-size: 1.05rem',
      'font-weight: 700',
      'letter-spacing: 0.03em',
      'cursor: pointer',
      'transition: background-color 0.2s ease, transform 0.15s ease',
      'line-height: 1.4'
    ].join(';');

    // Hover effect
    atcBtn.addEventListener('mouseenter', function () {
      this.style.backgroundColor = '#15803d';
      this.style.transform = 'translateY(-1px)';
    });
    atcBtn.addEventListener('mouseleave', function () {
      this.style.backgroundColor = '#16a34a';
      this.style.transform = 'translateY(0)';
    });
    atcBtn.addEventListener('mousedown', function () {
      this.style.transform = 'scale(0.97)';
    });
    atcBtn.addEventListener('mouseup', function () {
      this.style.transform = 'translateY(-1px)';
    });

    // Lógica de adicionar ao carrinho via AJAX
    atcBtn.addEventListener('click', function () {
      var variantInput = form.querySelector('[name="id"]');
      var quantitySelect = form.querySelector('[name="quantity"], select[id*="quantity"]');
      if (!variantInput) return;

      var variantId = variantInput.value;
      var quantity = quantitySelect ? parseInt(quantitySelect.value) || 1 : 1;

      // Estado de loading
      atcBtn.textContent = '⏳ A adicionar...';
      atcBtn.disabled = true;
      atcBtn.style.backgroundColor = '#6b7280';

      fetch('/cart/add.js', {
        method: 'POST',
        headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' },
        body: JSON.stringify({ id: variantId, quantity: quantity })
      })
      .then(function (res) { return res.json(); })
      .then(function (data) {
        if (data.status && data.status !== 200) {
          throw new Error(data.description || 'Erro ao adicionar');
        }
        // Sucesso
        atcBtn.textContent = '✅ Adicionado ao Carrinho!';
        atcBtn.style.backgroundColor = '#15803d';
        atcBtn.disabled = false;

        // Actualizar contador do carrinho no header
        fetch('/cart.js')
          .then(function (r) { return r.json(); })
          .then(function (cart) {
            var counters = document.querySelectorAll('.cart-count, [class*="cart-count"], [class*="cart__count"], .cart-item-count, [id*="cart-count"]');
            counters.forEach(function (el) {
              el.textContent = cart.item_count;
            });
            // Tentar abrir mini-cart se existir
            var miniCartToggle = document.querySelector('[data-cart-toggle], .cart-toggle, [aria-label*="cart"], [aria-label*="carrinho"]');
            if (miniCartToggle) miniCartToggle.click();
          });

        // Repor texto após 3 segundos
        setTimeout(function () {
          atcBtn.textContent = '🛒 Adicionar ao Carrinho';
          atcBtn.style.backgroundColor = '#16a34a';
        }, 3000);
      })
      .catch(function (err) {
        atcBtn.textContent = '❌ Erro — tente novamente';
        atcBtn.style.backgroundColor = '#dc2626';
        atcBtn.disabled = false;
        setTimeout(function () {
          atcBtn.textContent = '🛒 Adicionar ao Carrinho';
          atcBtn.style.backgroundColor = '#16a34a';
        }, 3000);
      });
    });

    // Inserir ANTES do botão "Comprar agora"
    container.insertBefore(atcBtn, buyNowBtn);
  }

  /* ============================================================
     2. TEMPORIZADOR DE ENVIO
     "Envio hoje se encomendar em X:XX:XX"
     Aparece nas páginas de produto, calcula o tempo até às 16h
     ============================================================ */
  function injectShippingTimer() {
    if (!document.querySelector('.product-form')) return;
    if (document.getElementById('sano-shipping-timer')) return;

    // Calcular hora de corte (16h00 Lisboa = UTC+1)
    function getTimeLeft() {
      var now = new Date();
      // Hora de Lisboa (UTC+1 no inverno, UTC+2 no verão)
      var utcOffset = now.getTimezoneOffset(); // em minutos, negativo para Lisboa
      var lisboaOffset = -60; // UTC+1 (ajustar para +120 no verão se necessário)
      var lisboaTime = new Date(now.getTime() + (utcOffset + Math.abs(lisboaOffset)) * 60 * 1000);

      var cutoffHour = 16; // 16h00
      var cutoff = new Date(lisboaTime);
      cutoff.setHours(cutoffHour, 0, 0, 0);

      // Se já passou das 16h, mostrar para amanhã
      if (lisboaTime >= cutoff) {
        cutoff.setDate(cutoff.getDate() + 1);
        // Se for fim de semana, avançar para segunda
        if (cutoff.getDay() === 6) cutoff.setDate(cutoff.getDate() + 2); // sábado -> segunda
        if (cutoff.getDay() === 0) cutoff.setDate(cutoff.getDate() + 1); // domingo -> segunda
      }

      var diff = cutoff - lisboaTime;
      if (diff < 0) diff = 0;

      var hours = Math.floor(diff / (1000 * 60 * 60));
      var minutes = Math.floor((diff % (1000 * 60 * 60)) / (1000 * 60));
      var seconds = Math.floor((diff % (1000 * 60)) / 1000);

      return {
        hours: hours,
        minutes: minutes,
        seconds: seconds,
        isToday: lisboaTime < cutoff && lisboaTime.getDate() === cutoff.getDate(),
        isTomorrow: !( lisboaTime < cutoff && lisboaTime.getDate() === cutoff.getDate()),
        isWeekend: lisboaTime.getDay() === 6 || lisboaTime.getDay() === 0
      };
    }

    function pad(n) { return n < 10 ? '0' + n : n; }

    // Criar elemento do temporizador
    var timerEl = document.createElement('div');
    timerEl.id = 'sano-shipping-timer';
    timerEl.style.cssText = [
      'background: #eff6ff',
      'border: 1.5px solid #bfdbfe',
      'border-radius: 6px',
      'padding: 10px 14px',
      'margin: 12px 0',
      'font-size: 0.88rem',
      'font-weight: 600',
      'color: #1e40af',
      'display: flex',
      'align-items: center',
      'gap: 8px',
      'line-height: 1.4'
    ].join(';');

    function updateTimer() {
      var t = getTimeLeft();
      var msg = '';

      if (t.isWeekend) {
        msg = '📦 Envio na segunda-feira — encomende já!';
      } else if (t.isToday) {
        msg = '🚚 Envio <strong>hoje</strong> se encomendar em <span style="color:#dc2626;font-size:1rem;">' +
              pad(t.hours) + ':' + pad(t.minutes) + ':' + pad(t.seconds) +
              '</span>';
      } else {
        msg = '📦 Envio amanhã — encomende até às 16h00';
      }

      timerEl.innerHTML = msg;
    }

    updateTimer();
    var timerInterval = setInterval(updateTimer, 1000);

    // Inserir após o bloco de preço / antes do form de compra
    var priceBlock = document.querySelector('.product__price, .price, [class*="product-price"], .product-form__price');
    var productForm = document.querySelector('.product-form');
    var insertTarget = priceBlock || productForm;

    if (insertTarget) {
      insertTarget.parentElement.insertBefore(timerEl, insertTarget.nextSibling);
    }
  }

  /* ============================================================
     3. CONTADOR DE PESSOAS A VER O PRODUTO (prova social)
     ============================================================ */
  function injectViewersCounter() {
    if (!document.querySelector('.product-form')) return;
    if (document.getElementById('sano-viewers')) return;

    var count = Math.floor(Math.random() * 18) + 7; // 7 a 24 pessoas

    var el = document.createElement('div');
    el.id = 'sano-viewers';
    el.style.cssText = [
      'background: #fef3c7',
      'border: 1px solid #fcd34d',
      'border-radius: 6px',
      'padding: 8px 14px',
      'font-size: 0.85rem',
      'font-weight: 600',
      'color: #92400e',
      'display: flex',
      'align-items: center',
      'gap: 8px',
      'margin: 8px 0'
    ].join(';');
    el.innerHTML = '🔥 <span id="sano-viewers-count">' + count + '</span> pessoas estão a ver este produto agora';

    // Variar o número ligeiramente a cada 30-60 segundos
    setInterval(function () {
      var delta = Math.random() > 0.5 ? 1 : -1;
      count = Math.max(5, Math.min(30, count + delta));
      var span = document.getElementById('sano-viewers-count');
      if (span) span.textContent = count;
    }, Math.floor(Math.random() * 30000) + 30000);

    // Inserir após o timer de envio ou antes do form
    var timer = document.getElementById('sano-shipping-timer');
    var form = document.querySelector('.product-form');
    if (timer) {
      timer.parentElement.insertBefore(el, timer.nextSibling);
    } else if (form) {
      form.parentElement.insertBefore(el, form);
    }
  }

  /* ============================================================
     4. BADGE DE STOCK BAIXO (urgência)
     Mostra "Apenas X em stock" quando stock < 10
     ============================================================ */
  function injectLowStockBadge() {
    if (!document.querySelector('.product-form')) return;
    if (document.getElementById('sano-stock-badge')) return;

    // Verificar se existe indicação de stock no tema
    var stockEl = document.querySelector('.product__stock, [class*="stock"], .inventory');
    var stockText = stockEl ? stockEl.textContent : '';

    // Simular stock baixo para produtos específicos (ajustar conforme real)
    // Para activar com stock real, usar Shopify metafields ou API
    var showLowStock = Math.random() > 0.6; // 40% de probabilidade de mostrar
    var stockCount = Math.floor(Math.random() * 7) + 3; // 3 a 9 unidades

    if (!showLowStock) return;

    var badge = document.createElement('div');
    badge.id = 'sano-stock-badge';
    badge.style.cssText = [
      'background: #fef2f2',
      'border: 1.5px solid #fecaca',
      'border-radius: 6px',
      'padding: 8px 14px',
      'font-size: 0.85rem',
      'font-weight: 700',
      'color: #dc2626',
      'display: flex',
      'align-items: center',
      'gap: 8px',
      'margin: 8px 0'
    ].join(';');
    badge.innerHTML = '⚠️ Apenas <strong>' + stockCount + ' unidades</strong> em stock — encomende já!';

    var viewers = document.getElementById('sano-viewers');
    var form = document.querySelector('.product-form');
    if (viewers) {
      viewers.parentElement.insertBefore(badge, viewers.nextSibling);
    } else if (form) {
      form.parentElement.insertBefore(badge, form);
    }
  }

  /* ============================================================
     5. BOTÃO STICKY "COMPRAR AGORA" NO MOBILE
     Aparece no fundo do ecrã quando o botão principal sai do viewport
     ============================================================ */
  function injectStickyMobileButton() {
    if (!document.querySelector('.product-form')) return;
    if (document.getElementById('sano-sticky-btn')) return;
    if (window.innerWidth > 768) return; // Só no mobile

    var stickyBtn = document.createElement('div');
    stickyBtn.id = 'sano-sticky-btn';
    stickyBtn.style.cssText = [
      'position: fixed',
      'bottom: 0',
      'left: 0',
      'right: 0',
      'z-index: 9999',
      'padding: 12px 16px',
      'background: #ffffff',
      'box-shadow: 0 -2px 12px rgba(0,0,0,0.15)',
      'display: none'
    ].join(';');

    var btn = document.createElement('button');
    btn.textContent = '🛒 Comprar agora — €' + (document.querySelector('.product__price, .price__current')
      ? document.querySelector('.product__price, .price__current').textContent.trim().replace(/[^0-9,\.]/g, '')
      : '39,90');
    btn.style.cssText = [
      'width: 100%',
      'padding: 16px',
      'background-color: #1e3a8a',
      'color: #ffffff',
      'border: none',
      'border-radius: 6px',
      'font-size: 1.1rem',
      'font-weight: 700',
      'cursor: pointer'
    ].join(';');

    btn.addEventListener('click', function () {
      var mainBtn = document.querySelector('.product-form__add-button');
      if (mainBtn) mainBtn.click();
    });

    stickyBtn.appendChild(btn);
    document.body.appendChild(stickyBtn);

    // Mostrar/esconder com base na posição do botão principal
    var mainBtn = document.querySelector('.product-form__add-button');
    if (mainBtn) {
      var observer = new IntersectionObserver(function (entries) {
        entries.forEach(function (entry) {
          stickyBtn.style.display = entry.isIntersecting ? 'none' : 'block';
        });
      }, { threshold: 0.1 });
      observer.observe(mainBtn);
    }
  }

  /* ============================================================
     6. CORRECÇÃO "Pagina inicial" → "Página inicial" no breadcrumb
     ============================================================ */
  function fixBreadcrumb() {
    document.querySelectorAll('.breadcrumb a, .breadcrumb__item a, [class*="breadcrumb"] a').forEach(function (el) {
      if (el.textContent.trim() === 'Pagina inicial') {
        el.textContent = 'Página inicial';
      }
    });
  }

  /* ============================================================
     INICIALIZAÇÃO — executar quando o DOM estiver pronto
     ============================================================ */
  function init() {
    injectAddToCartButton();
    injectShippingTimer();
    injectViewersCounter();
    injectLowStockBadge();
    injectStickyMobileButton();
    fixBreadcrumb();
  }

  if (document.readyState === 'loading') {
    document.addEventListener('DOMContentLoaded', init);
  } else {
    init();
  }

})();
