{"id":24890,"date":"2025-10-06T12:36:39","date_gmt":"2025-10-06T10:36:39","guid":{"rendered":"https:\/\/verdnatura.info\/?page_id=24890"},"modified":"2025-10-07T07:24:36","modified_gmt":"2025-10-07T05:24:36","slug":"disponibilite-florale-saisons","status":"publish","type":"page","link":"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/","title":{"rendered":"Floral Availability"},"content":{"rendered":"<div class=\"fusion-fullwidth fullwidth-box fusion-builder-row-1 fusion-flex-container has-pattern-background has-mask-background hundred-percent-fullwidth non-hundred-percent-height-scrolling\" style=\"--awb-border-radius-top-left:0px;--awb-border-radius-top-right:0px;--awb-border-radius-bottom-right:0px;--awb-border-radius-bottom-left:0px;--awb-padding-top:40px;--awb-padding-right:10%;--awb-padding-bottom:70px;--awb-padding-left:10%;--awb-padding-right-small:0px;--awb-padding-left-small:0px;--awb-background-color:var(--awb-color2);--awb-flex-wrap:wrap;\" ><div class=\"fusion-builder-row fusion-row fusion-flex-align-items-flex-start fusion-flex-content-wrap\" style=\"width:104% !important;max-width:104% !important;margin-left: calc(-4% \/ 2 );margin-right: calc(-4% \/ 2 );\"><div class=\"fusion-layout-column fusion_builder_column fusion-builder-column-0 fusion_builder_column_1_1 1_1 fusion-flex-column\" style=\"--awb-bg-size:cover;--awb-width-large:100%;--awb-margin-top-large:0px;--awb-spacing-right-large:0%;--awb-margin-bottom-large:0px;--awb-spacing-left-large:0%;--awb-width-medium:100%;--awb-order-medium:0;--awb-spacing-right-medium:1.92%;--awb-spacing-left-medium:1.92%;--awb-width-small:100%;--awb-order-small:0;--awb-spacing-right-small:1.92%;--awb-spacing-left-small:1.92%;\"><div class=\"fusion-column-wrapper fusion-column-has-shadow fusion-flex-justify-content-flex-start fusion-content-layout-column\"><!DOCTYPE html>\n<html lang=\"fr\">\n<head>\n    <meta charset=\"UTF-8\">\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n    <title>Outil de Disponibilit\u00e9 Florale Saisonni\u00e8re<\/title>\n    <link href=\"https:\/\/fonts.googleapis.com\/css2?family=Poppins:wght@300;400;500;600;700&display=swap\" rel=\"stylesheet\">\n    <link href=\"https:\/\/cdn.jsdelivr.net\/npm\/@fortawesome\/fontawesome-free@6.0.0\/css\/all.min.css\" rel=\"stylesheet\">\n    <style>\n        :root {\n          --primary: #8cc63f;\n          --primary-dark: #7baa37;\n          --accent: #b5e087;\n          --bg-page: #f8f9fa; \/* Gris clair pour le fond de page *\/\n          --bg-content: #f8f8f8; \/* Blanc pour les zones de contenu *\/\n          --card-bg: #ffffff;\n          --text: #333333;\n          --text-muted: #555555;\n          --border-light: #e9ecef;\n          --border-input: #e2e8f0;\n          --input-bg: #f9fafb;\n          --radius: 10px;\n          --shadow: 0 4px 6px rgba(0, 0, 0, 0.05);\n          --shadow-hover: 0 10px 15px rgba(0, 0, 0, 0.05);\n          --font-family: 'Poppins', sans-serif;\n\n          \/* Nouvelles couleurs de saisonnalit\u00e9 *\/\n          --season-unavailable: #e74c3c; \/* Rouge *\/\n          --season-available: #f1c40f;   \/* Jaune *\/\n          --season-peak: #2ecc71;      \/* Vert *\/\n        }\n\n        * {\n            margin: 0;\n            padding: 0;\n            box-sizing: border-box;\n        }\n\n        body {\n            font-family: var(--font-family);\n            background-color: var(--bg-page);\n            color: var(--text);\n            line-height: 1.6;\n            display: flex;\n            flex-direction: column;\n            min-height: 100vh;\n        }\n\n        .container {\n            background-color: var(--bg-content);\n            padding: 30px 30px; \/* Marge int\u00e9rieure augment\u00e9e *\/\n            width: 100%;\n            text-align: center;\n            flex-grow: 1;\n            display: flex;\n            flex-direction: column;\n        }\n\n        .content-wrapper {\n             flex-grow: 1;\n             max-width: 1400px;\n             margin: 0 auto;\n             width: 100%;\n        }\n\n        header h1 {\n            color: var(--text);\n            margin-bottom: 10px;\n            font-size: 2.2em;\n            font-weight: 600;\n        }\n        header h1 .accent-color {\n            color: var(--primary);\n        }\n\n        header p {\n            color: var(--text-muted);\n            margin-bottom: 30px;\n            font-size: 1.1em;\n        }\n        header p small {\n            display: block; \/* S'assurer qu'il prend toute la largeur et permet les marges *\/\n            margin-top: 15px;\n            font-size: 0.8em; \/* L\u00e9g\u00e8rement plus petit que le paragraphe parent *\/\n            color: #6c757d; \/* Un peu plus estomp\u00e9 *\/\n        }\n\n        \/* Couleurs du texte de la l\u00e9gende *\/\n        .text-unavailable { color: var(--season-unavailable); font-weight: 500; }\n        .text-available { color: var(--season-available); font-weight: 500; }\n        .text-peak { color: var(--season-peak); font-weight: 500; }\n\n\n        \/* --- Zone de Filtre & Tri --- *\/\n        .controls-area {\n            display: flex;\n            flex-wrap: wrap;\n            justify-content: center;\n            gap: 15px;\n            margin-bottom: 30px;\n            padding: 20px;\n            background-color: var(--card-bg); \/* Style carte blanche *\/\n            border-radius: var(--radius);\n            box-shadow: var(--shadow);\n            border: 1px solid var(--border-light);\n        }\n\n        .control-group {\n            display: flex;\n            flex-direction: column;\n            align-items: flex-start;\n            min-width: 150px;\n            flex-grow: 1;\n        }\n\n        .control-group label {\n            font-weight: 500;\n            margin-bottom: 6px;\n            font-size: 0.9rem; \/* \u00c9tiquette l\u00e9g\u00e8rement plus petite *\/\n            color: var(--text-muted);\n        }\n\n        .control-group input[type=\"search\"],\n        .control-group select {\n            padding: 10px 12px;\n            border: 1px solid var(--border-input);\n            border-radius: var(--radius);\n            font-size: 0.95rem;\n            background-color: var(--input-bg);\n            transition: border-color 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n            width: 100%;\n            height: 42px; \/* Hauteur constante *\/\n        }\n         .control-group input[type=\"search\"] {\n             cursor: text;\n         }\n         .control-group select {\n             cursor: pointer;\n         }\n\n        .control-group input[type=\"search\"]:focus,\n        .control-group select:focus {\n            outline: none;\n            border-color: var(--primary);\n            box-shadow: 0 0 0 3px rgba(140, 198, 63, 0.2);\n        }\n\n        .control-group button#clear-filters-btn {\n            background: var(--primary);\n            color: white;\n            border: none;\n            padding: 0 16px; \/* Marge int\u00e9rieure ajust\u00e9e pour la coh\u00e9rence de la hauteur *\/\n            border-radius: var(--radius);\n            cursor: pointer;\n            transition: background 0.2s ease;\n            font-weight: 500;\n            margin-top: 24.5px; \/* Aligner avec les entr\u00e9es qui ont des \u00e9tiquettes *\/\n            height: 42px; \/* Hauteur constante *\/\n            flex-grow: 0;\n            align-self: flex-end;\n            min-width: auto;\n            display: inline-flex;\n            align-items: center;\n            justify-content: center;\n        }\n        .control-group button#clear-filters-btn:hover {\n            background: var(--primary-dark);\n        }\n        .control-group button#clear-filters-btn i {\n            margin-right: 8px;\n        }\n\n\n        \/* Grille de Fleurs *\/\n        .flower-grid {\n            display: grid;\n            grid-template-columns: repeat(auto-fill, minmax(170px, 1fr));\n            gap: 20px;\n            margin-top: 20px;\n        }\n\n        .flower-card {\n            background-color: var(--card-bg);\n            border: 1px solid var(--border-light);\n            border-radius: var(--radius);\n            padding: 20px; \/* Marge int\u00e9rieure augment\u00e9e *\/\n            text-align: center;\n            box-shadow: var(--shadow);\n            transition: transform 0.2s ease-in-out, box-shadow 0.2s ease-in-out;\n            position: relative;\n            cursor: default;\n            display: flex;\n            flex-direction: column;\n            justify-content: space-between;\n        }\n\n        .flower-card:hover {\n            transform: translateY(-4px);\n            box-shadow: var(--shadow-hover);\n        }\n\n        .flower-card img {\n            width: 80px;\n            height: 80px;\n            object-fit: cover;\n            border-radius: 50%;\n            margin-bottom: 12px;\n            border: 2px solid #f1f3f5;\n            align-self: center;\n        }\n\n        .flower-card .flower-name {\n            font-weight: 600;\n            font-size: 1em;\n            color: var(--text);\n            margin-bottom: 5px;\n        }\n\n        .flower-card .flower-price-tier {\n            font-size: 0.85em;\n            color: #6c757d;\n            margin-bottom: 12px;\n            font-weight: 500;\n        }\n\n        .flower-card .card-buttons {\n            display: flex;\n            justify-content: center;\n            margin-top: auto;\n        }\n\n        .flower-card .card-buttons button.details-btn {\n            padding: 8px 14px;\n            font-size: 0.85em;\n            border: 1px solid var(--primary);\n            border-radius: 8px; \/* Rayon l\u00e9g\u00e8rement plus petit pour un bouton plus petit *\/\n            background-color: #f0f8e9;\n            color: #588028;\n            cursor: pointer;\n            transition: background-color 0.2s, border-color 0.2s;\n            min-width: 90px;\n            font-weight: 500;\n        }\n        .flower-card .details-btn:hover {\n             background-color: #e6f4d8;\n             border-color: var(--primary-dark);\n        }\n\n        \/* Message Aucun R\u00e9sultat *\/\n        .no-results {\n            color: var(--text-muted);\n            font-style: normal;\n            margin-top: 30px;\n            padding: 25px;\n            background-color: var(--input-bg); \/* Utilisation de input-bg pour une diff\u00e9rence subtile *\/\n            border-radius: var(--radius);\n            border: 1px dashed var(--border-input); \/* Bordure en tirets pour l'avis *\/\n            text-align: center;\n            font-size: 1.05em;\n        }\n\n        \/* --- Styles de la Modale --- *\/\n        .modal {\n            display: none;\n            position: fixed;\n            z-index: 1000;\n            left: 0;\n            top: 0;\n            width: 100%;\n            height: 100%;\n            overflow: auto;\n            background-color: rgba(0,0,0,0.5);\n        }\n\n        .modal-content {\n            background-color: var(--card-bg);\n            margin: 8% auto;\n            padding: 30px 35px;\n            border: 1px solid var(--border-light);\n            width: 85%;\n            max-width: 600px;\n            border-radius: var(--radius);\n            position: relative;\n            text-align: left;\n            box-shadow: 0 5px 20px rgba(0,0,0,0.1);\n        }\n\n        .modal-close {\n            color: #888;\n            position: absolute;\n            top: 15px;\n            right: 20px;\n            font-size: 32px;\n            font-weight: normal;\n            line-height: 1;\n            cursor: pointer;\n        }\n        .modal-close:hover,\n        .modal-close:focus {\n            color: var(--text);\n            text-decoration: none;\n        }\n\n        .modal h2 {\n            margin-top: 0;\n            margin-bottom: 20px;\n            color: var(--primary); \/* Couleur de l'en-t\u00eate dans la modale *\/\n            font-size: 1.8em;\n            border-bottom: 1px solid #f1f3f5;\n            padding-bottom: 15px;\n            font-weight: 600;\n        }\n        .modal .modal-image {\n            float: right;\n            margin-left: 25px;\n            margin-bottom: 15px;\n            width: 100px;\n            height: 100px;\n            object-fit: cover;\n            border-radius: 50%;\n            border: 3px solid #f1f3f5;\n        }\n\n        .modal p {\n            margin-bottom: 12px;\n            line-height: 1.6;\n            color: var(--text-muted);\n        }\n        .modal p strong {\n            color: var(--text);\n            min-width: 110px; \/* Ajust\u00e9 pour la traduction \"Niveau de Prix :\" *\/\n            display: inline-block;\n            font-weight: 500;\n        }\n        .modal .season-indicator-list {\n            display: flex;\n            gap: 5px;\n            flex-wrap: wrap;\n            margin-top: 8px;\n        }\n         .month-indicator {\n            display: inline-block;\n            width: 2.4em;\n            text-align: center;\n            padding: 4px 0;\n            border-radius: 5px;\n            line-height: 1.3;\n            font-size: 0.75em;\n            font-weight: 500;\n            \/* D\u00e9faut : Non disponible *\/\n            background-color: var(--season-unavailable);\n            color: white;\n        }\n        .month-indicator.available-season { \/* En Saison *\/\n            background-color: var(--season-available);\n            color: var(--text); \/* Texte fonc\u00e9 pour fond jaune *\/\n        }\n        .month-indicator.peak-season { \/* Haute Saison *\/\n            background-color: var(--season-peak);\n            color: white;\n        }\n\n        \/* Ajustements R\u00e9actifs *\/\n        @media (max-width: 992px) {\n             .control-group {\n                  min-width: 180px;\n             }\n             .modal p strong {\n                min-width: 130px; \/* Ajustement pour les \u00e9tiquettes plus longues en fran\u00e7ais *\/\n            }\n        }\n        @media (max-width: 768px) {\n             .controls-area {\n                flex-direction: column;\n                align-items: stretch;\n                padding: 15px;\n             }\n             .control-group {\n                 min-width: unset;\n                 width: 100%;\n             }\n              .control-group button#clear-filters-btn {\n                 margin-top: 10px;\n                 align-self: stretch;\n             }\n            .flower-grid {\n                grid-template-columns: repeat(auto-fill, minmax(150px, 1fr));\n                gap: 15px;\n            }\n             .modal-content {\n                width: 90%;\n                margin: 10% auto;\n                padding: 25px;\n            }\n             .modal .modal-image {\n                float: none;\n                display: block;\n                margin: 0 auto 20px auto;\n             }\n        }\n\n        @media (max-width: 480px) {\n            header h1 { font-size: 1.9em; }\n            header p { font-size: 1em; }\n            .container { padding: 20px 15px; }\n\n            .flower-grid {\n                grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));\n            }\n            .flower-card img { width: 70px; height: 70px; }\n            .flower-card .card-buttons button.details-btn { font-size: 0.8em; padding: 6px 12px; }\n\n            .modal h2 { font-size: 1.5em; }\n            .modal p { font-size: 0.9em; }\n            .modal p strong { min-width: auto; display: block; margin-bottom: 2px;}\n            .modal-content { padding: 20px; }\n            .modal-close { right: 15px; top: 12px; }\n            .month-indicator { width: 2.1em; font-size: 0.7em;}\n        }\n\n    <\/style>\n<\/head>\n<body>\n\n    <div class=\"container\">\n        <div class=\"content-wrapper\">\n            <header>\n                <h1>Outil de <span class=\"accent-color\">Disponibilit\u00e9<\/span> Florale par Saison<\/h1>\n                <p>\n                    Recherchez ou filtrez les fleurs par mois, prix ou cat\u00e9gorie. Triez les r\u00e9sultats. Cliquez sur 'D\u00e9tails' pour des informations compl\u00e8tes.\n                    <br>Disponibilit\u00e9 : <span class=\"text-unavailable\">Rouge<\/span> = Disponibilit\u00e9 faible\/nulle, <span class=\"text-available\">Jaune<\/span> = Disponibilit\u00e9 moyenne, <span class=\"text-peak\">Vert<\/span> = Haute disponibilit\u00e9.\n                    <small>\n                        Note : La disponibilit\u00e9 mensuelle et les hautes saisons indiqu\u00e9es dans cet outil sont bas\u00e9es sur le comportement du march\u00e9 floral et la production horticole du sud de l'Europe (en particulier les r\u00e9gions \u00e0 climat m\u00e9diterran\u00e9en comme l'Espagne, l'Italie, le Portugal et le sud de la France).\n                    <\/small>\n                <\/p>\n            <\/header>\n\n            <!-- Contr\u00f4les de Filtre et Tri -->\n            <div class=\"controls-area\">\n                <div class=\"control-group\">\n                    <label for=\"search-input\">Rechercher par Nom :<\/label>\n                    <input type=\"search\" id=\"search-input\" placeholder=\"Entrez un nom...\">\n                <\/div>\n                <div class=\"control-group\">\n                    <label for=\"month-select\">Mois :<\/label>\n                    <select id=\"month-select\">\n                        <!-- Options remplies par JS -->\n                    <\/select>\n                <\/div>\n                <div class=\"control-group\">\n                    <label for=\"price-filter\">Niveau de Prix :<\/label>\n                    <select id=\"price-filter\">\n                        <option value=\"all\">Tous les Prix<\/option>\n                        <!-- Options remplies par JS -->\n                    <\/select>\n                <\/div>\n                 <div class=\"control-group\">\n                    <label for=\"category-filter\">Cat\u00e9gorie :<\/label>\n                    <select id=\"category-filter\">\n                        <option value=\"all\">Toutes les Cat\u00e9gories<\/option>\n                        <!-- Options remplies par JS -->\n                    <\/select>\n                <\/div>\n                <div class=\"control-group\">\n                    <label for=\"sort-select\">Trier par :<\/label>\n                    <select id=\"sort-select\">\n                        <option value=\"name-asc\">Nom (A-Z)<\/option>\n                        <option value=\"price-asc\">Prix (Bas-Haut)<\/option>\n                        <option value=\"price-desc\">Prix (Haut-Bas)<\/option>\n                        <option value=\"vase-asc\">Tenue en Vase (Courte-Longue)<\/option>\n                        <option value=\"vase-desc\">Tenue en Vase (Longue-Courte)<\/option>\n                    <\/select>\n                <\/div>\n                 <div class=\"control-group\">\n                     <button id=\"clear-filters-btn\"><i class=\"fas fa-eraser\"><\/i>Effacer Filtres<\/button>\n                 <\/div>\n            <\/div>\n\n            <!-- Grille des R\u00e9sultats de Fleurs -->\n            <div id=\"flower-results\" class=\"flower-grid\">\n                <!-- Fleurs affich\u00e9es ici -->\n            <\/div>\n            <div id=\"no-results-message\" class=\"no-results\" style=\"display: none;\">\n                Aucune fleur ou verdure ne correspond \u00e0 vos crit\u00e8res. Essayez de modifier les filtres ou les termes de recherche.\n            <\/div>\n        <\/div> <!-- Fin content-wrapper -->\n\n        <!-- Pied de page supprim\u00e9 -->\n\n    <\/div> <!-- Fin container -->\n\n    <!-- Modale D\u00e9tails de la Fleur -->\n    <div id=\"flower-detail-modal\" class=\"modal\">\n        <div class=\"modal-content\">\n            <span class=\"modal-close\">\u00d7<\/span>\n            <img decoding=\"async\" id=\"modal-img\" src=\"data:image\/gif;base64,R0lGODlhAQABAAAAACH5BAEKAAEALAAAAAABAAEAAAICTAEAOw==\" data-orig-src=\"\" alt=\"Image de la Fleur\" class=\"lazyload modal-image\">\n            <h2 id=\"modal-name\">Nom de la Fleur<\/h2>\n            <p><strong>Niveau de Prix :<\/strong> <span id=\"modal-price\"><\/span><\/p>\n            <p><strong>Cat\u00e9gorie :<\/strong> <span id=\"modal-category\"><\/span><\/p>\n            <p><strong>Tenue en Vase Est. :<\/strong> <span id=\"modal-vaselife\"><\/span><\/p>\n            <p><strong>Substituts Possibles :<\/strong> <span id=\"modal-substitutes\"><\/span><\/p>\n            <p><strong>Notes :<\/strong> <span id=\"modal-notes\"><\/span><\/p>\n            <p><strong>Disponibilit\u00e9 :<\/strong><\/p>\n            <div id=\"modal-season-indicators\" class=\"season-indicator-list\">\n                <!-- Indicateurs de mois g\u00e9n\u00e9r\u00e9s par JS -->\n            <\/div>\n        <\/div>\n    <\/div>\n\n\n    <script>\n        \/\/ --- Donn\u00e9es des Fleurs ---\n        const flowerData = [\n            {\n                id: \"rose_std\", name: \"Rose\", image: \"https:\/\/cdn.verdnatura.es\/image\/catalog\/1600x900\/freedommatina?1694615970\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [6, 7],\n                priceTier: \"$$$\", category: \"Principale\", vaseLife: \"7-12 jours\", substitutes: [\"Rose de Jardin\", \"Lisianthus\"], notes: \"Grande vari\u00e9t\u00e9 de types disponibles.\"\n            },\n            {\n                id: \"carnation_std\", name: \"\u0152illet\", image: \"https:\/\/images.unsplash.com\/photo-1527061011665-3652c757a4d4?q=80&w=1972&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [],\n                priceTier: \"$\", category: \"Remplissage\/Principale\", vaseLife: \"10-20 jours\", substitutes: [\"Mini \u0152illet\", \"Dianthus\"], notes: \"Tr\u00e8s longue tenue.\"\n            },\n            {\n                id: \"gerbera_std\", name: \"Gerbera\", image: \"https:\/\/cdn.verdnatura.es\/image\/catalog\/1600x900\/117074?1716375175\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [5, 6, 7, 8],\n                priceTier: \"$$\", category: \"Principale\", vaseLife: \"5-9 jours\", substitutes: [\"Tournesol (mini)\", \"Chrysanth\u00e8me (Marguerite)\"], notes: \"N\u00e9cessite une bonne hydratation.\"\n            },\n            {\n                id: \"alstroemeria\", name: \"Alstroemeria\", image: \"https:\/\/cdn.verdnatura.es\/image\/catalog\/1600x900\/151302?1727083748\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [5, 6, 7],\n                priceTier: \"$$\", category: \"Remplissage\/Principale\", vaseLife: \"10-14 jours\", substitutes: [\"Lys (Asiatique, petit)\", \"Freesia\"], notes: \"Longue tenue en vase, les feuilles jaunissent avant les fleurs.\"\n            },\n            {\n                id: \"anthurium\", name: \"Anthurium\", image: \"https:\/\/images.unsplash.com\/photo-1607334386016-091a546f457d?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [],\n                priceTier: \"$$$\", category: \"Principale\/Ligne\", vaseLife: \"14-28 jours\", substitutes: [\"Calla (grand)\"], notes: \"Tropical, a besoin de chaleur, tr\u00e8s longue tenue.\"\n            },\n            {\n                id: \"babysbreath\", name: \"Gypsophile (Paniculata)\", image: \"https:\/\/images.unsplash.com\/photo-1648170037882-dbc37e0789e4?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [6, 7, 8],\n                priceTier: \"$\", category: \"Remplissage\", vaseLife: \"7-10 jours\", substitutes: [\"Solidago\", \"Fleur de cire\", \"Statice\"], notes: \"Peut avoir une odeur caract\u00e9ristique. Diff\u00e9rentes vari\u00e9t\u00e9s disponibles.\"\n            },\n            {\n                id: \"tulip_std\", name: \"Tulipe\", image: \"https:\/\/cdn.verdnatura.es\/image\/catalog\/1600x900\/32564?1741178125\",\n                seasons: [1, 2, 3, 4, 5, 11, 12], highSeasons: [3, 4],\n                priceTier: \"$$\", category: \"Principale\/Ligne\", vaseLife: \"4-7 jours\", substitutes: [\"An\u00e9mone\", \"Renoncule\"], notes: \"Continue de pousser apr\u00e8s la coupe, phototropique.\"\n            },\n            {\n                id: \"peony\", name: \"Pivoine\", image: \"https:\/\/images.unsplash.com\/photo-1575178094668-132dc931ad35?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [4, 5, 6], highSeasons: [5],\n                priceTier: \"$$$$\", category: \"Principale\", vaseLife: \"5-7 jours\", substitutes: [\"Rose de Jardin\", \"Renoncule (Cloni)\", \"Tulipe Double\"], notes: \"Tr\u00e8s demand\u00e9e, saison courte, ouverture variable.\"\n            },\n            {\n                id: \"sunflower\", name: \"Tournesol\", image: \"https:\/\/images.unsplash.com\/photo-1597848212624-a19eb35e2651?q=80&w=1935&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [6, 7, 8, 9, 10], highSeasons: [7, 8],\n                priceTier: \"$$\", category: \"Principale\", vaseLife: \"6-10 jours\", substitutes: [\"Gerbera\", \"Rudbeckia\", \"Chrysanth\u00e8me\"], notes: \"Peut \u00eatre lourd en t\u00eate, assurer une bonne hydratation.\"\n            },\n            {\n                id: \"daffodil\", name: \"Narcisse\", image: \"https:\/\/images.unsplash.com\/photo-1617585370679-920e8cde24f4?q=80&w=1935&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [2, 3, 4], highSeasons: [3],\n                priceTier: \"$$\", category: \"Principale\/Accent\", vaseLife: \"4-6 jours\", substitutes: [\"Narcisse (autres types)\"], notes: \"Exsude une s\u00e8ve nocive pour les autres fleurs ; conditionner s\u00e9par\u00e9ment d'abord.\"\n            },\n            {\n                id: \"lily_gen\", name: \"Lys (G\u00e9n\u00e9ral)\", image: \"https:\/\/images.unsplash.com\/photo-1561897519-6e4fbd1fbc41?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [5, 6, 7, 8], highSeasons: [6, 7],\n                priceTier: \"$$$\", category: \"Principale\/Ligne\", vaseLife: \"7-14 jours\", substitutes: [\"Alstroemeria\"], notes: \"Pr\u00e9ciser Asiatique (sans parfum) ou Oriental (parfum\u00e9).\"\n            },\n             {\n                id: \"lily_asiatic\", name: \"Lys Asiatique\/Oriental\", image: \"https:\/\/cdn.verdnatura.es\/image\/catalog\/1600x900\/12002?1652864881\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [6, 7, 8, 12],\n                priceTier: \"$$$\", category: \"Principale\/Ligne\", vaseLife: \"7-14 jours\", substitutes: [\"Alstroemeria\"], notes: \"Asiatique souvent sans parfum, Oriental parfum\u00e9. Enlever le pollen.\"\n            },\n            {\n                id: \"hyacinth\", name: \"Jacinthe\", image: \"https:\/\/images.unsplash.com\/photo-1580546360504-95e34ddc5ba0?q=80&w=1976&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [1, 2, 3, 4], highSeasons: [3],\n                priceTier: \"$$\", category: \"Principale\/Accent\", vaseLife: \"5-8 jours\", substitutes: [\"Girofl\u00e9e\", \"Delphinium (court)\"], notes: \"Parfum fort, fleur \u00e0 bulbe.\"\n            },\n            {\n                id: \"dahlia\", name: \"Dahlia\", image: \"https:\/\/images.unsplash.com\/photo-1620062317671-ef6441546d7d?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [7, 8, 9, 10], highSeasons: [8, 9],\n                priceTier: \"$$$\", category: \"Principale\", vaseLife: \"4-7 jours\", substitutes: [\"Chrysanth\u00e8me (grand)\", \"Zinnia\"], notes: \"Grande vari\u00e9t\u00e9 de formes et de tailles. Peut avoir une tenue en vase plus courte.\"\n            },\n            {\n                id: \"chrysanthemum\", name: \"Chrysanth\u00e8me\", image: \"https:\/\/images.unsplash.com\/photo-1695384287398-5781a1f51c31?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [9, 10, 11],\n                priceTier: \"$\", category: \"Principale\/Remplissage\", vaseLife: \"10-21 jours\", substitutes: [\"Aster\", \"Marguerite\", \"Gerbera\"], notes: \"Nombreux types (pompon, araign\u00e9e, bouton, marguerite). Tr\u00e8s longue tenue.\"\n            },\n            {\n                id: \"anemone\", name: \"An\u00e9mone\", image: \"https:\/\/images.unsplash.com\/photo-1559979334-dd5cc8ccd499?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [1, 2, 3, 4, 10, 11, 12], highSeasons: [3, 4, 11],\n                priceTier: \"$$$\", category: \"Principale\/Accent\", vaseLife: \"4-8 jours\", substitutes: [\"Renoncule\", \"Pavot\"], notes: \"Centre sombre distinctif, les p\u00e9tales se ferment la nuit\/au froid.\"\n            },\n            {\n                id: \"ranunculus\", name: \"Renoncule\", image: \"https:\/\/images.unsplash.com\/photo-1578668436762-d8f781339bbe?q=80&w=2070&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [1, 2, 3, 4, 5, 11, 12], highSeasons: [3, 4],\n                priceTier: \"$$$\", category: \"Principale\/Remplissage\", vaseLife: \"5-9 jours\", substitutes: [\"Pivoine (petite)\", \"Rose de Jardin\", \"An\u00e9mone\"], notes: \"Nombreux p\u00e9tales, s'ouvre magnifiquement. Les vari\u00e9t\u00e9s Cloni sont plus grandes.\"\n            },\n            {\n                id: \"lavender\", name: \"Lavande\", image: \"https:\/\/images.unsplash.com\/photo-1565011523534-747a8601f10a?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [6, 7, 8], highSeasons: [7],\n                priceTier: \"$\", category: \"Remplissage\/Accent\", vaseLife: \"7-10 jours (fra\u00eeche), longue (s\u00e9ch\u00e9e)\", substitutes: [\"Limonium\", \"Statice\", \"V\u00e9ronique\"], notes: \"Parfum\u00e9e, souvent utilis\u00e9e s\u00e9ch\u00e9e.\"\n            },\n            {\n                id: \"aster\", name: \"Aster\", image: \"https:\/\/images.unsplash.com\/photo-1718475424233-2de4952c6a26?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [8, 9, 10], highSeasons: [9],\n                priceTier: \"$\", category: \"Remplissage\", vaseLife: \"7-12 jours\", substitutes: [\"Solidago\", \"Chrysanth\u00e8me (bouton)\", \"Limonium\"], notes: \"Remplissage de type marguerite, bonne texture automnale.\"\n            },\n            {\n                id: \"callalily\", name: \"Calla (Arum)\", image: \"https:\/\/images.unsplash.com\/photo-1650355648621-1a0445f7f9b4?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [3, 4, 5, 6, 7, 8, 9, 10], highSeasons: [5, 6],\n                priceTier: \"$$$\", category: \"Principale\/Ligne\", vaseLife: \"7-10 jours\", substitutes: [\"Anthurium\", \"Tulipe (Fran\u00e7aise)\"], notes: \"Forme \u00e9l\u00e9gante, vari\u00e9t\u00e9s mini et grandes disponibles.\"\n            },\n            {\n                id: \"hydrangea\", name: \"Hortensia\", image: \"https:\/\/cdn.verdnatura.es\/image\/catalog\/1600x900\/132346?1718724376\",\n                seasons: [5, 6, 7, 8, 9, 10, 11], highSeasons: [7, 8],\n                priceTier: \"$$$\", category: \"Principale\/Remplissage\", vaseLife: \"5-9 jours\", substitutes: [\"Viorne (Boule de neige)\", \"Rose de Jardin (grande)\"], notes: \"Grands besoins en eau, vari\u00e9t\u00e9s 'antiques' disponibles plus tard.\"\n            },\n            {\n                id: \"limonium\", name: \"Limonium (Statice)\", image: \"https:\/\/cdn.verdnatura.es\/image\/catalog\/1600x900\/145638?1743683386\",\n                seasons: [4, 5, 6, 7, 8, 9, 10, 11], highSeasons: [7, 8, 9],\n                priceTier: \"$\", category: \"Remplissage\", vaseLife: \"10-14 jours (frais), long (s\u00e9ch\u00e9)\", substitutes: [\"Statice (autres)\", \"Gypsophile\", \"Fleur de cire\"], notes: \"Bon remplissage, texture a\u00e9rienne, s\u00e8che bien.\"\n            },\n            {\n                id: \"lisianthus\", name: \"Lisianthus (Eustoma)\", image: \"https:\/\/images.unsplash.com\/photo-1689085055401-2e6a7268d6ca?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [5, 6, 7, 8, 9, 10, 11], highSeasons: [7, 8],\n                priceTier: \"$$$\", category: \"Principale\/Remplissage\", vaseLife: \"7-12 jours\", substitutes: [\"Rose (Mini)\", \"Renoncule\", \"\u0152illet\"], notes: \"P\u00e9tales d\u00e9licats, ressemble \u00e0 une rose mais plus fris\u00e9.\"\n            },\n            {\n                id: \"orchid_gen\", name: \"Orchid\u00e9e\", image: \"https:\/\/images.unsplash.com\/photo-1610397648930-477b8c7f0943?q=80&w=1930&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [],\n                priceTier: \"$$$$\", category: \"Principale\/Accent\", vaseLife: \"10-25 jours\", substitutes: [\"D\u00e9pend du type\"], notes: \"Pr\u00e9ciser le type (Phalaenopsis, Cymbidium, Dendrobium, etc.).\"\n            },\n            {\n                id: \"orchid_cymbidium\", name: \"Orchid\u00e9e Cymbidium\", image: \"https:\/\/images.unsplash.com\/photo-1684841881083-c0c54cf00995?q=80&w=1974&auto=format&fit=crop&ixlib=rb-4.1.0&ixid=M3wxMjA3fDB8MHxwaG90by1wYWdlfHx8fGVufDB8fHx8fA%3D%3D\",\n                seasons: [10, 11, 12, 1, 2, 3, 4, 5], highSeasons: [11, 12, 1, 2],\n                priceTier: \"$$$$\", category: \"Principale\/Ligne\", vaseLife: \"14-28 jours\", substitutes: [\"Orchid\u00e9e Phalaenopsis\"], notes: \"Grandes tiges, fleurs cireuses, tr\u00e8s longue tenue.\"\n            },\n            {\n                id: \"orchid_dendrobium\", name: \"Orchid\u00e9e Dendrobium\", image: \"https:\/\/cdn.verdnatura.es\/image\/catalog\/1600x900\/10651?1558961097\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [3, 4, 5],\n                priceTier: \"$$$\", category: \"Ligne\/Accent\", vaseLife: \"7-14 jours\", substitutes: [\"Orchid\u00e9e Mokara\"], notes: \"Tiges de fleurs plus petites, souvent utilis\u00e9es dans les travaux tropicaux.\"\n            },\n            {\n                id: \"eucaliptus\", name: \"Eucalyptus\", image: \"https:\/\/verdnatura.es\/wp-content\/uploads\/2025\/05\/Eucaliptus.webp\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [3, 4, 5, 9, 10, 11],\n                priceTier: \"$$\", category: \"Verdure\", vaseLife: \"10-20 jours\", substitutes: [\"Ruscus\", \"Salal\"],\n                notes: \"Parfum\u00e9, diverses vari\u00e9t\u00e9s (cinerea, parvifolia, populus, silver dollar, etc.). Id\u00e9al pour le volume et l'ar\u00f4me.\"\n            },\n            {\n                id: \"helecho\", name: \"Foug\u00e8re\", image: \"https:\/\/verdnatura.es\/wp-content\/uploads\/2025\/05\/Helecho.webp\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [3, 4, 5, 9, 10, 11],\n                priceTier: \"$\", category: \"Verdure\", vaseLife: \"7-14 jours\", substitutes: [\"Aralia (feuille)\", \"Aspidistra (feuille)\"],\n                notes: \"Classique pour la verdure de base. Vari\u00e9t\u00e9s comme la foug\u00e8re de cuir, la foug\u00e8re \u00e9p\u00e9e.\"\n            },\n            {\n                id: \"lentisco\", name: \"Lentisque\", image: \"https:\/\/verdnatura.es\/wp-content\/uploads\/2025\/05\/lentisco.webp\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [3, 4, 5, 9, 10, 11],\n                priceTier: \"$\", category: \"Verdure\", vaseLife: \"10-18 jours\", substitutes: [\"Myrte\", \"Pittosporum\"],\n                notes: \"Feuillage m\u00e9diterran\u00e9en robuste et durable, parfois avec de petites baies.\"\n            },\n            {\n                id: \"aspidistra\", name: \"Aspidistra\", image: \"https:\/\/verdnatura.es\/wp-content\/uploads\/2025\/05\/Aspidistra.webp\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [3, 4, 5, 6, 7, 8],\n                priceTier: \"$$\", category: \"Verdure\", vaseLife: \"14-28 jours\", substitutes: [\"Monstera (feuille)\", \"Feuille de Ti\"],\n                notes: \"Grande feuille large et tr\u00e8s durable. Id\u00e9ale pour garnir les r\u00e9cipients ou comme \u00e9l\u00e9ment structurel.\"\n            },\n            {\n                id: \"aralia\", name: \"Aralia\", image: \"https:\/\/verdnatura.es\/wp-content\/uploads\/2025\/05\/Aralia.webp\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [3, 4, 5, 6, 7, 8],\n                priceTier: \"$\", category: \"Verdure\", vaseLife: \"7-12 jours\", substitutes: [\"Foug\u00e8re (grande feuille)\", \"Fatsia\"],\n                notes: \"Grande feuille palm\u00e9e, offre une bonne couverture de base.\"\n            },\n            {\n                id: \"robellini\", name: \"Palmier Robellini\", image: \"https:\/\/verdnatura.es\/wp-content\/uploads\/2025\/05\/roebelenii.webp\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [6, 7, 8],\n                priceTier: \"$$\", category: \"Verdure\", vaseLife: \"10-20 jours\", substitutes: [\"Feuille de Palmier Kentia\", \"Feuille de Chico\"],\n                notes: \"Feuille de palmier \u00e9l\u00e9gante, ajoute une touche tropicale et lin\u00e9aire.\"\n            },\n            {\n                id: \"falsa_pimienta\", name: \"Faux Poivrier (Feuillage)\", image: \"https:\/\/verdnatura.es\/wp-content\/uploads\/2025\/05\/Falsa-Pimienta.webp\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [6, 7, 8],\n                priceTier: \"$$\", category: \"Verdure\", vaseLife: \"7-14 jours\", substitutes: [\"Eucalyptus (avec graines)\", \"Cotoneaster\"],\n                notes: \"Branches tombantes avec feuillage fin, souvent avec des baies roses d\u00e9coratives. Parfum\u00e9.\"\n            },\n            {\n                id: \"romero\", name: \"Romarin\", image: \"https:\/\/verdnatura.es\/wp-content\/uploads\/2025\/05\/Romero.webp\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [3, 4, 5, 9, 10, 11],\n                priceTier: \"$\", category: \"Verdure\", vaseLife: \"5-10 jours\", substitutes: [\"Lavande (feuillage)\", \"Thym (feuillage)\"],\n                notes: \"Aromatique, id\u00e9al pour une touche rustique ou m\u00e9diterran\u00e9enne. Peut avoir de petites fleurs.\"\n            },\n            {\n                id: \"salal\", name: \"Salal (Gaulth\u00e9rie Shallon)\", image: \"https:\/\/verdnatura.es\/wp-content\/uploads\/2025\/05\/Salal.webp\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [3, 4, 5, 6, 7, 8],\n                priceTier: \"$\", category: \"Verdure\", vaseLife: \"10-21 jours\", substitutes: [\"Ruscus\", \"Pittosporum\"],\n                notes: \"Feuilles robustes, vert fonc\u00e9, tr\u00e8s longue tenue. Un incontournable en fleuristerie.\"\n            },\n            {\n                id: \"ilex\", name: \"Ilex (Houx)\", image: \"https:\/\/verdnatura.es\/wp-content\/uploads\/2025\/05\/Ilex.webp\",\n                seasons: [9, 10, 11, 12, 1, 2], highSeasons: [11, 12, 1],\n                priceTier: \"$$$\", category: \"Verdure\", vaseLife: \"10-20 jours\", substitutes: [\"Cotoneaster (avec baies)\", \"Skimmia (avec baies)\"],\n                notes: \"Verdure traditionnelle de No\u00ebl, avec des baies rouges brillantes. Vari\u00e9t\u00e9s vertes (sans baies) \u00e9galement disponibles.\"\n            },\n            {\n                id: \"hiedra\", name: \"Lierre\", image: \"https:\/\/verdnatura.es\/wp-content\/uploads\/2025\/05\/Hiedra.webp\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [3, 4, 5, 9, 10, 11],\n                priceTier: \"$\", category: \"Verdure\", vaseLife: \"7-14 jours\", substitutes: [\"Ruscus (pour guirlandes)\", \"Jasmin (feuillage)\"],\n                notes: \"Polyvalent, disponible en diff\u00e9rentes tailles et panachures. Id\u00e9al pour les effets tombants ou couvrir les bases.\"\n            },\n            {\n                id: \"tuya\", name: \"Thuya\", image: \"https:\/\/verdnatura.es\/wp-content\/uploads\/2025\/05\/Tuya.webp\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [11, 12, 1],\n                priceTier: \"$\", category: \"Verdure\", vaseLife: \"10-20 jours\", substitutes: [\"Cypr\u00e8s\", \"Gen\u00e9vrier\"],\n                notes: \"Feuillage de conif\u00e8re, texture plate et \u00e9cailleuse. Ar\u00f4me r\u00e9sineux, bon pour les arrangements hivernaux.\"\n            },\n            {\n                id: \"chico_leaf\", name: \"Feuille de Chico\", image: \"https:\/\/verdnatura.es\/wp-content\/uploads\/2025\/05\/Chico.webp\",\n                seasons: [1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 11, 12], highSeasons: [3, 4, 5, 6, 7, 8],\n                priceTier: \"$\", category: \"Verdure\", vaseLife: \"7-14 jours\", substitutes: [\"Palmier Robellini (petit)\", \"Feuille de Palmier Areca\"],\n                notes: \"Petite feuille de palmier d\u00e9licate, id\u00e9ale pour les d\u00e9tails fins, les boutonni\u00e8res ou les accents tropicaux discrets.\"\n            }\n        ];\n\n        \/\/ --- \u00c9l\u00e9ments DOM ---\n        const searchInput = document.getElementById('search-input');\n        const monthSelect = document.getElementById('month-select');\n        const priceFilter = document.getElementById('price-filter');\n        const categoryFilter = document.getElementById('category-filter');\n        const sortSelect = document.getElementById('sort-select');\n        const clearFiltersBtn = document.getElementById('clear-filters-btn');\n        const flowerResultsDiv = document.getElementById('flower-results');\n        const noResultsMessageDiv = document.getElementById('no-results-message');\n        const modal = document.getElementById('flower-detail-modal');\n        const modalCloseBtn = document.querySelector('.modal-close');\n        const modalImg = document.getElementById('modal-img');\n        const modalName = document.getElementById('modal-name');\n        const modalPrice = document.getElementById('modal-price');\n        const modalCategory = document.getElementById('modal-category');\n        const modalVaseLife = document.getElementById('modal-vaselife');\n        const modalSubstitutes = document.getElementById('modal-substitutes');\n        const modalNotes = document.getElementById('modal-notes');\n        const modalSeasonIndicators = document.getElementById('modal-season-indicators');\n\n        const months = [\n            \"Janvier\", \"F\u00e9vrier\", \"Mars\", \"Avril\", \"Mai\", \"Juin\",\n            \"Juillet\", \"Ao\u00fbt\", \"Septembre\", \"Octobre\", \"Novembre\", \"D\u00e9cembre\"\n        ];\n        const monthAbbr = [\"Jan\", \"F\u00e9v\", \"Mar\", \"Avr\", \"Mai\", \"Juin\", \"Juil\", \"Ao\u00fb\", \"Sep\", \"Oct\", \"Nov\", \"D\u00e9c\"];\n\n        function normalizeText(text) {\n            if (typeof text !== 'string') return '';\n            return text.normalize(\"NFD\").replace(\/[\\u0300-\\u036f]\/g, \"\").toLowerCase();\n        }\n\n        function parseVaseLife(vaseLifeStr) {\n            if (!vaseLifeStr) return 0;\n            \/\/ Cherche le premier nombre pour le tri (ex: \"7-12 jours\" -> 7)\n            const match = vaseLifeStr.match(\/(\\d+)(?:-\\d+)?\\s*jours\/);\n            return match ? parseInt(match[1], 10) : 0;\n        }\n        function parsePriceTier(priceTierStr) {\n            if (!priceTierStr) return 0;\n            return priceTierStr.length;\n        }\n        function populateSelect(selectElement, optionsArray, defaultOptionText) {\n             const firstOption = selectElement.options[0]; \/\/ Garder \"Tous les Prix\/Cat\u00e9gories\"\n             const selectedValue = selectElement.value; \/\/ Pr\u00e9server la s\u00e9lection\n             selectElement.innerHTML = ''; \/\/ Effacer les options existantes sauf la premi\u00e8re\n             if (firstOption && firstOption.value === \"all\") {\n                selectElement.appendChild(firstOption); \/\/ R\u00e9-ajouter l'option \"Tous\" par d\u00e9faut\n             }\n\n            [...new Set(optionsArray)].sort((a, b) => a.localeCompare(b, 'fr')).forEach(optionText => {\n                if(optionText) {\n                    const option = document.createElement('option');\n                    option.value = optionText;\n                    option.textContent = optionText;\n                    selectElement.appendChild(option);\n                }\n            });\n            selectElement.value = selectedValue; \/\/ Restaurer la s\u00e9lection\n        }\n         function createModalSeasonIndicators(flower) {\n            modalSeasonIndicators.innerHTML = '';\n            monthAbbr.forEach((abbr, index) => {\n                const monthNum = index + 1;\n                const monthSpan = document.createElement('span');\n                monthSpan.className = 'month-indicator'; \/\/ Classe de base (rouge par d\u00e9faut)\n                monthSpan.textContent = abbr;\n                \n                if (flower.highSeasons && flower.highSeasons.includes(monthNum)) {\n                    monthSpan.classList.remove('available-season'); \/\/ Assurer aucun conflit\n                    monthSpan.classList.add('peak-season'); \/\/ Vert pour haute saison\n                } else if (flower.seasons && flower.seasons.includes(monthNum)) {\n                    monthSpan.classList.add('available-season'); \/\/ Jaune pour en saison\n                }\n                \/\/ Le d\u00e9faut est rouge (non disponible), g\u00e9r\u00e9 par le style de base .month-indicator\n                modalSeasonIndicators.appendChild(monthSpan);\n            });\n        }\n        function showFlowerDetails(flowerId) {\n            const flower = flowerData.find(f => f.id === flowerId);\n            if (!flower) return;\n            modalName.textContent = flower.name;\n            modalImg.src = flower.image;\n            modalImg.alt = flower.name;\n            modalImg.onerror = function() { this.src='https:\/\/via.placeholder.com\/100\/f0f0f0\/cccccc?text=Pas+d\\'image'; };\n            modalPrice.textContent = flower.priceTier || 'N\/D';\n            modalCategory.textContent = flower.category || 'N\/D';\n            modalVaseLife.textContent = flower.vaseLife || 'N\/D';\n            modalSubstitutes.textContent = flower.substitutes ? (Array.isArray(flower.substitutes) ? flower.substitutes.join(', ') : flower.substitutes) : 'Aucun list\u00e9';\n            modalNotes.textContent = flower.notes || 'Aucune note.';\n            createModalSeasonIndicators(flower);\n            modal.style.display = \"block\";\n            document.body.style.overflow = 'hidden'; \/\/ Emp\u00eacher le d\u00e9filement de l'arri\u00e8re-plan\n        }\n        function closeModal() {\n            modal.style.display = \"none\";\n            document.body.style.overflow = 'auto'; \/\/ Restaurer le d\u00e9filement de l'arri\u00e8re-plan\n        }\n\n        function populateFilters() {\n            const allMonthOption = document.createElement('option');\n            allMonthOption.value = \"all\";\n            allMonthOption.textContent = \"-- Tous les Mois --\";\n            monthSelect.appendChild(allMonthOption);\n            months.forEach((month, index) => {\n                const option = document.createElement('option');\n                option.value = index + 1;\n                option.textContent = month;\n                monthSelect.appendChild(option);\n            });\n\n            const allPrices = flowerData.map(f => f.priceTier).filter(Boolean);\n            const allCategories = flowerData.map(f => f.category).filter(Boolean);\n\n            populateSelect(priceFilter, allPrices, priceFilter.options[0].textContent);\n            populateSelect(categoryFilter, allCategories, categoryFilter.options[0].textContent);\n        }\n\n        function displayFlowers() {\n            flowerResultsDiv.innerHTML = '';\n            noResultsMessageDiv.style.display = 'none';\n\n            const searchTermRaw = searchInput.value.trim();\n            const searchTerm = normalizeText(searchTermRaw);\n            const selectedMonth = monthSelect.value;\n            const selectedPrice = priceFilter.value;\n            const selectedCategory = categoryFilter.value;\n            const selectedSort = sortSelect.value;\n\n            let filteredFlowers = [...flowerData];\n\n             if (searchTerm) {\n                 filteredFlowers = filteredFlowers.filter(flower =>\n                    normalizeText(flower.name).includes(searchTerm)\n                 );\n             }\n\n            if (selectedMonth !== \"all\") {\n                const monthInt = parseInt(selectedMonth);\n                filteredFlowers = filteredFlowers.filter(flower => flower.seasons && flower.seasons.includes(monthInt));\n            }\n\n            if (selectedPrice !== \"all\") {\n                filteredFlowers = filteredFlowers.filter(flower => flower.priceTier === selectedPrice);\n            }\n\n            if (selectedCategory !== \"all\") {\n                filteredFlowers = filteredFlowers.filter(flower => flower.category && normalizeText(flower.category) === normalizeText(selectedCategory));\n            }\n\n            filteredFlowers.sort((a, b) => {\n                switch (selectedSort) {\n                    case 'price-asc':\n                        return parsePriceTier(a.priceTier) - parsePriceTier(b.priceTier);\n                    case 'price-desc':\n                        return parsePriceTier(b.priceTier) - parsePriceTier(a.priceTier);\n                    case 'vase-asc':\n                        return parseVaseLife(a.vaseLife) - parseVaseLife(b.vaseLife);\n                    case 'vase-desc':\n                        return parseVaseLife(b.vaseLife) - parseVaseLife(a.vaseLife);\n                    case 'name-asc':\n                    default:\n                        return a.name.localeCompare(b.name, 'fr');\n                }\n            });\n\n            if (filteredFlowers.length === 0) {\n                noResultsMessageDiv.textContent = \"Aucune fleur ou verdure ne correspond \u00e0 vos crit\u00e8res. Essayez de modifier les filtres ou les termes de recherche.\";\n                noResultsMessageDiv.style.display = 'block';\n            } else {\n                filteredFlowers.forEach(flower => {\n                    const card = document.createElement('div');\n                    card.className = 'flower-card';\n                    card.dataset.flowerId = flower.id;\n\n                    const img = document.createElement('img');\n                    img.src = flower.image;\n                    img.alt = flower.name;\n                    img.onerror = function() { this.src='https:\/\/via.placeholder.com\/80\/f0f0f0\/cccccc?text=Pas+d\\'Img'; };\n\n                    const nameP = document.createElement('p');\n                    nameP.className = 'flower-name';\n                    nameP.textContent = flower.name;\n\n                    const priceP = document.createElement('p');\n                    priceP.className = 'flower-price-tier';\n                    priceP.textContent = flower.priceTier || '';\n\n                    const buttonsDiv = document.createElement('div');\n                    buttonsDiv.className = 'card-buttons';\n\n                    const detailsBtn = document.createElement('button');\n                    detailsBtn.className = 'details-btn card-btn';\n                    detailsBtn.textContent = 'D\u00e9tails';\n                    detailsBtn.dataset.flowerId = flower.id;\n\n                    buttonsDiv.appendChild(detailsBtn);\n\n                    card.appendChild(img);\n                    card.appendChild(nameP);\n                    card.appendChild(priceP);\n                    card.appendChild(buttonsDiv);\n\n                    flowerResultsDiv.appendChild(card);\n                });\n            }\n        }\n\n\n        searchInput.addEventListener('input', displayFlowers);\n        monthSelect.addEventListener('change', displayFlowers);\n        priceFilter.addEventListener('change', displayFlowers);\n        categoryFilter.addEventListener('change', displayFlowers);\n        sortSelect.addEventListener('change', displayFlowers);\n\n        clearFiltersBtn.addEventListener('click', () => {\n            searchInput.value = '';\n            monthSelect.value = \"all\";\n            priceFilter.value = \"all\";\n            categoryFilter.value = \"all\";\n            sortSelect.value = \"name-asc\";\n            displayFlowers();\n        });\n\n        flowerResultsDiv.addEventListener('click', (event) => {\n            const target = event.target.closest('.details-btn'); \/\/ S'assurer que cliquer sur l'ic\u00f4ne \u00e0 l'int\u00e9rieur du bouton fonctionne toujours\n             if (target) {\n                 const flowerId = target.dataset.flowerId;\n                 showFlowerDetails(flowerId);\n             }\n        });\n\n        modalCloseBtn.addEventListener('click', closeModal);\n        window.addEventListener('click', (event) => {\n            if (event.target == modal) {\n                closeModal();\n            }\n        });\n        window.addEventListener('keydown', (event) => {\n            if (event.key === 'Escape' && modal.style.display === \"block\") {\n                closeModal();\n            }\n        });\n\n\n        function init() {\n            populateFilters();\n            displayFlowers();\n        }\n\n        document.addEventListener('DOMContentLoaded', init);\n\n    <\/script>\n<\/body>\n<\/html><\/div><\/div><\/div><\/div>\n","protected":false},"excerpt":{"rendered":"","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"100-width.php","meta":{"_acf_changed":false,"footnotes":""},"class_list":["post-24890","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v24.6 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Floral Availability - Verdnatura<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/\" \/>\n<meta property=\"og:locale\" content=\"fr_FR\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Floral Availability - Verdnatura\" \/>\n<meta property=\"og:url\" content=\"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/\" \/>\n<meta property=\"og:site_name\" content=\"Verdnatura\" \/>\n<meta property=\"article:modified_time\" content=\"2025-10-07T05:24:36+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/\",\"url\":\"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/\",\"name\":\"Floral Availability - Verdnatura\",\"isPartOf\":{\"@id\":\"https:\/\/verdnatura.info\/fr\/#website\"},\"datePublished\":\"2025-10-06T10:36:39+00:00\",\"dateModified\":\"2025-10-07T05:24:36+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/#breadcrumb\"},\"inLanguage\":\"fr-FR\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Portada\",\"item\":\"https:\/\/verdnatura.info\/fr\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Floral Availability\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/verdnatura.info\/fr\/#website\",\"url\":\"https:\/\/verdnatura.info\/fr\/\",\"name\":\"Verdnatura\",\"description\":\"\",\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/verdnatura.info\/fr\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"fr-FR\"}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Floral Availability - Verdnatura","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/","og_locale":"fr_FR","og_type":"article","og_title":"Floral Availability - Verdnatura","og_url":"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/","og_site_name":"Verdnatura","article_modified_time":"2025-10-07T05:24:36+00:00","twitter_card":"summary_large_image","schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/","url":"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/","name":"Floral Availability - Verdnatura","isPartOf":{"@id":"https:\/\/verdnatura.info\/fr\/#website"},"datePublished":"2025-10-06T10:36:39+00:00","dateModified":"2025-10-07T05:24:36+00:00","breadcrumb":{"@id":"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/#breadcrumb"},"inLanguage":"fr-FR","potentialAction":[{"@type":"ReadAction","target":["https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/verdnatura.info\/fr\/disponibilite-florale-saisons\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Portada","item":"https:\/\/verdnatura.info\/fr\/"},{"@type":"ListItem","position":2,"name":"Floral Availability"}]},{"@type":"WebSite","@id":"https:\/\/verdnatura.info\/fr\/#website","url":"https:\/\/verdnatura.info\/fr\/","name":"Verdnatura","description":"","potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/verdnatura.info\/fr\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"fr-FR"}]}},"_links":{"self":[{"href":"https:\/\/verdnatura.info\/fr\/wp-json\/wp\/v2\/pages\/24890","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/verdnatura.info\/fr\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/verdnatura.info\/fr\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/verdnatura.info\/fr\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/verdnatura.info\/fr\/wp-json\/wp\/v2\/comments?post=24890"}],"version-history":[{"count":1,"href":"https:\/\/verdnatura.info\/fr\/wp-json\/wp\/v2\/pages\/24890\/revisions"}],"predecessor-version":[{"id":24891,"href":"https:\/\/verdnatura.info\/fr\/wp-json\/wp\/v2\/pages\/24890\/revisions\/24891"}],"wp:attachment":[{"href":"https:\/\/verdnatura.info\/fr\/wp-json\/wp\/v2\/media?parent=24890"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}