{"id":52,"date":"2026-01-09T17:16:29","date_gmt":"2026-01-09T16:16:29","guid":{"rendered":"https:\/\/alapetitereine.com\/?page_id=52"},"modified":"2026-07-04T13:15:05","modified_gmt":"2026-07-04T11:15:05","slug":"location","status":"publish","type":"page","link":"https:\/\/alapetitereine.com\/en\/location\/","title":{"rendered":"Rental"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"52\" class=\"elementor elementor-52\">\n\t\t\t\t<div class=\"elementor-element elementor-element-8981e1e e-flex e-con-boxed e-con e-parent\" data-id=\"8981e1e\" data-element_type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-7002e7f elementor-widget elementor-widget-html\" data-id=\"7002e7f\" data-element_type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t\t<style>\r\n.apr-recaptcha-wrap {\r\n  width: 100%;\r\n  max-width: 100%;\r\n  overflow: hidden;\r\n}\r\n\r\n.apr-recaptcha-wrap .g-recaptcha {\r\n  transform-origin: 0 0;\r\n}\r\n\r\n.apr-rental-form > div {\r\n  min-width: 0;\r\n}\r\n\r\n.apr-rental-form input,\r\n.apr-rental-form textarea {\r\n  width: 100%;\r\n  max-width: 100%;\r\n}\r\n\r\n.apr-rental-wrapper {\r\n  max-width: 1100px;\r\n  margin: 50px auto;\r\n  padding: 0 20px;\r\n  font-family: 'Inter', sans-serif;\r\n}\r\n\r\n\/* HERO *\/\r\n.apr-rental-hero {\r\n  display: grid;\r\n  grid-template-columns: 1.2fr 1fr;\r\n  gap: 40px;\r\n  align-items: center;\r\n  margin-bottom: 80px;\r\n  background: linear-gradient(135deg, #f2f8fb, #ffffff);\r\n  padding: 60px 40px;\r\n  border-radius: 24px;\r\n}\r\n\r\n.apr-rental-hero h1 {\r\n  font-family: 'Poppins', sans-serif;\r\n  font-size: 38px;\r\n  color: #0A3B5C;\r\n  margin-bottom: 12px;\r\n}\r\n\r\n.apr-rental-hero p {\r\n  color: #556;\r\n  font-size: 16px;\r\n  line-height: 1.6;\r\n}\r\n\r\n\/* SECTIONS *\/\r\n.apr-rental-section {\r\n  margin-bottom: 70px;\r\n}\r\n\r\n.apr-rental-section h2 {\r\n  font-family: 'Poppins', sans-serif;\r\n  color: #0A3B5C;\r\n  font-size: 30px;\r\n  margin-bottom: 16px;\r\n}\r\n\r\n\/* TARIFS *\/\r\n.apr-pricing-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(auto-fit, minmax(240px, 1fr));\r\n  gap: 20px;\r\n}\r\n\r\n.apr-price-card {\r\n  background: #fff;\r\n  border-radius: 16px;\r\n  padding: 22px;\r\n  box-shadow: 0 6px 20px rgba(0,0,0,0.05);\r\n  position: relative;\r\n  overflow: hidden;\r\n}\r\n\r\n.apr-price-card::before {\r\n  content: \"\";\r\n  position: absolute;\r\n  top: 0;\r\n  left: 0;\r\n  height: 6px;\r\n  width: 100%;\r\n  background: linear-gradient(90deg, #B6D800, #0A3B5C);\r\n}\r\n\r\n.apr-price-card h3 {\r\n  margin: 0 0 10px;\r\n  color: #0A3B5C;\r\n  font-family: 'Poppins', sans-serif;\r\n}\r\n\r\n.apr-price-card ul {\r\n  padding: 0;\r\n  list-style: none;\r\n  margin: 0;\r\n  color: #334;\r\n  font-size: 14px;\r\n}\r\n\r\n.apr-price-card li {\r\n  margin-bottom: 6px;\r\n}\r\n\r\n.apr-price-card li::before {\r\n  content: \"\u2714 \";\r\n  color: #B6D800;\r\n}\r\n\r\n\/* CONDITIONS *\/\r\n.apr-note {\r\n  background: linear-gradient(135deg, #f7fafc, #ffffff);\r\n  border-left: 6px solid #B6D800;\r\n  border-radius: 16px;\r\n  padding: 24px;\r\n  color: #556;\r\n  line-height: 1.6;\r\n}\r\n\r\n\/* PARCOURS *\/\r\n.apr-routes-grid {\r\n  display: grid;\r\n  grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));\r\n  gap: 18px;\r\n}\r\n\r\n.apr-route-card {\r\n  background: #ffffff;\r\n  border-radius: 16px;\r\n  padding: 20px;\r\n  box-shadow: 0 6px 20px rgba(0,0,0,0.05);\r\n  transition: transform .15s ease, box-shadow .15s ease;\r\n}\r\n\r\n.apr-route-card:hover {\r\n  transform: translateY(-2px);\r\n  box-shadow: 0 12px 30px rgba(0,0,0,0.08);\r\n}\r\n\r\n.apr-route-card h3 {\r\n  margin: 0 0 8px;\r\n  color: #0A3B5C;\r\n  font-family: 'Poppins', sans-serif;\r\n}\r\n\r\n.apr-route-card a {\r\n  color: #0A3B5C;\r\n  font-weight: 600;\r\n  text-decoration: none;\r\n}\r\n\r\n.apr-route-card a:hover {\r\n  text-decoration: underline;\r\n}\r\n\r\n\/* FORM *\/\r\n.apr-rental-form-box {\r\n  background: #ffffff;\r\n  border-radius: 16px;\r\n  padding: 30px;\r\n  box-shadow: 0 10px 30px rgba(0,0,0,0.06);\r\n}\r\n\r\n.apr-rental-form {\r\n  display: grid;\r\n  grid-template-columns: 1fr 1fr;\r\n  gap: 20px;\r\n}\r\n\r\n.apr-rental-form .full {\r\n  grid-column: 1 \/ -1;\r\n}\r\n\r\n.apr-rental-form label {\r\n  display: block;\r\n  margin-bottom: 6px;\r\n  font-size: 14px;\r\n  color: #0A3B5C;\r\n  font-weight: 600;\r\n}\r\n\r\n.apr-rental-form input,\r\n.apr-rental-form textarea,\r\n.apr-rental-form select {\r\n  width: 100%;\r\n  border-radius: 8px;\r\n  border: 1px solid #d7dde5;\r\n  font-size: 14px;\r\n  padding: 10px 12px;\r\n}\r\n\r\n.apr-rental-form textarea {\r\n  min-height: 120px;\r\n  resize: vertical;\r\n}\r\n\r\n\/* ===== V\u00c9LOS : s\u00e9lection par quantit\u00e9 ===== *\/\r\n.apr-bikes {\r\n  display: grid;\r\n  grid-template-columns: 1fr 1fr;\r\n  gap: 14px;\r\n}\r\n\r\n.apr-bike-row {\r\n  display: flex;\r\n  align-items: center;\r\n  justify-content: space-between;\r\n  gap: 12px;\r\n  background: #f7fafc;\r\n  border: 1px solid #e3e9f0;\r\n  border-radius: 12px;\r\n  padding: 12px 14px;\r\n}\r\n\r\n.apr-bike-row.is-active {\r\n  border-color: #B6D800;\r\n  background: #fbfff0;\r\n}\r\n\r\n.apr-bike-label {\r\n  font-size: 14px;\r\n  color: #0A3B5C;\r\n  font-weight: 600;\r\n  line-height: 1.3;\r\n}\r\n\r\n.apr-bike-label span {\r\n  display: block;\r\n  font-size: 12px;\r\n  color: #889;\r\n  font-weight: 400;\r\n}\r\n\r\n\/* Stepper \u2212 [n] + *\/\r\n.apr-stepper {\r\n  display: inline-flex;\r\n  align-items: center;\r\n  border: 1px solid #d7dde5;\r\n  border-radius: 10px;\r\n  overflow: hidden;\r\n  background: #fff;\r\n  flex: none;\r\n}\r\n\r\n.apr-stepper button {\r\n  width: 36px;\r\n  height: 36px;\r\n  border: none;\r\n  background: #fff;\r\n  color: #0A3B5C;\r\n  font-size: 20px;\r\n  font-weight: 700;\r\n  line-height: 1;\r\n  cursor: pointer;\r\n  transition: background .12s ease;\r\n}\r\n\r\n.apr-stepper button:hover {\r\n  background: #eef4f8;\r\n}\r\n\r\n.apr-stepper button:active {\r\n  background: #B6D800;\r\n}\r\n\r\n.apr-stepper input {\r\n  width: 44px !important;\r\n  text-align: center;\r\n  border: none !important;\r\n  border-left: 1px solid #eef1f5 !important;\r\n  border-right: 1px solid #eef1f5 !important;\r\n  border-radius: 0 !important;\r\n  font-size: 15px;\r\n  font-weight: 600;\r\n  color: #0A3B5C;\r\n  padding: 0 !important;\r\n  background: #fff;\r\n  -moz-appearance: textfield;\r\n}\r\n\r\n.apr-stepper input::-webkit-outer-spin-button,\r\n.apr-stepper input::-webkit-inner-spin-button {\r\n  -webkit-appearance: none;\r\n  margin: 0;\r\n}\r\n\r\n\/* Personnes \/ tailles *\/\r\n.apr-people-row {\r\n  display: flex;\r\n  align-items: center;\r\n  gap: 14px;\r\n  flex-wrap: wrap;\r\n}\r\n\r\n.apr-heights {\r\n  display: grid;\r\n  grid-template-columns: repeat(auto-fill, minmax(200px, 1fr));\r\n  gap: 12px;\r\n  margin-top: 6px;\r\n}\r\n\r\n.apr-height-field label {\r\n  font-weight: 500;\r\n  color: #556;\r\n}\r\n\r\n.apr-hint {\r\n  font-size: 13px;\r\n  color: #889;\r\n  margin: 4px 0 0;\r\n}\r\n\r\n.apr-rental-hero-img-wrap {\r\n  width: 70%;\r\n  justify-self: center;\r\n  border-radius: 18px;\r\n  overflow: hidden; \/* force le d\u00e9coupage arrondi *\/\r\n  box-shadow: 0 10px 30px rgba(0,0,0,0.12);\r\n}\r\n\r\n.apr-rental-hero-img-wrap img {\r\n  width: 100%;\r\n  height: auto;\r\n  display: block;\r\n}\r\n\r\n.apr-required {\r\n  color: #e53935;\r\n  margin-left: 4px;\r\n  font-weight: 700;\r\n}\r\n\r\n.apr-form-error {\r\n  display: none;\r\n  grid-column: 1 \/ -1;\r\n  padding: 14px 16px;\r\n  border-radius: 10px;\r\n  background: #fdecea;\r\n  color: #b71c1c;\r\n  font-size: 14px;\r\n  border-left: 4px solid #e53935;\r\n}\r\n\r\n.apr-form-success {\r\n  grid-column: 1 \/ -1;\r\n  padding: 14px 16px;\r\n  border-radius: 10px;\r\n  background: #e8f5e9;\r\n  color: #1b5e20;\r\n  font-size: 14px;\r\n  border-left: 4px solid #4caf50;\r\n}\r\n\r\n.apr-submit {\r\n  grid-column: 1 \/ -1;\r\n  padding: 14px 20px;\r\n  border-radius: 10px;\r\n  background: #B6D800;\r\n  color: #0A3B5C;\r\n  font-family: 'Poppins', sans-serif;\r\n  font-weight: 600;\r\n  border: none;\r\n  cursor: pointer;\r\n}\r\n\r\n@media (max-width: 900px) {\r\n  .apr-rental-hero,\r\n  .apr-rental-form,\r\n  .apr-bikes {\r\n    grid-template-columns: 1fr;\r\n  }\r\n}\r\n<\/style>\r\n\r\n<div class=\"apr-rental-wrapper\">\r\n\r\n    <section class=\"apr-rental-hero\">\r\n      <div>\r\n        <h1>Location de v\u00e9los<\/h1>\r\n        <p>\r\n          D\u00e9couvrez Fontainebleau et sa for\u00eat \u00e0 v\u00e9lo.  \r\n          <strong>\u00c0 la Petite Reine<\/strong> vous propose la location de v\u00e9los m\u00e9caniques  \r\n          et de v\u00e9los \u00e0 assistance \u00e9lectrique, pour adultes et enfants  \r\n          (VTT & VTC).\r\n        <\/p>\r\n        <p>\r\n          Des formules simples et flexibles pour une heure, une journ\u00e9e,  \r\n          une semaine ou plus.\r\n        <\/p>\r\n      <\/div>\r\n    \r\n        <div class=\"apr-rental-hero-img-wrap\">\r\n          <img decoding=\"async\"\r\n            src=\"http:\/\/alapetitereine.com\/wp-content\/uploads\/2026\/01\/Location3.png\"\r\n            alt=\"Location de v\u00e9los \u00e0 Fontainebleau\"\r\n          >\r\n        <\/div>\r\n    <\/section>\r\n\r\n    <section class=\"apr-rental-section\">\r\n        <h2>Tarifs<\/h2>\r\n        <div class=\"apr-pricing-grid\">\r\n          <div class=\"apr-price-card\">\r\n            <h3>V\u00e9los de ville \/ VTT \/ V\u00e9los enfants<\/h3>\r\n            <p style=\"font-size:13px;color:#888;margin:0 0 10px;\">(sous r\u00e9serve de disponibilit\u00e9)<\/p>\r\n            <ul>\r\n              <li>10 \u20ac \/ heure<\/li>\r\n              <li>20 \u20ac \/ demi-journ\u00e9e ou journ\u00e9e<\/li>\r\n              <li>70 \u20ac \/ semaine<\/li>\r\n              <li>120 \u20ac \/ 15 jours<\/li>\r\n              <li>160 \u20ac \/ mois<\/li>\r\n            <\/ul>\r\n            <h4 style=\"margin:14px 0 6px;color:#0A3B5C;font-size:14px;\">Accessoires<\/h4>\r\n            <ul>\r\n              <li>Porte-b\u00e9b\u00e9 : 5 \u20ac<\/li>\r\n              <li>Casque : 3 \u20ac<\/li>\r\n              <li>Antivol : 1 \u20ac<\/li>\r\n            <\/ul>\r\n          <\/div>\r\n    \r\n          <div class=\"apr-price-card\">\r\n            <h3>V\u00e9los \u00e9lectriques<\/h3>\r\n            <p style=\"font-size:13px;color:#888;margin:0 0 10px;\">(sous r\u00e9serve de disponibilit\u00e9)<\/p>\r\n            <ul>\r\n              <li>40 \u20ac \/ demi-journ\u00e9e<\/li>\r\n              <li>60 \u20ac \/ journ\u00e9e<\/li>\r\n              <li>250 \u20ac \/ semaine<\/li>\r\n              <li>Casque et antivol inclus<\/li>\r\n            <\/ul>\r\n            <h4 style=\"margin:14px 0 6px;color:#0A3B5C;font-size:14px;\">Accessoires<\/h4>\r\n            <ul>\r\n              <li>Porte-b\u00e9b\u00e9 : 5 \u20ac<\/li>\r\n            <\/ul>\r\n          <\/div>\r\n        <\/div>\r\n    <\/section>\r\n\r\n  <section class=\"apr-rental-section\">\r\n    <h2>Conditions de location<\/h2>\r\n    <div class=\"apr-note\">\r\n      <p>\r\n        Chaque location, quelle que soit sa dur\u00e9e, n\u00e9cessite un cautionnement :\r\n      <\/p>\r\n      <ul>\r\n        <li>D\u00e9p\u00f4t d\u2019un passeport, CNI ou permis de conduire<\/li>\r\n        <li>Ou d\u00e9p\u00f4t d\u2019une carte bancaire de caution (200 \u20ac)<\/li>\r\n      <\/ul>\r\n      <p>\r\n        Le locataire doit \u00eatre couvert par une assurance responsabilit\u00e9 civile.\r\n      <\/p>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"apr-rental-section\">\r\n    <h2>Parcours & id\u00e9es de balade<\/h2>\r\n    <p style=\"color:#556;margin-bottom:20px;\">\r\n      Explorez la for\u00eat de Fontainebleau gr\u00e2ce \u00e0 nos parcours conseill\u00e9s.\r\n    <\/p>\r\n\r\n    <div class=\"apr-routes-grid\">\r\n      <div class=\"apr-route-card\">\r\n        <h3>\ud83c\udf32 Fontainebleau \u2192 Barbizon<\/h3>\r\n        <a href=\"http:\/\/alapetitereine.com\/wp-content\/uploads\/2026\/01\/Fontainebleau_Barbizon_circuit.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Voir le parcours (PDF)<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"apr-route-card\">\r\n        <h3>\ud83d\uddfa\ufe0f Tour du massif<\/h3>\r\n        <a href=\"http:\/\/alapetitereine.com\/wp-content\/uploads\/2026\/01\/tour_du_massif_de_fontainebleau.pdf\" target=\"_blank\" rel=\"noopener noreferrer\">Voir le parcours (PDF)<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"apr-route-card\">\r\n        <h3>\u26f0\ufe0f Vers les gorges de Franchard<\/h3>\r\n        <a href=\"http:\/\/alapetitereine.com\/wp-content\/uploads\/2026\/01\/parcours1.png\" target=\"_blank\" rel=\"noopener noreferrer\">Voir le parcours (image)<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"apr-route-card\">\r\n        <h3>\ud83c\udf33 Direction Apremont<\/h3>\r\n        <a href=\"http:\/\/alapetitereine.com\/wp-content\/uploads\/2026\/01\/parcours2.jpg\" target=\"_blank\" rel=\"noopener noreferrer\">Voir le parcours (image)<\/a>\r\n      <\/div>\r\n\r\n      <div class=\"apr-route-card\">\r\n        <h3>\ud83d\udeb4 Fontainebleau \u2192 Barbizon (VTT)<\/h3>\r\n        <a href=\"https:\/\/www.utagawavtt.com\/randonnee-vtt-gps\/Foret-de-Fontainebleau-243\" target=\"_blank\" rel=\"noopener noreferrer\">Voir sur UtagawaVTT<\/a>\r\n      <\/div>\r\n    <\/div>\r\n  <\/section>\r\n\r\n  <section class=\"apr-rental-form-box\">\r\n    <h2 style=\"font-family:Poppins;color:#0A3B5C;margin-bottom:10px;\">Demande de location<\/h2>\r\n    <p style=\"color:#556;margin-bottom:20px;\">\r\n      Indiquez-nous votre besoin, nous vous r\u00e9pondrons rapidement.\r\n    <\/p>\r\n    \r\n    <p style=\"font-size:13px;color:#777;margin-top:8px;\">\r\n      <span class=\"apr-required\">*<\/span> Champs obligatoires\r\n    <\/p>\r\n\r\n    <form class=\"apr-rental-form\" id=\"aprLocationForm\">\r\n      <input type=\"hidden\" name=\"action\" value=\"apr_send_quote\">\r\n      <!-- Champ compil\u00e9 automatiquement (r\u00e9cap v\u00e9los + personnes + tailles) -->\r\n      <input type=\"hidden\" name=\"location\" id=\"aprLocationRecap\" value=\"\">\r\n      <!-- Honeypot anti-spam -->\r\n      <input type=\"text\" name=\"website\" value=\"\" style=\"display:none;\" tabindex=\"-1\" autocomplete=\"off\">\r\n\r\n      <div class=\"apr-form-error\" id=\"aprLocationError\"><\/div>\r\n      <div class=\"apr-form-success\" id=\"aprLocationSuccess\" style=\"display:none;\"><\/div>\r\n\r\n      <div>\r\n        <label>Pr\u00e9nom <span class=\"apr-required\">*<\/span><\/label>\r\n        <input type=\"text\" name=\"prenom\" required>\r\n      <\/div>\r\n\r\n      <div>\r\n        <label>Nom <span class=\"apr-required\">*<\/span><\/label>\r\n        <input type=\"text\" name=\"nom\" required>\r\n      <\/div>\r\n\r\n      <div>\r\n        <label>Email <span class=\"apr-required\">*<\/span><\/label>\r\n        <input type=\"email\" name=\"email\" required>\r\n      <\/div>\r\n\r\n      <div>\r\n        <label>T\u00e9l\u00e9phone<\/label>\r\n        <input type=\"tel\" name=\"tel\">\r\n      <\/div>\r\n\r\n      <!-- ===== V\u00c9LOS SOUHAIT\u00c9S : quantit\u00e9 par type ===== -->\r\n      <div class=\"full\">\r\n        <label>V\u00e9los souhait\u00e9s <span class=\"apr-required\">*<\/span><\/label>\r\n        <p class=\"apr-hint\">Indiquez la quantit\u00e9 pour chaque type de v\u00e9lo.<\/p>\r\n        <div class=\"apr-bikes\" id=\"aprBikes\">\r\n\r\n          <div class=\"apr-bike-row\" data-label=\"VTT adulte\">\r\n            <div class=\"apr-bike-label\">VTT adulte<span>V\u00e9lo Tout-Terrain<\/span><\/div>\r\n            <div class=\"apr-stepper\">\r\n              <button type=\"button\" class=\"apr-minus\" aria-label=\"Retirer un VTT adulte\">\u2212<\/button>\r\n              <input type=\"number\" class=\"apr-qte\" name=\"qte_vtt_adulte\" value=\"0\" min=\"0\" max=\"20\" inputmode=\"numeric\" readonly>\r\n              <button type=\"button\" class=\"apr-plus\" aria-label=\"Ajouter un VTT adulte\">+<\/button>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"apr-bike-row\" data-label=\"VTC adulte\">\r\n            <div class=\"apr-bike-label\">VTC adulte<span>V\u00e9lo Tout Chemin<\/span><\/div>\r\n            <div class=\"apr-stepper\">\r\n              <button type=\"button\" class=\"apr-minus\" aria-label=\"Retirer un VTC adulte\">\u2212<\/button>\r\n              <input type=\"number\" class=\"apr-qte\" name=\"qte_vtc_adulte\" value=\"0\" min=\"0\" max=\"20\" inputmode=\"numeric\" readonly>\r\n              <button type=\"button\" class=\"apr-plus\" aria-label=\"Ajouter un VTC adulte\">+<\/button>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"apr-bike-row\" data-label=\"VTC \u00e9lectrique\">\r\n            <div class=\"apr-bike-label\">VTC \u00e9lectrique<span>V\u00e9lo Tout Chemin \u00e0 assistance \u00e9lectrique<\/span><\/div>\r\n            <div class=\"apr-stepper\">\r\n              <button type=\"button\" class=\"apr-minus\" aria-label=\"Retirer un VTC \u00e9lectrique\">\u2212<\/button>\r\n              <input type=\"number\" class=\"apr-qte\" name=\"qte_vae_vtc\" value=\"0\" min=\"0\" max=\"20\" inputmode=\"numeric\" readonly>\r\n              <button type=\"button\" class=\"apr-plus\" aria-label=\"Ajouter un VTC \u00e9lectrique\">+<\/button>\r\n            <\/div>\r\n          <\/div>\r\n\r\n          <div class=\"apr-bike-row\" data-label=\"V\u00e9lo enfant\">\r\n            <div class=\"apr-bike-label\">V\u00e9lo enfant<span>Selon la taille de l\u2019enfant<\/span><\/div>\r\n            <div class=\"apr-stepper\">\r\n              <button type=\"button\" class=\"apr-minus\" aria-label=\"Retirer un v\u00e9lo enfant\">\u2212<\/button>\r\n              <input type=\"number\" class=\"apr-qte\" name=\"qte_enfant\" value=\"0\" min=\"0\" max=\"20\" inputmode=\"numeric\" readonly>\r\n              <button type=\"button\" class=\"apr-plus\" aria-label=\"Ajouter un v\u00e9lo enfant\">+<\/button>\r\n            <\/div>\r\n          <\/div>\r\n\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- ===== NOMBRE DE PERSONNES ===== -->\r\n      <div class=\"full\">\r\n        <label>Nombre de personnes <span class=\"apr-required\">*<\/span><\/label>\r\n        <div class=\"apr-people-row\">\r\n          <div class=\"apr-stepper\">\r\n            <button type=\"button\" class=\"apr-minus\" aria-label=\"Retirer une personne\">\u2212<\/button>\r\n            <input type=\"number\" class=\"apr-qte\" id=\"aprNbPersonnes\" name=\"nombre_personnes\" value=\"1\" min=\"1\" max=\"20\" inputmode=\"numeric\" readonly>\r\n            <button type=\"button\" class=\"apr-plus\" aria-label=\"Ajouter une personne\">+<\/button>\r\n          <\/div>\r\n          <span class=\"apr-hint\">Permet de bien dimensionner chaque v\u00e9lo.<\/span>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <!-- ===== TAILLE DE CHAQUE PERSONNE (g\u00e9n\u00e9r\u00e9e automatiquement) ===== -->\r\n      <div class=\"full\">\r\n        <label>Taille de chaque personne<\/label>\r\n        <div class=\"apr-heights\" id=\"aprHeights\"><!-- rempli par le script --><\/div>\r\n      <\/div>\r\n\r\n      <div class=\"full\">\r\n        <label>D\u00e9tails \/ remarques <span class=\"apr-required\">*<\/span><\/label>\r\n        <textarea name=\"message\" placeholder=\"Dates souhait\u00e9es, dur\u00e9e, accessoires (porte-b\u00e9b\u00e9, casque\u2026), questions\u2026\" required><\/textarea>\r\n      <\/div>\r\n\r\n      <div class=\"full\">\r\n        <div class=\"apr-recaptcha-wrap\">\r\n          <div class=\"g-recaptcha\" data-sitekey=\"6LfwkEksAAAAAMby1_KNLpxQklm4K9DClxxvbEOj\"><\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <button type=\"submit\" class=\"apr-submit\">\ud83d\udce9 Envoyer ma demande<\/button>\r\n    <\/form>\r\n  <\/section>\r\n\r\n<\/div>\r\n\r\n<script src=\"https:\/\/www.google.com\/recaptcha\/api.js\" async defer><\/script>\r\n\r\n<script>\r\n(function () {\r\n  const form = document.getElementById(\"aprLocationForm\");\r\n  if (!form) return;\r\n\r\n  const errorBox   = document.getElementById(\"aprLocationError\");\r\n  const successBox = document.getElementById(\"aprLocationSuccess\");\r\n  const nbInput    = document.getElementById(\"aprNbPersonnes\");\r\n  const heightsBox = document.getElementById(\"aprHeights\");\r\n  const recapInput = document.getElementById(\"aprLocationRecap\");\r\n\r\n  \/\/ Options de taille (pratiques pour dimensionner les v\u00e9los)\r\n  const HEIGHT_OPTIONS = [\r\n    \"Moins de 1m20 (enfant)\",\r\n    \"1m20 \u2013 1m40\",\r\n    \"1m40 \u2013 1m60\",\r\n    \"1m60 \u2013 1m75\",\r\n    \"1m75 \u2013 1m90\",\r\n    \"Plus de 1m90\"\r\n  ];\r\n\r\n  \/\/ --- Gestion g\u00e9n\u00e9rique des steppers (\u2212 \/ +) ---\r\n  form.addEventListener(\"click\", function (e) {\r\n    const btn = e.target.closest(\".apr-plus, .apr-minus\");\r\n    if (!btn) return;\r\n\r\n    const input = btn.parentElement.querySelector(\".apr-qte\");\r\n    const min = parseInt(input.min, 10) || 0;\r\n    const max = parseInt(input.max, 10) || 99;\r\n    let val = parseInt(input.value, 10) || 0;\r\n\r\n    val += btn.classList.contains(\"apr-plus\") ? 1 : -1;\r\n    val = Math.max(min, Math.min(max, val));\r\n    input.value = val;\r\n\r\n    \/\/ Surligne les lignes de v\u00e9lo actives\r\n    const bikeRow = btn.closest(\".apr-bike-row\");\r\n    if (bikeRow) bikeRow.classList.toggle(\"is-active\", val > 0);\r\n\r\n    \/\/ R\u00e9g\u00e9n\u00e8re les champs \"taille\" si on touche au nombre de personnes\r\n    if (input === nbInput) renderHeights();\r\n  });\r\n\r\n  \/\/ --- G\u00e9n\u00e8re un select de taille par personne ---\r\n  function renderHeights() {\r\n    const n = parseInt(nbInput.value, 10) || 1;\r\n\r\n    \/\/ On m\u00e9morise les choix d\u00e9j\u00e0 faits pour ne pas les perdre\r\n    const previous = Array.from(heightsBox.querySelectorAll(\"select\")).map(s => s.value);\r\n\r\n    heightsBox.innerHTML = \"\";\r\n    for (let i = 0; i < n; i++) {\r\n      const wrap = document.createElement(\"div\");\r\n      wrap.className = \"apr-height-field\";\r\n\r\n      const label = document.createElement(\"label\");\r\n      label.textContent = \"Personne \" + (i + 1);\r\n\r\n      const select = document.createElement(\"select\");\r\n      select.name = \"taille_personne_\" + (i + 1);\r\n\r\n      const empty = document.createElement(\"option\");\r\n      empty.value = \"\";\r\n      empty.textContent = \"\u2014 Taille \u2014\";\r\n      select.appendChild(empty);\r\n\r\n      HEIGHT_OPTIONS.forEach(opt => {\r\n        const o = document.createElement(\"option\");\r\n        o.value = opt;\r\n        o.textContent = opt;\r\n        select.appendChild(o);\r\n      });\r\n\r\n      if (previous[i]) select.value = previous[i];\r\n\r\n      wrap.appendChild(label);\r\n      wrap.appendChild(select);\r\n      heightsBox.appendChild(wrap);\r\n    }\r\n  }\r\n\r\n  renderHeights(); \/\/ \u00e9tat initial (1 personne)\r\n\r\n  \/\/ --- Construit le r\u00e9capitulatif envoy\u00e9 dans le champ \"location\" ---\r\n  function buildRecap() {\r\n    const bikes = [];\r\n    form.querySelectorAll(\".apr-bike-row\").forEach(row => {\r\n      const q = parseInt(row.querySelector(\".apr-qte\").value, 10) || 0;\r\n      if (q > 0) bikes.push(row.dataset.label + \" \u00d7\" + q);\r\n    });\r\n\r\n    const nb = parseInt(nbInput.value, 10) || 1;\r\n\r\n    const tailles = [];\r\n    heightsBox.querySelectorAll(\"select\").forEach((s, i) => {\r\n      if (s.value) tailles.push(\"Personne \" + (i + 1) + \" : \" + s.value);\r\n    });\r\n\r\n    let recap = \"V\u00e9los : \" + (bikes.length ? bikes.join(\", \") : \"aucun\");\r\n    recap += \" | \" + nb + \" personne(s)\";\r\n    if (tailles.length) recap += \" | Tailles : \" + tailles.join(\", \");\r\n\r\n    return { recap, totalBikes: bikes.length };\r\n  }\r\n\r\n  \/\/ --- Soumission ---\r\n  form.addEventListener(\"submit\", async function (e) {\r\n    e.preventDefault();\r\n\r\n    errorBox.style.display = \"none\";\r\n    successBox.style.display = \"none\";\r\n\r\n    \/\/ Champs obligatoires classiques\r\n    const required = this.querySelectorAll(\"[required]\");\r\n    for (let field of required) {\r\n      if (!field.value.trim()) {\r\n        errorBox.innerText = \"Merci de remplir tous les champs obligatoires.\";\r\n        errorBox.style.display = \"block\";\r\n        field.focus();\r\n        return;\r\n      }\r\n    }\r\n\r\n    \/\/ Au moins un v\u00e9lo s\u00e9lectionn\u00e9\r\n    const { recap, totalBikes } = buildRecap();\r\n    if (totalBikes === 0) {\r\n      errorBox.innerText = \"Merci d\u2019indiquer au moins un v\u00e9lo (quantit\u00e9).\";\r\n      errorBox.style.display = \"block\";\r\n      return;\r\n    }\r\n\r\n    \/\/ Captcha\r\n    if (typeof grecaptcha !== \"undefined\" && !grecaptcha.getResponse()) {\r\n      errorBox.innerText = \"Merci de valider le captcha.\";\r\n      errorBox.style.display = \"block\";\r\n      return;\r\n    }\r\n\r\n    \/\/ On injecte le r\u00e9cap dans le champ \"location\" lu par le PHP existant\r\n    recapInput.value = recap;\r\n\r\n    const btn = this.querySelector(\"button[type=submit]\");\r\n    btn.disabled = true;\r\n    btn.innerText = \"Envoi en cours\u2026\";\r\n\r\n    try {\r\n      const formData = new FormData(this);\r\n      const res = await fetch(\"\/wp-admin\/admin-post.php\", {\r\n        method: \"POST\",\r\n        body: formData\r\n      });\r\n      const text = await res.text();\r\n\r\n      btn.disabled = false;\r\n      btn.innerText = \"\ud83d\udce9 Envoyer ma demande\";\r\n\r\n      if (text.trim() === \"OK\") {\r\n        this.reset();\r\n        form.querySelectorAll(\".apr-bike-row\").forEach(r => r.classList.remove(\"is-active\"));\r\n        renderHeights();\r\n        if (typeof grecaptcha !== \"undefined\") grecaptcha.reset();\r\n        successBox.innerText = \"Votre message a bien \u00e9t\u00e9 envoy\u00e9. Nous vous r\u00e9pondrons rapidement.\";\r\n        successBox.style.display = \"block\";\r\n      } else {\r\n        errorBox.innerText = text || \"Une erreur est survenue. Veuillez r\u00e9essayer.\";\r\n        errorBox.style.display = \"block\";\r\n      }\r\n    } catch (err) {\r\n      btn.disabled = false;\r\n      btn.innerText = \"\ud83d\udce9 Envoyer ma demande\";\r\n      errorBox.innerText = \"Une erreur r\u00e9seau est survenue. Veuillez r\u00e9essayer.\";\r\n      errorBox.style.display = \"block\";\r\n    }\r\n  });\r\n})();\r\n<\/script>\r\n\r\n<script>\r\nfunction resizeCaptcha() {\r\n  const el = document.querySelector('.apr-recaptcha-wrap');\r\n  if (!el) return;\r\n\r\n  const captcha = el.querySelector('.g-recaptcha');\r\n  if (!captcha) return;\r\n\r\n  const parentWidth = el.offsetWidth;\r\n  const captchaWidth = 304;\r\n\r\n  if (parentWidth < captchaWidth) {\r\n    const scale = parentWidth \/ captchaWidth;\r\n    captcha.style.transform = \"scale(\" + scale + \")\";\r\n    captcha.style.height = (78 * scale) + \"px\";\r\n  } else {\r\n    captcha.style.transform = \"scale(1)\";\r\n    captcha.style.height = \"78px\";\r\n  }\r\n}\r\n\r\nwindow.addEventListener(\"load\", resizeCaptcha);\r\nwindow.addEventListener(\"resize\", resizeCaptcha);\r\n<\/script>\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Location de v\u00e9los D\u00e9couvrez Fontainebleau et sa for\u00eat \u00e0 v\u00e9lo. \u00c0 la Petite Reine vous propose la location de v\u00e9los [&hellip;]<\/p>\n","protected":false},"author":1,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"","ast-site-content-layout":"full-width-container","site-content-style":"default","site-sidebar-style":"default","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"","adv-header-id-meta":"","stick-header-meta":"","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"default","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-52","page","type-page","status-publish","hentry"],"_links":{"self":[{"href":"https:\/\/alapetitereine.com\/en\/wp-json\/wp\/v2\/pages\/52","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/alapetitereine.com\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/alapetitereine.com\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/alapetitereine.com\/en\/wp-json\/wp\/v2\/users\/1"}],"replies":[{"embeddable":true,"href":"https:\/\/alapetitereine.com\/en\/wp-json\/wp\/v2\/comments?post=52"}],"version-history":[{"count":55,"href":"https:\/\/alapetitereine.com\/en\/wp-json\/wp\/v2\/pages\/52\/revisions"}],"predecessor-version":[{"id":1264,"href":"https:\/\/alapetitereine.com\/en\/wp-json\/wp\/v2\/pages\/52\/revisions\/1264"}],"wp:attachment":[{"href":"https:\/\/alapetitereine.com\/en\/wp-json\/wp\/v2\/media?parent=52"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}