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"},{table:"web__barrios",access:"public:read",sensitive:["poligono"]}];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 Inmobiliaria",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",lista:{detail:"/:piso",only:{seccion:"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",lista:{detail:"/:piso",only:{seccion:"alquileres"}},title:"Plataforma de alquiler temporal en Madrid | Batuecas",description:"Pisos de alquiler temporal y de larga duraci\xF3n 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",lista:{detail:"/:piso",only:{seccion:"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 en alquiler, 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",lista:{detail:"/:articulo"},description:"Art\xEDculos sobre comprar, vender, alquilar y reformar en Madrid. Lo que hemos ido aprendiendo gestionando casas de otros."},{path:"/como-elegir-empresa-gestion-apartamentos-turisticos",role:"page",h1:"C\xF3mo elegir empresa de gesti\xF3n de apartamentos tur\xEDsticos en Madrid",title:"Empresas de gesti\xF3n de apartamentos tur\xEDsticos: c\xF3mo elegir | Batuecas",description:"Qu\xE9 hace una empresa de gesti\xF3n de apartamentos tur\xEDsticos, c\xF3mo cobra, qu\xE9 mirar en el contrato y qu\xE9 preguntar antes de firmar. Y c\xF3mo lo hacemos nosotros."},{path:"/gestion-integral-apartamentos-turisticos",role:"page",h1:"Gesti\xF3n integral de apartamentos tur\xEDsticos",title:"Gesti\xF3n integral de apartamentos tur\xEDsticos | Batuecas",description:"Llevamos tu apartamento tur\xEDstico entero: anuncios, precio diario, hu\xE9spedes, limpieza, mantenimiento y liquidaci\xF3n mensual con factura. Sin cuota fija."},{path:"/alquiler-seguro",role:"page",h1:"Alquiler seguro para propietarios",title:"Alquiler seguro para propietarios en Madrid | Batuecas",description:"C\xF3mo alquilar tu piso sin miedo a impagos ni sorpresas: inquilino comprobado, contrato bien hecho y alguien que lo lleva cada mes. Desde 50 \u20AC al mes."},{path:"/alquiler-temporal-trabajadores",role:"page",h1:"Alquiler temporal para trabajadores en Madrid",title:"Alquiler temporal para trabajadores en Madrid | Batuecas",description:"Pisos amueblados por meses en Madrid para quien viene a trabajar una temporada, con contrato de temporada. Y si tienes un piso, te lo alquilamos a ellos."},{path:"/alquilar-de-particular-a-particular",role:"page",h1:"Alquilar de particular a particular",title:"Alquilar de particular a particular o con gestora | Batuecas",description:"Lo que te toca hacer si alquilas tu piso de particular a particular, lo que te ahorras y lo que arriesgas, y cu\xE1ndo compensa que lo lleve una gestora."},{path:"/anunciar-alquiler-vacacional",role:"page",h1:"Anunciar tu alquiler vacacional gratis",title:"Anunciar alquiler vacacional gratis: d\xF3nde y c\xF3mo | Batuecas",description:"D\xF3nde anunciar tu piso tur\xEDstico sin pagar por publicar y qu\xE9 necesitas antes. O deja que lo publiquemos en Airbnb, Booking y Vrbo y lo llevemos nosotros."},{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 Estate 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:"/barrios",role:"page",h1:"Barrios de Madrid",title:"Barrios de Madrid: d\xF3nde alojarse y d\xF3nde tener tu piso | Batuecas",description:"Los barrios de Madrid donde tenemos casas, cu\xE1ntas hay en cada uno, qu\xE9 tiene cada barrio para dormir o vivir y qu\xE9 dice la norma de pisos tur\xEDsticos.",lista:{detail:"/barrios/:barrio"}},{path:"/barrios/:barrio",role:"detail",table:"web__barrios",slug:"slug",title:"titulo",seoTitle:"titulo_seo",description:"descripcion",image:"foto",active:"publicado",type:"CollectionPage",lista:{detail:"/:piso",fk:"zona"}},{path:"/:piso",role:"detail",table:"web__pisos",slug:"slug",title:"titulo",description:"descripcion",image:"foto",active:"publicado",catalog:!0,type:"Accommodation",rental:{only:{seccion:"estancias_cortas",tipo:"piso"},dates:{checkin:"entrada",checkout:"salida",guests:"huespedes"},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_react50=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","zona"],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 plano2=h=>h.replace(/<[^>]+>/g," ").replace(/ | /g," ").toLowerCase().replace(/[^\p{L}\p{N}]+/gu," ").trim(),a=plano2(html),b=plano2(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 GUIAS=[{path:"/como-elegir-empresa-gestion-apartamentos-turisticos",antetitulo:"Antes de firmar",menu:"C\xF3mo elegir gestora",contacto:"turistico",whatsapp:"Hola, estoy buscando empresa para gestionar mi apartamento tur\xEDstico y quiero saber c\xF3mo trabaj\xE1is.",cifras:!0,secciones:[{h2:"Qu\xE9 hace una empresa de gesti\xF3n de apartamentos tur\xEDsticos",bloques:[{t:"p",x:"Se ocupa de todo lo que pasa entre que publicas tu piso y cobras cada reserva. Lo normal es que incluya esto:"},{t:"puntos",items:[{t:"Los anuncios",d:"Fotos, textos y calendario en Airbnb, Booking y las dem\xE1s plataformas, siempre al d\xEDa."},{t:"El precio",d:"Moverlo con la temporada y la demanda, para que el piso no se quede vac\xEDo ni se alquile barato."},{t:"Los hu\xE9spedes",d:"Los mensajes antes y durante la estancia, la entrada, la salida y lo que falle entremedias."},{t:"El registro de viajeros",d:"El parte de cada hu\xE9sped a la polic\xEDa, obligatorio en cada estancia."},{t:"La limpieza y la ropa",d:"Limpiar y cambiar la ropa entre una salida y la siguiente entrada, y avisar si algo se ha roto."},{t:"El mantenimiento",d:"Arreglar lo que se estropea antes de que llegue el siguiente hu\xE9sped."},{t:"Las cuentas",d:"Cobrar las reservas y pasarte cada mes lo tuyo, con su detalle."}]},{t:"p",x:"No todas hacen todo. Hay empresas que llevan los anuncios y los mensajes y te dejan la limpieza a ti, y otras que s\xF3lo limpian. Antes de comparar precios, comprueba que comparas el mismo servicio."}]},{h2:"C\xF3mo cobran",bloques:[{t:"lista",items:["Un porcentaje de cada reserva. Si no hay reservas, no cobran, as\xED que les interesa que el piso se llene. Es lo m\xE1s habitual en el alquiler tur\xEDstico.","Una cuota fija al mes, haya reservas o no. Se ve m\xE1s en el alquiler de larga duraci\xF3n, donde la renta es la misma todos los meses."]},{t:"p",x:"Con un porcentaje, lo que importa es sobre qu\xE9 se calcula. No es lo mismo un porcentaje de las noches que uno de todo lo que paga el hu\xE9sped, limpieza incluida, ni calcularlo antes o despu\xE9s de la comisi\xF3n de la plataforma, ni con el IVA dentro o fuera. Dos porcentajes iguales pueden dejarte cantidades distintas."},{t:"p",x:"Mira tambi\xE9n qu\xE9 queda fuera de la tarifa: suelen ir aparte las fotos profesionales, las reparaciones, las compras para la casa y, a veces, la lavander\xEDa. Y pide la cuenta de una reserva de ejemplo: lo que paga el hu\xE9sped, lo que se queda la plataforma, lo que cobra la gestora y lo que te llega a ti."}]},{h2:"Qu\xE9 mirar en el contrato",bloques:[{t:"puntos",items:[{t:"La permanencia",d:"Si hay un tiempo m\xEDnimo, qu\xE9 pasa si te vas antes y con cu\xE1nto aviso puedes irte."},{t:"La liquidaci\xF3n",d:"Cada cu\xE1nto te pagan y con qu\xE9 detalle. Lo razonable es una liquidaci\xF3n al mes con cada reserva, cada gasto y su factura."},{t:"Qui\xE9n paga las limpiezas",d:"Si las paga el hu\xE9sped como un cargo aparte o salen de lo que cobras t\xFA. Cambia mucho lo que te queda."},{t:"Qui\xE9n paga las reparaciones",d:"Suele pagarlas el propietario: mira a qu\xE9 precio y hasta qu\xE9 importe pueden arreglar algo sin preguntarte."},{t:"Qu\xE9 pasa con los da\xF1os",d:"Qui\xE9n revisa el piso tras cada salida, c\xF3mo se reclama a la plataforma si un hu\xE9sped rompe algo y cu\xE1ndo te enteras t\xFA."},{t:"De qui\xE9n son los anuncios",d:"Si van a tu nombre o al de la gestora. De ellos cuelgan las opiniones de los hu\xE9spedes, que son lo que hace que un piso se reserve."}]}]},{h2:"La licencia de vivienda tur\xEDstica en Madrid",bloques:[{t:"p",x:"Un piso que se alquila por noches en Madrid tiene que tener sus permisos como vivienda de uso tur\xEDstico y su n\xFAmero de registro, y las plataformas lo piden para publicar el anuncio. Adem\xE1s, no en todos los edificios ni en todas las zonas se puede, y los estatutos de la comunidad de vecinos tambi\xE9n pueden limitarlo."},{t:"p",x:"Las normas cambian a menudo, as\xED que lo primero es comprobar si tu piso puede ser tur\xEDstico, antes de amueblarlo o de firmar con nadie. Una buena gestora te pregunta por la licencia antes de publicar y te dice claro si se puede. Si no, el piso se puede alquilar por meses o por a\xF1os. Contamos lo \xFAltimo en [las nuevas normas de los pisos tur\xEDsticos en Madrid](/pisos-de-uso-turistico-en-madrid-se-enfrentaran-a-nuevas-normativas)."}]},{h2:"Preguntas que hacer antes de firmar",bloques:[{t:"lista",items:["\xBFCu\xE1ntas casas llev\xE1is y d\xF3nde? \xBFPuedo ver alguno de vuestros anuncios, con sus opiniones?","\xBFSobre qu\xE9 se calcula vuestro porcentaje, y qu\xE9 no entra en \xE9l?","\xBFQui\xE9n contesta a un hu\xE9sped a las once de la noche? \xBFY qui\xE9n va al piso si hay un problema?","\xBFHasta qu\xE9 importe arregl\xE1is algo sin consultarme?","\xBFHay permanencia? \xBFC\xF3mo puedo irme?","\xBFA nombre de qui\xE9n van los anuncios?"]},{t:"p",x:"Si las respuestas son vagas, o no te las dan por escrito, sigue buscando. Y lee tambi\xE9n [c\xF3mo saber si una inmobiliaria es de fiar](/senales-para-saber-si-una-inmobiliaria-es-confiable-y-segura)."}]},{h2:"C\xF3mo lo hacemos en Batuecas",bloques:[{t:"p",x:"Llevamos apartamentos tur\xEDsticos desde nuestra oficina de la calle de las Aguas, en Madrid, y tambi\xE9n casas en la costa y en las islas. Lo hacemos todo con un solo equipo: anuncios con fotos profesionales, precio diario, hu\xE9spedes atendidos a cualquier hora, registro de viajeros, limpieza con revisi\xF3n de roturas, lavander\xEDa y mantenimiento. Anunciamos las casas en estas plataformas, adem\xE1s de en nuestra web:"},{t:"plataformas"},{t:"p",x:"No hay cuota fija. La mayor\xEDa de las casas que llevamos est\xE1n en una de estas dos tarifas, m\xE1s IVA:"},{t:"lista",items:["Silver: el 20 % de lo que paga el hu\xE9sped por las noches. La limpieza la paga \xE9l aparte.","Golden: el 30 % de todo lo que paga el hu\xE9sped, limpieza incluida. Un solo porcentaje para todo."]},{t:"p",x:"Aparte s\xF3lo se pagan las fotos profesionales, 150 \u20AC una vez, y las reparaciones y compras para la casa, a su coste m\xE1s un 30 %. El porcentaje final lo cerramos contigo despu\xE9s de ver tu casa. En tu \xE1rea de propietario ves cada reserva, lo cobrado y lo gastado, y cada mes la liquidaci\xF3n con su factura."},{t:"p",x:"Las tarifas completas est\xE1n en [gesti\xF3n de apartamentos tur\xEDsticos en Madrid](/gestion), y todo lo que hacemos, en [gesti\xF3n integral de apartamentos tur\xEDsticos](/gestion-integral-apartamentos-turisticos). Y antes de decidir, haznos las preguntas de arriba."},{t:"llamada"}]}]},{path:"/gestion-integral-apartamentos-turisticos",antetitulo:"Para propietarios",menu:"Gesti\xF3n integral",contacto:"turistico",whatsapp:"Hola, tengo un apartamento tur\xEDstico y me interesa que lo gestion\xE9is entero.",cifras:!0,secciones:[{h2:"Qu\xE9 quiere decir gesti\xF3n integral",bloques:[{t:"p",x:"Que t\xFA no haces nada con tu apartamento tur\xEDstico, salvo cobrar. Una gestora integral no te ayuda con una parte, el anuncio o la limpieza: lleva la casa entera, desde la primera foto hasta la liquidaci\xF3n de cada mes."},{t:"p",x:"En Batuecas lo hacemos con un solo equipo para todo. No hay una empresa para los hu\xE9spedes, otra para la limpieza y otra para las facturas, as\xED que cuando algo falla nadie se pasa la pelota. Llamas a un sitio y lo resuelve quien lleva tu casa."}]},{h2:"Todo lo que hacemos por ti",bloques:[{t:"puntos",items:[{t:"Anuncios en todas las plataformas",d:"Los creamos, los escribimos y los mantenemos al d\xEDa en Airbnb, Booking, Vrbo, Hostelworld y nuestra web."},{t:"Fotos profesionales y home staging",d:"La foto es lo primero que se mira, y lo que decide. Dejamos la casa lista para que apetezca quedarse."},{t:"Un precio que se mueve cada d\xEDa",d:"Seg\xFAn c\xF3mo se llena tu zona, para que la casa no se quede vac\xEDa ni se alquile regalada."},{t:"Las reservas, en un solo calendario",d:"Las de todos los canales caen en el mismo calendario y nunca se cruzan."},{t:"Hu\xE9spedes verificados y atendidos 24/7",d:"Sabemos qui\xE9n viene antes de que llegue, le contestamos en su idioma a cualquier hora y, si algo falla durante la estancia, va alguien."},{t:"Registro de viajeros",d:"El parte a la polic\xEDa de cada reserva lo hacemos nosotros. T\xFA no rellenas nada."},{t:"Limpieza y lavander\xEDa",d:"Limpieza profesional en cada salida, con revisi\xF3n de roturas, y s\xE1banas y toallas lavadas fuera."},{t:"Mantenimiento",d:"Lo que se rompe se arregla, y te enteras con la factura."},{t:"Tu \xE1rea de propietario",d:"Cada reserva, lo cobrado y lo gastado, y cada mes una liquidaci\xF3n con su factura, l\xEDnea a l\xEDnea."}]},{t:"plataformas"}]},{h2:"Cu\xE1nto cuesta",bloques:[{t:"p",x:"No hay cuota fija. Cobramos un porcentaje de cada reserva, as\xED que s\xF3lo ganamos cuando t\xFA ganas. La mayor\xEDa de las casas que llevamos est\xE1n en una de estas dos tarifas, m\xE1s IVA:"},{t:"lista",items:["Silver: el 20 % de lo que paga el hu\xE9sped por las noches. La limpieza la paga \xE9l aparte, as\xED que no sale de tu bolsillo.","Golden: el 30 % de todo lo que paga el hu\xE9sped, limpieza incluida. Un solo porcentaje para todo."]},{t:"p",x:"El porcentaje final lo cerramos contigo despu\xE9s de ver tu casa. Aparte s\xF3lo se pagan las fotos profesionales, 150 \u20AC una vez, y las reparaciones y compras para la casa, a su coste m\xE1s un 30 %. Tienes las tarifas completas en [gesti\xF3n de apartamentos tur\xEDsticos en Madrid](/gestion). Si est\xE1s comparando gestoras, mira antes [c\xF3mo elegir empresa de gesti\xF3n de apartamentos tur\xEDsticos](/como-elegir-empresa-gestion-apartamentos-turisticos)."}]},{h2:"D\xF3nde gestionamos",bloques:[{t:"p",x:"Sobre todo en Madrid, donde tenemos la oficina, en la calle de las Aguas. Pero tambi\xE9n llevamos casas en la costa y en las islas. \xC9stas son las ciudades donde gestionamos hoy, con las casas que llevamos en cada una:"},{t:"zonas"},{t:"p",x:"Puedes verlas todas, con sus fotos y sus opiniones, en [estancias cortas](/estancias-cortas)."}]},{h2:"C\xF3mo empezamos",bloques:[{t:"lista",items:["Nos cuentas c\xF3mo es tu casa, por el formulario, por WhatsApp o por tel\xE9fono. Te decimos lo que puede dar mirando pisos como el tuyo.","Vamos a verla y te decimos qu\xE9 le falta. Si hay que reformar, lo hacemos nosotros: mira nuestras [reformas](/reformas).","La ponemos a punto: fotos, anuncio y precio. La publicamos en todos los canales a la vez.","Empiezan las reservas. T\xFA las ves en tu \xE1rea de propietario y cobras cada mes, con factura."]},{t:"p",x:"Y si prefieres no depender de turistas, tambi\xE9n la alquilamos por meses o por a\xF1os, con la misma gesti\xF3n. Lo contamos en [alquiler seguro](/alquiler-seguro)."},{t:"llamada"}]}]},{path:"/alquiler-seguro",antetitulo:"Alquiler de todo el a\xF1o",menu:"Alquiler seguro",contacto:"tradicional",whatsapp:"Hola, tengo un piso y quiero alquilarlo con vosotros sin riesgos.",cifras:!1,secciones:[{h2:"Lo que da miedo al alquilar",bloques:[{t:"p",x:"Que no te paguen. Que te devuelvan el piso destrozado. Que algo se rompa un domingo y te toque a ti resolverlo. Y el papeleo: el contrato, la fianza, las renovaciones, las subidas de renta."},{t:"p",x:"Un alquiler sin ning\xFAn riesgo no existe. Un alquiler seguro es el que deja cada riesgo atado antes de dar las llaves, y tiene a alguien pendiente de \xE9l cada mes. Eso es lo que hacemos con los pisos que nos dejan para alquilar todo el a\xF1o."}]},{h2:"Lo que lo hace seguro",bloques:[{t:"puntos",items:[{t:"Elegir bien al inquilino",d:"Casi todos los problemas se evitan aqu\xED. Ense\xF1amos el piso, seleccionamos al inquilino y, antes de firmar, comprobamos que quien va a vivir en tu casa puede pagarla."},{t:"Un contrato que te protege",d:"Lo preparamos y lo firmamos contigo: duraci\xF3n, renta, c\xF3mo se actualiza, fianza y qu\xE9 pasa si algo falla."},{t:"La fianza, donde toca",d:"En un alquiler de vivienda la ley pide una mensualidad de fianza, y en la Comunidad de Madrid hay que depositarla en el organismo que la guarda. Se puede pactar adem\xE1s una garant\xEDa adicional, dentro de los l\xEDmites que marca la ley."},{t:"Alguien que lo lleva cada mes",d:"Las incidencias durante el alquiler son cosa nuestra. Si se estropea la caldera, el inquilino nos llama a nosotros, no a ti."},{t:"Un seguro de impago, si lo quieres",d:"Hay seguros que cubren las rentas si el inquilino deja de pagar. Suelen pedir que el inquilino pase un estudio de solvencia antes de firmar: otra raz\xF3n para elegirlo bien desde el principio."}]}]},{h2:"El precio tambi\xE9n es seguridad",bloques:[{t:"p",x:"Un piso caro tarda m\xE1s en alquilarse, y cada mes vac\xEDo es una renta que no vuelve. Uno demasiado barato atrae a m\xE1s gente, pero no por eso a mejores inquilinos. Antes de anunciarlo te decimos qu\xE9 puede dar mirando pisos como el tuyo en tu zona, para que salga a un precio que se alquile y que te compense."}]},{h2:"Cu\xE1nto cuesta",bloques:[{t:"p",x:"La gesti\xF3n del alquiler de todo el a\xF1o es una cuota fija, desde 50 \u20AC al mes m\xE1s IVA. Incluye las visitas y la selecci\xF3n del inquilino, el contrato y la firma, y las incidencias durante todo el alquiler. El precio exacto lo cerramos contigo cuando hayamos visto el piso."},{t:"p",x:"Las reparaciones y compras para la casa se pagan aparte, a su coste m\xE1s un 30 %, y las ves en la factura. Las tarifas de todo lo que hacemos est\xE1n en [la p\xE1gina de propietarios](/gestion)."}]},{h2:"Por a\xF1os, por meses o por noches",bloques:[{t:"p",x:"El alquiler de todo el a\xF1o es el m\xE1s tranquilo: un inquilino, un contrato largo y una renta que entra cada mes. Pero no es la \xFAnica forma de alquilar con seguridad."},{t:"lista",items:["Por meses, a quien viene a Madrid a trabajar una temporada. Lo contamos en [alquiler temporal para trabajadores](/alquiler-temporal-trabajadores).","Por noches, en alquiler tur\xEDstico, con hu\xE9spedes verificados y la casa revisada despu\xE9s de cada salida. Lo contamos en [gesti\xF3n integral de apartamentos tur\xEDsticos](/gestion-integral-apartamentos-turisticos)."]},{t:"p",x:"Cu\xE1l le conviene a tu casa depende de d\xF3nde est\xE1, de c\xF3mo es y de lo que quieras t\xFA. Te lo decimos despu\xE9s de verla, sin compromiso."},{t:"llamada"}]},{h2:"Si prefieres alquilarlo t\xFA",bloques:[{t:"p",x:"Tambi\xE9n se puede, y mucha gente lo hace. Hemos escrito lo que te toca hacer en [alquilar de particular a particular](/alquilar-de-particular-a-particular), para que lo decidas sabiendo lo que es."}]}]},{path:"/alquiler-temporal-trabajadores",antetitulo:"Media estancia",menu:"Alquiler para trabajadores",contacto:"tradicional",whatsapp:"Hola, os escribo por el alquiler temporal en Madrid.",cifras:!1,secciones:[{h2:"Para quien viene a Madrid a trabajar un tiempo",bloques:[{t:"p",x:"Un proyecto de seis meses, un traslado que todav\xEDa no es definitivo, unas pr\xE1cticas, una sustituci\xF3n. Quien viene a Madrid a trabajar una temporada no quiere firmar un contrato de cinco a\xF1os ni pasarse tres meses en un hotel. Necesita un piso amueblado, listo para entrar con la maleta, y un contrato que dure lo que dura el trabajo."},{t:"p",x:"Eso es el alquiler temporal, o de temporada: por meses, no por noches ni por a\xF1os. Es tambi\xE9n lo que buscan las empresas que mandan a alguien de su equipo a Madrid y necesitan alojarle bien."},{t:"p",x:"Si buscas piso para alguien de tu empresa, escr\xEDbenos por WhatsApp con las fechas, cu\xE1ntas personas son y d\xF3nde est\xE1 la oficina, y te decimos qu\xE9 tenemos."}]},{h2:"Los pisos de temporada que tenemos ahora",bloques:[{t:"p",x:"Son pisos de Madrid que gestionamos nosotros, con su precio al mes. En la ficha de cada uno puedes preguntar por las fechas que necesitas y pedir la visita."},{t:"pisos_temporada"},{t:"p",x:"Si ninguno te encaja, mira [todos nuestros alquileres](/alquileres), tambi\xE9n los de larga duraci\xF3n."}]},{h2:"Qu\xE9 mirar antes de firmar",bloques:[{t:"puntos",items:[{t:"Que est\xE9 amueblado de verdad",d:"Cama, cocina con lo necesario, lavadora y wifi. Si vienes a trabajar, el piso tiene que funcionar desde la primera noche."},{t:"Qu\xE9 entra en el precio",d:"Pregunta si la luz, el agua, el gas e internet van incluidos o aparte, y c\xF3mo se pagan. Dos pisos con la misma renta pueden costar muy distinto al mes."},{t:"Cu\xE1nto dura y qu\xE9 pasa si se alarga",d:"Un contrato de temporada dice por qu\xE9 es temporal y hasta cu\xE1ndo, por ejemplo un destino de trabajo de unos meses. Si tu proyecto puede alargarse, pregunta desde el principio si se puede prorrogar."},{t:"Lo que se paga al entrar",d:"Pregunta cu\xE1nto hay que pagar al firmar. La ley trata el alquiler de temporada como uso distinto del de vivienda, y ah\xED la fianza es de dos mensualidades."},{t:"D\xF3nde est\xE1 respecto a tu trabajo",d:"En Madrid, media hora m\xE1s de metro cambia el d\xEDa. Mira el piso pensando en el trayecto, no s\xF3lo en el barrio."},{t:"Qui\xE9n responde si algo se rompe",d:"Con un particular, depende de si te coge el tel\xE9fono. En los pisos que gestionamos, el equipo que te lo ense\xF1a es el mismo que lo mantiene y que contesta."}]}]},{h2:"Portal, habitaci\xF3n o gestora",bloques:[{t:"p",x:"Para buscar piso por meses hay portales generalistas como Idealista, portales de media estancia como Spotahome y aplicaciones para alquilar una habitaci\xF3n en piso compartido como Badi. Sirven para ver mucho en poco tiempo, y cada anuncio es de un due\xF1o distinto."},{t:"p",x:"Con una gestora tratas con quien lleva el piso: te lo ense\xF1a, firma contigo y est\xE1 ah\xED mientras vives en \xE9l. Si buscas una casa entera para ti y quieres a alguien que responda, \xE9sa es la diferencia."}]},{h2:"Si tienes un piso, alqu\xEDlalo por temporadas",bloques:[{t:"p",x:"El alquiler temporal es una forma de sacarle rendimiento a un piso sin depender de turistas y sin atarte cinco a\xF1os. Lo anunciamos donde m\xE1s se alquila por meses, buscamos al inquilino, comprobamos que puede pagarlo y llevamos el contrato y el d\xEDa a d\xEDa. T\xFA s\xF3lo cobras."},{t:"p",x:"Si prefieres un inquilino para muchos a\xF1os, lo contamos en [alquiler seguro](/alquiler-seguro)."},{t:"llamada"}]}]},{path:"/alquilar-de-particular-a-particular",antetitulo:"Alquilar por tu cuenta",menu:"De particular a particular",contacto:"tradicional",whatsapp:"Hola, estoy pensando en alquilar mi piso y quiero saber c\xF3mo lo har\xEDais vosotros.",cifras:!1,secciones:[{h2:"Se puede, y mucha gente lo hace",bloques:[{t:"p",x:"Alquilar tu piso de particular a particular es legal y no necesitas a nadie para hacerlo. Te ahorras lo que cobrar\xEDa una agencia y eliges t\xFA a qui\xE9n se lo alquilas. A cambio, todo lo que har\xEDa la agencia lo haces t\xFA, y conviene saber cu\xE1nto es antes de empezar."},{t:"p",x:"Un dato que cambia las cuentas: desde la Ley de Vivienda de 2023, en el alquiler de vivienda los gastos de gesti\xF3n de la inmobiliaria los paga el propietario, no el inquilino. Por eso hay m\xE1s due\xF1os que se plantean hacerlo solos."}]},{h2:"Lo que te toca si lo haces t\xFA",bloques:[{t:"lista",items:["Hacer fotos que se vean bien y escribir un anuncio que diga lo que importa.","Publicarlo en los portales y contestar a todo el que escribe, tambi\xE9n a quien no va a alquilarlo.","Ense\xF1ar el piso, muchas veces a gente que no vuelve a llamar.","Comprobar que el inquilino puede pagar: su contrato de trabajo, sus n\xF3minas, sus referencias.","Redactar el contrato y depositar la fianza donde toca. En Madrid, en la Comunidad.","Cobrar cada mes, y reclamar si un mes no llega.","Atender lo que se rompe, cuando se rompe.","Actualizar la renta, y renovar o terminar el contrato cuando toca."]}]},{h2:"Lo que te ahorras y lo que arriesgas",bloques:[{t:"p",x:"Te ahorras la gesti\xF3n. Lo que arriesgas suele ser una de estas tres cosas: elegir al inquilino con prisa, firmar un contrato que no recoge lo que necesitas o que un problema te pille lejos del piso. No pasan siempre, pero cuando pasan cuestan m\xE1s tiempo y m\xE1s dinero de lo que te ibas a ahorrar."},{t:"p",x:"Si lo haces t\xFA, tres cosas que evitan casi todos los disgustos:"},{t:"lista",items:["Pide los papeles antes de la segunda visita: contrato de trabajo y \xFAltimas n\xF3minas. Elegir bien al inquilino es lo que m\xE1s problemas evita despu\xE9s.","Deja por escrito c\xF3mo est\xE1 el piso al dar las llaves, con fotos y con fecha. Es lo que se mira al devolver la fianza.","Si lo alquilas amueblado, haz un inventario de lo que queda dentro y f\xEDrmalo con el inquilino."]}]},{h2:"Cu\xE1ndo compensa una gestora",bloques:[{t:"p",x:"Si vives lejos del piso, si no tienes tiempo para visitas y llamadas, si prefieres no tratar t\xFA con el inquilino o si es tu primer alquiler y no quieres aprender con tu casa."},{t:"p",x:"En Batuecas, la gesti\xF3n del alquiler de todo el a\xF1o es una cuota fija, desde 50 \u20AC al mes m\xE1s IVA. Buscamos inquilino, comprobamos que puede pagarlo, hacemos el contrato y nos ocupamos de las incidencias mientras dure. Lo contamos entero en [alquiler seguro](/alquiler-seguro). Y si est\xE1s eligiendo gestora, lee antes [c\xF3mo saber si una inmobiliaria es de fiar](/senales-para-saber-si-una-inmobiliaria-es-confiable-y-segura)."},{t:"llamada"}]},{h2:"Y para vender de particular a particular",bloques:[{t:"p",x:"Tambi\xE9n se puede, y aqu\xED el papeleo pesa m\xE1s: nota simple, certificado energ\xE9tico, contrato de arras y notar\xEDa. Tenemos escrito [qu\xE9 es el contrato de arras](/contrato-de-arras-2022-que-es-y-que-debe-incluir) y [cu\xE1nto cuesta vender un piso en Madrid](/cuanto-cuesta-vender-un-piso-en-madrid-en-2026-gastos-impuestos-y-comisiones), con sus gastos y sus impuestos."},{t:"p",x:"Si antes de decidir quieres saber cu\xE1nto vale tu casa, dinos d\xF3nde est\xE1 y te damos un rango de precio, sin compromiso. [Pide la valoraci\xF3n](#contactanos-vender)."}]}]},{path:"/anunciar-alquiler-vacacional",antetitulo:"Alquiler vacacional",menu:"Anunciar tu piso tur\xEDstico",contacto:"turistico",whatsapp:"Hola, quiero anunciar mi piso en alquiler vacacional y que lo llev\xE9is vosotros.",cifras:!0,secciones:[{h2:"Publicar no cuesta nada",bloques:[{t:"p",x:"En las grandes plataformas de alquiler vacacional, anunciar tu piso es gratis. No pagas por publicarlo: pagas una comisi\xF3n cuando entra una reserva, y sale de lo que cobras t\xFA, de lo que paga el hu\xE9sped o de los dos, seg\xFAn la plataforma."},{t:"p",x:"As\xED que la pregunta de verdad no es d\xF3nde anunciarlo gratis, sino d\xF3nde lo va a reservar m\xE1s gente, y qui\xE9n va a llevarlo cuando empiecen las reservas."}]},{h2:"D\xF3nde anunciar tu piso tur\xEDstico",bloques:[{t:"puntos",items:[{t:"Airbnb",d:"La m\xE1s conocida para casas y apartamentos enteros. T\xFA escribes el anuncio y pones las fotos, las normas de la casa y el calendario."},{t:"Booking.com",d:"Tu piso sale en el mismo buscador que los hoteles, y llega a mucho viajero que ya reserva ah\xED todo lo dem\xE1s."},{t:"Vrbo",d:"Pensada para casas de vacaciones enteras, con las familias y los grupos como p\xFAblico principal."},{t:"Hostelworld",d:"Para hostales y habitaciones. Aqu\xED busca sobre todo gente que viaja con poco presupuesto."},{t:"Tu propia web",d:"Sin comisi\xF3n por reserva, pero alguien tiene que llevar a la gente hasta ella. Las casas que gestionamos se reservan tambi\xE9n en la nuestra."}]},{t:"p",x:"Lo que m\xE1s reservas trae es estar en varias a la vez. Lo dif\xEDcil es tener el calendario de todas al d\xEDa para que no se crucen dos reservas en la misma noche."}]},{h2:"Lo que necesitas antes de publicarlo",bloques:[{t:"p",x:"En Madrid, un piso tur\xEDstico tiene que tener sus permisos como vivienda de uso tur\xEDstico y su n\xFAmero de registro, y las plataformas lo piden para publicar el anuncio. Las normas cambian a menudo, as\xED que conviene mirarlas antes de amueblar. Contamos lo \xFAltimo en [las nuevas normas de los pisos tur\xEDsticos en Madrid](/pisos-de-uso-turistico-en-madrid-se-enfrentaran-a-nuevas-normativas)."},{t:"p",x:"Y cuando empiezan las reservas, cada hu\xE9sped tiene que quedar registrado: el parte de viajeros a la polic\xEDa es obligatorio en cada estancia."}]},{h2:"Anunciarlo es lo f\xE1cil",bloques:[{t:"p",x:"Publicar se hace en una tarde. Lo que cuesta es lo que viene despu\xE9s, todos los d\xEDas:"},{t:"lista",items:["Ajustar el precio a la demanda de tu zona, para no quedarte vac\xEDo ni regalarlo.","Contestar a los hu\xE9spedes a cualquier hora y en su idioma.","Limpiar y cambiar la ropa entre una salida y la siguiente entrada.","Revisar que no se ha roto nada y arreglarlo antes del pr\xF3ximo hu\xE9sped.","Estar disponible cuando algo falla a las once de la noche."]}]},{h2:"O que lo publiquemos y lo llevemos nosotros",bloques:[{t:"p",x:"En Batuecas creamos tus anuncios con fotos profesionales y publicamos tu casa a la vez en todas las plataformas y en nuestra web. Todas las reservas caen en el mismo calendario. Ponemos el precio cada d\xEDa, atendemos a los hu\xE9spedes, limpiamos en cada salida y cada mes te mandamos la liquidaci\xF3n con su factura."},{t:"plataformas"},{t:"p",x:"No hay cuota fija: cobramos un porcentaje de cada reserva, el 20 % de las noches m\xE1s IVA en la tarifa que tienen la mayor\xEDa de las casas. Aparte s\xF3lo se pagan las fotos profesionales, 150 \u20AC una vez. Todo el detalle est\xE1 en [gesti\xF3n integral de apartamentos tur\xEDsticos](/gestion-integral-apartamentos-turisticos)."},{t:"p",x:"Si quieres verlo paso a paso, lee [c\xF3mo alquilar tu piso vacacional en Madrid en 3 pasos](/alquila-tu-piso-vacacional-en-madrid-en-3-pasos)."},{t:"llamada"}]}]}],RUTAS_GUIAS=GUIAS.map(g=>g.path);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:"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 Estate 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."},"/barrios":{h1:"Madrid neighbourhoods",texto:"The Madrid neighbourhoods where we have homes, how many in each, what each one is like to stay or live in, and the holiday-let rules. In Spanish."}},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 t3=PANTALLAS[path];if(!t3)throw new Error(`core/paginas: la ruta "${path}" no est\xE1 declarada como pantalla en core/seo.ts`);return t3}var RUTAS_LEGALES=["/aviso-legal","/politica-de-privacidad","/cookies","/terminos-y-condiciones","/accesibilidad"],CORTO={"/blog":"Blog","/gestion":"Propietarios","/barrios":"Barrios"},FUERA_DEL_MENU=["/cuenta","/portal"],EN={"/estancias-cortas":"Short stays","/alquileres":"Long-term rentals","/venta":"For sale","/gestion":"Owners","/reformas":"Renovations","/blog":"Blog","/barrios":"Neighbourhoods","/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)&&!RUTAS_GUIAS.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","/barrios"],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)})),MENU_GUIAS=GUIAS.map(g=>({path:g.path,label:g.menu}));function tituloDe(path){let r=seo.routes.find(x=>x.path===path);if(r===void 0||r.title===void 0)throw new Error(`core/paginas: la ruta "${path}" no declara title en core/seo.ts`);return r.title.replace(/\s*\|\s*Batuecas$/,"")}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,"")}`,TELEFONO_OFICINA="+34 916 68 43 46",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");var CAMPOS_BARRIO=["id","slug","nombre","titulo","distrito","oficial","publicado","orden","pisos","estancias","hostales","alquileres","ventas","mes_desde","venta_desde","valoracion","resenas","foto","vecinos"],CAMPOS_BARRIO_FICHA=["texto","propietarios","normativa","preguntas"],rutaBarrio=slug=>`/barrios/${slug}`;function dondeCae(b){return b.distrito==="Centro"&&b.oficial?`Barrio de ${b.oficial} \xB7 distrito Centro`:b.oficial?b.oficial.charAt(0).toUpperCase()+b.oficial.slice(1):""}var FUENTE_NORMA={texto:"Modificaci\xF3n del Plan General de Madrid para la mejora del uso residencial (Plan RESIDE), aprobada por la Comunidad de Madrid el 27 de agosto de 2025. Normas urban\xEDsticas en el BOCM n.\xBA 226, de 22 de septiembre de 2025 (art. 7.6.3 bis).",url:"https://www.bocm.es/boletin/CM_Orden_BOCM/2025/09/22/BOCM-20250922-47.PDF"};function Footer({url,alojamientos,ciudades,barrios}){return __gh("footer",{style:{background:T.accent,color:"#fff",marginTop:8},"data-gufi-src":"components/Footer.tsx:37"},__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:38"},__gh("div",{"data-gufi-src":"components/Footer.tsx:48"},__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:64"}),__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:75"},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:91"},__gh(Titulo,null,t("Hablamos","Get in touch")),__gh("div",{style:{display:"grid",gap:11},"data-gufi-src":"components/Footer.tsx:93"},__gh("a",{href:"mailto:administracion@batuecas.es",style:{...enlace,...conIcono},"data-gufi-src":"components/Footer.tsx:94"},__gh(import_lucide_react2.Mail,{style:icono}),"administracion@batuecas.es"),__gh("a",{href:"tel:+34692059474",style:{...enlace,...conIcono},"data-gufi-src":"components/Footer.tsx:98"},__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:102"},__gh(import_lucide_react2.MapPin,{style:{...icono,marginTop:3}}),__gh("span",{"data-gufi-src":"components/Footer.tsx:104"},"Calle de las Aguas, 4 (local 3)",__gh("br",{"data-gufi-src":"components/Footer.tsx:106"}),"28005 Madrid")))),__gh("div",{"data-gufi-src":"components/Footer.tsx:113"},__gh(Titulo,null,t("Secciones","Sections")),__gh("div",{style:{display:"grid",gap:9},"data-gufi-src":"components/Footer.tsx:115"},__gh("a",{href:url("/"),style:enlace,"data-gufi-src":"components/Footer.tsx:116"},t("Portada","Home")),SECCIONES.map(m=>__gh("a",{key:m.path,href:url(m.path),style:enlace,"data-gufi-src":"components/Footer.tsx:120"},m.label)))),__gh("div",{"data-gufi-src":"components/Footer.tsx:127"},__gh(Titulo,null,"Legal"),__gh("div",{style:{display:"grid",gap:9},"data-gufi-src":"components/Footer.tsx:129"},MENU_LEGAL.map(m=>__gh("a",{key:m.path,href:url(m.path),style:enlace,"data-gufi-src":"components/Footer.tsx:131"},m.label))))),__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:"0 20px 36px"},"data-gufi-src":"components/Footer.tsx:144"},__gh(Titulo,null,t("Para propietarios","For owners")),__gh("div",{style:{display:"flex",flexWrap:"wrap",gap:"9px 26px"},"data-gufi-src":"components/Footer.tsx:146"},MENU_GUIAS.map(m=>__gh("a",{key:m.path,href:url(m.path),style:enlace,"data-gufi-src":"components/Footer.tsx:148"},m.label)))),barrios.length>0&&__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:"0 20px 36px"},"data-gufi-src":"components/Footer.tsx:157"},__gh(Titulo,null,t("Barrios de Madrid","Madrid neighbourhoods")),__gh("div",{style:{display:"flex",flexWrap:"wrap",gap:"9px 26px"},"data-gufi-src":"components/Footer.tsx:159"},barrios.map(b=>__gh("a",{key:b.slug,href:url(rutaBarrio(b.slug)),style:enlace,"data-gufi-src":"components/Footer.tsx:161"},b.nombre)))),__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:182"},"\xA9 ",new Date().getFullYear()," Batuecas Real Estate 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:199"},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(clave2,n){let o=OBRAS.find(x=>x.clave===clave2);if(o===void 0||o.fotos[n]===void 0)throw new Error(`Foto de obra desconocida: ${clave2} ${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),eur=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"):eur===null?t("Ver disponibilidad","Check availability"):t("Ver alojamiento","View property")),eur===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"},eur)))))}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 mensaje4=[varias?casas>=MAS_DE_20?"Tiene m\xE1s de 20 casas.":`Tiene ${casas} casas.`:"",v.mensaje.trim()].filter(x=>x!=="").join(" ");mensaje4!==""&&(variables.mensaje=mensaje4),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(clave2){let o=OBRAS.find(x=>x.clave===clave2);if(o===void 0)throw new Error(`Obra desconocida en el contacto: ${clave2}`);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=suave2=>{let el=document.getElementById("contactanos");el&&el.scrollIntoView({behavior:suave2?"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 fondo2={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:fondo2}):quieto?__gh("img",{src:medio.poster,alt:"","aria-hidden":"true",sizes:"100vw",style:fondo2,"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:fondo2,"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,pct=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); } ${pct(FUNDIDO)} { opacity: 1; } ${pct(POR_FOTO)} { opacity: 1; } ${pct(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:166"},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:180"},__gh("defs",{"data-gufi-src":"components/Servicios.tsx:187"},__gh("filter",{id:"bq-sv-brillo",x:"-50%",y:"-50%",width:"200%",height:"200%","data-gufi-src":"components/Servicios.tsx:188"},__gh("feGaussianBlur",{stdDeviation:"3.5",result:"b","data-gufi-src":"components/Servicios.tsx:189"}),__gh("feMerge",{"data-gufi-src":"components/Servicios.tsx:190"},__gh("feMergeNode",{in:"b","data-gufi-src":"components/Servicios.tsx:191"}),__gh("feMergeNode",{in:"SourceGraphic","data-gufi-src":"components/Servicios.tsx:192"})))),hilos.d.map((d2,i)=>__gh("g",{key:i,className:`bq-sv-hilo${!hilos.movil&&activo===i?" on":""}`,"data-gufi-src":"components/Servicios.tsx:197"},__gh("path",{d:d2,pathLength:1,className:"bq-sv-base",style:{transitionDelay:`${.2+i*.15}s`},"data-gufi-src":"components/Servicios.tsx:198"}),!hilos.movil&&__gh("path",{d:d2,pathLength:1,className:"bq-sv-luz",filter:"url(#bq-sv-brillo)","data-gufi-src":"components/Servicios.tsx:199"}),visto&&!quieto&&__gh(__gf,null,__gh("path",{d:d2,className:"bq-sv-flujo","data-gufi-src":"components/Servicios.tsx:202"}),(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:204"},__gh("animateMotion",{dur:hilos.movil?"3s":"2.6s",begin:`${1.4+retraso}s`,repeatCount:"indefinite",path:d2,"data-gufi-src":"components/Servicios.tsx:205"}),__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:206"}))))))),__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:216"},!quieto&&__gh(__gf,null,__gh("span",{className:"bq-sv-aura","aria-hidden":"true","data-gufi-src":"components/Servicios.tsx:219"}),__gh("span",{className:"bq-sv-orbita","aria-hidden":"true","data-gufi-src":"components/Servicios.tsx:220"}),__gh("span",{className:"bq-sv-orbita bq-sv-orbita-2","aria-hidden":"true","data-gufi-src":"components/Servicios.tsx:221"})),__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:224"},!quieto&&__gh(__gf,null,__gh("span",{className:"bq-sv-onda","aria-hidden":"true","data-gufi-src":"components/Servicios.tsx:243"}),__gh("span",{className:"bq-sv-onda","aria-hidden":"true",style:{animationDelay:"1.6s"},"data-gufi-src":"components/Servicios.tsx:244"})),__gh("img",{className:"bq-sv-logo",src:LOGO,alt:"Batuecas",style:{width:138,height:"auto",display:"block"},"data-gufi-src":"components/Servicios.tsx:247"}),__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:248"},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:260"},__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:272"},__gh("div",{className:"bq-sv-media",style:{borderRadius:18,overflow:"hidden",flexShrink:0},"data-gufi-src":"components/Servicios.tsx:273"},__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:274"})),__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:276"},__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:277"},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:278"},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:279"},__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:280"},s.captar.label),__gh("a",{href:s.anunciar.href,className:"bq-flecha bq-sv-anunciar",style:ENLACE_SECCION,"data-gufi-src":"components/Servicios.tsx:283"},s.anunciar.label,__gh(import_lucide_react7.ArrowRight,{style:{width:15,height:15}}))))))),__gh("style",{"data-gufi-src":"components/Servicios.tsx:293"},` /* 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; } } `))}var LOGOS=[{nombre:"Airbnb",alto:31,svg:''},{nombre:"Booking.com",alto:23,svg:''},{nombre:"Vrbo",alto:32,svg:''},{nombre:"Hostelworld",alto:19,svg:''},{nombre:"Idealista",alto:30,svg:''}];function Plataformas(){return __gh("ul",{"aria-label":t("Plataformas donde anunciamos","Platforms where we list"),style:{listStyle:"none",margin:"40px auto 0",padding:0,display:"flex",flexWrap:"wrap",justifyContent:"center",alignItems:"center",gap:"1.6em 3em",maxWidth:980,fontSize:"clamp(13px, 1.6vw, 16px)"},"data-gufi-src":"components/Plataformas.tsx:51"},LOGOS.map(l=>__gh("li",{key:l.nombre,style:{display:"flex"},"data-gufi-src":"components/Plataformas.tsx:67"},__gh("img",{src:`data:image/svg+xml;utf8,${encodeURIComponent(l.svg)}`,alt:l.nombre,style:{display:"block",height:`${l.alto/16}em`,width:"auto",filter:"brightness(0)",opacity:.82},"data-gufi-src":"components/Plataformas.tsx:68"}))))}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:104"},__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:122"},__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px`},"data-gufi-src":"sections/portada.tsx:123"},__gh(Mapa,{pisos:estanciasCortas,url}))),__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"sections/portada.tsx:129"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"sections/portada.tsx:130"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/portada.tsx:131"},t("Lo que hacemos","What we do")),__gh("h2",{style:{...TITULO,marginTop:18,fontSize:"clamp(32px, 5vw, 60px)"},"data-gufi-src":"sections/portada.tsx:132"},t("Cuatro cosas.","Four things.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/portada.tsx:133"},t("Y un solo equipo.","And one team."))),__gh("p",{style:{...ENTRADILLA,marginLeft:"auto",marginRight:"auto"},"data-gufi-src":"sections/portada.tsx:135"},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:201"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"sections/portada.tsx:202"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/portada.tsx:203"},t("Gesti\xF3n de alquiler tur\xEDstico","Holiday rental management")),__gh("h2",{style:{...TITULO,marginTop:18},"data-gufi-src":"sections/portada.tsx:204"},t("Nosotros gestionamos tu piso.","We manage your home.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/portada.tsx:206"},t("En todas las plataformas a la vez.","On every platform at once."))),__gh("p",{style:{...ENTRADILLA,marginLeft:"auto",marginRight:"auto"},"data-gufi-src":"sections/portada.tsx:208"},t("Somos la empresa que lleva tu casa en alquiler tur\xEDstico y temporal de principio a fin: la anunciamos en las plataformas de alquiler que m\xE1s reservan y en nuestra web, ponemos el precio cada d\xEDa, atendemos a los hu\xE9spedes y la dejamos limpia para el siguiente. Todas las reservas caen en el mismo calendario y nunca se cruzan. T\xFA solo cobras.","We run your holiday or mid-term rental from start to finish: we list it on the rental platforms that book the most and on our own website, set the price every day, look after the guests and leave it clean for the next ones. Every booking lands on the same calendar, so they never overlap. You just get paid.")),__gh(Plataformas,null),__gh("a",{href:url("/gestion"),className:"bq-flecha",style:{...ENLACE_SECCION,marginTop:32,display:"inline-flex"},"data-gufi-src":"sections/portada.tsx:215"},t("Pon tu piso en gesti\xF3n","Let us manage your home"),__gh(import_lucide_react8.ArrowRight,{style:{width:15,height:15}})))),__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"sections/portada.tsx:223"},__gh("div",{style:cabeceraSeccion,"data-gufi-src":"sections/portada.tsx:224"},__gh("div",{"data-gufi-src":"sections/portada.tsx:225"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/portada.tsx:226"},t("La prueba","The proof")),__gh("h2",{style:{...TITULO,marginTop:18},"data-gufi-src":"sections/portada.tsx:227"},t("Lo que ya gestionamos.","What we already manage.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/portada.tsx:229"},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:232"},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:237"},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:249"},__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px`},"data-gufi-src":"sections/portada.tsx:250"},__gh("div",{style:cabeceraSeccion,"data-gufi-src":"sections/portada.tsx:251"},__gh("div",{"data-gufi-src":"sections/portada.tsx:252"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/portada.tsx:253"},t("Y la otra prueba","More proof")),__gh("h2",{style:{...TITULO,marginTop:18},"data-gufi-src":"sections/portada.tsx:254"},t("Y lo que dejamos as\xED.","And what we leave like this.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/portada.tsx:256"},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:259"},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:264"},obrasPortada.map(o=>__gh("a",{key:o.clave,href:url("/reformas"),className:"bq-card",style:tarjetaObra,"data-gufi-src":"sections/portada.tsx:266"},__gh("div",{className:"bq-media",style:{borderRadius:18},"data-gufi-src":"sections/portada.tsx:267"},__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:268"})),__gh("div",{style:{padding:"14px 4px 0"},"data-gufi-src":"sections/portada.tsx:276"},__gh("div",{style:{fontSize:17,fontWeight:500,letterSpacing:"-0.015em",color:T.ink},"data-gufi-src":"sections/portada.tsx:277"},o.calle),__gh("div",{style:{marginTop:4,fontSize:14,color:T.muted},"data-gufi-src":"sections/portada.tsx:280"},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:297"},` /* 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:420"},t("Tu casa,","Your home,")," ",__gh(Rotativo,null)," ",__gh("span",{style:{color:"rgba(255,255,255,0.62)"},"data-gufi-src":"sections/portada.tsx:422"},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:457"},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=0,id=0,mitad=0,aLaVista=!1,arrancada=!1,paso=ahora=>{if(!aLaVista){id=0;return}let dt=Math.min(ahora-antes,64);antes=ahora,encima.current||ahora=mitad&&(pos-=mitad),el.scrollLeft=pos),id=requestAnimationFrame(paso)},mover=()=>{!arrancada||!aLaVista||id||(antes=performance.now(),pos=el.scrollLeft,id=requestAnimationFrame(paso))},tamano=new ResizeObserver(()=>{mitad=el.scrollWidth/2});tamano.observe(el.firstElementChild??el);let vista=new IntersectionObserver(([e])=>{aLaVista=e.isIntersecting,mover()});vista.observe(el);let arrancar=()=>{arrancada=!0,mover()},tras=()=>{"requestIdleCallback"in window?window.requestIdleCallback(arrancar,{timeout:3e3}):setTimeout(arrancar,1e3)};return document.readyState==="complete"?tras():window.addEventListener("load",tras,{once:!0}),()=>{cancelAnimationFrame(id),tamano.disconnect(),vista.disconnect(),window.removeEventListener("load",tras),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:578"},__gh("div",{style:{display:"flex",gap:20,width:"max-content",paddingInline:10},"data-gufi-src":"sections/portada.tsx:597"},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:603"},__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:623"}),__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:644"},__gh("span",{style:{fontSize:12.5,color:"rgba(255,255,255,0.8)"},"data-gufi-src":"sections/portada.tsx:657"},donde(p)),__gh("span",{style:{fontSize:15,fontWeight:600,letterSpacing:"-0.015em",lineHeight:1.3},"data-gufi-src":"sections/portada.tsx:658"},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 nombreDe3=new Map,cuenta2=new Map;for(let p of pisos){if(p.ciudad===null||p.ciudad.trim()==="")continue;let nombre=p.ciudad.trim(),clave2=nombre.toLowerCase();cuenta2.set(clave2,(cuenta2.get(clave2)??0)+1);let visto=nombreDe3.get(clave2);(visto===void 0||visto===visto.toUpperCase())&&nombreDe3.set(clave2,nombre)}let ciudades=[...cuenta2.entries()].map(([clave2,n])=>({clave:clave2,n,nombre:nombreDe3.get(clave2)}));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 clave2=p.ciudad.trim().toLowerCase(),b=burbujas.get(clave2);b===void 0?burbujas.set(clave2,{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:793"},__gh("div",{style:{gridArea:"texto"},"data-gufi-src":"sections/portada.tsx:809"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/portada.tsx:810"},t("D\xF3nde estamos","Where we are")),__gh("h2",{style:{...TITULO,marginTop:18},"data-gufi-src":"sections/portada.tsx:811"},t("Madrid es la casa.","Madrid is home.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/portada.tsx:813"},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:816"},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:825"},__gh("div",{className:"bq-mapa-lista",style:{marginTop:28,borderTop:`1px solid ${T.lineSoft}`},"data-gufi-src":"sections/portada.tsx:826"},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:830"},__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:855"}),__gh("span",{style:{flex:1},"data-gufi-src":"sections/portada.tsx:865"},c.nombre),__gh("span",{style:{fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/portada.tsx:866"},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:871"},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:878"},__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:879"},__gh("defs",{"data-gufi-src":"sections/portada.tsx:885"},__gh("filter",{id:"bq-brillo",x:"-100%",y:"-100%",width:"300%",height:"300%","data-gufi-src":"sections/portada.tsx:886"},__gh("feGaussianBlur",{stdDeviation:"5","data-gufi-src":"sections/portada.tsx:887"}))),__gh("image",{href:MAPA_ESPANA,x:0,y:0,width:760,height:600,"data-gufi-src":"sections/portada.tsx:890"}),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:893"})}),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:900"},__gh("title",{"data-gufi-src":"sections/portada.tsx:912"},`${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:913"}),__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:914"}),__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:915"}),__gh("circle",{cx:b.x,cy:b.y,r:Math.max(r,16),fill:"transparent","data-gufi-src":"sections/portada.tsx:917"}))}),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:928"})),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:941"},sel.nombre," ",__gh("tspan",{style:{fill:T.muted,fontWeight:500},"data-gufi-src":"sections/portada.tsx:949"},sel.n))),__gh("div",{style:{marginTop:22},"data-gufi-src":"sections/portada.tsx:954"},__gh("div",{style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:12,flexWrap:"wrap"},"data-gufi-src":"sections/portada.tsx:955"},__gh("span",{key:`c-${sel.clave}`,className:"bq-entra",style:{fontSize:15,color:T.ink,fontWeight:500},"data-gufi-src":"sections/portada.tsx:956"},sel.nombre," ",__gh("span",{style:{color:T.muted},"data-gufi-src":"sections/portada.tsx:957"},"\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:959"},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:969"},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:971"},__gh("div",{className:"bq-media",style:{borderRadius:14,aspectRatio:"4 / 3",background:T.surfaceAlt},"data-gufi-src":"sections/portada.tsx:977"},__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:978"})),__gh("div",{style:{marginTop:8,fontSize:13.5,lineHeight:1.35,color:T.ink},"data-gufi-src":"sections/portada.tsx:987"},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_react10=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; } } `))}var import_lucide_react9=require("lucide-react");function Guias({url,sin}){let rutas=[...RUTAS_GUIAS,"/gestion"].filter(r=>r!==sin);return __gh("section",{style:{maxWidth:860,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"components/Guias.tsx:20"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"components/Guias.tsx:21"},__gh("span",{style:ANTETITULO,"data-gufi-src":"components/Guias.tsx:22"},t("Para propietarios","For owners")),__gh("h2",{style:{...TITULO,marginTop:18,fontSize:"clamp(30px, 4.4vw, 48px)"},"data-gufi-src":"components/Guias.tsx:23"},t("Antes de decidir.","Before you decide.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"components/Guias.tsx:25"},t("Lo que conviene saber.","Our guides, in Spanish.")))),__gh("div",{style:{marginTop:"clamp(30px, 4vw, 44px)",background:T.surface,border:`1px solid ${T.lineSoft}`,borderRadius:24,overflow:"hidden"},"data-gufi-src":"components/Guias.tsx:28"},rutas.map((r,i)=>__gh("a",{key:r,href:url(r),className:"bq-guias-fila",style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto",alignItems:"center",gap:18,padding:"20px clamp(18px, 3vw, 28px)",borderTop:i===0?"none":`1px solid ${T.lineSoft}`,textDecoration:"none",color:"inherit"},"data-gufi-src":"components/Guias.tsx:30"},__gh("span",{"data-gufi-src":"components/Guias.tsx:45"},__gh("span",{style:{display:"block",fontSize:17.5,lineHeight:1.35,fontWeight:500,letterSpacing:"-0.01em",color:T.ink},"data-gufi-src":"components/Guias.tsx:46"},tituloDe(r)),__gh("span",{style:{display:"block",marginTop:4,fontSize:14.5,lineHeight:1.5,color:T.body},"data-gufi-src":"components/Guias.tsx:47"},textoDe(r).texto)),__gh(import_lucide_react9.ArrowRight,{className:"bq-guias-flecha",style:{width:17,height:17,color:T.muted}})))),__gh("style",{"data-gufi-src":"components/Guias.tsx:53"},` .bq-guias-fila { transition: background 0.2s ease; } .bq-guias-fila:hover { background: ${T.bg}; } .bq-guias-flecha { transition: transform 0.22s ease, color 0.2s ease; } .bq-guias-fila:hover .bq-guias-flecha { transform: translateX(4px); color: ${T.accent} !important; } @media (prefers-reduced-motion: reduce) { .bq-guias-fila, .bq-guias-flecha { transition: none; } } `))}function PorBarrios({url,barrios,contar,titulo:titulo3,claro,sin}){let filas=barrios.filter(b=>b.publicado&&b.slug!==sin&&contar(b)>0).sort((a,b)=>contar(b)-contar(a)||a.nombre.localeCompare(b.nombre,"es"));if(filas.length===0)return null;let c=claro?{ink:A.ink,muted:A.muted,line:A.hair,peso:600}:{ink:T.ink,muted:T.muted,line:T.lineSoft,peso:360};return __gh("section",{style:{marginTop:"clamp(44px, 6vw, 68px)"},"data-gufi-src":"components/PorBarrios.tsx:39"},__gh("h2",{style:{margin:"0 0 8px",fontSize:"clamp(21px, 2.4vw, 25px)",fontWeight:c.peso,letterSpacing:"-0.022em",color:c.ink},"data-gufi-src":"components/PorBarrios.tsx:40"},titulo3),__gh("ul",{style:{listStyle:"none",margin:0,padding:0,display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(230px, 1fr))",columnGap:28},"data-gufi-src":"components/PorBarrios.tsx:41"},filas.map(b=>__gh("li",{key:b.slug,style:{borderBottom:`1px solid ${c.line}`},"data-gufi-src":"components/PorBarrios.tsx:52"},__gh("a",{href:url(rutaBarrio(b.slug)),className:"bq-barrio-fila",style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:12,padding:"12px 0",textDecoration:"none",color:c.ink,fontSize:15.5,lineHeight:1.4},"data-gufi-src":"components/PorBarrios.tsx:53"},__gh("span",{"data-gufi-src":"components/PorBarrios.tsx:58"},b.nombre),__gh("span",{style:{color:c.muted,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"components/PorBarrios.tsx:59"},contar(b)))))),__gh("a",{href:url("/barrios"),style:{display:"inline-block",marginTop:16,fontSize:14.5,fontWeight:500,color:claro?A.accent:T.accent,textDecoration:"none"},"data-gufi-src":"components/PorBarrios.tsx:64"},t("Todos los barrios","All neighbourhoods")),__gh("style",{"data-gufi-src":"components/PorBarrios.tsx:67"},`.bq-barrio-fila:hover span:first-child { color: ${claro?A.accent:T.accent}; }`))}function EnlaceBarrio({url,barrio}){let otras=Math.max(0,Number(barrio.pisos)-1);return __gh("a",{href:url(rutaBarrio(barrio.slug)),style:{display:"inline-block",marginTop:8,fontSize:15,fontWeight:500,color:A.accent,textDecoration:"none"},"data-gufi-src":"components/PorBarrios.tsx:79"},otras>0?t(`${barrio.titulo??barrio.nombre}: ${otras} casas m\xE1s en el barrio`,`${otras} more homes in ${barrio.nombre}`):t(`C\xF3mo es ${barrio.nombre}`,`About ${barrio.nombre}`))}function Gestion({gufi,url,pisos,ciudades,barrios}){return __gh("div",{"data-gufi-src":"sections/gestion.tsx:77"},__gh(Cifras,{pisos,ciudades}),__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"sections/gestion.tsx:87"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"sections/gestion.tsx:88"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/gestion.tsx:89"},t("Lo que hacemos","What we do")),__gh("h2",{style:{...TITULO,marginTop:18,fontSize:"clamp(32px, 5vw, 60px)"},"data-gufi-src":"sections/gestion.tsx:90"},t("Todo.","Everything.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/gestion.tsx:92"},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:95"},__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:104"},__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px`},"data-gufi-src":"sections/gestion.tsx:105"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"sections/gestion.tsx:106"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/gestion.tsx:107"},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:108"},t("Lo que te quita el sue\xF1o.","What keeps you up at night.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/gestion.tsx:110"},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:113"},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:115"},__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:116"},m.p),__gh("p",{style:{margin:"14px 0 0",fontSize:16,lineHeight:1.6,color:T.body},"data-gufi-src":"sections/gestion.tsx:119"},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:127"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"sections/gestion.tsx:128"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/gestion.tsx:129"},t("Tarifas","Pricing")),__gh("h2",{style:{...TITULO,marginTop:18,fontSize:"clamp(32px, 5vw, 60px)"},"data-gufi-src":"sections/gestion.tsx:130"},t("Cobramos cuando t\xFA cobras.","We get paid when you do.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/gestion.tsx:132"},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:134"},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:141"},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:143"},__gh("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:10},"data-gufi-src":"sections/gestion.tsx:156"},__gh("span",{style:{fontSize:18,fontWeight:600,color:T.ink},"data-gufi-src":"sections/gestion.tsx:157"},tf.nombre),__gh("span",{style:{fontSize:13,color:T.muted},"data-gufi-src":"sections/gestion.tsx:158"},tf.casas)),__gh("div",{style:{marginTop:20,display:"flex",alignItems:"baseline",gap:8,flexWrap:"wrap"},"data-gufi-src":"sections/gestion.tsx:160"},__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:161"},tf.cifra),__gh("span",{style:{fontSize:15,color:T.body},"data-gufi-src":"sections/gestion.tsx:164"},tf.de)),__gh("p",{style:{margin:"16px 0 0",fontSize:15,lineHeight:1.55,color:T.body},"data-gufi-src":"sections/gestion.tsx:166"},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:167"},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:169"},__gh(import_lucide_react10.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:175"},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:186"},EXTRAS.map(x=>__gh("div",{key:x.t,style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:12},"data-gufi-src":"sections/gestion.tsx:199"},__gh("span",{style:{fontSize:14.5,color:T.body},"data-gufi-src":"sections/gestion.tsx:200"},x.t),__gh("span",{style:{fontSize:15,fontWeight:600,color:T.ink,whiteSpace:"nowrap"},"data-gufi-src":"sections/gestion.tsx:201"},x.p))))),__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"sections/gestion.tsx:208"},__gh("div",{className:"bq-revela",style:{textAlign:"center"},"data-gufi-src":"sections/gestion.tsx:209"},__gh("span",{style:ANTETITULO,"data-gufi-src":"sections/gestion.tsx:210"},t("C\xF3mo empezamos","How we start")),__gh("h2",{style:{...TITULO,marginTop:18,fontSize:"clamp(32px, 5vw, 60px)"},"data-gufi-src":"sections/gestion.tsx:211"},t("Cuatro pasos.","Four steps.")," ",__gh("span",{style:APAGADO,"data-gufi-src":"sections/gestion.tsx:212"},t("El resto es cosa nuestra.","The rest is on us.")))),__gh(Pasos,{pasos:PASOS})),__gh("div",{style:{maxWidth:860,margin:"clamp(20px, 3vw, 42px) auto 0",padding:"0 20px"},"data-gufi-src":"sections/gestion.tsx:219"},__gh(PorBarrios,{url,barrios,contar:b=>Number(b.pisos),titulo:t("D\xF3nde gestionamos en Madrid","Where we manage homes in Madrid")})),__gh(Guias,{url,sin:"/gestion"}),__gh("div",{style:{height:AIRE},"data-gufi-src":"sections/gestion.tsx:226"}),__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:231"},` .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(clave2){let o=OBRAS.find(x=>x.clave===clave2);if(o===void 0)throw new Error(`Obra desconocida en /gestion: ${clave2}`);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 en alquiler, 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:305"},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:322"}),__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:330"})),__gh("div",{style:{position:"relative",padding:"clamp(24px, 3vw, 34px)"},"data-gufi-src":"sections/gestion.tsx:336"},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:338"},grande),__gh("div",{style:{fontSize:13,fontWeight:600,color:conFoto?T.dorado:T.accent},"data-gufi-src":"sections/gestion.tsx:342"},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:343"},bloque.titulo),__gh("ul",{style:{listStyle:"none",margin:"16px 0 0",padding:0,display:"grid",gap:10},"data-gufi-src":"sections/gestion.tsx:346"},bloque.items.map(it=>__gh("li",{key:it.t,style:{display:"grid",gridTemplateColumns:"18px 1fr",gap:10},"data-gufi-src":"sections/gestion.tsx:348"},__gh(import_lucide_react10.Check,{style:{width:16,height:16,color:conFoto?"#fff":T.accent,marginTop:3},strokeWidth:2.4}),__gh("span",{"data-gufi-src":"sections/gestion.tsx:350"},__gh("span",{style:{display:"block",fontSize:15.5,fontWeight:600},"data-gufi-src":"sections/gestion.tsx:351"},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:352"},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_react11=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_react11.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_react11.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),corto3=!!(entrada3&&!salida&&tope&&d2>entrada3&&d2<=tope&&noches(entrada3,d2)tocar(d2),onMouseEnter:()=>setEncima(d2),onMouseLeave:()=>setEncima(null),title:corto3?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||corto3||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_react13=require("lucide-react");var import_react11=__toESM(require("react")),import_lucide_react12=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_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/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_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")},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_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==="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_react12.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_react12.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_react13.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_react13.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_react13.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_react13.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_react14=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_react14.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_react14.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_react15=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_react15.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,barrios}){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:82"},__gh("style",{"data-gufi-src":"sections/inmo.tsx:83"},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:94"},__gh("style",{"data-gufi-src":"sections/inmo.tsx:95"},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:100"},__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:101"},__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:102"},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:106"},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:112"},__gh("h3",{style:{margin:0,fontSize:24,fontWeight:600,letterSpacing:"-0.02em",color:A.ink},"data-gufi-src":"sections/inmo.tsx:113"},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:114"},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:115"},t("Ver todos","See all"))):__gh("div",{className:"bx-rejilla","data-gufi-src":"sections/inmo.tsx:120"},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}))),__gh(PorBarrios,{url,barrios,contar:b=>Number(alquiler?b.alquileres:b.ventas),titulo:t("Por barrios de Madrid","By Madrid neighbourhood"),claro:!0}),alquiler&&__gh(ParaPropietarios,{url})))}function ParaPropietarios({url}){return __gh("section",{style:{marginTop:"clamp(56px, 8vw, 96px)",padding:"clamp(36px, 6vw, 64px) clamp(20px, 5vw, 56px)",background:A.alt,borderRadius:28,textAlign:"center"},"data-gufi-src":"sections/inmo.tsx:147"},__gh("span",{style:{fontSize:14,fontWeight:600,color:A.accent},"data-gufi-src":"sections/inmo.tsx:156"},t("Propietarios","Owners")),__gh("h2",{style:{margin:"12px auto 0",maxWidth:820,fontSize:"clamp(28px, 4vw, 44px)",lineHeight:1.08,fontWeight:600,letterSpacing:"-0.03em",color:A.ink},"data-gufi-src":"sections/inmo.tsx:157"},t("\xBFTienes un piso? Lo alquilamos por ti.","Got a flat? We let it for you.")," ",__gh("span",{style:{color:A.muted},"data-gufi-src":"sections/inmo.tsx:159"},t("En todas las plataformas de alquiler temporal a la vez.","On every mid-term rental platform at once."))),__gh("p",{style:{margin:"16px auto 0",maxWidth:640,fontSize:"clamp(16px, 1.6vw, 18px)",lineHeight:1.55,color:A.body},"data-gufi-src":"sections/inmo.tsx:161"},t("Lo anunciamos donde m\xE1s se alquila, buscamos inquilino, comprobamos que puede pagarlo y llevamos el contrato y el d\xEDa a d\xEDa. Por meses o por a\xF1os. T\xFA solo cobras.","We list it where it rents best, find a tenant, check they can pay, and handle the contract and the day to day. By the month or by the year. You just get paid.")),__gh(Plataformas,null),__gh("a",{href:url("/gestion"),className:"bx-boton",style:{...botonVerde,marginTop:36,textDecoration:"none"},"data-gufi-src":"sections/inmo.tsx:168"},t("Pon tu piso en gesti\xF3n","Let us manage your flat")))}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:177"},__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:178"},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:179"},texto),children&&__gh("div",{style:{marginTop:"clamp(26px, 4vw, 40px)"},"data-gufi-src":"sections/inmo.tsx:180"},children))}var import_react19=require("react"),import_lucide_react20=require("lucide-react");var import_react15=__toESM(require("react")),import_lucide_react16=require("lucide-react");var CHATS="batuecas_chats",CONTACTO="batuecas_contacto";function leer2(clave2){try{return JSON.parse(window.localStorage.getItem(clave2)||"null")}catch{return null}}function guardar2(clave2,valor){try{window.localStorage.setItem(clave2,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:126"},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:326"},__gh("header",{style:{padding:"20px 22px 14px",borderBottom:`1px solid ${T.lineSoft}`},"data-gufi-src":"components/Chat.tsx:327"},__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:328"},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:331"},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:393"},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:398"},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:408"},__gh(import_lucide_react16.CalendarCheck,{style:{width:17,height:17,color:T.accent,flexShrink:0,marginTop:1}}),__gh("span",{"data-gufi-src":"components/Chat.tsx:410"},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:423"},__gh("div",{style:{fontSize:14,fontWeight:600,color:T.ink},"data-gufi-src":"components/Chat.tsx:424"},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:426"},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:429"},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:431"},__gh("span",{style:{display:"block",fontSize:11.5,color:i===diaSel?T.accentInk:T.muted,textTransform:"capitalize"},"data-gufi-src":"components/Chat.tsx:432"},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:433"},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:437"},etiquetaDia(dias[diaSel])),__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(70px, 1fr))",gap:6},"data-gufi-src":"components/Chat.tsx:438"},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:440"},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:446"},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:456"},__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:461"},__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:462"}),__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:476"},__gh(import_lucide_react16.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:340"},__gh("div",{style:{position:"absolute",left:-9999,width:1,height:1,overflow:"hidden"},"data-gufi-src":"components/Chat.tsx:341"},__gh("label",{htmlFor:"bq-chat","data-gufi-src":"components/Chat.tsx:342"},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:343"})),conocido?__gh("p",{style:{margin:0,fontSize:14,color:T.body},"data-gufi-src":"components/Chat.tsx:347"},t("Escribes como","Writing as")," ",__gh("strong",{style:{color:T.ink},"data-gufi-src":"components/Chat.tsx:348"},contacto.nombre)," \xB7 ",contacto.email,"."," ",__gh("button",{type:"button",onClick:()=>setCambiar(!0),style:enlace2,"data-gufi-src":"components/Chat.tsx:349"},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:354"})),__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(150px, 1fr))",gap:12},"data-gufi-src":"components/Chat.tsx:356"},__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:358"})),__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:361"})))),!venta&&__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(auto-fit, minmax(130px, 1fr))",gap:12},"data-gufi-src":"components/Chat.tsx:368"},__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:370"})),__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:373"}))),__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:378"})),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:387"},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:494"},__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:495"},__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:512"},mio?hora2:`Batuecas \xB7 ${hora2}`))}function Campo2({etiqueta:etiqueta4,nota:nota2,children}){return __gh("label",{style:{display:"block"},"data-gufi-src":"components/Chat.tsx:521"},__gh("span",{style:{display:"block",marginBottom:6,fontSize:13.5,color:T.body,fontWeight:500},"data-gufi-src":"components/Chat.tsx:522"},etiqueta4,nota2&&__gh("span",{style:{color:T.muted,fontWeight:400},"data-gufi-src":"components/Chat.tsx:524"}," \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:533"},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_react17=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_react17.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_react18=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_react18.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_react18.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_react19=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_react19.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_react19.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_react19.Wifi],[/televisi|\btv\b|smart tv|netflix/i,import_lucide_react19.Tv],[/aire acondicionado|air conditioning/i,import_lucide_react19.Snowflake],[/calefacci|chimenea|heating|fireplace/i,import_lucide_react19.Flame],[/cocina|fogones|horno|lo básico para cocinar|kitchen|stove|oven|cooking/i,import_lucide_react19.CookingPot],[/platos|cubiertos|copas|vajilla|comedor|dishes|glasses|dining/i,import_lucide_react19.Utensils],[/lavadora|lavander|washer|laundr/i,import_lucide_react19.WashingMachine],[/secador|secadora|ventilador|dryer|fan/i,import_lucide_react19.Wind],[/plancha|perchas|armario|tendedero|iron|hangers|clothing|drying rack/i,import_lucide_react19.Shirt],[/cafetera|hervidor|tostadora|coffee|kettle|toaster/i,import_lucide_react19.Coffee],[/frigor|congelador|minibar|refrigerator|fridge|freezer/i,import_lucide_react19.Refrigerator],[/microondas|microwave/i,import_lucide_react19.Microwave],[/ascensor|elevator/i,import_lucide_react19.ArrowUpDown],[/aparcamiento|cargador|parking|ev charger/i,import_lucide_react19.Car],[/piscina|playa|jacuzzi|agua|pool|beach|hot tub|water/i,import_lucide_react19.Waves],[/bañera|bathtub/i,import_lucide_react19.Bath],[/ducha|champú|gel|acondicionador|esencial|shower|shampoo|soap|conditioner|essentials/i,import_lucide_react19.ShowerHead],[/trabajo|escritorio|workspace|laptop/i,import_lucide_react19.Laptop],[/cuna|bebé|niños|trona|familias|crib|baby|children|high chair|family/i,import_lucide_react19.Baby],[/llegada autónoma|llaves|cerradura|entrada independiente|self check-in|lockbox|keypad|lock|private entrance/i,import_lucide_react19.KeyRound],[/detector|extintor|botiquín|seguridad|alarm|extinguisher|first aid|safety/i,import_lucide_react19.ShieldCheck],[/terraza|balcón|tumbonas|vistas|patio|balcony|terrace|loungers|view/i,import_lucide_react19.Sun],[/jardín|patio|garden|backyard/i,import_lucide_react19.Trees],[/gimnasio|gym/i,import_lucide_react19.Dumbbell],[/ropa de cama|almohadas|cortinas|bed linen|pillows|blankets|shades/i,import_lucide_react19.BedDouble],[/mascotas|pets/i,import_lucide_react19.PawPrint],[/estancias largas|long term/i,import_lucide_react19.CalendarDays],[/montaña|mountain/i,import_lucide_react19.Mountain]],iconoDe=nombre=>(ICONOS.find(([re])=>re.test(nombre))??[null,import_lucide_react19.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,barrio}){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:61"},__gh("div",{style:{padding:24,borderRadius:24,border:`1px solid ${A.hair}`,background:A.bg,boxShadow:A.sombra},"data-gufi-src":"sections/inmueble.tsx:62"},precio2>0?__gh("div",{style:{display:"flex",alignItems:"baseline",gap:6,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/inmueble.tsx:64"},__gh("span",{style:{fontSize:28,fontWeight:600,letterSpacing:"-0.025em",color:A.ink},"data-gufi-src":"sections/inmueble.tsx:65"},euros(precio2)),alquiler&&__gh("span",{style:{fontSize:16,color:A.body},"data-gufi-src":"sections/inmueble.tsx:66"},t("al mes","a month"))):__gh("span",{style:{fontSize:20,fontWeight:600,color:A.ink},"data-gufi-src":"sections/inmueble.tsx:69"},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:71"},tipo),__gh("p",{style:{margin:"14px 0 0",fontSize:15,lineHeight:1.5,color:A.body},"data-gufi-src":"sections/inmueble.tsx:72"},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:81"},__gh("style",{"data-gufi-src":"sections/inmueble.tsx:82"},ESTILO_ESTANCIAS),__gh("div",{className:"bx-caja",style:{maxWidth:1240,paddingTop:estrecho?14:26},"data-gufi-src":"sections/inmueble.tsx:83"},__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:84"},__gh(import_lucide_react20.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:90"},__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:95"},__gh("div",{"data-gufi-src":"sections/inmueble.tsx:96"},__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:98"},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:101"},datos.join(" \xB7 "))),__gh(Bloque2,null,__gh("div",{style:{display:"grid",gap:22},"data-gufi-src":"sections/inmueble.tsx:105"},tipo&&__gh(Punto,{icono:import_lucide_react20.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_react20.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_react20.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:124"},caja2)),!estrecho&&__gh("aside",{style:{position:"sticky",top:92},"data-gufi-src":"sections/inmueble.tsx:127"},caja2)),mapa&&__gh("section",{style:{marginTop:40,borderTop:`1px solid ${A.hair}`,padding:"clamp(36px, 5vw, 52px) 0"},"data-gufi-src":"sections/inmueble.tsx:131"},__gh("h2",{style:h2,"data-gufi-src":"sections/inmueble.tsx:132"},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:133"},piso.direccion?`${piso.direccion}, ${donde2}`:donde2),barrio&&__gh(EnlaceBarrio,{url,barrio}),__gh("div",{style:{marginTop:22,borderRadius:A.radio,overflow:"hidden",background:A.alt},"data-gufi-src":"sections/inmueble.tsx:135"},__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:136"}))),vecinos.length>0&&__gh("div",{style:{borderTop:`1px solid ${A.hair}`,paddingBottom:"clamp(40px, 6vw, 80px)"},"data-gufi-src":"sections/inmueble.tsx:142"},__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:163"},__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:164"},__gh("span",{style:{fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/inmueble.tsx:165"},__gh("span",{style:{display:"block",fontSize:17,fontWeight:600,color:A.ink},"data-gufi-src":"sections/inmueble.tsx:166"},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:169"},tipo)),__gh("button",{type:"button",onClick:alChat,className:"bx-boton",style:{...botonVerde,flexShrink:0},"data-gufi-src":"sections/inmueble.tsx:171"},t("Preguntar","Ask")))))}var import_react20=require("react"),import_lucide_react21=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,barrios}){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 dos2=porPeso.filter(p=>p.tipo!=="hostal"&&Number(p.capacidad)>0&&Number(p.capacidad)<=2);return dos2.length>=4&&out.push({titulo:t("Para dos","For two"),pisos:dos2.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:188"},__gh("style",{"data-gufi-src":"sections/estancias.tsx:189"},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:191"},__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:192"},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:193"},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:199"},__gh("span",{style:{flexShrink:0,width:7,height:7,borderRadius:"50%",background:A.accent,transform:"translateY(-1px)"},"data-gufi-src":"sections/estancias.tsx:200"}),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:204"},__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:214"},__gh("div",{className:"bx-caja",style:{display:"flex",alignItems:"center",gap:16},"data-gufi-src":"sections/estancias.tsx:215"},__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:216"},[["",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:232"},c||t("Todos los destinos","All destinations")," ",__gh("span",{style:{color:A.muted,fontWeight:400,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/estancias.tsx:251"},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:256"},__gh(import_lucide_react21.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:260"},nFiltros)))),__gh("main",{className:"bx-caja",style:{paddingBottom:"clamp(70px, 9vw, 120px)"},"data-gufi-src":"sections/estancias.tsx:266"},error!==""&&__gh("p",{style:{margin:"24px 0 0",fontSize:15,color:A.body},"data-gufi-src":"sections/estancias.tsx:267"},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:271"},__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:272"},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:281"},conFechas&&!buscando&&__gh("span",{style:{fontSize:15,color:A.muted},"data-gufi-src":"sections/estancias.tsx:283"},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:287"},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:293"},__gh("h3",{style:{margin:0,fontSize:24,fontWeight:600,letterSpacing:"-0.02em",color:A.ink},"data-gufi-src":"sections/estancias.tsx:294"},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:295"},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:298"},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:313"},__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:314"},t("Todos los alojamientos","All places")," ",__gh("span",{style:{color:A.muted,fontWeight:500},"data-gufi-src":"sections/estancias.tsx:315"},delSitio.length)),__gh(Rejilla,{pisos:ordenado,vistos,onMas:()=>setVistos(v=>v+DE_A),tarjeta})),__gh(PorBarrios,{url,barrios,contar:b=>Number(b.estancias),titulo:t("Por barrios de Madrid","By Madrid neighbourhood"),claro:!0}))),__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:331"},__gh("button",{type:"button",onClick:()=>setFiltros(SIN_FILTROS),style:borrar,"data-gufi-src":"sections/estancias.tsx:332"},t("Quitar filtros","Clear filters")),__gh("button",{type:"button",onClick:()=>setVerFiltros(!1),className:"bx-boton",style:botonVerde,"data-gufi-src":"sections/estancias.tsx:335"},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:354"},__gh("span",{"data-gufi-src":"sections/estancias.tsx:355"},__gh("span",{style:{display:"block",fontSize:17,fontWeight:600,color:A.ink},"data-gufi-src":"sections/estancias.tsx:356"},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:357"},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:369"},pisos.slice(0,vistos).map(p=>tarjeta(p))),pisos.length>vistos&&__gh("div",{style:{marginTop:44,textAlign:"center"},"data-gufi-src":"sections/estancias.tsx:371"},__gh("p",{style:{margin:"0 0 14px",fontSize:15,color:A.muted},"data-gufi-src":"sections/estancias.tsx:372"},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:375"},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:386"},__gh("div",{style:{fontSize:17,fontWeight:600,color:A.ink},"data-gufi-src":"sections/estancias.tsx:387"},titulo3),nota2&&__gh("div",{style:{marginTop:3,fontSize:14.5,color:A.muted},"data-gufi-src":"sections/estancias.tsx:388"},nota2),__gh("div",{style:{marginTop:14,display:"flex",flexWrap:"wrap",gap:8},"data-gufi-src":"sections/estancias.tsx:389"},opciones.map(([v,t3])=>__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:391"},t3))))}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:418"},__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:425"}))}var import_react24=require("react"),import_lucide_react24=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"),numero2=v("telefono").replace(/[\s\-.]/g,"");if(!(prefijo==="+34"?/^[6789]\d{8}$/.test(numero2):/^\d{6,15}$/.test(numero2)))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:numero2,...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"),frase2=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"},frase2))),__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_react22.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_react22.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_react22.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)(""),[mensaje4,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(mensaje4.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:mensaje4,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_react23.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:mensaje4,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_react23.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,barrio}){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:116"},__gh("style",{"data-gufi-src":"sections/estancia.tsx:117"},ESTILO_ESTANCIAS+ESTILO_FICHA),__gh("div",{className:"bx-caja",style:{maxWidth:1240,paddingTop:estrecho?14:26},"data-gufi-src":"sections/estancia.tsx:118"},__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:119"},__gh(import_lucide_react24.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:125"},__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:131"},__gh("div",{"data-gufi-src":"sections/estancia.tsx:132"},__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:134"},queEs(piso)),datos.length>0&&__gh("p",{style:{margin:"6px 0 0",fontSize:16.5,color:A.body},"data-gufi-src":"sections/estancia.tsx:135"},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:137"},__gh("span",{"data-gufi-src":"sections/estancia.tsx:138"},__gh("span",{style:{display:"block",fontSize:17,fontWeight:600},"data-gufi-src":"sections/estancia.tsx:139"},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:140"},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:142"},__gh("span",{style:{textAlign:"center"},"data-gufi-src":"sections/estancia.tsx:143"},__gh("span",{style:{display:"block",fontSize:20,fontWeight:600},"data-gufi-src":"sections/estancia.tsx:144"},nota(Number(piso.valoracion))),__gh(Estrellas,null)),__gh("span",{style:{width:1,height:36,background:A.hair},"data-gufi-src":"sections/estancia.tsx:147"}),__gh("span",{style:{textAlign:"center"},"data-gufi-src":"sections/estancia.tsx:148"},__gh("span",{style:{display:"block",fontSize:20,fontWeight:600},"data-gufi-src":"sections/estancia.tsx:149"},piso.resenas),__gh("span",{style:{display:"block",fontSize:12,color:A.muted},"data-gufi-src":"sections/estancia.tsx:150"},t("rese\xF1as","reviews")))))),d2&&__gh(Bloque2,null,__gh("div",{style:{display:"grid",gap:22},"data-gufi-src":"sections/estancia.tsx:159"},autonoma&&__gh(Punto,{icono:import_lucide_react24.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_react24.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_react24.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_react24.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:176"},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:178"},r.camas.some(x=>/sofá|sofa|couch/i.test(x.tipo))?__gh(import_lucide_react24.Sofa,{style:icono2}):__gh(import_lucide_react24.BedDouble,{style:icono2}),__gh("div",{style:{marginTop:14,fontSize:16,fontWeight:600,color:A.ink},"data-gufi-src":"sections/estancia.tsx:180"},r.nombre),__gh("div",{style:{marginTop:4,fontSize:14.5,lineHeight:1.45,color:A.muted},"data-gufi-src":"sections/estancia.tsx:181"},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:195"},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:205"},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:208"},"Borrar fechas"))),!estrecho&&__gh("aside",{style:{position:"sticky",top:92},"data-gufi-src":"sections/estancia.tsx:215"},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:221"},__gh("h2",{style:h2,"data-gufi-src":"sections/estancia.tsx:222"},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:223"},barrio?`${barrio.nombre}, ${donde2}`:donde2),barrio&&__gh(EnlaceBarrio,{url,barrio}),__gh("div",{style:{marginTop:22,borderRadius:A.radio,overflow:"hidden",background:A.alt},"data-gufi-src":"sections/estancia.tsx:225"},__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:226"})),zonaTexto&&__gh("div",{style:{marginTop:26,maxWidth:760},"data-gufi-src":"sections/estancia.tsx:229"},__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:239"},__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:255"},__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:256"},__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:257"},__gh("span",{style:{display:"block",fontSize:16,fontWeight:600,color:A.ink},"data-gufi-src":"sections/estancia.tsx:258"},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:261"},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:265"},"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:291"},__gh("h2",{style:{...h2,display:"flex",alignItems:"center",gap:10,fontSize:"clamp(24px, 2.8vw, 28px)"},"data-gufi-src":"sections/estancia.tsx:292"},__gh(import_lucide_react24.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:296"},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:298"},apartados.map(([k,t3],n)=>__gh("div",{key:k,style:{padding:"18px 18px 20px",borderLeft:n===0?"none":`1px solid ${A.hair}`},"data-gufi-src":"sections/estancia.tsx:300"},__gh("div",{style:{fontSize:14.5,color:A.body},"data-gufi-src":"sections/estancia.tsx:301"},t3),__gh("div",{style:{marginTop:6,fontSize:19,fontWeight:600,color:A.ink,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/estancia.tsx:302"},nota(d2.notas[k])),__gh("div",{style:{marginTop:10,height:4,borderRadius:2,background:A.hair,overflow:"hidden"},"data-gufi-src":"sections/estancia.tsx:303"},__gh("div",{style:{width:`${d2.notas[k]/5*100}%`,height:"100%",background:A.ink},"data-gufi-src":"sections/estancia.tsx:304"}))))),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:311"},d2.opiniones.map((o,n)=>__gh("figure",{key:n,style:{margin:0},"data-gufi-src":"sections/estancia.tsx:313"},__gh("figcaption",{style:{display:"flex",alignItems:"center",gap:12},"data-gufi-src":"sections/estancia.tsx:314"},__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:315"},o.nombre.charAt(0).toLocaleUpperCase("es-ES")),__gh("span",{"data-gufi-src":"sections/estancia.tsx:316"},__gh("span",{style:{display:"block",fontSize:16,fontWeight:600,color:A.ink},"data-gufi-src":"sections/estancia.tsx:317"},o.nombre),__gh("span",{style:{display:"block",fontSize:14,color:A.muted},"data-gufi-src":"sections/estancia.tsx:318"},mes(o.fecha)))),__gh("blockquote",{style:{margin:"12px 0 0"},"data-gufi-src":"sections/estancia.tsx:321"},__gh(Desplegable,{texto:o.texto,lineas:4}))))))}function Normas({d:d2,capacidad}){let filas=[];return d2.entrada&&filas.push([import_lucide_react24.Clock,t(`Llegada a partir de las ${d2.entrada}`,`Check-in from ${d2.entrada}`)]),d2.salida&&filas.push([import_lucide_react24.DoorOpen,t(`Salida antes de las ${d2.salida}`,`Check-out before ${d2.salida}`)]),capacidad!==null&&filas.push([import_lucide_react24.Check,t(`Como mucho ${capacidad} ${capacidad===1?"hu\xE9sped":"hu\xE9spedes"}`,`${capacidad} ${capacidad===1?"guest":"guests"} maximum`)]),filas.push([import_lucide_react24.PawPrint,d2.mascotas?t("Se admiten mascotas","Pets allowed"):t("Sin mascotas","No pets")]),filas.push([import_lucide_react24.Cigarette,d2.fumar?t("Se puede fumar","Smoking allowed"):t("No se puede fumar","No smoking")]),filas.push([import_lucide_react24.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_react24.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:342"},__gh("h2",{style:h2,"data-gufi-src":"sections/estancia.tsx:343"},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:344"},filas.map(([Icono,t3])=>__gh("li",{key:t3,style:{display:"flex",alignItems:"center",gap:14,fontSize:16,color:A.ink},"data-gufi-src":"sections/estancia.tsx:346"},__gh(Icono,{style:{...icono2,width:22,height:22,flexShrink:0},strokeWidth:1.6}),t3))))}function Estrellas(){return __gh("span",{style:{display:"inline-flex",gap:1},"data-gufi-src":"sections/estancia.tsx:358"},[0,1,2,3,4].map(n=>__gh(import_lucide_react24.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_react25=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_react25.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_react25.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_react25.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)(""),[mensaje4,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:mensaje4}),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_react25.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_react25.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:mensaje4,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_react25.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=__toESM(require("react")),import_lucide_react41=require("lucide-react");var import_react26=__toESM(require("react"));var import_framer_motion=require("framer-motion"),import_lucide_react26=require("lucide-react");var INK="#1d1d1f",INK_2="#48484a",MUTED="#86868b",FAINT="#aeaeb2",HAIRLINE="#e5e5e7",FILL="rgba(118,118,128,0.12)",ACCENT="#635BFF",RADIO=14,SHADOW_CARD="0 1px 2px rgba(16,24,40,0.04)",SHADOW_PICK="0 3px 8px rgba(0,0,0,0.12), 0 3px 1px rgba(0,0,0,0.04)",EASE=[.22,1,.36,1],SERIE="#635BFF",SERIE_2="#34c759",SERIE_GRIS="#c7c7cc";function Punto2({tono,color}){let c=color||{ok:"#34c759",aviso:"#ff9f0a",mal:"#ff3b30",info:ACCENT,mudo:"#c7c7cc"}[tono||"mudo"];return __gh("span",{"aria-hidden":!0,style:{width:7,height:7,borderRadius:99,background:c,flexShrink:0,display:"inline-block"},"data-gufi-src":"portal/kit.tsx:41"})}function Tarjeta3({children,style}){return __gh("div",{style:{background:"#fff",borderRadius:RADIO,border:`1px solid ${HAIRLINE}`,boxShadow:SHADOW_CARD,overflow:"hidden",minWidth:0,...style},"data-gufi-src":"portal/kit.tsx:45"},children)}function Grupo({titulo:titulo3,cuenta:cuenta2,sub,derecha,pie,children,style,llena}){return __gh("section",{style:{minWidth:0,display:"flex",flexDirection:"column",...style},"data-gufi-src":"portal/kit.tsx:56"},titulo3||derecha?__gh("header",{style:{display:"flex",alignItems:"flex-end",gap:12,padding:"0 4px 8px",minHeight:26},"data-gufi-src":"portal/kit.tsx:58"},__gh("div",{style:{flex:1,minWidth:0},"data-gufi-src":"portal/kit.tsx:59"},titulo3?__gh("h3",{style:{fontSize:15,fontWeight:600,letterSpacing:"-0.3px",color:INK,margin:0},"data-gufi-src":"portal/kit.tsx:61"},titulo3,cuenta2!=null?__gh("span",{style:{color:FAINT,fontWeight:500,marginLeft:8,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/kit.tsx:63"},numero(cuenta2)):null):null,sub?__gh("p",{style:{fontSize:12.5,color:MUTED,margin:"2px 0 0",lineHeight:1.45},"data-gufi-src":"portal/kit.tsx:66"},sub):null),derecha?__gh("div",{style:{display:"flex",alignItems:"center",gap:8,flexShrink:0},"data-gufi-src":"portal/kit.tsx:68"},derecha):null):null,__gh(Tarjeta3,{style:llena?{flex:1,display:"flex",flexDirection:"column"}:void 0},children),pie?__gh("p",{style:{fontSize:12,color:MUTED,margin:"7px 4px 0",lineHeight:1.45},"data-gufi-src":"portal/kit.tsx:72"},pie):null)}function Fila2({lead,titulo:titulo3,sub,valor,valorSub,onClick,primera,elegida}){return __gh("div",{role:onClick?"button":void 0,tabIndex:onClick?0:void 0,onClick,onKeyDown:onClick?e=>{e.key==="Enter"&&onClick()}:void 0,style:{display:"flex",alignItems:"center",paddingLeft:16,cursor:onClick?"pointer":void 0,background:elegida?"rgba(99,91,255,0.05)":void 0},"data-gufi-src":"portal/kit.tsx:83"},lead?__gh("span",{style:{marginRight:12,display:"flex",flexShrink:0},"data-gufi-src":"portal/kit.tsx:86"},lead):null,__gh("span",{style:{flex:1,minWidth:0,display:"flex",alignItems:"center",gap:12,padding:"9px 16px 9px 0",minHeight:52,borderTop:primera?"none":`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/kit.tsx:87"},__gh("span",{style:{flex:1,minWidth:0},"data-gufi-src":"portal/kit.tsx:88"},__gh("span",{style:{display:"block",fontSize:13.5,fontWeight:500,color:INK,overflowWrap:"anywhere"},"data-gufi-src":"portal/kit.tsx:89"},titulo3),sub?__gh("span",{style:{display:"block",fontSize:12,color:MUTED,marginTop:1},"data-gufi-src":"portal/kit.tsx:90"},sub):null),valor!=null?__gh("span",{style:{textAlign:"right",fontVariantNumeric:"tabular-nums",flexShrink:0,maxWidth:"45%"},"data-gufi-src":"portal/kit.tsx:93"},__gh("span",{style:{display:"block",fontSize:13,fontWeight:600,color:INK},"data-gufi-src":"portal/kit.tsx:94"},valor),valorSub?__gh("span",{style:{display:"block",fontSize:11.5,color:MUTED},"data-gufi-src":"portal/kit.tsx:95"},valorSub):null):null,onClick?__gh("span",{"aria-hidden":!0,style:{color:"#c7c7cc",fontSize:18,lineHeight:1},"data-gufi-src":"portal/kit.tsx:98"},"\u203A"):null))}function Cifras2({children,columnas=4}){return __gh(Tarjeta3,null,__gh("div",{className:"k-cifras",style:{display:"grid",gridTemplateColumns:`repeat(${columnas}, minmax(0, 1fr))`,gap:1,background:HAIRLINE},"data-gufi-src":"portal/kit.tsx:108"},children))}function Cifra2({etiqueta:etiqueta4,valor,sub,tono,onClick,elegida}){let dentro=__gh(__gf,null,__gh("div",{style:{display:"flex",alignItems:"center",gap:7,fontSize:12,color:MUTED,minWidth:0},"data-gufi-src":"portal/kit.tsx:118"},tono?__gh(Punto2,{tono}):null,__gh("span",{style:{flex:1,minWidth:0},"data-gufi-src":"portal/kit.tsx:120"},etiqueta4),onClick?__gh("span",{"aria-hidden":!0,style:{color:"#c7c7cc",fontSize:16,lineHeight:1},"data-gufi-src":"portal/kit.tsx:121"},"\u203A"):null),__gh("div",{className:"k-cifra-v",style:{fontSize:26,fontWeight:600,color:INK,letterSpacing:"-0.5px",fontVariantNumeric:"tabular-nums",marginTop:4,lineHeight:1.15},"data-gufi-src":"portal/kit.tsx:123"},valor),sub?__gh("div",{style:{fontSize:12,color:MUTED,marginTop:3,lineHeight:1.35},"data-gufi-src":"portal/kit.tsx:124"},sub):null,elegida?__gh("span",{"aria-hidden":!0,style:{position:"absolute",left:16,right:16,bottom:0,height:2,borderRadius:99,background:ACCENT},"data-gufi-src":"portal/kit.tsx:125"}):null),estilo={position:"relative",background:"#fff",padding:"14px 16px",minWidth:0,textAlign:"left",border:"none",fontFamily:"inherit",display:"block",width:"100%",boxSizing:"border-box",color:"inherit",cursor:onClick?"pointer":void 0};return onClick?__gh("button",{type:"button",onClick,"aria-pressed":elegida,style:estilo,"data-gufi-src":"portal/kit.tsx:129"},dentro):__gh("div",{style:estilo,"data-gufi-src":"portal/kit.tsx:129"},dentro)}function Segmentado({id,opciones,valor,onCambio}){return __gh("div",{style:{display:"inline-flex",background:FILL,borderRadius:9,padding:2,gap:0,maxWidth:"100%",overflowX:"auto",scrollbarWidth:"none"},"data-gufi-src":"portal/kit.tsx:137"},opciones.map(o=>{let on=o.v===valor;return __gh("button",{key:o.v,type:"button",onClick:()=>onCambio(o.v),style:{position:"relative",border:"none",background:"transparent",padding:"5px 12px",fontSize:13,fontWeight:on?600:500,color:INK,cursor:"pointer",whiteSpace:"nowrap",fontFamily:"inherit",borderRadius:7},"data-gufi-src":"portal/kit.tsx:141"},on?__gh(import_framer_motion.motion.span,{layoutId:`seg-${id}`,transition:{duration:.28,ease:EASE},style:{position:"absolute",inset:0,background:"#fff",borderRadius:7,boxShadow:SHADOW_PICK}}):null,__gh("span",{style:{position:"relative"},"data-gufi-src":"portal/kit.tsx:144"},o.t,o.n!=null?__gh("span",{style:{color:FAINT,fontWeight:500,marginLeft:6},"data-gufi-src":"portal/kit.tsx:144"},numero(o.n)):null))}))}function Buscador2({valor,onCambio,placeholder,ancho}){return __gh("label",{style:{display:"flex",alignItems:"center",gap:7,background:FILL,borderRadius:10,padding:"0 10px",height:34,width:ancho||260,maxWidth:"100%",boxSizing:"border-box"},"data-gufi-src":"portal/kit.tsx:155"},__gh(import_lucide_react26.Search,{size:15,color:MUTED,"aria-hidden":!0}),__gh("input",{value:valor,onChange:e=>onCambio(e.target.value),placeholder:placeholder||"Buscar",style:{flex:1,minWidth:0,border:"none",outline:"none",background:"transparent",fontSize:13.5,color:INK,fontFamily:"inherit"},"data-gufi-src":"portal/kit.tsx:157"}),valor?__gh("button",{type:"button","aria-label":"Vaciar",onClick:()=>onCambio(""),style:{border:"none",background:"transparent",padding:0,display:"flex",cursor:"pointer",color:MUTED},"data-gufi-src":"portal/kit.tsx:159"},__gh(import_lucide_react26.X,{size:14})):null)}function FilaMas({quedan,tanda=40,onClick}){return quedan<=0?null:__gh("button",{type:"button",onClick,style:{display:"block",width:"100%",border:"none",borderTop:`1px solid ${HAIRLINE}`,background:"#fff",padding:"13px 16px",fontSize:13.5,fontWeight:500,color:ACCENT,cursor:"pointer",textAlign:"left",fontFamily:"inherit"},"data-gufi-src":"portal/kit.tsx:168"},"Ver ",numero(Math.min(tanda,quedan))," m\xE1s",__gh("span",{style:{color:FAINT,marginLeft:8},"data-gufi-src":"portal/kit.tsx:169"},"de ",numero(quedan)))}function Vacio2({titulo:titulo3,texto}){return __gh("div",{style:{padding:"44px 20px",textAlign:"center"},"data-gufi-src":"portal/kit.tsx:177"},__gh("div",{style:{fontSize:15,fontWeight:600,color:INK},"data-gufi-src":"portal/kit.tsx:178"},titulo3),texto?__gh("div",{style:{fontSize:13,color:MUTED,marginTop:4,lineHeight:1.5,maxWidth:460,marginLeft:"auto",marginRight:"auto"},"data-gufi-src":"portal/kit.tsx:179"},texto):null)}function Aviso2({titulo:titulo3,texto}){return __gh(Tarjeta3,null,__gh("div",{style:{display:"flex",gap:10,alignItems:"flex-start",padding:"14px 16px"},"data-gufi-src":"portal/kit.tsx:188"},__gh(import_lucide_react26.AlertTriangle,{size:16,color:"#ff9f0a",style:{flexShrink:0,marginTop:1}}),__gh("div",{style:{minWidth:0},"data-gufi-src":"portal/kit.tsx:190"},__gh("div",{style:{fontSize:13.5,fontWeight:600,color:INK},"data-gufi-src":"portal/kit.tsx:191"},titulo3),texto?__gh("div",{style:{fontSize:12.5,color:MUTED,marginTop:2,lineHeight:1.45,overflowWrap:"anywhere"},"data-gufi-src":"portal/kit.tsx:192"},texto):null)))}function FilasCargando({n=6}){return __gh("div",{"data-gufi-src":"portal/kit.tsx:202"},Array.from({length:n},(_,i)=>__gh("div",{key:i,style:{display:"flex",alignItems:"center",gap:12,padding:"0 16px",height:52,borderTop:i?`1px solid ${HAIRLINE}`:"none"},"data-gufi-src":"portal/kit.tsx:204"},__gh("span",{className:"k-esqueleto",style:{width:28,height:28,borderRadius:8},"data-gufi-src":"portal/kit.tsx:205"}),__gh("span",{style:{flex:1},"data-gufi-src":"portal/kit.tsx:206"},__gh("span",{className:"k-esqueleto",style:{display:"block",width:`${40+i*17%35}%`,height:11,borderRadius:6},"data-gufi-src":"portal/kit.tsx:206"})),__gh("span",{className:"k-esqueleto",style:{width:64,height:11,borderRadius:6},"data-gufi-src":"portal/kit.tsx:207"}))))}var MARGEN={left:0,right:8,top:10,bottom:0},REJILLA={stroke:"#f2f2f4",vertical:!1},EJE={tick:{fontSize:11,fill:FAINT},tickLine:!1,axisLine:!1,tickMargin:8},CURSOR={stroke:"#d1d1d6",strokeWidth:1},CURSOR_BARRA={fill:"rgba(118,118,128,0.08)"},PUNTO_ACTIVO=color=>({r:4.5,fill:"#fff",stroke:color,strokeWidth:2});function degradado(id,color,arriba=.22,abajo=0){return __gh("linearGradient",{key:id,id,x1:"0",y1:"0",x2:"0",y2:"1","data-gufi-src":"portal/kit.tsx:238"},__gh("stop",{offset:"0%",stopColor:color,stopOpacity:arriba,"data-gufi-src":"portal/kit.tsx:239"}),__gh("stop",{offset:"100%",stopColor:color,stopOpacity:abajo,"data-gufi-src":"portal/kit.tsx:240"}))}function Globo({active,payload,titulo:titulo3,filas}){if(!active||!payload||!payload.length||!payload[0].payload)return null;let p=payload[0].payload;return __gh("div",{style:{background:"rgba(255,255,255,0.97)",borderRadius:12,boxShadow:"0 8px 28px rgba(0,0,0,0.12), 0 0 0 0.5px rgba(0,0,0,0.06)",padding:"10px 12px",minWidth:180},"data-gufi-src":"portal/kit.tsx:257"},__gh("div",{style:{fontSize:12,fontWeight:600,color:INK,marginBottom:6},"data-gufi-src":"portal/kit.tsx:258"},titulo3(p)),filas(p).map((f,i)=>__gh("div",{key:i,style:{display:"flex",alignItems:"center",gap:8,fontSize:12.5,color:INK_2,padding:"2px 0"},"data-gufi-src":"portal/kit.tsx:260"},f.logo?f.logo:__gh("span",{style:{width:8,height:8,borderRadius:4,background:f.color||SERIE_GRIS,flexShrink:0},"data-gufi-src":"portal/kit.tsx:261"}),__gh("span",{style:{flex:1},"data-gufi-src":"portal/kit.tsx:262"},f.texto),__gh("span",{style:{fontWeight:600,color:INK,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/kit.tsx:263"},f.valor))))}function Leyenda({series}){return __gh("div",{style:{display:"flex",gap:16,flexWrap:"wrap"},"data-gufi-src":"portal/kit.tsx:273"},series.map((s,i)=>__gh("span",{key:i,style:{display:"inline-flex",alignItems:"center",gap:6,fontSize:12.5,color:INK_2},"data-gufi-src":"portal/kit.tsx:275"},s.logo?s.logo:__gh("span",{style:{width:8,height:8,borderRadius:4,background:s.color},"data-gufi-src":"portal/kit.tsx:276"}),s.texto)))}function trazo(nombre,re,ultimo){let l=LOGOS.find(x=>x.nombre===nombre);if(!l)throw new Error(`Falta el logo de ${nombre} en components/Plataformas.tsx`);let todos=Array.from(l.svg.matchAll(re)).map(m=>m[1]);if(!todos.length)throw new Error(`El logo de ${nombre} ya no trae el trazo que usa el portal`);return ultimo?todos[todos.length-1]:todos[0]}var AIRBNB=trazo("Airbnb",/COLOR_CANAL[c]||"#c7c7cc",esPropio=c=>c==="Directo"||c==="Web";function LogoCanal({canal,tam=22}){let r=Math.round(tam*.26),caja2={width:tam,height:tam,borderRadius:r,flexShrink:0,display:"inline-flex",alignItems:"center",justifyContent:"center",overflow:"hidden"};if(canal==="Airbnb")return __gh("span",{style:{...caja2,background:"#fff",boxShadow:`inset 0 0 0 1px ${HAIRLINE}`},title:"Airbnb","data-gufi-src":"portal/kit.tsx:313"},__gh("svg",{viewBox:"-6 -4 105 108",width:tam*.78,height:tam*.78,"aria-label":"Airbnb","data-gufi-src":"portal/kit.tsx:314"},__gh("path",{fill:"#FF5A5F",d:AIRBNB,"data-gufi-src":"portal/kit.tsx:314"})));if(canal==="Booking.com"||canal==="Booking")return __gh("span",{style:{...caja2,background:"#003580"},title:"Booking.com","data-gufi-src":"portal/kit.tsx:318"},__gh("svg",{viewBox:"-12 -2 92 92",width:tam,height:tam,"aria-label":"Booking.com","data-gufi-src":"portal/kit.tsx:319"},__gh("g",{transform:"translate(-41.273811,-420.31721)","data-gufi-src":"portal/kit.tsx:320"},__gh("path",{fill:"#fff",d:BOOKING_B,"data-gufi-src":"portal/kit.tsx:320"})),__gh("circle",{cx:"64",cy:"61",r:"8.5",fill:"#499fdd","data-gufi-src":"portal/kit.tsx:321"})));if(canal==="Hostelworld")return __gh("span",{style:{...caja2,background:"#fff"},title:"Hostelworld","data-gufi-src":"portal/kit.tsx:326"},__gh("svg",{viewBox:"0 0 96.43 96",width:tam,height:tam,"aria-label":"Hostelworld","data-gufi-src":"portal/kit.tsx:327"},__gh("path",{fill:"#F25621",fillRule:"evenodd",clipRule:"evenodd",d:HOSTELWORLD,"data-gufi-src":"portal/kit.tsx:327"})));if(canal==="Vrbo")return __gh("span",{style:{...caja2,background:"#245abc",color:"#fff",fontSize:tam*.5,fontWeight:700},title:"Vrbo","data-gufi-src":"portal/kit.tsx:330"},"V");let Icono=canal==="Web"?import_lucide_react26.Globe:canal==="Directo"?import_lucide_react26.Phone:canal==="Propietario"?import_lucide_react26.KeyRound:null;return __gh("span",{style:{...caja2,background:FILL,color:INK_2},title:canal,"data-gufi-src":"portal/kit.tsx:333"},Icono?__gh(Icono,{size:Math.round(tam*.56),strokeWidth:2}):__gh(Punto2,{tono:"mudo"}))}var ENTERO=new Intl.NumberFormat("es-ES",{maximumFractionDigits:0,useGrouping:"always"}),numero=n=>ENTERO.format(Number(n)||0),EUROS=new Intl.NumberFormat("es-ES",{style:"currency",currency:"EUR",maximumFractionDigits:0,useGrouping:"always"}),euros2=n=>EUROS.format(Number(n)||0),eurosEje=n=>{let v=Number(n)||0;return Math.abs(v)>=1e6?`${(v/1e6).toLocaleString("es-ES",{maximumFractionDigits:1})}\xA0M`:Math.abs(v)>=1e3?`${(v/1e3).toLocaleString("es-ES",{maximumFractionDigits:1})}\xA0mil`:`${Math.round(v)}`};function marcas(max,n=3){if(!(max>0))return[0];let bruto=max/n,mag=Math.pow(10,Math.floor(Math.log10(bruto))),paso=[1,2,2.5,5,10].map(k=>k*mag).find(p=>p>=bruto)||10*mag,out=[];for(let v=0;vn==null?"sin dato":`${Number(n).toLocaleString("es-ES",{maximumFractionDigits:dec})} %`,KIT_CSS=` @keyframes k-late { 0%,100% { opacity: .55 } 50% { opacity: 1 } } .k-esqueleto { background: #ececf0; animation: k-late 1.4s ease-in-out infinite; display: inline-block; } @media (max-width: 760px) { .k-cifras { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } .k-cifras > :last-child:nth-child(odd) { grid-column: span 2; } .k-cifra-v { font-size: 22px !important; } } `;var 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:44"}):__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:45"},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:#f2f2f7;} /* 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{padding:0 clamp(16px,3vw,40px);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);} /* A todo lo ancho, con un margen que crece con la pantalla (10-nov-2026, Juan: \xABno aprovechan el full screen\xBB). */ .p-main{padding:18px clamp(16px,3vw,40px) 64px;} .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;} } `+KIT_CSS,money2=n=>new Intl.NumberFormat("es-ES",{style:"currency",currency:"EUR",minimumFractionDigits:2,maximumFractionDigits:2,useGrouping:"always"}).format(Number(n)||0);var 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"})},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},HOSTELWORLD2="Hostelworld",esHW=r=>String(r&&r.confirmation_code||"").startsWith("HWG-"),canalDe=(canal,hw)=>hw?HOSTELWORLD2:canal==="Direct"?"Directo":canal||"\u2014",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 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:373"},boton2,abierto?__gh("div",{className:"p-veil",onClick:()=>setAbierto(!1),"data-gufi-src":"portal/ui.tsx:375"}):null,abierto?__gh("div",{className:"p-pop",style:derecha?{left:"auto",right:0}:void 0,"data-gufi-src":"portal/ui.tsx:376"},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:382"},etiqueta4?__gh("span",{className:"k","data-gufi-src":"portal/ui.tsx:383"},etiqueta4):null,__gh("span",{className:"v","data-gufi-src":"portal/ui.tsx:384"},valor),__gh("svg",{width:"12",height:"12",viewBox:"0 0 12 12",style:{flexShrink:0,color:B.faint},"data-gufi-src":"portal/ui.tsx:385"},__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:385"})));function ListaBuscable({opciones,valor,onElegir,placeholder}){let[q,setQ]=(0,import_react26.useState)(""),norm5=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),vis=(0,import_react26.useMemo)(()=>{let n=norm5(q);return n?opciones.filter(o=>norm5(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:399"},__gh("svg",{width:"15",height:"15",viewBox:"0 0 16 16",style:{color:B.faint,flexShrink:0},"data-gufi-src":"portal/ui.tsx:400"},__gh("circle",{cx:"7",cy:"7",r:"5",fill:"none",stroke:"currentColor",strokeWidth:"1.6","data-gufi-src":"portal/ui.tsx:400"}),__gh("path",{d:"m11 11 3 3",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round","data-gufi-src":"portal/ui.tsx:400"})),__gh("input",{autoFocus:!0,value:q,onChange:e=>setQ(e.target.value),placeholder:placeholder||"Buscar","data-gufi-src":"portal/ui.tsx:401"})):null,__gh("div",{className:"p-pop-list","data-gufi-src":"portal/ui.tsx:404"},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:409"},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:410"},__gh("span",{style:{minWidth:0,overflow:"hidden",textOverflow:"ellipsis",whiteSpace:"nowrap"},"data-gufi-src":"portal/ui.tsx:411"},o.t),o.s?__gh("span",{className:"s","data-gufi-src":"portal/ui.tsx:412"},o.s):null))}):__gh("div",{style:{padding:"16px 12px",fontSize:13,color:B.muted},"data-gufi-src":"portal/ui.tsx:416"},"Nada coincide con \xAB",q,"\xBB.")))}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:430"}),__gh("aside",{className:"p-drawer",role:"dialog","aria-modal":"true","data-gufi-src":"portal/ui.tsx:431"},__gh("div",{className:"p-drawer-h","data-gufi-src":"portal/ui.tsx:432"},__gh("div",{style:{minWidth:0,flex:1},"data-gufi-src":"portal/ui.tsx:433"},__gh("div",{style:{fontSize:19,fontWeight:600,letterSpacing:"-.4px",color:B.ink,lineHeight:1.2},"data-gufi-src":"portal/ui.tsx:434"},titulo3),sub?__gh("div",{style:{fontSize:13,color:B.muted,marginTop:4},"data-gufi-src":"portal/ui.tsx:435"},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:437"},__gh("svg",{width:"12",height:"12",viewBox:"0 0 12 12","data-gufi-src":"portal/ui.tsx:438"},__gh("path",{d:"M2.5 2.5l7 7m0-7-7 7",stroke:"currentColor",strokeWidth:"1.6",strokeLinecap:"round","data-gufi-src":"portal/ui.tsx:438"})))),__gh("div",{className:"p-drawer-b","data-gufi-src":"portal/ui.tsx:441"},children),pie?__gh("div",{style:{padding:"14px 22px",borderTop:`1px solid ${B.hair}`},"data-gufi-src":"portal/ui.tsx:442"},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:473"},__gh("div",{style:{display:"flex",alignItems:"flex-start",gap:12,marginBottom:14},"data-gufi-src":"portal/ui.tsx:474"},__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:475"},__gh("svg",{width:"13",height:"13",viewBox:"0 0 12 12",fill:"none","data-gufi-src":"portal/ui.tsx:477"},__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:477"}))),__gh("div",{style:{minWidth:0,flex:1},"data-gufi-src":"portal/ui.tsx:479"},__gh("div",{style:{fontSize:20,fontWeight:600,letterSpacing:"-.4px",color:B.ink,lineHeight:1.2},"data-gufi-src":"portal/ui.tsx:480"},titulo3),sub?__gh("div",{style:{fontSize:13,color:B.muted,marginTop:3},"data-gufi-src":"portal/ui.tsx:481"},sub):null),accion||null),__gh("div",{className:"p-card",style:{padding:"6px 18px 20px",maxWidth:780},"data-gufi-src":"portal/ui.tsx:485"},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 clave2=activo?nombre+JSON.stringify(input):null,[st,setSt]=(0,import_react26.useState)({clave:null,datos:null,error:""});(0,import_react26.useEffect)(()=>{if(!clave2||st.clave===clave2)return;let vivo=!0;return setSt({clave:clave2,datos:null,error:""}),api(nombre,input).then(d2=>{vivo&&setSt({clave:clave2,datos:d2,error:""})}).catch(e=>{vivo&&setSt({clave:clave2,datos:null,error:String(e&&e.message||e)})}),()=>{vivo=!1}},[clave2]);let mio=st.clave===clave2;return{datos:mio?st.datos:null,error:mio?st.error:"",cargando:!!clave2&&(!mio||!st.datos&&!st.error)}}var import_react27=require("react"),import_recharts=require("recharts");function Estado({f,periodo,hijos}){if(f.error)return __gh(Aviso2,{titulo:"No se han podido cargar los datos",texto:f.error});if(f.cargando||!f.datos)return __gh(Tarjeta3,null,__gh(FilasCargando,{n:7}));if(f.datos.demasiadas)return __gh(Tarjeta3,null,__gh(Vacio2,{titulo:"Demasiadas estancias para verlas de una vez",texto:`${periodoTexto(periodo.desde,periodo.hasta)} son ${numero(f.datos.demasiadas)} registros de toda la cartera. Elige un propietario o un periodo m\xE1s corto.`}));let reservadas=f.datos.reservado?f.datos.reservado.noches_ocupadas:0;return!f.datos.totales||!f.datos.estancias.length&&!f.datos.totales.facturado&&!reservadas?__gh(Tarjeta3,null,__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)}var mayus=s=>s.charAt(0).toUpperCase()+s.slice(1),etiquetaMes=ym=>mayus(mesCorto(ym));function juntarCanales(reservado,facturado){let fac=Object.fromEntries(facturado.map(c=>[c.canal,c.facturado]));return reservado.map(c=>({...c,facturado:fac[c.canal]||0})).concat(facturado.filter(c=>!reservado.some(r=>r.canal===c.canal)).map(c=>({canal:c.canal,estancias:0,noches:0,puntos:null,cobrado:0,comision:0,facturado:c.facturado})))}function propias(canales){let total=canales.reduce((s,c)=>s+c.noches,0);return total?canales.filter(c=>esPropio(c.canal)).reduce((s,c)=>s+c.noches,0)/total*100:null}function Resumen({f,periodo,setPropiedad,propPorId}){let[mesSel,setMesSel]=(0,import_react27.useState)(null);return(0,import_react27.useEffect)(()=>{setMesSel(null)},[f.datos]),__gh(Estado,{f,periodo,hijos:d2=>__gh(Panel,{d:d2,periodo,mesSel,setMesSel,setPropiedad,propPorId})})}function Panel({d:d2,periodo,mesSel,setMesSel,setPropiedad,propPorId}){let meses=(0,import_react27.useMemo)(()=>d2.meses.filter(m=>m.estancias||m.facturado||m.noches_ocupadas),[d2]),mes2=mesSel&&meses.find(m=>m.mes===mesSel)||null,t3=d2.totales,medido=d2.reservado?d2.reservado.medido_hasta:null,canalesPeriodo=(0,import_react27.useMemo)(()=>d2.reservado?juntarCanales(d2.reservado.canales,d2.canales):[],[d2]),v=mes2?{titulo:mesLabel(mes2.mes),facturado:mes2.facturado,pernocta:mes2.pernocta,limpieza:mes2.limpieza,estancias:mes2.estancias,ocupacion:mes2.ocupacion,ocupadas:mes2.noches_ocupadas,disponibles:mes2.noches_disponibles,precio:mes2.precio_noche,media:mes2.estancia_media,canales:mes2.canales||[],hastaHoy:!!medido&&medido.slice(0,7)===mes2.mes&&medido.slice(8)!=="01"}:{titulo:periodoTexto(periodo.desde,periodo.hasta),facturado:t3.facturado,pernocta:t3.pernocta,limpieza:t3.limpieza,estancias:t3.estancias,ocupacion:t3.ocupacion,ocupadas:t3.noches_ocupadas,disponibles:t3.noches_disponibles,precio:t3.precio_noche,media:t3.estancia_media,canales:canalesPeriodo,hastaHoy:!!medido&&medidosetMesSel(mesSel===m?null:m),varios=meses.length>1;return __gh("div",{style:{display:"grid",gap:18},"data-gufi-src":"portal/resumen.tsx:74"},__gh("style",{"data-gufi-src":"portal/resumen.tsx:75"},CSS),__gh("div",{style:{display:"flex",alignItems:"baseline",gap:12,flexWrap:"wrap",padding:"0 4px"},"data-gufi-src":"portal/resumen.tsx:77"},__gh("h2",{style:{fontSize:22,fontWeight:650,letterSpacing:"-0.5px",color:INK,margin:0},"data-gufi-src":"portal/resumen.tsx:78"},v.titulo),varios?__gh("span",{style:{marginLeft:"auto",maxWidth:"100%"},"data-gufi-src":"portal/resumen.tsx:81"},__gh(Segmentado,{id:"resumen-mes",valor:mesSel||"",onCambio:m=>setMesSel(m||null),opciones:[{v:"",t:"Todo"}].concat(meses.map(m=>({v:m.mes,t:etiquetaMes(m.mes)})))})):null),__gh(Cifras2,{columnas:pPropias==null?4:5},__gh(Cifra2,{etiqueta:deFactura()?"Facturado":"Lo que dejan tus reservas",valor:euros2(v.facturado),sub:`Pernocta ${euros2(v.pernocta)} \xB7 limpieza ${euros2(v.limpieza)}`}),__gh(Cifra2,{etiqueta:"Ocupaci\xF3n",valor:porcentaje(v.ocupacion),sub:v.disponibles?`${numero(v.ocupadas)} de ${numero(v.disponibles)} noches${v.hastaHoy?", hasta hoy":""}`:"sin anuncio en el que medirla"}),__gh(Cifra2,{etiqueta:"Precio medio por noche",valor:v.precio==null?"sin dato":money2(v.precio),sub:deFactura()?"pernocta facturada entre noches":"pernocta entre noches"}),__gh(Cifra2,{etiqueta:"Estancia media",valor:v.media==null?"sin dato":`${String(v.media).replace(".",",")} noches`,sub:`${numero(v.estancias)} estancias${deFactura()?" facturadas":""}`}),pPropias==null?null:__gh(Cifra2,{etiqueta:"Reservas propias",valor:porcentaje(pPropias),sub:"de las noches, por directo y web: sin comisi\xF3n"})),__gh("div",{className:varios?"r-dos":void 0,style:varios?void 0:{display:"grid"},"data-gufi-src":"portal/resumen.tsx:96"},varios?__gh(MesAMes,{meses,mesSel,elegir}):null,__gh(DeDondeViene,{canales:v.canales,facturado:v.facturado,ocupacion:v.ocupacion,ocupadas:v.ocupadas,mes:mes2})),varios&&meses.some(m=>(m.canales||[]).length)?__gh(CanalesMesAMes,{meses,elegir}):null,d2.propiedades.length>1?__gh(PorPropiedad,{propiedades:d2.propiedades,propPorId,setPropiedad}):null,__gh("p",{style:{fontSize:12,color:MUTED,margin:"0 4px",lineHeight:1.5},"data-gufi-src":"portal/resumen.tsx:105"},deFactura()?`El dinero es lo que ${marca().nombre} ya ha facturado, a mes vencido. Las noches, la ocupaci\xF3n y el canal salen de las reservas confirmadas, est\xE9n facturadas o no, y cada noche cuenta en el mes en que se duerme.`:"Cuentan las reservas confirmadas, con lo que paga el hu\xE9sped menos la comisi\xF3n del canal. Cada noche cuenta en el mes en que se duerme.",t3.ajustes?" Los ajustes son resoluciones de la plataforma y redondeos: suman al total pero no son estancias.":""))}var CSS=` .r-dos { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.2fr); gap: 18px; align-items: stretch; } @media (max-width: 1100px) { .r-dos { grid-template-columns: minmax(0, 1fr); } } .r-tabla { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; } .r-tabla th { font-size: 12px; font-weight: 500; color: ${MUTED}; text-align: right; padding: 12px 16px 8px; white-space: nowrap; } .r-tabla th:first-child, .r-tabla td:first-child { text-align: left; } .r-tabla td { font-size: 13.5px; color: ${INK}; text-align: right; padding: 0 16px; height: 50px; border-top: 1px solid ${HAIRLINE}; white-space: nowrap; } .r-tabla tfoot td { font-weight: 600; } .r-tabla th[data-orden] { cursor: pointer; } .r-tabla th[data-orden]:hover, .r-tabla th[data-on="1"] { color: ${INK}; } .r-tabla tbody tr[data-toca] { cursor: pointer; } .r-tabla tbody tr[data-toca]:hover td { background: #fafafc; } .r-movil { display: none; } @media (max-width: 760px) { .r-escritorio { display: none; } .r-movil { display: block; } } `;function MesAMes({meses,mesSel,elegir}){let serie=meses.map(m=>({mes:m.mes,facturado:m.facturado,ocupacion:m.ocupacion==null?0:m.ocupacion,noches:m.noches_ocupadas||0})),ticksE=marcas(Math.max(0,...serie.map(s=>s.facturado)));return __gh(Grupo,{titulo:"Mes a mes",sub:deFactura()?"Lo facturado en barras y la ocupaci\xF3n en la curva":"Lo que dejan las reservas en barras y la ocupaci\xF3n en la curva",llena:!0},__gh("div",{style:{padding:"14px 18px 0"},"data-gufi-src":"portal/resumen.tsx:137"},__gh(Leyenda,{series:[{color:"#d6d6dc",texto:deFactura()?"Facturado, en euros":"Ingresos, en euros"},{color:SERIE,texto:"Ocupaci\xF3n"}]})),__gh("div",{style:{flex:1,minHeight:250,padding:"6px 6px 8px 0"},"data-gufi-src":"portal/resumen.tsx:140"},__gh(import_recharts.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts.ComposedChart,{data:serie,margin:MARGEN,onClick:e=>{let p=e&&e.activePayload&&e.activePayload[0];p&&p.payload&&elegir(p.payload.mes)},style:{cursor:"pointer"}},__gh("defs",{"data-gufi-src":"portal/resumen.tsx:143"},degradado("r-ocup",SERIE,.24,0)),__gh(import_recharts.CartesianGrid,{...REJILLA}),__gh(import_recharts.XAxis,{dataKey:"mes",...EJE,tickFormatter:etiquetaMes}),__gh(import_recharts.YAxis,{yAxisId:"e",...EJE,width:56,domain:[0,ticksE[ticksE.length-1]],ticks:ticksE,tickFormatter:x=>eurosEje(x)}),__gh(import_recharts.YAxis,{yAxisId:"p",orientation:"right",...EJE,width:46,domain:[0,100],ticks:[0,50,100],tickFormatter:x=>`${x} %`}),__gh(import_recharts.Tooltip,{cursor:CURSOR,content:__gh(Globo,{titulo:p=>mesLabel(p.mes),filas:p=>[{color:SERIE,texto:"Ocupaci\xF3n",valor:porcentaje(p.ocupacion)},{color:"#d6d6dc",texto:deFactura()?"Facturado":"Ingresos",valor:p.facturado?euros2(p.facturado):"a\xFAn sin facturar"},{color:"transparent",texto:"Noches ocupadas",valor:numero(p.noches)}]})}),__gh(import_recharts.Bar,{yAxisId:"e",dataKey:"facturado",radius:[4,4,0,0],maxBarSize:38,animationDuration:600,style:{cursor:"pointer"},onClick:b=>{let m=b&&(b.mes||b.payload&&b.payload.mes);m&&elegir(m)}},serie.map(s=>__gh(import_recharts.Cell,{key:s.mes,fill:mesSel===s.mes?"#b9b5ff":mesSel?"#ececf0":"#dedee3"}))),__gh(import_recharts.Area,{yAxisId:"p",type:"monotone",dataKey:"ocupacion",stroke:SERIE,strokeWidth:2.25,fill:"url(#r-ocup)",dot:!1,activeDot:PUNTO_ACTIVO(SERIE),animationDuration:700})))))}function DeDondeViene({canales,facturado,ocupacion,ocupadas,mes:mes2}){let factura=deFactura(),total={cobrado:canales.reduce((s,c)=>s+c.cobrado,0),comision:canales.reduce((s,c)=>s+c.comision,0)};return __gh(Grupo,{titulo:mes2?`De d\xF3nde viene ${mesLabel(mes2.mes).split(" ")[0].toLowerCase()}`:"De d\xF3nde viene cada cosa",sub:"Qu\xE9 parte de la ocupaci\xF3n trae cada canal, qu\xE9 paga el hu\xE9sped y qu\xE9 se queda el canal",llena:!0,pie:`Reservas, noches, ocupaci\xF3n, lo que paga el hu\xE9sped y la comisi\xF3n salen de las reservas confirmadas, est\xE9n facturadas o no.${factura?` Facturado es lo que ${marca().nombre} ya ha facturado de ese canal.`:""}`},canales.length?__gh(__gf,null,__gh("div",{className:"r-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/resumen.tsx:174"},__gh("table",{className:"r-tabla","data-gufi-src":"portal/resumen.tsx:175"},__gh("thead",{"data-gufi-src":"portal/resumen.tsx:176"},__gh("tr",{"data-gufi-src":"portal/resumen.tsx:176"},__gh("th",{"data-gufi-src":"portal/resumen.tsx:177"},"Canal"),__gh("th",{"data-gufi-src":"portal/resumen.tsx:177"},"Ocupaci\xF3n"),__gh("th",{"data-gufi-src":"portal/resumen.tsx:177"},"Noches"),__gh("th",{"data-gufi-src":"portal/resumen.tsx:177"},"Paga el hu\xE9sped"),__gh("th",{"data-gufi-src":"portal/resumen.tsx:177"},"Comisi\xF3n"),factura?__gh("th",{"data-gufi-src":"portal/resumen.tsx:177"},"Facturado"):null)),__gh("tbody",{"data-gufi-src":"portal/resumen.tsx:179"},canales.map(c=>__gh("tr",{key:c.canal,"data-gufi-src":"portal/resumen.tsx:181"},__gh("td",{"data-gufi-src":"portal/resumen.tsx:182"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:10},"data-gufi-src":"portal/resumen.tsx:183"},__gh(LogoCanal,{canal:c.canal,tam:26}),__gh("span",{"data-gufi-src":"portal/resumen.tsx:185"},__gh("span",{style:{display:"block",fontWeight:500},"data-gufi-src":"portal/resumen.tsx:185"},c.canal),__gh("span",{style:{display:"block",fontSize:11.5,color:MUTED},"data-gufi-src":"portal/resumen.tsx:185"},numero(c.estancias)," reservas")))),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/resumen.tsx:188"},c.puntos==null?__gh("span",{style:{color:FAINT,fontWeight:400},"data-gufi-src":"portal/resumen.tsx:188"},"sin dato"):porcentaje(c.puntos)),__gh("td",{"data-gufi-src":"portal/resumen.tsx:189"},numero(c.noches)),__gh("td",{"data-gufi-src":"portal/resumen.tsx:190"},euros2(c.cobrado)),__gh("td",{"data-gufi-src":"portal/resumen.tsx:191"},c.comision?euros2(c.comision):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/resumen.tsx:191"},"sin comisi\xF3n")),factura?__gh("td",{"data-gufi-src":"portal/resumen.tsx:192"},c.facturado?euros2(c.facturado):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/resumen.tsx:192"},"a\xFAn no")):null))),__gh("tfoot",{"data-gufi-src":"portal/resumen.tsx:196"},__gh("tr",{"data-gufi-src":"portal/resumen.tsx:196"},__gh("td",{"data-gufi-src":"portal/resumen.tsx:197"},"Total"),__gh("td",{"data-gufi-src":"portal/resumen.tsx:197"},porcentaje(ocupacion)),__gh("td",{"data-gufi-src":"portal/resumen.tsx:197"},numero(ocupadas)),__gh("td",{"data-gufi-src":"portal/resumen.tsx:197"},euros2(total.cobrado)),__gh("td",{"data-gufi-src":"portal/resumen.tsx:197"},euros2(total.comision)),factura?__gh("td",{"data-gufi-src":"portal/resumen.tsx:197"},euros2(facturado)):null)))),__gh("div",{className:"r-movil","data-gufi-src":"portal/resumen.tsx:201"},canales.map((c,i)=>__gh(Fila2,{key:c.canal,primera:i===0,lead:__gh(LogoCanal,{canal:c.canal,tam:28}),titulo:c.canal,sub:`${numero(c.estancias)} reservas \xB7 ${numero(c.noches)} noches \xB7 ${c.comision?`comisi\xF3n ${euros2(c.comision)}`:"sin comisi\xF3n"}`,valor:c.puntos==null?"sin dato":porcentaje(c.puntos),valorSub:`paga ${euros2(c.cobrado)}`})))):__gh(Vacio2,{titulo:"Sin reservas en este periodo"}))}var GRISES=["#8e8e93","#aeaeb2","#c7c7cc","#d8d8dd","#e5e5ea"];function CanalesMesAMes({meses,elegir}){let{orden,serie,color}=(0,import_react27.useMemo)(()=>{let tot={};meses.forEach(m=>(m.canales||[]).forEach(c=>{tot[c.canal]=(tot[c.canal]||0)+c.noches}));let propiosO=Object.keys(tot).filter(esPropio).sort((a,b)=>a==="Directo"?-1:b==="Directo"?1:0),ajenos=Object.keys(tot).filter(c=>!esPropio(c)).sort((a,b)=>tot[a]-tot[b]),orden2=propiosO.concat(ajenos),color2={};propiosO.forEach(c=>{color2[c]=c==="Directo"?SERIE:"#a5a0ff"}),ajenos.slice().reverse().forEach((c,i)=>{color2[c]=GRISES[Math.min(i,GRISES.length-1)]});let serie2=meses.map(m=>{let fila={mes:m.mes};return orden2.forEach(c=>{fila[c]=0}),(m.canales||[]).forEach(c=>{fila[c.canal]=c.noches}),fila});return{orden:orden2,serie:serie2,color:color2}},[meses]),cuota=fila=>{let total=orden.reduce((s,c)=>s+(fila[c]||0),0);return total?orden.filter(esPropio).reduce((s,c)=>s+(fila[c]||0),0)/total*100:null},primero=cuota(serie[0]),ultimo=cuota(serie[serie.length-1]);return __gh(Grupo,{titulo:"Por canal, mes a mes",llena:!0,sub:primero==null||ultimo==null?"Qu\xE9 parte de las noches trae cada canal":`Lo propio, directo y web: ${porcentaje(primero)} de las noches en ${mesLabel(serie[0].mes).toLowerCase()}, ${porcentaje(ultimo)} en ${mesLabel(serie[serie.length-1].mes).toLowerCase()}`},__gh("div",{style:{padding:"14px 18px 0"},"data-gufi-src":"portal/resumen.tsx:245"},__gh(Leyenda,{series:orden.slice().reverse().map(c=>({logo:__gh(LogoCanal,{canal:c,tam:16}),texto:c}))})),__gh("div",{style:{height:230,padding:"6px 6px 8px 0"},"data-gufi-src":"portal/resumen.tsx:248"},__gh(import_recharts.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts.AreaChart,{data:serie,margin:MARGEN,stackOffset:"expand",onClick:e=>{let p=e&&e.activePayload&&e.activePayload[0];p&&p.payload&&elegir(p.payload.mes)},style:{cursor:"pointer"}},__gh(import_recharts.CartesianGrid,{...REJILLA}),__gh(import_recharts.XAxis,{dataKey:"mes",...EJE,tickFormatter:etiquetaMes}),__gh(import_recharts.YAxis,{...EJE,width:50,ticks:[0,.5,1],tickFormatter:x=>`${Math.round(x*100)} %`}),__gh(import_recharts.Tooltip,{cursor:CURSOR,content:__gh(Globo,{titulo:p=>mesLabel(p.mes),filas:p=>{let total=orden.reduce((s,c)=>s+(p[c]||0),0);return orden.slice().reverse().filter(c=>p[c]).map(c=>({logo:__gh(LogoCanal,{canal:c,tam:16}),texto:c,valor:`${porcentaje(total?p[c]/total*100:null)} \xB7 ${numero(p[c])} noches`}))}})}),orden.map(c=>__gh(import_recharts.Area,{key:c,type:"monotone",dataKey:c,stackId:"1",stroke:color[c],strokeWidth:esPropio(c)?2:1,fill:color[c],fillOpacity:esPropio(c)?.85:.55,dot:!1,activeDot:!1,animationDuration:700}))))))}var TANDA=20,COLS=[{k:"nombre",t:"Propiedad"},{k:"estancias",t:"Estancias"},{k:"noches",t:"Noches"},{k:"ocupacion",t:"Ocupaci\xF3n"},{k:"pernocta",t:"Pernocta"},{k:"limpieza",t:"Limpieza"},{k:"facturado",t:"Total"}];function PorPropiedad({propiedades,propPorId,setPropiedad}){let[q,setQ]=(0,import_react27.useState)(""),[orden,setOrden]=(0,import_react27.useState)({k:"facturado",asc:!1}),[ver,setVer]=(0,import_react27.useState)(TANDA),[todas,setTodas]=(0,import_react27.useState)(!1),nombre=p=>(propPorId[p.id]||{}).nombre||"",filas=(0,import_react27.useMemo)(()=>{let n=q.trim().toLowerCase(),base2=propiedades.filter(p=>(todas||p.facturado||p.estancias||p.noches_ocupadas)&&(!n||nombre(p).toLowerCase().includes(n))),val=p=>orden.k==="nombre"?nombre(p):p[orden.k];return base2.slice().sort((a,b)=>{let x=val(a),y=val(b);return x==null&&y==null?0:x==null?1:y==null?-1:(typeof x=="number"?x-y:String(x).localeCompare(String(y),"es",{numeric:!0}))*(orden.asc?1:-1)})},[propiedades,q,orden,todas,propPorId]);(0,import_react27.useEffect)(()=>{setVer(TANDA)},[q,orden,todas]);let sinDatos=propiedades.filter(p=>!(p.facturado||p.estancias||p.noches_ocupadas)).length,pulsar=k=>setOrden(o=>o.k===k?{k,asc:!o.asc}:{k,asc:k==="nombre"}),visibles=filas.slice(0,ver);return __gh(Grupo,{titulo:"Por propiedad",cuenta:filas.length,sub:"Pulsa una para verla sola",derecha:__gh(__gf,null,sinDatos?__gh("button",{type:"button",onClick:()=>setTodas(!todas),style:{border:"none",background:"transparent",fontSize:13,color:ACCENT,cursor:"pointer",fontFamily:"inherit",whiteSpace:"nowrap"},"data-gufi-src":"portal/resumen.tsx:299"},todas?"S\xF3lo con estancias":`Ver tambi\xE9n ${numero(sinDatos)} sin estancias`):null,propiedades.length>8?__gh(Buscador2,{valor:q,onCambio:setQ,placeholder:"Buscar propiedad",ancho:220}):null)},filas.length?__gh(__gf,null,__gh("div",{className:"r-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/resumen.tsx:304"},__gh("table",{className:"r-tabla","data-gufi-src":"portal/resumen.tsx:305"},__gh("thead",{"data-gufi-src":"portal/resumen.tsx:306"},__gh("tr",{"data-gufi-src":"portal/resumen.tsx:306"},COLS.map(c=>__gh("th",{key:c.k,"data-orden":c.k,"data-on":orden.k===c.k?"1":"0",onClick:()=>pulsar(c.k),"data-gufi-src":"portal/resumen.tsx:308"},c.k==="facturado"&&deFactura()?"Total facturado":c.t,orden.k===c.k?orden.asc?" \u2191":" \u2193":"")))),__gh("tbody",{"data-gufi-src":"portal/resumen.tsx:313"},visibles.map(p=>__gh("tr",{key:p.id,"data-toca":"1",onClick:()=>setPropiedad(String(p.id)),"data-gufi-src":"portal/resumen.tsx:315"},__gh("td",{style:{fontWeight:500,maxWidth:380,whiteSpace:"normal"},"data-gufi-src":"portal/resumen.tsx:316"},nombre(p),p.unidades>1?__gh("span",{style:{color:FAINT,fontWeight:400},"data-gufi-src":"portal/resumen.tsx:316"}," \xB7 ",numero(p.unidades)," unidades"):null),__gh("td",{"data-gufi-src":"portal/resumen.tsx:317"},numero(p.estancias)),__gh("td",{"data-gufi-src":"portal/resumen.tsx:318"},numero(p.noches)),__gh("td",{"data-gufi-src":"portal/resumen.tsx:319"},p.ocupacion==null?__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/resumen.tsx:319"},"sin dato"):porcentaje(p.ocupacion)),__gh("td",{"data-gufi-src":"portal/resumen.tsx:320"},money2(p.pernocta)),__gh("td",{"data-gufi-src":"portal/resumen.tsx:321"},money2(p.limpieza)),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/resumen.tsx:322"},money2(p.facturado))))))),__gh("div",{className:"r-movil","data-gufi-src":"portal/resumen.tsx:328"},visibles.map((p,i)=>__gh(Fila2,{key:p.id,primera:i===0,titulo:nombre(p),onClick:()=>setPropiedad(String(p.id)),sub:`${numero(p.estancias)} estancias \xB7 ocupaci\xF3n ${porcentaje(p.ocupacion)}`,valor:euros2(p.facturado)}))),__gh(FilaMas,{quedan:filas.length-ver,tanda:TANDA,onClick:()=>setVer(ver+TANDA)})):__gh(Vacio2,{titulo:"Ninguna propiedad coincide",texto:q?`Nada con \xAB${q}\xBB.`:void 0}))}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 TANDA2=40,CSS_ESTANCIAS=` .rv-tabla { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; } .rv-tabla th { font-size: 12px; font-weight: 500; color: ${MUTED}; text-align: left; padding: 12px 16px 8px; white-space: nowrap; user-select: none; } .rv-tabla th[data-d="1"], .rv-tabla td[data-d="1"] { text-align: right; } .rv-tabla td { font-size: 13.5px; color: ${INK}; padding: 7px 16px; height: 52px; box-sizing: border-box; border-top: 1px solid ${HAIRLINE}; white-space: nowrap; } .rv-tabla td[data-ancho="1"] { white-space: normal; min-width: 150px; } .rv-tabla th[data-orden] { cursor: pointer; } .rv-tabla th[data-orden]:hover, .rv-tabla th[data-on="1"] { color: ${INK}; } .rv-tabla tbody tr { cursor: pointer; } .rv-tabla tbody tr:hover td { background: #fafafc; } .rv-dato > div { border-top: 1px solid ${HAIRLINE}; } .rv-dato:first-child > div { border-top: none; } .rv-dos { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; align-items: start; } @media (max-width: 1000px) { .rv-dos { grid-template-columns: minmax(0, 1fr); } } .rv-tres { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 18px; align-items: stretch; } @media (max-width: 1250px) { .rv-tres { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 760px) { .rv-tres { grid-template-columns: minmax(0, 1fr); } } .rv-barra { transition: width .5s cubic-bezier(.22,1,.36,1), background .25s; } .rv-filab:hover { background: #fafafc; } `,mayus2=s=>s.charAt(0).toUpperCase()+s.slice(1),norm=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),plural=(n,uno,varios)=>`${numero(n)} ${n===1?uno:varios}`,decimal=n=>n.toLocaleString("es-ES",{maximumFractionDigits:1}),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(" ")||"Sin nombre"};function Dato({k,v,fuerte}){return __gh("div",{className:"rv-dato",style:{paddingLeft:16},"data-gufi-src":"portal/reservas.tsx:89"},__gh("div",{style:{display:"flex",alignItems:"baseline",justifyContent:"space-between",gap:16,padding:"12px 16px 12px 0",fontSize:13.5},"data-gufi-src":"portal/reservas.tsx:90"},__gh("span",{style:{color:fuerte?INK:MUTED,fontWeight:fuerte?600:400,flexShrink:0},"data-gufi-src":"portal/reservas.tsx:91"},k),__gh("span",{style:{color:INK,fontWeight:fuerte?650:500,textAlign:"right",fontVariantNumeric:"tabular-nums",minWidth:0,overflowWrap:"anywhere"},"data-gufi-src":"portal/reservas.tsx:92"},v)))}var sinDato=__gh("span",{style:{color:FAINT,fontWeight:400},"data-gufi-src":"portal/reservas.tsx:98"},"sin dato");function Titulo2({titulo:titulo3,cuenta:cuenta2,sub}){return __gh("header",{style:{padding:"0 4px"},"data-gufi-src":"portal/reservas.tsx:103"},__gh("h3",{style:{fontSize:15,fontWeight:600,letterSpacing:"-0.3px",color:INK,margin:0},"data-gufi-src":"portal/reservas.tsx:104"},titulo3,cuenta2!=null?__gh("span",{style:{color:FAINT,fontWeight:500,marginLeft:8,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/reservas.tsx:105"},numero(cuenta2)):null),sub?__gh("p",{style:{fontSize:12.5,color:MUTED,margin:"2px 0 0",lineHeight:1.45},"data-gufi-src":"portal/reservas.tsx:107"},sub):null)}function Viajero({v,entrada:entrada3}){let edad=edadEn(v.nacimiento,entrada3),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 "),quien2=[edad!=null?`${edad} a\xF1os`:null,SEXO[v.sexo],TIPO_HUESPED[v.tipo_huesped]].filter(Boolean).join(" \xB7 ");return __gh(Tarjeta3,null,__gh("div",{style:{padding:"13px 16px 11px",borderBottom:`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/reservas.tsx:120"},__gh("div",{style:{fontSize:14.5,fontWeight:600,color:INK,overflowWrap:"anywhere"},"data-gufi-src":"portal/reservas.tsx:121"},nombreViajero(v)),quien2?__gh("div",{style:{fontSize:12,color:MUTED,marginTop:2},"data-gufi-src":"portal/reservas.tsx:122"},quien2):null),__gh("div",{"data-gufi-src":"portal/reservas.tsx:124"},__gh(Dato,{k:"Documento",v:documento?`${documento}${v.documento_pais?` \xB7 ${v.documento_pais}`:""}`:sinDato}),__gh(Dato,{k:"Nacionalidad",v:v.pais||sinDato}),v.nacimiento?__gh(Dato,{k:"Nacimiento",v:fmtLarga(v.nacimiento)}):null,__gh(Dato,{k:"Domicilio",v:domicilio||sinDato}),contacto?__gh(Dato,{k:"Contacto",v:contacto}):null,v.checkin?__gh(Dato,{k:"Check-in online",v:fmtLarga(v.checkin)}):null))}function QuienVino({api,token,e}){let[d2,setD]=(0,import_react28.useState)(null),[error,setError]=(0,import_react28.useState)("");(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]);let sub="El registro de viajeros de esta reserva";if(error)return __gh("section",{style:{display:"grid",gap:8},"data-gufi-src":"portal/reservas.tsx:149"},__gh(Titulo2,{titulo:"Qui\xE9n vino",sub}),__gh(Aviso2,{titulo:"No se ha podido leer el registro de viajeros",texto:error}));if(!d2)return __gh("section",{style:{display:"grid",gap:8},"data-gufi-src":"portal/reservas.tsx:150"},__gh(Titulo2,{titulo:"Qui\xE9n vino",sub}),__gh(Tarjeta3,null,__gh(FilasCargando,{n:4})));let vs=d2.viajeros||[];return vs.length?__gh("section",{style:{display:"grid",gap:10,minWidth:0},"data-gufi-src":"portal/reservas.tsx:154"},__gh(Titulo2,{titulo:"Qui\xE9n vino",cuenta:vs.length,sub}),vs.map(v=>__gh(Viajero,{key:v.id,v,entrada:e.entrada})),d2.origen==="canal"?__gh("p",{style:{fontSize:12,color:MUTED,margin:"0 4px",lineHeight:1.45},"data-gufi-src":"portal/reservas.tsx:158"},"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("section",{style:{display:"grid",gap:8},"data-gufi-src":"portal/reservas.tsx:152"},__gh(Titulo2,{titulo:"Qui\xE9n vino",sub}),__gh(Tarjeta3,null,__gh(Vacio2,{titulo:"Sin ficha de viajero",texto:"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",nombreHuesped=e=>String(tituloEstancia(e)).split(" \xB7 ")[0],restoHuesped=e=>String(tituloEstancia(e)).split(" \xB7 ").slice(1).join(" \xB7 ");function Volver2({onClick}){return __gh("button",{type:"button",onClick,style:{display:"inline-flex",alignItems:"center",gap:1,border:"none",background:"transparent",color:ACCENT,fontSize:14,fontWeight:500,padding:"2px 0",margin:"0 0 6px -4px",cursor:"pointer",fontFamily:"inherit"},"data-gufi-src":"portal/reservas.tsx:180"},__gh(import_lucide_react27.ChevronLeft,{size:19,strokeWidth:2.2}),"Volver")}function DetalleEstancia({e,propPorId,onVolver,api,token}){(0,import_react28.useEffect)(()=>{let col=document.querySelector("[data-gufi-main-scroll]");col?col.scrollTop=0:window.scrollTo({top:0})},[]),(0,import_react28.useEffect)(()=>{let onKey=ev=>{ev.key==="Escape"&&onVolver()};return window.addEventListener("keydown",onKey),()=>window.removeEventListener("keydown",onKey)},[onVolver]);let prop=propPorId[e.p]||{},unidad=nombreUnidad(e,propPorId),personas=e.personas?`${numero(e.personas)}${e.adultos!=null?` (${plural(e.adultos,"adulto","adultos")}${e.ninos?`, ${plural(e.ninos,"ni\xF1o","ni\xF1os")}`:""})`:""}`:null,porNoche2=!e.ajuste&&e.noches?e.pernocta/e.noches:null,factura=deFactura(),resto=restoHuesped(e);return __gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/reservas.tsx:208"},__gh("style",{"data-gufi-src":"portal/reservas.tsx:209"},CSS_ESTANCIAS),__gh("div",{style:{padding:"0 4px"},"data-gufi-src":"portal/reservas.tsx:210"},__gh(Volver2,{onClick:onVolver}),__gh("h2",{style:{fontSize:22,fontWeight:650,letterSpacing:"-0.5px",color:e.ajuste||e.solo_limpieza?INK_2:INK,margin:0,overflowWrap:"anywhere"},"data-gufi-src":"portal/reservas.tsx:212"},nombreHuesped(e)),prop.nombre||unidad?__gh("p",{style:{fontSize:13,color:MUTED,margin:"3px 0 0"},"data-gufi-src":"portal/reservas.tsx:213"},[prop.nombre,unidad].filter(Boolean).join(" \xB7 ")):null),e.ajuste?__gh(Tarjeta3,null,__gh("div",{style:{padding:"13px 16px",fontSize:13.5,color:INK_2,lineHeight:1.5},"data-gufi-src":"portal/reservas.tsx:218"},"Es un ajuste, una resoluci\xF3n de la plataforma o un redondeo: suma a lo facturado, pero no es una estancia.",e.nro?__gh("span",{style:{display:"block",marginTop:4,fontSize:12.5,color:MUTED},"data-gufi-src":"portal/reservas.tsx:220"},"Referencia ",e.nro):null)):null,__gh(Cifras2,{columnas:e.ajuste?2:4},__gh(Cifra2,{etiqueta:e.ajuste?"Fecha":"Entrada",valor:fmtLarga(e.entrada)}),e.ajuste?null:__gh(Cifra2,{etiqueta:"Salida",valor:fmtLarga(e.salida)}),e.ajuste?null:__gh(Cifra2,{etiqueta:"Noches",valor:numero(e.noches),sub:porNoche2==null?void 0:`${money2(porNoche2)} de pernocta la noche`}),__gh(Cifra2,{etiqueta:factura?"Total facturado":"Total",valor:money2(e.facturado),sub:`Pernocta ${euros2(e.pernocta)} \xB7 limpieza ${euros2(e.limpieza)}`})),__gh("div",{className:"rv-dos","data-gufi-src":"portal/reservas.tsx:232"},__gh("div",{style:{display:"grid",gap:18,minWidth:0},"data-gufi-src":"portal/reservas.tsx:233"},__gh(Grupo,{titulo:factura?"Facturado":"Importe",pie:factura?`Lo que ${marca().nombre} ha facturado de esta estancia.`:void 0},__gh(Dato,{k:"Pernocta",v:money2(e.pernocta)}),__gh(Dato,{k:"Limpieza",v:money2(e.limpieza)}),__gh(Dato,{k:"Total",v:money2(e.facturado),fuerte:!0})),e.ajuste?null:__gh(Grupo,{titulo:"Reserva"},__gh(Dato,{k:"Canal",v:__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:8},"data-gufi-src":"portal/reservas.tsx:241"},__gh(LogoCanal,{canal:e.canal,tam:20}),e.canal)}),__gh(Dato,{k:"N\xBA de reserva",v:e.nro?__gh("span",{style:{fontFamily:"ui-monospace,SFMono-Regular,Menlo,monospace",fontSize:12.5,color:INK_2,userSelect:"all"},"data-gufi-src":"portal/reservas.tsx:242"},e.nro):sinDato}),__gh(Dato,{k:"Reserv\xF3 con",v:e.antelacion==null?sinDato:`${plural(e.antelacion,"d\xEDa","d\xEDas")} de antelaci\xF3n`})),e.ajuste?null:__gh(Grupo,{titulo:"Hu\xE9spedes"},__gh(Dato,{k:"Personas",v:personas||sinDato}),__gh(Dato,{k:"Pa\xEDs",v:e.pais?paisEs(e.pais):sinDato}),resto?__gh(Dato,{k:"En la factura",v:resto}):null)),e.ajuste?null:e.nro?__gh(QuienVino,{api,token,e}):__gh("section",{style:{display:"grid",gap:8},"data-gufi-src":"portal/reservas.tsx:255"},__gh(Titulo2,{titulo:"Qui\xE9n vino",sub:"El registro de viajeros de esta reserva"}),__gh(Tarjeta3,null,__gh(Vacio2,{titulo:"Sin n\xFAmero de reserva",texto:"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 ${numero(estancias.length)} filas`,columnas,filas)}function BotonExcel({onClick,ocupado,desactivado}){let parado=!!(ocupado||desactivado);return __gh("button",{type:"button",onClick,disabled:parado,style:{display:"inline-flex",alignItems:"center",gap:6,height:34,padding:"0 13px",borderRadius:10,border:`1px solid ${HAIRLINE}`,background:"#fff",color:ACCENT,fontSize:13.5,fontWeight:500,cursor:parado?"default":"pointer",opacity:desactivado?.5:1,fontFamily:"inherit",whiteSpace:"nowrap"},"data-gufi-src":"portal/reservas.tsx:285"},__gh(import_lucide_react27.Download,{size:15}),ocupado?"Preparando\u2026":"Excel")}function CanalCelda({canal}){return __gh("span",{style:{display:"inline-flex",alignItems:"center",gap:8},"data-gufi-src":"portal/reservas.tsx:294"},__gh(LogoCanal,{canal,tam:20}),canal)}function useOrdenLista(inicial,textos){let[orden,setOrden]=(0,import_react28.useState)(inicial);return{orden,pulsar:k=>setOrden(o=>o.k===k?{k,asc:!o.asc}:{k,asc:textos.includes(k)})}}function TablaEstancias({filas,columnas,orden,onOrden,filaMovil,abrirEstancia,movil}){let[ver,setVer]=(0,import_react28.useState)(TANDA2);(0,import_react28.useEffect)(()=>{setVer(TANDA2)},[filas]);let visibles=filas.slice(0,ver);return __gh(__gf,null,movil?__gh("div",{"data-gufi-src":"portal/reservas.tsx:321"},visibles.map((e,i)=>{let m=filaMovil(e);return __gh(Fila2,{key:e.id,primera:i===0,lead:m.lead,titulo:m.titulo,sub:m.sub,valor:m.valor,valorSub:m.valorSub,onClick:()=>abrirEstancia(e)})})):__gh("div",{style:{overflowX:"auto"},"data-gufi-src":"portal/reservas.tsx:328"},__gh("table",{className:"rv-tabla","data-gufi-src":"portal/reservas.tsx:329"},__gh("thead",{"data-gufi-src":"portal/reservas.tsx:330"},__gh("tr",{"data-gufi-src":"portal/reservas.tsx:330"},columnas.map(c=>__gh("th",{key:c.k,"data-d":c.derecha?"1":void 0,"data-orden":c.valor?c.k:void 0,"data-on":orden.k===c.k?"1":void 0,onClick:c.valor?()=>onOrden(c.k):void 0,"data-gufi-src":"portal/reservas.tsx:332"},c.t,orden.k===c.k?orden.asc?" \u2191":" \u2193":"")))),__gh("tbody",{"data-gufi-src":"portal/reservas.tsx:338"},visibles.map(e=>__gh("tr",{key:e.id,onClick:()=>abrirEstancia(e),"data-gufi-src":"portal/reservas.tsx:340"},columnas.map(c=>__gh("td",{key:c.k,"data-d":c.derecha?"1":void 0,"data-ancho":c.ancho?"1":void 0,"data-gufi-src":"portal/reservas.tsx:341"},c.celda(e)))))))),__gh(FilaMas,{quedan:filas.length-ver,tanda:TANDA2,onClick:()=>setVer(ver+TANDA2)}))}function QuienCelda({e}){let apagada=e.ajuste||e.solo_limpieza,sub=e.ajuste?"Resoluci\xF3n o redondeo":[e.pais?paisEs(e.pais):null,e.personas?plural(e.personas,"persona","personas"):null].filter(Boolean).join(" \xB7 ");return __gh("span",{style:{display:"block"},"data-gufi-src":"portal/reservas.tsx:361"},__gh("span",{style:{display:"block",fontWeight:500,color:apagada?MUTED:INK},"data-gufi-src":"portal/reservas.tsx:362"},nombreHuesped(e)),sub?__gh("span",{style:{display:"block",fontSize:11.5,color:MUTED},"data-gufi-src":"portal/reservas.tsx:363"},sub):null)}var TEXTOS_RESERVAS=["huesped","canal","propiedad"],nombrePropiedad=(e,propPorId)=>(propPorId[e.p]||{}).nombre||"";function columnasReservas(variasProps,propPorId){return[{k:"entrada",t:"Entrada",valor:e=>e.entrada,celda:e=>fmtLarga(e.entrada)},{k:"salida",t:"Salida",valor:e=>e.ajuste?null:e.salida,celda:e=>e.ajuste?null:__gh("span",{style:{color:MUTED},"data-gufi-src":"portal/reservas.tsx:374"},fmtLarga(e.salida))},{k:"noches",t:"Noches",derecha:!0,valor:e=>e.ajuste?null:e.noches,celda:e=>e.ajuste?null:numero(e.noches)},{k:"huesped",t:"Hu\xE9sped",ancho:!0,valor:e=>tituloEstancia(e),celda:e=>__gh(QuienCelda,{e})},{k:"canal",t:"Canal",valor:e=>e.canal,celda:e=>__gh(CanalCelda,{canal:e.canal})},...variasProps?[{k:"propiedad",t:"Propiedad",ancho:!0,valor:e=>nombrePropiedad(e,propPorId),celda:e=>{let u=nombreUnidad(e,propPorId);return __gh("span",{style:{display:"block",color:INK_2},"data-gufi-src":"portal/reservas.tsx:382"},nombrePropiedad(e,propPorId),u?__gh("span",{style:{display:"block",fontSize:11.5,color:MUTED},"data-gufi-src":"portal/reservas.tsx:382"},u):null)}}]:[],{k:"pernocta",t:"Pernocta",derecha:!0,valor:e=>e.pernocta,celda:e=>money2(e.pernocta)},{k:"limpieza",t:"Limpieza",derecha:!0,valor:e=>e.limpieza,celda:e=>__gh("span",{style:{color:e.limpieza?INK:FAINT},"data-gufi-src":"portal/reservas.tsx:386"},money2(e.limpieza))},{k:"facturado",t:"Total",derecha:!0,valor:e=>e.facturado,celda:e=>__gh("span",{style:{fontWeight:600},"data-gufi-src":"portal/reservas.tsx:387"},money2(e.facturado))}]}function totalesReservas(filas){return filas.reduce((t3,e)=>(t3.pernocta+=e.pernocta,t3.limpieza+=e.limpieza,t3.facturado+=e.facturado,e.ajuste?t3.ajustes+=1:e.solo_limpieza?t3.limpiezas+=1:(t3.n+=1,t3.noches+=e.noches,t3.pernoctaNoches+=e.pernocta),t3),{n:0,noches:0,pernocta:0,limpieza:0,facturado:0,ajustes:0,limpiezas:0,pernoctaNoches:0})}function Lista({d:d2,periodo,propPorId,abrirEstancia}){let movil=useIsMobile(760),factura=deFactura(),[q,setQ]=(0,import_react28.useState)(""),[canal,setCanal]=(0,import_react28.useState)(""),[mes2,setMes]=(0,import_react28.useState)(""),{orden,pulsar}=useOrdenLista({k:"entrada",asc:!1},TEXTOS_RESERVAS),[exportando,setExportando]=(0,import_react28.useState)(!1),[errorExport,setErrorExport]=(0,import_react28.useState)("");(0,import_react28.useEffect)(()=>{setMes(""),setCanal("")},[d2]);let variasProps=d2.propiedades.length>1,meses=(0,import_react28.useMemo)(()=>Array.from(new Set(d2.estancias.map(e=>String(e.entrada||"").slice(0,7)))).filter(Boolean).sort(),[d2]),delMes=(0,import_react28.useMemo)(()=>mes2?d2.estancias.filter(e=>String(e.entrada||"").slice(0,7)===mes2):d2.estancias,[d2,mes2]),canales=(0,import_react28.useMemo)(()=>{let c={};return delMes.forEach(e=>{c[e.canal]=(c[e.canal]||0)+1}),canal&&!c[canal]&&(c[canal]=0),Object.entries(c).sort((a,b)=>b[1]-a[1]).map(([nombre,n])=>({nombre,n}))},[delMes,canal]),filtradas=(0,import_react28.useMemo)(()=>{let n=norm(q);return delMes.filter(e=>(!canal||e.canal===canal)&&(!n||norm(`${e.huesped} ${e.nro} ${nombrePropiedad(e,propPorId)}`).includes(n)))},[delMes,q,canal,propPorId]),columnas=(0,import_react28.useMemo)(()=>columnasReservas(variasProps,propPorId),[variasProps,propPorId]),filas=(0,import_react28.useMemo)(()=>ordenar(filtradas,orden,Object.fromEntries(columnas.filter(c=>c.valor).map(c=>[c.k,c.valor]))),[filtradas,orden,columnas]),tot=(0,import_react28.useMemo)(()=>totalesReservas(filtradas),[filtradas]),sueltas=[tot.ajustes?plural(tot.ajustes,"ajuste","ajustes"):null,tot.limpiezas?plural(tot.limpiezas,"s\xF3lo de limpieza","s\xF3lo de limpieza"):null].filter(Boolean).join(" y "),filtrado=!!(q.trim()||canal);async function exportar3(){setExportando(!0),setErrorExport("");try{await exportarEstancias(filas,propPorId,mes2?{desde:`${mes2}-01`,hasta:primeroMesSiguiente(mes2)}:periodo,"Reservas")}catch(e){setErrorExport(String(e&&e.message||e))}setExportando(!1)}return __gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/reservas.tsx:441"},__gh("style",{"data-gufi-src":"portal/reservas.tsx:442"},CSS_ESTANCIAS),__gh("div",{style:{display:"flex",alignItems:"baseline",gap:12,flexWrap:"wrap",padding:"0 4px"},"data-gufi-src":"portal/reservas.tsx:443"},__gh("h2",{style:{fontSize:22,fontWeight:650,letterSpacing:"-0.5px",color:INK,margin:0},"data-gufi-src":"portal/reservas.tsx:444"},mes2?mesLabel(mes2):periodoTexto(periodo.desde,periodo.hasta)),meses.length>1?__gh("span",{style:{marginLeft:"auto",maxWidth:"100%",minWidth:0},"data-gufi-src":"portal/reservas.tsx:447"},__gh(Segmentado,{id:"reservas-mes",valor:mes2,onCambio:setMes,opciones:[{v:"",t:"Todo"}].concat(meses.map(m=>({v:m,t:mayus2(mesCorto(m))})))})):null),__gh(Cifras2,{columnas:4},__gh(Cifra2,{etiqueta:"Estancias",valor:numero(tot.n),sub:sueltas?`m\xE1s ${sueltas}`:q.trim()?"que coinciden con la b\xFAsqueda":canal?`por ${canal}`:factura?"facturadas":"confirmadas"}),__gh(Cifra2,{etiqueta:"Noches",valor:numero(tot.noches),sub:tot.noches?`${money2(tot.pernoctaNoches/tot.noches)} de pernocta la noche`:"ninguna noche"}),__gh(Cifra2,{etiqueta:factura?"Facturado":"Lo que dejan",valor:euros2(tot.facturado),sub:`Pernocta ${euros2(tot.pernocta)} \xB7 limpieza ${euros2(tot.limpieza)}`}),__gh(Cifra2,{etiqueta:"Estancia media",valor:tot.n?`${decimal(tot.noches/tot.n)} noches`:"sin dato",sub:"por estancia"})),__gh("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:10},"data-gufi-src":"portal/reservas.tsx:461"},__gh(Buscador2,{valor:q,onCambio:setQ,placeholder:"Buscar hu\xE9sped, reserva o propiedad",ancho:movil?"100%":300}),canales.length>1?__gh("div",{style:{minWidth:0,maxWidth:"100%"},"data-gufi-src":"portal/reservas.tsx:464"},__gh(Segmentado,{id:"reservas-canal",valor:canal,onCambio:setCanal,opciones:[{v:"",t:"Todos",n:delMes.length}].concat(canales.map(c=>({v:c.nombre,n:c.n,t:__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6,verticalAlign:"middle"},"data-gufi-src":"portal/reservas.tsx:468"},__gh(LogoCanal,{canal:c.nombre,tam:16}),c.nombre)})))})):null,__gh("span",{style:{marginLeft:"auto"},"data-gufi-src":"portal/reservas.tsx:472"},__gh(BotonExcel,{onClick:exportar3,ocupado:exportando,desactivado:!filas.length}))),errorExport?__gh(Aviso2,{titulo:"No se ha podido preparar el Excel",texto:errorExport}):null,__gh(Grupo,{titulo:factura?"Estancias facturadas":"Reservas",cuenta:filas.length,sub:"Pulsa una para ver su detalle y qui\xE9n vino",pie:tot.ajustes?"Los ajustes son resoluciones de la plataforma y redondeos: suman al total pero no son estancias.":void 0},filas.length?__gh(TablaEstancias,{filas,columnas,orden,onOrden:pulsar,movil,abrirEstancia,filaMovil:e=>({lead:__gh(LogoCanal,{canal:e.canal,tam:28}),titulo:__gh("span",{style:{color:e.ajuste||e.solo_limpieza?MUTED:INK},"data-gufi-src":"portal/reservas.tsx:482"},nombreHuesped(e)),sub:[fmtLarga(e.entrada),e.ajuste?null:plural(e.noches,"noche","noches"),variasProps?nombrePropiedad(e,propPorId):null].filter(Boolean).join(" \xB7 "),valor:money2(e.facturado)})}):__gh(Vacio2,{titulo:"Ninguna estancia coincide",texto:filtrado?"Prueba con otro nombre o quita el filtro de canal.":void 0})))}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"],sinHW=nro=>String(nro||"").replace(/^HWG-/,""),nombreDe=r=>r.huesped||r.nro||"Reserva",mayus3=s=>s.charAt(0).toUpperCase()+s.slice(1),decimal2=n=>n.toLocaleString("es-ES",{maximumFractionDigits:1}),noches2=n=>`${numero(n)} ${n===1?"noche":"noches"}`,ALTO=34,FINDE="#fafafc",RAYADO="repeating-linear-gradient(135deg, #ededf1 0, #ededf1 1.5px, transparent 1.5px, transparent 6px)";function enCarriles(reservas,desde2){let orden=[...reservas].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 nochesEnMes(lista,desde2,dias){return lista.reduce((s,e)=>{let ini=Math.round((ms(e.entrada)-ms(desde2))/DIA);return s+Math.max(0,Math.min(ini+e.noches,dias)-Math.max(ini,0))},0)}function trazoSuave(pts){let n=pts.length,dx=[],m=[];for(let i=0;i9){let k=3/Math.sqrt(s);t3[i]=k*a*m[i],t3[i+1]=k*b*m[i]}}let d2=`M${pts[0][0]},${pts[0][1]}`;for(let i=0;idias,facturada=b.e.fact,estado=deFactura()?facturada?" \xB7 facturada, pulsa para ver el detalle":` \xB7 a\xFAn sin facturar por ${marca().nombre}`:"";return __gh("button",{type:"button",className:"cal-barra","data-on":elegida?"1":"0",onClick:()=>facturada?abrir(facturada):elegir(b.e),title:`${nombreDe(b.e)} \xB7 ${fmtLarga(b.e.entrada)} a ${fmtLarga(b.e.salida)} \xB7 ${noches2(b.e.noches)} \xB7 ${b.e.canal} \xB7 ${money2(b.e.cobrado)}${estado}`,style:{left:L+1.5,top:4+b.carril*ALTO,width:Math.max(6,w),height:ALTO-8,borderRadius:`${cortaIzq?0:6}px ${cortaDer?0:6}px ${cortaDer?0:6}px ${cortaIzq?0:6}px`},"data-gufi-src":"portal/calendario.tsx:111"},cortaIzq?null:__gh("span",{"aria-hidden":!0,style:{position:"absolute",left:0,top:0,bottom:0,width:3,background:colorCanal(b.e.canal)},"data-gufi-src":"portal/calendario.tsx:119"}),w>40?__gh("span",{style:{fontSize:12,fontWeight:600,color:INK,whiteSpace:"nowrap",overflow:"hidden"},"data-gufi-src":"portal/calendario.tsx:120"},nombreDe(b.e).split(" ")[0]):null,w>120?__gh("span",{style:{fontSize:11,color:MUTED,whiteSpace:"nowrap"},"data-gufi-src":"portal/calendario.tsx:121"},noches2(b.e.noches)):null)}function DetalleReserva({r,donde:donde2,cerrar}){return __gh("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"10px 12px 10px 16px",borderBottom:`1px solid ${HAIRLINE}`,background:"rgba(99,91,255,0.04)"},"data-gufi-src":"portal/calendario.tsx:129"},__gh(LogoCanal,{canal:r.canal,tam:28}),__gh("div",{style:{flex:1,minWidth:0},"data-gufi-src":"portal/calendario.tsx:131"},__gh("div",{style:{fontSize:13.5,fontWeight:600,color:INK,overflowWrap:"anywhere"},"data-gufi-src":"portal/calendario.tsx:132"},nombreDe(r)),__gh("div",{style:{fontSize:12,color:MUTED,marginTop:1},"data-gufi-src":"portal/calendario.tsx:133"},"Del ",fmtLarga(r.entrada)," al ",fmtLarga(r.salida)," \xB7 ",noches2(r.noches)," \xB7 ",r.canal,donde2?` \xB7 ${donde2}`:"")),__gh("div",{style:{textAlign:"right",flexShrink:0,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/calendario.tsx:137"},__gh("div",{style:{fontSize:13,fontWeight:600,color:INK},"data-gufi-src":"portal/calendario.tsx:138"},money2(r.cobrado)),__gh("div",{style:{fontSize:11.5,color:MUTED},"data-gufi-src":"portal/calendario.tsx:139"},deFactura()?"paga el hu\xE9sped \xB7 a\xFAn sin facturar":"paga el hu\xE9sped")),__gh("button",{type:"button","aria-label":"Cerrar",onClick:cerrar,style:{border:"none",background:FILL,width:26,height:26,borderRadius:99,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",color:MUTED,flexShrink:0,padding:0},"data-gufi-src":"portal/calendario.tsx:141"},__gh(import_lucide_react28.X,{size:13})))}function CurvaDias({id,valores,cuentas,total,col,conNumeros,dias}){let W=dias*col,ARR=6,BASE=34,pts=valores.map((v,i)=>[(i+.5)*col,BASE-Math.min(100,v)/100*(BASE-ARR)]),todos=[[0,pts[0][1]],...pts,[W,pts[pts.length-1][1]]],d2=trazoSuave(todos),gid=`cal-g-${id}`;return __gh("div",{style:{position:"relative",width:W,paddingTop:4},"data-gufi-src":"portal/calendario.tsx:157"},__gh("svg",{width:W,height:BASE+1,style:{display:"block"},"aria-hidden":!0,"data-gufi-src":"portal/calendario.tsx:158"},__gh("defs",{"data-gufi-src":"portal/calendario.tsx:159"},degradado(gid,SERIE,.22,0)),__gh("path",{d:`${d2} L${W},${BASE} L0,${BASE} Z`,fill:`url(#${gid})`,"data-gufi-src":"portal/calendario.tsx:160"}),__gh("path",{d:d2,fill:"none",stroke:SERIE,strokeWidth:2,strokeLinejoin:"round","data-gufi-src":"portal/calendario.tsx:161"})),conNumeros?__gh("div",{style:{display:"flex",height:16,alignItems:"center"},"data-gufi-src":"portal/calendario.tsx:164"},valores.map((v,i)=>__gh("span",{key:i,style:{width:col,flexShrink:0,textAlign:"center",fontSize:10,color:FAINT,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/calendario.tsx:165"},Math.round(v)))):__gh("div",{style:{height:6},"data-gufi-src":"portal/calendario.tsx:167"}),__gh("div",{style:{position:"absolute",inset:0,display:"flex"},"data-gufi-src":"portal/calendario.tsx:169"},valores.map((v,i)=>__gh("span",{key:i,title:`D\xEDa ${i+1}: ${numero(cuentas[i])} de ${numero(total)} ocupadas (${porcentaje(v)})`,style:{width:col,flexShrink:0},"data-gufi-src":"portal/calendario.tsx:170"}))))}function FilaGrupo({fila,dias,col,izq,desde:desde2,movil,alternar}){let n=fila.p.unidades.length,ocupDia=new Array(dias).fill(0);return 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),className:"cal-izq","aria-expanded":fila.abierta,style:{width:izq,border:"none",borderRight:`1px solid ${HAIRLINE}`,padding:"8px 12px 8px 10px",flexDirection:"row",alignItems:"center",gap:6,cursor:"pointer",textAlign:"left",fontFamily:"inherit"},"data-gufi-src":"portal/calendario.tsx:182"},__gh(import_lucide_react28.ChevronDown,{size:15,style:{color:MUTED,transform:fila.abierta?"none":"rotate(-90deg)",transition:"transform .2s",flexShrink:0}}),__gh("span",{style:{minWidth:0},"data-gufi-src":"portal/calendario.tsx:185"},__gh("span",{style:{display:"block",fontSize:13,fontWeight:600,color:INK,lineHeight:1.3,overflowWrap:"anywhere"},"data-gufi-src":"portal/calendario.tsx:186"},fila.p.nombre),__gh("span",{style:{display:"block",fontSize:11.5,color:MUTED,marginTop:1,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/calendario.tsx:187"},numero(n)," camas \xB7 ",porcentaje(fila.ocup),fila.abierta?"":" \xB7 pulsa para verlas"))),__gh(CurvaDias,{id:fila.k,valores:ocupDia.map(c=>c/n*100),cuentas:ocupDia,total:n,col,dias,conNumeros:!movil&&col>=28}))}function FilaReservas({fila,dias,col,izq,desde:desde2,lineas,abrir,elegir,selId}){let barras=enCarriles(fila.est,desde2),carriles=Math.max(1,...barras.map(b=>b.carril+1)),unidad=fila.tipo==="unidad",nombre=unidad?unidadDe(fila.u.nombre):fila.p.nombre;return __gh("div",{style:{display:"flex",position:"relative",zIndex:1,borderBottom:`1px solid ${unidad?"#f2f2f4":HAIRLINE}`},"data-gufi-src":"portal/calendario.tsx:201"},__gh("div",{className:"cal-izq",style:{width:izq,borderRight:`1px solid ${HAIRLINE}`,padding:unidad?"6px 12px 6px 31px":"8px 14px"},"data-gufi-src":"portal/calendario.tsx:202"},__gh("span",{style:{fontSize:unidad?12.5:13,fontWeight:unidad?500:600,color:INK,lineHeight:1.3,overflowWrap:"anywhere"},"data-gufi-src":"portal/calendario.tsx:203"},nombre),__gh("span",{style:{fontSize:11.5,color:MUTED,marginTop:1,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/calendario.tsx:204"},fila.ocup==null?"sin anuncio en el PMS":`${porcentaje(fila.ocup)} ocupado`)),__gh("div",{style:{position:"relative",width:dias*col,flexShrink:0,minHeight:carriles*ALTO+2,backgroundImage:lineas},"data-gufi-src":"portal/calendario.tsx:206"},barras.map(b=>__gh(Barra,{key:b.e.id,b,col,dias,abrir,elegir,elegida:selId===b.e.id}))))}var CSS2=` .cal-barra-mes { display: flex; align-items: center; gap: 12px; flex-wrap: wrap; padding: 0 4px; } .cal-seg { margin-left: auto; max-width: 100%; } .cal-izq { flex-shrink: 0; position: sticky; left: 0; z-index: 3; background: #fff; display: flex; flex-direction: column; justify-content: center; box-sizing: border-box; } .cal-barra { position: absolute; border: none; background: #f0f0f4; box-shadow: inset 0 0 0 1px rgba(0,0,0,0.035); padding: 0 6px 0 9px; display: flex; align-items: center; gap: 5px; overflow: hidden; cursor: pointer; text-align: left; font-family: inherit; transition: background .15s, box-shadow .15s; } .cal-barra:hover { background: #e8e8ee; } .cal-barra[data-on="1"] { background: #fff; box-shadow: inset 0 0 0 1.5px ${SERIE}; } @media (max-width: 760px) { .cal-seg { margin-left: 0; width: 100%; } } `;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)({}),[sel,setSel]=(0,import_react29.useState)(null),desde2=mes2+"-01",hasta=primeroMesSiguiente(mes2),f=useScript(api,"portal_facturado",{token,...filtros,desde:desde2,hasta,modo:"solape"},!0);(0,import_react29.useEffect)(()=>{setSel(null)},[f.datos]);let[nodo,setNodo]=(0,import_react29.useState)(null),[ancho,setAncho]=(0,import_react29.useState)(0);(0,import_react29.useLayoutEffect)(()=>{if(!nodo)return;setAncho(nodo.clientWidth);let ro=new ResizeObserver(()=>setAncho(nodo.clientWidth));return ro.observe(nodo),()=>ro.disconnect()},[nodo]);let IZQ=movil?124:240,dias=Math.round((ms(hasta)-ms(desde2))/DIA),COL=Math.max(movil?30:32,ancho?(ancho-IZQ-1)/dias:0),hoy2=new Date().toISOString().slice(0,10),diasFacturables=facturadoHasta?Math.max(0,Math.min(dias,Math.round((ms(facturadoHasta)-ms(desde2))/DIA))):dias,reservas=(0,import_react29.useMemo)(()=>{if(!f.datos||f.datos.demasiadas)return[];let facturadas={};f.datos.estancias.forEach(e=>{!e.ajuste&&!e.solo_limpieza&&e.nro&&(facturadas[e.p+"|"+sinHW(e.nro)]=e)});let ids=new Set(propiedades.map(p=>String(p.id)));return f.datos.reservas.filter(r=>ids.has(String(r.p))).map(r=>({...r,fact:facturadas[r.p+"|"+sinHW(r.nro)]||null}))},[f.datos,propiedades]),filas=(0,import_react29.useMemo)(()=>{let porProp={};reservas.forEach(r=>{(porProp[r.p]=porProp[r.p]||[]).push(r)});let 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:nochesEnMes(est,desde2,dias)/(dias*p.unidades.length)*100}),abierta){let porU={};est.forEach(e=>{(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:nochesEnMes(eu,desde2,dias)/dias*100})})}}else out.push({k:"p"+p.id,tipo:"piso",p,est,ocup:p.unidades.length?nochesEnMes(est,desde2,dias)/dias*100:null})}return out},[reservas,propiedades,abiertas,desde2,dias]),cifras=(0,import_react29.useMemo)(()=>{if(!f.datos||f.datos.demasiadas)return null;let capacidad=propiedades.reduce((s,p)=>s+p.unidades.length,0)*dias,ocupadas=nochesEnMes(reservas,desde2,dias);return{capacidad,ocupadas,ocupacion:capacidad?ocupadas/capacidad*100:null,entran:reservas.filter(r=>r.entrada>=desde2&&r.entradas+r.noches,0)/reservas.length:null,facturadas:reservas.filter(r=>r.fact).length}},[f.datos,reservas,propiedades,desde2,hasta,dias]),canales=(0,import_react29.useMemo)(()=>{let n={};return reservas.forEach(r=>{n[r.canal]=(n[r.canal]||0)+1}),Object.keys(n).sort((a,b)=>n[b]-n[a]).map(c=>({canal:c,n:n[c]}))},[reservas]),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)}}),lineas=`repeating-linear-gradient(90deg, transparent 0, transparent ${COL-1}px, #f2f2f4 ${COL-1}px, #f2f2f4 ${COL}px)`,hoyMes=hoy2.slice(0,7),ventana=[-3,-2,-1,0,1,2].map(k=>mesMas(hoyMes,k)),etiqueta4=m=>mayus3(mesCorto(m))+(m.slice(0,4)!==hoyMes.slice(0,4)?` ${m.slice(0,4)}`:""),nombreUnidad2=(0,import_react29.useMemo)(()=>{let o={};return propiedades.forEach(p=>p.unidades.forEach(u=>{o[u.id]=p.unidades.length>1?`${p.nombre} \xB7 ${unidadDe(u.nombre)}`:p.nombre})),o},[propiedades]),iHoy=listaDias.findIndex(d2=>d2.ymd===hoy2),sinFacturar=deFactura()&&diasFacturablessetMes(mesMas(mes2,-1)),despues:()=>setMes(mesMas(mes2,1))})),__gh("span",{className:"cal-seg","data-gufi-src":"portal/calendario.tsx:326"},__gh(Segmentado,{id:"cal-mes",valor:mes2,onCambio:setMes,opciones:ventana.map(m=>({v:m,t:etiqueta4(m)}))}))),deFactura()&&mes2>ultimoMes?__gh("p",{style:{fontSize:12.5,color:MUTED,margin:"-6px 4px 0",lineHeight:1.45},"data-gufi-src":"portal/calendario.tsx:332"},marca().nombre," todav\xEDa no ha facturado ",mesLabel(mes2).toLowerCase(),": las reservas salen del PMS y el detalle de cada una llega con la factura."):null,f.error?__gh(Aviso2,{titulo:"No se ha podido cargar el calendario",texto:f.error}):f.datos&&f.datos.demasiadas?__gh(Tarjeta3,null,__gh(Vacio2,{titulo:"Demasiadas estancias para un solo calendario",texto:"Elige un propietario para ver su calendario."})):__gh(__gf,null,cifras?__gh(Cifras2,{columnas:deFactura()?4:3},__gh(Cifra2,{etiqueta:"Ocupaci\xF3n",valor:porcentaje(cifras.ocupacion),sub:cifras.capacidad?`${numero(cifras.ocupadas)} de ${numero(cifras.capacidad)} noches${mes2>=hoyMes?", con lo ya reservado":""}`:"sin anuncio en el que medirla"}),__gh(Cifra2,{etiqueta:"Noches reservadas",valor:numero(cifras.ocupadas),sub:cifras.media==null?"ninguna reserva":`estancia media de ${decimal2(cifras.media)} noches`}),__gh(Cifra2,{etiqueta:"Reservas",valor:numero(reservas.length),sub:`${numero(cifras.entran)} ${cifras.entran===1?"entra":"entran"} en ${mesLabel(mes2).split(" ")[0].toLowerCase()}`}),deFactura()?__gh(Cifra2,{etiqueta:"Ya facturadas",valor:numero(cifras.facturadas),sub:cifras.facturadas?`de ${numero(reservas.length)}: pulsa una para ver su detalle`:`${marca().nombre} a\xFAn no ha facturado ninguna`}):null):null,__gh(Tarjeta3,null,__gh("div",{ref:setNodo,"data-gufi-src":"portal/calendario.tsx:355"},__gh("div",{style:{display:"flex",alignItems:"center",gap:16,flexWrap:"wrap",padding:"11px 16px",borderBottom:`1px solid ${HAIRLINE}`,minHeight:20},"data-gufi-src":"portal/calendario.tsx:356"},canales.length?__gh(Leyenda,{series:canales.map(c=>({logo:__gh(LogoCanal,{canal:c.canal,tam:16}),texto:__gh(__gf,null,c.canal,__gh("span",{style:{color:FAINT,marginLeft:6,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/calendario.tsx:357"},numero(c.n)))}))}):null,sinFacturar?__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6,fontSize:12.5,color:MUTED},"data-gufi-src":"portal/calendario.tsx:359"},__gh("span",{"aria-hidden":!0,style:{width:16,height:11,borderRadius:3,background:RAYADO,boxShadow:`inset 0 0 0 1px ${HAIRLINE}`},"data-gufi-src":"portal/calendario.tsx:360"}),"A\xFAn sin facturar"):null,reservas.length&&!movil?__gh("span",{style:{marginLeft:"auto",fontSize:12,color:FAINT},"data-gufi-src":"portal/calendario.tsx:363"},"Pulsa una reserva para ver su detalle"):null),sel?__gh(DetalleReserva,{r:sel,donde:nombreUnidad2[sel.u],cerrar:()=>setSel(null)}):null,f.cargando||!f.datos?__gh(FilasCargando,{n:8}):filas.length?__gh("div",{style:{overflow:"auto",maxHeight:movil?"calc(100vh - 150px)":"calc(100vh - 340px)"},"data-gufi-src":"portal/calendario.tsx:370"},__gh("div",{style:{width:IZQ+dias*COL,position:"relative"},"data-gufi-src":"portal/calendario.tsx:371"},__gh("div",{style:{display:"flex",position:"sticky",top:0,zIndex:4,background:"#fff",borderBottom:`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/calendario.tsx:373"},__gh("div",{className:"cal-izq",style:{width:IZQ,zIndex:5,borderRight:`1px solid ${HAIRLINE}`,padding:"0 14px",fontSize:12,color:MUTED},"data-gufi-src":"portal/calendario.tsx:374"},numero(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?FINDE:"#fff"},"data-gufi-src":"portal/calendario.tsx:381"},__gh("div",{style:{fontSize:10.5,color:FAINT},"data-gufi-src":"portal/calendario.tsx:382"},INICIAL[d2.dow]),__gh("div",{style:{fontSize:12.5,fontWeight:esHoy?650:500,color:esHoy?"#fff":INK,width:22,height:22,lineHeight:"22px",borderRadius:99,margin:"2px auto 0",background:esHoy?INK:"transparent",fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/calendario.tsx:383"},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:390"},listaDias.map((d2,i)=>{let sinFact=deFactura()&&i>=diasFacturables,finde=d2.dow===0||d2.dow===6;return!sinFact&&!finde?null:__gh("div",{key:d2.n,style:{position:"absolute",left:i*COL,width:COL,top:0,bottom:0,background:sinFact?RAYADO:FINDE},"data-gufi-src":"portal/calendario.tsx:395"})}),iHoy>=0?__gh("div",{style:{position:"absolute",left:(iHoy+.5)*COL,width:1,top:0,bottom:0,background:"#d1d1d6"},"data-gufi-src":"portal/calendario.tsx:397"}):null),filas.map(fila=>fila.tipo==="grupo"?__gh(FilaGrupo,{key:fila.k,fila,dias,col:COL,izq:IZQ,desde:desde2,movil,alternar}):__gh(FilaReservas,{key:fila.k,fila,dias,col:COL,izq:IZQ,desde:desde2,lineas,abrir:abrirEstancia,elegir:setSel,selId:sel?sel.id:null})))):__gh(Vacio2,{titulo:"Sin propiedades que ense\xF1ar",texto:"Cambia el filtro de propietario o de propiedad."})))),__gh("p",{style:{fontSize:12,color:MUTED,margin:"0 4px",lineHeight:1.5},"data-gufi-src":"portal/calendario.tsx:411"},deFactura()?`Aparecen las reservas confirmadas, est\xE9n facturadas o no; los d\xEDas rayados son los que ${marca().nombre} a\xFAn no ha facturado. Una reserva facturada abre su detalle; una sin facturar se ense\xF1a encima de la rejilla. La ocupaci\xF3n de cada fila es la del mes, con lo ya reservado.`:"Aparecen las reservas confirmadas. La ocupaci\xF3n de cada fila es la del mes, con lo ya reservado."))}var import_react33=require("react"),import_lucide_react32=require("lucide-react");var import_react30=require("react"),import_recharts2=require("recharts"),import_lucide_react29=require("lucide-react");var CSS_FACTURAS=` .f-dos { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 18px; align-items: start; } .f-dos-igual { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 18px; align-items: start; } @media (max-width: 1100px) { .f-dos, .f-dos-igual { grid-template-columns: minmax(0, 1fr); } } .f-tabla { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; } .f-tabla th { font-size: 12px; font-weight: 500; color: ${MUTED}; text-align: right; padding: 12px 16px 8px; white-space: nowrap; user-select: none; } .f-tabla th.f-i, .f-tabla td.f-i { text-align: left; } .f-tabla td { font-size: 13.5px; color: ${INK}; text-align: right; padding: 9px 16px; height: 50px; border-top: 1px solid ${HAIRLINE}; white-space: nowrap; vertical-align: middle; } .f-tabla td.f-t { white-space: normal; min-width: 160px; } .f-tabla tfoot td { font-weight: 600; } .f-tabla th[data-sort] { cursor: pointer; } .f-tabla th[data-sort]:hover, .f-tabla th[data-on="1"] { color: ${INK}; } .f-tabla tbody tr[data-toca] { cursor: pointer; } .f-tabla tbody tr[data-toca]:hover td { background: #fafafc; } .f-tabla tbody tr[data-elegida="1"] td { background: rgba(99,91,255,0.05); } .f-movil { display: none; } @media (max-width: 760px) { .f-escritorio { display: none; } .f-movil { display: block; } } .f-boton:hover:not(:disabled) { background: rgba(99,91,255,0.08) !important; } .f-boton-p:hover:not(:disabled) { filter: brightness(1.07); } .f-entrada { border: 1px solid ${HAIRLINE}; border-radius: 10px; padding: 8px 10px; font-size: 13.5px; color: ${INK}; background: #fff; outline: none; font-family: inherit; width: 100%; box-sizing: border-box; } .f-entrada:focus { border-color: ${ACCENT}; box-shadow: 0 0 0 3px rgba(99,91,255,0.15); } `;function Boton({icono:Icono,children,onClick,disabled,principal,title,ocupado}){return __gh("button",{type:"button",onClick,disabled:disabled||ocupado,title,className:principal?"f-boton-p":"f-boton",style:{display:"inline-flex",alignItems:"center",gap:6,height:32,padding:principal?"0 14px":"0 9px",borderRadius:9,border:"none",background:principal?ACCENT:"transparent",color:principal?"#fff":ACCENT,fontSize:13,fontWeight:principal?600:500,fontFamily:"inherit",cursor:disabled||ocupado?"default":"pointer",opacity:disabled?.4:1,whiteSpace:"nowrap",flexShrink:0},"data-gufi-src":"portal/desglose.tsx:59"},ocupado?__gh(import_lucide_react29.Loader2,{size:14,className:"animate-spin"}):Icono?__gh(Icono,{size:14}):null,children)}function Nota({tono,children,title}){return __gh("span",{title,style:{display:"inline-flex",alignItems:"baseline",gap:6,fontSize:12,color:MUTED,lineHeight:1.4,overflowWrap:"anywhere"},"data-gufi-src":"portal/desglose.tsx:74"},__gh("span",{style:{display:"inline-flex",alignSelf:"center"},"data-gufi-src":"portal/desglose.tsx:75"},__gh(Punto2,{tono})),__gh("span",{"data-gufi-src":"portal/desglose.tsx:76"},children))}function Cabecera2({titulo:titulo3,sub,derecha}){return __gh("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",padding:"0 4px"},"data-gufi-src":"portal/desglose.tsx:84"},__gh("div",{style:{minWidth:0,flex:"1 1 240px"},"data-gufi-src":"portal/desglose.tsx:85"},__gh("h2",{style:{fontSize:22,fontWeight:650,letterSpacing:"-0.5px",color:INK,margin:0,lineHeight:1.2},"data-gufi-src":"portal/desglose.tsx:86"},titulo3),sub?__gh("p",{style:{fontSize:12.5,color:MUTED,margin:"3px 0 0",lineHeight:1.45},"data-gufi-src":"portal/desglose.tsx:87"},sub):null),derecha?__gh("div",{style:{display:"flex",alignItems:"center",gap:8,flexWrap:"wrap",maxWidth:"100%"},"data-gufi-src":"portal/desglose.tsx:89"},derecha):null)}function PaginaDetalle({volverA,titulo:titulo3,sub,onVolver,accion,children}){return(0,import_react30.useEffect)(()=>{let col=document.querySelector("[data-gufi-main-scroll]");col?col.scrollTop=0:window.scrollTo({top:0})},[]),(0,import_react30.useEffect)(()=>{let onKey=e=>{e.key==="Escape"&&onVolver()};return window.addEventListener("keydown",onKey),()=>window.removeEventListener("keydown",onKey)},[onVolver]),__gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/desglose.tsx:110"},__gh("div",{style:{display:"grid",gap:6},"data-gufi-src":"portal/desglose.tsx:111"},__gh("button",{type:"button",onClick:onVolver,className:"f-boton",style:{justifySelf:"start",display:"inline-flex",alignItems:"center",gap:2,border:"none",background:"transparent",color:ACCENT,fontSize:14,fontWeight:500,padding:"4px 8px 4px 2px",borderRadius:8,cursor:"pointer",fontFamily:"inherit"},"data-gufi-src":"portal/desglose.tsx:112"},__gh(import_lucide_react29.ChevronLeft,{size:18}),volverA||"Volver"),__gh(Cabecera2,{titulo:titulo3,sub,derecha:accion})),children)}function FilaAccion({titulo:titulo3,sub,accion,nota:nota2,primera}){return __gh("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",padding:"12px 16px",borderTop:primera?"none":`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/desglose.tsx:126"},__gh("div",{style:{flex:"1 1 220px",minWidth:0},"data-gufi-src":"portal/desglose.tsx:127"},__gh("div",{style:{fontSize:13.5,fontWeight:500,color:INK},"data-gufi-src":"portal/desglose.tsx:128"},titulo3),sub?__gh("div",{style:{fontSize:12,color:MUTED,marginTop:2,lineHeight:1.45},"data-gufi-src":"portal/desglose.tsx:129"},sub):null,nota2?__gh("div",{style:{marginTop:5},"data-gufi-src":"portal/desglose.tsx:130"},nota2):null),accion)}function GraficaMeses({serie,sel,elegir,etiqueta:etiqueta4,titulo:titulo3,alto=240}){let max=Math.max(0,...serie.map(s=>Math.max(s.total,s.base))),negativo=serie.some(s=>s.base<0||s.total<0),ticks=marcas(max),pulsar=b=>{let k=b&&(b.k||b.payload&&b.payload.k);k&&elegir(k)};return __gh("div",{style:{flex:1,minHeight:alto,padding:"6px 6px 8px 0"},"data-gufi-src":"portal/desglose.tsx:151"},__gh(import_recharts2.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts2.BarChart,{data:serie,margin:MARGEN,barCategoryGap:"26%"},__gh(import_recharts2.CartesianGrid,{...REJILLA}),__gh(import_recharts2.XAxis,{dataKey:"k",...EJE,tickFormatter:etiqueta4}),negativo?__gh(import_recharts2.YAxis,{...EJE,width:56,tickFormatter:x=>eurosEje(x)}):__gh(import_recharts2.YAxis,{...EJE,width:56,domain:[0,ticks[ticks.length-1]],ticks,tickFormatter:x=>eurosEje(x)}),__gh(import_recharts2.Tooltip,{cursor:CURSOR_BARRA,content:__gh(Globo,{titulo:p=>titulo3(p.k),filas:p=>[{color:SERIE,texto:"Base imponible",valor:money2(p.base)},{color:SERIE_GRIS,texto:"IVA",valor:money2(p.iva)},{color:"transparent",texto:`Total, ${numero(p.n)} ${p.n===1?"factura":"facturas"}`,valor:money2(p.total)}]})}),__gh(import_recharts2.Bar,{dataKey:"base",stackId:"f",maxBarSize:46,animationDuration:600,style:{cursor:"pointer"},onClick:pulsar},serie.map(s=>__gh(import_recharts2.Cell,{key:s.k,fill:!sel||sel===s.k?SERIE:"#dcdaff"}))),__gh(import_recharts2.Bar,{dataKey:"iva",stackId:"f",maxBarSize:46,radius:[4,4,0,0],animationDuration:600,style:{cursor:"pointer"},onClick:pulsar},serie.map(s=>__gh(import_recharts2.Cell,{key:s.k,fill:!sel||sel===s.k?SERIE_GRIS:"#ececf0"}))))))}function LeyendaBaseIva(){return __gh("div",{style:{padding:"14px 18px 0"},"data-gufi-src":"portal/desglose.tsx:179"},__gh(Leyenda,{series:[{color:SERIE,texto:"Base imponible"},{color:SERIE_GRIS,texto:"IVA"}]}))}var porNoche=(importe,noches3)=>noches3?money2(importe/noches3):null;function frase(s){let t3=String(s||"").trim(),cap=x=>x.charAt(0).toUpperCase()+x.slice(1);return t3.split(/\s+-\s+/).map(p=>p===p.toUpperCase()&&/[A-ZÁÉÍÓÚÑ]/.test(p)?cap(p.toLowerCase()):p).join(" \xB7 ")}function porConcepto(liquidacion){let grupos={};return 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})}),Object.values(grupos).sort((a,b)=>b.base-a.base)}var TANDA_CONCEPTOS=12;function PorConcepto({filas,base:base2,noches:noches3}){let[ver,setVer]=(0,import_react30.useState)(TANDA_CONCEPTOS);return __gh(Grupo,{titulo:"Por concepto",cuenta:filas.length,sub:"Qu\xE9 parte de la base se lleva cada concepto"},filas.slice(0,ver).map((g,i)=>{let parte=base2?g.base/base2*100:0;return __gh("div",{key:g.k,style:{padding:"10px 16px 11px",borderTop:i?`1px solid ${HAIRLINE}`:"none"},"data-gufi-src":"portal/desglose.tsx:221"},__gh("div",{style:{display:"flex",alignItems:"baseline",gap:12},"data-gufi-src":"portal/desglose.tsx:222"},__gh("span",{style:{flex:1,minWidth:0,fontSize:13.5,fontWeight:500,color:INK,overflowWrap:"anywhere"},"data-gufi-src":"portal/desglose.tsx:223"},frase(g.k.charAt(0)+g.k.slice(1).toLowerCase())),__gh("span",{style:{fontSize:13.5,fontWeight:600,color:INK,fontVariantNumeric:"tabular-nums",flexShrink:0},"data-gufi-src":"portal/desglose.tsx:224"},money2(g.base))),__gh("div",{style:{display:"flex",alignItems:"center",gap:10,marginTop:6},"data-gufi-src":"portal/desglose.tsx:226"},__gh("span",{style:{flex:1,height:4,borderRadius:99,background:FILL,overflow:"hidden"},"data-gufi-src":"portal/desglose.tsx:227"},__gh("span",{style:{display:"block",height:"100%",width:`${Math.max(1,Math.min(100,parte))}%`,background:SERIE,borderRadius:99},"data-gufi-src":"portal/desglose.tsx:228"})),__gh("span",{style:{fontSize:11.5,color:MUTED,fontVariantNumeric:"tabular-nums",flexShrink:0},"data-gufi-src":"portal/desglose.tsx:230"},Math.round(parte).toLocaleString("es-ES")," % \xB7 ",numero(g.n)," ",g.n===1?"l\xEDnea":"l\xEDneas",noches3?` \xB7 ${porNoche(g.base,noches3)}/noche`:"")))}),__gh(FilaMas,{quedan:filas.length-ver,tanda:TANDA_CONCEPTOS,onClick:()=>setVer(ver+TANDA_CONCEPTOS)}))}var idSeccion=(l,k)=>`f-sec-${l.id}-${k}`;function irASeccion(id){let el=document.getElementById(id);el&&el.scrollIntoView({behavior:"smooth",block:"start"})}function PorSeccion({liquidacion}){let noches3=liquidacion.actividad.noches;return __gh(Grupo,{titulo:"Por secci\xF3n",cuenta:liquidacion.secciones.length,sub:`Como las ordena ${marca().nombre} en la liquidaci\xF3n. Pulsa una para ver sus l\xEDneas`},liquidacion.secciones.map((s,k)=>__gh(Fila2,{key:k,primera:k===0,titulo:frase(s.titulo),onClick:()=>irASeccion(idSeccion(liquidacion,k)),lead:s.fuera?__gh(Punto2,{tono:"aviso"}):void 0,sub:s.base&&noches3?`${porNoche(s.base,noches3)} por noche liquidada`:s.base?void 0:"a 0 \u20AC en esta factura",valor:money2(s.base),valorSub:s.fuera?`y ${money2(s.fuera)} fuera de esta factura`:void 0})))}var TANDA_LINEAS=15;function Seccion({s,id,noches:noches3}){let[ver,setVer]=(0,import_react30.useState)(TANDA_LINEAS),conImporte=s.gastos.filter(g=>g.en_factura||g.base),aCero=s.gastos.filter(g=>!g.en_factura&&!g.base),filas=[...s.por_estancia.map(g=>({clave:`e-${g.concepto}-${g.criterio}-${g.en_factura}`,titulo:frase(g.concepto),en_factura:g.en_factura,base:g.base,sub:[g.criterio,`${numero(g.estancias)} ${g.estancias===1?"estancia":"estancias"}`,`${numero(g.noches)} noches`,`sobre ${money2(g.sobre)} facturados`].filter(Boolean).join(" \xB7 "),sub2:null})),...conImporte.map((g,k)=>({clave:`g-${k}`,titulo:frase(g.concepto),en_factura:g.en_factura,base:g.base,sub:[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 "),sub2: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 ")}))],pie=[s.fuera?`Adem\xE1s, ${money2(s.fuera)} de esta secci\xF3n est\xE1n en la liquidaci\xF3n pero no van en esta factura.`:"",aCero.length?`A 0 \u20AC este mes: ${aCero.map(g=>frase(g.concepto)).join(", ")}.`:""].filter(Boolean).join(" ");return __gh("div",{id,style:{scrollMarginTop:80},"data-gufi-src":"portal/desglose.tsx:284"},__gh(Grupo,{titulo:frase(s.titulo),cuenta:filas.length||void 0,sub:s.base&&noches3?`${porNoche(s.base,noches3)} por noche liquidada`:void 0,derecha:__gh("span",{style:{fontSize:15,fontWeight:600,color:s.base?INK:FAINT,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/desglose.tsx:287"},money2(s.base)),pie:pie||void 0},filas.length?__gh(__gf,null,filas.slice(0,ver).map((x,i)=>__gh(Fila2,{key:x.clave,primera:i===0,titulo:x.titulo,lead:x.en_factura?void 0:__gh(Punto2,{tono:"aviso"}),sub:__gh(__gf,null,x.sub,x.sub2?__gh("span",{style:{display:"block",marginTop:1},"data-gufi-src":"portal/desglose.tsx:293"},x.sub2):null),valor:x.en_factura?money2(x.base):__gh("span",{style:{color:FAINT,fontWeight:500},"data-gufi-src":"portal/desglose.tsx:294"},money2(x.base)),valorSub:x.en_factura?void 0:"no va en esta factura"})),__gh(FilaMas,{quedan:filas.length-ver,tanda:TANDA_LINEAS,onClick:()=>setVer(ver+TANDA_LINEAS)})):__gh(Vacio2,{titulo:"Nada que cobrar este mes",texto:aCero.length?void 0:"La secci\xF3n existe en la liquidaci\xF3n y va a cero."})))}function Liquidacion({l,factura,varias,nombrePiso}){let conceptos=(0,import_react30.useMemo)(()=>porConcepto(l),[l]),noches3=l.actividad.noches;return __gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/desglose.tsx:309"},varias?__gh("div",{style:{padding:"6px 4px 0"},"data-gufi-src":"portal/desglose.tsx:311"},__gh("h3",{style:{fontSize:17,fontWeight:650,letterSpacing:"-0.3px",color:INK,margin:0},"data-gufi-src":"portal/desglose.tsx:312"},nombrePiso(l)),__gh("p",{style:{fontSize:12.5,color:MUTED,margin:"2px 0 0"},"data-gufi-src":"portal/desglose.tsx:313"},numero(l.actividad.estancias)," estancias y ",numero(noches3)," noches liquidadas entre el ",fmtLarga(l.desde)," y el ",fmtLarga(l.hasta))):null,l.notas.length?__gh(Grupo,{titulo:`Nota de ${marca().nombre}`},l.notas.map((n,k)=>__gh("div",{key:k,style:{display:"flex",gap:10,padding:"12px 16px",borderTop:k?`1px solid ${HAIRLINE}`:"none",fontSize:13,color:INK,lineHeight:1.55,whiteSpace:"pre-line",overflowWrap:"anywhere"},"data-gufi-src":"portal/desglose.tsx:321"},__gh("span",{style:{display:"flex",paddingTop:6},"data-gufi-src":"portal/desglose.tsx:322"},__gh(Punto2,{tono:"info"})),__gh("span",{style:{minWidth:0},"data-gufi-src":"portal/desglose.tsx:323"},n)))):null,__gh("div",{className:conceptos.length>1?"f-dos-igual":void 0,"data-gufi-src":"portal/desglose.tsx:328"},conceptos.length>1?__gh(PorConcepto,{filas:conceptos,base:factura.base,noches:noches3}):null,__gh(PorSeccion,{liquidacion:l})),__gh("div",{className:"f-dos-igual","data-gufi-src":"portal/desglose.tsx:332"},l.secciones.map((s,k)=>__gh(Seccion,{key:k,s,id:idSeccion(l,k),noches:noches3}))))}function CifrasFactura({factura,liquidaciones}){let estancias=liquidaciones.reduce((a,l)=>a+l.actividad.estancias,0),noches3=liquidaciones.reduce((a,l)=>a+l.actividad.noches,0);return __gh(Cifras2,{columnas:liquidaciones.length?4:3},__gh(Cifra2,{etiqueta:"Base imponible",valor:money2(factura.base),sub:factura.rectificativa?"Factura rectificativa":"Antes de impuestos",tono:factura.rectificativa?"aviso":void 0}),__gh(Cifra2,{etiqueta:"IVA",valor:money2(factura.iva),sub:factura.base?`${(Math.round(factura.iva/factura.base*1e3)/10).toLocaleString("es-ES")} % de la base`:void 0}),__gh(Cifra2,{etiqueta:"Total",valor:money2(factura.total),sub:factura.fecha?`Emitida el ${fmtLarga(factura.fecha)}`:void 0}),liquidaciones.length?__gh(Cifra2,{etiqueta:"Base por noche liquidada",valor:noches3?money2(factura.base/noches3):"sin dato",sub:`${numero(estancias)} estancias y ${numero(noches3)} noches liquidadas`}):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 exportar3(){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))}}let sub=factura.periodo?`Liquidaci\xF3n del ${fmtLarga(factura.periodo.desde)} al ${fmtLarga(factura.periodo.hasta)}`:`Emitida el ${fmtLarga(factura.fecha)}`;return __gh(PaginaDetalle,{volverA:"Facturas",titulo:`Factura ${factura.numero}`,sub,onVolver,accion:d2.datos&&d2.datos.liquidaciones.length?__gh(Boton,{icono:import_lucide_react29.Download,ocupado:exportando==="\u2026",onClick:exportar3},"Desglose en Excel"):null},__gh("style",{"data-gufi-src":"portal/desglose.tsx:383"},CSS_FACTURAS),exportando&&exportando!=="\u2026"?__gh(Aviso2,{titulo:"No se ha podido preparar el Excel",texto:exportando}):null,d2.error?__gh(Aviso2,{titulo:"No se ha podido leer el desglose",texto:d2.error}):d2.cargando||!d2.datos?__gh(Tarjeta3,null,__gh(FilasCargando,{n:8})):__gh(__gf,null,__gh(CifrasFactura,{factura:d2.datos.factura,liquidaciones:d2.datos.liquidaciones}),d2.datos.sin_liquidacion?__gh(Tarjeta3,null,__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."})):d2.datos.liquidaciones.map(l=>__gh(Liquidacion,{key:l.id,l,factura:d2.datos.factura,varias:d2.datos.liquidaciones.length>1,nombrePiso})),d2.datos.liquidaciones.length?__gh("p",{style:{fontSize:12,color:MUTED,margin:"0 4px",lineHeight:1.5},"data-gufi-src":"portal/desglose.tsx:396"},"Es la liquidaci\xF3n de Odoo tal como la cierra ",marca().nombre,". Lo que lleva un punto \xE1mbar est\xE1 en la liquidaci\xF3n pero no en esta factura, y no suma. El Excel lleva todas las l\xEDneas, con el proveedor y su factura."):null))}var import_react31=require("react"),import_lucide_react30=require("lucide-react");var AEAT={aceptada:{grupo:"enviadas",t:"Enviada a la AEAT",tono:"ok"},aceptada_con_errores:{grupo:"enviadas",t:"Aceptada con avisos",tono:"aviso"},pendiente:{grupo:"pendientes",t:"Pendiente de env\xEDo",tono:"aviso"},preparado:{grupo:"pendientes",t:"Pendiente de env\xEDo",tono:"aviso"},enviado:{grupo:"pendientes",t:"Pendiente de env\xEDo",tono:"aviso"},en_duda:{grupo:"pendientes",t:"Comprobando con la AEAT",tono:"aviso"},rechazada:{grupo:"rechazadas",t:"Rechazada",tono:"mal"},error:{grupo:"rechazadas",t:"Error en el env\xEDo",tono:"mal"},no_aplica:{grupo:"sin_envio",t:"Sellada, sin env\xEDo",tono:"mudo"}},SIN_SELLAR={grupo:"sin_envio",t:"Sin sellar",tono:"aviso"},SELLADA_SIN_REGISTRO={grupo:"sin_envio",t:"Sellada, sin env\xEDo",tono:"mudo"};function aeatDe(f){return f.sellada?f.remision_estado==null?SELLADA_SIN_REGISTRO:AEAT[f.remision_estado]||{grupo:"otro",t:String(f.remision_estado),tono:"mudo"}:SIN_SELLAR}var FILTROS_AEAT=[{k:"todas",t:"Todas"},{k:"enviadas",t:"Enviadas"},{k:"pendientes",t:"Pendientes"},{k:"rechazadas",t:"Rechazadas"},{k:"sin_envio",t:"Sin env\xEDo"},{k:"otro",t:"Otro estado"}],ORDEN_GRUPO={rechazadas:0,pendientes:1,otro:2,sin_envio:3,enviadas:4};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.fechaf.destinatario_nombre||f.nombres_huespedes||f.estancia_huesped||"",norm2=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),mayus4=s=>s.charAt(0).toUpperCase()+s.slice(1);function rango(a,b){if(!a)return"";if(!b)return fmtLarga(a);let corta=s=>fmtLarga(s).replace(/\s\d{4}$/,"");return String(a).slice(0,4)===String(b).slice(0,4)?`${corta(a)} \u2192 ${fmtLarga(b)}`:`${fmtLarga(a)} \u2192 ${fmtLarga(b)}`}function Hacienda({f,compacta}){let a=aeatDe(f),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:compacta?"100%":250,textAlign:"left",whiteSpace:"normal"},"data-gufi-src":"portal/facturas_huesped.tsx:107"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7,fontSize:13,color:INK},title:conMotivo?f.remision_respuesta:void 0,"data-gufi-src":"portal/facturas_huesped.tsx:108"},__gh(Punto2,{tono:a.tono}),a.t),f.remision_csv||cotejo?cotejo?__gh("a",{href:cotejo,target:"_blank",rel:"noopener noreferrer",onClick:e=>e.stopPropagation(),style:{fontSize:12,color:ACCENT,textDecoration:"none",paddingLeft:14},title:"Abrir el cotejo de esta factura en la web de la AEAT","data-gufi-src":"portal/facturas_huesped.tsx:113"},f.remision_csv?`CSV ${f.remision_csv}`:"Ver en la AEAT"):__gh("span",{style:{fontSize:12,color:MUTED,paddingLeft:14},"data-gufi-src":"portal/facturas_huesped.tsx:115"},"CSV ",f.remision_csv):null,conMotivo?__gh("span",{style:{fontSize:12,color:MUTED,lineHeight:1.35,paddingLeft:14},title:f.remision_respuesta,"data-gufi-src":"portal/facturas_huesped.tsx:117"},motivoCorto(f.remision_respuesta)):null,f.sellada?__gh("span",{style:{fontSize:11,color:FAINT,paddingLeft:14,fontFamily:"ui-monospace, SFMono-Regular, Menlo, monospace"},title:`Huella ${f.huella}\u2026`,"data-gufi-src":"portal/facturas_huesped.tsx:118"},"huella ",f.huella,"\u2026"):null)}function BotonPdf({api,token,f}){let[estado,setEstado]=(0,import_react31.useState)("");async function bajar(e){e.stopPropagation(),setEstado("\u2026");try{let r=await api("portal_factura_pdf",{token,facturaId:f.id});descargarPdfBase64(r.pdf,r.filename),setEstado("")}catch(ex){setEstado(String(ex&&ex.message||ex))}}return f.estado==="revision"?__gh(Nota,{tono:"aviso",title:f.aviso||""},"a revisar"):__gh("span",{style:{display:"inline-flex",flexDirection:"column",alignItems:"flex-end",maxWidth:220},"data-gufi-src":"portal/facturas_huesped.tsx:133"},__gh(Boton,{icono:import_lucide_react30.Download,onClick:bajar,ocupado:estado==="\u2026"},"PDF"),estado&&estado!=="\u2026"?__gh("span",{style:{whiteSpace:"normal",textAlign:"right"},"data-gufi-src":"portal/facturas_huesped.tsx:135"},__gh(Nota,{tono:"mal"},estado)):null)}function ComoSeEmiten({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"),filas=[];return filas.push(on?{titulo:"Se emiten solas cada noche",sub:`Las estancias que ya han entrado y no tienen factura, en la serie ${auto.map(x=>x.prefijo||x.serie).join(" \xB7 ")} desde el ${fmtLarga(auto[0].auto_desde)}`}:{lead:__gh(Punto2,{tono:"aviso"}),titulo:"La emisi\xF3n autom\xE1tica no est\xE1 puesta",sub:`En la serie ${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&&(filas.push({titulo:`Emite ${verifactu.razon_social}`,sub:`NIF ${verifactu.nif}`}),remite?firmado?aeat.enviadas?filas.push({titulo:"Se env\xEDan a la Agencia Tributaria",sub:`Desde el ${fmtLarga(aeat.primera)}, cada factura se sella con huella encadenada y se env\xEDa. El mandato de representaci\xF3n est\xE1 firmado.`}):filas.push({lead:__gh(Punto2,{tono:"aviso"}),titulo:"Todav\xEDa no ha salido ninguna a la Agencia Tributaria",sub:"Cada factura se sella con huella encadenada para enviarse; el mandato de representaci\xF3n est\xE1 firmado."}):filas.push({lead:__gh(Punto2,{tono:"aviso"}),titulo:"Todav\xEDa no se env\xEDan a la Agencia Tributaria",sub:`Falta que ${verifactu.razon_social} firme el mandato de representaci\xF3n: hasta que est\xE9 firmado no sale ninguna factura. Cada una se sella con huella encadenada.`}):filas.push({titulo:"No se manda nada a la AEAT",sub:"Cada factura se sella con huella encadenada y se conserva (modo \xABsolo facturar\xBB)"}),remite&&filas.push({lead:aeat.rechazadas?__gh(Punto2,{tono:"mal"}):aeat.pendientes?__gh(Punto2,{tono:"aviso"}):void 0,titulo:`Ante la AEAT: ${numero(aeat.enviadas)} ${aeat.enviadas===1?"enviada":"enviadas"}`,sub:[`${numero(aeat.pendientes)} ${aeat.pendientes===1?"pendiente":"pendientes"}`,`${numero(aeat.rechazadas)} ${aeat.rechazadas===1?"rechazada":"rechazadas"}`,`${numero(aeat.sin_envio)} sin env\xEDo`,aeat.otro?`${numero(aeat.otro)} en otro estado`:""].filter(Boolean).join(" \xB7 ")})),__gh(Grupo,{titulo:"C\xF3mo se emiten",sub:"De todas tus facturas, no s\xF3lo de las que est\xE1s viendo"},filas.map((x,i)=>__gh(Fila2,{key:i,primera:i===0,lead:x.lead,titulo:x.titulo,sub:x.sub})))}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":""}var TANDA_INCIDENCIAS=5;function Incidencias({lista,onVer}){let[ver,setVer]=(0,import_react31.useState)(TANDA_INCIDENCIAS);return __gh(Grupo,{titulo:lista.length===1?"Una factura no est\xE1 como debe en Hacienda":"No est\xE1n como deben en Hacienda",cuenta:lista.length>1?lista.length:void 0,sub:"Pulsa una para verla en la lista"},lista.slice(0,ver).map(({f,motivo:motivo2},i)=>__gh(Fila2,{key:f.id,primera:i===0,lead:__gh(Punto2,{tono:"mal"}),onClick:()=>onVer(f.numero_completo),titulo:`${f.numero_completo}${nombreDe2(f)?` \xB7 ${nombreDe2(f)}`:""}`,sub:motivo2,valor:money2(f.total),valorSub:fmtLarga(f.fecha)})),__gh(FilaMas,{quedan:lista.length-ver,tanda:TANDA_INCIDENCIAS,onClick:()=>setVer(ver+TANDA_INCIDENCIAS)}))}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"]],Campo4=({l,ancho,children})=>__gh("label",{style:{display:"flex",flexDirection:"column",gap:4,fontSize:12,color:MUTED,gridColumn:ancho?"1 / -1":void 0},"data-gufi-src":"portal/facturas_huesped.tsx:244"},l,children),PANEL={padding:"12px 16px 16px",background:"#fafafc",borderTop:`1px solid ${HAIRLINE}`,fontSize:13,color:INK,lineHeight:1.5};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 error=err?__gh("div",{style:{marginTop:8},"data-gufi-src":"portal/facturas_huesped.tsx:287"},__gh(Nota,{tono:"mal"},err)):null;return estado==="cargando"?__gh("div",{style:PANEL,"data-gufi-src":"portal/facturas_huesped.tsx:289"},__gh("span",{className:"k-esqueleto",style:{display:"block",width:"50%",height:11,borderRadius:6},"data-gufi-src":"portal/facturas_huesped.tsx:289"})):estado==="hecho"?__gh("div",{style:PANEL,"data-gufi-src":"portal/facturas_huesped.tsx:291"},__gh(Nota,{tono:"ok"},"Factura ",__gh("b",{style:{color:INK},"data-gufi-src":"portal/facturas_huesped.tsx:291"},hecha)," emitida. Se manda a Hacienda en el momento.")):yaVale?__gh("div",{style:PANEL,"data-gufi-src":"portal/facturas_huesped.tsx:295"},__gh("div",{style:{color:MUTED,marginBottom:10},"data-gufi-src":"portal/facturas_huesped.tsx:296"},"Esta estancia ya tiene todos los datos del hu\xE9sped: se factura sola esta noche. Si la necesitas ya, puedes emitirla ahora."),__gh(Boton,{principal:!0,ocupado:estado==="guardando",onClick:()=>facturar("ya")},"Emitir factura ahora"),error):__gh("div",{style:PANEL,"data-gufi-src":"portal/facturas_huesped.tsx:303"},__gh("div",{style:{fontSize:12,color:MUTED,marginBottom:10},"data-gufi-src":"portal/facturas_huesped.tsx:304"},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:307"},__gh(Campo4,{l:"Nombre y apellidos"},__gh("input",{className:"f-entrada",value:d2.nombre,onChange:pon("nombre"),"data-gufi-src":"portal/facturas_huesped.tsx:308"})),__gh(Campo4,{l:"Tipo de documento"},__gh("select",{className:"f-entrada",value:d2.tipo,onChange:pon("tipo"),"data-gufi-src":"portal/facturas_huesped.tsx:310"},TIPOS_DOC.map(([v,t3])=>__gh("option",{key:v,value:v,"data-gufi-src":"portal/facturas_huesped.tsx:311"},t3)))),__gh(Campo4,{l:"N\xFAmero del documento"},__gh("input",{className:"f-entrada",value:d2.documento,onChange:e=>setD(x=>({...x,documento:e.target.value.toUpperCase()})),"data-gufi-src":"portal/facturas_huesped.tsx:315"})),d2.tipo!=="nif"?__gh(Campo4,{l:"Pa\xEDs que lo expide"},__gh("select",{className:"f-entrada",value:d2.pais,onChange:pon("pais"),"data-gufi-src":"portal/facturas_huesped.tsx:319"},__gh("option",{value:"","data-gufi-src":"portal/facturas_huesped.tsx:320"},"Elige el pa\xEDs\u2026"),PAISES2.map(x=>__gh("option",{key:x.c,value:x.c,"data-gufi-src":"portal/facturas_huesped.tsx:321"},x.n)))):null,__gh(Campo4,{l:"Direcci\xF3n (calle, c\xF3digo postal y ciudad)",ancho:!0},__gh("input",{className:"f-entrada",value:d2.direccion,onChange:pon("direccion"),"data-gufi-src":"portal/facturas_huesped.tsx:325"}))),error,__gh("div",{style:{display:"flex",flexWrap:"wrap",gap:10,marginTop:12,alignItems:"center"},"data-gufi-src":"portal/facturas_huesped.tsx:328"},__gh(Boton,{principal:!0,ocupado:estado==="guardando",onClick:()=>facturar("datos")},"Emitir factura"),__gh("span",{style:{fontSize:12,color:FAINT},"data-gufi-src":"portal/facturas_huesped.tsx:330"},"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")}}return estado==="hecho"?__gh("div",{style:PANEL,"data-gufi-src":"portal/facturas_huesped.tsx:354"},__gh(Nota,{tono:"ok"},"Factura simplificada ",__gh("b",{style:{color:INK},"data-gufi-src":"portal/facturas_huesped.tsx:354"},hecha)," emitida. Se manda a Hacienda en el momento.")):__gh("div",{style:PANEL,"data-gufi-src":"portal/facturas_huesped.tsx:357"},__gh("div",{style:{color:MUTED,marginBottom:10},"data-gufi-src":"portal/facturas_huesped.tsx:358"},"Si el hu\xE9sped no vino y pag\xF3 la reserva, se emite una factura simplificada de ",__gh("b",{style:{color:INK},"data-gufi-src":"portal/facturas_huesped.tsx:359"},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:6,alignItems:"center"},"data-gufi-src":"portal/facturas_huesped.tsx:361"},__gh(Boton,{principal:!0,ocupado:estado==="guardando",onClick:emitir},"Emitir simplificada"),__gh(Boton,{disabled:estado==="guardando",onClick:onCancelar},"Cancelar")),err?__gh("div",{style:{marginTop:8},"data-gufi-src":"portal/facturas_huesped.tsx:365"},__gh(Nota,{tono:"mal"},err)):null)}function FilaPendiente({p,primera,abierta,modo,abrir,api,token,recargar}){let canal=canalDe(p.canal,esHW({confirmation_code:p.codigo})),motivo2=p.sale_esta_noche?{tono:"ok",t:"sale esta noche"}:p.no_vale?{tono:"mal",t:`falta ${p.no_vale}`}:p.sin_datos?{tono:"aviso",t:"faltan datos del hu\xE9sped"}:null,abiertaAqui=abierta===p.codigo;return __gh("div",{style:{borderTop:primera?"none":`1px solid ${HAIRLINE}`,background:abiertaAqui?"rgba(99,91,255,0.04)":void 0},"data-gufi-src":"portal/facturas_huesped.tsx:379"},__gh("div",{style:{display:"flex",alignItems:"center",gap:12,padding:"9px 10px 9px 16px",flexWrap:"wrap",minHeight:52,boxSizing:"border-box"},"data-gufi-src":"portal/facturas_huesped.tsx:380"},__gh("span",{style:{display:"flex",alignItems:"center",gap:12,flex:"1 1 260px",minWidth:0},"data-gufi-src":"portal/facturas_huesped.tsx:381"},__gh(LogoCanal,{canal,tam:26}),__gh("span",{style:{minWidth:0},"data-gufi-src":"portal/facturas_huesped.tsx:383"},__gh("span",{style:{display:"block",fontSize:13.5,fontWeight:500,color:INK,overflowWrap:"anywhere"},"data-gufi-src":"portal/facturas_huesped.tsx:384"},p.huesped||p.codigo),__gh("span",{style:{display:"block",fontSize:12,color:MUTED},"data-gufi-src":"portal/facturas_huesped.tsx:385"},rango(p.entrada,p.salida)," \xB7 ",numero(p.camas)," ",p.camas===1?"cama":"camas"," \xB7 ",canal))),__gh("span",{style:{display:"flex",alignItems:"center",gap:10,marginLeft:"auto",flexWrap:"wrap",justifyContent:"flex-end"},"data-gufi-src":"portal/facturas_huesped.tsx:388"},motivo2?__gh("span",{title:p.no_vale?`Falta ${p.no_vale}`:void 0,"data-gufi-src":"portal/facturas_huesped.tsx:389"},__gh(Nota,{tono:motivo2.tono},motivo2.t)):null,__gh("span",{style:{fontSize:13.5,fontWeight:600,color:INK,fontVariantNumeric:"tabular-nums",minWidth:72,textAlign:"right"},"data-gufi-src":"portal/facturas_huesped.tsx:390"},money2(p.importe)),__gh("span",{style:{display:"inline-flex"},"data-gufi-src":"portal/facturas_huesped.tsx:391"},p.sale_esta_noche?null:__gh(Boton,{onClick:()=>abrir(p.codigo,"no_vino")},abiertaAqui&&modo==="no_vino"?"Cerrar":"No vino"),__gh(Boton,{onClick:()=>abrir(p.codigo,"datos")},abiertaAqui&&modo==="datos"?"Cerrar":"Completar y facturar")))),abiertaAqui?modo==="no_vino"?__gh(NoVino,{api,token,p,onHecho:recargar,onCancelar:()=>abrir(p.codigo,"no_vino")}):__gh(CompletarHuesped,{api,token,p,onHecho:recargar}):null)}var TANDA_PENDIENTES=10;function Pendientes({pend,arranque,api,token,recargar}){let lista=pend.lista||[],[abierta,setAbierta]=(0,import_react31.useState)(""),[modo,setModo]=(0,import_react31.useState)(""),[q,setQ]=(0,import_react31.useState)(""),[ver,setVer]=(0,import_react31.useState)(TANDA_PENDIENTES),abrir=(codigo,m)=>{let cerrar=abierta===codigo&&modo===m;setAbierta(cerrar?"":codigo),setModo(cerrar?"":m)},filas=(0,import_react31.useMemo)(()=>{let n=norm2(q);return n?lista.filter(p=>norm2(`${p.huesped} ${p.codigo} ${p.canal}`).includes(n)):lista},[lista,q]);(0,import_react31.useEffect)(()=>{setVer(TANDA_PENDIENTES)},[q]);let pie=[pend.hoy?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 ${numero(pend.hoy)} que entran hoy (${money2(pend.hoy_importe)}) se facturan solas esta noche las que ya tengan los datos del hu\xE9sped.`:"","Se cuentan por estancia: una reserva de varias camas lleva una factura. 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":`${numero(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":`${numero(pend.no_vale)} tienen`} los datos, pero con un documento que no vale (por ejemplo, la letra del DNI o del NIE).`:"","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: sale como factura simplificada, sin sus datos.",lista.length8?__gh(Buscador2,{valor:q,onCambio:setQ,placeholder:"Hu\xE9sped o reserva",ancho:"min(220px, 46vw)"}):null,pie},filas.length?__gh(__gf,null,filas.slice(0,ver).map((p,i)=>__gh(FilaPendiente,{key:p.codigo,p,primera:i===0,abierta,modo,abrir,api,token,recargar})),__gh(FilaMas,{quedan:filas.length-ver,tanda:TANDA_PENDIENTES,onClick:()=>setVer(ver+TANDA_PENDIENTES)})):__gh(Vacio2,{titulo:"Ninguna estancia coincide",texto:q?`Nada con \xAB${q}\xBB.`:void 0})))}var TANDA3=40;function FilaMovil({f,primera,abierta,onToggle,api,token}){let a=aeatDe(f);return __gh("div",{"data-gufi-src":"portal/facturas_huesped.tsx:459"},__gh(Fila2,{primera,elegida:abierta,onClick:onToggle,lead:__gh(Punto2,{tono:a.tono}),titulo:nombreDe2(f)||f.numero_completo,sub:[f.numero_completo,fmtLarga(f.fecha),f.no_vino?"no vino":"",f.estado==="anulada"?"anulada":""].filter(Boolean).join(" \xB7 "),valor:money2(f.total),valorSub:a.t}),abierta?__gh("div",{style:{padding:"2px 16px 12px 35px",background:"rgba(99,91,255,0.05)",fontSize:12.5,color:MUTED,lineHeight:1.55},"data-gufi-src":"portal/facturas_huesped.tsx:465"},__gh("div",{"data-gufi-src":"portal/facturas_huesped.tsx:466"},f.check_in?`${rango(f.check_in,f.check_out)}${f.noches?` \xB7 ${numero(f.noches)} noches`:""}`:f.concepto||""),__gh("div",{"data-gufi-src":"portal/facturas_huesped.tsx:467"},"Base ",money2(f.base)," \xB7 IVA ",money2(f.iva)),__gh("div",{style:{margin:"6px 0 0 -14px"},"data-gufi-src":"portal/facturas_huesped.tsx:468"},__gh(Hacienda,{f,compacta:!0})),__gh("div",{style:{marginTop:6,marginLeft:-9},"data-gufi-src":"portal/facturas_huesped.tsx:469"},__gh(BotonPdf,{api,token,f}))):null)}function Lista2({facturas,total,titulo:titulo3,derecha,filtros,api,token}){let[ver,setVer]=(0,import_react31.useState)(TANDA3),[abierta,setAbierta]=(0,import_react31.useState)(null),{orden,th,flecha:flecha3}=useOrden({k:"fecha",asc:!1}),filas=(0,import_react31.useMemo)(()=>ordenar(facturas,orden,{numero:f=>`${f.serie}|${String(f.numero).padStart(8,"0")}`,fecha:f=>`${f.fecha}|${String(f.numero).padStart(8,"0")}`,huesped:f=>nombreDe2(f)||null,estancia:f=>f.check_in||null,base:f=>f.base,iva:f=>f.iva,total:f=>f.total,hacienda:f=>ORDEN_GRUPO[aeatDe(f).grupo]}),[facturas,orden]);(0,import_react31.useEffect)(()=>{setVer(TANDA3)},[facturas,orden]);let visibles=filas.slice(0,ver),cab=(k,t3,izq)=>__gh("th",{...th(k),"data-on":orden&&orden.k===k?"1":"0",className:izq?"f-i":void 0,"data-gufi-src":"portal/facturas_huesped.tsx:488"},t3,flecha3(k));return __gh("div",{id:"fh-lista",style:{scrollMarginTop:80},"data-gufi-src":"portal/facturas_huesped.tsx:491"},__gh(Grupo,{titulo:titulo3,cuenta:facturas.length,derecha},__gh("div",{style:{display:"flex",gap:10,flexWrap:"wrap",alignItems:"center",padding:"12px 16px",borderBottom:`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/facturas_huesped.tsx:493"},filtros),filas.length?__gh(__gf,null,__gh("div",{className:"f-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/facturas_huesped.tsx:496"},__gh("table",{className:"f-tabla","data-gufi-src":"portal/facturas_huesped.tsx:497"},__gh("thead",{"data-gufi-src":"portal/facturas_huesped.tsx:498"},__gh("tr",{"data-gufi-src":"portal/facturas_huesped.tsx:498"},cab("numero","N\xBA",!0),cab("fecha","Fecha",!0),cab("huesped","Hu\xE9sped",!0),cab("estancia","Estancia",!0),cab("base","Base"),cab("iva","IVA"),cab("total","Total"),cab("hacienda","Hacienda",!0),__gh("th",{"data-gufi-src":"portal/facturas_huesped.tsx:500"}))),__gh("tbody",{"data-gufi-src":"portal/facturas_huesped.tsx:502"},visibles.map(f=>__gh("tr",{key:f.id,"data-gufi-src":"portal/facturas_huesped.tsx:504"},__gh("td",{className:"f-i","data-gufi-src":"portal/facturas_huesped.tsx:505"},__gh("span",{style:{display:"block",fontWeight:600},"data-gufi-src":"portal/facturas_huesped.tsx:506"},f.numero_completo),f.estado==="anulada"||f.no_vino?__gh("span",{style:{display:"flex",gap:10,fontSize:12,color:MUTED},"data-gufi-src":"portal/facturas_huesped.tsx:508"},f.estado==="anulada"?__gh(Nota,{tono:"mudo"},"anulada"):null,f.no_vino?__gh("span",{"data-gufi-src":"portal/facturas_huesped.tsx:511"},"no vino"):null):null),__gh("td",{className:"f-i","data-gufi-src":"portal/facturas_huesped.tsx:515"},fmtLarga(f.fecha)),__gh("td",{className:"f-i f-t",style:{maxWidth:240},"data-gufi-src":"portal/facturas_huesped.tsx:516"},nombreDe2(f)||__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/facturas_huesped.tsx:516"},"sin dato")),__gh("td",{className:"f-i",style:{color:MUTED,fontSize:12.5},"data-gufi-src":"portal/facturas_huesped.tsx:517"},f.check_in?rango(f.check_in,f.check_out):f.concepto||"",f.noches?` \xB7 ${numero(f.noches)} ${f.noches===1?"noche":"noches"}`:""),__gh("td",{"data-gufi-src":"portal/facturas_huesped.tsx:520"},money2(f.base)),__gh("td",{"data-gufi-src":"portal/facturas_huesped.tsx:521"},money2(f.iva)),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/facturas_huesped.tsx:522"},money2(f.total)),__gh("td",{className:"f-i","data-gufi-src":"portal/facturas_huesped.tsx:523"},__gh(Hacienda,{f})),__gh("td",{style:{paddingRight:8},"data-gufi-src":"portal/facturas_huesped.tsx:524"},__gh(BotonPdf,{api,token,f}))))))),__gh("div",{className:"f-movil","data-gufi-src":"portal/facturas_huesped.tsx:530"},visibles.map((f,i)=>__gh(FilaMovil,{key:f.id,f,primera:i===0,abierta:abierta===String(f.id),onToggle:()=>setAbierta(abierta===String(f.id)?null:String(f.id)),api,token}))),__gh(FilaMas,{quedan:filas.length-ver,tanda:TANDA3,onClick:()=>setVer(ver+TANDA3)})):__gh(Vacio2,{titulo:"Ninguna factura",texto:total?"Ninguna con estos filtros. Prueba con otro estado ante la AEAT, con \xABTodas\xBB o con otro texto de b\xFAsqueda.":"Todav\xEDa no hay facturas emitidas."})))}function irA(id){let el=document.getElementById(id);el&&el.scrollIntoView({behavior:"smooth",block:"start"})}function FacturasHuesped({api,token,periodo,ownerName,datos,recargar}){let[q,setQ]=(0,import_react31.useState)(""),[soloPeriodo,setSoloPeriodo]=(0,import_react31.useState)(!0),[mesSel,setMesSel]=(0,import_react31.useState)(null),[aeat,setAeat]=(0,import_react31.useState)("todas"),[exportando,setExportando]=(0,import_react31.useState)("");(0,import_react31.useEffect)(()=>{setMesSel(null)},[soloPeriodo,periodo.desde,periodo.hasta]);let todas=datos&&datos.facturas||[],enPeriodo=f=>!soloPeriodo||f.fecha>=periodo.desde&&f.fecha{let m={};return todas.forEach(f=>{if(!f.fecha||!enPeriodo(f))return;let k=f.fecha.slice(0,7),g=m[k]=m[k]||{k,base:0,iva:0,total:0,n:0};f.estado!=="anulada"&&(g.base+=f.base||0,g.iva+=f.iva||0,g.total+=f.total||0,g.n+=1)}),Object.values(m).sort((a,b)=>a.k.localeCompare(b.k))},[datos,soloPeriodo,periodo]),vistas=(0,import_react31.useMemo)(()=>{let n=norm2(q);return todas.filter(f=>(mesSel?String(f.fecha).slice(0,7)!==mesSel:!enPeriodo(f))?!1:!n||norm2(`${f.numero_completo} ${f.destinatario_nombre} ${f.nombres_huespedes} ${f.confirmation_code} ${f.estancia_huesped}${f.no_vino?" no vino":""}`).includes(n))},[datos,q,soloPeriodo,periodo,mesSel]),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(todas),[datos]),tot=(0,import_react31.useMemo)(()=>facturas.reduce((t3,f)=>({base:t3.base+(f.estado==="anulada"?0:f.base||0),iva:t3.iva+(f.estado==="anulada"?0:f.iva||0),total:t3.total+(f.estado==="anulada"?0:f.total||0)}),{base:0,iva:0,total:0}),[facturas]),filtroAeat=FILTROS_AEAT.find(x=>x.k===aeat)||FILTROS_AEAT[0],etiqueta4=mesSel?mesLabel(mesSel):soloPeriodo?periodoTexto(periodo.desde,periodo.hasta):"Todas";async function exportar3(){setExportando("\u2026");try{await exportarTabla(`Facturas_a_huespedes_${limpioArchivo(soloPeriodo||mesSel?etiqueta4:"todas")}.xlsx`,"Facturas",`Tus facturas a hu\xE9spedes \xB7 ${ownerName||""}`,`${numero(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)(()=>todas.map(f=>({f,motivo:incidenciaDe(f)})).filter(x=>x.motivo),[datos]),verFactura=numero2=>{setQ(numero2),setAeat("todas"),setSoloPeriodo(!1),setMesSel(null),setTimeout(()=>irA("fh-lista"),60)},elegirAeat=k=>setAeat(aeat===k?"todas":k),opcionesAeat=FILTROS_AEAT.filter(x=>x.k!=="otro"||porEstado.otro||aeat==="otro").map(x=>({v:x.k,t:x.t,n:x.k==="todas"?void 0:porEstado[x.k]})),varios=serie.length>1,emiten=__gh(ComoSeEmiten,{series:datos.series,verifactu:datos.verifactu,aeat:aeatTodas}),incid=incidencias.length?__gh(Incidencias,{lista:incidencias,onVer:verFactura}):null;return __gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/facturas_huesped.tsx:629"},__gh("style",{"data-gufi-src":"portal/facturas_huesped.tsx:630"},CSS_FACTURAS),__gh("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",padding:"0 4px"},"data-gufi-src":"portal/facturas_huesped.tsx:631"},__gh("div",{style:{minWidth:0,flex:"1 1 240px"},"data-gufi-src":"portal/facturas_huesped.tsx:632"},__gh("h2",{style:{fontSize:22,fontWeight:650,letterSpacing:"-0.5px",color:INK,margin:0,lineHeight:1.2},"data-gufi-src":"portal/facturas_huesped.tsx:633"},etiqueta4==="Todas"?"Todas tus facturas":etiqueta4),__gh("p",{style:{fontSize:12.5,color:MUTED,margin:"3px 0 0"},"data-gufi-src":"portal/facturas_huesped.tsx:634"},"Las facturas que emites a tus hu\xE9spedes, una por reserva, con su huella VERI*FACTU")),__gh(Segmentado,{id:"fh-alcance",valor:soloPeriodo?"periodo":"todas",onCambio:v=>setSoloPeriodo(v==="periodo"),opciones:[{v:"periodo",t:periodoTexto(periodo.desde,periodo.hasta)},{v:"todas",t:"Todas",n:todas.length}]})),__gh(Cifras2,null,__gh(Cifra2,{etiqueta:"Facturado",valor:money2(tot.total),sub:`${numero(facturas.length)} ${facturas.length===1?"factura":"facturas"} \xB7 base ${money2(tot.base)}`}),__gh(Cifra2,{etiqueta:"IVA repercutido",valor:money2(tot.iva),sub:aeat!=="todas"?`De las ${filtroAeat.t.toLowerCase()}`:etiqueta4==="Todas"?"De todas las facturas":`De ${etiqueta4.toLowerCase()}`}),__gh(Cifra2,{etiqueta:"Enviadas a Hacienda",valor:numero(porEstado.enviadas),onClick:()=>elegirAeat("enviadas"),elegida:aeat==="enviadas",tono:porEstado.rechazadas?"mal":porEstado.pendientes?"aviso":void 0,sub:[`de ${numero(vistas.length)}`,porEstado.pendientes?`${numero(porEstado.pendientes)} pendientes`:"",porEstado.rechazadas?`${numero(porEstado.rechazadas)} rechazadas`:""].filter(Boolean).join(" \xB7 ")}),__gh(Cifra2,{etiqueta:"Sin factura",valor:numero(pend&&pend.estancias?pend.estancias:0),tono:pend&&pend.estancias?"aviso":void 0,onClick:pend&&pend.estancias?()=>irA("fh-sin-factura"):void 0,sub:pend&&pend.estancias?`${money2(pend.importe)} desde el inicio`:"Todo lo que ha entrado est\xE1 facturado"})),varios?__gh("div",{className:"f-dos","data-gufi-src":"portal/facturas_huesped.tsx:652"},__gh(Grupo,{titulo:"Mes a mes",sub:"Pulsa un mes para ver s\xF3lo sus facturas",llena:!0},__gh(LeyendaBaseIva,null),__gh(GraficaMeses,{serie,sel:mesSel,elegir:k=>setMesSel(mesSel===k?null:k),etiqueta:k=>mayus4(mesCorto(k)),titulo:k=>mesLabel(k)})),__gh("div",{style:{display:"grid",gap:18,alignContent:"start"},"data-gufi-src":"portal/facturas_huesped.tsx:657"},emiten,incid)):__gh("div",{className:"f-dos-igual","data-gufi-src":"portal/facturas_huesped.tsx:660"},emiten,incid),pend&&pend.estancias?__gh(Pendientes,{pend,arranque:datos.arranque,api,token,recargar}):null,exportando&&exportando!=="\u2026"?__gh(Aviso2,{titulo:"No se ha podido preparar el Excel",texto:exportando}):null,__gh(Lista2,{facturas,total:todas.length,api,token,titulo:mesSel?`Facturas de ${mesLabel(mesSel).toLowerCase()}`:"Facturas",derecha:__gh(__gf,null,mesSel?__gh(Boton,{onClick:()=>setMesSel(null)},"Ver ",soloPeriodo?periodoTexto(periodo.desde,periodo.hasta).toLowerCase():"todas"):null,__gh(Boton,{icono:import_lucide_react30.Download,ocupado:exportando==="\u2026",disabled:!facturas.length,onClick:exportar3},"Excel")),filtros:__gh(__gf,null,__gh(Buscador2,{valor:q,onCambio:setQ,placeholder:"N\xBA, hu\xE9sped o reserva",ancho:250}),__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:8,maxWidth:"100%",minWidth:0},"data-gufi-src":"portal/facturas_huesped.tsx:678"},__gh("span",{style:{fontSize:12.5,color:MUTED,whiteSpace:"nowrap"},"data-gufi-src":"portal/facturas_huesped.tsx:679"},"Ante la AEAT"),__gh(Segmentado,{id:"fh-aeat",valor:aeat,onCambio:setAeat,opciones:opcionesAeat})))}))}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)}`,etiquetaCorta=(k,modo)=>{if(modo!=="mes")return TRIM[Number(k.slice(6))+1];let m=mesCorto(k);return m.charAt(0).toUpperCase()+m.slice(1)},plural2=(n,uno,varios)=>`${numero(n)} ${n===1?uno:varios}`;function extras(g){return[g.series?`serie ${g.series}`:"",g.rectificativas?plural2(g.rectificativas,"rectificativa","rectificativas"):"",g.anuladas?plural2(g.anuladas,"anulada","anuladas"):"",g.revision?`${numero(g.revision)} en revisi\xF3n`:""].filter(Boolean).join(" \xB7 ")}function Pendiente({pend,arranque,onVerPendientes,onVerCobros}){let desde2=arranque?` (${fmtLarga(arranque)})`:"";return __gh(Grupo,{pie:pend&&pend.hoy?`${pend.hoy===1?"La estancia que entra hoy":`Las ${numero(pend.hoy)} estancias que entran hoy`} (${money2(pend.hoy_importe)}) se ${pend.hoy===1?"factura sola":"facturan solas"} esta noche.`:void 0},pend&&pend.estancias?__gh(Fila2,{primera:!0,lead:__gh(Punto2,{tono:"aviso"}),onClick:onVerPendientes,titulo:`Quedan ${plural2(pend.estancias,"estancia","estancias")} sin factura, por ${money2(pend.importe)}`,sub:`Desde el inicio de la actividad${desde2}. La m\xE1s antigua entr\xF3 el ${fmtLarga(pend.mas_antigua)}. Se cuentan por estancia: una reserva de varias camas lleva una sola factura.`,valor:onVerPendientes?__gh("span",{style:{color:ACCENT,fontWeight:500},"data-gufi-src":"portal/libro.tsx:58"},"Ver cu\xE1les"):void 0}):__gh(Fila2,{primera:!0,titulo:"No queda nada por facturar",sub:`Desde el inicio de la actividad${desde2}, todas las estancias que entraron antes de hoy tienen su factura.`}),onVerCobros?__gh(Fila2,{titulo:"D\xF3nde est\xE1 el dinero de lo facturado",sub:"Canal, TPV, otros medios y lo pendiente est\xE1n en Cobros",onClick:onVerCobros}):null)}function Libro({facData,ownerName,onVerPendientes,onVerCobros}){let[modo,setModo]=(0,import_react32.useState)("mes"),[sel,setSel]=(0,import_react32.useState)(null);(0,import_react32.useEffect)(()=>{setSel(null)},[modo,facData]);let[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]),serie=(0,import_react32.useMemo)(()=>periodos.slice().reverse(),[periodos]),v=sel&&periodos.find(g=>g.k===sel)||tot,elegir=k=>setSel(sel===k?null:k);async function exportar3(){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))}}let cabecera=__gh(Cabecera2,{titulo:"Libro de facturas emitidas",sub:`Lo que se le pasa al asesor${arranque?`, desde el inicio de la actividad (${fmtLarga(arranque)})`:""}`,derecha:facturas.length?__gh(__gf,null,__gh(Segmentado,{id:"libro-modo",valor:modo,onCambio:setModo,opciones:[{v:"mes",t:"Por meses"},{v:"trim",t:"Por trimestres"}]}),__gh(Boton,{principal:!0,icono:import_lucide_react31.Download,ocupado:exportando==="\u2026",onClick:exportar3},"Bajar el libro en Excel")):null});if(!facturas.length)return __gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/libro.tsx:144"},cabecera,__gh(Tarjeta3,null,__gh(Vacio2,{titulo:"Todav\xEDa no hay facturas emitidas",texto:"El libro sale en cuanto se emite la primera."})));let varios=serie.length>1,quien2=modo==="mes"?"mes":"trimestre";return __gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/libro.tsx:154"},__gh("style",{"data-gufi-src":"portal/libro.tsx:155"},CSS_FACTURAS),cabecera,exportando&&exportando!=="\u2026"?__gh(Aviso2,{titulo:"No se ha podido preparar el libro en Excel",texto:exportando}):null,__gh(Pendiente,{pend,arranque,onVerPendientes,onVerCobros}),sel?__gh("p",{style:{fontSize:12.5,color:MUTED,margin:"0 4px -8px"},"data-gufi-src":"portal/libro.tsx:161"},"Cifras de ",etiquetaPeriodo(sel,modo).toLowerCase(),"."," ",__gh("button",{type:"button",onClick:()=>setSel(null),style:{border:"none",background:"transparent",padding:0,color:ACCENT,cursor:"pointer",fontFamily:"inherit",fontSize:12.5},"data-gufi-src":"portal/libro.tsx:163"},"Ver todo")):null,__gh(Cifras2,null,__gh(Cifra2,{etiqueta:"Facturas",valor:numero(v.n),sub:sel?etiquetaPeriodo(sel,modo):"Todas las emitidas"}),__gh(Cifra2,{etiqueta:"Base imponible",valor:money2(v.base),sub:v.anuladas?`Sin las ${plural2(v.anuladas,"anulada","anuladas")}`:"Sin anuladas"}),__gh(Cifra2,{etiqueta:"IVA",valor:money2(v.iva),sub:v.base?`${(Math.round(v.iva/v.base*1e3)/10).toLocaleString("es-ES")} % de la base`:void 0}),__gh(Cifra2,{etiqueta:"Total",valor:money2(v.total),tono:v.revision?"aviso":void 0,sub:[v.rectificativas?plural2(v.rectificativas,"rectificativa","rectificativas"):"Ninguna rectificativa",v.revision?`${numero(v.revision)} en revisi\xF3n`:""].filter(Boolean).join(" \xB7 ")})),__gh("div",{className:varios?"f-dos-igual":void 0,style:varios?{alignItems:"stretch"}:{display:"grid"},"data-gufi-src":"portal/libro.tsx:174"},varios?__gh(Grupo,{titulo:modo==="mes"?"Mes a mes":"Trimestre a trimestre",sub:`Pulsa un ${quien2} para ver sus cifras arriba`,llena:!0},__gh(LeyendaBaseIva,null),__gh(GraficaMeses,{serie,sel,elegir,etiqueta:k=>etiquetaCorta(k,modo),titulo:k=>etiquetaPeriodo(k,modo)})):null,__gh(Grupo,{titulo:"El libro",cuenta:periodos.length,sub:varios?`Un ${quien2} por fila; pulsa uno para verlo arriba`:void 0,llena:!0,pie:`El Excel lleva dos hojas: el resumen por periodo (con series, 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:"f-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/libro.tsx:183"},__gh("table",{className:"f-tabla","data-gufi-src":"portal/libro.tsx:184"},__gh("thead",{"data-gufi-src":"portal/libro.tsx:185"},__gh("tr",{"data-gufi-src":"portal/libro.tsx:185"},__gh("th",{className:"f-i","data-gufi-src":"portal/libro.tsx:185"},"Periodo"),__gh("th",{"data-gufi-src":"portal/libro.tsx:185"},"Facturas"),__gh("th",{"data-gufi-src":"portal/libro.tsx:185"},"Base"),__gh("th",{"data-gufi-src":"portal/libro.tsx:185"},"IVA"),__gh("th",{"data-gufi-src":"portal/libro.tsx:185"},"Total"))),__gh("tbody",{"data-gufi-src":"portal/libro.tsx:186"},periodos.map(g=>{let mas=extras(g);return __gh("tr",{key:g.k,"data-toca":"1","data-elegida":sel===g.k?"1":"0",onClick:()=>elegir(g.k),"data-gufi-src":"portal/libro.tsx:190"},__gh("td",{className:"f-i f-t","data-gufi-src":"portal/libro.tsx:191"},__gh("span",{style:{display:"flex",alignItems:"center",gap:7,fontWeight:500},"data-gufi-src":"portal/libro.tsx:192"},g.anuladas||g.revision?__gh(Punto2,{tono:g.revision?"aviso":"mudo"}):null,etiquetaPeriodo(g.k,modo)),mas?__gh("span",{style:{display:"block",fontSize:12,color:MUTED},"data-gufi-src":"portal/libro.tsx:195"},mas):null),__gh("td",{"data-gufi-src":"portal/libro.tsx:197"},numero(g.n)),__gh("td",{"data-gufi-src":"portal/libro.tsx:198"},money2(g.base)),__gh("td",{"data-gufi-src":"portal/libro.tsx:199"},money2(g.iva)),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/libro.tsx:200"},money2(g.total)))})),__gh("tfoot",{"data-gufi-src":"portal/libro.tsx:205"},__gh("tr",{"data-gufi-src":"portal/libro.tsx:205"},__gh("td",{className:"f-i","data-gufi-src":"portal/libro.tsx:206"},"Total"),__gh("td",{"data-gufi-src":"portal/libro.tsx:206"},numero(tot.n)),__gh("td",{"data-gufi-src":"portal/libro.tsx:206"},money2(tot.base)),__gh("td",{"data-gufi-src":"portal/libro.tsx:206"},money2(tot.iva)),__gh("td",{"data-gufi-src":"portal/libro.tsx:206"},money2(tot.total)))))),__gh("div",{className:"f-movil","data-gufi-src":"portal/libro.tsx:210"},periodos.map((g,i)=>__gh(Fila2,{key:g.k,primera:i===0,elegida:sel===g.k,onClick:()=>elegir(g.k),lead:g.anuladas||g.revision?__gh(Punto2,{tono:g.revision?"aviso":"mudo"}):void 0,titulo:etiquetaPeriodo(g.k,modo),sub:[plural2(g.n,"factura","facturas"),`IVA ${money2(g.iva)}`,extras(g)].filter(Boolean).join(" \xB7 "),valor:money2(g.total),valorSub:`base ${money2(g.base)}`})),__gh(Fila2,{titulo:__gh("span",{style:{fontWeight:600},"data-gufi-src":"portal/libro.tsx:218"},"Total"),sub:`${plural2(tot.n,"factura","facturas")} \xB7 IVA ${money2(tot.iva)}`,valor:money2(tot.total),valorSub:`base ${money2(tot.base)}`})))))}var mayus5=s=>s.charAt(0).toUpperCase()+s.slice(1),etiquetaMes2=ym=>mayus5(mesCorto(ym)),mesDe=x=>(x.periodo?x.periodo.desde:x.fecha).slice(0,7),norm3=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase();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",maxWidth:240},"data-gufi-src":"portal/facturas.tsx:49"},__gh(Boton,{icono:import_lucide_react32.FileText,onClick:bajar,disabled:!hay,ocupado:estado==="\u2026",title:hay?detalle?"El detalle de reservas que lleva la factura, en PDF":"La factura en PDF":detalle?"Esta factura no lleva detalle de reservas":"Odoo a\xFAn no ha generado el PDF"},detalle?"Detalle":"Factura"),estado&&estado!=="\u2026"?__gh("span",{style:{whiteSpace:"normal",textAlign:"right"},"data-gufi-src":"portal/facturas.tsx:54"},__gh(Nota,{tono:"mal"},estado)):null)}function Acciones({api,token,x,abrirFactura}){return __gh("span",{style:{display:"inline-flex",alignItems:"flex-start",gap:2,flexWrap:"wrap",justifyContent:"flex-end"},"data-gufi-src":"portal/facturas.tsx:62"},x.periodo?__gh(Boton,{icono:import_lucide_react32.ListTree,onClick:e=>{e.stopPropagation(),abrirFactura(x.id)}},"Desglose"):null,__gh(BotonPdf2,{api,token,f:x}),x.detalle?__gh(BotonPdf2,{api,token,f:x,detalle:!0}):null)}function Descargas({api,token,inicio,titular:titular2,periodo,propPorId,nombreTitular,facturas,etiqueta:etiqueta4}){let candidatos=titular2?inicio.titulares.filter(t3=>String(t3.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),[match,setMatch]=(0,import_react33.useState)({ocupado:!1,error:"",hecho:""}),[lista,setLista]=(0,import_react33.useState)({ocupado:!1,error:""}),quien2=candidatos.length===1?String(candidatos[0].id):elegido,etiquetaPeriodo2=periodoTexto(periodo.desde,periodo.hasta);async function bajarMatch(){setMatch({ocupado:!0,error:"",hecho:""});try{let d2=await api("portal_match",{token,titular:Number(quien2)}),r=await exportarMatch(d2,periodo.desde,periodo.hasta,etiquetaPeriodo2);setMatch({ocupado:!1,error:"",hecho:`${numero(r.reservas)} reservas, ${numero(r.cobradas)} ya cobradas \xB7 ${money2(r.total)} en banco`})}catch(e){setMatch({ocupado:!1,error:String(e&&e.message||e),hecho:""})}}async function bajarLista(){setLista({ocupado:!0,error:""});try{await exportarTabla(`Facturas_${limpioArchivo(etiqueta4)}.xlsx`,"Facturas",`Facturas de ${marca().nombre} \xB7 ${etiqueta4}`,`${numero(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])),setLista({ocupado:!1,error:""})}catch(e){setLista({ocupado:!1,error:String(e&&e.message||e)})}}let etiquetaMatch=etiquetaPeriodo2.toLowerCase().startsWith("a\xF1o")?etiquetaPeriodo2.toLowerCase():etiquetaPeriodo2;return __gh(Grupo,{titulo:"Descargas",derecha: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(t3=>({v:String(t3.id),t:t3.nombre,g:t3.empresa?"Empresas":"Personas"})).sort((a,b)=>a.g.localeCompare(b.g)),valor:elegido,placeholder:"Buscar titular",onElegir:v=>{setElegido(v),setAbierto(!1)}})):null},__gh(FilaAccion,{primera:!0,titulo:`MATCH de ${etiquetaMatch}`,sub:`Cada reserva junto al pago que entr\xF3 en el banco, en Excel. Es el mismo fichero que prepara ${marca().nombre}.${candidatos.length>1&&!elegido?" Elige arriba de qu\xE9 titular.":""}`,nota:match.hecho?__gh(Nota,{tono:"ok"},"Descargado \xB7 ",match.hecho):match.error?__gh(Nota,{tono:"mal"},match.error):null,accion:__gh(Boton,{principal:!0,icono:import_lucide_react32.Download,disabled:!quien2,ocupado:match.ocupado,onClick:bajarMatch},"Descargar MATCH")}),__gh(FilaAccion,{titulo:"Lista de facturas en Excel",sub:facturas.length?`${numero(facturas.length)} ${facturas.length===1?"factura":"facturas"} de ${etiqueta4.toLowerCase()}, con su propiedad, titular, base, IVA y total`:"No hay facturas en lo que est\xE1s viendo",nota:lista.error?__gh(Nota,{tono:"mal"},lista.error):null,accion:__gh(Boton,{icono:import_lucide_react32.Download,disabled:!facturas.length,ocupado:lista.ocupado,onClick:bajarLista},"Descargar")}))}var TANDA4=20;function propiedadesDe(x,propPorId){return x.propiedades.map(p=>(propPorId[p]||{}).nombre).filter(Boolean)}function asunto(x){return x.periodo?`Liquidaci\xF3n de ${mesLabel(x.periodo.desde.slice(0,7)).toLowerCase()}`:x.concepto||"Factura"}function FilaMovil2({x,abierta,onToggle,primera,propPorId,nombreTitular,varios,api,token,abrirFactura}){let props=propiedadesDe(x,propPorId);return __gh("div",{"data-gufi-src":"portal/facturas.tsx:133"},__gh(Fila2,{primera,elegida:abierta,onClick:onToggle,lead:x.rectificativa?__gh(Punto2,{tono:"aviso"}):void 0,titulo:x.numero,sub:[asunto(x),x.rectificativa?"rectificativa":"",fmtLarga(x.fecha)].filter(Boolean).join(" \xB7 "),valor:money2(x.total),valorSub:`base ${money2(x.base)}`}),abierta?__gh("div",{style:{padding:"2px 16px 12px",background:"rgba(99,91,255,0.05)",fontSize:12.5,color:MUTED,lineHeight:1.5},"data-gufi-src":"portal/facturas.tsx:139"},props.length?__gh("div",{style:{color:INK},"data-gufi-src":"portal/facturas.tsx:140"},props.join(", ")):null,__gh("div",{"data-gufi-src":"portal/facturas.tsx:141"},x.estancias?`${numero(x.estancias)} estancias \xB7 `:"","IVA ",money2(x.iva),varios&&x.titular?` \xB7 ${nombreTitular[x.titular.id]||x.titular.nombre}`:""),__gh("div",{style:{marginTop:6,marginLeft:-9},"data-gufi-src":"portal/facturas.tsx:145"},__gh(Acciones,{api,token,x,abrirFactura}))):null)}function ListaFacturas({facturas,titulo:titulo3,propPorId,nombreTitular,varios,api,token,abrirFactura}){let[q,setQ]=(0,import_react33.useState)(""),[ver,setVer]=(0,import_react33.useState)(TANDA4),[abierta,setAbierta]=(0,import_react33.useState)(null),{orden,th,flecha:flecha3}=useOrden({k:"mes",asc:!1}),filas=(0,import_react33.useMemo)(()=>{let n=norm3(q),base2=n?facturas.filter(x=>norm3(`${x.numero} ${asunto(x)} ${propiedadesDe(x,propPorId).join(" ")} ${x.titular?nombreTitular[x.titular.id]||x.titular.nombre:""}`).includes(n)):facturas;return ordenar(base2,orden,{numero:x=>x.numero,mes:x=>`${mesDe(x)}|${x.fecha}|${x.numero}`,fecha:x=>`${x.fecha}|${x.numero}`,propiedad:x=>propiedadesDe(x,propPorId).join(", ")||null,estancias:x=>x.periodo?x.estancias:null,base:x=>x.base,iva:x=>x.iva,total:x=>x.total})},[facturas,q,orden,propPorId,nombreTitular]);(0,import_react33.useEffect)(()=>{setVer(TANDA4)},[q,orden,facturas]);let visibles=filas.slice(0,ver),cab=(k,t3,izq)=>__gh("th",{...th(k),"data-on":orden&&orden.k===k?"1":"0",className:izq?"f-i":void 0,"data-gufi-src":"portal/facturas.tsx:171"},t3,flecha3(k));return __gh(Grupo,{titulo:titulo3,cuenta:filas.length,derecha:facturas.length>8?__gh(Buscador2,{valor:q,onCambio:setQ,placeholder:"N\xBA, propiedad o titular",ancho:"min(240px, 50vw)"}):null},filas.length?__gh(__gf,null,__gh("div",{className:"f-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/facturas.tsx:178"},__gh("table",{className:"f-tabla","data-gufi-src":"portal/facturas.tsx:179"},__gh("thead",{"data-gufi-src":"portal/facturas.tsx:180"},__gh("tr",{"data-gufi-src":"portal/facturas.tsx:180"},cab("mes","Factura",!0),cab("propiedad","Propiedad",!0),cab("fecha","Fecha"),cab("estancias","Estancias"),cab("base","Base"),cab("iva","IVA"),cab("total","Total"),__gh("th",{"data-gufi-src":"portal/facturas.tsx:182"}))),__gh("tbody",{"data-gufi-src":"portal/facturas.tsx:184"},visibles.map(x=>{let props=propiedadesDe(x,propPorId);return __gh("tr",{key:x.id,"data-gufi-src":"portal/facturas.tsx:188"},__gh("td",{className:"f-i","data-gufi-src":"portal/facturas.tsx:189"},__gh("span",{style:{display:"block",fontWeight:600},"data-gufi-src":"portal/facturas.tsx:190"},x.numero),__gh("span",{style:{display:"flex",alignItems:"center",gap:6,fontSize:12,color:MUTED},"data-gufi-src":"portal/facturas.tsx:191"},x.rectificativa?__gh(__gf,null,__gh(Punto2,{tono:"aviso"}),"Rectificativa \xB7"):null,asunto(x))),__gh("td",{className:"f-i f-t",style:{maxWidth:360},"data-gufi-src":"portal/facturas.tsx:195"},props.length?props.join(", "):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/facturas.tsx:196"},x.concepto?"Factura suelta":"sin propiedad"),varios&&x.titular?__gh("span",{style:{display:"block",fontSize:12,color:MUTED},"data-gufi-src":"portal/facturas.tsx:197"},nombreTitular[x.titular.id]||x.titular.nombre):null),__gh("td",{"data-gufi-src":"portal/facturas.tsx:199"},fmtLarga(x.fecha)),__gh("td",{"data-gufi-src":"portal/facturas.tsx:200"},x.periodo?numero(x.estancias):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/facturas.tsx:200"},"no aplica")),__gh("td",{"data-gufi-src":"portal/facturas.tsx:201"},money2(x.base)),__gh("td",{"data-gufi-src":"portal/facturas.tsx:202"},money2(x.iva)),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/facturas.tsx:203"},money2(x.total)),__gh("td",{style:{paddingRight:8},"data-gufi-src":"portal/facturas.tsx:204"},__gh(Acciones,{api,token,x,abrirFactura})))})))),__gh("div",{className:"f-movil","data-gufi-src":"portal/facturas.tsx:211"},visibles.map((x,i)=>__gh(FilaMovil2,{key:x.id,x,primera:i===0,abierta:abierta===String(x.id),onToggle:()=>setAbierta(abierta===String(x.id)?null:String(x.id)),propPorId,nombreTitular,varios,api,token,abrirFactura}))),__gh(FilaMas,{quedan:filas.length-ver,tanda:TANDA4,onClick:()=>setVer(ver+TANDA4)})):__gh(Vacio2,{titulo:"Ninguna factura coincide",texto:q?`Nada con \xAB${q}\xBB.`:void 0}))}function DeLaEmpresa({api,token,inicio,titular:titular2,periodo,propPorId,nombreTitular,f,abrirFactura}){let[mesSel,setMesSel]=(0,import_react33.useState)(null);(0,import_react33.useEffect)(()=>{setMesSel(null)},[f.datos,periodo.desde,periodo.hasta]);let 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&&k{let m={};return facturas.forEach(x=>{let k=mesDe(x),g=m[k]=m[k]||{k,base:0,iva:0,total:0,n:0};g.base+=x.base,g.iva+=x.iva,g.total+=x.total,g.n+=1}),Object.values(m).sort((a,b)=>a.k.localeCompare(b.k))},[facturas]),vistas=(0,import_react33.useMemo)(()=>mesSel?facturas.filter(x=>mesDe(x)===mesSel):facturas,[facturas,mesSel]),tot=(0,import_react33.useMemo)(()=>vistas.reduce((t3,x)=>({base:t3.base+x.base,iva:t3.iva+x.iva,total:t3.total+x.total,estancias:t3.estancias+(x.estancias||0),liquidaciones:t3.liquidaciones+(x.periodo?1:0),rectificativas:t3.rectificativas+(x.rectificativa?1:0)}),{base:0,iva:0,total:0,estancias:0,liquidaciones:0,rectificativas:0}),[vistas]),varios=inicio.titulares.length>1,varioMeses=serie.length>1,etiqueta4=mesSel?mesLabel(mesSel):periodoTexto(periodo.desde,periodo.hasta),elegir=k=>setMesSel(mesSel===k?null:k),pisos=new Set(vistas.flatMap(x=>x.propiedades)).size;return __gh(__gf,null,__gh(Cabecera2,{titulo:etiqueta4,sub:`Lo que ${marca().nombre} ${inicio.cuenta.maestro?"ha facturado a los propietarios":"te ha facturado"}, por el mes que liquida cada factura`,derecha:varioMeses?__gh(Segmentado,{id:"facturas-mes",valor:mesSel||"",onCambio:m=>setMesSel(m||null),opciones:[{v:"",t:"Todo"}].concat(serie.map(s=>({v:s.k,t:etiquetaMes2(s.k)})))}):null}),f.error?__gh(Aviso2,{titulo:"No se han podido cargar las facturas",texto:f.error}):f.cargando||!f.datos?__gh(Tarjeta3,null,__gh(FilasCargando,{n:6})):facturas.length?__gh(Cifras2,null,__gh(Cifra2,{etiqueta:"Total facturado",valor:money2(tot.total),sub:`Base ${money2(tot.base)} m\xE1s IVA`}),__gh(Cifra2,{etiqueta:"IVA",valor:money2(tot.iva),sub:tot.base?`${(Math.round(tot.iva/tot.base*1e3)/10).toLocaleString("es-ES")} % de la base`:void 0}),__gh(Cifra2,{etiqueta:"Facturas",valor:numero(vistas.length),tono:tot.rectificativas?"aviso":void 0,sub:[`${numero(tot.liquidaciones)} ${tot.liquidaciones===1?"liquidaci\xF3n":"liquidaciones"}`,tot.rectificativas?`${numero(tot.rectificativas)} ${tot.rectificativas===1?"rectificativa":"rectificativas"}`:"",pisos>1?`${numero(pisos)} propiedades`:""].filter(Boolean).join(" \xB7 ")}),__gh(Cifra2,{etiqueta:"Estancias liquidadas",valor:numero(tot.estancias),sub:tot.estancias&&tot.base?`${money2(tot.base/tot.estancias)} de base por estancia`:void 0})):__gh(Tarjeta3,null,__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.`})),__gh("div",{className:varioMeses?"f-dos":void 0,style:varioMeses?{alignItems:"stretch"}:{display:"grid"},"data-gufi-src":"portal/facturas.tsx:274"},varioMeses?__gh(Grupo,{titulo:"Mes a mes",sub:"Pulsa un mes para ver s\xF3lo sus facturas",llena:!0},__gh(LeyendaBaseIva,null),__gh(GraficaMeses,{serie,sel:mesSel,elegir,etiqueta:etiquetaMes2,titulo:k=>`Liquidaci\xF3n de ${mesLabel(k).toLowerCase()}`})):null,__gh(Descargas,{api,token,inicio,propPorId,titular:titular2,periodo,nombreTitular,facturas:vistas,etiqueta:etiqueta4})),facturas.length?__gh(ListaFacturas,{facturas:vistas,titulo:mesSel?`Facturas de ${mesLabel(mesSel).toLowerCase()}`:"Facturas",propPorId,nombreTitular,varios,api,token,abrirFactura}):null,__gh("p",{style:{fontSize:12,color:MUTED,margin:"0 4px",lineHeight:1.5},"data-gufi-src":"portal/facturas.tsx:289"},marca().nombre," factura a mes vencido: la factura de agosto lleva fecha de septiembre y aqu\xED cuenta en agosto. Las que no salen de una liquidaci\xF3n (obras, gestiones\u2026) van por su fecha. El desglose dice de d\xF3nde sale cada euro de una liquidaci\xF3n."))}function Facturas({api,token,inicio,filtros,titular:titular2,periodo,propPorId,nombreTitular,facturaAbierta,abrirFactura,volver}){let propias2=!!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},propias2),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);if(facturaAbierta){if(f.error)return __gh(PaginaDetalle,{volverA:"Facturas",titulo:"Factura",onVolver:volver},__gh(Aviso2,{titulo:"No se han podido cargar las facturas",texto:f.error}));if(f.cargando||!f.datos)return __gh(PaginaDetalle,{volverA:"Facturas",titulo:"Factura",onVolver:volver},__gh(Tarjeta3,null,__gh(FilasCargando,{n:6})));let abierta=f.datos.facturas.find(x=>String(x.id)===String(facturaAbierta)&&(x.periodo?x.periodo.desde:x.fecha)>=periodo.desde&&(x.periodo?x.periodo.desde:x.fecha)(propPorId[l.apartamento]||{}).nombre||l.piso,onVolver:volver}):__gh(PaginaDetalle,{volverA:"Facturas",titulo:"Esa factura no es de este periodo",onVolver:volver},__gh(Tarjeta3,null,__gh(Vacio2,{titulo:`No aparece entre las de ${periodoTexto(periodo.desde,periodo.hasta).toLowerCase()}`,texto:"Vuelve, cambia el periodo de arriba y \xE1brela otra vez."})))}return __gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/facturas.tsx:329"},__gh("style",{"data-gufi-src":"portal/facturas.tsx:330"},CSS_FACTURAS),propias2?__gh("div",{"data-gufi-src":"portal/facturas.tsx:332"},__gh(Segmentado,{id:"facturas-pestana",valor:pestana,onCambio:setPestana,opciones:[{v:"empresa",t:`De ${marca().nombre}`},{v:"mias",t:"A tus hu\xE9spedes"},{v:"libro",t:"Libro e IVA"}]})):null,!propias2||pestana==="empresa"?__gh(DeLaEmpresa,{api,token,inicio,titular:titular2,periodo,propPorId,nombreTitular,f,abrirFactura}):mias.error?__gh(Aviso2,{titulo:"No se han podido leer tus facturas",texto:mias.error}):mias.cargando||!mias.datos?__gh(Tarjeta3,null,__gh(FilasCargando,{n:8})):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")}))}var import_react34=require("react"),import_lucide_react33=require("lucide-react"),import_recharts3=require("recharts");var plural3=(n,uno,varios)=>`${numero(n)} ${n===1?uno:varios}`,decimal3=n=>n.toLocaleString("es-ES",{maximumFractionDigits:1}),clave=e=>e.nro||`id${e.id}`,TRAMOS_ANT=[[0,6,"Menos de 7 d\xEDas"],[7,29,"7 a 29 d\xEDas"],[30,89,"30 a 89 d\xEDas"],[90,1/0,"90 d\xEDas o m\xE1s"]],GRUPOS=[[1,1,"1"],[2,2,"2"],[3,3,"3"],[4,4,"4"],[5,1/0,"5 o m\xE1s"]],TOP_PAISES=8,OTROS="__otros";function porReserva(estancias){let m={};return estancias.forEach(e=>{let k=clave(e),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 norm5=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase().replace(/\s+/g," ").trim(),orden=reservas.filter(r=>norm5(r.huesped)).sort((a,b)=>norm5(a.huesped).localeCompare(norm5(b.huesped))||a.entrada.localeCompare(b.entrada)),siguen=new Set,empiezan=new Set,noches3=0;for(let i=1;if.n));return __gh("div",{style:{padding:"6px 0"},"data-gufi-src":"portal/huespedes.tsx:75"},filas.map(f=>{let on=elegida===f.k,apagada=elegida!=null&&!on;return __gh("div",{key:f.k,role:onElegir?"button":void 0,tabIndex:onElegir?0:void 0,className:onElegir?"rv-filab":void 0,onClick:onElegir?()=>onElegir(f):void 0,onKeyDown:onElegir?ev=>{ev.key==="Enter"&&onElegir(f)}:void 0,style:{display:"grid",gridTemplateColumns:"minmax(0, 10em) minmax(40px, 1fr) auto",alignItems:"center",gap:12,padding:"7px 16px",minHeight:36,boxSizing:"border-box",cursor:onElegir?"pointer":void 0,background:on?"rgba(99,91,255,0.06)":void 0},"data-gufi-src":"portal/huespedes.tsx:80"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:8,fontSize:13,color:INK,fontWeight:on?600:400,minWidth:0},"data-gufi-src":"portal/huespedes.tsx:83"},f.lead||null,__gh("span",{style:{minWidth:0,overflowWrap:"anywhere"},"data-gufi-src":"portal/huespedes.tsx:84"},f.t)),__gh("span",{style:{height:8,borderRadius:99,background:"#f0f0f3",overflow:"hidden"},"data-gufi-src":"portal/huespedes.tsx:86"},__gh("span",{className:"rv-barra",style:{display:"block",height:"100%",width:`${f.n/max*100}%`,borderRadius:99,background:apagada?SERIE_GRIS:SERIE},"data-gufi-src":"portal/huespedes.tsx:87"})),__gh("span",{style:{fontSize:12.5,color:MUTED,fontVariantNumeric:"tabular-nums",textAlign:"right",whiteSpace:"nowrap"},"data-gufi-src":"portal/huespedes.tsx:89"},__gh("span",{style:{color:INK,fontWeight:600},"data-gufi-src":"portal/huespedes.tsx:90"},numero(f.n))," \xB7 ",porcentaje(f.n/total*100,f.n/total<.01?1:0)))}))}function ChipFiltro({texto,onQuitar}){return __gh("button",{type:"button",onClick:onQuitar,"aria-label":`Quitar el filtro ${texto}`,style:{display:"inline-flex",alignItems:"center",gap:7,height:34,padding:"0 10px 0 13px",borderRadius:10,border:`1px solid ${HAIRLINE}`,background:"#fff",color:INK,fontSize:13.5,fontWeight:500,cursor:"pointer",fontFamily:"inherit",maxWidth:"100%"},"data-gufi-src":"portal/huespedes.tsx:102"},__gh("span",{style:{minWidth:0,overflowWrap:"anywhere",textAlign:"left"},"data-gufi-src":"portal/huespedes.tsx:104"},texto),__gh(import_lucide_react33.X,{size:14,color:MUTED}))}function BarrasColumnas({id,filas,total,elegida,onElegir,unidad,vacio}){if(!filas.length||!total)return __gh("p",{style:{fontSize:13,color:MUTED,padding:"16px",margin:0,lineHeight:1.45},"data-gufi-src":"portal/huespedes.tsx:111"},vacio);let serie=filas.map(f=>({k:f.k,t:f.t,n:f.n,pct:f.n/total*100})),pulsar=onElegir?b=>{let k=b&&(b.k!=null?b.k:b.payload&&b.payload.k),f=filas.find(x=>x.k===k);f&&onElegir(f)}:void 0;return __gh("div",{style:{flex:1,minHeight:200,padding:"8px 10px 6px 4px"},"data-gufi-src":"portal/huespedes.tsx:119"},__gh(import_recharts3.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts3.BarChart,{data:serie,margin:{...MARGEN,top:22}},__gh(import_recharts3.CartesianGrid,{...REJILLA}),__gh(import_recharts3.XAxis,{dataKey:"t",...EJE,interval:0}),__gh(import_recharts3.YAxis,{hide:!0}),__gh(import_recharts3.Tooltip,{cursor:CURSOR_BARRA,content:__gh(Globo,{titulo:p=>p.t,filas:p=>[{color:SERIE,texto:unidad,valor:`${numero(p.n)} \xB7 ${porcentaje(p.pct,0)}`}]})}),__gh(import_recharts3.Bar,{dataKey:"n",radius:[5,5,0,0],maxBarSize:46,animationDuration:600,onClick:pulsar,style:pulsar?{cursor:"pointer"}:void 0},serie.map(s=>__gh(import_recharts3.Cell,{key:`${id}-${s.k}`,fill:elegida!=null&&elegida!==s.k?SERIE_GRIS:SERIE})),__gh(import_recharts3.LabelList,{dataKey:"n",position:"top",offset:6,formatter:v=>numero(v),fill:INK_2,fontSize:11.5,fontWeight:600})))))}function Reparto(props){let{movil,...resto}=props;return movil?__gh(BarrasFilas,{filas:resto.filas,total:resto.total,elegida:resto.elegida,onElegir:resto.onElegir,vacio:resto.vacio}):__gh(BarrasColumnas,{...resto})}function repartos(reales,reservas){let cuenta2=pred=>reales.filter(pred).length,porPais={};reales.forEach(e=>{e.pais&&(porPais[e.pais]=(porPais[e.pais]||0)+1)});let ordenPaises=Object.entries(porPais).sort((a,b)=>b[1]-a[1]),paises=ordenPaises.slice(0,TOP_PAISES).map(([p,n])=>({k:p,t:paisEs(p),n})),otros=ordenPaises.slice(TOP_PAISES).reduce((s,[,n])=>s+n,0);otros&&paises.push({k:OTROS,t:"Otros pa\xEDses",n:otros});let porCanal2={};return reales.forEach(e=>{porCanal2[e.canal]=(porCanal2[e.canal]||0)+1}),{top:new Set(ordenPaises.slice(0,TOP_PAISES).map(([p])=>p)),paises,conPais:cuenta2(e=>!!e.pais),antelacion:TRAMOS_ANT.map((t3,i)=>({k:String(i),t:t3[2],n:cuenta2(e=>e.antelacion!=null&&e.antelacion>=t3[0]&&e.antelacion<=t3[1])})),conAntelacion:cuenta2(e=>e.antelacion!=null&&e.antelacion>=0),grupos:GRUPOS.map((t3,i)=>({k:String(i),t:t3[2],n:cuenta2(e=>e.personas>=t3[0]&&e.personas<=t3[1])})),conPersonas:cuenta2(e=>e.personas>0),canales:Object.entries(porCanal2).sort((a,b)=>b[1]-a[1]).map(([c,n])=>({k:c,t:c,n,lead:__gh(LogoCanal,{canal:c,tam:20})})),gasto:TRAMOS_IMPORTE.map((t3,i)=>({k:String(i),t:String(t3[2]),n:reservas.filter(r=>r.importe>=t3[0]&&r.importe=t3[0]&&e.antelacion<=t3[1]}if(f.tipo==="grupo"){let t3=GRUPOS[Number(f.k)];return e.personas>=t3[0]&&e.personas<=t3[1]}if(f.tipo==="canal")return e.canal===f.k;if(f.tipo==="gasto"){let t3=TRAMOS_IMPORTE[Number(f.k)],x=importe.get(clave(e));return x!=null&&x>=t3[0]&&xpr.siguen.has(clave(e))?" \xB7 pr\xF3rroga":pr.empiezan.has(clave(e))?" \xB7 alarg\xF3":"";function columnasHuespedes(pr,factura){let sin=__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/huespedes.tsx:179"},"sin dato");return[{k:"huesped",t:"Hu\xE9sped",ancho:!0,valor:e=>nombreHuesped(e),celda:e=>__gh("span",{style:{fontWeight:500},"data-gufi-src":"portal/huespedes.tsx:181"},nombreHuesped(e),__gh("span",{style:{color:MUTED,fontWeight:400},"data-gufi-src":"portal/huespedes.tsx:181"},prorrogaDe(pr,e)))},{k:"pais",t:"Pa\xEDs",valor:e=>e.pais?paisEs(e.pais):null,celda:e=>e.pais?paisEs(e.pais):sin},{k:"personas",t:"Personas",derecha:!0,valor:e=>e.personas||null,celda:e=>e.personas?numero(e.personas):sin},{k:"entrada",t:"Entrada",valor:e=>e.entrada,celda:e=>fmtLarga(e.entrada)},{k:"noches",t:"Noches",derecha:!0,valor:e=>e.noches,celda:e=>numero(e.noches)},{k:"antelacion",t:"Antelaci\xF3n",derecha:!0,valor:e=>e.antelacion,celda:e=>e.antelacion==null?sin:plural3(e.antelacion,"d\xEDa","d\xEDas")},{k:"canal",t:"Canal",valor:e=>e.canal,celda:e=>__gh(CanalCelda,{canal:e.canal})},{k:"facturado",t:factura?"Facturado":"Importe",derecha:!0,valor:e=>e.facturado,celda:e=>__gh("span",{style:{fontWeight:600},"data-gufi-src":"portal/huespedes.tsx:188"},money2(e.facturado))}]}function Graficas({h,rep,nReales,nReservas,gastoMedio,movil,filtro,elegir,factura}){let elegida=tipo=>filtro&&filtro.tipo===tipo?filtro.k:null,conEdad=h.edades.reduce((s,e)=>s+e.n,0),sexos=h.sexo.mujeres+h.sexo.hombres;return __gh("div",{className:"rv-tres","data-gufi-src":"portal/huespedes.tsx:198"},__gh(Grupo,{titulo:"De d\xF3nde vienen",sub:`Sobre ${numero(rep.conPais)} de ${plural3(nReales,"estancia","estancias")} con pa\xEDs conocido`,llena:!0},__gh(BarrasFilas,{filas:rep.paises,total:rep.conPais,elegida:elegida("pais"),onElegir:b=>elegir("pais",b.k,b.t),vacio:"Ninguna estancia trae el pa\xEDs del hu\xE9sped."})),__gh(Grupo,{titulo:"Edad",sub:h.viajeros?`${plural3(conEdad,"viajero","viajeros")} del registro, en ${numero(h.con_registro)} de ${plural3(h.estancias,"estancia","estancias")}`:"Sale del registro de viajeros",llena:!0},__gh(Reparto,{id:"edad",movil,filas:h.edades.map(e=>({k:e.tramo,t:e.tramo,n:e.n})),total:conEdad,elegida:null,unidad:"Viajeros",vacio:"Ning\xFAn viajero registrado con fecha de nacimiento en este periodo."}),sexos?__gh("div",{style:{padding:"4px 16px 14px",display:"grid",gap:8},"data-gufi-src":"portal/huespedes.tsx:205"},__gh("div",{style:{display:"flex",height:6,borderRadius:99,overflow:"hidden",background:"#f0f0f3"},"data-gufi-src":"portal/huespedes.tsx:206"},__gh("div",{className:"rv-barra",style:{width:`${h.sexo.mujeres/sexos*100}%`,background:SERIE},"data-gufi-src":"portal/huespedes.tsx:207"}),__gh("div",{style:{flex:1,background:SERIE_GRIS},"data-gufi-src":"portal/huespedes.tsx:208"})),__gh(Leyenda,{series:[{color:SERIE,texto:`Mujeres ${porcentaje(h.sexo.mujeres/sexos*100,0)}`},{color:SERIE_GRIS,texto:`Hombres ${porcentaje(h.sexo.hombres/sexos*100,0)}`}]})):null),__gh(Grupo,{titulo:"Con cu\xE1nta antelaci\xF3n reservan",sub:`D\xEDas entre la reserva y la llegada, sobre ${plural3(rep.conAntelacion,"estancia","estancias")}`,llena:!0},__gh(Reparto,{id:"ant",movil,filas:rep.antelacion,total:rep.conAntelacion,elegida:elegida("antelacion"),onElegir:b=>elegir("antelacion",b.k,`reservaron con ${b.t.toLowerCase()} de antelaci\xF3n`),unidad:"Estancias",vacio:"Sin fecha de reserva en estas estancias."})),__gh(Grupo,{titulo:"Por qu\xE9 canal",sub:"Estancias de cada plataforma",llena:!0},__gh(BarrasFilas,{filas:rep.canales,total:nReales,elegida:elegida("canal"),onElegir:b=>elegir("canal",b.k,b.t),vacio:"Sin estancias."})),__gh(Grupo,{titulo:"Cu\xE1ntos vienen juntos",sub:`Personas por reserva, sobre ${plural3(rep.conPersonas,"estancia","estancias")} con el dato`,llena:!0},__gh(Reparto,{id:"grupo",movil,filas:rep.grupos.map(g=>({...g,t:movil?`${g.t} ${g.t==="1"?"persona":"personas"}`:g.t})),total:rep.conPersonas,elegida:elegida("grupo"),onElegir:b=>elegir("grupo",b.k,b.k==="0"?"viajan solos":`grupos de ${GRUPOS[Number(b.k)][2]} personas`),unidad:"Estancias",vacio:"Ninguna estancia trae cu\xE1ntas personas vinieron."})),__gh(Grupo,{titulo:"Cu\xE1nto deja cada reserva",sub:gastoMedio==null?"Sin reservas":`${money2(gastoMedio)} de media, ${factura?"lo facturado por reserva (todas sus camas)":"lo que deja cada reserva"}`,llena:!0},__gh(Reparto,{id:"gasto",movil,filas:rep.gasto,total:nReservas,elegida:elegida("gasto"),onElegir:b=>elegir("gasto",b.k,`reservas de ${b.t.toLowerCase()}`),unidad:"Reservas",vacio:"Sin reservas."})))}function CifrasHuespedes({d:d2,nReservas,pr,filtro,elegir,factura}){let h=d2.huespedes;return __gh(Cifras2,{columnas:5},__gh(Cifra2,{etiqueta:"Estancias",valor:numero(h.estancias),sub:nReservas!==h.estancias?`en ${plural3(nReservas,"reserva","reservas")}`:factura?"facturadas":"confirmadas"}),__gh(Cifra2,{etiqueta:"Hu\xE9spedes",valor:numero(h.personas),sub:h.grupo_medio?`${decimal3(h.grupo_medio)} por reserva de media`:"sin dato de personas"}),__gh(Cifra2,{etiqueta:"Estancia media",valor:d2.totales.estancia_media==null?"sin dato":`${decimal3(d2.totales.estancia_media)} noches`,sub:"por estancia"}),__gh(Cifra2,{etiqueta:"Antelaci\xF3n media",valor:h.antelacion_media==null?"sin dato":plural3(h.antelacion_media,"d\xEDa","d\xEDas"),sub:"entre la reserva y la llegada"}),__gh(Cifra2,{etiqueta:"Alargan la estancia",valor:porcentaje(pr.estancias?pr.alargaron/pr.estancias*100:0),sub:pr.alargaron?`${plural3(pr.alargaron,"hu\xE9sped","hu\xE9spedes")}, ${plural3(pr.noches,"noche","noches")} m\xE1s`:"nadie en este periodo",onClick:pr.alargaron?()=>elegir("alargan","si","alargaron la estancia"):void 0,elegida:!!filtro&&filtro.tipo==="alargan"}))}function ListaHuespedes({reales,filtro,quitarFiltro,rep,importe,pr,factura,propPorId,periodo,abrirEstancia,movil,ancla}){let[q,setQ]=(0,import_react34.useState)(""),{orden,pulsar}=useOrdenLista({k:"entrada",asc:!1},["huesped","pais","canal"]),[exportando,setExportando]=(0,import_react34.useState)(!1),[errorExport,setErrorExport]=(0,import_react34.useState)(""),columnas=(0,import_react34.useMemo)(()=>columnasHuespedes(pr,factura),[pr,factura]),filas=(0,import_react34.useMemo)(()=>{let n=norm(q),vis=reales.filter(e=>(!filtro||cumpleFiltro(e,filtro,rep,importe,pr))&&(!n||norm(`${e.huesped} ${paisEs(e.pais)} ${e.nro}`).includes(n)));return ordenar(vis,orden,Object.fromEntries(columnas.map(c=>[c.k,c.valor])))},[reales,q,filtro,orden,columnas,rep,importe,pr]);async function exportar3(){setExportando(!0),setErrorExport("");try{await exportarEstancias(filas,propPorId,periodo,"Hu\xE9spedes")}catch(e){setErrorExport(String(e&&e.message||e))}setExportando(!1)}return __gh("div",{ref:ancla,style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:12,scrollMarginTop:76},"data-gufi-src":"portal/huespedes.tsx:267"},__gh("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:10},"data-gufi-src":"portal/huespedes.tsx:268"},__gh(Buscador2,{valor:q,onCambio:setQ,placeholder:"Buscar hu\xE9sped, pa\xEDs o reserva",ancho:movil?"100%":300}),filtro?__gh(ChipFiltro,{texto:filtro.texto.charAt(0).toUpperCase()+filtro.texto.slice(1),onQuitar:quitarFiltro}):null,__gh("span",{style:{marginLeft:"auto"},"data-gufi-src":"portal/huespedes.tsx:271"},__gh(BotonExcel,{onClick:exportar3,ocupado:exportando,desactivado:!filas.length}))),errorExport?__gh(Aviso2,{titulo:"No se ha podido preparar el Excel",texto:errorExport}):null,__gh(Grupo,{titulo:filtro?`Estancias \xB7 ${filtro.texto}`:"Estancias",cuenta:filas.length,sub:filtro?"Pulsa otra vez la barra, o el aspa de arriba, para verlas todas":"Pulsa un pa\xEDs, un tramo o un canal de arriba para ver s\xF3lo esas",pie:pr.alargaron?"Pr\xF3rroga: la reserva con la que un hu\xE9sped alarg\xF3 su estancia; alarg\xF3: la primera de las suyas.":void 0},filas.length?__gh(TablaEstancias,{filas,columnas,orden,onOrden:pulsar,movil,abrirEstancia,filaMovil:e=>({lead:__gh(LogoCanal,{canal:e.canal,tam:28}),titulo:__gh(__gf,null,nombreHuesped(e),__gh("span",{style:{color:MUTED,fontWeight:400},"data-gufi-src":"portal/huespedes.tsx:280"},prorrogaDe(pr,e))),sub:[e.pais?paisEs(e.pais):null,e.personas?plural3(e.personas,"persona","personas"):null,fmtLarga(e.entrada)].filter(Boolean).join(" \xB7 "),valor:money2(e.facturado),valorSub:plural3(e.noches,"noche","noches")})}):__gh(Vacio2,{titulo:"Ninguna estancia coincide",texto:q?"Prueba con otro nombre, pa\xEDs o reserva.":"Quita el filtro para ver todas."})))}function Panel2({d:d2,periodo,propPorId,abrirEstancia}){let movil=useIsMobile(760),factura=deFactura(),[filtro,setFiltro]=(0,import_react34.useState)(null),ancla=(0,import_react34.useRef)(null);(0,import_react34.useEffect)(()=>{setFiltro(null)},[d2]);let reales=(0,import_react34.useMemo)(()=>d2.estancias.filter(e=>!e.ajuste&&!e.solo_limpieza),[d2]),reservas=(0,import_react34.useMemo)(()=>porReserva(reales),[reales]),importe=(0,import_react34.useMemo)(()=>new Map(reservas.map(r=>[r.k,r.importe])),[reservas]),pr=(0,import_react34.useMemo)(()=>prorrogas(reservas),[reservas]),rep=(0,import_react34.useMemo)(()=>repartos(reales,reservas),[reales,reservas]),gastoMedio=reservas.length?reservas.reduce((s,r)=>s+r.importe,0)/reservas.length:null;if(!reales.length)return __gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/huespedes.tsx:307"},__gh("h2",{style:{fontSize:22,fontWeight:650,letterSpacing:"-0.5px",color:INK,margin:0,padding:"0 4px"},"data-gufi-src":"portal/huespedes.tsx:308"},periodoTexto(periodo.desde,periodo.hasta)),__gh(Tarjeta3,null,__gh(Vacio2,{titulo:`Ninguna estancia ${factura?"facturada ":""}en ${periodoTexto(periodo.desde,periodo.hasta).toLowerCase()}`,texto:factura?"Los hu\xE9spedes salen aqu\xED en cuanto su estancia se factura, que es a mes vencido.":"Los hu\xE9spedes salen aqu\xED con las reservas confirmadas."})));let elegir=(tipo,k,texto)=>{let quitar=!!filtro&&filtro.tipo===tipo&&filtro.k===k;setFiltro(quitar?null:{tipo,k,texto}),!quitar&&ancla.current&&ancla.current.getBoundingClientRect().top>window.innerHeight-140&&ancla.current.scrollIntoView({behavior:"smooth",block:"start"})};return __gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/huespedes.tsx:323"},__gh("style",{"data-gufi-src":"portal/huespedes.tsx:324"},CSS_ESTANCIAS),__gh("h2",{style:{fontSize:22,fontWeight:650,letterSpacing:"-0.5px",color:INK,margin:0,padding:"0 4px"},"data-gufi-src":"portal/huespedes.tsx:325"},periodoTexto(periodo.desde,periodo.hasta)),__gh(CifrasHuespedes,{d:d2,nReservas:reservas.length,pr,filtro,elegir,factura}),__gh(Graficas,{h:d2.huespedes,rep,nReales:reales.length,nReservas:reservas.length,gastoMedio,movil,filtro,elegir,factura}),__gh(ListaHuespedes,{reales,filtro,quitarFiltro:()=>setFiltro(null),rep,importe,pr,factura,propPorId,periodo,abrirEstancia,movil,ancla}))}function Huespedes({f,periodo,propPorId,abrirEstancia}){return __gh(Estado,{f,periodo,hijos:d2=>__gh(Panel2,{d:d2,periodo,propPorId,abrirEstancia})})}var import_react40=__toESM(require("react")),import_lucide_react38=require("lucide-react");var import_react36=require("react"),import_recharts5=require("recharts"),import_lucide_react35=require("lucide-react");var import_react35=require("react"),import_recharts4=require("recharts"),import_lucide_react34=require("lucide-react");var dosDig=n=>String(n).padStart(2,"0"),ymd=d2=>`${d2.getFullYear()}-${dosDig(d2.getMonth()+1)}-${dosDig(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"],DOW_CORTO=["","Lun","Mar","Mi\xE9","Jue","Vie","S\xE1b","Dom"],SEMANA2=["domingo","lunes","martes","mi\xE9rcoles","jueves","viernes","s\xE1bado"],diaMes=f=>`${Number(String(f).slice(8,10))} ${mesCorto(String(f).slice(0,7))}`,diaLargo=f=>{let s=`${SEMANA2[new Date(`${f}T12:00:00`).getDay()]} ${diaMes(f)}`;return s.charAt(0).toUpperCase()+s.slice(1)},decimal4=(n,d2=1)=>n==null?"sin dato":Number(n).toLocaleString("es-ES",{maximumFractionDigits:d2,useGrouping:"always"}),plural4=(n,uno,varios)=>`${numero(n)} ${n===1?uno:varios}`,nombreCanal=(canal,hw)=>{let n=canalDe(canal,hw);return n==="Booking"?"Booking.com":n==="\u2014"?"Sin canal":n},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},INFORME_CSS=` .in-pagina { display: grid; gap: 18px; } .in-dos { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 18px; align-items: start; } .in-dos.in-llena { align-items: stretch; } .in-hoy { display: grid; grid-template-columns: minmax(0, 3fr) minmax(0, 4fr); gap: 18px; align-items: stretch; } @media (max-width: 1100px) { .in-dos, .in-hoy { grid-template-columns: minmax(0, 1fr); } .in-seis .k-cifras { grid-template-columns: repeat(3, minmax(0, 1fr)) !important; } } .in-lectura { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1px; background: ${HAIRLINE}; } .in-lectura > :last-child:nth-child(odd) { grid-column: span 2; } .in-datos { display: grid; grid-template-columns: repeat(var(--n, 4), minmax(0, 1fr)); gap: 12px 16px; padding: 12px 16px 16px; } .in-tabla { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; } .in-tabla th { font-size: 12px; font-weight: 500; color: ${MUTED}; text-align: right; padding: 12px 16px 8px; white-space: nowrap; } .in-tabla th:first-child, .in-tabla td:first-child { text-align: left; } .in-tabla td { font-size: 13.5px; color: ${INK}; text-align: right; padding: 7px 16px; height: 50px; box-sizing: border-box; border-top: 1px solid ${HAIRLINE}; white-space: nowrap; } .in-tabla td .sub { display: block; font-size: 11.5px; color: ${MUTED}; font-weight: 400; margin-top: 1px; } .in-tabla td .nada { color: ${FAINT}; } .in-tabla tfoot td { font-weight: 600; } .in-tabla th[data-orden] { cursor: pointer; user-select: none; } .in-tabla th[data-orden]:hover, .in-tabla th[data-on="1"] { color: ${INK}; } .in-tabla tbody tr[data-toca] { cursor: pointer; } .in-tabla tbody tr[data-toca]:hover td { background: #fafafc; } .in-tabla tbody tr[data-elegida="1"] td { background: rgba(99,91,255,0.05); } .in-movil { display: none; } @media (max-width: 760px) { .in-escritorio { display: none; } .in-movil { display: block; } .in-lectura { grid-template-columns: minmax(0, 1fr); } .in-lectura > :last-child:nth-child(odd) { grid-column: auto; } .in-datos { grid-template-columns: repeat(2, minmax(0, 1fr)); } .in-seis .k-cifras { grid-template-columns: repeat(2, minmax(0, 1fr)) !important; } } `,ENLACE={border:"none",background:"transparent",padding:0,fontSize:13,fontWeight:500,color:ACCENT,cursor:"pointer",fontFamily:"inherit",whiteSpace:"nowrap"};function Boton2({onClick,icono:icono3,children}){return __gh("button",{type:"button",onClick,style:{display:"inline-flex",alignItems:"center",gap:7,height:34,padding:"0 13px",borderRadius:10,border:`1px solid ${HAIRLINE}`,background:"#fff",fontSize:13,fontWeight:500,color:ACCENT,cursor:"pointer",whiteSpace:"nowrap",fontFamily:"inherit",flexShrink:0},"data-gufi-src":"portal/informe.tsx:113"},icono3,children)}function CifrasDentro({columnas,raya,llena,children}){return __gh("div",{className:"k-cifras",style:{display:"grid",gridTemplateColumns:`repeat(${columnas}, minmax(0, 1fr))`,gap:1,background:HAIRLINE,borderBottom:raya?`1px solid ${HAIRLINE}`:void 0,flex:llena?1:void 0},"data-gufi-src":"portal/informe.tsx:123"},children)}function Datos({items}){return __gh("div",{className:"in-datos",style:{"--n":Math.min(items.length,4)},"data-gufi-src":"portal/informe.tsx:132"},items.map((x,i)=>__gh("div",{key:i,style:{minWidth:0},"data-gufi-src":"portal/informe.tsx:134"},__gh("div",{style:{fontSize:12,color:MUTED},"data-gufi-src":"portal/informe.tsx:135"},x.t),__gh("div",{style:{fontSize:17,fontWeight:600,color:INK,fontVariantNumeric:"tabular-nums",marginTop:2,letterSpacing:"-0.3px"},"data-gufi-src":"portal/informe.tsx:136"},x.v),x.s?__gh("div",{style:{fontSize:11.5,color:MUTED,marginTop:1},"data-gufi-src":"portal/informe.tsx:137"},x.s):null)))}function CabeceraDetalle({titulo:titulo3,sub,extra,onCerrar}){return __gh("div",{style:{display:"flex",alignItems:"baseline",gap:10,flexWrap:"wrap",padding:"12px 16px 0",borderTop:`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/informe.tsx:147"},__gh("span",{style:{fontSize:14,fontWeight:600,color:INK},"data-gufi-src":"portal/informe.tsx:148"},titulo3),sub?__gh("span",{style:{fontSize:12,color:MUTED},"data-gufi-src":"portal/informe.tsx:149"},sub):null,__gh("span",{style:{marginLeft:"auto",display:"inline-flex",gap:16},"data-gufi-src":"portal/informe.tsx:150"},extra,__gh("button",{type:"button",onClick:onCerrar,style:ENLACE,"data-gufi-src":"portal/informe.tsx:152"},"Cerrar")))}function Plegar({abierto,onClick,texto}){return __gh("button",{type:"button",onClick,"aria-expanded":abierto,style:{display:"flex",alignItems:"center",gap:6,width:"100%",border:"none",borderTop:`1px solid ${HAIRLINE}`,background:"#fff",padding:"12px 16px",fontSize:13.5,fontWeight:500,color:ACCENT,cursor:"pointer",textAlign:"left",fontFamily:"inherit"},"data-gufi-src":"portal/informe.tsx:161"},abierto?"Ocultar":"Ver"," ",texto,__gh(import_lucide_react34.ChevronDown,{size:15,style:{transform:abierto?"rotate(180deg)":"none",transition:"transform .2s"}}))}function Medidor({valor,max=100,ancho=64}){let w=max>0?Math.max(0,Math.min(100,(Number(valor)||0)/max*100)):0;return __gh("span",{style:{display:"inline-block",width:ancho,height:6,borderRadius:99,background:FILL,overflow:"hidden",verticalAlign:"middle",flexShrink:0},"data-gufi-src":"portal/informe.tsx:173"},__gh("span",{style:{display:"block",width:`${w}%`,height:"100%",borderRadius:99,background:SERIE},"data-gufi-src":"portal/informe.tsx:174"}))}var ConBarra=({p})=>__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:10},"data-gufi-src":"portal/informe.tsx:181"},__gh(Medidor,{valor:p||0}),porcentaje(p));function Subtitulo({titulo:titulo3,sub,raya}){return __gh("div",{style:{padding:"14px 16px 4px",borderTop:raya?`1px solid ${HAIRLINE}`:void 0},"data-gufi-src":"portal/informe.tsx:187"},__gh("div",{style:{fontSize:13,fontWeight:600,color:INK},"data-gufi-src":"portal/informe.tsx:188"},titulo3),sub?__gh("div",{style:{fontSize:12,color:MUTED,marginTop:1,lineHeight:1.45},"data-gufi-src":"portal/informe.tsx:189"},sub):null)}function Barras({filas,base:base2}){let max=Math.max(1,...filas.map(x=>x.n));return __gh("div",{style:{padding:"8px 16px 16px",display:"grid",gap:9},"data-gufi-src":"portal/informe.tsx:198"},filas.map((x,k)=>__gh("div",{key:k,style:{display:"flex",alignItems:"center",gap:12,minWidth:0},"data-gufi-src":"portal/informe.tsx:200"},__gh("span",{style:{width:"32%",flexShrink:0,fontSize:13,color:INK,overflowWrap:"anywhere"},"data-gufi-src":"portal/informe.tsx:201"},x.etiqueta),__gh("span",{style:{flex:1,minWidth:0,height:6,borderRadius:99,background:FILL,overflow:"hidden"},"data-gufi-src":"portal/informe.tsx:202"},__gh("span",{style:{display:"block",width:`${Math.max(1.5,x.n/max*100)}%`,height:"100%",borderRadius:99,background:SERIE},"data-gufi-src":"portal/informe.tsx:203"})),__gh("span",{style:{flexShrink:0,minWidth:96,textAlign:"right",fontSize:12.5,color:INK,fontWeight:600,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/informe.tsx:205"},numero(x.n),__gh("span",{style:{color:MUTED,fontWeight:400},"data-gufi-src":"portal/informe.tsx:206"}," \xB7 ",porcentaje(base2?x.n/base2*100:null))))))}function Informe({api,token,propiedadIds,ambito,ownerName}){let[hist,setHist]=(0,import_react35.useState)(null),[fut,setFut]=(0,import_react35.useState)(null),[loading,setLoading]=(0,import_react35.useState)(!0),[error,setError]=(0,import_react35.useState)(""),idsKey=(propiedadIds||[]).join(","),hoy2=(0,import_react35.useMemo)(()=>ymd(new Date),[]),finFuturo=(0,import_react35.useMemo)(()=>{let d2=new Date;return ymd(new Date(d2.getFullYear(),d2.getMonth()+5,0))},[]);if((0,import_react35.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(Tarjeta3,null,__gh(FilasCargando,{n:8}));if(error)return __gh(Aviso2,{titulo:"No se ha podido montar el informe",texto:error});if(!hist||!hist.totales||!hist.unidades)return __gh(Tarjeta3,null,__gh(Vacio2,{titulo:"Todav\xEDa no hay noches vendidas",texto:"En cuanto entre la primera reserva de esta selecci\xF3n, el informe se monta solo."}));let u=hist.unidades,t3=hist.totales,diaHoy=(fut&&fut.dias||[]).find(d2=>d2.fecha===hoy2),ocupHoy=diaHoy&&u?diaHoy.ocupadas/u*100:null,nombre=ambito||ownerName;return __gh("div",{className:"in-pagina","data-gufi-src":"portal/informe.tsx:254"},__gh("style",{"data-gufi-src":"portal/informe.tsx:255"},INFORME_CSS),__gh(Cabecera3,{hist,ambito:nombre,unidades:u,onExcel:()=>exportar(hist,fut,nombre)}),__gh(Lectura,{hist,fut,hoy:hoy2}),__gh("div",{className:"in-hoy","data-gufi-src":"portal/informe.tsx:260"},__gh(Grupo,{titulo:"Hoy",sub:diaLargo(hoy2),llena:!0},__gh(CifrasDentro,{columnas:3,llena:!0},__gh(Cifra2,{etiqueta:"Ocupaci\xF3n",valor:porcentaje(ocupHoy),sub:diaHoy?`${numero(diaHoy.ocupadas)} de ${numero(u)} camas`:"sin dato"}),__gh(Cifra2,{etiqueta:"Ingresos",valor:diaHoy?euros2(diaHoy.recaudacion):"sin dato",sub:"brutos, ya vendidos"}),__gh(Cifra2,{etiqueta:"Entran y salen",valor:diaHoy?`${numero(diaHoy.entradas)} / ${numero(diaHoy.salidas)}`:"sin dato",sub:"el movimiento del d\xEDa"}))),__gh(Grupo,{titulo:"Desde la apertura",sub:plural4(t3.dias,"d\xEDa","d\xEDas"),llena:!0},__gh(CifrasDentro,{columnas:4,llena:!0},__gh(Cifra2,{etiqueta:"Ocupaci\xF3n media",valor:porcentaje(t3.ocupacion),sub:`${numero(t3.ocupadas)} de ${numero(t3.noches_disponibles)} noches`}),__gh(Cifra2,{etiqueta:"Ingresos brutos",valor:euros2(t3.recaudacion),sub:"alojamiento"}),__gh(Cifra2,{etiqueta:"Precio medio",valor:t3.adr==null?"sin dato":money2(t3.adr),sub:"por cama vendida"}),__gh(Cifra2,{etiqueta:"Tu ingreso",valor:euros2(t3.tuyo),sub:`comisi\xF3n ${euros2(t3.comision)}`})))),__gh("div",{className:"in-dos","data-gufi-src":"portal/informe.tsx:278"},__gh(SemanaASemana,{semanas:hist.semanas||[],unidades:u}),__gh(MesesDeLaCasa,{hist,fut,unidades:u,hoy:hoy2})),__gh("div",{className:"in-dos in-llena","data-gufi-src":"portal/informe.tsx:283"},__gh(LoVendido,{fut,unidades:u}),__gh(ProximosDias,{fut,unidades:u,hoy:hoy2})),__gh("div",{className:"in-dos in-llena","data-gufi-src":"portal/informe.tsx:288"},__gh(DeDondeViene2,{filas:hist.por_canal||[],total:t3.recaudacion,llena:!0}),__gh(ComoEntra,{r:hist.reservas,perfil:hist.perfil})),__gh("div",{className:"in-dos in-llena","data-gufi-src":"portal/informe.tsx:293"},__gh(QuienDuerme,{perfil:hist.perfil}),__gh(PatronSemanal,{dow:hist.dow||[],unidades:u})),__gh(PorTipo,{unidades:hist.por_unidad||[],dias:t3.dias,total:t3.recaudacion}),__gh(PorHabitacion,{unidades:hist.por_unidad||[],dias:t3.dias,total:t3.recaudacion}),__gh("p",{style:{fontSize:12,color:MUTED,margin:"0 4px",lineHeight:1.55},"data-gufi-src":"portal/informe.tsx:303"},"Dos cosas de tu informe en PDF no salen aqu\xED, y no es un olvido: los cobros del TPV no entran en Gufi por ning\xFAn sitio, y la 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."))}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 Cabecera3({hist,ambito,unidades,onExcel}){let declarada=hist.apertura_origen==="declarada",previas=hist.previas;return __gh("div",{style:{display:"flex",alignItems:"flex-start",gap:12,flexWrap:"wrap",padding:"0 4px"},"data-gufi-src":"portal/informe.tsx:338"},__gh("div",{style:{flex:"1 1 320px",minWidth:0},"data-gufi-src":"portal/informe.tsx:339"},__gh("h2",{style:{fontSize:22,fontWeight:650,letterSpacing:"-0.5px",color:INK,margin:0},"data-gufi-src":"portal/informe.tsx:340"},ambito||"Mis unidades"),__gh("p",{style:{fontSize:13,color:MUTED,margin:"3px 0 0",lineHeight:1.45},"data-gufi-src":"portal/informe.tsx:341"},"Informe de gesti\xF3n \xB7 ",plural4(unidades,"unidad","unidades")," \xB7 desde ",declarada?"la apertura":"la primera noche vendida",", el ",fmtLarga(hist.apertura)," \xB7 ",plural4(hist.totales.dias,"d\xEDa","d\xEDas")),declarada&&previas&&previas.noches?__gh("p",{style:{fontSize:12.5,color:MUTED,margin:"6px 0 0",lineHeight:1.5},"data-gufi-src":"portal/informe.tsx:345"},"Antes de abrir ya se hab\xEDan dormido ",numero(previas.noches)," camas-noche (",money2(previas.recaudacion),"), desde el ",fmtLarga(hist.primera_noche),". Quedan fuera de este informe, que empieza el d\xEDa de la apertura."):null),__gh(Boton2,{onClick:onExcel,icono:__gh(import_lucide_react34.Download,{size:15})},"Bajar el informe en Excel"))}function Lectura({hist,fut,hoy:hoy2}){let puntos=[],completas=(hist.semanas||[]).filter(s=>s.dias===7);if(completas.length>=8){let tramo=arr=>{let o=arr.reduce((s,x)=>s+x.ocupadas,0),d2=arr.reduce((s,x)=>s+x.noches_disponibles,0);return d2?o/d2*100:null},antes=tramo(completas.slice(-8,-4)),ahora=tramo(completas.slice(-4)),sube=ahora>antes;puntos.push({t:sube?"La ocupaci\xF3n sube":"La ocupaci\xF3n baja",d:`Las cuatro \xFAltimas semanas, ${porcentaje(ahora)}. Las cuatro anteriores, ${porcentaje(antes)}.`,tono:sube?"ok":"aviso"})}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 ${euros2(ef)} al d\xEDa frente a ${euros2(er)} del resto${ef>er?`, un ${Math.round((ef-er)/er*100)} % m\xE1s`:""}.`,tono:"mudo"})}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:`${porcentaje(p)} de las reservas entra el mismo d\xEDa o la v\xEDspera (${numero(ultima.n)} de ${numero(totalAnt)}). Los meses que hoy parecen vac\xEDos se llenan en la \xFAltima semana.`,tono:"mudo"})}let futuros=(fut&&fut.meses||[]).filter(m=>m.mes>hoy2.slice(0,7)),finAnio=`${hoy2.slice(0,4)}-12-31`,vendidoAnio=(fut&&fut.dias||[]).filter(d2=>d2.fecha>hoy2&&d2.fecha<=finAnio).reduce((s,d2)=>s+d2.recaudacion,0);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 ${porcentaje(fuerte.ocupacion)} y ${mesLabel(flojo.mes).toLowerCase()} al ${porcentaje(flojo.ocupacion)}. Lo ya vendido de ma\xF1ana a fin de a\xF1o suma ${euros2(vendidoAnio)}.`,tono:"aviso"})}return puntos.length?__gh(Grupo,{titulo:"Lo que dicen los n\xFAmeros"},__gh("div",{className:"in-lectura","data-gufi-src":"portal/informe.tsx:416"},puntos.map((p,k)=>__gh("div",{key:k,style:{background:"#fff",display:"flex",gap:12,padding:"13px 16px",minWidth:0},"data-gufi-src":"portal/informe.tsx:418"},__gh("span",{style:{paddingTop:6,display:"flex"},"data-gufi-src":"portal/informe.tsx:419"},__gh(Punto2,{tono:p.tono})),__gh("span",{style:{minWidth:0},"data-gufi-src":"portal/informe.tsx:420"},__gh("span",{style:{display:"block",fontSize:13.5,fontWeight:600,color:INK},"data-gufi-src":"portal/informe.tsx:421"},p.t),__gh("span",{style:{display:"block",fontSize:12.5,color:MUTED,marginTop:2,lineHeight:1.5},"data-gufi-src":"portal/informe.tsx:422"},p.d)))))):null}var semanaTexto=s=>`Del ${diaMes(s.desde)} al ${diaMes(s.hasta)}`;function SemanaASemana({semanas,unidades}){let[tabla,setTabla]=(0,import_react35.useState)(!1),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?"la mejor semana":peor&&s.inicio===peor.inicio?"la peor semana":null;if(!semanas.length)return __gh(Grupo,{titulo:"Semana a semana"},__gh(Vacio2,{titulo:"Sin semanas todav\xEDa"}));let serie=semanas.map(s=>({...s,ocup:s.ocupacion==null?0:s.ocupacion})),ticksE=marcas(Math.max(0,...semanas.map(s=>s.recaudacion))),recientes=semanas.slice().reverse(),camasDia=s=>`${numero(Math.round(s.ocupadas/s.dias))} de ${numero(unidades)}`;return __gh(Grupo,{titulo:"Semana a semana",sub:"La ocupaci\xF3n en la curva y lo vendido en barras; las semanas a medias, en gris claro"},__gh("div",{style:{padding:"14px 18px 0"},"data-gufi-src":"portal/informe.tsx:449"},__gh(Leyenda,{series:[{color:"#d6d6dc",texto:"Ingresos, en euros"},{color:SERIE,texto:"Ocupaci\xF3n"}]})),__gh("div",{style:{height:250,padding:"6px 6px 8px 0"},"data-gufi-src":"portal/informe.tsx:452"},__gh(import_recharts4.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts4.ComposedChart,{data:serie,margin:MARGEN},__gh("defs",{"data-gufi-src":"portal/informe.tsx:455"},degradado("in-sem",SERIE,.24,0)),__gh(import_recharts4.CartesianGrid,{...REJILLA}),__gh(import_recharts4.XAxis,{dataKey:"inicio",...EJE,tickFormatter:diaMes,minTickGap:18}),__gh(import_recharts4.YAxis,{yAxisId:"e",...EJE,width:52,domain:[0,ticksE[ticksE.length-1]],ticks:ticksE,tickFormatter:x=>eurosEje(x)}),__gh(import_recharts4.YAxis,{yAxisId:"p",orientation:"right",...EJE,width:52,domain:[0,100],ticks:[0,50,100],tickFormatter:x=>`${x} %`}),__gh(import_recharts4.Tooltip,{cursor:CURSOR,content:__gh(Globo,{titulo:p=>`${semanaTexto(p)}${p.dias<7?`, ${p.dias} d\xEDas`:""}`,filas:p=>[{color:SERIE,texto:"Ocupaci\xF3n",valor:porcentaje(p.ocupacion)},{color:"#d6d6dc",texto:"Ingresos",valor:euros2(p.recaudacion)},{color:"transparent",texto:"Camas al d\xEDa",valor:camasDia(p)},{color:"transparent",texto:"Precio por cama",valor:p.adr==null?"sin dato":money2(p.adr)}]})}),__gh(import_recharts4.Bar,{yAxisId:"e",dataKey:"recaudacion",radius:[4,4,0,0],maxBarSize:30,animationDuration:600},serie.map(s=>__gh(import_recharts4.Cell,{key:s.inicio,fill:s.dias<7?"#ececf0":"#dedee3"}))),__gh(import_recharts4.Area,{yAxisId:"p",type:"monotone",dataKey:"ocup",stroke:SERIE,strokeWidth:2.25,fill:"url(#in-sem)",dot:!1,activeDot:PUNTO_ACTIVO(SERIE),animationDuration:700})))),__gh(Plegar,{abierto:tabla,onClick:()=>setTabla(!tabla),texto:`la tabla de las ${numero(semanas.length)} semanas`}),tabla?__gh(__gf,null,__gh("div",{className:"in-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/informe.tsx:476"},__gh("table",{className:"in-tabla","data-gufi-src":"portal/informe.tsx:477"},__gh("thead",{"data-gufi-src":"portal/informe.tsx:478"},__gh("tr",{"data-gufi-src":"portal/informe.tsx:478"},__gh("th",{"data-gufi-src":"portal/informe.tsx:478"},"Semana"),__gh("th",{"data-gufi-src":"portal/informe.tsx:478"},"Ocupaci\xF3n"),__gh("th",{"data-gufi-src":"portal/informe.tsx:478"},"Camas al d\xEDa"),__gh("th",{"data-gufi-src":"portal/informe.tsx:478"},"Ingresos"),__gh("th",{"data-gufi-src":"portal/informe.tsx:478"},"Por cama"))),__gh("tbody",{"data-gufi-src":"portal/informe.tsx:479"},recientes.map(s=>{let m=marca2(s);return __gh("tr",{key:s.inicio,"data-gufi-src":"portal/informe.tsx:483"},__gh("td",{"data-gufi-src":"portal/informe.tsx:484"},__gh("span",{style:{display:"block",fontWeight:500},"data-gufi-src":"portal/informe.tsx:485"},semanaTexto(s)),s.dias<7?__gh("span",{className:"sub","data-gufi-src":"portal/informe.tsx:486"},"a medias, ",plural4(s.dias,"d\xEDa","d\xEDas")):m?__gh("span",{className:"sub","data-gufi-src":"portal/informe.tsx:486"},m):null),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/informe.tsx:488"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7},"data-gufi-src":"portal/informe.tsx:489"},m?__gh(Punto2,{tono:m==="la mejor semana"?"ok":"mal"}):null,porcentaje(s.ocupacion))),__gh("td",{"data-gufi-src":"portal/informe.tsx:491"},camasDia(s)),__gh("td",{"data-gufi-src":"portal/informe.tsx:492"},money2(s.recaudacion)),__gh("td",{"data-gufi-src":"portal/informe.tsx:493"},s.adr==null?__gh("span",{className:"nada","data-gufi-src":"portal/informe.tsx:493"},"sin dato"):money2(s.adr)))})))),__gh("div",{className:"in-movil","data-gufi-src":"portal/informe.tsx:500"},recientes.map((s,i)=>{let m=marca2(s);return __gh(Fila2,{key:s.inicio,primera:i===0,titulo:semanaTexto(s),sub:`${camasDia(s)} camas al d\xEDa \xB7 ${money2(s.recaudacion)}${s.dias<7?` \xB7 a medias, ${plural4(s.dias,"d\xEDa","d\xEDas")}`:m?` \xB7 ${m}`:""}`,valor:porcentaje(s.ocupacion),valorSub:s.adr==null?"sin dato":`${money2(s.adr)} por cama`})}))):null)}function MesesDeLaCasa({hist,fut,unidades,hoy:hoy2}){let meses=(0,import_react35.useMemo)(()=>{let m={};return(hist.meses||[]).forEach(x=>{m[x.mes]={mes:x.mes,dias:x.dias,ocupadas:x.ocupadas,recaudacion:x.recaudacion,tuyo:x.tuyo,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,tuyo:0,futuro:!0}),m[k].dias++,m[k].ocupadas+=d2.ocupadas,m[k].recaudacion+=d2.recaudacion,m[k].tuyo+=d2.tuyo}),Object.values(m).sort((a,b)=>a.mes.localeCompare(b.mes)).map(g=>({...g,noches_disponibles:unidades*g.dias,ocupacion:unidades&&g.dias?g.ocupadas/(unidades*g.dias)*100:null}))},[hist,fut,hoy2,unidades]);return meses.length<2?null:__gh(MesAMes2,{meses,titulo:"Mes a mes",sub:"Desde que abriste; los que a\xFAn no han llegado ense\xF1an lo ya vendido. Pulsa un mes para ver de qu\xE9 est\xE1 hecho"})}function MesAMes2({meses,titulo:titulo3,sub,onAbrir,llena}){let[sel,setSel]=(0,import_react35.useState)(null),[tabla,setTabla]=(0,import_react35.useState)(!1);(0,import_react35.useEffect)(()=>{setSel(null)},[meses]);let elegir=m=>setSel(s=>s===m?null:m),mes2=sel?meses.find(x=>x.mes===sel):null,hayFuturo=meses.some(x=>x.futuro),serie=(0,import_react35.useMemo)(()=>meses.map((x,i)=>{let o=x.ocupacion==null?0:x.ocupacion,sig=meses[i+1];return{...x,pasado:x.futuro?null:o,venidero:x.futuro||sig&&sig.futuro?o:null}}),[meses]),ticksE=marcas(Math.max(0,...meses.map(x=>x.recaudacion))),nombre=x=>`${MES[parseInt(x.mes.slice(5),10)]}${x.mes.slice(0,4)===String(new Date().getFullYear())?"":` ${x.mes.slice(0,4)}`}`;return __gh(Grupo,{titulo:titulo3,sub,llena},__gh("div",{style:{padding:"14px 18px 0"},"data-gufi-src":"portal/informe.tsx:559"},__gh(Leyenda,{series:[{color:"#d6d6dc",texto:"Ingresos, en euros"},{color:SERIE,texto:"Ocupaci\xF3n"}].concat(hayFuturo?[{color:"#b9b5ff",texto:"Lo ya vendido"}]:[])})),__gh("div",{style:llena?{flex:1,minHeight:250,maxHeight:420,padding:"6px 6px 8px 0"}:{height:250,padding:"6px 6px 8px 0"},"data-gufi-src":"portal/informe.tsx:562"},__gh(import_recharts4.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts4.ComposedChart,{data:serie,margin:MARGEN,style:{cursor:"pointer"}},__gh("defs",{"data-gufi-src":"portal/informe.tsx:565"},degradado("in-mes",SERIE,.24,0)),__gh(import_recharts4.CartesianGrid,{...REJILLA}),__gh(import_recharts4.XAxis,{dataKey:"mes",...EJE,tickFormatter:ym=>{let c=mesCorto(ym);return c.charAt(0).toUpperCase()+c.slice(1)}}),__gh(import_recharts4.YAxis,{yAxisId:"e",...EJE,width:52,domain:[0,ticksE[ticksE.length-1]],ticks:ticksE,tickFormatter:x=>eurosEje(x)}),__gh(import_recharts4.YAxis,{yAxisId:"p",orientation:"right",...EJE,width:52,domain:[0,100],ticks:[0,50,100],tickFormatter:x=>`${x} %`}),__gh(import_recharts4.Tooltip,{cursor:CURSOR_BARRA,content:__gh(Globo,{titulo:p=>`${mesLabel(p.mes)}${p.futuro?", lo ya vendido":""}`,filas:p=>[{color:p.futuro?"#b9b5ff":SERIE,texto:"Ocupaci\xF3n",valor:porcentaje(p.ocupacion)},{color:"#d6d6dc",texto:"Ingresos",valor:euros2(p.recaudacion)},{color:"transparent",texto:"Noches vendidas",valor:`${numero(p.ocupadas)} de ${numero(p.noches_disponibles)}`}]})}),__gh(import_recharts4.Bar,{yAxisId:"e",dataKey:"recaudacion",radius:[4,4,0,0],maxBarSize:38,animationDuration:600,style:{cursor:"pointer"},onClick:b=>{let m=b&&(b.mes||b.payload&&b.payload.mes);m&&elegir(m)}},serie.map(s=>__gh(import_recharts4.Cell,{key:s.mes,fill:sel===s.mes?"#b9b5ff":sel||s.futuro?"#ececf0":"#dedee3"}))),__gh(import_recharts4.Area,{yAxisId:"p",type:"monotone",dataKey:"pasado",stroke:SERIE,strokeWidth:2.25,fill:"url(#in-mes)",dot:!1,activeDot:PUNTO_ACTIVO(SERIE),animationDuration:700}),hayFuturo?__gh(import_recharts4.Area,{yAxisId:"p",type:"monotone",dataKey:"venidero",stroke:"#a5a0ff",strokeWidth:2,strokeDasharray:"5 4",fill:"none",dot:!1,activeDot:PUNTO_ACTIVO("#a5a0ff"),animationDuration:700}):null))),mes2?__gh(__gf,null,__gh(CabeceraDetalle,{titulo:mesLabel(mes2.mes),sub:mes2.futuro?"lo ya vendido a d\xEDa de hoy":void 0,onCerrar:()=>setSel(null),extra:onAbrir?__gh("button",{type:"button",style:ENLACE,onClick:()=>onAbrir(mes2.mes),"data-gufi-src":"portal/informe.tsx:587"},"Verlo d\xEDa a d\xEDa"):null}),__gh(Datos,{items:[{t:"Ocupaci\xF3n",v:porcentaje(mes2.ocupacion),s:`${numero(mes2.ocupadas)} de ${numero(mes2.noches_disponibles)} noches`},{t:"Ingresos",v:money2(mes2.recaudacion),s:"lo que paga el hu\xE9sped"},{t:"Precio medio",v:mes2.ocupadas?money2(mes2.recaudacion/mes2.ocupadas):"sin dato",s:"por noche vendida"},{t:"Tu ingreso",v:money2(mes2.tuyo),s:`comisi\xF3n ${money2(mes2.recaudacion-mes2.tuyo)}`}]})):null,__gh(Plegar,{abierto:tabla,onClick:()=>setTabla(!tabla),texto:`la tabla de los ${numero(meses.length)} meses`}),tabla?__gh(__gf,null,__gh("div",{className:"in-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/informe.tsx:599"},__gh("table",{className:"in-tabla","data-gufi-src":"portal/informe.tsx:600"},__gh("thead",{"data-gufi-src":"portal/informe.tsx:601"},__gh("tr",{"data-gufi-src":"portal/informe.tsx:601"},__gh("th",{"data-gufi-src":"portal/informe.tsx:601"},"Mes"),__gh("th",{"data-gufi-src":"portal/informe.tsx:601"},"Ocupaci\xF3n"),__gh("th",{"data-gufi-src":"portal/informe.tsx:601"},"Noches"),__gh("th",{"data-gufi-src":"portal/informe.tsx:601"},"Ingresos"),__gh("th",{"data-gufi-src":"portal/informe.tsx:601"},"Tu ingreso"))),__gh("tbody",{"data-gufi-src":"portal/informe.tsx:602"},meses.map(x=>__gh("tr",{key:x.mes,"data-toca":"1","data-elegida":sel===x.mes?"1":"0",onClick:()=>elegir(x.mes),"data-gufi-src":"portal/informe.tsx:604"},__gh("td",{"data-gufi-src":"portal/informe.tsx:605"},__gh("span",{style:{display:"block",fontWeight:500},"data-gufi-src":"portal/informe.tsx:605"},nombre(x)),x.futuro?__gh("span",{className:"sub","data-gufi-src":"portal/informe.tsx:605"},"lo ya vendido"):null),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/informe.tsx:606"},porcentaje(x.ocupacion)),__gh("td",{"data-gufi-src":"portal/informe.tsx:607"},numero(x.ocupadas)," ",__gh("span",{className:"nada","data-gufi-src":"portal/informe.tsx:607"},"de ",numero(x.noches_disponibles))),__gh("td",{"data-gufi-src":"portal/informe.tsx:608"},money2(x.recaudacion)),__gh("td",{"data-gufi-src":"portal/informe.tsx:609"},money2(x.tuyo))))))),__gh("div",{className:"in-movil","data-gufi-src":"portal/informe.tsx:615"},meses.map((x,i)=>__gh(Fila2,{key:x.mes,primera:i===0,titulo:nombre(x),elegida:sel===x.mes,onClick:()=>elegir(x.mes),sub:`${numero(x.ocupadas)} de ${numero(x.noches_disponibles)} noches${x.futuro?" \xB7 lo ya vendido":""}`,valor:porcentaje(x.ocupacion),valorSub:money2(x.recaudacion)})))):null)}function LoVendido({fut,unidades}){let meses=fut&&fut.meses||[],serie=(0,import_react35.useMemo)(()=>(fut&&fut.dias||[]).map(d2=>({...d2,ocup:unidades?d2.ocupadas/unidades*100:0})),[fut,unidades]);if(!meses.length)return __gh(Grupo,{titulo:"Lo que ya est\xE1 vendido",llena:!0},__gh(Vacio2,{titulo:"No hay reservas futuras"}));let nombreMes=(m,k)=>k===0&&m.dias`${x} %`}),__gh(import_recharts4.Tooltip,{cursor:CURSOR,content:__gh(Globo,{titulo:p=>diaLargo(p.fecha),filas:p=>[{color:SERIE,texto:"Ocupaci\xF3n",valor:porcentaje(p.ocup)},{color:"transparent",texto:"Camas",valor:`${numero(p.ocupadas)} de ${numero(unidades)}`},{color:"transparent",texto:"Ingresos",valor:euros2(p.recaudacion)}]})}),__gh(import_recharts4.Area,{type:"monotone",dataKey:"ocup",stroke:SERIE,strokeWidth:2,fill:"url(#in-fut)",dot:!1,activeDot:PUNTO_ACTIVO(SERIE),animationDuration:700})))),__gh("div",{className:"in-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/informe.tsx:653"},__gh("table",{className:"in-tabla","data-gufi-src":"portal/informe.tsx:654"},__gh("thead",{"data-gufi-src":"portal/informe.tsx:655"},__gh("tr",{"data-gufi-src":"portal/informe.tsx:655"},__gh("th",{"data-gufi-src":"portal/informe.tsx:655"},"Mes"),__gh("th",{"data-gufi-src":"portal/informe.tsx:655"},"Ocupaci\xF3n"),__gh("th",{"data-gufi-src":"portal/informe.tsx:655"},"Camas-noche"),__gh("th",{"data-gufi-src":"portal/informe.tsx:655"},"Ingresos"))),__gh("tbody",{"data-gufi-src":"portal/informe.tsx:656"},meses.map((m,k)=>__gh("tr",{key:m.mes,"data-gufi-src":"portal/informe.tsx:658"},__gh("td",{style:{fontWeight:500},"data-gufi-src":"portal/informe.tsx:659"},nombreMes(m,k)),__gh("td",{"data-gufi-src":"portal/informe.tsx:660"},__gh(ConBarra,{p:m.ocupacion})),__gh("td",{"data-gufi-src":"portal/informe.tsx:661"},numero(m.ocupadas)," ",__gh("span",{className:"nada","data-gufi-src":"portal/informe.tsx:661"},"de ",numero(m.noches_disponibles))),__gh("td",{"data-gufi-src":"portal/informe.tsx:662"},money2(m.recaudacion))))))),__gh("div",{className:"in-movil","data-gufi-src":"portal/informe.tsx:668"},meses.map((m,k)=>__gh(Fila2,{key:m.mes,primera:k===0,titulo:nombreMes(m,k),sub:`${numero(m.ocupadas)} de ${numero(m.noches_disponibles)} camas-noche`,valor:porcentaje(m.ocupacion),valorSub:money2(m.recaudacion)}))))}function ProximosDias({fut,unidades,hoy:hoy2}){let proximos=(fut&&fut.dias||[]).filter(d2=>d2.fecha>hoy2).slice(0,7),ocup=d2=>unidades?d2.ocupadas/unidades*100:null;return __gh(Grupo,{titulo:"Pr\xF3ximos d\xEDas",sub:"Lo que ya est\xE1 vendido para los siete que vienen",llena:!0},proximos.length?__gh(__gf,null,__gh("div",{className:"in-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/informe.tsx:686"},__gh("table",{className:"in-tabla","data-gufi-src":"portal/informe.tsx:687"},__gh("thead",{"data-gufi-src":"portal/informe.tsx:688"},__gh("tr",{"data-gufi-src":"portal/informe.tsx:688"},__gh("th",{"data-gufi-src":"portal/informe.tsx:688"},"D\xEDa"),__gh("th",{"data-gufi-src":"portal/informe.tsx:688"},"Ocupaci\xF3n"),__gh("th",{"data-gufi-src":"portal/informe.tsx:688"},"Camas"),__gh("th",{"data-gufi-src":"portal/informe.tsx:688"},"Ingresos"),__gh("th",{"data-gufi-src":"portal/informe.tsx:688"},"Por cama"))),__gh("tbody",{"data-gufi-src":"portal/informe.tsx:689"},proximos.map(d2=>__gh("tr",{key:d2.fecha,"data-gufi-src":"portal/informe.tsx:691"},__gh("td",{style:{fontWeight:500},"data-gufi-src":"portal/informe.tsx:692"},diaLargo(d2.fecha)),__gh("td",{"data-gufi-src":"portal/informe.tsx:693"},__gh(ConBarra,{p:ocup(d2)})),__gh("td",{"data-gufi-src":"portal/informe.tsx:694"},numero(d2.ocupadas)," ",__gh("span",{className:"nada","data-gufi-src":"portal/informe.tsx:694"},"de ",numero(unidades))),__gh("td",{"data-gufi-src":"portal/informe.tsx:695"},money2(d2.recaudacion)),__gh("td",{"data-gufi-src":"portal/informe.tsx:696"},d2.ocupadas?money2(d2.recaudacion/d2.ocupadas):__gh("span",{className:"nada","data-gufi-src":"portal/informe.tsx:696"},"sin dato"))))))),__gh("div",{className:"in-movil","data-gufi-src":"portal/informe.tsx:702"},proximos.map((d2,i)=>__gh(Fila2,{key:d2.fecha,primera:i===0,titulo:diaLargo(d2.fecha),sub:`${numero(d2.ocupadas)} de ${numero(unidades)} camas \xB7 ${money2(d2.recaudacion)}`,valor:porcentaje(ocup(d2)),valorSub:d2.ocupadas?`${money2(d2.recaudacion/d2.ocupadas)} por cama`:void 0})))):__gh(Vacio2,{titulo:"Nada vendido todav\xEDa para los pr\xF3ximos d\xEDas"}))}function DeDondeViene2({filas,total,llena}){let arr=(0,import_react35.useMemo)(()=>{let m={};return filas.forEach(f=>{let n=nombreCanal(f.canal,f.hw);m[n]||(m[n]={nombre:n,noches:0,recaudacion:0,tuyo:0}),m[n].noches+=f.noches,m[n].recaudacion+=f.recaudacion,m[n].tuyo+=f.tuyo}),Object.values(m).map(c=>({...c,comision:Math.round((c.recaudacion-c.tuyo)*100)/100,pctCom:c.recaudacion?(c.recaudacion-c.tuyo)/c.recaudacion*100:null,peso:total?c.recaudacion/total*100:0})).sort((a,b)=>b.recaudacion-a.recaudacion)},[filas,total]),tot=arr.reduce((s,c)=>({noches:s.noches+c.noches,recaudacion:s.recaudacion+c.recaudacion,comision:s.comision+c.comision,tuyo:s.tuyo+c.tuyo}),{noches:0,recaudacion:0,comision:0,tuyo:0});return __gh(Grupo,{titulo:"De d\xF3nde viene",sub:"Cu\xE1nto paga el hu\xE9sped en cada canal, qu\xE9 se queda de comisi\xF3n y qu\xE9 te llega",llena},arr.length?__gh(__gf,null,__gh("div",{style:{display:"flex",gap:2,height:8,borderRadius:99,overflow:"hidden",margin:"16px 16px 6px"},"data-gufi-src":"portal/informe.tsx:739"},arr.map(c=>__gh("span",{key:c.nombre,title:`${c.nombre}: ${porcentaje(c.peso)}`,style:{width:`${c.peso}%`,background:colorCanal(c.nombre)},"data-gufi-src":"portal/informe.tsx:740"}))),__gh("div",{className:"in-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/informe.tsx:742"},__gh("table",{className:"in-tabla","data-gufi-src":"portal/informe.tsx:743"},__gh("thead",{"data-gufi-src":"portal/informe.tsx:744"},__gh("tr",{"data-gufi-src":"portal/informe.tsx:744"},__gh("th",{"data-gufi-src":"portal/informe.tsx:744"},"Canal"),__gh("th",{"data-gufi-src":"portal/informe.tsx:744"},"Noches"),__gh("th",{"data-gufi-src":"portal/informe.tsx:744"},"Paga el hu\xE9sped"),__gh("th",{"data-gufi-src":"portal/informe.tsx:744"},"Comisi\xF3n"),__gh("th",{"data-gufi-src":"portal/informe.tsx:744"},"Te llega"))),__gh("tbody",{"data-gufi-src":"portal/informe.tsx:745"},arr.map(c=>__gh("tr",{key:c.nombre,"data-gufi-src":"portal/informe.tsx:747"},__gh("td",{"data-gufi-src":"portal/informe.tsx:748"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:10},"data-gufi-src":"portal/informe.tsx:749"},__gh(LogoCanal,{canal:c.nombre,tam:26}),__gh("span",{"data-gufi-src":"portal/informe.tsx:751"},__gh("span",{style:{display:"block",fontWeight:500},"data-gufi-src":"portal/informe.tsx:751"},c.nombre),__gh("span",{className:"sub","data-gufi-src":"portal/informe.tsx:751"},porcentaje(c.peso)," de lo vendido")))),__gh("td",{"data-gufi-src":"portal/informe.tsx:754"},numero(c.noches)),__gh("td",{"data-gufi-src":"portal/informe.tsx:755"},money2(c.recaudacion)),__gh("td",{"data-gufi-src":"portal/informe.tsx:756"},c.comision?__gh(__gf,null,money2(c.comision),__gh("span",{className:"sub","data-gufi-src":"portal/informe.tsx:756"},porcentaje(c.pctCom))):__gh("span",{className:"nada","data-gufi-src":"portal/informe.tsx:756"},"sin comisi\xF3n")),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/informe.tsx:757"},money2(c.tuyo))))),__gh("tfoot",{"data-gufi-src":"portal/informe.tsx:761"},__gh("tr",{"data-gufi-src":"portal/informe.tsx:761"},__gh("td",{"data-gufi-src":"portal/informe.tsx:762"},"Total"),__gh("td",{"data-gufi-src":"portal/informe.tsx:762"},numero(tot.noches)),__gh("td",{"data-gufi-src":"portal/informe.tsx:762"},money2(tot.recaudacion)),__gh("td",{"data-gufi-src":"portal/informe.tsx:763"},money2(tot.comision)),__gh("td",{"data-gufi-src":"portal/informe.tsx:763"},money2(tot.tuyo)))))),__gh("div",{className:"in-movil","data-gufi-src":"portal/informe.tsx:767"},arr.map((c,i)=>__gh(Fila2,{key:c.nombre,primera:i===0,lead:__gh(LogoCanal,{canal:c.nombre,tam:28}),titulo:c.nombre,sub:`${numero(c.noches)} noches \xB7 ${c.comision?`comisi\xF3n ${money2(c.comision)}, ${porcentaje(c.pctCom)}`:"sin comisi\xF3n"}`,valor:money2(c.recaudacion),valorSub:`te llega ${money2(c.tuyo)}`})))):__gh(Vacio2,{titulo:"Sin noches vendidas en este periodo"}))}var TRAMO_CORTO={1:"Mismo d\xEDa",2:"2 a 3 d\xEDas",3:"4 a 7 d\xEDas",4:"8 a 30 d\xEDas",5:"M\xE1s de 30"};function ComoEntra({r,perfil}){let filas=perfil&&perfil.antelacion||[],total=filas.reduce((a,x)=>a+x.n,0);if(!r&&!total)return null;let ultima=filas.find(x=>x.orden===1),serie=filas.map(x=>({...x,pct:total?x.n/total*100:0})),ticks=marcas(Math.max(0,...serie.map(x=>x.pct)));return __gh(Grupo,{titulo:"C\xF3mo entra la reserva",sub:"Cu\xE1nto dura, con cu\xE1nta antelaci\xF3n se pide y a qu\xE9 ritmo entra",llena:!0,pie:ultima&&total?`${porcentaje(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.`:void 0},r?__gh(CifrasDentro,{columnas:2,raya:!!total},__gh(Cifra2,{etiqueta:"Estancia media",valor:r.estancia_media==null?"sin dato":`${decimal4(r.estancia_media,2)} noches`,sub:plural4(r.confirmadas,"reserva","reservas")}),__gh(Cifra2,{etiqueta:"Antelaci\xF3n media",valor:r.antelacion_media==null?"sin dato":plural4(Math.round(r.antelacion_media),"d\xEDa","d\xEDas"),sub:"desde que reservan hasta que llegan"}),__gh(Cifra2,{etiqueta:"Entran a la semana",valor:numero(r.ritmo_7),sub:`reservas en los \xFAltimos 7 d\xEDas, ${euros2(r.ritmo_7_eur)}`}),__gh(Cifra2,{etiqueta:"Canceladas",valor:numero(r.canceladas),sub:r.confirmadas?`${porcentaje(r.canceladas/(r.confirmadas+r.canceladas)*100)} de las hechas`:"sin dato"})):null,total?__gh(__gf,null,__gh(Subtitulo,{titulo:"Con cu\xE1nta antelaci\xF3n",sub:"Cu\xE1nto pasa entre que reservan y que llegan, en parte de las reservas"}),__gh("div",{style:{height:190,padding:"4px 6px 8px 0"},"data-gufi-src":"portal/informe.tsx:806"},__gh(import_recharts4.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts4.BarChart,{data:serie,margin:MARGEN},__gh(import_recharts4.CartesianGrid,{...REJILLA}),__gh(import_recharts4.XAxis,{dataKey:"orden",...EJE,interval:0,tickFormatter:o=>TRAMO_CORTO[o]}),__gh(import_recharts4.YAxis,{...EJE,width:52,domain:[0,ticks[ticks.length-1]],ticks,tickFormatter:x=>`${x} %`}),__gh(import_recharts4.Tooltip,{cursor:CURSOR_BARRA,content:__gh(Globo,{titulo:p=>p.tramo,filas:p=>[{color:SERIE,texto:"Reservas",valor:`${numero(p.n)} \xB7 ${porcentaje(p.pct)}`},{color:"transparent",texto:"Ingresos",valor:euros2(p.recaudacion)}]})}),__gh(import_recharts4.Bar,{dataKey:"pct",fill:SERIE,radius:[4,4,0,0],maxBarSize:46,animationDuration:600}))))):null)}var EDAD_CORTA={1:"Hasta 17",2:"18-24",3:"25-34",4:"35-44",5:"45-54",6:"55 o m\xE1s"};function QuienDuerme({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,cobertura=hayRegistro&&v.estancias?v.estancias_con_registro/v.estancias*100:null,edades=hayRegistro?v.edades.map(x=>({...x,pct:x.n/v.fichas*100})):[],ticks=marcas(Math.max(0,...edades.map(x=>x.pct)));return __gh(Grupo,{titulo:"Qui\xE9n duerme aqu\xED",sub:"Para saber a qui\xE9n le hablas cuando hagas campa\xF1a",llena:!0,pie:hayRegistro?`La edad y el sexo salen del registro de viajeros, que se rellena en el check-in: por eso cubren ${porcentaje(cobertura)} de las estancias y no todas. Cuanto m\xE1s check-in online, mejor sale este cuadro.`:void 0},hayRegistro?__gh(CifrasDentro,{columnas:3,raya:!0},__gh(Cifra2,{etiqueta:"Edad media",valor:v.edad_media==null?"sin dato":`${decimal4(v.edad_media,1)} a\xF1os`,sub:`${numero(v.fichas)} viajeros registrados`}),__gh(Cifra2,{etiqueta:"Hombres y mujeres",valor:`${numero(hombres)} / ${numero(mujeres)}`,sub:hombres+mujeres?`${porcentaje(hombres/(hombres+mujeres)*100)} ellos`:"sin dato"}),__gh(Cifra2,{etiqueta:"Con ficha de viajero",valor:porcentaje(cobertura),sub:`${numero(v.estancias_con_registro)} de ${numero(v.estancias)} estancias`})):null,edades.length?__gh(__gf,null,__gh(Subtitulo,{titulo:"Por edad",sub:`De los ${numero(v.fichas)} viajeros con ficha`}),__gh("div",{style:{height:160,padding:"4px 6px 8px 0"},"data-gufi-src":"portal/informe.tsx:857"},__gh(import_recharts4.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts4.BarChart,{data:edades,margin:MARGEN},__gh(import_recharts4.CartesianGrid,{...REJILLA}),__gh(import_recharts4.XAxis,{dataKey:"orden",...EJE,interval:0,tickFormatter:o=>EDAD_CORTA[o]}),__gh(import_recharts4.YAxis,{...EJE,width:52,domain:[0,ticks[ticks.length-1]],ticks,tickFormatter:x=>`${x} %`}),__gh(import_recharts4.Tooltip,{cursor:CURSOR_BARRA,content:__gh(Globo,{titulo:p=>p.tramo,filas:p=>[{color:SERIE,texto:"Viajeros",valor:`${numero(p.n)} \xB7 ${porcentaje(p.pct)}`}]})}),__gh(import_recharts4.Bar,{dataKey:"pct",fill:SERIE,radius:[4,4,0,0],maxBarSize:40,animationDuration:600}))))):null,filas.length&&con?__gh(__gf,null,__gh(Subtitulo,{raya:hayRegistro,titulo:"De qu\xE9 pa\xEDs llegan",sub:`De las ${numero(con)} reservas que traen pa\xEDs, de ${numero(total)}. Lo manda el canal, y no siempre.`}),__gh(Barras,{filas:filas.map(x=>({etiqueta:paisEs(x.pais),n:x.n})),base:con})):null)}function PatronSemanal({dow,unidades}){let[tabla,setTabla]=(0,import_react35.useState)(!1),filas=(0,import_react35.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),esFinde=d2=>d2.dow===5||d2.dow===6,camas=d2=>`${numero(Math.round(d2.camasDia))} de ${numero(unidades)}`;return __gh(Grupo,{titulo:"Patr\xF3n semanal",sub:"Qu\xE9 d\xEDas funcionan y cu\xE1les est\xE1n flojos, de media desde la apertura",llena:!0},__gh(CifrasDentro,{columnas:2,raya:!0},__gh(Cifra2,{etiqueta:"Viernes y s\xE1bado",valor:porcentaje(ocupFinde),sub:`${euros2(eurFinde)} al d\xEDa`}),__gh(Cifra2,{etiqueta:"Resto de d\xEDas",valor:porcentaje(ocupResto),sub:`${euros2(eurResto)} al d\xEDa`}),__gh(Cifra2,{etiqueta:"Diferencia",valor:dif==null?"sin dato":`${dif>0?"+":""}${Math.round(dif)} %`,sub:"ingresos del fin de semana sobre el resto"}),__gh(Cifra2,{etiqueta:"Punto d\xE9bil",tono:"aviso",valor:flojo.map((d2,i)=>i?DOW[d2.dow].toLowerCase():DOW[d2.dow]).join(" y "),sub:`${porcentaje(media(flojo,"ocupacion"))} de ocupaci\xF3n`})),__gh("div",{style:{padding:"14px 18px 0"},"data-gufi-src":"portal/informe.tsx:906"},__gh(Leyenda,{series:[{color:SERIE,texto:"Viernes y s\xE1bado"},{color:"#d6d6dc",texto:"Resto de d\xEDas"}]})),__gh("div",{style:{height:190,padding:"6px 6px 8px 0"},"data-gufi-src":"portal/informe.tsx:909"},__gh(import_recharts4.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts4.BarChart,{data:filas,margin:MARGEN},__gh(import_recharts4.CartesianGrid,{...REJILLA}),__gh(import_recharts4.XAxis,{dataKey:"dow",...EJE,interval:0,tickFormatter:d2=>DOW_CORTO[d2]}),__gh(import_recharts4.YAxis,{...EJE,width:52,domain:[0,100],ticks:[0,50,100],tickFormatter:x=>`${x} %`}),__gh(import_recharts4.Tooltip,{cursor:CURSOR_BARRA,content:__gh(Globo,{titulo:p=>DOW[p.dow],filas:p=>[{color:esFinde(p)?SERIE:"#d6d6dc",texto:"Ocupaci\xF3n",valor:porcentaje(p.ocupacion)},{color:"transparent",texto:"Camas al d\xEDa",valor:camas(p)},{color:"transparent",texto:"Ingresos al d\xEDa",valor:money2(p.ingresoDia)}]})}),__gh(import_recharts4.Bar,{dataKey:"ocupacion",radius:[4,4,0,0],maxBarSize:44,animationDuration:600},filas.map(d2=>__gh(import_recharts4.Cell,{key:d2.dow,fill:esFinde(d2)?SERIE:"#d6d6dc"})))))),__gh(Plegar,{abierto:tabla,onClick:()=>setTabla(!tabla),texto:"la tabla por d\xEDa de la semana"}),tabla?__gh(__gf,null,__gh("div",{className:"in-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/informe.tsx:929"},__gh("table",{className:"in-tabla","data-gufi-src":"portal/informe.tsx:930"},__gh("thead",{"data-gufi-src":"portal/informe.tsx:931"},__gh("tr",{"data-gufi-src":"portal/informe.tsx:931"},__gh("th",{"data-gufi-src":"portal/informe.tsx:931"},"D\xEDa"),__gh("th",{"data-gufi-src":"portal/informe.tsx:931"},"Ocupaci\xF3n"),__gh("th",{"data-gufi-src":"portal/informe.tsx:931"},"Camas al d\xEDa"),__gh("th",{"data-gufi-src":"portal/informe.tsx:931"},"Ingresos al d\xEDa"))),__gh("tbody",{"data-gufi-src":"portal/informe.tsx:932"},filas.map(d2=>__gh("tr",{key:d2.dow,"data-gufi-src":"portal/informe.tsx:934"},__gh("td",{style:{fontWeight:500},"data-gufi-src":"portal/informe.tsx:935"},DOW[d2.dow]),__gh("td",{"data-gufi-src":"portal/informe.tsx:936"},__gh(ConBarra,{p:d2.ocupacion})),__gh("td",{"data-gufi-src":"portal/informe.tsx:937"},camas(d2)),__gh("td",{"data-gufi-src":"portal/informe.tsx:938"},money2(d2.ingresoDia))))))),__gh("div",{className:"in-movil","data-gufi-src":"portal/informe.tsx:944"},filas.map((d2,i)=>__gh(Fila2,{key:d2.dow,primera:i===0,titulo:DOW[d2.dow],sub:`${camas(d2)} camas al d\xEDa`,valor:porcentaje(d2.ocupacion),valorSub:`${money2(d2.ingresoDia)} al d\xEDa`})))):null)}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 PorTipo({unidades,dias,total}){let g=(0,import_react35.useMemo)(()=>agrupaHabitaciones(unidades,dias),[unidades,dias]),tipos=(0,import_react35.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(!tipos)return null;let camas=g.filas.reduce((a,f)=>a+f.unidades,0);return __gh(Grupo,{titulo:"Por tipo de habitaci\xF3n",sub:"Cu\xE1ntas camas tiene cada tipo y qu\xE9 parte del ingreso trae"},__gh(CifrasDentro,{columnas:Math.min(4,tipos.length)},tipos.map(x=>__gh(Cifra2,{key:x.tipo,etiqueta:x.tipo,valor:plural4(x.camas,"cama","camas"),sub:`${x.habs.join(" + ")} \xB7 ${porcentaje(camas?x.camas/camas*100:null)} de la casa. Aporta ${euros2(x.recaudacion)}, ${porcentaje(total?x.recaudacion/total*100:null)} del ingreso`}))))}function PorHabitacion({unidades,dias,total,orden:inicial="recaudacion",compacta,llena}){let g=(0,import_react35.useMemo)(()=>agrupaHabitaciones(unidades,dias),[unidades,dias]),[orden,setOrden]=(0,import_react35.useState)({k:inicial,asc:!1}),filas=(0,import_react35.useMemo)(()=>{if(!g)return[];let val=f=>orden.k==="aporta"?f.recaudacion:f[orden.k];return g.filas.slice().sort((a,b)=>{let x=val(a),y=val(b);return x==null&&y==null?0:x==null?1:y==null?-1:(typeof x=="number"?x-y:String(x).localeCompare(String(y),"es",{numeric:!0}))*(orden.asc?1:-1)})},[g,orden]);if(!g||g.filas.length<2)return null;let porHab=g.porHab,cuenta2=n=>plural4(n,porHab?"cama":"unidad",porHab?"camas":"unidades"),aporta=f=>total?f.recaudacion/total*100:null,cols=[{k:"clave",t:porHab?"Habitaci\xF3n":"Propiedad"}].concat(compacta?[]:[{k:"unidades",t:porHab?"Camas":"Unidades"},{k:"ocupadas",t:"Noches"}]).concat([{k:"ocupacion",t:"Ocupaci\xF3n"},{k:"recaudacion",t:"Ingresos"},{k:"tuyo",t:"Tu ingreso"}]).concat(compacta?[]:[{k:"aporta",t:"Aporta al total"}]),pulsar=k=>setOrden(o=>o.k===k?{k,asc:!o.asc}:{k,asc:k==="clave"});return __gh(Grupo,{titulo:porHab?"Por habitaci\xF3n":"Por propiedad",cuenta:filas.length,llena,sub:porHab?"Noches vendidas e ingresos de cada habitaci\xF3n, no s\xF3lo su capacidad":"Una fila por unidad"},__gh("div",{className:"in-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/informe.tsx:1030"},__gh("table",{className:"in-tabla","data-gufi-src":"portal/informe.tsx:1031"},__gh("thead",{"data-gufi-src":"portal/informe.tsx:1032"},__gh("tr",{"data-gufi-src":"portal/informe.tsx:1032"},cols.map(c=>__gh("th",{key:c.k,"data-orden":c.k,"data-on":orden.k===c.k?"1":"0",onClick:()=>pulsar(c.k),"data-gufi-src":"portal/informe.tsx:1034"},c.t,orden.k===c.k?orden.asc?" \u2191":" \u2193":"")))),__gh("tbody",{"data-gufi-src":"portal/informe.tsx:1039"},filas.map(f=>__gh("tr",{key:f.clave,"data-gufi-src":"portal/informe.tsx:1041"},__gh("td",{style:{whiteSpace:"normal",maxWidth:360},"data-gufi-src":"portal/informe.tsx:1042"},__gh("span",{style:{display:"block",fontWeight:500},"data-gufi-src":"portal/informe.tsx:1043"},f.clave),compacta?__gh("span",{className:"sub","data-gufi-src":"portal/informe.tsx:1044"},cuenta2(f.unidades)," \xB7 ",numero(f.ocupadas)," noches"):f.nombre?__gh("span",{className:"sub","data-gufi-src":"portal/informe.tsx:1044"},f.nombre):null),compacta?null:__gh(__gf,null,__gh("td",{"data-gufi-src":"portal/informe.tsx:1046"},numero(f.unidades)),__gh("td",{"data-gufi-src":"portal/informe.tsx:1046"},numero(f.ocupadas))),__gh("td",{"data-gufi-src":"portal/informe.tsx:1047"},__gh(ConBarra,{p:f.ocupacion})),__gh("td",{"data-gufi-src":"portal/informe.tsx:1048"},money2(f.recaudacion)),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/informe.tsx:1049"},money2(f.tuyo)),compacta?null:__gh("td",{"data-gufi-src":"portal/informe.tsx:1050"},__gh(ConBarra,{p:aporta(f)}))))))),__gh("div",{className:"in-movil","data-gufi-src":"portal/informe.tsx:1056"},filas.map((f,i)=>__gh(Fila2,{key:f.clave,primera:i===0,titulo:f.clave,sub:`${cuenta2(f.unidades)} \xB7 ${numero(f.ocupadas)} noches \xB7 ocupaci\xF3n ${porcentaje(f.ocupacion)}`,valor:money2(f.recaudacion),valorSub:compacta?`te llega ${money2(f.tuyo)}`:`aporta ${porcentaje(aporta(f))}`}))))}var dosDig2=n=>String(n).padStart(2,"0"),ymd2=(y,m,d2)=>`${y}-${dosDig2(m)}-${dosDig2(d2)}`,ultimoDia=(y,m)=>new Date(y,m,0).getDate();function Ocupacion({api,token,propiedadIds,ambito}){let[modo,setModo]=(0,import_react36.useState)("mes"),[cursor,setCursor]=(0,import_react36.useState)(()=>{let d2=new Date;return{y:d2.getFullYear(),m:d2.getMonth()+1}}),[data,setData]=(0,import_react36.useState)(null),[loading,setLoading]=(0,import_react36.useState)(!0),[error,setError]=(0,import_react36.useState)(""),[dia,setDia]=(0,import_react36.useState)(null),from=modo==="mes"?ymd2(cursor.y,cursor.m,1):`${cursor.y}-01-01`,to=modo==="mes"?ymd2(cursor.y,cursor.m,ultimoDia(cursor.y,cursor.m)):`${cursor.y}-12-31`,idsKey=(propiedadIds||[]).join(",");(0,import_react36.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 t3=data&&data.totales,dias=data&&data.dias||[],unidades=data&&data.unidades||0,porDia=(0,import_react36.useMemo)(()=>{let m={};return dias.forEach(d2=>{m[d2.fecha]=d2}),m},[dias]),meses=(0,import_react36.useMemo)(()=>{let ahora=new Date,esteMes=`${ahora.getFullYear()}-${dosDig2(ahora.getMonth()+1)}`;return(data&&data.meses||[]).map(x=>({...x,futuro:x.mes>esteMes}))},[data]),mover=(0,import_react36.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]),abrirMes=(0,import_react36.useCallback)(ym=>{setCursor({y:Number(ym.slice(0,4)),m:Number(ym.slice(5,7))}),setModo("mes")},[]),barra=__gh("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",padding:"0 4px"},"data-gufi-src":"portal/ocupacion.tsx:83"},__gh(Segmentado,{id:"dia-modo",valor:modo,onCambio:setModo,opciones:[{v:"mes",t:"Mes"},{v:"anio",t:"A\xF1o"}]}),__gh("div",{style:{display:"flex",alignItems:"center",gap:2},"data-gufi-src":"portal/ocupacion.tsx:85"},__gh(Flecha,{onClick:()=>mover(-1),etiqueta:modo==="mes"?"Mes anterior":"A\xF1o anterior"},__gh(import_lucide_react35.ChevronLeft,{size:18})),__gh("span",{style:{fontSize:15,fontWeight:600,color:INK,minWidth:modo==="mes"?132:52,textAlign:"center",fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/ocupacion.tsx:87"},modo==="mes"?`${MES[cursor.m]} ${cursor.y}`:cursor.y),__gh(Flecha,{onClick:()=>mover(1),etiqueta:modo==="mes"?"Mes siguiente":"A\xF1o siguiente"},__gh(import_lucide_react35.ChevronRight,{size:18}))));return loading?__gh("div",{className:"in-pagina","data-gufi-src":"portal/ocupacion.tsx:95"},__gh("style",{"data-gufi-src":"portal/ocupacion.tsx:95"},INFORME_CSS),barra,__gh(Tarjeta3,null,__gh(FilasCargando,{n:7}))):error?__gh("div",{className:"in-pagina","data-gufi-src":"portal/ocupacion.tsx:96"},__gh("style",{"data-gufi-src":"portal/ocupacion.tsx:96"},INFORME_CSS),barra,__gh(Aviso2,{titulo:"No se ha podido calcular la ocupaci\xF3n",texto:error})):!t3||!unidades?__gh("div",{className:"in-pagina","data-gufi-src":"portal/ocupacion.tsx:97"},__gh("style",{"data-gufi-src":"portal/ocupacion.tsx:97"},INFORME_CSS),barra,__gh(Tarjeta3,null,__gh(Vacio2,{titulo:"No hay unidades en esta selecci\xF3n"}))):__gh("div",{className:"in-pagina","data-gufi-src":"portal/ocupacion.tsx:100"},__gh("style",{"data-gufi-src":"portal/ocupacion.tsx:101"},INFORME_CSS),barra,__gh("div",{className:"in-seis","data-gufi-src":"portal/ocupacion.tsx:104"},__gh(Cifras2,{columnas:6},__gh(Cifra2,{etiqueta:"Ocupaci\xF3n",valor:porcentaje(t3.ocupacion),sub:`${numero(t3.ocupadas)} de ${numero(t3.noches_disponibles)} noches`}),__gh(Cifra2,{etiqueta:"Recaudaci\xF3n",valor:euros2(t3.recaudacion),sub:"lo que pag\xF3 el hu\xE9sped"}),__gh(Cifra2,{etiqueta:"Tu ingreso",valor:euros2(t3.tuyo),sub:`comisi\xF3n ${euros2(t3.comision)}`}),__gh(Cifra2,{etiqueta:"Precio medio",valor:t3.adr==null?"sin dato":money2(t3.adr),sub:"por noche vendida"}),__gh(Cifra2,{etiqueta:"RevPAR",valor:t3.revpar==null?"sin dato":money2(t3.revpar),sub:"por unidad, se venda o no"}),__gh(Cifra2,{etiqueta:"Movimiento",valor:`${numero(t3.entradas)} / ${numero(t3.salidas)}`,sub:"entradas / salidas"}))),__gh("div",{className:"in-dos in-llena","data-gufi-src":"portal/ocupacion.tsx:115"},modo==="mes"?__gh(Calendario3,{y:cursor.y,m:cursor.m,porDia,unidades,sel:dia,onSel:setDia}):__gh(MesAMes2,{meses,titulo:"Mes a mes",sub:"Pulsa un mes para ver su detalle; los que a\xFAn no han llegado ense\xF1an lo ya vendido",onAbrir:abrirMes,llena:!0}),__gh(GraficaDias,{dias,unidades,modo,sel:dia,onSel:setDia})),__gh("div",{className:"in-dos in-llena","data-gufi-src":"portal/ocupacion.tsx:122"},__gh(PorHabitacion,{unidades:data&&data.por_unidad||[],dias:t3.dias,total:t3.recaudacion,orden:"ocupacion",compacta:!0,llena:!0}),__gh(DeDondeViene2,{filas:data&&data.por_canal||[],total:t3.recaudacion,llena:!0})),__gh(TablaDias,{dias,unidades,t:t3,sel:dia,onExcel:()=>exportar2(data,from,to,ambito)}))}function exportar2(data,from,to,ambito){let unidades=data.unidades,t3=data.totales,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)"]];data.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)])),t3&&out.push([],["TOTAL",t3.ocupadas,t3.noches_disponibles,String((Number(t3.ocupacion==null?0:t3.ocupacion)||0).toFixed(1)).replace(".",","),t3.entradas,t3.salidas,"",eurCSV(t3.recaudacion),eurCSV(t3.tuyo)]),downloadCSV(`ocupacion-${from}-${to}.csv`,out)}function Flecha({onClick,etiqueta:etiqueta4,children}){return __gh("button",{type:"button",onClick,"aria-label":etiqueta4,title:etiqueta4,style:{width:32,height:32,borderRadius:99,border:"none",background:"transparent",color:ACCENT,display:"flex",alignItems:"center",justifyContent:"center",cursor:"pointer",padding:0},"data-gufi-src":"portal/ocupacion.tsx:147"},children)}var fondo=p=>p==null||p<=0?"#f2f2f5":`rgba(99,91,255,${(Number(.1+Math.min(100,p)/100*.85)||0).toFixed(3)})`,tinta=p=>p==null?FAINT:p>55?"#fff":INK,ALTO2="clamp(40px, 4.2vw, 58px)";function Calendario3({y,m,porDia,unidades,sel,onSel}){let d2=sel?porDia[sel]:null;return __gh(Grupo,{titulo:`${MES[m]} ${y}`,sub:"La parte de la casa que se durmi\xF3 cada d\xEDa, de vac\xEDo a lleno. Pulsa un d\xEDa para ver su detalle",llena:!0},__gh("div",{style:{padding:"14px 16px 14px",flex:1},"data-gufi-src":"portal/ocupacion.tsx:167"},__gh(Rejilla2,{y,m,porDia,unidades,sel,onSel}),__gh("div",{style:{display:"flex",alignItems:"center",gap:6,marginTop:12,fontSize:11.5,color:FAINT},"data-gufi-src":"portal/ocupacion.tsx:169"},__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:170"},"Vac\xEDo"),[0,25,50,75,100].map(p=>__gh("span",{key:p,style:{width:20,height:9,borderRadius:3,background:fondo(p)},"data-gufi-src":"portal/ocupacion.tsx:171"})),__gh("span",{"data-gufi-src":"portal/ocupacion.tsx:172"},"Lleno"))),d2?__gh(DetalleDia,{d:d2,unidades,onCerrar:()=>onSel(null)}):null)}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),"aria-pressed":activo,title:info?`${d2} de ${MES[m].toLowerCase()}: ${numero(info.ocupadas)} de ${numero(unidades)} ocupadas, ${money2(info.recaudacion)}`:`${d2} de ${MES[m].toLowerCase()}`,style:{height:ALTO2,borderRadius:9,background:fondo(p),border:"none",cursor:"pointer",display:"flex",flexDirection:"column",alignItems:"center",justifyContent:"center",gap:2,padding:0,fontFamily:"inherit",minWidth:0,boxShadow:activo?`0 0 0 2px #fff, 0 0 0 3.5px ${INK}`:"none"},"data-gufi-src":"portal/ocupacion.tsx:194"},__gh("span",{style:{fontSize:12.5,fontWeight:600,color:tinta(p),lineHeight:1,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/ocupacion.tsx:198"},d2),p==null?null:__gh("span",{style:{fontSize:10,fontWeight:500,color:tinta(p),opacity:.85,lineHeight:1,fontVariantNumeric:"tabular-nums",whiteSpace:"nowrap"},"data-gufi-src":"portal/ocupacion.tsx:199"},Math.round(p)," %")))}return __gh("div",{"data-gufi-src":"portal/ocupacion.tsx:204"},__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(7, minmax(0,1fr))",gap:5,marginBottom:6},"data-gufi-src":"portal/ocupacion.tsx:205"},["L","M","X","J","V","S","D"].map((x,k)=>__gh("div",{key:k,style:{textAlign:"center",fontSize:11,color:FAINT},"data-gufi-src":"portal/ocupacion.tsx:206"},x))),__gh("div",{style:{display:"grid",gridTemplateColumns:"repeat(7, minmax(0,1fr))",gap:5},"data-gufi-src":"portal/ocupacion.tsx:208"},celdas))}function DetalleDia({d:d2,unidades,onCerrar}){let p=unidades?d2.ocupadas/unidades*100:null;return __gh(__gf,null,__gh(CabeceraDetalle,{titulo:diaLargo(d2.fecha),onCerrar}),__gh(Datos,{items:[{t:"Ocupaci\xF3n",v:porcentaje(p),s:`${numero(d2.ocupadas)} de ${numero(unidades)} ocupadas`},{t:"Entran y salen",v:`${numero(d2.entradas)} / ${numero(d2.salidas)}`,s:`${numero(d2.huespedes)} hu\xE9spedes`},{t:"Recaudaci\xF3n",v:money2(d2.recaudacion),s:"lo que pag\xF3 el hu\xE9sped"},{t:"Tu ingreso",v:money2(d2.tuyo),s:`comisi\xF3n ${money2(d2.recaudacion-d2.tuyo)}`}]}))}function GraficaDias({dias,unidades,modo,sel,onSel}){let serie=(0,import_react36.useMemo)(()=>dias.map(d2=>({...d2,ocup:unidades?d2.ocupadas/unidades*100:0})),[dias,unidades]),ticksE=marcas(Math.max(0,...dias.map(d2=>d2.recaudacion))),esMes=modo==="mes",ticksX=esMes?void 0:dias.filter(d2=>d2.fecha.slice(8)==="01").map(d2=>d2.fecha),etiquetaX=f=>{if(esMes)return String(Number(f.slice(8)));let c=mesCorto(f.slice(0,7));return c.charAt(0).toUpperCase()+c.slice(1)};return __gh(Grupo,{titulo:esMes?"D\xEDa a d\xEDa":"Todo el a\xF1o, d\xEDa a d\xEDa",llena:!0,sub:esMes?"La ocupaci\xF3n en la curva y lo que dej\xF3 cada d\xEDa en barras. Pulsa una barra para ver el d\xEDa":"La ocupaci\xF3n de cada d\xEDa en la curva y lo que dej\xF3, en gris"},__gh("div",{style:{padding:"14px 18px 0"},"data-gufi-src":"portal/ocupacion.tsx:243"},__gh(Leyenda,{series:[{color:"#d6d6dc",texto:"Recaudaci\xF3n, en euros"},{color:SERIE,texto:"Ocupaci\xF3n"}]})),__gh("div",{style:{flex:1,minHeight:260,maxHeight:440,padding:"6px 6px 8px 0"},"data-gufi-src":"portal/ocupacion.tsx:246"},__gh(import_recharts5.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts5.ComposedChart,{data:serie,margin:MARGEN,style:esMes?{cursor:"pointer"}:void 0},__gh("defs",{"data-gufi-src":"portal/ocupacion.tsx:249"},degradado("dd-ocup",SERIE,.24,0),degradado("dd-eur","#c7c7cc",.45,.1)),__gh(import_recharts5.CartesianGrid,{...REJILLA}),__gh(import_recharts5.XAxis,{dataKey:"fecha",...EJE,ticks:ticksX,interval:esMes?"preserveStartEnd":0,minTickGap:esMes?4:0,tickFormatter:etiquetaX}),__gh(import_recharts5.YAxis,{yAxisId:"e",...EJE,width:52,domain:[0,ticksE[ticksE.length-1]],ticks:ticksE,tickFormatter:x=>eurosEje(x)}),__gh(import_recharts5.YAxis,{yAxisId:"p",orientation:"right",...EJE,width:52,domain:[0,100],ticks:[0,50,100],tickFormatter:x=>`${x} %`}),__gh(import_recharts5.Tooltip,{cursor:esMes?CURSOR_BARRA:CURSOR,content:__gh(Globo,{titulo:p=>diaLargo(p.fecha),filas:p=>[{color:SERIE,texto:"Ocupaci\xF3n",valor:`${porcentaje(p.ocup)} \xB7 ${numero(p.ocupadas)} de ${numero(unidades)}`},{color:"#d6d6dc",texto:"Recaudaci\xF3n",valor:money2(p.recaudacion)},{color:"transparent",texto:"Tu ingreso",valor:money2(p.tuyo)},{color:"transparent",texto:"Entran y salen",valor:`${numero(p.entradas)} / ${numero(p.salidas)}`}]})}),esMes?__gh(import_recharts5.Bar,{yAxisId:"e",dataKey:"recaudacion",radius:[3,3,0,0],maxBarSize:18,animationDuration:600,style:{cursor:"pointer"},onClick:b=>{let f=b&&(b.fecha||b.payload&&b.payload.fecha);f&&onSel(sel===f?null:f)}},serie.map(s=>__gh(import_recharts5.Cell,{key:s.fecha,fill:sel===s.fecha?"#b9b5ff":sel?"#ececf0":"#dedee3"}))):__gh(import_recharts5.Area,{yAxisId:"e",type:"monotone",dataKey:"recaudacion",stroke:"#c7c7cc",strokeWidth:1,fill:"url(#dd-eur)",dot:!1,activeDot:!1,animationDuration:700}),__gh(import_recharts5.Area,{yAxisId:"p",type:"monotone",dataKey:"ocup",stroke:SERIE,strokeWidth:2,fill:"url(#dd-ocup)",dot:!1,activeDot:PUNTO_ACTIVO(SERIE),animationDuration:700})))))}var TANDA5=31;function TablaDias({dias,unidades,t:t3,sel,onExcel}){let[ver,setVer]=(0,import_react36.useState)(TANDA5);(0,import_react36.useEffect)(()=>{setVer(TANDA5)},[dias]);let visibles=dias.slice(0,ver),ocup=d2=>unidades?d2.ocupadas/unidades*100:null,cero=n=>n?numero(n):__gh("span",{className:"nada","data-gufi-src":"portal/ocupacion.tsx:283"},"0");return __gh(Grupo,{titulo:"Cada d\xEDa",cuenta:dias.length,sub:"Lo que se durmi\xF3 y lo que produjo cada d\xEDa",derecha:dias.length?__gh(Boton2,{onClick:onExcel,icono:__gh(import_lucide_react35.Download,{size:15})},"Bajar en Excel"):null},dias.length?__gh(__gf,null,__gh("div",{className:"in-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/ocupacion.tsx:289"},__gh("table",{className:"in-tabla","data-gufi-src":"portal/ocupacion.tsx:290"},__gh("thead",{"data-gufi-src":"portal/ocupacion.tsx:291"},__gh("tr",{"data-gufi-src":"portal/ocupacion.tsx:291"},__gh("th",{"data-gufi-src":"portal/ocupacion.tsx:291"},"D\xEDa"),__gh("th",{"data-gufi-src":"portal/ocupacion.tsx:291"},"Ocupadas"),__gh("th",{"data-gufi-src":"portal/ocupacion.tsx:291"},"Ocupaci\xF3n"),__gh("th",{"data-gufi-src":"portal/ocupacion.tsx:291"},"Entradas"),__gh("th",{"data-gufi-src":"portal/ocupacion.tsx:291"},"Salidas"),__gh("th",{"data-gufi-src":"portal/ocupacion.tsx:291"},"Hu\xE9spedes"),__gh("th",{"data-gufi-src":"portal/ocupacion.tsx:291"},"Recaudaci\xF3n"),__gh("th",{"data-gufi-src":"portal/ocupacion.tsx:291"},"Tu ingreso"))),__gh("tbody",{"data-gufi-src":"portal/ocupacion.tsx:292"},visibles.map(d2=>__gh("tr",{key:d2.fecha,"data-elegida":sel===d2.fecha?"1":"0","data-gufi-src":"portal/ocupacion.tsx:294"},__gh("td",{style:{fontWeight:500},"data-gufi-src":"portal/ocupacion.tsx:295"},diaLargo(d2.fecha)),__gh("td",{"data-gufi-src":"portal/ocupacion.tsx:296"},numero(d2.ocupadas)," ",__gh("span",{className:"nada","data-gufi-src":"portal/ocupacion.tsx:296"},"de ",numero(unidades))),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/ocupacion.tsx:297"},porcentaje(ocup(d2))),__gh("td",{"data-gufi-src":"portal/ocupacion.tsx:298"},cero(d2.entradas)),__gh("td",{"data-gufi-src":"portal/ocupacion.tsx:299"},cero(d2.salidas)),__gh("td",{"data-gufi-src":"portal/ocupacion.tsx:300"},cero(d2.huespedes)),__gh("td",{"data-gufi-src":"portal/ocupacion.tsx:301"},money2(d2.recaudacion)),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/ocupacion.tsx:302"},money2(d2.tuyo))))),__gh("tfoot",{"data-gufi-src":"portal/ocupacion.tsx:306"},__gh("tr",{"data-gufi-src":"portal/ocupacion.tsx:306"},__gh("td",{"data-gufi-src":"portal/ocupacion.tsx:307"},"Total"),__gh("td",{"data-gufi-src":"portal/ocupacion.tsx:308"},numero(t3.ocupadas)," ",__gh("span",{className:"nada","data-gufi-src":"portal/ocupacion.tsx:308"},"de ",numero(t3.noches_disponibles))),__gh("td",{"data-gufi-src":"portal/ocupacion.tsx:309"},porcentaje(t3.ocupacion)),__gh("td",{"data-gufi-src":"portal/ocupacion.tsx:310"},numero(t3.entradas)),__gh("td",{"data-gufi-src":"portal/ocupacion.tsx:311"},numero(t3.salidas)),__gh("td",{"data-gufi-src":"portal/ocupacion.tsx:312"}),__gh("td",{"data-gufi-src":"portal/ocupacion.tsx:313"},money2(t3.recaudacion)),__gh("td",{"data-gufi-src":"portal/ocupacion.tsx:314"},money2(t3.tuyo)))))),__gh("div",{className:"in-movil","data-gufi-src":"portal/ocupacion.tsx:318"},visibles.map((d2,i)=>__gh(Fila2,{key:d2.fecha,primera:i===0,elegida:sel===d2.fecha,titulo:diaLargo(d2.fecha),sub:`${numero(d2.ocupadas)} de ${numero(unidades)} \xB7 entran ${numero(d2.entradas)}, salen ${numero(d2.salidas)}`,valor:porcentaje(ocup(d2)),valorSub:money2(d2.recaudacion)})),__gh(Fila2,{titulo:"Total",sub:`${numero(t3.ocupadas)} de ${numero(t3.noches_disponibles)} noches \xB7 te llega ${money2(t3.tuyo)}`,valor:porcentaje(t3.ocupacion),valorSub:money2(t3.recaudacion)})),__gh(FilaMas,{quedan:dias.length-ver,tanda:TANDA5,onClick:()=>setVer(ver+TANDA5)})):__gh(Vacio2,{titulo:"Sin d\xEDas en este rango"}))}var import_react37=__toESM(require("react")),import_recharts6=require("recharts"),import_lucide_react36=require("lucide-react");function Boton3({children,onClick,principal,disabled}){return __gh("button",{type:"button",onClick,disabled,style:{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:7,height:34,padding:"0 14px",borderRadius:10,border:principal?`1px solid ${ACCENT}`:`1px solid ${HAIRLINE}`,background:principal?ACCENT:"#fff",color:principal?"#fff":INK,fontSize:13.5,fontWeight:600,fontFamily:"inherit",cursor:disabled?"default":"pointer",opacity:disabled?.55:1,whiteSpace:"nowrap",flexShrink:0},"data-gufi-src":"portal/cobros.tsx:36"},children)}function Enlace({children,onClick,href,disabled,gris}){let estilo={border:"none",background:"transparent",padding:0,fontSize:13,fontWeight:500,color:gris?MUTED:ACCENT,cursor:disabled?"default":"pointer",fontFamily:"inherit",whiteSpace:"nowrap",opacity:disabled?.55:1,textDecoration:"none"};return href?__gh("a",{href,target:"_blank",rel:"noreferrer",style:estilo,"data-gufi-src":"portal/cobros.tsx:46"},children):__gh("button",{type:"button",disabled,style:estilo,onClick:ev=>{ev.stopPropagation(),onClick()},"data-gufi-src":"portal/cobros.tsx:48"},children)}function LineaError({texto}){return __gh("div",{role:"alert",style:{display:"flex",alignItems:"flex-start",gap:8,marginTop:10,fontSize:12.5,color:INK,lineHeight:1.45},"data-gufi-src":"portal/cobros.tsx:54"},__gh("span",{style:{display:"flex",marginTop:5},"data-gufi-src":"portal/cobros.tsx:55"},__gh(Punto2,{tono:"mal"})),__gh("span",{style:{minWidth:0,overflowWrap:"anywhere"},"data-gufi-src":"portal/cobros.tsx:56"},texto))}var nombreCanal2=c=>c==="Booking"?"Booking.com":c,CSS_COMUN=` .c-dos { display: grid; grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); gap: 18px; align-items: stretch; } @media (max-width: 1100px) { .c-dos { grid-template-columns: minmax(0, 1fr); } } .c-tabla { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; } .c-tabla th { font-size: 12px; font-weight: 500; color: ${MUTED}; text-align: right; padding: 12px 16px 8px; white-space: nowrap; user-select: none; } .c-tabla th[data-izq], .c-tabla td[data-izq] { text-align: left; } .c-tabla td { font-size: 13.5px; color: ${INK}; text-align: right; padding: 7px 16px; height: 52px; box-sizing: border-box; border-top: 1px solid ${HAIRLINE}; white-space: nowrap; } .c-tabla tfoot td { font-weight: 600; } .c-tabla th[data-orden] { cursor: pointer; } .c-tabla th[data-orden]:hover, .c-tabla th[data-on="1"] { color: ${INK}; } .c-tabla tbody tr[data-toca] { cursor: pointer; } .c-tabla tbody tr[data-toca]:hover td { background: #fafafc; } .c-tabla tbody tr[data-elegida="1"] td { background: rgba(99,91,255,0.05); } .c-tabla td.c-det-td { padding: 0; height: auto; text-align: left; white-space: normal; border-top: none; } .c-det { background: rgba(99,91,255,0.05); padding: 6px 16px 18px; } .c-barra-lista { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 10px; padding: 12px 16px; border-bottom: 1px solid ${HAIRLINE}; } .c-input { width: 100%; max-width: 320px; height: 36px; box-sizing: border-box; border: 1px solid ${HAIRLINE}; border-radius: 9px; padding: 0 11px; font-size: 14px; color: ${INK}; background: #fff; outline: none; font-family: inherit; } .c-input::placeholder { color: ${FAINT}; } .c-input:focus { border-color: ${ACCENT}; box-shadow: 0 0 0 3px rgba(99,91,255,0.15); } .c-check { width: 16px; height: 16px; accent-color: ${ACCENT}; cursor: pointer; margin: 0; display: block; } @media (max-width: 760px) { .c-input { font-size: 16px; max-width: none; } } /* Una cifra que se toca es un bot\xF3n, y un bot\xF3n centra su contenido en vertical: arriba, como las dem\xE1s. */ .c-cifras > button { display: flex !important; flex-direction: column; justify-content: flex-start; } .c-cifras > * > div:first-child { height: 18px; } `,CSS3=` .c-pasos { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 22px; } @media (max-width: 1000px) { .c-pasos { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 560px) { .c-pasos { grid-template-columns: minmax(0, 1fr); gap: 14px; } } .c-campo { display: grid; grid-template-columns: 190px minmax(0, 1fr); gap: 4px 14px; align-items: center; padding: 9px 0; border-top: 1px solid ${HAIRLINE}; } @media (max-width: 560px) { .c-campo { grid-template-columns: minmax(0, 1fr); } } `,TANDA6=40,hoyISO=()=>new Date().toLocaleDateString("sv-SE",{timeZone:"Europe/Madrid"}),mayus6=s=>s.charAt(0).toUpperCase()+s.slice(1),etiquetaMes3=ym=>mayus6(mesCorto(ym)),nEstancias=n=>`${numero(n)} ${n===1?"estancia":"estancias"}`,sinTildes=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),mensaje=e=>String(e&&e.message||e),canalEstancia=e=>{let c=canalDe(e.canal,String(e.codigo).startsWith("HWG-"));return c==="\u2014"?"Sin canal":nombreCanal2(c)};function causa(e){return e.pendiente>0?e.canal_bruto+e.recepcion_total>0?"diferencia":e.canal==="Direct"?"directa":"sin_pago":null}function sumar(estancias,medios){let c={estancias:estancias.length,base:0,sin_factura:0,sin_factura_importe:0,canal:0,neto:0,comision:0,recepcion:{},recepcion_total:0,pendiente:0,pendientes:0,de_mas:0,con_de_mas:0,causas:{directa:{v:0,n:0},sin_pago:{v:0,n:0},diferencia:{v:0,n:0}}};return medios.forEach(m=>{c.recepcion[m]=0}),estancias.forEach(e=>{c.base+=e.base,e.facturado==null&&(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,e.de_mas>0&&(c.de_mas+=e.de_mas,c.con_de_mas+=1);let k=causa(e);k&&(c.pendientes+=1,c.causas[k].v+=e.pendiente,c.causas[k].n+=1)}),c}function serieMeses(estancias){let m={};return estancias.forEach(e=>{let k=e.entrada.slice(0,7),x=m[k]||(m[k]={mes:k,base:0,canal:0,recepcion:0,pendiente:0,estancias:0});x.base+=e.base,x.canal+=e.canal_bruto,x.recepcion+=e.recepcion_total,x.pendiente+=e.pendiente,x.estancias+=1}),Object.values(m).sort((a,b)=>a.mes.localeCompare(b.mes))}function porCanal(estancias){let m={};return estancias.forEach(e=>{let k=canalEstancia(e),x=m[k]||(m[k]={canal:k,estancias:0,base:0,bruto:0,neto:0,comision:0,recepcion:0,pendiente:0,pagadas:0,conBruto:!1});x.estancias+=1,x.base+=e.base,x.bruto+=e.canal_bruto,x.neto+=e.canal_neto,x.comision+=e.comision,x.recepcion+=e.recepcion_total,x.pendiente+=e.pendiente,e.canal_pagos.length&&(x.pagadas+=1),e.canal_pagos.some(p=>p.bruto!=null)&&(x.conBruto=!0)}),Object.values(m).sort((a,b)=>b.base-a.base)}var FILTROS=[{v:"todas",t:"Todas",ok:()=>!0},{v:"pendientes",t:"Con algo pendiente",ok:e=>e.pendiente>0},{v:"directa",t:"Directas sin cobro",ok:e=>causa(e)==="directa"},{v:"sin_pago",t:"Sin pago del canal",ok:e=>causa(e)==="sin_pago"},{v:"diferencia",t:"Pagadas por menos",ok:e=>causa(e)==="diferencia"},{v:"recepcion",t:"Con cobro en recepci\xF3n",ok:e=>e.recepcion.length>0},{v:"sin_factura",t:"Sin factura",ok:e=>e.facturado==null},{v:"de_mas",t:"Cobradas de m\xE1s",ok:e=>e.de_mas>0}],FILTRO=Object.fromEntries(FILTROS.map(f=>[f.v,f])),COLS2=[{k:"entrada",t:"Entrada",izq:!0},{k:"huesped",t:"Hu\xE9sped",izq:!0},{k:"canal",t:"Canal",izq:!0},{k:"factura",t:"Factura",izq:!0},{k:"base",t:"Facturado"},{k:"canal_bruto",t:"Pag\xF3 el canal"},{k:"recepcion_total",t:"En recepci\xF3n"},{k:"pendiente",t:"Pendiente"}],VALOR={entrada:e=>e.entrada,huesped:e=>e.huesped||e.codigo,canal:canalEstancia,factura:e=>e.facturas.length?e.facturas[0].numero:null,base:e=>e.base,canal_bruto:e=>e.canal_bruto,recepcion_total:e=>e.recepcion_total,pendiente:e=>e.pendiente},TEXTO=new Set(["huesped","canal","factura"]);function ordenar2(filas,orden){let val=VALOR[orden.k];return filas.slice().sort((a,b)=>{let x=val(a),y=val(b);return x==null&&y==null?0:x==null?1:y==null?-1:(typeof x=="number"?x-y:String(x).localeCompare(String(y),"es",{numeric:!0}))*(orden.asc?1:-1)})}function Cobros({api,token,year,propiedadIds,ownerName}){let[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),ultimo=(0,import_react37.useRef)(null);d2.datos&&(ultimo.current={year:String(year),datos:d2.datos});let datos=d2.datos||(ultimo.current&&ultimo.current.year===String(year)?ultimo.current.datos:null);return d2.error?__gh(Aviso2,{titulo:"No se han podido leer los cobros",texto:d2.error}):datos?__gh(Panel3,{datos,year,propiedadIds,ownerName,api,token,recargar:()=>setVersion(v=>v+1)}):__gh(Tarjeta3,null,__gh(FilasCargando,{n:8}))}function Panel3({datos,year,propiedadIds,ownerName,api,token,recargar}){let medios=datos.medios,idsKey=(propiedadIds||[]).join(","),visibles=(0,import_react37.useMemo)(()=>{if(!idsKey)return datos.estancias;let dentro=new Set(idsKey.split(",").map(Number));return datos.estancias.filter(e=>(e.unidades||[]).some(u=>dentro.has(Number(u))))},[datos,idsKey]),[mes2,setMes]=(0,import_react37.useState)(null),[filtro,setFiltro]=(0,import_react37.useState)("todas"),[canal,setCanal]=(0,import_react37.useState)(null),[q,setQ]=(0,import_react37.useState)(""),[orden,setOrden]=(0,import_react37.useState)({k:"entrada",asc:!1}),[errorExcel,setErrorExcel]=(0,import_react37.useState)("");(0,import_react37.useEffect)(()=>{setMes(null),setCanal(null)},[year,idsKey]);let meses=(0,import_react37.useMemo)(()=>serieMeses(visibles),[visibles]),delMes=(0,import_react37.useMemo)(()=>mes2?visibles.filter(e=>e.entrada.slice(0,7)===mes2):visibles,[visibles,mes2]),c=(0,import_react37.useMemo)(()=>sumar(delMes,medios),[delMes,medios]),canales=(0,import_react37.useMemo)(()=>porCanal(delMes),[delMes]),cuentas=(0,import_react37.useMemo)(()=>Object.fromEntries(FILTROS.map(f=>[f.v,delMes.filter(f.ok).length])),[delMes]),filas=(0,import_react37.useMemo)(()=>{let n=sinTildes(q.trim());return ordenar2(delMes.filter(e=>FILTRO[filtro].ok(e)&&(!canal||canalEstancia(e)===canal)&&(!n||sinTildes(`${e.huesped} ${e.codigo} ${e.facturas.map(f=>f.numero).join(" ")}`).includes(n))),orden)},[delMes,filtro,canal,q,orden]),lista=(0,import_react37.useRef)(null),aLaLista=()=>{lista.current&&lista.current.scrollIntoView({behavior:"smooth",block:"start"})},filtrar=f=>{let nuevo=filtro===f?"todas":f;setFiltro(nuevo),nuevo!=="todas"&&aLaLista()},elegirCanal=x=>{let nuevo=canal===x?null:x;setCanal(nuevo),nuevo&&aLaLista()},pulsar=k=>setOrden(o=>o.k===k?{k,asc:!o.asc}:{k,asc:TEXTO.has(k)});async function exportar3(){setErrorExcel("");try{await exportarTabla(`Cobros_${year}${mes2?`_${mes2.slice(5)}`:""}.xlsx`,"Cobros",`Recorrido de cobro \xB7 ${ownerName||""} \xB7 ${mes2?mesLabel(mes2):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){setErrorExcel(mensaje(e))}}if(!visibles.length)return __gh(Tarjeta3,null,__gh(Vacio2,{titulo:`Ninguna estancia ha entrado en ${year}`,texto:"Aqu\xED sale cada estancia en cuanto entra, con lo facturado y lo cobrado."}));let varios=meses.length>1;return __gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/cobros.tsx:259"},__gh("style",{"data-gufi-src":"portal/cobros.tsx:260"},CSS_COMUN+CSS3),__gh("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",padding:"0 4px"},"data-gufi-src":"portal/cobros.tsx:261"},__gh("h2",{style:{fontSize:22,fontWeight:650,letterSpacing:"-0.5px",color:INK,margin:0},"data-gufi-src":"portal/cobros.tsx:262"},mes2?mesLabel(mes2):`A\xF1o ${year}`),__gh("span",{style:{marginLeft:"auto",display:"flex",alignItems:"center",gap:10,flexWrap:"wrap",minWidth:0,maxWidth:"100%"},"data-gufi-src":"portal/cobros.tsx:263"},varios?__gh("span",{style:{minWidth:0,maxWidth:"100%"},"data-gufi-src":"portal/cobros.tsx:265"},__gh(Segmentado,{id:"cobros-mes",valor:mes2||"",onCambio:m=>setMes(m||null),opciones:[{v:"",t:"Todo"}].concat(meses.map(m=>({v:m.mes,t:etiquetaMes3(m.mes)})))})):null,__gh(Boton3,{onClick:exportar3},__gh(import_lucide_react36.Download,{size:15}),"Excel"))),errorExcel?__gh(Aviso2,{titulo:"No se ha podido sacar el Excel",texto:errorExcel}):null,__gh(Cascada,{c,filtro,filtrar}),__gh("div",{className:varios?"c-dos":void 0,style:varios?void 0:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)"},"data-gufi-src":"portal/cobros.tsx:277"},varios?__gh(MesAMes3,{meses,mes:mes2,elegir:m=>setMes(mes2===m?null:m)}):null,__gh(Pendiente2,{c,filtro,filtrar})),__gh(PorCanal,{canales,c,canal,elegir:elegirCanal}),__gh("div",{ref:lista,style:{scrollMarginTop:16},"data-gufi-src":"portal/cobros.tsx:284"},__gh(Lista3,{filas,filtro,setFiltro,cuentas,q,setQ,orden,pulsar,canal,quitarCanal:()=>setCanal(null),medios,api,token,recargar,reinicio:`${mes2}|${filtro}|${canal}|${q}|${orden.k}|${orden.asc}`})),__gh("p",{style:{fontSize:12,color:MUTED,margin:"0 4px",lineHeight:1.5},"data-gufi-src":"portal/cobros.tsx:290"},"Cuentan las estancias que ya han entrado, por su fecha de entrada. 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."))}function Etiqueta({color,children}){return __gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7},"data-gufi-src":"portal/cobros.tsx:301"},__gh(Punto2,{color}),children)}function Cascada({c,filtro,filtrar}){let tramos=[{k:"canal",color:SERIE,v:c.canal},{k:"recepcion",color:SERIE_2,v:c.recepcion_total},{k:"pendiente",color:SERIE_GRIS,v:c.pendiente}].filter(t3=>t3.v>0),todo=Math.max(c.base,tramos.reduce((s,t3)=>s+t3.v,0)),parte=v=>c.base>0?v/c.base*100:null,medios=Object.keys(c.recepcion).filter(m=>c.recepcion[m]>0);return __gh(Tarjeta3,null,__gh("div",{className:"k-cifras c-cifras",style:{display:"grid",gridTemplateColumns:"repeat(4, minmax(0, 1fr))",gap:1,background:HAIRLINE},"data-gufi-src":"portal/cobros.tsx:316"},__gh(Cifra2,{etiqueta:"Facturado",valor:euros2(c.base),sub:`${nEstancias(c.estancias)}${c.sin_factura?`, ${numero(c.sin_factura)} a\xFAn sin factura: cuentan por su reserva, ${euros2(c.sin_factura_importe)}`:""}`}),__gh(Cifra2,{etiqueta:__gh(Etiqueta,{color:SERIE},"Pagado por el canal"),valor:euros2(c.canal),sub:`${porcentaje(parte(c.canal))} de lo facturado${c.comision?`: ${euros2(c.neto)} al banco y ${euros2(c.comision)} de comisi\xF3n`:""}`}),__gh(Cifra2,{etiqueta:__gh(Etiqueta,{color:SERIE_2},"Cobrado en recepci\xF3n"),valor:euros2(c.recepcion_total),sub:medios.length?medios.map(m=>`${m} ${euros2(c.recepcion[m])}`).join(" \xB7 "):"Nada apuntado todav\xEDa",onClick:c.recepcion_total>0?()=>filtrar("recepcion"):void 0,elegida:filtro==="recepcion"}),__gh(Cifra2,{etiqueta:__gh(Etiqueta,{color:SERIE_GRIS},"Pendiente de localizar"),valor:euros2(c.pendiente),sub:c.pendiente>0?`${porcentaje(parte(c.pendiente))} de lo facturado, en ${nEstancias(c.pendientes)}`:"Todo est\xE1 localizado",onClick:c.pendiente>0?()=>filtrar("pendientes"):void 0,elegida:filtro==="pendientes"})),todo>0?__gh("div",{style:{background:"#fff",padding:"2px 16px 16px"},"data-gufi-src":"portal/cobros.tsx:329"},__gh("div",{style:{display:"flex",gap:2,height:8,borderRadius:99,overflow:"hidden",background:"#f2f2f4"},"data-gufi-src":"portal/cobros.tsx:330"},tramos.map(t3=>__gh("div",{key:t3.k,title:`${porcentaje(t3.v/todo*100)}`,style:{width:`${t3.v/todo*100}%`,background:t3.color,transition:"width .6s cubic-bezier(0.22, 1, 0.36, 1)"},"data-gufi-src":"portal/cobros.tsx:331"})))):null)}function MesAMes3({meses,mes:mes2,elegir}){let conRecepcion=meses.some(m=>m.recepcion>0),ticks=marcas(Math.max(0,...meses.map(m=>m.canal+m.recepcion+m.pendiente))),tono=color=>meses.map(m=>__gh(import_recharts6.Cell,{key:m.mes,fill:color,fillOpacity:mes2&&mes2!==m.mes?.28:1})),clic=b=>{let m=b&&(b.mes||b.payload&&b.payload.mes);m&&elegir(m)};return __gh(Grupo,{titulo:"Mes a mes",sub:"Por mes de entrada. Pulsa un mes para verlo solo",llena:!0},__gh("div",{style:{padding:"14px 18px 0"},"data-gufi-src":"portal/cobros.tsx:347"},__gh(Leyenda,{series:[{color:SERIE,texto:"Pagado por el canal"}].concat(conRecepcion?[{color:SERIE_2,texto:"En recepci\xF3n"}]:[],[{color:SERIE_GRIS,texto:"Pendiente"}])})),__gh("div",{style:{flex:1,minHeight:250,padding:"6px 6px 8px 0"},"data-gufi-src":"portal/cobros.tsx:350"},__gh(import_recharts6.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts6.BarChart,{data:meses,margin:MARGEN},__gh(import_recharts6.CartesianGrid,{...REJILLA}),__gh(import_recharts6.XAxis,{dataKey:"mes",...EJE,tickFormatter:etiquetaMes3}),__gh(import_recharts6.YAxis,{...EJE,width:56,domain:[0,ticks[ticks.length-1]],ticks,tickFormatter:x=>eurosEje(x)}),__gh(import_recharts6.Tooltip,{cursor:CURSOR_BARRA,content:__gh(Globo,{titulo:p=>mesLabel(p.mes),filas:p=>[{color:"transparent",texto:"Facturado",valor:money2(p.base)},{color:SERIE,texto:"Pagado por el canal",valor:money2(p.canal)}].concat(conRecepcion?[{color:SERIE_2,texto:"En recepci\xF3n",valor:money2(p.recepcion)}]:[],[{color:SERIE_GRIS,texto:"Pendiente",valor:money2(p.pendiente)},{color:"transparent",texto:"Estancias",valor:numero(p.estancias)}])})}),__gh(import_recharts6.Bar,{dataKey:"canal",stackId:"m",fill:SERIE,maxBarSize:46,animationDuration:600,style:{cursor:"pointer"},onClick:clic},tono(SERIE)),conRecepcion?__gh(import_recharts6.Bar,{dataKey:"recepcion",stackId:"m",fill:SERIE_2,maxBarSize:46,animationDuration:600,style:{cursor:"pointer"},onClick:clic},tono(SERIE_2)):null,__gh(import_recharts6.Bar,{dataKey:"pendiente",stackId:"m",fill:SERIE_GRIS,radius:[4,4,0,0],maxBarSize:46,animationDuration:600,style:{cursor:"pointer"},onClick:clic},tono(SERIE_GRIS))))))}var CAUSAS=[{k:"directa",t:"Directas sin ning\xFAn cobro apuntado",s:"Se cobran en recepci\xF3n: \xE1brelas abajo y apunta el cobro."},{k:"sin_pago",t:"El canal a\xFAn no ha pagado",s:"Estancias de Booking, Hostelworld o la web de las que todav\xEDa no ha llegado el pago."},{k:"diferencia",t:"Pagadas por menos",s:"El canal pag\xF3 menos de lo facturado: casi siempre la comisi\xF3n de Hostelworld, que su informe no trae, o un resto cobrado en recepci\xF3n."}];function Pendiente2({c,filtro,filtrar}){let filas=CAUSAS.filter(x=>c.causas[x.k].n);return __gh(Grupo,{titulo:"Qu\xE9 hay en lo pendiente",sub:"No es \xABsin cobrar\xBB: es lo que Gufi todav\xEDa no ve. Pulsa una causa para ver sus estancias",llena:!0},!filas.length&&!c.de_mas?__gh(Vacio2,{titulo:"Nada pendiente",texto:"Todo lo facturado est\xE1 localizado: pagado por el canal o cobrado en recepci\xF3n."}):__gh(__gf,null,filas.map((x,i)=>__gh(Fila2,{key:x.k,primera:i===0,lead:__gh(Punto2,{tono:"aviso"}),titulo:x.t,sub:x.s,elegida:filtro===x.k,valor:money2(c.causas[x.k].v),valorSub:nEstancias(c.causas[x.k].n),onClick:()=>filtrar(x.k)})),c.de_mas>0?__gh(Fila2,{primera:!filas.length,lead:__gh(Punto2,{tono:"info"}),titulo:"Localizado de m\xE1s",sub:"Cobros que pasan de la factura de su estancia.",elegida:filtro==="de_mas",valor:money2(c.de_mas),valorSub:nEstancias(c.con_de_mas),onClick:()=>filtrar("de_mas")}):null))}function comisionTexto(x){return x.comision>0?money2(x.comision):esPropio(x.canal)?"sin comisi\xF3n":x.pagadas&&!x.conBruto?"su informe no la trae":"sin dato"}var localizado=x=>x.base>0?(x.bruto+x.recepcion)/x.base*100:null;function PorCanal({canales,c,canal,elegir}){let movil=useIsMobile(760),conRecepcion=c.recepcion_total>0;return __gh(Grupo,{titulo:"Por canal",cuenta:canales.length,sub:"Booking trae lo que paga el hu\xE9sped y su comisi\xF3n; Hostelworld s\xF3lo lo que paga, y su comisi\xF3n queda en lo pendiente. Pulsa uno para ver sus estancias"},movil?canales.map((x,i)=>__gh(Fila2,{key:x.canal,primera:i===0,lead:__gh(LogoCanal,{canal:x.canal,tam:28}),titulo:x.canal,elegida:canal===x.canal,onClick:()=>elegir(x.canal),sub:`${nEstancias(x.estancias)} \xB7 pag\xF3 ${euros2(x.bruto)} \xB7 comisi\xF3n ${comisionTexto(x)==="su informe no la trae"?"sin dato":comisionTexto(x)}`,valor:euros2(x.base),valorSub:`${porcentaje(localizado(x))} localizado`})):__gh("div",{style:{overflowX:"auto"},"data-gufi-src":"portal/cobros.tsx:418"},__gh("table",{className:"c-tabla","data-gufi-src":"portal/cobros.tsx:419"},__gh("thead",{"data-gufi-src":"portal/cobros.tsx:420"},__gh("tr",{"data-gufi-src":"portal/cobros.tsx:420"},__gh("th",{"data-izq":"1","data-gufi-src":"portal/cobros.tsx:421"},"Canal"),__gh("th",{"data-gufi-src":"portal/cobros.tsx:421"},"Estancias"),__gh("th",{"data-gufi-src":"portal/cobros.tsx:421"},"Facturado"),__gh("th",{"data-gufi-src":"portal/cobros.tsx:421"},"Pag\xF3 el canal"),__gh("th",{"data-gufi-src":"portal/cobros.tsx:421"},"Comisi\xF3n"),__gh("th",{"data-gufi-src":"portal/cobros.tsx:421"},"Al banco"),conRecepcion?__gh("th",{"data-gufi-src":"portal/cobros.tsx:422"},"En recepci\xF3n"):null,__gh("th",{"data-gufi-src":"portal/cobros.tsx:422"},"Pendiente"),__gh("th",{"data-gufi-src":"portal/cobros.tsx:422"},"Localizado"))),__gh("tbody",{"data-gufi-src":"portal/cobros.tsx:424"},canales.map(x=>__gh("tr",{key:x.canal,"data-toca":"1","data-elegida":canal===x.canal?"1":"0",onClick:()=>elegir(x.canal),"data-gufi-src":"portal/cobros.tsx:426"},__gh("td",{"data-izq":"1","data-gufi-src":"portal/cobros.tsx:427"},__gh("span",{style:{display:"flex",alignItems:"center",gap:10,fontWeight:500},"data-gufi-src":"portal/cobros.tsx:427"},__gh(LogoCanal,{canal:x.canal,tam:26}),x.canal)),__gh("td",{"data-gufi-src":"portal/cobros.tsx:428"},numero(x.estancias)),__gh("td",{"data-gufi-src":"portal/cobros.tsx:429"},money2(x.base)),__gh("td",{"data-gufi-src":"portal/cobros.tsx:430"},x.bruto?money2(x.bruto):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/cobros.tsx:430"},"nada")),__gh("td",{"data-gufi-src":"portal/cobros.tsx:431"},x.comision>0?money2(x.comision):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/cobros.tsx:431"},comisionTexto(x))),__gh("td",{"data-gufi-src":"portal/cobros.tsx:432"},x.neto?money2(x.neto):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/cobros.tsx:432"},"nada")),conRecepcion?__gh("td",{"data-gufi-src":"portal/cobros.tsx:433"},x.recepcion?money2(x.recepcion):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/cobros.tsx:433"},"nada")):null,__gh("td",{"data-gufi-src":"portal/cobros.tsx:434"},x.pendiente>0?money2(x.pendiente):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/cobros.tsx:434"},"nada")),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/cobros.tsx:435"},porcentaje(localizado(x)))))),__gh("tfoot",{"data-gufi-src":"portal/cobros.tsx:439"},__gh("tr",{"data-gufi-src":"portal/cobros.tsx:439"},__gh("td",{"data-izq":"1","data-gufi-src":"portal/cobros.tsx:440"},"Total"),__gh("td",{"data-gufi-src":"portal/cobros.tsx:440"},numero(c.estancias)),__gh("td",{"data-gufi-src":"portal/cobros.tsx:440"},money2(c.base)),__gh("td",{"data-gufi-src":"portal/cobros.tsx:440"},money2(c.canal)),__gh("td",{"data-gufi-src":"portal/cobros.tsx:440"},money2(c.comision)),__gh("td",{"data-gufi-src":"portal/cobros.tsx:440"},money2(c.neto)),conRecepcion?__gh("td",{"data-gufi-src":"portal/cobros.tsx:441"},money2(c.recepcion_total)):null,__gh("td",{"data-gufi-src":"portal/cobros.tsx:441"},money2(c.pendiente)),__gh("td",{"data-gufi-src":"portal/cobros.tsx:442"},porcentaje(c.base>0?(c.canal+c.recepcion_total)/c.base*100:null)))))))}function Estado2({e}){let caja2={display:"inline-flex",alignItems:"center",gap:7,justifyContent:"flex-end"};return e.pendiente>0?__gh("span",{style:caja2,"data-gufi-src":"portal/cobros.tsx:454"},__gh(Punto2,{tono:"aviso"}),money2(e.pendiente)):e.de_mas>0?__gh("span",{style:caja2,"data-gufi-src":"portal/cobros.tsx:455"},__gh(Punto2,{tono:"info"}),money2(e.de_mas)," de m\xE1s"):__gh("span",{style:{color:MUTED,fontWeight:500},"data-gufi-src":"portal/cobros.tsx:456"},"Cobrada")}function Lista3({filas,filtro,setFiltro,cuentas,q,setQ,orden,pulsar,canal,quitarCanal,medios,api,token,recargar,reinicio}){let movil=useIsMobile(760),[ver,setVer]=(0,import_react37.useState)(TANDA6),[abierta,setAbierta]=(0,import_react37.useState)(null),[marcadas,setMarcadas]=(0,import_react37.useState)({}),[varias,setVarias]=(0,import_react37.useState)(!1);(0,import_react37.useEffect)(()=>{setVer(TANDA6)},[reinicio]);let vis=filas.slice(0,ver),elegidas=filas.filter(e=>marcadas[e.codigo]&&e.pendiente>0),marcables=vis.filter(e=>e.pendiente>0),todas=marcables.length>0&&marcables.every(e=>marcadas[e.codigo]),marcar=(cods,v)=>setMarcadas(m=>{let n={...m};return cods.forEach(k=>{n[k]=v}),n}),abrir=cod=>setAbierta(abierta===cod?null:cod),opciones=FILTROS.filter(f=>f.v==="todas"||f.v===filtro||cuentas[f.v]).map(f=>({v:f.v,t:f.t,n:cuentas[f.v]})),casilla=e=>e.pendiente>0?__gh("input",{type:"checkbox",className:"c-check","aria-label":`Elegir ${e.huesped||e.codigo}`,checked:!!marcadas[e.codigo],onClick:ev=>ev.stopPropagation(),onChange:ev=>marcar([e.codigo],ev.target.checked),"data-gufi-src":"portal/cobros.tsx:475"}):__gh("span",{style:{width:16,display:"block"},"data-gufi-src":"portal/cobros.tsx:477"}),detalle=e=>__gh(Recorrido,{e,api,token,medios,recargar});return __gh(Grupo,{titulo:"Estancias",cuenta:filas.length,sub:canal?__gh(__gf,null,"S\xF3lo las de ",canal,". ",__gh(Enlace,{onClick:quitarCanal},"Ver todos los canales")):"Pulsa una para ver su recorrido, de la factura al banco. Elige varias para apuntar su cobro de una vez"},__gh("div",{className:"c-barra-lista","data-gufi-src":"portal/cobros.tsx:483"},__gh("span",{style:{minWidth:0,maxWidth:"100%"},"data-gufi-src":"portal/cobros.tsx:484"},__gh(Segmentado,{id:"cobros-filtro",opciones,valor:filtro,onCambio:setFiltro})),__gh(Buscador2,{valor:q,onCambio:setQ,placeholder:"Hu\xE9sped, estancia o factura",ancho:movil?"100%":260})),elegidas.length?varias?__gh("div",{className:"c-det",style:{borderBottom:`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/cobros.tsx:489"},__gh(FormCobro,{id:"varias",api,token,estancias:elegidas,medios,onCancelar:()=>setVarias(!1),onHecho:()=>{setMarcadas({}),setVarias(!1),recargar()}})):__gh("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",padding:"10px 16px",borderBottom:`1px solid ${HAIRLINE}`,background:"rgba(99,91,255,0.05)"},"data-gufi-src":"portal/cobros.tsx:494"},__gh("span",{style:{fontSize:13.5,color:INK,fontWeight:500,flex:"1 1 220px"},"data-gufi-src":"portal/cobros.tsx:495"},nEstancias(elegidas.length)," ",elegidas.length===1?"elegida":"elegidas",__gh("span",{style:{color:MUTED,fontWeight:400},"data-gufi-src":"portal/cobros.tsx:497"}," \xB7 ",money2(elegidas.reduce((s,e)=>s+e.pendiente,0))," por localizar")),__gh(Enlace,{gris:!0,onClick:()=>setMarcadas({})},"Soltar"),__gh(Boton3,{principal:!0,onClick:()=>setVarias(!0)},"Apuntar cobro")):null,filas.length?movil?__gh("div",{"data-gufi-src":"portal/cobros.tsx:505"},vis.map((e,i)=>{let ce=canalEstancia(e);return __gh(import_react37.default.Fragment,{key:e.codigo},__gh(Fila2,{primera:i===0,elegida:abierta===e.codigo,onClick:()=>abrir(e.codigo),lead:__gh("span",{style:{display:"flex",alignItems:"center",gap:10},"data-gufi-src":"portal/cobros.tsx:511"},casilla(e),__gh(LogoCanal,{canal:ce,tam:28})),titulo:e.huesped||e.codigo,sub:`${fmtLarga(e.entrada)} \xB7 ${e.facturas.length?e.facturas.map(f=>f.numero).join(", "):"sin factura"}`,valor:__gh(Estado2,{e}),valorSub:`de ${money2(e.base)}`}),abierta===e.codigo?__gh("div",{className:"c-det",style:{borderTop:`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/cobros.tsx:514"},detalle(e)):null)})):__gh("div",{style:{overflowX:"auto"},"data-gufi-src":"portal/cobros.tsx:520"},__gh("table",{className:"c-tabla","data-gufi-src":"portal/cobros.tsx:521"},__gh("thead",{"data-gufi-src":"portal/cobros.tsx:522"},__gh("tr",{"data-gufi-src":"portal/cobros.tsx:522"},__gh("th",{"data-izq":"1",style:{width:16,paddingRight:0},"data-gufi-src":"portal/cobros.tsx:523"},marcables.length?__gh("input",{type:"checkbox",className:"c-check","aria-label":"Elegir las que se ven con algo pendiente",checked:todas,onChange:ev=>marcar(marcables.map(e=>e.codigo),ev.target.checked),"data-gufi-src":"portal/cobros.tsx:524"}):null),COLS2.map(col=>__gh("th",{key:col.k,"data-izq":col.izq?"1":void 0,"data-orden":"1","data-on":orden.k===col.k?"1":"0",onClick:()=>pulsar(col.k),"data-gufi-src":"portal/cobros.tsx:528"},col.t,orden.k===col.k?orden.asc?" \u2191":" \u2193":"")))),__gh("tbody",{"data-gufi-src":"portal/cobros.tsx:533"},vis.map(e=>{let ce=canalEstancia(e),comoSeCobro=Array.from(new Set(e.recepcion.map(r=>r.medio))).join(", ");return __gh(import_react37.default.Fragment,{key:e.codigo},__gh("tr",{"data-toca":"1","data-elegida":abierta===e.codigo?"1":"0",onClick:()=>abrir(e.codigo),"data-gufi-src":"portal/cobros.tsx:539"},__gh("td",{"data-izq":"1",style:{paddingRight:0},"data-gufi-src":"portal/cobros.tsx:540"},casilla(e)),__gh("td",{"data-izq":"1","data-gufi-src":"portal/cobros.tsx:541"},fmtLarga(e.entrada)),__gh("td",{"data-izq":"1",style:{whiteSpace:"normal",minWidth:160},"data-gufi-src":"portal/cobros.tsx:542"},__gh("span",{style:{display:"block",fontWeight:500},"data-gufi-src":"portal/cobros.tsx:543"},e.huesped||e.codigo),__gh("span",{style:{display:"block",fontSize:11.5,color:MUTED},"data-gufi-src":"portal/cobros.tsx:544"},e.codigo," \xB7 ",numero(e.camas)," ",e.camas===1?"cama":"camas")),__gh("td",{"data-izq":"1","data-gufi-src":"portal/cobros.tsx:546"},__gh("span",{style:{display:"flex",alignItems:"center",gap:8},"data-gufi-src":"portal/cobros.tsx:546"},__gh(LogoCanal,{canal:ce,tam:20}),ce)),__gh("td",{"data-izq":"1","data-gufi-src":"portal/cobros.tsx:547"},e.facturas.length?e.facturas.map(f=>f.numero).join(", "):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/cobros.tsx:547"},"sin factura")),__gh("td",{"data-gufi-src":"portal/cobros.tsx:548"},money2(e.base)),__gh("td",{"data-gufi-src":"portal/cobros.tsx:549"},e.canal_bruto?money2(e.canal_bruto):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/cobros.tsx:549"},"nada")),__gh("td",{"data-gufi-src":"portal/cobros.tsx:550"},e.recepcion.length?__gh(__gf,null,__gh("span",{style:{display:"block"},"data-gufi-src":"portal/cobros.tsx:550"},money2(e.recepcion_total)),__gh("span",{style:{display:"block",fontSize:11.5,color:MUTED},"data-gufi-src":"portal/cobros.tsx:550"},comoSeCobro)):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/cobros.tsx:550"},"nada")),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/cobros.tsx:551"},__gh(Estado2,{e}))),abierta===e.codigo?__gh("tr",{"data-gufi-src":"portal/cobros.tsx:553"},__gh("td",{className:"c-det-td",colSpan:COLS2.length+1,"data-gufi-src":"portal/cobros.tsx:553"},__gh("div",{className:"c-det","data-gufi-src":"portal/cobros.tsx:553"},detalle(e)))):null)})))):__gh(Vacio2,{titulo:"Ninguna estancia con ese filtro",texto:q?`Nada con \xAB${q}\xBB.`:void 0}),__gh(FilaMas,{quedan:filas.length-ver,tanda:TANDA6,onClick:()=>setVer(ver+TANDA6)}))}function Paso({n,titulo:titulo3,children}){return __gh("div",{style:{minWidth:0},"data-gufi-src":"portal/cobros.tsx:569"},__gh("div",{style:{fontSize:12.5,fontWeight:600,color:INK,padding:"8px 0 6px"},"data-gufi-src":"portal/cobros.tsx:570"},__gh("span",{style:{color:FAINT,marginRight:6},"data-gufi-src":"portal/cobros.tsx:570"},n),titulo3),children)}function Linea2({izq,sub,der}){return __gh("div",{style:{display:"flex",alignItems:"flex-start",gap:10,padding:"7px 0",borderTop:`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/cobros.tsx:577"},__gh("span",{style:{flex:1,minWidth:0},"data-gufi-src":"portal/cobros.tsx:578"},__gh("span",{style:{display:"flex",alignItems:"center",gap:7,fontSize:13,color:INK,flexWrap:"wrap"},"data-gufi-src":"portal/cobros.tsx:579"},izq),sub?__gh("span",{style:{display:"block",fontSize:11.5,color:MUTED,marginTop:1,lineHeight:1.45},"data-gufi-src":"portal/cobros.tsx:580"},sub):null),der!=null?__gh("span",{style:{fontSize:13,fontWeight:600,color:INK,fontVariantNumeric:"tabular-nums",flexShrink:0},"data-gufi-src":"portal/cobros.tsx:582"},der):null)}function Recorrido({e,api,token,medios,recargar}){let[borrando,setBorrando]=(0,import_react37.useState)(null),[bajando,setBajando]=(0,import_react37.useState)(null),[error,setError]=(0,import_react37.useState)(""),[apuntando,setApuntando]=(0,import_react37.useState)(!1);async function pdf(f){setError(""),setBajando(f.id);try{let r=await api("portal_factura_pdf",{token,facturaId:f.id});descargarPdfBase64(r.pdf,r.filename)}catch(x){setError(`No se ha podido bajar la factura ${f.numero}: ${mensaje(x)}`)}setBajando(null)}async function borrar2(c){if(borrando!==c.id){setBorrando(c.id);return}setError("");try{await api("portal_cobros",{token,accion:"borrar",id:c.id}),setBorrando(null),recargar()}catch(x){setError(`No se ha podido quitar el cobro: ${mensaje(x)}`),setBorrando(null)}}let ce=canalEstancia(e);return __gh("div",{"data-gufi-src":"portal/cobros.tsx:607"},__gh("div",{style:{fontSize:12.5,color:MUTED,padding:"8px 0 4px"},"data-gufi-src":"portal/cobros.tsx:608"},e.codigo," \xB7 ",ce," \xB7 del ",fmtLarga(e.entrada)," al ",fmtLarga(e.salida)," \xB7 ",numero(e.camas)," ",e.camas===1?"cama":"camas"),__gh("div",{className:"c-pasos","data-gufi-src":"portal/cobros.tsx:611"},__gh(Paso,{n:1,titulo:"Factura"},e.facturas.length?e.facturas.map(f=>__gh(Linea2,{key:f.id,izq:__gh(Enlace,{onClick:()=>pdf(f),disabled:bajando===f.id},bajando===f.id?"Bajando el PDF\u2026":f.numero),sub:`${fmtLarga(f.fecha)} \xB7 pulsa para bajar el PDF`,der:money2(f.total)})):__gh(Linea2,{izq:"Todav\xEDa sin factura",sub:"cuenta lo que dice la reserva",der:money2(e.importe)})),__gh(Paso,{n:2,titulo:"Pagado por el canal"},e.canal_pagos.length?e.canal_pagos.map((p,k)=>__gh(Linea2,{key:k,izq:__gh(__gf,null,__gh(LogoCanal,{canal:nombreCanal2(p.canal),tam:18}),nombreCanal2(p.canal)),sub:`${fmtLarga(p.fecha)} \xB7 cuenta \u2022\u2022\u2022\u2022${p.cuenta||"sin dato"}${p.bruto!=null?` \xB7 comisi\xF3n ${money2(p.bruto-p.neto)}`:" \xB7 s\xF3lo lo que paga"}${p.aplicado?" \xB7 ya en el banco":""}`,der:money2(p.bruto!=null?p.bruto:p.neto)})):__gh(Linea2,{izq:__gh("span",{style:{color:MUTED},"data-gufi-src":"portal/cobros.tsx:623"},e.canal==="Direct"?"Una directa no la paga ning\xFAn canal":"A\xFAn no ha llegado el pago del canal")})),__gh(Paso,{n:3,titulo:"Cobrado en recepci\xF3n"},e.recepcion.length?e.recepcion.map(c=>__gh(Linea2,{key:c.id,izq:c.medio,der:money2(c.importe),sub:__gh(__gf,null,fmtLarga(c.fecha),c.num_operacion?` \xB7 op. ${c.num_operacion}`:"",c.notas?` \xB7 ${c.notas}`:""," \xB7 ",__gh(Enlace,{onClick:()=>borrar2(c)},borrando===c.id?"Pulsa otra vez para quitarlo":"Quitar"))})):__gh(Linea2,{izq:__gh("span",{style:{color:MUTED},"data-gufi-src":"portal/cobros.tsx:629"},"Nada apuntado")})),__gh(Paso,{n:4,titulo:"Lo que queda"},__gh(Linea2,{izq:"Facturado",der:money2(e.base)}),__gh(Linea2,{izq:"Localizado",sub:"canal y recepci\xF3n",der:money2(e.canal_bruto+e.recepcion_total)}),__gh(Linea2,{izq:__gh(__gf,null,e.pendiente>0?__gh(Punto2,{tono:"aviso"}):null,"Pendiente de localizar"),der:e.pendiente>0?money2(e.pendiente):"nada"}),e.de_mas>0?__gh(Linea2,{izq:__gh(__gf,null,__gh(Punto2,{tono:"info"}),"Localizado de m\xE1s"),der:money2(e.de_mas)}):null)),error?__gh(LineaError,{texto:error}):null,apuntando?__gh(FormCobro,{id:e.codigo,api,token,estancias:[e],medios,onCancelar:()=>setApuntando(!1),onHecho:()=>{setApuntando(!1),recargar()}}):e.pendiente>0?__gh("div",{style:{marginTop:14},"data-gufi-src":"portal/cobros.tsx:643"},__gh(Boton3,{principal:!0,onClick:()=>setApuntando(!0)},"Apuntar cobro de ",money2(e.pendiente))):null)}function Campo5({etiqueta:etiqueta4,ayuda,children}){return __gh("div",{className:"c-campo","data-gufi-src":"portal/cobros.tsx:652"},__gh("span",{"data-gufi-src":"portal/cobros.tsx:653"},__gh("span",{style:{display:"block",fontSize:13.5,fontWeight:500,color:INK},"data-gufi-src":"portal/cobros.tsx:654"},etiqueta4),ayuda?__gh("span",{style:{display:"block",fontSize:12,color:MUTED},"data-gufi-src":"portal/cobros.tsx:655"},ayuda):null),__gh("span",{style:{minWidth:0},"data-gufi-src":"portal/cobros.tsx:657"},children))}function FormCobro({id,api,token,estancias,medios,onHecho,onCancelar}){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:mensaje(e)})}}return __gh("div",{style:{marginTop:14,maxWidth:680},"data-gufi-src":"portal/cobros.tsx:683"},__gh("div",{style:{fontSize:14,fontWeight:600,color:INK},"data-gufi-src":"portal/cobros.tsx:684"},una?"Apuntar un cobro":`Apuntar el cobro de ${nEstancias(estancias.length)}`),__gh("div",{style:{fontSize:12.5,color:MUTED,margin:"2px 0 8px"},"data-gufi-src":"portal/cobros.tsx:685"},una?`Le faltan ${money2(una.pendiente)} de ${money2(una.base)}.`:`Se apunta a cada una lo que le falta: ${money2(total)} en total.`),__gh(Campo5,{etiqueta:"C\xF3mo se cobr\xF3"},__gh(Segmentado,{id:`cobros-medio-${id}`,opciones:medios.map(m=>({v:m,t:m})),valor:medio,onCambio:setMedio})),__gh(Campo5,{etiqueta:"Fecha del cobro"},__gh("input",{type:"date",className:"c-input","aria-label":"Fecha del cobro",value:fecha,max:hoyISO(),onChange:ev=>setFecha(ev.target.value),"data-gufi-src":"portal/cobros.tsx:692"})),una?__gh(Campo5,{etiqueta:"Importe",ayuda:"Lo que se cobr\xF3, en euros"},__gh("input",{className:"c-input","aria-label":"Importe",inputMode:"decimal",value:importe,onChange:ev=>setImporte(ev.target.value),"data-gufi-src":"portal/cobros.tsx:696"})):null,__gh(Campo5,{etiqueta:"N\xBA de operaci\xF3n",ayuda:"Opcional: el del ticket del TPV"},__gh("input",{className:"c-input","aria-label":"N\xFAmero de operaci\xF3n",value:numOp,onChange:ev=>setNumOp(ev.target.value),"data-gufi-src":"portal/cobros.tsx:700"})),__gh(Campo5,{etiqueta:"Notas",ayuda:"Opcional"},__gh("input",{className:"c-input","aria-label":"Notas",value:notas,onChange:ev=>setNotas(ev.target.value),"data-gufi-src":"portal/cobros.tsx:703"})),una?null:__gh("div",{style:{maxHeight:220,overflowY:"auto",marginTop:4},"data-gufi-src":"portal/cobros.tsx:706"},estancias.map(e=>__gh(Linea2,{key:e.codigo,izq:e.huesped||e.codigo,sub:`${e.codigo} \xB7 entrada ${fmtLarga(e.entrada)}`,der:money2(e.pendiente)}))),estado.error?__gh(LineaError,{texto:estado.error}):null,__gh("div",{style:{display:"flex",gap:10,justifyContent:"flex-end",alignItems:"center",marginTop:14,flexWrap:"wrap"},"data-gufi-src":"portal/cobros.tsx:711"},__gh(Boton3,{onClick:onCancelar,disabled:estado.ocupado},"Cancelar"),__gh(Boton3,{principal:!0,onClick:guardar3,disabled:estado.ocupado},estado.ocupado?__gh(import_lucide_react36.Loader2,{size:14,className:"animate-spin"}):null,"Guardar cobro")))}var import_react38=require("react"),import_recharts7=require("recharts"),import_lucide_react37=require("lucide-react");var TANDA7=40,sinTildes2=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),diaCorto2=s=>`${Number(s.slice(8,10))} ${mesCorto(s.slice(0,7))}`,suave=s=>/[A-Z]/.test(s)&&s===s.toUpperCase()?s.charAt(0)+s.slice(1).toLowerCase():s,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?suave(util[util.length-1]):util.length===1&&/^ABONO POR TRANSFERENCIA/i.test(util[0])?"Transferencia recibida":concepto?suave(String(concepto)):"Sin concepto"},SIN_DESGLOSE="Hostelworld, sin desglose",origenDe=m=>m.importe<0?"Salidas":m.pago?nombreCanal2(m.pago.canal):m.nota?SIN_DESGLOSE:"Otros ingresos",logoDe=o=>o===SIN_DESGLOSE?"Hostelworld":o;function porOrigen(movs){let m={};return movs.forEach(x=>{let k=origenDe(x),o=m[k]||(m[k]={origen:k,importe:0,n:0,reservas:0});o.importe+=x.importe,o.n+=1,x.pago&&(o.reservas+=x.pago.reservas)}),Object.values(m).sort((a,b)=>(a.origen==="Salidas"?1:0)-(b.origen==="Salidas"?1:0)||Math.abs(b.importe)-Math.abs(a.importe))}function serieSaldo(movs){let dias={};return movs.forEach(m=>{let x=dias[m.fecha]||(dias[m.fecha]={fecha:m.fecha,saldo:null,entradas:0,salidas:0,n:0});x.saldo==null&&m.saldo!=null&&(x.saldo=m.saldo),m.importe>0?x.entradas+=m.importe:x.salidas+=m.importe,x.n+=1}),Object.values(dias).sort((a,b)=>a.fecha.localeCompare(b.fecha))}var VALOR2={fecha:m=>m.fecha,importe:m=>m.importe,saldo:m=>m.saldo};function ordenar3(filas,orden){let val=VALOR2[orden.k];return filas.slice().sort((a,b)=>{let x=val(a),y=val(b);return x==null&&y==null?0:x==null?1:y==null?-1:(typeof x=="number"?x-y:String(x).localeCompare(String(y)))*(orden.asc?1:-1)})}function Banco({api,token}){let d2=useScript(api,"portal_banco",{token},!0);return d2.error?__gh(Aviso2,{titulo:"No se ha podido leer la cuenta",texto:d2.error}):d2.cargando||!d2.datos?__gh(Tarjeta3,null,__gh(FilasCargando,{n:8})):d2.datos.cuentas.length?__gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:36},"data-gufi-src":"portal/banco.tsx:88"},__gh("style",{"data-gufi-src":"portal/banco.tsx:89"},CSS_COMUN),d2.datos.cuentas.map(c=>__gh(Cuenta2,{key:c.nombre,c})),__gh("p",{style:{fontSize:12,color:MUTED,margin:"-18px 4px 0",lineHeight:1.5},"data-gufi-src":"portal/banco.tsx:91"},"Es el extracto que sube ",marca().nombre," en Bancos, en solo lectura: los \xFAltimos 90 d\xEDas. Cada ingreso lleva el pago del canal que lo explica, con sus reservas.")):__gh(Tarjeta3,null,__gh(Vacio2,{titulo:"Tu hostal todav\xEDa no tiene una cuenta enlazada",texto:`P\xEDdeselo a ${marca().nombre}: en cuanto la enlace, aqu\xED ver\xE1s su saldo y sus movimientos.`}))}function Cuenta2({c}){let[error,setError]=(0,import_react38.useState)(""),[dia,setDia]=(0,import_react38.useState)(null),[origen,setOrigen]=(0,import_react38.useState)(null),serie=(0,import_react38.useMemo)(()=>serieSaldo(c.movimientos),[c]),origenes=(0,import_react38.useMemo)(()=>porOrigen(c.movimientos),[c]),ingresos=c.movimientos.filter(m=>m.importe>0),cargos=c.movimientos.length-ingresos.length,explicado=ingresos.filter(m=>m.pago).reduce((s,m)=>s+m.importe,0),sinExplicar=c.entradas-explicado;async function exportar3(){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("section",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18,minWidth:0},"data-gufi-src":"portal/banco.tsx:120"},__gh("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",padding:"0 4px"},"data-gufi-src":"portal/banco.tsx:121"},__gh("div",{style:{minWidth:0,flex:"1 1 260px"},"data-gufi-src":"portal/banco.tsx:122"},__gh("h2",{style:{fontSize:22,fontWeight:650,letterSpacing:"-0.5px",color:INK,margin:0},"data-gufi-src":"portal/banco.tsx:123"},c.nombre),__gh("p",{style:{fontSize:12.5,color:MUTED,margin:"3px 0 0"},"data-gufi-src":"portal/banco.tsx:124"},c.empresa," \xB7 ",String(c.banco||"").toUpperCase()," \u2022\u2022\u2022\u2022",c.ultimos," \xB7 solo lectura")),__gh(Boton3,{onClick:exportar3,disabled:!c.movimientos.length},__gh(import_lucide_react37.Download,{size:15}),"Excel")),error?__gh(Aviso2,{titulo:"No se ha podido sacar el Excel",texto:error}):null,__gh(Cifras2,{columnas:4},__gh(Cifra2,{etiqueta:"Saldo",valor:c.saldo==null?"sin dato":money2(c.saldo),sub:c.extracto_hasta?`a ${fmtLarga(c.extracto_hasta)}, el \xFAltimo extracto`:"sin extracto todav\xEDa"}),__gh(Cifra2,{etiqueta:"Entradas",valor:money2(c.entradas),sub:c.desde?`${numero(ingresos.length)} ${ingresos.length===1?"ingreso":"ingresos"} desde el ${fmtLarga(c.desde)}`:`${numero(ingresos.length)} ingresos`}),__gh(Cifra2,{etiqueta:"Salidas",valor:c.salidas?money2(Math.abs(c.salidas)):"Ninguna",sub:c.salidas?`${numero(cargos)} ${cargos===1?"cargo":"cargos"}`:"en estas fechas"}),__gh(Cifra2,{etiqueta:"Explicado por un pago del canal",valor:porcentaje(c.entradas>0?explicado/c.entradas*100:null),tono:sinExplicar>.005?"aviso":void 0,sub:sinExplicar>.005?`${money2(sinExplicar)} a\xFAn sin desglose`:"todo lo que ha entrado"})),c.movimientos.length?__gh("div",{className:serie.length>1?"c-dos":void 0,style:serie.length>1?void 0:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)"},"data-gufi-src":"portal/banco.tsx:142"},serie.length>1?__gh(Saldo,{serie,dia,elegir:f=>setDia(dia===f?null:f)}):null,__gh(DeDonde,{origenes,entradas:c.entradas,origen,elegir:o=>setOrigen(origen===o?null:o)})):null,__gh(Movimientos,{c,dia,origen,soltar:()=>{setDia(null),setOrigen(null)}}))}function Saldo({serie,dia,elegir}){let conSaldo=serie.filter(s=>s.saldo!=null),ticks=marcas(Math.max(0,...conSaldo.map(s=>s.saldo))),maxDia=Math.max(1,...serie.map(s=>s.entradas)),clic=b=>{let f=b&&(b.fecha||b.payload&&b.payload.fecha);f&&elegir(f)};return __gh(Grupo,{titulo:"Saldo",sub:"La curva es el saldo al cerrar cada d\xEDa; las barras, lo que entr\xF3 ese d\xEDa. Pulsa una barra para ver sus movimientos",llena:!0},__gh("div",{style:{padding:"14px 18px 0"},"data-gufi-src":"portal/banco.tsx:162"},__gh(Leyenda,{series:[{color:SERIE,texto:"Saldo, en euros"},{color:"#d6d6dc",texto:"Entradas del d\xEDa"}]})),__gh("div",{style:{flex:1,minHeight:250,padding:"6px 6px 8px 0"},"data-gufi-src":"portal/banco.tsx:165"},__gh(import_recharts7.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts7.ComposedChart,{data:serie,margin:MARGEN},__gh("defs",{"data-gufi-src":"portal/banco.tsx:168"},degradado("b-saldo",SERIE,.22,0)),__gh(import_recharts7.CartesianGrid,{...REJILLA}),__gh(import_recharts7.XAxis,{dataKey:"fecha",...EJE,tickFormatter:diaCorto2,minTickGap:28}),__gh(import_recharts7.YAxis,{...EJE,width:56,domain:[0,ticks[ticks.length-1]],ticks,tickFormatter:x=>eurosEje(x)}),__gh(import_recharts7.YAxis,{yAxisId:"d",orientation:"right",hide:!0,domain:[0,maxDia*4]}),__gh(import_recharts7.Tooltip,{cursor:CURSOR,content:__gh(Globo,{titulo:p=>fmtLarga(p.fecha),filas:p=>[{color:SERIE,texto:"Saldo",valor:p.saldo==null?"sin dato":money2(p.saldo)},{color:"#d6d6dc",texto:"Entradas del d\xEDa",valor:money2(p.entradas)}].concat(p.salidas?[{color:"transparent",texto:"Salidas del d\xEDa",valor:money2(Math.abs(p.salidas))}]:[],[{color:"transparent",texto:"Movimientos",valor:numero(p.n)}])})}),__gh(import_recharts7.Bar,{yAxisId:"d",dataKey:"entradas",radius:[2,2,0,0],maxBarSize:14,animationDuration:600,style:{cursor:"pointer"},onClick:clic},serie.map(s=>__gh(import_recharts7.Cell,{key:s.fecha,fill:dia===s.fecha?"#b9b5ff":dia?"#ececf0":"#dedee3"}))),__gh(import_recharts7.Area,{type:"monotone",dataKey:"saldo",stroke:SERIE,strokeWidth:2.25,fill:"url(#b-saldo)",dot:!1,activeDot:PUNTO_ACTIVO(SERIE),connectNulls:!0,animationDuration:700})))))}function DeDonde({origenes,entradas,origen,elegir}){return __gh(Grupo,{titulo:"De d\xF3nde viene",sub:"Qu\xE9 pago del canal explica cada ingreso. Pulsa uno para ver sus movimientos",llena:!0},origenes.map((o,i)=>__gh(Fila2,{key:o.origen,primera:i===0,lead:__gh(LogoCanal,{canal:logoDe(o.origen),tam:28}),elegida:origen===o.origen,onClick:()=>elegir(o.origen),titulo:o.origen,sub:o.origen===SIN_DESGLOSE?`${numero(o.n)} ${o.n===1?"pago rotulado":"pagos rotulados"} \xABStripe\xBB: el desglose llega cuando ${marca().nombre} importa su informe`:o.reservas?`${numero(o.n)} ${o.n===1?"pago":"pagos"} \xB7 ${numero(o.reservas)} reservas`:`${numero(o.n)} ${o.n===1?"movimiento":"movimientos"}`,valor:money2(Math.abs(o.importe)),valorSub:o.importe>0&&entradas>0?`${porcentaje(o.importe/entradas*100)} de lo que entra`:void 0})))}function QueEs({m}){if(m.pago){let canal=nombreCanal2(m.pago.canal);return __gh("span",{style:{display:"flex",alignItems:"center",gap:8},"data-gufi-src":"portal/banco.tsx:211"},__gh(LogoCanal,{canal,tam:18}),"Pago de ",canal," \xB7 ",numero(m.pago.reservas)," reservas")}return m.nota?__gh("span",{style:{display:"flex",alignItems:"center",gap:8},"data-gufi-src":"portal/banco.tsx:213"},__gh(Punto2,{tono:"aviso"}),"Hostelworld, sin desglose todav\xEDa"):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/banco.tsx:214"},"sin explicar")}var queEsTexto=m=>m.pago?`Pago de ${nombreCanal2(m.pago.canal)} \xB7 ${numero(m.pago.reservas)} reservas`:m.nota?"Hostelworld, sin desglose todav\xEDa":"sin explicar",COLS3=[{k:"fecha",t:"Fecha",izq:!0,orden:!0},{k:"quien",t:"De qui\xE9n",izq:!0},{k:"que",t:"Qu\xE9 es",izq:!0},{k:"importe",t:"Importe",orden:!0},{k:"saldo",t:"Saldo",orden:!0}];function Movimientos({c,dia,origen,soltar}){let movil=useIsMobile(760),[q,setQ]=(0,import_react38.useState)(""),[orden,setOrden]=(0,import_react38.useState)({k:"fecha",asc:!1}),[ver,setVer]=(0,import_react38.useState)(TANDA7),filas=(0,import_react38.useMemo)(()=>{let n=sinTildes2(q.trim());return ordenar3(c.movimientos.filter(m=>(!dia||m.fecha===dia)&&(!origen||origenDe(m)===origen)&&(!n||sinTildes2(`${m.concepto} ${queEsTexto(m)}`).includes(n))),orden)},[c,dia,origen,q,orden]);(0,import_react38.useEffect)(()=>{setVer(TANDA7)},[dia,origen,q,orden]);let pulsar=k=>setOrden(o=>o.k===k?{k,asc:!o.asc}:{k,asc:!1}),vis=filas.slice(0,ver),filtro=[dia?`Del ${fmtLarga(dia)}`:null,origen].filter(Boolean).join(" \xB7 "),conNota=c.movimientos.some(m=>m.nota);return __gh(Grupo,{titulo:"Movimientos",cuenta:filas.length,sub:filtro?__gh(__gf,null,filtro,". ",__gh(Enlace,{onClick:soltar},"Ver todos")):"Con el pago del canal que explica cada ingreso",pie:conNota?`Hostelworld liquida rotulado \xABStripe\xBB: su desglose por reservas llega cuando ${marca().nombre} importa el informe de pagos de Hostelworld.`:void 0},c.movimientos.length>8?__gh("div",{className:"c-barra-lista","data-gufi-src":"portal/banco.tsx:243"},__gh(Buscador2,{valor:q,onCambio:setQ,placeholder:"Concepto o canal",ancho:movil?"100%":260})):null,filas.length?movil?__gh("div",{"data-gufi-src":"portal/banco.tsx:246"},vis.map((m,i)=>__gh(Fila2,{key:m.id,primera:i===0,lead:__gh(LogoCanal,{canal:m.pago?nombreCanal2(m.pago.canal):m.nota?"Hostelworld":"Otros",tam:28}),titulo:quien(m.concepto),sub:`${fmtLarga(m.fecha)} \xB7 ${queEsTexto(m)}`,valor:money2(m.importe),valorSub:m.saldo==null?"saldo sin dato":`saldo ${money2(m.saldo)}`}))):__gh("div",{style:{overflowX:"auto"},"data-gufi-src":"portal/banco.tsx:254"},__gh("table",{className:"c-tabla","data-gufi-src":"portal/banco.tsx:255"},__gh("thead",{"data-gufi-src":"portal/banco.tsx:256"},__gh("tr",{"data-gufi-src":"portal/banco.tsx:256"},COLS3.map(col=>__gh("th",{key:col.k,"data-izq":col.izq?"1":void 0,"data-orden":col.orden?"1":void 0,"data-on":orden.k===col.k?"1":"0",onClick:col.orden?()=>pulsar(col.k):void 0,"data-gufi-src":"portal/banco.tsx:258"},col.t,orden.k===col.k?orden.asc?" \u2191":" \u2193":"")))),__gh("tbody",{"data-gufi-src":"portal/banco.tsx:264"},vis.map(m=>__gh("tr",{key:m.id,"data-gufi-src":"portal/banco.tsx:266"},__gh("td",{"data-izq":"1","data-gufi-src":"portal/banco.tsx:267"},fmtLarga(m.fecha)),__gh("td",{"data-izq":"1",title:m.concepto,style:{whiteSpace:"normal",fontWeight:500},"data-gufi-src":"portal/banco.tsx:268"},quien(m.concepto)),__gh("td",{"data-izq":"1",style:{whiteSpace:"normal"},"data-gufi-src":"portal/banco.tsx:269"},__gh(QueEs,{m})),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/banco.tsx:270"},money2(m.importe)),__gh("td",{style:{color:MUTED},"data-gufi-src":"portal/banco.tsx:271"},m.saldo==null?"sin dato":money2(m.saldo))))))):__gh(Vacio2,{titulo:c.movimientos.length?"Ning\xFAn movimiento coincide":"Sin movimientos en estas fechas",texto:q?`Nada con \xAB${q}\xBB.`:void 0}),__gh(FilaMas,{quedan:filas.length-ver,tanda:TANDA7,onClick:()=>setVer(ver+TANDA7)}))}var import_react39=require("react");var CSS4=` .d-dos { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 18px; align-items: start; } @media (max-width: 1100px) { .d-dos { grid-template-columns: minmax(0, 1fr); } } .d-mono { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: 12px; color: ${MUTED}; overflow-wrap: anywhere; } `,NOMBRE={reservas:()=>"Reservas",facturas:()=>"Facturas",cobros:()=>"Cobros del canal",recepcion:()=>"Cobros en recepci\xF3n",viajeros:()=>"Viajeros",informe:()=>"Informe d\xEDa a d\xEDa",prevision:()=>"Previsi\xF3n",facturas_batuecas:()=>`Facturas de ${marca().nombre}`,gastos:()=>"Gastos de esas facturas"},nombreTabla=t3=>NOMBRE[t3]?NOMBRE[t3]():t3,mensaje2=e=>String(e&&e.message||e);function Copiar({texto,etiqueta:etiqueta4}){let[hecho,setHecho]=(0,import_react39.useState)(!1),[error,setError]=(0,import_react39.useState)("");async function copiar(){setError("");try{await navigator.clipboard.writeText(texto),setHecho(!0),setTimeout(()=>setHecho(!1),1600)}catch(e){setError(`No se ha podido copiar: ${mensaje2(e)}`)}}return __gh("span",{style:{display:"inline-flex",flexDirection:"column",alignItems:"flex-end"},"data-gufi-src":"portal/datos.tsx:45"},__gh(Enlace,{onClick:copiar},hecho?"Copiado":etiqueta4),error?__gh("span",{style:{fontSize:11.5,color:MUTED,maxWidth:220,textAlign:"right"},"data-gufi-src":"portal/datos.tsx:47"},error):null)}function Datos2({api,token}){let[version,setVersion]=(0,import_react39.useState)(0),d2=useScript(api,"portal_datos",{token,accion:"ver",version},!0),ultimo=(0,import_react39.useRef)(null);d2.datos&&(ultimo.current=d2.datos);let datos=d2.datos||ultimo.current,[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)({}),[verRevocadas,setVerRevocadas]=(0,import_react39.useState)(!1),[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(mensaje2(e))}setOcupado(!1)}if(d2.error)return __gh(Aviso2,{titulo:"No se han podido leer tus claves",texto:d2.error});if(!datos)return __gh(Tarjeta3,null,__gh(FilasCargando,{n:7}));let{claves,url,tablas,formatos,max_activas}=datos,activas=claves.filter(k=>k.activa),revocadas=claves.filter(k=>!k.activa),clave2=activas[0],enlace4=t3=>`${url}?clave=${encodeURIComponent(clave2.clave)}&tabla=${t3.tabla}${t3.fechas?`&desde=${anio}-01-01&hasta=${anio}-12-31`:""}${formato==="json"?"&formato=json":""}`,filasClave=activas.concat(verRevocadas?revocadas:[]);return __gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/datos.tsx:87"},__gh("style",{"data-gufi-src":"portal/datos.tsx:88"},CSS_COMUN+CSS4),__gh("div",{style:{padding:"0 4px"},"data-gufi-src":"portal/datos.tsx:89"},__gh("h2",{style:{fontSize:22,fontWeight:650,letterSpacing:"-0.5px",color:INK,margin:0},"data-gufi-src":"portal/datos.tsx:90"},"Tus datos, en solo lectura"),__gh("p",{style:{fontSize:12.5,color:MUTED,margin:"3px 0 0",lineHeight:1.45},"data-gufi-src":"portal/datos.tsx:91"},"Para Excel, una IA o tus propios informes. Se actualizan solos, sin pedirnos nada.")),error?__gh(Aviso2,{titulo:"No se ha podido hacer",texto:error}):null,__gh("div",{className:"d-dos","data-gufi-src":"portal/datos.tsx:95"},__gh(Grupo,{titulo:"Tablas",cuenta:tablas.length,sub:"Un enlace por tabla, con tu clave dentro: c\xF3pialo y p\xE9galo donde lo vayas a usar",pie:clave2?`${formatos[formato]} Las fechas de los enlaces se cambian en desde= y hasta=.`:void 0},clave2?__gh("div",{className:"c-barra-lista","data-gufi-src":"portal/datos.tsx:99"},__gh(Segmentado,{id:"datos-formato",valor:formato,onCambio:setFormato,opciones:[{v:"csv",t:"CSV \xB7 Excel"},{v:"json",t:"JSON \xB7 aplicaci\xF3n"}]})):null,clave2?tablas.map((t3,i)=>__gh(FilaTabla,{key:t3.tabla,t:t3,primera:i===0,enlace:enlace4(t3),formato,anio})):__gh(Vacio2,{titulo:"No tienes ninguna clave activa",texto:"Crea una en Claves y aqu\xED saldr\xE1n tus enlaces."})),__gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18,minWidth:0,alignContent:"start"},"data-gufi-src":"portal/datos.tsx:108"},__gh(Grupo,{titulo:"Claves",sub:`${numero(activas.length)} de ${numero(max_activas)} activas. Los enlaces usan la m\xE1s reciente`,pie:"Nadie puede cambiar nada con una clave: s\xF3lo se lee. Da acceso a los datos de tu hostal, as\xED que tr\xE1tala como una contrase\xF1a y, si se escapa, rev\xF3cala y crea otra."},filasClave.map((k,i)=>__gh(FilaClave,{key:k.id,k,primera:i===0,ver:!!verClave[k.id],alternarVer:()=>setVerClave(v=>({...v,[k.id]:!v[k.id]})),revocando:revocando===k.id,pedirRevocar:()=>setRevocando(k.id),cancelar:()=>setRevocando(null),revocar:()=>accion({accion:"revocar",id:k.id}),ocupado})),!activas.length&&!verRevocadas?__gh(Vacio2,{titulo:"Ninguna clave activa",texto:"Crea una abajo para tener tus enlaces."}):null,revocadas.length>0&&!verRevocadas?__gh("div",{style:{padding:"12px 16px",borderTop:activas.length?`1px solid ${HAIRLINE}`:"none"},"data-gufi-src":"portal/datos.tsx:118"},__gh(Enlace,{onClick:()=>setVerRevocadas(!0)},"Ver ",revocadas.length===1?"la revocada":`las ${numero(revocadas.length)} revocadas`)):null,activas.lengthsetNombre(ev.target.value),"data-gufi-src":"portal/datos.tsx:124"}),__gh(Boton3,{principal:!0,disabled:ocupado,onClick:()=>accion({accion:"crear",nombre})},"Crear clave")):null),__gh(Grupo,{titulo:"C\xF3mo se conecta"},__gh(Fila2,{primera:!0,titulo:"En Excel",sub:"Datos \u2192 Obtener datos \u2192 Desde la web, y pega el enlace de la tabla. Luego \xABActualizar todo\xBB trae lo \xFAltimo."}),__gh(Fila2,{titulo:"En Google Sheets",sub:__gh(__gf,null,"Escribe ",__gh("span",{className:"d-mono","data-gufi-src":"portal/datos.tsx:133"},'=IMPORTDATA("enlace")')," en una celda.")}),__gh(Fila2,{titulo:"Con una IA",sub:"P\xE1sale el mismo enlace: lo lee tal cual."})))))}function FilaTabla({t:t3,primera,enlace:enlace4,formato,anio}){return __gh("div",{style:{paddingLeft:16},"data-gufi-src":"portal/datos.tsx:145"},__gh("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",padding:"11px 16px 11px 0",borderTop:primera?"none":`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/datos.tsx:146"},__gh("div",{style:{flex:"1 1 260px",minWidth:0},"data-gufi-src":"portal/datos.tsx:147"},__gh("div",{style:{fontSize:13.5,fontWeight:500,color:INK},"data-gufi-src":"portal/datos.tsx:148"},nombreTabla(t3.tabla)),__gh("div",{style:{fontSize:12,color:MUTED,marginTop:1,lineHeight:1.45},"data-gufi-src":"portal/datos.tsx:149"},t3.que,t3.fechas?` El enlace trae ${anio}.`:"")),__gh("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexShrink:0},"data-gufi-src":"portal/datos.tsx:151"},__gh(Copiar,{texto:enlace4,etiqueta:"Copiar enlace"}),__gh(Enlace,{href:enlace4},formato==="json"?"Abrir JSON":"Bajar CSV"))))}function FilaClave({k,primera,ver,alternarVer,revocando,pedirRevocar,cancelar,revocar,ocupado}){return __gh("div",{style:{display:"flex",alignItems:"center",paddingLeft:16},"data-gufi-src":"portal/datos.tsx:163"},__gh("span",{style:{marginRight:12,display:"flex"},"data-gufi-src":"portal/datos.tsx:164"},__gh(Punto2,{tono:k.activa?"ok":"mudo"})),__gh("div",{style:{flex:1,minWidth:0,display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",padding:"11px 16px 11px 0",borderTop:primera?"none":`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/datos.tsx:165"},__gh("div",{style:{flex:"1 1 220px",minWidth:0},"data-gufi-src":"portal/datos.tsx:166"},__gh("div",{style:{fontSize:13.5,fontWeight:500,color:k.activa?INK:FAINT},"data-gufi-src":"portal/datos.tsx:167"},k.notas||"Clave sin nombre"),__gh("div",{className:"d-mono",style:{marginTop:2},"data-gufi-src":"portal/datos.tsx:168"},ver?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",{style:{fontSize:12,color:MUTED,marginTop:1},"data-gufi-src":"portal/datos.tsx:169"},k.activa?"Activa":"Revocada"," \xB7 creada el ",fmtLarga(k.creada)," \xB7 ",k.usos?`${numero(k.usos)} ${k.usos===1?"uso":"usos"}, el \xFAltimo el ${fmtLarga(k.ultimo_uso)}`:"sin usar todav\xEDa")),k.activa?__gh("div",{style:{display:"flex",alignItems:"flex-start",gap:16,flexShrink:0,flexWrap:"wrap"},"data-gufi-src":"portal/datos.tsx:174"},revocando?__gh(__gf,null,__gh(Enlace,{gris:!0,onClick:cancelar},"Cancelar"),__gh(Enlace,{onClick:revocar,disabled:ocupado},"Pulsa otra vez para revocar")):__gh(__gf,null,__gh(Enlace,{onClick:alternarVer},ver?"Ocultar":"Ver"),__gh(Copiar,{texto:k.clave,etiqueta:"Copiar"}),__gh(Enlace,{onClick:pedirRevocar},"Revocar"))):null))}var mensaje3=e=>String(e&&e.message||e);function useDatos(api,nombre,input,activo){let clave2=nombre+JSON.stringify(input),entrada3=(0,import_react40.useRef)(input);entrada3.current=input;let[st,setSt]=(0,import_react40.useState)({clave:"",datos:null,error:""});(0,import_react40.useEffect)(()=>{if(!activo)return;let vivo=!0;return setSt(s=>s.clave===clave2?{...s,error:""}:{clave:clave2,datos:null,error:""}),api(nombre,entrada3.current).then(d2=>{vivo&&setSt({clave:clave2,datos:d2,error:""})}).catch(e=>{vivo&&setSt({clave:clave2,datos:null,error:mensaje3(e)})}),()=>{vivo=!1}},[clave2,activo]);let recargar=(0,import_react40.useCallback)(async()=>{try{let d2=await api(nombre,entrada3.current);setSt({clave:clave2,datos:d2,error:""})}catch(e){setSt({clave:clave2,datos:null,error:mensaje3(e)})}},[clave2]),mio=st.clave===clave2;return{datos:mio?st.datos:null,error:mio?st.error:"",recargar}}var MES_CORTO2=["ene","feb","mar","abr","may","jun","jul","ago","sept","oct","nov","dic"],FECHA=/^(\d{4})-(\d{2})-(\d{2})/,diaCorto3=s=>{let m=FECHA.exec(String(s||""));return m?`${Number(m[3])} ${MES_CORTO2[Number(m[2])-1]}`:"sin dato"},diaLargo2=s=>{let m=FECHA.exec(String(s||""));return m?`${Number(m[3])} ${MES_CORTO2[Number(m[2])-1]} ${m[1]}`:"sin dato"},plano=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),plural5=(n,uno,varios)=>`${numero(n)} ${n===1?uno:varios}`;function canalNombre(r){let c=canalDe(r.canal,esHW(r));return c==="Booking"?"Booking.com":c==="\u2014"?"Sin canal":c}var TONO_ESTADO={pending:"aviso",no_show:"mal",inquiry:"info",preapproved:"info",cancelled:"mudo",denied:"mudo",expired:"mudo",incomplete:"mudo"},TONO_COBRO={pending:"aviso",failed:"mal",partially_refunded:"aviso",refunded:"mudo",terminated:"mudo"};function ordenar4(filas,orden,acceso){let get=acceso[orden.k];if(!get)return filas;let dir=orden.asc?1:-1;return filas.slice().sort((a,b)=>{let x=get(a),y=get(b),sx=x==null||x==="",sy=y==null||y==="";return sx&&sy?0:sx?1:sy?-1:(typeof x=="number"&&typeof y=="number"?x-y:String(x).localeCompare(String(y),"es",{numeric:!0,sensitivity:"base"}))*dir})}function Th({k,t:t3,orden,setOrden,r,texto,fija}){let on=orden.k===k;return __gh("th",{"data-orden":k,"data-on":on?"1":"0","data-r":r?"1":void 0,className:fija?"h-fija":void 0,onClick:()=>setOrden(on?{k,asc:!orden.asc}:{k,asc:!!texto}),"data-gufi-src":"portal/hostel.tsx:103"},t3,on?orden.asc?" \u2191":" \u2193":"")}var Sin=()=>__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/hostel.tsx:110"},"sin dato");function ConPunto({tono,texto}){return __gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7},"data-gufi-src":"portal/hostel.tsx:112"},tono?__gh(Punto2,{tono}):null,texto)}function Par({k,v,fuerte}){return __gh("div",{className:"h-par","data-gufi-src":"portal/hostel.tsx:115"},__gh("span",{"data-gufi-src":"portal/hostel.tsx:115"},k),__gh("span",{style:fuerte?{fontWeight:600}:void 0,"data-gufi-src":"portal/hostel.tsx:115"},v))}var CSS5=` .h-raiz, .h-pila { display: grid; grid-template-columns: minmax(0, 1fr); gap: 16px; } .h-pila { gap: 18px; } .h-barra { display: flex; flex-wrap: wrap; align-items: center; gap: 10px; min-width: 0; } .h-barra > * { min-width: 0; max-width: 100%; } .h-der { margin-left: auto; } .h-ambito .p-grp { text-transform: none; letter-spacing: 0; font-size: 12px; font-weight: 600; color: ${MUTED}; } .h-segcanal { display: inline-flex; align-items: center; gap: 6px; vertical-align: -3px; } .h-btn { display: inline-flex; align-items: center; justify-content: center; gap: 6px; height: 32px; padding: 0 12px; border-radius: 9px; border: 1px solid ${HAIRLINE}; background: #fff; font-size: 13px; font-weight: 500; color: ${INK}; cursor: pointer; white-space: nowrap; font-family: inherit; transition: border-color .2s, background .2s; } .h-btn:hover { border-color: #d2d2d7; } .h-btn:disabled { opacity: .5; cursor: default; } .h-btn-s { height: 28px; padding: 0 10px; font-size: 12.5px; border-radius: 8px; } .h-btn-a { background: ${ACCENT}; border-color: ${ACCENT}; color: #fff; } .h-btn-a:hover { border-color: ${ACCENT}; } .h-icono { width: 32px; padding: 0; } .h-link { display: inline-flex; align-items: center; gap: 5px; border: none; background: transparent; padding: 0; color: ${ACCENT}; font: inherit; font-weight: 500; cursor: pointer; white-space: nowrap; } .h-link:disabled { color: ${MUTED}; cursor: default; } .h-canal { display: inline-flex; vertical-align: middle; align-items: center; gap: 8px; border: none; background: transparent; padding: 0; font: inherit; color: ${INK}; cursor: pointer; } .h-canal:hover { text-decoration: underline; text-decoration-color: ${HAIRLINE}; text-underline-offset: 3px; } .h-tabla { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; } .h-tabla th { font-size: 12px; font-weight: 500; color: ${MUTED}; text-align: left; padding: 12px 10px 8px; white-space: nowrap; background: #fff; } .h-tabla td { font-size: 13.5px; color: ${INK}; text-align: left; padding: 0 10px; height: 50px; border-top: 1px solid ${HAIRLINE}; white-space: nowrap; background: #fff; } .h-tabla th:first-child, .h-tabla td:first-child { padding-left: 16px; } .h-tabla th:last-child, .h-tabla td:last-child { padding-right: 16px; } .h-tabla th[data-r], .h-tabla td[data-r] { text-align: right; } .h-tabla th[data-orden] { cursor: pointer; user-select: none; -webkit-user-select: none; } .h-tabla th[data-orden]:hover, .h-tabla th[data-on="1"] { color: ${INK}; } .h-tabla tbody tr[data-toca] { cursor: pointer; } .h-tabla tbody tr[data-toca]:hover > td { background: #fafafc; } .h-tabla tbody tr[data-sel="1"] > td { background: #f7f7ff; } .h-tabla .h-fija { position: sticky; right: 0; z-index: 1; box-shadow: inset 1px 0 0 ${HAIRLINE}; } .h-tabla tr.h-det > td { height: auto; padding: 0; white-space: normal; background: #fbfbfd; } .h-movil { display: none; } @media (max-width: 760px) { .h-escritorio { display: none; } .h-movil { display: block; } .h-der { margin-left: 0; } } @keyframes h-abre { from { opacity: 0; transform: translateY(-4px); } to { opacity: 1; transform: none; } } .h-abre { animation: h-abre .28s cubic-bezier(.22,1,.36,1) both; } .h-det-rej { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 8px 28px; padding: 14px 16px 18px; } @media (max-width: 1200px) { .h-det-rej { grid-template-columns: repeat(2, minmax(0, 1fr)); } } @media (max-width: 700px) { .h-det-rej { grid-template-columns: minmax(0, 1fr); } } .h-det-t { font-size: 13px; font-weight: 600; color: ${INK}; margin: 4px 0 4px; } .h-par { display: flex; justify-content: space-between; align-items: baseline; gap: 14px; padding: 7px 0; border-top: 1px solid ${HAIRLINE}; font-size: 13px; } .h-det-t + .h-par { border-top: none; } .h-par > span:first-child { color: ${MUTED}; } .h-par > span:last-child { color: ${INK}; text-align: right; font-variant-numeric: tabular-nums; } .h-texto { font-size: 13px; color: ${INK_2}; line-height: 1.5; margin: 6px 0 0; } .h-cal { display: grid; gap: 3px; min-width: min-content; } .h-cal-n { position: sticky; left: 0; z-index: 1; background: #fff; display: flex; align-items: center; padding: 0 8px 0 16px; font-size: 12.5px; font-weight: 500; color: ${INK}; box-shadow: 1px 0 0 ${HAIRLINE}; white-space: nowrap; overflow: hidden; } .h-cal-c { height: 30px; border-radius: 6px; border: none; padding: 0; display: flex; align-items: center; justify-content: center; font-size: 10.5px; font-weight: 600; font-variant-numeric: tabular-nums; cursor: pointer; font-family: inherit; } .h-cal-c[data-sel="1"] { box-shadow: 0 0 0 2px ${INK}; } .h-soltar { border: 1.5px dashed #d2d2d7; background: #fafafc; border-radius: 12px; padding: 30px 20px; text-align: center; cursor: pointer; transition: border-color .15s, background .15s; } .h-soltar[data-on="1"] { border-color: ${ACCENT}; background: rgba(99,91,255,0.04); } `;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):""}function Ambito({propiedades,sel,setSel}){let[abierto,setAbierto]=(0,import_react40.useState)(!1),habitaciones=(0,import_react40.useMemo)(()=>{let m={};return propiedades.forEach(p=>{let h=habitacionDe(p.nickname);h&&(m[h]=(m[h]||0)+1)}),Object.keys(m).length&&Object.values(m).reduce((a,n)=>a+n,0)===propiedades.length?Object.entries(m).map(([h,n])=>({h,n})).sort((a,b)=>a.h.localeCompare(b.h,"es",{numeric:!0})):[]},[propiedades]),hostal=habitaciones.length>0,opciones=(0,import_react40.useMemo)(()=>[{v:"all",t:hostal?"Todo el establecimiento":"Todas mis propiedades",s:hostal?plural5(propiedades.length,"cama","camas"):numero(propiedades.length)}].concat(habitaciones.map(x=>({v:`h:${x.h}`,t:x.h,s:plural5(x.n,"cama","camas"),g:"Habitaciones"}))).concat(propiedades.map(p=>({v:`u:${p.id}`,t:unidadDe(p.nickname),g:hostal?"Camas sueltas":"Propiedades"}))),[propiedades,habitaciones,hostal]),etiqueta4=sel.startsWith("u:")?hostal?"Cama":"Propiedad":hostal?"Habitaci\xF3n":"Propiedad",valor=sel==="all"?hostal?`Todas (${plural5(propiedades.length,"cama","camas")})`:`Todas (${numero(propiedades.length)})`:nombreDeSeleccion(propiedades,sel);return __gh("div",{className:"h-ambito","data-gufi-src":"portal/hostel.tsx:207"},__gh(Desplegable2,{abierto,setAbierto,boton:__gh(Pildora,{etiqueta:etiqueta4,valor,activa:abierto||sel!=="all",onClick:()=>setAbierto(!abierto)})},__gh(ListaBuscable,{opciones,valor:sel,placeholder:hostal?"Buscar habitaci\xF3n o cama":"Buscar propiedad",onElegir:v=>{setSel(v),setAbierto(!1)}})))}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=useDatos(api,"portal_me",{token},!0);return me.error?__gh(Aviso2,{titulo:"No se ha podido abrir el \xE1rea del hostal",texto:me.error}):me.datos?__gh(Hostel,{api,token,me:me.datos}):__gh(Tarjeta3,null,__gh(FilasCargando,{n:6}))}function Hostel({api,token,me}){let[tab,setTab]=(0,import_react40.useState)("informe"),propiedades=me.propiedades||[],ownerName=me.propietario?me.propietario.nombre:"",[sel,setSel]=(0,import_react40.useState)("all"),anio=new Date().getFullYear(),[year,setYear]=(0,import_react40.useState)(String(anio)),years=(0,import_react40.useMemo)(()=>[anio-2,anio-1,anio,anio+1].map(String),[anio]),propiedadIds=(0,import_react40.useMemo)(()=>unidadesDe(propiedades,sel),[propiedades,sel]),ambito=(0,import_react40.useMemo)(()=>nombreDeSeleccion(propiedades,sel),[propiedades,sel]),idsKey=propiedadIds.join(","),from=`${year}-01-01`,to=`${year}-12-31`,consulta=(0,import_react40.useMemo)(()=>idsKey?{token,propiedadIds:idsKey.split(",").map(Number),from,to}:{token,from,to},[token,idsKey,from,to]),enReservas=tab==="reservas",res=useDatos(api,"portal_reservas",consulta,enReservas),tx=useDatos(api,"portal_transacciones",consulta,enReservas),coc=useDatos(api,"portal_conciliacion",{token},enReservas),fac=useDatos(api,"portal_facturas",{token},enReservas),vj=useDatos(api,"portal_guest_report",consulta,tab==="viajeros"),fallos=[enReservas&&res.error?{t:"No se han podido cargar las reservas",m:res.error}:null,enReservas&&tx.error?{t:"No se han podido cargar los cobros del canal",m:tx.error}:null,enReservas&&coc.error?{t:"No se ha podido cargar lo conciliado en banco",m:coc.error}:null,enReservas&&fac.error?{t:"No se han podido cargar las facturas",m:fac.error}:null,tab==="viajeros"&&vj.error?{t:"No se han podido cargar los viajeros",m:vj.error}:null].filter(Boolean),conAnio=tab==="reservas"||tab==="viajeros",conAmbito=tab!=="banco"&&tab!=="datos";return __gh("div",{className:"h-raiz","data-gufi-src":"portal/hostel.tsx:267"},__gh("style",{"data-gufi-src":"portal/hostel.tsx:268"},CSS5),__gh("div",{className:"h-barra","data-gufi-src":"portal/hostel.tsx:269"},__gh(Segmentado,{id:"hostel-seccion",valor:tab,onCambio:setTab,opciones:PESTANAS.map(([v,t3])=>({v,t:t3}))})),conAmbito?__gh("div",{className:"h-barra","data-gufi-src":"portal/hostel.tsx:273"},__gh(Ambito,{propiedades,sel,setSel}),conAnio?__gh(Segmentado,{id:"hostel-anio",valor:year,onCambio:setYear,opciones:years.map(y=>({v:y,t:y}))}):null):null,fallos.map(f=>__gh(Aviso2,{key:f.t,titulo:f.t,texto:f.m})),tab==="informe"&&__gh(Informe,{api,token,propiedadIds,ambito,ownerName}),tab==="dia"&&__gh(Ocupacion,{api,token,propiedadIds,ambito}),tab==="reservas"&&__gh(ReservasTab,{res,tx,coc,fac,year,api,token,propiedadIds,ownerName}),tab==="banco"&&__gh(Banco,{api,token}),tab==="calendario"&&__gh(Disponibilidad,{api,token,propiedadIds,irADia:()=>setTab("dia")}),tab==="viajeros"&&__gh(Viajeros,{vj,year}),tab==="datos"&&__gh(Datos2,{api,token}))}var TANDA8=30,REALES=["accepted","pending","denied"];function ReservasTab({res,tx,coc,fac,year,api,token,propiedadIds,ownerName}){let[lente,setLente]=(0,import_react40.useState)("reserva"),[importar,setImportar]=(0,import_react40.useState)(!1),reservas=(0,import_react40.useMemo)(()=>(res.datos&&res.datos.reservas||[]).map(r=>{let u=unidadDe(r.propiedad_nickname),unidad=u==="\u2014"?"sin dato":u;return{...r,canal:canalNombre(r),unidad,buscar:plano(`${r.confirmation_code||""} ${r.huesped_nombre||""} ${unidad}`)}}),[res.datos]),hayHW=(0,import_react40.useMemo)(()=>reservas.some(r=>String(r.confirmation_code||"").startsWith("HWG-")),[reservas]),listo=!!res.datos&&(tx.datos||tx.error)&&(coc.datos||coc.error)&&(fac.datos||fac.error);return __gh("div",{className:"h-pila","data-gufi-src":"portal/hostel.tsx:308"},__gh("div",{className:"h-barra","data-gufi-src":"portal/hostel.tsx:309"},__gh(Segmentado,{id:"hostel-lente",valor:lente,onCambio:setLente,opciones:[{v:"reserva",t:"Reservas"},{v:"cobros",t:"Cobros"}]}),lente==="reserva"&&hayHW&&!importar?__gh("button",{type:"button",className:"h-btn h-der",onClick:()=>setImportar(!0),"data-gufi-src":"portal/hostel.tsx:312"},__gh(import_lucide_react38.Upload,{size:14}),"Importar cobros de Hostelworld"):null),lente==="cobros"?__gh(Cobros,{api,token,year,propiedadIds,ownerName}):__gh(__gf,null,importar?__gh(ImportarHostelworld,{api,token,onClose:()=>setImportar(!1),onDone:tx.recargar}):null,res.error?null:listo?reservas.length?__gh(ListaReservas,{reservas,tx,coc,fac,api,token,truncado:reservas.length>=1e4}):__gh(Tarjeta3,null,__gh(Vacio2,{titulo:`Ninguna reserva en ${year}`,texto:"Aqu\xED salen las reservas en cuanto entran por el channel manager."})):__gh(Tarjeta3,null,__gh(FilasCargando,{n:8}))))}function lineaCobro(r,pay,co){return r.estado!=="accepted"?{texto:estadoInfo(r.estado).t.toLowerCase(),tono:TONO_ESTADO[r.estado]}:co?{texto:"conciliada"}:pay&&pay.charge_status==="captured"?{texto:"cobrada"}:pay?{texto:chargeInfo(pay.charge_status).t.toLowerCase(),tono:TONO_COBRO[pay.charge_status]}:{texto:"sin cobro"}}function ListaReservas({reservas,tx,coc,fac,api,token,truncado}){let[canal,setCanal]=(0,import_react40.useState)("all"),[estadoF,setEstadoF]=(0,import_react40.useState)("reales"),[cobroF,setCobroF]=(0,import_react40.useState)("all"),[q,setQ]=(0,import_react40.useState)(""),[orden,setOrden]=(0,import_react40.useState)({k:"check_in",asc:!1}),[ver,setVer]=(0,import_react40.useState)(TANDA8),[abierta,setAbierta]=(0,import_react40.useState)(null),sinCobros=!!(tx.error||coc.error),sinFacturas=!!fac.error,payByCode=(0,import_react40.useMemo)(()=>{let m={};return(tx.datos&&tx.datos.transacciones||[]).forEach(t3=>{t3.confirmation_code&&!m[t3.confirmation_code]&&(m[t3.confirmation_code]=t3)}),m},[tx.datos]),concByCode=(0,import_react40.useMemo)(()=>{let m={};return(coc.datos&&coc.datos.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},[coc.datos]),facturasPorReserva=(0,import_react40.useMemo)(()=>{let m={};return(fac.datos&&fac.datos.facturas||[]).forEach(f=>{f.reserva!=null&&(m[f.reserva]=m[f.reserva]||[]).push(f)}),m},[fac.datos]),facturasPorGrupo=(0,import_react40.useMemo)(()=>{let porId={};reservas.forEach(r=>{porId[r.id]=r});let m={};return(fac.datos&&fac.datos.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},[fac.datos,reservas]),cobrada=(0,import_react40.useCallback)(r=>{let pc=payByCode[r.confirmation_code];return!!(pc&&pc.charge_status==="captured"||concByCode[r.confirmation_code])},[payByCode,concByCode]),n=plano(q.trim()),pasa=(0,import_react40.useCallback)((r,salta)=>!(salta!=="canal"&&canal!=="all"&&r.canal!==canal||salta!=="estado"&&(estadoF==="reales"&&!REALES.includes(r.estado)||estadoF==="canceladas"&&r.estado!=="cancelled")||salta!=="cobro"&&!sinCobros&&(cobroF==="cobradas"&&!cobrada(r)||cobroF==="pendientes"&&cobrada(r)||cobroF==="conciliadas"&&!concByCode[r.confirmation_code])||n&&!r.buscar.includes(n)),[canal,estadoF,cobroF,n,cobrada,concByCode,sinCobros]),filtered=(0,import_react40.useMemo)(()=>reservas.filter(r=>pasa(r,"")),[reservas,pasa]),cuentas=(0,import_react40.useMemo)(()=>{let c={canal:{all:0},estado:{reales:0,canceladas:0,all:0},cobro:{all:0,cobradas:0,pendientes:0,conciliadas:0}};return reservas.forEach(r=>{pasa(r,"canal")&&(c.canal.all++,c.canal[r.canal]=(c.canal[r.canal]||0)+1),pasa(r,"estado")&&(c.estado.all++,REALES.includes(r.estado)&&c.estado.reales++,r.estado==="cancelled"&&c.estado.canceladas++),pasa(r,"cobro")&&(c.cobro.all++,cobrada(r)?c.cobro.cobradas++:c.cobro.pendientes++,concByCode[r.confirmation_code]&&c.cobro.conciliadas++)}),c},[reservas,pasa,cobrada,concByCode]),canales=(0,import_react40.useMemo)(()=>{let t3={};return reservas.forEach(r=>{t3[r.canal]=(t3[r.canal]||0)+1}),Object.keys(t3).sort((a,b)=>t3[b]-t3[a])},[reservas]),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),cobrada(r)&&(cobrado+=inc)}),{ingreso,conc,cobrado,pendiente:Math.max(0,ingreso-cobrado),n:filtered.length}},[filtered,concByCode,cobrada]),acceso=(0,import_react40.useMemo)(()=>({confirmation_code:r=>r.confirmation_code||"",unidad:r=>r.unidad,huesped_nombre:r=>r.huesped_nombre||"",canal:r=>r.canal,check_in:r=>r.check_in||"",check_out:r=>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,portadoraDe,facturasPorReserva]),sorted=(0,import_react40.useMemo)(()=>ordenar4(filtered,orden,acceso),[filtered,orden,acceso]);(0,import_react40.useEffect)(()=>{setVer(TANDA8)},[canal,estadoF,cobroF,q,orden]);let visibles=sorted.slice(0,ver),alternar=id=>setAbierta(abierta===id?null:id),opcCanal=[{v:"all",t:"Todos los canales",n:cuentas.canal.all}].concat(canales.map(c=>({v:c,t:__gh("span",{className:"h-segcanal","data-gufi-src":"portal/hostel.tsx:442"},__gh(LogoCanal,{canal:c,tam:16}),c),n:cuentas.canal[c]||0}))),detalle=r=>__gh(DetalleReserva2,{r,pay:payByCode[r.confirmation_code],co:concByCode[r.confirmation_code],fx:facturasPorReserva[r.id]||null,grupo:facturasPorGrupo[grupoKey(r)]||null,sinCobros,sinFacturas,api,token,onEmitida:fac.recargar}),thp={orden,setOrden};return __gh(__gf,null,truncado?__gh(Aviso2,{titulo:"Se ven las 10.000 reservas m\xE1s recientes",texto:"El a\xF1o trae m\xE1s de las que caben de una vez, as\xED que las cifras y la lista se quedan cortas. Elige una habitaci\xF3n arriba para verlo entero."}):null,__gh(Cifras2,{columnas:4},__gh(Cifra2,{etiqueta:"Tu ingreso",valor:euros2(band.ingreso),sub:plural5(band.n,"reserva","reservas")}),__gh(Cifra2,{etiqueta:"Cobrado",valor:sinCobros?"sin dato":euros2(band.cobrado),sub:"por el canal o en banco"}),__gh(Cifra2,{etiqueta:"Pendiente",valor:sinCobros?"sin dato":euros2(band.pendiente),sub:"por cobrar"}),__gh(Cifra2,{etiqueta:"Conciliado",valor:sinCobros?"sin dato":euros2(band.conc),sub:"en banco"})),__gh("div",{className:"h-barra","data-gufi-src":"portal/hostel.tsx:459"},__gh(Segmentado,{id:"hostel-canal",valor:canal,onCambio:setCanal,opciones:opcCanal}),__gh(Segmentado,{id:"hostel-estado",valor:estadoF,onCambio:setEstadoF,opciones:[{v:"reales",t:"Reales",n:cuentas.estado.reales},{v:"canceladas",t:"Canceladas",n:cuentas.estado.canceladas},{v:"all",t:"Todas",n:cuentas.estado.all}]}),sinCobros?null:__gh(Segmentado,{id:"hostel-cobro",valor:cobroF,onCambio:setCobroF,opciones:[{v:"all",t:"Todo cobro",n:cuentas.cobro.all},{v:"cobradas",t:"Cobradas",n:cuentas.cobro.cobradas},{v:"pendientes",t:"Pendientes",n:cuentas.cobro.pendientes},{v:"conciliadas",t:"Conciliadas",n:cuentas.cobro.conciliadas}]}),__gh("span",{className:"h-der","data-gufi-src":"portal/hostel.tsx:467"},__gh(Buscador2,{valor:q,onCambio:setQ,placeholder:"Buscar hu\xE9sped, c\xF3digo o cama",ancho:280}))),__gh(Grupo,{titulo:"Reservas",cuenta:filtered.length,sub:"Pulsa una para ver su factura y de qu\xE9 pago viene su dinero",derecha:filtered.length?__gh("button",{type:"button",className:"h-btn",onClick:()=>exportarReservas(sorted,payByCode,concByCode,portadoraDe,facturasPorReserva),"data-gufi-src":"portal/hostel.tsx:471"},__gh(import_lucide_react38.Download,{size:14}),"Excel"):null},filtered.length?__gh(__gf,null,__gh("div",{className:"h-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/hostel.tsx:474"},__gh("table",{className:"h-tabla","data-gufi-src":"portal/hostel.tsx:475"},__gh("thead",{"data-gufi-src":"portal/hostel.tsx:476"},__gh("tr",{"data-gufi-src":"portal/hostel.tsx:476"},__gh(Th,{k:"confirmation_code",t:"C\xF3d.",texto:!0,...thp}),__gh(Th,{k:"unidad",t:"Propiedad",texto:!0,...thp}),__gh(Th,{k:"huesped_nombre",t:"Hu\xE9sped",texto:!0,...thp}),__gh(Th,{k:"canal",t:"Canal",texto:!0,...thp}),__gh(Th,{k:"check_in",t:"Check-in",...thp}),__gh(Th,{k:"check_out",t:"Check-out",...thp}),__gh(Th,{k:"noches",t:"Noches",r:!0,...thp}),__gh(Th,{k:"precio_total",t:"Importe",r:!0,...thp}),__gh(Th,{k:"owner_revenue",t:"Tu ingreso",r:!0,...thp}),__gh(Th,{k:"conciliado",t:"Conciliado",r:!0,...thp}),__gh(Th,{k:"cobro",t:"Cobro",texto:!0,...thp}),__gh(Th,{k:"estado",t:"Estado",texto:!0,...thp}),__gh(Th,{k:"factura",t:"Factura",texto:!0,fija:!0,...thp}))),__gh("tbody",{"data-gufi-src":"portal/hostel.tsx:491"},visibles.map(r=>{let pay=payByCode[r.confirmation_code],co=concByCode[r.confirmation_code],abre=abierta===r.id;return __gh(import_react40.default.Fragment,{key:r.id},__gh("tr",{"data-toca":"1","data-sel":abre?"1":void 0,onClick:()=>alternar(r.id),"data-gufi-src":"portal/hostel.tsx:498"},__gh("td",{style:{fontWeight:500},"data-gufi-src":"portal/hostel.tsx:499"},r.confirmation_code||__gh(Sin,null)),__gh("td",{"data-gufi-src":"portal/hostel.tsx:500"},r.unidad),__gh("td",{style:{whiteSpace:"normal",minWidth:140},"data-gufi-src":"portal/hostel.tsx:501"},r.huesped_nombre||__gh(Sin,null)),__gh("td",{"data-gufi-src":"portal/hostel.tsx:502"},__gh("button",{type:"button",className:"h-canal",title:`Ver s\xF3lo ${r.canal}`,onClick:e=>{e.stopPropagation(),setCanal(r.canal)},"data-gufi-src":"portal/hostel.tsx:503"},__gh(LogoCanal,{canal:r.canal,tam:18}),r.canal)),__gh("td",{title:diaLargo2(r.check_in),"data-gufi-src":"portal/hostel.tsx:507"},diaCorto3(r.check_in)),__gh("td",{title:diaLargo2(r.check_out),"data-gufi-src":"portal/hostel.tsx:508"},diaCorto3(r.check_out)),__gh("td",{"data-r":"1","data-gufi-src":"portal/hostel.tsx:509"},r.noches==null?__gh(Sin,null):numero(r.noches)),__gh("td",{"data-r":"1","data-gufi-src":"portal/hostel.tsx:510"},r.precio_total!=null?money2(r.precio_total):__gh(Sin,null)),__gh("td",{"data-r":"1",style:{fontWeight:600},"data-gufi-src":"portal/hostel.tsx:511"},money2(r.owner_revenue)),__gh("td",{"data-r":"1","data-gufi-src":"portal/hostel.tsx:512"},sinCobros?__gh(Sin,null):co?portadoraDe[r.confirmation_code]!==r.id?__gh("span",{style:{color:FAINT,fontSize:12.5},"data-gufi-src":"portal/hostel.tsx:514"},"va en la estancia"):__gh("span",{style:{display:"inline-block",lineHeight:1.25},"data-gufi-src":"portal/hostel.tsx:516"},money2(co.importe),co.compartido?__gh("span",{style:{display:"block",fontSize:11,color:MUTED},"data-gufi-src":"portal/hostel.tsx:518"},"parte de ",money2(co.payout)):null):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/hostel.tsx:513"},"a\xFAn no")),__gh("td",{"data-gufi-src":"portal/hostel.tsx:522"},sinCobros?__gh(Sin,null):pay?__gh(ConPunto,{tono:TONO_COBRO[pay.charge_status],texto:chargeInfo(pay.charge_status).t}):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/hostel.tsx:522"},"sin cobro")),__gh("td",{"data-gufi-src":"portal/hostel.tsx:523"},__gh(ConPunto,{tono:TONO_ESTADO[r.estado],texto:estadoInfo(r.estado).t})),__gh("td",{className:"h-fija","data-gufi-src":"portal/hostel.tsx:524"},__gh(FacturaCell,{facturas:facturasPorReserva[r.id]||null,grupo:facturasPorGrupo[grupoKey(r)]||null,reserva:r,sinDato:sinFacturas,api,token,onEmitida:fac.recargar}))),abre?__gh("tr",{className:"h-det","data-gufi-src":"portal/hostel.tsx:528"},__gh("td",{colSpan:13,"data-gufi-src":"portal/hostel.tsx:528"},detalle(r))):null)})))),__gh("div",{className:"h-movil","data-gufi-src":"portal/hostel.tsx:535"},visibles.map((r,i)=>{let lc=lineaCobro(r,payByCode[r.confirmation_code],concByCode[r.confirmation_code]),abre=abierta===r.id;return __gh(import_react40.default.Fragment,{key:r.id},__gh(Fila2,{primera:i===0,elegida:abre,onClick:()=>alternar(r.id),lead:__gh(LogoCanal,{canal:r.canal,tam:28}),titulo:r.huesped_nombre||r.confirmation_code||"sin dato",sub:`${r.unidad} \xB7 ${diaCorto3(r.check_in)} \u2192 ${diaCorto3(r.check_out)}${r.noches!=null?` \xB7 ${plural5(Number(r.noches),"noche","noches")}`:""}`,valor:money2(r.owner_revenue),valorSub:sinCobros?"sin dato":__gh(ConPunto,{tono:lc.tono,texto:lc.texto})}),abre?__gh("div",{style:{borderTop:`1px solid ${HAIRLINE}`,background:"#fbfbfd"},"data-gufi-src":"portal/hostel.tsx:545"},detalle(r)):null)})),__gh(FilaMas,{quedan:sorted.length-ver,tanda:TANDA8,onClick:()=>setVer(ver+TANDA8)})):__gh(Vacio2,{titulo:"Ninguna reserva con estos filtros",texto:q?`Nada con \xAB${q}\xBB.`:"Prueba con otro canal, estado o cobro."})))}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 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||"",r.unidad,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)}async function descargarFactura(api,token,facturaId){let r=await api("portal_factura_pdf",{token,facturaId});descargarPdfBase64(r.pdf,r.filename||"factura.pdf")}function BotonPdf3({f,api,token,texto,titulo:titulo3}){let[ocupado,setOcupado]=(0,import_react40.useState)(!1),[err,setErr]=(0,import_react40.useState)("");async function bajar(e){if(e.stopPropagation(),e.preventDefault(),!ocupado){setOcupado(!0),setErr("");try{await descargarFactura(api,token,f.id)}catch(ex){setErr(mensaje3(ex))}finally{setOcupado(!1)}}}return __gh("span",{style:{display:"inline-flex",flexDirection:"column",alignItems:"flex-start"},"data-gufi-src":"portal/hostel.tsx:602"},__gh("button",{type:"button",className:"h-link",onClick:bajar,disabled:ocupado,title:titulo3||`Descargar ${f.numero_completo}`,"data-gufi-src":"portal/hostel.tsx:603"},__gh(import_lucide_react38.Download,{size:12}),ocupado?"Bajando\u2026":texto||f.numero_completo),err?__gh("span",{style:{fontSize:11.5,color:MUTED,whiteSpace:"normal",maxWidth:240},"data-gufi-src":"portal/hostel.tsx:606"},__gh(ConPunto,{tono:"mal",texto:err})):null)}function FacturaCell({facturas,grupo,reserva,sinDato:sinDato2,api,token,onEmitida}){let[ocupado,setOcupado]=(0,import_react40.useState)(!1),[confirmar,setConfirmar]=(0,import_react40.useState)(!1),[err,setErr]=(0,import_react40.useState)("");(0,import_react40.useEffect)(()=>{if(!confirmar)return;let t3=setTimeout(()=>setConfirmar(!1),4e3);return()=>clearTimeout(t3)},[confirmar]);async function emitir(e){if(e.stopPropagation(),e.preventDefault(),!confirmar){setConfirmar(!0);return}setConfirmar(!1),setOcupado(!0),setErr("");try{let r=await api("portal_factura_emitir",{token,reservaId:reserva.id});r&&r.ok===!1?setErr(r.mensaje||r.motivo):await onEmitida()}catch(ex){setErr(mensaje3(ex))}finally{setOcupado(!1)}}if(sinDato2)return __gh(Sin,null);if(ocupado)return __gh("span",{style:{color:MUTED,fontSize:12.5},"data-gufi-src":"portal/hostel.tsx:631"},"Emitiendo\u2026");let error=err?__gh("span",{style:{display:"block",fontSize:11.5,color:MUTED,whiteSpace:"normal",maxWidth:240,marginTop:3},"data-gufi-src":"portal/hostel.tsx:632"},__gh(ConPunto,{tono:"mal",texto:err})):null;return facturas&&facturas.length?__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:10,flexWrap:"wrap"},"data-gufi-src":"portal/hostel.tsx:636"},facturas.map(f=>f.estado==="revision"?__gh("span",{key:f.id,title:f.aviso||"Importe pendiente de revisar","data-gufi-src":"portal/hostel.tsx:638"},__gh(ConPunto,{tono:"aviso",texto:`${f.numero_completo} \xB7 revisar`})):__gh(BotonPdf3,{key:f.id,f,api,token}))):grupo&&grupo.length?__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6,flexWrap:"wrap"},"data-gufi-src":"portal/hostel.tsx:647"},__gh("span",{style:{color:MUTED,fontSize:12.5},"data-gufi-src":"portal/hostel.tsx:648"},"va en"),grupo.map(f=>__gh(BotonPdf3,{key:f.id,f,api,token,titulo:`Esta cama va dentro de la factura ${f.numero_completo}${f.huespedes>1?` (${f.huespedes} hu\xE9spedes)`:""}`}))):reserva.estado==="accepted"&&Number(reserva.precio_total)>0?__gh("span",{"data-gufi-src":"portal/hostel.tsx:656"},__gh("button",{type:"button",className:confirmar?"h-btn h-btn-s h-btn-a":"h-btn h-btn-s",onClick:emitir,title:"Emitir la factura de esta reserva","data-gufi-src":"portal/hostel.tsx:657"},confirmar?"\xBFEmitir?":__gh(__gf,null,__gh(import_lucide_react38.Plus,{size:12}),"Emitir")),error):__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/hostel.tsx:654"},"no se factura")}function DetalleReserva2({r,pay,co,fx,grupo,sinCobros,sinFacturas,api,token,onEmitida}){let ci=pay?chargeInfo(pay.charge_status):null;return __gh("div",{className:"h-det-rej h-abre",onClick:e=>e.stopPropagation(),style:{cursor:"default"},"data-gufi-src":"portal/hostel.tsx:670"},__gh("div",{"data-gufi-src":"portal/hostel.tsx:671"},__gh("h4",{className:"h-det-t","data-gufi-src":"portal/hostel.tsx:672"},"La reserva"),__gh(Par,{k:"C\xF3digo",v:r.confirmation_code||__gh(Sin,null)}),__gh(Par,{k:"Propiedad",v:r.unidad}),__gh(Par,{k:"Canal",v:__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7},"data-gufi-src":"portal/hostel.tsx:675"},__gh(LogoCanal,{canal:r.canal,tam:16}),r.canal)}),__gh(Par,{k:"Estado",v:__gh(ConPunto,{tono:TONO_ESTADO[r.estado],texto:estadoInfo(r.estado).t})})),__gh("div",{"data-gufi-src":"portal/hostel.tsx:678"},__gh("h4",{className:"h-det-t","data-gufi-src":"portal/hostel.tsx:679"},"La estancia"),__gh(Par,{k:"Entrada",v:diaLargo2(r.check_in)}),__gh(Par,{k:"Salida",v:diaLargo2(r.check_out)}),__gh(Par,{k:"Noches",v:r.noches==null?__gh(Sin,null):numero(r.noches)}),r.huespedes!=null?__gh(Par,{k:"Hu\xE9spedes",v:numero(r.huespedes)}):null,__gh(Par,{k:"Importe de la reserva",v:r.precio_total!=null?money2(r.precio_total):__gh(Sin,null)}),__gh(Par,{k:"Tu ingreso",v:money2(r.owner_revenue),fuerte:!0})),__gh("div",{"data-gufi-src":"portal/hostel.tsx:687"},__gh("h4",{className:"h-det-t","data-gufi-src":"portal/hostel.tsx:688"},"Factura al hu\xE9sped"),sinFacturas?__gh("p",{className:"h-texto","data-gufi-src":"portal/hostel.tsx:689"},"No han cargado las facturas: lo dice el aviso de arriba."):fx&&fx.length?fx.map(f=>__gh(Par,{key:f.id,k:__gh("span",{style:{color:INK},"data-gufi-src":"portal/hostel.tsx:692"},f.numero_completo,__gh("span",{style:{display:"block",fontSize:12,color:MUTED},"data-gufi-src":"portal/hostel.tsx:692"},diaLargo2(f.fecha)," \xB7 ",f.tipo==="simplificada"?"simplificada":"completa",f.total!=null?` \xB7 ${money2(f.total)}`:"")),v:f.estado==="revision"?__gh("span",{title:f.aviso||void 0,"data-gufi-src":"portal/hostel.tsx:693"},__gh(ConPunto,{tono:"aviso",texto:"revisar importe"})):__gh(BotonPdf3,{f,api,token,texto:"PDF"})})):grupo&&grupo.length?__gh(__gf,null,__gh("p",{className:"h-texto","data-gufi-src":"portal/hostel.tsx:697"},"Esta cama va dentro de la factura de su estancia."),grupo.map(f=>__gh(Par,{key:f.id,k:f.numero_completo,v:__gh(BotonPdf3,{f,api,token,texto:"PDF"})}))):__gh("div",{style:{display:"flex",alignItems:"center",justifyContent:"space-between",gap:12,marginTop:6},"data-gufi-src":"portal/hostel.tsx:701"},__gh("span",{style:{fontSize:13,color:INK_2},"data-gufi-src":"portal/hostel.tsx:702"},"Esta reserva todav\xEDa no tiene factura."),__gh(FacturaCell,{facturas:null,grupo:null,reserva:r,sinDato:!1,api,token,onEmitida}))),__gh("div",{"data-gufi-src":"portal/hostel.tsx:707"},__gh("h4",{className:"h-det-t","data-gufi-src":"portal/hostel.tsx:708"},"Dinero recibido"),sinCobros?__gh("p",{className:"h-texto","data-gufi-src":"portal/hostel.tsx:709"},"No han cargado los cobros: lo dice el aviso de arriba."):co?__gh(__gf,null,__gh(Par,{k:"Conciliado en banco",v:money2(co.importe),fuerte:!0}),co.compartido?__gh("p",{className:"h-texto","data-gufi-src":"portal/hostel.tsx:713"},"Parte de un pago agrupado de ",money2(co.payout),co.fecha?`, del ${diaLargo2(co.fecha)}`:"","."):co.fecha?__gh("p",{className:"h-texto","data-gufi-src":"portal/hostel.tsx:714"},"Pago del ",diaLargo2(co.fecha),"."):null):ci?__gh("p",{className:"h-texto","data-gufi-src":"portal/hostel.tsx:717"},__gh(ConPunto,{tono:TONO_COBRO[pay.charge_status],texto:`Cobro ${ci.t.toLowerCase()}, a\xFAn no conciliado en el banco.`})):__gh("p",{className:"h-texto","data-gufi-src":"portal/hostel.tsx:719"},"A\xFAn no hay cobro registrado para esta reserva.")))}function parseCSV(text){let rows=[],cur=[""],q=!1;for(let i=0;i1||cur[0])&&rows.push(cur),rows}function ImportarHostelworld({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 norm5=x=>String(x||"").toLowerCase().replace(/[^a-z]/g,""),head=raw[0].map(norm5),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(mensaje3(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"),await onDone()}catch(e){setErr(mensaje3(e))}finally{setBusy(!1)}}let tonoFila=estado=>estado==="sin_reserva"?"aviso":estado==="error"?"mal":void 0;return __gh(Grupo,{titulo:"Importar cobros de Hostelworld",sub:"El CSV del inbox de Hostelworld: Bookings \u2192 Advanced Search \u2192 CSV. Antes de guardar nada ver\xE1s qu\xE9 entra."},__gh("div",{style:{padding:16},"data-gufi-src":"portal/hostel.tsx:783"},fase==="pick"?__gh(__gf,null,__gh("div",{className:"h-soltar","data-on":drag?"1":"0",role:"button",tabIndex:0,onDragOver:e=>{e.preventDefault(),setDrag(!0)},onDragLeave:()=>setDrag(!1),onDrop:e=>{e.preventDefault(),setDrag(!1),leerFichero(e.dataTransfer.files&&e.dataTransfer.files[0])},onClick:()=>{!busy&&fileRef.current&&fileRef.current.click()},"data-gufi-src":"portal/hostel.tsx:786"},busy?__gh("div",{style:{fontSize:14,fontWeight:600,color:MUTED},"data-gufi-src":"portal/hostel.tsx:791"},"Leyendo el CSV\u2026"):__gh(__gf,null,__gh(import_lucide_react38.Upload,{size:24,color:drag?ACCENT:MUTED,style:{display:"block",margin:"0 auto 8px"}}),__gh("div",{style:{fontSize:14,fontWeight:600,color:INK},"data-gufi-src":"portal/hostel.tsx:794"},drag?"Suelta el archivo aqu\xED":"Arrastra el CSV aqu\xED o pulsa para elegirlo"),__gh("div",{style:{fontSize:12.5,color:MUTED,marginTop:3},"data-gufi-src":"portal/hostel.tsx:795"},"Reci\xE9n bajado de Hostelworld, tal cual: 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:799"}),__gh("p",{className:"h-texto",style:{color:MUTED},"data-gufi-src":"portal/hostel.tsx:800"},"Cada reserva entra con el dep\xF3sito que ya cobr\xF3 Hostelworld y lo que queda por cobrar en recepci\xF3n. Volver a importar no duplica: actualiza.")):fase==="preview"&&prev?__gh(__gf,null,__gh("div",{style:{display:"flex",flexWrap:"wrap",gap:"6px 18px",fontSize:13.5,color:INK},"data-gufi-src":"portal/hostel.tsx:804"},__gh("span",{"data-gufi-src":"portal/hostel.tsx:805"},__gh("b",{style:{fontWeight:600},"data-gufi-src":"portal/hostel.tsx:805"},plural5(prev.ok,"reserva entra","reservas entran"))),prev.sin_reserva?__gh(ConPunto,{tono:"aviso",texto:`${numero(prev.sin_reserva)} sin reserva todav\xEDa`}):null,prev.errores?__gh(ConPunto,{tono:"mal",texto:`${plural5(prev.errores,"ilegible","ilegibles")}`}):null),prev.ok?__gh("p",{className:"h-texto","data-gufi-src":"portal/hostel.tsx:810"},"Dep\xF3sito ya cobrado por Hostelworld ",__gh("b",{style:{fontWeight:600,color:INK},"data-gufi-src":"portal/hostel.tsx:810"},money2(prev.deposito_total))," \xB7 resto, en recepci\xF3n o paynow, ",__gh("b",{style:{fontWeight:600,color:INK},"data-gufi-src":"portal/hostel.tsx:810"},money2(prev.pendiente_total))):null,__gh("div",{style:{maxHeight:300,overflowY:"auto",border:`1px solid ${HAIRLINE}`,borderRadius:10,marginTop:12},"data-gufi-src":"portal/hostel.tsx:812"},(prev.filas||[]).map((f,k)=>__gh("div",{key:k,style:{display:"flex",alignItems:"center",gap:10,padding:"8px 12px",fontSize:12.5,borderTop:k?`1px solid ${HAIRLINE}`:"none"},"data-gufi-src":"portal/hostel.tsx:814"},__gh("span",{style:{width:7,flexShrink:0,display:"flex"},"data-gufi-src":"portal/hostel.tsx:815"},tonoFila(f.estado)?__gh(Punto2,{tono:tonoFila(f.estado)}):null),__gh("span",{style:{color:FAINT,width:86,flexShrink:0,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/hostel.tsx:816"},f.referencia),__gh("span",{style:{flex:1,minWidth:0,color:INK},"data-gufi-src":"portal/hostel.tsx:817"},f.huesped||"sin dato"),__gh("span",{style:{color:MUTED,flexShrink:0,textAlign:"right",fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/hostel.tsx:818"},f.estado==="ok"?__gh(__gf,null,"dep\xF3sito ",__gh("span",{style:{color:INK},"data-gufi-src":"portal/hostel.tsx:819"},money2(f.deposito))," \xB7 resto ",money2(f.pendiente)):f.motivo)))),prev.filas_truncadas?__gh("p",{className:"h-texto",style:{color:MUTED,fontSize:12},"data-gufi-src":"portal/hostel.tsx:824"},"Y ",plural5(prev.filas_truncadas,"fila m\xE1s","filas m\xE1s")," que no caben en la lista: entran igual."):null,prev.sin_reserva?__gh("p",{className:"h-texto",style:{color:MUTED,fontSize:12},"data-gufi-src":"portal/hostel.tsx:825"},"Las que van sin reserva todav\xEDa no han bajado del channel manager: vuelve a importar este CSV en unos d\xEDas y entrar\xE1n solas."):null):fase==="done"&&fin?__gh("div",{style:{padding:"10px 0 4px"},"data-gufi-src":"portal/hostel.tsx:828"},__gh("div",{style:{fontSize:17,fontWeight:600,color:INK},"data-gufi-src":"portal/hostel.tsx:829"},plural5(fin.insertadas+fin.actualizadas,"cobro cargado","cobros cargados")),__gh("p",{className:"h-texto","data-gufi-src":"portal/hostel.tsx:830"},numero(fin.insertadas)," nuevos \xB7 ",numero(fin.actualizadas)," actualizados",fin.sin_reserva?` \xB7 ${numero(fin.sin_reserva)} sin reserva todav\xEDa`:""),__gh("p",{className:"h-texto","data-gufi-src":"portal/hostel.tsx:831"},"Dep\xF3sito de Hostelworld ",__gh("b",{style:{fontWeight:600,color:INK},"data-gufi-src":"portal/hostel.tsx:831"},money2(fin.deposito_total))," \xB7 pendiente en recepci\xF3n ",__gh("b",{style:{fontWeight:600,color:INK},"data-gufi-src":"portal/hostel.tsx:831"},money2(fin.pendiente_total)))):null,err?__gh("p",{className:"h-texto","data-gufi-src":"portal/hostel.tsx:834"},__gh(ConPunto,{tono:"mal",texto:err})):null,__gh("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,marginTop:14},"data-gufi-src":"portal/hostel.tsx:835"},fase==="done"?__gh("button",{type:"button",className:"h-btn h-btn-a",onClick:onClose,"data-gufi-src":"portal/hostel.tsx:836"},"Listo"):__gh(__gf,null,__gh("button",{type:"button",className:"h-btn",onClick:onClose,disabled:busy,"data-gufi-src":"portal/hostel.tsx:838"},"Cancelar"),fase==="preview"&&prev?__gh("button",{type:"button",className:"h-btn h-btn-a",onClick:confirmar,disabled:busy||!prev.ok,"data-gufi-src":"portal/hostel.tsx:840"},busy?"Importando\u2026":`Importar ${plural5(prev.ok,"cobro","cobros")}`):null))))}var fondoCelda=p=>p==null?"#f2f2f4":`rgba(99,91,255,${(Number(.07+Math.min(100,Math.max(0,p))/100*.83)||0).toFixed(3)})`,tintaCelda=p=>p!=null&&p>55?"#fff":INK,BLOQUEADA="#d1d1d6";function Disponibilidad({api,token,propiedadIds,irADia}){let hoy2=new Date,[cursor,setCursor]=(0,import_react40.useState)(()=>({y:hoy2.getFullYear(),m:hoy2.getMonth()+1})),lastDay=new Date(cursor.y,cursor.m,0).getDate(),mm=String(cursor.m).padStart(2,"0"),monthFrom=`${cursor.y}-${mm}-01`,monthTo=`${cursor.y}-${mm}-${String(lastDay).padStart(2,"0")}`,idsKey=(propiedadIds||[]).join(","),input=(0,import_react40.useMemo)(()=>idsKey?{token,all:!0,from:monthFrom,to:monthTo,propiedadIds:idsKey.split(",").map(Number)}:{token,all:!0,from:monthFrom,to:monthTo},[token,monthFrom,monthTo,idsKey]),cal=useDatos(api,"portal_calendar",input,!0),[celda,setCelda]=(0,import_react40.useState)(null);(0,import_react40.useEffect)(()=>{setCelda(null)},[monthFrom,idsKey]);let unidades=cal.datos&&cal.datos.propiedades||[],byKey=(0,import_react40.useMemo)(()=>{let m={};return(cal.datos&&cal.datos.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},[cal.datos]),days=[];for(let d2=1;d2<=lastDay;d2++)days.push(d2);let dia=d2=>`${cursor.y}-${mm}-${String(d2).padStart(2,"0")}`,infoDe=(p,d2)=>byKey[`${p.id}|${dia(d2)}`]||byKey[`n:${p.nickname}|${dia(d2)}`]||null,finde=d2=>{let dow=new Date(cursor.y,cursor.m-1,d2).getDay();return dow===0||dow===6},esHoy=d2=>cursor.y===hoy2.getFullYear()&&cursor.m===hoy2.getMonth()+1&&d2===hoy2.getDate(),mover=k=>{let m=cursor.m+k,y=cursor.y;m<1&&(m=12,y--),m>12&&(m=1,y++),setCursor({y,m})},esteMes=cursor.y===hoy2.getFullYear()&&cursor.m===hoy2.getMonth()+1,rejilla2=(0,import_react40.useRef)(null);(0,import_react40.useEffect)(()=>{let el=rejilla2.current,col=el&&esteMes?el.querySelector('[data-hoy="1"]'):null;el&&col&&(el.scrollLeft=Math.max(0,col.offsetLeft-170))},[cal.datos,esteMes]);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,cuenta2=(f,d2)=>{let ocupadas=0,bloqueadas=0,conocidas=0,libres=[],cerradas=[];return f.unidades.forEach(p=>{let info=infoDe(p,d2);info&&(conocidas++,info.estado==="booked"?ocupadas++:info.estado==="blocked"?(bloqueadas++,cerradas.push(unidadDe(p.nickname).split(" \xB7 ")[0])):libres.push(unidadDe(p.nickname).split(" \xB7 ")[0]))}),{total:f.unidades.length,ocupadas,bloqueadas,conocidas,libres,cerradas}},mesPasado=new Date(cursor.y,cursor.m,0)f.clave===celda.clave):null,detalle=elegida&&celda?cuenta2(elegida,celda.d):null,nombreDia=celda?new Date(cursor.y,cursor.m-1,celda.d).toLocaleDateString("es-ES",{weekday:"long"}):"";return __gh("div",{className:"h-pila","data-gufi-src":"portal/hostel.tsx:929"},__gh("div",{className:"h-barra","data-gufi-src":"portal/hostel.tsx:930"},__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:8},"data-gufi-src":"portal/hostel.tsx:931"},__gh("button",{type:"button",className:"h-btn h-icono","aria-label":"Mes anterior",onClick:()=>mover(-1),"data-gufi-src":"portal/hostel.tsx:932"},__gh(import_lucide_react38.ChevronLeft,{size:16})),__gh("span",{style:{fontSize:17,fontWeight:600,letterSpacing:"-0.3px",color:INK,minWidth:150,textAlign:"center"},"data-gufi-src":"portal/hostel.tsx:933"},MES[cursor.m]," ",cursor.y),__gh("button",{type:"button",className:"h-btn h-icono","aria-label":"Mes siguiente",onClick:()=>mover(1),"data-gufi-src":"portal/hostel.tsx:934"},__gh(import_lucide_react38.ChevronRight,{size:16}))),esteMes?null:__gh("button",{type:"button",className:"h-btn",onClick:()=>setCursor({y:hoy2.getFullYear(),m:hoy2.getMonth()+1}),"data-gufi-src":"portal/hostel.tsx:936"},"Este mes")),cal.error?__gh(Aviso2,{titulo:"No se ha podido cargar la disponibilidad",texto:cal.error}):cal.datos?__gh(Grupo,{titulo:agrupado?"Disponibilidad por habitaci\xF3n":"Disponibilidad",sub:agrupado?`${plural5(filas.length,"habitaci\xF3n","habitaciones")} \xB7 ${plural5(unidades.length,"cama","camas")} \xB7 pulsa un d\xEDa para ver qu\xE9 camas quedan libres`:`${plural5(unidades.length,"propiedad","propiedades")}`},mesPasado?__gh("div",{style:{display:"flex",gap:10,alignItems:"baseline",padding:"12px 16px 0",fontSize:13,color:INK_2,lineHeight:1.5},"data-gufi-src":"portal/hostel.tsx:942"},__gh("span",{style:{transform:"translateY(-1px)"},"data-gufi-src":"portal/hostel.tsx:943"},__gh(Punto2,{tono:"aviso"})),__gh("span",{"data-gufi-src":"portal/hostel.tsx:944"},"Este mes ya pas\xF3. El canal libera los d\xEDas en cuanto el hu\xE9sped se va, as\xED que aqu\xED se ven como disponibles. Lo que de verdad se ocup\xF3 est\xE1 en ",__gh("button",{type:"button",className:"h-link",onClick:irADia,"data-gufi-src":"portal/hostel.tsx:944"},"D\xEDa a d\xEDa"),".")):null,filas.length?__gh(__gf,null,__gh("div",{ref:rejilla2,style:{overflowX:"auto",padding:"12px 16px 14px 0",position:"relative"},"data-gufi-src":"portal/hostel.tsx:949"},__gh("div",{className:"h-cal",style:{gridTemplateColumns:`minmax(108px, 164px) repeat(${lastDay}, minmax(26px, 1fr))`},"data-gufi-src":"portal/hostel.tsx:950"},__gh("div",{className:"h-cal-n",style:{boxShadow:"none"},"data-gufi-src":"portal/hostel.tsx:951"}),days.map(d2=>__gh("div",{key:`h${d2}`,"data-hoy":esHoy(d2)?"1":void 0,style:{textAlign:"center",fontSize:10.5,fontWeight:finde(d2)||esHoy(d2)?650:500,color:esHoy(d2)?INK:finde(d2)?INK_2:FAINT,paddingBottom:3,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/hostel.tsx:953"},d2,esHoy(d2)?__gh("span",{style:{display:"block",height:2,margin:"2px 6px 0",borderRadius:2,background:INK},"data-gufi-src":"portal/hostel.tsx:954"}):null)),filas.map(f=>__gh(import_react40.default.Fragment,{key:f.clave},__gh("div",{className:"h-cal-n",title:f.nombre,"data-gufi-src":"portal/hostel.tsx:959"},f.nombre),days.map(d2=>{let c=cuenta2(f,d2),p=c.conocidas?c.ocupadas/c.total*100:null,libres=c.total-c.ocupadas-c.bloqueadas,fondo2=!agrupado&&c.conocidas&&c.bloqueadas?BLOQUEADA:fondoCelda(p),sel=!!celda&&celda.clave===f.clave&&celda.d===d2;return __gh("button",{key:d2,type:"button",className:"h-cal-c","data-sel":sel?"1":"0",onClick:()=>setCelda(sel?null:{clave:f.clave,d:d2}),title:c.conocidas?`${f.nombre} \xB7 ${d2} ${MES_CORTO2[cursor.m-1]} \xB7 ${c.ocupadas} de ${c.total} ocupadas${c.bloqueadas?`, ${c.bloqueadas} bloqueadas`:""} \xB7 ${plural5(libres,"libre","libres")}`:`${f.nombre} \xB7 ${d2} ${MES_CORTO2[cursor.m-1]} \xB7 sin dato`,style:{background:fondo2,color:tintaCelda(p)},"data-gufi-src":"portal/hostel.tsx:968"},agrupado&&c.conocidas?c.ocupadas:null)}))))),detalle&&elegida&&celda?__gh("div",{className:"h-abre",style:{borderTop:`1px solid ${HAIRLINE}`,padding:"12px 16px",fontSize:13,color:INK_2,lineHeight:1.55},"data-gufi-src":"portal/hostel.tsx:980"},__gh("div",{style:{fontWeight:600,color:INK},"data-gufi-src":"portal/hostel.tsx:981"},elegida.nombre," \xB7 ",nombreDia," ",celda.d," ",MES_CORTO2[cursor.m-1]),detalle.conocidas?__gh(__gf,null,__gh("div",{"data-gufi-src":"portal/hostel.tsx:984"},agrupado?`${numero(detalle.ocupadas)} de ${plural5(detalle.total,"cama ocupada","camas ocupadas")}${detalle.bloqueadas?` \xB7 ${plural5(detalle.bloqueadas,"bloqueada","bloqueadas")}`:""} \xB7 ${plural5(detalle.total-detalle.ocupadas-detalle.bloqueadas,"libre","libres")}`:detalle.ocupadas?"Ocupada":detalle.bloqueadas?"Bloqueada":"Libre"),agrupado&&detalle.libres.length?__gh("div",{"data-gufi-src":"portal/hostel.tsx:987"},"Libres: ",detalle.libres.join(", ")):null,agrupado&&detalle.cerradas.length?__gh("div",{"data-gufi-src":"portal/hostel.tsx:988"},"Bloqueadas: ",detalle.cerradas.join(", ")):null):__gh("div",{"data-gufi-src":"portal/hostel.tsx:982"},"Hostify no trae ese d\xEDa.")):null,__gh("div",{style:{display:"flex",flexWrap:"wrap",alignItems:"center",gap:"8px 16px",padding:"10px 16px 14px",borderTop:`1px solid ${HAIRLINE}`,fontSize:12,color:MUTED},"data-gufi-src":"portal/hostel.tsx:993"},agrupado?__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6,flexWrap:"wrap"},"data-gufi-src":"portal/hostel.tsx:995"},"Camas ocupadas de la habitaci\xF3n",[0,25,50,75,100].map(v=>__gh("span",{key:v,style:{width:16,height:11,borderRadius:3,background:fondoCelda(v)},"data-gufi-src":"portal/hostel.tsx:997"})),__gh("span",{style:{color:FAINT},"data-gufi-src":"portal/hostel.tsx:998"},"vac\xEDa \u2192 llena")):__gh(__gf,null,__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6},"data-gufi-src":"portal/hostel.tsx:1002"},__gh("span",{style:{width:12,height:12,borderRadius:3,background:fondoCelda(0)},"data-gufi-src":"portal/hostel.tsx:1002"}),"Libre"),__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6},"data-gufi-src":"portal/hostel.tsx:1003"},__gh("span",{style:{width:12,height:12,borderRadius:3,background:fondoCelda(100)},"data-gufi-src":"portal/hostel.tsx:1003"}),"Ocupada"),__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6},"data-gufi-src":"portal/hostel.tsx:1004"},__gh("span",{style:{width:12,height:12,borderRadius:3,background:BLOQUEADA},"data-gufi-src":"portal/hostel.tsx:1004"}),"Bloqueada")),__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6},"data-gufi-src":"portal/hostel.tsx:1007"},__gh("span",{style:{width:12,height:12,borderRadius:3,background:fondoCelda(null)},"data-gufi-src":"portal/hostel.tsx:1007"}),"Sin dato"))):__gh(Vacio2,{titulo:"No hay propiedades en esta selecci\xF3n"})):__gh(Tarjeta3,null,__gh(FilasCargando,{n:6})))}function Viajeros({vj,year}){if(vj.error)return null;if(!vj.datos)return __gh(Tarjeta3,null,__gh(FilasCargando,{n:8}));let viajeros=vj.datos.viajeros||[];return viajeros.length?__gh(ListaViajeros,{viajeros}):__gh(Tarjeta3,null,__gh(Vacio2,{titulo:`Ning\xFAn viajero en ${year}`,texto:"Aqu\xED salen las estancias confirmadas en cuanto entran por el channel manager."}))}function exportarViajeros(rows){let out=[["Entrada","Salida","Documento","Nombre","Ubicaci\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?paisEs(v.pais):"",v.huespedes==null?"":v.huespedes,v.unidad,v.confirmation_code||""])),downloadCSV("viajeros.csv",out)}function ListaViajeros({viajeros}){let[q,setQ]=(0,import_react40.useState)(""),[orden,setOrden]=(0,import_react40.useState)({k:"check_in",asc:!1}),[ver,setVer]=(0,import_react40.useState)(TANDA8),[abierta,setAbierta]=(0,import_react40.useState)(null),filas0=(0,import_react40.useMemo)(()=>viajeros.map(v=>{let u=unidadDe(v.propiedad_nickname),unidad=u==="\u2014"?"sin dato":u;return{...v,unidad,buscar:plano(`${v.nombre||""} ${v.documento||""} ${v.direccion||""} ${v.pais||""} ${paisEs(v.pais)} ${v.confirmation_code||""} ${unidad}`)}}),[viajeros]),conDocumento=(0,import_react40.useMemo)(()=>filas0.some(v=>v.documento),[filas0]),n=plano(q.trim()),filas=(0,import_react40.useMemo)(()=>n?filas0.filter(v=>v.buscar.includes(n)):filas0,[filas0,n]),acceso=(0,import_react40.useMemo)(()=>({check_in:v=>v.check_in||"",check_out:v=>v.check_out||"",documento:v=>v.documento||"",nombre:v=>v.nombre||"",direccion:v=>v.direccion||"",pais:v=>v.pais?paisEs(v.pais):"",huespedes:v=>v.huespedes!=null?Number(v.huespedes):null,unidad:v=>v.unidad,confirmation_code:v=>v.confirmation_code||""}),[]),sorted=(0,import_react40.useMemo)(()=>ordenar4(filas,orden,acceso),[filas,orden,acceso]);(0,import_react40.useEffect)(()=>{setVer(TANDA8)},[q,orden]);let visibles=sorted.slice(0,ver),pct=k=>filas0.length?filas0.filter(v=>v[k]).length/filas0.length*100:null,thp={orden,setOrden};return __gh(__gf,null,__gh("div",{className:"h-barra","data-gufi-src":"portal/hostel.tsx:1063"},__gh(Buscador2,{valor:q,onCambio:setQ,placeholder:"Buscar nombre, pa\xEDs, c\xF3digo o cama",ancho:300})),__gh(Grupo,{titulo:"Registro de viajeros",cuenta:filas.length,sub:filas0.length>=1e4?"Se ven las 10.000 estancias m\xE1s recientes del a\xF1o: elige una habitaci\xF3n arriba para verlo entero.":void 0,derecha:filas.length?__gh("button",{type:"button",className:"h-btn",onClick:()=>exportarViajeros(sorted),"data-gufi-src":"portal/hostel.tsx:1068"},__gh(import_lucide_react38.Download,{size:14}),"Excel"):null,pie:`Son datos personales: tr\xE1talos como tales. De estas ${numero(filas0.length)} estancias, ${porcentaje(pct("direccion"),0)} traen ubicaci\xF3n y ${porcentaje(pct("pais"),0)} pa\xEDs; ${conDocumento?`${porcentaje(pct("documento"),0)} el documento`:"el documento no llega desde Hostify"}. Ciudad y tel\xE9fono s\xF3lo llegan con el check-in online.`},filas.length?__gh(__gf,null,__gh("div",{className:"h-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/hostel.tsx:1072"},__gh("table",{className:"h-tabla","data-gufi-src":"portal/hostel.tsx:1073"},__gh("thead",{"data-gufi-src":"portal/hostel.tsx:1074"},__gh("tr",{"data-gufi-src":"portal/hostel.tsx:1074"},__gh(Th,{k:"check_in",t:"Check-in",...thp}),__gh(Th,{k:"check_out",t:"Check-out",...thp}),conDocumento?__gh(Th,{k:"documento",t:"Documento",texto:!0,...thp}):null,__gh(Th,{k:"nombre",t:"Nombre",texto:!0,...thp}),__gh(Th,{k:"direccion",t:"Ubicaci\xF3n",texto:!0,...thp}),__gh(Th,{k:"pais",t:"Pa\xEDs",texto:!0,...thp}),__gh(Th,{k:"huespedes",t:"Hu\xE9spedes",r:!0,...thp}),__gh(Th,{k:"unidad",t:"Propiedad",texto:!0,...thp}),__gh(Th,{k:"confirmation_code",t:"C\xF3d.",texto:!0,...thp}))),__gh("tbody",{"data-gufi-src":"portal/hostel.tsx:1085"},visibles.map(v=>__gh("tr",{key:v.id,"data-gufi-src":"portal/hostel.tsx:1087"},__gh("td",{title:diaLargo2(v.check_in),style:{fontWeight:500},"data-gufi-src":"portal/hostel.tsx:1088"},diaCorto3(v.check_in)),__gh("td",{title:diaLargo2(v.check_out),"data-gufi-src":"portal/hostel.tsx:1089"},diaCorto3(v.check_out)),conDocumento?__gh("td",{"data-gufi-src":"portal/hostel.tsx:1090"},v.documento||__gh(Sin,null)):null,__gh("td",{style:{whiteSpace:"normal",minWidth:150},"data-gufi-src":"portal/hostel.tsx:1091"},v.nombre||__gh(Sin,null)),__gh("td",{style:{whiteSpace:"normal",minWidth:200},"data-gufi-src":"portal/hostel.tsx:1092"},v.direccion||__gh(Sin,null)),__gh("td",{"data-gufi-src":"portal/hostel.tsx:1093"},v.pais?paisEs(v.pais):__gh(Sin,null)),__gh("td",{"data-r":"1","data-gufi-src":"portal/hostel.tsx:1094"},v.huespedes==null?__gh(Sin,null):numero(v.huespedes)),__gh("td",{"data-gufi-src":"portal/hostel.tsx:1095"},v.unidad),__gh("td",{style:{color:MUTED},"data-gufi-src":"portal/hostel.tsx:1096"},v.confirmation_code||__gh(Sin,null))))))),__gh("div",{className:"h-movil","data-gufi-src":"portal/hostel.tsx:1102"},visibles.map((v,i)=>{let abre=abierta===v.id;return __gh(import_react40.default.Fragment,{key:v.id},__gh(Fila2,{primera:i===0,elegida:abre,onClick:()=>setAbierta(abre?null:v.id),titulo:v.nombre||"sin dato",sub:`${v.unidad} \xB7 ${diaCorto3(v.check_in)} \u2192 ${diaCorto3(v.check_out)}`,valor:v.pais?paisEs(v.pais):"sin dato",valorSub:v.huespedes==null?void 0:plural5(Number(v.huespedes),"hu\xE9sped","hu\xE9spedes")}),abre?__gh("div",{className:"h-abre",style:{borderTop:`1px solid ${HAIRLINE}`,background:"#fbfbfd",padding:"6px 16px 12px"},"data-gufi-src":"portal/hostel.tsx:1111"},__gh(Par,{k:"Ubicaci\xF3n",v:v.direccion||__gh(Sin,null)}),conDocumento?__gh(Par,{k:"Documento",v:v.documento||__gh(Sin,null)}):null,__gh(Par,{k:"C\xF3digo",v:v.confirmation_code||__gh(Sin,null)})):null)})),__gh(FilaMas,{quedan:sorted.length-ver,tanda:TANDA8,onClick:()=>setVer(ver+TANDA8)})):__gh(Vacio2,{titulo:"Ning\xFAn viajero coincide",texto:`Nada con \xAB${q}\xBB.`})))}var import_react41=__toESM(require("react")),import_lucide_react39=require("lucide-react");var TANDA9=25,cuando2=s=>s?`${fmtLarga(s)} \xB7 ${s.slice(11,16)}`:null,norm4=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),plural6=(n,uno,varios)=>`${numero(n)} ${n===1?uno:varios}`;function Accion({children,onClick,pide,cargando,deshabilitado,peligro}){let lleno=pide?peligro?INK:ACCENT:null;return __gh("button",{type:"button",disabled:deshabilitado,onClick:e=>{e.stopPropagation(),onClick()},style:{display:"inline-flex",alignItems:"center",justifyContent:"center",gap:6,height:30,padding:"0 11px",borderRadius:8,border:"none",background:lleno||FILL,color:lleno?"#fff":ACCENT,fontSize:12.5,fontWeight:600,fontFamily:"inherit",cursor:deshabilitado?"default":"pointer",opacity:deshabilitado&&!cargando?.5:1,whiteSpace:"nowrap",transition:"background .2s, color .2s"},"data-gufi-src":"portal/cuentas.tsx:35"},cargando?__gh(import_lucide_react39.Loader2,{size:13,className:"animate-spin"}):pide?"\xBFSeguro? Pulsa otra vez":children)}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:6},"data-gufi-src":"portal/cuentas.tsx:53"},__gh(Accion,{onClick:copiar},estado==="ok"?__gh(__gf,null,__gh(import_lucide_react39.Check,{size:13}),"Copiado"):__gh(__gf,null,__gh(import_lucide_react39.Copy,{size:13}),etiqueta4)),estado&&estado!=="ok"?__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7,fontSize:12.5,color:INK_2},"data-gufi-src":"portal/cuentas.tsx:55"},__gh(Punto2,{tono:"mal"}),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",mensaje4=`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:68"},__gh("div",{style:{fontSize:12,color:MUTED},"data-gufi-src":"portal/cuentas.tsx:69"},"Usuario"),__gh("div",{style:{fontSize:15,fontWeight:600,color:INK,marginTop:2,wordBreak:"break-all"},"data-gufi-src":"portal/cuentas.tsx:70"},r.email),__gh("div",{style:{fontSize:12,color:MUTED,marginTop:12},"data-gufi-src":"portal/cuentas.tsx:71"},"Contrase\xF1a"),__gh("div",{style:{fontSize:24,fontWeight:600,letterSpacing:".02em",color:INK,marginTop:2,userSelect:"all",fontVariantNumeric:"tabular-nums",wordBreak:"break-all"},"data-gufi-src":"portal/cuentas.tsx:72"},r.password),__gh("div",{style:{marginTop:12},"data-gufi-src":"portal/cuentas.tsx:73"},__gh(Copiar2,{texto:r.password,etiqueta:"Copiar contrase\xF1a"}))),__gh("div",{style:{display:"flex",alignItems:"flex-start",gap:9,fontSize:13,color:INK_2,lineHeight:1.5,marginTop:14},"data-gufi-src":"portal/cuentas.tsx:75"},__gh("span",{style:{marginTop:6,display:"flex"},"data-gufi-src":"portal/cuentas.tsx:76"},__gh(Punto2,{tono:"aviso"})),__gh("span",{"data-gufi-src":"portal/cuentas.tsx:77"},"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 ${numero(r.sesiones_cerradas)} sesi\xF3n${r.sesiones_cerradas===1?"":"es"} abierta${r.sesiones_cerradas===1?"":"s"} de esta cuenta.`:"")),__gh("div",{style:{fontSize:13.5,fontWeight:600,color:INK,margin:"22px 0 8px"},"data-gufi-src":"portal/cuentas.tsx:82"},"Mensaje para mandar"),__gh("pre",{style:{whiteSpace:"pre-wrap",fontFamily:"inherit",fontSize:13.5,lineHeight:1.55,color:INK,background:"#fff",border:`1px solid ${HAIRLINE}`,borderRadius:12,padding:"12px 14px",margin:0,userSelect:"all"},"data-gufi-src":"portal/cuentas.tsx:83"},mensaje4),__gh("div",{style:{marginTop:10},"data-gufi-src":"portal/cuentas.tsx:84"},__gh(Copiar2,{texto:mensaje4,etiqueta:"Copiar mensaje"})))}function Acciones2({c,ocupado,confirmar,hacer,izquierda}){let k=accion=>`${accion}:${c.id}`,props=accion=>({onClick:()=>hacer(c,accion),pide:confirmar===k(accion),cargando:ocupado===k(accion),deshabilitado:!!ocupado});return __gh("span",{style:{display:"inline-flex",gap:6,flexWrap:"wrap",justifyContent:izquierda?"flex-start":"flex-end"},"data-gufi-src":"portal/cuentas.tsx:95"},!c.maestro&&c.activo?__gh(Accion,{...props("ver_como")},__gh(import_lucide_react39.Eye,{size:13}),"Ver como"):null,__gh(Accion,{...props("nueva_clave")},__gh(import_lucide_react39.KeyRound,{size:13}),"Contrase\xF1a nueva"),c.maestro?null:__gh(Accion,{...props("activar"),peligro:c.activo},c.activo?"Desactivar":"Activar"))}function Estado3({c}){return __gh("span",{style:{display:"inline-flex",alignItems:"center",gap:7,flexWrap:"wrap",color:c.activo?INK_2:MUTED},"data-gufi-src":"portal/cuentas.tsx:106"},c.activo?null:__gh(Punto2,{tono:"mudo"}),c.activo?"Activa":"Desactivada",c.maestro?__gh("span",{style:{color:INK_2},"data-gufi-src":"portal/cuentas.tsx:109"},"\xB7 Maestra"):null,c.sesiones?__gh("span",{style:{fontSize:12,color:MUTED},"data-gufi-src":"portal/cuentas.tsx:110"},"\xB7 ",plural6(c.sesiones,"sesi\xF3n abierta","sesiones abiertas")):null)}var pisosDe=c=>(c.establecimientos||[]).length?c.establecimientos.join(", "):c.anuncios!==c.pisos?plural6(c.anuncios,"anuncio","anuncios"):null,CSS6=` .cu-barra { display: flex; align-items: center; gap: 10px; flex-wrap: wrap; } .cu-busca { margin-left: auto; } .cu-tabla { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; } .cu-tabla th { font-size: 12px; font-weight: 500; color: ${MUTED}; text-align: left; padding: 12px 16px 8px; white-space: nowrap; user-select: none; } .cu-tabla th[data-r], .cu-tabla td[data-r] { text-align: right; } .cu-tabla td { font-size: 13.5px; color: ${INK}; text-align: left; padding: 9px 16px; height: 52px; border-top: 1px solid ${HAIRLINE}; vertical-align: middle; } .cu-tabla th[data-sort] { cursor: pointer; } .cu-tabla th[data-sort]:hover, .cu-tabla th[data-on="1"] { color: ${INK}; } .cu-tabla tbody tr:hover td { background: #fafafc; } .cu-movil { display: none; } @media (max-width: 900px) { .cu-escritorio { display: none; } .cu-movil { display: block; } .cu-busca { margin-left: 0; width: 100%; } } `;function Cuentas({api,token,verComo}){let[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)(""),[clave2,setClave]=(0,import_react41.useState)(null),[abierta,setAbierta]=(0,import_react41.useState)(null),[ver,setVer]=(0,import_react41.useState)(TANDA9),[verSin,setVerSin]=(0,import_react41.useState)(5),{orden,th,flecha:flecha3}=useOrden(null),datos=f.datos,cuentas=datos&&datos.cuentas||[],sinCuentaTodas=datos&&datos.sin_cuenta||[],enFiltro=(c,k)=>k==="todas"||k==="entrado"&&c.ultimo_login||k==="nunca"&&!c.ultimo_login&&c.activo||k==="desactivadas"&&!c.activo,filas=(0,import_react41.useMemo)(()=>{let n=norm4(q),vis=cuentas.filter(c=>enFiltro(c,filtro)&&(!n||norm4(`${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]),sinCuenta=(0,import_react41.useMemo)(()=>{if(filtro!=="todas")return[];let n=norm4(q);return n?sinCuentaTodas.filter(c=>norm4(`${c.nombre} ${c.email} ${(c.fichas||[]).join(" ")}`).includes(n)):sinCuentaTodas},[sinCuentaTodas,q,filtro]);(0,import_react41.useEffect)(()=>{setVer(TANDA9),setVerSin(5)},[q,filtro,orden]);let 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(Aviso2,{titulo:"No se han podido cargar las cuentas",texto:f.error});if(f.cargando&&!datos)return __gh(Tarjeta3,null,__gh(FilasCargando,{n:8}));let entraron=cuentas.filter(c=>c.ultimo_login).length,activas=cuentas.filter(c=>c.activo).length,nunca=cuentas.filter(c=>!c.ultimo_login&&c.activo).length,desactivadas=cuentas.length-activas,visibles=filas.slice(0,ver);return __gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/cuentas.tsx:186"},__gh("style",{"data-gufi-src":"portal/cuentas.tsx:187"},CSS6),__gh("div",{style:{padding:"0 4px"},"data-gufi-src":"portal/cuentas.tsx:188"},__gh("h2",{style:{fontSize:22,fontWeight:650,letterSpacing:"-0.5px",color:INK,margin:0},"data-gufi-src":"portal/cuentas.tsx:189"},"Cuentas del portal"),__gh("p",{style:{fontSize:13,color:MUTED,margin:"3px 0 0",lineHeight:1.5},"data-gufi-src":"portal/cuentas.tsx:190"},"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.")),__gh(Cifras2,null,__gh(Cifra2,{etiqueta:"Cuentas",valor:numero(cuentas.length),sub:"una por correo de propietario"}),__gh(Cifra2,{etiqueta:"Han entrado",valor:numero(entraron),sub:activas?`alguna vez: ${porcentaje(entraron/activas*100,0)} de las activas`:"alguna vez"}),__gh(Cifra2,{etiqueta:"Nunca han entrado",valor:numero(nunca),sub:"activas y sin estrenar"}),__gh(Cifra2,{etiqueta:"Sin cuenta todav\xEDa",valor:numero(sinCuentaTodas.length),tono:sinCuentaTodas.length?"aviso":void 0,sub:datos&&datos.anuncios_sin_correo?`y ${plural6(datos.anuncios_sin_correo,"anuncio","anuncios")} sin correo de propietario en su ficha`:"correos en las fichas de los pisos"})),__gh("div",{className:"cu-barra","data-gufi-src":"portal/cuentas.tsx:203"},__gh(Segmentado,{id:"cu-filtro",valor:filtro,onCambio:setFiltro,opciones:[{v:"todas",t:"Todas",n:cuentas.length},{v:"entrado",t:"Han entrado",n:entraron},{v:"nunca",t:"Nunca",n:nunca},{v:"desactivadas",t:"Desactivadas",n:desactivadas}]}),__gh("span",{className:"cu-busca","data-gufi-src":"portal/cuentas.tsx:208"},__gh(Buscador2,{valor:q,onCambio:setQ,placeholder:"Buscar propietario, correo o establecimiento",ancho:340}))),error?__gh(Aviso2,{titulo:"No se ha podido hacer",texto:error}):null,sinCuenta.length?__gh(Grupo,{titulo:"Sin cuenta todav\xEDa",cuenta:sinCuenta.length,sub:"Su correo est\xE1 en la ficha de alg\xFAn piso, pero no pueden entrar hasta que se les cree la cuenta"},sinCuenta.slice(0,verSin).map((c,i)=>__gh(Fila2,{key:c.email,primera:i===0,titulo:c.nombre||c.email,sub:`${c.nombre?`${c.email} \xB7 `:""}${(c.fichas||[]).join(", ")}`,valor:__gh(Accion,{onClick:()=>hacer({id:c.email,email:c.email,nombre:c.nombre},"crear"),cargando:ocupado===`crear:${c.email}`,deshabilitado:!!ocupado},__gh(import_lucide_react39.KeyRound,{size:13}),"Crear cuenta")})),__gh(FilaMas,{quedan:sinCuenta.length-verSin,tanda:10,onClick:()=>setVerSin(verSin+10)})):null,__gh(Grupo,{titulo:"Cuentas",cuenta:filas.length},filas.length?__gh(__gf,null,__gh("div",{className:"cu-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/cuentas.tsx:227"},__gh("table",{className:"cu-tabla","data-gufi-src":"portal/cuentas.tsx:228"},__gh("thead",{"data-gufi-src":"portal/cuentas.tsx:229"},__gh("tr",{"data-gufi-src":"portal/cuentas.tsx:229"},__gh("th",{...th("nombre"),"data-on":orden&&orden.k==="nombre"?"1":"0","data-gufi-src":"portal/cuentas.tsx:230"},"Propietario",flecha3("nombre")),__gh("th",{"data-r":"1",...th("pisos"),"data-on":orden&&orden.k==="pisos"?"1":"0","data-gufi-src":"portal/cuentas.tsx:231"},"Pisos",flecha3("pisos")),__gh("th",{...th("acceso"),"data-on":orden&&orden.k==="acceso"?"1":"0","data-gufi-src":"portal/cuentas.tsx:232"},"\xDAltimo acceso",flecha3("acceso")),__gh("th",{"data-gufi-src":"portal/cuentas.tsx:233"},"Estado"),__gh("th",{"data-r":"1","data-gufi-src":"portal/cuentas.tsx:234"}))),__gh("tbody",{"data-gufi-src":"portal/cuentas.tsx:236"},visibles.map(c=>__gh("tr",{key:c.id,"data-gufi-src":"portal/cuentas.tsx:238"},__gh("td",{style:{maxWidth:340},"data-gufi-src":"portal/cuentas.tsx:239"},__gh("div",{style:{fontWeight:500,color:c.activo?INK:MUTED,overflowWrap:"anywhere"},"data-gufi-src":"portal/cuentas.tsx:240"},c.nombre||c.email),c.nombre?__gh("div",{style:{fontSize:12,color:MUTED,overflowWrap:"anywhere"},"data-gufi-src":"portal/cuentas.tsx:241"},c.email):null),__gh("td",{"data-r":"1",style:{maxWidth:220},"data-gufi-src":"portal/cuentas.tsx:243"},__gh("div",{"data-gufi-src":"portal/cuentas.tsx:244"},numero(c.pisos)),pisosDe(c)?__gh("div",{style:{fontSize:12,color:FAINT,whiteSpace:"normal"},"data-gufi-src":"portal/cuentas.tsx:245"},pisosDe(c)):null),__gh("td",{style:{color:c.ultimo_login?INK:FAINT,whiteSpace:"nowrap"},"data-gufi-src":"portal/cuentas.tsx:247"},cuando2(c.ultimo_login)||"Nunca"),__gh("td",{"data-gufi-src":"portal/cuentas.tsx:248"},__gh(Estado3,{c})),__gh("td",{"data-r":"1","data-gufi-src":"portal/cuentas.tsx:249"},__gh(Acciones2,{c,ocupado,confirmar,hacer}))))))),__gh("div",{className:"cu-movil","data-gufi-src":"portal/cuentas.tsx:255"},visibles.map((c,i)=>{let on=abierta===c.id;return __gh(import_react41.default.Fragment,{key:c.id},__gh(Fila2,{primera:i===0,elegida:on,onClick:()=>setAbierta(on?null:c.id),lead:c.activo?void 0:__gh(Punto2,{tono:"mudo"}),titulo:c.nombre||c.email,sub:`${c.ultimo_login?`Entr\xF3 el ${cuando2(c.ultimo_login)}`:"Nunca ha entrado"}${c.activo?"":" \xB7 desactivada"}${c.maestro?" \xB7 maestra":""}`,valor:plural6(c.pisos,"piso","pisos")}),on?__gh("div",{style:{padding:"2px 16px 14px",background:"rgba(99,91,255,0.05)"},"data-gufi-src":"portal/cuentas.tsx:266"},c.nombre?__gh("div",{style:{fontSize:12.5,color:MUTED,overflowWrap:"anywhere"},"data-gufi-src":"portal/cuentas.tsx:267"},c.email):null,pisosDe(c)?__gh("div",{style:{fontSize:12.5,color:MUTED,marginTop:2},"data-gufi-src":"portal/cuentas.tsx:268"},pisosDe(c)):null,__gh("div",{style:{fontSize:12.5,marginTop:4},"data-gufi-src":"portal/cuentas.tsx:269"},__gh(Estado3,{c})),__gh("div",{style:{marginTop:10,display:"flex"},"data-gufi-src":"portal/cuentas.tsx:270"},__gh(Acciones2,{c,ocupado,confirmar,hacer,izquierda:!0}))):null)})),__gh(FilaMas,{quedan:filas.length-ver,tanda:TANDA9,onClick:()=>setVer(ver+TANDA9)})):__gh(Vacio2,{titulo:"Ninguna cuenta coincide",texto:"Prueba con otro nombre o quita el filtro."})),clave2?__gh(ClaveNueva,{r:clave2,portal:datos&&datos.portal,onClose:()=>{setClave(null),setRecarga(n=>n+1)}}):null)}var import_react42=__toESM(require("react")),import_recharts8=require("recharts"),import_lucide_react40=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"],TANDA10=20,BARRA="#dedee3",BARRA_ON="#b9b5ff",BARRA_OFF="#ececf0",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)},mayus7=s=>s.charAt(0).toUpperCase()+s.slice(1);function rango2(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);return mayus7(`${DIA2[x.getUTCDay()]} ${x.getUTCDate()} de ${MES2[x.getUTCMonth()]}`)+(v.hora?`, ${v.hora}`:"")},precioDe=p=>[p.precio_venta?euros2(p.precio_venta):null,p.precio_alquiler?`${euros2(p.precio_alquiler)} al mes`:null].filter(Boolean).join(" \xB7 "),sumar2=(ss,k)=>ss.reduce((a,s)=>a+s[k],0),plural7=(n,uno,varios)=>`${numero(n)} ${n===1?uno:varios}`;function textoVisita(v){let cab=[v.estado==="Realizada"?null:String(v.estado||"").toLowerCase(),v.interes?`inter\xE9s ${String(v.interes).toLowerCase()}`:null].filter(Boolean).join(", ");return v.comentario?cab?`${mayus7(cab)}. ${v.comentario}`:v.comentario:cab?mayus7(cab):v.estado==="Realizada"?"Hecha, sin comentario":"Sin comentario"}function porSemana(pisos,semanas){return semanas.map((s,k)=>{let o={desde:s.desde,contactos:0,idealista:0,web:0,visitas:0,hechas:0};return pisos.forEach(p=>{let x=p.semanas[k];o.contactos+=x.contactos,o.idealista+=x.idealista,o.web+=x.web,o.visitas+=x.visitas,o.hechas+=x.hechas}),o})}var CSS7=` .com-cab { display: flex; align-items: flex-end; gap: 12px; flex-wrap: wrap; padding: 0 4px; } .com-dos { display: grid; grid-template-columns: minmax(0, 1.35fr) minmax(0, 1fr); gap: 18px; align-items: stretch; } @media (max-width: 1100px) { .com-dos { grid-template-columns: minmax(0, 1fr); } } .com-det { display: grid; grid-template-columns: minmax(0, 1.2fr) minmax(0, 1fr); gap: 20px; padding: 12px 16px 16px; } @media (max-width: 760px) { .com-det { grid-template-columns: minmax(0, 1fr); } } .com-tabla { width: 100%; border-collapse: collapse; font-variant-numeric: tabular-nums; } .com-tabla th { font-size: 12px; font-weight: 500; color: ${MUTED}; text-align: right; padding: 12px 16px 8px; white-space: nowrap; } .com-tabla th:first-child, .com-tabla td:first-child, .com-tabla th[data-izq], .com-tabla td[data-izq] { text-align: left; } .com-tabla td { font-size: 13.5px; color: ${INK}; text-align: right; padding: 8px 16px; height: 50px; border-top: 1px solid ${HAIRLINE}; } .com-tabla th[data-orden] { cursor: pointer; } .com-tabla th[data-orden]:hover, .com-tabla th[data-on="1"] { color: ${INK}; } .com-tabla tbody tr[data-toca] { cursor: pointer; } .com-tabla tbody tr[data-toca]:hover td { background: #fafafc; } .com-tabla tbody tr[data-on="1"] td { background: rgba(99,91,255,0.05); } .com-tabla td.com-abierto { padding: 0; height: auto; text-align: left; background: rgba(99,91,255,0.025); } .com-graf .recharts-area { pointer-events: none; } .com-movil { display: none; } @media (max-width: 760px) { .com-escritorio { display: none; } .com-movil { display: block; } } `;function Comercial({api,token,maestro}){let f=useScript(api,"portal_comercial",{token},!0);return f.error?__gh(Aviso2,{titulo:"No se ha podido cargar c\xF3mo van tus pisos",texto:f.error}):f.cargando||!f.datos?__gh(Tarjeta3,null,__gh(FilasCargando,{n:6})):f.datos.pisos.length?__gh(Panel4,{d:f.datos,maestro}):__gh(Tarjeta3,null,__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.`}))}function Panel4({d:datos,maestro}){let semanas=datos.semanas,todos=datos.pisos,ultima=semanas[semanas.length-1].desde,[negocio,setNegocio]=(0,import_react42.useState)(""),[semSel,setSemSel]=(0,import_react42.useState)(null),elegir=s=>setSemSel(x=>x===s||s===ultima?null:s),pisos=(0,import_react42.useMemo)(()=>negocio?todos.filter(p=>p.negocio===negocio):todos,[todos,negocio]),serie=(0,import_react42.useMemo)(()=>porSemana(pisos,semanas),[pisos,semanas]),k=semSel?semanas.findIndex(s=>s.desde===semSel):semanas.length-1,sem=serie[k],total=c=>sumar2(serie,c),n=semanas.length,cuantos=x=>todos.filter(p=>p.negocio===x).length,tipos=["venta","alquiler","ambas"].filter(x=>cuantos(x)),reparto=tipos.map(x=>`${numero(cuantos(x))} ${NEGOCIO[x].toLowerCase()}`).join(", "),unico=todos.length===1?todos[0]:null,esta=!semSel;return __gh("div",{style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr)",gap:18},"data-gufi-src":"portal/comercial.tsx:118"},__gh("style",{"data-gufi-src":"portal/comercial.tsx:119"},CSS7),__gh("div",{className:"com-cab","data-gufi-src":"portal/comercial.tsx:120"},__gh("div",{style:{minWidth:0},"data-gufi-src":"portal/comercial.tsx:121"},__gh("h2",{style:{fontSize:22,fontWeight:650,letterSpacing:"-0.5px",color:INK,margin:0},"data-gufi-src":"portal/comercial.tsx:122"},esta?"Esta semana":mayus7(rango2(semSel))),__gh("p",{style:{fontSize:13,color:MUTED,margin:"3px 0 0",lineHeight:1.45},"data-gufi-src":"portal/comercial.tsx:123"},esta?`${mayus7(rango2(ultima))} \xB7 `:null,unico?`Tu piso, ${NEGOCIO[unico.negocio].toLowerCase()}${precioDe(unico)?` por ${precioDe(unico)}`:""}`:`${numero(todos.length)} pisos: ${reparto}`,esta?null:__gh(__gf,null," \xB7 ",__gh("button",{type:"button",onClick:()=>setSemSel(null),style:{border:"none",background:"transparent",padding:0,color:ACCENT,fontSize:13,cursor:"pointer",fontFamily:"inherit"},"data-gufi-src":"portal/comercial.tsx:126"},"Volver a esta semana"))),unico?__gh("div",{style:{marginTop:6},"data-gufi-src":"portal/comercial.tsx:128"},__gh(Anuncios,{p:unico})):null),tipos.length>1?__gh("span",{style:{marginLeft:"auto",maxWidth:"100%"},"data-gufi-src":"portal/comercial.tsx:131"},__gh(Segmentado,{id:"com-negocio",valor:negocio,onCambio:setNegocio,opciones:[{v:"",t:"Todos",n:todos.length}].concat(tipos.map(x=>({v:x,t:x==="ambas"?"Los dos":NEGOCIO[x],n:cuantos(x)})))})):null),__gh(Cifras2,null,__gh(Cifra2,{etiqueta:esta?"Han preguntado esta semana":"Han preguntado esa semana",valor:numero(sem.contactos),sub:sem.contactos?[sem.idealista?`${numero(sem.idealista)} por idealista`:null,sem.web?`${numero(sem.web)} por la web`:null].filter(Boolean).join(" \xB7 "):esta?"nadie todav\xEDa":"nadie"}),__gh(Cifra2,{etiqueta:esta?"Visitas esta semana":"Visitas esa semana",valor:numero(sem.visitas),sub:sem.visitas?plural7(sem.hechas,"hecha","hechas"):"ninguna"}),__gh(Cifra2,{etiqueta:`Contactos en ${n} semanas`,valor:numero(total("contactos")),sub:`${numero(total("idealista"))} por idealista \xB7 ${numero(total("web"))} por la web`}),__gh(Cifra2,{etiqueta:`Visitas en ${n} semanas`,valor:numero(total("visitas")),sub:total("visitas")?`${plural7(total("hechas"),"hecha","hechas")}, el resto previstas`:"ninguna, ni hecha ni prevista"})),__gh("div",{className:"com-dos","data-gufi-src":"portal/comercial.tsx:146"},__gh(Grupo,{titulo:"Semana a semana",sub:"Quien pregunta, en la curva; las visitas, en barras. Pulsa una semana para verla",llena:!0},__gh("div",{style:{padding:"14px 18px 0"},"data-gufi-src":"portal/comercial.tsx:148"},__gh(Leyenda,{series:[{color:SERIE,texto:"Han preguntado"},{color:BARRA,texto:"Visitas"}]})),__gh("div",{className:"com-graf",style:{flex:1,minHeight:230,padding:"6px 6px 8px 0"},"data-gufi-src":"portal/comercial.tsx:151"},__gh(GraficaSemanas,{id:"todo",serie,semSel,elegir,ultima}))),__gh(Visitas,{pisos,semSel,n,varios:pisos.length>1})),unico?null:__gh(Pisos,{pisos,semanas,k,esta,semSel,elegir,ultima,maestro}),__gh("p",{style:{fontSize:12,color:MUTED,margin:"0 4px",lineHeight:1.5},"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. Las semanas van de lunes a domingo."))}function Anuncios({p}){let idea=p.anunciado.idealista;return!p.anunciado.web&&!idea.length?__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:6,fontSize:12.5,color:MUTED},"data-gufi-src":"portal/comercial.tsx:171"},__gh(Punto2,{tono:"mudo"}),"Sin anunciar ahora mismo"):__gh("span",{style:{display:"inline-flex",alignItems:"center",gap:12,flexWrap:"wrap",fontSize:12.5},"data-gufi-src":"portal/comercial.tsx:173"},idea.map(a=>__gh("a",{key:a.url,href:a.url,target:"_blank",rel:"noreferrer",onClick:e=>e.stopPropagation(),style:{display:"inline-flex",alignItems:"center",gap:3,color:ACCENT,textDecoration:"none",fontWeight:500},"data-gufi-src":"portal/comercial.tsx:175"},"idealista",idea.length>1?` \xB7 ${a.operacion}`:"",__gh(import_lucide_react40.ArrowUpRight,{size:12}))),p.anunciado.web?__gh("span",{style:{color:INK_2},"data-gufi-src":"portal/comercial.tsx:180"},"En nuestra web"):null)}function GraficaSemanas({id,serie,semSel,elegir,ultima}){let ticks=marcas(Math.max(3,...serie.map(s=>Math.max(s.contactos,s.visitas)))),tope=ticks[ticks.length-1],datos=serie.map(s=>({...s,hueco:tope-s.visitas})),clic=b=>{let x=b&&(b.desde||b.payload&&b.payload.desde);x&&elegir(x)},gid=`com-g-${id}`;return __gh(import_recharts8.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts8.ComposedChart,{data:datos,margin:MARGEN},__gh("defs",{"data-gufi-src":"portal/comercial.tsx:196"},degradado(gid,SERIE,.24,0)),__gh(import_recharts8.CartesianGrid,{...REJILLA}),__gh(import_recharts8.XAxis,{dataKey:"desde",...EJE,tickFormatter:x=>x===ultima?"Esta":corto(x)}),__gh(import_recharts8.YAxis,{...EJE,width:34,allowDecimals:!1,domain:[0,tope],ticks,tickFormatter:x=>numero(x)}),__gh(import_recharts8.Tooltip,{cursor:CURSOR,content:__gh(Globo,{titulo:p=>mayus7(rango2(p.desde)),filas:p=>[{color:SERIE,texto:"Han preguntado",valor:numero(p.contactos)},{color:"transparent",texto:"por idealista",valor:numero(p.idealista)},{color:"transparent",texto:"por la web",valor:numero(p.web)},{color:BARRA,texto:"Visitas",valor:p.visitas?`${numero(p.visitas)} \xB7 ${numero(p.hechas)} hechas`:"0"}]})}),__gh(import_recharts8.Bar,{dataKey:"visitas",stackId:"s",maxBarSize:34,radius:[4,4,0,0],animationDuration:600,style:{cursor:"pointer"},onClick:clic},datos.map(s=>__gh(import_recharts8.Cell,{key:s.desde,fill:semSel===s.desde?BARRA_ON:semSel?BARRA_OFF:BARRA}))),__gh(import_recharts8.Bar,{dataKey:"hueco",stackId:"s",maxBarSize:34,isAnimationActive:!1,style:{cursor:"pointer"},onClick:clic},datos.map(s=>__gh(import_recharts8.Cell,{key:s.desde,fill:semSel===s.desde?"rgba(99,91,255,0.07)":"transparent"}))),__gh(import_recharts8.Area,{type:"monotone",dataKey:"contactos",stroke:SERIE,strokeWidth:2.25,fill:`url(#${gid})`,dot:!1,activeDot:PUNTO_ACTIVO(SERIE),animationDuration:700})))}function Visita({v,varios,primera}){return __gh("div",{style:{padding:"10px 16px",borderTop:primera?"none":`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/comercial.tsx:221"},__gh("div",{style:{display:"flex",alignItems:"baseline",gap:12},"data-gufi-src":"portal/comercial.tsx:222"},__gh("span",{style:{flex:1,minWidth:0,fontSize:13.5,fontWeight:500,color:INK,overflowWrap:"anywhere"},"data-gufi-src":"portal/comercial.tsx:223"},varios?v.piso:diaVisita(v)),varios?__gh("span",{style:{fontSize:12,color:MUTED,flexShrink:0,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"portal/comercial.tsx:224"},corto(v.dia),v.hora?`, ${v.hora}`:""):null),__gh("div",{style:{fontSize:12.5,color:INK_2,marginTop:2,lineHeight:1.45},"data-gufi-src":"portal/comercial.tsx:226"},textoVisita(v)))}function Visitas({pisos,semSel,n,varios}){let[ver,setVer]=(0,import_react42.useState)(6);(0,import_react42.useEffect)(()=>{setVer(6)},[semSel,pisos]);let lista=(0,import_react42.useMemo)(()=>{let todas=pisos.flatMap(p=>p.visitas.map(v=>({...v,piso:p.nombre,pid:p.id}))),fin=semSel?masDias(semSel,7):null;return todas.filter(v=>!semSel||v.dia>=semSel&&v.diaa.dia+(a.hora||"")__gh(Visita,{key:`${v.pid}-${v.dia}-${v.hora}-${i}`,v,varios,primera:i===0})),__gh(FilaMas,{quedan:lista.length-ver,tanda:6,onClick:()=>setVer(ver+6)})):__gh(Vacio2,{titulo:semSel?"Ninguna visita esa semana":`Ninguna visita en las \xFAltimas ${n} semanas`,texto:"Aqu\xED salen en cuanto se apunta una, hecha o prevista."}))}function Tendencia({semanas}){let datos=semanas.map((s,i)=>({i,v:s.contactos})),nada=!datos.some(x=>x.v);return __gh("div",{style:{width:84,height:26,display:"inline-block",verticalAlign:"middle"},"aria-hidden":!0,"data-gufi-src":"portal/comercial.tsx:257"},__gh(import_recharts8.ResponsiveContainer,{width:"100%",height:"100%"},__gh(import_recharts8.AreaChart,{data:datos,margin:{top:3,right:2,bottom:2,left:2}},__gh(import_recharts8.YAxis,{hide:!0,domain:[0,Math.max(1,...datos.map(x=>x.v))]}),__gh(import_recharts8.Area,{type:"monotone",dataKey:"v",stroke:nada?SERIE_GRIS:SERIE,strokeWidth:1.75,fill:nada?"transparent":"rgba(99,91,255,0.10)",dot:!1,activeDot:!1,isAnimationActive:!1}))))}function DetallePiso({p,semanas,semSel,elegir,ultima}){let serie=porSemana([p],semanas);return __gh("div",{className:"com-det","data-gufi-src":"portal/comercial.tsx:272"},__gh("div",{style:{minWidth:0},"data-gufi-src":"portal/comercial.tsx:273"},__gh("div",{style:{display:"flex",alignItems:"center",gap:12,flexWrap:"wrap",marginBottom:6},"data-gufi-src":"portal/comercial.tsx:274"},__gh("span",{style:{fontSize:12.5,color:MUTED},"data-gufi-src":"portal/comercial.tsx:275"},NEGOCIO[p.negocio],precioDe(p)?` por ${precioDe(p)}`:""),__gh(Anuncios,{p})),__gh("div",{className:"com-graf",style:{height:160},"data-gufi-src":"portal/comercial.tsx:278"},__gh(GraficaSemanas,{id:`p${p.id}`,serie,semSel,elegir,ultima}))),__gh("div",{style:{minWidth:0},"data-gufi-src":"portal/comercial.tsx:282"},__gh("div",{style:{fontSize:12.5,color:MUTED,marginBottom:4},"data-gufi-src":"portal/comercial.tsx:283"},"Visitas en ",semanas.length," semanas"),p.visitas.length?__gh("div",{style:{background:"#fff",borderRadius:12,border:`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/comercial.tsx:285"},p.visitas.map((v,i)=>__gh(Visita,{key:i,v,varios:!1,primera:i===0}))):__gh("div",{style:{fontSize:13,color:FAINT,padding:"6px 0"},"data-gufi-src":"portal/comercial.tsx:288"},"Ninguna todav\xEDa.")))}var COLS4=[{k:"nombre",t:"Piso"},{k:"anuncio",t:"D\xF3nde se anuncia",sinOrden:!0},{k:"semana",t:""},{k:"contactos",t:"Contactos"},{k:"visitas",t:"Visitas"},{k:"tendencia",t:"Ocho semanas",sinOrden:!0}];function Pisos({pisos,semanas,k,esta,semSel,elegir,ultima,maestro}){let[q,setQ]=(0,import_react42.useState)(""),[orden,setOrden]=(0,import_react42.useState)({k:"contactos",asc:!1}),[ver,setVer]=(0,import_react42.useState)(TANDA10),[abierto,setAbierto]=(0,import_react42.useState)(null),filas=(0,import_react42.useMemo)(()=>{let t3=q.trim().toLowerCase(),base2=t3?pisos.filter(p=>`${p.nombre} ${p.direccion||""} ${p.ciudad||""}`.toLowerCase().includes(t3)):pisos,val=p=>orden.k==="nombre"?p.nombre:orden.k==="semana"?p.semanas[k].contactos:sumar2(p.semanas,orden.k);return base2.slice().sort((a,b)=>{let x=val(a),y=val(b);return(typeof x=="number"?x-y:String(x).localeCompare(String(y),"es",{numeric:!0}))*(orden.asc?1:-1)||a.nombre.localeCompare(b.nombre,"es",{numeric:!0})})},[pisos,q,orden,k]);(0,import_react42.useEffect)(()=>{setVer(TANDA10)},[q,orden,pisos]);let pulsar=c=>setOrden(o=>o.k===c?{k:c,asc:!o.asc}:{k:c,asc:c==="nombre"}),alternar=id=>setAbierto(a=>a===id?null:id),visibles=filas.slice(0,ver),titSemana=esta?"Esta semana":`Semana del ${corto(semSel)}`;return __gh(Grupo,{titulo:"Pisos",cuenta:filas.length,sub:"Pulsa uno para ver sus semanas",derecha:pisos.length>8?__gh(Buscador2,{valor:q,onCambio:setQ,placeholder:maestro?"Buscar piso, calle o ciudad":"Buscar piso",ancho:240}):null},filas.length?__gh(__gf,null,__gh("div",{className:"com-escritorio",style:{overflowX:"auto"},"data-gufi-src":"portal/comercial.tsx:324"},__gh("table",{className:"com-tabla","data-gufi-src":"portal/comercial.tsx:325"},__gh("thead",{"data-gufi-src":"portal/comercial.tsx:326"},__gh("tr",{"data-gufi-src":"portal/comercial.tsx:326"},COLS4.map(c=>__gh("th",{key:c.k,"data-izq":c.k==="anuncio"?"1":void 0,"data-orden":c.sinOrden?void 0:c.k,"data-on":orden.k===c.k?"1":"0",onClick:c.sinOrden?void 0:()=>pulsar(c.k),"data-gufi-src":"portal/comercial.tsx:328"},c.k==="semana"?titSemana:c.t,orden.k===c.k?orden.asc?" \u2191":" \u2193":"")))),__gh("tbody",{"data-gufi-src":"portal/comercial.tsx:333"},visibles.map(p=>{let on=abierto===p.id,v8=sumar2(p.semanas,"visitas");return __gh(import_react42.default.Fragment,{key:p.id},__gh("tr",{"data-toca":"1","data-on":on?"1":"0",onClick:()=>alternar(p.id),"data-gufi-src":"portal/comercial.tsx:339"},__gh("td",{style:{maxWidth:360},"data-gufi-src":"portal/comercial.tsx:340"},__gh("span",{style:{display:"block",fontWeight:500,overflowWrap:"anywhere"},"data-gufi-src":"portal/comercial.tsx:341"},p.nombre),__gh("span",{style:{display:"block",fontSize:11.5,color:MUTED},"data-gufi-src":"portal/comercial.tsx:342"},NEGOCIO[p.negocio],precioDe(p)?` \xB7 ${precioDe(p)}`:"")),__gh("td",{"data-izq":"1","data-gufi-src":"portal/comercial.tsx:344"},__gh(Anuncios,{p})),__gh("td",{style:{fontWeight:600},"data-gufi-src":"portal/comercial.tsx:345"},numero(p.semanas[k].contactos)),__gh("td",{"data-gufi-src":"portal/comercial.tsx:346"},numero(sumar2(p.semanas,"contactos"))),__gh("td",{"data-gufi-src":"portal/comercial.tsx:347"},numero(v8),v8?__gh("span",{style:{color:FAINT,fontSize:12},"data-gufi-src":"portal/comercial.tsx:347"}," \xB7 ",numero(sumar2(p.semanas,"hechas"))," hechas"):null),__gh("td",{style:{width:110},"data-gufi-src":"portal/comercial.tsx:348"},__gh(Tendencia,{semanas:p.semanas}))),on?__gh("tr",{"data-gufi-src":"portal/comercial.tsx:350"},__gh("td",{colSpan:COLS4.length,className:"com-abierto","data-gufi-src":"portal/comercial.tsx:350"},__gh(DetallePiso,{p,semanas,semSel,elegir,ultima}))):null)})))),__gh("div",{className:"com-movil","data-gufi-src":"portal/comercial.tsx:357"},visibles.map((p,i)=>{let on=abierto===p.id;return __gh(import_react42.default.Fragment,{key:p.id},__gh(Fila2,{primera:i===0,elegida:on,titulo:p.nombre,onClick:()=>alternar(p.id),sub:`${NEGOCIO[p.negocio]} \xB7 ${p.semanas[k].contactos?`${plural7(p.semanas[k].contactos,"contacto","contactos")} ${esta?"esta semana":"esa semana"}`:esta?"nadie esta semana":"nadie esa semana"}`,valor:plural7(sumar2(p.semanas,"contactos"),"contacto","contactos"),valorSub:plural7(sumar2(p.semanas,"visitas"),"visita","visitas")}),on?__gh("div",{style:{background:"rgba(99,91,255,0.025)",borderTop:`1px solid ${HAIRLINE}`},"data-gufi-src":"portal/comercial.tsx:365"},__gh(DetallePiso,{p,semanas,semSel,elegir,ultima})):null)})),__gh(FilaMas,{quedan:filas.length-ver,tanda:TANDA10,onClick:()=>setVer(ver+TANDA10)})):__gh(Vacio2,{titulo:"Ning\xFAn piso con ese nombre",texto:"Prueba con la calle o con la ciudad."}))}var CSS_CABECERA=` .m-cab{position:sticky;top:0;z-index:30;background:#fff;border-bottom:1px solid ${HAIRLINE};} .m-cab-in{height:60px;padding:0 clamp(16px,3vw,40px);display:grid;grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);align-items:center;gap:20px;} .m-marca{display:flex;align-items:center;gap:10px;min-width:0;justify-self:start;text-decoration:none;color:inherit;} .m-marca-t{display:flex;flex-direction:column;min-width:0;line-height:1.2;} .m-marca-n{font-size:15px;font-weight:600;letter-spacing:-.3px;color:${INK};white-space:nowrap;overflow:hidden;text-overflow:ellipsis;} .m-marca-s{font-size:12px;color:${MUTED};white-space:nowrap;overflow:hidden;text-overflow:ellipsis;} .m-nav{display:flex;justify-content:center;min-width:0;} .m-der{justify-self:end;min-width:0;display:flex;align-items:center;} .m-cuenta-b{display:flex;align-items:center;gap:10px;min-width:0;border:none;background:transparent;padding:4px;border-radius:10px;font:inherit;cursor:pointer;} .m-cuenta-n{font-size:13.5px;color:${INK_2};max-width:220px;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;transition:color .2s;} .m-cuenta-b:hover .m-cuenta-n{color:${INK};} .m-vista{display:flex;align-items:center;justify-content:center;flex-wrap:wrap;gap:6px 14px;padding:9px 16px;background:#fff;border-bottom:1px solid ${HAIRLINE};font-size:13px;color:${INK_2};text-align:center;line-height:1.4;} .m-vista b{color:${INK};font-weight:600;} .m-vista button{border:none;background:transparent;padding:0;font:inherit;font-weight:600;color:${ACCENT};cursor:pointer;} `,CSS_FILTROS=` .m-filtros{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:8px;margin-bottom:18px;} .m-sel{display:inline-flex;align-items:center;gap:8px;height:34px;max-width:100%;padding:0 10px 0 12px;border-radius:10px;background:#fff;border:1px solid ${HAIRLINE};box-shadow:${SHADOW_CARD};font:inherit;font-size:13.5px;color:${INK};text-align:left;cursor:pointer;transition:border-color .2s;} .m-sel:hover,.m-sel[data-on="1"]{border-color:#d1d1d6;} .m-sel-tx{display:flex;align-items:baseline;gap:6px;min-width:0;} .m-sel-k{color:${MUTED};white-space:nowrap;} .m-sel-v{font-weight:600;white-space:nowrap;overflow:hidden;text-overflow:ellipsis;max-width:300px;} .m-sel-n{color:${FAINT};font-weight:500;margin-left:6px;font-variant-numeric:tabular-nums;} .m-sel-f{color:${FAINT};flex-shrink:0;transition:transform .22s cubic-bezier(.22,1,.36,1);} .m-sel[data-on="1"] .m-sel-f{transform:rotate(180deg);} .m-nota{margin-left:auto;font-size:12.5px;color:${MUTED};} .m-filtros .p-pop,.m-cuenta .p-pop{border-radius:14px;border-color:${HAIRLINE};box-shadow:0 12px 34px rgba(0,0,0,.12),0 0 0 .5px rgba(0,0,0,.04);animation:m-asoma .2s cubic-bezier(.22,1,.36,1) both;} @keyframes m-asoma{from{opacity:0;transform:translateY(-4px);}to{opacity:1;transform:none;}} .m-pop{width:340px;max-width:100%;box-sizing:border-box;} .m-buscar{flex:1;display:flex;align-items:center;gap:7px;height:34px;padding:0 10px;border-radius:10px;background:${FILL};transition:background .2s,box-shadow .2s;} .m-buscar:focus-within{background:#fff;box-shadow:0 0 0 1px ${ACCENT}66,0 0 0 4px ${ACCENT}1f;} .m-buscar input{font-size:13.5px !important;font-family:inherit;} .m-buscar button{border:none;background:transparent;padding:0;display:flex;color:${MUTED};cursor:pointer;} .m-lista{max-height:360px;overflow-y:auto;padding:4px 6px 6px;} .m-grupo{padding:10px 10px 4px;font-size:12px;font-weight:600;color:${MUTED};} .m-opcion{display:flex;align-items:center;gap:8px;width:100%;padding:8px 10px;border:none;background:transparent;border-radius:8px;font:inherit;font-size:13.5px;color:${INK};text-align:left;cursor:pointer;} .m-opcion:hover{background:rgba(118,118,128,.08);} .m-opcion[data-on="1"]{font-weight:600;} .m-check{width:16px;flex-shrink:0;display:flex;color:${INK};} .m-opcion-t{flex:1;min-width:0;overflow-wrap:anywhere;} .m-opcion-s{flex-shrink:0;font-size:12px;font-weight:400;color:${FAINT};font-variant-numeric:tabular-nums;} .m-vacia{padding:16px 12px;font-size:13px;color:${MUTED};} `,CSS_PERIODO=` .m-periodo{padding:12px;display:grid;gap:12px;} .m-seg-lleno>div{display:flex !important;width:100%;box-sizing:border-box;} .m-seg-lleno>div>button{flex:1 1 0;} .m-rejilla{display:grid;gap:2px;padding:2px;border-radius:10px;background:${FILL};} .m-celda{min-height:32px;padding:7px 6px;border:none;border-radius:8px;background:transparent;font:inherit;font-size:13px;font-weight:500;color:${INK};text-align:center;font-variant-numeric:tabular-nums;cursor:pointer;transition:background .15s;} .m-celda:hover:not(:disabled):not([data-on="1"]){background:rgba(255,255,255,.55);} .m-celda[data-on="1"]{background:#fff;font-weight:600;box-shadow:${SHADOW_PICK},0 0 0 .5px rgba(0,0,0,.04);} .m-celda:disabled{color:${FAINT};cursor:default;} .m-celda-2{padding:8px 10px;text-align:left;} .m-celda-2 small{display:block;margin-top:1px;font-size:11.5px;font-weight:400;color:${MUTED};} .m-anio{display:flex;align-items:center;justify-content:space-between;min-height:30px;padding:0 2px;} .m-anio b{flex:1;text-align:center;font-size:15px;font-weight:600;color:${INK};font-variant-numeric:tabular-nums;} .m-anio button{width:30px;height:30px;border:none;border-radius:8px;background:transparent;color:${ACCENT};display:inline-flex;align-items:center;justify-content:center;cursor:pointer;} .m-anio button:hover:not(:disabled){background:rgba(118,118,128,.08);} .m-anio button:disabled{color:#d1d1d6;cursor:default;} .m-fecha{flex:1;min-width:0;height:34px;box-sizing:border-box;border:none;border-radius:9px;background:${FILL};padding:0 9px;font:inherit;font-size:13px;color:${INK};outline:none;} .m-fecha:focus{background:#fff;box-shadow:0 0 0 1px ${ACCENT}66,0 0 0 4px ${ACCENT}1f;} `,CSS_PIEZAS=` .m-boton{display:inline-flex;align-items:center;justify-content:center;gap:7px;height:34px;padding:0 14px;border-radius:10px;border:1px solid ${HAIRLINE};background:#fff;font:inherit;font-size:13.5px;font-weight:600;color:${INK};white-space:nowrap;cursor:pointer;transition:background .2s,border-color .2s,opacity .2s;} .m-boton:hover:not(:disabled){border-color:#d1d1d6;} .m-boton:disabled{opacity:.5;cursor:default;} .m-boton-a{background:${ACCENT};border-color:${ACCENT};color:#fff;} .m-boton-a:hover:not(:disabled){background:#544bf0;border-color:#544bf0;} .m-menu{min-width:260px;max-width:320px;} .m-menu-cab{display:flex;align-items:center;gap:12px;padding:14px 16px;} .m-menu-nota{display:grid;gap:3px;padding:10px 16px;border-top:1px solid ${HAIRLINE};font-size:12.5px;color:${MUTED};line-height:1.45;} .m-menu-pie{padding:6px;border-top:1px solid ${HAIRLINE};} .m-centro{display:flex;align-items:center;justify-content:center;padding:24px 16px;box-sizing:border-box;} .m-entrar{display:flex;align-items:center;justify-content:center;padding:32px 16px;box-sizing:border-box;} .m-entrar-in{width:100%;max-width:360px;display:flex;flex-direction:column;align-items:center;text-align:center;} .m-entrar h1{margin:18px 0 0;font-size:26px;font-weight:650;letter-spacing:-.6px;line-height:1.15;color:${INK};} .m-entrar-sub{margin:6px 0 24px;max-width:300px;font-size:14px;line-height:1.5;color:${MUTED};} .m-entrar form{width:100%;} .m-campo{display:flex;align-items:center;gap:12px;min-height:50px;padding:0 16px;cursor:text;} .m-campo+.m-campo{border-top:1px solid ${HAIRLINE};} .m-campo>span{width:88px;flex-shrink:0;text-align:left;font-size:14px;font-weight:500;color:${INK};} .m-campo input{flex:1;min-width:0;padding:14px 0;border:none;outline:none;background:transparent;font:inherit;font-size:15px;color:${INK};} .m-campo input::placeholder{color:${FAINT};} .m-entrar-error{display:flex;align-items:flex-start;gap:8px;margin:12px 4px 0;text-align:left;font-size:13px;line-height:1.45;color:${INK_2};} .m-entrar .m-boton-a{width:100%;height:46px;margin-top:16px;border-radius:12px;font-size:15px;} .m-entrar-pie{margin-top:18px;font-size:12.5px;color:${FAINT};} .m-entrar-pie a{color:${ACCENT};text-decoration:none;} `,CSS_MOVIL=` .m-tabbar{display:none;} @media (max-width:1180px){ .m-cuenta-n{display:none;} } @media (max-width:1080px){ .m-marca-s{display:none;} } @media (max-width:900px){ .m-cab-in{height:54px;padding:0 16px;grid-template-columns:minmax(0,1fr) auto;} .m-nav{display:none;} .m-marca-s{display:block;} .m-tabbar{display:flex;align-items:flex-start;position:fixed;left:0;right:0;bottom:0;z-index:40;padding:5px 2px calc(4px + env(safe-area-inset-bottom));background:rgba(255,255,255,.92);backdrop-filter:saturate(180%) blur(20px);-webkit-backdrop-filter:saturate(180%) blur(20px);border-top:1px solid rgba(0,0,0,.08);} .m-tabbar>button{flex:1 1 0;min-width:0;display:flex;flex-direction:column;align-items:center;gap:3px;padding:3px 1px;border:none;background:transparent;font:inherit;font-size:10px;font-weight:500;letter-spacing:0;line-height:1.15;color:#8e8e93;text-align:center;cursor:pointer;-webkit-tap-highlight-color:transparent;transition:color .2s;} .m-tabbar>button>span{overflow-wrap:anywhere;} .m-tabbar>button[data-on="1"]{color:${ACCENT};} .m-filtros>div{position:static !important;flex:1 1 auto;min-width:0;max-width:100%;} .m-sel{width:100%;height:auto;min-height:46px;padding:6px 10px 6px 12px;justify-content:space-between;} .m-sel-tx{flex-direction:column;align-items:flex-start;gap:1px;} .m-sel-k{font-size:11.5px;} .m-sel-v{max-width:100%;} .m-filtros .p-pop{left:0 !important;right:0 !important;width:auto !important;min-width:0 !important;max-width:none !important;} .m-pop{width:auto;} } `,MARCO_CSS=CSS_CABECERA+CSS_FILTROS+CSS_PERIODO+CSS_PIEZAS+CSS_MOVIL;function Avatar({nombre,tam}){return __gh("span",{"aria-hidden":!0,style:{width:tam,height:tam,borderRadius:999,background:FILL,color:INK_2,fontSize:Math.round(tam*.38),fontWeight:600,display:"inline-flex",alignItems:"center",justifyContent:"center",flexShrink:0},"data-gufi-src":"portal/index.tsx:194"},initials(nombre))}function Selector({etiqueta:etiqueta4,valor,cuenta:cuenta2,abierto,onClick}){return __gh("button",{type:"button",className:"m-sel","data-on":abierto?"1":"0","aria-expanded":abierto,onClick,title:typeof valor=="string"?valor:void 0,"data-gufi-src":"portal/index.tsx:203"},__gh("span",{className:"m-sel-tx","data-gufi-src":"portal/index.tsx:204"},__gh("span",{className:"m-sel-k","data-gufi-src":"portal/index.tsx:205"},etiqueta4),__gh("span",{className:"m-sel-v","data-gufi-src":"portal/index.tsx:206"},valor,cuenta2!=null?__gh("span",{className:"m-sel-n","data-gufi-src":"portal/index.tsx:206"},numero(cuenta2)):null)),__gh(import_lucide_react41.ChevronDown,{size:14,className:"m-sel-f"}))}function Lista4({opciones,valor,onElegir,placeholder}){let[q,setQ]=(0,import_react43.useState)(""),norm5=s=>String(s||"").normalize("NFD").replace(/[̀-ͯ]/g,"").toLowerCase(),vis=(0,import_react43.useMemo)(()=>{let n=norm5(q);return n?opciones.filter(o=>norm5(o.t+" "+(o.s||"")).includes(n)):opciones},[q,opciones]),grupo=null;return __gh("div",{className:"m-pop","data-gufi-src":"portal/index.tsx:223"},opciones.length>8?__gh("div",{className:"p-search",style:{padding:"10px 10px 4px",borderBottom:"none"},"data-gufi-src":"portal/index.tsx:225"},__gh("label",{className:"m-buscar","data-gufi-src":"portal/index.tsx:226"},__gh(import_lucide_react41.Search,{size:15,color:MUTED,"aria-hidden":!0}),__gh("input",{autoFocus:!0,value:q,onChange:e=>setQ(e.target.value),placeholder:placeholder||"Buscar","data-gufi-src":"portal/index.tsx:228"}),q?__gh("button",{type:"button","aria-label":"Vaciar",onClick:()=>setQ(""),"data-gufi-src":"portal/index.tsx:229"},__gh(import_lucide_react41.X,{size:14})):null)):null,__gh("div",{className:"m-lista","data-gufi-src":"portal/index.tsx:233"},vis.length?vis.map(o=>{let cab=o.g&&o.g!==grupo?grupo=o.g:null,on=String(valor)===String(o.v);return __gh(import_react43.default.Fragment,{key:String(o.v)},cab?__gh("div",{className:"m-grupo","data-gufi-src":"portal/index.tsx:239"},cab):null,__gh("button",{type:"button",className:"m-opcion","data-on":on?"1":"0",onClick:()=>onElegir(o.v),"data-gufi-src":"portal/index.tsx:240"},__gh("span",{className:"m-check","data-gufi-src":"portal/index.tsx:241"},on?__gh(import_lucide_react41.Check,{size:15,strokeWidth:2.4}):null),__gh("span",{className:"m-opcion-t","data-gufi-src":"portal/index.tsx:242"},o.t),o.s?__gh("span",{className:"m-opcion-s","data-gufi-src":"portal/index.tsx:243"},o.s):null))}):__gh("div",{className:"m-vacia","data-gufi-src":"portal/index.tsx:247"},"Nada coincide con \xAB",q,"\xBB.")))}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("p",{style:{fontSize:13.5,color:MUTED,lineHeight:1.5,margin:"12px 0 0"},"data-gufi-src":"portal/index.tsx:265"},"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 p-shell m-entrar","data-gufi-src":"portal/index.tsx:292"},__gh("style",{"data-gufi-src":"portal/index.tsx:293"},B_CSS+MARCO_CSS),__gh("div",{className:"m-entrar-in b-fade","data-gufi-src":"portal/index.tsx:294"},__gh("a",{href:web,title:`Ir a la web de ${marca().nombre}`,style:{display:"block",borderRadius:15},"data-gufi-src":"portal/index.tsx:295"},__gh(Logo,{tam:56})),__gh("h1",{"data-gufi-src":"portal/index.tsx:296"},"Tu \xE1rea de propietario"),__gh("p",{className:"m-entrar-sub","data-gufi-src":"portal/index.tsx:297"},"Todo lo de tus propiedades con ",marca().nombre,", en un solo sitio."),__gh("form",{onSubmit:enviar,"data-gufi-src":"portal/index.tsx:298"},__gh(Tarjeta3,null,__gh("label",{className:"m-campo","data-gufi-src":"portal/index.tsx:300"},__gh("span",{"data-gufi-src":"portal/index.tsx:301"},"Correo"),__gh("input",{type:"email",autoComplete:"username",value:email,onChange:e=>setEmail(e.target.value),placeholder:"tu@correo.com","data-gufi-src":"portal/index.tsx:302"})),__gh("label",{className:"m-campo","data-gufi-src":"portal/index.tsx:304"},__gh("span",{"data-gufi-src":"portal/index.tsx:305"},"Contrase\xF1a"),__gh("input",{type:"password",autoComplete:"current-password",value:password,onChange:e=>setPassword(e.target.value),placeholder:"Tu contrase\xF1a","data-gufi-src":"portal/index.tsx:306"}))),error?__gh("div",{className:"m-entrar-error",role:"alert","data-gufi-src":"portal/index.tsx:309"},__gh("span",{style:{display:"flex",marginTop:6},"data-gufi-src":"portal/index.tsx:309"},__gh(Punto2,{tono:"mal"})),__gh("span",{"data-gufi-src":"portal/index.tsx:309"},error)):null,__gh("button",{type:"submit",disabled:enviando,className:"m-boton m-boton-a","data-gufi-src":"portal/index.tsx:310"},enviando?__gh(__gf,null,__gh(import_lucide_react41.Loader2,{size:16,className:"animate-spin"})," Entrando"):"Entrar")),marca().email?__gh("p",{className:"m-entrar-pie","data-gufi-src":"portal/index.tsx:314"},"\xBFNo puedes entrar? Escribe a ",__gh("a",{href:`mailto:${marca().email}`,"data-gufi-src":"portal/index.tsx:314"},marca().email)):null))}var periodoMes=ym=>({desde:ym+"-01",hasta:primeroMesSiguiente(ym)}),periodoAnio=y=>({desde:`${y}-01-01`,hasta:`${Number(y)+1}-01-01`}),dos=n=>String(n).padStart(2,"0"),periodoTrimestre=(y,t3)=>({desde:`${y}-${dos(t3*3-2)}-01`,hasta:t3===4?`${y+1}-01-01`:`${y}-${dos(t3*3+1)}-01`}),corto2=m=>MES[m].slice(0,3);function modoDe(p){let y=Number(p.desde.slice(0,4)),a=periodoAnio(y);if(p.desde===a.desde&&p.hasta===a.hasta)return"anio";if(p.desde.slice(8)==="01"&&p.hasta===primeroMesSiguiente(p.desde.slice(0,7)))return"mes";let m=Number(p.desde.slice(5,7));if((m-1)%3===0){let t3=periodoTrimestre(y,(m+2)/3);if(p.desde===t3.desde&&p.hasta===t3.hasta)return"trimestre"}return"fechas"}function Atajos({on,elegir,ultimoMes}){let anioUlt=Number(ultimoMes.slice(0,4)),mesUlt=Number(ultimoMes.slice(5,7)),rapidos=[{p:periodoMes(ultimoMes),t:deFactura()?"\xDAltimo mes facturado":"Este mes",s:mesLabel(ultimoMes)},{p:periodoAnio(anioUlt),t:`Todo ${anioUlt}`,s:mesUlt<12?`hasta ${MES[mesUlt].toLowerCase()}`:"el a\xF1o entero"}];return __gh("div",{className:"m-rejilla",style:{gridTemplateColumns:"repeat(2, minmax(0, 1fr))"},"data-gufi-src":"portal/index.tsx:350"},rapidos.map(r=>__gh("button",{key:r.t,type:"button",className:"m-celda m-celda-2","data-on":on(r.p)?"1":"0",onClick:()=>elegir(r.p),"data-gufi-src":"portal/index.tsx:352"},r.t,__gh("small",{"data-gufi-src":"portal/index.tsx:353"},r.s))))}function Rejilla3({modo,anios,anio,ultimoMes,on,elegir}){let celdas=modo==="anio"?anios.map(y=>({k:y,p:periodoAnio(y),t:String(y),s:""})):modo==="trimestre"?[1,2,3,4].map(t3=>({k:t3,p:periodoTrimestre(anio,t3),t:`T${t3}`,s:`${corto2(t3*3-2).toLowerCase()} a ${corto2(t3*3).toLowerCase()}`})):Array.from({length:12},(_,i)=>({k:i,p:periodoMes(`${anio}-${dos(i+1)}`),t:corto2(i+1),s:""}));return __gh("div",{className:"m-rejilla",style:{gridTemplateColumns:`repeat(${modo==="anio"?3:modo==="trimestre"?2:4}, minmax(0, 1fr))`},"data-gufi-src":"portal/index.tsx:370"},celdas.map(c=>__gh("button",{key:c.k,type:"button",className:c.s?"m-celda m-celda-2":"m-celda","data-on":on(c.p)?"1":"0",disabled:c.p.desde.slice(0,7)>ultimoMes,onClick:()=>elegir(c.p),"data-gufi-src":"portal/index.tsx:372"},c.t,c.s?__gh("small",{"data-gufi-src":"portal/index.tsx:373"},c.s):null)))}function EntreFechas({periodo,elegir}){let[d2,setD]=(0,import_react43.useState)(periodo.desde),[h,setH]=(0,import_react43.useState)(sumarDias(periodo.hasta,-1));return __gh("div",{style:{display:"grid",gap:10},"data-gufi-src":"portal/index.tsx:385"},__gh("div",{style:{display:"flex",alignItems:"center",gap:8},"data-gufi-src":"portal/index.tsx:386"},__gh("input",{type:"date",className:"m-fecha","aria-label":"Desde",value:d2,onChange:e=>setD(e.target.value),"data-gufi-src":"portal/index.tsx:387"}),__gh("span",{style:{fontSize:13,color:FAINT},"data-gufi-src":"portal/index.tsx:388"},"a"),__gh("input",{type:"date",className:"m-fecha","aria-label":"Hasta",value:h,onChange:e=>setH(e.target.value),"data-gufi-src":"portal/index.tsx:389"})),__gh("button",{type:"button",className:"m-boton m-boton-a",style:{width:"100%"},disabled:!d2||!h||d2>h,onClick:()=>elegir({desde:d2,hasta:sumarDias(h,1)}),"data-gufi-src":"portal/index.tsx:391"},"Ver estas fechas"))}function PanelPeriodo({periodo,elegir,ultimoMes,primerAnio}){let anioUlt=Number(ultimoMes.slice(0,4)),anios=[];for(let y=anioUlt;y>=primerAnio;y--)anios.push(y);let[modo,setModo]=(0,import_react43.useState)(()=>modoDe(periodo)),[anio,setAnio]=(0,import_react43.useState)(()=>Math.min(anioUlt,Math.max(primerAnio,Number(periodo.desde.slice(0,4))||anioUlt))),on=p=>p.desde===periodo.desde&&p.hasta===periodo.hasta;return __gh("div",{className:"m-pop m-periodo","data-gufi-src":"portal/index.tsx:408"},__gh(Atajos,{on,elegir,ultimoMes}),__gh("div",{className:"m-seg-lleno","data-gufi-src":"portal/index.tsx:410"},__gh(Segmentado,{id:"periodo-modo",valor:modo,onCambio:setModo,opciones:[{v:"anio",t:"A\xF1o"},{v:"trimestre",t:"Trimestre"},{v:"mes",t:"Mes"},{v:"fechas",t:"Fechas"}]})),modo==="trimestre"||modo==="mes"?__gh("div",{className:"m-anio","data-gufi-src":"portal/index.tsx:415"},anios.length>1?__gh("button",{type:"button","aria-label":"A\xF1o anterior",disabled:anio<=primerAnio,onClick:()=>setAnio(anio-1),"data-gufi-src":"portal/index.tsx:416"},__gh(import_lucide_react41.ChevronLeft,{size:17})):null,__gh("b",{"data-gufi-src":"portal/index.tsx:417"},anio),anios.length>1?__gh("button",{type:"button","aria-label":"A\xF1o siguiente",disabled:anio>=anioUlt,onClick:()=>setAnio(anio+1),"data-gufi-src":"portal/index.tsx:418"},__gh(import_lucide_react41.ChevronRight,{size:17})):null):null,modo==="fechas"?__gh(EntreFechas,{periodo,elegir}):__gh(Rejilla3,{modo,anios,anio,ultimoMes,on,elegir}))}function FiltroPeriodo({periodo,setPeriodo,ultimoMes,primerAnio}){let[abierto,setAbierto]=(0,import_react43.useState)(!1);return __gh(Desplegable2,{abierto,setAbierto,boton:__gh(Selector,{etiqueta:"Periodo",valor:periodoTexto(periodo.desde,periodo.hasta),abierto,onClick:()=>setAbierto(!abierto)})},__gh(PanelPeriodo,{periodo,ultimoMes,primerAnio,elegir:p=>{setPeriodo(p),setAbierto(!1)}}))}function MenuCuenta({cuenta:cuenta2,salir,desdeGufi}){let[abierto,setAbierto]=(0,import_react43.useState)(!1);return __gh(Desplegable2,{abierto,setAbierto,derecha:!0,boton:__gh("button",{type:"button",className:"m-cuenta-b",onClick:()=>setAbierto(!abierto),title:cuenta2.nombre,"aria-expanded":abierto,"data-gufi-src":"portal/index.tsx:444"},__gh("span",{className:"m-cuenta-n","data-gufi-src":"portal/index.tsx:445"},cuenta2.nombre),__gh(Avatar,{nombre:cuenta2.nombre,tam:30}))},__gh("div",{className:"m-menu","data-gufi-src":"portal/index.tsx:449"},__gh("div",{className:"m-menu-cab","data-gufi-src":"portal/index.tsx:450"},__gh(Avatar,{nombre:cuenta2.nombre,tam:40}),__gh("div",{style:{minWidth:0},"data-gufi-src":"portal/index.tsx:452"},__gh("div",{style:{fontSize:14,fontWeight:600,color:INK,overflowWrap:"anywhere"},"data-gufi-src":"portal/index.tsx:453"},cuenta2.nombre),__gh("div",{style:{fontSize:12.5,color:MUTED,marginTop:1,overflowWrap:"anywhere"},"data-gufi-src":"portal/index.tsx:454"},cuenta2.email))),cuenta2.maestro||desdeGufi?__gh("div",{className:"m-menu-nota","data-gufi-src":"portal/index.tsx:458"},cuenta2.maestro?__gh("span",{"data-gufi-src":"portal/index.tsx:459"},"Cuenta maestra: ve a todos los propietarios."):null,desdeGufi?__gh("span",{"data-gufi-src":"portal/index.tsx:460"},"Has entrado desde Gufi como ",desdeGufi,"."):null):null,desdeGufi?null:__gh("div",{className:"m-menu-pie","data-gufi-src":"portal/index.tsx:465"},__gh("button",{type:"button",className:"m-opcion",onClick:()=>{setAbierto(!1),salir()},"data-gufi-src":"portal/index.tsx:466"},__gh(import_lucide_react41.LogOut,{size:16,color:MUTED})," Cerrar sesi\xF3n"))))}function Arrancando({conMarca,entrar}){return entrar?__gh("div",{className:"b-root p-shell m-entrar","data-gufi-src":"portal/index.tsx:480"},__gh("style",{"data-gufi-src":"portal/index.tsx:481"},B_CSS+MARCO_CSS),__gh("div",{className:"m-entrar-in","aria-busy":"true","data-gufi-src":"portal/index.tsx:482"},__gh("span",{className:"k-esqueleto",style:{width:56,height:56,borderRadius:15},"data-gufi-src":"portal/index.tsx:483"}),__gh("span",{className:"k-esqueleto",style:{width:230,height:20,borderRadius:7,marginTop:20},"data-gufi-src":"portal/index.tsx:484"}),__gh("span",{className:"k-esqueleto",style:{width:270,height:12,borderRadius:6,marginTop:12,marginBottom:24},"data-gufi-src":"portal/index.tsx:485"}),__gh("div",{style:{width:"100%"},"data-gufi-src":"portal/index.tsx:486"},__gh(Tarjeta3,null,__gh(FilasCargando,{n:2}))))):__gh("div",{className:"b-root p-shell","aria-busy":"true","data-gufi-src":"portal/index.tsx:491"},__gh("style",{"data-gufi-src":"portal/index.tsx:492"},B_CSS+MARCO_CSS),__gh("header",{className:"m-cab","data-gufi-src":"portal/index.tsx:493"},__gh("div",{className:"m-cab-in","data-gufi-src":"portal/index.tsx:494"},conMarca?__gh("span",{className:"m-marca","data-gufi-src":"portal/index.tsx:496"},__gh(Logo,{tam:30}),__gh("span",{className:"m-marca-t","data-gufi-src":"portal/index.tsx:498"},__gh("span",{className:"m-marca-n","data-gufi-src":"portal/index.tsx:498"},marca().nombre),__gh("span",{className:"m-marca-s","data-gufi-src":"portal/index.tsx:498"},"\xC1rea de propietarios"))):__gh("span",{className:"m-marca","data-gufi-src":"portal/index.tsx:501"},__gh("span",{className:"k-esqueleto",style:{width:30,height:30,borderRadius:8},"data-gufi-src":"portal/index.tsx:502"}),__gh("span",{className:"k-esqueleto",style:{width:110,height:12,borderRadius:6},"data-gufi-src":"portal/index.tsx:503"})))),__gh("main",{className:"p-main","data-gufi-src":"portal/index.tsx:508"},__gh("div",{className:"m-filtros","data-gufi-src":"portal/index.tsx:509"},[170,140,150].map(w=>__gh("span",{key:w,className:"k-esqueleto",style:{width:w,maxWidth:"100%",height:34,borderRadius:10},"data-gufi-src":"portal/index.tsx:510"}))),__gh(Tarjeta3,null,__gh(FilasCargando,{n:7}))))}function Fallo({titulo:titulo3,texto,children}){return __gh("div",{className:"b-root p-shell m-centro","data-gufi-src":"portal/index.tsx:520"},__gh("style",{"data-gufi-src":"portal/index.tsx:521"},B_CSS+MARCO_CSS),__gh("div",{style:{width:"100%",maxWidth:440,display:"grid",gap:12},"data-gufi-src":"portal/index.tsx:522"},__gh(Aviso2,{titulo:titulo3,texto}),children?__gh("div",{style:{display:"flex",justifyContent:"flex-end",gap:8,flexWrap:"wrap"},"data-gufi-src":"portal/index.tsx:524"},children):null))}var SECCIONES2=[{k:"resumen",t:"Resumen",icono:import_lucide_react41.LayoutGrid},{k:"reservas",t:"Reservas",icono:import_lucide_react41.BedDouble},{k:"calendario",t:"Calendario",icono:import_lucide_react41.CalendarDays},{k:"facturas",t:"Facturas",icono:import_lucide_react41.FileText,soloFactura:!0},{k:"huespedes",t:"Hu\xE9spedes",icono:import_lucide_react41.Users}],HOSTEL={k:"hostel",t:"Hostel",icono:import_lucide_react41.Building2},comercialDe=n=>({k:"comercial",t:n.venta&&n.alquiler?"Venta y alquiler":n.venta?"En venta":"En alquiler",icono:import_lucide_react41.Tag}),CUENTAS={k:"cuentas",t:"Cuentas",icono:import_lucide_react41.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 irA2=(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(t3=>[t3.id,t3.nombre])),[titulares]),propsVisibles=(0,import_react43.useMemo)(()=>titular2?inicio.propiedades.filter(p=>p.titulares.some(t3=>String(t3.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(t3=>!t3.empresa).map(t3=>({v:t3.id,t:t3.nombre,g:"Personas"}))).concat(titulares.filter(t3=>t3.empresa).map(t3=>({v:t3.id,t:t3.nombre,g:"Empresas"}))),[titulares,inicio]),opcionesPropiedad=(0,import_react43.useMemo)(()=>[{v:"",t:"Todas las propiedades",s:numero(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=>irA2("reserva",e.id,String(e.entrada||"").slice(0,7)),[irA2]),variasSecciones=secciones.length>1;return(0,import_react43.useEffect)(()=>{if(ruta.tipo!=="reserva"||!ruta.mes)return;let primero=ruta.mes+"-01";primero>=periodo.desde&&primero({v:s.k,t:s.t}))})):__gh("span",{className:"m-nav","data-gufi-src":"portal/index.tsx:680"}),__gh("div",{className:"m-der m-cuenta","data-gufi-src":"portal/index.tsx:681"},__gh(MenuCuenta,{cuenta:inicio.cuenta,salir,desdeGufi})))),__gh("main",{className:"p-main","data-gufi-src":"portal/index.tsx:685"},conFiltros?__gh("div",{className:"m-filtros","data-gufi-src":"portal/index.tsx:687"},titulares.length>1?__gh(Desplegable2,{abierto:abiertoT,setAbierto:setAbiertoT,boton:__gh(Selector,{etiqueta:inicio.cuenta.maestro?"Propietario":"Titular",valor:titular2?nombreTitular[titular2]:opcionesTitular[0].t,abierto:abiertoT,onClick:()=>setAbiertoT(!abiertoT)})},__gh(Lista4,{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(Selector,{etiqueta:"Propiedad",valor:propiedad?propPorId[propiedad].nombre:"Todas",cuenta:propiedad?null:propsVisibles.length,abierto:abiertoP,onClick:()=>setAbiertoP(!abiertoP)})},__gh(Lista4,{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:"m-nota p-only-d","data-gufi-src":"portal/index.tsx:701"},"Facturado por ",marca().nombre," hasta ",mesLabel(ultimoMes).toLowerCase()):null):null,!turistico&&!comercial?__gh(Tarjeta3,null,__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:708"},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=>irA2("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})))),variasSecciones?__gh("nav",{className:"m-tabbar","aria-label":"Secciones","data-gufi-src":"portal/index.tsx:730"},secciones.map(s=>{let I=s.icono,on=seccion2===s.k;return __gh("button",{key:s.k,type:"button","data-on":on?"1":"0","aria-current":on?"page":void 0,onClick:()=>setSeccion(s.k),"data-gufi-src":"portal/index.tsx:735"},__gh(I,{size:22,strokeWidth:on?2.1:1.8}),__gh("span",{"data-gufi-src":"portal/index.tsx:737"},s.t))})):null)}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(Fallo,{titulo:"No se ha podido abrir el portal",texto:errorMarca}):!conMarca||entradaGufi==="pendiente"?__gh(Arrancando,{conMarca,entrar:!desdeGufi&&!token}):!token&&!error?__gh(Entrar,{api,onEntrar:entrar,web}):error?__gh(Fallo,{titulo:"No hemos podido cargar tu \xE1rea",texto:error},__gh("button",{type:"button",className:"m-boton",onClick:salir,"data-gufi-src":"portal/index.tsx:831"},"Cerrar sesi\xF3n"),__gh("button",{type:"button",className:"m-boton m-boton-a",onClick:()=>window.location.reload(),"data-gufi-src":"portal/index.tsx:832"},"Reintentar")):!inicio||vista&&!vista.inicio&&!vista.error?__gh(Arrancando,{conMarca:!0,entrar:!1}):vista&&vista.error?__gh(Fallo,{titulo:`No se ha podido abrir el portal de ${vista.nombre}`,texto:vista.error},__gh("button",{type:"button",className:"m-boton m-boton-a",onClick:volver,"data-gufi-src":"portal/index.tsx:838"},"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_react43=require("lucide-react");var import_react44=require("react"),import_lucide_react42=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_react42.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_react42.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_react42.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(clave2,n){let o=OBRAS.find(x=>x.clave===clave2);if(o===void 0||o.fotos[n]===void 0)throw new Error(`Foto de obra desconocida en /reformas: ${clave2} ${n}`);return o.fotos[n]}function enFilas(obras){let out=[],i=0,par=0;for(;i{let clave2=sinAcentos(o.busca).replace(/[.*+?^${}()|[\]\\]/g,"\\$&"),patron=new RegExp(`(^|[^a-z0-9])${clave2}([^a-z0-9]|$)`);return pisos.filter(p=>patron.test(sinAcentos(`${p.direccion??""} ${p.titulo}`)))},gestionados=[...new Map(OBRAS.flatMap(pisosDe2).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=pisosDe2(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_react43.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:pisosDe2(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_react43.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(([clave2,n])=>foto(clave2,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 ESTATE SL , en calidad de titular del sitio web WWW.BATUECAS.ES hace constar:"},{t:"h3",x:"1. Datos identificativos:"},{t:"li",x:"Denominaci\xF3n social: BATUECAS REAL ESTATE 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: Registro Mercantil de Madrid, Tomo 36541, Folio 80, Secci\xF3n 8, Hoja M-656348, Inscripci\xF3n 1\xAA"},{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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE SL . Por ello, BATUECAS REAL ESTATE 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 ESTATE 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 ESTATE SL."},{t:"li",x:"No se realizar\xE1n manifestaciones o indicaciones falsas, inexactas, u ofensivas sobre BATUECAS REAL ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE SL o bien de sus licenciantes, estando todos los derechos reservados."},{t:"p",x:"Cualquier uso no autorizado previamente por BATUECAS REAL ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE SL, o de terceros en su caso, por tanto, los derechos de Propiedad Intelectual son titularidad de BATUECAS REAL ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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: Registro Mercantil de Madrid, Tomo 36541, Folio 80, Secci\xF3n 8, Hoja M-656348, Inscripci\xF3n 1\xAA"},{t:"h3",x:"2. FINALIDAD"},{t:"h3",x:"\xBFCon que finalidad trataremos sus datos personales?"},{t:"h3",x:"BATUECAS REAL ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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 ESTATE 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:"Batuecas Real Estate 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 916 68 43 46 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 Batuecas Real Estate SL, CIF: B87950382. 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: Batuecas Real Estate SL. CIF: B87950382. Direcci\xF3n: CL/ DE LAS AGUAS, 4- LOCAL 3, 28005 MADRID. Correo electr\xF3nico: administracion@batuecas.es. Tel\xE9fono: 916 68 43 46. Sitio 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_N3TVY187XC): 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 Cabecera4({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(Cabecera4,{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_lucide_react44=require("lucide-react");var LECTURA=760;function Guia({gufi,url,pisos,ciudades,path}){let guia=GUIAS.find(g=>g.path===path);if(guia===void 0)throw new Error(`sections/guia: no hay gu\xEDa para "${path}"`);return __gh("div",{"data-gufi-src":"sections/guia.tsx:46"},__gh(Cabecera4,{path,ancho:LECTURA,antetitulo:guia.antetitulo}),__gh("article",{style:{maxWidth:LECTURA,margin:"0 auto",padding:"6px 20px 0"},"data-gufi-src":"sections/guia.tsx:49"},IDIOMA==="en"&&__gh("p",{style:{margin:"0 0 24px",fontSize:14,lineHeight:1.6,color:T.muted},"data-gufi-src":"sections/guia.tsx:51"},"This guide is only available in Spanish."),guia.secciones.map((s,i)=>__gh("section",{key:s.h2,"data-gufi-src":"sections/guia.tsx:54"},__gh("h2",{style:{...H2,marginTop:i===0?26:"clamp(46px, 6vw, 64px)"},"data-gufi-src":"sections/guia.tsx:55"},s.h2),s.bloques.map((b,j)=>__gh(Bloque3,{key:j,b,url,pisos}))))),guia.cifras&&__gh(Cifras,{pisos,ciudades}),__gh(Guias,{url,sin:path}),__gh("div",{style:{height:AIRE},"data-gufi-src":"sections/guia.tsx:67"}),__gh(Contactanos,{gufi,origen:path.slice(1),inicial:guia.contacto}),__gh(WhatsApp,{texto:guia.whatsapp}),__gh("style",{"data-gufi-src":"sections/guia.tsx:72"},` .bq-guia-a { color: ${T.accent}; text-decoration: underline; text-underline-offset: 2px; text-decoration-thickness: 1px; } .bq-guia-a:hover { text-decoration-thickness: 2px; } `))}function Bloque3({b,url,pisos}){return b.t==="p"?__gh("p",{style:P,"data-gufi-src":"sections/guia.tsx:81"},conEnlaces(b.x,url)):b.t==="lista"?__gh("ul",{style:{margin:"0 0 20px",paddingLeft:22,display:"grid",gap:10},"data-gufi-src":"sections/guia.tsx:85"},b.items.map(x=>__gh("li",{key:x,style:{fontSize:17,lineHeight:1.7,color:T.body},"data-gufi-src":"sections/guia.tsx:87"},conEnlaces(x,url)))):b.t==="puntos"?__gh("div",{style:{display:"grid",gap:20,margin:"4px 0 24px"},"data-gufi-src":"sections/guia.tsx:97"},b.items.map(it=>__gh("div",{key:it.t,style:{display:"grid",gridTemplateColumns:"20px minmax(0, 1fr)",gap:12},"data-gufi-src":"sections/guia.tsx:99"},__gh(import_lucide_react44.Check,{style:{width:17,height:17,color:T.accent,marginTop:4},strokeWidth:2.4}),__gh("div",{"data-gufi-src":"sections/guia.tsx:101"},__gh("h3",{style:{margin:0,fontSize:17.5,lineHeight:1.35,fontWeight:600,letterSpacing:"-0.01em",color:T.ink},"data-gufi-src":"sections/guia.tsx:102"},it.t),__gh("p",{style:{margin:"4px 0 0",fontSize:16,lineHeight:1.65,color:T.body},"data-gufi-src":"sections/guia.tsx:103"},conEnlaces(it.d,url)))))):b.t==="plataformas"?__gh("div",{style:{margin:"0 0 36px"},"data-gufi-src":"sections/guia.tsx:113"},__gh(Plataformas,null)):b.t==="zonas"?__gh(Zonas,{pisos}):b.t==="pisos_temporada"?__gh(PisosTemporada,{pisos,url}):__gh(Llamada,null)}function Zonas({pisos}){let cuenta2=new Map;for(let p of pisos){if(p.seccion!=="estancias_cortas"||!p.ciudad)continue;let c=lugar(p.ciudad);cuenta2.set(c,(cuenta2.get(c)??0)+1)}let filas=[...cuenta2.entries()].sort((a,b)=>b[1]-a[1]||a[0].localeCompare(b[0],"es"));return __gh("ul",{style:{listStyle:"none",margin:"4px 0 24px",padding:0,display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(150px, 1fr))",columnGap:28},"data-gufi-src":"sections/guia.tsx:134"},filas.map(([ciudad,n])=>__gh("li",{key:ciudad,style:{display:"flex",justifyContent:"space-between",alignItems:"baseline",gap:12,padding:"10px 0",borderBottom:`1px solid ${T.lineSoft}`,fontSize:15.5,lineHeight:1.4,color:T.ink},"data-gufi-src":"sections/guia.tsx:145"},__gh("span",{"data-gufi-src":"sections/guia.tsx:159"},ciudad),__gh("span",{style:{color:T.muted,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/guia.tsx:160"},n))))}function PisosTemporada({pisos,url}){let temporada=pisos.filter(p=>p.seccion==="alquileres"&&p.tipo_alquiler==="Temporada");return temporada.length===0?__gh("p",{style:P,"data-gufi-src":"sections/guia.tsx:170"},"Ahora mismo no tenemos ninguno publicado."):__gh("div",{className:"bq-carrusel",style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(220px, 1fr))",gap:16,margin:"6px 0 26px"},"data-gufi-src":"sections/guia.tsx:172"},temporada.map(p=>__gh(Tarjeta,{key:p.id,piso:p,href:url(`/${p.slug}`),lazy:!0})))}function Llamada(){return __gh("div",{style:{margin:"34px 0 6px",background:T.surfaceAlt,borderRadius:24,padding:"clamp(24px, 4vw, 36px)"},"data-gufi-src":"sections/guia.tsx:186"},__gh("div",{style:{fontSize:"clamp(21px, 2.4vw, 25px)",fontWeight:PESO_SECCION,letterSpacing:"-0.025em",lineHeight:1.2,color:T.ink},"data-gufi-src":"sections/guia.tsx:187"},"\xBFLo hablamos?"),__gh("p",{style:{margin:"10px 0 0",fontSize:16,lineHeight:1.6,color:T.body},"data-gufi-src":"sections/guia.tsx:190"},"Llama a nuestra oficina de Madrid o d\xE9janos tus datos y te llamamos. Te contesta una persona."),__gh("div",{style:{marginTop:20,display:"flex",flexWrap:"wrap",gap:10},"data-gufi-src":"sections/guia.tsx:193"},__gh("a",{href:`tel:${TELEFONO_OFICINA.replace(/\s/g,"")}`,className:"bq-boton",style:BOTON,"data-gufi-src":"sections/guia.tsx:194"},__gh(import_lucide_react44.Phone,{style:{width:17,height:17},strokeWidth:2}),TELEFONO_OFICINA),__gh("a",{href:"#contactanos",onClick:e=>bajarA(e,"contactanos"),className:"bq-boton",style:{...BOTON_CONTORNO,background:T.surface},"data-gufi-src":"sections/guia.tsx:198"},"D\xE9janos tus datos")))}function conEnlaces(x,url){let partes=[],re=/\[([^\]]+)\]\(([^)]+)\)/g,desde2=0,m;for(;(m=re.exec(x))!==null;){m.index>desde2&&partes.push(x.slice(desde2,m.index));let destino=m[2];partes.push(__gh("a",{key:m.index,href:destino.startsWith("/")?url(destino):destino,className:"bq-guia-a","data-gufi-src":"sections/guia.tsx:220"},m[1])),desde2=m.index+m[0].length}return desde2[...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(Cabecera4,{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(t3=>t3.tipo===tipo&&t3.slug===slug&&t3.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(t3=>suyos.has(t3.id)&&t3.tipo===tipo&&t3.publicado===!0)}function rutaDe(t3){return t3.tipo==="categoria"?`/category/${t3.slug}`:`/tag/${t3.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 en alquiler","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}`)})))))}var import_react49=require("react"),import_lucide_react48=require("lucide-react");var LECTURA2=760,DE_A2=8,miles=n=>String(Math.round(n)).replace(/\B(?=(\d{3})+(?!\d))/g,".");function BarrioPagina({gufi,url,barrio,ficha:ficha2,pisos,barrios}){let suyos=pisos.filter(p=>p.zona===barrio.id),estancias=suyos.filter(p=>p.seccion==="estancias_cortas"),alquileres=suyos.filter(p=>p.seccion==="alquileres"),ventas=suyos.filter(p=>p.seccion==="venta"),parrafos2=String(ficha2.texto??"").split(/\n\s*\n/).map(x=>x.trim()).filter(Boolean),vecinos=(barrio.vecinos??[]).map(s=>barrios.find(b=>b.slug===s&&b.publicado)).filter(b=>b!==void 0),enCentro=barrio.distrito==="Centro",cifras=[{valor:String(suyos.length),texto:suyos.length===1?"casa nuestra en el barrio":"casas nuestras en el barrio"}];return estancias.length>0&&cifras.push({valor:String(estancias.length),texto:"para estancias cortas"}),alquileres.length>0&&cifras.push({valor:String(alquileres.length),texto:barrio.mes_desde?`por meses, desde ${euros(Number(barrio.mes_desde))} al mes`:"por meses"}),ventas.length>0&&cifras.push({valor:String(ventas.length),texto:barrio.venta_desde?`en venta, desde ${euros(Number(barrio.venta_desde))}`:"en venta"}),barrio.valoracion!==null&&Number(barrio.resenas)>0&&cifras.push({valor:(Number(Math.round(Number(barrio.valoracion)*10)/10)||0).toFixed(1).replace(".",","),texto:`de 5, la nota de los hu\xE9spedes en ${miles(Number(barrio.resenas))} opiniones`}),__gh("div",{"data-gufi-src":"sections/barrio.tsx:70"},__gh("header",{style:{maxWidth:ANCHO,margin:"0 auto",padding:"clamp(44px, 6vw, 76px) 20px clamp(22px, 3vw, 34px)"},"data-gufi-src":"sections/barrio.tsx:71"},__gh("a",{href:url("/barrios"),style:{...ANTETITULO,marginBottom:16,textDecoration:"none"},"data-gufi-src":"sections/barrio.tsx:72"},dondeCae(barrio)),__gh("h1",{style:{...PORTADILLA,maxWidth:860},"data-gufi-src":"sections/barrio.tsx:75"},barrio.titulo),parrafos2[0]&&__gh("p",{style:{margin:"20px 0 0",fontSize:"clamp(15.5px, 1.9vw, 17.5px)",lineHeight:1.65,color:T.body,maxWidth:680},"data-gufi-src":"sections/barrio.tsx:76"},parrafos2[0]),IDIOMA==="en"&&__gh("p",{style:{margin:"14px 0 0",fontSize:14,lineHeight:1.6,color:T.muted},"data-gufi-src":"sections/barrio.tsx:77"},"This page is only available in Spanish.")),__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:"8px 20px 0"},"data-gufi-src":"sections/barrio.tsx:80"},__gh("div",{className:"bq-barrio-cifras","data-gufi-src":"sections/barrio.tsx:81"},cifras.map(c=>__gh("div",{key:c.texto,style:{borderTop:`1px solid ${T.line}`,paddingTop:16},"data-gufi-src":"sections/barrio.tsx:83"},__gh("div",{style:{fontSize:"clamp(34px, 4.4vw, 52px)",lineHeight:1,fontWeight:250,letterSpacing:"-0.045em",color:T.accent,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/barrio.tsx:84"},c.valor),__gh("div",{style:{marginTop:10,fontSize:14.5,lineHeight:1.45,color:T.body},"data-gufi-src":"sections/barrio.tsx:85"},c.texto))))),__gh(Casas2,{titulo:"Por noches",pisos:estancias,url}),__gh(Casas2,{titulo:"Por meses",pisos:alquileres,url}),__gh(Casas2,{titulo:"En venta",pisos:ventas,url}),__gh("article",{style:{maxWidth:LECTURA2,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"sections/barrio.tsx:95"},parrafos2.length>1&&__gh("section",{"data-gufi-src":"sections/barrio.tsx:97"},__gh("h2",{style:H22,"data-gufi-src":"sections/barrio.tsx:98"},`C\xF3mo es ${barrio.nombre}`),parrafos2.slice(1).map(x=>__gh("p",{key:x,style:P2,"data-gufi-src":"sections/barrio.tsx:100"},x))),ficha2.propietarios&&__gh("section",{style:{marginTop:parrafos2.length>1?"clamp(46px, 6vw, 64px)":0},"data-gufi-src":"sections/barrio.tsx:106"},__gh("h2",{style:H22,"data-gufi-src":"sections/barrio.tsx:107"},`Si tienes casa en ${barrio.nombre}`),__gh("p",{style:P2,"data-gufi-src":"sections/barrio.tsx:108"},ficha2.propietarios),__gh("p",{style:P2,"data-gufi-src":"sections/barrio.tsx:109"},"Cobramos el 20\xA0% de las noches, o el 30\xA0% con la limpieza incluida, y desde 50\xA0\u20AC al mes en el alquiler de todo el a\xF1o."," ",__gh("a",{href:url("/gestion"),className:"bq-guia-a","data-gufi-src":"sections/barrio.tsx:111"},"Lo que hacemos y lo que cuesta"),"."),__gh("div",{style:{margin:"24px 0 0",display:"flex",flexWrap:"wrap",gap:10},"data-gufi-src":"sections/barrio.tsx:113"},__gh("a",{href:"#contactanos",onClick:e=>bajarA(e,"contactanos"),className:"bq-boton",style:BOTON,"data-gufi-src":"sections/barrio.tsx:114"},"Cu\xE9ntanos de tu casa"),__gh("a",{href:`tel:${TELEFONO_OFICINA.replace(/\s/g,"")}`,className:"bq-boton",style:{...BOTON_CONTORNO,background:T.surface},"data-gufi-src":"sections/barrio.tsx:117"},__gh(import_lucide_react48.Phone,{style:{width:17,height:17},strokeWidth:2}),TELEFONO_OFICINA))),ficha2.normativa&&__gh("section",{style:{marginTop:"clamp(46px, 6vw, 64px)"},"data-gufi-src":"sections/barrio.tsx:126"},__gh("h2",{style:H22,"data-gufi-src":"sections/barrio.tsx:127"},`Pisos tur\xEDsticos en ${barrio.nombre}: lo que dice la norma`),__gh("p",{style:P2,"data-gufi-src":"sections/barrio.tsx:128"},ficha2.normativa),__gh("p",{style:{margin:"0 0 18px",fontSize:14,lineHeight:1.6,color:T.muted},"data-gufi-src":"sections/barrio.tsx:129"},"Fuente:"," ",__gh("a",{href:FUENTE_NORMA.url,target:"_blank",rel:"noopener noreferrer",style:{color:T.muted,textDecoration:"underline",textUnderlineOffset:2},"data-gufi-src":"sections/barrio.tsx:131"},FUENTE_NORMA.texto))),ficha2.preguntas&&ficha2.preguntas.length>0&&__gh("section",{style:{marginTop:"clamp(46px, 6vw, 64px)"},"data-gufi-src":"sections/barrio.tsx:139"},__gh("h2",{style:H22,"data-gufi-src":"sections/barrio.tsx:140"},"Preguntas"),__gh("div",{style:{borderTop:`1px solid ${T.lineSoft}`},"data-gufi-src":"sections/barrio.tsx:141"},ficha2.preguntas.map(q=>__gh("div",{key:q.p,style:{padding:"20px 0",borderBottom:`1px solid ${T.lineSoft}`},"data-gufi-src":"sections/barrio.tsx:143"},__gh("h3",{style:{margin:0,fontSize:17.5,lineHeight:1.35,fontWeight:600,letterSpacing:"-0.01em",color:T.ink},"data-gufi-src":"sections/barrio.tsx:144"},q.p),__gh("p",{style:{margin:"8px 0 0",fontSize:16,lineHeight:1.65,color:T.body},"data-gufi-src":"sections/barrio.tsx:145"},q.r)))))),__gh("div",{style:{maxWidth:ANCHO,margin:"0 auto",padding:"0 20px"},"data-gufi-src":"sections/barrio.tsx:153"},vecinos.length>0&&__gh("section",{style:{marginTop:AIRE},"data-gufi-src":"sections/barrio.tsx:155"},__gh("h2",{style:{...H22,marginBottom:8},"data-gufi-src":"sections/barrio.tsx:156"},"Barrios de al lado"),__gh("div",{style:{borderTop:`1px solid ${T.lineSoft}`},"data-gufi-src":"sections/barrio.tsx:157"},vecinos.map(v=>__gh("a",{key:v.slug,href:url(rutaBarrio(v.slug)),className:"bq-vecino",style:{display:"grid",gridTemplateColumns:"minmax(0, 1fr) auto",alignItems:"center",gap:16,padding:"16px 0",borderBottom:`1px solid ${T.lineSoft}`,textDecoration:"none",color:"inherit"},"data-gufi-src":"sections/barrio.tsx:159"},__gh("span",{"data-gufi-src":"sections/barrio.tsx:160"},__gh("span",{style:{display:"block",fontSize:17,lineHeight:1.35,fontWeight:500,color:T.ink},"data-gufi-src":"sections/barrio.tsx:161"},v.titulo),__gh("span",{style:{display:"block",marginTop:3,fontSize:14,color:T.muted},"data-gufi-src":"sections/barrio.tsx:162"},`${dondeCae(v)} \xB7 ${v.pisos} ${Number(v.pisos)===1?"casa":"casas"}`)),__gh(import_lucide_react48.ArrowRight,{className:"bq-vecino-flecha",style:{width:17,height:17,color:T.muted}}))))),__gh(PorBarrios,{url,barrios,contar:b=>Number(b.pisos),titulo:"Todos los barrios donde tenemos casas",sin:barrio.slug})),__gh("div",{style:{height:AIRE},"data-gufi-src":"sections/barrio.tsx:173"}),__gh(Contactanos,{gufi,origen:`barrios/${barrio.slug}`,inicial:enCentro?"tradicional":"turistico"}),__gh(WhatsApp,{texto:`Hola, tengo un piso en ${barrio.nombre} y quiero saber c\xF3mo trabaj\xE1is.`}),__gh("style",{"data-gufi-src":"sections/barrio.tsx:178"},` .bq-barrio-cifras { display: grid; grid-template-columns: repeat(${cifras.length}, minmax(0, 1fr)); gap: 24px; } @media (max-width: 900px) { .bq-barrio-cifras { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 28px; } } .bq-guia-a { color: ${T.accent}; text-decoration: underline; text-underline-offset: 2px; text-decoration-thickness: 1px; } .bq-vecino:hover .bq-vecino-flecha { transform: translateX(4px); color: ${T.accent} !important; } .bq-vecino-flecha { transition: transform 0.22s ease, color 0.2s ease; } @media (prefers-reduced-motion: reduce) { .bq-vecino-flecha { transition: none; } } `))}function Casas2({titulo:titulo3,pisos,url}){let[vistos,setVistos]=(0,import_react49.useState)(DE_A2);return pisos.length===0?null:__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:"clamp(40px, 5vw, 56px) 20px 0"},"data-gufi-src":"sections/barrio.tsx:195"},__gh("h2",{style:{...H22,display:"flex",alignItems:"baseline",gap:10},"data-gufi-src":"sections/barrio.tsx:196"},titulo3," ",__gh("span",{style:{fontSize:17,color:T.muted,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/barrio.tsx:197"},pisos.length)),__gh("div",{className:"bq-carrusel",style:{display:"grid",gridTemplateColumns:"repeat(auto-fill, minmax(240px, 1fr))",gap:18},"data-gufi-src":"sections/barrio.tsx:199"},pisos.slice(0,vistos).map(p=>__gh(Tarjeta,{key:p.id,piso:p,href:url(`/${p.slug}`),lazy:!0}))),pisos.length>vistos&&__gh("button",{type:"button",onClick:()=>setVistos(v=>v+DE_A2*2),className:"bq-boton",style:{...BOTON_CONTORNO,marginTop:22,background:T.surface,cursor:"pointer"},"data-gufi-src":"sections/barrio.tsx:205"},`Ver m\xE1s (${pisos.length-vistos})`))}var H22={margin:"0 0 16px",fontFamily:SANS,fontSize:"clamp(25px, 3.2vw, 34px)",lineHeight:1.15,fontWeight:PESO_SECCION,letterSpacing:"-0.025em",color:T.ink},P2={margin:"0 0 18px",fontSize:17,lineHeight:1.75,color:T.body};var import_lucide_react49=require("lucide-react");function Barrios({gufi,url,barrios}){let lista=barrios.filter(b=>b.publicado).sort((a,b)=>Number(b.pisos)-Number(a.pisos)||a.nombre.localeCompare(b.nombre,"es")),casas=lista.reduce((s,b)=>s+Number(b.pisos),0);return __gh("div",{"data-gufi-src":"sections/barrios.tsx:26"},__gh(Cabecera4,{path:"/barrios",antetitulo:"Madrid",apunte:`${lista.length} barrios \xB7 ${casas} casas`}),__gh("section",{style:{maxWidth:ANCHO,margin:"0 auto",padding:"6px 20px 0"},"data-gufi-src":"sections/barrios.tsx:29"},__gh("div",{style:{background:T.surface,border:`1px solid ${T.lineSoft}`,borderRadius:24,overflow:"hidden"},"data-gufi-src":"sections/barrios.tsx:30"},lista.map((b,i)=>{let foto2=b.foto?fotoLigera(b.foto):null,partes=[];return Number(b.estancias)>0&&partes.push(`${b.estancias} por noches`),Number(b.alquileres)>0&&partes.push(`${b.alquileres} por meses`),Number(b.ventas)>0&&partes.push(`${b.ventas} en venta`),__gh("a",{key:b.slug,href:url(rutaBarrio(b.slug)),className:"bq-barrios-fila",style:{display:"grid",gridTemplateColumns:"64px minmax(0, 1fr) auto",alignItems:"center",gap:18,padding:"14px clamp(14px, 3vw, 24px)",borderTop:i===0?"none":`1px solid ${T.lineSoft}`,textDecoration:"none",color:"inherit"},"data-gufi-src":"sections/barrios.tsx:38"},__gh("span",{style:{width:64,height:64,borderRadius:14,overflow:"hidden",background:T.surfaceAlt,display:"block"},"data-gufi-src":"sections/barrios.tsx:53"},foto2&&__gh("img",{...foto2,alt:b.nombre,loading:"lazy",decoding:"async",sizes:"64px",style:{display:"block",width:"100%",height:"100%",objectFit:"cover"},"data-gufi-src":"sections/barrios.tsx:54"})),__gh("span",{style:{minWidth:0},"data-gufi-src":"sections/barrios.tsx:56"},__gh("span",{style:{display:"block",fontSize:17.5,lineHeight:1.3,fontWeight:500,letterSpacing:"-0.01em",color:T.ink},"data-gufi-src":"sections/barrios.tsx:57"},b.nombre),__gh("span",{style:{display:"block",marginTop:3,fontSize:14,lineHeight:1.45,color:T.muted},"data-gufi-src":"sections/barrios.tsx:58"},dondeCae(b)),__gh("span",{style:{display:"block",marginTop:2,fontSize:14,lineHeight:1.45,color:T.body},"data-gufi-src":"sections/barrios.tsx:59"},partes.join(" \xB7 "))),__gh("span",{style:{display:"flex",alignItems:"center",gap:10,color:T.muted},"data-gufi-src":"sections/barrios.tsx:61"},__gh("span",{style:{fontSize:15,fontVariantNumeric:"tabular-nums"},"data-gufi-src":"sections/barrios.tsx:62"},b.pisos),__gh(import_lucide_react49.ArrowRight,{className:"bq-barrios-flecha",style:{width:17,height:17}})))}))),__gh("article",{style:{maxWidth:760,margin:"0 auto",padding:`${AIRE} 20px 0`},"data-gufi-src":"sections/barrios.tsx:71"},__gh("h2",{style:H23,"data-gufi-src":"sections/barrios.tsx:72"},"Pisos tur\xEDsticos en Madrid: lo que dice la norma por zonas"),__gh("p",{style:P3,"data-gufi-src":"sections/barrios.tsx:73"},"Desde el Plan RESIDE, Madrid tiene dos zonas. Dentro del Centro Hist\xF3rico (el distrito Centro y parte de los distritos de alrededor) no se puede abrir un piso tur\xEDstico en un edificio de viviendas, en ninguna planta. Fuera, en un edificio de viviendas s\xF3lo cabe en planta baja, primera o por debajo de la baja, con acceso independiente desde la calle. Cada barrio cuenta en su p\xE1gina en qu\xE9 caso est\xE1."),__gh("p",{style:P3,"data-gufi-src":"sections/barrios.tsx:79"},"Donde no se puede, lo que funciona es el alquiler por meses y el de todo el a\xF1o, y los llevamos igual que el tur\xEDstico."),__gh("p",{style:{margin:"0 0 18px",fontSize:14,lineHeight:1.6,color:T.muted},"data-gufi-src":"sections/barrios.tsx:82"},"Fuente:"," ",__gh("a",{href:FUENTE_NORMA.url,target:"_blank",rel:"noopener noreferrer",style:{color:T.muted,textDecoration:"underline",textUnderlineOffset:2},"data-gufi-src":"sections/barrios.tsx:84"},FUENTE_NORMA.texto))),__gh("div",{style:{height:AIRE},"data-gufi-src":"sections/barrios.tsx:90"}),__gh(Contactanos,{gufi,origen:"barrios"}),__gh("style",{"data-gufi-src":"sections/barrios.tsx:93"},` .bq-barrios-fila { transition: background 0.2s ease; } .bq-barrios-fila:hover { background: ${T.bg}; } .bq-barrios-flecha { transition: transform 0.22s ease, color 0.2s ease; } .bq-barrios-fila:hover .bq-barrios-flecha { transform: translateX(4px); color: ${T.accent}; } @media (max-width: 480px) { .bq-barrios-fila { grid-template-columns: 52px minmax(0, 1fr) auto !important; gap: 14px !important; } .bq-barrios-fila > span:first-child { width: 52px !important; height: 52px !important; } } @media (prefers-reduced-motion: reduce) { .bq-barrios-fila, .bq-barrios-flecha { transition: none; } } `))}var H23={margin:"0 0 16px",fontFamily:SANS,fontSize:"clamp(25px, 3.2vw, 34px)",lineHeight:1.15,fontWeight:PESO_SECCION,letterSpacing:"-0.025em",color:T.ink},P3={margin:"0 0 18px",fontSize:17,lineHeight:1.75,color:T.body};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",...Object.fromEntries(RUTAS_GUIAS.map(r=>[`guia${r}`,r])),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",barrios:"/barrios",barrio:"/barrios/:slug",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_react50.useState)(null);(0,import_react50.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:datosBarrios,loading:cargandoBarrios}=gufi.useData("web__barrios",{pageSize:100,sorters:[{field:"orden",order:"asc"}],fields:CAMPOS_BARRIO}),[fichaBarrio,setFichaBarrio]=(0,import_react50.useState)(null);(0,import_react50.useEffect)(()=>{if(vista!=="barrio"||params.slug===void 0)return;let slug=params.slug,vigente=!0;return gufi.query("web__barrios",{filters:[{field:"slug",operator:"eq",value:slug}],fields:CAMPOS_BARRIO_FICHA,pageSize:1}).then(r=>{vigente&&setFichaBarrio({slug,ficha:r.data[0]??null})},e=>setFichaBarrio(()=>{throw e})),()=>{vigente=!1}},[gufi,vista,params.slug]);let barrios=(0,import_react50.useMemo)(()=>datosBarrios.filter(b=>b.publicado===!0),[datosBarrios]),{data:datosTerminos}=gufi.useData("web__terminos",{pageSize:200}),{data:datosPuente}=gufi.useData("web__articulo_terminos",{pageSize:1e3}),pisos=(0,import_react50.useMemo)(()=>{let publicados=data.filter(p=>p.publicado===!0),rango3=p=>tieneFoto(p)?esHostal(p)?1:0:2;return publicados.sort((a,b)=>{let d2=rango3(a)-rango3(b);return d2!==0?d2:(a.orden??0)-(b.orden??0)})},[data]),articulos=(0,import_react50.useMemo)(()=>datosArticulos.filter(a=>a.publicado===!0),[datosArticulos]),terminos=(0,import_react50.useMemo)(()=>datosTerminos,[datosTerminos]),puente=(0,import_react50.useMemo)(()=>datosPuente,[datosPuente]),ciudades=(0,import_react50.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",...Object.fromEntries(RUTAS_GUIAS.map(r=>[`guia${r}`,r])),barrios:"/barrios",barrio:"/barrios",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),esGuia=RUTAS_GUIAS.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)||["barrios","barrio","ficha"].includes(vista)&&cargandoBarrios||vista==="barrio"&&(fichaBarrio===null||fichaBarrio.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:291"},__gh("style",{"data-gufi-src":"page.tsx:301"},ESTILOS),__gh(Navbar,{url,activa:rutaActiva,fondoOscuro:conHero,claro}),__gh("main",{"data-gufi-src":"page.tsx:310"},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,barrios}):vista==="cuenta"?__gh(Cuenta,{gufi,url}):vista==="estancias"?__gh(Estancias,{gufi,url,pisos,barrios}):vista==="alquileres"?__gh(Inmo,{gufi,url,pisos,seccion:"alquileres",barrios}):vista==="venta"?__gh(Inmo,{gufi,url,pisos,seccion:"venta",barrios}):vista==="reformas"?__gh(Reformas,{gufi,url,pisos}):vista==="barrios"?__gh(Barrios,{gufi,url,barrios}):vista==="barrio"?__gh(UnBarrio,{gufi,url,slug:params.slug,barrios,pisos,ficha:fichaBarrio.ficha}):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}):esGuia?__gh(Guia,{gufi,url,pisos,ciudades,path:rutaActiva}):esLegal?__gh(Legal,{path:rutaActiva}):vista==="ficha"?__gh(UnSoloSegmento,{gufi,url,pisos,ficha:ficha2,articulos,terminos,puente,slug:params.slug,barrios}):__gh(NoEncontrado,{url,que:params.slug??""})),!esperando&&__gh(Footer,{url,alojamientos:pisos.filter(p=>p.seccion==="estancias_cortas").length,ciudades:ciudades.length,barrios}),gufi.track&&__gh(AvisoCookies,{gufi,url}))}function UnSoloSegmento({gufi,url,pisos,ficha:ficha2,articulos,terminos,puente,slug,barrios}){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},barrio=piso?barrios.find(b=>b.id===piso.zona):void 0,delBarrio=p=>barrio!==void 0&&p.zona===barrio.id?0:1;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)=>delBarrio(a)-delBarrio(b)||Number(b.valoracion)-Number(a.valoracion)).slice(0,12);return __gh(Estancia,{gufi,url,piso,vecinos,barrio})}if(piso){let vecinos=pisos.filter(p=>p.id!==piso.id&&p.seccion===piso.seccion).sort((a,b)=>delBarrio(a)-delBarrio(b)).slice(0,12);return __gh(Inmueble,{gufi,url,piso,vecinos,barrio})}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??""})}function UnBarrio({gufi,url,slug,barrios,pisos,ficha:ficha2}){let barrio=barrios.find(b=>b.slug===slug);return barrio===void 0||ficha2===null?__gh(NoEncontrado,{url,que:slug??""}):__gh(BarrioPagina,{gufi,url,barrio,ficha:ficha2,pisos,barrios})}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:645"},__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:658"}),"Cargando",__gh("style",{"data-gufi-src":"page.tsx:669"},"@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;