// KSANET — Datos del recorrido interactivo + configurador
// Cada promoción se expone aquí como un objeto rico, indexado por id.
// Los placeholders se sustituyen a medida que recibimos memoria, planos y precios reales.
// Esquema documentado abajo del archivo.

const TOUR_DATA = {
  'edificio-victoria': {
    id: 'edificio-victoria',
    name: 'Edificio Victoria',
    short: 'Victoria',
    tagline: '46 hogares cooperativos en Loeches',
    location: 'Loeches · Madrid',
    address: 'Calle Espliego 1, Loeches',
    delivery: 'Q2 2027',
    deliveryDate: '2027-06-30',
    architect: 'Estudio asociado a Hestia Homes',
    builder: 'Por designar',
    energy: 'A',
    code: 'COOP-2026-LCH-46',
    units: 46,
    sold: 39,
    statusKey: 'comercial',
    status: 'En comercialización',
    priceFrom: 234923,

    hero: {
      image: 'https://ksanet.es/wp-content/uploads/2025/06/M1_BAJA01.jpg',
      kicker: 'Cooperativa de viviendas · Loeches',
      headline: 'Hogares hechos a medida,<br/>al precio real.',
      sub: '46 viviendas de 2, 3 y 4 dormitorios en cuatro edificios de baja densidad. Aerotermia, calificación A y zonas comunes con piscina.',
    },

    summary: {
      // Bullets clave de la portada
      bullets: [
        '4 edificios de baja densidad, 3 alturas',
        '46 viviendas: 2, 3 y 4 dormitorios',
        'Garaje y trastero incluidos',
        'Calificación energética A',
        'Aerotermia con suelo radiante-refrescante',
        'Piscina y zonas comunes ajardinadas',
      ],
      facts: [
        { label: 'Viviendas',          value: '46' },
        { label: 'Tipologías',         value: '7' },
        { label: 'Dormitorios',        value: '2 · 3 · 4' },
        { label: 'Calificación',       value: 'A' },
        { label: 'Comercialización',   value: '39/46' },
        { label: 'Entrega',            value: 'Q2 2027' },
      ],
    },

    // Plano del entorno + servicios
    site: {
      mapImage: null, // url opcional a una ortofoto
      services: [
        { kind: 'colegio',     name: 'CEIP Miguel de Cervantes',     dist: '450 m'  },
        { kind: 'colegio',     name: 'Colegio Santa Ana',            dist: '650 m'  },
        { kind: 'transporte',  name: 'Parada bus 261 (a Madrid)',    dist: '180 m'  },
        { kind: 'comercio',    name: 'Supermercado Día',             dist: '300 m'  },
        { kind: 'salud',       name: 'Centro de Salud Loeches',      dist: '700 m'  },
        { kind: 'ocio',        name: 'Polideportivo municipal',      dist: '1,1 km' },
        { kind: 'naturaleza',  name: 'Parque del Cerrillo',          dist: '350 m'  },
        { kind: 'movilidad',   name: 'Acceso A-3',                   dist: '8 km'   },
      ],
    },

    // Tipologías (vivienda tipo, no vivienda concreta)
    typologies: [
      { code: 'V01-B', name: '3 DORM', dorms: 3, baths: 2, useful: 91,  built: 103, terrace: 45,  orientation: 'S/E', priceFrom: 307495, available: 1, plan: null },
      { code: 'V02',   name: '3 DORM', dorms: 3, baths: 2, useful: 92,  built: 104, terrace: 23,  orientation: 'S',   priceFrom: 296507, available: 3, plan: null },
      { code: 'V03',   name: '3 DORM', dorms: 3, baths: 2, useful: 92,  built: 104, terrace: 23,  orientation: 'S/O', priceFrom: 296507, available: 3, plan: null },
      { code: 'V04',   name: '4 DORM', dorms: 4, baths: 3, useful: 108, built: 122, terrace: 32,  orientation: 'O',   priceFrom: 346168, available: 1, plan: null },
      { code: 'V05',   name: '2 DORM ÁTICO', dorms: 2, baths: 2, useful: 70, built: 79, terrace: 38, orientation: 'S/E', priceFrom: 234923, available: 1, plan: null },
      { code: 'V06',   name: '2 DORM ÁTICO', dorms: 2, baths: 2, useful: 70, built: 79, terrace: 32, orientation: 'S/O', priceFrom: 234923, available: 1, plan: null },
      { code: 'V07-B', name: '3 DORM JARDÍN', dorms: 3, baths: 2, useful: 100, built: 114, terrace: 118, orientation: 'O', priceFrom: 373625, available: 1, plan: null },
    ],

    // Memoria de calidades (acordeón por capítulos)
    memoria: [
      {
        chapter: 'Estructura y cimentación',
        items: [
          'Cimentación por losa de hormigón armado HA-30',
          'Estructura de pilares y forjados de hormigón armado',
          'Cubierta plana invertida con aislamiento térmico XPS',
        ],
      },
      {
        chapter: 'Fachada y cerramientos',
        items: [
          'Fachada ventilada con aplacado cerámico de gran formato',
          'Trasdosado interior de yeso laminado con aislamiento de lana mineral',
          'Carpintería exterior de aluminio RPT con vidrio bajo emisivo 4+4/16/6',
        ],
      },
      {
        chapter: 'Carpintería interior',
        items: [
          'Puertas lacadas en blanco satinado con manilla en acabado níquel',
          'Puerta acorazada de entrada con cerradura de seguridad',
          'Armarios empotrados modulados con interior forrado',
        ],
      },
      {
        chapter: 'Climatización e instalaciones',
        items: [
          'Aerotermia para calefacción, refrigeración y agua caliente sanitaria',
          'Suelo radiante-refrescante en todas las estancias habitables',
          'Recuperador de calor con doble flujo y filtración F7',
          'Pre-instalación de punto de recarga de vehículo eléctrico en garaje',
        ],
      },
      {
        chapter: 'Cocinas',
        items: [
          'Mobiliario alto y bajo lacado mate con tirador integrado',
          'Encimera de cuarzo compacto, e=20 mm',
          'Equipamiento: placa de inducción, horno, microondas, campana, frigorífico',
          'Fregadero bajo encimera con grifo monomando',
        ],
      },
      {
        chapter: 'Baños',
        items: [
          'Plato de ducha extraplano con mampara de vidrio templado',
          'Mobiliario suspendido con encimera de mármol compacto',
          'Sanitarios suspendidos con cisternas empotradas de doble descarga',
          'Grifería termostática en baño principal',
        ],
      },
      {
        chapter: 'Acabados interiores',
        items: [
          'Pavimento de tarima laminada AC5 con rodapié lacado',
          'Pintura plástica lisa en paredes y techos en tono blanco roto',
          'Falsos techos con foseado para iluminación indirecta en zonas comunes',
        ],
      },
      {
        chapter: 'Zonas comunes y urbanización',
        items: [
          'Piscina comunitaria para adultos con vaso infantil',
          'Jardines con riego automático por goteo',
          'Sala polivalente para uso de la cooperativa',
          'Vídeo-portero con conexión a aplicación móvil',
          'Iluminación LED con detección de presencia',
        ],
      },
    ],

    // Equipamientos comunitarios destacados
    amenities: [
      { icon: 'pool',       name: 'Piscina',                desc: 'Comunitaria con vaso infantil' },
      { icon: 'garden',     name: 'Jardines',               desc: 'Zonas verdes con riego por goteo' },
      { icon: 'gym',        name: 'Sala polivalente',       desc: 'Para uso de la cooperativa' },
      { icon: 'concierge',  name: 'Vídeo-portero',          desc: 'Con app móvil' },
      { icon: 'parking',    name: 'Garaje',                 desc: 'Plaza incluida + pre-instalación VE' },
      { icon: 'storage',    name: 'Trastero',               desc: 'Incluido por vivienda' },
    ],

    // Sostenibilidad
    sustainability: {
      energy: 'A',
      bullets: [
        'Aerotermia: hasta 75% menos consumo que una caldera de gas',
        'Suelo radiante-refrescante con baja inercia térmica',
        'Fachada ventilada con aislamiento continuo (sin puentes térmicos)',
        'Carpintería con vidrio bajo emisivo y rotura de puente térmico',
        'Iluminación LED con sensores de presencia en zonas comunes',
        'Pre-instalación de punto de recarga eléctrica en cada plaza',
      ],
      co2Saving: '4,2 toneladas/año por vivienda frente a vivienda convencional',
    },

    // Galería completa (renders)
    gallery: [
      { url: 'https://ksanet.es/wp-content/uploads/2025/06/M1_BAJA01.jpg',     caption: 'Vista exterior · acceso principal' },
      { url: 'https://ksanet.es/wp-content/uploads/2025/06/M0_BAJA00.jpg',     caption: 'Conjunto de los 4 edificios' },
      { url: 'https://ksanet.es/wp-content/uploads/2025/06/M2_BAJAnew00.jpg',  caption: 'Patio interior con piscina' },
      { url: 'https://ksanet.es/wp-content/uploads/2025/06/M3_BAJAnew00.jpg',  caption: 'Vista lateral · jardines' },
      { url: 'https://ksanet.es/wp-content/uploads/2025/06/Noche02.jpg',       caption: 'Vista nocturna' },
      { url: 'https://ksanet.es/wp-content/uploads/2025/06/M1_BAJAnew01.jpg',  caption: 'Detalle fachada · acceso' },
    ],

    // Plan económico — placeholder, sustituible cuando me pases el real
    economic: {
      example: 'Vivienda V02 · 3 DORM · 92 m² · 296.507 € + IVA',
      breakdown: [
        { phase: 'Reserva de plaza',          when: 'Firma',          amount:  3000, type: 'Aportación inicial · 100% avalada' },
        { phase: 'Constitución cooperativa',  when: 'Sep 2024',       amount: 18000, type: 'Aportación a fondo social' },
        { phase: 'Compra del suelo',          when: 'Mar 2025',       amount: 32000, type: 'Aportación a la cooperativa' },
        { phase: 'Inicio de obra',            when: 'Q2 2026',        amount: 24000, type: 'Aportación a la cooperativa' },
        { phase: 'Estructura',                when: 'Q4 2026',        amount: 24000, type: 'Aportación a la cooperativa' },
        { phase: 'Cerramientos',              when: 'Q1 2027',        amount: 18000, type: 'Aportación a la cooperativa' },
        { phase: 'Entrega de llaves',         when: 'Q2 2027',        amount:177507, type: 'Subrogación hipoteca cooperativa' },
      ],
      coopFee: 9,
      mortgage: { principal: 177507, term: 30, rate: 3.4 },
    },

    // Cronograma — heredado de PROMOS pero ampliable
    timeline: [
      { date: 'Sep 2024', event: 'Constitución de la cooperativa',                done: true },
      { date: 'Mar 2025', event: 'Compra del suelo · escritura',                  done: true },
      { date: 'Jul 2025', event: 'Adjudicación del proyecto al estudio',          done: true },
      { date: 'Hoy',      event: 'Comercialización abierta · 39 plazas reservadas', done: false, current: true },
      { date: 'Q2 2026',  event: 'Concesión de licencia de obras',                done: false },
      { date: 'Q3 2026',  event: 'Inicio de obra · cimentación',                  done: false },
      { date: 'Q4 2026',  event: 'Estructura y forjados',                         done: false },
      { date: 'Q1 2027',  event: 'Cerramientos y cubierta',                       done: false },
      { date: 'Q2 2027',  event: 'Entrega de llaves',                             done: false },
    ],

    // ───── CONFIGURADOR — distribución del edificio ─────
    // Cada edificio tiene plantas; cada planta tiene viviendas con polígonos clicables.
    // Coordenadas en SVG viewBox 0..100 (100×60 por planta).
    // Estados: available · reserved · sold
    building: {
      name: 'Edificio M1 (norte)',
      label: 'M1',
      // Listado de los 4 edificios para selector
      blocks: [
        { id: 'm1', label: 'Edificio M1', units: 12 },
        { id: 'm2', label: 'Edificio M2', units: 12 },
        { id: 'm3', label: 'Edificio M3', units: 11 },
        { id: 'm4', label: 'Edificio M4', units: 11 },
      ],
      activeBlock: 'm1',
      floors: [
        {
          id: 'pb',
          label: 'Planta baja',
          short: 'PB',
          height: 1,
          units: [
            { id: 'M1-PB-01', code: 'V01-B', typology: 'V01-B', state: 'sold',      polygon: '6,12 38,12 38,46 22,46 22,52 6,52' },
            { id: 'M1-PB-02', code: 'V02',   typology: 'V02',   state: 'reserved',  polygon: '40,12 60,12 60,52 40,52' },
            { id: 'M1-PB-03', code: 'V07-B', typology: 'V07-B', state: 'available', polygon: '62,12 94,12 94,52 78,52 78,46 62,46' },
          ],
        },
        {
          id: 'p1',
          label: 'Planta primera',
          short: 'P1',
          units: [
            { id: 'M1-P1-01', code: 'V02', typology: 'V02', state: 'reserved',  polygon: '6,14 36,14 36,50 6,50' },
            { id: 'M1-P1-02', code: 'V03', typology: 'V03', state: 'sold',      polygon: '38,14 62,14 62,50 38,50' },
            { id: 'M1-P1-03', code: 'V04', typology: 'V04', state: 'available', polygon: '64,14 94,14 94,50 64,50' },
          ],
        },
        {
          id: 'p2',
          label: 'Planta segunda',
          short: 'P2',
          units: [
            { id: 'M1-P2-01', code: 'V02', typology: 'V02', state: 'sold',     polygon: '6,14 36,14 36,50 6,50' },
            { id: 'M1-P2-02', code: 'V03', typology: 'V03', state: 'reserved', polygon: '38,14 62,14 62,50 38,50' },
            { id: 'M1-P2-03', code: 'V04', typology: 'V04', state: 'sold',     polygon: '64,14 94,14 94,50 64,50' },
          ],
        },
        {
          id: 'pa',
          label: 'Ático',
          short: 'PA',
          units: [
            { id: 'M1-PA-01', code: 'V05', typology: 'V05', state: 'available', polygon: '8,16 40,16 40,42 30,42 30,48 8,48' },
            { id: 'M1-PA-02', code: 'V06', typology: 'V06', state: 'reserved',  polygon: '60,16 92,16 92,48 70,48 70,42 60,42' },
          ],
        },
      ],
    },
  },

  // ─────── Placeholders esqueleto para los demás (se irán rellenando) ───────
  'urbanizacion-apolo': null,
  'hestia-homes': null,
  'residencial-guayanas': null,
  'villa-daganzo-64': null,
  'edificio-huertas': null,
  'residencial-moncayo': null,
};

