PageSourceSearch

https://www.ricordistampati.it/fotografi

html ricordistampati.it collected 2026-10-08 03:17:07 UTC 30,257 bytes, 580 lines download raw bytes

1<!DOCTYPE html>
2<html lang="it">
3    <head>
4        <!-- Google Tag Manager -->
5        
5<script>(function(w,d,s,l,i){w[l]=w[l]||[];w[l].push({'gtm.start':new Date().getTime(),event:'gtm.js'});var f=d.getElementsByTagName(s)[0],j=d.createElement(s);j.async=true;j.src="https://measure.ricordistampati.it/itnnptxbd.js?"+i;f.parentNode.insertBefore(j,f);})(window,document,'script','dataLayer','el4n6ryu=DQZFMyQjQ0E0NCAzITlaUhJfSlpBSAoaWRARFx8cCh0XFhkZAA8aHUoLDA%3D%3D');</script>
5
6        <!-- End Google Tag Manager -->
7
8        <meta charset="UTF-8">
9        <meta name="viewport" content="width=device-width, initial-scale=1, maximum-scale=1, user-scalable=no, viewport-fit=cover">
10
11        <!-- Iubenda Cookie Solution -->
12        
12<script type="text/javascript" src="https://embeds.iubenda.com/widgets/87202e70-3469-445d-8556-24d23e71cc70.js"></script>
12
13
14        <title>Fotografi | Ricordi Stampati</title>
15        <link rel="icon" href="/assets/images/favicon-f527fc97b48bf9a11a19dc0c2bfbdf2c.png">
16
17        <link rel="preconnect" href="https://player.vimeo.com">
18        <link rel="preconnect" href="https://i.vimeocdn.com">
19        <link rel="preconnect" href="https://f.vimeocdn.com" crossorigin>
20
21        
21<script>
22            // ScrollFade: segnala subito al CSS che l'animazione è attiva, così gli elementi dell'intro partono già nascosti
23            if ('IntersectionObserver' in window && !window.matchMedia('(prefers-reduced-motion: reduce)').matches) {
24                document.documentElement.classList.add('scrollFade-js');
25            }
26
27            // Arrivando da una voce della about-navbar, titolo e navbar restano fermi: cambia solo il contenuto
28            try {
29                if (sessionStorage.getItem('aboutNavbarNavigation')) {
30                    sessionStorage.removeItem('aboutNavbarNavigation');
31                    document.documentElement.classList.add('about-navbar-navigation');
32                }
33            } catch (e) {}
34        </script>
34
35
36        
37<link rel="stylesheet" href="/assets/styles/app-d51e6884c61bf3561f587eca8dcb2a84.css">
38<link rel="stylesheet" href="/assets/styles/app_responsive-e0c28e6cfb08c4eca63e60aa47ae8240.css">
39<script type="importmap">
40{
41    "imports": {
42        "app": "/assets/app-1fdc508a761832676a8b8274fd02740a.js",
43        "/assets/styles/app.css": "data:application/javascript,",
44        "/assets/styles/app_responsive.css": "data:application/javascript,",
45        "/assets/js/fslightbox.js": "/assets/js/fslightbox-e664b8e0135cff14345d71060e974556.js",
46        "/assets/js/scrollfade.js": "/assets/js/scrollfade-5089b7b6b67953f2199ccc836447300c.js",
47        "app_admin": "/assets/app_admin-62c66528f42164424bc60c911a310f4c.js",
48        "/assets/styles/app_admin.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fstyles%2Fapp_admin-c71f7a57df07a4f6269725e002e98cdc.css%22%7D%29%29",
49        "dropzone": "/assets/vendor/dropzone/dropzone.index-cf42f91a434a14d4c937482d34260e52.js",
50        "just-extend": "/assets/vendor/just-extend/just-extend.index-097ce26c9b572db4bfccf5ebcd6fdfab.js",
51        "dropzone/dist/dropzone.css": "data:application/javascript,document.head.appendChild%28Object.assign%28document.createElement%28%22link%22%29%2C%7Brel%3A%22stylesheet%22%2Chref%3A%22%2Fassets%2Fvendor%2Fdropzone%2Fdist%2Fdropzone-a1298a3ac4076c1f598b6e7c78174df7.css%22%7D%29%29"
52    }
53}
54</script>
54
55<!-- ES Module Shims: Import maps polyfill for modules browsers without import maps support -->
56<script async src="https://ga.jspm.io/npm:[email protected]/dist/es-module-shims.js" crossorigin="anonymous" integrity="sha384-ie1x72Xck445i0j4SlNJ5W5iGeL3Dpa0zD48MZopgWsjNB/lt60SuG1iduZGNnJn"></script>
56
57<link rel="modulepreload" href="/assets/app-1fdc508a761832676a8b8274fd02740a.js">
58<link rel="modulepreload" href="/assets/js/fslightbox-e664b8e0135cff14345d71060e974556.js">
59<link rel="modulepreload" href="/assets/js/scrollfade-5089b7b6b67953f2199ccc836447300c.js">
60<script type="module">import 'app';</script>
60
61        <!-- Hotjar Tracking Code for ricordistampati.it -->
62        
62<script>
vendor: 149 bytes, lines 62-65
62
63            (function(h,o,t,j,a,r){
64                h.hj=h.hj||function(){(h.hj.q=h.hj.q||[]).push(arguments)};
65                h._hjSettings={hjid:
655363275
vendor: 306 bytes, lines 65-71
65,hjsv:6};
66                a=o.getElementsByTagName('head')[0];
67                r=o.createElement('script');r.async=1;
68                r.src=t+h._hjSettings.hjid+j+h._hjSettings.hjsv;
69                a.appendChild(r);
70            })(window,document,'https://static.hotjar.com/c/hotjar-','.js?sv=');
71        
71</script>
71
72    </head>
73
74    <body class="">
75        <!-- Google Tag Manager (noscript) -->
76        <noscript><iframe src="https://measure.ricordistampati.it/ns.html?id=GTM-5PVXGQW4" height="0" width="0" style="display:none;visibility:hidden"></iframe></noscript>
77        <!-- End Google Tag Manager (noscript) -->
78
79        <div class="overlay-dark  d-none"></div>
80
81                        <header class="header  " id="header">
82            <a class="header__logo" href="/">
83                                    <img class="header__logo-img" src="/assets/images/logo-vertical-3e19985fd344e41cfe0cd4ba5b8b68c4.svg" alt="logo ricordi stampati">
84                            </a>
85
86            <div class="header__actions">
87                <a class="header__gift-link" href="/buoni-regalo">
88                    <img src="/assets/images/icons/icon-gift-red-cdaa072204d64892cdaae717eb7ef5c9.svg" alt="regalo">
89                    <span>Buoni regalo</span>
90                </a>
91
92                                    <button class="header__menu-btn" id="burger-menu">
93                        <span class="header__menu-label">Menu</span>
94                        <img src="/assets/images/icons/burger-1c2c0d217db1c68e830cd2ab22a84a0d.svg" alt="menu">
95                    </button>
96                            </div>
97
98                    </header>
99        
100        <nav class="nav-overlay  closed" id="nav-overlay">
101            <button class="nav-overlay__close" onclick="toggleBurgerMenu()" aria-label="Chiudi menu">
102                <span class="nav-overlay__close-icon">
103                    <span></span>
104                    <span></span>
105                    <span></span>
106                </span>
107            </button>
108
109            <div class="nav-overlay__links">
110                <a class="nav-overlay__link" href="/">Home</a>
111                <a class="nav-overlay__link" href="/prenotazioni">Prenotazioni</a>
112                <a class="nav-overlay__link  nav-overlay__link--accent" href="/buoni-regalo">Buoni regalo</a>
113                <a class="nav-overlay__link" href="/fotografi">Fotografi</a>
114                <a class="nav-overlay__link" href="/faq">Come funziona</a>
115                <a class="nav-overlay__link" href="/aziende">Eventi</a>
116                <a class="nav-overlay__link" href="/chi-siamo">Chi siamo</a>
117                <a class="nav-overlay__link" href="/corsi">Didattica</a>
118                <a class="nav-overlay__link" href="/scarica-app">App</a>
119            </div>
120        </nav>
121
122
123        <main>
124                <section class="photographers bordered main-padding-top">
125        <div class="container">
126            <h1 class="about__title  title-1">Il nostro collettivo</h1>
127        </div>
128
129        <div class="photographers-list__main">
130                            <div class="container  grid">
131                                            <article class="photographers-card  scrollFade-sequence">
132    <a class="photographers-card__link" href="/fotografi/dettaglio/ricordi-stampati-team" aria-hidden="true" tabindex="-1"></a>
133
134    <img class="photographers-card__img" src="/uploads/photographers/ph_01k6cwr782rs4vzwevaj27tx00/profile-image.webp?v=1760606295" alt="foto profilo fotografo">
135
136    <div class="photographers-card__info">
137        <h2 class="photographers-card__name">Ricordi Stampati Team</h2>
138
139        
140
141        <a class="photographers-card__cta  btn  btn--primary" href="/fotografi/dettaglio/ricordi-stampati-team">Vedi profilo</a>
142    </div>
143
144    </article>
145                                            <article class="photographers-card  scrollFade-sequence">
146    <a class="photographers-card__link" href="/fotografi/dettaglio/guido-stazzoni" aria-hidden="true" tabindex="-1"></a>
147
148    <img class="photographers-card__img" src="/uploads/photographers/ph_01j9x9apxapnem3s0aeyzqyq88/profile-image.webp?v=1744664917" alt="foto profilo fotografo">
149
150    <div class="photographers-card__info">
151        <h2 class="photographers-card__name">Guido  Stazzoni</h2>
152
153        
154
155        <a class="photographers-card__cta  btn  btn--primary" href="/fotografi/dettaglio/guido-stazzoni">Vedi profilo</a>
156    </div>
157
158    </article>
159                                            <article class="photographers-card  scrollFade-sequence">
160    <a class="photographers-card__link" href="/fotografi/dettaglio/settimio-benedusi" aria-hidden="true" tabindex="-1"></a>
161
162    <img class="photographers-card__img" src="/uploads/photographers/ph_01jc30rm0cdf38r33mmn85bbs1/profile-image.
162webp?v=1744029952" alt="foto profilo fotografo">
163
164    <div class="photographers-card__info">
165        <h2 class="photographers-card__name">Settimio Benedusi</h2>
166
167        
168
169        <a class="photographers-card__cta  btn  btn--primary" href="/fotografi/dettaglio/settimio-benedusi">Vedi profilo</a>
170    </div>
171
172    </article>
173                                            <article class="photographers-card  scrollFade-sequence">
174    <a class="photographers-card__link" href="/fotografi/dettaglio/toni-thorimbert" aria-hidden="true" tabindex="-1"></a>
175
176    <img class="photographers-card__img" src="/uploads/photographers/ph_01j9x82j2n07yq3m1f4dq8tpb7/profile-image.webp?v=1744029954" alt="foto profilo fotografo">
177
178    <div class="photographers-card__info">
179        <h2 class="photographers-card__name">Toni Thorimbert</h2>
180
181        
182
183        <a class="photographers-card__cta  btn  btn--primary" href="/fotografi/dettaglio/toni-thorimbert">Vedi profilo</a>
184    </div>
185
186    </article>
187                                            <article class="photographers-card  scrollFade-sequence">
188    <a class="photographers-card__link" href="/fotografi/dettaglio/sofia-uslenghi" aria-hidden="true" tabindex="-1"></a>
189
190    <img class="photographers-card__img" src="/uploads/photographers/ph_01jq9dp27hjyq6d4fjas7jercx/profile-image.webp?v=1744029956" alt="foto profilo fotografo">
191
192    <div class="photographers-card__info">
193        <h2 class="photographers-card__name">Sofia Uslenghi</h2>
194
195        
196
197        <a class="photographers-card__cta  btn  btn--primary" href="/fotografi/dettaglio/sofia-uslenghi">Vedi profilo</a>
198    </div>
199
200    </article>
201                                            <article class="photographers-card  scrollFade-sequence">
202    <a class="photographers-card__link" href="/fotografi/dettaglio/matteo-curti" aria-hidden="true" tabindex="-1"></a>
203
204    <img class="photographers-card__img" src="/uploads/photographers/ph_01jq9d260qkr7zktdyxge2m18w/profile-image.webp?v=1744029952" alt="foto profilo fotografo">
205
206    <div class="photographers-card__info">
207        <h2 class="photographers-card__name">Matteo Curti</h2>
208
209        
210
211        <a class="photographers-card__cta  btn  btn--primary" href="/fotografi/dettaglio/matteo-curti">Vedi profilo</a>
212    </div>
213
214    </article>
215                                    </div>
216                    </div>
217    </section>
218        </main>
219
220        <footer>
221            <div class="banner-coupon  bordered  scrollFade">
222                <div class="container  flex  flex-50">
223                    <div class="banner-coupon__left">
224                        <img src="/assets/images/photos/coupon-2-47a7757cdbf08481a721f8d4c09e7f69.webp" alt="coupon">
225                    </div>
226
227                    <div class="banner-coupon__right">
228                        <h3 class="title-3">Regala un ricordo stampato</h3>
229                        <a class="banner-coupon__cta  btn  btn--primary  btn--large  btn--accent" href="/buoni-regalo">Vai ai buoni regalo</a>
230                    </div>
231                </div>
232            </div>
233
234            <div class="footer-main  bordered">
235                <div class="container">
236                    <img class="footer-main__logo" src="/assets/images/logo-941b8fafb3b508f5a5cb7859dedf6643.svg" alt="logo ricordi stampati">
237
238                    <div class="footer-main__content">
239                        <nav class="footer-main__navbar">
240                            <ul class="footer-main__navbar-list">
241                                <li>
242                                    <a class="btn-w-icon" href="https://www.instagram.com/ricordistampati/" target="_blank">
243                                        <span>Instagram</span>
244                                        <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt="">
245                                    </a>
246                                </li>
247
248                                <li>
249                                    <a class="btn-w-icon" href="https://www.facebook.com/ricordi.fotografici/" target="_blank">
250                                        <span>Facebook</span>
251                                        <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt="">
252                                    </a>
253                                </li>
254                            </ul>
255
256                            <ul class="footer-main__navbar-list  footer-main__navbar-list--2">
257                                <li>
258                                    <a class="btn-w-icon" href="/termini-e-condizioni">
259                                        <span>Termini e condizioni</span>
260                                        <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt="">
261                                    </a>
262                                </li>
263
264                                <li>
265                                    <a class="btn-w-icon" href="https://www.iubenda.com/privacy-policy/76002912" target="_blank">
266                                        <span>Privacy Policy</span>
267                                        <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt="">
268                                    </a>
269                                </li>
270
271                                <li>
272                                    <a class="btn-w-icon" href="https://www.iubenda.com/privacy-policy/76002912/cookie-policy" target="_blank">
273                                        <span>Cookie Policy</span>
274                                        <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt="">
275                                    </a>
276                                </li>
277
278                                <li>
279                                    <a class="btn-w-icon  iubenda-cs-preferences-link" href="#">
280                                        <span>Preferenze privacy</span>
281                                        <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt="">
282                                    </a>
283                                </li>
284
285                                <li>
286                                    <a class="btn-w-icon" href="/faq">
287                                        <span>FAQ</span>
288                                        <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt="">
289                                    </a>
290                                </li>
291
292                                <li>
293                                    <a class="btn-w-icon" href="/contattaci">
294                                        <span>Contatti</span>
295                                        <img src="/assets/images/icons/icon-arrow-up-right-a3c6ac06b5778d85e510e7ed0405a032.svg" alt="">
296                                    </a>
297                                </li>
298                            </ul>
299                        </nav>
300
301                        <div class="footer-main__newsletter">
302                            <div class="txt-title  title-2">Scopri le novità</div>
303                            <div id="mc_embed_shell">
304                                <link href="//cdn-images.mailchimp.com/embedcode/classic-061523.css" rel="stylesheet" type="text/css">
305                                <style type="text/css">
306                                    #mc_embed_signup{background:#fff; false;clear:left; font:14px Helvetica,Arial,sans-serif; width: 600px;}
307                                    /* Add your own Mailchimp form style overrides in your site stylesheet or in this style block.
308                                       We recommend moving this block and the preceding CSS link to the HEAD of your HTML file. */
309                                </style>
310                                <div id="mc_embed_signup">
311                                    <form action="https://ricordistampati.us14.list-manage.com/subscribe/post?u=5a7b3f6221d6779f29ee814fd&amp;id=ecd83f8369&amp;f_id=005b94e1f0" method="post" id="mc-embedded-subscribe-form" name="mc-embedded-subscribe-form" class="validate" target="_blank">
312                                        <div id="mc_embed_signup_scroll">
313                                            <div class="indicates-required"><span class="asterisk">*</span> indica requisiti obbligatori</div>
314                                            <div class="mc-field-group">
314<label for="mce-EMAIL"></label><input type="email" name="EMAIL" class="required email  newsletter-input" id="mce-EMAIL" required="" value="" placeholder="Inserisci la tua email"></div>
315                                            <div aria-hidden="true" style="position: absolute; left: -5000px;">
316                                                /* real people should not fill this in and expect good things - do not remove this or risk form bot signups */
317                                                <input type="text" name="b_5a7b3f6221d6779f29ee814fd_ecd83f8369" tabindex="-1" value="">
318                                            </div>
319                                            <div class="optionalParent">
320                                                <div class="clear foot">
321                                                    <input type="submit" name="subscribe" id="mc-embedded-subscribe" class="button  newsletter-submit" value="Iscriviti alla newsletter">
322                                                </div>
323                                            </div>
324                                            <div id="mce-responses" class="clear foot">
325                                                <div class="response" id="mce-error-response" style="display: none;"></div>
326                                                <div class="response" id="mce-success-response" style="display: none;"></div>
327                                            </div>
328                                        </div>
329                                    </form>
330                                </div>
331                                
331<script type="text/javascript" src="//s3.amazonaws.com/downloads.mailchimp.com/js/mc-validate.js"></script>
331<script type="text/javascript">(function($) {window.fnames = new Array(); window.ftypes = new Array();fnames[0]='EMAIL';ftypes[0]='email';fnames[1]='FNAME';ftypes[1]='text';fnames[2]='LNAME';ftypes[2]='text';fnames[3]='ADDRESS';ftypes[3]='address';fnames[4]='PHONE';ftypes[4]='phone';fnames[5]='BIRTHDAY';ftypes[5]='birthday';fnames[6]='COMPANY';ftypes[6]='text';}(jQuery));var $mcj = jQuery.noConflict(true);</script>
331</div>
332                        </div>
333                    </div>
334                </div>
335            </div>
336
337            <div class="banner-sm  container">
338                <p>&copy 2026 Fotografia Popolare SRL P. IVA 01778830081</p>
339                <p>
340                    Designed and built by <a class="txt-inherit  txt-underlined"
341                                             href="https://glueglue.com" target="_blank">glueglue</a>
342                </p>
343            </div>
344        </footer>
345
346        <div class="popup  popup--apps  d-none">
347            <button class="popup__close-btn" onclick="closePopup('apps')">
348                <img src="/assets/images/icons/close-44f7f376b822799c884c80f51114765a.svg" alt="chiusura icona">
349            </button>
350
351            <div class="popup__content">
352                <div class="popup__title">Scarica l'app</div>
353
354                <div class="popup__flex">
355                    <a href="https://apps.apple.com/it/app/ricordi-stampati-lab/id6470449877" target="_blank" class="popup__link">
356                        <img class="popup__link-img" src="/assets/images/badge-applestore-65c21e442a7be656803b6d5595201364.png" alt="apple store">
357                    </a>
358
359                    <a href="https://play.google.com/store/apps/details?id=it.ricordistampati.lab&hl=it" target="_blank" class="popup__link">
360                        <img class="popup__link-img" src="/assets/images/badge-googleplay-80a544cabe8acff3daafeedb01e753f7.png" alt="google play store">
361                    </a>
362                </div>
363            </div>
364        </div>
365
366        <div id="loading" style="display: none;">
367            <div class="inner-loading">
368                <div class="loading-box">
369                    <img src="/assets/animations/animation-loader-white-cac0a586c697351744ba24e006415167.svg" alt="Caricamento">
370                </div>
371            </div>
372        </div>
373
374        
374<script src="/assets/jquery-3.7.1.min-9afc4325c73ade4ffa73ae9a63c6bc64.js" type="application/javascript"></script>
374
375        <link href="https://cdn.jsdelivr.net/npm/[email protected]/dist/css/select2.min.css" rel="stylesheet" />
376        
376<script src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/select2.min.js"></script>
376
377
378        
378<script type="application/javascript">
379            const html = $('html')
380            const main = $('main')
381            const header = $('header')
382            const footer = $('footer')
383            const headerLogo = $('.header-logo')
384            const mobileNav = $('#nav-overlay')
385            const burgerMenu = $('#burger-menu')
386            const headerProfileMenu = $('#header-profile-menu')
387            const headerProfileMenuSpan = $('#header-profile-menu span')
388
389            function startLoading() {
390                $("#loading").fadeIn();
391                $('body').css('overflow', 'hidden')
392                $('html').css('overflow', 'hidden')
393            }
394
395            function stopLoading() {
396                $("#loading").fadeOut();
397                $('body').css('overflow', 'unset')
398                $('html').css('overflow', 'unset')
399            }
400
401            function toggleBurgerMenu() {
402                if (mobileNav.hasClass('closed')) {
403                    mobileNav.removeClass('closed').addClass('opened')
404                    $('#burger-menu .open').addClass('d-none')
405                    $('#burger-menu .close').removeClass('d-none')
406                    header.addClass('header-mobile-opened')
407                    html.css('overflow', 'hidden')
408                } else {
409                    mobileNav.removeClass('opened').addClass('closed')
410                    $('#burger-menu .open').removeClass('d-none')
411                    $('#burger-menu .close').addClass('d-none')
412                    header.removeClass('header-mobile-opened')
413                    html.css('overflow', 'auto')
414                }
415            }
416
417            function toggleHeaderProfileMenu() {
418                if (mobileNav.hasClass('closed')) {
419                    mobileNav.removeClass('closed').addClass('opened')
420                    $('#header-profile-menu .open').addClass('d-none')
421                    $('#header-profile-menu .close').removeClass('d-none')
422                    header.addClass('header-mobile-opened')
423                    html.css('overflow', 'hidden')
424                } else {
425                    mobileNav.removeClass('opened').addClass('closed')
426                    $('#header-profile-menu .open').removeClass('d-none')
427                    $('#header-profile-menu .close').addClass('d-none')
428                    header.removeClass('header-mobile-opened')
429                    html.css('overflow', 'auto')
430                }
431            }
432
433            burgerMenu.on("click", toggleBurgerMenu)
434            headerProfileMenu.on("click", toggleHeaderProfileMenu)
435
436            const siteHeader = document.getElementById('header')
437
438            if (siteHeader && siteHeader.classList.contains('header--transparent')) {
439                const homeHero = document.querySelector('.home-hero')
440                const homeHeroVideo = document.querySelector('.home-hero-video')
441
442                const updateSiteHeader = () => {
443                    const videoRatio = window.innerWidth <= 576 ? 0.60 : 0.70
444                    const isScrolled = (homeHero && homeHeroVideo)
445                        ? window.scrollY >= homeHero.offsetHeight + homeHeroVideo.offsetHeight * videoRatio
446                        : window.scrollY > 10
447
448                    siteHeader.classList.toggle('header--scrolled', isScrolled)
449                    siteHeader.classList.toggle('header--nudged', window.scrollY > 10)
450                }
451
452                window.addEventListener('scroll', updateSiteHeader)
453                updateSiteHeader()
454            }
455
456            $('.about-navbar__dropdown-btn').on("click", function () {
457                $(this).toggleClass("about-navbar__dropdown-btn--open")
458                $('.about-navbar__slide').slideToggle()
459            })
460
461
462            // Gallery
463
464            function updateCustomScrollbar() {
465                const $content = $('.gallery');
466                const $thumb = $('.gallery__scrollbar-thumb');
467                const $track = $('.gallery__scrollbar');
468                const content = $content[0];
469
470                const scrollLeft = content.scrollLeft;
471                const scrollWidth = content.scrollWidth;
472                const containerWidth = content.clientWidth;
473
474                const rootStyles = getComputedStyle(document.documentElement);
475                const padding = parseInt(rootStyles.getPropertyValue('--spacing-full-page')) || 0;
476                const trackWidth = containerWidth - padding * 2;
477
478                // Show/hide the scrollbar only if overflow exists
479                if (scrollWidth > containerWidth + 1) {
480                    $track.show();
481                } else {
482                    $track.hide();
483                    return;
484                }
485
486                const thumbWidth = trackWidth * (containerWidth / scrollWidth);
487                const scrollRatio = scrollLeft / (scrollWidth - containerWidth);
488                const thumbLeft = scrollRatio * (trackWidth - thumbWidth);
489
490                $thumb.css({
491                    width: `${thumbWidth}px`,
492                    left: `${thumbLeft}px`
493                });
494            }
495
496            $('.gallery').on('scroll', updateCustomScrollbar);
497
498            if ($('.gallery').length > 0) {
499                $(window).on('load resize', updateCustomScrollbar);
500            }
501
502            function updateGalleryScrollbar() {
503                const gallery = $('.gallery');
504
505                if (!gallery.length) return;
506
507                if (gallery[0].scrollWidth > gallery.outerWidth()) {
508                    gallery.removeClass('hide-scrollbar');
509                } else {
510                    gallery.addClass('hide-scrollbar');
511                }
512            }
513
514            $(window).on('load resize', updateGalleryScrollbar);
515
516
517
518            /* POPUP */
519            function openPopup(popupName, couponId = null) {
520                selectedCouponId = couponId
521
522                $('.popup--' + popupName).removeClass('d-none')
523                $('html').addClass('overflow-hidden')
524                $('body').addClass('overflow-hidden')
525                $('.overlay-dark').removeClass('d-none')
526            }
527
528            function closePopup(popupName) {
529                $('.popup--' + popupName).addClass('d-none')
530                $('html').removeClass('overflow-hidden')
531                $('body').removeClass('overflow-hidden')
532                $('.overlay-dark').addClass('d-none')
533            }
534
535            function showWorkshops() {
536                $('.photographers-list__grid').removeClass('d-none')
537            }
538
539            function hideWorkshops() {
540                $('.photographers-list__grid').addClass('d-none')
541            }
542
543            function scrollBookingSectionToTop() {
544                // document.getElementsByClassName("bookings__actions")[0].scrollIntoView({ behavior: "smooth", block: "start" })
545
546                const element = document.querySelector('.bookings__actions');
547                const offset = 300;
548
549                const top = element.getBoundingClientRect().top + window.pageYOffset - offset;
550
551                window.scrollTo({ top, behavior: 'smooth' });
552            }
553
554            function scrollBookingActionsToTop() {
555                const element = document.querySelector('.bookings__actions');
556                element.scrollTo({ top: 0, behavior: 'smooth' });
557            }
558
559            function toggleHeroVideoVolume(videoId) {
560                const video = $(".video-wrapper--" + videoId + " .video-wrapper__video")[0];
561
562                video.muted = !video.muted;
563
564                $(".video-wrapper--" + videoId + ' .video-wrapper__volume-icon--off').toggleClass('d-none')
565                $(".video-wrapper--" + videoId + ' .video-wrapper__volume-icon--on').toggleClass('d-none')
566            }
567
568            function askChangeDatesConfirmation() {
569                if (isOtpSent && !window.confirm("Attenzione: se cambi data la prenotazione in corso non sarà più valida. Vuoi proseguire?")) {
570                    return false
571                }
572
573                isOtpSent = false
574                bookingId = null
575                return true
576            }
577        </script>
577
578
579                    </body>
580</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.