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});module.exports=__toCommonJS(stdin_exports);var import_react3=__toESM(require("react"));var import_react=__toESM(require("react")),CP_TO_CITY={"01":"Vitoria-Gasteiz","02":"Albacete","03":"Alicante","04":"Almer\xEDa","05":"\xC1vila","06":"Badajoz","07":"Palma de Mallorca","08":"Barcelona","09":"Burgos",10:"C\xE1ceres",11:"C\xE1diz",12:"Castell\xF3n",13:"Ciudad Real",14:"C\xF3rdoba",15:"A Coru\xF1a",16:"Cuenca",17:"Girona",18:"Granada",19:"Guadalajara",20:"San Sebasti\xE1n",21:"Huelva",22:"Huesca",23:"Ja\xE9n",24:"Le\xF3n",25:"Lleida",26:"Logro\xF1o",27:"Lugo",28:"Madrid",29:"M\xE1laga",30:"Murcia",31:"Pamplona",32:"Ourense",33:"Oviedo",34:"Palencia",35:"Las Palmas",36:"Pontevedra",37:"Salamanca",38:"Santa Cruz de Tenerife",39:"Santander",40:"Segovia",41:"Sevilla",42:"Soria",43:"Tarragona",44:"Teruel",45:"Toledo",46:"Valencia",47:"Valladolid",48:"Bilbao",49:"Zamora",50:"Zaragoza",51:"Ceuta",52:"Melilla"};function cityFromCP(cp){let c=String(cp||"").replace(/\s/g,"");return/^\d{5}$/.test(c)?CP_TO_CITY[c.slice(0,2)]??null:null}var s=v=>v==null?"":String(v);function authErrorMessage(code,tr2){switch(code){case"EMAIL_EXISTS":return tr2("Ese email ya est\xE1 registrado");case"INVALID_CREDENTIALS":return tr2("Email o contrase\xF1a incorrectos");case"PASSWORD_TOO_SHORT":return tr2("La contrase\xF1a debe tener al menos 6 caracteres");case"NO_PASSWORD_SET":return tr2("Esta cuenta no tiene contrase\xF1a. Pide ayuda para restablecerla.");case"INVALID_EMAIL":return tr2("Email inv\xE1lido");case"NOMBRE_REQUIRED":return tr2("El nombre es obligatorio");default:return"Error: "+(code||tr2("No se pudo completar la autenticaci\xF3n"))}}function EcomAuthModal({open,initialMode="login",onClose,onAuthed,gufi,tr:tr2,notify,collectAddress=!1,enableMagic=!1,storeLogo,onOpenLegal,minPassword=8,ctokenKey="gufi_sf_ctoken"}){let[mode,setMode]=(0,import_react.useState)(initialMode),[busy,setBusy]=(0,import_react.useState)(!1),[error,setError]=(0,import_react.useState)(""),[magicSent,setMagicSent]=(0,import_react.useState)(""),[cpCity,setCpCity]=(0,import_react.useState)("");import_react.default.useEffect(()=>{open&&(setMode(initialMode),setError(""),setMagicSent(""),setCpCity(""))},[open,initialMode]);let resolveCid=()=>s(gufi?.context?.activeCompany?.id)||s(gufi?.context?.activeCompany?.company_id)||s(gufi?.siteInfo?.company_id)||typeof window<"u"&&window.location.pathname.match(/\/(?:app\/)?(\d+)\//)?.[1]||"",callAuto=async(name,input)=>{let cid=resolveCid();if(!cid)throw new Error("No companyId for auth call");let ctoken="";try{ctoken=localStorage.getItem(ctokenKey)||""}catch{}let resp=await fetch(`/api/public/${cid}/automation/${name}`,{method:"POST",headers:{"Content-Type":"application/json",...ctoken?{"x-gufi-ctoken":ctoken}:{}},body:JSON.stringify(input)}),json=null;try{json=await resp.json()}catch{}if(!resp.ok)throw new Error(json?.error||`HTTP ${resp.status}`);return json?.result??json},exchangeSession=async token=>{let slug=s(gufi?.siteInfo?.slug);if(!slug||!token)return;let res=await fetch(`/s/auth/${encodeURIComponent(slug)}/token-session`,{method:"POST",headers:{"Content-Type":"application/json"},body:JSON.stringify({token})});if(!res.ok){console.warn("[auth] canje de sesi\xF3n fall\xF3:",res.status);return}let data=await res.json().catch(()=>null);if(data?.ctoken)try{localStorage.setItem(ctokenKey,String(data.ctoken))}catch{}},switchMode=m=>{setMode(m),setError(""),setMagicSent("")},requestMagic=async email=>{if(!email){setError(tr2("Email obligatorio"));return}setError(""),setBusy(!0);try{let r=await callAuto("send_magic_link_email",{email});if(r?.ok===!1)throw new Error(r?.error||"MAGIC_FAILED");setMagicSent(email)}catch(err){setError(err?.message||tr2("No se pudo enviar el enlace"))}finally{setBusy(!1)}},handleSubmit=async e=>{if(e.preventDefault(),busy)return;let fd=new FormData(e.currentTarget),email=s(fd.get("email")).toLowerCase();if(mode==="magic"){await requestMagic(email);return}let password=s(fd.get("password")),nombre=s(fd.get("nombre")||email.split("@")[0]),acepta_marketing=fd.get("acepta_marketing")==="on",telefonoAlta=s(fd.get("telefono")).replace(/[\s\-.]/g,""),prefijoAlta=s(fd.get("telefono_prefijo")||"+34"),apellidosAlta=s(fd.get("apellidos")).trim(),cpAlta=s(fd.get("cp")).replace(/\D/g,"").slice(0,5),notasAlta=s(fd.get("notas")).trim(),piezasAlta=collectAddress?{numero_envio:s(fd.get("numero")),bloque_envio:s(fd.get("portal")),piso_envio:s(fd.get("piso")),puerta_envio:s(fd.get("puerta"))}:{},calle=s(fd.get("calle")),direccionAlta=collectAddress?[[calle,piezasAlta.numero_envio,piezasAlta.bloque_envio,piezasAlta.piso_envio,piezasAlta.puerta_envio].filter(Boolean).join(" "),[cpAlta,cityFromCP(cpAlta)].filter(Boolean).join(" ")].filter(Boolean).join(", "):"";if(!email||!password){setError(tr2("Email y contrase\xF1a obligatorios"));return}if(mode==="register"){if(password.lengthnull);if(chk?.exists===!0&&chk?.hasPassword===!1){setError(""),setMode("magic"),await requestMagic(email);return}}let msg=authErrorMessage(code,tr2);setError(msg),notify(msg)}finally{setBusy(!1)}},title=tr2(mode==="login"?"Bienvenido":mode==="magic"?"Entrar sin contrase\xF1a":"Crear cuenta"),sub=tr2(mode==="login"?"Accede a tu cuenta para ver tus pedidos y guardar tus datos.":mode==="magic"?"Te enviamos un enlace a tu email. Un clic y est\xE1s dentro \u2014 sin recordar nada.":"\xDAnete para disfrutar de env\xEDos m\xE1s r\xE1pidos y seguimiento de pedidos.");return __gh("div",{className:`AM ${open?"o":""}`,onClick:onClose,"data-gufi-src":"components/EcomAuthModal.tsx:237"},__gh("div",{className:`AM-box ${mode==="register"&&collectAddress?"ancho":""}`,onClick:e=>e.stopPropagation(),"data-gufi-src":"components/EcomAuthModal.tsx:238"},__gh("button",{type:"button",className:"xc",onClick:onClose,"aria-label":tr2("Cerrar"),"data-gufi-src":"components/EcomAuthModal.tsx:239"},"\u2715"),storeLogo&&__gh("div",{style:{textAlign:"center",marginBottom:8},"data-gufi-src":"components/EcomAuthModal.tsx:240"},__gh("img",{src:storeLogo,alt:"",style:{height:40,objectFit:"contain"},"data-gufi-src":"components/EcomAuthModal.tsx:240"})),__gh("h2",{"data-gufi-src":"components/EcomAuthModal.tsx:241"},title),__gh("p",{"data-gufi-src":"components/EcomAuthModal.tsx:242"},sub),mode==="magic"&&magicSent?__gh("div",{style:{marginTop:8},"data-gufi-src":"components/EcomAuthModal.tsx:245"},__gh("p",{style:{fontSize:14},"data-gufi-src":"components/EcomAuthModal.tsx:246"},tr2("Te hemos enviado un enlace a")," ",__gh("b",{"data-gufi-src":"components/EcomAuthModal.tsx:246"},magicSent),"."),__gh("button",{type:"button",className:"fb",style:{marginTop:12},onClick:()=>switchMode("login"),"data-gufi-src":"components/EcomAuthModal.tsx:247"},tr2("Volver"))):__gh("form",{onSubmit:handleSubmit,"data-gufi-src":"components/EcomAuthModal.tsx:250"},__gh("div",{className:"fi","data-gufi-src":"components/EcomAuthModal.tsx:251"},__gh("label",{"data-gufi-src":"components/EcomAuthModal.tsx:251"},tr2("Email")),__gh("input",{name:"email",type:"email",autoComplete:"email",required:!0,placeholder:"tu@email.com","data-gufi-src":"components/EcomAuthModal.tsx:252"})),mode!=="magic"&&__gh("div",{className:"fi","data-gufi-src":"components/EcomAuthModal.tsx:255"},__gh("label",{"data-gufi-src":"components/EcomAuthModal.tsx:255"},tr2("Contrase\xF1a")),__gh("input",{name:"password",type:"password",autoComplete:mode==="login"?"current-password":"new-password",required:!0,placeholder:"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022",minLength:mode==="register"?minPassword:void 0,"data-gufi-src":"components/EcomAuthModal.tsx:256"})),mode==="register"&&__gh(__gf,null,__gh("div",{style:{fontSize:12,color:"var(--t3,#a1a1aa)",margin:"-4px 0 10px",lineHeight:1.4},"data-gufi-src":"components/EcomAuthModal.tsx:262"},tr2("M\xEDnimo 8 caracteres, una may\xFAscula y un n\xFAmero")),__gh("div",{className:"fi","data-gufi-src":"components/EcomAuthModal.tsx:263"},__gh("label",{"data-gufi-src":"components/EcomAuthModal.tsx:263"},tr2("Repetir contrase\xF1a")),__gh("input",{name:"password2",type:"password",autoComplete:"new-password",required:!0,minLength:minPassword,placeholder:"\u2022\u2022\u2022\u2022\u2022\u2022\u2022\u2022","data-gufi-src":"components/EcomAuthModal.tsx:264"})),__gh("div",{style:{display:"flex",gap:10},"data-gufi-src":"components/EcomAuthModal.tsx:265"},__gh("div",{className:"fi",style:{flex:1},"data-gufi-src":"components/EcomAuthModal.tsx:266"},__gh("label",{"data-gufi-src":"components/EcomAuthModal.tsx:266"},tr2("Nombre")),__gh("input",{name:"nombre",required:!0,autoComplete:"given-name",placeholder:tr2("Nombre"),"data-gufi-src":"components/EcomAuthModal.tsx:266"})),__gh("div",{className:"fi",style:{flex:1},"data-gufi-src":"components/EcomAuthModal.tsx:267"},__gh("label",{"data-gufi-src":"components/EcomAuthModal.tsx:267"},tr2("Apellidos")),__gh("input",{name:"apellidos",required:!0,autoComplete:"family-name",placeholder:tr2("Apellidos"),"data-gufi-src":"components/EcomAuthModal.tsx:267"}))),__gh("div",{className:"fi","data-gufi-src":"components/EcomAuthModal.tsx:269"},__gh("label",{"data-gufi-src":"components/EcomAuthModal.tsx:269"},tr2("Tel\xE9fono")),__gh("div",{style:{display:"flex",gap:8},"data-gufi-src":"components/EcomAuthModal.tsx:270"},__gh("select",{name:"telefono_prefijo",defaultValue:"+34",style:{width:88,flexShrink:0,border:"1.5px solid rgba(0,0,0,.12)",borderRadius:10,background:"#fff",font:"inherit",fontSize:14,padding:"0 8px"},"data-gufi-src":"components/EcomAuthModal.tsx:271"},__gh("option",{value:"+34","data-gufi-src":"components/EcomAuthModal.tsx:272"},"+34"),__gh("option",{value:"+33","data-gufi-src":"components/EcomAuthModal.tsx:272"},"+33"),__gh("option",{value:"+351","data-gufi-src":"components/EcomAuthModal.tsx:272"},"+351"),__gh("option",{value:"+44","data-gufi-src":"components/EcomAuthModal.tsx:272"},"+44"),__gh("option",{value:"+49","data-gufi-src":"components/EcomAuthModal.tsx:272"},"+49")),__gh("input",{name:"telefono",type:"tel",autoComplete:"tel",required:!0,placeholder:"612 345 678",style:{flex:1},"data-gufi-src":"components/EcomAuthModal.tsx:274"}))),collectAddress&&__gh(__gf,null,__gh("div",{className:"fi","data-gufi-src":"components/EcomAuthModal.tsx:279"},__gh("label",{"data-gufi-src":"components/EcomAuthModal.tsx:279"},tr2("Calle")),__gh("input",{name:"calle",autoComplete:"address-line1",required:!0,placeholder:tr2("Nombre de la calle"),"data-gufi-src":"components/EcomAuthModal.tsx:279"})),__gh("div",{className:"AM-dir4","data-gufi-src":"components/EcomAuthModal.tsx:280"},__gh("div",{className:"fi","data-gufi-src":"components/EcomAuthModal.tsx:281"},__gh("label",{"data-gufi-src":"components/EcomAuthModal.tsx:281"},tr2("N\xFAmero")),__gh("input",{name:"numero",placeholder:"12","data-gufi-src":"components/EcomAuthModal.tsx:281"})),__gh("div",{className:"fi","data-gufi-src":"components/EcomAuthModal.tsx:282"},__gh("label",{"data-gufi-src":"components/EcomAuthModal.tsx:282"},tr2("Portal")),__gh("input",{name:"portal",placeholder:"B","data-gufi-src":"components/EcomAuthModal.tsx:282"})),__gh("div",{className:"fi","data-gufi-src":"components/EcomAuthModal.tsx:283"},__gh("label",{"data-gufi-src":"components/EcomAuthModal.tsx:283"},tr2("Piso")),__gh("input",{name:"piso",placeholder:"3","data-gufi-src":"components/EcomAuthModal.tsx:283"})),__gh("div",{className:"fi","data-gufi-src":"components/EcomAuthModal.tsx:284"},__gh("label",{"data-gufi-src":"components/EcomAuthModal.tsx:284"},tr2("Puerta")),__gh("input",{name:"puerta",placeholder:"A","data-gufi-src":"components/EcomAuthModal.tsx:284"}))),__gh("div",{className:"fi","data-gufi-src":"components/EcomAuthModal.tsx:286"},__gh("label",{"data-gufi-src":"components/EcomAuthModal.tsx:286"},tr2("C\xF3digo postal")),__gh("input",{name:"cp",inputMode:"numeric",maxLength:5,required:!0,placeholder:"28016",onChange:e=>setCpCity(cityFromCP(e.target.value.replace(/\D/g,"").slice(0,5))||""),"data-gufi-src":"components/EcomAuthModal.tsx:287"}),cpCity&&__gh("div",{style:{fontSize:13,color:"var(--t1,#1a1a16)",marginTop:6,fontWeight:500},"data-gufi-src":"components/EcomAuthModal.tsx:289"},cpCity)),__gh("div",{className:"fi","data-gufi-src":"components/EcomAuthModal.tsx:291"},__gh("label",{"data-gufi-src":"components/EcomAuthModal.tsx:291"},tr2("Notas de direcci\xF3n")),__gh("input",{name:"notas",autoComplete:"off",placeholder:tr2("Portal, timbre, referencia de entrega\u2026"),"data-gufi-src":"components/EcomAuthModal.tsx:291"}))),__gh("div",{style:{marginTop:4},"data-gufi-src":"components/EcomAuthModal.tsx:294"},__gh("label",{style:{display:"flex",alignItems:"center",gap:8,cursor:"pointer",fontSize:12,color:"var(--t2,#52525b)",lineHeight:1.5,fontWeight:400,margin:0},"data-gufi-src":"components/EcomAuthModal.tsx:295"},__gh("input",{name:"acepta_marketing",type:"checkbox",style:{width:14,height:14,flexShrink:0,accentColor:"#0a0a0a",margin:0},"data-gufi-src":"components/EcomAuthModal.tsx:296"}),__gh("span",{style:{flex:1},"data-gufi-src":"components/EcomAuthModal.tsx:297"},tr2("Quiero recibir ofertas y novedades por email"))),onOpenLegal&&__gh("div",{style:{fontSize:12,color:"var(--t3,#a1a1aa)",marginTop:6,lineHeight:1.5},"data-gufi-src":"components/EcomAuthModal.tsx:300"},tr2("Al crear tu cuenta, aceptas nuestros")," ",__gh("button",{type:"button",onClick:()=>onOpenLegal("terms"),style:{background:"transparent",border:0,padding:0,color:"var(--t2,#52525b)",cursor:"pointer",font:"inherit",textDecoration:"underline",textUnderlineOffset:2},"data-gufi-src":"components/EcomAuthModal.tsx:302"},tr2("T\xE9rminos y Condiciones"))," ",tr2("y la")," ",__gh("button",{type:"button",onClick:()=>onOpenLegal("privacy"),style:{background:"transparent",border:0,padding:0,color:"var(--t2,#52525b)",cursor:"pointer",font:"inherit",textDecoration:"underline",textUnderlineOffset:2},"data-gufi-src":"components/EcomAuthModal.tsx:304"},tr2("Pol\xEDtica de Privacidad")),"."))),error&&__gh("div",{style:{color:"#b91c1c",fontSize:12,marginTop:8},"data-gufi-src":"components/EcomAuthModal.tsx:310"},error),__gh("button",{type:"submit",className:"fb",disabled:busy,style:{marginTop:14},"data-gufi-src":"components/EcomAuthModal.tsx:311"},busy?"\u2026":tr2(mode==="login"?"Iniciar sesi\xF3n":mode==="magic"?"Enviarme el enlace":"Crear cuenta"))),__gh("div",{className:"fl",style:{marginTop:14},"data-gufi-src":"components/EcomAuthModal.tsx:317"},mode==="login"&&__gh(__gf,null,enableMagic&&__gh("button",{type:"button",className:"fb-link",onClick:()=>switchMode("magic"),style:{background:"transparent",border:0,cursor:"pointer",font:"inherit",textDecoration:"underline",display:"block",marginBottom:6},"data-gufi-src":"components/EcomAuthModal.tsx:319"},tr2("Entrar sin contrase\xF1a")),__gh("span",{"data-gufi-src":"components/EcomAuthModal.tsx:320"},tr2("\xBFNo tienes cuenta?")," "),__gh("button",{type:"button",onClick:()=>switchMode("register"),style:{background:"transparent",border:0,cursor:"pointer",font:"inherit",fontWeight:600,textDecoration:"underline"},"data-gufi-src":"components/EcomAuthModal.tsx:321"},tr2("Crear una"))),mode==="register"&&__gh(__gf,null,__gh("span",{"data-gufi-src":"components/EcomAuthModal.tsx:324"},tr2("\xBFYa tienes cuenta?")," "),__gh("button",{type:"button",onClick:()=>switchMode("login"),style:{background:"transparent",border:0,cursor:"pointer",font:"inherit",fontWeight:600,textDecoration:"underline"},"data-gufi-src":"components/EcomAuthModal.tsx:325"},tr2("Iniciar sesi\xF3n"))),mode==="magic"&&!magicSent&&__gh("button",{type:"button",onClick:()=>switchMode("login"),style:{background:"transparent",border:0,cursor:"pointer",font:"inherit",textDecoration:"underline"},"data-gufi-src":"components/EcomAuthModal.tsx:328"},tr2("Volver")))))}var EcomAuthModal_default=EcomAuthModal;function clienteIdDePedido(user){let n=Number(user?.id);return Number.isInteger(n)&&n>0&&n<1e6?n:null}function lineaDePedido(pedidoId,item){return{pedido_id:pedidoId,producto_id:item.productId,cantidad:item.qty,precio_unitario:item.precio,subtotal:item.precio*item.qty,variante:item.size||null}}function leerApariencia(valor){return!valor||typeof valor!="object"||Array.isArray(valor)?null:valor}var HERO={compacto:"hero-compact",a_sangre:"hero-fullbleed"},REJILLA={2:"grid-2col",3:"grid-3col",4:"grid-4col",compacta:"grid-compacto"},TARJETA={minimal:"card-minimal",redondeada:"card-rounded",superpuesta:"card-overlay"},CARRITO={cajon:"cart-drawer",lateral:"cart-sticky-right"},PIE={minimo:"footer-minimal",completo:"footer-rich"};function formaDe(a){let f=a?.forma??{};return{hero:HERO[f.hero??"compacto"],grid:REJILLA[f.rejilla??"compacta"],card:TARJETA[f.tarjeta??"minimal"],cart:CARRITO[f.carrito??"cajon"],footer:PIE[f.pie??"minimo"],heroFondo:f.hero_fondo??"claro"}}var SOMBRAS={ninguna:"none",minimas:"minimal",suaves:"soft",marcadas:"sharp"},VARIABLES=["--bg","--fg","--brand","--brand-fg","--fg-muted","--bg-subtle","--border","--success","--danger","--font-sans","--font-serif","--radius-sm","--radius-md","--radius-lg","--radius-full","--space-mult","--shadow-preset","--ac","--bgd","--tl","--bgc","--bgp","--t1","--t2","--t3","--bl","--sn","--sf","--sr"];function limpiarApariencia(raiz){for(let v of VARIABLES)raiz.style.removeProperty(v)}function aplicarApariencia(raiz,a){let set=(k,v)=>{v==null||v===""||raiz.style.setProperty(k,String(v))},c=a.colores??{};set("--bg",c.fondo),set("--fg",c.texto),set("--brand",c.marca),set("--brand-fg",c.sobre_marca),set("--fg-muted",c.texto_suave),set("--bg-subtle",c.fondo_suave),set("--border",c.borde),set("--success",c.exito),set("--danger",c.error),set("--font-sans",a.letra?.texto),set("--font-serif",a.letra?.titulos);let e=a.esquinas??{};if(e.pequena!=null&&set("--radius-sm",`${e.pequena}px`),e.media!=null&&set("--radius-md",`${e.media}px`),e.grande!=null&&set("--radius-lg",`${e.grande}px`),e.completa!=null&&set("--radius-full",`${e.completa}px`),set("--space-mult",a.aire),set("--shadow-preset",a.sombras?SOMBRAS[a.sombras]:void 0),set("--ac",c.marca),set("--bgd",c.marca),set("--tl",c.sobre_marca),set("--bg",c.fondo),set("--bgc",c.fondo_suave),set("--bgp",c.fondo_suave),set("--t1",c.texto),set("--t2",c.texto_suave),set("--t3",c.texto_suave),set("--bl",c.borde),a.letra?.texto&&(set("--sn",`'${a.letra.texto}',system-ui,-apple-system,sans-serif`),a.letra.titulos||set("--sr",`'${a.letra.texto}',system-ui,-apple-system,sans-serif`)),a.letra?.titulos){let serif=`'${a.letra.titulos}',Georgia,'Times New Roman',serif`;set("--sf",serif),set("--sr",serif)}}var import_framer_motion=require("framer-motion");var import_react2=require("react"),MAX_RETRIES=2,BLANK="data:image/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==",failedSrc=new Set;function RetryImg({src,alt,onError,...props}){let base=typeof src=="string"?src:"",[currentSrc,setCurrentSrc]=(0,import_react2.useState)(base&&failedSrc.has(base)?BLANK:src),retryRef=(0,import_react2.useRef)(0),handleError=e=>{if(retryRef.current{setCurrentSrc(`${base}${base.includes("?")?"&":"?"}_r=${Date.now()}`)},delay);return}base&&failedSrc.add(base),setCurrentSrc(BLANK),onError&&onError(e)};return(0,import_react2.useEffect)(()=>{retryRef.current=0,setCurrentSrc(base&&failedSrc.has(base)?BLANK:src)},[src,base]),__gh("img",{src:currentSrc,alt,onError:handleError,...props,"data-gufi-src":"components/RetryImg.tsx:47"})}var __L=(()=>{try{let v=typeof localStorage<"u"?localStorage.getItem("gufi_lang"):null;if(v==="es"||v==="en")return v}catch{}return"es"})(),__TR={"Reservar cita":"Book an appointment","Esto es lo que nos has contado":"This is what you told us","Se lo pasamos a {pro} con tu cita para que llegue sabiendo tu caso.":"We pass it on to {pro} with your booking, so they arrive knowing your case.","Pedir cita con esto":"Book with this","Antes de la sesi\xF3n":"Before your session","Cu\xE9ntale tu caso":"Tell him your case","Contar mi caso":"Tell my case","Lo que nos has contado":"What you told us","Se\xF1ala d\xF3nde te molesta":"Point to where it hurts","Se lo pasamos a {pro} con tu cita.":"We pass it on with your booking.","Pide cita":"Book now","Ver productos":"Shop products","Tipo de sesi\xF3n":"Type of session","D\xEDa y hora":"Day and time","Tus datos":"Your details","Nombre y apellidos":"Full name","Direcci\xF3n donde vas a recibir la sesi\xF3n":"Address where the session will take place","Qu\xE9 te pasa (opcional)":"What is troubling you (optional)","Pedir esta cita":"Request this appointment","Enviando\u2026":"Sending\u2026","Volver al inicio":"Back to home",D\u00EDa:"Day","Hora no disponible":"Time not available",Servicios:"Services","Qu\xE9 puede hacer por ti":"What he can do for you","Ver disponibilidad":"See availability","C\xF3mo funciona":"How it works","Pedir hora, en tres pasos":"Book in three steps","\xBFReservamos?":"Shall we book it?","Mes anterior":"Previous month","Mes siguiente":"Next month","Ya ha pasado":"Already past","Sin huecos":"Fully booked","Con parte del d\xEDa cogido":"Partly booked","Qui\xE9n te trata":"Who treats you",Acciones:"Actions",Inicio:"Home",Reservar:"Book","Volver arriba":"Back to top","Primera sesi\xF3n":"First session","si es tu primera sesi\xF3n":"if it is your first session",Online:"Online","No trabaja este d\xEDa":"Not working this day","En gris, no trabaja":"Greyed out: not working","Pago cancelado. Tu carrito se ha mantenido.":"Payment cancelled. Your cart was kept.","C\xF3digo no encontrado":"Code not found","Este cup\xF3n ya no est\xE1 activo":"This coupon is no longer active","Cup\xF3n a\xFAn no v\xE1lido":"Coupon not yet valid","Cup\xF3n caducado":"Coupon expired","Cup\xF3n agotado":"Coupon exhausted","No se pudo validar el cup\xF3n":"Could not validate coupon","Email y contrase\xF1a obligatorios":"Email and password required","La contrase\xF1a debe tener al menos 6 caracteres":"Password must be at least 6 characters","Cuenta creada":"Account created","Sesi\xF3n iniciada":"Signed in","Ese email ya est\xE1 registrado":"That email is already registered","Email o contrase\xF1a incorrectos":"Incorrect email or password","Esta cuenta no tiene contrase\xF1a. Pide ayuda para restablecerla.":"This account has no password. Ask for help to reset it.","Email inv\xE1lido":"Invalid email","El nombre es obligatorio":"Name is required","No se pudo completar la autenticaci\xF3n":"Could not complete authentication","Sesi\xF3n cerrada":"Signed out","Conectando...":"Connecting...","Error al conectar: ":"Connection error: ",Men\u00FA:"Menu",Buscar:"Search",Cuenta:"Account",Bolsa:"Bag",Cerrar:"Close","Env\xEDo gratuito a partir de ":"Free shipping over "," \xB7 Devoluciones 14 d\xEDas \xB7 Pago seguro":" \xB7 14-day returns \xB7 Secure payment",Tienda:"Shop",Novedades:"New Arrivals",Sudaderas:"Hoodies",Camisetas:"T-Shirts",Pantalones:"Pants",Abrigos:"Coats",Jerseys:"Sweaters",Polos:"Polos",Shorts:"Shorts",Accesorios:"Accessories",Calzado:"Footwear",Mujer:"Women",Hombre:"Men",Deporte:"Sport",B\u00E1sicos:"Basics","Toda la colecci\xF3n":"Shop All","Mi cuenta":"My account",Acceder:"Sign in",Categor\u00EDas:"Categories",Bienvenido:"Welcome","Crear cuenta":"Create account","Tel\xE9fono no v\xE1lido":"Invalid phone number","Las contrase\xF1as no coinciden":"Passwords do not match","M\xEDnimo 8 caracteres, una may\xFAscula y un n\xFAmero":"At least 8 characters, one uppercase letter and one number","Repetir contrase\xF1a":"Confirm password","Notas de direcci\xF3n":"Address notes","Portal, timbre, referencia de entrega\u2026":"Building entrance, doorbell, delivery reference\u2026","Mis datos":"My details","Accede a tu cuenta para ver tus pedidos y guardar tus datos.":"Sign in to view your orders and save your details.","\xDAnete para disfrutar de env\xEDos m\xE1s r\xE1pidos y seguimiento de pedidos.":"Sign up for faster shipping and order tracking.",Nombre:"Name","Tu nombre":"Your name",Email:"Email",Contrase\u00F1a:"Password","Quiero recibir ofertas y novedades por email":"I want to receive offers and news by email","Al crear tu cuenta, aceptas nuestros":"By creating your account, you accept our","T\xE9rminos y Condiciones":"Terms and Conditions","y la":"and the","Pol\xEDtica de Privacidad":"Privacy Policy","Iniciar sesi\xF3n":"Sign in","\xBFNo tienes cuenta? ":"Don't have an account? ","Crear una":"Create one","\xBFQu\xE9 est\xE1s buscando?":"What are you looking for?",'No se encontraron resultados para "':'No results found for "',"Ver todos los resultados \u2192":"See all results \u2192","New Season":"New Season","Env\xEDo gratis +":"Free shipping +","Devoluciones 14 d\xEDas":"14-day returns","Solo quedan":"Only","en stock":"in stock","Sin stock":"Out of stock",Agotado:"Sold out","unidades de":"units of","Revisa tu bolsa antes de pagar":"Check your bag before paying","El tel\xE9fono es obligatorio":"Phone number is required",Largo:"Length",Ancho:"Width","Tienda cerrada temporalmente":"Store temporarily closed","Volveremos pronto":"We will be back soon","As Always, With Love":"As Always, With Love","Shop the Drop \u2192":"Shop the Drop \u2192","Env\xEDo express 24h":"24h express shipping","Edici\xF3n limitada":"Limited edition","Devoluci\xF3n gratuita":"Free returns","100% Original":"100% Original","Colecci\xF3n completa":"Full collection"," productos":" products",Todo:"All","Buscar productos...":"Search products...","No hay productos en esta categor\xEDa.":"No products in this category.","Cuenta ":"Account ","Mis pedidos":"My orders","\u2190 Anterior":"\u2190 Previous","Siguiente \u2192":"Next \u2192","Mi cesta":"My basket",Ayuda:"Help",Env\u00EDos:"Shipping",Devoluciones:"Returns","Gu\xEDa de tallas":"Size guide",FAQ:"FAQ",Legal:"Legal",Privacidad:"Privacy",T\u00E9rminos:"Terms",Cookies:"Cookies",Contacto:"Contact","Ver todo":"View all","\xDAnete al club":"Join the club","Bienvenido al club. Suscripci\xF3n confirmada.":"Welcome to the club. Subscription confirmed.","Tu email":"Your email",Suscribirme:"Subscribe","5% en tu primera compra":"5% off your first purchase","Env\xEDo gratis +\u20AC":"Free shipping +\u20AC","Pago seguro":"Secure payment","100% original":"100% original","\u2190 Seguir comprando":"\u2190 Continue shopping","Express checkout":"Express checkout",Pagar:"Pay","Procesando...":"Processing...","Confirmar pedido ":"Confirm order ","Pagar ":"Pay ","O completa los datos":"Or fill in your details","Contacto ":"Contact ","Direcci\xF3n de env\xEDo":"Shipping address",Espa\u00F1a:"Spain",Portugal:"Portugal",Francia:"France",Alemania:"Germany",Italia:"Italy",Apellidos:"Last name",Direcci\u00F3n:"Address","Piso, puerta (opcional)":"Apt, floor (optional)","C\xF3digo postal":"Postal code",Ciudad:"City",Provincia:"State / Province",Tel\u00E9fono:"Phone","Pol\xEDtica de devoluci\xF3n":"Return policy",Eliminar:"Remove",Quitar:"Remove","Mis citas":"My appointments","Mis {varios}":"My {varios}","Ver mis {varios}":"See my {varios}",Hoy:"Today",Marcar:"Mark",Deshacer:"Undo","Entra en tu cuenta para ver tus {varios}.":"Sign in to see your {varios}.","Aqu\xED aparecer\xE1 lo que {pro} te deje despu\xE9s de una sesi\xF3n.":"Whatever {pro} leaves you after a session will show up here.","{pro} ve lo que vas marcando: as\xED lo ajusta en la siguiente sesi\xF3n.":"{pro} sees what you tick, and adjusts it next session.","No hemos podido cargar tus {varios}.":"We could not load your {varios}.","Tu sesi\xF3n ha caducado. Vuelve a entrar.":"Your session expired. Sign in again.","Tu sesi\xF3n ha caducado. Vuelve a entrar para ver tus citas.":"Your session expired. Sign in again to see your appointments.","No hemos podido cargar tus citas. Int\xE9ntalo de nuevo.":"We could not load your appointments. Try again.",Reintentar:"Retry","Ver mis citas":"See my appointments","Tu pr\xF3xima cita":"Your next appointment",Despu\u00E9s:"Later",Anteriores:"Past","por venir":"upcoming",hechas:"done","por confirmar":"to confirm","Entra en tu cuenta para ver tus citas.":"Sign in to see your appointments.","Todav\xEDa no has pedido ninguna cita.":"You have not booked any appointment yet.","Pedir otra cita":"Book another appointment","Lo que dicen":"What people say","Gente que ya lo ha probado":"People who already tried it",Verificada:"Verified",Cliente:"Client","\xBFYa te ha tratado {pro}?":"Have you been treated by {pro}?","Cu\xE9ntalo en dos l\xEDneas. Ayuda a quien est\xE1 dudando si llamar.":"Tell it in two lines. It helps whoever is hesitating to call.","\xBFYa has comprado aqu\xED?":"Have you bought here before?","Cu\xE9ntalo en dos l\xEDneas. Ayuda a quien est\xE1 dudando si comprar.":"Tell it in two lines. It helps whoever is hesitating to buy.","Dejar mi rese\xF1a":"Leave my review","S\xE9 el primero en contarlo":"Be the first to tell it","Entra para dejar la tuya":"Sign in to leave yours","Enviar mi rese\xF1a":"Send my review","Un titular (opcional)":"A headline (optional)","Tu valoraci\xF3n":"Your rating",Cancelar:"Cancel",Calle:"Street",N\u00FAmero:"Number",Portal:"Entrance",Piso:"Floor",Puerta:"Door","Sin n\xFAmero (s/n)":"No number (s/n)","Notas de entrega (opcional)":"Delivery notes (optional)",Anterior:"Previous",Siguiente:"Next",Idioma:"Language",Desliza:"Scroll","\xBFQu\xE9 te pasaba y c\xF3mo fue? Lo que te habr\xEDa gustado leer a ti antes de llamar.":"What was wrong and how did it go? What you would have liked to read before calling.","Gracias. {pro} la revisa y la publica.":"Thanks. {pro} reviews it and publishes it.","Elige cu\xE1ntas estrellas.":"Pick how many stars.","Cu\xE9ntanos un poco m\xE1s, con una l\xEDnea no se entiende.":"Tell us a bit more.","Entra en tu cuenta para dejar tu rese\xF1a.":"Sign in to leave your review.","No se ha podido guardar. Int\xE9ntalo de nuevo.":"Could not save. Try again.","\u2713 Env\xEDo gratis":"\u2713 Free shipping"," \xB7 Env\xEDo gratis":" \xB7 Free shipping","C\xF3digo de descuento":"Discount code",Aplicar:"Apply","Subtotal \xB7 ":"Subtotal \xB7 "," art\xEDculos":" items","Descuento ":"Discount ",Env\u00EDo:"Shipping",Gratis:"Free",Total:"Total","Procesando tu pago":"Processing your payment","Esto solo durar\xE1 unos segundos. No cierres esta ventana.":"This will only take a few seconds. Do not close this window.","Gracias por tu compra":"Thank you for your purchase","Tu pedido ha sido confirmado. Recibir\xE1s un email con los detalles y el seguimiento del env\xEDo.":"Your order has been confirmed. You will receive an email with the details and shipping tracking.","Seguir comprando":"Continue shopping","Confirmando tu pago":"Confirming your payment","Estamos validando el pago con el banco. Esto normalmente tarda menos de un minuto.":"We are validating the payment with the bank. This usually takes less than a minute.","Si no recibes el email de confirmaci\xF3n en unos minutos, escr\xEDbenos a":"If you do not receive the confirmation email in a few minutes, write to us at","con tu n\xFAmero de pedido":"with your order number","No hemos podido confirmar tu pago":"We could not confirm your payment","Tu tarjeta puede haber sido cobrada, pero no hemos podido confirmar el pedido en nuestro sistema.":"Your card may have been charged, but we could not confirm the order in our system.","No vuelvas a pagar.":"Do not pay again.","Escr\xEDbenos a":"Write to us at","y lo resolvemos.":"and we will resolve it.","Contacta con la tienda con tu n\xFAmero de pedido":"Contact the store with your order number","para que lo resolvamos.":"so we can resolve it.","Volver a la tienda":"Back to the store","\u2190 Volver":"\u2190 Back","Cerrar sesi\xF3n":"Sign out","Hola, ":"Hello, ",Pedidos:"Orders","Total gastado":"Total spent","Ver mis pedidos":"View my orders","A\xFAn no tienes pedidos.":"You don't have any orders yet.",Pagado:"Paid",Preparado:"Prepared","En camino":"Shipping",Entregado:"Delivered",Pendiente:"Pending",Cancelado:"Cancelled"," ud":" u","y ":"and "," m\xE1s...":" more...","Cup\xF3n ":"Coupon ","Env\xEDo: ":"Shipping: ","Tracking: ":"Tracking: ","Tu pedido ser\xE1 enviado en 24-48h":"Your order will be shipped in 24-48h","Seguir env\xEDo (":"Track shipment (","Selecciona una talla":"Please select a size","A\xF1adido \u2713":"Added \u2713","A\xF1adir a la bolsa":"Add to bag","Quitar de favoritos":"Remove from favorites","A\xF1adir a favoritos":"Add to favorites",Favoritos:"Favorites","A\xFAn no tienes favoritos":"You have no favorites yet","Explora la colecci\xF3n y guarda las piezas que m\xE1s te gusten.":"Explore the collection and save the pieces you like most.","A\xF1adir al carrito todos mis favoritos":"Add all my favorites to cart","Bolsa (":"Bag (","A\xF1ade ":"Add "," m\xE1s para env\xEDo gratuito":" more for free shipping","Env\xEDo gratuito aplicado \u2713":"Free shipping applied \u2713","Tu bolsa est\xE1 vac\xEDa":"Your bag is empty","Explora la colecci\xF3n y encuentra piezas que te inspiren.":"Explore the collection and find pieces that inspire you.","Explorar la tienda":"Explore the store","C\xF3digo cup\xF3n":"Coupon code",Descuento:"Discount","Inicia sesi\xF3n para continuar":"Sign in to continue","Procesando pedido gratuito...":"Processing free order...","Confirmar pedido (gratis) \u2192":"Confirm order (free) \u2192","Pagar \u2192":"Pay \u2192","Tramitar pedido \u2192":"Checkout \u2192","Direcci\xF3n guardada":"Address saved","No se pudo guardar la direcci\xF3n":"Could not save address","Guardar direcci\xF3n":"Save address","Guardando...":"Saving...","Calle, n\xFAmero, piso\u2026":"Street, number, apt\u2026","Sin direcci\xF3n guardada":"No saved address","A\xF1ade tu direcci\xF3n de env\xEDo para agilizar tus pr\xF3ximos pedidos.":"Add your shipping address to speed up your next orders.",Editar:"Edit","\xDAltima actualizaci\xF3n:":"Last updated:","Informaci\xF3n general":"General information","Productos y precios":"Products and prices","Proceso de compra":"Purchase process","M\xE9todos de pago":"Payment methods",Garant\u00EDas:"Warranties",Responsabilidad:"Liability","Propiedad intelectual":"Intellectual property","Legislaci\xF3n aplicable":"Applicable law","Responsable del tratamiento":"Data controller","Datos que recogemos":"Data we collect","Finalidad del tratamiento":"Purpose of processing","Base legal":"Legal basis",Destinatarios:"Recipients",Conservaci\u00F3n:"Retention","Tus derechos":"Your rights",Seguridad:"Security","14 d\xEDas de devoluci\xF3n":"14-day returns","A\xF1ade tu direcci\xF3n de env\xEDo":"Add your shipping address","A\xF1ade tu primer producto desde el panel admin":"Add your first product from the admin panel",A\u00F1adir:"Add","A\xF1adir producto":"Add product","A\xFAn sin productos":"No products yet","Buscar...":"Search...","Calle, n\xFAmero, piso\u2026 *":"Street, number, apt\u2026 *","Canarias, Ceuta o Melilla":"Canary Islands, Ceuta or Melilla","C\xF3digo postal no v\xE1lido":"Invalid postal code","C\xF3digo postal no v\xE1lido o fuera de zona de env\xEDo":"Invalid postal code or outside shipping zone","C\xF3digo postal no v\xE1lido para Espa\xF1a":"Invalid postal code for Spain","Completa la direcci\xF3n":"Complete the address","Completa la direcci\xF3n de env\xEDo para activar el pago":"Complete the shipping address to enable payment","Comprar por categor\xEDa":"Shop by category","Descubrir la colecci\xF3n":"Discover the collection","Empieza a construir tu cat\xE1logo desde el panel":"Start building your catalog from the panel","En favoritos":"In favorites","en tu primera compra":"on your first purchase","Env\xEDo gratis a partir de ":"Free shipping from ","Hecho en Espa\xF1a":"Made in Spain","Introduce una direcci\xF3n v\xE1lida en Espa\xF1a antes de pagar":"Enter a valid address in Spain before paying","IVA incluido":"VAT included","La Colecci\xF3n":"The Collection","Lo necesitamos para calcular el env\xEDo y activar el pago.":"We need it to calculate shipping and enable payment.","Lo nuevo":"New in","No realizamos env\xEDos a esta direcci\xF3n":"We do not ship to this address","Nombre y apellidos *":"Full name *","Notas de env\xEDo (opcional)":"Delivery notes (optional)","Piezas hechas para el sol, el agua y la calma.":"Pieces made for the sun, the water and the calm.",Pr\u00F3ximamente:"Coming soon",Selecciona:"Select","Sin resultados":"No results","Tambi\xE9n te puede gustar":"You may also like","Quien compr\xF3 esto tambi\xE9n compr\xF3":"People who bought this also bought","Tu correo electr\xF3nico":"Your email address","Tu primer producto aparecer\xE1 aqu\xED":"Your first product will appear here","Tu sesi\xF3n caduc\xF3. Vuelve a iniciar sesi\xF3n":"Your session expired. Please sign in again","Ver todo \u2192":"View all \u2192",A\u00F1adido:"Added",Subtotal:"Subtotal",Nuevo:"New",Scroll:"Scroll","Just Dropped":"Just Dropped",Novedad:"New","SS26 Collection":"SS26 Collection","Resort & swimwear.":"Resort & swimwear.","Resort 26":"Resort 26","NEW DROP \xB7 JUST LANDED \xB7 EXCLUSIVE \xB7 LIMITED EDITION \xB7 NEW DROP \xB7 JUST LANDED \xB7 EXCLUSIVE \xB7 LIMITED EDITION \xB7 ":"NEW DROP \xB7 JUST LANDED \xB7 EXCLUSIVE \xB7 LIMITED EDITION \xB7 NEW DROP \xB7 JUST LANDED \xB7 EXCLUSIVE \xB7 LIMITED EDITION \xB7 ","ES \xB7 EUR \u20AC":"EN \xB7 EUR \u20AC",Con\u00F3cenos:"About us"},tr=s2=>__L==="es"?s2:__TR[s2]||s2;function useRevelar(dep){(0,import_react3.useLayoutEffect)(()=>{if(typeof window>"u"||typeof IntersectionObserver>"u")return;let pendientes=Array.from(document.querySelectorAll(".rv:not(.vis)"));if(!pendientes.length)return;let io=new IntersectionObserver(entradas=>{for(let e of entradas)e.isIntersecting&&(e.target.classList.add("vis"),io.unobserve(e.target))},{rootMargin:"0px 0px -8% 0px",threshold:.05});for(let el of pendientes){let r=el.getBoundingClientRect();if(r.height===0||r.top0){el.classList.add("vis");continue}el.classList.add("arm"),io.observe(el)}let red=window.setTimeout(()=>{for(let el of document.querySelectorAll(".rv.arm:not(.vis)")){let r=el.getBoundingClientRect();r.top0&&el.classList.add("vis")}},2e3);return()=>{io.disconnect(),window.clearTimeout(red)}},[dep])}var hoyMadrid=()=>new Date().toLocaleString("sv-SE",{timeZone:"Europe/Madrid"}).slice(0,10),horaMadrid=()=>new Date().toLocaleString("sv-SE",{timeZone:"Europe/Madrid"}).slice(11,16),diaLargo=iso=>{let[a,m,d]=iso.split("-").map(Number);return new Date(Date.UTC(a,m-1,d)).toLocaleDateString("es-ES",{weekday:"long",day:"numeric",month:"long",timeZone:"UTC"})},mesDe=iso=>iso.slice(0,7),mesActual=()=>hoyMadrid().slice(0,7),mesMas=(mes,n)=>{let[a,m]=mes.split("-").map(Number),d=new Date(Date.UTC(a,m-1+n,1));return`${d.getUTCFullYear()}-${String(d.getUTCMonth()+1).padStart(2,"0")}`},nombreMes=mes=>{let[a,m]=mes.split("-").map(Number);return new Date(Date.UTC(a,m-1,1)).toLocaleDateString("es-ES",{month:"long",year:"numeric",timeZone:"UTC"})},rejillaMes=mes=>{let[a,m]=mes.split("-").map(Number),primero=new Date(Date.UTC(a,m-1,1)),dias=new Date(Date.UTC(a,m,0)).getUTCDate(),huecos=(primero.getUTCDay()+6)%7,celdas=new Array(huecos).fill("");for(let d=1;d<=dias;d++)celdas.push(`${mes}-${String(d).padStart(2,"0")}`);return celdas},SHIP_FREE=80;var AUTH_KEY="ma_auth",CART_KEY="ma_cart",WISH_KEY="ma_wish",CP_TO_CITY2={"01":"Vitoria-Gasteiz","02":"Albacete","03":"Alicante","04":"Almer\xEDa","05":"\xC1vila","06":"Badajoz","07":"Palma de Mallorca","08":"Barcelona","09":"Burgos",10:"C\xE1ceres",11:"C\xE1diz",12:"Castell\xF3n",13:"Ciudad Real",14:"C\xF3rdoba",15:"A Coru\xF1a",16:"Cuenca",17:"Girona",18:"Granada",19:"Guadalajara",20:"San Sebasti\xE1n",21:"Huelva",22:"Huesca",23:"Ja\xE9n",24:"Le\xF3n",25:"Lleida",26:"Logro\xF1o",27:"Lugo",28:"Madrid",29:"M\xE1laga",30:"Murcia",31:"Pamplona",32:"Ourense",33:"Oviedo",34:"Palencia",35:"Las Palmas",36:"Pontevedra",37:"Salamanca",38:"Santa Cruz de Tenerife",39:"Santander",40:"Segovia",41:"Sevilla",42:"Soria",43:"Tarragona",44:"Teruel",45:"Toledo",46:"Valencia",47:"Valladolid",48:"Bilbao",49:"Zamora",50:"Zaragoza",51:"Ceuta",52:"Melilla"};function getCityFromCP(cp){let c=String(cp||"").replace(/\s/g,"");return/^\d{5}$/.test(c)?CP_TO_CITY2[c.slice(0,2)]??null:null}function isCpShippingBlocked(cp){let prefix=String(cp||"").replace(/\s/g,"").slice(0,2);return prefix==="35"||prefix==="38"||prefix==="51"||prefix==="52"}function getCpZone(cp){let cleaned=String(cp||"").replace(/\s/g,"");if(!/^\d{5}$/.test(cleaned))return"extranjero";let prefix=cleaned.slice(0,2);return prefix==="28"?"provincial":prefix==="07"?"baleares":prefix==="35"||prefix==="38"?"canarias":prefix==="51"||prefix==="52"?"ceuta_melilla":"peninsula"}function parseShippingCfg(rows){let get=k=>rows?.find?.(r=>r?.clave===k)?.valor,dinamico=String(get("envio_dinamico")??"false").toLowerCase()==="true",freeThreshold=Number(get("envio_gratis_desde"))||80,costeFijo=Number(get("envio_coste_fijo"))||4.99;return{dinamico,freeThreshold,costeFijo}}var num=v=>{let n=Number(v);return isNaN(n)||!isFinite(n)?0:n},str=v=>String(v??"").trim(),categoriaDe=p=>p?.categoria_id==null?null:Number(p.categoria_id),esVideo=x=>{let u=typeof x=="string"?x:String(x?.url||"");return/\.(mp4|webm|mov|m4v)(\?|#|&|$)/i.test(u)||/\/video\//i.test(u)},primeraFoto=lista=>{if(!(!Array.isArray(lista)||lista.length===0))return lista.find(f=>!esVideo(f))??lista[0]},IMG_PLACEHOLDER="data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 400 533'%3E%3Crect width='400' height='533' fill='%23f0f0ef'/%3E%3C/svg%3E";function img(p){let v=p?.imagen;if(!v)return IMG_PLACEHOLDER;let raw="";if(typeof v=="string"){let t=v.trim();if(t.startsWith("{")||t.startsWith("["))try{let o=JSON.parse(t),obj=Array.isArray(o)?o[0]:o;obj&&typeof obj.url=="string"?raw=obj.url:raw=t}catch{raw=t}else raw=t}else v&&typeof v=="object"&&typeof v.url=="string"?raw=v.url:Array.isArray(v)&&v.length>0&&typeof v[0]?.url=="string"&&(raw=v[0].url);if(!raw)return IMG_PLACEHOLDER;if(/^https?:\/\//i.test(raw)||raw.startsWith("data:")||raw.startsWith("blob:"))return raw;let w=esVideo(raw)?"":"&w=700";return raw.startsWith("/api/")?`${raw}${w}`:`/api/files/serve?path=${encodeURIComponent(raw)}${w}`}var partirDireccion=texto=>{let trozos=String(texto||"").split(",").map(x=>x.trim()),calle=trozos[0]||"",numero="",portal="",piso="",puerta="",m=/^(.*?)[\s,]+(\d+[a-zA-Z]?|s\/n)(?:[\s,]+(\d+)\s*º?\s*([a-zA-Z])?)?$/.exec(calle);m&&(calle=m[1],numero=m[2],piso=m[3]||"",puerta=(m[4]||"").toUpperCase());for(let t of trozos.slice(1)){let p=/^(?:portal|port\.?)\s*(\S+)$/i.exec(t);if(p){portal=p[1];continue}let f=/^(\d+)\s*º?\s*([a-zA-Z][a-zA-Z.]*)?$/i.exec(t);f&&!piso&&(piso=f[1],puerta=(f[2]||"").length>1?f[2]:(f[2]||"").toUpperCase())}return{calle,numero,portal,piso,puerta}},juntarDireccion=d=>[[String(d.calle||"").trim(),d.sinNumero?"s/n":String(d.numero||"").trim()].filter(Boolean).join(" "),String(d.portal||"").trim()?"portal "+String(d.portal).trim():"",(()=>{let pi=String(d.piso||"").trim(),pu=String(d.puerta||"").trim();return!pi&&!pu?"":pu?pi?pi+"\xBA"+(pu.length>1?" ":"")+pu:pu:pi})()].filter(Boolean).join(", "),telTexto=v=>{if(!v)return"";if(typeof v=="string")return v;let uno=Array.isArray(v)?v[0]:v;return!uno||typeof uno!="object"?String(uno||""):((uno.prefix||"")+" "+(uno.number||uno.numero||"")).trim()},price=v=>num(v).toLocaleString("es-ES",{minimumFractionDigits:2,maximumFractionDigits:2})+" \u20AC",hasSale=p=>p?.precio_oferta!=null&&num(p.precio_oferta)>0&&num(p.precio_oferta)hasSale(p)?num(p.precio_oferta):num(p.precio),disc=p=>{let o=num(p.precio);return o>0?Math.round((1-num(p.precio_oferta)/o)*100):0},altProducto=(nombre,...variante)=>{let base=str(nombre),extras=variante.map(str).filter((v,i,arr)=>v&&!base.toLowerCase().includes(v.toLowerCase())&&arr.indexOf(v)===i);return[base,...extras].filter(Boolean).join(", ")},LISTA_MEDIDA_MAX=20,itemMedido=(p,cantidad,variante,precio)=>({item_id:p.id,item_name:str(p.nombre),price:(typeof precio=="number"?precio:getPrice(p))||void 0,quantity:cantidad,item_variant:str(variante)||void 0}),itemDePackMedido=(pk,cantidad)=>({item_id:`pack-${pk.id}`,item_name:str(pk.nombre),price:num(pk.precio)||void 0,quantity:cantidad,item_category:"Packs"}),itemDeLineaMedido=(x,cantidad)=>x.packId?{item_id:`pack-${x.packId}`,item_name:str(x.nombre),price:num(x.precio)||void 0,quantity:cantidad??x.qty,item_category:"Packs"}:{item_id:x.productId,item_name:str(x.nombre),price:num(x.precio)||void 0,quantity:cantidad??x.qty,item_variant:str(x.size)||void 0},__INITIAL_SESSION_ID=(()=>{if(typeof window>"u")return"";try{let u=new URL(window.location.href);return u.searchParams.get("session_id")||u.searchParams.get("paid_session")||""}catch{return""}})(),__VERIFIER_GUARD={started:!1,finished:!1},__POST_CHECKOUT_RETURN=(()=>{if(typeof window>"u")return!1;try{let u=new URL(window.location.href);return!!(u.searchParams.get("paid")||u.searchParams.get("session_id")||u.searchParams.get("paid_session")||u.searchParams.get("cancelled")||u.searchParams.get("cita_pagada")||u.searchParams.get("cita_cancelada"))}catch{return!1}})();function CheckoutVerifier({active,companyId:companyIdProp,onPaid,onTimeout}){let onPaidRef=(0,import_react3.useRef)(onPaid),onTimeoutRef=(0,import_react3.useRef)(onTimeout);return onPaidRef.current=onPaid,onTimeoutRef.current=onTimeout,(0,import_react3.useEffect)(()=>{if(!active||typeof window>"u"||__VERIFIER_GUARD.started||__VERIFIER_GUARD.finished)return;let w=window,companyId=Number(companyIdProp??w.__GUFI_SITE__?.siteInfo?.company_id??w.__gufi_company_id??w.location?.pathname?.match(/\/app\/(\d+)\//)?.[1]);if(!companyId||!Number.isFinite(companyId))return;let url=new URL(window.location.href),sessionId=url.searchParams.get("session_id")||url.searchParams.get("paid_session")||__INITIAL_SESSION_ID;if(!sessionId.startsWith("cs_"))return;__VERIFIER_GUARD.started=!0;let attempt=0,tick=async()=>{if(!__VERIFIER_GUARD.finished){attempt++;try{if((await(await fetch(`/api/public/stripe/verify-session?session_id=${encodeURIComponent(sessionId)}&company_id=${companyId}`,{credentials:"include"})).json().catch(()=>({})))?.paid){if(__VERIFIER_GUARD.finished)return;__VERIFIER_GUARD.finished=!0,onPaidRef.current();return}}catch{}attempt<20?setTimeout(tick,2e3):(__VERIFIER_GUARD.finished=!0,onTimeoutRef.current())}};tick()},[active,companyIdProp]),null}var authGet=()=>{try{let s2=localStorage.getItem(AUTH_KEY);return s2?JSON.parse(s2):null}catch{return null}},SF_CTOKEN_KEY="gufi_sf_ctoken",MAGIC_TOKEN_KEY="ma_magic_token",GUEST_KEY="ma_guest",MIN_PASSWORD=8,authSet=u=>{if(u)localStorage.setItem(AUTH_KEY,JSON.stringify(u));else{localStorage.removeItem(AUTH_KEY);try{localStorage.removeItem(SF_CTOKEN_KEY)}catch{}}},cartGet=()=>{try{let s2=localStorage.getItem(CART_KEY);return s2?JSON.parse(s2):[]}catch{return[]}},cartSet=items=>localStorage.setItem(CART_KEY,JSON.stringify(items)),VERSION_CONSENTIMIENTO="v1",CONSENT_KEY="ma_cookies",VISITANTE_KEY="ma_visitante",EVENTO_CONSENTIMIENTO="gufi:consentimiento",idVisitante=()=>{try{let id=localStorage.getItem(VISITANTE_KEY);return id||(id=typeof crypto<"u"&&crypto.randomUUID?crypto.randomUUID():`v-${Date.now()}-${Math.random().toString(36).slice(2,10)}`,localStorage.setItem(VISITANTE_KEY,id)),id}catch{return"sin-almacenamiento"}},leerConsentimiento=()=>{try{let bruto=localStorage.getItem(CONSENT_KEY);if(!bruto)return null;let c=JSON.parse(bruto);return c.version!==VERSION_CONSENTIMIENTO?null:c}catch(e){return console.error("[cookies] consentimiento ilegible, se vuelve a preguntar",e),null}},guardarConsentimiento=(analitica,marketing)=>{let c={version:VERSION_CONSENTIMIENTO,visitante:idVisitante(),necesarias:!0,analitica,marketing,fecha:new Date().toISOString()};try{localStorage.setItem(CONSENT_KEY,JSON.stringify(c))}catch(e){console.error("[cookies] no se ha podido guardar la decisi\xF3n",e)}try{window.dispatchEvent(new CustomEvent(EVENTO_CONSENTIMIENTO,{detail:c}))}catch{}return c},FORMA_CSS=` @import url('https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400;0,500;0,600;1,400;1,500&family=Plus+Jakarta+Sans:wght@400;500;600;700&family=DM+Serif+Display&family=Nunito+Sans:wght@400;600;700&family=Space+Grotesk:wght@400;500;700&family=Inter:wght@400;500;600;700&family=Cormorant:ital,wght@0,300;0,400;0,500;0,600;0,700;1,300;1,400;1,500;1,600&family=Jost:wght@300;400;500;600&family=Bodoni+Moda:ital,opsz,wght@0,6..96,400..700;1,6..96,400..700&display=swap'); /* HERO OSCURO \u2014 fondo negro, la marca en blanco y en negrita (era el style tech-bold) */ .L[data-hero-fondo="oscuro"] .H{background:var(--ac)} .L[data-hero-fondo="oscuro"] .H-wm{font-family:var(--sn);font-weight:800;letter-spacing:-.02em;color:var(--tl)} .L[data-hero-fondo="oscuro"] .H-over,.L[data-hero-fondo="oscuro"] .H-c p{color:rgba(255,255,255,.55)} .L[data-hero-fondo="oscuro"] .H .cta{background:var(--ac);color:var(--tl)} /* MEN\xDA POR GRUPOS (fila menu_grupos): el grupo en la barra y sus categor\xEDas en un desplegable */ .N-grupo{position:relative} .N-grupo-bt{font-family:var(--sn);font-size:10px;letter-spacing:.16em;white-space:nowrap;font-weight:400;transition:opacity .4s var(--el);flex-shrink:0;text-transform:uppercase;position:relative;padding:4px 0;background:none;border:none;cursor:pointer;color:inherit} .N-grupo-bt::after{content:'';position:absolute;bottom:-2px;left:0;width:0;height:1px;background:var(--tl);transition:width .5s var(--el)} .N-grupo:hover .N-grupo-bt::after{width:100%} .N-grupo:hover .N-grupo-bt{opacity:.8} .N-grupo-dd{position:absolute;top:calc(100% + 10px);left:50%;transform:translateX(-50%) translateY(-6px);background:rgba(255,255,255,.98);backdrop-filter:blur(24px);-webkit-backdrop-filter:blur(24px);border-radius:12px;box-shadow:0 24px 64px rgba(0,0,0,.1),0 0 0 1px rgba(0,0,0,.25);padding:8px 0;min-width:180px;opacity:0;pointer-events:none;transition:opacity .3s,transform .4s var(--el);z-index:200}.N-grupo-dd::before{content:'';position:absolute;top:-12px;left:0;right:0;height:12px} .N-grupo:hover .N-grupo-dd{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto} .N .N-grupo-dd button,.N .N-grupo-dd a{display:block;width:100%;padding:10px 20px;font-family:var(--sn);font-size:11px;letter-spacing:.06em;text-transform:uppercase;color:var(--t1) !important;text-align:left;transition:background .2s;background:none;border:none;cursor:pointer;white-space:nowrap} .N .N-grupo-dd button:hover,.N .N-grupo-dd a:hover{background:rgba(0,0,0,.05)} .N .N-grupo-dd button.a,.N .N-grupo-dd a.a{color:var(--t1) !important;font-weight:600} /* TARJETA REDONDEADA \u2014 foto con esquina de 16 y nombre en la letra de texto */ .L[data-card="card-rounded"] .C-img{border-radius:16px} .L[data-card="card-rounded"] .C-n{font-family:var(--sn);font-weight:600} `,SERAPHINE_CSS=` /* \u2500\u2500 1. LOS ALIAS DE LA PLANTILLA DEJAN DE SER COLORES \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 --clay era el barro, --marine el verde botella, --sand el oro, --sale el rojo de rebajas. Aqui son referencias a la escala monocroma. Se redeclaran sobre .L y no en :root porque es en .L donde ya se ven las variables que la apariencia escribe sobre el .gufi-view-root que envuelve la tienda: en :root todavia no existen. */ .L{--clay:var(--t1);--marine:var(--t1);--sand:var(--t2);--sale:var(--t1);--ok:var(--t1);--line:var(--bl);--bh:var(--t1);--aire:clamp(104px,15vh,220px);--el:cubic-bezier(.22,.61,.36,1);--eo:cubic-bezier(.22,.61,.36,1)} /* \u2500\u2500 2. RADIO CERO, SOMBRA CERO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 En barrido, porque el radio y la sombra estan escritos a mano en ciento y pico sitios (50px, 16, 12, 50%) y tambien en estilos en linea del JSX, donde una regla normal no llega. El foco NO se pierde: vuelve debajo como un filete, que es lo que pedia la direccion de arte. */ .L *,.L *::before,.L *::after{border-radius:0!important;box-shadow:none!important} .L input[type="radio"]{border-radius:50%!important} .L :is(a,button,input,textarea,select,summary):focus-visible{outline:1px solid var(--t1);outline-offset:3px} .L [style*="kenBurns"]{animation:none!important} /* \u2500\u2500 3. TIPOGRAFIA \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */ .L{font-family:var(--sn);font-weight:300;font-size:15px;line-height:1.68;letter-spacing:.004em;background:var(--bg);color:var(--t1)} .L::after{opacity:.02} .L h1,.L h2,.L h3,.L h4{font-family:var(--sf);font-weight:400;font-optical-sizing:auto;letter-spacing:-.02em;line-height:1;text-transform:none} .L strong,.L b{font-weight:500} .L .SEC-h,.L .PT h1,.L .PT h2.PT-t,.L .CT-i h2,.L .FZ p.FZ-frase,.L .RC-ok h2,.L .MC h1,.L .SG h1{font-family:var(--sf);font-weight:400;letter-spacing:-.02em;text-transform:none} /* Los rotulos: los unicos textos que gritan, y gritan bajito. Van en Jost: una didone a 11 px no es una didone, es una letra con problemas. */ .L .cb-over,.L .ni-over,.L .H-over,.L .P-cat,.L .P-lb,.L .OV-sec,.L .FT-c h4,.L .SEC-over,.L .BN-i h4,.L .FT-trust div,.L .NI-bot span,.L .MQ-t,.L .D-hd h3,.L .CK-sum h3,.L .AC-card h3{font-family:var(--sn);font-size:11px;font-weight:400;letter-spacing:.2em;text-transform:uppercase} /* El dinero: cifras de ancho fijo, nunca en negrita, nunca mas grande que el nombre de la prenda. */ .L .C-p,.L .P-pr,.L .ni-price,.L .ci-pr,.L .D-ft .tt,.L .CK-row,.L .P-rec-p,.L .OR-total,.L .PK-p,.L .PKD-p{font-variant-numeric:tabular-nums;font-weight:400;letter-spacing:.02em} .L .C-p,.L .P-rec-p,.L .ni-price{font-family:var(--sn);font-size:12px;color:var(--t2)} .L .C-p .nw,.L .P-pr .nw,.L .ni-price .nw{color:var(--t1)} .L .C-p .og,.L .P-pr .og,.L .ni-price .og{color:var(--t2);opacity:.55;text-decoration:line-through;font-weight:300} .L .ci-pr,.L .ci-n,.L .D-ft .tt.big,.L .CK-row.big,.L .OR-total,.L .ci-q span{font-weight:400} .L .D-ft .tt.big{font-family:var(--sn);font-size:16px} /* \u2500\u2500 4. NAVEGACION \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Transparente sobre el hero; al desplazar pasa a BLANCO con un filete de 1 px. Nunca a tinta: la plantilla la ponia negra con !important. */ .L .N{padding:0 var(--pm);background:transparent} .L .N-i{height:clamp(58px,5.4vw,72px)} .L .N-c{font-family:var(--sf);font-weight:400;font-size:clamp(15px,1.5vw,21px);letter-spacing:.3em;text-indent:.3em;text-transform:uppercase} .L .N-cat,.L .N-lf{gap:clamp(18px,2.4vw,36px)} .L .N-cat button,.L .N-cat a,.L .N-grupo-bt{font-family:var(--sn);font-size:11px;font-weight:300;letter-spacing:.2em} .L .N-cat button::after,.L .N-cat a::after,.L .N-grupo-bt::after{background:currentColor;height:1px;bottom:-5px;transition:width .24s var(--el)} .L .N-cat button:hover,.L .N-cat a:hover,.L .N-cat button.a,.L .N-cat a.a{opacity:1;font-weight:300} .L .N.sc{background:var(--bg)!important;box-shadow:inset 0 -1px 0 var(--bl)!important;margin-bottom:0!important} .L .N.sc .N-c,.L .N.sc .N-r button,.L .N.sc .N-cat button,.L .N.sc .N-cat a,.L .N.sc .N-lang,.L .N.sc .N-sx,.L .N.sc .N-si{color:var(--t1)} .L .N.sc .N-c img,.L .N.darkbrand.sc .N-c img{filter:none} .L .N.sc .mb span{background:var(--t1)} .L .N.sc .N-b svg{stroke:var(--t1)} .L .N.sc .N-si{border-bottom-color:var(--bl)} .L .N.sc .N-sub{border-top-color:var(--bl)} .L .N.sc .N-sub button{color:var(--t2)!important;font-size:10px;letter-spacing:.2em} .L .N.sc .N-sub button:hover,.L .N.sc .N-sub button.a{color:var(--t1)!important;font-weight:400} /* La bolsa lleva un numero, no una chapa de color. */ .L .N-bc,.L .N .N-bc{background:transparent;color:inherit;width:auto;height:auto;min-width:0;top:5px;right:1px;font-size:9px;font-weight:400;letter-spacing:.06em;font-variant-numeric:tabular-nums} .L .N-r{gap:clamp(2px,.6vw,8px)} .L .N-r button,.L .N-b{width:44px;height:44px} .L .N-r button svg,.L .N-b svg{stroke-width:1} .L .N-si{border-bottom:1px solid var(--bl);font-size:11px;letter-spacing:.14em;font-weight:300} .L .N-sd{background:var(--bg);border:1px solid var(--bl);backdrop-filter:none;-webkit-backdrop-filter:none} .L .N-sr{border-bottom:1px solid var(--bl)} .L .N-sr:hover{background:var(--bgc)} .L .N-sr img{width:46px;height:58px} .L .N-sr-n{font-family:var(--sf);font-weight:400;font-size:15px} .L .N-sd-e{font-size:10px;letter-spacing:.2em} .L .N-lang{font-size:11px;font-weight:300;letter-spacing:.2em;opacity:1} .L .mb span{height:1px;width:20px} /* \u2500\u2500 5. EL MENU, A PANTALLA COMPLETA \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 En escritorio y en movil: el panel ocupa la pantalla entera, en blanco. La x arriba a la izquierda, SERAPHINE centrado en la didone, las capsulas en versal grande a la izquierda, un filete de lado a lado y debajo lo secundario en caja baja. Entra con un fundido de 220 ms. Va por posicion ABSOLUTA con --sy, no fija: dentro del ERP la vista vive en un contenedor con scroll propio y position:fixed se ancla donde no toca. Es el mismo truco que ya usaban el carrito y la ficha. */ .L .OV{position:absolute;top:var(--sy,0px);left:0;right:0;width:100%;max-width:none;height:100vh;height:100svh;background:var(--bg);border:none;backdrop-filter:none;-webkit-backdrop-filter:none;transform:none;opacity:0;visibility:hidden;pointer-events:none;transition:opacity .22s var(--el),visibility .22s;display:flex;flex-direction:column;padding:clamp(18px,2.4vw,34px) var(--pm) clamp(32px,4vw,56px);overflow-y:auto;z-index:400;color:var(--t1)} .L .OV.o{opacity:1;visibility:visible;pointer-events:auto;transform:none} .L .OVbk{display:none} .L .OV-top{position:relative;display:flex;align-items:center;justify-content:center;min-height:52px;flex-shrink:0;margin-bottom:clamp(36px,7vh,104px)} .L .OV-x{position:absolute;left:-10px;top:50%;transform:translateY(-50%);width:44px;height:44px;display:flex;align-items:center;justify-content:center;color:var(--t1);background:none;border:none} .L .OV-x svg{width:22px;height:22px;stroke-width:1} .L .OV-x:hover{opacity:.55} .L .OV-marca{font-family:var(--sf);font-weight:400;font-size:clamp(19px,2.2vw,30px);letter-spacing:.3em;text-indent:.3em;text-transform:uppercase;color:var(--t1);line-height:1} .L .OV-main{display:flex;flex-direction:column;align-items:flex-start;gap:clamp(6px,1.2vh,18px)} .L .OV-big{font-family:var(--sf);font-weight:400;font-size:clamp(30px,5.6vw,76px);letter-spacing:.04em;text-transform:uppercase;line-height:1.08;color:var(--t1);text-align:left;background:none;border:none;padding:4px 0;position:relative;display:block;width:auto;min-height:44px} .L .OV-big::after{content:'';position:absolute;left:0;bottom:4px;height:1px;width:0;background:currentColor;transition:width .3s var(--el)} .L .OV-big:hover::after{width:100%} .L .OV-filete{height:1px;background:var(--bl);width:100%;margin:clamp(36px,6vh,88px) 0 clamp(22px,3vh,38px);flex-shrink:0} .L .OV-min{display:flex;flex-wrap:wrap;gap:4px clamp(24px,3vw,48px)} .L .OV-min button{font-family:var(--sn);font-size:13px;font-weight:300;letter-spacing:.03em;color:var(--t2);min-height:44px;display:inline-flex;align-items:center;background:none;border:none;text-transform:none} .L .OV-min button:hover{color:var(--t1)} /* Las filas que la plantilla ya traia (Mi cuenta, Favoritos, Mis citas) siguen siendo .OV-row: aqui dejan de ser filas de cajon y pasan a ser enlaces de la linea de abajo. El chevron sobra. */ .L .OV-min .OV-row{display:inline-flex;width:auto;height:auto;min-height:44px;padding:0;justify-content:flex-start;font-family:var(--sn);font-size:13px;font-weight:300;letter-spacing:.03em;color:var(--t2);border:none;text-transform:none;background:none} .L .OV-min .OV-row:hover{color:var(--t1);opacity:1} .L .OV-min .OV-row svg{display:none} /* \u2500\u2500 6. CINTAS \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 */ .L .A{background:var(--ac);color:rgba(255,255,255,.72);font-size:10px;letter-spacing:.2em;padding:11px var(--pm);font-weight:300} .L .MQ{padding:20px 0;background:var(--bg);border-top:1px solid var(--bl);border-bottom:1px solid var(--bl)} .L .MQ-t{color:var(--t2);font-weight:300;animation-duration:70s;gap:clamp(44px,6vw,88px)} /* \u2500\u2500 7. EL HERO \u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500\u2500 Va en CLARO y a sangre: manda el video (o la foto) a pantalla completa y encima solo hay texto. Ni caja negra ni pastilla: un velo muy corto abajo, donde se apoya la linea, y un filete de 1 px bajo el enlace. El plano es VERTICAL y el hero de escritorio apaisado, asi que el encuadre se sube para que la figura no quede descabezada. */ .L .H{min-height:100svh;background:var(--bg);padding:clamp(96px,12vh,170px) var(--pm) clamp(76px,9vh,124px)} .L .H-video{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:center 32%;z-index:0;pointer-events:none;display:block} /* Quien pide menos movimiento NO se queda sin hero: el video sigue en su sitio y, como el JSX le quita el autoplay, lo que se ve es su poster --la foto de campana--. Con display:none quedaba un hueco: en movil todavia asomaba el background que inyecta el