PageSourceSearch

https://www.cubelles.cat/altres-continguts/contacte

html cubelles.cat collected 2026-10-02 10:38:14 UTC 121,093 bytes, 2,079 lines download raw bytes

1<!DOCTYPE HTML>
2<html lang="ca" xmlns="http://www.w3.org/1999/xhtml" xml:lang="ca" >
3    <head>
4        <!-- METADATA -->
5<meta charset="utf-8">
6<meta name="viewport" content="width=device-width, initial-scale=1">
7<meta name="title" lang="ca" content="Contacte - Ajuntament de Cubelles">
8<meta name="description" lang="ca" content="">
9<meta name="author" lang="ca" content="Ajuntament de Cubelles">
10<meta name="date" lang="ca" content="2021-10-21 11:15:06">
11<meta name="generator" lang="ca" content="Ajuntament de Cubelles">
12<meta name="robots" content="index, follow">
13
14        <title>Contacte - Ajuntament de Cubelles</title>
15
16        <!-- Global Site Tag (gtag.js) - Google Analytics v4-->
vendor: 124 bytes, lines 16-17
16
17<script type="text/plain" data-type="text/javascript" data-name="ga" data-src="https://www.googletagmanager.com/gtag/js?id=
17G-VJ506P30EE
vendor: 12 bytes, line 17
17"></script>
18<script type="text/plain" data-type="text/javascript" data-name="ga">
19    
vendor: 140 bytes, lines 19-23
19window.dataLayer = window.dataLayer || [];
20    function gtag(){dataLayer.push(arguments);}
21    gtag('js', new Date());
22
23    gtag('config', '
23G-VJ506P30EE
vendor: 8 bytes, lines 23-24
23');
24    
24// Creates the default tracker.
25    gtag('event', 'page_view', { 'send_to': 'G-VJ506P30EE' });
26</script>
26
27<!-- End of code Global Site Tag (gtag.js) - Google Analytics v4-->
28        <link rel="canonical" href="/altres-continguts/contacte">
29
30        <link rel="stylesheet" href="/front/view/js/bower_components/bootstrap/dist/css/bootstrap.min.css?ver=1790937490">
31<link rel="stylesheet" href="/front/view/js/bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css?ver=1790937490">
32<link rel="stylesheet" href="/front/view/js/bower_components/bootstrap-icons.min/index.css?ver=1790937490">
33<link rel="stylesheet" href="/front/view/js/bower_components/tempus-dominus.min.css/index.css?ver=1790937490">
34<link rel="stylesheet" href="/common/bower_components/select2/dist/css/select2.min.css?ver=1790937490">
35
36        <!-- Real Favicon Genenrator-->
37<link rel="apple-touch-icon" href="/themes/cubelles/images/favicons/apple-touch-icon.png">
38<link rel="icon" type="image/png" href="/themes/cubelles/images/favicons/favicon-16x16.png" sizes="16x16">
39<link rel="icon" type="image/png" href="/themes/cubelles/images/favicons/favicon-32x32.png" sizes="32x32">
40<link rel="shortcut icon" href="/themes/cubelles/images/favicons/favicon.ico">
41        
41<script src="/front/controller/klaro-config.php"></script>
vendor: 1 bytes, line 41
41
42<script>
43	// Fallback defensiu: si per algun motiu el PHP no retorna la configuració,
44	// assegurem una configuració mínima perquè Klaro no falli i mostri el banner.
45	window.klaroConfig = window.klaroConfig || {
46		version: '1.0',
47		elementID: 'klaro',
48		storageMethod: 'cookie',
49		storageName: 'klaro',
50		cookieName: 'klaro',
51		htmlTexts: true,
52		acceptAll: true,
53		hideDeclineAll: false,
54		services: []
55	};
56</script>
vendor: 1 bytes, line 56
56
57<script src="/front/view/js/klaro.min.js?ver=1790937490"></script>
vendor: 1 bytes, line 57
57
58<script src="/front/view/js/klaro-init.js?ver=1790937490"></script>
58
59
60        <!-- Twitter Card data -->
61<meta name="twitter:card" content="summary">
62<meta name="twitter:title" content="Contacte">
63<meta name="twitter:description" content="">
64<meta name="twitter:image" content="https://www.cubelles.cat/themes/cubelles/images/logos/header.png">
65    <meta name="twitter:image:alt" content="Logo">
66        <!-- Open Graph data -->
67<meta property="og:title" content="Contacte">
68<meta property="og:type" content="website">
69<meta property="og:url" content="https://www.cubelles.cat/altres-continguts/contacte">
70<meta property="og:image" content="https://www.cubelles.cat/themes/cubelles/images/logos/header.png">
71    <meta property="og:image:alt" content="Logo">
72    <meta property="og:image" content="https://www.cubelles.cat/themes/cubelles/images/logos/header_inv.png">
73    <meta property="og:image:alt" content="Logo invertit">
74    <meta property="og:description" content="">
75<meta property="og:site_name" content="Ajuntament de Cubelles">
76
77        <!-- HTML5 compatible tags -->
78<script>
79    document.createElement('header');
80    document.createElement('footer');
81    document.createElement('section');
82    document.createElement('aside');
83    document.createElement('nav');
84    document.createElement('article');
85    document.createElement('hgroup');
86    document.createElement('lh');
87</script>
87
88        
88<script>window.mapsConfig = { layerType: 'OpenStreetMap_Mapnik' };</script>
88
89<link rel="stylesheet" href="/front/view/js/bower_components/FreezeUI/freeze-ui.min.css">
90<link rel="stylesheet" href="/front/view/js/bower_components/Leaflet/default/leaflet.css">
91<link rel="stylesheet" href="/front/view/js/bower_components/Leaflet/default/Control.Loading.css">
92<script  src="/front/view/js/bower_components/FreezeUI/freeze-ui.min.js"></script>
vendor: 1 bytes, line 92
92
93<script  src="/front/view/js/bower_components/Leaflet/default/leaflet.js"></script>
vendor: 1 bytes, line 93
93
94<script src="/front/view/js/bower_components/es6-promise/es6-promise.min.js"></script>
vendor: 1 bytes, line 94
94
95<script>ES6Promise.polyfill();</script>
vendor: 1 bytes, line 95
95
96<script  src='/front/view/js/bower_components/Leaflet/default/Leaflet.GoogleMutant.js'></script>
vendor: 1 bytes, line 96
96
97<script src="/front/view/js/googleMapsInit.js"></script>
vendor: 1 bytes, line 97
97
98<script type="text/plain" data-type="text/javascript" data-name="maps" data-src="https://maps.google.com/maps/api/js?key=AIzaSyDzMQfPcdyACxfYosZzQs43alxB8BKfkx8&amp;loading=async&amp;callback=onGoogleMapsReady"></script>
vendor: 1 bytes, line 98
98
99<script  src="/front/view/js/bower_components/Leaflet/default/leaflet.maps.js"></script>
vendor: 1 bytes, line 99
99
100<script  src="/front/view/js/bower_components/Leaflet/default/leaflet.clone.js"></script>
vendor: 1 bytes, line 100
100
101<script  src="/front/view/js/bower_components/Leaflet/default/Control.Loading.js"></script>
vendor: 1 bytes, line 101
101
102<script src="/front/view/js/bower_components/jquery.min/index.js"></script>
vendor: 1 bytes, line 102
102
103<script src="/front/view/js/maps.js"></script>
103        <!-- Init addHeadExtraStyles -->
104        <style>html body{font-size:1em !important;} </style>
105        <!-- End addHeadExtraStyles -->
106        <!-- Font Awesome 7 + v4-shims for backward compatibility -->
107        <link href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css" rel="stylesheet">
108        <link href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/v4-shims.min.css" rel="stylesheet">
109        <!-- Popperjs + Tempus Dominus -->
110        
110<script src="/front/view/js/bower_components/popper.min/index.js?ver=1790937490"></script>
vendor: 1 bytes, line 110
110
111<script src="/front/view/js/bower_components/tempus-dominus.min.js/index.js?ver=1790937490"></script>
111
112                <link rel="stylesheet" media="all" href="/themes/cubelles/styles/style.min.css?ver=1790937490">
113            </head>
114    <body class="page id-62">
115        <nav class="skip-links" aria-label="Dreceres d&#039;accessibilitat"><ul><li><a href="#site-header">Saltar a la capçalera</a></li><li><a href="#readspeakerPage">Saltar al contingut</a></li><li><a href="#footer-content">Saltar al peu de pàgina</a></li></ul></nav>        <header id="site-header" tabindex="-1">
116                                    <div class="toolbar clearfix">
117    <div class="container-xl">
118                <div class="fright">
119            <div class="toolbarItem">
120    <div class="toolbarItem page-62 page-contacte current">
121    <a 
122        href="/altres-continguts/contacte"
123        target="_self"
124        rel=""
125            >
126        Contacte    </a>
127</div>
128</div>                        <div id="social" class="toolbarItem">
129                  
130    <a target="_blank" aria-label="Twitter" href="https://x.com/ajcubelles" title="Obre en finestra nova: Twitter">
131        <span style="display: none">Twitter</span>
132        <img src="/front/view/images/icons/social/twitter.png" alt="Twitter" width="32" height="32">
133    </a>
134  
135    <a target="_blank" aria-label="Facebook" href="https://www.facebook.com/ajcubelles/" title="Obre en finestra nova: Facebook">
136        <span style="display: none">Facebook</span>
137        <img src="/front/view/images/icons/social/facebook.png" alt="Facebook" width="32" height="32">
138    </a>
139  
140    <a target="_blank" aria-label="Flickr" href="https://www.flickr.com/photos/ajcubelles/albums/" title="Obre en finestra nova: Flickr">
141        <span style="display: none">Flickr</span>
142        <img src="/front/view/images/icons/social/flickr.png" alt="Flickr" width="32" height="32">
143    </a>
144  
145    <a target="_blank" aria-label="Youtube" href="https://www.youtube.com/ajCubelles" title="Obre en finestra nova: Youtube">
146        <span style="display: none">Youtube</span>
147        <img src="/front/view/images/icons/social/youtube.png" alt="Youtube" width="32" height="32">
148    </a>
149  
150    <a target="_blank" aria-label="Instagram" href="https://www.instagram.com/ajcubelles/" title="Obre en finestra nova: Instagram">
151        <span style="display: none">Instagram</span>
152        <img src="/front/view/images/icons/social/instagram.png" alt="Instagram" width="32" height="32">
153    </a>
154            </div>
155                        <div class="toolbarItem">
156                <div id="toolbarLanguages">
157    <ul id="languages">
158        <li><a href="#" role="button" aria-expanded="false" aria-controls="languagesList" id="languagesToggle">Idiomes</a>
159            <ul id="languagesList">
160                                    <li><a class="link-language" href="https://www.cubelles.cat/altres-continguts/contacte?lang=ca" data-target="https://www.cubelles.cat/altres-continguts/contacte?lang=ca">Català</a></li>
161                                    <li><a class="link-language" href="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=esie=UTF-8&amp;u=https://www.cubelles.cat/altres-continguts/contacte&amp;sl=ca&amp;tl=es" data-target="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=esie=UTF-8&amp;u=https://www.cubelles.cat/altres-continguts/contacte&amp;sl=ca&amp;tl=es">Castellà</a></li>
162                                    <li><a class="link-language" href="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=enie=UTF-8&amp;u=https://www.cubelles.cat/altres-continguts/contacte&amp;sl=ca&amp;tl=en" data-target="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=enie=UTF-8&amp;u=https://www.cubelles.cat/altres-continguts/contacte&amp;sl=ca&amp;tl=en">Anglès</a></li>
163                                    <li><a class="link-language" href="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=deie=UTF-8&amp;u=https://www.cubelles.cat/altres-continguts/contacte&amp;sl=ca&amp;tl=de" data-target="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=deie=UTF-8&amp;u=https://www.cubelles.cat/altres-continguts/contacte&amp;sl=ca&amp;tl=de">Alemany</a></li>
164                                    <li><a class="link-language" href="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=frie=UTF-8&amp;u=https://www.cubelles.cat/altres-continguts/contacte&amp;sl=ca&amp;tl=fr" data-target="https://translate.google.es/translate?js=y&amp;prev=_t&amp;hl=frie=UTF-8&amp;u=https://www.cubelles.cat/altres-continguts/contacte&amp;sl=ca&amp;tl=fr">Francès</a></li>
165                            </ul>
166        </li>
167    </ul>
168</div>
169<script>
170(function () {
171    var toggle = document.getElementById('languagesToggle');
172    if (!toggle) return;
173    var li = toggle.parentElement;
174    var submenu = li.querySelector('ul');
175    var links = Array.prototype.slice.call(submenu.querySelectorAll('a'));
176
177    function keyName(e) {
178        return e.key || e.code || e.keyCode;
179    }
180
181    function isSpaceKey(e) {
182        var key = keyName(e);
183        return key === ' ' || key === 'Spacebar' || key === 'Space' || key === 32;
184    }
185
186    function open(focusFirst) {
187        li.classList.add('is-open');
188        submenu.style.display = 'block';
189        submenu.style.padding = '1em';
190        toggle.setAttribute('aria-expanded', 'true');
191        if (focusFirst && links.length) links[0].focus();
192    }
193
194    function close() {
195        li.classList.remove('is-open');
196        submenu.style.display = '';
197        submenu.style.padding = '';
198        toggle.setAttribute('aria-expanded', 'false');
199    }
200
201    function isOpen() {
202        return toggle.getAttribute('aria-expanded') === 'true';
203    }
204
205    function focusLink(index) {
206        if (!links.length) return;
207        links[(index + links.length) % links.length].focus();
208    }
209
210    function focusedLinkIndex() {
211        return links.indexOf(document.activeElement);
212    }
213
214    toggle.addEventListener('click', function (e) {
215        e.preventDefault();
216        isOpen() ? close() : open(false);
217    });
218
219    toggle.addEventListener('keydown', function (e) {
220        var key = keyName(e);
221        if (key === 'Enter' || isSpaceKey(e)) {
222            e.preventDefault();
223            isOpen() ? close() : open(false);
224        } else if (key === 'ArrowDown' || key === 40) {
225            e.preventDefault();
226            open(true);
227        } else if (key === 'ArrowUp' || key === 38) {
228            e.preventDefault();
229            open(false);
230            focusLink(links.length - 1);
231        } else if (key === 'Escape' || key === 'Esc' || key === 27) {
232            if (isOpen()) {
233                e.preventDefault();
234                close();
235            }
236        }
237    });
238
239    submenu.addEventListener('keydown', function (e) {
240        var key = keyName(e);
241        var index = focusedLinkIndex();
242
243        if (key === 'ArrowDown' || key === 40) {
244            e.preventDefault();
245            focusLink(index + 1);
246        } else if (key === 'ArrowUp' || key === 38) {
247            e.preventDefault();
248            focusLink(index - 1);
249        } else if (key === 'Home' || key === 36) {
250            e.preventDefault();
251            focusLink(0);
252        } else if (key === 'End' || key === 35) {
253            e.preventDefault();
254            focusLink(links.length - 1);
255        } else if (isSpaceKey(e)) {
256            e.preventDefault();
257            if (document.activeElement && document.activeElement.click) {
258                document.activeElement.click();
259            }
260        } else if (key === 'Escape' || key === 'Esc' || key === 27) {
261            e.preventDefault();
262            close();
263            toggle.focus();
264        }
265    });
266
267    li.addEventListener('focusout', function () {
268        window.setTimeout(function () {
269            if (!li.contains(document.activeElement)) close();
270        }, 0);
271    });
272
273    document.addEventListener('click', function (e) {
274        if (!li.contains(e.target)) close();
275    });
276})();
277</script>
277
278                <div class="currentDate" style='padding:9px;color:white'>
279    <span id="clock" class="clock" title='Data i hora oficial' >
280        02.10.2026 | 12:38    </span>
281</div>            </div>
282        </div>
283    </div>
284</div>
285<div class="header ">
286    <div class="branding">
287        <div class="container-xl">
288            <div class="row">
289                <div class="col-md-8 col-sm-8 col-lg-8 logo_box">
290    <a class="logo" href="/" aria-label="Ajuntament de Cubelles - Pàgina d'inici">
291        <img src="/themes/cubelles/images/logos/header.png" alt="" width="355" height="111" id="mainLogo">
292    </a>
293    </div>                <div class="col-md-4 col-sm-4 col-lg-4 middle search_box">
294    <form id="search_box" aria-label="Cercar:" name="search_box" method="get" action="/search">
295        <label for="search" accesskey="4">
296            <span class="visually-hidden">Cercar:</span>
297        </label>
298        <input id="search" name="search" type="text" aria-label="Cercar:" title="Cerca a tot el web" value="" placeholder="Cercar...">
299        <button type="submit" class="search-button" aria-label="Cerca"><i class="fa fa-search"></i></button>
300    </form>
301</div>
302            </div>
303        </div>
304    </div>
305        <div id="navbar-top" class="navbar navbar-expand-lg navbar-dark"><div class="nav"><div class="container-xl"><div class="row"><div class="col"><nav class="menu_principal" aria-label="menú"><div class="menu-flexible__wrapper menu-font-medium menu-alignment-left menu-spacing-normal menu-animation-fade menu-text-transform-none menu-columns-1" style="--menu-cols:1;--menu-submenu-width:200px;--menu-hover-delay:300ms;--menu-image-width:160px;" data-menu-columns="1" data-expand-type="hover" data-menu-sticky="false" data-menu-alignment="left" data-menu-spacing="normal" data-menu-animation="fade" data-menu-external-icon="auto" data-menu-external-dim="false" data-menu-text-transform="none"><div class="menu-flexible__topbar"><a href="#" class="menu-flexible__toggle phoneMenuButton" aria-label="Menú" aria-expanded="false"><i class="fa fa-bars"></i></a></div><ul class="menu-flexible menu-flexible__list"><li class="menu-flexible__item page-1 level1"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament" ><span class="menu-flexible__item-text">Ajuntament</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-12 level2"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/salutacio-de-lalcaldessa" ><span class="menu-flexible__item-text">Salutació de l&#039;Alcaldessa</span></a></li><li class="menu-flexible__item page-8 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/consistori" ><span class="menu-flexible__item-text">Consistori</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-13 level3"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://seu-e.cat/ca/web/cubelles/govern-obert-i-transparencia/informacio-institucional-i-organitzativa/organitzacio-politica-i-retribucions/cartipas-organitzacio-politica" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Composició de l&#039;Ajuntament</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-14 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/consistori/regidories-organitzacio-municipal" ><span class="menu-flexible__item-text">Regidories</span></a></li><li class="menu-flexible__item page-115 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/consistori/electes" ><span class="menu-flexible__item-text">Electes</span></a></li><li class="menu-flexible__item page-144 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/consistori/grups-dinteres" ><span class="menu-flexible__item-text">Grups d&#039;interès</span></a></li><li class="menu-flexible__item page-15 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/consistori/grups-municipals" ><span class="menu-flexible__item-text">Grups municipals</span></a></li><li class="menu-flexible__item page-147 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/consistori/organigrama" ><span class="menu-flexible__item-text">Organigrama</span></a></li><li class="menu-flexible__item page-127 level3"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://seu-e.cat/ca/web/cubelles/dades-obertes/-/dadesobertes/dataset/a148b7bc-93d8-4d6c-a679-cc7768737877?p_auth=tr9fFzuf" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Resultats electorals</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-148 level3"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://intranet.cubelles.cat/retribucions-regidories" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Retribucions / indemnitzacions</span><i class="align-middle fa fa-external-link ms-2"></i></a></li></ul></li><li class="menu-flexible__item page-149 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/organs-de-govern" ><span class="menu-flexible__item-text">Òrgans de govern</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-175 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/organs-de-govern/competencies-dels-organs-de-govern" ><span class="menu-flexible__item-text">Competències dels òrgans de govern</span></a></li><li class="menu-flexible__item page-80 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/organs-de-govern/ple-municipal" ><span class="menu-flexible__item-text">
305Ple municipal</span></a></li><li class="menu-flexible__item page-20 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/organs-de-govern/juntes-de-govern-local" ><span class="menu-flexible__item-text">Juntes de Govern Local</span></a></li><li class="menu-flexible__item page-150 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/organs-de-govern/comissions" ><span class="menu-flexible__item-text">Comissions</span></a></li></ul></li><li class="menu-flexible__item page-151 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/organitzacio-interna" ><span class="menu-flexible__item-text">Organització interna</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-17 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/organitzacio-interna/tecnics-municipals" ><span class="menu-flexible__item-text">Tècnics municipals</span></a></li><li class="menu-flexible__item page-152 level3"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://www.seu-e.cat/ca/web/cubelles/govern-obert-i-transparencia/informacio-institucional-i-organitzativa/empleats-publics/relacio-de-llocs-de-treball-rlt" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Relació de llocs de treball</span><i class="align-middle fa fa-external-link ms-2"></i></a></li></ul></li><li class="menu-flexible__item page-153 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/convocatories-de-personal" ><span class="menu-flexible__item-text">Convocatòries de personal</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-233 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/convocatories-de-personal/en-curs" ><span class="menu-flexible__item-text">En curs</span></a></li><li class="menu-flexible__item page-234 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/convocatories-de-personal/tancades" ><span class="menu-flexible__item-text">Tancades</span></a></li></ul></li><li class="menu-flexible__item page-154 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/hisenda-i-contractacio" ><span class="menu-flexible__item-text">Hisenda i contractació</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-24 level3"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/hisenda-i-contractacio/pressupostos-i-plantilles" ><span class="menu-flexible__item-text">Pressupostos i plantilles</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-222 level4"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/hisenda-i-contractacio/pressupostos-i-plantilles/modificacions-pressupostaries" ><span class="menu-flexible__item-text">Modificacions pressupostàries</span></a></li><li class="menu-flexible__item page-243 level4"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/hisenda-i-contractacio/pressupostos-i-plantilles/pressupostos-participatius" ><span class="menu-flexible__item-text">Pressupostos participatius</span></a></li></ul></li><li class="menu-flexible__item page-22 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/hisenda-i-contractacio/ordenances-fiscals" ><span class="menu-flexible__item-text">Ordenances fiscals</span></a></li><li class="menu-flexible__item page-155 level3"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://orgt.diba.cat/ca/Informacio/calendari/calendari?idTramit=bb87409f-b824-460e-b837-0a8cc81c280e" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Calendari fiscal</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-159 level3"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://seu-e.cat/ca/web/cubelles/govern-obert-i-transparencia/contractes-convenis-i-subvencions/convenis-i-subvencions/subvencions-atorgades" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Subvencions atorgades</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-26 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/hisenda-i-contractacio/perfil-de-contractant" ><span class="menu-flexible__item-text">Perfil de contractant</span></a></li></ul></li><li class="menu-flexible__item page-16 level2"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/plans-campanyes-i-programes" ><span class="menu-flexible__item-text">Plans, campanyes i programes</span></a></li><li class="menu-flexible__item page-156 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/anuncis-i-resolucions" ><span class="menu-flexible__item-text">Anuncis i Resolucions</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-18 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/anuncis-i-resolucions/anuncis-edictes" ><span class="menu-flexible__item-text">Anuncis / Edictes</span></a></li><li class="menu-flexible__item page-157 level3"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://seu-e.cat/ca/web/cubelles/govern-obert-i-transparencia/accio-de-govern-i-normativa/accio-de-govern-i-grups-politics/resolucions-i-decrets" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Resolucions i Decrets</span><i class="align-middle fa fa-external-link ms-2"></i></a></li></ul></li><li class="menu-flexible__item page-126 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/normativa" ><span class="menu-flexible__item-text">Normativa</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-213 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/normativa/normativa-en-exposicio-publica" ><span class="menu-flexible__item-text">Normativa en exposició pública</span></a></li><li class="menu-flexible__item page-27 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/normativa/normativa--ordenances-generals" ><span class="menu-flexible__item-text">Normativa / Ordenances generals</span></a></li></ul></li><li class="menu-flexible__item page-236 level2"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/subvencions" ><span class="menu-flexible__item-text">Subvencions</span></a></li><li class="menu-flexible__item page-229 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/urbanisme" ><span class="menu-flexible__item-text">Urbanisme</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-230 level3"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://seu-e.cat/ca/web/cubelles/govern-obert-i-transparencia/accio-de-govern-i-normativa/urbanisme/normativa-d-urbanisme" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Normativa d&#039;urbanisme</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-231 level3"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://seu-e.cat/ca/web/cubelles/govern-obert-i-transparencia/accio-de-govern-i-normativa/urbanisme/plane
305jament-urbanistic" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Planejament urbanístic</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-232 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/urbanisme/projectes" ><span class="menu-flexible__item-text">Projectes</span></a></li></ul></li><li class="menu-flexible__item page-160 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://seu-e.cat/ca/web/cubelles/govern-obert-i-transparencia/gestio-economica/patrimoni/inventari-general-del-patrimoni" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Patrimoni</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-122 level2"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/seu-electronica" ><span class="menu-flexible__item-text">Seu electrònica</span></a></li><li class="menu-flexible__item page-123 level2"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/transparencia" ><span class="menu-flexible__item-text">Transparència</span></a></li></ul></li><li class="menu-flexible__item page-10 level1"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/serveis-i-tramits" ><span class="menu-flexible__item-text">Serveis i tràmits</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-179 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/serveis-i-tramits/cita-previa" ><span class="menu-flexible__item-text">Cita prèvia</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-180 level3"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/cita-previa/oficina-de-participacio-i-informacio-ciutadana-opic" ><span class="menu-flexible__item-text">Oficina de Participació i Informació Ciutadana (OPIC)</span></a></li><li class="menu-flexible__item page-181 level3"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/cita-previa/servei-dhabitatge-del-consell-comarcal" ><span class="menu-flexible__item-text">Servei d&#039;habitatge del Consell Comarcal</span></a></li><li class="menu-flexible__item page-183 level3"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/cita-previa/servei-dorientacio-laboral-de-cubelles-solcub" ><span class="menu-flexible__item-text">Servei d&#039;orientació laboral de Cubelles (SOLCUB)</span></a></li><li class="menu-flexible__item page-182 level3"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/cita-previa/zona-destacionament-regulat" ><span class="menu-flexible__item-text">Zona d&#039;estacionament regulat</span></a></li></ul></li><li class="menu-flexible__item page-82 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/oficines-municipals" ><span class="menu-flexible__item-text">Oficines municipals</span></a></li><li class="menu-flexible__item page-140 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/cataleg-de-serveis" ><span class="menu-flexible__item-text">Catàleg de Serveis</span></a></li><li class="menu-flexible__item page-31 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://ovac.cubelles.cat/absis/ead/webspublicacion/emiservicio/catala/VisorITs/24891A1DA10F4DF6B76E636E84F11358.asp" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Tràmits i gestions</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-90 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/carpeta-ciutadana" ><span class="menu-flexible__item-text">Carpeta ciutadana</span></a></li><li class="menu-flexible__item page-141 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/notificacions-electroniques" ><span class="menu-flexible__item-text">Notificacions electròniques</span></a></li><li class="menu-flexible__item page-143 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://ovac.cubelles.cat/absis/idi/arx/idiarxabsaweb/catala/asp/verificadorfirma.asp?nodeabsisini=002" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Verificació de documents</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-32 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/impostos" ><span class="menu-flexible__item-text">Impostos</span></a></li><li class="menu-flexible__item page-88 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/factura-electronica" ><span class="menu-flexible__item-text">Factura electrònica</span></a></li></ul></li><li class="menu-flexible__item page-2 level1"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/el-municipi" ><span class="menu-flexible__item-text">El Municipi</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-50 level2"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/festes-i-fires" ><span class="menu-flexible__item-text">Festes i fires</span></a></li><li class="menu-flexible__item page-34 level2"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/com-arribar-hi" ><span class="menu-flexible__item-text">Com arribar-hi</span></a></li><li class="menu-flexible__item page-35 level2"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/com-mouret" ><span class="menu-flexible__item-text">Com moure&#039;
305t</span></a></li><li class="menu-flexible__item page-36 level2"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/guia-de-carrers--planol" ><span class="menu-flexible__item-text">Guia de carrers / Plànol</span></a></li><li class="menu-flexible__item page-3 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/el-municipi/guia-del-municipi" ><span class="menu-flexible__item-text">Guia del municipi</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-37 level3"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/guia-del-municipi/equipaments" ><span class="menu-flexible__item-text">Equipaments</span></a></li><li class="menu-flexible__item page-39 level3"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/guia-del-municipi/empreses-i-comercos" ><span class="menu-flexible__item-text">Empreses i comerços</span></a></li><li class="menu-flexible__item page-40 level3"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/guia-del-municipi/entitats-i-associacions" ><span class="menu-flexible__item-text">Entitats i associacions</span></a></li><li class="menu-flexible__item page-43 level3"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/guia-del-municipi/emergencies" ><span class="menu-flexible__item-text">Emergències</span></a></li></ul></li><li class="menu-flexible__item page-7 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/el-municipi/informacio-del-municipi" ><span class="menu-flexible__item-text">Informació del municipi</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-46 level3"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/informacio-del-municipi/historia" ><span class="menu-flexible__item-text">Història</span></a></li><li class="menu-flexible__item page-47 level3"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/informacio-del-municipi/el-municipi-en-xifres" ><span class="menu-flexible__item-text">El municipi en xifres</span></a></li><li class="menu-flexible__item page-49 level3"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/informacio-del-municipi/patrimoni-cultural" ><span class="menu-flexible__item-text">Patrimoni cultural</span></a></li></ul></li><li class="menu-flexible__item page-131 level2"><a class="menu-flexible__link menu-flexible__link--dropdown menu-link--external" aria-expanded="false" href="https://turismecubelles.cat/" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Turisme</span><i class="align-middle fa fa-external-link ms-2"></i></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-146 level3"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://turismecubelles.cat/serveis/oficines-de-turisme/" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Oficina municipal de turisme</span><i class="align-middle fa fa-external-link ms-2"></i></a></li></ul></li><li class="menu-flexible__item page-48 level2"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/informacio-geografica" ><span class="menu-flexible__item-text">Informació geogràfica</span></a></li><li class="menu-flexible__item page-241 level2"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/colleccio-local" ><span class="menu-flexible__item-text">Col·lecció local</span></a></li><li class="menu-flexible__item page-41 level2"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/llocs-dinteres" ><span class="menu-flexible__item-text">Llocs d&#039;interès</span></a></li></ul></li><li class="menu-flexible__item page-4 level1"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/informacio-i-actualitat" ><span class="menu-flexible__item-text">Informació i Actualitat</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-128 level2"><a class="menu-flexible__link" aria-expanded="false" href="/informacio-i-actualitat/avisos" ><span class="menu-flexible__item-text">Avisos</span></a></li><li class="menu-flexible__item page-245 level2"><a class="menu-flexible__link" aria-expanded="false" href="/informacio-i-actualitat/matriculacio-ebm-la-draga" ><span class="menu-flexible__item-text">Matriculació escola bressol municipal La Draga</span></a></li><li class="menu-flexible__item page-53 level2"><a class="menu-flexible__link" aria-expanded="false" href="/informacio-i-actualitat/noticies" ><span class="menu-flexible__item-text">Notícies</span></a></li><li class="menu-flexible__item page-54 level2"><a class="menu-flexible__link" aria-expanded="false" href="/informacio-i-actualitat/agenda" ><span class="menu-flexible__item-text">Agenda</span></a></li><li class="menu-flexible__item page-261 level2"><a class="menu-flexible__link" aria-expanded="false" href="/informacio-i-actualitat/xarxes-socials" ><span class="menu-flexible__item-text">Xarxes socials</span></a></li><li class="menu-flexible__item page-176 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://www.youtube.com/@AjCubelles/streams" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Plens en directe</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-161 level2"><a class="menu-flexible__link" aria-expanded="false" href="/informacio-i-actualitat/mitjans-de-comunicacio-" ><span class="menu-flexible__item-text">Mitjans de comunicació </span></a></li><li class="menu-flexible__item page-55 level2"><a class="menu-flexible__link" aria-expanded="false" href="/informacio-i-actualitat/butlleti-digital" ><span class="menu-flexible__item-text">Butlletí digital</span></a></li><li class="menu-flexible__item page-56 level2"><a class="menu-flexible__link" aria-expanded="false" href="/informacio-i-actualitat/cubelles-comunica" ><span class="menu-flexible__item-text">Cubelles comunica</span></a></li><li class="menu-flexible__item page-57 level2"><a class="menu-flexible__link" aria-expanded="false" href="/informacio-i-actualitat/rss" ><span class="menu-flexible__item-text">RSS</span></a></li><li class="menu-flexible__item page-58 level2"><a class="menu-flexible__link" aria-expanded="false" href="/informacio-i-actualitat/hemeroteca" ><span class="menu-flexible__item-text">Hemeroteca</span></a></li><li class="menu-flexible__item page-189 level2"><a class="menu-flexible__link" aria-expanded="false" href="/informacio-i-actualitat/preguntes-frequents" ><span class="menu-flexible__item-text">Preguntes freqüents</span></a></li></ul></li><li class="menu-flexible__item page-164 level1"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/webs-municipals" ><span class="menu-flexible__item-text">Webs municipals</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-166 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://www.radiocubelles.cat/" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Radio Cubelles</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-165 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://participa311-cubelles.diba.cat/" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Participa cubelles</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-167 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="http://liniaverdacubelles.cat/" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Línia verda Cubelles</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-169 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="http://espaijove.cubelles.cat/" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Espai jove Cubelles</span><i class="align-middle fa fa-external-link ms-2"></i></a></li><li class="menu-flexible__item page-170 level2"><a class="menu-flexible__link" aria-expanded="false" href="/webs-municipals/portal-de-transparencia" ><span class="menu-flexible__item-text">Portal de transparència</span></a></li></ul></li></ul></div>
305<script>(function() {
306    'use strict';
307
308    // Mega panel
309
310    function initMegaPanels(navContainer) {
311        var menuItems = Array.prototype.slice.call(navContainer.querySelectorAll('[data-mega-id]'));
312        if (!menuItems.length) return;
313
314        var navUl    = navContainer.querySelector('ul');
315        var topItems = navUl
316            ? menuItems.filter(function(el) { return el.parentElement === navUl; })
317            : menuItems;
318
319        var wrapper    = navContainer.closest('.menu-flexible__wrapper');
320        var isClick    = wrapper && wrapper.getAttribute('data-expand-type') === 'click';
321
322        menuItems.forEach(function(item) {
323            var panel = getPanelForItem(item, navContainer);
324            if (!panel) return;
325
326            if (isClick) {
327                var link = item.querySelector('a');
328                if (link) {
329                    link.addEventListener('click', function(e) {
330                        // En mòbil, els elements naveguen directament sense desplegar submenús
331                        if (window.innerWidth <= 992) return;
332                        if (panel.classList.contains('mf-mega-visible')) {
333                            // Segon clic: navegar
334                            return;
335                        }
336                        e.preventDefault();
337                        hideAllMegaPanels(navContainer);
338                        showPanel(item, panel);
339                    });
340                }
341            } else {
342                var hoverDelay = parseInt(
343                    getComputedStyle(wrapper).getPropertyValue('--menu-hover-delay'), 10
344                ) || 0;
345                var hoverTimer = null;
346
347                var leaveTimer = null;
348
349                item.addEventListener('mouseenter', function() {
350                    clearTimeout(hoverTimer);
351                    clearTimeout(leaveTimer);
352                    if (hoverDelay > 0) {
353                        hoverTimer = setTimeout(function() { showPanel(item, panel); }, hoverDelay);
354                    } else {
355                        showPanel(item, panel);
356                    }
357                });
358                item.addEventListener('mouseleave', function(e) {
359                    clearTimeout(hoverTimer);
360                    if (!panel.contains(e.relatedTarget)) {
361                        leaveTimer = setTimeout(function() { hidePanel(item, panel); }, 300);
362                    }
363                });
364                panel.addEventListener('mouseenter', function() {
365                    clearTimeout(leaveTimer);
366                });
367                panel.addEventListener('mouseleave', function(e) {
368                    clearTimeout(hoverTimer);
369                    clearTimeout(leaveTimer);
370                    if (!item.contains(e.relatedTarget)) hidePanel(item, panel);
371                });
372
373                // Tàctil: fallback quan hover no disponible (només escriptori tàctil)
374                var link = item.querySelector('a');
375                if (link) {
376                    link.addEventListener('click', function(e) {
377                        if (window.matchMedia('(hover: none)').matches && window.innerWidth > 992) {
378                            if (panel.classList.contains('mf-mega-visible')) {
379                                // Segon clic en tàctil: navegar
380                                return;
381                            }
382                            e.preventDefault();
383                            hideAllMegaPanels(navContainer);
384                            showPanel(item, panel);
385                        }
386                    });
387                }
388            }
389        });
390
391        navContainer.addEventListener('keydown', function(e) {
392            handleMegaKeydown(e, navContainer, topItems);
393        });
394
395        if (!isClick) {
396            navContainer.addEventListener('focusin', function(e) {
397                var item = e.target.closest('[data-mega-id]');
398                if (!item) return;
399                var panel = getPanelForItem(item, navContainer);
400                if (!panel) return;
401                hideAllMegaPanels(navContainer);
402                showPanel(item, panel);
403            });
404        }
405
406        navContainer.addEventListener('focusout', function() {
407            setTimeout(function() {
408                if (!navContainer.contains(document.activeElement)) {
409                    hideAllMegaPanels(navContainer);
410                }
411            }, 0);
412        });
413
414        document.addEventListener('click', function(e) {
415            if (!navContainer.contains(e.target)) {
416                hideAllMegaPanels(navContainer);
417            }
418        });
419    }
420
421    function handleMegaKeydown(e, navContainer, topItems) {
422        var focused = document.activeElement;
423        if (!focused) return;
424
425        var currentItem = focused.closest('[data-mega-id]');
426        var currentPanel = focused.closest('.menu-flexible__mega-panel');
427        var key = e.key || e.code || e.keyCode;
428
429        function directLink(item) {
430            if (!item) return null;
431            return Array.prototype.slice.call(item.children).find(function(el) {
432                return el.tagName === 'A';
433            }) || item.querySelector('a');
434        }
435
436        function itemForPanel(panel) {
437            if (!panel) return null;
438            var id = panel.getAttribute('data-mega-id');
439            return id ? navContainer.querySelector('li[data-mega-id="' + id + '"]') : null;
440        }
441
442        function focusPanelLink(panel, index) {
443            var links = Array.prototype.slice.call(panel.querySelectorAll('a'));
444            if (!links.length) return;
445            links[(index + links.length) % links.length].focus();
446        }
447
448        function focusPanelSibling(panel, offset) {
449            var links = Array.prototype.slice.call(panel.querySelectorAll('a'));
450            var idx = links.indexOf(focused);
451            if (idx === -1) return;
452            links[(idx + offset + links.length) % links.length].focus();
453        }
454
455        function panelColumnForLink(link) {
456            return link ? link.closest('.menu-flexible__mega-col') : null;
457        }
458
459        function focusAdjacentPanelColumn(panel, offset) {
460            var columns = Array.prototype.slice.call(panel.querySelectorAll('.menu-flexible__mega-col'));
461            var currentColumn = panelColumnForLink(focused);
462            var idx = columns.indexOf(currentColumn);
463            if (idx === -1) return false;
464
465            var targetColumn = columns[(idx + offset + columns.length) % columns.length];
466            var targetLink = targetColumn.querySelector('a');
467            if (targetLink) {
468                targetLink.focus();
469                return true;
470            }
471
472            return false;
473        }
474
475        function focusTopItem(item, offset) {
476            var idx = topItems.indexOf(item);
477            if (idx === -1) return;
478
479            var next = topItems[(idx + offset + topItems.length) % topItems.length];
480            hideAllMegaPanels(navContainer);
481
482            var nextLink = directLink(next);
483            if (nextLink) {
484                nextLink.focus();
485                var nextPanel = getPanelForItem(next, navContainer);
486                if (nextPanel) showPanel(next, nextPanel);
487            }
488        }
489
490        switch (key) {
491            case 'Escape':
492            case 'Esc':
493            case 27: {
494                e.preventDefault();
495                hideAllMegaPanels(navContainer);
496                if (currentPanel) {
497                    var item = itemForPanel(currentPanel);
498                    var lnk = directLink(item);
499                    if (lnk) lnk.focus();
500                }
501                break;
502            }
503
504            case 'ArrowRight':
505            case 39:
506            case 'ArrowLeft':
507            case 37: {
508                var direction = (key === 'ArrowRight' || key === 39) ? 1 : -1;
509                e.preventDefault();
510
511                if (currentPanel) {
512                    if (!focusAdjacentPanelColumn(currentPanel, direction)) {
513                        var ownerItem = itemForPanel(currentPanel);
514                        focusTopItem(ownerItem, direction);
515                    }
516                    break;
517                }
518
519                if (!currentItem) return;
520                focusTopItem(currentItem, direction);
521                break;
522            }
523
524            case 'ArrowDown':
525            case 40: {
526                e.preventDefault();
527                if (currentPanel) {
528                    focusPanelSibling(currentPanel, 1);
529                    break;
530                }
531                if (!currentItem) return;
532                var panel = getPanelForItem(currentItem, navContainer);
533                if (!panel) return;
534                if (!panel.classList.contains('mf-mega-visible')) {
535                    hideAllMegaPanels(navContainer);
536                    showPanel(currentItem, panel);
537                }
538                focusPanelLink(panel, 0);
539                break;
540            }
541
542            case ' ':
543            case 'Space':
544            case 'Spacebar':
545            case 32: {
546                if (currentPanel || !currentItem) return;
547                var spacePanel = getPanelForItem(currentItem, navContainer);
548                if (!spacePanel) return;
549
550                e.preventDefault();
551                if (spacePanel.classList.contains('mf-mega-visible')) {
552                    hidePanel(currentItem, spacePanel);
553                } else {
554                    hideAllMegaPanels(navContainer);
555                    showPanel(currentItem, spacePanel);
556                }
557                break;
558            }
559
560            case 'ArrowUp':
561            case 38: {
562                if (!currentPanel) return;
563                e.preventDefault();
564                var panelLinks = Array.prototype.slice.call(currentPanel.querySelectorAll('a'));
565                var focusedIndex = panelLinks.indexOf(focused);
566
567                if (focusedIndex > 0) {
568                    focusPanelLink(currentPanel, focusedIndex - 1);
569                } else {
570                    var parentItem = itemForPanel(currentPanel);
571                    var parentLink = directLink(parentItem);
572                    if (parentLink) parentLink.focus();
573                    if (parentItem) hidePanel(parentItem, currentPanel);
574                }
575                break;
576            }
577        }
578    }
579
580    function getPanelForItem(item, navContainer) {
581        var id = item.getAttribute('data-mega-id');
582        return id
583            ? navContainer.querySelector('.menu-flexible__mega-panel[data-mega-id="' + id + '"]')
584            : null;
585    }
586
587    function showPanel(item, panel) {
588        panel.classList.add('mf-mega-visible');
589        panel.setAttribute('aria-hidden', 'false');
590        var link = item.querySelector('a');
591        if (link) link.setAttribute('aria-expanded', 'true');
592    }
593
594    function hidePanel(item, panel) {
595        panel.classList.remove('mf-mega-visible');
596        panel.setAttribute('aria-hidden', 'true');
597        var link = item.querySelector('a');
598        if (link) link.setAttribute('aria-expanded', 'false');
599    }
600
601    function hideAllMegaPanels(navContainer) {
602        navContainer.querySelectorAll('.menu-flexible__mega-panel.mf-mega-visible')
603            .forEach(function(panel) {
604                var id   = panel.getAttribute('data-mega-id');
605                var item = id ? navContainer.querySelector('li[data-mega-id="' + id + '"]') : null;
606                if (item) {
607                    hidePanel(item, panel);
608                } else {
609                    panel.classList.remove('mf-mega-visible');
610                    panel.setAttribute('aria-hidden', 'true');
611                }
612            });
613    }
614
615
616    // Tecles de fletxa (menú estàndard)
617
618    function initStandardKeyboard(wrapper) {
619        var menu = wrapper.querySelector('.menu-flexible__list');
620        if (!menu) return;
621
622        function closeAll() {
623            Array.prototype.slice.call(menu.querySelectorAll('.menu-flexible__item[focus="true"]'))
624                .forEach(function(item) {
625                    item.setAttribute('focus', 'false');
626                    var submenu = Array.prototype.slice.call(item.children).find(function(el) {
627                        return el.classList && el.classList.contains('menu-flexible__submenu');
628                    });
629                    if (submenu) {
630                        submenu.style.left = '';
631                        submenu.style.opacity = '';
632                        submenu.style.visibility = '';
633                        submenu.style.pointerEvents = '';
634                        submenu.style.transform = '';
635                    }
636                    var link = Array.prototype.slice.call(item.children).find(function(el) {
637                        return el.tagName === 'A';
638                    });
639                    if (link && link.classList.contains('menu-flexible__link--dropdown')) {
640                        link.setAttribute('aria-expanded', 'false');
641                    }
642                });
643        }
644
645        wrapper.addEventListener('keydown', function(e) {
646            handleStandardKeydown(e, menu);
647        });
648
649        wrapper.addEventListener('focusout', function() {
650            setTimeout(function() {
651                if (!wrapper.contains(document.activeElement)) {
652                    closeAll();
653                }
654            }, 0);
655        });
656    }
657
658    function handleStandardKeydown(e, menu) {
659        var focused = document.activeElement;
660        if (!focused || !menu.contains(focused)) return;
661
662        var itemSel = '.menu-flexible__item';
663        var linkSel = '.menu-flexible__link';
664
665        var currentLi = focused.closest(itemSel);
666        if (!currentLi) return;
667
668        var parentUl = currentLi.parentElement;
669        var isLevel1 = parentUl === menu;
670
671        function directLink(li) {
672            var direct = Array.prototype.slice.call(li.children).find(function(el) {
673                return el.tagName === 'A';
674            });
675            return direct || li.querySelector(linkSel);
676        }
677
678        function siblingItems(ul) {
679            return Array.prototype.slice.call(ul.children).filter(function(el) {
680                return el.matches(itemSel);
681            });
682        }
683
684        function childMenu(li) {
685            return Array.prototype.slice.call(li.children).find(function(el) {
686                return el.classList && el.classList.contains('menu-flexible__submenu');
687            });
688        }
689
690        function setSubmenuVisible(li, visible) {
691            var submenu = childMenu(li);
692            if (!submenu) return;
693
694            if (visible) {
695                submenu.style.left = li.parentElement === menu ? '0' : '100%';
696                submenu.style.opacity = '1';
697                submenu.style.visibility = 'visible';
698                submenu.style.pointerEvents = 'auto';
699                submenu.style.transform = 'none';
700            } else {
701                submenu.style.left = '';
702                submenu.style.opacity = '';
703                submenu.style.visibility = '';
704                submenu.style.pointerEvents = '';
705                submenu.style.transform = '';
706            }
707        }
708
709        function setExpanded(li, expanded) {
710            li.setAttribute('focus', expanded ? 'true' : 'false');
711            setSubmenuVisible(li, expanded);
712            var lnk = directLink(li);
713            if (lnk && lnk.classList.contains('menu-flexible__link--dropdown')) {
714                lnk.setAttribute('aria-expanded', expanded ? 'true' : 'false');
715            }
716            if (!expanded) {
717                Array.prototype.slice.call(li.querySelectorAll(itemSel + '[focus="true"]'))
718                    .forEach(function(item) {
719                        item.setAttribute('focus', 'false');
720                        setSubmenuVisible(item, false);
721                        var childLink = directLink(item);
722                        if (childLink && childLink.classList.contains('menu-flexible__link--dropdown')) {
723                            childLink.setAttribute('aria-expanded', 'false');
724                        }
725                    });
726            }
727        }
728
729        function closeSiblings(li) {
730            Array.prototype.slice.call(li.parentElement.children)
731                .filter(function(item) {
732                    return item !== li && item.matches(itemSel);
733                })
734                .forEach(function(item) {
735                    setExpanded(item, false);
736                });
737        }
738
739        function openChild(li) {
740            var submenu = childMenu(li);
741            if (!submenu) return false;
742            closeSiblings(li);
743            setExpanded(li, true);
744            var firstChild = submenu.querySelector(linkSel);
745            if (firstChild) firstChild.focus();
746            return true;
747        }
748
749        function focusSibling(offset) {
750            var sibs = siblingItems(parentUl);
751            var idx  = sibs.indexOf(currentLi);
752            var lnk  = directLink(sibs[(idx + offset + sibs.length) % sibs.length]);
753            if (lnk) lnk.focus();
754        }
755
756        var key = e.key || e.code || e.keyCode;
757
758        switch (key) {
759            case 'ArrowRight':
760            case 39: {
761                if (!isLevel1) return;
762                e.preventDefault();
763                setExpanded(currentLi, false);
764                focusSibling(1);
765                break;
766            }
767            case 'ArrowLeft':
768            case 37: {
769                if (!isLevel1) return;
770                e.preventDefault();
771                setExpanded(currentLi, false);
772                focusSibling(-1);
773                break;
774            }
775            case 'ArrowDown':
776            case 40: {
777                e.preventDefault();
778                if (focused === directLink(currentLi) && openChild(currentLi)) {
779                    break;
780                }
781                var sibsDown = siblingItems(parentUl);
782                var idxDown  = sibsDown.indexOf(currentLi);
783                if (idxDown < sibsDown.length - 1) {
784                    var lnkDown = directLink(sibsDown[idxDown + 1]);
785                    if (lnkDown) lnkDown.focus();
786                }
787                break;
788            }
789            case 'ArrowUp':
790            case 38: {
791                e.preventDefault();
792                var sibsUp = siblingItems(parentUl);
793                var idxUp  = sibsUp.indexOf(currentLi);
794                if (idxUp > 0) {
795                    var lnkUp = directLink(sibsUp[idxUp - 1]);
796                    if (lnkUp) lnkUp.focus();
797                } else if (!isLevel1) {
798                    var parentItemUp = parentUl.closest(itemSel);
799                    if (parentItemUp) {
800                        setExpanded(parentItemUp, false);
801                        var parentLinkUp = directLink(parentItemUp);
802                        if (parentLinkUp) parentLinkUp.focus();
803                    }
804                }
805                break;
806            }
807            case ' ':
808            case 'Space':
809            case 'Spacebar':
810            case 32: {
811                if (!focused.classList.contains('menu-flexible__link--dropdown')) return;
812                e.preventDefault();
813                currentLi.getAttribute('focus') === 'true'
814                    ? setExpanded(currentLi, false)
815                    : openChild(currentLi);
816                break;
817            }
818            case 'Escape':
819            case 'Esc':
820            case 27: {
821                if (isLevel1 && currentLi.getAttribute('focus') !== 'true') return;
822                e.preventDefault();
823                if (!isLevel1) {
824                    var parentItemEsc = parentUl.closest(itemSel);
825                    if (parentItemEsc) {
826                        setExpanded(parentItemEsc, false);
827                        var parentLinkEsc = directLink(parentItemEsc);
828                        if (parentLinkEsc) parentLinkEsc.focus();
829                    }
830                } else {
831                    setExpanded(currentLi, false);
832                }
833                break;
834            }
835        }
836    }
837
838
839    // Click mode: expandir submenús via [focus=true]
840
841    function initClickExpand(wrapper) {
842        var menu = wrapper.querySelector('.menu-flexible__list');
843        if (!menu) return;
844
845        var itemSel        = '.menu-flexible__item';
846        var dropdownSel    = '.menu-flexible__link--dropdown';
847
848        function closeAll(container) {
849            Array.prototype.slice.call(container.querySelectorAll(itemSel + '[focus="true"]'))
850                .forEach(function(el) { el.setAttribute('focus', 'false'); });
851        }
852
853        function closeSiblings(item) {
854            var parentUl = item.parentElement;
855            Array.prototype.slice.call(parentUl.children)
856                .filter(function(el) {
857                    return el !== item
858                        && el.matches(itemSel)
859                        && el.getAttribute('focus') === 'true';
860                })
861                .forEach(function(el) {
862                    el.setAttribute('focus', 'false');
863                    closeAll(el);
864                });
865        }
866
867        menu.addEventListener('click', function(e) {
868            var link = e.target.closest(dropdownSel);
869            if (!link || !menu.contains(link)) return;
870
871            var item = link.parentElement;
872            if (!item || !item.matches(itemSel)) return;
873
874            // En mòbil, els elements naveguen directament sense desplegar submenús
875            if (window.innerWidth <= 992) return;
876
877            var isOpen = item.getAttribute('focus') === 'true';
878
879            if (isOpen) {
880                // Segon clic: navegar
881                return;
882            }
883
884            e.preventDefault();
885            closeSiblings(item);
886            item.setAttribute('focus', 'true');
887        });
888
889        document.addEventListener('click', function(e) {
890            var openItem = menu.querySelector(itemSel + '[focus="true"]');
891            if (!openItem) return;
892            if (!openItem.contains(e.target)) {
893                closeAll(menu);
894            }
895        });
896    }
897
898
899    // Hamburger (mòbil ≤992px)
900
901    class MenuFlexible {
902        constructor(wrapper) {
903            this.wrapper   = wrapper;
904            this.hamburger = wrapper.querySelector('.menu-flexible__toggle');
905            this.menu      = wrapper.querySelector('.menu-flexible__list');
906
907            if (!this.hamburger || !this.menu) return;
908
909            var parent  = this.menu.parentElement;
910            this.isMega = parent && parent.classList.contains('menu-flexible__nav-container');
911            this.target = this.isMega ? parent : this.menu;
912
913            // Ancestre que en mòbil és barra fixa de 44px amb overflow:clip i retalla
914            // el menú desplegat. En obrir, l'eixamplem; en tancar, el restaurem.
915            this.clipper = wrapper.closest('.nav');
916
917            this.init();
918            window.addEventListener('resize', () => this.handleResize());
919        }
920
921        init() {
922            this.hamburger.addEventListener('click', (e) => {
923                e.preventDefault();
924                e.stopPropagation();
925                this.toggleMenu();
926            });
927
928            document.addEventListener('click', (e) => {
929                if (!this.wrapper.contains(e.target) && this.isOpen()) {
930                    this.closeMenu();
931                }
932            });
933
934            this.menu.querySelectorAll('a').forEach(link => {
935                link.addEventListener('click', () => {
936                    if (window.innerWidth <= 992 && this.isOpen()) {
937                        this.closeMenu();
938                    }
939                });
940            });
941        }
942
943        isOpen()     { return this.target.classList.contains('show'); }
944        toggleMenu() { this.isOpen() ? this.closeMenu() : this.openMenu(); }
945
946        liftClip() {
947            if (this.clipper && window.innerWidth <= 992) {
948                this.clipper.style.height = 'auto';
949                this.clipper.style.maxHeight = 'none';
950                this.clipper.style.overflow = 'visible';
951            }
952        }
953
954        restoreClip() {
955            if (this.clipper) {
956                this.clipper.style.height = '';
957                this.clipper.style.maxHeight = '';
958                this.clipper.style.overflow = '';
959            }
960        }
961
962        openMenu() {
963            this.target.classList.add('show');
964            this.target.style.display = this.isMega ? 'block' : 'flex';
965            if (this.isMega) this.menu.style.display = 'flex';
966            this.liftClip();
967            this.hamburger.classList.add('active');
968            this.hamburger.setAttribute('aria-expanded', 'true');
969        }
970
971        closeMenu() {
972            this.target.classList.remove('show');
973            this.target.style.display = 'none';
974            if (this.isMega) {
975                this.menu.style.display = '';
976                var nc = this.wrapper.querySelector('.menu-flexible__nav-container');
977                if (nc) hideAllMegaPanels(nc);
978            }
979            this.restoreClip();
980            this.hamburger.classList.remove('active');
981            this.hamburger.setAttribute('aria-expanded', 'false');
982        }
983
984        handleResize() {
985            if (window.innerWidth > 992) {
986                this.target.classList.remove('show');
987                this.target.style.display = '';
988                if (this.isMega) this.menu.style.display = '';
989                this.restoreClip();
990                this.hamburger.classList.remove('active');
991                this.hamburger.setAttribute('aria-expanded', 'false');
992            }
993        }
994    }
995
996
997    // Init
998
999    function init() {
1000        document.querySelectorAll('.menu-flexible__wrapper').forEach(function(wrapper) {
1001            var navContainer = wrapper.querySelector('.menu-flexible__nav-container');
1002            if (navContainer) {
1003                initMegaPanels(navContainer);
1004            } else {
1005                initStandardKeyboard(wrapper);
1006                if (wrapper.getAttribute('data-expand-type') === 'click') {
1007                    initClickExpand(wrapper);
1008                }
1009            }
1010            new MenuFlexible(wrapper);
1011            if (wrapper.getAttribute('data-menu-sticky') === 'true') {
1012                var stickyTarget = wrapper.closest('#navbar-top')
1013                                || wrapper.closest('.navbar')
1014                                || wrapper.closest('nav');
1015                if (stickyTarget) {
1016                    stickyTarget.classList.add('menu-sticky-enabled');
1017                    document.body.classList.add('has-sticky-menu');
1018
1019                    var navbarHeight   = stickyTarget.offsetHeight;
1020                    var navbarTop      = stickyTarget.getBoundingClientRect().top + window.scrollY;
1021                    var bodyPadApplied = false;
1022
1023                    function updateStickyOffset() {
1024                        navbarHeight = stickyTarget.offsetHeight;
1025                        document.documentElement.style.setProperty('--skip-links-sticky-offset', navbarHeight + 'px');
1026
1027                        if (bodyPadApplied) {
1028                            document.body.style.paddingTop = navbarHeight + 'px';
1029                        }
1030                    }
1031
1032                    function getTargetFromHash(hash) {
1033                        if (!hash || hash.charAt(0) !== '#') {
1034                            return null;
1035                        }
1036
1037                        try {
1038                            return document.getElementById(decodeURIComponent(hash.substring(1)));
1039                        } catch (error) {
1040                            return document.getElementById(hash.substring(1));
1041                        }
1042                    }
1043
1044                    function scrollToSkipTarget(hash) {
1045                        var target = getTargetFromHash(hash);
1046                        if (!target) {
1047                            return;
1048                        }
1049
1050                        updateStickyOffset();
1051
1052                        var expectedTop = target.getBoundingClientRect().top + window.scrollY - navbarHeight;
1053                        if (expectedTop > navbarTop) {
1054                            applyFixed();
1055                        } else {
1056                            removeFixed();
1057                        }
1058
1059                        try {
1060                            target.focus({ preventScroll: true });
1061                        } catch (error) {
1062                            target.focus();
1063                        }
1064
1065                        var targetTop = target.getBoundingClientRect().top + window.scrollY;
1066                        window.scrollTo(0, Math.max(targetTop - navbarHeight, 0));
1067                    }
1068
1069                    document.querySelectorAll('.skip-links a[href^="#"]').forEach(function(link) {
1070                        link.addEventListener('click', function(event) {
1071                            var hash = link.getAttribute('href');
1072                            var target = getTargetFromHash(hash);
1073                            if (!target) {
1074                                return;
1075                            }
1076
1077                            event.preventDefault();
1078
1079                            if (window.history && window.history.pushState) {
1080                                window.history.pushState(null, '', hash);
1081                            } else {
1082                                window.location.hash = hash;
1083                            }
1084
1085                            scrollToSkipTarget(hash);
1086                        });
1087                    });
1088
1089                    updateStickyOffset();
1090
1091                    function applyFixed() {
1092                        if (!stickyTarget.classList.contains('fixed-top')) {
1093                            updateStickyOffset();
1094                            stickyTarget.classList.add('fixed-top');
1095                            document.body.style.paddingTop = navbarHeight + 'px';
1096                            bodyPadApplied = true;
1097                        }
1098                    }
1099
1100                    function removeFixed() {
1101                        if (stickyTarget.classList.contains('fixed-top')) {
1102                            stickyTarget.classList.remove('fixed-top');
1103                            document.body.style.paddingTop = '';
1104                            bodyPadApplied = false;
1105                        }
1106                    }
1107
1108                    window.addEventListener('scroll', function() {
1109                        if (window.scrollY > navbarTop) {
1110                            applyFixed();
1111                        } else {
1112                            removeFixed();
1113                        }
1114                    });
1115
1116                    window.addEventListener('resize', function() {
1117                        updateStickyOffset();
1118                        if (!stickyTarget.classList.contains('fixed-top')) {
1119                            navbarTop = stickyTarget.getBoundingClientRect().top + window.scrollY;
1120                        }
1121                    });
1122
1123                    if ('ResizeObserver' in window) {
1124                        new ResizeObserver(updateStickyOffset).observe(stickyTarget);
1125                    }
1126
1127                    stickyTarget.querySelectorAll('img').forEach(function(image) {
1128                        if (!image.complete) {
1129                            image.addEventListener('load', updateStickyOffset, { once: true });
1130                        }
1131                    });
1132
1133                    window.addEventListener('load', updateStickyOffset);
1134
1135                    if (window.scrollY > navbarTop) applyFixed();
1136
1137                    if (window.location.hash) {
1138                        window.setTimeout(function() {
1139                            scrollToSkipTarget(window.location.hash);
1140                        }, 0);
1141                    }
1142                }
1143            }
1144        });
1145    }
1146
1147    if (document.readyState === 'loading') {
1148        document.addEventListener('DOMContentLoaded', init);
1149    } else {
1150        init();
1151    }
1152})();
1153</script>
1153</nav></div></div></div></div></div>        </div>        </header>
1154                <main id="main-content" tabindex="-1">
1155            <div class="content">
1156                <div class="container-xl columns " id="Path">
1157    <div class="row">
1158        <nav aria-label="breadcrumb">
1159            <ol class="breadcrumb">
1160            <li class="breadcrumb-item">
1161    <a href="/" target="_self">
1162        <span style="display: none">home</span><i class="fa fa-home" aria-hidden="true"></i>    </a>
1163    </li>
1164<li class="breadcrumb-item">
1165    <a href="/altres-continguts" target="_self">
1166        Altres continguts    </a>
1167        <button class="btn dropdown-toggle" type="button" id="defaultDropdow6" data-bs-toggle="dropdown" data-bs-auto-close="true" aria-expanded="false" aria-label="Desplega"></button>
1168    <ul class="dropdown-menu" aria-label="defaultDropdown6">
1169                    <li><a class="dropdown-item" href="/altres-continguts/avis-legal">Avís legal</a></li>
1170                    <li><a class="dropdown-item" href="/altres-continguts/proteccio-de-dades">Protecció de dades</a></li>
1171                    <li><a class="dropdown-item" href="/altres-continguts/accessibilitat">Accessibilitat</a></li>
1172                    <li><a class="dropdown-item" href="/altres-continguts/contacte">Contacte</a></li>
1173                    <li><a class="dropdown-item" href="/altres-continguts/credits">Crèdits</a></li>
1174            </ul>
1175    </li>
1176            </ol>
1177        </nav>
1178    </div>
1179</div>
1180                <div class="container-xl columns">
1181                                        <div class="row">
1182    <div class="col-xs-12 col-sm-12 col-md-3 col-lg-3 leftSidebar responsiveHeight" data-nosnippet>
1183        <nav class="menuLeft" id="Menuleft_page" aria-label="Menú Contacte">
1184                    <ul>
1185                <li class="subMenuPage-59 level2">
1186    <a href="/altres-continguts/avis-legal" target="_self">
1187        Avís legal            </a>
1188
1189    </li>
1190<li class="subMenuPage-60 level2">
1191    <a href="/altres-continguts/proteccio-de-dades" target="_self">
1192        Protecció de dades            </a>
1193
1194    </li>
1195<li class="subMenuPage-145 level2">
1196    <a href="/altres-continguts/accessibilitat" target="_self">
1197        Accessibilitat            </a>
1198
1199    </li>
1200<li class="subMenuPage-62 current level2">
1201    <a href="/altres-continguts/contacte" target="_self" aria-current="page">
1202        Contacte            </a>
1203
1204    </li>
1205<li class="subMenuPage-63 level2">
1206    <a href="/altres-continguts/credits" target="_self">
1207        Crèdits            </a>
1208
1209    </li>
1210            </ul>
1211                    </nav>
1212</div>
1213    <div class="col-xs-12 col-sm-12 col-md-9 col-lg-9 article responsiveHeight" id="readspeakerPage" tabindex="-1">
1214                    <div class="hideTablets">
1215    </div>
1216<h1 class="title"  id='title0' data-attribute="Contacte">Contacte</h1><div class="showTablets">
1217    </div>
1218<div>
1219        <div class="dinamic">
1220                                            
1221                                                                                                            <div class="ddbbtext">
1222                            <p>Aquest formulari té com a objecte la sol·licitud d'informació a la nostra corporació. Si voleu iniciar un tràmit o gestió amb l'Ajuntament, cal que consulteu i utilitzeu l'opció corresponent a l'apartat de “<a href="/serveis-i-tramits/tramits-i-gestions/">Tràmits i gestions</a>” del nostre web.</p>
1223                        </div>
1224                                        </div>            <div id="form">
1225        <form id="Form1" aria-label="Formulari de contacte" name="buildedForm" method="post" enctype="multipart/form-data" action="https://www.cubelles.cat/altres-continguts/contacte" autocomplete="on" novalidate>
1226        <button type="button" class="form-hide" aria-label="Tanca formulari" onclick="$('#Form1 .form-body').slide
1226Up('fold', function () { setEqualHeight($('.content .container > div.enlarge'));$('#Form1 .form-show').show(); $('#Form1 .form-hide').hide(); });">
1227            <i class="fa fa-chevron-up" aria-hidden="true"></i>
1228        </button>
1229        <button type="button" class="form-show" aria-label="Mostra formulari" style="display:none;" onclick="$('#Form1 .form-body').slideDown('fold', function () { $('#Form1 .form-show').hide(); $('#Form1 .form-hide').show(); });">
1230            <i class="fa fa-chevron-down" aria-hidden="true"></i>
1231        </button>
1232        <h2 class="form-title ">Formulari de contacte </h2>
1233                <div class="form-body">
1234            <div> </div>
1235            <div id="errorSubmit" class="container"></div>
1236            <input type="hidden" name="cm_form" value="1"/>
1237                        <input type="hidden" name="idform" value="1">
1238            <input type="hidden" name="cref" value="1">
1239            <input type="hidden" name="titol" value="Formulari de contacte">
1240            <input type="hidden" name="rload" value="https://www.cubelles.cat/altres-continguts/contacte">
1241            <!--TODO revisió om fer el honeypot que no doni errors d'accessibilitat-->
1242            <div class="honeypot" aria-hidden="true">
1243                <label for="extra_option_text" class="visually-hidden">No omplir</label>
1244                <input type="text" id="extra_option_text" name="extra_option_text" tabindex="-1" autocomplete="off">
1245            </div>
1246            <p class="text-danger">Els camps marcats amb un asterisc (*) són obligatoris.</p><div id='form1-1'  class="form-field">
1247    <span id='sprytextfield1'>
1248        <label for="1" title="Nom i cognoms" class="form-field-title">
1249            Nom i cognoms                    </label>
1250        <input id="1" 
1251            name="field_1" 
1252            size="47"                        type='text' 
1253            value=""
1254                        autocomplete = "off"
1255                        placeholder=""
1256                                />
1257            </span>
1258</div>
1259<div id='form1-2' class="form-field">
1260    <span id='sprytextfield2'>
1261        <label for="2" class="form-field-title">
1262            Adreça electrònica            <span class="form-field-required">*</span>        </label>
1263        <input
1264                        required            size="47"                        type='email' name="field_2"
1265            id="2"
1266            value=""
1267            placeholder=""
1268            autocomplete="email"
1269        />
1270                        <label for="copia_2" class="form-field-title">Adreça electrònica (còpia)</label>
1271            <input style="border-left-width: 8px;" 
1272                   size="47"                   autocomplete="email"
1273                                      type='email' name="copia_field_2"
1274                   id="copia_2"
1275                   value=""
1276                                       required                   placeholder=""
1277            />
1278            <span class="help">S'ha d'escriure dues vegades per assegurar que l'escrivim correctament.</span>
1279            </span>
1280</div>
1281<div id='form1-4'  class="form-field">
1282    <span id='sprytextfield4' >
1283        <label for="4" class="form-field-title">
1284            Comentari o consulta                    </label>
1285                        <textarea id="4" name="field_4" rows="2" cols="37" placeholder=""   autocomplete = "off"></textarea>
1286            </span>
1287</div>
1288                        <div class="rgpd-box"><div class="page-62 js-widget o-widget clearfix boxBX  default "  >  <div class="o-widget-wrapper clearfix default-BX   row  o-widget-wrapper--title-top o-widget-wrapper--title-style-text" ><div class="o-widget-title-slot o-widget__title"><span>Protecció de dades</span></div><div class="o-widget-container "><p>Per tal de realitzar la petició, necessitem el vostre consentiment expr&eacute;s i, per tant, caldr&agrave; que marqueu la casella &ldquo;S&Iacute;, DONO EL MEU CONSENTIMENT&rdquo;.</p>
1289
1290<p>Abans de prestar el vostre consentiment cal que llegiu la informaci&oacute; de protecci&oacute; de dades seg&uuml;ent:</p>
1291
1292<table cellpadding="10" width="430">
1293	<tbody>
1294		<tr>
1295			<td valign="top" width="150px">
1296			<p>Responsable:&nbsp;</p>
1297			</td>
1298			<td>
1299			<p>Ajuntament de Cubelles<br />
1300Adre&ccedil;a:&nbsp;Plaça de la Vila, 1, 08880 Cubelles<br />
1301Tel&egrave;fon: 938 950 300<br />
1302Correu electr&ograve;nic: [email protected]
1303</p>
1304
1305		</tr>
1306		<tr>
1307			<td valign="top">
1308			<p>Finalitat:</p>
1309			</td>
1310			<td>
1311			<p>Gesti&oacute; de l&rsquo;enviament del formulari.</p>
1312			</td>
1313		</tr>
1314		<tr>
1315			<td valign="top">
1316			<p>Legitimaci&oacute;:</p>
1317			</td>
1318			<td>
1319			<p>Consentiment de la persona interessada.</p>
1320			</td>
1321		</tr>
1322		<tr>
1323			<td valign="top">
1324			<p>Destinataris:</p>
1325			</td>
1326			<td>
1327			<p>Les dades no seran cedides a tercers, tret d&rsquo;una obligaci&oacute; legal.</p>
1328			</td>
1329		</tr>
1330		<tr>
1331			<td valign="top">
1332			<p>Exercici de drets:</p>
1333			</td>
1334			<td>
1335			<p>Podreu exercir els drets d&rsquo;acc&eacute;s, rectificaci&oacute;, supressi&oacute;, oposici&oacute; i limitaci&oacute; en el tractament de les vostres dades a trav&eacute;s de la seu electr&ograve;nica.</p>
1336			</td>
1337		</tr>
1338		<tr>
1339			<td valign="top">
1340			<p>M&eacute;s Informaci&oacute;:</p>
1341			</td>
1342			<td>
1343			<p>Podeu trobar m&eacute;s informaci&oacute; a l&#39;apartat de <a href='/proteccio-dades' rel='noopener' target='_blank'>protecci&oacute; de dades</a>.&nbsp;</p>
1344			</td>
1345		</tr>
1346	</tbody>
1347</table>
1348
1349</div>  </div></div></div>                        <div class="form-consent">
1350                <div class="form-consent__field">
1351                    <input type="checkbox" required="" value="acceptterms" name="acceptterms" id="acceptterms">
1352                    <label for="acceptterms">SÍ, DONO EL MEU CONSENTIMENT.</label>
1353                </div>
1354            </div>
1355                        <div class="alert ko captcha-error" role="alert" aria-live="assertive" hidden>
1356    No s'ha pogut validar el filtre anti-spam. Torneu-ho a provar.</div>
1357<script>
1358    (function () {
1359        var formId = "Form1";
1360        var siteKey = "6LeLKX4rAAAAAA5aWiRCXBM764EVSpGbEPchGvBg";
1361        var action = "formulari_1";
1362        var form = document.getElementById(formId);
1363
1364        if (!form) {
1365            return;
1366        }
1367
1368        action = action.replace(/[^a-zA-Z0-9_\/]/g, '_').substring(0, 50);
1369
1370        if (!window.barnaRecaptchaV3Loader) {
1371            window.barnaRecaptchaV3Loader = (function () {
1372                var loadingPromise = null;
1373                var configuredSiteKey = null;
1374                var scriptElement = null;
1375                var loadTimeout = 15000;
1376
1377                function isReady() {
1378                    return typeof window.grecaptcha !== 'undefined'
1379                        && typeof window.grecaptcha.ready === 'function'
1380                        && typeof window.grecaptcha.execute === 'function';
1381                }
1382
1383                function load(requestedSiteKey) {
1384                    if (isReady()) {
1385                        return Promise.resolve(window.grecaptcha);
1386                    }
1387
1388                    if (configuredSiteKey !== null && configuredSiteKey !== requestedSiteKey) {
1389                        return Promise.reject(new Error('reCAPTCHA v3 ja s\'ha inicialitzat amb una altra clau.'));
1390                    }
1391
1392                    configuredSiteKey = requestedSiteKey;
1393
1394                    if (loadingPromise !== null) {
1395                        return loadingPromise;
1396                    }
1397
1398                    loadingPromise = new Promise(function (resolve, reject) {
1399                        var settled = false;
1400                        var timeoutId = null;
1401
1402                        function cleanupListeners() {
1403                            if (!scriptElement) {
1404                                return;
1405                            }
1406
1407                            scriptElement.removeEventListener('load', handleLoad);
1408                            scriptElement.removeEventListener('error', handleError);
1409                        }
1410
1411                        function resolveWhenReady() {
1412                            if (settled) {
1413                                return;
1414                            }
1415
1416                            if (
1417                                typeof window.grecaptcha === 'undefined'
1418                                || typeof window.grecaptcha.ready !== 'function'
1419                            ) {
1420                                rejectLoad(new Error('La API de reCAPTCHA v3 no està disponible.'));
1421                                return;
1422                            }
1423
1424                            window.grecaptcha.ready(function () {
1425                                if (settled) {
1426                                    return;
1427                                }
1428
1429                                if (typeof window.grecaptcha.execute !== 'function') {
1430                                    rejectLoad(new Error('La API de reCAPTCHA v3 no es pot executar.'));
1431                                    return;
1432                                }
1433
1434                                settled = true;
1435                                window.clearTimeout(timeoutId);
1436                                cleanupListeners();
1437                                resolve(window.grecaptcha);
1438                            });
1439                        }
1440
1441                        function rejectLoad(error) {
1442                            if (settled) {
1443                                return;
1444                            }
1445
1446                            settled = true;
1447                            window.clearTimeout(timeoutId);
1448                            cleanupListeners();
1449
1450                            if (scriptElement && scriptElement.parentNode) {
1451                                scriptElement.parentNode.removeChild(scriptElement);
1452                            }
1453                            scriptElement = null;
1454                            reject(error);
1455                        }
1456
1457                        function handleLoad() {
1458                            resolveWhenReady();
1459                        }
1460
1461                        function handleError() {
1462                            rejectLoad(new Error('No s\'ha pogut carregar la API de reCAPTCHA v3.'));
1463                        }
1464
1465                        scriptElement = document.createElement('script');
1466                        scriptElement.src = 'https://www.google.com/recaptcha/api.js?render=' + encodeURIComponent(requestedSiteKey);
1467                        scriptElement.async = true;
1468                        scriptElement.defer = true;
1469                        scriptElement.setAttribute('data-barna-recaptcha-v3', 'true');
1470                        scriptElement.addEventListener('load', handleLoad);
1471                        scriptElement.addEventListener('error', handleError);
1472
1473                        timeoutId = window.setTimeout(function () {
1474                            rejectLoad(new Error('Temps d\'espera exhaurit carregant reCAPTCHA v3.'));
1475                        }, loadTimeout);
1476
1477                        document.head.appendChild(scriptElement);
1478                    }).then(function (recaptcha) {
1479                        loadingPromise = null;
1480                        return recaptcha;
1481                    }, function (error) {
1482                        loadingPromise = null;
1483                        throw error;
1484                    });
1485
1486                    return loadingPromise;
1487                }
1488
1489                return {
1490                    load: load
1491                };
1492            })();
1493        }
1494
1495        var loader = window.barnaRecaptchaV3Loader;
1496        var submitInProgress = false;
1497        var currentAttempt = 0;
1498        var operationTimeout = 15000;
1499
1500        function getSubmitButton() {
1501            return form.querySelector('input[type="submit"], button[type="submit"]');
1502        }
1503
1504        function getErrorMessage() {
1505            return form.querySelector('.captcha-error');
1506        }
1507
1508        function hideErrorMessage() {
1509            var errorMessage = getErrorMessage();
1510            if (errorMessage) {
1511                errorMessage.hidden = true;
1512            }
1513        }
1514
1515        function showErrorMessage() {
1516            var errorMessage = getErrorMessage();
1517            if (errorMessage) {
1518                errorMessage.hidden = false;
1519            }
1520        }
1521
1522        function removeCurrentToken() {
1523            var currentToken = form.querySelector('input[name="g-recaptcha-response"]');
1524            if (currentToken && currentToken.parentNode) {
1525                currentToken.parentNode.removeChild(currentToken);
1526            }
1527        }
1528
1529        function addToken(token) {
1530            var tokenField = document.createElement('input');
1531            tokenField.type = 'hidden';
1532            tokenField.name = 'g-recaptcha-response';
1533            tokenField.value = token;
1534            form.insertBefore(tokenField, form.firstChild);
1535        }
1536
1537        function setSubmitDisabled(disabled) {
1538            var submitButton = getSubmitButton();
1539            if (submitButton) {
1540                submitButton.disabled = disabled;
1541            }
1542        }
1543
1544        function withTimeout(promise, timeout) {
1545            return new Promise(function (resolve, reject) {
1546                var settled = false;
1547                var timeoutId = window.setTimeout(function () {
1548                    if (settled) {
1549                        return;
1550                    }
1551
1552                    settled = true;
1553                    reject(new Error('Temps d\'espera exhaurit validant reCAPTCHA v3.'));
1554                }, timeout);
1555
1556                promise.then(function (result) {
1557                    if (settled) {
1558                        return;
1559                    }
1560
1561                    settled = true;
1562                    window.clearTimeout(timeoutId);
1563                    resolve(result);
1564                }, function (error) {
1565                    if (settled) {
1566                        return;
1567                    }
1568
1569                    settled = true;
1570                    window.clearTimeout(timeoutId);
1571                    reject(error);
1572                });
1573            });
1574        }
1575
1576        function resetSubmit(attempt, showCaptchaError) {
1577            if (attempt !== currentAttempt) {
1578                return;
1579            }
1580
1581            currentAttempt++;
1582            submitInProgress = false;
1583            removeCurrentToken();
1584            setSubmitDisabled(false);
1585
1586            if (showCaptchaError) {
1587                showErrorMessage();
1588            }
1589        }
1590
1591        form.onsubmit = function (evt) {
1592            evt.preventDefault();
1593
1594            if (submitInProgress) {
1595                return false;
1596            }
1597
1598            submitInProgress = true;
1599            var attempt = ++currentAttempt;
1600
1601            hideErrorMessage();
1602            removeCurrentToken();
1603            setSubmitDisabled(true);
1604
1605            var tokenPromise = loader.load(siteKey).then(function (recaptcha) {
1606                if (attempt !== currentAttempt) {
1607                    throw new Error('Intent de reCAPTCHA v3 cancel·lat.');
1608                }
1609
1610                return recaptcha.execute(siteKey, {action: action});
1611            });
1612
1613            withTimeout(tokenPromise, operationTimeout).then(function (token) {
1614                if (attempt !== currentAttempt) {
1615                    return;
1616                }
1617
1618                if (typeof token !== 'string' || token.trim() === '') {
1619                    throw new Error('reCAPTCHA v3 ha retornat un token buit.');
1620                }
1621
1622                addToken(token);
1623
1624                if (reviewForm(form) !== true) {
1625                    resetSubmit(attempt, false);
1626                    return;
1627                }
1628
1629                HTMLFormElement.prototype.submit.call(form);
1630            }).catch(function () {
1631                resetSubmit(attempt, true);
1632            });
1633
1634            return false;
1635        };
1636
1637        // Inicia la càrrega en renderitzar la pàgina per mantenir el context de reCAPTCHA v3.
1638        // Si falla, el primer submit tornarà a intentar-la i mostrarà l'error només si no es recupera.
1639        loader.load(siteKey).catch(function () {});
1640    })();
1641</script>
1641
1642
1643            
1644            <input type="submit" id="buttonSubmit" value="Enviar" class="btn" aria-label='Enviar'>
1645        </div>
1646    </form>
1647    
1648    </div>
1649
1650<div id="formCancel"></div>
1651<script>
1652    function calcul_total() {
1653        var total = 0;
1654        $("input[id$=_total]").each(function() {
1655                const id_total       = $(this).attr('id');
1656                const id             = id_total.replace('_total','');
1657                const id_quantitat   = id_total.replace('_total','_quantitat');
1658                const id_percentatge = id_total.replace('_total','_percentatge');
1659                const id_preu        = id_total.replace('_total','_preu');
1660                const id_select      = id_total.replace('_total','_select_field');
1661                if ( ($("#"+id_quantitat).length) ) {
1662                    t = parseFloat($("#"+id).val().replace(',','.'))
1663                                *
1664                             parseFloat($("#"+id_quantitat).val().replace(',','.'));
1665
1666                }
1667                if ( ($("#"+id_preu).length) ) {
1668                    t = parseFloat($("#"+id).val().replace(',','.'))
1669                                *
1670                             parseFloat($("#"+id_preu).val().replace(',','.'));
1671                }
1672                if ( ($("#"+id_percentatge).length) ) {
1673                    t = parseFloat($("#"+id).val().replace(',','.'))
1674                                *
1675                             parseFloat($("#"+id_percentatge).val().replace(',','.'))/100;
1676                }
1677                if ( ($("#"+id_select).length) ) {
1678                    t = parseFloat($("#"+id+'_total').val().replace(',','.'));
1679                }
1680                if (!isNaN(t)) { total += t;}
1681        });
1682        return (total);
1683    }
1684    window.addEventListener('load', function(){
1685        // càlcul subtotals abans de la interacció de l'usuari
1686        for (let i = 0; i < 100; i++) {
1687            if (typeof window["quantityChange_"+i] === "function") {
1688                console.log("quantityChange_"+i+" is a function");
1689                window["quantityChange_"+i]();
1690            }
1691            if (typeof window["priceChange_"+i] === "function") {
1692                console.log("priceChange_"+i+" is a function");
1693                window["priceChange_"+i]();
1694            }
1695        }
1696        // càlcul total
1697        if (typeof window["calcul_total"] === "function") {
1698            valorMostrar = ((Math.round((calcul_total() + Number.EPSILON) * 100) / 100) + "").replace('.', ',')
1699            const numberFormat = new Intl.NumberFormat('es-ES');
1700            const stringNumber = valorMostrar.toString().replace(',', '.');
1701            $("#Total_total").text(numberFormat.format(stringNumber)+" Euros");
1702            $("#total").val(calcul_total());
1703        }
1704    });
1705</script>
1705
1706                            </div>
1707<div class="hideTablets">
1708                            </div>
1709<div id="share"><div class="js-widget o-widget clearfix boxBX  default "  >  <div class="o-widget-wrapper clearfix default-BX   row " ><div class="o-widget-container "><div class="o-share o-share--icones_rodones">
1710    
1711    <div class="o-share__list">
1712                    <a
1713                class="o-share__link o-share__link--facebook"
1714                href="https://www.facebook.com/sharer/sharer.php?u=https%3A%2F%2Fwww.cubelles.cat%2Faltres-continguts%2Fcontacte"
1715                target="_blank"
1716                rel="noopener"
1717                title="Facebook"
1718            >
1719                <span class="o-share__icon" aria-hidden="true">
1720                    <i class="fa-brands fa-facebook-f"></i>
1721                </span>
1722                <span class="visually-hidden">Facebook</span>
1723            </a>
1724                    <a
1725                class="o-share__link o-share__link--x"
1726                href="https://twitter.com/intent/tweet?text=Contacte&amp;url=https%3A%2F%2Fwww.cubelles.cat%2Faltres-continguts%2Fcontacte"
1727                target="_blank"
1728                rel="noopener"
1729                title="X"
1730            >
1731                <span class="o-share__icon" aria-hidden="true">
1732                    <i class="fa-brands fa-x-twitter"></i>
1733                </span>
1734                <span class="visually-hidden">X</span>
1735            </a>
1736            </div>
1737</div>
1738</div>  </div></div></div>
1739<span class="updated">Darrera actualització: 21.10.2021 | 11:15</span>
1740                </div>
1741    </div>
1742                </div>
1743            </div>
1744        </main>
1745        <footer id="footer-content" tabindex="-1">
1746            <div class="footer">
1747    <div class="shortcuts">
1748    <div class="container-xl">            
1749        <div class="featuredItem responsiveHeight">
1750    <h2 class="title">RSS</h2>
1751    <p class="subtitle">L'actualitat a un clic</p>
1752    <ul id="cm_rss">
1753        <li style="background-image: url('/front/view/images/ico_16_rss.png');">
1754    <a href="/rss/12">
1755           Agenda    </a>
1756</li>
1757<li style="background-image: url('/front/view/images/ico_16_rss.png');">
1758    <a href="/rss/13">
1759           Avisos    </a>
1760</li>
1761<li style="background-image: url('/front/view/images/ico_16_rss.png');">
1762    <a href="/rss/11">
1763           Notícies    </a>
1764</li>
1765<li style="background-image: url('/front/view/images/ico_16_rss.png');">
1766    <a href="/rss/26">
1767           Processos selectius    </a>
1768</li>
1769<li style="background-image: url('/front/view/images/ico_16_rss.png');">
1770    <a href="/rss/14">
1771           Publicacions    </a>
1772</li>
1773    </ul>
1774</div>
1775<div class="featuredItem responsiveHeight">
1776    <h2 class="title">Adreces i telèfons</h2>
1777    
1778    <img width="96" height="96" src="/front/view/images/icons/plugin_home.png" alt="">
1779
1780    <p class="elem_button">
1781        <a href="/adreces-i-telefons" aria-label="Adreces i telèfons">
1782            Accedeix        </a>
1783    </p>
1784</div>
1785<div class="featuredItem">
1786    <h2 class="title">Meteo</h2>
1787    <div id="cm_meteocat">
1788        <ul class="bxslider">
1789            <li>
1790    Dissabte, 3 d’octubre    <img width="80" height="80"
1791        alt="plugim"
1792        src="/front/view/images/meteocat/plugim.png"
1793    >
1794    <p>
1795        T.Màx: 26&deg;
1796        <br>
1797        T.Min: 18&deg;
1798    </p>
1799            <p>
1800            Tarda
1801            <img alt="xàfec" width="24" height="24"
1802                src="/front/view/images/meteocat/pluja.png"
1803            >
1804        </p>
1805    </li>
1806<li>
1807    Diumenge, 4 d’octubre    <img width="80" height="80"
1808        alt="plugim"
1809        src="/front/view/images/meteocat/plugim.png"
1810    >
1811    <p>
1812        T.Màx: 25&deg;
1813        <br>
1814        T.Min: 19&deg;
1815    </p>
1816    </li>
1817        </ul>
1818        <div class="outside">
1819            <p><span id="slider-prev"></span><span id="slider-next"></span></p>
1820        </div>
1821
1822    </div>
1823</div>
1824<div class="featuredItem responsiveHeight">
1825    <h2 class="title">Butlletí digital</h2>
1826    <img width="96" height="96" src="/front/view/images/icons/plugin_newsletter.png" alt="">
1827    <p class="elem_button">
1828        <a href="/informacio-i-actualitat/butlleti-digital" aria-label="Butlletí digital">
1829            Subscriu-te        </a>
1830    </p>
1831</div>
1832<div id="cm_planol" class="featuredItem responsiveHeight">
1833    <h2 class="title">Plànol / Carrers</h2>
1834
1835    <img width="96" height="96" src="/front/view/images/icons/plugin_map.png" alt="">
1836
1837    <p class="elem_button">
1838        <a href="/el-municipi/guia-de-carrers--planol" aria-label="Plànol">
1839            Accedeix        </a>
1840    </p>
1841</div>
1842    </div>
1843</div>
1844    <div class="hightlights">
1845        <div class="container-xl">
1846                    </div>
1847    </div>
1848    <nav class="menu" aria-label="Peu de menú">
1849        <ul class="container-xl sitemap">
1850            <li class="page-1 Inferior">  <a class="page-1" href="/ajuntament" target="_self" >Ajuntament  </a><ul id="footer-menu-1"><li class="subMenuPage-12">  <a class="subMenuPage-12" href="/ajuntament/salutacio-de-lalcaldessa" target="_self" >Salutació de l'Alcaldessa  </a></li><li class="subMenuPage-8">  <a class="subMenuPage-8" href="/ajuntament/consistori" target="_self" >Consistori  </a></li><li class="subMenuPage-149">  <a class="subMenuPage-149" href="/ajuntament/organs-de-govern" target="_self" >Òrgans de govern  </a></li><li class="subMenuPage-151">  <a class="subMenuPage-151" href="/ajuntament/organitzacio-interna" target="_self" >Organització interna  </a></li><li class="subMenuPage-153">  <a class="subMenuPage-153" href="/ajuntament/convocatories-de-personal" target="_self" >Convocatòries de personal  </a></li><li class="subMenuPage-154">  <a class="subMenuPage-154" href="/ajuntament/hisenda-i-contractacio" target="_self" >Hisenda i contractació  </a></li><li class="subMenuPage-16">  <a class="subMenuPage-16" href="/ajuntament/plans-campanyes-i-programes" target="_self" >Plans, campanyes i programes  </a></li><li class="subMenuPage-156">  <a class="subMenuPage-156" href="/ajuntament/anuncis-i-resolucions" target="_self" >Anuncis i Resolucions  </a></li><li class="subMenuPage-126">  <a class="subMenuPage-126" href="/ajuntament/normativa" target="_self" >Normativa  </a></li><li class="subMenuPage-236">  <a class="subMenuPage-236" href="/ajuntament/subvencions" target="_self" >Subvencions  </a></li><li class="subMenuPage-229">  <a class="subMenuPage-229" href="/ajuntament/urbanisme" target="_self" >Urbanisme  </a></li><li class="subMenuPage-160">  <a class="subMenuPage-160" href="https://seu-e.cat/ca/web/cubelles/govern-obert-i-transparencia/gestio-economica/patrimoni/inventari-general-del-patrimoni" target="_blank" rel="noopener noreferrer" >Patrimoni<i class="fa fa-external-link"></i>
1850  </a></li><li class="subMenuPage-122">  <a class="subMenuPage-122" href="/ajuntament/seu-electronica" target="_self" >Seu electrònica  </a></li><li class="subMenuPage-123">  <a class="subMenuPage-123" href="/ajuntament/transparencia" target="_self" >Transparència  </a></li></ul></li><li class="page-10 Inferior">  <a class="page-10" href="/serveis-i-tramits" target="_self" >Serveis i tràmits  </a><ul id="footer-menu-10"><li class="subMenuPage-179">  <a class="subMenuPage-179" href="/serveis-i-tramits/cita-previa" target="_self" >Cita prèvia  </a></li><li class="subMenuPage-82">  <a class="subMenuPage-82" href="/serveis-i-tramits/oficines-municipals" target="_self" >Oficines municipals  </a></li><li class="subMenuPage-140">  <a class="subMenuPage-140" href="/serveis-i-tramits/cataleg-de-serveis" target="_self" >Catàleg de Serveis  </a></li><li class="subMenuPage-31">  <a class="subMenuPage-31" href="https://ovac.cubelles.cat/absis/ead/webspublicacion/emiservicio/catala/VisorITs/24891A1DA10F4DF6B76E636E84F11358.asp" target="_blank" rel="noopener noreferrer" >Tràmits i gestions<i class="fa fa-external-link"></i>  </a></li><li class="subMenuPage-90">  <a class="subMenuPage-90" href="/serveis-i-tramits/carpeta-ciutadana" target="_self" >Carpeta ciutadana  </a></li><li class="subMenuPage-141">  <a class="subMenuPage-141" href="/serveis-i-tramits/notificacions-electroniques" target="_self" >Notificacions electròniques  </a></li><li class="subMenuPage-143">  <a class="subMenuPage-143" href="https://ovac.cubelles.cat/absis/idi/arx/idiarxabsaweb/catala/asp/verificadorfirma.asp?nodeabsisini=002" target="_blank" rel="noopener noreferrer" >Verificació de documents<i class="fa fa-external-link"></i>  </a></li><li class="subMenuPage-32">  <a class="subMenuPage-32" href="/serveis-i-tramits/impostos" target="_self" >Impostos  </a></li><li class="subMenuPage-88">  <a class="subMenuPage-88" href="/serveis-i-tramits/factura-electronica" target="_self" >Factura electrònica  </a></li></ul></li><li class="page-2 Inferior">  <a class="page-2" href="/el-municipi" target="_self" >El Municipi  </a><ul id="footer-menu-2"><li class="subMenuPage-50">  <a class="subMenuPage-50" href="/el-municipi/festes-i-fires" target="_self" >Festes i fires  </a></li><li class="subMenuPage-34">  <a class="subMenuPage-34" href="/el-municipi/com-arribar-hi" target="_self" >Com arribar-hi  </a></li><li class="subMenuPage-35">  <a class="subMenuPage-35" href="/el-municipi/com-mouret" target="_self" >Com moure't  </a></li><li class="subMenuPage-36">  <a class="subMenuPage-36" href="/el-municipi/guia-de-carrers--planol" target="_self" >Guia de carrers / Plànol  </a></li><li class="subMenuPage-3">  <a class="subMenuPage-3" href="/el-municipi/guia-del-municipi" target="_self" >Guia del municipi  </a></li><li class="subMenuPage-7">  <a class="subMenuPage-7" href="/el-municipi/informacio-del-municipi" target="_self" >Informació del municipi  </a></li><li class="subMenuPage-131">  <a class="subMenuPage-131" href="https://turismecubelles.cat/" target="_blank" rel="noopener noreferrer" >Turisme<i class="fa fa-external-link"></i>  </a></li><li class="subMenuPage-48">  <a class="subMenuPage-48" href="/el-municipi/informacio-geografica" target="_self" >Informació geogràfica  </a></li><li class="subMenuPage-241">  <a class="subMenuPage-241" href="/el-municipi/colleccio-local" target="_self" >Col·lecció local  </a></li><li class="subMenuPage-41">  <a class="subMenuPage-41" href="/el-municipi/llocs-dinteres" target="_self" >Llocs d'interès  </a></li></ul></li><li class="page-4 Inferior">  <a class="page-4" href="/informacio-i-actualitat" target="_self" >Informació i Actualitat  </a><ul id="footer-menu-4"><li class="subMenuPage-128">  <a class="subMenuPage-128" href="/informacio-i-actualitat/avisos" target="_self" >Avisos  </a></li><li class="subMenuPage-245">  <a class="subMenuPage-245" href="/informacio-i-actualitat/matriculacio-ebm-la-draga" target="_self" >Matriculació escola bressol municipal La Draga  </a></li><li class="subMenuPage-53">  <a class="subMenuPage-53" href="/informacio-i-actualitat/noticies" target="_self" >Notícies  </a></li><li class="subMenuPage-54">  <a class="subMenuPage-54" href="/informacio-i-actualitat/agenda" target="_self" >Agenda  </a></li><li class="subMenuPage-261">  <a class="subMenuPage-261" href="/informacio-i-actualitat/xarxes-socials" target="_self" >
1850Xarxes socials  </a></li><li class="subMenuPage-176">  <a class="subMenuPage-176" href="https://www.youtube.com/@AjCubelles/streams" target="_blank" rel="noopener noreferrer" >Plens en directe<i class="fa fa-external-link"></i>  </a></li><li class="subMenuPage-161">  <a class="subMenuPage-161" href="/informacio-i-actualitat/mitjans-de-comunicacio-" target="_self" >Mitjans de comunicació   </a></li><li class="subMenuPage-55">  <a class="subMenuPage-55" href="/informacio-i-actualitat/butlleti-digital" target="_self" >Butlletí digital  </a></li><li class="subMenuPage-56">  <a class="subMenuPage-56" href="/informacio-i-actualitat/cubelles-comunica" target="_self" >Cubelles comunica  </a></li><li class="subMenuPage-57">  <a class="subMenuPage-57" href="/informacio-i-actualitat/rss" target="_self" >RSS  </a></li><li class="subMenuPage-58">  <a class="subMenuPage-58" href="/informacio-i-actualitat/hemeroteca" target="_self" >Hemeroteca  </a></li><li class="subMenuPage-189">  <a class="subMenuPage-189" href="/informacio-i-actualitat/preguntes-frequents" target="_self" >Preguntes freqüents  </a></li></ul></li>        </ul>
1851    </nav>
1852    <div class="links">
1853        <div class="container-xl">
1854            <div class="row">
1855                <div class="xxss col-md-6 col-sm-6 col-lg-6 middle">                
1856                        <span class="titol">Xarxes socials:</span>
1857  
1858    <a target="_blank" aria-label="Twitter" href="https://x.com/ajcubelles" title="Obre en finestra nova: Twitter">
1859        <span style="display: none">Twitter</span>
1860        <img src="/front/view/images/icons/social/twitter.png" alt="Twitter" width="32" height="32">
1861    </a>
1862  
1863    <a target="_blank" aria-label="Facebook" href="https://www.facebook.com/ajcubelles/" title="Obre en finestra nova: Facebook">
1864        <span style="display: none">Facebook</span>
1865        <img src="/front/view/images/icons/social/facebook.png" alt="Facebook" width="32" height="32">
1866    </a>
1867  
1868    <a target="_blank" aria-label="Flickr" href="https://www.flickr.com/photos/ajcubelles/albums/" title="Obre en finestra nova: Flickr">
1869        <span style="display: none">Flickr</span>
1870        <img src="/front/view/images/icons/social/flickr.png" alt="Flickr" width="32" height="32">
1871    </a>
1872  
1873    <a target="_blank" aria-label="Youtube" href="https://www.youtube.com/ajCubelles" title="Obre en finestra nova: Youtube">
1874        <span style="display: none">Youtube</span>
1875        <img src="/front/view/images/icons/social/youtube.png" alt="Youtube" width="32" height="32">
1876    </a>
1877  
1878    <a target="_blank" aria-label="Instagram" href="https://www.instagram.com/ajcubelles/" title="Obre en finestra nova: Instagram">
1879        <span style="display: none">Instagram</span>
1880        <img src="/front/view/images/icons/social/instagram.png" alt="Instagram" width="32" height="32">
1881    </a>
1882                </div>
1883                <div class="col-md-6 col-sm-6 col-lg-6 middle">
1884                    <nav class="menu"><ul id="Inferior2"><li class="page-63">  <a href="/altres-continguts/credits" target="_self" >Crèdits  </a></li><li class="page-62">  <a href="/altres-continguts/contacte" target="_self" >Contacte  </a></li><li class="page-60">  <a href="/altres-continguts/proteccio-de-dades" target="_self" >Protecció de dades  </a></li><li class="page-59">  <a href="/altres-continguts/avis-legal" target="_self" >Avís legal  </a></li><li class="page-145">  <a href="/altres-continguts/accessibilitat" target="_self" >Accessibilitat  </a></li></ul></nav>                </div>
1885            </div>
1886        </div>
1887    </div>
1888    <div class="contact">
1889        <div class="container-xl">
1890            <div class="row">
1891                <address class="address col-md-6 col-sm-6 col-lg-6">
1892    <div class="title">
1893        Ajuntament de Cubelles    </div>
1894    Plaça de la Vila, 1<br>08880 Cubelles<br>Tel. 938 950 300<br>NIF  P0807300I<br></address><div class="diba col-md-6 col-sm-6 col-lg-6" id="diba-partner">
1895    <div class="title">
1896        Amb la col·laboració de:    </div>
1897    <a href="http://diba.cat/" target="_blank" aria-label="Anar a la web Diputació de Barcelona" title="Obre en finestra nova: Diputació de Barcelona">
1898        <span style="display: none">Diputació de Barcelona</span>
1899        <img src="/front/view//images/logoDiba/Negre.svg" alt="Diputació de Barcelona" class="logo-diba">
1900    </a>
1901</div>            </div>
1902        </div>
1903    </div>
1904</div>
1905        </footer>
1906        <!-- Llibreries de tercers + js propis registrats a AssetManager (jQuery primer) -->
1907<script src="/front/view/js/bower_components/jquery/dist/jquery.min.js?ver=1790937490"></script>
vendor: 1 bytes, line 1907
1907
1908<script src="/front/view/js/bower_components/bootstrap/dist/js/bootstrap.bundle.min.js?ver=1790937490"></script>
vendor: 1 bytes, line 1908
1908
1909<script src="/front/view/js/bower_components/bxslider-4/dist/jquery.bxslider.js?ver=1790937490"></script>
vendor: 1 bytes, line 1909
1909
1910<script src="/front/view/js/bower_components/jscal/index.js?ver=1790937490"></script>
vendor: 1 bytes, line 1910
1910
1911<script src="/common/bower_components/select2/dist/js/select2.min.js?ver=1790937490"></script>
vendor: 1 bytes, line 1911
1911
1912<script src="/common/bower_components/select2/dist/js/i18n/ca.js?ver=1790937490"></script>
vendor: 1 bytes, line 1912
1912
1913<script src="/common/bower_components/strength.js/src/strength.min.js?ver=1790937490"></script>
vendor: 1 bytes, line 1913
1913
1914<script src="/front/view/js/bower_components/masonry-layout/dist/masonry.pkgd.min.js?ver=1790937490"></script>
vendor: 1 bytes, line 1914
1914
1915<script src="/front/view/js/constants.js?ver=1790937490"></script>
vendor: 1 bytes, line 1915
1915
1916<script src="/front/view/js/functions.js?ver=1790937490"></script>
vendor: 1 bytes, line 1916
1916
1917<script src="/front/view/js/functions/footer.js?ver=1790937490"></script>
vendor: 1 bytes, line 1917
1917
1918<script src="/front/view/js/bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js?ver=1790937490"></script>
vendor: 1 bytes, line 1918
1918
1919<script src="/front/view/js/bower_components/jquery.prettyPhoto/index.js?ver=1790937490"></script>
vendor: 1 bytes, line 1919
1919
1920<script>
1921    $(document).ready(function(){
1922                    $("a[rel^='prettyPhoto']").prettyPhoto();
1923            $("a[rel^='prettyFrame']").prettyPhoto();
1924            });
1925</script>
vendor: 1 bytes, line 1925
1925
1926<script>
1927        var TWITTER = true;
1928            var FACEBOOK = true;
1929        $(window).on("load", function() {
1930        start();
1931    });
1932        $(document).ready(function() {
1933        if (typeof articlesId !== 'undefined') {
1934            var today = new Date();
1935                        var date = today
1936                        articlesId.push('internal_calendar');
1937
1938            var oneYearAfter = new Date();
1939            oneYearAfter.setDate(oneYearAfter.getDate() + 365);
1940            for (id in articlesId) {
1941                Calendar.setup({
1942                    id: articlesId[id],
1943                    cont: "dv_calendar_" + articlesId[id],
1944                    fdow: 1,
1945                    date: date,
1946                    noScroll: true,
1947                    bottomBar: false,
1948                    max: oneYearAfter,
1949                    animation: false,
1950                    titleFormat: "%B %Y",
1951                    dateInfo: getDateInfo
1952                });
1953                setEqualContentColumns();
1954            }
1955        }
1956    });
1957
1958        
1959    // Initialize Select2 with icon support for category filter
1960    $(document).ready(function() {
1961        if ($('#categoryFilter').length) {
1962            $('#categoryFilter').select2({
1963                templateResult: function(option) {
1964                    if (!option.id) return option.text;
1965                    var icon = $(option.element).data('icon');
1966                    if (!icon) return option.text;
1967                    return $('<span><img src="' + icon + '" style="width: 16px; height: 16px; margin-right: 6px; vertical-align: middle;"> ' + option.text + '</span>');
1968                },
1969                templateSelection: function(option) {
1970                    if (!option.id) return option.text;
1971                    var icon = $(option.element).data('icon');
1972                    if (!icon) return option.text;
1973                    return $('<span><img src="' + icon + '" style="width: 16px; height: 16px; margin-right: 6px; vertical-align: middle;"> ' + option.text + '</span>');
1974                },
1975                allowHtml: true
1976            });
1977        }
1978    });
1979</script>
1979
1980        <!-- CSS final-->
1981
1982        
1982<script>
1983          const css = "div.page-62 .o-widget-wrapper {\n  border: 0;\n}\n";
1984          const style = document.createElement('style');
1985          style.textContent = css;
1986          document.head.appendChild(style);
1987        </script>
1987
1988
1989        <!-- Start Modal views-->
1990        
1991        <div class="modal fade" id="videoModal" tabindex="-1" role="dialog"  aria-hidden="true">
1992    <div class="modal-dialog modal-dialog-centered" role="document">
1993        <div class="modal-content">
1994            <div class="modal-header">
1995                <div class="title-head"></div>
1996            </div>
1997            <div class="modal-body">
1998                <div class="tiktok-div-embed"></div>
1999                <iframe id="iframeVideo" title="Vídeo" class="iframeVideo" allowfullscreen></iframe>
2000
2001            </div>
2002            <div class="modal-footer">
2003                <span id="titleVideo" class="titleVideo"></span>
2004                <a id="closeModalVideo" class="close" href="javascript:void(0)" data-bs-dismiss="modal"><span style="display: none">X</span></a>
2005
2006            </div>
2007        </div>
2008    </div>
2009</div>        <div class="modal fade" id="pdfModal" tabindex="-1" role="dialog"  aria-hidden="true">
2010    <div id="documentDialog" class="modal-dialog modal-dialog-centered" role="document">
2011        <div class="modal-content">
2012            <div class="modal-header">
2013                <div class="title-head"></div>
2014            </div>
2015            <div class="modal-body">
2016                <iframe id="iframePdf" title='Document' class="pdfview" style="width: 100%; height: 100%"></iframe>
2017            </div>
2018            <div class="modal-footer">
2019                <span id="titlePdf" class="titlePdf"></span>
2020                <a id="closeModalPDF" class="close" href="javascript:void(0)"><span style="display: none">X</span></a>
2021            </div>
2022        </div>
2023    </div>
2024</div>        <!-- End Modal views -->
2025        
2025<script src="/front/view/js/endScript.js?ver=1790937490"></script>
2025
2026        <!-- Només activar per desenvolupament
2027        
2027<script src="../../../node_modules/axe-core/axe.js"></script>
2027
2028        
2028<script src="../../../dist/my-first-webpack.bundle.js"></script>
2028
2029        -->
2030                
2030<script>
2031            $(document).ready(function () {
2032                startClock(1790937490);
2033                if (typeof (callMenuAfterJQueryLoaded) == "function") {
2034                    callMenuAfterJQueryLoaded();
2035                }
2036                
2037                datepickerInit();
2038                carouselControlSmall();
2039
2040                if (typeof (callMenuBeforeJQueryLoaded) == "function") {
2041                    callMenuBeforeJQueryLoaded();
2042                }
2043
2044                if (typeof (callMenuBeforeTopJQueryLoaded) == "function") {
2045                    callMenuBeforeTopJQueryLoaded();
2046                }
2047                addAttributesDivVcards();
2048                modalsImage();
2049                modalsPdf();
2050                translateWeb();
2051                var carousel = $('#carouselControls');
2052                carousel.on('slide.bs.carousel', function (event) {
2053                    toSlideImage(event);
2054                });
2055                /** Només activar per desenvolupament
2056                axe.configure({
2057                    locale: {
2058                        lang: 'es',
2059                    }
2060                });
2061
2062                axe.run().then(results => {
2063                        if (results.violations.length) {
2064                            console.log(results.violations);
2065                            throw new Error('Accessibility issues found');
2066                        }
2067                    })
2068                    .catch(err => {
2069                        console.log('Something bad happened:', err.message);
2070                    });
2071                */
2072            });
2073
2074            $(window).resize(function() {
2075                equalHeightIconTime();
2076            })
2077        </script>
2077
2078                    </body>
2079</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.