1<!doctype html> 2<html class="no-js" lang="fr"> 3 <head> 4 <meta charset="utf-8"> 5 <title> Contacts </title> 6 7 8 <link rel="alternate" href="https://www.rothoblaas.it/contatti" hreflang="it"/> 9 <link rel="alternate" href="https://www.rothoblaas.com/contacts" hreflang="x-default"/> 10 <link rel="alternate" href="https://www.rothoblaas.com/contacts" hreflang="en"/> 11 <link rel="alternate" href="https://www.rothoblaas.de/kontakten" hreflang="de"/> 12 <link rel="alternate" href="https://www.rothoblaas.fr/contacts" hreflang="fr"/> 13 <link rel="alternate" href="https://www.rothoblaas.es/contactos" hreflang="es"/> 14 <link rel="alternate" href="https://www.rothoblaas.pt/contacte-nos" hreflang="pt"/> 15 <link rel="alternate" href="https://www.rothoblaas.cn/contacts" hreflang="zh"/> 16 <link rel="alternate" href="https://www.rothoblaas.ru.com/contacts" hreflang="ru"/> 17 <link rel="alternate" href="https://www.rothoblaas.pl/contacts" hreflang="pl"/> 18 19 20 21 <meta name="google-site-verification" content="0tbRi2ReWhmr67pKnCYxSK7OdUY8gCF2e0n8qwMcFfE"> 22 23 24 25 <meta name="algolia-site-verification" content="1DAFD6341A81DF07"/> 26 27 <meta name="csrf-token" content="mEn0ZDlfuXtu0oGj0ovs8kPtq8WVEnrBDkTrm2fR"> 28 29 <meta name="HandheldFriendly" content="True"> 30 <meta name="MobileOptimized" content="320"> 31 <meta name="viewport" content="width=device-width, initial-scale=1.0"> 32 <meta http-equiv="X-UA-Compatible" content="IE=edge,chrome=1"> 33 <meta http-equiv="cleartype" content="on"> 34 35 <meta property="og:title" content="Contacts"/> 36 <meta property="og:url" content="https://www.rothoblaas.fr/contacts"/> 37 <meta property="og:type" content="website"/> 38 <meta property="og:description" content=""/> 39 <meta name="twitter:card" content="summary_large_image" /> 40 <meta name="twitter:title" content="Contacts"/> 41 <meta name="twitter:description" content=""/> 42 <meta property="og:image" content="https://www.rothoblaas.fr/assets/images/social-cover.jpg"/> 43 <meta name="twitter:image" content="https://www.rothoblaas.fr/assets/images/social-cover.jpg"/> 44 45 <meta property="og:image:width" content="1200"/> 46 <meta property="og:image:height" content="627"/> 47 48 <link rel="stylesheet" href="https://use.typekit.net/pwr3flh.css"> 49 50 <link rel="stylesheet" href="https://www.rothoblaas.fr/assets/styles/full-modern.css?version=1791204460"> 51 52 <link rel="stylesheet" href="https://unpkg.com/[email protected]/dist/tippy.css"/> 53 54 55 56
56<script async defer src="/assets/scripts/bundle.js?id=e04517c4bfb8613cfc7e"></script>
56 57
57<script defer src="https://cdn.jsdelivr.net/npm/@alpinejs/[email protected]/dist/cdn.min.js"></script>
57 58
58<script defer src="https://cdn.jsdelivr.net/npm/@alpinejs/[email protected]/dist/cdn.min.js"></script>
58 59
59<script defer src="https://cdn.jsdelivr.net/npm/@ryangjchandler/[email protected]/dist/cdn.min.js"></script>
59 60
60<script defer src="https://cdn.jsdelivr.net/npm/[email protected]/dist/cdn.min.js"></script>
60 61 62 63
63<script> 64 document.addEventListener('alpine:init', () => { 65 Alpine.data('agentFinder', () => ({ 66 countries: [], 67 provinces: [], 68 zips: [], 69 locations: [], 70 agents: [], 71 72 hasIncompleteProvinces: false, 73 74 currentCountry: 'US', 75 currentProvince: null, 76 currentZip: null, 77 currentLocation: null, 78 isHt: false, 79 80 showErrors: false, 81 82 async init() { 83 await this.loadCountries(); 84 await this.onCountryChange(); 85 this.isHt = new URLSearchParams(window.location.search).get('ht') === 'true'; 86 }, 87 88 accountTypes(agent) { 89 const accountTypes = Array.isArray(agent?.account_types) 90 ? agent.account_types 91 : (agent?.account_type ? [agent.account_type] : []); 92 93 return accountTypes.length > 0 ? accountTypes : ['WOODWORKER']; 94 }, 95 96 hasAccountType(agent, type = null) { 97 const accountTypes = this.accountTypes(agent); 98 if (type === null) { 99 return accountTypes.length > 0; 100 } 101 102 return accountTypes.includes(type); 103 }, 104 105 displayEmail(email) { 106 let value = (email || '').toLowerCase(); 107 if(value === '[email protected]') { 108 value = '[email protected]'; 109 } 110 if (value === '[email protected]') { 111 value = '[email protected]'; 112 } 113 return value; 114 }, 115 116 async loadCountries() { 117 const res = await fetch('/api/agent-finder/countries'); 118 this.countries = await res.json(); 119 }, 120 121 async onCountryChange() { 122 this.currentProvince = null; 123 this.currentZip = null; 124 this.currentLocation = null; 125 this.provinces = []; 126 this.zips = []; 127 this.locations = []; 128 129 const res = await fetch(`/api/agent-finder/countries/${this.currentCountry}`); 130 const data = await res.json(); 131 132 this.hasIncompleteProvinces = data.hasIncompleteProvinces; 133 134 if (data.hasProvinces) { 135 this.provinces = data.provinces; 136 if (this.hasIncompleteProvinces) { 137 let provinces = this.provinces; 138 provinces.push({ 139 'value': 'other', 140 'label': 'Autre' 141 }); 142 this.provinces = provinces; 143 } 144 } else { 145 this.zips = data.zips; 146 } 147 }, 148 149 async onProvinceChange() { 150 this.currentZip = null; 151 this.currentLocation = null; 152 this.zips = []; 153 this.locations = []; 154 155 const res = await fetch(`/api/agent-finder/zips?country=${this.currentCountry}&province=${this.currentProvince}`); 156 this.zips = await res.json(); 157 }, 158 159 async onZipChange() { 160 console.log('zip change'); 161 this.currentLocation = null; 162 163 if (this.currentZip && this.currentZip.length > 7) { 164 this.currentZip = this.currentZip.substring(0, 7); 165 } 166 167 const res = await fetch(`/api/agent-finder/locations?country=${this.currentCountry}&province=${this.currentProvince}&zip=${this.currentZip}`); 168 this.locations = await res.json(); 169 }, 170 171 canSearch() { 172 if (!this.currentProvince && this.provinces.length > 0) return false;
173 if (!this.currentZip && this.zips.length > 0) return false; 174 if (!this.currentLocation && this.locations.length > 0) return false; 175 return true; 176 }, 177 178 async performSearch() { 179 if (!this.canSearch()) { 180 this.showErrors = true; 181 return; 182 } 183 184 this.showErrors = false; 185 186 const params = new URLSearchParams({ 187 country: this.currentCountry || '', 188 province: this.currentProvince || '', 189 zip: this.currentZip || '', 190 location: this.currentLocation || '', 191 }); 192 193 params.set('ht', this.isHt ? 'true' : 'false'); 194 195 const res = await fetch(`/api/agent-finder/search?${params.toString()}`); 196 const data = await res.json(); 197 198 this.agents = this.normalizeAgents(data.agents, data.provinceAgents, data.zipAgents); 199 200 window.dataLayer = window.dataLayer || []; 201 window.dataLayer.push({ 202 event: 'cta_click', 203 cta_type: 'contact', 204 cta_label: 'find_local_sales_contact', 205 //page_location: 'body', 206 component: 'button', 207 interaction_type: 'click', 208 lead_subtype: 'local_sales_lead', 209 cta_intent: 'sales' 210 }); 211 window.dataLayer.push({ 212 event: 'contact_search', 213 }); 214 }, 215 216 normalizeAgents(agents, provinceAgents, zipAgents) { 217 const merged = [...agents, ...provinceAgents, ...zipAgents]; 218 219 const byEmail = {}; 220 const noEmail = []; 221 222 merged.forEach(agent => { 223 if (!agent.email) { 224 noEmail.push(agent); 225 return; 226 } 227 228 const email = String(agent.email).toLowerCase(); 229 const accountTypes = this.accountTypes(agent); 230 const count = (agent.zip ? 1 : 0) + (agent.location ? 1 : 0); 231 232 if (!byEmail[email]) { 233 byEmail[email] = { 234 agent: { 235 ...agent, 236 email, 237 account_type: agent.account_type || 'WOODWORKER', 238 }, 239 accountTypes: new Set(), 240 count, 241 }; 242 } else { 243 const existing = byEmail[email]; 244 if (count >= existing.count) { 245 existing.agent = { 246 ...existing.agent, 247 ...agent, 248 email, 249 account_type: agent.account_type || existing.agent.account_type || 'WOODWORKER', 250 }; 251 existing.count = count; 252 } 253 } 254 255 accountTypes.forEach(type => { 256 if (type) { 257 byEmail[email].accountTypes.add(type); 258 } 259 }); 260 }); 261 262 const unique = [ 263 ...Object.values(byEmail).map(({agent, accountTypes}) => ({ 264 ...agent, 265 account_types: [...accountTypes], 266 })), 267 ...noEmail.map(agent => ({ 268 ...agent, 269 account_type: agent.account_type || 'WOODWORKER', 270 account_types: this.accountTypes(agent), 271 })), 272 ]; 273 274 const maxSpecificityByAccountType = {}; 275 unique.forEach(agent => { 276 const count = this.locationSpecificity(agent); 277 278 this.accountTypes(agent).forEach(type => {
279 const key = this.accountTypeKey(type); 280 if (!key) return; 281 282 if (maxSpecificityByAccountType[key] === undefined || count > maxSpecificityByAccountType[key]) { 283 maxSpecificityByAccountType[key] = count; 284 } 285 }); 286 }); 287 288 const filtered = unique.filter(agent => { 289 const count = this.locationSpecificity(agent); 290 291 return this.accountTypes(agent).some(type => { 292 const key = this.accountTypeKey(type); 293 return key && count === maxSpecificityByAccountType[key]; 294 }); 295 }); 296 297 filtered.sort((a, b) => { 298 const rank = (value) => { 299 const types = this.accountTypes(value); 300 const ranks = types.map((type) => { 301 const normalized = String(type || '').trim().toUpperCase(); 302 if (normalized === 'WOODWORKER') return 0; 303 if (normalized === 'SAFETY SPECIALIST') return 1; 304 if (normalized === 'RETAILER') return 2; 305 return 3; 306 }); 307 308 return ranks.length ? Math.min(...ranks) : 0; 309 }; 310 311 const rankA = rank(a); 312 const rankB = rank(b); 313 314 if (rankA !== rankB) return rankA - rankB; 315 316 return String(a.name || '').localeCompare(String(b.name || '')); 317 }); 318 319 return filtered; 320 }, 321 322 accountTypeKey(type) { 323 return String(type || '').trim().toUpperCase(); 324 }, 325 326 locationSpecificity(agent) { 327 return (agent.zip ? 1 : 0) + (agent.location ? 1 : 0); 328 }, 329 })); 330 }); 331 </script>
331 332 333 334 <link rel="apple-touch-icon" sizes="57x57" href="/assets/images/icons/apple-icon-57x57.png"> 335<link rel="apple-touch-icon" sizes="60x60" href="/assets/images/icons/apple-icon-60x60.png"> 336<link rel="apple-touch-icon" sizes="72x72" href="/assets/images/icons/apple-icon-72x72.png"> 337<link rel="apple-touch-icon" sizes="76x76" href="/assets/images/icons/apple-icon-76x76.png"> 338<link rel="apple-touch-icon" sizes="114x114" href="/assets/images/icons/apple-icon-114x114.png"> 339<link rel="apple-touch-icon" sizes="120x120" href="/assets/images/icons/apple-icon-120x120.png"> 340<link rel="apple-touch-icon" sizes="144x144" href="/assets/images/icons/apple-icon-144x144.png"> 341<link rel="apple-touch-icon" sizes="152x152" href="/assets/images/icons/apple-icon-152x152.png"> 342<link rel="apple-touch-icon" sizes="180x180" href="/assets/images/icons/apple-icon-180x180.png"> 343<link rel="icon" type="image/png" sizes="192x192" href="/assets/images/icons/android-icon-192x192.png"> 344<link rel="icon" type="image/png" sizes="32x32" href="/assets/images/icons/favicon-32x32.png"> 345<link rel="icon" type="image/png" sizes="96x96" href="/assets/images/icons/favicon-96x96.png"> 346<link rel="icon" type="image/png" sizes="16x16" href="/assets/images/icons/favicon-16x16.png"> 347<link rel="manifest" href="/manifest.json"> 348<meta name="msapplication-TileColor" content="#ffffff"> 349<meta name="msapplication-TileImage" content="/assets/images/icons/ms-icon-144x144.png"> 350<meta name="theme-color" content="#ffffff"> 351<link rel="shortcut icon" href="/favicon.ico" type="image/x-icon"> 352<link rel="icon" href="/favicon.ico" type="image/x-icon"> 353 354 355 356
356<script type="text/javascript" src="https://embeds.iubenda.com/widgets/9d4bbb35-5b20-4223-973c-a183a59ab682.js" 357 perPurposeConsent="true"></script>
vendor: 1 bytes, line 357
357
358<script> 359 const iubendaCallbacks = window._iub?.csSiteConf?.callback; 360 if (iubendaCallbacks) { 361 const onReady = iubendaCallbacks.onReady; 362 iubendaCallbacks.onReady = function (...args) { 363 onReady?.apply(this, args); 364 window.dispatchEvent(new Event('iub-consent-updated')); 365 }; 366 } 367</script>
vendor: 1 bytes, line 367
367
368<script type="text/javascript" async src="https://cdn.iubenda.com/iubenda.js"></script>
368 369
370<script> 371 document.addEventListener('alpine:init', () => { 372 Alpine.data('cookieConsent', () => ({ 373 hasNecessaryConsent: false, 374 hasFunctionalConsent: false, 375 hasExperienceConsent: false, 376 hasMeasuringConsent: false, 377 hasMarketingConsent: false, 378 init() { 379 this.updateFromPreferences(); 380 window.addEventListener('iub-consent-updated', () => this.updateFromPreferences()); 381 }, 382 updateFromPreferences() { 383 this.hasNecessaryConsent = this.readPurpose(1); 384 this.hasFunctionalConsent = this.readPurpose(2); 385 this.hasExperienceConsent = this.readPurpose(3); 386 this.hasMeasuringConsent = this.readPurpose(4); 387 this.hasMarketingConsent = this.readPurpose(5); 388 }, 389 readPurpose(purposeId) { 390 const api = window._iub?.cs?.api; 391 if (typeof api?.getPreferences !== 'function') { 392 console.log('missing preferences'); 393 return false; 394 } 395 396 const preferences = api.getPreferences(); 397 const purposeStates = api.getPurposesState?.(); 398 console.log('preferences', preferences); 399 console.log('purposeStates', purposeStates); 400 if (api.gdprApplies?.() || api.lgpdApplies?.()) { 401 const purpose = String(purposeId); 402 const state = purposeStates?.[purpose]; 403 404 return typeof state === 'boolean' 405 ? state 406 : preferences?.purposes?.[purpose] === true; 407 } 408 409 const usprPurposes = ['s', 'sh', 'adv']; 410 const usprState = preferences?.uspr ?? purposeStates; 411 if (usprPurposes.some((purpose) => Object.prototype.hasOwnProperty.call(usprState ?? {}, purpose))) { 412 return navigator.globalPrivacyControl !== true 413 && usprPurposes.every((purpose) => usprState[purpose] !== false); 414 } 415 416 if (preferences?.purposes) { 417 return preferences.purposes[String(purposeId)] === true; 418 } 419 420 return navigator.globalPrivacyControl !== true && preferences?.consent !== false; 421 }, 422 openPreferences() { 423 const api = window._iub?.cs?.api; 424 if (typeof api?.openPreferences === 'function') { 425 api.openPreferences(); 426 } else if (typeof api?.showCP === 'function') { 427 api.showCP(); 428 } else { 429 const btn = document.querySelector('.iubenda-cs-preferences-link'); 430 if (btn) btn.click(); 431 } 432 }, 433 })); 434 }); 435</script>
435 436 437 <!-- Google Tag Manager -->
438<script>
vendor: 441 bytes, lines 438-447
438 439 (function (w, d, s, l, i) { 440 w[l] = w[l] || []; 441 w[l].push({'gtm.start': new Date().getTime(), event: 'gtm.js'}); 442 var f = d.getElementsByTagName(s)[0], 443 j = d.createElement(s), dl = l != 'dataLayer' ? '&l=' + l : ''; 444 j.async = true; 445 j.src = 'https://www.googletagmanager.com/gtm.js?id=' + i + dl; 446 f.parentNode.insertBefore(j, f); 447 })(window, document, 'script', 'dataLayer', '
447GTM-TQB7MFF
vendor: 4 bytes, line 447
447');
448</script>
448 449<!-- End Google Tag Manager --> 450 451 452 453 454 <!-- Facebook Pixel Code --> 455
455<script type="text/plain" class="_iub_cs_activate-inline" data-iub-purposes="5">
vendor: 710 bytes, lines 455-477
455 456 !function (f, b, e, v, n, t, s) { 457 if (f.fbq) return; 458 n = f.fbq = function () { 459 n.callMethod ? 460 n.callMethod.apply(n, arguments) : n.queue.push(arguments) 461 }; 462 if (!f._fbq) f._fbq = n; 463 n.push = n; 464 n.loaded = !0; 465 n.version = '2.0'; 466 n.queue = []; 467 t = b.createElement(e); 468 t.async = !0; 469 t.src = v; 470 s = b.getElementsByTagName(e)[0]; 471 s.parentNode.insertBefore(t, s) 472 }(window, document, 'script', 473 'https://connect.facebook.net/en_US/fbevents.js'); 474 475 476 477 fbq('init', '
4771204268234616664
vendor: 110 bytes, lines 477-487
477'); 478 479 480 481 482 483 484 485 486 fbq('track', 'PageView'); 487
487fbq('track', 'ViewContent'); 488 489 </script>
489 490 <noscript type="text/plain" class="_iub_cs_activate" data-iub-purposes="5"> 491 492 493 494 <!-- FR --> 495 <img height="1" width="1" style="display:none" 496 src="https://www.facebook.com/tr?id=1204268234616664&ev=PageView&noscript=1"/> 497 498 499 500 501 502 </noscript> 503 <!-- End Facebook Pixel Code --> 504 505
505<script type="text/javascript"> 506 _linkedin_partner_id = "8908042"; 507 window._linkedin_data_partner_ids = window._linkedin_data_partner_ids || []; 508 window._linkedin_data_partner_ids.push(_linkedin_partner_id); 509 </script>
509 510
510<script type="text/plain" class="_iub_cs_activate-inline" data-iub-purposes="5" > 511 (function (l) { 512 if (!l) { 513 window.lintrk = function (a, b) { 514 window.lintrk.q.push([a, b]) 515 }; 516 window.lintrk.q = [] 517 } 518 var s = document.getElementsByTagName("script")[0]; 519 var b = document.createElement("script"); 520 b.type = "text/javascript"; 521 b.async = true; 522 b.src = "https://snap.licdn.com/li.lms-analytics/insight.min.js"; 523 s.parentNode.insertBefore(b, s); 524 })(window.lintrk); 525 </script>
525 526 <noscript type="text/plain" class="_iub_cs_activate" data-iub-purposes="5"> 527 <img height="1" width="1" style="display:none;" alt="" 528 src="https://px.ads.linkedin.com/collect/?pid=8908042&fmt=gif"/> 529 </noscript> 530 531 532 533
533<script> 534 document.addEventListener('alpine:init', () => { 535 536 function slugify(value) { 537 return (value || '') 538 .toString() 539 .trim() 540 .toLowerCase() 541 .normalize('NFD') 542 .replace(/[\u0300-\u036f]/g, '') 543 .replace(/[^a-z0-9]+/g, '-') 544 .replace(/^-+|-+$/g, ''); 545 } 546 547 Alpine.data('trackLink', (label, overrides = {}) => ({ 548 observer: null, 549 init() { 550 const el = this.$el; 551 if (!el.matches('a[href]')) return; 552 553 this.applyTrackingAttrs(); 554 this.observer = new MutationObserver((mutations) => { 555 if (mutations.some((m) => m.type === 'attributes' && m.attributeName === 'href')) { 556 this.applyTrackingAttrs(); 557 } 558 }); 559 this.observer.observe(el, {attributes: true, attributeFilter: ['href']}); 560 }, 561 applyTrackingAttrs() { 562 const el = this.$el; 563 const href = el.getAttribute('href') || ''; 564 const hrefLang = el.getAttribute('hreflang') || ''; 565 const analyticsKeys = [ 566 'data-analytics-event', 567 'data-analytics-cta_type', 568 'data-analytics-download_type', 569 'data-analytics-download_name', 570 'data-analytics-cta_label', 571 'data-analytics-page_location', 572 'data-analytics-component', 573 'data-analytics-interaction_type', 574 'data-analytics-lead_subtype', 575 'data-analytics-cta_intent' 576 ]; 577 578 if (!href || href.startsWith('#')) { 579 analyticsKeys.forEach((key) => el.removeAttribute(key)); 580 return; 581 } 582 583 let hostname = ''; 584 try { 585 hostname = new URL(href, window.location.href).hostname.toLowerCase(); 586 } catch (e) { 587 analyticsKeys.forEach((key) => el.removeAttribute(key)); 588 return; 589 } 590 591 const isRothoblaasDomain = /^(?:www\.)?rothoblaas\.[a-z]{2,}$/i.test(hostname); 592 if (!isRothoblaasDomain) { 593 analyticsKeys.forEach((key) => el.removeAttribute(key)); 594 return; 595 } 596 597 let downloadType = 'none'; 598 const url = new URL(href, window.location.href); 599 const match = url.pathname.match(/\.([a-z0-9]+)$/i); 600 if (match) { 601 const ext = match[1].toLowerCase(); 602 if (ext !== 'html' && ext !== 'htm') { 603 downloadType = ext; 604 } 605 } 606 607 let downloadName = ''; 608 downloadName = url.pathname.split('/').pop(); 609 610 611 const attrs = { 612 'data-analytics-event': 'cta_click', 613 'data-analytics-cta_type': 'download', // or "cta_type" 614 'data-analytics-download_type': downloadType, 615 'data-analytics-download_name': downloadName, 616 'data-analytics-cta_label': slugify(label) + (hrefLang ? '_' + hrefLang : ''), 617 //'data-analytics-page_location': 'body', 618 //'data-analytics-component': 'button', 619 //'data-analytics-interaction_type': 'click', 620 'data-analytics-lead_subtype': 'none', 621 'data-analytics-cta_intent': 'documentation', 622 ...overrides 623 }; 624 625 Object.entries(attrs).forEach(([key, value]) => { 626 el.setAttribute(key, value); 627 }); 628 }, 629 destroy() { 630 if (this.observer) { 631 this.observer.disconnect(); 632 } 633 } 634 })); 635 }); 636</script>
vendor: 1 bytes, line 636
636
637<script> 638 (function () { 639 const ctaIntents = new Set(['documentation', 'navigation', 'sales', 'support']); 640 const ctaTypes = new Set(['download', 'navigation', 'contact']); 641 const events = new Set(['cta_click']); 642 const pageLocations = new Set(['body', 'hero', 'header', 'footer']); 643 644 function getAttr(element, suffix) { 645 return ( 646 element.getAttribute('data-analytics-' + suffix) 647 ); 648 } 649 650 function getAnalyticsDataAttributes(element) { 651 const result = {}; 652 Array.from(element.attributes) 653 .filter((attr) => /^data-(analytics)-/.test(attr.name)) 654 .forEach((attr) => { 655 result[attr.name] = attr.value; 656 }); 657 return result; 658 } 659 660 function isToken(value) { 661 return /^[a-z0-9_-]+$/.test(value || ''); 662 } 663 664 document.addEventListener('click', function (event) { 665 const element = event.target.closest('[data-analytics-event]'); 666 if (!element) return; 667 668 const eventName = getAttr(element, 'event'); 669 const ctaType = getAttr(element, 'cta_type'); 670 const pageLocation = getAttr(element, 'page_location'); 671 const component = getAttr(element, 'component'); 672 const interactionType = getAttr(element, 'interaction_type'); 673 let downloadType = getAttr(element, 'download_type'); 674 if (downloadType === '' || downloadType === null) { 675 downloadType = 'none'; 676 } 677 let downloadName = getAttr(element, 'download_name'); 678 if (downloadName === '' || downloadName === null) { 679 downloadName = ''; 680 } 681 const leadSubtype = getAttr(element, 'lead_subtype'); 682 const ctaIntent = getAttr(element, 'cta_intent'); 683 const ctaLabel = getAttr(element, 'cta_label'); 684 685 const validations = [ 686 { 687 rule: 'event must be a of a valid type', 688 pass: Boolean(ctaType) && events.has(eventName) 689 }, 690 { 691 rule: 'cta_type must be a non-empty analytics token (download, navigation, contact, ...)', 692 pass: Boolean(ctaType) && ctaTypes.has(ctaType) 693 }, 694 /*{ 695 rule: 'page_location must be one of: body, hero, header, footer', 696 pass: Boolean(pageLocation) && pageLocations.has(pageLocation) 697 }, 698 { 699 rule: 'component must be "button"', 700 pass: component === 'button' 701 }, 702 { 703 rule: 'interaction_type must be "click"', 704 pass: interactionType === 'click' 705 },*/ 706 { 707 rule: 'download_type must be a real file extension token (or "none")', 708 pass: Boolean(downloadType) && (downloadType === 'none' || /^[a-z0-9]+$/.test(downloadType)) 709 }, 710 { 711 rule: 'lead_subtype must be "none" or a non-empty analytics token', 712 pass: Boolean(leadSubtype) && (leadSubtype === 'none' || isToken(leadSubtype)) 713 }, 714 { 715 rule: 'cta_intent must be a non-empty analytics token (documentation, navigation, sales, support, ...)', 716 pass: Boolean(ctaIntent) && ctaIntents.has(ctaIntent) 717 }, 718 { 719 rule: 'cta_label must be a non-empty string', 720 pass: typeof ctaLabel === 'string' && ctaLabel.trim() !== '' 721 } 722 ]; 723 724 const failures = validations.filter((validation) => !validation.pass); 725 if (failures.length) { 726 failures.forEach((failure) => { 727 console.error('[analytics-validation] Rule failed:', failure.rule, element); 728 }); 729 return; 730 } 731 732 const pathNames = [ 733 '/bimcad', 734 '/technical-support', 735 '/supporto-tecnico', 736 '/technischer-support', 737 '/support-technique', 738 '/soporte-tecnico', 739 '/suporte-tecnico', 740 '/texniceskaya-podderzka', 741 '/pomoc-techniczna', 742 '/products/*', 743 '/prodotti/*', 744 '/produkte/*', 745 '/produits/*', 746 '/productos/*', 747 '/produtos/*', 748 ] 749 750 const currentPathName = window.location.pathname; 751 const hasMatchingPathName = pathNames.some((pathName) => { 752 if (!pathName.includes('*')) { 753 return pathName === currentPathName; 754 } 755 756 const escapedPathName = pathName.replace(/[.+?^${}()|[\]\\]/g, '\\$&'); 757 const pattern = '^' + escapedPathName.replace(/\*/g, '.*') + '$'; 758 759 return new RegExp(pattern).test(currentPathName); 760 }); 761 762 if (hasMatchingPathName) { 763 window.dataLayer = window.dataLayer || []; 764 window.dataLayer.push({ 765 event: eventName, 766 cta_type: ctaType, 767 cta_label: ctaLabel, 768 //page_location: pageLocation, 769 //component: component, 770 //interaction_type: interactionType, 771 download_type: downloadType, 772 download_name: downloadName, 773 lead_subtype: leadSubtype, 774 cta_intent: ctaIntent 775 }); 776 } 777 778 console.log('[analytics-validation] Valid analytics data:', getAnalyticsDataAttributes(element)); 779 }); 780 })(); 781</script>
781 782 783 784</head> 785 <body x-data="pageModal()" x-on:keydown.escape="isModalOpen=false"> 786 787 <div class="z-10 text-center leading-none text-sm p-2 w-full font-normal overflow-hidden text-nowrap overflow-ellipsis bg-waterproofing-default"> 788 <a href="https://www.rothoblaas.fr/smartbook-chantier-eau-et-durabilite" 789 class="hover:underline ">SMARTBOOK: CHANTIER, EAU ET DURABILITÃ</a> 790 </div> 791 <div class="bg-base-surface flex lg:hidden px-4"> 792 <a href="mailto:[email protected]" 793 class=" flex text-white items-center text-sm gap-4 hover:underline flex-1"> 794 <svg style="height:36px;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1235 650"> 795 <defs> 796 <g id="b"> 797 <use xlink:href="#a" transform="rotate(-144)"/> 798 <use xlink:href="#a" transform="rotate(-72)"/> 799 <use xlink:href="#a"/> 800 <use xlink:href="#a" transform="rotate(72)"/> 801 <use xlink:href="#a" transform="rotate(144)"/> 802 </g> 803 <g id="c"> 804 <use xlink:href="#b" x="-.252"/> 805 <use xlink:href="#b" x="-.126"/> 806 <use xlink:href="#b"/> 807 <use xlink:href="#b" x=".126"/> 808 <use xlink:href="#b" x=".252"/> 809 </g> 810 <g id="d"> 811 <use xlink:href="#c" x="-.063"/> 812 <use xlink:href="#b" x=".315"/> 813 </g> 814 <g id="e"> 815 <use xlink:href="#d"/> 816 <use xlink:href="#c" y=".054"/> 817 <use xlink:href="#d" y=".108"/> 818 <use xlink:href="#c" y=".162"/> 819 </g> 820 <g id="g"> 821 <use xlink:href="#e" y="-.216"/> 822 <use xlink:href="#e"/> 823 <use xlink:href="#d" y=".216"/> 824 </g> 825 <path id="a" fill="#fff" d="M-.162 0 0-.5l.162.5z" transform="scale(.0616)"/> 826 <path id="f" fill="#b22234" d="M0 0h1235v50H0z"/> 827 </defs> 828 <path fill="#fff" d="M0 0h1235v650H0z"/> 829 <use xlink:href="#f"/> 830 <use xlink:href="#f" y="100"/> 831 <use xlink:href="#f" y="200"/> 832 <use xlink:href="#f" y="300"/> 833 <use xlink:href="#f" y="400"/> 834 <use xlink:href="#f" y="500"/> 835 <use xlink:href="#f" y="600"/> 836 <path fill="#3c3b6e" d="M0 0h494v350H0z"/> 837 <use xlink:href="#g" transform="matrix(650 0 0 650 247 175)"/> 838</svg> 839 <span class=" py-2">Fast delivery from US Warehouse - Get in Touch</span> 840 </a> 841 </div> 842 <header class="sticky top-0 z-100" 843 x-data="{visibleNav: false, visibleSubNav: null, visibleSubSubNav: null, visibleSearch: false, visibleLangSelector: false, visibleBrands: false}"> 844 845 <div class=" bg-base-strong flex items-center lg:hidden px-6 text-writing-inverse gap-1"> 846 <a href="https://www.rothoblaas.fr" class="block py-4 flex-1"> 847 <img src="/assets/images/rothoblaas-logo.svg" alt="Rothoblaas Logo" class="h-7"> 848 </a> 849 <button type="button" x-on:click="visibleSearch = true"> 850 <span class="sr-only">Open Search</span> 851 <svg class="h-8 w-8" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 852 <path d="M10.3923 16.4583C13.7414 16.4583 16.4564 13.7433 16.4564 10.3941C16.4564 7.045 13.7414 4.32999 10.3923 4.32999C7.04314 4.32999 4.32812 7.045 4.32812 10.3941C4.32812 13.7433 7.04314 16.4583 10.3923 16.4583Z" 853 stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10"/> 854 <path d="M19.6703 19.67L14.75 14.7498" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 855 stroke-linecap="round"/> 856</svg> 857 </button> 858 <a href="https://www.rothoblaas.fr/auth/redirect" rel="nofollow" class="text-writing-inverse"> 859 <svg class="h-9 w-9" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 860 <path d="M12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19Z" 861 fill="white" stroke="#707E85" stroke-width="0.75" stroke-miterlimit="10"/> 862 <path d="M12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19Z" 863 fill="white" stroke="#707E85" stroke-width="0.75" stroke-miterlimit="10"/> 864 <path d="M12 12C13.1046 12 14 11.1046 14 10C14 8.89543 13.1046 8 12 8C10.8954 8 10 8.89543 10 10C10 11.1046 10.8954 12 12 12Z" 865 fill="#707E85" stroke="#707E85" stroke-width="0.75" stroke-miterlimit="10"/> 866 <path d="M8 17.2964C8 17.4115 8.00617 17.5267 8.0185 17.6418C11.138 19.4072 12.5189 19.4464 15.9661 17.7899C15.9877 17.6287 16 17.4642 16 17.2964C16 15.4837 14.6091 14 12.9098 14H11.0902C9.3909 14 8 15.4837 8 17.2964Z" 867 fill="#707E85" stroke="#707E85" stroke-width="0.75" stroke-miterlimit="10"/> 868</svg>
869 <span class="sr-only">Login / Register</span> 870 </a> 871 <button type="button" x-on:click="visibleNav = true"> 872 <span class="sr-only">Open Menu</span> 873 <svg class="h-8 w-8" fill="currentColor" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 874 <g stroke="currentColor" stroke-linecap="round" stroke-linejoin="round" stroke-width="1"> 875 <path d="m5.33203 6.33221h13.33337m-13.33337 5.16779h13.33337"/> 876 <path d="m5.33203 16.6678h13.33337"/> 877 </g> 878</svg> 879 </button> 880 <div x-on:click.outside="visibleSearch = false" 881 x-show="visibleSearch" 882 x-cloak 883 class="absolute top-full w-full left-0 z-10 px-2 pb-2 bg-base-strong lg:hidden text-writing-inverse overflow-hidden flex flex-col" 884 > 885 <form action="https://www.rothoblaas.fr/search" method="GET"> 886 <div class="relative text-writing-soft"> 887 <div class="w-10 h-10 absolute left-0 top-0 flex flex-col items-center justify-center"> 888 <svg class="h-5 w-5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 889 <path d="M10.3923 16.4583C13.7414 16.4583 16.4564 13.7433 16.4564 10.3941C16.4564 7.045 13.7414 4.32999 10.3923 4.32999C7.04314 4.32999 4.32812 7.045 4.32812 10.3941C4.32812 13.7433 7.04314 16.4583 10.3923 16.4583Z" 890 stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10"/> 891 <path d="M19.6703 19.67L14.75 14.7498" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 892 stroke-linecap="round"/> 893</svg> 894 </div> 895 <label for="eyqwbfshdsh" class="sr-only">Chercher</label> 896 <input type="text" 897 id="eyqwbfshdsh" 898 autocomplete="off" 899 autocapitalize="off" 900 autocorrect="off" 901 spellcheck="false" 902 name="q" 903 class="w-full bg-base-surface text-writing-inverse border-none py-2 pl-10 rounded-xs text-md focus:ring-0 focus:inset-ring focus:outline-none focus:inset-ring-writing-soft placeholder-writing-soft" 904 placeholder="Chercher..."> 905 </div> 906 <button type="submit" class="sr-only">Chercher</button> 907 </form> 908 </div> 909 </div> 910 <div x-on:click.outside="visibleNav = false; visibleSubNav = null; visibleSubSubNav = null;" 911 x-show="visibleNav" 912 x-cloak 913 class="fixed z-10 translate-x-[20vw] w-8/10 h-dvh top-0 bg-base-strong lg:hidden text-writing-inverse overflow-hidden flex flex-col" 914 x-transition:enter="transition-transform ease-out duration-300" 915 x-transition:enter-start="translate-x-[100vw]" 916 x-transition:enter-end="translate-x-[20vw]" 917 x-transition:leave="transition-transform ease-in duration-200" 918 x-transition:leave-start="translate-x-[20vw]" 919 x-transition:leave-end="translate-x-[100vw]" 920 > 921 922 <div class="p-6 flex justify-end"> 923 <button class="h-10 w-10 text-writing-inverse flex items-center justify-center" type="button" 924 x-on:click="visibleNav = false; visibleSubNav = null; visibleSubSubNav = null;"> 925 <svg class="h-8 w-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 926 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 927 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 928</svg> 929 </button> 930 </div> 931 <div class="overflow-scroll no-scrollbar"> 932 <div class="p-6 pt-4 flex flex-col items-start gap-6"> 933 <div> 934 <button type="button" class="text-2xl hover:underline" 935 x-on:click="visibleSubNav = '0f858c50-e519-4519-96b6-58b9beb17fbc'">En vedette</button> 936 <div class="translate-x-[0vw] h-dvh w-full bg-base-strong absolute top-0 left-0 z-10" 937 x-show="visibleSubNav === '0f858c50-e519-4519-96b6-58b9beb17fbc'" 938 x-transition:enter="transition-transform ease-
938out duration-300" 939 x-transition:enter-start="translate-x-[100vw]" 940 x-transition:enter-end="translate-x-[0vw]" 941 x-transition:leave="transition-transform ease-in duration-200" 942 x-transition:leave-start="translate-x-[0vw]" 943 x-transition:leave-end="translate-x-[100vw]" 944 > 945 <div class="p-6 flex justify-end items-center"> 946 <button class="flex-1 flex gap-2 items-center" type="button" 947 x-on:click="visibleSubNav = null; visibleSubSubNav = null"> 948 <svg class="w-6 h-6 rotate-180" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 949 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 950 stroke-linecap="round" stroke-linejoin="round"/> 951</svg> 952 <span>Retour</span> 953 </button> 954 <button class="h-10 w-10 text-writing-inverse flex items-center justify-center" 955 type="button" 956 x-on:click="visibleNav = false; visibleSubNav = null; visibleSubSubNav = null;"> 957 <svg class="h-8 w-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 958 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 959 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 960</svg> 961 </button> 962 </div> 963 964 965 <div class="p-6 pt-4 flex flex-col items-stretch gap-4"> 966 967 <a href="" 968 class="text-2xl hover:no-underline">En vedette</a> 969 <a href="https://www.rothoblaas.fr/produits/nouveaux-produits" 970 class="hover:underline">Nouveaux produits</a> 971 <a href="https://www.rothoblaas.fr/smartbook-chantier-eau-et-durabilite" 972 class="hover:underline">CHANTIER, EAU ET DURABILITÃ</a> 973 <a href="https://www.rothoblaas.fr/planchers-nervures-sans-collage" 974 class="hover:underline">SHARP METAL</a> 975 <a href="https://www.rothoblaas.fr/vgs-plate-la-premiere-vis-de-levage-avec-reutilisation-verifiable" 976 class="hover:underline">VGS PLATE</a> 977 <a href="https://www.rothoblaas.fr/produits/feu" 978 class="hover:underline">Feu</a> 979 <a href="https://www.rothoblaas.fr/sujets" 980 class="hover:underline">Thématiques du bâtiment</a> 981 <a href="https://www.rothoblaas.fr/produits/fan-collection" 982 class="hover:underline">Fan collection</a> 983 </div> 984 </div> 985 </div> 986 <div> 987 <button type="button" class="text-2xl hover:underline" 988 x-on:click="visibleSubNav = '9967dd65-227f-4909-9864-2e4e2ad00071'">Produits</button> 989 <div class="translate-x-[0vw] h-dvh w-full bg-base-strong absolute top-0 left-0 z-10" 990 x-show="visibleSubNav === '9967dd65-227f-4909-9864-2e4e2ad00071'" 991 x-transition:enter="transition-transform ease-
991out duration-300" 992 x-transition:enter-start="translate-x-[100vw]" 993 x-transition:enter-end="translate-x-[0vw]" 994 x-transition:leave="transition-transform ease-in duration-200" 995 x-transition:leave-start="translate-x-[0vw]" 996 x-transition:leave-end="translate-x-[100vw]" 997 > 998 <div class="p-6 flex justify-end items-center"> 999 <button class="flex-1 flex gap-2 items-center" type="button" 1000 x-on:click="visibleSubNav = null; visibleSubSubNav = null"> 1001 <svg class="w-6 h-6 rotate-180" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1002 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1003 stroke-linecap="round" stroke-linejoin="round"/> 1004</svg> 1005 <span>Retour</span> 1006 </button> 1007 <button class="h-10 w-10 text-writing-inverse flex items-center justify-center" 1008 type="button" 1009 x-on:click="visibleNav = false; visibleSubNav = null; visibleSubSubNav = null;"> 1010 <svg class="h-8 w-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1011 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1012 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1013</svg> 1014 </button> 1015 </div> 1016 1017 1018 <div class="p-6 pt-4 flex flex-col items-stretch gap-4"> 1019 1020 <a href="" 1021 class="text-2xl hover:no-underline">Produits</a> 1022 <button class="flex justify-between items-center text-left" type="button" 1023 x-on:click="visibleSubSubNav = '5d47a855-3615-4221-973f-acd39b35e777'"> 1024 <span>Fixation</span> 1025 <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1026 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1027 stroke-linecap="round" stroke-linejoin="round"/> 1028</svg> 1029 </button> 1030 <div class="translate-x-[0vw] h-dvh w-full bg-base-strong absolute top-0 left-0 z-10" 1031 x-show="visibleSubSubNav === '5d47a855-3615-4221-973f-acd39b35e777'" 1032 x-transition:enter="transition-transform ease-out duration-300" 1033 x-transition:enter-start="translate-x-[100vw]" 1034 x-transition:enter-end="translate-x-[0vw]" 1035 x-transition:leave="transition-transform ease-in duration-200" 1036 x-transition:leave-start="translate-x-[0vw]" 1037 x-transition:leave-end="translate-x-[100vw]" 1038 > 1039 1040 <div class="p-6 flex justify-end items-center"> 1041 <button class="flex-1 flex gap-2 items-center justify-start text-left" 1042 type="button" 1043 x-on:click="visibleSubSubNav = null"> 1044 <svg class="w-6 h-6 rotate-180" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1045 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1046 stroke-linecap="round" stroke-linejoin="round"/> 1047</svg>
1048 <span>Produits</span> 1049 </button> 1050 <button class="h-10 w-10 text-writing-inverse flex items-center justify-center" 1051 type="button" 1052 x-on:click="visibleNav = false; visibleSubNav = null; visibleSubSubNav = null;"> 1053 <svg class="h-8 w-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1054 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1055 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1056</svg> 1057 </button> 1058 </div> 1059 1060 <div class="p-6 pt-4 flex flex-col items-start gap-4"> 1061 <a href="https://www.rothoblaas.fr/produits/fixation" 1062 class="text-2xl hover:no-underline hover:underline">Fixation</a> 1063 <a href="https://www.rothoblaas.fr/produits/fixation/vis" 1064 class="hover:underline">Vis</a> 1065 <a href="https://www.rothoblaas.fr/produits/fixation/equerres-et-plaques" 1066 class="hover:underline">Ãquerres et plaques</a> 1067 <a href="https://www.rothoblaas.fr/produits/fixation/connecteurs-pour-poteaux-et-plancher-clt" 1068 class="hover:underline">Connecteurs pour poteaux et plancher CLT</a> 1069 <a href="https://www.rothoblaas.fr/produits/fixation/adhesif-epoxy-xepox" 1070 class="hover:underline">Adhésif époxy XEPOX</a> 1071 <a href="https://www.rothoblaas.fr/produits/fixation/terrasses-et-facades" 1072 class="hover:underline">Terrasses et façades</a> 1073 <a href="https://www.rothoblaas.fr/produits/fixation/ancrages-pour-beton" 1074 class="hover:underline">Ancrages pour béton</a> 1075 </div> 1076 </div> 1077 <button class="flex justify-between items-center text-left" type="button" 1078 x-on:click="visibleSubSubNav = '2b272168-f3ba-4d66-8d49-5aa1886d5043'">
1079 <span>Ãtanchéité à L'AIR ET imperméabilisation</span> 1080 <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1081 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1082 stroke-linecap="round" stroke-linejoin="round"/> 1083</svg> 1084 </button> 1085 <div class="translate-x-[0vw] h-dvh w-full bg-base-strong absolute top-0 left-0 z-10" 1086 x-show="visibleSubSubNav === '2b272168-f3ba-4d66-8d49-5aa1886d5043'" 1087 x-transition:enter="transition-transform ease-out duration-300" 1088 x-transition:enter-start="translate-x-[100vw]" 1089 x-transition:enter-end="translate-x-[0vw]" 1090 x-transition:leave="transition-transform ease-in duration-200" 1091 x-transition:leave-start="translate-x-[0vw]" 1092 x-transition:leave-end="translate-x-[100vw]" 1093 > 1094 1095 <div class="p-6 flex justify-end items-center"> 1096 <button class="flex-1 flex gap-2 items-center justify-start text-left" 1097 type="button" 1098 x-on:click="visibleSubSubNav = null"> 1099 <svg class="w-6 h-6 rotate-180" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1100 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1101 stroke-linecap="round" stroke-linejoin="round"/> 1102</svg> 1103 <span>Produits</span> 1104 </button> 1105 <button class="h-10 w-10 text-writing-inverse flex items-center justify-center" 1106 type="button" 1107 x-on:click="visibleNav = false; visibleSubNav = null; visibleSubSubNav = null;"> 1108 <svg class="h-8 w-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1109 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1110 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1111</svg> 1112 </button> 1113 </div> 1114 1115 <div class="p-6 pt-4 flex flex-col items-start gap-4"> 1116 <a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation" 1117 class="text-2xl hover:no-underline hover:underline">Ãtanchéité à L'AIR ET imperméabilisation</a> 1118 <a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/rubans-adhesifs-et-produits-detancheite" 1119 class="hover:underline">Rubans adhésifs et produits d'étanchéité</a> 1120 <a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/membranes-auto-adhesives" 1121 class="hover:underline">Membranes auto-adhésives</a> 1122 <a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/membranes" 1123 class="hover:underline">Membranes</a> 1124 <a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/traversees-de-systemes" 1125 class="hover:underline">Traversées de systèmes</a> 1126 <a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/elements-pour-toiture-et-ventilation" 1127 class="hover:underline">Ãléments pour toiture et ventilation</a> 1128 </div> 1129 </div> 1130 <button class="flex justify-between items-center text-left" type="button" 1131 x-on:click="visibleSubSubNav = 'a40bea3a-acfd-4021-98d3-ab24b45150bc'">
1132 <span>Acoustique</span> 1133 <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1134 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1135 stroke-linecap="round" stroke-linejoin="round"/> 1136</svg> 1137 </button> 1138 <div class="translate-x-[0vw] h-dvh w-full bg-base-strong absolute top-0 left-0 z-10" 1139 x-show="visibleSubSubNav === 'a40bea3a-acfd-4021-98d3-ab24b45150bc'" 1140 x-transition:enter="transition-transform ease-out duration-300" 1141 x-transition:enter-start="translate-x-[100vw]" 1142 x-transition:enter-end="translate-x-[0vw]" 1143 x-transition:leave="transition-transform ease-in duration-200" 1144 x-transition:leave-start="translate-x-[0vw]" 1145 x-transition:leave-end="translate-x-[100vw]" 1146 > 1147 1148 <div class="p-6 flex justify-end items-center"> 1149 <button class="flex-1 flex gap-2 items-center justify-start text-left" 1150 type="button" 1151 x-on:click="visibleSubSubNav = null"> 1152 <svg class="w-6 h-6 rotate-180" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1153 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1154 stroke-linecap="round" stroke-linejoin="round"/> 1155</svg> 1156 <span>Produits</span> 1157 </button> 1158 <button class="h-10 w-10 text-writing-inverse flex items-center justify-center" 1159 type="button" 1160 x-on:click="visibleNav = false; visibleSubNav = null; visibleSubSubNav = null;"> 1161 <svg class="h-8 w-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1162 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1163 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1164</svg> 1165 </button> 1166 </div> 1167 1168 <div class="p-6 pt-4 flex flex-col items-start gap-4"> 1169 <a href="https://www.rothoblaas.fr/produits/acoustique" 1170 class="text-2xl hover:no-underline hover:underline">Acoustique</a> 1171 <a href="https://www.rothoblaas.fr/produits/acoustique/profils-resilients" 1172 class="hover:underline">Profils résilients</a> 1173 <a href="https://www.rothoblaas.fr/produits/acoustique/feuilles-isolantes" 1174 class="hover:underline">Feuilles isolantes</a> 1175 <a href="https://www.rothoblaas.fr/produits/acoustique/produits-de-scellement" 1176 class="hover:underline">Produits de scellement</a> 1177 </div> 1178 </div> 1179 <button class="flex justify-between items-center text-left" type="button" 1180 x-on:click="visibleSubSubNav = '79b9cf34-dba6-4ec6-960d-cfe8d4a4948a'">
1181 <span>Systèmes antichute</span> 1182 <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1183 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1184 stroke-linecap="round" stroke-linejoin="round"/> 1185</svg> 1186 </button> 1187 <div class="translate-x-[0vw] h-dvh w-full bg-base-strong absolute top-0 left-0 z-10" 1188 x-show="visibleSubSubNav === '79b9cf34-dba6-4ec6-960d-cfe8d4a4948a'" 1189 x-transition:enter="transition-transform ease-out duration-300" 1190 x-transition:enter-start="translate-x-[100vw]" 1191 x-transition:enter-end="translate-x-[0vw]" 1192 x-transition:leave="transition-transform ease-in duration-200" 1193 x-transition:leave-start="translate-x-[0vw]" 1194 x-transition:leave-end="translate-x-[100vw]" 1195 > 1196 1197 <div class="p-6 flex justify-end items-center"> 1198 <button class="flex-1 flex gap-2 items-center justify-start text-left" 1199 type="button" 1200 x-on:click="visibleSubSubNav = null"> 1201 <svg class="w-6 h-6 rotate-180" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1202 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1203 stroke-linecap="round" stroke-linejoin="round"/> 1204</svg> 1205 <span>Produits</span> 1206 </button> 1207 <button class="h-10 w-10 text-writing-inverse flex items-center justify-center" 1208 type="button" 1209 x-on:click="visibleNav = false; visibleSubNav = null; visibleSubSubNav = null;"> 1210 <svg class="h-8 w-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1211 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1212 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1213</svg> 1214 </button> 1215 </div> 1216 1217 <div class="p-6 pt-4 flex flex-col items-start gap-4"> 1218 <a href="https://www.rothoblaas.fr/produits/systemes-antichute" 1219 class="text-2xl hover:no-underline hover:underline">Systèmes antichute</a> 1220 <a href="https://www.rothoblaas.fr/produits/systemes-antichute/lignes-de-vie" 1221 class="hover:underline">Lignes de vie</a> 1222 <a href="https://www.rothoblaas.fr/produits/systemes-antichute/points-dancrage" 1223 class="hover:underline">Points d'ancrage</a> 1224 <a href="https://www.rothoblaas.fr/produits/systemes-antichute/protection-collective-et-acces" 1225 class="hover:underline">Protection collective et accès</a> 1226 <a href="https://www.rothoblaas.fr/produits/systemes-antichute/equipements-de-protection-individuelle" 1227 class="hover:underline">Ãquipements de protection individuelle</a> 1228 <a href="https://www.rothoblaas.fr/produits/systemes-antichute/produits-complementaires" 1229 class="hover:underline">Produits complémentaires</a> 1230 </div> 1231 </div> 1232 <button class="flex justify-between items-center text-left" type="button" 1233 x-on:click="visibleSubSubNav = '722ac6b7-5424-4f63-b7c2-66df0a8ccc43'">
1234 <span>Machines et outillages</span> 1235 <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1236 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1237 stroke-linecap="round" stroke-linejoin="round"/> 1238</svg> 1239 </button> 1240 <div class="translate-x-[0vw] h-dvh w-full bg-base-strong absolute top-0 left-0 z-10" 1241 x-show="visibleSubSubNav === '722ac6b7-5424-4f63-b7c2-66df0a8ccc43'" 1242 x-transition:enter="transition-transform ease-out duration-300" 1243 x-transition:enter-start="translate-x-[100vw]" 1244 x-transition:enter-end="translate-x-[0vw]" 1245 x-transition:leave="transition-transform ease-in duration-200" 1246 x-transition:leave-start="translate-x-[0vw]" 1247 x-transition:leave-end="translate-x-[100vw]" 1248 > 1249 1250 <div class="p-6 flex justify-end items-center"> 1251 <button class="flex-1 flex gap-2 items-center justify-start text-left" 1252 type="button" 1253 x-on:click="visibleSubSubNav = null"> 1254 <svg class="w-6 h-6 rotate-180" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1255 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1256 stroke-linecap="round" stroke-linejoin="round"/> 1257</svg> 1258 <span>Produits</span> 1259 </button> 1260 <button class="h-10 w-10 text-writing-inverse flex items-center justify-center" 1261 type="button" 1262 x-on:click="visibleNav = false; visibleSubNav = null; visibleSubSubNav = null;"> 1263 <svg class="h-8 w-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1264 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1265 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1266</svg> 1267 </button> 1268 </div> 1269 1270 <div class="p-6 pt-4 flex flex-col items-start gap-4"> 1271 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages" 1272 class="text-2xl hover:no-underline hover:underline">Machines et outillages</a> 1273 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/equipement-pour-charpenterie" 1274 class="hover:underline">Ãquipement pour charpenterie</a> 1275 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/mesure" 1276 class="hover:underline">Mesure</a> 1277 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/gabarits" 1278 class="hover:underline">Gabarits</a> 1279 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/protection-du-chantier" 1280 class="hover:underline">Protection du chantier</a> 1281 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/transport-et-levage" 1282 class="hover:underline">Transport et levage</a> 1283 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/reparations-bois" 1284 class="hover:underline">Réparations bois</a> 1285 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/meches-et-fraises" 1286 class="hover:underline">Mèches et fraises</a> 1287 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/cloueurs-et-agrafeuses" 1288 class="hover:underline">Cloueurs et agrafeuses</a> 1289 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/machines" 1290 class="hover:underline">Machines</a> 1291 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/presentoirs-pedagogiques" 1292 class="hover:underline">Présentoirs pédagogiques</a> 1293 </div> 1294 </div> 1295 </div> 1296 </div> 1297 </div> 1298 <div> 1299 <a href="https://www.rothoblaas.fr/catalogues-rothoblaas" 1300 class="text-2xl hover:underline"> Catalogues</a> 1301 </div> 1302 <div> 1303 <button type="button" class="text-2xl hover:underline" 1304 x-on:click="visibleSubNav = 'd64b5fec-f3c2-4a7b-9e74-1efc83d71587'">Ressources</button> 1305 <div class="translate-x-[0vw] h-dvh w-full bg-base-strong absolute top-0 left-0 z-10" 1306 x-show="visibleSubNav === 'd64b5fec-f3c2-4a7b-9e74-1efc83d71587'" 1307 x-transition:enter="transition-transform ease-
1307out duration-300" 1308 x-transition:enter-start="translate-x-[100vw]" 1309 x-transition:enter-end="translate-x-[0vw]" 1310 x-transition:leave="transition-transform ease-in duration-200" 1311 x-transition:leave-start="translate-x-[0vw]" 1312 x-transition:leave-end="translate-x-[100vw]" 1313 > 1314 <div class="p-6 flex justify-end items-center"> 1315 <button class="flex-1 flex gap-2 items-center" type="button" 1316 x-on:click="visibleSubNav = null; visibleSubSubNav = null"> 1317 <svg class="w-6 h-6 rotate-180" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1318 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1319 stroke-linecap="round" stroke-linejoin="round"/> 1320</svg> 1321 <span>Retour</span> 1322 </button> 1323 <button class="h-10 w-10 text-writing-inverse flex items-center justify-center" 1324 type="button" 1325 x-on:click="visibleNav = false; visibleSubNav = null; visibleSubSubNav = null;"> 1326 <svg class="h-8 w-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1327 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1328 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1329</svg> 1330 </button> 1331 </div> 1332 1333 1334 <div class="p-6 pt-4 flex flex-col items-stretch gap-4"> 1335 1336 <a href="" 1337 class="text-2xl hover:no-underline">Ressources</a> 1338 <a href="https://www.rothoblaas.fr/recherches-et-approfondissements-techniques" 1339 class="hover:underline">Recherches et approfondissements techniques</a> 1340 <a href="https://www.rothoblaas.fr/logiciels" 1341 class="hover:underline">MyProject</a> 1342 <a href="https://www.rothoblaas.fr/feuilles-de-calcul" 1343 class="hover:underline">Feuilles de calcul</a> 1344 <a href="https://www.rothoblaas.fr/bimcad" 1345 class="hover:underline">Bibliothèques</a> 1346 <a href="https://www.rothoblaas.fr/support-technique" 1347 class="hover:underline">Conseil</a> 1348 </div> 1349 </div> 1350 </div> 1351 <div> 1352 <a href="https://www.rothoblaas.fr/rothoschool" 1353 class="text-2xl hover:underline"> Rothoschool</a> 1354 </div> 1355 <div> 1356 <button type="button" class="text-2xl hover:underline" 1357 x-on:click="visibleSubNav = '5e9e55da-d31c-4087-abf3-a22eddbe979e'">Contact</button> 1358 <div class="translate-x-[0vw] h-dvh w-full bg-base-strong absolute top-0 left-0 z-10" 1359 x-show="visibleSubNav === '5e9e55da-d31c-4087-abf3-a22eddbe979e'" 1360 x-transition:enter="transition-transform ease-
1360out duration-300" 1361 x-transition:enter-start="translate-x-[100vw]" 1362 x-transition:enter-end="translate-x-[0vw]" 1363 x-transition:leave="transition-transform ease-in duration-200" 1364 x-transition:leave-start="translate-x-[0vw]" 1365 x-transition:leave-end="translate-x-[100vw]" 1366 > 1367 <div class="p-6 flex justify-end items-center"> 1368 <button class="flex-1 flex gap-2 items-center" type="button" 1369 x-on:click="visibleSubNav = null; visibleSubSubNav = null"> 1370 <svg class="w-6 h-6 rotate-180" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1371 <path d="M9.75 7.50226L15 12L9.75 16.5023" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1372 stroke-linecap="round" stroke-linejoin="round"/> 1373</svg> 1374 <span>Retour</span> 1375 </button> 1376 <button class="h-10 w-10 text-writing-inverse flex items-center justify-center" 1377 type="button" 1378 x-on:click="visibleNav = false; visibleSubNav = null; visibleSubSubNav = null;"> 1379 <svg class="h-8 w-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1380 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1381 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1382</svg> 1383 </button> 1384 </div> 1385 1386 1387 <div class="p-6 pt-4 flex flex-col items-stretch gap-4"> 1388 1389 <a href="" 1390 class="text-2xl hover:no-underline">Contact</a> 1391 <a href="https://www.rothoblaas.fr/contacts" 1392 class="underline">Contactez un technico-commercial</a> 1393 <a href="https://www.rothoblaas.fr/nos-sites" 1394 class="hover:underline">Nos sites</a> 1395 </div> 1396 </div> 1397 </div> 1398 </div> 1399 <div class="bg-writing-inverse h-px m-6"></div> 1400 <ul class="p-6 flex flex-col items-start gap-4"> 1401 <li> 1402 <button type="button" x-on:click="visibleBrands = true">Nos marques</button> 1403 </li> 1404 <li> 1405 <a href="https://www.rothoblaas.fr/blog" 1406 class="hover:underline">Blog</a> 1407 </li> 1408 <li> 1409 <a href="https://www.rothoblaas.fr/company-rothoblaas" 1410 class="hover:underline">Société</a> 1411 </li> 1412 <li> 1413 <a href="https://www.rothoblaas.fr/evenements" 1414 class="hover:underline">Ãvènements</a> 1415 </li> 1416 <li> 1417 <a href="https://www.rothoblaas.fr/carrieres-rothoblaas" 1418 class="hover:underline">Carrières</a> 1419 </li> 1420 <li> 1421 <button type="button" x-on:click="visibleLangSelector = true;" 1422 class="flex items-center hover:underline">
1423 <span>FR</span> 1424 <svg class="h-6 w-6 -mt-2 -mb-1 -mr-2" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1425 <path d="M12 16L8.5359 10L15.4641 10L12 16Z" fill="currentColor"/> 1426</svg> 1427 </button> 1428 </li> 1429 </ul> 1430 </div> 1431 </div> 1432 <div class="bg-base-surface hidden lg:block"> 1433 <div class="flex justify-between mx-auto max-w-[1600px] px-8"> 1434 <a href="mailto:[email protected]" 1435 class="text-white flex items-center text-sm gap-4 hover:underline flex-1"> 1436 <svg style="height:36px;" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" viewBox="0 0 1235 650"> 1437 <defs> 1438 <g id="b"> 1439 <use xlink:href="#a" transform="rotate(-144)"/> 1440 <use xlink:href="#a" transform="rotate(-72)"/> 1441 <use xlink:href="#a"/> 1442 <use xlink:href="#a" transform="rotate(72)"/> 1443 <use xlink:href="#a" transform="rotate(144)"/> 1444 </g> 1445 <g id="c"> 1446 <use xlink:href="#b" x="-.252"/> 1447 <use xlink:href="#b" x="-.126"/> 1448 <use xlink:href="#b"/> 1449 <use xlink:href="#b" x=".126"/> 1450 <use xlink:href="#b" x=".252"/> 1451 </g> 1452 <g id="d"> 1453 <use xlink:href="#c" x="-.063"/> 1454 <use xlink:href="#b" x=".315"/> 1455 </g> 1456 <g id="e"> 1457 <use xlink:href="#d"/> 1458 <use xlink:href="#c" y=".054"/> 1459 <use xlink:href="#d" y=".108"/> 1460 <use xlink:href="#c" y=".162"/> 1461 </g> 1462 <g id="g"> 1463 <use xlink:href="#e" y="-.216"/> 1464 <use xlink:href="#e"/> 1465 <use xlink:href="#d" y=".216"/> 1466 </g> 1467 <path id="a" fill="#fff" d="M-.162 0 0-.5l.162.5z" transform="scale(.0616)"/> 1468 <path id="f" fill="#b22234" d="M0 0h1235v50H0z"/> 1469 </defs> 1470 <path fill="#fff" d="M0 0h1235v650H0z"/> 1471 <use xlink:href="#f"/> 1472 <use xlink:href="#f" y="100"/> 1473 <use xlink:href="#f" y="200"/> 1474 <use xlink:href="#f" y="300"/> 1475 <use xlink:href="#f" y="400"/> 1476 <use xlink:href="#f" y="500"/> 1477 <use xlink:href="#f" y="600"/> 1478 <path fill="#3c3b6e" d="M0 0h494v350H0z"/> 1479 <use xlink:href="#g" transform="matrix(650 0 0 650 247 175)"/> 1480</svg> 1481 <span>Fast delivery from US Warehouse - Get in Touch</span> 1482 </a> 1483 <ul class=" text-sm leading-5 text-writing-inverse relative top-[1px] flex justify-end items-center py-2 gap-6"> 1484 <li> 1485 <button type="button" x-on:click="visibleBrands = true">Nos marques</button> 1486 </li> 1487 1488 <li> 1489 <a href="https://www.rothoblaas.fr/blog" 1490 class="hover:underline">Blog</a> 1491 </li> 1492 <li> 1493 <a href="https://www.rothoblaas.fr/company-rothoblaas" 1494 class="hover:underline">Société</a> 1495 </li> 1496 <li> 1497 <a href="https://www.rothoblaas.fr/evenements" 1498 class="hover:underline">Ãvènements</a> 1499 </li> 1500 <li> 1501 <a href="https://www.rothoblaas.fr/carrieres-rothoblaas" 1502 class="hover:underline">Carrières</a> 1503 </li> 1504 <li>|</li> 1505 <li> 1506 <button type="button" x-on:click="visibleLangSelector = true;" 1507 class="flex items-center hover:underline"> 1508 <span>FR</span> 1509 <svg class="h-6 w-6 -mt-2 -mb-1 -mr-2" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1510 <path d="M12 16L8.5359 10L15.4641 10L12 16Z" fill="currentColor"/> 1511</svg> 1512 </button> 1513 </li> 1514 </ul> 1515 </div> 1516 </div> 1517 <div class="bg-base-strong relative hidden lg:block" x-data="{submenu: null}"> 1518 <nav class="mx-auto max-w-[1600px] py-2 px-8 gap-8 flex grid grid-cols-12 items-center"> 1519 <a href="https://www.rothoblaas.fr" class="py-3 col-span-2"> 1520 <img src="/assets/images/rothoblaas-logo.svg" alt="Rothoblaas Logo" class="h-8"> 1521 </a> 1522 <ul class="col-span-8 flex justify-center gap-6 2xl:gap-12 text-writing-inverse " 1523 x-on:click.outside="submenu = null"> 1524 <li> 1525 <button type="button" 1526 x-on:click="submenu = submenu === null ? '0f858c50-e519-4519-96b6-58b9beb17fbc' : null" 1527 class="2xl:text-lg font-semibold hover:underline">En vedette 1528 </button> 1529 <div class="bg-base-strong w-full top-full absolute left-0 z-10" 1530 x-show="submenu == '0f858c50-e519-4519-96b6-58b9beb17fbc'" x-cloak> 1531 <div class="mx-auto max-w-[1600px] flex justify-center gap-8 xl:gap-12 pt-4 pb-8 xl:pb-10 px-8"> 1532 <div class="flex flex-col gap-6 text-sm leading-5"> 1533 <a href="https://www.rothoblaas.fr/produits/nouveaux-produits" 1534 class="hover:underline"> 1535 Nouveaux produits 1536 </a> 1537 </div> 1538 <div class="flex flex-col gap-6 text-sm leading-5"> 1539 <a href="https://www.rothoblaas.fr/smartbook-chantier-eau-et-durabilite" 1540 class="hover:underline"> 1541 CHANTIER, EAU ET DURABILITà 1542 </a> 1543 </div> 1544 <div class="flex flex-col gap-6 text-sm leading-5"> 1545 <a href="https://www.rothoblaas.fr/planchers-nervures-sans-collage" 1546 class="hover:underline"> 1547 SHARP METAL 1548 </a> 1549 </div> 1550 <div class="flex flex-col gap-6 text-sm leading-5"> 1551 <a href="https://www.rothoblaas.fr/vgs-plate-la-premiere-vis-de-levage-avec-reutilisation-verifiable" 1552 class="hover:underline"> 1553 VGS PLATE 1554 </a> 1555 </div> 1556 <div class="flex flex-col gap-6 text-sm leading-5"> 1557 <a href="https://www.rothoblaas.fr/produits/feu" 1558 class="hover:underline"> 1559 Feu 1560 </a> 1561 </div> 1562 <div class="flex flex-col gap-6 text-sm leading-5"> 1563 <a href="https://www.rothoblaas.fr/sujets" 1564 class="hover:underline"> 1565 Thématiques du bâtiment 1566 </a> 1567 </div> 1568 <div class="flex flex-col gap-6 text-sm leading-5"> 1569 <a href="https://www.rothoblaas.fr/produits/fan-collection" 1570 class="hover:underline"> 1571 Fan collection 1572 </a> 1573 </div> 1574 </div> 1575 </div> 1576 </li> 1577 <li> 1578 <button type="button" 1579 x-on:click="submenu = submenu === null ? '9967dd65-227f-4909-9864-2e4e2ad00071' : null" 1580 class="2xl:text-lg font-semibold hover:underline">Produits 1581 </button> 1582 <div class="bg-base-strong w-full top-full absolute left-0 z-10" 1583 x-show="submenu == '9967dd65-227f-4909-9864-2e4e2ad00071'" x-cloak> 1584 <div class="mx-auto max-w-[1600px] flex justify-center gap-8 xl:gap-12 pt-4 pb-8 xl:pb-10 px-8"> 1585 <div class="flex flex-col gap-6 text-sm leading-5"> 1586 <a href="https://www.rothoblaas.fr/produits/fixation" 1587 class="hover:underline"> 1588 Fixation 1589 </a> 1590 <ul class="text-writing-soft m-0 flex flex-col gap-4"> 1591 <li> 1592 <a href="https://www.rothoblaas.fr/produits/fixation/vis" 1593 class="hover:underline"> 1594 Vis 1595 </a> 1596 </li> 1597 <li> 1598 <a href="https://www.rothoblaas.fr/produits/fixation/equerres-et-plaques" 1599 class="hover:underline"> 1600 Ãquerres et plaques 1601 </a> 1602 </li> 1603 <li> 1604 <a href="https://www.rothoblaas.fr/produits/fixation/connecteurs-p
1604our-poteaux-et-plancher-clt" 1605 class="hover:underline"> 1606 Connecteurs pour poteaux et plancher CLT 1607 </a> 1608 </li> 1609 <li> 1610 <a href="https://www.rothoblaas.fr/produits/fixation/adhesif-epoxy-xepox" 1611 class="hover:underline"> 1612 Adhésif époxy XEPOX 1613 </a> 1614 </li> 1615 <li> 1616 <a href="https://www.rothoblaas.fr/produits/fixation/terrasses-et-facades" 1617 class="hover:underline"> 1618 Terrasses et façades 1619 </a> 1620 </li> 1621 <li> 1622 <a href="https://www.rothoblaas.fr/produits/fixation/ancrages-pour-beton" 1623 class="hover:underline"> 1624 Ancrages pour béton 1625 </a> 1626 </li> 1627 </ul> 1628 </div> 1629 <div class="flex flex-col gap-6 text-sm leading-5"> 1630 <a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation" 1631 class="hover:underline"> 1632 Ãtanchéité à L'AIR ET imperméabilisation 1633 </a> 1634 <ul class="text-writing-soft m-0 flex flex-col gap-4"> 1635 <li> 1636 <a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/rubans-adhesifs-et-produits-detancheite" 1637 class="hover:underline"> 1638 Rubans adhésifs et produits d'étanchéité 1639 </a> 1640 </li> 1641 <li> 1642 <a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/membranes-auto-adhesives" 1643 class="hover:underline"> 1644 Membranes auto-adhésives 1645 </a> 1646 </li> 1647 <li> 1648 <a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/membranes" 1649 class="hover:underline"> 1650 Membranes 1651 </a> 1652 </li> 1653 <li> 1654 <a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/traversees-de-systemes" 1655 class="hover:underline"> 1656 Traversées de systèmes 1657 </a> 1658 </li> 1659 <li> 1660 <a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/elements-pour-toiture-et-ventilation" 1661 class="hover:underline"> 1662 Ãléments pour toiture et ventilation 1663 </a> 1664 </li> 1665 </ul> 1666 </div> 1667 <div class="flex flex-col gap-6 text-sm leading-5"> 1668 <a href="https://www.rothoblaas.fr/produits/acoustique" 1669 class="hover:underline"> 1670 Acoustique 1671 </a> 1672 <ul class="text-writing-soft m-0 flex flex-col gap-4"> 1673 <li> 1674 <a href="https://www.rothoblaas.fr/produits/acoustique/profils-resilients" 1675 class="hover:underline"> 1676 Profils résilients 1677 </a> 1678 </li> 1679 <li> 1680 <a href="https://www.rothoblaas.fr/produits/acoustique/feuilles-isolantes" 1681 class="hover:underline"> 1682 Feuilles isolantes 1683 </a> 1684 </li> 1685 <li> 1686 <a href="https://www.rothoblaas.fr/produits/acoustique/produits-de-scellement" 1687 class="hover:underline"> 1688 Produits de scellement 1689 </a> 1690 </li> 1691 </ul> 1692 </div> 1693 <div class="flex flex-col gap-6 text-sm leading-5"> 1694 <a href="https://www.rothoblaas.fr/produits/systemes-antichute" 1695 class="hover:underline"> 1696 Systèmes antichute 1697 </a> 1698 <ul class="text-writing-soft m-0 flex flex-col gap-4"> 1699 <li> 1700 <a href="https://www.rothoblaas.fr/produits/systemes-antichute/lignes-de-vie" 1701 class="hover:underline"> 1702 Lignes de vie 1703 </a> 1704 </li> 1705 <li> 1706 <a href="https://www.rothoblaas.fr/produits/systemes-antichute/points-dancrage" 1707 class="hover:underline"> 1708 Points d'ancrage 1709 </a> 1710 </li> 1711 <li> 1712 <a href="https://www.rothoblaas.fr/produits/systemes-antichute/protection-collective-et-acces" 1713 class="hover:underline"> 1714 Protection collective et accès 1715 </a> 1716 </li> 1717 <li> 1718 <a href="https://www.rothoblaas.fr/produits/systemes-antichute/equipements-de-protection-individuelle" 1719 class="hover:underline"> 1720 Ãquipements de protection individuelle 1721 </a> 1722 </li> 1723 <li> 1724 <a href="https://www.rothoblaas.fr/produits/systemes-antichute/produits-complementaires" 1725 class="hover:underline"> 1726 Produits complémentaires 1727 </a> 1728 </li> 1729 </ul> 1730 </div> 1731 <div class="flex flex-col gap-6 text-sm leading-5"> 1732 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages" 1733 class="hover:underline"> 1734 Machines et outillages 1735 </a> 1736 <ul class="text-writing-soft m-0 flex flex-col gap-4"> 1737 <li> 1738 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/equipement-pour-charpenterie" 1739 class="hover:underline"> 1740 Ãquipement pour charpenterie 1741 </a> 1742 </li> 1743 <li> 1744 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/mesure" 1745 class="hover:underline"> 1746 Mesure 1747 </a> 1748 </li> 1749 <li> 1750 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/gabarits" 1751 class="hover:underline"> 1752 Gabarits 1753 </a> 1754 </li> 1755 <li> 1756 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/protection-du-chantier" 1757 class="hover:underline"> 1758 Protection du chantier 1759 </a> 1760 </li> 1761 <li> 1762 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/transport-et-levage" 1763 class="hover:underline"> 1764 Transport et levage 1765 </a> 1766 </li> 1767 <li> 1768 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/reparations-bois" 1769 class="hover:underline"> 1770 Réparations bois 1771 </a> 1772
1772 </li> 1773 <li> 1774 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/meches-et-fraises" 1775 class="hover:underline"> 1776 Mèches et fraises 1777 </a> 1778 </li> 1779 <li> 1780 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/cloueurs-et-agrafeuses" 1781 class="hover:underline"> 1782 Cloueurs et agrafeuses 1783 </a> 1784 </li> 1785 <li> 1786 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/machines" 1787 class="hover:underline"> 1788 Machines 1789 </a> 1790 </li> 1791 <li> 1792 <a href="https://www.rothoblaas.fr/produits/machines-et-outillages/presentoirs-pedagogiques" 1793 class="hover:underline"> 1794 Présentoirs pédagogiques 1795 </a> 1796 </li> 1797 </ul> 1798 </div> 1799 </div> 1800 </div> 1801 </li> 1802 <li> 1803 <a href="https://www.rothoblaas.fr/catalogues-rothoblaas" 1804 class="hover:no-underline hover:underline"> 1805 <span class="2xl:text-lg font-semibold">Catalogues</span> 1806 </a> 1807 </li> 1808 <li> 1809 <button type="button" 1810 x-on:click="submenu = submenu === null ? 'd64b5fec-f3c2-4a7b-9e74-1efc83d71587' : null" 1811 class="2xl:text-lg font-semibold hover:underline">Ressources 1812 </button> 1813 <div class="bg-base-strong w-full top-full absolute left-0 z-10" 1814 x-show="submenu == 'd64b5fec-f3c2-4a7b-9e74-1efc83d71587'" x-cloak> 1815 <div class="mx-auto max-w-[1600px] flex justify-center gap-8 xl:gap-12 pt-4 pb-8 xl:pb-10 px-8"> 1816 <div class="flex flex-col gap-6 text-sm leading-5"> 1817 <a href="https://www.rothoblaas.fr/recherches-et-approfondissements-techniques" 1818 class="hover:underline"> 1819 Recherches et approfondissements techniques 1820 </a> 1821 </div> 1822 <div class="flex flex-col gap-6 text-sm leading-5"> 1823 <a href="https://www.rothoblaas.fr/logiciels" 1824 class="hover:underline"> 1825 MyProject 1826 </a> 1827 </div> 1828 <div class="flex flex-col gap-6 text-sm leading-5"> 1829 <a href="https://www.rothoblaas.fr/feuilles-de-calcul" 1830 class="hover:underline"> 1831 Feuilles de calcul 1832 </a> 1833 </div> 1834 <div class="flex flex-col gap-6 text-sm leading-5"> 1835 <a href="https://www.rothoblaas.fr/bimcad" 1836 class="hover:underline"> 1837 Bibliothèques 1838 </a> 1839 </div> 1840 <div class="flex flex-col gap-6 text-sm leading-5"> 1841 <a href="https://www.rothoblaas.fr/support-technique" 1842 class="hover:underline"> 1843 Conseil 1844 </a> 1845 </div> 1846 </div> 1847 </div> 1848 </li> 1849 <li> 1850 <a href="https://www.rothoblaas.fr/rothoschool" 1851 class="hover:no-underline hover:underline">
1852 <span class="2xl:text-lg font-semibold">Rothoschool</span> 1853 </a> 1854 </li> 1855 <li> 1856 <button type="button" 1857 x-on:click="submenu = submenu === null ? '5e9e55da-d31c-4087-abf3-a22eddbe979e' : null" 1858 class="2xl:text-lg font-semibold hover:underline">Contact 1859 </button> 1860 <div class="bg-base-strong w-full top-full absolute left-0 z-10" 1861 x-show="submenu == '5e9e55da-d31c-4087-abf3-a22eddbe979e'" x-cloak> 1862 <div class="mx-auto max-w-[1600px] flex justify-center gap-8 xl:gap-12 pt-4 pb-8 xl:pb-10 px-8"> 1863 <div class="flex flex-col gap-6 text-sm leading-5"> 1864 <a href="https://www.rothoblaas.fr/contacts" 1865 class="underline"> 1866 Contactez un technico-commercial 1867 </a> 1868 </div> 1869 <div class="flex flex-col gap-6 text-sm leading-5"> 1870 <a href="https://www.rothoblaas.fr/nos-sites" 1871 class="hover:underline"> 1872 Nos sites 1873 </a> 1874 </div> 1875 </div> 1876 </div> 1877 </li> 1878 </ul> 1879 <div class="col-span-2 flex justify-end items-center gap-4"> 1880 <form action="https://www.rothoblaas.fr/search" method="GET"> 1881 <div class="relative text-writing-soft"> 1882 <div class="w-10 h-10 absolute left-0 top-0 flex flex-col items-center justify-center"> 1883 <svg class="h-5 w-5" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1884 <path d="M10.3923 16.4583C13.7414 16.4583 16.4564 13.7433 16.4564 10.3941C16.4564 7.045 13.7414 4.32999 10.3923 4.32999C7.04314 4.32999 4.32812 7.045 4.32812 10.3941C4.32812 13.7433 7.04314 16.4583 10.3923 16.4583Z" 1885 stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10"/> 1886 <path d="M19.6703 19.67L14.75 14.7498" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" 1887 stroke-linecap="round"/> 1888</svg> 1889 </div> 1890 <label for="fgewiuyhgrwi" class="sr-only">Chercher</label> 1891 <input type="text" 1892 id="fgewiuyhgrwi" 1893 autocomplete="off" 1894 autocapitalize="off" 1895 autocorrect="off" 1896 spellcheck="false" 1897 name="q" 1898 class="w-35 xl:w-50 bg-base-surface text-writing-inverse border-none py-2 pl-10 rounded-xs text-md focus:ring-0 focus:inset-ring focus:outline-none focus:inset-ring-writing-soft placeholder-writing-soft" 1899 placeholder="Chercher..."> 1900 </div> 1901 <button type="submit" class="sr-only">Chercher</button> 1902 </form> 1903 <a href="https://www.rothoblaas.fr/auth/redirect" rel="nofollow" class="text-writing-inverse"> 1904 <svg class="h-12 w-12" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1905 <path d="M12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19Z" 1906 fill="white" stroke="#707E85" stroke-width="0.75" stroke-miterlimit="10"/> 1907 <path d="M12 19C15.866 19 19 15.866 19 12C19 8.13401 15.866 5 12 5C8.13401 5 5 8.13401 5 12C5 15.866 8.13401 19 12 19Z" 1908 fill="white" stroke="#707E85" stroke-width="0.75" stroke-miterlimit="10"/> 1909 <path d="M12 12C13.1046 12 14 11.1046 14 10C14 8.89543 13.1046 8 12 8C10.8954 8 10 8.89543 10 10C10 11.1046 10.8954 12 12 12Z" 1910 fill="#707E85" stroke="#707E85" stroke-width="0.75" stroke-miterlimit="10"/> 1911 <path d="M8 17.2964C8 17.4115 8.00617 17.5267 8.0185 17.6418C11.138 19.4072 12.5189 19.4464 15.9661 17.7899C15.9877 17.6287 16 17.4642 16 17.2964C16 15.4837 14.6091 14 12.9098 14H11.0902C9.3909 14 8 15.4837 8 17.2964Z" 1912 fill="#707E85" stroke="#707E85" stroke-width="0.75" stroke-miterlimit="10"/> 1913</svg>
1914 <span class="sr-only">Login / Register</span> 1915 </a> 1916 </div> 1917 </nav> 1918 </div> 1919 1920 <div x-on:click.outside="visibleLangSelector = false" 1921 x-show="visibleLangSelector" 1922 x-cloak 1923 class="fixed z-10 translate-x-[20vw] w-8/10 lg:translate-x-[70vw] lg:w-3/10 h-dvh top-0 bg-base-strong text-writing-inverse overflow-hidden flex flex-col" 1924 x-transition:enter="transition-transform ease-out duration-300" 1925 x-transition:enter-start="translate-x-[100vw] lg:translate-x-[100vw]" 1926 x-transition:enter-end="translate-x-[20vw] lg:translate-x-[70vw]" 1927 x-transition:leave="transition-transform ease-in duration-200" 1928 x-transition:leave-start="translate-x-[20vw] lg:translate-x-[70vw]" 1929 x-transition:leave-end="translate-x-[100vw] lg:translate-x-[100vw]" 1930 > 1931 <div class="p-6 flex justify-end items-center"> 1932 <div class="flex-1 flex gap-2 items-center"> 1933 <span>Choisir une langue</span> 1934 </div> 1935 <button class="h-10 w-10 text-writing-inverse flex items-center justify-center" 1936 type="button" 1937 x-on:click="visibleLangSelector = false"> 1938 <svg class="h-8 w-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 1939 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1940 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 1941</svg> 1942 </button> 1943 </div> 1944 <ul class="text-writing-inverse p-6 flex flex-col gap-6 min-w-75 relative"> 1945 <li> 1946 <a class="hover:underline" 1947 href="https://www.rothoblaas.it/contatti">Italiano</a> 1948 </li> 1949 <li> 1950 <a class="hover:underline" 1951 href="https://www.rothoblaas.com/contacts">English</a> 1952 </li> 1953 <li> 1954 <a class="hover:underline" 1955 href="https://www.rothoblaas.de/kontakten">Deutsch</a> 1956 </li> 1957 <li> 1958 <a class="hover:underline" 1959 href="https://www.rothoblaas.fr/contacts">Français</a> 1960 </li> 1961 <li> 1962 <a class="hover:underline" 1963 href="https://www.rothoblaas.es/contactos">Español</a> 1964 </li> 1965 <li> 1966 <a class="hover:underline" 1967 href="https://www.rothoblaas.pt/contacte-nos">Português</a> 1968 </li> 1969 <li> 1970 <a class="hover:underline" 1971 href="https://www.rothoblaas.cn/contacts">䏿</a> 1972 </li> 1973 <li> 1974 <a class="hover:underline" 1975 href="https://www.rothoblaas.ru.com/contacts">РУС</a> 1976 </li> 1977 <li> 1978 <a class="hover:underline" 1979 href="https://www.rothoblaas.pl/contacts">Polski</a> 1980 </li> 1981 </ul> 1982 </div> 1983 1984 <div x-on:click.outside="visibleBrands = false" 1985 x-show="visibleBrands" 1986 x-cloak 1987 class="fixed z-10 translate-x-[20vw] w-8/10 lg:translate-x-[70vw] lg:w-3/10 h-dvh top-0 bg-primary-dark text-writing-inverse overflow-hidden flex flex-col"
1988 x-transition:enter="transition-transform ease-out duration-300" 1989 x-transition:enter-start="translate-x-[100vw] lg:translate-x-[100vw]" 1990 x-transition:enter-end="translate-x-[20vw] lg:translate-x-[70vw]" 1991 x-transition:leave="transition-transform ease-in duration-200" 1992 x-transition:leave-start="translate-x-[20vw] lg:translate-x-[70vw]" 1993 x-transition:leave-end="translate-x-[100vw] lg:translate-x-[100vw]" 1994 > 1995 <div class="p-6 flex justify-end items-center"> 1996 <div class="flex-1 flex gap-2 items-center"> 1997 <span>Nos marques</span> 1998 </div> 1999 <button class="h-10 w-10 text-writing-inverse flex items-center justify-center" 2000 type="button" 2001 x-on:click="visibleBrands = false"> 2002 <svg class="h-8 w-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 2003 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 2004 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 2005</svg> 2006 </button> 2007 </div> 2008 <div class="p-6 pt-4 flex flex-col items-start gap-12"> 2009 <a href="/" class="px-10 mx-auto block max-w-2xs"> 2010 <img src="/assets/images/our-brands-rotho.png" alt="Rothoblaas Logo"> 2011 </a> 2012 <div class="w-full h-px bg-white"></div> 2013 <a href="https://www.rothoblaas.fr/safe" class="px-10 mx-auto block max-w-2xs"> 2014 <img src="/assets/images/our-brands-safety.png" alt="Rothoblaas Safety Logo"> 2015 </a> 2016 <div class="w-full h-px bg-white"></div> 2017 <a href="https://www.holztechnic.com" target="_blank" class="px-10 mx-auto block max-w-2xs"> 2018 <img src="/assets/images/our-brands-ht.png" alt="Holz Technic Logo"> 2019 </a> 2020 </div> 2021 </div> 2022 2023 2024</header> 2025 2026 2027 2028 <main class="isolate"> 2029 2030 <div> 2031 <div data-component="agent-finder" data-uuid="b7bbc281-1b86-46a2-8db7-d347d781dbaa"> 2032 <div class="flex-1 max-w-[1600px] mx-auto py-20 xl:py-28 px-4 lg:px-8 space-y-6"> 2033 <div class="flex flex-col md:flex-row gap-6 max-w-5xl"> 2034 <h1 class="flex-1 font-display font-medium m-0 md:max-w-3/4 h-fit text-4xl md:text-5xl border-l-6 border-primary-default pl-4 lg:pl-6"> 2035 Contact</h1> 2036 2037 <div class="[&>p]:mb-0 text-lg font-light flex-1 max-w-xl"> 2038 <div class="prose"> 2039 <p>Veuillez saisir les informations requises et trouvez le technico-commercial Rothoblaas le plus proche de chez vous.<br><br>Les données fournies seront utilisées exclusivement pour mener à bien la recherche.<br><br>Si vous recherchez nos filiales, vous pouvez les trouver <a href="https://www.rothoblaas.fr/nos-sites" target="_blank" rel="noopener noreferrer nofollow">ici</a>.</p> 2040 </div> 2041 </div> 2042 </div> 2043 2044 </div> 2045 2046 <div class="max-w-[1600px] mx-auto pb-20 xl:pb-28 px-4 lg:px-8 space-y-6"> 2047 2048 2049 <form @submit.prevent="() => null" class="flex flex-col gap-2" x-data="agentFinder()" x-init="init()"> 2050 <div class="px-1 relative grid md:grid-cols-2 lg:grid-cols-4 gap-4"> 2051 <div 2052 class="relative" x-data="searchSelect({ 2053 uid: 'country', 2054 options: () => countries, 2055 selected: () => currentCountry, 2056 placeholder: '' 2057 })" x-model="currentCountry" @changed="currentCountry = $event.detail.value; onCountryChange()" 2058 x-data="searchSelect({ 2059 // ... existing code ... 2060 })" 2061 x-effect="refreshFromSources()" 2062 x-modelable="selectedValue" 2063 x-on:keydown.escape.stop.prevent="close()" 2064 x-on:click.outside="close()" 2065> 2066 2067 2068 2069 <div class="mb-1"> 2070 <label class="font-medium">Pays</label> 2071 </div> 2072 2073 2074 <button 2075 type="button" 2076 class="w-full relative rounded-sm py-3.5 pl-3 pr-10 text-left bg-base-light hover:bg-base-weak 2077 border border-stroke-sub 2078 focus:outline-none focus-visible:outline-none 2079 focus-visible:border-stroke-strong focus-visible:ring-2 focus-visible:ring-neutral-100 ring-offset-2":class="disabled ? 'opacity-60 cursor-not-allowed disabled:text-writing-disabled disabled:bg-base-weak' : 'cursor-pointer'" 2080 x-ref="button" 2081 x-bind:disabled="disabled" 2082 role="combobox" 2083 aria-haspopup="listbox"
2084 :aria-expanded="open.toString()" 2085 :aria-controls="listboxId" 2086 :aria-activedescendant="activeDescendantId" 2087 x-on:click="toggle()" 2088 x-on:keydown.arrow-down.prevent="openAndFocusFirst()" 2089 x-on:keydown.arrow-up.prevent="openAndFocusLast()" 2090 x-on:keydown.enter.prevent="open ? selectActive() : openAndFocusFirst()" 2091 x-on:keydown.space.prevent="open ? selectActive() : openAndFocusFirst()" 2092 > 2093 <span class="block truncate" x-text="selectedLabel ?? placeholder"></span> 2094 <svg class="pointer-events-none absolute right-3 top-1/2 h-4 w-4 -translate-y-1/2 text-writing-sub" 2095 viewBox="0 0 20 20" fill="none" aria-hidden="true"> 2096 <path d="M5.5 7.5l4.5 4.5 4.5-4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" 2097 stroke-linejoin="round"/> 2098 </svg> 2099 </button> 2100 2101 2102 2103 2104 <div 2105 class="absolute z-50 mt-1 w-full rounded-sm border border-stroke-sub bg-base-light shadow" 2106 x-show="open" 2107 x-transition.origin.top 2108 x-cloak 2109 > 2110 <div class="p-2"> 2111 <label :for="searchInputId" class="sr-only">Search</label> 2112 <input 2113 type="text" 2114 class="w-full rounded-sm py-3.5 pl-3 pr-10 bg-base-light hover:bg-base-weak focus:border-stroke-strong focus:ring-2 focus:ring-neutral-100 ring-offset-2 border border-stroke-sub" 2115 x-ref="search" 2116 :id="searchInputId" 2117 :placeholder="placeholder" 2118 autocomplete="off" 2119 role="searchbox" 2120 aria-autocomplete="list" 2121 :aria-controls="listboxId" 2122 x-model="query" 2123 x-on:keydown.arrow-down.prevent="focusNext()" 2124 x-on:keydown.arrow-up.prevent="focusPrev()" 2125 x-on:keydown.enter.prevent="selectActive()" 2126 x-on:keydown.escape.stop.prevent="close(); $nextTick(() => $refs.button?.focus())" 2127 x-on:blur="close()" 2128 > 2129 </div> 2130 2131 <ul 2132 class="max-h-60 overflow-auto py-1" 2133 :id="listboxId" 2134 role="listbox" 2135 :aria-labelledby="buttonId" 2136 > 2137 <template x-if="filteredOptions.length === 0"> 2138 <li class="px-3 py-2 text-sm text-gray-600" role="option" aria-disabled="true"> 2139 No results 2140 </li> 2141 </template> 2142 2143 <template x-for="(opt, idx) in filteredOptions" :key="opt._key"> 2144 <li 2145 class="px-3 py-2 text-sm cursor-pointer" 2146 :id="optionId(idx)" 2147 role="option" 2148 :aria-selected="isSelected(opt).toString()" 2149 :class="{ 2150 'bg-gray-100': idx === activeIndex, 2151 'font-semibold': isSelected(opt), 2152 'opacity-70': opt._disabled === true, 2153 }" 2154 x-on:mousemove="setActiveIndex(idx)" 2155 x-on:mousedown.prevent="selectByIndex(idx)" 2156 > 2157 <span x-text="opt.label"></span> 2158 </li> 2159 </template> 2160 </ul> 2161 </div> 2162</div> 2163 2164
2164<script> 2165 document.addEventListener('alpine:init', () => { 2166 Alpine.data('searchSelect', (cfg) => ({ 2167 uid: cfg.uid, 2168 open: false, 2169 disabled: !!cfg.disabled, 2170 placeholder: cfg.placeholder ?? 'Selectâ¦', 2171 2172 optionsSource: cfg.options, 2173 selectedSource: cfg.selected, 2174 2175 options: [], 2176 selectedValue: null, 2177 selectedLabel: null, 2178 2179 query: '', 2180 activeIndex: -1, 2181 2182 get buttonId() { 2183 return `${this.uid}_btn`; 2184 }, 2185 get listboxId() { 2186 return `${this.uid}_lb`; 2187 }, 2188 get searchInputId() { 2189 return `${this.uid}_q`; 2190 }, 2191 get activeDescendantId() { 2192 if (!this.open) return null; 2193 if (this.activeIndex < 0) return null; 2194 return this.optionId(this.activeIndex); 2195 }, 2196 2197 init() { 2198 this.setOptions(this.resolveSource(this.optionsSource)); 2199 this.setSelected(this.resolveSource(this.selectedSource)); 2200 2201 this.$nextTick(() => { 2202 if (this.$refs.button) this.$refs.button.id = this.buttonId; 2203 }); 2204 }, 2205 2206 resolveSource(source) { 2207 return (typeof source === 'function') ? source() : source; 2208 }, 2209 2210 refreshFromSources() { 2211 const nextOptions = this.resolveSource(this.optionsSource); 2212 const nextSelected = this.resolveSource(this.selectedSource); 2213 2214 if (Array.isArray(nextOptions)) { 2215 this.setOptions(nextOptions); 2216 } 2217 if (nextSelected !== undefined) { 2218 this.setSelected(nextSelected); 2219 } 2220 }, 2221 2222 setOptions(nextOptions) { 2223 this.options = (Array.isArray(nextOptions) ? nextOptions : []).map((o, i) => { 2224 const value = (o && typeof o === 'object') ? o.value : o; 2225 const label = (o && typeof o === 'object') ? o.label : String(o ?? ''); 2226 return { 2227 value, 2228 label, 2229 _key: `${i}__${JSON.stringify(value)}`, 2230 _disabled: !!(o && typeof o === 'object' && o.disabled), 2231 }; 2232 }); 2233 this.syncSelectedLabel(); 2234 }, 2235 2236 setSelected(value) { 2237 this.selectedValue = value ?? null; 2238 this.syncSelectedLabel(); 2239 }, 2240 2241 get filteredOptions() { 2242 const q = (this.query ?? '').toString().trim().toLowerCase(); 2243 if (!q) return this.options; 2244 2245 return this.options.filter(o => 2246 (o.label ?? '').toString().toLowerCase().includes(q) 2247 || (o.value ?? '').toString().toLowerCase?.().includes?.(q) 2248 ); 2249 }, 2250 2251 toggle() { 2252 if (this.disabled) return; 2253 this.open ? this.close() : this.openAndFocusFirst(); 2254 }, 2255 2256 close() { 2257 this.open = false; 2258 this.query = ''; 2259 this.activeIndex = -1; 2260 }, 2261 2262 openAndFocusFirst() { 2263 if (this.disabled) return; 2264 this.open = true; 2265 this.$nextTick(() => { 2266 this.$refs.search?.focus(); 2267 this.setActiveIndex(this.firstEnabledIndex()); 2268 }); 2269 }, 2270 2271 openAndFocusLast() { 2272 if (this.disabled) return; 2273 this.open = true; 2274 this.$nextTick(() => {
2275 this.$refs.search?.focus(); 2276 this.setActiveIndex(this.lastEnabledIndex()); 2277 }); 2278 }, 2279 2280 firstEnabledIndex() { 2281 const list = this.filteredOptions; 2282 for (let i = 0; i < list.length; i++) if (!list[i]._disabled) return i; 2283 return -1; 2284 }, 2285 2286 lastEnabledIndex() { 2287 const list = this.filteredOptions; 2288 for (let i = list.length - 1; i >= 0; i--) if (!list[i]._disabled) return i; 2289 return -1; 2290 }, 2291 2292 optionId(idx) { 2293 return `${this.uid}_opt_${idx}`; 2294 }, 2295 2296 setActiveIndex(idx) { 2297 if (idx < 0 || idx >= this.filteredOptions.length) return; 2298 if (this.filteredOptions[idx]._disabled) return; 2299 this.activeIndex = idx; 2300 this.scrollActiveIntoView(); 2301 }, 2302 2303 scrollActiveIntoView() { 2304 this.$nextTick(() => { 2305 const id = this.optionId(this.activeIndex); 2306 const el = document.getElementById(id); 2307 el?.scrollIntoView({block: 'nearest'}); 2308 }); 2309 }, 2310 2311 focusNext() { 2312 const list = this.filteredOptions; 2313 if (!list.length) return; 2314 2315 let i = this.activeIndex; 2316 for (let step = 0; step < list.length; step++) { 2317 i = (i + 1) % list.length; 2318 if (!list[i]._disabled) { 2319 this.setActiveIndex(i); 2320 return; 2321 } 2322 } 2323 }, 2324 2325 focusPrev() { 2326 const list = this.filteredOptions; 2327 if (!list.length) return; 2328 2329 let i = this.activeIndex; 2330 for (let step = 0; step < list.length; step++) { 2331 i = (i - 1 + list.length) % list.length; 2332 if (!list[i]._disabled) { 2333 this.setActiveIndex(i); 2334 return; 2335 } 2336 } 2337 }, 2338 2339 selectActive() { 2340 if (this.activeIndex < 0) return; 2341 this.selectByIndex(this.activeIndex); 2342 }, 2343 2344 selectByIndex(idx) { 2345 const opt = this.filteredOptions[idx]; 2346 if (!opt || opt._disabled) return; 2347 2348 this.selectedValue = opt.value; 2349 this.selectedLabel = opt.label; 2350 2351 this.$dispatch('changed', { 2352 value: this.selectedValue, 2353 label: this.selectedLabel, 2354 option: {value: opt.value, label: opt.label}, 2355 }); 2356 2357 this.close(); 2358 this.$nextTick(() => this.$refs.button?.focus()); 2359 }, 2360 2361 isSelected(opt) { 2362 return this.looseEqual(opt.value, this.selectedValue); 2363 }, 2364 2365 looseEqual(a, b) { 2366 if (a === b) return true; 2367 if (a == null || b == null) return false; 2368 return String(a) === String(b); 2369 }, 2370 2371 syncSelectedLabel() { 2372 const found = this.options.find(o => this.looseEqual(o.value, this.selectedValue)); 2373 this.selectedLabel = found ? found.label : null; 2374 }, 2375 })) 2376 }); 2377 </script>
2377 2378 2379 <div x-show="provinces.length > 0"> 2380 <div 2381 class="relative" x-data="searchSelect({ 2382 uid: 'province', 2383 options: () => provinces, 2384 selected: () => currentProvince, 2385 placeholder: 'Choose a Province' 2386 })" x-model="currentProvince" @changed="currentProvince = $event.detail.value; onProvinceChange()" 2387 x-data="searchSelect({ 2388 // ... existing code ... 2389 })" 2390 x-effect="refreshFromSources()" 2391 x-modelable="selectedValue" 2392 x-on:keydown.escape.stop.prevent="close()" 2393 x-on:click.outside="close()" 2394> 2395 2396 2397 2398 <div class="mb-1"> 2399 <label class="font-medium">Département</label> 2400 </div> 2401 2402 2403 <button 2404 type="button" 2405 class="w-full relative rounded-sm py-3.5 pl-3 pr-10 text-left bg-base-light hover:bg-base-weak 2406 border border-stroke-sub 2407 focus:outline-none focus-visible:outline-none 2408 focus-visible:border-stroke-strong focus-visible:ring-2 focus-visible:ring-neutral-100 ring-offset-2":class="disabled ? 'opacity-60 cursor-not-allowed disabled:text-writing-disabled disabled:bg-base-weak' : 'cursor-pointer'" 2409 x-ref="button" 2410 x-bind:disabled="disabled" 2411 role="combobox" 2412 aria-haspopup="listbox" 2413 :aria-expanded="open.toString()" 2414 :aria-controls="listboxId" 2415 :aria-activedescendant="activeDescendantId" 2416 x-on:click="toggle()" 2417 x-on:keydown.arrow-down.prevent="openAndFocusFirst()" 2418 x-on:keydown.arrow-up.prevent="openAndFocusLast()" 2419 x-on:keydown.enter.prevent="open ? selectActive() : openAndFocusFirst()" 2420 x-on:keydown.space.prevent="open ? selectActive() : openAndFocusFirst()" 2421 > 2422 <span class="block truncate" x-text="selectedLabel ?? placeholder"></span> 2423 <svg class="pointer-events-none absolute right-3 top-1/2 h-4 w-4 -translate-y-1/2 text-writing-sub"
2424 viewBox="0 0 20 20" fill="none" aria-hidden="true"> 2425 <path d="M5.5 7.5l4.5 4.5 4.5-4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" 2426 stroke-linejoin="round"/> 2427 </svg> 2428 </button> 2429 2430 2431 2432 2433 <div 2434 class="absolute z-50 mt-1 w-full rounded-sm border border-stroke-sub bg-base-light shadow" 2435 x-show="open" 2436 x-transition.origin.top 2437 x-cloak 2438 > 2439 <div class="p-2"> 2440 <label :for="searchInputId" class="sr-only">Search</label> 2441 <input 2442 type="text" 2443 class="w-full rounded-sm py-3.5 pl-3 pr-10 bg-base-light hover:bg-base-weak focus:border-stroke-strong focus:ring-2 focus:ring-neutral-100 ring-offset-2 border border-stroke-sub" 2444 x-ref="search" 2445 :id="searchInputId" 2446 :placeholder="placeholder" 2447 autocomplete="off" 2448 role="searchbox" 2449 aria-autocomplete="list" 2450 :aria-controls="listboxId" 2451 x-model="query" 2452 x-on:keydown.arrow-down.prevent="focusNext()" 2453 x-on:keydown.arrow-up.prevent="focusPrev()" 2454 x-on:keydown.enter.prevent="selectActive()" 2455 x-on:keydown.escape.stop.prevent="close(); $nextTick(() => $refs.button?.focus())" 2456 x-on:blur="close()" 2457 > 2458 </div> 2459 2460 <ul 2461 class="max-h-60 overflow-auto py-1" 2462 :id="listboxId" 2463 role="listbox" 2464 :aria-labelledby="buttonId" 2465 > 2466 <template x-if="filteredOptions.length === 0"> 2467 <li class="px-3 py-2 text-sm text-gray-600" role="option" aria-disabled="true"> 2468 No results 2469 </li> 2470 </template> 2471 2472 <template x-for="(opt, idx) in filteredOptions" :key="opt._key"> 2473 <li 2474 class="px-3 py-2 text-sm cursor-pointer" 2475 :id="optionId(idx)" 2476 role="option" 2477 :aria-selected="isSelected(opt).toString()" 2478 :class="{ 2479 'bg-gray-100': idx === activeIndex, 2480 'font-semibold': isSelected(opt), 2481 'opacity-70': opt._disabled === true, 2482 }" 2483 x-on:mousemove="setActiveIndex(idx)" 2484 x-on:mousedown.prevent="selectByIndex(idx)" 2485 > 2486 <span x-text="opt.label"></span> 2487 </li> 2488 </template> 2489 </ul> 2490 </div> 2491</div> 2492 2493 <p x-show="showErrors && provinces.length > 0 && !currentProvince" 2494 class="text-sm text-red-600 pt-1">Le champ Département est obligatoire.</p> 2495 </div> 2496 2497 <div x-show="zips.length > 0"> 2498 <div 2499 class="flex flex-col text-writing-strong gap-2 w-full" 2500 2501> 2502 <label for="zip" class="text-base leading-5">Code postal</label> 2503 <input 2504 x-model="currentZip" @change="onZipChange()" @keydown.enter.prevent="onZipChange()" 2505 2506 type="text" 2507 class=" focus:border-stroke-strong focus:ring-2 focus:ring-neutral-100 ring-offset-2 rounded-sm py-3.5 pr-3 bg-base-light hover:bg-base-weak disabled:text-writing-disabled disabled:bg-base-weak border border-stroke-sub pl-3" 2508 name="" 2509 id="zip" 2510 placeholder="" 2511 2512 style="" 2513 value="" 2514 /> 2515 </div> 2516 <p x-show="showErrors && zips.length > 0 && !currentZip" 2517 class="text-sm text-red-600 pt-1">Le champ Code postal est obligatoire.</p> 2518 </div> 2519 2520 <div x-show="locations.length > 0"> 2521 <div 2522 class="relative" x-data="searchSelect({ 2523 uid: 'location', 2524 options: () => locations, 2525 selected: () => currentLocation, 2526 placeholder: 'Choose a Locality' 2527 })" x-model="currentLocation" 2528 x-data="searchSelect({ 2529 // ... existing code ... 2530 })" 2531 x-effect="refreshFromSources()" 2532 x-modelable="selectedValue" 2533 x-on:keydown.escape.stop.prevent="close()" 2534 x-on:click.outside="close()" 2535> 2536 2537 2538 2539 <div class="mb-1"> 2540 <label class="font-medium">Locality</label> 2541 </div> 2542 2543 2544 <button 2545 type="button" 2546 class="w-full relative rounded-sm py-3.5 pl-3 pr-10 text-left bg-base-light hover:bg-base-weak 2547 border border-stroke-sub 2548 focus:outline-none focus-visible:outline-none 2549 focus-visible:border-stroke-strong focus-visible:ring-2 focus-visible:ring-neutral-100 ring-offset-2":class="disabled ? 'opacity-60 cursor-not-allowed disabled:text-writing-disabled disabled:bg-base-weak' : 'cursor-pointer'" 2550 x-ref="button" 2551 x-bind:disabled="disabled" 2552 role="combobox" 2553 aria-haspopup="listbox"
2554 :aria-expanded="open.toString()" 2555 :aria-controls="listboxId" 2556 :aria-activedescendant="activeDescendantId" 2557 x-on:click="toggle()" 2558 x-on:keydown.arrow-down.prevent="openAndFocusFirst()" 2559 x-on:keydown.arrow-up.prevent="openAndFocusLast()" 2560 x-on:keydown.enter.prevent="open ? selectActive() : openAndFocusFirst()" 2561 x-on:keydown.space.prevent="open ? selectActive() : openAndFocusFirst()" 2562 > 2563 <span class="block truncate" x-text="selectedLabel ?? placeholder"></span> 2564 <svg class="pointer-events-none absolute right-3 top-1/2 h-4 w-4 -translate-y-1/2 text-writing-sub" 2565 viewBox="0 0 20 20" fill="none" aria-hidden="true"> 2566 <path d="M5.5 7.5l4.5 4.5 4.5-4.5" stroke="currentColor" stroke-width="1.5" stroke-linecap="round" 2567 stroke-linejoin="round"/> 2568 </svg> 2569 </button> 2570 2571 2572 2573 2574 <div 2575 class="absolute z-50 mt-1 w-full rounded-sm border border-stroke-sub bg-base-light shadow" 2576 x-show="open" 2577 x-transition.origin.top 2578 x-cloak 2579 > 2580 <div class="p-2"> 2581 <label :for="searchInputId" class="sr-only">Search</label> 2582 <input 2583 type="text" 2584 class="w-full rounded-sm py-3.5 pl-3 pr-10 bg-base-light hover:bg-base-weak focus:border-stroke-strong focus:ring-2 focus:ring-neutral-100 ring-offset-2 border border-stroke-sub" 2585 x-ref="search" 2586 :id="searchInputId" 2587 :placeholder="placeholder" 2588 autocomplete="off" 2589 role="searchbox" 2590 aria-autocomplete="list" 2591 :aria-controls="listboxId" 2592 x-model="query" 2593 x-on:keydown.arrow-down.prevent="focusNext()" 2594 x-on:keydown.arrow-up.prevent="focusPrev()" 2595 x-on:keydown.enter.prevent="selectActive()" 2596 x-on:keydown.escape.stop.prevent="close(); $nextTick(() => $refs.button?.focus())" 2597 x-on:blur="close()" 2598 > 2599 </div> 2600 2601 <ul 2602 class="max-h-60 overflow-auto py-1" 2603 :id="listboxId" 2604 role="listbox" 2605 :aria-labelledby="buttonId" 2606 > 2607 <template x-if="filteredOptions.length === 0"> 2608 <li class="px-3 py-2 text-sm text-gray-600" role="option" aria-disabled="true"> 2609 No results 2610 </li> 2611 </template> 2612 2613 <template x-for="(opt, idx) in filteredOptions" :key="opt._key"> 2614 <li 2615 class="px-3 py-2 text-sm cursor-pointer" 2616 :id="optionId(idx)" 2617 role="option" 2618 :aria-selected="isSelected(opt).toString()" 2619 :class="{ 2620 'bg-gray-100': idx === activeIndex, 2621 'font-semibold': isSelected(opt), 2622 'opacity-70': opt._disabled === true, 2623 }" 2624 x-on:mousemove="setActiveIndex(idx)" 2625 x-on:mousedown.prevent="selectByIndex(idx)" 2626 > 2627 <span x-text="opt.label"></span> 2628 </li> 2629 </template> 2630 </ul> 2631 </div> 2632</div> 2633 2634 <p x-show="showErrors && locations.length > 0 && !currentLocation" 2635 class="text-sm text-red-600">Le champ Locality est obligatoire.</p> 2636 </div> 2637 2638 2639 </div> 2640 <div class="flex items-center pt-2"> 2641 <button 2642 class="disabled:opacity-70 disabled:cursor-not-allowed overflow-hidden inline-flex hover:no-underline group group-button h-10 rounded-xs transition-colors cursor-pointer focus:border-stroke-strong focus:ring-2 focus:ring-neutral-100 ring-offset-2 w-fit bg-primary-default text-writing-inverse hover:bg-primary-dark" 2643 2644 2645@click="performSearch()" 2646 2647data-component="button"> 2648 <div class="py-2 flex-1 px-3 order-1">Chercher</div> 2649</button> 2650 </div> 2651 2652 <div class="pt-4 grid md:grid-cols-2 gap-4"> 2653 <template x-for="a in agents" :key="a.id || a.email"> 2654 <div class="relative border border-stroke-sub p-4"> 2655 <div class="flex flex-col gap-1"> 2656 <div class="flex flex-wrap flex-row gap-1 pb-4"> 2657 <template x-if="hasAccountType(a, 'WOODWORKER') && (currentCountry === 'IT' || currentCountry === 'ES') && !isHt"> 2658 <div class="contents"> 2659 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2660 Constructeur 2661</div> 2662 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2663 Concepteur 2664</div> 2665 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2666 Expert 2667</div> 2668 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2669 Technicien CVC 2670</div> 2671 <template x-if="currentCountry === 'IT'"> 2672 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2673 Poseur de menuiseries 2674</div> 2675 </template> 2676 </div> 2677 </template> 2678 2679 <template 2680 x-if="hasAccountType(a, 'BUILDING ENVELOPE') && (currentCountry === 'IT' || currentCountry === 'ES') && !isHt"> 2681 <div class="contents"> 2682 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2683 Spécialiste façades 2684</div> 2685 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2686 Ferblantier 2687</div> 2688 <template x-if="currentCountry === 'ES'"> 2689 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2690 Poseur de menuiseries 2691</div> 2692 </template> 2693 </div> 2694 </template> 2695 2696 <template 2697 x-if="hasAccountType(a, 'RETAILER') && (currentCountry === 'IT' || currentCountry === 'ES') && !isHt"> 2698 <div class="contents"> 2699 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2700 Négociant bois 2701</div> 2702 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2703 Négociant matériaux 2704</div> 2705 </div> 2706 </template> 2707 2708 <template 2709 x-if="hasAccountType(a, 'SAFETY SPECIALIST') && (currentCountry === 'IT' || currentCountry === 'ES') && !isHt"> 2710 <div class="contents"> 2711 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2712 Ãnergies renouvelables 2713</div> 2714 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2715 Travaux sur cordes 2716</div> 2717 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2718 Installateur lignes de vie 2719</div> 2720 <div data-block-id="" data-block-name="badge" class="w-fit px-2 text-xs font-light flex gap-2 items-center rounded py-1 bg-primary-alpha-20 text-primary-dark"> 2721 Responsable HSE 2722</div> 2723 </div> 2724 </template> 2725 2726 2727 </div> 2728 2729 <h2 class="font-display font-medium text-writing-strong text-3xl uppercase" 2730 x-text="a.name"></h2> 2731 2732 <p class="text-sm lg:text-base font-light leading-4 lg:leading-5 text-writing-sub mb-0 flex gap-1 items-center">
2733 <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 2734 <path d="M18.8772 15.8485C19.2225 16.0799 19.7442 16.3996 19.6597 17.0903C19.5752 17.781 18.5024 19.6657 16.1878 19.6657C13.8732 19.6657 11.07 17.8434 8.61217 15.3856C6.1543 12.9277 4.33203 10.0951 4.33203 7.80989C4.33203 5.5247 6.35637 4.42619 6.90746 4.34169C7.45855 4.25719 7.94719 4.77522 8.14925 5.12424L9.88335 7.78417C10.2397 8.33894 10.1001 9.07373 9.56372 9.46316C8.81056 10.0694 7.59816 10.7931 10.4014 13.6C13.2083 16.4069 13.9577 15.1614 14.5382 14.4377C14.924 13.905 15.6588 13.7653 16.2172 14.118L18.8772 15.8521V15.8485Z" 2735 stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" stroke-linecap="round"/> 2736</svg> 2737 <span class="sr-only">Telephone:</span> 2738 <a :href="`tel:${a.mobile_phone || a.phone || ''}`" class="hover:underline" 2739 x-text="a.mobile_phone || a.phone || ''"></a> 2740 </p> 2741 2742 <p class="text-sm lg:text-base font-light leading-4 lg:leading-5 text-writing-sub mb-0 flex gap-1 items-center"> 2743 <svg class="w-6 h-6" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 2744 <path d="M3.37109 6.3623L12.0014 14.5381L20.6317 6.3623M14.8768 11.8893L20.6317 17.6417M3.37109 17.6377L9.126 11.8853" 2745 stroke="currentColor" stroke-width="0.758" stroke-miterlimit="10"/> 2746 <path d="M3.37109 6.3623H20.6317V17.6377H3.37109V6.3623Z" stroke="currentColor" stroke-width="0.758" 2747 stroke-miterlimit="10"/> 2748</svg> 2749 <span class="sr-only">Email:</span> 2750 <a :href="`mailto:${displayEmail(a.email)}`" class="hover:underline" 2751 x-text="displayEmail(a.email)"></a> 2752 </p> 2753 </div> 2754 </div> 2755 </template> 2756 </div> 2757 </form> 2758 </div> 2759 2760</div> 2761 2762 2763 2764</div> 2765 2766 </main> 2767 2768 2769 <footer role="contentinfo" class="bg-base-strong text-writing-inverse py-8 md:py-20"> 2770 <div class="w-full max-w-[1600px] mx-auto px-4 lg:px-8"> 2771 <div class="space-y-10 lg:grid grid-cols-6 xl:grid-cols-5 gap-6 pb-10 lg:pb-28 md:border-b border-writing-inverse"> 2772 <img class="mx-auto md:mx-0 col-span-2 xl:col-span-1 w-full max-w-48" src="/assets/images/rothoblaas-logo-footer-fr.png" alt="Rothoblaas" /> 2773 <ul class="col-span-4 md:grid grid-cols-2 xl:grid-cols-4 gap-6"> 2774 <li class="space-y-8"> 2775 <div class="hidden md:block font-semibold text-base">Produits</div> 2776 <ul class="font-light text-sm my-0"> 2777 <div class="block md:hidden"> 2778 <div data-component="accordion" > 2779 <details class="py-4 xl:py-6 group border-b group flex flex-col open:gap-y-6 border-stroke-sub"> 2780 <summary class="flex gap-4 justify-between items-center cursor-pointer list-none"> 2781 <div class="flex items-center gap-4"> 2782 <h3 class="text-lg xl:text-xl font-semibold m-0 text-writing-inverse group-hover:text-writing-soft" >Produits</h3> </div> 2783 <svg class="w-6 h-6 group-open:hidden primary-default" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2784 <g stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width=".75"> 2785 <path d="m12 4.34253v15.31497"/> 2786 <path d="m19.6587 12h-15.31495"/> 2787 </g> 2788</svg> 2789 <svg class="w-6 h-6 hidden group-open:block primary-default" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 2790 <path d="M19.6587 12H4.34375" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" stroke-linecap="round"/> 2791</svg> 2792 </summary> 2793 <div class="text-md xl:text-lg text-writing-inverse"> 2794 <div class="space-y-1"> 2795 <li><a class="hover:underline " href="https://www.rothoblaas.fr/produits/fixation/vis" >Vis</a></li> 2796 <li><a class="hover:underline " href="https://www.rothoblaas.fr/produits/fixation/equerres-et-plaques" >Ãquerres et plaques</a></li> 2797 <li><a class="hover:underline " href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/rubans-adhesifs-et-produits-detancheite" >Rubans adhésifs et produits d'étanchéité</a></li> 2798 <li><a class="hover:underline " href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/membranes" >Membranes</a></li> 2799 <li><a class="hover:underline " href="https://www.rothoblaas.fr/produits/feu" >Feu</a></li> 2800 <li><a class="hover:underline " href="https://www.rothoblaas.fr/produits/acoustique/profils-resilients" >Profils résilients</a></li> 2801 <li><a class="hover:underline " href="https://www.rothoblaas.fr/produits/systemes-antichute/lignes-de-vie" >Lignes de vie</a></li> 2802 <li><a class="hover:underline " href="https://www.rothoblaas.fr/produits/nouveaux-produits" >Nouveaux produits</a></li> 2803 </div> 2804 </div> 2805 </details> 2806</div> 2807 </div> 2808 <div class="space-y-1 hidden md:block"> 2809 <li><a href="https://www.rothoblaas.fr/produits/fixation/vis" class="hover:underline ">Vis</a></li> 2810 <li><a href="https://www.rothoblaas.fr/produits/fixation/equerres-et-plaques" class="hover:underline ">Ãquerres et plaques</a></li> 2811 <li><a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/rubans-adhesifs-et-produits-detancheite" class="hover:underline ">Rubans adhésifs et produits d'étanchéité</a></li> 2812 <li><a href="https://www.rothoblaas.fr/produits/etancheite-a-lair-et-impermeabilisation/membranes" class="hover:underline ">Membranes</a></li> 2813 <li><a href="https://www.rothoblaas.fr/produits/feu" class="hover:underline ">Feu</a></li> 2814 <li><a href="https://www.rothoblaas.fr/produits/acoustique/profils-resilients" class="hover:underline ">Profils résilients</a></li> 2815 <li><a href="https://www.rothoblaas.fr/produits/systemes-antichute/lignes-de-vie" class="hover:underline ">Lignes de vie</a></li> 2816 <li><a href="https://www.rothoblaas.fr/produits/nouveaux-produits" class="hover:underline ">Nouveaux produits</a></li> 2817 </div> 2818 </ul> 2819 </li> 2820 <li class="space-y-8"> 2821 <div class="hidden md:block font-semibold text-base">Droits et Confidentialité</div> 2822 <ul class="font-light text-sm my-0"> 2823 <div class="block md:hidden"> 2824 <div data-component="accordion" > 2825 <details class="py-4 xl:py-6 group border-b group flex flex-col open:gap-y-6 border-stroke-sub"> 2826 <summary class="flex gap-4 justify-between items-center cursor-pointer list-none"> 2827 <div class="flex items-center gap-4"> 2828 <h3 class="text-lg xl:text-xl font-semibold m-0 text-writing-inverse group-hover:text-writing-soft" >Droits et Confidentialité</h3> </div> 2829 <svg class="w-6 h-6 group-open:hidden primary-default" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2830 <g stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width=".75"> 2831 <path d="m12 4.34253v15.31497"/> 2832 <path d="m19.6587 12h-15.31495"/> 2833 </g> 2834</svg> 2835 <svg class="w-6 h-6 hidden group-open:block primary-default" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 2836 <path d="M19.6587 12H4.34375" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" stroke-linecap="round"/> 2837</svg> 2838 </summary> 2839 <div class="text-md xl:text-lg text-writing-inverse"> 2840 <div class="space-y-1"> 2841 <li>
2841<a class="hover:underline iubenda-nostyle iubenda-noiframe iubenda-embed" href="https://www.iubenda.com/privacy-policy/44249132" >Privacy policy</a></li> 2842 <li><a class="hover:underline iubenda-nostyle iubenda-noiframe iubenda-embed" href="https://www.iubenda.com/privacy-policy/44249132/cookie-policy" > Cookie policy</a></li> 2843 <li><a class="hover:underline " href="https://www.rothoblaas.fr/general-conditions-of-purchase" >General conditions of purchase</a></li> 2844 <li><a class="hover:underline " href="https://www.rothoblaas.fr/conditions-generales-de-vente" >Conditions générales de vente</a></li> 2845 <li><a class="hover:underline " href="https://www.rothoblaas.fr/whistleblowing-channel" >Whistleblowing channel</a></li> 2846 <li><a class="hover:underline " href="https://www.rothoblaas.fr/attachments/297534/CODE-ETHIQUE-FR_5.3.1-r.02.pdf" target="_blank">Code èthique</a></li> 2847 <li><a class="hover:underline " href="https://www.rothoblaas.fr/attachments/279915/AU-DELA-DES-MOTS_DIVERSITE.-RESPECT.-OPPORTUNITE_fr_5.3.3-r.01.pdf" target="_blank">Ãgalité des chances</a></li> 2848 <li><a class="hover:underline " href="https://www.rothoblaas.fr/accessibility" >Accessibilité</a></li> 2849 </div> 2850 </div> 2851 </details> 2852</div> 2853 </div> 2854 <div class="space-y-1 hidden md:block"> 2855 <li><a href="https://www.iubenda.com/privacy-policy/44249132" class="hover:underline iubenda-nostyle iubenda-noiframe iubenda-embed">Privacy policy</a></li> 2856 <li><a href="https://www.iubenda.com/privacy-policy/44249132/cookie-policy" class="hover:underline iubenda-nostyle iubenda-noiframe iubenda-embed"> Cookie policy</a></li> 2857 <li><a href="https://www.rothoblaas.fr/general-conditions-of-purchase" class="hover:underline ">General conditions of purchase</a></li> 2858 <li><a href="https://www.rothoblaas.fr/conditions-generales-de-vente" class="hover:underline ">Conditions générales de vente</a></li> 2859 <li><a href="https://www.rothoblaas.fr/whistleblowing-channel" class="hover:underline ">Whistleblowing channel</a></li> 2860 <li><a href="https://www.rothoblaas.fr/attachments/297534/CODE-ETHIQUE-FR_5.3.1-r.02.pdf" target="_blank" class="hover:underline ">Code èthique</a></li> 2861 <li><a href="https://www.rothoblaas.fr/attachments/279915/AU-DELA-DES-MOTS_DIVERSITE.-RESPECT.-OPPORTUNITE_fr_5.3.3-r.01.pdf" target="_blank" class="hover:underline ">Ãgalité des chances</a></li> 2862 <li><a href="https://www.rothoblaas.fr/accessibility" class="hover:underline ">Accessibilité</a></li> 2863 </div> 2864 </ul> 2865 </li> 2866 <li class="space-y-8"> 2867 <div class="hidden md:block font-semibold text-base">Services</div> 2868 <ul class="font-light text-sm my-0"> 2869 <div class="block md:hidden"> 2870 <div data-component="accordion" > 2871 <details class="py-4 xl:py-6 group border-b group flex flex-col open:gap-y-6 border-stroke-sub"> 2872 <summary class="flex gap-4 justify-between items-center cursor-pointer list-none"> 2873 <div class="flex items-center gap-4"> 2874 <h3 class="text-lg xl:text-xl font-semibold m-0 text-writing-inverse group-hover:text-writing-soft" >Services</h3> </div> 2875 <svg class="w-6 h-6 group-open:hidden primary-default" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2876 <g stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width=".75"> 2877 <path d="m12 4.34253v15.31497"/> 2878 <path d="m19.6587 12h-15.31495"/> 2879 </g> 2880</svg> 2881 <svg class="w-6 h-6 hidden group-open:block primary-default" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 2882 <path d="M19.6587 12H4.34375" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" stroke-linecap="round"/> 2883</svg> 2884 </summary> 2885 <div class="text-md xl:text-lg text-writing-inverse"> 2886 <div class="space-y-1"> 2887 <li><a class="hover:underline " href="https://www.rothoblaas.fr/identifiant" >Login</a></li> 2888 <li><a class="hover:underline " href="https://www.rothoblaas.fr/catalogues-rothoblaas" >Catalogues</a></li> 2889 <li><a class="hover:underline " href="https://www.rothoblaas.fr/feuilles-de-calcul" >Feuilles de calcul</a></li> 2890 <li><a class="hover:underline " href="https://www.rothoblaas.fr/rothoschool" >Rothoschool</a></li> 2891 <li><a class="hover:underline " href="https://www.rothoblaas.fr/support-technique" >Conseil</a></li> 2892 <li><a class="hover:underline " href="https://www.rothoblaas.fr/newsletter" >Newsletter</a></li> 2893 </div> 2894 </div> 2895 </details> 2896</div> 2897 </div> 2898 <div class="space-y-1 hidden md:block"> 2899 <li><a href="https://www.rothoblaas.fr/identifiant" class="hover:underline ">Login</a></li> 2900 <li><a href="https://www.rothoblaas.fr/catalogues-rothoblaas" class="hover:underline ">Catalogues</a></li> 2901 <li><a href="https://www.rothoblaas.fr/feuilles-de-calcul" class="hover:underline ">Feuilles de calcul</a></li> 2902 <li><a href="https://www.rothoblaas.fr/rothoschool" class="hover:underline ">Rothoschool</a></li> 2903 <li><a href="https://www.rothoblaas.fr/support-technique" class="hover:underline ">Conseil</a></li> 2904 <li><a href="https://www.rothoblaas.fr/newsletter" class="hover:underline ">Newsletter</a></li> 2905 </div> 2906 </ul> 2907 </li> 2908 <li class="space-y-8"> 2909 <div class="hidden md:block font-semibold text-base">Société</div> 2910 <ul class="font-light text-sm my-0"> 2911 <div class="block md:hidden"> 2912 <div data-component="accordion" > 2913 <details class="py-4 xl:py-6 group border-b group flex flex-col open:gap-y-6 border-stroke-sub"> 2914 <summary class="flex gap-4 justify-between items-center cursor-pointer list-none"> 2915 <div class="flex items-center gap-4"> 2916 <h3 class="text-lg xl:text-xl font-semibold m-0 text-writing-inverse group-hover:text-writing-soft" >Société</h3> </div> 2917 <svg class="w-6 h-6 group-open:hidden primary-default" fill="none" viewBox="0 0 24 24" xmlns="http://www.w3.org/2000/svg"> 2918 <g stroke="currentColor" stroke-linecap="round" stroke-miterlimit="10" stroke-width=".75"> 2919 <path d="m12 4.34253v15.31497"/> 2920 <path d="m19.6587 12h-15.31495"/> 2921 </g> 2922</svg> 2923 <svg class="w-6 h-6 hidden group-open:block primary-default" viewBox="0 0 24 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 2924 <path d="M19.6587 12H4.34375" stroke="currentColor" stroke-width="0.75" stroke-miterlimit="10" stroke-linecap="round"/> 2925</svg> 2926 </summary> 2927 <div class="text-md xl:text-lg text-writing-inverse"> 2928 <div class="space-y-1"> 2929 <li><a class="hover:underline " href="https://www.rothoblaas.fr/company-rothoblaas" >Qui sommes-nous ?</a></li> 2930 <li><a class="hover:underline " href="https://issuu.com/rothoblaas/docs/rothoblaas_vision_mission_identit_fr" >Vision Mission Identitè</a></li> 2931 <li><a class="hover:underline " href="https://www.rothoblaas.fr/nos-sites" >Nos sites</a></li> 2932 <li><a class="hover:underline " href="https://www.rothoblaas.fr/contacts" >Contacter l'agent</a></li> 2933 <li><a class="hover:underline " href="https://www.rothoblaas.fr/carrieres-rothoblaas" >Carrières</a></li> 2934 <li><a class="hover:underline " href="https://www.rothoblaas.fr/evenements" >Ãvènements</a></li> 2935 <li><a class="hover:underline " href="https://www.rothoblaas.fr/attachments/292308/ISO-9001_2015_Inglese.pdf" target="_blank">ISO 9001</a></li> 2936 <li><a class="hover:underline " href="https://www.rothoblaas.fr/attachments/266936/MOD5.1.1_Politica-della-Qualitá-della-Salute-e-Sicurezza-e-dell'-Ambiente_FR-(1).pdf" target="_blank">QHSE-Policy</a></li> 2937 <li><a class="hover:underline " href="https://www.rothoblaas.fr/attachments/292309/Rotho-Blaas-S.r.l.-certificato-UNIPdR.pdf" target="_blank">UNI PdR 125:2022</a></li> 2938 </div> 2939 </div> 2940 </details> 2941</div> 2942 </div> 2943 <div class="space-y-1 hidden md:block"> 2944 <li><a href="https://www.rothoblaas.fr/company-rothoblaas" class="hover:underline ">Qui sommes-nous ?</a></li> 2945 <li><a href="https://issuu.com/rothoblaas/docs/rothoblaas_vision_mission_identit_fr" class="hover:underline ">Vision Mission Identitè</a></li> 2946 <li><a href="https://www.rothoblaas.fr/nos-sites" class="hover:underline ">Nos sites</a></li> 2947 <li><a href="https://www.rothoblaas.fr/contacts" class="hover:underline ">Contacter l'agent</a></li> 2948 <li><a href="https://www.rothoblaas.fr/carrieres-rothoblaas" class="hover:underline ">Carrières</a></li> 2949 <li><a href="https://www.rothoblaas.fr/evenements" class="hover:underline ">Ãvènements</a></li> 2950 <li><a href="https://www.rothoblaas.fr/attachments/292308/ISO-9001_2015_Inglese.pdf" target="_blank" class="hover:underline ">ISO 9001</a></li> 2951 <li><a href="https://www.rothoblaas.fr/attachments/266936/MOD5.1.1_Politica-della-Qualitá-della-Salute-e-Sicurezza-e-dell'-Ambiente_FR-(1).pdf" target="_blank" class="hover:underline ">QHSE-Policy</a></li> 2952 <li><a href="https://www.rothoblaas.fr/attachments/292309/Rotho-Blaas-S.r.l.-certificato-UNIPdR.pdf" target="_blank" class="hover:underline ">UNI PdR 125:2022</a></li> 2953 </div> 2954 </ul> 2955 </li> 2956 </ul> 2957 </div> 2958 <div class="flex flex-col lg:flex-row gap-10 lg:gap-8 md:pt-6"> 2959 <small class="text-sm font-light"> 2960 <p>© ROTHO BLAAS SRL Via dell'Adige N. 2/1 | I-39040, Cortaccia (BZ) N°REA : BZ - 120599 - NIF 01433490214 - N°TVA IT 01433490214 | Cap. Soc. : EUR 52.000,00. Tél. +39 0471 81 84 00 - Fax. +39 0471 81 84 84 | E-mail <a href="mailto:[email protected]">[email protected]</a> â CEC : <a href="mailto:[email protected]">[email protected]</a>.</p> 2961 2962 </small> 2963 <div class="flex gap-2.5"> 2964 <a class="w-8 h-8 flex justify-center items-center p-1.5 bg-base-light hover:bg-base-soft rounded-lg aspect-square" href="https://www.facebook.com/rothoblaas1" target="_blank" title="Rothoblaas on Facebook"> 2965 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 2966 <path d="M20 10.0001C20 4.47731 15.5228 0.00012207 10 0.00012207C4.47719 0.00012207 0 4.47731 0 10.0001C0 14.9914 3.65687 19.1285 8.4375 19.8786V12.8907H5.89844V10.0001H8.4375V7.797C8.4375 5.29075 9.93047 3.90637 12.2147 3.90637C13.3088 3.90637 14.4531 4.10169 14.4531 4.10169V6.56262H13.1922C11.9499 6.56262 11.5625 7.33348 11.5625 8.12434V10.0001H14.3359L13.8926 12.8907H11.5625V19.8786C16.3431 19.1285 20 14.9915 20 10.0001Z" fill="#0A0A0A"/> 2967 </svg> 2968 </a> 2969 <a class="w-8 h-8 flex justify-center items-center p-1.5 bg-base-light hover:bg-base-soft rounded-lg aspect-square" href="https://www.instagram.com/rothoblaas.international/" target="_blank" title="Rothoblaas on Linkedin"> 2970 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 2971 <path d="M10 1.802C12.6701 1.802 12.9863 1.812
297115 14.0408 1.8602C15.0158 1.90473 15.5453 2.06762 15.8977 2.20458C16.3645 2.38598 16.6976 2.6027 17.0475 2.95262C17.3974 3.30254 17.6141 3.63567 17.7955 4.10239C17.9325 4.45481 18.0954 4.98434 18.1399 5.95926C18.188 7.01379 18.1981 7.33004 18.1981 10.0001C18.1981 12.6702 18.188 12.9865 18.1399 14.041C18.0954 15.016 17.9325 15.5454 17.7955 15.8979C17.6141 16.3646 17.3974 16.6978 17.0475 17.0477C16.6976 17.3976 16.3645 17.6143 15.8977 17.7957C15.5453 17.9326 15.0158 18.0956 14.0408 18.14C12.9865 18.1882 12.6702 18.1983 10 18.1983C7.32977 18.1983 7.01344 18.1882 5.95914 18.14C4.98414 18.0955 4.45469 17.9326 4.10227 17.7957C3.63555 17.6143 3.30234 17.3976 2.95242 17.0477C2.6025 16.6977 2.38578 16.3646 2.20445 15.8979C2.0675 15.5455 1.90453 15.016 1.86008 14.041C1.81195 12.9865 1.8018 12.6703 1.8018 10.0001C1.8018 7.32997 1.81195 7.01379 1.86008 5.95934C1.90461 4.98434 2.0675 4.45481 2.20445 4.10239C2.38578 3.63567 2.6025 3.30254 2.95242 2.95262C3.30242 2.60262 3.63555 2.38598 4.10227 2.20458C4.45461 2.06762 4.98414 1.90473 5.95914 1.8602C7.01359 1.81215 7.32984 1.802 10 1.802ZM10 0.00012207C7.28414 0.00012207 6.94359 0.0116064 5.87703 0.0602783C4.81258 0.108872 4.08562 0.277935 3.44961 0.525122C2.79195 0.780669 2.2343 1.12262 1.67836 1.67856C1.12242 2.2345 0.780547 2.79215 0.525 3.44973C0.277734 4.08582 0.10875 4.81278 0.0601562 5.87715C0.0114844 6.94372 0 7.28426 0 10.0001C0 12.716 0.0114844 13.0565 0.0601562 14.1231C0.10875 15.1875 0.277734 15.9145 0.525 16.5505C0.780469 17.2081 1.12242 17.7658 1.67836 18.3218C2.2343 18.8777 2.79195 19.2196 3.44961 19.4751C4.0857 19.7224 4.81258 19.8914 5.87695 19.94C6.94359 19.9886 7.28414 20.0001 10 20.0001C12.7159 20.0001 13.0564 19.9886 14.123 19.94C15.1873 19.8914 15.9143 19.7224 16.5503 19.4751C17.208 19.2197 17.7656 18.8777 18.3216 18.3218C18.8775 17.7658 19.2195 17.2082 19.475 16.5505C19.7222 15.9144 19.8913 15.1875 19.9398 14.1232C19.9885 13.0565 20 12.716 20 10.0001C20 7.28426 19.9885 6.94372 19.9398 5.87715C19.8913 4.81278 19.7222 4.08582 19.475 3.44981C19.2195 2.79215 18.8775 2.2345 18.3216 1.67856C17.7656 1.12262 17.208 0.780591 16.5504 0.525122C15.9143 0.277935 15.1873 0.108872 14.123 0.0602783C13.0564 0.0116064 12.7159 0.00012207 10 0.00012207ZM10 4.86497C7.16391 4.86497 4.86484 7.16418 4.86484 10.0001C4.86484 12.8361 7.16391 15.1353 10 15.1353C12.836 15.1353 15.1352 12.8362 15.1352 10.0001C15.1352 7.16411 12.836 4.86497 10 4.86497ZM10 13.3335C8.15906 13.3335 6.66664 11.8411 6.66664 10.0001C6.66664 8.15918 8.15906 6.66676 10 6.66676C11.8409 6.66676 13.3334 8.15918 13.3334 10.0001C13.3334 11.8411 11.8409 13.3335 10 13.3335ZM16.538 4.66208C16.538 5.32489 16.0008 5.86207 15.338 5.86207C14.6752 5.86207 14.138 5.32489 14.138 4.66208C14.138 3.99926 14.6752 3.46208 15.338 3.46208C16.0007 3.46208 16.538 3.99934 16.538 4.66208Z" fill="#0A0A0A"/> 2972 </svg> 2973 </a> 2974 <a class="w-8 h-8 flex justify-center items-center p-1.5 bg-base-light hover:bg-base-soft rounded-lg aspect-square" href="https://www.linkedin.com/company/rothoblaas-srl/" target="_blank" title="Rothoblaas on Instagram"> 2975 <svg width="20" height="20" viewBox="0 0 20 20" fill="none" xmlns="http://www.w3.org/2000/svg"> 2976 <path d="M17.0409 17.0413H14.0776V12.4004C14.0776 11.2938 14.0578 9.86917 12.5363 9.86917C10.9929 9.86917 10.7567 11.075 10.7567 12.3199V17.041H7.79344V7.49753H10.6382V8.80175H10.678C10.9628 8.31497 11.3742 7.91453 11.8684 7.64305C12.3627 7.37157 12.9214 7.23923 13.4849 7.26011C16.4884 7.26011 17.0422 9.23573 17.0422 11.8059L17.0409 17.0413ZM4.44969 6.19308C3.49992 6.19324 2.72984 5.42339 2.72969 4.47363C2.72953 3.52386 3.4993 2.75378 4.44906 2.75363C5.39883 2.75339 6.16891 3.52324 6.16906 4.473C6.16915 4.9291 5.98805 5.36655 5.6656 5.68912C5.34316 6.0117 4.90578 6.19298 4.44969 6.19308ZM5.93141 17.0414H2.96492V7.49753H5.93133L5.93141 17.0414ZM18.5183 0.00151665H1.47586C0.67039 -0.00754585 0.00984375 0.637689 0 1.44316V18.5567C0.00953125 19.3625 0.67 20.0084 1.47578 20H18.5183C19.3258 20.01 19.9888 19.3641 20 18.5567V1.44183C19.9885 0.634798 19.3254 -0.0103583 18.5183 0.000188527" fill="#0A0A0A"/> 2977 </svg> 2978 </a> 2979 <a class="w-8 h-8 flex justify-center items-center p-1.5 bg-base-light hover:bg-base-soft rounded-lg aspect-square" href="https://www.youtube.com/c/RothoBlaasOfficial/featured" target="_blank" title="Rothoblaas on YouTube">
2980 <svg width="20" height="16" viewBox="0 0 20 16" fill="none" xmlns="http://www.w3.org/2000/svg"> 2981 <path d="M19.5583 3.16223C19.4436 2.73829 19.2198 2.3518 18.9093 2.04124C18.5987 1.73068 18.2122 1.50689 17.7883 1.39215C16.2363 0.968872 9.98986 0.968872 9.98986 0.968872C9.98986 0.968872 3.74314 0.981685 2.19111 1.40497C1.76716 1.51971 1.38067 1.74351 1.07013 2.05408C0.759581 2.36466 0.535813 2.75117 0.421109 3.17512C-0.0483444 5.93278 -0.230454 10.1348 0.433999 12.7822C0.548716 13.2061 0.772489 13.5926 1.08303 13.9031C1.39358 14.2137 1.78006 14.4375 2.204 14.5522C3.75603 14.9755 10.0026 14.9755 10.0026 14.9755C10.0026 14.9755 16.2491 14.9755 17.801 14.5522C18.225 14.4375 18.6115 14.2137 18.922 13.9032C19.2326 13.5926 19.4564 13.2061 19.5711 12.7822C20.0663 10.0206 20.2188 5.82114 19.5583 3.16223Z" fill="#0A0A0A"/> 2982 <path d="M8.00195 10.9736L13.1838 7.97217L8.00195 4.97076V10.9736Z" fill="white"/> 2983 </svg> 2984 </a> 2985 </div> 2986 </div> 2987 </div> 2988</footer> 2989 2990 2991 2992 <div> 2993<dialog id="page-modal" 2994 data-component="modal" 2995 class="bg-white border rounded-sm border-stroke-soft p-8 w-full max-w-200 [open]:flex flex-col fixed" 2996 x-cloak 2997 x-show="isModalOpen" 2998> 2999 <div class="flex justify-end"> 3000 <button 3001 class="disabled:opacity-70 disabled:cursor-not-allowed overflow-hidden inline-flex hover:no-underline group group-button h-10 rounded-xs transition-colors cursor-pointer focus:border-stroke-strong focus:ring-2 focus:ring-neutral-100 ring-offset-2 w-fit text-primary-darker hover:text-primary-default" 3002 3003 3004type="submit" x-on:click="document.getElementById('page-modal').close();isModalOpen=false" 3005autofocus 3006data-component="button"> 3007 <span class="sr-only">Close</span> 3008 <div class="overflow-hidden w-10 h-10 -my-px border-0 order-2"> 3009 <div class="w-full h-full flex flex-col items-center justify-center duration-400 transition-transform"> 3010 <svg class="w-8 h-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 3011 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 3012 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 3013</svg> 3014 </div> 3015 <div class="w-full h-full flex flex-col items-center justify-center duration-400 transition-transform"> 3016 <svg class="w-8 h-8" width="25" height="24" viewBox="0 0 25 24" fill="none" xmlns="http://www.w3.org/2000/svg"> 3017 <path d="M19.5 5L5.5 19" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 3018 <path d="M19.5 19L5.5 5" stroke="currentColor" stroke-width="0.75" stroke-linecap="round" stroke-linejoin="round"/> 3019</svg> 3020 </div> 3021 </div> 3022</button> 3023 </div> 3024 <div x-html="content" class="old"> 3025 3026 </div> 3027</dialog> 3028 3029
3030<script> 3031 function pageModal() { 3032 return { 3033 content: "", 3034 isModalOpen: false, 3035 openModal: function (url) { 3036 fetch(url, { 3037 headers: { 3038 'X-Modal': 'true' 3039 } 3040 }).then((response) => { 3041 return response.text(); 3042 }).then((text) => { 3043 var parser = new DOMParser(); 3044 var doc = parser.parseFromString(text, "text/html"); 3045 this.content = doc.querySelector('main').innerHTML;; 3046 this.isModalOpen = true; 3047 document.getElementById('page-modal').showModal(); 3048 }); 3049 3050 } 3051 } 3052 }; 3053</script>
3053 3054</div> 3055 3056 <div class="hidden sm:max-w-md md:max-w-xl lg:max-w-3xl xl:max-w-5xl 2xl:max-w-7xl"> 3057 3058 </div> 3059 3060</body> 3061</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.