PageSourceSearch

https://www.perafita.cat/ajuntament/consistori

html perafita.cat collected 2026-10-02 20:04:13 UTC 91,767 bytes, 1,606 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="Consistori - Ajuntament de Perafita">
8<meta name="description" lang="ca" content="">
9<meta name="author" lang="ca" content="Ajuntament de Perafita">
10<meta name="date" lang="ca" content="2024-02-25 07:54:29">
11<meta name="generator" lang="ca" content="Ajuntament de Perafita">
12<meta name="robots" content="index, follow">
13
14        <title>Consistori - Ajuntament de Perafita</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=
17UA-117109359-1
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', '
23UA-117109359-1
vendor: 8 bytes, lines 23-24
23');
24    
24// Creates the default tracker.
25    gtag('event', 'page_view', { 'send_to': 'UA-117109359-1' });
26</script>
26
27<!-- End of code Global Site Tag (gtag.js) - Google Analytics v4-->
28        <link rel="canonical" href="/ajuntament/consistori">
29
30        <link rel="stylesheet" href="/front/view/js/bower_components/bootstrap/dist/css/bootstrap.min.css?ver=1790971452">
31<link rel="stylesheet" href="/front/view/js/bower_components/bootstrap-datepicker/dist/css/bootstrap-datepicker.min.css?ver=1790971452">
32<link rel="stylesheet" href="/front/view/js/bower_components/bootstrap-icons.min/index.css?ver=1790971452">
33<link rel="stylesheet" href="/front/view/js/bower_components/tempus-dominus.min.css/index.css?ver=1790971452">
34<link rel="stylesheet" href="/common/bower_components/select2/dist/css/select2.min.css?ver=1790971452">
35
36        <!-- Real Favicon Genenrator-->
37<link rel="apple-touch-icon" href="/themes/perafita/images/favicons/apple-touch-icon.png">
38<link rel="icon" type="image/png" href="/themes/perafita/images/favicons/favicon-16x16.png" sizes="16x16">
39<link rel="icon" type="image/png" href="/themes/perafita/images/favicons/favicon-32x32.png" sizes="32x32">
40<link rel="shortcut icon" href="/themes/perafita/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=1790971452"></script>
vendor: 1 bytes, line 57
57
58<script src="/front/view/js/klaro-init.js?ver=1790971452"></script>
58
59
60        <!-- Twitter Card data -->
61<meta name="twitter:card" content="summary">
62<meta name="twitter:site" content="@Ajunt_Perafita">
63<meta name="twitter:title" content="Consistori">
64<meta name="twitter:description" content="">
65<meta name="twitter:image" content="https://www.perafita.cat/themes/perafita/images/logos/header.png">
66    <meta name="twitter:image:alt" content="Logo">
67        <!-- Open Graph data -->
68<meta property="og:title" content="Consistori">
69<meta property="og:type" content="website">
70<meta property="og:url" content="https://www.perafita.cat/ajuntament/consistori">
71<meta property="og:image" content="https://www.perafita.cat/themes/perafita/images/logos/header.png">
72    <meta property="og:image:alt" content="Logo">
73    <meta property="og:image" content="https://www.perafita.cat/themes/perafita/images/logos/header_inv.png">
74    <meta property="og:image:alt" content="Logo invertit">
75    <meta property="og:description" content="">
76<meta property="og:site_name" content="Ajuntament de Perafita">
77
78        <!-- HTML5 compatible tags -->
79<script>
80    document.createElement('header');
81    document.createElement('footer');
82    document.createElement('section');
83    document.createElement('aside');
84    document.createElement('nav');
85    document.createElement('article');
86    document.createElement('hgroup');
87    document.createElement('lh');
88</script>
88
89        
89<script>window.mapsConfig = { layerType: 'OpenStreetMap_Mapnik' };</script>
89
90<link rel="stylesheet" href="/front/view/js/bower_components/FreezeUI/freeze-ui.min.css">
91<link rel="stylesheet" href="/front/view/js/bower_components/Leaflet/default/leaflet.css">
92<link rel="stylesheet" href="/front/view/js/bower_components/Leaflet/default/Control.Loading.css">
93<script  src="/front/view/js/bower_components/FreezeUI/freeze-ui.min.js"></script>
vendor: 1 bytes, line 93
93
94<script  src="/front/view/js/bower_components/Leaflet/default/leaflet.js"></script>
vendor: 1 bytes, line 94
94
95<script src="/front/view/js/bower_components/es6-promise/es6-promise.min.js"></script>
vendor: 1 bytes, line 95
95
96<script>ES6Promise.polyfill();</script>
vendor: 1 bytes, line 96
96
97<script  src='/front/view/js/bower_components/Leaflet/default/Leaflet.GoogleMutant.js'></script>
vendor: 1 bytes, line 97
97
98<script src="/front/view/js/googleMapsInit.js"></script>
vendor: 1 bytes, line 98
98
99<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 99
99
100<script  src="/front/view/js/bower_components/Leaflet/default/leaflet.maps.js"></script>
vendor: 1 bytes, line 100
100
101<script  src="/front/view/js/bower_components/Leaflet/default/leaflet.clone.js"></script>
vendor: 1 bytes, line 101
101
102<script  src="/front/view/js/bower_components/Leaflet/default/Control.Loading.js"></script>
vendor: 1 bytes, line 102
102
103<script src="/front/view/js/bower_components/jquery.min/index.js"></script>
vendor: 1 bytes, line 103
103
104<script src="/front/view/js/maps.js"></script>
104        <!-- Init addHeadExtraStyles -->
105        <style>html body{font-size:1em !important;} .backgroundImageHeader {background-repeat: repeat;  background-size: cover;  background-image:url("/media/repository/capcaleres/capcaleres_web/capr.jpg");} </style>
106        <!-- End addHeadExtraStyles -->
107        <!-- Font Awesome 7 + v4-shims for backward compatibility -->
108        <link href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/all.min.css" rel="stylesheet">
109        <link href="https://cdn.jsdelivr.net/npm/@fortawesome/[email protected]/css/v4-shims.min.css" rel="stylesheet">
110        <!-- Popperjs + Tempus Dominus -->
111        
111<script src="/front/view/js/bower_components/popper.min/index.js?ver=1790971452"></script>
vendor: 1 bytes, line 111
111
112<script src="/front/view/js/bower_components/tempus-dominus.min.js/index.js?ver=1790971452"></script>
112
113                <link rel="stylesheet" media="all" href="/themes/perafita/styles/style.min.css?ver=1790971452">
114            </head>
115    <body class="page id-8">
116        <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">
117                                    <div class="toolbar clearfix">
118    <div class="container-xl">
119                <div class="fright">
120            <div class="toolbarItem">
121    <div class="toolbarItem page-62 page-contactar">
122    <a 
123        href="/altres-continguts/contactar"
124        target="_self"
125        rel=""
126            >
127        Contactar    </a>
128</div>
129</div>                        <div class="toolbarItem">
130                <div id="toolbarLanguages">
131    <ul id="languages">
132        <li><a href="#" role="button" aria-expanded="false" aria-controls="languagesList" id="languagesToggle">Idiomes</a>
133            <ul id="languagesList">
134                                    <li><a class="link-language" href="https://www.perafita.cat/ajuntament/consistori?lang=ca" data-target="https://www.perafita.cat/ajuntament/consistori?lang=ca">Català</a></li>
135                                    <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.perafita.cat/ajuntament/consistori&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.perafita.cat/ajuntament/consistori&amp;sl=ca&amp;tl=es">Castellà</a></li>
136                                    <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.perafita.cat/ajuntament/consistori&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.perafita.cat/ajuntament/consistori&amp;sl=ca&amp;tl=en">Anglès</a></li>
137                                    <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.perafita.cat/ajuntament/consistori&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.perafita.cat/ajuntament/consistori&amp;sl=ca&amp;tl=de">Alemany</a></li>
138                                    <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.perafita.cat/ajuntament/consistori&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.perafita.cat/ajuntament/consistori&amp;sl=ca&amp;tl=fr">Francès</a></li>
139                            </ul>
140        </li>
141    </ul>
142</div>
143<script>
144(function () {
145    var toggle = document.getElementById('languagesToggle');
146    if (!toggle) return;
147    var li = toggle.parentElement;
148    var submenu = li.querySelector('ul');
149    var links = Array.prototype.slice.call(submenu.querySelectorAll('a'));
150
151    function keyName(e) {
152        return e.key || e.code || e.keyCode;
153    }
154
155    function isSpaceKey(e) {
156        var key = keyName(e);
157        return key === ' ' || key === 'Spacebar' || key === 'Space' || key === 32;
158    }
159
160    function open(focusFirst) {
161        li.classList.add('is-open');
162        submenu.style.display = 'block';
163        submenu.style.padding = '1em';
164        toggle.setAttribute('aria-expanded', 'true');
165        if (focusFirst && links.length) links[0].focus();
166    }
167
168    function close() {
169        li.classList.remove('is-open');
170        submenu.style.display = '';
171        submenu.style.padding = '';
172        toggle.setAttribute('aria-expanded', 'false');
173    }
174
175    function isOpen() {
176        return toggle.getAttribute('aria-expanded') === 'true';
177    }
178
179    function focusLink(index) {
180        if (!links.length) return;
181        links[(index + links.length) % links.length].focus();
182    }
183
184    function focusedLinkIndex() {
185        return links.indexOf(document.activeElement);
186    }
187
188    toggle.addEventListener('click', function (e) {
189        e.preventDefault();
190        isOpen() ? close() : open(false);
191    });
192
193    toggle.addEventListener('keydown', function (e) {
194        var key = keyName(e);
195        if (key === 'Enter' || isSpaceKey(e)) {
196            e.preventDefault();
197            isOpen() ? close() : open(false);
198        } else if (key === 'ArrowDown' || key === 40) {
199            e.preventDefault();
200            open(true);
201        } else if (key === 'ArrowUp' || key === 38) {
202            e.preventDefault();
203            open(false);
204            focusLink(links.length - 1);
205        } else if (key === 'Escape' || key === 'Esc' || key === 27) {
206            if (isOpen()) {
207                e.preventDefault();
208                close();
209            }
210        }
211    });
212
213    submenu.addEventListener('keydown', function (e) {
214        var key = keyName(e);
215        var index = focusedLinkIndex();
216
217        if (key === 'ArrowDown' || key === 40) {
218            e.preventDefault();
219            focusLink(index + 1);
220        } else if (key === 'ArrowUp' || key === 38) {
221            e.preventDefault();
222            focusLink(index - 1);
223        } else if (key === 'Home' || key === 36) {
224            e.preventDefault();
225            focusLink(0);
226        } else if (key === 'End' || key === 35) {
227            e.preventDefault();
228            focusLink(links.length - 1);
229        } else if (isSpaceKey(e)) {
230            e.preventDefault();
231            if (document.activeElement && document.activeElement.click) {
232                document.activeElement.click();
233            }
234        } else if (key === 'Escape' || key === 'Esc' || key === 27) {
235            e.preventDefault();
236            close();
237            toggle.focus();
238        }
239    });
240
241    li.addEventListener('focusout', function () {
242        window.setTimeout(function () {
243            if (!li.contains(document.activeElement)) close();
244        }, 0);
245    });
246
247    document.addEventListener('click', function (e) {
248        if (!li.contains(e.target)) close();
249    });
250})();
251</script>
251
252                <div class="currentDate" style='padding:9px;color:white'>
253    <span id="clock" class="clock" title='Data i hora oficial' >
254        02.10.2026 | 22:04    </span>
255</div>            </div>
256        </div>
257    </div>
258</div>
259<div class="header ">
260    <div class="branding">
261        <div class="container-xl">
262            <div class="row">
263                <div class="col-md-8 col-sm-8 col-lg-8 logo_box">
264    <a class="logo" href="/" aria-label="Ajuntament de Perafita - Pàgina d'inici">
265        <img src="/themes/perafita/images/logos/header.png" alt="" width="355" height="111" id="mainLogo">
266    </a>
267    </div>                <div class="col-md-4 col-sm-4 col-lg-4 middle search_box">
268    <form id="search_box" aria-label="Cercar:" name="search_box" method="get" action="/search">
269        <label for="search" accesskey="4">
270            <span class="visually-hidden">Cercar:</span>
271        </label>
272        <input id="search" name="search" type="text" aria-label="Cercar:" title="Cerca a tot el web" value="" placeholder="Cercar...">
273        <button type="submit" class="search-button" aria-label="Cerca"><i class="fa fa-search"></i></button>
274    </form>
275</div>
276            </div>
277        </div>
278    </div>
279        <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="click" 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/alcaldia" ><span class="menu-flexible__item-text">Salutació de l&#039;Alcalde</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-115 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/consistori/composicio-del-ple" ><span class="menu-flexible__item-text">Composició del Ple</span></a></li><li class="menu-flexible__item page-127 level3"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://elecciones.locales2023.es/ca/" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Resultats electorals</span></a></li><li class="menu-flexible__item page-167 level3"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/consistori/consistoris-anteriors" ><span class="menu-flexible__item-text">Consistoris anteriors</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-170 level4"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/consistori/consistoris-anteriors/legislatura-2015-19" ><span class="menu-flexible__item-text">Legislatura 2015-19</span></a></li><li class="menu-flexible__item page-158 level4"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/consistori/consistoris-anteriors/legislatura-2011-15" ><span class="menu-flexible__item-text">Legislatura 2011-15</span></a></li></ul></li></ul></li><li class="menu-flexible__item page-156 level2"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/informacio-oficial" ><span class="menu-flexible__item-text">Informació oficial</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-80 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/informacio-oficial/ple-municipal" ><span class="menu-flexible__item-text">
279Ple municipal</span></a></li><li class="menu-flexible__item page-148 level3"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/informacio-oficial/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 level4"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/informacio-oficial/anuncis-i-resolucions/anuncis-edictes" ><span class="menu-flexible__item-text">Anuncis / Edictes</span></a></li><li class="menu-flexible__item page-26 level4"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/informacio-oficial/anuncis-i-resolucions/perfil-de-contractant" ><span class="menu-flexible__item-text">Perfil de contractant</span></a></li></ul></li><li class="menu-flexible__item page-145 level3"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/informacio-oficial/pressupostos-i-informacio-fiscal" ><span class="menu-flexible__item-text">Pressupostos i Informació fiscal</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-24 level4"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://cido.diba.cat/normativa_local?filtreParaulaClau%5Bkeyword%5D=perafita&amp;ordenacio=DATAPUBLICACIO&amp;ordre=DESC&amp;showAs=LIST&amp;filtreProximitat%5Bpoblacio%5D=&amp;filtreProximitat%5Bkm%5D=&amp;filtreProximitat%5Blatitud%5D=&amp;filtreProximitat%5Blongitud%5D=&amp;filtreDataPublicacio%5Bde%5D=01%2F01%2F2017&amp;filtreDataPublicacio%5BfinsA%5D=&amp;filtreInstitucio%5Boptions%5D%5B%5D=9&amp;filtreInstitucio%5Boptions%5D%5B%5D=8160&amp;filtreTipusNormativa%5BpressupostosPlantilles%5D=1&amp;opcions-menu=perafita&amp;_token=7ZhCMAzTKo1-89ELp4ukXw2Gh-3rgOwbkHovQVDp4a4" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Pressupostos i plantilles</span></a></li><li class="menu-flexible__item page-22 level4"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/informacio-oficial/pressupostos-i-informacio-fiscal/ordenances-fiscals" ><span class="menu-flexible__item-text">Ordenances Fiscals</span></a></li><li class="menu-flexible__item page-147 level4"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://www.seu-e.cat/web/perafita/govern-obert-i-transparencia/accio-de-govern-i-normativa/normativa-plans-i-programes/calendari-i-padrons-fiscals" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Calendari fiscal</span></a></li><li class="menu-flexible__item page-151 level4"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/informacio-oficial/pressupostos-i-informacio-fiscal/execucio-pressupostaria-trimestral" ><span class="menu-flexible__item-text">Execució pressupostària trimestral</span></a></li></ul></li><li class="menu-flexible__item page-126 level3"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/informacio-oficial/normativa" ><span class="menu-flexible__item-text">Normativa</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-27 level4"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://www.seu-e.cat/web/perafita/govern-obert-i-transparencia/accio-de-govern-i-normativa/normativa-plans-i-programes/ordenances-reguladores-i-reglaments" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Normativa / Ordenances Generals</span></a></li><li class="menu-flexible__item page-28 level4"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://www.seu-e.cat/web/perafita/govern-obert-i-transparencia/accio-de-govern-i-normativa/urbanisme" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Urbanisme</span></a></li></ul></li><li class="menu-flexible__item page-159 level3"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/ajuntament/informacio-oficial/inventari-de-bens-" ><span class="menu-flexible__item-text">Inventari de béns </span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-160 level4"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/informacio-oficial/inventari-de-bens-/160-inventari-de-bens-i-drets" ><span class="menu-flexible__item-text">Inventari de béns i drets</span></a></li><li class="menu-flexible__item page-161 level4"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/informacio-oficial/inventari-de-bens-/inventari-de-vehicles-oficials" ><span class="menu-flexible__item-text">Inventari de vehicles oficials</span></a></li></ul></li><li class="menu-flexible__item page-163 level3"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/informacio-oficial/escut-municipal" ><span class="menu-flexible__item-text">
279Escut municipal</span></a></li></ul></li><li class="menu-flexible__item page-143 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-144 level3"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="https://www.seu-e.cat/web/perafita/govern-obert-i-transparencia/informacio-institucional-i-organitzativa/empleats-publics/convocatories-de-personal" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Convocatòries</span></a></li></ul></li><li class="menu-flexible__item page-81 level2"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/organismes-dependents-o-vinculats" ><span class="menu-flexible__item-text">Organismes dependents o vinculats</span></a></li><li class="menu-flexible__item page-122 level2"><a class="menu-flexible__link" aria-expanded="false" href="/ajuntament/que-es-la-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-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-33 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/serveis" ><span class="menu-flexible__item-text">Serveis</span></a></li><li class="menu-flexible__item page-31 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/tramits-i-gestions" ><span class="menu-flexible__item-text">Tràmits i gestions</span></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-171 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/verificacio-de-documents" ><span class="menu-flexible__item-text">Verificació de documents</span></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><li class="menu-flexible__item page-133 level2"><a class="menu-flexible__link" aria-expanded="false" href="/serveis-i-tramits/finestreta-unica-empresarial-fue" ><span class="menu-flexible__item-text">Finestreta Única Empresarial (FUE)</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-34 level2"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/com-arribar" ><span class="menu-flexible__item-text">Com arribar</span></a></li><li class="menu-flexible__item page-36 level2"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/planol--guia-de-carrers" ><span class="menu-flexible__item-text">Plànol / Guia de carrers</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/emergencie
279s" ><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-150 level3"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/informacio-del-municipi/els-puig-de-perafita-i-la-guerra-de-successio" ><span class="menu-flexible__item-text">Els Puig de Perafita i la Guerra de Successió</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 menu-link--external" aria-expanded="false" href="http://patrimonicultural.diba.cat/index.php?codi_ine=08160" target="_blank" rel="noopener noreferrer"><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" aria-expanded="false" href="/el-municipi/turisme" ><span class="menu-flexible__item-text">Turisme</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-157 level3"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/turisme/157-llocs-dinteres" ><span class="menu-flexible__item-text">Llocs d&#039;interès</span></a></li><li class="menu-flexible__item page-50 level3"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/turisme/festes-i-fires" ><span class="menu-flexible__item-text">Festes i fires</span></a></li><li class="menu-flexible__item page-129 level3"><a class="menu-flexible__link menu-flexible__link--dropdown" aria-expanded="false" href="/el-municipi/turisme/rutesrutasroutes" ><span class="menu-flexible__item-text">Rutes/Rutas/Routes</span></a><ul class="menu-flexible menu-flexible__submenu"><li class="menu-flexible__item page-153 level4"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/turisme/rutesrutasroutes/info" ><span class="menu-flexible__item-text">Info</span></a></li><li class="menu-flexible__item page-154 level4"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/turisme/rutesrutasroutes/rutesas-routes" ><span class="menu-flexible__item-text">Rutes/as/ Routes</span></a></li></ul></li><li class="menu-flexible__item page-38 level3"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/turisme/on-dormir" ><span class="menu-flexible__item-text">On dormir</span></a></li><li class="menu-flexible__item page-130 level3"><a class="menu-flexible__link" aria-expanded="false" href="/el-municipi/turisme/on-menjar" ><span class="menu-flexible__item-text">On menjar</span></a></li></ul></li><li class="menu-flexible__item page-48 level2"><a class="menu-flexible__link menu-link--external" aria-expanded="false" href="http://sitmun.diba.cat/idelocals/?mun_ine=08160" target="_blank" rel="noopener noreferrer"><span class="menu-flexible__item-text">Informació geogràfica</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="/actualitat" ><span class="menu-flexible__item-text">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="/actualitat/avisos" ><span class="menu-flexible__item-text">Avisos</span></a></li><li class="menu-flexible__item page-53 level2"><a class="menu-flexible__link" aria-expanded="false" href="/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="/actualitat/agenda" ><span class="menu-flexible__item-text">Agenda</span></a></li><li class="menu-flexible__item page-164 level2"><a class="menu-flexible__link" aria-expanded="false" href="/actualitat/agenda-cursos-i-taller
279s" ><span class="menu-flexible__item-text">Agenda cursos i tallers</span></a></li><li class="menu-flexible__item page-16 level2"><a class="menu-flexible__link" aria-expanded="false" href="/actualitat/plans-campanyes-i-programes" ><span class="menu-flexible__item-text">Plans, campanyes i programes</span></a></li><li class="menu-flexible__item page-55 level2"><a class="menu-flexible__link" aria-expanded="false" href="/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="/actualitat/full-de-perafita" ><span class="menu-flexible__item-text">Full de Perafita</span></a></li><li class="menu-flexible__item page-165 level2"><a class="menu-flexible__link" aria-expanded="false" href="/actualitat/full-dhistoria-de-perafita" ><span class="menu-flexible__item-text">Full d&#039;història de Perafita</span></a></li><li class="menu-flexible__item page-57 level2"><a class="menu-flexible__link" aria-expanded="false" href="/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="/actualitat/hemeroteca" ><span class="menu-flexible__item-text">Hemeroteca</span></a></li></ul></li><li class="menu-flexible__item page-5 level1"><a class="menu-flexible__link" aria-expanded="false" href="/adreces-i-telefons" ><span class="menu-flexible__item-text">Adreces i telèfons</span></a></li></ul></div>
279<script>(function() {
280    'use strict';
281
282    // Mega panel
283
284    function initMegaPanels(navContainer) {
285        var menuItems = Array.prototype.slice.call(navContainer.querySelectorAll('[data-mega-id]'));
286        if (!menuItems.length) return;
287
288        var navUl    = navContainer.querySelector('ul');
289        var topItems = navUl
290            ? menuItems.filter(function(el) { return el.parentElement === navUl; })
291            : menuItems;
292
293        var wrapper    = navContainer.closest('.menu-flexible__wrapper');
294        var isClick    = wrapper && wrapper.getAttribute('data-expand-type') === 'click';
295
296        menuItems.forEach(function(item) {
297            var panel = getPanelForItem(item, navContainer);
298            if (!panel) return;
299
300            if (isClick) {
301                var link = item.querySelector('a');
302                if (link) {
303                    link.addEventListener('click', function(e) {
304                        // En mòbil, els elements naveguen directament sense desplegar submenús
305                        if (window.innerWidth <= 992) return;
306                        if (panel.classList.contains('mf-mega-visible')) {
307                            // Segon clic: navegar
308                            return;
309                        }
310                        e.preventDefault();
311                        hideAllMegaPanels(navContainer);
312                        showPanel(item, panel);
313                    });
314                }
315            } else {
316                var hoverDelay = parseInt(
317                    getComputedStyle(wrapper).getPropertyValue('--menu-hover-delay'), 10
318                ) || 0;
319                var hoverTimer = null;
320
321                var leaveTimer = null;
322
323                item.addEventListener('mouseenter', function() {
324                    clearTimeout(hoverTimer);
325                    clearTimeout(leaveTimer);
326                    if (hoverDelay > 0) {
327                        hoverTimer = setTimeout(function() { showPanel(item, panel); }, hoverDelay);
328                    } else {
329                        showPanel(item, panel);
330                    }
331                });
332                item.addEventListener('mouseleave', function(e) {
333                    clearTimeout(hoverTimer);
334                    if (!panel.contains(e.relatedTarget)) {
335                        leaveTimer = setTimeout(function() { hidePanel(item, panel); }, 300);
336                    }
337                });
338                panel.addEventListener('mouseenter', function() {
339                    clearTimeout(leaveTimer);
340                });
341                panel.addEventListener('mouseleave', function(e) {
342                    clearTimeout(hoverTimer);
343                    clearTimeout(leaveTimer);
344                    if (!item.contains(e.relatedTarget)) hidePanel(item, panel);
345                });
346
347                // Tàctil: fallback quan hover no disponible (només escriptori tàctil)
348                var link = item.querySelector('a');
349                if (link) {
350                    link.addEventListener('click', function(e) {
351                        if (window.matchMedia('(hover: none)').matches && window.innerWidth > 992) {
352                            if (panel.classList.contains('mf-mega-visible')) {
353                                // Segon clic en tàctil: navegar
354                                return;
355                            }
356                            e.preventDefault();
357                            hideAllMegaPanels(navContainer);
358                            showPanel(item, panel);
359                        }
360                    });
361                }
362            }
363        });
364
365        navContainer.addEventListener('keydown', function(e) {
366            handleMegaKeydown(e, navContainer, topItems);
367        });
368
369        if (!isClick) {
370            navContainer.addEventListener('focusin', function(e) {
371                var item = e.target.closest('[data-mega-id]');
372                if (!item) return;
373                var panel = getPanelForItem(item, navContainer);
374                if (!panel) return;
375                hideAllMegaPanels(navContainer);
376                showPanel(item, panel);
377            });
378        }
379
380        navContainer.addEventListener('focusout', function() {
381            setTimeout(function() {
382                if (!navContainer.contains(document.activeElement)) {
383                    hideAllMegaPanels(navContainer);
384                }
385            }, 0);
386        });
387
388        document.addEventListener('click', function(e) {
389            if (!navContainer.contains(e.target)) {
390                hideAllMegaPanels(navContainer);
391            }
392        });
393    }
394
395    function handleMegaKeydown(e, navContainer, topItems) {
396        var focused = document.activeElement;
397        if (!focused) return;
398
399        var currentItem = focused.closest('[data-mega-id]');
400        var currentPanel = focused.closest('.menu-flexible__mega-panel');
401        var key = e.key || e.code || e.keyCode;
402
403        function directLink(item) {
404            if (!item) return null;
405            return Array.prototype.slice.call(item.children).find(function(el) {
406                return el.tagName === 'A';
407            }) || item.querySelector('a');
408        }
409
410        function itemForPanel(panel) {
411            if (!panel) return null;
412            var id = panel.getAttribute('data-mega-id');
413            return id ? navContainer.querySelector('li[data-mega-id="' + id + '"]') : null;
414        }
415
416        function focusPanelLink(panel, index) {
417            var links = Array.prototype.slice.call(panel.querySelectorAll('a'));
418            if (!links.length) return;
419            links[(index + links.length) % links.length].focus();
420        }
421
422        function focusPanelSibling(panel, offset) {
423            var links = Array.prototype.slice.call(panel.querySelectorAll('a'));
424            var idx = links.indexOf(focused);
425            if (idx === -1) return;
426            links[(idx + offset + links.length) % links.length].focus();
427        }
428
429        function panelColumnForLink(link) {
430            return link ? link.closest('.menu-flexible__mega-col') : null;
431        }
432
433        function focusAdjacentPanelColumn(panel, offset) {
434            var columns = Array.prototype.slice.call(panel.querySelectorAll('.menu-flexible__mega-col'));
435            var currentColumn = panelColumnForLink(focused);
436            var idx = columns.indexOf(currentColumn);
437            if (idx === -1) return false;
438
439            var targetColumn = columns[(idx + offset + columns.length) % columns.length];
440            var targetLink = targetColumn.querySelector('a');
441            if (targetLink) {
442                targetLink.focus();
443                return true;
444            }
445
446            return false;
447        }
448
449        function focusTopItem(item, offset) {
450            var idx = topItems.indexOf(item);
451            if (idx === -1) return;
452
453            var next = topItems[(idx + offset + topItems.length) % topItems.length];
454            hideAllMegaPanels(navContainer);
455
456            var nextLink = directLink(next);
457            if (nextLink) {
458                nextLink.focus();
459                var nextPanel = getPanelForItem(next, navContainer);
460                if (nextPanel) showPanel(next, nextPanel);
461            }
462        }
463
464        switch (key) {
465            case 'Escape':
466            case 'Esc':
467            case 27: {
468                e.preventDefault();
469                hideAllMegaPanels(navContainer);
470                if (currentPanel) {
471                    var item = itemForPanel(currentPanel);
472                    var lnk = directLink(item);
473                    if (lnk) lnk.focus();
474                }
475                break;
476            }
477
478            case 'ArrowRight':
479            case 39:
480            case 'ArrowLeft':
481            case 37: {
482                var direction = (key === 'ArrowRight' || key === 39) ? 1 : -1;
483                e.preventDefault();
484
485                if (currentPanel) {
486                    if (!focusAdjacentPanelColumn(currentPanel, direction)) {
487                        var ownerItem = itemForPanel(currentPanel);
488                        focusTopItem(ownerItem, direction);
489                    }
490                    break;
491                }
492
493                if (!currentItem) return;
494                focusTopItem(currentItem, direction);
495                break;
496            }
497
498            case 'ArrowDown':
499            case 40: {
500                e.preventDefault();
501                if (currentPanel) {
502                    focusPanelSibling(currentPanel, 1);
503                    break;
504                }
505                if (!currentItem) return;
506                var panel = getPanelForItem(currentItem, navContainer);
507                if (!panel) return;
508                if (!panel.classList.contains('mf-mega-visible')) {
509                    hideAllMegaPanels(navContainer);
510                    showPanel(currentItem, panel);
511                }
512                focusPanelLink(panel, 0);
513                break;
514            }
515
516            case ' ':
517            case 'Space':
518            case 'Spacebar':
519            case 32: {
520                if (currentPanel || !currentItem) return;
521                var spacePanel = getPanelForItem(currentItem, navContainer);
522                if (!spacePanel) return;
523
524                e.preventDefault();
525                if (spacePanel.classList.contains('mf-mega-visible')) {
526                    hidePanel(currentItem, spacePanel);
527                } else {
528                    hideAllMegaPanels(navContainer);
529                    showPanel(currentItem, spacePanel);
530                }
531                break;
532            }
533
534            case 'ArrowUp':
535            case 38: {
536                if (!currentPanel) return;
537                e.preventDefault();
538                var panelLinks = Array.prototype.slice.call(currentPanel.querySelectorAll('a'));
539                var focusedIndex = panelLinks.indexOf(focused);
540
541                if (focusedIndex > 0) {
542                    focusPanelLink(currentPanel, focusedIndex - 1);
543                } else {
544                    var parentItem = itemForPanel(currentPanel);
545                    var parentLink = directLink(parentItem);
546                    if (parentLink) parentLink.focus();
547                    if (parentItem) hidePanel(parentItem, currentPanel);
548                }
549                break;
550            }
551        }
552    }
553
554    function getPanelForItem(item, navContainer) {
555        var id = item.getAttribute('data-mega-id');
556        return id
557            ? navContainer.querySelector('.menu-flexible__mega-panel[data-mega-id="' + id + '"]')
558            : null;
559    }
560
561    function showPanel(item, panel) {
562        panel.classList.add('mf-mega-visible');
563        panel.setAttribute('aria-hidden', 'false');
564        var link = item.querySelector('a');
565        if (link) link.setAttribute('aria-expanded', 'true');
566    }
567
568    function hidePanel(item, panel) {
569        panel.classList.remove('mf-mega-visible');
570        panel.setAttribute('aria-hidden', 'true');
571        var link = item.querySelector('a');
572        if (link) link.setAttribute('aria-expanded', 'false');
573    }
574
575    function hideAllMegaPanels(navContainer) {
576        navContainer.querySelectorAll('.menu-flexible__mega-panel.mf-mega-visible')
577            .forEach(function(panel) {
578                var id   = panel.getAttribute('data-mega-id');
579                var item = id ? navContainer.querySelector('li[data-mega-id="' + id + '"]') : null;
580                if (item) {
581                    hidePanel(item, panel);
582                } else {
583                    panel.classList.remove('mf-mega-visible');
584                    panel.setAttribute('aria-hidden', 'true');
585                }
586            });
587    }
588
589
590    // Tecles de fletxa (menú estàndard)
591
592    function initStandardKeyboard(wrapper) {
593        var menu = wrapper.querySelector('.menu-flexible__list');
594        if (!menu) return;
595
596        function closeAll() {
597            Array.prototype.slice.call(menu.querySelectorAll('.menu-flexible__item[focus="true"]'))
598                .forEach(function(item) {
599                    item.setAttribute('focus', 'false');
600                    var submenu = Array.prototype.slice.call(item.children).find(function(el) {
601                        return el.classList && el.classList.contains('menu-flexible__submenu');
602                    });
603                    if (submenu) {
604                        submenu.style.left = '';
605                        submenu.style.opacity = '';
606                        submenu.style.visibility = '';
607                        submenu.style.pointerEvents = '';
608                        submenu.style.transform = '';
609                    }
610                    var link = Array.prototype.slice.call(item.children).find(function(el) {
611                        return el.tagName === 'A';
612                    });
613                    if (link && link.classList.contains('menu-flexible__link--dropdown')) {
614                        link.setAttribute('aria-expanded', 'false');
615                    }
616                });
617        }
618
619        wrapper.addEventListener('keydown', function(e) {
620            handleStandardKeydown(e, menu);
621        });
622
623        wrapper.addEventListener('focusout', function() {
624            setTimeout(function() {
625                if (!wrapper.contains(document.activeElement)) {
626                    closeAll();
627                }
628            }, 0);
629        });
630    }
631
632    function handleStandardKeydown(e, menu) {
633        var focused = document.activeElement;
634        if (!focused || !menu.contains(focused)) return;
635
636        var itemSel = '.menu-flexible__item';
637        var linkSel = '.menu-flexible__link';
638
639        var currentLi = focused.closest(itemSel);
640        if (!currentLi) return;
641
642        var parentUl = currentLi.parentElement;
643        var isLevel1 = parentUl === menu;
644
645        function directLink(li) {
646            var direct = Array.prototype.slice.call(li.children).find(function(el) {
647                return el.tagName === 'A';
648            });
649            return direct || li.querySelector(linkSel);
650        }
651
652        function siblingItems(ul) {
653            return Array.prototype.slice.call(ul.children).filter(function(el) {
654                return el.matches(itemSel);
655            });
656        }
657
658        function childMenu(li) {
659            return Array.prototype.slice.call(li.children).find(function(el) {
660                return el.classList && el.classList.contains('menu-flexible__submenu');
661            });
662        }
663
664        function setSubmenuVisible(li, visible) {
665            var submenu = childMenu(li);
666            if (!submenu) return;
667
668            if (visible) {
669                submenu.style.left = li.parentElement === menu ? '0' : '100%';
670                submenu.style.opacity = '1';
671                submenu.style.visibility = 'visible';
672                submenu.style.pointerEvents = 'auto';
673                submenu.style.transform = 'none';
674            } else {
675                submenu.style.left = '';
676                submenu.style.opacity = '';
677                submenu.style.visibility = '';
678                submenu.style.pointerEvents = '';
679                submenu.style.transform = '';
680            }
681        }
682
683        function setExpanded(li, expanded) {
684            li.setAttribute('focus', expanded ? 'true' : 'false');
685            setSubmenuVisible(li, expanded);
686            var lnk = directLink(li);
687            if (lnk && lnk.classList.contains('menu-flexible__link--dropdown')) {
688                lnk.setAttribute('aria-expanded', expanded ? 'true' : 'false');
689            }
690            if (!expanded) {
691                Array.prototype.slice.call(li.querySelectorAll(itemSel + '[focus="true"]'))
692                    .forEach(function(item) {
693                        item.setAttribute('focus', 'false');
694                        setSubmenuVisible(item, false);
695                        var childLink = directLink(item);
696                        if (childLink && childLink.classList.contains('menu-flexible__link--dropdown')) {
697                            childLink.setAttribute('aria-expanded', 'false');
698                        }
699                    });
700            }
701        }
702
703        function closeSiblings(li) {
704            Array.prototype.slice.call(li.parentElement.children)
705                .filter(function(item) {
706                    return item !== li && item.matches(itemSel);
707                })
708                .forEach(function(item) {
709                    setExpanded(item, false);
710                });
711        }
712
713        function openChild(li) {
714            var submenu = childMenu(li);
715            if (!submenu) return false;
716            closeSiblings(li);
717            setExpanded(li, true);
718            var firstChild = submenu.querySelector(linkSel);
719            if (firstChild) firstChild.focus();
720            return true;
721        }
722
723        function focusSibling(offset) {
724            var sibs = siblingItems(parentUl);
725            var idx  = sibs.indexOf(currentLi);
726            var lnk  = directLink(sibs[(idx + offset + sibs.length) % sibs.length]);
727            if (lnk) lnk.focus();
728        }
729
730        var key = e.key || e.code || e.keyCode;
731
732        switch (key) {
733            case 'ArrowRight':
734            case 39: {
735                if (!isLevel1) return;
736                e.preventDefault();
737                setExpanded(currentLi, false);
738                focusSibling(1);
739                break;
740            }
741            case 'ArrowLeft':
742            case 37: {
743                if (!isLevel1) return;
744                e.preventDefault();
745                setExpanded(currentLi, false);
746                focusSibling(-1);
747                break;
748            }
749            case 'ArrowDown':
750            case 40: {
751                e.preventDefault();
752                if (focused === directLink(currentLi) && openChild(currentLi)) {
753                    break;
754                }
755                var sibsDown = siblingItems(parentUl);
756                var idxDown  = sibsDown.indexOf(currentLi);
757                if (idxDown < sibsDown.length - 1) {
758                    var lnkDown = directLink(sibsDown[idxDown + 1]);
759                    if (lnkDown) lnkDown.focus();
760                }
761                break;
762            }
763            case 'ArrowUp':
764            case 38: {
765                e.preventDefault();
766                var sibsUp = siblingItems(parentUl);
767                var idxUp  = sibsUp.indexOf(currentLi);
768                if (idxUp > 0) {
769                    var lnkUp = directLink(sibsUp[idxUp - 1]);
770                    if (lnkUp) lnkUp.focus();
771                } else if (!isLevel1) {
772                    var parentItemUp = parentUl.closest(itemSel);
773                    if (parentItemUp) {
774                        setExpanded(parentItemUp, false);
775                        var parentLinkUp = directLink(parentItemUp);
776                        if (parentLinkUp) parentLinkUp.focus();
777                    }
778                }
779                break;
780            }
781            case ' ':
782            case 'Space':
783            case 'Spacebar':
784            case 32: {
785                if (!focused.classList.contains('menu-flexible__link--dropdown')) return;
786                e.preventDefault();
787                currentLi.getAttribute('focus') === 'true'
788                    ? setExpanded(currentLi, false)
789                    : openChild(currentLi);
790                break;
791            }
792            case 'Escape':
793            case 'Esc':
794            case 27: {
795                if (isLevel1 && currentLi.getAttribute('focus') !== 'true') return;
796                e.preventDefault();
797                if (!isLevel1) {
798                    var parentItemEsc = parentUl.closest(itemSel);
799                    if (parentItemEsc) {
800                        setExpanded(parentItemEsc, false);
801                        var parentLinkEsc = directLink(parentItemEsc);
802                        if (parentLinkEsc) parentLinkEsc.focus();
803                    }
804                } else {
805                    setExpanded(currentLi, false);
806                }
807                break;
808            }
809        }
810    }
811
812
813    // Click mode: expandir submenús via [focus=true]
814
815    function initClickExpand(wrapper) {
816        var menu = wrapper.querySelector('.menu-flexible__list');
817        if (!menu) return;
818
819        var itemSel        = '.menu-flexible__item';
820        var dropdownSel    = '.menu-flexible__link--dropdown';
821
822        function closeAll(container) {
823            Array.prototype.slice.call(container.querySelectorAll(itemSel + '[focus="true"]'))
824                .forEach(function(el) { el.setAttribute('focus', 'false'); });
825        }
826
827        function closeSiblings(item) {
828            var parentUl = item.parentElement;
829            Array.prototype.slice.call(parentUl.children)
830                .filter(function(el) {
831                    return el !== item
832                        && el.matches(itemSel)
833                        && el.getAttribute('focus') === 'true';
834                })
835                .forEach(function(el) {
836                    el.setAttribute('focus', 'false');
837                    closeAll(el);
838                });
839        }
840
841        menu.addEventListener('click', function(e) {
842            var link = e.target.closest(dropdownSel);
843            if (!link || !menu.contains(link)) return;
844
845            var item = link.parentElement;
846            if (!item || !item.matches(itemSel)) return;
847
848            // En mòbil, els elements naveguen directament sense desplegar submenús
849            if (window.innerWidth <= 992) return;
850
851            var isOpen = item.getAttribute('focus') === 'true';
852
853            if (isOpen) {
854                // Segon clic: navegar
855                return;
856            }
857
858            e.preventDefault();
859            closeSiblings(item);
860            item.setAttribute('focus', 'true');
861        });
862
863        document.addEventListener('click', function(e) {
864            var openItem = menu.querySelector(itemSel + '[focus="true"]');
865            if (!openItem) return;
866            if (!openItem.contains(e.target)) {
867                closeAll(menu);
868            }
869        });
870    }
871
872
873    // Hamburger (mòbil ≤992px)
874
875    class MenuFlexible {
876        constructor(wrapper) {
877            this.wrapper   = wrapper;
878            this.hamburger = wrapper.querySelector('.menu-flexible__toggle');
879            this.menu      = wrapper.querySelector('.menu-flexible__list');
880
881            if (!this.hamburger || !this.menu) return;
882
883            var parent  = this.menu.parentElement;
884            this.isMega = parent && parent.classList.contains('menu-flexible__nav-container');
885            this.target = this.isMega ? parent : this.menu;
886
887            // Ancestre que en mòbil és barra fixa de 44px amb overflow:clip i retalla
888            // el menú desplegat. En obrir, l'eixamplem; en tancar, el restaurem.
889            this.clipper = wrapper.closest('.nav');
890
891            this.init();
892            window.addEventListener('resize', () => this.handleResize());
893        }
894
895        init() {
896            this.hamburger.addEventListener('click', (e) => {
897                e.preventDefault();
898                e.stopPropagation();
899                this.toggleMenu();
900            });
901
902            document.addEventListener('click', (e) => {
903                if (!this.wrapper.contains(e.target) && this.isOpen()) {
904                    this.closeMenu();
905                }
906            });
907
908            this.menu.querySelectorAll('a').forEach(link => {
909                link.addEventListener('click', () => {
910                    if (window.innerWidth <= 992 && this.isOpen()) {
911                        this.closeMenu();
912                    }
913                });
914            });
915        }
916
917        isOpen()     { return this.target.classList.contains('show'); }
918        toggleMenu() { this.isOpen() ? this.closeMenu() : this.openMenu(); }
919
920        liftClip() {
921            if (this.clipper && window.innerWidth <= 992) {
922                this.clipper.style.height = 'auto';
923                this.clipper.style.maxHeight = 'none';
924                this.clipper.style.overflow = 'visible';
925            }
926        }
927
928        restoreClip() {
929            if (this.clipper) {
930                this.clipper.style.height = '';
931                this.clipper.style.maxHeight = '';
932                this.clipper.style.overflow = '';
933            }
934        }
935
936        openMenu() {
937            this.target.classList.add('show');
938            this.target.style.display = this.isMega ? 'block' : 'flex';
939            if (this.isMega) this.menu.style.display = 'flex';
940            this.liftClip();
941            this.hamburger.classList.add('active');
942            this.hamburger.setAttribute('aria-expanded', 'true');
943        }
944
945        closeMenu() {
946            this.target.classList.remove('show');
947            this.target.style.display = 'none';
948            if (this.isMega) {
949                this.menu.style.display = '';
950                var nc = this.wrapper.querySelector('.menu-flexible__nav-container');
951                if (nc) hideAllMegaPanels(nc);
952            }
953            this.restoreClip();
954            this.hamburger.classList.remove('active');
955            this.hamburger.setAttribute('aria-expanded', 'false');
956        }
957
958        handleResize() {
959            if (window.innerWidth > 992) {
960                this.target.classList.remove('show');
961                this.target.style.display = '';
962                if (this.isMega) this.menu.style.display = '';
963                this.restoreClip();
964                this.hamburger.classList.remove('active');
965                this.hamburger.setAttribute('aria-expanded', 'false');
966            }
967        }
968    }
969
970
971    // Init
972
973    function init() {
974        document.querySelectorAll('.menu-flexible__wrapper').forEach(function(wrapper) {
975            var navContainer = wrapper.querySelector('.menu-flexible__nav-container');
976            if (navContainer) {
977                initMegaPanels(navContainer);
978            } else {
979                initStandardKeyboard(wrapper);
980                if (wrapper.getAttribute('data-expand-type') === 'click') {
981                    initClickExpand(wrapper);
982                }
983            }
984            new MenuFlexible(wrapper);
985            if (wrapper.getAttribute('data-menu-sticky') === 'true') {
986                var stickyTarget = wrapper.closest('#navbar-top')
987                                || wrapper.closest('.navbar')
988                                || wrapper.closest('nav');
989                if (stickyTarget) {
990                    stickyTarget.classList.add('menu-sticky-enabled');
991                    document.body.classList.add('has-sticky-menu');
992
993                    var navbarHeight   = stickyTarget.offsetHeight;
994                    var navbarTop      = stickyTarget.getBoundingClientRect().top + window.scrollY;
995                    var bodyPadApplied = false;
996
997                    function updateStickyOffset() {
998                        navbarHeight = stickyTarget.offsetHeight;
999                        document.documentElement.style.setProperty('--skip-links-sticky-offset', navbarHeight + 'px');
1000
1001                        if (bodyPadApplied) {
1002                            document.body.style.paddingTop = navbarHeight + 'px';
1003                        }
1004                    }
1005
1006                    function getTargetFromHash(hash) {
1007                        if (!hash || hash.charAt(0) !== '#') {
1008                            return null;
1009                        }
1010
1011                        try {
1012                            return document.getElementById(decodeURIComponent(hash.substring(1)));
1013                        } catch (error) {
1014                            return document.getElementById(hash.substring(1));
1015                        }
1016                    }
1017
1018                    function scrollToSkipTarget(hash) {
1019                        var target = getTargetFromHash(hash);
1020                        if (!target) {
1021                            return;
1022                        }
1023
1024                        updateStickyOffset();
1025
1026                        var expectedTop = target.getBoundingClientRect().top + window.scrollY - navbarHeight;
1027                        if (expectedTop > navbarTop) {
1028                            applyFixed();
1029                        } else {
1030                            removeFixed();
1031                        }
1032
1033                        try {
1034                            target.focus({ preventScroll: true });
1035                        } catch (error) {
1036                            target.focus();
1037                        }
1038
1039                        var targetTop = target.getBoundingClientRect().top + window.scrollY;
1040                        window.scrollTo(0, Math.max(targetTop - navbarHeight, 0));
1041                    }
1042
1043                    document.querySelectorAll('.skip-links a[href^="#"]').forEach(function(link) {
1044                        link.addEventListener('click', function(event) {
1045                            var hash = link.getAttribute('href');
1046                            var target = getTargetFromHash(hash);
1047                            if (!target) {
1048                                return;
1049                            }
1050
1051                            event.preventDefault();
1052
1053                            if (window.history && window.history.pushState) {
1054                                window.history.pushState(null, '', hash);
1055                            } else {
1056                                window.location.hash = hash;
1057                            }
1058
1059                            scrollToSkipTarget(hash);
1060                        });
1061                    });
1062
1063                    updateStickyOffset();
1064
1065                    function applyFixed() {
1066                        if (!stickyTarget.classList.contains('fixed-top')) {
1067                            updateStickyOffset();
1068                            stickyTarget.classList.add('fixed-top');
1069                            document.body.style.paddingTop = navbarHeight + 'px';
1070                            bodyPadApplied = true;
1071                        }
1072                    }
1073
1074                    function removeFixed() {
1075                        if (stickyTarget.classList.contains('fixed-top')) {
1076                            stickyTarget.classList.remove('fixed-top');
1077                            document.body.style.paddingTop = '';
1078                            bodyPadApplied = false;
1079                        }
1080                    }
1081
1082                    window.addEventListener('scroll', function() {
1083                        if (window.scrollY > navbarTop) {
1084                            applyFixed();
1085                        } else {
1086                            removeFixed();
1087                        }
1088                    });
1089
1090                    window.addEventListener('resize', function() {
1091                        updateStickyOffset();
1092                        if (!stickyTarget.classList.contains('fixed-top')) {
1093                            navbarTop = stickyTarget.getBoundingClientRect().top + window.scrollY;
1094                        }
1095                    });
1096
1097                    if ('ResizeObserver' in window) {
1098                        new ResizeObserver(updateStickyOffset).observe(stickyTarget);
1099                    }
1100
1101                    stickyTarget.querySelectorAll('img').forEach(function(image) {
1102                        if (!image.complete) {
1103                            image.addEventListener('load', updateStickyOffset, { once: true });
1104                        }
1105                    });
1106
1107                    window.addEventListener('load', updateStickyOffset);
1108
1109                    if (window.scrollY > navbarTop) applyFixed();
1110
1111                    if (window.location.hash) {
1112                        window.setTimeout(function() {
1113                            scrollToSkipTarget(window.location.hash);
1114                        }, 0);
1115                    }
1116                }
1117            }
1118        });
1119    }
1120
1121    if (document.readyState === 'loading') {
1122        document.addEventListener('DOMContentLoaded', init);
1123    } else {
1124        init();
1125    }
1126})();
1127</script>
1127</nav></div></div></div></div></div>        </div>        </header>
1128                <main id="main-content" tabindex="-1">
1129            <div class="content">
1130                <div class="container-xl columns " id="Path">
1131    <div class="row">
1132        <nav aria-label="breadcrumb">
1133            <ol class="breadcrumb">
1134            <li class="breadcrumb-item">
1135    <a href="/" target="_self">
1136        <span style="display: none">home</span><i class="fa fa-home" aria-hidden="true"></i>    </a>
1137    </li>
1138<li class="breadcrumb-item">
1139    <a href="/ajuntament" target="_self">
1140        Ajuntament    </a>
1141        <button class="btn dropdown-toggle" type="button" id="defaultDropdow1" data-bs-toggle="dropdown" data-bs-auto-close="true" aria-expanded="false" aria-label="Desplega"></button>
1142    <ul class="dropdown-menu" aria-label="defaultDropdown1">
1143                    <li><a class="dropdown-item" href="/ajuntament/alcaldia">Salutació de l'Alcalde</a></li>
1144                    <li><a class="dropdown-item" href="/ajuntament/consistori">Consistori</a></li>
1145                    <li><a class="dropdown-item" href="/ajuntament/informacio-oficial">Informació oficial</a></li>
1146                    <li><a class="dropdown-item" href="/ajuntament/organitzacio-interna">Organització Interna</a></li>
1147                    <li><a class="dropdown-item" href="/ajuntament/organismes-dependents-o-vinculats">Organismes dependents o vinculats</a></li>
1148                    <li><a class="dropdown-item" href="/ajuntament/que-es-la-seu-electronica">Seu electrònica</a></li>
1149                    <li><a class="dropdown-item" href="/ajuntament/transparencia">Transparència</a></li>
1150            </ul>
1151    </li>
1152            </ol>
1153        </nav>
1154    </div>
1155</div>
1156                <div class="container-xl columns">
1157                                        <div class="row">
1158    <div class="col-xs-12 col-sm-12 col-md-3 col-lg-3 leftSidebar responsiveHeight" data-nosnippet>
1159        <nav class="menuLeft" id="Menuleft_page" aria-label="Menú Consistori">
1160                    <ul>
1161                <li class="subMenuPage-12 level2">
1162    <a href="/ajuntament/alcaldia" target="_self">
1163        Salutació de l'Alcalde            </a>
1164
1165    </li>
1166<li class="subMenuPage-8 current level2">
1167    <a href="/ajuntament/consistori" target="_self" aria-current="page">
1168        Consistori            </a>
1169
1170        <ul>
1171        <li class="subMenuPage-115 level3">
1172    <a class="" href="/ajuntament/consistori/composicio-del-ple" target="_self" rel="">
1173        Composició del Ple            </a>
1174    </li>
1175<li class="subMenuPage-127 level3">
1176    <a class="" href="https://elecciones.locales2023.es/ca/" target="_blank" rel="">
1177        Resultats electorals            </a>
1178    </li>
1179<li class="subMenuPage-167 level3">
1180    <a class="fly" href="/ajuntament/consistori/consistoris-anteriors" target="_self" rel="">
1181        Consistoris anteriors            </a>
1182    </li>
1183    </ul>
1184    </li>
1185<li class="subMenuPage-156 level2">
1186    <a href="/ajuntament/informacio-oficial" target="_self">
1187        Informació oficial            </a>
1188
1189    </li>
1190<li class="subMenuPage-143 level2">
1191    <a href="/ajuntament/organitzacio-interna" target="_self">
1192        Organització Interna            </a>
1193
1194    </li>
1195<li class="subMenuPage-81 level2">
1196    <a href="/ajuntament/organismes-dependents-o-vinculats" target="_self">
1197        Organismes dependents o vinculats            </a>
1198
1199    </li>
1200<li class="subMenuPage-122 level2">
1201    <a href="/ajuntament/que-es-la-seu-electronica" target="_self">
1202        Seu electrònica            </a>
1203
1204    </li>
1205<li class="subMenuPage-123 level2">
1206    <a href="/ajuntament/transparencia" target="_self">
1207        Transparència            </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="Consistori">Consistori</h1><div class="showTablets">
1217    <div class="page-8 js-widget o-widget clearfix boxBX  default "  >  <div class="o-widget-wrapper clearfix default-BX   row " ><div class="o-widget-container "><div class="dinamic">
1218        <ul class="widgetMenu">
1219        <li class="menuClassic">
1220    <a class="menuClassic-link" href="/ajuntament/consistori/composicio-del-ple" target="_self">
1221        Composició del Ple    </a>
1222</li>
1223<li class="menuClassic">
1224    <a class="menuClassic-link" href="https://elecciones.locales2023.es/ca/" target="_blank">
1225        Resultats electorals    </a>
1226</li>
1227<li class="menuClassic">
1228    <a class="menuClassic-link" href="/ajuntament/consistori/consistoris-anteriors" target="_self">
1229        Consistoris anteriors    </a>
1230</li>
1231    </ul>
1232    </div></div>  </div></div></div>
1233<div>
1234        <div class="dinamic">
1235                                </div>                                        </div>
1236<div class="hideTablets">
1237    <div class="page-8 js-widget o-widget clearfix boxBX  default "  >  <div class="o-widget-wrapper clearfix default-BX   row " ><div class="o-widget-container "><div class="dinamic">
1238        <ul class="widgetMenu">
1239        <li class="menuClassic">
1240    <a class="menuClassic-link" href="/ajuntament/consistori/composicio-del-ple" target="_self">
1241        Composició del Ple    </a>
1242</li>
1243<li class="menuClassic">
1244    <a class="menuClassic-link" href="https://elecciones.locales2023.es/ca/" target="_blank">
1245        Resultats electorals    </a>
1246</li>
1247<li class="menuClassic">
1248    <a class="menuClassic-link" href="/ajuntament/consistori/consistoris-anteriors" target="_self">
1249        Consistoris anteriors    </a>
1250</li>
1251    </ul>
1252    </div></div>  </div></div>                        </div>
1253<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 ">
1253<div class="o-share o-share--icones_rodones">
1254    
1255    <div class="o-share__list">
1256                    <a
1257                class="o-share__link o-share__link--x"
1258                href="https://twitter.com/intent/tweet?text=Consistori&amp;url=https%3A%2F%2Fwww.perafita.cat%2Fajuntament%2Fconsistori&amp;via=Ajunt_Perafita"
1259                target="_blank"
1260                rel="noopener"
1261                title="X"
1262            >
1263                <span class="o-share__icon" aria-hidden="true">
1264                    <i class="fa-brands fa-x-twitter"></i>
1265                </span>
1266                <span class="visually-hidden">X</span>
1267            </a>
1268            </div>
1269</div>
1270</div>  </div></div></div>
1271<span class="updated">Darrera actualització: 25.02.2024 | 07:54</span>
1272                </div>
1273    </div>
1274                </div>
1275            </div>
1276        </main>
1277        <footer id="footer-content" tabindex="-1">
1278            <div class="footer">
1279    <div class="shortcuts">
1280    <div class="container-xl">            
1281        <div class="featuredItem responsiveHeight">
1282    <h2 class="title">RSS</h2>
1283    <p class="subtitle">L'actualitat a un clic</p>
1284    <ul id="cm_rss">
1285        <li style="background-image: url('/front/view/images/ico_16_rss.png');">
1286    <a href="/rss/12">
1287           Agenda    </a>
1288</li>
1289<li style="background-image: url('/front/view/images/ico_16_rss.png');">
1290    <a href="/rss/15">
1291           Agenda política    </a>
1292</li>
1293<li style="background-image: url('/front/view/images/ico_16_rss.png');">
1294    <a href="/rss/13">
1295           Avisos    </a>
1296</li>
1297<li style="background-image: url('/front/view/images/ico_16_rss.png');">
1298    <a href="/rss/23">
1299           Llocs d'interès    </a>
1300</li>
1301<li style="background-image: url('/front/view/images/ico_16_rss.png');">
1302    <a href="/rss/11">
1303           Notícies    </a>
1304</li>
1305<li style="background-image: url('/front/view/images/ico_16_rss.png');">
1306    <a href="/rss/14">
1307           Publicacions    </a>
1308</li>
1309    </ul>
1310</div>
1311<div class="featuredItem responsiveHeight">
1312    <h2 class="title">Adreces i telèfons</h2>
1313    
1314    <img width="96" height="96" src="/front/view/images/icons/plugin_home.png" alt="">
1315
1316    <p class="elem_button">
1317        <a href="/adreces-i-telefons" aria-label="Adreces i telèfons">
1318            Accedeix        </a>
1319    </p>
1320</div>
1321<div class="featuredItem">
1322    <h2 class="title">Meteo</h2>
1323    <div id="cm_meteocat">
1324        <ul class="bxslider">
1325            <li>
1326    Dissabte, 3 d’octubre    <img width="80" height="80"
1327        alt="entre poc i mig ennuvolat"
1328        src="/front/view/images/meteocat/nuvolina.png"
1329    >
1330    <p>
1331        T.Màx: 24&deg;
1332        <br>
1333        T.Min: 12&deg;
1334    </p>
1335            <p>
1336            Tarda
1337            <img alt="xàfec" width="24" height="24"
1338                src="/front/view/images/meteocat/pluja.png"
1339            >
1340        </p>
1341    </li>
1342<li>
1343    Diumenge, 4 d’octubre    <img width="80" height="80"
1344        alt="entre mig i molt ennuvolat"
1345        src="/front/view/images/meteocat/nuvol.png"
1346    >
1347    <p>
1348        T.Màx: 22&deg;
1349        <br>
1350        T.Min: 13&deg;
1351    </p>
1352            <p>
1353            Tarda
1354            <img alt="ruixat" width="24" height="24"
1355                src="/front/view/images/meteocat/pluja.png"
1356            >
1357        </p>
1358    </li>
1359        </ul>
1360        <div class="outside">
1361            <p><span id="slider-prev"></span><span id="slider-next"></span></p>
1362        </div>
1363
1364    </div>
1365</div>
1366<div class="featuredItem responsiveHeight">
1367    <h2 class="title">Butlletí digital</h2>
1368    <img width="96" height="96" src="/front/view/images/icons/plugin_newsletter.png" alt="">
1369    <p class="elem_button">
1370        <a href="/actualitat/butlleti-digital" aria-label="Butlletí digital">
1371            Subscriu-te        </a>
1372    </p>
1373</div>
1374<div id="cm_planol" class="featuredItem responsiveHeight">
1375    <h2 class="title">Plànol / Carrers</h2>
1376
1377    <img width="96" height="96" src="/front/view/images/icons/plugin_map.png" alt="">
1378
1379    <p class="elem_button">
1380        <a href="/el-municipi/planol--guia-de-carrers" aria-label="Plànol">
1381            Accedeix        </a>
1382    </p>
1383</div>
1384    </div>
1385</div>
1386    <div class="hightlights">
1387        <div class="container-xl">
1388                    </div>
1389    </div>
1390    <nav class="menu" aria-label="Peu de menú">
1391        <ul class="container-xl sitemap">
1392            <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/alcaldia" target="_self" >Salutació de l'Alcalde  </a></li><li class="subMenuPage-8">  <a class="subMenuPage-8" href="/ajuntament/consistori" target="_self" >Consistori  </a></li><li class="subMenuPage-156">  <a class="subMenuPage-156" href="/ajuntament/informacio-oficial" target="_self" >Informació oficial  </a></li><li class="subMenuPage-143">  <a class="subMenuPage-143" href="/ajuntament/organitzacio-interna" target="_self" >Organització Interna  </a></li><li class="subMenuPage-81">  <a class="subMenuPage-81" href="/ajuntament/organismes-dependents-o-vinculats" target="_self" >Organismes dependents o vinculats  </a></li><li class="subMenuPage-122">  <a class="subMenuPage-122" href="/ajuntament/que-es-la-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-82">  <a class="subMenuPage-82" href="/serveis-i-tramits/oficines-municipals" target="_self" >Oficines municipals  </a></li><li class="subMenuPage-33">  <a class="subMenuPage-33" href="/serveis-i-tramits/serveis" target="_self" >Serveis  </a></li><li class="subMenuPage-31">  <a class="subMenuPage-31" href="/serveis-i-tramits/tramits-i-gestions" target="_self" >Tràmits i gestions  </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-171">  <a class="subMenuPage-171" href="/serveis-i-tramits/verificacio-de-documents" target="_self" >Verificació de documents  </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><li class="subMenuPage-133">  <a class="subMenuPage-133" href="/serveis-i-tramits/finestreta-unica-empresarial-fue" target="_self" >Finestreta Única Empresarial (FUE)  </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-34">  <a class="subMenuPage-34" href="/el-municipi/com-arribar" target="_self" >Com arribar  </a></li><li class="subMenuPage-36">  <a class="subMenuPage-36" href="/el-municipi/planol--guia-de-carrers" target="_self" >Plànol / Guia de carrers  </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="/el-municipi/turisme" target="_self" >Turisme  </a></li><li class="subMenuPage-48">  <a class="subMenuPage-48" href="http://sitmun.diba.cat/idelocals/?mun_ine=08160" target="_blank" rel="noopener noreferrer" >Informació geogràfica  </a></li></ul></li><li class="page-4 Inferior">  <a class="page-4" href="/actualitat" target="_self" >Actualitat  </a><ul id="footer-menu-4"><li class="subMenuPage-128">  <a class="subMenuPage-128" href="/actualitat/avisos" target="_self" >Avisos  </a></li><li class="subMenuPage-53">  <a class="subMenuPage-53" href="/actualitat/noticies" target="_self" >Notícies  </a></li><li class="subMenuPage-54">  <a class="subMenuPage-54" href="/actualitat/agenda" target="_self" >Agenda  </a></li><li class="subMenuPage-164">  <a class="subMenuPage-164" href="/actualitat/agenda-cursos-i-taller
1392s" target="_self" >Agenda cursos i tallers  </a></li><li class="subMenuPage-16">  <a class="subMenuPage-16" href="/actualitat/plans-campanyes-i-programes" target="_self" >Plans, campanyes i programes  </a></li><li class="subMenuPage-55">  <a class="subMenuPage-55" href="/actualitat/butlleti-digital" target="_self" >Butlletí digital  </a></li><li class="subMenuPage-56">  <a class="subMenuPage-56" href="/actualitat/full-de-perafita" target="_self" >Full de Perafita  </a></li><li class="subMenuPage-165">  <a class="subMenuPage-165" href="/actualitat/full-dhistoria-de-perafita" target="_self" >Full d'història de Perafita  </a></li><li class="subMenuPage-57">  <a class="subMenuPage-57" href="/actualitat/rss" target="_self" >Rss  </a></li><li class="subMenuPage-58">  <a class="subMenuPage-58" href="/actualitat/hemeroteca" target="_self" >Hemeroteca  </a></li></ul></li>        </ul>
1393    </nav>
1394    <div class="links">
1395        <div class="container-xl">
1396            <div class="row">
1397                <div class="xxss col-md-6 col-sm-6 col-lg-6 middle">                
1398                        <span class="titol">Xarxes socials:</span>
1399  
1400    <a target="_blank" aria-label="Twitter" href="https://twitter.com/ajunt_perafita?lang=ca" title="Obre en finestra nova: Twitter">
1401        <span style="display: none">Twitter</span>
1402        <img src="/front/view/images/icons/social/twitter.png" alt="Twitter" width="32" height="32">
1403    </a>
1404  
1405    <a target="_blank" aria-label="Youtube" href="https://www.youtube.com/channel/UCXvFhwduhumZxjpF55LXHEA?view_as=subscriber" title="Obre en finestra nova: Youtube">
1406        <span style="display: none">Youtube</span>
1407        <img src="/front/view/images/icons/social/youtube.png" alt="Youtube" width="32" height="32">
1408    </a>
1409                </div>
1410                <div class="col-md-6 col-sm-6 col-lg-6 middle">
1411                    <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/contactar" target="_self" >Contactar  </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-61">  <a href="/altres-continguts/accessibilitat" target="_self" >Accessibilitat  </a></li></ul></nav>                </div>
1412            </div>
1413        </div>
1414    </div>
1415    <div class="contact">
1416        <div class="container-xl">
1417            <div class="row">
1418                <address class="address col-md-6 col-sm-6 col-lg-6">
1419    <div class="title">
1420        Ajuntament de Perafita    </div>
1421    Carrer Major, 19<br>08589 Perafita<br>Tel. 938 530 001 / 621 14 72 95<br>Fax 938 530 001<br>NIF P0815900F<br></address><div class="diba col-md-6 col-sm-6 col-lg-6" id="diba-partner">
1422    <div class="title">
1423        Amb la col·laboració de:    </div>
1424    <a href="http://diba.cat/" target="_blank" aria-label="Anar a la web Diputació de Barcelona" title="Obre en finestra nova: Diputació de Barcelona">
1425        <span style="display: none">Diputació de Barcelona</span>
1426        <img src="/front/view//images/logoDiba/Blanc.svg" alt="Diputació de Barcelona" class="logo-diba">
1427    </a>
1428</div>            </div>
1429        </div>
1430    </div>
1431</div>
1432        </footer>
1433        <!-- Llibreries de tercers + js propis registrats a AssetManager (jQuery primer) -->
1434<script src="/front/view/js/bower_components/jquery/dist/jquery.min.js?ver=1790971452"></script>
vendor: 1 bytes, line 1434
1434
1435<script src="/front/view/js/bower_components/bootstrap/dist/js/bootstrap.bundle.min.js?ver=1790971452"></script>
vendor: 1 bytes, line 1435
1435
1436<script src="/front/view/js/bower_components/bxslider-4/dist/jquery.bxslider.js?ver=1790971452"></script>
vendor: 1 bytes, line 1436
1436
1437<script src="/front/view/js/bower_components/jscal/index.js?ver=1790971452"></script>
vendor: 1 bytes, line 1437
1437
1438<script src="/common/bower_components/select2/dist/js/select2.min.js?ver=1790971452"></script>
vendor: 1 bytes, line 1438
1438
1439<script src="/common/bower_components/select2/dist/js/i18n/ca.js?ver=1790971452"></script>
vendor: 1 bytes, line 1439
1439
1440<script src="/common/bower_components/strength.js/src/strength.min.js?ver=1790971452"></script>
vendor: 1 bytes, line 1440
1440
1441<script src="/front/view/js/bower_components/masonry-layout/dist/masonry.pkgd.min.js?ver=1790971452"></script>
vendor: 1 bytes, line 1441
1441
1442<script src="/front/view/js/constants.js?ver=1790971452"></script>
vendor: 1 bytes, line 1442
1442
1443<script src="/front/view/js/functions.js?ver=1790971452"></script>
vendor: 1 bytes, line 1443
1443
1444<script src="/front/view/js/functions/footer.js?ver=1790971452"></script>
vendor: 1 bytes, line 1444
1444
1445<script src="/front/view/js/bower_components/bootstrap-datepicker/dist/js/bootstrap-datepicker.min.js?ver=1790971452"></script>
vendor: 1 bytes, line 1445
1445
1446<script src="/front/view/js/bower_components/jquery.prettyPhoto/index.js?ver=1790971452"></script>
vendor: 1 bytes, line 1446
1446
1447<script>
1448    $(document).ready(function(){
1449                    $("a[rel^='prettyPhoto']").prettyPhoto();
1450            $("a[rel^='prettyFrame']").prettyPhoto();
1451            });
1452</script>
vendor: 1 bytes, line 1452
1452
1453<script>
1454        var TWITTER = true;
1455            var FACEBOOK = null;
1456        $(window).on("load", function() {
1457        start();
1458    });
1459        $(document).ready(function() {
1460        if (typeof articlesId !== 'undefined') {
1461            var today = new Date();
1462                        var date = today
1463                        articlesId.push('internal_calendar');
1464
1465            var oneYearAfter = new Date();
1466            oneYearAfter.setDate(oneYearAfter.getDate() + 365);
1467            for (id in articlesId) {
1468                Calendar.setup({
1469                    id: articlesId[id],
1470                    cont: "dv_calendar_" + articlesId[id],
1471                    fdow: 1,
1472                    date: date,
1473                    noScroll: true,
1474                    bottomBar: false,
1475                    max: oneYearAfter,
1476                    animation: false,
1477                    titleFormat: "%B %Y",
1478                    dateInfo: getDateInfo
1479                });
1480                setEqualContentColumns();
1481            }
1482        }
1483    });
1484
1485        
1486    // Initialize Select2 with icon support for category filter
1487    $(document).ready(function() {
1488        if ($('#categoryFilter').length) {
1489            $('#categoryFilter').select2({
1490                templateResult: function(option) {
1491                    if (!option.id) return option.text;
1492                    var icon = $(option.element).data('icon');
1493                    if (!icon) return option.text;
1494                    return $('<span><img src="' + icon + '" style="width: 16px; height: 16px; margin-right: 6px; vertical-align: middle;"> ' + option.text + '</span>');
1495                },
1496                templateSelection: function(option) {
1497                    if (!option.id) return option.text;
1498                    var icon = $(option.element).data('icon');
1499                    if (!icon) return option.text;
1500                    return $('<span><img src="' + icon + '" style="width: 16px; height: 16px; margin-right: 6px; vertical-align: middle;"> ' + option.text + '</span>');
1501                },
1502                allowHtml: true
1503            });
1504        }
1505    });
1506</script>
1506
1507        <!-- CSS final-->
1508
1509        
1509<script>
1510          const css = "div.page-8 .o-widget-wrapper {\n  border: 0;\n}\n";
1511          const style = document.createElement('style');
1512          style.textContent = css;
1513          document.head.appendChild(style);
1514        </script>
1514
1515
1516        <!-- Start Modal views-->
1517        
1518        <div class="modal fade" id="videoModal" tabindex="-1" role="dialog"  aria-hidden="true">
1519    <div class="modal-dialog modal-dialog-centered" role="document">
1520        <div class="modal-content">
1521            <div class="modal-header">
1522                <div class="title-head"></div>
1523            </div>
1524            <div class="modal-body">
1525                <div class="tiktok-div-embed"></div>
1526                <iframe id="iframeVideo" title="Vídeo" class="iframeVideo" allowfullscreen></iframe>
1527
1528            </div>
1529            <div class="modal-footer">
1530                <span id="titleVideo" class="titleVideo"></span>
1531                <a id="closeModalVideo" class="close" href="javascript:void(0)" data-bs-dismiss="modal"><span style="display: none">X</span></a>
1532
1533            </div>
1534        </div>
1535    </div>
1536</div>        <div class="modal fade" id="pdfModal" tabindex="-1" role="dialog"  aria-hidden="true">
1537    <div id="documentDialog" class="modal-dialog modal-dialog-centered" role="document">
1538        <div class="modal-content">
1539            <div class="modal-header">
1540                <div class="title-head"></div>
1541            </div>
1542            <div class="modal-body">
1543                <iframe id="iframePdf" title='Document' class="pdfview" style="width: 100%; height: 100%"></iframe>
1544            </div>
1545            <div class="modal-footer">
1546                <span id="titlePdf" class="titlePdf"></span>
1547                <a id="closeModalPDF" class="close" href="javascript:void(0)"><span style="display: none">X</span></a>
1548            </div>
1549        </div>
1550    </div>
1551</div>        <!-- End Modal views -->
1552        
1552<script src="/front/view/js/endScript.js?ver=1790971452"></script>
1552
1553        <!-- Només activar per desenvolupament
1554        
1554<script src="../../../node_modules/axe-core/axe.js"></script>
1554
1555        
1555<script src="../../../dist/my-first-webpack.bundle.js"></script>
1555
1556        -->
1557                
1557<script>
1558            $(document).ready(function () {
1559                startClock(1790971453);
1560                if (typeof (callMenuAfterJQueryLoaded) == "function") {
1561                    callMenuAfterJQueryLoaded();
1562                }
1563                
1564                datepickerInit();
1565                carouselControlSmall();
1566
1567                if (typeof (callMenuBeforeJQueryLoaded) == "function") {
1568                    callMenuBeforeJQueryLoaded();
1569                }
1570
1571                if (typeof (callMenuBeforeTopJQueryLoaded) == "function") {
1572                    callMenuBeforeTopJQueryLoaded();
1573                }
1574                addAttributesDivVcards();
1575                modalsImage();
1576                modalsPdf();
1577                translateWeb();
1578                var carousel = $('#carouselControls');
1579                carousel.on('slide.bs.carousel', function (event) {
1580                    toSlideImage(event);
1581                });
1582                /** Només activar per desenvolupament
1583                axe.configure({
1584                    locale: {
1585                        lang: 'es',
1586                    }
1587                });
1588
1589                axe.run().then(results => {
1590                        if (results.violations.length) {
1591                            console.log(results.violations);
1592                            throw new Error('Accessibility issues found');
1593                        }
1594                    })
1595                    .catch(err => {
1596                        console.log('Something bad happened:', err.message);
1597                    });
1598                */
1599            });
1600
1601            $(window).resize(function() {
1602                equalHeightIconTime();
1603            })
1604        </script>
1604
1605                    </body>
1606</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.