/* Polices auto-hébergées : aucune requête vers Google (conformité RGPD/CNIL). */
@font-face{font-family:'Montserrat';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/montserrat-latin-400-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/montserrat-latin-ext-400-normal.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Montserrat';font-style:italic;font-weight:400;font-display:swap;src:url('../fonts/montserrat-latin-400-italic.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Montserrat';font-style:italic;font-weight:400;font-display:swap;src:url('../fonts/montserrat-latin-ext-400-italic.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/montserrat-latin-600-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/montserrat-latin-ext-600-normal.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/montserrat-latin-700-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:700;font-display:swap;src:url('../fonts/montserrat-latin-ext-700-normal.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/montserrat-latin-800-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Montserrat';font-style:normal;font-weight:800;font-display:swap;src:url('../fonts/montserrat-latin-ext-800-normal.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Poppins';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/poppins-latin-400-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Poppins';font-style:normal;font-weight:400;font-display:swap;src:url('../fonts/poppins-latin-ext-400-normal.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
@font-face{font-family:'Poppins';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/poppins-latin-600-normal.woff2') format('woff2');unicode-range:U+0000-00FF,U+0131,U+0152-0153,U+02BB-02BC,U+02C6,U+02DA,U+02DC,U+0304,U+0308,U+0329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}
@font-face{font-family:'Poppins';font-style:normal;font-weight:600;font-display:swap;src:url('../fonts/poppins-latin-ext-600-normal.woff2') format('woff2');unicode-range:U+0100-02BA,U+02BD-02C5,U+02C7-02CC,U+02CE-02D7,U+02DD-02FF,U+0304,U+0308,U+0329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}
*,:before,:after,::backdrop{--tw-border-spacing-x:0;--tw-border-spacing-y:0;--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness:proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:#3b82f680;--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000;--tw-shadow:0 0 #0000;--tw-shadow-colored:0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border:0 solid #e5e7eb}:before,:after{--tw-content:""}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--font-body), Poppins, system-ui, sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{line-height:inherit;margin:0}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-feature-settings:normal;font-variation-settings:normal;font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-feature-settings:inherit;font-variation-settings:inherit;font-family:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:#0000;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{margin:0;padding:0;list-style:none}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder{opacity:1;color:#9ca3af}textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}.pointer-events-none{pointer-events:none}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.inset-0{inset:0}.inset-x-0{left:0;right:0}.-top-3{top:-.75rem}.bottom-0{bottom:0}.bottom-5{bottom:1.25rem}.bottom-6{bottom:1.5rem}.left-1\/2{left:50%}.left-3{left:.75rem}.left-6{left:1.5rem}.right-3{right:.75rem}.right-5{right:1.25rem}.right-6{right:1.5rem}.top-0{top:0}.top-1\/2{top:50%}.top-5{top:1.25rem}.z-0{z-index:0}.z-10{z-index:10}.z-40{z-index:40}.z-50{z-index:50}.mx-auto{margin-left:auto;margin-right:auto}.my-1{margin-top:.25rem;margin-bottom:.25rem}.-mt-2{margin-top:-.5rem}.mb-12{margin-bottom:3rem}.mb-2{margin-bottom:.5rem}.mb-4{margin-bottom:1rem}.mb-5{margin-bottom:1.25rem}.mb-6{margin-bottom:1.5rem}.ml-2{margin-left:.5rem}.mt-0\.5{margin-top:.125rem}.mt-1{margin-top:.25rem}.mt-10{margin-top:2.5rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-8{margin-top:2rem}.block{display:block}.flex{display:flex}.inline-flex{display:inline-flex}.grid{display:grid}.hidden{display:none}.aspect-\[4\/3\]{aspect-ratio:4/3}.h-1\.5{height:.375rem}.h-10{height:2.5rem}.h-11{height:2.75rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-16{height:4rem}.h-24{height:6rem}.h-3{height:.75rem}.h-32{height:8rem}.h-4{height:1rem}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-9{height:2.25rem}.h-full{height:100%}.h-px{height:1px}.h-screen{height:100vh}.min-h-\[300px\]{min-height:300px}.min-h-\[380px\]{min-height:380px}.min-h-screen{min-height:100vh}.w-1\.5{width:.375rem}.w-10{width:2.5rem}.w-11{width:2.75rem}.w-12{width:3rem}.w-14{width:3.5rem}.w-16{width:4rem}.w-24{width:6rem}.w-3{width:.75rem}.w-32{width:8rem}.w-4{width:1rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-72{width:18rem}.w-8{width:2rem}.w-9{width:2.25rem}.w-full{width:100%}.min-w-0{min-width:0}.min-w-\[320px\]{min-width:320px}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-5xl{max-width:64rem}.max-w-6xl{max-width:72rem}.max-w-7xl{max-width:80rem}.max-w-md{max-width:28rem}.max-w-sm{max-width:24rem}.max-w-xl{max-width:36rem}.flex-1{flex:1}.shrink-0{flex-shrink:0}.-translate-x-1\/2{--tw-translate-x:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.-translate-y-1\/2{--tw-translate-y:-50%;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.rotate-45{--tw-rotate:45deg;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}.animate-fade-in{animation:.8s ease-out forwards fadeIn}@keyframes fadeInDown{0%{opacity:0;transform:translateY(-16px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in-down{animation:.9s ease-out forwards fadeInDown}@keyframes fadeInUp{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:translateY(0)}}.animate-fade-in-up{animation:.9s ease-out forwards fadeInUp}@keyframes ping{75%,to{opacity:0;transform:scale(2)}}.animate-ping{animation:1s cubic-bezier(0,0,.2,1) infinite ping}@keyframes pulse{50%{opacity:.5}}.animate-pulse{animation:2s cubic-bezier(.4,0,.6,1) infinite pulse}@keyframes slowZoom{0%{transform:scale(1)}to{transform:scale(1.08)}}.animate-slow-zoom{animation:20s ease-out infinite alternate slowZoom}@keyframes spin{to{transform:rotate(360deg)}}.animate-spin{animation:1s linear infinite spin}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;user-select:none}.appearance-none{appearance:none}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-rows-\[0fr\]{grid-template-rows:0fr}.grid-rows-\[1fr\]{grid-template-rows:1fr}.flex-col{flex-direction:column}.flex-wrap{flex-wrap:wrap}.items-start{align-items:flex-start}.items-end{align-items:flex-end}.items-center{align-items:center}.items-baseline{align-items:baseline}.items-stretch{align-items:stretch}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-1{gap:.25rem}.gap-10{gap:2.5rem}.gap-2{gap:.5rem}.gap-3{gap:.75rem}.gap-4{gap:1rem}.gap-5{gap:1.25rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-x-6{-moz-column-gap:1.5rem;column-gap:1.5rem}.gap-y-3{row-gap:.75rem}.space-y-2>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.5rem * var(--tw-space-y-reverse))}.space-y-3>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.75rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.75rem * var(--tw-space-y-reverse))}.overflow-hidden{overflow:hidden}.truncate{text-overflow:ellipsis;white-space:nowrap;overflow:hidden}.whitespace-nowrap{white-space:nowrap}.break-all{word-break:break-all}.rounded-full{border-radius:9999px}.rounded-lg{border-radius:.5rem}.rounded-md{border-radius:.375rem}.border{border-width:1px}.border-b{border-bottom-width:1px}.border-t{border-top-width:1px}.border-primary-400{--tw-border-opacity:1;border-color:oklch(var(--primary-400) / var(--tw-border-opacity,1))}.border-primary-400\/50{border-color:oklch(var(--primary-400) / .5)}.border-primary-500\/15{border-color:oklch(var(--primary-500) / .15)}.border-primary-500\/20{border-color:oklch(var(--primary-500) / .2)}.border-primary-500\/25{border-color:oklch(var(--primary-500) / .25)}.border-primary-500\/30{border-color:oklch(var(--primary-500) / .3)}.border-primary-500\/40{border-color:oklch(var(--primary-500) / .4)}.border-primary-500\/60{border-color:oklch(var(--primary-500) / .6)}.border-red-500\/40{border-color:#ef444466}.border-secondary-400\/40{border-color:oklch(var(--secondary-400) / .4)}.bg-\[\#25D366\]{--tw-bg-opacity:1;background-color:rgb(37 211 102/var(--tw-bg-opacity,1))}.bg-background-900{--tw-bg-opacity:1;background-color:oklch(var(--background-900) / var(--tw-bg-opacity,1))}.bg-background-900\/40{background-color:oklch(var(--background-900) / .4)}.bg-background-900\/60{background-color:oklch(var(--background-900) / .6)}.bg-background-900\/70{background-color:oklch(var(--background-900) / .7)}.bg-background-900\/95{background-color:oklch(var(--background-900) / .95)}.bg-background-950{--tw-bg-opacity:1;background-color:oklch(var(--background-950) / var(--tw-bg-opacity,1))}.bg-background-950\/40{background-color:oklch(var(--background-950) / .4)}.bg-background-950\/60{background-color:oklch(var(--background-950) / .6)}.bg-background-950\/70{background-color:oklch(var(--background-950) / .7)}.bg-background-950\/80{background-color:oklch(var(--background-950) / .8)}.bg-background-950\/95{background-color:oklch(var(--background-950) / .95)}.bg-foreground-950{--tw-bg-opacity:1;background-color:oklch(var(--foreground-950) / var(--tw-bg-opacity,1))}.bg-primary-500{--tw-bg-opacity:1;background-color:oklch(var(--primary-500) / var(--tw-bg-opacity,1))}.bg-primary-500\/10{background-color:oklch(var(--primary-500) / .1)}.bg-primary-500\/15{background-color:oklch(var(--primary-500) / .15)}.bg-red-500\/10{background-color:#ef44441a}.bg-transparent{background-color:#0000}.bg-gradient-to-b{background-image:linear-gradient(to bottom, var(--tw-gradient-stops))}.bg-gradient-to-r{background-image:linear-gradient(to right, var(--tw-gradient-stops))}.bg-gradient-to-t{background-image:linear-gradient(to top, var(--tw-gradient-stops))}.from-background-900\/70{--tw-gradient-from:oklch(var(--background-900) / .7) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-background-900\/80{--tw-gradient-from:oklch(var(--background-900) / .8) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-background-950\/80{--tw-gradient-from:oklch(var(--background-950) / .8) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-background-950\/85{--tw-gradient-from:oklch(var(--background-950) / .85) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-primary-500\/10{--tw-gradient-from:oklch(var(--primary-500) / .1) var(--tw-gradient-from-position);--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.from-transparent{--tw-gradient-from:transparent var(--tw-gradient-from-position);--tw-gradient-to:#0000 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), var(--tw-gradient-to)}.via-background-950\/20{--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), oklch(var(--background-950) / .2) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-background-950\/30{--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), oklch(var(--background-950) / .3) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-background-950\/60{--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), oklch(var(--background-950) / .6) var(--tw-gradient-via-position), var(--tw-gradient-to)}.via-primary-500\/40{--tw-gradient-to:#fff0 var(--tw-gradient-to-position);--tw-gradient-stops:var(--tw-gradient-from), oklch(var(--primary-500) / .4) var(--tw-gradient-via-position), var(--tw-gradient-to)}.to-background-900\/60{--tw-gradient-to:oklch(var(--background-900) / .6) var(--tw-gradient-to-position)}.to-background-950\/60{--tw-gradient-to:oklch(var(--background-950) / .6) var(--tw-gradient-to-position)}.to-background-950\/70{--tw-gradient-to:oklch(var(--background-950) / .7) var(--tw-gradient-to-position)}.to-background-950\/95{--tw-gradient-to:oklch(var(--background-950) / .95) var(--tw-gradient-to-position)}.to-transparent{--tw-gradient-to:transparent var(--tw-gradient-to-position)}.object-contain{-o-object-fit:contain;object-fit:contain}.object-cover{-o-object-fit:cover;object-fit:cover}.object-center{-o-object-position:center;object-position:center}.object-top{-o-object-position:top;object-position:top}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-4{padding:1rem}.p-5{padding:1.25rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-1\.5{padding-top:.375rem;padding-bottom:.375rem}.py-14{padding-top:3.5rem;padding-bottom:3.5rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-2\.5{padding-top:.625rem;padding-bottom:.625rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-3\.5{padding-top:.875rem;padding-bottom:.875rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-16{padding-bottom:4rem}.pb-5{padding-bottom:1.25rem}.pl-10{padding-left:2.5rem}.pr-10{padding-right:2.5rem}.pr-4{padding-right:1rem}.pt-24{padding-top:6rem}.pt-5{padding-top:1.25rem}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.font-heading{font-family:var(--font-heading), Montserrat, system-ui, sans-serif}.font-mono{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace}.font-sans{font-family:var(--font-body), Poppins, system-ui, sans-serif}.text-2xl{font-size:1.5rem;line-height:2rem}.text-3xl{font-size:1.875rem;line-height:2.25rem}.text-9xl{font-size:8rem;line-height:1}.text-\[10px\]{font-size:10px}.text-\[11px\]{font-size:11px}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-xs{font-size:.75rem;line-height:1rem}.font-black{font-weight:900}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.italic{font-style:italic}.leading-none{line-height:1}.leading-relaxed{line-height:1.625}.leading-snug{line-height:1.375}.leading-tight{line-height:1.25}.tracking-\[0\.14em\]{letter-spacing:.14em}.tracking-\[0\.15em\]{letter-spacing:.15em}.tracking-\[0\.18em\]{letter-spacing:.18em}.tracking-\[0\.25em\]{letter-spacing:.25em}.tracking-\[0\.35em\]{letter-spacing:.35em}.tracking-\[0\.3em\]{letter-spacing:.3em}.tracking-\[0\.5em\]{letter-spacing:.5em}.tracking-wide{letter-spacing:.025em}.tracking-wider{letter-spacing:.05em}.tracking-widest{letter-spacing:.1em}.text-background-950{--tw-text-opacity:1;color:oklch(var(--background-950) / var(--tw-text-opacity,1))}.text-foreground-500{--tw-text-opacity:1;color:oklch(var(--foreground-500) / var(--tw-text-opacity,1))}.text-foreground-600{--tw-text-opacity:1;color:oklch(var(--foreground-600) / var(--tw-text-opacity,1))}.text-foreground-700{--tw-text-opacity:1;color:oklch(var(--foreground-700) / var(--tw-text-opacity,1))}.text-foreground-800{--tw-text-opacity:1;color:oklch(var(--foreground-800) / var(--tw-text-opacity,1))}.text-foreground-900{--tw-text-opacity:1;color:oklch(var(--foreground-900) / var(--tw-text-opacity,1))}.text-foreground-950{--tw-text-opacity:1;color:oklch(var(--foreground-950) / var(--tw-text-opacity,1))}.text-gray-400{--tw-text-opacity:1;color:rgb(156 163 175/var(--tw-text-opacity,1))}.text-gray-50{--tw-text-opacity:1;color:rgb(249 250 251/var(--tw-text-opacity,1))}.text-gray-500{--tw-text-opacity:1;color:rgb(107 114 128/var(--tw-text-opacity,1))}.text-primary-400{--tw-text-opacity:1;color:oklch(var(--primary-400) / var(--tw-text-opacity,1))}.text-primary-500{--tw-text-opacity:1;color:oklch(var(--primary-500) / var(--tw-text-opacity,1))}.text-primary-500\/50{color:oklch(var(--primary-500) / .5)}.text-red-300{--tw-text-opacity:1;color:rgb(252 165 165/var(--tw-text-opacity,1))}.text-white{--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.opacity-0{opacity:0}.opacity-100{opacity:1}.opacity-30{opacity:.3}.shadow-2xl{--tw-shadow:0 25px 50px -12px #00000040;--tw-shadow-colored:0 25px 50px -12px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.shadow-\[0_20px_60px_-20px_rgba\(0\,0\,0\,0\.9\)\]{--tw-shadow:0 20px 60px -20px #000000e6;--tw-shadow-colored:0 20px 60px -20px var(--tw-shadow-color);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000), var(--tw-ring-shadow,0 0 #0000), var(--tw-shadow)}.backdrop-blur-lg{--tw-backdrop-blur:blur(16px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-md{--tw-backdrop-blur:blur(12px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.backdrop-blur-sm{--tw-backdrop-blur:blur(4px);-webkit-backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia);backdrop-filter:var(--tw-backdrop-blur) var(--tw-backdrop-brightness) var(--tw-backdrop-contrast) var(--tw-backdrop-grayscale) var(--tw-backdrop-hue-rotate) var(--tw-backdrop-invert) var(--tw-backdrop-opacity) var(--tw-backdrop-saturate) var(--tw-backdrop-sepia)}.transition{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter,backdrop-filter;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-all{transition-property:all;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.transition-transform{transition-property:transform;transition-duration:.15s;transition-timing-function:cubic-bezier(.4,0,.2,1)}.duration-500{transition-duration:.5s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.\[animation-delay\:100ms\]{animation-delay:.1s}.\[animation-delay\:200ms\]{animation-delay:.2s}.\[animation-delay\:400ms\]{animation-delay:.4s}.\[animation-delay\:500ms\]{animation-delay:.5s}.\[animation-delay\:600ms\]{animation-delay:.6s}.\[animation-delay\:800ms\]{animation-delay:.8s}:root{--background-50:.14 .005 260;--background-100:.17 .006 260;--background-200:.2 .007 260;--background-300:.24 .008 260;--background-400:.28 .009 260;--background-500:.32 .01 260;--background-600:.38 .01 260;--background-700:.46 .01 260;--background-800:.58 .008 260;--background-900:.72 .006 260;--background-950:.08 .004 260;--primary-50:.98 .02 90;--primary-100:.95 .04 90;--primary-200:.9 .07 88;--primary-300:.85 .1 86;--primary-400:.8 .13 85;--primary-500:.78 .14 83;--primary-600:.7 .14 78;--primary-700:.6 .13 72;--primary-800:.48 .1 68;--primary-900:.36 .08 65;--primary-950:.24 .06 62;--accent-50:.99 .008 90;--accent-100:.97 .015 88;--accent-200:.93 .03 86;--accent-300:.88 .05 84;--accent-400:.82 .07 82;--accent-500:.9 .055 85;--accent-600:.8 .08 80;--accent-700:.65 .09 75;--accent-800:.5 .08 70;--accent-900:.38 .07 65;--accent-950:.22 .05 62;--secondary-50:.96 .003 260;--secondary-100:.9 .004 260;--secondary-200:.8 .006 260;--secondary-300:.68 .008 260;--secondary-400:.55 .009 260;--secondary-500:.42 .01 260;--secondary-600:.34 .009 260;--secondary-700:.27 .008 260;--secondary-800:.2 .007 260;--secondary-900:.15 .006 260;--secondary-950:.1 .005 260;--foreground-50:.15 .005 260;--foreground-100:.22 .006 260;--foreground-200:.32 .008 260;--foreground-300:.45 .009 260;--foreground-400:.6 .008 260;--foreground-500:.72 .006 260;--foreground-600:.82 .005 260;--foreground-700:.88 .004 260;--foreground-800:.93 .003 260;--foreground-900:.97 .002 260;--foreground-950:.99 .001 260;--font-heading:"Montserrat", system-ui, sans-serif;--font-body:"Poppins", system-ui, sans-serif;--font-label:"Montserrat", system-ui, sans-serif}html,body{background-color:oklch(var(--background-950));color:oklch(var(--foreground-950));font-family:var(--font-body);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.form-hp-field{opacity:0!important;pointer-events:none!important;width:1px!important;height:1px!important;position:absolute!important;top:auto!important;left:-10000px!important;overflow:hidden!important}.gold-shimmer{background:linear-gradient(100deg, oklch(var(--primary-600)) 0%, oklch(var(--primary-400)) 30%, oklch(var(--accent-500)) 50%, oklch(var(--primary-400)) 70%, oklch(var(--primary-600)) 100%);color:#0000;background-size:200% 100%;-webkit-background-clip:text;background-clip:text;animation:6s linear infinite shimmer}.gold-underline:after{content:"";background:linear-gradient(90deg, transparent, oklch(var(--primary-500)), transparent);width:60px;height:2px;margin:18px auto 0;display:block}html{scroll-behavior:smooth}::-webkit-scrollbar{width:10px}::-webkit-scrollbar-track{background:oklch(var(--background-950))}::-webkit-scrollbar-thumb{background:oklch(var(--secondary-700));border-radius:6px}::-webkit-scrollbar-thumb:hover{background:oklch(var(--primary-700))}input[type=number]::-webkit-inner-spin-button{-webkit-appearance:none;margin:0}input[type=number]::-webkit-outer-spin-button{-webkit-appearance:none;margin:0}input[type=number]{-moz-appearance:textfield}.placeholder\:text-foreground-500::placeholder{--tw-text-opacity:1;color:oklch(var(--foreground-500) / var(--tw-text-opacity,1))}.hover\:-translate-y-1:hover{--tw-translate-y:-.25rem;transform:translate(var(--tw-translate-x), var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.hover\:border-primary-400:hover{--tw-border-opacity:1;border-color:oklch(var(--primary-400) / var(--tw-border-opacity,1))}.hover\:border-primary-400\/30:hover{border-color:oklch(var(--primary-400) / .3)}.hover\:border-primary-400\/40:hover{border-color:oklch(var(--primary-400) / .4)}.hover\:border-primary-400\/50:hover{border-color:oklch(var(--primary-400) / .5)}.hover\:border-primary-500:hover{--tw-border-opacity:1;border-color:oklch(var(--primary-500) / var(--tw-border-opacity,1))}.hover\:bg-\[\#20b558\]:hover{--tw-bg-opacity:1;background-color:rgb(32 181 88/var(--tw-bg-opacity,1))}.hover\:bg-background-900\/60:hover{background-color:oklch(var(--background-900) / .6)}.hover\:bg-primary-400:hover{--tw-bg-opacity:1;background-color:oklch(var(--primary-400) / var(--tw-bg-opacity,1))}.hover\:bg-primary-500:hover{--tw-bg-opacity:1;background-color:oklch(var(--primary-500) / var(--tw-bg-opacity,1))}.hover\:text-background-950:hover{--tw-text-opacity:1;color:oklch(var(--background-950) / var(--tw-text-opacity,1))}.hover\:text-foreground-950:hover{--tw-text-opacity:1;color:oklch(var(--foreground-950) / var(--tw-text-opacity,1))}.hover\:text-primary-300:hover{--tw-text-opacity:1;color:oklch(var(--primary-300) / var(--tw-text-opacity,1))}.hover\:text-primary-400:hover{--tw-text-opacity:1;color:oklch(var(--primary-400) / var(--tw-text-opacity,1))}.focus\:border-primary-400:focus{--tw-border-opacity:1;border-color:oklch(var(--primary-400) / var(--tw-border-opacity,1))}.focus\:outline-none:focus{outline-offset:2px;outline:2px solid #0000}.disabled\:opacity-60:disabled{opacity:.6}.group:hover .group-hover\:border-primary-400{--tw-border-opacity:1;border-color:oklch(var(--primary-400) / var(--tw-border-opacity,1))}.group:hover .group-hover\:bg-primary-500{--tw-bg-opacity:1;background-color:oklch(var(--primary-500) / var(--tw-bg-opacity,1))}.group:hover .group-hover\:text-background-950{--tw-text-opacity:1;color:oklch(var(--background-950) / var(--tw-text-opacity,1))}.group:hover .group-hover\:opacity-100{opacity:1}@media (width>=640px){.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:items-center{align-items:center}}@media (width>=768px){.md\:bottom-8{bottom:2rem}.md\:right-8{right:2rem}.md\:col-span-2{grid-column:span 2/span 2}.md\:mb-16{margin-bottom:4rem}.md\:mb-6{margin-bottom:1.5rem}.md\:flex{display:flex}.md\:h-11{height:2.75rem}.md\:h-14{height:3.5rem}.md\:h-16{height:4rem}.md\:h-20{height:5rem}.md\:w-11{width:2.75rem}.md\:w-14{width:3.5rem}.md\:w-16{width:4rem}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.md\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.md\:flex-row{flex-direction:row}.md\:items-center{align-items:center}.md\:justify-between{justify-content:space-between}.md\:gap-5{gap:1.25rem}.md\:gap-6{gap:1.5rem}.md\:p-10{padding:2.5rem}.md\:p-6{padding:1.5rem}.md\:p-7{padding:1.75rem}.md\:p-8{padding:2rem}.md\:px-10{padding-left:2.5rem;padding-right:2.5rem}.md\:px-6{padding-left:1.5rem;padding-right:1.5rem}.md\:py-16{padding-top:4rem;padding-bottom:4rem}.md\:py-28{padding-top:7rem;padding-bottom:7rem}.md\:py-5{padding-top:1.25rem;padding-bottom:1.25rem}.md\:pb-6{padding-bottom:1.5rem}.md\:pt-28{padding-top:7rem}.md\:text-2xl{font-size:1.5rem;line-height:2rem}.md\:text-3xl{font-size:1.875rem;line-height:2.25rem}.md\:text-4xl{font-size:2.25rem;line-height:2.5rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-\[11px\]{font-size:11px}.md\:text-\[12rem\]{font-size:12rem}.md\:text-\[15px\]{font-size:15px}.md\:text-base{font-size:1rem;line-height:1.5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:text-xs{font-size:.75rem;line-height:1rem}}@media (width>=1024px){.lg\:col-span-2{grid-column:span 2/span 2}.lg\:col-span-3{grid-column:span 3/span 3}.lg\:col-span-6{grid-column:span 6/span 6}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:flex{display:flex}.lg\:hidden{display:none}.lg\:aspect-auto{aspect-ratio:auto}.lg\:h-\[560px\]{height:560px}.lg\:grid-cols-12{grid-template-columns:repeat(12,minmax(0,1fr))}.lg\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:justify-start{justify-content:flex-start}.lg\:gap-10{gap:2.5rem}.lg\:gap-12{gap:3rem}.lg\:gap-16{gap:4rem}.lg\:text-left{text-align:left}.lg\:text-6xl{font-size:3.75rem;line-height:1}}


/* ==========================================================================
   Elite Drive — compléments au build Tailwind d'origine
   Tout ce qui suit remplace du comportement qui était assuré par React,
   ou corrige un point d'accessibilité, sans modifier le rendu visuel.
   ========================================================================== */

/* --------------------------------------------------------------------------
   L'attribut [hidden] doit toujours l'emporter.
   Tailwind pose display:grid / display:flex via des classes de même spécificité
   que le sélecteur [hidden] du reset : sans cette règle, un panneau marqué
   hidden en HTML resterait visible, et l'écran de confirmation de réservation
   s'afficherait par-dessus le formulaire dès l'ouverture de la page.
   -------------------------------------------------------------------------- */
[hidden] {
  display: none !important;
}

/* Les images sont servies en WebP via <picture>, avec repli JPEG. Or <picture>
   est un élément « inline » : les classes w-full / h-full portées par l'<img>
   se calculeraient alors sur <picture> lui-même, qui se dimensionne à son tour
   sur l'image — la photo d'accueil débordait ainsi de son cadre. display:contents
   efface la boîte de <picture> : l'<img> redevient enfant direct du conteneur
   et retrouve les dimensions prévues par la maquette. */
picture {
  display: contents;
}

/* Un conteneur de message vide occuperait quand même une ligne de la grille du
   formulaire, avec son interligne : le bloc entier se décalerait de 16 px par
   rapport à la maquette d'origine. Il ne prend sa place qu'une fois rempli. */
[data-ed-feedback]:empty {
  display: none;
}

/* --------------------------------------------------------------------------
   Icônes : sprite SVG en remplacement du webfont RemixIcon (−230 Ko).
   Dimensionnées à 1em pour occuper exactement la place de l'ancien glyphe.
   -------------------------------------------------------------------------- */
.ed-i {
  width: 1em;
  height: 1em;
  fill: currentColor;
  flex-shrink: 0;
  display: inline-block;
  vertical-align: -0.125em;
}

/* --------------------------------------------------------------------------
   Accessibilité : le build d'origine supprime tous les anneaux de focus
   (focus:outline-none) sans rien remettre — un utilisateur au clavier ne sait
   plus où il se trouve. On restaure un focus visible, uniquement au clavier,
   donc invisible pour les utilisateurs à la souris : le rendu ne change pas.
   -------------------------------------------------------------------------- */
:where(a, button, input, select, textarea, summary, [tabindex]):focus-visible {
  outline: 2px solid oklch(var(--primary-400));
  outline-offset: 2px;
  border-radius: 4px;
}

.ed-skip-link {
  position: absolute;
  left: -9999px;
  top: 0;
  z-index: 100;
  padding: 12px 20px;
  background: oklch(var(--primary-500));
  color: oklch(var(--background-950));
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 14px;
  letter-spacing: 0.1em;
}
.ed-skip-link:focus {
  left: 8px;
  top: 8px;
}

/* Le lecteur d'écran lit, l'œil ne voit pas. */
.ed-sr-only {
  position: absolute;
  width: 1px;
  height: 1px;
  padding: 0;
  margin: -1px;
  overflow: hidden;
  clip: rect(0, 0, 0, 0);
  white-space: nowrap;
  border: 0;
}

/* Compense la hauteur du header fixe quand on arrive sur une ancre. */
[id] {
  scroll-margin-top: 88px;
}

/* --------------------------------------------------------------------------
   Header : l'état « défilé » était piloté par un state React.
   -------------------------------------------------------------------------- */
.ed-header--scrolled {
  background-color: oklch(var(--background-950) / 0.92);
  backdrop-filter: blur(12px);
  -webkit-backdrop-filter: blur(12px);
  border-bottom: 1px solid oklch(var(--primary-500) / 0.2);
}

/* --------------------------------------------------------------------------
   Menu mobile
   -------------------------------------------------------------------------- */
.ed-mobile-menu[hidden] {
  display: none;
}

/* --------------------------------------------------------------------------
   FAQ : l'accordéon d'origine anime grid-template-rows de 0fr à 1fr.
   On reproduit le même mouvement, en <details> pour rester accessible
   et fonctionnel même si le JavaScript ne se charge pas.
   -------------------------------------------------------------------------- */
.ed-faq-panel {
  display: grid;
  grid-template-rows: 0fr;
  opacity: 0;
  transition: grid-template-rows 0.5s ease-out, opacity 0.5s ease-out;
}
.ed-faq-item[open] .ed-faq-panel {
  grid-template-rows: 1fr;
  opacity: 1;
}
.ed-faq-panel > div {
  overflow: hidden;
}
.ed-faq-item > summary {
  list-style: none;
  cursor: pointer;
}
.ed-faq-item > summary::-webkit-details-marker {
  display: none;
}
.ed-faq-item[open] {
  border-color: oklch(var(--primary-400) / 0.5);
  background-color: oklch(var(--background-950) / 0.8);
}
.ed-faq-item[open] .ed-faq-plus {
  transform: rotate(45deg);
  border-color: oklch(var(--primary-400));
  color: oklch(var(--primary-400));
}

/* --------------------------------------------------------------------------
   Simulateur de course : panneau de résultat et choix du paiement.
   Classes dédiées plutôt qu'utilitaires Tailwind, car le CSS d'origine est
   figé (aucun compilateur Tailwind ne tourne côté WordPress).
   -------------------------------------------------------------------------- */
.ed-quote {
  margin-top: 0.75rem;
  border: 1px solid oklch(var(--primary-500) / 0.4);
  border-radius: 0.5rem;
  background: linear-gradient(
    to bottom,
    oklch(var(--primary-500) / 0.08),
    oklch(var(--background-950) / 0.6)
  );
  padding: 1.25rem;
}
@media (min-width: 768px) {
  .ed-quote {
    padding: 1.5rem;
  }
}

/* Récapitulatif du trajet : l'étape 1 se replie ici pour que le client garde
   son trajet sous les yeux pendant qu'il saisit ses coordonnées. */
.ed-recap {
  margin-bottom: 1rem;
  padding-bottom: 0.9rem;
  border-bottom: 1px solid oklch(var(--primary-500) / 0.15);
}

.ed-recap__route {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.8125rem;
  font-weight: 600;
  color: oklch(var(--foreground-950));
  line-height: 1.5;
}
.ed-recap__route .ed-i {
  color: oklch(var(--primary-400));
}

.ed-recap__meta {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
  margin-top: 0.35rem;
  font-size: 11px;
  color: oklch(var(--foreground-600));
}

/* Type de trajet déduit, et sa correction */
.ed-type {
  margin-top: 0.9rem;
  padding-top: 0.8rem;
  border-top: 1px solid oklch(var(--primary-500) / 0.15);
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 0.75rem;
}

.ed-type__value {
  display: inline-flex;
  align-items: center;
  gap: 0.35rem;
  font-family: var(--font-heading);
  font-size: 0.75rem;
  letter-spacing: 0.06em;
  color: oklch(var(--foreground-900));
}
.ed-type__value .ed-i {
  color: oklch(var(--primary-400));
}

.ed-type__options {
  flex-basis: 100%;
  display: flex;
  flex-wrap: wrap;
  gap: 0.4rem;
}
.ed-type__options .ed-chip[aria-pressed='true'] {
  background: oklch(var(--primary-500));
  border-color: oklch(var(--primary-400));
  color: oklch(var(--background-950));
  font-weight: 600;
}

.ed-quote__grid {
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: 0.75rem;
}
@media (min-width: 640px) {
  .ed-quote__grid {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.ed-quote__cell {
  border: 1px solid oklch(var(--primary-500) / 0.2);
  border-radius: 0.375rem;
  background-color: oklch(var(--background-950) / 0.6);
  padding: 0.75rem;
  text-align: center;
}
.ed-quote__label {
  font-family: var(--font-heading);
  font-size: 10px;
  letter-spacing: 0.25em;
  color: oklch(var(--foreground-600));
  text-transform: uppercase;
}
.ed-quote__value {
  margin-top: 0.35rem;
  font-family: var(--font-heading);
  font-weight: 700;
  font-size: 1.125rem;
  color: oklch(var(--foreground-950));
}
.ed-quote__price .ed-quote__value {
  font-size: 1.5rem;
  font-weight: 800;
}

.ed-quote__note {
  margin-top: 0.75rem;
  font-size: 11px;
  line-height: 1.6;
  color: oklch(var(--foreground-600));
}

.ed-quote__route {
  margin-top: 0.75rem;
  font-size: 12px;
  color: oklch(var(--foreground-700));
  line-height: 1.6;
}

/* --------------------------------------------------------------------------
   Signature « VTC — PARIS »
   -------------------------------------------------------------------------- */

/* Le site d'origine écrivait cette ligne « V T C — P A R I S », en insérant de
   vraies espaces entre les lettres. C'est un dessin, pas un texte : un moteur
   de recherche y lit des lettres isolées plutôt que « VTC Paris », et un lecteur
   d'écran les épelle une à une. On écrit désormais les mots normalement et on
   obtient le même écartement par l'interlettrage — même image, texte réel.

   L'interlettrage compense l'espace supprimée entre chaque lettre : 0,5em de
   réglage d'origine plus la largeur d'une espace dans Montserrat. */
.ed-wordmark-sub {
  /* Valeur calibrée pour retrouver au pixel la largeur du texte d'origine :
     l'interlettrage doit compenser les espaces supprimées entre les lettres. */
  letter-spacing: 0.916em;
  text-transform: uppercase;
  /* L'interlettrage s'ajoute après la dernière lettre et décentre l'ensemble. */
  text-indent: 0.916em;
  /* La ligne rejoint le <h1>, dont elle hériterait sinon la graisse 800 et
     l'interligne écrasé. Le build Tailwind d'origine ne contient ni
     .font-normal ni .leading-normal : on les pose ici. */
  font-weight: 400;
  line-height: 1.25;
}

/* En-tête et pied de page : la signature y était réglée à 0,35em, plus serrée
   que dans la zone d'accueil. */
.ed-wordmark-sub--small {
  letter-spacing: 0.688em;
  text-indent: 0.688em;
  line-height: 1.25;
}

/* --------------------------------------------------------------------------
   Cibles tactiles
   -------------------------------------------------------------------------- */

/* Sur écran tactile, plusieurs liens ne mesuraient que 16 à 20 px de haut :
   la largeur d'un trait de texte, là où un doigt couvre une dizaine de
   millimètres. On les épaissit — uniquement sur les appareils sans souris, pour
   que la mise en page au pixel reste intacte sur ordinateur. */
@media (pointer: coarse) {
  /* !important pour la même raison que le vert de WhatsApp : une extension qui
     colle un « padding » en style en ligne rétrécirait la zone tactile. */
  .ed-tap {
    display: inline-block;
    padding-top: 0.6rem !important;
    padding-bottom: 0.6rem !important;
  }

  /* L'espacement des listes se resserre d'autant : le pied de page ne
     s'allonge pas, seules les zones cliquables grandissent. */
  .ed-taplist > li + li {
    margin-top: 0.25rem;
  }

  /* Raccourcis de date : 31 px de haut, trop justes pour un pouce. */
  .ed-chip {
    padding: 0.65rem 0.95rem;
  }

  /* Bouton du menu : 40 px, sous le seuil confortable. */
  #ed-menu-toggle {
    width: 2.75rem;
    height: 2.75rem;
  }
}

/* --------------------------------------------------------------------------
   Bouton WhatsApp flottant
   -------------------------------------------------------------------------- */

/* Le bouton est fixé en bas à droite. Sur mobile, où les boutons de formulaire
   occupent toute la largeur, il recouvre le coin droit du bouton principal :
   un appui légèrement décentré ouvre WhatsApp au lieu de valider la
   réservation — soit une course perdue.

   Plutôt que de déplacer le bouton, on l'escamote le temps qu'une action
   principale soit à l'écran. Il reste là où les utilisateurs l'attendent, et
   cesse d'être un piège au moment décisif. */
.ed-fab {
  transition: opacity 0.25s ease, transform 0.25s ease;
}

/* Le bouton flottant impose sa couleur.
 *
 * Certaines extensions de navigateur repeignent les liens vers les réseaux
 * sociaux en leur collant un fond en style en ligne — on a vu du bleu-violet
 * s'appliquer ainsi sur WhatsApp, Instagram, Facebook et LinkedIn. Une
 * déclaration !important d'une feuille de style l'emporte sur un style en ligne
 * qui n'en porte pas : le vert de WhatsApp reste le vert de WhatsApp. */
.ed-fab__button {
  background-color: #25d366 !important;
  color: #fff !important;
}
.ed-fab__button:hover {
  background-color: #20b558 !important;
}
.ed-fab__pulse {
  background-color: #25d366 !important;
}

/* WhatsApp se reconnaît d'abord à sa couleur. Noyé dans le doré des autres
   icônes, le lien perd cet indice immédiat ; en vert de marque, il est
   identifié avant même d'être lu. */
.ed-whatsapp {
  background-color: transparent !important;
  color: #25d366 !important;
  border-color: rgb(37 211 102 / 0.5) !important;
}
.ed-whatsapp:hover {
  background-color: #25d366 !important;
  border-color: #25d366 !important;
  color: #fff !important;
}
.ed-whatsapp-link {
  background-color: transparent !important;
  color: #25d366 !important;
}
.ed-whatsapp-link:hover {
  color: #4ae081 !important;
}

.ed-fab--tucked {
  opacity: 0;
  transform: scale(0.7) translateY(10px);
  pointer-events: none;
}

/* ==========================================================================
   UTILITAIRES MANQUANTS
   --------------------------------------------------------------------------
   La feuille Tailwind livrée avec le site d'origine est figée : elle ne
   contient que les classes employées par Readdy, et aucun compilateur ne tourne
   côté WordPress. Toute classe ajoutée après coup dans un gabarit — mt-16,
   underline, py-28 — ne correspond alors à aucune règle et ne produit
   strictement rien, sans le moindre avertissement.

   Ces déclarations comblent exactement les classes que les nouveaux gabarits
   utilisent. Leurs valeurs sont celles de Tailwind, à l'identique. Un contrôle
   automatique compare la liste des classes employées à celles définies dans la
   feuille : ajouter une classe inconnue fait désormais échouer la construction.
   ========================================================================== */

.-mt-1 { margin-top: -0.25rem; }
.pt-1 { padding-top: 0.25rem; }
.mb-10 { margin-bottom: 2.5rem; }
.mt-12 { margin-top: 3rem; }
.mt-16 { margin-top: 4rem; }
.py-28 { padding-top: 7rem; padding-bottom: 7rem; }
.text-4xl { font-size: 2.25rem; line-height: 2.5rem; }
.underline { text-decoration-line: underline; }
.min-h-\[70vh\] { min-height: 70vh; }
.bg-background-950\/98 { background-color: oklch(var(--background-950) / 0.98); }

@media (min-width: 768px) {
  .md\:mt-20 { margin-top: 5rem; }
  .md\:py-36 { padding-top: 9rem; padding-bottom: 9rem; }
  .md\:text-6xl { font-size: 3.75rem; line-height: 1; }
}

/* ==========================================================================
   PASSE PREMIUM
   --------------------------------------------------------------------------
   Le principe : la lumière sur une arête.

   Sur une voiture noire la nuit, on ne voit pas la carrosserie — on voit une
   ligne claire là où un lampadaire accroche l'épaule de la tôle. Tout le
   vocabulaire visuel vient de là : les surfaces sont sombres et reçoivent la
   lumière par le haut, les cartes portent un filet lumineux sur leur arête
   supérieure, et les sections se séparent par un simple filament.

   Une seule idée, appliquée partout, plutôt que cinq effets dispersés.
   ========================================================================== */

/* Courbe d'accélération commune : départ franc, arrivée posée. */
:root {
  --ed-ease: cubic-bezier(0.16, 1, 0.3, 1);
}

/* --------------------------------------------------------------------------
   Surfaces
   -------------------------------------------------------------------------- */

/* Les cartes du site d'origine utilisaient « bg-background-900/60 ». Cette
   nuance vaut 0,72 de luminosité — la même valeur qui rendait le pied de page
   gris clair. Posées sur le noir, les cartes ressortaient en gris terne, sans
   source de lumière : des zones désactivées plutôt que des objets.

   Ici, la surface est presque noire et s'éclaircit vers le haut, comme un
   volume éclairé par au-dessus. L'ombre portée la décolle du fond. */
.ed-surface {
  position: relative;
  background:
    linear-gradient(
      180deg,
      oklch(var(--background-900) / 0.085) 0%,
      oklch(var(--background-900) / 0.035) 45%,
      oklch(var(--background-950) / 0.6) 100%
    );
  border: 1px solid oklch(var(--primary-500) / 0.13);
  box-shadow:
    inset 0 1px 0 0 oklch(var(--primary-200) / 0.05),
    0 20px 45px -30px rgb(0 0 0 / 0.95);
  transition:
    transform 0.45s var(--ed-ease),
    border-color 0.45s var(--ed-ease),
    box-shadow 0.45s var(--ed-ease);
}

/* Le filet de lumière sur l'arête. Présent en permanence, discret ; il
   s'intensifie au survol. Le site d'origine avait cette idée mais la gardait
   à zéro jusqu'au survol — la lumière n'existait pas au repos. */
.ed-surface::before {
  content: '';
  position: absolute;
  top: 0;
  left: 0;
  right: 0;
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent 0%,
    oklch(var(--primary-400) / 0.55) 50%,
    transparent 100%
  );
  opacity: 0.4;
  transition: opacity 0.45s var(--ed-ease);
  pointer-events: none;
}

.ed-surface:hover {
  transform: translateY(-3px);
  border-color: oklch(var(--primary-400) / 0.42);
  box-shadow:
    inset 0 1px 0 0 oklch(var(--primary-200) / 0.09),
    0 26px 55px -30px rgb(0 0 0 / 0.95),
    0 0 40px -18px oklch(var(--primary-500) / 0.35);
}

.ed-surface:hover::before {
  opacity: 1;
}

/* Variante mise en avant : la lumière est plus haute et le fond légèrement
   teinté d'or, sans jamais devenir une carte « colorée ». */
.ed-surface--featured {
  background:
    linear-gradient(
      180deg,
      oklch(var(--primary-500) / 0.1) 0%,
      oklch(var(--background-900) / 0.04) 50%,
      oklch(var(--background-950) / 0.6) 100%
    );
  border-color: oklch(var(--primary-500) / 0.4);
}
.ed-surface--featured::before {
  opacity: 0.85;
}

/* --------------------------------------------------------------------------
   Bandes alternées
   -------------------------------------------------------------------------- */

/* Troisième apparition du même défaut de palette. Le site alterne les sections
   entre « bg-background-950 » (0,08 — noir) et « bg-background-900/40 ». Cette
   seconde valeur vaut 0,72 de luminosité posée à 40 % sur le noir : le résultat
   est un gris moyen, une dalle terne au milieu d'un site sombre.

   L'alternance reste, mais elle passe de « noir contre gris » à « noir contre
   noir légèrement soulevé » — la nuance qu'on attend d'une marque discrète. */
.bg-background-900\/40 {
  background-color: oklch(var(--background-900) / 0.06);
}

/* --------------------------------------------------------------------------
   Rythme entre les sections
   -------------------------------------------------------------------------- */

/* Un filament doré en guise de séparation : la ligne d'horizon entre deux
   plans, plutôt qu'un changement brutal de fond. */
.ed-section {
  position: relative;
}
.ed-section + .ed-section::before {
  content: '';
  position: absolute;
  top: 0;
  left: 12%;
  right: 12%;
  height: 1px;
  background: linear-gradient(
    90deg,
    transparent,
    oklch(var(--primary-500) / 0.28),
    transparent
  );
  pointer-events: none;
}

/* Halo atmosphérique. Très faible, et surtout décentré : un dégradé centré et
   symétrique est la signature des mises en page générées à la chaîne. Chaque
   section reçoit un ancrage différent, ce qui crée une respiration en
   descendant la page. */
.ed-glow::after {
  content: '';
  position: absolute;
  inset: 0;
  pointer-events: none;
  z-index: 0;
  background: radial-gradient(
    60% 55% at var(--ed-glow-x, 78%) var(--ed-glow-y, 15%),
    oklch(var(--primary-700) / 0.16),
    transparent 70%
  );
}
.ed-glow > * {
  position: relative;
  z-index: 1;
}

/* --------------------------------------------------------------------------
   Révélation au défilement
   -------------------------------------------------------------------------- */

/* Un seul comportement : le contenu monte de quelques pixels en apparaissant.
   Le décalage entre cartes donne le sentiment d'une main qui pose les objets
   l'un après l'autre, au lieu d'un bloc qui surgit d'un coup. */
.ed-reveal {
  opacity: 0;
  transform: translateY(20px);
  will-change: opacity, transform;
}

.ed-reveal.is-visible {
  opacity: 1;
  transform: none;
  transition:
    opacity 0.75s var(--ed-ease) var(--ed-delay, 0ms),
    transform 0.75s var(--ed-ease) var(--ed-delay, 0ms);
}

/* Sans JavaScript, rien ne doit rester invisible. */
.no-js .ed-reveal {
  opacity: 1;
  transform: none;
}

@media (prefers-reduced-motion: reduce) {
  .ed-reveal,
  .ed-reveal.is-visible {
    opacity: 1;
    transform: none;
    transition: none;
  }
  .ed-surface:hover {
    transform: none;
  }
}

/* --------------------------------------------------------------------------
   Libellés des champs
   -------------------------------------------------------------------------- */

/* Le design d'origine espaçait les libellés de 0,25em. À 12 px, cela écarte les
   lettres d'environ 3 px : le mot cesse d'être perçu comme une forme unique et
   se lit lettre à lettre. Sur un intertitre isolé le procédé est élégant ; sur
   dix libellés lus à la suite pendant qu'on remplit un formulaire, il coûte
   cher. On garde les capitales — c'est la signature de la marque — mais on
   ramène l'interlettrage à 0,1em, où les mots redeviennent des blocs.

   Les libellés sont écrits en casse naturelle dans le HTML et mis en capitales
   ici : certains lecteurs d'écran épellent les mots tout en majuscules, et les
   traducteurs reçoivent des chaînes normales. */
.ed-label {
  display: block;
  margin-bottom: 0.5rem;
  font-family: var(--font-heading);
  font-size: 0.75rem;
  /* 400 et non 500 : le thème n'embarque pas la graisse 500 de Montserrat, et
     le navigateur se rabattait silencieusement sur 400. Autant que la règle
     dise ce qui s'affiche réellement, plutôt que d'annoncer un fichier absent. */
  font-weight: 400;
  letter-spacing: 0.1em;
  text-transform: uppercase;
  color: oklch(var(--foreground-600));
}

/* --------------------------------------------------------------------------
   Formulaire en deux étapes
   -------------------------------------------------------------------------- */

.ed-steps {
  display: flex;
  align-items: center;
  gap: 0.6rem;
  margin-bottom: 1.5rem;
}

.ed-steps__item {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  color: oklch(var(--foreground-600));
  font-family: var(--font-heading);
  font-size: 0.75rem;
  letter-spacing: 0.08em;
  transition: color 0.3s;
}

.ed-steps__dot {
  width: 1.5rem;
  height: 1.5rem;
  flex-shrink: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 9999px;
  border: 1px solid oklch(var(--primary-500) / 0.35);
  font-size: 0.7rem;
  font-weight: 700;
  transition: all 0.3s;
}

.ed-steps__bar {
  flex: 1;
  height: 1px;
  background: oklch(var(--primary-500) / 0.2);
}

.ed-steps__item[aria-current='step'] {
  color: oklch(var(--foreground-950));
}
.ed-steps__item[aria-current='step'] .ed-steps__dot {
  background: oklch(var(--primary-500));
  border-color: oklch(var(--primary-400));
  color: oklch(var(--background-950));
}
.ed-steps__item[data-done='true'] .ed-steps__dot {
  background: oklch(var(--primary-500) / 0.18);
  border-color: oklch(var(--primary-400));
  color: oklch(var(--primary-300));
}

/* Sur écran étroit, seule l'étape en cours garde son libellé : un simple chiffre
   ne dit pas au visiteur ce qu'on va lui demander. */
@media (max-width: 430px) {
  .ed-steps__item:not([aria-current='step']) .ed-steps__label {
    display: none;
  }
}

/* Retour à l'étape précédente, appel — actions discrètes, jamais concurrentes
   du bouton principal. */
.ed-back {
  display: inline-flex;
  align-items: center;
  gap: 0.4rem;
  font-size: 0.75rem;
  font-family: var(--font-heading);
  color: oklch(var(--foreground-600));
  background: none;
  border: 0;
  cursor: pointer;
  transition: color 0.2s;
}
.ed-back:hover {
  color: oklch(var(--primary-400));
}

.ed-optional {
  margin-left: 0.5rem;
  font-size: 10px;
  letter-spacing: 0.05em;
  color: oklch(var(--foreground-500));
  text-transform: none;
  font-style: italic;
}

/* Raccourcis de date */
.ed-chip {
  padding: 0.4rem 0.8rem;
  border-radius: 9999px;
  border: 1px solid oklch(var(--primary-500) / 0.25);
  background: oklch(var(--background-900) / 0.5);
  color: oklch(var(--foreground-700));
  font-family: var(--font-heading);
  font-size: 11px;
  letter-spacing: 0.05em;
  cursor: pointer;
  transition: all 0.2s;
}
.ed-chip:hover {
  border-color: oklch(var(--primary-400));
  color: oklch(var(--primary-400));
}

/* Avertissement de capacité du véhicule */
.ed-capacity {
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  font-size: 11px;
  line-height: 1.6;
  color: oklch(var(--primary-300));
}

/* --------------------------------------------------------------------------
   Saisie d'adresse : suggestions et état de vérification
   -------------------------------------------------------------------------- */

.ed-address {
  position: relative;
}

/* Bouton « ma position », posé dans le champ plutôt qu'à côté : l'action
   appartient à ce champ, et le placer à l'extérieur consommerait une ligne de
   plus dans un formulaire qu'on vient de raccourcir. */
.ed-address__input--locatable {
  padding-right: 3rem !important;
}

.ed-locate {
  position: absolute;
  right: 0.35rem;
  top: 50%;
  transform: translateY(-50%);
  width: 2.25rem;
  height: 2.25rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 0.375rem;
  border: 1px solid oklch(var(--primary-500) / 0.25);
  background: oklch(var(--background-950) / 0.6);
  color: oklch(var(--primary-400));
  cursor: pointer;
  transition: all 0.2s var(--ed-ease);
}
.ed-locate:hover {
  border-color: oklch(var(--primary-400));
  background: oklch(var(--primary-500) / 0.14);
}
.ed-locate[aria-busy='true'] {
  pointer-events: none;
  opacity: 0.7;
}
.ed-locate[hidden] {
  display: none !important;
}

@media (pointer: coarse) {
  .ed-locate {
    width: 2.5rem;
    height: 2.5rem;
  }
}

.ed-address__list {
  position: absolute;
  z-index: 30;
  top: calc(100% + 4px);
  left: 0;
  right: 0;
  max-height: 240px;
  overflow-y: auto;
  border-radius: 0.375rem;
  border: 1px solid oklch(var(--primary-500) / 0.35);
  background: oklch(var(--background-950) / 0.98);
  backdrop-filter: blur(8px);
  -webkit-backdrop-filter: blur(8px);
  box-shadow: 0 16px 40px -12px rgb(0 0 0 / 0.8);
}

.ed-address__list li {
  padding: 0.65rem 0.9rem;
  font-size: 0.8125rem;
  color: oklch(var(--foreground-800));
  cursor: pointer;
  border-bottom: 1px solid oklch(var(--primary-500) / 0.1);
}
.ed-address__list li:last-child {
  border-bottom: 0;
}
.ed-address__list li:hover,
.ed-address__list li[aria-selected='true'] {
  background: oklch(var(--primary-500) / 0.15);
  color: oklch(var(--primary-300));
}

/* L'état s'affiche sous le champ concerné : une erreur d'adresse doit se lire
   à côté de l'adresse fautive, pas dans un bloc commun en bas du formulaire. */
.ed-address__state {
  display: none;
  align-items: flex-start;
  gap: 0.35rem;
  margin-top: 0.4rem;
  font-size: 11px;
  line-height: 1.5;
}
.ed-address__state[data-state] {
  display: flex;
}
.ed-address__state[data-state='found'] {
  color: oklch(0.78 0.13 150);
}
.ed-address__state[data-state='unknown'] {
  color: oklch(0.8 0.13 60);
}
.ed-address__state[data-state='checking'] {
  color: oklch(var(--foreground-600));
}

/* Champ en erreur : la bordure suffit, sans rien déplacer sur la page. */
.ed-field-error {
  border-color: oklch(0.65 0.19 25) !important;
}

/* --------------------------------------------------------------------------
   Réassurance au moment du paiement
   -------------------------------------------------------------------------- */

.ed-secure {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.45rem;
  margin-top: 0.85rem;
  font-size: 11px;
  line-height: 1.5;
  color: oklch(var(--foreground-600));
  text-align: center;
}
.ed-secure .ed-i {
  color: oklch(var(--primary-400));
  flex-shrink: 0;
}

/* Choix du mode de paiement */
.ed-pay {
  margin-top: 1rem;
  display: grid;
  gap: 0.5rem;
  grid-template-columns: 1fr;
}
@media (min-width: 640px) {
  .ed-pay {
    grid-template-columns: repeat(3, minmax(0, 1fr));
  }
}

.ed-pay__opt {
  display: flex;
  align-items: center;
  justify-content: center;
  gap: 0.5rem;
  padding: 0.875rem 0.75rem;
  border-radius: 0.375rem;
  border: 1px solid oklch(var(--primary-500) / 0.2);
  background-color: oklch(var(--background-900) / 0.7);
  color: oklch(var(--foreground-800));
  font-family: var(--font-heading);
  font-size: 0.8125rem;
  cursor: pointer;
  transition: all 0.2s;
  text-align: center;
}
.ed-pay__opt:hover {
  border-color: oklch(var(--primary-400));
  color: oklch(var(--primary-400));
}
.ed-pay__opt[aria-pressed='true'] {
  background-color: oklch(var(--primary-500));
  border-color: oklch(var(--primary-400));
  color: oklch(var(--background-950));
  font-weight: 600;
}

/* Messages d'état (erreur, succès, information) */
.ed-alert {
  margin-top: 0.75rem;
  display: flex;
  align-items: flex-start;
  gap: 0.5rem;
  padding: 0.75rem 1rem;
  border-radius: 0.375rem;
  font-size: 0.8125rem;
  line-height: 1.6;
  border: 1px solid;
}
.ed-alert--error {
  border-color: oklch(0.6 0.18 25 / 0.5);
  background-color: oklch(0.6 0.18 25 / 0.1);
  color: oklch(0.85 0.1 25);
}
.ed-alert--info {
  border-color: oklch(var(--primary-500) / 0.35);
  background-color: oklch(var(--primary-500) / 0.08);
  color: oklch(var(--foreground-800));
}
.ed-alert--success {
  border-color: oklch(0.7 0.15 150 / 0.5);
  background-color: oklch(0.7 0.15 150 / 0.1);
  color: oklch(0.88 0.1 150);
}

/* État occupé d'un bouton pendant un appel réseau */
.ed-busy {
  opacity: 0.6;
  pointer-events: none;
}
.ed-spin {
  animation: spin 1s linear infinite;
}

/* Écran de confirmation après réservation */
.ed-done {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  text-align: center;
  gap: 0.75rem;
  min-height: 320px;
  padding: 2rem;
  border: 1px solid oklch(var(--primary-500) / 0.4);
  border-radius: 0.5rem;
  background-color: oklch(var(--background-950) / 0.7);
}
.ed-done__icon {
  width: 3.5rem;
  height: 3.5rem;
  display: flex;
  align-items: center;
  justify-content: center;
  border-radius: 9999px;
  background-color: oklch(var(--primary-500) / 0.15);
  border: 1px solid oklch(var(--primary-500) / 0.4);
  color: oklch(var(--primary-400));
  font-size: 1.75rem;
}
.ed-done__ref {
  font-family: var(--font-heading);
  letter-spacing: 0.2em;
  font-weight: 700;
  color: oklch(var(--primary-400));
}

/* Coordonnées bancaires affichées pour un paiement par virement */
.ed-iban {
  margin-top: 0.75rem;
  padding: 1rem;
  border-radius: 0.375rem;
  border: 1px dashed oklch(var(--primary-500) / 0.4);
  background-color: oklch(var(--background-950) / 0.6);
  font-size: 0.8125rem;
  line-height: 1.8;
  color: oklch(var(--foreground-800));
  text-align: left;
}
.ed-iban code {
  font-family: ui-monospace, SFMono-Regular, Menlo, monospace;
  color: oklch(var(--foreground-950));
  letter-spacing: 0.05em;
  user-select: all;
}

/* --------------------------------------------------------------------------
   Contenu rédigé dans l'éditeur WordPress (mentions légales, CGV…).
   Le build Tailwind d'origine remet à zéro les titres, listes et liens : sans
   ces règles, une page rédigée dans l'éditeur s'afficherait comme un seul bloc
   de texte indifférencié.
   -------------------------------------------------------------------------- */
.ed-prose > * + * {
  margin-top: 1.15em;
}
.ed-prose h2,
.ed-prose h3,
.ed-prose h4 {
  font-family: var(--font-heading);
  font-weight: 700;
  color: oklch(var(--foreground-950));
  margin-top: 2em;
  line-height: 1.3;
}
.ed-prose h2 {
  font-size: 1.6rem;
}
.ed-prose h3 {
  font-size: 1.3rem;
}
.ed-prose h4 {
  font-size: 1.1rem;
}
.ed-prose p,
.ed-prose li {
  font-size: 0.95rem;
  line-height: 1.75;
}
.ed-prose ul,
.ed-prose ol {
  padding-left: 1.4em;
}
.ed-prose ul {
  list-style: disc;
}
.ed-prose ol {
  list-style: decimal;
}
.ed-prose li {
  margin-top: 0.45em;
}
.ed-prose a {
  color: oklch(var(--primary-400));
  text-decoration: underline;
  text-underline-offset: 3px;
}
.ed-prose a:hover {
  color: oklch(var(--primary-300));
}
.ed-prose strong {
  color: oklch(var(--foreground-950));
  font-weight: 600;
}
.ed-prose blockquote {
  border-left: 2px solid oklch(var(--primary-500) / 0.5);
  padding-left: 1.2em;
  color: oklch(var(--foreground-700));
  font-style: italic;
}
.ed-prose hr {
  border-top: 1px solid oklch(var(--primary-500) / 0.2);
  margin: 2.5em 0;
}
.ed-prose table {
  width: 100%;
  font-size: 0.9rem;
}
.ed-prose th,
.ed-prose td {
  border: 1px solid oklch(var(--primary-500) / 0.2);
  padding: 0.6em 0.8em;
  text-align: left;
}
.ed-prose img {
  max-width: 100%;
  height: auto;
  border-radius: 0.5rem;
}

/* --------------------------------------------------------------------------
   Respect de « réduire les animations » du système.
   Le zoom lent de la photo héro et le scintillement doré tournent en boucle
   infinie : à laisser tourner, ils déclenchent des migraines chez les
   personnes sensibles au mouvement.
   -------------------------------------------------------------------------- */
@media (prefers-reduced-motion: reduce) {
  *,
  *::before,
  *::after {
    animation-duration: 0.01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: 0.01ms !important;
    scroll-behavior: auto !important;
  }
  .animate-slow-zoom {
    animation: none !important;
  }
  .gold-shimmer {
    animation: none !important;
    background-position: 50% 0;
  }
  /* Sans animation, les blocs en opacity-0 resteraient invisibles. */
  .animate-fade-in,
  .animate-fade-in-up,
  .animate-fade-in-down {
    opacity: 1 !important;
    transform: none !important;
  }
}

/* --------------------------------------------------------------------------
   Impression : une réservation confirmée doit pouvoir être imprimée proprement.
   -------------------------------------------------------------------------- */
@media print {
  .ed-no-print,
  header,
  footer,
  .ed-fab {
    display: none !important;
  }
  body {
    background: #fff !important;
    color: #000 !important;
  }
}
