1<!DOCTYPE html> 2<html lang="fr-FR"> 3<head> 4 <title>Mairie de Saint-Florentin (Yonne)</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>Mairie de Saint-Florentin (Yonne)</title> 10<meta name='robots' content='max-image-preview:large' /> 11<link rel="manifest" href="https://www.saint-florentin.fr/koba-manifest.json"> 12<meta name="google-site-verification" content="77pOTd9r76iD5rxRZfxAXZYZXBcQqLbkn156GsedodI" /> 13 <!-- Favicon standard --> 14 <link rel="icon" type="image/png" sizes="32x32" href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/favicons/favicon-32x32.png"> 15 <link rel="icon" type="image/png" sizes="16x16" href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/favicons/favicon-16x16.png"> 16 17 <!-- Apple Touch Icon (iOS) --> 18 <link rel="apple-touch-icon" sizes="180x180" href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/favicons/apple-touch-icon.png"> 19 20 <!-- Android Chrome --> 21 <link rel="icon" type="image/png" sizes="192x192" href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/favicons/android-chrome-192x192.png"> 22 <link rel="icon" type="image/png" sizes="512x512" href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/favicons/android-chrome-512x512.png"> 23 24 <!-- Safari Pinned Tab (SVG ou PNG) --> 25 <link rel="mask-icon" href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/favicons/favicon-32x32.png" color="#1975ae"> 26 27 <!-- Microsoft --> 28 <meta name="msapplication-TileColor" content="#1975ae"> 29 <meta name="msapplication-TileImage" content="https://www.saint-florentin.fr/wp-content/uploads/sites/66/favicons/mstile-144x144.png"> 30 31 <!-- Theme color pour navigateurs mobiles --> 32 <meta name="theme-color" content="#1975ae"> 33 34 <link rel='dns-prefetch' href='//cdnjs.cloudflare.com' /> 35<link rel='dns-prefetch' href='//unpkg.com' /> 36<link rel='dns-prefetch' href='//cdn.jsdelivr.net' /> 37<style id="koba-colors"> 38:root { 39 --koba-primary: #1975ae; 40 --koba-secondary: #d81f27; 41 --koba-primary-rgb: 25, 117, 174; 42 --koba-secondary-rgb: 216, 31, 39; 43} 44</style><style id="wp-img-auto-sizes-contain-inline-css"> 45img:is([sizes=auto i],[sizes^="auto," i]){contain-intrinsic-size:3000px 1500px} 46/*# sourceURL=wp-img-auto-sizes-contain-inline-css */ 47</style> 48<link rel='stylesheet' id='acy_front_messages_css-css' href='https://www.saint-florentin.fr/wp-content/plugins/acymailing/media/css/front/messages.min.css?v=1790752554&ver=11.1.0' media='all' /> 49<style id="wp-emoji-styles-inline-css"> 50 51 img.wp-smiley, img.emoji { 52 display: inline !important; 53 border: none !important; 54 box-shadow: none !important; 55 height: 1em !important; 56 width: 1em !important; 57 margin: 0 0.07em !important; 58 vertical-align: -0.1em !important; 59 background: none !important; 60 padding: 0 !important; 61 } 62/*# sourceURL=wp-emoji-styles-inline-css */ 63</style> 64<style id="wp-block-library-inline-css"> 65: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}}.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;
65--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}} 66 67/*# sourceURL=/wp-includes/css/dist/block-library/common.min.css */ 68</style> 69<style id="wp-block-paragraph-inline-css"> 70.is-small-text{font-size:.875em}.is-regular-text{font-size:1em}.is-large-text{font-size:2.25em}.is-larger-text{font-size:3em}.has-drop-cap:not(:focus):first-letter{float:left;font-size:8.4em;font-style:normal;font-weight:100;line-height:.68;margin:.05em .1em 0 0;text-transform:uppercase}body.rtl .has-drop-cap:not(:focus):first-letter{float:none;margin-left:.1em}p.has-drop-cap.has-background{overflow:hidden}:root :where(p.has-background){padding:1.25em 2.375em}:where(p.has-text-color:not(.has-link-color)) a{color:inherit}p.has-text-align-left[style*="writing-mode:vertical-lr"],p.has-text-align-right[style*="writing-mode:vertical-rl"]{rotate:180deg} 71/*# sourceURL=https://www.saint-florentin.fr/wp-includes/blocks/paragraph/style.min.css */ 72</style> 73<style id="wp-block-library-inline-css-extra"> 74.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; } 75 .meteo-widget.meteo-error { background: #e74c3c; } 76 .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); } 77 .meteo-header h3 { margin: 0; font-size: 1.3em; } 78 .meteo-main { display: flex; align-items: center; justify-content: center; gap: 10px; } 79 .meteo-icon { width: 80px; height: 80px; } 80 .meteo-temp { font-size: 3em; font-weight: bold; } 81 .meteo-description { font-size: 1.1em; margin: 10px 0; text-transform: capitalize; } 82 .meteo-minmax { display: flex; justify-content: center; gap: 30px; margin: 15px 0; } 83 .meteo-min { background: #20b7d9; padding: 8px 15px; border-radius: 20px; font-weight: bold; } 84 .meteo-max { background: #c0392b; padding: 8px 15px; border-radius: 20px; font-weight: bold; } 85 .meteo-humidity { margin-top: 10px; font-size: 0.95em; opacity: 0.9; } 86.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} 87 88 /* ========================================== 89 VARIABLES CSS 90 ========================================== */ 91 :root { 92 --koba-topbar-height: 40px; 93 --koba-navbar-height: 70px; 94 --koba-header-height: calc(var(--koba-topbar-height) + var(--koba-navbar-height)); 95 --koba-logo-width: 193px; 96 } 97 98 /* ========================================== 99 HEADER PRINCIPAL 100 ========================================== */ 101 102 .koba-header { 103 position: fixed; 104 top: 0; 105 left: 0; 106 right: 0; 107 z-index: 10000; 108 width: 100%; 109 } 110 111 .koba-header-wrapper { 112 position: relative; 113 width: 100%; 114 z-index: 222222; 115 } 116 117 /* Spacer pour compenser le header fixe */ 118 .koba-header-spacer { 119 height: var(--koba-header-height); 120 } 121 122 /* ========================================== 123 LOGO - COUVRE LES DEUX BARRES 124 ========================================== */ 125 126 .koba-logo { 127 position: absolute; 128 top: 0; 129 left: 0; 130 width: var(--koba-logo-width); 131 height: var(--koba-header-height); 132 background-color: #fff; 133 display: flex; 134 align-items: center; 135 justify-content: center; 136 padding: 10px 20px; 137 box-sizing: border-box; 138 z-index: 110; 139 } 140 141 .koba-logo img { 142 max-height: 100%; 143 max-width: 100%; 144 width: auto; 145 height: auto; 146 display: block; 147 object-fit: contain; 148 } 149 .koba-icon-search{ 150 width: 30px; 151 height: 30px; 152 } 153 154 .koba-logo-text { 155 color: #333; 156 font-size: 20px; 157 font-weight: 700; 158 text-decoration: none; 159 } 160 161 /* ========================================== 162 BARRE SUPERIEURE (ORANGE) 163 ========================================== */ 164 165 .koba-topbar { 166 background-color: #d81f27; 167 height: var(--koba-topbar-height); 168 width: 100%; 169 } 170 171 .koba-topbar-inner { 172 height: 100%; 173 display: flex; 174 justify-content: space-between; 175 align-items: center; 176 padding: 0 20px 0 calc(var(--koba-logo-width) + 20px); 177 } 178 179 .koba-topbar-menu { 180 flex: 1; 181 } 182 183 .koba-topbar-list { 184 list-style: none; 185 margin: 0; 186 padding: 0; 187 display: flex; 188 gap: 25px; 189 } 190 191 .koba-topbar-list li a { 192 color: #fff; 193 text-decoration: none; 194 font-size: 11.2px; 195 font-weight: 600; 196 text-transform: uppercase; 197 letter-spacing: 0.5px; 198 transition: opacity 0.2s; 199 } 200 201 .koba-topbar-list li a:hover { 202 opacity: 0.8; 203 } 204 205 .koba-topbar-cta { 206 display: flex; 207 align-items: center; 208 gap: 8px; 209 color: #fff; 210 text-decoration: none; 211 font-size: 12.2px; 212 font-weight: 600; 213 text-transform: uppercase; 214 letter-spacing: 0.5px; 215 transition: opacity 0.2s; 216 } 217 218 .koba-topbar-cta:hover { 219 opacity: 0.8; 220 } 221 222 /* Hamburger (mobile) - dans la topbar */ 223 .koba-hamburger { 224 display: none; 225 flex-direction: column; 226 justify-content: center; 227 gap: 5px; 228 background: none; 229 border: none; 230 cursor: pointer; 231 padding: 10px; 232 width: 44px; 233 height: 44px; 234 margin-left: -10px; 235 } 236 237 .koba-hamburger span { 238 display: block; 239 width: 24px; 240 height: 2px; 241 background-color: #fff; 242 transition: all 0.3s; 243 } 244 245 .koba-hamburger.active span:nth-child(1) { 246 transform: rotate(45deg) translate(5px, 5px); 247 } 248 249 .koba-hamburger.active span:nth-child(2) { 250 opacity: 0; 251 } 252 253 .koba-hamburger.active span:nth-child(3) { 254 transform: rotate(-45deg) translate(5px, -5px); 255 } 256 257 /* ========================================== 258 BARRE PRINCIPALE (BLEU) 259 ========================================== */ 260 261 .koba-navbar { 262 background-color: #1975ae; 263 height: var(--koba-navbar-height); 264 width: 100%; 265 position: relative; 266 } 267 268 .koba-navbar-inner { 269 height: 100%; 270 display: flex; 271 align-items: stretch; 272 padding: 0 0 0 var(--koba-logo-width); 273 } 274 275 /* Navigation principale */ 276 .koba-main-nav { 277 flex: 1; 278 display: flex; 279 align-items: stretch; 280 } 281 282 .koba-nav-list { 283 list-style: none; 284 margin: 0; 285 padding: 0; 286 display: flex; 287 align-items: stretch; 288 width: 100%; 289 } 290 291 .koba-nav-item { 292 position: static; 293 display: flex; 294 align-items: stretch; 295 flex: 1; 296 margin: 8px; 297 border-bottom: 1px solid transparent; 298 } 299 300 .koba-nav-item:hover { 301 border-bottom: 1px solid hsla(0,0%,100%,.72); 302 } 303 304 .koba-nav-link { 305 display: flex; 306 align-items: center; 307 justify-content: center; 308 gap: 6px; 309 color: #fff; 310 text-decoration: none; 311 font-size: 14px; 312 font-weight: 400; 313 text-transform: uppercase; 314 letter-spacing: 0.3px; 315 padding: 0 15px; 316 width: 100%; 317 transition: background-color 0.2s; 318 cursor: pointer; 319 } 320 321 .koba-nav-arrow { 322 color: #fb0; 323 width: 14px; 324 height: 14px; 325 transform: rotate(270deg); 326 transition: transform 0.2s; 327 } 328 329 /* ========================================== 330 BOUTON RECHERCHE (CARRE) 331 ========================================== */ 332 333 .koba-search-toggle { 334 flex-shrink: 0; 335 width: var(--koba-navbar-height); 336 height: var(--koba-navbar-height); 337 background: #fff; 338 border: none; 339 color: #fb0; 340 cursor: pointer; 341 display: flex; 342 align-items: center; 343 justify-content: center; 344 transition: opacity 0.2s; 345 } 346 347 .koba-search-toggle:hover { 348 opacity: 0.9; 349 } 350 351 .koba-search-toggle.hidden { 352 display: none; 353 } 354 355 /* ========================================== 356 MEGA MENU 357 ========================================== */ 358 359 .koba-megamenu { 360 position: absolute; 361 top: 100%; 362 left: 0; 363 right: 0; 364 width: 100%; 365 background-color: #1975ae; 366 opacity: 0; 367 visibility: hidden; 368 transform: translateY(-10px); 369 transition: all 0.3s ease; 370 z-index: 100; 371 pointer-events: none; 372 } 373 374 .koba-nav-item.active .koba-megamenu { 375 opacity: 1; 376 visibility: visible; 377 transform: translateY(0); 378 pointer-events: auto; 379 } 380 381 .koba-megamenu-inner { 382 width: 100%; 383 display: flex; 384 position: relative; 385 } 386 387 .koba-megamenu-col1 { 388 flex-shrink: 0; 389 width: var(--koba-logo-width); 390 background-color: #fff; 391 } 392 393 .koba-megamenu-col2 { 394 flex: 1; 395 padding: 30px 20px; 396 display: flex; 397 align-items: flex-start; 398 justify-content: flex-end; 399 } 400 401 .koba-megamenu-title { 402 color: #fff; 403 font-size: 22px; 404 font-weight: 600; 405 line-height: 1.4; 406 } 407 408 .koba-megamenu-col3 { 409 flex: 1; 410 padding: 25px 30px; 411 min-width: 0; 412 max-height: 731px; 413 overflow: overlay; 414 } 415 416 .koba-megamenu-list { 417 list-style: none; 418 margin: 0; 419 padding: 0; 420 border-left: 1px solid #fff; 421 } 422 423 .koba-megamenu-item { 424 position: static; 425 } 426 427 .koba-megamenu-link { 428 display: flex; 429 align-items: center; 430 gap: 8px; 431 color: #fff; 432 text-decoration: none; 433 padding: 16px 0; 434 font-size: 14px; 435 transition: padding-left 0.2s; 436 cursor: pointer; 437 padding-left: 30px; 438 } 439 440 .koba-megamenu-link:hover { 441 border-bottom: 1px solid #fff; 442 } 443 444 .koba-megamenu-link svg { 445 margin-left: auto; 446 flex-shrink: 0; 447 transition: transform 0.2s; 448 color: #faaf00; 449 } 450 451 .koba-megamenu-item.active > .koba-megamenu-link svg { 452 transform: rotate(90deg); 453 } 454 455 .koba-megamenu-col4 { 456 flex: 1; 457 position: relative; 458 } 459 460 .koba-megamenu-sublist { 461 position: absolute; 462 top: 0; 463 right: 0; 464 bottom: 0; 465 width: calc((100% - var(--koba-logo-width)) / 3); 466 list-style: none; 467 margin: 0; 468 padding: 25px 20px; 469 opacity: 0; 470 visibility: hidden; 471 transition: all 0.3s ease; 472 z-index: 110; 473 } 474 475 .koba-megamenu-item.active > .koba-megamenu-sublist { 476 opacity: 1; 477 visibility: visible; 478 } 479 .koba-megamenu-item > .koba-megamenu-sublist li{ 480 border-left: 1px solid #fff; 481 } 482 .koba-
482megamenu-item > .koba-megamenu-sublist li a{ 483 padding-left: 30px; 484 } 485 486 .koba-megamenu-sublist li a { 487 display: block; 488 color: #fff; 489 text-decoration: none; 490 padding: 8px 0; 491 font-size: 13px; 492 opacity: 0.9; 493 transition: opacity 0.2s, padding-left 0.2s; 494 border-bottom: 1px solid rgba(255, 255, 255, 0.1); 495 } 496 497 .koba-megamenu-sublist li a:hover { 498 border-bottom: 1px solid #fff; 499 } 500 501 502 /* ========================================== 503 BARRE DE RECHERCHE 504 ========================================== */ 505 506 .koba-search-bar { 507 position: absolute; 508 top: 0; 509 right: 0; 510 bottom: 0; 511 width: 0; 512 background-color: #1975ae; 513 overflow: hidden; 514 transition: width 0.4s ease; 515 display: flex; 516 align-items: center; 517 z-index: 105; 518 } 519 520 .koba-search-bar.active { 521 width: calc(100% - var(--koba-logo-width)); 522 } 523 524 .koba-search-bar-inner { 525 display: flex; 526 align-items: center; 527 gap: 15px; 528 padding: 0 20px; 529 width: 100%; 530 min-width: 300px; 531 } 532 533 .koba-search-form { 534 flex: 1; 535 display: flex; 536 align-items: center; 537 position: relative; 538 } 539 540 .koba-search-input { 541 width: 100%; 542 background: transparent; 543 border: none; 544 border-bottom: 2px solid rgba(255, 255, 255, 0.5); 545 color: #fff; 546 font-size: 18px; 547 padding: 10px 40px 10px 0; 548 outline: none; 549 transition: border-color 0.2s; 550 } 551 552 .koba-search-input::placeholder { 553 color: rgba(255, 255, 255, 0.7); 554 } 555 556 .koba-search-input:focus { 557 border-color: #fff; 558 } 559 560 .koba-search-submit { 561 position: absolute; 562 right: 0; 563 background: none; 564 border: none; 565 color: #fff; 566 cursor: pointer; 567 padding: 10px; 568 opacity: 0.7; 569 transition: opacity 0.2s; 570 } 571 572 .koba-search-submit:hover { 573 opacity: 1; 574 } 575 576 .koba-search-close { 577 flex-shrink: 0; 578 background: none; 579 border: none; 580 color: #d81f27; 581 cursor: pointer; 582 padding: 10px; 583 transition: opacity 0.2s; 584 } 585 586 .koba-search-close:hover { 587 opacity: 0.8; 588 } 589 590 /* ========================================== 591 MENU MOBILE 592 ========================================== */ 593 594 .koba-mobile-menu { 595 display: none; 596 position: fixed; 597 top: 0; 598 left: 0; 599 width: 100%; 600 height: 100vh; 601 background-color: #1975ae; 602 z-index: 999; 603 overflow-y: auto; 604 transform: translateX(-100%); 605 transition: transform 0.3s ease; 606 } 607 608 .koba-mobile-menu.active { 609 transform: translateX(0); 610 } 611 612 .koba-mobile-menu-inner { 613 padding: 20px; 614 padding-top: 120px; 615 } 616 617 .koba-mobile-list { 618 list-style: none; 619 margin: 0; 620 padding: 0; 621 } 622 623 .koba-mobile-item { 624 border-bottom: 1px solid rgba(255, 255, 255, 0.1); 625 } 626 627 .koba-mobile-item-inner { 628 display: flex; 629 align-items: center; 630 } 631 632 .koba-mobile-link { 633 flex: 1; 634 display: block; 635 color: #fff; 636 text-decoration: none; 637 padding: 18px 0; 638 font-size: 16px; 639 font-weight: 500; 640 } 641 642 .koba-mobile-toggle { 643 background: none; 644 border: none; 645 color: #fff; 646 cursor: pointer; 647 padding: 18px 15px; 648 transition: transform 0.2s; 649 } 650 651 .koba-mobile-toggle.active { 652 transform: rotate(180deg); 653 } 654 655 .koba-mobile-submenu { 656 list-style: none; 657 margin: 0; 658 padding: 0 0 0 20px; 659 display: none; 660 background-color: rgba(0, 0, 0, 0.1); 661 } 662 663 .koba-mobile-submenu.active { 664 display: block; 665 } 666 667 .koba-mobile-submenu .koba-mobile-link { 668 font-size: 15px; 669 font-weight: 400; 670 padding: 14px 0; 671 } 672 673 .koba-mobile-secondary { 674 margin-top: 30px; 675 padding-top: 30px; 676 border-top: 1px solid rgba(255, 255, 255, 0.2); 677 } 678 679 .koba-mobile-secondary-list { 680 list-style: none; 681 margin: 0; 682 padding: 0; 683 } 684 685 .koba-mobile-secondary-list li a { 686 display: block; 687 color: #fff; 688 text-decoration: none; 689 padding: 12px 0; 690 font-size: 14px; 691 opacity: 0.8; 692 } 693 694 /* Overlay */ 695 .koba-overlay { 696 position: fixed; 697 top: 0; 698 left: 0; 699 width: 100%; 700 height: 100%; 701 background-color: rgba(0, 0, 0, 0.5); 702 z-index: 998; 703 opacity: 0; 704 visibility: hidden; 705 transition: all 0.3s; 706 } 707 708 .koba-overlay.active { 709 opacity: 1; 710 visibility: visible; 711 } 712 713 /* ========================================== 714 RESPONSIVE 715 ========================================== */ 716 717 @media (max-width: 1400px) { 718 :root { 719 --koba-logo-width: 140px; 720 } 721 722 .koba-nav-link { 723 font-size: 12px; 724 padding: 0 5px; 725 } 726 727 .koba-megamenu-col2, 728 .koba-megamenu-col3 { 729 padding: 20px 15px; 730 } 731 } 732 733 @media (max-width: 1200px) { 734 :root { 735 --koba-logo-width: 120px; 736 } 737 738 .koba-nav-link { 739 font-size: 11px; 740 padding: 0 8px; 741 } 742 743 .koba-megamenu-title { 744 font-size: 16px; 745 } 746 747 .koba-megamenu-link { 748 font-size: 13px; 749 padding: 8px 8px; 750 } 751 } 752 753 @media (max-width: 992px) { 754 :root { 755 --koba-topbar-height: 50px; 756 --koba-navbar-height: 0px; 757 --koba-logo-width: 100px; 758 } 759 760 .koba-topbar-inner { 761 padding: 0 15px; 762 justify-content: flex-start; 763 } 764 765 .koba-topbar-menu { 766 display: none; 767 } 768 769 .koba-topbar-cta { 770 display: none; 771 } 772 773 .koba-hamburger { 774 display: flex; 775 } 776 777 .koba-logo { 778 position: relative; 779 width: auto; 780 max-width: 120px; 781 height: var(--koba-topbar-height); 782 margin: 0 auto; 783 } 784 785 .koba-navbar { 786 display: none; 787 } 788 789 .koba-mobile-menu { 790 display: block; 791 } 792 793 .koba-megamenu { 794 display: none; 795 } 796 } 797 798 @media (max-width: 576px) { 799 :root { 800 --koba-topbar-height: 50px; 801 --koba-logo-width: 80px; 802 } 803 804 .koba-logo img { 805 max-height: 35px; 806 } 807 808 .koba-search-input { 809 font-size: 16px; 810 } 811 } 812 813 814 /* ========================================== 815 FOOTER 816 ========================================== */ 817 818 .koba-footer { 819 background-color: #1a1a2e; 820 color: #fff; 821 margin-top: 60px; 822 } 823 824 .koba-footer-main { 825 padding: 60px 0 40px; 826 } 827 828 .koba-footer-container { 829 max-width: 1400px; 830 margin: 0 auto;
831 padding: 0 30px; 832 display: grid; 833 grid-template-columns: repeat(4, 1fr); 834 gap: 40px; 835 } 836 837 /* Colonnes */ 838 .koba-footer-col { 839 min-width: 0; 840 } 841 842 .koba-footer-title { 843 color: #fff; 844 font-size: 18px; 845 font-weight: 600; 846 margin: 0 0 20px 0; 847 padding-bottom: 12px; 848 border-bottom: 2px solid #d81f27; 849 display: inline-block; 850 } 851 852 /* Colonne About */ 853 .koba-footer-logo { 854 display: inline-block; 855 margin-bottom: 20px; 856 } 857 858 .koba-footer-logo img { 859 max-height: 70px; 860 width: auto; 861 } 862 863 .koba-footer-logo-text { 864 display: inline-block; 865 color: #fff; 866 font-size: 24px; 867 font-weight: 700; 868 text-decoration: none; 869 margin-bottom: 20px; 870 } 871 872 .koba-footer-description { 873 color: #b0b0b0; 874 font-size: 14px; 875 line-height: 1.7; 876 margin: 0 0 20px 0; 877 } 878 879 /* Réseaux sociaux */ 880 .koba-footer-social { 881 display: flex; 882 gap: 12px; 883 flex-wrap: wrap; 884 } 885 886 .koba-footer-social a { 887 display: flex; 888 align-items: center; 889 justify-content: center; 890 width: 40px; 891 height: 40px; 892 background-color: rgba(255, 255, 255, 0.1); 893 border-radius: 50%; 894 color: #fff; 895 transition: all 0.3s ease; 896 } 897 898 .koba-footer-social a:hover { 899 background-color: #d81f27; 900 transform: translateY(-3px); 901 } 902 903 /* Liste de contact */ 904 .koba-footer-info-list { 905 list-style: none; 906 margin: 0; 907 padding: 0; 908 } 909 910 .koba-footer-info-item { 911 display: flex; 912 align-items: flex-start; 913 gap: 12px; 914 margin-bottom: 18px; 915 color: #b0b0b0; 916 font-size: 14px; 917 line-height: 1.6; 918 } 919 920 .koba-footer-info-item svg { 921 flex-shrink: 0; 922 margin-top: 2px; 923 color: #d81f27; 924 } 925 926 .koba-footer-info-item a { 927 color: #b0b0b0; 928 text-decoration: none; 929 transition: color 0.2s; 930 } 931 932 .koba-footer-info-item a:hover { 933 color: #d81f27; 934 } 935 936 /* Statut dans le footer */ 937 .koba-footer-status { 938 margin-top: 20px; 939 } 940 941 .koba-footer-status .koba-opening-status { 942 background: transparent; 943 padding: 0; 944 border: none; 945 font-size: 13px; 946 } 947 948 .koba-footer-status .koba-status-open { 949 color: #28a745; 950 } 951 952 .koba-footer-status .koba-status-closed { 953 color: #dc3545; 954 } 955 956 /* Menu footer */ 957 .koba-footer-menu { 958 list-style: none; 959 margin: 0; 960 padding: 0; 961 } 962 963 .koba-footer-menu li { 964 margin-bottom: 12px; 965 } 966 967 .koba-footer-menu a { 968 color: #b0b0b0; 969 text-decoration: none; 970 font-size: 14px; 971 transition: all 0.2s; 972 display: inline-block; 973 } 974 975 .koba-footer-menu a:hover { 976 color: #d81f27; 977 padding-left: 5px; 978 } 979 980 /* Horaires dans footer */ 981 .koba-footer-hours .koba-horaires-table { 982 font-size: 13px; 983 background: transparent; 984 } 985 986 .koba-footer-hours .koba-horaires-table th, 987 .koba-footer-hours .koba-horaires-table td { 988 padding: 8px 10px; 989 border-color: rgba(255, 255, 255, 0.1); 990 color: #b0b0b0; 991 } 992 993 .koba-footer-hours .koba-horaires-table th { 994 background: rgba(255, 255, 255, 0.05); 995 color: #fff; 996 } 997 998 .koba-footer-hours .koba-horaires-table tr:hover { 999 background-color: rgba(255, 255, 255, 0.03); 1000 } 1001 1002 .koba-footer-hours .koba-horaires-table tr.koba-today { 1003 background-color: rgba(25, 117, 174, 0.2); 1004 } 1005 1006 .koba-footer-hours .koba-horaires-table .koba-badge-today { 1007 background: #d81f27; 1008 font-size: 9px; 1009 } 1010 1011 /* Barre de copyright */ 1012 .koba-footer-bottom { 1013 background-color: rgba(0, 0, 0, 0.3); 1014 padding: 20px 0; 1015 } 1016 1017 .koba-footer-bottom .koba-footer-container { 1018 display: flex; 1019 justify-content: space-between; 1020 align-items: center; 1021 gap: 20px; 1022 } 1023 1024 .koba-footer-copyright { 1025 margin: 0; 1026 color: #808080; 1027 font-size: 13px; 1028 } 1029 1030 .koba-footer-legal { 1031 display: flex; 1032 gap: 25px; 1033 } 1034 1035 .koba-footer-legal a { 1036 color: #808080; 1037 text-decoration: none; 1038 font-size: 13px; 1039 transition: color 0.2s; 1040 } 1041 1042 .koba-footer-legal a:hover { 1043 color: #d81f27; 1044 } 1045 1046 /* Responsive */ 1047 @media (max-width: 1200px) { 1048 .koba-footer-container { 1049 grid-template-columns: repeat(2, 1fr); 1050 } 1051 } 1052 1053 @media (max-width: 768px) { 1054 .koba-footer-main { 1055 padding: 40px 0 30px; 1056 } 1057 1058 .koba-footer-container { 1059 grid-template-columns: 1fr; 1060 gap: 30px; 1061 padding: 0 20px; 1062 } 1063 1064 .koba-footer-col { 1065 text-align: center; 1066 } 1067 1068 .koba-footer-title { 1069 display: block; 1070 } 1071 1072 .koba-footer-social { 1073 justify-content: center; 1074 } 1075 1076 .koba-footer-info-list { 1077 display: inline-block; 1078 text-align: left; 1079 } 1080 1081 .koba-footer-menu { 1082 display: inline-block; 1083 text-align: left; 1084 } 1085 1086 .koba-footer-hours .koba-horaires-table { 1087 display: inline-block; 1088 } 1089 1090 .koba-footer-bottom .koba-footer-container { 1091 flex-direction: column; 1092 text-align: center; 1093 } 1094 1095 .koba-footer-legal { 1096 flex-wrap: wrap; 1097 justify-content: center; 1098 } 1099 } 1100 1101/*# sourceURL=wp-block-library-inline-css */ 1102</style> 1103 1104<style id="classic-theme-styles-inline-css"> 1105/*! This file is auto-generated */ 1106.wp-block-button__link{color:#fff;background-color:#32373c;border-radius:9999px;box-shadow:none;text-decoration:none;
1106padding:calc(.667em + 2px) calc(1.333em + 2px);font-size:1.125em}.wp-block-file__button{background:#32373c;color:#fff;text-decoration:none} 1107/*# sourceURL=/wp-includes/css/classic-themes.min.css */ 1108</style> 1109 1110<style id="global-styles-inline-css"> 1111: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%);
1111--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;}
1111.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;} 1112/*# sourceURL=global-styles-inline-css */ 1113</style> 1114 1115<link rel='stylesheet' id='front-css-css' href='https://www.saint-florentin.fr/wp-content/plugins/WP_hob_publicite//asset/css/front.css?ver=7.1.2' media='all' /> 1116<link rel='stylesheet' id='hcb-frontend-css' href='https://www.saint-florentin.fr/wp-content/plugins/hob-cityhall-booking/assets/css/frontend.css?ver=1.2.0' media='all' /> 1117<style id="hcb-frontend-inline-css"> 1118 1119 :root { --hcb-primary: #2271b1; } 1120 .hcb-btn-primary, .hcb-booking-form button[type=submit] { background-color: #2271b1; border-color: #2271b1; } 1121 .hcb-btn-primary:hover { background-color: #2271b1cc; } 1122 1123/*# sourceURL=hcb-frontend-inline-css */ 1124</style> 1125<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' /> 1126<link rel='stylesheet' id='hob-fc-public-forms-css' href='https://www.saint-florentin.fr/wp-content/plugins/hob-formchat-pro/assets/css/public-forms.css?ver=1.29' media='all' /> 1127<link rel='stylesheet' id='leaflet-css' href='https://unpkg.com/[email protected]/dist/leaflet.css?ver=1.9.4' media='all' /> 1128<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' /> 1129<link rel='stylesheet' id='theme-style-css' href='https://www.saint-florentin.fr/wp-content/themes/hob-koba-civique/style.css?ver=7.1.2' media='all' /> 1130<link rel='stylesheet' id='hobrgpd-front-css' href='https://www.saint-florentin.fr/wp-content/plugins/hob-rgpd/assets/css/front.css?ver=1781167963' media='all' />
1131<script id="acy_front_messages_js-js-before"> 1132var ACYM_AJAX_START = "https://www.saint-florentin.fr/wp-admin/admin-ajax.php"; 1133 var ACYM_AJAX_PARAMS = "?action=acymailing_router&noheader=1&nocache=1790961225"; 1134 var ACYM_AJAX = ACYM_AJAX_START + ACYM_AJAX_PARAMS; 1135//# sourceURL=acy_front_messages_js-js-before 1136</script>
vendor: 1 bytes, line 1136
1136
1137<script id="acy_front_messages_js-js" src="https://www.saint-florentin.fr/wp-content/plugins/acymailing/media/js/front/messages.min.js?v=1790752554&ver=11.1.0"></script>
vendor: 1 bytes, line 1137
1137
1138<script id="jquery-core-js" src="https://www.saint-florentin.fr/wp-includes/js/jquery/jquery.min.js?ver=3.7.1"></script>
vendor: 1 bytes, line 1138
1138
1139<script id="jquery-migrate-js" src="https://www.saint-florentin.fr/wp-includes/js/jquery/jquery-migrate.min.js?ver=3.4.1"></script>
1139 1140<link rel="https://api.w.org/" href="https://www.saint-florentin.fr/wp-json/" /><link rel="EditURI" type="application/rsd+xml" title="RSD" href="https://www.saint-florentin.fr/xmlrpc.php?rsd" /> 1141<!-- Analytics by WP Statistics - https://wp-statistics.com --> 1142 <style> 1143 /* Overlay résultats */ 1144 .koba-search-overlay { 1145 position: fixed; 1146 top: 0; 1147 left: 0; 1148 right: 0; 1149 bottom: 0; 1150 background: var(--koba-primary, #2271b1); 1151 z-index: 9998; 1152 overflow-y: auto; 1153 padding-top: 120px; 1154 display: none; 1155 } 1156 1157 .koba-search-overlay.active { 1158 display: block; 1159 } 1160 1161 .koba-search-overlay-inner { 1162 max-width: 1140px; 1163 margin: 0 auto; 1164 padding: 10px; 1165 } 1166 1167 /* Catégorie */ 1168 .koba-search-category { 1169 margin-bottom: 40px; 1170 } 1171 1172 .koba-search-category-title { 1173 color: var(--koba-secondary, #faaf00); 1174 font-size: 1.8rem; 1175 font-weight: 600; 1176 margin: 0 0 15px 0; 1177 padding-bottom: 10px; 1178 border-bottom: 1px solid rgba(255,255,255,0.2); 1179 } 1180 1181 /* Liste */ 1182 .koba-search-list { 1183 list-style: none; 1184 margin: 0; 1185 padding: 0; 1186 } 1187 1188 .koba-search-item { 1189 border-bottom: 1px solid rgba(255,255,255,0.1); 1190 } 1191 1192 .koba-search-link { 1193 display: block; 1194 padding: 14px 0; 1195 color: #fff; 1196 text-decoration: none; 1197 font-size: 1.05rem; 1198 transition: padding-left 0.2s, color 0.2s; 1199 } 1200 1201 .koba-search-link:hover { 1202 padding-left: 15px; 1203 color: var(--koba-secondary, #faaf00); 1204 } 1205 1206 .koba-search-link mark { 1207 background: var(--koba-secondary, #faaf00); 1208 color: #1a1a2e; 1209 padding: 2px 4px; 1210 border-radius: 3px; 1211 } 1212 1213 .koba-search-date { 1214 color: rgba(255,255,255,0.5); 1215 font-size: 0.9rem; 1216 margin-left: 10px; 1217 } 1218 1219 /* Loading */ 1220 .koba-search-loading { 1221 text-align: center; 1222 padding: 60px; 1223 color: rgba(255,255,255,0.7); 1224 } 1225 1226 .koba-search-spinner { 1227 width: 40px; 1228 height: 40px; 1229 border: 3px solid rgba(255,255,255,0.2); 1230 border-top-color: #fff; 1231 border-radius: 50%; 1232 animation: koba-spin 0.8s linear infinite; 1233 margin: 0 auto 15px; 1234 } 1235 1236 @keyframes koba-spin { 1237 to { transform: rotate(360deg); } 1238 } 1239 1240 /* No results */ 1241 .koba-search-no-results { 1242 text-align: center; 1243 padding: 60px; 1244 color: rgba(255,255,255,0.6); 1245 } 1246 1247 .koba-search-no-results svg { 1248 width: 60px; 1249 height: 60px; 1250 margin-bottom: 20px; 1251 opacity: 0.4; 1252 } 1253 1254 @media (max-width: 768px) { 1255 .koba-search-overlay { 1256 padding-top: 100px; 1257 } 1258 .koba-search-overlay-inner { 1259 padding: 20px; 1260 } 1261 .koba-search-category-title { 1262 font-size: 1.4rem; 1263 } 1264 } 1265 </style> 1266 <style> 1267 /* Menu adaptatif */ 1268 .koba-nav-list { 1269 display: flex; 1270 flex-wrap: wrap; 1271 align-items: center; 1272 } 1273 1274 /* Mode compact (9-10 éléments) */ 1275 .koba-nav-list.koba-nav-compact .koba-nav-link { 1276 font-size: 12px; 1277 padding-left: 12px; 1278 padding-right: 12px; 1279 } 1280 1281 /* Mode très compact (11+ éléments) */ 1282 .koba-nav-list.koba-nav-very-compact .koba-nav-link { 1283 font-size: 10px; 1284 padding-left: 4px; 1285 padding-right: 4px; 1286 } 1287 @media (max-width: 1599px) { 1288 .koba-nav-list.koba-nav-compact .koba-nav-link { 1289 font-size: 12px; 1290 padding-left: 8px; 1291 padding-right: 8px; 1292 } 1293 .koba-nav-list.koba-nav-very-compact .koba-nav-link { 1294 font-size: 9px; 1295 padding-left: 0px; 1296 padding-right: 0px; 1297 } 1298 } 1299 @media (max-width: 1299px) { 1300 .koba-nav-list.koba-nav-compact .koba-nav-link { 1301 font-size: 10px; 1302 padding-left: 8px; 1303 padding-right: 8px; 1304 } 1305 .koba-nav-list.koba-nav-very-compact .koba-nav-link { 1306 font-size: 8px; 1307 padding-left: 4px; 1308 padding-right: 4px; 1309 } 1310 } 1311 @media (max-width: 1199px) { 1312 .koba-nav-list.koba-nav-compact .koba-nav-link { 1313 font-size: 9px; 1314 padding-left: 3px; 1315 padding-right: 3px; 1316 } 1317 .koba-nav-list.koba-nav-very-compact .koba-nav-link { 1318 font-size: 8px; 1319 padding-left: 2px; 1320 padding-right: 2px; 1321 } 1322 } 1323 </style> 1324 <meta name="generator" content="Koba Civique By Hob" /> 1325<style id='koba-options-css'> 1326.koba-newsletter, .koba-option-newsletter, [data-koba-option="newsletter"] { display: none !important; } 1327.koba-rss, .koba-option-rss, [data-koba-option="rss"] { display: none !important; } 1328.koba-chat, .koba-option-chat, [data-koba-option="chat"] { display: none !important; } 1329.koba-survey, .koba-option-survey, [data-koba-option="survey"] { display: none !important; }
1330.koba-video_slider, .koba-option-video_slider, [data-koba-option="video_slider"] { display: none !important; } 1331.koba-payfip, .koba-option-payfip, [data-koba-option="payfip"] { display: none !important; } 1332.koba-fichiers, .koba-option-fichiers, [data-koba-option="fichiers"] { display: none !important; } 1333.koba-municipal, .koba-option-municipal, [data-koba-option="municipal"] { display: none !important; } 1334.koba-app_citoyen, .koba-option-app_citoyen, [data-koba-option="app_citoyen"] { display: none !important; } 1335.koba-franceconnect, .koba-option-franceconnect, [data-koba-option="franceconnect"] { display: none !important; } 1336.koba-voisinvigilant, .koba-option-voisinvigilant, [data-koba-option="voisinvigilant"] { display: none !important; } 1337.koba-actes, .koba-option-actes, [data-koba-option="actes"] { display: none !important; } 1338.koba-affichage_dynamique, .koba-option-affichage_dynamique, [data-koba-option="affichage_dynamique"] { display: none !important; } 1339.koba-rgpd_avance, .koba-option-rgpd_avance, [data-koba-option="rgpd_avance"] { display: none !important; } 1340.koba-multi_langues, .koba-option-multi_langues, [data-koba-option="multi_langues"] { display: none !important; } 1341.koba-carte_dynamique, .koba-option-carte_dynamique, [data-koba-option="carte_dynamique"] { display: none !important; } 1342.koba-reservation_salles, .koba-option-reservation_salles, [data-koba-option="reservation_salles"] { display: none !important; } 1343.koba-locaux_pro, .koba-option-locaux_pro, [data-koba-option="locaux_pro"] { display: none !important; } 1344.koba-statistiques, .koba-option-statistiques, [data-koba-option="statistiques"] { display: none !important; } 1345.koba-courrier, .koba-option-courrier, [data-koba-option="courrier"] { display: none !important; } 1346.koba-panneaupocket_iframe, .koba-option-panneaupocket_iframe, [data-koba-option="panneaupocket_iframe"] { display: none !important; } 1347.koba-panneaupocket_api, .koba-option-panneaupocket_api, [data-koba-option="panneaupocket_api"] { display: none !important; } 1348.koba-espace_collaboratif, .koba-option-espace_collaboratif, [data-koba-option="espace_collaboratif"] { display: none !important; } 1349.koba-actu_association, .koba-option-actu_association, [data-koba-option="actu_association"] { display: none !important; } 1350.koba-billetterie, .koba-option-billetterie, [data-koba-option="billetterie"] { display: none !important; } 1351.koba-accessibilite, .koba-option-accessibilite, [data-koba-option="accessibilite"] { display: none !important; } 1352.koba-espace_citoyen, .koba-option-espace_citoyen, [data-koba-option="espace_citoyen"] { display: none !important; } 1353.koba-visio_conference, .koba-option-visio_conference, [data-koba-option="visio_conference"] { display: none !important; } 1354.koba-apidae, .koba-option-apidae, [data-koba-option="apidae"] { display: none !important; } 1355.koba-prise_rdv, .koba-option-prise_rdv, [data-koba-option="prise_rdv"] { display: none !important; } 1356.koba-marche_public, .koba-option-marche_public, [data-koba-option="marche_public"] { display: none !important; } 1357.koba-portail_famille, .koba-option-portail_famille, [data-koba-option="portail_famille"] { display: none !important; } 1358.koba-webcam, .koba-option-webcam, [data-koba-option="webcam"] { display: none !important; } 1359.koba-reseaux_sociaux, .koba-option-reseaux_sociaux, [data-koba-option="reseaux_sociaux"] { display: none !important; } 1360.koba-archives_opendata, .koba-option-archives_opendata, [data-koba-option="archives_opendata"] { display: none !important; } 1361.koba-encombrants_dechets, .koba-option-encombrants_dechets, [data-koba-option="encombrants_dechets"] { display: none !important; } 1362.koba-zapette, .koba-option-zapette, [data-koba-option="zapette"] { display: none !important; } 1363.koba-flipbook, .koba-option-flipbook, [data-koba-option="flipbook"] { display: none !important; } 1364.koba-extranet_commissions, .koba-option-extranet_commissions, [data-koba-option="extranet_commissions"] { display: none !important; } 1365.koba-sms_alerte, .koba-option-sms_alerte, [data-koba-option="sms_alerte"] { display: none !important; } 1366.koba-recherche_avancee, .koba-option-recherche_avancee, [data-koba-option="recherche_avancee"] { display: none !important; } 1367</style> 1368</head> 1369 1370<body class="home blog wp-theme-hob-koba-civique site-id-66 koba-has-alertes"> 1371 <style> 1372 #koba-upsell-banner { 1373 display: none; /* révélé par JS uniquement en mode PWA standalone */ 1374 align-items: flex-start; 1375 gap: 10px; 1376 background: #1975ae; 1377 color: #fff; 1378 padding: calc(10px + env(safe-area-inset-top)) 14px 10px; 1379 font-family: inherit; 1380 font-size: .82rem; 1381 line-height: 1.4; 1382 } 1383 #koba-upsell-banner.koba-upsell-visible { display: flex; 1384 z-index: 2147483647; 1385 position: relative; } 1386 #koba-upsell-banner .kub-text { flex: 1; min-width: 0; } 1387 #koba-upsell-banner .kub-close { 1388 background: rgba(255,255,255,.18); 1389 border: none; 1390 color: #fff; 1391 font-size: .95rem; 1392 line-height: 1; 1393 cursor: pointer; 1394 padding: 6px 9px; 1395 border-radius: 6px; 1396 flex-shrink: 0; 1397 } 1398 #koba-upsell-banner .kub-close:hover { background: rgba(255,255,255,.3); } 1399 </style> 1400 1401 <div id="koba-upsell-banner" role="alert">
1402 <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> 1403 <button class="kub-close" id="koba-upsell-close" aria-label="Fermer">✕</button> 1404 </div> 1405 1406
1406<script> 1407 (function() { 1408 var isPwa = window.matchMedia('(display-mode: standalone)').matches 1409 || window.navigator.standalone === true; 1410 if (!isPwa) return; // â retirer cette ligne pour afficher aussi dans le navigateur 1411 1412 var KEY = 'koba_upsell_closed'; 1413 if (localStorage.getItem(KEY) === '1') return; 1414 1415 function show() { 1416 var b = document.getElementById('koba-upsell-banner'); 1417 if (!b) return; 1418 b.classList.add('koba-upsell-visible'); 1419 1420 // Comptage : 1 vue par session (ouverture de l'app) 1421 if (!sessionStorage.getItem('koba_upsell_counted')) { 1422 sessionStorage.setItem('koba_upsell_counted', '1'); 1423 var fd = new FormData(); 1424 fd.append('action', 'koba_upsell_view'); 1425 fetch('https://www.saint-florentin.fr/wp-admin/admin-ajax.php', { 1426 method: 'POST', body: fd, credentials: 'include' 1427 }).catch(function(){}); 1428 } 1429 1430 var c = document.getElementById('koba-upsell-close'); 1431 if (c) c.addEventListener('click', function() { 1432 b.classList.remove('koba-upsell-visible'); 1433 localStorage.setItem(KEY, '1'); 1434 }); 1435 } 1436 if (document.readyState !== 'loading') show(); 1437 else document.addEventListener('DOMContentLoaded', show); 1438 })(); 1439 </script>
1439 1440 1441<a class="skip-link visually-hidden-focusable" href="#main-content">Aller au contenu principal</a> 1442 1443<header class="koba-header" role="banner"> 1444 <!-- Container principal avec position relative --> 1445 <div class="koba-header-wrapper"> 1446 1447 <!-- Logo - couvre les deux barres --> 1448 <a href="https://www.saint-florentin.fr/" class="koba-logo"> 1449 <img src="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/02/logo-header-1770206920.jpg" alt="COMMUNE DE SAINT-FLORENTIN - Accueil"> 1450 </a> 1451 1452 <!-- Barre supérieure (orange) --> 1453 <div class="koba-topbar"> 1454 <div class="koba-topbar-inner"> 1455 <!-- Hamburger (mobile uniquement) --> 1456 <button class="koba-hamburger" id="koba-hamburger" aria-label="Menu"> 1457 <span></span> 1458 <span></span> 1459 <span></span> 1460 </button> 1461 1462 <!-- Menu secondaire gauche (desktop) --> 1463 <nav class="koba-topbar-menu"> 1464 <ul class="koba-topbar-list"> 1465 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 1466 <a href="https://www.saint-florentin.fr/">ACCUEIL</a> 1467 </li> 1468 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 1469 <a href="https://www.saint-florentin.fr/annuaire/">ANNUAIRE</a> 1470 </li> 1471 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 1472 <a href="https://www.saint-florentin.fr/contact/">NOUS CONTACTER</a> 1473 </li> 1474 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 1475 <a href="https://www.saint-florentin.fr/emploi/">EMPLOI</a> 1476 </li> 1477 </ul> 1478 </nav> 1479 1480 <!-- Lien droite (desktop) --> 1481 1482 1483 </div> 1484 </div> 1485 1486 <!-- Barre principale (bleu) --> 1487 <div class="koba-navbar"> 1488 <div class="koba-navbar-inner"> 1489 1490 <!-- Menu principal (desktop) --> 1491 <nav class="koba-main-nav" id="koba-main-nav"> 1492 1493 <ul class="koba-nav-list"> 1494 <li class="koba-nav-item has-megamenu"> 1495 <a href="#" class="koba-nav-link" data-megamenu="6"> 1496 Vie municipale <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"> 1497 <path d="M6 9l6 6 6-6"/> 1498 </svg> 1499 </a> 1500 1501 <div class="koba-megamenu" id="megamenu-6"> 1502 <div class="koba-megamenu-inner"> 1503 <div class="koba-megamenu-col1"></div> 1504 1505 <div class="koba-megamenu-col2"> 1506 <span class="koba-megamenu-title">Vie municipale</span> 1507 </div> 1508 1509 <div class="koba-megamenu-col3"> 1510 <ul class="koba-megamenu-list"> 1511 <li class="koba-megamenu-item "> 1512 <a href="https://www.saint-florentin.fr/articles/le-conseil-municipal" class="koba-megamenu-link"> 1513 Conseil municipal </a> 1514 1515 </li> 1516 <li class="koba-megamenu-item "> 1517 <a href="https://www.saint-florentin.fr/articles/compte-rendus-de-conseil-municipal" class="koba-megamenu-link"> 1518 Comptes-rendus des conseils municipaux </a> 1519 1520 </li> 1521 <li class="koba-megamenu-item has-submenu"> 1522 <a href="#" class="koba-megamenu-link"> 1523 Délibérations du conseil municipal <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1524 <path d="M9 18l6-6-6-6"/> 1525 </svg> 1526 </a> 1527 1528 <ul class="koba-megamenu-sublist"> 1529 <li class=""> 1530 <a href="https://www.saint-florentin.fr/articles/deliberations-du-conseil-municipal-2026"> 1531 Délibérations du conseil municipal 2026 </a> 1532 </li> 1533 <li class=""> 1534 <a href="https://www.saint-florentin.fr/articles/deliberations-du-conseil-municipal-2025"> 1535 Délibérations du conseil municipal 2025 </a> 1536 </li> 1537 <li class=""> 1538 <a href="https://www.saint-florentin.fr/articles/deliberations-du-conseil-municipal-2024"> 1539 Délibérations du conseil municipal 2024 </a> 1540 </li> 1541 <li class=""> 1542 <a href="https://www.saint-florentin.fr/articles/deliberation-du-conseil-municipal"> 1543 Délibérations du conseil municipal 2022-2023 </a> 1544 </li> 1545 </ul> 1546 </li> 1547 <li class="koba-megamenu-item has-submenu"> 1548 <a href="#" class="koba-megamenu-link"> 1549 Arrêtés municipaux <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1550 <path d="M9 18l6-6-6-6"/> 1551 </svg> 1552 </a> 1553 1554 <ul class="koba-megamenu-sublist"> 1555 <li class=""> 1556 <a href="https://www.saint-florentin.fr/articles/arretes-municipaux-2025"> 1557 Arrêtés municipaux (hors police/urbanisme) 2025-2026 </a> 1558 </li> 1559 <li class=""> 1560 <a href="https://www.saint-florentin.fr/articles/arretes-municipaux-divers"> 1561 Arrêtés municipaux 2022-2024 </a> 1562 </li> 1563 <li class="has-sub-submenu"> 1564 <a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police"> 1565 Arrêtés municipaux - police <svg width="10" height="10" viewB
1565ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1566 <path d="M9 18l6-6-6-6"/> 1567 </svg> 1568 </a> 1569 <ul class="koba-megamenu-sub-sublist"> 1570 <li> 1571 <a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police-2e-semestre-2026/"> 1572 Arrêtés municipaux – police 2e semestre 2026 </a> 1573 </li> 1574 <li> 1575 <a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police-1er-trimestre-2026"> 1576 Arrêtés municipaux - police 1er trimestre 2026 </a> 1577 </li> 1578 <li> 1579 <a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police-4e-trimestre-2025"> 1580 Arrêtés municipaux - police 4e trimestre 2025 </a> 1581 </li> 1582 <li> 1583 <a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police-2e-semestre-2025"> 1584 Arrêtés municipaux - police 3e trimestre 2025 </a> 1585 </li> 1586 <li> 1587 <a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police-1er-semestre-2025"> 1588 Arrêtés municipaux - police 1er semestre 2025 </a> 1589 </li> 1590 </ul> 1591 </li> 1592 </ul> 1593 </li> 1594 <li class="koba-megamenu-item "> 1595 <a href="https://www.saint-florentin.fr/articles/marches-publics" class="koba-megamenu-link"> 1596 Marchés publics </a> 1597 1598 </li> 1599 </ul> 1600 </div> 1601 1602 <div class="koba-megamenu-col4"></div> 1603 </div> 1604 </div> 1605 </li> 1606 <li class="koba-nav-item has-megamenu"> 1607 <a href="#" class="koba-nav-link" data-megamenu="23"> 1608 A votre service <svg class="koba-nav-arrow" width="10" height="10" viewB
1608ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1609 <path d="M6 9l6 6 6-6"/> 1610 </svg> 1611 </a> 1612 1613 <div class="koba-megamenu" id="megamenu-23"> 1614 <div class="koba-megamenu-inner"> 1615 <div class="koba-megamenu-col1"></div> 1616 1617 <div class="koba-megamenu-col2"> 1618 <span class="koba-megamenu-title">A votre service</span> 1619 </div> 1620 1621 <div class="koba-megamenu-col3"> 1622 <ul class="koba-megamenu-list"> 1623 <li class="koba-megamenu-item "> 1624 <a href="https://www.saint-florentin.fr/articles/les-services-municipaux" class="koba-megamenu-link"> 1625 Coordonnées des services municipaux </a> 1626 1627 </li> 1628 <li class="koba-megamenu-item "> 1629 <a href="https://www.saint-florentin.fr/articles/maip" class="koba-megamenu-link"> 1630 Maison France Services </a> 1631 1632 </li> 1633 <li class="koba-megamenu-item "> 1634 <a href="https://www.saint-florentin.fr/articles/ccas" class="koba-megamenu-link"> 1635 Centre communal d'action sociale (CCAS) </a> 1636 1637 </li> 1638 <li class="koba-megamenu-item has-submenu"> 1639 <a href="#" class="koba-megamenu-link"> 1640 Police <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1641 <path d="M9 18l6-6-6-6"/> 1642 </svg> 1643 </a> 1644 1645 <ul class="koba-megamenu-sublist"> 1646 <li class=""> 1647 <a href="https://www.saint-florentin.fr/articles/police-municipale"> 1648 Accueil et mission </a> 1649 </li> 1650 <li class=""> 1651 <a href="https://www.saint-florentin.fr/articles/arretes-de-police-du-maire"> 1652 Police du maire </a> 1653 </li> 1654 <li class=""> 1655 <a href="https://www.saint-florentin.fr/articles/tranquilite-vacances"> 1656 Opération tranquillité vacances </a> 1657 </li> 1658 <li class=""> 1659 <a href="https://www.saint-florentin.fr/articles/declaration-de-chiens"> 1660 Déclaration de chien </a> 1661 </li> 1662 <li class=""> 1663 <a href="https://www.saint-florentin.fr/articles/dicrim"> 1664 Document Risques Majeurs </a> 1665 </li> 1666 <li class=""> 1667 <a href="https://www.saint-florentin.fr/articles/fabriquez-votre-disque-de-stationnement-europeen-zone-bleue"> 1668 Zones "bleues" </a> 1669 </li> 1670 </ul> 1671 </li> 1672 <li class="koba-megamenu-item "> 1673 <a href="https://www.saint-florentin.fr/articles/annuaire-de-l-habitant" class="koba-megamenu-link"> 1674 Annuaires des services publics </a> 1675 1676 </li> 1677 <li class="koba-megamenu-item "> 1678 <a href="https://www.saint-florentin.fr/articles/adresses-utiles" class="koba-megamenu-link"> 1679 Adresses utiles </a> 1680 1681 </li> 1682 <li class="koba-megamenu-item "> 1683 <a href="https://www.saint-florentin.fr/articles/salles-municipales" class="koba-megamenu-link"> 1684 Salles municipales </a> 1685 1686 </li> 1687 <li class="koba-megamenu-item has-submenu"> 1688 <a href="#" class="koba-megamenu-link"> 1689 Transports <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1690 <path d="M9 18l6-6-6-6"/> 1691 </svg> 1692 </a> 1693 1694 <ul class="koba-megamenu-sublist"> 1695 <li class=""> 1696 <a href="https://www.saint-florentin.fr/articles/blablacar"> 1697 Blablacar </a> 1698 </li> 1699 <li class=""> 1700 <a href="https://www.saint-florentin.fr/articles/train"> 1701 Train </a> 1702 </li> 1703 <li class=""> 1704 <a href="https://www.saint-florentin.fr/articles/transports"> 1705 Bus </a> 1706 </li> 1707 </ul> 1708 </li> 1709 <li class="koba-megamenu-item "> 1710 <a href="https://cc-sereinarmance.fr/reduire-trier-et-valoriser-les-dechets/" class="koba-megamenu-link"> 1711 Déchets </a> 1712 1713 </li> 1714 </ul> 1715 </div> 1716 1717 <div class="koba-megamenu-col4"></div> 1718 </div> 1719 </div> 1720 </li> 1721 <li class="koba-nav-item has-megamenu"> 1722 <a href="#" class="koba-nav-link" data-megamenu="42"> 1723 Démarches et formalités <svg class="koba-nav-arrow" width="10" height="10" viewB
1723ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1724 <path d="M6 9l6 6 6-6"/> 1725 </svg> 1726 </a> 1727 1728 <div class="koba-megamenu" id="megamenu-42"> 1729 <div class="koba-megamenu-inner"> 1730 <div class="koba-megamenu-col1"></div> 1731 1732 <div class="koba-megamenu-col2"> 1733 <span class="koba-megamenu-title">Démarches et formalités</span> 1734 </div> 1735 1736 <div class="koba-megamenu-col3"> 1737 <ul class="koba-megamenu-list"> 1738 <li class="koba-megamenu-item "> 1739 <a href="https://www.saint-florentin.fr/articles/carte-d-identite" class="koba-megamenu-link"> 1740 Carte d'identité / Passeport </a> 1741 1742 </li> 1743 <li class="koba-megamenu-item "> 1744 <a href="https://www.saint-florentin.fr/articles/mariages" class="koba-megamenu-link"> 1745 Mariage </a> 1746 1747 </li> 1748 <li class="koba-megamenu-item "> 1749 <a href="https://www.saint-florentin.fr/articles/cimetiere" class="koba-megamenu-link"> 1750 Cimetières </a> 1751 1752 </li> 1753 <li class="koba-megamenu-item has-submenu"> 1754 <a href="#" class="koba-megamenu-link"> 1755 Urbanisme <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1756 <path d="M9 18l6-6-6-6"/> 1757 </svg> 1758 </a> 1759 1760 <ul class="koba-megamenu-sublist"> 1761 <li class=""> 1762 <a href="https://www.saint-florentin.fr/articles/declaration-de-travaux-permis-de-construire"> 1763 Déclaration de travaux / permis de construire </a> 1764 </li> 1765 <li class="has-sub-submenu"> 1766 <a href="#"> 1767 Arrêtés municipaux urbanisme <svg width="10" height="10" viewB
1767ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1768 <path d="M9 18l6-6-6-6"/> 1769 </svg> 1770 </a> 1771 <ul class="koba-megamenu-sub-sublist"> 1772 <li> 1773 <a href="https://www.saint-florentin.fr/articles/urbanisme-demande-de-permis-de-construire-et-declarations-prealables"> 1774 Demandes d'urbanisme </a> 1775 </li> 1776 <li> 1777 <a href="https://www.saint-florentin.fr/articles/arretes-municipaux-urbanisme-2024"> 1778 Arrêtés municipaux - urbanisme 2024 </a> 1779 </li> 1780 <li> 1781 <a href="https://www.saint-florentin.fr/articles/arretes-municipaux"> 1782 Arrêtés municipaux - urbanisme 2023 </a> 1783 </li> 1784 <li> 1785 <a href="https://www.saint-florentin.fr/articles/arretes-urbanisme-2022"> 1786 Arrêtés municipaux - urbanisme 2022 </a> 1787 </li> 1788 </ul> 1789 </li> 1790 <li class=""> 1791 <a href="https://www.saint-florentin.fr/articles/cadastre"> 1792 Plan local d'urbanisme </a> 1793 </li> 1794 <li class=""> 1795 <a href="https://www.saint-florentin.fr/articles/matrice-cadastrale-releve-de-propriete"> 1796 Matrice cadastrale / relevé de propriété </a> 1797 </li> 1798 <li class=""> 1799 <a href="https://www.saint-florentin.fr/articles/nuancier-ral-saint-florentin"> 1800 Nuancier RAL Saint-Florentin </a> 1801 </li> 1802 </ul> 1803 </li> 1804 <li class="koba-megamenu-item "> 1805 <a href="https://www.saint-florentin.fr/articles/permis-de-louer-mode-d-emploi" class="koba-megamenu-link"> 1806 Permis de louer </a> 1807 1808 </li> 1809 <li class="koba-megamenu-item "> 1810 <a href="https://www.saint-florentin.fr/articles/eau-assainissement" class="koba-megamenu-link"> 1811 Eau / assainissement </a> 1812 1813 </li> 1814 </ul> 1815 </div> 1816 1817 <div class="koba-megamenu-col4"></div> 1818 </div> 1819 </div> 1820 </li> 1821 <li class="koba-nav-item has-megamenu"> 1822 <a href="#" class="koba-nav-link" data-megamenu="58"> 1823 Culture / loisirs <svg class="koba-nav-arrow" width="10" height="10" viewB
1823ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1824 <path d="M6 9l6 6 6-6"/> 1825 </svg> 1826 </a> 1827 1828 <div class="koba-megamenu" id="megamenu-58"> 1829 <div class="koba-megamenu-inner"> 1830 <div class="koba-megamenu-col1"></div> 1831 1832 <div class="koba-megamenu-col2"> 1833 <span class="koba-megamenu-title">Culture / loisirs</span> 1834 </div> 1835 1836 <div class="koba-megamenu-col3"> 1837 <ul class="koba-megamenu-list"> 1838 <li class="koba-megamenu-item "> 1839 <a href="https://www.saint-florentin.fr/articles/horaires-et-fonctionnement" class="koba-megamenu-link"> 1840 Médiathèque </a> 1841 1842 </li> 1843 <li class="koba-megamenu-item "> 1844 <a href="http://www.caleflow.fr/" class="koba-megamenu-link"> 1845 Centre aquatique intercommunal Le Flow </a> 1846 1847 </li> 1848 <li class="koba-megamenu-item "> 1849 <a href="https://www.saint-florentin.fr/articles/mediatheque-numerique-de-l-yonne" class="koba-megamenu-link"> 1850 Médiathèque numérique de l'Yonne </a> 1851 1852 </li> 1853 <li class="koba-megamenu-item "> 1854 <a href="https://www.musee-de-saint-florentin.fr/home.html" class="koba-megamenu-link"> 1855 Musée </a> 1856 1857 </li> 1858 <li class="koba-megamenu-item "> 1859 <a href="https://cc-sereinarmance.fr/bienvenue-a-lecole-de-musique/" class="koba-megamenu-link"> 1860 Ãcole de musique </a> 1861 1862 </li> 1863 <li class="koba-megamenu-item has-submenu"> 1864 <a href="#" class="koba-megamenu-link"> 1865 Associations <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1866 <path d="M9 18l6-6-6-6"/> 1867 </svg> 1868 </a> 1869 1870 <ul class="koba-megamenu-sublist"> 1871 <li class=""> 1872 <a href="https://www.saint-florentin.fr/articles/office-des-associations-florentinoises"> 1873 Office des associations </a> 1874 </li> 1875 <li class=""> 1876 <a href="https://www.saint-florentin.fr/articles/associations"> 1877 Liste des associations </a> 1878 </li> 1879 <li class=""> 1880 <a href="https://www.saint-florentin.fr/articles/associations-demande-de-subventions"> 1881 Demande de subventions </a> 1882 </li> 1883 </ul> 1884 </li> 1885 <li class="koba-megamenu-item "> 1886 <a href="https://www.saint-florentin.fr/articles/jumelage" class="koba-megamenu-link"> 1887 Jumelage </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="69"> 1899 Jeunesse <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-69"> 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">Jeunesse</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.saint-florentin.fr/articles/activites-et-contact" class="koba-megamenu-link"> 1916 Service municipal jeunesse </a> 1917 1918 </li> 1919 <li class="koba-megamenu-item has-submenu"> 1920 <a href="#" class="koba-megamenu-link"> 1921 Ãcoles <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1922 <path d="M9 18l6-6-6-6"/> 1923 </svg> 1924 </a> 1925 1926 <ul class="koba-megamenu-sublist"> 1927 <li class=""> 1928 <a href="https://www.saint-florentin.fr/articles/inscriptions-scolaires"> 1929 Ecoles et inscriptions </a> 1930 </li> 1931 <li class=""> 1932 <a href="http://col89-marcelayme.ac-dijon.fr/index.php"> 1933 Collège </a> 1934 </li> 1935 </ul> 1936 </li> 1937 <li class="koba-megamenu-item has-submenu"> 1938 <a href="#" class="koba-megamenu-link"> 1939 Cantine <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1940 <path d="M9 18l6-6-6-6"/> 1941 </svg> 1942 </a> 1943 1944 <ul class="koba-megamenu-sublist"> 1945 <li class=""> 1946 <a href="https://www.saint-florentin.fr/articles/reglement-du-restaurant-scolaire"> 1947 Inscription cantine </a> 1948 </li> 1949 <li class=""> 1950 <a href="https://connect1.3douest.com/connexion?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIzZG91ZXN0c2VydmVyIiwic3ViIjoiM2RvdWVzdC1hdXRoLXNlcnZlciIsInR5cCI6IkpXVCIsImF1ZCI6eyJ0eXBlIjoiY29sbGVjdGl2aXRlIiwicmVkaXJlY3RfdXJpIjoiaHR0cHM6XC9cL2dlc3Rpb24ubG9naWNpZWwtZW5mYW5jZS5mclwvY29ubmV4aW9uRnJvbUF1dGgiLCJhcGlfZ2xvYmFsX2tleSI6ImJjZTUwNDVkZTI0YjIwZTA4ODAzYTQwNTA4YTk3NDUxIiwiYXBpX2tleSI6ImNhbnRpbmUyIn0sImlhdCI6MTY3OTQ4MD
1950MzMH0.8dU9iLoYTTApYpUdT-GTzdNbv-VC0-jK1hCENVEdWAw&api_key=cantine2"> 1951 Portail familles </a> 1952 </li> 1953 </ul> 1954 </li> 1955 <li class="koba-megamenu-item has-submenu"> 1956 <a href="#" class="koba-megamenu-link"> 1957 Transports scolaires <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1958 <path d="M9 18l6-6-6-6"/> 1959 </svg> 1960 </a> 1961 1962 <ul class="koba-megamenu-sublist"> 1963 <li class=""> 1964 <a href="https://www.saint-florentin.fr/articles/transports-scolaires"> 1965 Transports scolaires écoles </a> 1966 </li> 1967 <li class=""> 1968 <a href="https://www.bourgognefranchecomte.fr/transports-scolaires-de-lyonne"> 1969 Transports scolaires collèges et lycées </a> 1970 </li> 1971 </ul> 1972 </li> 1973 <li class="koba-megamenu-item "> 1974 <a href="https://www.saint-florentin.fr/articles/accueil-periscolaire-municipal" class="koba-megamenu-link"> 1975 Accueil périscolaire </a> 1976 1977 </li> 1978 <li class="koba-megamenu-item "> 1979 <a href="https://www.saint-florentin.fr/articles/le-centre-de-loisirs" class="koba-megamenu-link"> 1980 Centre aéré </a> 1981 1982 </li> 1983 <li class="koba-megamenu-item "> 1984 <a href="https://www.saint-florentin.fr/articles/l-association" class="koba-megamenu-link"> 1985 Espace famille florentinois </a> 1986 1987 </li> 1988 <li class="koba-megamenu-item has-submenu"> 1989 <a href="#" class="koba-megamenu-link"> 1990 Pôle petite enfance <svg width="12" height="12" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 1991 <path d="M9 18l6-6-6-6"/> 1992 </svg> 1993 </a> 1994 1995 <ul class="koba-megamenu-sublist"> 1996 <li class=""> 1997 <a href="https://www.la-maison-bleue.fr/creche/bourgogne-franche-comte/yonne/saint-florentin/tom-pouce"> 1998 Crèche Tom Pouce </a> 1999 </li> 2000 <li class=""> 2001 <a href="https://cc-sereinarmance.fr/les-relais-petite-enfance-pour-favoriser-lepanouissement-des-enfants/"> 2002 Relais d'assistants maternels </a> 2003 </li> 2004 </ul> 2005 </li> 2006 </ul> 2007 </div> 2008 2009 <div class="koba-megamenu-col4"></div> 2010 </div> 2011 </div> 2012 </li> 2013 <li class="koba-nav-item has-megamenu"> 2014 <a href="#" class="koba-nav-link" data-megamenu="86"> 2015 Tourisme <svg class="koba-nav-arrow" width="10" height="10" viewB
2015ox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 2016 <path d="M6 9l6 6 6-6"/> 2017 </svg> 2018 </a> 2019 2020 <div class="koba-megamenu" id="megamenu-86"> 2021 <div class="koba-megamenu-inner"> 2022 <div class="koba-megamenu-col1"></div> 2023 2024 <div class="koba-megamenu-col2"> 2025 <span class="koba-megamenu-title">Tourisme</span> 2026 </div> 2027 2028 <div class="koba-megamenu-col3"> 2029 <ul class="koba-megamenu-list"> 2030 <li class="koba-megamenu-item "> 2031 <a href="https://www.saint-florentin.fr/articles/marches" class="koba-megamenu-link"> 2032 Le marché </a> 2033 2034 </li> 2035 <li class="koba-megamenu-item "> 2036 <a href="https://serein-armance.fr/" class="koba-megamenu-link"> 2037 Office de tourisme </a> 2038 2039 </li> 2040 <li class="koba-megamenu-item "> 2041 <a href="https://www.saint-florentin.fr/articles/camping-de-l-armancon" class="koba-megamenu-link"> 2042 Camping municipal de l'Armançon** </a> 2043 2044 </li> 2045 </ul> 2046 </div> 2047 2048 <div class="koba-megamenu-col4"></div> 2049 </div> 2050 </div> 2051 </li> 2052 <li class="koba-nav-item has-megamenu"> 2053 <a href="#" class="koba-nav-link" data-megamenu="90"> 2054 Projets <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"> 2055 <path d="M6 9l6 6 6-6"/> 2056 </svg> 2057 </a> 2058 2059 <div class="koba-megamenu" id="megamenu-90"> 2060 <div class="koba-megamenu-inner"> 2061 <div class="koba-megamenu-col1"></div> 2062 2063 <div class="koba-megamenu-col2"> 2064 <span class="koba-megamenu-title">Projets</span> 2065 </div> 2066 2067 <div class="koba-megamenu-col3"> 2068 <ul class="koba-megamenu-list"> 2069 <li class="koba-megamenu-item "> 2070 <a href="https://www.saint-florentin.fr/articles/amenagement-dun-skatepark-et-dun-terrain-de-cross/" class="koba-megamenu-link"> 2071 Aménagement d’un skatepark et d’un terrain de cross </a> 2072 2073 </li> 2074 <li class="koba-megamenu-item "> 2075 <a href="https://www.saint-florentin.fr/articles/petite-ville-de-demain" class="koba-megamenu-link"> 2076 Petite Ville de Demain </a> 2077 2078 </li> 2079 </ul> 2080 </div> 2081 2082 <div class="koba-megamenu-col4"></div> 2083 </div> 2084 </div> 2085 </li> 2086 </ul> 2087 </nav> 2088 2089 <!-- Bouton recherche (carré) --> 2090 <button class="koba-search-toggle" id="koba-search-toggle" aria-label="Ouvrir la recherche" aria-expanded="false" aria-controls="koba-search-bar"> 2091 <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"> 2092 <circle cx="11" cy="11" r="8"/> 2093 <path d="M21 21l-4.35-4.35"/> 2094 </svg> 2095 </button> 2096 2097 <!-- Barre de recherche --> 2098<div class="koba-search-bar" id="koba-search-bar"> 2099 <div class="koba-search-bar-inner"> 2100 <form role="search" method="get" action="https://www.saint-florentin.fr/" class="koba-search-form"> 2101 <label for="koba-search-input" class="visually-hidden">Rechercher sur le site</label> 2102 <input type="search" name="s" placeholder="Rechercher" class="koba-search-input" id="koba-search-input" value="" autocomplete="off"> 2103 <button type="submit" class="koba-search-submit" aria-label="Lancer la recherche"> 2104 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 2105 <circle cx="11" cy="11" r="8"/> 2106 <path d="M21 21l-4.35-4.35"/> 2107 </svg> 2108 </button> 2109 </form> 2110 <button class="koba-search-close" id="koba-search-close" aria-label="Fermer la recherche"> 2111 <svg width="24" height="24" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 2112 <path d="M18 6L6 18M6 6l12 12"/> 2113 </svg> 2114 </button> 2115 </div> 2116</div> 2117 </div> 2118 </div> 2119 </div> 2120 2121 <!-- Menu mobile --> 2122 <div class="koba-mobile-menu" id="koba-mobile-menu"> 2123 <div class="koba-mobile-menu-inner"> 2124 <!-- Recherche mobile --> 2125 <div class="koba-mobile-search"> 2126 <form role="search" method="get" action="https://www.saint-florentin.fr/" class="koba-mobile-search-form"> 2127 <label for="koba-mobile-search-input" class="visually-hidden">Rechercher sur le site</label> 2128 <input type="search" name="s" id="koba-mobile-search-input" placeholder="Rechercher..." class="koba-mobile-search-input" value=""> 2129 <button type="submit" class="koba-mobile-search-submit" aria-label="Lancer la recherche"> 2130 <svg width="20" height="20" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" aria-hidden="true" focusable="false"> 2131 <circle cx="11" cy="11" r="8"/> 2132 <path d="M21 21l-4.35-4.35"/> 2133 </svg> 2134 </button> 2135 </form> 2136 </div> 2137 <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">Vie municipale</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu">
2137<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.saint-florentin.fr/articles/le-conseil-municipal" class="koba-mobile-link">Conseil municipal</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/compte-rendus-de-conseil-municipal" 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="#" class="koba-mobile-link">Délibérations du conseil municipal</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.saint-florentin.fr/articles/deliberations-du-conseil-municipal-2026" class="koba-mobile-link">Délibérations du conseil municipal 2026</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/deliberations-du-conseil-municipal-2025" class="koba-mobile-link">Délibérations du conseil municipal 2025</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/deliberations-du-conseil-municipal-2024" class="koba-mobile-link">Délibérations du conseil municipal 2024</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/deliberation-du-conseil-municipal" class="koba-mobile-link">Délibérations du conseil municipal 2022-2023</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Arrêtés municipaux</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.saint-florentin.fr/articles/arretes-municipaux-2025" class="koba-mobile-link">Arrêtés municipaux (hors police/urbanisme) 2025-2026</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/arretes-municipaux-divers" class="koba-mobile-link">Arrêtés municipaux 2022-2024</a></div></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police" class="koba-mobile-link">Arrêtés municipaux - police</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="2"><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police-2e-semestre-2026/" class="koba-mobile-link">Arrêtés municipaux – police 2e semestre 2026</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police-1er-trimestre-2026" class="koba-mobile-link">Arrêtés municipaux - police 1er trimestre 2026</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police-4e-trimestre-2025" class="koba-mobile-link">Arrêtés municipaux - police 4e trimestre 2025</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police-2e-semestre-2025" class="koba-mobile-link">Arrêtés municipaux - police 3e trimestre 2025</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police-1er-semestre-2025" class="koba-mobile-link">Arrêtés municipaux - police 1er semestre 2025</a></div></li></ul></li></ul></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/marches-publics" class="koba-mobile-link">Marchés publics</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">A votre service</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu">
2137<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.saint-florentin.fr/articles/les-services-municipaux" class="koba-mobile-link">Coordonnées des services municipaux</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/maip" class="koba-mobile-link">Maison France Services</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/ccas" class="koba-mobile-link">Centre communal d'action sociale (CCAS)</a></div></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Police</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.saint-florentin.fr/articles/police-municipale" class="koba-mobile-link">Accueil et mission</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/arretes-de-police-du-maire" class="koba-mobile-link">Police du maire</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/tranquilite-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.saint-florentin.fr/articles/declaration-de-chiens" class="koba-mobile-link">Déclaration de chien</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/dicrim" class="koba-mobile-link">Document Risques Majeurs</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/fabriquez-votre-disque-de-stationnement-europeen-zone-bleue" class="koba-mobile-link">Zones "bleues"</a></div></li></ul></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/annuaire-de-l-habitant" class="koba-mobile-link">Annuaires des services publics</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/adresses-utiles" class="koba-mobile-link">Adresses utiles</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/salles-municipales" class="koba-mobile-link">Salles municipales</a></div></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Transports</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.saint-florentin.fr/articles/blablacar" class="koba-mobile-link">Blablacar</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/train" class="koba-mobile-link">Train</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/transports" class="koba-mobile-link">Bus</a></div></li></ul></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://cc-sereinarmance.fr/reduire-trier-et-valoriser-les-dechets/" class="koba-mobile-link">Déchets</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 et formalités</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu">
2137<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.saint-florentin.fr/articles/carte-d-identite" class="koba-mobile-link">Carte d'identité / Passeport</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/mariages" class="koba-mobile-link">Mariage</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/cimetiere" class="koba-mobile-link">Cimetières</a></div></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Urbanisme</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.saint-florentin.fr/articles/declaration-de-travaux-permis-de-construire" class="koba-mobile-link">Déclaration de travaux / permis de construire</a></div></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Arrêtés municipaux urbanisme</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="2"><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/urbanisme-demande-de-permis-de-construire-et-declarations-prealables" class="koba-mobile-link">Demandes d'urbanisme</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/arretes-municipaux-urbanisme-2024" class="koba-mobile-link">Arrêtés municipaux - urbanisme 2024</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/arretes-municipaux" class="koba-mobile-link">Arrêtés municipaux - urbanisme 2023</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/arretes-urbanisme-2022" class="koba-mobile-link">Arrêtés municipaux - urbanisme 2022</a></div></li></ul></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/cadastre" class="koba-mobile-link">Plan local d'urbanisme</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/matrice-cadastrale-releve-de-propriete" class="koba-mobile-link">Matrice cadastrale / relevé de propriété</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/nuancier-ral-saint-florentin" class="koba-mobile-link">Nuancier RAL Saint-Florentin</a></div></li></ul></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/permis-de-louer-mode-d-emploi" class="koba-mobile-link">Permis de louer</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/eau-assainissement" class="koba-mobile-link">Eau / assainissement</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Culture / loisirs</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.saint-florentin.fr/articles/horaires-et-fonctionnement" class="koba-mobile-link">Médiathèque</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="http://www.caleflow.fr/" class="koba-mobile-link">Centre aquatique intercommunal Le Flow</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/mediatheque-numerique-de-l-yonne" class="koba-mobile-link">Médiathèque numérique de l'Yonne</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.musee-de-saint-florentin.fr/home.html" class="koba-mobile-link">Musée</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://cc-sereinarmance.fr/bienvenue-a-lecole-de-musique/" class="koba-mobile-link">Ãcole de musique</a></div></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Associations</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu">
2137<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.saint-florentin.fr/articles/office-des-associations-florentinoises" class="koba-mobile-link">Office des associations</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/associations" class="koba-mobile-link">Liste des associations</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/associations-demande-de-subventions" class="koba-mobile-link">Demande de subventions</a></div></li></ul></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/jumelage" class="koba-mobile-link">Jumelage</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">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.saint-florentin.fr/articles/activites-et-contact" class="koba-mobile-link">Service municipal jeunesse</a></div></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Ãcoles</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.saint-florentin.fr/articles/inscriptions-scolaires" class="koba-mobile-link">Ecoles et inscriptions</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="http://col89-marcelayme.ac-dijon.fr/index.php" class="koba-mobile-link">Collège</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Cantine</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.saint-florentin.fr/articles/reglement-du-restaurant-scolaire" class="koba-mobile-link">Inscription cantine</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://connect1.3douest.com/connexion?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIzZG91ZXN0c2VydmVyIiwic3ViIjoiM2RvdWVzdC1hdXRoLXNlcnZlciIsInR5cCI6IkpXVCIsImF1ZCI6eyJ0eXBlIjoiY29sbGVjdGl2aXRlIiwicmVkaXJlY3RfdXJpIjoiaHR0cHM6XC9cL2dlc3Rpb24ubG9naWNpZWwtZW5mYW5jZS5mclwvY29ubmV4aW9uRnJvbUF1dGgiLCJhcGlfZ2xvYmFsX2tleSI6ImJjZTUwNDVkZTI0YjIwZTA4ODAzYTQwNTA4YTk3NDUxIiwiYXBpX2tleSI6ImNhbnRpbmUyIn0sImlhdCI6MTY3OTQ4MDMzMH0.8dU9iLoYTTApYpUdT-GTzdNbv-VC0-jK1hCENVEdWAw&api_key=cantine2" class="koba-mobile-link">Portail familles</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Transports scolaires</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.saint-florentin.fr/articles/transports-scolaires" class="koba-mobile-link">Transports scolaires écoles</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.bourgognefranchecomte.fr/transports-scolaires-de-lyonne" class="koba-mobile-link">Transports scolaires collèges et lycées</a></div></li></ul></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/accueil-periscolaire-municipal" class="koba-mobile-link">Accueil périscolaire</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/le-centre-de-loisirs" class="koba-mobile-link">Centre aéré</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/l-association" class="koba-mobile-link">Espace famille florentinois</a></div></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Pôle petite enfance</a><button class="koba-mobile-toggle" aria-label="Ouvrir sous-menu">
2137<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.la-maison-bleue.fr/creche/bourgogne-franche-comte/yonne/saint-florentin/tom-pouce" class="koba-mobile-link">Crèche Tom Pouce</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://cc-sereinarmance.fr/les-relais-petite-enfance-pour-favoriser-lepanouissement-des-enfants/" class="koba-mobile-link">Relais d'assistants maternels</a></div></li></ul></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Tourisme</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.saint-florentin.fr/articles/marches" class="koba-mobile-link">Le marché</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://serein-armance.fr/" class="koba-mobile-link">Office de tourisme</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/camping-de-l-armancon" class="koba-mobile-link">Camping municipal de l'Armançon**</a></div></li></ul></li><li class="koba-mobile-item has-children"><div class="koba-mobile-item-inner"><a href="#" class="koba-mobile-link">Projets</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.saint-florentin.fr/articles/amenagement-dun-skatepark-et-dun-terrain-de-cross/" class="koba-mobile-link">Aménagement d’un skatepark et d’un terrain de cross</a></div></li><li class="koba-mobile-item"><div class="koba-mobile-item-inner"><a href="https://www.saint-florentin.fr/articles/petite-ville-de-demain" class="koba-mobile-link">Petite Ville de Demain</a></div></li></ul></li></ul></nav> 2138 <nav class="koba-mobile-secondary"> 2139 <ul class="koba-topbar-list"> 2140 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 2141 <a href="https://www.saint-florentin.fr/">ACCUEIL</a> 2142 </li> 2143 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 2144 <a href="https://www.saint-florentin.fr/annuaire/">ANNUAIRE</a> 2145 </li> 2146 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 2147 <a href="https://www.saint-florentin.fr/contact/">NOUS CONTACTER</a> 2148 </li> 2149 <li class="menu-item menu-item-type-post_type menu-item-object-page"> 2150 <a href="https://www.saint-florentin.fr/emploi/">EMPLOI</a> 2151 </li> 2152 </ul> 2153 </nav> 2154 </div> 2155 </div><!-- Overlay résultats recherche --> 2156<div class="koba-search-overlay" id="koba-search-overlay"></div> 2157</header> 2158 2159<!-- Spacer pour compenser le header fixe --> 2160<div class="koba-header-spacer"></div> 2161 2162<!-- Overlay --> 2163<div class="koba-overlay" id="koba-overlay"></div> 2164 <div class="modal fade" id="exampleModal" tabindex="-1" aria-hidden="true" aria-labelledby="exampleModalTitle" role="dialog"> 2165 <div class="modal-dialog"> 2166 <div class="modal-content"> 2167 2168 <div class="modal-header"> 2169 <h5 class="modal-title" id="exampleModalTitle">SUIVEZ L'ACTU</h5> 2170 <button type="button" class="btn-close" data-bs-dismiss="modal" aria-label="Fermer"></button> 2171 </div> 2172 2173 <div class="modal-body"> 2174 <p>* Champs obligatoires</p> 2175 <style> 2176 .koba-form-inscription { 2177 background: #fff; 2178 padding: 30px; 2179 border-radius: 12px; 2180 box-shadow: 0 4px 20px rgba(0,0,0,0.08); 2181 max-width: 700px; 2182 margin: 0 auto; 2183 } 2184 .koba-form-inscription h3 { 2185 margin: 0 0 25px; 2186 padding-bottom: 15px; 2187 border-bottom: 3px solid var(--koba-primary, #209bbc); 2188 color: #1a1a2e; 2189 font-size: 1.5em; 2190 } 2191 .koba-form-section { 2192 margin-bottom: 25px; 2193 padding-bottom: 20px; 2194 border-bottom: 1px solid #eee; 2195 } 2196 .koba-form-section:last-of-type { 2197 border-bottom: none; 2198 margin-bottom: 15px; 2199 } 2200 .koba-form-section-title { 2201 font-weight: 600; 2202 color: var(--koba-primary, #209bbc); 2203 margin-bottom: 15px; 2204 font-size: 14px; 2205 text-transform: uppercase; 2206 letter-spacing: 0.5px; 2207 } 2208 .koba-form-row { 2209 display: flex; 2210 gap: 15px; 2211 margin-bottom: 15px; 2212 } 2213 .koba-form-field { 2214 flex: 1; 2215 } 2216 .koba-form-field.full { 2217 flex: 0 0 100%; 2218 } 2219 .koba-form-field label { 2220 display: block; 2221 font-weight: 500; 2222 margin-bottom: 6px; 2223 color: #333; 2224 font-size: 14px; 2225 } 2226 .koba-form-field label .req { 2227 color: #d63638; 2228 } 2229 .koba-form-field input, 2230 .koba-form-field select, 2231 .koba-form-field textarea { 2232 width: 100%; 2233 padding: 12px 15px; 2234 border: 1px solid #ddd; 2235 border-radius: 6px; 2236 font-size: 14px; 2237 transition: border-color 0.2s, box-shadow 0.2s; 2238 box-sizing: border-box; 2239 } 2240 .koba-form-field input:focus, 2241 .koba-form-field select:focus, 2242 .koba-form-field textarea:focus { 2243 outline: none; 2244 border-color: var(--koba-primary, #209bbc);
2245 box-shadow: 0 0 0 3px rgba(32, 155, 188, 0.1); 2246 } 2247 .koba-form-field textarea { 2248 min-height: 80px; 2249 resize: vertical; 2250 } 2251 .koba-form-checkbox { 2252 display: flex; 2253 align-items: flex-start; 2254 gap: 10px; 2255 padding: 12px 15px; 2256 background: #f8f9fa; 2257 border-radius: 6px; 2258 margin-bottom: 10px; 2259 cursor: pointer; 2260 transition: background 0.2s; 2261 } 2262 .koba-form-checkbox:hover { 2263 background: #e9ecef; 2264 } 2265 .koba-form-checkbox input[type="checkbox"] { 2266 width: 20px; 2267 height: 20px; 2268 margin-top: 2px; 2269 cursor: pointer; 2270 accent-color: var(--koba-primary, #209bbc); 2271 } 2272 .koba-form-checkbox span { 2273 font-size: 14px; 2274 color: #333; 2275 line-height: 1.5; 2276 } 2277 .koba-form-submit { 2278 text-align: center; 2279 margin-top: 25px; 2280 } 2281 .koba-form-submit button { 2282 background: var(--koba-primary, #209bbc); 2283 color: #fff; 2284 border: none; 2285 padding: 15px 50px; 2286 font-size: 16px; 2287 font-weight: 600; 2288 border-radius: 8px; 2289 cursor: pointer; 2290 transition: all 0.3s; 2291 text-transform: uppercase; 2292 letter-spacing: 0.5px; 2293 } 2294 .koba-form-submit button:hover { 2295 background: var(--koba-secondary, #faaf00); 2296 transform: translateY(-2px); 2297 box-shadow: 0 4px 15px rgba(0,0,0,0.15); 2298 } 2299 .koba-form-submit button:disabled { 2300 background: #ccc; 2301 cursor: not-allowed; 2302 transform: none; 2303 box-shadow: none; 2304 } 2305 .koba-form-message { 2306 padding: 15px 20px; 2307 border-radius: 8px; 2308 margin-bottom: 20px; 2309 display: none; 2310 } 2311 .koba-form-message.success { 2312 background: #d4edda; 2313 color: #155724; 2314 border: 1px solid #c3e6cb; 2315 display: block; 2316 } 2317 .koba-form-message.error { 2318 background: #f8d7da; 2319 color: #721c24; 2320 border: 1px solid #f5c6cb; 2321 display: block; 2322 } 2323 .koba-form-loading { 2324 display: none; 2325 text-align: center; 2326 padding: 40px; 2327 } 2328 .koba-form-loading.active { 2329 display: block; 2330 } 2331 .koba-spinner { 2332 width: 40px; 2333 height: 40px; 2334 border: 4px solid #f3f3f3;
2335 border-top: 4px solid var(--koba-primary, #209bbc); 2336 border-radius: 50%; 2337 animation: koba-spin 1s linear infinite; 2338 margin: 0 auto 15px; 2339 } 2340 @keyframes koba-spin { 2341 0% { transform: rotate(0deg); } 2342 100% { transform: rotate(360deg); } 2343 } 2344 .koba-form-success { 2345 display: none; 2346 text-align: center; 2347 padding: 40px 20px; 2348 } 2349 .koba-form-success.active { 2350 display: block; 2351 } 2352 .koba-form-success .success-icon { 2353 width: 80px; 2354 height: 80px; 2355 background: #d4edda; 2356 border-radius: 50%; 2357 display: flex; 2358 align-items: center; 2359 justify-content: center; 2360 margin: 0 auto 20px; 2361 } 2362 .koba-form-success .success-icon svg { 2363 width: 40px; 2364 height: 40px; 2365 color: #28a745; 2366 } 2367 .koba-form-success h4 { 2368 color: #28a745; 2369 margin: 0 0 10px; 2370 font-size: 1.5em; 2371 } 2372 .koba-form-success p { 2373 color: #666; 2374 margin: 0; 2375 } 2376 .koba-recaptcha-badge { 2377 font-size: 11px; 2378 color: #999; 2379 text-align: center; 2380 margin-top: 15px; 2381 } 2382 .koba-recaptcha-badge a { 2383 color: #999; 2384 } 2385 /* Masquer le badge reCAPTCHA flottant de Google */ 2386 .grecaptcha-badge { 2387 visibility: hidden !important; 2388 } 2389 @media (max-width: 600px) { 2390 .koba-form-inscription { 2391 padding: 20px; 2392 } 2393 .koba-form-row { 2394 flex-direction: column; 2395 gap: 0; 2396 } 2397 .koba-form-field { 2398 margin-bottom: 15px; 2399 } 2400 } 2401 2402 /* RGAA 11.10 / 11.11 - etat d'erreur (visible uniquement si erreur) */ 2403 .koba-form-inscription .koba-field-error { 2404 display: none; 2405 color: #b3261e; 2406 font-size: 13px; 2407 line-height: 1.4; 2408 margin-top: 6px; 2409 } 2410 .koba-form-inscription .koba-field-error.show { 2411 display: block; 2412 } 2413 .koba-form-inscription [aria-invalid="true"] { 2414 border-color: #b3261e !important; 2415 box-shadow: 0 0 0 1px #b3261e; 2416 } 2417 </style>
vendor: 130 bytes, lines 2417-2419
2417 2418 2419 <script type="text/plain" data-hob-service="recaptcha" data-hob-src="https://www.google.com/recaptcha/api.js?render=
24196Ld7WU8sAAAAADFQJR81Zz8xGVqOXjqcdFc57N4p
vendor: 25 bytes, lines 2419-2421
2419"></script> 2420 2421
2421<div class="koba-form-inscription" id="koba-inscription-form"> 2422 <div class="koba-form-message" id="koba-form-message" role="status" aria-live="polite" aria-atomic="true"></div> 2423 2424 <div class="koba-form-loading" id="koba-form-loading"> 2425 <div class="koba-spinner"></div> 2426 <p>Envoi en cours...</p> 2427 </div> 2428 2429 <div class="koba-form-success" id="koba-form-success" role="status" aria-live="polite" tabindex="-1"> 2430 <div class="success-icon"> 2431 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 2432 <polyline points="20 6 9 17 4 12"></polyline> 2433 </svg> 2434 </div> 2435 <h4>Inscription réussie !</h4> 2436 <p id="koba-success-text">Merci pour votre inscription.</p> 2437 </div> 2438 2439 <form id="koba-citizen-form" style="display:block;"> 2440 <input type="hidden" id="koba_inscription_nonce" name="koba_inscription_nonce" value="218059e309" /><input type="hidden" name="_wp_http_referer" value="/" /> <input type="hidden" name="recaptcha_token" id="recaptcha_token" value=""> 2441 2442 <!-- IDENTITà --> 2443 <div class="koba-form-section"> 2444 <div class="koba-form-section-title">Identité</div> 2445 2446 <div class="koba-form-row"> 2447 <div class="koba-form-field"> 2448 <label for="koba-ins-gender">Civilité</label> 2449 <select id="koba-ins-gender" name="gender"> 2450 <option value="0">Monsieur</option> 2451 <option value="1">Madame</option> 2452 </select> 2453 </div> 2454 <div class="koba-form-field"> 2455 <label for="koba-ins-birthdate">Date de naissance</label> 2456 <input type="date" id="koba-ins-birthdate" name="birthdate"> 2457 </div> 2458 </div> 2459 2460 <div class="koba-form-row"> 2461 <div class="koba-form-field"> 2462 <label for="koba-ins-lastname">Nom</label> 2463 <input type="text" id="koba-ins-lastname" name="lastname" autocomplete="family-name" placeholder="Votre nom"> 2464 </div> 2465 <div class="koba-form-field"> 2466 <label for="koba-ins-firstname">Prénom</label> 2467 <input type="text" id="koba-ins-firstname" name="firstname" autocomplete="given-name" placeholder="Votre prénom"> 2468 </div> 2469 </div> 2470 </div> 2471 2472 <!-- ADRESSE --> 2473 <div class="koba-form-section"> 2474 <div class="koba-form-section-title">Adresse</div> 2475 2476 <div class="koba-form-row"> 2477 <div class="koba-form-field full"> 2478 <label for="koba-ins-address">Adresse</label> 2479 <textarea id="koba-ins-address" name="address" rows="2" autocomplete="street-address" placeholder="Numéro et nom de rue"></textarea> 2480 </div> 2481 </div> 2482 2483 <div class="koba-form-row"> 2484 <div class="koba-form-field"> 2485 <label for="koba-ins-zipcode">Code postal</label> 2486 <input type="text" id="koba-ins-zipcode" name="zipcode" autocomplete="postal-code" placeholder="38000"> 2487 </div> 2488 <div class="koba-form-field"> 2489 <label for="koba-ins-city">Ville</label> 2490 <input type="text" id="koba-ins-city" name="city" autocomplete="address-level2" placeholder="Votre ville"> 2491 </div> 2492 <div class="koba-form-field"> 2493 <label for="koba-ins-country">Pays</label> 2494 <input type="text" id="koba-ins-country" name="country" autocomplete="country-name" placeholder="France" value="France"> 2495 </div> 2496 </div> 2497 </div> 2498 2499 <!-- CONTACT --> 2500 <div class="koba-form-section"> 2501 <div class="koba-form-section-title">Contact</div> 2502 2503 <div class="koba-form-row"> 2504 <div class="koba-form-field"> 2505 <label for="koba-ins-phone">Téléphone</label> 2506 <input type="tel" id="koba-ins-phone" name="phone" autocomplete="tel" placeholder="06 00 00 00 00"> 2507 </div> 2508 <div class="koba-form-field"> 2509 <label for="koba-ins-fax">Fax</label> 2510 <input type="tel" id="koba-ins-fax" name="fax" placeholder="04 00 00 00 00"> 2511 </div> 2512 </div> 2513 2514 <div class="koba-form-row"> 2515 <div class="koba-form-field full"> 2516 <label for="koba-ins-email">Email <span class="req">*</span></label> 2517 <input type="email" id="koba-ins-email" name="email" autocomplete="email" placeholder="[email protected]" required aria-required="true" aria-describedby="koba-ins-email-error">
2518 <span class="koba-field-error" id="koba-ins-email-error"></span> 2519 </div> 2520 </div> 2521 </div> 2522 2523 <!-- PRÃFÃRENCES --> 2524 <div class="koba-form-section"> 2525 <div class="koba-form-section-title">Préférences de communication</div> 2526 2527 <label class="koba-form-checkbox"> 2528 <input type="checkbox" name="sms_newsletter" value="1"> 2529 <span>Je souhaite recevoir des informations par SMS</span> 2530 </label> 2531 2532 <label class="koba-form-checkbox"> 2533 <input type="checkbox" name="email_newsletter" value="1" checked> 2534 <span>Je souhaite recevoir la newsletter par email</span> 2535 </label> 2536 </div> 2537 2538 <div class="koba-form-submit"> 2539 <button type="submit" id="koba-submit-btn">S'inscrire</button> 2540 </div> 2541 2542 <div class="koba-recaptcha-badge"> 2543 Ce site est protégé par reCAPTCHA. 2544 <a href="https://policies.google.com/privacy" target="_blank">Politique de confidentialité</a> et 2545 <a href="https://policies.google.com/terms" target="_blank">Conditions d'utilisation</a> de Google. 2546 </div> 2547 </form> 2548 </div> 2549 2550
2550<script> 2551 (function() { 2552 var form = document.getElementById('koba-citizen-form'); 2553 var message = document.getElementById('koba-form-message'); 2554 var loading = document.getElementById('koba-form-loading'); 2555 var success = document.getElementById('koba-form-success'); 2556 var submitBtn = document.getElementById('koba-submit-btn'); 2557 var recaptchaActive = true; 2558 var siteKey = '6Ld7WU8sAAAAADFQJR81Zz8xGVqOXjqcdFc57N4p'; 2559 2560 if (!form) return; 2561 2562 // --- RGAA 11.10 / 11.11 : validation accessible --- 2563 function clearInsError(fieldId, errorId) { 2564 var f = document.getElementById(fieldId); 2565 var er = document.getElementById(errorId); 2566 if (er) { er.textContent = ''; er.classList.remove('show'); } 2567 if (f) { f.removeAttribute('aria-invalid'); } 2568 } 2569 ['koba-ins-email','koba-ins-rgpd'].forEach(function(id){ 2570 var el = document.getElementById(id); 2571 if (el) { 2572 el.addEventListener('input', function(){ clearInsError(id, id + '-error'); }); 2573 el.addEventListener('change', function(){ clearInsError(id, id + '-error'); }); 2574 } 2575 }); 2576 2577 form.addEventListener('submit', function(e) { 2578 e.preventDefault(); 2579 2580 // Reset 2581 message.className = 'koba-form-message'; 2582 message.style.display = 'none'; 2583 clearInsError('koba-ins-email', 'koba-ins-email-error'); 2584 clearInsError('koba-ins-rgpd', 'koba-ins-rgpd-error'); 2585 2586 // Validation accessible (messages par champ + suggestions) 2587 var firstInvalid = null; 2588 function fail(focusEl, errorId, msg) { 2589 var er = document.getElementById(errorId); 2590 if (er) { er.textContent = msg; er.classList.add('show'); } 2591 if (focusEl) { focusEl.setAttribute('aria-invalid', 'true'); if (!firstInvalid) firstInvalid = focusEl; } 2592 } 2593 2594 var emailEl = document.getElementById('koba-ins-email'); 2595 if (!emailEl.value.trim()) { 2596 fail(emailEl, 'koba-ins-email-error', 'Veuillez saisir votre adresse e-mail.'); 2597 } else if (!emailEl.checkValidity()) { 2598 fail(emailEl, 'koba-ins-email-error', "L'adresse e-mail n'est pas valide. Exemple attendu : [email protected]"); 2599 } 2600 2601 var rgpdEl = document.getElementById('koba-ins-rgpd'); 2602 if (rgpdEl && rgpdEl.required && !rgpdEl.checked) { 2603 fail(rgpdEl, 'koba-ins-rgpd-error', 'Vous devez accepter de recevoir la newsletter pour valider votre inscription.'); 2604 } 2605 2606 if (firstInvalid) { 2607 message.className = 'koba-form-message error'; 2608 message.textContent = 'Le formulaire contient des erreurs. Veuillez corriger les champs signales.'; 2609 message.style.display = 'block'; 2610 firstInvalid.focus(); 2611 return; 2612 } 2613 2614 // Disable button 2615 submitBtn.disabled = true; 2616 submitBtn.textContent = 'Vérification...'; 2617 2618 // reCAPTCHA v3 2619 if (recaptchaActive && siteKey && typeof grecaptcha !== 'undefined') { 2620 grecaptcha.ready(function() { 2621 grecaptcha.execute(siteKey, {action: 'inscription'}).then(function(token) { 2622 document.getElementById('recaptcha_token').value = token; 2623 submitForm(); 2624 }).catch(function(error) { 2625 console.error('reCAPTCHA error:', error); 2626 submitForm(); // Soumettre quand même si erreur reCAPTCHA 2627 }); 2628 }); 2629 } else { 2630 submitForm(); 2631 } 2632 }); 2633 2634 function submitForm() { 2635 // Show loading 2636 form.style.display = 'none'; 2637 loading.className = 'koba-form-loading active'; 2638 2639 // Prepare data 2640 var formData = new FormData(form); 2641 formData.append('action', 'koba_inscription_submit'); 2642 2643 // Send 2644 fetch('https://www.saint-florentin.fr/wp-admin/admin-ajax.php', { 2645 method: 'POST', 2646 body: formData 2647 }) 2648 .then(function(response) { return response.json(); }) 2649 .then(function(data) { 2650 loading.className = 'koba-form-loading'; 2651 2652 if (data.success) { 2653 success.className = 'koba-form-success active'; 2654 if (data.data && data.data.message) { 2655 document.getElementById('koba-success-text').textContent = data.data.message; 2656 } 2657 try { success.focus(); } catch(e) {} 2658 } else { 2659 form.style.display = 'block'; 2660 submitBtn.disabled = false;
2661 submitBtn.textContent = 'S\'inscrire'; 2662 message.className = 'koba-form-message error'; 2663 message.textContent = data.data || 'Une erreur est survenue.'; 2664 message.style.display = 'block'; 2665 } 2666 }) 2667 .catch(function(error) { 2668 loading.className = 'koba-form-loading'; 2669 form.style.display = 'block'; 2670 submitBtn.disabled = false; 2671 submitBtn.textContent = 'S\'inscrire'; 2672 message.className = 'koba-form-message error'; 2673 message.textContent = 'Erreur de connexion. Veuillez réessayer.'; 2674 message.style.display = 'block'; 2675 }); 2676 } 2677 })(); 2678 </script>
2678 2679 </div> 2680 2681 <div class="modal-footer"> 2682 <button type="button" class="btn btn-secondary" data-bs-dismiss="modal"> 2683 exit 2684 </button> 2685 </div> 2686 2687 </div> 2688 </div> 2689 </div> 2690 2691<main id="main-content" tabindex="-1"> 2692 2693<h1 class="visually-hidden">COMMUNE DE SAINT-FLORENTIN - Accueil</h1> 2694 2695 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" /> 2696 <style> 2697 .koba-hero-slider { width: 100%; height: 100vh; min-height: 500px; max-height: 900px; z-index: 1; position: relative; } 2698 .koba-hero-slider .swiper { width: 100%; height: 100%; } 2699 .koba-hero-slider .swiper-slide { position: relative; background-size: cover; background-position: center; background-repeat: no-repeat; overflow: hidden; } 2700 /* Vidéo en fond de slide (option payante video_slider) */ 2701 .koba-hero-slider .koba-slide-video, 2702 .koba-hero-slider .koba-slide-video-yt { position: absolute; top: 0; left: 0; width: 100%; height: 100%; z-index: 0; } 2703 .koba-hero-slider .koba-slide-video { object-fit: cover; } 2704 .koba-hero-slider .koba-slide-video-yt { pointer-events: none; overflow: hidden; } 2705 /* L'iframe YouTube a un ratio 16:9 fixe : on l'agrandit et on la centre pour simuler un "cover" */ 2706 .koba-hero-slider .koba-slide-video-yt iframe { position: absolute; top: 50%; left: 50%; width: 100vw; height: 56.25vw; min-height: 100%; min-width: 177.78vh; transform: translate(-50%, -50%); border: 0; } 2707 .koba-hero-slider .slide-overlay { z-index: 1; } 2708 .koba-hero-slider .slide-overlay { position: absolute; top: 0; left: 0; right: 0; bottom: 0; display: flex; align-items: center; } 2709 .koba-hero-slider .slide-overlay .container{ 2710 margin-bottom: -80px; 2711 } 2712 .koba-hero-slider .slide-overlay .container .row > div{ 2713 padding: 0; 2714 } 2715 .koba-hero-slider .slide-content { padding: 20px; text-align: center; background: rgba(0,0,0,.3); max-width: 700px; color: #fff; margin: 0 auto;} 2716 .koba-hero-slider .slide-title { font-size: 25.2px; font-weight: 700; margin: 0 0 15px 0; line-height: 1.2; text-shadow: 2px 2px 4px rgba(0,0,0,0.3); } 2717 .koba-hero-slider .slide-subtitle { font-size: 16px; margin: 0 0 30px 0; line-height: 1.5; text-shadow: 1px 1px 2px rgba(0,0,0,0.3); } 2718 .koba-hero-slider .slide-button { display: inline-block; padding: 6px 12px; background-color: var(--koba-secondary); color: #000; text-decoration: none; font-weight: 700; font-size: 16px; border: 2px solid #fff; } 2719 .koba-hero-slider .slide-button:hover { color: #fff;} 2720 .koba-hero-slider .swiper-pagination { bottom: 30px !important; } 2721 .koba-hero-slider .swiper-pagination-bullet { width: 12px; height: 12px; background: #fff; opacity: 0.5; transition: all 0.3s; } 2722 .koba-hero-slider .swiper-pagination-bullet-active { opacity: 1; width: 35px; border-radius: 6px; background: var(--koba-primary, #209bbc); } 2723 .koba-hero-slider .swiper-button-next, .koba-hero-slider .swiper-button-prev { color: #fff; background: rgba(0,0,0,0.3); width: 50px; height: 50px; border-radius: 50%; transition: all 0.3s; } 2724 .koba-hero-slider .swiper-button-next:hover, .koba-hero-slider .swiper-button-prev:hover { background: var(--koba-primary, #209bbc); } 2725 .koba-hero-slider .swiper-button-next::after, .koba-hero-slider .swiper-button-prev::after { font-size: 20px; } 2726 2727 @keyframes slideInLeft { from { opacity: 0; transform: translateX(-50px); } to { opacity: 1; transform: translateX(0); } } 2728 /* RGAA 13.8 - Bouton pause/play (style inline pour ne pas dependre de style.css) */ 2729 .koba-hero-slider .koba-swiper-pause-btn { position: absolute; bottom: 24px; left: 24px; z-index: 30; width: 44px; height: 44px; padding: 0; border-radius: 50%; border: 2px solid #fff; background: rgba(0,0,0,0.6); color: #fff; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: background 0.2s; } 2730 .koba-hero-slider .koba-swiper-pause-btn:hover, .koba-hero-slider .koba-swiper-pause-btn:focus-visible { background: var(--koba-primary, #5ca515); outline: 2px solid #fff; outline-offset: 2px; }
2731 .koba-hero-slider .koba-swiper-pause-btn svg { width: 20px; height: 20px; fill: currentColor; display: block; } 2732 @media (max-width: 768px) { 2733 .koba-hero-slider { height: 70vh; min-height: 400px; } 2734 .koba-hero-slider .slide-content { padding: 0 5%; text-align: center; max-width: 100%; } 2735 .koba-hero-slider .slide-overlay { background: rgba(0,0,0,0.5); justify-content: center; } 2736 .koba-hero-slider .swiper-button-next, .koba-hero-slider .swiper-button-prev { display: none; } 2737 } 2738 </style> 2739 <div class="koba-hero-slider" role="region" aria-label="Carrousel d'actualites" aria-roledescription="carrousel"> 2740 <div class="swiper koba-swiper"> 2741 <div class="swiper-wrapper"> 2742 <div class="swiper-slide" style="background-image: url('https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/02/mff09tzz-1649165429245.jpeg');" role="group" aria-roledescription="diapositive"> 2743 <div class="slide-overlay"> 2744 <div class="container mt-5"> 2745 <div class="row"> 2746 <div class="col-12 col-md-6 offset-md-6"> 2747<div class="slide-content"> 2748 <h2 class="slide-title">Saint-Florentin en Bourgogne</h2> <p class="slide-subtitle">Mairie de Saint-Florentin</p> </div> 2749 </div> 2750 </div> 2751 </div> 2752 </div> 2753 </div> 2754 </div> 2755 <div class="swiper-pagination"></div> 2756 <div class="swiper-button-prev"></div> 2757 <div class="swiper-button-next"></div> 2758 </div> 2759 <!-- RGAA 13.8 : bouton pause / play accessible au clavier --> 2760 <button type="button" class="koba-swiper-pause-btn" data-state="playing" aria-label="Mettre en pause le carrousel"> 2761 <svg aria-hidden="true" focusable="false" viewBox="0 0 24 24"><path d="M6 5h4v14H6zM14 5h4v14h-4z"/></svg> 2762 </button> 2763 </div> 2764
2764<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
2764 2765
2765<script> 2766 document.addEventListener('DOMContentLoaded', function() { 2767 var prefersReducedMotion = window.matchMedia('(prefers-reduced-motion: reduce)').matches; 2768 var kobaSwiper = new Swiper('.koba-swiper', { 2769 direction: 'horizontal', 2770 effect: 'slide', 2771 loop: true, 2772 autoplay: prefersReducedMotion ? false : { delay: 5000, disableOnInteraction: false }, 2773 speed: 800, 2774 pagination: { el: '.swiper-pagination', clickable: true }, 2775 navigation: { nextEl: '.swiper-button-next', prevEl: '.swiper-button-prev' }, 2776 keyboard: { enabled: true }, 2777 a11y: { enabled: true, prevSlideMessage: 'Diapositive precedente', nextSlideMessage: 'Diapositive suivante', paginationBulletMessage: 'Aller a la diapositive {{index}}' }, 2778 on: { mouseenter: function() { this.autoplay.stop(); }, mouseleave: function() { if (!prefersReducedMotion && document.querySelector('.koba-swiper-pause-btn[data-state="playing"]')) this.autoplay.start(); } } 2779 }); 2780 var pauseBtn = document.querySelector('.koba-hero-slider .koba-swiper-pause-btn'); 2781 if (pauseBtn) { 2782 if (prefersReducedMotion) { 2783 pauseBtn.setAttribute('data-state', 'paused'); 2784 pauseBtn.setAttribute('aria-label', 'Lire le carrousel'); 2785 pauseBtn.innerHTML = '<svg aria-hidden="true" focusable="false" viewBox="0 0 24 24"><path d="M8 5v14l11-7z"/></svg>'; 2786 } 2787 pauseBtn.addEventListener('click', function() { 2788 // Recupere dynamiquement l'instance Swiper courante (robuste face a une re-init eventuelle) 2789 var swEl = document.querySelector('.koba-swiper'); 2790 var sw = swEl && swEl.swiper; 2791 if (pauseBtn.getAttribute('data-state') === 'playing') { 2792 if (sw && sw.autoplay) sw.autoplay.stop(); 2793 pauseBtn.setAttribute('data-state', 'paused'); 2794 pauseBtn.setAttribute('aria-label', 'Lire le carrousel'); 2795 pauseBtn.innerHTML = '<svg aria-hidden="true" focusable="false" viewBox="0 0 24 24"><path d="M8 5v14l11-7z"/></svg>'; 2796 } else { 2797 if (sw && sw.autoplay) sw.autoplay.start(); 2798 pauseBtn.setAttribute('data-state', 'playing'); 2799 pauseBtn.setAttribute('aria-label', 'Mettre en pause le carrousel'); 2800 pauseBtn.innerHTML = '<svg aria-hidden="true" focusable="false" viewBox="0 0 24 24"><path d="M6 5h4v14H6zM14 5h4v14h-4z"/></svg>'; 2801 } 2802 }); 2803 } 2804 }); 2805 </script>
2805 2806 2807<section class="meteo-all"> 2808 <div class="container mt-5"> 2809 <div class="row"> 2810 <div class="col-12 col-sm-12 col-md-9"> 2811 2812 <div class="koba-services-section"> 2813 <h2 class="koba-services-title"> 2814 <i class="far fa-dot-circle text-warning mr-2" aria-hidden="true"></i> 2815 LES SERVICES LES PLUS CONSULTÃS </h2> 2816 2817 <!-- Version Desktop --> 2818 <div class="most-viewed-services most-viewed-services-desktop"> 2819 <div class="services-grid" data-count="6"> 2820 <a href="https://www.saint-florentin.fr/articles/compte-rendus-de-conseil-municipal/" class="item"> 2821 <i class="fas fa-school"></i> 2822 <p>Réunions du conseil municipal</p> 2823 </a> 2824 <a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police-2024-5bc58a6e-82cd-4bf2-a409-392b677e1cfb/" class="item"> 2825 <i class="fas fa-newspaper"></i> 2826 <p>Arrêtés police</p> 2827 </a> 2828 <a href="https://www.saint-florentin.fr/articles/declaration-de-travaux-permis-de-construire/" class="item"> 2829 <i class="fas fa-city"></i> 2830 <p>Urbanisme</p> 2831 </a> 2832 <a href="https://www.saint-florentin.fr/articles/carte-d-identite/" class="item"> 2833 <i class="fas fa-address-card"></i> 2834 <p>Carte d'identité / passeport</p> 2835 </a> 2836 <a href="https://www.saint-florentin.fr/articles/horaires-et-fonctionnement/" class="item"> 2837 <i class="fas fa-book-reader"></i> 2838 <p>Médiathèque municipale</p> 2839 </a> 2840 <a href="https://serein-armance.fr/" class="item"> 2841 <i class="fas fa-umbrella-beach"></i> 2842 <p>Office de tourisme Serein Armance</p> 2843 </a> 2844 </div> 2845 </div> 2846 2847 <!-- Version Mobile : Bouton pour ouvrir la modale --> 2848 <div class="most-viewed-services-mobile"> 2849 <button type="button" class="koba-services-mobile-btn" data-bs-toggle="modal" data-bs-target="#kobaServicesModal"> 2850 <span>LES SERVICES LES PLUS CONSULTÃS</span> 2851 <i class="fas fa-chevron-down"></i> 2852 </button> 2853 </div> 2854 2855 <!-- Modale Services Mobile --> 2856 <div class="modal fade" id="kobaServicesModal" tabindex="-1" role="dialog" aria-labelledby="kobaServicesModalLabel" aria-hidden="true"> 2857 <div class="modal-dialog modal-dialog-centered"> 2858 <div class="modal-content koba-services-modal-content"> 2859 <div class="modal-header"> 2860 <h2 class="modal-title" id="kobaServicesModalLabel">LES SERVICES LES PLUS CONSULTÃS</h2> 2861 <button type="button" class="btn-close btn-close-white" data-bs-dismiss="modal" aria-label="Fermer"></button> 2862 </div> 2863 <div class="modal-body"> 2864 <div class="koba-services-modal-grid"> 2865 <a href="https://www.saint-florentin.fr/articles/compte-rendus-de-conseil-municipal/" class="koba-services-modal-item"> 2866 <i class="fas fa-school"></i> 2867 <span>Réunions du conseil municipal</span> 2868 </a> 2869 <a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police-2024-5bc58a6e-82cd-4bf2-a409-392b677e1cfb/" class="koba-services-modal-item"> 2870 <i class="fas fa-newspaper"></i> 2871 <span>Arrêtés police</span> 2872 </a> 2873 <a href="https://www.saint-florentin.fr/articles/declaration-de-travaux-permis-de-construire/" class="koba-services-modal-item"> 2874 <i class="fas fa-city"></i>
2875 <span>Urbanisme</span> 2876 </a> 2877 <a href="https://www.saint-florentin.fr/articles/carte-d-identite/" class="koba-services-modal-item"> 2878 <i class="fas fa-address-card"></i> 2879 <span>Carte d'identité / passeport</span> 2880 </a> 2881 <a href="https://www.saint-florentin.fr/articles/horaires-et-fonctionnement/" class="koba-services-modal-item"> 2882 <i class="fas fa-book-reader"></i> 2883 <span>Médiathèque municipale</span> 2884 </a> 2885 <a href="https://serein-armance.fr/" class="koba-services-modal-item"> 2886 <i class="fas fa-umbrella-beach"></i> 2887 <span>Office de tourisme Serein Armance</span> 2888 </a> 2889 </div> 2890 </div> 2891 </div> 2892 </div> 2893 </div> 2894 </div> 2895 2896 <style> 2897 /* Titre de section (h2) : conserve l'apparence d'origine (h6 Bootstrap) - RGAA 9.1 sans changement visuel */ 2898 .koba-services-title { 2899 font-size: 1rem; 2900 font-weight: 500; 2901 line-height: 1.2; 2902 margin-top: 0; 2903 margin-bottom: 0.5rem; 2904 } 2905 /* Desktop : afficher la grille, masquer le bouton mobile */ 2906 .most-viewed-services-desktop { 2907 display: block; 2908 } 2909 .most-viewed-services-mobile { 2910 display: none; 2911 } 2912 2913 /* Mobile (max-width: 767px) : masquer la grille, afficher le bouton */ 2914 @media (max-width: 767px) { 2915 .most-viewed-services-desktop { 2916 display: none !important; 2917 } 2918 .most-viewed-services-mobile { 2919 display: block; 2920 padding: 0 15px; 2921 } 2922 2923 .koba-services-mobile-btn { 2924 display: block; 2925 align-items: center; 2926 justify-content: space-between; 2927 width: 100%; 2928 background: transparent; 2929 border: none; 2930 padding: 0 0 10px; 2931 color: #fff; 2932 font-size: 14px; 2933 font-weight: 600; 2934 text-transform: uppercase; 2935 letter-spacing: 0.5px; 2936 cursor: pointer; 2937 transition: background 0.2s ease; 2938 } 2939 2940 .koba-services-mobile-btn:hover, 2941 .koba-services-mobile-btn:focus { 2942 } 2943 2944 .koba-services-mobile-btn i { 2945 font-size: 16px; 2946 transition: transform 0.2s ease; 2947 } 2948 2949 .koba-services-mobile-btn:hover i { 2950 transform: translateY(3px); 2951 } 2952 } 2953 2954 /* Styles de la modale */ 2955 .koba-services-modal-content { 2956 background: linear-gradient(135deg, #1a365d 0%, #2d5a87 100%); 2957 border: none; 2958 } 2959 2960 .koba-services-modal-content .modal-header { 2961 border-bottom: 1px solid rgba(255, 255, 255, 0.1); 2962 padding: 20px 24px; 2963 } 2964 2965 .koba-services-modal-content .modal-title { 2966 color: #fff; 2967 font-size: 16px; 2968 font-weight: 700; 2969 text-transform: uppercase; 2970 letter-spacing: 0.5px; 2971 } 2972 2973 .koba-services-modal-content .modal-body { 2974 padding: 24px; 2975 } 2976 2977 .koba-services-modal-grid { 2978 display: grid; 2979 grid-template-columns: repeat(2, 1fr); 2980 gap: 16px; 2981 } 2982 2983 .koba-services-modal-item { 2984 display: flex; 2985 flex-direction: column; 2986 align-items: center; 2987 text-align: center; 2988 padding: 20px 12px; 2989 background: rgba(255, 255, 255, 0.1); 2990 color: #fff; 2991 text-decoration: none; 2992 transition: background 0.2s ease, transform 0.2s ease; 2993 } 2994 2995 .koba-services-modal-item:hover { 2996 background: rgba(255, 255, 255, 0.2); 2997 transform: translateY(-2px); 2998 color: #fff; 2999 } 3000 3001 .koba-services-modal-item i { 3002 width: 56px; 3003 height: 56px; 3004 border-radius: 50%; 3005 background: rgba(0, 0, 0, 0.3); 3006 display: flex; 3007 align-items: center; 3008 justify-content: center; 3009 font-size: 22px; 3010 margin-bottom: 10px; 3011 } 3012 3013 .koba-services-modal-item span { 3014 font-size: 12px; 3015 font-weight: 500; 3016 line-height: 1.3; 3017 } 3018 </style> 3019 </div> 3020 3021 3022 <div class="col-md-3"> 3023
3024 <div class="meteo-custom"> 3025 <div class="meteo-container"> 3026 <h2 class="meteo-titre"> 3027 <i class="far fa-dot-circle" aria-hidden="true"></i> MÃTÃO 3028 </h2> 3029 3030 <p class="meteo-date"> 3031 <i class="far fa-calendar mr-2" aria-hidden="true"></i> Aujourd'hui 3032 </p> 3033 3034 <p class="meteo-date2">Vendredi 02 octobre</p> 3035 3036 <div class="meteo-content"> 3037 <div class="meteo-temperatures"> 3038 <img 3039 src="https://openweathermap.org/img/wn/[email protected]" 3040 alt="Ciel dégagé" 3041 > 3042 <span class="temp-min"> 3043 15°C <br><i>Min</i> 3044 </span> 3045 <span class="temp-max"> 3046 18°C <br><i>Max</i> 3047 </span> 3048 </div> 3049 </div> 3050 </div> 3051 </div> 3052 3053 </div> 3054 </div> 3055 </div> 3056</section> 3057 3058 3059<section class="frontpage-actualites"> 3060 <div class="container mt-5"> 3061 <div class="row"> 3062 <div class="col-md-6 frontpage-title-text"> 3063 <h2 class="frontpage-section-title"> 3064 <i class="far fa-dot-circle text-warning mr-2" aria-hidden="true"></i> 3065 Actualités 3066 </h2> 3067 </div> 3068 3069 <div class="col-md-6 frontpage-title-all"> 3070 <a href="https://www.saint-florentin.fr/actualites/"> 3071 <i class="far fa-dot-circle text-warning mr-2" aria-hidden="true"></i> 3072 Voir toutes les actualités 3073 </a> 3074 </div> 3075 3076 <div class="col-md-12"> 3077 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" /> 3078 3079 <style> 3080 /* ========================================== 3081 SECTION FULL WIDTH 3082 ========================================== */ 3083 .koba-actualites-section { 3084 position: relative; 3085 padding: 0 0 10px; 3086 } 3087 3088 /* ========================================== 3089 FLÃCHES - 40px DU CONTAINER 3090 Calcul : 50% - (demi-container + 40px gap + 50px largeur flèche) 3091 ========================================== */ 3092 .koba-nav-prev, 3093 .koba-nav-next { 3094 position: absolute; 3095 top: 50%; 3096 transform: translateY(-50%); 3097 width: 50px; 3098 height: 50px; 3099 background: #fff; 3100 border-radius: 50%; 3101 color: #dee2e6; 3102 display: flex; 3103 align-items: center; 3104 justify-content: center; 3105 cursor: pointer; 3106 transition: all 0.3s; 3107 z-index: 10; 3108 border: none; 3109 } 3110 3111 .koba-nav-prev:hover, 3112 .koba-nav-next:hover { 3113 } 3114 3115 .koba-nav-prev svg, 3116 .koba-nav-next svg { 3117 width: 30px; 3118 height: 30px; 3119 } 3120 3121 .koba-nav-prev.swiper-button-disabled, 3122 .koba-nav-next.swiper-button-disabled { 3123 opacity: 0.3; 3124 cursor: not-allowed; 3125 } 3126 3127 .koba-nav-prev.swiper-button-disabled:hover, 3128 .koba-nav-next.swiper-button-disabled:hover { 3129 background: #fff; 3130 color: var(--koba-primary, #209bbc); 3131 transform: translateY(-50%) scale(1); 3132 } 3133 3134 /* XL (1200-1399px) - container 1140px, demi = 570px */ 3135 /* 570 + 40 + 50 = 660px */ 3136 @media (min-width: 1200px) and (max-width: 1399px) { 3137 .koba-nav-prev { 3138 left: calc(50% - 600px); 3139 } 3140 .koba-nav-next { 3141 right: calc(50% - 600px); 3142 } 3143 } 3144 3145 /* XXL (â¥1400px) - container 1320px, demi = 660px */ 3146 /* 660 + 40 + 50 = 750px */ 3147 @media (min-width: 1400px) { 3148 .koba-nav-prev { 3149 left: calc(50% - 600px); 3150 } 3151 .koba-nav-next { 3152 right: calc(50% - 600px); 3153 } 3154 } 3155 3156 /* En dessous de XL - masquer les flèches */ 3157 @media (max-width: 1199px) { 3158 .koba-nav-prev, 3159 .koba-nav-next { 3160 display: none; 3161 } 3162 } 3163 3164 /* ========================================== 3165 SWIPER 3166 ========================================== */ 3167 .koba-actualites-swiper { 3168 overflow: hidden; 3169 } 3170 3171 /* ========================================== 3172 CARTES ACTUALITÃS 3173 ========================================== */ 3174 .koba-actu-card { 3175 background: #fff; 3176 overflow: hidden; 3177 border: 1px solid #dee2e6; 3178 transition: all 0.3s ease; 3179 height: 100%; 3180 display: flex; 3181 flex-direction: column; 3182 } 3183 3184 .koba-actu-card:hover { 3185 } 3186 3187 .koba-actu-image { 3188 position: relative; 3189 width: 100%; 3190 height: 200px; 3191 overflow: hidden; 3192 } 3193 3194 .koba-actu-image img { 3195 width: 100%; 3196 height: 100%; 3197 object-fit: cover; 3198 transition: transform 0.3s ease; 3199 } 3200 3201 .koba-actu-card:hover .koba-actu-image img { 3202 transform: scale(1.05); 3203 } 3204 3205 .koba-actu-image-placeholder { 3206 width: 100%; 3207 height: 100%; 3208 background: linear-gradient(135deg, #e0e0e0 0%, #f5f5f5 100%); 3209 display: flex; 3210 align-items: center; 3211 justify-content: center; 3212 color: #999; 3213 } 3214 3215 .koba-actu-category { 3216 } 3217 3218 .koba-actu-content { 3219 flex: 1; 3220 display: flex; 3221 flex-direction: column; 3222 } 3223 3224 .koba-actu-date-categories{ 3225 background: #998c8c; 3226 padding: 16px; 3227 font-size: 11.2px; 3228 text-transform: uppercase; 3229 color: #fff; 3230 } 3231 3232 .koba-actu-date { 3233 color: #fff; 3234 font-size: 11.2px; 3235 font-weight: 500; 3236 display: flex; 3237 align-items: center; 3238 gap: 6px; 3239 font-weight: bold; 3240 font-style: italic; 3241 } 3242 3243 .koba-actu-date svg { 3244 width: 14px; 3245 height: 14px; 3246 color: #fff; 3247 } 3248 3249 .koba-actu-title { 3250 font-size: 14px; 3251 font-weight: 600; 3252 color: #1a1a2e; 3253 line-height: 1.4; 3254 margin: 16px; 3255 min-height: 40px; 3256 } 3257 3258 .koba-actu-title a { 3259 color: inherit; 3260 text-decoration: none; 3261 transition: color 0.2s; 3262 } 3263 3264 .koba-actu-title a:hover { 3265 color: var(--koba-primary, #209bbc); 3266 } 3267 3268 .koba-actu-excerpt { 3269 color: #666; 3270 font-size: 11.2px; 3271 line-height: 1.6; 3272 margin-bottom: 20px; 3273 padding-left: 16px; 3274 padding-right: 16px; 3275 font-weight: 700; 3276 flex: 1; 3277 display: -webkit-box; 3278 -webkit-line-clamp: 3; 3279 -webkit-box-orient: vertical; 3280 overflow: hidden; 3281 min-height: 80px; 3282 } 3283 3284 .koba-actu-button { 3285 display: inline-flex; 3286 align-items: center; 3287 gap: 8px; 3288 color: #6c757d; 3289 text-decoration: none; 3290 font-size: 11.2px; 3291 font-weight: 500; 3292 transition: all 0.3s ease; 3293 align-self: flex-end; 3294 margin-right: 16px; 3295 margin-bottom: 16px; 3296 font-style: italic; 3297 } 3298 3299 .koba-actu-button:hover { 3300 } 3301 3302 .koba-actu-button svg { 3303 width: 16px; 3304 height: 16px; 3305 transition: transform 0.3s; 3306 } 3307 3308 .koba-actu-button:hover svg { 3309 transform: translateX(3px); 3310 } 3311 3312 /* ========================================== 3313 PAGINATION 3314 ========================================== */ 3315 .koba-actualites-pagination { 3316 display: flex; 3317 justify-content: center; 3318 gap: 8px; 3319 margin-top: 30px; 3320 } 3321 3322 .koba-actualites-pagination .swiper-pagination-bullet { 3323 width: 10px; 3324 height: 10px; 3325 background: #ddd; 3326 opacity: 1; 3327 transition: all 0.3s; 3328 border-radius: 5px; 3329 } 3330 3331 .koba-actualites-pagination .swiper-pagination-bullet-active { 3332 background: var(--koba-primary, #209bbc); 3333 width: 30px; 3334 } 3335 3336 /* ========================================== 3337 RESPONSIVE CARTES 3338 ========================================== */ 3339 @media (max-width: 768px) { 3340 .koba-actu-image { 3341 height: 180px; 3342 } 3343 3344 .koba-actu-title { 3345 font-size: 16px; 3346 } 3347 3348 .koba-actu-content { 3349 padding: 15px; 3350 } 3351 } 3352 </style> 3353 3354 <div class="koba-actualites-section"> 3355 <!-- Flèches à 40px du container --> 3356 <button class="koba-nav-prev" id="koba-actu-swiper-6abfe64a0fea4-prev" aria-label="Précédent"> 3357 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3358 <polyline points="15 18 9 12 15 6"/> 3359 </svg> 3360 </button> 3361 <button class="koba-nav-next" id="koba-actu-swiper-6abfe64a0fea4-next" aria-label="Suivant"> 3362 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3363 <polyline points="9 18 15 12 9 6"/> 3364 </svg> 3365 </button> 3366 3367 <!-- Container Bootstrap --> 3368 <div class="container"> 3369 <div class="swiper koba-actualites-swiper" id="koba-actu-swiper-6abfe64a0fea4"> 3370 <div class="swiper-wrapper"> 3371 <div class="swiper-slide"> 3372 <article class="koba-actu-card"> 3373 <div class="koba-actu-image"> 3374 <img src="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/09/FLYERS-2026-2027_Page_1-768x543.jpg" alt="La rentrée de l’athlétisme"> 3375 </div> 3376 3377 3378 3379 <div class="koba-actu-content"> 3380 <div class="koba-actu-date-categories "> 3381 <div class="koba-actu-date"> 3382 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3383 <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/> 3384 <line x1="16" y1="2" x2="16" y2="6"/> 3385 <line x1="8" y1="2" x2="8" y2="6"/> 3386 <line x1="3" y1="10" x2="21" y2="10"/> 3387 </svg> 3388 12/09/2026 </div> 3389 </div> 3390 3391 <h3 class="koba-actu-title"> 3392 <a href="https://www.saint-florentin.fr/actualites/la-rentree-de-lathletisme/"> 3393 La rentrée de l’athlétisme </a> 3394 3395 </h3> 3396 3397 <p class="koba-actu-excerpt"> 3398 </p> 3399 3400 <a href="https://www.saint-florentin.fr/actualites/la-rentree-de-lathletisme/" class="koba-actu-button"> 3401 Lire la suite 3402 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3403 <line x1="5" y1="12" x2="19" y2="12"/> 3404 <polyline points="12 5 19 12 12 19"/> 3405 </svg> 3406 </a> 3407 </div> 3408 </article> 3409 </div> 3410 <div class="swiper-slide"> 3411 <article class="koba-actu-card"> 3412 <div class="koba-actu-image"> 3413 <img src="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/09/09-01-768x1152.png" alt="La rentrée de la gymnastique volontaire"> 3414 </div> 3415 3416 3417 3418 <div class="koba-actu-content"> 3419 <div class="koba-actu-date-categories "> 3420 <div class="koba-actu-date"> 3421 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3422 <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/> 3423 <line x1="16" y1="2" x2="16" y2="6"/> 3424 <line x1="8" y1="2" x2="8" y2="6"/> 3425 <line x1="3" y1="10" x2="21" y2="10"/> 3426 </svg> 3427 12/09/2026 </div> 3428 </div> 3429 3430 <h3 class="koba-actu-title"> 3431 <a href="https://www.saint-florentin.fr/actualites/la-rentree-de-la-gymnastique-volontaire/"> 3432 La rentrée de la gymnastique volontaire </a> 3433 3434 </h3> 3435 3436 <p class="koba-actu-excerpt"> 3437 </p> 3438 3439 <a href="https://www.saint-florentin.fr/actualites/la-rentree-de-la-gymnastique-volontaire/" class="koba-actu-button"> 3440 Lire la suite 3441 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3442 <line x1="5" y1="12" x2="19" y2="12"/> 3443 <polyline points="12 5 19 12 12 19"/> 3444 </svg> 3445 </a> 3446 </div> 3447 </article> 3448 </div> 3449 <div class="swiper-slide"> 3450 <article class="koba-actu-card"> 3451 <div class="koba-actu-image"> 3452 <img src="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/09/Flyer-ESF-Tennis-Padel-2027-V3-768x1086.jpg" alt="La rentrée du tennis / padel"> 3453 </div> 3454 3455 3456 3457 <div class="koba-actu-content"> 3458 <div class="koba-actu-date-categories "> 3459 <div class="koba-actu-date"> 3460 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3461 <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/> 3462 <line x1="16" y1="2" x2="16" y2="6"/> 3463 <line x1="8" y1="2" x2="8" y2="6"/> 3464 <line x1="3" y1="10" x2="21" y2="10"/> 3465 </svg> 3466 12/09/2026 </div> 3467 </div> 3468 3469
3469 <h3 class="koba-actu-title"> 3470 <a href="https://www.saint-florentin.fr/actualites/la-rentree-du-tennis-padel/"> 3471 La rentrée du tennis / padel </a> 3472 3473 </h3> 3474 3475 <p class="koba-actu-excerpt"> 3476 </p> 3477 3478 <a href="https://www.saint-florentin.fr/actualites/la-rentree-du-tennis-padel/" class="koba-actu-button"> 3479 Lire la suite 3480 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3481 <line x1="5" y1="12" x2="19" y2="12"/> 3482 <polyline points="12 5 19 12 12 19"/> 3483 </svg> 3484 </a> 3485 </div> 3486 </article> 3487 </div> 3488 <div class="swiper-slide"> 3489 <article class="koba-actu-card"> 3490 <div class="koba-actu-image"> 3491 <img src="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/09/affiche-rentree-horaires-768x1152.png" alt="La rentrée du judo"> 3492 </div> 3493 3494 3495 3496 <div class="koba-actu-content"> 3497 <div class="koba-actu-date-categories "> 3498 <div class="koba-actu-date"> 3499 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3500 <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/> 3501 <line x1="16" y1="2" x2="16" y2="6"/> 3502 <line x1="8" y1="2" x2="8" y2="6"/> 3503 <line x1="3" y1="10" x2="21" y2="10"/> 3504 </svg> 3505 12/09/2026 </div> 3506 </div> 3507 3508 <h3 class="koba-actu-title"> 3509 <a href="https://www.saint-florentin.fr/actualites/la-rentree-du-judo/"> 3510 La rentrée du judo </a> 3511 3512 </h3> 3513 3514 <p class="koba-actu-excerpt"> 3515 </p> 3516 3517 <a href="https://www.saint-florentin.fr/actualites/la-rentree-du-judo/" class="koba-actu-button"> 3518 Lire la suite 3519 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3520 <line x1="5" y1="12" x2="19" y2="12"/> 3521 <polyline points="12 5 19 12 12 19"/> 3522 </svg> 3523 </a> 3524 </div> 3525 </article> 3526 </div> 3527 <div class="swiper-slide"> 3528 <article class="koba-actu-card"> 3529 <div class="koba-actu-image"> 3530 <img src="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/09/sncf.jpg" alt="SNCF : travaux sur la ligne"> 3531 </div> 3532 3533 3534 3535 <div class="koba-actu-content"> 3536 <div class="koba-actu-date-categories "> 3537 <div class="koba-actu-date"> 3538 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3539 <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/> 3540 <line x1="16" y1="2" x2="16" y2="6"/> 3541 <line x1="8" y1="2" x2="8" y2="6"/> 3542 <line x1="3" y1="10" x2="21" y2="10"/> 3543 </svg> 3544 12/09/2026 </div> 3545 </div> 3546 3547 <h3 class="koba-actu-title"> 3548 <a href="https://www.saint-florentin.fr/actualites/sncf-travaux-sur-la-ligne/"> 3549 SNCF : travaux sur la ligne </a> 3550 3551 </h3> 3552 3553 <p class="koba-actu-excerpt"> 3554 </p> 3555 3556 <a href="https://www.saint-florentin.fr/actualites/sncf-travaux-sur-la-ligne/" class="koba-actu-button"> 3557 Lire la suite 3558 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3559 <line x1="5" y1="12" x2="19" y2="12"/> 3560 <polyline points="12 5 19 12 12 19"/> 3561 </svg> 3562 </a> 3563 </div> 3564 </article> 3565 </div> 3566 <div class="swiper-slide"> 3567 <article class="koba-actu-card"> 3568 <div class="koba-actu-image"> 3569 <img src="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/09/top-view-cracked-dry-groun
3569d-texture-768x513.jpg" alt="Sécheresse : signalez toute anomalie"> 3570 </div> 3571 3572 3573 3574 <div class="koba-actu-content"> 3575 <div class="koba-actu-date-categories "> 3576 <div class="koba-actu-date"> 3577 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3578 <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/> 3579 <line x1="16" y1="2" x2="16" y2="6"/> 3580 <line x1="8" y1="2" x2="8" y2="6"/> 3581 <line x1="3" y1="10" x2="21" y2="10"/> 3582 </svg> 3583 12/09/2026 </div> 3584 </div> 3585 3586 <h3 class="koba-actu-title"> 3587 <a href="https://www.saint-florentin.fr/actualites/secheresse-signalez-toute-anomalie/"> 3588 Sécheresse : signalez toute anomalie </a> 3589 3590 </h3> 3591 3592 <p class="koba-actu-excerpt"> 3593 </p> 3594 3595 <a href="https://www.saint-florentin.fr/actualites/secheresse-signalez-toute-anomalie/" class="koba-actu-button"> 3596 Lire la suite 3597 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3598 <line x1="5" y1="12" x2="19" y2="12"/> 3599 <polyline points="12 5 19 12 12 19"/> 3600 </svg> 3601 </a> 3602 </div> 3603 </article> 3604 </div> 3605 <div class="swiper-slide"> 3606 <article class="koba-actu-card"> 3607 <div class="koba-actu-image"> 3608 <div class="koba-actu-image-placeholder"> 3609 <svg width="48" height="48" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5"> 3610 <rect x="3" y="3" width="18" height="18" rx="2" ry="2"/> 3611 <circle cx="8.5" cy="8.5" r="1.5"/> 3612 <polyline points="21 15 16 10 5 21"/> 3613 </svg> 3614 </div> 3615 </div> 3616 3617 3618 3619 <div class="koba-actu-content"> 3620 <div class="koba-actu-date-categories "> 3621 <div class="koba-actu-date"> 3622 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3623 <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/> 3624 <line x1="16" y1="2" x2="16" y2="6"/> 3625 <line x1="8" y1="2" x2="8" y2="6"/> 3626 <line x1="3" y1="10" x2="21" y2="10"/> 3627 </svg> 3628 21/07/2026 </div> 3629 </div> 3630 3631 <h3 class="koba-actu-title"> 3632 <a href="https://www.saint-florentin.fr/actualites/mentions-tres-bien-aux-examens-2026/"> 3633 Mentions Très bien aux examens 2026 </a> 3634 3635 </h3> 3636 3637 <p class="koba-actu-excerpt"> 3638 Vous habitez la commune de Saint-Florentin. Vous avez obtenu une mention Très BIen à votre... </p> 3639 3640 <a href="https://www.saint-florentin.fr/actualites/mentions-tres-bien-aux-examens-2026/" class="koba-actu-button"> 3641 Lire la suite 3642 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3643 <line x1="5" y1="12" x2="19" y2="12"/> 3644 <polyline points="12 5 19 12 12 19"/> 3645 </svg> 3646 </a> 3647 </div> 3648 </article> 3649 </div> 3650 <div class="swiper-slide"> 3651 <article class="koba-actu-card"> 3652 <div class="koba-actu-image"> 3653 <img src="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/07/PermanencesADIL89-2ndsemestre2026_Page_1-768x543.jpg" alt="Permanences de l’ADIL"> 3654 </div> 3655 3656 3657 3658 <div class="koba-actu-content"> 3659 <div class="koba-actu-date-categories "> 3660 <div class="koba-actu-date"> 3661 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3662 <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/> 3663 <line x1="16" y1="2" x2="16" y2="6"/> 3664 <line x1="8" y1="2" x2="8" y2="6"/> 3665 <line x1="3" y1="10" x2="21" y2="10"/> 3666 </svg>
3667 21/07/2026 </div> 3668 </div> 3669 3670 <h3 class="koba-actu-title"> 3671 <a href="https://www.saint-florentin.fr/actualites/permanences-de-ladil/"> 3672 Permanences de l’ADIL </a> 3673 3674 </h3> 3675 3676 <p class="koba-actu-excerpt"> 3677 </p> 3678 3679 <a href="https://www.saint-florentin.fr/actualites/permanences-de-ladil/" class="koba-actu-button"> 3680 Lire la suite 3681 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 3682 <line x1="5" y1="12" x2="19" y2="12"/> 3683 <polyline points="12 5 19 12 12 19"/> 3684 </svg> 3685 </a> 3686 </div> 3687 </article> 3688 </div> 3689 </div> 3690 </div> 3691 </div> 3692 </div> 3693 3694
3694<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
3694 3695
3695<script> 3696 document.addEventListener('DOMContentLoaded', function() { 3697 new Swiper('#koba-actu-swiper-6abfe64a0fea4', { 3698 slidesPerView: 1, 3699 spaceBetween: 20, 3700 loop: true, 3701 speed: 500, 3702 pagination: { 3703 el: '#koba-actu-swiper-6abfe64a0fea4-pagination', 3704 clickable: true, 3705 }, 3706 navigation: { 3707 nextEl: '#koba-actu-swiper-6abfe64a0fea4-next', 3708 prevEl: '#koba-actu-swiper-6abfe64a0fea4-prev', 3709 }, 3710 breakpoints: { 3711 576: { 3712 slidesPerView: 2, 3713 spaceBetween: 5, 3714 }, 3715 992: { 3716 slidesPerView: 3, 3717 spaceBetween: 5, 3718 }, 3719 1200: { 3720 slidesPerView: 4, 3721 spaceBetween: 5, 3722 }, 3723 }, 3724 }); 3725 }); 3726 </script>
3726 3727 </div> 3728 </div> 3729 </div> 3730</section> 3731<section class="frontpage-agenda"> 3732 <div class="container mt-5 pb-5"> 3733 <div class="row"> 3734 <div class="col-md-6 frontpage-title-text"> 3735 <h2 class="frontpage-section-title"> 3736 <i class="far fa-dot-circle text-warning mr-2" aria-hidden="true"></i> 3737 Agenda 3738 </h2> 3739 </div> 3740 3741 <div class="col-md-6 frontpage-title-all"> 3742 <a href="https://www.saint-florentin.fr/evenements/"> 3743 <i class="far fa-dot-circle text-warning mr-2" aria-hidden="true"></i> 3744 Voir tous les événements 3745 </a> 3746 </div> 3747 <div class="col-md-12"> 3748 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" /> 3749 3750 <div class="koba-agenda-section" id="koba-calendar-6abfe64a1be03"> 3751 <div class="koba-agenda-calendar"> 3752 <div class="calendar-box"> 3753 <div class="calendar-header"> 3754 <button type="button" class="calendar-nav calendar-prev">â®</button> 3755 <h3 class="calendar-month-title"></h3> 3756 <button type="button" class="calendar-nav calendar-next">â¯</button> 3757 </div> 3758 <div class="calendar-weekdays"> 3759 <span>L</span><span>M</span><span>M</span><span>J</span><span>V</span><span>S</span><span>D</span> 3760 </div> 3761 <div class="calendar-days"></div> 3762 3763 <div class="calendar-filter-info"> 3764 <p class="filter-text">à partir du <strong class="filter-date"></strong></p> 3765 <button type="button" class="filter-reset">â</button> 3766 </div> 3767 </div> 3768 </div> 3769 3770 <div class="koba-agenda-events"> 3771 <div class="swiper events-swiper"> 3772 <div class="swiper-wrapper"></div> 3773 </div> 3774 3775 <div class="swiper-nav"> 3776 <button type="button" class="swiper-btn swiper-btn-prev">â®</button> 3777 <div class="swiper-pagination"></div> 3778 <button type="button" class="swiper-btn swiper-btn-next">â¯</button> 3779 </div> 3780 3781 <p class="no-events-message">Aucun événement à venir.</p> 3782 </div> 3783 </div> 3784 3785 <style> 3786 .koba-agenda-section { 3787 display: grid; 3788 grid-template-columns: 280px 1fr; 3789 gap: 30px; 3790 align-items: start; 3791 overflow: hidden; 3792 } 3793 3794 .koba-agenda-calendar { position: sticky; } 3795 .calendar-box { 3796 background: #fff; 3797 border: 1px solid #dee2e6; 3798 } 3799 .calendar-header { 3800 display: flex; 3801 align-items: center; 3802 justify-content: space-between; 3803 margin-bottom: 12px; 3804 background: #1975ae; 3805 color: #fff; 3806 padding: 5px; 3807 } 3808 .calendar-header h3 { 3809 margin: 0; 3810 font-size: 16px; 3811 font-weight: 600; 3812 text-transform: capitalize; 3813 } 3814 .calendar-nav { 3815 background: none; 3816 border: none; 3817 width: 28px; 3818 height: 28px; 3819 border-radius: 6px; 3820 cursor: pointer; 3821 font-size: 11px; 3822 transition: all 0.2s; 3823 color: #fff; 3824 } 3825 .calendar-nav:hover { 3826 background: #1975ae; 3827 border-color: #1975ae; 3828 color: #fff; 3829 } 3830 .calendar-weekdays { 3831 display: grid; 3832 grid-template-columns: repeat(7, 1fr); 3833 text-align: center; 3834 font-size: 14px; 3835 color: var(--koba-secondary); 3836 margin-bottom: 6px; 3837 } 3838 .calendar-days { 3839 display: grid; 3840 grid-template-columns: repeat(7, 1fr); 3841 gap: 2px; 3842 } 3843 .calendar-day { 3844 aspect-ratio: 1; 3845 display: flex; 3846 align-items: center; 3847 justify-content: center; 3848 font-size: 16px; 3849 border-radius: 50%; 3850 cursor: pointer; 3851 position: relative; 3852 transition: all 0.2s; 3853 } 3854 .calendar-day:hover { background: #f0f0f0; } 3855 .calendar-day.empty { cursor: default; } 3856 .calendar-day.empty:hover { background: transparent; } 3857 .calendar-day.past { color: #ccc; } 3858 .calendar-day.today { 3859 background: #1975ae; 3860 color: #fff; 3861 font-weight: 600; 3862 } 3863 .calendar-day.today:hover { opacity: 0.9; } 3864 .calendar-day.selected { 3865 background: #d81f27; 3866 color: #fff; 3867 font-weight: 600; 3868 } 3869 .calendar-day.has-event::after { 3870 content: ''; 3871 position: absolute; 3872 bottom: 2px; 3873 left: 50%; 3874 transform: translateX(-50%); 3875 width: 4px; 3876 height: 4px; 3877 background: #d81f27; 3878 border-radius: 50%; 3879 } 3880 .calendar-day.today.has-event::after, 3881 .calendar-day.selected.has-event::after { 3882 background: #fff; 3883 } 3884 3885 .calendar-filter-info { 3886 display: none; 3887 margin-top: 12px; 3888 padding: 8px 10px; 3889 background: #d81f27; 3890 border-radius: 0; 3891 align-items: center; 3892 justify-content: space-between; 3893 gap: 8px; 3894 } 3895 .calendar-filter-info.active { display: flex; } 3896 .filter-text { 3897 margin: 0; 3898 font-size: 11px; 3899 color: #666; 3900 } 3901 .filter-text strong { color: #1975ae; } 3902 .filter-reset { 3903 background: #e74c3c; 3904 color: #fff; 3905 border: none; 3906 width: 22px; 3907 height: 22px; 3908 border-radius: 4px; 3909 font-size: 11px; 3910 cursor: pointer; 3911 line-height: 1; 3912 } 3913 .filter-reset:hover { background: #c0392b; } 3914 3915 .koba-agenda-events { 3916 min-height: 260px; 3917 position: relative; 3918 overflow: hidden; 3919 min-width: 0; 3920 } 3921 .events-swiper { 3922 overflow: hidden; 3923 padding: 5px; 3924 margin: -5px; 3925 width: 100%; 3926 max-width: 100%; 3927 } 3928 .events-swiper .swiper-wrapper { 3929 display: flex; 3930 align-items: stretch; 3931 width: 100%; 3932 } 3933 .swiper-slide { 3934 height: auto; 3935 box-sizing: border-box; 3936 flex-shrink: 0; 3937 width: 100%; 3938 } 3939 @media (min-width: 480px) { 3940 .swiper-slide { width: calc(50% - 6px); } 3941 } 3942 @media (min-width: 768px) { 3943 .swiper-slide { width: calc(33.333% - 10px); } 3944 } 3945 .event-card { 3946 background: #fff; 3947 border: 1px solid #dee2e6; 3948 overflow: hidden; 3949 transition: transform 0.3s ease, box-shadow 0.3s ease; 3950 text-decoration: none; 3951 color: inherit; 3952 display: flex; 3953 flex-direction: column; 3954 height: 100%; 3955 } 3956 .event-card-image { 3957 position: relative; 3958 overflow: hidden; 3959 } 3960 .event-card-image img { 3961 width: 100%; 3962 height: 100%; 3963 object-fit: cover; 3964 transition: transform 0.3s; 3965 height: 185px; 3966 } 3967 .event-card:hover .event-card-image img { transform: scale(1.05); } 3968.event-card-date { 3969 display: flex; 3970 justify-content: center;
3971 align-items: center; 3972 gap: 6px; 3973 margin: -73px auto 0; 3974 position: relative; 3975 z-index: 2; 3976} 3977.event-card-date-box { 3978 padding: 5px 10px; 3979 text-align: center; 3980 min-width: 65px; 3981} 3982 .event-card-date-box .day { 3983 display: block; 3984 font-size: 32px; 3985 color: #fff; 3986 line-height: 1; 3987 } 3988 .event-card-date-box .month { 3989 display: block; 3990 font-size: 20px; 3991 font-weight: 700; 3992 text-transform: uppercase; 3993 color: #fff; 3994 margin-top: 1px; 3995 } 3996 .event-card-date-separator { 3997 color: #fff; 3998 font-size: 20px; 3999 font-weight: 300; 4000 padding: 0 2px; 4001 opacity: 0.8; 4002 } 4003 .event-card-category { 4004 color: #fff; 4005 padding: 8px; 4006 font-size: 11.2px; 4007 font-weight: 600; 4008 text-transform: uppercase; 4009 width: 100%; 4010 position: relative; 4011 display: block; 4012 text-align: center; 4013 } 4014 .event-card-body { padding: 12px; } 4015 .event-card-title { 4016 font-size: 16px; 4017 font-weight: 700; 4018 margin: 0 0 5px 0; 4019 line-height: 1.3; 4020 color: #d81f27; 4021 display: -webkit-box; 4022 -webkit-line-clamp: 2; 4023 -webkit-box-orient: vertical; 4024 overflow: hidden; 4025 } 4026 .event-card-time { 4027 font-size: 11px; 4028 color: #666; 4029 display: flex; 4030 align-items: center; 4031 gap: 4px; 4032 display: none; 4033 } 4034 .event-card-time::before { 4035 content: 'ð'; 4036 font-size: 10px; 4037 } 4038 .event-card-excerpt{ 4039 font-size: 11.2px; 4040 line-height: 16.8px; 4041 font-weight: 400; 4042 color: #6c757d; 4043 } 4044 .event-card-readmore{ 4045 display: block; 4046 align-items: center; 4047 gap: 8px; 4048 color: #6c757d; 4049 text-decoration: none; 4050 font-size: 11.2px; 4051 font-weight: 500; 4052 transition: all 0.3s ease; 4053 align-self: flex-end; 4054 margin-right: 16px; 4055 margin-bottom: 16px; 4056 font-style: italic; 4057 text-align: right; 4058 } 4059 .event-card-readmore svg{ 4060 width: 16px; 4061 height: 16px; 4062 transition: transform 0.3s; 4063 } 4064 .swiper-nav { 4065 display: flex; 4066 align-items: center; 4067 justify-content: center; 4068 gap: 12px; 4069 margin-top: 18px; 4070 } 4071 .swiper-btn { 4072 background: #fff; 4073 border: 1px solid #e0e0e0; 4074 width: 34px; 4075 height: 34px; 4076 border-radius: 50%; 4077 cursor: pointer; 4078 font-size: 13px; 4079 transition: all 0.2s; 4080 color: #666; 4081 } 4082 .swiper-btn:hover { 4083 background: #1975ae; 4084 border-color: #1975ae; 4085 color: #fff; 4086 } 4087 .swiper-btn:disabled { 4088 opacity: 0.3; 4089 cursor: not-allowed; 4090 } 4091 .swiper-btn:disabled:hover { 4092 background: #fff; 4093 border-color: #e0e0e0; 4094 color: #666; 4095 } 4096 .swiper-pagination { 4097 position: static !important; 4098 display: flex; 4099 gap: 5px; 4100 } 4101 .swiper-pagination-bullet { 4102 width: 8px; 4103 height: 8px; 4104 background: #ddd; 4105 border-radius: 50%; 4106 opacity: 1; 4107 transition: all 0.2s; 4108 } 4109 .swiper-pagination-bullet-active { 4110 background: #1975ae; 4111 width: 20px; 4112 border-radius: 4px; 4113 } 4114 4115 .no-events-message { 4116 display: none; 4117 text-align: center; 4118 padding: 50px 20px; 4119 color: #999; 4120 font-size: 14px; 4121 background: #fff; 4122 border-radius: 12px; 4123 box-shadow: 0 2px 15px rgba(0,0,0,0.08); 4124 } 4125 .no-events-message.visible { display: block; } 4126 4127 @media (max-width: 900px) { 4128 .koba-agenda-section { 4129 grid-template-columns: 240px 1fr; 4130 gap: 20px; 4131 } 4132 } 4133 @media (max-width: 768px) { 4134 .koba-agenda-section { 4135 grid-template-columns: 1fr; 4136 } 4137 .koba-agenda-calendar { 4138 position: static; 4139 } 4140 } 4141 </style> 4142 4143
4143<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
4143 4144 4145
4145<script> 4146 (function() { 4147 var widget = document.getElementById('koba-calendar-6abfe64a1be03'); 4148 var events = [{"id":607,"title":"M\u00e9diath\u00e8que : expo Goutorbe","date":"2026-06-29","end_date":"2026-07-31","time":"09:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/607\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/06-29-212x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":610,"title":"Mus\u00e9e : expo S\u00e9bastien BOUFFAY","date":"2026-07-01","end_date":"2026-08-31","time":"14:30","url":"https:\/\/www.saint-florentin.fr\/evenements\/musee-expo-sebastien-bouffay\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/07-01-212x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":641,"title":"Office de tourisme : animations estivales","date":"2026-07-02","end_date":"2026-08-22","time":"10:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/office-de-tourisme-animations-estivales\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/07-01-1-212x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":612,"title":"Festival Points d'Orgue","date":"2026-07-03","end_date":"2026-08-28","time":"20:30","url":"https:\/\/www.saint-florentin.fr\/evenements\/festival-points-dorgue\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/07-03-1-300x211.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":614,"title":"Les Ateliers du Puits : expo","date":"2026-07-04","end_date":"2026-07-19","time":"14:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/les-ateliers-du-puits-expo\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/07-04-212x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":645,"title":"Office de tourisme : visites guid\u00e9es de l'\u00e9glise","date":"2026-07-04","end_date":"2026-08-22","time":"17:30","url":"https:\/\/www.saint-florentin.fr\/evenements\/office-de-tourisme-visites-guidees-de-leglise\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/Affiche-VG-eglise-St-Flo-ete-2026-212x300.png","category":"","catClass":"agenda-color-default","excerpt":""},{"id":616,"title":"Bistrots nomades : 21 ao\u00fbt \u00e0 St Flo","date":"2026-07-10","end_date":"2026-08-21","time":"20:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/bistrots-nomades-21-aout-a-st-flo\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/07-10-212x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":637,"title":"Les Garagistes : concert JOOST","date":"2026-07-15","end_date":"2026-07-15","time":"20:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/les-garagistes-concert-joost\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/07-15-300x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":618,"title":"Festi'coccinelle : 21 et 22 juillet","date":"2026-07-21","end_date":"2026-07-22","time":"10:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/festicoccinelle-21-et-22-juillet\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/07-21-300x212.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":635,"title":"Espace famille : karaok\u00e9 pizza","date":"2026-07-21","end_date":"2026-07-21","time":"18:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/espace-famille-karaoke-pizza\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/07.21-212x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":661,"title":"Concours de p\u00e9tanque doublette","date":"2026-08-08","end_date":"2026-08-08","time":"17:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/concours-de-petanque-doublette\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/08-08-200x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":663,"title":"Espace famille : programme \u00e9t\u00e9","date":"2026-08-18","end_date":"2026-08-28","time":"14:30","url":"https:\/\/www.saint-florentin.fr\/evenements\/espace-famille-programme-ete\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/08-18-212x300.png","category":"","catClass":"agenda-color-default","excerpt":""},{"id":665,"title":"Espace famille : sortie Mus\u00e9e du Son","date":"2026-08-20","end_date":"2026-08-20","time":"14:30","url":"https:\/\/www.saint-florentin.fr\/evenements\/espace-famille-sortie-musee-du-son\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/08-20-212x300.png","category":"","catClass":"agenda-color-default","excerpt":""},{"id":643,"title":"Espace famille : sortie Institut du Monde Arabe","date":"2026-08-27","end_date":"2026-08-27","time":"08:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/espace-famille-sortie-institut-du-monde-arabe\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/08-27-212x300.jpeg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":647,"title":"Championnats de France de P\u00e9tanque","date":"2026-08-29","end_date":"2026-08-30","time":"10:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/championnats-de-france-de-petanque\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/07\/08-29-240x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":811,"title":"M\u00e9diath\u00e8que : expo Buhagiar","date":"2026-09-02","end_date":"2026-09-26","time":"09:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/mediatheque-expo-buhagiar\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/09-02-212x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":835,"title":"Mus\u00e9e : expo Des Reines et du vin","date":"2026-09-04","end_date":"2026-10-31","time":"14:30","url":"https:\/\/www.saint-florentin.fr\/evenements\/musee-expo-des-reines-et-du-vin\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/musee-214x300.png","category":"","catClass":"agenda-color-default","excerpt":""},{"id":815,"title":"Harmonie municipale : allez \u00e0 leur rencontre","date":"2026-09-09","end_date":"2026-09-30","time":"20:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/harmonie-municipale-allez-a-leur-rencontre\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/09-16-240x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":807,"title":"F\u00eate de la Sainte B\u00e9ate \u00e0 Avrolles","date":"2026-09-12","end_date":"2026-09-13","time":"19:30","url":"https:\/\/www.saint-florentin.fr\/evenements\/fete-de-la-sainte-beate-a-avrolles\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/09-12-212x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":809,"title":"5 km du Florentinois","date":"2026-09-13","end_date":"2026-09-13","time":"09:30","url":"https:\/\/www.saint-florentin.fr\/evenements\/5-km-du-florentinois\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/09-13-212x300.png","category":"","catClass":"agenda-color-default","excerpt":""},{"id":813,"title":"F\u00eate du sport","date":"2026-09-14","end_date":"2026-09-14","time":"17:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/fete-du-sport\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/09-14-214x300.png","category":"","catClass":"agenda-color-default","excerpt":""},{"id":817,"title":"Espace famille : r\u00e9flexologie","date":"2026-09-16","end_date":"2026-09-16","time":"10:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/espace-famille-reflexologie\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/09-16-1-212x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":819,"title":"R\u00e9union du conseil communautaire CCSA","date":"2026-09-17","end_date":"2026-09-17","time":"19:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/819\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/CCSA-300x91.png","category":"","catClass":"agenda-color-default","excerpt":""},{"id":829,"title":"Espace famille : kin\u00e9siologie","date":"2026-09-18","end_date":"2026-09-18","time":"09:30","url":"https:\/\/www.saint-florentin.fr\/evenements\/espace-famille-kinesiologie\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/09-18-212x300.png","category":"","catClass":"agenda-color-default","excerpt":""},{"id":831,"title":"APF France handicap: permanence","date":"2026-09-18","end_date":"2026-09-18","time":"14:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/apf-france-handicap-permanence\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/09-18-3-212x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":827,"title":"Coll\u00e8ge : caf\u00e9 des parents","date":"2026-09-18","end_date":"2026-09-18","time":"17:30","url":"https:\/\/www.saint-florentin.fr\/evenements\/college-cafe-des-parents\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/09-18-200x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":824,"title":"Journ\u00e9es du patrimoine","date":"2026-09-19","end_date":"2026-09-20","time":"09:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/journees-du-patrimoine\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/09-19-212x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":833,"title":"Ehpad Saint Charles : march\u00e9 de producteurs\/cr\u00e9ateurs","date":"2026-09-19","end_date":"2026-09-19","time":"09:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/ehpad-saint-charles-marche-de-producteurs-createurs\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/09-19-212x300.png","category":"","catClass":"agenda-color-default","excerpt":""}
4148,{"id":844,"title":"Ateliers du Puits : expo de peinture","date":"2026-09-19","end_date":"2026-09-20","time":"14:30","url":"https:\/\/www.saint-florentin.fr\/evenements\/ateliers-du-puits-expo-de-peinture\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/10-18-212x300.jpg","category":"","catClass":"agenda-color-default","excerpt":""},{"id":846,"title":"Oldelaf en concert","date":"2026-09-26","end_date":"2026-09-26","time":"20:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/oldelaf-en-concert\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/80x120_oldelaf26-200x300.jpg","category":"","catClass":"agenda-color-default","excerpt":"Sur sc\u00e8ne ou \u00e0 la radio, Oldelaf est connu pour ses chansons dr\u00f4les, tendres et absurdes, ponctu\u00e9es de quelques accords\u2026"},{"id":837,"title":"March\u00e9 de No\u00ebl et vide-grenier : 6 d\u00e9cembre","date":"2026-12-06","end_date":"2026-12-06","time":"06:00","url":"https:\/\/www.saint-florentin.fr\/evenements\/marche-de-noel-et-vide-grenier-6-decembre\/","thumbnail":"https:\/\/www.saint-florentin.fr\/wp-content\/uploads\/sites\/66\/2026\/09\/noel-300x210.jpg","category":"","catClass":"agenda-color-default","excerpt":""}]; 4149 var maxEvents = 12; 4150 var currentMonth = new Date().getMonth(); 4151 var currentYear = new Date().getFullYear(); 4152 var selectedDate = null; 4153 var today = new Date(); 4154 today.setHours(0, 0, 0, 0); 4155 var swiper = null; 4156 4157 var monthNames = ['Janvier', 'Février', 'Mars', 'Avril', 'Mai', 'Juin', 4158 'Juillet', 'Août', 'Septembre', 'Octobre', 'Novembre', 'Décembre']; 4159 var monthShort = ['Jan', 'Fév', 'Mar', 'Avr', 'Mai', 'Juin', 'Juil', 'Août', 'Sep', 'Oct', 'Nov', 'Déc']; 4160 4161 function init() { 4162 renderCalendar(); 4163 renderEvents(); 4164 bindEvents(); 4165 } 4166 4167 function bindEvents() { 4168 widget.querySelector('.calendar-prev').addEventListener('click', function() { 4169 currentMonth--; 4170 if (currentMonth < 0) { currentMonth = 11; currentYear--; } 4171 renderCalendar(); 4172 }); 4173 4174 widget.querySelector('.calendar-next').addEventListener('click', function() { 4175 currentMonth++; 4176 if (currentMonth > 11) { currentMonth = 0; currentYear++; } 4177 renderCalendar(); 4178 }); 4179 4180 widget.querySelector('.filter-reset').addEventListener('click', function() { 4181 selectedDate = null; 4182 widget.querySelector('.calendar-filter-info').classList.remove('active'); 4183 renderCalendar(); 4184 renderEvents(); 4185 }); 4186 } 4187 4188 function renderCalendar() { 4189 widget.querySelector('.calendar-month-title').textContent = monthNames[currentMonth] + ' ' + currentYear; 4190 4191 var daysContainer = widget.querySelector('.calendar-days'); 4192 daysContainer.innerHTML = ''; 4193 4194 var firstDay = new Date(currentYear, currentMonth, 1).getDay(); 4195 firstDay = firstDay === 0 ? 7 : firstDay; 4196 var daysInMonth = new Date(currentYear, currentMonth + 1, 0).getDate(); 4197 4198 for (var i = 1; i < firstDay; i++) { 4199 var emptyDay = document.createElement('div'); 4200 emptyDay.className = 'calendar-day empty'; 4201 daysContainer.appendChild(emptyDay); 4202 } 4203 4204 for (var day = 1; day <= daysInMonth; day++) { 4205 var dateStr = currentYear + '-' + String(currentMonth + 1).padStart(2, '0') + '-' + String(day).padStart(2, '0'); 4206 var dayDate = new Date(currentYear, currentMonth, day); 4207 var hasEvent = events.some(function(e) { return e.date === dateStr; }); 4208 var isToday = dayDate.getTime() === today.getTime(); 4209 var isPast = dayDate < today; 4210 var isSelected = selectedDate && dateStr === selectedDate; 4211 4212 var dayEl = document.createElement('div'); 4213 dayEl.className = 'calendar-day'; 4214 if (hasEvent) dayEl.className += ' has-event'; 4215 if (isToday) dayEl.className += ' today'; 4216 if (isPast && !isToday) dayEl.className += ' past'; 4217 if (isSelected) dayEl.className += ' selected'; 4218 dayEl.textContent = day; 4219 dayEl.dataset.date = dateStr; 4220 4221 dayEl.addEventListener('click', function() { 4222 selectedDate = this.dataset.date; 4223 widget.querySelectorAll('.calendar-day').forEach(function(d) { d.classList.remove('selected'); }); 4224 this.classList.add('selected'); 4225 4226 var dateObj = new Date(selectedDate); 4227 widget.querySelector('.filter-date').textContent = dateObj.getDate() + ' ' + monthNames[dateObj.getMonth()] + ' ' + dateObj.getFullYear(); 4228 widget.querySelector('.calendar-filter-info').classList.add('active'); 4229 4230 renderEvents(); 4231 }); 4232 4233 daysContainer.appendChild(dayEl); 4234 } 4235 } 4236 4237 function renderEvents() { 4238 var swiperWrapper = widget.querySelector('.swiper-wrapper'); 4239 var noEventsMsg = widget.querySelector('.no-events-message'); 4240 var swiperContainer = widget.querySelector('.events-swiper'); 4241 var swiperNav = widget.querySelector('.swiper-nav'); 4242 swiperWrapper.innerHTML = ''; 4243 4244 var filterDate = selectedDate ? new Date(selectedDate) : today; 4245 filterDate.setHours(0, 0, 0, 0); 4246 4247var filteredEvents = events.filter(function(event) { 4248 var eventDate = new Date(event.date); 4249 var eventEndDate = new Date(event.end_date || event.date); 4250 eventDate.setHours(0, 0, 0, 0); 4251 eventEndDate.setHours(0, 0, 0, 0); 4252 return eventDate >= filterDate || eventEndDate >= filterDate; 4253 }); 4254 4255 filteredEvents.sort(function(a, b) { return new Date(a.date) - new Date(b.date); }); 4256 filteredEvents = filteredEvents.slice(0, maxEvents); 4257 4258 if (filteredEvents.length === 0) { 4259 if (swiper) { 4260 swiper.destroy(true, true); 4261 swiper = null; 4262 } 4263 swiperWrapper.innerHTML = ''; 4264 swiperWrapper.style.transform = ''; 4265 noEventsMsg.classList.add('visible'); 4266 swiperContainer.style.display = 'none'; 4267 swiperNav.style.display = 'none'; 4268 return; 4269 } 4270 4271 noEventsMsg.classList.remove('visible'); 4272 swiperContainer.style.display = 'block'; 4273 swiperNav.style.display = 'flex'; 4274
4275 filteredEvents.forEach(function(event) { 4276 var eventDate = new Date(event.date); 4277 var dayNum = eventDate.getDate(); 4278 var monthName = monthShort[eventDate.getMonth()]; 4279 var timeDisplay = event.time !== '00:00' ? event.time.replace(':', 'h') : ''; 4280 4281 var slide = document.createElement('div'); 4282 slide.className = 'swiper-slide'; 4283 4284var categoryClass = event.catClass 4285 ? event.catClass 4286 : (event.category 4287 ? 'agenda-color-' + event.category.toLowerCase().replace(/ /g, '-').replace(/&/g,'').replace(/[^\w-]+/g,'') 4288 : 'agenda-color-default'); 4289 4290var timeHtml = event.timeDisplay 4291 ? '<div class="event-card-time">' + event.timeDisplay + '</div>' 4292 : ''; 4293 4294var imageHtml = event.thumbnail 4295 ? '<img src="' + event.thumbnail + '" alt="' + event.title + '">' 4296 : ''; 4297 4298var categoryHtml = event.category 4299 ? '<span class="event-card-category ' + categoryClass + '">' + event.category + '</span>' 4300 : ''; 4301 4302slide.innerHTML = 4303 '<a href="' + event.url + '" class="event-card">' + 4304 '<div class="event-card-image">' + 4305 imageHtml + 4306(function() { 4307 var dateHtml = '<div class="event-card-date">'; 4308 dateHtml += '<div class="event-card-date-box ' + categoryClass + '">' + 4309 '<span class="day">' + dayNum + '</span>' + 4310 '<span class="month">' + monthName + '</span>' + 4311 '</div>'; 4312 if (event.end_date && event.end_date !== event.date) { 4313 var endDate = new Date(event.end_date); 4314 var endDayNum = endDate.getDate(); 4315 var endMonthName = monthShort[endDate.getMonth()]; 4316 dateHtml += '<div class="event-card-date-box ' + categoryClass + '">' + 4317 '<span class="day">' + endDayNum + '</span>' + 4318 '<span class="month">' + endMonthName + '</span>' + 4319 '</div>'; 4320 } 4321 dateHtml += '</div>'; 4322 return dateHtml; 4323})() + 4324 categoryHtml + 4325 '</div>' + 4326 '<div class="event-card-body">' + 4327 '<h4 class="event-card-title">' + event.title + '</h4>' + 4328 (event.excerpt ? '<div class="event-card-excerpt">' + event.excerpt + '</div>' : '') + 4329 timeHtml + 4330 '<span class="event-card-readmore">' + 4331 'Lire la suite ' + 4332 '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2">' + 4333 '<line x1="5" y1="12" x2="19" y2="12"/>' + 4334 '<polyline points="12 5 19 12 12 19"/>' + 4335 '</svg>' + 4336 '</span>' + 4337 '</div>' + 4338 '</a>'; 4339 4340 swiperWrapper.appendChild(slide); 4341 }); 4342 4343 if (swiper) { 4344 swiper.destroy(true, true); 4345 swiper = null; 4346 } 4347 4348 // Reset wrapper styles before initializing 4349 swiperWrapper.style.transform = ''; 4350 swiperWrapper.style.width = ''; 4351 4352 // Small delay to ensure DOM is ready 4353 setTimeout(function() { 4354 swiper = new Swiper(widget.querySelector('.events-swiper'), { 4355 slidesPerView: 1, 4356 spaceBetween: 15, 4357 observer: true, 4358 observeParents: true, 4359 watchOverflow: true, 4360 pagination: { 4361 el: widget.querySelector('.swiper-pagination'), 4362 clickable: true, 4363 }, 4364 navigation: { 4365 nextEl: widget.querySelector('.swiper-btn-next'), 4366 prevEl: widget.querySelector('.swiper-btn-prev'), 4367 }, 4368 breakpoints: { 4369 480: { 4370 slidesPerView: 2, 4371 spaceBetween: 12, 4372 }, 4373 768: { 4374 slidesPerView: 3, 4375 spaceBetween: 15, 4376 } 4377 } 4378 });
4379 swiper.update(); 4380 }, 50); 4381 } 4382 4383 function waitForSwiper() { 4384 if (typeof Swiper !== 'undefined') { 4385 init(); 4386 } else { 4387 setTimeout(waitForSwiper, 100); 4388 } 4389 } 4390 4391 if (document.readyState === 'loading') { 4392 document.addEventListener('DOMContentLoaded', waitForSwiper); 4393 } else { 4394 waitForSwiper(); 4395 } 4396 })(); 4397 </script>
4397 4398 4399 </div> 4400 </div> 4401 </div> 4402</section> 4403<section class="frontpage-kiosque"> 4404 <div class="container"> 4405 <div class="row"> 4406 <div class="col-md-6 frontpage-title-text"> 4407 <h2 class="frontpage-section-title"> 4408 <i class="far fa-dot-circle text-warning mr-2" aria-hidden="true"></i> 4409 Kiosque 4410 </h2> 4411 </div> 4412 <div class="col-md-6 frontpage-title-all"> 4413 <a href="https://www.saint-florentin.fr/kiosks/"> 4414 <i class="far fa-dot-circle text-warning mr-2" aria-hidden="true"></i> 4415 Voir toutes les publications 4416 </a> 4417 </div> 4418 <div class="col-md-12"> 4419 <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.css" /> 4420 4421 <style> 4422 /* ========================================== 4423 SECTION KIOSQUE FULL WIDTH 4424 ========================================== */ 4425 .koba-kiosque-section { 4426 position: relative; 4427 padding: 0 0 40px; 4428 } 4429 4430 /* ========================================== 4431 FLÃCHES NAVIGATION 4432 ========================================== */ 4433 .koba-kiosque-nav-prev, 4434 .koba-kiosque-nav-next { 4435 position: absolute; 4436 top: 50%; 4437 transform: translateY(-50%); 4438 width: 50px; 4439 height: 50px; 4440 background: transparent; 4441 border-radius: 50%; 4442 color: #dee2e6; 4443 display: flex; 4444 align-items: center; 4445 justify-content: center; 4446 cursor: pointer; 4447 transition: all 0.3s; 4448 z-index: 10; 4449 border: none; 4450 } 4451 4452 .koba-kiosque-nav-prev:hover, 4453 .koba-kiosque-nav-next:hover { 4454 color: var(--koba-primary, #209bbc); 4455 } 4456 4457 .koba-kiosque-nav-prev svg, 4458 .koba-kiosque-nav-next svg { 4459 width: 30px; 4460 height: 30px; 4461 } 4462 4463 .koba-kiosque-nav-prev.swiper-button-disabled, 4464 .koba-kiosque-nav-next.swiper-button-disabled { 4465 opacity: 0.3; 4466 cursor: not-allowed; 4467 } 4468 4469 .koba-kiosque-nav-prev.swiper-button-disabled:hover, 4470 .koba-kiosque-nav-next.swiper-button-disabled:hover { 4471 background: #fff; 4472 color: #dee2e6; 4473 transform: translateY(-50%) scale(1); 4474 } 4475 4476 /* XL (1200-1399px) */ 4477 @media (min-width: 1200px) and (max-width: 1399px) { 4478 .koba-kiosque-nav-prev { 4479 left: calc(50% - 600px); 4480 } 4481 .koba-kiosque-nav-next { 4482 right: calc(50% - 600px); 4483 } 4484 } 4485 4486 /* XXL (â¥1400px) */ 4487 @media (min-width: 1400px) { 4488 .koba-kiosque-nav-prev { 4489 left: calc(50% - 600px); 4490 } 4491 .koba-kiosque-nav-next { 4492 right: calc(50% - 600px); 4493 } 4494 } 4495 4496 /* En dessous de XL - masquer les flèches */ 4497 @media (max-width: 1199px) { 4498 .koba-kiosque-nav-prev, 4499 .koba-kiosque-nav-next { 4500 display: none; 4501 } 4502 } 4503 4504 /* ========================================== 4505 SWIPER KIOSQUE 4506 ========================================== */ 4507 .koba-kiosque-swiper { 4508 overflow: hidden; 4509 } 4510 4511 /* ========================================== 4512 CARTES KIOSQUE 4513 ========================================== */ 4514 .koba-kiosque-card { 4515 background: hsla(0, 0%, 100%, .05); 4516 overflow: hidden; 4517 transition: all 0.3s ease; 4518 height: 100%; 4519 display: flex; 4520 flex-direction: column; 4521 padding: 20px; 4522 } 4523 4524 .koba-kiosque-card:hover { 4525 box-shadow: 0 8px 25px rgba(0,0,0,0.1); 4526 } 4527 4528 /* Image / Couverture */ 4529 .koba-kiosque-cover { 4530 position: relative; 4531 width: 60%; 4532 height: 200px; 4533 margin: 0 auto; 4534 overflow: hidden; 4535 } 4536 4537 .koba-kiosque-cover a { 4538 display: block; 4539 width: 100%; 4540 height: 100%; 4541 } 4542 4543 .koba-kiosque-cover img { 4544 width: 100%; 4545 height: 100%; 4546 object-fit: cover; 4547 transition: transform 0.3s ease; 4548 } 4549 4550 .koba-kiosque-card:hover .koba-kiosque-cover img { 4551 transform: scale(1.05); 4552 } 4553 4554.koba-kiosque-cover-placeholder { 4555 width: 100%; 4556 height: 100%; 4557 background: linear-gradient(135deg, #e0e0e0 0%, #f5f5f5 100%); 4558 display: flex; 4559 align-items: center; 4560 justify-content: center; 4561 color: #999; 4562} 4563 4564.koba-kiosque-cover-placeholder--logo { 4565 padding: 30px; 4566 box-sizing: border-box; 4567} 4568 4569.koba-kiosque-cover-placeholder--logo img { 4570 width: 100%; 4571 height: 100%; 4572 object-fit: contain; 4573} 4574 4575.koba-kiosque-cover-placeholder .koba-kiosque-site-name { 4576 font-size: 14px; 4577 font-weight: 600; 4578 text-align: center; 4579 color: #666; 4580 padding: 0 10px; 4581} 4582 4583 /* Badge PDF */ 4584 .koba-kiosque-badge { 4585 position: absolute; 4586 top: 15px; 4587 right: 15px; 4588 background: var(--koba-secondary, #faaf00); 4589 color: #000; 4590 font-size: 10px; 4591 font-weight: 700; 4592 text-transform: uppercase; 4593 padding: 5px 10px; 4594 border-radius: 3px; 4595 letter-spacing: 0.5px; 4596 } 4597 4598 .koba-kiosque-content { 4599 flex: 1; 4600 display: flex; 4601 flex-direction: column; 4602 } 4603 4604 .koba-kiosque-meta { 4605 display: flex; 4606 justify-content: space-between; 4607 align-items: center; 4608 font-size: 11.2px; 4609 text-transform: uppercase; 4610 } 4611 4612 .koba-kiosque-category { 4613 color: var(--koba-primary, #209bbc); 4614 font-weight: 600; 4615 } 4616 4617 .koba-kiosque-date { 4618 color: #666; 4619 font-size: 11.2px; 4620 font-weight: 500; 4621 display: flex; 4622 align-items: center; 4623 gap: 6px; 4624 } 4625 4626 .koba-kiosque-date a { 4627 color: #fff; 4628 text-decoration: none; 4629 display: flex; 4630 align-items: center; 4631 gap: 6px; 4632 } 4633 4634 .koba-kiosque-date a:hover { 4635 color: var(--koba-secondary, #209bbc); 4636 } 4637 4638 .koba-kiosque-date svg { 4639 width: 14px; 4640 height: 14px; 4641 } 4642 4643 .koba-kiosque-title { 4644 font-size: 14px; 4645 font-weight: 600; 4646 color: #1a1a2e; 4647 line-height: 1.4; 4648 flex: 1; 4649 } 4650 4651 .koba-kiosque-title a { 4652 color: #fff; 4653 font-style: italic; 4654 font-size: 11.2px; 4655 text-decoration: none; 4656 transition: color 0.2s; 4657 } 4658 4659 .koba-kiosque-title a:hover { 4660 color: var(--koba-secondary, #209bbc); 4661 } 4662 4663 .koba-kiosque-button { 4664 display: inline-flex; 4665 align-items: center; 4666 gap: 8px; 4667 color: #fff; 4668 text-decoration: none; 4669 font-size: 11.2px; 4670 font-weight: 500; 4671 transition: all 0.3s ease; 4672 align-self: flex-end; 4673 margin: 10px 0; 4674 } 4675 4676 .koba-kiosque-button:hover { 4677 color: var(--koba-secondary, #209bbc) !important; 4678 } 4679 4680 .koba-kiosque-button svg { 4681 width: 16px; 4682 height: 16px; 4683 transition: transform 0.3s; 4684 } 4685 4686 .koba-kiosque-button:hover svg { 4687 transform: translateX(3px); 4688 } 4689 4690 /* ========================================== 4691 PAGINATION KIOSQUE 4692 ========================================== */ 4693 .koba-kiosque-pagination { 4694 display: flex; 4695 justify-content: center; 4696 gap: 8px; 4697 margin-top: 30px; 4698 } 4699 4700 .koba-kiosque-pagination .swiper-pagination-bullet { 4701 width: 10px; 4702 height: 10px; 4703 background: #ddd; 4704 opacity: 1; 4705 transition: all 0.3s; 4706 border-radius: 5px; 4707 } 4708 4709 .koba-kiosque-pagination .swiper-pagination-bullet-active { 4710 background: var(--koba-primary, #209bbc); 4711 width: 30px; 4712 } 4713 4714 /* ========================================== 4715 RESPONSIVE KIOSQUE 4716 ========================================== */ 4717 @media (max-width: 768px) { 4718 .koba-kiosque-cover { 4719 height: 220px; 4720 } 4721 4722 .koba-kiosque-title { 4723 font-size: 14px; 4724 } 4725 4726 .koba-kiosque-meta { 4727 flex-direction: column; 4728 gap: 8px; 4729 align-items: flex-start; 4730 } 4731 } 4732 </style> 4733 4734 <div class="koba-kiosque-section"> 4735 <!-- Flèches navigation --> 4736 <button class="koba-kiosque-nav-prev" id="koba-kiosque-swiper-6abfe64a1d5d6-prev" aria-label="Précédent"> 4737 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4738 <polyline points="15 18 9 12 15 6"/> 4739 </svg> 4740 </button> 4741 <button class="koba-kiosque-nav-next" id="koba-kiosque-swiper-6abfe64a1d5d6-next" aria-label="Suivant"> 4742 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4743 <polyline points="9 18 15 12 9 6"/> 4744 </svg> 4745 </button> 4746 4747 <!-- Container Bootstrap --> 4748 <div class="container"> 4749 <div class="swiper koba-kiosque-swiper" id="koba-kiosque-swiper-6abfe64a1d5d6"> 4750 <div class="swiper-wrapper"> 4751 <div class="swiper-slide"> 4752 <article class="koba-kiosque-card"> 4753 <h3 class="koba-kiosque-title"> 4754 <a href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/03/ST-FLO-ACCOLADE-98-bd.pdf" target="_blank" rel="noopener"> 4755 Accolade - bulletin municipal 2026 </a> 4756 </h3> 4757 <div class="koba-kiosque-cover"> 4758 <a href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/03/ST-FLO-ACCOLADE-98-bd.pdf" target="_blank" rel="noopener"> 4759 4760 <img src="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/03/accolade-1-1-213x300.jpg" alt="Accolade - bulletin municipal 2026"> 4761 4762 </a> 4763 </div> 4764 4765 <div class="koba-kiosque-content"> 4766 <div class="koba-kiosque-meta"> 4767 <!-- Data po lewej --> 4768 <div class="koba-kiosque-date"> 4769 <a href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/03/ST-FLO-ACCOLADE-98-bd.pdf" target="_blank" rel="noopener"> 4770 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4771 <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/> 4772 <line x1="16" y1="2" x2="16" y2="6"/> 4773 <line x1="8" y1="2" x2="8" y2="6"/> 4774 <line x1="3" y1="10" x2="21" y2="10"/> 4775 </svg> 4776 02/03/2026 </a> 4777 </div> 4778 4779 <!-- Przycisk po prawej --> 4780 <a href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/03/ST-FLO-ACCOLADE-98-bd.pdf" target="_blank" rel="noopener" class="koba-kiosque-button"> 4781 Lire la suite 4782 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4783 <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/> 4784 <polyline points="15 3 21 3 21 9"/> 4785 <line x1="10" y1="14" x2="21" y2="3"/> 4786 </svg> 4787 </a> 4788 </div> 4789 </div> 4790 4791 </article> 4792 </div> 4793 <div class="swiper-slide"> 4794 <article class="koba-kiosque-card"> 4795 <h3 class="koba-kiosque-title"> 4796 <a href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/koba-documents/annuaire-des-assos-2025_5f5ce62c.pdf" target="_blank" rel="noopener"> 4797 Annuaire des associations </a> 4798 </h3> 4799 <div class="koba-kiosque-cover"> 4800 <a href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/koba-documents/annuaire-des-assos-2025_5f5ce62c.pdf" target="_blank" rel="noopener"> 4801 4802 <img src="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/02/annuaire-des-assos-2025_10856bb6-211x300.png" alt="Annuaire des associations"> 4803 4804 </a> 4805 </div> 4806 4807 <div class="koba-kiosque-content"> 4808 <div class="koba-kiosque-meta"> 4809 <!-- Data po lewej --> 4810 <div class="koba-kiosque-date"> 4811 <a href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/koba-documents/annuaire-des-assos-2025_5f5ce62c.pdf" target="_blank" rel="noopener"> 4812 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4813 <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/> 4814 <line x1="16" y1="2" x2="16" y2="6"/> 4815 <line x1="8" y1="2" x2="8" y2="6"/> 4816 <line x1="3" y1="10" x2="21" y2="10"/> 4817 </svg> 4818 21/10/2025 </a> 4819 </div> 4820 4821 <!-- Przycisk po prawej --> 4822 <a href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/koba-documents/annuaire-des-assos-2025_5f5ce62c.pdf" target="_blank" rel="noopener" class="koba-kiosque-button"> 4823 Lire la suite 4824 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4825 <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/> 4826 <polyline points="15 3 21 3 21 9"/> 4827 <line x1="10" y1="14" x2="21" y2="3"/> 4828 </svg> 4829 </a> 4830 </div> 4831 </div> 4832 4833 </article> 4834 </div> 4835 <div class="swiper-slide"
4835> 4836 <article class="koba-kiosque-card"> 4837 <h3 class="koba-kiosque-title"> 4838 <a href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/koba-documents/ST-FLO-ACCOLADE-97-bd_95af7c7c.pdf" target="_blank" rel="noopener"> 4839 Accolade - bulletin municipal 2025 </a> 4840 </h3> 4841 <div class="koba-kiosque-cover"> 4842 <a href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/koba-documents/ST-FLO-ACCOLADE-97-bd_95af7c7c.pdf" target="_blank" rel="noopener"> 4843 4844 <img src="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/02/ST-FLO-ACCOLADE-97-bd_cf8afb97-212x300.png" alt="Accolade - bulletin municipal 2025"> 4845 4846 </a> 4847 </div> 4848 4849 <div class="koba-kiosque-content"> 4850 <div class="koba-kiosque-meta"> 4851 <!-- Data po lewej --> 4852 <div class="koba-kiosque-date"> 4853 <a href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/koba-documents/ST-FLO-ACCOLADE-97-bd_95af7c7c.pdf" target="_blank" rel="noopener"> 4854 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4855 <rect x="3" y="4" width="18" height="18" rx="2" ry="2"/> 4856 <line x1="16" y1="2" x2="16" y2="6"/> 4857 <line x1="8" y1="2" x2="8" y2="6"/> 4858 <line x1="3" y1="10" x2="21" y2="10"/> 4859 </svg> 4860 01/01/2025 </a> 4861 </div> 4862 4863 <!-- Przycisk po prawej --> 4864 <a href="https://www.saint-florentin.fr/wp-content/uploads/sites/66/koba-documents/ST-FLO-ACCOLADE-97-bd_95af7c7c.pdf" target="_blank" rel="noopener" class="koba-kiosque-button"> 4865 Lire la suite 4866 <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"> 4867 <path d="M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6"/> 4868 <polyline points="15 3 21 3 21 9"/> 4869 <line x1="10" y1="14" x2="21" y2="3"/> 4870 </svg> 4871 </a> 4872 </div> 4873 </div> 4874 4875 </article> 4876 </div> 4877 </div> 4878 </div> 4879 </div> 4880 </div> 4881 4882
4882<script src="https://cdn.jsdelivr.net/npm/swiper@11/swiper-bundle.min.js"></script>
4882 4883
4883<script> 4884 document.addEventListener('DOMContentLoaded', function() { 4885 new Swiper('#koba-kiosque-swiper-6abfe64a1d5d6', { 4886 slidesPerView: 1, 4887 spaceBetween: 20, 4888 loop: false, 4889 speed: 500, 4890 pagination: { 4891 el: '#koba-kiosque-swiper-6abfe64a1d5d6-pagination', 4892 clickable: true, 4893 }, 4894 navigation: { 4895 nextEl: '#koba-kiosque-swiper-6abfe64a1d5d6-next', 4896 prevEl: '#koba-kiosque-swiper-6abfe64a1d5d6-prev', 4897 }, 4898 breakpoints: { 4899 576: { 4900 slidesPerView: 2, 4901 spaceBetween: 5, 4902 }, 4903 992: { 4904 slidesPerView: 3, 4905 spaceBetween: 5, 4906 }, 4907 1200: { 4908 slidesPerView: 4, 4909 spaceBetween: 5, 4910 }, 4911 }, 4912 }); 4913 }); 4914 </script>
4914 4915 </div> 4916 </div> 4917 </div> 4918</section> 4919 4920 4921 4922</main> 4923 4924<footer class="" role="contentinfo"> 4925 <div class="container px-3 pt-3 px-md-5 pt-md-5 pb-5"> 4926 <div class="row mb-3 mb-md-4"> 4927 4928 <!-- LOGO --> 4929 <div class="col-4 col-md-3 mb-3 mb-md-0"> 4930 <a href="https://www.saint-florentin.fr/" class="d-inline-flex align-items-center text-light text-decoration-none"> 4931 <img src="https://www.saint-florentin.fr/wp-content/uploads/sites/66/2026/02/logo-footer-1770206920.jpg" alt="COMMUNE DE SAINT-FLORENTIN - Accueil" class="footer-logo"> 4932 </a> 4933 </div> 4934 <div class="col-md-8"> 4935 <div class="koba-social-links"><a href="https://www.facebook.com/profile.php?id=100069098354266" 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></div> </div> 4936 <div class="col-12 col-md-3 mb-3"> 4937 <div class="footer-address"> 4938 <p></p> 4939 <p> 4940 Place Louis Dubost<br> 4941 89600 Saint-Florentin<br> 4942 Tél : <a href="tel:0386437979">0386437979</a> </p> 4943 </div> 4944 </div> 4945 4946 <div class="col-12 col-md-9"> 4947 <ul id="menu-menu-principal-1" class="footer-menu"><li><a href="#">Vie municipale</a> 4948<ul> 4949<li><a href="https://www.saint-florentin.fr/articles/le-conseil-municipal">Conseil municipal</a></li> 4950<li><a href="https://www.saint-florentin.fr/articles/compte-rendus-de-conseil-municipal">Comptes-rendus des conseils municipaux</a></li> 4951<li><a href="#">Délibérations du conseil municipal</a> 4952<ul> 4953<li><a href="https://www.saint-florentin.fr/articles/deliberations-du-conseil-municipal-2026">Délibérations du conseil municipal 2026</a></li> 4954<li><a href="https://www.saint-florentin.fr/articles/deliberations-du-conseil-municipal-2025">Délibérations du conseil municipal 2025</a></li> 4955<li><a href="https://www.saint-florentin.fr/articles/deliberations-du-conseil-municipal-2024">Délibérations du conseil municipal 2024</a></li> 4956<li><a href="https://www.saint-florentin.fr/articles/deliberation-du-conseil-municipal">Délibérations du conseil municipal 2022-2023</a></li> 4957</ul> 4958</li> 4959<li><a href="#">Arrêtés municipaux</a> 4960<ul> 4961<li><a href="https://www.saint-florentin.fr/articles/arretes-municipaux-2025">Arrêtés municipaux (hors police/urbanisme) 2025-2026</a></li> 4962<li><a href="https://www.saint-florentin.fr/articles/arretes-municipaux-divers">Arrêtés municipaux 2022-2024</a></li> 4963<li><a href="https://www.saint-florentin.fr/articles/arretes-municipaux-police">Arrêtés municipaux - police</a></li> 4964</ul> 4965</li> 4966<li><a href="https://www.saint-florentin.fr/articles/marches-publics">Marchés publics</a></li> 4967</ul> 4968</li> 4969<li><a href="#">A votre service</a> 4970<ul> 4971<li><a href="https://www.saint-florentin.fr/articles/les-services-municipaux">Coordonnées des services municipaux</a></li> 4972<li><a href="https://www.saint-florentin.fr/articles/maip">Maison France Services</a></li> 4973<li><a href="https://www.saint-florentin.fr/articles/ccas">Centre communal d'action sociale (CCAS)</a></li> 4974<li><a href="#">Police</a> 4975<ul> 4976<li><a href="https://www.saint-florentin.fr/articles/police-municipale">Accueil et mission</a></li> 4977<li><a href="https://www.saint-florentin.fr/articles/arretes-de-police-du-maire">Police du maire</a></li> 4978<li><a href="https://www.saint-florentin.fr/articles/tranquilite-vacances">Opération tranquillité vacances</a></li> 4979<li><a href="https://www.saint-florentin.fr/articles/declaration-de-chiens">Déclaration de chien</a></li> 4980<li><a href="https://www.saint-florentin.fr/articles/dicrim">Document Risques Majeurs</a></li> 4981<li><a href="https://www.saint-florentin.fr/articles/fabriquez-votre-disque-de-stationnement-europeen-zone-bleue">Zones "bleues"</a></li> 4982</ul> 4983</li> 4984<li><a href="https://www.saint-florentin.fr/articles/annuaire-de-l-habitant">
4984Annuaires des services publics</a></li> 4985<li><a href="https://www.saint-florentin.fr/articles/adresses-utiles">Adresses utiles</a></li> 4986<li><a href="https://www.saint-florentin.fr/articles/salles-municipales">Salles municipales</a></li> 4987<li><a href="#">Transports</a> 4988<ul> 4989<li><a href="https://www.saint-florentin.fr/articles/blablacar">Blablacar</a></li> 4990<li><a href="https://www.saint-florentin.fr/articles/train">Train</a></li> 4991<li><a href="https://www.saint-florentin.fr/articles/transports">Bus</a></li> 4992</ul> 4993</li> 4994<li><a href="https://cc-sereinarmance.fr/reduire-trier-et-valoriser-les-dechets/">Déchets</a></li> 4995</ul> 4996</li> 4997<li><a href="#">Démarches et formalités</a> 4998<ul> 4999<li><a href="https://www.saint-florentin.fr/articles/carte-d-identite">Carte d'identité / Passeport</a></li> 5000<li><a href="https://www.saint-florentin.fr/articles/mariages">Mariage</a></li> 5001<li><a href="https://www.saint-florentin.fr/articles/cimetiere">Cimetières</a></li> 5002<li><a href="#">Urbanisme</a> 5003<ul> 5004<li><a href="https://www.saint-florentin.fr/articles/declaration-de-travaux-permis-de-construire">Déclaration de travaux / permis de construire</a></li> 5005<li><a href="#">Arrêtés municipaux urbanisme</a></li> 5006<li><a href="https://www.saint-florentin.fr/articles/cadastre">Plan local d'urbanisme</a></li> 5007<li><a href="https://www.saint-florentin.fr/articles/matrice-cadastrale-releve-de-propriete">Matrice cadastrale / relevé de propriété</a></li> 5008<li><a href="https://www.saint-florentin.fr/articles/nuancier-ral-saint-florentin">Nuancier RAL Saint-Florentin</a></li> 5009</ul> 5010</li> 5011<li><a href="https://www.saint-florentin.fr/articles/permis-de-louer-mode-d-emploi">Permis de louer</a></li> 5012<li><a href="https://www.saint-florentin.fr/articles/eau-assainissement">Eau / assainissement</a></li> 5013</ul> 5014</li> 5015<li><a href="#">Culture / loisirs</a> 5016<ul> 5017<li><a href="https://www.saint-florentin.fr/articles/horaires-et-fonctionnement">Médiathèque</a></li> 5018<li><a href="http://www.caleflow.fr/">Centre aquatique intercommunal Le Flow</a></li> 5019<li><a href="https://www.saint-florentin.fr/articles/mediatheque-numerique-de-l-yonne">Médiathèque numérique de l'Yonne</a></li> 5020<li><a href="https://www.musee-de-saint-florentin.fr/home.html">Musée</a></li> 5021<li><a href="https://cc-sereinarmance.fr/bienvenue-a-lecole-de-musique/">Ãcole de musique</a></li> 5022<li><a href="#">Associations</a> 5023<ul> 5024<li><a href="https://www.saint-florentin.fr/articles/office-des-associations-florentinoises">Office des associations</a></li> 5025<li><a href="https://www.saint-florentin.fr/articles/associations">Liste des associations</a></li> 5026<li><a href="https://www.saint-florentin.fr/articles/associations-demande-de-subventions">Demande de subventions</a></li> 5027</ul> 5028</li> 5029<li><a href="https://www.saint-florentin.fr/articles/jumelage">Jumelage</a></li> 5030</ul> 5031</li> 5032<li><a href="#">Jeunesse</a> 5033<ul> 5034<li><a href="https://www.saint-florentin.fr/articles/activites-et-contact">Service municipal jeunesse</a></li> 5035<li><a href="#">Ãcoles</a> 5036<ul> 5037<li><a href="https://www.saint-florentin.fr/articles/inscriptions-scolaires">Ecoles et inscriptions</a></li> 5038<li><a href="http://col89-marcelayme.ac-dijon.fr/index.php">Collège</a></li> 5039</ul> 5040</li> 5041<li><a href="#">Cantine</a> 5042<ul> 5043<li><a href="https://www.saint-florentin.fr/articles/reglement-du-restaurant-scolaire">Inscription cantine</a></li> 5044<li><a href="https://connect1.3douest.com/connexion?token=eyJ0eXAiOiJKV1QiLCJhbGciOiJIUzI1NiJ9.eyJpc3MiOiIzZG91ZXN0c2VydmVyIiwic3ViIjoiM2RvdWVzdC1hdXRoLXNlcnZlciIsInR5cCI6IkpXVCIsImF1ZCI6eyJ0eXBlIjoiY29sbGVjdGl2aXRlIiwicmVkaXJlY3RfdXJpIjoiaHR0cHM6XC9cL2dlc3Rpb24ubG9naWNpZWwtZW5mYW5jZS5mclwvY29ubmV4aW9uRnJvbUF1dGgiLCJhcGlfZ2xvYmFsX2tleSI6ImJjZTUwNDVkZTI0YjIwZTA4ODAzYTQwNTA4YTk3NDUxIiwiYXBpX2tleSI6ImNhbnRpbmUyIn0sImlhdCI6MTY3OTQ4MDMzMH0.8dU9iLoYTTApYpUdT-GTzdNbv-VC0-jK1hCENVEdWAw&api_key=cantine2">Portail familles</a></li> 5045</ul> 5046</li> 5047<li><a href="#">Transports scolaires</a> 5048<ul> 5049<li><a href="https://www.saint-florentin.fr/articles/transports-scolaires">Transports scolaires écoles</a></li> 5050<li><a href="https://www.bourgognefranchecomte.fr/transports-scolaires-de-lyonne">Transports scolaires collèges et lycées</a></li> 5051</ul> 5052</li> 5053<li><a href="https://www.saint-florentin.fr/articles/accueil-periscolaire-municipal">Accueil périscolaire</a></li> 5054<li><a href="https://www.saint-florentin.fr/articles/le-centre-de-loisirs">Centre aéré</a></li> 5055<li><a href="https://www.saint-florentin.fr/articles/l-association">Espace famille florentinois</a></li> 5056<li><a href="#">Pôle petite enfance</a> 5057<ul> 5058<li><a href="https://www.la-maison-bleue.fr/creche/bourgogne-franche-comte/yonne/saint-florentin/tom-pouce">Crèche Tom Pouce</a></li> 5059<li><a href="https://cc-sereinarmance.fr/les-relais-petite-enfance-pour-favoriser-lepanouissement-des-enfants/">Relais d'assistants maternels</a></li> 5060</ul> 5061</li> 5062</ul> 5063</li> 5064<li><a href="#">Tourisme</a> 5065<ul> 5066<li><a href="https://www.saint-florentin.fr/articles/marches">Le marché</a></li> 5067<li><a href="https://serein-armance.fr/">Office de tourisme</a></li> 5068<li><a href="https://www.saint-florentin.fr/articles/camping-de-l-armancon">Camping municipal de l'Armançon**</a></li> 5069</ul> 5070</li> 5071<li><a href="#">Projets</a> 5072<ul> 5073<li><a href="https://www.saint-florentin.fr/articles/amenagement-dun-skatepark-et-dun-terrain-de-cross/">Aménagement d’un skatepark et d’un terrain de cross</a></li> 5074<li><a href="https://www.saint-florentin.fr/articles/petite-ville-de-demain">Petite Ville de Demain</a></li> 5075</ul> 5076</li> 5077</ul> </div> 5078 </div> 5079 </div> 5080</footer> 5081<div class="footer-bottom"> 5082 <div class="container-fluid"> 5083 <div class="row"> 5084 <div class="col-12 col-md-6 mb-3 mb-md-0 footer-bottom-left"> 5085 <ul class="koba-menu-list"> 5086 <li class=""> 5087 <a href="https://www.saint-florentin.fr/mentions-legales/">Mentions légales</a> 5088 </li> 5089 <li class=""> 5090 <a href="https://www.saint-florentin.fr/accessibilite/">Accessibilité</a> 5091 </li> 5092 <li class=""> 5093 <a href="https://www.saint-florentin.fr/plan-du-site/">Plan du site</a> 5094 </li> 5095 <li class=""> 5096 <a href="https://www.saint-florentin.fr/contact/">NOUS CONTACTER</a> 5097 </li> 5098 <li class="">
5099 <span>© 2026 </span> 5100 </li> 5101 </ul> 5102 </div> 5103 <div class="col-12 col-md-6 mb-3 mb-md-0 justify-content-end footer-bottom-right"> 5104 <div class="text-white" bis_skin_checked="1"> 5105 <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> 5106 </div> 5107 </div> 5108 </div> 5109 </div> 5110</div> 5111
5111<script> 5112 if ('serviceWorker' in navigator) { 5113 navigator.serviceWorker.register('https://www.saint-florentin.fr/koba-sw.js', { scope: '/' }) 5114 .catch(function(err) { console.log('SW error:', err); }); 5115 } 5116 if (window.matchMedia('(display-mode: standalone)').matches || window.navigator.standalone === true) { 5117 document.cookie = 'koba_pwa=1; path=/; max-age=2592000; SameSite=Lax'; 5118 } 5119 </script>
5119 5120
5120<script type="speculationrules"> 5121{"prefetch":[{"source":"document","where":{"and":[{"href_matches":"/*"},{"not":{"href_matches":["/wp-*.php","/wp-admin/*","/wp-content/uploads/sites/66/*","/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"}]} 5122</script>
5122 5123
5123<script> 5124 (function() { 5125 var searchInput = document.getElementById('koba-search-input'); 5126 var searchOverlay = document.getElementById('koba-search-overlay'); 5127 var searchClose = document.getElementById('koba-search-close'); 5128 var searchTimeout = null; 5129 var ajaxurl = 'https://www.saint-florentin.fr/wp-admin/admin-ajax.php'; 5130 5131 if (!searchInput || !searchOverlay) return; 5132 5133 // Saisie dans le champ 5134 searchInput.addEventListener('input', function() { 5135 var query = this.value.trim(); 5136 5137 if (searchTimeout) clearTimeout(searchTimeout); 5138 5139 // Masquer si vide 5140 if (query.length < 1) { 5141 searchOverlay.classList.remove('active'); 5142 searchOverlay.innerHTML = ''; 5143 return; 5144 } 5145 5146 // Afficher overlay avec loading 5147 searchOverlay.classList.add('active'); 5148 searchOverlay.innerHTML = '<div class="koba-search-overlay-inner">' + 5149 '<div class="koba-search-loading">' + 5150 '<div class="koba-search-spinner"></div>' + 5151 '<p>Recherche...</p></div></div>'; 5152 5153 // Recherche après court délai 5154 searchTimeout = setTimeout(function() { 5155 performSearch(query); 5156 }, 250); 5157 }); 5158 5159 // Fermer l'overlay 5160 if (searchClose) { 5161 searchClose.addEventListener('click', function() { 5162 searchOverlay.classList.remove('active'); 5163 searchOverlay.innerHTML = ''; 5164 }); 5165 } 5166 5167 // Fermer avec Escape 5168 document.addEventListener('keydown', function(e) { 5169 if (e.key === 'Escape') { 5170 searchOverlay.classList.remove('active'); 5171 searchOverlay.innerHTML = ''; 5172 } 5173 }); 5174 5175 // Recherche AJAX 5176 function performSearch(query) { 5177 var formData = new FormData(); 5178 formData.append('action', 'koba_live_search'); 5179 formData.append('search', query); 5180 5181 fetch(ajaxurl, { 5182 method: 'POST', 5183 body: formData 5184 }) 5185 .then(function(r) { return r.json(); }) 5186 .then(function(data) { 5187 if (data.success) { 5188 renderResults(data.data.results, data.data.search); 5189 } 5190 }) 5191 .catch(function() { 5192 searchOverlay.innerHTML = '<div class="koba-search-overlay-inner">' + 5193 '<div class="koba-search-no-results"><p>Erreur de connexion</p></div></div>'; 5194 }); 5195 } 5196 5197 // Afficher résultats 5198 function renderResults(results, searchTerm) { 5199 if (!results || results.length === 0) { 5200 searchOverlay.innerHTML = '<div class="koba-search-overlay-inner">' + 5201 '<div class="koba-search-no-results">' + 5202 '<svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.5">' + 5203 '<circle cx="11" cy="11" r="8"/><path d="M21 21l-4.35-4.35"/>' + 5204 '</svg>' + 5205 '<p>Aucun résultat pour "<strong>' + esc(searchTerm) + '</strong>"</p>' + 5206 '</div></div>'; 5207 return; 5208 } 5209 5210 var html = '<div class="koba-search-overlay-inner">'; 5211 5212 results.forEach(function(cat) { 5213 html += '<div class="koba-search-category">'; 5214 html += '<h3 class="koba-search-category-title">' + esc(cat.label) + '</h3>'; 5215 html += '<ul class="koba-search-list">'; 5216 5217 cat.items.forEach(function(item) { 5218 var title = highlight(item.title, searchTerm); 5219 var date = (cat.type === 'evenement') ? '<span class="koba-search-date">- ' + item.date + '</span>' : ''; 5220 html += '<li class="koba-search-item">'; 5221 html += '<a href="' + item.url + '" class="koba-search-link">' + title + date + '</a>'; 5222 html += '</li>'; 5223 }); 5224 5225 html += '</ul></div>'; 5226 }); 5227 5228 html += '</div>'; 5229 searchOverlay.innerHTML = html; 5230 } 5231 5232 function highlight(text, search) { 5233 var regex = new RegExp('(' + search.replace(/[.*+?^${}()|[\]\\]/g, '\\$&') + ')', 'gi'); 5234 return esc(text).replace(regex, '<mark>$1</mark>'); 5235 } 5236 5237 function esc(text) { 5238 var d = document.createElement('div'); 5239 d.textContent = text; 5240 return d.innerHTML; 5241 } 5242 })(); 5243 </script>
5243 5244
5244<script> 5245 document.addEventListener('DOMContentLoaded', function() { 5246 const hamburger = document.getElementById('koba-hamburger'); 5247 const mobileMenu = document.getElementById('koba-mobile-menu'); 5248 const searchToggle = document.getElementById('koba-search-toggle'); 5249 const searchBar = document.getElementById('koba-search-bar'); 5250 const searchClose = document.getElementById('koba-search-close'); 5251 const searchInput = document.getElementById('koba-search-input'); 5252 const overlay = document.getElementById('koba-overlay'); 5253 const navItems = document.querySelectorAll('.koba-nav-item.has-megamenu'); 5254 const mobileToggles = document.querySelectorAll('.koba-mobile-toggle'); 5255 5256 function closeAllMenus() { 5257 navItems.forEach(item => item.classList.remove('active')); 5258 document.querySelectorAll('.koba-megamenu-item.active').forEach(item => { 5259 item.classList.remove('active'); 5260 }); 5261 overlay.classList.remove('active'); 5262 } 5263 5264 if (hamburger) { 5265 hamburger.addEventListener('click', function() { 5266 this.classList.toggle('active'); 5267 mobileMenu.classList.toggle('active'); 5268 document.body.style.overflow = mobileMenu.classList.contains('active') ? 'hidden' : ''; 5269 }); 5270 } 5271 5272 if (searchToggle) { 5273 searchToggle.addEventListener('click', function() { 5274 closeAllMenus(); 5275 searchBar.classList.add('active'); 5276 searchToggle.classList.add('hidden'); 5277 setTimeout(() => searchInput.focus(), 400); 5278 }); 5279 } 5280 5281 if (searchClose) { 5282 searchClose.addEventListener('click', function() { 5283 searchBar.classList.remove('active'); 5284 searchToggle.classList.remove('hidden'); 5285 }); 5286 } 5287 5288 navItems.forEach(item => { 5289 const link = item.querySelector('.koba-nav-link'); 5290 5291 link.addEventListener('click', function(e) { 5292 if (window.innerWidth > 992) { 5293 e.preventDefault(); 5294 const isActive = item.classList.contains('active'); 5295 closeAllMenus(); 5296 if (!isActive) { 5297 item.classList.add('active'); 5298 overlay.classList.add('active'); 5299 } 5300 } 5301 }); 5302 }); 5303 5304 document.querySelectorAll('.koba-megamenu-item.has-submenu').forEach(item => { 5305 const link = item.querySelector('.koba-megamenu-link'); 5306 5307 link.addEventListener('click', function(e) { 5308 e.preventDefault(); 5309 const parent = item.closest('.koba-megamenu-col3'); 5310 parent.querySelectorAll('.koba-megamenu-item.active').forEach(other => { 5311 if (other !== item) { 5312 other.classList.remove('active'); 5313 } 5314 }); 5315 item.classList.toggle('active'); 5316 }); 5317 }); 5318 5319 mobileToggles.forEach(toggle => { 5320 toggle.addEventListener('click', function() { 5321 this.classList.toggle('active'); 5322 const submenu = this.closest('.koba-mobile-item').querySelector(':scope > .koba-mobile-submenu'); 5323 if (submenu) { 5324 submenu.classList.toggle('active'); 5325 } 5326 }); 5327 }); 5328 5329 if (overlay) { 5330 overlay.addEventListener('click', function() { 5331 closeAllMenus(); 5332 searchBar.classList.remove('active'); 5333 searchToggle.classList.remove('hidden'); 5334 }); 5335 } 5336 5337 document.addEventListener('click', function(e) { 5338 if (window.innerWidth > 992) { 5339 const isInNav = e.target.closest('.koba-nav-item.has-megamenu'); 5340 const isInMegamenu = e.target.closest('.koba-megamenu'); 5341 5342 if (!isInNav && !isInMegamenu) { 5343 closeAllMenus(); 5344 } 5345 } 5346 }); 5347 5348 document.addEventListener('keydown', function(e) { 5349 if (e.key === 'Escape') { 5350 closeAllMenus(); 5351 searchBar.classList.remove('active'); 5352 searchToggle.classList.remove('hidden'); 5353 mobileMenu.classList.remove('active'); 5354 hamburger.classList.remove('active'); 5355 document.body.style.overflow = ''; 5356 } 5357 }); 5358 5359 window.addEventListener('resize', function() { 5360 if (window.innerWidth > 992) { 5361 mobileMenu.classList.remove('active'); 5362 hamburger.classList.remove('active'); 5363 document.body.style.overflow = ''; 5364 } 5365 }); 5366 }); 5367 </script>
5367 5368 <div id="hob-rgpd-banner" class="hob-rgpd-banner" role="region" 5369 aria-label="Consentement aux cookies" 5370 style="background-color:#222222;color:#ffffff;bottom:0;"> 5371 <div class="hob-rgpd-message"> 5372 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> 5373 <div class="hob-rgpd-buttons"> 5374 <button type="button" class="hob-btn hob-accept-all" style="background-color:#00aaff;color:#ffffff;"> 5375 Tout accepter </button> 5376 <button type="button" class="hob-btn hob-reject-all" style="background-color:#00aaff;color:#ffffff;"> 5377 Tout refuser </button> 5378 <button type="button" class="hob-btn hob-manage" style="background-color:#00aaff;color:#ffffff;"> 5379 Gérer mes préférences </button> 5380 </div> 5381</div> 5382 5383<div id="hob-rgpd-popup" class="hob-rgpd-popup" role="dialog" aria-modal="true" 5384 aria-labelledby="hob-rgpd-popup-title" 5385 style="--hob-accent:#00aaff;--hob-accent-text:#ffffff;" 5386 hidden> 5387 <div class="hob-rgpd-popup-content"> 5388 <button type="button" class="hob-rgpd-popup-close" aria-label="Fermer">×</button> 5389 <h2 id="hob-rgpd-popup-title">Gérer mes préférences</h2> 5390 5391 <div class="hob-rgpd-tabs" role="tablist"> 5392 <button type="button" class="hob-rgpd-tab is-active" 5393 role="tab" 5394 aria-selected="true" 5395 data-tab="hob-rgpd-panel-1"> 5396 Contenus interactifs </button> 5397 </div> 5398 5399 <div id="hob-rgpd-panel-1" 5400 class="hob-rgpd-panel is-active" 5401 role="tabpanel"> 5402 <div class="hob-rgpd-service"> 5403 <div class="hob-rgpd-service-icon"> 5404 <img src="https://www.saint-florentin.fr/wp-content/plugins/hob-rgpd/assets/img/services/recaptcha.svg" 5405 alt="Google reCAPTCHA" /> 5406 </div> 5407 <div class="hob-rgpd-service-info"> 5408 <div class="hob-rgpd-service-title">Google reCAPTCHA</div> 5409 <div class="hob-rgpd-service-desc">Anti-spam Google reCAPTCHA.</div> 5410 </div> 5411 <div class="hob-rgpd-service-toggle"> 5412 <label class="hob-rgpd-switch"> 5413 <input type="checkbox" class="hob-rgpd-toggle" 5414 data-service-key="recaptcha" /> 5415 <span class="hob-rgpd-slider"></span> 5416 </label> 5417 </div> 5418 </div> 5419 </div> 5420 5421 <div class="hob-rgpd-popup-actions"> 5422 <button type="button" class="hob-btn hob-accept-all" style="background-color:#00aaff;color:#ffffff;"> 5423 Tout accepter </button> 5424 <button type="button" class="hob-btn hob-reject-all" style="background-color:#00aaff;color:#ffffff;"> 5425 Tout refuser </button> 5426 <button type="button" class="hob-btn hob-save" style="background-color:#00aaff;color:#ffffff;"> 5427 Enregistrer mes préférences </button> 5428 </div> 5429 5430 <div class="hob-rgpd-credit"> 5431 © <a href="https://www.hob-france.com/" target="_blank" rel="noopener">HOB France Services</a> 5432 </div> 5433 </div> 5434</div> 5435 5436<button type="button" id="hob-rgpd-settings-icon" class="hob-rgpd-settings-icon" 5437 title="Cookies" 5438 aria-label="Cookies" hidden> 5439 <span class="hob-rgpd-cookie-emoji" aria-hidden="true">ðª</span> 5440 <span class="hob-rgpd-cookie-label">Cookies</span> 5441</button>
5442<script id="moment-js" src="https://www.saint-florentin.fr/wp-includes/js/dist/vendor/moment.min.js?ver=2.30.1"></script>
vendor: 1 bytes, line 5442
5442
5443<script id="moment-js-after"> 5444moment.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}} ); 5445//# sourceURL=moment-js-after 5446</script>
vendor: 1 bytes, line 5446
5446
5447<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 5447
5447
5448<script id="fullcalendar-js" src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.10.2/fullcalendar.min.js"></script>
vendor: 1 bytes, line 5448
5448
5449<script id="fullcalendar-fr-js" src="https://cdnjs.cloudflare.com/ajax/libs/fullcalendar/3.10.2/locale/fr.js"></script>
vendor: 1 bytes, line 5449
5449
5450<script id="hcb-frontend-js-extra"> 5451var hcb_front = {"ajax_url":"https://www.saint-florentin.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"}; 5452//# sourceURL=hcb-frontend-js-extra 5453</script>
vendor: 1 bytes, line 5453
5453
5454<script id="hcb-frontend-js" src="https://www.saint-florentin.fr/wp-content/plugins/hob-cityhall-booking/assets/js/frontend.js?ver=1.2.0"></script>
vendor: 1 bytes, line 5454
5454
5455<script id="hob-fc-form-js-extra"> 5456var hobFcFormConfig = {"ajax_url":"https://www.saint-florentin.fr/wp-admin/admin-ajax.php"}; 5457var hobFcPublic = {"ajaxurl":"https://www.saint-florentin.fr/wp-admin/admin-ajax.php","nonce":"d5ec3d1515","page_token":"d71e151bf893c80dcec8bbd768764e12f1c2116504af6f6a8d3cb5506d6209bf","page_ts":"497489"}; 5458var 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."}; 5459//# sourceURL=hob-fc-form-js-extra 5460</script>
vendor: 1 bytes, line 5460
5460
5461<script id="hob-fc-form-js" src="https://www.saint-florentin.fr/wp-content/plugins/hob-formchat-pro/assets/js/form.js?ver=1.29"></script>
vendor: 1 bytes, line 5461
5461
5462<script id="hob-fc-conditional-js" src="https://www.saint-florentin.fr/wp-content/plugins/hob-formchat-pro/assets/js/hob-conditional.js?ver=1.29"></script>
vendor: 1 bytes, line 5462
5462
5463<script id="hob-fc-calculator-js" src="https://www.saint-florentin.fr/wp-content/plugins/hob-formchat-pro/assets/js/hob-calculator.js?ver=1.29"></script>
vendor: 1 bytes, line 5463
5463
5464<script id="hob-fc-rgaa-js" src="https://www.saint-florentin.fr/wp-content/plugins/hob-formchat-pro/assets/js/hob-rgaa.js?ver=1.29"></script>
vendor: 1 bytes, line 5464
5464
5465<script id="leaflet-js" src="https://unpkg.com/[email protected]/dist/leaflet.js?ver=1.9.4"></script>
vendor: 1 bytes, line 5465
5465
5466<script id="hob-fc-map-picker-js" src="https://www.saint-florentin.fr/wp-content/plugins/hob-formchat-pro/assets/js/hob-map-picker.js?ver=1.29"></script>
vendor: 1 bytes, line 5466
5466
5467<script id="hob-fc-address-js-extra"> 5468var 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/"}; 5469//# sourceURL=hob-fc-address-js-extra 5470</script>
vendor: 1 bytes, line 5470
5470
5471<script id="hob-fc-address-js" src="https://www.saint-florentin.fr/wp-content/plugins/hob-formchat-pro/assets/js/hob-address.js?ver=1.29"></script>
vendor: 1 bytes, line 5471
5471
5472<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 5472
5472
5473<script id="hobrgpd-front-js-extra"> 5474var hobRgpdConfig = {"cookieName":"hobConsentPrefs","cookieMaxAge":"2592000"}; 5475//# sourceURL=hobrgpd-front-js-extra 5476</script>
vendor: 1 bytes, line 5476
5476
5477<script id="hobrgpd-front-js" src="https://www.saint-florentin.fr/wp-content/plugins/hob-rgpd/assets/js/front.js?ver=1781167964"></script>
vendor: 1 bytes, line 5477
5477
5478<script id="wp-statistics-tracker-js-extra"> 5479var WP_Statistics_Tracker_Object = {"requestUrl":"https://www.saint-florentin.fr/wp-json/wp-statistics/v2","ajaxUrl":"https://www.saint-florentin.fr/wp-admin/admin-ajax.php","hitParams":{"wp_statistics_hit":1,"source_type":"home","source_id":0,"search_query":"","signature":"62e20c4d581d99169742684755100376","endpoint":"hit"},"option":{"dntEnabled":false,"bypassAdBlockers":false,"consentIntegration":{"name":null,"status":[]},"isPreview":false,"userOnline":false,"isWpConsentApiActive":false},"isLegacyEventLoaded":"","customEventAjaxUrl":"https://www.saint-florentin.fr/wp-admin/admin-ajax.php?action=wp_statistics_custom_event&nonce=e828a08707","onlineParams":{"wp_statistics_hit":1,"source_type":"home","source_id":0,"search_query":"","signature":"62e20c4d581d99169742684755100376","action":"wp_statistics_online_check"},"jsCheckTime":"60000"}; 5480//# sourceURL=wp-statistics-tracker-js-extra 5481</script>
vendor: 1 bytes, line 5481
5481
5482<script id="wp-statistics-tracker-js" src="https://www.saint-florentin.fr/wp-content/plugins/wp-statistics/assets/js/tracker.js?ver=14.16.15"></script>
vendor: 1 bytes, line 5482
5482
5483<script id="wp-emoji-settings" type="application/json"> 5484{"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.saint-florentin.fr/wp-includes/js/wp-emoji-release.min.js?ver=7.1.2"}} 5485</script>
vendor: 1 bytes, line 5485
5485
5486<script type="module"> 5487/*! This file is auto-generated */ 5488var 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)))}); 5489//# sourceURL=https://www.saint-florentin.fr/wp-includes/js/wp-emoji-loader.min.js 5490</script>
5490 5491 <style> 5492 #koba-pwa-banner { 5493 display: none; /* affiché par JS uniquement sur mobile */ 5494 position: fixed; 5495 top: 0; left: 0; right: 0; 5496 z-index: 99999; 5497 background: #1e293b; 5498 color: #fff; 5499 padding: 12px 16px; 5500 flex-direction: column; 5501 gap: 10px; 5502 box-shadow: 0 2px 12px rgba(0,0,0,.35); 5503 font-family: inherit; 5504 } 5505 #koba-pwa-banner.koba-pwa-banner-visible { 5506 display: flex; 5507 } 5508 /* Ligne 1 : icône + texte */ 5509 #koba-pwa-banner .kpb-row1 { 5510 display: flex; 5511 align-items: flex-start; 5512 gap: 12px; 5513 } 5514 #koba-pwa-banner .kpb-icon { 5515 font-size: 24px; 5516 flex-shrink: 0; 5517 line-height: 1.2; 5518 } 5519 #koba-pwa-banner .kpb-body { 5520 flex: 1; 5521 min-width: 0; 5522 } 5523 #koba-pwa-banner .kpb-title { 5524 font-weight: 700; 5525 font-size: .9rem; 5526 line-height: 1.3; 5527 } 5528 #koba-pwa-banner .kpb-desc { 5529 font-size: .8rem; 5530 opacity: .8; 5531 line-height: 1.4; 5532 margin-top: 3px; 5533 } 5534 /* Ligne 2 : bouton + fermer */ 5535 #koba-pwa-banner .kpb-row2 { 5536 display: flex; 5537 align-items: center; 5538 gap: 10px; 5539 } 5540 #koba-pwa-banner .kpb-btn { 5541 background: #1975ae; 5542 color: #fff; 5543 border: none; 5544 padding: 8px 16px; 5545 border-radius: 6px; 5546 font-size: .82rem; 5547 font-weight: 600; 5548 cursor: pointer; 5549 white-space: nowrap; 5550 text-decoration: none; 5551 display: inline-block; 5552 } 5553 #koba-pwa-banner .kpb-close { 5554 background: rgba(255,255,255,.12); 5555 border: 1px solid rgba(255,255,255,.2); 5556 color: rgba(255,255,255,.75); 5557 font-size: .82rem; 5558 font-weight: 600; 5559 line-height: 1; 5560 cursor: pointer; 5561 padding: 7px 12px; 5562 border-radius: 6px; 5563 white-space: nowrap; 5564 } 5565 #koba-pwa-banner .kpb-close:hover { 5566 background: rgba(255,255,255,.2); 5567 color: #fff; 5568 } 5569 /* Décaler le contenu sous la bannière quand elle est visible */ 5570 body.koba-pwa-banner-open { 5571 padding-top: 100px; 5572 } 5573 </style> 5574 5575 <div id="koba-pwa-banner" role="banner" aria-label="Installer l'application"> 5576 <div class="kpb-row1"> 5577 <span class="kpb-icon">ð²</span> 5578 <div class="kpb-body"> 5579 <div class="kpb-title">Installez notre application !</div> 5580 <div class="kpb-desc">Accédez rapidement à notre site depuis votre écran d'accueil.</div> 5581 </div> 5582 </div> 5583 <div class="kpb-row2"> 5584 <a href="https://www.saint-florentin.fr/installapp/" class="kpb-btn">Voir comment installer</a> 5585 <button class="kpb-close" id="koba-pwa-close" aria-label="Fermer">â Fermer</button> 5586 </div> 5587 </div>
5588<script> 5589// Capturer beforeinstallprompt le plus tôt possible (avant tout) 5590var _kobaPwaInstallPrompt = null; 5591window.addEventListener('beforeinstallprompt', function(e) { 5592 e.preventDefault(); 5593 _kobaPwaInstallPrompt = e; 5594 // Si la bannière est déjà affichée, transformer le bouton 5595 var btn = document.querySelector('#koba-pwa-banner .kpb-btn'); 5596 if (btn && document.getElementById('koba-pwa-banner').classList.contains('koba-pwa-banner-visible')) { 5597 _kobaActivateInstallBtn(btn); 5598 } 5599}); 5600 5601function _kobaActivateInstallBtn(btn) { 5602 if (!_kobaPwaInstallPrompt) return; 5603 btn.textContent = 'ð² Installer l\'application'; 5604 btn.removeAttribute('href'); 5605 btn.onclick = function(e) { 5606 e.preventDefault(); 5607 if (!_kobaPwaInstallPrompt) return; 5608 _kobaPwaInstallPrompt.prompt(); 5609 _kobaPwaInstallPrompt.userChoice.then(function(result) { 5610 if (result.outcome === 'accepted') { 5611 _kobaHidePwaBanner(); 5612 } 5613 _kobaPwaInstallPrompt = null; 5614 }); 5615 }; 5616} 5617 5618function _kobaHidePwaBanner() { 5619 var banner = document.getElementById('koba-pwa-banner'); 5620 if (!banner) return; 5621 banner.classList.remove('koba-pwa-banner-visible'); 5622 document.body.classList.remove('koba-pwa-banner-open'); 5623 localStorage.setItem('koba_pwa_banner_closed', Date.now().toString()); 5624} 5625 5626(function() { 5627 // Ne jamais afficher en mode PWA standalone 5628 if (window.matchMedia('(display-mode: standalone)').matches 5629 || window.navigator.standalone === true 5630 || sessionStorage.getItem('koba_pwa') === '1') { 5631 return; 5632 } 5633 5634 var STORAGE_KEY = 'koba_pwa_banner_closed'; 5635 var FREQUENCY_MS = 604800000; 5636 5637 function isMobile() { 5638 return (window.innerWidth < 1024) || 5639 /Android|webOS|iPhone|iPad|iPod|BlackBerry|IEMobile|Opera Mini|Mobile|mobile|CriOS/i.test(navigator.userAgent); 5640 } 5641 5642 if (!isMobile()) return; 5643 5644 var lastClosed = localStorage.getItem(STORAGE_KEY); 5645 if (lastClosed && (Date.now() - parseInt(lastClosed, 10)) < FREQUENCY_MS) return; 5646 5647 var ua = navigator.userAgent; 5648 var isIos = /iPhone|iPad|iPod/i.test(ua); 5649 var isAndroid = /Android/i.test(ua); 5650 // Sur iOS, seul Safari peut installer une PWA. 5651 // Chrome iOS (CriOS), Firefox iOS (FxiOS), Edge iOS (EdgiOS) utilisent WebKit 5652 // mais n'exposent pas la fonctionnalité d'ajout à l'écran d'accueil. 5653 var isIosNonSafari = isIos && /CriOS|FxiOS|EdgiOS|OPiOS|YaBrowser|DuckDuckGo/i.test(ua); 5654 var isIosSafari = isIos && !isIosNonSafari; 5655 5656 function showBanner() { 5657 var banner = document.getElementById('koba-pwa-banner'); 5658 if (!banner) return; 5659 5660 // Cas spécial : iOS hors Safari â bannière informative "ouvrez dans Safari" 5661 if (isIosNonSafari) { 5662 var iconEl = banner.querySelector('.kpb-icon'); 5663 var titleEl = banner.querySelector('.kpb-title'); 5664 var descEl = banner.querySelector('.kpb-desc'); 5665 var btnEl = banner.querySelector('.kpb-btn'); 5666 var row2El = banner.querySelector('.kpb-row2'); 5667 5668 if (iconEl) iconEl.textContent = 'ð§'; 5669 if (titleEl) titleEl.textContent = 'Application disponible dans Safari'; 5670 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.'; 5671 // Le bouton "Voir comment installer" n'a aucun sens ici â on le retire, 5672 // on conserve uniquement le bouton Fermer. 5673 if (btnEl && btnEl.parentNode) { 5674 btnEl.parentNode.removeChild(btnEl); 5675 } 5676 if (row2El) { 5677 row2El.style.justifyContent = 'flex-end'; 5678 } 5679 } else if (_kobaPwaInstallPrompt) { 5680 // Si le prompt natif est déjà disponible (Android/Chrome), transformer le bouton 5681 var btn = banner.querySelector('.kpb-btn'); 5682 if (btn) _kobaActivateInstallBtn(btn); 5683 } 5684 5685 banner.classList.add('koba-pwa-banner-visible'); 5686 document.body.classList.add('koba-pwa-banner-open'); 5687 5688 var closeBtn = document.getElementById('koba-pwa-close'); 5689 if (closeBtn) { 5690 closeBtn.addEventListener('click', _kobaHidePwaBanner); 5691 } 5692 } 5693 5694 if (isIosSafari && !window.navigator.standalone) { 5695 // iOS Safari : afficher immédiatement avec lien vers /installapp/ 5696 document.addEventListener('DOMContentLoaded', showBanner); 5697 } else if (isIosNonSafari) { 5698 // iOS Chrome/Firefox/Edge : afficher la bannière informative "ouvrez dans Safari" 5699 document.addEventListener('DOMContentLoaded', showBanner); 5700 } else if (isAndroid || (!isIos && isMobile())) { 5701 // Android/Chrome : attendre que le prompt soit disponible 5702 document.addEventListener('DOMContentLoaded', function() { 5703 if (_kobaPwaInstallPrompt) { 5704 showBanner(); 5705 } else { 5706 var t = setTimeout(function() { 5707 if (_kobaPwaInstallPrompt) showBanner(); 5708 // sinon : déjà installé ou navigateur non supporté â rien 5709 }, 1000); 5710 } 5711 }); 5712 } 5713})(); 5714</script>
5714 5715 5716 <style> 5717 #koba-desktop-alert { 5718 display: none; /* affiché par JS uniquement sur desktop */ 5719 position: fixed; 5720 top: 50%; 5721 right: 0; 5722 transform: translateY(-50%); 5723 width: 300px; 5724 z-index: 99998; 5725 background: #fff; 5726 color: #333; 5727 border-radius: 0; 5728 box-shadow: 0 6px 30px rgba(0,0,0,.25); 5729 padding: 20px; 5730 box-sizing: border-box; 5731 font-family: inherit; 5732 } 5733 #koba-desktop-alert.kda-visible { 5734 display: block; 5735 animation: kda-slide-in .4s ease; 5736 } 5737 @keyframes kda-slide-in { 5738 from { opacity: 0; transform: translateY(-50%) translateX(30px); } 5739 to { opacity: 1; transform: translateY(-50%) translateX(0); } 5740 } 5741 #koba-desktop-alert .kda-close { 5742 position: absolute; 5743 top: 10px; 5744 right: 10px; 5745 background: none; 5746 border: none; 5747 font-size: 16px; 5748 line-height: 1; 5749 color: #999; 5750 cursor: pointer; 5751 padding: 4px; 5752 } 5753 #koba-desktop-alert .kda-close:hover { color: #333; } 5754 #koba-desktop-alert .kda-icon { 5755 font-size: 28px; 5756 margin-bottom: 8px; 5757 } 5758 #koba-desktop-alert .kda-title { 5759 font-weight: 700; 5760 font-size: 1rem; 5761 margin-bottom: 8px; 5762 color: #1e293b; 5763 } 5764 #koba-desktop-alert .kda-content { 5765 font-size: .85rem; 5766 line-height: 1.55; 5767 color: #555; 5768 margin-bottom: 14px; 5769 } 5770 #koba-desktop-alert .kda-btn { 5771 display: inline-block; 5772 background: #1975ae; 5773 color: #fff; 5774 text-decoration: none; 5775 font-size: .85rem; 5776 font-weight: 600; 5777 padding: 9px 18px; 5778 border-radius: 8px; 5779 transition: opacity .2s; 5780 } 5781 #koba-desktop-alert .kda-btn:hover { 5782 opacity: .85; 5783 color: #fff; 5784 } 5785 </style> 5786 5787 <div id="koba-desktop-alert" role="dialog" aria-label="Application disponible"> 5788 <button class="kda-close" id="koba-desktop-alert-close" aria-label="Fermer">â</button> 5789 <div class="kda-title">ð² Application disponible</div> 5790 <div class="kda-content"> 5791 Allez sur votre smartphone, affichez le site de votre mairie dans le navigateur 5792 de votre choix et vous serez invité à installer l'application sur votre mobile. 5793 Laissez-vous guider, c'est simple ! Si votre mairie a souscrit à l'abonnement, 5794 tout fonctionnera immédiatement. 5795 </div> 5796 <a href="https://www.saint-florentin.fr/installapp/" class="kda-btn">Plus de détails</a> 5797 </div> 5798 5799
5799<script> 5800 (function() { 5801 'use strict'; 5802 5803 var STORAGE_KEY = 'koba_desktop_alert_shown'; 5804 var WEEK_MS = 7 * 86400 * 1000; 5805 5806 // --- Détection desktop Windows / Mac uniquement --- 5807 var ua = navigator.userAgent; 5808 var isMobileUA = /Android|iPhone|iPad|iPod|Mobile|Tablet/i.test(ua); 5809 // iPadOS se fait passer pour un Mac : on l'exclut via le tactile 5810 var isIpadOs = (navigator.platform === 'MacIntel' && navigator.maxTouchPoints > 1); 5811 var isWinMac = /Windows NT|Macintosh/i.test(ua); 5812 5813 if (isMobileUA || isIpadOs || !isWinMac) return; 5814 5815 // --- Mode standalone (PWA installée) : on n'affiche pas --- 5816 if (window.matchMedia && window.matchMedia('(display-mode: standalone)').matches) return; 5817 5818 // --- Fréquence : 1 fois par semaine --- 5819 var last = 0; 5820 try { last = parseInt(localStorage.getItem(STORAGE_KEY) || '0', 10); } catch (e) {} 5821 if (last && (Date.now() - last) < WEEK_MS) return; 5822 5823 function showAlert() { 5824 var box = document.getElementById('koba-desktop-alert'); 5825 if (!box) return; 5826 5827 box.classList.add('kda-visible'); 5828 5829 // On marque comme "vue" dès l'affichage â max 1 fois / semaine 5830 try { localStorage.setItem(STORAGE_KEY, Date.now().toString()); } catch (e) {} 5831 5832 var closeBtn = document.getElementById('koba-desktop-alert-close'); 5833 if (closeBtn) { 5834 closeBtn.addEventListener('click', function() { 5835 box.classList.remove('kda-visible'); 5836 }); 5837 } 5838 } 5839 5840 if (document.readyState === 'loading') { 5841 document.addEventListener('DOMContentLoaded', showAlert); 5842 } else { 5843 showAlert(); 5844 } 5845 })(); 5846 </script>
5846 5847 </body> 5848</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.