PageSourceSearch

https://benders.se/

html benders.se collected 2026-09-26 09:31:32 UTC 66,964 bytes, 1,809 lines download raw bytes

1
2
3<!DOCTYPE html>
4<html lang="sv-SE" class="no-js" data-gui-base="/gui/">
5<head><title>
6	Benders — Svenska byggprodukter i betong och granit
7</title><meta charset="utf-8" /><meta http-equiv="x-ua-compatible" content="ie=edge" /><meta name="viewport" content="width=device-width,initial-scale=1.0" /><link rel="shortcut icon" href="/gui/i/ico/benders.ico" type="image/ico" />
8    
8<script>
9        document.documentElement.className = document.documentElement.className.replace(/(\s|^)no-js(\s|$)/, '$1js$2');
10    </script>
10
11    <link rel="stylesheet" href="/gui/css/build/main.min.css?v=7" />
12	    <style type="text/css">
13            .product-details .sku-details img.iconBox {
14				float: right;
15				width: auto;
16				height: 35px;
17				margin: 0 0 0 5px;
18				display: inline-block;
19				padding: 5px;				
20                border:1px solid #ddd;
21            }
22
23            .product-details .sku-details img.iconBox:hover {
24                border:1px solid #58595b;
25            }
26            .smallIconBox {		
27                border:1px solid #fff;
28            }
29
30            .smallIconBox:hover {
31                border:1px solid #58595b;
32            }
33            /* Product specifications two-column layout */
34            .product-specifications {
35                margin: 3px 0;                
36                padding: 10px;
37                border: 1px solid #ddd;
38            }
39            
40            .product-specifications h2 {
41                margin-bottom: 20px;
42                font-size: 18px;
43                color: #333;
44                font-weight: bold;
45                text-transform: uppercase;
46            }
47            
48            .spec-container {
49                display: flex;
50                gap: 30px;						
51				
52            }
53            
54            .spec-image {
55                flex: 0 0 150px;
56                background: #e0e0e0;
57                height: 120px;
58                display: flex;
59                align-items: center;
60                justify-content: center;
61                color: #666;
62                font-size: 12px;
63                text-align: center;
64                border: 1px solid #ccc;
65            }
66            
67            .spec-details {
68                flex: 1;
69            }
70            
71            .spec-grid {
72                display: grid;				
73                grid-template-columns: auto 1fr;
74                gap: 4px 40px;
75                align-items: start;
76				width: 90%;
77            }
78            
79            .spec-item {
80                display: contents;
81            }
82            
83            .spec-item::after {
84                content: "";
85                grid-column: 1 / -1;
86                border-bottom: 1px solid #ddd;
87                margin: 1px 0;
88            }
89            
90            .spec-label {
91                font-weight: bold;
92                color: #666;
93                font-size: 14px;
94				font-family: Helvetica,Arial,sans-serif;
95                padding: 2px 0 1px 0;
96            }
97            
98            .spec-value {
99                font-weight: normal;
100                color: #333;
101                font-size: 14px;
102				font-family: Helvetica,Arial,sans-serif;
103                padding: 2px 0 1px 0;
104            }
105            
106            .spec-description {
107                display: contents;
108            }
109            
110            .spec-description::after {
111                content: "";
112                grid-column: 1 / -1;
113                border-bottom: 1px solid #ddd;
114                margin: 1px 0;
115            }
116            
117            .spec-description .spec-label {
118                font-weight: bold;
119                color: #666;
120                font-size: 14px;
121                padding: 2px 0 1px 0;
122            }
123            
124            .spec-description .spec-value {
125                line-height: 1.6;
126                font-weight: normal;
127                color: #333;
128                font-size: 14px;
129                padding: 2px 0 1px 0;
130            }
131            
132        /* Mobile styles for image positioning - simple approach without affecting icons */
133        @media (max-width: 768px) {
134            .sku-details .image-container {
135                float: none !important;
136                clear: both;
137                margin-bottom: 15px;
138                text-align: center;
139                /* Move to top using negative margin - simple and clean */
140                margin-top: -10px;
141                position: relative;
142                z-index: 2;                
143                padding: 10px 0;
144            }
145        }
146			
147           /* Mobile responsive - single column layout */
148            @media (max-width: 768px) {
149                .product-specifications {
150                    padding: 5px;
151                    margin: 15px 0;                    
152                    border: 1px solid #ddd;
153                }
154                
155                .product-specifications h2 {
156                    font-size: 15px;
157                    margin-bottom: 15px;
158                    text-transform: none;
159                    color: #333;
160                }
161                
162                .spec-container {
163                    flex-direction: column;
164                    gap: 0;
165                }
166                
167                .spec-image {
168                    display: none;
169                }
170                
171                .spec-grid {
172                    display: block;
173                    gap: 0;
174                }
175                
176                .spec-item {
177                    display: flex;
178                    padding: 10px 0;
179                    border-bottom: 1px solid #ddd;
180                    gap: 15px;
181                    align-items: flex-start;
182                }
183                
184                .spec-item:last-child {
185                    border-bottom: none;
186                }
187                
188                .spec-item .spec-label {
189                    font-weight: bold;
190                    color: #666;
191                    font-size: 14px;
192                    padding: 0;
193                    flex: 0 0 140px;
194                    text-align: left;
195                    line-height: 1.3;
196                }
197                
198                .spec-item .spec-value {
199                    word-wrap: break-word;
200                    word-break: break-word;
201                    text-align: left;
202                    flex: 1;
203                    min-width: 0;
204                    font-weight: normal;
205                    color: #333;
206                    font-size: 14px;
207                    padding: 0;
208                    line-height: 1.3;
209                }
210                
211                /* CSS class-based approach for server-side detection */
212                .spec-item.long-text {
213                    flex-direction: column;
214                    gap: 5px;
215                    padding: 12px 0;
216                }
217                
218                .spec-item.long-text .spec-label {
219                    flex: none;
220                    width: 100%;
221                    margin-bottom: 5px;
222                }
223                
224                .spec-item.long-text .spec-value {
225                    text-align: left;
226                    width: 112%;
227                    flex: none;
228                    margin: 0;
229                    padding: 0;
230                }
231                
232                .spec-item::after {
233                    display: none;
234                }
235            }			
236
237            /*image Modal*/
238        .image-container {
239            display: block;
240            float: left;
241            margin-bottom: 20px;
242            max-width: 180px; /* Constrain width to prevent pushing content */
243        }
244
245        .image-item {
246            display: block; /* Stack vertically instead of inline-block */
247            margin-bottom: 10px; /* Add space between stacked images */            
248            /*border-radius: 5px;*/
249            overflow: hidden;
250            cursor: pointer;
251            transition: transform 0.2s ease;
252            position: relative; /* For magnifier overlay */
253        }
254
255        .image-item:last-child {
256            margin-bottom: 0; /* Remove margin from last image */
257        }
258
259        .image-item:hover {
260            transform: scale(1.05);
261        }
262
263        .image-item img {
264            display: block;
265            width: 150px!important;
266            height: 170px;
267            object-fit: cover;
268            margin-bottom: 5px!important;
269        }
270
271        /* Magnifier overlay */
272        /* Custom magnifier icon overlay */
273        .image-item::after {
274            content: "";
275            position: absolute;
276            top: 8px;
277            left: 8px;
278            width: 20px;
279            height: 20px;
280            background-image: url('/gui/i/magnifier4.png');
281            background-size: contain;
282            background-repeat: no-repeat;
283            background-position: center;
284            opacity: 0.8;
285            transition: opacity 0.3s ease;
286            pointer-events: none;
287        }
288
289        .image-item::before {
290            display: none; /* Remove the separate handle element */
291        }
292
293        .image-item:hover::after {
294            opacity: 1; /* Keep same opacity on hover */
295        }
296
297        /* Modal styles */
298        .modal {
299            display: none;
300            position: fixed;
301            top: 0;
302            left: 0;
303            width: 100%;
304            height: 100%;
305            background-color: rgba(0, 0, 0, 0.9);
306            z-index: 1000;
307        }
308
309        .modal-content {
310            position: relative;
311            width: 100%;
312            height: 100%;
313            display: flex;
314            justify-content: center;
315            align-items: center;
316            overflow: hidden;
317        }
318
319        .modal img {
320            max-width: 90vw;
321            max-height: 90vh;
322            border-radius: 5px;
323            transition: transform 0.3s ease;
324            cursor: zoom-in;
325            transform-origin: center;
326        }
327
328        .modal img.zoomed {
329            cursor: zoom-out;
330        }
331
332        .nav-arrow {
333            position: absolute;
334            top: 50%;
335            transform: translateY(-50%);
336            font-size: 3rem;
337            color: white;
338            cursor: pointer;
339            user-select: none;
340            background: rgba(0, 0, 0, 0.5);
341            padding: 10px 15px;
342            border-radius: 5px;
343            transition: background 0.3s ease;
344        }
345
346        .nav-arrow:hover {
347            background: rgba(0, 0, 0, 0.8);
348        }
349
350        .nav-arrow.prev {
351            left: 20px;
352        }
353
354        .nav-arrow.next {
355            right: 20px;
356        }
357
358        .close-btn {
359            position: absolute;
360            top: 20px;
361            right: 20px;
362            font-size: 2.5rem;
363            color: white;
364            cursor: pointer;
365            user-select: none;
366            background: rgba(0, 0, 0, 0.5);
367            padding: 5px 12px;
368            border-radius: 5px;
369            transition: background 0.3s ease;
370        }
371
372        .close-btn:hover {
373            background: rgba(0, 0, 0, 0.8);
374        }
375
376        .zoom-controls {
377            position: absolute;
378            bottom: 30px;
379            left: 50%;
380            transform: translateX(-50%);
381            display: flex;
382            gap: 10px;
383            background: rgba(0, 0, 0, 0.7);
384            padding: 10px;
385            border-radius: 25px;
386        }
387
388        .zoom-btn {
389            background: rgba(255, 255, 255, 0.2);
390            border: 1px solid rgba(255, 255, 255, 0.3);
391            color: white;
392            padding: 8px 16px;
393            border-radius: 20px;
394            cursor: pointer;
395            font-size: 0.9rem;
396            user-select: none;
397            transition: all 0.3s ease;
398            min-width: 60px;
399        }
400
401        .zoom-btn:hover {
402            background: rgba(255, 255, 255, 0.4);
403            transform: translateY(-2px);
404        }
405
406        .zoom-info {
407            position: absolute;
408            top: 20px;
409            left: 20px;
410            color: white;
411            background: rgba(0, 0, 0, 0.5);
412            padding: 8px 12px;
413            border-radius: 5px;
414            font-size: 0.9rem;
415        }
416
417    </style>
418    <!--[if lt IE 9]>
419		<link rel="stylesheet" href="/gui/css/ie.css" />
420		
420<script type="text/javascript" src="/gui/js/vendor/respond.min.js"></script>
420
421	<![endif]-->
422    <!--[if IE 9]>
423		<link rel="stylesheet" href="/gui/css/ie9.css" />
424	<![endif]-->
425    
425<script src="//use.typekit.net/qcc0noq.js"></script>
425
426    
426<script>try { Typekit.load(); } catch (e) { }</script>
426
427    
428    
429<!-- Consent mode v2 default script -->
430<script data-cookieconsent="ignore">
431    window.dataLayer = window.dataLayer || [];
432    function gtag() {
433        dataLayer.push(arguments);
434    }
435    gtag('consent', 'default', {
436        'ad_personalization': 'denied',
437        'ad_storage': 'denied',
438        'ad_user_data': 'denied',
439        'analytics_storage': 'denied',
440        'functionality_storage': 'denied',
441        'personalization_storage': 'denied',
442        'security_storage': 'granted',
443        'wait_for_update': 500,
444    });
445    gtag("set", "ads_data_redaction", true);
446    gtag("set", "url_passthrough", false);
447</script>
447
448<!-- Usercentrics script -->
449<script id="usercentrics-cmp" src="https://web.cmp.usercentrics.eu/ui/loader.js" data-draft="true" data-settings-id="b0fh8r7XPLiup6" async=""></script>
449
450<!-- Google Tag Manager -->
451<script>
vendor: 327 bytes, lines 451-455
451(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':
452new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],
453j=d.createElement(s),dl=l!='dataLayer'?'&l='+l:'';j.async=true;j.src=
454'https://www.googletagmanager.com/gtm.js?id='+i+dl;f.parentNode.insertBefore(j,f);
455})(window,document,'script','dataLayer','
455GTM-WC23RQ4
vendor: 3 bytes, line 455
455');
455</script>
455
456<!-- End Google Tag Manager --><meta name="description" content="Benders är idag en av de ledande nordiska leverantörerna av produkter i natursten, betong och lertegel. Vi har ett brett utbud och erbjuder produkter inom sortimenten Tak, Mark, Natursten, Infrastruktur, Grund och Vägg." /></head>
457<body class="">
458    <div id="body" data-lang="SE">
459        
460
461        <div id="header" role="banner">
462            <div class="container">
463                <div id="skip">
464                    <a href="#content-primary">Hoppa till innehåll</a>
465                </div>
466                <div id="logo">
467                    <a href="/" title="Ga till webbplatsens startsida">
468                        <img src="/gui/i/logo.png" alt="Benders" />
469                    </a>
470                </div>
471                
472                        <div class="nav-supp">
473                            <h2 class="structural">Hjälplänkar:</h2>
474                            <ul>
475                                
476        <li class="markets" data-has-children="true">
477        <a href="#">Country (Sverige)</a>
478        <ul>
479    
480        <li class="two"><img src="/gui/i/flags/se.png" alt="Default (Sweden North-East)" /><ul><li><a href="https://www.benders.se/en-gb/?market=DEFAULT">English </a></li><li><a href="https://www.benders.se/?market=DEFAULT">Svenska </a></li></ul></li>
481    
482        <li><img src="/gui/i/flags/de.png" alt="Germany" /><a href="https://www.benders.se/de-de/?market=WDEGE">Deutsch </a></li>
483    
484        <li><img src="/gui/i/flags/ee.png" alt="Estonia" /><a href="https://www.benders.se/et-ee/?market=WEEGE">Eesti </a></li>
485    
486        <li><img src="/gui/i/flags/fi.png" alt="Finland" /><a href="https://www.benders.se/fi-fi/?market=WFIGE">Suomi </a></li>
487    
488        <li><img src="/gui/i/flags/lt.png" alt="Lithuanian" /><a href="https://www.benders.se/lt-lt/?market=WLIGE">Lietuvių </a></li>
489    
490        <li><img src="/gui/i/flags/no.png" alt="Norway Kongsvinger" /><a href="https://www.benders.se/nb-no/?market=WNOKV">Norsk, bokmål </a></li>
491    
492
493        
494            <li>
495                
496                    <img src="/gui/i/flags/lv.png" alt="Latvijas" />
497                
498                <a href="/lv-lv/" target="_self">Latvijas</a>
499            </li>
500        
501            <li>
502                
503                    <img src="/gui/i/flags/cs.png" alt="Čeština" />
504                
505                <a href="http://www.ldevelop.cz/" target="_blank">Čeština</a>
506            </li>
507        
508            <li>
509                
510                    <img src="/gui/i/flags/da.png" alt="Dansk" />
511                
512                <a href="http://www.bmc-danmark.com/" target="_blank">Dansk</a>
513            </li>
514        
515            <li>
516                
517                    <img src="/gui/i/flags/gr.png" alt="ελληνικά" />
518                
519                <a href="http://www.tziotzios.gr/" target="_blank">ελληνικά</a>
520            </li>
521        
522            <li>
523                
524                    <img src="/gui/i/flags/pl.png" alt="Polski" />
525                
526                <a href="http://bauart.pl/benders-polska" target="_blank">Polski</a>
527            </li>
528        
529            <li>
530                
531                    <img src="/gui/i/flags/nl.png" alt="Nederland" />
532                
533                <a href="https://www.atlanticadvies.nl/dak/" target="_blank">Nederland</a>
534            </li>
535        
536            <li>
537                
538                    <img src="/gui/i/flags/be.png" alt="België" />
539                
540                <a href="http://betondakpannen.be/" target="_blank">België</a>
541            </li>
542        
543
544        </ul>
545        </li>
546    
547                                <ul><li><a href="/sok-aterforsaljare/">S&#246;k &#229;terf&#246;rs&#228;ljare</a></li><li><a target="_blank" href="https://portal.benders.se/login">Kundportal</a></li><li><a href="https://bendersbyggkraft.se/">Benders Byggkraft</a></li></ul>
548
549                                
550                            </ul>
551
552                            
553
554                            
555                            <h2 class="structural">Verktyg</h2>
556                            <ul class="tools">
557                                
558                                    <li><a class="search" href="/sok/">Sök</a></li>
559                                
560                                
561                            </ul>
562                        </div>
563                    
564                <div class="nav-main cf" role="navigation">
565                    
566		<ul>
567	
568			<li data-has-children="true"><a href="/sortiment/"><span>Sortiment</span></a>
569				
570						<ul>
571					
572						<li>
573							<a href="/sortiment/tak/">
574								<img src="/filtered/2408/rszww340h300-60/meny-sortiment-tak170x150-57556447-rszww340h300-60.jpg" height="150" width="170" alt="Ett vitt hus med Benders takpannor på." />
575								<div>
576                                <strong>Tak</strong>
577								<span>Takpannor i betong och lera för snygga och funktionella tak</span>
578								</div>
579							</a>
580						</li>
581					
582						<li>
583							<a href="/sortiment/mark/">
584								<img src="/filtered/2407/rszww340h300-60/meny-sortiment-mark170x150-1103800415-rszww340h300-60.jpg" height="150" width="170" alt="Trädgård med murar, trappa, trädgårdsgång och dekormaterial." />
585								<div>
586                                <strong>Mark</strong>
587								<span>Marknadens bredaste utbud av produkter för din utemiljö</span>
588								</div>
589							</a>
590						</li>
591					
592						<li>
593							<a href="/sortiment/natursten/">
594								<img src="/filtered/2406/rszww340h300-60/meny-sortiment-natursten170x150-1668843359-rszww340h300-60.jpg" height="150" width="170" alt="Rubbelmur i Bohusgranit." />
595								<div>
596                                <strong>Natursten</strong>
597								<span>Exklusiva granit- och skifferprodukter med naturlig och rustik känsla</span>
598								</div>
599							</a>
600						</li>
601					
602						<li>
603							<a href="/sortiment/infrastruktur/">
604								<img src="/filtered/2411/rszww340h300-60/meny-sortiment-infrastruktur170x150--2017998497-rszww340h300-60.jpg" height="150" width="170" alt="Bender Spikma Mittstöd avgränsar trafikmiljö." />
605								<div>
606                                <strong>Infrastruktur</strong>
607								<span>Produkter för bl.a. väg- och järnvägsmiljöer</span>
608								</div>
609							</a>
610						</li>
611					
612						<li>
613							<a href="/sortiment/va-system/">
614								<img src="/filtered/23922/rszww340h300-60/meny-sortiment-va170x150--1262476833-rszww340h300-60.jpg" height="150" width="170" alt="Bender Betongrör staplade på en lagergård." />
615								<div>
616                                <strong>VA-System</strong>
617								<span>Beständiga lösningar och produkter för vatten- och avloppssystem</span>
618								</div>
619							</a>
620						</li>
621					
622						<li>
623							<a href="/sortiment/grund/">
624								<img src="/filtered/2409/rszww340h300-60/meny-sortiment-grund170x150--341119777-rszww340h300-60.jpg" height="150" width="170" alt="Ett hörn på Bender Sockelelement vid husbyggnation." />
625								<div>
626                                <strong>Grund</strong>
627								<span>Marknadsledande inom grund med kompletta grundpaket, egentillverkade sockelelement, Albabalk, cellplast och Modulgrund</span>
628								</div>
629							</a>
630						</li>
631					
632						<li>
633							<a href="/sortiment/murblock/">
634								<img src="/filtered/31063/rszww340h300-60/meny-sortiment-murblock-170x150-993136480-rszww340h300-60.jpg" height="150" width="170" alt="Vitt hus byggt med murblock och med Benders svarta takpannor på taket." />
635								<div>
636                                <strong>Murblock</strong>
637								<span>Klassiska och ergonomiska murblock för murning av bl.a. grunder och väggar</span>
638								</div>
639							</a>
640						</li>
641					
642						<li>
643							<a href="/sortiment/dorr/">
644								<img src="/filtered/37034/rszww340h300-60/meny-sortiment-dorr-170x150--755506152-rszww340h300-60.jpg" height="150" width="170" />
645								<div>
646                                <strong>Dörr</strong>
647								<span>Brett utbud av ståldörrar</span>
648								</div>
649							</a>
650						</li>
651					
652						</ul>
653					
654			</li>
655	
656			<li><a href="/inspiration/"><span>Inspiration</span></a>
657				
658			</li>
659	
660			<li><a href="/arkitekt/"><span>
660Arkitekt</span></a>
661				
662			</li>
663	
664			<li><a href="/om-oss/"><span>Om oss</span></a>
665				
666			</li>
667	
668			<li><a href="/support/kontakt/"><span>Support</span></a>
669				
670			</li>
671	
672			<li><a href="/hallbarhet/"><span>H&#229;llbarhet</span></a>
673				
674			</li>
675	
676		</ul>
677	
678                </div>
679            </div>
680        </div>
681
682        
683            <form role="search" method="get" action="/sok/" id="search">
684                <div class="container">
685                    <label for="searchtext" class="structural"></label>
686                    <input type="search" id="searchtext" name="q" placeholder="Ange sökord" />
687                    <button type="submit">
688                        <img src="/gui/i/icon-search.png" width="24" height="24" alt="Sök" />
689                    </button>
690                </div>
691            </form>
692        
693
694        <div id="main" class="">
695            
696            
697	
698	
699		<div class="section full">
700			<div class="hero flexslider">
701				<ul class="slides"><li class="slide">
702
703<div class="s-i ">
704
705    <img src="/filtered/37549/rszww3200h920-60/header-dorr-nytt-sortiment-1600x460--1943244006-rszww3200h920-60.jpg" height="460" width="1600" data-id="37549" loading="lazy" />
706
707    
708</div>
709
710<div class="s-w">
711    <div class="s-c ">
712        <div class="s-b">
713            
714            <h2>Välkommen vårt åttonde sortiment - Dörr</h2>
715            
716
717            
718                <a href="/sortiment/dorr/" class="button">Se sortimentet h&#228;r. </a>
719            
720        </div>
721    </div>
722</div>
723</li><li class="slide">
724
725<div class="s-i ">
726
727    <img src="/filtered/36829/rszww3200h920-60/bildspel-evozero-folder-1600x460-1767671003-rszww3200h920-60.jpg" height="460" width="1600" data-id="36829" loading="lazy" alt="Fyra stycken silos vid Benders fabrik i Uddevalla." />
728
729    
730</div>
731
732<div class="s-w">
733    <div class="s-c ">
734        <div class="s-b">
735            
736            <h2>HÃ¥llbara produkter med EvoZero</h2>
737            
738
739            
740                <a href="https://issuu.com/benders/docs/se-evozero-folder-2025-7-hu?fr=xKAE9_zMzMw" class="button">L&#228;s mer om EvoZero i v&#229;r folder!</a>
741            
742        </div>
743    </div>
744</div>
745</li><li class="slide">
746
747<div class="s-i ">
748
749    <img src="/filtered/34282/rszww3200h920-60/header-newlinesittbank-1600x460-1545629019-rszww3200h920-60.jpg" height="460" width="1600" data-id="34282" loading="lazy" alt="Stilren sittbänk i betong och trä i offentlig miljö." />
750
751    
752</div>
753
754<div class="s-w">
755    <div class="s-c ">
756        <div class="s-b">
757            <p class="tagline">Skapar stilren &amp; säker miljö</p>
758            <h2>Nord sittbänk</h2>
759            
760
761            
762                <a href="/sortiment/infrastruktur/barriarer/betongmobler/" class="button">Till betongm&#246;bler</a>
763            
764        </div>
765    </div>
766</div>
767</li><li class="slide">
768
769<div class="s-i ">
770
771    <img src="/filtered/32682/rszww3200h920-60/691a8243red1600x460-1043995994-rszww3200h920-60.jpg" height="460" width="1600" data-id="32682" loading="lazy" alt="Sicuras trafiksäkra planteringslådor med vårblommor, i stadsmiljö." />
772
773    
774</div>
775
776<div class="s-w">
777    <div class="s-c ">
778        <div class="s-b">
779            
780            <h2>Sicura – Benders trafiksäkra möbelserie</h2>
781            
782
783            
784                <a href="/om-oss/artikelarkiv/2024/sicura-mobelserie/" class="button">L&#228;s mer</a>
785            
786        </div>
787    </div>
788</div>
789</li></ul>
790			</div>
791		</div>
792	
793
794	<div class="section" id="content-primary">
795		<div class="container">
796			<div class="row tile-row"><div class="col col-6">
797	
798
799<div class="m m-tile   m-2x1">
800    <div class="m-w ">
801        
802            <div class="m-i">
803                <img src="/filtered/38422/rszw-60/puff-takpannefabrik-i-edsvara-610x348-1177174134-rszw-60.jpg" data-id="38422" loading="lazy" />
804            </div>
805        
806        
807        <div class="m-c">
808            
809            <a class="m-b" href="/om-oss/nyheter/2026/benders-bygger-europas-modernaste-takpannefabrik/">
810                
811                <h2>Benders tar första spadtaget – bygger Europas modernaste takp
811annefabrik</h2>
812                
813            </a>
814            
815        </div>
816        
817    </div>
818</div>
819
820</div><div class="col-3 grid-size"></div><div class="col col-6">
821	
822
823<div class="m m-tile   m-2x1">
824    <div class="m-w ">
825        
826            <div class="m-i">
827                <img src="/filtered/38954/rszw-60/puff-bendersforvarvartimrabetong-610x348-1620672083-rszw-60.jpg" data-id="38954" loading="lazy" />
828            </div>
829        
830        
831        <div class="m-c">
832            
833            <a class="m-b" href="/om-oss/nyheter/2026/benders-forvarvar-timra-betong/">
834                
835                <h2>Benders Sverige AB förvärvar Timrå Betong</h2>
836                
837            </a>
838            
839        </div>
840        
841    </div>
842</div>
843
844</div><div class="col-3 grid-size"></div><div class="col col-6">
845	
846
847<div class="m m-tile  m-tile--bg-video m-2x1">
848    <div class="m-w ">
849        
850            <div class="m-i">
851                <img src="/filtered/34469/rszw-60/puff-naturstensfilm-hallbara-610x348-1205292765-rszw-60.jpg" data-id="34469" loading="lazy" alt="Illustration över att Benders Bohusgranit både bryts, produceras, förädlas och transporteras inom Sverige." />
852            </div>
853        
854        
855        <div class="m-c">
856            
857            <a class="m-b" href="https://www.youtube.com/watch?v=NZPLtRgpWWs">
858                <p class="tagline">Se vår naturstensfilm!</p>
859                <h2>En helsvensk natursten helt enkelt</h2>
860                
861            </a>
862            
863        </div>
864        
865    </div>
866</div>
867
868</div><div class="col-3 grid-size"></div><div class="col col-3">
869	
870
871<div class="m m-tile   m-1x1">
872    <div class="m-w ">
873        
874            <div class="m-i">
875                <img src="/filtered/36647/rszw-60/artikel-smart-stadsutveckling-puff-290x348--1760389668-rszw-60.jpg" data-id="36647" loading="lazy" alt="Flera cyklar står parkerade på Benders dränerande marksten Bender Bas Drain fasad." />
876            </div>
877        
878        
879        <div class="m-c">
880            
881            <a class="m-b" href="/om-oss/artikelarkiv/2025/smart-stadsutveckling-for-trygghet-och-miljo/">
882                
883                <h2>Smart stadsutveckling för trygghet och miljö</h2>
884                
885            </a>
886            
887        </div>
888        
889    </div>
890</div>
891
892</div><div class="col-3 grid-size"></div><div class="col col-3">
893	
894
895<div class="m m-tile   m-1x1">
896    <div class="m-w ">
897        
898            <div class="m-i">
899                <img src="/filtered/571/rszw-60/mark-offentlig-miljo290x348-2--1746191138-rszw-60.jpg" data-id="571" loading="lazy" alt="Benders marksten Bender Labyrint Antik leder fram till slänggungorna på Skara Sommarland." />
900            </div>
901        
902        
903        <div class="m-c">
904            
905            <a class="m-b" href="/sortiment/offentliga-miljoer/">
906                
907                <h2>Offentliga miljöer</h2>
908                <div>
909		<p>Idag är Benders en komplett helhetsleverantör för såväl offentliga som privata miljöer</p>
910	</div>
911            </a>
912            
913        </div>
914        
915    </div>
916</div>
917
918</div><div class="col-3 grid-size"></div><div class="col col-6">
919	
920
921<div class="m m-tile   m-2x1">
922    <div class="m-w ">
923        
924            <div class="m-i">
925                <img src="/filtered/34333/rszw-60/puff-film-busshallplatsstod-star-610x348--1856714147-rszw-60.jpg" data-id="34333" loading="lazy" alt="En busshållplats med Bender Busshållplatsstöd Star." />
926            </div>
927        
928        
929        <div class="m-c">
930            
931            <a class="m-b" href="https://www.youtube.com/watch?v=Re3eCDiQs2w">
932                <p class="tagline">INFORMATIONSFILM</p>
933                
934                <div>
935		<h2>Bättre Buss i Bålsta med<br />Busshållplatsstöd Star</h2>
936	</div>
937            </a>
938            
939        </div>
940        
941    </div>
942</div>
943
944</div><div class="col-3 grid-size"></div><div class="col col-6">
945	
946
947<div class="m m-tile   m-2x1">
948    <div class="m-w c1">
949        
950        <div class="m-c">
951            
952            <a class="m-b" href="/support/berakningsprogram/">
953                
954                <h2>Beräkningsprogram</h2>
955                <div>
956		<p>Våra olika beräkningsprogram hjälper dig t.ex. med att beräkna antalet pannor till ditt tak eller murstenar till din mur.&nbsp;</p>
957	</div>
958            </a>
959            
960        </div>
961        
962    </div>
963</div>
964
965</div><div class="col-3 grid-size"></div></div>
966		</div>
967	</div>
968
969	
970		<div class="section alt">
971			<div class="container">
972				<div class="section-intro">
973					<h2>VÃ¥rt sortiment</h2>
974				</div>
975				<div class="row promo-container"><div class="col col-4">
976	
977
978<div class="m m-promo">
979	<a href="/sortiment/tak/" class="m-h">
980		<img src="/filtered/2408/rszww340h300-60/meny-sortiment-tak170x150-57556447-rszww340h300-60.jpg" height="150" width="170" data-id="2408" loading="lazy" alt="Ett vitt hus med Benders takpannor på." />
981        <h3>Tak</h3>
982	</a>
983	
984		<div class="m-c">
985			<p>Takpannor i betong och lera för snygga och funktionella tak</p>
986		</div>
987	
988</div>
989</div><div class="col col-4">
990	
991
992<div class="m m-promo">
993	<a href="/sortiment/mark/" class="m-h">
994		<img src="/filtered/2407/rszww340h300-60/meny-sortiment-mark170x150-1103800415-rszww340h300-60.jpg" height="150" width="170" data-id="2407" loading="lazy" alt="Trädgård med murar, trappa, trädgårdsgång och dekormaterial." />
995        <h3>Mark</h3>
996	</a>
997	
998		<div class="m-c">
999			<p>Marknadens bredaste utbud av produkter för din utemiljö</p>
1000		</div>
1001	
1002</div>
1003</div><div class="col col-4">
1004	
1005
1006<div class="m m-promo">
1007	<a href="/sortiment/natursten/" class="m-h">
1008		<img src="/filtered/2406/rszww340h300-60/meny-sortiment-natursten170x150-1668843359-rszww340h300-60.jpg" height="150" width="170" data-id="2406" loading="lazy" alt="Rubbelmur i Bohusgranit." />
1009        <h3>Natursten</h3>
1010	</a>
1011	
1012		<div class="m-c">
1013			<p>Exklusiva granit- och skifferprodukter med naturlig och rustik känsla</p>
1014		</div>
1015	
1016</div>
1017</div><div class="col col-4">
1018	
1019
1020<div class="m m-promo">
1021	<a href="/sortiment/infrastruktur/" class="m-h">
1022		<img src="/filtered/2411/rszww340h300-60/meny-sortiment-infrastruktur170x150--2017998497-rszww340h300-60.jpg" height="150" width="170" data-id="2411" loading="lazy" alt="Bender Spikma Mittstöd avgränsar trafikmiljö." />
1023        <h3>Infrastruktur</h3>
1024	</a>
1025	
1026		<div class="m-c">
1027			<p>Produkter för bl.a. väg- och järnvägsmiljöer</p>
1028		</div>
1029	
1030</div>
1031</div><div class="col col-4">
1032	
1033
1034<div class="m m-promo">
1035	<a href="/sortiment/va-system/" class="m-h">
1036		<img src="/filtered/23922/rszww340h300-60/meny-sortiment-va170x150--1262476833-rszww340h300-60.jpg" height="150" width="170" data-id="23922" loading="lazy" alt="Bender Betongrör staplade på en lagergård." />
1037        <h3>VA-System</h3>
1038	</a>
1039	
1040		<div class="m-c">
1041			<p>Beständiga lösningar och produkter för vatten- och avloppssystem</p>
1042		</div>
1043	
1044</div>
1045</div><div class="col col-4">
1046	
1047
1048<div class="m m-promo">
1049	<a href="/sortiment/grund/" class="m-h">
1050		<img src="/filtered/2409/rszww340h300-60/meny-sortiment-grund170x150--341119777-rszww340h300-60.jpg" height="150" width="170" data-id="2409" loading="lazy" alt="Ett hörn på Bender Sockelelement vid husbyggnation." />
1051        <h3>Grund</h3>
1052	</a>
1053	
1054		<div class="m-c">
1055			<p>Marknadsledande inom grund med kompletta grundpaket, egentillverkade sockelelement, Albabalk, cellplast och Modulgrund</p>
1056		</div>
1057	
1058</div>
1059</div><div class="col col-4">
1060	
1061
1062<div class="m m-promo">
1063	<a href="/sortiment/murblock/" class="m-h">
1064		<img src="/filtered/31063/rszww340h300-60/meny-sortiment-murblock-170x150-993136480-rszww340h300-60.jpg" height="150" width="170" data-id="31063" loading="lazy" alt="Vitt hus byggt med murblock och med Benders svarta takpannor på taket." />
1065        <h3>Murblock</h3>
1066	</a>
1067	
1068		<div class="m-c">
1069			<p>Klassiska och ergonomiska murblock för murning av bl.a. grunder och väggar</p>
1070		</div>
1071	
1072</div>
1073</div><div class="col col-4">
1074	
1075
1076<div class="m m-promo">
1077	<a href="/sortiment/dorr/" class="m-h">
1078		<img src="/filtered/37034/rszww340h300-60/meny-sortiment-dorr-170x150--755506152-rszww340h300-60.jpg" height="150" width="170" data-id="37034" loading="lazy" />
1079        <h3>Dörr</h3>
1080	</a>
1081	
1082		<div class="m-c">
1083			<p>Brett utbud av ståldörrar</p>
1084		</div>
1085	
1086</div>
1087</div></div>
1088				<div class="button-bar">
1089	
1090<a class="button" href="/sortiment/"><span>Visa sortiment</span></a>
1091</div>
1092			</div>
1093		</div>
1094	
1095
1096	<div class="section full"><div class="m m-feature right cf">
1097	
1098
1099<div class="m-i">
1100	<img src="/filtered/538/rszww1484h838-60/natursten-kampanj768x425-348751078-rszww1484h838-60.jpg" height="419" width="742" data-id="538" loading="lazy" alt="Flera hus på bergsklippor vid havet." />
1101</div>
1102
1103<div class="container">
1104	<div class="m-c c4">
1105		<h2>Granit - ett material med eviga värden</h2>
1106		
1107		<div>
1108		<p>Granit är Sveriges vanligaste bergart och återfinns i hela landet. Bergarten är extremt stark och tål såväl slag som värme betydligt bättre än de flesta andra stensorter och material. Dess utseende och egenskaper växlar med skiftande kornstorlek och färg beroende på var i världen den bryts.&nbsp;</p>
1109	</div>
1110
1111		
1112			<a href="/om-oss/artikelarkiv/2016/granit-ett-material-med-eviga-varden/" class="button">L&#228;s mer</a>
1113		
1114	</div>
1115</div>
1116</div></div>
1117
1118	
1119		<div class="section full">
1120			<div class="m m-stub">
1121				<div Class="m-i">
1122					<img src="/filtered/2655/rszww2560h880-60/benders-fabrik-edsvara1600x396-509894502-rszww2560h880-60.jpg" height="440" width="1280" data-id="2655" loading="lazy" alt="Benders fabrik och huvudkontor i Edsvära. Fabriken ligger bredvid damm och grönområde. " />
1123					<span class="quality-stamp">Guaranteed Benders Quality Since 1960</span>
1124				</div>
1125				<div class="m-c container">
1126	<h2><span data-mce-mark="1">Välkommen till Benders</span></h2>
1127<p><span>Allt sedan starten år 1960 har vår ambition varit att tillfredsställa våra kunders behov. Vårt företagande präglas av ett lokalt affärsmannaskap, som tillsammans med lyhördhet är en grund för långa och starka relationer med både kunder, leverantörer och inte minst personal. En positiv utveckling </span><span>sedan dess </span><span>har bidragit till att Benders idag arbetar inom f</span><span>lera</span><span> skilda affärsområden och är en av de marknadsledande producenterna av betong- och naturstensprodukter i Norden. Samtidigt blir andelarna på de nya marknaderna ute i Europa större och större och våra sortiment inom byggprodukter och byggsystem växer för varje säsong.</span></p>
1128</div>
1129			</div>
1130		</div>
1131	
1132
1133	
1134		<div class="section features alt">
1135		    <div class="row start-promo-row">
1136			    <div class="container"><div class="col col-4">
1137	
1138
1139<div class="m m-promo">
1140    
1141<a href="/takgaranti/" class="m-h">
1142			<img src="/gui/i/icon-30.svg" alt="" />
1143		
1144		<h3>Trettio år takgaranti</h3>
1145</a>
1146
1147	<div class="m-c">
1148		<div>
1149		<p>Vi lämnar 30 års garanti på betongtakpannor vid köp av ett komplett tak med Benders originaltillbehör, gällande hållfasthet, vattentäthet och frostbeständighet.</p>
1150	</div>
1151	</div>
1152</div>
1153</div><div class="col col-4">
1154	
1155
1156<div class="m m-promo">
1157    
1158<a href="/materialgaranti/" class="m-h">
1159			<img src="/gui/i/icon-15.svg" alt="" />
1160		
1161		<h3>Tio år materialgaranti</h3>
1162</a>
1163
1164	<div class="m-c">
1165		<div>
1166		<p>Våra sortiment håller en hög och jämn kvalitet som tål många års slitage under tuffa förhållanden. På våra egenproducerade produkter får du hela 10 års garanti.</p>
1167	</div>
1168	</div>
1169</div>
1170</div><div class="col col-4">
1171	
1172
1173<div class="m m-promo">
1174    
1175<div class="m-h">
1176			<img src="/gui/i/icon-worldwide.svg" alt="" />
1177		
1178		<h3>Effektiv logistik</h3>
1179</div>
1180
1181	<div class="m-c">
1182		<div>
1183		<p>Vi har alltid stora lager för snabba leveranser. Vår erfarenhet av logistik ger möjlighet till effektiva, säkra och miljömässiga transporter.</p>
1184	</div>
1185	</div>
1186</div>
1187</div></div>
1188             </div>
1189		</div>
1190	
1191
1192        </div>
1193
1194        
1195            <div class="section divide">
1196                <div class="inspiration-row">
1197                    <div class="container"><div class="col col-3">
1198	
1199
1200<div class="m m-tile m-16x10">
1201	<div class="m-w">
1202		<div class="m-i">
1203			<img src="/filtered/2304/rszww580h326-60/tips-sok-aterforsaljare280x163-1125682406-rszww580h326-60.jpg" height="163" width="290" data-id="2304" loading="lazy" alt="Två personer står och diskuterar om en takpanna." />
1204		</div>
1205		<div class="m-c">
1206			<a class="m-b" href="/sok-aterforsaljare/">
1207				<h3>Sök återförsäljare</h3>
1208			</a>
1209		</div>
1210	</div>
1211</div>
1212</div><div class="col col-3">
1213	
1214
1215<div class="m m-tile m-16x10">
1216	<div class="m-w">
1217		<div class="m-i">
1218			<img src="/filtered/26474/rszww580h326-60/tips-inspiration-2022-280x163--1684834074-rszww580h326-60.jpg" height="163" width="290" data-id="26474" loading="lazy" alt="Trädgårdsmiljö med plattor, kantsten och blommor framför ett hus." />
1219		</div>
1220		<div class="m-c">
1221			<a class="m-b" href="/inspiration/">
1222				<h3>Inspireras</h3>
1223			</a>
1224		</div>
1225	</div>
1226</div>
1227</div><div class="col col-3">
1228	
1229
1230<div class="m m-tile m-16x10">
1231	<div class="m-w">
1232		<div class="m-i">
1233			<img src="/filtered/2311/rszww580h326-60/tips-behover-du-hjalp280x163-2089847526-rszww580h326-60.jpg" height="163" width="290" data-id="2311" loading="lazy" alt="Två personer kollar på en karta och funderar på vilken väg de ska gå." />
1234		</div>
1235		<div class="m-c">
1236			<a class="m-b" href="/support/vanliga-fragor/">
1237				<h3>Behöver du hjälp?</h3>
1238			</a>
1239		</div>
1240	</div>
1241</div>
1242</div><div class="col col-3">
1243	
1244
1245<div class="m m-tile m-16x10">
1246	<div class="m-w">
1247		<div class="m-i">
1248			<img src="/filtered/2315/rszww580h326-60/tips-dokument280x163--1634334618-rszww580h326-60.jpg" height="163" width="290" data-id="2315" loading="lazy" alt="Benders broschyrer och dokument ligger i en hög." />
1249		</div>
1250		<div class="m-c">
1251			<a class="m-b" href="/support/dokument/">
1252				<h3>Dokument</h3>
1253			</a>
1254		</div>
1255	</div>
1256</div>
1257</div></div>
1258                </div>
1259            </div>
1260        
1261
1262        <div id="footer" role="contentinfo">
1263            <div class="container">
1264	
1265
1266<div id="go-to-top"><a href="#">Topp</a></div>
1267<div class="row">
1268	<div class="col col-2">
1269		<h2>
1270			<span>Sortiment</span>
1271		</h2>
1272		<ul><li><a href="/sortiment/tak/">Tak</a></li><li><a href="/sortiment/mark/">Mark</a></li><li><a href="/sortiment/natursten/">Natursten</a></li><li><a href="/sortiment/infrastruktur/">Infrastruktur</a></li><li><a href="/sortiment/va-system/">VA-System</a></li><li><a href="/sortiment/grund/">Grund</a></li><li><a href="/sortiment/murblock/">Murblock</a></li><li><a href="/sortiment/dorr/">D&#246;rr</a></li></ul>
1273		
1274	</div>
1275	<div class="col col-2">
1276		<h2>
1277			<span>Benders</span>
1278		</h2>
1279		<ul><li><a href="/om-oss/nyheter/">Nyheter</a></li><li><a href="/om-oss/artikelarkiv/">Artikelarkiv</a></li><li><a target="_blank" href="https://issuu.com/benders/docs/foretagspresentation-2026?fr=sMTFmYzg0MjE3NTc">F&#246;retagspresentation</a></li><li><a href="https://issuu.com/benders/docs/benders-retursystem-2021-lu?fr=sN2RiNTE4OTgwMA">Benders Retursystem</a></li><li><a href="/kma/">KMA - Kvalitet, Milj&#246; och Arbetsmilj&#246;</a></li><li><a href="/visselblasning/">Visselbl&#229;sning</a></li><li><a href="/lediga-tjanster/">Lediga tj&#228;nster</a></li></ul>
1280		
1281	</div>
1282	<div class="col col-2">
1283		<h2>
1284			<span>Support</span>
1285		</h2>
1286		<ul><li><a href="/support/vanliga-fragor/">Vanliga fr&#229;gor</a></li><li><a href="/support/kontakt/">Kontakt</a></li><li><a href="/support/dokument/">Dokument</a></li><li><a href="/support/broschyrer/">Broschyrer</a></li><li><a href="/support/monteringsfilmer/">Monteringsfilmer</a></li><li><a href="/support/berakningsprogram/">Ber&#228;kningsprogram</a></li><li><a href="/press/">Press</a></li><li><a href="/for-leverantorer/">Leverant&#246;r</a></li></ul>
1287		
1288	</div>
1289	<div class="col col-4">
1290		<div class="contact">
1291		<h2>Kontakt</h2>
1292<p>Tel 010-888 00 00</p>
1293<p>E-post <a href="mailto:[email protected]">[email protected]</a></p>
1294	</div>
1295		<address><p><strong>Benders Sverige AB</strong> <span>Box 20</span> <span>535 21 Kvänum</span></p></address>
1296	</div>
1297	<div class="col col-2">
1298		<h2>Sök återförsäljare</h2>
1299<p>Närmsta återförsäljare där du kan hitta Benders produktutbud.&nbsp;</p>
1300<p><a class="button" href="/sok-aterforsaljare/">Sök åf</a></p>
1301	</div>
1302</div>
1303</div>
1304            <div class="footer-info">
1305                <div class="container">
1306                    <div>
1307	<p>© 2019 Benders Sverige AB <a href="/anvandarvillkor/">Användarvillkor</a><a href="/integritetspolicy/">Integritetspolicy</a><a href="/webbplatskarta/">Webbplatskarta</a></p>
1308<p>Vi reserverar oss för färgavvikelser i våra bilder. Skärmar visar färger olika, vilket medför att våra bilder kan bli missvisande. Besök alltid en återförsäljare för exakt färggivning.</p>
1309</div>
1310
1311                    
1312                            <ul class="social-links">
1313                        
1314                            <li><a class="instagram" href="https://www.instagram.com/benderssverige/">Instagram</a></li>
1315                        
1316                            <li><a class="linkedin" href="https://www.linkedin.com/company/benders-sverige-ab">LinkedIn</a></li>
1317                        
1318                            <li><a class="facebook" href="https://www.facebook.com/benderssverige/">Facebook</a></li>
1319                        
1320                            <li><a class="youtube" href="https://www.youtube.com/user/benderstv">Youtube</a></li>
1321                        
1322                            </ul>
1323                        
1324
1325                    
1326                </div>
1327            </div>
1328        </div>
1329    </div>
1330
1331    <!-- Modal -->
1332    <div class="modal" id="imageModal">
1333        <div class="modal-content">
1334            <div class="close-btn" id="closeBtn">&times;</div>
1335            <div class="zoom-info" id="zoomInfo">100%</div>
1336            <div class="nav-arrow prev" id="prevBtn">&#10094;</div>
1337            <img id="modalImage" src="" alt="Large View" />
1338            <div class="nav-arrow next" id="nextBtn">&#10095;</div>
1339            <div class="zoom-controls">
1340                <button class="zoom-btn" id="zoomOutBtn">Zooma ut</button>
1341                <button class="zoom-btn" id="resetZoomBtn">Återställ</button>
1342                <button class="zoom-btn" id="zoomInBtn">Zooma in</button>
1343            </div>
1344        </div>
1345    </div>
1346
1347
1348
1349    
1349<script>
1350        // Vanilla JavaScript Image Viewer with Zoom
1351        (function() {
1352            'use strict';
1353            
1354            // Get DOM elements
1355            const modal = document.getElementById('imageModal');
1356            const modalImage = document.getElementById('modalImage');
1357            const closeBtn = document.getElementById('closeBtn');
1358            const prevBtn = document.getElementById('prevBtn');
1359            const nextBtn = document.getElementById('nextBtn');
1360            const zoomInBtn = document.getElementById('zoomInBtn');
1361            const zoomOutBtn = document.getElementById('zoomOutBtn');
1362            const resetZoomBtn = document.getElementById('resetZoomBtn');
1363            const zoomInfo = document.getElementById('zoomInfo');
1364            
1365            // State variables
1366            let currentImageIndex = 0;
1367            let images = [];
1368            let currentContainerImages = []; // Images from the current container only
1369            let currentZoom = 1;
1370            
1371            // Initialize the viewer
1372            function init() {
1373                scanForImages();
1374                setupMutationObserver();
1375                addEventListeners();
1376            }
1377            
1378            // Configuration - Dynamic container detection
1379            // This will automatically find ALL containers that have .image-item elements
1380            const DYNAMIC_DETECTION = true; // Set to true for automatic detection of multiple containers
1381            const FALLBACK_CONTAINER_SELECTOR = '#imageContainer'; // Used only if no containers are found
1382            
1383            function scanForImages() {
1384                let containers = [];
1385                let allImageElements = [];
1386                
1387                // First, try to find .image-container elements (new structure)
1388                const imageContainers = document.querySelectorAll('.image-container');
1389                if (imageContainers.length > 0) {
1390                    containers = Array.from(imageContainers);
1391                    containers.forEach((container) => {
1392                        const imageElements = container.querySelectorAll('.image-item img');
1393                        allImageElements.push(...imageElements);
1394                    });
1395                } else {
1396                    // Fallback: Look for the existing Benders structure
1397                    // Find .m-i containers (model image containers in your HTML)
1398                    const modelContainers = document.querySelectorAll('.m-i');
1399                    if (modelContainers.length > 0) {
1400                        containers = Array.from(modelContainers);
1401                        containers.forEach((container) => {
1402                            const imageElements = container.querySelectorAll('img[data-src]');
1403                            allImageElements.push(...imageElements);
1404                        });
1405                    }
1406                    
1407                    // Also check for direct images with data-src
1408                    if (allImageElements.length === 0) {
1409                        const directImages = document.querySelectorAll('img[data-src]');
1410                        allImageElements = Array.from(directImages);
1411                        // Create virtual containers for direct images
1412                        containers = allImageElements.map(img => img.closest('.m') || img.parentElement);
1413                    }
1414                }
1415                
1416                // Build images array from DOM
1417                images = Array.from(allImageElements).map((img, index) => ({
1418                    element: img,
1419                    src: img.getAttribute('data-src') || img.src,
1420                    id: img.getAttribute('data-id') || `img_${index}`,
1421                    index: index,
1422                    container: img.closest('.image-container') || img.closest('.m') || img.parentElement
1423                }));
1424                
1425                // Add click handlers using event delegation on document body
1426                // Remove any existing global listener
1427                if (window._imageViewerGlobalHandler) {
1428                    document.removeEventListener('click', window._imageViewerGlobalHandler);
1429                }
1430                
1431                // Create new global event handler
1432                const globalClickHandler = (e) => {
1433                    let img = null;
1434                    
1435                    // Check if the clicked element is an image inside .image-item (for Benders structure)
1436                    if (e.target.tagName === 'IMG' && e.target.closest('.image-item')) {
1437                        img = e.target;
1438                    }
1439                    // Also check for images with data-src (fallback structure)
1440                    else if (e.target.tagName === 'IMG' && e.target.hasAttribute('data-src')) {
1441                        img = e.target;
1442                    }
1443                    
1444                    if (img) {
1445                        const imageIndex = images.findIndex(imageData => imageData.element === img);
1446                        if (imageIndex !== -1) {
1447                            e.preventDefault();
1448                            openModal(imageIndex);
1449                        }
1450                    }
1451                };
1452                
1453                document.addEventListener('click', globalClickHandler);
1454                window._imageViewerGlobalHandler = globalClickHandler;
1455                
1456                // Store containers for the mutation observer
1457                window.imageViewerContainers = containers;
1458                
1459                //console.log(`Found ${images.length} images in ${containers.length} containers`);
1460            }
1461            
1462            function setupMutationObserver() {
1463                // Watch for changes in the entire document to catch dynamically added content
1464                const observer = new MutationObserver((mutations) => {
1465                    let shouldRescan = false;
1466                    
1467                    mutations.forEach((mutation) => {
1468                        // Check if new nodes were added
1469                        if (mutation.type === 'childList' && mutation.addedNodes.length > 0) {
1470                            // Check if any added nodes contain images in .image-item or images with data-src
1471                            mutation.addedNodes.forEach((node) => {
1472                                if (node.nodeType === Node.ELEMENT_NODE) {
1473                                    if (node.tagName === 'IMG' && (node.closest('.image-item') || node.hasAttribute('data-src'))) {
1474                                        shouldRescan = true;
1475                                    } else if (node.querySelector && (node.querySelector('.image-item img') || node.querySelector('img[data-src]'))) {
1476                                        shouldRescan = true;
1477                                    }
1478                                }
1479                            });
1480                        }
1481                        
1482                        // Check for style/class changes that might affect visibility
1483                        if (mutation.type === 'attributes' && 
1484                            (mutation.attributeName === 'style' || mutation.attributeName === 'class')) {
1485                            const target = mutation.target;
1486                            if (target.querySelector && target.querySelector('img[data-src]')) {
1487                                shouldRescan = true;
1488                            }
1489                        }
1490                    });
1491                    
1492                    if (shouldRescan) {
1493                        setTimeout(() => {
1494                            //console.log('Rescanning for images due to DOM changes...');
1495                            scanForImages();
1496                        }, 100);
1497                    }
1498                });
1499                
1500                // Start observing the entire document body for dynamic content changes
1501                observer.observe(document.body, {
1502                    childList: true,
1503                    subtree: true,
1504                    attributes: true,
1505                    attributeFilter: ['style', 'class']
1506                });
1507            }
1508            
1509            function addEventListeners() {
1510                // Close modal
1511                closeBtn.addEventListener('click', closeModal);
1512                
1513                // Navigation
1514                prevBtn.addEventListener('click', showPrevious);
1515                nextBtn.addEventListener('click', showNext);
1516                
1517                // Zoom controls
1518                zoomInBtn.addEventListener('click', zoomIn);
1519                zoomOutBtn.addEventListener('click', zoomOut);
1520                resetZoomBtn.addEventListener('click', resetZoom);
1521                
1522                // Modal background click
1523                modal.addEventListener('click', (e) => {
1524                    if (e.target === modal) closeModal();
1525                });
1526                
1527                // Keyboard navigation
1528                document.addEventListener('keydown', handleKeyboard);
1529                
1530                // Double click to zoom
1531                modalImage.addEventListener('dblclick', (e) => {
1532                    e.preventDefault();
1533                    if (currentZoom > 1) {
1534                        resetZoom();
1535                    } else {
1536                        zoomIn();
1537                    }
1538                });
1539
1540                // Single click to zoom
1541                modalImage.addEventListener('click', (e) => {
1542                    e.preventDefault();
1543                    e.stopPropagation(); // Prevent modal from closing
1544                    if (currentZoom >= 5) {
1545                        // At max zoom, zoom out
1546                        zoomOut();
1547                    } else {
1548                        // Not at max zoom, zoom in
1549                        zoomIn();
1550                    }
1551                });
1552
1553                // Mouse wheel zoom
1554                modalImage.addEventListener('wheel', (e) => {
1555                    e.preventDefault();
1556                    if (e.deltaY < 0) {
1557                        zoomIn();
1558                    } else {
1559                        zoomOut();
1560                    }
1561                });
1562                
1563                // Touch events for mobile
1564                let touchStartX = 0;
1565                let touchStartY = 0;
1566                
1567                modalImage.addEventListener('touchstart', (e) => {
1568                    touchStartX = e.touches[0].clientX;
1569                    touchStartY = e.touches[0].clientY;
1570                });
1571                
1572                modalImage.addEventListener('touchend', (e) => {
1573                    const touchEndX = e.changedTouches[0].clientX;
1574                    const touchEndY = e.changedTouches[0].clientY;
1575                    const diffX = touchStartX - touchEndX;
1576                    const diffY = touchStartY - touchEndY;
1577                    
1578                    // Swipe detection
1579                    if (Math.abs(diffX) > Math.abs(diffY) && Math.abs(diffX) > 50) {
1580                        if (diffX > 0) {
1581                            showNext();
1582                        } else {
1583                            showPrevious();
1584                        }
1585                    }
1586                });
1587            }
1588            
1589            function openModal(index) {
1590                currentImageIndex = index;
1591                
1592                // Get the container of the clicked image
1593                const clickedImage = images[index];
1594                const currentContainer = clickedImage.container;
1595                
1596                // Filter images to only those from the same container
1597                currentContainerImages = images.filter(img => img.container === currentContainer);
1598                
1599                // Find the index within the current container's images
1600                const containerIndex = currentContainerImages.findIndex(img => img.element === clickedImage.element);
1601                currentImageIndex = containerIndex;
1602                
1603                resetZoom();
1604                modalImage.src = currentContainerImages[currentImageIndex].src;
1605                
1606                // Show/hide navigation arrows based on number of images
1607                updateNavigationVisibility();
1608                
1609                modal.style.display = 'block';
1610                document.body.style.overflow = 'hidden';
1611            }
1612            
1613            function updateNavigationVisibility() {
1614                if (currentContainerImages.length <= 1) {
1615                    // Hide arrows if only one image or no images
1616                    prevBtn.classList.add('hidden');
1617                    nextBtn.classList.add('hidden');
1618                } else {
1619                    // Show arrows if multiple images
1620                    prevBtn.classList.remove('hidden');
1621                    nextBtn.classList.remove('hidden');
1622                }
1623            }
1624            
1625            function closeModal() {
1626                modal.style.display = 'none';
1627                document.body.style.overflow = '';
1628                resetZoom();
1629            }
1630            
1631            function showPrevious() {
1632                currentImageIndex = (currentImageIndex - 1 + currentContainerImages.length) % currentContainerImages.length;
1633                modalImage.src = currentContainerImages[currentImageIndex].src;
1634                resetZoom();
1635                updateNavigationVisibility();
1636            }
1637            
1638            function showNext() {
1639                currentImageIndex = (currentImageIndex + 1) % currentContainerImages.length;
1640                modalImage.src = currentContainerImages[currentImageIndex].src;
1641                resetZoom();
1642                updateNavigationVisibility();
1643            }
1644            
1645            function updateZoom() {
1646                const transform = `scale(${currentZoom})`;
1647                modalImage.style.transform = transform;
1648                zoomInfo.textContent = Math.round(currentZoom * 100) + '%';
1649                
1650                // Update cursor based on zoom level and behavior
1651                if (currentZoom >= 5) {
1652                    // At max zoom, show zoom-out cursor since next click will zoom out
1653                    modalImage.classList.add('zoomed');
1654                } else {
1655                    // Not at max zoom, show zoom-in cursor since next click will zoom in
1656                    modalImage.classList.remove('zoomed');
1657                }
1658            }
1659            
1660            function zoomIn() {
1661                currentZoom = Math.min(currentZoom * 1.25, 5);
1662                updateZoom();
1663            }
1664            
1665            function zoomOut() {
1666                currentZoom = Math.max(currentZoom / 1.25, 0.25);
1667                updateZoom();
1668            }
1669            
1670            function resetZoom() {
1671                currentZoom = 1;
1672                updateZoom();
1673            }
1674            
1675            function handleKeyboard(e) {
1676                if (modal.style.display !== 'block') return;
1677                
1678                switch(e.key) {
1679                    case 'Escape':
1680                        closeModal();
1681                        break;
1682                    case 'ArrowLeft':
1683                        showPrevious();
1684                        break;
1685                    case 'ArrowRight':
1686                        showNext();
1687                        break;
1688                    case '+':
1689                    case '=':
1690                        zoomIn();
1691                        break;
1692                    case '-':
1693                        zoomOut();
1694                        break;
1695                    case '0':
1696                        resetZoom();
1697                        break;
1698                }
1699            }
1700            
1701            // Public function to manually rescan for images (useful for dynamic content)
1702            window.rescanImages = function() {
1703                scanForImages();
1704            };
1705            
1706            // Function to handle ASP.NET AJAX postbacks
1707            window.handleAspNetAjaxUpdate = function() {
1708                //console.log('ASP.NET AJAX postback detected, rescanning images...');
1709                // Delay the rescan to ensure DOM is fully updated
1710                setTimeout(() => {
1711                    scanForImages();
1712                }, 250);
1713            };
1714            
1715            // Hook into ASP.NET AJAX if available
1716            if (typeof Sys !== 'undefined' && Sys.WebForms && Sys.WebForms.PageRequestManager) {
1717                const prm = Sys.WebForms.PageRequestManager.getInstance();
1718                prm.add_endRequest(function() {
1719                    window.handleAspNetAjaxUpdate();
1720                });
1721                //console.log('Hooked into ASP.NET AJAX PageRequestManager');
1722            }
1723            
1724            // Also hook into jQuery AJAX if available (for custom AJAX calls)
1725            if (typeof $ !== 'undefined') {
1726                $(document).ajaxComplete(function() {
1727                    //console.log('jQuery AJAX complete, rescanning images...');
1728                    setTimeout(() => scanForImages(), 250);
1729                });
1730            }
1731            
1732            // Hook into the showDiv function used by your ASP.NET page
1733            if (typeof showDiv === 'function') {
1734                const originalShowDiv = window.showDiv;
1735                window.showDiv = function(id) {
1736                    const result = originalShowDiv.apply(this, arguments);
1737                    setTimeout(() => {
1738                        //console.log('showDiv called, rescanning images...');
1739                        scanForImages();
1740                    }, 100);
1741                    return result;
1742                };
1743            }
1744            
1745            // Also hook into sku-toggle clicks that show/hide image containers
1746            document.addEventListener('click', function(e) {
1747                if (e.target.classList && e.target.classList.contains('sku-toggle')) {
1748                    setTimeout(() => {
1749                        //console.log('sku-toggle clicked, rescanning images...');
1750                        scanForImages();
1751                    }, 100);
1752                }
1753            });
1754            
1755            // Initialize when DOM is ready - more robust approach
1756            function initializeViewer() {
1757                // Look for either .image-container elements or images with data-src attributes
1758                const testContainers = document.querySelectorAll('.image-container');
1759                const testImages = document.querySelectorAll('img[data-src]');
1760                if (testContainers.length === 0 && testImages.length === 0) {
1761                    // If we still can't find images, try again in a bit
1762                    setTimeout(initializeViewer, 50);
1763                    return;
1764                }
1765                console.log('Initializing image viewer...');
1766                init();
1767            }
1768            
1769            // Try multiple initialization approaches
1770            if (document.readyState === 'loading') {
1771                document.addEventListener('DOMContentLoaded', initializeViewer);
1772            } else {
1773                initializeViewer();
1774            }
1775            
1776            // Also try after window load as a backup
1777            window.addEventListener('load', function() {
1778                setTimeout(initializeViewer, 100);
1779            });
1780        })();
1781    </script>
1781
1782    
1783    
1783<script>
1784        var netrTranslatedStrings = {
1785            general: {
1786                close: 'Stäng',
1787                error: 'Oj, något gick fel!',
1788                more: 'Mer…'
1789            },
1790            product: {
1791                infolabel: 'Produktinformation',
1792                selectmsg: 'Välj en modell ovan för att få detaljerad produktinformation.'
1793            },
1794            article: {
1795                printThisPage: 'Skriv ut'
1796            },
1797            findstore: {
1798                findingNearby: 'Söker återförsäljare i närheten'
1799            }
1800        };
1801    </script>
1801
1802    
1802<script src="//maps.google.com/maps/api/js?libraries=places&amp;language=sv-SE&amp;key=AIzaSyCl9BUPCXWudVABP_nLqihBXv3jZ-IUQiQ"></script>
1802
1803    <!--
1803<script async defer src="https://maps.googleapis.com/maps/api/js?key=AIzaSyCl9BUPCXWudVABP_nLqihBXv3jZ-IUQiQ&callback=initMap" type="text/javascript"></script>
1803-->
1804
1805    
1806    
1806<script src="/gui/js/build/main.min.js"></script>
1806
1807    
1808</body>
1809</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.