1<!DOCTYPE html> 2<html lang="fr-FR"> 3<head> 4 <title>Offres d’emploi et stages | Mairie de Oye Plage</title> 5 <meta charset="UTF-8" /> 6 <link rel="stylesheet" href="https://cdnjs.cloudflare.com/ajax/libs/font-awesome/6.0.0-beta3/css/all.min.css"> 7 8 <meta name="viewport" content="width=device-width, initial-scale=1"> 9<title>Offres d’emploi et stages – Mairie de Oye Plage</title> 10<meta name='robots' content='max-image-preview:large' /> 11<link rel="manifest" href="https://www.oye-plage.fr/koba-manifest.json"> 12<meta name="google-site-verification" content="rMArVgtxpawbZYaOdilr_UDAGzrThotLlqneikv33es" /> 13<meta name="description" content="Site officiel de la Mairie de Oye Plage. La commune est située dans le département du Pas-de-Calais en région Hauts-de-France. Découvrez toutes nos actualités."> 14 <!-- Favicon standard --> 15 <link rel="icon" type="image/png" sizes="32x32" href="https://www.oye-plage.fr/wp-content/uploads/sites/60/favicons/favicon-32x32.png"> 16 <link rel="icon" type="image/png" sizes="16x16" href="https://www.oye-plage.fr/wp-content/uploads/sites/60/favicons/favicon-16x16.png"> 17 18 <!-- Apple Touch Icon (iOS) --> 19 <link rel="apple-touch-icon" sizes="180x180" href="https://www.oye-plage.fr/wp-content/uploads/sites/60/favicons/apple-touch-icon.png"> 20 21 <!-- Android Chrome --> 22 <link rel="icon" type="image/png" sizes="192x192" href="https://www.oye-plage.fr/wp-content/uploads/sites/60/favicons/android-chrome-192x192.png"> 23 <link rel="icon" type="image/png" sizes="512x512" href="https://www.oye-plage.fr/wp-content/uploads/sites/60/favicons/android-chrome-512x512.png"> 24 25 <!-- Safari Pinned Tab (SVG ou PNG) --> 26 <link rel="mask-icon" href="https://www.oye-plage.fr/wp-content/uploads/sites/60/favicons/favicon-32x32.png" color="#6401ce"> 27 28 <!-- Microsoft --> 29 <meta name="msapplication-TileColor" content="#6401ce"> 30 <meta name="msapplication-TileImage" content="https://www.oye-plage.fr/wp-content/uploads/sites/60/favicons/mstile-144x144.png"> 31 32 <!-- Theme color pour navigateurs mobiles --> 33 <meta name="theme-color" content="#6401ce"> 34 35 <link rel='dns-prefetch' href='//cdnjs.cloudflare.com' /> 36<link rel='dns-prefetch' href='//unpkg.com' /> 37<link rel='dns-prefetch' href='//cdn.jsdelivr.net' /> 38<link rel="alternate" title="oEmbed (JSON)" type="application/json+oembed" href="https://www.oye-plage.fr/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.oye-plage.fr%2Femploi%2F" /> 39<link rel="alternate" title="oEmbed (XML)" type="text/xml+oembed" href="https://www.oye-plage.fr/wp-json/oembed/1.0/embed?url=https%3A%2F%2Fwww.oye-plage.fr%2Femploi%2F&format=xml" /> 40<style id="koba-colors"> 41:root { 42 --koba-primary: #6401ce; 43 --koba-secondary: #e8c281; 44 --koba-primary-rgb: 100, 1, 206; 45 --koba-secondary-rgb: 232, 194, 129; 46} 47</style><style id="wp-img-auto-sizes-contain-inline-css"> 48img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 49/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 50</style> 51<link rel='stylesheet' id='acy_front_messages_css-css' href='https://www.oye-plage.fr/wp-content/plugins/acymailing/media/css/front/messages.min.css?v=1790752554&ver=11.1.0' media='all' /> 52<style id="wp-emoji-styles-inline-css"> 53 54 img.wp-smiley, img.emoji { 55 display: inline !important; 56 border: none !important; 57 box-shadow: none !important; 58 height: 1em !important; 59 width: 1em !important; 60 margin: 0 0.07em !important; 61 vertical-align: -0.1em !important; 62 background: none !important; 63 padding: 0 !important; 64 } 65/*# sourceURL=wp-emoji-styles-inline-css */ 66</style> 67<style id="wp-block-library-inline-css"> 68:root{--wp-block-synced-color:#7a00df;--wp-block-synced-color--rgb:122,0,223;--wp-bound-block-color:var(--wp-block-synced-color);--wp-editor-canvas-background:#ddd;--wp-admin-theme-color:#007cba;--wp-admin-theme-color--rgb:0,124,186;--wp-admin-theme-color-darker-10:#006ba1;--wp-admin-theme-color-darker-10--rgb:0,107,160.5;--wp-admin-theme-color-darker-20:#005a87;--wp-admin-theme-color-darker-20--rgb:0,90,135;--wp-admin-border-width-focus:2px}@media (min-resolution:192dpi){:root{--wp-admin-border-width-focus:1.5px}}
68.wp-element-button{cursor:pointer}:root .has-very-light-gray-background-color{background-color:#eee}:root .has-very-dark-gray-background-color{background-color:#313131}:root .has-very-light-gray-color{color:#eee}:root .has-very-dark-gray-color{color:#313131}:root .has-vivid-green-cyan-to-vivid-cyan-blue-gradient-background{background:linear-gradient(135deg,#00d084,#0693e3)}:root .has-purple-crush-gradient-background{background:linear-gradient(135deg,#34e2e4,#4721fb 50%,#ab1dfe)}:root .has-hazy-dawn-gradient-background{background:linear-gradient(135deg,#faaca8,#dad0ec)}:root .has-subdued-olive-gradient-background{background:linear-gradient(135deg,#fafae1,#67a671)}:root .has-atomic-cream-gradient-background{background:linear-gradient(135deg,#fdd79a,#004a59)}:root .has-nightshade-gradient-background{background:linear-gradient(135deg,#330968,#31cdcf)}:root .has-midnight-gradient-background{background:linear-gradient(135deg,#020381,#2874fc)}:root{--wp--preset--font-size--normal:16px;--wp--preset--font-size--huge:42px}.has-regular-font-size{font-size:1em}.has-larger-font-size{font-size:2.625em}.has-normal-font-size{font-size:var(--wp--preset--font-size--normal)}.has-huge-font-size{font-size:var(--wp--preset--font-size--huge)}:root .has-text-align-center{text-align:center}:root .has-text-align-left{text-align:left}:root .has-text-align-right{text-align:right}.has-fit-text{white-space:nowrap!important}#end-resizable-editor-section{display:none}.aligncenter{clear:both}.items-justified-left{justify-content:flex-start}.items-justified-center{justify-content:center}.items-justified-right{justify-content:flex-end}.items-justified-space-between{justify-content:space-between}.screen-reader-text{word-wrap:normal!important;border:0;clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute;width:1px;word-break:normal!important}.screen-reader-text:focus{background-color:#ddd;clip-path:none;color:#444;display:block;font-size:1em;height:auto;left:5px;line-height:normal;padding:15px 23px 14px;text-decoration:none;top:5px;width:auto;z-index:100000}html :where(.has-border-color){border-style:solid}html :where([style^=border-color],[style*=";border-color"],[style*="; border-color"]){border-style:solid}html :where([style^=border-top-color],[style*=";border-top-color"],[style*="; border-top-color"]){border-top-style:solid}html :where([style^=border-right-color],[style*=";border-right-color"],[style*="; border-right-color"]){border-right-style:solid}html :where([style^=border-bottom-color],[style*=";border-bottom-color"],[style*="; border-bottom-color"]){border-bottom-style:solid}html :where([style^=border-left-color],[style*=";border-left-color"],[style*="; border-left-color"]){border-left-style:solid}html :where([style^=border-width],[style*=";border-width"],[style*="; border-width"]){border-style:solid}html :where([style^=border-top-width],[style*=";border-top-width"],[style*="; border-top-width"]){border-top-style:solid}html :where([style^=border-right-width],[style*=";border-right-width"],[style*="; border-right-width"]){border-right-style:solid}html :where([style^=border-bottom-width],[style*=";border-bottom-width"],[style*="; border-bottom-width"]){border-bottom-style:solid}html :where([style^=border-left-width],[style*=";border-left-width"],[style*="; border-left-width"]){border-left-style:solid}html :where(img[class*=wp-image-]){height:auto;max-width:100%}:where(figure){margin:0 0 1em}html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:var(--wp-admin--admin-bar--height,0px)}@media screen and (max-width:600px){html :where(.is-position-sticky){--wp-admin--admin-bar--position-offset:0px}} 69 70/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 71</style> 72<style id="wp-block-library-inline-css-extra"> 73.meteo-widget { background: linear-gradient(135deg, #f4a900 0%, #e67e22 100%); color: #fff; padding: 25px; border-radius: 15px; text-align: center; max-width: 350px; margin: 20px auto; box-shadow: 0 10px 30px rgba(0,0,0,0.2); font-family: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, sans-serif; } 74 .meteo-widget.meteo-error { background: #e74c3c; } 75 .meteo-header { display: flex; justify-content: space-between; align-items: center; margin-bottom: 15px; padding-bottom: 10px; border-bottom: 1px solid rgba(255,255,255,0.3); } 76 .meteo-header h3 { margin: 0; font-size: 1.3em; } 77 .meteo-main { display: flex; align-items: center; justify-content: center; gap: 10px; } 78 .meteo-icon { width: 80px; height: 80px; } 79 .meteo-temp { font-size: 3em; font-weight: bold; } 80 .meteo-description { font-size: 1.1em; margin: 10px 0; text-transform: capitalize; } 81 .meteo-minmax { display: flex; justify-content: center; gap: 30px; margin: 15px 0; } 82 .meteo-min { background: #20b7d9; padding: 8px 15px; border-radius: 20px; font-weight: bold; } 83 .meteo-max { background: #c0392b; padding: 8px 15px; border-radius: 20px; font-weight: bold; } 84 .meteo-humidity { margin-top: 10px; font-size: 0.95em; opacity: 0.9; } 85.koba-opening-status{display:flex;justify-content:space-between;align-items:center;gap:8px;padding:10px 16px;border-radius:4px;font-size:14px;line-height:1}.koba-opening-status.koba-status-open{background-color:#d4edda;color:#155724;border:1px solid #c3e6cb}.koba-opening-status.koba-status-closed{background-color:rgba(241, 185, 185, .5);color:#721c24;}.koba-status-icon{font-size:3rem}.koba-status-open .koba-status-icon{color:#28a745}.koba-status-closed .koba-status-icon{color:#721c24}.koba-status-next{display:none;font-weight:400;font-size:13px;opacity:0.8;margin-left:5px}.koba-status-next::before{content:"â¢";margin-right:8px}.koba-style-alert{width:100%;border-radius:4px;padding:12px 20px}.koba-style-minimal{background:transparent !important;border:none !important;padding:0;font-size:13px}.koba-horaires-table{width:100%;border-collapse:collapse;font-size:14px}.koba-horaires-table th,.koba-horaires-table td{padding:12px 15px;text-align:left;border-bottom:1px solid #e9ecef; font-size: 14.56px; font-weight: 700;}.koba-horaires-table td:nth-child(2){font-weight: 400;}.koba-horaires-table th{background:#f8f9fa;font-weight:600;color:#495057}.koba-horaires-table tr:hover{background-color:#f8f9fa}.koba-horaires-table tr.koba-today{}.koba-horaires-table tr.koba-today:hover{}.koba-jour{font-weight:500}.koba-badge-today{display:none;background:var(--koba-primary,#209bbc);color:#fff;font-size:10px;padding:2px 6px;border-radius:3px;margin-left:8px;font-weight:600;text-transform:uppercase}.koba-info-supplementaire{background:#eafbf8;border:1px solid #0087ca;padding:12px 15px;margin-top:10px;border-radius:4px;font-size:14px;color:#0087ca}.koba-info-supplementaire i{margin-right:8px;color:#0087ca}.koba-fermetures-exceptionnelles{margin-top:20px;padding:15px;background:#eafbf8;border-radius:8px;border-left:4px solid #0087c}.koba-fermetures-exceptionnelles h4{margin:0 0 10px 0;color:#0087ca;font-size:14px}.koba-fermetures-exceptionnelles ul{margin:0;padding:0 0 0 20px}.koba-fermetures-exceptionnelles li{margin-bottom:5px;font-size:13px;color:#0087ca}.koba-social-links{display:flex;justify-content:center;align-items:center;gap:15px;flex-wrap:nowrap}.koba-social-links a{color:#fff;transition:opacity 0.2s}.koba-social-links a:hover{opacity:0.7}.koba-menu-list{list-style:none;margin:0;padding:0}.koba-menu-list li{margin-bottom:8px}.koba-menu-list a{color:inherit;text-decoration:none;transition:opacity 0.2s}.koba-menu-list a:hover{opacity:0.7} 86 87 /* ========================================== 88 VARIABLES CSS 89 ========================================== */ 90 :root { 91 --koba-topbar-height: 40px; 92 --koba-navbar-height: 70px; 93 --koba-header-height: calc(var(--koba-topbar-height) + var(--koba-navbar-height)); 94 --koba-logo-width: 193px; 95 } 96 97 /* ========================================== 98 HEADER PRINCIPAL 99 ========================================== */ 100 101 .koba-header { 102 position: fixed; 103 top: 0; 104 left: 0; 105 right: 0; 106 z-index: 10000; 107 width: 100%; 108 } 109 110 .koba-header-wrapper { 111 position: relative; 112 width: 100%; 113 z-index: 222222; 114 } 115 116 /* Spacer pour compenser le header fixe */ 117 .koba-header-spacer { 118 height: var(--koba-header-height); 119 } 120 121 /* ========================================== 122 LOGO - COUVRE LES DEUX BARRES 123 ========================================== */ 124 125 .koba-logo { 126 position: absolute; 127 top: 0; 128 left: 0; 129 width: var(--koba-logo-width); 130 height: var(--koba-header-height); 131 background-color: #fff; 132 display: flex; 133 align-items: center; 134 justify-content: center; 135 padding: 10px 20px; 136 box-sizing: border-box; 137 z-index: 110; 138 } 139 140 .koba-logo img { 141 max-height: 100%; 142 max-width: 100%; 143 width: auto; 144 height: auto; 145 display: block; 146 object-fit: contain; 147 } 148 .koba-icon-search{ 149 width: 30px; 150 height: 30px; 151 } 152 153 .koba-logo-text { 154 color: #333; 155 font-size: 20px; 156 font-weight: 700; 157 text-decoration: none; 158 } 159 160 /* ========================================== 161 BARRE SUPERIEURE (ORANGE) 162 ========================================== */ 163 164 .koba-topbar { 165 background-color: #e8c281; 166 height: var(--koba-topbar-height); 167 width: 100%; 168 } 169 170 .koba-topbar-inner { 171 height: 100%; 172 display: flex; 173 justify-content: space-between; 174 align-items: center; 175 padding: 0 20px 0 calc(var(--koba-logo-width) + 20px); 176 } 177 178 .koba-topbar-menu { 179 flex: 1; 180 } 181 182 .koba-topbar-list { 183 list-style: none; 184 margin: 0; 185 padding: 0; 186 display: flex; 187 gap: 25px; 188 } 189 190 .koba-topbar-list li a { 191 color: #fff; 192 text-decoration: none; 193 font-size: 11.2px; 194 font-weight: 600; 195 text-transform: uppercase; 196 letter-spacing: 0.5px; 197 transition: opacity 0.2s; 198 } 199 200 .koba-topbar-list li a:hover { 201 opacity: 0.8; 202 } 203 204 .koba-topbar-cta { 205 display: flex; 206 align-items: center; 207 gap: 8px; 208 color: #fff; 209 text-decoration: none; 210 font-size: 12.2px; 211 font-weight: 600; 212 text-transform: uppercase; 213 letter-spacing: 0.5px; 214 transition: opacity 0.2s; 215 } 216 217 .koba-topbar-cta:hover { 218 opacity: 0.8; 219 } 220 221 /* Hamburger (mobile) - dans la topbar */ 222 .koba-hamburger { 223 display: none; 224 flex-direction: column; 225 justify-content: center; 226 gap: 5px; 227 background: none; 228 border: none; 229 cursor: pointer; 230 padding: 10px; 231 width: 44px; 232 height: 44px; 233 margin-left: -10px; 234 } 235 236 .koba-hamburger span { 237 display: block; 238 width: 24px; 239 height: 2px; 240 background-color: #fff; 241 transition: all 0.3s; 242 } 243 244 .koba-hamburger.active span:nth-child(1) { 245 transform: rotate(45deg) translate(5px, 5px); 246 } 247 248 .koba-hamburger.active span:nth-child(2) { 249 opacity: 0; 250 } 251 252 .koba-hamburger.active span:nth-child(3) { 253 transform: rotate(-45deg) translate(5px, -5px); 254 } 255 256 /* ========================================== 257 BARRE PRINCIPALE (BLEU) 258 ========================================== */ 259 260 .koba-navbar { 261 background-color: #6401ce; 262 height: var(--koba-navbar-height); 263 width: 100%; 264 position: relative; 265 } 266 267 .koba-navbar-inner { 268 height: 100%; 269 display: flex; 270 align-items: stretch; 271 padding: 0 0 0 var(--koba-logo-width); 272 } 273 274 /* Navigation principale */ 275 .koba-main-nav { 276 flex: 1; 277 display: flex; 278 align-items: stretch; 279 } 280 281 .koba-nav-list { 282 list-style: none; 283 margin: 0; 284 padding: 0; 285 display: flex; 286 align-items: stretch; 287 width: 100%; 288 } 289 290 .koba-nav-item { 291 position: static; 292 display: flex; 293 align-items: stretch; 294 flex: 1; 295 margin: 8px; 296 border-bottom: 1px solid transparent; 297 } 298 299 .koba-nav-item:hover { 300 border-bottom: 1px solid hsla(0,0%,100%,.72); 301 } 302 303 .koba-nav-link { 304 display: flex; 305 align-items: center; 306 justify-content: center; 307 gap: 6px; 308 color: #fff; 309 text-decoration: none; 310 font-size: 14px; 311 font-weight: 400; 312 text-transform: uppercase; 313 letter-spacing: 0.3px; 314 padding: 0 15px; 315 width: 100%; 316 transition: background-color 0.2s; 317 cursor: pointer; 318 } 319 320 .koba-nav-arrow { 321 color: #fb0; 322 width: 14px; 323 height: 14px; 324 transform: rotate(270deg); 325 transition: transform 0.2s; 326 } 327 328 /* ========================================== 329 BOUTON RECHERCHE (CARRE) 330 ========================================== */ 331 332 .koba-search-toggle { 333 flex-shrink: 0; 334 width: var(--koba-navbar-height); 335 height: var(--koba-navbar-height); 336 background: #fff; 337 border: none; 338 color: #fb0; 339 cursor: pointer; 340 display: flex; 341 align-items: center; 342 justify-content: center; 343 transition: opacity 0.2s; 344 } 345 346 .koba-search-toggle:hover { 347 opacity: 0.9; 348 } 349 350 .koba-search-toggle.hidden { 351 display: none; 352 } 353 354 /* ========================================== 355 MEGA MENU 356 ========================================== */ 357 358 .koba-megamenu { 359 position: absolute; 360 top: 100%; 361 left: 0; 362 right: 0; 363 width: 100%; 364 background-color: #6401ce; 365 opacity: 0; 366 visibility: hidden; 367 transform: translateY(-10px); 368 transition: all 0.3s ease; 369 z-index: 100; 370 pointer-events: none; 371 } 372 373 .koba-nav-item.active .koba-megamenu { 374 opacity: 1; 375 visibility: visible; 376 transform: translateY(0); 377 pointer-events: auto; 378 } 379 380 .koba-megamenu-inner { 381 width: 100%; 382 display: flex; 383 position: relative; 384 } 385 386 .koba-megamenu-col1 { 387 flex-shrink: 0; 388 width: var(--koba-logo-width); 389 background-color: #fff; 390 } 391 392 .koba-megamenu-col2 { 393 flex: 1; 394 padding: 30px 20px; 395 display: flex; 396 align-items: flex-start; 397 justify-content: flex-end; 398 } 399 400 .koba-megamenu-title { 401 color: #fff; 402 font-size: 22px; 403 font-weight: 600; 404 line-height: 1.4; 405 } 406 407 .koba-megamenu-col3 { 408 flex: 1; 409 padding: 25px 30px; 410 min-width: 0; 411 max-height: 731px; 412 overflow: overlay; 413 } 414 415 .koba-megamenu-list { 416 list-style: none; 417 margin: 0; 418 padding: 0; 419 border-left: 1px solid #fff; 420 } 421 422 .koba-megamenu-item { 423 position: static; 424 } 425 426 .koba-megamenu-link { 427 display: flex; 428 align-items: center; 429 gap: 8px; 430 color: #fff; 431 text-decoration: none; 432 padding: 16px 0; 433 font-size: 14px; 434 transition: padding-left 0.2s; 435 cursor: pointer; 436 padding-left: 30px; 437 } 438 439 .koba-megamenu-link:hover { 440 border-bottom: 1px solid #fff; 441 } 442 443 .koba-megamenu-link svg { 444 margin-left: auto; 445 flex-shrink: 0; 446 transition: transform 0.2s; 447 color: #faaf00; 448 } 449 450 .koba-megamenu-item.active > .koba-megamenu-link svg { 451 transform: rotate(90deg); 452 } 453 454 .koba-megamenu-col4 { 455 flex: 1; 456 position: relative; 457 } 458 459 .koba-megamenu-sublist { 460 position: absolute; 461 top: 0; 462 right: 0; 463 bottom: 0; 464 width: calc((100% - var(--koba-logo-width)) / 3); 465 list-style: none; 466 margin: 0; 467 padding: 25px 20px; 468 opacity: 0; 469 visibility: hidden; 470 transition: all 0.3s ease; 471 z-index: 110; 472 } 473 474 .koba-megamenu-item.a
474ctive > .koba-megamenu-sublist { 475 opacity: 1; 476 visibility: visible; 477 } 478 .koba-megamenu-item > .koba-megamenu-sublist li{ 479 border-left: 1px solid #fff; 480 } 481 .koba-megamenu-item > .koba-megamenu-sublist li a{ 482 padding-left: 30px; 483 } 484 485 .koba-megamenu-sublist li a { 486 display: block; 487 color: #fff; 488 text-decoration: none; 489 padding: 8px 0; 490 font-size: 13px; 491 opacity: 0.9; 492 transition: opacity 0.2s, padding-left 0.2s; 493 border-bottom: 1px solid rgba(255, 255, 255, 0.1); 494 } 495 496 .koba-megamenu-sublist li a:hover { 497 border-bottom: 1px solid #fff; 498 } 499 500 501 /* ========================================== 502 BARRE DE RECHERCHE 503 ========================================== */ 504 505 .koba-search-bar { 506 position: absolute; 507 top: 0; 508 right: 0; 509 bottom: 0; 510 width: 0; 511 background-color: #6401ce; 512 overflow: hidden; 513 transition: width 0.4s ease; 514 display: flex; 515 align-items: center; 516 z-index: 105; 517 } 518 519 .koba-search-bar.active { 520 width: calc(100% - var(--koba-logo-width)); 521 } 522 523 .koba-search-bar-inner { 524 display: flex; 525 align-items: center; 526 gap: 15px; 527 padding: 0 20px; 528 width: 100%; 529 min-width: 300px; 530 } 531 532 .koba-search-form { 533 flex: 1; 534 display: flex; 535 align-items: center; 536 position: relative; 537 } 538 539 .koba-search-input { 540 width: 100%; 541 background: transparent; 542 border: none; 543 border-bottom: 2px solid rgba(255, 255, 255, 0.5); 544 color: #fff; 545 font-size: 18px; 546 padding: 10px 40px 10px 0; 547 outline: none; 548 transition: border-color 0.2s; 549 } 550 551 .koba-search-input::placeholder { 552 color: rgba(255, 255, 255, 0.7); 553 } 554 555 .koba-search-input:focus { 556 border-color: #fff; 557 } 558 559 .koba-search-submit { 560 position: absolute; 561 right: 0; 562 background: none; 563 border: none; 564 color: #fff; 565 cursor: pointer; 566 padding: 10px; 567 opacity: 0.7; 568 transition: opacity 0.2s; 569 } 570 571 .koba-search-submit:hover { 572 opacity: 1; 573 } 574 575 .koba-search-close { 576 flex-shrink: 0; 577 background: none; 578 border: none; 579 color: #e8c281; 580 cursor: pointer; 581 padding: 10px; 582 transition: opacity 0.2s; 583 } 584 585 .koba-search-close:hover { 586 opacity: 0.8; 587 } 588 589 /* ========================================== 590 MENU MOBILE 591 ========================================== */ 592 593 .koba-mobile-menu { 594 display: none; 595 position: fixed; 596 top: 0; 597 left: 0; 598 width: 100%; 599 height: 100vh; 600 background-color: #6401ce; 601 z-index: 999; 602 overflow-y: auto; 603 transform: translateX(-100%); 604 transition: transform 0.3s ease; 605 } 606 607 .koba-mobile-menu.active { 608 transform: translateX(0); 609 } 610 611 .koba-mobile-menu-inner { 612 padding: 20px; 613 padding-top: 120px; 614 } 615 616 .koba-mobile-list { 617 list-style: none; 618 margin: 0; 619 padding: 0; 620 } 621 622 .koba-mobile-item { 623 border-bottom: 1px solid rgba(255, 255, 255, 0.1); 624 } 625 626 .koba-mobile-item-inner { 627 display: flex; 628 align-items: center; 629 } 630 631 .koba-mobile-link { 632 flex: 1; 633 display: block; 634 color: #fff; 635 text-decoration: none; 636 padding: 18px 0; 637 font-size: 16px; 638 font-weight: 500; 639 } 640 641 .koba-mobile-toggle { 642 background: none; 643 border: none; 644 color: #fff; 645 cursor: pointer; 646 padding: 18px 15px; 647 transition: transform 0.2s; 648 } 649 650 .koba-mobile-toggle.active { 651 transform: rotate(180deg); 652 } 653 654 .koba-mobile-submenu { 655 list-style: none; 656 margin: 0; 657 padding: 0 0 0 20px; 658 display: none; 659 background-color: rgba(0, 0, 0, 0.1); 660 } 661 662 .koba-mobile-submenu.active { 663 display: block; 664 } 665 666 .koba-mobile-submenu .koba-mobile-link { 667 font-size: 15px; 668 font-weight: 400; 669 padding: 14px 0; 670 } 671 672 .koba-mobile-secondary { 673 margin-top: 30px; 674 padding-top: 30px; 675 border-top: 1px solid rgba(255, 255, 255, 0.2); 676 } 677 678 .koba-mobile-secondary-list { 679 list-style: none; 680 margin: 0; 681 padding: 0; 682 } 683 684 .koba-mobile-secondary-list li a { 685 display: block; 686 color: #fff; 687 text-decoration: none; 688 padding: 12px 0; 689 font-size: 14px; 690 opacity: 0.8; 691 } 692 693 /* Overlay */ 694 .koba-overlay { 695 position: fixed; 696 top: 0; 697 left: 0; 698 width: 100%; 699 height: 100%; 700 background-color: rgba(0, 0, 0, 0.5); 701 z-index: 998; 702 opacity: 0; 703 visibility: hidden; 704 transition: all 0.3s; 705 } 706 707 .koba-overlay.active { 708 opacity: 1; 709 visibility: visible; 710 } 711 712 /* ========================================== 713 RESPONSIVE 714 ========================================== */ 715 716 @media (max-width: 1400px) { 717 :root { 718 --koba-logo-width: 140px; 719 } 720 721 .koba-nav-link { 722 font-size: 12px; 723 padding: 0 5px; 724 } 725 726 .koba-megamenu-col2, 727 .koba-megamenu-col3 { 728 padding: 20px 15px; 729 } 730 } 731 732 @media (max-width: 1200px) { 733 :root { 734 --koba-logo-width: 120px; 735 } 736 737 .koba-nav-link { 738 font-size: 11px; 739 padding: 0 8px; 740 } 741 742 .koba-megamenu-title { 743 font-size: 16px; 744 } 745 746 .koba-megamenu-link { 747 font-size: 13px; 748 padding: 8px 8px; 749 } 750 } 751 752 @media (max-width: 992px) { 753 :root { 754 --koba-topbar-height: 50px; 755 --koba-navbar-height: 0px; 756 --koba-logo-width: 100px; 757 } 758 759 .koba-topbar-inner { 760 padding: 0 15px; 761 justify-content: flex-start; 762 } 763 764 .koba-topbar-menu { 765 display: none; 766 } 767 768 .koba-topbar-cta { 769 display: none; 770 } 771 772 .koba-hamburger { 773 display: flex; 774 } 775 776 .koba-logo { 777 position: relative; 778 width: auto; 779 max-width: 120px; 780 height: var(--koba-topbar-height); 781 margin: 0 auto; 782 } 783 784 .koba-navbar { 785 display: none; 786 } 787 788 .koba-mobile-menu { 789 display: block; 790 } 791 792 .koba-megamenu { 793 display: none; 794 } 795 } 796 797 @media (max-width: 576px) { 798 :root { 799 --koba-topbar-height: 50px; 800 --koba-logo-width: 80px; 801 } 802 803 .koba-logo img { 804 max-height: 35px; 805 } 806 807 .koba-search-input { 808 font-size: 16px; 809 } 810 } 811 812 813 /* ========================================== 814 FOOTER 815 ========================================== */ 816 817 .koba-footer { 818 background-color: #1a1a2e; 819 color: #fff; 820 margin-top: 60px; 821 } 822 823 .koba-footer-main { 824 padding: 60px 0 40px; 825 } 826 827 .koba-footer-container { 828 max-width: 1400px; 829 margin: 0 auto;
830 padding: 0 30px; 831 display: grid; 832 grid-template-columns: repeat(4, 1fr); 833 gap: 40px; 834 } 835 836 /* Colonnes */ 837 .koba-footer-col { 838 min-width: 0; 839 } 840 841 .koba-footer-title { 842 color: #fff; 843 font-size: 18px; 844 font-weight: 600; 845 margin: 0 0 20px 0; 846 padding-bottom: 12px; 847 border-bottom: 2px solid #e8c281; 848 display: inline-block; 849 } 850 851 /* Colonne About */ 852 .koba-footer-logo { 853 display: inline-block; 854 margin-bottom: 20px; 855 } 856 857 .koba-footer-logo img { 858 max-height: 70px; 859 width: auto; 860 } 861 862 .koba-footer-logo-text { 863 display: inline-block; 864 color: #fff; 865 font-size: 24px; 866 font-weight: 700; 867 text-decoration: none; 868 margin-bottom: 20px; 869 } 870 871 .koba-footer-description { 872 color: #b0b0b0; 873 font-size: 14px; 874 line-height: 1.7; 875 margin: 0 0 20px 0; 876 } 877 878 /* Réseaux sociaux */ 879 .koba-footer-social { 880 display: flex; 881 gap: 12px; 882 flex-wrap: wrap; 883 } 884 885 .koba-footer-social a { 886 display: flex; 887 align-items: center; 888 justify-content: center; 889 width: 40px; 890 height: 40px; 891 background-color: rgba(255, 255, 255, 0.1); 892 border-radius: 50%; 893 color: #fff; 894 transition: all 0.3s ease; 895 } 896 897 .koba-footer-social a:hover { 898 background-color: #e8c281; 899 transform: translateY(-3px); 900 } 901 902 /* Liste de contact */ 903 .koba-footer-info-list { 904 list-style: none; 905 margin: 0; 906 padding: 0; 907 } 908 909 .koba-footer-info-item { 910 display: flex; 911 align-items: flex-start; 912 gap: 12px; 913 margin-bottom: 18px; 914 color: #b0b0b0; 915 font-size: 14px; 916 line-height: 1.6; 917 } 918 919 .koba-footer-info-item svg { 920 flex-shrink: 0; 921 margin-top: 2px; 922 color: #e8c281; 923 } 924 925 .koba-footer-info-item a { 926 color: #b0b0b0; 927 text-decoration: none; 928 transition: color 0.2s; 929 } 930 931 .koba-footer-info-item a:hover { 932 color: #e8c281; 933 } 934 935 /* Statut dans le footer */ 936 .koba-footer-status { 937 margin-top: 20px; 938 } 939 940 .koba-footer-status .koba-opening-status { 941 background: transparent; 942 padding: 0; 943 border: none; 944 font-size: 13px; 945 } 946 947 .koba-footer-status .koba-status-open { 948 color: #28a745; 949 } 950 951 .koba-footer-status .koba-status-closed { 952 color: #dc3545; 953 } 954 955 /* Menu footer */ 956 .koba-footer-menu { 957 list-style: none; 958 margin: 0; 959 padding: 0; 960 } 961 962 .koba-footer-menu li { 963 margin-bottom: 12px; 964 } 965 966 .koba-footer-menu a { 967 color: #b0b0b0; 968 text-decoration: none; 969 font-size: 14px; 970 transition: all 0.2s; 971 display: inline-block; 972 } 973 974 .koba-footer-menu a:hover { 975 color: #e8c281; 976 padding-left: 5px; 977 } 978 979 /* Horaires dans footer */ 980 .koba-footer-hours .koba-horaires-table { 981 font-size: 13px; 982 background: transparent; 983 } 984 985 .koba-footer-hours .koba-horaires-table th, 986 .koba-footer-hours .koba-horaires-table td { 987 padding: 8px 10px; 988 border-color: rgba(255, 255, 255, 0.1); 989 color: #b0b0b0; 990 } 991 992 .koba-footer-hours .koba-horaires-table th { 993 background: rgba(255, 255, 255, 0.05); 994 color: #fff; 995 } 996 997 .koba-footer-hours .koba-horaires-table tr:hover { 998 background-color: rgba(255, 255, 255, 0.03); 999 } 1000 1001 .koba-footer-hours .koba-horaires-table tr.koba-today { 1002 background-color: rgba(100, 1, 206, 0.2); 1003 } 1004 1005 .koba-footer-hours .koba-horaires-table .koba-badge-today { 1006 background: #e8c281; 1007 font-size: 9px; 1008 } 1009 1010 /* Barre de copyright */ 1011 .koba-footer-bottom { 1012 background-color: rgba(0, 0, 0, 0.3); 1013 padding: 20px 0; 1014 } 1015 1016 .koba-footer-bottom .koba-footer-container { 1017 display: flex; 1018 justify-content: space-between; 1019 align-items: center; 1020 gap: 20px; 1021 } 1022 1023 .koba-footer-copyright { 1024 margin: 0; 1025 color: #808080; 1026 font-size: 13px; 1027 } 1028 1029 .koba-footer-legal { 1030 display: flex; 1031 gap: 25px; 1032 } 1033 1034 .koba-footer-legal a { 1035 color: #808080; 1036 text-decoration: none; 1037 font-size: 13px; 1038 transition: color 0.2s; 1039 } 1040 1041 .koba-footer-legal a:hover { 1042 color: #e8c281; 1043 } 1044 1045 /* Responsive */ 1046 @media (max-width: 1200px) { 1047 .koba-footer-container { 1048 grid-template-columns: repeat(2, 1fr); 1049 } 1050 } 1051 1052 @media (max-width: 768px) { 1053 .koba-footer-main { 1054 padding: 40px 0 30px; 1055 } 1056 1057 .koba-footer-container { 1058 grid-template-columns: 1fr; 1059 gap: 30px; 1060 padding: 0 20px; 1061 } 1062 1063 .koba-footer-col { 1064 text-align: center; 1065 } 1066 1067 .koba-footer-title { 1068 display: block; 1069 } 1070 1071 .koba-footer-social { 1072 justify-content: center; 1073 } 1074 1075 .koba-footer-info-list { 1076 display: inline-block; 1077 text-align: left; 1078 } 1079 1080 .koba-footer-menu { 1081 display: inline-block; 1082 text-align: left; 1083 } 1084 1085 .koba-footer-hours .koba-horaires-table { 1086 display: inline-block; 1087 } 1088 1089 .koba-footer-bottom .koba-footer-container { 1090 flex-direction: column; 1091 text-align: center; 1092 } 1093 1094 .koba-footer-legal { 1095 flex-wrap: wrap; 1096 justify-content: center; 1097 } 1098 } 1099 1100/*# sourceURL=wp-block-library-inline-css */ 1101</style> 1102 1103<style id="classic-theme-styles-inline-css"> 1104/*! This file is auto-generated */ 1105.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;
1105padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 1106/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 1107</style> 1108 1109<style id="global-styles-inline-css"> 1110:root{--wp--preset--aspect-ratio--square: 1;--wp--preset--aspect-ratio--4-3: 4/3;--wp--preset--aspect-ratio--3-4: 3/4;--wp--preset--aspect-ratio--3-2: 3/2;--wp--preset--aspect-ratio--2-3: 2/3;--wp--preset--aspect-ratio--16-9: 16/9;--wp--preset--aspect-ratio--9-16: 9/16;--wp--preset--color--black: #000000;--wp--preset--color--cyan-bluish-gray: #abb8c3;--wp--preset--color--white: #ffffff;--wp--preset--color--pale-pink: #f78da7;--wp--preset--color--vivid-red: #cf2e2e;--wp--preset--color--luminous-vivid-orange: #ff6900;--wp--preset--color--luminous-vivid-amber: #fcb900;--wp--preset--color--light-green-cyan: #7bdcb5;--wp--preset--color--vivid-green-cyan: #00d084;--wp--preset--color--pale-cyan-blue: #8ed1fc;--wp--preset--color--vivid-cyan-blue: #0693e3;--wp--preset--color--vivid-purple: #9b51e0;--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple: linear-gradient(135deg,rgb(6,147,227) 0%,rgb(155,81,224) 100%);--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan: linear-gradient(135deg,rgb(122,220,180) 0%,rgb(0,208,130) 100%);--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange: linear-gradient(135deg,rgb(252,185,0) 0%,rgb(255,105,0) 100%);--wp--preset--gradient--luminous-vivid-orange-to-vivid-red: linear-gradient(135deg,rgb(255,105,0) 0%,rgb(207,46,46) 100%);--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray: linear-gradient(135deg,rgb(238,238,238) 0%,rgb(169,184,195) 100%);
1110--wp--preset--gradient--cool-to-warm-spectrum: linear-gradient(135deg,rgb(74,234,220) 0%,rgb(151,120,209) 20%,rgb(207,42,186) 40%,rgb(238,44,130) 60%,rgb(251,105,98) 80%,rgb(254,248,76) 100%);--wp--preset--gradient--blush-light-purple: linear-gradient(135deg,rgb(255,206,236) 0%,rgb(152,150,240) 100%);--wp--preset--gradient--blush-bordeaux: linear-gradient(135deg,rgb(254,205,165) 0%,rgb(254,45,45) 50%,rgb(107,0,62) 100%);--wp--preset--gradient--luminous-dusk: linear-gradient(135deg,rgb(255,203,112) 0%,rgb(199,81,192) 50%,rgb(65,88,208) 100%);--wp--preset--gradient--pale-ocean: linear-gradient(135deg,rgb(255,245,203) 0%,rgb(182,227,212) 50%,rgb(51,167,181) 100%);--wp--preset--gradient--electric-grass: linear-gradient(135deg,rgb(202,248,128) 0%,rgb(113,206,126) 100%);--wp--preset--gradient--midnight: linear-gradient(135deg,rgb(2,3,129) 0%,rgb(40,116,252) 100%);--wp--preset--font-size--small: 13px;--wp--preset--font-size--medium: 20px;--wp--preset--font-size--large: 36px;--wp--preset--font-size--x-large: 42px;--wp--preset--spacing--20: 0.44rem;--wp--preset--spacing--30: 0.67rem;--wp--preset--spacing--40: 1rem;--wp--preset--spacing--50: 1.5rem;--wp--preset--spacing--60: 2.25rem;--wp--preset--spacing--70: 3.38rem;--wp--preset--spacing--80: 5.06rem;--wp--preset--shadow--natural: 6px 6px 9px rgba(0, 0, 0, 0.2);--wp--preset--shadow--deep: 12px 12px 50px rgba(0, 0, 0, 0.4);--wp--preset--shadow--sharp: 6px 6px 0px rgba(0, 0, 0, 0.2);--wp--preset--shadow--outlined: 6px 6px 0px -3px rgb(255, 255, 255), 6px 6px rgb(0, 0, 0);--wp--preset--shadow--crisp: 6px 6px 0px rgb(0, 0, 0);}.wp-block-button{--wp--preset--dimension--25: 25%;--wp--preset--dimension--50: 50%;--wp--preset--dimension--75: 75%;--wp--preset--dimension--100: 100%;}:where(body) { margin: 0; }:where(.is-layout-flex){gap: 0.5em;}:where(.is-layout-grid){gap: 0.5em;}body .is-layout-flex{display: flex;}.is-layout-flex{flex-wrap: wrap;align-items: center;}.is-layout-flex > :is(*, div){margin: 0;}body .is-layout-grid{display: grid;}.is-layout-grid > :is(*, div){margin: 0;}body{padding-top: 0px;padding-right: 0px;padding-bottom: 0px;padding-left: 0px;}:root :where(.wp-element-button, .wp-block-button__link){background-color: #32373c;border-width: 0;color: #fff;font-family: inherit;font-size: inherit;font-style: inherit;font-weight: inherit;letter-spacing: inherit;line-height: inherit;padding-top: calc(0.667em + 2px);padding-right: calc(1.333em + 2px);padding-bottom: calc(0.667em + 2px);padding-left: calc(1.333em + 2px);text-decoration: none;text-transform: inherit;}.has-black-color{color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-color{color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-color{color: var(--wp--preset--color--white) !important;}.has-pale-pink-color{color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-color{color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-color{color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-color{color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-color{color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-color{color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-color{color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-color{color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-color{color: var(--wp--preset--color--vivid-purple) !important;}.has-black-background-color{background-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-background-color{background-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-background-color{background-color: var(--wp--preset--color--white) !important;}.has-pale-pink-background-color{background-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-background-color{background-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-background-color{background-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-background-color{background-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-background-color{background-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-background-color{background-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-background-color{background-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-background-color{background-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-background-color{background-color: var(--wp--preset--color--vivid-purple) !important;}.has-black-border-color{border-color: var(--wp--preset--color--black) !important;}.has-cyan-bluish-gray-border-color{border-color: var(--wp--preset--color--cyan-bluish-gray) !important;}.has-white-border-color{border-color: var(--wp--preset--color--white) !important;}.has-pale-pink-border-color{border-color: var(--wp--preset--color--pale-pink) !important;}.has-vivid-red-border-color{border-color: var(--wp--preset--color--vivid-red) !important;}.has-luminous-vivid-orange-border-color{border-color: var(--wp--preset--color--luminous-vivid-orange) !important;}.has-luminous-vivid-amber-border-color{border-color: var(--wp--preset--color--luminous-vivid-amber) !important;}.has-light-green-cyan-border-color{border-color: var(--wp--preset--color--light-green-cyan) !important;}.has-vivid-green-cyan-border-color{border-color: var(--wp--preset--color--vivid-green-cyan) !important;}.has-pale-cyan-blue-border-color{border-color: var(--wp--preset--color--pale-cyan-blue) !important;}.has-vivid-cyan-blue-border-color{border-color: var(--wp--preset--color--vivid-cyan-blue) !important;}.has-vivid-purple-border-color{border-color: var(--wp--preset--color--vivid-purple) !important;}.has-vivid-cyan-blue-to-vivid-purple-gradient-background{background: var(--wp--preset--gradient--vivid-cyan-blue-to-vivid-purple) !important;}.has-light-green-cyan-to-vivid-green-cyan-gradient-background{background: var(--wp--preset--gradient--light-green-cyan-to-vivid-green-cyan) !important;}.has-luminous-vivid-amber-to-luminous-vivid-orange-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-amber-to-luminous-vivid-orange) !important;}.has-luminous-vivid-orange-to-vivid-red-gradient-background{background: var(--wp--preset--gradient--luminous-vivid-orange-to-vivid-red) !important;}
1110.has-very-light-gray-to-cyan-bluish-gray-gradient-background{background: var(--wp--preset--gradient--very-light-gray-to-cyan-bluish-gray) !important;}.has-cool-to-warm-spectrum-gradient-background{background: var(--wp--preset--gradient--cool-to-warm-spectrum) !important;}.has-blush-light-purple-gradient-background{background: var(--wp--preset--gradient--blush-light-purple) !important;}.has-blush-bordeaux-gradient-background{background: var(--wp--preset--gradient--blush-bordeaux) !important;}.has-luminous-dusk-gradient-background{background: var(--wp--preset--gradient--luminous-dusk) !important;}.has-pale-ocean-gradient-background{background: var(--wp--preset--gradient--pale-ocean) !important;}.has-electric-grass-gradient-background{background: var(--wp--preset--gradient--electric-grass) !important;}.has-midnight-gradient-background{background: var(--wp--preset--gradient--midnight) !important;}.has-small-font-size{font-size: var(--wp--preset--font-size--small) !important;}.has-medium-font-size{font-size: var(--wp--preset--font-size--medium) !important;}.has-large-font-size{font-size: var(--wp--preset--font-size--large) !important;}.has-x-large-font-size{font-size: var(--wp--preset--font-size--x-large) !important;} 1111/*# sourceURL=global-styles-inline-css */ 1112</style> 1113 1114<link rel='stylesheet' id='front-css-css' href='https://www.oye-plage.fr/wp-content/plugins/WP_hob_publicite//asset/css/front.css?ver=7.1.2' media='all' /> 1115<link rel='stylesheet' id='hcb-frontend-css' href='https://www.oye-plage.fr/wp-content/plugins/hob-cityhall-booking/assets/css/frontend.css?ver=1.2.0' media='all' /> 1116<style id="hcb-frontend-inline-css"> 1117 1118 :root { --hcb-primary: #2271b1; } 1119 .hcb-btn-primary, .hcb-booking-form button[type=submit] { background-color: #2271b1; border-color: #2271b1; } 1120 .hcb-btn-primary:hover { background-color: #2271b1cc; } 1121 1122/*# sourceURL=hcb-frontend-inline-css */ 1123</style> 1124<link rel='stylesheet' id='fullcalendar-css' href='https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.10.2/fullcalendar.min.css?ver=7.1.2' media='all' /> 1125<link rel='stylesheet' id='hob-fc-public-forms-css' href='https://www.oye-plage.fr/wp-content/plugins/hob-formchat-pro/assets/css/public-forms.css?ver=1.29' media='all' /> 1126<link rel='stylesheet' id='leaflet-css' href='https://unpkg.com/[email protected]/dist/leaflet.css?ver=1.9.4' media='all' /> 1127<link rel='stylesheet' id='bootstrap-css-css' href='https://cdn.jsdelivr.net/npm/[email protected]/dist/css/bootstrap.min.css?ver=5.3.2' media='all' /> 1128<link rel='stylesheet' id='theme-style-css' href='https://www.oye-plage.fr/wp-content/themes/hob-koba-civique/style.css?ver=7.1.2' media='all' /> 1129<link rel='stylesheet' id='hobrgpd-front-css' href='https://www.oye-plage.fr/wp-content/plugins/hob-rgpd/assets/css/front.css?ver=1781167963' media='all' />
1130<script id="acy_front_messages_js-js-before"> 1131var ACYM_AJAX_START = "https://www.oye-plage.fr/wp-admin/admin-ajax.php"; 1132 var ACYM_AJAX_PARAMS = "?action=acymailing_router&noheader=1&nocache=1790981597"; 1133 var ACYM_AJAX = ACYM_AJAX_START + ACYM_AJAX_PARAMS; 1134//# sourceURL=acy_front_messages_js-js-before 1135</script>
vendor: 1 bytes, line 1135
1135
1136<script id="acy_front_messages_js-js" src="https://www.oye-plage.fr/wp-content/plugins/acymailing/media/js/front/messages.min.js?v=1790752554&ver=11.1.0"></script>
vendor: 1 bytes, line 1136
1136
1137<script id="jquery-core-js" src="https://www.oye-plage.fr/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 1137
1137
1138<script id="jquery-migrate-js" src="https://www.oye-plage.fr/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
1138 1139<link rel="https://api.w.org/" href="https://www.oye-plage.fr/wp-json/" /><link rel="alternate" title="JSON" type="application/json" href="https://www.oye-plage.fr/wp-json/wp/v2/pages/941" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.oye-plage.fr/xmlrpc.php?rsd" /> 1140<link rel="canonical" href="https://www.oye-plage.fr/emploi/" /> 1141<link rel='shortlink' href='https://www.oye-plage.fr/?p=941' /> 1142<!-- Analytics by WP Statistics - https://wp-statistics.com --> 1143 <style> 1144 /* Overlay résultats */ 1145 .koba-search-overlay { 1146 position: fixed; 1147 top: 0; 1148 left: 0; 1149 right: 0; 1150 bottom: 0; 1151 background: var(--koba-primary, #2271b1); 1152 z-index: 9998; 1153 overflow-y: auto; 1154 padding-top: 120px; 1155 display: none; 1156 } 1157 1158 .koba-search-overlay.active { 1159 display: block; 1160 } 1161 1162 .koba-search-overlay-inner { 1163 max-width: 1140px; 1164 margin: 0 auto; 1165 padding: 10px; 1166 } 1167 1168 /* Catégorie */ 1169 .koba-search-category { 1170 margin-bottom: 40px; 1171 } 1172 1173 .koba-search-category-title { 1174 color: var(--koba-secondary, #faaf00); 1175 font-size: 1.8rem; 1176 font-weight: 600; 1177 margin: 0 0 15px 0; 1178 padding-bottom: 10px; 1179 border-bottom: 1px solid rgba(255,255,255,0.2); 1180 } 1181 1182 /* Liste */ 1183 .koba-search-list { 1184 list-style: none; 1185 margin: 0; 1186 padding: 0; 1187 } 1188 1189 .koba-search-item { 1190 border-bottom: 1px solid rgba(255,255,255,0.1); 1191 } 1192 1193 .koba-search-link { 1194 display: block; 1195 padding: 14px 0; 1196 color: #fff; 1197 text-decoration: none; 1198 font-size: 1.05rem; 1199 transition: padding-left 0.2s, color 0.2s; 1200 } 1201 1202 .koba-search-link:hover { 1203 padding-left: 15px; 1204 color: var(--koba-secondary, #faaf00); 1205 } 1206 1207 .koba-search-link mark { 1208 background: var(--koba-secondary, #faaf00); 1209 color: #1a1a2e; 1210 padding: 2px 4px; 1211 border-radius: 3px; 1212 } 1213 1214 .koba-search-date { 1215 color: rgba(255,255,255,0.5); 1216 font-size: 0.9rem; 1217 margin-left: 10px; 1218 } 1219 1220 /* Loading */ 1221 .koba-search-loading { 1222 text-align: center; 1223 padding: 60px; 1224 color: rgba(255,255,255,0.7); 1225 } 1226 1227 .koba-search-spinner { 1228 width: 40px; 1229 height: 40px; 1230 border: 3px solid rgba(255,255,255,0.2); 1231 border-top-color: #fff; 1232 border-radius: 50%; 1233 animation: koba-spin 0.8s linear infinite; 1234 margin: 0 auto 15px; 1235 } 1236 1237 @keyframes koba-spin { 1238 to { transform: rotate(360deg); } 1239 } 1240 1241 /* No results */ 1242 .koba-search-no-results { 1243 text-align: center; 1244 padding: 60px; 1245 color: rgba(255,255,255,0.6); 1246 } 1247 1248 .koba-search-no-results svg { 1249 width: 60px; 1250 height: 60px; 1251 margin-bottom: 20px; 1252 opacity: 0.4; 1253 } 1254 1255 @media (max-width: 768px) { 1256 .koba-search-overlay { 1257 padding-top: 100px; 1258 } 1259 .koba-search-overlay-inner { 1260 padding: 20px; 1261 } 1262 .koba-search-category-title { 1263 font-size: 1.4rem; 1264 } 1265 } 1266 </style> 1267 <style> 1268 /* Menu adaptatif */ 1269 .koba-nav-list { 1270 display: flex; 1271 flex-wrap: wrap; 1272 align-items: center; 1273 } 1274 1275 /* Mode compact (9-10 éléments) */ 1276 .koba-nav-list.koba-nav-compact .koba-nav-link { 1277 font-size: 12px; 1278 padding-left: 12px; 1279 padding-right: 12px; 1280 } 1281 1282 /* Mode très compact (11+ éléments) */ 1283 .koba-nav-list.koba-nav-very-compact .koba-nav-link { 1284 font-size: 10px; 1285 padding-left: 4px; 1286 padding-right: 4px; 1287 } 1288 @media (max-width: 1599px) { 1289 .koba-nav-list.koba-nav-compact .koba-nav-link { 1290 font-size: 12px; 1291 padding-left: 8px; 1292 padding-right: 8px; 1293 } 1294 .koba-nav-list.koba-nav-very-compact .koba-nav-link { 1295 font-size: 9px; 1296 padding-left: 0px; 1297 padding-right: 0px; 1298 } 1299 } 1300 @media (max-width: 1299px) { 1301 .koba-nav-list.koba-nav-compact .koba-nav-link { 1302 font-size: 10px; 1303 padding-left: 8px; 1304 padding-right: 8px; 1305 } 1306 .koba-nav-list.koba-nav-very-compact .koba-nav-link { 1307 font-size: 8px; 1308 padding-left: 4px; 1309 padding-right: 4px; 1310 } 1311 } 1312 @media (max-width: 1199px) { 1313 .koba-nav-list.koba-nav-compact .koba-nav-link { 1314 font-size: 9px; 1315 padding-left: 3px; 1316 padding-right: 3px; 1317 } 1318 .koba-nav-list.koba-nav-very-compact .koba-nav-link { 1319 font-size: 8px; 1320 padding-left: 2px; 1321 padding-right: 2px; 1322 } 1323 } 1324 </style> 1325 <meta name="generator" content="Koba Civique By Hob" /> 1326<style id="koba-category-colors"> 1327.color-ccas { background-color: #a21caf !important; } 1328.color-info-police-municipale { background-color: #0003ef !important; } 1329.color-police-municipale { background-color: #0003ef !important; } 1330.color-solidarite { background-color: #ed479a !important; } 1331.color-travaux { background-color: #f97316 !important; } 1332.agenda-color-mediatheque { background-color: #f96800 !important; } 1333.agenda-color-mdiathque { background-color: #f96800 !important; } 1334.agenda-color-seniors { background-color: #00827d !important; } 1335.agenda-color-sniors { background-color: #00827d !important; } 1336.agenda-color-solidarite { background-color: #ed5aa3 !important; } 1337.agenda-color-solidarit { background-color: #ed5aa3 !important; } 1338</style> 1339<style id='koba-options-css'> 1340.koba-newsletter, .koba-option-newsletter, [data-koba-option="newsletter"] { display: none !important; } 1341.koba-chat, .koba-option-chat, [data-koba-option="chat"] { display: none !important; } 1342.koba-survey, .koba-option-survey, [data-koba-option="survey"] { display: none !important; }
1343.koba-video_slider, .koba-option-video_slider, [data-koba-option="video_slider"] { display: none !important; } 1344.koba-payfip, .koba-option-payfip, [data-koba-option="payfip"] { display: none !important; } 1345.koba-fichiers, .koba-option-fichiers, [data-koba-option="fichiers"] { display: none !important; } 1346.koba-municipal, .koba-option-municipal, [data-koba-option="municipal"] { display: none !important; } 1347.koba-app_citoyen, .koba-option-app_citoyen, [data-koba-option="app_citoyen"] { display: none !important; } 1348.koba-alertes, .koba-option-alertes, [data-koba-option="alertes"] { display: none !important; } 1349.koba-franceconnect, .koba-option-franceconnect, [data-koba-option="franceconnect"] { display: none !important; } 1350.koba-voisinvigilant, .koba-option-voisinvigilant, [data-koba-option="voisinvigilant"] { display: none !important; } 1351.koba-actes, .koba-option-actes, [data-koba-option="actes"] { display: none !important; } 1352.koba-affichage_dynamique, .koba-option-affichage_dynamique, [data-koba-option="affichage_dynamique"] { display: none !important; } 1353.koba-rgpd_avance, .koba-option-rgpd_avance, [data-koba-option="rgpd_avance"] { display: none !important; } 1354.koba-multi_langues, .koba-option-multi_langues, [data-koba-option="multi_langues"] { display: none !important; } 1355.koba-carte_dynamique, .koba-option-carte_dynamique, [data-koba-option="carte_dynamique"] { display: none !important; } 1356.koba-reservation_salles, .koba-option-reservation_salles, [data-koba-option="reservation_salles"] { display: none !important; } 1357.koba-locaux_pro, .koba-option-locaux_pro, [data-koba-option="locaux_pro"] { display: none !important; } 1358.koba-statistiques, .koba-option-statistiques, [data-koba-option="statistiques"] { display: none !important; } 1359.koba-courrier, .koba-option-courrier, [data-koba-option="courrier"] { display: none !important; } 1360.koba-panneaupocket_iframe, .koba-option-panneaupocket_iframe, [data-koba-option="panneaupocket_iframe"] { display: none !important; } 1361.koba-panneaupocket_api, .koba-option-panneaupocket_api, [data-koba-option="panneaupocket_api"] { display: none !important; } 1362.koba-espace_collaboratif, .koba-option-espace_collaboratif, [data-koba-option="espace_collaboratif"] { display: none !important; } 1363.koba-actu_association, .koba-option-actu_association, [data-koba-option="actu_association"] { display: none !important; } 1364.koba-billetterie, .koba-option-billetterie, [data-koba-option="billetterie"] { display: none !important; } 1365.koba-accessibilite, .koba-option-accessibilite, [data-koba-option="accessibilite"] { display: none !important; } 1366.koba-espace_citoyen, .koba-option-espace_citoyen, [data-koba-option="espace_citoyen"] { display: none !important; } 1367.koba-visio_conference, .koba-option-visio_conference, [data-koba-option="visio_conference"] { display: none !important; } 1368.koba-apidae, .koba-option-apidae, [data-koba-option="apidae"] { display: none !important; } 1369.koba-prise_rdv, .koba-option-prise_rdv, [data-koba-option="prise_rdv"] { display: none !important; } 1370.koba-marche_public, .koba-option-marche_public, [data-koba-option="marche_public"] { display: none !important; } 1371.koba-portail_famille, .koba-option-portail_famille, [data-koba-option="portail_famille"] { display: none !important; } 1372.koba-webcam, .koba-option-webcam, [data-koba-option="webcam"] { display: none !important; } 1373.koba-reseaux_sociaux, .koba-option-reseaux_sociaux, [data-koba-option="reseaux_sociaux"] { display: none !important; } 1374.koba-archives_opendata, .koba-option-archives_opendata, [data-koba-option="archives_opendata"] { display: none !important; } 1375.koba-encombrants_dechets, .koba-option-encombrants_dechets, [data-koba-option="encombrants_dechets"] { display: none !important; } 1376.koba-zapette, .koba-option-zapette, [data-koba-option="zapette"] { display: none !important; } 1377.koba-flipbook, .koba-option-flipbook, [data-koba-option="flipbook"] { display: none !important; } 1378.koba-extranet_commissions, .koba-option-extranet_commissions, [data-koba-option="extranet_commissions"] { display: none !important; } 1379.koba-sms_alerte, .koba-option-sms_alerte, [data-koba-option="sms_alerte"] { display: none !important; } 1380.koba-recherche_avancee, .koba-option-recherche_avancee, [data-koba-option="recherche_avancee"] { display: none !important; } 1381</style> 1382</head> 1383 1384<body class="wp-singular page-template-default page page-id-941 wp-theme-hob-koba-civique site-id-60 koba-has-campaign koba-has-rss koba-has-video"> 1385 <style> 1386 #koba-upsell-banner { 1387 display: none; /* révélé par JS uniquement en mode PWA standalone */ 1388 align-items: flex-start; 1389 gap: 10px; 1390 background: #6401ce; 1391 color: #fff; 1392 padding: calc(10px + env(safe-area-inset-top)) 14px 10px; 1393 font-family: inherit; 1394 font-size: .82rem; 1395 line-height: 1.4; 1396 } 1397 #koba-upsell-banner.koba-upsell-visible { display: flex; 1398 z-index: 2147483647; 1399 position: relative; } 1400 #koba-upsell-banner .kub-text { flex: 1; min-width: 0; } 1401 #koba-upsell-banner .kub-close { 1402 background: rgba(255,255,255,.18); 1403 border: none; 1404 color: #fff; 1405 font-size: .95rem; 1406 line-height: 1; 1407 cursor: pointer; 1408 padding: 6px 9px; 1409 border-radius: 6px; 1410 flex-shrink: 0; 1411 } 1412 #koba-upsell-banner .kub-close:hover { background: rgba(255,255,255,.3); } 1413 </style> 1414 1415 <div id="koba-upsell-banner" role="alert">
1416 <span class="kub-text">Dommage! Votre Mairie n'a pas encore souscrit à l'Application Citoyenne afin de vous proposer une interface optimisée pour mobile, nous les contactons!</span> 1417 <button class="kub-close" id="koba-upsell-close" aria-label="Fermer">✕</button> 1418 </div> 1419 1420
1420<script> 1421 (function() { 1422 var isPwa = window.matchMedia('(display-mode: standalone)').matches 1423 || window.navigator.standalone === true; 1424 if (!isPwa) return; // â retirer cette ligne pour afficher aussi dans le navigateur 1425 1426 var KEY = 'koba_upsell_closed'; 1427 if (localStorage.getItem(KEY) === '1') return; 1428 1429 function show() { 1430 var b = document.getElementById('koba-upsell-banner'); 1431 if (!b) return; 1432 b.classList.add('koba-upsell-visible'); 1433 1434 // Comptage : 1 vue par session (ouverture de l'app) 1435 if (!sessionStorage.getItem('koba_upsell_counted')) { 1436 sessionStorage.setItem('koba_upsell_counted', '1'); 1437 var fd = new FormData(); 1438 fd.append('action', 'koba_upsell_view'); 1439 fetch('https://www.oye-plage.fr/wp-admin/admin-ajax.php', { 1440 method: 'POST', body: fd, credentials: 'include' 1441 }).catch(function(){}); 1442 } 1443 1444 var c = document.getElementById('koba-upsell-close'); 1445 if (c) c.addEventListener('click', function() { 1446 b.classList.remove('koba-upsell-visible'); 1447 localStorage.setItem(KEY, '1'); 1448 }); 1449 } 1450 if (document.readyState !== 'loading') show(); 1451 else document.addEventListener('DOMContentLoaded', show); 1452 })(); 1453 </script>
1453 1454 1455<a class="skip-link visually-hidden-focusable" href="#main-content">Aller au contenu principal</a> 1456 1457<header class="koba-header" role="banner"> 1458 <!-- Container principal avec position relative --> 1459 <div class="koba-header-wrapper"> 1460 1461 <!-- Logo - couvre les deux barres --> 1462 <a href="https://www.oye-plage.fr/" class="koba-logo"> 1463 <img src="https://www.oye-plage.fr/wp-content/uploads/sites/60/2026/07/LogoSite.png" alt="MAIRIE DE OYE PLAGE - Accueil"> 1464 </a> 1465 1466 <!-- Barre supérieure (orange) --> 1467 <div class="koba-topbar"> 1468 <div class="koba-topbar-inner"> 1469 <!-- Hamburger (mobile uniquement) --> 1470 <button class="koba-hamburger" id="koba-hamburger" aria-label="Menu"> 1471 <span></span> 1472 <span></span> 1473 <span></span> 1474 </button> 1475 1476 <!-- Menu secondaire gauche (desktop) --> 1477 <nav class="koba-topbar-menu"> 1478 <ul class="koba-topbar-list"> 1479 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 1480 <a href="https://www.oye-plage.fr/">ACCUEIL</a> 1481 </li> 1482 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 1483 <a href="https://www.oye-plage.fr/annuaire/">ANNUAIRE</a> 1484 </li> 1485 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 1486 <a href="https://www.oye-plage.fr/contact/">NOUS CONTACTER</a> 1487 </li> 1488 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 1489 <a href="https://www.oye-plage.fr/emploi/">EMPLOI</a> 1490 </li> 1491 </ul> 1492 </nav> 1493 1494 <!-- Lien droite (desktop) --> 1495 1496 1497 </div> 1498 </div> 1499 1500 <!-- Barre principale (bleu) --> 1501 <div class="koba-navbar"> 1502 <div class="koba-navbar-inner"> 1503 1504 <!-- Menu principal (desktop) --> 1505 <nav class="koba-main-nav" id="koba-main-nav"> 1506 1507 <ul class="koba-nav-list"> 1508 <li class="koba-nav-item has-megamenu"> 1509 <a href="#" class="koba-nav-link" data-megamenu="3356"> 1510 Actes réglementaires <svg class="koba-nav-arrow" width="10" height="10" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1511 <path d="M6 9l6 6 6-6"/> 1512 </svg> 1513 </a> 1514 1515 <div class="koba-megamenu" id="megamenu-3356"> 1516 <div class="koba-megamenu-inner"> 1517 <div class="koba-megamenu-col1"></div> 1518 1519 <div class="koba-megamenu-col2"> 1520 <span class="koba-megamenu-title">Actes réglementaires</span> 1521 </div> 1522 1523 <div class="koba-megamenu-col3"> 1524 <ul class="koba-megamenu-list"> 1525 <li class="koba-megamenu-item "> 1526 <a href="https://www.oye-plage.fr/kiosks/?annee=&mois=&categorie=comptes-rendus-cm" class="koba-megamenu-link"> 1527 Comptes rendus des Conseils Municipaux </a> 1528 1529 </li> 1530 <li class="koba-megamenu-item has-submenu"> 1531 <a href="https://www.oye-plage.fr/articles/decisions/" class="koba-megamenu-link"> 1532 Décisions <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1533 <path d="M9 18l6-6-6-6"/> 1534 </svg> 1535 </a> 1536 1537 <ul class="koba-megamenu-sublist"> 1538 <li class=""> 1539 <a href="https://www.oye-plage.fr/articles/decisions/"> 1540 Décisions </a> 1541 </li> 1542 <li class=""> 1543 <a href="https://www.oye-plage.fr/articles/decisions-d-urbanisme-e647a662-44ce-42a7-96d0-de091402adf8/"> 1544 Décisions d'urbanisme </a> 1545 </li> 1546 </ul> 1547 </li> 1548 <li class="koba-megamenu-item has-submenu"> 1549 <a href="https://www.oye-plage.fr/articles/arretes-du-maire/" class="koba-megamenu-link"> 1550 Arrêtés du Maire <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1551 <path d="M9 18l6-6-6-6"/> 1552 </svg> 1553 </a> 1554 1555 <ul class="koba-megamenu-sublist"> 1556 <li class=""> 1557 <a href="https://www.oye-plage.fr/articles/annee-2026/"> 1558 Année 2026 </a> 1559 </li> 1560 <li class=""> 1561 <a href="https://www.oye-plage.fr/articles/arretes-du-maire-2025/"> 1562 Année 2025 </a> 1563 </li> 1564 <li class=""> 1565 <a href="https://www.oye-plage.fr/articles/2024/"> 1566 Année 2024 </a> 1567 </li> 1568 <li class=""> 1569 <a href="https://www.oye-plage.fr/articles/arretes-du-maire/"> 1570 Année 2023 </a> 1571 </li> 1572 <li class=""> 1573 <a href="https://www.oye-plage.fr/articles/arretes-municipaux-permanents/"> 1574 Arrêtés Municipaux – Permanents </a> 1575 </li> 1576 </ul> 1577 </li> 1578 <li class="koba-megamenu-item "> 1579 <a href="https://www.oye-plage.fr/articles/arretes-prefectoraux/" class="koba-megamenu-link"> 1580 Arrêtés Préfectoraux </a> 1581 1582 </li> 1583 <li class="koba-megamenu-item "> 1584 <a href="https://www.oye-plage.fr/articles/arretes-departementaux/" class="koba-megamenu-link"> 1585 Arrêtés Départementaux </a> 1586 1587 </li> 1588 </ul> 1589 </div> 1590 1591 <div class="koba-megamenu-col4"></div> 1592 </div> 1593 </div> 1594 </li> 1595 <li class="koba-nav-item has-megamenu"> 1596 <a href="#" class="koba-nav-link" data-megamenu="3365"> 1597 Découvrir Oye-Plage <svg class="koba-nav-arrow" width="10" height="10" viewB
1597ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1598 <path d="M6 9l6 6 6-6"/> 1599 </svg> 1600 </a> 1601 1602 <div class="koba-megamenu" id="megamenu-3365"> 1603 <div class="koba-megamenu-inner"> 1604 <div class="koba-megamenu-col1"></div> 1605 1606 <div class="koba-megamenu-col2"> 1607 <span class="koba-megamenu-title">Découvrir Oye-Plage</span> 1608 </div> 1609 1610 <div class="koba-megamenu-col3"> 1611 <ul class="koba-megamenu-list"> 1612 <li class="koba-megamenu-item "> 1613 <a href="https://www.oye-plage.fr/articles/l-histoire-de-la-commune-d-oye-plage/" class="koba-megamenu-link"> 1614 L'histoire d'Oye-Plage </a> 1615 1616 </li> 1617 <li class="koba-megamenu-item "> 1618 <a href="https://www.oye-plage.fr/articles/le-patrimoine-de-la-commune/" class="koba-megamenu-link"> 1619 Le patrimoine </a> 1620 1621 </li> 1622 <li class="koba-megamenu-item "> 1623 <a href="https://www.oye-plage.fr/articles/oye-plage-9-kilometres-de-plage/" class="koba-megamenu-link"> 1624 Une plage de neuf kilomètres de sable fin </a> 1625 1626 </li> 1627 <li class="koba-megamenu-item "> 1628 <a href="https://www.oye-plage.fr/articles/a-la-decouverte-du-platier-d-oye/" class="koba-megamenu-link"> 1629 La Réserve naturelle - Le Platier d'Oye </a> 1630 1631 </li> 1632 <li class="koba-megamenu-item "> 1633 <a href="https://www.oye-plage.fr/articles/randonnees/" class="koba-megamenu-link"> 1634 Les randonnées </a> 1635 1636 </li> 1637 <li class="koba-megamenu-item "> 1638 <a href="https://www.oye-plage.fr/articles/locationd-de-vacances-a-oye-plage/" class="koba-megamenu-link"> 1639 Les hébergements touristiques </a> 1640 1641 </li> 1642 <li class="koba-megamenu-item "> 1643 <a href="https://www.oye-plage.fr/articles/le-guide-anserien-2bab4491-1c48-4b5a-9995-4c4ca59db2fa/" class="koba-megamenu-link"> 1644 Le guide Ansérien </a> 1645 1646 </li> 1647 </ul> 1648 </div> 1649 1650 <div class="koba-megamenu-col4"></div> 1651 </div> 1652 </div> 1653 </li> 1654 <li class="koba-nav-item has-megamenu"> 1655 <a href="#" class="koba-nav-link" data-megamenu="3373"> 1656 Ma municipalité <svg class="koba-nav-arrow" width="10" height="10" viewB
1656ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1657 <path d="M6 9l6 6 6-6"/> 1658 </svg> 1659 </a> 1660 1661 <div class="koba-megamenu" id="megamenu-3373"> 1662 <div class="koba-megamenu-inner"> 1663 <div class="koba-megamenu-col1"></div> 1664 1665 <div class="koba-megamenu-col2"> 1666 <span class="koba-megamenu-title">Ma municipalité</span> 1667 </div> 1668 1669 <div class="koba-megamenu-col3"> 1670 <ul class="koba-megamenu-list"> 1671 <li class="koba-megamenu-item "> 1672 <a href="https://www.oye-plage.fr/articles/vos-elus/" class="koba-megamenu-link"> 1673 Le Conseil Municipal </a> 1674 1675 </li> 1676 <li class="koba-megamenu-item "> 1677 <a href="https://www.oye-plage.fr/articles/delegues/" class="koba-megamenu-link"> 1678 Délégués auprès des organismes extérieurs </a> 1679 1680 </li> 1681 <li class="koba-megamenu-item "> 1682 <a href="https://www.oye-plage.fr/articles/commission-d-appel-d-offres/" class="koba-megamenu-link"> 1683 Commission d'appel d'offres </a> 1684 1685 </li> 1686 <li class="koba-megamenu-item "> 1687 <a href="https://www.oye-plage.fr/articles/commissions-municipales/" class="koba-megamenu-link"> 1688 Commissions Municipales </a> 1689 1690 </li> 1691 <li class="koba-megamenu-item "> 1692 <a href="https://www.oye-plage.fr/articles/tribune-libre/" class="koba-megamenu-link"> 1693 Tribune Libre </a> 1694 1695 </li> 1696 <li class="koba-megamenu-item "> 1697 <a href="https://www.oye-plage.fr/articles/le-conseil-des-anciens/" class="koba-megamenu-link"> 1698 Le Conseil des Anciens </a> 1699 1700 </li> 1701 <li class="koba-megamenu-item "> 1702 <a href="https://www.oye-plage.fr/articles/le-conseil-municipal-des-jeunes/" class="koba-megamenu-link"> 1703 Le Conseil Municipal des Jeunes </a> 1704 1705 </li> 1706 </ul> 1707 </div> 1708 1709 <div class="koba-megamenu-col4"></div> 1710 </div> 1711 </div> 1712 </li> 1713 <li class="koba-nav-item has-megamenu"> 1714 <a href="#" class="koba-nav-link" data-megamenu="3380"> 1715 Oye-Plage pratique <svg class="koba-nav-arrow" width="10" height="10" viewB
1715ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1716 <path d="M6 9l6 6 6-6"/> 1717 </svg> 1718 </a> 1719 1720 <div class="koba-megamenu" id="megamenu-3380"> 1721 <div class="koba-megamenu-inner"> 1722 <div class="koba-megamenu-col1"></div> 1723 1724 <div class="koba-megamenu-col2"> 1725 <span class="koba-megamenu-title">Oye-Plage pratique</span> 1726 </div> 1727 1728 <div class="koba-megamenu-col3"> 1729 <ul class="koba-megamenu-list"> 1730 <li class="koba-megamenu-item "> 1731 <a href="https://www.oye-plage.fr/kiosks/?annee=&mois=&categorie=gazette-anserienne" class="koba-megamenu-link"> 1732 La Gazette Ansérienne </a> 1733 1734 </li> 1735 <li class="koba-megamenu-item "> 1736 <a href="https://www.oye-plage.fr/articles/les-transports-755a2237-3587-494d-a4d2-aa0969cfc0d3/" class="koba-megamenu-link"> 1737 Les transports </a> 1738 1739 </li> 1740 <li class="koba-megamenu-item "> 1741 <a href="https://www.oye-plage.fr/emploi/" class="koba-megamenu-link"> 1742 Emploi </a> 1743 1744 </li> 1745 <li class="koba-megamenu-item has-submenu"> 1746 <a href="https://www.oye-plage.fr/articles" class="koba-megamenu-link"> 1747 Les associations <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1748 <path d="M9 18l6-6-6-6"/> 1749 </svg> 1750 </a> 1751 1752 <ul class="koba-megamenu-sublist"> 1753 <li class=""> 1754 <a href="https://www.oye-plage.fr/articles/calendrier-des-fetes-2024/"> 1755 Le calendrier des fêtes </a> 1756 </li> 1757 <li class=""> 1758 <a href="https://www.oye-plage.fr/annuaire/associations-7f258db0-7b5a-4982-a596-3991a6e3e7df"> 1759 Annuaire des associations </a> 1760 </li> 1761 <li class=""> 1762 <a href="https://www.oye-plage.fr/articles/subvention/"> 1763 Dossier de demande de subvention par une association </a> 1764 </li> 1765 <li class=""> 1766 <a href="https://www.oye-plage.fr/articles/organiser-une-manifestation/"> 1767 Organiser une manifestation </a> 1768 </li> 1769 </ul> 1770 </li> 1771 <li class="koba-megamenu-item "> 1772 <a href="https://www.oye-plage.fr/articles/location-salle/" class="koba-megamenu-link"> 1773 Salles des fêtes en location </a> 1774 1775 </li> 1776 <li class="koba-megamenu-item "> 1777 <a href="https://www.oye-plage.fr/articles/mediatheque/" class="koba-megamenu-link"> 1778 La médiathèque Simone-Veil </a> 1779 1780 </li> 1781 <li class="koba-megamenu-item "> 1782 <a href="https://www.oye-plage.fr/articles/ecole-de-musique/" class="koba-megamenu-link"> 1783 L'école de musique </a> 1784 1785 </li> 1786 <li class="koba-megamenu-item "> 1787 <a href="https://www.oye-plage.fr/articles/seniors/" class="koba-megamenu-link"> 1788 Les séniors </a> 1789 1790 </li> 1791 <li class="koba-megamenu-item "> 1792 <a href="https://www.oye-plage.fr/articles/commerces/" class="koba-megamenu-link"> 1793 Commerces </a> 1794 1795 </li> 1796 <li class="koba-megamenu-item "> 1797 <a href="https://www.oye-plage.fr/articles/permanences-services-logement-jeunes/" class="koba-megamenu-link"> 1798 Permanence Maison France Services </a> 1799 1800 </li> 1801 <li class="koba-megamenu-item "> 1802 <a href="https://www.oye-plage.fr/articles/permanences/" class="koba-megamenu-link"> 1803 Autres permanences </a> 1804 1805 </li> 1806 <li class="koba-megamenu-item "> 1807 <a href="https://www.oye-plage.fr/articles/urgence-et-sante/" class="koba-megamenu-link"> 1808 Urgences et santé </a> 1809 1810 </li> 1811 <li class="koba-megamenu-item "> 1812 <a href="https://www.oye-plage.fr/articles/poubelles-dechets-ramassage/" class="koba-megamenu-link"> 1813 Vos déchets </a> 1814 1815 </li> 1816 </ul> 1817 </div> 1818 1819 <div class="koba-megamenu-col4"></div> 1820 </div> 1821 </div> 1822 </li> 1823 <li class="koba-nav-item has-megamenu"> 1824 <a href="https://www.oye-plage.fr/articles" class="koba-nav-link" data-megamenu="3399"> 1825 Enfance & Jeunesse <svg class="koba-nav-arrow" width="10" height="10" viewB
1825ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1826 <path d="M6 9l6 6 6-6"/> 1827 </svg> 1828 </a> 1829 1830 <div class="koba-megamenu" id="megamenu-3399"> 1831 <div class="koba-megamenu-inner"> 1832 <div class="koba-megamenu-col1"></div> 1833 1834 <div class="koba-megamenu-col2"> 1835 <span class="koba-megamenu-title">Enfance & Jeunesse</span> 1836 </div> 1837 1838 <div class="koba-megamenu-col3"> 1839 <ul class="koba-megamenu-list"> 1840 <li class="koba-megamenu-item "> 1841 <a href="https://www.oye-plage.fr/articles/ecoles-et-college/" class="koba-megamenu-link"> 1842 Les écoles et le collège </a> 1843 1844 </li> 1845 <li class="koba-megamenu-item "> 1846 <a href="https://www.oye-plage.fr/articles/service-scolaire-7e719ab2-e76b-4a6b-ab9b-7877b2f8b319/" class="koba-megamenu-link"> 1847 Le service scolaire </a> 1848 1849 </li> 1850 <li class="koba-megamenu-item "> 1851 <a href="https://www.oye-plage.fr/articles/accueil-de-loisirs/" class="koba-megamenu-link"> 1852 L'accueil de loisirs et la garderie </a> 1853 1854 </li> 1855 <li class="koba-megamenu-item "> 1856 <a href="https://www.oye-plage.fr/articles/caj/" class="koba-megamenu-link"> 1857 Le Centre d'Animation des Jeunes </a> 1858 1859 </li> 1860 <li class="koba-megamenu-item "> 1861 <a href="https://www.oye-plage.fr/actualites/aide-financiere-aux-etudiants/" class="koba-megamenu-link"> 1862 Aide Financière aux Etudiants </a> 1863 1864 </li> 1865 <li class="koba-megamenu-item "> 1866 <a href="https://www.oye-plage.fr/articles/toutes-les-demarches-pour-vos-enfants-avec-le-compte-famille/" class="koba-megamenu-link"> 1867 Accès à votre compte famille </a> 1868 1869 </li> 1870 <li class="koba-megamenu-item "> 1871 <a href="https://www.oye-plage.fr/articles/le-pass-jeunesse/" class="koba-megamenu-link"> 1872 Le Pass Jeunesse </a> 1873 1874 </li> 1875 <li class="koba-megamenu-item "> 1876 <a href="https://www.oye-plage.fr/articles/bafa-bafd-citoyen/" class="koba-megamenu-link"> 1877 BAFA/BAFD Citoyen </a> 1878 1879 </li> 1880 <li class="koba-megamenu-item "> 1881 <a href="https://www.oye-plage.fr/actualites/formation-nageur-sauveteur" class="koba-megamenu-link"> 1882 Formation Nageur Sauveteur </a> 1883 1884 </li> 1885 <li class="koba-megamenu-item "> 1886 <a href="https://www.oye-plage.fr/articles/les-assistantes-maternelles/" class="koba-megamenu-link"> 1887 Les assistantes maternelles </a> 1888 1889 </li> 1890 </ul> 1891 </div> 1892 1893 <div class="koba-megamenu-col4"></div> 1894 </div> 1895 </div> 1896 </li> 1897 <li class="koba-nav-item has-megamenu"> 1898 <a href="#" class="koba-nav-link" data-megamenu="3408"> 1899 Démarches & E-service <svg class="koba-nav-arrow" width="10" height="10" viewB
1899ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1900 <path d="M6 9l6 6 6-6"/> 1901 </svg> 1902 </a> 1903 1904 <div class="koba-megamenu" id="megamenu-3408"> 1905 <div class="koba-megamenu-inner"> 1906 <div class="koba-megamenu-col1"></div> 1907 1908 <div class="koba-megamenu-col2"> 1909 <span class="koba-megamenu-title">Démarches & E-service</span> 1910 </div> 1911 1912 <div class="koba-megamenu-col3"> 1913 <ul class="koba-megamenu-list"> 1914 <li class="koba-megamenu-item "> 1915 <a href="https://www.oye-plage.fr/articles/cimetiere/" class="koba-megamenu-link"> 1916 Cimetière </a> 1917 1918 </li> 1919 <li class="koba-megamenu-item "> 1920 <a href="https://www.oye-plage.fr/articles/passeport/" class="koba-megamenu-link"> 1921 Carte Nationale d'Identité et Passeport </a> 1922 1923 </li> 1924 <li class="koba-megamenu-item "> 1925 <a href="https://www.oye-plage.fr/services/listes-electorales/" class="koba-megamenu-link"> 1926 Inscription sur les listes électorales </a> 1927 1928 </li> 1929 <li class="koba-megamenu-item "> 1930 <a href="https://www.oye-plage.fr/services/demande-de-logement-social/" class="koba-megamenu-link"> 1931 Demande de logement social à Oye-Plage </a> 1932 1933 </li> 1934 <li class="koba-megamenu-item "> 1935 <a href="https://www.oye-plage.fr/services/pacs-d7be9ec7-12a2-4be3-a977-eece7bea7ec4/" class="koba-megamenu-link"> 1936 Se PACSer </a> 1937 1938 </li> 1939 <li class="koba-megamenu-item "> 1940 <a href="https://www.oye-plage.fr/services/recensement-citoyen-journee-defense-et-citoyennete/" class="koba-megamenu-link"> 1941 Journée Défense et Citoyenneté </a> 1942 1943 </li> 1944 <li class="koba-megamenu-item "> 1945 <a href="https://www.oye-plage.fr/services/systeme-de-tele-alerte/" class="koba-megamenu-link"> 1946 Système de Télé-Alerte </a> 1947 1948 </li> 1949 <li class="koba-megamenu-item "> 1950 <a href="https://www.oye-plage.fr/services/population/" class="koba-megamenu-link"> 1951 Communication-Emménagement/Déménagement </a> 1952 1953 </li> 1954 <li class="koba-megamenu-item "> 1955 <a href="https://www.oye-plage.fr/services/medaille-du-travail/" class="koba-megamenu-link"> 1956 Médaille du Travail </a> 1957 1958 </li> 1959 <li class="koba-megamenu-item "> 1960 <a href="https://www.oye-plage.fr/services/demande-d-actes/" class="koba-megamenu-link"> 1961 Demande dâactes </a> 1962 1963 </li> 1964 <li class="koba-megamenu-item "> 1965 <a href="https://www.oye-plage.fr/services/urbanisme/" class="koba-megamenu-link"> 1966 Urbanisme </a> 1967 1968 </li> 1969 <li class="koba-megamenu-item "> 1970 <a href="https://www.oye-plage.fr/services/operation-tranquillite-vacances/" class="koba-megamenu-link"> 1971 Opération Tranquillité Vacances </a> 1972 1973 </li> 1974 <li class="koba-megamenu-item "> 1975 <a href="https://www.oye-plage.fr/services/voisins-vigilants/" class="koba-megamenu-link"> 1976 Voisins Vigilants </a> 1977 1978 </li> 1979 <li class="koba-megamenu-item "> 1980 <a href="https://www.oye-plage.fr/articles/tranquilite-chantier/" class="koba-megamenu-link"> 1981 Tranquillité chantier </a> 1982 1983 </li> 1984 <li class="koba-megamenu-item "> 1985 <a href="https://www.service-public.fr/particuliers/vosdroits/N19805" class="koba-megamenu-link"> 1986 Famille </a> 1987 1988 </li> 1989 <li class="koba-megamenu-item "> 1990 <a href="https://www.service-public.fr/particuliers/vosdroits/N19812" class="koba-megamenu-link"> 1991 Transports </a> 1992 1993 </li> 1994 <li class="koba-megamenu-item "> 1995 <a href="https://www.service-public.fr/particuliers/vosdroits/N19807" class="koba-megamenu-link"> 1996 Justice </a> 1997 1998 </li> 1999 <li class="koba-megamenu-item "> 2000 <a href="https://www.service-public.fr/particuliers/vosdroits/N19811" class="koba-megamenu-link"> 2001 Social - Santé </a> 2002 2003 </li> 2004 <li class="koba-megamenu-item "> 2005 <a href="https://www.service-public.fr/particuliers/vosdroits/N19806" class="koba-megamenu-link"> 2006 Travail </a> 2007 2008 </li> 2009 <li class="koba-megamenu-item "> 2010 <a href="https://www.service-public.fr/particuliers/vosdroits/N19808" class="koba-megamenu-link"> 2011 Logement </a> 2012 2013 </li> 2014 <li class="koba-megamenu-item "> 2015 <a href="https://www.service-public.fr/particuliers/vosdroits/N19803" class="koba-megamenu-link"> 2016 Argent </a> 2017 2018 </li> 2019 <li class="koba-megamenu-item "> 2020 <a href="https://www.service-public.fr/particuliers/vosdroits/N19804" class="koba-megamenu-link"> 2021 Ãtranger </a> 2022 2023 </li> 2024 <li class="koba-megamenu-item "> 2025 <a href="https://www.service-public.fr/particuliers/vosdroits/N19809" class="koba-megamenu-link"> 2026 Loisirs </a> 2027 2028 </li> 2029 </ul> 2030 </div> 2031 2032 <div class="koba-megamenu-col4"></div> 2033 </div> 2034 </div> 2035 </li> 2036 <li class="koba-nav-item has-megamenu"> 2037 <a href="https://www.oye-plage.fr/articles/enquete-publique-reacteurs-2-et-4-centre-nucleaire-de-production-d-electricite-de-gravelines/" class="koba-nav-link" data-megamenu="3432"> 2038 Enquêtes publiques et publications légales <svg class="koba-nav-arrow" width="10" height="10" viewB
2038ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 2039 <path d="M6 9l6 6 6-6"/> 2040 </svg> 2041 </a> 2042 2043 <div class="koba-megamenu" id="megamenu-3432"> 2044 <div class="koba-megamenu-inner"> 2045 <div class="koba-megamenu-col1"></div> 2046 2047 <div class="koba-megamenu-col2"> 2048 <span class="koba-megamenu-title">Enquêtes publiques et publications légales</span> 2049 </div> 2050 2051 <div class="koba-megamenu-col3"> 2052 <ul class="koba-megamenu-list"> 2053 <li class="koba-megamenu-item "> 2054 <a href="https://www.oye-plage.fr/articles/bilan-du-schema-de-coherence-territoriale-analyse-des-resultats-de-l-application-de-2020-a-2026/" class="koba-megamenu-link"> 2055 Bilan du schéma de cohérence territoriale- analyse des résultats de l'application de 2020 à 2026 </a> 2056 2057 </li> 2058 <li class="koba-megamenu-item "> 2059 <a href="https://www.oye-plage.fr/articles/consultation-du-public-projet-de-relevage-du-cable-sous-marin-sea-me-we3-situe-dans-les-eaux-territoriales-des-hauts-de-france/" class="koba-megamenu-link"> 2060 Consultation du public – Projet de relevage du câble sous-marin SEA-ME-WE3 situé dans les eaux territoriales des Hauts-de-France </a> 2061 2062 </li> 2063 <li class="koba-megamenu-item "> 2064 <a href="https://www.oye-plage.fr/articles/permis-damenager-eden62/" class="koba-megamenu-link"> 2065 Permis d’Aménager – Eden62 </a> 2066 2067 </li> 2068 </ul> 2069 </div> 2070 2071 <div class="koba-megamenu-col4"></div> 2072 </div> 2073 </div> 2074 </li> 2075 </ul> 2076 </nav> 2077 2078 <!-- Bouton recherche (carré) --> 2079 <button class="koba-search-toggle" id="koba-search-toggle" aria-label="Ouvrir la recherche" aria-expanded="false" aria-controls="koba-search-bar"> 2080 <svg class="koba-icon-search" width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 2081 <circle cx="11" cy="11" r="8"/> 2082 <path d="M21 21l-4.35-4.35"/> 2083 </svg> 2084 </button> 2085 2086 <!-- Barre de recherche --> 2087<div class="koba-search-bar" id="koba-search-bar"> 2088 <div class="koba-search-bar-inner"> 2089 <form role="search" method="get" action="https://www.oye-plage.fr/" class="koba-search-form"> 2090 <label for="koba-search-input" class="visually-hidden">Rechercher sur le site</label> 2091 <input type="search" name="s" placeholder="Rechercher" class="koba-search-input" id="koba-search-input" value="" autocomplete="off"> 2092 <button type="submit" class="koba-search-submit" aria-label="Lancer la recherche"> 2093 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 2094 <circle cx="11" cy="11" r="8"/> 2095 <path d="M21 21l-4.35-4.35"/> 2096 </svg> 2097 </button> 2098 </form> 2099 <button class="koba-search-close" id="koba-search-close" aria-label="Fermer la recherche"> 2100 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 2101 <path d="M18 6L6 18M6 6l12 12"/> 2102 </svg> 2103 </button> 2104 </div> 2105</div> 2106 </div> 2107 </div> 2108 </div> 2109 2110 <!-- Menu mobile --> 2111 <div class="koba-mobile-menu" id="koba-mobile-menu"> 2112 <div class="koba-mobile-menu-inner"> 2113 <!-- Recherche mobile --> 2114 <div class="koba-mobile-search"> 2115 <form role="search" method="get" action="https://www.oye-plage.fr/" class="koba-mobile-search-form"> 2116 <label for="koba-mobile-search-input" class="visually-hidden">Rechercher sur le site</label> 2117 <input type="search" name="s" id="koba-mobile-search-input" placeholder="Rechercher..." class="koba-mobile-search-input" value=""> 2118 <button type="submit" class="koba-mobile-search-submit" aria-label="Lancer la recherche"> 2119 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 2120 <circle cx="11" cy="11" r="8"/> 2121 <path d="M21 21l-4.35-4.35"/> 2122 </svg> 2123 </button> 2124 </form> 2125 </div> 2126 <nav class="koba-mobile-nav"><ul id="menu-menu-principal" class="koba-mobile-list"><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Actes réglementaires</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu">
2126<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></button></div><ul class="koba-mobile-submenu" data-depth="0"><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/kiosks/?annee=&mois=&categorie=comptes-rendus-cm" class="koba-mobile-link">Comptes rendus des Conseils Municipaux</a></div></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/decisions/" class="koba-mobile-link">Décisions</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></button></div><ul class="koba-mobile-submenu" data-depth="1"><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/decisions/" class="koba-mobile-link">Décisions</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/decisions-d-urbanisme-e647a662-44ce-42a7-96d0-de091402adf8/" class="koba-mobile-link">Décisions d'urbanisme</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/arretes-du-maire/" class="koba-mobile-link">Arrêtés du Maire</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></button></div><ul class="koba-mobile-submenu" data-depth="1"><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/annee-2026/" class="koba-mobile-link">Année 2026</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/arretes-du-maire-2025/" class="koba-mobile-link">Année 2025</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/2024/" class="koba-mobile-link">Année 2024</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/arretes-du-maire/" class="koba-mobile-link">Année 2023</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/arretes-municipaux-permanents/" class="koba-mobile-link">Arrêtés Municipaux – Permanents</a></div></li></ul></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/arretes-prefectoraux/" class="koba-mobile-link">Arrêtés Préfectoraux</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/arretes-departementaux/" class="koba-mobile-link">Arrêtés Départementaux</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Découvrir Oye-Plage</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></button></div><ul class="koba-mobile-submenu" data-depth="0"><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/l-histoire-de-la-commune-d-oye-plage/" class="koba-mobile-link">L'histoire d'Oye-Plage</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/le-patrimoine-de-la-commune/" class="koba-mobile-link">
2126Le patrimoine</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/oye-plage-9-kilometres-de-plage/" class="koba-mobile-link">Une plage de neuf kilomètres de sable fin</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/a-la-decouverte-du-platier-d-oye/" class="koba-mobile-link">La Réserve naturelle - Le Platier d'Oye</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/randonnees/" class="koba-mobile-link">Les randonnées</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/locationd-de-vacances-a-oye-plage/" class="koba-mobile-link">Les hébergements touristiques</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/le-guide-anserien-2bab4491-1c48-4b5a-9995-4c4ca59db2fa/" class="koba-mobile-link">Le guide Ansérien</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Ma municipalité</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></button></div><ul class="koba-mobile-submenu" data-depth="0"><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/vos-elus/" class="koba-mobile-link">Le Conseil Municipal</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/delegues/" class="koba-mobile-link">Délégués auprès des organismes extérieurs</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/commission-d-appel-d-offres/" class="koba-mobile-link">Commission d'appel d'offres</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/commissions-municipales/" class="koba-mobile-link">Commissions Municipales</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/tribune-libre/" class="koba-mobile-link">Tribune Libre</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/le-conseil-des-anciens/" class="koba-mobile-link">Le Conseil des Anciens</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/le-conseil-municipal-des-jeunes/" class="koba-mobile-link">Le Conseil Municipal des Jeunes</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Oye-Plage pratique</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></button></div><ul class="koba-mobile-submenu" data-depth="0"><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/kiosks/?annee=&mois=&categorie=gazette-anserienne" class="koba-mobile-link">La Gazette Ansérienne</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/les-transports-755a2237-3587-494d-a4d2-aa0969cfc0d3/" class="koba-mobile-link">Les transports</a></div></li><li class="koba-mobile-item current"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/emploi/" class="koba-mobile-link">Emploi</a></div></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles" class="koba-mobile-link">Les associations</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu">
2126<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></button></div><ul class="koba-mobile-submenu" data-depth="1"><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/calendrier-des-fetes-2024/" class="koba-mobile-link">Le calendrier des fêtes</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/annuaire/associations-7f258db0-7b5a-4982-a596-3991a6e3e7df" class="koba-mobile-link">Annuaire des associations</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/subvention/" class="koba-mobile-link">Dossier de demande de subvention par une association</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/organiser-une-manifestation/" class="koba-mobile-link">Organiser une manifestation</a></div></li></ul></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/location-salle/" class="koba-mobile-link">Salles des fêtes en location</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/mediatheque/" class="koba-mobile-link">La médiathèque Simone-Veil</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/ecole-de-musique/" class="koba-mobile-link">L'école de musique</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/seniors/" class="koba-mobile-link">Les séniors</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/commerces/" class="koba-mobile-link">Commerces</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/permanences-services-logement-jeunes/" class="koba-mobile-link">Permanence Maison France Services</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/permanences/" class="koba-mobile-link">Autres permanences</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/urgence-et-sante/" class="koba-mobile-link">Urgences et santé</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/poubelles-dechets-ramassage/" class="koba-mobile-link">Vos déchets</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles" class="koba-mobile-link">Enfance & Jeunesse</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></button></div><ul class="koba-mobile-submenu" data-depth="0"><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/ecoles-et-college/" class="koba-mobile-link">Les écoles et le collège</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/service-scolaire-7e719ab2-e76b-4a6b-ab9b-7877b2f8b319/" class="koba-mobile-link">Le service scolaire</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/accueil-de-loisirs/" class="koba-mobile-link">L'accueil de loisirs et la garderie</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/caj/" class="koba-mobile-link">Le Centre d'Animation des Jeunes</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/actualites/aide-financiere-aux-etudiants/" class="koba-mobile-link">Aide Financière aux Etudiants</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/toutes-les-demarches-pour-vos-enfants-avec-le-compte-famille/" class="koba-mobile-link">Accès à votre compte famille</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/le-pass-jeunesse/" class="koba-mobile-link">Le Pass Jeunesse</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/bafa-bafd-citoyen/" class="koba-mobile-link">BAFA/BAFD Citoyen</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/actualites/formation-nageur-sauveteur" class="koba-mobile-link">Formation Nageur Sauveteur</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/les-assistantes-maternelles/" class="koba-mobile-link">Les assistantes maternelles</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Démarches & E-service</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu">
2126<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></button></div><ul class="koba-mobile-submenu" data-depth="0"><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/cimetiere/" class="koba-mobile-link">Cimetière</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/passeport/" class="koba-mobile-link">Carte Nationale d'Identité et Passeport</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/services/listes-electorales/" class="koba-mobile-link">Inscription sur les listes électorales</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/services/demande-de-logement-social/" class="koba-mobile-link">Demande de logement social à Oye-Plage</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/services/pacs-d7be9ec7-12a2-4be3-a977-eece7bea7ec4/" class="koba-mobile-link">Se PACSer</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/services/recensement-citoyen-journee-defense-et-citoyennete/" class="koba-mobile-link">Journée Défense et Citoyenneté</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/services/systeme-de-tele-alerte/" class="koba-mobile-link">Système de Télé-Alerte</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/services/population/" class="koba-mobile-link">Communication-Emménagement/Déménagement</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/services/medaille-du-travail/" class="koba-mobile-link">Médaille du Travail</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/services/demande-d-actes/" class="koba-mobile-link">Demande dâactes</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/services/urbanisme/" class="koba-mobile-link">Urbanisme</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/services/operation-tranquillite-vacances/" class="koba-mobile-link">Opération Tranquillité Vacances</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/services/voisins-vigilants/" class="koba-mobile-link">Voisins Vigilants</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/tranquilite-chantier/" class="koba-mobile-link">Tranquillité chantier</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.service-public.fr/particuliers/vosdroits/N19805" class="koba-mobile-link">Famille</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.service-public.fr/particuliers/vosdroits/N19812" class="koba-mobile-link">Transports</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.service-public.fr/particuliers/vosdroits/N19807" class="koba-mobile-link">Justice</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.service-public.fr/particuliers/vosdroits/N19811" class="koba-mobile-link">Social - Santé</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.service-public.fr/particuliers/vosdroits/N19806" class="koba-mobile-link">Travail</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.service-public.fr/particuliers/vosdroits/N19808" class="koba-mobile-link">Logement</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.service-public.fr/particuliers/vosdroits/N19803" class="koba-mobile-link">Argent</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.service-public.fr/particuliers/vosdroits/N19804" class="koba-mobile-link">Ãtranger</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.service-public.fr/particuliers/vosdroits/N19809" class="koba-mobile-link">Loisirs</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/enquete-publique-reacteurs-2-et-4-centre-nucleaire-de-production-d-electricite-de-gravelines/" class="koba-mobile-link">Enquêtes publiques et publications légales</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu">
2126<svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg></button></div><ul class="koba-mobile-submenu" data-depth="0"><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/bilan-du-schema-de-coherence-territoriale-analyse-des-resultats-de-l-application-de-2020-a-2026/" class="koba-mobile-link">Bilan du schéma de cohérence territoriale- analyse des résultats de l'application de 2020 à 2026</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/consultation-du-public-projet-de-relevage-du-cable-sous-marin-sea-me-we3-situe-dans-les-eaux-territoriales-des-hauts-de-france/" class="koba-mobile-link">Consultation du public – Projet de relevage du câble sous-marin SEA-ME-WE3 situé dans les eaux territoriales des Hauts-de-France</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.oye-plage.fr/articles/permis-damenager-eden62/" class="koba-mobile-link">Permis d’Aménager – Eden62</a></div></li></ul></li></ul></nav> 2127 <nav class="koba-mobile-secondary"> 2128 <ul class="koba-topbar-list"> 2129 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 2130 <a href="https://www.oye-plage.fr/">ACCUEIL</a> 2131 </li> 2132 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 2133 <a href="https://www.oye-plage.fr/annuaire/">ANNUAIRE</a> 2134 </li> 2135 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 2136 <a href="https://www.oye-plage.fr/contact/">NOUS CONTACTER</a> 2137 </li> 2138 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 2139 <a href="https://www.oye-plage.fr/emploi/">EMPLOI</a> 2140 </li> 2141 </ul> 2142 </nav> 2143 </div> 2144 </div><!-- Overlay résultats recherche --> 2145<div class="koba-search-overlay" id="koba-search-overlay"></div> 2146</header> 2147 2148<!-- Spacer pour compenser le header fixe --> 2149<div class="koba-header-spacer"></div> 2150 2151<!-- Overlay --> 2152<div class="koba-overlay" id="koba-overlay"></div> 2153 <div class="modal fade" id="exampleModal" tabindex="-1" aria-hidden="true" aria-labelledby="exampleModalTitle" role="dialog"> 2154 <div class="modal-dialog"> 2155 <div class="modal-content"> 2156 2157 <div class="modal-header"> 2158 <h5 class="modal-title" id="exampleModalTitle">SUIVEZ L'ACTU</h5> 2159 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Fermer"></button> 2160 </div> 2161 2162 <div class="modal-body"> 2163 <p>* Champs obligatoires</p> 2164 <style> 2165 .koba-form-inscription { 2166 background: #fff; 2167 padding: 30px; 2168 border-radius: 12px; 2169 box-shadow: 0 4px 20px rgba(0,0,0,0.08); 2170 max-width: 700px; 2171 margin: 0 auto; 2172 } 2173 .koba-form-inscription h3 { 2174 margin: 0 0 25px; 2175 padding-bottom: 15px; 2176 border-bottom: 3px solid var(--koba-primary, #209bbc); 2177 color: #1a1a2e; 2178 font-size: 1.5em; 2179 } 2180 .koba-form-section { 2181 margin-bottom: 25px; 2182 padding-bottom: 20px; 2183 border-bottom: 1px solid #eee; 2184 } 2185 .koba-form-section:last-of-type { 2186 border-bottom: none; 2187 margin-bottom: 15px; 2188 } 2189 .koba-form-section-title { 2190 font-weight: 600; 2191 color: var(--koba-primary, #209bbc); 2192 margin-bottom: 15px; 2193 font-size: 14px; 2194 text-transform: uppercase; 2195 letter-spacing: 0.5px; 2196 } 2197 .koba-form-row { 2198 display: flex; 2199 gap: 15px; 2200 margin-bottom: 15px; 2201 } 2202 .koba-form-field { 2203 flex: 1; 2204 } 2205 .koba-form-field.full { 2206 flex: 0 0 100%; 2207 } 2208 .koba-form-field label { 2209 display: block; 2210 font-weight: 500; 2211 margin-bottom: 6px; 2212 color: #333; 2213 font-size: 14px; 2214 } 2215 .koba-form-field label .req { 2216 color: #d63638; 2217 } 2218 .koba-form-field input, 2219 .koba-form-field select, 2220 .koba-form-field textarea { 2221 width: 100%; 2222 padding: 12px 15px; 2223 border: 1px solid #ddd; 2224 border-radius: 6px; 2225 font-size: 14px; 2226 transition: border-color 0.2s, box-shadow 0.2s; 2227 box-sizing: border-box; 2228 } 2229 .koba-form-field input:focus, 2230 .koba-form-field select:focus, 2231 .koba-form-field textarea:focus { 2232 outline: none; 2233 border-color: var(--koba-primary, #209bbc);
2234 box-shadow: 0 0 0 3px rgba(32, 155, 188, 0.1); 2235 } 2236 .koba-form-field textarea { 2237 min-height: 80px; 2238 resize: vertical; 2239 } 2240 .koba-form-checkbox { 2241 display: flex; 2242 align-items: flex-start; 2243 gap: 10px; 2244 padding: 12px 15px; 2245 background: #f8f9fa; 2246 border-radius: 6px; 2247 margin-bottom: 10px; 2248 cursor: pointer; 2249 transition: background 0.2s; 2250 } 2251 .koba-form-checkbox:hover { 2252 background: #e9ecef; 2253 } 2254 .koba-form-checkbox input[type="checkbox"] { 2255 width: 20px; 2256 height: 20px; 2257 margin-top: 2px; 2258 cursor: pointer; 2259 accent-color: var(--koba-primary, #209bbc); 2260 } 2261 .koba-form-checkbox span { 2262 font-size: 14px; 2263 color: #333; 2264 line-height: 1.5; 2265 } 2266 .koba-form-submit { 2267 text-align: center; 2268 margin-top: 25px; 2269 } 2270 .koba-form-submit button { 2271 background: var(--koba-primary, #209bbc); 2272 color: #fff; 2273 border: none; 2274 padding: 15px 50px; 2275 font-size: 16px; 2276 font-weight: 600; 2277 border-radius: 8px; 2278 cursor: pointer; 2279 transition: all 0.3s; 2280 text-transform: uppercase; 2281 letter-spacing: 0.5px; 2282 } 2283 .koba-form-submit button:hover { 2284 background: var(--koba-secondary, #faaf00); 2285 transform: translateY(-2px); 2286 box-shadow: 0 4px 15px rgba(0,0,0,0.15); 2287 } 2288 .koba-form-submit button:disabled { 2289 background: #ccc; 2290 cursor: not-allowed; 2291 transform: none; 2292 box-shadow: none; 2293 } 2294 .koba-form-message { 2295 padding: 15px 20px; 2296 border-radius: 8px; 2297 margin-bottom: 20px; 2298 display: none; 2299 } 2300 .koba-form-message.success { 2301 background: #d4edda; 2302 color: #155724; 2303 border: 1px solid #c3e6cb; 2304 display: block; 2305 } 2306 .koba-form-message.error { 2307 background: #f8d7da; 2308 color: #721c24; 2309 border: 1px solid #f5c6cb; 2310 display: block; 2311 } 2312 .koba-form-loading { 2313 display: none; 2314 text-align: center; 2315 padding: 40px; 2316 } 2317 .koba-form-loading.active { 2318 display: block; 2319 } 2320 .koba-spinner { 2321 width: 40px; 2322 height: 40px; 2323 border: 4px solid #f3f3f3;
2324 border-top: 4px solid var(--koba-primary, #209bbc); 2325 border-radius: 50%; 2326 animation: koba-spin 1s linear infinite; 2327 margin: 0 auto 15px; 2328 } 2329 @keyframes koba-spin { 2330 0% { transform: rotate(0deg); } 2331 100% { transform: rotate(360deg); } 2332 } 2333 .koba-form-success { 2334 display: none; 2335 text-align: center; 2336 padding: 40px 20px; 2337 } 2338 .koba-form-success.active { 2339 display: block; 2340 } 2341 .koba-form-success .success-icon { 2342 width: 80px; 2343 height: 80px; 2344 background: #d4edda; 2345 border-radius: 50%; 2346 display: flex; 2347 align-items: center; 2348 justify-content: center; 2349 margin: 0 auto 20px; 2350 } 2351 .koba-form-success .success-icon svg { 2352 width: 40px; 2353 height: 40px; 2354 color: #28a745; 2355 } 2356 .koba-form-success h4 { 2357 color: #28a745; 2358 margin: 0 0 10px; 2359 font-size: 1.5em; 2360 } 2361 .koba-form-success p { 2362 color: #666; 2363 margin: 0; 2364 } 2365 .koba-recaptcha-badge { 2366 font-size: 11px; 2367 color: #999; 2368 text-align: center; 2369 margin-top: 15px; 2370 } 2371 .koba-recaptcha-badge a { 2372 color: #999; 2373 } 2374 /* Masquer le badge reCAPTCHA flottant de Google */ 2375 .grecaptcha-badge { 2376 visibility: hidden !important; 2377 } 2378 @media (max-width: 600px) { 2379 .koba-form-inscription { 2380 padding: 20px; 2381 } 2382 .koba-form-row { 2383 flex-direction: column; 2384 gap: 0; 2385 } 2386 .koba-form-field { 2387 margin-bottom: 15px; 2388 } 2389 } 2390 2391 /* RGAA 11.10 / 11.11 - etat d'erreur (visible uniquement si erreur) */ 2392 .koba-form-inscription .koba-field-error { 2393 display: none; 2394 color: #b3261e; 2395 font-size: 13px; 2396 line-height: 1.4; 2397 margin-top: 6px; 2398 } 2399 .koba-form-inscription .koba-field-error.show { 2400 display: block; 2401 } 2402 .koba-form-inscription [aria-invalid="true"] { 2403 border-color: #b3261e !important; 2404 box-shadow: 0 0 0 1px #b3261e; 2405 } 2406 </style>
vendor: 130 bytes, lines 2406-2408
2406 2407 2408 <script type="text/plain" data-hob-service="recaptcha" data-hob-src="https://www.google.com/recaptcha/api.js?render=
24086Lc6WU8sAAAAAEzRr3GP0Ep3U4f6-uBl-eA9-F_W
vendor: 25 bytes, lines 2408-2410
2408"></script> 2409 2410
2410<div class="koba-form-inscription" id="koba-inscription-form"> 2411 <div class="koba-form-message" id="koba-form-message" role="status" aria-live="polite" aria-atomic="true"></div> 2412 2413 <div class="koba-form-loading" id="koba-form-loading"> 2414 <div class="koba-spinner"></div> 2415 <p>Envoi en cours...</p> 2416 </div> 2417 2418 <div class="koba-form-success" id="koba-form-success" role="status" aria-live="polite" tabindex="-1"> 2419 <div class="success-icon"> 2420 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 2421 <polyline points="20 6 9 17 4 12"></polyline> 2422 </svg> 2423 </div> 2424 <h4>Inscription réussie !</h4> 2425 <p id="koba-success-text">Merci pour votre inscription.</p> 2426 </div> 2427 2428 <form id="koba-citizen-form" style="display:block;"> 2429 <input type="hidden" id="koba_inscription_nonce" name="koba_inscription_nonce" value="218059e309" /><input type="hidden" name="_wp_http_referer" value="/emploi/" /> <input type="hidden" name="recaptcha_token" id="recaptcha_token" value=""> 2430 2431 <!-- IDENTITà --> 2432 <div class="koba-form-section"> 2433 <div class="koba-form-section-title">Identité</div> 2434 2435 <div class="koba-form-row"> 2436 <div class="koba-form-field"> 2437 <label for="koba-ins-gender">Civilité</label> 2438 <select id="koba-ins-gender" name="gender"> 2439 <option value="0">Monsieur</option> 2440 <option value="1">Madame</option> 2441 </select> 2442 </div> 2443 <div class="koba-form-field"> 2444 <label for="koba-ins-birthdate">Date de naissance</label> 2445 <input type="date" id="koba-ins-birthdate" name="birthdate"> 2446 </div> 2447 </div> 2448 2449 <div class="koba-form-row"> 2450 <div class="koba-form-field"> 2451 <label for="koba-ins-lastname">Nom</label> 2452 <input type="text" id="koba-ins-lastname" name="lastname" autocomplete="family-name" placeholder="Votre nom"> 2453 </div> 2454 <div class="koba-form-field"> 2455 <label for="koba-ins-firstname">Prénom</label> 2456 <input type="text" id="koba-ins-firstname" name="firstname" autocomplete="given-name" placeholder="Votre prénom"> 2457 </div> 2458 </div> 2459 </div> 2460 2461 <!-- ADRESSE --> 2462 <div class="koba-form-section"> 2463 <div class="koba-form-section-title">Adresse</div> 2464 2465 <div class="koba-form-row"> 2466 <div class="koba-form-field full"> 2467 <label for="koba-ins-address">Adresse</label> 2468 <textarea id="koba-ins-address" name="address" rows="2" autocomplete="street-address" placeholder="Numéro et nom de rue"></textarea> 2469 </div> 2470 </div> 2471 2472 <div class="koba-form-row"> 2473 <div class="koba-form-field"> 2474 <label for="koba-ins-zipcode">Code postal</label> 2475 <input type="text" id="koba-ins-zipcode" name="zipcode" autocomplete="postal-code" placeholder="38000"> 2476 </div> 2477 <div class="koba-form-field"> 2478 <label for="koba-ins-city">Ville</label> 2479 <input type="text" id="koba-ins-city" name="city" autocomplete="address-level2" placeholder="Votre ville"> 2480 </div> 2481 <div class="koba-form-field"> 2482 <label for="koba-ins-country">Pays</label> 2483 <input type="text" id="koba-ins-country" name="country" autocomplete="country-name" placeholder="France" value="France"> 2484 </div> 2485 </div> 2486 </div> 2487 2488 <!-- CONTACT --> 2489 <div class="koba-form-section"> 2490 <div class="koba-form-section-title">Contact</div> 2491 2492 <div class="koba-form-row"> 2493 <div class="koba-form-field"> 2494 <label for="koba-ins-phone">Téléphone</label> 2495 <input type="tel" id="koba-ins-phone" name="phone" autocomplete="tel" placeholder="06 00 00 00 00"> 2496 </div> 2497 <div class="koba-form-field"> 2498 <label for="koba-ins-fax">Fax</label> 2499 <input type="tel" id="koba-ins-fax" name="fax" placeholder="04 00 00 00 00"> 2500 </div> 2501 </div> 2502 2503 <div class="koba-form-row"> 2504 <div class="koba-form-field full"> 2505 <label for="koba-ins-email">Email <span class="req">*</span></label> 2506 <input type="email" id="koba-ins-email" name="email" autocomplete="email" placeholder="[email protected]" required aria-required="true" aria-describedby="koba-ins-email-error">
2507 <span class="koba-field-error" id="koba-ins-email-error"></span> 2508 </div> 2509 </div> 2510 </div> 2511 2512 <!-- PRÃFÃRENCES --> 2513 <div class="koba-form-section"> 2514 <div class="koba-form-section-title">Préférences de communication</div> 2515 2516 <label class="koba-form-checkbox"> 2517 <input type="checkbox" name="sms_newsletter" value="1"> 2518 <span>Je souhaite recevoir des informations par SMS</span> 2519 </label> 2520 2521 <label class="koba-form-checkbox"> 2522 <input type="checkbox" name="email_newsletter" value="1" checked> 2523 <span>Je souhaite recevoir la newsletter par email</span> 2524 </label> 2525 </div> 2526 2527 <div class="koba-form-submit"> 2528 <button type="submit" id="koba-submit-btn">S'inscrire</button> 2529 </div> 2530 2531 <div class="koba-recaptcha-badge"> 2532 Ce site est protégé par reCAPTCHA. 2533 <a href="https://policies.google.com/privacy" target="_blank">Politique de confidentialité</a> et 2534 <a href="https://policies.google.com/terms" target="_blank">Conditions d'utilisation</a> de Google. 2535 </div> 2536 </form> 2537 </div> 2538 2539
2539<script> 2540 (function() { 2541 var form = document.getElementById('koba-citizen-form'); 2542 var message = document.getElementById('koba-form-message'); 2543 var loading = document.getElementById('koba-form-loading'); 2544 var success = document.getElementById('koba-form-success'); 2545 var submitBtn = document.getElementById('koba-submit-btn'); 2546 var recaptchaActive = true; 2547 var siteKey = '6Lc6WU8sAAAAAEzRr3GP0Ep3U4f6-uBl-eA9-F_W'; 2548 2549 if (!form) return; 2550 2551 // --- RGAA 11.10 / 11.11 : validation accessible --- 2552 function clearInsError(fieldId, errorId) { 2553 var f = document.getElementById(fieldId); 2554 var er = document.getElementById(errorId); 2555 if (er) { er.textContent = ''; er.classList.remove('show'); } 2556 if (f) { f.removeAttribute('aria-invalid'); } 2557 } 2558 ['koba-ins-email','koba-ins-rgpd'].forEach(function(id){ 2559 var el = document.getElementById(id); 2560 if (el) { 2561 el.addEventListener('input', function(){ clearInsError(id, id + '-error'); }); 2562 el.addEventListener('change', function(){ clearInsError(id, id + '-error'); }); 2563 } 2564 }); 2565 2566 form.addEventListener('submit', function(e) { 2567 e.preventDefault(); 2568 2569 // Reset 2570 message.className = 'koba-form-message'; 2571 message.style.display = 'none'; 2572 clearInsError('koba-ins-email', 'koba-ins-email-error'); 2573 clearInsError('koba-ins-rgpd', 'koba-ins-rgpd-error'); 2574 2575 // Validation accessible (messages par champ + suggestions) 2576 var firstInvalid = null; 2577 function fail(focusEl, errorId, msg) { 2578 var er = document.getElementById(errorId); 2579 if (er) { er.textContent = msg; er.classList.add('show'); } 2580 if (focusEl) { focusEl.setAttribute('aria-invalid', 'true'); if (!firstInvalid) firstInvalid = focusEl; } 2581 } 2582 2583 var emailEl = document.getElementById('koba-ins-email'); 2584 if (!emailEl.value.trim()) { 2585 fail(emailEl, 'koba-ins-email-error', 'Veuillez saisir votre adresse e-mail.'); 2586 } else if (!emailEl.checkValidity()) { 2587 fail(emailEl, 'koba-ins-email-error', "L'adresse e-mail n'est pas valide. Exemple attendu : [email protected]"); 2588 } 2589 2590 var rgpdEl = document.getElementById('koba-ins-rgpd'); 2591 if (rgpdEl && rgpdEl.required && !rgpdEl.checked) { 2592 fail(rgpdEl, 'koba-ins-rgpd-error', 'Vous devez accepter de recevoir la newsletter pour valider votre inscription.'); 2593 } 2594 2595 if (firstInvalid) { 2596 message.className = 'koba-form-message error'; 2597 message.textContent = 'Le formulaire contient des erreurs. Veuillez corriger les champs signales.'; 2598 message.style.display = 'block'; 2599 firstInvalid.focus(); 2600 return; 2601 } 2602 2603 // Disable button 2604 submitBtn.disabled = true; 2605 submitBtn.textContent = 'Vérification...'; 2606 2607 // reCAPTCHA v3 2608 if (recaptchaActive && siteKey && typeof grecaptcha !== 'undefined') { 2609 grecaptcha.ready(function() { 2610 grecaptcha.execute(siteKey, {action: 'inscription'}).then(function(token) { 2611 document.getElementById('recaptcha_token').value = token; 2612 submitForm(); 2613 }).catch(function(error) { 2614 console.error('reCAPTCHA error:', error); 2615 submitForm(); // Soumettre quand même si erreur reCAPTCHA 2616 }); 2617 }); 2618 } else { 2619 submitForm(); 2620 } 2621 }); 2622 2623 function submitForm() { 2624 // Show loading 2625 form.style.display = 'none'; 2626 loading.className = 'koba-form-loading active'; 2627 2628 // Prepare data 2629 var formData = new FormData(form); 2630 formData.append('action', 'koba_inscription_submit'); 2631 2632 // Send 2633 fetch('https://www.oye-plage.fr/wp-admin/admin-ajax.php', { 2634 method: 'POST', 2635 body: formData 2636 }) 2637 .then(function(response) { return response.json(); }) 2638 .then(function(data) { 2639 loading.className = 'koba-form-loading'; 2640 2641 if (data.success) { 2642 success.className = 'koba-form-success active'; 2643 if (data.data && data.data.message) { 2644 document.getElementById('koba-success-text').textContent = data.data.message; 2645 } 2646 try { success.focus(); } catch(e) {} 2647 } else { 2648 form.style.display = 'block'; 2649 submitBtn.disabled = false;
2650 submitBtn.textContent = 'S\'inscrire'; 2651 message.className = 'koba-form-message error'; 2652 message.textContent = data.data || 'Une erreur est survenue.'; 2653 message.style.display = 'block'; 2654 } 2655 }) 2656 .catch(function(error) { 2657 loading.className = 'koba-form-loading'; 2658 form.style.display = 'block'; 2659 submitBtn.disabled = false; 2660 submitBtn.textContent = 'S\'inscrire'; 2661 message.className = 'koba-form-message error'; 2662 message.textContent = 'Erreur de connexion. Veuillez réessayer.'; 2663 message.style.display = 'block'; 2664 }); 2665 } 2666 })(); 2667 </script>
2667 2668 </div> 2669 2670 <div class="modal-footer"> 2671 <button type="button" class="btn btn-secondary" data-bs-dismiss="modal"> 2672 exit 2673 </button> 2674 </div> 2675 2676 </div> 2677 </div> 2678 </div> 2679 2680<main id="main-content" tabindex="-1"> 2681 2682 2683<section class="content-all"> 2684<div class="container mt-5"> 2685 <div class="row"> 2686 <div class="col-md-12"> 2687 <nav class="breadcrumbs"><a href="https://www.oye-plage.fr/">Accueil</a> / <span>Offres d’emploi et stages</span></nav> </div> 2688 <div class="col-md-8 order-1 order-md-2 content-all-right"> 2689 <div class="page-title"> 2690 <h1> 2691 <i class="far fa-dot-circle text-warning mr-2" aria-hidden="true"></i> Offres d’emploi et stages </h1> 2692 </div> 2693 <div id="post-content"> 2694 <style> 2695 .koba-emplois-container { 2696 max-width: 900px; 2697 margin: 0 auto; 2698 } 2699 2700 /* Filtres */ 2701 .koba-emplois-filters { 2702 display: flex; 2703 flex-wrap: wrap; 2704 gap: 10px; 2705 margin-bottom: 30px; 2706 padding: 0; 2707 border-radius: 0; 2708 } 2709 .koba-filter-btn { 2710 display: inline-flex; 2711 align-items: center; 2712 gap: 8px; 2713 padding: 4px 6px; 2714 border: 1px solid var(--koba-secondary); 2715 background: #fff; 2716 font-size: 13px; 2717 font-weight: 600; 2718 color: var(--koba-secondary); 2719 cursor: pointer; 2720 transition: all 0.2s ease; 2721 text-transform: uppercase; 2722 letter-spacing: 0.3px; 2723 } 2724 .koba-filter-btn:hover { 2725 border-color: #999; 2726 transform: translateY(-2px); 2727 } 2728 .koba-filter-btn.active { 2729 } 2730 .koba-filter-btn .count { 2731 display: inline-flex; 2732 align-items: center; 2733 justify-content: center; 2734 min-width: 22px; 2735 height: 22px; 2736 padding: 0 6px; 2737 background: rgba(0,0,0,0.1); 2738 border-radius: 11px; 2739 font-size: 11px; 2740 font-weight: 700; 2741 } 2742 .koba-filter-btn.active .count { 2743 background: rgba(255,255,255,0.3); 2744 } 2745 2746 /* Message vide */ 2747 .koba-emplois-empty { 2748 text-align: center; 2749 padding: 60px 20px; 2750 background: #f8f9fa; 2751 border-radius: 12px; 2752 } 2753 .koba-empty-icon { 2754 font-size: 48px; 2755 margin-bottom: 15px; 2756 } 2757 .koba-emplois-empty h3 { 2758 margin: 0 0 10px; 2759 color: #333; 2760 } 2761 .koba-emplois-empty p { 2762 color: #666; 2763 margin: 0; 2764 } 2765 .koba-no-results { 2766 text-align: center; 2767 padding: 40px 20px; 2768 color: #666; 2769 display: none; 2770 } 2771 2772 /* Carte offre */ 2773 .koba-emploi-item { 2774 background: #fff; 2775 border: 1px solid #e0e0e0; 2776 border-radius: 0; 2777 padding: 25px; 2778 margin-bottom: 15px; 2779 transition: all 0.3s ease; 2780 } 2781 .koba-emploi-item:hover { 2782 box-shadow: 0 5px 20px rgba(0,0,0,0.08); 2783 border-color: #ccc; 2784 } 2785 .koba-emploi-item:last-child { 2786 margin-bottom: 0; 2787 } 2788 .koba-emploi-item.hidden { 2789 display: none; 2790 } 2791 .koba-emploi-header { 2792 display: flex; 2793 justify-content: space-between; 2794 align-items: flex-start; 2795 gap: 15px; 2796 margin-bottom: 12px; 2797 } 2798 .koba-emploi-title { 2799 font-size: 14px; 2800 font-weight: 600; 2801 color: #1a1a2e; 2802 margin: 0; 2803 line-height: 1.4; 2804 flex: 1; 2805 } 2806 .koba-emploi-date { 2807 font-size: 13px; 2808 color: #888; 2809 white-space: nowrap; 2810 } 2811 .koba-emploi-badge-inline { 2812 display: inline-block; 2813 padding: 5px 14px; 2814 border-radius: 15px; 2815 font-size: 11px; 2816 font-weight: 600; 2817 text-transform: uppercase; 2818 letter-spacing: 0.3px; 2819 color: #fff; 2820 margin-bottom: 12px; 2821 } 2822 .koba-emploi-content { 2823 color: #555; 2824 line-height: 1.7; 2825 margin-bottom: 20px; 2826 } 2827 .koba-emploi-content p { 2828 margin: 0 0 10px; 2829 } 2830 .koba-emploi-content p:last-child { 2831 margin-bottom: 0; 2832 } 2833 .koba-emploi-footer { 2834 display: flex; 2835 justify-content: flex-end; 2836 gap: 12px; 2837 padding-top: 15px; 2838 border-top: 1px solid #eee; 2839 flex-wrap: wrap; 2840 } 2841 .koba-emploi-btn { 2842 display: inline-flex; 2843 align-items: center; 2844 gap: 8px; 2845 padding: 4px 14px; 2846 border-radius: 0; 2847 font-size: 13px; 2848 font-weight: 400; 2849 text-decoration: none; 2850 transition: all 0.2s; 2851 border: none; 2852 cursor: pointer; 2853 } 2854 .koba-emploi-btn-pdf { 2855 background: #fff; 2856 color: var(--koba-secondary); 2857 border: 1px solid var(--koba-secondary); 2858 } 2859 .koba-emploi-btn-pdf:hover { 2860 background: #5a6268; 2861 color: #fff; 2862 } 2863 .koba-emploi-btn-postuler { 2864 background: var(--koba-secondary); 2865 color: #fff; 2866 } 2867 .koba-emploi-btn-postuler:hover { 2868 background: var(--koba-secondary, #1a7a94); 2869 color: #fff; 2870 transform: translateY(-2px); 2871 box-shadow: 0 4px 12px rgba(32, 155, 188, 0.3); 2872 } 2873 .koba-emploi-btn svg { 2874 width: 18px; 2875 height: 18px; 2876 } 2877 .modal{ 2878 z-index: 222222; 2879 } 2880 2881 /* Modal customisation */ 2882 #kobaPostulerModal .modal-header { 2883 background: var(--koba-primary, #209bbc); 2884 color: #fff; 2885 border-radius: 0; 2886 } 2887 #kobaPostulerModal .modal-header .btn-close { 2888 filter: brightness(0) invert(1); 2889 } 2890 #kobaPostulerModal .modal-title { 2891 font-weight: 600; 2892 } 2893 #kobaPostulerModal .offre-info { 2894 background: #f8f9fa; 2895 padding: 15px; 2896 border-radius: 8px; 2897 margin-bottom: 20px; 2898 border-left: 4px solid var(--koba-primary, #209bbc); 2899 } 2900 #kobaPostulerModal .offre-info h5 { 2901 margin: 0 0 5px; 2902 color: #333; 2903 } 2904 #kobaPostulerModal .offre-info .badge { 2905 font-size: 11px; 2906 } 2907 #kobaPostulerModal .form-label { 2908 font-weight: 600; 2909 color: #333; 2910 } 2911 #kobaPostulerModal .form-label .required { 2912 color: #dc3545; 2913 } 2914 #kobaPostulerModal .form-text { 2915 font-size: 12px; 2916 } 2917 #kobaPostulerModal .file-input-wrapper { 2918 position: relative; 2919 } 2920 #kobaPostulerModal .file-input-wrapper input[type="file"] { 2921 padding: 10px; 2922 border: 2px dashed #dee2e6; 2923 border-radius: 8px; 2924 background: #f8f9fa; 2925 cursor: pointer; 2926 transition: all 0.2s; 2927 } 2928 #kobaPostulerModal .file-input-wrapper input[type="file"]:hover { 2929 border-color: var(--koba-primary, #209bbc); 2930 background: #e8f4f8; 2931 } 2932 #kobaPostulerModal .btn-submit { 2933 background: var(--koba-primary, #209bbc); 2934 border-color: var(--koba-primary, #209bbc); 2935 padding: 12px 30px; 2936 font-weight: 600; 2937 } 2938 #kobaPostulerModal .btn-submit:hover { 2939 background: var(--koba-secondary, #1a7a94); 2940 border-color: var(--koba-secondary, #1a7a94); 2941 } 2942 #kobaPostulerModal .spinner-border {
2943 width: 20px; 2944 height: 20px; 2945 margin-right: 8px; 2946 } 2947 #kobaPostulerModal .alert { 2948 margin-bottom: 20px; 2949 } 2950 2951 /* Responsive */ 2952 @media (max-width: 768px) { 2953 .koba-emplois-filters { 2954 gap: 8px; 2955 padding: 15px; 2956 } 2957 .koba-filter-btn { 2958 padding: 8px 14px; 2959 font-size: 11px; 2960 } 2961 .koba-emploi-header { 2962 flex-direction: column; 2963 gap: 8px; 2964 } 2965 .koba-emploi-footer { 2966 flex-direction: column; 2967 } 2968 .koba-emploi-btn { 2969 justify-content: center; 2970 width: 100%; 2971 } 2972 } 2973 </style> 2974 2975 <div class="koba-emplois-container"> 2976 <!-- Boutons de filtre --> 2977 <div class="koba-emplois-filters"> 2978 <button type="button" class="koba-filter-btn active" data-filter="all"> 2979 Toutes 2980 </button> 2981 <button type="button" class="koba-filter-btn" data-filter="2" data-color="#27ae60"> 2982 CDI 2983 </button> 2984 </div> 2985 2986 2987 <!-- Liste des offres --> 2988 <div class="koba-emplois-list"> 2989 <article class="koba-emploi-item" data-type="2"> 2990 <div class="koba-emploi-header"> 2991 <h3 class="koba-emploi-title">Plombier Chauffagiste Expérimenté (H/F)</h3> 2992 <span class="koba-emploi-date">Publie le 31/08/2026</span> 2993 </div> 2994 2995 <span class="koba-emploi-badge-inline" style="background-color: #27ae60;"> 2996 CDI </span> 2997 2998 <div class="koba-emploi-content"> 2999 </div> 3000 3001 <div class="koba-emploi-footer"> 3002 <a href="https://www.oye-plage.fr/wp-content/uploads/sites/60/2026/08/CAL-50269-Plombier-chauffagiste-experimente-H_F.pdf" target="_blank" rel="noopener" class="koba-emploi-btn koba-emploi-btn-pdf"> 3003 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3004 <path d="M21 15v4a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2v-4"/> 3005 <polyline points="7 10 12 15 17 10"/> 3006 <line x1="12" y1="15" x2="12" y2="3"/> 3007 </svg> 3008 Télécharger le PDF </a> 3009 3010 <button type="button" class="koba-emploi-btn koba-emploi-btn-postuler" 3011 data-bs-toggle="modal" 3012 data-bs-target="#kobaPostulerModal" 3013 data-emploi-id="6683" 3014 data-emploi-title="Plombier Chauffagiste Expérimenté (H/F)" 3015 data-emploi-type="CDI" 3016 data-emploi-color="#27ae60"> 3017 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3018 <path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/> 3019 <circle cx="8.5" cy="7" r="4"/> 3020 <line x1="20" y1="8" x2="20" y2="14"/> 3021 <line x1="23" y1="11" x2="17" y2="11"/> 3022 </svg> 3023 Postuler 3024 </button> 3025 </div> 3026 </article> 3027 </div> 3028 3029 <div class="koba-no-results"> 3030 <p>Aucune offre pour ce type de contrat.</p> 3031 </div> 3032 3033 3034 <!-- Candidature spontanee --> 3035 <div class="koba-candidature-spontanee"> 3036 <h3 style="margin-bottom: 20px;color:var(--koba-secondary);font-weight: 900;text-transform: uppercase;margin-top: 30px;font-size:16px;"><i class="far fa-dot-circle text-warning mr-2"></i> Candidature spontanée</h3> 3037 <div id="koba-spontanee-alert" class="alert d-none" role="alert"></div> 3038 3039 <form id="koba-spontanee-form" enctype="multipart/form-data">
3040 <input type="hidden" name="emploi_id" value="0"> 3041 <input type="hidden" name="action" value="koba_postuler"> 3042 <input type="hidden" name="nonce" value="457f37b855"> 3043 <input type="hidden" name="candidature_spontanee" value="1"> 3044 <input type="hidden" name="recaptcha_token" id="recaptcha_token_spontanee" value=""> 3045 3046 <div class="row" style="padding: 0;"> 3047 <div class="col-md-6 mb-3"> 3048 <label for="spontanee-nom" class="form-label" style="font-weight:600;">Nom <span style="color:#dc3545;">*</span></label> 3049 <input type="text" class="form-control" id="spontanee-nom" name="nom" required> 3050 </div> 3051 <div class="col-md-6 mb-3"> 3052 <label for="spontanee-prenom" class="form-label" style="font-weight:600;">Prenom <span style="color:#dc3545;">*</span></label> 3053 <input type="text" class="form-control" id="spontanee-prenom" name="prenom" required> 3054 </div> 3055 </div> 3056 3057 <div class="row" style="padding: 0;"> 3058 <div class="col-md-6 mb-3"> 3059 <label for="spontanee-email" class="form-label" style="font-weight:600;">Email <span style="color:#dc3545;">*</span></label> 3060 <input type="email" class="form-control" id="spontanee-email" name="email" required> 3061 <div class="form-text">Vous recevrez une confirmation d'envoi a cette adresse email.</div> 3062 </div> 3063 <div class="col-md-6 mb-3"> 3064 <label for="postuler-telephone" class="form-label" style="font-weight:600;">Telephone</label> 3065 <input type="tel" class="form-control" id="postuler-telephone" name="telephone" placeholder=""> 3066 </div> 3067 </div> 3068 3069 <div class="mb-3"> 3070 <label for="spontanee-cv" class="form-label" style="font-weight:600;">CV <span style="color:#dc3545;">*</span></label> 3071 <div class="file-input-wrapper"> 3072 <input type="file" class="form-control" id="spontanee-cv" name="cv" accept=".pdf" required> 3073 </div> 3074 <div class="form-text">Téléchargez votre CV au format PDF. Taille maximale 5 Mo.</div> 3075 </div> 3076 3077 <div class="mb-3"> 3078 <label for="spontanee-lm" class="form-label" style="font-weight:600;">Lettre de motivation</label> 3079 <div class="file-input-wrapper"> 3080 <input type="file" class="form-control" id="spontanee-lm" name="lm" accept=".pdf"> 3081 </div> 3082 <div class="form-text">Téléchargez votre lettre de motivation au format PDF. Taille maximale 5 Mo.</div> 3083 </div> 3084 3085 <div class="mb-4"> 3086 <label for="spontanee-message" class="form-label" style="font-weight:600;">Message <span style="color:#dc3545;">*</span></label> 3087 <textarea class="form-control" id="spontanee-message" name="message" rows="4" required placeholder="Présentez-vous et expliquez votre motivation..."></textarea> 3088 </div> 3089 3090 3091 <div class="mb-3"> 3092 <small class="text-muted"> 3093 Ce site est protege par reCAPTCHA. 3094 <a href="https://policies.google.com/privacy" target="_blank">Politique de confidentialite</a> et 3095 <a href="https://policies.google.com/terms" target="_blank">Conditions d'utilisation</a> de Google. 3096 </small> 3097 </div> 3098 3099 <button type="button" class="koba-emploi-btn koba-emploi-btn-postuler" id="koba-submit-spontanee" style="width:100%;justify-content:center;"> 3100 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="width:18px;height:18px;">
3101 <line x1="22" y1="2" x2="11" y2="13"/> 3102 <polygon points="22 2 15 22 11 13 2 9 22 2"/> 3103 </svg> 3104 Envoyer ma candidature spontanee 3105 </button> 3106 </form> 3107 </div> 3108 </div> 3109 3110 <!-- Modal Bootstrap --> 3111 <div class="modal fade" id="kobaPostulerModal" tabindex="-1" aria-labelledby="kobaPostulerModalLabel" aria-hidden="true"> 3112 <div class="modal-dialog modal-lg"> 3113 <div class="modal-content"> 3114 <div class="modal-header"> 3115 <h5 class="modal-title" id="kobaPostulerModalLabel"> 3116 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="width:24px;height:24px;margin-right:10px;vertical-align:middle;"> 3117 <path d="M16 21v-2a4 4 0 0 0-4-4H5a4 4 0 0 0-4 4v2"/> 3118 <circle cx="8.5" cy="7" r="4"/> 3119 <line x1="20" y1="8" x2="20" y2="14"/> 3120 <line x1="23" y1="11" x2="17" y2="11"/> 3121 </svg> 3122 Postuler a cette offre 3123 </h5> 3124 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Fermer"></button> 3125 </div> 3126 <div class="modal-body"> 3127 <!-- Info offre --> 3128 <div class="offre-info"> 3129 <h5 id="modal-offre-title"></h5> 3130 <span class="badge" id="modal-offre-type"></span> 3131 </div> 3132 3133 <!-- Alertes --> 3134 <div id="koba-form-alert" class="alert d-none" role="alert"></div> 3135 3136 <!-- Formulaire --> 3137 <form id="koba-postuler-form" enctype="multipart/form-data"> 3138 <input type="hidden" name="emploi_id" id="form-emploi-id" value=""> 3139 <input type="hidden" name="action" value="koba_postuler"> 3140 <input type="hidden" name="nonce" value="457f37b855"> 3141 <input type="hidden" name="recaptcha_token" id="recaptcha_token" value=""> 3142 3143 <div class="row" style="padding: 0;"> 3144 <div class="col-md-6 mb-3"> 3145 <label for="postuler-nom" class="form-label">Nom <span class="required">*</span></label> 3146 <input type="text" class="form-control" id="postuler-nom" name="nom" required> 3147 </div> 3148 <div class="col-md-6 mb-3"> 3149 <label for="postuler-prenom" class="form-label">Prenom <span class="required">*</span></label> 3150 <input type="text" class="form-control" id="postuler-prenom" name="prenom" required> 3151 </div> 3152 </div> 3153 3154 <div class="row" style="padding: 0;"> 3155 <div class="col-md-6 mb-3"> 3156 <label for="postuler-email" class="form-label">Email <span class="required">*</span></label> 3157 <input type="email" class="form-control" id="postuler-email" name="email" required> 3158 <div class="form-text">Vous recevrez une confirmation d'envoi a cette adresse email.</div> 3159 </div> 3160 <div class="col-md-6 mb-3"> 3161 <label for="spontanee-telephone" class="form-label" style="font-weight:600;">Telephone</label> 3162 <input type="tel" class="form-control" id="spontanee-telephone" name="telephone" placeholder=""> 3163 </div> 3164 </div> 3165 3166 <div class="mb-3"> 3167 <label for="postuler-cv" class="form-label">CV <span class="required">*</span></label> 3168 <div class="file-input-wrapper"> 3169 <input type="file" class="form-control" id="postuler-cv" name="cv" accept=".pdf" required> 3170 </div> 3171 <div class="form-text">Téléchargez votre CV au format PDF. Taille maximale 5 Mo.</div> 3172 </div> 3173 3174 <div class="mb-3"> 3175 <label for="postuler-lm" class="form-label">Lettre de motivation</label> 3176 <div class="file-input-wrapper"> 3177 <input type="file" class="form-control" id="postuler-lm" name="lm" accept=".pdf"> 3178 </div> 3179 <div class="form-text">Téléchargez votre lettre de motivation au format PDF. Taille maximale 5 Mo.</div> 3180 </div> 3181 3182 <div class="mb-4"> 3183 <label for="postuler-message" class="form-label">Message <span class="required">*</span></label> 3184 <textarea class="form-control" id="postuler-message" name="message" rows="4" required placeholder="Présentez-vous et expliquez votre motivation..."></textarea> 3185 </div> 3186 3187 <div class="mb-3"> 3188 <small class="text-muted"> 3189 Ce site est protege par reCAPTCHA. 3190 <a href="https://policies.google.com/privacy" target="_blank">Politique de confidentialite</a> et 3191 <a href="https://policies.google.com/terms" target="_blank">Conditions d'utilisation</a> de Google. 3192 </small> 3193 </div> 3194 </form> 3195 </div> 3196 <div class="modal-footer"> 3197 <button type="button" class="btn btn-secondary" data-bs-dismiss="modal">Annuler</button> 3198 <button type="button" class="btn btn-primary btn-submit" id="koba-submit-candidature"> 3199 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" style="width:18px;height:18px;margin-right:8px;">
3200 <line x1="22" y1="2" x2="11" y2="13"/> 3201 <polygon points="22 2 15 22 11 13 2 9 22 2"/> 3202 </svg> 3203 Envoyer ma candidature 3204 </button> 3205 </div> 3206 </div> 3207 </div> 3208 </div>
vendor: 130 bytes, lines 3208-3210
3208 3209 3210 <script type="text/plain" data-hob-service="recaptcha" data-hob-src="https://www.google.com/recaptcha/api.js?render=
32106Lc6WU8sAAAAAEzRr3GP0Ep3U4f6-uBl-eA9-F_W
vendor: 25 bytes, lines 3210-3212
3210"></script> 3211 3212
3212<script> 3213 document.addEventListener('DOMContentLoaded', function() { 3214 // Filtres 3215 var filterBtns = document.querySelectorAll('.koba-filter-btn'); 3216 var emploiItems = document.querySelectorAll('.koba-emploi-item'); 3217 var noResults = document.querySelector('.koba-no-results'); 3218 3219 filterBtns.forEach(function(btn) { 3220 btn.addEventListener('click', function() { 3221 var filter = this.getAttribute('data-filter'); 3222 var color = this.getAttribute('data-color'); 3223 3224 filterBtns.forEach(function(b) { 3225 b.classList.remove('active'); 3226 b.style.backgroundColor = ''; 3227 b.style.borderColor = '#e0e0e0'; 3228 b.style.color = '#555'; 3229 }); 3230 3231 this.classList.add('active'); 3232 if (filter === 'all') { 3233 this.style.backgroundColor = '#333'; 3234 this.style.borderColor = '#333'; 3235 } else { 3236 this.style.backgroundColor = color; 3237 this.style.borderColor = color; 3238 } 3239 this.style.color = '#fff'; 3240 3241 var visibleCount = 0; 3242 emploiItems.forEach(function(item) { 3243 if (filter === 'all' || item.getAttribute('data-type') === filter) { 3244 item.classList.remove('hidden'); 3245 visibleCount++; 3246 } else { 3247 item.classList.add('hidden'); 3248 } 3249 }); 3250 3251 if (noResults) { 3252 noResults.style.display = visibleCount === 0 ? 'block' : 'none'; 3253 } 3254 }); 3255 }); 3256 3257 // Modal - remplir les infos de l'offre 3258 var postulerModal = document.getElementById('kobaPostulerModal'); 3259 if (postulerModal) { 3260 postulerModal.addEventListener('show.bs.modal', function(event) { 3261 var button = event.relatedTarget; 3262 var emploiId = button.getAttribute('data-emploi-id'); 3263 var emploiTitle = button.getAttribute('data-emploi-title'); 3264 var emploiType = button.getAttribute('data-emploi-type'); 3265 var emploiColor = button.getAttribute('data-emploi-color'); 3266 3267 document.getElementById('form-emploi-id').value = emploiId; 3268 document.getElementById('modal-offre-title').textContent = emploiTitle; 3269 3270 var typeBadge = document.getElementById('modal-offre-type'); 3271 typeBadge.textContent = emploiType; 3272 typeBadge.style.backgroundColor = emploiColor; 3273 3274 // Reset form 3275 document.getElementById('koba-postuler-form').reset(); 3276 document.getElementById('koba-form-alert').classList.add('d-none'); 3277 }); 3278 } 3279 3280 // Soumission du formulaire 3281 var submitBtn = document.getElementById('koba-submit-candidature'); 3282 if (submitBtn) { 3283 submitBtn.addEventListener('click', function() { 3284 var form = document.getElementById('koba-postuler-form'); 3285 var alertBox = document.getElementById('koba-form-alert'); 3286 3287 // Validation basique 3288 if (!form.checkValidity()) { 3289 form.reportValidity(); 3290 return; 3291 } 3292 3293 // Verifier la taille des fichiers 3294 var cvInput = document.getElementById('postuler-cv'); 3295 var lmInput = document.getElementById('postuler-lm'); 3296 var maxSize = 5 * 1024 * 1024; // 5 Mo 3297 3298 if (cvInput.files[0] && cvInput.files[0].size > maxSize) { 3299 showAlert('Le CV ne doit pas depasser 5 Mo.', 'danger'); 3300 return; 3301 } 3302 if (lmInput.files[0] && lmInput.files[0].size > maxSize) { 3303 showAlert('La lettre de motivation ne doit pas depasser 5 Mo.', 'danger'); 3304 return; 3305 } 3306 3307 // Desactiver le bouton 3308 var originalText = submitBtn.innerHTML; 3309 submitBtn.disabled = true; 3310 submitBtn.innerHTML = '<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> Envoi en cours...'; 3311 3312 // Fonction d'envoi 3313 function sendForm() { 3314 var formData = new FormData(form); 3315 3316 fetch('https://www.oye-plage.fr/wp-admin/admin-ajax.php', { 3317 method: 'POST', 3318 body: formData 3319 }) 3320 .then(function(response) { return response.json(); }) 3321 .then(function(data) { 3322 if (data.success) { 3323 showAlert(data.data.message, 'success'); 3324 form.reset(); 3325 setTimeout(function() { 3326 var modal = bootstrap.Modal.getInstance(postulerModal); 3327 modal.hide(); 3328 }, 3000); 3329 } else { 3330 showAlert(data.data.message || 'Une erreur est survenue.', 'danger'); 3331 } 3332 }) 3333 .catch(function(error) { 3334 showAlert('Erreur de connexion. Veuillez réessayer.', 'danger'); 3335 }) 3336 .finally(function() { 3337 submitBtn.disabled = false;
3338 submitBtn.innerHTML = originalText; 3339 }); 3340 } 3341 3342 // reCAPTCHA v3 3343 grecaptcha.ready(function() { 3344 grecaptcha.execute('6Lc6WU8sAAAAAEzRr3GP0Ep3U4f6-uBl-eA9-F_W', {action: 'postuler'}).then(function(token) { 3345 document.getElementById('recaptcha_token').value = token; 3346 sendForm(); 3347 }); 3348 }); 3349 }); 3350 } 3351 3352 function showAlert(message, type) { 3353 var alertBox = document.getElementById('koba-form-alert'); 3354 alertBox.className = 'alert alert-' + type; 3355 alertBox.textContent = message; 3356 alertBox.classList.remove('d-none'); 3357 alertBox.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); 3358 } 3359 // Candidature spontanee 3360 var submitSpontanee = document.getElementById('koba-submit-spontanee'); 3361 if (submitSpontanee) { 3362 submitSpontanee.addEventListener('click', function() { 3363 var form = document.getElementById('koba-spontanee-form'); 3364 var alertBox = document.getElementById('koba-spontanee-alert'); 3365 3366 if (!form.checkValidity()) { 3367 form.reportValidity(); 3368 return; 3369 } 3370 3371 var cvInput = document.getElementById('spontanee-cv'); 3372 var lmInput = document.getElementById('spontanee-lm'); 3373 var maxSize = 5 * 1024 * 1024; 3374 3375 if (cvInput.files[0] && cvInput.files[0].size > maxSize) { 3376 showSpontaneeAlert('Le CV ne doit pas depasser 5 Mo.', 'danger'); 3377 return; 3378 } 3379 if (lmInput.files[0] && lmInput.files[0].size > maxSize) { 3380 showSpontaneeAlert('La lettre de motivation ne doit pas depasser 5 Mo.', 'danger'); 3381 return; 3382 } 3383 3384 var originalText = submitSpontanee.innerHTML; 3385 submitSpontanee.disabled = true; 3386 submitSpontanee.innerHTML = '<span class="spinner-border spinner-border-sm" role="status" aria-hidden="true"></span> Envoi en cours...'; 3387 3388 function sendSpontaneeForm() { 3389 var formData = new FormData(form); 3390 3391 fetch('https://www.oye-plage.fr/wp-admin/admin-ajax.php', { 3392 method: 'POST', 3393 body: formData 3394 }) 3395 .then(function(response) { return response.json(); }) 3396 .then(function(data) { 3397 if (data.success) { 3398 showSpontaneeAlert(data.data.message, 'success'); 3399 form.reset(); 3400 } else { 3401 showSpontaneeAlert(data.data.message || 'Une erreur est survenue.', 'danger'); 3402 } 3403 }) 3404 .catch(function(error) { 3405 showSpontaneeAlert('Erreur de connexion. Veuillez réessayer.', 'danger'); 3406 }) 3407 .finally(function() { 3408 submitSpontanee.disabled = false; 3409 submitSpontanee.innerHTML = originalText; 3410 }); 3411 } 3412 3413 grecaptcha.ready(function() { 3414 grecaptcha.execute('6Lc6WU8sAAAAAEzRr3GP0Ep3U4f6-uBl-eA9-F_W', {action: 'postuler'}).then(function(token) { 3415 document.getElementById('recaptcha_token_spontanee').value = token; 3416 sendSpontaneeForm(); 3417 }); 3418 }); 3419 }); 3420 } 3421 3422 function showSpontaneeAlert(message, type) { 3423 var alertBox = document.getElementById('koba-spontanee-alert'); 3424 alertBox.className = 'alert alert-' + type; 3425 alertBox.textContent = message; 3426 alertBox.classList.remove('d-none'); 3427 alertBox.scrollIntoView({ behavior: 'smooth', block: 'nearest' }); 3428 } 3429 }); 3430 </script>
3430 3431 3432 </div> 3433 </div> 3434 <div class="col-md-4 order-2 order-md-1 operating"> 3435 <div class="operating-info"> 3436 <h2><i class="far fa-dot-circle text-warning mr-2" aria-hidden="true"></i> Accueil</h2> 3437 <p>Nâhésitez pas à nous contacter !</p> 3438 <p>87 Place de l'Union européenne</p> 3439 <p>62215 OYE-PLAGE</p> 3440 </div> 3441 <div class="operating-status"> 3442 <div class="koba-opening-status koba-style-badge koba-status-closed"><span class="koba-status-text">Actuellement fermé</span><span class="koba-status-icon"><i class="fa-regular fa-circle-xmark" aria-hidden="true"></i></span><span class="koba-status-next">Ouvre lundi à 08:45</span></div> </div> 3443 <div class="operating-times"> 3444 <h2><i class="far fa-dot-circle text-warning mr-2" aria-hidden="true"></i> Horaires d'ouverture</h2> 3445 <table class="koba-horaires-table"><tbody><tr><td class="koba-jour">Lundi</td><td>08:45 à 12:00, 13:45 à 17:00</td></tr><tr><td class="koba-jour">Mardi</td><td>08:45 à 12:00, 13:45 à 17:00</td></tr><tr><td class="koba-jour">Mercredi</td><td>08:45 à 12:00, 13:45 à 17:00</td></tr><tr><td class="koba-jour">Jeudi</td><td>08:45 à 12:00, 13:45 à 17:00</td></tr><tr><td class="koba-jour">Vendredi</td><td>08:45 à 12:00, 13:45 à 17:00</td></tr><tr class="koba-today"><td class="koba-jour">Samedi <span class="koba-badge-today">Aujourd'hui</span></td><td class="koba-closed">Fermé</td></tr><tr><td class="koba-jour">Dimanche</td><td class="koba-closed">Fermé</td></tr></tbody></table> </div> 3446 <div class="operating-contact"> 3447 <h2><i class="far fa-dot-circle text-warning mr-2" aria-hidden="true"></i> Contact</h2> 3448 <p><b>Téléphone</b></p> 3449 <p><a href="tel:0321464343">0321464343</a></p> 3450 <p><b>Email</b></p> 3451 <p><a href="mailto:[email protected]">[email protected]</a></p> 3452 </div> 3453 </div> 3454 </div> 3455</div> 3456 3457 </section> 3458 3459 3460</main> 3461 3462<footer class="" role="contentinfo"> 3463 <div class="container px-3 pt-3 px-md-5 pt-md-5 pb-5"> 3464 <div class="row mb-3 mb-md-4"> 3465 3466 <!-- LOGO --> 3467 <div class="col-4 col-md-3 mb-3 mb-md-0"> 3468 <a href="https://www.oye-plage.fr/" class="d-inline-flex align-items-center text-light text-decoration-none"> 3469 <img src="https://www.oye-plage.fr/wp-content/uploads/sites/60/2026/07/LogoSite-2.png" alt="MAIRIE DE OYE PLAGE - Accueil" class="footer-logo"> 3470 </a> 3471 </div> 3472 <div class="col-md-8"> 3473 <div class="koba-social-links"><a href="https://www.facebook.com/Ville-dOye-Plage-190177158090352/" target="_blank" rel="noopener" aria-label="Facebook"><svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M24 12.073c0-6.627-5.373-12-12-12s-12 5.373-12 12c0 5.99 4.388 10.954 10.125 11.854v-8.385H7.078v-3.47h3.047V9.43c0-3.007 1.792-4.669 4.533-4.669 1.312 0 2.686.235 2.686.235v2.953H15.83c-1.491 0-1.956.925-1.956 1.874v2.25h3.328l-.532 3.47h-2.796v8.385C19.612 23.027 24 18.062 24 12.073z"/></svg></a><a href="https://www.instagram.com/villedoyeplage" target="_blank" rel="noopener" aria-label="Instagram"><svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M12 2.163c3.204 0 3.584.012 4.85.07 3.252.148 4.771 1.691 4.919 4.919.058 1.265.069 1.645.069 4.849 0 3.205-.012 3.584-.069 4.849-.149 3.225-1.664 4.771-4.919 4.919-1.266.058-1.644.07-4.85.07-3.204 0-3.584-.012-4.849-.07-3.26-.149-4.771-1.699-4.919-4.92-.058-1.265-.07-1.644-.07-4.849 0-3.204.013-3.583.07-4.849.149-3.227 1.664-4.771 4.919-4.919 1.266-.057 1.645-.069 4.849-.069zm0-2.163c-3.259 0-3.667.014-4.947.072-4.358.2-6.78 2.618-6.98 6.98-.059 1.281-.073 1.689-.073 4.948 0 3.259.014 3.668.072 4.948.2 4.358 2.618 6.78 6.98 6.98 1.281.058 1.689.072 4.948.072 3.259 0 3.668-.014 4.948-.072 4.354-.2 6.782-2.618 6.979-6.98.059-1.28.073-1.689.073-4.948 0-3.259-.014-3.667-.072-4.947-.196-4.354-2.617-6.78-6.979-6.98-1.281-.059-1.69-.073-4.949-.073zm0 5.838c-3.403 0-6.162 2.759-6.162 6.162s2.759 6.163 6.162 6.163 6.162-2.759 6.162-6.163c0-3.403-2.759-6.162-6.162-6.162zm0 10.162c-2.209 0-4-1.79-4-4 0-2.209 1.791-4 4-4s4 1.791 4 4c0 2.21-1.791 4-4 4zm6.406-11.845c-.796 0-1.441.645-1.441 1.44s.645 1.44 1.441 1.44c.795 0 1.439-.645 1.439-1.44s-.644-1.44-1.439-1.44z"/></svg></a><a href="https://www.youtube.com/channel/UC1_Jfy1vzYUM4oJ4U2IohHw" target="_blank" rel="noopener" aria-label="Youtube"><svg width="24" height="24" viewBox="0 0 24 24" fill="currentColor"><path d="M23.498 6.186a3.016 3.016 0 0 0-2.122-2.136C19.505 3.545 12 3.545 12 3.545s-7.505 0-9.377.505A3.017 3.017 0 0 0 .502 6.186C0 8.07 0 12 0 12s0 3.93.502 5.814a3.016 3.016 0 0 0 2.122 2.136c1.871.505 9.376.505 9.376.505s7.505 0 9.377-.505a3.015 3.015 0 0 0 2.122-2.136C24 15.93 24 12 24 12s0-3.93-.502-5.814zM9.545 15.568V8.432L15.818 12l-6.273 3.568z"/></svg></a></div> </div> 3474 <div class="col-12 col-md-3 mb-3"> 3475 <div class="footer-address"> 3476 <p></p> 3477 <p> 3478 87 Place de l'Union européenne<br> 3479 62215 OYE-PLAGE<br> 3480 Tél : <a href="tel:0321464343">0321464343</a> </p> 3481 </div> 3482 </div> 3483 3484 <div class="col-12 col-md-9"> 3485 <ul id="menu-menu-principal-1" class="footer-menu"><li><a href="#">Actes réglementaires</a> 3486<ul> 3487<li><a href="https://www.oye-plage.fr/kiosks/?annee=&mois=&categorie=comptes-rendus-cm">Comptes rendus des Conseils Municipaux</a></li> 3488<li><a href="https://www.oye-plage.fr/articles/decisions/">Décisions</a> 3489<ul> 3490<li><a href="https://www.oye-plage.fr/articles/decisions/">Décisions</a></li> 3491<li><a href="https://www.oye-plage.fr/articles/decisions-d-urbanisme-e647a662-44ce-42a7-96d0-de091402adf8/">Décisions d'urbanisme</a></li> 3492</ul> 3493</li> 3494<li><a href="https://www.oye-plage.fr/articles/arretes-du-maire/">Arrêtés du Maire</a> 3495<ul> 3496<li><a href="https://www.oye-plage.fr/articles/annee-2026/">Année 2026</a></li> 3497<li><a href="https://www.oye-plage.fr/articles/arretes-du-maire-2025/">Année 2025</a></li> 3498<li><a href="https://www.oye-plage.fr/articles/2024/">Année 2024</a></li> 3499<li><a href="https://www.oye-plage.fr/articles/arretes-du-maire/">Année 2023</a></li> 3500<li><a href="https://www.oye-plage.fr/articles/arretes-municipaux-permanents/">Arrêtés Municipaux – Permanents</a></li> 3501</ul> 3502</li> 3503<li><a href="https://www.oye-plage.fr/articles/arretes-prefectoraux/">Arrêtés Préfectoraux</a></li> 3504<li><a href="https://www.oye-plage.fr/articles/arretes-departementaux/">Arrêtés Départementaux</a></li> 3505</ul> 3506</li> 3507<li><a href="#">Découvrir Oye-Plage</a> 3508<ul> 3509<li><a href="https://www.oye-plage.fr/articles/l-histoire-de-la-commune-d-oye-plage/">L'histoire d'Oye-Plage</a></li> 3510<li><a href="https://www.oye-plage.fr/articles/le-patrimoine-de-la-commune/">
3510Le patrimoine</a></li> 3511<li><a href="https://www.oye-plage.fr/articles/oye-plage-9-kilometres-de-plage/">Une plage de neuf kilomètres de sable fin</a></li> 3512<li><a href="https://www.oye-plage.fr/articles/a-la-decouverte-du-platier-d-oye/">La Réserve naturelle - Le Platier d'Oye</a></li> 3513<li><a href="https://www.oye-plage.fr/articles/randonnees/">Les randonnées</a></li> 3514<li><a href="https://www.oye-plage.fr/articles/locationd-de-vacances-a-oye-plage/">Les hébergements touristiques</a></li> 3515<li><a href="https://www.oye-plage.fr/articles/le-guide-anserien-2bab4491-1c48-4b5a-9995-4c4ca59db2fa/">Le guide Ansérien</a></li> 3516</ul> 3517</li> 3518<li><a href="#">Ma municipalité</a> 3519<ul> 3520<li><a href="https://www.oye-plage.fr/articles/vos-elus/">Le Conseil Municipal</a></li> 3521<li><a href="https://www.oye-plage.fr/articles/delegues/">Délégués auprès des organismes extérieurs</a></li> 3522<li><a href="https://www.oye-plage.fr/articles/commission-d-appel-d-offres/">Commission d'appel d'offres</a></li> 3523<li><a href="https://www.oye-plage.fr/articles/commissions-municipales/">Commissions Municipales</a></li> 3524<li><a href="https://www.oye-plage.fr/articles/tribune-libre/">Tribune Libre</a></li> 3525<li><a href="https://www.oye-plage.fr/articles/le-conseil-des-anciens/">Le Conseil des Anciens</a></li> 3526<li><a href="https://www.oye-plage.fr/articles/le-conseil-municipal-des-jeunes/">Le Conseil Municipal des Jeunes</a></li> 3527</ul> 3528</li> 3529<li><a href="#">Oye-Plage pratique</a> 3530<ul> 3531<li><a href="https://www.oye-plage.fr/kiosks/?annee=&mois=&categorie=gazette-anserienne">La Gazette Ansérienne</a></li> 3532<li><a href="https://www.oye-plage.fr/articles/les-transports-755a2237-3587-494d-a4d2-aa0969cfc0d3/">Les transports</a></li> 3533<li><a href="https://www.oye-plage.fr/emploi/">Emploi</a></li> 3534<li><a href="https://www.oye-plage.fr/articles">Les associations</a> 3535<ul> 3536<li><a href="https://www.oye-plage.fr/articles/calendrier-des-fetes-2024/">Le calendrier des fêtes</a></li> 3537<li><a href="https://www.oye-plage.fr/annuaire/associations-7f258db0-7b5a-4982-a596-3991a6e3e7df">Annuaire des associations</a></li> 3538<li><a href="https://www.oye-plage.fr/articles/subvention/">Dossier de demande de subvention par une association</a></li> 3539<li><a href="https://www.oye-plage.fr/articles/organiser-une-manifestation/">Organiser une manifestation</a></li> 3540</ul> 3541</li> 3542<li><a href="https://www.oye-plage.fr/articles/location-salle/">Salles des fêtes en location</a></li> 3543<li><a href="https://www.oye-plage.fr/articles/mediatheque/">La médiathèque Simone-Veil</a></li> 3544<li><a href="https://www.oye-plage.fr/articles/ecole-de-musique/">L'école de musique</a></li> 3545<li><a href="https://www.oye-plage.fr/articles/seniors/">Les séniors</a></li> 3546<li><a href="https://www.oye-plage.fr/articles/commerces/">Commerces</a></li> 3547<li><a href="https://www.oye-plage.fr/articles/permanences-services-logement-jeunes/">Permanence Maison France Services</a></li> 3548<li><a href="https://www.oye-plage.fr/articles/permanences/">Autres permanences</a></li> 3549<li><a href="https://www.oye-plage.fr/articles/urgence-et-sante/">Urgences et santé</a></li> 3550<li><a href="https://www.oye-plage.fr/articles/poubelles-dechets-ramassage/">Vos déchets</a></li> 3551</ul> 3552</li> 3553<li><a href="https://www.oye-plage.fr/articles">Enfance & Jeunesse</a> 3554<ul> 3555<li><a href="https://www.oye-plage.fr/articles/ecoles-et-college/">Les écoles et le collège</a></li> 3556<li><a href="https://www.oye-plage.fr/articles/service-scolaire-7e719ab2-e76b-4a6b-ab9b-7877b2f8b319/">Le service scolaire</a></li> 3557<li><a href="https://www.oye-plage.fr/articles/accueil-de-loisirs/">L'accueil de loisirs et la garderie</a></li> 3558<li><a href="https://www.oye-plage.fr/articles/caj/">Le Centre d'Animation des Jeunes</a></li> 3559<li><a href="https://www.oye-plage.fr/actualites/aide-financiere-aux-etudiants/">Aide Financière aux Etudiants</a></li> 3560<li><a href="https://www.oye-plage.fr/articles/toutes-les-demarches-pour-vos-enfants-avec-le-compte-famille/">Accès à votre compte famille</a></li> 3561<li><a href="https://www.oye-plage.fr/articles/le-pass-jeunesse/">Le Pass Jeunesse</a></li> 3562<li><a href="https://www.oye-plage.fr/articles/bafa-bafd-citoyen/">BAFA/BAFD Citoyen</a></li> 3563<li><a href="https://www.oye-plage.fr/actualites/formation-nageur-sauveteur">Formation Nageur Sauveteur</a></li> 3564<li><a href="https://www.oye-plage.fr/articles/les-assistantes-maternelles/">Les assistantes maternelles</a></li> 3565</ul> 3566</li> 3567<li><a href="#">Démarches & E-service</a> 3568<ul> 3569<li><a href="https://www.oye-plage.fr/articles/cimetiere/">Cimetière</a></li> 3570<li><a href="https://www.oye-plage.fr/articles/passeport/">Carte Nationale d'Identité et Passeport</a></li> 3571<li><a href="https://www.oye-plage.fr/services/listes-electorales/">Inscription sur les listes électorales</a></li> 3572<li><a href="https://www.oye-plage.fr/services/demande-de-logement-social/">Demande de logement social à Oye-Plage</a></li> 3573<li><a href="https://www.oye-plage.fr/services/pacs-d7be9ec7-12a2-4be3-a977-eece7bea7ec4/">Se PACSer</a></li> 3574<li><a href="https://www.oye-plage.fr/services/recensement-citoyen-journee-defense-et-citoyennete/">Journée Défense et Citoyenneté</a></li> 3575<li><a href="https://www.oye-plage.fr/services/systeme-de-tele-alerte/">Système de Télé-Alerte</a></li> 3576<li><a href="https://www.oye-plage.fr/services/population/">Communication-Emménagement/Déménagement</a></li> 3577<li><a href="https://www.oye-plage.fr/services/medaille-du-travail/">Médaille du Travail</a></li> 3578<li><a href="https://www.oye-plage.fr/services/demande-d-actes/">Demande dâactes</a></li> 3579<li><a href="https://www.oye-plage.fr/services/urbanisme/">Urbanisme</a></li> 3580<li><a href="https://www.oye-plage.fr/services/operation-tranquillite-vacances/">Opération Tranquillité Vacances</a></li> 3581<li><a href="https://www.oye-plage.fr/services/voisins-vigilants/">Voisins Vigilants</a></li> 3582<li><a href="https://www.oye-plage.fr/articles/tranquilite-chantier/">Tranquillité chantier</a></li> 3583<li><a href="https://www.service-public.fr/particuliers/vosdroits/N19805">Famille</a></li> 3584<li><a href="https://www.service-public.fr/particuliers/vosdroits/N19812">Transports</a></li> 3585<li><a href="https://www.service-public.fr/particuliers/vosdroits/N19807">Justice</a></li> 3586<li><a href="https://www.service-public.fr/particuliers/vosdroits/N19811">Social - Santé</a></li> 3587<li><a href="https://www.service-public.fr/particuliers/vosdroits/N19806">Travail</a></li> 3588<li><a href="https://www.service-public.fr/particuliers/vosdroits/N19808">Logement</a></li> 3589<li><a href="https://www.service-public.fr/particuliers/vosdroits/N19803">Argent</a></li> 3590<li><a href="https://www.service-public.fr/particuliers/vosdroits/N19804">Ãtranger</a></li> 3591<li><a href="https://www.service-public.fr/particuliers/vosdroits/N19809">Loisirs</a></li> 3592</ul> 3593</li> 3594<li><a href="https://www.oye-plage.fr/articles/enquete-publique-reacteurs-2-et-4-centre-nucleaire-de-production-d-electricite-de-gravelines/">Enquêtes publiques et publications légales</a> 3595<ul> 3596<li><a href="https://www.oye-plage.fr/articles/bilan-du-schema-de-coherence-territoriale-analyse-des-resultats-de-l-application-de-2020-a-2026/">Bilan du schéma de cohérence territoriale- analyse des résultats de l'application de 2020 à 2026</a></li> 3597<li><a href="https://www.oye-plage.fr/articles/consultation-du-public-projet-de-relevage-du-cable-sous-marin-sea-me-we3-situe-dans-les-eaux-territoriales-des-hauts-de-france/">Consultation du public – Projet de relevage du câble sous-marin SEA-ME-WE3 situé dans les eaux territoriales des Hauts-de-France</a></li> 3598<li><a href="https://www.oye-plage.fr/articles/permis-damenager-eden62/">Permis d’Aménager – Eden62</a></li> 3599</ul> 3600</li> 3601</ul> </div> 3602 </div> 3603 </div> 3604</footer> 3605<div class="footer-bottom"> 3606 <div class="container-fluid"> 3607 <div class="row"> 3608 <div class="col-12 col-md-6 mb-3 mb-md-0 footer-bottom-left"> 3609 <ul class="koba-menu-list"> 3610 <li class=""> 3611 <a href="https://www.oye-plage.fr/mentions-legales/">Mentions légales</a> 3612 </li> 3613 <li class=""> 3614 <a href="https://www.oye-plage.fr/accessibilite/">Accessibilité</a> 3615 </li> 3616 <li class=""> 3617 <a href="https://www.oye-plage.fr/plan-du-site/">Plan du site</a> 3618 </li> 3619 <li class=""> 3620 <a href="https://www.oye-plage.fr/contact/">NOUS CONTACTER</a> 3621 </li> 3622 <li class="">
3623 <span>© 2026 </span> 3624 </li> 3625 </ul> 3626 </div> 3627 <div class="col-12 col-md-6 mb-3 mb-md-0 justify-content-end footer-bottom-right"> 3628 <div class="text-white" bis_skin_checked="1"> 3629 <p><a href="https://www.site-internet-mairie.com/" target="_blank" rel="noopener" title="Création site internet mairie partenaire de Koba Civique pour la numérisation des mairies et collectivités territoriales. Un service du groupe KobaciviqueByHob, experts Wordpress, Joomla et PrestaShop. Numéro un des sites internet pour les communes et villes.">Création Site Mairie</a> par <a href="https://www.koba-civique.com/" target="_blank" rel="noopener" title="Création site internet mairie. Koba civique solution numéro un du marché pour les sites internet des communes et villes en France">KobaciviqueByHob</a></p> 3630 </div> 3631 </div> 3632 </div> 3633 </div> 3634</div> 3635
3635<script> 3636 if ('serviceWorker' in navigator) { 3637 navigator.serviceWorker.register('https://www.oye-plage.fr/koba-sw.js', { scope: '/' }) 3638 .catch(function(err) { console.log('SW error:', err); }); 3639 } 3640 if (window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone === true) { 3641 document.cookie = 'koba_pwa=1; path=/; max-age=2592000; SameSite=Lax'; 3642 } 3643 </script>
3643 3644
3644<script type="speculationrules"> 3645{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/sites/60/*","/wp-content/*","/wp-content/plugins/*","/wp-content/themes/hob-koba-civique/*","/*\\?(.+)"]}},{"not":{"selector_matches":"a[rel~=\"nofollow\"]"}},{"not":{"selector_matches":".no-prefetch, .no-prefetch a"}}]},"eagerness":"conservative"}]} 3646</script>
3646 3647
3647<script> 3648 (function() { 3649 var searchInput = document.getElementById('koba-search-input'); 3650 var searchOverlay = document.getElementById('koba-search-overlay'); 3651 var searchClose = document.getElementById('koba-search-close'); 3652 var searchTimeout = null; 3653 var ajaxurl = 'https://www.oye-plage.fr/wp-admin/admin-ajax.php'; 3654 3655 if (!searchInput || !searchOverlay) return; 3656 3657 // Saisie dans le champ 3658 searchInput.addEventListener('input', function() { 3659 var query = this.value.trim(); 3660 3661 if (searchTimeout) clearTimeout(searchTimeout); 3662 3663 // Masquer si vide 3664 if (query.length < 1) { 3665 searchOverlay.classList.remove('active'); 3666 searchOverlay.innerHTML = ''; 3667 return; 3668 } 3669 3670 // Afficher overlay avec loading 3671 searchOverlay.classList.add('active'); 3672 searchOverlay.innerHTML = '<div class="koba-search-overlay-inner">' + 3673 '<div class="koba-search-loading">' + 3674 '<div class="koba-search-spinner"></div>' + 3675 '<p>Recherche...</p></div></div>'; 3676 3677 // Recherche après court délai 3678 searchTimeout = setTimeout(function() { 3679 performSearch(query); 3680 }, 250); 3681 }); 3682 3683 // Fermer l'overlay 3684 if (searchClose) { 3685 searchClose.addEventListener('click', function() { 3686 searchOverlay.classList.remove('active'); 3687 searchOverlay.innerHTML = ''; 3688 }); 3689 } 3690 3691 // Fermer avec Escape 3692 document.addEventListener('keydown', function(e) { 3693 if (e.key === 'Escape') { 3694 searchOverlay.classList.remove('active'); 3695 searchOverlay.innerHTML = ''; 3696 } 3697 }); 3698 3699 // Recherche AJAX 3700 function performSearch(query) { 3701 var formData = new FormData(); 3702 formData.append('action', 'koba_live_search'); 3703 formData.append('search', query); 3704 3705 fetch(ajaxurl, { 3706 method: 'POST', 3707 body: formData 3708 }) 3709 .then(function(r) { return r.json(); }) 3710 .then(function(data) { 3711 if (data.success) { 3712 renderResults(data.data.results, data.data.search); 3713 } 3714 }) 3715 .catch(function() { 3716 searchOverlay.innerHTML = '<div class="koba-search-overlay-inner">' + 3717 '<div class="koba-search-no-results"><p>Erreur de connexion</p></div></div>'; 3718 }); 3719 } 3720 3721 // Afficher résultats 3722 function renderResults(results, searchTerm) { 3723 if (!results || results.length === 0) { 3724 searchOverlay.innerHTML = '<div class="koba-search-overlay-inner">' + 3725 '<div class="koba-search-no-results">' + 3726 '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">' + 3727 '<circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/>' + 3728 '</svg>' + 3729 '<p>Aucun résultat pour "<strong>' + esc(searchTerm) + '</strong>"</p>' + 3730 '</div></div>'; 3731 return; 3732 } 3733 3734 var html = '<div class="koba-search-overlay-inner">'; 3735 3736 results.forEach(function(cat) { 3737 html += '<div class="koba-search-category">'; 3738 html += '<h3 class="koba-search-category-title">' + esc(cat.label) + '</h3>'; 3739 html += '<ul class="koba-search-list">'; 3740 3741 cat.items.forEach(function(item) { 3742 var title = highlight(item.title, searchTerm); 3743 var date = (cat.type === 'evenement') ? '<span class="koba-search-date">- ' + item.date + '</span>' : ''; 3744 html += '<li class="koba-search-item">'; 3745 html += '<a href="' + item.url + '" class="koba-search-link">' + title + date + '</a>'; 3746 html += '</li>'; 3747 }); 3748 3749 html += '</ul></div>'; 3750 }); 3751 3752 html += '</div>'; 3753 searchOverlay.innerHTML = html; 3754 } 3755 3756 function highlight(text, search) { 3757 var regex = new RegExp('(' + search.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ')', 'gi'); 3758 return esc(text).replace(regex, '<mark>$1</mark>'); 3759 } 3760 3761 function esc(text) { 3762 var d = document.createElement('div'); 3763 d.textContent = text; 3764 return d.innerHTML; 3765 } 3766 })(); 3767 </script>
3767 3768
3768<script> 3769 document.addEventListener('DOMContentLoaded', function() { 3770 const hamburger = document.getElementById('koba-hamburger'); 3771 const mobileMenu = document.getElementById('koba-mobile-menu'); 3772 const searchToggle = document.getElementById('koba-search-toggle'); 3773 const searchBar = document.getElementById('koba-search-bar'); 3774 const searchClose = document.getElementById('koba-search-close'); 3775 const searchInput = document.getElementById('koba-search-input'); 3776 const overlay = document.getElementById('koba-overlay'); 3777 const navItems = document.querySelectorAll('.koba-nav-item.has-megamenu'); 3778 const mobileToggles = document.querySelectorAll('.koba-mobile-toggle'); 3779 3780 function closeAllMenus() { 3781 navItems.forEach(item => item.classList.remove('active')); 3782 document.querySelectorAll('.koba-megamenu-item.active').forEach(item => { 3783 item.classList.remove('active'); 3784 }); 3785 overlay.classList.remove('active'); 3786 } 3787 3788 if (hamburger) { 3789 hamburger.addEventListener('click', function() { 3790 this.classList.toggle('active'); 3791 mobileMenu.classList.toggle('active'); 3792 document.body.style.overflow = mobileMenu.classList.contains('active') ? 'hidden' : ''; 3793 }); 3794 } 3795 3796 if (searchToggle) { 3797 searchToggle.addEventListener('click', function() { 3798 closeAllMenus(); 3799 searchBar.classList.add('active'); 3800 searchToggle.classList.add('hidden'); 3801 setTimeout(() => searchInput.focus(), 400); 3802 }); 3803 } 3804 3805 if (searchClose) { 3806 searchClose.addEventListener('click', function() { 3807 searchBar.classList.remove('active'); 3808 searchToggle.classList.remove('hidden'); 3809 }); 3810 } 3811 3812 navItems.forEach(item => { 3813 const link = item.querySelector('.koba-nav-link'); 3814 3815 link.addEventListener('click', function(e) { 3816 if (window.innerWidth > 992) { 3817 e.preventDefault(); 3818 const isActive = item.classList.contains('active'); 3819 closeAllMenus(); 3820 if (!isActive) { 3821 item.classList.add('active'); 3822 overlay.classList.add('active'); 3823 } 3824 } 3825 }); 3826 }); 3827 3828 document.querySelectorAll('.koba-megamenu-item.has-submenu').forEach(item => { 3829 const link = item.querySelector('.koba-megamenu-link'); 3830 3831 link.addEventListener('click', function(e) { 3832 e.preventDefault(); 3833 const parent = item.closest('.koba-megamenu-col3'); 3834 parent.querySelectorAll('.koba-megamenu-item.active').forEach(other => { 3835 if (other !== item) { 3836 other.classList.remove('active'); 3837 } 3838 }); 3839 item.classList.toggle('active'); 3840 }); 3841 }); 3842 3843 mobileToggles.forEach(toggle => { 3844 toggle.addEventListener('click', function() { 3845 this.classList.toggle('active'); 3846 const submenu = this.closest('.koba-mobile-item').querySelector(':scope > .koba-mobile-submenu'); 3847 if (submenu) { 3848 submenu.classList.toggle('active'); 3849 } 3850 }); 3851 }); 3852 3853 if (overlay) { 3854 overlay.addEventListener('click', function() { 3855 closeAllMenus(); 3856 searchBar.classList.remove('active'); 3857 searchToggle.classList.remove('hidden'); 3858 }); 3859 } 3860 3861 document.addEventListener('click', function(e) { 3862 if (window.innerWidth > 992) { 3863 const isInNav = e.target.closest('.koba-nav-item.has-megamenu'); 3864 const isInMegamenu = e.target.closest('.koba-megamenu'); 3865 3866 if (!isInNav && !isInMegamenu) { 3867 closeAllMenus(); 3868 } 3869 } 3870 }); 3871 3872 document.addEventListener('keydown', function(e) { 3873 if (e.key === 'Escape') { 3874 closeAllMenus(); 3875 searchBar.classList.remove('active'); 3876 searchToggle.classList.remove('hidden'); 3877 mobileMenu.classList.remove('active'); 3878 hamburger.classList.remove('active'); 3879 document.body.style.overflow = ''; 3880 } 3881 }); 3882 3883 window.addEventListener('resize', function() { 3884 if (window.innerWidth > 992) { 3885 mobileMenu.classList.remove('active'); 3886 hamburger.classList.remove('active'); 3887 document.body.style.overflow = ''; 3888 } 3889 }); 3890 }); 3891 </script>
3891 3892 <div id="koba-lightbox" style="display:none;position:fixed;top:0;left:0;width:100%;height:100%;background:rgba(0,0,0,0.9);z-index:999999;cursor:pointer;justify-content:center;align-items:center;"> 3893 <button id="koba-lightbox-close" style="position:absolute;top:20px;right:25px;background:none;border:none;color:#fff;font-size:40px;cursor:pointer;z-index:2;line-height:1;padding:5px 10px;" aria-label="Fermer">×</button> 3894 <button id="koba-lightbox-prev" style="position:absolute;left:15px;top:50%;transform:translateY(-50%);background:rgba(255,255,255,0.15);border:none;color:#fff;font-size:36px;cursor:pointer;z-index:2;padding:10px 16px;border-radius:50%;line-height:1;display:none;" aria-label="Précédent">‹</button> 3895 <button id="koba-lightbox-next" style="position:absolute;right:15px;top:50%;transform:translateY(-50%);background:rgba(255,255,255,0.15);border:none;color:#fff;font-size:36px;cursor:pointer;z-index:2;padding:10px 16px;border-radius:50%;line-height:1;display:none;" aria-label="Suivant">›</button> 3896 <img id="koba-lightbox-img" src="" alt="" style="max-width:90%;max-height:90%;object-fit:contain;border-radius:4px;cursor:default;"> 3897 </div> 3898
3898<script> 3899 (function(){ 3900 var lightbox = document.getElementById('koba-lightbox'); 3901 var lbImg = document.getElementById('koba-lightbox-img'); 3902 var btnPrev = document.getElementById('koba-lightbox-prev'); 3903 var btnNext = document.getElementById('koba-lightbox-next'); 3904 var images = []; 3905 var currentIndex = 0; 3906 3907 var container = document.getElementById('post-content'); 3908 if (!container) return; 3909 3910 var imgs = container.querySelectorAll('img'); 3911 imgs.forEach(function(img, i) { 3912 var src = img.src; 3913 var parent = img.closest('a'); 3914 3915 // Si l'img est dans un <a> qui ne pointe PAS vers une image â lien externe, on skip 3916 if (parent && !/\.(jpg|jpeg|png|gif|webp|svg)(\?|$)/i.test(parent.href)) { 3917 return; 3918 } 3919 3920 if (parent && /\.(jpg|jpeg|png|gif|webp|svg)(\?|$)/i.test(parent.href)) { 3921 src = parent.href; 3922 } 3923 3924 images.push(src); 3925 3926 img.style.cursor = 'pointer'; 3927 img.addEventListener('click', function(e) { 3928 e.preventDefault(); 3929 e.stopPropagation(); 3930 currentIndex = images.indexOf(src); 3931 openLightbox(src); 3932 }); 3933 3934 if (parent) { 3935 parent.addEventListener('click', function(e) { 3936 if (e.target === img || img.contains(e.target)) { 3937 e.preventDefault(); 3938 } 3939 }); 3940 } 3941}); 3942 3943 if (images.length === 0) return; 3944 3945 function openLightbox(src) { 3946 lbImg.src = src; 3947 lightbox.style.display = 'flex'; 3948 document.body.style.overflow = 'hidden'; 3949 if (images.length > 1) { 3950 btnPrev.style.display = 'block'; 3951 btnNext.style.display = 'block'; 3952 } 3953 } 3954 3955 function closeLightbox() { 3956 lightbox.style.display = 'none'; 3957 lbImg.src = ''; 3958 document.body.style.overflow = ''; 3959 } 3960 3961 function navigate(dir) { 3962 currentIndex = (currentIndex + dir + images.length) % images.length; 3963 lbImg.src = images[currentIndex]; 3964 } 3965 3966 lightbox.addEventListener('click', function(e) { 3967 if (e.target === lightbox) closeLightbox(); 3968 }); 3969 document.getElementById('koba-lightbox-close').addEventListener('click', closeLightbox); 3970 3971 btnPrev.addEventListener('click', function(e) { e.stopPropagation(); navigate(-1); }); 3972 btnNext.addEventListener('click', function(e) { e.stopPropagation(); navigate(1); }); 3973 3974 document.addEventListener('keydown', function(e) { 3975 if (lightbox.style.display !== 'flex') return; 3976 if (e.key === 'Escape') closeLightbox(); 3977 if (e.key === 'ArrowLeft') navigate(-1); 3978 if (e.key === 'ArrowRight') navigate(1); 3979 }); 3980 3981 lbImg.addEventListener('click', function(e) { e.stopPropagation(); }); 3982 })(); 3983 </script>
3983 3984 <div id="hob-rgpd-banner" class="hob-rgpd-banner" role="region" 3985 aria-label="Consentement aux cookies" 3986 style="background-color:#222222;color:#ffffff;bottom:0;"> 3987 <div class="hob-rgpd-message"> 3988 Notre site utilise des cookies pour réaliser des statistiques de visites, partager des contenus sur les réseaux sociaux et améliorer votre expérience. En refusant les cookies, certains services seront amenés à ne pas fonctionner correctement. Nous conservons votre choix pendant 30 jours. Vous pouvez changer d'avis en cliquant sur le bouton 'Cookies' en bas à gauche de chaque page de notre site. </div> 3989 <div class="hob-rgpd-buttons"> 3990 <button type="button" class="hob-btn hob-accept-all" style="background-color:#00aaff;color:#ffffff;"> 3991 Tout accepter </button> 3992 <button type="button" class="hob-btn hob-reject-all" style="background-color:#00aaff;color:#ffffff;"> 3993 Tout refuser </button> 3994 <button type="button" class="hob-btn hob-manage" style="background-color:#00aaff;color:#ffffff;"> 3995 Gérer mes préférences </button> 3996 </div> 3997</div> 3998 3999<div id="hob-rgpd-popup" class="hob-rgpd-popup" role="dialog" aria-modal="true" 4000 aria-labelledby="hob-rgpd-popup-title" 4001 style="--hob-accent:#00aaff;--hob-accent-text:#ffffff;" 4002 hidden> 4003 <div class="hob-rgpd-popup-content"> 4004 <button type="button" class="hob-rgpd-popup-close" aria-label="Fermer">×</button> 4005 <h2 id="hob-rgpd-popup-title">Gérer mes préférences</h2> 4006 4007 <div class="hob-rgpd-tabs" role="tablist"> 4008 <button type="button" class="hob-rgpd-tab is-active" 4009 role="tab" 4010 aria-selected="true" 4011 data-tab="hob-rgpd-panel-1"> 4012 Contenus interactifs </button> 4013 </div> 4014 4015 <div id="hob-rgpd-panel-1" 4016 class="hob-rgpd-panel is-active" 4017 role="tabpanel"> 4018 <div class="hob-rgpd-service"> 4019 <div class="hob-rgpd-service-icon"> 4020 <img src="https://www.oye-plage.fr/wp-content/plugins/hob-rgpd/assets/img/services/recaptcha.svg" 4021 alt="Google reCAPTCHA" /> 4022 </div> 4023 <div class="hob-rgpd-service-info"> 4024 <div class="hob-rgpd-service-title">Google reCAPTCHA</div> 4025 <div class="hob-rgpd-service-desc">Anti-spam Google reCAPTCHA.</div> 4026 </div> 4027 <div class="hob-rgpd-service-toggle"> 4028 <label class="hob-rgpd-switch"> 4029 <input type="checkbox" class="hob-rgpd-toggle" 4030 data-service-key="recaptcha" /> 4031 <span class="hob-rgpd-slider"></span> 4032 </label> 4033 </div> 4034 </div> 4035 </div> 4036 4037 <div class="hob-rgpd-popup-actions"> 4038 <button type="button" class="hob-btn hob-accept-all" style="background-color:#00aaff;color:#ffffff;"> 4039 Tout accepter </button> 4040 <button type="button" class="hob-btn hob-reject-all" style="background-color:#00aaff;color:#ffffff;"> 4041 Tout refuser </button> 4042 <button type="button" class="hob-btn hob-save" style="background-color:#00aaff;color:#ffffff;"> 4043 Enregistrer mes préférences </button> 4044 </div> 4045 4046 <div class="hob-rgpd-credit"> 4047 © <a href="https://www.hob-france.com/" target="_blank" rel="noopener">HOB France Services</a> 4048 </div> 4049 </div> 4050</div> 4051 4052<button type="button" id="hob-rgpd-settings-icon" class="hob-rgpd-settings-icon" 4053 title="Cookies" 4054 aria-label="Cookies" hidden> 4055 <span class="hob-rgpd-cookie-emoji" aria-hidden="true">ðª</span> 4056 <span class="hob-rgpd-cookie-label">Cookies</span> 4057</button>
4058<script id="moment-js" src="https://www.oye-plage.fr/wp-includes/js/dist/vendor/moment.min.js?ver=2.30.1"></script>
vendor: 1 bytes, line 4058
4058
4059<script id="moment-js-after"> 4060moment.updateLocale( 'fr_FR', {"months":["janvier","f\u00e9vrier","mars","avril","mai","juin","juillet","ao\u00fbt","septembre","octobre","novembre","d\u00e9cembre"],"monthsShort":["Jan","F\u00e9v","Mar","Avr","Mai","Juin","Juil","Ao\u00fbt","Sep","Oct","Nov","D\u00e9c"],"weekdays":["dimanche","lundi","mardi","mercredi","jeudi","vendredi","samedi"],"weekdaysShort":["dim","lun","mar","mer","jeu","ven","sam"],"week":{"dow":1},"longDateFormat":{"LT":"G\\hi","LTS":null,"L":null,"LL":"j F Y","LLL":"d F Y G\\hi","LLLL":null}} ); 4061//# sourceURL=moment-js-after 4062</script>
vendor: 1 bytes, line 4062
4062
4063<script id="moment-fr-js" src="https://cdnjs.cloudflare.com/ajax/libs/moment.js/2.29.4/locale/fr.js"></script>
vendor: 1 bytes, line 4063
4063
4064<script id="fullcalendar-js" src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.10.2/fullcalendar.min.js"></script>
vendor: 1 bytes, line 4064
4064
4065<script id="fullcalendar-fr-js" src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.10.2/locale/fr.js"></script>
vendor: 1 bytes, line 4065
4065
4066<script id="hcb-frontend-js-extra"> 4067var hcb_front = {"ajax_url":"https://www.oye-plage.fr/wp-admin/admin-ajax.php","nonce":"070af11d55","primary_color":"#2271b1","user":[],"strings":{"loading":"Chargement...","success":"Votre demande de r\u00e9servation a \u00e9t\u00e9 envoy\u00e9e avec succ\u00e8s ! Vous recevrez un email de confirmation.","error":"Une erreur est survenue. Veuillez r\u00e9essayer.","fill_required":"Veuillez remplir tous les champs obligatoires.","accepted":"Accept\u00e9","studying":"En cours d'\u00e9tude","pending":"En attente","slot_busy":"Ce cr\u00e9neau est d\u00e9j\u00e0 r\u00e9serv\u00e9.","click_to_book":"Cliquer pour r\u00e9server","file_too_large":"Le fichier \"%s\" d\u00e9passe la taille maximum autoris\u00e9e (5 Mo).","file_type_invalid":"Le type de fichier \"%s\" n'est pas autoris\u00e9.","docs_required":"Veuillez joindre tous les documents requis."},"max_file_size_mb":"5"}; 4068//# sourceURL=hcb-frontend-js-extra 4069</script>
vendor: 1 bytes, line 4069
4069
4070<script id="hcb-frontend-js" src="https://www.oye-plage.fr/wp-content/plugins/hob-cityhall-booking/assets/js/frontend.js?ver=1.2.0"></script>
vendor: 1 bytes, line 4070
4070
4071<script id="hob-fc-form-js-extra"> 4072var hobFcFormConfig = {"ajax_url":"https://www.oye-plage.fr/wp-admin/admin-ajax.php"}; 4073var hobFcPublic = {"ajaxurl":"https://www.oye-plage.fr/wp-admin/admin-ajax.php","nonce":"d5ec3d1515","page_token":"150bd65dcd13f74375a950ed0d6350bd2c97d6e3f87ba90192f6011e14ba5a1d","page_ts":"497494"}; 4074var hobFcI18n = {"required":"Veuillez remplir ce champ correctement.","invalidEmail":"Adresse e-mail invalide.","invalidPhone":"Num\u00e9ro de t\u00e9l\u00e9phone invalide.","minLength":"Minimum %d caract\u00e8res.","networkError":"Erreur r\u00e9seau. Veuillez r\u00e9essayer.","serverError":"Le serveur a renvoy\u00e9 une r\u00e9ponse inattendue","genericError":"Une erreur est survenue.","defaultSuccess":"Merci, votre message a bien \u00e9t\u00e9 envoy\u00e9.","resubmit":"Soumettre \u00e0 nouveau","fileTooLarge":"\u00ab %1$s \u00bb d\u00e9passe la taille maximale (%2$s Mo).","fileBadType":"\u00ab %1$s \u00bb n'est pas un format autoris\u00e9 (%2$s).","tooManyFiles":"%d fichier(s) maximum."}; 4075//# sourceURL=hob-fc-form-js-extra 4076</script>
vendor: 1 bytes, line 4076
4076
4077<script id="hob-fc-form-js" src="https://www.oye-plage.fr/wp-content/plugins/hob-formchat-pro/assets/js/form.js?ver=1.29"></script>
vendor: 1 bytes, line 4077
4077
4078<script id="hob-fc-conditional-js" src="https://www.oye-plage.fr/wp-content/plugins/hob-formchat-pro/assets/js/hob-conditional.js?ver=1.29"></script>
vendor: 1 bytes, line 4078
4078
4079<script id="hob-fc-calculator-js" src="https://www.oye-plage.fr/wp-content/plugins/hob-formchat-pro/assets/js/hob-calculator.js?ver=1.29"></script>
vendor: 1 bytes, line 4079
4079
4080<script id="hob-fc-rgaa-js" src="https://www.oye-plage.fr/wp-content/plugins/hob-formchat-pro/assets/js/hob-rgaa.js?ver=1.29"></script>
vendor: 1 bytes, line 4080
4080
4081<script id="leaflet-js" src="https://unpkg.com/[email protected]/dist/leaflet.js?ver=1.9.4"></script>
vendor: 1 bytes, line 4081
4081
4082<script id="hob-fc-map-picker-js" src="https://www.oye-plage.fr/wp-content/plugins/hob-formchat-pro/assets/js/hob-map-picker.js?ver=1.29"></script>
vendor: 1 bytes, line 4082
4082
4083<script id="hob-fc-address-js-extra"> 4084var hobFcAddress = {"provider":"auto","effectiveProvider":"ban","googleKey":"","nominatimContact":"[email protected]","defaultCountry":"fr","debounceMs":"280","minChars":"3","banUrl":"https://api-adresse.data.gouv.fr/search/","photonUrl":"https://photon.komoot.io/api/"}; 4085//# sourceURL=hob-fc-address-js-extra 4086</script>
vendor: 1 bytes, line 4086
4086
4087<script id="hob-fc-address-js" src="https://www.oye-plage.fr/wp-content/plugins/hob-formchat-pro/assets/js/hob-address.js?ver=1.29"></script>
vendor: 1 bytes, line 4087
4087
4088<script id="bootstrap-js-js" src="https://cdn.jsdelivr.net/npm/[email protected]/dist/js/bootstrap.bundle.min.js?ver=5.3.2"></script>
vendor: 1 bytes, line 4088
4088
4089<script id="hobrgpd-front-js-extra"> 4090var hobRgpdConfig = {"cookieName":"hobConsentPrefs","cookieMaxAge":"2592000"}; 4091//# sourceURL=hobrgpd-front-js-extra 4092</script>
vendor: 1 bytes, line 4092
4092
4093<script id="hobrgpd-front-js" src="https://www.oye-plage.fr/wp-content/plugins/hob-rgpd/assets/js/front.js?ver=1781167964"></script>
vendor: 1 bytes, line 4093
4093
4094<script id="wp-statistics-tracker-js-extra"> 4095var WP_Statistics_Tracker_Object = {"requestUrl":"https://www.oye-plage.fr/wp-json/wp-statistics/v2","ajaxUrl":"https://www.oye-plage.fr/wp-admin/admin-ajax.php","hitParams":{"wp_statistics_hit":1,"source_type":"page","source_id":941,"search_query":"","signature":"5fdc8ca88428a95c2826712349616478","endpoint":"hit"},"option":{"dntEnabled":false,"bypassAdBlockers":false,"consentIntegration":{"name":null,"status":[]},"isPreview":false,"userOnline":false,"isWpConsentApiActive":false},"isLegacyEventLoaded":"","customEventAjaxUrl":"https://www.oye-plage.fr/wp-admin/admin-ajax.php?action=wp_statistics_custom_event&nonce=e828a08707","onlineParams":{"wp_statistics_hit":1,"source_type":"page","source_id":941,"search_query":"","signature":"5fdc8ca88428a95c2826712349616478","action":"wp_statistics_online_check"},"jsCheckTime":"60000"}; 4096//# sourceURL=wp-statistics-tracker-js-extra 4097</script>
vendor: 1 bytes, line 4097
4097
4098<script id="wp-statistics-tracker-js" src="https://www.oye-plage.fr/wp-content/plugins/wp-statistics/assets/js/tracker.js?ver=14.16.15"></script>
vendor: 1 bytes, line 4098
4098
4099<script id="wp-emoji-settings" type="application/json"> 4100{"baseUrl":"https://s.w.org/images/core/emoji/17.0.2/72x72/","ext":".png","svgUrl":"https://s.w.org/images/core/emoji/17.0.2/svg/","svgExt":".svg","source":{"concatemoji":"https://www.oye-plage.fr/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}} 4101</script>
vendor: 1 bytes, line 4101
4101
4102<script type="module"> 4103/*! This file is auto-generated */ 4104var e="script#wp-emoji-settings",t=document.querySelector(e);if(!(t instanceof HTMLScriptElement))throw new Error("Element missing: "+e);const r=JSON.parse(t.text),s=(window._wpemojiSettings=r,"wpEmojiSettingsSupports"),o=["flag","emoji"];function i(e){try{var t={supportTests:e,timestamp:(new Date).valueOf()};sessionStorage.setItem(s,JSON.stringify(t))}catch(e){}}function c(e,t,n){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);t=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(n,0,0);const r=new Uint32Array(e.getImageData(0,0,e.canvas.width,e.canvas.height).data);return t.every((e,t)=>e===r[t])}function p(e,t){e.clearRect(0,0,e.canvas.width,e.canvas.height),e.fillText(t,0,0);var n=e.getImageData(16,16,1,1);for(let e=0;e<n.data.length;e++)if(0!==n.data[e])return!1;return!0}function u(e,t,n,r){switch(t){case"flag":return n(e,"\ud83c\udff3\ufe0f\u200d\u26a7\ufe0f","\ud83c\udff3\ufe0f\u200b\u26a7\ufe0f")?!1:!n(e,"\ud83c\udde8\ud83c\uddf6","\ud83c\udde8\u200b\ud83c\uddf6")&&!n(e,"\ud83c\udff4\udb40\udc67\udb40\udc62\udb40\udc65\udb40\udc6e\udb40\udc67\udb40\udc7f","\ud83c\udff4\u200b\udb40\udc67\u200b\udb40\udc62\u200b\udb40\udc65\u200b\udb40\udc6e\u200b\udb40\udc67\u200b\udb40\udc7f");case"emoji":return!r(e,"\ud83e\u1fac8")}return!1}function f(e,t,n,r){let a;const s=(a="undefined"!=typeof WorkerGlobalScope&&self instanceof WorkerGlobalScope?new OffscreenCanvas(300,150):document.createElement("canvas")).getContext("2d",{willReadFrequently:!0}),o=(s.textBaseline="top",s.font="600 32px Arial",{});return e.forEach(e=>{o[e]=t(s,e,n,r)}),o}function a(e){var t=document.createElement("script");t.src=e,t.defer=!0,document.head.appendChild(t)}r.supports={everything:!0,everythingExceptFlag:!0},new Promise(t=>{let n=function(){try{var e=JSON.parse(sessionStorage.getItem(s));if("object"==typeof e&&"number"==typeof e.timestamp&&(new Date).valueOf()<e.timestamp+604800&&"object"==typeof e.supportTests)return e.supportTests}catch(e){}return null}();if(!n){if("undefined"!=typeof Worker&&"undefined"!=typeof OffscreenCanvas&&"undefined"!=typeof URL&&URL.createObjectURL&&"undefined"!=typeof Blob)try{var e="postMessage("+f.toString()+"("+[JSON.stringify(o),u.toString(),c.toString(),p.toString()].join(",")+"));",r=new Blob([e],{type:"text/javascript"});const a=new Worker(URL.createObjectURL(r),{name:"wpTestEmojiSupports"});return void(a.onmessage=e=>{i(n=e.data),a.terminate(),t(n)})}catch(e){}i(n=f(o,u,c,p))}t(n)}).then(e=>{for(const n in e)r.supports[n]=e[n],r.supports.everything=r.supports.everything&&r.supports[n],"flag"!==n&&(r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&r.supports[n]);var t;r.supports.everythingExceptFlag=r.supports.everythingExceptFlag&&!r.supports.flag,r.supports.everything||((t=r.source||{}).concatemoji?a(t.concatemoji):t.wpemoji&&t.twemoji&&(a(t.twemoji),a(t.wpemoji)))}); 4105//# sourceURL=https://www.oye-plage.fr/wp-includes/js/wp-emoji-loader.min.js 4106</script>
4106 4107 <style> 4108 #koba-pwa-banner { 4109 display: none; /* affiché par JS uniquement sur mobile */ 4110 position: fixed; 4111 top: 0; left: 0; right: 0; 4112 z-index: 99999; 4113 background: #1e293b; 4114 color: #fff; 4115 padding: 12px 16px; 4116 flex-direction: column; 4117 gap: 10px; 4118 box-shadow: 0 2px 12px rgba(0,0,0,.35); 4119 font-family: inherit; 4120 } 4121 #koba-pwa-banner.koba-pwa-banner-visible { 4122 display: flex; 4123 } 4124 /* Ligne 1 : icône + texte */ 4125 #koba-pwa-banner .kpb-row1 { 4126 display: flex; 4127 align-items: flex-start; 4128 gap: 12px; 4129 } 4130 #koba-pwa-banner .kpb-icon { 4131 font-size: 24px; 4132 flex-shrink: 0; 4133 line-height: 1.2; 4134 } 4135 #koba-pwa-banner .kpb-body { 4136 flex: 1; 4137 min-width: 0; 4138 } 4139 #koba-pwa-banner .kpb-title { 4140 font-weight: 700; 4141 font-size: .9rem; 4142 line-height: 1.3; 4143 } 4144 #koba-pwa-banner .kpb-desc { 4145 font-size: .8rem; 4146 opacity: .8; 4147 line-height: 1.4; 4148 margin-top: 3px; 4149 } 4150 /* Ligne 2 : bouton + fermer */ 4151 #koba-pwa-banner .kpb-row2 { 4152 display: flex; 4153 align-items: center; 4154 gap: 10px; 4155 } 4156 #koba-pwa-banner .kpb-btn { 4157 background: #6401ce; 4158 color: #fff; 4159 border: none; 4160 padding: 8px 16px; 4161 border-radius: 6px; 4162 font-size: .82rem; 4163 font-weight: 600; 4164 cursor: pointer; 4165 white-space: nowrap; 4166 text-decoration: none; 4167 display: inline-block; 4168 } 4169 #koba-pwa-banner .kpb-close { 4170 background: rgba(255,255,255,.12); 4171 border: 1px solid rgba(255,255,255,.2); 4172 color: rgba(255,255,255,.75); 4173 font-size: .82rem; 4174 font-weight: 600; 4175 line-height: 1; 4176 cursor: pointer; 4177 padding: 7px 12px; 4178 border-radius: 6px; 4179 white-space: nowrap; 4180 } 4181 #koba-pwa-banner .kpb-close:hover { 4182 background: rgba(255,255,255,.2); 4183 color: #fff; 4184 } 4185 /* Décaler le contenu sous la bannière quand elle est visible */ 4186 body.koba-pwa-banner-open { 4187 padding-top: 100px; 4188 } 4189 </style> 4190 4191 <div id="koba-pwa-banner" role="banner" aria-label="Installer l'application"> 4192 <div class="kpb-row1"> 4193 <span class="kpb-icon">ð²</span> 4194 <div class="kpb-body"> 4195 <div class="kpb-title">Installez notre application !</div> 4196 <div class="kpb-desc">Accédez rapidement à notre site depuis votre écran d'accueil.</div> 4197 </div> 4198 </div> 4199 <div class="kpb-row2"> 4200 <a href="https://www.oye-plage.fr/installapp/" class="kpb-btn">Voir comment installer</a> 4201 <button class="kpb-close" id="koba-pwa-close" aria-label="Fermer">â Fermer</button> 4202 </div> 4203 </div>
4204<script> 4205// Capturer beforeinstallprompt le plus tôt possible (avant tout) 4206var _kobaPwaInstallPrompt = null; 4207window.addEventListener('beforeinstallprompt', function(e) { 4208 e.preventDefault(); 4209 _kobaPwaInstallPrompt = e; 4210 // Si la bannière est déjà affichée, transformer le bouton 4211 var btn = document.querySelector('#koba-pwa-banner .kpb-btn'); 4212 if (btn && document.getElementById('koba-pwa-banner').classList.contains('koba-pwa-banner-visible')) { 4213 _kobaActivateInstallBtn(btn); 4214 } 4215}); 4216 4217function _kobaActivateInstallBtn(btn) { 4218 if (!_kobaPwaInstallPrompt) return; 4219 btn.textContent = 'ð² Installer l\'application'; 4220 btn.removeAttribute('href'); 4221 btn.onclick = function(e) { 4222 e.preventDefault(); 4223 if (!_kobaPwaInstallPrompt) return; 4224 _kobaPwaInstallPrompt.prompt(); 4225 _kobaPwaInstallPrompt.userChoice.then(function(result) { 4226 if (result.outcome === 'accepted') { 4227 _kobaHidePwaBanner(); 4228 } 4229 _kobaPwaInstallPrompt = null; 4230 }); 4231 }; 4232} 4233 4234function _kobaHidePwaBanner() { 4235 var banner = document.getElementById('koba-pwa-banner'); 4236 if (!banner) return; 4237 banner.classList.remove('koba-pwa-banner-visible'); 4238 document.body.classList.remove('koba-pwa-banner-open'); 4239 localStorage.setItem('koba_pwa_banner_closed', Date.now().toString()); 4240} 4241 4242(function() { 4243 // Ne jamais afficher en mode PWA standalone 4244 if (window.matchMedia('(display-mode: standalone)').matches 4245 || window.navigator.standalone === true 4246 || sessionStorage.getItem('koba_pwa') === '1') { 4247 return; 4248 } 4249 4250 var STORAGE_KEY = 'koba_pwa_banner_closed'; 4251 var FREQUENCY_MS = 86400000; 4252 4253 function isMobile() { 4254 return (window.innerWidth < 1024) || 4255 /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i.test(navigator.userAgent); 4256 } 4257 4258 if (!isMobile()) return; 4259 4260 var lastClosed = localStorage.getItem(STORAGE_KEY); 4261 if (lastClosed && (Date.now() - parseInt(lastClosed, 10)) < FREQUENCY_MS) return; 4262 4263 var ua = navigator.userAgent; 4264 var isIos = /iPhone|iPad|iPod/i.test(ua); 4265 var isAndroid = /Android/i.test(ua); 4266 // Sur iOS, seul Safari peut installer une PWA. 4267 // Chrome iOS (CriOS), Firefox iOS (FxiOS), Edge iOS (EdgiOS) utilisent WebKit 4268 // mais n'exposent pas la fonctionnalité d'ajout à l'écran d'accueil. 4269 var isIosNonSafari = isIos && /CriOS|FxiOS|EdgiOS|OPiOS|YaBrowser|DuckDuckGo/i.test(ua); 4270 var isIosSafari = isIos && !isIosNonSafari; 4271 4272 function showBanner() { 4273 var banner = document.getElementById('koba-pwa-banner'); 4274 if (!banner) return; 4275 4276 // Cas spécial : iOS hors Safari â bannière informative "ouvrez dans Safari" 4277 if (isIosNonSafari) { 4278 var iconEl = banner.querySelector('.kpb-icon'); 4279 var titleEl = banner.querySelector('.kpb-title'); 4280 var descEl = banner.querySelector('.kpb-desc'); 4281 var btnEl = banner.querySelector('.kpb-btn'); 4282 var row2El = banner.querySelector('.kpb-row2'); 4283 4284 if (iconEl) iconEl.textContent = 'ð§'; 4285 if (titleEl) titleEl.textContent = 'Application disponible dans Safari'; 4286 if (descEl) descEl.textContent = 'Sur iPhone et iPad, l\'application ne peut être installée qu\'avec le navigateur Safari. Ouvrez cette page dans Safari pour l\'installer.'; 4287 // Le bouton "Voir comment installer" n'a aucun sens ici â on le retire, 4288 // on conserve uniquement le bouton Fermer. 4289 if (btnEl && btnEl.parentNode) { 4290 btnEl.parentNode.removeChild(btnEl); 4291 } 4292 if (row2El) { 4293 row2El.style.justifyContent = 'flex-end'; 4294 } 4295 } else if (_kobaPwaInstallPrompt) { 4296 // Si le prompt natif est déjà disponible (Android/Chrome), transformer le bouton 4297 var btn = banner.querySelector('.kpb-btn'); 4298 if (btn) _kobaActivateInstallBtn(btn); 4299 } 4300 4301 banner.classList.add('koba-pwa-banner-visible'); 4302 document.body.classList.add('koba-pwa-banner-open'); 4303 4304 var closeBtn = document.getElementById('koba-pwa-close'); 4305 if (closeBtn) { 4306 closeBtn.addEventListener('click', _kobaHidePwaBanner); 4307 } 4308 } 4309 4310 if (isIosSafari && !window.navigator.standalone) { 4311 // iOS Safari : afficher immédiatement avec lien vers /installapp/ 4312 document.addEventListener('DOMContentLoaded', showBanner); 4313 } else if (isIosNonSafari) { 4314 // iOS Chrome/Firefox/Edge : afficher la bannière informative "ouvrez dans Safari" 4315 document.addEventListener('DOMContentLoaded', showBanner); 4316 } else if (isAndroid || (!isIos && isMobile())) { 4317 // Android/Chrome : attendre que le prompt soit disponible 4318 document.addEventListener('DOMContentLoaded', function() { 4319 if (_kobaPwaInstallPrompt) { 4320 showBanner(); 4321 } else { 4322 var t = setTimeout(function() { 4323 if (_kobaPwaInstallPrompt) showBanner(); 4324 // sinon : déjà installé ou navigateur non supporté â rien 4325 }, 1000); 4326 } 4327 }); 4328 } 4329})(); 4330</script>
4330 4331 4332 <style> 4333 #koba-desktop-alert { 4334 display: none; /* affiché par JS uniquement sur desktop */ 4335 position: fixed; 4336 top: 50%; 4337 right: 0; 4338 transform: translateY(-50%); 4339 width: 300px; 4340 z-index: 99998; 4341 background: #fff; 4342 color: #333; 4343 border-radius: 0; 4344 box-shadow: 0 6px 30px rgba(0,0,0,.25); 4345 padding: 20px; 4346 box-sizing: border-box; 4347 font-family: inherit; 4348 } 4349 #koba-desktop-alert.kda-visible { 4350 display: block; 4351 animation: kda-slide-in .4s ease; 4352 } 4353 @keyframes kda-slide-in { 4354 from { opacity: 0; transform: translateY(-50%) translateX(30px); } 4355 to { opacity: 1; transform: translateY(-50%) translateX(0); } 4356 } 4357 #koba-desktop-alert .kda-close { 4358 position: absolute; 4359 top: 10px; 4360 right: 10px; 4361 background: none; 4362 border: none; 4363 font-size: 16px; 4364 line-height: 1; 4365 color: #999; 4366 cursor: pointer; 4367 padding: 4px; 4368 } 4369 #koba-desktop-alert .kda-close:hover { color: #333; } 4370 #koba-desktop-alert .kda-icon { 4371 font-size: 28px; 4372 margin-bottom: 8px; 4373 } 4374 #koba-desktop-alert .kda-title { 4375 font-weight: 700; 4376 font-size: 1rem; 4377 margin-bottom: 8px; 4378 color: #1e293b; 4379 } 4380 #koba-desktop-alert .kda-content { 4381 font-size: .85rem; 4382 line-height: 1.55; 4383 color: #555; 4384 margin-bottom: 14px; 4385 } 4386 #koba-desktop-alert .kda-btn { 4387 display: inline-block; 4388 background: #6401ce; 4389 color: #fff; 4390 text-decoration: none; 4391 font-size: .85rem; 4392 font-weight: 600; 4393 padding: 9px 18px; 4394 border-radius: 8px; 4395 transition: opacity .2s; 4396 } 4397 #koba-desktop-alert .kda-btn:hover { 4398 opacity: .85; 4399 color: #fff; 4400 } 4401 </style> 4402 4403 <div id="koba-desktop-alert" role="dialog" aria-label="Application disponible"> 4404 <button class="kda-close" id="koba-desktop-alert-close" aria-label="Fermer">â</button> 4405 <div class="kda-title">ð² Application disponible</div> 4406 <div class="kda-content"> 4407 Allez sur votre smartphone, affichez le site de votre mairie dans le navigateur 4408 de votre choix et vous serez invité à installer l'application sur votre mobile. 4409 Laissez-vous guider, c'est simple ! Si votre mairie a souscrit à l'abonnement, 4410 tout fonctionnera immédiatement. 4411 </div> 4412 <a href="https://www.oye-plage.fr/installapp/" class="kda-btn">Plus de détails</a> 4413 </div> 4414 4415
4415<script> 4416 (function() { 4417 'use strict'; 4418 4419 var STORAGE_KEY = 'koba_desktop_alert_shown'; 4420 var WEEK_MS = 7 * 86400 * 1000; 4421 4422 // --- Détection desktop Windows / Mac uniquement --- 4423 var ua = navigator.userAgent; 4424 var isMobileUA = /Android|iPhone|iPad|iPod|Mobile|Tablet/i.test(ua); 4425 // iPadOS se fait passer pour un Mac : on l'exclut via le tactile 4426 var isIpadOs = (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1); 4427 var isWinMac = /Windows NT|Macintosh/i.test(ua); 4428 4429 if (isMobileUA || isIpadOs || !isWinMac) return; 4430 4431 // --- Mode standalone (PWA installée) : on n'affiche pas --- 4432 if (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches) return; 4433 4434 // --- Fréquence : 1 fois par semaine --- 4435 var last = 0; 4436 try { last = parseInt(localStorage.getItem(STORAGE_KEY) || '0', 10); } catch (e) {} 4437 if (last && (Date.now() - last) < WEEK_MS) return; 4438 4439 function showAlert() { 4440 var box = document.getElementById('koba-desktop-alert'); 4441 if (!box) return; 4442 4443 box.classList.add('kda-visible'); 4444 4445 // On marque comme "vue" dès l'affichage â max 1 fois / semaine 4446 try { localStorage.setItem(STORAGE_KEY, Date.now().toString()); } catch (e) {} 4447 4448 var closeBtn = document.getElementById('koba-desktop-alert-close'); 4449 if (closeBtn) { 4450 closeBtn.addEventListener('click', function() { 4451 box.classList.remove('kda-visible'); 4452 }); 4453 } 4454 } 4455 4456 if (document.readyState === 'loading') { 4457 document.addEventListener('DOMContentLoaded', showAlert); 4458 } else { 4459 showAlert(); 4460 } 4461 })(); 4462 </script>
4462 4463 </body> 4464</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.