{"id":919,"date":"2026-08-29T12:03:51","date_gmt":"2026-08-29T10:03:51","guid":{"rendered":"https:\/\/latourmedievale.fr\/?page_id=919"},"modified":"2026-10-11T22:37:46","modified_gmt":"2026-10-11T20:37:46","slug":"disponibilites-et-tarifs","status":"publish","type":"page","link":"https:\/\/latourmedievale.fr\/index.php\/disponibilites-et-tarifs\/","title":{"rendered":"Disponibilit\u00e9s, tarifs et R\u00e9servation"},"content":{"rendered":"\n<figure class=\"wp-block-image size-large\"><img loading=\"lazy\" decoding=\"async\" width=\"1024\" height=\"768\" src=\"https:\/\/latourmedievale.fr\/wp-content\/uploads\/2026\/05\/entree-tour-medievale-1024x768.webp\" alt=\"Un jeune femme entre par une porte bleue entourr\u00e9e de puerres de tailles. La tour m\u00e9di\u00e9vale domine l'ensemble.\" class=\"wp-image-477\" srcset=\"https:\/\/latourmedievale.fr\/wp-content\/uploads\/2026\/05\/entree-tour-medievale-1024x768.webp 1024w, https:\/\/latourmedievale.fr\/wp-content\/uploads\/2026\/05\/entree-tour-medievale-300x225.webp 300w, https:\/\/latourmedievale.fr\/wp-content\/uploads\/2026\/05\/entree-tour-medievale-768x576.webp 768w, https:\/\/latourmedievale.fr\/wp-content\/uploads\/2026\/05\/entree-tour-medievale-533x400.webp 533w, https:\/\/latourmedievale.fr\/wp-content\/uploads\/2026\/05\/entree-tour-medievale.webp 1536w\" sizes=\"auto, (max-width: 1024px) 100vw, 1024px\" \/><\/figure>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\" id=\"0-pour-r%C3%A9server-\">Pour r\u00e9server :<\/h2>\n\n\n\n<ol class=\"wp-block-list\">\n<li><strong>Je v\u00e9rifie les disponibilit\u00e9s et j&rsquo;estime mon tarif.<\/strong><\/li>\n\n\n\n<li><strong>J&rsquo;envoie ma demande de r\u00e9servation via le formulaire de contact.<\/strong><\/li>\n\n\n\n<li><strong><strong>Peu de temps apr\u00e8s (de quelques minutes \u00e0 une demi-journ\u00e9e), je re\u00e7ois un message avec le lien de paiement s\u00e9curis\u00e9<\/strong><\/strong>.<\/li>\n\n\n\n<li><strong>J&rsquo;effectue le r\u00e8glement pour valider d\u00e9finitivement ma r\u00e9servation.<\/strong><\/li>\n<\/ol>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\" id=\"1-dates-disponibles\">Dates disponibles<\/h2>\n\n\n\n<style data-wp-block-html=\"css\">\n#calendrier-disponibilites {<br \/>\n    margin-top: 20px;<br \/>\n    padding: 20px;<br \/>\n    border-radius: 12px;<br \/>\n    background: #111111;<br \/>\n    color: #ffffff;<br \/>\n}<\/p>\n<p>.calendrier-entete {<br \/>\n    display: flex;<br \/>\n    align-items: center;<br \/>\n    justify-content: space-between;<br \/>\n    gap: 15px;<br \/>\n    margin-bottom: 20px;<br \/>\n}<\/p>\n<p>.calendrier-entete h2 {<br \/>\n    margin: 0;<br \/>\n    color: #ffffff;<br \/>\n    text-align: center;<br \/>\n    font-size: 22px;<br \/>\n}<\/p>\n<p>.calendrier-entete button {<br \/>\n    width: 42px;<br \/>\n    height: 42px;<br \/>\n    border: 1px solid #ffffff;<br \/>\n    border-radius: 8px;<br \/>\n    background: #222222;<br \/>\n    color: #ffffff;<br \/>\n    font-size: 28px;<br \/>\n    line-height: 1;<br \/>\n    cursor: pointer;<br \/>\n}<\/p>\n<p>.calendrier-entete button:hover,<br \/>\n.calendrier-entete button:focus {<br \/>\n    background: #444444;<br \/>\n}<\/p>\n<p>.calendrier-semaines {<br \/>\n    display: grid;<br \/>\n    grid-template-columns: repeat(7, 1fr);<br \/>\n    gap: 5px;<br \/>\n    margin-bottom: 5px;<br \/>\n    text-align: center;<br \/>\n    font-size: 13px;<br \/>\n    font-weight: bold;<br \/>\n    color: #ffffff;<br \/>\n}<\/p>\n<p>.grille-calendrier {<br \/>\n    display: grid;<br \/>\n    grid-template-columns: repeat(7, 1fr);<br \/>\n    gap: 5px;<br \/>\n}<\/p>\n<p>.jour-calendrier {<br \/>\n    min-height: 48px;<br \/>\n    display: flex;<br \/>\n    align-items: center;<br \/>\n    justify-content: center;<br \/>\n    border-radius: 7px;<br \/>\n    font-size: 14px;<br \/>\n    position: relative;<br \/>\n}<\/p>\n<p>.jour-vide {<br \/>\n    background: transparent;<br \/>\n}<\/p>\n<p>.jour-disponible {<br \/>\n    background: #315c3a;<br \/>\n    color: #ffffff;<br \/>\n    border: 1px solid #8fca9a;<br \/>\n    font-weight: bold;<br \/>\n}<\/p>\n<p>.jour-indisponible {<br \/>\n    background: #303030;<br \/>\n    color: #d0d0d0;<br \/>\n    border: 1px solid #666666;<br \/>\n    font-weight: normal;<br \/>\n}<\/p>\n<p>.jour-disponible::after {<br \/>\n    content: \"\u2713\";<br \/>\n    position: absolute;<br \/>\n    bottom: 3px;<br \/>\n    right: 5px;<br \/>\n    font-size: 10px;<br \/>\n    font-weight: bold;<br \/>\n}<\/p>\n<p>.jour-indisponible::after {<br \/>\n    content: \"\u00d7\";<br \/>\n    position: absolute;<br \/>\n    bottom: 2px;<br \/>\n    right: 5px;<br \/>\n    font-size: 13px;<br \/>\n    font-weight: bold;<br \/>\n}<\/p>\n<p>.jour-aujourd-hui {<br \/>\n    outline: 3px solid #d73301;<br \/>\n    outline-offset: -3px;<br \/>\n}<\/p>\n<p>.legende-calendrier {<br \/>\n    display: flex;<br \/>\n    justify-content: center;<br \/>\n    gap: 25px;<br \/>\n    flex-wrap: wrap;<br \/>\n    margin-top: 20px;<br \/>\n    font-size: 13px;<br \/>\n}<\/p>\n<p>.legende-calendrier > span {<br \/>\n    display: inline-flex;<br \/>\n    align-items: center;<br \/>\n    gap: 7px;<br \/>\n}<\/p>\n<p>.legende-disponible,<br \/>\n.legende-indisponible {<br \/>\n    width: 22px;<br \/>\n    height: 22px;<br \/>\n    display: inline-flex;<br \/>\n    align-items: center;<br \/>\n    justify-content: center;<br \/>\n    border-radius: 4px;<br \/>\n    font-weight: bold;<br \/>\n}<br \/>\n.legende-disponible {<br \/>\n    background: #315c3a;<br \/>\n    border: 1px solid #8fca9a;<br \/>\n}<\/p>\n<p>.legende-indisponible {<br \/>\n    background: #303030;<br \/>\n    border: 1px solid #666666;<br \/>\n}<\/p>\n<p>@media (max-width: 600px) {<\/p>\n<p>    #calendrier-disponibilites {<br \/>\n        padding: 15px;<br \/>\n    }<\/p>\n<p>    .calendrier-entete h2 {<br \/>\n        font-size: 18px;<br \/>\n    }<\/p>\n<p>    .jour-calendrier {<br \/>\n        min-height: 42px;<br \/>\n        font-size: 13px;<br \/>\n    }<\/p>\n<p>    .calendrier-semaines {<br \/>\n        font-size: 11px;<br \/>\n    }<\/p>\n<p>}<br \/>\n<\/style>\n\n\n\n<style data-wp-block-html=\"css\">\n#calendrier-disponibilites {\n    margin-top: 20px;\n    padding: 20px;\n    border-radius: 12px;\n    background: #111111;\n    color: #ffffff;\n}\n\n.calendrier-entete {\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 15px;\n    margin-bottom: 20px;\n}\n\n.calendrier-entete h2 {\n    margin: 0;\n    color: #ffffff;\n    text-align: center;\n    font-size: 22px;\n}\n\n.calendrier-entete button {\n    width: 42px;\n    height: 42px;\n    border: 1px solid #ffffff;\n    border-radius: 8px;\n    background: #222222;\n    color: #ffffff;\n    font-size: 28px;\n    line-height: 1;\n    cursor: pointer;\n}\n\n.calendrier-entete button:hover,\n.calendrier-entete button:focus {\n    background: #444444;\n}\n\n\n.calendrier-semaines {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    gap: 5px;\n    margin-bottom: 5px;\n    text-align: center;\n    font-size: 13px;\n    font-weight: bold;\n    color: #ffffff;\n}\n\n\n.grille-calendrier {\n    display: grid;\n    grid-template-columns: repeat(7, 1fr);\n    gap: 5px;\n}\n\n\n.jour-calendrier {\n    min-height: 48px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: 7px;\n    font-size: 14px;\n    position: relative;\n}\n\n\n.jour-vide {\n    background: transparent;\n}\n\n\n.jour-disponible {\n    background: #315c3a;\n    color: #ffffff;\n    border: 1px solid #8fca9a;\n    font-weight: bold;\n}\n\n\n.jour-indisponible {\n    background: #303030;\n    color: #d0d0d0;\n    border: 1px solid #666666;\n    font-weight: normal;\n}\n\n\n.jour-disponible::after {\n    content: \"\u2713\";\n    position: absolute;\n    bottom: 3px;\n    right: 5px;\n    font-size: 10px;\n    font-weight: bold;\n}\n\n\n.jour-indisponible::after {\n    content: \"\u00d7\";\n    position: absolute;\n    bottom: 2px;\n    right: 5px;\n    font-size: 13px;\n    font-weight: bold;\n}\n\n\n.jour-aujourd-hui {\n    outline: 3px solid #d73301;\n    outline-offset: -3px;\n}\n\n\n.legende-calendrier {\n    display: flex;\n    justify-content: center;\n    gap: 25px;\n    flex-wrap: wrap;\n    margin-top: 20px;\n    font-size: 13px;\n}\n\n\n.legende-calendrier > span {\n    display: inline-flex;\n    align-items: center;\n    gap: 7px;\n}\n\n\n.legende-disponible,\n.legende-indisponible {\n    width: 22px;\n    height: 22px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    border-radius: 4px;\n    font-weight: bold;\n}\n.legende-disponible {\n    background: #315c3a;\n    border: 1px solid #8fca9a;\n}\n\n.legende-indisponible {\n    background: #303030;\n    border: 1px solid #666666;\n}\n\n\n@media (max-width: 600px) {\n\n    #calendrier-disponibilites {\n        padding: 15px;\n    }\n\n    .calendrier-entete h2 {\n        font-size: 18px;\n    }\n\n    .jour-calendrier {\n        min-height: 42px;\n        font-size: 13px;\n    }\n\n    .calendrier-semaines {\n        font-size: 11px;\n    }\n\n}\n\n<\/style>\n\n<script data-wp-block-html=\"js\">\nsetTimeout(function () {\n\n    const grille = document.getElementById(\"grille-calendrier\");\n    const titre = document.getElementById(\"mois-annee\");\n    const boutonPrecedent = document.getElementById(\"mois-precedent\");\n    const boutonSuivant = document.getElementById(\"mois-suivant\");\n\n\n    if (!grille || !titre || !boutonPrecedent || !boutonSuivant) {\n        return;\n    }\n\n\n    let dateCalendrier = new Date();\n\n    dateCalendrier.setDate(1);\n\n\n    let datesIndisponibles = new Set();\n\n\n    const moisFrancais = [\n        \"janvier\",\n        \"f\u00e9vrier\",\n        \"mars\",\n        \"avril\",\n        \"mai\",\n        \"juin\",\n        \"juillet\",\n        \"ao\u00fbt\",\n        \"septembre\",\n        \"octobre\",\n        \"novembre\",\n        \"d\u00e9cembre\"\n    ];\n\n\n    function formatDate(date) {\n\n        const annee = date.getFullYear();\n        const mois = String(date.getMonth() + 1).padStart(2, \"0\");\n        const jour = String(date.getDate()).padStart(2, \"0\");\n\n        return annee + \"-\" + mois + \"-\" + jour;\n    }\n\n\n    function afficherCalendrier() {\n\n        const annee = dateCalendrier.getFullYear();\n        const mois = dateCalendrier.getMonth();\n\n\n        titre.textContent =\n            moisFrancais[mois] + \" \" + annee;\n\n\n        grille.innerHTML = \"\";\n\n\n        const premierJour = new Date(annee, mois, 1);\n\n        let jourSemaine = premierJour.getDay();\n\n\n        \/*\n         * JavaScript :\n         * dimanche = 0\n         * lundi = 1\n         *\n         * Notre calendrier commence lundi.\n         *\/\n\n        jourSemaine = jourSemaine === 0 ? 7 : jourSemaine;\n\n\n        \/*\n         * Cases vides avant le premier jour.\n         *\/\n\n        for (let i = 1; i < jourSemaine; i++) {\n\n            const caseVide = document.createElement(\"div\");\n\n            caseVide.className =\n                \"jour-calendrier jour-vide\";\n\n            grille.appendChild(caseVide);\n        }\n\n\n        const nombreJours =\n            new Date(annee, mois + 1, 0).getDate();\n\n\n        const aujourdHui = formatDate(new Date());\n\n\n        for (let jour = 1; jour <= nombreJours; jour++) {\n\n            const date = new Date(annee, mois, jour);\n\n            const dateTexte = formatDate(date);\n\n\n            const cellule = document.createElement(\"div\");\n\n            cellule.className =\n                \"jour-calendrier\";\n\n\n            \/*\n             * V\u00e9rification de la disponibilit\u00e9.\n             *\/\n\n            if (datesIndisponibles.has(dateTexte)) {\n\n                cellule.classList.add(\n                    \"jour-indisponible\"\n                );\n\n                cellule.setAttribute(\n                    \"aria-label\",\n                    jour + \" : indisponible\"\n                );\n\n                cellule.setAttribute(\n                    \"title\",\n                    \"Indisponible\"\n                );\n\n            } else {\n\n                cellule.classList.add(\n                    \"jour-disponible\"\n                );\n\n                cellule.setAttribute(\n                    \"aria-label\",\n                    jour + \" : disponible\"\n                );\n\n                cellule.setAttribute(\n                    \"title\",\n                    \"Disponible\"\n                );\n            }\n\n\n            \/*\n             * Aujourd'hui.\n             *\/\n\n            if (dateTexte === aujourdHui) {\n\n                cellule.classList.add(\n                    \"jour-aujourd-hui\"\n                );\n            }\n\n\n            cellule.textContent = jour;\n\n            grille.appendChild(cellule);\n        }\n    }\n\n\n    function chargerCalendriers() {\n\n        grille.innerHTML =\n            \"Lecture des disponibilit\u00e9s en cours...\";\n\n\n        fetch(\"\/wp-json\/tour-medievale\/v1\/calendriers\")\n            .then(function (reponse) {\n\n                if (!reponse.ok) {\n\n                    throw new Error(\n                        \"HTTP \" + reponse.status\n                    );\n                }\n\n                return reponse.json();\n            })\n            .then(function (donnees) {\n\n                if (\n                    !donnees.success ||\n                    !Array.isArray(\n                        donnees.dates_indisponibles\n                    )\n                ) {\n\n                    throw new Error(\n                        \"Donn\u00e9es de calendrier invalides\"\n                    );\n                }\n\n\n                \/*\n                 * Transformation en Set :\n                 * recherche rapide des dates.\n                 *\/\n\n                datesIndisponibles =\n                    new Set(\n                        donnees.dates_indisponibles\n                    );\n\n\n                afficherCalendrier();\n            })\n            .catch(function (erreur) {\n\n                grille.innerHTML =\n                    \"Impossible de charger les disponibilit\u00e9s.\";\n\n\n                console.log(\n                    \"Erreur calendrier :\",\n                    erreur\n                );\n            });\n    }\n\n\n    boutonPrecedent.addEventListener(\n        \"click\",\n        function () {\n\n            dateCalendrier.setMonth(\n                dateCalendrier.getMonth() - 1\n            );\n\n            afficherCalendrier();\n        }\n    );\n\n\n    boutonSuivant.addEventListener(\n        \"click\",\n        function () {\n\n            dateCalendrier.setMonth(\n                dateCalendrier.getMonth() + 1\n            );\n\n            afficherCalendrier();\n        }\n    );\n\n\n    chargerCalendriers();\n\n}, 500);\n\n<\/script>\n\n<div id=\"calendrier-disponibilites\">\n\n  <div class=\"calendrier-entete\">\n\n    <button type=\"button\" id=\"mois-precedent\" aria-label=\"Mois pr\u00e9c\u00e9dent\">\n      \u2039\n    <\/button>\n\n    <h2 id=\"mois-annee\"><\/h2>\n\n    <button type=\"button\" id=\"mois-suivant\" aria-label=\"Mois suivant\">\n      \u203a\n    <\/button>\n\n  <\/div>\n\n\n  <div class=\"calendrier-semaines\">\n    <div>Lun<\/div>\n    <div>Mar<\/div>\n    <div>Mer<\/div>\n    <div>Jeu<\/div>\n    <div>Ven<\/div>\n    <div>Sam<\/div>\n    <div>Dim<\/div>\n  <\/div>\n\n\n  <div id=\"grille-calendrier\" class=\"grille-calendrier\">\n    Chargement des disponibilit\u00e9s...\n  <\/div>\n\n\n  <div class=\"legende-calendrier\">\n\n    <span>\n      <span class=\"legende-disponible\">\u2713<\/span>\n      Disponible\n    <\/span>\n\n    <span>\n      <span class=\"legende-indisponible\">\u00d7<\/span>\n      Indisponible\n    <\/span>\n\n  <\/div>\n\n<\/div>\n\n\n\n<style data-wp-block-html=\"css\">\n#simulateur-tarif {<br \/>\n  max-width: 700px;<br \/>\n  margin: 30px auto;<br \/>\n  padding: 30px;<br \/>\n  background: #000000;<br \/>\n  color: #ffffff;<br \/>\n  border-radius: 15px;<br \/>\n  box-shadow: 0 5px 20px rgba(0,0,0,0.25);<br \/>\n  box-sizing: border-box;<br \/>\n}<\/p>\n<p>#simulateur-tarif h2 {<br \/>\n  margin-top: 0;<br \/>\n  margin-bottom: 25px;<br \/>\n  color: #ffffff;<br \/>\n  text-align: center;<br \/>\n}<\/p>\n<p>.tarif-formulaire {<br \/>\n  display: grid;<br \/>\n  grid-template-columns: 1fr 1fr;<br \/>\n  gap: 20px;<br \/>\n}<\/p>\n<p>.champ-tarif {<br \/>\n  display: flex;<br \/>\n  flex-direction: column;<br \/>\n}<\/p>\n<p>.champ-tarif label {<br \/>\n  margin-bottom: 7px;<br \/>\n  font-weight: bold;<br \/>\n  color: #ffffff;<br \/>\n}<\/p>\n<p>.champ-tarif label span {<br \/>\n  font-weight: normal;<br \/>\n  font-size: 0.85em;<br \/>\n}<\/p>\n<p>.champ-tarif input,<br \/>\n.champ-tarif select {<br \/>\n  width: 100%;<br \/>\n  min-height: 45px;<br \/>\n  padding: 8px 12px;<br \/>\n  box-sizing: border-box;<br \/>\n  border: 2px solid #ffffff;<br \/>\n  border-radius: 8px;<br \/>\n  background: #ffffff;<br \/>\n  color: #000000;<br \/>\n  font-size: 16px;<br \/>\n}<\/p>\n<p>#calculer-tarif {<br \/>\n  display: block;<br \/>\n  margin: 25px auto 0;<br \/>\n  padding: 12px 25px;<br \/>\n  border: none;<br \/>\n  border-radius: 8px;<br \/>\n  background: #D73301;<br \/>\n  color: #ffffff;<br \/>\n  font-size: 17px;<br \/>\n  font-weight: bold;<br \/>\n  cursor: pointer;<br \/>\n}<\/p>\n<p>#calculer-tarif:hover {<br \/>\n  opacity: 0.9;<br \/>\n}<\/p>\n<p>#resultat-tarif {<br \/>\n  margin-top: 25px;<br \/>\n  padding-top: 20px;<br \/>\n  border-top: 1px solid rgba(255,255,255,0.3);<br \/>\n}<\/p>\n<p>.resultat-erreur {<br \/>\n  padding: 15px;<br \/>\n  background: #D73301;<br \/>\n  border-radius: 8px;<br \/>\n  font-weight: bold;<br \/>\n}<\/p>\n<p>.resultat-prix {<br \/>\n  line-height: 1.7;<br \/>\n}<\/p>\n<p>.resultat-prix h3 {<br \/>\n  margin-top: 0;<br \/>\n  color: #ffffff;<br \/>\n}<\/p>\n<p>.ligne-prix {<br \/>\n  display: flex;<br \/>\n  justify-content: space-between;<br \/>\n  gap: 20px;<br \/>\n}<\/p>\n<p>.total-prix {<br \/>\n  margin-top: 12px;<br \/>\n  padding-top: 12px;<br \/>\n  border-top: 2px solid #ffffff;<br \/>\n  font-size: 1.3em;<br \/>\n  font-weight: bold;<br \/>\n}<\/p>\n<p>.reduction {<br \/>\n  color: #D73301;<br \/>\n  font-weight: bold;<br \/>\n}<\/p>\n<p>.details-nuits {<br \/>\n  margin-top: 20px;<br \/>\n  font-size: 0.9em;<br \/>\n  opacity: 0.85;<br \/>\n}<\/p>\n<p>@media (max-width: 600px) {<\/p>\n<p>  #simulateur-tarif {<br \/>\n    padding: 20px;<br \/>\n  }<\/p>\n<p>  .tarif-formulaire {<br \/>\n    grid-template-columns: 1fr;<br \/>\n  }<\/p>\n<p>}<br \/>\n.resultat-tarif {<br \/>\n    margin-top: 25px;<br \/>\n    padding: 25px;<br \/>\n    border-radius: 12px;<br \/>\n    background: #111111;<br \/>\n    color: #ffffff;<br \/>\n}<\/p>\n<p>.resultat-tarif h3,<br \/>\n.resultat-tarif h4 {<br \/>\n    color: #ffffff;<br \/>\n}<\/p>\n<p>.detail-nuits {<br \/>\n    margin-bottom: 25px;<br \/>\n}<\/p>\n<p>.detail-nuits h4 {<br \/>\n    margin-bottom: 12px;<br \/>\n}<\/p>\n<p>.ligne-nuit {<br \/>\n    display: flex;<br \/>\n    gap: 15px;<br \/>\n    padding: 9px 0;<br \/>\n    border-bottom: 1px solid #444444;<br \/>\n    font-size: 14px;<br \/>\n    color: #ffffff;<br \/>\n}<\/p>\n<p>.date-nuit {<br \/>\n    min-width: 90px;<br \/>\n    font-weight: bold;<br \/>\n    color: #ffffff;<br \/>\n}<\/p>\n<p>.info-nuit {<br \/>\n    flex: 1;<br \/>\n    color: #ffffff;<br \/>\n}<\/p>\n<p>.resume-tarif {<br \/>\n    margin-top: 20px;<br \/>\n}<\/p>\n<p>.ligne-tarif {<br \/>\n    display: flex;<br \/>\n    justify-content: space-between;<br \/>\n    gap: 20px;<br \/>\n    padding: 9px 0;<br \/>\n    color: #ffffff;<br \/>\n}<\/p>\n<p>.ligne-tarif span,<br \/>\n.ligne-tarif strong {<br \/>\n    color: #ffffff;<br \/>\n}<\/p>\n<p>.ligne-tarif.promotion,<br \/>\n.ligne-tarif.code-promo {<br \/>\n    font-weight: bold;<br \/>\n}<\/p>\n<p>.texte-promo {<br \/>\n    margin: -4px 0 12px;<br \/>\n    font-size: 13px;<br \/>\n    color: #cccccc;<br \/>\n}<\/p>\n<p>.total-final {<br \/>\n    display: flex;<br \/>\n    justify-content: space-between;<br \/>\n    gap: 20px;<br \/>\n    margin-top: 18px;<br \/>\n    padding-top: 18px;<br \/>\n    border-top: 2px solid #ffffff;<br \/>\n    font-size: 20px;<br \/>\n    font-weight: bold;<br \/>\n    color: #ffffff;<br \/>\n}<\/p>\n<p>.total-final span,<br \/>\n.total-final strong {<br \/>\n    color: #ffffff;<br \/>\n}<br \/>\n<\/style>\n\n\n\n<style data-wp-block-html=\"css\">\n#simulateur-tarif {\n  max-width: 700px;\n  margin: 30px auto;\n  padding: 30px;\n  background: #000000;\n  color: #ffffff;\n  border-radius: 15px;\n  box-shadow: 0 5px 20px rgba(0,0,0,0.25);\n  box-sizing: border-box;\n}\n\n#simulateur-tarif h2 {\n  margin-top: 0;\n  margin-bottom: 25px;\n  color: #ffffff;\n  text-align: center;\n}\n\n.tarif-formulaire {\n  display: grid;\n  grid-template-columns: 1fr 1fr;\n  gap: 20px;\n}\n\n.champ-tarif {\n  display: flex;\n  flex-direction: column;\n}\n\n.champ-tarif label {\n  margin-bottom: 7px;\n  font-weight: bold;\n  color: #ffffff;\n}\n\n.champ-tarif label span {\n  font-weight: normal;\n  font-size: 0.85em;\n}\n\n.champ-tarif input,\n.champ-tarif select {\n  width: 100%;\n  min-height: 45px;\n  padding: 8px 12px;\n  box-sizing: border-box;\n  border: 2px solid #ffffff;\n  border-radius: 8px;\n  background: #ffffff;\n  color: #000000;\n  font-size: 16px;\n}\n\n#calculer-tarif {\n  display: block;\n  margin: 25px auto 0;\n  padding: 12px 25px;\n  border: none;\n  border-radius: 8px;\n  background: #D73301;\n  color: #ffffff;\n  font-size: 17px;\n  font-weight: bold;\n  cursor: pointer;\n}\n\n#calculer-tarif:hover {\n  opacity: 0.9;\n}\n\n#resultat-tarif {\n  margin-top: 25px;\n  padding-top: 20px;\n  border-top: 1px solid rgba(255,255,255,0.3);\n}\n\n.resultat-erreur {\n  padding: 15px;\n  background: #D73301;\n  border-radius: 8px;\n  font-weight: bold;\n}\n\n.resultat-prix {\n  line-height: 1.7;\n}\n\n.resultat-prix h3 {\n  margin-top: 0;\n  color: #ffffff;\n}\n\n.ligne-prix {\n  display: flex;\n  justify-content: space-between;\n  gap: 20px;\n}\n\n.total-prix {\n  margin-top: 12px;\n  padding-top: 12px;\n  border-top: 2px solid #ffffff;\n  font-size: 1.3em;\n  font-weight: bold;\n}\n\n.reduction {\n  color: #D73301;\n  font-weight: bold;\n}\n\n.details-nuits {\n  margin-top: 20px;\n  font-size: 0.9em;\n  opacity: 0.85;\n}\n\n@media (max-width: 600px) {\n\n  #simulateur-tarif {\n    padding: 20px;\n  }\n\n  .tarif-formulaire {\n    grid-template-columns: 1fr;\n  }\n\n}\n.resultat-tarif {\n    margin-top: 25px;\n    padding: 25px;\n    border-radius: 12px;\n    background: #111111;\n    color: #ffffff;\n}\n\n.resultat-tarif h3,\n.resultat-tarif h4 {\n    color: #ffffff;\n}\n\n.detail-nuits {\n    margin-bottom: 25px;\n}\n\n.detail-nuits h4 {\n    margin-bottom: 12px;\n}\n\n.ligne-nuit {\n    display: flex;\n    gap: 15px;\n    padding: 9px 0;\n    border-bottom: 1px solid #444444;\n    font-size: 14px;\n    color: #ffffff;\n}\n\n.date-nuit {\n    min-width: 90px;\n    font-weight: bold;\n    color: #ffffff;\n}\n\n.info-nuit {\n    flex: 1;\n    color: #ffffff;\n}\n\n.resume-tarif {\n    margin-top: 20px;\n}\n\n.ligne-tarif {\n    display: flex;\n    justify-content: space-between;\n    gap: 20px;\n    padding: 9px 0;\n    color: #ffffff;\n}\n\n.ligne-tarif span,\n.ligne-tarif strong {\n    color: #ffffff;\n}\n\n.ligne-tarif.promotion,\n.ligne-tarif.code-promo {\n    font-weight: bold;\n}\n\n.texte-promo {\n    margin: -4px 0 12px;\n    font-size: 13px;\n    color: #cccccc;\n}\n\n.total-final {\n    display: flex;\n    justify-content: space-between;\n    gap: 20px;\n    margin-top: 18px;\n    padding-top: 18px;\n    border-top: 2px solid #ffffff;\n    font-size: 20px;\n    font-weight: bold;\n    color: #ffffff;\n}\n\n.total-final span,\n.total-final strong {\n    color: #ffffff;\n}\n\n\n\/* ========================================\n   INFORMATION : DATES DEJA RESERVEES\n   (s'affiche sous le r\u00e9sultat, apr\u00e8s le total, sans le modifier)\n======================================== *\/\n\n.alerte-reservation {\n    margin-top: 25px;\n    padding: 15px 18px;\n    border: 1px solid #D73301;\n    border-left-width: 5px;\n    border-radius: 8px;\n    background: #1a0f0b;\n    color: #ffffff;\n    line-height: 1.6;\n}\n\n.alerte-reservation[hidden] {\n    display: none;\n}\n\n.alerte-reservation p {\n    margin: 0 0 6px;\n    color: #ffffff;\n}\n\n.alerte-reservation p:last-child {\n    margin-bottom: 0;\n}\n\n.alerte-reservation ul {\n    margin: 6px 0 10px 20px;\n    padding: 0;\n}\n\n.alerte-reservation li {\n    color: #ffffff;\n}\n\n.alerte-reservation .alerte-reservation-note {\n    font-size: 13px;\n    color: #cccccc;\n}\n\n<\/style>\n\n<script data-wp-block-html=\"js\">\nsetTimeout(function () {\n\n\/* ========================================\n   PARAMETRES MODIFIABLES\n======================================== *\/\n\nconst TARIFS = {\n\n    \/* Tarifs des saisons *\/\n    basse: 75,\n    moyenne: 80,\n    haute: 95,\n    tresHaute: 105,\n\n    \/* Tarifs vendredi \/ samedi *\/\n    weekendBasse: 85,\n    weekendMoyenne: 90,\n\n    \/* Frais *\/\n    menage: 25,\n    taxeSejourParPersonneParNuit: 0.90\n};\n\n\nconst REGLES = {\n\n    \/* Nombre minimum de nuits *\/\n    minimumNuitsJuilletAout: 3,\n\n    \/* Promotions *\/\n    reduction7Nuits: 0.15,\n    reductionVeille: 0.25,\n    reduction2a3Jours: 0.20,\n    reduction4a7Jours: 0.10,\n    reductionCodePromo: 0.10\n};\n\n\/* ========================================\nJOURS FERIES FRANCAIS\n======================================== *\/\n\nfunction estJourFerie(date) {\n\n    const mois = date.getMonth() + 1;\n    const jour = date.getDate();\n    const annee = date.getFullYear();\n\n    \/* Jours f\u00e9ri\u00e9s \u00e0 date fixe *\/\n\n    if (mois === 1 && jour === 1) return true;\n    if (mois === 5 && jour === 1) return true;\n    if (mois === 5 && jour === 8) return true;\n    if (mois === 7 && jour === 14) return true;\n    if (mois === 8 && jour === 15) return true;\n    if (mois === 11 && jour === 1) return true;\n    if (mois === 11 && jour === 11) return true;\n    if (mois === 12 && jour === 25) return true;\n\n\n    \/* Calcul de P\u00e2ques *\/\n\n    const a = annee % 19;\n    const b = Math.floor(annee \/ 100);\n    const c = annee % 100;\n    const d = Math.floor(b \/ 4);\n    const e = b % 4;\n    const f = Math.floor((b + 8) \/ 25);\n    const g = Math.floor((b - f + 1) \/ 3);\n    const h = (19 * a + b - d - g + 15) % 30;\n    const i = Math.floor(c \/ 4);\n    const k = c % 4;\n    const l = (32 + 2 * e + 2 * i - h - k) % 7;\n    const m = Math.floor((a + 11 * h + 22 * l) \/ 451);\n\n    const moisPaques =\n        Math.floor((h + l - 7 * m + 114) \/ 31);\n\n    const jourPaques =\n        ((h + l - 7 * m + 114) % 31) + 1;\n\n\n    \/* Jours mobiles *\/\n\n    const paques = new Date(\n        annee,\n        moisPaques - 1,\n        jourPaques\n    );\n\n    const lundiPaques = new Date(paques);\n    lundiPaques.setDate(lundiPaques.getDate() + 1);\n\n    const ascension = new Date(paques);\n    ascension.setDate(ascension.getDate() + 39);\n\n    const lundiPentecote = new Date(paques);\n    lundiPentecote.setDate(lundiPentecote.getDate() + 50);\n\n\n    if (\n        date.getMonth() === lundiPaques.getMonth() &&\n        date.getDate() === lundiPaques.getDate()\n    ) {\n        return true;\n    }\n\n    if (\n        date.getMonth() === ascension.getMonth() &&\n        date.getDate() === ascension.getDate()\n    ) {\n        return true;\n    }\n\n    if (\n        date.getMonth() === lundiPentecote.getMonth() &&\n        date.getDate() === lundiPentecote.getDate()\n    ) {\n        return true;\n    }\n\n\n    return false;\n}\n\n\/* ========================================\n   CALCULATEUR\n======================================== *\/\n\nconst bouton = document.getElementById(\"calculer-tarif\");\n\nif (!bouton) {\n    alert(\"ERREUR : bouton introuvable\");\n    return;\n}\n\nbouton.addEventListener(\"click\", function () {\n\n    const arrivee = document.getElementById(\"date-arrivee\").value;\n    const depart = document.getElementById(\"date-depart\").value;\n    const personnes = Number(\n        document.getElementById(\"nb-personnes\").value\n    );\n\n    if (!arrivee || !depart) {\n        alert(\"Merci de choisir votre date d'arriv\u00e9e et votre date de d\u00e9part.\");\n        return;\n    }\n\n    const dateArrivee = new Date(arrivee + \"T00:00:00\");\n    const dateDepart = new Date(depart + \"T00:00:00\");\n\n    if (dateDepart <= dateArrivee) {\n        alert(\"La date de d\u00e9part doit \u00eatre apr\u00e8s la date d'arriv\u00e9e.\");\n        return;\n    }\n\n    const nuits = Math.round(\n        (dateDepart - dateArrivee) \/ 86400000\n    );\n\n\n\/* INFORMATION JUILLET \/ AOUT *\/\n\nif (\n    arrivee.indexOf(\"-07-\") !== -1 ||\n    arrivee.indexOf(\"-08-\") !== -1\n) {\n\n    if (nuits < REGLES.minimumNuitsJuilletAout) {\n\n        alert(\n            \"INFORMATION JUILLET \/ AO\u00dbT\\n\\n\" +\n            \"En juillet et ao\u00fbt, les s\u00e9jours sont propos\u00e9s \" +\n            \"\u00e0 partir de \" +\n            REGLES.minimumNuitsJuilletAout +\n            \" nuits.\\n\\n\" +\n            \"Le tarif ci-apr\u00e8s est n\u00e9anmoins calcul\u00e9 selon \" +\n            \"les dates s\u00e9lectionn\u00e9es.\\n\\n\" +\n            \"N'h\u00e9sitez pas \u00e0 nous contacter pour toute demande sp\u00e9ciale.\"\n        );\n    }\n}\n\n\n    \/* RESTRICTION WEEK-END *\/\n\n    if (nuits < 2) {\n\n        const jourArrivee = dateArrivee.getDay();\n\n        if (jourArrivee === 5 || jourArrivee === 6) {\n\n            alert(\n                \"INFORMATION WEEK-END\\n\\n\" +\n                \"En moyenne et haute saison, hors juillet et ao\u00fbt, \" +\n                \"un s\u00e9jour comprenant une nuit de week-end est propos\u00e9 \" +\n                \"\u00e0 partir de 2 nuits.\\n\\n\" +\n                \"En basse saison, les s\u00e9jours sont possibles d\u00e8s 1 nuit.\\n\\n\" +\n                \"Le tarif ci-apr\u00e8s est calcul\u00e9 selon les dates s\u00e9lectionn\u00e9es. \" +\n                \"N'h\u00e9sitez pas \u00e0 nous contacter pour toute demande sp\u00e9ciale.\"\n            );\n        }\n    }\n\n\n    \/* CALCUL DES NUITS *\/\n\n    let prixLocation = 0;\n    let totalPromotions = 0;\n    let detail = \"\";\n\n    let date = new Date(dateArrivee);\n\n\n    for (let i = 0; i < nuits; i++) {\n\n        const mois = date.getMonth() + 1;\n        const jour = date.getDate();\n        const jourSemaine = date.getDay();\n\n        let prix = TARIFS.basse;\n        let saison = \"basse saison\";\n        let type = \"semaine\";\n\n\n        \/* SAISONS *\/\n\n        if (mois === 1) {\n\n            if (jour <= 2) {\n                prix = TARIFS.haute;\n                saison = \"haute saison\";\n            } else {\n                prix = TARIFS.basse;\n                saison = \"basse saison\";\n            }\n        }\n\n        if (mois === 2 || mois === 3) {\n            prix = TARIFS.basse;\n            saison = \"basse saison\";\n        }\n\n        if (mois === 4 || mois === 5) {\n            prix = TARIFS.moyenne;\n            saison = \"moyenne saison\";\n        }\n\n        if (mois === 6) {\n\n            if (jour <= 14) {\n                prix = TARIFS.moyenne;\n                saison = \"moyenne saison\";\n            } else {\n                prix = TARIFS.haute;\n                saison = \"haute saison\";\n            }\n        }\n\n        if (mois === 7 || mois === 8) {\n\n    const dateSaison = mois * 100 + jour;\n\n    if (dateSaison >= 710 && dateSaison <= 820) {\n        prix = TARIFS.tresHaute;\n        saison = \"tres haute saison\";\n    } else {\n        prix = TARIFS.haute;\n        saison = \"haute saison\";\n    }\n}\n        if (mois === 9) {\n\n            if (jour <= 15) {\n                prix = TARIFS.haute;\n                saison = \"haute saison\";\n            } else {\n                prix = TARIFS.moyenne;\n                saison = \"moyenne saison\";\n            }\n        }\n\n        if (mois === 10) {\n            prix = TARIFS.moyenne;\n            saison = \"moyenne saison\";\n        }\n\n        if (mois === 11) {\n            prix = TARIFS.basse;\n            saison = \"basse saison\";\n        }\n\n        if (mois === 12) {\n\n            if (jour <= 19) {\n                prix = TARIFS.basse;\n                saison = \"basse saison\";\n            } else {\n                prix = TARIFS.haute;\n                saison = \"haute saison\";\n            }\n        }\n\n\n        \/* WEEK-END *\/\n\n        if (jourSemaine === 5 || jourSemaine === 6) {\n\n            type = \"week-end\";\n\n            if (prix === TARIFS.basse) {\n                prix = TARIFS.weekendBasse;\n            }\n\n            if (prix === TARIFS.moyenne) {\n                prix = TARIFS.weekendMoyenne;\n            }\n        }\n\/* JOURS FERIES ET PONTS *\/\n\nlet mentionMajoration = \"\";\n\nconst demain = new Date(date);\ndemain.setDate(demain.getDate() + 1);\n\n\/* Veille d'un jour f\u00e9ri\u00e9 *\/\nif (estJourFerie(demain)) {\n\n    const ancienPrix = prix;\n\n    prix = prix * 1.15;\n\n    if (prix > TARIFS.tresHaute) {\n        prix = TARIFS.tresHaute;\n    }\n\n    if (prix > ancienPrix) {\n        mentionMajoration = \" \/ +15 % veille de jour f\u00e9ri\u00e9\";\n    }\n}\n\n\n\/* Pont du dimanche avant un mardi f\u00e9ri\u00e9 *\/\nif (jourSemaine === 0) {\n\n    const mardi = new Date(date);\n    mardi.setDate(mardi.getDate() + 2);\n\n    if (estJourFerie(mardi)) {\n\n        const ancienPrix = prix;\n\n        prix = prix * 1.15;\n\n        if (prix > TARIFS.tresHaute) {\n            prix = TARIFS.tresHaute;\n        }\n\n        if (prix > ancienPrix) {\n            mentionMajoration = \" \/ +15 % pont\";\n        }\n    }\n}\n\n\n\/* Pont du jeudi f\u00e9ri\u00e9 vers le vendredi *\/\nif (jourSemaine === 4 && estJourFerie(date)) {\n\n    const ancienPrix = prix;\n\n    prix = prix * 1.15;\n\n    if (prix > TARIFS.tresHaute) {\n        prix = TARIFS.tresHaute;\n    }\n\n    if (prix > ancienPrix) {\n        mentionMajoration = \" \/ +15 % pont\";\n    }\n}\n\n\n        \/* REDUCTION DE LA NUIT *\/\n\n        let tauxPromoNuit = 0;\n        let libellePromoNuit = \"\";\n\n\n        \/* PROMOTION 7 NUITS ET PLUS *\/\n\n        if (nuits >= 7) {\n            tauxPromoNuit = REGLES.reduction7Nuits;\n            libellePromoNuit = \"s\u00e9jour 7 nuits ou plus\";\n        }\n\n\n        \/* PROMOTION DERNIERE MINUTE *\/\n\n        const maintenantNuit = new Date();\n\n        const aujourdHuiNuit =\n            maintenantNuit.getFullYear() +\n            \"-\" +\n            String(maintenantNuit.getMonth() + 1).padStart(2, \"0\") +\n            \"-\" +\n            String(maintenantNuit.getDate()).padStart(2, \"0\");\n\n        const dateNuitTexte =\n            date.getFullYear() +\n            \"-\" +\n            String(date.getMonth() + 1).padStart(2, \"0\") +\n            \"-\" +\n            String(date.getDate()).padStart(2, \"0\");\n\n        const dateAujourdhuiNuit =\n            new Date(aujourdHuiNuit + \"T00:00:00\");\n\n        const dateNuit =\n            new Date(dateNuitTexte + \"T00:00:00\");\n\n        const joursAvantNuit =\n            Math.round(\n                (dateNuit - dateAujourdhuiNuit) \/ 86400000\n            );\n\n\n        if (joursAvantNuit === 1) {\n\n            if (REGLES.reductionVeille > tauxPromoNuit) {\n\n                tauxPromoNuit = REGLES.reductionVeille;\n                libellePromoNuit = \"r\u00e9servation la veille\";\n            }\n        }\n\n\n        if (joursAvantNuit >= 2 && joursAvantNuit <= 3) {\n\n            if (REGLES.reduction2a3Jours > tauxPromoNuit) {\n\n                tauxPromoNuit = REGLES.reduction2a3Jours;\n                libellePromoNuit = \"r\u00e9servation 2 \u00e0 3 jours avant l'arriv\u00e9e\";\n            }\n        }\n\n\n        if (joursAvantNuit >= 4 && joursAvantNuit <= 7) {\n\n            if (REGLES.reduction4a7Jours > tauxPromoNuit) {\n\n                tauxPromoNuit = REGLES.reduction4a7Jours;\n                libellePromoNuit = \"r\u00e9servation 4 \u00e0 7 jours avant l'arriv\u00e9e\";\n            }\n        }\n\n\n        \/* CALCUL DE LA PROMOTION *\/\n\n        const montantPromoNuit =\n            prix * tauxPromoNuit;\n\n        const prixNuitApresPromo =\n            prix - montantPromoNuit;\n\n        totalPromotions += montantPromoNuit;\n\n\n        \/* TOTAL LOCATION *\/\n\n        prixLocation += prixNuitApresPromo;\n\n\n      \n\n\/* DETAIL *\/\n\nconst dateAffichee =\n    String(date.getDate()).padStart(2, \"0\") +\n    \"\/\" +\n    String(date.getMonth() + 1).padStart(2, \"0\") +\n    \"\/\" +\n    date.getFullYear();\n\ndetail +=\n    dateAffichee +\n    \" : \" +\n    saison +\n    \" \/ \" +\n    type +\n    mentionMajoration +\n    \" \/ \" +\n    prix.toFixed(2) +\n    \" \u20ac\";\n\n\n        if (tauxPromoNuit > 0) {\n\n            detail +=\n                \" \/ -\" +\n                (tauxPromoNuit * 100).toFixed(0) +\n                \"% (\" +\n                libellePromoNuit +\n                \") = \" +\n                prixNuitApresPromo.toFixed(2) +\n                \" \u20ac\";\n        }\n\n        detail += \"\\n\";\n\n\n        date.setDate(\n            date.getDate() + 1\n        );\n    }\n\n\n    \/* FRAIS *\/\n\n    const menage = TARIFS.menage;\n\n    const taxe =\n        nuits *\n        personnes *\n        TARIFS.taxeSejourParPersonneParNuit;\n\n\n    \/* CODE PROMO *\/\n\n    const codePromo =\n        document.getElementById(\"code-promo\").value.trim();\n\n    let reductionCode = 0;\n\n    if (\/^25[0-9]{4}$\/.test(codePromo)) {\n\n        reductionCode =\n            prixLocation *\n            REGLES.reductionCodePromo;\n    }\n\n\n    \/* REDUCTION 7 NUITS ET PLUS *\/\n\n    const locationApresReduction = prixLocation;\n\n\n    const maintenant = new Date();\n\n    const aujourdHui =\n        maintenant.getFullYear() +\n        \"-\" +\n        String(maintenant.getMonth() + 1).padStart(2, \"0\") +\n        \"-\" +\n        String(maintenant.getDate()).padStart(2, \"0\");\n\n    let messageDelai = \"\";\n\n\n    if (arrivee > aujourdHui) {\n\n        const dateA =\n            new Date(aujourdHui + \"T00:00:00\");\n\n        const dateB =\n            new Date(arrivee + \"T00:00:00\");\n\n        const joursAvant =\n            Math.round(\n                (dateB - dateA) \/ 86400000\n            );\n\n\n        if (joursAvant >= 4 && joursAvant <= 7) {\n\n            messageDelai =\n                \"R\u00e9servation 4 \u00e0 7 jours avant l'arriv\u00e9e : -\" +\n                (REGLES.reduction4a7Jours * 100).toFixed(0) +\n                \" %\";\n        }\n\n\n        if (joursAvant >= 2 && joursAvant <= 3) {\n\n            messageDelai =\n                \"R\u00e9servation 2 \u00e0 3 jours avant l'arriv\u00e9e : -\" +\n                (REGLES.reduction2a3Jours * 100).toFixed(0) +\n                \" %\";\n        }\n\n\n        if (joursAvant === 1) {\n\n            messageDelai =\n                \"R\u00e9servation la veille : -\" +\n                (REGLES.reductionVeille * 100).toFixed(0) +\n                \" %\";\n        }\n    }\n\n\n    let tauxDerniereMinute = 0;\n\n\n    if (arrivee > aujourdHui) {\n\n        const dateA =\n            new Date(aujourdHui + \"T00:00:00\");\n\n        const dateB =\n            new Date(arrivee + \"T00:00:00\");\n\n        const joursAvant =\n            Math.round(\n                (dateB - dateA) \/ 86400000\n            );\n\n\n        if (joursAvant >= 4 && joursAvant <= 7) {\n            tauxDerniereMinute =\n                REGLES.reduction4a7Jours;\n        }\n\n\n        if (joursAvant >= 2 && joursAvant <= 3) {\n            tauxDerniereMinute =\n                REGLES.reduction2a3Jours;\n        }\n\n\n        if (joursAvant === 1) {\n            tauxDerniereMinute =\n                REGLES.reductionVeille;\n        }\n    }\n\n\n    \/* TOTAL *\/\n\n    const total =\n        locationApresReduction -\n        reductionCode +\n        menage +\n        taxe;\n\n\n    \/* RESULTAT *\/\n\n    const resultat =\n        document.getElementById(\"resultat-tarif\");\n\n    if (!resultat) {\n        alert(\"ERREUR : zone de r\u00e9sultat introuvable\");\n        return;\n    }\n\n\n    \/* TRANSFORMATION DU DETAIL DES NUITS *\/\n\n    const lignesNuits = detail\n        .trim()\n        .split(\"\\n\")\n        .map(function (ligne) {\n\n            const morceaux =\n                ligne.split(\" : \");\n\n            const dateNuit =\n                morceaux[0];\n\n            const informations =\n                morceaux[1];\n\n            return (\n                \"<div class=\\\"ligne-nuit\\\">\" +\n                    \"<span class=\\\"date-nuit\\\">\" +\n                        dateNuit +\n                    \"<\/span>\" +\n                    \"<span class=\\\"info-nuit\\\">\" +\n                        informations +\n                    \"<\/span>\" +\n                \"<\/div>\"\n            );\n        })\n        .join(\"\");\n\n\n    \/* AFFICHAGE *\/\n\n    resultat.innerHTML =\n\n        \"<div class=\\\"resultat-tarif\\\">\" +\n\n            \"<h3>Votre estimation<\/h3>\" +\n\n            \"<div class=\\\"detail-nuits\\\">\" +\n\n                \"<h4>D\u00e9tail du s\u00e9jour<\/h4>\" +\n\n                lignesNuits +\n\n            \"<\/div>\" +\n\n\n            \"<div class=\\\"resume-tarif\\\">\" +\n\n                \"<div class=\\\"ligne-tarif\\\">\" +\n                    \"<span>Location<\/span>\" +\n                    \"<strong>\" +\n                        prixLocation.toFixed(2) +\n                        \" \u20ac\" +\n                    \"<\/strong>\" +\n                \"<\/div>\" +\n\n                \"<div class=\\\"ligne-tarif promotion\\\">\" +\n                    \"<span>Montant \u00e9conomis\u00e9 gr\u00e2ce aux promotions<\/span>\" +\n                    \"<strong>-\" +\n                        totalPromotions.toFixed(2) +\n                        \" \u20ac\" +\n                    \"<\/strong>\" +\n                \"<\/div>\" +\n\n                \"<div class=\\\"ligne-tarif code-promo\\\">\" +\n                    \"<span>Code promo<\/span>\" +\n                    \"<strong>-\" +\n                        reductionCode.toFixed(2) +\n                        \" \u20ac\" +\n                    \"<\/strong>\" +\n                \"<\/div>\" +\n\n                \"<p class=\\\"texte-promo\\\">\" +\n                    \"R\u00e9duction suppl\u00e9mentaire appliqu\u00e9e\" +\n                \"<\/p>\" +\n\n                \"<div class=\\\"ligne-tarif\\\">\" +\n                    \"<span>M\u00e9nage<\/span>\" +\n                    \"<strong>\" +\n                        menage.toFixed(2) +\n                        \" \u20ac\" +\n                    \"<\/strong>\" +\n                \"<\/div>\" +\n\n                \"<div class=\\\"ligne-tarif\\\">\" +\n                    \"<span>Taxe de s\u00e9jour<\/span>\" +\n                    \"<strong>\" +\n                        taxe.toFixed(2) +\n                        \" \u20ac\" +\n                    \"<\/strong>\" +\n                \"<\/div>\" +\n\n                \"<div class=\\\"total-final\\\">\" +\n                    \"<span>TOTAL \u00c0 PAYER<\/span>\" +\n                    \"<strong>\" +\n                        total.toFixed(2) +\n                        \" \u20ac\" +\n                    \"<\/strong>\" +\n                \"<\/div>\" +\n\n            \"<\/div>\" +\n\n        \"<\/div>\";\n\n});\n\n\n\/* ================================================================\n   INFORMATION : DATES DEJA RESERVEES\n\n   Section ind\u00e9pendante des calculs ci-dessus : elle ne modifie ni\n   les calculs, ni le r\u00e9sultat, et ne bloque jamais rien. Elle lit\n   les m\u00eames disponibilit\u00e9s que le calendrier et affiche seulement\n   une information sous le r\u00e9sultat, apr\u00e8s le total.\n================================================================ *\/\n\n(function () {\n\n    const ADRESSE_DISPONIBILITES = \"\/wp-json\/tour-medievale\/v1\/calendriers\";\n\n    let numeroVerification = 0;\n\n\n    function zoneInformation() {\n\n        let zone = document.getElementById(\"alerte-reservation\");\n\n        if (!zone) {\n\n            const resultat = document.getElementById(\"resultat-tarif\");\n\n            if (!resultat || !resultat.parentNode) {\n                return null;\n            }\n\n            zone = document.createElement(\"div\");\n            zone.id = \"alerte-reservation\";\n            zone.className = \"alerte-reservation\";\n\n            resultat.parentNode.insertBefore(zone, resultat.nextSibling);\n        }\n\n        return zone;\n    }\n\n\n    function masquerInformation() {\n\n        const zone = zoneInformation();\n\n        if (zone) {\n            zone.hidden = true;\n            zone.textContent = \"\";\n        }\n    }\n\n\n    function cleDate(date) {\n\n        return (\n            date.getFullYear() +\n            \"-\" +\n            String(date.getMonth() + 1).padStart(2, \"0\") +\n            \"-\" +\n            String(date.getDate()).padStart(2, \"0\")\n        );\n    }\n\n\n    function dateFrancaise(date) {\n\n        return (\n            String(date.getDate()).padStart(2, \"0\") +\n            \"\/\" +\n            String(date.getMonth() + 1).padStart(2, \"0\") +\n            \"\/\" +\n            date.getFullYear()\n        );\n    }\n\n\n    \/* Regroupe les nuits cons\u00e9cutives : du 12\/11\/2026 au 14\/11\/2026 *\/\n\n    function regrouperNuits(nuitsReservees) {\n\n        const groupes = [];\n\n        nuitsReservees.forEach(function (nuit) {\n\n            const dernier = groupes[groupes.length - 1];\n\n            if (dernier) {\n\n                const suivant = new Date(dernier.fin);\n                suivant.setDate(suivant.getDate() + 1);\n\n                if (cleDate(suivant) === cleDate(nuit)) {\n\n                    dernier.fin = nuit;\n                    dernier.nombre++;\n                    return;\n                }\n            }\n\n            groupes.push({ debut: nuit, fin: nuit, nombre: 1 });\n        });\n\n        return groupes;\n    }\n\n\n    function afficherInformation(nuitsReservees) {\n\n        const zone = zoneInformation();\n\n        if (!zone) {\n            return;\n        }\n\n        zone.textContent = \"\";\n\n        const groupes = regrouperNuits(nuitsReservees);\n\n        const titre = document.createElement(\"p\");\n        const gras = document.createElement(\"strong\");\n\n        gras.textContent =\n            nuitsReservees.length === 1\n                ? \"Information : une des nuits s\u00e9lectionn\u00e9es est d\u00e9j\u00e0 r\u00e9serv\u00e9e.\"\n                : \"Information : certaines nuits s\u00e9lectionn\u00e9es sont d\u00e9j\u00e0 r\u00e9serv\u00e9es.\";\n\n        titre.appendChild(gras);\n        zone.appendChild(titre);\n\n        const liste = document.createElement(\"ul\");\n\n        groupes.forEach(function (groupe) {\n\n            const ligne = document.createElement(\"li\");\n\n            if (groupe.nombre === 1) {\n\n                ligne.textContent =\n                    \"nuit du \" + dateFrancaise(groupe.debut);\n\n            } else {\n\n                ligne.textContent =\n                    \"du \" + dateFrancaise(groupe.debut) +\n                    \" au \" + dateFrancaise(groupe.fin) +\n                    \" (\" + groupe.nombre + \" nuits)\";\n            }\n\n            liste.appendChild(ligne);\n        });\n\n        zone.appendChild(liste);\n\n        const note = document.createElement(\"p\");\n\n        note.className = \"alerte-reservation-note\";\n\n        note.textContent =\n            \"Le tarif ci-dessus est calcul\u00e9 \u00e0 titre indicatif. \" +\n            \"N'h\u00e9sitez pas \u00e0 nous contacter pour toute demande.\";\n\n        zone.appendChild(note);\n\n        zone.hidden = false;\n    }\n\n\n    bouton.addEventListener(\"click\", function () {\n\n        const arrivee = document.getElementById(\"date-arrivee\").value;\n        const depart = document.getElementById(\"date-depart\").value;\n\n        masquerInformation();\n\n        if (!arrivee || !depart) {\n            return;\n        }\n\n        const dateArrivee = new Date(arrivee + \"T00:00:00\");\n        const dateDepart = new Date(depart + \"T00:00:00\");\n\n        if (dateDepart <= dateArrivee) {\n            return;\n        }\n\n        const verification = ++numeroVerification;\n\n        fetch(ADRESSE_DISPONIBILITES, { cache: \"no-store\" })\n            .then(function (reponse) {\n\n                if (!reponse.ok) {\n                    throw new Error(\"HTTP \" + reponse.status);\n                }\n\n                return reponse.json();\n            })\n            .then(function (donnees) {\n\n                \/* Une v\u00e9rification plus r\u00e9cente a pris la place de celle-ci *\/\n                if (verification !== numeroVerification) {\n                    return;\n                }\n\n                if (\n                    !donnees.success ||\n                    !Array.isArray(donnees.dates_indisponibles)\n                ) {\n                    throw new Error(\"Donn\u00e9es de calendrier invalides\");\n                }\n\n                const indisponibles = new Set(donnees.dates_indisponibles);\n\n                \/* Nuits du s\u00e9jour : de l'arriv\u00e9e au jour pr\u00e9c\u00e9dant le d\u00e9part *\/\n                const nuitsReservees = [];\n\n                const nuit = new Date(dateArrivee);\n\n                while (nuit < dateDepart) {\n\n                    if (indisponibles.has(cleDate(nuit))) {\n                        nuitsReservees.push(new Date(nuit));\n                    }\n\n                    nuit.setDate(nuit.getDate() + 1);\n                }\n\n                if (nuitsReservees.length > 0) {\n                    afficherInformation(nuitsReservees);\n                }\n            })\n            .catch(function (erreur) {\n\n                \/* Aucune information affich\u00e9e : le calcul n'est jamais bloqu\u00e9 *\/\n                console.log(\"V\u00e9rification des disponibilit\u00e9s impossible :\", erreur);\n            });\n    });\n\n})();\n\n}, 500);\n\n<\/script>\n\n<div id=\"simulateur-tarif\">\n\n  <h2>Calcul de votre tarif<\/h2>\n\n  <div class=\"tarif-formulaire\">\n\n    <div class=\"champ-tarif\">\n      <label for=\"date-arrivee\">Date d'arriv\u00e9e<\/label>\n      <input type=\"date\" id=\"date-arrivee\">\n    <\/div>\n\n    <div class=\"champ-tarif\">\n      <label for=\"date-depart\">Date de d\u00e9part<\/label>\n      <input type=\"date\" id=\"date-depart\">\n    <\/div>\n\n    <div class=\"champ-tarif\">\n      <label for=\"nb-personnes\">Nombre de personnes<\/label>\n      <select id=\"nb-personnes\">\n        <option value=\"1\">1 personne<\/option>\n        <option value=\"2\">2 personnes<\/option>\n      <\/select>\n    <\/div>\n\n    <div class=\"champ-tarif\">\n      <label for=\"code-promo\">\n        Code promo <span>(facultatif)<\/span>\n      <\/label>\n      <input type=\"text\" id=\"code-promo\" inputmode=\"numeric\" maxlength=\"6\" placeholder=\"Code \u00e0 6 chiffres\">\n    <\/div>\n\n  <\/div>\n\n  <button type=\"button\" id=\"calculer-tarif\">\n    Calculer mon tarif\n  <\/button>\n\n  <div id=\"resultat-tarif\"><\/div>\n\n  <div id=\"alerte-reservation\" class=\"alerte-reservation\" hidden><\/div>\n\n<\/div>\n\n\n\n<h4 id=\"3-le-prix-comprend-le-m%C3%A9nage-les-draps-et-serviettes-et-toutes-les-taxes\" class=\"wp-block-heading\">Le prix comprend le m\u00e9nage, les draps et serviettes et toutes les taxes.<\/h4>\n\n\n\n<p class=\"has-text-align-center wp-block-paragraph\"><em>Les disponibilit\u00e9s sont confirm\u00e9s au moment de la r\u00e9servation.<\/em><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\" id=\"2-contactez-nous-pour-r%C3%A9server-ou-pour-toute-autre-demande-meilleurs-tarifs-garantis-\">Contactez-nous pour r\u00e9server, ou pour toute autre demande. Meilleurs tarifs garantis !<\/h2>\n\n\n<style id=\"wpforms-css-vars-336\">\n\t\t\t\t#wpforms-336 {\n\t\t\t\t--wpforms-field-border-radius: 0px;\n--wpforms-field-border-color: #cccccc;\n--wpforms-field-border-color-spare: #cccccc;\n--wpforms-field-text-color: #000000;\n--wpforms-label-color: #ffffff;\n--wpforms-label-sublabel-color: #7f7f7f;\n--wpforms-label-error-color: #ff0000;\n--wpforms-button-border-style: solid;\n--wpforms-button-border-radius: 0px;\n--wpforms-button-background-color: #D73301;\n--wpforms-button-border-color: #cccccc;\n--wpforms-container-padding: 0px;\n--wpforms-container-border-width: 1px;\n--wpforms-container-border-radius: 3px;\n--wpforms-background-color: rgba(0, 0, 0, 0);\n--wpforms-page-break-color: #dddddd;\n--wpforms-field-size-input-height: 43px;\n--wpforms-field-size-input-spacing: 15px;\n--wpforms-field-size-font-size: 16px;\n--wpforms-field-size-line-height: 19px;\n--wpforms-field-size-padding-h: 14px;\n--wpforms-field-size-checkbox-size: 16px;\n--wpforms-field-size-sublabel-spacing: 5px;\n--wpforms-field-size-icon-size: 1;\n--wpforms-label-size-font-size: 14px;\n--wpforms-label-size-line-height: 17px;\n--wpforms-label-size-sublabel-font-size: 13px;\n--wpforms-label-size-sublabel-line-height: 16px;\n--wpforms-button-size-font-size: 17px;\n--wpforms-button-size-height: 41px;\n--wpforms-button-size-padding-h: 15px;\n--wpforms-button-size-margin-top: 10px;\n--wpforms-container-shadow-size-box-shadow: none;\n\t\t\t}\n\t\t\t<\/style><div class=\"wpforms-container wpforms-container-full wpforms-render-modern\" id=\"wpforms-336\"><form id=\"wpforms-form-336\" class=\"wpforms-validate wpforms-form wpforms-ajax-form\" data-formid=\"336\" method=\"post\" enctype=\"multipart\/form-data\" action=\"\/index.php\/wp-json\/wp\/v2\/pages\/919\" data-token=\"5b536cdd66ec5dc5a00454b8187e90f5\" data-token-time=\"1792106286\"><noscript class=\"wpforms-error-noscript\">Veuillez activer JavaScript dans votre navigateur pour remplir ce formulaire.<\/noscript><div id=\"wpforms-error-noscript\" style=\"display: none;\">Veuillez activer JavaScript dans votre navigateur pour remplir ce formulaire.<\/div><div class=\"wpforms-field-container\"><div id=\"wpforms-336-field_1-container\" class=\"wpforms-field wpforms-field-name\" data-field-id=\"1\"><fieldset><legend class=\"wpforms-field-label\">Nom <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/legend><div class=\"wpforms-field-row wpforms-field-medium\"><div class=\"wpforms-field-row-block wpforms-first wpforms-one-half\"><input type=\"text\" id=\"wpforms-336-field_1\" class=\"wpforms-field-name-first wpforms-field-required\" name=\"wpforms[fields][1][first]\" aria-errormessage=\"wpforms-336-field_1-error\" required><label for=\"wpforms-336-field_1\" class=\"wpforms-field-sublabel after\">Pr\u00e9nom<\/label><\/div><div class=\"wpforms-field-row-block wpforms-one-half\"><input type=\"text\" id=\"wpforms-336-field_1-last\" class=\"wpforms-field-name-last wpforms-field-required\" name=\"wpforms[fields][1][last]\" aria-errormessage=\"wpforms-336-field_1-last-error\" required><label for=\"wpforms-336-field_1-last\" class=\"wpforms-field-sublabel after\">Nom<\/label><\/div><\/div><\/fieldset><\/div>\t\t<div id=\"wpforms-336-field_4-container\"\n\t\t\tclass=\"wpforms-field wpforms-field-text\"\n\t\t\tdata-field-type=\"text\"\n\t\t\tdata-field-id=\"4\"\n\t\t\t>\n\t\t\t<label class=\"wpforms-field-label\" for=\"wpforms-336-field_4\" >de r\u00e9servation, contrat<\/label>\n\t\t\t<input type=\"text\" id=\"wpforms-336-field_4\" class=\"wpforms-field-medium\" name=\"wpforms[fields][4]\" >\n\t\t<\/div>\n\t\t<div id=\"wpforms-336-field_2-container\" class=\"wpforms-field wpforms-field-email\" data-field-id=\"2\"><label class=\"wpforms-field-label\" for=\"wpforms-336-field_2\">E-mail <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/label><input type=\"email\" id=\"wpforms-336-field_2\" class=\"wpforms-field-medium wpforms-field-required\" name=\"wpforms[fields][2]\" spellcheck=\"false\" aria-errormessage=\"wpforms-336-field_2-error\" required><\/div><div id=\"wpforms-336-field_3-container\" class=\"wpforms-field wpforms-field-textarea\" data-field-id=\"3\"><label class=\"wpforms-field-label\" for=\"wpforms-336-field_3\">Votre message (pour les demande de r\u00e9servation, merci de pr\u00e9cisez vos dates de s\u00e9jour, votre adresse et votre num\u00e9ro de t\u00e9l\u00e9phone afin de pr\u00e9parer le contrat de location) <span class=\"wpforms-required-label\" aria-hidden=\"true\">*<\/span><\/label><textarea id=\"wpforms-336-field_3\" class=\"wpforms-field-medium wpforms-field-required\" name=\"wpforms[fields][3]\" aria-errormessage=\"wpforms-336-field_3-error\" required><\/textarea><\/div><script>\n\t\t\t\t( function() {\n\t\t\t\t\tconst style = document.createElement( 'style' );\n\t\t\t\t\tstyle.appendChild( document.createTextNode( '#wpforms-336-field_4-container { position: absolute !important; overflow: hidden !important; display: inline !important; height: 1px !important; width: 1px !important; z-index: -1000 !important; padding: 0 !important; } #wpforms-336-field_4-container input { visibility: hidden; } #wpforms-conversational-form-page #wpforms-336-field_4-container label { counter-increment: none; }' ) );\n\t\t\t\t\tdocument.head.appendChild( style );\n\t\t\t\t\tdocument.currentScript?.remove();\n\t\t\t\t} )();\n\t\t\t<\/script><\/div><!-- .wpforms-field-container --><div class=\"wpforms-recaptcha-container wpforms-is-recaptcha wpforms-is-recaptcha-type-v2\" ><div class=\"g-recaptcha\" data-sitekey=\"6LfjbCMsAAAAAMQJBB89s5ONPV9uOsMDDLXmlDwy\"><\/div><input type=\"text\" name=\"g-recaptcha-hidden\" class=\"wpforms-recaptcha-hidden\" style=\"position:absolute!important;clip:rect(0,0,0,0)!important;height:1px!important;width:1px!important;border:0!important;overflow:hidden!important;padding:0!important;margin:0!important;\" data-rule-recaptcha=\"1\"><\/div><div class=\"wpforms-submit-container\" ><input type=\"hidden\" name=\"wpforms[id]\" value=\"336\"><input type=\"hidden\" name=\"page_title\" value=\"\"><input type=\"hidden\" name=\"page_url\" value=\"https:\/\/latourmedievale.fr\/index.php\/wp-json\/wp\/v2\/pages\/919\"><input type=\"hidden\" name=\"url_referer\" value=\"\"><button type=\"submit\" name=\"wpforms[submit]\" id=\"wpforms-submit-336\" class=\"wpforms-submit\" data-alt-text=\"Envoi...\" data-submit-text=\"Envoyer\" aria-live=\"assertive\" value=\"wpforms-submit\">Envoyer<\/button><img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/latourmedievale.fr\/wp-content\/plugins\/wpforms-lite\/assets\/images\/submit-spin.svg\" class=\"wpforms-submit-spinner\" style=\"display: none;\" width=\"26\" height=\"26\" alt=\"Chargement en cours\"><\/div><\/form><\/div>  <!-- .wpforms-container -->\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<h2 class=\"wp-block-heading has-text-align-center\"><em>Offrez-vous un s\u00e9jour hors du temps, dans un lieu merveilleux, \u00e0 un prix accessible.<\/em><\/h2>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>D\u00e9finition des saisons et r\u00e8gles de dur\u00e9e minimale<\/summary>\n<figure class=\"wp-block-table\"><table class=\"has-fixed-layout\"><tbody><tr><td>Basse saison<\/td><td>novembre, du 01\/12 au 19\/12, du 03\/01 au 31\/01, f\u00e9vrier, mars<\/td><\/tr><tr><td>Moyenne saison<\/td><td>avril, mai, du 01\/06 au 14\/06, du 16\/09 au 30\/09, octobre<\/td><\/tr><tr><td>Haute saison<\/td><td>Du 15\/06 au 30\/06, juillet, aout, du 01\/09 au 15\/09, du 20\/12 au 02\/01<\/td><\/tr><tr><td>Tr\u00e8s haute saison<\/td><td>10\/07 au 20\/08<\/td><\/tr><\/tbody><\/table><\/figure>\n\n\n\n<p class=\"wp-block-paragraph\">En juillet et ao\u00fbt, le s\u00e9jour minimum est de 3 nuits. Les s\u00e9jours de week-end sont propos\u00e9s \u00e0 partir de 2 nuits en moyenne et haute saison. <em>S\u00e9jours possibles d\u00e8s une nuit dans les autres cas<\/em>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Ces r\u00e8gles de dur\u00e9es minimales de s\u00e9jour peuvent \u00eatre modifi\u00e9es ou assouplies au cas par cas, en fonction des dates.<\/p>\n<\/details>\n\n\n\n<details class=\"wp-block-details is-layout-flow wp-block-details-is-layout-flow\"><summary>Modalit\u00e9s de calcul du tarif<\/summary>\n<p class=\"wp-block-paragraph\">Le tarif de la location est calcul\u00e9 nuit par nuit en fonction de la saison et du jour de la semaine.<\/p>\n\n\n\n<table>\n  <thead>\n    <tr>\n      <th>P\u00e9riode<\/th>\n      <th>Dates<\/th>\n      <th>Tarif \/ nuit<\/th>\n    <\/tr>\n  <\/thead>\n  <tbody>\n    <tr>\n      <td>Basse saison<\/td>\n      <td>3 janvier \u2192 31 mars<\/td>\n      <td>75 \u20ac<\/td>\n    <\/tr>\n    <tr>\n      <td>Moyenne saison<\/td>\n      <td>1er avril \u2192 31 mai<\/td>\n      <td>80 \u20ac<\/td>\n    <\/tr>\n    <tr>\n      <td>Haute saison<\/td>\n      <td>1er juin \u2192 9 juillet<\/td>\n      <td>95 \u20ac<\/td>\n    <\/tr>\n    <tr>\n      <td>Tr\u00e8s haute saison<\/td>\n      <td>10 juillet \u2192 20 ao\u00fbt<\/td>\n      <td>105 \u20ac<\/td>\n    <\/tr>\n    <tr>\n      <td>Haute saison<\/td>\n      <td>21 ao\u00fbt \u2192 15 septembre<\/td>\n      <td>95 \u20ac<\/td>\n    <\/tr>\n    <tr>\n      <td>Moyenne saison<\/td>\n      <td>16 septembre \u2192 31 octobre<\/td>\n      <td>80 \u20ac<\/td>\n    <\/tr>\n    <tr>\n      <td>Basse saison<\/td>\n      <td>1er novembre \u2192 19 d\u00e9cembre<\/td>\n      <td>75 \u20ac<\/td>\n    <\/tr>\n    <tr>\n      <td>Haute saison<\/td>\n      <td>20 d\u00e9cembre \u2192 2 janvier<\/td>\n      <td>95 \u20ac<\/td>\n    <\/tr>\n  <\/tbody>\n<\/table>\n\n<h3>Tarifs week-end<\/h3>\n\n<p>\nLes nuits du <strong>vendredi et du samedi<\/strong> b\u00e9n\u00e9ficient d'un tarif\nsp\u00e9cifique en basse et moyenne saison :\n<\/p>\n\n<ul>\n  <li><strong>Basse saison :<\/strong> 85 \u20ac \/ nuit<\/li>\n  <li><strong>Moyenne saison :<\/strong> 90 \u20ac \/ nuit<\/li>\n<\/ul>\n\n<h3>Jours f\u00e9ri\u00e9s et ponts<\/h3>\n\n<p>\nUne majoration de <strong>15 %<\/strong> peut \u00eatre appliqu\u00e9e la veille d'un jour\nf\u00e9ri\u00e9 ainsi que lors de certains ponts. Cette majoration est plafonn\u00e9e au\ntarif de la tr\u00e8s haute saison.\n<\/p>\n\n<h3>R\u00e9ductions<\/h3>\n\n<p>\nPour un s\u00e9jour de <strong>7 nuits ou plus<\/strong>, une r\u00e9duction de\n<strong>15 %<\/strong> est appliqu\u00e9e sur le montant de la location.\n<\/p>\n\n<p>\nPour les r\u00e9servations de derni\u00e8re minute, une r\u00e9duction peut \u00e9galement \u00eatre\nappliqu\u00e9e selon le d\u00e9lai avant l'arriv\u00e9e :\n<\/p>\n\n<ul>\n  <li><strong>1 jour avant l'arriv\u00e9e :<\/strong> -25 %<\/li>\n  <li><strong>2 \u00e0 3 jours avant :<\/strong> -20 %<\/li>\n  <li><strong>4 \u00e0 7 jours avant :<\/strong> -10 %<\/li>\n<\/ul>\n\n<h3>Frais compl\u00e9mentaires<\/h3>\n\n<ul>\n  <li><strong>M\u00e9nage :<\/strong> 25 \u20ac par s\u00e9jour<\/li>\n  <li><strong>Taxe de s\u00e9jour :<\/strong> 0,90 \u20ac par personne et par nuit<\/li>\n<\/ul>\n\n\n<p><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">En <strong>juillet et ao\u00fbt, le s\u00e9jour minimum est de 3 nuits<\/strong>. Les s\u00e9jours de week-end sont propos\u00e9s \u00e0 partir de <strong>2 nuits en moyenne et haute saison<\/strong>, tandis qu'ils restent possibles d\u00e8s <strong>1 nuit en basse saison<\/strong>.<\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n\n\n\n<p class=\"wp-block-paragraph\">Un <strong>code promotionnel valide<\/strong> permet de b\u00e9n\u00e9ficier d'une<strong> r\u00e9duction <\/strong> cumulable avec les autres promotions. Les promotions et le code ne s'appliquent <strong>ni aux frais de m\u00e9nage, ni \u00e0 la taxe de s\u00e9jour<\/strong>.<\/p>\n<\/details>\n\n\n\n<div class=\"wp-block-buttons is-content-justification-center is-layout-flex wp-container-core-buttons-is-layout-0aa01211 wp-block-buttons-is-layout-flex\">\n<div class=\"wp-block-button is-style-fill\"><a class=\"wp-block-button__link has-contrast-2-background-color has-background has-text-align-center wp-element-button\" href=\"https:\/\/latourmedievale.fr\/\">Page d'accueil<\/a><\/div>\n<\/div>\n\n\n\n<p class=\"has-text-align-right wp-block-paragraph\"><a href=\"https:\/\/latourmedievale.fr\/index.php\/gestion\/\" target=\"_blank\" rel=\"noopener\" title=\"\">.<\/a><\/p>\n\n\n\n<p class=\"wp-block-paragraph\"><\/p>\n","protected":false},"excerpt":{"rendered":"<p>Pour r\u00e9server : Dates disponibles \u2039 \u203a Lun Mar Mer Jeu Ven Sam Dim Chargement des disponibilit\u00e9s&#8230; \u2713 Disponible \u00d7 Indisponible Calcul de votre tarif Date d&rsquo;arriv\u00e9e Date de d\u00e9part Nombre de personnes 1 personne2 personnes Code promo (facultatif) Calculer mon tarif Le prix comprend le m\u00e9nage, les draps et serviettes et toutes les taxes. [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"om_disable_all_campaigns":false,"_monsterinsights_skip_tracking":false,"footnotes":""},"class_list":["post-919","page","type-page","status-publish","hentry"],"aioseo_notices":[],"featured_image_src":null,"_links":{"self":[{"href":"https:\/\/latourmedievale.fr\/index.php\/wp-json\/wp\/v2\/pages\/919","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/latourmedievale.fr\/index.php\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/latourmedievale.fr\/index.php\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/latourmedievale.fr\/index.php\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/latourmedievale.fr\/index.php\/wp-json\/wp\/v2\/comments?post=919"}],"version-history":[{"count":164,"href":"https:\/\/latourmedievale.fr\/index.php\/wp-json\/wp\/v2\/pages\/919\/revisions"}],"predecessor-version":[{"id":1165,"href":"https:\/\/latourmedievale.fr\/index.php\/wp-json\/wp\/v2\/pages\/919\/revisions\/1165"}],"wp:attachment":[{"href":"https:\/\/latourmedievale.fr\/index.php\/wp-json\/wp\/v2\/media?parent=919"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}