/*
 * Base de dados dos produtos (mock).
 * Num projeto real isto viria de um CMS/API. Mantido em JS puro para
 * funcionar sem servidor e ser partilhado entre listagem e single.
 *
 * As imagens usam picsum.photos (placeholders estáveis por "seed") apenas
 * para efeitos de demonstração — substituir por assets reais em produção.
 */
(function () {
  'use strict';

  const img = (seed, w = 900, h = 1200) =>
    `https://picsum.photos/seed/${seed}/${w}/${h}`;

  // Categorias de topo
  const CATEGORIES = {
    mulher: { slug: 'mulher', label: 'Mulher', tagline: 'Coleção Primavera / Verão' },
    homem: { slug: 'homem', label: 'Homem', tagline: 'Alfaiataria & Essenciais' },
    crianca: { slug: 'crianca', label: 'Criança', tagline: 'Feito para crescer' }
  };

  const PRODUCTS = [
    // ---------------------- MULHER ----------------------
    {
      id: 'w-01', category: 'mulher', name: 'Casaco Estruturado em Lã',
      price: 149.00, editorial: 'Nº01',
      description: 'Um casaco de silhueta oversized em mistura de lã, com ombros marcados e caimento fluido. Uma peça de arquitetura para o guarda-roupa.',
      colors: [{ name: 'Cru', hex: '#e7e2d8' }, { name: 'Carvão', hex: '#2b2b2b' }, { name: 'Camel', hex: '#b08d57' }],
      sizes: ['XS', 'S', 'M', 'L', 'XL'],
      images: [img('coat-a'), img('coat-b'), img('coat-c')], span: 'wide'
    },
    {
      id: 'w-02', category: 'mulher', name: 'Vestido Plissado Midi',
      price: 89.95, editorial: 'Nº02',
      description: 'Plissado permanente num tecido leve com movimento. O comprimento midi e a gola alta desenham uma linha limpa e contemporânea.',
      colors: [{ name: 'Preto', hex: '#111' }, { name: 'Marfim', hex: '#f2efe9' }],
      sizes: ['XS', 'S', 'M', 'L'],
      images: [img('dress-a'), img('dress-b'), img('dress-c')], span: 'tall'
    },
    {
      id: 'w-03', category: 'mulher', name: 'Camisa de Popeline',
      price: 39.95, editorial: 'Nº03',
      description: 'A camisa branca essencial, reinventada em popeline de algodão com um punho generoso e corte relaxado.',
      colors: [{ name: 'Branco', hex: '#fff' }, { name: 'Azul Céu', hex: '#c7d6e2' }],
      sizes: ['XS', 'S', 'M', 'L', 'XL'],
      images: [img('shirt-a'), img('shirt-b')], span: 'normal'
    },
    {
      id: 'w-04', category: 'mulher', name: 'Calça de Alfaiataria Larga',
      price: 59.95, editorial: 'Nº04',
      description: 'Cintura subida e perna larga com vinco marcado. Alfaiataria descontraída que se move consigo.',
      colors: [{ name: 'Carvão', hex: '#2b2b2b' }, { name: 'Areia', hex: '#d8cdbb' }],
      sizes: ['34', '36', '38', '40', '42'],
      images: [img('trouser-a'), img('trouser-b')], span: 'normal'
    },
    {
      id: 'w-05', category: 'mulher', name: 'Malha de Gola Alta',
      price: 45.95, editorial: 'Nº05',
      description: 'Malha fina de toque suave com gola alta. A base perfeita para camadas.',
      colors: [{ name: 'Creme', hex: '#eee6d6' }, { name: 'Preto', hex: '#111' }, { name: 'Bordô', hex: '#5c1f24' }],
      sizes: ['XS', 'S', 'M', 'L'],
      images: [img('knit-a'), img('knit-b')], span: 'offset'
    },
    {
      id: 'w-06', category: 'mulher', name: 'Saia Coluna em Cetim',
      price: 49.95, editorial: 'Nº06',
      description: 'Cetim de caimento pesado numa saia coluna que apanha a luz. Do dia à noite.',
      colors: [{ name: 'Champanhe', hex: '#e4d8c3' }, { name: 'Verde Musgo', hex: '#3f4a33' }],
      sizes: ['XS', 'S', 'M', 'L'],
      images: [img('skirt-a'), img('skirt-b')], span: 'tall'
    },
    {
      id: 'w-07', category: 'mulher', name: 'Trench Coat Impermeável',
      price: 129.00, editorial: 'Nº07',
      description: 'O clássico trench, com cinto e caimento longo. Tecido tratado, resistente à água.',
      colors: [{ name: 'Camel', hex: '#b08d57' }, { name: 'Preto', hex: '#111' }],
      sizes: ['XS', 'S', 'M', 'L', 'XL'],
      images: [img('trench-a'), img('trench-b')], span: 'wide'
    },
    {
      id: 'w-08', category: 'mulher', name: 'Botim de Couro',
      price: 79.95, editorial: 'Nº08',
      description: 'Botim de couro com bico afilado e salto bloco. Feito à mão em Portugal.',
      colors: [{ name: 'Preto', hex: '#111' }, { name: 'Castanho', hex: '#6b4a2b' }],
      sizes: ['36', '37', '38', '39', '40', '41'],
      images: [img('boot-a'), img('boot-b')], span: 'normal'
    },

    // ---------------------- HOMEM ----------------------
    {
      id: 'm-01', category: 'homem', name: 'Blazer Desestruturado',
      price: 139.00, editorial: 'Nº01',
      description: 'Blazer sem forro em mistura de linho, com corte leve. A alfaiataria libertada da rigidez.',
      colors: [{ name: 'Azul-marinho', hex: '#20304a' }, { name: 'Bege', hex: '#cdbfa3' }],
      sizes: ['46', '48', '50', '52', '54'],
      images: [img('blazer-a'), img('blazer-b'), img('blazer-c')], span: 'wide'
    },
    {
      id: 'm-02', category: 'homem', name: 'Camisola de Algodão Pima',
      price: 29.95, editorial: 'Nº02',
      description: 'T-shirt de algodão Pima de gramagem pesada. Um essencial que dura.',
      colors: [{ name: 'Branco', hex: '#fff' }, { name: 'Preto', hex: '#111' }, { name: 'Verde', hex: '#3f4a33' }],
      sizes: ['S', 'M', 'L', 'XL', 'XXL'],
      images: [img('tee-a'), img('tee-b')], span: 'normal'
    },
    {
      id: 'm-03', category: 'homem', name: 'Chino Slim',
      price: 49.95, editorial: 'Nº03',
      description: 'Chino em sarja de algodão com elastano. Corte slim, conforto o dia todo.',
      colors: [{ name: 'Areia', hex: '#d8cdbb' }, { name: 'Carvão', hex: '#2b2b2b' }],
      sizes: ['30', '31', '32', '33', '34', '36'],
      images: [img('chino-a'), img('chino-b')], span: 'tall'
    },
    {
      id: 'm-04', category: 'homem', name: 'Sobretudo de Lã',
      price: 179.00, editorial: 'Nº04',
      description: 'Sobretudo longo em lã virgem, gola entalhada e caimento impecável. A peça de inverno.',
      colors: [{ name: 'Cinza', hex: '#6f6f6f' }, { name: 'Preto', hex: '#111' }],
      sizes: ['46', '48', '50', '52', '54'],
      images: [img('overcoat-a'), img('overcoat-b')], span: 'offset'
    },
    {
      id: 'm-05', category: 'homem', name: 'Camisa Oxford',
      price: 45.95, editorial: 'Nº05',
      description: 'Camisa Oxford de botões, tecido texturado e resistente. Casual ou formal.',
      colors: [{ name: 'Branco', hex: '#fff' }, { name: 'Azul', hex: '#c7d6e2' }],
      sizes: ['S', 'M', 'L', 'XL'],
      images: [img('oxford-a'), img('oxford-b')], span: 'normal'
    },
    {
      id: 'm-06', category: 'homem', name: 'Camisola de Malha Canelada',
      price: 55.95, editorial: 'Nº06',
      description: 'Malha canelada de lã merino. Quente, leve e com estrutura.',
      colors: [{ name: 'Camel', hex: '#b08d57' }, { name: 'Azul-marinho', hex: '#20304a' }],
      sizes: ['S', 'M', 'L', 'XL'],
      images: [img('sweater-a'), img('sweater-b')], span: 'tall'
    },
    {
      id: 'm-07', category: 'homem', name: 'Ténis de Couro Minimal',
      price: 89.95, editorial: 'Nº07',
      description: 'Ténis de couro branco de linhas limpas. Sola de borracha, conforto discreto.',
      colors: [{ name: 'Branco', hex: '#fff' }, { name: 'Preto', hex: '#111' }],
      sizes: ['40', '41', '42', '43', '44', '45'],
      images: [img('sneaker-a'), img('sneaker-b')], span: 'wide'
    },
    {
      id: 'm-08', category: 'homem', name: 'Jaqueta Trucker Denim',
      price: 69.95, editorial: 'Nº08',
      description: 'A clássica jaqueta de ganga, em denim rígido que envelhece consigo.',
      colors: [{ name: 'Índigo', hex: '#2c3e5c' }, { name: 'Preto', hex: '#111' }],
      sizes: ['S', 'M', 'L', 'XL'],
      images: [img('denim-a'), img('denim-b')], span: 'normal'
    },

    // ---------------------- CRIANÇA ----------------------
    {
      id: 'k-01', category: 'crianca', name: 'Camisola Riscas de Algodão',
      price: 19.95, editorial: 'Nº01',
      description: 'T-shirt de riscas em algodão orgânico macio. Feita para brincar.',
      colors: [{ name: 'Riscas Azul', hex: '#3b5b8c' }, { name: 'Riscas Verde', hex: '#3f4a33' }],
      sizes: ['2-3A', '4-5A', '6-7A', '8-9A', '10-11A'],
      images: [img('kid-tee-a'), img('kid-tee-b')], span: 'normal'
    },
    {
      id: 'k-02', category: 'crianca', name: 'Fato de Treino em Felpa',
      price: 34.95, editorial: 'Nº02',
      description: 'Conjunto de sweat e calças em felpa de algodão. Conforto para o dia inteiro.',
      colors: [{ name: 'Cinza-mesclado', hex: '#a7a7a7' }, { name: 'Terracota', hex: '#b5623f' }],
      sizes: ['2-3A', '4-5A', '6-7A', '8-9A'],
      images: [img('kid-track-a'), img('kid-track-b')], span: 'tall'
    },
    {
      id: 'k-03', category: 'crianca', name: 'Vestido de Sarja',
      price: 24.95, editorial: 'Nº03',
      description: 'Vestido de sarja resistente com bolsos. Prático e cheio de estilo.',
      colors: [{ name: 'Mostarda', hex: '#c9a13b' }, { name: 'Azul-marinho', hex: '#20304a' }],
      sizes: ['2-3A', '4-5A', '6-7A', '8-9A', '10-11A'],
      images: [img('kid-dress-a'), img('kid-dress-b')], span: 'offset'
    },
    {
      id: 'k-04', category: 'crianca', name: 'Casaco Acolchoado',
      price: 44.95, editorial: 'Nº04',
      description: 'Casaco leve e quente, com capuz e enchimento reciclado. Repelente à água.',
      colors: [{ name: 'Verde', hex: '#3f4a33' }, { name: 'Vermelho', hex: '#8c2f2f' }],
      sizes: ['2-3A', '4-5A', '6-7A', '8-9A'],
      images: [img('kid-coat-a'), img('kid-coat-b')], span: 'wide'
    },
    {
      id: 'k-05', category: 'crianca', name: 'Jeans com Elástico',
      price: 22.95, editorial: 'Nº05',
      description: 'Jeans de cintura elástica, fáceis de vestir. Ganga macia e durável.',
      colors: [{ name: 'Índigo', hex: '#2c3e5c' }, { name: 'Claro', hex: '#9db4cc' }],
      sizes: ['2-3A', '4-5A', '6-7A', '8-9A', '10-11A'],
      images: [img('kid-jeans-a'), img('kid-jeans-b')], span: 'normal'
    },
    {
      id: 'k-06', category: 'crianca', name: 'Ténis com Velcro',
      price: 27.95, editorial: 'Nº06',
      description: 'Ténis leves com fecho de velcro. Autonomia para os mais pequenos.',
      colors: [{ name: 'Branco', hex: '#fff' }, { name: 'Rosa', hex: '#dca3ab' }],
      sizes: ['24', '26', '28', '30', '32', '34'],
      images: [img('kid-shoe-a'), img('kid-shoe-b')], span: 'tall'
    }
  ];

  // API global simples partilhada pelas páginas
  window.STORE = {
    categories: CATEGORIES,
    products: PRODUCTS,
    byCategory: (slug) => PRODUCTS.filter((p) => p.category === slug),
    byId: (id) => PRODUCTS.find((p) => p.id === id),
    formatPrice: (v) =>
      new Intl.NumberFormat('pt-PT', { style: 'currency', currency: 'EUR' }).format(v)
  };
})();
