// 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,
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 }] }] } */