// Helpers
const getTour = (id) => TOUR_DATA[id] || null;

// Etiquetas de estado de unidad
const UNIT_STATE = {
  available: { label: 'Disponible', color: '#4a5a3a' },
  reserved:  { label: 'Reservada',  color: '#b58a3a' },
  sold:      { label: 'Vendida',    color: '#b85055' },
};

Object.assign(window, { TOUR_DATA, getTour, UNIT_STATE });

/* ──────────────── ESQUEMA DE DATOS POR PROMOCIÓN ────────────────

  id, name, short, tagline, location, address
  delivery, deliveryDate (ISO), architect, builder, energy
  code, units, sold, statusKey, status, priceFrom

  hero: { image, kicker, headline (HTML), sub }

  summary: {
    bullets: string[],
    facts: [{ label, value }]
  }

  site: {
    mapImage?: url,
    services: [{ kind, name, dist }]   // kind ∈ colegio | transporte | comercio | salud | ocio | naturaleza | movilidad
  }

  typologies: [{
    code, name, dorms, baths, useful, built, terrace,
    orientation, priceFrom, available, plan?
  }]

  memoria: [{ chapter, items: string[] }]

  amenities: [{ icon, name, desc }]    // icon ∈ pool | garden | gym | concierge | parking | storage

  sustainability: { energy, bullets: string[], co2Saving }

  gallery: [{ url, caption }]

  economic: {
    example,
    breakdown: [{ phase, when, amount, type }],
    coopFee,
    mortgage: { principal, term, rate }
  }

  timeline: [{ date, event, done, current? }]

  building: {
    name, label,
    blocks: [{ id, label, units }],
    activeBlock,
    floors: [{
      id, label, short,
      units: [{ id, code, typology, state, polygon }]
    }]
  }
*/
