var __gh = require("react").createElement, __gf = require("react").Fragment; var __create=Object.create;var __defProp=Object.defineProperty;var __getOwnPropDesc=Object.getOwnPropertyDescriptor;var __getOwnPropNames=Object.getOwnPropertyNames;var __getProtoOf=Object.getPrototypeOf,__hasOwnProp=Object.prototype.hasOwnProperty;var __export=(target,all)=>{for(var name in all)__defProp(target,name,{get:all[name],enumerable:!0})},__copyProps=(to,from,except,desc)=>{if(from&&typeof from=="object"||typeof from=="function")for(let key of __getOwnPropNames(from))!__hasOwnProp.call(to,key)&&key!==except&&__defProp(to,key,{get:()=>from[key],enumerable:!(desc=__getOwnPropDesc(from,key))||desc.enumerable});return to};var __toESM=(mod,isNodeMode,target)=>(target=mod!=null?__create(__getProtoOf(mod)):{},__copyProps(isNodeMode||!mod||!mod.__esModule?__defProp(target,"default",{value:mod,enumerable:!0}):target,mod)),__toCommonJS=mod=>__copyProps(__defProp({},"__esModule",{value:!0}),mod);var stdin_exports={};__export(stdin_exports,{default:()=>stdin_default,featureConfig:()=>featureConfig});module.exports=__toCommonJS(stdin_exports);var dataSources=[{table:"web__pisos",access:"public:read"},{table:"web__articulos",access:"public:read"},{table:"web__terminos",access:"public:read"},{table:"web__articulo_terminos",access:"public:read"},{table:"web__solicitudes",access:"public:write"}];var seo={routes:[{path:"/",role:"page",h1:"Tu casa, alquilada. T\xFA, a lo tuyo.",title:"Empresa de gesti\xF3n de apartamentos tur\xEDsticos | Batuecas",description:"Gesti\xF3n de alquiler tur\xEDstico y de todo el a\xF1o, reformas y venta, con un solo equipo detr\xE1s. Casas en Madrid, en la costa y en las islas.",rating:{table:"web__pisos",value:"valoracion",count:"resenas",active:"publicado"}},{path:"/estancias-cortas",role:"page",h1:"Estancias cortas",description:"Los alojamientos que gestionamos por noches. Di d\xF3nde, cu\xE1ndo y cu\xE1ntos sois, y salen los que est\xE1n libres con lo que cuestan."},{path:"/alquileres",role:"page",h1:"Alquileres",description:"Pisos en alquiler de temporada y de todo el a\xF1o en Madrid, gestionados por el mismo equipo que los reforma y responde al tel\xE9fono. Dinos qu\xE9 buscas."},{path:"/venta",role:"page",h1:"En venta",description:"Pisos, locales y casas en venta. Pregunta por el que te interese en su ficha y te ense\xF1amos el que quieras ver."},{path:"/gestion",role:"page",h1:"Tu casa rentando, t\xFA sin preocuparte",title:"Gesti\xF3n de apartamentos tur\xEDsticos en Madrid | Batuecas",description:"Gestionamos tu casa en alquiler tur\xEDstico: anuncios, precio diario, hu\xE9spedes, limpieza y mantenimiento. T\xFA cobras cada mes. Mira nuestras tarifas."},{path:"/reformas",role:"page",h1:"Reformas",description:"Diecis\xE9is obras terminadas con sus fotos, calle por calle. Cocinas, ba\xF1os y casas enteras, con presupuesto cerrado despu\xE9s de ir a verlo y sin sorpresas."},{path:"/blog",role:"page",h1:"El blog de Batuecas",description:"Noventa y tres art\xEDculos sobre comprar, vender, alquilar y reformar en Madrid. Lo que hemos ido aprendiendo gestionando casas de otros."},{path:"/aviso-legal",role:"page",h1:"Aviso legal",description:"Datos identificativos de la sociedad, condiciones de uso del sitio, propiedad intelectual y responsabilidad. Texto legal de Batuecas Real State SL."},{path:"/politica-de-privacidad",role:"page",h1:"Pol\xEDtica de privacidad",description:"Qui\xE9n trata tus datos, con qu\xE9 finalidad y durante cu\xE1nto tiempo, a qui\xE9n se ceden y c\xF3mo ejercer tus derechos de acceso, rectificaci\xF3n y supresi\xF3n."},{path:"/cookies",role:"page",h1:"Cookies",description:"Qu\xE9 cookies de Google usa esta web, s\xF3lo si las aceptas, qu\xE9 se mide sin cookies y c\xF3mo cambiar tu decisi\xF3n."},{path:"/terminos-y-condiciones",role:"page",h1:"T\xE9rminos y condiciones",description:"Condiciones de uso del sitio y de las transacciones relacionadas con nuestros servicios, propiedad intelectual, pagos, garant\xEDas y ley aplicable."},{path:"/accesibilidad",role:"page",h1:"Accesibilidad",description:"Declaraci\xF3n de accesibilidad conforme al Real Decreto 1112/2018, situaci\xF3n de conformidad, contenido no accesible y por d\xF3nde comunicar un problema."},{path:"/cuenta",role:"page",index:!1,h1:"Mi cuenta",description:"Tus reservas en Batuecas: las pr\xF3ximas, las anteriores y el pago de las pendientes."},{path:"/portal",role:"page",index:!1,h1:"Tu \xE1rea de propietario",description:"Tus propiedades con Batuecas en un solo sitio: reservas, calendario, ocupaci\xF3n, facturas y hu\xE9spedes."},{path:"/:piso",role:"detail",table:"web__pisos",slug:"slug",title:"titulo",description:"descripcion",image:"foto",active:"publicado",catalog:!0,rental:{only:{seccion:"estancias_cortas",tipo:"piso"},kind:"apartment",lat:"lat",lng:"lng",address:"direccion",city:"ciudad",capacity:"capacidad",bedrooms:"dormitorios",beds:"camas",bathrooms:"banos",size:"superficie_m2",photos:"fotos",amenities:"comodidades",checkin:"detalles.entrada",checkout:"detalles.salida",minNights:"detalles.min_noches",pets:"detalles.mascotas",smoking:"detalles.fumar",children:"detalles.ninos",rating:"valoracion",ratingCount:"resenas"}},{path:"/:articulo",role:"detail",table:"web__articulos",slug:"slug",title:"titulo",description:"extracto",image:"foto",active:"publicado",type:"Article"}]};var import_react49=require("react");var T={bg:"#faf9f6",surface:"#ffffff",surfaceAlt:"#f3f1ec",line:"#e4e0d7",lineSoft:"#efece5",ink:"#16150f",body:"#54524a",muted:"#8d8a7f",apagado:"rgba(60,58,50,0.5)",accent:"#621217",accentInk:"#ffffff",accentSoft:"#f7eded",accentBorde:"#e7c6c8",dorado:"#cac47c"},A={bg:"#ffffff",alt:"#f5f5f7",ink:"#1d1d1f",body:"#424245",muted:"#6e6e73",line:"#d2d2d7",hair:"#e8e8ed",accent:"#621217",accentHover:"#4d0e12",radio:18,sombra:"0 1px 2px rgba(0,0,0,0.04), 0 8px 28px rgba(0,0,0,0.08)",sombraFuerte:"0 2px 6px rgba(0,0,0,0.06), 0 18px 48px rgba(0,0,0,0.14)"},FUENTE=id=>`/api/files/serve?path=company_642%2F${id}`,FUENTES=` @font-face { font-family: 'BQ Inter'; font-style: normal; font-weight: 100 900; font-display: swap; src: url('${FUENTE("e1dfba1a-1efd-40d0-8e63-295c5668e07f_batuecas_inter_variable.woff2")}') format('woff2'); } `,SANS="'BQ Inter', -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto, 'Helvetica Neue', Arial, sans-serif",PESO_TITULAR=320,PESO_SECCION=360,ANCHO=1180,ALTO_MENU=66,MARCO_HERO=14,MARGEN_HERO="clamp(24px, 3.6vw, 52px)";var FOTOS_QUE_NO_SON_FOTOS=["https://img.hostify.com/350/property/ecef5f12a16c94eeffe9e3019810a0fe-lg.jpg"];var COOKIE="batuecas_idioma";function guardar(l){document.cookie=`${COOKIE}=${l}; path=/; max-age=31536000; samesite=lax`}function leer(){if(typeof window>"u")return"es";let enLaUrl=new URLSearchParams(window.location.search).get("lang");if(enLaUrl==="es"||enLaUrl==="en")return guardar(enLaUrl),enLaUrl;let c=document.cookie.match(new RegExp(`(?:^|;\\s*)${COOKIE}=(es|en)\\b`));return c===null?"es":c[1]}var IDIOMA=leer(),LOCALE=IDIOMA==="en"?"en-GB":"es-ES";typeof document<"u"&&IDIOMA==="en"&&(document.documentElement.lang="en");var t=(es,en)=>IDIOMA==="en"?en:es;function cambiarIdioma(l){guardar(l);let u=new URL(window.location.href);u.searchParams.delete("lang"),window.location.replace(u.toString())}var CAMPOS_PISO=["id","slug","titulo","tipo","seccion","ciudad","direccion","lat","lng","precio_noche","capacidad","dormitorios","camas","banos","plazas","foto","publicado","orden","precio_mes","precio_venta","superficie_m2","fotos","tipo_alquiler","estancia_min_meses","valoracion","resenas","comunidad"],CAMPOS_FICHA=["descripcion","comodidades","detalles"];function tieneFoto(p){return p.foto!==null&&!FOTOS_QUE_NO_SON_FOTOS.includes(p.foto)}function fotoDe(p,tamano){if(!tieneFoto(p))return null;let u=p.foto;return tamano==="lg"?u:u.replace(/-lg\.(jpg|jpeg|png|webp)$/i,"-md.$1")}function esHostal(p){return p.tipo==="hostal"}function titulo(p){return esHostal(p)?p.titulo.toLocaleLowerCase("es-ES").split(" ").map(w=>w.charAt(0).toLocaleUpperCase("es-ES")+w.slice(1)).join(" "):p.titulo}function esAlquiler(p){return p.seccion==="alquileres"}function esVenta(p){return p.seccion==="venta"}function ficha(p){if(esHostal(p))return p.plazas===null?[]:[`${p.plazas} ${t("plazas","beds")}`];let partes=[];return esAlquiler(p)&&p.superficie_m2!==null&&partes.push(`${Number(p.superficie_m2)} m\xB2`),p.dormitorios!==null&&partes.push(`${p.dormitorios} ${p.dormitorios===1?t("dormitorio","bedroom"):t("dorm","bedrooms")}`),!esAlquiler(p)&&p.capacidad!==null&&partes.push(`${p.capacidad} ${p.capacidad===1?t("hu\xE9sped","guest"):t("hu\xE9spedes","guests")}`),p.banos!==null&&partes.push(`${p.banos} ${p.banos===1?t("ba\xF1o","bath"):t("ba\xF1os","baths")}`),partes}function sinAcentos(v){return v.toLocaleLowerCase("es-ES").normalize("NFD").replace(/[̀-ͯ]/g,"")}function lugar(ciudad){let c=(ciudad??"").trim();return c===""||c!==c.toLocaleUpperCase("es-ES")?c:c.toLocaleLowerCase("es-ES").replace(/(^|[\s-])(\p{L})/gu,(_,sep,l)=>sep+l.toLocaleUpperCase("es-ES"))}function donde(p){return p.ciudad??""}function precio(p){return!!1||p.precio_noche===null?null:t(`${p.precio_noche.toLocaleString(LOCALE)} \u20AC la noche`,`\u20AC${p.precio_noche.toLocaleString(LOCALE)} per night`)}function precioMes(p){return p.precio_mes===null?null:`${euros(Number(p.precio_mes))} ${t("al mes","per month")}`}function precioVenta(p){return p.precio_venta===null?null:euros(Number(p.precio_venta))}function euros(n){let r=String(Math.round(n));return IDIOMA==="en"?`\u20AC${r.replace(/\B(?=(\d{3})+(?!\d))/g,",")}`:`${r.replace(/\B(?=(\d{3})+(?!\d))/g,".")} \u20AC`}function tipoDeAlquiler(p){if(p.tipo_alquiler===null)return null;let base2=p.tipo_alquiler==="Temporada"?t("Alquiler de temporada","Mid-term rental"):t("Alquiler de larga duraci\xF3n","Long-term rental"),min=Number(p.estancia_min_meses);return min>0?`${base2} \xB7 ${t("m\xEDnimo","minimum")} ${min} ${min===1?t("mes","month"):t("meses","months")}`:base2}function fotoMd(u){return u.replace(/-lg\.(jpg|jpeg|png|webp)$/i,"-md.$1")}function fotoLigera(u){if(u.startsWith("company_")){let base2="/api/files/serve?path="+encodeURIComponent(u);return{src:`${base2}&w=600`,srcSet:`${base2}&w=300 300w, ${base2}&w=600 600w`}}return{src:fotoMd(u)}}function nota(n){let r=String(Math.round(n*100)/100);return IDIOMA==="en"?r:r.replace(".",",")}function muyValorado(p){return p.valoracion!==null&&Number(p.valoracion)>=4.8&&Number(p.resenas)>=20}function queEs(p){let que=esHostal(p)?t("Hostal","Hostel"):t("Apartamento","Apartment");return p.ciudad?`${que} ${t("en","in")} ${p.ciudad}`:que}function fotosDe(p){let fotos=Array.isArray(p.fotos)?p.fotos.filter(f=>!FOTOS_QUE_NO_SON_FOTOS.includes(f)):[];return fotos.length>0?fotos:tieneFoto(p)?[p.foto]:[]}var EMAIL=/^[^\s@]+@[^\s@]+\.[A-Za-z]{2,}$/;function emailValido(v){return EMAIL.test(v.trim())}function telefonoValido(v){let limpio=v.trim();if(limpio==="")return!0;if(!/^\+?[\d\s().-]+$/.test(limpio))return!1;let digitos=limpio.replace(/\D/g,"");return digitos.length>=9&&digitos.length<=15}function mapaUrl(p){return p.lat===null||p.lng===null?null:`https://www.google.com/maps?q=${p.lat},${p.lng}&z=15&output=embed`}var LOGO_VIEJO=/_(?:2022_04_descarga\.png|2020_12_(?:cropped-)?LogoWeb[^"]*\.png)/,SERVIR="/api/files/serve?path=";function fichero(src){return decodeURIComponent(src).split("/").pop().replace(/^[0-9a-f-]{36}_/,"").replace(/(?:-\d+x\d+|-scaled|-e\d{10,})+(?=\.\w+$)/,"")}function mismoTitulo(html,titulo3){let plano=h=>h.replace(/<[^>]+>/g," ").replace(/ | /g," ").toLowerCase().replace(/[^\p{L}\p{N}]+/gu," ").trim(),a=plano(html),b=plano(titulo3);return a!==""&&b!==""&&(a.startsWith(b)||b.startsWith(a))}function limpiarHtml(html,titulo3,foto2){let s=html,videos=[];if(s=s.replace(/]*\bsrc\s*=\s*["']([^"']*youtube(?:-nocookie)?\.com\/embed\/[^"']*)["'][^>]*>\s*<\/iframe>/gi,(_m,src)=>{let limpio=String(src).replace(/�?38;/g,"&").replace(/^http:/,"https:").replace("//www.youtube.com/","//www.youtube-nocookie.com/");return videos.push(limpio),`[[BQVIDEO${videos.length-1}]]`}),s=s.replace(/<(script|style|iframe|object|embed|form|noscript)\b[^>]*>[\s\S]*?<\/\1>/gi,""),s=s.replace(/<(script|style|iframe|object|embed|input|link|meta)\b[^>]*\/?>/gi,""),s=s.replace(/\son[a-z]+\s*=\s*"[^"]*"/gi,""),s=s.replace(/\son[a-z]+\s*=\s*'[^']*'/gi,""),s=s.replace(/javascript:/gi,""),s=s.replace(/]*_wp_link_placeholder[^>]*>([\s\S]*?)<\/a>/gi,"$1"),s=s.replace(/(href\s*=\s*["'])https?:\/\/(?:www\.)?(?:batuecas\.es|batuecases\.wpengine\.com)\/([a-z0-9-]+)\/?(["'])/gi,"$1/$2$3"),s=s.replace(/(href\s*=\s*["'])https?:\/\/(?:www\.)?(?:batuecas\.es|batuecases\.wpengine\.com)\/?(["'])/gi,"$1/$2"),s=s.replace(/(href\s*=\s*["'])https?:\/\/www\.idealista\.com\/pro\/batuecasrealestate\/?(["'])/gi,"$1/venta$2"),s=s.replace(/(href\s*=\s*["'])https?:\/\/www\.idealista\.com\/pro\/batuecasrealestate\/alquiler-viviendas\/?(["'])/gi,"$1/alquileres$2"),s=s.replace(/]*\bhref\s*=\s*"https?:\/\/[^"\/]*[\s%&<][^"]*"[^>]*>([\s\S]*?)<\/a>/gi,"$1"),s=s.replace(/]*\bwp-caption-text\b[^>]*>([\s\S]*?)<\/p>/gi,"$1"),s=s.replace(/\s(?:class|style|id|data-[\w-]+|align|bgcolor|aria-[\w-]+|contenteditable|tabindex|role)\s*=\s*"[^"]*"/gi,""),s=s.replace(/\s(?:class|style|id|data-[\w-]+|align|bgcolor|aria-[\w-]+|contenteditable|tabindex|role)\s*=\s*'[^']*'/gi,""),s=s.replace(/<\/?(?:div|section|span|figure|figcaption|article|header|footer)\b[^>]*>/gi,""),s=s.replace(/<(h[1-6])>\s*El blog de Batuecas\.?\s*(]*>)?\s*<\/\1>(\s*<(h[1-6])>([\s\S]*?)<\/\4>)?/i,(_m,_h,img,detras,_h2,texto)=>{let repite=texto!==void 0&&mismoTitulo(texto,titulo3);return(img===void 0?"":`

${img}

`)+(detras===void 0||repite?"":detras)}),foto2!==null&&foto2!==""){let portada=fichero(foto2);s=s.replace(/]*\bsrc="([^"]+)"[^>]*>/i,(img,src)=>fichero(src)===portada?"":img)}return s=s.replace(/]*>/gi,img=>LOGO_VIEJO.test(img)?"":img),s=s.replace(/]*>/gi,img=>{let src=(img.match(/\bsrc="([^"]+)"/)??[])[1];if(src===void 0||!src.startsWith(SERVIR))return img;let ruta=src.slice(SERVIR.length).split("&")[0],escalera=[400,800,1200,1600].map(w=>`${SERVIR}${ruta}&w=${w} ${w}w`).join(", ");return img.replace(/\s(?:srcset|sizes)\s*=\s*"[^"]*"/gi,"").replace(/\bsrc="[^"]+"/,`src="${SERVIR}${ruta}&w=1200" srcset="${escalera}" sizes="(max-width: 800px) calc(100vw - 40px), 720px"`)}),s=s.replace(/

\s*(?: | |\s|<(b|strong|em|i)>\s*<\/\1>)*<\/p>/gi,""),s=s.replace(/<(h[1-6])>\s*<\/\1>/gi,""),s=s.replace(/[ \t]*\n[ \t\n]*/g,` `).trim(),s=s.replace(/<(p|pre)>\s*((?:Foto|Imagen) de\b(?:(?!<\/\1>)[\s\S]){1,200}?)\s*<\/\1>/gi,"$2"),s=s.replace(/^((?:Foto|Imagen) de [^<]{1,80}:)\s*/i,"$1"),s=s.replace(/([\s\S]*?)<\/small>/g,(_m,pie)=>{let limpio=pie.replace(/<a href=»[\s\S]*?«>(?:)?|<\/a>/g,"").replace(/ /g," ").trim();return limpio===""?"":`${limpio}`}),s=s.replace(/^((?:\s*(?:

\s*)?]*>(?:\s*<\/p>)?(?:\s*[\s\S]*?<\/small>)?)*)\s*<(h[1-6])>([\s\S]*?)<\/\2>\s*/,(m,antes,_h,texto)=>mismoTitulo(texto,titulo3)?`${antes} `:m),s=s.replace(/\[\[BQVIDEO(\d+)\]\]/g,(_m,i)=>{let src=videos[Number(i)];return src?`

`:""}),s}var CAMPOS_ARTICULO=["id","slug","titulo","extracto","fecha","categoria","foto","publicado"],TEMAS=[{id:"vender",es:"Vender",en:"Selling",re:/vend|\bventas?\b/i},{id:"comprar",es:"Comprar",en:"Buying",re:/compr|hipotec|primer piso|primera casa|arras/i},{id:"alquilar",es:"Alquilar",en:"Renting",re:/alquil|inquilin|okupa/i},{id:"invertir",es:"Invertir",en:"Investing",re:/invers|invertir|rentab|mercado inmobiliario|precio|tipos|lujo|financiera/i},{id:"casa",es:"Casa y decoraci\xF3n",en:"Home and decor",re:/decora|reform|hogar|sofá|\bplanta|dormitorio|home staging|porcel|silla|\bmuebl|casa pequeña|calor|luzca|tu casa|factura|arquitect/i},{id:"viajes",es:"Viajes",en:"Travel",re:/viaj|vacacion|destino|playa|verano|turístic|hosped/i}];function relacionados(a,todos,n){let suyos=TEMAS.filter(x=>x.re.test(a.titulo)),otros=todos.filter(o=>o.id!==a.id).sort((x,y)=>(y.fecha??"").localeCompare(x.fecha??"")),afines=otros.filter(o=>suyos.some(x=>x.re.test(o.titulo)));return[...afines,...otros.filter(o=>!afines.includes(o))].slice(0,n)}var MESES=["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],MONTHS=["January","February","March","April","May","June","July","August","September","October","November","December"];function fechaLarga(iso){if(!iso)return"";let m=/^(\d{4})-(\d{2})-(\d{2})/.exec(iso);if(!m)return"";let mes2=Number(m[2])-1;return t(`${Number(m[3])} de ${MESES[mes2]} de ${m[1]}`,`${Number(m[3])} ${MONTHS[mes2]} ${m[1]}`)}function categoriaUtil(c){if(!c)return null;let limpia=c.trim();return limpia===""||/^sin categor[ií]a$/i.test(limpia)?null:limpia}var import_react2=__toESM(require("react")),import_lucide_react=require("lucide-react");var ANTETITULO={display:"block",fontSize:13,fontWeight:600,letterSpacing:"0.01em",color:T.accent},PORTADILLA={margin:0,fontFamily:SANS,fontSize:"clamp(36px, 5.6vw, 60px)",lineHeight:1.06,fontWeight:PESO_TITULAR,color:T.ink,letterSpacing:"-0.035em"},TITULO={margin:0,fontFamily:SANS,fontSize:"clamp(30px, 4.6vw, 50px)",lineHeight:1.08,fontWeight:PESO_SECCION,color:T.ink,letterSpacing:"-0.03em"},APAGADO={color:T.apagado},ENTRADILLA={margin:"14px 0 0",fontSize:"clamp(15.5px, 1.8vw, 17.5px)",lineHeight:1.65,color:T.body,maxWidth:620},AIRE="clamp(64px, 9vw, 110px)",BOTON={display:"inline-flex",alignItems:"center",justifyContent:"center",gap:8,minHeight:52,padding:"0 26px",borderRadius:999,background:T.accent,color:T.accentInk,fontSize:16,fontWeight:600,letterSpacing:"-0.01em",textDecoration:"none",border:"none",fontFamily:"inherit",cursor:"pointer",boxShadow:"0 10px 24px -12px rgba(98,18,23,0.55)",boxSizing:"border-box"},BOTON_CONTORNO={...BOTON,padding:"0 24px",background:"transparent",color:T.ink,fontWeight:500,border:`1px solid ${T.line}`,boxShadow:"none"},TARJETA={background:T.surface,border:`1px solid ${T.line}`,borderRadius:20,overflow:"hidden"},ENLACE_SECCION={display:"inline-flex",alignItems:"center",gap:8,fontSize:14.5,fontWeight:600,color:T.accent,textDecoration:"none",whiteSpace:"nowrap"};var EN_TEXTO={"/estancias-cortas":{h1:"Short stays",texto:"The homes we manage by the night. Tell us where, when and how many of you, and see the ones that are free with what they cost."},"/alquileres":{h1:"Long-term rentals",texto:"Flats for mid-term and long-term rent in Madrid, managed by the same team that renovates them and answers the phone. Tell us what you are looking for."},"/venta":{h1:"For sale",texto:"Flats, commercial premises and houses for sale. Ask about the one you like on its page and we will show you any you want to see."},"/blog":{h1:"The Batuecas blog",texto:"Ninety-three articles, in Spanish, on buying, selling, renting and renovating in Madrid. What we have learnt managing other people\u2019s homes."},"/aviso-legal":{h1:"Legal notice",texto:"Company details, terms of use of the site, intellectual property and liability. Legal text of Batuecas Real State SL."},"/politica-de-privacidad":{h1:"Privacy policy",texto:"Who processes your data, for what purpose and for how long, who it is shared with and how to exercise your rights of access, rectification and erasure."},"/cookies":{h1:"Cookies",texto:"Which Google cookies this site uses, only if you accept them, what it measures without cookies, and how to change your choice."},"/terminos-y-condiciones":{h1:"Terms and conditions",texto:"Terms of use of the site and of transactions related to our services, intellectual property, payments, guarantees and applicable law."},"/accesibilidad":{h1:"Accessibility",texto:"Accessibility statement under Royal Decree 1112/2018, conformance status, non-accessible content and where to report a problem."},"/cuenta":{h1:"My account",texto:"Your bookings with Batuecas: upcoming, past, and payment for the pending ones."},"/portal":{h1:"Your owner area",texto:"Your homes with Batuecas in one place: bookings, calendar, occupancy, invoices and guests."}},PANTALLAS={};for(let r of seo.routes){if(r.role!=="page")continue;let ruta=r;PANTALLAS[ruta.path]=IDIOMA==="en"&&EN_TEXTO[ruta.path]!==void 0?EN_TEXTO[ruta.path]:{h1:ruta.h1,texto:ruta.description}}function textoDe(path){let t2=PANTALLAS[path];if(!t2)throw new Error(`core/paginas: la ruta "${path}" no est\xE1 declarada como pantalla en core/seo.ts`);return t2}var RUTAS_LEGALES=["/aviso-legal","/politica-de-privacidad","/cookies","/terminos-y-condiciones","/accesibilidad"],CORTO={"/blog":"Blog","/gestion":"Propietarios"},FUERA_DEL_MENU=["/cuenta","/portal"],EN={"/estancias-cortas":"Short stays","/alquileres":"Long-term rentals","/venta":"For sale","/gestion":"Owners","/reformas":"Renovations","/blog":"Blog","/aviso-legal":"Legal notice","/politica-de-privacidad":"Privacy policy","/cookies":"Cookies","/terminos-y-condiciones":"Terms and conditions","/accesibilidad":"Accessibility"},etiqueta=(path,es)=>IDIOMA==="en"&&EN[path]!==void 0?EN[path]:es,SECCIONES=seo.routes.filter(r=>r.role==="page"&&r.path!=="/"&&!RUTAS_LEGALES.includes(r.path)&&!FUERA_DEL_MENU.includes(r.path)).map(r=>({path:r.path,label:etiqueta(r.path,CORTO[r.path]??r.h1)})).sort((a,b)=>+(a.path==="/gestion")-+(b.path==="/gestion")),FUERA_DE_LA_BARRA=["/gestion","/blog"],MENU=SECCIONES.filter(m=>!FUERA_DE_LA_BARRA.includes(m.path)),PROPIETARIOS=SECCIONES.find(m=>m.path==="/gestion"),MENU_LEGAL=seo.routes.filter(r=>r.role==="page"&&RUTAS_LEGALES.includes(r.path)).map(r=>({path:r.path,label:etiqueta(r.path,r.h1)}));var F=id=>`/api/files/serve?path=company_642%2F${id}`,LOGO=F("a500f677-c6c5-4bfe-8a51-a31034296b31_2024_05_Logo_Batuecas_2.webp"),LOGO_BLANCO=F("c630c803-3dd9-42fb-bd62-b587a9ddf390_2024_05_Logo_Batuecas_inmobiliaria-blanco.webp"),PORTADA_VIDEO={webm:F("470669c6-1be8-4174-b309-245b58930813_batuecas_portada_madrid_escritorio.webm"),mp4:F("b0f51e7f-6496-47fe-8125-94262ec64a6a_batuecas_portada_madrid_escritorio.mp4")},PORTADA_VIDEO_MOVIL={webm:F("07edb9e1-a4c6-4e4d-8339-c7cfcbd96278_batuecas_portada_madrid_movil.webm"),mp4:F("a35e701a-a7ea-4f66-a7d3-26a7ff9cfff9_batuecas_portada_madrid_movil.mp4")},PORTADA_POSTER=F("afe9c508-49bf-41fc-9247-7a9fae6490e0_batuecas_portada_madrid_escritorio.jpg"),MAPA_ESPANA=F("fbe5cb35-65e0-4837-a454-1354c2683cd0_batuecas_mapa_espana.svg"),TELEFONO="+34 692 05 94 74",WHATSAPP=`https://wa.me/${TELEFONO.replace(/\D/g,"")}`,GESTION_VIDEO={webm:F("8997cf92-f7a8-4752-b09d-c7c46c505ff7_batuecas_gestion_escritorio.webm"),mp4:F("3520feb8-aadc-4836-9518-336e84e27d00_batuecas_gestion_escritorio.mp4")},GESTION_VIDEO_MOVIL={webm:F("a3dababb-e0a1-4f79-b105-b7b7ad0b75ad_batuecas_gestion_movil.webm"),mp4:F("9fd04e20-8228-4784-960f-1dc183461593_batuecas_gestion_movil.mp4")},GESTION_POSTER=F("9d8ffc9f-41a5-4188-a11a-fabc85db6f86_batuecas_gestion_poster.jpg");var import_react=require("react"),TOKEN="gufi_sf_ctoken",QUIEN="bq_huesped",EVENTO="bq-sesion";function leerSesion(){if(typeof window>"u"||!localStorage.getItem(TOKEN))return null;let q=localStorage.getItem(QUIEN);return q?JSON.parse(q):null}function guardarSesion(token,quien2){localStorage.setItem(TOKEN,token),localStorage.setItem(QUIEN,JSON.stringify(quien2)),window.dispatchEvent(new Event(EVENTO))}function cerrarSesion(){localStorage.removeItem(TOKEN),localStorage.removeItem(QUIEN),window.dispatchEvent(new Event(EVENTO))}function useSesion(){let[s,setS]=(0,import_react.useState)(leerSesion);return(0,import_react.useEffect)(()=>{let mirar=()=>setS(leerSesion());return window.addEventListener(EVENTO,mirar),window.addEventListener("storage",mirar),()=>{window.removeEventListener(EVENTO,mirar),window.removeEventListener("storage",mirar)}},[]),s}function sesionCaducada(e){let m=e instanceof Error?e.message:String(e);return/Entra con tu cuenta|Vuelve a entrar/.test(m)}var CAMBIO="0.55s cubic-bezier(0.22, 1, 0.36, 1)",UMBRAL_BAJADO=6,AIRE_PILDORA=12;function Navbar({url,activa,fondoOscuro,claro}){let[abierto,setAbierto]=(0,import_react2.useState)(!1),sesion=useSesion(),[bajado,setBajado]=(0,import_react2.useState)(!1),cabecera=(0,import_react2.useRef)(null);(0,import_react2.useEffect)(()=>{let h=e=>{if(e===void 0||e.target===document){setBajado(window.scrollY>UMBRAL_BAJADO);return}let el=e.target;cabecera.current!==null&&el.contains(cabecera.current)&&setBajado(el.scrollTop>UMBRAL_BAJADO)};return h(),document.addEventListener("scroll",h,{passive:!0,capture:!0}),()=>document.removeEventListener("scroll",h,{capture:!0})},[]),(0,import_react2.useEffect)(()=>{setAbierto(!1)},[activa]);let sobreVideo=fondoOscuro&&!bajado&&!abierto,pildora=bajado&&!abierto&&!claro;(0,import_react2.useEffect)(()=>{if(!abierto)return;let antes=document.body.style.overflow;document.body.style.overflow="hidden";let tecla=e=>{e.key==="Escape"&&setAbierto(!1)};return window.addEventListener("keydown",tecla),()=>{document.body.style.overflow=antes,window.removeEventListener("keydown",tecla)}},[abierto]);let marca2=__gh("a",{href:url("/"),style:{display:"flex",alignItems:"center",flexShrink:0},"aria-label":"Batuecas","data-gufi-src":"components/Navbar.tsx:136"},__gh("img",{src:LOGO,alt:"Batuecas",sizes:"190px",style:{height:34,width:"auto",display:"block",filter:sobreVideo?"brightness(0) invert(1)":"none",transition:`filter ${CAMBIO}`},"data-gufi-src":"components/Navbar.tsx:142"}));return __gh("header",{ref:cabecera,style:{position:"sticky",top:0,zIndex:40,background:sobreVideo||pildora?"transparent":claro?A.bg:T.bg,paddingTop:pildora?AIRE_PILDORA:0,boxShadow:claro&&bajado&&!abierto?`inset 0 -1px 0 ${A.hair}`:"none",transition:`background ${CAMBIO}, padding ${CAMBIO}`},"data-gufi-src":"components/Navbar.tsx:163"},__gh("div",{style:{maxWidth:sobreVideo?"100%":claro?1600:ANCHO,width:pildora?"calc(100% - 32px)":"100%",boxSizing:"border-box",margin:"0 auto",padding:sobreVideo?`0 calc(${MARCO_HERO}px + ${MARGEN_HERO})`:pildora?"0 10px 0 26px":claro?"0 clamp(20px, 4.2vw, 56px)":"0 20px",height:pildora?ALTO_MENU-AIRE_PILDORA:ALTO_MENU,borderRadius:999,background:pildora?"rgba(255,255,255,0.86)":"transparent",backdropFilter:pildora?"saturate(180%) blur(20px)":"none",WebkitBackdropFilter:pildora?"saturate(180%) blur(20px)":"none",border:`1px solid ${pildora?"rgba(22,21,15,0.07)":"transparent"}`,boxShadow:pildora?"0 12px 32px -14px rgba(22,21,15,0.22)":"none",transform:sobreVideo?`translateY(${MARCO_HERO+4}px)`:"none",transition:["max-width","width","padding","height","background","box-shadow","border-color","transform","backdrop-filter"].map(p=>`${p} ${CAMBIO}`).join(", "),display:"flex",alignItems:"center",justifyContent:"space-between",gap:16},"data-gufi-src":"components/Navbar.tsx:175"},marca2,__gh("nav",{style:{display:"flex",alignItems:"center",gap:4},className:"bq-menu-ancho","data-gufi-src":"components/Navbar.tsx:218"},MENU.map(m=>__gh("a",{key:m.path,href:url(m.path),style:{padding:"8px 13px",borderRadius:999,fontSize:13.5,textDecoration:"none",color:sobreVideo?"rgba(255,255,255,0.88)":activa===m.path?T.accent:T.body,background:!sobreVideo&&activa===m.path?T.accentSoft:"transparent",fontWeight:activa===m.path?600:500,whiteSpace:"nowrap",transition:"color 0.25s"},"data-gufi-src":"components/Navbar.tsx:220"},m.label))),__gh("div",{style:{display:"flex",alignItems:"center",gap:10},"data-gufi-src":"components/Navbar.tsx:240"},__gh("span",{className:"bq-menu-ancho",style:{display:"flex",alignItems:"center",gap:10},"data-gufi-src":"components/Navbar.tsx:241"},__gh(Idiomas,{sobreVideo}),__gh("a",{href:url(PROPIETARIOS.path),style:{height:40,padding:"0 16px",display:"inline-flex",alignItems:"center",borderRadius:999,fontSize:13.5,fontWeight:600,whiteSpace:"nowrap",textDecoration:"none",color:activa===PROPIETARIOS.path?T.accentInk:sobreVideo?"#fff":T.ink,background:activa===PROPIETARIOS.path?T.accent:"transparent",border:`1px solid ${activa===PROPIETARIOS.path?T.accent:sobreVideo?"rgba(255,255,255,0.4)":"rgba(22,21,15,0.16)"}`,transition:"color 0.25s, border-color 0.25s, background 0.25s"},"data-gufi-src":"components/Navbar.tsx:244"},PROPIETARIOS.label)),__gh("a",{href:url("/cuenta"),"aria-label":sesion?`${t("Mi cuenta","My account")} (${sesion.nombre})`:t("Mi cuenta","My account"),title:sesion?`${t("Mi cuenta","My account")} (${sesion.nombre})`:t("Mi cuenta","My account"),style:{width:40,height:40,borderRadius:"50%",border:`1px solid ${sobreVideo?"rgba(255,255,255,0.28)":T.line}`,background:sesion&&!sobreVideo?T.ink:sobreVideo?"rgba(255,255,255,0.12)":T.surface,color:sobreVideo||sesion?"#fff":T.ink,display:"flex",alignItems:"center",justifyContent:"center",fontSize:15,fontWeight:600,textDecoration:"none",flexShrink:0},"data-gufi-src":"components/Navbar.tsx:275"},sesion?sesion.nombre.charAt(0).toLocaleUpperCase("es-ES"):__gh(import_lucide_react.UserRound,{style:{width:18,height:18}})),__gh("button",{type:"button","aria-label":abierto?t("Cerrar men\xFA","Close menu"):t("Abrir men\xFA","Open menu"),onClick:()=>setAbierto(x=>!x),className:"bq-menu-boton",style:{width:40,height:40,borderRadius:10,border:`1px solid ${sobreVideo?"rgba(255,255,255,0.28)":T.line}`,background:sobreVideo?"rgba(255,255,255,0.12)":T.surface,backdropFilter:sobreVideo?"blur(10px)":"none",color:sobreVideo?"#fff":T.ink,cursor:"pointer",display:"none",alignItems:"center",justifyContent:"center"},"data-gufi-src":"components/Navbar.tsx:298"},abierto?__gh(import_lucide_react.X,{style:{width:18,height:18}}):__gh(import_lucide_react.Menu,{style:{width:18,height:18}})))),abierto&&__gh("nav",{className:"bq-menu-movil","aria-label":t("Men\xFA","Menu"),style:{position:"fixed",top:ALTO_MENU,left:0,right:0,bottom:0,background:claro?A.bg:T.bg,overflowY:"auto",padding:"12px 20px calc(28px + env(safe-area-inset-bottom))",display:"flex",flexDirection:"column"},"data-gufi-src":"components/Navbar.tsx:335"},__gh("div",{style:{display:"grid"},"data-gufi-src":"components/Navbar.tsx:351"},[...MENU,PROPIETARIOS].map((m,i)=>__gh("a",{key:m.path,href:url(m.path),className:"bq-menu-item",style:{animationDelay:`${.03*i}s`,display:"flex",alignItems:"center",gap:12,padding:"16px 0",fontSize:30,fontWeight:300,letterSpacing:"-0.03em",lineHeight:1.1,textDecoration:"none",color:T.ink,borderBottom:`1px solid ${T.lineSoft}`},"data-gufi-src":"components/Navbar.tsx:353"},__gh("span",{style:{width:8,height:8,borderRadius:"50%",flexShrink:0,background:activa===m.path?T.accent:"transparent"},"data-gufi-src":"components/Navbar.tsx:372"}),m.label))),__gh("div",{className:"bq-menu-item",style:{animationDelay:"0.24s",marginTop:"auto",paddingTop:28,display:"grid",gap:10},"data-gufi-src":"components/Navbar.tsx:386"},__gh("div",{style:{display:"flex",justifyContent:"center",paddingBottom:6},"data-gufi-src":"components/Navbar.tsx:387"},__gh(Idiomas,{sobreVideo:!1})),__gh("a",{href:url("/gestion"),className:"bq-boton",style:BOTON,"data-gufi-src":"components/Navbar.tsx:390"},t("Pon tu casa en gesti\xF3n","Let us manage your home")),__gh("a",{href:`tel:${TELEFONO.replace(/\s/g,"")}`,className:"bq-boton",style:BOTON_CONTORNO,"data-gufi-src":"components/Navbar.tsx:393"},t("Ll\xE1manos","Call us")," \xB7 ",TELEFONO))),__gh("style",{"data-gufi-src":"components/Navbar.tsx:401"},` @media (max-width: 860px) { .bq-menu-ancho { display: none !important; } .bq-menu-boton { display: flex !important; } } @media (min-width: 861px) { .bq-menu-movil { display: none !important; } } @keyframes bq-menu-entra { from { opacity: 0; transform: translateY(14px); } to { opacity: 1; transform: none; } } .bq-menu-movil { animation: bq-menu-fondo 0.2s ease both; } @keyframes bq-menu-fondo { from { opacity: 0; } to { opacity: 1; } } .bq-menu-item { animation: bq-menu-entra 0.45s cubic-bezier(0.16, 1, 0.3, 1) both; } @media (prefers-reduced-motion: reduce) { .bq-menu-movil, .bq-menu-item { animation: none; } } `))}function Idiomas({sobreVideo}){return __gh("div",{role:"group","aria-label":t("Idioma","Language"),style:{display:"flex",alignItems:"center"},"data-gufi-src":"components/Navbar.tsx:431"},["es","en"].map((l,i)=>{let activo=IDIOMA===l;return __gh(import_react2.default.Fragment,{key:l},i===1&&__gh("span",{"aria-hidden":"true",style:{color:sobreVideo?"rgba(255,255,255,0.4)":T.line,margin:"0 2px"},"data-gufi-src":"components/Navbar.tsx:437"},"\xB7"),__gh("button",{type:"button",lang:l,"aria-pressed":activo,"aria-label":l==="es"?"Espa\xF1ol":"English",onClick:()=>{activo||cambiarIdioma(l)},style:{background:"none",border:"none",padding:"8px 5px",cursor:activo?"default":"pointer",fontFamily:"inherit",fontSize:13,fontWeight:activo?700:500,letterSpacing:"0.02em",color:sobreVideo?activo?"#fff":"rgba(255,255,255,0.6)":activo?T.ink:T.muted},"data-gufi-src":"components/Navbar.tsx:441"},l.toUpperCase()))}))}var import_lucide_react2=require("lucide-react");function Footer({url,alojamientos,ciudades}){return __gh("footer",{style:{background:T.accent,color:"#fff",marginTop:8},"data-gufi-src":"components/Footer.tsx:33"},__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:"52px 20px 40px",display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(210px, 1fr))",gap:34},"data-gufi-src":"components/Footer.tsx:34"},__gh("div",{"data-gufi-src":"components/Footer.tsx:44"},__gh("img",{src:LOGO_BLANCO,alt:"Batuecas",sizes:"240px",style:{height:40,width:"auto",display:"block",filter:"brightness(0) invert(1)"},"data-gufi-src":"components/Footer.tsx:60"}),__gh("p",{style:{margin:"16px 0 0",fontSize:13.5,lineHeight:1.7,color:"rgba(255,255,255,0.65)",maxWidth:300},"data-gufi-src":"components/Footer.tsx:71"},t(`${alojamientos} alojamientos en ${ciudades} ciudades. Gesti\xF3n de alquiler, compraventa y reformas, con el mismo equipo desde el principio.`,`${alojamientos} homes in ${ciudades} cities. Rentals, sales and renovations, with the same team from day one.`))),__gh("div",{"data-gufi-src":"components/Footer.tsx:87"},__gh(Titulo,null,t("Hablamos","Get in touch")),__gh("div",{style:{display:"grid",gap:11},"data-gufi-src":"components/Footer.tsx:89"},__gh("a",{href:"mailto:administracion@batuecas.es",style:{...enlace,...conIcono},"data-gufi-src":"components/Footer.tsx:90"},__gh(import_lucide_react2.Mail,{style:icono}),"administracion@batuecas.es"),__gh("a",{href:"tel:+34692059474",style:{...enlace,...conIcono},"data-gufi-src":"components/Footer.tsx:94"},__gh(import_lucide_react2.Phone,{style:icono}),"+34 692 05 94 74"),__gh("span",{style:{...enlace,...conIcono,alignItems:"flex-start"},"data-gufi-src":"components/Footer.tsx:98"},__gh(import_lucide_react2.MapPin,{style:{...icono,marginTop:3}}),__gh("span",{"data-gufi-src":"components/Footer.tsx:100"},"Calle de las Aguas, 4 (local 3)",__gh("br",{"data-gufi-src":"components/Footer.tsx:102"}),"28005 Madrid")))),__gh("div",{"data-gufi-src":"components/Footer.tsx:109"},__gh(Titulo,null,t("Secciones","Sections")),__gh("div",{style:{display:"grid",gap:9},"data-gufi-src":"components/Footer.tsx:111"},__gh("a",{href:url("/"),style:enlace,"data-gufi-src":"components/Footer.tsx:112"},t("Portada","Home")),SECCIONES.map(m=>__gh("a",{key:m.path,href:url(m.path),style:enlace,"data-gufi-src":"components/Footer.tsx:116"},m.label)))),__gh("div",{"data-gufi-src":"components/Footer.tsx:123"},__gh(Titulo,null,"Legal"),__gh("div",{style:{display:"grid",gap:9},"data-gufi-src":"components/Footer.tsx:125"},MENU_LEGAL.map(m=>__gh("a",{key:m.path,href:url(m.path),style:enlace,"data-gufi-src":"components/Footer.tsx:127"},m.label))))),__gh("div",{style:{borderTop:"1px solid rgba(255,255,255,0.16)",padding:"16px 20px 42px",textAlign:"center",fontSize:12.5,color:"rgba(255,255,255,0.6)"},"data-gufi-src":"components/Footer.tsx:148"},"\xA9 ",new Date().getFullYear()," Batuecas Real State SL"))}function Titulo({children}){return __gh("div",{style:{fontSize:13,letterSpacing:"0.01em",color:T.dorado,fontWeight:600,marginBottom:14},"data-gufi-src":"components/Footer.tsx:165"},children)}var enlace={fontSize:13.5,lineHeight:1.5,color:"rgba(255,255,255,0.72)",textDecoration:"none"},conIcono={display:"inline-flex",alignItems:"center",gap:9},icono={width:14,height:14,flexShrink:0,opacity:.6};var import_react3=require("react");var CLAVE="bq-cookies",ABRIR="bq-cookies-abrir";function abrirAvisoCookies(){window.dispatchEvent(new Event(ABRIR))}function AvisoCookies({gufi,url}){let[visible,setVisible]=(0,import_react3.useState)(!1);if((0,import_react3.useEffect)(()=>{let guardado=localStorage.getItem(CLAVE);guardado===null?setVisible(!0):gufi.track.consent(guardado==="si",guardado==="si");let abrir=()=>setVisible(!0);return window.addEventListener(ABRIR,abrir),()=>window.removeEventListener(ABRIR,abrir)},[gufi]),!visible)return null;let decidir=si=>{localStorage.setItem(CLAVE,si?"si":"no"),gufi.track.consent(si,si),setVisible(!1)},boton2={flex:"1 1 0",minWidth:0,height:42,borderRadius:999,fontFamily:SANS,fontSize:14.5,fontWeight:500,cursor:"pointer",background:T.surface,color:T.ink,border:`1px solid ${T.line}`};return __gh("div",{role:"dialog","aria-live":"polite","aria-label":t("Aviso de cookies","Cookie notice"),className:"bq-cookies",style:{position:"fixed",left:20,bottom:"calc(20px + env(safe-area-inset-bottom))",zIndex:40,width:"min(400px, calc(100vw - 40px))",background:T.surface,border:`1px solid ${T.line}`,borderRadius:18,boxShadow:"0 2px 6px rgba(0,0,0,0.06), 0 18px 48px rgba(0,0,0,0.14)",padding:20,fontFamily:SANS},"data-gufi-src":"components/AvisoCookies.tsx:63"},__gh("p",{style:{margin:"0 0 16px",fontSize:14.5,lineHeight:1.55,color:T.body},"data-gufi-src":"components/AvisoCookies.tsx:82"},t("Usamos cookies de Google para saber qu\xE9 p\xE1ginas se visitan y de qu\xE9 anuncios llega la gente. S\xF3lo si aceptas. ","We use Google cookies to see which pages are visited and which ads bring people here. Only if you accept. "),__gh("a",{href:url("/cookies"),style:{color:T.ink,textDecoration:"underline",textUnderlineOffset:3},"data-gufi-src":"components/AvisoCookies.tsx:87"},t("M\xE1s informaci\xF3n","More information"))),__gh("div",{style:{display:"flex",gap:10},"data-gufi-src":"components/AvisoCookies.tsx:91"},__gh("button",{type:"button",onClick:()=>decidir(!1),style:boton2,"data-gufi-src":"components/AvisoCookies.tsx:92"},t("Rechazar","Reject")),__gh("button",{type:"button",onClick:()=>decidir(!0),style:boton2,"data-gufi-src":"components/AvisoCookies.tsx:99"},t("Aceptar","Accept"))),__gh("style",{"data-gufi-src":"components/AvisoCookies.tsx:107"},` @media (max-width: 640px) { .bq-cookies { left: 12px !important; width: calc(100vw - 24px) !important; bottom: calc(12px + env(safe-area-inset-bottom)) !important; } } `))}var import_react8=require("react"),import_lucide_react8=require("lucide-react");var F2=id=>`/api/files/serve?path=company_642%2F${id}`,OBRAS=[{clave:"AMANIEL-5",calle:"Amaniel 5",busca:"amaniel",fotos:[F2("ccd73e09-16ed-452f-9678-f55ad4e9fe71_2026_09_AMANIEL-5.jpg"),F2("7d54104d-f4c2-4309-9e87-fbd5faa5ef41_2026_09_AMANIEL-5-1.jpg"),F2("da70fe94-8c00-48ea-863d-8ff0a8dd07b2_2026_09_AMANIEL-5-2.jpg"),F2("bd980ac5-1561-463e-8530-8a17a005fcfc_2026_09_AMANIEL-5-3.jpg"),F2("d378cf68-cbd2-4c65-9dd5-483f9e5d7990_2026_09_AMANIEL-5-4.jpg")]},{clave:"CLARA-DEL-REY",calle:"Clara del Rey",busca:"clara del rey",fotos:[F2("713a4f7b-0899-428a-a71d-88a29fc86457_2026_09_CLARA-DEL-REY.jpg"),F2("77b0161d-1f63-479a-80c4-2c7ce6ee0ff9_2026_09_CLARA-DEL-REY-1.jpg"),F2("1a41a713-defc-4887-a61f-9279d1a43ce5_2026_09_ClaraRey26_06-scaled.jpg"),F2("68f58230-31d9-4dfc-b6cd-e21bde706856_2026_09_ClaraRey26_24-scaled.jpg"),F2("9ca3d07d-aae4-454f-92bd-fd14df1fea71_2026_09_ClaraRey26_25-2-scaled.jpg")]},{clave:"CORAZON-DE-MARIA",calle:"Coraz\xF3n de Mar\xEDa",busca:"corazon de maria",fotos:[F2("dd5ec8d8-6bd5-40b2-87ba-c606b239bb6e_2026_09_corazon-de-maria.png"),F2("339bb7f6-8b73-4f32-88e2-f2a6316749e2_2026_09_corazon-de-maria-2.png"),F2("e7f61a15-972c-49f0-abad-3870e4ec0041_2026_09_corazo-de-maria.jpg"),F2("36b0fa7a-8c2e-4b0c-bf72-3f02b458e570_2026_09_corazo-de-maria-1.jpg"),F2("9b43ea20-236d-4868-9c45-ab1e3d93c877_2026_09_corazo-de-maria.png")]},{clave:"DOCTOR-GOMEZ",calle:"Doctor G\xF3mez",busca:"doctor gomez",fotos:[F2("140f4576-604c-41d3-b844-3c116201e781_2026_09_DOCTOR-GOMEZ.jpg"),F2("fc1d8ada-c8ee-40b4-b2c3-f35c9972ea3a_2026_09_DOCTOR-GOMEZ-1.jpg"),F2("6632468d-0e1b-4a4e-adbb-054c08bb6d6d_2026_09_DOCTOR-GOMEZ.png"),F2("04ba1d51-d236-4de5-95e6-ed788a2617d1_2026_09_DOCTOR-GOMEZ-2.png"),F2("66a51d64-6091-465d-82ba-0aeffa45de6a_2026_09_DOCTOR-GOMEZ-3.png")]},{clave:"DUQUE-DE-ALBA",calle:"Duque de Alba",busca:"duque de alba",fotos:[F2("fb5c1551-cc54-4997-b164-36976eac640f_2026_09_DUQUE-DE-ALBA.png"),F2("49063c2f-7166-4ea2-a4f9-e7ea8e24b9d7_2026_09_DUQUE-DE-ALBA-1.png"),F2("7e33fe12-8d35-48f6-b1fe-8ccf04b4217c_2026_09_DUQUE-DE-ALBA-2-1.png"),F2("f4546624-ed25-43f6-bb8b-08b977bea592_2026_09_Duque-de-alba.jpg"),F2("c04d2b66-c91d-4e1e-95ce-022bba7fa1cb_2026_09_Duque-de-alba-1.jpg"),F2("d955326c-922b-407b-be9d-049781a3d48c_2026_09_Duque-de-alba-2.png"),F2("975100b6-e876-42dc-b266-fc0e54700553_2026_09_Duque-de-alba-3.png")]},{clave:"JESUS-DEL-VALLE",calle:"Jes\xFAs del Valle",busca:"jesus del valle",fotos:[F2("8ac2e319-3f8b-4f2e-ab0d-6bb3f347aae6_2026_09_jesus-del-valle.png"),F2("b71a4ad4-5996-49d8-adc7-b597bc8444f1_2026_09_jesus-del-valle-2.png"),F2("2ff0691b-8e2d-4c27-9fe3-3aa941b35cfc_2026_09_jesus-del-valle-3.png")]},{clave:"LIRA",calle:"Lira",busca:"lira",fotos:[F2("3590ddb4-f3d1-4dd3-a095-8a8af0cb7a59_2026_09_LIRA.png"),F2("c8e6419c-c4b9-42b5-b869-36d22bde2479_2026_09_LIRA-2.png"),F2("584ec7bb-4a6f-4afe-a291-ddeb025644cd_2026_09_LIRA-3.png")]},{clave:"MANUELA-MALASANA",calle:"Manuela Malasa\xF1a",busca:"manuela malasana",fotos:[F2("c8b86fa3-5722-49f0-8f12-88d986546582_2026_09_Manuel-Malasana.png"),F2("7fd906b8-c4d6-4f6e-8c4f-2e1c89ebd6af_2026_09_Manuel-Malasana-2.png"),F2("7b5897fd-cdbc-4256-939e-399ea94b29ef_2026_09_Manuel-Malasana-3.png")]},{clave:"MARQUES-DE-VALDAVIA",calle:"Marqu\xE9s de Valdavia",busca:"marques de valdavia",fotos:[F2("d09dd220-a79d-43b6-9c42-3464690167c7_2026_09_MARQUES-DE-VALDAVIA.jpg"),F2("155e58ae-82a4-4f82-9d43-3138d79241b3_2026_09_MARQUES-DE-VALDAVIA-1.jpg"),F2("f517b2c7-6e7e-43be-a1ab-422cd02dd7c1_2026_09_MARQUES-DE-VALDAVIA.png"),F2("472ce539-f7f7-4041-a192-6e66141c47f4_2026_09_MARQUES-DE-VALDAVIA-2.png"),F2("d5e53e9a-1dd1-4663-84c3-c95e376937db_2026_09_MARQUES-DE-VALDAVIA-3.png")]},{clave:"MELENDEZ",calle:"Mel\xE9ndez",busca:"melendez",fotos:[F2("d1c05454-7b49-43d9-aae2-f2163a0e64d0_2026_09_MELENDEZ.jpg"),F2("7de6a249-e30c-4657-8e0b-e2ba4de20aef_2026_09_MELENDEZ-1.jpg"),F2("9a1a3d50-8a87-4afc-8628-a60dec2b3534_2026_09_MELENDEZ.png"),F2("eec74d12-ca8d-40b2-a2d4-cc8d204b948c_2026_09_MELENDEZ-2.png"),F2("69ba5be0-30b0-491c-bc66-05012f33ccef_2026_09_MELENDEZ-3.png")]},{clave:"PADRE-CLARET",calle:"Padre Claret",busca:"padre claret",fotos:[F2("3cec9418-2fda-453a-b6cf-4f015b78cc2f_2026_09_PADRE-CLARET.jpg"),F2("32b81876-ac2c-4f88-8845-21b58c0f7fe5_2026_09_PADRE-CLARET-1.jpg"),F2("b665ba6c-2daf-4872-bacb-068a9f2ac864_2026_09_PADRE-CLARET.png"),F2("a37be70a-41d0-45b5-b524-470d6124301e_2026_09_PADRE-CLARET-2.png"),F2("d287ab77-6719-47aa-bcfd-94e871c9fd25_2026_09_PADRE-CLARET-3.png")]},{clave:"PEZ-VOLADOR",calle:"Pez Volador",busca:"pez volador",fotos:[F2("d8b03465-d4a0-478f-870d-d2a41fd2edc6_2026_09_pez-volador.jpg"),F2("0630029d-349a-44b9-86ba-983a82429498_2026_09_pez-volador-1.jpg"),F2("dd7f27ea-ab51-46eb-ba0a-d120a0da4c0b_2026_09_pez-volador.png"),F2("45db07b5-61fb-4afa-a65c-7c229fb4db90_2026_09_pez-volador-2.png"),F2("2d30995c-b8d1-432d-b715-54d3e12ffeae_2026_09_pez-volador-3.png")]},{clave:"PUNONROSTRO",calle:"Pu\xF1onrostro",busca:"punonrostro",fotos:[F2("3f76af87-a291-48fc-8178-49da2ba8d5bf_2026_09_PUNONROSTRO.jpg"),F2("65971a4d-4f02-4020-a829-36a76dcb3fc9_2026_09_PUNONROSTRO-1.jpg"),F2("6afae82f-f16b-4c15-9fa3-7e6d578b1c93_2026_09_PUNONROSTRO.png"),F2("71af2393-f081-4bc3-97ee-476206a0ab90_2026_09_PUNONROSTRO-2.png"),F2("321d88be-cb11-42cf-a056-c22c6daeffda_2026_09_PUNONROSTRO-3.png")]},{clave:"SAN-AGUSTIN-7",calle:"San Agust\xEDn 7",busca:"san agustin",fotos:[F2("a50da7ba-e5e5-4456-acc9-395712d47f5b_2026_09_San-agustin-7.jpg"),F2("a2f5421d-f916-40e1-825a-39c563f58cf1_2026_09_San-agustin-7-1.jpg"),F2("e868a641-ad3e-4640-abc1-11c70a67971a_2026_09_San-agustin-7.png"),F2("a68c1c16-3dea-4371-b4e6-a1d46fe49ddd_2026_09_San-agustin-7-2.png"),F2("c2c01a95-748d-4b11-afe5-f02144cfbdec_2026_09_San-agustin-7-3.png")]},{clave:"VALENTIN-MASIP",calle:"Valent\xEDn Masip",busca:"valentin masip",fotos:[F2("5908645d-c278-407c-9494-e02562de2e20_2026_09_VALENTIN-MASIP.jpg"),F2("424d520b-429b-482e-aaa2-8669342cd2d2_2026_09_VALENTIN-MASIP-1.jpg"),F2("2b4753e1-04ad-4982-932d-1b915ed36c9d_2026_09_VALENTIN-MASIP.png"),F2("fcd6c0f0-3269-4abe-8463-78505035976c_2026_09_VALENTIN-MASIP-2.png"),F2("be4f5988-fd33-4341-957d-ae93815fe727_2026_09_VALENTIN-MASIP-3.png")]},{clave:"VICTOR",calle:"V\xEDctor",busca:"victor",fotos:[F2("091ff3eb-c419-409d-8ca7-cf7f846efccc_2026_09_VICTOR.png"),F2("fc88bef7-8ff8-4b07-8b43-90e7cfb551ae_2026_09_VICTOR-2.png"),F2("eb94ce0f-cca5-41b8-be04-a13aa4be48fb_2026_09_VICTOR-3.png")]}];function fotoObra(clave,n){let o=OBRAS.find(x=>x.clave===clave);if(o===void 0||o.fotos[n]===void 0)throw new Error(`Foto de obra desconocida: ${clave} ${n}`);return o.fotos[n]}var import_lucide_react4=require("lucide-react");var import_lucide_react3=require("lucide-react");function Foto({piso,alto,redondeo,lazy,tamano}){let src=fotoDe(piso,tamano);return src?__gh("img",{...tamano==="md"?fotoLigera(src):{src},alt:piso.titulo,sizes:tamano==="md"?"(max-width: 560px) 100vw, 380px":void 0,loading:lazy?"lazy":"eager",decoding:"async",style:{display:"block",width:"100%",height:alto,objectFit:"cover",borderRadius:redondeo,background:"linear-gradient(135deg, #efece4 0%, #e4ddce 100%)"},"data-gufi-src":"components/Foto.tsx:48"}):__gh("div",{style:{width:"100%",height:alto,borderRadius:redondeo,background:`linear-gradient(140deg, #dfe8e3 0%, ${T.surfaceAlt} 50%, #ded7c7 100%)`,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:10,color:T.muted},"data-gufi-src":"components/Foto.tsx:69"},__gh(import_lucide_react3.Home,{style:{width:28,height:28,color:T.accent,opacity:.45}}),__gh("span",{style:{fontFamily:SANS,fontSize:15,letterSpacing:"0.12em",textTransform:"uppercase",color:T.accent,opacity:.85},"data-gufi-src":"components/Foto.tsx:84"},piso.ciudad??"Batuecas"))}function Tarjeta({piso,href,lazy}){let hostal=esHostal(piso),datos=ficha(piso),eur2=esAlquiler(piso)?precioMes(piso):esVenta(piso)?precioVenta(piso):precio(piso);return __gh("a",{href,className:"bq-card",style:{display:"block",textDecoration:"none",color:"inherit",background:T.surface,border:`1px solid ${T.line}`,borderRadius:18,overflow:"hidden"},"data-gufi-src":"components/Tarjeta.tsx:38"},__gh("div",{className:"bq-media",style:{position:"relative"},"data-gufi-src":"components/Tarjeta.tsx:51"},__gh(Foto,{piso,alto:210,redondeo:0,lazy,tamano:"md"}),hostal&&__gh("span",{style:{position:"absolute",top:12,left:12,padding:"5px 11px",borderRadius:999,background:"rgba(255,255,255,0.94)",color:T.accent,fontSize:10,fontWeight:700,letterSpacing:"0.13em",textTransform:"uppercase"},"data-gufi-src":"components/Tarjeta.tsx:54"},t("Hostal","Hostel"))),__gh("div",{style:{padding:"16px 18px 18px"},"data-gufi-src":"components/Tarjeta.tsx:74"},__gh("h3",{style:{margin:0,fontFamily:SANS,fontSize:18,lineHeight:1.28,fontWeight:400,color:T.ink,display:"-webkit-box",WebkitLineClamp:2,WebkitBoxOrient:"vertical",overflow:"hidden",minHeight:46},"data-gufi-src":"components/Tarjeta.tsx:75"},titulo(piso)),__gh("div",{style:{marginTop:8,display:"flex",alignItems:"center",gap:5,fontSize:13,color:T.muted},"data-gufi-src":"components/Tarjeta.tsx:93"},__gh(import_lucide_react4.MapPin,{style:{width:13,height:13,flexShrink:0}}),donde(piso)),__gh("div",{style:{marginTop:14,paddingTop:13,borderTop:`1px solid ${T.lineSoft}`},"data-gufi-src":"components/Tarjeta.tsx:115"},__gh("div",{style:{fontSize:12.5,lineHeight:1.5,color:T.body},"data-gufi-src":"components/Tarjeta.tsx:122"},datos.length>0?datos.join(" \xB7 "):t("Pide los detalles","Ask for details")),__gh("div",{className:"bq-flecha",style:{marginTop:10,display:"flex",alignItems:"center",justifyContent:"space-between",gap:10},"data-gufi-src":"components/Tarjeta.tsx:125"},__gh("span",{style:{fontSize:13,fontWeight:600,color:T.accent},"data-gufi-src":"components/Tarjeta.tsx:135"},esAlquiler(piso)||esVenta(piso)?t("Solicitar visita","Book a viewing"):eur2===null?t("Ver disponibilidad","Check availability"):t("Ver alojamiento","View property")),eur2===null?__gh(import_lucide_react4.ArrowRight,{style:{width:14,height:14,flexShrink:0,color:T.accent}}):__gh("span",{style:{fontSize:13.5,fontWeight:700,color:T.ink,whiteSpace:"nowrap"},"data-gufi-src":"components/Tarjeta.tsx:146"},eur2)))))}var import_react5=require("react"),import_lucide_react6=require("lucide-react");var import_react4=require("react"),import_lucide_react5=require("lucide-react");var VACIO={nombre:"",email:"",telefono:"",direccion_interes:"",mensaje:""},MAS_DE_20=21,TARJETA_FORM={background:T.surface,border:"1px solid rgba(22,21,15,0.07)",borderRadius:28,padding:"clamp(24px, 3.4vw, 40px)",boxShadow:"0 1px 3px rgba(22,21,15,0.04), 0 30px 70px -40px rgba(22,21,15,0.3)"},tramoDe=n=>n===1?"1":n<=5?"2 a 5":n<=20?"6 a 20":"M\xE1s de 20";function Solicitud({gufi,tipo,origen,modo,titulo:titulo3,nota:nota2,boton:boton2,piso}){let[v,setV]=(0,import_react4.useState)(VACIO),[trampa,setTrampa]=(0,import_react4.useState)(""),[error,setError]=(0,import_react4.useState)(""),[enviando,setEnviando]=(0,import_react4.useState)(!1),[enviada,setEnviada]=(0,import_react4.useState)(!1),preguntaCuantas=modo==="propiedad"&&(tipo==="turistico"||tipo==="tradicional")&&piso===void 0,[casas,setCasas]=(0,import_react4.useState)(1),varias=preguntaCuantas&&casas>1,set=campo2=>e=>{setV(prev=>({...prev,[campo2]:e.target.value}))},enviar=async e=>{if(e.preventDefault(),enviando)return;if(trampa.trim()!==""){setError(t("No hemos podido enviarlo. Vuelve a intentarlo.","We could not send it. Please try again."));return}if(v.nombre.trim().length<2){setError(t("Escribe tu nombre.","Please enter your name."));return}if(!emailValido(v.email)){setError(t("Ese correo no parece un correo. Rev\xEDsalo y te contestamos ah\xED.","That does not look like an email address. Check it and we will reply there."));return}if(!telefonoValido(v.telefono)){setError(t("Ese tel\xE9fono no cuadra. D\xE9jalo en blanco si prefieres que te escribamos.","That phone number does not look right. Leave it blank if you would rather we email you."));return}let variables={tipo,estado:"nueva",origen,nombre:v.nombre.trim(),email:v.email.trim().toLowerCase()};v.telefono.trim()!==""&&(variables.telefono=v.telefono.trim());let mensaje=[varias?casas>=MAS_DE_20?"Tiene m\xE1s de 20 casas.":`Tiene ${casas} casas.`:"",v.mensaje.trim()].filter(x=>x!=="").join(" ");mensaje!==""&&(variables.mensaje=mensaje),piso!==void 0&&(variables.piso=piso),preguntaCuantas&&(variables.propiedades=tramoDe(casas)),v.direccion_interes.trim()!==""&&(variables.direccion_interes=v.direccion_interes.trim()),setEnviando(!0),setError("");try{await gufi.dataProvider.create({resource:"web__solicitudes",variables}),setEnviada(!0),setV(VACIO)}catch(err){setError(`${t("No ha salido.","It did not go through.")} ${err instanceof Error?err.message:t("Int\xE9ntalo otra vez en un momento.","Please try again in a moment.")}`)}finally{setEnviando(!1)}};return enviada?__gh("div",{style:{...TARJETA_FORM,textAlign:"center",paddingTop:"clamp(40px, 5vw, 64px)",paddingBottom:"clamp(40px, 5vw, 64px)"},"data-gufi-src":"components/Solicitud.tsx:198"},__gh("div",{style:{width:52,height:52,borderRadius:"50%",background:T.accent,color:T.accentInk,display:"inline-flex",alignItems:"center",justifyContent:"center",marginBottom:18},"data-gufi-src":"components/Solicitud.tsx:199"},__gh(import_lucide_react5.Check,{style:{width:24,height:24},strokeWidth:2.5})),__gh("h3",{style:{margin:0,fontFamily:SANS,fontSize:"clamp(24px, 2.6vw, 30px)",fontWeight:500,letterSpacing:"-0.02em",color:T.ink},"data-gufi-src":"components/Solicitud.tsx:214"},t("Recibido","Received")),__gh("p",{style:{margin:"10px auto 0",maxWidth:380,fontSize:15,lineHeight:1.6,color:T.body},"data-gufi-src":"components/Solicitud.tsx:217"},t("Te escribimos al correo que nos has dejado. Si corre prisa, d\xEDnoslo en la respuesta.","We will write to the email you gave us. If it is urgent, tell us in your reply."))):__gh("form",{onSubmit:enviar,noValidate:!0,style:TARJETA_FORM,"data-gufi-src":"components/Solicitud.tsx:228"},__gh("h3",{style:{margin:0,fontFamily:SANS,fontSize:"clamp(24px, 2.6vw, 30px)",lineHeight:1.15,fontWeight:500,letterSpacing:"-0.02em",color:T.ink},"data-gufi-src":"components/Solicitud.tsx:229"},titulo3),__gh("p",{style:{margin:"10px 0 30px",fontSize:15,lineHeight:1.6,color:T.body},"data-gufi-src":"components/Solicitud.tsx:232"},nota2),__gh("div",{style:{position:"absolute",left:-9999,top:"auto",width:1,height:1,overflow:"hidden"},"data-gufi-src":"components/Solicitud.tsx:235"},__gh("label",{htmlFor:`bq-${tipo}`,"data-gufi-src":"components/Solicitud.tsx:236"},t("No rellenar","Do not fill in")),__gh("input",{id:`bq-${tipo}`,name:"bq_ref",type:"text",tabIndex:-1,autoComplete:"off",value:trampa,onChange:e=>setTrampa(e.target.value),"data-gufi-src":"components/Solicitud.tsx:237"})),__gh("div",{style:{display:"grid",gap:18},"data-gufi-src":"components/Solicitud.tsx:248"},__gh(Campo,{etiqueta:t("Nombre","Name"),requerido:!0},__gh("input",{...base,value:v.nombre,onChange:set("nombre"),autoComplete:"name","data-gufi-src":"components/Solicitud.tsx:250"})),__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(190px, 1fr))",gap:18},"data-gufi-src":"components/Solicitud.tsx:252"},__gh(Campo,{etiqueta:t("Correo","Email"),requerido:!0},__gh("input",{...base,type:"email",value:v.email,onChange:set("email"),autoComplete:"email","data-gufi-src":"components/Solicitud.tsx:254"})),__gh(Campo,{etiqueta:t("Tel\xE9fono","Phone")},__gh("input",{...base,type:"tel",value:v.telefono,onChange:set("telefono"),autoComplete:"tel","data-gufi-src":"components/Solicitud.tsx:257"}))),preguntaCuantas&&__gh("div",{style:{padding:"18px 20px 14px",borderRadius:18,background:T.bg},"data-gufi-src":"components/Solicitud.tsx:262"},__gh("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:12},"data-gufi-src":"components/Solicitud.tsx:263"},__gh("span",{style:ETIQUETA,"data-gufi-src":"components/Solicitud.tsx:264"},t("\xBFCu\xE1ntas casas tienes?","How many properties do you have?")),__gh("span",{"aria-live":"polite",style:{fontSize:26,fontWeight:500,letterSpacing:"-0.03em",color:T.ink,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/Solicitud.tsx:265"},casas>=MAS_DE_20?t("M\xE1s de 20","More than 20"):casas===1?t("1 casa","1 property"):t(`${casas} casas`,`${casas} properties`))),__gh("input",{type:"range",min:1,max:MAS_DE_20,step:1,value:casas,onChange:e=>setCasas(Number(e.target.value)),"aria-label":t("Cu\xE1ntas casas tienes","How many properties you have"),"aria-valuetext":casas>=MAS_DE_20?t("M\xE1s de 20","More than 20"):String(casas),className:"bq-rango",style:{"--p":`${(casas-1)/(MAS_DE_20-1)*100}%`},"data-gufi-src":"components/Solicitud.tsx:273"}),__gh("div",{style:{display:"flex",justifyContent:"space-between",marginTop:2,fontSize:12.5,color:T.muted},"data-gufi-src":"components/Solicitud.tsx:285"},__gh("span",{"data-gufi-src":"components/Solicitud.tsx:286"},"1"),__gh("span",{"data-gufi-src":"components/Solicitud.tsx:287"},t("M\xE1s de 20","More than 20")))),piso===void 0?varias?__gh(Campo,{etiqueta:t("Zona","Area")},__gh("input",{...base,value:v.direccion_interes,onChange:set("direccion_interes"),"data-gufi-src":"components/Solicitud.tsx:295"})):__gh(Campo,{etiqueta:modo==="busqueda"?t("Zona que buscas","Area you are looking in"):t("Direcci\xF3n de la propiedad","Property address")},__gh("input",{...base,value:v.direccion_interes,onChange:set("direccion_interes"),"data-gufi-src":"components/Solicitud.tsx:299"})):null,__gh(Campo,{etiqueta:modo==="busqueda"?t("Qu\xE9 necesitas","What you need"):t("Cu\xE9ntanos","Tell us more")},__gh("textarea",{...base,rows:3,value:v.mensaje,onChange:set("mensaje"),style:{...base.style,height:"auto",padding:"14px 16px",resize:"vertical",minHeight:104,lineHeight:1.5},"data-gufi-src":"components/Solicitud.tsx:305"}))),error!==""&&__gh("p",{style:{margin:"18px 0 0",padding:"12px 14px",borderRadius:12,background:"#fdf1ee",border:"1px solid #f0cfc5",color:"#9c3c22",fontSize:13,lineHeight:1.5},"data-gufi-src":"components/Solicitud.tsx:316"},error),__gh("button",{type:"submit",disabled:enviando,className:"bq-enviar",style:{...BOTON,marginTop:26,width:"100%",minHeight:56,background:enviando?T.muted:T.accent},"data-gufi-src":"components/Solicitud.tsx:332"},enviando?t("Enviando","Sending"):boton2,!enviando&&__gh(import_lucide_react5.ArrowRight,{style:{width:18,height:18},strokeWidth:2})),__gh("p",{style:{margin:"14px 0 0",textAlign:"center",fontSize:13,color:T.muted},"data-gufi-src":"components/Solicitud.tsx:336"},t("Sin compromiso. Te contesta una persona del equipo.","No obligation. A person from our team will reply.")),__gh("style",{"data-gufi-src":"components/Solicitud.tsx:340"},` .bq-campo { transition: border-color 0.18s ease, box-shadow 0.18s ease; } .bq-campo:hover { border-color: #cdc8bc !important; } .bq-campo:focus, .bq-campo:focus-visible { outline: none; border-color: ${T.accent} !important; box-shadow: 0 0 0 4px rgba(98, 18, 23, 0.1); } .bq-rango { -webkit-appearance: none; appearance: none; display: block; width: 100%; height: 30px; margin: 10px 0 0; background: transparent; cursor: pointer; } .bq-rango::-webkit-slider-runnable-track { height: 6px; border-radius: 999px; background: linear-gradient(90deg, ${T.accent} var(--p), ${T.line} var(--p)); } .bq-rango::-webkit-slider-thumb { -webkit-appearance: none; appearance: none; width: 28px; height: 28px; margin-top: -11px; border-radius: 50%; background: #fff; border: 1px solid rgba(22,21,15,0.08); box-shadow: 0 2px 8px rgba(22,21,15,0.2); transition: transform 0.15s ease; } .bq-rango::-moz-range-track { height: 6px; border-radius: 999px; background: ${T.line}; } .bq-rango::-moz-range-progress { height: 6px; border-radius: 999px; background: ${T.accent}; } .bq-rango::-moz-range-thumb { width: 28px; height: 28px; border-radius: 50%; background: #fff; border: 1px solid rgba(22,21,15,0.08); box-shadow: 0 2px 8px rgba(22,21,15,0.2); } .bq-rango:active::-webkit-slider-thumb { transform: scale(1.1); } .bq-enviar { transition: background 0.18s ease, transform 0.12s ease; } .bq-enviar:hover:not(:disabled) { background: #4d0e12 !important; } .bq-enviar:active:not(:disabled) { transform: scale(0.99); } .bq-enviar svg { transition: transform 0.2s ease; } .bq-enviar:hover svg { transform: translateX(3px); } @media (prefers-reduced-motion: reduce) { .bq-campo, .bq-enviar, .bq-enviar svg, .bq-rango::-webkit-slider-thumb { transition: none; } } `))}var base={className:"bq-campo",style:{width:"100%",height:52,padding:"0 16px",borderRadius:14,border:`1px solid ${T.line}`,background:T.surface,color:T.ink,fontSize:16,fontFamily:"inherit",boxSizing:"border-box"}},ETIQUETA={fontSize:14,fontWeight:500,color:T.ink};function Campo({etiqueta:etiqueta4,requerido,children}){return __gh("label",{style:{display:"block"},"data-gufi-src":"components/Solicitud.tsx:432"},__gh("span",{style:{...ETIQUETA,display:"block",marginBottom:8},"data-gufi-src":"components/Solicitud.tsx:433"},etiqueta4,!requerido&&__gh("span",{style:{color:T.muted,fontWeight:400},"data-gufi-src":"components/Solicitud.tsx:436"}," \xB7 ",t("opcional","optional"))),children)}function fotoObra2(clave){let o=OBRAS.find(x=>x.clave===clave);if(o===void 0)throw new Error(`Obra desconocida en el contacto: ${clave}`);return o.fotos[0]}var OPCIONES=[{clave:"turistico",foto:fotoObra2("JESUS-DEL-VALLE"),alt:t("Sal\xF3n terminado en la reforma de Jes\xFAs del Valle","Living room finished in the Jes\xFAs del Valle renovation"),icono:import_lucide_react6.KeyRound,titulo:t("Alquiler tur\xEDstico","Holiday rental"),gancho:t("Cedo mi casa para que la gestion\xE9is","I want you to manage my home"),tipo:"turistico",formulario:{titulo:t("Cu\xE9ntanos de tu casa","Tell us about your home"),nota:t("Con cuatro datos te decimos qu\xE9 puede dar y qu\xE9 har\xEDamos con ella.","With a few details we will tell you what it could earn and what we would do with it."),boton:t("Quiero que la gestion\xE9is","I want you to manage it")}},{clave:"tradicional",foto:fotoObra2("MELENDEZ"),alt:t("Dormitorio terminado en la reforma de Mel\xE9ndez","Bedroom finished in the Mel\xE9ndez renovation"),icono:import_lucide_react6.CalendarRange,titulo:t("Alquiler tradicional","Long-term rental"),gancho:t("Por a\xF1os, no por noches","For years, not nights"),tipo:"tradicional",formulario:{titulo:t("Cu\xE9ntanos de tu piso","Tell us about your flat"),nota:t("Buscamos inquilino, miramos que pueda pagarlo y nos ocupamos del contrato y de lo que venga despu\xE9s.","We find a tenant, check they can afford it and take care of the contract and everything after."),boton:t("Quiero alquilarlo","I want to let it")}},{clave:"reformas",foto:fotoObra2("PEZ-VOLADOR"),alt:t("Ba\xF1o terminado en la reforma de Pez Volador","Bathroom finished in the Pez Volador renovation"),icono:import_lucide_react6.Hammer,titulo:t("Reforma","Renovation"),gancho:t("Presupuesto cerrado tras la visita","A fixed quote after we visit"),tipo:"reformas",formulario:{titulo:t("Cu\xE9ntanos qu\xE9 quieres hacer","Tell us what you want to do"),nota:t("Vamos a verla y te damos precio cerrado. Sin sorpresas a mitad de obra.","We come to see it and give you a fixed price. No surprises halfway through."),boton:t("Quiero presupuesto","Get a quote")}},{clave:"vender",foto:fotoObra2("DUQUE-DE-ALBA"),alt:t("Comedor terminado en la reforma de Duque de Alba","Dining room finished in the Duque de Alba renovation"),icono:import_lucide_react6.Building2,titulo:t("Venta","Sale"),gancho:t("Quiero saber cu\xE1nto vale","I want to know what it is worth"),tipo:"venta",formulario:{titulo:t("Valoraci\xF3n de tu casa","Valuation of your home"),nota:t("Dinos d\xF3nde est\xE1 y te damos un rango de precio. Sin compromiso y sin llamarte doce veces.","Tell us where it is and we will give you a price range. No obligation and no endless calls."),boton:t("Quiero la valoraci\xF3n","Get my valuation")}}];function deHash(){if(typeof window>"u")return null;let h=window.location.hash.replace("#contactanos-","");return OPCIONES.some(o=>o.clave===h)?h:null}function nosLlaman(){return typeof window>"u"?!1:window.location.hash.startsWith("#contactanos")}function Contactanos({gufi,origen,inicial="turistico"}){let[elegida,setElegida]=(0,import_react5.useState)(()=>deHash()??inicial),bajar=()=>{if(typeof document>"u")return;let ir=suave=>{let el=document.getElementById("contactanos");el&&el.scrollIntoView({behavior:suave?"smooth":"auto",block:"start"})};ir(!0);for(let ms2 of[300,900,1800])window.setTimeout(()=>ir(!1),ms2)};(0,import_react5.useEffect)(()=>{if(typeof window>"u")return;let alCambiar=()=>{if(!nosLlaman())return;let e=deHash();e&&setElegida(e),bajar()};return window.addEventListener("hashchange",alCambiar),nosLlaman()&&bajar(),()=>window.removeEventListener("hashchange",alCambiar)},[]);let opcion=OPCIONES.find(o=>o.clave===elegida);return __gh("section",{id:"contactanos",style:{background:T.bg,scrollMarginTop:80},"data-gufi-src":"components/Contactanos.tsx:195"},__gh("div",{className:"bq-ct",style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px`,display:"grid",gridTemplateColumns:"minmax(0, 0.92fr) minmax(0, 1.08fr)",gap:"clamp(40px, 6vw, 88px)",alignItems:"start"},"data-gufi-src":"components/Contactanos.tsx:196"},__gh("div",{className:"bq-ct-izq",style:{position:"sticky",top:104},"data-gufi-src":"components/Contactanos.tsx:208"},__gh("span",{style:ANTETITULO,"data-gufi-src":"components/Contactanos.tsx:209"},t("Aqu\xED se decide","Your next step")),__gh("h2",{style:{...TITULO,marginTop:16},"data-gufi-src":"components/Contactanos.tsx:210"},t("\xBFHablamos de tu casa?","Shall we talk about your home?")," ",__gh("span",{style:APAGADO,"data-gufi-src":"components/Contactanos.tsx:212"},t("Te contesta una persona.","A person will reply."))),__gh("div",{role:"radiogroup","aria-label":t("Qu\xE9 quieres hacer con tu casa","What you want to do with your home"),className:"bq-ct-ops",style:{marginTop:"clamp(28px, 3.4vw, 40px)",display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:12},"data-gufi-src":"components/Contactanos.tsx:215"},OPCIONES.map(o=>{let activa=o.clave===elegida,Icono=o.icono;return __gh("button",{key:o.clave,type:"button",role:"radio","aria-checked":activa,onClick:()=>setElegida(o.clave),className:"bq-ct-op",style:{position:"relative",display:"block",minHeight:190,padding:0,border:"none",borderRadius:20,overflow:"hidden",background:T.surfaceAlt,textAlign:"left",fontFamily:"inherit",cursor:"pointer",boxShadow:activa?`0 0 0 3px ${T.accent}, 0 18px 36px -18px rgba(19,18,9,0.45)`:"0 2px 6px rgba(19,18,9,0.08)"},"data-gufi-src":"components/Contactanos.tsx:225"},__gh("img",{src:o.foto,alt:o.alt,loading:"lazy",sizes:"(max-width: 900px) 50vw, 280px",style:{position:"absolute",inset:0,width:"100%",height:"100%",objectFit:"cover"},"data-gufi-src":"components/Contactanos.tsx:247"}),__gh("span",{className:"bq-ct-velo",style:{position:"absolute",inset:0,background:activa?"linear-gradient(180deg, rgba(14,13,8,0.12) 0%, rgba(14,13,8,0.82) 100%)":"linear-gradient(180deg, rgba(14,13,8,0.28) 0%, rgba(14,13,8,0.86) 100%)"},"data-gufi-src":"components/Contactanos.tsx:248"}),__gh("span",{className:"bq-ct-cuerpo",style:{position:"relative",display:"flex",flexDirection:"column",justifyContent:"flex-end",minHeight:190,padding:"16px 16px 18px",boxSizing:"border-box",color:"#fff"},"data-gufi-src":"components/Contactanos.tsx:258"},__gh(Icono,{style:{width:20,height:20,marginBottom:10,opacity:.92},strokeWidth:1.7}),__gh("span",{style:{fontSize:17,fontWeight:600,letterSpacing:"-0.01em",lineHeight:1.2},"data-gufi-src":"components/Contactanos.tsx:263"},o.titulo),__gh("span",{className:"bq-ct-gancho",style:{marginTop:4,fontSize:13.5,lineHeight:1.4,color:"rgba(255,255,255,0.82)"},"data-gufi-src":"components/Contactanos.tsx:264"},o.gancho)),activa&&__gh("span",{"aria-hidden":"true",style:{position:"absolute",top:12,right:12,width:26,height:26,borderRadius:"50%",background:T.accent,color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 0 0 2px #fff"},"data-gufi-src":"components/Contactanos.tsx:267"},__gh(import_lucide_react6.Check,{style:{width:14,height:14},strokeWidth:3})))})),__gh("div",{style:{marginTop:26,display:"flex",flexWrap:"wrap",gap:"12px 26px",fontSize:15},"data-gufi-src":"components/Contactanos.tsx:292"},__gh("a",{href:`tel:${TELEFONO.replace(/\s/g,"")}`,className:"bq-ct-tel",style:{display:"inline-flex",alignItems:"center",gap:9,color:T.ink,textDecoration:"none",fontWeight:500},"data-gufi-src":"components/Contactanos.tsx:293"},__gh(import_lucide_react6.Phone,{style:{width:17,height:17,color:T.muted},strokeWidth:1.8}),TELEFONO),__gh("a",{href:WHATSAPP,target:"_blank",rel:"noopener noreferrer",className:"bq-ct-tel",style:{display:"inline-flex",alignItems:"center",gap:9,color:T.ink,textDecoration:"none",fontWeight:500},"data-gufi-src":"components/Contactanos.tsx:297"},__gh(import_lucide_react6.MessageCircle,{style:{width:17,height:17,color:T.muted},strokeWidth:1.8}),"WhatsApp"))),__gh(Solicitud,{key:opcion.clave,gufi,tipo:opcion.tipo,origen:`${origen}/${opcion.clave}`,modo:"propiedad",titulo:opcion.formulario.titulo,nota:opcion.formulario.nota,boton:opcion.formulario.boton})),__gh("style",{"data-gufi-src":"components/Contactanos.tsx:323"},` .bq-ct-op { transition: transform 0.25s cubic-bezier(0.2, 0.7, 0.3, 1); } .bq-ct-op:hover { transform: translateY(-3px); } .bq-ct-op img { transition: transform 0.9s cubic-bezier(0.16, 1, 0.3, 1); } .bq-ct-op:hover img { transform: scale(1.05); } .bq-ct-velo { transition: opacity 0.25s ease; } .bq-ct-op:hover .bq-ct-velo { opacity: 0.88; } @media (prefers-reduced-motion: reduce) { .bq-ct-op, .bq-ct-op img, .bq-ct-velo { transition: none; } .bq-ct-op:hover, .bq-ct-op:hover img { transform: none; } } .bq-ct-tel:hover { color: ${T.accent} !important; } @media (max-width: 900px) { .bq-ct { grid-template-columns: 1fr !important; } .bq-ct-izq { position: static !important; } } @media (max-width: 520px) { .bq-ct-ops { gap: 10px !important; } .bq-ct-op, .bq-ct-cuerpo { min-height: 150px !important; } .bq-ct-cuerpo { padding: 12px 12px 14px !important; } .bq-ct-gancho { display: none; } } `))}function Cifras({pisos,ciudades}){let casas=pisos.filter(p=>p.seccion==="estancias_cortas"),suma=0,opiniones=0;for(let p of casas){if(p.valoracion===null||p.resenas===null)continue;let n=Number(p.resenas);n<=0||(suma+=Number(p.valoracion)*n,opiniones+=n)}let nota2=opiniones>0?suma/opiniones:null,cifras=[{valor:String(casas.length),texto:t("casas que ya llevamos","homes we already manage")}];return nota2!==null&&cifras.push({valor:nota2.toLocaleString(LOCALE,{minimumFractionDigits:1,maximumFractionDigits:1}),texto:t(`de 5, la nota de los hu\xE9spedes en ${opiniones.toLocaleString(LOCALE)} opiniones`,`out of 5, our guest rating across ${opiniones.toLocaleString(LOCALE)} reviews`)}),cifras.push({valor:"784",texto:t("alquileres gestionados","rentals managed")}),cifras.push({valor:String(OBRAS.length),texto:t("obras terminadas","renovations finished")}),__gh(BloqueCifras,{titulo:__gh(__gf,null,t(`Ya lo hacemos con ${casas.length} casas`,`We already do it for ${casas.length} homes`)," ",__gh("span",{style:APAGADO,"data-gufi-src":"components/Cifras.tsx:52"},t(`en ${ciudades.length} ciudades.`,`in ${ciudades.length} cities.`))),cifras})}function BloqueCifras({titulo:titulo3,cifras}){return __gh("section",{className:"bq-revela",style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px 0`,textAlign:"center"},"data-gufi-src":"components/Cifras.tsx:72"},__gh("h2",{style:{...TITULO,fontSize:"clamp(32px, 5vw, 60px)",maxWidth:"20ch",margin:"0 auto"},"data-gufi-src":"components/Cifras.tsx:73"},titulo3),__gh("div",{className:`bq-cf bq-cf-${cifras.length}`,style:{marginTop:"clamp(40px, 6vw, 72px)",display:"grid",gridTemplateColumns:`repeat(${cifras.length}, 1fr)`,gap:24},"data-gufi-src":"components/Cifras.tsx:74"},cifras.map(c=>__gh(Cifra,{key:c.texto,valor:c.valor,texto:c.texto}))),__gh("style",{"data-gufi-src":"components/Cifras.tsx:82"},` @media (max-width: 900px) { .bq-cf-4 { grid-template-columns: repeat(2, 1fr) !important; row-gap: 32px !important; } } @media (max-width: 640px) { .bq-cf-3 { grid-template-columns: 1fr !important; row-gap: 32px !important; } } `))}function Cifra({valor,texto}){return __gh("div",{className:"bq-revela","data-gufi-src":"components/Cifras.tsx:92"},__gh("div",{style:{fontSize:"clamp(48px, 6.4vw, 84px)",lineHeight:.95,fontWeight:250,letterSpacing:"-0.05em",color:T.accent,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/Cifras.tsx:93"},valor),__gh("div",{style:{margin:"12px auto 0",fontSize:14.5,lineHeight:1.45,color:T.body,maxWidth:220},"data-gufi-src":"components/Cifras.tsx:96"},texto))}var import_react6=require("react");var POR_FOTO=6,FUNDIDO=1.4;function HeroVideo({medio,titulo:titulo3,tituloAria,subtitulo,botones}){let[quieto,setQuieto]=(0,import_react6.useState)(!1);(0,import_react6.useEffect)(()=>{let m=window.matchMedia("(prefers-reduced-motion: reduce)"),h=()=>setQuieto(m.matches);return h(),m.addEventListener("change",h),()=>m.removeEventListener("change",h)},[]);let fondo={position:"absolute",inset:0,width:"100%",height:"100%",objectFit:"cover"};return __gh("section",{style:{marginTop:-ALTO_MENU,padding:`${MARCO_HERO}px ${MARCO_HERO}px 0`},"data-gufi-src":"components/HeroVideo.tsx:64"},__gh("div",{className:"bq-hv-tarjeta",style:{position:"relative",height:`max(560px, calc(100svh - ${MARCO_HERO*2}px))`,borderRadius:28,overflow:"hidden",background:"#14100d",color:"#fff",display:"flex",alignItems:"flex-end"},"data-gufi-src":"components/HeroVideo.tsx:65"},"fotos"in medio?__gh(Pase,{fotos:medio.fotos,quieto,estilo:fondo}):quieto?__gh("img",{src:medio.poster,alt:"","aria-hidden":"true",sizes:"100vw",style:fondo,"data-gufi-src":"components/HeroVideo.tsx:81"}):__gh("video",{ref:v=>{v!==null&&(v.defaultMuted=!0)},autoPlay:!0,muted:!0,loop:!0,playsInline:!0,preload:"auto",poster:medio.poster,"aria-hidden":"true",tabIndex:-1,style:fondo,"data-gufi-src":"components/HeroVideo.tsx:83"},__gh("source",{media:"(orientation: portrait)",src:medio.videoMovil.webm,type:"video/webm","data-gufi-src":"components/HeroVideo.tsx:97"}),__gh("source",{media:"(orientation: portrait)",src:medio.videoMovil.mp4,type:"video/mp4","data-gufi-src":"components/HeroVideo.tsx:98"}),__gh("source",{src:medio.video.webm,type:"video/webm","data-gufi-src":"components/HeroVideo.tsx:99"}),__gh("source",{src:medio.video.mp4,type:"video/mp4","data-gufi-src":"components/HeroVideo.tsx:100"})),__gh("div",{"aria-hidden":"true",style:{position:"absolute",inset:0,background:"linear-gradient(180deg, rgba(10,8,8,0.4) 0%, rgba(10,8,8,0) 18%, rgba(10,8,8,0) 55%, rgba(10,8,8,0.66) 100%)"},"data-gufi-src":"components/HeroVideo.tsx:104"}),__gh("div",{className:"bq-hv-pie",style:{position:"relative",width:"100%",padding:`0 ${MARGEN_HERO} ${MARGEN_HERO}`,display:"flex",alignItems:"flex-end",justifyContent:"space-between",gap:"22px 40px",flexWrap:"wrap"},"data-gufi-src":"components/HeroVideo.tsx:112"},__gh("div",{style:{minWidth:0},"data-gufi-src":"components/HeroVideo.tsx:125"},__gh("h1",{className:"bq-hv-sube","aria-label":tituloAria,style:{margin:0,fontSize:"clamp(32px, 3.6vw, 58px)",lineHeight:1.08,letterSpacing:"-0.035em",fontWeight:600,color:"#fff"},"data-gufi-src":"components/HeroVideo.tsx:126"},titulo3),__gh("p",{className:"bq-hv-sube",style:{animationDelay:"0.12s",margin:"14px 0 0",fontSize:"clamp(16px, 1.25vw, 19px)",lineHeight:1.45,color:"rgba(255,255,255,0.86)"},"data-gufi-src":"components/HeroVideo.tsx:133"},subtitulo)),__gh("div",{className:"bq-hv-sube bq-hv-botones",style:{animationDelay:"0.24s",display:"flex",gap:10,alignItems:"center",flexShrink:0},"data-gufi-src":"components/HeroVideo.tsx:140"},botones))),__gh("style",{"data-gufi-src":"components/HeroVideo.tsx:145"},` @keyframes bq-hv-sube { from { opacity: 0; transform: translateY(16px); filter: blur(6px); } to { opacity: 1; transform: none; filter: blur(0); } } .bq-hv-sube { animation: bq-hv-sube 0.9s cubic-bezier(0.16, 1, 0.3, 1) both; } @media (prefers-reduced-motion: reduce) { .bq-hv-sube { animation: none; } } @media (max-width: 640px) { .bq-hv-tarjeta { border-radius: 22px !important; } .bq-hv-pie { flex-direction: column; align-items: stretch !important; } .bq-hv-botones { flex-direction: column; align-items: stretch !important; width: 100%; } } `))}function Pase({fotos,quieto,estilo}){if(quieto)return __gh("img",{src:fotos[0],alt:"","aria-hidden":"true",sizes:"100vw",style:estilo,"data-gufi-src":"components/HeroVideo.tsx:169"});let total=fotos.length*POR_FOTO,pct2=s=>`${(Number(s/total*100)||0).toFixed(3)}%`,nombre=`bq-hv-pase-${fotos.length}`;return __gh(__gf,null,fotos.map((f,i)=>__gh("img",{key:f,src:f,alt:"","aria-hidden":"true",sizes:"100vw",loading:i===0?"eager":"lazy",style:{...estilo,opacity:0,animation:`${nombre} ${total}s linear ${i*POR_FOTO-FUNDIDO}s infinite`},"data-gufi-src":"components/HeroVideo.tsx:176"})),__gh("style",{"data-gufi-src":"components/HeroVideo.tsx:186"},` @keyframes ${nombre} { 0% { opacity: 0; transform: scale(1); } ${pct2(FUNDIDO)} { opacity: 1; } ${pct2(POR_FOTO)} { opacity: 1; } ${pct2(POR_FOTO+FUNDIDO)} { opacity: 0; transform: scale(1.08); } 100% { opacity: 0; transform: scale(1.08); } } `))}function BotonHero({href,tono,onClick,children}){return __gh("a",{href,onClick,className:"bq-boton",style:{display:"inline-flex",alignItems:"center",justifyContent:"center",height:46,padding:"0 22px",borderRadius:999,fontSize:15,fontWeight:500,letterSpacing:"-0.01em",textDecoration:"none",whiteSpace:"nowrap",boxSizing:"border-box",...tono==="oscura"?{color:"#fff",background:"rgba(16,12,10,0.55)",border:"1px solid rgba(255,255,255,0.16)",backdropFilter:"blur(14px)",WebkitBackdropFilter:"blur(14px)"}:{color:"#16150f",background:"#fff",border:"1px solid #fff"}},"data-gufi-src":"components/HeroVideo.tsx:216"},children)}function bajarA(e,id){let destino=document.getElementById(id);destino!==null&&(e.preventDefault(),destino.scrollIntoView({behavior:"smooth",block:"start"}))}var import_react7=require("react"),import_lucide_react7=require("lucide-react");var SITIO=[{col:1,fila:1},{col:1,fila:2},{col:3,fila:1},{col:3,fila:2}],SIN_HILOS=1e3,TURNO_MS=2800;function Servicios({servicios}){if(servicios.length!==SITIO.length)throw new Error(`Servicios: son ${SITIO.length}, llegaron ${servicios.length}`);let caja2=(0,import_react7.useRef)(null),centro=(0,import_react7.useRef)(null),piezas=(0,import_react7.useRef)([]),[hilos,setHilos]=(0,import_react7.useState)(null),[visto,setVisto]=(0,import_react7.useState)(!1),[manual,setManual]=(0,import_react7.useState)(null),[turno,setTurno]=(0,import_react7.useState)(0),[quieto,setQuieto]=(0,import_react7.useState)(!1);(0,import_react7.useEffect)(()=>{let m=window.matchMedia("(prefers-reduced-motion: reduce)"),h=()=>setQuieto(m.matches);return h(),m.addEventListener("change",h),()=>m.removeEventListener("change",h)},[]),(0,import_react7.useLayoutEffect)(()=>{let el=caja2.current;if(el===null)return;let en=n=>{let x=0,y=0,a=n;for(;a!==null&&a!==el;)x+=a.offsetLeft,y+=a.offsetTop,a=a.offsetParent;return{x,y}},medir=()=>{let c=centro.current;if(c===null)return;let ps=piezas.current.map((p,i)=>{if(p===null)throw new Error(`Servicios: falta la pieza ${i}`);return{...en(p),w:p.offsetWidth,h:p.offsetHeight}}),pc=en(c),cx=pc.x+c.offsetWidth/2,cy=pc.y+c.offsetHeight/2,f=n=>(Number(n)||0).toFixed(1);if(window.innerWidth{let x0=p.x+p.w/2ro.disconnect()},[]),(0,import_react7.useEffect)(()=>{let el=caja2.current;if(el===null)return;let io=new IntersectionObserver(entradas=>{entradas.some(e=>e.isIntersecting)&&(setVisto(!0),io.disconnect())},{threshold:.2});return io.observe(el),()=>io.disconnect()},[]),(0,import_react7.useEffect)(()=>{if(!visto||quieto||manual!==null)return;let id=window.setInterval(()=>setTurno(x=>(x+1)%servicios.length),TURNO_MS);return()=>window.clearInterval(id)},[visto,quieto,manual,servicios.length]);let activo=manual!==null?manual:visto&&!quieto?turno:null;return __gh("div",{ref:caja2,className:`bq-sv${visto?" visto":""}`,style:{position:"relative",marginTop:"clamp(40px, 5vw, 72px)",display:"grid",gridTemplateColumns:"minmax(0, 1fr) 300px minmax(0, 1fr)",gridTemplateRows:"auto auto",gap:"32px clamp(48px, 6vw, 96px)",alignItems:"center"},"data-gufi-src":"components/Servicios.tsx:164"},hilos!==null&&__gh("svg",{"aria-hidden":"true",width:hilos.w,height:hilos.h,viewBox:`0 0 ${hilos.w} ${hilos.h}`,style:{position:"absolute",inset:0,pointerEvents:"none",overflow:"visible"},"data-gufi-src":"components/Servicios.tsx:178"},__gh("defs",{"data-gufi-src":"components/Servicios.tsx:185"},__gh("filter",{id:"bq-sv-brillo",x:"-50%",y:"-50%",width:"200%",height:"200%","data-gufi-src":"components/Servicios.tsx:186"},__gh("feGaussianBlur",{stdDeviation:"3.5",result:"b","data-gufi-src":"components/Servicios.tsx:187"}),__gh("feMerge",{"data-gufi-src":"components/Servicios.tsx:188"},__gh("feMergeNode",{in:"b","data-gufi-src":"components/Servicios.tsx:189"}),__gh("feMergeNode",{in:"SourceGraphic","data-gufi-src":"components/Servicios.tsx:190"})))),hilos.d.map((d2,i)=>__gh("g",{key:i,className:`bq-sv-hilo${!hilos.movil&&activo===i?" on":""}`,"data-gufi-src":"components/Servicios.tsx:195"},__gh("path",{d:d2,pathLength:1,className:"bq-sv-base",style:{transitionDelay:`${.2+i*.15}s`},"data-gufi-src":"components/Servicios.tsx:196"}),!hilos.movil&&__gh("path",{d:d2,pathLength:1,className:"bq-sv-luz",filter:"url(#bq-sv-brillo)","data-gufi-src":"components/Servicios.tsx:197"}),visto&&!quieto&&__gh(__gf,null,__gh("path",{d:d2,className:"bq-sv-flujo","data-gufi-src":"components/Servicios.tsx:200"}),(hilos.movil?[0,1.5]:[i*.65]).map(retraso=>__gh("circle",{key:retraso,r:4.5,className:"bq-sv-chispa",opacity:0,filter:"url(#bq-sv-brillo)","data-gufi-src":"components/Servicios.tsx:202"},__gh("animateMotion",{dur:hilos.movil?"3s":"2.6s",begin:`${1.4+retraso}s`,repeatCount:"indefinite",path:d2,"data-gufi-src":"components/Servicios.tsx:203"}),__gh("animate",{attributeName:"opacity",values:"0;1;1;0",keyTimes:"0;0.12;0.85;1",dur:hilos.movil?"3s":"2.6s",begin:`${1.4+retraso}s`,repeatCount:"indefinite","data-gufi-src":"components/Servicios.tsx:204"}))))))),__gh("div",{className:"bq-sv-celda",style:{gridColumn:2,gridRow:"1 / span 2",display:"flex",justifyContent:"center",alignItems:"center",position:"relative"},"data-gufi-src":"components/Servicios.tsx:214"},!quieto&&__gh(__gf,null,__gh("span",{className:"bq-sv-aura","aria-hidden":"true","data-gufi-src":"components/Servicios.tsx:217"}),__gh("span",{className:"bq-sv-orbita","aria-hidden":"true","data-gufi-src":"components/Servicios.tsx:218"}),__gh("span",{className:"bq-sv-orbita bq-sv-orbita-2","aria-hidden":"true","data-gufi-src":"components/Servicios.tsx:219"})),__gh("div",{ref:centro,className:`bq-sv-centro${activo!==null?" on":""}`,style:{position:"relative",width:250,height:250,borderRadius:"50%",background:T.surface,boxShadow:"0 1px 3px rgba(22,21,15,0.05), 0 30px 70px -30px rgba(98,18,23,0.45)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",textAlign:"center"},"data-gufi-src":"components/Servicios.tsx:222"},!quieto&&__gh(__gf,null,__gh("span",{className:"bq-sv-onda","aria-hidden":"true","data-gufi-src":"components/Servicios.tsx:241"}),__gh("span",{className:"bq-sv-onda","aria-hidden":"true",style:{animationDelay:"1.6s"},"data-gufi-src":"components/Servicios.tsx:242"})),__gh("img",{className:"bq-sv-logo",src:LOGO,alt:"Batuecas",style:{width:138,height:"auto",display:"block"},"data-gufi-src":"components/Servicios.tsx:245"}),__gh("span",{key:activo===null?"equipo":servicios[activo].titulo,"aria-live":"polite",className:"bq-sv-rotulo",style:{marginTop:14,fontSize:14,fontWeight:600,letterSpacing:"-0.01em",color:activo!==null?T.accent:T.muted},"data-gufi-src":"components/Servicios.tsx:246"},activo!==null?servicios[activo].titulo:t("Un solo equipo","One team")))),servicios.map((s,i)=>__gh("div",{key:s.titulo,ref:el=>{piezas.current[i]=el},className:`bq-sv-pieza bq-revela${activo===i?" on":""}`,onMouseEnter:()=>setManual(i),onMouseLeave:()=>setManual(null),onFocus:()=>setManual(i),onBlur:()=>setManual(null),style:{gridColumn:SITIO[i].col,gridRow:SITIO[i].fila,position:"relative",zIndex:1},"data-gufi-src":"components/Servicios.tsx:258"},__gh("div",{className:"bq-sv-tarjeta",style:{background:T.surface,border:`1px solid ${T.lineSoft}`,borderRadius:26,padding:12,height:"100%",boxSizing:"border-box",display:"flex",flexDirection:"column"},"data-gufi-src":"components/Servicios.tsx:270"},__gh("div",{className:"bq-sv-media",style:{borderRadius:18,overflow:"hidden",flexShrink:0},"data-gufi-src":"components/Servicios.tsx:271"},__gh("img",{className:"bq-sv-foto",src:s.foto,alt:s.alt,loading:"lazy",sizes:"(max-width: 1000px) 120px, 380px",style:{display:"block",width:"100%",height:170,objectFit:"cover"},"data-gufi-src":"components/Servicios.tsx:272"})),__gh("div",{className:"bq-sv-cuerpo",style:{padding:"18px 10px 8px",flex:1,display:"flex",flexDirection:"column",minWidth:0},"data-gufi-src":"components/Servicios.tsx:274"},__gh("h3",{style:{margin:0,fontSize:"clamp(19px, 1.9vw, 23px)",lineHeight:1.15,fontWeight:PESO_SECCION+80,letterSpacing:"-0.025em",color:T.ink},"data-gufi-src":"components/Servicios.tsx:275"},s.titulo),__gh("p",{className:"bq-sv-texto",style:{margin:"8px 0 18px",fontSize:14.5,lineHeight:1.55,color:T.body},"data-gufi-src":"components/Servicios.tsx:276"},s.texto),__gh("div",{className:"bq-sv-enlaces",style:{marginTop:"auto",display:"flex",flexWrap:"wrap",alignItems:"center",gap:"12px 18px"},"data-gufi-src":"components/Servicios.tsx:277"},__gh("a",{href:s.captar.href,className:"bq-boton bq-sv-captar",style:{...BOTON,minHeight:44,padding:"0 20px",fontSize:14.5},"data-gufi-src":"components/Servicios.tsx:278"},s.captar.label),__gh("a",{href:s.anunciar.href,className:"bq-flecha bq-sv-anunciar",style:ENLACE_SECCION,"data-gufi-src":"components/Servicios.tsx:281"},s.anunciar.label,__gh(import_lucide_react7.ArrowRight,{style:{width:15,height:15}}))))))),__gh("style",{"data-gufi-src":"components/Servicios.tsx:291"},` /* LOS HILOS: la base se dibuja al llegar; la luz es el mismo hilo en granate, que se enciende con su servicio. */ .bq-sv-base { fill: none; stroke: ${T.line}; stroke-width: 1.5; stroke-dasharray: 1; stroke-dashoffset: 1; transition: stroke-dashoffset 1.4s cubic-bezier(0.65, 0, 0.35, 1); } .bq-sv.visto .bq-sv-base { stroke-dashoffset: 0; } .bq-sv-luz { fill: none; stroke: ${T.accent}; stroke-width: 2.5; stroke-linecap: round; stroke-dasharray: 1; stroke-dashoffset: 1; opacity: 0; transition: stroke-dashoffset 0.9s cubic-bezier(0.65, 0, 0.35, 1), opacity 0.4s ease; } .bq-sv-hilo.on .bq-sv-luz { stroke-dashoffset: 0; opacity: 1; } .bq-sv-flujo { fill: none; stroke: ${T.accent}; stroke-width: 1.5; stroke-linecap: round; stroke-dasharray: 2 11; opacity: 0.3; animation: bq-sv-flujo 1.1s linear infinite, bq-sv-aparece 0.6s ease 1.4s backwards; } @keyframes bq-sv-flujo { to { stroke-dashoffset: -13; } } @keyframes bq-sv-aparece { from { opacity: 0; } } .bq-sv-chispa { fill: ${T.accent}; } /* EL CENTRO: aura que respira, dos \xF3rbitas que giran y ondas que salen. */ .bq-sv-aura { position: absolute; width: 560px; height: 560px; left: 50%; top: 50%; margin: -280px 0 0 -280px; border-radius: 50%; pointer-events: none; background: radial-gradient(circle at 42% 40%, rgba(98,18,23,0.22), rgba(202,196,124,0.2) 38%, rgba(250,249,246,0) 68%); filter: blur(28px); animation: bq-sv-respira 7s ease-in-out infinite alternate; } @keyframes bq-sv-respira { from { transform: scale(0.9) rotate(0deg); opacity: 0.75; } to { transform: scale(1.08) rotate(40deg); opacity: 1; } } .bq-sv-orbita { position: absolute; width: 340px; height: 340px; left: 50%; top: 50%; margin: -170px 0 0 -170px; border-radius: 50%; border: 1px dashed rgba(98,18,23,0.22); pointer-events: none; animation: bq-sv-gira 40s linear infinite; } .bq-sv-orbita::after { content: ''; position: absolute; top: -4px; left: 50%; width: 8px; height: 8px; margin-left: -4px; border-radius: 50%; background: ${T.accent}; box-shadow: 0 0 10px rgba(98,18,23,0.5); } .bq-sv-orbita-2 { width: 410px; height: 410px; margin: -205px 0 0 -205px; border-color: rgba(202,196,124,0.45); animation-duration: 60s; animation-direction: reverse; } .bq-sv-orbita-2::after { background: ${T.dorado}; box-shadow: 0 0 10px rgba(202,196,124,0.7); } @keyframes bq-sv-gira { to { transform: rotate(360deg); } } .bq-sv-centro { transition: transform 0.5s cubic-bezier(0.2, 0.7, 0.3, 1); } .bq-sv-centro.on { transform: scale(1.03); } .bq-sv-onda { position: absolute; inset: 0; border-radius: 50%; border: 1.5px solid ${T.accent}; opacity: 0; pointer-events: none; animation: bq-sv-onda 3.2s cubic-bezier(0.2, 0.6, 0.3, 1) infinite; } @keyframes bq-sv-onda { 0% { transform: scale(1); opacity: 0.35; } 100% { transform: scale(1.55); opacity: 0; } } .bq-sv-rotulo { animation: bq-sv-rotulo 0.45s cubic-bezier(0.16, 1, 0.3, 1) both; } @keyframes bq-sv-rotulo { from { opacity: 0; transform: translateY(6px); filter: blur(3px); } } /* LAS TARJETAS: la encendida, con anillo granate y un poco m\xE1s arriba; su foto se acerca. */ .bq-sv-tarjeta { transition: transform 0.45s cubic-bezier(0.2, 0.7, 0.3, 1), box-shadow 0.45s ease, border-color 0.45s ease; } .bq-sv-foto { transition: transform 1.2s cubic-bezier(0.16, 1, 0.3, 1); } .bq-sv-pieza.on .bq-sv-tarjeta { transform: translateY(-4px); border-color: ${T.accentBorde} !important; box-shadow: 0 0 0 2px ${T.accent}, 0 26px 50px -28px rgba(98,18,23,0.55); } .bq-sv-pieza.on .bq-sv-foto { transform: scale(1.05); } /* EN EL M\xD3VIL: centro arriba, los cuatro en columna con la foto al lado y el hilo bajando por la izquierda. */ @media (max-width: ${SIN_HILOS-1}px) { .bq-sv { display: block !important; } .bq-sv-celda { height: 300px; margin-bottom: 8px; overflow: visible; } .bq-sv-centro { width: 190px !important; height: 190px !important; } .bq-sv-logo { width: 108px !important; } .bq-sv-aura { width: 380px; height: 380px; margin: -190px 0 0 -190px; } .bq-sv-orbita { width: 250px; height: 250px; margin: -125px 0 0 -125px; } .bq-sv-orbita-2 { width: 296px; height: 296px; margin: -148px 0 0 -148px; } .bq-sv-pieza { margin-left: 30px; margin-top: 14px; z-index: 2 !important; } .bq-sv-pieza::after { content: ''; position: absolute; left: -27px; top: 50%; width: 12px; height: 12px; margin-top: -6px; border-radius: 50%; background: ${T.bg}; box-shadow: inset 0 0 0 2px ${T.line}; transition: background 0.3s ease, box-shadow 0.3s ease; } .bq-sv-pieza.on::after { background: ${T.accent}; box-shadow: inset 0 0 0 2px ${T.accent}, 0 0 0 5px rgba(98,18,23,0.14); } .bq-sv-tarjeta { flex-direction: row !important; align-items: stretch; gap: 14px; padding: 10px !important; border-radius: 22px !important; } .bq-sv-media { width: 104px; border-radius: 14px !important; } .bq-sv-foto { width: 104px !important; height: 100% !important; min-height: 116px; } .bq-sv-cuerpo { padding: 6px 4px 4px 0 !important; } .bq-sv-cuerpo h3 { font-size: 18px !important; } .bq-sv-texto { margin: 5px 0 10px !important; font-size: 13.5px !important; line-height: 1.45 !important; } .bq-sv-enlaces { gap: 6px 14px !important; } .bq-sv-captar { min-height: 0 !important; padding: 0 !important; background: transparent !important; box-shadow: none !important; color: ${T.accent} !important; font-size: 14px !important; } .bq-sv-anunciar { color: ${T.muted} !important; font-weight: 500 !important; font-size: 13.5px !important; } .bq-sv-anunciar svg { display: none; } .bq-sv-pieza.on .bq-sv-tarjeta { transform: none; } } @media (prefers-reduced-motion: reduce) { .bq-sv-base, .bq-sv-luz, .bq-sv-tarjeta, .bq-sv-foto, .bq-sv-centro { transition: none; } .bq-sv-rotulo { animation: none; } } `))}function WhatsApp({texto}){return __gh("a",{href:`${WHATSAPP}?text=${encodeURIComponent(texto)}`,target:"_blank",rel:"noopener noreferrer","aria-label":t("Escr\xEDbenos por WhatsApp","Message us on WhatsApp"),title:t("Escr\xEDbenos por WhatsApp","Message us on WhatsApp"),className:"bq-wa",style:{position:"fixed",right:20,bottom:"calc(20px + env(safe-area-inset-bottom))",zIndex:35,width:56,height:56,borderRadius:"50%",background:"#25D366",display:"flex",alignItems:"center",justifyContent:"center",boxShadow:"0 10px 28px -8px rgba(37,211,102,0.55), 0 2px 6px rgba(0,0,0,0.12)"},"data-gufi-src":"components/WhatsApp.tsx:19"},__gh("svg",{width:28,height:28,viewBox:"0 0 32 32","aria-hidden":"true",fill:"#fff","data-gufi-src":"components/WhatsApp.tsx:41"},__gh("path",{d:"M16.003 3C8.832 3 3 8.83 3 16c0 2.29.6 4.53 1.74 6.5L3 29l6.68-1.75A12.96 12.96 0 0 0 16.003 29C23.17 29 29 23.17 29 16S23.17 3 16.003 3Zm0 23.62c-1.98 0-3.92-.53-5.61-1.53l-.4-.24-3.96 1.04 1.06-3.86-.26-.4A10.58 10.58 0 0 1 5.38 16c0-5.86 4.77-10.62 10.63-10.62 5.85 0 10.61 4.76 10.61 10.62 0 5.86-4.76 10.62-10.62 10.62Zm5.82-7.950c-.32-.16-1.89-.93-2.18-1.04-.29-.11-.5-.16-.72.16-.21.32-.82 1.04-1.01 1.25-.19.21-.37.24-.69.08-.32-.16-1.35-.5-2.57-1.59-.95-.85-1.59-1.9-1.780-2.22-.19-.32-.02-.49.14-.65.14-.14.32-.37.48-.56.16-.19.21-.32.32-.53.11-.21.05-.4-.03-.56-.08-.16-.72-1.73-.98-2.37-.26-.62-.52-.54-.72-.55h-.61c-.21 0-.56.08-.85.4-.29.32-1.12 1.09-1.12 2.66 0 1.57 1.14 3.08 1.3 3.3.16.21 2.25 3.43 5.44 4.81.76.33 1.35.52 1.81.67.76.24 1.45.21 2 .13.61-.09 1.89-.77 2.15-1.52.27-.75.27-1.39.19-1.52-.08-.13-.29-.21-.61-.37Z","data-gufi-src":"components/WhatsApp.tsx:42"})),__gh("style",{"data-gufi-src":"components/WhatsApp.tsx:44"},` .bq-wa { transition: transform 0.2s ease; } .bq-wa:hover { transform: scale(1.06); } @media (prefers-reduced-motion: reduce) { .bq-wa { transition: none; } } @media (max-width: 640px) { .bq-hv-pie { padding-bottom: 92px !important; } } `))}function Portada({gufi,url,pisos,ciudades}){let estanciasCortas=pisos.filter(p=>p.seccion==="estancias_cortas"),conFoto=estanciasCortas.filter(p=>!esHostal(p)&&tieneFoto(p)),seleccion=estanciasCortas.slice(0,8),cinta=conFoto.slice(8,26),obrasPortada=OBRAS.slice(0,4),alquileres=pisos.filter(p=>p.seccion==="alquileres"),enVenta=pisos.filter(p=>p.seccion==="venta");return __gh("div",{"data-gufi-src":"sections/portada.tsx:103"},__gh(Cinta,{pisos:cinta,url}),__gh(Cifras,{pisos,ciudades}),__gh("section",{style:{background:T.surface,borderBottom:`1px solid ${T.lineSoft}`},"data-gufi-src":"sections/portada.tsx:121"},__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px`},"data-gufi-src":"sections/portada.tsx:122"},__gh(Mapa,{pisos:estanciasCortas,url}))),__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"sections/portada.tsx:128"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"sections/portada.tsx:129"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/portada.tsx:130"},t("Lo que hacemos","What we do")),__gh("h2",{style:{...TITULO,marginTop:18,fontSize:"clamp(32px, 5vw, 60px)"},"data-gufi-src":"sections/portada.tsx:131"},t("Cuatro cosas.","Four things.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/portada.tsx:132"},t("Y un solo equipo.","And one team."))),__gh("p",{style:{...ENTRADILLA,marginLeft:"auto",marginRight:"auto"},"data-gufi-src":"sections/portada.tsx:134"},t("La reformamos, la alquilamos por noches o por a\xF1os, y si un d\xEDa la vendes, tambi\xE9n. Sin pasarte de una empresa a otra.","We renovate it, let it by the night or by the year, and if one day you sell it, we do that too. No passing you from one company to another."))),__gh(Servicios,{servicios:[{titulo:t("Alquiler tur\xEDstico","Holiday rentals"),texto:t("Portales, precio que se mueve solo, limpieza y hu\xE9spedes a cualquier hora. T\xFA cobras.","Listings, pricing that adjusts itself, cleaning and guests at any hour. You get paid."),foto:fotoObra("PUNONROSTRO",1),alt:t("Sal\xF3n de Pu\xF1onrostro, una de sus obras que hoy alquilan","Living room in Pu\xF1onrostro, one of their renovations they now let"),captar:{label:t("Pon tu piso en gesti\xF3n","Let us manage your home"),href:url("/gestion")},anunciar:{label:t(`Ver los ${estanciasCortas.length}`,`See all ${estanciasCortas.length}`),href:url("/estancias-cortas")}},{titulo:t("Alquiler tradicional","Long-term rentals"),texto:t("Por a\xF1os, no por noches. Buscamos inquilino, comprobamos que puede pagarlo y llevamos el contrato.","For years, not nights. We find a tenant, check they can pay and handle the contract."),foto:fotoObra("SAN-AGUSTIN-7",3),alt:t("Sal\xF3n terminado en la reforma de San Agust\xEDn","Finished living room in the San Agust\xEDn renovation"),captar:{label:t("Alquilar mi piso","Let my flat"),href:"#contactanos-tradicional"},anunciar:{label:t(`Ver los ${alquileres.length}`,`See all ${alquileres.length}`),href:url("/alquileres")}},{titulo:t("Reformas","Renovations"),texto:t("De cambiar una cocina a dejar una casa lista para su primer hu\xE9sped. Presupuesto cerrado tras la visita.","From a new kitchen to a home ready for its first guest. A fixed quote after we visit."),foto:fotoObra("MARQUES-DE-VALDAVIA",0),alt:t("Cocina terminada en la reforma de Marqu\xE9s de Valdavia","Finished kitchen in the Marqu\xE9s de Valdavia renovation"),captar:{label:t("Pedir presupuesto","Get a quote"),href:"#contactanos-reformas"},anunciar:{label:t(`Ver las ${OBRAS.length} obras`,`See all ${OBRAS.length} projects`),href:url("/reformas")}},{titulo:t("Comprar y vender","Buying and selling"),texto:t("Valoramos con lo que se vende en tu calle. Y lo ense\xF1amos primero a quien ya pasa por aqu\xED.","We value it against what sells on your street, and show it first to the people who already come through our door."),foto:fotoObra("PADRE-CLARET",0),alt:t("Sal\xF3n terminado en la reforma de Padre Claret","Finished living room in the Padre Claret renovation"),captar:{label:t("Saber cu\xE1nto vale mi casa","Find out what my home is worth"),href:"#contactanos-vender"},anunciar:{label:t(`Ver los ${enVenta.length} en venta`,`See all ${enVenta.length} for sale`),href:url("/venta")}}]})),__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"sections/portada.tsx:193"},__gh("div",{style:cabeceraSeccion,"data-gufi-src":"sections/portada.tsx:194"},__gh("div",{"data-gufi-src":"sections/portada.tsx:195"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/portada.tsx:196"},t("La prueba","The proof")),__gh("h2",{style:{...TITULO,marginTop:18},"data-gufi-src":"sections/portada.tsx:197"},t("Lo que ya gestionamos.","What we already manage.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/portada.tsx:199"},t("Llenas ahora mismo.","Booked right now.")))),__gh("a",{href:url("/estancias-cortas"),className:"bq-flecha",style:ENLACE_SECCION,"data-gufi-src":"sections/portada.tsx:202"},t(`Ver los ${estanciasCortas.length}`,`See all ${estanciasCortas.length}`),__gh(import_lucide_react8.ArrowRight,{style:{width:15,height:15}}))),__gh("div",{className:"bq-carrusel",style:rejilla,"data-gufi-src":"sections/portada.tsx:207"},seleccion.map(p=>__gh(Tarjeta,{key:p.id,piso:p,href:url(`/${p.slug}`),lazy:!0})))),__gh("section",{style:{marginTop:AIRE,background:T.surface},"data-gufi-src":"sections/portada.tsx:219"},__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px`},"data-gufi-src":"sections/portada.tsx:220"},__gh("div",{style:cabeceraSeccion,"data-gufi-src":"sections/portada.tsx:221"},__gh("div",{"data-gufi-src":"sections/portada.tsx:222"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/portada.tsx:223"},t("Y la otra prueba","More proof")),__gh("h2",{style:{...TITULO,marginTop:18},"data-gufi-src":"sections/portada.tsx:224"},t("Y lo que dejamos as\xED.","And what we leave like this.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/portada.tsx:226"},t(`${OBRAS.length} obras con su calle.`,`${OBRAS.length} projects, street by street.`)))),__gh("a",{href:url("/reformas"),className:"bq-flecha",style:ENLACE_SECCION,"data-gufi-src":"sections/portada.tsx:229"},t(`Ver las ${OBRAS.length}`,`See all ${OBRAS.length}`),__gh(import_lucide_react8.ArrowRight,{style:{width:15,height:15}}))),__gh("div",{className:"bq-carrusel",style:rejilla,"data-gufi-src":"sections/portada.tsx:234"},obrasPortada.map(o=>__gh("a",{key:o.clave,href:url("/reformas"),className:"bq-card",style:tarjetaObra,"data-gufi-src":"sections/portada.tsx:236"},__gh("div",{className:"bq-media",style:{borderRadius:18},"data-gufi-src":"sections/portada.tsx:237"},__gh("img",{src:o.fotos[0],alt:t(`Reforma en ${o.calle}`,`Renovation on ${o.calle}`),loading:"lazy",sizes:SIZES_REJILLA,style:{display:"block",width:"100%",height:240,objectFit:"cover"},"data-gufi-src":"sections/portada.tsx:238"})),__gh("div",{style:{padding:"14px 4px 0"},"data-gufi-src":"sections/portada.tsx:246"},__gh("div",{style:{fontSize:17,fontWeight:500,letterSpacing:"-0.015em",color:T.ink},"data-gufi-src":"sections/portada.tsx:247"},o.calle),__gh("div",{style:{marginTop:4,fontSize:14,color:T.muted},"data-gufi-src":"sections/portada.tsx:250"},o.fotos.length===1?t("1 foto de la obra","1 photo of the project"):t(`${o.fotos.length} fotos de la obra`,`${o.fotos.length} photos of the project`)))))))),__gh(Contactanos,{gufi,origen:"portada"}),__gh(WhatsApp,{texto:t("Hola, os escribo desde la web de Batuecas.","Hi, I am writing from the Batuecas website.")}),__gh("style",{"data-gufi-src":"sections/portada.tsx:267"},` /* La palabra que cambia en el titular. Por reloj, no por frames: ver la cabecera de este fichero. Con \xABreducir movimiento\xBB, nada. */ @keyframes bq-palabra { from { opacity: 0; transform: translateY(0.22em); filter: blur(10px); } to { opacity: 1; transform: none; filter: blur(0); } } .bq-palabra { display: inline-block; animation: bq-palabra 0.7s cubic-bezier(0.16, 1, 0.3, 1) both; } /* La cinta se desliza, pero sin barra: la barra de scroll a lo ancho de la portada se ve como un fallo. */ .bq-cinta::-webkit-scrollbar { display: none; } .bq-cinta-item { transition: transform 0.45s cubic-bezier(0.16, 1, 0.3, 1), box-shadow 0.45s; } .bq-cinta-item:hover { transform: translateY(-6px); box-shadow: 0 26px 52px -24px rgba(19,18,9,0.42); } /* El mapa: unos pocos puntos laten; al pasar por uno, crece. */ @keyframes bq-late { 0% { transform: scale(0.35); opacity: 0.45; } 100% { transform: scale(1.6); opacity: 0; } } .bq-late { transform-box: fill-box; transform-origin: center; animation: bq-late 2.4s ease-out infinite; } .bq-late:nth-of-type(2n) { animation-delay: 0.8s; } .bq-late:nth-of-type(3n) { animation-delay: 1.6s; } /* EL MAPA, VIVO AL PASAR EL RAT\xD3N (Juan, 29-oct-2026: \xABanimaci\xF3n guapa al pasar el rat\xF3n\xBB). La burbuja elegida crece con un rebote, las dem\xE1s se apagan un poco, salen dos ondas, el nombre entra desliz\xE1ndose y las tres casas de abajo entran una detr\xE1s de otra. Todo CSS: las transiciones del grupo y animaciones que se repiten porque cada ciudad monta nodos nuevos (\`key\`). */ .bq-punto { cursor: pointer; transition: transform 0.55s cubic-bezier(0.34, 1.56, 0.64, 1), opacity 0.35s ease; } @keyframes bq-onda { from { transform: scale(1); opacity: 0.55; } to { transform: scale(2.6); opacity: 0; } } .bq-onda { transform-box: fill-box; transform-origin: center; animation: bq-onda 1.1s cubic-bezier(0.16, 1, 0.3, 1) both; pointer-events: none; } @keyframes bq-etiqueta { from { opacity: 0; transform: translateX(-8px); } to { opacity: 1; transform: none; } } .bq-etiqueta { animation: bq-etiqueta 0.45s cubic-bezier(0.16, 1, 0.3, 1) both; } @keyframes bq-entra { from { opacity: 0; transform: translateY(12px); filter: blur(4px); } to { opacity: 1; transform: none; filter: blur(0); } } .bq-entra { animation: bq-entra 0.5s cubic-bezier(0.16, 1, 0.3, 1) both; } @media (prefers-reduced-motion: reduce) { .bq-palabra, .bq-late, .bq-onda, .bq-etiqueta, .bq-entra { animation: none; } .bq-onda { display: none; } .bq-punto { transition: none; } } /* El mapa: texto y pieza lado a lado; debajo de 900 px, apilados. Y en el m\xF3vil LA LISTA DE CIUDADES ES UNA FILA DE P\xCDLDORAS que se desliza con el dedo, ENCIMA del mapa (Juan, 29-oct-2026: \xABen el m\xF3vil quita lo de las ciudades o que quepa en alg\xFAn lado, porque no va\xBB). Era una tabla de siete filas debajo del mapa, y elegir una cambiaba las casas que quedaban por ENCIMA, fuera de la vista. */ @media (max-width: 900px) { .bq-mapa { grid-template-columns: minmax(0, 1fr) !important; grid-template-areas: "texto" "lista" "mapa" !important; grid-template-rows: auto !important; } .bq-mapa-pieza { margin-top: 18px; } .bq-mapa-lista { display: flex; gap: 8px; overflow-x: auto; scrollbar-width: none; margin: 22px -20px 0 !important; padding: 2px 20px 4px; border-top: none !important; scroll-padding-left: 20px; } .bq-mapa-lista::-webkit-scrollbar { display: none; } .bq-mapa-ciudad { width: auto !important; flex-shrink: 0; gap: 8px !important; padding: 9px 15px 9px 12px !important; border: 1px solid ${T.lineSoft} !important; border-radius: 999px; font-size: 14.5px !important; white-space: nowrap; } .bq-mapa-ciudad.on { background: ${T.surface} !important; border-color: ${T.line} !important; box-shadow: 0 1px 3px rgba(22,21,15,0.06); } .bq-mapa-resto { display: none; } } @media (max-width: 600px) { .bq-mapa-pieza > svg { margin: 0 -20px; width: calc(100% + 40px) !important; } } /* Las tres casas de la ciudad elegida: en un m\xF3vil estrecho, dos. */ @media (max-width: 480px) { .bq-mapa-casas { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } .bq-mapa-casas > a:nth-child(3) { display: none !important; } } `))}var PALABRAS=IDIOMA==="en"?["booked","rented","renovated","sold"]:["llena","alquilada","reformada","vendida"];function HeroPortada({url}){return __gh(HeroVideo,{medio:{video:PORTADA_VIDEO,videoMovil:PORTADA_VIDEO_MOVIL,poster:PORTADA_POSTER},tituloAria:t(`Tu casa, ${PALABRAS.slice(0,-1).join(", ")} o ${PALABRAS[PALABRAS.length-1]}. T\xFA, a lo tuyo.`,`Your home, ${PALABRAS.slice(0,-1).join(", ")} or ${PALABRAS[PALABRAS.length-1]}. Zero hassle for you.`),titulo:__gh("span",{"aria-hidden":"true","data-gufi-src":"sections/portada.tsx:390"},t("Tu casa,","Your home,")," ",__gh(Rotativo,null)," ",__gh("span",{style:{color:"rgba(255,255,255,0.62)"},"data-gufi-src":"sections/portada.tsx:392"},t("T\xFA, a lo tuyo.","Zero hassle for you."))),subtitulo:t("Alquiler tur\xEDstico, de todo el a\xF1o, reformas y venta. Con un solo equipo.","Holiday and long-term rentals, renovations and sales. With one team."),botones:__gh(__gf,null,__gh(BotonHero,{href:url("/estancias-cortas"),tono:"oscura"},t("Busco alojamiento","Find a place to stay")),__gh(BotonHero,{href:url("/gestion"),tono:"clara"},t("Tengo una casa","I own a home")))})}function Rotativo(){let[vuelta,setVuelta]=(0,import_react8.useState)(0);return(0,import_react8.useEffect)(()=>{if(window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let id=setInterval(()=>setVuelta(n=>n+1),2600);return()=>clearInterval(id)},[]),__gh("span",{key:vuelta,className:"bq-palabra",style:{animationDelay:vuelta===0?"0.16s":"0s"},"data-gufi-src":"sections/portada.tsx:427"},PALABRAS[vuelta%PALABRAS.length],".")}function Cinta({pisos,url}){let[verticales,setVerticales]=(0,import_react8.useState)(new Set),caja2=(0,import_react8.useRef)(null),encima=(0,import_react8.useRef)(!1),quietaHasta=(0,import_react8.useRef)(0);if((0,import_react8.useEffect)(()=>{let el=caja2.current;if(el===null||window.matchMedia("(prefers-reduced-motion: reduce)").matches)return;let tocar=()=>{quietaHasta.current=performance.now()+2500};el.addEventListener("touchstart",tocar,{passive:!0}),el.addEventListener("pointerdown",tocar),el.addEventListener("wheel",tocar,{passive:!0});let pos=el.scrollLeft,antes=performance.now(),id=requestAnimationFrame(function paso(ahora){let dt=Math.min(ahora-antes,64);if(antes=ahora,encima.current||ahora=mitad&&(pos-=mitad),el.scrollLeft=pos}id=requestAnimationFrame(paso)});return()=>{cancelAnimationFrame(id),el.removeEventListener("touchstart",tocar),el.removeEventListener("pointerdown",tocar),el.removeEventListener("wheel",tocar)}},[]),pisos.length===0)return null;let dobles=[...pisos,...pisos];return __gh("div",{ref:caja2,className:"bq-cinta",onPointerEnter:e=>{e.pointerType==="mouse"&&(encima.current=!0)},onPointerLeave:()=>{encima.current=!1},style:{overflowX:"auto",overflowY:"hidden",overscrollBehaviorX:"contain",scrollbarWidth:"none",padding:"clamp(30px, 4.4vw, 52px) 0 18px",maskImage:"linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent)",WebkitMaskImage:"linear-gradient(90deg, transparent, #000 6%, #000 94%, transparent)"},"data-gufi-src":"sections/portada.tsx:505"},__gh("div",{style:{display:"flex",gap:20,width:"max-content",paddingInline:10},"data-gufi-src":"sections/portada.tsx:524"},dobles.map((p,i)=>{let foto2=fotoDe(p,"lg");if(foto2===null||verticales.has(p.id))return null;let copia=i>=pisos.length;return __gh("a",{key:`${p.id}-${i}`,href:url(`/${p.slug}`),className:"bq-cinta-item","aria-hidden":copia?"true":void 0,tabIndex:copia?-1:void 0,draggable:!1,style:{position:"relative",width:"clamp(230px, 24vw, 320px)",aspectRatio:"4 / 3",borderRadius:16,overflow:"hidden",background:T.surfaceAlt,flexShrink:0,display:"block",textDecoration:"none",boxShadow:"0 14px 30px -20px rgba(19,18,9,0.3)"},"data-gufi-src":"sections/portada.tsx:530"},__gh("img",{src:foto2,alt:titulo(p),loading:i<6?"eager":"lazy",sizes:"(max-width: 958px) 230px, (max-width: 1333px) 24vw, 320px",draggable:!1,"data-no-thumb":"true",onLoad:e=>{let img=e.currentTarget;img.naturalHeight>img.naturalWidth&&setVerticales(v=>new Set(v).add(p.id))},style:{position:"absolute",inset:0,width:"100%",height:"100%",objectFit:"cover"},"data-gufi-src":"sections/portada.tsx:550"}),__gh("span",{style:{position:"absolute",left:0,right:0,bottom:0,padding:"48px 14px 12px",background:"linear-gradient(180deg, rgba(12,12,10,0) 0%, rgba(12,12,10,0.55) 45%, rgba(12,12,10,0.8) 100%)",color:"#fff",display:"grid",gap:2},"data-gufi-src":"sections/portada.tsx:571"},__gh("span",{style:{fontSize:12.5,color:"rgba(255,255,255,0.8)"},"data-gufi-src":"sections/portada.tsx:584"},donde(p)),__gh("span",{style:{fontSize:15,fontWeight:600,letterSpacing:"-0.015em",lineHeight:1.3},"data-gufi-src":"sections/portada.tsx:585"},titulo(p))))})))}var RAD=Math.PI/180,CONO_N=Math.log(Math.cos(37*RAD)/Math.cos(43*RAD))/Math.log(Math.tan(Math.PI/4+43*RAD/2)/Math.tan(Math.PI/4+37*RAD/2)),CONO_F=Math.cos(37*RAD)*Math.pow(Math.tan(Math.PI/4+37*RAD/2),CONO_N)/CONO_N,CONO_RHO0=CONO_F/Math.pow(Math.tan(Math.PI/4+36*RAD/2),CONO_N),ESCALA=3421.614759832342;function proyectar(lat,lng){if(lat>27.5&&lat<29.5&&lng>-18.3&&lng<-13.3)return{x:127.8+(lng+15.436)*31.95,y:566.6-(lat-28.142)*36.35};if(lat<35.9||lat>43.8||lng<-9.4||lng>4.4)return null;let rho=CONO_F/Math.pow(Math.tan(Math.PI/4+lat*RAD/2),CONO_N),th=CONO_N*(lng+3)*RAD;return{x:ESCALA*rho*Math.sin(th)+350.08232758193753,y:-ESCALA*(CONO_RHO0-rho*Math.cos(th))+478.06072454785976}}function Mapa({pisos,url}){let nombreDe=new Map,cuenta2=new Map;for(let p of pisos){if(p.ciudad===null||p.ciudad.trim()==="")continue;let nombre=p.ciudad.trim(),clave=nombre.toLowerCase();cuenta2.set(clave,(cuenta2.get(clave)??0)+1);let visto=nombreDe.get(clave);(visto===void 0||visto===visto.toUpperCase())&&nombreDe.set(clave,nombre)}let ciudades=[...cuenta2.entries()].map(([clave,n])=>({clave,n,nombre:nombreDe.get(clave)}));ciudades.sort((a,b)=>b.n-a.n);let burbujas=new Map;for(let p of pisos){if(p.lat===null||p.lng===null||p.ciudad===null||p.ciudad.trim()==="")continue;let xy=proyectar(p.lat,p.lng);if(xy===null)continue;let clave=p.ciudad.trim().toLowerCase(),b=burbujas.get(clave);b===void 0?burbujas.set(clave,{x:xy.x,y:xy.y,n:1}):(b.x=(b.x*b.n+xy.x)/(b.n+1),b.y=(b.y*b.n+xy.y)/(b.n+1),b.n+=1)}let enMapa=ciudades.filter(c=>burbujas.has(c.clave)),[elegida,setElegida]=(0,import_react8.useState)(ciudades.length>0?ciudades[0].clave:""),[estrecho,setEstrecho]=(0,import_react8.useState)(!1);if((0,import_react8.useEffect)(()=>{let m=window.matchMedia("(max-width: 600px)"),h=()=>setEstrecho(m.matches);return h(),m.addEventListener("change",h),()=>m.removeEventListener("change",h)},[]),ciudades.length===0)return null;let sel=ciudades.find(c=>c.clave===elegida)??ciudades[0],selXY=burbujas.get(sel.clave),casas=pisos.filter(p=>p.ciudad!==null&&p.ciudad.trim().toLowerCase()===sel.clave&&!esHostal(p)&&tieneFoto(p)).slice(0,3),primeras=ciudades.slice(0,7),resto=ciudades.length-primeras.length,enMadrid=cuenta2.get("madrid"),escala=estrecho?1.6:1,radio=n=>(7+Math.sqrt(n)*2.2)*escala;return __gh("div",{className:"bq-mapa",style:{display:"grid",gridTemplateColumns:"minmax(0, 0.75fr) minmax(0, 1.25fr)",gridTemplateAreas:'"texto mapa" "lista mapa"',gridTemplateRows:"auto 1fr",columnGap:"clamp(32px, 5vw, 72px)",alignItems:"start"},"data-gufi-src":"sections/portada.tsx:720"},__gh("div",{style:{gridArea:"texto"},"data-gufi-src":"sections/portada.tsx:736"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/portada.tsx:737"},t("D\xF3nde estamos","Where we are")),__gh("h2",{style:{...TITULO,marginTop:18},"data-gufi-src":"sections/portada.tsx:738"},t("Madrid es la casa.","Madrid is home.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/portada.tsx:740"},t("Y la costa, la sierra y las islas.","Plus the coast, the mountains and the islands."))),enMadrid!==void 0&&__gh("p",{style:{...ENTRADILLA,marginTop:20},"data-gufi-src":"sections/portada.tsx:743"},t(`${enMadrid} de los ${pisos.length} alojamientos est\xE1n en Madrid. Los dem\xE1s, donde nos los han confiado.`,`${enMadrid} of our ${pisos.length} homes are in Madrid. The rest, wherever owners trusted us with them.`))),__gh("div",{style:{gridArea:"lista"},"data-gufi-src":"sections/portada.tsx:752"},__gh("div",{className:"bq-mapa-lista",style:{marginTop:28,borderTop:`1px solid ${T.lineSoft}`},"data-gufi-src":"sections/portada.tsx:753"},primeras.map(c=>{let activa=c.clave===sel.clave;return __gh("button",{key:c.clave,type:"button",onMouseEnter:()=>setElegida(c.clave),onFocus:()=>setElegida(c.clave),onClick:()=>setElegida(c.clave),"aria-pressed":activa,className:`bq-mapa-ciudad${activa?" on":""}`,style:{width:"100%",display:"flex",alignItems:"center",gap:10,padding:"12px 0",background:"none",border:"none",borderBottom:`1px solid ${T.lineSoft}`,fontFamily:"inherit",fontSize:15.5,cursor:"pointer",textAlign:"left",color:activa?T.ink:T.muted,transition:"color 0.2s ease"},"data-gufi-src":"sections/portada.tsx:757"},__gh("span",{style:{width:7,height:7,borderRadius:"50%",flexShrink:0,background:activa?T.accent:"transparent",transition:"background 0.2s ease"},"data-gufi-src":"sections/portada.tsx:782"}),__gh("span",{style:{flex:1},"data-gufi-src":"sections/portada.tsx:792"},c.nombre),__gh("span",{style:{fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/portada.tsx:793"},c.n))}),resto>0&&__gh("div",{className:"bq-mapa-resto",style:{padding:"12px 0 0 17px",fontSize:14,color:T.muted},"data-gufi-src":"sections/portada.tsx:798"},resto===1?t("y 1 ciudad m\xE1s en el mapa","and 1 more city on the map"):t(`y ${resto} ciudades m\xE1s en el mapa`,`and ${resto} more cities on the map`)))),__gh("div",{style:{gridArea:"mapa"},className:"bq-mapa-pieza","data-gufi-src":"sections/portada.tsx:805"},__gh("svg",{viewBox:"0 0 760 600",role:"img","aria-label":t("Mapa de Espa\xF1a con los alojamientos de Batuecas por ciudad","Map of Spain with Batuecas homes by city"),style:{display:"block",width:"100%",height:"auto",overflow:"visible"},"data-gufi-src":"sections/portada.tsx:806"},__gh("defs",{"data-gufi-src":"sections/portada.tsx:812"},__gh("filter",{id:"bq-brillo",x:"-100%",y:"-100%",width:"300%",height:"300%","data-gufi-src":"sections/portada.tsx:813"},__gh("feGaussianBlur",{stdDeviation:"5","data-gufi-src":"sections/portada.tsx:814"}))),__gh("image",{href:MAPA_ESPANA,x:0,y:0,width:760,height:600,"data-gufi-src":"sections/portada.tsx:817"}),enMapa.slice(0,8).map(c=>{let b=burbujas.get(c.clave);return __gh("circle",{key:`l-${c.clave}`,className:"bq-late",cx:b.x,cy:b.y,r:radio(c.n),fill:T.accent,"data-gufi-src":"sections/portada.tsx:820"})}),enMapa.map(c=>{let b=burbujas.get(c.clave),activa=c.clave===sel.clave,r=radio(c.n);return __gh("g",{key:c.clave,className:"bq-punto",onMouseEnter:()=>setElegida(c.clave),onClick:()=>setElegida(c.clave),style:{transformBox:"fill-box",transformOrigin:"center",transform:activa?"scale(1.16)":"scale(1)",opacity:activa?1:.72},"data-gufi-src":"sections/portada.tsx:827"},__gh("title",{"data-gufi-src":"sections/portada.tsx:839"},`${c.nombre} \xB7 ${c.n} ${c.n===1?t("alojamiento","home"):t("alojamientos","homes")}`),__gh("circle",{cx:b.x,cy:b.y,r:r*1.15,fill:T.accent,opacity:activa?.22:.1,filter:"url(#bq-brillo)","data-gufi-src":"sections/portada.tsx:840"}),__gh("circle",{cx:b.x,cy:b.y,r,fill:T.accent,fillOpacity:activa?.2:.09,stroke:T.accent,strokeOpacity:activa?.9:.35,strokeWidth:1.2,"data-gufi-src":"sections/portada.tsx:841"}),__gh("circle",{cx:b.x,cy:b.y,r:(activa?5:3.6)*escala,fill:T.accent,stroke:"#fff",strokeWidth:(activa?2:1.2)*escala,"data-gufi-src":"sections/portada.tsx:842"}),__gh("circle",{cx:b.x,cy:b.y,r:Math.max(r,16),fill:"transparent","data-gufi-src":"sections/portada.tsx:844"}))}),selXY!==void 0&&[0,1].map(k=>__gh("circle",{key:`onda-${sel.clave}-${k}`,className:"bq-onda",cx:selXY.x,cy:selXY.y,r:radio(sel.n),fill:"none",stroke:T.accent,strokeWidth:1.4,style:{animationDelay:`${k*.22}s`},"data-gufi-src":"sections/portada.tsx:855"})),selXY!==void 0&&__gh("text",{key:`t-${sel.clave}`,className:"bq-etiqueta",x:selXY.x>560?selXY.x-radio(sel.n)-10:selXY.x+radio(sel.n)+10,y:selXY.y+6,textAnchor:selXY.x>560?"end":"start",style:{fontFamily:SANS,fontSize:estrecho?30:18,fontWeight:600,fill:T.ink,letterSpacing:"-0.01em",pointerEvents:"none",paintOrder:"stroke",stroke:"#fff",strokeWidth:estrecho?8:5,strokeLinejoin:"round"},"data-gufi-src":"sections/portada.tsx:868"},sel.nombre," ",__gh("tspan",{style:{fill:T.muted,fontWeight:500},"data-gufi-src":"sections/portada.tsx:876"},sel.n))),__gh("div",{style:{marginTop:22},"data-gufi-src":"sections/portada.tsx:881"},__gh("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:12,flexWrap:"wrap"},"data-gufi-src":"sections/portada.tsx:882"},__gh("span",{key:`c-${sel.clave}`,className:"bq-entra",style:{fontSize:15,color:T.ink,fontWeight:500},"data-gufi-src":"sections/portada.tsx:883"},sel.nombre," ",__gh("span",{style:{color:T.muted},"data-gufi-src":"sections/portada.tsx:884"},"\xB7 ",sel.n," ",sel.n===1?t("alojamiento","home"):t("alojamientos","homes"))),__gh("a",{href:`${url("/estancias-cortas")}?ciudad=${encodeURIComponent(sel.nombre)}`,className:"bq-flecha",style:ENLACE_SECCION,"data-gufi-src":"sections/portada.tsx:886"},sel.n===1?t("Verlo","See it"):sel.n===2?t("Ver los dos","See both"):t(`Ver los ${sel.n}`,`See all ${sel.n}`),__gh(import_lucide_react8.ArrowRight,{style:{width:15,height:15}}))),casas.length>0&&__gh("div",{key:`g-${sel.clave}`,className:"bq-mapa-casas",style:{marginTop:14,display:"grid",gridTemplateColumns:"repeat(3, minmax(0, 1fr))",gap:12},"data-gufi-src":"sections/portada.tsx:896"},casas.map((p,i)=>__gh("a",{key:p.id,href:url(`/${p.slug}`),className:"bq-card bq-entra",style:{display:"block",textDecoration:"none",color:T.ink,animationDelay:`${.06*i}s`},"data-gufi-src":"sections/portada.tsx:898"},__gh("div",{className:"bq-media",style:{borderRadius:14,aspectRatio:"4 / 3",background:T.surfaceAlt},"data-gufi-src":"sections/portada.tsx:904"},__gh("img",{src:fotoDe(p,"lg"),alt:titulo(p),loading:"lazy",sizes:"(max-width: 480px) calc(50vw - 26px), (max-width: 900px) calc(33vw - 22px), 220px","data-no-thumb":"true",style:{display:"block",width:"100%",height:"100%",objectFit:"cover"},"data-gufi-src":"sections/portada.tsx:905"})),__gh("div",{style:{marginTop:8,fontSize:13.5,lineHeight:1.35,color:T.ink},"data-gufi-src":"sections/portada.tsx:914"},titulo(p))))))))}var cabeceraSeccion={display:"flex",alignItems:"flex-end",justifyContent:"space-between",gap:16,flexWrap:"wrap",marginBottom:40},rejilla={display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(258px, 1fr))",gap:20},SIZES_REJILLA="(max-width: 620px) calc(100vw - 40px), (max-width: 850px) calc(50vw - 30px), 350px",tarjetaObra={display:"block",textDecoration:"none",color:"inherit"};var import_lucide_react9=require("lucide-react");var import_react9=require("react");var RITMO=.45;function Pasos({pasos}){let caja2=(0,import_react9.useRef)(null),[visto,setVisto]=(0,import_react9.useState)(!1);(0,import_react9.useEffect)(()=>{let el=caja2.current;if(el===null)return;let io=new IntersectionObserver(entradas=>{entradas.some(e=>e.isIntersecting)&&(setVisto(!0),io.disconnect())},{threshold:.4});return io.observe(el),()=>io.disconnect()},[]);let n=pasos.length;return __gh("ol",{ref:caja2,className:`bq-pasos${visto?" visto":""}`,style:{"--n":n,listStyle:"none",margin:"clamp(40px, 5vw, 64px) 0 0",padding:0,position:"relative",display:"grid",gridTemplateColumns:`repeat(${n}, minmax(0, 1fr))`,gap:28},"data-gufi-src":"components/Pasos.tsx:43"},__gh("span",{className:"bq-pasos-via","aria-hidden":"true","data-gufi-src":"components/Pasos.tsx:48"},__gh("span",{className:"bq-pasos-lleno","data-gufi-src":"components/Pasos.tsx:49"})),pasos.map((p,i)=>__gh("li",{key:p.t,className:"bq-paso",style:{"--i":i},"data-gufi-src":"components/Pasos.tsx:52"},__gh("span",{className:"bq-paso-punto","aria-hidden":"true","data-gufi-src":"components/Pasos.tsx:53"}),__gh("div",{className:"bq-paso-num","data-gufi-src":"components/Pasos.tsx:54"},String(i+1).padStart(2,"0")),__gh("div",{className:"bq-paso-texto","data-gufi-src":"components/Pasos.tsx:55"},__gh("div",{style:{marginTop:14,fontSize:21,fontWeight:500,letterSpacing:"-0.02em",color:T.ink},"data-gufi-src":"components/Pasos.tsx:56"},p.t),__gh("p",{style:{margin:"8px 0 0",fontSize:15.5,lineHeight:1.6,color:T.body},"data-gufi-src":"components/Pasos.tsx:57"},p.d)))),__gh("style",{"data-gufi-src":"components/Pasos.tsx:62"},` /* La v\xEDa va a la altura de los puntos; empieza en el primero y acaba en el \xFAltimo. */ .bq-pasos-via { position: absolute; top: 6px; left: 6px; right: calc((100% - 28px * (var(--n) - 1)) / var(--n) - 6px); height: 2px; border-radius: 2px; background: ${T.line}; overflow: hidden; } .bq-pasos-lleno { position: absolute; inset: 0; background: ${T.accent}; transform: scaleX(0); transform-origin: left center; transition: transform calc(${RITMO}s * (var(--n) - 1)) cubic-bezier(0.45, 0, 0.25, 1) 0.2s; } .bq-pasos.visto .bq-pasos-lleno { transform: scaleX(1); } .bq-paso { position: relative; padding-top: 34px; } .bq-paso-punto { position: absolute; top: 0; left: 0; width: 14px; height: 14px; border-radius: 50%; background: ${T.bg}; box-shadow: inset 0 0 0 2px ${T.line}; transition: background 0.35s ease, box-shadow 0.35s ease; transition-delay: calc(0.2s + ${RITMO}s * var(--i)); } .bq-paso-punto::after { content: ''; position: absolute; inset: 0; border-radius: 50%; box-shadow: 0 0 0 0 rgba(98, 18, 23, 0.35); opacity: 0; } .bq-pasos.visto .bq-paso-punto { background: ${T.accent}; box-shadow: inset 0 0 0 2px ${T.accent}; } .bq-pasos.visto .bq-paso-punto::after { animation: bq-paso-late 0.9s ease-out both; animation-delay: calc(0.2s + ${RITMO}s * var(--i)); } @keyframes bq-paso-late { 0% { opacity: 1; box-shadow: 0 0 0 0 rgba(98, 18, 23, 0.35); } 100% { opacity: 0; box-shadow: 0 0 0 14px rgba(98, 18, 23, 0); } } .bq-paso-num { font-size: clamp(52px, 6vw, 76px); line-height: 1; font-weight: 200; letter-spacing: -0.05em; color: ${T.line}; font-variant-numeric: tabular-nums; transition: color 0.6s ease; transition-delay: calc(0.2s + ${RITMO}s * var(--i)); } .bq-pasos.visto .bq-paso-num { color: ${T.accent}; } .bq-paso-texto { opacity: 0; transform: translateY(18px); filter: blur(4px); transition: opacity 0.7s ease, transform 0.8s cubic-bezier(0.16, 1, 0.3, 1), filter 0.7s ease; transition-delay: calc(0.3s + ${RITMO}s * var(--i)); } .bq-pasos.visto .bq-paso-texto { opacity: 1; transform: none; filter: none; } /* En el m\xF3vil, de arriba abajo con la v\xEDa a la izquierda. */ @media (max-width: 760px) { .bq-pasos { grid-template-columns: 1fr !important; gap: 34px !important; padding-left: 34px !important; } .bq-pasos-via { top: 6px; bottom: 6px; left: 6px; right: auto; width: 2px; height: auto; } .bq-pasos-lleno { transform: scaleY(0); transform-origin: center top; } .bq-pasos.visto .bq-pasos-lleno { transform: scaleY(1); } .bq-paso { padding-top: 0; } .bq-paso-punto { top: 18px; left: -34px; } } @media (prefers-reduced-motion: reduce) { .bq-pasos-lleno { transform: none !important; transition: none; } .bq-paso-punto { background: ${T.accent}; box-shadow: inset 0 0 0 2px ${T.accent}; transition: none; } .bq-paso-punto::after { display: none; } .bq-paso-num { color: ${T.accent}; transition: none; } .bq-paso-texto { opacity: 1; transform: none; filter: none; transition: none; } } `))}function Gestion({gufi,url,pisos,ciudades}){return __gh("div",{"data-gufi-src":"sections/gestion.tsx:72"},__gh(Cifras,{pisos,ciudades}),__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"sections/gestion.tsx:82"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"sections/gestion.tsx:83"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/gestion.tsx:84"},t("Lo que hacemos","What we do")),__gh("h2",{style:{...TITULO,marginTop:18,fontSize:"clamp(32px, 5vw, 60px)"},"data-gufi-src":"sections/gestion.tsx:85"},t("Todo.","Everything.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/gestion.tsx:87"},t("Desde la primera foto hasta la \xFAltima toalla.","From the first photo to the last towel.")))),__gh("div",{className:"bq-g-bento",style:{marginTop:"clamp(36px, 5vw, 56px)",display:"grid",gridTemplateColumns:"repeat(6, minmax(0, 1fr))",gap:16},"data-gufi-src":"sections/gestion.tsx:90"},__gh(Pieza,{bloque:BLOQUES[0],foto:fotoObra3("DUQUE-DE-ALBA"),ancho:4}),__gh(Pieza,{bloque:BLOQUES[1],grande:t("Cada d\xEDa","Every day"),tinte:TINTE,ancho:2}),__gh(Pieza,{bloque:BLOQUES[2],grande:"24/7",tinte:TINTE_2,ancho:2}),__gh(Pieza,{bloque:BLOQUES[3],foto:fotoObra3("PADRE-CLARET"),ancho:4}))),__gh("section",{style:{marginTop:AIRE,background:T.surfaceAlt},"data-gufi-src":"sections/gestion.tsx:99"},__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px`},"data-gufi-src":"sections/gestion.tsx:100"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"sections/gestion.tsx:101"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/gestion.tsx:102"},t("Sin preocupaciones","No worries")),__gh("h2",{style:{...TITULO,marginTop:18,fontSize:"clamp(32px, 5vw, 60px)",maxWidth:"18ch",marginLeft:"auto",marginRight:"auto"},"data-gufi-src":"sections/gestion.tsx:103"},t("Lo que te quita el sue\xF1o.","What keeps you up at night.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/gestion.tsx:105"},t("Resuelto antes de que pase.","Sorted before it happens.")))),__gh("div",{className:"bq-g-miedos",style:{marginTop:"clamp(36px, 5vw, 56px)",display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:16},"data-gufi-src":"sections/gestion.tsx:108"},MIEDOS.map(m=>__gh("div",{key:m.p,className:"bq-revela",style:{background:T.surface,borderRadius:28,padding:"clamp(26px, 3vw, 36px)"},"data-gufi-src":"sections/gestion.tsx:110"},__gh("div",{style:{fontSize:"clamp(21px, 2.2vw, 25px)",fontWeight:PESO_SECCION,letterSpacing:"-0.025em",lineHeight:1.2,color:T.ink},"data-gufi-src":"sections/gestion.tsx:111"},m.p),__gh("p",{style:{margin:"14px 0 0",fontSize:16,lineHeight:1.6,color:T.body},"data-gufi-src":"sections/gestion.tsx:114"},m.r)))))),__gh("section",{id:"tarifas",style:{scrollMarginTop:ALTO_MENU,maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"sections/gestion.tsx:122"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"sections/gestion.tsx:123"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/gestion.tsx:124"},t("Tarifas","Pricing")),__gh("h2",{style:{...TITULO,marginTop:18,fontSize:"clamp(32px, 5vw, 60px)"},"data-gufi-src":"sections/gestion.tsx:125"},t("Cobramos cuando t\xFA cobras.","We get paid when you do.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/gestion.tsx:127"},t("Un porcentaje de cada reserva.","A percentage of each booking."))),__gh("p",{style:{margin:"18px auto 0",maxWidth:560,fontSize:"clamp(16px, 1.6vw, 18px)",lineHeight:1.6,color:T.body},"data-gufi-src":"sections/gestion.tsx:129"},t("Son las tarifas con las que trabajamos hoy con la mayor\xEDa de las casas. El porcentaje final lo cerramos contigo despu\xE9s de ver la tuya. M\xE1s IVA.","These are the rates most of our homes are on today. We agree the final percentage with you after seeing yours. Plus VAT."))),__gh("div",{style:{marginTop:40,display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(270px, 1fr))",gap:16,alignItems:"stretch"},"data-gufi-src":"sections/gestion.tsx:136"},TARIFAS.map(tf=>__gh("div",{key:tf.nombre,className:"bq-revela",style:{background:tf.destacada?T.surface:T.surfaceAlt,border:`1px solid ${tf.destacada?T.accent:"transparent"}`,borderRadius:28,padding:"30px 28px 28px",display:"flex",flexDirection:"column",boxShadow:tf.destacada?"0 30px 60px -34px rgba(98,18,23,0.4)":"none"},"data-gufi-src":"sections/gestion.tsx:138"},__gh("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:10},"data-gufi-src":"sections/gestion.tsx:151"},__gh("span",{style:{fontSize:18,fontWeight:600,color:T.ink},"data-gufi-src":"sections/gestion.tsx:152"},tf.nombre),__gh("span",{style:{fontSize:13,color:T.muted},"data-gufi-src":"sections/gestion.tsx:153"},tf.casas)),__gh("div",{style:{marginTop:20,display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"},"data-gufi-src":"sections/gestion.tsx:155"},__gh("span",{style:{fontSize:"clamp(56px, 6.4vw, 76px)",lineHeight:.95,fontWeight:250,letterSpacing:"-0.05em",color:T.ink},"data-gufi-src":"sections/gestion.tsx:156"},tf.cifra),__gh("span",{style:{fontSize:15,color:T.body},"data-gufi-src":"sections/gestion.tsx:159"},tf.de)),__gh("p",{style:{margin:"16px 0 0",fontSize:15,lineHeight:1.55,color:T.body},"data-gufi-src":"sections/gestion.tsx:161"},tf.para),__gh("ul",{style:{listStyle:"none",margin:"18px 0 26px",padding:0,display:"grid",gap:9,flex:1},"data-gufi-src":"sections/gestion.tsx:162"},tf.lineas.map(l=>__gh("li",{key:l,style:{display:"grid",gridTemplateColumns:"18px 1fr",gap:8,fontSize:14.5,lineHeight:1.5,color:T.ink},"data-gufi-src":"sections/gestion.tsx:164"},__gh(import_lucide_react9.Check,{style:{width:15,height:15,color:T.accent,marginTop:3},strokeWidth:2.4}),l))),__gh("a",{href:"#contactanos",onClick:e=>bajarA(e,"contactanos"),className:"bq-boton",style:tf.destacada?BOTON:{...BOTON_CONTORNO,background:T.surface},"data-gufi-src":"sections/gestion.tsx:170"},tf.boton)))),__gh("div",{className:"bq-revela",style:{marginTop:16,background:TINTE_2,borderRadius:22,padding:"20px 24px",display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(220px, 1fr))",gap:"12px 24px"},"data-gufi-src":"sections/gestion.tsx:181"},EXTRAS.map(x=>__gh("div",{key:x.t,style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:12},"data-gufi-src":"sections/gestion.tsx:194"},__gh("span",{style:{fontSize:14.5,color:T.body},"data-gufi-src":"sections/gestion.tsx:195"},x.t),__gh("span",{style:{fontSize:15,fontWeight:600,color:T.ink,whiteSpace:"nowrap"},"data-gufi-src":"sections/gestion.tsx:196"},x.p))))),__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"sections/gestion.tsx:203"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"sections/gestion.tsx:204"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/gestion.tsx:205"},t("C\xF3mo empezamos","How we start")),__gh("h2",{style:{...TITULO,marginTop:18,fontSize:"clamp(32px, 5vw, 60px)"},"data-gufi-src":"sections/gestion.tsx:206"},t("Cuatro pasos.","Four steps.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/gestion.tsx:207"},t("El resto es cosa nuestra.","The rest is on us.")))),__gh(Pasos,{pasos:PASOS})),__gh("div",{style:{height:AIRE},"data-gufi-src":"sections/gestion.tsx:213"}),__gh(Contactanos,{gufi,origen:"gestion"}),__gh(WhatsApp,{texto:t("Hola, tengo una casa y me gustar\xEDa que la gestionarais.","Hi, I have a property and would like you to manage it.")}),__gh("style",{"data-gufi-src":"sections/gestion.tsx:218"},` .bq-g-pieza-foto img { transition: transform 1.1s cubic-bezier(0.16, 1, 0.3, 1); } .bq-g-pieza-foto:hover img { transform: scale(1.04); } @media (prefers-reduced-motion: reduce) { .bq-g-pieza-foto img { transition: none; } } @media (max-width: 900px) { .bq-g-bento > * { grid-column: span 6 !important; } .bq-g-miedos { grid-template-columns: 1fr !important; } } `))}function fotoObra3(clave){let o=OBRAS.find(x=>x.clave===clave);if(o===void 0)throw new Error(`Obra desconocida en /gestion: ${clave}`);return o.fotos[0]}function HeroGestion({url}){return __gh(HeroVideo,{medio:{video:GESTION_VIDEO,videoMovil:GESTION_VIDEO_MOVIL,poster:GESTION_POSTER},titulo:t("Tu casa rentando, t\xFA sin preocuparte","Your home earning, you worry-free"),subtitulo:t("Anuncios, precio diario, hu\xE9spedes, limpieza y mantenimiento. T\xFA cobras cada mes.","Listings, daily pricing, guests, cleaning and maintenance. You get paid every month."),botones:__gh(__gf,null,__gh(BotonHero,{href:url("/portal"),tono:"oscura"},t("Ya soy propietario","Already an owner")),__gh(BotonHero,{href:"#contactanos",tono:"clara",onClick:e=>bajarA(e,"contactanos")},t("Hablemos","Talk to us")))})}function Pieza({bloque,foto:foto2,grande,tinte,ancho}){let conFoto=foto2!==void 0;return __gh("div",{className:`bq-revela${conFoto?" bq-g-pieza-foto":""}`,style:{gridColumn:`span ${ancho}`,position:"relative",overflow:"hidden",borderRadius:28,minHeight:conFoto?440:0,background:conFoto?"#1a1512":tinte,color:conFoto?"#fff":T.ink,display:"flex",flexDirection:"column",justifyContent:conFoto?"flex-end":"flex-start"},"data-gufi-src":"sections/gestion.tsx:292"},conFoto&&__gh(__gf,null,__gh("img",{src:foto2,alt:"","aria-hidden":"true",loading:"lazy",sizes:"(max-width: 900px) 100vw, 780px",style:{position:"absolute",inset:0,width:"100%",height:"100%",objectFit:"cover"},"data-gufi-src":"sections/gestion.tsx:309"}),__gh("div",{"aria-hidden":"true",style:{position:"absolute",inset:0,background:"linear-gradient(180deg, rgba(14,10,8,0) 30%, rgba(14,10,8,0.78) 100%)"},"data-gufi-src":"sections/gestion.tsx:317"})),__gh("div",{style:{position:"relative",padding:"clamp(24px, 3vw, 34px)"},"data-gufi-src":"sections/gestion.tsx:323"},grande!==void 0&&__gh("div",{style:{fontSize:"clamp(54px, 6vw, 80px)",lineHeight:.95,fontWeight:250,letterSpacing:"-0.05em",color:T.accent,marginBottom:22},"data-gufi-src":"sections/gestion.tsx:325"},grande),__gh("div",{style:{fontSize:13,fontWeight:600,color:conFoto?T.dorado:T.accent},"data-gufi-src":"sections/gestion.tsx:329"},bloque.antes),__gh("h3",{style:{margin:"8px 0 0",fontSize:"clamp(23px, 2.4vw, 28px)",lineHeight:1.15,fontWeight:PESO_SECCION,letterSpacing:"-0.025em"},"data-gufi-src":"sections/gestion.tsx:330"},bloque.titulo),__gh("ul",{style:{listStyle:"none",margin:"16px 0 0",padding:0,display:"grid",gap:10},"data-gufi-src":"sections/gestion.tsx:333"},bloque.items.map(it=>__gh("li",{key:it.t,style:{display:"grid",gridTemplateColumns:"18px 1fr",gap:10},"data-gufi-src":"sections/gestion.tsx:335"},__gh(import_lucide_react9.Check,{style:{width:16,height:16,color:conFoto?"#fff":T.accent,marginTop:3},strokeWidth:2.4}),__gh("span",{"data-gufi-src":"sections/gestion.tsx:337"},__gh("span",{style:{display:"block",fontSize:15.5,fontWeight:600},"data-gufi-src":"sections/gestion.tsx:338"},it.t),__gh("span",{style:{display:"block",marginTop:2,fontSize:14.5,lineHeight:1.5,color:conFoto?"rgba(255,255,255,0.8)":T.body},"data-gufi-src":"sections/gestion.tsx:339"},it.d)))))))}var TINTE="linear-gradient(158deg, #F6EAEA 0%, #F6EFE8 48%, #F4F0DC 100%)",TINTE_2="linear-gradient(158deg, #F3EBE6 0%, #F6EEEA 52%, #F2EEDC 100%)",BLOQUES=[{antes:t("Tu anuncio","Your listing"),titulo:t("Que se vea y se reserve","Seen and booked"),items:[{t:t("Anuncios en Airbnb y Booking","Airbnb and Booking listings"),d:t("Los creamos, los escribimos y los mantenemos al d\xEDa.","We create them, write them and keep them up to date.")},{t:t("Fotograf\xEDa profesional","Professional photography"),d:t("La foto es lo primero que se mira, y lo que decide.","The photo is the first thing people look at, and what decides.")},{t:t("Home staging","Home staging"),d:t("La dejamos lista para que apetezca quedarse.","We get it ready so people want to stay.")}]},{antes:t("Tu precio","Your price"),titulo:t("Ni vac\xEDa ni regalada","Never empty, never given away"),items:[{t:t("Estrategia de precios","Pricing strategy"),d:t("El precio se mueve cada d\xEDa con la demanda de tu zona.","The price moves every day with demand in your area.")},{t:t("Gesti\xF3n de reservas","Booking management"),d:t("Todas, de todos los canales, en un solo calendario.","Every booking, from every channel, in one calendar.")},{t:t("Hu\xE9spedes verificados","Verified guests"),d:t("Antes de que lleguen, sabemos qui\xE9n viene.","Before they arrive, we know who is coming.")}]},{antes:t("Tus hu\xE9spedes","Your guests"),titulo:t("Atendidos a cualquier hora","Looked after at any hour"),items:[{t:t("Mensajes 24/7","Messages 24/7"),d:t("Contestamos nosotros, en su idioma y a la hora que sea.","We answer, in their language, at any time.")},{t:t("Atenci\xF3n en la estancia","Support during the stay"),d:t("Si algo falla, alguien va. No tu tel\xE9fono.","If something fails, someone goes. Not your phone.")},{t:t("Registro de viajeros","Guest registration"),d:t("El parte a la polic\xEDa de cada reserva, hecho.","The police report for every booking, done.")}]},{antes:t("Tu casa","Your home"),titulo:t("Como el primer d\xEDa","Like the first day"),items:[{t:t("Limpieza en cada salida","Cleaning after every checkout"),d:t("Con productos profesionales y revisi\xF3n de roturas.","With professional products and a check for breakages.")},{t:t("Lavander\xEDa profesional","Professional laundry"),d:t("S\xE1banas y toallas lavadas fuera, siempre impecables.","Sheets and towels laundered off-site, always spotless.")},{t:t("Mantenimiento","Maintenance"),d:t("Lo que se rompe se arregla, y te enteras con la factura.","Whatever breaks gets fixed, and you see it on the invoice.")}]}],MIEDOS=[{p:t("\xBFY si no se alquila?","What if it does not get booked?"),r:t("Le cambiamos el precio cada d\xEDa seg\xFAn c\xF3mo se llena tu zona, y est\xE1 a la vez en Airbnb, Booking y nuestra web. Y si prefieres no depender de turistas, tambi\xE9n la alquilamos todo el a\xF1o.","We adjust the price every day to how your area is filling up, and it is on Airbnb, Booking and our website at once. And if you would rather not depend on tourists, we also rent it out long-term.")},{p:t("\xBFY si me la destrozan?","What if they wreck it?"),r:t("Sabemos qui\xE9n entra antes de que llegue. Y despu\xE9s de cada salida entra el equipo de limpieza: si algo se ha roto, lo sabemos ese mismo d\xEDa y se arregla.","We know who is coming before they arrive. And after every checkout the cleaning team goes in: if something is broken, we know that same day and it gets fixed.")},{p:t("\xBFY todo el papeleo?","What about the paperwork?"),r:t("El registro de viajeros en la polic\xEDa, los mensajes, las incidencias y las facturas son cosa nuestra. T\xFA no rellenas nada.","Guest registration with the police, messages, incidents and invoices are on us. You fill in nothing.")},{p:t("\xBFC\xF3mo s\xE9 lo que pasa en mi casa?","How do I know what is happening in my home?"),r:t("Tienes tu \xE1rea de propietario con cada reserva, lo cobrado y lo gastado, y cada mes una liquidaci\xF3n con su factura, l\xEDnea a l\xEDnea.","You have your owner area with every booking, what came in and what was spent, and a monthly statement with its invoice, line by line.")}],TARIFAS=[{nombre:"Silver",casas:t("La de 156 casas","On 156 homes"),cifra:"20 %",de:t("de las noches","of nightly revenue"),para:t("T\xFA te llevas el 80 % de lo que paga el hu\xE9sped por dormir. La limpieza la paga \xE9l aparte.","You keep 80% of what the guest pays for the nights. The guest pays for cleaning separately."),lineas:[t("Todo lo de arriba, incluido","Everything above, included"),t("La limpieza no sale de tu bolsillo","Cleaning does not come out of your pocket"),t("Liquidaci\xF3n mensual con factura","Monthly statement with invoice")],boton:t("Quiero la Silver","I want Silver"),destacada:!0},{nombre:"Golden",casas:t("La de 92 casas","On 92 homes"),cifra:"30 %",de:t("de las noches y la limpieza","of nights and cleaning"),para:t("Un porcentaje de todo lo que paga el hu\xE9sped, limpieza incluida. T\xFA te llevas el 70 % de todo.","A percentage of everything the guest pays, cleaning included. You keep 70% of it all."),lineas:[t("Todo lo de arriba, incluido","Everything above, included"),t("Un solo porcentaje para todo","One percentage for everything"),t("Liquidaci\xF3n mensual con factura","Monthly statement with invoice")],boton:t("Quiero la Golden","I want Golden"),destacada:!1},{nombre:t("Todo el a\xF1o","All year"),casas:t("Alquiler tradicional","Long-term rental"),cifra:t("50 \u20AC","\u20AC50"),de:t("al mes, desde","a month, from"),para:t("Si prefieres un inquilino fijo: lo buscamos, lo ense\xF1amos y llevamos el alquiler.","If you prefer a long-term tenant: we find them, show the home and run the rental."),lineas:[t("Visitas y selecci\xF3n del inquilino","Viewings and tenant selection"),t("Contrato y firma","Contract and signing"),t("Incidencias durante el alquiler","Issues during the tenancy")],boton:t("Alquilarla todo el a\xF1o","Rent it out long-term"),destacada:!1}],EXTRAS=[{t:t("Fotograf\xEDas profesionales, una vez","Professional photos, one-off"),p:t("150 \u20AC","\u20AC150")},{t:t("Gestiones fuera del alquiler tur\xEDstico","Tasks outside holiday rentals"),p:t("25 \u20AC cada una","\u20AC25 each")},{t:t("Reparaciones y compras para la casa","Repairs and purchases for the home"),p:t("coste + 30 %","cost + 30%")}],PASOS=[{t:t("Nos cuentas c\xF3mo es","You tell us about it"),d:t("Por el formulario, por WhatsApp o por tel\xE9fono. Te decimos lo que puede dar mirando pisos como el tuyo.","Through the form, on WhatsApp or by phone. We tell you what it could earn by looking at homes like yours.")},{t:t("Vamos a verla","We visit it"),d:t("Te decimos qu\xE9 le falta. Si hay que reformar, lo hacemos nosotros: llevamos 16 obras.","We tell you what it needs. If it needs renovating, we do it ourselves: 16 projects so far.")},{t:t("La ponemos a punto","We get it ready"),d:t("Fotos, anuncio y precio. La publicamos en todos los canales a la vez.","Photos, listing and price. We publish it on every channel at once.")},{t:t("Empiezan las reservas","Bookings start"),d:t("T\xFA las ves en tu \xE1rea de propietario y cobras cada mes, con factura.","You see them in your owner area and get paid every month, with an invoice.")}];var import_react14=require("react");var import_react10=require("react"),import_lucide_react10=require("lucide-react");var SEMANA=IDIOMA==="en"?["Mo","Tu","We","Th","Fr","Sa","Su"]:["L","M","X","J","V","S","D"],MESES2=IDIOMA==="en"?["January","February","March","April","May","June","July","August","September","October","November","December"]:["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],hoyMadrid=()=>new Date().toLocaleDateString("sv-SE",{timeZone:"Europe/Madrid"}),sumaDias=(dia,n)=>{let d2=new Date(dia+"T12:00:00Z");return d2.setUTCDate(d2.getUTCDate()+n),d2.toISOString().slice(0,10)},noches=(a,b)=>Math.round((Date.parse(b+"T12:00:00Z")-Date.parse(a+"T12:00:00Z"))/864e5),diaCorto=dia=>{let d2=new Date(dia+"T12:00:00Z");return`${d2.getUTCDate()} ${MESES2[d2.getUTCMonth()].slice(0,3)}`},diaValido=v=>v&&/^\d{4}-\d{2}-\d{2}$/.test(v)&&v>=hoyMadrid()?v:null;function useEstrecho(ancho=700){let[estrecho,setEstrecho]=(0,import_react10.useState)(()=>typeof window<"u"&&window.innerWidth{let mirar=()=>setEstrecho(window.innerWidthwindow.removeEventListener("resize",mirar)},[ancho]),estrecho}function Calendario({dias,entrada:entrada3,salida,onCambio,meses=2,hasta}){let hoy2=hoyMadrid(),limite=hasta||sumaDias(hoy2,365),libre=d2=>dias?!!dias[d2]?.libre:!0,cabe=d2=>{if(!dias)return!0;let m=Number(dias[d2]?.min)||1;for(let i=0;ientrada3?entrada3.slice(0,7):((dias?Object.keys(dias).sort().find(d2=>d2>=hoy2&&libre(d2)&&cabe(d2)):void 0)||hoy2).slice(0,7));(0,import_react10.useEffect)(()=>{entrada3&&setInicio(entrada3.slice(0,7))},[entrada3]);let[encima,setEncima]=(0,import_react10.useState)(null),tope=(0,import_react10.useMemo)(()=>{if(!entrada3||salida)return null;let d2=sumaDias(entrada3,1);for(;d2<=limite&&libre(d2);)d2=sumaDias(d2,1);return d2},[entrada3,salida,dias,limite]),minimo=entrada3&&dias?.[entrada3]?.min?Number(dias[entrada3].min):1,tocar=d2=>{if(entrada3&&!salida&&d2>entrada3&&tope&&d2<=tope){if(noches(entrada3,d2)=hoy2&&libre(d2)&&cabe(d2)&&onCambio(d2,null)},mesesVistos=Array.from({length:meses},(_,i)=>{let[y,m]=inicio.split("-").map(Number),f=new Date(Date.UTC(y,m-1+i,1));return{y:f.getUTCFullYear(),m:f.getUTCMonth()}}),mover=n=>{let[y,m]=inicio.split("-").map(Number),f=new Date(Date.UTC(y,m-1+n,1));setInicio(f.toISOString().slice(0,7))},puedeAtras=inicio>hoy2.slice(0,7),puedeAdelante=`${mesesVistos[mesesVistos.length-1].y}-${String(mesesVistos[mesesVistos.length-1].m+1).padStart(2,"0")}`entrada3&&tope&&encima<=tope?encima:null);return __gh("div",{style:{userSelect:"none"},"data-gufi-src":"components/Calendario.tsx:125"},__gh("div",{style:{display:"grid",gridTemplateColumns:`repeat(${meses}, minmax(0, 1fr))`,gap:28,position:"relative"},"data-gufi-src":"components/Calendario.tsx:126"},__gh("button",{type:"button","aria-label":t("Mes anterior","Previous month"),onClick:()=>mover(-1),disabled:!puedeAtras,style:{...flecha,left:0,opacity:puedeAtras?1:.25},"data-gufi-src":"components/Calendario.tsx:127"},__gh(import_lucide_react10.ChevronLeft,{style:{width:16,height:16}})),__gh("button",{type:"button","aria-label":t("Mes siguiente","Next month"),onClick:()=>mover(1),disabled:!puedeAdelante,style:{...flecha,right:0,opacity:puedeAdelante?1:.25},"data-gufi-src":"components/Calendario.tsx:130"},__gh(import_lucide_react10.ChevronRight,{style:{width:16,height:16}})),mesesVistos.map(({y,m})=>{let huecos=(new Date(Date.UTC(y,m,1)).getUTCDay()+6)%7,total=new Date(Date.UTC(y,m+1,0)).getUTCDate(),celdas=[...Array(huecos).fill(null),...Array.from({length:total},(_,i)=>`${y}-${String(m+1).padStart(2,"0")}-${String(i+1).padStart(2,"0")}`)];return __gh("div",{key:`${y}-${m}`,"data-gufi-src":"components/Calendario.tsx:139"},__gh("div",{style:{textAlign:"center",fontSize:15,fontWeight:600,color:T.ink,height:32,lineHeight:"32px",textTransform:"capitalize"},"data-gufi-src":"components/Calendario.tsx:140"},MESES2[m]," ",y),__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(7, minmax(0, 1fr))",marginTop:8},"data-gufi-src":"components/Calendario.tsx:143"},SEMANA.map(s=>__gh("div",{key:s,style:{textAlign:"center",fontSize:11.5,color:T.muted,fontWeight:600,paddingBottom:6},"data-gufi-src":"components/Calendario.tsx:145"},s)),celdas.map((d2,i)=>{if(!d2)return __gh("div",{key:"v"+i,"data-gufi-src":"components/Calendario.tsx:148"});let pasado=d2limite,esEntrada=d2===entrada3,esSalida=d2===salida,enRango=!!(entrada3&&finRango&&d2>entrada3&&d2entrada3&&d2<=tope&&noches(entrada3,d2)>=minimo),corto2=!!(entrada3&&!salida&&tope&&d2>entrada3&&d2<=tope&&noches(entrada3,d2)tocar(d2),onMouseEnter:()=>setEncima(d2),onMouseLeave:()=>setEncima(null),title:corto2?t(`M\xEDnimo ${minimo} noches`,`Minimum ${minimo} nights`):ocupado?t("Ocupado","Booked"):sinSalida?t(`Desde este d\xEDa, m\xEDnimo ${dias?.[d2]?.min} noches`,`From this day, minimum ${dias?.[d2]?.min} nights`):void 0,style:{position:"relative",height:dias?50:42,padding:0,border:"none",fontFamily:"inherit",cursor:elegible?"pointer":"default",background:enRango?T.surfaceAlt:"transparent",borderRadius:0},"data-gufi-src":"components/Calendario.tsx:164"},__gh("span",{style:{display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",margin:"0 auto",width:"100%",maxWidth:dias?46:40,height:dias?46:40,borderRadius:999,background:marcado?T.ink:"transparent",border:!marcado&&elegible&&encima===d2?`1px solid ${T.ink}`:"1px solid transparent",color:marcado?"#fff":pasado||ocupado||corto2||sinSalida?"#c9c5ba":T.ink,textDecoration:ocupado?"line-through":"none",boxSizing:"border-box"},"data-gufi-src":"components/Calendario.tsx:183"},__gh("span",{style:{fontSize:14,fontWeight:marcado?600:500,lineHeight:1.1},"data-gufi-src":"components/Calendario.tsx:201"},Number(d2.slice(8))),precio2!=null&&!pasado&&__gh("span",{style:{fontSize:10,lineHeight:1.2,color:marcado?"rgba(255,255,255,0.8)":T.muted,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/Calendario.tsx:203"},Math.round(precio2))))})))})),entrada3&&!salida&&minimo>1&&__gh("p",{style:{margin:"12px 0 0",fontSize:13,color:T.body},"data-gufi-src":"components/Calendario.tsx:217"},t(`Desde el ${diaCorto(entrada3)}, m\xEDnimo ${minimo} noches.`,`From ${diaCorto(entrada3)}, minimum ${minimo} nights.`)))}var flecha={position:"absolute",top:0,zIndex:1,width:32,height:32,borderRadius:999,border:`1px solid ${T.line}`,background:T.surface,color:T.ink,display:"grid",placeItems:"center",cursor:"pointer",padding:0};var import_react12=require("react"),import_lucide_react12=require("lucide-react");var import_react11=__toESM(require("react")),import_lucide_react11=require("lucide-react");var SIN_BUSQUEDA={comunidad:"",ciudad:"",entrada:null,salida:null,huespedes:0};function textoDestino(v){return v.ciudad||v.comunidad}function Buscador({gufi,valor,onCambio,destinos:grupos,estrecho}){let[panel,setPanel]=(0,import_react11.useState)(null),caja2=(0,import_react11.useRef)(null);(0,import_react11.useEffect)(()=>{if(!panel||estrecho)return;let fuera=e=>{caja2.current&&!caja2.current.contains(e.target)&&setPanel(null)},esc=e=>e.key==="Escape"&&setPanel(null);return document.addEventListener("mousedown",fuera),document.addEventListener("keydown",esc),()=>{document.removeEventListener("mousedown",fuera),document.removeEventListener("keydown",esc)}},[panel,estrecho]);let fijar=parcial=>onCambio({...valor,...parcial}),textoDonde=textoDestino(valor)||t("Cualquier destino","Anywhere"),textoHuespedes=valor.huespedes>0?`${valor.huespedes} ${valor.huespedes===1?t("hu\xE9sped","guest"):t("hu\xE9spedes","guests")}`:t("Cu\xE1ntos sois","Add guests"),elegir=(comunidad,ciudad)=>{fijar({comunidad,ciudad}),estrecho||setPanel("fechas")},hasta=sumaDias(hoyMadrid(),179),destinos=__gh("div",{style:{display:"grid",gap:2},"data-gufi-src":"components/estancias/Buscador.tsx:77"},__gh(Destino,{activo:!valor.comunidad&&!valor.ciudad,onClick:()=>elegir("",""),nombre:t("Cualquier destino","Anywhere"),n:grupos.reduce((s,g)=>s+g.n,0)}),grupos.map(g=>g.sitios.length===1?__gh(Destino,{key:g.comunidad,activo:valor.ciudad===g.sitios[0][0],onClick:()=>elegir(g.comunidad,g.sitios[0][0]),nombre:g.sitios[0][0],region:g.comunidad,n:g.n}):__gh(import_react11.default.Fragment,{key:g.comunidad},__gh(Destino,{activo:valor.comunidad===g.comunidad&&!valor.ciudad,onClick:()=>elegir(g.comunidad,""),nombre:g.comunidad,n:g.n,grupo:!0}),g.sitios.map(([c,n])=>__gh(Destino,{key:c,activo:valor.ciudad===c,onClick:()=>elegir(g.comunidad,c),nombre:c,n,sangria:!0}))))),calendario=__gh(Calendario,{entrada:valor.entrada,salida:valor.salida,onCambio:(e,s)=>{fijar({entrada:e,salida:s}),e&&s&&!estrecho&&setPanel("huespedes")},meses:estrecho?1:2,hasta}),huespedes=__gh("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:20},"data-gufi-src":"components/estancias/Buscador.tsx:106"},__gh("div",{"data-gufi-src":"components/estancias/Buscador.tsx:107"},__gh("div",{style:{fontSize:16,fontWeight:600,color:A.ink},"data-gufi-src":"components/estancias/Buscador.tsx:108"},t("Hu\xE9spedes","Guests")),__gh("div",{style:{fontSize:14,color:A.muted,marginTop:2},"data-gufi-src":"components/estancias/Buscador.tsx:109"},t("Contando ni\xF1os; los beb\xE9s no cuentan","Including children; babies don\u2019t count"))),__gh(Contador,{n:valor.huespedes,min:0,max:16,onCambio:n=>fijar({huespedes:n})}));return estrecho?__gh(__gf,null,__gh("button",{type:"button",onClick:()=>setPanel("donde"),style:pildoraMovil,"data-gufi-src":"components/estancias/Buscador.tsx:118"},__gh(import_lucide_react11.Search,{style:{width:18,height:18,color:A.ink,flexShrink:0},strokeWidth:2.4}),__gh("span",{style:{display:"grid",textAlign:"left",minWidth:0},"data-gufi-src":"components/estancias/Buscador.tsx:120"},__gh("span",{style:{fontSize:15,fontWeight:600,color:A.ink},"data-gufi-src":"components/estancias/Buscador.tsx:121"},textoDestino(valor)||t("\xBFAd\xF3nde vas?","Where to?")),__gh("span",{style:{fontSize:13,color:A.muted},"data-gufi-src":"components/estancias/Buscador.tsx:122"},valor.entrada&&valor.salida?`${diaCorto(valor.entrada)} \u2013 ${diaCorto(valor.salida)}`:t("Cualquier fecha","Any dates")," \xB7 ",textoHuespedes))),__gh(gufi.Dialog,{open:panel!==null,onClose:()=>setPanel(null),title:t("Buscar estancia","Find a stay"),footer:__gh("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,width:"100%"},"data-gufi-src":"components/estancias/Buscador.tsx:132"},__gh("button",{type:"button",onClick:()=>onCambio(SIN_BUSQUEDA),style:borrar,"data-gufi-src":"components/estancias/Buscador.tsx:133"},t("Borrar todo","Clear all")),__gh("button",{type:"button",onClick:()=>setPanel(null),className:"bx-boton",style:botonVerde,"data-gufi-src":"components/estancias/Buscador.tsx:136"},__gh(import_lucide_react11.Search,{style:{width:16,height:16},strokeWidth:2.4}),t("Buscar","Search")))},__gh(Bloque,{titulo:t("D\xF3nde","Where"),abierto:panel==="donde",resumen:textoDonde,onAbrir:()=>setPanel("donde")},destinos),__gh(Bloque,{titulo:t("Cu\xE1ndo","When"),abierto:panel==="fechas",resumen:valor.entrada&&valor.salida?`${diaCorto(valor.entrada)} \u2013 ${diaCorto(valor.salida)}`:t("Cualquier fecha","Any dates"),onAbrir:()=>setPanel("fechas")},calendario),__gh(Bloque,{titulo:t("Qui\xE9n","Who"),abierto:panel==="huespedes",resumen:textoHuespedes,onAbrir:()=>setPanel("huespedes")},huespedes))):__gh("div",{ref:caja2,style:{position:"relative",maxWidth:860,margin:"0 auto"},"data-gufi-src":"components/estancias/Buscador.tsx:163"},__gh("div",{style:{display:"grid",gridTemplateColumns:"1.35fr 1fr 1fr 1.15fr",alignItems:"center",background:panel?A.alt:A.bg,border:`1px solid ${A.hair}`,borderRadius:999,boxShadow:A.sombra,transition:"background 0.2s"},"data-gufi-src":"components/estancias/Buscador.tsx:164"},__gh(Trozo,{etiqueta:t("Destino","Where"),texto:textoDonde,lleno:textoDestino(valor)!=="",abierto:panel==="donde",onClick:()=>setPanel(panel==="donde"?null:"donde")}),__gh(Trozo,{etiqueta:t("Llegada","Check-in"),texto:valor.entrada?diaCorto(valor.entrada):t("Cu\xE1ndo llegas","Add date"),lleno:!!valor.entrada,abierto:panel==="fechas"&&!valor.entrada,onClick:()=>setPanel(panel==="fechas"?null:"fechas")}),__gh(Trozo,{etiqueta:t("Salida","Check-out"),texto:valor.salida?diaCorto(valor.salida):t("Cu\xE1ndo te vas","Add date"),lleno:!!valor.salida,abierto:panel==="fechas"&&!!valor.entrada,onClick:()=>setPanel(panel==="fechas"?null:"fechas")}),__gh("div",{style:{display:"flex",alignItems:"center",gap:8,paddingRight:8},"data-gufi-src":"components/estancias/Buscador.tsx:191"},__gh(Trozo,{etiqueta:t("Hu\xE9spedes","Guests"),texto:textoHuespedes,lleno:valor.huespedes>0,abierto:panel==="huespedes",onClick:()=>setPanel(panel==="huespedes"?null:"huespedes")}),__gh("button",{type:"button","aria-label":t("Buscar","Search"),onClick:()=>setPanel(null),className:"bx-boton",style:lupa,"data-gufi-src":"components/estancias/Buscador.tsx:193"},__gh(import_lucide_react11.Search,{style:{width:18,height:18},strokeWidth:2.6})))),panel&&__gh("div",{role:"dialog",style:{position:"absolute",zIndex:30,top:"calc(100% + 12px)",left:panel==="donde"?0:panel==="huespedes"?void 0:"50%",right:panel==="huespedes"?0:void 0,transform:panel==="fechas"?"translateX(-50%)":void 0,width:panel==="fechas"?"min(760px, calc(100vw - 40px))":panel==="donde"?360:380,maxHeight:panel==="donde"?420:void 0,overflowY:panel==="donde"?"auto":void 0,background:A.bg,borderRadius:28,boxShadow:A.sombraFuerte,border:`1px solid ${A.hair}`,padding:panel==="donde"?12:28},"data-gufi-src":"components/estancias/Buscador.tsx:200"},panel==="donde"&&destinos,panel==="fechas"&&__gh(__gf,null,calendario,__gh("div",{style:{marginTop:16,display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},"data-gufi-src":"components/estancias/Buscador.tsx:223"},__gh("span",{style:{fontSize:14,color:A.muted},"data-gufi-src":"components/estancias/Buscador.tsx:224"},valor.entrada?valor.salida?t("Listo. Puedes cambiarlas tocando otro d\xEDa.","Done. Tap another day to change them."):t("Ahora el d\xEDa que te vas","Now your check-out day"):t("Toca el d\xEDa que llegas","Tap your check-in day")),valor.entrada&&__gh("button",{type:"button",onClick:()=>fijar({entrada:null,salida:null}),style:borrar,"data-gufi-src":"components/estancias/Buscador.tsx:226"},t("Borrar fechas","Clear dates")))),panel==="huespedes"&&huespedes))}function Trozo({etiqueta:etiqueta4,texto,lleno,abierto,onClick}){return __gh("button",{type:"button",onClick,className:abierto?void 0:"bx-trozo",style:{flex:1,minWidth:0,textAlign:"left",padding:"14px 26px",border:"none",borderRadius:999,background:abierto?A.bg:"transparent",boxShadow:abierto?A.sombra:"none",fontFamily:"inherit",cursor:"pointer"},"data-gufi-src":"components/estancias/Buscador.tsx:242"},__gh("span",{style:{display:"block",fontSize:12.5,fontWeight:600,color:A.ink},"data-gufi-src":"components/estancias/Buscador.tsx:259"},etiqueta4),__gh("span",{style:{display:"block",marginTop:2,fontSize:14.5,color:lleno?A.ink:A.muted,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},"data-gufi-src":"components/estancias/Buscador.tsx:260"},texto))}function Destino({nombre,n,activo,onClick,grupo,sangria,region}){return __gh("button",{type:"button",onClick,className:"bx-fila",style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,width:"100%",padding:sangria?"9px 14px 9px 30px":"12px 14px",marginTop:grupo?6:0,border:"none",borderRadius:14,background:activo?A.alt:"transparent",fontFamily:"inherit",fontSize:sangria?15:15.5,fontWeight:activo||grupo?600:400,color:sangria?A.body:A.ink,cursor:"pointer",textAlign:"left"},"data-gufi-src":"components/estancias/Buscador.tsx:271"},__gh("span",{"data-gufi-src":"components/estancias/Buscador.tsx:294"},nombre,region&&__gh("span",{style:{fontWeight:400,color:A.muted},"data-gufi-src":"components/estancias/Buscador.tsx:296"}," \xB7 ",region)),__gh("span",{style:{fontSize:14,color:A.muted,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/estancias/Buscador.tsx:298"},n))}function Contador({n,min,max,onCambio}){return __gh("span",{style:{display:"inline-flex",alignItems:"center",gap:14},"data-gufi-src":"components/estancias/Buscador.tsx:305"},__gh("button",{type:"button","aria-label":t("Uno menos","One fewer"),disabled:n<=min,onClick:()=>onCambio(n-1),style:{...menosMas,opacity:n<=min?.3:1},"data-gufi-src":"components/estancias/Buscador.tsx:306"},__gh(import_lucide_react11.Minus,{style:{width:14,height:14}})),__gh("span",{style:{minWidth:18,textAlign:"center",fontSize:16,color:A.ink,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/estancias/Buscador.tsx:309"},n),__gh("button",{type:"button","aria-label":t("Uno m\xE1s","One more"),disabled:n>=max,onClick:()=>onCambio(n+1),style:{...menosMas,opacity:n>=max?.3:1},"data-gufi-src":"components/estancias/Buscador.tsx:310"},__gh(import_lucide_react11.Plus,{style:{width:14,height:14}})))}function Bloque({titulo:titulo3,abierto,resumen,onAbrir,children}){return __gh("div",{style:{marginBottom:12,background:A.bg,borderRadius:22,border:`1px solid ${A.hair}`,boxShadow:abierto?A.sombra:"none",overflow:"hidden"},"data-gufi-src":"components/estancias/Buscador.tsx:320"},abierto?__gh("div",{style:{padding:20},"data-gufi-src":"components/estancias/Buscador.tsx:322"},__gh("div",{style:{fontSize:22,fontWeight:600,letterSpacing:"-0.02em",color:A.ink,marginBottom:14},"data-gufi-src":"components/estancias/Buscador.tsx:323"},titulo3),children):__gh("button",{type:"button",onClick:onAbrir,style:{display:"flex",justifyContent:"space-between",alignItems:"center",gap:12,width:"100%",padding:"18px 20px",border:"none",background:"none",fontFamily:"inherit",cursor:"pointer"},"data-gufi-src":"components/estancias/Buscador.tsx:327"},__gh("span",{style:{fontSize:15,color:A.muted},"data-gufi-src":"components/estancias/Buscador.tsx:328"},titulo3),__gh("span",{style:{fontSize:15,fontWeight:600,color:A.ink},"data-gufi-src":"components/estancias/Buscador.tsx:329"},resumen)))}var lupa={width:50,height:50,flexShrink:0,borderRadius:"50%",border:"none",background:A.accent,color:"#fff",display:"grid",placeItems:"center",cursor:"pointer",padding:0},pildoraMovil={display:"flex",alignItems:"center",gap:14,width:"100%",padding:"12px 22px",borderRadius:999,border:`1px solid ${A.hair}`,background:A.bg,boxShadow:A.sombra,fontFamily:"inherit",cursor:"pointer"},menosMas={width:32,height:32,borderRadius:"50%",border:`1px solid ${A.line}`,background:A.bg,color:A.ink,display:"grid",placeItems:"center",cursor:"pointer",padding:0},botonVerde={display:"inline-flex",alignItems:"center",justifyContent:"center",gap:8,height:48,padding:"0 24px",borderRadius:14,border:"none",background:A.accent,color:"#fff",fontFamily:"inherit",fontSize:16,fontWeight:600,cursor:"pointer"},borrar={padding:0,border:"none",background:"none",fontFamily:"inherit",fontSize:15,fontWeight:600,color:A.ink,textDecoration:"underline",textUnderlineOffset:3,cursor:"pointer"};var SIN_BUSQUEDA_INMO={ciudad:"",dormitorios:0,maxPrecio:0,tipo:""};function BuscadorInmo({gufi,valor,onCambio,sitios,alquiler,estrecho}){let[panel,setPanel]=(0,import_react12.useState)(null),caja2=(0,import_react12.useRef)(null);(0,import_react12.useEffect)(()=>{if(!panel||estrecho)return;let fuera=e=>{caja2.current&&!caja2.current.contains(e.target)&&setPanel(null)};return document.addEventListener("mousedown",fuera),()=>document.removeEventListener("mousedown",fuera)},[panel,estrecho]);let fijar=(parcial,siguiente)=>{onCambio({...valor,...parcial}),estrecho||setPanel(siguiente)},precios=alquiler?[1e3,1500,2e3,3e3,4e3]:[25e4,4e5,6e5,9e5,15e5],TIPOS=[["",t("Cualquiera","Any")],["Temporada",t("De temporada (meses)","Mid-term (months)")],["Todo el a\xF1o",t("De larga duraci\xF3n","Long-term")]],textoDonde=valor.ciudad||t("Cualquier sitio","Anywhere"),textoDorm=valor.dormitorios>0?`${valor.dormitorios} ${t("o m\xE1s","or more")}`:t("Cualquiera","Any"),textoPrecio=valor.maxPrecio>0?`${t("Hasta","Up to")} ${euros(valor.maxPrecio)}`:t("Cualquiera","Any"),textoTipo=(TIPOS.find(([k])=>k===valor.tipo)??TIPOS[0])[1],listaDonde=__gh("div",{style:{display:"grid",gap:2},"data-gufi-src":"components/estancias/BuscadorInmo.tsx:62"},__gh(Destino,{activo:!valor.ciudad,onClick:()=>fijar({ciudad:""},"dormitorios"),nombre:t("Cualquier sitio","Anywhere"),n:sitios.reduce((s,[,n])=>s+n,0)}),sitios.map(([c,n])=>__gh(Destino,{key:c,activo:valor.ciudad===c,onClick:()=>fijar({ciudad:c},"dormitorios"),nombre:c,n}))),opciones=(lista,activo,elegir)=>__gh("div",{style:{display:"grid",gap:2},"data-gufi-src":"components/estancias/BuscadorInmo.tsx:70"},lista.map(([v,texto])=>__gh("button",{key:String(v),type:"button",className:"bx-fila",onClick:()=>elegir(v),style:{display:"block",width:"100%",padding:"12px 14px",border:"none",borderRadius:14,background:activo===v?A.alt:"transparent",fontFamily:"inherit",fontSize:15.5,fontWeight:activo===v?600:400,color:A.ink,textAlign:"left",cursor:"pointer"},"data-gufi-src":"components/estancias/BuscadorInmo.tsx:72"},texto))),listaDorm=opciones([[0,t("Cualquiera","Any")],...[1,2,3,4].map(n=>[n,`${n} ${t("o m\xE1s","or more")}`])],valor.dormitorios,v=>fijar({dormitorios:v},"precio")),listaPrecio=opciones([[0,t("Cualquiera","Any")],...precios.map(n=>[n,`${t("Hasta","Up to")} ${euros(n)}${alquiler?t(" al mes"," a month"):""}`])],valor.maxPrecio,v=>fijar({maxPrecio:v},alquiler?"tipo":null)),listaTipo=opciones(TIPOS,valor.tipo,v=>fijar({tipo:v},null));return estrecho?__gh(__gf,null,__gh("button",{type:"button",onClick:()=>setPanel("donde"),style:pildoraMovil,"data-gufi-src":"components/estancias/BuscadorInmo.tsx:99"},__gh(import_lucide_react12.Search,{style:{width:18,height:18,color:A.ink,flexShrink:0},strokeWidth:2.4}),__gh("span",{style:{display:"grid",textAlign:"left",minWidth:0},"data-gufi-src":"components/estancias/BuscadorInmo.tsx:101"},__gh("span",{style:{fontSize:15,fontWeight:600,color:A.ink},"data-gufi-src":"components/estancias/BuscadorInmo.tsx:102"},valor.ciudad||t("\xBFD\xF3nde buscas?","Where are you looking?")),__gh("span",{style:{fontSize:13,color:A.muted},"data-gufi-src":"components/estancias/BuscadorInmo.tsx:103"},t("Dormitorios","Bedrooms"),": ",textoDorm," \xB7 ",t("Precio","Price"),": ",textoPrecio))),__gh(gufi.Dialog,{open:panel!==null,onClose:()=>setPanel(null),title:alquiler?t("Buscar alquiler","Find a rental"):t("Buscar piso en venta","Find a home to buy"),footer:__gh("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,width:"100%"},"data-gufi-src":"components/estancias/BuscadorInmo.tsx:113"},__gh("button",{type:"button",onClick:()=>onCambio(SIN_BUSQUEDA_INMO),style:borrar,"data-gufi-src":"components/estancias/BuscadorInmo.tsx:114"},t("Borrar todo","Clear all")),__gh("button",{type:"button",onClick:()=>setPanel(null),className:"bx-boton",style:botonVerde,"data-gufi-src":"components/estancias/BuscadorInmo.tsx:117"},__gh(import_lucide_react12.Search,{style:{width:16,height:16},strokeWidth:2.4}),t("Buscar","Search")))},__gh(Bloque,{titulo:t("D\xF3nde","Where"),abierto:panel==="donde",resumen:textoDonde,onAbrir:()=>setPanel("donde")},listaDonde),__gh(Bloque,{titulo:t("Dormitorios","Bedrooms"),abierto:panel==="dormitorios",resumen:textoDorm,onAbrir:()=>setPanel("dormitorios")},listaDorm),__gh(Bloque,{titulo:t("Precio","Price"),abierto:panel==="precio",resumen:textoPrecio,onAbrir:()=>setPanel("precio")},listaPrecio),alquiler&&__gh(Bloque,{titulo:t("Tipo","Type"),abierto:panel==="tipo",resumen:textoTipo,onAbrir:()=>setPanel("tipo")},listaTipo))):__gh("div",{ref:caja2,style:{position:"relative",maxWidth:alquiler?860:720,margin:"0 auto"},"data-gufi-src":"components/estancias/BuscadorInmo.tsx:135"},__gh("div",{style:{display:"grid",gridTemplateColumns:alquiler?"1.3fr 1fr 1fr 1.2fr":"1.4fr 1fr 1.2fr",alignItems:"center",background:panel?A.alt:A.bg,border:`1px solid ${A.hair}`,borderRadius:999,boxShadow:A.sombra,transition:"background 0.2s"},"data-gufi-src":"components/estancias/BuscadorInmo.tsx:136"},__gh(Trozo,{etiqueta:t("D\xF3nde","Where"),texto:textoDonde,lleno:!!valor.ciudad,abierto:panel==="donde",onClick:()=>setPanel(panel==="donde"?null:"donde")}),__gh(Trozo,{etiqueta:t("Dormitorios","Bedrooms"),texto:textoDorm,lleno:valor.dormitorios>0,abierto:panel==="dormitorios",onClick:()=>setPanel(panel==="dormitorios"?null:"dormitorios")}),alquiler?__gh(__gf,null,__gh(Trozo,{etiqueta:t("Precio al mes","Monthly price"),texto:textoPrecio,lleno:valor.maxPrecio>0,abierto:panel==="precio",onClick:()=>setPanel(panel==="precio"?null:"precio")}),__gh("div",{style:{display:"flex",alignItems:"center",gap:8,paddingRight:8},"data-gufi-src":"components/estancias/BuscadorInmo.tsx:142"},__gh(Trozo,{etiqueta:t("Tipo","Type"),texto:textoTipo,lleno:valor.tipo!=="",abierto:panel==="tipo",onClick:()=>setPanel(panel==="tipo"?null:"tipo")}),__gh("button",{type:"button","aria-label":t("Buscar","Search"),onClick:()=>setPanel(null),className:"bx-boton",style:lupa,"data-gufi-src":"components/estancias/BuscadorInmo.tsx:144"},__gh(import_lucide_react12.Search,{style:{width:18,height:18},strokeWidth:2.6})))):__gh("div",{style:{display:"flex",alignItems:"center",gap:8,paddingRight:8},"data-gufi-src":"components/estancias/BuscadorInmo.tsx:150"},__gh(Trozo,{etiqueta:t("Precio","Price"),texto:textoPrecio,lleno:valor.maxPrecio>0,abierto:panel==="precio",onClick:()=>setPanel(panel==="precio"?null:"precio")}),__gh("button",{type:"button","aria-label":t("Buscar","Search"),onClick:()=>setPanel(null),className:"bx-boton",style:lupa,"data-gufi-src":"components/estancias/BuscadorInmo.tsx:152"},__gh(import_lucide_react12.Search,{style:{width:18,height:18},strokeWidth:2.6})))),panel&&__gh("div",{role:"dialog",style:{position:"absolute",zIndex:30,top:"calc(100% + 12px)",left:panel==="donde"?0:panel==="dormitorios"?"22%":void 0,right:panel==="precio"||panel==="tipo"?0:void 0,width:320,maxHeight:420,overflowY:"auto",background:A.bg,borderRadius:24,boxShadow:A.sombraFuerte,border:`1px solid ${A.hair}`,padding:12},"data-gufi-src":"components/estancias/BuscadorInmo.tsx:160"},panel==="donde"&&listaDonde,panel==="dormitorios"&&listaDorm,panel==="precio"&&listaPrecio,panel==="tipo"&&listaTipo))}var import_react13=require("react"),import_lucide_react13=require("lucide-react");function TarjetaEstancia({piso,href,precio:precio2,ancho}){let fotos=fotosDe(piso),[i,setI]=(0,import_react13.useState)(0),hostal=esHostal(piso),inmo=esAlquiler(piso)||esVenta(piso),datos=[];inmo?(piso.superficie_m2!==null&&datos.push(`${Number(piso.superficie_m2)} m\xB2`),piso.dormitorios!==null&&datos.push(`${piso.dormitorios} ${piso.dormitorios===1?t("dormitorio","bedroom"):t("dormitorios","bedrooms")}`),piso.banos!==null&&datos.push(`${piso.banos} ${piso.banos===1?t("ba\xF1o","bathroom"):t("ba\xF1os","bathrooms")}`)):hostal?piso.plazas!==null&&datos.push(`${piso.plazas} ${t("plazas","beds")}`):(piso.dormitorios!==null&&datos.push(`${piso.dormitorios} ${piso.dormitorios===1?t("dormitorio","bedroom"):t("dormitorios","bedrooms")}`),piso.capacidad!==null&&datos.push(`${piso.capacidad} ${piso.capacidad===1?t("hu\xE9sped","guest"):t("hu\xE9spedes","guests")}`));let mover=n=>e=>{e.preventDefault(),e.stopPropagation(),setI(x=>(x+n+fotos.length)%fotos.length)},desdePunto=Math.min(Math.max(0,i-2),Math.max(0,fotos.length-5)),puntos=fotos.slice(desdePunto,desdePunto+5).map((_,k)=>desdePunto+k);return __gh("a",{href,className:"bx-tarjeta",style:{display:"block",width:ancho,flex:ancho?`0 0 ${ancho}px`:void 0,textDecoration:"none",color:"inherit",scrollSnapAlign:"start"},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:62"},__gh("div",{className:"bx-foto",style:{position:"relative",aspectRatio:"20 / 19",borderRadius:A.radio,overflow:"hidden",background:A.alt},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:63"},fotos.length>0?__gh("img",{key:fotos[i],...fotoLigera(fotos[i]),alt:i===0?piso.titulo:`${piso.titulo}, ${t("foto","photo")} ${i+1}`,loading:"lazy",decoding:"async","data-no-thumb":"true",sizes:"(max-width: 760px) 92vw, 340px",style:{display:"block",width:"100%",height:"100%",objectFit:"cover"},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:65"}):__gh("div",{style:{width:"100%",height:"100%",display:"grid",placeItems:"center",color:A.muted,fontSize:14},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:78"},piso.ciudad),(muyValorado(piso)||piso.tipo_alquiler)&&__gh("span",{style:{position:"absolute",top:12,left:12,padding:"6px 11px",borderRadius:999,background:"rgba(255,255,255,0.94)",color:A.ink,fontSize:12.5,fontWeight:600,boxShadow:"0 1px 4px rgba(0,0,0,0.12)"},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:82"},piso.tipo_alquiler?piso.tipo_alquiler==="Temporada"?t("Temporada","Mid-term"):t("Larga duraci\xF3n","Long-term"):t("Muy valorado","Guest favourite")),fotos.length>1&&__gh(__gf,null,i>0&&__gh("button",{type:"button",className:"bx-flecha","aria-label":t("Foto anterior","Previous photo"),onClick:mover(-1),style:{...flecha2,left:10},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:105"},__gh(import_lucide_react13.ChevronLeft,{style:{width:16,height:16},strokeWidth:2.4})),i__gh("span",{key:k,style:{width:6,height:6,borderRadius:"50%",background:"#fff",opacity:k===i?1:.6,transform:k===i?"scale(1)":"scale(0.82)",boxShadow:"0 0 2px rgba(0,0,0,0.35)",transition:"opacity 0.2s, transform 0.2s"},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:116"}))))),__gh("div",{style:{marginTop:12,display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:10},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:135"},__gh("span",{style:{fontSize:15,fontWeight:600,color:A.ink,letterSpacing:"-0.01em"},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:136"},inmo?`${t("Piso en","Home in")} ${lugar(piso.ciudad)}`:queEs(piso)),piso.valoracion!==null&&Number(piso.resenas)>0&&__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:4,fontSize:14,color:A.ink,flexShrink:0,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:138"},__gh(import_lucide_react13.Star,{style:{width:13,height:13,fill:A.ink,color:A.ink}}),nota(Number(piso.valoracion)))),__gh("div",{style:{marginTop:3,fontSize:14.5,lineHeight:1.4,color:A.muted},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:144"},titulo(piso)),datos.length>0&&__gh("div",{style:{marginTop:2,fontSize:14.5,color:A.muted},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:145"},datos.join(" \xB7 ")),precio2&&__gh("div",{style:{marginTop:6,fontSize:15,color:A.ink,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:147"},__gh("span",{style:{fontWeight:600},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:148"},precio2.valor)," ",__gh("span",{style:{color:A.body},"data-gufi-src":"components/estancias/TarjetaEstancia.tsx:148"},precio2.nota)))}var flecha2={position:"absolute",top:"50%",transform:"translateY(-50%)",width:32,height:32,borderRadius:"50%",border:"none",background:"rgba(255,255,255,0.92)",color:A.ink,display:"grid",placeItems:"center",cursor:"pointer",padding:0,boxShadow:"0 1px 6px rgba(0,0,0,0.18)"};var ESTILO_ESTANCIAS=` .bx { --bx-margen: clamp(20px, 4.2vw, 56px); background: ${A.bg}; color: ${A.ink}; } .bx-caja { max-width: 1600px; margin: 0 auto; padding: 0 var(--bx-margen); } .bx-rejilla { display: grid; grid-template-columns: repeat(auto-fill, minmax(260px, 1fr)); gap: 36px 22px; } .bx-tarjeta .bx-foto img { transition: transform 0.6s cubic-bezier(0.2,0.7,0.3,1); } .bx-tarjeta:hover .bx-foto img { transform: scale(1.03); } .bx-tarjeta .bx-flecha { opacity: 0; transition: opacity 0.2s, transform 0.2s; } .bx-tarjeta:hover .bx-flecha, .bx-tarjeta:focus-within .bx-flecha { opacity: 1; } .bx-flecha:hover { transform: translateY(-50%) scale(1.06) !important; } @media (hover: none) { .bx-tarjeta .bx-flecha { opacity: 1; } } .bx-pista { scrollbar-width: none; } .bx-pista::-webkit-scrollbar { display: none; } .bx-pista > * { scroll-snap-align: start; } .bx-trozo { transition: background 0.15s; } .bx-trozo:hover { background: rgba(0,0,0,0.045) !important; } .bx-fila:hover { background: ${A.alt} !important; } .bx-boton { transition: background 0.18s, transform 0.12s; } .bx-boton:hover { background: ${A.accentHover} !important; } .bx-boton:active { transform: scale(0.98); } .bx-chip { transition: color 0.15s, border-color 0.15s; } .bx-chip:hover { color: ${A.ink} !important; } .bx-suave { transition: background 0.15s; } .bx-suave:hover { background: ${A.alt} !important; } .bx-enlace:hover { text-decoration: underline; text-underline-offset: 3px; } .bx-mosaico img { transition: filter 0.2s; } .bx-mosaico button:hover img { filter: brightness(0.9); } @media (max-width: 760px) { .bx-solo-ancho { display: none !important; } .bx-rejilla { grid-template-columns: 1fr; gap: 30px; } } @media (min-width: 761px) { .bx-solo-movil { display: none !important; } } @media (prefers-reduced-motion: reduce) { .bx-tarjeta .bx-foto img, .bx-boton, .bx-flecha { transition: none; } .bx-tarjeta:hover .bx-foto img { transform: none; } } `;var import_lucide_react14=require("lucide-react");function Vacio({gufi,url,seccion:seccion2}){return __gh("div",{style:{maxWidth:720,margin:"0 auto",padding:`10px 20px ${AIRE}`},"data-gufi-src":"sections/captacion.tsx:50"},__gh("div",{style:{background:T.surface,border:`1px solid ${T.line}`,borderRadius:22,padding:"clamp(24px, 4vw, 38px)",boxShadow:"0 1px 2px rgba(22,21,15,0.03), 0 14px 34px rgba(22,21,15,0.06)"},"data-gufi-src":"sections/captacion.tsx:51"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/captacion.tsx:60"},t("Estamos empezando aqu\xED","We are just getting started here")),__gh("h2",{style:{margin:"14px 0 0",fontFamily:SANS,fontSize:"clamp(24px, 3.6vw, 34px)",lineHeight:1.12,fontWeight:400,color:T.ink},"data-gufi-src":"sections/captacion.tsx:61"},t("Todav\xEDa no publicamos aqu\xED todos los que llevamos","We do not list every home we manage here yet")),__gh("p",{style:{...ENTRADILLA,maxWidth:560},"data-gufi-src":"sections/captacion.tsx:73"},t("Gestionamos m\xE1s casas de las que hay puestas en esta p\xE1gina. Dinos qu\xE9 buscas y te avisamos en cuanto salga algo que encaje, antes de que lo vea nadie m\xE1s.","We manage more homes than we show on this page. Tell us what you are looking for and we will let you know as soon as something fits, before anyone else sees it.")),__gh("div",{style:{marginTop:28},"data-gufi-src":"sections/captacion.tsx:80"},__gh(Solicitud,{gufi,tipo:"visita",origen:`${seccion2}/vacia`,modo:"busqueda",titulo:t("Dinos qu\xE9 buscas","Tell us what you are looking for"),nota:t("Con la zona y cu\xE1ntas habitaciones necesitas nos basta para avisarte.","The area and how many bedrooms you need is all we need to let you know."),boton:t("Avisadme","Let me know")})),__gh("p",{style:{margin:"22px 0 0",fontSize:14,color:T.muted},"data-gufi-src":"sections/captacion.tsx:92"},t("\xBFBuscabas para unos d\xEDas?","Looking for a few nights?")," ",__gh("a",{href:url("/estancias-cortas"),style:{color:T.accent,fontWeight:600},"data-gufi-src":"sections/captacion.tsx:94"},t("Mira las estancias cortas","See our short stays")),".")))}function NoEncontrado({url,que}){let salidas=[{href:"/estancias-cortas",label:t("Estancias cortas","Short stays"),foto:fotoObra("PUNONROSTRO",1)},{href:"/alquileres",label:t("Alquileres","Rentals"),foto:fotoObra("SAN-AGUSTIN-7",3)},{href:"/venta",label:t("En venta","For sale"),foto:fotoObra("PADRE-CLARET",0)},{href:"/gestion",label:t("Propietarios","Owners"),foto:fotoObra("MARQUES-DE-VALDAVIA",0)}];return __gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:"clamp(64px, 9vw, 110px) 20px clamp(72px, 10vw, 120px)"},"data-gufi-src":"sections/captacion.tsx:114"},__gh("div",{style:{maxWidth:680,margin:"0 auto",textAlign:"center"},"data-gufi-src":"sections/captacion.tsx:115"},__gh("h1",{style:PORTADILLA,"data-gufi-src":"sections/captacion.tsx:116"},t("Esta p\xE1gina no existe.","This page does not exist.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/captacion.tsx:117"},t("Prueba por aqu\xED.","Try one of these."))),__gh("p",{style:{...ENTRADILLA,margin:"18px auto 0"},"data-gufi-src":"sections/captacion.tsx:119"},t("No encontramos nada en","We found nothing at")," ",__gh("strong",{style:{color:T.ink,overflowWrap:"anywhere"},"data-gufi-src":"sections/captacion.tsx:120"},"/",que),"."," ",t("Puede que lo hayamos quitado o que el enlace venga mal.","We may have removed it, or the link may be wrong."))),__gh("div",{className:"bq-salidas","data-gufi-src":"sections/captacion.tsx:125"},salidas.map(x=>__gh("a",{key:x.href,href:url(x.href),className:"bq-salida","data-gufi-src":"sections/captacion.tsx:127"},__gh("img",{src:x.foto,alt:"",loading:"lazy",decoding:"async",sizes:"(max-width: 700px) 50vw, 280px","data-gufi-src":"sections/captacion.tsx:128"}),__gh("span",{"data-gufi-src":"sections/captacion.tsx:129"},x.label,__gh(import_lucide_react14.ArrowRight,{style:{width:17,height:17}}))))),__gh("style",{"data-gufi-src":"sections/captacion.tsx:137"},` .bq-salidas { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 16px; margin-top: clamp(40px, 6vw, 64px); } .bq-salida { position: relative; display: block; aspect-ratio: 4 / 5; border-radius: 18px; overflow: hidden; background: ${T.surfaceAlt}; text-decoration: none; } .bq-salida img { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1); } .bq-salida::after { content: ''; position: absolute; inset: 0; background: linear-gradient(to top, rgba(12,10,9,0.62) 0%, rgba(12,10,9,0) 55%); } .bq-salida span { position: absolute; left: 18px; right: 18px; bottom: 16px; z-index: 1; display: flex; align-items: center; justify-content: space-between; gap: 8px; color: #fff; font-size: 17px; font-weight: 500; letter-spacing: -0.01em; } .bq-salida:hover img { transform: scale(1.05); } @media (max-width: 700px) { .bq-salidas { grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 10px; } .bq-salida span { left: 14px; right: 14px; bottom: 12px; font-size: 15px; } } @media (prefers-reduced-motion: reduce) { .bq-salida img { transition: none; } } `))}var RUTA={alquileres:"/alquileres",venta:"/venta"};function ciudadDeLaUrl(){if(typeof window>"u")return"";let v=new URLSearchParams(window.location.search).get("ciudad");return v?lugar(v):""}function Inmo({gufi,url,pisos,seccion:seccion2}){let{h1,texto}=textoDe(RUTA[seccion2]),alquiler=seccion2==="alquileres",estrecho=useEstrecho(760),[busqueda,setBusqueda]=(0,import_react14.useState)(()=>({...SIN_BUSQUEDA_INMO,ciudad:ciudadDeLaUrl()})),delSitio=(0,import_react14.useMemo)(()=>pisos.filter(p=>p.seccion===seccion2),[pisos,seccion2]),precioDe2=p=>Number(alquiler?p.precio_mes:p.precio_venta),sitios=(0,import_react14.useMemo)(()=>{let cuenta2=new Map;for(let p of delSitio)p.ciudad&&cuenta2.set(lugar(p.ciudad),(cuenta2.get(lugar(p.ciudad))??0)+1);return[...cuenta2.entries()].sort((a,b)=>b[1]-a[1]||a[0].localeCompare(b[0],"es"))},[delSitio]),resultado=(0,import_react14.useMemo)(()=>delSitio.filter(p=>!(busqueda.ciudad&&lugar(p.ciudad)!==busqueda.ciudad||busqueda.dormitorios>0&&Number(p.dormitorios)0&&!(precioDe2(p)>0&&precioDe2(p)<=busqueda.maxPrecio)||busqueda.tipo&&p.tipo_alquiler!==busqueda.tipo)),[delSitio,busqueda]);if(delSitio.length===0)return __gh("div",{className:"bx","data-gufi-src":"sections/inmo.tsx:77"},__gh("style",{"data-gufi-src":"sections/inmo.tsx:78"},ESTILO_ESTANCIAS),__gh(Cabecera,{h1,texto}),__gh(Vacio,{gufi,url,seccion:seccion2}));let filtrando=busqueda.ciudad!==""||busqueda.dormitorios>0||busqueda.maxPrecio>0||busqueda.tipo!=="",cuantos=`${resultado.length} ${resultado.length===1?t("piso","home"):t("pisos","homes")}`;return __gh("div",{className:"bx","data-gufi-src":"sections/inmo.tsx:89"},__gh("style",{"data-gufi-src":"sections/inmo.tsx:90"},ESTILO_ESTANCIAS),__gh(Cabecera,{h1,texto},__gh(BuscadorInmo,{gufi,valor:busqueda,onCambio:setBusqueda,sitios,alquiler,estrecho})),__gh("main",{className:"bx-caja",style:{paddingBottom:"clamp(70px, 9vw, 120px)"},"data-gufi-src":"sections/inmo.tsx:95"},__gh("div",{style:{marginTop:18,marginBottom:24,paddingTop:26,borderTop:`1px solid ${A.hair}`,display:"flex",flexWrap:"wrap",alignItems:"baseline",justifyContent:"space-between",gap:12},"data-gufi-src":"sections/inmo.tsx:96"},__gh("h2",{style:{margin:0,fontSize:"clamp(21px, 2.4vw, 25px)",fontWeight:600,letterSpacing:"-0.022em",color:A.ink},"data-gufi-src":"sections/inmo.tsx:97"},busqueda.ciudad?`${cuantos} ${t("en","in")} ${busqueda.ciudad}`:cuantos),filtrando&&__gh("button",{type:"button",onClick:()=>setBusqueda(SIN_BUSQUEDA_INMO),style:borrar,"data-gufi-src":"sections/inmo.tsx:101"},t("Quitar todo","Clear all"))),resultado.length===0?__gh("div",{style:{padding:"80px 24px",textAlign:"center",background:A.alt,borderRadius:24},"data-gufi-src":"sections/inmo.tsx:107"},__gh("h3",{style:{margin:0,fontSize:24,fontWeight:600,letterSpacing:"-0.02em",color:A.ink},"data-gufi-src":"sections/inmo.tsx:108"},t("Con eso no nos queda nada","Nothing matches that")),__gh("p",{style:{margin:"10px 0 22px",fontSize:16,color:A.muted},"data-gufi-src":"sections/inmo.tsx:109"},t("Quita alg\xFAn filtro y vuelve a mirar.","Remove a filter and look again.")),__gh("button",{type:"button",onClick:()=>setBusqueda(SIN_BUSQUEDA_INMO),className:"bx-boton",style:botonVerde,"data-gufi-src":"sections/inmo.tsx:110"},t("Ver todos","See all"))):__gh("div",{className:"bx-rejilla","data-gufi-src":"sections/inmo.tsx:115"},resultado.map(p=>__gh(TarjetaEstancia,{key:p.id,piso:p,href:url(`/${p.slug}`),precio:precioDe2(p)>0?{valor:euros(precioDe2(p)),nota:alquiler?t("al mes","a month"):""}:void 0})))))}function Cabecera({h1,texto,children}){return __gh("header",{className:"bx-caja",style:{paddingTop:"clamp(40px, 7vw, 88px)",paddingBottom:"clamp(26px, 4vw, 40px)",textAlign:"center"},"data-gufi-src":"sections/inmo.tsx:133"},__gh("h1",{style:{margin:0,fontSize:"clamp(38px, 6.2vw, 64px)",lineHeight:1.04,fontWeight:600,letterSpacing:"-0.035em",color:A.ink},"data-gufi-src":"sections/inmo.tsx:134"},h1),__gh("p",{style:{margin:"14px auto 0",maxWidth:620,fontSize:"clamp(17px, 2vw, 21px)",lineHeight:1.45,color:A.muted,letterSpacing:"-0.01em"},"data-gufi-src":"sections/inmo.tsx:135"},texto),children&&__gh("div",{style:{marginTop:"clamp(26px, 4vw, 40px)"},"data-gufi-src":"sections/inmo.tsx:136"},children))}var import_react19=require("react"),import_lucide_react19=require("lucide-react");var import_react15=__toESM(require("react")),import_lucide_react15=require("lucide-react");var CHATS="batuecas_chats",CONTACTO="batuecas_contacto";function leer2(clave){try{return JSON.parse(window.localStorage.getItem(clave)||"null")}catch{return null}}function guardar2(clave,valor){try{window.localStorage.setItem(clave,JSON.stringify(valor))}catch{}}var claveDe=piso=>{let v=(leer2(CHATS)||{})[String(piso)];return typeof v=="string"?v:null},guardarClave=(piso,token)=>{let todos=leer2(CHATS)||{};token?todos[String(piso)]=token:delete todos[String(piso)],guardar2(CHATS,todos)},hoy=()=>new Date().toLocaleDateString("sv-SE",{timeZone:"Europe/Madrid"}),hora=iso=>new Date(iso).toLocaleTimeString(LOCALE,{hour:"2-digit",minute:"2-digit",timeZone:"Europe/Madrid"}),cuando=iso=>new Date(iso).toLocaleDateString(LOCALE,{weekday:"long",day:"numeric",month:"long",timeZone:"Europe/Madrid"}).replace(",","")+t(" a las "," at ")+hora(iso),etiquetaDia=d2=>IDIOMA==="en"?new Date(d2.dia+"T12:00:00Z").toLocaleDateString(LOCALE,{weekday:"long",day:"numeric",month:"long",timeZone:"UTC"}).replace(",",""):d2.etiqueta,MOTIVOS_EN={"No hemos podido enviarlo. Vuelve a intentarlo.":"We could not send it. Please try again.","Escribe tu nombre.":"Please enter your name.","D\xE9janos tu correo por si se corta el chat.":"Leave your email in case the chat drops.","Ese tel\xE9fono no cuadra.":"That phone number does not look right.","Esa fecha de entrada no es una fecha.":"That move-in date is not a valid date.","Los meses van de 1 a 60.":"Months go from 1 to 60.","Escribe tu pregunta.":"Please write your question.","Este piso ya no est\xE1 publicado.":"This property is no longer listed.","Hemos recibido muchas conversaciones seguidas. Prueba en unos minutos o ll\xE1manos.":"We have received a lot of conversations in a row. Try again in a few minutes or give us a call.","Esta conversaci\xF3n ya no existe. Abre una nueva.":"This conversation no longer exists. Start a new one.","Escribe algo.":"Write something.","Vas muy r\xE1pido. Espera un momento.":"You are going too fast. Wait a moment.","Todav\xEDa no te hemos pasado los huecos para verlo. Preg\xFAntanos por aqu\xED.":"We have not sent you viewing times yet. Ask us here.","Este piso no admite visitas por aqu\xED. Preg\xFAntanos por el chat.":"Viewings for this property cannot be booked here. Ask us in the chat.","Ya tienes una visita. Si quieres cambiarla, d\xEDnoslo por aqu\xED.":"You already have a viewing. If you want to change it, tell us here.","Ese hueco ya no est\xE1 libre. Elige otro.":"That time is no longer available. Choose another."},motivo=m=>IDIOMA==="en"&&m in MOTIVOS_EN?MOTIVOS_EN[m]:m;function ConEnlaces({texto}){let partes=texto.split(/(https?:\/\/[^\s]+)/g);return __gh(__gf,null,partes.map((p,i)=>/^https?:\/\//.test(p)?__gh("a",{key:i,href:p,target:"_blank",rel:"noopener noreferrer",style:{color:"inherit",textDecoration:"underline",wordBreak:"break-all"},"data-gufi-src":"components/Chat.tsx:125"},p):__gh(import_react15.default.Fragment,{key:i},p)))}function ChatPiso({gufi,piso,venta}){let[token,setToken]=(0,import_react15.useState)(null),[contacto,setContacto]=(0,import_react15.useState)(null),[cambiar,setCambiar]=(0,import_react15.useState)(!1),[mensajes,setMensajes]=(0,import_react15.useState)([]),[visita,setVisita]=(0,import_react15.useState)(null),[eligeHueco,setEligeHueco]=(0,import_react15.useState)(!1),[dias,setDias]=(0,import_react15.useState)(null),[diaSel,setDiaSel]=(0,import_react15.useState)(0),[horaSel,setHoraSel]=(0,import_react15.useState)(null),[texto,setTexto]=(0,import_react15.useState)(""),[error,setError]=(0,import_react15.useState)(""),[cortado,setCortado]=(0,import_react15.useState)(!1),[enviando,setEnviando]=(0,import_react15.useState)(!1),[f,setF]=(0,import_react15.useState)({nombre:"",email:"",telefono:"",entrada:"",meses:"",mensaje:"",trampa:""}),ultimo=(0,import_react15.useRef)(0),lista=(0,import_react15.useRef)(null),run=(0,import_react15.useCallback)(input=>gufi.publicAutomation("web_chat").run(input),[gufi]);(0,import_react15.useEffect)(()=>{ultimo.current=0,setMensajes([]),setVisita(null);let deEnlace=(new URLSearchParams(window.location.search).get("chat")||"").toLowerCase();if(/^[a-f0-9]{64}$/.test(deEnlace)){guardarClave(piso,deEnlace);let u=new URL(window.location.href);u.searchParams.delete("chat"),window.history.replaceState(window.history.state,"",u.toString()),setToken(deEnlace),setTimeout(()=>document.getElementById("chat-piso")?.scrollIntoView({behavior:"smooth",block:"start"}),400)}else setToken(claveDe(piso));let c=leer2(CONTACTO);c&&c.nombre&&c.email&&(setContacto(c),setF(p=>({...p,nombre:c.nombre,email:c.email,telefono:c.telefono||""})))},[piso]);let traer=(0,import_react15.useCallback)(async()=>{if(!token)return;let r=await run({accion:"leer",token,desde:ultimo.current});if(!r||r.ok===!1){guardarClave(piso,null),setToken(null),setMensajes([]),ultimo.current=0;return}setVisita(r.visita),setEligeHueco(!!r.eligeHueco),r.mensajes.length&&(ultimo.current=r.mensajes[r.mensajes.length-1].id,setMensajes(prev=>[...prev,...r.mensajes.filter(m=>!prev.some(p=>p.id===m.id))]))},[token,run,piso]);(0,import_react15.useEffect)(()=>{if(!token)return;let vivo=!0,reloj,vuelta=async()=>{if(vivo){if(!document.hidden)try{await traer(),setCortado(!1)}catch{setCortado(!0)}reloj=setTimeout(vuelta,4e3)}};return vuelta(),()=>{vivo=!1,clearTimeout(reloj)}},[token,traer]),(0,import_react15.useEffect)(()=>{lista.current&&(lista.current.scrollTop=lista.current.scrollHeight)},[mensajes]);let empezar=async e=>{if(e.preventDefault(),!enviando){setEnviando(!0),setError("");try{let r=await run({accion:"abrir",piso,...f,origen:window.location.pathname});if(!r.ok){setError(motivo(r.motivo));return}let c={nombre:f.nombre.trim(),email:f.email.trim().toLowerCase(),telefono:f.telefono.trim()};guardar2(CONTACTO,c),setContacto(c),guardarClave(piso,r.token),ultimo.current=0,setToken(r.token),setF(p=>({...p,entrada:"",meses:"",mensaje:""}))}catch(err){setError(err instanceof Error?err.message:t("No ha salido. Prueba otra vez.","It did not go through. Try again."))}finally{setEnviando(!1)}}},mandar=async e=>{e?.preventDefault();let escrito=texto.trim();if(!(!escrito||enviando||!token)){setEnviando(!0),setError("");try{let r=await run({accion:"enviar",token,texto:escrito});if(!r.ok){setError(motivo(r.motivo));return}setTexto(""),await traer()}catch(err){setError(err instanceof Error?err.message:t("No ha salido. Prueba otra vez.","It did not go through. Try again."))}finally{setEnviando(!1)}}};(0,import_react15.useEffect)(()=>{if(!eligeHueco||!token){setDias(null);return}let vivo=!0;return run({accion:"huecos",token}).then(r=>{if(vivo){if(!r.ok){setError(motivo(r.motivo));return}setDias(r.dias),setDiaSel(0),setHoraSel(null)}}).catch(err=>vivo&&setError(err instanceof Error?err.message:t("No han llegado los huecos. Recarga la p\xE1gina.","The viewing times did not load. Reload the page."))),()=>{vivo=!1}},[eligeHueco,token,run]);let elegir=async()=>{if(!(enviando||!token||!horaSel)){setEnviando(!0),setError("");try{let r=await run({accion:"elegir",token,inicio:horaSel});if(!r.ok){setError(motivo(r.motivo));let h=await run({accion:"huecos",token});h.ok&&setDias(h.dias),setHoraSel(null);return}setHoraSel(null),await traer()}catch(err){setError(err instanceof Error?err.message:t("No ha salido. Prueba otra vez.","It did not go through. Try again."))}finally{setEnviando(!1)}}},conocido=contacto!==null&&!cambiar;return __gh("section",{id:"chat-piso","aria-label":t("Chat sobre este piso","Chat about this property"),style:caja,"data-gufi-src":"components/Chat.tsx:325"},__gh("header",{style:{padding:"20px 22px 14px",borderBottom:`1px solid ${T.lineSoft}`},"data-gufi-src":"components/Chat.tsx:326"},__gh("h3",{style:{margin:0,fontFamily:SANS,fontSize:"clamp(21px, 2.6vw, 25px)",lineHeight:1.2,fontWeight:400,color:T.ink},"data-gufi-src":"components/Chat.tsx:327"},t("Pregunta por este piso","Ask about this property")),__gh("p",{style:{margin:"6px 0 0",fontSize:14,lineHeight:1.55,color:T.body},"data-gufi-src":"components/Chat.tsx:330"},t("Te contesta el equipo de Batuecas aqu\xED mismo, y por aqu\xED te pasamos los huecos para verlo.","The Batuecas team replies right here, and this is where we send you times to view it."))),token?__gh(__gf,null,__gh("div",{ref:lista,style:{minHeight:120,maxHeight:"min(420px, 55vh)",overflowY:"auto",padding:"16px 14px",display:"flex",flexDirection:"column",gap:8,background:T.bg},"data-gufi-src":"components/Chat.tsx:392"},mensajes.map(m=>__gh(Burbuja,{key:m.id,de:m.de,texto:m.texto,hora:hora(m.hora)})),mensajes.length>0&&!mensajes.some(m=>m.de==="equipo")&&__gh("p",{style:{margin:"4px 2px 0",fontSize:13,lineHeight:1.5,color:T.muted},"data-gufi-src":"components/Chat.tsx:397"},t("Recibido. Te contestamos aqu\xED en horario de oficina; si cierras la p\xE1gina, la conversaci\xF3n te espera en esta ficha.","Received. We reply here during office hours; if you close the page, the conversation will be waiting for you on this listing."))),visita&&__gh("div",{style:{display:"flex",gap:10,alignItems:"flex-start",padding:"10px 18px",borderTop:`1px solid ${T.lineSoft}`,fontSize:13.5,lineHeight:1.45,color:T.body},"data-gufi-src":"components/Chat.tsx:407"},__gh(import_lucide_react15.CalendarCheck,{style:{width:17,height:17,color:T.accent,flexShrink:0,marginTop:1}}),__gh("span",{"data-gufi-src":"components/Chat.tsx:409"},visita.estado==="Confirmada"&&visita.fecha?`${t("Visita confirmada","Viewing confirmed")}: ${cuando(visita.fecha)}.`:visita.estado==="Solicitada"?t("Visita pedida. Te confirmamos la hora por aqu\xED.","Viewing requested. We will confirm the time here."):visita.estado==="Cancelada"?t("La visita est\xE1 cancelada.","The viewing has been cancelled."):t("Visita hecha. Gracias por venir.","Viewing done. Thanks for coming."))),eligeHueco&&dias&&__gh("div",{style:{padding:"14px 14px 12px",borderTop:`1px solid ${T.lineSoft}`},"data-gufi-src":"components/Chat.tsx:422"},__gh("div",{style:{fontSize:14,fontWeight:600,color:T.ink},"data-gufi-src":"components/Chat.tsx:423"},t("Elige cu\xE1ndo verlo","Choose when to view it")),dias.length===0?__gh("p",{style:{margin:"6px 0 0",fontSize:13.5,color:T.body},"data-gufi-src":"components/Chat.tsx:425"},t("No quedan huecos libres estos d\xEDas. D\xEDnoslo por aqu\xED y te buscamos otro.","No times left over the coming days. Tell us here and we will find another.")):__gh(__gf,null,__gh("div",{style:{display:"flex",gap:6,overflowX:"auto",padding:"10px 0 4px",scrollbarWidth:"thin"},"data-gufi-src":"components/Chat.tsx:428"},dias.map((d2,i)=>__gh("button",{key:d2.dia,type:"button",onClick:()=>{setDiaSel(i),setHoraSel(null)},style:chipDia(i===diaSel),"data-gufi-src":"components/Chat.tsx:430"},__gh("span",{style:{display:"block",fontSize:11.5,color:i===diaSel?T.accentInk:T.muted,textTransform:"capitalize"},"data-gufi-src":"components/Chat.tsx:431"},IDIOMA==="en"?etiquetaDia(d2).slice(0,3):d2.etiqueta.split(" ")[0]),__gh("span",{style:{display:"block",fontSize:15,fontWeight:600,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/Chat.tsx:432"},IDIOMA==="en"?Number(d2.dia.slice(8)):d2.etiqueta.split(" ")[1])))),__gh("div",{style:{fontSize:12.5,color:T.muted,margin:"6px 0 8px"},"data-gufi-src":"components/Chat.tsx:436"},etiquetaDia(dias[diaSel])),__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(70px, 1fr))",gap:6},"data-gufi-src":"components/Chat.tsx:437"},dias[diaSel].horas.map(h=>__gh("button",{key:h.inicio,type:"button",onClick:()=>setHoraSel(h.inicio),style:chipHora(horaSel===h.inicio),"data-gufi-src":"components/Chat.tsx:439"},h.hora))),horaSel&&__gh("button",{type:"button",onClick:elegir,disabled:enviando,style:{...boton,marginTop:12,background:enviando?T.muted:T.accent},"data-gufi-src":"components/Chat.tsx:445"},enviando?t("Reservando","Booking"):t(`Reservar visita el ${cuando(horaSel)}`,`Book viewing on ${cuando(horaSel)}`)))),(error||cortado)&&__gh("div",{style:{padding:"8px 14px 0"},"data-gufi-src":"components/Chat.tsx:455"},__gh(Aviso,{texto:error||t("Se ha cortado la conexi\xF3n. Reintentando.","Connection lost. Retrying.")})),__gh("form",{onSubmit:mandar,style:{display:"flex",gap:8,alignItems:"flex-end",padding:14,borderTop:`1px solid ${T.lineSoft}`},"data-gufi-src":"components/Chat.tsx:460"},__gh("textarea",{"aria-label":t("Escribe tu mensaje","Type your message"),placeholder:t("Escribe aqu\xED","Type here"),rows:1,value:texto,onChange:e=>setTexto(e.target.value),onKeyDown:e=>{e.key==="Enter"&&!e.shiftKey&&(e.preventDefault(),mandar())},style:{...entrada,flex:1,height:"auto",minHeight:44,maxHeight:120,padding:"11px 14px",resize:"none",borderRadius:22},"data-gufi-src":"components/Chat.tsx:461"}),__gh("button",{type:"submit",disabled:enviando||!texto.trim(),"aria-label":t("Enviar","Send"),style:{width:44,height:44,borderRadius:"50%",border:"none",flexShrink:0,background:texto.trim()?T.accent:T.line,color:T.accentInk,display:"inline-flex",alignItems:"center",justifyContent:"center",cursor:texto.trim()?"pointer":"default"},"data-gufi-src":"components/Chat.tsx:475"},__gh(import_lucide_react15.ArrowUp,{style:{width:20,height:20}})))):__gh("form",{onSubmit:empezar,noValidate:!0,style:{padding:"16px 22px 22px",display:"grid",gap:12},"data-gufi-src":"components/Chat.tsx:339"},__gh("div",{style:{position:"absolute",left:-9999,width:1,height:1,overflow:"hidden"},"data-gufi-src":"components/Chat.tsx:340"},__gh("label",{htmlFor:"bq-chat","data-gufi-src":"components/Chat.tsx:341"},t("No rellenar","Do not fill in")),__gh("input",{id:"bq-chat",name:"bq_ref",tabIndex:-1,autoComplete:"off",value:f.trampa,onChange:e=>setF({...f,trampa:e.target.value}),"data-gufi-src":"components/Chat.tsx:342"})),conocido?__gh("p",{style:{margin:0,fontSize:14,color:T.body},"data-gufi-src":"components/Chat.tsx:346"},t("Escribes como","Writing as")," ",__gh("strong",{style:{color:T.ink},"data-gufi-src":"components/Chat.tsx:347"},contacto.nombre)," \xB7 ",contacto.email,"."," ",__gh("button",{type:"button",onClick:()=>setCambiar(!0),style:enlace2,"data-gufi-src":"components/Chat.tsx:348"},t("Cambiar","Change"))):__gh(__gf,null,__gh(Campo2,{etiqueta:t("Nombre","Name")},__gh("input",{style:entrada,value:f.nombre,onChange:e=>setF({...f,nombre:e.target.value}),autoComplete:"name","data-gufi-src":"components/Chat.tsx:353"})),__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(150px, 1fr))",gap:12},"data-gufi-src":"components/Chat.tsx:355"},__gh(Campo2,{etiqueta:t("Correo","Email")},__gh("input",{style:entrada,type:"email",value:f.email,onChange:e=>setF({...f,email:e.target.value}),autoComplete:"email","data-gufi-src":"components/Chat.tsx:357"})),__gh(Campo2,{etiqueta:t("Tel\xE9fono","Phone"),nota:t("opcional","optional")},__gh("input",{style:entrada,type:"tel",value:f.telefono,onChange:e=>setF({...f,telefono:e.target.value}),autoComplete:"tel","data-gufi-src":"components/Chat.tsx:360"})))),!venta&&__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(130px, 1fr))",gap:12},"data-gufi-src":"components/Chat.tsx:367"},__gh(Campo2,{etiqueta:t("Cu\xE1ndo entrar\xEDas","Move-in date")},__gh("input",{style:entrada,type:"date",min:hoy(),value:f.entrada,onChange:e=>setF({...f,entrada:e.target.value}),"data-gufi-src":"components/Chat.tsx:369"})),__gh(Campo2,{etiqueta:t("Cu\xE1ntos meses","How many months")},__gh("input",{style:entrada,inputMode:"numeric",value:f.meses,onChange:e=>setF({...f,meses:e.target.value.replace(/\D/g,"").slice(0,2)}),"data-gufi-src":"components/Chat.tsx:372"}))),__gh(Campo2,{etiqueta:t("Tu pregunta","Your question")},__gh("textarea",{style:{...entrada,height:"auto",minHeight:84,padding:"11px 14px",resize:"vertical"},rows:3,placeholder:venta?t("\xBFTiene garaje? \xBFCu\xE1ndo se puede ver?","Does it have parking? When can I see it?"):t("\xBFSe admiten mascotas? \xBFCu\xE1ndo se puede ver?","Are pets allowed? When can I see it?"),value:f.mensaje,onChange:e=>setF({...f,mensaje:e.target.value}),"data-gufi-src":"components/Chat.tsx:377"})),error&&__gh(Aviso,{texto:error}),__gh("button",{type:"submit",disabled:enviando,style:{...boton,background:enviando?T.muted:T.accent},"data-gufi-src":"components/Chat.tsx:386"},enviando?t("Enviando","Sending"):t("Enviar","Send"))))}function Burbuja({de,texto,hora:hora2}){let mio=de==="cliente";return __gh("div",{style:{alignSelf:mio?"flex-end":"flex-start",maxWidth:"88%"},"data-gufi-src":"components/Chat.tsx:493"},__gh("div",{style:{padding:"10px 14px",borderRadius:16,borderBottomRightRadius:mio?5:16,borderBottomLeftRadius:mio?16:5,background:mio?T.accent:T.surface,color:mio?T.accentInk:T.ink,border:mio?"none":`1px solid ${T.line}`,fontSize:14.5,lineHeight:1.5,whiteSpace:"pre-line",overflowWrap:"anywhere"},"data-gufi-src":"components/Chat.tsx:494"},__gh(ConEnlaces,{texto})),__gh("div",{style:{fontSize:11.5,color:T.muted,marginTop:3,textAlign:mio?"right":"left",fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/Chat.tsx:511"},mio?hora2:`Batuecas \xB7 ${hora2}`))}function Campo2({etiqueta:etiqueta4,nota:nota2,children}){return __gh("label",{style:{display:"block"},"data-gufi-src":"components/Chat.tsx:520"},__gh("span",{style:{display:"block",marginBottom:6,fontSize:13.5,color:T.body,fontWeight:500},"data-gufi-src":"components/Chat.tsx:521"},etiqueta4,nota2&&__gh("span",{style:{color:T.muted,fontWeight:400},"data-gufi-src":"components/Chat.tsx:523"}," \xB7 ",nota2)),children)}function Aviso({texto}){return __gh("p",{style:{margin:0,padding:"9px 12px",borderRadius:10,background:"#fdf1ee",border:"1px solid #f0cfc5",color:"#9c3c22",fontSize:13,lineHeight:1.45},"data-gufi-src":"components/Chat.tsx:532"},texto)}var caja={background:T.surface,border:`1px solid ${T.line}`,borderRadius:22,overflow:"hidden",boxShadow:"0 1px 2px rgba(22,21,15,0.03), 0 14px 34px rgba(22,21,15,0.06)"},entrada={width:"100%",height:44,padding:"0 14px",borderRadius:12,border:`1px solid ${T.line}`,background:T.bg,color:T.ink,fontSize:15,fontFamily:"inherit",boxSizing:"border-box"},boton={marginTop:4,width:"100%",height:46,borderRadius:999,border:"none",background:T.accent,color:T.accentInk,fontSize:15,fontWeight:600,fontFamily:"inherit",cursor:"pointer"},enlace2={border:"none",background:"none",padding:0,color:T.accent,fontWeight:600,fontSize:14,fontFamily:"inherit",cursor:"pointer"},chipDia=elegido=>({flex:"0 0 auto",minWidth:58,padding:"7px 10px",borderRadius:12,border:`1px solid ${elegido?T.accent:T.line}`,background:elegido?T.accent:T.surface,color:elegido?T.accentInk:T.ink,fontFamily:"inherit",cursor:"pointer",textAlign:"center"}),chipHora=elegida=>({height:38,borderRadius:10,border:`1px solid ${elegida?T.accent:T.line}`,background:elegida?T.accent:T.surface,color:elegida?T.accentInk:T.ink,fontSize:14,fontWeight:600,fontVariantNumeric:"tabular-nums",fontFamily:"inherit",cursor:"pointer"});var import_react16=require("react"),import_lucide_react16=require("lucide-react");function Fotos({gufi,fotos,titulo:titulo3,estrecho}){let[visor,setVisor]=(0,import_react16.useState)(null);if(fotos.length===0)return null;let visorEl=__gh(gufi.Dialog,{open:visor!==null,onClose:()=>setVisor(null),title:`${fotos.length} ${t("fotos","photos")}`,description:titulo3,size:"full",padding:0},__gh(Visor,{fotos,titulo:titulo3,desde:visor??0}));if(estrecho)return __gh(__gf,null,__gh(Tira,{fotos,titulo:titulo3,onAbrir:setVisor}),visorEl);let cinco=fotos.length>=5;return __gh(__gf,null,__gh("div",{className:"bx-mosaico",style:{position:"relative",display:"grid",gridTemplateColumns:cinco?"2fr 1fr 1fr":"1fr",gridTemplateRows:cinco?"1fr 1fr":"1fr",gap:8,height:"clamp(320px, 40vw, 520px)",borderRadius:A.radio+4,overflow:"hidden"},"data-gufi-src":"components/estancias/Fotos.tsx:36"},(cinco?fotos.slice(0,5):fotos.slice(0,1)).map((f,n)=>__gh("button",{key:f,type:"button",onClick:()=>setVisor(n),"aria-label":`${t("Ver la foto","View photo")} ${n+1}`,style:{gridRow:cinco&&n===0?"1 / 3":void 0,padding:0,border:"none",background:A.alt,cursor:"pointer",overflow:"hidden",minHeight:0},"data-gufi-src":"components/estancias/Fotos.tsx:50"},__gh("img",{...n===0?{src:f}:fotoLigera(f),alt:n===0?titulo3:"",decoding:"async","data-no-thumb":"true",sizes:cinco?n===0?"(max-width: 900px) 100vw, 50vw":"25vw":"100vw",style:{display:"block",width:"100%",height:"100%",objectFit:"cover"},"data-gufi-src":"components/estancias/Fotos.tsx:57"}))),fotos.length>1&&__gh("button",{type:"button",onClick:()=>setVisor(0),className:"bx-suave",style:{position:"absolute",right:18,bottom:18,display:"inline-flex",alignItems:"center",gap:8,height:38,padding:"0 16px",borderRadius:999,border:`1px solid ${A.ink}`,background:A.bg,fontFamily:"inherit",fontSize:14,fontWeight:600,color:A.ink,cursor:"pointer"},"data-gufi-src":"components/estancias/Fotos.tsx:61"},__gh(import_lucide_react16.Grid2x2,{style:{width:15,height:15}}),t(`Ver las ${fotos.length} fotos`,`Show all ${fotos.length} photos`))),visorEl)}function Tira({fotos,titulo:titulo3,onAbrir}){let pista=(0,import_react16.useRef)(null),[i,setI]=(0,import_react16.useState)(0);return __gh("div",{style:{position:"relative",margin:"0 calc(-1 * var(--bx-margen))"},"data-gufi-src":"components/estancias/Fotos.tsx:85"},__gh("div",{ref:pista,onScroll:()=>{let el=pista.current;el&&setI(Math.round(el.scrollLeft/el.clientWidth))},className:"bx-pista",style:{display:"flex",overflowX:"auto",scrollSnapType:"x mandatory",aspectRatio:"4 / 3",background:A.alt},"data-gufi-src":"components/estancias/Fotos.tsx:86"},fotos.map((f,n)=>__gh("button",{key:f,type:"button",onClick:()=>onAbrir(n),style:{flex:"0 0 100%",padding:0,border:"none",background:"none",scrollSnapAlign:"start"},"data-gufi-src":"components/estancias/Fotos.tsx:88"},__gh("img",{src:f,alt:n===0?titulo3:"",loading:n<2?"eager":"lazy",decoding:"async","data-no-thumb":"true",sizes:"100vw",style:{display:"block",width:"100%",height:"100%",objectFit:"cover"},"data-gufi-src":"components/estancias/Fotos.tsx:89"})))),__gh("span",{style:{position:"absolute",right:14,bottom:14,padding:"5px 11px",borderRadius:999,background:"rgba(29,29,31,0.72)",color:"#fff",fontSize:13,fontWeight:600,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/estancias/Fotos.tsx:93"},i+1," / ",fotos.length))}function Visor({fotos,titulo:titulo3,desde:desde2}){let caja2=(0,import_react16.useRef)(null);return(0,import_react16.useEffect)(()=>{let el=caja2.current?.querySelectorAll("img")[desde2];el&&el.scrollIntoView({block:"start"})},[desde2]),__gh("div",{ref:caja2,style:{maxWidth:960,margin:"0 auto",padding:"clamp(12px, 3vw, 32px)",display:"grid",gap:10},"data-gufi-src":"components/estancias/Fotos.tsx:107"},fotos.map((f,n)=>__gh("img",{key:f,src:f,alt:`${titulo3}, ${t("foto","photo")} ${n+1} / ${fotos.length}`,loading:Math.abs(n-desde2)<3?"eager":"lazy",decoding:"async","data-no-thumb":"true",sizes:"(max-width: 1000px) 100vw, 960px",style:{display:"block",width:"100%",height:"auto",borderRadius:12,background:A.alt},"data-gufi-src":"components/estancias/Fotos.tsx:109"})))}var import_react17=require("react"),import_lucide_react17=require("lucide-react");function Fila({titulo:titulo3,accion,children}){let pista=(0,import_react17.useRef)(null),[bordes2,setBordes]=(0,import_react17.useState)({inicio:!0,fin:!1}),medir=()=>{let el=pista.current;el&&setBordes({inicio:el.scrollLeft<=4,fin:el.scrollLeft+el.clientWidth>=el.scrollWidth-4})};(0,import_react17.useEffect)(()=>(medir(),window.addEventListener("resize",medir),()=>window.removeEventListener("resize",medir)),[]);let mover=n=>{let el=pista.current;el&&el.scrollBy({left:n*el.clientWidth*.9,behavior:"smooth"})};return __gh("section",{style:{marginTop:"clamp(36px, 5vw, 52px)"},"data-gufi-src":"components/estancias/Fila.tsx:43"},__gh("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:16},"data-gufi-src":"components/estancias/Fila.tsx:44"},__gh("h2",{style:{margin:0,fontSize:"clamp(21px, 2.4vw, 25px)",fontWeight:600,letterSpacing:"-0.022em",color:A.ink},"data-gufi-src":"components/estancias/Fila.tsx:45"},titulo3),__gh("div",{style:{display:"flex",alignItems:"center",gap:14,flexShrink:0},"data-gufi-src":"components/estancias/Fila.tsx:46"},accion&&__gh("button",{type:"button",onClick:accion.onClick,className:"bx-enlace",style:enlace3,"data-gufi-src":"components/estancias/Fila.tsx:48"},accion.texto),__gh("span",{className:"bx-solo-ancho",style:{display:"flex",gap:8},"data-gufi-src":"components/estancias/Fila.tsx:52"},__gh("button",{type:"button","aria-label":t("Anteriores","Previous"),disabled:bordes2.inicio,onClick:()=>mover(-1),style:{...redondo,opacity:bordes2.inicio?.35:1},"data-gufi-src":"components/estancias/Fila.tsx:53"},__gh(import_lucide_react17.ChevronLeft,{style:{width:16,height:16}})),__gh("button",{type:"button","aria-label":t("Siguientes","Next"),disabled:bordes2.fin,onClick:()=>mover(1),style:{...redondo,opacity:bordes2.fin?.35:1},"data-gufi-src":"components/estancias/Fila.tsx:56"},__gh(import_lucide_react17.ChevronRight,{style:{width:16,height:16}}))))),__gh("div",{ref:pista,onScroll:medir,className:"bx-pista",style:{marginTop:18,display:"flex",gap:18,overflowX:"auto",scrollSnapType:"x mandatory",scrollPaddingLeft:"var(--bx-margen)",padding:"0 var(--bx-margen) 6px",margin:"18px calc(-1 * var(--bx-margen)) 0"},"data-gufi-src":"components/estancias/Fila.tsx:62"},children))}var enlace3={padding:0,border:"none",background:"none",fontFamily:"inherit",fontSize:15,fontWeight:500,color:A.accent,cursor:"pointer",whiteSpace:"nowrap"},redondo={width:34,height:34,borderRadius:"50%",border:`1px solid ${A.line}`,background:A.bg,color:A.ink,display:"grid",placeItems:"center",cursor:"pointer",padding:0};var import_react18=require("react"),import_lucide_react18=require("lucide-react");var h2={margin:0,fontSize:"clamp(21px, 2.4vw, 24px)",fontWeight:600,letterSpacing:"-0.02em",color:A.ink},icono2={width:26,height:26,color:A.ink};function Titular({piso,donde:donde2,copiado,onCompartir}){return __gh("div",{style:{marginTop:18},"data-gufi-src":"components/estancias/piezas.tsx:24"},__gh("h1",{style:{margin:0,fontSize:"clamp(26px, 3.4vw, 34px)",lineHeight:1.15,fontWeight:600,letterSpacing:"-0.028em",color:A.ink},"data-gufi-src":"components/estancias/piezas.tsx:25"},titulo(piso)),__gh("div",{style:{marginTop:10,display:"flex",flexWrap:"wrap",alignItems:"center",justifyContent:"space-between",gap:12},"data-gufi-src":"components/estancias/piezas.tsx:26"},__gh("span",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8,fontSize:15.5,color:A.ink},"data-gufi-src":"components/estancias/piezas.tsx:27"},piso.valoracion!==null&&Number(piso.resenas)>0&&__gh(__gf,null,__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:5,fontWeight:600},"data-gufi-src":"components/estancias/piezas.tsx:30"},__gh(import_lucide_react18.Star,{style:{width:15,height:15,fill:A.ink,color:A.ink}}),nota(Number(piso.valoracion))),__gh("span",{style:{color:A.line},"data-gufi-src":"components/estancias/piezas.tsx:34"},"\xB7"),__gh("a",{href:"#opiniones",style:{color:A.ink,textUnderlineOffset:3},"data-gufi-src":"components/estancias/piezas.tsx:35"},piso.resenas," ",t("rese\xF1as","reviews")),donde2&&__gh("span",{style:{color:A.line},"data-gufi-src":"components/estancias/piezas.tsx:36"},"\xB7")),donde2&&__gh("span",{style:{color:A.body},"data-gufi-src":"components/estancias/piezas.tsx:39"},donde2)),__gh("button",{type:"button",onClick:onCompartir,className:"bx-suave",style:{display:"inline-flex",alignItems:"center",gap:7,height:36,padding:"0 12px",borderRadius:10,border:"none",background:"none",fontFamily:"inherit",fontSize:15,fontWeight:600,color:A.ink,textDecoration:"underline",textUnderlineOffset:3,cursor:"pointer"},"data-gufi-src":"components/estancias/piezas.tsx:41"},__gh(import_lucide_react18.Share,{style:{width:15,height:15}}),copiado?t("Enlace copiado","Link copied"):t("Compartir","Share"))))}function Bloque2({titulo:titulo3,id,primero,children}){return __gh("section",{id,style:{padding:primero?"22px 0 32px":"32px 0",borderTop:primero?"none":`1px solid ${A.hair}`,scrollMarginTop:90},"data-gufi-src":"components/estancias/piezas.tsx:52"},titulo3&&__gh("h2",{style:{...h2,marginBottom:20},"data-gufi-src":"components/estancias/piezas.tsx:53"},titulo3),children)}function Punto({icono:Icono,titulo:titulo3,texto}){return __gh("div",{style:{display:"flex",gap:22,alignItems:"flex-start"},"data-gufi-src":"components/estancias/piezas.tsx:61"},__gh(Icono,{style:{...icono2,marginTop:2,flexShrink:0},strokeWidth:1.6}),__gh("span",{"data-gufi-src":"components/estancias/piezas.tsx:63"},__gh("span",{style:{display:"block",fontSize:16.5,fontWeight:600,color:A.ink},"data-gufi-src":"components/estancias/piezas.tsx:64"},titulo3),__gh("span",{style:{display:"block",marginTop:3,fontSize:15,lineHeight:1.5,color:A.muted},"data-gufi-src":"components/estancias/piezas.tsx:65"},texto)))}var PALABRA=/[A-Za-zÁÉÍÓÚÑÜáéíóúñü]+/g,esGrito=w=>w.length>1&&w===w.toUpperCase()&&w!==w.toLowerCase();function sinGritos(texto){let formas=new Map,siglas=new Set;for(let linea of texto.split(` `)){let ps=[...linea.matchAll(PALABRA)],mixta=ps.some(m=>m[0]!==m[0].toUpperCase());ps.forEach((m,i)=>{let w=m[0];if(esGrito(w)){mixta&&w.length<6&&!esGrito(ps[i-1]?.[0]??"")&&!esGrito(ps[i+1]?.[0]??"")&&siglas.add(w);return}let k=w.toLowerCase(),f=formas.get(k)??{forma:w,alta:0,baja:0},antes=linea.slice(0,m.index).replace(/[ \t]+$/,"").slice(-1);w===k?f.baja++:antes!==""&&!/[.!?¡¿:;"“«(\-–—•*]/.test(antes)&&(f.alta++,f.forma=w),formas.set(k,f)})}let bajar=s=>s.replace(PALABRA,w=>{if(siglas.has(w))return w;let f=formas.get(w.toLowerCase());return f!==void 0&&f.alta>f.baja?f.forma:w.toLowerCase()}),mayuscula=s=>s.replace(/(^[^A-Za-zÁÉÍÓÚÑÜáéíóúñü]*|[.!?][ \t]+[¡¿"“«]?)([a-záéíóúñü])/g,(_,a,b)=>a+b.toUpperCase()),seBaja=ps=>ps.length>=2||ps[0][0].length>=6;return texto.split(` `).map(linea=>{let ps=[...linea.matchAll(PALABRA)],gritos=ps.filter(m=>esGrito(m[0]));if(gritos.length>0&&ps.every(m=>m[0]===m[0].toUpperCase()))return seBaja(gritos)?mayuscula(bajar(linea)):linea;let j=0;for(;jl.length<=60&&l.split(/\s+/).length<=8&&!/^[\d\-–—•*·]/.test(l)&&!/[.,;!]$/.test(l)&&!/:./.test(l);function parrafos(texto){let bs=sinGritos(texto).split(/\n[ \t]*\n/).map(b=>b.split(` `).map(l=>l.trim()).filter(l=>l!=="")).filter(b=>b.length>0),salida=[];for(let i=0;i1&&esTitulo(b[0])?salida.push({titulo:b[0],lineas:b.slice(1)}):salida.push({titulo:null,lineas:b})}return salida}function Desplegable({texto,lineas}){let[abierto,setAbierto]=(0,import_react18.useState)(!1),largo=texto.length>lineas*90||texto.split(` `).length>lineas,cerrado=largo&&!abierto;return __gh("div",{"data-gufi-src":"components/estancias/piezas.tsx:175"},__gh("div",{style:{fontSize:16.5,lineHeight:1.65,color:A.body,...cerrado?{maxHeight:`${lineas*1.65}em`,overflow:"hidden",WebkitMaskImage:"linear-gradient(#000 55%, transparent)",maskImage:"linear-gradient(#000 55%, transparent)"}:{}},"data-gufi-src":"components/estancias/piezas.tsx:176"},parrafos(texto).map((p,i)=>__gh("p",{key:i,style:{margin:i===0?0:"1.1em 0 0"},"data-gufi-src":"components/estancias/piezas.tsx:192"},p.titulo!==null&&__gh("strong",{style:{display:"block",fontWeight:600,color:A.ink},"data-gufi-src":"components/estancias/piezas.tsx:193"},p.titulo),p.lineas.map((l,j)=>{let item=/^[-–•·*][ \t]+/.exec(l);return item===null?__gh("span",{key:j,style:{display:"block"},"data-gufi-src":"components/estancias/piezas.tsx:198"},l):__gh("span",{key:j,style:{display:"block",position:"relative",paddingLeft:"1.15em"},"data-gufi-src":"components/estancias/piezas.tsx:200"},__gh("span",{"aria-hidden":"true",style:{position:"absolute",left:"0.15em",color:A.muted},"data-gufi-src":"components/estancias/piezas.tsx:201"},"\u2022"),l.slice(item[0].length))})))),largo&&__gh("button",{type:"button",onClick:()=>setAbierto(!abierto),style:{...borrar,marginTop:14},"data-gufi-src":"components/estancias/piezas.tsx:210"},abierto?t("Mostrar menos","Show less"):t("Leer todo","Read more")))}var ICONOS=[[/wifi|internet/i,import_lucide_react18.Wifi],[/televisi|\btv\b|smart tv|netflix/i,import_lucide_react18.Tv],[/aire acondicionado|air conditioning/i,import_lucide_react18.Snowflake],[/calefacci|chimenea|heating|fireplace/i,import_lucide_react18.Flame],[/cocina|fogones|horno|lo básico para cocinar|kitchen|stove|oven|cooking/i,import_lucide_react18.CookingPot],[/platos|cubiertos|copas|vajilla|comedor|dishes|glasses|dining/i,import_lucide_react18.Utensils],[/lavadora|lavander|washer|laundr/i,import_lucide_react18.WashingMachine],[/secador|secadora|ventilador|dryer|fan/i,import_lucide_react18.Wind],[/plancha|perchas|armario|tendedero|iron|hangers|clothing|drying rack/i,import_lucide_react18.Shirt],[/cafetera|hervidor|tostadora|coffee|kettle|toaster/i,import_lucide_react18.Coffee],[/frigor|congelador|minibar|refrigerator|fridge|freezer/i,import_lucide_react18.Refrigerator],[/microondas|microwave/i,import_lucide_react18.Microwave],[/ascensor|elevator/i,import_lucide_react18.ArrowUpDown],[/aparcamiento|cargador|parking|ev charger/i,import_lucide_react18.Car],[/piscina|playa|jacuzzi|agua|pool|beach|hot tub|water/i,import_lucide_react18.Waves],[/bañera|bathtub/i,import_lucide_react18.Bath],[/ducha|champú|gel|acondicionador|esencial|shower|shampoo|soap|conditioner|essentials/i,import_lucide_react18.ShowerHead],[/trabajo|escritorio|workspace|laptop/i,import_lucide_react18.Laptop],[/cuna|bebé|niños|trona|familias|crib|baby|children|high chair|family/i,import_lucide_react18.Baby],[/llegada autónoma|llaves|cerradura|entrada independiente|self check-in|lockbox|keypad|lock|private entrance/i,import_lucide_react18.KeyRound],[/detector|extintor|botiquín|seguridad|alarm|extinguisher|first aid|safety/i,import_lucide_react18.ShieldCheck],[/terraza|balcón|tumbonas|vistas|patio|balcony|terrace|loungers|view/i,import_lucide_react18.Sun],[/jardín|patio|garden|backyard/i,import_lucide_react18.Trees],[/gimnasio|gym/i,import_lucide_react18.Dumbbell],[/ropa de cama|almohadas|cortinas|bed linen|pillows|blankets|shades/i,import_lucide_react18.BedDouble],[/mascotas|pets/i,import_lucide_react18.PawPrint],[/estancias largas|long term/i,import_lucide_react18.CalendarDays],[/montaña|mountain/i,import_lucide_react18.Mountain]],iconoDe=nombre=>(ICONOS.find(([re])=>re.test(nombre))??[null,import_lucide_react18.Check])[1];function Comodidades({lista}){let[todas,setTodas]=(0,import_react18.useState)(!1),vistas=todas?lista:lista.slice(0,10);return __gh(__gf,null,__gh("ul",{className:"bx-comodidades",style:{margin:0,padding:0,listStyle:"none",display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"18px 28px"},"data-gufi-src":"components/estancias/piezas.tsx:256"},vistas.map(x=>{let Icono=iconoDe(x);return __gh("li",{key:x,style:{display:"flex",alignItems:"center",gap:16,fontSize:16,color:A.ink},"data-gufi-src":"components/estancias/piezas.tsx:260"},__gh(Icono,{style:{...icono2,flexShrink:0},strokeWidth:1.6}),x)})),lista.length>10&&__gh("button",{type:"button",onClick:()=>setTodas(!todas),className:"bx-suave",style:{marginTop:26,height:46,padding:"0 22px",borderRadius:12,border:`1px solid ${A.ink}`,background:A.bg,fontFamily:"inherit",fontSize:15.5,fontWeight:600,color:A.ink,cursor:"pointer"},"data-gufi-src":"components/estancias/piezas.tsx:268"},todas?t("Ver menos","Show less"):t(`Ver las ${lista.length} comodidades`,`Show all ${lista.length} amenities`)))}function Inmueble({gufi,url,piso,vecinos}){let estrecho=useEstrecho(900),[copiado,setCopiado]=(0,import_react19.useState)(!1),alquiler=esAlquiler(piso),fotos=fotosDe(piso),mapa=mapaUrl(piso),donde2=lugar(piso.ciudad),precio2=Number(alquiler?piso.precio_mes:piso.precio_venta),tipo=alquiler?tipoDeAlquiler(piso):null,comodidades=piso.comodidades?piso.comodidades.split(" \xB7 "):[],datos=[];piso.superficie_m2!==null&&datos.push(`${Number(piso.superficie_m2)} m\xB2`),piso.dormitorios!==null&&datos.push(`${piso.dormitorios} ${piso.dormitorios===1?t("dormitorio","bedroom"):t("dormitorios","bedrooms")}`),piso.banos!==null&&datos.push(`${piso.banos} ${piso.banos===1?t("ba\xF1o","bathroom"):t("ba\xF1os","bathrooms")}`);let compartir=async()=>{let enlace4=window.location.href.split("?")[0];if(navigator.share){await navigator.share({title:piso.titulo,url:enlace4}).catch(()=>{});return}await navigator.clipboard.writeText(enlace4),setCopiado(!0),setTimeout(()=>setCopiado(!1),2e3)},alChat=()=>document.getElementById("chat-piso")?.scrollIntoView({behavior:"smooth",block:"start"}),caja2=__gh("div",{style:{display:"grid",gap:16},"data-gufi-src":"sections/inmueble.tsx:59"},__gh("div",{style:{padding:24,borderRadius:24,border:`1px solid ${A.hair}`,background:A.bg,boxShadow:A.sombra},"data-gufi-src":"sections/inmueble.tsx:60"},precio2>0?__gh("div",{style:{display:"flex",alignItems:"baseline",gap:6,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/inmueble.tsx:62"},__gh("span",{style:{fontSize:28,fontWeight:600,letterSpacing:"-0.025em",color:A.ink},"data-gufi-src":"sections/inmueble.tsx:63"},euros(precio2)),alquiler&&__gh("span",{style:{fontSize:16,color:A.body},"data-gufi-src":"sections/inmueble.tsx:64"},t("al mes","a month"))):__gh("span",{style:{fontSize:20,fontWeight:600,color:A.ink},"data-gufi-src":"sections/inmueble.tsx:67"},t("Precio a consultar","Price on request")),tipo&&__gh("p",{style:{margin:"6px 0 0",fontSize:15,color:A.muted},"data-gufi-src":"sections/inmueble.tsx:69"},tipo),__gh("p",{style:{margin:"14px 0 0",fontSize:15,lineHeight:1.5,color:A.body},"data-gufi-src":"sections/inmueble.tsx:70"},t("Preg\xFAntanos lo que quieras o pide visita en el chat: te contestamos aqu\xED mismo.","Ask us anything or book a viewing in the chat: we reply right here."))),__gh(ChatPiso,{gufi,piso:piso.id,venta:!alquiler}));return __gh("div",{className:"bx","data-gufi-src":"sections/inmueble.tsx:79"},__gh("style",{"data-gufi-src":"sections/inmueble.tsx:80"},ESTILO_ESTANCIAS),__gh("div",{className:"bx-caja",style:{maxWidth:1240,paddingTop:estrecho?14:26},"data-gufi-src":"sections/inmueble.tsx:81"},__gh("a",{href:url(alquiler?"/alquileres":"/venta"),className:"bx-enlace",style:{display:"inline-flex",alignItems:"center",gap:4,fontSize:15,color:A.muted,textDecoration:"none"},"data-gufi-src":"sections/inmueble.tsx:82"},__gh(import_lucide_react19.ChevronLeft,{style:{width:17,height:17}}),alquiler?t("Alquileres","Rentals"):t("En venta","For sale")),!estrecho&&__gh(Titular,{piso,donde:donde2,copiado,onCompartir:compartir}),__gh("div",{style:{marginTop:estrecho?12:22},"data-gufi-src":"sections/inmueble.tsx:88"},__gh(Fotos,{gufi,fotos,titulo:piso.titulo,estrecho})),estrecho&&__gh(Titular,{piso,donde:donde2,copiado,onCompartir:compartir}),__gh("div",{style:{marginTop:estrecho?8:40,display:"grid",gridTemplateColumns:estrecho?"minmax(0, 1fr)":"minmax(0, 1fr) 400px",gap:"clamp(40px, 6vw, 90px)",alignItems:"start"},"data-gufi-src":"sections/inmueble.tsx:93"},__gh("div",{"data-gufi-src":"sections/inmueble.tsx:94"},__gh(Bloque2,{primero:!0},__gh("h2",{style:{margin:0,fontSize:"clamp(21px, 2.4vw, 24px)",fontWeight:600,letterSpacing:"-0.02em",color:A.ink},"data-gufi-src":"sections/inmueble.tsx:96"},alquiler?t(`Piso en alquiler en ${donde2}`,`Home for rent in ${donde2}`):t(`Piso en venta en ${donde2}`,`Home for sale in ${donde2}`)),datos.length>0&&__gh("p",{style:{margin:"6px 0 0",fontSize:16.5,color:A.body},"data-gufi-src":"sections/inmueble.tsx:99"},datos.join(" \xB7 "))),__gh(Bloque2,null,__gh("div",{style:{display:"grid",gap:22},"data-gufi-src":"sections/inmueble.tsx:103"},tipo&&__gh(Punto,{icono:import_lucide_react19.Clock,titulo:tipo,texto:t("Pregunta en el chat cu\xE1ndo podr\xEDas entrar.","Ask in the chat when you could move in.")}),piso.direccion&&__gh(Punto,{icono:import_lucide_react19.MapPin,titulo:`${piso.direccion}, ${donde2}`,texto:t("La ubicaci\xF3n, en el mapa de abajo.","The location is on the map below.")}),__gh(Punto,{icono:import_lucide_react19.CalendarDays,titulo:t("Visitas con cita","Viewings by appointment"),texto:t("P\xEDdela en el chat y eliges el hueco que te venga bien.","Ask in the chat and pick a time that suits you.")}))),piso.descripcion&&__gh(Bloque2,null,__gh(Desplegable,{texto:piso.descripcion,lineas:7})),comodidades.length>0&&__gh(Bloque2,{titulo:t("Qu\xE9 tiene","What it has")},__gh(Comodidades,{lista:comodidades})),estrecho&&__gh("div",{style:{paddingTop:8},"data-gufi-src":"sections/inmueble.tsx:122"},caja2)),!estrecho&&__gh("aside",{style:{position:"sticky",top:92},"data-gufi-src":"sections/inmueble.tsx:125"},caja2)),mapa&&__gh("section",{style:{marginTop:40,borderTop:`1px solid ${A.hair}`,padding:"clamp(36px, 5vw, 52px) 0"},"data-gufi-src":"sections/inmueble.tsx:129"},__gh("h2",{style:h2,"data-gufi-src":"sections/inmueble.tsx:130"},t("D\xF3nde est\xE1","Where it is")),__gh("p",{style:{margin:"6px 0 0",fontSize:16,color:A.body},"data-gufi-src":"sections/inmueble.tsx:131"},piso.direccion?`${piso.direccion}, ${donde2}`:donde2),__gh("div",{style:{marginTop:22,borderRadius:A.radio,overflow:"hidden",background:A.alt},"data-gufi-src":"sections/inmueble.tsx:132"},__gh("iframe",{src:mapa,title:`${t("D\xF3nde est\xE1","Where it is")}: ${piso.titulo}`,loading:"lazy",referrerPolicy:"no-referrer-when-downgrade",style:{display:"block",width:"100%",height:estrecho?280:440,border:"none"},"data-gufi-src":"sections/inmueble.tsx:133"}))),vecinos.length>0&&__gh("div",{style:{borderTop:`1px solid ${A.hair}`,paddingBottom:"clamp(40px, 6vw, 80px)"},"data-gufi-src":"sections/inmueble.tsx:139"},__gh(Fila,{titulo:t("M\xE1s pisos","More homes")},vecinos.map(v=>{let p=Number(alquiler?v.precio_mes:v.precio_venta);return __gh(TarjetaEstancia,{key:v.id,piso:v,href:url(`/${v.slug}`),ancho:estrecho?260:290,precio:p>0?{valor:euros(p),nota:alquiler?t("al mes","a month"):""}:void 0})})))),estrecho&&__gh("div",{style:{position:"sticky",bottom:0,zIndex:25,background:"rgba(255,255,255,0.94)",backdropFilter:"saturate(180%) blur(18px)",WebkitBackdropFilter:"saturate(180%) blur(18px)",borderTop:`1px solid ${A.hair}`},"data-gufi-src":"sections/inmueble.tsx:160"},__gh("div",{className:"bx-caja",style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:14,padding:"12px var(--bx-margen) calc(12px + env(safe-area-inset-bottom))"},"data-gufi-src":"sections/inmueble.tsx:161"},__gh("span",{style:{fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/inmueble.tsx:162"},__gh("span",{style:{display:"block",fontSize:17,fontWeight:600,color:A.ink},"data-gufi-src":"sections/inmueble.tsx:163"},precio2>0?`${euros(precio2)}${alquiler?t(" al mes"," a month"):""}`:t("Precio a consultar","Price on request")),tipo&&__gh("span",{style:{display:"block",fontSize:13.5,color:A.muted},"data-gufi-src":"sections/inmueble.tsx:166"},tipo)),__gh("button",{type:"button",onClick:alChat,className:"bx-boton",style:{...botonVerde,flexShrink:0},"data-gufi-src":"sections/inmueble.tsx:168"},t("Preguntar","Ask")))))}var import_react20=require("react"),import_lucide_react20=require("lucide-react");function ciudadDeLaUrl2(){if(typeof window>"u")return"";let v=new URLSearchParams(window.location.search).get("ciudad");return v?v.trim():""}var SIN_FILTROS={dormitorios:0,maxNoche:0,valorados:!1},DE_A=24;function Estancias({gufi,url,pisos}){let{h1,texto}=textoDe("/estancias-cortas"),descuento=Number(gufi.env.DESCUENTO_WEB),estrecho=useEstrecho(760),[busqueda,setBusqueda]=(0,import_react20.useState)(()=>({...SIN_BUSQUEDA,ciudad:ciudadDeLaUrl2()})),[filtros,setFiltros]=(0,import_react20.useState)(SIN_FILTROS),[verFiltros,setVerFiltros]=(0,import_react20.useState)(!1),[vistos,setVistos]=(0,import_react20.useState)(DE_A),[desde2,setDesde]=(0,import_react20.useState)({}),[libres,setLibres]=(0,import_react20.useState)(null),[buscando,setBuscando]=(0,import_react20.useState)(!1),[error,setError]=(0,import_react20.useState)(""),conFechas=!!(busqueda.entrada&&busqueda.salida);(0,import_react20.useEffect)(()=>{gufi.publicAutomation("web_disponibilidad").run({accion:"precios"}).then(r=>setDesde(r.precios)).catch(e=>{console.error("web_disponibilidad precios",e),setError(t("No hemos podido cargar los precios. Prueba a recargar la p\xE1gina.","We couldn\u2019t load the prices. Try reloading the page."))})},[gufi]),(0,import_react20.useEffect)(()=>{if(!busqueda.entrada||!busqueda.salida){setLibres(null);return}let vivo=!0;return setBuscando(!0),setError(""),gufi.publicAutomation("web_disponibilidad").run({accion:"buscar",entrada:busqueda.entrada,salida:busqueda.salida,huespedes:busqueda.huespedes||void 0}).then(r=>{if(!vivo)return;let m={};for(let l of r.libres)m[l.slug]=l;setLibres(m)}).catch(e=>{vivo&&(console.error("web_disponibilidad buscar",e),setLibres(null),setError(t("No hemos podido mirar qu\xE9 est\xE1 libre esas noches. Prueba otra vez en un momento.","We couldn\u2019t check availability for those nights. Please try again in a moment.")))}).finally(()=>{vivo&&setBuscando(!1)}),()=>{vivo=!1}},[gufi,busqueda.entrada,busqueda.salida,busqueda.huespedes]);let delSitio=(0,import_react20.useMemo)(()=>pisos.filter(p=>p.seccion==="estancias_cortas"),[pisos]),destinos=(0,import_react20.useMemo)(()=>{let g=new Map;for(let p of delSitio){if(!p.ciudad)continue;let c=p.comunidad??p.ciudad;g.has(c)||g.set(c,new Map);let m=g.get(c);m.set(p.ciudad,(m.get(p.ciudad)??0)+1)}return[...g.entries()].map(([comunidad,m])=>{let sitios=[...m.entries()].sort((a,b)=>b[1]-a[1]||a[0].localeCompare(b[0],"es"));return{comunidad,sitios,n:sitios.reduce((s,[,n])=>s+n,0)}}).sort((a,b)=>b.n-a.n||a.comunidad.localeCompare(b.comunidad,"es"))},[delSitio]),plazasDe=p=>p.tipo==="hostal"?p.plazas:p.capacidad,resultado=(0,import_react20.useMemo)(()=>delSitio.filter(p=>{if(busqueda.ciudad!==""&&p.ciudad!==busqueda.ciudad||busqueda.ciudad===""&&busqueda.comunidad!==""&&(p.comunidad??p.ciudad)!==busqueda.comunidad||busqueda.huespedes>0&&Number(plazasDe(p))0&&Number(p.dormitorios)0){let n=libres?libres[p.slug]?.porNoche:desde2[p.slug];if(n===void 0||n>filtros.maxNoche)return!1}return!0}),[delSitio,busqueda,libres,filtros,desde2]),peso=p=>p.valoracion===null?0:Number(p.valoracion)*Math.log10(10+Number(p.resenas)),ordenado=(0,import_react20.useMemo)(()=>[...resultado].sort((a,b)=>libres?libres[a.slug].total-libres[b.slug].total:peso(b)-peso(a)),[resultado,libres]),nFiltros=(filtros.dormitorios>0?1:0)+(filtros.maxNoche>0?1:0)+(filtros.valorados?1:0),buscandoAlgo=textoDestino(busqueda)!==""||conFechas||busqueda.huespedes>0||nFiltros>0;(0,import_react20.useEffect)(()=>setVistos(DE_A),[busqueda,filtros]);let precioDe2=p=>{let l=libres?.[p.slug];if(l)return{valor:euros(l.total),nota:`${t("en total","total")} \xB7 ${l.noches} ${l.noches===1?t("noche","night"):t("noches","nights")}`};if(!libres&&desde2[p.slug]!==void 0)return{valor:`${t("Desde","From")} ${euros(desde2[p.slug])}`,nota:t("noche","night")}},hrefDe=p=>{if(!conFechas)return url(`/${p.slug}`);let q=new URLSearchParams({entrada:busqueda.entrada,salida:busqueda.salida});return busqueda.huespedes>0&&q.set("huespedes",String(busqueda.huespedes)),`${url(`/${p.slug}`)}?${q.toString()}`},tarjeta=(p,ancho)=>__gh(TarjetaEstancia,{key:p.id,piso:p,href:hrefDe(p),precio:precioDe2(p),ancho}),anchoFila=estrecho?280:300,filas=(0,import_react20.useMemo)(()=>{let porPeso=[...delSitio].sort((a,b)=>peso(b)-peso(a)),out=[],valorados=porPeso.filter(muyValorado);valorados.length>=4&&out.push({titulo:t("Los que m\xE1s gustan","Guest favourites"),pisos:valorados.slice(0,16),ver:()=>setFiltros({...SIN_FILTROS,valorados:!0})});let grupos=porPeso.filter(p=>Number(p.capacidad)>=6);grupos.length>=4&&out.push({titulo:t("Para ir en grupo","Great for groups"),pisos:grupos.slice(0,16),ver:()=>setBusqueda(b=>({...b,huespedes:6}))});let fuera=porPeso.filter(p=>p.ciudad&&p.ciudad!=="Madrid");fuera.length>=4&&out.push({titulo:t("Escapadas fuera de Madrid","Getaways outside Madrid"),pisos:fuera.slice(0,16)});let dos=porPeso.filter(p=>p.tipo!=="hostal"&&Number(p.capacidad)>0&&Number(p.capacidad)<=2);return dos.length>=4&&out.push({titulo:t("Para dos","For two"),pisos:dos.slice(0,16)}),out},[delSitio]),quitarTodo=()=>{setBusqueda(SIN_BUSQUEDA),setFiltros(SIN_FILTROS)},cuantos=`${resultado.length} ${resultado.length===1?t("alojamiento","place"):t("alojamientos","places")}`;return __gh("div",{className:"bx","data-gufi-src":"sections/estancias.tsx:186"},__gh("style",{"data-gufi-src":"sections/estancias.tsx:187"},ESTILO_ESTANCIAS),__gh("header",{className:"bx-caja",style:{paddingTop:"clamp(40px, 7vw, 88px)",paddingBottom:"clamp(26px, 4vw, 40px)",textAlign:"center"},"data-gufi-src":"sections/estancias.tsx:189"},__gh("h1",{style:{margin:0,fontSize:"clamp(38px, 6.2vw, 64px)",lineHeight:1.04,fontWeight:600,letterSpacing:"-0.035em",color:A.ink},"data-gufi-src":"sections/estancias.tsx:190"},h1),__gh("p",{style:{margin:"14px auto 0",maxWidth:620,fontSize:"clamp(17px, 2vw, 21px)",lineHeight:1.45,color:A.muted,letterSpacing:"-0.01em"},"data-gufi-src":"sections/estancias.tsx:191"},texto),descuento>0&&__gh("p",{style:{margin:"14px auto 0",display:"inline-flex",alignItems:"baseline",gap:9,fontSize:"clamp(15px, 1.6vw, 16.5px)",lineHeight:1.45,fontWeight:500,color:A.ink},"data-gufi-src":"sections/estancias.tsx:197"},__gh("span",{style:{flexShrink:0,width:7,height:7,borderRadius:"50%",background:A.accent,transform:"translateY(-1px)"},"data-gufi-src":"sections/estancias.tsx:198"}),t(`Reservando aqu\xED, un ${descuento} % menos que nuestra tarifa y sin comisiones de plataforma.`,`Book here and pay ${descuento}% less than our standard rate, with no platform fees.`)),__gh("div",{style:{marginTop:"clamp(26px, 4vw, 40px)"},"data-gufi-src":"sections/estancias.tsx:202"},__gh(Buscador,{gufi,valor:busqueda,onCambio:setBusqueda,destinos,estrecho}))),__gh("div",{style:{position:"sticky",top:66,zIndex:20,background:"rgba(255,255,255,0.88)",backdropFilter:"saturate(180%) blur(18px)",WebkitBackdropFilter:"saturate(180%) blur(18px)",borderBottom:`1px solid ${A.hair}`},"data-gufi-src":"sections/estancias.tsx:212"},__gh("div",{className:"bx-caja",style:{display:"flex",alignItems:"center",gap:16},"data-gufi-src":"sections/estancias.tsx:213"},__gh("div",{className:"bx-pista",style:{flex:1,minWidth:0,display:"flex",gap:26,overflowX:"auto",maskImage:"linear-gradient(to right, #000 calc(100% - 48px), transparent)",WebkitMaskImage:"linear-gradient(to right, #000 calc(100% - 48px), transparent)"},"data-gufi-src":"sections/estancias.tsx:214"},[["",delSitio.length],...destinos.map(g=>[g.comunidad,g.n])].map(([c,n])=>{let activo=busqueda.comunidad===c&&(c===""?busqueda.ciudad==="":!0);return __gh("button",{key:c||"todos",type:"button",className:"bx-chip",onClick:()=>setBusqueda(b=>({...b,comunidad:c,ciudad:""})),style:{flexShrink:0,padding:"16px 0 14px",border:"none",borderBottom:`2px solid ${activo?A.ink:"transparent"}`,background:"none",fontFamily:"inherit",fontSize:14.5,fontWeight:activo?600:500,color:activo?A.ink:A.muted,cursor:"pointer",whiteSpace:"nowrap"},"data-gufi-src":"sections/estancias.tsx:230"},c||t("Todos los destinos","All destinations")," ",__gh("span",{style:{color:A.muted,fontWeight:400,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/estancias.tsx:249"},n))})),__gh("button",{type:"button",onClick:()=>setVerFiltros(!0),className:"bx-suave",style:{flexShrink:0,display:"inline-flex",alignItems:"center",gap:8,height:40,padding:"0 16px",borderRadius:999,border:`1px solid ${nFiltros?A.ink:A.line}`,background:A.bg,fontFamily:"inherit",fontSize:14,fontWeight:600,color:A.ink,cursor:"pointer"},"data-gufi-src":"sections/estancias.tsx:254"},__gh(import_lucide_react20.SlidersHorizontal,{style:{width:15,height:15}}),t("Filtros","Filters"),nFiltros>0&&__gh("span",{style:{minWidth:20,height:20,borderRadius:999,background:A.ink,color:"#fff",fontSize:12,display:"grid",placeItems:"center"},"data-gufi-src":"sections/estancias.tsx:258"},nFiltros)))),__gh("main",{className:"bx-caja",style:{paddingBottom:"clamp(70px, 9vw, 120px)"},"data-gufi-src":"sections/estancias.tsx:264"},error!==""&&__gh("p",{style:{margin:"24px 0 0",fontSize:15,color:A.body},"data-gufi-src":"sections/estancias.tsx:265"},error),buscandoAlgo?__gh(__gf,null,__gh("div",{style:{marginTop:30,marginBottom:24,display:"flex",flexWrap:"wrap",alignItems:"baseline",justifyContent:"space-between",gap:12},"data-gufi-src":"sections/estancias.tsx:269"},__gh("h2",{style:{margin:0,fontSize:"clamp(21px, 2.4vw, 25px)",fontWeight:600,letterSpacing:"-0.022em",color:A.ink},"data-gufi-src":"sections/estancias.tsx:270"},buscando?t("Mirando qu\xE9 est\xE1 libre","Checking availability"):conFechas?`${cuantos} ${t("libres del","available")} ${diaCorto(busqueda.entrada)} ${t("al","to")} ${diaCorto(busqueda.salida)}`:textoDestino(busqueda)?`${cuantos} ${t("en","in")} ${textoDestino(busqueda)}`:cuantos),__gh("span",{style:{display:"flex",alignItems:"baseline",gap:18},"data-gufi-src":"sections/estancias.tsx:279"},conFechas&&!buscando&&__gh("span",{style:{fontSize:15,color:A.muted},"data-gufi-src":"sections/estancias.tsx:281"},noches(busqueda.entrada,busqueda.salida)," ",t("noches, precio total con limpieza","nights, total price incl. cleaning")),__gh("button",{type:"button",onClick:quitarTodo,style:borrar,"data-gufi-src":"sections/estancias.tsx:285"},t("Quitar todo","Clear all")))),buscando?null:ordenado.length===0?__gh("div",{style:{padding:"80px 24px",textAlign:"center",background:A.alt,borderRadius:24},"data-gufi-src":"sections/estancias.tsx:291"},__gh("h3",{style:{margin:0,fontSize:24,fontWeight:600,letterSpacing:"-0.02em",color:A.ink},"data-gufi-src":"sections/estancias.tsx:292"},t("Con eso no nos queda nada","Nothing matches that")),__gh("p",{style:{margin:"10px 0 22px",fontSize:16,color:A.muted},"data-gufi-src":"sections/estancias.tsx:293"},conFechas?t("Prueba con otras fechas o quita alg\xFAn filtro.","Try other dates or remove a filter."):t("Quita alg\xFAn filtro y vuelve a mirar.","Remove a filter and look again.")),__gh("button",{type:"button",onClick:quitarTodo,className:"bx-boton",style:botonVerde,"data-gufi-src":"sections/estancias.tsx:296"},t("Ver todos","See all"))):__gh(Rejilla,{pisos:ordenado,vistos,onMas:()=>setVistos(v=>v+DE_A),tarjeta})):__gh(__gf,null,filas.map(f=>__gh(Fila,{key:f.titulo,titulo:f.titulo,accion:f.ver?{texto:t("Ver todos","See all"),onClick:f.ver}:void 0},f.pisos.map(p=>tarjeta(p,anchoFila)))),__gh("section",{style:{marginTop:"clamp(44px, 6vw, 68px)"},"data-gufi-src":"sections/estancias.tsx:311"},__gh("h2",{style:{margin:"0 0 22px",fontSize:"clamp(21px, 2.4vw, 25px)",fontWeight:600,letterSpacing:"-0.022em",color:A.ink},"data-gufi-src":"sections/estancias.tsx:312"},t("Todos los alojamientos","All places")," ",__gh("span",{style:{color:A.muted,fontWeight:500},"data-gufi-src":"sections/estancias.tsx:313"},delSitio.length)),__gh(Rejilla,{pisos:ordenado,vistos,onMas:()=>setVistos(v=>v+DE_A),tarjeta})))),__gh(gufi.Dialog,{open:verFiltros,onClose:()=>setVerFiltros(!1),title:t("Filtros","Filters"),size:"md",footer:__gh("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,width:"100%"},"data-gufi-src":"sections/estancias.tsx:327"},__gh("button",{type:"button",onClick:()=>setFiltros(SIN_FILTROS),style:borrar,"data-gufi-src":"sections/estancias.tsx:328"},t("Quitar filtros","Clear filters")),__gh("button",{type:"button",onClick:()=>setVerFiltros(!1),className:"bx-boton",style:botonVerde,"data-gufi-src":"sections/estancias.tsx:331"},t("Ver","Show")," ",cuantos))},__gh(Opciones,{titulo:t("Precio por noche","Price per night"),nota:t("Sin fechas, el de la noche m\xE1s barata de los pr\xF3ximos dos meses.","Without dates, the cheapest night in the next two months."),valor:filtros.maxNoche,opciones:[[0,t("Cualquiera","Any")],...[80,120,160,220,300].map(n=>[n,`${t("Hasta","Up to")} ${euros(n)}`])],onCambio:v=>setFiltros(f=>({...f,maxNoche:v}))}),__gh(Opciones,{titulo:t("Dormitorios","Bedrooms"),valor:filtros.dormitorios,opciones:[[0,t("Cualquiera","Any")],...[1,2,3,4].map(n=>[n,`${n} ${t("o m\xE1s","or more")}`])],onCambio:v=>setFiltros(f=>({...f,dormitorios:v}))}),__gh("label",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:16,padding:"22px 0 6px",cursor:"pointer"},"data-gufi-src":"sections/estancias.tsx:350"},__gh("span",{"data-gufi-src":"sections/estancias.tsx:351"},__gh("span",{style:{display:"block",fontSize:17,fontWeight:600,color:A.ink},"data-gufi-src":"sections/estancias.tsx:352"},t("S\xF3lo los que m\xE1s gustan","Guest favourites only")),__gh("span",{style:{display:"block",marginTop:3,fontSize:14.5,color:A.muted},"data-gufi-src":"sections/estancias.tsx:353"},t("4,8 o m\xE1s, con 20 rese\xF1as o m\xE1s","Rated 4.8 or higher, with 20+ reviews"))),__gh(Interruptor,{encendido:filtros.valorados,onCambio:v=>setFiltros(f=>({...f,valorados:v}))}))))}function Rejilla({pisos,vistos,onMas,tarjeta}){return __gh(__gf,null,__gh("div",{className:"bx-rejilla","data-gufi-src":"sections/estancias.tsx:365"},pisos.slice(0,vistos).map(p=>tarjeta(p))),pisos.length>vistos&&__gh("div",{style:{marginTop:44,textAlign:"center"},"data-gufi-src":"sections/estancias.tsx:367"},__gh("p",{style:{margin:"0 0 14px",fontSize:15,color:A.muted},"data-gufi-src":"sections/estancias.tsx:368"},t(`Ves ${vistos} de ${pisos.length}`,`Showing ${vistos} of ${pisos.length}`)),__gh("button",{type:"button",onClick:onMas,className:"bx-suave",style:{height:48,padding:"0 26px",borderRadius:14,border:`1px solid ${A.ink}`,background:A.bg,fontFamily:"inherit",fontSize:16,fontWeight:600,color:A.ink,cursor:"pointer"},"data-gufi-src":"sections/estancias.tsx:371"},t("Ver m\xE1s","Show more"))))}function Opciones({titulo:titulo3,nota:nota2,valor,opciones,onCambio}){return __gh("div",{style:{padding:"18px 0 22px",borderBottom:`1px solid ${A.hair}`},"data-gufi-src":"sections/estancias.tsx:382"},__gh("div",{style:{fontSize:17,fontWeight:600,color:A.ink},"data-gufi-src":"sections/estancias.tsx:383"},titulo3),nota2&&__gh("div",{style:{marginTop:3,fontSize:14.5,color:A.muted},"data-gufi-src":"sections/estancias.tsx:384"},nota2),__gh("div",{style:{marginTop:14,display:"flex",flexWrap:"wrap",gap:8},"data-gufi-src":"sections/estancias.tsx:385"},opciones.map(([v,t2])=>__gh("button",{key:v,type:"button",onClick:()=>onCambio(v),style:{height:40,padding:"0 16px",borderRadius:999,border:`1px solid ${valor===v?A.ink:A.line}`,background:valor===v?A.ink:A.bg,color:valor===v?"#fff":A.ink,fontFamily:"inherit",fontSize:14.5,fontWeight:500,cursor:"pointer"},"data-gufi-src":"sections/estancias.tsx:387"},t2))))}function Interruptor({encendido,onCambio}){return __gh("button",{type:"button",role:"switch","aria-checked":encendido,onClick:()=>onCambio(!encendido),style:{position:"relative",flexShrink:0,width:51,height:31,borderRadius:999,border:"none",background:encendido?A.accent:"#e9e9eb",cursor:"pointer",padding:0,transition:"background 0.2s"},"data-gufi-src":"sections/estancias.tsx:414"},__gh("span",{style:{position:"absolute",top:2,left:encendido?22:2,width:27,height:27,borderRadius:"50%",background:"#fff",boxShadow:"0 2px 4px rgba(0,0,0,0.2)",transition:"left 0.2s"},"data-gufi-src":"sections/estancias.tsx:421"}))}var import_react24=require("react"),import_lucide_react23=require("lucide-react");var import_react21=require("react");function useDisponibilidad(gufi,slug){let[cal,setCal]=(0,import_react21.useState)(null),[error,setError]=(0,import_react21.useState)("");return(0,import_react21.useEffect)(()=>{if(!slug)return;let vivo=!0;return setCal(null),setError(""),gufi.publicAutomation("web_disponibilidad").run({accion:"calendario",slug}).then(r=>{if(!vivo)return;let dias={};for(let[d2,libre,precio2,min]of r.dias)dias[d2]={libre:libre===1,precio:precio2,min};setCal({dias,limpieza:r.limpieza,hasta:r.hasta})}).catch(e=>{vivo&&(console.error("web_disponibilidad",e),setError(e instanceof Error?e.message:String(e)))}),()=>{vivo=!1}},[gufi,slug]),{cal,error}}function desde(cal){let o=Object.values(cal.dias).filter(d2=>d2.libre&&d2.precio!=null&&d2.precio>0).map(d2=>d2.precio).sort((a,b)=>a-b);if(!o.length)return null;let mediana=o[Math.floor(o.length/2)];return o.find(p=>p>=mediana*.4)??null}function cuenta(cal,entrada3,salida){let n=noches(entrada3,salida),primera=cal.dias[entrada3];if(n<1||!primera||primera.min&&n{abierto&&(setModo(modoInicial),setTipo(tipoFijo??"huesped"),setError(""))},[abierto,modoInicial,tipoFijo]);let enviar=async e=>{if(e.preventDefault(),enviando)return;let fd=new FormData(e.currentTarget),v=k=>String(fd.get(k)??"").trim(),email=v("email").toLowerCase(),password=String(fd.get("password")??"");if(!emailValido(email))return setError(mensajeDe("INVALID_EMAIL"));if(!password)return setError(t("Escribe tu contrase\xF1a.","Please enter your password."));let entrada3={email,password};if(modo==="crear"){if(password.length<8||!/[A-Z]/.test(password)||!/[0-9]/.test(password))return setError(mensajeDe("PASSWORD_TOO_SHORT"));if(password!==String(fd.get("password2")??""))return setError(t("Las contrase\xF1as no coinciden.","The passwords don\u2019t match."));if(v("nombre").length<2)return setError(mensajeDe("NOMBRE_REQUIRED"));let prefijo=v("prefijo"),numero=v("telefono").replace(/[\s\-.]/g,"");if(!(prefijo==="+34"?/^[6789]\d{8}$/.test(numero):/^\d{6,15}$/.test(numero)))return setError(mensajeDe("INVALID_PHONE"));if(tipo==="propietario"&&servicios.length===0)return setError(mensajeDe("SERVICIO_REQUIRED"));if(tipo==="propietario"&&v("direccion").length<5)return setError(mensajeDe("DIRECCION_REQUIRED"));entrada3={...entrada3,tipo,nombre:v("nombre"),apellidos:v("apellidos"),telefono_prefijo:prefijo,telefono:numero,...tipo==="propietario"?{servicios,direccion:v("direccion")}:{}}}setEnviando(!0),setError("");try{let r=await gufi.publicAutomation(modo==="crear"?"ecommerce_register":"ecommerce_login").run(entrada3);if(!r.ok||!r.token)return setError(mensajeDe(r.error??""));let sesion={nombre:r.nombre??v("nombre"),email:r.email??email,tipo:r.tipo??tipo};guardarSesion(r.token,sesion),alEntrar(sesion)}catch(err){setError(`${t("No ha salido.","That didn\u2019t work.")} ${err instanceof Error?err.message:""}`)}finally{setEnviando(!1)}},titulo3=modo==="entrar"?t("\xA1Hola otra vez!","Welcome back!"):t("Crea tu cuenta","Create your account"),frase=modo==="entrar"?t("Tus reservas y tus casas, donde las dejaste.","Your bookings and your homes, right where you left them."):tipo==="propietario"?t("Tu casa, en buenas manos.","Your home, in good hands."):t("Reserva directo con nosotros.","Book direct with us.");return __gh(gufi.Dialog,{open:abierto,onClose,title:titulo3,size:"xl",padding:0},__gh("style",{"data-gufi-src":"components/estancias/Acceso.tsx:133"},ESTILO),__gh("div",{className:"bx-acc","data-gufi-src":"components/estancias/Acceso.tsx:134"},__gh("div",{className:"bx-acc-foto","data-gufi-src":"components/estancias/Acceso.tsx:135"},__gh("img",{src:foto2,alt:"","data-no-thumb":"true",sizes:"(max-width: 760px) 100vw, 440px","data-gufi-src":"components/estancias/Acceso.tsx:136"}),__gh("div",{className:"bx-acc-foto-tx","data-gufi-src":"components/estancias/Acceso.tsx:137"},__gh("img",{src:LOGO,alt:"Batuecas",sizes:"140px","data-gufi-src":"components/estancias/Acceso.tsx:138"}),__gh("span",{"data-gufi-src":"components/estancias/Acceso.tsx:139"},frase))),__gh("div",{className:"bx-acc-cuerpo","data-gufi-src":"components/estancias/Acceso.tsx:143"},__gh("div",{role:"tablist",className:"bx-acc-tabs","data-gufi-src":"components/estancias/Acceso.tsx:144"},["entrar","crear"].map(m=>__gh("button",{key:m,type:"button",role:"tab","aria-selected":modo===m,className:modo===m?"on":"",onClick:()=>{setModo(m),setError("")},"data-gufi-src":"components/estancias/Acceso.tsx:146"},m==="entrar"?t("Iniciar sesi\xF3n","Sign in"):t("Crear cuenta","Create account")))),__gh("form",{onSubmit:enviar,noValidate:!0,"data-gufi-src":"components/estancias/Acceso.tsx:152"},modo==="crear"&&!tipoFijo&&__gh("div",{className:"bx-acc-tipos","data-gufi-src":"components/estancias/Acceso.tsx:154"},__gh(Tarjeta2,{activa:tipo==="huesped",onClick:()=>setTipo("huesped"),icono:__gh(import_lucide_react21.BedDouble,{style:{width:20,height:20},strokeWidth:1.7}),titulo:t("Quiero alojarme","I want to stay"),texto:t("Reservo estancias","I book stays")}),__gh(Tarjeta2,{activa:tipo==="propietario",onClick:()=>setTipo("propietario"),icono:__gh(import_lucide_react21.Home,{style:{width:20,height:20},strokeWidth:1.7}),titulo:t("Tengo una casa","I own a home"),texto:t("Alquiler, venta o reforma","Rent, sell or renovate")})),__gh(Campo3,{etiqueta:t("Correo","Email")},__gh("input",{name:"email",type:"email",autoComplete:"email",placeholder:t("tu@correo.com","you@email.com"),"data-gufi-src":"components/estancias/Acceso.tsx:173"})),modo==="entrar"?__gh(Campo3,{etiqueta:t("Contrase\xF1a","Password")},__gh("input",{name:"password",type:"password",autoComplete:"current-password",placeholder:"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022","data-gufi-src":"components/estancias/Acceso.tsx:178"})):__gh(__gf,null,__gh("div",{className:"bx-acc-2","data-gufi-src":"components/estancias/Acceso.tsx:182"},__gh(Campo3,{etiqueta:t("Contrase\xF1a","Password")},__gh("input",{name:"password",type:"password",autoComplete:"new-password",placeholder:"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022","data-gufi-src":"components/estancias/Acceso.tsx:184"})),__gh(Campo3,{etiqueta:t("Repetir contrase\xF1a","Repeat password")},__gh("input",{name:"password2",type:"password",autoComplete:"new-password",placeholder:"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022","data-gufi-src":"components/estancias/Acceso.tsx:187"}))),__gh("div",{className:"bx-acc-pista","data-gufi-src":"components/estancias/Acceso.tsx:190"},t("M\xEDnimo 8 caracteres, una may\xFAscula y un n\xFAmero","At least 8 characters, one capital letter and one number")),__gh("div",{className:"bx-acc-2","data-gufi-src":"components/estancias/Acceso.tsx:191"},__gh(Campo3,{etiqueta:t("Nombre","First name")},__gh("input",{name:"nombre",autoComplete:"given-name","data-gufi-src":"components/estancias/Acceso.tsx:193"})),__gh(Campo3,{etiqueta:t("Apellidos","Last name")},__gh("input",{name:"apellidos",autoComplete:"family-name","data-gufi-src":"components/estancias/Acceso.tsx:196"}))),__gh(Campo3,{etiqueta:t("Tel\xE9fono","Phone")},__gh("div",{className:"bx-acc-tel","data-gufi-src":"components/estancias/Acceso.tsx:200"},__gh("select",{name:"prefijo",defaultValue:"+34","aria-label":t("Prefijo","Country code"),"data-gufi-src":"components/estancias/Acceso.tsx:201"},PREFIJOS.map(p=>__gh("option",{key:p,value:p,"data-gufi-src":"components/estancias/Acceso.tsx:202"},p))),__gh("input",{name:"telefono",type:"tel",autoComplete:"tel-national",placeholder:"612 345 678","data-gufi-src":"components/estancias/Acceso.tsx:204"}))),tipo==="propietario"&&__gh(__gf,null,__gh("div",{className:"bx-acc-etq","data-gufi-src":"components/estancias/Acceso.tsx:210"},t("Qu\xE9 quieres hacer con tu casa","What would you like to do with your home")),__gh("div",{className:"bx-acc-servicios","data-gufi-src":"components/estancias/Acceso.tsx:211"},SERVICIOS.map(([k,es,en])=>{let on=servicios.includes(k);return __gh("button",{key:k,type:"button","aria-pressed":on,className:on?"on":"",onClick:()=>setServicios(on?servicios.filter(x=>x!==k):[...servicios,k]),"data-gufi-src":"components/estancias/Acceso.tsx:215"},on&&__gh(import_lucide_react21.Check,{style:{width:14,height:14},strokeWidth:2.6}),t(es,en))})),__gh(Campo3,{etiqueta:t("Direcci\xF3n de la casa","Home address")},__gh("input",{name:"direccion",autoComplete:"street-address",placeholder:t("Calle, n\xFAmero, piso y ciudad","Street, number, floor and city"),"data-gufi-src":"components/estancias/Acceso.tsx:223"}))),__gh("p",{className:"bx-acc-legal","data-gufi-src":"components/estancias/Acceso.tsx:228"},t("Al crear tu cuenta aceptas los","By creating an account you accept the")," ",__gh("a",{href:url("/terminos-y-condiciones"),target:"_blank",rel:"noreferrer","data-gufi-src":"components/estancias/Acceso.tsx:230"},t("T\xE9rminos y condiciones","Terms and conditions"))," ",t("y la","and the")," ",__gh("a",{href:url("/politica-de-privacidad"),target:"_blank",rel:"noreferrer","data-gufi-src":"components/estancias/Acceso.tsx:232"},t("Pol\xEDtica de privacidad","Privacy policy")),".")),error!==""&&__gh("p",{className:"bx-acc-error","data-gufi-src":"components/estancias/Acceso.tsx:237"},error),__gh("button",{type:"submit",disabled:enviando,className:"bx-boton",style:{...botonVerde,width:"100%",marginTop:16,background:enviando?A.muted:A.accent},"data-gufi-src":"components/estancias/Acceso.tsx:238"},enviando?t("Un momento","One moment"):modo==="entrar"?t("Iniciar sesi\xF3n","Sign in"):t("Crear cuenta","Create account"))))))}function Campo3({etiqueta:etiqueta4,children}){return __gh("label",{className:"bx-acc-campo","data-gufi-src":"components/estancias/Acceso.tsx:250"},__gh("span",{"data-gufi-src":"components/estancias/Acceso.tsx:251"},etiqueta4),children)}function Tarjeta2({activa,onClick,icono:icono3,titulo:titulo3,texto}){return __gh("button",{type:"button","aria-pressed":activa,onClick,className:activa?"on":"","data-gufi-src":"components/estancias/Acceso.tsx:259"},icono3,__gh("span",{className:"t","data-gufi-src":"components/estancias/Acceso.tsx:261"},titulo3),__gh("span",{className:"s","data-gufi-src":"components/estancias/Acceso.tsx:262"},texto))}var ESTILO=` .bx-acc { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 28px; padding: 6px 26px 26px; min-height: min(600px, calc(94vh - 80px)); } .bx-acc-foto { position: relative; border-radius: 16px; overflow: hidden; background: ${A.alt}; } .bx-acc-foto > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; } .bx-acc-foto::after { content: ''; position: absolute; inset: 0; background: linear-gradient(180deg, rgba(10,10,10,0.05) 40%, rgba(10,10,10,0.55)); } .bx-acc-foto-tx { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; padding: 24px; display: grid; gap: 10px; color: #fff; } .bx-acc-foto-tx img { width: 130px; height: auto; filter: brightness(0) invert(1); } .bx-acc-foto-tx span { font-size: 22px; line-height: 1.25; font-weight: 600; letter-spacing: -0.02em; text-shadow: 0 1px 12px rgba(0,0,0,0.3); } .bx-acc-tabs { display: grid; grid-template-columns: 1fr 1fr; border-bottom: 1px solid ${A.hair}; margin: 0 0 18px; } .bx-acc-tabs button { min-height: 44px; border: none; border-bottom: 2px solid transparent; margin-bottom: -1px; background: none; font-family: inherit; font-size: 15px; font-weight: 500; color: ${A.muted}; cursor: pointer; } .bx-acc-tabs button.on { color: ${A.ink}; border-bottom-color: ${A.accent}; font-weight: 600; } .bx-acc-tipos { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; margin-bottom: 14px; } .bx-acc-tipos button { display: grid; justify-items: start; gap: 4px; padding: 14px; border-radius: 14px; border: 1px solid ${A.line}; background: ${A.bg}; text-align: left; font-family: inherit; color: ${A.ink}; cursor: pointer; } .bx-acc-tipos button.on { border: 2px solid ${A.ink}; padding: 13px; } .bx-acc-tipos .t { font-size: 15px; font-weight: 600; margin-top: 4px; } .bx-acc-tipos .s { font-size: 13px; color: ${A.muted}; } .bx-acc-campo { display: block; margin-bottom: 12px; } .bx-acc-campo > span { display: block; margin-bottom: 6px; font-size: 13px; font-weight: 500; color: ${A.body}; } .bx-acc-campo input, .bx-acc-tel select { width: 100%; min-height: 46px; padding: 0 14px; border-radius: 12px; border: 1px solid ${A.line}; background: ${A.bg}; color: ${A.ink}; font-family: inherit; font-size: 16px; box-sizing: border-box; } .bx-acc-campo input::placeholder { color: ${A.muted}; opacity: 0.7; } .bx-acc-2 { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 10px; } .bx-acc-pista { margin: -4px 0 12px; font-size: 12.5px; color: ${A.muted}; } .bx-acc-tel { display: flex; gap: 8px; } .bx-acc-tel select { width: 92px; flex: none; padding: 0 8px; } .bx-acc-tel input { flex: 1; min-width: 0; } .bx-acc-etq { margin: 4px 0 8px; font-size: 13px; font-weight: 500; color: ${A.body}; } .bx-acc-servicios { display: flex; flex-wrap: wrap; gap: 8px; margin-bottom: 12px; } .bx-acc-servicios button { display: inline-flex; align-items: center; gap: 6px; height: 38px; padding: 0 14px; border-radius: 999px; border: 1px solid ${A.line}; background: ${A.bg}; font-family: inherit; font-size: 14px; color: ${A.ink}; cursor: pointer; } .bx-acc-servicios button.on { border-color: ${A.ink}; background: ${A.ink}; color: #fff; } .bx-acc-legal { margin: 6px 0 0; font-size: 12.5px; line-height: 1.5; color: ${A.muted}; } .bx-acc-legal a { color: ${A.body}; text-decoration: underline; text-underline-offset: 2px; } .bx-acc-error { margin: 12px 0 0; font-size: 14px; line-height: 1.5; color: #b42318; } @media (max-width: 760px) { .bx-acc { display: block; padding: 0; min-height: 0; } .bx-acc-foto { height: 180px; border-radius: 0; } .bx-acc-foto-tx { top: 0; align-content: center; justify-items: center; text-align: center; } .bx-acc-foto-tx span { font-size: 20px; } .bx-acc-cuerpo { padding: 12px 20px calc(24px + env(safe-area-inset-bottom)); } } `;function Reserva({gufi,url,piso,cal,errorCal,entrada:entrada3,salida,onFechas,huespedes,onHuespedes,estrecho,enHoja}){let sesion=useSesion(),[paso,setPaso]=(0,import_react23.useState)("fechas"),[verCal,setVerCal]=(0,import_react23.useState)(!1),[presupuesto,setPresupuesto]=(0,import_react23.useState)(null),[nota2,setNota]=(0,import_react23.useState)(""),[telefono,setTelefono]=(0,import_react23.useState)(""),[mensaje,setMensaje]=(0,import_react23.useState)(""),[error,setError]=(0,import_react23.useState)(""),[enviando,setEnviando]=(0,import_react23.useState)(!1),[hecha,setHecha]=(0,import_react23.useState)(null),caja2=(0,import_react23.useRef)(null),cobroConTarjeta=gufi.env.RESERVA_WEB_COBRO==="stripe";(0,import_react23.useEffect)(()=>{if(!verCal||enHoja)return;let fuera=e=>{caja2.current&&!caja2.current.contains(e.target)&&setVerCal(!1)};return document.addEventListener("mousedown",fuera),()=>document.removeEventListener("mousedown",fuera)},[verCal,enHoja]),(0,import_react23.useEffect)(()=>{(paso==="confirmar"||paso==="cuenta")&&setPaso("fechas"),setPresupuesto(null)},[entrada3,salida,huespedes]);let hostal=piso.tipo==="hostal",maxHuespedes=hostal?1:Number(piso.capacidad)||16,c=cal&&entrada3&&salida?cuenta(cal,entrada3,salida):null,d2=cal?desde(cal):null,fechasMal=!!(cal&&entrada3&&salida&&!c),confirmar=async()=>{setPaso("confirmar"),setPresupuesto(null),setNota(""),setError("");try{let r=await gufi.publicAutomation("web_reservar").run({accion:"presupuesto",slug:piso.slug,entrada:entrada3,salida,huespedes});setPresupuesto(r.presupuesto),r.telefono&&setTelefono(ahora=>ahora||r.telefono)}catch(e){setError(e instanceof Error?e.message:String(e))}},seguir=()=>sesion?confirmar():setPaso("cuenta"),reservar=async()=>{if(!(enviando||!presupuesto)){if(telefono.trim()==="")return setError(t("D\xE9janos un tel\xE9fono de contacto.","Please leave a contact phone."));if(mensaje.trim().length<3)return setError(t("Cu\xE9ntanos para qu\xE9 es la estancia.","Tell us what the stay is for."));setEnviando(!0),setError("");try{let r=await gufi.publicAutomation("web_reservar").run({accion:"reservar",slug:piso.slug,entrada:entrada3,salida,huespedes,total_visto:presupuesto.total,telefono,mensaje,base:window.location.origin});if(r.cambio&&r.presupuesto){setPresupuesto(r.presupuesto),setNota(r.aviso??t("El precio ha cambiado.","The price has changed."));return}if(r.pago){window.location.href=r.pago.url;return}setHecha(r.reserva),setPaso("hecha")}catch(e){if(sesionCaducada(e)){cerrarSesion(),setPaso("cuenta");return}setError(e instanceof Error?e.message:String(e))}finally{setEnviando(!1)}}},marco=enHoja?{}:{position:"relative",background:A.bg,border:`1px solid ${A.hair}`,borderRadius:24,padding:24,boxShadow:A.sombra},resumenFechas=entrada3&&salida?`${diaCorto(entrada3)} \u2013 ${diaCorto(salida)} \xB7 ${huespedes} ${huespedes===1?t("hu\xE9sped","guest"):t("hu\xE9spedes","guests")}`:"";if(paso==="hecha"&&hecha)return __gh("div",{style:{...marco,textAlign:"center",padding:enHoja?"28px 4px":"34px 26px"},"data-gufi-src":"components/estancias/Reserva.tsx:166"},__gh("span",{style:{width:48,height:48,borderRadius:"50%",background:A.accent,color:"#fff",display:"inline-grid",placeItems:"center"},"data-gufi-src":"components/estancias/Reserva.tsx:167"},__gh(import_lucide_react22.Check,{style:{width:22,height:22},strokeWidth:2.6})),__gh("h3",{style:{margin:"16px 0 0",fontSize:22,fontWeight:600,letterSpacing:"-0.02em",color:A.ink},"data-gufi-src":"components/estancias/Reserva.tsx:170"},t("Solicitud enviada","Request sent")),__gh("p",{style:{margin:"8px auto 0",maxWidth:320,fontSize:15,lineHeight:1.55,color:A.muted},"data-gufi-src":"components/estancias/Reserva.tsx:171"},hecha.codigo," \xB7 ",diaCorto(hecha.entrada)," \u2013 ",diaCorto(hecha.salida)," \xB7 ",euros(hecha.total),"."," ",t("La revisamos y, en cuanto la aceptemos, la ver\xE1s confirmada en tu cuenta. Despu\xE9s te escribimos para el pago y la llegada.","We\u2019ll review it and, once we accept, you\u2019ll see it confirmed in your account. Then we\u2019ll be in touch about payment and check-in.")),__gh("a",{href:url("/cuenta"),className:"bx-boton",style:{...botonVerde,marginTop:20,textDecoration:"none"},"data-gufi-src":"components/estancias/Reserva.tsx:175"},t("Ver mis reservas","See my bookings")));if(paso==="confirmar")return __gh("div",{style:marco,"data-gufi-src":"components/estancias/Reserva.tsx:185"},__gh(Volver,{onClick:()=>setPaso("fechas")}),__gh("h3",{style:{margin:"10px 0 4px",fontSize:22,fontWeight:600,letterSpacing:"-0.02em",color:A.ink},"data-gufi-src":"components/estancias/Reserva.tsx:187"},t("Pide tu reserva","Request to book")),__gh("p",{style:{margin:0,fontSize:14.5,color:A.muted},"data-gufi-src":"components/estancias/Reserva.tsx:188"},resumenFechas,sesion?` \xB7 ${sesion.nombre}`:""),!presupuesto&&error===""&&__gh("p",{style:{margin:"18px 0 0",fontSize:15,color:A.muted},"data-gufi-src":"components/estancias/Reserva.tsx:192"},t("Mirando el precio de esas noches","Checking the price for those nights")),presupuesto&&__gh("div",{style:{marginTop:18,display:"grid",gap:10,fontSize:15.5,color:A.body,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/estancias/Reserva.tsx:194"},__gh(Linea,{texto:`${presupuesto.noches} ${presupuesto.noches===1?t("noche","night"):t("noches","nights")}`,valor:euros(presupuesto.precio_noches)}),presupuesto.extra>0&&__gh(Linea,{texto:t("Hu\xE9spedes de m\xE1s","Extra guests"),valor:euros(presupuesto.extra)}),presupuesto.limpieza>0&&__gh(Linea,{texto:t("Limpieza","Cleaning"),valor:euros(presupuesto.limpieza)}),__gh("div",{style:{paddingTop:12,marginTop:2,borderTop:`1px solid ${A.hair}`,fontWeight:600,color:A.ink},"data-gufi-src":"components/estancias/Reserva.tsx:198"},__gh(Linea,{texto:t("Total","Total"),valor:euros(presupuesto.total)}))),nota2!==""&&__gh("p",{style:{margin:"14px 0 0",fontSize:14.5,lineHeight:1.5,color:A.ink,fontWeight:600},"data-gufi-src":"components/estancias/Reserva.tsx:203"},nota2),presupuesto&&__gh("div",{style:{marginTop:18,display:"grid",gap:10},"data-gufi-src":"components/estancias/Reserva.tsx:205"},__gh("label",{style:{display:"block"},"data-gufi-src":"components/estancias/Reserva.tsx:206"},__gh("span",{style:etiqueta2,"data-gufi-src":"components/estancias/Reserva.tsx:207"},t("Tel\xE9fono de contacto","Contact phone")),__gh("input",{type:"tel",value:telefono,autoComplete:"tel",onChange:e=>setTelefono(e.target.value),style:campo,"data-gufi-src":"components/estancias/Reserva.tsx:208"})),__gh("label",{style:{display:"block"},"data-gufi-src":"components/estancias/Reserva.tsx:210"},__gh("span",{style:etiqueta2,"data-gufi-src":"components/estancias/Reserva.tsx:211"},t("\xBFPara qu\xE9 es la estancia?","What is the stay for?")),__gh("textarea",{value:mensaje,onChange:e=>setMensaje(e.target.value),rows:3,placeholder:t("Vacaciones, trabajo, ver a la familia\u2026 Cu\xE9ntanos qui\xE9nes ven\xEDs.","Holidays, work, visiting family\u2026 Tell us who is coming."),style:{...campo,height:"auto",padding:"12px 14px",resize:"vertical"},"data-gufi-src":"components/estancias/Reserva.tsx:212"}))),error!==""&&__gh("p",{style:{margin:"14px 0 0",display:"flex",alignItems:"baseline",gap:8,fontSize:14.5,lineHeight:1.5,color:A.ink},"data-gufi-src":"components/estancias/Reserva.tsx:223"},__gh("span",{style:{flexShrink:0,width:7,height:7,borderRadius:"50%",background:"#d92d20",transform:"translateY(-1px)"},"data-gufi-src":"components/estancias/Reserva.tsx:224"}),error),__gh("button",{type:"button",onClick:reservar,disabled:!presupuesto||enviando,className:"bx-boton",style:{...botonVerde,width:"100%",marginTop:18,background:!presupuesto||enviando?A.muted:A.accent},"data-gufi-src":"components/estancias/Reserva.tsx:228"},enviando?t("Enviando","Sending"):cobroConTarjeta?t("Pedir y dejar la tarjeta","Request and add card"):t("Pedir la reserva","Request to book")),__gh("p",{style:{margin:"12px 0 0",textAlign:"center",fontSize:13.5,lineHeight:1.5,color:A.muted},"data-gufi-src":"components/estancias/Reserva.tsx:231"},cobroConTarjeta?t("Se retiene en tu tarjeta y no se cobra hasta que la aceptemos. Si no podemos, se suelta sola.","It\u2019s held on your card and only charged once we accept. If we can\u2019t, the hold is released."):t("Ahora no se cobra nada. Cuando la aceptemos, te escribimos para el pago.","Nothing is charged now. Once we accept, we\u2019ll contact you about payment.")));let calendario=cal?__gh(Calendario,{dias:cal.dias,entrada:entrada3,salida,onCambio:(e,s)=>{onFechas(e,s),e&&s&&!enHoja&&setVerCal(!1)},meses:estrecho||enHoja?1:2,hasta:cal.hasta}):__gh("p",{style:{margin:0,fontSize:15,color:A.muted},"data-gufi-src":"components/estancias/Reserva.tsx:243"},errorCal?t("No hemos podido cargar el calendario. Prueba a recargar la p\xE1gina.","We couldn\u2019t load the calendar. Try reloading the page."):t("Cargando el calendario","Loading the calendar"));return __gh("div",{ref:caja2,style:marco,"data-gufi-src":"components/estancias/Reserva.tsx:247"},__gh(Acceso,{gufi,url,abierto:paso==="cuenta",onClose:()=>setPaso("fechas"),alEntrar:()=>confirmar(),tipoFijo:"huesped",foto:fotosDe(piso)[0]??PORTADA_POSTER}),__gh("div",{style:{display:"flex",alignItems:"baseline",gap:6,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/estancias/Reserva.tsx:257"},c?__gh(__gf,null,__gh("span",{style:{fontSize:24,fontWeight:600,letterSpacing:"-0.02em",color:A.ink},"data-gufi-src":"components/estancias/Reserva.tsx:260"},euros(c.total)),__gh("span",{style:{fontSize:16,color:A.body},"data-gufi-src":"components/estancias/Reserva.tsx:261"},t("en total","total"))):d2!==null?__gh(__gf,null,__gh("span",{style:{fontSize:16,color:A.body},"data-gufi-src":"components/estancias/Reserva.tsx:265"},t("Desde","From")),__gh("span",{style:{fontSize:24,fontWeight:600,letterSpacing:"-0.02em",color:A.ink},"data-gufi-src":"components/estancias/Reserva.tsx:266"},euros(d2)),__gh("span",{style:{fontSize:16,color:A.body},"data-gufi-src":"components/estancias/Reserva.tsx:267"},t("noche","night"))):__gh("span",{style:{fontSize:20,fontWeight:600,color:A.ink},"data-gufi-src":"components/estancias/Reserva.tsx:270"},t("Elige tus fechas","Choose your dates"))),__gh("div",{style:{marginTop:18,border:`1px solid ${A.line}`,borderRadius:14,overflow:"hidden"},"data-gufi-src":"components/estancias/Reserva.tsx:274"},__gh("div",{style:{display:"grid",gridTemplateColumns:"1fr 1fr"},"data-gufi-src":"components/estancias/Reserva.tsx:275"},__gh(Celda,{etiqueta:t("Llegada","Check-in"),texto:entrada3?diaCorto(entrada3):null,onClick:()=>setVerCal(!0)}),__gh(Celda,{etiqueta:t("Salida","Check-out"),texto:salida?diaCorto(salida):null,onClick:()=>setVerCal(!0),borde:!0})),__gh("div",{style:{borderTop:`1px solid ${A.line}`,padding:"10px 14px",display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},"data-gufi-src":"components/estancias/Reserva.tsx:279"},__gh("span",{"data-gufi-src":"components/estancias/Reserva.tsx:280"},__gh("span",{style:{display:"block",fontSize:11.5,fontWeight:600,color:A.ink},"data-gufi-src":"components/estancias/Reserva.tsx:281"},t("Hu\xE9spedes","Guests")),__gh("span",{style:{display:"block",fontSize:14.5,color:A.body},"data-gufi-src":"components/estancias/Reserva.tsx:282"},hostal?t("Una cama por reserva","One bed per booking"):`${t("Hasta","Up to")} ${maxHuespedes}`)),__gh(Contador,{n:huespedes,min:1,max:maxHuespedes,onCambio:onHuespedes}))),(verCal||enHoja)&&__gh("div",{style:enHoja?{marginTop:18}:{position:"absolute",zIndex:30,top:70,right:0,width:"min(720px, calc(100vw - 48px))",background:A.bg,borderRadius:24,boxShadow:A.sombraFuerte,border:`1px solid ${A.hair}`,padding:26},"data-gufi-src":"components/estancias/Reserva.tsx:289"},calendario,entrada3&&__gh("div",{style:{marginTop:14,display:"flex",justifyContent:"space-between",alignItems:"center",gap:12},"data-gufi-src":"components/estancias/Reserva.tsx:298"},__gh("button",{type:"button",onClick:()=>onFechas(null,null),style:borrar,"data-gufi-src":"components/estancias/Reserva.tsx:299"},t("Borrar fechas","Clear dates")),!enHoja&&__gh("button",{type:"button",onClick:()=>setVerCal(!1),className:"bx-boton",style:{...botonVerde,height:40,padding:"0 18px",fontSize:14.5},"data-gufi-src":"components/estancias/Reserva.tsx:303"},t("Cerrar","Close")))),fechasMal&&__gh("p",{style:{margin:"14px 0 0",fontSize:14.5,lineHeight:1.5,color:A.body},"data-gufi-src":"components/estancias/Reserva.tsx:312"},t("Esas fechas ya no est\xE1n libres enteras o no llegan a la estancia m\xEDnima. Elige otras.","Those dates aren\u2019t fully available or are below the minimum stay. Try others.")),__gh("button",{type:"button",onClick:()=>c?seguir():setVerCal(!0),className:"bx-boton",style:{...botonVerde,width:"100%",marginTop:16},"data-gufi-src":"components/estancias/Reserva.tsx:314"},c?t("Reservar","Reserve"):t("Elegir fechas","Choose dates")),__gh("p",{style:{margin:"12px 0 0",textAlign:"center",fontSize:13.5,color:A.muted},"data-gufi-src":"components/estancias/Reserva.tsx:317"},t("Todav\xEDa no se cobra nada","You won\u2019t be charged yet")),c&&__gh("div",{style:{marginTop:18,display:"grid",gap:10,fontSize:15.5,color:A.body,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/estancias/Reserva.tsx:320"},__gh(Linea,{texto:`${euros(Math.round(c.suma/c.noches))} ${t("de media","average")} \xD7 ${c.noches} ${c.noches===1?t("noche","night"):t("noches","nights")}`,valor:euros(c.suma)}),c.limpieza>0&&__gh(Linea,{texto:t("Limpieza","Cleaning"),valor:euros(c.limpieza)}),__gh("div",{style:{paddingTop:14,marginTop:4,borderTop:`1px solid ${A.hair}`,fontWeight:600,color:A.ink},"data-gufi-src":"components/estancias/Reserva.tsx:323"},__gh(Linea,{texto:t("Total","Total"),valor:euros(c.total)}))))}function Volver({onClick}){return __gh("button",{type:"button",onClick,style:{display:"inline-flex",alignItems:"center",gap:4,padding:0,border:"none",background:"none",fontFamily:"inherit",fontSize:14.5,color:A.muted,cursor:"pointer"},"data-gufi-src":"components/estancias/Reserva.tsx:334"},__gh(import_lucide_react22.ChevronLeft,{style:{width:16,height:16}})," ",t("Fechas","Dates"))}function Celda({etiqueta:etiqueta4,texto,onClick,borde:borde2}){return __gh("button",{type:"button",onClick,className:"bx-suave",style:{textAlign:"left",padding:"10px 14px",border:"none",borderLeft:borde2?`1px solid ${A.line}`:"none",background:A.bg,fontFamily:"inherit",cursor:"pointer"},"data-gufi-src":"components/estancias/Reserva.tsx:342"},__gh("span",{style:{display:"block",fontSize:11.5,fontWeight:600,color:A.ink},"data-gufi-src":"components/estancias/Reserva.tsx:343"},etiqueta4),__gh("span",{style:{display:"block",fontSize:14.5,color:texto?A.ink:A.muted},"data-gufi-src":"components/estancias/Reserva.tsx:344"},texto??t("A\xF1adir","Add")))}function Linea({texto,valor}){return __gh("div",{style:{display:"flex",justifyContent:"space-between",gap:12},"data-gufi-src":"components/estancias/Reserva.tsx:351"},__gh("span",{"data-gufi-src":"components/estancias/Reserva.tsx:352"},texto),__gh("span",{style:{whiteSpace:"nowrap"},"data-gufi-src":"components/estancias/Reserva.tsx:353"},valor))}var etiqueta2={display:"block",marginBottom:6,fontSize:13.5,fontWeight:500,color:A.body},campo={width:"100%",height:48,padding:"0 14px",borderRadius:12,border:`1px solid ${A.line}`,background:A.bg,color:A.ink,fontSize:16,fontFamily:"inherit",boxSizing:"border-box"};function deLaUrl(){let q=new URLSearchParams(typeof window>"u"?"":window.location.search),entrada3=diaValido(q.get("entrada")),salida=diaValido(q.get("salida")),huespedes=Number(q.get("huespedes"));return{entrada:entrada3,salida:entrada3&&salida&&salida>entrada3?salida:null,huespedes:Number.isInteger(huespedes)&&huespedes>0?huespedes:1}}function Estancia({gufi,url,piso,vecinos}){let estrecho=useEstrecho(900),[url0]=(0,import_react24.useState)(deLaUrl),[entrada3,setEntrada]=(0,import_react24.useState)(url0.entrada),[salida,setSalida]=(0,import_react24.useState)(url0.salida),[huespedes,setHuespedes]=(0,import_react24.useState)(url0.huespedes),[hoja,setHoja]=(0,import_react24.useState)(!1),[copiado,setCopiado]=(0,import_react24.useState)(!1),{cal,error:errorCal}=useDisponibilidad(gufi,piso.slug),d2=piso.detalles,hostal=esHostal(piso),fotos=fotosDe(piso),mapa=mapaUrl(piso),donde2=piso.ciudad??"",fechas=(e,s)=>{setEntrada(e),setSalida(s)},c=cal&&entrada3&&salida?cuenta(cal,entrada3,salida):null,datos=[];hostal?piso.plazas!==null&&datos.push(`${piso.plazas} ${t("plazas","beds")}`):(piso.capacidad!==null&&datos.push(`${piso.capacidad} ${piso.capacidad===1?t("hu\xE9sped","guest"):t("hu\xE9spedes","guests")}`),piso.dormitorios!==null&&datos.push(`${piso.dormitorios} ${piso.dormitorios===1?t("dormitorio","bedroom"):t("dormitorios","bedrooms")}`),piso.camas!==null&&datos.push(`${piso.camas} ${piso.camas===1?t("cama","bed"):t("camas","beds")}`),piso.banos!==null&&datos.push(`${piso.banos} ${piso.banos===1?t("ba\xF1o","bathroom"):t("ba\xF1os","bathrooms")}`)),piso.superficie_m2!==null&&datos.push(`${Number(piso.superficie_m2)} m\xB2`);let en=IDIOMA==="en"&&d2?.en?d2.en:null,descripcion=en?en.descripcion:piso.descripcion,zonaTexto=en?en.zona_texto:d2?.zona_texto??null,dormir=en?en.dormir:d2?.dormir??[],comodidades=en?en.comodidades:piso.comodidades?piso.comodidades.split(" \xB7 "):[],autonoma=comodidades.some(x=>/Llegada autónoma|Caja de llaves|Cerradura con código|Cerradura inteligente|Self check-in|Lockbox|Keypad|Smart lock/i.test(x)),compartir=async()=>{let enlace4=window.location.href.split("?")[0];if(navigator.share){await navigator.share({title:piso.titulo,url:enlace4}).catch(()=>{});return}await navigator.clipboard.writeText(enlace4),setCopiado(!0),setTimeout(()=>setCopiado(!1),2e3)},reserva=enHoja=>__gh(Reserva,{gufi,url,piso,cal,errorCal,entrada:entrada3,salida,onFechas:fechas,huespedes,onHuespedes:setHuespedes,estrecho,enHoja});return __gh("div",{className:"bx","data-gufi-src":"sections/estancia.tsx:114"},__gh("style",{"data-gufi-src":"sections/estancia.tsx:115"},ESTILO_ESTANCIAS+ESTILO_FICHA),__gh("div",{className:"bx-caja",style:{maxWidth:1240,paddingTop:estrecho?14:26},"data-gufi-src":"sections/estancia.tsx:116"},__gh("a",{href:url("/estancias-cortas"),className:"bx-enlace",style:{display:"inline-flex",alignItems:"center",gap:4,fontSize:15,color:A.muted,textDecoration:"none"},"data-gufi-src":"sections/estancia.tsx:117"},__gh(import_lucide_react23.ChevronLeft,{style:{width:17,height:17}}),t("Estancias cortas","Short stays")),!estrecho&&__gh(Titular,{piso,donde:donde2,copiado,onCompartir:compartir}),__gh("div",{style:{marginTop:estrecho?12:22},"data-gufi-src":"sections/estancia.tsx:123"},__gh(Fotos,{gufi,fotos,titulo:piso.titulo,estrecho})),estrecho&&__gh(Titular,{piso,donde:donde2,copiado,onCompartir:compartir}),__gh("div",{style:{marginTop:estrecho?8:40,display:"grid",gridTemplateColumns:estrecho?"minmax(0, 1fr)":"minmax(0, 1fr) 380px",gap:"clamp(40px, 6vw, 90px)",alignItems:"start"},"data-gufi-src":"sections/estancia.tsx:129"},__gh("div",{"data-gufi-src":"sections/estancia.tsx:130"},__gh(Bloque2,{primero:!0},__gh("h2",{style:{margin:0,fontSize:"clamp(21px, 2.4vw, 24px)",fontWeight:600,letterSpacing:"-0.02em",color:A.ink},"data-gufi-src":"sections/estancia.tsx:132"},queEs(piso)),datos.length>0&&__gh("p",{style:{margin:"6px 0 0",fontSize:16.5,color:A.body},"data-gufi-src":"sections/estancia.tsx:133"},datos.join(" \xB7 ")),muyValorado(piso)&&__gh("a",{href:"#opiniones",style:{marginTop:22,display:"flex",alignItems:"center",justifyContent:"space-between",gap:16,padding:"18px 22px",borderRadius:18,border:`1px solid ${A.hair}`,textDecoration:"none",color:A.ink},"data-gufi-src":"sections/estancia.tsx:135"},__gh("span",{"data-gufi-src":"sections/estancia.tsx:136"},__gh("span",{style:{display:"block",fontSize:17,fontWeight:600},"data-gufi-src":"sections/estancia.tsx:137"},t("De los que m\xE1s gustan","Guest favourite")),__gh("span",{style:{display:"block",marginTop:2,fontSize:14.5,color:A.muted},"data-gufi-src":"sections/estancia.tsx:138"},t("De lo mejor valorado que tenemos, seg\xFAn quien ya ha dormido aqu\xED","One of our top-rated homes, according to guests who stayed here"))),__gh("span",{style:{display:"flex",alignItems:"center",gap:18,flexShrink:0,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/estancia.tsx:140"},__gh("span",{style:{textAlign:"center"},"data-gufi-src":"sections/estancia.tsx:141"},__gh("span",{style:{display:"block",fontSize:20,fontWeight:600},"data-gufi-src":"sections/estancia.tsx:142"},nota(Number(piso.valoracion))),__gh(Estrellas,null)),__gh("span",{style:{width:1,height:36,background:A.hair},"data-gufi-src":"sections/estancia.tsx:145"}),__gh("span",{style:{textAlign:"center"},"data-gufi-src":"sections/estancia.tsx:146"},__gh("span",{style:{display:"block",fontSize:20,fontWeight:600},"data-gufi-src":"sections/estancia.tsx:147"},piso.resenas),__gh("span",{style:{display:"block",fontSize:12,color:A.muted},"data-gufi-src":"sections/estancia.tsx:148"},t("rese\xF1as","reviews")))))),d2&&__gh(Bloque2,null,__gh("div",{style:{display:"grid",gap:22},"data-gufi-src":"sections/estancia.tsx:157"},autonoma&&__gh(Punto,{icono:import_lucide_react23.KeyRound,titulo:t("Llegada aut\xF3noma","Self check-in"),texto:d2.entrada?t(`Entras t\xFA cuando llegues, a partir de las ${d2.entrada}.`,`Let yourself in when you arrive, from ${d2.entrada}.`):t("Entras t\xFA cuando llegues.","Let yourself in when you arrive.")}),!autonoma&&d2.entrada&&__gh(Punto,{icono:import_lucide_react23.Clock,titulo:t(`Llegada a partir de las ${d2.entrada}`,`Check-in from ${d2.entrada}`),texto:d2.salida?t(`Y salida hasta las ${d2.salida}.`,`Check-out by ${d2.salida}.`):t("Te contamos c\xF3mo entrar antes de llegar.","We\u2019ll tell you how to get in before you arrive.")}),donde2&&__gh(Punto,{icono:import_lucide_react23.MapPin,titulo:donde2,texto:zonaTexto?t("M\xE1s abajo te contamos c\xF3mo es la zona.","More about the area below."):t("La ubicaci\xF3n exacta, en el mapa de abajo.","The exact location is on the map below.")}),d2.min_noches!==null&&d2.min_noches>1&&__gh(Punto,{icono:import_lucide_react23.CalendarDays,titulo:t(`M\xEDnimo ${d2.min_noches} noches`,`${d2.min_noches}-night minimum`),texto:t("Algunas fechas piden m\xE1s: el calendario lo dice d\xEDa a d\xEDa.","Some dates need more: the calendar shows it day by day.")}))),descripcion&&__gh(Bloque2,null,__gh(Desplegable,{texto:descripcion,lineas:7})),dormir.length>0&&__gh(Bloque2,{titulo:t("D\xF3nde se duerme","Where you\u2019ll sleep")},__gh("div",{className:"bx-pista",style:{display:"flex",gap:14,overflowX:"auto"},"data-gufi-src":"sections/estancia.tsx:174"},dormir.map(r=>__gh("div",{key:r.nombre,style:{flex:"0 0 190px",padding:"20px 20px 22px",borderRadius:16,border:`1px solid ${A.hair}`},"data-gufi-src":"sections/estancia.tsx:176"},r.camas.some(x=>/sofá|sofa|couch/i.test(x.tipo))?__gh(import_lucide_react23.Sofa,{style:icono2}):__gh(import_lucide_react23.BedDouble,{style:icono2}),__gh("div",{style:{marginTop:14,fontSize:16,fontWeight:600,color:A.ink},"data-gufi-src":"sections/estancia.tsx:178"},r.nombre),__gh("div",{style:{marginTop:4,fontSize:14.5,lineHeight:1.45,color:A.muted},"data-gufi-src":"sections/estancia.tsx:179"},r.camas.map(x=>`${x.n} ${x.tipo}`).join(", ")))))),comodidades.length>0&&__gh(Bloque2,{titulo:t("Qu\xE9 hay en la casa","What this place offers")},__gh(Comodidades,{lista:comodidades})),__gh(Bloque2,{titulo:c?`${c.noches} ${c.noches===1?t("noche","night"):t("noches","nights")} ${t("en","in")} ${piso.ciudad??""}`:t("Cu\xE1ndo est\xE1 libre","Availability"),id:"calendario"},__gh("p",{style:{margin:"-8px 0 20px",fontSize:15,color:A.muted},"data-gufi-src":"sections/estancia.tsx:193"},entrada3&&salida?`${diaCorto(entrada3)} \u2013 ${diaCorto(salida)}${c?` \xB7 ${euros(c.total)} ${t("en total con la limpieza","total incl. cleaning")}`:""}`:entrada3?t("Ahora toca el d\xEDa que te vas.","Now tap your check-out day."):t("Toca el d\xEDa que llegas y el d\xEDa que te vas. Debajo de cada d\xEDa, lo que cuesta esa noche.","Tap your check-in and check-out days. Each day shows that night\u2019s price.")),cal?__gh(Calendario,{dias:cal.dias,entrada:entrada3,salida,onCambio:fechas,meses:estrecho?1:2,hasta:cal.hasta}):__gh("p",{style:{margin:0,fontSize:15,color:A.muted},"data-gufi-src":"sections/estancia.tsx:203"},errorCal?t("No hemos podido cargar el calendario. Prueba a recargar la p\xE1gina.","We couldn\u2019t load the calendar. Try reloading the page."):t("Cargando el calendario","Loading the calendar")),entrada3&&__gh("button",{type:"button",onClick:()=>fechas(null,null),style:{...borrar,marginTop:16},"data-gufi-src":"sections/estancia.tsx:206"},"Borrar fechas"))),!estrecho&&__gh("aside",{style:{position:"sticky",top:92},"data-gufi-src":"sections/estancia.tsx:213"},reserva(!1))),d2&&piso.valoracion!==null&&Number(piso.resenas)>0&&__gh(Opiniones,{piso}),mapa&&__gh("section",{style:{borderTop:`1px solid ${A.hair}`,padding:"clamp(36px, 5vw, 52px) 0"},"data-gufi-src":"sections/estancia.tsx:219"},__gh("h2",{style:h2,"data-gufi-src":"sections/estancia.tsx:220"},t("D\xF3nde est\xE1","Where it is")),donde2&&__gh("p",{style:{margin:"6px 0 0",fontSize:16,color:A.body},"data-gufi-src":"sections/estancia.tsx:221"},donde2),__gh("div",{style:{marginTop:22,borderRadius:A.radio,overflow:"hidden",background:A.alt},"data-gufi-src":"sections/estancia.tsx:222"},__gh("iframe",{src:mapa,title:`${t("D\xF3nde est\xE1","Where it is")}: ${piso.titulo}`,loading:"lazy",referrerPolicy:"no-referrer-when-downgrade",style:{display:"block",width:"100%",height:estrecho?280:440,border:"none"},"data-gufi-src":"sections/estancia.tsx:223"})),zonaTexto&&__gh("div",{style:{marginTop:26,maxWidth:760},"data-gufi-src":"sections/estancia.tsx:226"},__gh(Desplegable,{texto:zonaTexto,lineas:4}))),d2&&__gh(Normas,{d:d2,capacidad:hostal?null:piso.capacidad}),vecinos.length>0&&__gh("div",{style:{borderTop:`1px solid ${A.hair}`,paddingBottom:"clamp(40px, 6vw, 80px)"},"data-gufi-src":"sections/estancia.tsx:236"},__gh(Fila,{titulo:t("Cerca de aqu\xED","Nearby")},vecinos.map(v=>__gh(TarjetaEstancia,{key:v.id,piso:v,href:url(`/${v.slug}`),ancho:estrecho?260:290}))))),estrecho&&__gh("div",{style:{position:"sticky",bottom:0,zIndex:25,background:"rgba(255,255,255,0.94)",backdropFilter:"saturate(180%) blur(18px)",WebkitBackdropFilter:"saturate(180%) blur(18px)",borderTop:`1px solid ${A.hair}`},"data-gufi-src":"sections/estancia.tsx:252"},__gh("div",{className:"bx-caja",style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:14,padding:"12px var(--bx-margen) calc(12px + env(safe-area-inset-bottom))"},"data-gufi-src":"sections/estancia.tsx:253"},__gh("button",{type:"button",onClick:()=>setHoja(!0),style:{textAlign:"left",padding:0,border:"none",background:"none",fontFamily:"inherit",cursor:"pointer",fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/estancia.tsx:254"},__gh("span",{style:{display:"block",fontSize:16,fontWeight:600,color:A.ink},"data-gufi-src":"sections/estancia.tsx:255"},c?`${euros(c.total)} ${t("en total","total")}`:cal?t("Elige tus fechas","Choose your dates"):" "),__gh("span",{style:{display:"block",fontSize:13.5,color:A.body,textDecoration:"underline",textUnderlineOffset:2},"data-gufi-src":"sections/estancia.tsx:258"},entrada3&&salida?`${diaCorto(entrada3)} \u2013 ${diaCorto(salida)} \xB7 ${noches(entrada3,salida)} ${t("noches","nights")}`:t("Mira los d\xEDas libres","See available days"))),__gh("button",{type:"button",onClick:()=>setHoja(!0),className:"bx-boton",style:{...botonVerde,flexShrink:0},"data-gufi-src":"sections/estancia.tsx:262"},"Reservar"))),__gh(gufi.Dialog,{open:hoja,onClose:()=>setHoja(!1),title:t("Reservar","Reserve"),description:piso.titulo},reserva(!0)))}var APARTADOS=[["limpieza",t("Limpieza","Cleanliness")],["exactitud",t("Es como en las fotos","Accuracy")],["llegada",t("Llegada","Check-in")],["comunicacion",t("Trato","Communication")],["ubicacion",t("Ubicaci\xF3n","Location")],["calidad",t("Calidad y precio","Value")]];function Opiniones({piso}){let d2=piso.detalles,apartados=APARTADOS.filter(([k])=>d2.notas[k]!==null);return __gh("section",{id:"opiniones",style:{borderTop:`1px solid ${A.hair}`,padding:"clamp(36px, 5vw, 52px) 0",scrollMarginTop:90},"data-gufi-src":"sections/estancia.tsx:288"},__gh("h2",{style:{...h2,display:"flex",alignItems:"center",gap:10,fontSize:"clamp(24px, 2.8vw, 28px)"},"data-gufi-src":"sections/estancia.tsx:289"},__gh(import_lucide_react23.Star,{style:{width:22,height:22,fill:A.ink,color:A.ink}}),nota(Number(piso.valoracion))," \xB7 ",piso.resenas," ",t("rese\xF1as","reviews")),__gh("p",{style:{margin:"6px 0 0",fontSize:15,color:A.muted},"data-gufi-src":"sections/estancia.tsx:293"},t("De quien ha dormido aqu\xED, en las plataformas donde se anuncia.","From guests who stayed here, on the platforms where it\u2019s listed.")),apartados.length>0&&__gh("div",{className:"bx-notas",style:{marginTop:28,display:"grid",gridTemplateColumns:`repeat(${Math.min(apartados.length,6)}, minmax(0, 1fr))`,borderTop:`1px solid ${A.hair}`,borderBottom:`1px solid ${A.hair}`},"data-gufi-src":"sections/estancia.tsx:295"},apartados.map(([k,t2],n)=>__gh("div",{key:k,style:{padding:"18px 18px 20px",borderLeft:n===0?"none":`1px solid ${A.hair}`},"data-gufi-src":"sections/estancia.tsx:297"},__gh("div",{style:{fontSize:14.5,color:A.body},"data-gufi-src":"sections/estancia.tsx:298"},t2),__gh("div",{style:{marginTop:6,fontSize:19,fontWeight:600,color:A.ink,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/estancia.tsx:299"},nota(d2.notas[k])),__gh("div",{style:{marginTop:10,height:4,borderRadius:2,background:A.hair,overflow:"hidden"},"data-gufi-src":"sections/estancia.tsx:300"},__gh("div",{style:{width:`${d2.notas[k]/5*100}%`,height:"100%",background:A.ink},"data-gufi-src":"sections/estancia.tsx:301"}))))),d2.opiniones.length>0&&__gh("div",{className:"bx-opiniones",style:{marginTop:34,display:"grid",gridTemplateColumns:"repeat(2, minmax(0, 1fr))",gap:"34px 70px"},"data-gufi-src":"sections/estancia.tsx:308"},d2.opiniones.map((o,n)=>__gh("figure",{key:n,style:{margin:0},"data-gufi-src":"sections/estancia.tsx:310"},__gh("figcaption",{style:{display:"flex",alignItems:"center",gap:12},"data-gufi-src":"sections/estancia.tsx:311"},__gh("span",{style:{width:44,height:44,borderRadius:"50%",background:A.alt,color:A.ink,display:"grid",placeItems:"center",fontSize:17,fontWeight:600},"data-gufi-src":"sections/estancia.tsx:312"},o.nombre.charAt(0).toLocaleUpperCase("es-ES")),__gh("span",{"data-gufi-src":"sections/estancia.tsx:313"},__gh("span",{style:{display:"block",fontSize:16,fontWeight:600,color:A.ink},"data-gufi-src":"sections/estancia.tsx:314"},o.nombre),__gh("span",{style:{display:"block",fontSize:14,color:A.muted},"data-gufi-src":"sections/estancia.tsx:315"},mes(o.fecha)))),__gh("blockquote",{style:{margin:"12px 0 0"},"data-gufi-src":"sections/estancia.tsx:318"},__gh(Desplegable,{texto:o.texto,lineas:4}))))))}function Normas({d:d2,capacidad}){let filas=[];return d2.entrada&&filas.push([import_lucide_react23.Clock,t(`Llegada a partir de las ${d2.entrada}`,`Check-in from ${d2.entrada}`)]),d2.salida&&filas.push([import_lucide_react23.DoorOpen,t(`Salida antes de las ${d2.salida}`,`Check-out before ${d2.salida}`)]),capacidad!==null&&filas.push([import_lucide_react23.Check,t(`Como mucho ${capacidad} ${capacidad===1?"hu\xE9sped":"hu\xE9spedes"}`,`${capacidad} ${capacidad===1?"guest":"guests"} maximum`)]),filas.push([import_lucide_react23.PawPrint,d2.mascotas?t("Se admiten mascotas","Pets allowed"):t("Sin mascotas","No pets")]),filas.push([import_lucide_react23.Cigarette,d2.fumar?t("Se puede fumar","Smoking allowed"):t("No se puede fumar","No smoking")]),filas.push([import_lucide_react23.PartyPopper,d2.fiestas?t("Se admiten fiestas y eventos","Parties and events allowed"):t("Sin fiestas ni eventos","No parties or events")]),filas.push([import_lucide_react23.Baby,d2.ninos?t("Se admiten ni\xF1os","Children welcome"):t("No apto para ni\xF1os","Not suitable for children")]),__gh("section",{style:{borderTop:`1px solid ${A.hair}`,padding:"clamp(36px, 5vw, 52px) 0"},"data-gufi-src":"sections/estancia.tsx:339"},__gh("h2",{style:h2,"data-gufi-src":"sections/estancia.tsx:340"},t("Antes de reservar","Things to know")),__gh("ul",{className:"bx-comodidades",style:{margin:"22px 0 0",padding:0,listStyle:"none",display:"grid",gridTemplateColumns:"repeat(3, minmax(0, 1fr))",gap:"16px 28px"},"data-gufi-src":"sections/estancia.tsx:341"},filas.map(([Icono,t2])=>__gh("li",{key:t2,style:{display:"flex",alignItems:"center",gap:14,fontSize:16,color:A.ink},"data-gufi-src":"sections/estancia.tsx:343"},__gh(Icono,{style:{...icono2,width:22,height:22,flexShrink:0},strokeWidth:1.6}),t2))))}function Estrellas(){return __gh("span",{style:{display:"inline-flex",gap:1},"data-gufi-src":"sections/estancia.tsx:355"},[0,1,2,3,4].map(n=>__gh(import_lucide_react23.Star,{key:n,style:{width:9,height:9,fill:A.ink,color:A.ink}})))}function mes(f){let[y,m]=f.split("-").map(Number);return m>=1&&m<=12?new Date(Date.UTC(y,m-1,15)).toLocaleDateString(LOCALE,{month:"long",year:"numeric",timeZone:"UTC"}):""}var ESTILO_FICHA=` @media (max-width: 900px) { .bx-notas { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } .bx-notas > div:nth-child(odd) { border-left: none !important; } .bx-opiniones, .bx-comodidades { grid-template-columns: 1fr !important; } } `;var import_react25=require("react"),import_lucide_react24=require("lucide-react");var SERVICIO={turistico:["Alquiler tur\xEDstico","Holiday rental"],tradicional:["Alquiler de larga duraci\xF3n","Long-term rental"],venta:["Venta","Sale"],reformas:["Reforma","Renovation"]},ESTADO_CASA={nueva:["Recibida: te llamamos","Received: we\u2019ll call you"],contactada:["En marcha","In progress"],cerrada:["Cerrada","Closed"]};function deLaUrl2(){let q=new URLSearchParams(typeof window>"u"?"":window.location.search);return{retenida:q.get("retenida"),sinTarjeta:q.get("sin_tarjeta"),pagada:q.get("pagada"),sinPagar:q.get("sin_pagar")}}var VIVA=estado=>estado==="pendiente"||estado==="confirmada";function Cuenta({gufi,url}){let sesion=useSesion(),[datos,setDatos]=(0,import_react25.useState)(null),[error,setError]=(0,import_react25.useState)(""),[aviso]=(0,import_react25.useState)(deLaUrl2),[acceso,setAcceso]=(0,import_react25.useState)(null),cargar=(0,import_react25.useCallback)(()=>{setError(""),gufi.publicAutomation("web_cuenta").run({accion:"yo"}).then(r=>setDatos(r)).catch(e=>{if(sesionCaducada(e))return cerrarSesion();setError(e instanceof Error?e.message:String(e))})},[gufi]);(0,import_react25.useEffect)(()=>{sesion?cargar():setDatos(null)},[sesion,cargar]);let hoy2=new Date().toLocaleDateString("sv-SE",{timeZone:"Europe/Madrid"}),proximas=datos?datos.reservas.filter(r=>r.salida>=hoy2&&VIVA(r.estado)):[],pasadas=datos?datos.reservas.filter(r=>!(r.salida>=hoy2&&VIVA(r.estado))):[],propietario=datos?datos.huesped.tipo==="propietario"||datos.casas.length>0:sesion?.tipo==="propietario",huesped=datos?datos.huesped.tipo==="huesped"||datos.reservas.length>0:sesion?.tipo!=="propietario";return __gh("div",{className:"bx","data-gufi-src":"sections/cuenta.tsx:94"},__gh("style",{"data-gufi-src":"sections/cuenta.tsx:95"},ESTILO_ESTANCIAS+ESTILO_CUENTA),__gh(Acceso,{gufi,url,abierto:acceso!==null,onClose:()=>setAcceso(null),alEntrar:()=>setAcceso(null),modoInicial:acceso?.modo??"crear",tipoFijo:acceso?.tipo,foto:PORTADA_POSTER}),__gh("div",{className:"bx-caja",style:{maxWidth:1040,padding:"clamp(36px, 6vw, 72px) var(--bx-margen) clamp(70px, 9vw, 120px)"},"data-gufi-src":"sections/cuenta.tsx:106"},sesion?__gh(__gf,null,__gh("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"flex-end",justifyContent:"space-between",gap:16},"data-gufi-src":"sections/cuenta.tsx:140"},__gh("div",{"data-gufi-src":"sections/cuenta.tsx:141"},__gh("h1",{style:titular,"data-gufi-src":"sections/cuenta.tsx:142"},t("Hola","Hi"),", ",sesion.nombre),__gh("p",{style:{margin:"8px 0 0",fontSize:16,color:A.muted},"data-gufi-src":"sections/cuenta.tsx:143"},sesion.email," \xB7 ",propietario&&!huesped?t("Cuenta de propietario","Owner account"):t("Cuenta de hu\xE9sped","Guest account"))),__gh("button",{type:"button",onClick:cerrarSesion,className:"bx-suave",style:{display:"inline-flex",alignItems:"center",gap:8,height:40,padding:"0 16px",borderRadius:999,border:`1px solid ${A.line}`,background:A.bg,fontFamily:"inherit",fontSize:14.5,fontWeight:600,color:A.ink,cursor:"pointer"},"data-gufi-src":"sections/cuenta.tsx:147"},__gh(import_lucide_react24.LogOut,{style:{width:15,height:15}}),t("Salir","Sign out"))),aviso.retenida&&__gh(Banda,null,t(`Solicitud ${aviso.retenida} enviada. El importe queda retenido en tu tarjeta, sin cobrar: se cobra cuando la aceptemos y, si no podemos, se suelta.`,`Request ${aviso.retenida} sent. The amount is held on your card, not charged: it is charged when we accept and released if we can\u2019t.`)),aviso.sinTarjeta&&__gh(Banda,null,t(`La solicitud ${aviso.sinTarjeta} est\xE1 guardada, pero falta dejar la tarjeta. Puedes hacerlo abajo: hasta entonces no la vemos.`,`Request ${aviso.sinTarjeta} is saved, but your card is still missing. You can add it below: we won\u2019t see it until then.`)),aviso.pagada&&__gh(Banda,null,t(`Pago recibido de la reserva ${aviso.pagada}. Gracias: te escribimos con los detalles de la llegada.`,`Payment received for booking ${aviso.pagada}. Thank you: we\u2019ll send you the check-in details.`)),aviso.sinPagar&&__gh(Banda,null,t(`La reserva ${aviso.sinPagar} sigue en pie, pero el pago no se ha completado. Puedes pagarla abajo cuando quieras.`,`Booking ${aviso.sinPagar} still stands, but the payment wasn\u2019t completed. You can pay below whenever you like.`)),error!==""&&__gh("p",{style:{margin:"24px 0 0",fontSize:15,color:"#b42318"},"data-gufi-src":"sections/cuenta.tsx:157"},error),!datos&&error===""&&__gh("p",{style:{margin:"32px 0 0",fontSize:15,color:A.muted},"data-gufi-src":"sections/cuenta.tsx:158"},t("Cargando tu cuenta","Loading your account")),datos&&propietario&&__gh(Casas,{gufi,url,datos,alCambiar:cargar}),datos&&huesped&&__gh(__gf,null,__gh("h2",{style:{...seccion,marginTop:44},"data-gufi-src":"sections/cuenta.tsx:164"},t("Pr\xF3ximas estancias","Upcoming stays")),proximas.length===0?__gh("div",{style:{marginTop:16,padding:"32px 24px",borderRadius:20,background:A.alt,textAlign:"center"},"data-gufi-src":"sections/cuenta.tsx:166"},__gh("p",{style:{margin:0,fontSize:16,color:A.body},"data-gufi-src":"sections/cuenta.tsx:167"},t("No tienes ninguna estancia por delante.","You have no upcoming stays.")),__gh("a",{href:url("/estancias-cortas"),className:"bx-boton",style:{...botonVerde,marginTop:16,textDecoration:"none"},"data-gufi-src":"sections/cuenta.tsx:168"},t("Buscar alojamiento","Find a place to stay"))):__gh("div",{style:{marginTop:16,display:"grid",gap:14},"data-gufi-src":"sections/cuenta.tsx:173"},proximas.map(r=>__gh(FilaReserva,{key:r.codigo,r,url,gufi,cobro:datos.cobro}))),pasadas.length>0&&__gh(__gf,null,__gh("h2",{style:{...seccion,marginTop:44},"data-gufi-src":"sections/cuenta.tsx:179"},t("Anteriores","Past")),__gh("div",{style:{marginTop:16,display:"grid",gap:14},"data-gufi-src":"sections/cuenta.tsx:180"},pasadas.map(r=>__gh(FilaReserva,{key:r.codigo,r,url,gufi,cobro:datos.cobro}))))),datos&&__gh(MisDatos,{gufi,inicial:datos.huesped,alGuardar:cargar})):__gh("div",{style:{maxWidth:760,margin:"0 auto",textAlign:"center"},"data-gufi-src":"sections/cuenta.tsx:108"},__gh("h1",{style:titular,"data-gufi-src":"sections/cuenta.tsx:109"},t("Tu cuenta en Batuecas","Your Batuecas account")),__gh("p",{style:{margin:"12px auto 0",maxWidth:520,fontSize:18,lineHeight:1.5,color:A.muted},"data-gufi-src":"sections/cuenta.tsx:110"},t("Para reservar una estancia o para dejarnos tu casa.","To book a stay or to leave your home with us.")),__gh("div",{className:"bx-cta-tipos",style:{marginTop:32,display:"grid",gridTemplateColumns:"1fr 1fr",gap:14,textAlign:"left"},"data-gufi-src":"sections/cuenta.tsx:113"},__gh(PuertaTipo,{icono:__gh(import_lucide_react24.BedDouble,{style:{width:26,height:26},strokeWidth:1.6}),titulo:t("Vengo a alojarme","I\u2019m here to stay"),texto:t("Reserva directo, sin comisiones de plataforma, y ten tus reservas en un sitio.","Book direct, with no platform fees, and keep your bookings in one place."),onClick:()=>setAcceso({modo:"crear",tipo:"huesped"})}),__gh(PuertaTipo,{icono:__gh(import_lucide_react24.Home,{style:{width:26,height:26},strokeWidth:1.6}),titulo:t("Tengo una casa","I own a home"),texto:t("Alquiler tur\xEDstico, de larga duraci\xF3n, venta o reforma: cu\xE9ntanos y te llamamos.","Holiday or long-term rental, sale or renovation: tell us and we\u2019ll call you."),onClick:()=>setAcceso({modo:"crear",tipo:"propietario"})})),__gh("p",{style:{margin:"26px 0 0",fontSize:15.5,color:A.body},"data-gufi-src":"sections/cuenta.tsx:127"},t("\xBFYa tienes cuenta?","Already have an account?")," ",__gh("button",{type:"button",onClick:()=>setAcceso({modo:"entrar"}),style:{...borrar,fontSize:15.5},"data-gufi-src":"sections/cuenta.tsx:129"},t("Inicia sesi\xF3n","Sign in"))),__gh("p",{style:{margin:"10px 0 0",fontSize:14,color:A.muted},"data-gufi-src":"sections/cuenta.tsx:133"},t("\xBFYa trabajas con nosotros como propietario?","Already a Batuecas owner?")," ",__gh("a",{href:url("/portal"),style:{color:A.body,textUnderlineOffset:3},"data-gufi-src":"sections/cuenta.tsx:135"},t("Entra en tu portal","Go to your owner portal"))))))}function PuertaTipo({icono:icono3,titulo:titulo3,texto,onClick}){return __gh("button",{type:"button",onClick,className:"bx-puerta",style:{display:"grid",gap:8,padding:24,borderRadius:22,border:`1px solid ${A.hair}`,background:A.bg,boxShadow:A.sombra,fontFamily:"inherit",textAlign:"left",color:A.ink,cursor:"pointer"},"data-gufi-src":"sections/cuenta.tsx:198"},icono3,__gh("span",{style:{marginTop:6,fontSize:19,fontWeight:600,letterSpacing:"-0.02em"},"data-gufi-src":"sections/cuenta.tsx:200"},titulo3),__gh("span",{style:{fontSize:15,lineHeight:1.5,color:A.muted},"data-gufi-src":"sections/cuenta.tsx:201"},texto),__gh("span",{style:{marginTop:6,fontSize:15,fontWeight:600,color:A.accent},"data-gufi-src":"sections/cuenta.tsx:202"},t("Crear cuenta","Create account")," \u2192"))}function Casas({gufi,url,datos,alCambiar}){let[abierto,setAbierto]=(0,import_react25.useState)(!1),[servicios,setServicios]=(0,import_react25.useState)([]),[direccion,setDireccion]=(0,import_react25.useState)(""),[mensaje,setMensaje]=(0,import_react25.useState)(""),[error,setError]=(0,import_react25.useState)(""),[enviando,setEnviando]=(0,import_react25.useState)(!1),enviar=async e=>{e.preventDefault(),setEnviando(!0),setError("");try{await gufi.publicAutomation("web_cuenta").run({accion:"casa",servicios,direccion,mensaje}),setAbierto(!1),setServicios([]),setDireccion(""),setMensaje(""),alCambiar()}catch(err){setError(err instanceof Error?err.message:String(err))}finally{setEnviando(!1)}};return __gh("section",{style:{marginTop:40},"data-gufi-src":"sections/cuenta.tsx:235"},datos.portal&&__gh("a",{href:url("/portal"),className:"bx-portal",style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:16,padding:"20px 22px",borderRadius:20,background:A.ink,color:"#fff",textDecoration:"none"},"data-gufi-src":"sections/cuenta.tsx:237"},__gh("span",{"data-gufi-src":"sections/cuenta.tsx:238"},__gh("span",{style:{display:"block",fontSize:17,fontWeight:600},"data-gufi-src":"sections/cuenta.tsx:239"},t("Tu portal de propietario","Your owner portal")),__gh("span",{style:{display:"block",marginTop:3,fontSize:14.5,color:"rgba(255,255,255,0.72)"},"data-gufi-src":"sections/cuenta.tsx:240"},t("Reservas, ocupaci\xF3n, facturas y cobros de tus pisos con Batuecas.","Bookings, occupancy, invoices and payouts for your homes with Batuecas."))),__gh(import_lucide_react24.ArrowRight,{style:{width:22,height:22,flexShrink:0}})),__gh("div",{style:{marginTop:datos.portal?36:0,display:"flex",alignItems:"center",justifyContent:"space-between",gap:12},"data-gufi-src":"sections/cuenta.tsx:248"},__gh("h2",{style:seccion,"data-gufi-src":"sections/cuenta.tsx:249"},t("Tus casas","Your homes")),!abierto&&__gh("button",{type:"button",onClick:()=>setAbierto(!0),className:"bx-suave",style:{height:40,padding:"0 16px",borderRadius:999,border:`1px solid ${A.ink}`,background:A.bg,fontFamily:"inherit",fontSize:14.5,fontWeight:600,color:A.ink,cursor:"pointer"},"data-gufi-src":"sections/cuenta.tsx:251"},t("A\xF1adir una casa","Add a home"))),abierto&&__gh("form",{onSubmit:enviar,style:{marginTop:16,padding:22,borderRadius:20,border:`1px solid ${A.hair}`,boxShadow:A.sombra},"data-gufi-src":"sections/cuenta.tsx:258"},__gh("div",{style:{fontSize:14,fontWeight:500,color:A.body,marginBottom:8},"data-gufi-src":"sections/cuenta.tsx:259"},t("Qu\xE9 quieres hacer con ella","What would you like to do with it")),__gh("div",{style:{display:"flex",flexWrap:"wrap",gap:8},"data-gufi-src":"sections/cuenta.tsx:260"},Object.entries(SERVICIO).map(([k,[es,en]])=>{let on=servicios.includes(k);return __gh("button",{key:k,type:"button","aria-pressed":on,onClick:()=>setServicios(on?servicios.filter(x=>x!==k):[...servicios,k]),style:{display:"inline-flex",alignItems:"center",gap:6,height:38,padding:"0 14px",borderRadius:999,border:`1px solid ${on?A.ink:A.line}`,background:on?A.ink:A.bg,color:on?"#fff":A.ink,fontFamily:"inherit",fontSize:14,cursor:"pointer"},"data-gufi-src":"sections/cuenta.tsx:264"},on&&__gh(import_lucide_react24.Check,{style:{width:14,height:14},strokeWidth:2.6}),t(es,en))})),__gh("label",{style:{display:"block",marginTop:14},"data-gufi-src":"sections/cuenta.tsx:271"},__gh("span",{style:etiqueta3,"data-gufi-src":"sections/cuenta.tsx:272"},t("Direcci\xF3n de la casa","Home address")),__gh("input",{value:direccion,onChange:e=>setDireccion(e.target.value),autoComplete:"street-address",placeholder:t("Calle, n\xFAmero, piso y ciudad","Street, number, floor and city"),style:entrada2,"data-gufi-src":"sections/cuenta.tsx:273"})),__gh("label",{style:{display:"block",marginTop:12},"data-gufi-src":"sections/cuenta.tsx:275"},__gh("span",{style:etiqueta3,"data-gufi-src":"sections/cuenta.tsx:276"},t("Algo m\xE1s que debamos saber (si quieres)","Anything else we should know (optional)")),__gh("textarea",{value:mensaje,onChange:e=>setMensaje(e.target.value),rows:2,style:{...entrada2,height:"auto",padding:"12px 14px",resize:"vertical"},"data-gufi-src":"sections/cuenta.tsx:277"})),error!==""&&__gh("p",{style:{margin:"12px 0 0",fontSize:14,color:"#b42318"},"data-gufi-src":"sections/cuenta.tsx:279"},error),__gh("div",{style:{marginTop:16,display:"flex",alignItems:"center",gap:16},"data-gufi-src":"sections/cuenta.tsx:280"},__gh("button",{type:"submit",disabled:enviando,className:"bx-boton",style:{...botonVerde,height:44},"data-gufi-src":"sections/cuenta.tsx:281"},enviando?t("Enviando","Sending"):t("Enviar","Send")),__gh("button",{type:"button",onClick:()=>setAbierto(!1),style:{...borrar,fontWeight:500,color:A.muted},"data-gufi-src":"sections/cuenta.tsx:284"},t("Cancelar","Cancel")))),datos.casas.length===0&&!abierto?__gh("div",{style:{marginTop:16,padding:"28px 24px",borderRadius:20,background:A.alt,fontSize:16,color:A.body,textAlign:"center"},"data-gufi-src":"sections/cuenta.tsx:292"},t("A\xFAn no nos has contado nada de tu casa.","You haven\u2019t told us about your home yet.")):__gh("div",{style:{marginTop:16,display:"grid",gap:10},"data-gufi-src":"sections/cuenta.tsx:296"},datos.casas.map(c=>__gh("div",{key:c.id,style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:16,padding:"16px 20px",borderRadius:18,border:`1px solid ${A.hair}`},"data-gufi-src":"sections/cuenta.tsx:298"},__gh("span",{style:{minWidth:0},"data-gufi-src":"sections/cuenta.tsx:299"},__gh("span",{style:{display:"block",fontSize:16.5,fontWeight:600,color:A.ink},"data-gufi-src":"sections/cuenta.tsx:300"},SERVICIO[c.tipo]?t(...SERVICIO[c.tipo]):c.tipo),__gh("span",{style:{display:"block",marginTop:2,fontSize:14.5,color:A.muted},"data-gufi-src":"sections/cuenta.tsx:301"},c.direccion," \xB7 ",diaCorto(c.fecha))),__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6,fontSize:14,color:A.body,flexShrink:0},"data-gufi-src":"sections/cuenta.tsx:305"},__gh("span",{style:{width:7,height:7,borderRadius:"50%",background:c.estado==="cerrada"?A.line:c.estado==="contactada"?"#1f9d55":"#d97706"},"data-gufi-src":"sections/cuenta.tsx:306"}),ESTADO_CASA[c.estado]?t(...ESTADO_CASA[c.estado]):c.estado)))))}function FilaReserva({r,url,gufi,cobro}){let[pagando,setPagando]=(0,import_react25.useState)(!1),[error,setError]=(0,import_react25.useState)(""),pagar=async()=>{setPagando(!0),setError("");try{let x=await gufi.publicAutomation("web_cuenta").run({accion:"pagar",codigo:r.codigo,base:window.location.origin});window.location.href=x.pago.url}catch(e){setError(e instanceof Error?e.message:String(e)),setPagando(!1)}},falta=cobro==="stripe"&&(r.estado==="pendiente"&&r.pago==="pendiente"||r.estado==="confirmada"&&r.pago!=="pagado"),[estado,punto]=r.estado==="cancelada"?[t("Cancelada","Cancelled"),A.line]:r.estado==="rechazada"?[t("No disponible: no se te cobra nada","Not available: you won\u2019t be charged"),A.line]:r.estado==="pendiente"?r.pago==="retenido"?[t("Pendiente de aceptaci\xF3n \xB7 tarjeta retenida, sin cobrar","Awaiting approval \xB7 card held, not charged"),"#d97706"]:falta?[t("Falta dejar la tarjeta","Card still missing"),"#d97706"]:[t("Pendiente de aceptaci\xF3n","Awaiting approval"),"#d97706"]:r.pago==="pagado"?[t("Confirmada y pagada","Confirmed and paid"),"#1f9d55"]:r.pago==="incompleto"?[t("Confirmada \xB7 pago incompleto","Confirmed \xB7 partly paid"),"#d97706"]:[t("Confirmada \xB7 pendiente de pago","Confirmed \xB7 payment pending"),"#d97706"];return __gh("div",{className:"bx-reserva",style:{display:"grid",gridTemplateColumns:"120px minmax(0, 1fr) auto",gap:18,alignItems:"center",padding:14,borderRadius:20,border:`1px solid ${A.hair}`},"data-gufi-src":"sections/cuenta.tsx:345"},__gh("a",{href:url(`/${r.slug}`),style:{display:"block",borderRadius:14,overflow:"hidden",aspectRatio:"4 / 3",background:A.alt},"data-gufi-src":"sections/cuenta.tsx:346"},r.foto&&__gh("img",{src:fotoMd(r.foto),alt:r.titulo,loading:"lazy","data-no-thumb":"true",sizes:"120px",style:{display:"block",width:"100%",height:"100%",objectFit:"cover"},"data-gufi-src":"sections/cuenta.tsx:347"})),__gh("div",{style:{minWidth:0},"data-gufi-src":"sections/cuenta.tsx:349"},__gh("div",{style:{fontSize:13.5,color:A.muted},"data-gufi-src":"sections/cuenta.tsx:350"},r.codigo," \xB7 ",r.ciudad),__gh("a",{href:url(`/${r.slug}`),style:{display:"block",marginTop:2,fontSize:17,fontWeight:600,letterSpacing:"-0.01em",color:A.ink,textDecoration:"none"},"data-gufi-src":"sections/cuenta.tsx:351"},r.titulo),__gh("div",{style:{marginTop:4,fontSize:15,color:A.body},"data-gufi-src":"sections/cuenta.tsx:352"},diaCorto(r.entrada)," \u2013 ",diaCorto(r.salida)," \xB7 ",r.noches," ",r.noches===1?t("noche","night"):t("noches","nights")," \xB7 ",r.huespedes," ",r.huespedes===1?t("hu\xE9sped","guest"):t("hu\xE9spedes","guests")),error!==""&&__gh("div",{style:{marginTop:6,fontSize:14,color:"#b42318"},"data-gufi-src":"sections/cuenta.tsx:355"},error)),__gh("div",{style:{textAlign:"right"},"data-gufi-src":"sections/cuenta.tsx:357"},__gh("div",{style:{fontSize:17,fontWeight:600,color:A.ink,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/cuenta.tsx:358"},euros(r.total)),__gh("div",{style:{marginTop:4,display:"inline-flex",alignItems:"center",gap:6,fontSize:14,color:A.body},"data-gufi-src":"sections/cuenta.tsx:359"},__gh("span",{style:{width:7,height:7,borderRadius:"50%",background:punto},"data-gufi-src":"sections/cuenta.tsx:360"}),estado),falta&&__gh("div",{"data-gufi-src":"sections/cuenta.tsx:364"},__gh("button",{type:"button",onClick:pagar,disabled:pagando,className:"bx-boton",style:{...botonVerde,height:38,padding:"0 16px",fontSize:14.5,marginTop:8},"data-gufi-src":"sections/cuenta.tsx:365"},pagando?t("Abriendo","Opening"):r.estado==="pendiente"?t("Dejar la tarjeta","Add your card"):t("Pagar","Pay")))))}function MisDatos({gufi,inicial,alGuardar}){let[v,setV]=(0,import_react25.useState)({nombre:inicial.nombre,apellidos:inicial.apellidos??"",telefono:inicial.telefono??""}),[estado,setEstado]=(0,import_react25.useState)(""),[error,setError]=(0,import_react25.useState)(""),guardar3=async e=>{e.preventDefault(),setEstado("guardando"),setError("");try{await gufi.publicAutomation("web_cuenta").run({accion:"datos",...v}),setEstado("guardado"),alGuardar()}catch(err){setEstado(""),setError(err instanceof Error?err.message:String(err))}},campo2=(k,et,auto)=>__gh("label",{style:{display:"block"},"data-gufi-src":"sections/cuenta.tsx:393"},__gh("span",{style:etiqueta3,"data-gufi-src":"sections/cuenta.tsx:394"},et),__gh("input",{value:v[k],autoComplete:auto,onChange:e=>{setV({...v,[k]:e.target.value}),setEstado("")},style:entrada2,"data-gufi-src":"sections/cuenta.tsx:395"}));return __gh("form",{onSubmit:guardar3,style:{marginTop:48,paddingTop:36,borderTop:`1px solid ${A.hair}`},"data-gufi-src":"sections/cuenta.tsx:399"},__gh("h2",{style:seccion,"data-gufi-src":"sections/cuenta.tsx:400"},t("Mis datos","My details")),__gh("div",{className:"bx-datos",style:{marginTop:16,display:"grid",gridTemplateColumns:"repeat(3, minmax(0, 1fr))",gap:12},"data-gufi-src":"sections/cuenta.tsx:401"},campo2("nombre",t("Nombre","First name"),"given-name"),campo2("apellidos",t("Apellidos","Last name"),"family-name"),campo2("telefono",t("Tel\xE9fono","Phone"),"tel")),error!==""&&__gh("p",{style:{margin:"12px 0 0",fontSize:14,color:"#b42318"},"data-gufi-src":"sections/cuenta.tsx:406"},error),__gh("div",{style:{marginTop:16,display:"flex",alignItems:"center",gap:14},"data-gufi-src":"sections/cuenta.tsx:407"},__gh("button",{type:"submit",disabled:estado==="guardando",className:"bx-boton",style:{...botonVerde,height:44},"data-gufi-src":"sections/cuenta.tsx:408"},estado==="guardando"?t("Guardando","Saving"):t("Guardar","Save")),estado==="guardado"&&__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6,fontSize:14.5,color:A.body},"data-gufi-src":"sections/cuenta.tsx:412"},__gh(import_lucide_react24.Check,{style:{width:16,height:16}})," ",t("Guardado","Saved")),__gh("button",{type:"button",onClick:cerrarSesion,style:{...borrar,marginLeft:"auto",fontWeight:500,color:A.muted},"data-gufi-src":"sections/cuenta.tsx:416"},t("Salir de la cuenta","Sign out"))))}function Banda({children}){return __gh("div",{style:{marginTop:28,padding:"16px 20px",borderRadius:16,background:A.alt,fontSize:15.5,lineHeight:1.5,color:A.ink},"data-gufi-src":"sections/cuenta.tsx:425"},children)}var ESTILO_CUENTA=` .bx-puerta { transition: transform 0.2s, box-shadow 0.2s; } .bx-puerta:hover { transform: translateY(-3px); box-shadow: ${A.sombraFuerte}; } @media (max-width: 760px) { .bx-cta-tipos { grid-template-columns: 1fr !important; } .bx-datos { grid-template-columns: 1fr !important; } .bx-reserva { grid-template-columns: 88px minmax(0, 1fr) !important; } .bx-reserva > div:last-child { grid-column: 1 / -1; text-align: left !important; } } `,titular={margin:0,fontSize:"clamp(32px, 5vw, 48px)",lineHeight:1.06,fontWeight:600,letterSpacing:"-0.03em",color:A.ink},seccion={margin:0,fontSize:"clamp(21px, 2.4vw, 24px)",fontWeight:600,letterSpacing:"-0.02em",color:A.ink},etiqueta3={display:"block",marginBottom:6,fontSize:13.5,fontWeight:500,color:A.body},entrada2={width:"100%",height:48,padding:"0 14px",borderRadius:12,border:`1px solid ${A.line}`,background:A.bg,color:A.ink,fontSize:16,fontFamily:"inherit",boxSizing:"border-box"};var import_react43=require("react"),import_lucide_react42=require("lucide-react");var import_react26=__toESM(require("react")),import_lucide_react25=require("lucide-react"),MARCA=null,FUENTE2=null,fijarMarca=m=>{MARCA=m};function marca(){if(!MARCA)throw new Error("El portal se ha pintado antes de cargar la marca");return MARCA}var fijarFuente=f=>{FUENTE2=f};function deFactura(){if(!FUENTE2)throw new Error("El portal se ha pintado antes de saber de d\xF3nde salen las cifras");return FUENTE2==="odoo"}var ficheroUrl=path=>"/api/files/serve?path="+encodeURIComponent(path),TOKEN_KEY="propietarios:token";function Logo({tam}){let m=marca();return m.logo?__gh("img",{src:ficheroUrl(m.logo),alt:m.nombre,style:{width:tam,height:tam,borderRadius:Math.round(tam*.26),objectFit:"cover",display:"block",flexShrink:0},"data-gufi-src":"portal/ui.tsx:43"}):__gh("span",{style:{width:tam,height:tam,borderRadius:Math.round(tam*.26),background:B.ink,color:"#fff",fontSize:Math.round(tam*.46),fontWeight:650,display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},"data-gufi-src":"portal/ui.tsx:44"},m.nombre.slice(0,1).toUpperCase())}var GRAD="linear-gradient(145deg,#3a3a3c 0%,#1d1d1f 100%)",B={accent:"#1d1d1f",accent2:"#000000",gold:"#b8b8bd",grad:GRAD,ink:"#1d1d1f",sub:"#4a4a4f",muted:"#86868b",faint:"#a1a1a6",bg:"#f6f6f7",hair:"#e5e5e7",card:"#fff",accentSoft:"rgba(29,29,31,0.055)",accentLine:"rgba(29,29,31,0.20)",green:"#15803d",red:"#dc2626",amber:"#b45309"},B_CSS=` :root{ --b-accent:#1d1d1f; --b-ink:#1d1d1f; --b-muted:#86868b; --b-faint:#a1a1a6; --b-hair:#e5e5e7; --b-grad:${GRAD}; } .b-root{font-family:-apple-system,"SF Pro Display","SF Pro Text",BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;letter-spacing:-.014em;color:var(--b-ink);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility;} .b-root h1,.b-root h2,.b-root h3{letter-spacing:-.03em;font-weight:600;} .b-num{font-variant-numeric:tabular-nums;} /* Una superficie: blanca, esquina generosa, un filo fin\xEDsimo y una sombra que casi no est\xE1. Sin sombra pesada y sin degradados decorativos \u2014 el relieve lo da el aire, no el efecto. */ .b-card{background:#fff;border-radius:18px;border:1px solid var(--b-hair);} .b-card-hover{transition:box-shadow .3s cubic-bezier(.2,.8,.3,1),transform .3s cubic-bezier(.2,.8,.3,1),border-color .3s;} .b-card-hover:hover{border-color:rgba(29,29,31,.28);box-shadow:0 8px 28px -14px rgba(0,0,0,.18);transform:translateY(-2px);} /* El resplandor del onboarding: una mancha enorme del acento, muy difuminada, detr\xE1s de todo. */ .b-glow{position:absolute;width:820px;height:820px;border-radius:50%;top:-400px;left:50%;transform:translateX(-50%);pointer-events:none;background:radial-gradient(circle,rgba(29,29,31,.055) 0%,rgba(29,29,31,.02) 40%,transparent 70%);filter:blur(80px);z-index:0;} /* La fila de pesta\xF1as de la 765/8: una sola l\xEDnea que se desliza, sin caja gris, y la activa marcada con su subrayado. El subrayado ocupa sitio tambi\xE9n cuando no est\xE1 activa, o la fila pega un salto de 2 px al cambiar. */ .b-tabs{display:flex;align-items:stretch;gap:4px;overflow-x:auto;border-bottom:1px solid var(--b-hair);scrollbar-width:none;-webkit-overflow-scrolling:touch;} .b-tabs::-webkit-scrollbar{display:none;} .b-tabs>button{flex-shrink:0;padding:9px 13px 10px;font-size:13.5px;letter-spacing:-.2px;color:var(--b-muted);background:transparent;border:none;border-bottom:2px solid transparent;margin-bottom:-1px;cursor:pointer;white-space:nowrap;transition:color .2s;} .b-tabs>button[data-on="1"]{color:var(--b-ink);font-weight:600;border-bottom-color:var(--b-accent);} /* El men\xFA del usuario: panel anclado, sin velo \u2014 no es un di\xE1logo. */ .b-menu{position:absolute;top:calc(100% + 8px);right:0;z-index:50;min-width:236px;background:#fff;border:1px solid var(--b-hair);border-radius:16px;box-shadow:0 14px 44px -12px rgba(0,0,0,.22);overflow:hidden;} .b-menu button{width:100%;display:flex;align-items:center;gap:9px;padding:10px 14px;font-size:13.5px;color:var(--b-ink);background:transparent;border:none;cursor:pointer;text-align:left;transition:background .18s;} .b-menu button:hover{background:#f6f6f7;} .b-input{width:100%;background:#fff;border:1px solid var(--b-hair);border-radius:14px;padding:13px 15px;font-size:15px;color:var(--b-ink);outline:none;transition:border-color .25s,box-shadow .25s;box-sizing:border-box;} .b-input::placeholder{color:var(--b-faint);} .b-input:focus{border-color:var(--b-accent);box-shadow:0 0 0 4px rgba(29,29,31,.10);} /* Pulsar: se hunde un pelo y vuelve. Lo mismo en bot\xF3n, tarjeta y pesta\xF1a. */ .b-press{transition:transform .3s cubic-bezier(.2,.8,.3,1),box-shadow .3s,opacity .25s,background .25s,border-color .25s;} .b-press:hover{transform:scale(1.015);} .b-press:active{transform:scale(.985);} .b-btn-grad{background:var(--b-grad);color:#fff;box-shadow:0 8px 30px -10px rgba(29,29,31,.55);} .b-btn-grad:hover{filter:saturate(1.05) brightness(1.04);} /* La superficie te\xF1ida del onboarding: fondo del acento al 5,5 % y un filo al 20 %. */ .b-soft{background:rgba(29,29,31,.055);border:1px solid rgba(29,29,31,.20);color:var(--b-accent);} .b-pill{display:inline-flex;align-items:center;gap:6px;border-radius:9999px;padding:5px 12px;font-size:12px;font-weight:600;line-height:1;white-space:nowrap;} .b-aura{position:absolute;inset:0;overflow:hidden;pointer-events:none;} .b-aura::before{content:"";position:absolute;width:560px;height:560px;top:-220px;right:-160px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.10),transparent 60%);} .b-aura::after{content:"";position:absolute;width:420px;height:420px;bottom:-190px;left:-130px;border-radius:50%;background:radial-gradient(circle,rgba(255,255,255,.06),transparent 62%);} @keyframes b-rise{from{opacity:0;transform:translateY(14px);}to{opacity:1;transform:translateY(0);}} @keyframes b-fade{from{opacity:0;}to{opacity:1;}} .b-rise{animation:b-rise .5s cubic-bezier(.2,.8,.3,1) both;} .b-fade{animation:b-fade .45s ease both;} /* Control segmentado, estilo iOS: la pastilla blanca se mueve, el resto es fondo. */ .b-seg{display:inline-flex;background:#eeeef0;border-radius:14px;padding:4px;gap:2px;max-width:100%;overflow-x:auto;-webkit-overflow-scrolling:touch;scrollbar-width:none;} .b-seg::-webkit-scrollbar{display:none;} .b-seg>button{border:none;background:transparent;border-radius:10px;padding:8px 16px;font-size:13.5px;font-weight:600;color:var(--b-faint);cursor:pointer;white-space:nowrap;transition:background .25s,color .25s,box-shadow .25s;} .b-seg>button[data-on="1"]{background:#fff;color:var(--b-ink);box-shadow:0 1px 3px rgba(26,18,19,.12);} /* Una fila de tabla, cuando no hay tabla: en el m\xF3vil las filas son fichas. */ .b-row{background:#fff;border-radius:14px;padding:14px 15px;border:1px solid var(--b-hair);} .b-row+.b-row{margin-top:9px;} .b-kv{display:flex;align-items:baseline;justify-content:space-between;gap:12px;font-size:12.5px;line-height:1.9;} .b-kv>span:first-child{color:var(--b-faint);} .b-kv>span:last-child{color:var(--b-ink);font-weight:600;font-variant-numeric:tabular-nums;} /* El n\xFAmero de una secci\xF3n, como en su informe: un c\xEDrculo con el acento dentro. */ .b-step{display:flex;align-items:center;justify-content:center;flex-shrink:0;width:28px;height:28px;border-radius:10px;font-size:13.5px;font-weight:700;font-variant-numeric:tabular-nums;background:var(--b-grad);color:#fff;} /* \u2500\u2500\u2500\u2500\u2500 El portal (17-sep-2026): cabecera con men\xFA arriba, filtros como p\xEDldoras y hojas laterales \u2500\u2500\u2500\u2500\u2500 */ .p-shell{min-height:100vh;background:#f5f5f7;} /* La cabecera NO lleva backdrop-filter: crea bloque contenedor y la capa de \xABpulsa fuera\xBB de los men\xFAs dejar\xEDa de cubrir la pantalla. */ .p-head{position:sticky;top:0;z-index:30;background:#fff;border-bottom:1px solid var(--b-hair);} .p-head-in{max-width:1280px;margin:0 auto;padding:0 28px;height:60px;display:flex;align-items:center;gap:20px;} .p-brand{display:flex;align-items:center;gap:10px;flex-shrink:0;} .p-nav{display:flex;align-items:stretch;gap:2px;height:100%;flex:1;justify-content:center;} .p-nav>button{display:flex;align-items:center;gap:7px;padding:0 13px;font-size:14px;letter-spacing:-.2px;color:var(--b-muted);background:transparent;border:none;border-bottom:2px solid transparent;cursor:pointer;margin-bottom:-1px;white-space:nowrap;transition:color .2s;} .p-nav>button:hover{color:var(--b-ink);} .p-nav>button[data-on="1"]{color:var(--b-ink);font-weight:600;border-bottom-color:var(--b-accent);} .p-main{max-width:1280px;margin:0 auto;padding:22px 28px 72px;} .p-filtros{display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:20px;} .p-pill{display:inline-flex;align-items:center;gap:7px;height:36px;padding:0 11px 0 14px;border-radius:999px;background:#fff;border:1px solid var(--b-hair);font-size:13.5px;color:var(--b-ink);cursor:pointer;max-width:100%;transition:border-color .2s,box-shadow .2s;} .p-pill:hover{border-color:#d2d2d7;} .p-pill[data-on="1"]{border-color:rgba(29,29,31,.45);box-shadow:0 0 0 3px rgba(29,29,31,.07);} .p-pill .k{color:var(--b-muted);} .p-pill .v{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:280px;} .p-veil{position:fixed;inset:0;z-index:45;} .p-pop{position:absolute;top:calc(100% + 8px);left:0;z-index:50;background:#fff;border:1px solid var(--b-hair);border-radius:16px;box-shadow:0 18px 50px -12px rgba(0,0,0,.25);min-width:280px;width:max-content;max-width:min(92vw,440px);overflow:hidden;animation:b-rise .22s cubic-bezier(.2,.8,.3,1) both;} .p-pop-list{max-height:360px;overflow-y:auto;padding:6px;} .p-opt{width:100%;display:flex;align-items:center;gap:10px;padding:9px 10px;border-radius:10px;font-size:13.5px;color:var(--b-ink);background:transparent;border:none;cursor:pointer;text-align:left;} .p-opt:hover{background:#f5f5f7;} .p-opt[data-on="1"]{background:rgba(29,29,31,.06);color:var(--b-accent);font-weight:600;} .p-opt .s{margin-left:auto;font-size:12px;color:var(--b-faint);font-weight:400;} .p-grp{padding:10px 10px 4px;font-size:11px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--b-faint);} .p-search{display:flex;align-items:center;gap:8px;padding:11px 13px;border-bottom:1px solid var(--b-hair);} .p-search input{border:none;outline:none;font-size:14px;flex:1;min-width:0;background:transparent;color:var(--b-ink);} .p-card{background:#fff;border:1px solid var(--b-hair);border-radius:20px;} .p-card-h{display:flex;align-items:baseline;justify-content:space-between;gap:12px;padding:18px 20px 0;} .p-card-h h3{font-size:16px;font-weight:600;letter-spacing:-.3px;color:var(--b-ink);} .p-card-h p{font-size:12.5px;color:var(--b-muted);margin-top:3px;} .p-grid{display:grid;gap:16px;} .p-g-2-1{grid-template-columns:minmax(0,2fr) minmax(0,1fr);} .p-g-2{grid-template-columns:repeat(2,minmax(0,1fr));} .p-g-3{grid-template-columns:repeat(3,minmax(0,1fr));} .p-stats{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));} .p-stat{padding:18px 20px;} .p-stat+.p-stat{box-shadow:inset 1px 0 0 var(--b-hair);} .p-stat .l{font-size:12.5px;color:var(--b-muted);letter-spacing:-.1px;} .p-stat .v{font-size:24px;font-weight:600;letter-spacing:-.7px;font-variant-numeric:tabular-nums;margin-top:5px;color:var(--b-ink);line-height:1.1;} .p-stat .s{font-size:12px;color:var(--b-faint);margin-top:4px;} .p-table{width:100%;border-collapse:collapse;} .p-table th{padding:10px 14px;font-size:11.5px;font-weight:600;color:var(--b-muted);text-align:left;white-space:nowrap;border-bottom:1px solid var(--b-hair);background:#fff;position:sticky;top:0;z-index:1;cursor:default;user-select:none;} .p-table th[data-r="1"],.p-table td[data-r="1"]{text-align:right;} .p-table th[data-sort]{cursor:pointer;} .p-table th[data-sort]:hover{color:var(--b-ink);} .p-table td{padding:11px 14px;font-size:13.5px;color:var(--b-ink);border-bottom:1px solid #f0f0f2;white-space:nowrap;font-variant-numeric:tabular-nums;} .p-table tbody tr:last-child td{border-bottom:none;} .p-table tfoot td{font-weight:600;border-top:1px solid var(--b-hair);border-bottom:none;background:#fafafa;} .p-click{cursor:pointer;transition:background .15s;} .p-click:hover{background:#fafafb;} .p-btn{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:34px;padding:0 13px;border-radius:10px;border:1px solid var(--b-hair);background:#fff;font-size:13px;font-weight:600;color:var(--b-ink);cursor:pointer;white-space:nowrap;transition:border-color .2s,background .2s,opacity .2s;} .p-btn:hover{border-color:#c9c9ce;} .p-btn:disabled{opacity:.55;cursor:default;} .p-btn-a{background:var(--b-accent);border-color:var(--b-accent);color:#fff;} .p-btn-a:hover{background:#6a1a22;border-color:#6a1a22;} .p-btn-s{height:28px;padding:0 10px;border-radius:8px;font-size:12.5px;} .p-dot{display:inline-block;width:8px;height:8px;border-radius:50%;flex-shrink:0;} .p-note{font-size:12.5px;color:var(--b-muted);display:flex;align-items:center;gap:6px;} .p-veil-dark{position:fixed;inset:0;background:rgba(20,20,22,.32);z-index:60;animation:b-fade .2s ease both;} .p-drawer{position:fixed;top:0;right:0;bottom:0;width:min(460px,100vw);background:#fff;z-index:61;box-shadow:-24px 0 60px -24px rgba(0,0,0,.35);display:flex;flex-direction:column;animation:p-in .34s cubic-bezier(.32,.72,0,1) both;} .p-drawer-h{display:flex;align-items:flex-start;gap:12px;padding:20px 22px 16px;border-bottom:1px solid var(--b-hair);} .p-drawer-b{flex:1;overflow-y:auto;padding:18px 22px 28px;} .p-kv{display:flex;justify-content:space-between;gap:14px;padding:9px 0;border-bottom:1px solid #f0f0f2;font-size:13.5px;} .p-kv:last-child{border-bottom:none;} .p-kv>span:first-child{color:var(--b-muted);} .p-kv>span:last-child{color:var(--b-ink);font-weight:500;text-align:right;font-variant-numeric:tabular-nums;} .p-sec{font-size:11.5px;font-weight:600;letter-spacing:.04em;text-transform:uppercase;color:var(--b-faint);margin:20px 0 6px;} .p-seg{display:inline-flex;background:#ebebed;border-radius:10px;padding:3px;gap:2px;} .p-seg>button{border:none;background:transparent;border-radius:8px;padding:6px 12px;font-size:13px;font-weight:600;color:var(--b-muted);cursor:pointer;white-space:nowrap;} .p-seg>button[data-on="1"]{background:#fff;color:var(--b-ink);box-shadow:0 1px 2px rgba(0,0,0,.12);} .p-tabbar{display:none;} .p-empty{padding:56px 20px;text-align:center;color:var(--b-muted);font-size:14px;} .p-empty b{display:block;color:var(--b-ink);font-size:15px;font-weight:600;margin-bottom:4px;} @keyframes p-in{from{transform:translateX(28px);opacity:0}to{transform:none;opacity:1}} @keyframes p-up{from{transform:translateY(40px);opacity:0}to{transform:none;opacity:1}} .p-only-m{display:none;} @media (max-width: 900px){ .p-nav{display:none;} .p-tabbar{display:flex;position:fixed;bottom:0;left:0;right:0;z-index:40;background:#fff;border-top:1px solid var(--b-hair);padding:6px 4px calc(6px + env(safe-area-inset-bottom));justify-content:space-around;} .p-tabbar>button{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:2px;background:transparent;border:none;color:var(--b-faint);font-size:10.5px;line-height:1.2;text-align:center;padding:2px 1px;cursor:pointer;} .p-tabbar>button[data-on="1"]{color:var(--b-accent);font-weight:600;} .p-main{padding:16px 16px 100px;} .p-head-in{padding:0 16px;height:54px;} .p-g-2-1,.p-g-2,.p-g-3{grid-template-columns:minmax(0,1fr);} .p-stats{grid-template-columns:repeat(2,minmax(0,1fr));} .p-stat:nth-child(odd){box-shadow:none;} .p-stat:nth-child(n+3){box-shadow:inset 0 1px 0 var(--b-hair);} .p-stat:nth-child(4){box-shadow:inset 1px 0 0 var(--b-hair),inset 0 1px 0 var(--b-hair);} .p-stat{padding:14px 16px;} .p-stat .v{font-size:20px;} .p-drawer{top:auto;left:0;width:100%;max-height:90vh;border-radius:22px 22px 0 0;animation:p-up .34s cubic-bezier(.32,.72,0,1) both;} .p-pill .v{max-width:170px;} .p-only-d{display:none;} .p-only-m{display:block;} } `,money0=n=>new Intl.NumberFormat("es-ES",{style:"currency",currency:"EUR",maximumFractionDigits:0}).format(Number(n)||0),money2=n=>new Intl.NumberFormat("es-ES",{style:"currency",currency:"EUR",minimumFractionDigits:2,maximumFractionDigits:2}).format(Number(n)||0),num=n=>new Intl.NumberFormat("es-ES").format(Number(n)||0),pct=n=>n==null?"\u2014":new Intl.NumberFormat("es-ES",{minimumFractionDigits:0,maximumFractionDigits:1}).format(Number(n))+" %",fmtDate=s=>{if(!s)return"\u2014";let d2=new Date(s);return isNaN(d2)?"\u2014":d2.toLocaleDateString("es-ES",{day:"2-digit",month:"short",year:"numeric"})},fmtDia=s=>{if(!s)return"\u2014";let d2=new Date(s+"T12:00:00");return isNaN(d2)?"\u2014":d2.toLocaleDateString("es-ES",{weekday:"short",day:"2-digit",month:"short"})},dmyCSV=s=>{let m=String(s||"").match(/^(\d{4})-(\d{2})-(\d{2})/);return m?m[3]+"/"+m[2]+"/"+m[1]:String(s||"")},MES=["","Enero","Febrero","Marzo","Abril","Mayo","Junio","Julio","Agosto","Septiembre","Octubre","Noviembre","Diciembre"],mesLabel=ym=>{if(!ym)return ym;let[y,m]=ym.split("-");return`${MES[parseInt(m,10)]} ${y}`},initials=n=>String(n||"?").trim().split(/\s+/).filter(w=>/\p{L}/u.test(w[0])).slice(0,2).map(w=>w[0]).join("").toUpperCase(),eurCSV=n=>String((Number(n)||0).toFixed(2)).replace(".",","),ESTADO={accepted:{t:"Confirmada",c:B.green},pending:{t:"Pendiente",c:B.amber},inquiry:{t:"Consulta",c:"#2563eb"},cancelled:{t:"Cancelada",c:B.red},denied:{t:"Denegada",c:B.muted},expired:{t:"Expirada",c:B.muted},preapproved:{t:"Pre-aprob.",c:"#2563eb"},incomplete:{t:"Incompleta",c:B.muted},no_show:{t:"No-show",c:B.red}},estadoInfo=e=>ESTADO[e]||{t:e||"\u2014",c:B.muted},HOSTELWORLD="Hostelworld",esHW=r=>String(r&&r.confirmation_code||"").startsWith("HWG-"),canalDe=(canal,hw)=>hw?HOSTELWORLD:canal==="Direct"?"Directo":canal||"\u2014",CANAL={Airbnb:"#ff385c",Booking:"#003580","Booking.com":"#003580",Hostelworld:"#e8592b",Vrbo:"#1e6091",Direct:B.green,Directo:B.green,Otro:B.muted},canalColor=c=>CANAL[c]||B.muted,CHARGE={captured:{t:"Cobrado",c:B.green},pending:{t:"Pendiente",c:B.amber},failed:{t:"Fallido",c:B.red},refunded:{t:"Devuelto",c:B.muted},partially_refunded:{t:"Dev. parcial",c:B.amber},terminated:{t:"Terminado",c:B.muted}},chargeInfo=s=>CHARGE[s]||{t:s||"\u2014",c:B.muted},RE_HAB=/\bH\d+\s+[A-ZÁÉÍÓÚÑ]+/,habitacionDe=nick=>{let m=RE_HAB.exec(String(nick||""));return m?m[0].replace(/\s+/g," "):null},unidadDe=nick=>{let limpio=String(nick||"").replace(/\s+-\s+[A-Za-z.]+\s*$/,"").trim();if(!limpio)return"\u2014";let hab=habitacionDe(limpio);if(!hab)return limpio;let cod=(limpio.match(/^(\S+)/)||[])[1];return cod&&cod!==hab.split(" ")[0]?`${cod} \xB7 ${hab}`:hab};function downloadCSV(filename,rows){let esc=v=>{let s=String(v??"");return/[";\n\r]/.test(s)?'"'+s.replace(/"/g,'""')+'"':s},csv="\uFEFF"+rows.map(r=>r.map(esc).join(";")).join(`\r `),url=URL.createObjectURL(new Blob([csv],{type:"text/csv;charset=utf-8;"})),a=document.createElement("a");a.href=url,a.download=filename,document.body.appendChild(a),a.click(),setTimeout(()=>{document.body.removeChild(a),URL.revokeObjectURL(url)},120)}function useIsMobile(bp){let q=`(max-width: ${bp||767}px)`,[movil,setMovil]=(0,import_react26.useState)(()=>typeof window>"u"?!1:window.matchMedia(q).matches);return(0,import_react26.useEffect)(()=>{if(typeof window>"u")return;let mq=window.matchMedia(q),on=e=>setMovil(e.matches);return setMovil(mq.matches),mq.addEventListener("change",on),()=>mq.removeEventListener("change",on)},[q]),movil}var tintaOcup=p=>p==null?B.faint:p>55?"#fff":B.ink,fondoOcup=p=>p==null||p<=0?"#f4f0f0":`rgba(29,29,31,${(Number(.1+Math.min(100,p)/100*.9)||0).toFixed(3)})`,Badge=({text,color})=>__gh("span",{className:"b-pill",style:{color,background:`${color}16`,boxShadow:`inset 0 0 0 1px ${color}2a`},"data-gufi-src":"portal/ui.tsx:321"},text),SecTitle=({children,right,sub})=>__gh("div",{className:"flex items-center justify-between gap-3 px-4 sm:px-5 py-3.5","data-gufi-src":"portal/ui.tsx:323"},__gh("div",{"data-gufi-src":"portal/ui.tsx:324"},__gh("div",{className:"text-[15px] font-bold",style:{color:B.ink},"data-gufi-src":"portal/ui.tsx:325"},children),sub?__gh("div",{className:"text-[12px] mt-0.5",style:{color:B.faint},"data-gufi-src":"portal/ui.tsx:326"},sub):null),right||null),Empty=({text})=>__gh("div",{className:"py-12 text-center text-sm",style:{color:B.muted},"data-gufi-src":"portal/ui.tsx:331"},text);function KPI({label,value,sub,accent}){return __gh("div",{className:"b-card relative overflow-hidden p-4 sm:p-5","data-gufi-src":"portal/ui.tsx:334"},__gh("div",{className:"text-[10.5px] sm:text-[11px] font-semibold uppercase tracking-[.06em]",style:{color:B.faint},"data-gufi-src":"portal/ui.tsx:335"},label),__gh("div",{className:"mt-2 text-[22px] sm:text-[30px] font-semibold leading-none b-num",style:{color:accent||B.ink,letterSpacing:"-.035em"},"data-gufi-src":"portal/ui.tsx:336"},value),sub?__gh("div",{className:"mt-1.5 text-[11.5px] sm:text-[12px]",style:{color:B.faint},"data-gufi-src":"portal/ui.tsx:337"},sub):null)}var Th=({children,r})=>__gh("th",{className:"px-3 sm:px-4 py-2.5 text-[11px] font-bold uppercase tracking-wide whitespace-nowrap "+(r?"text-right":"text-left"),style:{color:B.faint,borderBottom:`1px solid ${B.hair}`},"data-gufi-src":"portal/ui.tsx:341"},children),STICKY={position:"sticky",right:0,background:B.card,zIndex:2,boxShadow:`inset 1px 0 0 ${B.hair}`},Td=({children,r,b,sticky})=>__gh("td",{className:"px-3 sm:px-4 py-3 text-[13.5px] whitespace-nowrap "+(r?"text-right":"text-left")+(b?" font-semibold":""),style:{color:B.ink,borderBottom:`1px solid ${B.hair}`,...sticky?STICKY:null},"data-gufi-src":"portal/ui.tsx:346"},children),TableWrap=({children,min})=>__gh("div",{className:"overflow-x-auto","data-gufi-src":"portal/ui.tsx:347"},__gh("table",{className:"w-full border-collapse",style:{minWidth:min||640},"data-gufi-src":"portal/ui.tsx:347"},children)),Spin=()=>__gh("div",{className:"flex justify-center py-14","data-gufi-src":"portal/ui.tsx:348"},__gh(import_lucide_react25.Loader2,{className:"animate-spin",style:{color:B.accent}})),Seg=({value,onChange,options})=>__gh("div",{className:"b-seg","data-gufi-src":"portal/ui.tsx:350"},options.map(([k,l])=>__gh("button",{key:k,"data-on":value===k?"1":"0",onClick:()=>onChange(k),"data-gufi-src":"portal/ui.tsx:351"},l)));function FChip({active,onClick,color,children}){return __gh("button",{onClick,className:"b-press",style:{padding:"6px 12px",borderRadius:999,fontSize:12.5,fontWeight:600,cursor:"pointer",border:`1px solid ${active?color||B.accent:B.hair}`,background:active?`${color||B.accent}14`:"#fff",color:active?color||B.accent:B.muted,whiteSpace:"nowrap"},"data-gufi-src":"portal/ui.tsx:355"},children)}var Tabs=({value,onChange,options})=>__gh("div",{className:"b-tabs mb-5","data-gufi-src":"portal/ui.tsx:360"},options.map(([k,l])=>__gh("button",{key:k,"data-on":value===k?"1":"0",onClick:()=>onChange(k),"data-gufi-src":"portal/ui.tsx:361"},l))),Bloque3=({n,titulo:titulo3,sub,icono:Icono})=>__gh("div",{className:"flex items-center gap-3 mb-4 mt-1","data-gufi-src":"portal/ui.tsx:368"},n!=null?__gh("div",{className:"b-step","data-gufi-src":"portal/ui.tsx:370"},n):__gh("div",{className:"flex h-[30px] w-[30px] items-center justify-center rounded-[11px] shrink-0 b-soft","data-gufi-src":"portal/ui.tsx:371"},Icono?__gh(Icono,{size:15}):null),__gh("div",{className:"leading-tight","data-gufi-src":"portal/ui.tsx:372"},__gh("div",{className:"text-[17px] sm:text-[18px] font-semibold",style:{color:B.ink,letterSpacing:"-.03em"},"data-gufi-src":"portal/ui.tsx:373"},titulo3),sub?__gh("div",{className:"text-[12.5px] mt-0.5",style:{color:B.faint},"data-gufi-src":"portal/ui.tsx:374"},sub):null));function PorCanal({filas,total,movil}){let arr=(0,import_react26.useMemo)(()=>filas.map(f=>({nombre:canalDe(f.canal,f.hw),noches:f.noches,recaudacion:f.recaudacion,tuyo:f.tuyo,comision:Math.round((f.recaudacion-f.tuyo)*100)/100,pctCom:f.recaudacion?(f.recaudacion-f.tuyo)/f.recaudacion*100:0,peso:total?f.recaudacion/total*100:0})).sort((a,b)=>b.recaudacion-a.recaudacion),[filas,total]);return arr.length?__gh("div",{className:"b-card overflow-hidden mb-7","data-gufi-src":"portal/ui.tsx:393"},__gh(SecTitle,{sub:"cu\xE1nto cobra el hu\xE9sped cada canal, qu\xE9 se queda de comisi\xF3n y qu\xE9 te llega"},"De d\xF3nde viene"),movil?__gh("div",{className:"px-4 pb-4","data-gufi-src":"portal/ui.tsx:396"},arr.map(c=>__gh("div",{key:c.nombre,className:"b-row","data-gufi-src":"portal/ui.tsx:398"},__gh("div",{className:"flex items-baseline justify-between gap-3 mb-2","data-gufi-src":"portal/ui.tsx:399"},__gh("span",{className:"text-[14px] font-semibold",style:{color:canalColor(c.nombre)},"data-gufi-src":"portal/ui.tsx:400"},c.nombre),__gh("span",{className:"text-[14px] font-semibold b-num",style:{color:B.ink},"data-gufi-src":"portal/ui.tsx:401"},money2(c.recaudacion))),__gh("div",{className:"rounded-lg h-1.5 mb-2.5 overflow-hidden",style:{background:"#f1f1f2"},"data-gufi-src":"portal/ui.tsx:403"},__gh("div",{style:{width:`${Math.min(100,c.peso)}%`,height:"100%",background:canalColor(c.nombre)},"data-gufi-src":"portal/ui.tsx:404"})),__gh("div",{className:"b-kv","data-gufi-src":"portal/ui.tsx:406"},__gh("span",{"data-gufi-src":"portal/ui.tsx:406"},"Peso"),__gh("span",{"data-gufi-src":"portal/ui.tsx:406"},pct(c.peso)," \xB7 ",num(c.noches)," noches")),__gh("div",{className:"b-kv","data-gufi-src":"portal/ui.tsx:407"},__gh("span",{"data-gufi-src":"portal/ui.tsx:407"},"Comisi\xF3n"),__gh("span",{style:{color:c.comision>0?B.red:B.green},"data-gufi-src":"portal/ui.tsx:407"},money2(c.comision)," \xB7 ",pct(c.pctCom))),__gh("div",{className:"b-kv","data-gufi-src":"portal/ui.tsx:408"},__gh("span",{"data-gufi-src":"portal/ui.tsx:408"},"Tu ingreso"),__gh("span",{style:{color:B.green},"data-gufi-src":"portal/ui.tsx:408"},money2(c.tuyo)))))):__gh(TableWrap,{min:700},__gh("thead",{"data-gufi-src":"portal/ui.tsx:414"},__gh("tr",{"data-gufi-src":"portal/ui.tsx:414"},__gh(Th,null,"Canal"),__gh(Th,{r:!0},"Noches"),__gh(Th,{r:!0},"Cobra el hu\xE9sped"),__gh(Th,{r:!0},"Comisi\xF3n"),__gh(Th,{r:!0},"%"),__gh(Th,{r:!0},"Tu ingreso"),__gh(Th,null,"Peso"))),__gh("tbody",{"data-gufi-src":"portal/ui.tsx:415"},arr.map(c=>__gh("tr",{key:c.nombre,"data-gufi-src":"portal/ui.tsx:417"},__gh(Td,{b:!0},__gh("span",{style:{color:canalColor(c.nombre)},"data-gufi-src":"portal/ui.tsx:418"},c.nombre)),__gh(Td,{r:!0},num(c.noches)),__gh(Td,{r:!0},money2(c.recaudacion)),__gh(Td,{r:!0},c.comision>0?__gh("span",{style:{color:B.red},"data-gufi-src":"portal/ui.tsx:421"},"\u2212",money2(c.comision)):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/ui.tsx:421"},"\u2014")),__gh(Td,{r:!0},c.comision>0?pct(c.pctCom):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/ui.tsx:422"},"\u2014")),__gh(Td,{r:!0,b:!0},__gh("span",{style:{color:B.green},"data-gufi-src":"portal/ui.tsx:423"},money2(c.tuyo))),__gh(Td,null,__gh("div",{className:"flex items-center gap-2","data-gufi-src":"portal/ui.tsx:425"},__gh("div",{className:"rounded-full h-1.5 flex-1 overflow-hidden",style:{background:"#f1f1f2",minWidth:70},"data-gufi-src":"portal/ui.tsx:426"},__gh("div",{style:{width:`${Math.min(100,c.peso)}%`,height:"100%",background:canalColor(c.nombre)},"data-gufi-src":"portal/ui.tsx:427"})),__gh("span",{className:"b-num font-semibold",style:{color:B.muted,width:50,textAlign:"right"},"data-gufi-src":"portal/ui.tsx:429"},pct(c.peso))))))))):null}var tsOf=s=>{if(!s)return null;let d2=new Date(s);return isNaN(d2.getTime())?null:d2.getTime()};function useSort(){let[sort,setSort]=(0,import_react26.useState)(null),toggle=(0,import_react26.useCallback)(key=>setSort(s=>s&&s.key===key?{key,dir:s.dir==="asc"?"desc":"asc"}:{key,dir:"asc"}),[]);return[sort,toggle]}function applySort(rows,sort,accessors){if(!sort||!accessors[sort.key])return rows;let get=accessors[sort.key],dir=sort.dir==="asc"?1:-1,isEmpty=v=>v==null||v==="";return[...rows].sort((a,b)=>{let va=get(a),vb=get(b),ea=isEmpty(va),eb=isEmpty(vb);return ea&&eb?0:ea?1:eb?-1:(typeof va=="number"&&typeof vb=="number"?va-vb:String(va).localeCompare(String(vb),"es",{numeric:!0,sensitivity:"base"}))*dir})}var SortTh=({children,r,sortKey,sort,onSort,sticky})=>{let active=sort&&sort.key===sortKey;return __gh("th",{onClick:()=>onSort(sortKey),className:"px-3 sm:px-4 py-2.5 text-[11px] font-bold uppercase tracking-wide whitespace-nowrap cursor-pointer "+(r?"text-right":"text-left"),style:{color:active?B.accent:B.faint,borderBottom:`1px solid ${B.hair}`,userSelect:"none",WebkitUserSelect:"none",...sticky?{...STICKY,zIndex:3}:null},"data-gufi-src":"portal/ui.tsx:466"},children,__gh("span",{style:{fontSize:9,marginLeft:4,opacity:active?1:.4},"data-gufi-src":"portal/ui.tsx:468"},active?sort.dir==="asc"?"\u25B2":"\u25BC":"\u2195"))},moneyK=n=>new Intl.NumberFormat("es-ES",{notation:"compact",maximumFractionDigits:1}).format(Number(n)||0)+" \u20AC",fmtLarga=s=>{if(!s)return"\u2014";let d2=new Date(String(s).slice(0,10)+"T12:00:00");return isNaN(d2)?"\u2014":d2.toLocaleDateString("es-ES",{day:"numeric",month:"short",year:"numeric"}).replace(".","")},MES_CORTO=["","ene","feb","mar","abr","may","jun","jul","ago","sep","oct","nov","dic"],mesCorto=ym=>MES_CORTO[parseInt(String(ym).slice(5,7),10)]||ym,sumarDias=(ymd3,n)=>new Date(Date.parse(ymd3+"T00:00:00Z")+n*864e5).toISOString().slice(0,10),primeroMesSiguiente=ym=>{let[y,m]=ym.split("-").map(Number);return new Date(Date.UTC(y,m,1)).toISOString().slice(0,10)};function periodoTexto(desde2,hasta){if(!desde2||!hasta)return"";let[y1,m1,d1]=desde2.split("-").map(Number),fin=sumarDias(hasta,-1),[y2,m2,d2]=fin.split("-").map(Number),ultimo=new Date(Date.UTC(y2,m2,0)).getUTCDate();return d1===1&&d2===ultimo?y1===y2&&m1===1&&m2===12?`A\xF1o ${y1}`:y1===y2&&m1===m2?`${MES[m1]} ${y1}`:y1===y2&&m2-m1===2&&(m1-1)%3===0?`T${(m1+2)/3} ${y1}`:`${MES[m1]}${y1!==y2?" "+y1:""} \u2013 ${MES[m2]} ${y2}`:`${fmtLarga(desde2)} \u2013 ${fmtLarga(fin)}`}var PAISES={Spain:"Espa\xF1a","United States":"Estados Unidos","United States of America":"Estados Unidos","United Kingdom":"Reino Unido",France:"Francia",Germany:"Alemania",Italy:"Italia",Portugal:"Portugal",Netherlands:"Pa\xEDses Bajos",Belgium:"B\xE9lgica",Switzerland:"Suiza",Austria:"Austria",Ireland:"Irlanda",Sweden:"Suecia",Norway:"Noruega",Denmark:"Dinamarca",Finland:"Finlandia",Poland:"Polonia","Czech Republic":"Chequia",Czechia:"Chequia",Hungary:"Hungr\xEDa",Romania:"Ruman\xEDa",Bulgaria:"Bulgaria",Greece:"Grecia",Croatia:"Croacia",Slovakia:"Eslovaquia",Slovenia:"Eslovenia",Serbia:"Serbia",Ukraine:"Ucrania","Russian Federation":"Rusia",Russia:"Rusia",Turkey:"Turqu\xEDa",T\u00FCrkiye:"Turqu\xEDa",Israel:"Israel",Mexico:"M\xE9xico",Argentina:"Argentina",Brazil:"Brasil",Chile:"Chile",Colombia:"Colombia",Peru:"Per\xFA",Uruguay:"Uruguay",Paraguay:"Paraguay",Ecuador:"Ecuador","Bolivia, Plurinational State of":"Bolivia",Bolivia:"Bolivia","Venezuela, Bolivarian Republic of":"Venezuela",Venezuela:"Venezuela","Costa Rica":"Costa Rica",Panama:"Panam\xE1",Guatemala:"Guatemala",Honduras:"Honduras","El Salvador":"El Salvador",Nicaragua:"Nicaragua",Cuba:"Cuba","Dominican Republic":"Rep\xFAblica Dominicana","Puerto Rico":"Puerto Rico",Canada:"Canad\xE1",Australia:"Australia","New Zealand":"Nueva Zelanda",China:"China",Japan:"Jap\xF3n","Korea, Republic of":"Corea del Sur","South Korea":"Corea del Sur",India:"India",Philippines:"Filipinas",Singapore:"Singapur",Taiwan:"Taiw\xE1n","Taiwan, Province of China":"Taiw\xE1n","Hong Kong":"Hong Kong",Thailand:"Tailandia",Vietnam:"Vietnam","Viet Nam":"Vietnam",Indonesia:"Indonesia",Malaysia:"Malasia",Morocco:"Marruecos",Algeria:"Argelia",Egypt:"Egipto","South Africa":"Sud\xE1frica",Nigeria:"Nigeria","United Arab Emirates":"Emiratos \xC1rabes Unidos","Saudi Arabia":"Arabia Saud\xED",Qatar:"Catar",Lebanon:"L\xEDbano",Luxembourg:"Luxemburgo",Iceland:"Islandia",Estonia:"Estonia",Latvia:"Letonia",Lithuania:"Lituania",Andorra:"Andorra",Malta:"Malta",Cyprus:"Chipre",Georgia:"Georgia",Armenia:"Armenia",Kazakhstan:"Kazajist\xE1n",Pakistan:"Pakist\xE1n"},paisEs=p=>p?PAISES[p]||p:"\u2014";function descargarPdfBase64(b64,filename){let bin=atob(b64),bytes=new Uint8Array(bin.length);for(let i=0;i{document.body.removeChild(a),URL.revokeObjectURL(url)},150)}function Desplegable2({boton:boton2,children,abierto,setAbierto,derecha}){return __gh("div",{style:{position:"relative"},"data-gufi-src":"portal/ui.tsx:539"},boton2,abierto?__gh("div",{className:"p-veil",onClick:()=>setAbierto(!1),"data-gufi-src":"portal/ui.tsx:541"}):null,abierto?__gh("div",{className:"p-pop",style:derecha?{left:"auto",right:0}:void 0,"data-gufi-src":"portal/ui.tsx:542"},children):null)}var Pildora=({etiqueta:etiqueta4,valor,activa,onClick})=>__gh("button",{className:"p-pill","data-on":activa?"1":"0",onClick,"data-gufi-src":"portal/ui.tsx:548"},etiqueta4?__gh("span",{className:"k","data-gufi-src":"portal/ui.tsx:549"},etiqueta4):null,__gh("span",{className:"v","data-gufi-src":"portal/ui.tsx:550"},valor),__gh("svg",{width:"12",height:"12",viewBox:"0 0 12 12",style:{flexShrink:0,color:B.faint},"data-gufi-src":"portal/ui.tsx:551"},__gh("path",{d:"M3 4.5 6 7.5 9 4.5",fill:"none",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round",strokeLinejoin:"round","data-gufi-src":"portal/ui.tsx:551"})));function ListaBuscable({opciones,valor,onElegir,placeholder}){let[q,setQ]=(0,import_react26.useState)(""),norm=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),vis=(0,import_react26.useMemo)(()=>{let n=norm(q);return n?opciones.filter(o=>norm(o.t+" "+(o.s||"")).includes(n)):opciones},[q,opciones]),grupo=null;return __gh(__gf,null,opciones.length>8?__gh("div",{className:"p-search","data-gufi-src":"portal/ui.tsx:565"},__gh("svg",{width:"15",height:"15",viewBox:"0 0 16 16",style:{color:B.faint,flexShrink:0},"data-gufi-src":"portal/ui.tsx:566"},__gh("circle",{cx:"7",cy:"7",r:"5",fill:"none",stroke:"currentColor",strokeWidth:"1.6","data-gufi-src":"portal/ui.tsx:566"}),__gh("path",{d:"m11 11 3 3",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round","data-gufi-src":"portal/ui.tsx:566"})),__gh("input",{autoFocus:!0,value:q,onChange:e=>setQ(e.target.value),placeholder:placeholder||"Buscar","data-gufi-src":"portal/ui.tsx:567"})):null,__gh("div",{className:"p-pop-list","data-gufi-src":"portal/ui.tsx:570"},vis.length?vis.map(o=>{let cab=o.g&&o.g!==grupo?grupo=o.g:null;return __gh(import_react26.default.Fragment,{key:String(o.v)},cab?__gh("div",{className:"p-grp","data-gufi-src":"portal/ui.tsx:575"},cab):null,__gh("button",{className:"p-opt","data-on":String(valor)===String(o.v)?"1":"0",onClick:()=>onElegir(o.v),"data-gufi-src":"portal/ui.tsx:576"},__gh("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},"data-gufi-src":"portal/ui.tsx:577"},o.t),o.s?__gh("span",{className:"s","data-gufi-src":"portal/ui.tsx:578"},o.s):null))}):__gh("div",{style:{padding:"16px 12px",fontSize:13,color:B.muted},"data-gufi-src":"portal/ui.tsx:582"},"Nada coincide con \xAB",q,"\xBB.")))}var Cifra2=({l,v,s,color})=>__gh("div",{className:"p-stat","data-gufi-src":"portal/ui.tsx:589"},__gh("div",{className:"l","data-gufi-src":"portal/ui.tsx:590"},l),__gh("div",{className:"v",style:color?{color}:void 0,"data-gufi-src":"portal/ui.tsx:591"},v),s?__gh("div",{className:"s","data-gufi-src":"portal/ui.tsx:592"},s):null),Vacio2=({titulo:titulo3,texto})=>__gh("div",{className:"p-empty","data-gufi-src":"portal/ui.tsx:596"},__gh("b",{"data-gufi-src":"portal/ui.tsx:596"},titulo3),texto);function Hoja({titulo:titulo3,sub,onClose,children,pie}){return(0,import_react26.useEffect)(()=>{let onKey=e=>{e.key==="Escape"&&onClose()};return window.addEventListener("keydown",onKey),()=>window.removeEventListener("keydown",onKey)},[onClose]),__gh(__gf,null,__gh("div",{className:"p-veil-dark",onClick:onClose,"data-gufi-src":"portal/ui.tsx:606"}),__gh("aside",{className:"p-drawer",role:"dialog","aria-modal":"true","data-gufi-src":"portal/ui.tsx:607"},__gh("div",{className:"p-drawer-h","data-gufi-src":"portal/ui.tsx:608"},__gh("div",{style:{minWidth:0,flex:1},"data-gufi-src":"portal/ui.tsx:609"},__gh("div",{style:{fontSize:19,fontWeight:600,letterSpacing:"-.4px",color:B.ink,lineHeight:1.2},"data-gufi-src":"portal/ui.tsx:610"},titulo3),sub?__gh("div",{style:{fontSize:13,color:B.muted,marginTop:4},"data-gufi-src":"portal/ui.tsx:611"},sub):null),__gh("button",{onClick:onClose,"aria-label":"Cerrar",className:"p-btn p-btn-s",style:{width:30,padding:0,borderRadius:999},"data-gufi-src":"portal/ui.tsx:613"},__gh("svg",{width:"12",height:"12",viewBox:"0 0 12 12","data-gufi-src":"portal/ui.tsx:614"},__gh("path",{d:"M2.5 2.5l7 7m0-7-7 7",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round","data-gufi-src":"portal/ui.tsx:614"})))),__gh("div",{className:"p-drawer-b","data-gufi-src":"portal/ui.tsx:617"},children),pie?__gh("div",{style:{padding:"14px 22px",borderTop:`1px solid ${B.hair}`},"data-gufi-src":"portal/ui.tsx:618"},pie):null))}function Pagina({titulo:titulo3,sub,onVolver,accion,children}){return(0,import_react26.useEffect)(()=>{let col=document.querySelector("[data-gufi-main-scroll]");col?col.scrollTop=0:window.scrollTo({top:0})},[]),(0,import_react26.useEffect)(()=>{let onKey=e=>{e.key==="Escape"&&onVolver()};return window.addEventListener("keydown",onKey),()=>window.removeEventListener("keydown",onKey)},[onVolver]),__gh("div",{className:"b-fade","data-gufi-src":"portal/ui.tsx:649"},__gh("div",{style:{display:"flex",alignItems:"flex-start",gap:12,marginBottom:14},"data-gufi-src":"portal/ui.tsx:650"},__gh("button",{className:"p-btn p-btn-s",onClick:onVolver,"aria-label":"Volver",style:{width:32,padding:0,borderRadius:999,flex:"0 0 auto",marginTop:3},"data-gufi-src":"portal/ui.tsx:651"},__gh("svg",{width:"13",height:"13",viewBox:"0 0 12 12",fill:"none","data-gufi-src":"portal/ui.tsx:653"},__gh("path",{d:"M7.5 2 3.5 6l4 4",stroke:"currentColor",strokeWidth:"1.7",strokeLinecap:"round",strokeLinejoin:"round","data-gufi-src":"portal/ui.tsx:653"}))),__gh("div",{style:{minWidth:0,flex:1},"data-gufi-src":"portal/ui.tsx:655"},__gh("div",{style:{fontSize:20,fontWeight:600,letterSpacing:"-.4px",color:B.ink,lineHeight:1.2},"data-gufi-src":"portal/ui.tsx:656"},titulo3),sub?__gh("div",{style:{fontSize:13,color:B.muted,marginTop:3},"data-gufi-src":"portal/ui.tsx:657"},sub):null),accion||null),__gh("div",{className:"p-card",style:{padding:"6px 18px 20px",maxWidth:780},"data-gufi-src":"portal/ui.tsx:661"},children))}function useOrden(inicial){let[orden,setOrden]=(0,import_react26.useState)(inicial||null),pulsar=(0,import_react26.useCallback)(k=>setOrden(o=>o&&o.k===k?{k,asc:!o.asc}:{k,asc:!1}),[]);return{orden,th:k=>({"data-sort":k,onClick:()=>pulsar(k)}),flecha:k=>orden&&orden.k===k?orden.asc?" \u2191":" \u2193":""}}function ordenar(filas,orden,acceso){if(!orden)return filas;let get=acceso[orden.k];if(!get)return filas;let dir=orden.asc?1:-1;return[...filas].sort((a,b)=>{let x=get(a),y=get(b);return x==null&&y==null?0:x==null?1:y==null?-1:(typeof x=="number"&&typeof y=="number"?x-y:String(x).localeCompare(String(y),"es",{numeric:!0}))*dir})}function useScript(api,nombre,input,activo){let clave=activo?nombre+JSON.stringify(input):null,[st,setSt]=(0,import_react26.useState)({clave:null,datos:null,error:""});(0,import_react26.useEffect)(()=>{if(!clave||st.clave===clave)return;let vivo=!0;return setSt({clave,datos:null,error:""}),api(nombre,input).then(d2=>{vivo&&setSt({clave,datos:d2,error:""})}).catch(e=>{vivo&&setSt({clave,datos:null,error:String(e&&e.message||e)})}),()=>{vivo=!1}},[clave]);let mio=st.clave===clave;return{datos:mio?st.datos:null,error:mio?st.error:"",cargando:!!clave&&(!mio||!st.datos&&!st.error)}}var import_react27=require("react"),import_lucide_react26=require("lucide-react");function Estado({f,periodo,hijos}){return f.error?__gh("div",{className:"p-card","data-gufi-src":"portal/resumen.tsx:10"},__gh(Vacio2,{titulo:"No se han podido cargar los datos",texto:f.error})):f.cargando||!f.datos?__gh("div",{className:"p-card",style:{padding:70,display:"flex",justifyContent:"center"},"data-gufi-src":"portal/resumen.tsx:11"},__gh(import_lucide_react26.Loader2,{className:"animate-spin",style:{color:B.accent}})):f.datos.demasiadas?__gh("div",{className:"p-card","data-gufi-src":"portal/resumen.tsx:12"},__gh(Vacio2,{titulo:"Demasiadas estancias para verlas de una vez",texto:`${periodoTexto(periodo.desde,periodo.hasta)} son ${num(f.datos.demasiadas)} registros de toda la cartera. Elige un propietario o un periodo m\xE1s corto.`})):!f.datos.totales||!f.datos.estancias.length&&!f.datos.totales.facturado?__gh("div",{className:"p-card","data-gufi-src":"portal/resumen.tsx:13"},__gh(Vacio2,{titulo:`${deFactura()?"Nada facturado":"Ninguna reserva"} en ${periodoTexto(periodo.desde,periodo.hasta).toLowerCase()}`,texto:deFactura()?`Aqu\xED salen las estancias en cuanto ${marca().nombre} las factura, que es a mes vencido.`:"Aqu\xED salen las reservas confirmadas de tus propiedades."})):hijos(f.datos)}function Reparto({a,b}){let t2=a+b,pa=t2>0?a/t2*100:0;return __gh("div",{style:{width:"100%"},"data-gufi-src":"portal/resumen.tsx:21"},__gh("div",{style:{display:"flex",height:10,borderRadius:999,overflow:"hidden",background:"#f0f0f2"},"data-gufi-src":"portal/resumen.tsx:22"},__gh("div",{style:{width:`${pa}%`,background:B.accent},"data-gufi-src":"portal/resumen.tsx:23"}),__gh("div",{style:{width:`${100-pa}%`,background:B.gold},"data-gufi-src":"portal/resumen.tsx:24"})),__gh("div",{style:{display:"flex",justifyContent:"space-between",fontSize:12,color:B.muted,marginTop:8},"data-gufi-src":"portal/resumen.tsx:26"},__gh("span",{"data-gufi-src":"portal/resumen.tsx:27"},"Pernocta ",pct(pa)),__gh("span",{"data-gufi-src":"portal/resumen.tsx:27"},"Limpieza ",pct(100-pa))))}function MesAMes({meses,setPeriodo,varios}){let[sobre,setSobre]=(0,import_react27.useState)(null),max=Math.max(1,...meses.map(m=>m.facturado)),ALTO=190;return __gh("div",{className:"p-card",style:{minWidth:0},"data-gufi-src":"portal/resumen.tsx:38"},__gh("div",{className:"p-card-h","data-gufi-src":"portal/resumen.tsx:39"},__gh("div",{"data-gufi-src":"portal/resumen.tsx:40"},__gh("h3",{"data-gufi-src":"portal/resumen.tsx:40"},"Mes a mes"),__gh("p",{"data-gufi-src":"portal/resumen.tsx:40"},"Por mes de entrada del hu\xE9sped",varios?" \xB7 pulsa un mes para verlo solo":"")),__gh("div",{className:"p-note",style:{gap:14},"data-gufi-src":"portal/resumen.tsx:41"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6},"data-gufi-src":"portal/resumen.tsx:42"},__gh("span",{className:"p-dot",style:{background:B.accent},"data-gufi-src":"portal/resumen.tsx:42"}),"Pernocta"),__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6},"data-gufi-src":"portal/resumen.tsx:43"},__gh("span",{className:"p-dot",style:{background:B.gold},"data-gufi-src":"portal/resumen.tsx:43"}),"Limpieza"))),__gh("div",{style:{padding:"18px 20px 16px",overflowX:"auto"},"data-gufi-src":"portal/resumen.tsx:46"},__gh("div",{style:{display:"flex",alignItems:"flex-end",gap:meses.length>8?8:14,minWidth:meses.length*44,height:ALTO+58},"data-gufi-src":"portal/resumen.tsx:47"},meses.map(m=>{let h=m.facturado/max*ALTO,hp=m.facturado>0?m.pernocta/m.facturado*h:0,on=sobre===m.mes;return __gh("button",{key:m.mes,onClick:()=>varios&&setPeriodo({desde:m.mes+"-01",hasta:primeroMesSiguiente(m.mes)}),onMouseEnter:()=>setSobre(m.mes),onMouseLeave:()=>setSobre(null),title:`${mesLabel(m.mes)} \xB7 ${money2(m.facturado)} \xB7 ${num(m.estancias)} estancias`,style:{flex:1,minWidth:30,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"flex-end",height:"100%",background:"transparent",border:"none",cursor:varios?"pointer":"default",padding:0},"data-gufi-src":"portal/resumen.tsx:53"},__gh("div",{className:"b-num",style:{fontSize:11.5,fontWeight:600,color:on?B.ink:B.muted,marginBottom:6,whiteSpace:"nowrap"},"data-gufi-src":"portal/resumen.tsx:57"},moneyK(m.facturado)),__gh("div",{style:{width:"100%",maxWidth:46,height:Math.max(2,h),borderRadius:7,overflow:"hidden",display:"flex",flexDirection:"column-reverse",opacity:sobre&&!on?.55:1,transition:"opacity .2s"},"data-gufi-src":"portal/resumen.tsx:58"},__gh("div",{style:{height:hp,background:B.accent},"data-gufi-src":"portal/resumen.tsx:59"}),__gh("div",{style:{flex:1,background:B.gold},"data-gufi-src":"portal/resumen.tsx:60"})),__gh("div",{style:{fontSize:12,color:on?B.ink:B.muted,marginTop:8,fontWeight:on?600:400,textTransform:"capitalize"},"data-gufi-src":"portal/resumen.tsx:62"},mesCorto(m.mes)),__gh("div",{className:"b-num",style:{fontSize:11,color:B.faint,marginTop:1},"data-gufi-src":"portal/resumen.tsx:63"},m.ocupacion==null?"\u2014":pct(m.ocupacion)))})),__gh("div",{className:"p-note",style:{marginTop:6},"data-gufi-src":"portal/resumen.tsx:68"},"Debajo de cada mes, su ocupaci\xF3n.")))}function PorCanal2({canales,total}){return __gh("div",{className:"p-card",style:{minWidth:0},"data-gufi-src":"portal/resumen.tsx:76"},__gh("div",{className:"p-card-h","data-gufi-src":"portal/resumen.tsx:77"},__gh("div",{"data-gufi-src":"portal/resumen.tsx:77"},__gh("h3",{"data-gufi-src":"portal/resumen.tsx:77"},"Por canal"),__gh("p",{"data-gufi-src":"portal/resumen.tsx:77"},"De d\xF3nde vienen las reservas"))),__gh("div",{style:{padding:"14px 20px 20px"},"data-gufi-src":"portal/resumen.tsx:78"},canales.length?canales.map(c=>{let peso=total>0?c.facturado/total*100:0;return __gh("div",{key:c.canal,style:{padding:"10px 0",borderBottom:"1px solid #f0f0f2"},"data-gufi-src":"portal/resumen.tsx:82"},__gh("div",{style:{display:"flex",alignItems:"center",gap:8,fontSize:13.5},"data-gufi-src":"portal/resumen.tsx:83"},__gh("span",{className:"p-dot",style:{background:canalColor(c.canal)},"data-gufi-src":"portal/resumen.tsx:84"}),__gh("span",{style:{fontWeight:600,color:B.ink},"data-gufi-src":"portal/resumen.tsx:85"},c.canal),__gh("span",{className:"b-num",style:{marginLeft:"auto",fontWeight:600},"data-gufi-src":"portal/resumen.tsx:86"},money2(c.facturado))),__gh("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:7},"data-gufi-src":"portal/resumen.tsx:88"},__gh("div",{style:{flex:1,height:5,borderRadius:999,background:"#f0f0f2",overflow:"hidden"},"data-gufi-src":"portal/resumen.tsx:89"},__gh("div",{style:{width:`${peso}%`,height:"100%",background:canalColor(c.canal)},"data-gufi-src":"portal/resumen.tsx:90"})),__gh("span",{className:"b-num",style:{fontSize:12,color:B.muted,width:128,textAlign:"right"},"data-gufi-src":"portal/resumen.tsx:92"},pct(peso)," \xB7 ",num(c.estancias)," estancias")))}):__gh("div",{className:"p-note","data-gufi-src":"portal/resumen.tsx:96"},"Sin estancias en el periodo.")))}function PorPropiedad({propiedades,propPorId,setPropiedad}){let{orden,th,flecha:flecha3}=useOrden({k:"facturado",asc:!1}),[todas,setTodas]=(0,import_react27.useState)(!1),conDatos=propiedades.filter(p=>p.facturado||p.estancias),filas=ordenar(todas?propiedades:conDatos,orden,{nombre:p=>(propPorId[p.id]||{}).nombre,estancias:p=>p.estancias,noches:p=>p.noches,ocupacion:p=>p.ocupacion,pernocta:p=>p.pernocta,limpieza:p=>p.limpieza,facturado:p=>p.facturado}),sinDatos=propiedades.length-conDatos.length;return __gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/resumen.tsx:112"},__gh("div",{className:"p-card-h",style:{paddingBottom:12},"data-gufi-src":"portal/resumen.tsx:113"},__gh("div",{"data-gufi-src":"portal/resumen.tsx:114"},__gh("h3",{"data-gufi-src":"portal/resumen.tsx:114"},"Por propiedad"),__gh("p",{"data-gufi-src":"portal/resumen.tsx:114"},"Pulsa una para verla sola")),sinDatos?__gh("button",{className:"p-btn p-btn-s",onClick:()=>setTodas(!todas),"data-gufi-src":"portal/resumen.tsx:115"},todas?"S\xF3lo con estancias":`Ver tambi\xE9n ${num(sinDatos)} sin estancias`):null),__gh("div",{style:{overflowX:"auto"},"data-gufi-src":"portal/resumen.tsx:117"},__gh("table",{className:"p-table",style:{minWidth:760},"data-gufi-src":"portal/resumen.tsx:118"},__gh("thead",{"data-gufi-src":"portal/resumen.tsx:119"},__gh("tr",{"data-gufi-src":"portal/resumen.tsx:119"},__gh("th",{...th("nombre"),"data-gufi-src":"portal/resumen.tsx:120"},"Propiedad",flecha3("nombre")),__gh("th",{"data-r":"1",...th("estancias"),"data-gufi-src":"portal/resumen.tsx:121"},"Estancias",flecha3("estancias")),__gh("th",{"data-r":"1",...th("noches"),"data-gufi-src":"portal/resumen.tsx:122"},"Noches",flecha3("noches")),__gh("th",{"data-r":"1",...th("ocupacion"),"data-gufi-src":"portal/resumen.tsx:123"},"Ocupaci\xF3n",flecha3("ocupacion")),__gh("th",{"data-r":"1",...th("pernocta"),"data-gufi-src":"portal/resumen.tsx:124"},"Pernocta",flecha3("pernocta")),__gh("th",{"data-r":"1",...th("limpieza"),"data-gufi-src":"portal/resumen.tsx:125"},"Limpieza",flecha3("limpieza")),__gh("th",{"data-r":"1",...th("facturado"),"data-gufi-src":"portal/resumen.tsx:126"},deFactura()?"Total facturado":"Total",flecha3("facturado")))),__gh("tbody",{"data-gufi-src":"portal/resumen.tsx:128"},filas.map(p=>{let ficha2=propPorId[p.id]||{};return __gh("tr",{key:p.id,className:"p-click",onClick:()=>setPropiedad(String(p.id)),"data-gufi-src":"portal/resumen.tsx:132"},__gh("td",{style:{fontWeight:500,maxWidth:320,overflow:"hidden",textOverflow:"ellipsis"},"data-gufi-src":"portal/resumen.tsx:133"},ficha2.nombre,p.unidades>1?__gh("span",{style:{color:B.faint,fontWeight:400},"data-gufi-src":"portal/resumen.tsx:133"}," \xB7 ",p.unidades," unidades"):null),__gh("td",{"data-r":"1","data-gufi-src":"portal/resumen.tsx:134"},num(p.estancias)),__gh("td",{"data-r":"1","data-gufi-src":"portal/resumen.tsx:135"},num(p.noches)),__gh("td",{"data-r":"1","data-gufi-src":"portal/resumen.tsx:136"},p.ocupacion==null?__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/resumen.tsx:136"},"\u2014"):pct(p.ocupacion)),__gh("td",{"data-r":"1","data-gufi-src":"portal/resumen.tsx:137"},money2(p.pernocta)),__gh("td",{"data-r":"1","data-gufi-src":"portal/resumen.tsx:138"},money2(p.limpieza)),__gh("td",{"data-r":"1",style:{fontWeight:600},"data-gufi-src":"portal/resumen.tsx:139"},money2(p.facturado)))})))))}function Resumen({f,periodo,setPeriodo,setPropiedad,propPorId}){return __gh(Estado,{f,periodo,hijos:d2=>{let t2=d2.totales,varios=d2.meses.length>1;return __gh("div",{className:"p-grid","data-gufi-src":"portal/resumen.tsx:156"},__gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/resumen.tsx:157"},__gh("div",{style:{padding:"24px 24px 22px",display:"flex",gap:28,flexWrap:"wrap",alignItems:"flex-end",justifyContent:"space-between"},"data-gufi-src":"portal/resumen.tsx:158"},__gh("div",{style:{minWidth:0},"data-gufi-src":"portal/resumen.tsx:159"},__gh("div",{className:"p-note","data-gufi-src":"portal/resumen.tsx:160"},deFactura()?"Total facturado":"Lo que dejan tus reservas"," \xB7 ",periodoTexto(periodo.desde,periodo.hasta)),__gh("div",{className:"b-num",style:{fontSize:"clamp(34px, 6vw, 48px)",fontWeight:600,letterSpacing:"-1.6px",lineHeight:1.05,marginTop:8,color:B.ink},"data-gufi-src":"portal/resumen.tsx:161"},money2(t2.facturado)),__gh("div",{style:{display:"flex",gap:22,flexWrap:"wrap",marginTop:12,fontSize:14,color:B.sub},"data-gufi-src":"portal/resumen.tsx:162"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7},"data-gufi-src":"portal/resumen.tsx:163"},__gh("span",{className:"p-dot",style:{background:B.accent},"data-gufi-src":"portal/resumen.tsx:163"}),"Pernocta ",__gh("b",{className:"b-num",style:{color:B.ink},"data-gufi-src":"portal/resumen.tsx:163"},money2(t2.pernocta))),__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7},"data-gufi-src":"portal/resumen.tsx:164"},__gh("span",{className:"p-dot",style:{background:B.gold},"data-gufi-src":"portal/resumen.tsx:164"}),"Limpieza ",__gh("b",{className:"b-num",style:{color:B.ink},"data-gufi-src":"portal/resumen.tsx:164"},money2(t2.limpieza))))),__gh("div",{style:{width:280,maxWidth:"100%"},"data-gufi-src":"portal/resumen.tsx:167"},__gh(Reparto,{a:t2.pernocta,b:t2.limpieza}))),__gh("div",{className:"p-stats",style:{borderTop:`1px solid ${B.hair}`},"data-gufi-src":"portal/resumen.tsx:169"},__gh(Cifra2,{l:"Estancias",v:num(t2.estancias),s:`${num(t2.noches)} noches`}),__gh(Cifra2,{l:"Ocupaci\xF3n",v:t2.ocupacion==null?"\u2014":pct(t2.ocupacion),s:t2.noches_disponibles?`${num(t2.noches_ocupadas)} de ${num(t2.noches_disponibles)} noches`:"sin estancias para medirla"}),__gh(Cifra2,{l:"Precio medio por noche",v:t2.precio_noche==null?"\u2014":money2(t2.precio_noche),s:"pernocta entre noches"}),__gh(Cifra2,{l:"Estancia media",v:t2.estancia_media==null?"\u2014":`${String(t2.estancia_media).replace(".",",")} noches`,s:t2.ajustes?`incluye ${money2(t2.ajustes)} de ajustes`:"por reserva"}))),__gh("div",{className:"p-grid p-g-2-1","data-gufi-src":"portal/resumen.tsx:176"},__gh(MesAMes,{meses:d2.meses.filter(m=>m.estancias||m.facturado),setPeriodo,varios}),__gh(PorCanal2,{canales:d2.canales,total:t2.facturado})),d2.propiedades.length>1?__gh(PorPropiedad,{propiedades:d2.propiedades,propPorId,setPropiedad}):null,__gh("p",{className:"p-note",style:{lineHeight:1.5},"data-gufi-src":"portal/resumen.tsx:181"},deFactura()?`S\xF3lo cuentan las estancias que ${marca().nombre} ya ha facturado. La ocupaci\xF3n se mide desde la primera estancia facturada de cada propiedad hasta el \xFAltimo mes facturado.`:"Cuentan las reservas confirmadas que entran en el periodo, con lo que paga el hu\xE9sped menos la comisi\xF3n del canal. La ocupaci\xF3n se mide desde la primera reserva de cada propiedad.",t2.ajustes?" Los ajustes son resoluciones de la plataforma y redondeos: suman al total pero no son estancias.":""))}})}var import_react28=require("react"),import_lucide_react27=require("lucide-react");var _xlsx=null;function loadXLSX(){let w=window;return w.XLSX&&w.__xlsxStyled?Promise.resolve(w.XLSX):_xlsx||(_xlsx=new Promise((resolve,reject)=>{let s=document.createElement("script");s.src="https://cdn.jsdelivr.net/npm/xlsx-js-style@1.2.0/dist/xlsx.bundle.js",s.async=!0,s.onload=()=>{w.XLSX?(w.__xlsxStyled=!0,resolve(w.XLSX)):reject(new Error("No se pudo cargar el generador de Excel"))},s.onerror=()=>{_xlsx=null,reject(new Error("No se pudo cargar el generador de Excel. Revisa la conexi\xF3n y vuelve a probar."))},document.head.appendChild(s)}),_xlsx)}var TINTA="1D1D1F",CREMA="F5F5F7",HILO="E5E5E7",borde={style:"thin",color:{rgb:HILO}},bordes={top:borde,bottom:borde,left:borde,right:borde},limpioArchivo=s=>String(s??"").normalize("NFD").replace(/[̀-ͯ]/g,"").replace(/[^\w]+/g,"_").replace(/^_+|_+$/g,"").slice(0,50),dmy=s=>{let m=String(s||"").match(/^(\d{4})-(\d{2})-(\d{2})/);return m?`${m[3]}/${m[2]}/${m[1]}`:String(s||"")};async function exportarTabla(archivo,hoja,titulo3,sub,columnas,filas){return exportarHojas(archivo,[{hoja,titulo:titulo3,sub,columnas,filas}])}async function exportarHojas(archivo,hojas){let XLSX=await loadXLSX(),wb=XLSX.utils.book_new();hojas.forEach(h=>XLSX.utils.book_append_sheet(wb,hojaTabla(XLSX,h.titulo,h.sub,h.columnas,h.filas),h.hoja.replace(/[\\/*?:[\]]/g," ").slice(0,31))),XLSX.writeFile(wb,archivo)}function hojaTabla(XLSX,titulo3,sub,columnas,filas){let ws={},put=(r,c,v,s)=>{ws[XLSX.utils.encode_cell({r,c})]={v:v??"",t:typeof v=="number"?"n":"s",s}},nc=columnas.length;put(0,0,titulo3,{font:{bold:!0,sz:14,color:{rgb:"FFFFFF"}},fill:{fgColor:{rgb:TINTA}},alignment:{vertical:"center"}});for(let c=1;cput(3,c,col.t,{font:{bold:!0,sz:10,color:{rgb:TINTA}},fill:{fgColor:{rgb:CREMA}},border:bordes,alignment:{horizontal:col.eur||col.n?"right":"left"}})),filas.forEach((f,i)=>columnas.forEach((col,c)=>{let v=f[c];put(4+i,c,col.fecha?dmy(v):v,{font:{sz:10},border:bordes,alignment:{horizontal:col.eur||col.n?"right":"left"},numFmt:col.eur?'#,##0.00" \u20AC"':void 0})})),ws["!ref"]=XLSX.utils.encode_range({s:{r:0,c:0},e:{r:3+Math.max(1,filas.length),c:nc-1}}),ws["!merges"]=[{s:{r:0,c:0},e:{r:0,c:nc-1}}],ws["!cols"]=columnas.map(c=>({wch:c.w||14})),ws["!rows"]=[{hpt:24}],ws}var numsFactura=fs=>fs.map(f=>f.n).join(", ");async function exportarMatch(d2,desde2,hasta,etiqueta4){let XLSX=await loadXLSX(),r2=x=>Math.round((Number(x)||0)*100)/100,S={title:{font:{bold:!0,sz:15,color:{rgb:"FFFFFF"}},fill:{fgColor:{rgb:TINTA}},alignment:{vertical:"center"}},sub:{font:{sz:10,italic:!0,color:{rgb:"6E6E73"}}},prop:{font:{bold:!0,sz:11,color:{rgb:"FFFFFF"}},fill:{fgColor:{rgb:TINTA}},alignment:{horizontal:"center",vertical:"center"},border:bordes},pay:{font:{bold:!0,sz:11,color:{rgb:"FFFFFF"}},fill:{fgColor:{rgb:"1E7A4D"}},alignment:{horizontal:"center",vertical:"center"},border:bordes},head:{font:{bold:!0,sz:9.5,color:{rgb:TINTA}},fill:{fgColor:{rgb:CREMA}},border:bordes,alignment:{horizontal:"left"}},headR:{font:{bold:!0,sz:9.5,color:{rgb:TINTA}},fill:{fgColor:{rgb:CREMA}},border:bordes,alignment:{horizontal:"right"}},cell:{font:{sz:10},border:bordes},cellNum:{font:{sz:10},border:bordes,alignment:{horizontal:"right"}},cellEur:{font:{sz:10},border:bordes,alignment:{horizontal:"right"},numFmt:'#,##0.00" \u20AC"'},payDate:{font:{sz:10,bold:!0},border:bordes,alignment:{horizontal:"center",vertical:"center"},fill:{fgColor:{rgb:"EAF6EF"}}},payTxt:{font:{sz:10},border:bordes,alignment:{horizontal:"center",vertical:"center"},fill:{fgColor:{rgb:"EAF6EF"}}},payEur:{font:{bold:!0,sz:11,color:{rgb:"146C43"}},border:bordes,alignment:{horizontal:"right",vertical:"center"},numFmt:'#,##0.00" \u20AC"',fill:{fgColor:{rgb:"EAF6EF"}}},payPend:{font:{sz:9.5,italic:!0,color:{rgb:"B45309"}},border:bordes,alignment:{horizontal:"center",vertical:"center"}},sub2:{font:{bold:!0,sz:11,color:{rgb:"1D1D1F"}},border:bordes,alignment:{horizontal:"right"},numFmt:'#,##0.00" \u20AC"',fill:{fgColor:{rgb:CREMA}}},subLbl:{font:{bold:!0,sz:10,color:{rgb:TINTA}},border:bordes,fill:{fgColor:{rgb:CREMA}}}},wf=(base2,rgb)=>({...base2,fill:{fgColor:{rgb}}}),BAND=["FFFFFF","F7F1EC"],BW=6,PITCH=BW+1,PW=4,cells={},merges=[],maxRow=0,maxCol=0,put=(r3,c,v,s)=>{cells[XLSX.utils.encode_cell({r:r3,c})]={v:v??"",t:typeof v=="number"?"n":"s",s},r3>maxRow&&(maxRow=r3),c>maxCol&&(maxCol=c)},putF=(r3,c,f,v,s)=>{cells[XLSX.utils.encode_cell({r:r3,c})]={t:"n",f,v,s},r3>maxRow&&(maxRow=r3),c>maxCol&&(maxCol=c)},mergeRow=(r3,c0,c1)=>merges.push({s:{r:r3,c:c0},e:{r:r3,c:c1}}),mergeCol=(c,r0,r1)=>{r1>r0&&merges.push({s:{r:r0,c},e:{r:r1,c}})},all=(d2.pisos||[]).flatMap(p=>(p.unidades||[]).flatMap(u=>(u.reservas||[]).map(r3=>({...r3,piso:u.unidad?p.piso+" \xB7 "+u.unidad:p.piso}))));if(desde2||hasta?all=all.filter(r3=>{let c=r3.checkin||"";return c&&(!desde2||c>=desde2)&&(!hasta||cr3.pago),!all.length)throw new Error(`No hay reservas en el MATCH de ${d2.propietario} para ${etiqueta4||"ese periodo"}.`);let pisos=[...new Set(all.map(r3=>r3.piso))].sort(),col={};pisos.forEach((pz,i)=>{col[pz]=i*PITCH});let payCol=pisos.length*PITCH,totalW=payCol+PW;put(0,0,`MATCH \xB7 ${d2.propietario||""}`,S.title);for(let c=1;cr3.pago).length;put(1,0,`Reservas \u2194 pago recibido en banco${etiqueta4?" \xB7 "+etiqueta4:""} \xB7 ${all.length} reservas (${nPag} cobradas${all.length-nPag?`, ${all.length-nPag} pendientes`:""}) \xB7 cada banda de color = un pago`,S.sub);let TOP=3;pisos.forEach(pz=>{let c0=col[pz];for(let c=c0;cput(TOP+1,c0+i,h,i===2||i===4?S.headR:S.head))});for(let c=payCol;cput(TOP+1,payCol+i,h,i===3?S.headR:S.head));let byRef={};all.forEach(r3=>{let k=r3.pago&&r3.pago.ref||"sin-"+r3.codigo;(byRef[k]=byRef[k]||[]).push(r3)});let pagos=Object.keys(byRef).map(k=>{let rs=byRef[k].sort((a,b)=>String(a.piso).localeCompare(String(b.piso))||String(a.checkin||"").localeCompare(String(b.checkin||""))),p0=rs[0].pago||{};return{rs,fecha:p0.fecha||"",cuenta:p0.cuenta||"",canal:rs[0].canal||"",importe:r2(rs.reduce((s,x)=>s+(x.total_reserva||0),0))}}).sort((a,b)=>String(a.fecha).localeCompare(String(b.fecha))),r=TOP+2,band=0;pagos.forEach(po=>{let bg=BAND[band++%2],r0=r,porCol={};po.rs.forEach(x=>{let L=porCol[col[x.piso]]=porCol[col[x.piso]]||[],pern=x.odoo_pernocta!=null?Number(x.odoo_pernocta):x.pernocta!=null?Number(x.pernocta):x.total_reserva!=null?Number(x.total_reserva):"",limp=x.odoo_limpieza!=null?Number(x.odoo_limpieza):Number(x.limpieza)||0;L.push({a:x.codigo||"",b:dmy(x.checkin),n:x.noches!=null?x.noches:"",h:x.huesped||"",t:pern,f:numsFactura(x.facturas)}),limp>0&&L.push({a:(x.codigo||"")+" (Limpieza)",b:dmy(x.checkin),n:x.noches!=null?x.noches:"",h:x.huesped||"",t:limp,f:""})});let alto=Math.max(1,...Object.values(porCol).map(a=>a.length));for(let rr=r0;rr{let c0=Number(ck);porCol[c0].forEach((L,idx)=>{let rr=r0+idx;put(rr,c0,L.a,wf(S.cell,bg)),put(rr,c0+1,L.b,wf(S.cell,bg)),put(rr,c0+2,L.n,wf(S.cellNum,bg)),put(rr,c0+3,L.h,wf(S.cell,bg)),put(rr,c0+4,L.t,wf(S.cellEur,bg)),put(rr,c0+5,L.f,wf(S.cell,bg))})}),r=r0+alto;let r1=r-1,cobrado=!!po.fecha;for(let rr=r0;rr<=r1;rr++)if(put(rr,payCol,rr===r0?dmy(po.fecha):"",wf(S.payDate,bg)),put(rr,payCol+1,rr===r0?po.canal:"",wf(S.payTxt,bg)),put(rr,payCol+2,rr===r0?po.cuenta:"",wf(S.payTxt,bg)),rr===r0&&cobrado){let partes=Object.keys(porCol).map(ck=>"SUM("+XLSX.utils.encode_cell({r:r0,c:Number(ck)+4})+":"+XLSX.utils.encode_cell({r:r1,c:Number(ck)+4})+")");putF(rr,payCol+3,partes.join("+"),po.importe,wf(S.payEur,bg))}else put(rr,payCol+3,rr===r0?"pendiente":"",wf(cobrado?S.payEur:S.payPend,bg));mergeCol(payCol,r0,r1),mergeCol(payCol+1,r0,r1),mergeCol(payCol+2,r0,r1),mergeCol(payCol+3,r0,r1)});let total=r2(pagos.reduce((s,po)=>s+po.importe,0));put(r,payCol,"TOTAL",S.subLbl),put(r,payCol+1,"",S.subLbl),put(r,payCol+2,"",S.subLbl),putF(r,payCol+3,"SUM("+XLSX.utils.encode_cell({r:TOP+2,c:payCol+3})+":"+XLSX.utils.encode_cell({r:r-1,c:payCol+3})+")",total,S.sub2);let ws={...cells};ws["!ref"]=XLSX.utils.encode_range({s:{r:0,c:0},e:{r:maxRow,c:maxCol}}),ws["!merges"]=merges;let cols=[];for(let b=0;bcols.push({wch:w})),cols.push({wch:2});[12,11,14,13].forEach(w=>cols.push({wch:w})),ws["!cols"]=cols,ws["!rows"]=[{hpt:22}];let wb=XLSX.utils.book_new();return XLSX.utils.book_append_sheet(wb,ws,String(d2.propietario||"MATCH").replace(/[\\/*?:[\]]/g," ").slice(0,31)),XLSX.writeFile(wb,`MATCH_${limpioArchivo(d2.propietario)}${etiqueta4?"_"+limpioArchivo(etiqueta4):""}.xlsx`),{reservas:all.length,cobradas:nPag,total}}var PAGINA=200,DOC={Passport:"Pasaporte",Identitycard:"Documento de identidad"},SEXO={F:"Mujer",M:"Hombre"},TIPO_HUESPED={adult:"Adulto",child:"Ni\xF1o",infant:"Beb\xE9"},edadEn=(nac,dia)=>{if(!nac||!dia)return null;let d2=String(dia).slice(0,10);if(d2.length<10)return null;let a=Number(d2.slice(0,4))-Number(nac.slice(0,4));return d2.slice(5){let n=String(v.nombre||"").trim(),sueltos=[v.apellido,v.apellido2].map(x=>String(x||"").trim()).filter(x=>x&&!n.toLowerCase().includes(x.toLowerCase()));return[n,...new Set(sueltos)].filter(Boolean).join(" ")||"\u2014"};function QuienVino({api,token,e}){let[d2,setD]=(0,import_react28.useState)(null),[error,setError]=(0,import_react28.useState)("");if((0,import_react28.useEffect)(()=>{let vivo=!0;return setD(null),setError(""),api("portal_viajeros",{token,nro:e.nro}).then(r=>{vivo&&setD(r)}).catch(err=>{vivo&&setError(String(err&&err.message||err))}),()=>{vivo=!1}},[e.nro,token,api]),error)return __gh("div",{className:"p-note",style:{color:B.red},"data-gufi-src":"portal/reservas.tsx:54"},"No se ha podido leer el registro de viajeros: ",error);if(!d2)return __gh("div",{className:"p-note","data-gufi-src":"portal/reservas.tsx:55"},"Leyendo el registro de viajeros\u2026");let vs=d2.viajeros||[];return vs.length?__gh(__gf,null,vs.map(v=>{let edad=edadEn(v.nacimiento,e.entrada),documento=[DOC[v.tipo_documento]||v.tipo_documento,v.documento].filter(Boolean).join(" "),domicilio=[v.direccion,[v.cp,v.ciudad||v.municipio].filter(Boolean).join(" "),v.pais_residencia].filter(Boolean).join(" \xB7 "),contacto=[v.email,v.telefono].filter(Boolean).join(" \xB7 ");return __gh("div",{key:v.id,style:{borderRadius:12,background:"#f7f7f9",padding:"10px 13px",marginTop:8},"data-gufi-src":"portal/reservas.tsx:67"},__gh("div",{style:{display:"flex",justifyContent:"space-between",gap:10,alignItems:"baseline",flexWrap:"wrap"},"data-gufi-src":"portal/reservas.tsx:68"},__gh("span",{style:{fontSize:14,fontWeight:600,color:B.ink},"data-gufi-src":"portal/reservas.tsx:69"},nombreViajero(v)),__gh("span",{style:{fontSize:12,color:B.muted},"data-gufi-src":"portal/reservas.tsx:70"},[edad!=null?`${edad} a\xF1os`:null,SEXO[v.sexo],TIPO_HUESPED[v.tipo_huesped]].filter(Boolean).join(" \xB7 "))),__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:74"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:74"},"Documento"),__gh("span",{"data-gufi-src":"portal/reservas.tsx:74"},documento||"\u2014",v.documento_pais?` \xB7 ${v.documento_pais}`:"")),__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:75"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:75"},"Nacionalidad"),__gh("span",{"data-gufi-src":"portal/reservas.tsx:75"},v.pais||"\u2014")),v.nacimiento?__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:76"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:76"},"Nacimiento"),__gh("span",{"data-gufi-src":"portal/reservas.tsx:76"},fmtLarga(v.nacimiento))):null,__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:77"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:77"},"Domicilio"),__gh("span",{style:{textAlign:"right"},"data-gufi-src":"portal/reservas.tsx:77"},domicilio||"\u2014")),contacto?__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:78"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:78"},"Contacto"),__gh("span",{style:{textAlign:"right"},"data-gufi-src":"portal/reservas.tsx:78"},contacto)):null,v.checkin?__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:79"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:79"},"Check-in online"),__gh("span",{"data-gufi-src":"portal/reservas.tsx:79"},fmtLarga(v.checkin))):null)}),d2.origen==="canal"?__gh("div",{className:"p-note",style:{marginTop:8},"data-gufi-src":"portal/reservas.tsx:84"},"Ficha del registro del canal: trae documento y calle, pero no ciudad ni tel\xE9fono. Las del check-in online s\xED los traen."):null):__gh("div",{className:"p-note","data-gufi-src":"portal/reservas.tsx:57"},"Esta estancia no tiene ninguna ficha de viajero registrada.")}var nombreUnidad=(e,propPorId)=>{if(!e.u)return"";let u=((propPorId[e.p]||{}).unidades||[]).find(x=>x.id===e.u);return u?unidadDe(u.nombre):""},tituloEstancia=e=>e.ajuste?"Ajuste":e.solo_limpieza?"S\xF3lo limpieza":e.huesped||"Sin nombre";function DetalleEstancia({e,propPorId,onVolver,api,token}){let prop=propPorId[e.p]||{},unidad=nombreUnidad(e,propPorId),personas=e.personas?`${e.personas}${e.adultos!=null?` (${e.adultos} adulto${e.adultos===1?"":"s"}${e.ninos?`, ${e.ninos} ni\xF1o${e.ninos===1?"":"s"}`:""})`:""}`:"\u2014";return __gh(Pagina,{titulo:tituloEstancia(e),sub:[prop.nombre,unidad].filter(Boolean).join(" \xB7 "),onVolver},e.ajuste?__gh("div",{style:{borderRadius:12,background:"#f7f3ee",padding:"11px 13px",fontSize:13,color:B.sub,lineHeight:1.5,marginBottom:6},"data-gufi-src":"portal/reservas.tsx:105"},"Es un ajuste \u2014una resoluci\xF3n de la plataforma o un redondeo\u2014: suma a lo facturado, pero no es una estancia.",e.nro?__gh("div",{style:{color:B.muted,marginTop:6,fontSize:12.5},"data-gufi-src":"portal/reservas.tsx:107"},e.nro):null):null,__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(3,1fr)",gap:10,marginTop:4},"data-gufi-src":"portal/reservas.tsx:110"},[["Entrada",fmtLarga(e.entrada)],["Salida",e.ajuste?"\u2014":fmtLarga(e.salida)],["Noches",e.ajuste?"\u2014":num(e.noches)]].map(([l,v])=>__gh("div",{key:l,style:{background:"#f5f5f7",borderRadius:12,padding:"10px 12px"},"data-gufi-src":"portal/reservas.tsx:112"},__gh("div",{style:{fontSize:11.5,color:B.muted},"data-gufi-src":"portal/reservas.tsx:113"},l),__gh("div",{className:"b-num",style:{fontSize:15,fontWeight:600,color:B.ink,marginTop:3},"data-gufi-src":"portal/reservas.tsx:114"},v)))),__gh("div",{className:"p-sec","data-gufi-src":"portal/reservas.tsx:119"},deFactura()?"Facturado":"Importe"),__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:120"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:120"},"Pernocta"),__gh("span",{"data-gufi-src":"portal/reservas.tsx:120"},money2(e.pernocta))),__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:121"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:121"},"Limpieza"),__gh("span",{"data-gufi-src":"portal/reservas.tsx:121"},money2(e.limpieza))),__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:122"},__gh("span",{style:{color:B.ink,fontWeight:600},"data-gufi-src":"portal/reservas.tsx:122"},"Total"),__gh("span",{style:{fontWeight:700,fontSize:15},"data-gufi-src":"portal/reservas.tsx:122"},money2(e.facturado))),e.ajuste?null:__gh(__gf,null,__gh("div",{className:"p-sec","data-gufi-src":"portal/reservas.tsx:126"},"Reserva"),__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:127"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:127"},"Canal"),__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7},"data-gufi-src":"portal/reservas.tsx:127"},__gh("span",{className:"p-dot",style:{background:canalColor(e.canal)},"data-gufi-src":"portal/reservas.tsx:127"}),e.canal)),__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:128"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:128"},"N\xBA de reserva"),__gh("span",{style:{fontFamily:"ui-monospace,SFMono-Regular,Menlo,monospace",fontSize:12.5},"data-gufi-src":"portal/reservas.tsx:128"},e.nro||"\u2014")),__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:129"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:129"},"Reserv\xF3 con"),__gh("span",{"data-gufi-src":"portal/reservas.tsx:129"},e.antelacion==null?"\u2014":`${num(e.antelacion)} d\xEDa${e.antelacion===1?"":"s"} de antelaci\xF3n`)),__gh("div",{className:"p-sec","data-gufi-src":"portal/reservas.tsx:131"},"Hu\xE9spedes"),__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:132"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:132"},"Personas"),__gh("span",{"data-gufi-src":"portal/reservas.tsx:132"},personas)),__gh("div",{className:"p-kv","data-gufi-src":"portal/reservas.tsx:133"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:133"},"Pa\xEDs"),__gh("span",{"data-gufi-src":"portal/reservas.tsx:133"},paisEs(e.pais))),__gh("div",{className:"p-sec","data-gufi-src":"portal/reservas.tsx:135"},"Qui\xE9n vino \xB7 registro de viajeros"),e.nro?__gh(QuienVino,{api,token,e}):__gh("div",{className:"p-note","data-gufi-src":"portal/reservas.tsx:138"},"Esta estancia no tiene n\xFAmero de reserva, as\xED que no se le puede buscar registro de viajeros.")))}function exportarEstancias(estancias,propPorId,periodo,titulo3){let columnas=[{t:"Entrada",w:12,fecha:!0},{t:"Salida",w:12,fecha:!0},{t:"Noches",w:8,n:!0},{t:"Hu\xE9sped",w:26},{t:"Pa\xEDs",w:16},{t:"Personas",w:9,n:!0},{t:"Canal",w:13},{t:"N\xBA reserva",w:20},{t:"Propiedad",w:34},{t:"Unidad",w:16},{t:"Pernocta",w:13,eur:!0},{t:"Limpieza",w:12,eur:!0},{t:deFactura()?"Total facturado":"Total",w:15,eur:!0}],filas=estancias.map(e=>[e.entrada,e.ajuste?"":e.salida,e.ajuste?"":e.noches,tituloEstancia(e),e.pais?paisEs(e.pais):"",e.personas||"",e.canal,e.nro,(propPorId[e.p]||{}).nombre||"",nombreUnidad(e,propPorId),e.pernocta,e.limpieza,e.facturado]),p=periodoTexto(periodo.desde,periodo.hasta);return exportarTabla(`${limpioArchivo(titulo3)}_${limpioArchivo(p)}.xlsx`,titulo3,`${titulo3} \xB7 ${p}`,`${deFactura()?`Estancias facturadas por ${marca().nombre}`:"Reservas confirmadas"} \xB7 ${num(estancias.length)} filas`,columnas,filas)}function Lista({d:d2,periodo,propPorId,abrirEstancia}){let movil=useIsMobile(900),[q,setQ]=(0,import_react28.useState)(""),[canal,setCanal]=(0,import_react28.useState)(""),[hasta,setHasta]=(0,import_react28.useState)(PAGINA),[exportando,setExportando]=(0,import_react28.useState)(!1),[errorExport,setErrorExport]=(0,import_react28.useState)(""),{orden,th,flecha:flecha3}=useOrden({k:"entrada",asc:!1}),variasProps=d2.propiedades.length>1,norm=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),filtradas=(0,import_react28.useMemo)(()=>{let n=norm(q);return d2.estancias.filter(e=>(!canal||e.canal===canal)&&(!n||norm(`${e.huesped} ${e.nro} ${(propPorId[e.p]||{}).nombre}`).includes(n)))},[d2,q,canal,propPorId]),filas=(0,import_react28.useMemo)(()=>ordenar(filtradas,orden,{entrada:e=>e.entrada,noches:e=>e.noches,huesped:e=>tituloEstancia(e),canal:e=>e.canal,propiedad:e=>(propPorId[e.p]||{}).nombre,pernocta:e=>e.pernocta,limpieza:e=>e.limpieza,facturado:e=>e.facturado}),[filtradas,orden,propPorId]),tot=(0,import_react28.useMemo)(()=>filtradas.reduce((t2,e)=>(t2.pernocta+=e.pernocta,t2.limpieza+=e.limpieza,t2.facturado+=e.facturado,!e.ajuste&&!e.solo_limpieza&&(t2.n+=1,t2.noches+=e.noches),t2),{n:0,noches:0,pernocta:0,limpieza:0,facturado:0}),[filtradas]),canales=d2.canales.map(c=>c.canal);async function exportar2(){setExportando(!0),setErrorExport("");try{await exportarEstancias(filas,propPorId,periodo,"Reservas")}catch(e){setErrorExport(String(e&&e.message||e))}setExportando(!1)}return __gh("div",{className:"p-grid","data-gufi-src":"portal/reservas.tsx:188"},__gh("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8},"data-gufi-src":"portal/reservas.tsx:189"},__gh("label",{className:"p-pill",style:{cursor:"text",minWidth:240,flex:movil?"1 1 100%":"0 1 320px"},"data-gufi-src":"portal/reservas.tsx:190"},__gh(import_lucide_react27.Search,{size:15,style:{color:B.faint}}),__gh("input",{value:q,onChange:e=>{setQ(e.target.value),setHasta(PAGINA)},placeholder:"Buscar hu\xE9sped, reserva o propiedad",style:{border:"none",outline:"none",background:"transparent",fontSize:13.5,flex:1,minWidth:0,color:B.ink},"data-gufi-src":"portal/reservas.tsx:192"})),__gh("div",{className:"p-seg",style:{overflowX:"auto",maxWidth:"100%"},"data-gufi-src":"portal/reservas.tsx:195"},__gh("button",{"data-on":canal?"0":"1",onClick:()=>setCanal(""),"data-gufi-src":"portal/reservas.tsx:196"},"Todos"),canales.map(c=>__gh("button",{key:c,"data-on":canal===c?"1":"0",onClick:()=>setCanal(c),"data-gufi-src":"portal/reservas.tsx:197"},c))),__gh("button",{className:"p-btn",style:{marginLeft:"auto"},onClick:exportar2,disabled:exportando||!filas.length,"data-gufi-src":"portal/reservas.tsx:199"},__gh(import_lucide_react27.Download,{size:15}),exportando?"Preparando\u2026":"Excel")),errorExport?__gh("div",{className:"p-note",style:{color:B.red},"data-gufi-src":"portal/reservas.tsx:201"},errorExport):null,__gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/reservas.tsx:203"},__gh("div",{style:{display:"flex",gap:22,flexWrap:"wrap",padding:"14px 18px",borderBottom:`1px solid ${B.hair}`,fontSize:13.5,color:B.muted},"data-gufi-src":"portal/reservas.tsx:204"},__gh("span",{"data-gufi-src":"portal/reservas.tsx:205"},__gh("b",{className:"b-num",style:{color:B.ink},"data-gufi-src":"portal/reservas.tsx:205"},num(tot.n))," estancias"),__gh("span",{"data-gufi-src":"portal/reservas.tsx:206"},__gh("b",{className:"b-num",style:{color:B.ink},"data-gufi-src":"portal/reservas.tsx:206"},num(tot.noches))," noches"),__gh("span",{"data-gufi-src":"portal/reservas.tsx:207"},"Pernocta ",__gh("b",{className:"b-num",style:{color:B.ink},"data-gufi-src":"portal/reservas.tsx:207"},money2(tot.pernocta))),__gh("span",{"data-gufi-src":"portal/reservas.tsx:208"},"Limpieza ",__gh("b",{className:"b-num",style:{color:B.ink},"data-gufi-src":"portal/reservas.tsx:208"},money2(tot.limpieza))),__gh("span",{"data-gufi-src":"portal/reservas.tsx:209"},"Total ",__gh("b",{className:"b-num",style:{color:B.ink},"data-gufi-src":"portal/reservas.tsx:209"},money2(tot.facturado)))),filas.length?movil?__gh("div",{"data-gufi-src":"portal/reservas.tsx:212"},filas.slice(0,hasta).map(e=>__gh("button",{key:e.id,className:"p-click",onClick:()=>abrirEstancia(e),style:{display:"block",width:"100%",textAlign:"left",padding:"13px 16px",border:"none",borderBottom:"1px solid #f0f0f2",background:"transparent"},"data-gufi-src":"portal/reservas.tsx:214"},__gh("div",{style:{display:"flex",alignItems:"baseline",gap:10},"data-gufi-src":"portal/reservas.tsx:215"},__gh("span",{style:{fontSize:14.5,fontWeight:600,color:e.ajuste?B.muted:B.ink,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},"data-gufi-src":"portal/reservas.tsx:216"},tituloEstancia(e)),__gh("span",{className:"b-num",style:{marginLeft:"auto",fontSize:14.5,fontWeight:600},"data-gufi-src":"portal/reservas.tsx:217"},money2(e.facturado))),__gh("div",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12.5,color:B.muted,marginTop:4},"data-gufi-src":"portal/reservas.tsx:219"},__gh("span",{className:"p-dot",style:{background:canalColor(e.canal),width:7,height:7},"data-gufi-src":"portal/reservas.tsx:220"}),__gh("span",{"data-gufi-src":"portal/reservas.tsx:221"},fmtLarga(e.entrada),e.ajuste?"":` \xB7 ${num(e.noches)} noche${e.noches===1?"":"s"}`),variasProps?__gh("span",{style:{overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},"data-gufi-src":"portal/reservas.tsx:222"},"\xB7 ",(propPorId[e.p]||{}).nombre):null)))):__gh("div",{style:{overflowX:"auto"},"data-gufi-src":"portal/reservas.tsx:228"},__gh("table",{className:"p-table",style:{minWidth:variasProps?1080:860},"data-gufi-src":"portal/reservas.tsx:229"},__gh("thead",{"data-gufi-src":"portal/reservas.tsx:230"},__gh("tr",{"data-gufi-src":"portal/reservas.tsx:230"},__gh("th",{...th("entrada"),"data-gufi-src":"portal/reservas.tsx:231"},"Entrada",flecha3("entrada")),__gh("th",{"data-gufi-src":"portal/reservas.tsx:232"},"Salida"),__gh("th",{"data-r":"1",...th("noches"),"data-gufi-src":"portal/reservas.tsx:233"},"Noches",flecha3("noches")),__gh("th",{...th("huesped"),"data-gufi-src":"portal/reservas.tsx:234"},"Hu\xE9sped",flecha3("huesped")),__gh("th",{...th("canal"),"data-gufi-src":"portal/reservas.tsx:235"},"Canal",flecha3("canal")),variasProps?__gh("th",{...th("propiedad"),"data-gufi-src":"portal/reservas.tsx:236"},"Propiedad",flecha3("propiedad")):null,__gh("th",{"data-r":"1",...th("pernocta"),"data-gufi-src":"portal/reservas.tsx:237"},"Pernocta",flecha3("pernocta")),__gh("th",{"data-r":"1",...th("limpieza"),"data-gufi-src":"portal/reservas.tsx:238"},"Limpieza",flecha3("limpieza")),__gh("th",{"data-r":"1",...th("facturado"),"data-gufi-src":"portal/reservas.tsx:239"},"Total",flecha3("facturado")))),__gh("tbody",{"data-gufi-src":"portal/reservas.tsx:241"},filas.slice(0,hasta).map(e=>{let unidad=nombreUnidad(e,propPorId);return __gh("tr",{key:e.id,className:"p-click",onClick:()=>abrirEstancia(e),"data-gufi-src":"portal/reservas.tsx:245"},__gh("td",{"data-gufi-src":"portal/reservas.tsx:246"},fmtLarga(e.entrada)),__gh("td",{style:{color:B.muted},"data-gufi-src":"portal/reservas.tsx:247"},e.ajuste?"\u2014":fmtLarga(e.salida)),__gh("td",{"data-r":"1","data-gufi-src":"portal/reservas.tsx:248"},e.ajuste?"\u2014":num(e.noches)),__gh("td",{style:{maxWidth:240,overflow:"hidden",textOverflow:"ellipsis",fontWeight:500,color:e.ajuste||e.solo_limpieza?B.muted:B.ink},"data-gufi-src":"portal/reservas.tsx:249"},tituloEstancia(e)),__gh("td",{"data-gufi-src":"portal/reservas.tsx:250"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7},"data-gufi-src":"portal/reservas.tsx:250"},__gh("span",{className:"p-dot",style:{background:canalColor(e.canal)},"data-gufi-src":"portal/reservas.tsx:250"}),e.canal)),variasProps?__gh("td",{style:{maxWidth:260,overflow:"hidden",textOverflow:"ellipsis",color:B.sub},"data-gufi-src":"portal/reservas.tsx:251"},(propPorId[e.p]||{}).nombre,unidad?__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/reservas.tsx:251"}," \xB7 ",unidad):null):null,__gh("td",{"data-r":"1","data-gufi-src":"portal/reservas.tsx:252"},money2(e.pernocta)),__gh("td",{"data-r":"1",style:{color:e.limpieza?B.ink:B.faint},"data-gufi-src":"portal/reservas.tsx:253"},money2(e.limpieza)),__gh("td",{"data-r":"1",style:{fontWeight:600},"data-gufi-src":"portal/reservas.tsx:254"},money2(e.facturado)))})))):__gh(Vacio2,{titulo:"Ninguna estancia coincide",texto:"Prueba con otro nombre o quita el filtro de canal."}),filas.length>hasta?__gh("div",{style:{padding:14,display:"flex",justifyContent:"center",borderTop:`1px solid ${B.hair}`},"data-gufi-src":"portal/reservas.tsx:263"},__gh("button",{className:"p-btn",onClick:()=>setHasta(hasta+PAGINA*2),"data-gufi-src":"portal/reservas.tsx:264"},"Ver ",num(Math.min(PAGINA*2,filas.length-hasta))," m\xE1s de ",num(filas.length-hasta))):null))}function Reservas({f,periodo,propPorId,abrirEstancia}){return __gh(Estado,{f,periodo,hijos:d2=>__gh(Lista,{d:d2,periodo,propPorId,abrirEstancia})})}var import_react29=require("react"),import_lucide_react28=require("lucide-react");var DIA=864e5,ms=ymd3=>Date.parse(ymd3+"T00:00:00Z"),mesMas=(ym,n)=>{let[y,m]=ym.split("-").map(Number);return new Date(Date.UTC(y,m-1+n,1)).toISOString().slice(0,7)},INICIAL=["D","L","M","X","J","V","S"];function enCarriles(estancias,desde2){let orden=[...estancias].sort((a,b)=>a.entradab.entrada?1:b.noches-a.noches),finDe=[];return orden.map(e=>{let ini=Math.round((ms(e.entrada)-ms(desde2))/DIA),fin=ini+e.noches,c=finDe.findIndex(f=>f<=ini);return c<0?(c=finDe.length,finDe.push(fin)):finDe[c]=fin,{e,ini,fin,carril:c}})}function Barra({b,COL,dias,alto,abrirEstancia}){let L=Math.max(0,(b.ini+.5)*COL),R=Math.min(dias*COL,(b.fin+.5)*COL);if(R<=L)return null;let color=canalColor(b.e.canal),w=R-L-3,cortaIzq=b.ini+.5<0,cortaDer=b.fin+.5>dias;return __gh("button",{onClick:()=>abrirEstancia(b.e),title:`${tituloEstancia(b.e)} \xB7 ${fmtLarga(b.e.entrada)} \u2192 ${fmtLarga(b.e.salida)} \xB7 ${num(b.e.noches)} noche${b.e.noches===1?"":"s"} \xB7 ${money2(b.e.facturado)}`,style:{border:"none",position:"absolute",left:L+1.5,top:4+b.carril*alto,width:Math.max(4,w),height:alto-7,background:`${color}1f`,boxShadow:`inset 0 0 0 1px ${color}40`,borderLeft:cortaIzq?"none":`3px solid ${color}`,borderRadius:`${cortaIzq?0:7}px ${cortaDer?0:7}px ${cortaDer?0:7}px ${cortaIzq?0:7}px`,padding:"0 6px",display:"flex",alignItems:"center",gap:5,overflow:"hidden",cursor:"pointer",textAlign:"left"},"data-gufi-src":"portal/calendario.tsx:43"},w>46?__gh("span",{style:{fontSize:12,fontWeight:600,color:B.ink,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},"data-gufi-src":"portal/calendario.tsx:51"},tituloEstancia(b.e).split(" ")[0]):null,w>96?__gh("span",{style:{fontSize:11,color:B.muted,whiteSpace:"nowrap"},"data-gufi-src":"portal/calendario.tsx:52"},b.e.noches,"n"):null)}function Calendario2({api,token,filtros,propiedades,ultimoMes,facturadoHasta,abrirEstancia}){let movil=useIsMobile(900),[mes2,setMes]=(0,import_react29.useState)(ultimoMes),[abiertas,setAbiertas]=(0,import_react29.useState)({}),desde2=mes2+"-01",hasta=primeroMesSiguiente(mes2),f=useScript(api,"portal_facturado",{token,...filtros,desde:desde2,hasta,modo:"solape"},!0),COL=movil?30:36,IZQ=movil?128:250,ALTO=34,dias=Math.round((ms(hasta)-ms(desde2))/DIA),hoy2=new Date().toISOString().slice(0,10),diasFacturables=facturadoHasta?Math.max(0,Math.min(dias,Math.round((ms(facturadoHasta)-ms(desde2))/DIA))):dias,filas=(0,import_react29.useMemo)(()=>{if(!f.datos||f.datos.demasiadas)return[];let porProp={};f.datos.estancias.forEach(e=>{!e.ajuste&&!e.solo_limpieza&&(porProp[e.p]=porProp[e.p]||[]).push(e)});let nochesEnMes=est=>est.reduce((s,e)=>{let ini=Math.round((ms(e.entrada)-ms(desde2))/DIA);return s+Math.max(0,Math.min(ini+e.noches,diasFacturables)-Math.max(ini,0))},0),out=[];for(let p of propiedades){let est=porProp[p.id]||[];if(p.unidades.length>1){let abierta=abiertas[p.id]!=null?abiertas[p.id]:propiedades.length===1;if(out.push({k:"g"+p.id,tipo:"grupo",p,est,abierta,ocup:diasFacturables?nochesEnMes(est)/(diasFacturables*p.unidades.length)*100:null}),abierta){let porU={};est.forEach(e=>{e.u&&(porU[e.u]=porU[e.u]||[]).push(e)}),[...p.unidades].sort((a,b)=>unidadDe(a.nombre).localeCompare(unidadDe(b.nombre),"es",{numeric:!0})).forEach(u=>{let eu=porU[u.id]||[];out.push({k:"u"+u.id,tipo:"unidad",p,u,est:eu,ocup:diasFacturables?nochesEnMes(eu)/diasFacturables*100:null})});let sin=est.filter(e=>!e.u);sin.length&&out.push({k:"s"+p.id,tipo:"sin",p,est:sin,ocup:null})}}else out.push({k:"p"+p.id,tipo:"piso",p,est,ocup:diasFacturables?nochesEnMes(est)/diasFacturables*100:null})}return out},[f.datos,propiedades,abiertas,desde2,diasFacturables]),alternar=(id,abierta)=>setAbiertas(a=>({...a,[id]:!abierta})),listaDias=Array.from({length:dias},(_,i)=>{let d2=new Date(ms(desde2)+i*DIA);return{n:i+1,dow:d2.getUTCDay(),ymd:d2.toISOString().slice(0,10)}}),canales=f.datos&&!f.datos.demasiadas?f.datos.canales.map(c=>c.canal):[],ancho=IZQ+dias*COL,lineas=`repeating-linear-gradient(90deg, transparent 0, transparent ${COL-1}px, #f0f0f2 ${COL-1}px, #f0f0f2 ${COL}px)`;return __gh("div",{className:"p-grid","data-gufi-src":"portal/calendario.tsx:107"},__gh("div",{style:{display:"flex",alignItems:"center",flexWrap:"wrap",gap:10},"data-gufi-src":"portal/calendario.tsx:108"},__gh("div",{style:{display:"flex",alignItems:"center",gap:4},"data-gufi-src":"portal/calendario.tsx:109"},__gh("button",{className:"p-btn",style:{width:34,padding:0},onClick:()=>setMes(mesMas(mes2,-1)),"aria-label":"Mes anterior","data-gufi-src":"portal/calendario.tsx:110"},__gh(import_lucide_react28.ChevronLeft,{size:16})),__gh("div",{style:{minWidth:150,textAlign:"center",fontSize:17,fontWeight:600,letterSpacing:"-.3px",color:B.ink},"data-gufi-src":"portal/calendario.tsx:111"},MES[Number(mes2.slice(5))]," ",mes2.slice(0,4)),__gh("button",{className:"p-btn",style:{width:34,padding:0},onClick:()=>setMes(mesMas(mes2,1)),"aria-label":"Mes siguiente","data-gufi-src":"portal/calendario.tsx:112"},__gh(import_lucide_react28.ChevronRight,{size:16}))),mes2!==ultimoMes?__gh("button",{className:"p-btn p-btn-s",onClick:()=>setMes(ultimoMes),"data-gufi-src":"portal/calendario.tsx:114"},deFactura()?"\xDAltimo mes facturado":"Este mes"):null,__gh("div",{className:"p-note",style:{marginLeft:"auto",gap:14,flexWrap:"wrap"},"data-gufi-src":"portal/calendario.tsx:115"},canales.map(c=>__gh("span",{key:c,style:{display:"inline-flex",alignItems:"center",gap:6},"data-gufi-src":"portal/calendario.tsx:116"},__gh("span",{className:"p-dot",style:{background:canalColor(c)},"data-gufi-src":"portal/calendario.tsx:116"}),c)),diasFacturablesultimoMes?__gh("div",{className:"p-note",style:{background:"#fff",border:`1px solid ${B.hair}`,borderRadius:12,padding:"10px 14px"},"data-gufi-src":"portal/calendario.tsx:122"},marca().nombre," todav\xEDa no ha facturado ",mesLabel(mes2).toLowerCase(),". S\xF3lo aparecen las estancias largas que ya se han facturado en parte."):null,__gh("div",{className:"p-card",style:{overflow:"hidden",position:"relative"},"data-gufi-src":"portal/calendario.tsx:127"},f.error?__gh(Vacio2,{titulo:"No se ha podido cargar el calendario",texto:f.error}):f.datos&&f.datos.demasiadas?__gh(Vacio2,{titulo:"Demasiadas estancias para un solo calendario",texto:"Elige un propietario para ver su calendario."}):__gh("div",{style:{overflow:"auto",maxHeight:"calc(100vh - 230px)",minHeight:240},"data-gufi-src":"portal/calendario.tsx:131"},__gh("div",{style:{width:ancho,position:"relative"},"data-gufi-src":"portal/calendario.tsx:132"},__gh("div",{style:{display:"flex",position:"sticky",top:0,zIndex:4,background:"#fff",borderBottom:`1px solid ${B.hair}`},"data-gufi-src":"portal/calendario.tsx:134"},__gh("div",{style:{width:IZQ,flexShrink:0,position:"sticky",left:0,zIndex:5,background:"#fff",borderRight:`1px solid ${B.hair}`,padding:"10px 14px",fontSize:12,color:B.muted,display:"flex",alignItems:"flex-end"},"data-gufi-src":"portal/calendario.tsx:135"},num(propiedades.length)," ",propiedades.length===1?"propiedad":"propiedades"),listaDias.map(d2=>{let finde=d2.dow===0||d2.dow===6,esHoy=d2.ymd===hoy2;return __gh("div",{key:d2.n,style:{width:COL,flexShrink:0,textAlign:"center",padding:"7px 0 6px",background:finde?"#fafafb":"#fff"},"data-gufi-src":"portal/calendario.tsx:142"},__gh("div",{style:{fontSize:10,color:B.faint},"data-gufi-src":"portal/calendario.tsx:143"},INICIAL[d2.dow]),__gh("div",{className:"b-num",style:{fontSize:12.5,fontWeight:esHoy?700:500,color:esHoy?"#fff":B.ink,width:22,height:22,lineHeight:"22px",borderRadius:999,margin:"2px auto 0",background:esHoy?B.accent:"transparent"},"data-gufi-src":"portal/calendario.tsx:144"},d2.n))})),__gh("div",{style:{position:"absolute",left:IZQ,top:0,bottom:0,width:dias*COL,pointerEvents:"none",zIndex:0},"data-gufi-src":"portal/calendario.tsx:151"},listaDias.map((d2,i)=>{let sinFacturar=i>=diasFacturables,finde=d2.dow===0||d2.dow===6;return!sinFacturar&&!finde?null:__gh("div",{key:d2.n,style:{position:"absolute",left:i*COL,width:COL,top:0,bottom:0,background:sinFacturar?"repeating-linear-gradient(135deg,#f3f3f5 0,#f3f3f5 2px,transparent 2px,transparent 6px)":"#fafafb"},"data-gufi-src":"portal/calendario.tsx:156"})})),f.cargando?__gh("div",{style:{padding:60,display:"flex",justifyContent:"center",position:"sticky",left:0,width:"min(100%, 100vw)"},"data-gufi-src":"portal/calendario.tsx:161"},__gh(import_lucide_react28.Loader2,{className:"animate-spin",style:{color:B.accent}})):filas.map(fila=>{if(fila.tipo==="grupo"){let ocupDia=new Array(dias).fill(0);fila.est.forEach(e=>{let ini=Math.round((ms(e.entrada)-ms(desde2))/DIA);for(let k=Math.max(0,ini);kalternar(fila.p.id,fila.abierta),style:{border:"none",width:IZQ,flexShrink:0,position:"sticky",left:0,zIndex:3,background:fila.abierta?"#fbfaf9":"#fff",borderRight:`1px solid ${B.hair}`,padding:"8px 12px",display:"flex",alignItems:"center",gap:8,cursor:"pointer",textAlign:"left"},"data-gufi-src":"portal/calendario.tsx:170"},__gh(import_lucide_react28.ChevronDown,{size:15,style:{color:B.muted,transform:fila.abierta?"none":"rotate(-90deg)",transition:"transform .2s",flexShrink:0}}),__gh("span",{style:{minWidth:0},"data-gufi-src":"portal/calendario.tsx:172"},__gh("span",{style:{display:"block",fontSize:13,fontWeight:600,color:B.ink,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},"data-gufi-src":"portal/calendario.tsx:173"},fila.p.nombre),__gh("span",{style:{display:"block",fontSize:11.5,color:B.muted,marginTop:1},"data-gufi-src":"portal/calendario.tsx:174"},n," unidades",fila.ocup!=null?` \xB7 ${pct(fila.ocup)}`:""))),__gh("div",{style:{display:"flex",alignItems:"center",height:44},"data-gufi-src":"portal/calendario.tsx:177"},ocupDia.map((c,i)=>{let p=i55?"#fff":B.sub},"data-gufi-src":"portal/calendario.tsx:180"},p==null||movil?"":Math.round(p))})))}let barras=enCarriles(fila.est,desde2),carriles=Math.max(1,...barras.map(b=>b.carril+1)),nombre=fila.tipo==="unidad"?unidadDe(fila.u.nombre):fila.tipo==="sin"?"Sin cama asignada":fila.p.nombre,sub=fila.tipo==="sin"?`${num(fila.est.length)} estancias sin casar con su cama`:null;return __gh("div",{key:fila.k,style:{display:"flex",position:"relative",zIndex:1,borderBottom:`1px solid ${fila.tipo==="piso"?B.hair:"#f0f0f2"}`},"data-gufi-src":"portal/calendario.tsx:191"},__gh("div",{style:{width:IZQ,flexShrink:0,position:"sticky",left:0,zIndex:3,background:"#fff",borderRight:`1px solid ${B.hair}`,padding:fila.tipo==="piso"?"8px 14px":"6px 14px 6px 36px",display:"flex",flexDirection:"column",justifyContent:"center"},"data-gufi-src":"portal/calendario.tsx:192"},__gh("span",{style:{fontSize:fila.tipo==="piso"?13:12.5,fontWeight:fila.tipo==="piso"?600:500,color:fila.tipo==="sin"?B.amber:B.ink,whiteSpace:"nowrap",overflow:"hidden",textOverflow:"ellipsis"},title:nombre,"data-gufi-src":"portal/calendario.tsx:193"},nombre),fila.ocup!=null?__gh("span",{className:"b-num",style:{fontSize:11.5,color:B.muted,marginTop:1},"data-gufi-src":"portal/calendario.tsx:194"},pct(fila.ocup)," ocupado"):sub?__gh("span",{style:{fontSize:11,color:B.muted},"data-gufi-src":"portal/calendario.tsx:194"},sub):null),__gh("div",{style:{position:"relative",width:dias*COL,height:carriles*ALTO+2,backgroundImage:lineas},"data-gufi-src":"portal/calendario.tsx:196"},barras.map(b=>__gh(Barra,{key:b.e.id,b,COL,dias,alto:ALTO,abrirEstancia}))))}),!f.cargando&&f.datos&&!filas.length?__gh(Vacio2,{titulo:"Sin propiedades que ense\xF1ar",texto:"Cambia el filtro de propietario o de propiedad."}):null))),__gh("p",{className:"p-note","data-gufi-src":"portal/calendario.tsx:207"},deFactura()?`S\xF3lo aparecen las estancias ya facturadas por ${marca().nombre}. La ocupaci\xF3n de cada fila es la del mes, contando hasta el \xFAltimo d\xEDa facturado.`:"Aparecen las reservas confirmadas. La ocupaci\xF3n de cada fila es la del mes."))}var import_react33=require("react"),import_lucide_react32=require("lucide-react");var import_react30=require("react"),import_lucide_react29=require("lucide-react");var porNoche=(importe,noches2)=>noches2?money2(importe/noches2):null;function Resumen2({liquidacion,base:base2}){let grupos={};liquidacion.secciones.forEach(s=>{s.por_estancia.filter(g=>g.en_factura&&g.base).forEach(g=>{let k=g.concepto;grupos[k]=grupos[k]||{k,n:0,base:0},grupos[k].n+=g.estancias,grupos[k].base+=g.base}),s.gastos.filter(g=>g.en_factura&&g.base).forEach(g=>{let k=g.concepto.split(" - ")[0].trim().toUpperCase();grupos[k]=grupos[k]||{k,n:0,base:0},grupos[k].n+=1,grupos[k].base+=g.base})});let filas=Object.values(grupos).sort((a,b)=>b.base-a.base);if(filas.length<2)return null;let noches2=liquidacion.actividad.noches;return __gh("div",{style:{marginTop:14},"data-gufi-src":"portal/desglose.tsx:34"},__gh("div",{className:"p-sec",style:{marginTop:0},"data-gufi-src":"portal/desglose.tsx:35"},"Por concepto"),filas.map(g=>__gh("div",{key:g.k,style:{display:"grid",gridTemplateColumns:"minmax(0,1fr) auto auto",gap:12,alignItems:"baseline",padding:"7px 0",borderBottom:"1px solid #f0f0f2",fontSize:13},"data-gufi-src":"portal/desglose.tsx:37"},__gh("span",{style:{minWidth:0,color:B.ink},"data-gufi-src":"portal/desglose.tsx:38"},g.k.charAt(0)+g.k.slice(1).toLowerCase()," ",__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/desglose.tsx:38"},"\xB7 ",num(g.n)," ",g.n===1?"l\xEDnea":"l\xEDneas",base2?` \xB7 ${Math.round(g.base/base2*100)} %`:"")),__gh("span",{className:"b-num",style:{color:B.muted,fontSize:12},"data-gufi-src":"portal/desglose.tsx:39"},noches2?`${porNoche(g.base,noches2)}/noche`:""),__gh("span",{className:"b-num",style:{color:B.ink,fontWeight:600,minWidth:90,textAlign:"right"},"data-gufi-src":"portal/desglose.tsx:40"},money2(g.base)))))}function Seccion({s,noches:noches2}){let conImporte=s.gastos.filter(g=>g.en_factura||g.base),aCero=s.gastos.filter(g=>!g.en_factura&&!g.base),vacia=!s.por_estancia.length&&!conImporte.length;return __gh("div",{style:{marginTop:18},"data-gufi-src":"portal/desglose.tsx:52"},__gh("div",{style:{display:"flex",alignItems:"baseline",gap:10,paddingBottom:8,borderBottom:`1px solid ${B.hair}`},"data-gufi-src":"portal/desglose.tsx:53"},__gh("span",{className:"p-sec",style:{margin:0},"data-gufi-src":"portal/desglose.tsx:54"},s.titulo),__gh("span",{className:"b-num",style:{marginLeft:"auto",fontSize:14,fontWeight:600,color:vacia?B.faint:B.ink},"data-gufi-src":"portal/desglose.tsx:55"},money2(s.base))),s.base&&noches2?__gh("div",{className:"p-note",style:{marginTop:6},"data-gufi-src":"portal/desglose.tsx:57"},"\u2248 ",porNoche(s.base,noches2)," por noche liquidada"):null,s.fuera?__gh("div",{className:"p-note",style:{marginTop:6,color:B.amber},"data-gufi-src":"portal/desglose.tsx:58"},"+ ",money2(s.fuera)," en la liquidaci\xF3n que no van en esta factura"):null,s.por_estancia.map((g,k)=>__gh("div",{key:k,style:{padding:"11px 0",borderBottom:"1px solid #f0f0f2"},"data-gufi-src":"portal/desglose.tsx:61"},__gh("div",{style:{display:"flex",gap:12,alignItems:"baseline"},"data-gufi-src":"portal/desglose.tsx:62"},__gh("span",{style:{fontSize:13.5,fontWeight:600,color:B.ink},"data-gufi-src":"portal/desglose.tsx:63"},g.concepto),__gh("span",{className:"b-num",style:{marginLeft:"auto",fontSize:13.5,fontWeight:600,color:g.en_factura?B.ink:B.faint},"data-gufi-src":"portal/desglose.tsx:64"},money2(g.base))),__gh("div",{style:{fontSize:12.5,color:B.muted,marginTop:3,lineHeight:1.5},"data-gufi-src":"portal/desglose.tsx:66"},g.criterio?`${g.criterio} \xB7 `:"",num(g.estancias)," estancias \xB7 ",num(g.noches)," noches \xB7 sobre ",money2(g.sobre)," facturados"),g.en_factura?null:__gh("div",{style:{fontSize:12,color:B.amber,marginTop:3},"data-gufi-src":"portal/desglose.tsx:69"},"Est\xE1n en la liquidaci\xF3n, pero no en esta factura"))),conImporte.map((g,k)=>__gh("div",{key:k,style:{padding:"11px 0",borderBottom:"1px solid #f0f0f2"},"data-gufi-src":"portal/desglose.tsx:74"},__gh("div",{style:{display:"flex",gap:12,alignItems:"baseline"},"data-gufi-src":"portal/desglose.tsx:75"},__gh("span",{style:{fontSize:13.5,fontWeight:600,color:B.ink,minWidth:0},"data-gufi-src":"portal/desglose.tsx:76"},g.concepto),__gh("span",{className:"b-num",style:{marginLeft:"auto",fontSize:13.5,fontWeight:600,color:g.en_factura?B.ink:B.faint,flexShrink:0},"data-gufi-src":"portal/desglose.tsx:77"},money2(g.base))),__gh("div",{style:{fontSize:12.5,color:B.muted,marginTop:3,lineHeight:1.5},"data-gufi-src":"portal/desglose.tsx:79"},[g.criterio,g.aplicado,g.gasto!=null&&Math.abs(g.gasto-g.base)>=.01?`gasto de origen ${money2(g.gasto)}`:null].filter(Boolean).join(" \xB7 ")),g.proveedor||g.factura_proveedor||g.origen?__gh("div",{style:{fontSize:12.5,color:B.muted,marginTop:1,lineHeight:1.5},"data-gufi-src":"portal/desglose.tsx:83"},g.origen?g.origen:[g.proveedor,g.factura_proveedor?`factura ${g.factura_proveedor}`:null,g.factura_proveedor_fecha?`del ${fmtLarga(g.factura_proveedor_fecha)}`:null].filter(Boolean).join(" \xB7 ")):null,g.en_factura?null:__gh("div",{style:{fontSize:12,color:B.amber,marginTop:3},"data-gufi-src":"portal/desglose.tsx:87"},"En la liquidaci\xF3n, pero no en esta factura"))),aCero.length?__gh("div",{className:"p-note",style:{marginTop:8,lineHeight:1.5,display:"block"},"data-gufi-src":"portal/desglose.tsx:92"},"A 0 \u20AC este mes: ",aCero.map(g=>g.concepto).join(", "),"."):null)}function Desglose({api,token,factura,nombrePiso,onVolver}){let d2=useScript(api,"portal_factura_desglose",{token,facturaId:factura.id},!0),[exportando,setExportando]=(0,import_react30.useState)("");async function exportar2(){setExportando("\u2026");try{let filas=[];d2.datos.liquidaciones.forEach(l=>l.secciones.forEach(s=>{s.por_estancia.forEach(g=>filas.push([nombrePiso(l),s.titulo,g.concepto,g.criterio||"",`${g.estancias} estancias \xB7 ${g.noches} noches \xB7 sobre ${g.sobre} \u20AC`,"","","","",g.base,g.iva,g.total,g.en_factura?"S\xED":"No"])),s.gastos.forEach(g=>filas.push([nombrePiso(l),s.titulo,g.concepto,g.criterio||"",g.aplicado||"",g.origen||g.proveedor||"",g.factura_proveedor||"",g.factura_proveedor_fecha||g.fecha||"",g.gasto,g.base,g.iva,g.total,g.en_factura?"S\xED":"No"]))})),await exportarTabla(`Desglose_${limpioArchivo(d2.datos.factura.numero)}.xlsx`,"Desglose",`Desglose de la factura ${d2.datos.factura.numero}`,`Base ${money2(d2.datos.factura.base)} \xB7 IVA ${money2(d2.datos.factura.iva)} \xB7 Total ${money2(d2.datos.factura.total)}`,[{t:"Propiedad",w:28},{t:"Secci\xF3n",w:20},{t:"Concepto",w:40},{t:"Criterio",w:22},{t:"C\xF3mo se aplic\xF3",w:30},{t:"Proveedor",w:32},{t:"Factura del proveedor",w:22},{t:"Fecha",w:12,fecha:!0},{t:"Gasto de origen",w:15,eur:!0},{t:"Base",w:13,eur:!0},{t:"IVA",w:11,eur:!0},{t:"Total",w:13,eur:!0},{t:"En esta factura",w:14}],filas),setExportando("")}catch(e){setExportando(String(e&&e.message||e))}}return __gh(Pagina,{titulo:`Desglose \xB7 ${factura.numero}`,sub:factura.periodo?`Liquidaci\xF3n de ${fmtLarga(factura.periodo.desde)} a ${fmtLarga(factura.periodo.hasta)}`:fmtLarga(factura.fecha),onVolver,accion:d2.datos&&d2.datos.liquidaciones.length?__gh("span",{style:{display:"inline-flex",flexDirection:"column",alignItems:"flex-end",gap:4},"data-gufi-src":"portal/desglose.tsx:123"},__gh("button",{className:"p-btn",onClick:exportar2,disabled:exportando==="\u2026","data-gufi-src":"portal/desglose.tsx:124"},__gh(import_lucide_react29.Download,{size:15}),exportando==="\u2026"?"Preparando\u2026":"Desglose en Excel"),exportando&&exportando!=="\u2026"?__gh("span",{style:{fontSize:12,color:B.red,maxWidth:240,textAlign:"right"},"data-gufi-src":"portal/desglose.tsx:125"},exportando):null):null},d2.error?__gh(Vacio2,{titulo:"No se ha podido leer el desglose",texto:d2.error}):d2.cargando?__gh("div",{style:{padding:50,display:"flex",justifyContent:"center"},"data-gufi-src":"portal/desglose.tsx:129"},__gh(import_lucide_react29.Loader2,{className:"animate-spin",style:{color:B.accent}})):d2.datos.sin_liquidacion?__gh(Vacio2,{titulo:"Esta factura no sale de una liquidaci\xF3n",texto:"Es una factura suelta (una obra, una gesti\xF3n\u2026): su detalle es el propio PDF."}):__gh(__gf,null,__gh("div",{className:"p-kv","data-gufi-src":"portal/desglose.tsx:133"},__gh("span",{"data-gufi-src":"portal/desglose.tsx:133"},"Base imponible"),__gh("span",{"data-gufi-src":"portal/desglose.tsx:133"},money2(d2.datos.factura.base))),__gh("div",{className:"p-kv","data-gufi-src":"portal/desglose.tsx:134"},__gh("span",{"data-gufi-src":"portal/desglose.tsx:134"},"IVA"),__gh("span",{"data-gufi-src":"portal/desglose.tsx:134"},money2(d2.datos.factura.iva))),__gh("div",{className:"p-kv","data-gufi-src":"portal/desglose.tsx:135"},__gh("span",{"data-gufi-src":"portal/desglose.tsx:135"},"Total"),__gh("span",{style:{fontWeight:600},"data-gufi-src":"portal/desglose.tsx:135"},money2(d2.datos.factura.total))),d2.datos.liquidaciones.map(l=>__gh("div",{key:l.id,style:{marginTop:22},"data-gufi-src":"portal/desglose.tsx:137"},d2.datos.liquidaciones.length>1?__gh("div",{style:{fontSize:15,fontWeight:600,color:B.ink},"data-gufi-src":"portal/desglose.tsx:138"},nombrePiso(l)):null,__gh("div",{style:{marginTop:6,padding:"12px 14px",borderRadius:14,background:"#f7f7f8",fontSize:13,color:B.muted,lineHeight:1.55},"data-gufi-src":"portal/desglose.tsx:139"},__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/desglose.tsx:140"},"Actividad liquidada:")," ",num(l.actividad.estancias)," estancias y ",num(l.actividad.noches)," noches entre el ",fmtLarga(l.desde)," y el ",fmtLarga(l.hasta),".",l.actividad.noches?__gh(__gf,null," Esta factura sale a ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/desglose.tsx:141"},porNoche(d2.datos.factura.base,l.actividad.noches))," de base por noche."):null),__gh(Resumen2,{liquidacion:l,base:d2.datos.factura.base}),l.notas.map((n,k)=>__gh("div",{key:k,style:{marginTop:10,padding:"12px 14px",borderRadius:14,background:"rgba(180,83,9,.06)",border:"1px solid rgba(180,83,9,.18)",fontSize:12.5,color:"#7c4a0f",lineHeight:1.55,whiteSpace:"pre-line"},"data-gufi-src":"portal/desglose.tsx:145"},__gh("b",{"data-gufi-src":"portal/desglose.tsx:146"},"Nota de ",marca().nombre,":")," ",n)),l.secciones.map((s,k)=>__gh(Seccion,{key:k,s,noches:l.actividad.noches}))))))}var import_react31=__toESM(require("react")),import_lucide_react30=require("lucide-react");var AEAT={aceptada:{grupo:"enviadas",t:"Enviada a la AEAT",c:B.green,Icono:import_lucide_react30.ShieldCheck},aceptada_con_errores:{grupo:"enviadas",t:"Aceptada con avisos",c:B.amber,Icono:import_lucide_react30.ShieldCheck},pendiente:{grupo:"pendientes",t:"Pendiente de env\xEDo",c:B.amber,Icono:import_lucide_react30.Clock},preparado:{grupo:"pendientes",t:"Pendiente de env\xEDo",c:B.amber,Icono:import_lucide_react30.Clock},enviado:{grupo:"pendientes",t:"Pendiente de env\xEDo",c:B.amber,Icono:import_lucide_react30.Clock},en_duda:{grupo:"pendientes",t:"Comprobando con la AEAT",c:B.amber,Icono:import_lucide_react30.Clock},rechazada:{grupo:"rechazadas",t:"Rechazada",c:B.red,Icono:import_lucide_react30.AlertTriangle},error:{grupo:"rechazadas",t:"Error en el env\xEDo",c:B.red,Icono:import_lucide_react30.AlertTriangle},no_aplica:{grupo:"sin_envio",t:"Sellada, sin env\xEDo",c:B.muted,Icono:import_lucide_react30.Shield}},SIN_SELLAR={grupo:"sin_envio",t:"Sin sellar",c:B.amber,Icono:import_lucide_react30.Shield},SELLADA_SIN_REGISTRO={grupo:"sin_envio",t:"Sellada, sin env\xEDo",c:B.muted,Icono:import_lucide_react30.Shield};function aeatDe(f){return f.sellada?f.remision_estado==null?SELLADA_SIN_REGISTRO:AEAT[f.remision_estado]||{grupo:"otro",t:String(f.remision_estado),c:B.muted,Icono:import_lucide_react30.Shield}:SIN_SELLAR}var FILTROS_AEAT=[{k:"todas",t:"Todas",c:void 0},{k:"enviadas",t:"Enviadas",c:B.green},{k:"pendientes",t:"Pendientes",c:B.amber},{k:"rechazadas",t:"Rechazadas",c:B.red},{k:"sin_envio",t:"Sin env\xEDo",c:void 0},{k:"otro",t:"Otro estado",c:void 0}];function contarAeat(lista){let n={enviadas:0,pendientes:0,rechazadas:0,sin_envio:0,otro:0,primera:""};return lista.forEach(f=>{let g=aeatDe(f).grupo;n[g]+=1,g==="enviadas"&&(!n.primera||f.fecha80?`${m.slice(0,79)}\u2026`:m}function Verifactu({f}){let a=aeatDe(f),Icono=a.Icono,conMotivo=!!f.remision_respuesta&&(a.grupo==="rechazadas"||f.remision_estado==="aceptada_con_errores"),cotejo=a.grupo==="enviadas"&&f.verifactu_qr?f.verifactu_qr:"";return __gh("span",{style:{display:"inline-flex",flexDirection:"column",gap:1,maxWidth:240},"data-gufi-src":"portal/facturas_huesped.tsx:91"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:5,fontSize:12.5,fontWeight:600,color:a.c},title:conMotivo?f.remision_respuesta:void 0,"data-gufi-src":"portal/facturas_huesped.tsx:92"},__gh(Icono,{size:13}),a.t),f.remision_csv||cotejo?cotejo?__gh("a",{href:cotejo,target:"_blank",rel:"noopener noreferrer",style:{fontSize:11.5,color:B.accent,textDecoration:"underline",textUnderlineOffset:2},title:"Abrir el cotejo de esta factura en la web de la AEAT","data-gufi-src":"portal/facturas_huesped.tsx:98"},f.remision_csv?`CSV ${f.remision_csv}`:"Ver en la AEAT"):__gh("span",{style:{fontSize:11.5,color:B.sub},"data-gufi-src":"portal/facturas_huesped.tsx:100"},"CSV ",f.remision_csv):null,conMotivo?__gh("span",{style:{fontSize:11.5,color:a.c,whiteSpace:"normal",lineHeight:1.35},title:f.remision_respuesta,"data-gufi-src":"portal/facturas_huesped.tsx:102"},motivoCorto(f.remision_respuesta)):null,f.sellada?__gh("span",{style:{fontSize:11.5,color:B.faint},title:`Huella ${f.huella}\u2026`,"data-gufi-src":"portal/facturas_huesped.tsx:103"},"huella ",f.huella,"\u2026"):null)}function BotonPdf({api,token,f}){let[estado,setEstado]=(0,import_react31.useState)("");async function bajar(){setEstado("\u2026");try{let r=await api("portal_factura_pdf",{token,facturaId:f.id});descargarPdfBase64(r.pdf,r.filename),setEstado("")}catch(e){setEstado(String(e&&e.message||e))}}return f.estado==="revision"?__gh("span",{style:{fontSize:12,color:B.amber},title:f.aviso||"","data-gufi-src":"portal/facturas_huesped.tsx:115"},"a revisar"):__gh("span",{style:{display:"inline-flex",flexDirection:"column",alignItems:"flex-end"},"data-gufi-src":"portal/facturas_huesped.tsx:117"},__gh("button",{className:"p-btn p-btn-s",onClick:bajar,disabled:estado==="\u2026","data-gufi-src":"portal/facturas_huesped.tsx:118"},estado==="\u2026"?__gh(import_lucide_react30.Loader2,{size:13,className:"animate-spin"}):__gh(import_lucide_react30.Download,{size:13}),"PDF"),estado&&estado!=="\u2026"?__gh("span",{style:{fontSize:11.5,color:B.red,maxWidth:200,textAlign:"right",whiteSpace:"normal"},"data-gufi-src":"portal/facturas_huesped.tsx:121"},estado):null)}function Automatico({series,verifactu,aeat}){let activas=(series||[]).filter(s=>s.activa);if(!activas.length)return null;let auto=activas.filter(s=>s.auto_emitir&&s.auto_desde),on=auto.length===activas.length,remite=verifactu&&verifactu.modo==="verifactu",firmado=!!(verifactu&&verifactu.mandato&&verifactu.mandato.estado==="firmado");return __gh("div",{className:"p-card",style:{padding:"14px 18px",display:"flex",gap:12,alignItems:"flex-start"},"data-gufi-src":"portal/facturas_huesped.tsx:140"},__gh(import_lucide_react30.BadgeCheck,{size:18,style:{color:on?B.green:B.amber,flexShrink:0,marginTop:1}}),__gh("div",{style:{fontSize:13,color:B.sub,lineHeight:1.6},"data-gufi-src":"portal/facturas_huesped.tsx:142"},on?__gh(__gf,null,__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:145"},"Las facturas se emiten solas.")," Cada noche se facturan las estancias que ya han entrado y no tienen factura, en la serie ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:146"},auto.map(x=>x.prefijo||x.serie).join(" \xB7 "))," ","y desde el ",fmtDate(auto[0].auto_desde),"."):__gh(__gf,null,__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:151"},"La emisi\xF3n autom\xE1tica no est\xE1 puesta")," en la serie"," ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:152"},activas.filter(x=>!(x.auto_emitir&&x.auto_desde)).map(x=>x.prefijo||x.serie).join(" \xB7 ")),": esas facturas hay que emitirlas a mano."),verifactu&&verifactu.nif?__gh("div",{style:{marginTop:6,color:B.muted},"data-gufi-src":"portal/facturas_huesped.tsx:157"},"Emite ",__gh("b",{style:{color:B.sub},"data-gufi-src":"portal/facturas_huesped.tsx:158"},verifactu.razon_social)," (",verifactu.nif,")."," ",remite?firmado?aeat.enviadas?__gh(__gf,null,"Desde el ",fmtLarga(aeat.primera),", cada factura se sella con huella encadenada y ",__gh("b",{style:{color:B.sub},"data-gufi-src":"portal/facturas_huesped.tsx:167"},"se env\xEDa a la Agencia Tributaria"),"."):__gh(__gf,null,"Cada factura se sella con huella encadenada para enviarse a la Agencia Tributaria, pero ",__gh("b",{style:{color:B.sub},"data-gufi-src":"portal/facturas_huesped.tsx:168"},"todav\xEDa no ha salido ninguna"),"."):__gh(__gf,null,"Cada factura se sella con huella encadenada, pero ",__gh("b",{style:{color:B.sub},"data-gufi-src":"portal/facturas_huesped.tsx:165"},"todav\xEDa no se env\xEDa a la Agencia Tributaria"),": falta que ",verifactu.razon_social," firme el mandato de representaci\xF3n. Hasta que est\xE9 firmado no sale ninguna factura."):__gh(__gf,null,"Cada factura se sella con huella encadenada y se conserva; ",__gh("b",{style:{color:B.sub},"data-gufi-src":"portal/facturas_huesped.tsx:163"},"no se manda nada a la AEAT")," (modo \xABsolo facturar\xBB)."),remite?__gh("div",{style:{marginTop:4},"data-gufi-src":"portal/facturas_huesped.tsx:170"},"Ante la AEAT: ",__gh("b",{style:{color:aeat.enviadas?B.green:B.sub},"data-gufi-src":"portal/facturas_huesped.tsx:171"},num(aeat.enviadas)," ",aeat.enviadas===1?"enviada":"enviadas")," \xB7 ",__gh("b",{style:{color:aeat.pendientes?B.amber:B.sub},"data-gufi-src":"portal/facturas_huesped.tsx:172"},num(aeat.pendientes)," ",aeat.pendientes===1?"pendiente":"pendientes")," \xB7 ",__gh("b",{style:{color:aeat.rechazadas?B.red:B.sub},"data-gufi-src":"portal/facturas_huesped.tsx:173"},num(aeat.rechazadas)," ",aeat.rechazadas===1?"rechazada":"rechazadas")," \xB7 ",num(aeat.sin_envio)," sin env\xEDo",aeat.otro?__gh(__gf,null," \xB7 ",__gh("b",{style:{color:B.sub},"data-gufi-src":"portal/facturas_huesped.tsx:174"},num(aeat.otro)," en otro estado")):null,"."):null):null))}function incidenciaDe(f){let resp=String(f.remision_respuesta||""),codigo=(resp.match(/\[(\d{4})\]/)||[])[1]||"",detalle=resp.replace(/^.*?\[\d{4}\]\s*/,"").replace(/;?\s*envío de \d+ registros?\s*$/,"");return f.remision_estado==="rechazada"?`Rechazada por Hacienda${codigo?` (${codigo})`:""}: ${detalle}`:f.remision_estado==="error"?"No lleg\xF3 a Hacienda: se reintenta sola cada hora":f.remision_estado==="aceptada_con_errores"&&codigo!=="2001"?`Aceptada con aviso ${codigo}: ${detalle}`:(f.remision_estado==="aceptada"||f.remision_estado==="aceptada_con_errores")&&f.tipo==="completa"&&f.tipo_aeat==="F2"?"En el papel es completa y Hacienda la tiene como simplificada: revisa el documento del hu\xE9sped":""}function Incidencias({lista,onVer}){return __gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/facturas_huesped.tsx:206"},__gh("div",{style:{display:"flex",gap:12,alignItems:"flex-start",padding:"14px 18px",borderBottom:`1px solid ${B.hair}`},"data-gufi-src":"portal/facturas_huesped.tsx:207"},__gh(import_lucide_react30.AlertTriangle,{size:18,style:{color:B.red,flexShrink:0,marginTop:1}}),__gh("div",{style:{fontSize:13,color:B.sub,lineHeight:1.6,flex:1},"data-gufi-src":"portal/facturas_huesped.tsx:209"},__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:210"},lista.length===1?"Una factura no est\xE1 como debe en Hacienda":`${num(lista.length)} facturas no est\xE1n como deben en Hacienda`),". Pulsa una para verla en la lista.")),__gh("div",{style:{maxHeight:260,overflowY:"auto"},"data-gufi-src":"portal/facturas_huesped.tsx:213"},lista.map(({f,motivo:motivo2})=>__gh("button",{key:f.id,onClick:()=>onVer(f.numero_completo),className:"b-press",style:{display:"flex",gap:12,alignItems:"center",width:"100%",padding:"10px 18px",border:"none",borderBottom:"1px solid #f0f0f2",background:"transparent",textAlign:"left",cursor:"pointer",font:"inherit",fontSize:13},"data-gufi-src":"portal/facturas_huesped.tsx:215"},__gh("span",{style:{flex:1,minWidth:0},"data-gufi-src":"portal/facturas_huesped.tsx:217"},__gh("span",{style:{display:"block",overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap",color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:218"},__gh("span",{className:"b-num","data-gufi-src":"portal/facturas_huesped.tsx:219"},f.numero_completo)," ",f.destinatario_nombre||f.nombres_huespedes||""," ",__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/facturas_huesped.tsx:219"},"\xB7 ",fmtLarga(f.fecha))),__gh("span",{style:{display:"flex",alignItems:"center",gap:6,color:B.muted,fontSize:12,marginTop:2},"data-gufi-src":"portal/facturas_huesped.tsx:221"},__gh("span",{style:{width:6,height:6,borderRadius:3,background:B.red,flexShrink:0},"data-gufi-src":"portal/facturas_huesped.tsx:222"}),motivo2)),__gh("span",{className:"b-num",style:{color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:225"},money2(f.total))))))}var PAISES2=(()=>{let nombre=new Intl.DisplayNames(["es"],{type:"region"});return"AF AL DE AD AO AI AQ AG SA DZ AR AM AW AU AT AZ BS BH BD BB BE BZ BJ BM BY BO BA BW BV BR BN BG BF BI BT CV KY KH CM CA CF CC CO KM CG CD CK KP KR CI CR HR CU TD CZ CL CN CY CW DK DM DO EC EG AE ER SK SI ES US EE ET FO PH FI FJ FR GA GM GE GS GH GI GD GR GL GU GT GG GN GQ GW GY HT HM HN HK HU IN ID IR IQ IE IM IS IL IT JM JP JE JO KZ KE KG KI KW LA LS LV LB LR LY LI LT LU MO MK MG MY MW MV ML MT FK MP MA MH MU MR YT UM MX FM MD MC MN ME MS MZ MM NA NR CX NP NI NE NG NU NF NO NC NZ IO OM NL BQ PK PW PA PG PY PE PN PF PL PT PR QA GB RW RO RU RE SB SV WS AS KN SM SX PM VC SH LC ST SN RS SC SL SG SY SO LK SZ ZA SD SS SE CH SR TH TW TZ TJ PS TF TL TG TK TO TT TN TC TM TR TV UA UG UY UZ VU VA VE VN VG VI WF YE DJ ZM ZW".split(" ").map(c=>({c,n:nombre.of(c)})).filter(x=>x.n&&x.n!==x.c).sort((a,b)=>a.c==="ES"?-1:b.c==="ES"?1:a.n.localeCompare(b.n,"es"))})(),TIPOS_DOC=[["nif","DNI o NIE (Espa\xF1a)"],["pasaporte","Pasaporte"],["documento_identidad","Documento de identidad de otro pa\xEDs"],["otro","Otro documento"]],INPUT={border:`1px solid ${B.hair}`,borderRadius:10,padding:"8px 10px",fontSize:13.5,color:B.ink,background:"#fff",outline:"none",font:"inherit",width:"100%",boxSizing:"border-box"},Campo4=({l,ancho,children})=>__gh("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:12,color:B.muted,gridColumn:ancho?"1 / -1":void 0},"data-gufi-src":"portal/facturas_huesped.tsx:262"},l,children);function CompletarHuesped({api,token,p,onHecho}){let[estado,setEstado]=(0,import_react31.useState)("cargando"),[faltan,setFaltan]=(0,import_react31.useState)([]),[yaVale,setYaVale]=(0,import_react31.useState)(!1),[err,setErr]=(0,import_react31.useState)(""),[hecha,setHecha]=(0,import_react31.useState)(""),[d2,setD]=(0,import_react31.useState)({nombre:"",tipo:"pasaporte",documento:"",pais:"",direccion:""}),pon=k=>e=>setD(x=>({...x,[k]:e.target.value}));(0,import_react31.useEffect)(()=>{let vivo=!0;return api("portal_factura_emitir",{token,reservaId:p.reserva,solo_comprobar:!0}).then(r=>{if(!vivo)return;if(r&&r.ok){setYaVale(!0),setEstado("listo");return}if(r&&r.motivo==="YA_FACTURADA"){setHecha((r.facturas||[]).join(", ")),setEstado("hecho");return}let x=r&&r.datos||{};setFaltan(r&&r.faltan||[]),setD({nombre:x.nombre||p.huesped||"",tipo:x.tipo||"pasaporte",documento:x.documento||"",pais:x.pais||"",direccion:x.direccion||""}),setEstado("listo")}).catch(ex=>{vivo&&(setErr(String(ex&&ex.message||ex)),setEstado("listo"))}),()=>{vivo=!1}},[p.reserva]);async function facturar(modo){setEstado("guardando"),setErr("");try{let r=await api("portal_factura_emitir",modo==="datos"?{token,reservaId:p.reserva,destinatario_nombre:d2.nombre,destinatario_tipo_documento:d2.tipo,destinatario_nif:d2.documento,destinatario_pais_documento:d2.tipo==="nif"?"ES":d2.pais,destinatario_direccion:d2.direccion}:{token,reservaId:p.reserva});if(r&&r.ok&&r.factura){setHecha(r.factura.numero_completo),setEstado("hecho"),onHecho();return}setErr(r&&r.mensaje||"No se pudo emitir la factura"),setEstado("listo")}catch(ex){setErr(String(ex&&ex.message||ex)),setEstado("listo")}}let caja2={padding:"12px 18px 16px",background:"#fafafb",borderBottom:"1px solid #f0f0f2",fontSize:13},boton2=(texto,onClick)=>__gh("button",{onClick,disabled:estado==="guardando",className:"p-pill b-press",style:{cursor:"pointer",color:B.accent,fontWeight:600,display:"inline-flex",alignItems:"center",gap:6},"data-gufi-src":"portal/facturas_huesped.tsx:306"},estado==="guardando"?__gh(import_lucide_react30.Loader2,{size:13,className:"animate-spin"}):null,texto),error=err?__gh("div",{style:{color:B.red,fontSize:12.5,marginTop:8},"data-gufi-src":"portal/facturas_huesped.tsx:311"},err):null;return estado==="cargando"?__gh("div",{style:caja2,"data-gufi-src":"portal/facturas_huesped.tsx:313"},__gh(import_lucide_react30.Loader2,{size:14,className:"animate-spin",style:{color:B.accent}})):estado==="hecho"?__gh("div",{style:{...caja2,display:"flex",alignItems:"center",gap:8,color:B.sub},"data-gufi-src":"portal/facturas_huesped.tsx:316"},__gh("span",{style:{width:6,height:6,borderRadius:3,background:B.green,flexShrink:0},"data-gufi-src":"portal/facturas_huesped.tsx:317"}),"Factura ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:318"},hecha)," emitida. Se manda a Hacienda en el momento."):yaVale?__gh("div",{style:caja2,"data-gufi-src":"portal/facturas_huesped.tsx:324"},__gh("div",{style:{color:B.sub,marginBottom:10},"data-gufi-src":"portal/facturas_huesped.tsx:325"},"Esta estancia ya tiene todos los datos del hu\xE9sped: se factura sola esta noche. Si la necesitas ya, puedes emitirla ahora."),boton2("Emitir factura ahora",()=>facturar("ya")),error):__gh("div",{style:caja2,"data-gufi-src":"portal/facturas_huesped.tsx:332"},__gh("div",{style:{fontSize:12,color:B.muted,marginBottom:10},"data-gufi-src":"portal/facturas_huesped.tsx:333"},faltan.length?`Falta: ${faltan.join(", ")}. `:"","Escribe los datos tal como vienen en el documento del hu\xE9sped."),__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(190px, 1fr))",gap:10},"data-gufi-src":"portal/facturas_huesped.tsx:336"},__gh(Campo4,{l:"Nombre y apellidos"},__gh("input",{value:d2.nombre,onChange:pon("nombre"),style:INPUT,"data-gufi-src":"portal/facturas_huesped.tsx:337"})),__gh(Campo4,{l:"Tipo de documento"},__gh("select",{value:d2.tipo,onChange:pon("tipo"),style:INPUT,"data-gufi-src":"portal/facturas_huesped.tsx:339"},TIPOS_DOC.map(([v,t2])=>__gh("option",{key:v,value:v,"data-gufi-src":"portal/facturas_huesped.tsx:340"},t2)))),__gh(Campo4,{l:"N\xFAmero del documento"},__gh("input",{value:d2.documento,onChange:e=>setD(x=>({...x,documento:e.target.value.toUpperCase()})),style:INPUT,"data-gufi-src":"portal/facturas_huesped.tsx:344"})),d2.tipo!=="nif"?__gh(Campo4,{l:"Pa\xEDs que lo expide"},__gh("select",{value:d2.pais,onChange:pon("pais"),style:INPUT,"data-gufi-src":"portal/facturas_huesped.tsx:348"},__gh("option",{value:"","data-gufi-src":"portal/facturas_huesped.tsx:349"},"Elige el pa\xEDs\u2026"),PAISES2.map(x=>__gh("option",{key:x.c,value:x.c,"data-gufi-src":"portal/facturas_huesped.tsx:350"},x.n)))):null,__gh(Campo4,{l:"Direcci\xF3n (calle, c\xF3digo postal y ciudad)",ancho:!0},__gh("input",{value:d2.direccion,onChange:pon("direccion"),style:INPUT,"data-gufi-src":"portal/facturas_huesped.tsx:354"}))),error,__gh("div",{style:{display:"flex",flexWrap:"wrap",gap:10,marginTop:12,alignItems:"center"},"data-gufi-src":"portal/facturas_huesped.tsx:357"},boton2("Emitir factura",()=>facturar("datos")),__gh("span",{style:{fontSize:12,color:B.faint},"data-gufi-src":"portal/facturas_huesped.tsx:359"},"Sale con fecha de hoy y el importe de la reserva, y se manda a Hacienda.")))}function NoVino({api,token,p,onHecho,onCancelar}){let[estado,setEstado]=(0,import_react31.useState)("listo"),[err,setErr]=(0,import_react31.useState)(""),[hecha,setHecha]=(0,import_react31.useState)("");async function emitir(){setEstado("guardando"),setErr("");try{let r=await api("portal_factura_emitir",{token,reservaId:p.reserva,no_vino:!0});if(r&&r.ok&&r.factura){setHecha(r.factura.numero_completo),setEstado("hecho"),onHecho();return}setErr(r&&r.mensaje||"No se pudo emitir la factura"),setEstado("listo")}catch(ex){setErr(String(ex&&ex.message||ex)),setEstado("listo")}}let caja2={padding:"12px 18px 16px",background:"#fafafb",borderBottom:"1px solid #f0f0f2",fontSize:13};return estado==="hecho"?__gh("div",{style:{...caja2,display:"flex",alignItems:"center",gap:8,color:B.sub},"data-gufi-src":"portal/facturas_huesped.tsx:385"},__gh("span",{style:{width:6,height:6,borderRadius:3,background:B.green,flexShrink:0},"data-gufi-src":"portal/facturas_huesped.tsx:386"}),"Factura simplificada ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:387"},hecha)," emitida. Se manda a Hacienda en el momento."):__gh("div",{style:caja2,"data-gufi-src":"portal/facturas_huesped.tsx:392"},__gh("div",{style:{color:B.sub,marginBottom:10},"data-gufi-src":"portal/facturas_huesped.tsx:393"},"Si el hu\xE9sped no vino y pag\xF3 la reserva, se emite una factura simplificada de ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:394"},money2(p.importe)),", sin sus datos y con fecha de hoy, y se manda a Hacienda. Una factura emitida ya no se borra."),__gh("div",{style:{display:"flex",flexWrap:"wrap",gap:10,alignItems:"center"},"data-gufi-src":"portal/facturas_huesped.tsx:396"},__gh("button",{onClick:emitir,disabled:estado==="guardando",className:"p-pill b-press",style:{cursor:"pointer",color:B.accent,fontWeight:600,display:"inline-flex",alignItems:"center",gap:6},"data-gufi-src":"portal/facturas_huesped.tsx:397"},estado==="guardando"?__gh(import_lucide_react30.Loader2,{size:13,className:"animate-spin"}):null,"Emitir simplificada"),__gh("button",{onClick:onCancelar,disabled:estado==="guardando",className:"b-press",style:{border:"none",background:"transparent",color:B.muted,fontSize:12.5,cursor:"pointer",padding:0},"data-gufi-src":"portal/facturas_huesped.tsx:401"},"Cancelar")),err?__gh("div",{style:{color:B.red,fontSize:12.5,marginTop:8},"data-gufi-src":"portal/facturas_huesped.tsx:404"},err):null)}function Pendientes({pend,arranque,api,token,recargar}){let lista=pend.lista||[],[abierta,setAbierta]=(0,import_react31.useState)(""),[modo,setModo]=(0,import_react31.useState)(""),abrir=(codigo,m)=>{let cerrar=abierta===codigo&&modo===m;setAbierta(cerrar?"":codigo),setModo(cerrar?"":m)};return __gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/facturas_huesped.tsx:424"},__gh("div",{style:{display:"flex",gap:12,alignItems:"flex-start",padding:"14px 18px",borderBottom:`1px solid ${B.hair}`},"data-gufi-src":"portal/facturas_huesped.tsx:425"},__gh(import_lucide_react30.AlertTriangle,{size:18,style:{color:B.amber,flexShrink:0,marginTop:1}}),__gh("div",{style:{fontSize:13,color:B.sub,lineHeight:1.6,flex:1},"data-gufi-src":"portal/facturas_huesped.tsx:427"},__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:428"},"Quedan ",num(pend.estancias)," estancias sin factura")," desde el inicio de la actividad",arranque?` (${fmtLarga(arranque)})`:"",", por ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:429"},money2(pend.importe)),". La m\xE1s antigua entr\xF3 el ",fmtLarga(pend.mas_antigua),". Se cuentan por estancia: una reserva de varias camas lleva una factura.",pend.hoy?__gh("div",{style:{color:B.muted,marginTop:4},"data-gufi-src":"portal/facturas_huesped.tsx:431"},pend.hoy===1?`La que entra hoy (${money2(pend.hoy_importe)}) se factura sola esta noche si ya tiene los datos del hu\xE9sped.`:`Las ${num(pend.hoy)} que entran hoy (${money2(pend.hoy_importe)}) se facturan solas esta noche las que ya tengan los datos del hu\xE9sped.`):null,__gh("div",{style:{color:B.muted,marginTop:4},"data-gufi-src":"portal/facturas_huesped.tsx:432"},"Todas las facturas son completas, con el nombre, el documento y la direcci\xF3n del hu\xE9sped, as\xED que sin esos datos no se emiten.",pend.sin_datos?` ${pend.sin_datos===1?"Una espera":`${num(pend.sin_datos)} esperan`} a que el hu\xE9sped haga el check-in online o a que recepci\xF3n complete sus datos en Hostify: la factura sale sola la noche en que llegan.`:"",pend.no_vale?` ${pend.no_vale===1?"Una tiene":`${num(pend.no_vale)} tienen`} los datos, pero con un documento que no vale (por ejemplo, la letra del DNI o del NIE).`:""),__gh("div",{style:{color:B.muted,marginTop:4},"data-gufi-src":"portal/facturas_huesped.tsx:437"},"Si recepci\xF3n tiene los datos del hu\xE9sped, pulsa \xABCompletar y facturar\xBB en su estancia: la factura sale al momento, con el importe de la reserva. Si el hu\xE9sped no vino y pag\xF3, pulsa \xABNo vino\xBB en su estancia: sale como factura simplificada, sin sus datos."))),__gh("div",{style:{maxHeight:abierta?"none":260,overflowY:"auto"},"data-gufi-src":"portal/facturas_huesped.tsx:443"},lista.map(p=>__gh(import_react31.default.Fragment,{key:p.codigo},__gh("div",{style:{display:"flex",flexWrap:"wrap",gap:12,alignItems:"center",padding:"10px 18px",borderBottom:"1px solid #f0f0f2",fontSize:13},"data-gufi-src":"portal/facturas_huesped.tsx:446"},__gh("span",{style:{flex:1,minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},"data-gufi-src":"portal/facturas_huesped.tsx:447"},p.huesped||p.codigo," ",__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/facturas_huesped.tsx:448"},"\xB7 ",fmtLarga(p.entrada)," \u2192 ",fmtLarga(p.salida)," \xB7 ",num(p.camas)," ",p.camas===1?"cama":"camas"," \xB7 ",p.canal)),p.sin_datos||p.no_vale||p.sale_esta_noche?__gh("span",{title:p.no_vale?`Falta ${p.no_vale}`:void 0,style:{display:"inline-flex",alignItems:"center",gap:6,color:B.muted,fontSize:12,whiteSpace:"nowrap",maxWidth:"45%",overflow:"hidden",textOverflow:"ellipsis"},"data-gufi-src":"portal/facturas_huesped.tsx:452"},__gh("span",{style:{width:6,height:6,borderRadius:3,background:p.sale_esta_noche?B.green:p.no_vale?B.red:B.amber,flexShrink:0},"data-gufi-src":"portal/facturas_huesped.tsx:454"}),p.sale_esta_noche?"sale esta noche":p.no_vale?`falta ${p.no_vale}`:"faltan datos del hu\xE9sped"):null,__gh("span",{className:"b-num",style:{color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:458"},money2(p.importe)),p.sale_esta_noche?null:__gh("button",{onClick:()=>abrir(p.codigo,"no_vino"),className:"p-pill b-press",style:{cursor:"pointer",color:B.accent,fontWeight:600,fontSize:12.5,display:"inline-flex",alignItems:"center",gap:6,whiteSpace:"nowrap"},"data-gufi-src":"portal/facturas_huesped.tsx:461"},__gh(import_lucide_react30.UserX,{size:14}),abierta===p.codigo&&modo==="no_vino"?"Cerrar":"No vino"),__gh("button",{onClick:()=>abrir(p.codigo,"datos"),className:"b-press",style:{border:"none",background:"transparent",color:B.accent,fontWeight:600,fontSize:12.5,cursor:"pointer",padding:0,whiteSpace:"nowrap"},"data-gufi-src":"portal/facturas_huesped.tsx:466"},abierta===p.codigo&&modo==="datos"?"Cerrar":"Completar y facturar")),abierta===p.codigo?modo==="no_vino"?__gh(NoVino,{api,token,p,onHecho:recargar,onCancelar:()=>abrir(p.codigo,"no_vino")}):__gh(CompletarHuesped,{api,token,p,onHecho:recargar}):null))))}function FacturasHuesped({api,token,periodo,ownerName,datos,recargar}){let movil=useIsMobile(900),[q,setQ]=(0,import_react31.useState)(""),[soloPeriodo,setSoloPeriodo]=(0,import_react31.useState)(!0),[aeat,setAeat]=(0,import_react31.useState)("todas"),[exportando,setExportando]=(0,import_react31.useState)(""),norm=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),vistas=(0,import_react31.useMemo)(()=>{let todas=datos&&datos.facturas||[],n=norm(q);return todas.filter(f=>soloPeriodo&&!(f.fecha>=periodo.desde&&f.fechaString(b.fecha).localeCompare(String(a.fecha))||b.numero-a.numero)},[datos,q,soloPeriodo,periodo]),porEstado=(0,import_react31.useMemo)(()=>contarAeat(vistas),[vistas]),facturas=(0,import_react31.useMemo)(()=>aeat==="todas"?vistas:vistas.filter(f=>aeatDe(f).grupo===aeat),[vistas,aeat]),aeatTodas=(0,import_react31.useMemo)(()=>contarAeat(datos&&datos.facturas||[]),[datos]),tot=(0,import_react31.useMemo)(()=>facturas.reduce((t2,f)=>({base:t2.base+(f.estado==="anulada"?0:f.base||0),iva:t2.iva+(f.estado==="anulada"?0:f.iva||0),total:t2.total+(f.estado==="anulada"?0:f.total||0),enviadas:t2.enviadas+(aeatDe(f).grupo==="enviadas"?1:0)}),{base:0,iva:0,total:0,enviadas:0}),[facturas]),filtroAeat=FILTROS_AEAT.find(x=>x.k===aeat);async function exportar2(){setExportando("\u2026");try{await exportarTabla(`Facturas_a_huespedes_${limpioArchivo(soloPeriodo?periodoTexto(periodo.desde,periodo.hasta):"todas")}.xlsx`,"Facturas",`Tus facturas a hu\xE9spedes \xB7 ${ownerName||""}`,`${num(facturas.length)} facturas \xB7 base ${money2(tot.base)} \xB7 IVA ${money2(tot.iva)} \xB7 total ${money2(tot.total)}`,[{t:"N\xBA",w:14},{t:"Fecha",w:12,fecha:!0},{t:"Serie",w:8},{t:"Estado",w:11},{t:"Tipo",w:13},{t:"No vino",w:9},{t:"Destinatario",w:30},{t:"NIF",w:13},{t:"Entrada",w:12,fecha:!0},{t:"Salida",w:12,fecha:!0},{t:"Noches",w:8,n:!0},{t:"Hu\xE9spedes",w:10,n:!0},{t:"Base",w:12,eur:!0},{t:"IVA %",w:8,n:!0},{t:"IVA",w:11,eur:!0},{t:"Total",w:12,eur:!0},{t:"Reserva",w:18},{t:"Huella",w:16},{t:"Ante la AEAT",w:22},{t:"CSV AEAT",w:22}],facturas.map(f=>[f.numero_completo,f.fecha,f.serie,f.estado||"emitida",f.tipo||"",f.no_vino?"S\xED":"",f.destinatario_nombre||"",f.destinatario_nif||"",f.check_in,f.check_out,f.noches,f.huespedes,f.base,f.iva_pct,f.iva,f.total,f.confirmation_code||"",f.sellada?f.huella:"",aeatDe(f).t,f.remision_csv||""])),setExportando("")}catch(e){setExportando(String(e&&e.message||e))}}let pend=datos.pendientes,incidencias=(0,import_react31.useMemo)(()=>(datos&&datos.facturas||[]).map(f=>({f,motivo:incidenciaDe(f)})).filter(x=>x.motivo),[datos]),verFactura=numero=>{setQ(numero),setAeat("todas"),setSoloPeriodo(!1)};return __gh("div",{className:"p-grid","data-gufi-src":"portal/facturas_huesped.tsx:539"},__gh(Automatico,{series:datos.series,verifactu:datos.verifactu,aeat:aeatTodas}),incidencias.length?__gh(Incidencias,{lista:incidencias,onVer:verFactura}):null,pend&&pend.estancias?__gh(Pendientes,{pend,arranque:datos.arranque,api,token,recargar}):null,__gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/facturas_huesped.tsx:548"},__gh("div",{className:"p-stats","data-gufi-src":"portal/facturas_huesped.tsx:549"},__gh(Cifra2,{l:"Facturas",v:num(facturas.length),s:`${soloPeriodo?periodoTexto(periodo.desde,periodo.hasta):"todas"}${aeat!=="todas"?` \xB7 ${filtroAeat.t.toLowerCase()}`:""}`}),__gh(Cifra2,{l:"Base imponible",v:money2(tot.base)}),__gh(Cifra2,{l:"IVA",v:money2(tot.iva)}),__gh(Cifra2,{l:"Total",v:money2(tot.total),s:`${num(tot.enviadas)} ${tot.enviadas===1?"enviada":"enviadas"} a la AEAT`}))),__gh("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8},"data-gufi-src":"portal/facturas_huesped.tsx:557"},__gh(FChip,{active:soloPeriodo,onClick:()=>setSoloPeriodo(!0)},periodoTexto(periodo.desde,periodo.hasta)),__gh(FChip,{active:!soloPeriodo,onClick:()=>setSoloPeriodo(!1)},"Todas (",num((datos.facturas||[]).length),")"),__gh("label",{className:"p-pill",style:{cursor:"text",minWidth:200,flex:movil?"1 1 100%":"0 1 240px"},"data-gufi-src":"portal/facturas_huesped.tsx:560"},__gh(import_lucide_react30.Search,{size:15,style:{color:B.faint}}),__gh("input",{value:q,onChange:e=>setQ(e.target.value),placeholder:"N\xBA de factura, hu\xE9sped o reserva",style:{border:"none",outline:"none",background:"transparent",fontSize:13.5,flex:1,minWidth:0,color:B.ink},"data-gufi-src":"portal/facturas_huesped.tsx:562"})),movil?null:__gh("span",{style:{width:1,height:22,background:B.hair,margin:"0 4px"},"data-gufi-src":"portal/facturas_huesped.tsx:565"}),__gh("span",{style:{fontSize:12.5,color:B.muted},"data-gufi-src":"portal/facturas_huesped.tsx:566"},"AEAT"),FILTROS_AEAT.filter(x=>x.k!=="otro"||porEstado.otro||aeat==="otro").map(x=>__gh(FChip,{key:x.k,active:aeat===x.k,color:x.c,onClick:()=>setAeat(x.k)},x.t,x.k==="todas"?"":` (${num(porEstado[x.k])})`)),__gh("button",{className:"p-btn",style:{marginLeft:"auto"},onClick:exportar2,disabled:exportando==="\u2026"||!facturas.length,"data-gufi-src":"portal/facturas_huesped.tsx:572"},__gh(import_lucide_react30.Download,{size:15}),exportando==="\u2026"?"Preparando\u2026":"Excel")),exportando&&exportando!=="\u2026"?__gh("div",{className:"p-note",style:{color:B.red},"data-gufi-src":"portal/facturas_huesped.tsx:576"},exportando):null,__gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/facturas_huesped.tsx:578"},facturas.length?__gh("div",{style:{overflowX:"auto",maxHeight:640},"data-gufi-src":"portal/facturas_huesped.tsx:580"},__gh("table",{className:"p-table",style:{minWidth:900},"data-gufi-src":"portal/facturas_huesped.tsx:581"},__gh("thead",{"data-gufi-src":"portal/facturas_huesped.tsx:582"},__gh("tr",{"data-gufi-src":"portal/facturas_huesped.tsx:582"},__gh("th",{"data-gufi-src":"portal/facturas_huesped.tsx:583"},"N\xBA"),__gh("th",{"data-gufi-src":"portal/facturas_huesped.tsx:583"},"Fecha"),__gh("th",{"data-gufi-src":"portal/facturas_huesped.tsx:583"},"Hu\xE9sped"),__gh("th",{"data-gufi-src":"portal/facturas_huesped.tsx:583"},"Estancia"),__gh("th",{"data-r":"1","data-gufi-src":"portal/facturas_huesped.tsx:584"},"Base"),__gh("th",{"data-r":"1","data-gufi-src":"portal/facturas_huesped.tsx:584"},"IVA"),__gh("th",{"data-r":"1","data-gufi-src":"portal/facturas_huesped.tsx:584"},"Total"),__gh("th",{"data-gufi-src":"portal/facturas_huesped.tsx:584"},"VERI*FACTU"),__gh("th",{"data-gufi-src":"portal/facturas_huesped.tsx:584"}))),__gh("tbody",{"data-gufi-src":"portal/facturas_huesped.tsx:586"},facturas.slice(0,400).map(f=>__gh("tr",{key:f.id,"data-gufi-src":"portal/facturas_huesped.tsx:588"},__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/facturas_huesped.tsx:589"},f.numero_completo,f.estado==="anulada"?__gh("span",{className:"b-pill",style:{marginLeft:6,padding:"2px 7px",color:B.red,background:"rgba(220,38,38,.08)"},"data-gufi-src":"portal/facturas_huesped.tsx:589"},"anulada"):null,f.no_vino?__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:5,marginLeft:8,fontSize:12,color:B.ink,whiteSpace:"nowrap"},"data-gufi-src":"portal/facturas_huesped.tsx:592"},__gh(import_lucide_react30.UserX,{size:13,style:{color:B.amber}}),"No vino"):null),__gh("td",{"data-gufi-src":"portal/facturas_huesped.tsx:597"},fmtLarga(f.fecha)),__gh("td",{style:{maxWidth:220,overflow:"hidden",textOverflow:"ellipsis"},"data-gufi-src":"portal/facturas_huesped.tsx:598"},f.destinatario_nombre||f.nombres_huespedes||f.estancia_huesped||__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/facturas_huesped.tsx:598"},"\u2014")),__gh("td",{style:{color:B.muted,fontSize:12.5},"data-gufi-src":"portal/facturas_huesped.tsx:599"},f.check_in?`${fmtLarga(f.check_in)} \u2192 ${fmtLarga(f.check_out)}`:f.concepto||"",f.noches?` \xB7 ${num(f.noches)} n`:""),__gh("td",{"data-r":"1","data-gufi-src":"portal/facturas_huesped.tsx:600"},money2(f.base)),__gh("td",{"data-r":"1","data-gufi-src":"portal/facturas_huesped.tsx:601"},money2(f.iva)),__gh("td",{"data-r":"1",style:{fontWeight:600},"data-gufi-src":"portal/facturas_huesped.tsx:602"},money2(f.total)),__gh("td",{"data-gufi-src":"portal/facturas_huesped.tsx:603"},__gh(Verifactu,{f})),__gh("td",{"data-r":"1","data-gufi-src":"portal/facturas_huesped.tsx:604"},__gh(BotonPdf,{api,token,f})))))),facturas.length>400?__gh("div",{className:"p-note",style:{padding:14,justifyContent:"center"},"data-gufi-src":"portal/facturas_huesped.tsx:609"},"Se ven las 400 primeras de ",num(facturas.length),". El Excel las lleva todas."):null):__gh(Vacio2,{titulo:"Ninguna factura",texto:aeat!=="todas"?`Ninguna en \xAB${filtroAeat.t}\xBB con estos filtros. Prueba con otro estado ante la AEAT, con \xABTodas\xBB o con otro texto de b\xFAsqueda.`:"Prueba con \xABTodas\xBB o con otro texto de b\xFAsqueda."})))}var import_react32=require("react"),import_lucide_react31=require("lucide-react");var TRIM=["","1T","2T","3T","4T"],periodoDe=(fecha,modo)=>{if(modo==="mes")return fecha.slice(0,7);let q=Math.floor((Number(fecha.slice(5,7))-1)/3);return`${fecha.slice(0,4)}-T${q}`},etiquetaPeriodo=(k,modo)=>modo==="mes"?mesLabel(k):`${TRIM[Number(k.slice(6))+1]} ${k.slice(0,4)}`;function Libro({facData,ownerName,onVerPendientes,onVerCobros}){let movil=useIsMobile(),[modo,setModo]=(0,import_react32.useState)("mes"),[exportando,setExportando]=(0,import_react32.useState)(""),facturas=facData&&facData.facturas||[],pend=facData&&facData.pendientes,arranque=facData&&facData.arranque,periodos=(0,import_react32.useMemo)(()=>{let m={};return facturas.forEach(f=>{if(!f.fecha)return;let k=periodoDe(f.fecha,modo);m[k]||(m[k]={k,n:0,base:0,iva:0,total:0,anuladas:0,revision:0,rectificativas:0,series:new Set});let g=m[k];if(g.series.add(f.serie),f.estado==="anulada"){g.anuladas++;return}f.estado==="revision"&&g.revision++,(f.tipo==="rectificativa"||Number(f.total)<0)&&g.rectificativas++,g.n++,g.base+=Number(f.base)||0,g.iva+=Number(f.iva)||0,g.total+=Number(f.total)||0}),Object.values(m).map(g=>({...g,series:Array.from(g.series).sort().join(" \xB7 ")})).sort((a,b)=>b.k.localeCompare(a.k))},[facturas,modo]),tot=(0,import_react32.useMemo)(()=>periodos.reduce((a,g)=>({n:a.n+g.n,base:a.base+g.base,iva:a.iva+g.iva,total:a.total+g.total,anuladas:a.anuladas+g.anuladas,revision:a.revision+g.revision,rectificativas:a.rectificativas+g.rectificativas}),{n:0,base:0,iva:0,total:0,anuladas:0,revision:0,rectificativas:0}),[periodos]);async function exportar2(){setExportando("\u2026");try{let nombre=String(ownerName||"propietario").normalize("NFD").replace(/[^\w]+/g,"_").replace(/^_+|_+$/g,""),sub=`${ownerName||""} \xB7 ${modo==="mes"?"por meses":"por trimestres"}${arranque?` \xB7 actividad desde el ${fmtDate(arranque)}`:""}`;await exportarHojas(`Libro_facturas_${nombre}.xlsx`,[{hoja:"Resumen",titulo:"Libro de facturas emitidas",sub,columnas:[{t:"Periodo",w:18},{t:"Series",w:14},{t:"Facturas",w:10,n:!0},{t:"Base",w:14,eur:!0},{t:"IVA",w:13,eur:!0},{t:"Total",w:14,eur:!0},{t:"Rectificativas",w:14,n:!0},{t:"Anuladas",w:10,n:!0},{t:"En revisi\xF3n",w:12,n:!0}],filas:periodos.slice().reverse().map(g=>[etiquetaPeriodo(g.k,modo),g.series,g.n,g.base,g.iva,g.total,g.rectificativas,g.anuladas,g.revision]).concat([["TOTAL","",tot.n,tot.base,tot.iva,tot.total,tot.rectificativas,tot.anuladas,tot.revision]])},{hoja:"Facturas",titulo:"Detalle factura a factura",sub,columnas:[{t:"N\xBA",w:14},{t:"Fecha",w:12,fecha:!0},{t:"Serie",w:8},{t:"Estado",w:11},{t:"Tipo",w:13},{t:"Destinatario",w:30},{t:"NIF",w:13},{t:"Entrada",w:12,fecha:!0},{t:"Salida",w:12,fecha:!0},{t:"Noches",w:8,n:!0},{t:"Base",w:12,eur:!0},{t:"IVA",w:11,eur:!0},{t:"Total",w:12,eur:!0},{t:"Reserva",w:18}],filas:facturas.slice().sort((x,y)=>String(x.fecha).localeCompare(String(y.fecha))||x.numero-y.numero).map(f=>[f.numero_completo,f.fecha,f.serie,f.estado||"emitida",f.tipo||"",f.destinatario_nombre||"",f.destinatario_nif||"",f.check_in,f.check_out,f.noches,f.base,f.iva,f.total,f.confirmation_code||""])}]),setExportando("")}catch(e){setExportando(String(e&&e.message||e))}}return facturas.length?__gh("div",{className:"b-fade","data-gufi-src":"portal/libro.tsx:89"},pend&&pend.estancias?__gh("div",{className:"rounded-2xl px-4 py-3.5 mb-5 flex items-start gap-3",style:{background:`${B.amber}0f`,border:`1px solid ${B.amber}44`},"data-gufi-src":"portal/libro.tsx:91"},__gh(import_lucide_react31.AlertTriangle,{size:17,style:{color:B.amber,flexShrink:0,marginTop:1}}),__gh("div",{className:"text-[12.5px] flex-1",style:{color:B.sub,lineHeight:1.55},"data-gufi-src":"portal/libro.tsx:93"},__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/libro.tsx:94"},"Quedan ",num(pend.estancias)," estancias sin factura")," desde el inicio de la actividad",arranque?` (${fmtDate(arranque)})`:"",", por ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/libro.tsx:95"},money2(pend.importe)),". La m\xE1s antigua entr\xF3 el ",fmtDate(pend.mas_antigua),". Se cuentan por estancia, no por cama: una reserva de varias camas lleva una sola factura.",onVerPendientes?__gh(__gf,null," ",__gh("button",{onClick:onVerPendientes,className:"font-semibold",style:{color:B.accent,background:"transparent",border:"none",cursor:"pointer",padding:0},"data-gufi-src":"portal/libro.tsx:99"},"Ver cu\xE1les son \u2192")):null)):__gh("div",{className:"rounded-2xl px-4 py-3.5 mb-5 flex items-start gap-3",style:{background:`${B.green}0d`,border:`1px solid ${B.green}44`},"data-gufi-src":"portal/libro.tsx:104"},__gh(import_lucide_react31.CheckCircle2,{size:17,style:{color:B.green,flexShrink:0,marginTop:1}}),__gh("div",{className:"text-[12.5px]",style:{color:B.sub,lineHeight:1.55},"data-gufi-src":"portal/libro.tsx:106"},__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/libro.tsx:107"},"No queda nada por facturar")," desde el inicio de la actividad",arranque?` (${fmtDate(arranque)})`:"",". Todas las estancias que entraron antes de hoy tienen su factura.")),pend&&pend.hoy?__gh("div",{className:"text-[12.5px] mb-5",style:{color:B.muted,lineHeight:1.55,marginTop:-8},"data-gufi-src":"portal/libro.tsx:114"},"Las ",num(pend.hoy)," estancias que entran hoy (",money2(pend.hoy_importe),") se facturan solas esta noche."):null,onVerCobros?__gh("div",{className:"text-[12.5px] mb-6",style:{color:B.muted},"data-gufi-src":"portal/libro.tsx:119"},"D\xF3nde est\xE1 el dinero de lo facturado \u2014canal, TPV, otros medios y lo pendiente\u2014 est\xE1 en"," ",__gh("button",{onClick:onVerCobros,className:"font-semibold",style:{color:B.accent,background:"transparent",border:"none",cursor:"pointer",padding:0},"data-gufi-src":"portal/libro.tsx:121"},"Cobros \u2192")):null,__gh(Bloque3,{titulo:"Libro de facturas emitidas",sub:"lo que se le pasa al asesor",icono:import_lucide_react31.FileText}),__gh("div",{className:"flex flex-wrap items-center gap-2.5 mb-4","data-gufi-src":"portal/libro.tsx:126"},__gh("div",{className:"b-seg","data-gufi-src":"portal/libro.tsx:127"},[["mes","Por meses"],["trim","Por trimestres"]].map(([k,l])=>__gh("button",{key:k,"data-on":modo===k?"1":"0",onClick:()=>setModo(k),"data-gufi-src":"portal/libro.tsx:129"},l))),__gh("span",{style:{flex:1},"data-gufi-src":"portal/libro.tsx:132"}),__gh("button",{onClick:exportar2,disabled:exportando==="\u2026",className:"b-press flex items-center gap-1.5 rounded-lg px-3.5 py-2.5 text-[13px] font-semibold",style:{background:"#fff",border:`1px solid ${B.hair}`,color:B.muted,cursor:"pointer"},"data-gufi-src":"portal/libro.tsx:133"},__gh(import_lucide_react31.Download,{size:15})," ",exportando==="\u2026"?"Preparando\u2026":"Bajar el libro en Excel")),__gh("div",{className:"b-card overflow-hidden","data-gufi-src":"portal/libro.tsx:139"},movil?__gh("div",{className:"p-4","data-gufi-src":"portal/libro.tsx:141"},periodos.map(g=>__gh("div",{key:g.k,className:"b-row","data-gufi-src":"portal/libro.tsx:143"},__gh("div",{className:"flex items-baseline justify-between gap-3 mb-2","data-gufi-src":"portal/libro.tsx:144"},__gh("span",{className:"text-[14px] font-semibold",style:{color:B.ink},"data-gufi-src":"portal/libro.tsx:145"},etiquetaPeriodo(g.k,modo)),__gh("span",{className:"text-[15px] font-semibold b-num",style:{color:B.accent},"data-gufi-src":"portal/libro.tsx:146"},money2(g.total))),__gh("div",{className:"b-kv","data-gufi-src":"portal/libro.tsx:148"},__gh("span",{"data-gufi-src":"portal/libro.tsx:148"},"Facturas"),__gh("span",{"data-gufi-src":"portal/libro.tsx:148"},num(g.n))),__gh("div",{className:"b-kv","data-gufi-src":"portal/libro.tsx:149"},__gh("span",{"data-gufi-src":"portal/libro.tsx:149"},"Base"),__gh("span",{"data-gufi-src":"portal/libro.tsx:149"},money2(g.base))),__gh("div",{className:"b-kv","data-gufi-src":"portal/libro.tsx:150"},__gh("span",{"data-gufi-src":"portal/libro.tsx:150"},"IVA"),__gh("span",{"data-gufi-src":"portal/libro.tsx:150"},money2(g.iva))),__gh("div",{className:"b-kv","data-gufi-src":"portal/libro.tsx:151"},__gh("span",{"data-gufi-src":"portal/libro.tsx:151"},"Series"),__gh("span",{"data-gufi-src":"portal/libro.tsx:151"},g.series)),__gh("div",{className:"b-kv","data-gufi-src":"portal/libro.tsx:152"},__gh("span",{"data-gufi-src":"portal/libro.tsx:152"},"Rectificativas"),__gh("span",{"data-gufi-src":"portal/libro.tsx:152"},num(g.rectificativas))),g.anuladas?__gh("div",{className:"b-kv","data-gufi-src":"portal/libro.tsx:153"},__gh("span",{"data-gufi-src":"portal/libro.tsx:153"},"Anuladas"),__gh("span",{style:{color:B.red},"data-gufi-src":"portal/libro.tsx:153"},num(g.anuladas))):null,g.revision?__gh("div",{className:"b-kv","data-gufi-src":"portal/libro.tsx:154"},__gh("span",{"data-gufi-src":"portal/libro.tsx:154"},"En revisi\xF3n"),__gh("span",{style:{color:B.amber},"data-gufi-src":"portal/libro.tsx:154"},num(g.revision))):null)),__gh("div",{className:"b-row",style:{background:B.accentSoft},"data-gufi-src":"portal/libro.tsx:157"},__gh("div",{className:"b-kv","data-gufi-src":"portal/libro.tsx:158"},__gh("span",{"data-gufi-src":"portal/libro.tsx:158"},"Total facturas"),__gh("span",{"data-gufi-src":"portal/libro.tsx:158"},num(tot.n))),__gh("div",{className:"b-kv","data-gufi-src":"portal/libro.tsx:159"},__gh("span",{"data-gufi-src":"portal/libro.tsx:159"},"Base"),__gh("span",{"data-gufi-src":"portal/libro.tsx:159"},money2(tot.base))),__gh("div",{className:"b-kv","data-gufi-src":"portal/libro.tsx:160"},__gh("span",{"data-gufi-src":"portal/libro.tsx:160"},"IVA"),__gh("span",{"data-gufi-src":"portal/libro.tsx:160"},money2(tot.iva))),__gh("div",{className:"b-kv","data-gufi-src":"portal/libro.tsx:161"},__gh("span",{"data-gufi-src":"portal/libro.tsx:161"},"Total"),__gh("span",{style:{color:B.accent},"data-gufi-src":"portal/libro.tsx:161"},money2(tot.total))))):__gh(TableWrap,{min:900},__gh("thead",{"data-gufi-src":"portal/libro.tsx:166"},__gh("tr",{"data-gufi-src":"portal/libro.tsx:166"},__gh(Th,null,"Periodo"),__gh(Th,null,"Series"),__gh(Th,{r:!0},"Facturas"),__gh(Th,{r:!0},"Base"),__gh(Th,{r:!0},"IVA"),__gh(Th,{r:!0},"Total"),__gh(Th,{r:!0},"Rectificativas"),__gh(Th,{r:!0},"Anuladas"),__gh(Th,{r:!0},"En revisi\xF3n"))),__gh("tbody",{"data-gufi-src":"portal/libro.tsx:167"},periodos.map(g=>__gh("tr",{key:g.k,"data-gufi-src":"portal/libro.tsx:169"},__gh(Td,{b:!0},etiquetaPeriodo(g.k,modo)),__gh(Td,null,__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/libro.tsx:171"},g.series)),__gh(Td,{r:!0},num(g.n)),__gh(Td,{r:!0},money2(g.base)),__gh(Td,{r:!0},money2(g.iva)),__gh(Td,{r:!0,b:!0},money2(g.total)),__gh(Td,{r:!0},g.rectificativas?num(g.rectificativas):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/libro.tsx:176"},"0")),__gh(Td,{r:!0},g.anuladas?__gh("span",{style:{color:B.red},"data-gufi-src":"portal/libro.tsx:177"},num(g.anuladas)):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/libro.tsx:177"},"\u2014")),__gh(Td,{r:!0},g.revision?__gh("span",{style:{color:B.amber},"data-gufi-src":"portal/libro.tsx:178"},num(g.revision)):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/libro.tsx:178"},"\u2014")))),__gh("tr",{"data-gufi-src":"portal/libro.tsx:181"},__gh(Td,{b:!0},"Total"),__gh(Td,null),__gh(Td,{r:!0,b:!0},num(tot.n)),__gh(Td,{r:!0,b:!0},money2(tot.base)),__gh(Td,{r:!0,b:!0},money2(tot.iva)),__gh(Td,{r:!0,b:!0},__gh("span",{style:{color:B.accent},"data-gufi-src":"portal/libro.tsx:186"},money2(tot.total))),__gh(Td,{r:!0,b:!0},num(tot.rectificativas)),__gh(Td,{r:!0,b:!0},tot.anuladas?num(tot.anuladas):"\u2014"),__gh(Td,{r:!0,b:!0},tot.revision?num(tot.revision):"\u2014"))))),__gh("div",{className:"text-[12.5px] mt-3",style:{color:B.muted,lineHeight:1.6},"data-gufi-src":"portal/libro.tsx:195"},exportando&&exportando!=="\u2026"?__gh("div",{style:{color:B.red},"data-gufi-src":"portal/libro.tsx:196"},exportando):null,"El Excel lleva dos hojas: el resumen por periodo (con rectificativas, anuladas y en revisi\xF3n) y el detalle factura a factura con su n\xFAmero, fecha, serie, destinatario, NIF, base, IVA, total y la reserva de la que sale.",tot.anuladas?" Las anuladas se listan pero no suman a las bases: el n\xFAmero est\xE1 gastado, el importe no es ingreso.":"")):__gh("div",{className:"b-card","data-gufi-src":"portal/libro.tsx:86"},__gh(Empty,{text:"Todav\xEDa no hay facturas emitidas."}))}function BotonPdf2({api,token,f,detalle}){let[estado,setEstado]=(0,import_react33.useState)("");async function bajar(ev){ev.stopPropagation(),setEstado("\u2026");try{let r=await api("portal_factura_odoo_pdf",{token,facturaId:f.id,detalle:!!detalle});descargarPdfBase64(r.pdf,r.filename),setEstado("")}catch(e){setEstado(String(e&&e.message||e))}}let hay=detalle?f.detalle:f.pdf;return __gh("span",{style:{display:"inline-flex",flexDirection:"column",alignItems:"flex-end"},"data-gufi-src":"portal/facturas.tsx:30"},__gh("button",{className:"p-btn p-btn-s",disabled:!hay||estado==="\u2026",onClick:bajar,title:hay?"":detalle?"Esta factura no lleva detalle de reservas":"Odoo a\xFAn no ha generado el PDF","data-gufi-src":"portal/facturas.tsx:31"},estado==="\u2026"?__gh(import_lucide_react32.Loader2,{size:13,className:"animate-spin"}):__gh(import_lucide_react32.FileText,{size:13}),detalle?"Detalle":"Factura"),estado&&estado!=="\u2026"?__gh("span",{style:{fontSize:11.5,color:B.red,maxWidth:220,textAlign:"right",marginTop:3,whiteSpace:"normal"},"data-gufi-src":"portal/facturas.tsx:34"},estado):null)}var pestanas=()=>[["empresa",`De ${marca().nombre}`],["mias","A tus hu\xE9spedes"],["libro","Libro e IVA"]],Pestanas=({valor,elegir})=>__gh("div",{className:"p-seg",style:{alignSelf:"flex-start"},"data-gufi-src":"portal/facturas.tsx:42"},pestanas().map(([k,l])=>__gh("button",{key:k,"data-on":valor===k?"1":"0",onClick:()=>elegir(k),"data-gufi-src":"portal/facturas.tsx:43"},l)));function Match({api,token,inicio,titular:titular2,periodo,nombreTitular}){let candidatos=titular2?inicio.titulares.filter(t2=>String(t2.id)===String(titular2)):inicio.titulares,[elegido,setElegido]=(0,import_react33.useState)(candidatos.length===1?String(candidatos[0].id):""),[abierto,setAbierto]=(0,import_react33.useState)(!1),[estado,setEstado]=(0,import_react33.useState)({ocupado:!1,error:"",hecho:""}),quien2=candidatos.length===1?String(candidatos[0].id):elegido,etiqueta4=periodoTexto(periodo.desde,periodo.hasta);async function bajar(){setEstado({ocupado:!0,error:"",hecho:""});try{let d2=await api("portal_match",{token,titular:Number(quien2)}),r=await exportarMatch(d2,periodo.desde,periodo.hasta,etiqueta4);setEstado({ocupado:!1,error:"",hecho:`${num(r.reservas)} reservas, ${num(r.cobradas)} ya cobradas \xB7 ${money2(r.total)} en banco`})}catch(e){setEstado({ocupado:!1,error:String(e&&e.message||e),hecho:""})}}return __gh("div",{className:"p-card",style:{padding:20,display:"flex",gap:18,alignItems:"center",flexWrap:"wrap"},"data-gufi-src":"portal/facturas.tsx:63"},__gh("div",{style:{width:44,height:44,borderRadius:13,background:"rgba(21,128,61,.09)",display:"flex",alignItems:"center",justifyContent:"center",flexShrink:0},"data-gufi-src":"portal/facturas.tsx:64"},__gh(import_lucide_react32.FileSpreadsheet,{size:21,style:{color:B.green}})),__gh("div",{style:{flex:"1 1 260px",minWidth:0},"data-gufi-src":"portal/facturas.tsx:65"},__gh("div",{style:{fontSize:15.5,fontWeight:600,color:B.ink,letterSpacing:"-.2px"},"data-gufi-src":"portal/facturas.tsx:66"},"MATCH de ",etiqueta4.toLowerCase().startsWith("a\xF1o")?etiqueta4.toLowerCase():etiqueta4),__gh("div",{style:{fontSize:13,color:B.muted,marginTop:3,lineHeight:1.45},"data-gufi-src":"portal/facturas.tsx:67"},"Cada reserva junto al pago que entr\xF3 en el banco, en Excel. Es el mismo fichero que prepara ",marca().nombre,"."),estado.hecho?__gh("div",{style:{fontSize:12.5,color:B.green,marginTop:6},"data-gufi-src":"portal/facturas.tsx:68"},"Descargado \xB7 ",estado.hecho):null,estado.error?__gh("div",{style:{fontSize:12.5,color:B.red,marginTop:6},"data-gufi-src":"portal/facturas.tsx:69"},estado.error):null),__gh("div",{style:{display:"flex",gap:8,alignItems:"center",flexWrap:"wrap"},"data-gufi-src":"portal/facturas.tsx:71"},candidatos.length>1?__gh(Desplegable2,{abierto,setAbierto,derecha:!0,boton:__gh(Pildora,{etiqueta:"De",valor:elegido?nombreTitular[elegido]:"Elige titular",activa:abierto||!!elegido,onClick:()=>setAbierto(!abierto)})},__gh(ListaBuscable,{opciones:candidatos.map(t2=>({v:String(t2.id),t:t2.nombre,g:t2.empresa?"Empresas":"Personas"})).sort((a,b)=>a.g.localeCompare(b.g)),valor:elegido,placeholder:"Buscar titular",onElegir:v=>{setElegido(v),setAbierto(!1)}})):null,__gh("button",{className:"p-btn p-btn-a",disabled:!quien2||estado.ocupado,onClick:bajar,"data-gufi-src":"portal/facturas.tsx:78"},estado.ocupado?__gh(__gf,null,__gh(import_lucide_react32.Loader2,{size:15,className:"animate-spin"}),"Preparando"):__gh(__gf,null,__gh(import_lucide_react32.Download,{size:15}),"Descargar MATCH"))))}function Facturas({api,token,inicio,filtros,titular:titular2,periodo,propPorId,nombreTitular,facturaAbierta,abrirFactura,volver}){let propias=!!inicio.cuenta.factura_clientes,[pestana,setPestana]=(0,import_react33.useState)("empresa"),[version,setVersion]=(0,import_react33.useState)(0),mias=useScript(api,"portal_facturas",{token,version},propias),hastaConMargen=primeroMesSiguiente(primeroMesSiguiente(periodo.hasta.slice(0,7)).slice(0,7)),f=useScript(api,"portal_facturas_odoo",{token,...filtros,desde:periodo.desde,hasta:hastaConMargen},!0),[exportando,setExportando]=(0,import_react33.useState)(!1),facturas=(0,import_react33.useMemo)(()=>f.datos?f.datos.facturas.filter(x=>{let k=x.periodo?x.periodo.desde:x.fecha;return k>=periodo.desde&&kfacturas.reduce((t2,x)=>({base:t2.base+x.base,iva:t2.iva+x.iva,total:t2.total+x.total}),{base:0,iva:0,total:0}),[facturas]),grupos=(0,import_react33.useMemo)(()=>{let m={};return facturas.forEach(x=>{let k=(x.periodo?x.periodo.desde:x.fecha).slice(0,7);(m[k]=m[k]||[]).push(x)}),Object.keys(m).sort().reverse().map(k=>({mes:k,facturas:m[k]}))},[facturas]),varios=inicio.titulares.length>1,[errorExport,setErrorExport]=(0,import_react33.useState)("");async function exportar2(){setExportando(!0),setErrorExport("");try{await exportarTabla(`Facturas_${limpioArchivo(periodoTexto(periodo.desde,periodo.hasta))}.xlsx`,"Facturas",`Facturas de ${marca().nombre} \xB7 ${periodoTexto(periodo.desde,periodo.hasta)}`,`${num(facturas.length)} facturas`,[{t:"N\xBA factura",w:22},{t:"Fecha",w:12,fecha:!0},{t:"Tipo",w:13},{t:"Periodo liquidado",w:18},{t:"Propiedades",w:40},{t:"Titular",w:30},{t:"Emitida por",w:28},{t:"Base imponible",w:15,eur:!0},{t:"IVA",w:12,eur:!0},{t:"Total",w:14,eur:!0}],facturas.map(x=>[x.numero,x.fecha,x.rectificativa?"Rectificativa":"Factura",x.periodo?mesLabel(x.periodo.desde.slice(0,7)):"",x.propiedades.map(p=>(propPorId[p]||{}).nombre).filter(Boolean).join(" \xB7 ")||x.concepto||"",x.titular?nombreTitular[x.titular.id]||x.titular.nombre:"",x.emisor||"",x.base,x.iva,x.total]))}catch(e){setErrorExport(String(e&&e.message||e))}setExportando(!1)}if(propias&&pestana!=="empresa")return __gh("div",{className:"p-grid","data-gufi-src":"portal/facturas.tsx:124"},__gh(Pestanas,{valor:pestana,elegir:setPestana}),mias.error?__gh("div",{className:"p-card","data-gufi-src":"portal/facturas.tsx:126"},__gh(Vacio2,{titulo:"No se han podido leer tus facturas",texto:mias.error})):mias.cargando||!mias.datos?__gh("div",{className:"p-card",style:{padding:70,display:"flex",justifyContent:"center"},"data-gufi-src":"portal/facturas.tsx:127"},__gh(import_lucide_react32.Loader2,{className:"animate-spin",style:{color:B.accent}})):pestana==="mias"?__gh(FacturasHuesped,{api,token,periodo,ownerName:inicio.cuenta.nombre,datos:mias.datos,recargar:()=>setVersion(v=>v+1)}):__gh(Libro,{facData:mias.datos,ownerName:inicio.cuenta.nombre,onVerPendientes:()=>setPestana("mias")}));if(facturaAbierta){if(f.error)return __gh("div",{className:"p-grid","data-gufi-src":"portal/facturas.tsx:140"},__gh("div",{className:"p-card","data-gufi-src":"portal/facturas.tsx:140"},__gh(Vacio2,{titulo:"No se han podido cargar las facturas",texto:f.error})));if(f.cargando||!f.datos)return __gh("div",{className:"p-grid","data-gufi-src":"portal/facturas.tsx:141"},__gh("div",{className:"p-card",style:{padding:70,display:"flex",justifyContent:"center"},"data-gufi-src":"portal/facturas.tsx:141"},__gh(import_lucide_react32.Loader2,{className:"animate-spin",style:{color:B.accent}})));let abierta=facturas.find(x=>String(x.id)===String(facturaAbierta));return abierta?__gh("div",{className:"p-grid","data-gufi-src":"portal/facturas.tsx:155"},__gh(Desglose,{api,token,factura:abierta,nombrePiso:l=>(propPorId[l.apartamento]||{}).nombre||l.piso,onVolver:volver})):__gh("div",{className:"p-grid","data-gufi-src":"portal/facturas.tsx:145"},__gh(Pagina,{titulo:"Esa factura no es de este periodo",onVolver:volver},__gh("div",{className:"p-note",style:{padding:"10px 0"},"data-gufi-src":"portal/facturas.tsx:147"},"No aparece entre las de ",periodoTexto(periodo.desde,periodo.hasta).toLowerCase(),". Vuelve, cambia el periodo de arriba y \xE1brela otra vez.")))}return __gh("div",{className:"p-grid","data-gufi-src":"portal/facturas.tsx:162"},propias?__gh(Pestanas,{valor:pestana,elegir:setPestana}):null,__gh(Match,{api,token,inicio,titular:titular2,periodo,nombreTitular}),f.error?__gh("div",{className:"p-card","data-gufi-src":"portal/facturas.tsx:165"},__gh(Vacio2,{titulo:"No se han podido cargar las facturas",texto:f.error})):f.cargando?__gh("div",{className:"p-card",style:{padding:70,display:"flex",justifyContent:"center"},"data-gufi-src":"portal/facturas.tsx:166"},__gh(import_lucide_react32.Loader2,{className:"animate-spin",style:{color:B.accent}})):facturas.length?__gh(__gf,null,__gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/facturas.tsx:170"},__gh("div",{className:"p-stats","data-gufi-src":"portal/facturas.tsx:171"},__gh(Cifra2,{l:"Facturas",v:num(facturas.length),s:periodoTexto(periodo.desde,periodo.hasta)}),__gh(Cifra2,{l:"Base imponible",v:money2(tot.base)}),__gh(Cifra2,{l:"IVA",v:money2(tot.iva)}),__gh(Cifra2,{l:"Total",v:money2(tot.total)}))),__gh("div",{style:{display:"flex",justifyContent:"flex-end",marginTop:-4},"data-gufi-src":"portal/facturas.tsx:178"},__gh("button",{className:"p-btn",onClick:exportar2,disabled:exportando,"data-gufi-src":"portal/facturas.tsx:179"},__gh(import_lucide_react32.Download,{size:15}),exportando?"Preparando\u2026":"Lista en Excel")),errorExport?__gh("div",{className:"p-note",style:{color:B.red,justifyContent:"flex-end"},"data-gufi-src":"portal/facturas.tsx:181"},errorExport):null,grupos.map(g=>__gh("div",{key:g.mes,className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/facturas.tsx:183"},__gh("div",{style:{padding:"14px 20px",borderBottom:`1px solid ${B.hair}`,display:"flex",alignItems:"baseline",gap:10},"data-gufi-src":"portal/facturas.tsx:184"},__gh("span",{style:{fontSize:15,fontWeight:600,color:B.ink,letterSpacing:"-.2px"},"data-gufi-src":"portal/facturas.tsx:185"},mesLabel(g.mes)),__gh("span",{className:"p-note","data-gufi-src":"portal/facturas.tsx:186"},num(g.facturas.length)," factura",g.facturas.length===1?"":"s"),__gh("span",{className:"b-num",style:{marginLeft:"auto",fontSize:14,fontWeight:600},"data-gufi-src":"portal/facturas.tsx:187"},money2(g.facturas.reduce((s,x)=>s+x.total,0)))),g.facturas.map(x=>{let props=x.propiedades.map(p=>(propPorId[p]||{}).nombre).filter(Boolean);return __gh("div",{key:x.id,style:{display:"flex",alignItems:"center",gap:14,padding:"13px 20px",borderBottom:"1px solid #f0f0f2",flexWrap:"wrap"},"data-gufi-src":"portal/facturas.tsx:192"},__gh("div",{style:{flex:"1 1 300px",minWidth:0},"data-gufi-src":"portal/facturas.tsx:193"},__gh("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap"},"data-gufi-src":"portal/facturas.tsx:194"},__gh("span",{className:"b-num",style:{fontSize:14,fontWeight:600,color:B.ink,letterSpacing:"-.1px"},"data-gufi-src":"portal/facturas.tsx:195"},x.numero),x.rectificativa?__gh("span",{className:"b-pill",style:{color:B.amber,background:"rgba(180,83,9,.08)",padding:"3px 8px"},"data-gufi-src":"portal/facturas.tsx:196"},"Rectificativa"):null),__gh("div",{style:{fontSize:12.5,color:B.muted,marginTop:3,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},"data-gufi-src":"portal/facturas.tsx:198"},x.periodo?`Liquidaci\xF3n de ${mesLabel(x.periodo.desde.slice(0,7)).toLowerCase()}`:x.concepto||"Factura",props.length?` \xB7 ${props.join(", ")}`:"",x.estancias?` \xB7 ${num(x.estancias)} estancias`:"",varios&&x.titular?` \xB7 ${nombreTitular[x.titular.id]||x.titular.nombre}`:"")),__gh("div",{style:{fontSize:12.5,color:B.muted,width:92},"data-gufi-src":"portal/facturas.tsx:205"},fmtLarga(x.fecha)),__gh("div",{style:{textAlign:"right",width:130},"data-gufi-src":"portal/facturas.tsx:206"},__gh("div",{className:"b-num",style:{fontSize:14.5,fontWeight:600,color:B.ink},"data-gufi-src":"portal/facturas.tsx:207"},money2(x.total)),__gh("div",{className:"b-num",style:{fontSize:11.5,color:B.faint},"data-gufi-src":"portal/facturas.tsx:208"},"base ",money2(x.base))),__gh("div",{style:{display:"flex",gap:6,alignItems:"flex-start"},"data-gufi-src":"portal/facturas.tsx:210"},x.periodo?__gh("button",{className:"p-btn p-btn-s",onClick:()=>abrirFactura(x.id),"data-gufi-src":"portal/facturas.tsx:211"},__gh(import_lucide_react32.ListTree,{size:13}),"Desglose"):null,__gh(BotonPdf2,{api,token,f:x}),x.detalle?__gh(BotonPdf2,{api,token,f:x,detalle:!0}):null))})))):__gh("div",{className:"p-card","data-gufi-src":"portal/facturas.tsx:167"},__gh(Vacio2,{titulo:`Sin facturas de ${periodoTexto(periodo.desde,periodo.hasta).toLowerCase()}`,texto:`${marca().nombre} factura a mes vencido: la liquidaci\xF3n de un mes aparece a principios del siguiente.`})))}var import_react34=require("react"),import_lucide_react33=require("lucide-react");function Barras({filas,total,color,vacio}){let max=Math.max(1,...filas.map(f=>f.n));return!filas.length||!total?__gh("div",{className:"p-note",style:{padding:"6px 0"},"data-gufi-src":"portal/huespedes.tsx:14"},vacio):__gh("div",{"data-gufi-src":"portal/huespedes.tsx:16"},filas.map(f=>__gh("div",{key:f.t,style:{display:"grid",gridTemplateColumns:"minmax(0,150px) minmax(0,1fr) 92px",alignItems:"center",gap:12,padding:"7px 0"},"data-gufi-src":"portal/huespedes.tsx:18"},__gh("span",{style:{fontSize:13.5,color:B.ink,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},"data-gufi-src":"portal/huespedes.tsx:19"},f.t),__gh("div",{style:{height:8,borderRadius:999,background:"#f0f0f2",overflow:"hidden"},"data-gufi-src":"portal/huespedes.tsx:20"},__gh("div",{style:{width:`${f.n/max*100}%`,height:"100%",borderRadius:999,background:f.color||color},"data-gufi-src":"portal/huespedes.tsx:21"})),__gh("span",{className:"b-num",style:{fontSize:12.5,color:B.muted,textAlign:"right"},"data-gufi-src":"portal/huespedes.tsx:23"},num(f.n)," \xB7 ",pct(f.n/total*100)))))}function porReserva(estancias){let m={};return estancias.forEach(e=>{let k=e.nro||`id${e.id}`,r=m[k]||(m[k]={k,huesped:e.huesped,entrada:e.entrada,salida:e.salida,noches:0,importe:0});e.entradar.salida&&(r.salida=e.salida),r.noches=Math.max(r.noches,e.noches),r.importe+=e.facturado}),Object.values(m)}function prorrogas(reservas){let norm=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/\s+/g," ").trim(),orden=reservas.filter(r=>norm(r.huesped)).sort((a,b)=>norm(a.huesped).localeCompare(norm(b.huesped))||a.entrada.localeCompare(b.entrada)),siguen=new Set,empiezan=new Set,noches2=0;for(let i=1;i__gh("div",{className:"p-card",style:{minWidth:0},"data-gufi-src":"portal/huespedes.tsx:66"},__gh("div",{className:"p-card-h","data-gufi-src":"portal/huespedes.tsx:67"},__gh("div",{"data-gufi-src":"portal/huespedes.tsx:67"},__gh("h3",{"data-gufi-src":"portal/huespedes.tsx:67"},titulo3),sub?__gh("p",{"data-gufi-src":"portal/huespedes.tsx:67"},sub):null)),__gh("div",{style:{padding:"12px 20px 18px"},"data-gufi-src":"portal/huespedes.tsx:68"},children));function Lista2({d:d2,periodo,propPorId,abrirEstancia}){let movil=useIsMobile(900),[q,setQ]=(0,import_react34.useState)(""),[exportando,setExportando]=(0,import_react34.useState)(!1),[errorExport,setErrorExport]=(0,import_react34.useState)(""),{orden,th,flecha:flecha3}=useOrden({k:"entrada",asc:!1}),h=d2.huespedes,reales=(0,import_react34.useMemo)(()=>d2.estancias.filter(e=>!e.ajuste&&!e.solo_limpieza),[d2]),reservas=(0,import_react34.useMemo)(()=>porReserva(reales),[reales]),pr=(0,import_react34.useMemo)(()=>prorrogas(reservas),[reservas]),gastoMedio=reservas.length?reservas.reduce((s,r)=>s+r.importe,0)/reservas.length:null,norm=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),filas=(0,import_react34.useMemo)(()=>{let n=norm(q),vis=n?reales.filter(e=>norm(`${e.huesped} ${paisEs(e.pais)} ${e.nro}`).includes(n)):reales;return ordenar(vis,orden,{huesped:e=>e.huesped,pais:e=>e.pais?paisEs(e.pais):null,personas:e=>e.personas,entrada:e=>e.entrada,noches:e=>e.noches,antelacion:e=>e.antelacion,canal:e=>e.canal})},[reales,q,orden]),TOP=8,paises=h.paises.slice(0,TOP).map(p=>({t:paisEs(p.pais),n:p.n})),otros=h.paises.slice(TOP).reduce((s,p)=>s+p.n,0);otros&&paises.push({t:"Otros pa\xEDses",n:otros});let conPais=h.estancias-h.sin_pais,conEdad=h.edades.reduce((s,e)=>s+e.n,0),canales=d2.canales.map(c=>({t:c.canal,n:c.estancias,color:canalColor(c.canal)}));async function exportar2(){setExportando(!0),setErrorExport("");try{await exportarEstancias(filas,propPorId,periodo,"Hu\xE9spedes")}catch(e){setErrorExport(String(e&&e.message||e))}setExportando(!1)}return __gh("div",{className:"p-grid","data-gufi-src":"portal/huespedes.tsx:106"},__gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/huespedes.tsx:107"},__gh("div",{className:"p-stats","data-gufi-src":"portal/huespedes.tsx:108"},__gh(Cifra2,{l:"Estancias",v:num(h.estancias),s:periodoTexto(periodo.desde,periodo.hasta)}),__gh(Cifra2,{l:"Hu\xE9spedes",v:num(h.personas),s:h.grupo_medio?`${String(h.grupo_medio).replace(".",",")} por reserva de media`:"sin dato de personas"}),__gh(Cifra2,{l:"Estancia media",v:d2.totales.estancia_media==null?"\u2014":`${String(d2.totales.estancia_media).replace(".",",")} noches`}),__gh(Cifra2,{l:"Antelaci\xF3n media",v:h.antelacion_media==null?"\u2014":`${num(h.antelacion_media)} d\xEDas`,s:"entre la reserva y la llegada"}))),__gh("div",{className:"p-grid p-g-2","data-gufi-src":"portal/huespedes.tsx:116"},__gh(Tarjeta3,{titulo:"De d\xF3nde vienen",sub:`Sobre ${num(conPais)} de ${num(h.estancias)} estancias con pa\xEDs conocido`},__gh(Barras,{filas:paises,total:conPais,color:B.accent,vacio:"Ninguna estancia trae el pa\xEDs del hu\xE9sped."})),__gh(Tarjeta3,{titulo:"Edad",sub:h.viajeros?`${num(conEdad)} viajeros del registro, en ${num(h.con_registro)} de ${num(h.estancias)} estancias`:"Sale del registro de viajeros"},__gh(Barras,{filas:h.edades.map(e=>({t:e.tramo,n:e.n})),total:conEdad,color:B.gold,vacio:"Ning\xFAn viajero registrado con fecha de nacimiento en este periodo."}),h.sexo.mujeres+h.sexo.hombres?__gh("div",{style:{marginTop:14},"data-gufi-src":"portal/huespedes.tsx:123"},__gh("div",{style:{display:"flex",height:8,borderRadius:999,overflow:"hidden"},"data-gufi-src":"portal/huespedes.tsx:124"},__gh("div",{style:{width:`${h.sexo.mujeres/(h.sexo.mujeres+h.sexo.hombres)*100}%`,background:B.accent},"data-gufi-src":"portal/huespedes.tsx:125"}),__gh("div",{style:{flex:1,background:"#c9c9ce"},"data-gufi-src":"portal/huespedes.tsx:126"})),__gh("div",{style:{display:"flex",justifyContent:"space-between",fontSize:12.5,color:B.muted,marginTop:6},"data-gufi-src":"portal/huespedes.tsx:128"},__gh("span",{"data-gufi-src":"portal/huespedes.tsx:129"},"Mujeres ",pct(h.sexo.mujeres/(h.sexo.mujeres+h.sexo.hombres)*100)),__gh("span",{"data-gufi-src":"portal/huespedes.tsx:130"},"Hombres ",pct(h.sexo.hombres/(h.sexo.mujeres+h.sexo.hombres)*100)))):null),__gh(Tarjeta3,{titulo:"Con cu\xE1nta antelaci\xF3n reservan",sub:`Sobre ${num(h.antelacion.reduce((s,a)=>s+a.n,0))} estancias con la fecha de reserva`},__gh(Barras,{filas:h.antelacion.map(a=>({t:a.tramo,n:a.n})),total:h.antelacion.reduce((s,a)=>s+a.n,0),color:B.accent,vacio:"Sin fecha de reserva en estas estancias."})),__gh(Tarjeta3,{titulo:"Por qu\xE9 canal",sub:"Estancias de cada plataforma"},__gh(Barras,{filas:canales,total:h.estancias,color:B.accent,vacio:"Sin estancias."})),__gh(Tarjeta3,{titulo:"Cu\xE1nto gasta cada reserva",sub:gastoMedio==null?"Sin reservas":`${money2(gastoMedio)} de media, ${deFactura()?"lo facturado por reserva (todas sus camas)":"lo que deja cada reserva"}`},__gh(Barras,{filas:TRAMOS_IMPORTE.map(t2=>({t:t2[2],n:reservas.filter(r=>r.importe>=t2[0]&&r.importesetQ(e.target.value),placeholder:"Buscar hu\xE9sped, pa\xEDs o reserva",style:{border:"none",outline:"none",background:"transparent",fontSize:13.5,flex:1,minWidth:0,color:B.ink},"data-gufi-src":"portal/huespedes.tsx:163"})),__gh("button",{className:"p-btn",style:{marginLeft:"auto"},onClick:exportar2,disabled:exportando||!filas.length,"data-gufi-src":"portal/huespedes.tsx:165"},__gh(import_lucide_react33.Download,{size:15}),exportando?"Preparando\u2026":"Excel")),errorExport?__gh("div",{className:"p-note",style:{color:B.red},"data-gufi-src":"portal/huespedes.tsx:167"},errorExport):null,__gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/huespedes.tsx:169"},filas.length?__gh("div",{style:{overflowX:"auto",maxHeight:620},"data-gufi-src":"portal/huespedes.tsx:171"},__gh("table",{className:"p-table",style:{minWidth:860},"data-gufi-src":"portal/huespedes.tsx:172"},__gh("thead",{"data-gufi-src":"portal/huespedes.tsx:173"},__gh("tr",{"data-gufi-src":"portal/huespedes.tsx:173"},__gh("th",{...th("huesped"),"data-gufi-src":"portal/huespedes.tsx:174"},"Hu\xE9sped",flecha3("huesped")),__gh("th",{...th("pais"),"data-gufi-src":"portal/huespedes.tsx:175"},"Pa\xEDs",flecha3("pais")),__gh("th",{"data-r":"1",...th("personas"),"data-gufi-src":"portal/huespedes.tsx:176"},"Personas",flecha3("personas")),__gh("th",{...th("entrada"),"data-gufi-src":"portal/huespedes.tsx:177"},"Entrada",flecha3("entrada")),__gh("th",{"data-r":"1",...th("noches"),"data-gufi-src":"portal/huespedes.tsx:178"},"Noches",flecha3("noches")),__gh("th",{"data-r":"1",...th("antelacion"),"data-gufi-src":"portal/huespedes.tsx:179"},"Antelaci\xF3n",flecha3("antelacion")),__gh("th",{...th("canal"),"data-gufi-src":"portal/huespedes.tsx:180"},"Canal",flecha3("canal")),__gh("th",{"data-r":"1","data-gufi-src":"portal/huespedes.tsx:181"},deFactura()?"Facturado":"Importe"))),__gh("tbody",{"data-gufi-src":"portal/huespedes.tsx:183"},filas.slice(0,500).map(e=>__gh("tr",{key:e.id,className:"p-click",onClick:()=>abrirEstancia(e),"data-gufi-src":"portal/huespedes.tsx:185"},__gh("td",{style:{fontWeight:500,maxWidth:240,overflow:"hidden",textOverflow:"ellipsis"},"data-gufi-src":"portal/huespedes.tsx:186"},tituloEstancia(e),pr.siguen.has(e.nro||`id${e.id}`)?__gh("span",{className:"b-pill",style:{marginLeft:8,padding:"3px 8px",color:B.accent,background:"rgba(29,29,31,.07)"},"data-gufi-src":"portal/huespedes.tsx:188"},"pr\xF3rroga"):pr.empiezan.has(e.nro||`id${e.id}`)?__gh("span",{className:"b-pill",style:{marginLeft:8,padding:"3px 8px",color:B.muted,background:"#f2f2f4"},"data-gufi-src":"portal/huespedes.tsx:189"},"alarg\xF3"):null),__gh("td",{style:{color:e.pais?B.ink:B.faint},"data-gufi-src":"portal/huespedes.tsx:191"},paisEs(e.pais)),__gh("td",{"data-r":"1","data-gufi-src":"portal/huespedes.tsx:192"},e.personas?num(e.personas):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/huespedes.tsx:192"},"\u2014")),__gh("td",{"data-gufi-src":"portal/huespedes.tsx:193"},fmtLarga(e.entrada)),__gh("td",{"data-r":"1","data-gufi-src":"portal/huespedes.tsx:194"},num(e.noches)),__gh("td",{"data-r":"1","data-gufi-src":"portal/huespedes.tsx:195"},e.antelacion==null?__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/huespedes.tsx:195"},"\u2014"):`${num(e.antelacion)} d`),__gh("td",{"data-gufi-src":"portal/huespedes.tsx:196"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7},"data-gufi-src":"portal/huespedes.tsx:196"},__gh("span",{className:"p-dot",style:{background:canalColor(e.canal)},"data-gufi-src":"portal/huespedes.tsx:196"}),e.canal)),__gh("td",{"data-r":"1","data-gufi-src":"portal/huespedes.tsx:197"},money2(e.facturado)))))),filas.length>500?__gh("div",{className:"p-note",style:{padding:14,justifyContent:"center"},"data-gufi-src":"portal/huespedes.tsx:202"},"Se ven los 500 primeros de ",num(filas.length),". El Excel los lleva todos."):null):__gh(Vacio2,{titulo:"Ning\xFAn hu\xE9sped coincide",texto:"Prueba con otro nombre o pa\xEDs."})))}function Huespedes({f,periodo,propPorId,abrirEstancia}){return __gh(Estado,{f,periodo,hijos:d2=>__gh(Lista2,{d:d2,periodo,propPorId,abrirEstancia})})}var import_react40=require("react"),import_lucide_react39=require("lucide-react");var import_react35=require("react"),import_lucide_react34=require("lucide-react");var dosDig=n=>String(n).padStart(2,"0"),ymd=(y,m,d2)=>`${y}-${dosDig(m)}-${dosDig(d2)}`,ultimoDia=(y,m)=>new Date(y,m,0).getDate();function Ocupacion({api,token,propiedadIds,ambito}){let movil=useIsMobile(),[modo,setModo]=(0,import_react35.useState)("mes"),[cursor,setCursor]=(0,import_react35.useState)(()=>{let d2=new Date;return{y:d2.getFullYear(),m:d2.getMonth()+1}}),[data,setData]=(0,import_react35.useState)(null),[loading,setLoading]=(0,import_react35.useState)(!0),[error,setError]=(0,import_react35.useState)(""),[dia,setDia]=(0,import_react35.useState)(null),from=modo==="mes"?ymd(cursor.y,cursor.m,1):`${cursor.y}-01-01`,to=modo==="mes"?ymd(cursor.y,cursor.m,ultimoDia(cursor.y,cursor.m)):`${cursor.y}-12-31`,idsKey=(propiedadIds||[]).join(",");(0,import_react35.useEffect)(()=>{let vivo=!0;setLoading(!0),setError(""),setDia(null);let input={token,from,to};return idsKey&&(input.propiedadIds=idsKey.split(",").map(Number)),api("portal_ocupacion",input).then(r=>{vivo&&setData(r)}).catch(e=>{vivo&&(setData(null),setError(String(e&&e.message||e)))}).finally(()=>{vivo&&setLoading(!1)}),()=>{vivo=!1}},[api,token,from,to,idsKey]);let t2=data&&data.totales,dias=data&&data.dias||[],unidades=data&&data.unidades||0,porDia=(0,import_react35.useMemo)(()=>{let m={};return dias.forEach(d2=>{m[d2.fecha]=d2}),m},[dias]),grupos=(0,import_react35.useMemo)(()=>{let unids=data&&data.por_unidad||[];if(!unids.length)return null;let porHab=unids.filter(u=>habitacionDe(u.nickname)).length===unids.length&&unids.length>1,m={};unids.forEach(u=>{let k=porHab?habitacionDe(u.nickname):unidadDe(u.nickname);m[k]||(m[k]={clave:k,nombre:u.nombre_publico,unidades:0,ocupadas:0,recaudacion:0,tuyo:0}),m[k].unidades++,m[k].ocupadas+=u.ocupadas,m[k].recaudacion+=u.recaudacion,m[k].tuyo+=u.tuyo});let nDias=dias.length||1;return{porHab,filas:Object.values(m).map(g=>({...g,ocupacion:g.unidades?g.ocupadas/(g.unidades*nDias)*100:null})).sort((a,b)=>b.ocupacion-a.ocupacion)}},[data,dias.length]),meses=data&&data.meses||[],mover=(0,import_react35.useCallback)(paso=>setCursor(c=>{if(modo==="anio")return{y:c.y+paso,m:c.m};let m=c.m+paso,y=c.y;return m<1&&(m=12,y--),m>12&&(m=1,y++),{y,m}}),[modo]);function exportar2(){let out=[[`Ocupaci\xF3n y recaudaci\xF3n \xB7 ${ambito||"todas mis unidades"}`],[`${dmyCSV(from)} a ${dmyCSV(to)}`,`${unidades} unidades`],[],["Fecha","Ocupadas","Disponibles","Ocupaci\xF3n %","Entradas","Salidas","Hu\xE9spedes","Recaudaci\xF3n (\u20AC)","Tu ingreso (\u20AC)"]];dias.forEach(d2=>out.push([dmyCSV(d2.fecha),d2.ocupadas,unidades,unidades?String((Number(d2.ocupadas/unidades*100)||0).toFixed(1)).replace(".",","):"",d2.entradas,d2.salidas,d2.huespedes,eurCSV(d2.recaudacion),eurCSV(d2.tuyo)])),t2&&out.push([],["TOTAL",t2.noches_ocupadas,t2.noches_disponibles,String((Number(t2.ocupacion==null?0:t2.ocupacion)||0).toFixed(1)).replace(".",","),t2.entradas,t2.salidas,"",eurCSV(t2.recaudacion),eurCSV(t2.tuyo)]),downloadCSV(`ocupacion-${from}-${to}.csv`,out)}let cabecera=__gh("div",{className:"flex flex-wrap items-center justify-between gap-3 mb-5","data-gufi-src":"portal/ocupacion.tsx:94"},__gh(Seg,{value:modo,onChange:setModo,options:[["mes","Mes"],["anio","A\xF1o"]]}),__gh("div",{className:"flex items-center gap-2","data-gufi-src":"portal/ocupacion.tsx:96"},__gh("button",{onClick:()=>mover(-1),className:"b-press flex h-9 w-9 items-center justify-center rounded-xl",style:{background:"#fff",boxShadow:`inset 0 0 0 1px ${B.hair}`,border:"none",cursor:"pointer"},"data-gufi-src":"portal/ocupacion.tsx:97"},__gh(import_lucide_react34.ChevronLeft,{size:18})),__gh("div",{className:"text-[15px] font-bold text-center b-num",style:{color:B.ink,minWidth:modo==="mes"?138:68},"data-gufi-src":"portal/ocupacion.tsx:98"},modo==="mes"?`${MES[cursor.m]} ${cursor.y}`:cursor.y),__gh("button",{onClick:()=>mover(1),className:"b-press flex h-9 w-9 items-center justify-center rounded-xl",style:{background:"#fff",boxShadow:`inset 0 0 0 1px ${B.hair}`,border:"none",cursor:"pointer"},"data-gufi-src":"portal/ocupacion.tsx:99"},__gh(import_lucide_react34.ChevronRight,{size:18}))));return loading?__gh("div",{className:"b-fade","data-gufi-src":"portal/ocupacion.tsx:104"},cabecera,__gh(Spin,null)):error?__gh("div",{className:"b-fade","data-gufi-src":"portal/ocupacion.tsx:105"},cabecera,__gh("div",{className:"b-card p-5 text-[13.5px]",style:{color:B.red},"data-gufi-src":"portal/ocupacion.tsx:105"},"No se pudo calcular la ocupaci\xF3n: ",error)):!t2||!unidades?__gh("div",{className:"b-fade","data-gufi-src":"portal/ocupacion.tsx:106"},cabecera,__gh("div",{className:"b-card","data-gufi-src":"portal/ocupacion.tsx:106"},__gh(Empty,{text:"No hay unidades en esta selecci\xF3n."}))):__gh("div",{className:"b-fade","data-gufi-src":"portal/ocupacion.tsx:109"},cabecera,__gh("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-6 gap-3 mb-5","data-gufi-src":"portal/ocupacion.tsx:112"},__gh(KPI,{label:"Ocupaci\xF3n",value:pct(t2.ocupacion),sub:`${num(t2.noches_ocupadas)} de ${num(t2.noches_disponibles)} noches`,accent:B.accent}),__gh(KPI,{label:"Recaudaci\xF3n",value:money0(t2.recaudacion),sub:"lo que pag\xF3 el hu\xE9sped"}),__gh(KPI,{label:"Tu ingreso",value:money0(t2.tuyo),sub:`comisi\xF3n ${money0(t2.comision)}`,accent:B.green}),__gh(KPI,{label:"Precio medio",value:t2.adr==null?"\u2014":money2(t2.adr),sub:"por noche vendida"}),__gh(KPI,{label:"Por unidad",value:t2.revpar==null?"\u2014":money2(t2.revpar),sub:"se venda o no (RevPAR)"}),__gh(KPI,{label:"Movimiento",value:`${num(t2.entradas)} / ${num(t2.salidas)}`,sub:"entradas / salidas"})),modo==="mes"?__gh("div",{className:"b-card mb-5 p-4 sm:p-5","data-gufi-src":"portal/ocupacion.tsx:122"},__gh(SecTitle,{sub:`${unidades} unidad${unidades===1?"":"es"} \xB7 cada casilla es el % de la casa ocupado ese d\xEDa`},MES[cursor.m]," ",cursor.y),__gh(Rejilla2,{y:cursor.y,m:cursor.m,porDia,unidades,sel:dia,onSel:setDia}),__gh(Leyenda,null),dia&&porDia[dia]?__gh(DetalleDia,{d:porDia[dia],unidades}):null):__gh("div",{className:"b-card mb-5","data-gufi-src":"portal/ocupacion.tsx:129"},__gh(SecTitle,{sub:"ocupaci\xF3n media y recaudaci\xF3n de cada mes"},"Los doce meses"),__gh("div",{className:"px-4 sm:px-5 pb-5 flex flex-col gap-2.5","data-gufi-src":"portal/ocupacion.tsx:131"},meses.map(g=>__gh("div",{key:g.mes,className:"flex items-center gap-2 sm:gap-3","data-gufi-src":"portal/ocupacion.tsx:133"},__gh("div",{className:"text-[11.5px] sm:text-xs shrink-0 w-[76px] sm:w-[100px]",style:{color:B.muted},"data-gufi-src":"portal/ocupacion.tsx:134"},mesLabel(g.mes)),__gh("div",{className:"flex-1 rounded-lg h-6 relative overflow-hidden",style:{background:"#f1ecec"},"data-gufi-src":"portal/ocupacion.tsx:135"},__gh("div",{className:"absolute inset-y-0 left-0 rounded-lg",style:{width:`${Math.max(.6,Math.min(100,g.ocupacion||0))}%`,background:B.grad},"data-gufi-src":"portal/ocupacion.tsx:136"}),__gh("span",{className:"absolute inset-y-0 left-2 flex items-center text-[11px] font-bold b-num",style:{color:(g.ocupacion||0)>22?"#fff":B.muted},"data-gufi-src":"portal/ocupacion.tsx:137"},pct(g.ocupacion))),__gh("div",{className:"text-[12px] sm:text-[13px] font-bold text-right shrink-0 w-[70px] sm:w-[92px] b-num",style:{color:B.ink},"data-gufi-src":"portal/ocupacion.tsx:139"},money0(g.recaudacion)))))),grupos&&grupos.filas.length>1?__gh("div",{className:"b-card overflow-hidden mb-5","data-gufi-src":"portal/ocupacion.tsx:147"},__gh(SecTitle,{sub:grupos.porHab?"una fila por habitaci\xF3n, no por cama":"una fila por unidad"},grupos.porHab?"Por habitaci\xF3n":"Por propiedad"),movil?__gh("div",{className:"px-4 pb-4","data-gufi-src":"portal/ocupacion.tsx:152"},grupos.filas.map(g=>__gh("div",{key:g.clave,className:"b-row","data-gufi-src":"portal/ocupacion.tsx:154"},__gh("div",{className:"flex items-baseline justify-between gap-3 mb-2","data-gufi-src":"portal/ocupacion.tsx:155"},__gh("span",{className:"text-[14px] font-bold",style:{color:B.ink},"data-gufi-src":"portal/ocupacion.tsx:156"},g.clave),__gh("span",{className:"text-[15px] font-bold b-num",style:{color:B.accent},"data-gufi-src":"portal/ocupacion.tsx:157"},pct(g.ocupacion))),__gh("div",{className:"rounded-lg h-1.5 mb-2.5 overflow-hidden",style:{background:"#f1ecec"},"data-gufi-src":"portal/ocupacion.tsx:159"},__gh("div",{style:{width:`${Math.min(100,g.ocupacion||0)}%`,height:"100%",background:B.grad},"data-gufi-src":"portal/ocupacion.tsx:160"})),__gh("div",{className:"b-kv","data-gufi-src":"portal/ocupacion.tsx:162"},__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:162"},grupos.porHab?"Camas":"Unidades"),__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:162"},num(g.unidades))),__gh("div",{className:"b-kv","data-gufi-src":"portal/ocupacion.tsx:163"},__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:163"},"Noches vendidas"),__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:163"},num(g.ocupadas))),__gh("div",{className:"b-kv","data-gufi-src":"portal/ocupacion.tsx:164"},__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:164"},"Recaudaci\xF3n"),__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:164"},money2(g.recaudacion))),__gh("div",{className:"b-kv","data-gufi-src":"portal/ocupacion.tsx:165"},__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:165"},"Tu ingreso"),__gh("span",{style:{color:B.green},"data-gufi-src":"portal/ocupacion.tsx:165"},money2(g.tuyo)))))):__gh(TableWrap,{min:680},__gh("thead",{"data-gufi-src":"portal/ocupacion.tsx:171"},__gh("tr",{"data-gufi-src":"portal/ocupacion.tsx:171"},__gh(Th,null,grupos.porHab?"Habitaci\xF3n":"Propiedad"),__gh(Th,{r:!0},grupos.porHab?"Camas":"Unidades"),__gh(Th,{r:!0},"Noches"),__gh(Th,null,"Ocupaci\xF3n"),__gh(Th,{r:!0},"Recaudaci\xF3n"),__gh(Th,{r:!0},"Tu ingreso"))),__gh("tbody",{"data-gufi-src":"portal/ocupacion.tsx:172"},grupos.filas.map(g=>__gh("tr",{key:g.clave,"data-gufi-src":"portal/ocupacion.tsx:174"},__gh(Td,{b:!0},g.clave,g.nombre?__gh("div",{className:"text-[11.5px] font-normal",style:{color:B.faint},"data-gufi-src":"portal/ocupacion.tsx:175"},g.nombre):null),__gh(Td,{r:!0},num(g.unidades)),__gh(Td,{r:!0},num(g.ocupadas)),__gh(Td,null,__gh("div",{className:"flex items-center gap-2","data-gufi-src":"portal/ocupacion.tsx:179"},__gh("div",{className:"rounded-full h-1.5 flex-1 overflow-hidden",style:{background:"#f1ecec",minWidth:70},"data-gufi-src":"portal/ocupacion.tsx:180"},__gh("div",{style:{width:`${Math.min(100,g.ocupacion||0)}%`,height:"100%",background:B.grad},"data-gufi-src":"portal/ocupacion.tsx:181"})),__gh("span",{className:"b-num font-semibold",style:{color:B.accent,width:52,textAlign:"right"},"data-gufi-src":"portal/ocupacion.tsx:183"},pct(g.ocupacion)))),__gh(Td,{r:!0},money2(g.recaudacion)),__gh(Td,{r:!0,b:!0},__gh("span",{style:{color:B.green},"data-gufi-src":"portal/ocupacion.tsx:187"},money2(g.tuyo)))))))):null,__gh(PorCanal,{filas:data&&data.por_canal||[],total:t2.recaudacion,movil}),__gh("div",{className:"b-card overflow-hidden","data-gufi-src":"portal/ocupacion.tsx:198"},__gh(SecTitle,{sub:"lo que se durmi\xF3 y lo que produjo cada d\xEDa",right:__gh("button",{onClick:exportar2,className:"b-press flex items-center gap-1.5 rounded-lg px-3 py-2 text-[12.5px] font-semibold",style:{background:"#fff",boxShadow:`inset 0 0 0 1px ${B.hair}`,color:B.muted,border:"none",cursor:"pointer"},"data-gufi-src":"portal/ocupacion.tsx:200"},__gh(import_lucide_react34.Download,{size:14})," Excel")},"D\xEDa a d\xEDa"),dias.length?movil?__gh("div",{className:"px-4 pb-4","data-gufi-src":"portal/ocupacion.tsx:205"},dias.map(d2=>{let p=unidades?d2.ocupadas/unidades*100:null;return __gh("div",{key:d2.fecha,className:"b-row","data-gufi-src":"portal/ocupacion.tsx:207"},__gh("div",{className:"flex items-baseline justify-between gap-3 mb-2","data-gufi-src":"portal/ocupacion.tsx:208"},__gh("span",{className:"text-[13.5px] font-bold capitalize",style:{color:B.ink},"data-gufi-src":"portal/ocupacion.tsx:209"},fmtDia(d2.fecha)),__gh("span",{className:"text-[14px] font-bold b-num",style:{color:p>0?B.accent:B.faint},"data-gufi-src":"portal/ocupacion.tsx:210"},pct(p))),__gh("div",{className:"b-kv","data-gufi-src":"portal/ocupacion.tsx:212"},__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:212"},"Ocupadas"),__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:212"},num(d2.ocupadas)," de ",num(unidades))),__gh("div",{className:"b-kv","data-gufi-src":"portal/ocupacion.tsx:213"},__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:213"},"Entradas / salidas"),__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:213"},num(d2.entradas)," / ",num(d2.salidas))),__gh("div",{className:"b-kv","data-gufi-src":"portal/ocupacion.tsx:214"},__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:214"},"Recaudaci\xF3n"),__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:214"},money2(d2.recaudacion))),__gh("div",{className:"b-kv","data-gufi-src":"portal/ocupacion.tsx:215"},__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:215"},"Tu ingreso"),__gh("span",{style:{color:B.green},"data-gufi-src":"portal/ocupacion.tsx:215"},money2(d2.tuyo))))})):__gh(TableWrap,{min:720},__gh("thead",{"data-gufi-src":"portal/ocupacion.tsx:221"},__gh("tr",{"data-gufi-src":"portal/ocupacion.tsx:221"},__gh(Th,null,"D\xEDa"),__gh(Th,{r:!0},"Ocupadas"),__gh(Th,{r:!0},"Ocupaci\xF3n"),__gh(Th,{r:!0},"Entradas"),__gh(Th,{r:!0},"Salidas"),__gh(Th,{r:!0},"Hu\xE9spedes"),__gh(Th,{r:!0},"Recaudaci\xF3n"),__gh(Th,{r:!0},"Tu ingreso"))),__gh("tbody",{"data-gufi-src":"portal/ocupacion.tsx:222"},dias.map(d2=>{let p=unidades?d2.ocupadas/unidades*100:null;return __gh("tr",{key:d2.fecha,"data-gufi-src":"portal/ocupacion.tsx:224"},__gh(Td,{b:!0},__gh("span",{className:"capitalize","data-gufi-src":"portal/ocupacion.tsx:225"},fmtDia(d2.fecha))),__gh(Td,{r:!0},num(d2.ocupadas)," ",__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/ocupacion.tsx:226"},"/ ",num(unidades))),__gh(Td,{r:!0},__gh("span",{className:"font-semibold",style:{color:p>0?B.accent:B.faint},"data-gufi-src":"portal/ocupacion.tsx:227"},pct(p))),__gh(Td,{r:!0},d2.entradas?num(d2.entradas):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/ocupacion.tsx:228"},"\u2014")),__gh(Td,{r:!0},d2.salidas?num(d2.salidas):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/ocupacion.tsx:229"},"\u2014")),__gh(Td,{r:!0},d2.huespedes?num(d2.huespedes):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/ocupacion.tsx:230"},"\u2014")),__gh(Td,{r:!0},money2(d2.recaudacion)),__gh(Td,{r:!0,b:!0},__gh("span",{style:{color:B.green},"data-gufi-src":"portal/ocupacion.tsx:232"},money2(d2.tuyo))))}),__gh("tr",{"data-gufi-src":"portal/ocupacion.tsx:235"},__gh(Td,{b:!0},"Total"),__gh(Td,{r:!0,b:!0},num(t2.noches_ocupadas)),__gh(Td,{r:!0,b:!0},__gh("span",{style:{color:B.accent},"data-gufi-src":"portal/ocupacion.tsx:238"},pct(t2.ocupacion))),__gh(Td,{r:!0,b:!0},num(t2.entradas)),__gh(Td,{r:!0,b:!0},num(t2.salidas)),__gh(Td,null),__gh(Td,{r:!0,b:!0},money2(t2.recaudacion)),__gh(Td,{r:!0,b:!0},__gh("span",{style:{color:B.green},"data-gufi-src":"portal/ocupacion.tsx:243"},money2(t2.tuyo)))))):__gh(Empty,{text:"Sin d\xEDas en este rango."})))}function Rejilla2({y,m,porDia,unidades,sel,onSel}){let ultimo=ultimoDia(y,m),hueco=(new Date(y,m-1,1).getDay()+6)%7,celdas=[];for(let i=0;ionSel(activo?null:f),className:"b-press",title:info?`${d2}/${m} \xB7 ${info.ocupadas} de ${unidades} ocupadas \xB7 ${money2(info.recaudacion)}`:`${d2}/${m}`,style:{height:"clamp(42px, 6vw, 64px)",borderRadius:10,background:fondoOcup(p),border:"none",cursor:"pointer",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:1,boxShadow:activo?`0 0 0 2px ${B.gold}`:"none",padding:0},"data-gufi-src":"portal/ocupacion.tsx:268"},__gh("span",{className:"b-num",style:{fontSize:12,fontWeight:700,color:tintaOcup(p),lineHeight:1},"data-gufi-src":"portal/ocupacion.tsx:273"},d2),__gh("span",{className:"b-num",style:{fontSize:9.5,fontWeight:600,color:tintaOcup(p),opacity:.85,lineHeight:1},"data-gufi-src":"portal/ocupacion.tsx:274"},p==null?"":Math.round(p)+"%")))}return __gh("div",{"data-gufi-src":"portal/ocupacion.tsx:279"},__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(7, minmax(0,1fr))",gap:5,marginBottom:5},"data-gufi-src":"portal/ocupacion.tsx:280"},["L","M","X","J","V","S","D"].map((d2,k)=>__gh("div",{key:k,className:"text-center text-[10px] font-bold",style:{color:B.faint},"data-gufi-src":"portal/ocupacion.tsx:281"},d2))),__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(7, minmax(0,1fr))",gap:5},"data-gufi-src":"portal/ocupacion.tsx:283"},celdas))}var Leyenda=()=>__gh("div",{className:"flex items-center gap-2 mt-3.5 text-[11.5px]",style:{color:B.faint},"data-gufi-src":"portal/ocupacion.tsx:289"},__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:290"},"Vac\xEDo"),[0,25,50,75,100].map(p=>__gh("span",{key:p,style:{width:22,height:10,borderRadius:3,background:fondoOcup(p)},"data-gufi-src":"portal/ocupacion.tsx:291"})),__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:292"},"Lleno"));function DetalleDia({d:d2,unidades}){let p=unidades?d2.ocupadas/unidades*100:null;return __gh("div",{className:"mt-4 rounded-xl px-4 py-3 b-fade",style:{background:B.accentSoft,boxShadow:`inset 0 0 0 1px ${B.accent}22`},"data-gufi-src":"portal/ocupacion.tsx:299"},__gh("div",{className:"text-[13.5px] font-bold capitalize mb-1.5",style:{color:B.accent},"data-gufi-src":"portal/ocupacion.tsx:300"},fmtDia(d2.fecha)),__gh("div",{className:"flex flex-wrap gap-x-6 gap-y-1 text-[12.5px]",style:{color:B.muted},"data-gufi-src":"portal/ocupacion.tsx:301"},__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:302"},"Ocupadas ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/ocupacion.tsx:302"},num(d2.ocupadas)," de ",num(unidades))," (",pct(p),")"),__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:303"},"Entradas ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/ocupacion.tsx:303"},num(d2.entradas))),__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:304"},"Salidas ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/ocupacion.tsx:304"},num(d2.salidas))),__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:305"},"Recaudaci\xF3n ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/ocupacion.tsx:305"},money2(d2.recaudacion))),__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:306"},"Tu ingreso ",__gh("b",{style:{color:B.green},"data-gufi-src":"portal/ocupacion.tsx:306"},money2(d2.tuyo)))))}var import_react36=require("react"),import_lucide_react35=require("lucide-react");var dosDig2=n=>String(n).padStart(2,"0"),ymd2=d2=>`${d2.getFullYear()}-${dosDig2(d2.getMonth()+1)}-${dosDig2(d2.getDate())}`,diasDelMes=ym=>new Date(Number(ym.slice(0,4)),Number(ym.slice(5,7)),0).getDate(),DOW=["","Lunes","Martes","Mi\xE9rcoles","Jueves","Viernes","S\xE1bado","Domingo"],TIPO={MIXTA:"Mixtas",MIXTO:"Mixtas",MASC:"Masculinas",FEME:"Femeninas"},tipoDe=hab=>{let w=String(hab||"").split(" ")[1];return w?TIPO[w]||w.charAt(0)+w.slice(1).toLowerCase():null};function Informe({api,token,propiedadIds,ambito,ownerName}){let movil=useIsMobile(),[hist,setHist]=(0,import_react36.useState)(null),[fut,setFut]=(0,import_react36.useState)(null),[loading,setLoading]=(0,import_react36.useState)(!0),[error,setError]=(0,import_react36.useState)(""),idsKey=(propiedadIds||[]).join(","),hoy2=(0,import_react36.useMemo)(()=>ymd2(new Date),[]),finFuturo=(0,import_react36.useMemo)(()=>{let d2=new Date;return ymd2(new Date(d2.getFullYear(),d2.getMonth()+5,0))},[]);if((0,import_react36.useEffect)(()=>{let vivo=!0;setLoading(!0),setError("");let scope=idsKey?{propiedadIds:idsKey.split(",").map(Number)}:{};return Promise.all([api("portal_ocupacion",{token,...scope,from:"apertura",to:hoy2,incluir_dias:!1}),api("portal_ocupacion",{token,...scope,from:hoy2,to:finFuturo})]).then(([h,f])=>{vivo&&(setHist(h),setFut(f))}).catch(e=>{vivo&&(setHist(null),setFut(null),setError(String(e&&e.message||e)))}).finally(()=>{vivo&&setLoading(!1)}),()=>{vivo=!1}},[api,token,idsKey,hoy2,finFuturo]),loading)return __gh(Spin,null);if(error)return __gh("div",{className:"b-card p-5 text-[13.5px]",style:{color:B.red},"data-gufi-src":"portal/informe.tsx:68"},"No se pudo montar el informe: ",error);if(!hist||!hist.totales||!hist.unidades)return __gh("div",{className:"b-card","data-gufi-src":"portal/informe.tsx:69"},__gh(Empty,{text:"Todav\xEDa no hay noches vendidas para esta selecci\xF3n."}));let u=hist.unidades,t2=hist.totales,diaHoy=(fut&&fut.dias||[]).find(d2=>d2.fecha===hoy2),ocupHoy=diaHoy&&u?diaHoy.ocupadas/u*100:null,semanas=(hist.semanas||[]).slice().reverse();return __gh("div",{className:"b-fade","data-gufi-src":"portal/informe.tsx:81"},__gh(Cabecera2,{hist,ambito:ambito||ownerName,unidades:u}),__gh(Lectura,{hist,fut,unidades:u,hoy:hoy2}),__gh(Bloque3,{n:1,titulo:"Hoy",sub:"la foto del negocio ahora mismo"}),__gh("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3 mb-7","data-gufi-src":"portal/informe.tsx:87"},__gh(KPI,{label:"Ocupaci\xF3n hoy",value:pct(ocupHoy),sub:diaHoy?`${num(diaHoy.ocupadas)} de ${num(u)} camas`:"\u2014",accent:B.accent}),__gh(KPI,{label:"Ingresos hoy",value:diaHoy?money0(diaHoy.recaudacion):"\u2014",sub:"brutos ya vendidos"}),__gh(KPI,{label:"Entran / salen",value:diaHoy?`${num(diaHoy.entradas)} / ${num(diaHoy.salidas)}`:"\u2014",sub:"movimiento del d\xEDa"}),__gh(KPI,{label:"Desde apertura",value:money0(t2.recaudacion),sub:`${num(t2.ocupadas)} camas-noche`,accent:B.green})),__gh(Bloque3,{n:2,titulo:"Desde apertura",sub:"c\xF3mo va evolucionando semana a semana"}),__gh("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3 mb-3","data-gufi-src":"portal/informe.tsx:95"},__gh(KPI,{label:"Ocupaci\xF3n media",value:pct(t2.ocupacion),sub:`${num(t2.ocupadas)} de ${num(t2.noches_disponibles)} noches`,accent:B.accent}),__gh(KPI,{label:"Ingresos brutos",value:money0(t2.recaudacion),sub:"alojamiento"}),__gh(KPI,{label:"Precio medio",value:t2.adr==null?"\u2014":money2(t2.adr),sub:"por cama vendida"}),__gh(KPI,{label:"Tu ingreso",value:money0(t2.tuyo),sub:`comisi\xF3n ${money0(t2.comision)}`,accent:B.green})),__gh(Comportamiento,{r:hist.reservas}),__gh(Semanas,{semanas,unidades:u,movil}),__gh(MesAMes2,{hist,fut,unidades:u,hoy:hoy2}),__gh(PorCanal,{filas:hist.por_canal||[],total:t2.recaudacion,movil}),__gh(Paises,{perfil:hist.perfil}),__gh(Bloque3,{n:3,titulo:"Futuro",sub:"reservas que YA existen a d\xEDa de hoy"}),__gh(Futuro,{fut,unidades:u,hoy:hoy2,movil}),__gh(Antelacion,{perfil:hist.perfil}),__gh(Bloque3,{n:4,titulo:"Por habitaci\xF3n",sub:"qu\xE9 aporta cada una de verdad"}),__gh(Habitaciones,{unidades:hist.por_unidad||[],dias:t2.dias,total:t2.recaudacion,movil}),__gh(Bloque3,{n:5,titulo:"Patr\xF3n semanal",sub:"qu\xE9 d\xEDas funcionan y cu\xE1les est\xE1n flojos"}),__gh(PatronSemanal,{dow:hist.dow||[],unidades:u,movil}),__gh(NoConectado,null),__gh("div",{className:"flex justify-end mt-5","data-gufi-src":"portal/informe.tsx:119"},__gh("button",{onClick:()=>exportar(hist,fut,ambito||ownerName),className:"b-press flex items-center gap-1.5 rounded-lg px-3.5 py-2.5 text-[13px] font-semibold",style:{background:"#fff",boxShadow:`inset 0 0 0 1px ${B.hair}`,color:B.muted,border:"none",cursor:"pointer"},"data-gufi-src":"portal/informe.tsx:120"},__gh(import_lucide_react35.Download,{size:15})," Bajar el informe en Excel")))}function exportar(hist,fut,ambito){let u=hist.unidades,out=[["Informe de gesti\xF3n",ambito||"todas mis unidades"],["Desde",dmyCSV(hist.apertura),"hasta",dmyCSV(hist.to),`${u} unidades`],[],["SEMANA","Desde","Hasta","D\xEDas","Ocupaci\xF3n %","Camas/d\xEDa","Ingresos (\u20AC)","\u20AC/cama"]];(hist.semanas||[]).forEach(s=>out.push(["",dmyCSV(s.desde),dmyCSV(s.hasta),s.dias,String((Number(s.ocupacion==null?0:s.ocupacion)||0).toFixed(1)).replace(".",","),Math.round(s.ocupadas/s.dias),eurCSV(s.recaudacion),s.adr==null?"":eurCSV(s.adr)])),out.push([],["D\xCDA DE LA SEMANA","Ocupaci\xF3n %","Camas/d\xEDa","Ingresos/d\xEDa (\u20AC)"]),(hist.dow||[]).forEach(d2=>out.push([DOW[d2.dow],String((Number(d2.ocupacion==null?0:d2.ocupacion)||0).toFixed(1)).replace(".",","),Math.round(d2.ocupadas/d2.dias),eurCSV(d2.recaudacion/d2.dias)])),out.push([],["FUTURO \xB7 MES","Ocupaci\xF3n %","Camas-noche","Ingresos (\u20AC)"]),(fut&&fut.meses||[]).forEach(m=>out.push([mesLabel(m.mes),String((Number(m.ocupacion==null?0:m.ocupacion)||0).toFixed(1)).replace(".",","),m.ocupadas,eurCSV(m.recaudacion)])),out.push([],["POR HABITACI\xD3N","Camas","Noches vendidas","Ocupaci\xF3n %","Ingresos (\u20AC)"]);let hs=agrupaHabitaciones(hist.por_unidad||[],hist.totales.dias);(hs?hs.filas:[]).forEach(h=>out.push([h.clave,h.unidades,h.ocupadas,String((Number(h.ocupacion==null?0:h.ocupacion)||0).toFixed(1)).replace(".",","),eurCSV(h.recaudacion)])),downloadCSV(`informe-gestion-${hist.to}.csv`,out)}function Cabecera2({hist,ambito,unidades}){let declarada=hist.apertura_origen==="declarada",previas=hist.previas;return __gh("div",{className:"mb-6","data-gufi-src":"portal/informe.tsx:155"},__gh("div",{className:"b-card p-5 sm:p-7",style:{background:B.grad,border:"none",position:"relative",overflow:"hidden"},"data-gufi-src":"portal/informe.tsx:156"},__gh("div",{className:"b-aura","data-gufi-src":"portal/informe.tsx:157"}),__gh("div",{className:"relative","data-gufi-src":"portal/informe.tsx:158"},__gh("div",{className:"text-[11px] font-semibold uppercase tracking-[.08em]",style:{color:"rgba(255,255,255,.62)"},"data-gufi-src":"portal/informe.tsx:159"},"Informe de gesti\xF3n"),__gh("div",{className:"text-[26px] sm:text-[34px] font-semibold text-white leading-[1.08] mt-1.5",style:{letterSpacing:"-.035em"},"data-gufi-src":"portal/informe.tsx:160"},ambito||"Mis unidades"),__gh("div",{className:"text-[13px] mt-2.5",style:{color:"rgba(255,255,255,.76)"},"data-gufi-src":"portal/informe.tsx:161"},num(unidades)," unidad",unidades===1?"":"es"," \xB7 desde ",declarada?"la apertura":"la primera noche vendida"," (",fmtDate(hist.apertura),") \xB7 ",num(hist.totales.dias)," d\xEDas"))),declarada&&previas&&previas.noches?__gh("div",{className:"mt-2.5 rounded-2xl px-4 py-2.5 text-[12.5px]",style:{background:"#fff",border:`1px solid ${B.hair}`,color:B.muted},"data-gufi-src":"portal/informe.tsx:167"},"Antes de abrir ya se hab\xEDan dormido ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/informe.tsx:168"},num(previas.noches)," camas-noche")," (",money2(previas.recaudacion),"), desde el ",fmtDate(hist.primera_noche),". Quedan fuera de este informe, que empieza el d\xEDa de la apertura."):null)}function MesAMes2({hist,fut,unidades,hoy:hoy2}){let meses=(0,import_react36.useMemo)(()=>{let m={};return(hist.meses||[]).forEach(x=>{m[x.mes]={mes:x.mes,dias:x.dias,ocupadas:x.ocupadas,recaudacion:x.recaudacion,futuro:!1}}),(fut&&fut.dias||[]).filter(d2=>d2.fecha>hoy2).forEach(d2=>{let k=d2.fecha.slice(0,7);m[k]||(m[k]={mes:k,dias:0,ocupadas:0,recaudacion:0,futuro:!0}),m[k].dias++,m[k].ocupadas+=d2.ocupadas,m[k].recaudacion+=d2.recaudacion}),Object.values(m).sort((a,b)=>a.mes.localeCompare(b.mes)).map(g=>({...g,ocupacion:unidades&&g.dias?g.ocupadas/(unidades*g.dias)*100:null}))},[hist,fut,hoy2,unidades]);if(meses.length<2)return null;let max=Math.max(1,...meses.map(g=>g.recaudacion));return __gh("div",{className:"b-card overflow-hidden mb-7","data-gufi-src":"portal/informe.tsx:196"},__gh(SecTitle,{sub:"lo que lleva cada mes desde que abriste; los que a\xFAn no han llegado ense\xF1an lo que ya est\xE1 vendido"},"Mes a mes"),__gh("div",{className:"px-4 sm:px-6 pb-5 flex flex-col gap-3","data-gufi-src":"portal/informe.tsx:198"},meses.map(g=>__gh("div",{key:g.mes,className:"flex items-center gap-2.5 sm:gap-4",style:{opacity:g.futuro?.72:1},"data-gufi-src":"portal/informe.tsx:200"},__gh("div",{className:"text-[12px] sm:text-[13px] shrink-0 w-[76px] sm:w-[104px]",style:{color:B.muted},"data-gufi-src":"portal/informe.tsx:201"},mesLabel(g.mes)),__gh("div",{className:"flex-1 rounded-xl h-7 relative overflow-hidden",style:{background:"#f1f1f2"},"data-gufi-src":"portal/informe.tsx:202"},g.recaudacion>0?__gh("div",{className:"absolute inset-y-0 left-0 rounded-xl",style:{width:`${Math.max(2.5,g.recaudacion/max*100)}%`,background:B.grad},"data-gufi-src":"portal/informe.tsx:203"}):null),__gh("div",{className:"text-[12px] sm:text-[12.5px] text-right shrink-0 w-[46px] sm:w-[54px] b-num",style:{color:B.accent,fontWeight:600},"data-gufi-src":"portal/informe.tsx:205"},pct(g.ocupacion)),__gh("div",{className:"text-[12.5px] sm:text-[14px] font-semibold text-right shrink-0 w-[68px] sm:w-[92px] b-num",style:{color:g.recaudacion?B.ink:B.faint},"data-gufi-src":"portal/informe.tsx:206"},money0(g.recaudacion))))))}function Antelacion({perfil}){let filas=perfil&&perfil.antelacion||[],total=filas.reduce((a,x)=>a+x.n,0);if(!total)return null;let max=Math.max(1,...filas.map(x=>x.n)),ultima=filas.find(x=>x.orden===1);return __gh("div",{className:"b-card overflow-hidden mb-7","data-gufi-src":"portal/informe.tsx:225"},__gh(SecTitle,{sub:"cu\xE1nto tiempo pasa entre que reservan y que llegan"},"C\xF3mo entra la reserva"),__gh("div",{className:"px-4 sm:px-6 pb-5 flex flex-col gap-2.5","data-gufi-src":"portal/informe.tsx:227"},filas.map(x=>__gh("div",{key:x.orden,className:"flex items-center gap-2.5 sm:gap-4","data-gufi-src":"portal/informe.tsx:229"},__gh("div",{className:"text-[12px] sm:text-[13px] shrink-0 w-[112px] sm:w-[150px]",style:{color:B.muted},"data-gufi-src":"portal/informe.tsx:230"},x.tramo),__gh("div",{className:"flex-1 rounded-lg h-6 relative overflow-hidden",style:{background:"#f1f1f2"},"data-gufi-src":"portal/informe.tsx:231"},__gh("div",{className:"absolute inset-y-0 left-0 rounded-lg",style:{width:`${Math.max(1.5,x.n/max*100)}%`,background:B.grad},"data-gufi-src":"portal/informe.tsx:232"}),__gh("span",{className:"absolute inset-y-0 left-2.5 flex items-center text-[11px] font-semibold b-num",style:{color:x.n/max>.2?"rgba(255,255,255,.92)":B.faint},"data-gufi-src":"portal/informe.tsx:233"},pct(x.n/total*100))),__gh("div",{className:"text-[12px] sm:text-[13px] text-right shrink-0 w-[52px] b-num",style:{color:B.ink,fontWeight:600},"data-gufi-src":"portal/informe.tsx:235"},num(x.n)),__gh("div",{className:"hidden sm:block text-[13px] text-right shrink-0 w-[84px] b-num",style:{color:B.muted},"data-gufi-src":"portal/informe.tsx:236"},money0(x.recaudacion)))),ultima?__gh("div",{className:"text-[12.5px] mt-1.5",style:{color:B.muted,lineHeight:1.6},"data-gufi-src":"portal/informe.tsx:240"},__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/informe.tsx:241"},pct(ultima.n/total*100))," de tus reservas entra el mismo d\xEDa o la v\xEDspera. Con ese ritmo, un mes que hoy parece vac\xEDo no lo est\xE1: se llena en la \xFAltima semana."):null))}var Barras2=({filas,etiqueta:etiqueta4,valor,base:base2,ancho})=>{let max=Math.max(1,...filas.map(x=>x.n));return __gh("div",{className:"flex flex-col gap-2","data-gufi-src":"portal/informe.tsx:258"},filas.map((x,k)=>__gh("div",{key:k,className:"flex items-center gap-2.5 sm:gap-4","data-gufi-src":"portal/informe.tsx:260"},__gh("div",{className:"text-[12px] sm:text-[13px] shrink-0 truncate",style:{color:B.muted,width:ancho||150},title:etiqueta4(x),"data-gufi-src":"portal/informe.tsx:261"},etiqueta4(x)),__gh("div",{className:"flex-1 rounded-lg h-5 relative overflow-hidden",style:{background:"#f1f1f2"},"data-gufi-src":"portal/informe.tsx:262"},__gh("div",{className:"absolute inset-y-0 left-0 rounded-lg",style:{width:`${Math.max(1.5,x.n/max*100)}%`,background:B.grad},"data-gufi-src":"portal/informe.tsx:263"})),__gh("div",{className:"text-[12.5px] text-right shrink-0 w-[104px] whitespace-nowrap b-num",style:{color:B.ink,fontWeight:600},"data-gufi-src":"portal/informe.tsx:265"},num(x.n)," \xB7 ",pct(x.n/base2*100)))))};function Paises({perfil}){let filas=perfil&&perfil.paises||[],con=perfil&&perfil.con_pais||0,total=perfil&&perfil.total||0,v=perfil&&perfil.viajeros||null,hayRegistro=!!(v&&v.fichas);if((!filas.length||!con)&&!hayRegistro)return null;let hombres=hayRegistro?(v.sexos.find(x=>x.sexo==="Hombres")||{n:0}).n:0,mujeres=hayRegistro?(v.sexos.find(x=>x.sexo==="Mujeres")||{n:0}).n:0;return __gh("div",{className:"b-card overflow-hidden mb-7","data-gufi-src":"portal/informe.tsx:282"},__gh(SecTitle,{sub:"para saber a qui\xE9n le est\xE1s hablando cuando hagas campa\xF1a"},"Qui\xE9n duerme aqu\xED"),hayRegistro?__gh(__gf,null,__gh("div",{className:"grid grid-cols-2 lg:grid-cols-3 gap-3 px-4 sm:px-6 pb-1","data-gufi-src":"portal/informe.tsx:287"},__gh(KPI,{label:"Edad media",value:v.edad_media==null?"\u2014":`${num(v.edad_media)} a\xF1os`,sub:`${num(v.fichas)} viajeros registrados`,accent:B.accent}),__gh(KPI,{label:"Hombres / mujeres",value:`${num(hombres)} / ${num(mujeres)}`,sub:hombres+mujeres?`${pct(hombres/(hombres+mujeres)*100)} ellos`:"\u2014"}),__gh(KPI,{label:"Con ficha de viajero",value:pct(v.estancias?v.estancias_con_registro/v.estancias*100:null),sub:`${num(v.estancias_con_registro)} de ${num(v.estancias)} estancias`})),v.edades.length?__gh("div",{className:"px-4 sm:px-6 pt-4 pb-5","data-gufi-src":"portal/informe.tsx:293"},__gh("div",{className:"text-[13px] font-semibold mb-3",style:{color:B.ink},"data-gufi-src":"portal/informe.tsx:294"},"Por edad"),__gh(Barras2,{filas:v.edades,etiqueta:x=>x.tramo,base:v.fichas,ancho:130})):null,__gh("div",{className:"px-4 sm:px-6 pb-4 text-[12.5px]",style:{color:B.muted,lineHeight:1.6},"data-gufi-src":"portal/informe.tsx:298"},"La edad y el sexo salen del ",__gh("b",{style:{color:B.sub},"data-gufi-src":"portal/informe.tsx:299"},"registro de viajeros"),", que se rellena en el check-in \u2014 por eso cubre ",pct(v.estancias?v.estancias_con_registro/v.estancias*100:null)," de las estancias y no todas. Cuanto m\xE1s check-in online, mejor sale este cuadro.")):null,filas.length&&con?__gh("div",{className:"px-4 sm:px-6 pb-5",style:{borderTop:hayRegistro?`1px solid ${B.hair}`:"none",paddingTop:hayRegistro?18:0},"data-gufi-src":"portal/informe.tsx:307"},__gh("div",{className:"text-[13px] font-semibold mb-1",style:{color:B.ink},"data-gufi-src":"portal/informe.tsx:308"},"De qu\xE9 pa\xEDs llegan"),__gh("div",{className:"text-[12px] mb-3",style:{color:B.faint},"data-gufi-src":"portal/informe.tsx:309"},"De las ",num(con)," reservas que traen pa\xEDs, de ",num(total),". Lo manda el canal, y no siempre."),__gh(Barras2,{filas,etiqueta:x=>x.pais,base:con,ancho:170})):null)}function Comportamiento({r}){return r?__gh("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3 mb-6","data-gufi-src":"portal/informe.tsx:322"},__gh(KPI,{label:"Estancia media",value:r.estancia_media==null?"\u2014":`${num(r.estancia_media)} noches`,sub:`${num(r.confirmadas)} reservas`}),__gh(KPI,{label:"Antelaci\xF3n media",value:r.antelacion_media==null?"\u2014":`${num(Math.round(r.antelacion_media))} d\xEDas`,sub:"desde que reservan hasta que llegan"}),__gh(KPI,{label:"Entran al ritmo de",value:`${num(r.ritmo_7)} / semana`,sub:`${money0(r.ritmo_7_eur)} en los \xFAltimos 7 d\xEDas`,accent:B.accent}),__gh(KPI,{label:"Canceladas",value:num(r.canceladas),sub:r.confirmadas?`${pct(r.canceladas/(r.confirmadas+r.canceladas)*100)} de las hechas`:"\u2014",accent:r.canceladas?B.amber:B.green})):null}function Semanas({semanas,unidades,movil}){let completas=semanas.filter(s=>s.dias===7),mejor=completas.length>1?completas.reduce((a,b)=>b.ocupacion>a.ocupacion?b:a):null,peor=completas.length>1?completas.reduce((a,b)=>b.ocupacionmejor&&s.inicio===mejor.inicio?B.green:peor&&s.inicio===peor.inicio?B.red:B.ink;return semanas.length?__gh("div",{className:"b-card overflow-hidden mb-6","data-gufi-src":"portal/informe.tsx:340"},__gh(SecTitle,{sub:"las semanas a medias van marcadas \u2014 comparar 3 d\xEDas con 7 no dice nada"},"Semana a semana"),movil?__gh("div",{className:"px-4 pb-4","data-gufi-src":"portal/informe.tsx:343"},semanas.map(s=>__gh("div",{key:s.inicio,className:"b-row","data-gufi-src":"portal/informe.tsx:345"},__gh("div",{className:"flex items-baseline justify-between gap-3 mb-2","data-gufi-src":"portal/informe.tsx:346"},__gh("span",{className:"text-[13.5px] font-bold",style:{color:B.ink},"data-gufi-src":"portal/informe.tsx:347"},fmtDate(s.desde)," \u2192 ",fmtDate(s.hasta),s.dias<7?" *":""),__gh("span",{className:"text-[15px] font-bold b-num",style:{color:tono(s)},"data-gufi-src":"portal/informe.tsx:348"},pct(s.ocupacion))),__gh("div",{className:"rounded-lg h-1.5 mb-2.5 overflow-hidden",style:{background:"#f1ecec"},"data-gufi-src":"portal/informe.tsx:350"},__gh("div",{style:{width:`${Math.min(100,s.ocupacion||0)}%`,height:"100%",background:B.grad},"data-gufi-src":"portal/informe.tsx:351"})),__gh("div",{className:"b-kv","data-gufi-src":"portal/informe.tsx:353"},__gh("span",{"data-gufi-src":"portal/informe.tsx:353"},"Camas al d\xEDa"),__gh("span",{"data-gufi-src":"portal/informe.tsx:353"},num(Math.round(s.ocupadas/s.dias))," de ",num(unidades))),__gh("div",{className:"b-kv","data-gufi-src":"portal/informe.tsx:354"},__gh("span",{"data-gufi-src":"portal/informe.tsx:354"},"Ingresos"),__gh("span",{"data-gufi-src":"portal/informe.tsx:354"},money2(s.recaudacion))),__gh("div",{className:"b-kv","data-gufi-src":"portal/informe.tsx:355"},__gh("span",{"data-gufi-src":"portal/informe.tsx:355"},"Precio por cama"),__gh("span",{"data-gufi-src":"portal/informe.tsx:355"},s.adr==null?"\u2014":money2(s.adr)))))):__gh(TableWrap,{min:640},__gh("thead",{"data-gufi-src":"portal/informe.tsx:361"},__gh("tr",{"data-gufi-src":"portal/informe.tsx:361"},__gh(Th,null,"Semana"),__gh(Th,{r:!0},"Ocupaci\xF3n"),__gh(Th,{r:!0},"Camas / d\xEDa"),__gh(Th,{r:!0},"Ingresos"),__gh(Th,{r:!0},"\u20AC / cama"))),__gh("tbody",{"data-gufi-src":"portal/informe.tsx:362"},semanas.map(s=>__gh("tr",{key:s.inicio,"data-gufi-src":"portal/informe.tsx:364"},__gh(Td,{b:!0},fmtDate(s.desde)," \u2192 ",fmtDate(s.hasta),s.dias<7?__gh("span",{style:{color:B.faint,fontWeight:400},"data-gufi-src":"portal/informe.tsx:365"}," \xB7 ",s.dias," d\xEDas"):null),__gh(Td,{r:!0},__gh("span",{className:"font-bold",style:{color:tono(s)},"data-gufi-src":"portal/informe.tsx:366"},pct(s.ocupacion))),__gh(Td,{r:!0},num(Math.round(s.ocupadas/s.dias))," ",__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/informe.tsx:367"},"/ ",num(unidades))),__gh(Td,{r:!0,b:!0},money2(s.recaudacion)),__gh(Td,{r:!0},s.adr==null?"\u2014":money2(s.adr))))))):__gh("div",{className:"b-card mb-6","data-gufi-src":"portal/informe.tsx:338"},__gh(Empty,{text:"Sin semanas todav\xEDa."}))}function Futuro({fut,unidades,hoy:hoy2,movil}){let meses=fut&&fut.meses||[],proximos=(fut&&fut.dias||[]).filter(d2=>d2.fecha>hoy2).slice(0,7);return meses.length?__gh(__gf,null,__gh("div",{className:"grid grid-cols-2 sm:grid-cols-3 lg:grid-cols-5 gap-3 mb-4","data-gufi-src":"portal/informe.tsx:386"},meses.map((m,k)=>__gh("div",{key:m.mes,className:"b-card p-3.5","data-gufi-src":"portal/informe.tsx:388"},__gh("div",{className:"text-[10.5px] font-bold uppercase tracking-wide truncate",style:{color:B.faint},"data-gufi-src":"portal/informe.tsx:389"},k===0&&m.dias0?B.accent:B.faint,letterSpacing:"-.5px"},"data-gufi-src":"portal/informe.tsx:392"},pct(m.ocupacion)),__gh("div",{className:"rounded-lg h-1.5 mt-2 overflow-hidden",style:{background:"#f1ecec"},"data-gufi-src":"portal/informe.tsx:393"},__gh("div",{style:{width:`${Math.min(100,m.ocupacion||0)}%`,height:"100%",background:B.grad},"data-gufi-src":"portal/informe.tsx:394"})),__gh("div",{className:"text-[11px] mt-1.5",style:{color:B.faint},"data-gufi-src":"portal/informe.tsx:396"},num(m.ocupadas)," de ",num(m.noches_disponibles)," camas-noche"),__gh("div",{className:"text-[13px] font-bold mt-0.5 b-num",style:{color:B.ink},"data-gufi-src":"portal/informe.tsx:397"},money0(m.recaudacion))))),proximos.length?__gh("div",{className:"b-card overflow-hidden mb-6","data-gufi-src":"portal/informe.tsx:402"},__gh(SecTitle,{sub:"lo que ya est\xE1 vendido para los pr\xF3ximos siete d\xEDas"},"Pr\xF3ximos d\xEDas"),movil?__gh("div",{className:"px-4 pb-4","data-gufi-src":"portal/informe.tsx:405"},proximos.map(d2=>{let p=unidades?d2.ocupadas/unidades*100:null;return __gh("div",{key:d2.fecha,className:"b-row","data-gufi-src":"portal/informe.tsx:407"},__gh("div",{className:"flex items-baseline justify-between gap-3","data-gufi-src":"portal/informe.tsx:408"},__gh("span",{className:"text-[13.5px] font-bold capitalize",style:{color:B.ink},"data-gufi-src":"portal/informe.tsx:409"},fmtDia(d2.fecha)),__gh("span",{className:"text-[14px] font-bold b-num",style:{color:p>0?B.accent:B.faint},"data-gufi-src":"portal/informe.tsx:410"},pct(p))),__gh("div",{className:"b-kv mt-1.5","data-gufi-src":"portal/informe.tsx:412"},__gh("span",{"data-gufi-src":"portal/informe.tsx:412"},"Camas"),__gh("span",{"data-gufi-src":"portal/informe.tsx:412"},num(d2.ocupadas)," de ",num(unidades))),__gh("div",{className:"b-kv","data-gufi-src":"portal/informe.tsx:413"},__gh("span",{"data-gufi-src":"portal/informe.tsx:413"},"Ingresos"),__gh("span",{"data-gufi-src":"portal/informe.tsx:413"},money2(d2.recaudacion))))})):__gh(TableWrap,{min:560},__gh("thead",{"data-gufi-src":"portal/informe.tsx:419"},__gh("tr",{"data-gufi-src":"portal/informe.tsx:419"},__gh(Th,null,"D\xEDa"),__gh(Th,{r:!0},"Ocupaci\xF3n"),__gh(Th,{r:!0},"Camas"),__gh(Th,{r:!0},"Ingresos"),__gh(Th,{r:!0},"\u20AC / cama"))),__gh("tbody",{"data-gufi-src":"portal/informe.tsx:420"},proximos.map(d2=>{let p=unidades?d2.ocupadas/unidades*100:null;return __gh("tr",{key:d2.fecha,"data-gufi-src":"portal/informe.tsx:422"},__gh(Td,{b:!0},__gh("span",{className:"capitalize","data-gufi-src":"portal/informe.tsx:423"},fmtDia(d2.fecha))),__gh(Td,{r:!0},__gh("span",{className:"font-bold",style:{color:p>0?B.accent:B.faint},"data-gufi-src":"portal/informe.tsx:424"},pct(p))),__gh(Td,{r:!0},num(d2.ocupadas)," ",__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/informe.tsx:425"},"/ ",num(unidades))),__gh(Td,{r:!0,b:!0},money2(d2.recaudacion)),__gh(Td,{r:!0},d2.ocupadas?money2(d2.recaudacion/d2.ocupadas):"\u2014"))})))):null):__gh("div",{className:"b-card mb-6","data-gufi-src":"portal/informe.tsx:383"},__gh(Empty,{text:"No hay reservas futuras."}))}function agrupaHabitaciones(unidades,dias){if(!unidades.length)return null;let porHab=unidades.filter(x=>habitacionDe(x.nickname)).length===unidades.length&&unidades.length>1,m={};unidades.forEach(x=>{let k=porHab?habitacionDe(x.nickname):unidadDe(x.nickname);m[k]||(m[k]={clave:k,nombre:x.nombre_publico,tipo:porHab?tipoDe(k):null,unidades:0,ocupadas:0,recaudacion:0,tuyo:0}),m[k].unidades++,m[k].ocupadas+=x.ocupadas,m[k].recaudacion+=x.recaudacion,m[k].tuyo+=x.tuyo});let filas=Object.values(m).map(g=>({...g,ocupacion:g.unidades&&dias?g.ocupadas/(g.unidades*dias)*100:null})).sort((a,b)=>b.recaudacion-a.recaudacion);return{porHab,filas}}function Habitaciones({unidades,dias,total,movil}){let g=(0,import_react36.useMemo)(()=>agrupaHabitaciones(unidades,dias),[unidades,dias]),tipos=(0,import_react36.useMemo)(()=>{if(!g||!g.porHab)return null;let m={};g.filas.forEach(f=>{f.tipo&&(m[f.tipo]||(m[f.tipo]={tipo:f.tipo,camas:0,recaudacion:0,habs:[]}),m[f.tipo].camas+=f.unidades,m[f.tipo].recaudacion+=f.recaudacion,m[f.tipo].habs.push(f.clave))});let vals=Object.values(m);return vals.length>1?vals.sort((a,b)=>b.recaudacion-a.recaudacion):null},[g]);if(!g||g.filas.length<2)return null;let camas=g.filas.reduce((a,f)=>a+f.unidades,0);return __gh(__gf,null,tipos?__gh("div",{className:"grid grid-cols-1 sm:grid-cols-3 gap-3 mb-4","data-gufi-src":"portal/informe.tsx:471"},tipos.map(x=>__gh("div",{key:x.tipo,className:"b-card p-4","data-gufi-src":"portal/informe.tsx:473"},__gh("div",{className:"text-[11px] font-bold uppercase tracking-wide",style:{color:B.faint},"data-gufi-src":"portal/informe.tsx:474"},x.tipo),__gh("div",{className:"mt-1 text-2xl font-bold leading-none b-num",style:{color:B.ink,letterSpacing:"-.5px"},"data-gufi-src":"portal/informe.tsx:475"},num(x.camas)," camas"),__gh("div",{className:"text-[11.5px] mt-1",style:{color:B.faint},"data-gufi-src":"portal/informe.tsx:476"},x.habs.join(" + ")," \xB7 ",pct(camas?x.camas/camas*100:null)," de la casa"),__gh("div",{className:"rounded-lg h-1.5 mt-2.5 overflow-hidden",style:{background:"#f1ecec"},"data-gufi-src":"portal/informe.tsx:477"},__gh("div",{style:{width:`${total?Math.min(100,x.recaudacion/total*100):0}%`,height:"100%",background:B.grad},"data-gufi-src":"portal/informe.tsx:478"})),__gh("div",{className:"text-[12.5px] mt-1.5",style:{color:B.muted},"data-gufi-src":"portal/informe.tsx:480"},"aporta ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/informe.tsx:481"},money0(x.recaudacion))," \xB7 ",pct(total?x.recaudacion/total*100:null)," del ingreso")))):null,__gh("div",{className:"b-card overflow-hidden mb-6","data-gufi-src":"portal/informe.tsx:487"},__gh(SecTitle,{sub:g.porHab?"noches vendidas e ingresos de cada habitaci\xF3n, no solo su capacidad":"una fila por unidad"},g.porHab?"Aportaci\xF3n real por habitaci\xF3n":"Aportaci\xF3n por propiedad"),movil?__gh("div",{className:"px-4 pb-4","data-gufi-src":"portal/informe.tsx:492"},g.filas.map(f=>__gh("div",{key:f.clave,className:"b-row","data-gufi-src":"portal/informe.tsx:494"},__gh("div",{className:"flex items-baseline justify-between gap-3 mb-2","data-gufi-src":"portal/informe.tsx:495"},__gh("span",{className:"text-[14px] font-bold",style:{color:B.ink},"data-gufi-src":"portal/informe.tsx:496"},f.clave),__gh("span",{className:"text-[14px] font-bold b-num",style:{color:B.accent},"data-gufi-src":"portal/informe.tsx:497"},money0(f.recaudacion))),__gh("div",{className:"rounded-lg h-1.5 mb-2.5 overflow-hidden",style:{background:"#f1ecec"},"data-gufi-src":"portal/informe.tsx:499"},__gh("div",{style:{width:`${total?Math.min(100,f.recaudacion/total*100):0}%`,height:"100%",background:B.grad},"data-gufi-src":"portal/informe.tsx:500"})),__gh("div",{className:"b-kv","data-gufi-src":"portal/informe.tsx:502"},__gh("span",{"data-gufi-src":"portal/informe.tsx:502"},"Aporta"),__gh("span",{"data-gufi-src":"portal/informe.tsx:502"},pct(total?f.recaudacion/total*100:null))),__gh("div",{className:"b-kv","data-gufi-src":"portal/informe.tsx:503"},__gh("span",{"data-gufi-src":"portal/informe.tsx:503"},"Camas"),__gh("span",{"data-gufi-src":"portal/informe.tsx:503"},num(f.unidades))),__gh("div",{className:"b-kv","data-gufi-src":"portal/informe.tsx:504"},__gh("span",{"data-gufi-src":"portal/informe.tsx:504"},"Noches vendidas"),__gh("span",{"data-gufi-src":"portal/informe.tsx:504"},num(f.ocupadas))),__gh("div",{className:"b-kv","data-gufi-src":"portal/informe.tsx:505"},__gh("span",{"data-gufi-src":"portal/informe.tsx:505"},"Ocupaci\xF3n"),__gh("span",{"data-gufi-src":"portal/informe.tsx:505"},pct(f.ocupacion)))))):__gh(TableWrap,{min:720},__gh("thead",{"data-gufi-src":"portal/informe.tsx:511"},__gh("tr",{"data-gufi-src":"portal/informe.tsx:511"},__gh(Th,null,g.porHab?"Habitaci\xF3n":"Propiedad"),__gh(Th,{r:!0},"Camas"),__gh(Th,{r:!0},"Noches"),__gh(Th,{r:!0},"Ocupaci\xF3n"),__gh(Th,{r:!0},"Ingresos"),__gh(Th,null,"Aporta al total"))),__gh("tbody",{"data-gufi-src":"portal/informe.tsx:512"},g.filas.map(f=>__gh("tr",{key:f.clave,"data-gufi-src":"portal/informe.tsx:514"},__gh(Td,{b:!0},f.clave,f.nombre?__gh("div",{className:"text-[11.5px] font-normal",style:{color:B.faint},"data-gufi-src":"portal/informe.tsx:515"},f.nombre):null),__gh(Td,{r:!0},num(f.unidades)),__gh(Td,{r:!0},num(f.ocupadas)),__gh(Td,{r:!0},pct(f.ocupacion)),__gh(Td,{r:!0,b:!0},money2(f.recaudacion)),__gh(Td,null,__gh("div",{className:"flex items-center gap-2","data-gufi-src":"portal/informe.tsx:521"},__gh("div",{className:"rounded-full h-1.5 flex-1 overflow-hidden",style:{background:"#f1ecec",minWidth:80},"data-gufi-src":"portal/informe.tsx:522"},__gh("div",{style:{width:`${total?Math.min(100,f.recaudacion/total*100):0}%`,height:"100%",background:B.grad},"data-gufi-src":"portal/informe.tsx:523"})),__gh("span",{className:"b-num font-semibold",style:{color:B.accent,width:52,textAlign:"right"},"data-gufi-src":"portal/informe.tsx:525"},pct(total?f.recaudacion/total*100:null))))))))))}function PatronSemanal({dow,unidades,movil}){let filas=(0,import_react36.useMemo)(()=>dow.map(d2=>({...d2,ingresoDia:d2.dias?d2.recaudacion/d2.dias:0,camasDia:d2.dias?d2.ocupadas/d2.dias:0})),[dow]);if(filas.length<7)return null;let finde=filas.filter(d2=>d2.dow===5||d2.dow===6),resto=filas.filter(d2=>d2.dow!==5&&d2.dow!==6),media=(arr,campo2)=>arr.length?arr.reduce((a,x)=>a+x[campo2],0)/arr.length:0,ocupFinde=media(finde,"ocupacion"),ocupResto=media(resto,"ocupacion"),eurFinde=media(finde,"ingresoDia"),eurResto=media(resto,"ingresoDia"),dif=eurResto?(eurFinde-eurResto)/eurResto*100:null,flojo=filas.slice().sort((a,b)=>a.ocupacion-b.ocupacion).slice(0,2).sort((a,b)=>a.dow-b.dow),max=Math.max(1,...filas.map(d2=>d2.ocupacion||0));return __gh(__gf,null,__gh("div",{className:"grid grid-cols-2 lg:grid-cols-4 gap-3 mb-4","data-gufi-src":"portal/informe.tsx:551"},__gh(KPI,{label:"Viernes + s\xE1bado",value:pct(ocupFinde),sub:`${money0(eurFinde)} al d\xEDa`,accent:B.green}),__gh(KPI,{label:"Resto de d\xEDas",value:pct(ocupResto),sub:`${money0(eurResto)} al d\xEDa`}),__gh(KPI,{label:"Diferencia",value:dif==null?"\u2014":`${dif>0?"+":""}${Math.round(dif)} %`,sub:"ingresos del finde sobre el resto",accent:dif>0?B.green:B.muted}),__gh(KPI,{label:"Punto d\xE9bil",value:flojo.map(d2=>DOW[d2.dow].slice(0,3)).join(" + "),sub:`${pct(media(flojo,"ocupacion"))} de ocupaci\xF3n`,accent:B.amber})),__gh("div",{className:"b-card overflow-hidden mb-6","data-gufi-src":"portal/informe.tsx:557"},__gh(SecTitle,{sub:"media de cada d\xEDa de la semana desde apertura"},"Qu\xE9 d\xEDa funciona"),movil?__gh("div",{className:"px-4 pb-4","data-gufi-src":"portal/informe.tsx:560"},filas.map(d2=>__gh("div",{key:d2.dow,className:"b-row","data-gufi-src":"portal/informe.tsx:562"},__gh("div",{className:"flex items-baseline justify-between gap-3 mb-2","data-gufi-src":"portal/informe.tsx:563"},__gh("span",{className:"text-[14px] font-bold",style:{color:d2.dow>=5&&d2.dow<=6?B.green:B.ink},"data-gufi-src":"portal/informe.tsx:564"},DOW[d2.dow]),__gh("span",{className:"text-[14px] font-bold b-num",style:{color:B.accent},"data-gufi-src":"portal/informe.tsx:565"},pct(d2.ocupacion))),__gh("div",{className:"rounded-lg h-1.5 mb-2.5 overflow-hidden",style:{background:"#f1ecec"},"data-gufi-src":"portal/informe.tsx:567"},__gh("div",{style:{width:`${(d2.ocupacion||0)/max*100}%`,height:"100%",background:B.grad},"data-gufi-src":"portal/informe.tsx:568"})),__gh("div",{className:"b-kv","data-gufi-src":"portal/informe.tsx:570"},__gh("span",{"data-gufi-src":"portal/informe.tsx:570"},"Camas al d\xEDa"),__gh("span",{"data-gufi-src":"portal/informe.tsx:570"},num(Math.round(d2.camasDia))," de ",num(unidades))),__gh("div",{className:"b-kv","data-gufi-src":"portal/informe.tsx:571"},__gh("span",{"data-gufi-src":"portal/informe.tsx:571"},"Ingresos al d\xEDa"),__gh("span",{"data-gufi-src":"portal/informe.tsx:571"},money2(d2.ingresoDia)))))):__gh(TableWrap,{min:560},__gh("thead",{"data-gufi-src":"portal/informe.tsx:577"},__gh("tr",{"data-gufi-src":"portal/informe.tsx:577"},__gh(Th,null,"D\xEDa"),__gh(Th,{r:!0},"Ocupaci\xF3n"),__gh(Th,null,"\xA0"),__gh(Th,{r:!0},"Camas / d\xEDa"),__gh(Th,{r:!0},"Ingresos / d\xEDa"))),__gh("tbody",{"data-gufi-src":"portal/informe.tsx:578"},filas.map(d2=>__gh("tr",{key:d2.dow,"data-gufi-src":"portal/informe.tsx:580"},__gh(Td,{b:!0},__gh("span",{style:{color:d2.dow>=5&&d2.dow<=6?B.green:B.ink},"data-gufi-src":"portal/informe.tsx:581"},DOW[d2.dow])),__gh(Td,{r:!0},__gh("span",{className:"font-bold",style:{color:B.accent},"data-gufi-src":"portal/informe.tsx:582"},pct(d2.ocupacion))),__gh(Td,null,__gh("div",{className:"rounded-full h-1.5 overflow-hidden",style:{background:"#f1ecec",minWidth:120},"data-gufi-src":"portal/informe.tsx:584"},__gh("div",{style:{width:`${(d2.ocupacion||0)/max*100}%`,height:"100%",background:B.grad},"data-gufi-src":"portal/informe.tsx:585"}))),__gh(Td,{r:!0},num(Math.round(d2.camasDia))," ",__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/informe.tsx:588"},"/ ",num(unidades))),__gh(Td,{r:!0,b:!0},money2(d2.ingresoDia))))))))}function Lectura({hist,fut,unidades,hoy:hoy2}){let puntos=[],completas=(hist.semanas||[]).filter(s=>s.dias===7);if(completas.length>=2){let a=completas[0],z=completas[completas.length-1],sube=z.ocupacion>a.ocupacion;puntos.push({t:sube?"La casa se est\xE1 llenando":"La ocupaci\xF3n est\xE1 bajando",d:`De ${pct(a.ocupacion)} en la semana del ${fmtDate(a.desde)} a ${pct(z.ocupacion)} en la del ${fmtDate(z.desde)}.`,c:sube?B.green:B.amber})}let dow=hist.dow||[];if(dow.length===7){let finde=dow.filter(d2=>d2.dow===5||d2.dow===6),resto=dow.filter(d2=>d2.dow!==5&&d2.dow!==6),m=arr=>arr.length?arr.reduce((s,x)=>s+(x.dias?x.recaudacion/x.dias:0),0)/arr.length:0,ef=m(finde),er=m(resto);er>0&&puntos.push({t:ef>er?"El fin de semana es lo que tira":"Entre semana se vende igual o mejor",d:`Viernes y s\xE1bado dejan ${money0(ef)} al d\xEDa frente a ${money0(er)} del resto${ef>er?` \u2014 un ${Math.round((ef-er)/er*100)} % m\xE1s`:""}.`,c:B.accent})}let ant=hist.perfil&&hist.perfil.antelacion||[],ultima=ant.find(x=>x.orden===1),totalAnt=ant.reduce((a,x)=>a+x.n,0);if(ultima&&totalAnt){let p=ultima.n/totalAnt*100;p>=20&&puntos.push({t:"Se reserva a \xFAltima hora",d:`${pct(p)} de las reservas entra el mismo d\xEDa o la v\xEDspera (${num(ultima.n)} de ${num(totalAnt)}). Los meses que hoy parecen vac\xEDos se llenan en la \xFAltima semana.`,c:B.accent})}let futuros=(fut&&fut.meses||[]).filter(m=>m.mes>hoy2.slice(0,7));if(futuros.length){let flojo=futuros.reduce((a,b)=>b.ocupacionb.ocupacion>a.ocupacion?b:a);puntos.push({t:"D\xF3nde queda hueco por vender",d:`${mesLabel(fuerte.mes)} va al ${pct(fuerte.ocupacion)} y ${mesLabel(flojo.mes)} al ${pct(flojo.ocupacion)}. Lo vendido de aqu\xED a fin de a\xF1o suma ${money0(futuros.reduce((s,m)=>s+m.recaudacion,0))}.`,c:B.amber})}return puntos.length?__gh("div",{className:"grid grid-cols-1 sm:grid-cols-2 lg:grid-cols-4 gap-3 mb-8","data-gufi-src":"portal/informe.tsx:649"},puntos.map((p,k)=>__gh("div",{key:k,className:"b-card p-4",style:{borderLeft:`3px solid ${p.c}`},"data-gufi-src":"portal/informe.tsx:651"},__gh("div",{className:"text-[14px] font-bold mb-1",style:{color:p.c},"data-gufi-src":"portal/informe.tsx:652"},p.t),__gh("div",{className:"text-[12.5px]",style:{color:B.sub,lineHeight:1.55},"data-gufi-src":"portal/informe.tsx:653"},p.d)))):null}var NoConectado=()=>__gh("div",{className:"rounded-xl px-4 py-3 flex items-start gap-3",style:{background:"#faf7f7",boxShadow:`inset 0 0 0 1px ${B.hair}`},"data-gufi-src":"portal/informe.tsx:663"},__gh(import_lucide_react35.Info,{size:16,style:{color:B.faint,flexShrink:0,marginTop:2}}),__gh("div",{className:"text-[12.5px]",style:{color:B.muted,lineHeight:1.6},"data-gufi-src":"portal/informe.tsx:665"},"Dos cosas de tu informe en PDF no salen aqu\xED, y no es un olvido: los ",__gh("b",{style:{color:B.sub},"data-gufi-src":"portal/informe.tsx:666"},"cobros del TPV")," no entran en Gufi por ning\xFAn sitio, y la ",__gh("b",{style:{color:B.sub},"data-gufi-src":"portal/informe.tsx:667"},"comparaci\xF3n con otros hostels")," de Hostelworld es un vistazo a mano a fichas ajenas. Si el TPV llega a volcar sus ventas, esta pantalla las suma sola. Mientras tanto, no se inventan."));var import_react37=require("react"),import_lucide_react36=require("lucide-react");var MEDIO_COLOR={TPV:"#0f766e",Efectivo:"#a16207",Bizum:"#0e7490",Transferencia:"#4338ca",Otro:"#6b7280"},hoyISO=()=>new Date().toISOString().slice(0,10),canalEstancia=e=>canalDe(e.canal,String(e.codigo).startsWith("HWG-"));function sumar(estancias,medios){let c={estancias:estancias.length,facturado:0,base:0,sin_factura:0,sin_factura_importe:0,canal:0,neto:0,comision:0,recepcion:{},recepcion_total:0,pendiente:0,de_mas:0,diferencia:0,canal_sin_pagar:0,directas:0,pendientes:0};return medios.forEach(m=>{c.recepcion[m]=0}),estancias.forEach(e=>{c.base+=e.base,e.facturado!=null?c.facturado+=e.facturado:(c.sin_factura+=1,c.sin_factura_importe+=e.base),c.canal+=e.canal_bruto,c.neto+=e.canal_neto,c.comision+=e.comision,e.recepcion.forEach(r=>{c.recepcion[r.medio]=(c.recepcion[r.medio]||0)+r.importe}),c.recepcion_total+=e.recepcion_total,c.pendiente+=e.pendiente,c.de_mas+=e.de_mas,e.pendiente>0&&(c.pendientes+=1,e.canal_bruto+e.recepcion_total>0?c.diferencia+=e.pendiente:e.canal==="Direct"?c.directas+=e.pendiente:c.canal_sin_pagar+=e.pendiente)}),c}function Cascada({c,medios}){let total=c.base||1,tramos=[{k:"canal",t:"Pagado por el canal",v:c.canal,color:"#1e3a8a",s:c.comision?`${money2(c.neto)} en el banco + ${money2(c.comision)} de comisi\xF3n`:"lo que ha llegado al banco"},...medios.map(m=>({k:m,t:m==="TPV"?"TPV del hostal":m,v:c.recepcion[m],color:MEDIO_COLOR[m],s:"apuntado en recepci\xF3n"})).filter(x=>x.v>0),{k:"pend",t:"Pendiente de localizar",v:c.pendiente,color:"#d4d4d8",s:"no es \xABsin cobrar\xBB: es lo que Gufi no ve"}];return __gh("div",{className:"b-card p-4 sm:p-5 mb-5","data-gufi-src":"portal/cobros.tsx:53"},__gh("div",{className:"flex flex-wrap items-baseline gap-x-6 gap-y-1 mb-3","data-gufi-src":"portal/cobros.tsx:54"},__gh("div",{"data-gufi-src":"portal/cobros.tsx:55"},__gh("span",{className:"text-[12px] font-semibold uppercase tracking-[.06em]",style:{color:B.faint},"data-gufi-src":"portal/cobros.tsx:55"},"Facturado"),__gh("div",{className:"text-[28px] font-semibold b-num",style:{color:B.ink,letterSpacing:"-.03em"},"data-gufi-src":"portal/cobros.tsx:56"},money2(c.base))),__gh("div",{className:"text-[12.5px]",style:{color:B.muted},"data-gufi-src":"portal/cobros.tsx:57"},num(c.estancias)," estancias",c.sin_factura?` \xB7 ${num(c.sin_factura)} a\xFAn sin factura (cuentan por su reserva, ${money2(c.sin_factura_importe)})`:"")),__gh("div",{style:{display:"flex",height:14,borderRadius:999,overflow:"hidden",background:"#f0f0f2"},"data-gufi-src":"portal/cobros.tsx:59"},tramos.map(x=>x.v>0?__gh("div",{key:x.k,title:`${x.t}: ${money2(x.v)}`,style:{width:`${x.v/total*100}%`,background:x.color},"data-gufi-src":"portal/cobros.tsx:60"}):null)),__gh("div",{className:"mt-3","data-gufi-src":"portal/cobros.tsx:62"},tramos.map(x=>__gh("div",{key:x.k,style:{display:"grid",gridTemplateColumns:"12px minmax(0,1fr) auto auto",gap:10,alignItems:"baseline",padding:"7px 0",borderBottom:"1px solid #f0f0f2"},"data-gufi-src":"portal/cobros.tsx:64"},__gh("span",{className:"p-dot",style:{background:x.color,transform:"translateY(1px)"},"data-gufi-src":"portal/cobros.tsx:65"}),__gh("span",{style:{minWidth:0},"data-gufi-src":"portal/cobros.tsx:66"},__gh("span",{className:"text-[13.5px]",style:{color:B.ink,fontWeight:600},"data-gufi-src":"portal/cobros.tsx:66"},x.t)," ",__gh("span",{className:"text-[12px]",style:{color:B.faint},"data-gufi-src":"portal/cobros.tsx:66"},x.s)),__gh("span",{className:"text-[12px] b-num",style:{color:B.muted},"data-gufi-src":"portal/cobros.tsx:67"},pct(x.v/total*100)),__gh("span",{className:"text-[14px] b-num",style:{color:B.ink,fontWeight:600,minWidth:96,textAlign:"right"},"data-gufi-src":"portal/cobros.tsx:68"},money2(x.v))))),c.pendiente>0?__gh("div",{className:"mt-3 rounded-xl px-3.5 py-3 text-[12.5px]",style:{background:"#fafafa",border:`1px solid ${B.hair}`,color:B.muted,lineHeight:1.6},"data-gufi-src":"portal/cobros.tsx:73"},__gh("b",{style:{color:B.sub},"data-gufi-src":"portal/cobros.tsx:74"},"Qu\xE9 hay en lo pendiente:"),__gh("div",{"data-gufi-src":"portal/cobros.tsx:75"},"\xB7 ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/cobros.tsx:75"},money2(c.directas))," en directas sin ning\xFAn cobro apuntado \u2014 se cobran en recepci\xF3n: ap\xFAntalas abajo."),__gh("div",{"data-gufi-src":"portal/cobros.tsx:76"},"\xB7 ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/cobros.tsx:76"},money2(c.canal_sin_pagar))," en estancias de Booking o Hostelworld de las que a\xFAn no ha llegado el pago."),__gh("div",{"data-gufi-src":"portal/cobros.tsx:77"},"\xB7 ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/cobros.tsx:77"},money2(c.diferencia))," de diferencia en estancias que el canal ya pag\xF3 por menos: casi siempre la comisi\xF3n de Hostelworld, que su informe no trae, o un resto cobrado en recepci\xF3n."),c.de_mas>0?__gh("div",{style:{marginTop:4},"data-gufi-src":"portal/cobros.tsx:78"},"Y hay ",money2(c.de_mas)," localizados de m\xE1s que lo facturado (cobros que superan la factura de su estancia)."):null):null)}function Apuntar({api,token,estancias,medios,onHecho,onClose}){let una=estancias.length===1?estancias[0]:null,[medio,setMedio]=(0,import_react37.useState)("TPV"),[fecha,setFecha]=(0,import_react37.useState)(hoyISO()),[importe,setImporte]=(0,import_react37.useState)(una?String(una.pendiente).replace(".",","):""),[numOp,setNumOp]=(0,import_react37.useState)(""),[notas,setNotas]=(0,import_react37.useState)(""),[estado,setEstado]=(0,import_react37.useState)({ocupado:!1,error:""}),total=estancias.reduce((s,e)=>s+e.pendiente,0);async function guardar3(){setEstado({ocupado:!0,error:""});try{let txt=String(importe).trim(),imp=una?parseFloat(txt.includes(",")?txt.replace(/\./g,"").replace(",","."):txt):null;if(una&&!(imp>0))throw new Error("Pon el importe cobrado.");await api("portal_cobros",{token,accion:"apuntar",codigos:estancias.map(e=>e.codigo),medio,fecha,num_operacion:numOp,notas,importe:una?imp:null}),onHecho()}catch(e){setEstado({ocupado:!1,error:String(e&&e.message||e)})}}return __gh(Hoja,{titulo:una?"Apuntar cobro":`Apuntar cobro de ${num(estancias.length)} estancias`,sub:una?`${una.huesped||una.codigo} \xB7 entrada ${fmtLarga(una.entrada)}`:`Se apunta a cada una lo que le falta: ${money2(total)} en total`,onClose,pie:__gh("div",{style:{display:"flex",alignItems:"center",gap:10},"data-gufi-src":"portal/cobros.tsx:111"},estado.error?__gh("span",{style:{fontSize:12.5,color:B.red,flex:1},"data-gufi-src":"portal/cobros.tsx:112"},estado.error):__gh("span",{style:{flex:1},"data-gufi-src":"portal/cobros.tsx:112"}),__gh("button",{className:"p-btn",onClick:onClose,"data-gufi-src":"portal/cobros.tsx:113"},"Cancelar"),__gh("button",{className:"p-btn p-btn-a",onClick:guardar3,disabled:estado.ocupado,"data-gufi-src":"portal/cobros.tsx:114"},estado.ocupado?__gh(import_lucide_react36.Loader2,{size:15,className:"animate-spin"}):null,"Guardar cobro"))},__gh("div",{className:"p-sec",style:{marginTop:0},"data-gufi-src":"portal/cobros.tsx:117"},"C\xF3mo se cobr\xF3"),__gh("div",{className:"p-seg",style:{flexWrap:"wrap"},"data-gufi-src":"portal/cobros.tsx:118"},medios.map(m=>__gh("button",{key:m,"data-on":medio===m?"1":"0",onClick:()=>setMedio(m),"data-gufi-src":"portal/cobros.tsx:119"},m))),__gh("div",{className:"p-sec","data-gufi-src":"portal/cobros.tsx:121"},"Fecha del cobro"),__gh("input",{type:"date",className:"b-input",value:fecha,max:hoyISO(),onChange:e=>setFecha(e.target.value),"data-gufi-src":"portal/cobros.tsx:122"}),una?__gh(__gf,null,__gh("div",{className:"p-sec","data-gufi-src":"portal/cobros.tsx:125"},"Importe"),__gh("input",{className:"b-input",inputMode:"decimal",value:importe,onChange:e=>setImporte(e.target.value),"data-gufi-src":"portal/cobros.tsx:126"}),__gh("div",{className:"p-note",style:{marginTop:6},"data-gufi-src":"portal/cobros.tsx:127"},"Le faltaban ",money2(una.pendiente)," de ",money2(una.base),".")):null,__gh("div",{className:"p-sec","data-gufi-src":"portal/cobros.tsx:130"},"N\xBA de operaci\xF3n ",__gh("span",{style:{textTransform:"none",letterSpacing:0,fontWeight:400},"data-gufi-src":"portal/cobros.tsx:130"},"(opcional, el del ticket del TPV)")),__gh("input",{className:"b-input",value:numOp,onChange:e=>setNumOp(e.target.value),"data-gufi-src":"portal/cobros.tsx:131"}),__gh("div",{className:"p-sec","data-gufi-src":"portal/cobros.tsx:132"},"Notas ",__gh("span",{style:{textTransform:"none",letterSpacing:0,fontWeight:400},"data-gufi-src":"portal/cobros.tsx:132"},"(opcional)")),__gh("input",{className:"b-input",value:notas,onChange:e=>setNotas(e.target.value),"data-gufi-src":"portal/cobros.tsx:133"}),una?null:__gh("div",{style:{marginTop:16,maxHeight:220,overflowY:"auto"},"data-gufi-src":"portal/cobros.tsx:135"},estancias.map(e=>__gh("div",{key:e.codigo,className:"p-kv","data-gufi-src":"portal/cobros.tsx:136"},__gh("span",{"data-gufi-src":"portal/cobros.tsx:136"},e.huesped||e.codigo," \xB7 ",fmtLarga(e.entrada)),__gh("span",{"data-gufi-src":"portal/cobros.tsx:136"},money2(e.pendiente))))))}function Recorrido({api,token,e,onApuntar,onBorrado,onClose}){let[borrando,setBorrando]=(0,import_react37.useState)(null),[error,setError]=(0,import_react37.useState)("");async function pdf(f){setError("");try{let r=await api("portal_factura_pdf",{token,facturaId:f.id});descargarPdfBase64(r.pdf,r.filename)}catch(x){setError(String(x&&x.message||x))}}async function borrar2(c){if(borrando!==c.id){setBorrando(c.id);return}setError("");try{await api("portal_cobros",{token,accion:"borrar",id:c.id}),onBorrado()}catch(x){setError(String(x&&x.message||x)),setBorrando(null)}}let canal=canalEstancia(e);return __gh(Hoja,{titulo:e.huesped||e.codigo,sub:`${canal} \xB7 ${e.codigo} \xB7 ${fmtLarga(e.entrada)} \u2192 ${fmtLarga(e.salida)} \xB7 ${num(e.camas)} ${e.camas===1?"cama":"camas"}`,onClose,pie:e.pendiente>0?__gh("button",{className:"p-btn p-btn-a",style:{width:"100%"},onClick:onApuntar,"data-gufi-src":"portal/cobros.tsx:161"},__gh(import_lucide_react36.Plus,{size:15}),"Apuntar cobro de ",money2(e.pendiente)):null},error?__gh("div",{className:"p-note",style:{color:B.red,marginBottom:8},"data-gufi-src":"portal/cobros.tsx:162"},error):null,__gh("div",{className:"p-sec",style:{marginTop:0},"data-gufi-src":"portal/cobros.tsx:163"},"1 \xB7 Factura"),e.facturas.length?e.facturas.map(f=>__gh("div",{key:f.id,className:"p-kv","data-gufi-src":"portal/cobros.tsx:165"},__gh("span",{"data-gufi-src":"portal/cobros.tsx:165"},__gh("button",{className:"p-btn p-btn-s",onClick:()=>pdf(f),"data-gufi-src":"portal/cobros.tsx:165"},__gh(import_lucide_react36.FileText,{size:13}),f.numero)," ",__gh("span",{style:{marginLeft:6},"data-gufi-src":"portal/cobros.tsx:165"},fmtLarga(f.fecha))),__gh("span",{"data-gufi-src":"portal/cobros.tsx:165"},money2(f.total)))):__gh("div",{className:"p-kv","data-gufi-src":"portal/cobros.tsx:166"},__gh("span",{"data-gufi-src":"portal/cobros.tsx:166"},"Todav\xEDa sin factura"),__gh("span",{"data-gufi-src":"portal/cobros.tsx:166"},"reserva ",money2(e.importe))),__gh("div",{className:"p-sec","data-gufi-src":"portal/cobros.tsx:168"},"2 \xB7 Pagado por el canal"),e.canal_pagos.length?e.canal_pagos.map((p,k)=>__gh("div",{key:k,className:"p-kv","data-gufi-src":"portal/cobros.tsx:170"},__gh("span",{"data-gufi-src":"portal/cobros.tsx:171"},p.canal," \xB7 ",fmtLarga(p.fecha)," \xB7 cuenta \u2022\u2022\u2022\u2022",p.cuenta||"\u2014",p.bruto!=null?` \xB7 comisi\xF3n ${money2(p.bruto-p.neto)}`:""),__gh("span",{"data-gufi-src":"portal/cobros.tsx:172"},money2(p.bruto!=null?p.bruto:p.neto)))):__gh("div",{className:"p-kv","data-gufi-src":"portal/cobros.tsx:174"},__gh("span",{"data-gufi-src":"portal/cobros.tsx:174"},e.canal==="Direct"?"Una directa no la paga ning\xFAn canal":"A\xFAn no ha llegado el pago del canal"),__gh("span",{"data-gufi-src":"portal/cobros.tsx:174"},"\u2014")),__gh("div",{className:"p-sec","data-gufi-src":"portal/cobros.tsx:176"},"3 \xB7 Cobrado en recepci\xF3n"),e.recepcion.length?e.recepcion.map(c=>__gh("div",{key:c.id,className:"p-kv","data-gufi-src":"portal/cobros.tsx:178"},__gh("span",{"data-gufi-src":"portal/cobros.tsx:179"},__gh("span",{style:{color:MEDIO_COLOR[c.medio],fontWeight:600},"data-gufi-src":"portal/cobros.tsx:180"},c.medio)," \xB7 ",fmtLarga(c.fecha),c.num_operacion?` \xB7 op. ${c.num_operacion}`:"",c.notas?` \xB7 ${c.notas}`:"",__gh("button",{className:"p-btn p-btn-s",style:{marginLeft:8,height:24,color:borrando===c.id?B.red:B.muted},onClick:()=>borrar2(c),"data-gufi-src":"portal/cobros.tsx:181"},__gh(import_lucide_react36.Trash2,{size:12}),borrando===c.id?"Pulsa otra vez":"Quitar")),__gh("span",{"data-gufi-src":"portal/cobros.tsx:183"},money2(c.importe)))):__gh("div",{className:"p-kv","data-gufi-src":"portal/cobros.tsx:185"},__gh("span",{"data-gufi-src":"portal/cobros.tsx:185"},"Nada apuntado"),__gh("span",{"data-gufi-src":"portal/cobros.tsx:185"},"\u2014")),__gh("div",{className:"p-sec","data-gufi-src":"portal/cobros.tsx:187"},"4 \xB7 Lo que queda"),__gh("div",{className:"p-kv","data-gufi-src":"portal/cobros.tsx:188"},__gh("span",{"data-gufi-src":"portal/cobros.tsx:188"},"Facturado"),__gh("span",{"data-gufi-src":"portal/cobros.tsx:188"},money2(e.base))),__gh("div",{className:"p-kv","data-gufi-src":"portal/cobros.tsx:189"},__gh("span",{"data-gufi-src":"portal/cobros.tsx:189"},"Localizado (canal + recepci\xF3n)"),__gh("span",{"data-gufi-src":"portal/cobros.tsx:189"},money2(e.canal_bruto+e.recepcion_total))),__gh("div",{className:"p-kv","data-gufi-src":"portal/cobros.tsx:190"},__gh("span",{"data-gufi-src":"portal/cobros.tsx:190"},"Pendiente de localizar"),__gh("span",{style:{color:e.pendiente>0?B.amber:B.green,fontWeight:600},"data-gufi-src":"portal/cobros.tsx:190"},e.pendiente>0?money2(e.pendiente):"nada")),e.de_mas>0?__gh("div",{className:"p-kv","data-gufi-src":"portal/cobros.tsx:191"},__gh("span",{"data-gufi-src":"portal/cobros.tsx:191"},"Localizado de m\xE1s"),__gh("span",{style:{color:B.amber},"data-gufi-src":"portal/cobros.tsx:191"},money2(e.de_mas))):null)}var FILTROS=[["todas","Todas"],["pendientes","Con algo pendiente"],["directas","Directas sin cobro"],["recepcion","Con cobro en recepci\xF3n"],["sin_factura","Sin factura"]];function Cobros({api,token,year,propiedadIds,ownerName}){let movil=useIsMobile(),[version,setVersion]=(0,import_react37.useState)(0),d2=useScript(api,"portal_cobros",{token,accion:"lista",desde:`${year}-01-01`,hasta:`${Number(year)+1}-01-01`,version},!0),[filtro,setFiltro]=(0,import_react37.useState)("todas"),[q,setQ]=(0,import_react37.useState)(""),[marcadas,setMarcadas]=(0,import_react37.useState)({}),[abierta,setAbierta]=(0,import_react37.useState)(null),[apuntar,setApuntar]=(0,import_react37.useState)(null),[cuantas,setCuantas]=(0,import_react37.useState)(200),[errorExport,setErrorExport]=(0,import_react37.useState)(""),medios=d2.datos&&d2.datos.medios||[],visibles=(0,import_react37.useMemo)(()=>{let todas=d2.datos&&d2.datos.estancias||[];if(!propiedadIds||!propiedadIds.length)return todas;let dentro=new Set(propiedadIds.map(Number));return todas.filter(e=>(e.unidades||[]).some(u=>dentro.has(Number(u))))},[d2.datos,propiedadIds]),c=(0,import_react37.useMemo)(()=>sumar(visibles,medios),[visibles,medios]),norm=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),filas=(0,import_react37.useMemo)(()=>{let n=norm(q);return visibles.filter(e=>filtro==="pendientes"&&!(e.pendiente>0)||filtro==="directas"&&!(e.canal==="Direct"&&e.pendiente>0&&!e.recepcion.length)||filtro==="recepcion"&&!e.recepcion.length||filtro==="sin_factura"&&e.facturado!=null?!1:!n||norm(`${e.huesped} ${e.codigo} ${e.facturas.map(f=>f.numero).join(" ")}`).includes(n))},[visibles,filtro,q]),elegidas=filas.filter(e=>marcadas[e.codigo]&&e.pendiente>0),recargar=()=>{setMarcadas({}),setApuntar(null),setVersion(v=>v+1)},abiertaViva=abierta?visibles.find(e=>e.codigo===abierta):null;async function exportar2(){setErrorExport("");try{await exportarTabla(`Cobros_${year}.xlsx`,"Cobros",`Recorrido de cobro \xB7 ${ownerName||""} \xB7 ${year}`,`Facturado ${money2(c.base)} \xB7 canal ${money2(c.canal)} \xB7 recepci\xF3n ${money2(c.recepcion_total)} \xB7 pendiente ${money2(c.pendiente)}`,[{t:"Entrada",w:12,fecha:!0},{t:"Salida",w:12,fecha:!0},{t:"Estancia",w:18},{t:"Hu\xE9sped",w:28},{t:"Canal",w:13},{t:"Camas",w:8,n:!0},{t:"Factura",w:16},{t:"Facturado",w:13,eur:!0},{t:"Pagado por el canal",w:16,eur:!0},{t:"Neto en banco",w:14,eur:!0},{t:"Comisi\xF3n",w:12,eur:!0},{t:"Pagos del canal",w:34},{t:"Cobrado en recepci\xF3n",w:16,eur:!0},{t:"Medios",w:30},{t:"Pendiente",w:12,eur:!0}],filas.map(e=>[e.entrada,e.salida,e.codigo,e.huesped||"",canalEstancia(e),e.camas,e.facturas.map(f=>f.numero).join(", "),e.base,e.canal_bruto,e.canal_neto,e.comision,e.canal_pagos.map(p=>`${p.canal} ${p.fecha} \u2022\u2022\u2022\u2022${p.cuenta}`).join(" | "),e.recepcion_total,e.recepcion.map(r=>`${r.medio} ${r.fecha}${r.num_operacion?" op "+r.num_operacion:""}`).join(" | "),e.pendiente]))}catch(e){setErrorExport(String(e&&e.message||e))}}return d2.error?__gh("div",{className:"b-card","data-gufi-src":"portal/cobros.tsx:246"},__gh(Empty,{text:`No se han podido leer los cobros: ${d2.error}`})):d2.cargando?__gh(Spin,null):visibles.length?__gh("div",{className:"b-fade","data-gufi-src":"portal/cobros.tsx:251"},__gh(Bloque3,{titulo:"De lo facturado a lo cobrado",sub:`Estancias que ya han entrado en ${year}, por fecha de entrada`,icono:import_lucide_react36.Wallet}),__gh(Cascada,{c,medios}),__gh("div",{className:"flex flex-wrap items-center gap-2 mb-3","data-gufi-src":"portal/cobros.tsx:255"},FILTROS.map(([k,l])=>__gh(FChip,{key:k,active:filtro===k,onClick:()=>{setFiltro(k),setCuantas(200)}},l))),__gh("div",{className:"flex flex-wrap items-center gap-2 mb-3","data-gufi-src":"portal/cobros.tsx:258"},__gh("label",{className:"p-pill",style:{cursor:"text",flex:movil?"1 1 100%":"0 1 320px"},"data-gufi-src":"portal/cobros.tsx:259"},__gh(import_lucide_react36.Search,{size:15,style:{color:B.faint}}),__gh("input",{value:q,onChange:ev=>setQ(ev.target.value),placeholder:"Hu\xE9sped, estancia o factura",style:{border:"none",outline:"none",background:"transparent",fontSize:13.5,flex:1,minWidth:0,color:B.ink},"data-gufi-src":"portal/cobros.tsx:261"})),__gh("span",{style:{flex:1},"data-gufi-src":"portal/cobros.tsx:263"}),elegidas.length?__gh("button",{className:"p-btn p-btn-a",onClick:()=>setApuntar(elegidas),"data-gufi-src":"portal/cobros.tsx:264"},__gh(import_lucide_react36.Plus,{size:15}),"Apuntar cobro de ",num(elegidas.length)," (",money0(elegidas.reduce((s,e)=>s+e.pendiente,0)),")"):null,__gh("button",{className:"p-btn",onClick:exportar2,"data-gufi-src":"portal/cobros.tsx:265"},__gh(import_lucide_react36.Download,{size:15}),"Excel")),errorExport?__gh("div",{className:"p-note",style:{color:B.red,marginBottom:8},"data-gufi-src":"portal/cobros.tsx:267"},errorExport):null,__gh("div",{className:"b-card overflow-hidden","data-gufi-src":"portal/cobros.tsx:269"},filas.length?__gh("div",{style:{overflowX:"auto"},"data-gufi-src":"portal/cobros.tsx:271"},__gh("table",{className:"p-table",style:{minWidth:920},"data-gufi-src":"portal/cobros.tsx:272"},__gh("thead",{"data-gufi-src":"portal/cobros.tsx:273"},__gh("tr",{"data-gufi-src":"portal/cobros.tsx:273"},__gh("th",{style:{width:34},"data-gufi-src":"portal/cobros.tsx:274"}),__gh("th",{"data-gufi-src":"portal/cobros.tsx:275"},"Entrada"),__gh("th",{"data-gufi-src":"portal/cobros.tsx:275"},"Hu\xE9sped"),__gh("th",{"data-gufi-src":"portal/cobros.tsx:275"},"Canal"),__gh("th",{"data-gufi-src":"portal/cobros.tsx:275"},"Factura"),__gh("th",{"data-r":"1","data-gufi-src":"portal/cobros.tsx:276"},"Facturado"),__gh("th",{"data-r":"1","data-gufi-src":"portal/cobros.tsx:276"},"Canal"),__gh("th",{"data-r":"1","data-gufi-src":"portal/cobros.tsx:276"},"Recepci\xF3n"),__gh("th",{"data-r":"1","data-gufi-src":"portal/cobros.tsx:276"},"Pendiente"))),__gh("tbody",{"data-gufi-src":"portal/cobros.tsx:278"},filas.slice(0,cuantas).map(e=>{let canal=canalEstancia(e);return __gh("tr",{key:e.codigo,className:"p-click",onClick:()=>setAbierta(e.codigo),"data-gufi-src":"portal/cobros.tsx:282"},__gh("td",{onClick:ev=>ev.stopPropagation(),"data-gufi-src":"portal/cobros.tsx:283"},e.pendiente>0?__gh("input",{type:"checkbox",checked:!!marcadas[e.codigo],onChange:ev=>setMarcadas(m=>({...m,[e.codigo]:ev.target.checked})),"data-gufi-src":"portal/cobros.tsx:284"}):null),__gh("td",{"data-gufi-src":"portal/cobros.tsx:286"},fmtLarga(e.entrada)),__gh("td",{style:{maxWidth:220,overflow:"hidden",textOverflow:"ellipsis"},"data-gufi-src":"portal/cobros.tsx:287"},e.huesped||__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/cobros.tsx:287"},e.codigo)),__gh("td",{"data-gufi-src":"portal/cobros.tsx:288"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7},"data-gufi-src":"portal/cobros.tsx:288"},__gh("span",{className:"p-dot",style:{background:canalColor(canal)},"data-gufi-src":"portal/cobros.tsx:288"}),canal)),__gh("td",{style:{color:e.facturas.length?B.ink:B.amber},"data-gufi-src":"portal/cobros.tsx:289"},e.facturas.length?e.facturas.map(f=>f.numero).join(", "):"sin factura"),__gh("td",{"data-r":"1","data-gufi-src":"portal/cobros.tsx:290"},money2(e.base)),__gh("td",{"data-r":"1",style:{color:e.canal_bruto?B.ink:B.faint},"data-gufi-src":"portal/cobros.tsx:291"},e.canal_bruto?money2(e.canal_bruto):"\u2014"),__gh("td",{"data-r":"1","data-gufi-src":"portal/cobros.tsx:292"},e.recepcion.length?__gh("span",{style:{color:MEDIO_COLOR[e.recepcion[0].medio]},"data-gufi-src":"portal/cobros.tsx:292"},money2(e.recepcion_total)," \xB7 ",[...new Set(e.recepcion.map(r=>r.medio))].join(", ")):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/cobros.tsx:292"},"\u2014")),__gh("td",{"data-r":"1",style:{fontWeight:600,color:e.pendiente>0?B.amber:B.green},"data-gufi-src":"portal/cobros.tsx:293"},e.pendiente>0?money2(e.pendiente):"cobrada"))})))):__gh(Empty,{text:"Ninguna estancia con ese filtro."}),filas.length>cuantas?__gh("div",{className:"p-note",style:{padding:14,justifyContent:"center"},"data-gufi-src":"portal/cobros.tsx:301"},"Se ven ",num(cuantas)," de ",num(filas.length)," \xB7 ",__gh("button",{className:"p-btn p-btn-s",onClick:()=>setCuantas(n=>n+300),"data-gufi-src":"portal/cobros.tsx:301"},"Ver m\xE1s")):null),__gh("div",{className:"text-[12.5px] mt-3",style:{color:B.muted,lineHeight:1.6},"data-gufi-src":"portal/cobros.tsx:303"},"El canal sale de los informes de pagos de Booking, Hostelworld y Stripe que importa ",marca().nombre,"; la recepci\xF3n, de lo que apunt\xE1is aqu\xED. El TPV del hostal no liquida en una cuenta de ",marca().nombre,", as\xED que Gufi s\xF3lo lo sabe si se apunta."),abiertaViva&&!apuntar?__gh(Recorrido,{api,token,e:abiertaViva,onClose:()=>setAbierta(null),onApuntar:()=>setApuntar([abiertaViva]),onBorrado:recargar}):null,apuntar?__gh(Apuntar,{api,token,estancias:apuntar,medios,onHecho:recargar,onClose:()=>setApuntar(null)}):null):__gh("div",{className:"b-card","data-gufi-src":"portal/cobros.tsx:248"},__gh(Empty,{text:`Ninguna estancia ha entrado en ${year}.`}))}var import_react38=require("react"),import_lucide_react37=require("lucide-react");var quien=concepto=>{let util=String(concepto||"").split("/").map(x=>x.trim()).filter(Boolean).filter(x=>!/^LIQ\.?\s*OP/i.test(x));return util.length>1?util[util.length-1]:String(concepto||"")};function Cuenta2({c}){let movil=useIsMobile(),[error,setError]=(0,import_react38.useState)("");async function exportar2(){setError("");try{await exportarTabla(`Cuenta_${limpioArchivo(c.nombre)}.xlsx`,"Movimientos",`${c.nombre} \xB7 ${c.empresa}`,`Del ${fmtLarga(c.desde)} al ${fmtLarga(c.extracto_hasta)} \xB7 saldo ${money2(c.saldo)}`,[{t:"Fecha",w:12,fecha:!0},{t:"Concepto",w:60},{t:"Importe",w:14,eur:!0},{t:"Saldo",w:14,eur:!0},{t:"Pago del canal",w:16},{t:"Reservas",w:10,n:!0},{t:"Nota",w:50}],c.movimientos.map(m=>[m.fecha,m.concepto,m.importe,m.saldo,m.pago?m.pago.canal:"",m.pago?m.pago.reservas:"",m.nota||""]))}catch(e){setError(String(e&&e.message||e))}}return __gh("div",{className:"mb-6","data-gufi-src":"portal/banco.tsx:34"},__gh("div",{className:"b-card p-4 sm:p-5 mb-4",style:{display:"flex",flexWrap:"wrap",gap:18,alignItems:"center"},"data-gufi-src":"portal/banco.tsx:35"},__gh("div",{style:{flex:"1 1 240px",minWidth:0},"data-gufi-src":"portal/banco.tsx:36"},__gh("div",{className:"text-[15px] font-semibold",style:{color:B.ink},"data-gufi-src":"portal/banco.tsx:37"},c.nombre),__gh("div",{className:"text-[12.5px] mt-1",style:{color:B.muted},"data-gufi-src":"portal/banco.tsx:38"},c.empresa," \xB7 ",String(c.banco||"").toUpperCase()," \u2022\u2022\u2022\u2022",c.ultimos," \xB7 extracto hasta el ",fmtLarga(c.extracto_hasta))),__gh("div",{style:{textAlign:"right"},"data-gufi-src":"portal/banco.tsx:40"},__gh("div",{className:"text-[11px] font-semibold uppercase tracking-[.06em]",style:{color:B.faint},"data-gufi-src":"portal/banco.tsx:41"},"Saldo"),__gh("div",{className:"text-[28px] font-semibold b-num",style:{color:B.ink,letterSpacing:"-.03em"},"data-gufi-src":"portal/banco.tsx:42"},c.saldo==null?"\u2014":money2(c.saldo)))),__gh("div",{className:"flex flex-wrap items-center gap-2 mb-3","data-gufi-src":"portal/banco.tsx:45"},__gh("span",{className:"text-[13px]",style:{color:B.muted},"data-gufi-src":"portal/banco.tsx:46"},"Desde el ",fmtLarga(c.desde),": ",__gh("b",{style:{color:B.green},"data-gufi-src":"portal/banco.tsx:47"},money2(c.entradas))," de entradas",c.salidas?__gh(__gf,null," y ",__gh("b",{style:{color:B.red},"data-gufi-src":"portal/banco.tsx:47"},money2(c.salidas))," de salidas"):null," en ",num(c.movimientos.length)," movimientos"),__gh("span",{style:{flex:1},"data-gufi-src":"portal/banco.tsx:49"}),__gh("button",{className:"p-btn",onClick:exportar2,disabled:!c.movimientos.length,"data-gufi-src":"portal/banco.tsx:50"},__gh(import_lucide_react37.Download,{size:15}),"Excel")),error?__gh("div",{className:"p-note",style:{color:B.red,marginBottom:8},"data-gufi-src":"portal/banco.tsx:52"},error):null,__gh("div",{className:"b-card overflow-hidden","data-gufi-src":"portal/banco.tsx:53"},c.movimientos.length?movil?__gh("div",{className:"p-3","data-gufi-src":"portal/banco.tsx:55"},c.movimientos.map(m=>__gh("div",{key:m.id,className:"b-row","data-gufi-src":"portal/banco.tsx:57"},__gh("div",{className:"flex items-baseline justify-between gap-3","data-gufi-src":"portal/banco.tsx:58"},__gh("span",{className:"text-[13px]",style:{color:B.muted},"data-gufi-src":"portal/banco.tsx:59"},fmtLarga(m.fecha)),__gh("span",{className:"text-[15px] font-semibold b-num",style:{color:m.importe<0?B.red:B.ink},"data-gufi-src":"portal/banco.tsx:60"},money2(m.importe))),__gh("div",{className:"text-[13px] mt-1",style:{color:B.ink},"data-gufi-src":"portal/banco.tsx:62"},quien(m.concepto)),m.pago?__gh("div",{className:"text-[12px] mt-1",style:{color:canalColor(m.pago.canal)},"data-gufi-src":"portal/banco.tsx:63"},"Pago de ",m.pago.canal," \xB7 ",num(m.pago.reservas)," reservas"):null,m.nota?__gh("div",{className:"text-[12px] mt-1",style:{color:B.faint},"data-gufi-src":"portal/banco.tsx:64"},m.nota):null))):__gh("table",{className:"p-table","data-gufi-src":"portal/banco.tsx:69"},__gh("thead",{"data-gufi-src":"portal/banco.tsx:70"},__gh("tr",{"data-gufi-src":"portal/banco.tsx:70"},__gh("th",{"data-gufi-src":"portal/banco.tsx:70"},"Fecha"),__gh("th",{"data-gufi-src":"portal/banco.tsx:70"},"Concepto"),__gh("th",{"data-gufi-src":"portal/banco.tsx:70"},"Qu\xE9 es"),__gh("th",{"data-r":"1","data-gufi-src":"portal/banco.tsx:70"},"Importe"),__gh("th",{"data-r":"1","data-gufi-src":"portal/banco.tsx:70"},"Saldo"))),__gh("tbody",{"data-gufi-src":"portal/banco.tsx:71"},c.movimientos.map(m=>__gh("tr",{key:m.id,"data-gufi-src":"portal/banco.tsx:73"},__gh("td",{"data-gufi-src":"portal/banco.tsx:74"},fmtLarga(m.fecha)),__gh("td",{title:m.concepto,style:{maxWidth:320,overflow:"hidden",textOverflow:"ellipsis"},"data-gufi-src":"portal/banco.tsx:75"},quien(m.concepto)),__gh("td",{style:{whiteSpace:"normal",maxWidth:340,fontSize:12.5},"data-gufi-src":"portal/banco.tsx:76"},m.pago?__gh("span",{style:{color:canalColor(m.pago.canal),fontWeight:600},"data-gufi-src":"portal/banco.tsx:77"},"Pago de ",m.pago.canal," \xB7 ",num(m.pago.reservas)," reservas"):m.nota?__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/banco.tsx:78"},m.nota):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/banco.tsx:78"},"\u2014")),__gh("td",{"data-r":"1",style:{fontWeight:600,color:m.importe<0?B.red:B.ink},"data-gufi-src":"portal/banco.tsx:80"},money2(m.importe)),__gh("td",{"data-r":"1",style:{color:B.muted},"data-gufi-src":"portal/banco.tsx:81"},m.saldo==null?"\u2014":money2(m.saldo)))))):__gh(Empty,{text:"Sin movimientos en estas fechas."})))}function Banco({api,token}){let d2=useScript(api,"portal_banco",{token},!0);return d2.error?__gh("div",{className:"b-card","data-gufi-src":"portal/banco.tsx:94"},__gh(Empty,{text:`No se ha podido leer la cuenta: ${d2.error}`})):d2.cargando?__gh(Spin,null):__gh("div",{className:"b-fade","data-gufi-src":"portal/banco.tsx:97"},__gh(Bloque3,{titulo:"Cuenta del hostal",sub:`El extracto que sube ${marca().nombre}, en solo lectura. \xDAltimos 90 d\xEDas.`,icono:import_lucide_react37.Landmark}),d2.datos.cuentas.length?d2.datos.cuentas.map(c=>__gh(Cuenta2,{key:c.nombre,c})):__gh("div",{className:"b-card","data-gufi-src":"portal/banco.tsx:100"},__gh(Empty,{text:`Tu hostal todav\xEDa no tiene una cuenta de ${marca().nombre} enlazada. P\xEDdeselo a ${marca().nombre}.`})))}var import_react39=require("react"),import_lucide_react38=require("lucide-react");var NOMBRE={reservas:"Reservas",facturas:"Facturas",cobros:"Cobros del canal",recepcion:"Cobros en recepci\xF3n",viajeros:"Viajeros",informe:"Informe d\xEDa a d\xEDa"};function Copiar({texto}){let[hecho,setHecho]=(0,import_react39.useState)(!1);async function copiar(){await navigator.clipboard.writeText(texto),setHecho(!0),setTimeout(()=>setHecho(!1),1600)}return __gh("button",{className:"p-btn p-btn-s",onClick:copiar,"data-gufi-src":"portal/datos.tsx:22"},hecho?__gh(import_lucide_react38.Check,{size:13,style:{color:B.green}}):__gh(import_lucide_react38.Copy,{size:13}),hecho?"Copiada":"Copiar")}function Datos({api,token}){let[version,setVersion]=(0,import_react39.useState)(0),d2=useScript(api,"portal_datos",{token,accion:"ver",version},!0),[nombre,setNombre]=(0,import_react39.useState)(""),[ocupado,setOcupado]=(0,import_react39.useState)(!1),[error,setError]=(0,import_react39.useState)(""),[revocando,setRevocando]=(0,import_react39.useState)(null),[verClave,setVerClave]=(0,import_react39.useState)({}),[formato,setFormato]=(0,import_react39.useState)("csv"),anio=new Date().getFullYear();async function accion(input){setOcupado(!0),setError("");try{await api("portal_datos",{token,...input}),setNombre(""),setRevocando(null),setVersion(v=>v+1)}catch(e){setError(String(e&&e.message||e))}setOcupado(!1)}if(d2.error)return __gh("div",{className:"b-card","data-gufi-src":"portal/datos.tsx:44"},__gh(Empty,{text:d2.error}));if(d2.cargando)return __gh(Spin,null);let{claves,url,tablas,formatos,max_activas}=d2.datos,activas=claves.filter(k=>k.activa),clave=activas[0],enlace4=t2=>`${url}?clave=${encodeURIComponent(clave.clave)}&tabla=${t2.tabla}${t2.fechas?`&desde=${anio}-01-01&hasta=${anio}-12-31`:""}${formato==="json"?"&formato=json":""}`;return __gh("div",{className:"b-fade","data-gufi-src":"portal/datos.tsx:52"},__gh(Bloque3,{titulo:"Tus datos, en solo lectura",sub:"Para Excel, una IA o tus propios informes: se actualizan solos, sin pedirnos nada",icono:import_lucide_react38.KeyRound}),__gh("div",{className:"b-card p-4 sm:p-5 mb-5 text-[13px]",style:{color:B.sub,lineHeight:1.65},"data-gufi-src":"portal/datos.tsx:55"},__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/datos.tsx:56"},"En Excel:")," Datos \u2192 Obtener datos \u2192 Desde la web \u2192 pega el enlace de la tabla. Luego \xABActualizar todo\xBB trae lo \xFAltimo."," ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/datos.tsx:57"},"En Google Sheets:")," ",__gh("code",{style:{fontSize:12},"data-gufi-src":"portal/datos.tsx:57"},'=IMPORTDATA("enlace")'),"."," ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/datos.tsx:58"},"Una IA")," puede leer el mismo enlace.",__gh("div",{style:{marginTop:8,color:B.muted},"data-gufi-src":"portal/datos.tsx:59"},"Nadie puede cambiar nada desde aqu\xED: s\xF3lo se lee. La clave es tuya y da acceso a los datos de tu hostal, as\xED que tr\xE1tala como una contrase\xF1a: si se escapa, rev\xF3cala y crea otra. Las fechas de los enlaces se cambian en ",__gh("code",{style:{fontSize:12},"data-gufi-src":"portal/datos.tsx:61"},"desde=")," y ",__gh("code",{style:{fontSize:12},"data-gufi-src":"portal/datos.tsx:61"},"hasta="),".")),error?__gh("div",{className:"p-note",style:{color:B.red,marginBottom:10},"data-gufi-src":"portal/datos.tsx:65"},error):null,clave?__gh("div",{className:"b-card overflow-hidden mb-5","data-gufi-src":"portal/datos.tsx:68"},__gh("div",{style:{display:"flex",gap:12,alignItems:"center",padding:"13px 18px",borderBottom:`1px solid ${B.hair}`,flexWrap:"wrap"},"data-gufi-src":"portal/datos.tsx:69"},__gh(Seg,{value:formato,onChange:setFormato,options:[["csv","CSV \xB7 Excel"],["json","JSON \xB7 aplicaci\xF3n"]]}),__gh("span",{className:"text-[12.5px]",style:{color:B.muted,flex:"1 1 260px",lineHeight:1.5},"data-gufi-src":"portal/datos.tsx:71"},formatos[formato])),tablas.map(t2=>__gh("div",{key:t2.tabla,style:{display:"flex",gap:12,alignItems:"center",padding:"13px 18px",borderBottom:"1px solid #f0f0f2",flexWrap:"wrap"},"data-gufi-src":"portal/datos.tsx:74"},__gh("div",{style:{flex:"1 1 280px",minWidth:0},"data-gufi-src":"portal/datos.tsx:75"},__gh("div",{className:"text-[14px] font-semibold",style:{color:B.ink},"data-gufi-src":"portal/datos.tsx:76"},NOMBRE[t2.tabla]||t2.tabla),__gh("div",{className:"text-[12.5px]",style:{color:B.muted,marginTop:2},"data-gufi-src":"portal/datos.tsx:77"},t2.que,t2.fechas?` Enlace con el a\xF1o ${anio}.`:"")),__gh("div",{style:{display:"flex",gap:6},"data-gufi-src":"portal/datos.tsx:79"},__gh(Copiar,{texto:enlace4(t2)}),__gh("a",{className:"p-btn p-btn-s",href:enlace4(t2),target:"_blank",rel:"noreferrer","data-gufi-src":"portal/datos.tsx:81"},__gh(import_lucide_react38.Download,{size:13}),formato==="json"?"JSON":"CSV"))))):__gh("div",{className:"b-card mb-5","data-gufi-src":"portal/datos.tsx:87"},__gh(Empty,{text:"No tienes ninguna clave activa. Crea una abajo para tener tus enlaces."})),__gh("div",{className:"b-card overflow-hidden","data-gufi-src":"portal/datos.tsx:90"},__gh("div",{style:{padding:"14px 18px",borderBottom:`1px solid ${B.hair}`,display:"flex",alignItems:"baseline",gap:10},"data-gufi-src":"portal/datos.tsx:91"},__gh("span",{className:"text-[15px] font-semibold",style:{color:B.ink},"data-gufi-src":"portal/datos.tsx:92"},"Claves"),__gh("span",{className:"p-note","data-gufi-src":"portal/datos.tsx:93"},num(activas.length)," de ",num(max_activas)," activas \xB7 los enlaces de arriba usan la m\xE1s reciente")),claves.map(k=>__gh("div",{key:k.id,style:{display:"flex",gap:12,alignItems:"center",padding:"12px 18px",borderBottom:"1px solid #f0f0f2",flexWrap:"wrap",opacity:k.activa?1:.55},"data-gufi-src":"portal/datos.tsx:96"},__gh("div",{style:{flex:"1 1 280px",minWidth:0},"data-gufi-src":"portal/datos.tsx:97"},__gh("div",{className:"b-num",style:{fontSize:13,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace",color:B.ink,overflow:"hidden",textOverflow:"ellipsis"},"data-gufi-src":"portal/datos.tsx:98"},verClave[k.id]?k.clave:`${k.clave.slice(0,5)}\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022${k.clave.slice(-4)}`),__gh("div",{className:"text-[12px]",style:{color:B.muted,marginTop:2},"data-gufi-src":"portal/datos.tsx:101"},k.activa?"Activa":"Revocada"," \xB7 creada el ",fmtLarga(k.creada)," \xB7 ",k.usos?`${num(k.usos)} usos, el \xFAltimo el ${fmtLarga(k.ultimo_uso)}`:"sin usar todav\xEDa",k.notas?` \xB7 ${k.notas}`:"")),k.activa?__gh("div",{style:{display:"flex",gap:6},"data-gufi-src":"portal/datos.tsx:106"},__gh("button",{className:"p-btn p-btn-s",onClick:()=>setVerClave(v=>({...v,[k.id]:!v[k.id]})),"data-gufi-src":"portal/datos.tsx:107"},verClave[k.id]?"Ocultar":"Ver"),__gh(Copiar,{texto:k.clave}),__gh("button",{className:"p-btn p-btn-s",disabled:ocupado,style:{color:revocando===k.id?B.red:void 0},onClick:()=>revocando===k.id?accion({accion:"revocar",id:k.id}):setRevocando(k.id),"data-gufi-src":"portal/datos.tsx:109"},revocando===k.id?"Pulsa otra vez para revocar":"Revocar")):null)),activas.lengthsetNombre(e.target.value),"data-gufi-src":"portal/datos.tsx:119"}),__gh("button",{className:"p-btn p-btn-a",disabled:ocupado,onClick:()=>accion({accion:"crear",nombre}),"data-gufi-src":"portal/datos.tsx:120"},__gh(import_lucide_react38.Plus,{size:15}),"Nueva clave")):null))}async function descargarFactura(api,token,facturaId){let r=await api("portal_factura_pdf",{token,facturaId}),bin=atob(r.pdf),bytes=new Uint8Array(bin.length);for(let i=0;i{document.body.removeChild(a),URL.revokeObjectURL(url)},120)}function unidadesDe(propiedades,sel){if(!sel||sel==="all")return[];if(sel.startsWith("h:")){let h=sel.slice(2);return propiedades.filter(p=>habitacionDe(p.nickname)===h).map(p=>p.id)}return sel.startsWith("u:")?[Number(sel.slice(2))]:[]}function nombreDeSeleccion(propiedades,sel){if(!sel||sel==="all")return"";if(sel.startsWith("h:"))return sel.slice(2);let p=propiedades.find(x=>String(x.id)===sel.slice(2));return p?unidadDe(p.nickname):""}var Selector=({propiedades,sel,setSel,year,setYear,years,conAnio})=>{let habitaciones=(0,import_react40.useMemo)(()=>{let m={};return propiedades.forEach(p=>{let h=habitacionDe(p.nickname);h&&(m[h]=m[h]||[]).push(p)}),Object.keys(m).length&&Object.values(m).reduce((a,v)=>a+v.length,0)===propiedades.length?Object.entries(m).map(([h,ps])=>({h,n:ps.length})).sort((a,b)=>a.h.localeCompare(b.h,"es",{numeric:!0})):[]},[propiedades]);return __gh("div",{className:"flex flex-wrap items-center gap-2.5 mb-4","data-gufi-src":"portal/hostel.tsx:64"},__gh("div",{className:"relative","data-gufi-src":"portal/hostel.tsx:65"},__gh("select",{value:sel,onChange:e=>setSel(e.target.value),className:"b-input b-press appearance-none pr-9 font-medium cursor-pointer",style:{maxWidth:360},"data-gufi-src":"portal/hostel.tsx:66"},__gh("option",{value:"all","data-gufi-src":"portal/hostel.tsx:67"},habitaciones.length?`Todo el establecimiento (${propiedades.length} camas)`:`Todas mis propiedades (${propiedades.length})`),habitaciones.length?__gh("optgroup",{label:"Habitaciones","data-gufi-src":"portal/hostel.tsx:69"},habitaciones.map(x=>__gh("option",{key:x.h,value:`h:${x.h}`,"data-gufi-src":"portal/hostel.tsx:70"},x.h," \xB7 ",x.n," camas"))):null,__gh("optgroup",{label:habitaciones.length?"Camas sueltas":"Propiedades","data-gufi-src":"portal/hostel.tsx:73"},propiedades.map(p=>__gh("option",{key:p.id,value:`u:${p.id}`,"data-gufi-src":"portal/hostel.tsx:74"},unidadDe(p.nickname))))),__gh(import_lucide_react39.ChevronRight,{size:14,className:"pointer-events-none absolute right-3 top-1/2 -translate-y-1/2 rotate-90",style:{color:B.faint}})),conAnio?__gh("select",{value:year,onChange:e=>setYear(e.target.value),className:"b-input b-press appearance-none font-medium cursor-pointer",style:{width:100},"data-gufi-src":"portal/hostel.tsx:80"},years.map(y=>__gh("option",{key:y,value:y,"data-gufi-src":"portal/hostel.tsx:81"},y))):null)};function ReservasTab({resData,txData,cocData,facData,resLoading,ownerName,api,token,onEmitida,onCobros,year,propiedadIds}){let[lens,setLens]=(0,import_react40.useState)("reserva"),[canal,setCanal]=(0,import_react40.useState)("all"),[estadoF,setEstadoF]=(0,import_react40.useState)("reales"),[cobroF,setCobroF]=(0,import_react40.useState)("all"),reservas=(0,import_react40.useMemo)(()=>(resData&&resData.reservas||[]).map(r=>({...r,canal:canalDe(r.canal,esHW(r))})),[resData]),payByCode=(0,import_react40.useMemo)(()=>{let m={};return(txData&&txData.transacciones||[]).forEach(t2=>{t2.confirmation_code&&!m[t2.confirmation_code]&&(m[t2.confirmation_code]=t2)}),m},[txData]),concByCode=(0,import_react40.useMemo)(()=>{let m={};return(cocData&&cocData.ingresos||[]).forEach(g=>{(g.reservas||[]).forEach(rr=>{rr.codigo&&!m[rr.codigo]&&(m[rr.codigo]={importe:Number(rr.importe)||0,payout:Number(g.payout_importe)||0,compartido:!!g.compartido,fecha:g.fecha})})}),m},[cocData]),canales=(0,import_react40.useMemo)(()=>{let s=new Set;return reservas.forEach(r=>{r.canal&&s.add(r.canal)}),Array.from(s).sort()},[reservas]),hayHW=(0,import_react40.useMemo)(()=>reservas.some(r=>String(r.confirmation_code||"").startsWith("HWG-")),[reservas]),[hwOpen,setHwOpen]=(0,import_react40.useState)(!1),facturasPorReserva=(0,import_react40.useMemo)(()=>{let m={};return(facData&&facData.facturas||[]).forEach(f=>{f.reserva!=null&&(m[f.reserva]=m[f.reserva]||[]).push(f)}),m},[facData]),facturasPorGrupo=(0,import_react40.useMemo)(()=>{let porId={};reservas.forEach(r=>{porId[r.id]=r});let m={};return(facData&&facData.facturas||[]).forEach(f=>{let r=f.reserva==null?null:porId[f.reserva];if(!r)return;let k=grupoKey(r);(m[k]=m[k]||[]).push(f)}),m},[facData,reservas]),REALES=["accepted","pending","denied"],filtered=(0,import_react40.useMemo)(()=>reservas.filter(r=>{if(canal!=="all"&&r.canal!==canal||estadoF==="reales"&&!REALES.includes(r.estado)||estadoF==="canceladas"&&r.estado!=="cancelled")return!1;let pc=payByCode[r.confirmation_code],cobrada=!!(pc&&pc.charge_status==="captured");return!(cobroF==="cobradas"&&!cobrada||cobroF==="pendientes"&&cobrada||cobroF==="conciliadas"&&!concByCode[r.confirmation_code])}),[reservas,canal,estadoF,cobroF,concByCode,payByCode]),portadoraDe=(0,import_react40.useMemo)(()=>{let m={};return filtered.forEach(r=>{let k=r.confirmation_code;k&&(m[k]==null||r.id{let ingreso=0,conc=0,cobrado=0,contados=new Set;return filtered.forEach(r=>{let inc=Number(r.owner_revenue)||0;ingreso+=inc;let k=r.confirmation_code,c=concByCode[k];c&&k&&!contados.has(k)&&(contados.add(k),conc+=c.importe);let pc=payByCode[k];pc&&pc.charge_status==="captured"&&(cobrado+=inc)}),{ingreso,conc,cobrado,pendiente:Math.max(0,ingreso-cobrado),n:filtered.length}},[filtered,concByCode,payByCode]);return __gh("div",{className:"b-fade","data-gufi-src":"portal/hostel.tsx:158"},__gh(Tabs,{value:lens,onChange:setLens,options:[["reserva","Reservas"],["cobros","Cobros"]]}),lens==="reserva"?__gh("div",{className:"grid grid-cols-2 sm:grid-cols-4 gap-3 mb-5","data-gufi-src":"portal/hostel.tsx:164"},__gh(KPI,{label:"Tu ingreso",value:money0(band.ingreso),sub:`${num(band.n)} reservas`,accent:B.accent}),__gh(KPI,{label:"Cobrado",value:money0(band.cobrado),sub:"por el canal",accent:B.green}),__gh(KPI,{label:"Pendiente",value:money0(band.pendiente),sub:"por cobrar",accent:B.amber}),__gh(KPI,{label:"Conciliado",value:money0(band.conc),sub:"en banco",accent:B.green})):null,lens==="reserva"?__gh("div",{className:"flex flex-col gap-2 mb-4","data-gufi-src":"portal/hostel.tsx:172"},__gh("div",{className:"flex flex-wrap items-center gap-2","data-gufi-src":"portal/hostel.tsx:173"},__gh(FChip,{active:canal==="all",onClick:()=>setCanal("all")},"Todos los canales"),canales.map(c=>__gh(FChip,{key:c,active:canal===c,onClick:()=>setCanal(c),color:canalColor(c)},c))),__gh("div",{className:"flex flex-wrap items-center gap-2","data-gufi-src":"portal/hostel.tsx:177"},[["reales","Reales"],["canceladas","Canceladas"],["all","Todas"]].map(([k,l])=>__gh(FChip,{key:k,active:estadoF===k,onClick:()=>setEstadoF(k)},l)),__gh("span",{style:{width:1,height:20,background:B.hair,margin:"0 4px"},"data-gufi-src":"portal/hostel.tsx:179"}),[["all","Todo cobro"],["cobradas","Cobradas"],["pendientes","Pendientes"],["conciliadas","Conciliadas"]].map(([k,l])=>__gh(FChip,{key:k,active:cobroF===k,onClick:()=>setCobroF(k)},l)),hayHW?__gh(__gf,null,__gh("span",{style:{flex:1},"data-gufi-src":"portal/hostel.tsx:183"}),__gh("button",{onClick:()=>setHwOpen(!0),className:"b-press",style:{padding:"6px 12px",borderRadius:999,fontSize:12.5,fontWeight:600,cursor:"pointer",border:`1px solid ${B.hair}`,background:"#fff",color:B.muted,display:"inline-flex",alignItems:"center",gap:6},"data-gufi-src":"portal/hostel.tsx:184"},__gh(import_lucide_react39.Upload,{size:13}),"Importar cobros Hostelworld (CSV)")):null)):null,lens==="reserva"?__gh(Reservas2,{filtered,payByCode,concByCode,portadoraDe,setCanal,loading:resLoading,facturasPorReserva,facturasPorGrupo,api,token,onEmitida,truncado:reservas.length>=3e3}):__gh(Cobros,{api,token,year,propiedadIds,ownerName}),hwOpen?__gh(HwImportModal,{api,token,onClose:()=>setHwOpen(!1),onDone:onCobros}):null)}function HwImportModal({api,token,onClose,onDone}){let fileRef=(0,import_react40.useRef)(null),[drag,setDrag]=(0,import_react40.useState)(!1),[fase,setFase]=(0,import_react40.useState)("pick"),[busy,setBusy]=(0,import_react40.useState)(!1),[err,setErr]=(0,import_react40.useState)(""),[payload,setPayload]=(0,import_react40.useState)(null),[prev,setPrev]=(0,import_react40.useState)(null),[fin,setFin]=(0,import_react40.useState)(null);async function leerFichero(file){if(file){setErr(""),setBusy(!0);try{let text=await file.text(),raw=parseCSV(text).filter(r=>r.length>1);if(raw.length<2)throw new Error("el CSV no trae filas");let norm=x=>String(x||"").toLowerCase().replace(/[^a-z]/g,""),head=raw[0].map(norm),ix={reference:head.indexOf("reference"),guest:head.indexOf("guestname"),arrival:head.indexOf("arrival"),bed_price:head.indexOf("bedpriceeur"),balance_due:head.indexOf("balancedueeur"),booked:head.indexOf("booked"),nights:head.indexOf("nights"),guests:head.indexOf("guests"),room_type:head.indexOf("roomtype"),source:head.indexOf("source")};if(ix.reference<0||ix.bed_price<0||ix.balance_due<0)throw new Error("esto no parece el CSV del inbox de Hostelworld (Bookings \u2192 Advanced Search \u2192 CSV)");let data=raw.slice(1).filter(r=>r[ix.reference]).map(r=>({reference:r[ix.reference],guest:r[ix.guest],arrival:r[ix.arrival],bed_price:r[ix.bed_price],balance_due:r[ix.balance_due],booked:r[ix.booked],nights:r[ix.nights],guests:r[ix.guests],room_type:r[ix.room_type],source:r[ix.source]}));if(!data.length)throw new Error("el CSV no trae reservas");let res=await api("portal_hw_cobros_import",{token,rows:data,preview:!0});setPayload(data),setPrev(res),setFase("preview")}catch(e){setErr(e&&e.message||String(e))}finally{setBusy(!1),fileRef.current&&(fileRef.current.value="")}}}async function confirmar(){setBusy(!0),setErr("");try{let r=await api("portal_hw_cobros_import",{token,rows:payload});setFin(r),setFase("done"),onDone&&onDone()}catch(e){setErr(e&&e.message||String(e))}finally{setBusy(!1)}}let dot=estado=>estado==="ok"?__gh(import_lucide_react39.CheckCircle2,{size:14,style:{color:B.green,flexShrink:0}}):estado==="sin_reserva"?__gh(import_lucide_react39.AlertTriangle,{size:14,style:{color:B.amber,flexShrink:0}}):__gh(import_lucide_react39.X,{size:14,style:{color:B.red,flexShrink:0}}),chip=(n,texto,color)=>n?__gh("span",{className:"text-[12.5px] font-bold",style:{color},"data-gufi-src":"portal/hostel.tsx:245"},num(n)," ",texto):null;return __gh("div",{className:"b-fade",style:{position:"fixed",inset:0,zIndex:60,background:"rgba(26,18,19,0.45)",display:"flex",alignItems:"center",justifyContent:"center",padding:16},onClick:busy?void 0:onClose,"data-gufi-src":"portal/hostel.tsx:248"},__gh("div",{className:"b-card b-rise",style:{width:"min(680px, 100%)",maxHeight:"86vh",display:"flex",flexDirection:"column",overflow:"hidden"},onClick:e=>e.stopPropagation(),"data-gufi-src":"portal/hostel.tsx:249"},__gh("div",{className:"flex items-center gap-3 px-5 py-4",style:{boxShadow:`inset 0 -1px 0 ${B.hair}`},"data-gufi-src":"portal/hostel.tsx:250"},__gh("div",{className:"flex h-9 w-9 items-center justify-center rounded-xl",style:{background:B.accentSoft},"data-gufi-src":"portal/hostel.tsx:251"},__gh(import_lucide_react39.Upload,{size:17,style:{color:B.accent}})),__gh("div",{className:"leading-tight",style:{flex:1},"data-gufi-src":"portal/hostel.tsx:252"},__gh("div",{className:"text-[15px] font-bold",style:{color:B.ink},"data-gufi-src":"portal/hostel.tsx:253"},"Cobros de Hostelworld"),__gh("div",{className:"text-[12px]",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:254"},"El CSV del inbox: Bookings \u2192 Advanced Search \u2192 CSV")),__gh("button",{onClick:onClose,className:"b-press",style:{color:B.faint,background:"transparent",border:"none",cursor:"pointer"},"data-gufi-src":"portal/hostel.tsx:256"},__gh(import_lucide_react39.X,{size:18}))),__gh("div",{style:{flex:1,overflowY:"auto",padding:"18px 20px"},"data-gufi-src":"portal/hostel.tsx:259"},fase==="pick"?__gh("div",{className:"b-fade","data-gufi-src":"portal/hostel.tsx:261"},__gh("div",{onDragOver:e=>{e.preventDefault(),setDrag(!0)},onDragLeave:()=>setDrag(!1),onDrop:e=>{e.preventDefault(),setDrag(!1),leerFichero(e.dataTransfer.files&&e.dataTransfer.files[0])},onClick:()=>fileRef.current&&fileRef.current.click(),style:{border:`1.5px dashed ${drag?B.accent:B.hair}`,background:drag?B.accentSoft:B.bg,borderRadius:14,padding:"34px 20px",textAlign:"center",cursor:"pointer",transition:"all .15s"},"data-gufi-src":"portal/hostel.tsx:262"},busy?__gh("div",{className:"text-[14px] font-semibold",style:{color:B.muted},"data-gufi-src":"portal/hostel.tsx:269"},"Leyendo el CSV\u2026"):__gh(__gf,null,__gh(import_lucide_react39.Upload,{size:26,style:{color:drag?B.accent:B.faint,marginBottom:10}}),__gh("div",{className:"text-[14.5px] font-semibold",style:{color:B.ink},"data-gufi-src":"portal/hostel.tsx:272"},drag?"Suelta el archivo aqu\xED":"Arrastra el CSV aqu\xED o pulsa para elegirlo"),__gh("div",{className:"text-[12px] mt-1",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:273"},"Reci\xE9n bajado de Hostelworld, tal cual \u2014 sin abrirlo ni tocarlo"))),__gh("input",{ref:fileRef,type:"file",accept:".csv,text/csv",style:{display:"none"},onChange:e=>leerFichero(e.target.files&&e.target.files[0]),"data-gufi-src":"portal/hostel.tsx:276"}),__gh("div",{className:"text-[12.5px] mt-4",style:{color:B.muted,lineHeight:1.6},"data-gufi-src":"portal/hostel.tsx:277"},"Antes de guardar nada ver\xE1s qu\xE9 entra: cada reserva con su dep\xF3sito ya cobrado por Hostelworld y lo que queda por cobrar en recepci\xF3n. Re-importar no duplica: actualiza.")):fase==="preview"&&prev?__gh("div",{className:"b-fade","data-gufi-src":"portal/hostel.tsx:283"},__gh("div",{className:"flex flex-wrap items-center gap-x-4 gap-y-1 mb-3","data-gufi-src":"portal/hostel.tsx:284"},chip(prev.ok,prev.ok===1?"reserva entra":"reservas entran",B.green),chip(prev.sin_reserva,"sin reserva todav\xEDa",B.amber),chip(prev.errores,"ilegibles",B.red)),prev.ok?__gh("div",{className:"text-[12.5px] mb-3",style:{color:B.muted},"data-gufi-src":"portal/hostel.tsx:290"},"Dep\xF3sito ya cobrado por Hostelworld ",__gh("b",{style:{color:B.green},"data-gufi-src":"portal/hostel.tsx:291"},money2(prev.deposito_total))," \xB7 resto (recepci\xF3n o paynow) ",__gh("b",{style:{color:B.amber},"data-gufi-src":"portal/hostel.tsx:291"},money2(prev.pendiente_total))):null,__gh("div",{style:{maxHeight:300,overflowY:"auto",border:`1px solid ${B.hair}`,borderRadius:12},"data-gufi-src":"portal/hostel.tsx:294"},(prev.filas||[]).map((f,k)=>__gh("div",{key:k,className:"flex items-center gap-2.5 px-3 py-2 text-[12.5px]",style:{borderBottom:`1px solid ${B.hair}`,background:f.estado==="error"?"rgba(220,38,38,0.04)":f.estado==="sin_reserva"?"rgba(180,83,9,0.04)":"transparent"},"data-gufi-src":"portal/hostel.tsx:296"},dot(f.estado),__gh("span",{className:"b-num",style:{color:B.faint,width:86,flexShrink:0},"data-gufi-src":"portal/hostel.tsx:298"},f.referencia),__gh("span",{style:{flex:1,color:B.ink,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},"data-gufi-src":"portal/hostel.tsx:299"},f.huesped||"\u2014"),__gh("span",{className:"b-num",style:{color:B.muted,flexShrink:0},"data-gufi-src":"portal/hostel.tsx:300"},f.estado==="ok"?__gh(__gf,null,"dep. ",__gh("b",{style:{color:B.green},"data-gufi-src":"portal/hostel.tsx:302"},money2(f.deposito))," \xB7 resto ",money2(f.pendiente)):f.motivo)))),prev.filas_truncadas?__gh("div",{className:"text-[11.5px] mt-2",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:308"},"\u2026y ",num(prev.filas_truncadas)," filas m\xE1s que no caben en la lista (entran igual)."):null,prev.sin_reserva?__gh("div",{className:"text-[11.5px] mt-2",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:309"},"Las \xABsin reserva todav\xEDa\xBB a\xFAn no han bajado del channel manager \u2014 re-importa este CSV en unos d\xEDas y entrar\xE1n solas."):null):fase==="done"&&fin?__gh("div",{className:"b-rise",style:{textAlign:"center",padding:"26px 10px"},"data-gufi-src":"portal/hostel.tsx:312"},__gh(import_lucide_react39.CheckCircle2,{size:44,style:{color:B.green,marginBottom:12}}),__gh("div",{className:"text-[17px] font-bold",style:{color:B.ink},"data-gufi-src":"portal/hostel.tsx:314"},num(fin.insertadas+fin.actualizadas)," cobros cargados"),__gh("div",{className:"text-[12.5px] mt-1.5",style:{color:B.muted},"data-gufi-src":"portal/hostel.tsx:315"},num(fin.insertadas)," nuevos \xB7 ",num(fin.actualizadas)," actualizados",fin.sin_reserva?__gh(__gf,null," \xB7 ",num(fin.sin_reserva)," sin reserva todav\xEDa"):null),__gh("div",{className:"text-[12.5px] mt-3",style:{color:B.muted},"data-gufi-src":"portal/hostel.tsx:318"},"Dep\xF3sito Hostelworld ",__gh("b",{style:{color:B.green},"data-gufi-src":"portal/hostel.tsx:319"},money2(fin.deposito_total))," \xB7 pendiente en recepci\xF3n ",__gh("b",{style:{color:B.amber},"data-gufi-src":"portal/hostel.tsx:319"},money2(fin.pendiente_total)))):null,err?__gh("div",{className:"text-[12.5px] mt-3 font-semibold",style:{color:B.red},"data-gufi-src":"portal/hostel.tsx:323"},err):null),__gh("div",{className:"flex items-center justify-end gap-2 px-5 py-4",style:{boxShadow:`inset 0 1px 0 ${B.hair}`},"data-gufi-src":"portal/hostel.tsx:326"},fase==="done"?__gh("button",{onClick:onClose,className:"b-press",style:{padding:"8px 18px",borderRadius:999,fontSize:13,fontWeight:700,cursor:"pointer",border:"none",background:B.grad,color:"#fff"},"data-gufi-src":"portal/hostel.tsx:328"},"Listo"):__gh(__gf,null,__gh("button",{onClick:onClose,disabled:busy,className:"b-press",style:{padding:"8px 16px",borderRadius:999,fontSize:13,fontWeight:600,cursor:"pointer",border:`1px solid ${B.hair}`,background:"#fff",color:B.muted},"data-gufi-src":"portal/hostel.tsx:330"},"Cancelar"),fase==="preview"&&prev?__gh("button",{onClick:confirmar,disabled:busy||!prev.ok,className:"b-press",style:{padding:"8px 18px",borderRadius:999,fontSize:13,fontWeight:700,cursor:busy||!prev.ok?"default":"pointer",border:"none",background:B.grad,color:"#fff",opacity:busy||!prev.ok?.55:1},"data-gufi-src":"portal/hostel.tsx:332"},busy?"Importando\u2026":`Importar ${num(prev.ok)} cobros`):null))))}function parseCSV(text){let rows=[],cur=[""],q=!1;for(let i=0;i1||cur[0])&&rows.push(cur),rows}var grupoKey=r=>r.confirmation_code?`c:${r.confirmation_code}`:`n:${String(r.huesped_nombre||"").trim().toLowerCase()}|${String(r.check_in||"").slice(0,10)}|${String(r.check_out||"").slice(0,10)}`;function FacturaCell({facturas,grupo,reserva,api,token,onEmitida}){let[busy,setBusy]=(0,import_react40.useState)(!1),[confirmar,setConfirmar]=(0,import_react40.useState)(!1),[err,setErr]=(0,import_react40.useState)(""),stop=e=>{e.stopPropagation(),e.preventDefault()};async function bajar(e,f){if(stop(e),!busy){setBusy(!0),setErr("");try{await descargarFactura(api,token,f.id)}catch(ex){setErr(String(ex.message||ex))}finally{setBusy(!1)}}}async function emitir(e){if(stop(e),!confirmar){setConfirmar(!0),setTimeout(()=>setConfirmar(!1),4e3);return}setConfirmar(!1),setBusy(!0),setErr("");try{let r=await api("portal_factura_emitir",{token,reservaId:reserva.id});r&&r.ok===!1?setErr(r.mensaje||r.motivo):onEmitida&&await onEmitida()}catch(ex){setErr(String(ex.message||ex))}finally{setBusy(!1)}}return busy?__gh(import_lucide_react39.Loader2,{size:14,className:"animate-spin",style:{color:B.accent}}):err?__gh("span",{className:"text-[11.5px]",style:{color:B.red},title:err,"data-gufi-src":"portal/hostel.tsx:394"},err.slice(0,42)):facturas&&facturas.length?__gh("div",{className:"flex items-center gap-1.5 flex-wrap","data-gufi-src":"portal/hostel.tsx:398"},facturas.map(f=>f.estado==="revision"?__gh("span",{key:f.id,title:f.aviso||"Importe pendiente de revisar","data-gufi-src":"portal/hostel.tsx:400"},__gh(Badge,{text:`${f.numero_completo} \xB7 revisar`,color:B.amber})):__gh("button",{key:f.id,onClick:e=>bajar(e,f),className:"b-pill b-press",title:`Descargar ${f.numero_completo}`,style:{color:B.accent,background:B.accentSoft,boxShadow:`inset 0 0 0 1px ${B.accent}2a`,border:"none",cursor:"pointer"},"data-gufi-src":"portal/hostel.tsx:402"},__gh(import_lucide_react39.Download,{size:11}),f.numero_completo))):grupo&&grupo.length?__gh("div",{className:"flex items-center gap-1.5 flex-wrap","data-gufi-src":"portal/hostel.tsx:414"},grupo.map(f=>__gh("button",{key:f.id,onClick:e=>bajar(e,f),className:"b-pill b-press",title:`Esta cama va dentro de la factura ${f.numero_completo}${f.huespedes>1?` (${f.huespedes} hu\xE9spedes)`:""}`,style:{color:B.muted,background:"transparent",boxShadow:`inset 0 0 0 1px ${B.hair}`,border:"none",cursor:"pointer",fontStyle:"italic"},"data-gufi-src":"portal/hostel.tsx:416"},__gh(import_lucide_react39.Download,{size:11}),f.numero_completo))):reserva.estado==="accepted"&&Number(reserva.precio_total)>0?__gh("button",{onClick:emitir,className:"b-pill b-press",title:"Emitir la factura de esta reserva",style:{color:confirmar?"#fff":B.muted,background:confirmar?B.accent:"transparent",boxShadow:`inset 0 0 0 1px ${confirmar?B.accent:B.hair}`,border:"none",cursor:"pointer"},"data-gufi-src":"portal/hostel.tsx:428"},confirmar?__gh(__gf,null,"\xBFEmitir?"):__gh(__gf,null,__gh(import_lucide_react39.Plus,{size:11}),"Emitir")):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:426"},"\u2014")}function Reservas2({filtered,payByCode,concByCode,portadoraDe,setCanal,loading,facturasPorReserva,facturasPorGrupo,api,token,onEmitida,truncado}){let[detail,setDetail]=(0,import_react40.useState)(null),movil=useIsMobile(),[sort,toggleSort]=useSort(),accessors=(0,import_react40.useMemo)(()=>({confirmation_code:r=>r.confirmation_code||"",propiedad_nickname:r=>unidadDe(r.propiedad_nickname),huesped_nombre:r=>r.huesped_nombre||"",canal:r=>r.canal||"",check_in:r=>tsOf(r.check_in),check_out:r=>tsOf(r.check_out),noches:r=>r.noches!=null?Number(r.noches):null,precio_total:r=>r.precio_total!=null?Number(r.precio_total):null,owner_revenue:r=>r.owner_revenue!=null?Number(r.owner_revenue):null,conciliado:r=>{let c=concByCode[r.confirmation_code];return c&&portadoraDe[r.confirmation_code]===r.id?c.importe:null},cobro:r=>{let p=payByCode[r.confirmation_code];return p?chargeInfo(p.charge_status).t:""},estado:r=>estadoInfo(r.estado).t,factura:r=>{let fs=facturasPorReserva[r.id];return fs&&fs.length?fs[0].numero_completo:""}}),[payByCode,concByCode,facturasPorReserva]),sorted=(0,import_react40.useMemo)(()=>applySort(filtered,sort,accessors),[filtered,sort,accessors]),totales=(0,import_react40.useMemo)(()=>{let contados=new Set;return filtered.reduce((a,r)=>{a.ingreso+=Number(r.owner_revenue)||0;let k=r.confirmation_code,c=concByCode[k];return c&&k&&!contados.has(k)&&(contados.add(k),a.conc+=c.importe),a},{ingreso:0,conc:0})},[filtered,concByCode]);return loading?__gh(Spin,null):__gh("div",{"data-gufi-src":"portal/hostel.tsx:466"},__gh("div",{className:"b-card overflow-hidden","data-gufi-src":"portal/hostel.tsx:467"},__gh(SecTitle,{sub:truncado?"El a\xF1o trae m\xE1s reservas de las que caben en una pantalla: se muestran las 3.000 m\xE1s recientes. Afina con el filtro de arriba.":void 0},"Reservas ",__gh("span",{className:"font-normal text-[13px]",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:468"},"\xB7 ",num(filtered.length))),filtered.length?movil?__gh("div",{className:"px-4 pb-4","data-gufi-src":"portal/hostel.tsx:470"},sorted.map(r=>{let ei=estadoInfo(r.estado),pay=payByCode[r.confirmation_code],ci=pay?chargeInfo(pay.charge_status):null,co=concByCode[r.confirmation_code],fx=facturasPorReserva[r.id]||null;return __gh("div",{key:r.id,className:"b-row b-press",onClick:()=>setDetail({r,co,ci,ei,fx}),style:{cursor:"pointer"},"data-gufi-src":"portal/hostel.tsx:472"},__gh("div",{className:"flex items-start justify-between gap-2 mb-1.5","data-gufi-src":"portal/hostel.tsx:473"},__gh("div",{className:"min-w-0","data-gufi-src":"portal/hostel.tsx:474"},__gh("div",{className:"text-[14px] font-bold truncate",style:{color:B.ink},"data-gufi-src":"portal/hostel.tsx:475"},r.huesped_nombre||r.confirmation_code||"\u2014"),__gh("div",{className:"text-[11.5px] truncate",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:476"},unidadDe(r.propiedad_nickname))),__gh(Badge,{text:ei.t,color:ei.c})),__gh("div",{className:"b-kv","data-gufi-src":"portal/hostel.tsx:480"},__gh("span",{"data-gufi-src":"portal/hostel.tsx:480"},"Fechas"),__gh("span",{"data-gufi-src":"portal/hostel.tsx:480"},fmtDate(r.check_in)," \u2192 ",fmtDate(r.check_out)," \xB7 ",num(r.noches),"n")),__gh("div",{className:"b-kv","data-gufi-src":"portal/hostel.tsx:481"},__gh("span",{"data-gufi-src":"portal/hostel.tsx:481"},"Canal"),__gh("span",{style:{color:canalColor(r.canal)},"data-gufi-src":"portal/hostel.tsx:481"},r.canal)),__gh("div",{className:"b-kv","data-gufi-src":"portal/hostel.tsx:482"},__gh("span",{"data-gufi-src":"portal/hostel.tsx:482"},"Tu ingreso"),__gh("span",{style:{color:B.accent},"data-gufi-src":"portal/hostel.tsx:482"},money2(r.owner_revenue))),__gh("div",{className:"b-kv","data-gufi-src":"portal/hostel.tsx:483"},__gh("span",{"data-gufi-src":"portal/hostel.tsx:483"},"Conciliado"),__gh("span",{style:{color:co?B.green:B.faint},"data-gufi-src":"portal/hostel.tsx:483"},co?portadoraDe[r.confirmation_code]!==r.id?"va en la estancia":money2(co.importe):"\u2014")),__gh("div",{className:"flex items-center justify-between gap-2 mt-2 pt-2",style:{borderTop:`1px solid ${B.hair}`},"data-gufi-src":"portal/hostel.tsx:484"},__gh("span",{className:"text-[12.5px]",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:485"},"Factura"),__gh(FacturaCell,{facturas:fx,grupo:facturasPorGrupo[grupoKey(r)],reserva:r,api,token,onEmitida})))})):__gh(TableWrap,{min:1140},__gh("thead",{"data-gufi-src":"portal/hostel.tsx:493"},__gh("tr",{"data-gufi-src":"portal/hostel.tsx:493"},__gh(SortTh,{sortKey:"confirmation_code",sort,onSort:toggleSort},"C\xF3d."),__gh(SortTh,{sortKey:"propiedad_nickname",sort,onSort:toggleSort},"Propiedad"),__gh(SortTh,{sortKey:"huesped_nombre",sort,onSort:toggleSort},"Hu\xE9sped"),__gh(SortTh,{sortKey:"canal",sort,onSort:toggleSort},"Canal"),__gh(SortTh,{sortKey:"check_in",sort,onSort:toggleSort},"Check-in"),__gh(SortTh,{sortKey:"check_out",sort,onSort:toggleSort},"Check-out"),__gh(SortTh,{sortKey:"noches",sort,onSort:toggleSort,r:!0},"Noches"),__gh(SortTh,{sortKey:"precio_total",sort,onSort:toggleSort,r:!0},"Importe"),__gh(SortTh,{sortKey:"owner_revenue",sort,onSort:toggleSort,r:!0},"Tu ingreso"),__gh(SortTh,{sortKey:"conciliado",sort,onSort:toggleSort,r:!0},"Conciliado"),__gh(SortTh,{sortKey:"cobro",sort,onSort:toggleSort},"Cobro"),__gh(SortTh,{sortKey:"estado",sort,onSort:toggleSort},"Estado"),__gh(SortTh,{sortKey:"factura",sort,onSort:toggleSort,sticky:!0},"Factura"))),__gh("tbody",{"data-gufi-src":"portal/hostel.tsx:494"},sorted.map(r=>{let ei=estadoInfo(r.estado),pay=payByCode[r.confirmation_code],ci=pay?chargeInfo(pay.charge_status):null,co=concByCode[r.confirmation_code],fx=facturasPorReserva[r.id]||null;return __gh("tr",{key:r.id,onClick:()=>setDetail({r,co,ci,ei,fx}),className:"cursor-pointer b-press",style:{cursor:"pointer"},"data-gufi-src":"portal/hostel.tsx:496"},__gh(Td,{b:!0},r.confirmation_code||"\u2014"),__gh(Td,null,unidadDe(r.propiedad_nickname)),__gh(Td,null,r.huesped_nombre||"\u2014"),__gh(Td,null,__gh("button",{onClick:e=>{e.stopPropagation(),setCanal(r.canal)},className:"b-press",style:{color:canalColor(r.canal),fontWeight:600,background:"transparent",border:"none",cursor:"pointer",padding:0},"data-gufi-src":"portal/hostel.tsx:498"},r.canal||"\u2014")),__gh(Td,null,fmtDate(r.check_in)),__gh(Td,null,fmtDate(r.check_out)),__gh(Td,{r:!0},num(r.noches)),__gh(Td,{r:!0},r.precio_total!=null?money2(r.precio_total):"\u2014"),__gh(Td,{r:!0,b:!0},money2(r.owner_revenue)),__gh(Td,{r:!0},co?portadoraDe[r.confirmation_code]!==r.id?__gh("span",{className:"text-[11.5px] italic",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:502"},"va en la estancia"):__gh("div",{"data-gufi-src":"portal/hostel.tsx:503"},__gh("span",{style:{fontWeight:700,color:B.green},"data-gufi-src":"portal/hostel.tsx:503"},money2(co.importe)),co.compartido?__gh("div",{className:"text-[10.5px]",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:503"},"parte de ",money2(co.payout)):null):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:501"},"\u2014")),__gh(Td,null,ci?__gh(Badge,{text:ci.t,color:ci.c}):__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:504"},"\u2014")),__gh(Td,null,__gh(Badge,{text:ei.t,color:ei.c})),__gh(Td,{sticky:!0},__gh(FacturaCell,{facturas:fx,grupo:facturasPorGrupo[grupoKey(r)],reserva:r,api,token,onEmitida})))}))):__gh("div",{className:"px-4 sm:px-5 pb-5","data-gufi-src":"portal/hostel.tsx:469"},__gh(Empty,{text:"No hay reservas con estos filtros."})),filtered.length?__gh("div",{className:"flex flex-wrap items-center justify-end gap-5 px-4 sm:px-5 py-3 text-[13px]",style:{borderTop:`1px solid ${B.hair}`,color:B.muted},"data-gufi-src":"portal/hostel.tsx:513"},__gh("button",{onClick:()=>exportarReservas(sorted,payByCode,concByCode,portadoraDe,facturasPorReserva),className:"b-press flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-[12.5px] font-semibold",style:{background:"#fff",border:`1px solid ${B.hair}`,color:B.muted,cursor:"pointer"},"data-gufi-src":"portal/hostel.tsx:514"},__gh(import_lucide_react39.Download,{size:14})," Excel"),__gh("span",{style:{flex:1},"data-gufi-src":"portal/hostel.tsx:517"}),__gh("span",{"data-gufi-src":"portal/hostel.tsx:518"},"Tu ingreso ",__gh("b",{style:{color:B.ink},"data-gufi-src":"portal/hostel.tsx:518"},money2(totales.ingreso))),__gh("span",{"data-gufi-src":"portal/hostel.tsx:519"},"Conciliado ",__gh("b",{style:{color:B.green},"data-gufi-src":"portal/hostel.tsx:519"},money2(totales.conc)))):null),detail?__gh(ReservaDetail,{...detail,api,token,onEmitida,onClose:()=>setDetail(null)}):null)}function exportarReservas(rows,payByCode,concByCode,portadoraDe,facturasPorReserva){let out=[["C\xF3d. estancia","Propiedad","Hu\xE9sped","Canal","Entrada","Salida","Noches","Hu\xE9spedes","Importe (\u20AC)","Tu ingreso (\u20AC)","Conciliado (\u20AC)","Estado cobro","Estado","Factura","Importe factura (\u20AC)"]];rows.forEach(r=>{let pay=payByCode[r.confirmation_code],co=concByCode[r.confirmation_code],conc=co&&portadoraDe[r.confirmation_code]===r.id?co.importe:null,fs=facturasPorReserva[r.id]||[];out.push([r.confirmation_code||"",unidadDe(r.propiedad_nickname),r.huesped_nombre||"",r.canal||"",dmyCSV(r.check_in),dmyCSV(r.check_out),r.noches==null?"":r.noches,r.huespedes==null?"":r.huespedes,r.precio_total==null?"":eurCSV(r.precio_total),eurCSV(r.owner_revenue),conc==null?"":eurCSV(conc),pay?chargeInfo(pay.charge_status).t:"",estadoInfo(r.estado).t,fs.map(f=>f.numero_completo).join(" \xB7 "),fs.length?eurCSV(fs.reduce((a,f)=>a+(Number(f.total)||0),0)):""])}),downloadCSV("reservas.csv",out)}function ReservaDetail({r,co,ci,fx,api,token,onEmitida,onClose}){let rows=[["C\xF3digo",r.confirmation_code||"\u2014"],["Canal",r.canal||"\u2014"],["Check-in",fmtDate(r.check_in)],["Check-out",fmtDate(r.check_out)],["Noches",num(r.noches)]];return __gh("div",{onClick:onClose,style:{position:"fixed",inset:0,background:"rgba(10,10,18,0.55)",backdropFilter:"blur(2px)",zIndex:1e3,display:"flex",alignItems:"center",justifyContent:"center",padding:20},"data-gufi-src":"portal/hostel.tsx:559"},__gh("div",{onClick:e=>e.stopPropagation(),className:"b-card",style:{width:"100%",maxWidth:560,maxHeight:"88vh",overflowY:"auto"},"data-gufi-src":"portal/hostel.tsx:560"},__gh("div",{className:"flex items-center justify-between px-5 py-4",style:{borderBottom:`1px solid ${B.hair}`},"data-gufi-src":"portal/hostel.tsx:561"},__gh("div",{"data-gufi-src":"portal/hostel.tsx:562"},__gh("div",{className:"text-[16px] font-bold",style:{color:B.ink},"data-gufi-src":"portal/hostel.tsx:563"},r.huesped_nombre||r.confirmation_code),__gh("div",{className:"text-[12.5px]",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:564"},r.propiedad_nickname||"\u2014")),__gh("button",{onClick:onClose,style:{background:"transparent",border:"none",cursor:"pointer",color:B.muted,padding:4,fontSize:18},"data-gufi-src":"portal/hostel.tsx:566"},"\u2715")),__gh("div",{className:"px-5 py-4","data-gufi-src":"portal/hostel.tsx:568"},__gh("div",{className:"grid grid-cols-2 gap-3 mb-4","data-gufi-src":"portal/hostel.tsx:569"},__gh("div",{className:"b-card p-3","data-gufi-src":"portal/hostel.tsx:570"},__gh("div",{className:"text-[11px] uppercase tracking-wide",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:570"},"Importe reserva"),__gh("div",{className:"text-[1.3rem] font-bold b-num",style:{color:B.ink},"data-gufi-src":"portal/hostel.tsx:570"},r.precio_total!=null?money2(r.precio_total):"\u2014")),__gh("div",{className:"b-card p-3","data-gufi-src":"portal/hostel.tsx:571"},__gh("div",{className:"text-[11px] uppercase tracking-wide",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:571"},"Tu ingreso"),__gh("div",{className:"text-[1.3rem] font-bold b-num",style:{color:B.accent},"data-gufi-src":"portal/hostel.tsx:571"},money2(r.owner_revenue)))),__gh("table",{className:"w-full border-collapse mb-4","data-gufi-src":"portal/hostel.tsx:573"},__gh("tbody",{"data-gufi-src":"portal/hostel.tsx:574"},rows.map(([k,v],i)=>__gh("tr",{key:i,"data-gufi-src":"portal/hostel.tsx:574"},__gh("td",{className:"py-1.5 text-[12.5px]",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:574"},k),__gh("td",{className:"py-1.5 text-[13px] text-right font-medium",style:{color:B.ink},"data-gufi-src":"portal/hostel.tsx:574"},v))))),__gh("div",{className:"text-[12px] font-bold uppercase tracking-wide mb-2",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:576"},"Factura al hu\xE9sped"),__gh("div",{className:"rounded-xl p-3 mb-4",style:{background:B.accentSoft,boxShadow:`inset 0 0 0 1px ${B.accent}22`},"data-gufi-src":"portal/hostel.tsx:577"},fx&&fx.length?__gh("div",{className:"flex flex-col gap-2","data-gufi-src":"portal/hostel.tsx:579"},fx.map(f=>__gh("div",{key:f.id,className:"flex items-center justify-between gap-3","data-gufi-src":"portal/hostel.tsx:581"},__gh("div",{className:"min-w-0","data-gufi-src":"portal/hostel.tsx:582"},__gh("div",{className:"text-[13.5px] font-semibold truncate",style:{color:B.ink},"data-gufi-src":"portal/hostel.tsx:583"},f.numero_completo),__gh("div",{className:"text-[11.5px]",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:584"},fmtDate(f.fecha)," \xB7 ",f.tipo==="simplificada"?"simplificada":"completa",f.total!=null?` \xB7 ${money2(f.total)}`:"")),f.estado==="revision"?__gh(Badge,{text:"revisar importe",color:B.amber}):__gh("button",{onClick:()=>descargarFactura(api,token,f.id),className:"b-pill b-press",style:{color:"#fff",background:B.accent,border:"none",cursor:"pointer"},"data-gufi-src":"portal/hostel.tsx:588"},__gh(import_lucide_react39.Download,{size:12}),"PDF")))):__gh("div",{className:"flex items-center justify-between gap-3","data-gufi-src":"portal/hostel.tsx:593"},__gh("span",{className:"text-[13px]",style:{color:B.muted},"data-gufi-src":"portal/hostel.tsx:594"},"Esta reserva todav\xEDa no tiene factura."),__gh(FacturaCell,{facturas:null,grupo:null,reserva:r,api,token,onEmitida}))),__gh("div",{className:"text-[12px] font-bold uppercase tracking-wide mb-2",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:599"},"Dinero recibido"),co?__gh("div",{className:"rounded-xl p-3",style:{background:`${B.green}10`,boxShadow:`inset 0 0 0 1px ${B.green}30`},"data-gufi-src":"portal/hostel.tsx:601"},__gh("div",{className:"flex items-center justify-between","data-gufi-src":"portal/hostel.tsx:602"},__gh("span",{className:"text-[13px]",style:{color:B.muted},"data-gufi-src":"portal/hostel.tsx:603"},"Conciliado en banco"),__gh("span",{className:"text-[15px] font-bold b-num",style:{color:B.green},"data-gufi-src":"portal/hostel.tsx:604"},money2(co.importe))),co.compartido?__gh("div",{className:"text-[12px] mt-1",style:{color:B.muted},"data-gufi-src":"portal/hostel.tsx:606"},"Parte de un pago agrupado de ",__gh("b",{"data-gufi-src":"portal/hostel.tsx:606"},money2(co.payout)),co.fecha?` \xB7 ${fmtDate(co.fecha)}`:"","."):co.fecha?__gh("div",{className:"text-[12px] mt-1",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:606"},"Pago del ",fmtDate(co.fecha),"."):null):ci?__gh("div",{className:"rounded-xl p-3",style:{background:`${ci.c}10`,boxShadow:`inset 0 0 0 1px ${ci.c}30`},"data-gufi-src":"portal/hostel.tsx:609"},__gh("span",{className:"text-[13px]",style:{color:B.muted},"data-gufi-src":"portal/hostel.tsx:610"},"Estado de cobro: ",__gh("b",{style:{color:ci.c},"data-gufi-src":"portal/hostel.tsx:610"},ci.t)," \u2014 a\xFAn no conciliado en el banco.")):__gh("div",{className:"rounded-xl p-3",style:{background:`${B.faint}10`,boxShadow:`inset 0 0 0 1px ${B.hair}`},"data-gufi-src":"portal/hostel.tsx:613"},__gh("span",{className:"text-[13px]",style:{color:B.muted},"data-gufi-src":"portal/hostel.tsx:614"},"A\xFAn no hay cobro registrado para esta reserva.")))))}function exportarViajeros(rows){let out=[["Entrada","Salida","Documento","Nombre","Direcci\xF3n","Pa\xEDs","Hu\xE9spedes","Propiedad","C\xF3d. estancia"]];rows.forEach(v=>out.push([dmyCSV(v.check_in),dmyCSV(v.check_out),v.documento||"",v.nombre||"",v.direccion||"",v.pais||"",v.huespedes==null?"":v.huespedes,unidadDe(v.propiedad_nickname),v.confirmation_code||""])),downloadCSV("viajeros.csv",out)}function Viajeros({data,loading}){let[sort,toggleSort]=useSort(),movil=useIsMobile(),viajeros=data&&data.viajeros||[],accessors=(0,import_react40.useMemo)(()=>({check_in:v=>tsOf(v.check_in),check_out:v=>tsOf(v.check_out),documento:v=>v.documento||"",nombre:v=>v.nombre||"",direccion:v=>v.direccion||"",pais:v=>v.pais||"",huespedes:v=>v.huespedes!=null?Number(v.huespedes):null,propiedad_nickname:v=>unidadDe(v.propiedad_nickname),confirmation_code:v=>v.confirmation_code||""}),[]),sorted=(0,import_react40.useMemo)(()=>applySort(viajeros,sort,accessors),[viajeros,sort,accessors]);return loading?__gh(Spin,null):__gh("div",{className:"b-fade","data-gufi-src":"portal/hostel.tsx:649"},__gh("div",{className:"mb-4 rounded-xl px-4 py-2.5 text-[12.5px]",style:{background:`${B.amber}12`,color:"#8a5a00",boxShadow:`inset 0 0 0 1px ${B.amber}33`},"data-gufi-src":"portal/hostel.tsx:650"},"Registro de viajeros. Medido el 17-sep-2026 sobre las 101.178 fichas: el ",__gh("b",{"data-gufi-src":"portal/hostel.tsx:651"},"99,7 %")," trae documento y el ",__gh("b",{"data-gufi-src":"portal/hostel.tsx:651"},"80 %")," direcci\xF3n; ciudad y tel\xE9fono s\xF3lo llegan con el ",__gh("b",{"data-gufi-src":"portal/hostel.tsx:651"},"check-in online"),". Son datos personales: tr\xE1talos como tales."),viajeros.length?movil?__gh("div",{"data-gufi-src":"portal/hostel.tsx:654"},sorted.map(v=>__gh("div",{key:v.id,className:"b-row","data-gufi-src":"portal/hostel.tsx:656"},__gh("div",{className:"flex items-start justify-between gap-2 mb-1.5","data-gufi-src":"portal/hostel.tsx:657"},__gh("div",{className:"min-w-0","data-gufi-src":"portal/hostel.tsx:658"},__gh("div",{className:"text-[14px] font-bold truncate",style:{color:B.ink},"data-gufi-src":"portal/hostel.tsx:659"},v.nombre||"\u2014"),__gh("div",{className:"text-[11.5px] truncate",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:660"},unidadDe(v.propiedad_nickname))),__gh("span",{className:"text-[11.5px] b-num",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:662"},v.confirmation_code||"\u2014")),__gh("div",{className:"b-kv","data-gufi-src":"portal/hostel.tsx:664"},__gh("span",{"data-gufi-src":"portal/hostel.tsx:664"},"Estancia"),__gh("span",{"data-gufi-src":"portal/hostel.tsx:664"},fmtDate(v.check_in)," \u2192 ",fmtDate(v.check_out))),__gh("div",{className:"b-kv","data-gufi-src":"portal/hostel.tsx:665"},__gh("span",{"data-gufi-src":"portal/hostel.tsx:665"},"Hu\xE9spedes"),__gh("span",{"data-gufi-src":"portal/hostel.tsx:665"},num(v.huespedes))),__gh("div",{className:"b-kv","data-gufi-src":"portal/hostel.tsx:666"},__gh("span",{"data-gufi-src":"portal/hostel.tsx:666"},"Pa\xEDs"),__gh("span",{"data-gufi-src":"portal/hostel.tsx:666"},v.pais||"\u2014")),v.direccion?__gh("div",{className:"b-kv","data-gufi-src":"portal/hostel.tsx:667"},__gh("span",{"data-gufi-src":"portal/hostel.tsx:667"},"Direcci\xF3n"),__gh("span",{style:{textAlign:"right"},"data-gufi-src":"portal/hostel.tsx:667"},v.direccion)):null))):__gh("div",{className:"b-card overflow-hidden","data-gufi-src":"portal/hostel.tsx:672"},__gh(SecTitle,{right:__gh("button",{onClick:()=>exportarViajeros(sorted),className:"b-press flex items-center gap-1.5 rounded-lg px-3 py-1.5 text-[12.5px] font-semibold",style:{background:"#fff",border:`1px solid ${B.hair}`,color:B.muted,cursor:"pointer"},"data-gufi-src":"portal/hostel.tsx:673"},__gh(import_lucide_react39.Download,{size:14})," Excel")},"Estancias ",__gh("span",{className:"font-normal text-[13px]",style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:673"},"\xB7 ",num(viajeros.length))),__gh(TableWrap,{min:780},__gh("thead",{"data-gufi-src":"portal/hostel.tsx:675"},__gh("tr",{"data-gufi-src":"portal/hostel.tsx:675"},__gh(SortTh,{sortKey:"check_in",sort,onSort:toggleSort},"Check-in"),__gh(SortTh,{sortKey:"check_out",sort,onSort:toggleSort},"Check-out"),__gh(SortTh,{sortKey:"documento",sort,onSort:toggleSort},"Documento"),__gh(SortTh,{sortKey:"nombre",sort,onSort:toggleSort},"Nombre"),__gh(SortTh,{sortKey:"direccion",sort,onSort:toggleSort},"Direcci\xF3n"),__gh(SortTh,{sortKey:"pais",sort,onSort:toggleSort},"Pa\xEDs"),__gh(SortTh,{sortKey:"huespedes",sort,onSort:toggleSort,r:!0},"Hu\xE9sp."),__gh(SortTh,{sortKey:"propiedad_nickname",sort,onSort:toggleSort},"Propiedad"),__gh(SortTh,{sortKey:"confirmation_code",sort,onSort:toggleSort},"C\xF3d."))),__gh("tbody",{"data-gufi-src":"portal/hostel.tsx:676"},sorted.map(v=>__gh("tr",{key:v.id,"data-gufi-src":"portal/hostel.tsx:678"},__gh(Td,{b:!0},fmtDate(v.check_in)),__gh(Td,null,fmtDate(v.check_out)),__gh(Td,null,__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:678"},v.documento||"\u2014")),__gh(Td,null,v.nombre||"\u2014"),__gh(Td,null,v.direccion||"\u2014"),__gh(Td,null,v.pais||"\u2014"),__gh(Td,{r:!0},num(v.huespedes)),__gh(Td,null,unidadDe(v.propiedad_nickname)),__gh(Td,null,v.confirmation_code||"\u2014")))))):__gh("div",{className:"b-card","data-gufi-src":"portal/hostel.tsx:653"},__gh(Empty,{text:"No hay viajeros para esta selecci\xF3n."})))}function Calendario3({api,token,propiedadIds}){let[cursor,setCursor]=(0,import_react40.useState)(()=>{let d2=new Date;return{y:d2.getFullYear(),m:d2.getMonth()+1}}),[data,setData]=(0,import_react40.useState)({propiedades:[],dias:[]}),[loading,setLoading]=(0,import_react40.useState)(!1),movil=useIsMobile(),lastDay=new Date(cursor.y,cursor.m,0).getDate(),monthFrom=`${cursor.y}-${String(cursor.m).padStart(2,"0")}-01`,monthTo=`${cursor.y}-${String(cursor.m).padStart(2,"0")}-${String(lastDay).padStart(2,"0")}`,idsKey=(propiedadIds||[]).join(",");(0,import_react40.useEffect)(()=>{let alive=!0;setLoading(!0);let input={token,all:!0,from:monthFrom,to:monthTo};return idsKey&&(input.propiedadIds=idsKey.split(",").map(Number)),api("portal_calendar",input).then(r=>{alive&&setData(r||{propiedades:[],dias:[]})}).catch(()=>{alive&&setData({propiedades:[],dias:[]})}).finally(()=>{alive&&setLoading(!1)}),()=>{alive=!1}},[monthFrom,monthTo,token,api,idsKey]);let unidades=data.propiedades||[],byKey=(0,import_react40.useMemo)(()=>{let m={};return(data.dias||[]).forEach(d2=>{let day=(d2.fecha||"").slice(0,10);d2.propiedad!=null&&(m[`${d2.propiedad}|${day}`]=d2),d2.propiedad_nickname&&(m[`n:${d2.propiedad_nickname}|${day}`]=d2)}),m},[data]),days=[];for(let d2=1;d2<=lastDay;d2++)days.push(d2);let dia=d2=>`${cursor.y}-${String(cursor.m).padStart(2,"0")}-${String(d2).padStart(2,"0")}`,infoDe=(p,d2)=>byKey[`${p.id}|${dia(d2)}`]||byKey[`n:${p.nickname}|${dia(d2)}`]||null,isWE=d2=>{let dow=new Date(cursor.y,cursor.m-1,d2).getDay();return dow===0||dow===6};function move(d2){let m=cursor.m+d2,y=cursor.y;m<1&&(m=12,y--),m>12&&(m=1,y++),setCursor({y,m})}let filas=(0,import_react40.useMemo)(()=>{if(!unidades.length)return[];if(unidades.filter(p=>habitacionDe(p.nickname)).length!==unidades.length||unidades.length<2)return unidades.map(p=>({clave:`u${p.id}`,nombre:unidadDe(p.nickname),unidades:[p]}));let m={};return unidades.forEach(p=>{let h=habitacionDe(p.nickname);(m[h]=m[h]||[]).push(p)}),Object.entries(m).sort((a,b)=>a[0].localeCompare(b[0],"es",{numeric:!0})).map(([h,ps])=>({clave:h,nombre:h,unidades:ps}))},[unidades]),agrupado=filas.length>0&&filas[0].unidades.length>1,mesPasado=new Date(cursor.y,cursor.m,0)move(-1),className:"b-press flex h-9 w-9 items-center justify-center rounded-xl",style:{background:"#fff",boxShadow:`inset 0 0 0 1px ${B.hair}`,border:"none",cursor:"pointer"},"data-gufi-src":"portal/hostel.tsx:759"},__gh(import_lucide_react39.ChevronLeft,{size:18})),__gh("div",{className:"text-[15px] font-bold text-center",style:{color:B.ink,minWidth:132},"data-gufi-src":"portal/hostel.tsx:760"},MES[cursor.m]," ",cursor.y),__gh("button",{onClick:()=>move(1),className:"b-press flex h-9 w-9 items-center justify-center rounded-xl",style:{background:"#fff",boxShadow:`inset 0 0 0 1px ${B.hair}`,border:"none",cursor:"pointer"},"data-gufi-src":"portal/hostel.tsx:761"},__gh(import_lucide_react39.ChevronRight,{size:18})))),mesPasado?__gh("div",{className:"mb-4 rounded-xl px-4 py-2.5 text-[12.5px]",style:{background:`${B.amber}12`,color:"#8a5a00",boxShadow:`inset 0 0 0 1px ${B.amber}33`},"data-gufi-src":"portal/hostel.tsx:765"},"Este mes ya pas\xF3. El canal libera los d\xEDas en cuanto el hu\xE9sped se va, as\xED que aqu\xED se ver\xE1n como disponibles. Lo que de verdad se ocup\xF3 est\xE1 en ",__gh("b",{"data-gufi-src":"portal/hostel.tsx:767"},"D\xEDa a d\xEDa"),"."):null,loading?__gh(Spin,null):filas.length?__gh(__gf,null,__gh("div",{className:"overflow-x-auto","data-gufi-src":"portal/hostel.tsx:772"},__gh("div",{style:{display:"grid",gridTemplateColumns:`${anchoNombre}px repeat(${lastDay}, ${anchoDia}px)`,gap:2,minWidth:"min-content"},"data-gufi-src":"portal/hostel.tsx:773"},__gh("div",{style:{position:"sticky",left:0,zIndex:2,background:"#fff"},"data-gufi-src":"portal/hostel.tsx:774"}),days.map(d2=>__gh("div",{key:`h${d2}`,className:"text-center text-[10px] font-bold",style:{color:isWE(d2)?B.accent:B.faint,paddingBottom:4},"data-gufi-src":"portal/hostel.tsx:775"},d2)),filas.flatMap(f=>{let total=f.unidades.length,cells=[__gh("div",{key:`n${f.clave}`,className:"text-[12px] font-medium truncate pr-2 flex items-center",style:{position:"sticky",left:0,zIndex:1,background:"#fff",color:B.ink,boxShadow:`1px 0 0 ${B.hair}`},title:f.nombre,"data-gufi-src":"portal/hostel.tsx:778"},f.nombre)];return days.forEach(d2=>{let ocupadas=0,bloqueadas=0,conocidas=0;f.unidades.forEach(p2=>{let info=infoDe(p2,d2);info&&(conocidas++,info.estado==="booked"?ocupadas++:info.estado==="blocked"&&bloqueadas++)});let p=conocidas?ocupadas/total*100:null,libres=total-ocupadas-bloqueadas,titulo3=conocidas?`${f.nombre} \xB7 ${d2}/${cursor.m} \xB7 ${ocupadas} de ${total} ocupadas${bloqueadas?`, ${bloqueadas} bloqueadas`:""} \xB7 ${libres} libre${libres===1?"":"s"}`:`${f.nombre} \xB7 ${d2}/${cursor.m} \xB7 sin datos`;cells.push(__gh("div",{key:`c${f.clave}-${d2}`,title:titulo3,style:{height:26,borderRadius:5,background:conocidas?fondoOcup(p):"#f4f0f0",display:"flex",alignItems:"center",justifyContent:"center"},"data-gufi-src":"portal/hostel.tsx:788"},agrupado&&conocidas?__gh("span",{className:"b-num",style:{fontSize:9.5,fontWeight:700,color:tintaOcup(p)},"data-gufi-src":"portal/hostel.tsx:790"},ocupadas):null))}),cells}))),__gh("div",{className:"flex flex-wrap gap-4 mt-4 text-[12px]",style:{color:B.muted},"data-gufi-src":"portal/hostel.tsx:798"},agrupado?__gh("span",{className:"flex items-center gap-2","data-gufi-src":"portal/hostel.tsx:800"},"Camas ocupadas de la habitaci\xF3n: ",[0,25,50,75,100].map(v=>__gh("span",{key:v,className:"rounded",style:{width:16,height:11,background:fondoOcup(v)},"data-gufi-src":"portal/hostel.tsx:800"})),__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/hostel.tsx:800"},"vac\xEDa \u2192 llena")):__gh(__gf,null,__gh("span",{className:"flex items-center gap-1.5","data-gufi-src":"portal/hostel.tsx:803"},__gh("span",{className:"rounded",style:{width:12,height:12,background:fondoOcup(0)},"data-gufi-src":"portal/hostel.tsx:803"}),"Libre"),__gh("span",{className:"flex items-center gap-1.5","data-gufi-src":"portal/hostel.tsx:804"},__gh("span",{className:"rounded",style:{width:12,height:12,background:fondoOcup(100)},"data-gufi-src":"portal/hostel.tsx:804"}),"Ocupada")))):__gh(Empty,{text:"No hay propiedades en esta selecci\xF3n."}))}var PESTANAS=[["informe","Informe de gesti\xF3n"],["dia","D\xEDa a d\xEDa"],["reservas","Reservas y cobros"],["banco","Cuenta del hostal"],["calendario","Disponibilidad"],["viajeros","Viajeros"],["datos","Tus datos"]];function AreaHostel({api,token}){let[me,setMe]=(0,import_react40.useState)(null),[error,setError]=(0,import_react40.useState)("");return(0,import_react40.useEffect)(()=>{let vivo=!0;return api("portal_me",{token}).then(r=>{vivo&&setMe(r)}).catch(e=>{vivo&&setError(String(e&&e.message||e))}),()=>{vivo=!1}},[api,token]),error?__gh(Empty,{text:`No se pudo abrir el \xE1rea del hostal: ${error}`}):me?__gh(Hostel,{api,token,me}):__gh(Spin,null)}function Hostel({api,token,me}){let[tab,setTab]=(0,import_react40.useState)("informe"),propiedades=me&&me.propiedades||[],ownerName=me&&me.propietario?me.propietario.nombre:"",[sel,setSel]=(0,import_react40.useState)("all"),[year,setYear]=(0,import_react40.useState)(String(new Date().getFullYear())),propiedadIds=(0,import_react40.useMemo)(()=>unidadesDe(propiedades,sel),[propiedades,sel]),ambito=(0,import_react40.useMemo)(()=>nombreDeSeleccion(propiedades,sel),[propiedades,sel]),idsKey=propiedadIds.join(","),scope=(0,import_react40.useMemo)(()=>idsKey?{propiedadIds:idsKey.split(",").map(Number)}:{},[idsKey]),from=`${year}-01-01`,to=`${year}-12-31`,years=(0,import_react40.useMemo)(()=>{let y=new Date().getFullYear();return[y+1,y,y-1,y-2].map(String)},[]),[resData,setResData]=(0,import_react40.useState)(null),[resLoading,setResLoading]=(0,import_react40.useState)(!0),[txData,setTxData]=(0,import_react40.useState)(null),[vjData,setVjData]=(0,import_react40.useState)(null),[vjLoading,setVjLoading]=(0,import_react40.useState)(!1),[cocData,setCocData]=(0,import_react40.useState)(null),[facData,setFacData]=(0,import_react40.useState)(null),reloadFacturas=(0,import_react40.useCallback)(()=>api("portal_facturas",{token}).then(setFacData).catch(()=>setFacData({facturas:[],series:[]})),[token,api]),reloadTx=(0,import_react40.useCallback)(()=>{api("portal_transacciones",{token,...scope,from,to}).then(setTxData).catch(()=>{})},[scope,from,to,token,api]);(0,import_react40.useEffect)(()=>{if(tab!=="reservas")return;let a=!0;return setResLoading(!0),api("portal_reservas",{token,...scope,from,to}).then(r=>{a&&setResData(r)}).catch(()=>{a&&setResData({reservas:[],por_mes:[]})}).finally(()=>{a&&setResLoading(!1)}),()=>{a=!1}},[tab,scope,from,to,token,api]),(0,import_react40.useEffect)(()=>{if(tab!=="reservas")return;let a=!0;return api("portal_transacciones",{token,...scope,from,to}).then(r=>{a&&setTxData(r)}).catch(()=>{a&&setTxData({transacciones:[],resumen:[]})}),()=>{a=!1}},[tab,scope,from,to,token,api]),(0,import_react40.useEffect)(()=>{if(tab!=="viajeros")return;let a=!0;return setVjLoading(!0),api("portal_guest_report",{token,...scope,from,to}).then(r=>{a&&setVjData(r)}).catch(()=>{a&&setVjData({viajeros:[]})}).finally(()=>{a&&setVjLoading(!1)}),()=>{a=!1}},[tab,scope,from,to,token,api]),(0,import_react40.useEffect)(()=>{tab==="reservas"&&reloadFacturas()},[tab,reloadFacturas]),(0,import_react40.useEffect)(()=>{if(tab!=="reservas")return;let a=!0;return api("portal_conciliacion",{token}).then(r=>{a&&setCocData(r)}).catch(()=>{a&&setCocData({cuentas:[],props:[],ingresos:[],totales:{}})}),()=>{a=!1}},[tab,token,api]);let conAnio=tab==="reservas"||tab==="viajeros";return __gh("div",{className:"b-root","data-gufi-src":"portal/hostel.tsx:869"},__gh(Tabs,{value:tab,onChange:setTab,options:PESTANAS}),tab!=="banco"&&tab!=="datos"?__gh(Selector,{propiedades,sel,setSel,year,setYear,years,conAnio}):null,tab==="informe"&&__gh(Informe,{api,token,propiedadIds,ambito,ownerName}),tab==="dia"&&__gh(Ocupacion,{api,token,propiedadIds,ambito}),tab==="reservas"&&__gh(ReservasTab,{resData,txData,cocData,facData,resLoading,ownerName,api,token,onEmitida:reloadFacturas,onCobros:reloadTx,year,propiedadIds}),tab==="banco"&&__gh(Banco,{api,token}),tab==="calendario"&&__gh(Calendario3,{api,token,propiedadIds}),tab==="viajeros"&&__gh(Viajeros,{data:vjData,loading:vjLoading}),tab==="datos"&&__gh(Datos,{api,token}))}var import_react41=require("react"),import_lucide_react40=require("lucide-react");function Copiar2({texto,etiqueta:etiqueta4}){let[estado,setEstado]=(0,import_react41.useState)("");async function copiar(){try{await navigator.clipboard.writeText(texto),setEstado("ok"),setTimeout(()=>setEstado(""),1800)}catch{setEstado("No se ha podido copiar: selecci\xF3nalo y c\xF3pialo a mano.")}}return __gh("span",{style:{display:"inline-flex",flexDirection:"column",alignItems:"flex-start",gap:4},"data-gufi-src":"portal/cuentas.tsx:24"},__gh("button",{className:"p-btn p-btn-s",onClick:copiar,"data-gufi-src":"portal/cuentas.tsx:25"},estado==="ok"?__gh(__gf,null,__gh(import_lucide_react40.Check,{size:13}),"Copiado"):__gh(__gf,null,__gh(import_lucide_react40.Copy,{size:13}),etiqueta4)),estado&&estado!=="ok"?__gh("span",{style:{fontSize:12,color:B.red},"data-gufi-src":"portal/cuentas.tsx:26"},estado):null)}function ClaveNueva({r,portal,onClose}){let nombre=marca().nombre,que=deFactura()?"lo que te hemos facturado":"las reservas de tus pisos, lo que dejan y c\xF3mo va la ocupaci\xF3n",mensaje=`Hola${r.nombre?" "+r.nombre:""}: Ya tienes acceso a tu \xE1rea de propietario de ${nombre}: ${que} y, si vendemos o alquilamos alguno de tus pisos, cu\xE1nta gente pregunta y c\xF3mo van las visitas. ${portal||"[falta la direcci\xF3n del portal: par\xE1metro PORTAL_PROPIETARIOS_URL]"} Usuario: ${r.email} Contrase\xF1a: ${r.password} Un saludo, ${nombre}`;return __gh(Hoja,{titulo:r.creada?"Cuenta nueva":"Contrase\xF1a nueva",sub:r.nombre||r.email,onClose},__gh("div",{style:{borderRadius:14,background:"#f5f5f7",padding:"16px 16px 14px"},"data-gufi-src":"portal/cuentas.tsx:39"},__gh("div",{style:{fontSize:12,color:B.muted},"data-gufi-src":"portal/cuentas.tsx:40"},"Usuario"),__gh("div",{style:{fontSize:15,fontWeight:600,color:B.ink,marginTop:2,wordBreak:"break-all"},"data-gufi-src":"portal/cuentas.tsx:41"},r.email),__gh("div",{style:{fontSize:12,color:B.muted,marginTop:12},"data-gufi-src":"portal/cuentas.tsx:42"},"Contrase\xF1a"),__gh("div",{className:"b-num",style:{fontSize:24,fontWeight:600,letterSpacing:".02em",color:B.ink,marginTop:2,userSelect:"all"},"data-gufi-src":"portal/cuentas.tsx:43"},r.password),__gh("div",{style:{marginTop:12},"data-gufi-src":"portal/cuentas.tsx:44"},__gh(Copiar2,{texto:r.password,etiqueta:"Copiar contrase\xF1a"}))),__gh("div",{style:{borderRadius:12,background:"rgba(180,83,9,.07)",color:"#8a4b0f",fontSize:13,lineHeight:1.5,padding:"10px 13px",marginTop:12},"data-gufi-src":"portal/cuentas.tsx:46"},"Ap\xFAntala o env\xEDala ahora: no se guarda en claro y no se podr\xE1 volver a ver. Si se pierde, se genera otra.",r.sesiones_cerradas?` Se han cerrado ${num(r.sesiones_cerradas)} sesi\xF3n${r.sesiones_cerradas===1?"":"es"} abierta${r.sesiones_cerradas===1?"":"s"} de esta cuenta.`:""),__gh("div",{className:"p-sec","data-gufi-src":"portal/cuentas.tsx:50"},"Mensaje para mandar"),__gh("pre",{style:{whiteSpace:"pre-wrap",fontFamily:"inherit",fontSize:13.5,lineHeight:1.55,color:B.ink,background:"#fff",border:`1px solid ${B.hair}`,borderRadius:12,padding:"12px 14px",margin:0,userSelect:"all"},"data-gufi-src":"portal/cuentas.tsx:51"},mensaje),__gh("div",{style:{marginTop:10},"data-gufi-src":"portal/cuentas.tsx:52"},__gh(Copiar2,{texto:mensaje,etiqueta:"Copiar mensaje"})))}var cuando2=s=>s?`${fmtLarga(s)} \xB7 ${s.slice(11,16)}`:null;function Cuentas({api,token,verComo}){let movil=useIsMobile(900),[recarga,setRecarga]=(0,import_react41.useState)(0),f=useScript(api,"portal_cuentas",{token,accion:"lista",recarga},!0),[q,setQ]=(0,import_react41.useState)(""),[filtro,setFiltro]=(0,import_react41.useState)("todas"),[confirmar,setConfirmar]=(0,import_react41.useState)(""),[ocupado,setOcupado]=(0,import_react41.useState)(""),[error,setError]=(0,import_react41.useState)(""),[clave,setClave]=(0,import_react41.useState)(null),{orden,th,flecha:flecha3}=useOrden(null),cuentas=f.datos&&f.datos.cuentas||[],norm=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),filas=(0,import_react41.useMemo)(()=>{let n=norm(q),vis=cuentas.filter(c=>(filtro==="todas"||filtro==="entrado"&&c.ultimo_login||filtro==="nunca"&&!c.ultimo_login&&c.activo||filtro==="desactivadas"&&!c.activo)&&(!n||norm(`${c.nombre} ${c.email} ${(c.establecimientos||[]).join(" ")}`).includes(n)));return ordenar(vis,orden,{nombre:c=>c.nombre||c.email,pisos:c=>c.pisos,acceso:c=>c.ultimo_login})},[cuentas,q,filtro,orden]),pedir=k=>confirmar!==k?(setConfirmar(k),setTimeout(()=>setConfirmar(c=>c===k?"":c),4e3),!1):(setConfirmar(""),!0);async function hacer(c,accion){let k=`${accion}:${c.id}`;if(!((accion==="nueva_clave"||accion==="activar"&&c.activo)&&!pedir(k))){setOcupado(k),setError("");try{if(accion==="nueva_clave"&&setClave(await api("portal_cuentas",{token,accion,propietarioId:c.id})),accion==="activar"&&(await api("portal_cuentas",{token,accion,propietarioId:c.id,activo:!c.activo}),setRecarga(n=>n+1)),accion==="ver_como"){let r=await api("portal_cuentas",{token,accion,propietarioId:c.id});verComo(r)}accion==="crear"&&setClave(await api("portal_cuentas",{token,accion,email:c.email}))}catch(e){setError(`${c.nombre||c.email}: ${String(e&&e.message||e)}`)}setOcupado("")}}if(f.error)return __gh("div",{className:"p-card","data-gufi-src":"portal/cuentas.tsx:95"},__gh(Vacio2,{titulo:"No se han podido cargar las cuentas",texto:f.error}));if(f.cargando&&!f.datos)return __gh("div",{className:"p-card",style:{padding:70,display:"flex",justifyContent:"center"},"data-gufi-src":"portal/cuentas.tsx:96"},__gh(import_lucide_react40.Loader2,{className:"animate-spin",style:{color:B.accent}}));let entraron=cuentas.filter(c=>c.ultimo_login).length,sinCuenta=f.datos&&f.datos.sin_cuenta||[],desactivadas=cuentas.filter(c=>!c.activo).length,boton2=(c,accion,contenido,peligro)=>{let k=`${accion}:${c.id}`,pide=confirmar===k;return __gh("button",{className:"p-btn p-btn-s",disabled:!!ocupado,onClick:()=>hacer(c,accion),style:pide?{background:peligro?B.red:B.accent,borderColor:peligro?B.red:B.accent,color:"#fff"}:void 0,"data-gufi-src":"portal/cuentas.tsx:105"},ocupado===k?__gh(import_lucide_react40.Loader2,{size:13,className:"animate-spin"}):pide?"\xBFSeguro?":contenido)};return __gh("div",{className:"p-grid","data-gufi-src":"portal/cuentas.tsx:113"},__gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/cuentas.tsx:114"},__gh("div",{className:"p-stats","data-gufi-src":"portal/cuentas.tsx:115"},__gh(Cifra2,{l:"Cuentas",v:num(cuentas.length),s:"una por correo de propietario"}),__gh(Cifra2,{l:"Han entrado",v:num(entraron),s:"alguna vez"}),__gh(Cifra2,{l:"Nunca han entrado",v:num(cuentas.length-entraron-cuentas.filter(c=>!c.activo&&!c.ultimo_login).length),s:"activas y sin estrenar"}),__gh(Cifra2,{l:"Desactivadas",v:num(desactivadas)}))),__gh("p",{className:"p-note",style:{lineHeight:1.5},"data-gufi-src":"portal/cuentas.tsx:123"},"Las contrase\xF1as no se pueden ver, de nadie: se guardan cifradas. Para darle acceso a un propietario, genera una nueva y m\xE1ndasela; la vieja deja de valer y se cierran sus sesiones abiertas.",f.datos&&f.datos.anuncios_sin_correo?` Hay ${num(f.datos.anuncios_sin_correo)} anuncios sin correo de propietario en su ficha: no entran en ninguna cuenta.`:""),__gh("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:8},"data-gufi-src":"portal/cuentas.tsx:128"},__gh("label",{className:"p-pill",style:{cursor:"text",minWidth:240,flex:movil?"1 1 100%":"0 1 340px"},"data-gufi-src":"portal/cuentas.tsx:129"},__gh(import_lucide_react40.Search,{size:15,style:{color:B.faint}}),__gh("input",{value:q,onChange:e=>setQ(e.target.value),placeholder:"Buscar propietario, correo o establecimiento",style:{border:"none",outline:"none",background:"transparent",fontSize:13.5,flex:1,minWidth:0,color:B.ink},"data-gufi-src":"portal/cuentas.tsx:131"})),__gh("div",{className:"p-seg","data-gufi-src":"portal/cuentas.tsx:133"},[["todas","Todas"],["entrado","Han entrado"],["nunca","Nunca"],["desactivadas","Desactivadas"]].map(([k,l])=>__gh("button",{key:k,"data-on":filtro===k?"1":"0",onClick:()=>setFiltro(k),"data-gufi-src":"portal/cuentas.tsx:134"},l)))),error?__gh("div",{className:"p-note",style:{color:B.red},"data-gufi-src":"portal/cuentas.tsx:137"},error):null,sinCuenta.length?__gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/cuentas.tsx:140"},__gh("div",{className:"p-card-h","data-gufi-src":"portal/cuentas.tsx:141"},__gh("div",{"data-gufi-src":"portal/cuentas.tsx:141"},__gh("h3",{"data-gufi-src":"portal/cuentas.tsx:141"},"Sin cuenta todav\xEDa"),__gh("p",{"data-gufi-src":"portal/cuentas.tsx:141"},"Su correo est\xE1 en la ficha de alg\xFAn piso, pero no pueden entrar hasta que se les cree la cuenta."))),__gh("div",{style:{padding:"10px 20px 6px"},"data-gufi-src":"portal/cuentas.tsx:142"},sinCuenta.map((c,k)=>__gh("div",{key:c.email,style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",padding:"10px 0",borderTop:k?`1px solid ${B.hair}`:"none"},"data-gufi-src":"portal/cuentas.tsx:144"},__gh("div",{style:{flex:"1 1 260px",minWidth:0},"data-gufi-src":"portal/cuentas.tsx:145"},__gh("div",{style:{fontWeight:600,color:B.ink,overflowWrap:"anywhere"},"data-gufi-src":"portal/cuentas.tsx:146"},c.nombre||c.email),__gh("div",{style:{fontSize:12.5,color:B.muted,overflowWrap:"anywhere"},"data-gufi-src":"portal/cuentas.tsx:147"},c.nombre?`${c.email} \xB7 `:"",(c.fichas||[]).join(", "))),boton2({id:c.email,email:c.email,nombre:c.nombre},"crear",__gh(__gf,null,__gh(import_lucide_react40.KeyRound,{size:13}),"Crear cuenta"),!1))))):null,__gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/cuentas.tsx:156"},filas.length?__gh("div",{style:{overflowX:"auto"},"data-gufi-src":"portal/cuentas.tsx:158"},__gh("table",{className:"p-table",style:{minWidth:920},"data-gufi-src":"portal/cuentas.tsx:159"},__gh("thead",{"data-gufi-src":"portal/cuentas.tsx:160"},__gh("tr",{"data-gufi-src":"portal/cuentas.tsx:160"},__gh("th",{...th("nombre"),"data-gufi-src":"portal/cuentas.tsx:161"},"Propietario",flecha3("nombre")),__gh("th",{"data-r":"1",...th("pisos"),"data-gufi-src":"portal/cuentas.tsx:162"},"Pisos",flecha3("pisos")),__gh("th",{...th("acceso"),"data-gufi-src":"portal/cuentas.tsx:163"},"\xDAltimo acceso",flecha3("acceso")),__gh("th",{"data-gufi-src":"portal/cuentas.tsx:164"},"Estado"),__gh("th",{"data-r":"1","data-gufi-src":"portal/cuentas.tsx:165"},"Acciones"))),__gh("tbody",{"data-gufi-src":"portal/cuentas.tsx:167"},filas.map(c=>__gh("tr",{key:c.id,"data-gufi-src":"portal/cuentas.tsx:169"},__gh("td",{style:{maxWidth:340,overflow:"hidden",textOverflow:"ellipsis"},"data-gufi-src":"portal/cuentas.tsx:170"},__gh("div",{style:{fontWeight:600,color:c.activo?B.ink:B.muted,overflow:"hidden",textOverflow:"ellipsis"},"data-gufi-src":"portal/cuentas.tsx:171"},c.nombre||"\u2014"),__gh("div",{style:{fontSize:12.5,color:B.muted,overflow:"hidden",textOverflow:"ellipsis"},"data-gufi-src":"portal/cuentas.tsx:172"},c.email)),__gh("td",{"data-r":"1","data-gufi-src":"portal/cuentas.tsx:174"},__gh("div",{"data-gufi-src":"portal/cuentas.tsx:175"},num(c.pisos)),(c.establecimientos||[]).length?__gh("div",{style:{fontSize:12,color:B.faint},"data-gufi-src":"portal/cuentas.tsx:176"},c.establecimientos.join(", ")):c.anuncios!==c.pisos?__gh("div",{style:{fontSize:12,color:B.faint},"data-gufi-src":"portal/cuentas.tsx:176"},num(c.anuncios)," anuncios"):null),__gh("td",{style:{color:c.ultimo_login?B.ink:B.faint},"data-gufi-src":"portal/cuentas.tsx:178"},cuando2(c.ultimo_login)||"Nunca"),__gh("td",{"data-gufi-src":"portal/cuentas.tsx:179"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7,flexWrap:"wrap"},"data-gufi-src":"portal/cuentas.tsx:180"},__gh("span",{className:"p-dot",style:{background:c.activo?B.green:B.faint},"data-gufi-src":"portal/cuentas.tsx:181"}),c.activo?"Activa":"Desactivada",c.maestro?__gh("span",{className:"b-pill",style:{color:B.accent,background:"rgba(29,29,31,.07)",padding:"3px 8px"},"data-gufi-src":"portal/cuentas.tsx:182"},"Maestra"):null,c.sesiones?__gh("span",{style:{fontSize:12,color:B.muted},"data-gufi-src":"portal/cuentas.tsx:183"},"\xB7 ",num(c.sesiones)," sesi\xF3n",c.sesiones===1?"":"es"):null)),__gh("td",{"data-r":"1","data-gufi-src":"portal/cuentas.tsx:186"},__gh("span",{style:{display:"inline-flex",gap:6,justifyContent:"flex-end"},"data-gufi-src":"portal/cuentas.tsx:187"},!c.maestro&&c.activo?boton2(c,"ver_como",__gh(__gf,null,__gh(import_lucide_react40.Eye,{size:13}),"Ver como"),!1):null,boton2(c,"nueva_clave",__gh(__gf,null,__gh(import_lucide_react40.KeyRound,{size:13}),"Contrase\xF1a nueva"),!1),c.maestro?null:boton2(c,"activar",c.activo?"Desactivar":"Activar",c.activo)))))))):__gh(Vacio2,{titulo:"Ninguna cuenta coincide",texto:"Prueba con otro nombre o quita el filtro."})),clave?__gh(ClaveNueva,{r:clave,portal:f.datos&&f.datos.portal,onClose:()=>{setClave(null),setRecarga(n=>n+1)}}):null)}var import_react42=require("react"),import_lucide_react41=require("lucide-react");var NEGOCIO={venta:"En venta",alquiler:"En alquiler",ambas:"En venta y en alquiler"},MES2=["enero","febrero","marzo","abril","mayo","junio","julio","agosto","septiembre","octubre","noviembre","diciembre"],DIA2=["domingo","lunes","martes","mi\xE9rcoles","jueves","viernes","s\xE1bado"],TANDA=12,d=s=>new Date(s+"T12:00:00Z"),masDias=(s,n)=>{let x=d(s);return x.setUTCDate(x.getUTCDate()+n),x.toISOString().slice(0,10)};function rango(desde2){let a=d(desde2),b=d(masDias(desde2,6));return a.getUTCMonth()===b.getUTCMonth()?`del ${a.getUTCDate()} al ${b.getUTCDate()} de ${MES2[b.getUTCMonth()]}`:`del ${a.getUTCDate()} de ${MES2[a.getUTCMonth()]} al ${b.getUTCDate()} de ${MES2[b.getUTCMonth()]}`}var corto=s=>`${d(s).getUTCDate()} ${MES2[d(s).getUTCMonth()].slice(0,3)}`,diaVisita=v=>{let x=d(v.dia),t2=`${DIA2[x.getUTCDay()]} ${x.getUTCDate()} de ${MES2[x.getUTCMonth()]}`;return t2.charAt(0).toUpperCase()+t2.slice(1)+(v.hora?`, ${v.hora}`:"")},eur=n=>`${String(Math.round(Number(n))).replace(/\B(?=(\d{3})+(?!\d))/g,".")} \u20AC`,precioDe=p=>[p.precio_venta?eur(p.precio_venta):null,p.precio_alquiler?`${eur(p.precio_alquiler)} al mes`:null].filter(Boolean).join(" \xB7 "),sumar2=(ss,k)=>ss.reduce((a,s)=>a+s[k],0);function Semanas2({semanas}){let max=Math.max(1,...semanas.map(s=>Math.max(s.contactos,s.visitas))),ALTO=64;return __gh("div",{style:{padding:"16px 20px 18px"},"data-gufi-src":"portal/comercial.tsx:43"},__gh("div",{style:{display:"flex",alignItems:"flex-end",gap:8,height:ALTO+40},"data-gufi-src":"portal/comercial.tsx:44"},semanas.map((s,k)=>{let ultima=k===semanas.length-1;return __gh("div",{key:s.desde,title:`Semana ${rango(s.desde)}: ${s.contactos} ${s.contactos===1?"contacto":"contactos"} y ${s.visitas} ${s.visitas===1?"visita":"visitas"}`,style:{flex:1,minWidth:0,display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"flex-end",height:"100%"},"data-gufi-src":"portal/comercial.tsx:48"},__gh("div",{style:{display:"flex",alignItems:"flex-end",gap:3,height:ALTO},"data-gufi-src":"portal/comercial.tsx:50"},__gh("div",{style:{width:9,height:s.contactos?Math.max(4,s.contactos/max*ALTO):2,borderRadius:3,background:s.contactos?B.accent:B.hair},"data-gufi-src":"portal/comercial.tsx:51"}),__gh("div",{style:{width:9,height:s.visitas?Math.max(4,s.visitas/max*ALTO):2,borderRadius:3,background:s.visitas?B.gold:B.hair},"data-gufi-src":"portal/comercial.tsx:52"})),__gh("div",{className:"b-num",style:{fontSize:11,color:ultima?B.ink:B.faint,fontWeight:ultima?600:400,marginTop:7,whiteSpace:"nowrap"},"data-gufi-src":"portal/comercial.tsx:54"},ultima?"Esta":corto(s.desde)))})),__gh("div",{className:"p-note",style:{gap:14,marginTop:4,flexWrap:"wrap"},"data-gufi-src":"portal/comercial.tsx:59"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6},"data-gufi-src":"portal/comercial.tsx:60"},__gh("span",{className:"p-dot",style:{background:B.accent},"data-gufi-src":"portal/comercial.tsx:60"}),"Contactos"),__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6},"data-gufi-src":"portal/comercial.tsx:61"},__gh("span",{className:"p-dot",style:{background:B.gold},"data-gufi-src":"portal/comercial.tsx:61"}),"Visitas"),__gh("span",{"data-gufi-src":"portal/comercial.tsx:62"},"Semanas de lunes a domingo")))}function Piso({p}){let s=p.semanas[p.semanas.length-1],vias=[s.idealista?`${s.idealista} por idealista`:null,s.web?`${s.web} por nuestra web`:null].filter(Boolean).join(" y "),precio2=precioDe(p),enWeb=p.anunciado.web,enIdealista=p.anunciado.idealista;return __gh("div",{className:"p-card",style:{overflow:"hidden",minWidth:0},"data-gufi-src":"portal/comercial.tsx:75"},__gh("div",{className:"p-card-h",style:{flexWrap:"wrap",alignItems:"flex-start"},"data-gufi-src":"portal/comercial.tsx:76"},__gh("div",{style:{minWidth:0},"data-gufi-src":"portal/comercial.tsx:77"},__gh("h3",{"data-gufi-src":"portal/comercial.tsx:78"},p.nombre),__gh("p",{"data-gufi-src":"portal/comercial.tsx:79"},NEGOCIO[p.negocio],precio2?` por ${precio2}`:"")),__gh("div",{style:{display:"flex",gap:14,flexWrap:"wrap",fontSize:13},"data-gufi-src":"portal/comercial.tsx:81"},enIdealista.map(a=>__gh("a",{key:a.url,href:a.url,target:"_blank",rel:"noreferrer",style:{display:"inline-flex",alignItems:"center",gap:6,color:B.accent,textDecoration:"none",fontWeight:600},"data-gufi-src":"portal/comercial.tsx:83"},__gh("span",{className:"p-dot",style:{background:B.green,width:7,height:7},"data-gufi-src":"portal/comercial.tsx:84"}),"idealista",enIdealista.length>1?` \xB7 ${a.operacion}`:"",__gh(import_lucide_react41.ArrowUpRight,{size:13}))),enWeb?__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6,color:B.sub},"data-gufi-src":"portal/comercial.tsx:87"},__gh("span",{className:"p-dot",style:{background:B.green,width:7,height:7},"data-gufi-src":"portal/comercial.tsx:87"}),"En nuestra web"):null,!enWeb&&!enIdealista.length?__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6,color:B.muted},"data-gufi-src":"portal/comercial.tsx:88"},__gh("span",{className:"p-dot",style:{background:B.faint,width:7,height:7},"data-gufi-src":"portal/comercial.tsx:88"}),"Sin anunciar ahora mismo"):null)),__gh("div",{className:"p-stats",style:{marginTop:14,borderTop:`1px solid ${B.hair}`},"data-gufi-src":"portal/comercial.tsx:91"},__gh(Cifra2,{l:"Han preguntado esta semana",v:num(s.contactos),s:vias||"nadie todav\xEDa"}),__gh(Cifra2,{l:"Visitas esta semana",v:num(s.visitas),s:s.visitas?`${num(s.hechas)} ${s.hechas===1?"hecha":"hechas"}`:"ninguna"}),__gh(Cifra2,{l:"Contactos en 8 semanas",v:num(sumar2(p.semanas,"contactos")),s:`${num(sumar2(p.semanas,"idealista"))} por idealista`}),__gh(Cifra2,{l:"Visitas en 8 semanas",v:num(sumar2(p.semanas,"visitas")),s:`${num(sumar2(p.semanas,"hechas"))} hechas`})),__gh("div",{style:{borderTop:`1px solid ${B.hair}`},"data-gufi-src":"portal/comercial.tsx:97"},__gh(Semanas2,{semanas:p.semanas})),__gh("div",{style:{borderTop:`1px solid ${B.hair}`,padding:"14px 20px 8px"},"data-gufi-src":"portal/comercial.tsx:98"},__gh("div",{style:{fontSize:13.5,fontWeight:600,color:B.ink},"data-gufi-src":"portal/comercial.tsx:99"},"Visitas"),p.visitas.length?p.visitas.map((v,k)=>__gh("div",{key:k,style:{padding:"10px 0",borderTop:k?`1px solid ${B.hair}`:"none",display:"flex",gap:14,flexWrap:"wrap"},"data-gufi-src":"portal/comercial.tsx:101"},__gh("div",{className:"b-num",style:{fontSize:13.5,color:B.ink,minWidth:190},"data-gufi-src":"portal/comercial.tsx:102"},diaVisita(v)),__gh("div",{style:{flex:"1 1 260px",minWidth:0,fontSize:13.5,color:B.sub,lineHeight:1.45},"data-gufi-src":"portal/comercial.tsx:103"},[v.estado==="Realizada"?null:String(v.estado||"").toLowerCase(),v.interes?`inter\xE9s ${v.interes.toLowerCase()}`:null].filter(Boolean).join(", ").replace(/^./,c=>c.toUpperCase()),v.comentario?__gh("span",{style:{color:B.ink},"data-gufi-src":"portal/comercial.tsx:105"},v.estado!=="Realizada"||v.interes?". ":"",v.comentario):null,!v.comentario&&v.estado==="Realizada"&&!v.interes?"Hecha, sin comentario":null))):__gh("div",{className:"p-note",style:{padding:"8px 0 10px"},"data-gufi-src":"portal/comercial.tsx:109"},"Ninguna en las \xFAltimas 8 semanas.")))}function Comercial({api,token,maestro}){let f=useScript(api,"portal_comercial",{token},!0),[q,setQ]=(0,import_react42.useState)(""),[ver,setVer]=(0,import_react42.useState)(TANDA),pisos=f.datos&&f.datos.pisos||[],filtrados=(0,import_react42.useMemo)(()=>{let t2=q.trim().toLowerCase();return t2?pisos.filter(p=>`${p.nombre} ${p.direccion||""} ${p.ciudad||""}`.toLowerCase().includes(t2)):pisos},[pisos,q]);if(f.error)return __gh("div",{className:"p-card","data-gufi-src":"portal/comercial.tsx:125"},__gh(Vacio2,{titulo:"No se ha podido cargar c\xF3mo van tus pisos",texto:f.error}));if(f.cargando||!f.datos)return __gh("div",{className:"p-card",style:{padding:70,display:"flex",justifyContent:"center"},"data-gufi-src":"portal/comercial.tsx:126"},__gh(import_lucide_react41.Loader2,{className:"animate-spin",style:{color:B.accent}}));if(!pisos.length)return __gh("div",{className:"p-card","data-gufi-src":"portal/comercial.tsx:127"},__gh(Vacio2,{titulo:"Ning\xFAn piso en venta ni en alquiler",texto:`Cuando ${marca().nombre} anuncie uno de tus pisos, aqu\xED ver\xE1s cu\xE1nta gente pregunta y c\xF3mo van las visitas.`}));let semana=f.datos.semanas[f.datos.semanas.length-1],ultima=k=>sumar2(pisos.map(p=>p.semanas[p.semanas.length-1]),k),cuantos=n=>pisos.filter(p=>p.negocio===n).length,reparto=[cuantos("venta")?`${cuantos("venta")} en venta`:null,cuantos("alquiler")?`${cuantos("alquiler")} en alquiler`:null,cuantos("ambas")?`${cuantos("ambas")} en venta y en alquiler`:null].filter(Boolean).join(", ");return __gh("div",{className:"p-grid","data-gufi-src":"portal/comercial.tsx:135"},__gh("div",{className:"p-card",style:{overflow:"hidden"},"data-gufi-src":"portal/comercial.tsx:136"},__gh("div",{style:{padding:"22px 24px 18px"},"data-gufi-src":"portal/comercial.tsx:137"},__gh("div",{className:"p-note","data-gufi-src":"portal/comercial.tsx:138"},"Esta semana, ",rango(semana.desde)),__gh("div",{style:{fontSize:"clamp(26px, 5vw, 34px)",fontWeight:600,letterSpacing:"-1px",lineHeight:1.15,marginTop:8,color:B.ink},"data-gufi-src":"portal/comercial.tsx:139"},pisos.length===1?`Tu piso, ${NEGOCIO[pisos[0].negocio].toLowerCase()}`:`${num(pisos.length)} pisos: ${reparto}`)),__gh("div",{className:"p-stats",style:{borderTop:`1px solid ${B.hair}`},"data-gufi-src":"portal/comercial.tsx:143"},__gh(Cifra2,{l:"Han preguntado",v:num(ultima("contactos")),s:`${num(ultima("idealista"))} por idealista`}),__gh(Cifra2,{l:"Visitas",v:num(ultima("visitas")),s:`${num(ultima("hechas"))} hechas`}),__gh(Cifra2,{l:"Contactos en 8 semanas",v:num(pisos.reduce((a,p)=>a+sumar2(p.semanas,"contactos"),0)),s:"desde la web y desde idealista"}),__gh(Cifra2,{l:"Visitas en 8 semanas",v:num(pisos.reduce((a,p)=>a+sumar2(p.semanas,"visitas"),0)),s:"hechas o previstas"}))),pisos.length>TANDA?__gh("input",{className:"b-input",style:{maxWidth:360},value:q,onChange:e=>{setQ(e.target.value),setVer(TANDA)},placeholder:maestro?"Buscar piso, calle o ciudad":"Buscar piso","data-gufi-src":"portal/comercial.tsx:152"}):null,filtrados.slice(0,ver).map(p=>__gh(Piso,{key:p.id,p})),filtrados.length>ver?__gh("button",{className:"p-btn",style:{justifySelf:"center"},onClick:()=>setVer(n=>n+TANDA),"data-gufi-src":"portal/comercial.tsx:156"},"Ver ",num(Math.min(TANDA,filtrados.length-ver))," m\xE1s \xB7 quedan ",num(filtrados.length-ver)):null,filtrados.length?null:__gh("div",{className:"p-card","data-gufi-src":"portal/comercial.tsx:158"},__gh(Vacio2,{titulo:"Ning\xFAn piso con ese nombre",texto:"Prueba con la calle o con la ciudad."})),__gh("p",{className:"p-note",style:{lineHeight:1.5,display:"block"},"data-gufi-src":"portal/comercial.tsx:160"},"Han preguntado: personas que han escrito por el piso en idealista o en nuestra web; quien vuelve a escribir cuenta una vez. Visitas: las de esa semana, hechas o ya previstas, con lo que anot\xF3 quien las ense\xF1\xF3."))}function EstanciaPagina({f,id,propPorId,periodo,api,token,onVolver}){return __gh(Estado,{f,periodo,hijos:d2=>{let e=d2.estancias.find(x=>String(x.id)===String(id));return e?__gh(DetalleEstancia,{e,propPorId,onVolver,api,token}):__gh(Pagina,{titulo:"Esa estancia no es de este periodo",onVolver},__gh("div",{className:"p-note",style:{padding:"10px 0"},"data-gufi-src":"portal/index.tsx:68"},"No aparece entre las de ",periodoTexto(periodo.desde,periodo.hasta).toLowerCase(),". Vuelve, cambia el periodo de arriba y \xE1brela otra vez."))}})}function Entrar({api,onEntrar,web}){let[email,setEmail]=(0,import_react43.useState)(""),[password,setPassword]=(0,import_react43.useState)(""),[enviando,setEnviando]=(0,import_react43.useState)(!1),[error,setError]=(0,import_react43.useState)("");async function enviar(e){if(e.preventDefault(),!email||!password){setError("Escribe tu correo y tu contrase\xF1a.");return}setEnviando(!0),setError("");try{let r=await api("portal_login",{email:email.trim(),password});onEntrar(r.token)}catch(ex){setError(String(ex&&ex.message||ex)),setEnviando(!1)}}return __gh("div",{className:"b-root",style:{minHeight:"100vh",background:"linear-gradient(180deg,#f5f5f7 0%,#f5f5f7 60%)",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",padding:"32px 16px"},"data-gufi-src":"portal/index.tsx:93"},__gh("style",{"data-gufi-src":"portal/index.tsx:94"},B_CSS),__gh("div",{className:"b-rise",style:{width:"100%",maxWidth:400},"data-gufi-src":"portal/index.tsx:95"},__gh("div",{style:{display:"flex",flexDirection:"column",alignItems:"center",textAlign:"center",marginBottom:28},"data-gufi-src":"portal/index.tsx:96"},__gh("a",{href:web,title:`Ir a la web de ${marca().nombre}`,style:{boxShadow:"0 14px 34px -14px rgba(29,29,31,.6)",borderRadius:17},"data-gufi-src":"portal/index.tsx:97"},__gh(Logo,{tam:64})),__gh("h1",{style:{fontSize:30,fontWeight:600,letterSpacing:"-.9px",color:B.ink,marginTop:20,lineHeight:1.1},"data-gufi-src":"portal/index.tsx:98"},"Tu \xE1rea de propietario"),__gh("p",{style:{fontSize:15,color:B.muted,marginTop:10,lineHeight:1.5,maxWidth:330},"data-gufi-src":"portal/index.tsx:99"},"Todo lo de tus propiedades con ",marca().nombre,", en un solo sitio.")),__gh("form",{onSubmit:enviar,className:"p-card",style:{padding:24,boxShadow:"0 24px 60px -30px rgba(0,0,0,.25)"},"data-gufi-src":"portal/index.tsx:101"},__gh("label",{style:{fontSize:13,fontWeight:600,color:B.ink},"data-gufi-src":"portal/index.tsx:102"},"Correo electr\xF3nico"),__gh("input",{className:"b-input",style:{marginTop:6,marginBottom:14},type:"email",autoComplete:"username",value:email,onChange:e=>setEmail(e.target.value),placeholder:"tu@correo.com","data-gufi-src":"portal/index.tsx:103"}),__gh("label",{style:{fontSize:13,fontWeight:600,color:B.ink},"data-gufi-src":"portal/index.tsx:104"},"Contrase\xF1a"),__gh("input",{className:"b-input",style:{marginTop:6},type:"password",autoComplete:"current-password",value:password,onChange:e=>setPassword(e.target.value),placeholder:"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022","data-gufi-src":"portal/index.tsx:105"}),error?__gh("div",{style:{marginTop:12,borderRadius:12,padding:"10px 13px",fontSize:13,color:B.red,background:"rgba(220,38,38,.07)"},"data-gufi-src":"portal/index.tsx:106"},error):null,__gh("button",{type:"submit",disabled:enviando,className:"p-btn p-btn-a",style:{width:"100%",height:46,borderRadius:13,fontSize:15,marginTop:18},"data-gufi-src":"portal/index.tsx:107"},enviando?__gh(import_lucide_react42.Loader2,{size:17,className:"animate-spin"}):__gh(__gf,null,"Entrar ",__gh(import_lucide_react42.ArrowRight,{size:16})))),marca().email?__gh("p",{style:{textAlign:"center",fontSize:12.5,color:B.faint,marginTop:18},"data-gufi-src":"portal/index.tsx:111"},"\xBFNo puedes entrar? Escribe a ",marca().email):null))}var periodoMes=ym=>({desde:ym+"-01",hasta:primeroMesSiguiente(ym)}),periodoAnio=y=>({desde:`${y}-01-01`,hasta:`${Number(y)+1}-01-01`});function FiltroPeriodo({periodo,setPeriodo,ultimoMes,primerAnio}){let[abierto,setAbierto]=(0,import_react43.useState)(!1),anioUlt=Number(ultimoMes.slice(0,4)),anios=[];for(let y=anioUlt;y>=primerAnio;y--)anios.push(y);let[anio,setAnio]=(0,import_react43.useState)(Number(periodo.desde.slice(0,4))||anioUlt),[d2,setD]=(0,import_react43.useState)(periodo.desde),[h,setH]=(0,import_react43.useState)(sumarDias(periodo.hasta,-1)),elegir=p=>{setPeriodo(p),setAbierto(!1)},on=p=>p.desde===periodo.desde&&p.hasta===periodo.hasta,mesesAnio=[];for(let m=1;m<=12;m++){let ym=`${anio}-${String(m).padStart(2,"0")}`;ym<=ultimoMes&&mesesAnio.push(ym)}let trimestres=[1,2,3,4].map(t2=>({t:t2,desde:`${anio}-${String(t2*3-2).padStart(2,"0")}-01`,hasta:t2===4?`${anio+1}-01-01`:`${anio}-${String(t2*3+1).padStart(2,"0")}-01`})).filter(x=>x.desde.slice(0,7)<=ultimoMes),chip=activo=>({padding:"7px 11px",borderRadius:9,fontSize:13,fontWeight:activo?600:500,border:`1px solid ${activo?"rgba(29,29,31,.45)":B.hair}`,background:activo?"rgba(29,29,31,.06)":"#fff",color:activo?B.accent:B.ink,cursor:"pointer"});return __gh(Desplegable2,{abierto,setAbierto,boton:__gh(Pildora,{etiqueta:"Periodo",valor:periodoTexto(periodo.desde,periodo.hasta),activa:abierto,onClick:()=>setAbierto(!abierto)})},__gh("div",{style:{padding:14,width:340,maxWidth:"88vw"},"data-gufi-src":"portal/index.tsx:140"},__gh("button",{className:"p-opt","data-on":on(periodoMes(ultimoMes))?"1":"0",onClick:()=>elegir(periodoMes(ultimoMes)),"data-gufi-src":"portal/index.tsx:141"},deFactura()?"\xDAltimo mes facturado":"Este mes"," ",__gh("span",{className:"s","data-gufi-src":"portal/index.tsx:142"},mesLabel(ultimoMes))),anios.length>1?__gh("div",{className:"p-seg",style:{marginTop:10},"data-gufi-src":"portal/index.tsx:145"},anios.map(y=>__gh("button",{key:y,"data-on":y===anio?"1":"0",onClick:()=>setAnio(y),"data-gufi-src":"portal/index.tsx:145"},y))):null,__gh("div",{className:"p-grp",style:{paddingLeft:2},"data-gufi-src":"portal/index.tsx:147"},"A\xF1o"),__gh("div",{style:{display:"flex",gap:6,flexWrap:"wrap"},"data-gufi-src":"portal/index.tsx:148"},__gh("button",{style:chip(on(periodoAnio(anio))),onClick:()=>elegir(periodoAnio(anio)),"data-gufi-src":"portal/index.tsx:149"},"Todo ",anio),trimestres.map(x=>__gh("button",{key:x.t,style:chip(on(x)),onClick:()=>elegir({desde:x.desde,hasta:x.hasta}),"data-gufi-src":"portal/index.tsx:150"},"T",x.t))),__gh("div",{className:"p-grp",style:{paddingLeft:2},"data-gufi-src":"portal/index.tsx:152"},"Mes"),__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(4,1fr)",gap:6},"data-gufi-src":"portal/index.tsx:153"},mesesAnio.map(ym=>__gh("button",{key:ym,style:chip(on(periodoMes(ym))),onClick:()=>elegir(periodoMes(ym)),"data-gufi-src":"portal/index.tsx:154"},MES[Number(ym.slice(5))].slice(0,3)))),__gh("div",{className:"p-grp",style:{paddingLeft:2},"data-gufi-src":"portal/index.tsx:156"},"Entre dos fechas"),__gh("div",{style:{display:"flex",gap:6,alignItems:"center"},"data-gufi-src":"portal/index.tsx:157"},__gh("input",{type:"date",className:"b-input",style:{padding:"7px 9px",fontSize:13,borderRadius:9},value:d2,onChange:e=>setD(e.target.value),"data-gufi-src":"portal/index.tsx:158"}),__gh("span",{style:{color:B.faint},"data-gufi-src":"portal/index.tsx:159"},"\u2013"),__gh("input",{type:"date",className:"b-input",style:{padding:"7px 9px",fontSize:13,borderRadius:9},value:h,onChange:e=>setH(e.target.value),"data-gufi-src":"portal/index.tsx:160"})),__gh("button",{className:"p-btn p-btn-a",style:{width:"100%",marginTop:10},disabled:!d2||!h||d2>h,onClick:()=>elegir({desde:d2,hasta:sumarDias(h,1)}),"data-gufi-src":"portal/index.tsx:162"},"Ver estas fechas")))}function MenuCuenta({cuenta:cuenta2,salir,desdeGufi}){let[abierto,setAbierto]=(0,import_react43.useState)(!1);return __gh(Desplegable2,{abierto,setAbierto,derecha:!0,boton:__gh("button",{onClick:()=>setAbierto(!abierto),style:{display:"flex",alignItems:"center",gap:10,background:"transparent",border:"none",cursor:"pointer",padding:4},title:cuenta2.nombre,"data-gufi-src":"portal/index.tsx:174"},__gh("span",{className:"p-only-d",style:{fontSize:13.5,color:B.sub,maxWidth:220,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},"data-gufi-src":"portal/index.tsx:175"},cuenta2.nombre),__gh("span",{style:{width:32,height:32,borderRadius:999,background:B.grad,color:"#fff",fontSize:12,fontWeight:700,display:"flex",alignItems:"center",justifyContent:"center"},"data-gufi-src":"portal/index.tsx:176"},initials(cuenta2.nombre)))},__gh("div",{style:{padding:"14px 16px",borderBottom:`1px solid ${B.hair}`,minWidth:250},"data-gufi-src":"portal/index.tsx:179"},__gh("div",{style:{fontSize:14,fontWeight:600,color:B.ink},"data-gufi-src":"portal/index.tsx:180"},cuenta2.nombre),__gh("div",{style:{fontSize:12.5,color:B.muted,marginTop:2},"data-gufi-src":"portal/index.tsx:181"},cuenta2.email),cuenta2.maestro?__gh("div",{style:{fontSize:12,color:B.accent,marginTop:8,fontWeight:600},"data-gufi-src":"portal/index.tsx:182"},"Cuenta maestra \xB7 ve a todos los propietarios"):null,desdeGufi?__gh("div",{style:{fontSize:12,color:B.muted,marginTop:6},"data-gufi-src":"portal/index.tsx:183"},"Has entrado desde Gufi como ",desdeGufi):null),desdeGufi?null:__gh("div",{style:{padding:6},"data-gufi-src":"portal/index.tsx:187"},__gh("button",{className:"p-opt",onClick:()=>{setAbierto(!1),salir()},"data-gufi-src":"portal/index.tsx:188"},__gh(import_lucide_react42.LogOut,{size:15,style:{color:B.muted}})," Cerrar sesi\xF3n")))}var SECCIONES2=[{k:"resumen",t:"Resumen",icono:import_lucide_react42.LayoutGrid},{k:"reservas",t:"Reservas",icono:import_lucide_react42.BedDouble},{k:"calendario",t:"Calendario",icono:import_lucide_react42.CalendarDays},{k:"facturas",t:"Facturas",icono:import_lucide_react42.FileText,soloFactura:!0},{k:"huespedes",t:"Hu\xE9spedes",icono:import_lucide_react42.Users}],HOSTEL={k:"hostel",t:"Hostel",icono:import_lucide_react42.Building2},comercialDe=n=>({k:"comercial",t:n.venta&&n.alquiler?"Venta y alquiler":n.venta?"En venta":"En alquiler",icono:import_lucide_react42.Tag}),CUENTAS={k:"cuentas",t:"Cuentas",icono:import_lucide_react42.KeyRound},rutaDeHash=()=>{let seg=window.location.hash.replace(/^#\/?/,"").split("/").filter(Boolean);return(seg[0]==="reserva"||seg[0]==="factura")&&seg[1]?{tipo:seg[0],id:decodeURIComponent(seg[1]),mes:/^\d{4}-\d{2}$/.test(seg[2]||"")?seg[2]:""}:{tipo:"seccion",id:seg[0]||"",mes:""}},SECCION_DE={reserva:"reservas",factura:"facturas"};function Portal({api,token,inicio,salir,verComo,vista,desdeGufi,web}){fijarFuente(inicio.fuente);let turistico=inicio.propiedades.length>0,comercial=inicio.negocios.venta||inicio.negocios.alquiler,secciones=(turistico?SECCIONES2.filter(s=>!s.soloFactura||deFactura()):[]).concat(comercial?[comercialDe(inicio.negocios)]:[],inicio.hostel?[HOSTEL]:[],inicio.cuenta.maestro?[CUENTAS]:[]),[ruta,setRuta]=(0,import_react43.useState)(rutaDeHash),seccionInicial=()=>{let r=rutaDeHash(),k=r.tipo==="seccion"?r.id:SECCION_DE[r.tipo];return secciones.some(x=>x.k===k)?k:secciones[0].k},[seccion2,setSeccionEstado]=(0,import_react43.useState)(seccionInicial),setSeccion=(0,import_react43.useCallback)(k=>{setSeccionEstado(k),setRuta({tipo:"seccion",id:k,mes:""}),window.history.replaceState(null,"","#/"+k)},[]);(0,import_react43.useEffect)(()=>{let sync=()=>{let r=rutaDeHash();setRuta(r);let k=r.tipo==="seccion"?r.id:SECCION_DE[r.tipo];k&&secciones.some(x=>x.k===k)&&setSeccionEstado(k)};return window.addEventListener("hashchange",sync),()=>window.removeEventListener("hashchange",sync)},[secciones]);let irA=(0,import_react43.useCallback)((tipo,id,mes2)=>{window.location.hash=`#/${tipo}/${encodeURIComponent(id)}`+(mes2?`/${mes2}`:"")},[]),volver=(0,import_react43.useCallback)(()=>{let r=rutaDeHash();if(r.tipo==="seccion")return;let k=SECCION_DE[r.tipo];window.history.length>1?window.history.back():window.location.hash="#/"+k},[]),ultimoMes=inicio.facturado_hasta?sumarDias(inicio.facturado_hasta,-1).slice(0,7):new Date().toISOString().slice(0,7),primerAnio=(0,import_react43.useMemo)(()=>inicio.propiedades.reduce((y,p)=>p.primera_estancia?Math.min(y,Number(p.primera_estancia.slice(0,4))):y,Number(ultimoMes.slice(0,4))),[inicio,ultimoMes]),[periodo,setPeriodo]=(0,import_react43.useState)(()=>inicio.cuenta.maestro?periodoMes(ultimoMes):periodoAnio(ultimoMes.slice(0,4))),[titular2,setTitular]=(0,import_react43.useState)(""),[propiedad,setPropiedad]=(0,import_react43.useState)(""),[abiertoT,setAbiertoT]=(0,import_react43.useState)(!1),[abiertoP,setAbiertoP]=(0,import_react43.useState)(!1),titulares=inicio.titulares,nombreTitular=(0,import_react43.useMemo)(()=>Object.fromEntries(titulares.map(t2=>[t2.id,t2.nombre])),[titulares]),propsVisibles=(0,import_react43.useMemo)(()=>titular2?inicio.propiedades.filter(p=>p.titulares.some(t2=>String(t2.id)===String(titular2))):inicio.propiedades,[inicio,titular2]),propPorId=(0,import_react43.useMemo)(()=>Object.fromEntries(inicio.propiedades.map(p=>[p.id,p])),[inicio]);(0,import_react43.useEffect)(()=>{propiedad&&!propsVisibles.some(p=>String(p.id)===String(propiedad))&&setPropiedad("")},[propsVisibles,propiedad]);let filtros=(0,import_react43.useMemo)(()=>({titular:titular2||void 0,propiedad:propiedad||void 0}),[titular2,propiedad]),conFacturado=seccion2==="resumen"||seccion2==="reservas"||seccion2==="huespedes",facturado=useScript(api,"portal_facturado",{token,...filtros,desde:periodo.desde,hasta:periodo.hasta},conFacturado),opcionesTitular=(0,import_react43.useMemo)(()=>[{v:"",t:inicio.cuenta.maestro?"Todos los propietarios":"Todos mis titulares"}].concat(titulares.filter(t2=>!t2.empresa).map(t2=>({v:t2.id,t:t2.nombre,g:"Personas"}))).concat(titulares.filter(t2=>t2.empresa).map(t2=>({v:t2.id,t:t2.nombre,g:"Empresas"}))),[titulares,inicio]),opcionesPropiedad=(0,import_react43.useMemo)(()=>[{v:"",t:`Todas las propiedades (${propsVisibles.length})`}].concat(propsVisibles.map(p=>({v:p.id,t:p.nombre,s:p.unidades.length>1?`${p.unidades.length} unidades`:p.code?`#${p.code}`:""}))),[propsVisibles]),propsCalendario=(0,import_react43.useMemo)(()=>propiedad?propsVisibles.filter(p=>String(p.id)===String(propiedad)):propsVisibles,[propsVisibles,propiedad]),conFiltros=seccion2!=="hostel"&&seccion2!=="cuentas"&&seccion2!=="comercial",conPeriodo=conFiltros&&seccion2!=="calendario",abrirEstancia=(0,import_react43.useCallback)(e=>irA("reserva",e.id,String(e.entrada||"").slice(0,7)),[irA]);return(0,import_react43.useEffect)(()=>{if(ruta.tipo!=="reserva"||!ruta.mes)return;let primero=ruta.mes+"-01";primero>=periodo.desde&&primero__gh("button",{key:s.k,"data-on":seccion2===s.k?"1":"0",onClick:()=>setSeccion(s.k),"data-gufi-src":"portal/index.tsx:339"},s.t))),__gh("div",{style:{marginLeft:"auto"},"data-gufi-src":"portal/index.tsx:341"},__gh(MenuCuenta,{cuenta:inicio.cuenta,salir,desdeGufi})))),__gh("main",{className:"p-main","data-gufi-src":"portal/index.tsx:345"},conFiltros?__gh("div",{className:"p-filtros","data-gufi-src":"portal/index.tsx:347"},titulares.length>1?__gh(Desplegable2,{abierto:abiertoT,setAbierto:setAbiertoT,boton:__gh(Pildora,{etiqueta:inicio.cuenta.maestro?"Propietario":"Titular",valor:titular2?nombreTitular[titular2]:opcionesTitular[0].t,activa:abiertoT||!!titular2,onClick:()=>setAbiertoT(!abiertoT)})},__gh(ListaBuscable,{opciones:opcionesTitular,valor:titular2,placeholder:"Buscar propietario o empresa",onElegir:v=>{setTitular(v),setAbiertoT(!1)}})):null,propsVisibles.length>1||propiedad?__gh(Desplegable2,{abierto:abiertoP,setAbierto:setAbiertoP,boton:__gh(Pildora,{etiqueta:"Propiedad",valor:propiedad?propPorId[propiedad].nombre:`Todas (${propsVisibles.length})`,activa:abiertoP||!!propiedad,onClick:()=>setAbiertoP(!abiertoP)})},__gh(ListaBuscable,{opciones:opcionesPropiedad,valor:propiedad,placeholder:"Buscar propiedad",onElegir:v=>{setPropiedad(v),setAbiertoP(!1)}})):null,conPeriodo?__gh(FiltroPeriodo,{periodo,setPeriodo,ultimoMes,primerAnio}):null,inicio.facturado_hasta?__gh("span",{className:"p-note p-only-d",style:{marginLeft:"auto"},"data-gufi-src":"portal/index.tsx:361"},"Facturado por ",marca().nombre," hasta ",mesLabel(ultimoMes).toLowerCase()):null):null,!turistico&&!comercial?__gh("div",{className:"p-card","data-gufi-src":"portal/index.tsx:366"},__gh(Vacio2,{titulo:"Todav\xEDa no hay propiedades en tu cuenta",texto:`Cuando ${marca().nombre} asocie tus propiedades a este correo, aparecer\xE1n aqu\xED.`})):__gh("div",{className:"b-fade",key:ruta.tipo==="seccion"?seccion2:ruta.tipo+ruta.id,"data-gufi-src":"portal/index.tsx:368"},ruta.tipo==="reserva"?__gh(EstanciaPagina,{f:facturado,id:ruta.id,propPorId,periodo,api,token,onVolver:volver}):__gh(__gf,null,seccion2==="resumen"&&__gh(Resumen,{f:facturado,inicio,periodo,setPeriodo,setPropiedad,propPorId}),seccion2==="reservas"&&__gh(Reservas,{f:facturado,periodo,propPorId,abrirEstancia}),seccion2==="calendario"&&__gh(Calendario2,{api,token,filtros,propiedades:propsCalendario,ultimoMes,facturadoHasta:inicio.facturado_hasta,abrirEstancia}),seccion2==="facturas"&&__gh(Facturas,{api,token,inicio,filtros,titular:titular2,periodo,propPorId,nombreTitular,facturaAbierta:ruta.tipo==="factura"?ruta.id:null,abrirFactura:id=>irA("factura",id),volver}),seccion2==="huespedes"&&__gh(Huespedes,{f:facturado,periodo,propPorId,abrirEstancia}),seccion2==="hostel"&&__gh(AreaHostel,{api,token}),seccion2==="cuentas"&&__gh(Cuentas,{api,token,verComo}),seccion2==="comercial"&&__gh(Comercial,{api,token,maestro:inicio.cuenta.maestro})))),__gh("nav",{className:"p-tabbar","data-gufi-src":"portal/index.tsx:388"},secciones.map(s=>{let I=s.icono;return __gh("button",{key:s.k,"data-on":seccion2===s.k?"1":"0",onClick:()=>setSeccion(s.k),"data-gufi-src":"portal/index.tsx:389"},__gh(I,{size:20}),s.t)})))}function PortalPropietarios({gufi,web}){let desdeGufi=!!(gufi&&gufi.context&&gufi.context.user&&gufi.context.user.id&&typeof gufi.automation=="function"&&typeof gufi.hasPermission=="function"&&gufi.hasPermission("portal:maestra")),[token,setToken]=(0,import_react43.useState)(()=>desdeGufi?"":localStorage.getItem(TOKEN_KEY)||""),[inicio,setInicio]=(0,import_react43.useState)(null),[error,setError]=(0,import_react43.useState)(""),[entradaGufi,setEntradaGufi]=(0,import_react43.useState)(desdeGufi?"pendiente":"no"),[usuarioGufi,setUsuarioGufi]=(0,import_react43.useState)(""),[intentoGufi,setIntentoGufi]=(0,import_react43.useState)(0),modoGufi=(0,import_react43.useRef)(!1),[vista,setVista]=(0,import_react43.useState)(null),tokenVista=(0,import_react43.useRef)(""),[conMarca,setConMarca]=(0,import_react43.useState)(!1),[errorMarca,setErrorMarca]=(0,import_react43.useState)(""),salir=(0,import_react43.useCallback)(()=>{if(setInicio(null),setError(""),setVista(null),setToken(""),modoGufi.current){modoGufi.current=!1,setEntradaGufi("pendiente"),setIntentoGufi(n=>n+1);return}localStorage.removeItem(TOKEN_KEY)},[]),volver=(0,import_react43.useCallback)(()=>{tokenVista.current="",setVista(null)},[]),api=(0,import_react43.useCallback)(async(nombre,input)=>{try{return await gufi.publicAutomation(nombre).run(input||{})}catch(e){throw/SESSION_INVALID|AUTH_REQUIRED/.test(String(e&&e.message||e))&&(input&&tokenVista.current&&input.token===tokenVista.current?volver():salir()),e}},[gufi,salir,volver]),verComo=(0,import_react43.useCallback)(r=>{tokenVista.current=r.token,setVista({token:r.token,nombre:r.nombre||r.email,inicio:null,error:""}),api("portal_inicio",{token:r.token}).then(ini=>setVista(v=>v&&v.token===r.token?{...v,inicio:ini}:v)).catch(e=>setVista(v=>v&&v.token===r.token?{...v,error:String(e&&e.message||e)}:v))},[api]);(0,import_react43.useEffect)(()=>{if(!desdeGufi)return;let vivo=!0;return gufi.automation("portal_entrar_erp",{}).then(r=>{vivo&&(r&&r.maestra?(modoGufi.current=!0,setUsuarioGufi(r.usuario||""),setToken(r.token),setEntradaGufi("dentro")):(setToken(localStorage.getItem(TOKEN_KEY)||""),setEntradaGufi("no")))}).catch(e=>{vivo&&(setError(String(e&&e.message||e)),setEntradaGufi("no"))}),()=>{vivo=!1}},[intentoGufi]),(0,import_react43.useEffect)(()=>{if(!token)return;let vivo=!0;return setError(""),api("portal_inicio",{token}).then(r=>{vivo&&setInicio(r)}).catch(e=>{vivo&&setError(String(e&&e.message||e))}),()=>{vivo=!1}},[token,api]),(0,import_react43.useEffect)(()=>{let vivo=!0;return gufi.publicAutomation("portal_marca").run({}).then(m=>{vivo&&(fijarMarca(m),setConMarca(!0))}).catch(e=>{vivo&&setErrorMarca(String(e&&e.message||e))}),()=>{vivo=!1}},[]);let entrar=tk=>{localStorage.setItem(TOKEN_KEY,tk),setToken(tk)};return errorMarca?__gh("div",{className:"b-root p-shell",style:{display:"flex",alignItems:"center",justifyContent:"center",padding:24},"data-gufi-src":"portal/index.tsx:475"},__gh("style",{"data-gufi-src":"portal/index.tsx:476"},B_CSS),__gh("div",{className:"p-card",style:{maxWidth:420,padding:8},"data-gufi-src":"portal/index.tsx:477"},__gh(Vacio2,{titulo:"No se ha podido abrir el portal",texto:errorMarca}))):!conMarca||entradaGufi==="pendiente"?__gh("div",{className:"b-root p-shell",style:{display:"flex",alignItems:"center",justifyContent:"center"},"data-gufi-src":"portal/index.tsx:482"},__gh("style",{"data-gufi-src":"portal/index.tsx:483"},B_CSS),__gh(import_lucide_react42.Loader2,{className:"animate-spin",style:{color:B.accent}})):!token&&!error?__gh(Entrar,{api,onEntrar:entrar,web}):error?__gh("div",{className:"b-root p-shell",style:{display:"flex",alignItems:"center",justifyContent:"center",padding:24},"data-gufi-src":"portal/index.tsx:489"},__gh("style",{"data-gufi-src":"portal/index.tsx:490"},B_CSS),__gh("div",{className:"p-card",style:{maxWidth:420,padding:8},"data-gufi-src":"portal/index.tsx:491"},__gh(Vacio2,{titulo:"No hemos podido cargar tu \xE1rea",texto:error}),__gh("div",{style:{display:"flex",justifyContent:"center",gap:8,paddingBottom:18},"data-gufi-src":"portal/index.tsx:493"},__gh("button",{className:"p-btn",onClick:()=>window.location.reload(),"data-gufi-src":"portal/index.tsx:494"},"Reintentar"),__gh("button",{className:"p-btn",onClick:salir,"data-gufi-src":"portal/index.tsx:495"},"Cerrar sesi\xF3n")))):!inicio||vista&&!vista.inicio&&!vista.error?__gh("div",{className:"b-root p-shell",style:{display:"flex",alignItems:"center",justifyContent:"center"},"data-gufi-src":"portal/index.tsx:501"},__gh("style",{"data-gufi-src":"portal/index.tsx:502"},B_CSS),__gh(import_lucide_react42.Loader2,{className:"animate-spin",style:{color:B.accent}})):vista&&vista.error?__gh("div",{className:"b-root p-shell",style:{display:"flex",alignItems:"center",justifyContent:"center",padding:24},"data-gufi-src":"portal/index.tsx:507"},__gh("style",{"data-gufi-src":"portal/index.tsx:508"},B_CSS),__gh("div",{className:"p-card",style:{maxWidth:420,padding:8},"data-gufi-src":"portal/index.tsx:509"},__gh(Vacio2,{titulo:`No se ha podido abrir el portal de ${vista.nombre}`,texto:vista.error}),__gh("div",{style:{display:"flex",justifyContent:"center",paddingBottom:18},"data-gufi-src":"portal/index.tsx:511"},__gh("button",{className:"p-btn",onClick:volver,"data-gufi-src":"portal/index.tsx:511"},"Volver a la cuenta maestra")))):vista?__gh(Portal,{key:vista.token,api,token:vista.token,inicio:vista.inicio,salir:volver,vista:{nombre:vista.nombre,volver},web}):__gh(Portal,{key:token,api,token,inicio,salir,verComo,desdeGufi:entradaGufi==="dentro"?usuarioGufi||"tu usuario de Gufi":"",web})}var import_react45=require("react"),import_lucide_react44=require("lucide-react");var import_react44=require("react"),import_lucide_react43=require("lucide-react");function VisorFotos({fotos,titulo:titulo3,desde:desde2,onCerrar,pie}){let[i,setI]=(0,import_react44.useState)(desde2),cerrar=(0,import_react44.useRef)(null),toque=(0,import_react44.useRef)(null),tira=(0,import_react44.useRef)(null),n=fotos.length,ir=paso=>setI(x=>(x+paso+n)%n);return(0,import_react44.useEffect)(()=>{let antes=document.body.style.overflow;document.body.style.overflow="hidden",cerrar.current?.focus();let tecla=e=>{e.key==="Escape"?onCerrar():e.key==="ArrowRight"?ir(1):e.key==="ArrowLeft"&&ir(-1)};return window.addEventListener("keydown",tecla),()=>{document.body.style.overflow=antes,window.removeEventListener("keydown",tecla)}},[]),(0,import_react44.useEffect)(()=>{tira.current?.children[i]?.scrollIntoView({behavior:"smooth",block:"nearest",inline:"center"})},[i]),__gh("div",{role:"dialog","aria-modal":"true","aria-label":titulo3,className:"bq-visor",onTouchStart:e=>{toque.current=e.touches[0].clientX},onTouchEnd:e=>{if(toque.current===null)return;let dx=e.changedTouches[0].clientX-toque.current;toque.current=null,Math.abs(dx)>45&&ir(dx<0?1:-1)},style:{position:"fixed",inset:0,zIndex:1e3,background:"#0c0a09",color:"#fff",display:"flex",flexDirection:"column"},"data-gufi-src":"components/VisorFotos.tsx:62"},__gh("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:16,padding:"clamp(14px, 2.4vw, 24px) clamp(16px, 3vw, 32px)"},"data-gufi-src":"components/VisorFotos.tsx:86"},__gh("div",{style:{minWidth:0},"data-gufi-src":"components/VisorFotos.tsx:87"},__gh("div",{style:{fontSize:18,fontWeight:600,letterSpacing:"-0.01em"},"data-gufi-src":"components/VisorFotos.tsx:88"},titulo3),__gh("div",{style:{marginTop:3,display:"flex",flexWrap:"wrap",alignItems:"center",gap:"4px 14px",fontSize:14,color:"rgba(255,255,255,0.6)"},"data-gufi-src":"components/VisorFotos.tsx:89"},__gh("span",{style:{fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/VisorFotos.tsx:90"},t(`${i+1} de ${n}`,`${i+1} of ${n}`)),pie)),__gh("button",{ref:cerrar,type:"button",onClick:onCerrar,"aria-label":t("Cerrar","Close"),className:"bq-visor-boton",style:{...BOTON_REDONDO,flexShrink:0},"data-gufi-src":"components/VisorFotos.tsx:94"},__gh(import_lucide_react43.X,{style:{width:20,height:20}}))),__gh("div",{style:{position:"relative",flex:1,minHeight:0,display:"flex",alignItems:"center",justifyContent:"center",padding:"0 clamp(8px, 7vw, 96px)"},"data-gufi-src":"components/VisorFotos.tsx:99"},__gh("img",{key:fotos[i],src:fotos[i],alt:t(`${titulo3}, foto ${i+1} de ${n}`,`${titulo3}, photo ${i+1} of ${n}`),sizes:"(max-width: 1600px) 100vw, 1600px",className:"bq-visor-foto",style:{display:"block",maxWidth:"100%",maxHeight:"100%",objectFit:"contain",borderRadius:14},"data-gufi-src":"components/VisorFotos.tsx:100"}),n>1&&__gh("img",{src:fotos[(i+1)%n],alt:"","aria-hidden":"true",sizes:"(max-width: 1600px) 100vw, 1600px",style:{display:"none"},"data-gufi-src":"components/VisorFotos.tsx:109"}),n>1&&__gh(__gf,null,__gh("button",{type:"button",onClick:()=>ir(-1),"aria-label":t("Foto anterior","Previous photo"),className:"bq-visor-boton bq-visor-flecha",style:{...BOTON_REDONDO,position:"absolute",left:"clamp(12px, 2vw, 28px)",top:"50%",transform:"translateY(-50%)",width:52,height:52},"data-gufi-src":"components/VisorFotos.tsx:112"},__gh(import_lucide_react43.ChevronLeft,{style:{width:24,height:24}})),__gh("button",{type:"button",onClick:()=>ir(1),"aria-label":t("Foto siguiente","Next photo"),className:"bq-visor-boton bq-visor-flecha",style:{...BOTON_REDONDO,position:"absolute",right:"clamp(12px, 2vw, 28px)",top:"50%",transform:"translateY(-50%)",width:52,height:52},"data-gufi-src":"components/VisorFotos.tsx:115"},__gh(import_lucide_react43.ChevronRight,{style:{width:24,height:24}})))),n>1&&__gh("div",{ref:tira,className:"bq-visor-tira",style:{display:"flex",justifyContent:"safe center",gap:8,padding:"clamp(14px, 2.4vw, 22px) 16px calc(clamp(14px, 2.4vw, 22px) + env(safe-area-inset-bottom))",overflowX:"auto"},"data-gufi-src":"components/VisorFotos.tsx:123"},fotos.map((f,k)=>__gh("button",{key:f,type:"button",onClick:()=>setI(k),"aria-label":t(`Foto ${k+1}`,`Photo ${k+1}`),"aria-current":k===i,style:{flexShrink:0,width:72,height:54,padding:0,border:"none",borderRadius:10,overflow:"hidden",cursor:"pointer",background:"#222",opacity:k===i?1:.45,boxShadow:k===i?"0 0 0 2px #fff":"none",transition:"opacity 0.2s ease, box-shadow 0.2s ease"},"data-gufi-src":"components/VisorFotos.tsx:125"},__gh("img",{src:f,alt:"",sizes:"72px",loading:"lazy",style:{display:"block",width:"100%",height:"100%",objectFit:"cover"},"data-gufi-src":"components/VisorFotos.tsx:146"})))),__gh("style",{"data-gufi-src":"components/VisorFotos.tsx:152"},` .bq-visor { animation: bq-visor-entra 0.25s ease both; } @keyframes bq-visor-entra { from { opacity: 0; } } .bq-visor-foto { animation: bq-visor-foto 0.45s cubic-bezier(0.16, 1, 0.3, 1) both; } @keyframes bq-visor-foto { from { opacity: 0; transform: scale(0.985); } } .bq-visor-boton { transition: background 0.2s ease; } .bq-visor button:focus-visible { outline-color: #fff; } .bq-visor-boton:hover { background: rgba(255,255,255,0.22) !important; } .bq-visor-tira { scrollbar-width: none; } .bq-visor-tira::-webkit-scrollbar { display: none; } @media (max-width: 640px) { .bq-visor-flecha { display: none !important; } } @media (prefers-reduced-motion: reduce) { .bq-visor, .bq-visor-foto { animation: none; } } `))}var BOTON_REDONDO={width:44,height:44,borderRadius:"50%",border:"none",background:"rgba(255,255,255,0.12)",color:"#fff",display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",backdropFilter:"blur(10px)",WebkitBackdropFilter:"blur(10px)"};var PASE=[["PUNONROSTRO",2],["SAN-AGUSTIN-7",0],["MANUELA-MALASANA",0],["PADRE-CLARET",2],["CLARA-DEL-REY",2]];function foto(clave,n){let o=OBRAS.find(x=>x.clave===clave);if(o===void 0||o.fotos[n]===void 0)throw new Error(`Foto de obra desconocida en /reformas: ${clave} ${n}`);return o.fotos[n]}function enFilas(obras){let out=[],i=0,par=0;for(;i{let clave=sinAcentos(o.busca).replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),patron=new RegExp(`(^|[^a-z0-9])${clave}([^a-z0-9]|$)`);return pisos.filter(p=>patron.test(sinAcentos(`${p.direccion??""} ${p.titulo}`)))},gestionados=[...new Map(OBRAS.flatMap(pisosDe).map(p=>[p.id,p])).values()],fotos=OBRAS.reduce((n,o)=>n+o.fotos.length,0);return __gh("div",{"data-gufi-src":"sections/reformas.tsx:97"},__gh(BloqueCifras,{titulo:__gh(__gf,null,t("Reformas que se pueden ver.","Renovations you can see.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/reformas.tsx:101"},t("Con su calle y sus fotos.","Street by street, with photos."))),cifras:[{valor:String(OBRAS.length),texto:t("obras terminadas en Madrid","finished projects in Madrid")},{valor:String(fotos),texto:t("fotos de obra, calle por calle","project photos, street by street")},{valor:t("Cerrado","Fixed"),texto:t("el precio, antes de empezar","the price, before we start")}]}),__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"sections/reformas.tsx:112"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"sections/reformas.tsx:113"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/reformas.tsx:114"},t("C\xF3mo trabajamos","How we work")),__gh("h2",{style:{...TITULO,marginTop:18,fontSize:"clamp(32px, 5vw, 60px)"},"data-gufi-src":"sections/reformas.tsx:115"},t("Cuatro pasos.","Four steps.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/reformas.tsx:116"},t("Y un precio que no se mueve.","And a price that does not move.")))),__gh(Pasos,{pasos:PASOS2})),__gh("section",{id:"obras",style:{marginTop:AIRE,background:T.surface,scrollMarginTop:80},"data-gufi-src":"sections/reformas.tsx:123"},__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px`},"data-gufi-src":"sections/reformas.tsx:124"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"sections/reformas.tsx:125"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/reformas.tsx:126"},t("Las obras","The projects")),__gh("h2",{style:{...TITULO,marginTop:18,fontSize:"clamp(32px, 5vw, 60px)"},"data-gufi-src":"sections/reformas.tsx:127"},t("Calle por calle.","Street by street.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/reformas.tsx:128"},t("Toca una y ves todas sus fotos.","Tap one to see all its photos.")))),__gh("div",{style:{marginTop:"clamp(36px, 5vw, 56px)",display:"grid",gap:"clamp(12px, 1.4vw, 18px)"},"data-gufi-src":"sections/reformas.tsx:131"},enFilas(OBRAS).map((f,n)=>__gh("div",{key:n,className:`bq-rf-fila bq-rf-${f.tipo} bq-revela`,"data-gufi-src":"sections/reformas.tsx:133"},f.obras.map((o,k)=>{let grande=f.tipo==="una"||f.tipo==="izq"&&k===0||f.tipo==="der"&&k===1,suyos=pisosDe(o);return __gh("button",{key:o.clave,type:"button",onClick:()=>setAbierta(o),className:"bq-rf-obra","aria-label":t(`Ver las ${o.fotos.length} fotos de la obra en ${o.calle}`,`See the ${o.fotos.length} photos of the ${o.calle} project`),"data-gufi-src":"sections/reformas.tsx:138"},__gh("img",{src:o.fotos[0],alt:t(`Reforma terminada en ${o.calle}`,`Finished renovation on ${o.calle}`),loading:"lazy",sizes:grande?"(max-width: 760px) 100vw, 760px":"(max-width: 760px) 100vw, 380px","data-gufi-src":"sections/reformas.tsx:145"}),__gh("span",{className:"bq-rf-velo","data-gufi-src":"sections/reformas.tsx:151"}),__gh("span",{className:"bq-rf-pie","data-gufi-src":"sections/reformas.tsx:152"},__gh("span",{style:{display:"block",fontSize:grande?"clamp(22px, 2.4vw, 30px)":20,fontWeight:500,letterSpacing:"-0.02em"},"data-gufi-src":"sections/reformas.tsx:153"},o.calle),__gh("span",{style:{display:"flex",alignItems:"center",gap:6,marginTop:4,fontSize:14,opacity:.88},"data-gufi-src":"sections/reformas.tsx:154"},__gh(import_lucide_react44.Images,{style:{width:15,height:15}}),o.fotos.length," ",t("fotos","photos"),suyos.length>0&&__gh(__gf,null," \xB7 ",t("y tambi\xE9n la alquilamos","and we let it too")))))})))))),gestionados.length>0&&__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"sections/reformas.tsx:170"},__gh("div",{className:"bq-revela",style:{marginBottom:40},"data-gufi-src":"sections/reformas.tsx:171"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/reformas.tsx:172"},t("De la obra al alquiler","From renovation to rental")),__gh("h2",{style:{...TITULO,marginTop:18},"data-gufi-src":"sections/reformas.tsx:173"},t("Las reformamos.","We renovated them.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/reformas.tsx:174"},t("Y ahora las alquilamos nosotros.","And now we let them.")))),__gh("div",{className:"bq-carrusel",style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(258px, 1fr))",gap:20},"data-gufi-src":"sections/reformas.tsx:177"},gestionados.slice(0,8).map(p=>__gh(Tarjeta,{key:p.id,piso:p,href:url(`/${p.slug}`),lazy:!0})))),__gh("div",{style:{height:AIRE},"data-gufi-src":"sections/reformas.tsx:185"}),__gh(Contactanos,{gufi,origen:"reformas",inicial:"reformas"}),abierta!==null&&__gh(VisorFotos,{fotos:abierta.fotos,titulo:abierta.calle,desde:0,onCerrar:()=>setAbierta(null),pie:pisosDe(abierta).slice(0,2).map(p=>__gh("a",{key:p.id,href:url(`/${p.slug}`),style:{display:"inline-flex",alignItems:"center",gap:4,color:"#fff",textDecoration:"none",fontWeight:500},"data-gufi-src":"sections/reformas.tsx:197"},t("La alquilamos","We let it"),": ",titulo(p),__gh(import_lucide_react44.ArrowUpRight,{style:{width:14,height:14,flexShrink:0}})))}),__gh(WhatsApp,{texto:t("Hola, quiero reformar mi casa y me gustar\xEDa un presupuesto.","Hi, I would like to renovate my home and get a quote.")}),__gh("style",{"data-gufi-src":"sections/reformas.tsx:207"},` /* La rejilla de tama\xF1os alternos: las filas de dos reparten 2:1 o 1:2 y las de tres, a partes iguales; en el m\xF3vil, una debajo de otra. La foto se acerca al pasar y el velo se aclara. */ .bq-rf-fila { display: grid; gap: clamp(12px, 1.4vw, 18px); height: clamp(260px, 34vw, 480px); } .bq-rf-izq { grid-template-columns: 2fr 1fr; } .bq-rf-der { grid-template-columns: 1fr 2fr; } .bq-rf-tres { grid-template-columns: repeat(3, minmax(0, 1fr)); height: clamp(220px, 24vw, 340px); } .bq-rf-una { grid-template-columns: 1fr; } .bq-rf-obra { position: relative; display: block; min-width: 0; padding: 0; border: none; border-radius: 24px; overflow: hidden; cursor: zoom-in; background: ${T.surfaceAlt}; text-align: left; font-family: inherit; } .bq-rf-obra img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 1.1s cubic-bezier(0.16, 1, 0.3, 1); } .bq-rf-obra:hover img { transform: scale(1.05); } .bq-rf-velo { position: absolute; inset: 0; background: linear-gradient(180deg, rgba(14,13,8,0) 45%, rgba(14,13,8,0.6)); transition: opacity 0.3s ease; } .bq-rf-obra:hover .bq-rf-velo { opacity: 0.8; } .bq-rf-pie { position: absolute; left: 0; right: 0; bottom: 0; padding: clamp(16px, 2vw, 24px); color: #fff; text-shadow: 0 1px 10px rgba(0,0,0,0.3); } @media (max-width: 760px) { .bq-rf-fila, .bq-rf-tres { grid-template-columns: 1fr !important; height: auto; } .bq-rf-obra { aspect-ratio: 4 / 3; border-radius: 20px; } } @media (prefers-reduced-motion: reduce) { .bq-rf-obra img, .bq-rf-velo { transition: none; } .bq-rf-obra:hover img { transform: none; } } `))}function HeroReformas(){return __gh(HeroVideo,{medio:{fotos:PASE.map(([clave,n])=>foto(clave,n))},titulo:t("Tu casa, reformada. Con precio cerrado.","Your home, renovated. At a fixed price."),subtitulo:t("Cocinas, ba\xF1os y casas enteras en Madrid. Vamos a verla y te damos un precio que no se mueve.","Kitchens, bathrooms and whole homes in Madrid. We come to see it and give you a price that does not move."),botones:__gh(__gf,null,__gh(BotonHero,{href:"#obras",tono:"oscura",onClick:e=>bajarA(e,"obras")},t("Ver las obras","See the projects")),__gh(BotonHero,{href:"#contactanos",tono:"clara",onClick:e=>bajarA(e,"contactanos")},t("Pedir presupuesto","Get a quote")))})}var LEGALES={"/aviso-legal":[{t:"h3",x:"Aviso Legal e informaci\xF3n sobre las condiciones de uso del sitio web"},{t:"p",x:"En cumplimiento con el deber de informaci\xF3n estipulado en art\xEDculo 10 de la Ley 34/2002, de 11 de julio, de Servicios de la Sociedad de la Informaci\xF3n y del Comercio Electr\xF3nico, BATUECAS REAL STATE SL , en calidad de titular del sitio web WWW.VITALYABG.COM hace constar:"},{t:"h3",x:"1. Datos identificativos:"},{t:"li",x:"Denominaci\xF3n social: BATUECAS REAL STATE SL"},{t:"li",x:"CIF: B87950382"},{t:"li",x:"Domicilio social: CL/ DE LAS AGUAS, 4- LOCAL 3 28005 MADRID"},{t:"li",x:"Correo electr\xF3nico: administracion@batuecas.es"},{t:"li",x:"Datos de inscripci\xF3n en el Registro Mercantil:"},{t:"p",x:"La presente informaci\xF3n conforma y regula las condiciones de uso, las limitaciones de responsabilidad y las obligaciones que, los usuarios de la p\xE1gina Web que se publica bajo el nombre de dominio https://batuecas.es/ asumen y se comprometen a respetar. En cualquier caso, la aceptaci\xF3n del aviso legal no supone el establecimiento de relaci\xF3n contractual entre USUARIO y el RESPONSABLE del sitio Web, ni afectar\xE1 a aquella que tuvieran previamente. En lo referente al buen uso del sitio Web, toda la informaci\xF3n contenida, se estar\xE1 a los derechos, deberes y obligaciones que la legislaci\xF3n vigente establezca en cada momento, as\xED como las establecidas en el presente aviso legal."},{t:"h3",x:"2.Definiciones"},{t:"li",x:"\u201CP\xE1gina\u201D, dominio https://batuecas.es/, que se pone a disposici\xF3n de los Usuarios de Internet."},{t:"li",x:"\u201CUsuario\u201D, persona f\xEDsica o jur\xEDdica que utiliza o navega por la P\xE1gina."},{t:"li",x:"\u201CContenido\u201D, son las p\xE1ginas que conforman la totalidad del dominio https://batuecas.es/ , las cuales conforman la informaci\xF3n y los servicios que BATUECAS REAL STATE SL pone a disposici\xF3n de los Usuarios de Internet. En ellas se contienen los mensajes, textos, fotograf\xEDas, gr\xE1ficos, iconos, logos, tecnolog\xEDa, links, texturas, dibujos, archivos de sonido y/o imagen, grabaciones, software, aspecto, dise\xF1o gr\xE1fico y c\xF3digos fuente y, en general, cualquier clase de material contenido en la P\xE1gina."},{t:"li",x:"\u201CWeb\u201D, palabra t\xE9cnica que describe el sistema de acceso a la informaci\xF3n v\xEDa Internet, que se configura por medio de p\xE1ginas confeccionadas con lenguaje HTML o similar, y mecanismos de programaci\xF3n tales como java, javascript, PHP, u otros, etc. En estas p\xE1ginas dise\xF1adas y publicadas bajo un nombre de dominio Internet son el resultado de la informaci\xF3n que el titular pone a disposici\xF3n de los Usuarios de Internet."},{t:"li",x:"\u201CHiperenlace\u201D, t\xE9cnica por la cual un Usuario puede navegar por diferentes p\xE1ginas de la Web, o por Internet, con un simple click sobre el texto, icono, bot\xF3n o indicativo que contiene el enlace."},{t:"li",x:"\u201CCookies\u201D, medio t\xE9cnico para la \u201Ctrazabilidad\u201D y seguimiento de la navegaci\xF3n en los sitios Web. Son peque\xF1os ficheros de texto que se escriben en el ordenador del Usuario. Este m\xE9todo tiene implicaciones sobre la privacidad, por lo que BATUECAS REAL STATE SL avisar\xE1 oportuna y fehacientemente de su utilizaci\xF3n en el momento en que se implanten en la P\xE1gina."},{t:"h3",x:"3. Usuarios / Condiciones de uso"},{t:"p",x:"El acceso y/o uso de este sitio web de https://batuecas.es/ atribuye la condici\xF3n de USUARIO, que acepta, desde dicho acceso y/o uso, los presentes t\xE9rminos de uso, sin reservas de todas y cada una de las cl\xE1usulas y condiciones generales incluidas en el Aviso Legal."},{t:"p",x:"Si el Usuario no estuviera conforme con las cl\xE1usulas y condiciones de uso de este Aviso Legal, se abstendr\xE1 de utilizar la P\xE1gina."},{t:"h3",x:"4. Uso del sitio web"},{t:"h3",x:"https://batuecas.es/"},{t:"p",x:"proporciona el acceso a art\xEDculos, informaciones y datos (en adelante, \u201CLOS CONTENIDOS\u201D) propiedad de BATUECAS REAL STATE SL . El USUARIO asume la responsabilidad del uso de la web."},{t:"p",x:"Algunas p\xE1ginas del sitio Web (https://batuecas.es/) pueden permitir la participaci\xF3n mediante comentarios, pudiendo en tal caso cualquier usuario enviar textos a trav\xE9s del formulario establecido a tal efecto. Al enviar dichos textos, haciendo clic en el enlace correspondiente, El USUARIO se compromete y acepta, a hacer un uso adecuado de los contenidos que https://batuecas.es/ ofrece a trav\xE9s de su web, a no emplearlos para:"},{t:"li",x:"incurrir en actividades il\xEDcitas, ilegales o contrarias a la buena fe y al orden p\xFAblico."},{t:"li",x:"difundir contenidos o propaganda de car\xE1cter racista, xen\xF3fobo, pornogr\xE1fico-ilegal, de apolog\xEDa del terrorismo o atentatorio contra los derechos humanos."},{t:"li",x:"provocar da\xF1os en los sistemas f\xEDsicos y l\xF3gicos de (https://batuecas.es/), de sus proveedores o de terceras personas, introducir o difundir en la red virus inform\xE1ticos o cualesquiera otros sistemas f\xEDsicos o l\xF3gicos que sean susceptibles de provocar los da\xF1os anteriormente mencionados."},{t:"li",x:"intentar acceder y, en su caso, utilizar las cuentas de correo electr\xF3nico de otros usuarios y modificar o manipular sus mensajes."},{t:"li",x:"En definitiva, a respetar la legislaci\xF3n aplicable, la moral y buenas costumbres generalmente aceptadas, el orden p\xFAblico y las presentes condiciones generales de acceso y utilizaci\xF3n."},{t:"p",x:"A tal efecto, EL USUARIO se obliga y compromete a NO utilizar cualquiera de los Contenidos con fines o efectos il\xEDcitos, prohibidos en el Aviso Legal o por la legislaci\xF3n vigente, lesivos de los derechos e intereses de terceros, o que de cualquier forma puedan da\xF1ar, inutilizar, sobrecargar, deteriorar o impedir la normal utilizaci\xF3n de los Contenidos, los equipos inform\xE1ticos o los documentos, archivos y toda clase de contenidos almacenados en cualquier equipo inform\xE1tico propios o contratados por BATUECAS REAL STATE SL , de otros Usuarios o de cualquier usuario de Internet (hardware y software)."},{t:"p",x:"EL USUARIO se obliga y se compromete a no transmitir, difundir o poner a disposici\xF3n de terceros cualquier clase de material contenido en la P\xE1gina, tales como informaciones, textos, datos, contenidos, mensajes, gr\xE1ficos, dibujos, archivos de sonido y/o imagen, fotograf\xEDas, grabaciones, software, logotipos, marcas, iconos, tecnolog\xEDa, fotograf\xEDas, software, enlaces, dise\xF1o gr\xE1fico y c\xF3digos fuente, o cualquier otro material al que tuviera acceso en su condici\xF3n de Usuario de la P\xE1gina, sin que esta enumeraci\xF3n tenga car\xE1cter limitativo."},{t:"p",x:"Asimismo, de conformidad con todo ello, EL USUARIO no podr\xE1:"},{t:"li",x:"Reproducir, copiar, distribuir, poner a disposici\xF3n o de cualquier otra forma comunicar p\xFAblicamente, transformar o modificar los Contenidos, a menos que se cuente con la autorizaci\xF3n escrita y expl\xEDcita de BATUECAS REAL STATE SL , que es titular de los correspondientes derechos, o bien que ello resulte legalmente permitido."},{t:"li",x:"Suprimir, manipular o de cualquier forma alterar el \xABcopyright\xBB y dem\xE1s datos identificativos de la reserva de derechos de BATUECAS REAL STATE SLo de sus titulares, de las huellas y/o identificadores digitales, o de cualesquiera otros medios t\xE9cnicos establecidos para su reconocimiento."},{t:"li",x:"El Usuario deber\xE1 abstenerse de obtener e incluso de intentar obtener los Contenidos empleando para ello medios o procedimientos distintos de los que, seg\xFAn los casos, se hayan puesto a su disposici\xF3n a este efecto o se hayan indicado a este efecto en las p\xE1ginas Web donde se encuentren los Contenidos o, en general, de los que se empleen habitualmente en Internet a este efecto siempre que no entra\xF1en un riesgo de da\xF1o o inutilizaci\xF3n de la P\xE1gina, y/o de los Contenidos."},{t:"li",x:"Pol\xEDtica de privacidad. Protecci\xF3n de Datos"},{t:"h3",x:"BATUECAS REAL STATE SL"},{t:"p",x:"es consciente de la importancia de la protecci\xF3n de datos, as\xED como de la privacidad de EL USUARIO y por ello, ha implementado una pol\xEDtica de tratamiento de datos orientada a proveer la m\xE1xima seguridad en el uso y recogida de los mismos, garantizando el cumplimiento de la normativa vigente en la materia y configurando dicha pol\xEDtica como uno de los pilares b\xE1sicos en las l\xEDneas de actuaci\xF3n de la entidad. Por ello, BATUECAS REAL STATE SL , insiste en la lectura obligada de su Pol\xEDtica de Privacidad: https://batuecas.es/"},{t:"li",x:"Hiperenlaces"},{t:"p",x:"Como un servicio a nuestros visitantes, nuestro sitio web puede incluir hiperv\xEDnculos a otros sitios que no son operados o controlados por BATUECAS REAL STATE SL . Por ello, BATUECAS REAL STATE SL , no garantiza, ni se hace responsable de la licitud, fiabilidad, utilidad, veracidad y actualidad de los contenidos de tales sitios web o de sus pr\xE1cticas de privacidad. Por favor, antes de proporcionar su informaci\xF3n personal a estos sitios web ajenos a https://batuecas.es/ tenga en cuenta que sus pr\xE1cticas de privacidad pueden diferir de las nuestras."},{t:"p",x:"Asimismo, aquellas personas que se propongan establecer hiperenlaces entre su p\xE1gina Web y la nuestra (https://batuecas.es/) deber\xE1n observar y cumplir las condiciones siguientes:"},{t:"li",x:"No ser\xE1 necesaria autorizaci\xF3n previa cuando el Hiperenlace permita \xFAnicamente el acceso a la p\xE1gina de inicio, pero no podr\xE1 reproducirla de ninguna forma. Cualquier otra forma de Hiperenlace requerir\xE1 la autorizaci\xF3n expresa e inequ\xEDvoca por escrito por parte de BATUECAS REAL STATE SL,"},{t:"li",x:"No se crear\xE1n \u201Cmarcos\u201D (\u201Cframes\u201D) con las p\xE1ginas Web ni sobre las p\xE1ginas Web de BATUECAS REAL STATE SL."},{t:"li",x:"No se realizar\xE1n manifestaciones o indicaciones falsas, inexactas, u ofensivas sobre BATUECAS REAL STATE SLsus directivos, sus empleados o colaboradores, o de las personas que se relacionen en la P\xE1gina por cualquier motivo, o de los Usuarios de las P\xE1gina, o de los Contenidos suministrados."},{t:"li",x:"No se declarar\xE1 ni se dar\xE1 a entender que BATUECAS REAL STATE SL ha autorizado el Hiperenlace o que ha supervisado o asumido de cualquier forma los Contenidos ofrecidos o puestos a disposici\xF3n de la p\xE1gina Web en la que se establece el Hiperenlace."},{t:"li",x:"La p\xE1gina Web en la que se establezca el Hiperenlace solo podr\xE1 contener lo estrictamente necesario para identificar el destino del Hiperenlace."},{t:"li",x:"La p\xE1gina Web en la que se establezca el Hiperenlace no contendr\xE1 informaciones o contenidos il\xEDcitos, contrarios a la moral y a las buenas costumbres generalmente aceptadas y al orden p\xFAblico, as\xED como tampoco contendr\xE1 contenidos contrarios a cualesquiera derechos de terceros."},{t:"li",x:"Modificaci\xF3n del Aviso Legal"},{t:"p",x:"Con el fin de mejorar las prestaciones del sitio Web, BATUECAS REAL STATE SL se reserva la facultad de efectuar, en cualquier momento y sin necesidad de previo aviso, modificaciones y actualizaciones de la informaci\xF3n contenida en el sitio Web, de la configuraci\xF3n y dise\xF1o de \xE9ste y del presente aviso legal, as\xED como de cualesquiera otras condiciones particulares. Cuando dichas condiciones particulares afecten al USUARIO, ser\xE1 debidamente informado, pudiendo abstenerse de la aceptaci\xF3n y aplic\xE1ndose aquellas condiciones vigentes hasta el momento y hasta finalizar la relaci\xF3n contractual con el propietario del sitio Web. La aceptaci\xF3n del Aviso Legal no conlleva el establecimiento de ninguna relaci\xF3n comercial, salvo los derechos, deberes y obligaciones que deriven del buen uso del presente sitio Web conforme a la legislaci\xF3n vigente. Todas las actualizaciones y/o modificaciones se comunicar\xE1n cuando se acceda al sitio Web para que cualquier USUARIO pueda conocer el alcance de las mismas."},{t:"li",x:"Propiedad intelectual / industrial"},{t:"h3",x:"BATUECAS REAL STATE SL"},{t:"p",x:"es titular de todos los derechos de propiedad intelectual e industrial de su p\xE1gina web, as\xED como de los elementos contenidos en la misma (a t\xEDtulo enunciativo, im\xE1genes, sonido, audio, v\xEDdeo, software o textos; marcas o logotipos, combinaciones de colores, estructura y dise\xF1o, selecci\xF3n de materiales usados, programas de ordenador necesarios para su funcionamiento, acceso y uso, etc.), titularidad de BATUECAS REAL STATE SL o bien de sus licenciantes, estando todos los derechos reservados."},{t:"p",x:"Cualquier uso no autorizado previamente por BATUECAS REAL STATE SL , ser\xE1 considerado un incumplimiento grave de los derechos de propiedad intelectual o industrial del autor."},{t:"p",x:"El USUARIO se compromete a respetar los derechos de Propiedad Intelectual e Industrial titularidad de BATUECAS REAL STATE SL . Podr\xE1 visualizar los elementos de la web e incluso imprimirlos, copiarlos y almacenarlos en el disco duro de su ordenador o en cualquier otro soporte f\xEDsico siempre y cuando sea, \xFAnica y exclusivamente, para su uso personal y privado. El USUARIO deber\xE1 abstenerse de suprimir, alterar, eludir o manipular cualquier dispositivo de protecci\xF3n o sistema de seguridad que estuviera instalado en las p\xE1ginas de BATUECAS REAL STATE SL"},{t:"p",x:"Todas las marcas, nombres comerciales o signos distintivos de cualquier clase que aparecen en la P\xE1gina son propiedad de BATUECAS REAL STATE SL o, en su caso, de terceros que han autorizado su uso, sin que pueda entenderse que el uso o acceso al Portal y/o a los Contenidos atribuya al Usuario derecho alguno sobre las citadas marcas, nombres comerciales y/o signos distintivos, y sin que puedan entenderse cedidos al Usuario, ninguno de los derechos de explotaci\xF3n que existen o puedan existir sobre dichos Contenidos."},{t:"p",x:"De igual modo los Contenidos son propiedad intelectual de BATUECAS REAL STATE SL, o de terceros en su caso, por tanto, los derechos de Propiedad Intelectual son titularidad de BATUECAS REAL STATE SL o de terceros que han autorizado su uso, a quienes corresponde el ejercicio exclusivo de los derechos de explotaci\xF3n de los mismos en cualquier forma y, en especial, los derechos de reproducci\xF3n, distribuci\xF3n, comunicaci\xF3n p\xFAblica y transformaci\xF3n. Quedan expresamente prohibidas la reproducci\xF3n, la distribuci\xF3n y la comunicaci\xF3n p\xFAblica, incluida su modalidad de puesta a disposici\xF3n, de la totalidad o parte de los contenidos de esta p\xE1gina web, con fines comerciales, en cualquier soporte y por cualquier medio t\xE9cnico, sin la autorizaci\xF3n de BATUECAS REAL STATE SL"},{t:"p",x:"La utilizaci\xF3n no autorizada de la informaci\xF3n contenida en esta Web, as\xED como la lesi\xF3n de los derechos de Propiedad Intelectual o Industrial de BATUECAS REAL STATE SL o de terceros incluidos en la P\xE1gina que hayan cedido contenidos dar\xE1 lugar a las responsabilidades legalmente establecidas."},{t:"li",x:"Cookies"},{t:"p",x:"Las cookies son el medio t\xE9cnico para la \u201Ctrazabilidad\u201D y seguimiento de la navegaci\xF3n en los Sitios Web. Son peque\xF1os ficheros de texto que se escriben en el ordenador del Usuario. Este m\xE9todo tiene implicaciones sobre la privacidad, por lo que BATUECAS REAL STATE SL informa de que podr\xE1 utilizar cookies con la finalidad de elaborar estad\xEDsticas de utilizaci\xF3n del sitio web as\xED como para identificar el PC del Usuario permitiendo reconocerle en sus pr\xF3ximas visitas. En todo caso, el usuario puede configurar su navegador para no permitir el uso de cookies en sus visitas al web site."},{t:"h3",x:"BATUECAS REAL STATE SL"},{t:"p",x:"es consciente de la importancia de la protecci\xF3n de datos, as\xED como de la privacidad de EL USUARIO y por ello, insiste en la lectura de la Pol\xEDtica de Cookies de nuestra p\xE1gina web https://batuecas.es/"},{t:"li",x:"Disponibilidad de la p\xE1gina"},{t:"h3",x:"BATUECAS REAL STATE SL"},{t:"p",x:"no garantiza la inexistencia de interrupciones o errores en el acceso a la P\xE1gina, a sus Contenidos, ni que \xE9ste se encuentren actualizados, aunque desarrollar\xE1 sus mejores esfuerzos para, en su caso, evitarlos, subsanarlos o actualizarlos. Por consiguiente, BATUECAS REAL STATE SL no se responsabiliza de los da\xF1os o perjuicios de cualquier tipo producidos en EL USUARIO que traigan causa de fallos o desconexiones en las redes de telecomunicaciones que produzcan la suspensi\xF3n, cancelaci\xF3n o interrupci\xF3n del servicio del Portal durante la prestaci\xF3n del mismo o con car\xE1cter previo."},{t:"h3",x:"BATUECAS REAL STATE SL"},{t:"p",x:"excluye, con las excepciones contempladas en la legislaci\xF3n vigente, cualquier responsabilidad por los da\xF1os y perjuicios de toda naturaleza que puedan deberse a la falta de disponibilidad, continuidad o calidad del funcionamiento de la P\xE1gina y de los Contenidos, al no cumplimiento de la expectativa de utilidad que los usuarios hubieren podido atribuir a la P\xE1gina y a los Contenidos."},{t:"p",x:"La funci\xF3n de los Hiperenlaces que aparecen en esta Web es exclusivamente la de informar al usuario acerca de la existencia de otras Web que contienen informaci\xF3n sobre la materia. Dichos Hiperenlaces no constituyen sugerencia ni recomendaci\xF3n alguna."},{t:"h3",x:"BATUECAS REAL STATE SL"},{t:"p",x:"tampoco se hace responsable de los errores de seguridad que se puedan producir, ni de los da\xF1os que puedan causarse al sistema inform\xE1tico del usuario (hardware y software), o a los ficheros o documentos almacenados en el mismo, como consecuencia de:"},{t:"li",x:"La presencia de un virus en el ordenador del usuario que sea utilizado para la conexi\xF3n a los servicios y contenidos del sitio Web,"},{t:"li",x:"Un mal funcionamiento del navegador o el uso de versiones no actualizadas del mismo."},{t:"h3",x:"BATUECAS REAL STATE SL"},{t:"p",x:"no se hace responsable de los contenidos de dichas p\xE1ginas enlazadas, del funcionamiento o utilidad de los Hiperenlaces ni del resultado de dichos enlaces, ni garantiza la ausencia de virus u otros elementos en los mismos que puedan producir alteraciones en el sistema inform\xE1tico (hardware y software), los documentos o los ficheros del usuario, excluyendo cualquier responsabilidad por los da\xF1os de cualquier clase causados al usuario por este motivo."},{t:"p",x:"El acceso a la P\xE1gina no implica la obligaci\xF3n por parte de BATUECAS REAL STATE SL de controlar la ausencia de virus, gusanos o cualquier otro elemento inform\xE1tico da\xF1ino. Corresponde al Usuario, en todo caso, la disponibilidad de herramientas adecuadas para la detecci\xF3n y desinfecci\xF3n de programas inform\xE1ticos da\xF1inos, por lo tanto, BATUECAS REAL STATE SL no se hace responsable de los posibles errores de seguridad que se puedan producir durante la prestaci\xF3n del servicio de la P\xE1gina, ni de los posibles da\xF1os que puedan causarse al sistema inform\xE1tico del usuario o de terceros (hardware y software), los ficheros o documentos almacenados en el mismo, como consecuencia de la presencia de virus en el ordenador del usuario utilizado para la conexi\xF3n a los servicios y contenidos de la Web, de un mal funcionamiento del navegador o del uso de versiones no actualizadas del mismo."},{t:"li",x:"Calidad de la P\xE1gina"},{t:"p",x:"Dado el entorno din\xE1mico y cambiante de la informaci\xF3n y servicios que se suministran por medio de la P\xE1gina, BATUECAS REAL STATE SL su mejor esfuerzo, pero no garantiza la completa veracidad, exactitud, fiabilidad, utilidad y/o actualidad de los Contenidos."},{t:"p",x:"La informaci\xF3n contenida en las p\xE1ginas que componen este Portal s\xF3lo tiene car\xE1cter informativo, consultivo, divulgativo y publicitario. En ning\xFAn caso ofrecen ni tienen car\xE1cter de compromiso vinculante o contractual."},{t:"h3",x:"BATUECAS REAL STATE SL"},{t:"p",x:"excluye toda responsabilidad por las decisiones que EL USUARIO pueda tomar basado en esta informaci\xF3n, as\xED como por los posibles errores tipogr\xE1ficos que puedan contener los documentos y gr\xE1ficos de la P\xE1gina. La informaci\xF3n est\xE1 sometida a posibles cambios peri\xF3dicos sin previo aviso de su contenido por ampliaci\xF3n, mejora, correcci\xF3n o actualizaci\xF3n de los Contenidos."},{t:"li",x:"Disponibilidad de los Contenidos"},{t:"p",x:"La prestaci\xF3n del servicio de la P\xE1gina y de los Contenidos tiene, en principio, duraci\xF3n indefinida. BATUECAS REAL STATE SL , no obstante, queda autorizada para dar por terminada o suspender la prestaci\xF3n del servicio de la P\xE1gina y/o de cualquiera de los Contenidos en cualquier momento. Cuando ello sea razonablemente posible, BATUECAS REAL STATE SL advertir\xE1 previamente la terminaci\xF3n o suspensi\xF3n de la P\xE1gina."},{t:"li",x:"Jurisdicci\xF3n"},{t:"p",x:"Para cuantas cuestiones se susciten sobre la interpretaci\xF3n, aplicaci\xF3n y cumplimiento de este Aviso Legal, as\xED como de las reclamaciones que puedan derivarse de su uso, todas las partes intervinientes se someten a la legislaci\xF3n espa\xF1ola vigente para determinar la jurisdicci\xF3n competente en cada caso espec\xEDfico."},{t:"li",x:"Legislaci\xF3n aplicable"},{t:"p",x:"Las presentes condiciones se rigen por la legislaci\xF3n espa\xF1ola."},{t:"p",x:"Reservados todos los derechos de autor por las leyes y tratados internacionales de propiedad intelectual. Queda expresamente prohibida su copia, reproducci\xF3n o difusi\xF3n, total o parcial, por cualquier medio."}],"/politica-de-privacidad":[{t:"p",x:"De conformidad con lo establecido en la legislaci\xF3n vigente sobre protecci\xF3n de datos, el Reglamento (UE) 2016/679, del Parlamento Europeo y del Consejo, de 27 de abril de 2016, relativo a la protecci\xF3n de las personas f\xEDsicas en lo que respecto al tratamiento de datos personales y a la libre circulaci\xF3n de estos datos (en adelante, RGPD), as\xED como en la Ley Org\xE1nica 3/2018, de 5 de diciembre, de Protecci\xF3n de Datos y garant\xEDa de los derechos digitales (en adelante, LOPD-GDD), se informa al usuario de conformidad con lo establecido en los art\xEDculos 13 del RGPD y 11 de la LOPD-GDD."},{t:"h3",x:"\xBFQui\xE9n es el responsable de tratamiento de sus datos?"},{t:"li",x:"Raz\xF3n social: BATUECAS REAL STATE SL"},{t:"li",x:"CIF: B87950382"},{t:"li",x:"Domicilio: CL/ DE LAS AGUAS, 4- LOCAL 3 28005 MADRID"},{t:"li",x:"Correo electr\xF3nico: administracion@batuecas.es"},{t:"li",x:"Datos de inscripci\xF3n en el Registro Mercantil:"},{t:"h3",x:"2. FINALIDAD"},{t:"h3",x:"\xBFCon que finalidad trataremos sus datos personales?"},{t:"h3",x:"BATUECAS REAL STATE SL"},{t:"p",x:"trata su informaci\xF3n para:"},{t:"li",x:"Mantenimiento de la relaci\xF3n mercantil y prestaci\xF3n del servicio contratado."},{t:"li",x:"Realizaci\xF3n de un presupuesto ajustado a sus necesidades."},{t:"li",x:"Gestionar comunicaciones por correo electr\xF3nico con interesados."},{t:"li",x:"Llevar a cabo los procesos de selecci\xF3n de la sociedad."},{t:"li",x:"Gesti\xF3n de los empleados y recursos humanos de la sociedad."},{t:"li",x:"Env\xEDo de informaci\xF3n comercial vinculadas con nuestro sector:"},{t:"li",x:"Controlar la seguridad de las instalaciones (videovigilancia)."},{t:"li",x:"Gestionar las actividades formativas"},{t:"h3",x:"\xBFDurante cu\xE1nto tiempo tendremos sus datos?"},{t:"p",x:"Los datos personales que nos proporciones ser\xE1n conservados mientras se mantenga la relaci\xF3n mercantil vigente. No obstante para tener la m\xE1xima transparencia con usted le indicamos que los c\xF3mputos generales con los que trabajamos son:"},{t:"li",x:"Datos gen\xE9ricos de identificaci\xF3n (correo electr\xF3nico, nombre, apellidos, tel\xE9fono, etc.): mientras dure la relaci\xF3n mercantil o hasta que se revoque el consentimiento. En cualquier caso, se eliminar\xE1n cuando no vayan a utilizarse para el fin con el que fueron recabados."},{t:"li",x:"Contable, fiscal y laboral: seis (6) a\xF1os."},{t:"li",x:"Laboral: diez (10) a\xF1os."},{t:"li",x:"Procesos de selecci\xF3n: dos (2) a\xF1os desde la entrega del curriculum"},{t:"li",x:"Videovigilancia: treinta (30) d\xEDas, salvo grabaci\xF3n de una infracci\xF3n y/o delito."},{t:"li",x:"Asimismo, dado el env\xEDo de informaci\xF3n comercial, aunque se ponga fin a la relaci\xF3n entre las partes, BATUECAS REAL STATE SL seguir\xE1 conservando su informaci\xF3n para el env\xEDo de newsletters vinculadas con nuestros productos y servicios[1]. Siempre podr\xE1 ejercitar los derechos que le reconoce la normativa vigente poni\xE9ndose en contacto a trav\xE9s de la v\xEDa que le sea m\xE1s c\xF3moda."},{t:"p",x:"Pese a la existencia de estos plazos generales, le informamos que de forma peri\xF3dica revisaremos nuestros sistemas para proceder a eliminar aquellos datos que no sean legalmente necesarios."},{t:"p",x:"3. LEGITIMACI\xD3N"},{t:"h3",x:"\xBFCu\xE1l es la legitimaci\xF3n para el tratamiento de sus datos?"},{t:"p",x:"Seg\xFAn las finalidades de la recogida de nuestros datos, el tratamiento de sus datos es necesario:"},{t:"li",x:"Gestionar la relaci\xF3n mercantil que ha suscrito y contratado con nosotros. Ejecuci\xF3n de un contrato (habilitado por el art\xEDculo 6.1.b RGPD)"},{t:"li",x:"Consentimiento del interesado (habitado por el art\xEDculo 6.1.a RGPD)"},{t:"li",x:"Realizaci\xF3n de un presupuesto ajustado a sus necesidades. Ejecuci\xF3n de un contrato y/o relaci\xF3n precontractual (habilitado por el art\xEDculo 6.1.b RGPD)"},{t:"li",x:"Gestionar comunicaciones por correo electr\xF3nico con interesados. Consentimiento del interesado (habitado por el art\xEDculo 6.1.a RGPD)"},{t:"li",x:"Inter\xE9s leg\xEDtimo (habilitado por el art\xEDculo 6.1.f RGPD)"},{t:"li",x:"Llevar a cabo los procesos de selecci\xF3n de la sociedad. Consentimiento del interesado (habitado por el art\xEDculo 6.1.a RGPD)"},{t:"li",x:"Gesti\xF3n de los empleados y recursos humanos internos de la sociedad Ejecuci\xF3n contractual (habilitado por el art\xEDculo 6.1.b RGPD)"},{t:"li",x:"Env\xEDo de comunicaciones comerciales Consentimiento del interesado (habilitado por el art\xEDculo 6.1. RGPD)"},{t:"li",x:"Consentimiento del interesado (habilitado por el art\xEDculo 20 LSSICE)"},{t:"li",x:"Inter\xE9s leg\xEDtimo (habilitado por el art\xEDculo 6.1.f RGPD)"},{t:"li",x:"Controlar la seguridad de las instalaciones (videovigilancia) Inter\xE9s leg\xEDtimo (habilitado por el art\xEDculo 6.1.f RGPD)"},{t:"li",x:"Gestionar las actividades formativas"},{t:"li",x:"Ejecuci\xF3n de un contrato (habilitado por el art\xEDculo 6.1.b RGPD)"},{t:"li",x:"Consentimiento del interesado (habitado por el art\xEDculo 6.1.a RGPD)"},{t:"p",x:"Asimismo, todos los datos recogidos son necesarios para la prestaci\xF3n del servicio. No obstante, aquellos datos que est\xE9n marcados con un asterisco (*) ser\xE1n obligatorios. En el caso de que los datos obligatorios no fueran facilitados BATUECAS REAL STATE SL no podr\xE1 prestarle el servicio contratado."},{t:"p",x:"4. DERECHOS QUE LE ASISTEN A LAS PERSONAS INTERESADAS"},{t:"h3",x:"\xBFQu\xE9 derechos tengo en materia de protecci\xF3n de datos?"},{t:"p",x:"Conforme a lo establecido en los art\xEDculos 13 RGPD y 11.2.c) LOPDGDD, puede ejercitar cualquiera de los siguientes derechos comunic\xE1ndonoslo a la direcci\xF3n postal CL/ DE LAS AGUAS, 4- LOCAL 3 28005 MADRID o a la direcci\xF3n electr\xF3nica administracion@batuecas.es En todo caso, seg\xFAn la normativa vigente tiene reconocidos los siguientes derechos de acuerdo a lo contenido en los art\xEDculo 15 a 22 RGPD y 12 a 18 LOPDGDD:"},{t:"li",x:"Derecho a solicitar el acceso a los datos personales relativos al interesado."},{t:"li",x:"Derecho a solicitar su rectificaci\xF3n o supresi\xF3n."},{t:"li",x:"Derecho a solicitar la limitaci\xF3n del tratamiento."},{t:"li",x:"Derecho a oponerse al tratamiento."},{t:"li",x:"Derecho a la portabilidad."},{t:"p",x:"Puede solicitar al Responsable los formularios para ejercer sus derechos, a trav\xE9s de la direcci\xF3n de correo electr\xF3nico indicado en los datos del responsable. Adicionalmente, puede presentar una reclamaci\xF3n ante la Agencia Espa\xF1ola de Protecci\xF3n de Datos (AEPD). M\xE1s informaci\xF3n en el Apartado VII del presente documento."},{t:"h3",x:"5. DESTINATARIOS"},{t:"h3",x:"\xBFA qu\xE9 destinatarios se comunicar\xE1n sus datos?"},{t:"p",x:"Siempre se informar\xE1 y, cuando proceda, se solicitar\xE1 su consentimiento expreso para ceder sus datos personales o realizar transferencias internacionales de acuerdo a la normativa vigente (arts. 13.1.e) y 44 RGPD, as\xED como el art. 11.1 y 40 LOPDGDD 3/2018)."},{t:"p",x:"6. PROCEDENCIA DE SUS DATOS"},{t:"h3",x:"\xBFC\xF3mo hemos obtenido sus datos?"},{t:"p",x:"Los datos de car\xE1cter personal que utiliza BATUECAS REAL STATE SL proceden del propio interesado, dando as\xED cumplimiento a lo establecido en los art\xEDculos 13 RGPD y 11 LOPDGDD ya mencionados, o de empresas del grupo o colaboradoras, sobre las que puede obtener m\xE1s informaci\xF3n escribiendo a la direcci\xF3n de correo electr\xF3nico administracion@batuecas.es o en la oficina del Responsable en la direcci\xF3n postal indicada en este documento."},{t:"h3",x:"\xBFQu\xE9 categor\xEDas de datos manejamos?"},{t:"li",x:"Las categor\xEDas de datos de car\xE1cter personal que se tratan:"},{t:"li",x:"Datos de identificaci\xF3n"},{t:"li",x:"Nombre"},{t:"li",x:"Apellidos"},{t:"li",x:"DNI / NIE / Pasaporte o documento equivalente"},{t:"li",x:"Direcciones postales"},{t:"li",x:"Direcciones electr\xF3nicas"},{t:"li",x:"Sexo"},{t:"li",x:"Fecha de nacimiento"},{t:"li",x:"Lugar de nacimiento"},{t:"li",x:"Tel\xE9fono de contacto (m\xF3vil / fijo)"},{t:"li",x:"Informaci\xF3n comercial"},{t:"li",x:"Datos econ\xF3micos"},{t:"li",x:"N\xFAmero de cuenta bancaria"},{t:"li",x:"N\xFAmero de tarjeta de cr\xE9dito"},{t:"li",x:"Curriculum vitae"},{t:"li",x:"Datos acad\xE9micos"},{t:"li",x:"Titulaciones"},{t:"li",x:"Aficiones"},{t:"li",x:"Pertenencia a asociaciones o clubes"},{t:"li",x:"Videovigilancia"},{t:"li",x:"Imagen"},{t:"p",x:"El tratamiento de datos sensibles se har\xE1 conforme a lo establecido en los art\xEDculos 9 RGPD y 9 LOPDGDD, informando en todo caso al interesado sobre qu\xE9 datos se utilizar\xE1n por el responsable."},{t:"h3",x:"AUTORIDAD DE CONTROL"},{t:"h3",x:"BATUECAS REAL STATE SL"},{t:"p",x:"ponemos el m\xE1ximo empe\xF1o para cumplir con la normativa de protecci\xF3n de datos dado que es el activo m\xE1s valioso para nosotros. No obstante, le informamos que en caso de que usted entienda que sus derechos se han visto menoscabados, puede presentar una reclamaci\xF3n ante la Agencia Espa\xF1ola de Protecci\xF3n de Datos (AEPD), sita en C/ Jorge Juan, 6. 28001 \u2013 Madrid. M\xE1s informaci\xF3n sobre la AEPD. http://www.agpd.es/ ."}],"/accesibilidad":[{t:"h3",x:"Compromiso con la accesibilidad"},{t:"p",x:"Inversiones Jonankara SL se compromete a hacer accesible su sitio web de conformidad con el Real Decreto 1112/2018, de 7 de septiembre, sobre la accesibilidad de los sitios web y aplicaciones para dispositivos m\xF3viles del sector p\xFAblico."},{t:"p",x:"Esta declaraci\xF3n de accesibilidad se aplica al sitio web https://batuecas.es/."},{t:"h3",x:"Situaci\xF3n de conformidad"},{t:"p",x:"Este sitio web es parcialmente conforme con el RD 1112/2018 debido a las excepciones que se indican a continuaci\xF3n."},{t:"h3",x:"Contenido no accesible"},{t:"p",x:"Falta de conformidad con el RD 1112/2018:"},{t:"li",x:"Mensajes de error poco descriptivos o no agrupados en formularios, y falta de sugerencias para corregir errores ([UNE-EN 301549:2022, 9.3.3.1 y 9.3.3.3])."},{t:"li",x:"Posibles fallos de edici\xF3n en algunas p\xE1ginas espec\xEDficas."},{t:"li",x:"Carga desproporcionada: No aplica."},{t:"li",x:"Contenido fuera del \xE1mbito legal: No aplica."},{t:"h3",x:"Preparaci\xF3n de esta declaraci\xF3n"},{t:"li",x:"Fecha de elaboraci\xF3n: 04 de febrero de 2025."},{t:"li",x:"M\xE9todo: Autoevaluaci\xF3n realizada por el propio equipo de desarrollo."},{t:"li",x:"\xDAltima revisi\xF3n: 04 de febrero de 2025."},{t:"h3",x:"Contacto para consultas y quejas"},{t:"p",x:"Para comunicar problemas de accesibilidad, contactar a trav\xE9s del correo electr\xF3nico administracion@batuecas.es o llamar al tel\xE9fono 635 97 27 69 para:"},{t:"li",x:"Informar de incumplimientos de accesibilidad."},{t:"li",x:"Plantear dificultades de acceso o sugerencias de mejora."},{t:"li",x:"Presentar quejas sobre el cumplimiento del RD 1112/2018 o solicitudes de informaci\xF3n accesible para contenidos exentos por carga desproporcionada."},{t:"h3",x:"Procedimiento de reclamaci\xF3n"},{t:"p",x:"Existe un procedimiento para resolver desacuerdos sobre respuestas a solicitudes relacionadas con la accesibilidad."},{t:"h3",x:"Requisitos t\xE9cnicos"},{t:"p",x:"Este sitio est\xE1 optimizado para navegadores modernos como Google Chrome, Firefox, Safari, Opera y versiones superiores a Internet Explorer 8.0. Se recomienda una resoluci\xF3n m\xEDnima de 1280\xD71024."},{t:"p",x:"El dise\xF1o es responsive y est\xE1 optimizado para dispositivos m\xF3viles y tablets usando las versiones m\xE1s recientes de navegadores."}],"/terminos-y-condiciones":[{t:"h3",x:"\xDAltima actualizaci\xF3n: 04 de marzo de 2025"},{t:"h3",x:"Introducci\xF3n"},{t:"p",x:"Estos T\xE9rminos y Condiciones se aplican al sitio web batuecas.es y a las transacciones relacionadas con nuestros productos y servicios. Puede estar sujeto a contratos adicionales relacionados con su relaci\xF3n con nosotros o con cualquier producto o servicio que reciba. En caso de conflicto, prevalecer\xE1n las disposiciones de los contratos adicionales."},{t:"h3",x:"Vinculaci\xF3n"},{t:"p",x:"Al acceder, registrarse o utilizar este sitio, usted acepta estos T\xE9rminos. En algunos casos, se puede requerir su aceptaci\xF3n expl\xEDcita."},{t:"h3",x:"Comunicaci\xF3n Electr\xF3nica"},{t:"p",x:"Al comunicarse electr\xF3nicamente, acepta que nuestras comunicaciones cumplen con los requisitos legales de ser por escrito."},{t:"h3",x:"Propiedad Intelectual"},{t:"p",x:"Los derechos de propiedad intelectual del sitio pertenecen a Inversiones Jonankara SL, CIF: B09718073. Queda prohibida la reproducci\xF3n, modificaci\xF3n o distribuci\xF3n del contenido sin autorizaci\xF3n escrita."},{t:"h3",x:"Propiedad de Terceros"},{t:"p",x:"No asumimos responsabilidad por el contenido de enlaces externos ni por p\xE9rdidas relacionadas con su uso."},{t:"h3",x:"Uso Responsable"},{t:"p",x:"El usuario se compromete a no realizar actividades ilegales ni da\xF1ar la funcionalidad del sitio."},{t:"h3",x:"Env\xEDo de Ideas"},{t:"p",x:"No aceptamos ideas sin un acuerdo firmado. Al enviarlas sin acuerdo, concede una licencia mundial no exclusiva y libre de regal\xEDas para su uso."},{t:"h3",x:"Terminaci\xF3n de Uso"},{t:"p",x:"Nos reservamos el derecho de restringir el acceso al sitio sin previo aviso."},{t:"h3",x:"Garant\xEDas y Responsabilidad"},{t:"p",x:"El sitio se proporciona \xABtal cual\xBB, sin garant\xEDas impl\xEDcitas. No asumimos responsabilidad por da\xF1os derivados del uso."},{t:"h3",x:"Privacidad"},{t:"p",x:"Consulte nuestras Pol\xEDticas de Privacidad y Cookies para m\xE1s detalles."},{t:"h3",x:"Accesibilidad"},{t:"p",x:"Nos esforzamos por mejorar la accesibilidad. Cont\xE1ctenos si encuentra barreras."},{t:"h3",x:"Restricciones a la Exportaci\xF3n"},{t:"p",x:"El uso debe cumplir con las leyes de exportaci\xF3n espa\xF1olas."},{t:"h3",x:"Cesi\xF3n"},{t:"p",x:"No puede transferir sus derechos sin nuestro consentimiento."},{t:"h3",x:"Incumplimiento"},{t:"p",x:"Podemos tomar medidas, incluyendo restricciones de acceso y acciones legales."},{t:"h3",x:"Indemnizaci\xF3n"},{t:"p",x:"Nos indemnizar\xE1 por da\xF1os relacionados con violaciones de estos T\xE9rminos."},{t:"h3",x:"Renuncia"},{t:"p",x:"La no aplicaci\xF3n de una disposici\xF3n no constituye renuncia a nuestros derechos."},{t:"h3",x:"Idioma"},{t:"p",x:"Estos t\xE9rminos se interpretar\xE1n en espa\xF1ol."},{t:"h3",x:"Acuerdo Completo"},{t:"p",x:"Estos T\xE9rminos y las pol\xEDticas asociadas constituyen el acuerdo completo."},{t:"h3",x:"Actualizaci\xF3n"},{t:"p",x:"Podemos modificar estos T\xE9rminos. Consulte la fecha de la \xFAltima actualizaci\xF3n."},{t:"h3",x:"Jurisdicci\xF3n"},{t:"p",x:"Se regir\xE1n por las leyes espa\xF1olas, y las disputas se someter\xE1n a sus tribunales."},{t:"h3",x:"Informaci\xF3n de Contacto"},{t:"p",x:"Nombre: Inversiones Jonankara SLCIF: B09718073Direcci\xF3n: CL/ DE LAS AGUAS, 4- LOCAL 3, 28005 MADRIDCorreo electr\xF3nico: administracion@batuecas.esTel\xE9fono: 635 97 27 69Sitio web: batuecas.es"},{t:"h3",x:"Descarga"},{t:"p",x:"Puede descargar estos T\xE9rminos y Condiciones en formato PDF."}],"/cookies":[{t:"p",x:"Esta web usa cookies de Google s\xF3lo si las aceptas en el aviso que sale al entrar. Si las rechazas, o no contestas, no se carga nada de Google y la web funciona igual."},{t:"h3",x:"Qu\xE9 cookies y para qu\xE9"},{t:"li",x:"Google Analytics (_ga y _ga_SB7SR8FM6W): cuenta qu\xE9 p\xE1ginas se visitan, desde d\xF3nde se llega y cu\xE1nto tiempo se queda la gente. Duran hasta dos a\xF1os."},{t:"li",x:"Google Ads (_gcl_au y parecidas): dice si una visita lleg\xF3 desde un anuncio nuestro, para saber qu\xE9 anuncios funcionan. Duran hasta 90 d\xEDas."},{t:"p",x:"Las pone Google Ireland Limited, que trata esos datos seg\xFAn su pol\xEDtica de privacidad (policies.google.com/privacy) y puede hacerlo fuera de la Uni\xF3n Europea con las garant\xEDas que exige el Reglamento General de Protecci\xF3n de Datos."},{t:"h3",x:"Lo que se mide sin cookies"},{t:"p",x:"Se cuenta de forma agregada y an\xF3nima qu\xE9 p\xE1ginas se ven y en qu\xE9 zona de la pantalla se pulsa, para saber qu\xE9 parte de la web sirve y cu\xE1l no. No se guarda ning\xFAn identificador, ni la direcci\xF3n IP, ni el orden en que alguien navega, ni nada en tu dispositivo. Si rechazas las cookies, tampoco se mide esto."},{t:"p",x:"Y si tu navegador manda la se\xF1al Global Privacy Control o Do Not Track, no se mide nada en absoluto, aceptes o no."},{t:"h3",x:"Tu decisi\xF3n"},{t:"p",x:"Se guarda en este navegador para no preguntarte en cada p\xE1gina. Puedes cambiarla cuando quieras con el bot\xF3n de abajo, o borrar las cookies desde los ajustes de tu navegador."},{t:"h3",x:"Los formularios"},{t:"p",x:"Lo que escribes en un formulario de esta web (tu nombre, tu correo, tu tel\xE9fono y lo que nos cuentes) se guarda para poder contestarte, y para nada m\xE1s. C\xF3mo se trata ese dato y qu\xE9 derechos tienes est\xE1 en la Pol\xEDtica de privacidad."}]};function Cabecera3({path,ancho,antetitulo,apunte}){let{h1,texto}=textoDe(path);return __gh("div",{style:{maxWidth:ancho??ANCHO,margin:"0 auto",padding:"clamp(44px, 6vw, 76px) 20px clamp(22px, 3vw, 34px)"},"data-gufi-src":"components/Cabecera.tsx:38"},antetitulo!==void 0&&__gh("span",{style:{...ANTETITULO,marginBottom:16},"data-gufi-src":"components/Cabecera.tsx:54"},antetitulo,apunte!==void 0&&__gh("span",{style:{color:T.muted},"data-gufi-src":"components/Cabecera.tsx:57"},__gh("span",{style:{margin:"0 8px",opacity:.6},"data-gufi-src":"components/Cabecera.tsx:58"},"\xB7"),apunte)),__gh("h1",{style:{...PORTADILLA,maxWidth:820},"data-gufi-src":"components/Cabecera.tsx:64"},h1),__gh("p",{style:{margin:"20px 0 0",fontSize:"clamp(15.5px, 1.9vw, 17.5px)",lineHeight:1.65,color:T.body,maxWidth:640},"data-gufi-src":"components/Cabecera.tsx:65"},texto))}function Legal({path}){let bloques=LEGALES[path];if(!bloques)throw new Error(`sections/legal: no hay texto para "${path}"`);let grupos=[];for(let b of bloques){let ultimo=grupos[grupos.length-1];b.t==="li"?ultimo&&ultimo.tipo==="lista"?ultimo.items.push(b.x):grupos.push({tipo:"lista",items:[b.x]}):grupos.push({tipo:"texto",b})}return __gh("div",{"data-gufi-src":"sections/legal.tsx:33"},__gh(Cabecera3,{path,ancho:760}),__gh("article",{style:{maxWidth:760,margin:"0 auto",padding:"30px 20px 60px"},"data-gufi-src":"sections/legal.tsx:36"},IDIOMA==="en"&&__gh("p",{style:{margin:"0 0 24px",fontSize:14,lineHeight:1.6,color:T.muted},"data-gufi-src":"sections/legal.tsx:39"},"This legal text is only available in Spanish."),grupos.map((g,i)=>g.tipo==="lista"?__gh("ul",{key:i,style:{margin:"0 0 18px",paddingLeft:22,display:"grid",gap:8},"data-gufi-src":"sections/legal.tsx:45"},g.items.map((x,j)=>__gh("li",{key:j,style:{fontSize:15.5,lineHeight:1.7,color:T.body},"data-gufi-src":"sections/legal.tsx:47"},x))):g.b.t==="h3"?__gh("h2",{key:i,style:{margin:"34px 0 12px",fontFamily:SANS,fontSize:"clamp(19px, 2.4vw, 24px)",fontWeight:400,lineHeight:1.3,color:T.ink},"data-gufi-src":"sections/legal.tsx:53"},g.b.x):__gh("p",{key:i,style:{margin:"0 0 16px",fontSize:15.5,lineHeight:1.75,color:T.body},"data-gufi-src":"sections/legal.tsx:67"},g.b.x)),path==="/cookies"&&__gh("button",{type:"button",onClick:abrirAvisoCookies,style:{marginTop:8,height:42,padding:"0 20px",borderRadius:999,border:`1px solid ${T.line}`,background:T.surface,color:T.ink,fontFamily:SANS,fontSize:14.5,fontWeight:500,cursor:"pointer"},"data-gufi-src":"sections/legal.tsx:73"},t("Cambiar mi decisi\xF3n sobre las cookies","Change my cookie choice"))),__gh("div",{style:{maxWidth:760,margin:"0 auto",padding:"0 20px 80px"},"data-gufi-src":"sections/legal.tsx:95"},__gh("p",{style:{margin:0,borderTop:`1px solid ${T.line}`,paddingTop:18,fontSize:13,lineHeight:1.6,color:T.muted},"data-gufi-src":"sections/legal.tsx:96"},path==="/cookies"?t("Esta p\xE1gina describe lo que hace esta web, comprobado en su c\xF3digo. Si algo cambia y deja de ser exacto, dinoslo.","This page describes what this website does, checked against its code. If something changes and is no longer accurate, let us know."):t("Texto reproducido de batuecas.es. Si ves algo que no cuadra, escr\xEDbenos y lo corregimos con quien corresponda.","Text reproduced from batuecas.es. If something does not look right, write to us and we will correct it with the right person."))))}var import_react46=require("react");var import_lucide_react45=require("lucide-react");function EntradaBlog({a,href,destacada}){let portada=a.foto;return __gh("a",{href,className:`bq-entrada${destacada?" bq-entrada-grande":""}`,style:{textDecoration:"none",color:"inherit"},"data-gufi-src":"components/EntradaBlog.tsx:34"},__gh("div",{className:"bq-entrada-marco","data-gufi-src":"components/EntradaBlog.tsx:35"},portada===null?__gh("div",{className:"bq-entrada-foto bq-entrada-vacia","aria-hidden":"true","data-gufi-src":"components/EntradaBlog.tsx:37"},a.titulo):__gh("img",{src:portada,alt:"",loading:destacada?"eager":"lazy",decoding:"async",className:"bq-entrada-foto",sizes:destacada?"(max-width: 860px) calc(100vw - 40px), 680px":"(max-width: 640px) calc(100vw - 40px), (max-width: 1000px) 46vw, 370px","data-gufi-src":"components/EntradaBlog.tsx:41"})),__gh("div",{className:"bq-entrada-texto","data-gufi-src":"components/EntradaBlog.tsx:52"},__gh("div",{style:{fontSize:13,color:T.muted,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/EntradaBlog.tsx:53"},fechaLarga(a.fecha)),__gh("h2",{className:"bq-entrada-titulo",style:{margin:"8px 0 0",fontFamily:SANS,fontWeight:destacada?340:450,color:T.ink},"data-gufi-src":"components/EntradaBlog.tsx:54"},a.titulo),a.extracto&&__gh("p",{className:"bq-entrada-extracto","data-gufi-src":"components/EntradaBlog.tsx:60"},a.extracto),destacada&&__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7,marginTop:22,fontSize:15,fontWeight:600,color:T.accent},"data-gufi-src":"components/EntradaBlog.tsx:62"},t("Leer el art\xEDculo","Read the article"),__gh(import_lucide_react45.ArrowRight,{className:"bq-entrada-flecha",style:{width:16,height:16}}))))}var POR_TANDA=12;function Blog({url,articulos}){let[tanda,setTanda]=(0,import_react46.useState)(1),[tema,setTema]=(0,import_react46.useState)(null),ordenados=(0,import_react46.useMemo)(()=>[...articulos].sort((a,b)=>(b.fecha??"").localeCompare(a.fecha??"")),[articulos]),cuantos=(0,import_react46.useMemo)(()=>Object.fromEntries(TEMAS.map(x=>[x.id,ordenados.filter(a=>x.re.test(a.titulo)).length])),[ordenados]),elegido=TEMAS.find(x=>x.id===tema),destacada=elegido===void 0?ordenados[0]:void 0,lista=elegido===void 0?ordenados.slice(1):ordenados.filter(a=>elegido.re.test(a.titulo)),visibles=lista.slice(0,tanda*POR_TANDA),elegir=id=>{setTema(id),setTanda(1)};return __gh("div",{"data-gufi-src":"sections/blog.tsx:50"},__gh(Cabecera3,{path:"/blog",antetitulo:t("Diario","Journal"),apunte:`${ordenados.length} ${t("entradas","posts")}`}),__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:"12px 20px 90px"},"data-gufi-src":"sections/blog.tsx:53"},destacada!==void 0&&__gh(EntradaBlog,{a:destacada,href:url(`/${destacada.slug}`),destacada:!0}),__gh("div",{className:"bq-temas",role:"group","aria-label":t("Temas","Topics"),"data-gufi-src":"sections/blog.tsx:56"},__gh("button",{type:"button",className:`bq-tema${tema===null?" on":""}`,"aria-pressed":tema===null,onClick:()=>elegir(null),"data-gufi-src":"sections/blog.tsx:57"},t("Todo","All")),TEMAS.map(x=>__gh("button",{key:x.id,type:"button",className:`bq-tema${tema===x.id?" on":""}`,"aria-pressed":tema===x.id,onClick:()=>elegir(x.id),"data-gufi-src":"sections/blog.tsx:61"},t(x.es,x.en),__gh("span",{style:{color:T.muted,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/blog.tsx:63"},cuantos[x.id])))),__gh("div",{className:"bq-rejilla-blog","data-gufi-src":"sections/blog.tsx:68"},visibles.map(a=>__gh(EntradaBlog,{key:a.id,a,href:url(`/${a.slug}`)}))),visibles.lengthsetTanda(n=>n+1),className:"bq-boton",style:{height:46,padding:"0 26px",borderRadius:999,border:`1px solid ${T.line}`,background:T.surface,color:T.ink,fontSize:14.5,fontWeight:600,fontFamily:"inherit",cursor:"pointer"},"data-gufi-src":"sections/blog.tsx:76"},t("Ver m\xE1s entradas","More posts")," (",lista.length-visibles.length,")"))))}var import_react48=require("react"),import_lucide_react47=require("lucide-react");function buscarTermino(terminos,tipo,slug){return slug?terminos.find(t2=>t2.tipo===tipo&&t2.slug===slug&&t2.publicado===!0)??null:null}function articulosDe(articulos,puente,termino){let delTermino=new Set(puente.filter(p=>p.termino===termino.id).map(p=>p.articulo));return articulos.filter(a=>delTermino.has(a.id)&&a.publicado===!0).sort((a,b)=>{let fa=a.fecha??"",fb=b.fecha??"";return fa!==fb?fap.articulo===articuloId).map(p=>p.termino));return terminos.filter(t2=>suyos.has(t2.id)&&t2.tipo===tipo&&t2.publicado===!0)}function rutaDe(t2){return t2.tipo==="categoria"?`/category/${t2.slug}`:`/tag/${t2.slug}`}var import_react47=require("react"),import_lucide_react46=require("lucide-react");var POR_TANDA2=12;function Archivo({url,tipo,slug,termino,articulos,puente}){let[tanda,setTanda]=(0,import_react47.useState)(1),lista=(0,import_react47.useMemo)(()=>tipo==="autor"?articulos.filter(a=>a.publicado===!0).slice().sort((a,b)=>{let fa=a.fecha??"",fb=b.fecha??"";return fa!==fb?fas.charAt(0).toLocaleUpperCase("es-ES")+s.slice(1))(termino.nombre),bajada=tipo==="autor"?t("Todo lo que hemos escrito. Lo firma el equipo entero, que es como se hacen las cosas aqu\xED.","Everything we have written. The whole team signs it, which is how things are done here."):tipo==="categoria"?t("Categor\xEDa del blog.","Blog category."):t("Entradas etiquetadas con este tema.","Posts tagged with this topic."),visibles=lista.slice(0,tanda*POR_TANDA2);return __gh("div",{"data-gufi-src":"sections/archivo.tsx:94"},__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:"30px 20px 0"},"data-gufi-src":"sections/archivo.tsx:95"},__gh("a",{href:url("/blog"),style:{display:"inline-flex",alignItems:"center",gap:7,fontSize:13.5,color:T.body,textDecoration:"none"},"data-gufi-src":"sections/archivo.tsx:96"},__gh(import_lucide_react46.ArrowLeft,{style:{width:15,height:15}}),t("Todas las entradas","All posts")),__gh("div",{style:{marginTop:26,fontSize:11,fontWeight:700,letterSpacing:"0.1em",textTransform:"uppercase",color:T.accent},"data-gufi-src":"sections/archivo.tsx:111"},tipo==="autor"?t("Autor","Author"):tipo==="categoria"?t("Categor\xEDa","Category"):t("Etiqueta","Tag")),__gh("h1",{style:{margin:"10px 0 0",fontFamily:SANS,fontSize:"clamp(28px, 4.4vw, 44px)",lineHeight:1.14,fontWeight:400,color:T.ink},"data-gufi-src":"sections/archivo.tsx:124"},titulo3),__gh("p",{style:{margin:"12px 0 0",fontSize:16,lineHeight:1.65,color:T.body},"data-gufi-src":"sections/archivo.tsx:137"},bajada," ",lista.length===1?t("Una entrada.","One post."):t(`${lista.length} entradas.`,`${lista.length} posts.`))),__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:"26px 20px 80px"},"data-gufi-src":"sections/archivo.tsx:142"},lista.length===0?__gh("p",{style:{fontSize:15.5,color:T.body},"data-gufi-src":"sections/archivo.tsx:144"},t("Aqu\xED todav\xEDa no hay nada publicado.","Nothing has been published here yet.")," ",__gh("a",{href:url("/blog"),style:{color:T.accent},"data-gufi-src":"sections/archivo.tsx:146"},t("Ver todo el blog","See the whole blog")),"."):__gh(__gf,null,__gh("div",{className:"bq-rejilla-blog","data-gufi-src":"sections/archivo.tsx:153"},visibles.map(a=>__gh(EntradaBlog,{key:a.id,a,href:url(`/${a.slug}`)}))),visibles.lengthsetTanda(n=>n+1),className:"bq-boton",style:{height:46,padding:"0 26px",borderRadius:999,border:`1px solid ${T.line}`,background:T.surface,color:T.ink,fontSize:14.5,fontWeight:600,fontFamily:"inherit",cursor:"pointer"},"data-gufi-src":"sections/archivo.tsx:160"},t("Ver m\xE1s entradas","More posts")," (",lista.length-visibles.length,")")))))}function Etiquetas({url,terminos}){return terminos.length===0?null:__gh("div",{style:{display:"flex",flexWrap:"wrap",gap:8,marginTop:8},"data-gufi-src":"sections/archivo.tsx:192"},terminos.map(x=>__gh("a",{key:x.id,href:url(rutaDe(x)),style:{display:"inline-flex",alignItems:"center",height:30,padding:"0 13px",borderRadius:999,border:`1px solid ${T.line}`,background:T.surface,color:T.body,fontSize:12.5,textDecoration:"none"},"data-gufi-src":"sections/archivo.tsx:194"},x.nombre)))}function ArticuloPagina({url,articulo,contenido,otros,terminos,puente}){let portada=articulo.foto,html=(0,import_react48.useMemo)(()=>limpiarHtml(contenido??"",articulo.titulo,portada),[contenido,articulo.titulo,portada]),cat=categoriaUtil(articulo.categoria),susCategorias=(0,import_react48.useMemo)(()=>terminosDe(terminos,puente,articulo.id,"categoria"),[terminos,puente,articulo.id]),susEtiquetas=(0,import_react48.useMemo)(()=>terminosDe(terminos,puente,articulo.id,"etiqueta"),[terminos,puente,articulo.id]);return __gh("div",{"data-gufi-src":"sections/articulo.tsx:55"},__gh("div",{style:{maxWidth:760,margin:"0 auto",padding:"26px 20px 0"},"data-gufi-src":"sections/articulo.tsx:56"},__gh("a",{href:url("/blog"),style:{display:"inline-flex",alignItems:"center",gap:7,fontSize:13.5,color:T.body,textDecoration:"none"},"data-gufi-src":"sections/articulo.tsx:57"},__gh(import_lucide_react47.ArrowLeft,{style:{width:15,height:15}}),t("Todas las entradas","All posts")),__gh("div",{style:{display:"flex",alignItems:"center",gap:10,flexWrap:"wrap",marginTop:26},"data-gufi-src":"sections/articulo.tsx:72"},susCategorias.length>0?susCategorias.map(c=>__gh("a",{key:c.id,href:url(rutaDe(c)),style:{fontSize:10.5,fontWeight:700,letterSpacing:"0.1em",textTransform:"uppercase",color:T.accent,textDecoration:"none"},"data-gufi-src":"sections/articulo.tsx:75"},c.nombre)):cat?__gh("span",{style:{fontSize:10.5,fontWeight:700,letterSpacing:"0.1em",textTransform:"uppercase",color:T.accent},"data-gufi-src":"sections/articulo.tsx:91"},cat):null,__gh("span",{style:{fontSize:13,color:T.muted},"data-gufi-src":"sections/articulo.tsx:103"},fechaLarga(articulo.fecha)),IDIOMA==="en"&&__gh("span",{style:{fontSize:13,color:T.muted},"data-gufi-src":"sections/articulo.tsx:105"},"\xB7 Article in Spanish")),__gh("h1",{style:{margin:"12px 0 0",fontFamily:SANS,fontSize:"clamp(28px, 4.4vw, 44px)",lineHeight:1.14,fontWeight:400,color:T.ink},"data-gufi-src":"sections/articulo.tsx:108"},articulo.titulo)),portada!==null&&__gh("div",{style:{maxWidth:900,margin:"30px auto 0",padding:"0 20px"},"data-gufi-src":"sections/articulo.tsx:123"},__gh("img",{src:portada,alt:articulo.titulo,loading:"eager",decoding:"async",sizes:"(max-width: 900px) calc(100vw - 40px), 860px",style:{display:"block",width:"100%",maxHeight:460,objectFit:"cover",borderRadius:18,background:"linear-gradient(135deg, #efece4 0%, #e4ddce 100%)"},"data-gufi-src":"sections/articulo.tsx:124"})),__gh("article",{className:"bq-art",style:{maxWidth:760,margin:"0 auto",padding:"34px 20px 20px"},dangerouslySetInnerHTML:{__html:html},"data-gufi-src":"sections/articulo.tsx:144"}),susEtiquetas.length>0&&__gh("div",{style:{maxWidth:760,margin:"0 auto",padding:"4px 20px 0"},"data-gufi-src":"sections/articulo.tsx:151"},__gh("div",{style:{fontSize:11,letterSpacing:"0.09em",textTransform:"uppercase",color:T.muted,fontWeight:700,marginBottom:4},"data-gufi-src":"sections/articulo.tsx:152"},t("Etiquetas","Tags")),__gh(Etiquetas,{url,terminos:susEtiquetas})),__gh("div",{style:{maxWidth:760,margin:"0 auto",padding:"22px 20px 0"},"data-gufi-src":"sections/articulo.tsx:168"},__gh("div",{style:{borderTop:`1px solid ${T.line}`,paddingTop:22,display:"flex",gap:14,flexWrap:"wrap",alignItems:"center"},"data-gufi-src":"sections/articulo.tsx:169"},__gh("a",{href:url("/gestion"),className:"bq-boton",style:{display:"inline-flex",alignItems:"center",height:44,padding:"0 22px",borderRadius:999,background:T.accent,color:"#fff",fontSize:14,fontWeight:600,textDecoration:"none"},"data-gufi-src":"sections/articulo.tsx:179"},t("Pon tu casa a rentar","Put your home to work")),__gh("a",{href:url("/#contactanos"),className:"bq-boton",style:{display:"inline-flex",alignItems:"center",height:44,padding:"0 22px",borderRadius:999,border:`1px solid ${T.line}`,color:T.ink,fontSize:14,fontWeight:600,textDecoration:"none"},"data-gufi-src":"sections/articulo.tsx:197"},t("Hablar con alguien","Talk to someone")))),otros.length>0&&__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:"clamp(56px, 8vw, 90px) 20px 90px"},"data-gufi-src":"sections/articulo.tsx:219"},__gh("h2",{style:{margin:0,fontFamily:SANS,fontSize:"clamp(24px, 3.2vw, 32px)",fontWeight:360,letterSpacing:"-0.02em",color:T.ink},"data-gufi-src":"sections/articulo.tsx:220"},t("Sigue leyendo","Keep reading")),__gh("div",{className:"bq-rejilla-blog","data-gufi-src":"sections/articulo.tsx:232"},otros.map(o=>__gh(EntradaBlog,{key:o.id,a:o,href:url(`/${o.slug}`)})))))}function Page({id,gufi}){let[vista,,params]=gufi.router.usePathView({initial:"portada",routes:{portada:"/",estancias:"/estancias-cortas",alquileres:"/alquileres",venta:"/venta",gestion:"/gestion",reformas:"/reformas",blog:"/blog",categoria:"/category/:slug",etiqueta:"/tag/:slug",autor:"/author/:slug",aviso_legal:"/aviso-legal",privacidad:"/politica-de-privacidad",cookies:"/cookies",terminos:"/terminos-y-condiciones",accesibilidad:"/accesibilidad",cuenta:"/cuenta",portal:"/portal",ficha:"/:slug"}});return vista==="portal"?__gh(PortalPropietarios,{gufi,web:gufi.router.url("/")}):__gh(Web,{id,gufi,vista,params})}function Web({id,gufi,vista,params}){let{data,loading}=gufi.useData("web__pisos",{pageSize:500,sorters:[{field:"orden",order:"asc"}],fields:CAMPOS_PISO}),{data:datosArticulos,loading:cargandoBlog}=gufi.useData("web__articulos",{pageSize:200,sorters:[{field:"fecha",order:"desc"}],fields:CAMPOS_ARTICULO}),[ficha2,setFicha]=(0,import_react49.useState)(null);(0,import_react49.useEffect)(()=>{if(vista!=="ficha"||params.slug===void 0)return;let slug=params.slug,porSlug=[{field:"slug",operator:"eq",value:slug}],vigente=!0;return Promise.all([gufi.query("web__pisos",{filters:porSlug,fields:CAMPOS_FICHA,pageSize:1}),gufi.query("web__articulos",{filters:porSlug,fields:["contenido"],pageSize:1})]).then(([casa,articulo])=>{vigente&&setFicha({slug,casa:casa.data[0]??null,cuerpo:articulo.data[0]?.contenido??null})},e=>setFicha(()=>{throw e})),()=>{vigente=!1}},[gufi,vista,params.slug]);let{data:datosTerminos}=gufi.useData("web__terminos",{pageSize:200}),{data:datosPuente}=gufi.useData("web__articulo_terminos",{pageSize:1e3}),pisos=(0,import_react49.useMemo)(()=>{let publicados=data.filter(p=>p.publicado===!0),rango2=p=>tieneFoto(p)?esHostal(p)?1:0:2;return publicados.sort((a,b)=>{let d2=rango2(a)-rango2(b);return d2!==0?d2:(a.orden??0)-(b.orden??0)})},[data]),articulos=(0,import_react49.useMemo)(()=>datosArticulos.filter(a=>a.publicado===!0),[datosArticulos]),terminos=(0,import_react49.useMemo)(()=>datosTerminos,[datosTerminos]),puente=(0,import_react49.useMemo)(()=>datosPuente,[datosPuente]),ciudades=(0,import_react49.useMemo)(()=>[...new Set(pisos.map(p=>p.ciudad).filter(c=>!!c))],[pisos]),url=sub=>gufi.router.url(sub),RUTA_DE_VISTA={portada:"/",estancias:"/estancias-cortas",alquileres:"/alquileres",venta:"/venta",gestion:"/gestion",reformas:"/reformas",blog:"/blog",categoria:"/blog",etiqueta:"/blog",autor:"/blog",aviso_legal:"/aviso-legal",privacidad:"/politica-de-privacidad",cookies:"/cookies",terminos:"/terminos-y-condiciones",accesibilidad:"/accesibilidad",cuenta:"/cuenta"},pisoDeLaFicha=vista==="ficha"?pisos.find(p=>p.slug===params.slug):void 0,rutaActiva=vista==="ficha"&&pisoDeLaFicha===void 0&&articulos.some(a=>a.slug===params.slug)?"/blog":pisoDeLaFicha!==void 0?pisoDeLaFicha.seccion==="alquileres"?"/alquileres":pisoDeLaFicha.seccion==="venta"?"/venta":pisoDeLaFicha.seccion==="estancias_cortas"?"/estancias-cortas":"":RUTA_DE_VISTA[vista],esLegal=RUTAS_LEGALES.includes(rutaActiva),claro=["/estancias-cortas","/alquileres","/venta","/cuenta"].includes(rutaActiva),conHero=vista==="portada"||vista==="gestion"||vista==="reformas",esperando=loading||["blog","categoria","etiqueta","autor","ficha"].includes(vista)&&cargandoBlog||vista==="ficha"&&(ficha2===null||ficha2.slug!==params.slug);return __gh("div",{id,style:{background:claro?A.bg:T.bg,color:T.ink,fontFamily:SANS,minHeight:"100vh",WebkitFontSmoothing:"antialiased"},"data-gufi-src":"page.tsx:246"},__gh("style",{"data-gufi-src":"page.tsx:256"},ESTILOS),__gh(Navbar,{url,activa:rutaActiva,fondoOscuro:conHero,claro}),__gh("main",{"data-gufi-src":"page.tsx:265"},vista==="portada"&&__gh(HeroPortada,{url}),vista==="gestion"&&__gh(HeroGestion,{url}),vista==="reformas"&&__gh(HeroReformas,null),esperando?conHero?null:__gh(Cargando,null):vista==="portada"?__gh(Portada,{gufi,url,pisos,ciudades}):vista==="gestion"?__gh(Gestion,{gufi,url,pisos,ciudades}):vista==="cuenta"?__gh(Cuenta,{gufi,url}):vista==="estancias"?__gh(Estancias,{gufi,url,pisos}):vista==="alquileres"?__gh(Inmo,{gufi,url,pisos,seccion:"alquileres"}):vista==="venta"?__gh(Inmo,{gufi,url,pisos,seccion:"venta"}):vista==="reformas"?__gh(Reformas,{gufi,url,pisos}):vista==="blog"?__gh(Blog,{url,articulos}):vista==="categoria"||vista==="etiqueta"?__gh(Archivo,{url,tipo:vista==="categoria"?"categoria":"etiqueta",slug:params.slug,termino:buscarTermino(terminos,vista==="categoria"?"categoria":"etiqueta",params.slug),articulos,puente}):vista==="autor"?__gh(Archivo,{url,tipo:"autor",slug:params.slug,termino:null,articulos,puente}):esLegal?__gh(Legal,{path:rutaActiva}):vista==="ficha"?__gh(UnSoloSegmento,{gufi,url,pisos,ficha:ficha2,articulos,terminos,puente,slug:params.slug}):__gh(NoEncontrado,{url,que:params.slug??""})),!esperando&&__gh(Footer,{url,alojamientos:pisos.filter(p=>p.seccion==="estancias_cortas").length,ciudades:ciudades.length}),gufi.track&&__gh(AvisoCookies,{gufi,url}))}function UnSoloSegmento({gufi,url,pisos,ficha:ficha2,articulos,terminos,puente,slug}){let enLista=pisos.find(p=>p.slug===slug);if(enLista!==void 0&&ficha2.casa===null)throw new Error(`La casa \xAB${slug}\xBB est\xE1 en el listado y no tiene ficha`);let piso=enLista===void 0?void 0:{...enLista,...ficha2.casa};if(piso&&piso.seccion==="estancias_cortas"){let vecinos=pisos.filter(p=>p.id!==piso.id&&p.ciudad===piso.ciudad&&p.seccion===piso.seccion).sort((a,b)=>Number(b.valoracion)-Number(a.valoracion)).slice(0,12);return __gh(Estancia,{gufi,url,piso,vecinos})}if(piso){let vecinos=pisos.filter(p=>p.id!==piso.id&&p.seccion===piso.seccion).slice(0,12);return __gh(Inmueble,{gufi,url,piso,vecinos})}let articulo=articulos.find(a=>a.slug===slug);if(articulo){let otros=relacionados(articulo,articulos,3);return __gh(ArticuloPagina,{url,articulo,contenido:ficha2.cuerpo,otros,terminos,puente})}return __gh(NoEncontrado,{url,que:slug??""})}var ESTILOS=` ${FUENTES} .bq-card { transition: transform 0.28s cubic-bezier(0.2,0.7,0.3,1), box-shadow 0.28s ease, border-color 0.28s ease; } /* El listado del blog (components/EntradaBlog): rejilla de tarjetas con foto. */ .bq-rejilla-blog { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 46px 28px; margin-top: 34px; } .bq-entrada { display: block; } .bq-entrada-marco { position: relative; aspect-ratio: 3 / 2; border-radius: 18px; overflow: hidden; background: linear-gradient(135deg, #efece4 0%, #e4ddce 100%); } .bq-entrada-foto { display: block; width: 100%; height: 100%; object-fit: cover; transition: transform 0.6s cubic-bezier(0.16, 1, 0.3, 1); } .bq-entrada:hover .bq-entrada-foto { transform: scale(1.04); } .bq-entrada-vacia { display: flex; align-items: flex-end; padding: 22px; font-size: 22px; line-height: 1.2; letter-spacing: -0.02em; color: ${T.accent}; } .bq-entrada-texto { padding-top: 16px; } .bq-entrada-titulo { font-size: 19.5px; line-height: 1.3; letter-spacing: -0.01em; transition: color 0.2s ease; } .bq-entrada:hover .bq-entrada-titulo { color: ${T.accent} !important; } .bq-entrada-extracto { margin: 8px 0 0; font-size: 14.5px; line-height: 1.6; color: ${T.body}; display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical; overflow: hidden; } /* La destacada: foto grande a la izquierda y el texto al lado. */ .bq-entrada-grande { display: grid; grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: clamp(28px, 4vw, 56px); align-items: center; margin-top: 10px; } .bq-entrada-grande .bq-entrada-marco { aspect-ratio: 16 / 10.5; border-radius: 22px; } .bq-entrada-grande .bq-entrada-texto { padding-top: 0; } .bq-entrada-grande .bq-entrada-titulo { font-size: clamp(28px, 3.3vw, 42px); line-height: 1.1; letter-spacing: -0.03em; } .bq-entrada-grande .bq-entrada-extracto { margin-top: 16px; font-size: 16.5px; line-height: 1.65; -webkit-line-clamp: 4; } .bq-entrada-flecha { transition: transform 0.25s ease; } .bq-entrada:hover .bq-entrada-flecha { transform: translateX(4px); } /* Los temas del blog: la elegida en blanco con raya, como las ciudades del mapa. */ .bq-temas { display: flex; flex-wrap: wrap; gap: 8px; margin-top: clamp(48px, 6vw, 72px); padding-top: 28px; border-top: 1px solid ${T.lineSoft}; } .bq-tema { display: inline-flex; align-items: center; gap: 8px; height: 40px; padding: 0 16px; border-radius: 999px; border: 1px solid ${T.lineSoft}; background: transparent; color: ${T.body}; font: inherit; font-size: 14.5px; cursor: pointer; transition: background 0.2s ease, border-color 0.2s ease, color 0.2s ease; } .bq-tema:hover { border-color: ${T.line}; color: ${T.ink}; } .bq-tema.on { background: ${T.surface}; border-color: ${T.line}; color: ${T.ink}; font-weight: 600; box-shadow: 0 1px 3px rgba(22,21,15,0.06); } @media (max-width: 1000px) { .bq-rejilla-blog { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 860px) { .bq-entrada-grande { grid-template-columns: minmax(0, 1fr); gap: 18px; } } @media (max-width: 640px) { .bq-rejilla-blog { grid-template-columns: minmax(0, 1fr); gap: 34px; } .bq-temas { flex-wrap: nowrap; overflow-x: auto; margin-left: -20px; margin-right: -20px; padding-left: 20px; padding-right: 20px; scrollbar-width: none; } .bq-temas::-webkit-scrollbar { display: none; } .bq-tema { flex-shrink: 0; } } @media (prefers-reduced-motion: reduce) { .bq-entrada-foto, .bq-entrada-flecha { transition: none; } } /* LA FOTO SE ACERCA, LA TARJETA NO SE MUEVE POR DENTRO. El recorte lo hace el contenedor (\`overflow: hidden\`), as\xED que la imagen puede crecer sin empujar nada. Es el \xFAnico movimiento nuevo y es CSS: si el navegador decide no animar, la foto se queda quieta y a tama\xF1o 1, que es su estado real. */ .bq-media { overflow: hidden; } .bq-media img { transition: transform 0.65s cubic-bezier(0.2,0.7,0.3,1); } .bq-card:hover .bq-media img, .bq-lupa:hover .bq-media img { transform: scale(1.055); } /* La flecha de un enlace de secci\xF3n se adelanta un paso. */ .bq-flecha svg, .bq-flecha-i { transition: transform 0.22s ease; } .bq-flecha:hover svg, .bq-flecha:hover .bq-flecha-i { transform: translateX(4px); } /* EL FOCO SE VE. Media web es un formulario y el teclado tiene que poder recorrerla sin adivinar d\xF3nde est\xE1. \`:focus-visible\` y no \`:focus\`: con \`:focus\` el anillo salta tambi\xE9n al pulsar con el rat\xF3n, que es ruido. */ .bq-card:focus-visible, .bq-boton:focus-visible, a:focus-visible, button:focus-visible, input:focus-visible, select:focus-visible, textarea:focus-visible { outline: 2px solid ${T.accent}; outline-offset: 3px; border-radius: 6px; } /* LO QUE APARECE AL LLEGAR, ligado al scroll y no a un observador: es el navegador el que lo mueve con la posici\xF3n, sin JavaScript. S\xF3lo donde se sabe hacer (\`animation-timeline\`); en el resto se ve quieto desde el principio. Nunca hay un bloque esperando a un evento para dejar de ser invisible. Lo usan la portada, /gestion y /reformas. */ @supports (animation-timeline: view()) { @keyframes bq-revela { from { opacity: 0; transform: translateY(48px) scale(0.98); } to { opacity: 1; transform: none; } } .bq-revela { animation: bq-revela linear both; animation-timeline: view(); animation-range: entry 0% cover 28%; } } @media (prefers-reduced-motion: reduce) { .bq-revela { animation: none !important; } } /* EN EL M\xD3VIL, LAS REJILLAS SON CARRUSELES. Ocho casas, cuatro obras y tres servicios uno debajo de otro eran m\xE1s de 3.000 px de scroll a 390 de ancho: la portada se hac\xEDa eterna. Debajo de 640 px cada rejilla pasa a una fila que se desliza con el dedo, con la tarjeta siguiente asomando (el 82 %) para que se vea que hay m\xE1s, y cada tarjeta se queda encajada al soltar. De borde a borde, sin barra. */ @media (max-width: 640px) { .bq-carrusel { display: flex !important; overflow-x: auto; scroll-snap-type: x mandatory; overscroll-behavior-x: contain; scrollbar-width: none; gap: 12px !important; margin-left: -20px; margin-right: -20px; padding: 4px 20px 16px; scroll-padding-left: 20px; } .bq-carrusel::-webkit-scrollbar { display: none; } .bq-carrusel > * { flex: 0 0 82%; scroll-snap-align: start; min-width: 0; } } /* El cuerpo de un articulo del blog. El HTML viene de su WordPress ya limpio de clases (ver core/articulo.ts), asi que se maqueta por etiqueta. */ .bq-art p { margin: 0 0 18px; font-size: 17px; line-height: 1.8; color: ${T.body}; } .bq-art h2 { margin: 38px 0 14px; font-family: ${SANS}; font-size: clamp(22px, 3vw, 29px); font-weight: 400; line-height: 1.25; color: ${T.ink}; } .bq-art h3 { margin: 32px 0 12px; font-family: ${SANS}; font-size: clamp(19px, 2.5vw, 24px); font-weight: 400; line-height: 1.3; color: ${T.ink}; } .bq-art h4, .bq-art h5, .bq-art h6 { margin: 26px 0 10px; font-size: 17px; font-weight: 700; color: ${T.ink}; } .bq-art ul, .bq-art ol { margin: 0 0 20px; padding-left: 24px; } .bq-art li { margin-bottom: 9px; font-size: 17px; line-height: 1.75; color: ${T.body}; } .bq-art a { color: ${T.accent}; text-decoration: underline; text-underline-offset: 2px; } .bq-art strong, .bq-art b { color: ${T.ink}; font-weight: 700; } .bq-art img { max-width: 100%; height: auto; display: block; margin: 26px auto; border-radius: 14px; } /* El pie de foto: casi siempre el credito (\xABFoto de \u2026 en Pexels\xBB). */ .bq-art small { display: block; margin: -14px 0 26px; font-size: 13px; line-height: 1.5; color: ${T.muted}; text-align: center; overflow-wrap: anywhere; } .bq-art small a { color: inherit; } .bq-art blockquote { margin: 24px 0; padding-left: 18px; border-left: 3px solid ${T.accent}; color: ${T.body}; font-style: italic; } .bq-art table { width: 100%; border-collapse: collapse; margin: 0 0 20px; font-size: 15px; } .bq-art td, .bq-art th { border: 1px solid ${T.line}; padding: 9px 11px; text-align: left; } /* El envoltorio 16:9 de los cuatro videos de YouTube que se conservan. */ .bq-video { position: relative; padding-bottom: 56.25%; height: 0; margin: 26px 0; } .bq-video iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; border-radius: 14px; } .bq-card:hover { transform: translateY(-5px); box-shadow: 0 2px 4px rgba(22,21,15,0.04), 0 18px 40px rgba(22,21,15,0.13); border-color: ${T.accentBorde}; } .bq-boton { transition: opacity 0.18s ease, transform 0.12s ease, box-shadow 0.18s ease; } .bq-boton:hover { opacity: 0.92; box-shadow: 0 10px 26px rgba(98,18,23,0.3); } .bq-boton:active { transform: scale(0.98); } @media (prefers-reduced-motion: reduce) { .bq-card, .bq-boton, .bq-media img, .bq-flecha svg { transition: none; } .bq-card:hover { transform: none; } .bq-card:hover .bq-media img, .bq-lupa:hover .bq-media img { transform: none; } } `;function Cargando(){return __gh("div",{style:{minHeight:"70vh",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:16,color:T.muted,fontSize:13.5,letterSpacing:"0.06em"},"data-gufi-src":"page.tsx:564"},__gh("span",{style:{width:30,height:30,borderRadius:"50%",border:`2px solid ${T.line}`,borderTopColor:T.accent,animation:"bq-giro 0.9s linear infinite"},"data-gufi-src":"page.tsx:577"}),"Cargando",__gh("style",{"data-gufi-src":"page.tsx:588"},"@keyframes bq-giro { to { transform: rotate(360deg); } }"))}var featureConfig={dataSources,seo,meta:{name:"Batuecas",label:"Web",description:"Web p\xFAblica de Batuecas. Alquiler, inmobiliaria y reformas.",version:"1.0.0",public:!0}};var stdin_default=Page;