1<!DOCTYPE html><html lang="es"><head><meta charset="UTF-8"><meta name="viewport" content="width=device-width, initial-scale=1.0"> 2<title>Calcula el Coste de tu Proyecto de Amueblamiento | Bechester</title> 3<meta name="description" content="Simulador gratuito para estimar el coste de amueblamiento integral de tu proyecto según tipologÃa y número de unidades."> 4<link rel="canonical" href="https://bechester.com/simulador/"> 5<link rel="icon" type="image/png" href="/assets/img-fc14cbc5ca.png"> 6<link href="https://fonts.googleapis.com/css2?family=DM+Serif+Display:ital@0;1&family=Cormorant+Garamond:ital,wght@0,400;0,600;1,400;1,600&family=Poppins:wght@300;400;500;600;700&display=swap" rel="stylesheet"> 7<link rel="stylesheet" href="/assets/styles.css"> 8<style>*,*::before,*::after{cursor:auto !important}</style>
9<script type="application/ld+json">{"@context": "https://schema.org", "@type": "Organization", "name": "Bechester", "legalName": "Vallis Tolitum S.L.", "url": "https://bechester.com/", "logo": "https://bechester.com/assets/img-a77970ec16.png", "email": "[email protected]", "telephone": "+34644655355", "taxID": "B47802095", "address": {"@type": "PostalAddress", "streetAddress": "C/ MarÃa de Molina 7, planta 3, oficina 2", "postalCode": "47001", "addressLocality": "Valladolid", "addressCountry": "ES"}, "areaServed": ["ES", "FR", "PT"], "sameAs": ["https://www.instagram.com/bechester_es/", "https://www.pinterest.com/bechestercom/", "https://www.linkedin.com/company/bechester/"]}</script>
vendor: 1 bytes, line 9
9
10<script> 11(function(){ 12 window.__gaId__='G-WTGVLT94E4'; 13 window.loadGA4=function(){ 14 if(window.__ga4Loaded) return; 15 window.__ga4Loaded=true; 16 var s=document.createElement('script'); 17 s.async=true; 18 s.src='https://www.googletagmanager.com/gtag/js?id='+window.__gaId__; 19 document.head.appendChild(s); 20 window.dataLayer=window.dataLayer||[]; 21 window.gtag=function(){dataLayer.push(arguments);}; 22 gtag('js', new Date()); 23 gtag('config', window.__gaId__, { anonymize_ip: true }); 24 }; 25 try { 26 var m = document.cookie.match(/(?:^|; )bechesterCookieChoiceV3=([^;]*)/); 27 var choice = (window.localStorage && localStorage.getItem('bechesterCookieChoiceV3')) || (m ? decodeURIComponent(m[1]) : null); 28 if (choice === 'accepted') window.loadGA4(); 29 } catch(e) {} 30})(); 31</script>
31 32<!-- Google tag (gtag.js) -->
vendor: 64 bytes, lines 32-33
32 33<script async src="https://www.googletagmanager.com/gtag/js?id=
33G-WTGVLT94E4
vendor: 12 bytes, line 33
33"></script>
34<script> 35
vendor: 133 bytes, lines 35-38
35window.dataLayer = window.dataLayer || []; 36 function gtag(){dataLayer.push(arguments);} 37 gtag('js', new Date()); 38 gtag('config', '
38G-WTGVLT94E4
vendor: 4 bytes, line 38
38');
39</script>
39</head><body> 40<nav class="nav" id="navbar"><div class="nav-left"><a href="/portfolio/">Portfolio</a><a href="/sectores/">Sectores</a><a href="/simulador/">Simulador</a></div><a class="nav-logo" href="/"><img alt="Bechester" decoding="async" height="28" src="/assets/img-a77970ec16.png" style="height:28px;width:auto;display:block" width="147"/></a><div class="nav-right"><a class="nav-cta" href="#cta-section">Solicitar propuesta gratis</a></div><button aria-label="Abrir menú" class="nav-hamburger" id="nav-ham"><span></span><span></span><span></span></button></nav> 41<div class="nav-mobile-menu" id="nav-mobile-menu"><a href="/">Inicio</a><a href="/amueblamiento-integral-empresas/">Amueblamiento integral</a><a href="/portfolio/">Portfolio</a><a href="/sectores/">Sectores</a><a href="/simulador/">Simulador</a><span class="mob-item mob-cta" onclick="document.getElementById('cta-section').scrollIntoView({behavior:'smooth'});closeMobMenu()">Solicitar propuesta gratis</span></div> 42<div class="page active" id="page-simulador"><section class="section" style="background:#f8f8f8;min-height:100vh;display:flex;align-items:center;justify-content:center;padding:60px 20px"><div style="display:grid;grid-template-columns:1fr 1fr;gap:40px;max-width:1000px;width:100%;background:white;border-radius:12px;overflow:hidden;box-shadow:0 10px 40px rgba(0,0,0,0.08)"><div style="padding:50px 45px;display:flex;flex-direction:column;justify-content:center"><div style="margin-bottom:35px"><h1 style="font-family:'DM Serif Display',serif;font-size:36px;color:#1a1a1a;margin-bottom:12px;font-weight:400">Presupuesto</h1><p style="font-size:14px;color:#666;font-weight:300;line-height:1.6">Calcula el coste de tu proyecto de amueblamiento integral</p></div><form id="simuladorForm" onsubmit="return false;"><div style="margin-bottom:20px"><label style="display:block;font-size:11px;font-weight:600;color:#1a1a1a;margin-bottom:8px;text-transform:uppercase;letter-spacing:0.8px">Tipo de Proyecto</label><select id="sim-sector" required="" style="width:100%;padding:12px 14px;border:1px solid #e0e0e0;border-radius:6px;font-size:14px;font-family:Inter,sans-serif;color:#1a1a1a;background:white url('data:image/svg+xml;charset=UTF-8,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2712%27 height=%278%27 viewBox=%270 0 12 8%27%3e%3cpath fill=%27%231a1a1a%27 d=%27M0 0l6 8 6-8z%27/%3e%3c/svg%3e') no-repeat right 16px center;background-size:12px;padding-right:40px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none"><option value="">Selecciona un sector...</option><option value="turistico">TurÃstico / Corporativo</option><option value="coliving">FlexLiving / Coliving</option><option value="hotel">Hotel Boutique</option><option value="residencia">PBSA / Residencia</option></select></div><div style="margin-bottom:20px"><label style="display:block;font-size:11px;font-weight:600;color:#1a1a1a;margin-bottom:8px;text-transform:uppercase;letter-spacing:0.8px">TipologÃa</label><select disabled="" id="sim-tipologia" required="" style="width:100%;padding:12px 14px;border:1px solid #e0e0e0;border-radius:6px;font-size:14px;font-family:Inter,sans-serif;color:#1a1a1a;background:white url('data:image/svg+xml;charset=UTF-8,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2712%27 height=%278%27 viewBox=%270 0 12 8%27%3e%3cpath fill=%27%231a1a1a%27 d=%27M0 0l6 8 6-8z%27/%3e%3c/svg%3e') no-repeat right 16px center;background-size:12px;padding-right:40px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none"><option value="">Selecciona una tipologÃa...</option></select></div><div style="margin-bottom:20px"><label style="display:block;font-size:11px;font-weight:600;color:#1a1a1a;margin-bottom:8px;text-transform:uppercase;letter-spacing:0.8px">Modelo</label><select disabled="" id="sim-modelo" required="" style="width:100%;padding:12px 14px;border:1px solid #e0e0e0;border-radius:6px;font-size:14px;font-family:Inter,sans-serif;color:#1a1a1a;background:white url('data:image/svg+xml;charset=UTF-8,%3csvg xmlns=%27http://www.w3.org/2000/svg%27 width=%2712%27 height=%278%27 viewBox=%270 0 12 8%27%3e%3cpath fill=%27%231a1a1a%27 d=%27M0 0l6 8 6-8z%27/%3e%3c/svg%3e') no-repeat right 16px center;background-size:12px;padding-right:40px;cursor:pointer;-webkit-appearance:none;-moz-appearance:none;appearance:none"><option value="">Selecciona un modelo...</option></select></div><div style="margin-bottom:20px"><label style="display:block;font-size:11px;font-weight:600;
42color:#1a1a1a;margin-bottom:8px;text-transform:uppercase;letter-spacing:0.8px">Número de Unidades</label><input id="sim-cantidad" max="1000" min="1" required="" style="width:100%;padding:12px 14px;border:1px solid #e0e0e0;border-radius:6px;font-size:14px;font-family:Inter,sans-serif;color:#1a1a1a;background:white" type="number" value="1"/></div></form><div id="sim-resultsBox" style="display:none;background:#f8f8f8;padding:28px;border-radius:8px;margin-top:35px"><div style="display:flex;justify-content:space-between;align-items:center;padding:10px 0;border-bottom:1px solid #e8e8e8"><span style="font-size:11px;color:#666;font-weight:600;text-transform:uppercase;letter-spacing:0.5px">Precio por Unidad</span><div><span id="sim-precioUnit" style="font-size:20px;font-weight:700;color:#1a1a1a">â</span><span id="sim-unitUnit" style="font-size:12px;color:#999;margin-left:4px"></span></div></div><div style="display:flex;justify-content:space-between;align-items:center;padding:10px 0"><span style="font-size:11px;color:#666;font-weight:600;text-transform:uppercase;letter-spacing:0.5px">Coste Total del PerÃodo</span><div><span id="sim-costePeriodo" style="font-size:20px;font-weight:700;color:#1a1a1a">â</span><span id="sim-periodoUnit" style="font-size:12px;color:#999;margin-left:4px"></span></div></div><div style="background:#184849;color:white;padding:24px;border-radius:8px;text-align:center;margin-top:18px"><div style="color:rgba(255,255,255,0.6);margin-bottom:10px;font-size:11px">INVERSIÃN TOTAL</div><div id="sim-totalInversion" style="color:white;font-size:32px;font-weight:700">â</div></div></div><button disabled="" id="sim-btnPropuesta" onclick="abrirModalEmailSim()" style="width:100%;padding:13px 24px;background:#184849;color:white;border:none;border-radius:6px;font-size:14px;font-weight:600;cursor:pointer;margin-top:24px;text-transform:uppercase;letter-spacing:0.5px;opacity:0.4"> 43 Solicitar Propuesta 44 </button></div><div style="background:linear-gradient(135deg,#f5f5f5 0%,#e8e8e8 100%);display:flex;align-items:center;justify-content:center;position:relative;overflow:hidden;min-height:500px"><div style="width:100%;height:100%;background-image:url('https://res.cloudinary.com/da0nxykeu/image/upload/v1774004207/Caterina_2_4_9575b97b-3f2b-4339-a605-de7f56fbaf4d_hiouzx.webp');background-size:cover;background-position:center"></div></div></div></section></div> 45<section class="section" id="cta-section" style="background:var(--ow)"><div class="si"><div class="cta-inner" data-anim="scale"><span class="stag">Contacto</span><h2 class="stitle">¿Tienes un proyecto? Hablemos.</h2><p class="sbody" style="max-width:500px;margin:0 auto 40px">Cuéntanos tu activo y en menos de 48 horas te enviamos una propuesta personalizada. Completamente gratis y sin compromiso.</p><div class="pipedriveWebForms proposal-form-embed"><iframe allowtransparency="true" frameborder="0" scrolling="yes" src="https://webforms.pipedrive.com/f/6GYbJpVBcVw7WN5l9Z2qOoW1BAoeadDB2Y2U619E3pYjHm6xg9fPYwnf2vXFncyXsL" style="width:100%;height:820px;border:none;display:block;"></iframe></div><p class="cta-note">O escrÃbenos a <a class="notranslate" href="mailto:[email protected]" lang="en" style="color:var(--gl);text-decoration:none;" translate="no">[email protected]</a></p></div></div></section> 46<footer class="footer"><div class="footer-top"><div class="footer-col"><h4>Contacto</h4><ul><li><a href="https://webforms.pipedrive.com/f/6GYbJpVBcVw7WN5l9Z2qOoW1BAoeadDB2Y2U619E3pYjHm6xg9fPYwnf2vXFncyXsL" target="_blank">Formulario</a></li><li><a class="notranslate" href="mailto:[email protected]" lang="en" style="color:var(--gl);text-decoration:none;" translate="no">[email protected]</a></li><li><a href="tel:644655355">644 655 355</a></li><li><a href="https://share.hsforms.com/1vTaZC1hSRIij8cA7hW4Uzw8n0br" target="_blank">Convertirse en Proveedor</a></li></ul></div><div class="footer-col"><h4>PaÃses</h4><ul><li><a href="/" onclick="setLang('es');return false;">ðªð¸ España</a></li><li><a href="#" onclick="setLang('fr');return false;">ð«ð· Francia</a></li><li>
46<a href="#" onclick="setLang('pt');return false;">ðµð¹ Portugal</a></li></ul></div><div class="footer-col"><h4>Amueblamiento y portfolio</h4><ul><li><a href="/amueblamiento-integral-empresas/">Amueblamiento integral</a></li><li></li><li><a href="/portfolio/flexliving/">FlexLiving</a></li><li><a href="/portfolio/coliving/">Coliving</a></li><li><a href="/portfolio/pisos-turisticos/">Pisos TurÃsticos</a></li><li><a href="/portfolio/pisos-corporativos/">Alquiler Corporativos</a></li></ul></div><div class="footer-col"><h4>SÃguenos</h4><ul><li><a href="https://www.instagram.com/bechester_es/" target="_blank">Instagram</a></li><li><a href="https://www.pinterest.com/bechestercom/" target="_blank">Pinterest</a></li><li><a href="https://www.linkedin.com/company/bechester/" target="_blank">LinkedIn</a></li></ul></div></div><div class="footer-bottom"><span>© 2026, Bechester</span><span class="sep">·</span><a href="/privacidad/">PolÃtica de privacidad</a><span class="sep">·</span><a href="#cookies" class="notranslate" translate="no" onclick="event.preventDefault();openCookiePreferences(true);return false;">PolÃtica de cookies</a><span class="sep">·</span><a href="/terminos/">Condiciones Generales</a><span class="sep">·</span><a href="/aviso-legal/">Aviso legal</a></div><div class="footer-enisa notranslate" translate="no"><a href="https://www.enisa.es/" target="_blank" rel="noopener noreferrer" aria-label="Visitar la web de ENISA"><img src="/assets/sello-enisa-horizontal.png" alt="Empresa financiada por ENISA" loading="lazy" width="2706" height="1808"></a></div><div class="lightbox" id="lightbox" onclick="closeLightbox(event)"><span class="lightbox-close" onclick="closeLightbox({target:this})">Ã</span><span class="lightbox-prev" onclick="lightboxNav(-1,event)">â¹</span><img alt="Imagen ampliada" id="lightbox-img" loading="lazy" src=""/><span class="lightbox-next" onclick="lightboxNav(1,event)">âº</span><div class="lightbox-counter" id="lightbox-counter"></div></div>
46<script src="/assets/script-4.js"></script>
46<div class="lang-selector notranslate" data-no-translate="true" id="lang-selector" translate="no"><button class="lang-btn active notranslate" data-no-translate="true" id="btn-es" onclick="setLang('es')" translate="no">ES</button><button class="lang-btn notranslate" data-no-translate="true" id="btn-fr" onclick="setLang('fr')" translate="no">FR</button><button class="lang-btn notranslate" data-no-translate="true" id="btn-pt" onclick="setLang('pt')" translate="no">PT</button></div><div class="lang-translate-bar notranslate" data-no-translate="true" id="lang-bar" translate="no">Traduciendo... â³</div>
46<script src="/assets/script-5.js"></script>
46<script src="/assets/script-6.js"></script>
46<script src="/assets/script-7.js"></script>
vendor: 1 bytes, line 46
46
47<script id="bechester-cookie-freeze-fix"> 48(function(){ 49 var KEY='bechesterCookieChoiceV3'; 50 function safeGet(k){try{return window.localStorage?localStorage.getItem(k):null;}catch(e){return null;}} 51 function safeSet(k,v){try{if(window.localStorage)localStorage.setItem(k,v);}catch(e){try{document.cookie=k+'='+encodeURIComponent(v)+';path=/;max-age=31536000;SameSite=Lax';}catch(_){}}} 52 function removeAllPopups(){ 53 document.querySelectorAll('.cookie-popup-overlay').forEach(function(el){ 54 el.classList.remove('show'); 55 el.style.opacity='0'; 56 el.style.pointerEvents='none'; 57 setTimeout(function(){ if(el && el.parentNode) el.parentNode.removeChild(el); }, 180); 58 }); 59 document.documentElement.style.overflow=''; 60 document.body.style.overflow=''; 61 } 62 function buildPopup(){ 63 var overlay=document.createElement('div'); 64 overlay.className='cookie-popup-overlay notranslate'; 65 overlay.setAttribute('role','dialog'); 66 overlay.setAttribute('aria-modal','true'); 67 overlay.setAttribute('aria-labelledby','cookie-title'); 68 overlay.setAttribute('translate','no'); 69 overlay.innerHTML='<div class="cookie-popup" role="document"><div class="cookie-text"><div class="cookie-kicker">Bechester</div><h3 id="cookie-title">Cookies y privacidad</h3><p>Utilizamos cookies técnicas para que la web funcione correctamente y cookies analÃticas para entender cómo se utiliza la página y mejorar la experiencia.</p></div><div class="cookie-details" id="cookie-details"><strong>PolÃtica de cookies</strong><p>Puedes aceptar o rechazar las cookies no esenciales. Las cookies técnicas son necesarias para la navegación, la seguridad y el correcto funcionamiento del sitio.</p><ul><li><strong>Cookies técnicas:</strong> necesarias para recordar acciones básicas y permitir el uso normal de la web.</li><li><strong>Cookies analÃticas:</strong> nos ayudan a medir visitas, rendimiento y navegación para optimizar la web.</li><li><strong>Gestión del consentimiento:</strong> guardamos tu elección para no volver a mostrar este aviso en cada visita.</li></ul></div><div class="cookie-actions"><button id="rejectCookies" class="cookie-btn secondary green-cursor" type="button">Rechazar</button><button id="acceptCookies" class="cookie-btn primary white-cursor" type="button">Aceptar</button></div><p class="cookie-footer-note">Puedes cambiar tu decisión en cualquier momento desde âPolÃtica de cookiesâ en el footer.</p></div>'; 70 return overlay; 71 } 72 function choose(choice, ev){ 73 if(ev){ev.preventDefault(); ev.stopPropagation(); if(ev.stopImmediatePropagation) ev.stopImmediatePropagation();} 74 safeSet(KEY, choice); 75 removeAllPopups(); 76 return false; 77 } 78 document.addEventListener('click', function(ev){ 79 var btn=ev.target && ev.target.closest ? ev.target.closest('#acceptCookies,#rejectCookies') : null; 80 if(!btn) return; 81 choose(btn.id==='acceptCookies'?'accepted':'rejected', ev); 82 }, true); 83 window.openCookiePreferences=function(force){ 84 removeAllPopups(); 85 if(!force && safeGet(KEY)) return; 86 var overlay=buildPopup(); 87 document.body.appendChild(overlay); 88 var accept=overlay.querySelector('#acceptCookies'); 89 var reject=overlay.querySelector('#rejectCookies'); 90 if(accept) accept.addEventListener('click', function(e){choose('accepted',e);}, true); 91 if(reject) reject.addEventListener('click', function(e){choose('rejected',e);}, true); 92 overlay.addEventListener('click', function(e){ if(force && e.target===overlay) removeAllPopups(); }); 93 setTimeout(function(){ overlay.classList.add('show'); }, 30); 94 }; 95 function init(){ if(!safeGet(KEY)) window.openCookiePreferences(false); } 96 if(document.readyState==='loading') document.addEventListener('DOMContentLoaded', init); else init(); 97})(); 98</script>
vendor: 1 bytes, line 98
98
99<script> 100(function(){ 101 var simImg='https://res.cloudinary.com/da0nxykeu/image/upload/v1774004207/Caterina_2_4_9575b97b-3f2b-4339-a605-de7f56fbaf4d_hiouzx.webp'; 102 function fixSimImage(){ 103 var sim=document.getElementById('page-simulador'); 104 if(!sim) return; 105 var divs=sim.querySelectorAll('div[style*="background-image"]'); 106 divs.forEach(function(d){ 107 if((d.getAttribute('style')||'').indexOf('Caterina_2_4')>-1 || d.offsetHeight>300){ 108 d.style.backgroundImage='url('+simImg+')'; 109 d.style.backgroundSize='cover'; 110 d.style.backgroundPosition='center'; 111 } 112 }); 113 } 114 if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',fixSimImage); else fixSimImage(); 115 window.addEventListener('load',fixSimImage); 116})(); 117</script>
vendor: 1 bytes, line 117
117
118<script id="portfolio-broken-image-order-fix"> 119(function(){ 120 function moveBrokenPortfolioCard(img){ 121 var card = img && img.closest ? img.closest('#portfolio-grid .port-card') : null; 122 var grid = document.getElementById('portfolio-grid'); 123 if(!card || !grid || card.dataset.noPhotoMoved === '1') return; 124 card.dataset.noPhotoMoved = '1'; 125 card.classList.add('portfolio-no-photo-last'); 126 grid.appendChild(card); 127 } 128 function setupBrokenImageOrdering(){ 129 var imgs = document.querySelectorAll('#portfolio-grid .port-card img'); 130 imgs.forEach(function(img){ 131 img.addEventListener('error', function(){ moveBrokenPortfolioCard(img); }, {once:true}); 132 if(img.complete && img.naturalWidth === 0){ moveBrokenPortfolioCard(img); } 133 }); 134 } 135 if(document.readyState === 'loading'){ 136 document.addEventListener('DOMContentLoaded', setupBrokenImageOrdering); 137 } else { 138 setupBrokenImageOrdering(); 139 } 140 window.addEventListener('load', function(){ setTimeout(setupBrokenImageOrdering, 300); }); 141})(); 142</script>
142 143</footer> 144<div class="lang-selector notranslate" data-no-translate="true" id="lang-selector" translate="no"><button class="lang-btn active notranslate" data-no-translate="true" id="btn-es" onclick="setLang('es')" translate="no">ES</button><button class="lang-btn notranslate" data-no-translate="true" id="btn-fr" onclick="setLang('fr')" translate="no">FR</button><button class="lang-btn notranslate" data-no-translate="true" id="btn-pt" onclick="setLang('pt')" translate="no">PT</button></div><div class="lang-translate-bar notranslate" data-no-translate="true" id="lang-bar" translate="no">Traduciendo... â³</div>
145<script defer src="https://webforms.pipedrive.com/f/loader" async></script>
vendor: 1 bytes, line 145
145
146<script src="/assets/script-1.js"></script>
vendor: 1 bytes, line 146
146
147<script src="/assets/script-2.js"></script>
vendor: 1 bytes, line 147
147
148<script src="/assets/script-4.js"></script>
vendor: 1 bytes, line 148
148
149<script src="/assets/script-5.js"></script>
vendor: 1 bytes, line 149
149
150<script src="/assets/script-6.js"></script>
vendor: 1 bytes, line 150
150
151<script src="/assets/script-7.js"></script>
vendor: 1 bytes, line 151
151
152<script> 153(function(){ 154 var simImg='https://res.cloudinary.com/da0nxykeu/image/upload/v1774004207/Caterina_2_4_9575b97b-3f2b-4339-a605-de7f56fbaf4d_hiouzx.webp'; 155 function fixSimImage(){ 156 var sim=document.getElementById('page-simulador'); 157 if(!sim) return; 158 var divs=sim.querySelectorAll('div[style*="background-image"]'); 159 divs.forEach(function(d){ 160 if((d.getAttribute('style')||'').indexOf('Caterina_2_4')>-1 || d.offsetHeight>300){ 161 d.style.backgroundImage='url('+simImg+')'; 162 d.style.backgroundSize='cover'; 163 d.style.backgroundPosition='center'; 164 } 165 }); 166 } 167 if(document.readyState==='loading') document.addEventListener('DOMContentLoaded',fixSimImage); else fixSimImage(); 168 window.addEventListener('load',fixSimImage); 169})(); 170</script>
vendor: 1 bytes, line 170
170
171<script id="portfolio-broken-image-order-fix"> 172(function(){ 173 function moveBrokenPortfolioCard(img){ 174 var card = img && img.closest ? img.closest('#portfolio-grid .port-card') : null; 175 var grid = document.getElementById('portfolio-grid'); 176 if(!card || !grid || card.dataset.noPhotoMoved === '1') return; 177 card.dataset.noPhotoMoved = '1'; 178 card.classList.add('portfolio-no-photo-last'); 179 grid.appendChild(card); 180 } 181 function setupBrokenImageOrdering(){ 182 var imgs = document.querySelectorAll('#portfolio-grid .port-card img'); 183 imgs.forEach(function(img){ 184 img.addEventListener('error', function(){ moveBrokenPortfolioCard(img); }, {once:true}); 185 if(img.complete && img.naturalWidth === 0){ moveBrokenPortfolioCard(img); } 186 }); 187 } 188 if(document.readyState === 'loading'){ 189 document.addEventListener('DOMContentLoaded', setupBrokenImageOrdering); 190 } else { 191 setupBrokenImageOrdering(); 192 } 193 window.addEventListener('load', function(){ setTimeout(setupBrokenImageOrdering, 300); }); 194})(); 195</script>
195 196
197<script async id="netlify-rum-container" src="/.netlify/scripts/rum" data-netlify-rum-site-id="f92a5a0a-afb1-4a89-b900-0a8496ddde73" data-netlify-deploy-branch="" data-netlify-deploy-context="production" data-netlify-cwv-token="eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJzaXRlX2lkIjoiZjkyYTVhMGEtYWZiMS00YTg5LWI5MDAtMGE4NDk2ZGRkZTczIiwiYWNjb3VudF9pZCI6IjY5ZWIzYzc4NWI1MmE5M2NlMzhjZTJjMiIsImRlcGxveV9pZCI6IjZhYzRjYWU5NTU3ZDYwNjg3N2JlMDM1OSIsImlzc3VlciI6Im5mc2VydmVyIn0.ftdccZr1KJIDejWXRkfJnluwaTtIE6QzzC__mJyVw_4"></script>
197 198</body></html>
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.