/* global React, Icon, useT */ function Espacio() { const { t } = useT(); const { useState, useEffect } = React; const photos = [ { src:'img/cocina-comedor.jpeg', k:'g_kitchen', area:'a' }, { src:'img/patio.jpeg', k:'g_patio', area:'b' }, { src:'img/cocina-escalera.jpeg',k:'g_stairs', area:'c' }, { src:'img/bajo-cubierta.jpeg', k:'g_attic', area:'d' }, { src:'img/zc-05.jpeg', k:'g_lounge', area:'e' }, { src:'img/zc-03.jpeg', k:'g_coffee', area:'f', pos:'center 30%' }, { src:'img/zc-01.jpeg', k:'g_dining', area:'g' }, { src:'img/zc-02.jpeg', k:'g_stairs2', area:'h' }, { src:'img/zc-12.jpeg', k:'g_sitting', area:'i' }, { src:'img/zc-08.jpeg', k:'g_tv', area:'j' }, ]; const [open, setOpen] = useState(-1); useEffect(() => { if (open < 0) return; const onKey = (e) => { if (e.key === 'Escape') setOpen(-1); else if (e.key === 'ArrowRight') setOpen(o => (o + 1) % photos.length); else if (e.key === 'ArrowLeft') setOpen(o => (o - 1 + photos.length) % photos.length); }; window.addEventListener('keydown', onKey); document.body.style.overflow = 'hidden'; return () => { window.removeEventListener('keydown', onKey); document.body.style.overflow = ''; }; }, [open, photos.length]); const plantas = [ { n:'01', t:t('floor_1_t'), s:t('floor_1_s'), m:t('floor_1_m'), d:t('floor_1_d'), tint:'#FFF3B8' }, { n:'02', t:t('floor_2_t'), s:t('floor_2_s'), m:t('floor_2_m'), d:t('floor_2_d'), tint:'#FFFBEA' }, { n:'03', t:t('floor_3_t'), s:t('floor_3_s'), m:t('floor_3_m'), d:t('floor_3_d'), tint:'#F4F4F4' }, ]; return ( {photos.map((p,i) => ( setOpen(i)} style={{...S.mCell, gridArea:p.area, padding:0, border:'none', cursor:'zoom-in'}}> {t(p.k)} ))} {open >= 0 && ( { if (e.target === e.currentTarget) setOpen(-1); }}> setOpen(-1)} aria-label="Cerrar" style={S.lbX}> setOpen(o => (o - 1 + photos.length) % photos.length)} aria-label="Anterior" style={{...S.lbNav, left:14}}> setOpen(o => (o + 1) % photos.length)} aria-label="Siguiente" style={{...S.lbNav, right:14, transform:'translateY(-50%)'}}> {t(photos[open].k)} · {open+1}/{photos.length} )} {t('sp_eyebrow')} {t('sp_h2_a')}{t('sp_h2_b')} {t('sp_intro')} {t('nav_gallery')} {plantas.map(p => ( {p.n} {p.m} {p.t} {p.s} {p.d} ))} ); } const S = { wrap:{ padding:'40px 28px 60px', background:'#fff', maxWidth:1280, margin:'0 auto' }, head:{ maxWidth:780, marginBottom:64 }, eyebrow:{ fontFamily:'Montserrat, sans-serif', fontWeight:700, fontSize:12, letterSpacing:'.25em', textTransform:'uppercase', color:'#6B6B6B' }, h2:{ fontFamily:'Montserrat, sans-serif', fontWeight:900, fontSize:'clamp(36px,4.2vw,64px)', lineHeight:1, letterSpacing:'-0.02em', margin:'18px 0 24px', textTransform:'uppercase', color:'#1A1A1A' }, intro:{ fontFamily:'Inter, sans-serif', fontSize:18, lineHeight:1.55, color:'#2B2B2B', maxWidth:640 }, galLink:{ display:'inline-flex', alignItems:'center', gap:8, marginTop:20, fontFamily:'Montserrat, sans-serif', fontWeight:700, fontSize:13, letterSpacing:'.1em', textTransform:'uppercase', color:'#1A1A1A', textDecoration:'none', borderBottom:'2px solid #F5C801', paddingBottom:4 }, grid:{ display:'grid', gridTemplateColumns:'repeat(auto-fit,minmax(300px,1fr))', gap:16 }, card:{ borderRadius:22, padding:'28px 28px 32px', display:'flex', flexDirection:'column', justifyContent:'flex-start', gap:18 }, num:{ fontFamily:'Montserrat, sans-serif', fontWeight:900, fontSize:88, lineHeight:.85, color:'#1A1A1A', opacity:.85 }, meta:{ fontFamily:'ui-monospace, monospace', fontSize:12, color:'#6B6B6B', marginBottom:8 }, h3:{ fontFamily:'Montserrat, sans-serif', fontWeight:800, fontSize:26, margin:0, textTransform:'uppercase', letterSpacing:'-0.01em', color:'#1A1A1A' }, sub:{ fontFamily:'Inter, sans-serif', fontSize:15, color:'#6B6B6B', margin:'2px 0 14px' }, desc:{ fontFamily:'Inter, sans-serif', fontSize:14, lineHeight:1.6, color:'#2B2B2B', margin:0 }, mosaic:{ display:'grid', gridTemplateColumns:'repeat(4,1fr)', gridTemplateRows:'220px 220px 220px', gridTemplateAreas:'"a a b c" "d e e f" "g h i j"', gap:12, marginBottom:80 }, mCell:{ position:'relative', borderRadius:16, overflow:'hidden', background:'#F4F4F4' }, gImgEl:{ width:'100%', height:'100%', objectFit:'cover', display:'block' }, gLbl:{ position:'absolute', bottom:12, left:12, background:'#1A1A1A', color:'#F5C801', padding:'5px 10px', fontFamily:'Montserrat, sans-serif', fontWeight:700, fontSize:10, letterSpacing:'.1em', textTransform:'uppercase', borderRadius:4 }, lbBack:{ position:'fixed', inset:0, background:'rgba(10,10,10,.92)', zIndex:9999, display:'flex', alignItems:'center', justifyContent:'center', padding:24 }, lbX:{ position:'absolute', top:18, right:18, width:44, height:44, borderRadius:999, background:'rgba(255,255,255,.12)', border:'none', color:'#fff', cursor:'pointer', display:'flex', alignItems:'center', justifyContent:'center' }, lbNav:{ position:'absolute', top:'50%', transform:'translateY(-50%) rotate(180deg)', width:48, height:48, borderRadius:999, background:'rgba(255,255,255,.12)', border:'none', color:'#fff', cursor:'pointer', display:'flex', alignItems:'center', justifyContent:'center', zIndex:2 }, lbFig:{ margin:0, maxWidth:'min(1200px, 92vw)', maxHeight:'88vh', display:'flex', flexDirection:'column', gap:14, alignItems:'center' }, lbImg:{ maxWidth:'100%', maxHeight:'82vh', objectFit:'contain', borderRadius:8, boxShadow:'0 30px 80px rgba(0,0,0,.5)' }, lbCap:{ fontFamily:'Montserrat, sans-serif', fontWeight:700, fontSize:12, letterSpacing:'.18em', textTransform:'uppercase', color:'#F5C801' }, }; function Habitaciones() { const { t, lang } = useT(); const roomLabel = (n) => lang === 'en' ? `Room ${n}` : lang === 'fr' ? `Chambre ${n}` : `Habitación ${n}`; const rooms = [ { n:'01', suffix:t('r01_home_suffix'), tag:t('r01_home_tag'), short:t('r01_short'), plant:t('floor_pb'), bano:t('bath_private'), img:'img/hab-01.jpeg' }, { n:'02', suffix:t('r02_home_suffix'), tag:t('r02_home_tag'), short:t('r02_short'), plant:t('floor_p1'), bano:t('bath_private'), img:'img/hab-02.jpeg' }, { n:'03', suffix:t('r03_home_suffix'), tag:t('r03_home_tag'), short:t('r03_short'), plant:t('floor_p1'), bano:t('bath_shared_05'), img:'img/hab-03.jpeg' }, { n:'04', suffix:t('r04_home_suffix'), tag:t('r04_home_tag'), short:t('r04_short'), plant:t('floor_p1'), bano:t('bath_private'), img:'img/hab-04.jpeg' }, { n:'05', suffix:t('r05_home_suffix'), tag:t('r05_home_tag'), short:t('r05_short'), plant:t('floor_p1'), bano:t('bath_shared_03'), img:'img/hab-05.jpeg' }, ]; return ( {t('rooms_eyebrow')} {t('rooms_h2_a')}{t('rooms_h2_b')} {t('rooms_note_a')} {t('rooms_note_b')}{t('rooms_note_c')} {t('rooms_fit_lbl')} · {t('rooms_fit_1')} · {t('rooms_fit_2')} · {t('rooms_fit_3')} · {t('rooms_fit_4')} · {t('rooms_fit_5')} {rooms.map(r => ( {r.n} {r.tag} {roomLabel(r.n)} · {r.suffix} {r.plant} {r.bano} {r.short} ))} + {t('full_h')} {t('full_p')} {t('full_cta')} ); } const R = { wrap:{ padding:'60px 0 100px', background:'#FAFAFA' }, head:{ display:'grid', gridTemplateColumns:'1.2fr 1fr', gap:40, alignItems:'end', marginBottom:48 }, h2:{ fontFamily:'Montserrat, sans-serif', fontWeight:900, fontSize:'clamp(36px,4.2vw,58px)', lineHeight:1, letterSpacing:'-0.02em', margin:'18px 0 0', textTransform:'uppercase', color:'#1A1A1A' }, note:{ fontFamily:'Inter, sans-serif', fontSize:16, color:'#2B2B2B', lineHeight:1.6, margin:0 }, grid:{ display:'grid', gridTemplateColumns:'repeat(auto-fit,minmax(260px,1fr))', gap:16 }, card:{ background:'#fff', borderRadius:18, overflow:'hidden', display:'flex', flexDirection:'column', border:'1px solid #ECECEC' }, imgHolder:{ position:'relative', aspectRatio:'4/5', background:'linear-gradient(135deg,#D4C294,#A08860)', display:'flex', alignItems:'flex-end', padding:16 }, num:{ position:'absolute', top:14, left:16, fontFamily:'Montserrat, sans-serif', fontWeight:900, fontSize:32, color:'#fff', lineHeight:1 }, body:{ padding:'18px 18px 20px' }, chip:{ display:'inline-block', fontFamily:'Montserrat, sans-serif', fontWeight:700, fontSize:10, letterSpacing:'.1em', textTransform:'uppercase', background:'#FFFBEA', color:'#8B6F00', padding:'4px 9px', borderRadius:999 }, h3:{ fontFamily:'Montserrat, sans-serif', fontWeight:800, fontSize:20, margin:'10px 0 8px', color:'#1A1A1A', textTransform:'uppercase', letterSpacing:'-0.01em' }, meta:{ display:'flex', flexDirection:'column', gap:4, fontFamily:'Inter, sans-serif', fontSize:12, color:'#6B6B6B', marginBottom:12 }, feat:{ listStyle:'none', padding:0, margin:0, display:'flex', flexDirection:'column', gap:6, fontFamily:'Inter, sans-serif', fontSize:13, color:'#2B2B2B' }, short:{ fontFamily:'Inter, sans-serif', fontSize:14, lineHeight:1.55, color:'#2B2B2B', margin:0 }, fit:{ display:'flex', flexWrap:'wrap', alignItems:'center', gap:'4px 10px', margin:'-12px 0 28px', padding:'10px 0 0', fontFamily:'ui-monospace, monospace', fontSize:12, color:'#6B6B6B', borderTop:'1px dashed #ECECEC' }, fitLbl:{ fontFamily:'Montserrat, sans-serif', fontWeight:800, fontSize:11, letterSpacing:'.18em', textTransform:'uppercase', color:'#1A1A1A' }, fitDot:{ opacity:.4 }, }; window.Espacio = Espacio; window.Habitaciones = Habitaciones;
{t('sp_intro')}
{p.d}
{t('rooms_note_a')} {t('rooms_note_b')}{t('rooms_note_c')}
{r.short}
{t('full_p')}