.elementor-kit-5{--e-global-color-primary:#1F3C9C;--e-global-color-secondary:#0E9F9A;--e-global-color-text:#0C1A3A;--e-global-color-accent:#D8232A;--e-global-color-e1a34ea6:#1F3C9C;--e-global-color-9a7d1ba4:#0F2461;--e-global-color-2a149828:#0C1A3A;--e-global-color-0d62e9f1:#D8232A;--e-global-color-590ba23c:#B0181E;--e-global-color-b3000d9c:#0E9F9A;--e-global-color-8af27cc7:#087C79;--e-global-color-4293fd8d:#C9ECE8;--e-global-color-0de0a770:#F4EEE2;--e-global-color-8e802ef2:#E8DFCC;--e-global-color-4d62cf6a:#F7C948;--e-global-color-bbdfba78:#FFFFFF;--e-global-color-9df4feb9:#5A6478;--e-global-typography-primary-font-family:"Bricolage Grotesque";--e-global-typography-primary-font-weight:800;--e-global-typography-primary-line-height:1em;--e-global-typography-primary-letter-spacing:-0.025em;--e-global-typography-secondary-font-family:"Bricolage Grotesque";--e-global-typography-secondary-font-weight:700;--e-global-typography-secondary-line-height:1.15em;--e-global-typography-secondary-letter-spacing:-0.015em;--e-global-typography-text-font-family:"Instrument Sans";--e-global-typography-text-font-size:1.02rem;--e-global-typography-text-font-weight:400;--e-global-typography-text-line-height:1.55em;--e-global-typography-accent-font-family:"Bricolage Grotesque";--e-global-typography-accent-font-size:1rem;--e-global-typography-accent-font-weight:700;--e-global-typography-accent-letter-spacing:0.01em;--e-global-typography-80f1e244-font-family:"Bricolage Grotesque";--e-global-typography-80f1e244-font-size:clamp(2.3rem, 7.2vw, 5.6rem);--e-global-typography-80f1e244-font-weight:800;--e-global-typography-80f1e244-line-height:1em;--e-global-typography-80f1e244-letter-spacing:-0.025em;--e-global-typography-1f9ba15a-font-family:"Bricolage Grotesque";--e-global-typography-1f9ba15a-font-size:clamp(2rem, 5.2vw, 3.6rem);--e-global-typography-1f9ba15a-font-weight:800;--e-global-typography-1f9ba15a-line-height:1em;--e-global-typography-1f9ba15a-letter-spacing:-0.025em;--e-global-typography-8d0a2956-font-family:"Bricolage Grotesque";--e-global-typography-8d0a2956-font-size:clamp(1.25rem, 2.4vw, 1.6rem);--e-global-typography-8d0a2956-font-weight:700;--e-global-typography-8d0a2956-line-height:1.15em;--e-global-typography-8d0a2956-letter-spacing:-0.015em;--e-global-typography-55a98c1d-font-family:"Bricolage Grotesque";--e-global-typography-55a98c1d-font-size:0.8rem;--e-global-typography-55a98c1d-font-weight:700;--e-global-typography-55a98c1d-text-transform:uppercase;--e-global-typography-55a98c1d-letter-spacing:0.16em;--e-global-typography-79214989-font-family:"Instrument Sans";--e-global-typography-79214989-font-size:1.1rem;--e-global-typography-79214989-font-weight:400;--e-global-typography-79214989-line-height:1.55em;}.elementor-kit-5 e-page-transition{background-color:#FFBC7D;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1240px;}.e-con{--container-max-width:1240px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.elementor-lightbox{background-color:rgba(12,26,58,0.92);--lightbox-ui-color:#FFFFFF;--lightbox-ui-color-hover:#D8232A;}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1100px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:600px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}:root { --BleuMed:#1F3C9C; --BleuProfond:#0F2461; --Encre:#0C1A3A; --RougeKayak:#D8232A; --RougeProfond:#B0181E; --Lagune:#0E9F9A; --LaguneProfonde:#087C79; --LaguneClaire:#C9ECE8; --Sable:#F4EEE2; --SableProfond:#E8DFCC; --Soleil:#F7C948; --Blanc:#FFFFFF; --GrisTexte:#5A6478; --FontTitres:Bricolage Grotesque; --FontTexte:Instrument Sans; --RadiusLg:28px; --RadiusMd:20px; --RadiusSm:12px; --Gutter:clamp(16px, 4vw, 40px); --SectionPad:clamp(56px, 8vw, 112px); --Container:1240px; --H1Size:clamp(2.3rem, 7.2vw, 5.6rem); --H2Size:clamp(2rem, 5.2vw, 3.6rem); --H3Size:clamp(1.25rem, 2.4vw, 1.6rem); --RougeLisible:#C42026; }
/* Start custom CSS *//* >>> km:base */
/* ==========================================================================
   KayakMed — CSS transversal du Kit Elementor
   --------------------------------------------------------------------------
   Ne contient QUE ce que les proprietes de style atomiques v4 ne savent pas
   exprimer : pseudo-elements, keyframes, -webkit-text-stroke, reglages
   fins du widget « Menu WordPress ».
   Tout le reste (couleurs, espacements, typo, flex, grille) vit dans les
   variables, les classes globales « km-* » et les styles d'element.
   Les classes globales Elementor sont rendues avec leur nom : on peut donc
   les cibler directement ici.
   ========================================================================== */

/* ---------- 1. Soulignement « sourire » (coque du logo) ---------- */
.elementor .smile {
  position: relative; display: inline-block; white-space: nowrap; isolation: isolate;
}
.elementor .smile::after {
  content: ""; position: absolute; left: -1%; right: -1%; bottom: -.2em; height: .34em; z-index: -1;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 24' preserveAspectRatio='none'%3E%3Cpath d='M0 1 C 55 28, 145 28, 200 1 C 145 20, 55 20, 0 1 Z' fill='%23d8232a'/%3E%3C/svg%3E") no-repeat center / 100% 100%;
}
.elementor .smile--sun::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 24' preserveAspectRatio='none'%3E%3Cpath d='M0 1 C 55 28, 145 28, 200 1 C 145 20, 55 20, 0 1 Z' fill='%23f7c948'/%3E%3C/svg%3E");
}

/* ---------- 2. Kicker : le petit trait avant le libelle ---------- */
.elementor .km-kicker::before {
  content: ""; width: 26px; height: 3px; background: currentColor; border-radius: 3px; flex: none;
}

/* ---------- 3. Icones UIcons dans les textes ---------- */
/* la webfont Flaticon a une hauteur de glyphe inferieure a sa boite : on la
   centre explicitement, sinon elle « flotte » au-dessus du texte */
.elementor .fi {
  display: inline-flex; align-items: center; justify-content: center;
  line-height: 1; height: 1em; vertical-align: middle; flex: none;
}
.elementor .fi::before { display: block; line-height: 1; }
/* un peu d'air entre l'icone et le libelle qui la suit */
.elementor .km-social .fi, .elementor .km-btn-primary .fi, .elementor .km-btn-ghost .fi,
.elementor .km-btn-blue .fi, .elementor .km-btn-light .fi, .elementor .km-btn-outline .fi,
.elementor .km-pill-link .fi, .elementor .km-contact-link .fi { margin-inline-end: 3px; }
.elementor .km-btn-primary .fi,
.elementor .km-btn-ghost .fi,
.elementor .km-btn-blue .fi,
.elementor .km-btn-light .fi,
.elementor .km-btn-outline .fi { font-size: 1.15em; }
.elementor .km-social .fi { font-size: 1.1em; }

/* ---------- 4. Bandeau defilant ---------- */
.elementor .km-marquee-track {
  width: max-content; animation: km-marquee 40s linear infinite;
}
.elementor .km-marquee-track > * { flex: none; width: max-content; }
.elementor .km-marquee:hover .km-marquee-track { animation-play-state: paused; }
.elementor .km-marquee-item::after {
  content: ""; width: 10px; height: 10px; border-radius: 50%; background: #F7C948; flex: none;
}
@keyframes km-marquee { to { transform: translateX(-50%); } }

/* ---------- 5. Ticket de reservation : les encoches ---------- */
.elementor .km-ticket::before,
.elementor .km-ticket::after {
  content: ""; position: absolute; top: 50%; width: 28px; height: 28px; border-radius: 50%;
  background: #F4EEE2; transform: translateY(-50%); z-index: 2;
}
.elementor .km-ticket::before { left: -14px; }
.elementor .km-ticket::after  { right: -14px; }

/* ---------- 6. Sticker « Maison fondee en 2009 » ---------- */
.elementor .km-sticker { outline: 2.5px dashed rgba(12,26,58,.35); outline-offset: -8px; }
.elementor .km-sticker strong { display: block; font-size: 2rem; letter-spacing: -.02em; line-height: 1; }
@media (max-width: 600px) { .elementor .km-sticker strong { font-size: 1.4rem; } }

/* ---------- 6b. Galeries : l'image remplit sa cellule ---------- */
/* Le lien genere par le widget Image se dimensionne sur l'image et non sur la
   cellule de grille : les vignettes ressortaient de largeurs inegales. */
.elementor .km-zoom,
.elementor .km-photo-zoom { overflow: hidden; }
.elementor .km-zoom > *, .elementor .km-zoom .e-image-link-base,
.elementor .km-photo-zoom > *, .elementor .km-photo-zoom .e-image-link-base {
  width: 100%; height: 100%; display: block;
}
.elementor .km-zoom img, .elementor .km-photo-zoom img {
  width: 100%; height: 100%; object-fit: cover; display: block;
}
.elementor .km-zoom { position: relative; }
.elementor .km-zoom:hover img { transform: scale(1.06); }

/* ---------- 7. Cartes photo : lisibilite et survol ---------- */
.elementor .km-photo-zoom img { transition: transform .7s ease; }
.elementor .km-card:hover .km-photo-zoom img,
.elementor .km-product:hover .km-photo-zoom img { transform: scale(1.04); }
.elementor .km-card:hover .km-arrow { transform: rotate(-45deg); background: #D8232A; color: #fff; }
/* le texte pose sur une photo garde une ombre portee quelle que soit l'image */
.elementor .km-card-body, .elementor .km-product-body,
.elementor .km-pill-num, .elementor .km-flag, .elementor .km-product-kind,
.elementor .s-hero-title, .elementor .s-hero-sub,
.elementor [class*="-hero-title"], .elementor [class*="-hero-sub"] {
  text-shadow: 0 2px 10px rgba(12,26,58,.55);
}
/* au survol, le voile s'allege et la photo reprend la main */
.elementor .km-card [class*="-veil"], .elementor .km-product [class*="-veil"] {
  transition: opacity .35s;
}
.elementor .km-card:hover [class*="-veil"],
.elementor .km-product:hover [class*="-veil"] { opacity: .35; }
.elementor .km-card-body > *:first-child,
.elementor .km-product-body > *:not(.km-product-cta) { transition: opacity .35s; }
.elementor .km-card:hover .km-card-body > *:first-child,
.elementor .km-product:hover .km-product-body > *:not(.km-product-cta) { opacity: .12; }

/* ---------- 8. Filigrane « sourire » des tuiles en aplat ---------- */
.elementor .km-tile-solid::before {
  content: ""; position: absolute; right: -8%; top: 18%; bottom: auto; left: auto;
  width: 78%; height: auto; aspect-ratio: 200 / 24;
  opacity: .18; transform: rotate(-14deg); pointer-events: none;
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 24' preserveAspectRatio='none'%3E%3Cpath d='M0 1 C 55 28, 145 28, 200 1 C 145 20, 55 20, 0 1 Z' fill='%23ffffff'/%3E%3C/svg%3E") no-repeat center / 100% 100%;
}
.elementor .km-tile-solid-sun::before {
  opacity: .22;
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 24' preserveAspectRatio='none'%3E%3Cpath d='M0 1 C 55 28, 145 28, 200 1 C 145 20, 55 20, 0 1 Z' fill='%230c1a3a'/%3E%3C/svg%3E");
}

/* ---------- 9. Guillemet geant de la section avis ---------- */
.elementor .km-quote-mark::before {
  content: "“"; position: absolute; left: -.05em; top: -.25em;
  font: 800 clamp(12rem, 30vw, 24rem) "Bricolage Grotesque", sans-serif; line-height: 1;
  color: #F4EEE2; pointer-events: none; user-select: none;
}

/* ---------- 10. Mot geant en contour du pied de page ---------- */
.elementor .s-footer-word {
  -webkit-text-stroke: 1.5px rgba(255,255,255,.18);
  white-space: nowrap; user-select: none; pointer-events: none;
}

/* ---------- 10b. En-tete collante ---------- */
/* Le gabarit d'en-tete tient dans un conteneur haut de 73 px : un element
   sticky ne peut pas depasser son parent, c'est donc le conteneur du Theme
   Builder qui doit coller. */
.elementor-location-header {
  position: sticky; top: 0; z-index: 200;
  transition: box-shadow .25s ease, background .25s ease;
}
body.admin-bar .elementor-location-header { top: 32px; }
@media (max-width: 782px) { body.admin-bar .elementor-location-header { top: 46px; } }
.elementor-location-header.km-scrolled { box-shadow: 0 6px 24px rgba(12,26,58,.10); }

/* ---------- 11. Menu principal ---------- */
/* Les entrees de sous-menu sont des liens flex : le sous-libelle doit occuper
   toute la largeur pour passer a la ligne, comme dans la maquette. */
.elementor .elementor-nav-menu a.elementor-sub-item {
  flex-direction: column; align-items: flex-start; gap: 2px;
}
.elementor .site-nav__sub {
  display: block; width: 100%; font-family: "Instrument Sans", sans-serif; font-weight: 400;
  font-size: .8rem; line-height: 1.25; letter-spacing: 0; opacity: .65; text-transform: none;
}
/* Survol des entrees : l'effet « pointeur » d'Elementor anime un calque
   supplementaire, lent et flou. On le neutralise et on pilote le survol
   directement, comme dans la maquette : pastille sable, libelle rouge. */
.elementor .elementor-nav-menu--main .elementor-item::before,
.elementor .elementor-nav-menu--main .elementor-item::after {
  display: none !important;
}
.elementor .elementor-nav-menu--main .elementor-item {
  position: relative; border-radius: 999px;
  transition: color .15s ease, background-color .15s ease;
}
.elementor .elementor-nav-menu--main .elementor-item:hover,
.elementor .elementor-nav-menu--main .elementor-item:focus-visible,
.elementor .elementor-nav-menu--main li:hover > .elementor-item {
  background-color: #F4EEE2 !important; color: #D8232A !important;
}
.elementor .elementor-nav-menu--main .elementor-item.elementor-item-active {
  background-color: #F4EEE2 !important; color: #D8232A !important;
}
/* le chevron suit le libelle et pivote quand le sous-menu s'ouvre */
.elementor .elementor-nav-menu--main .sub-arrow { transition: transform .15s ease; }
.elementor .elementor-nav-menu--main li:hover > .elementor-item .sub-arrow {
  transform: rotate(180deg);
}
.elementor .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item {
  transition: background-color .12s ease, color .12s ease;
}
.elementor .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item:hover {
  color: #D8232A;
}
/* Panneau deroulant : carte blanche arrondie, pas un bloc bleu plein */
@media (min-width: 1101px) {
  .elementor .elementor-nav-menu--main .elementor-nav-menu ul {
    padding: 8px; border-radius: 18px; border: 1px solid rgba(12,26,58,.12);
    box-shadow: 0 24px 60px rgba(12,26,58,.18); min-width: 300px; background: #fff;
  }
  .elementor .elementor-nav-menu--main .elementor-nav-menu a.elementor-sub-item,
  .elementor .elementor-nav-menu--main .elementor-nav-menu li:first-child a.elementor-sub-item,
  .elementor .elementor-nav-menu--main .elementor-nav-menu li:last-child a.elementor-sub-item {
    border-radius: 12px; padding: 10px 14px; white-space: nowrap;
  }
}
/* les entrees « # » n'ouvrent qu'un sous-menu : pas de curseur de lien */
.elementor .elementor-nav-menu a[href="#"] { cursor: default; }

/* ---------- 11b. Widgets v3 dans un conteneur atomique ---------- */
/* Elementor leur donne une largeur intrinseque de 300px des qu'ils sont
   enfants d'un e-flexbox : carte Google, lecteur video, formulaire... */
.elementor .e-con > .elementor-widget-html,
.elementor .e-con > .elementor-widget-video,
.elementor .e-con > .elementor-widget-form,
.elementor .e-con > .elementor-widget-nav-menu { width: 100%; max-width: 100%; }

/* ---------- 11c. Bandeau labels et partenaires ---------- */
/* La hauteur des logos vit dans la classe globale km-logo-mono : la feuille des
   classes globales est chargee APRES le CSS du Kit, a specificite egale, donc
   une surcharge ici serait sans effet. */
@media (max-width: 900px) {
  .elementor .km-logo-mono, .elementor img.km-logo-mono { height: 56px !important; }
}
/* l'ability d'edition d'une classe globale ne prend pas les etats : le survol
   (le logo reprend ses couleurs) vit donc ici */
.elementor .km-logo-mono:hover, .elementor .km-logo-mono:focus-visible {
  filter: none; opacity: 1;
}

/* ---------- 11d. Pied de page ---------- */
/* le mot geant : trace fin, non rogne, et sous le contenu */
.elementor .s-footer-word {
  -webkit-text-stroke: 1px rgba(255,255,255,.16);
  white-space: nowrap; user-select: none; pointer-events: none;
  overflow: visible; z-index: 0;
}
.elementor .s-footer-grid, .elementor .s-footer-bottom { position: relative; z-index: 1; }

/* ---------- 11e. Survols : tout ce qui se clique s'anime ---------- */
.elementor .km-btn-primary, .elementor .km-btn-ghost, .elementor .km-btn-blue,
.elementor .km-btn-light, .elementor .km-btn-outline, .elementor .km-pill-link,
.elementor .km-social, .elementor .km-rating, .elementor .km-card-link,
.elementor .km-press-link, .elementor .km-footer-link, .elementor .km-contact-link,
.elementor .km-arrow, .elementor .km-feature-light, .elementor .km-feature {
  transition: transform .22s cubic-bezier(.2,.8,.2,1), background-color .22s ease,
              color .22s ease, border-color .22s ease, box-shadow .22s ease, opacity .22s ease;
  will-change: transform;
}
.elementor .km-btn-primary:hover, .elementor .km-btn-ghost:hover,
.elementor .km-btn-blue:hover, .elementor .km-btn-light:hover,
.elementor .km-btn-outline:hover { transform: translateY(-2px); }
.elementor .km-btn-primary:active, .elementor .km-btn-ghost:active,
.elementor .km-btn-blue:active, .elementor .km-btn-light:active,
.elementor .km-btn-outline:active { transform: translateY(0); }
.elementor .km-feature-light:hover, .elementor .km-feature:hover {
  transform: translateY(-3px); box-shadow: 0 14px 34px rgba(12,26,58,.10);
}
/* la fleche ronde des cartes pivote et rougit au survol de sa carte */
.elementor a:hover > .km-arrow, .elementor a:hover .km-arrow {
  transform: rotate(-45deg); background-color: #D8232A; color: #fff;
}

/* ---------- 11f. Trombinoscope ---------- */
/* Pas de cadre : c'est la photo qui se souleve et pivote legerement,
   comme dans la maquette d'origine. */
.elementor .km-member-photo {
  transition: transform .4s cubic-bezier(.2,.8,.2,1), box-shadow .4s ease;
}
.elementor .km-member:hover .km-member-photo {
  transform: translateY(-6px) rotate(-2deg);
  box-shadow: 0 24px 60px rgba(12,26,58,.22);
}
/* les liens dans les encarts d'infos reprennent le bleu de la charte */
.elementor .km-feature a, .elementor .km-feature-light a {
  color: #1F3C9C; text-decoration: underline; text-underline-offset: 2px;
  transition: color .18s ease;
}
.elementor .km-feature a:hover, .elementor .km-feature-light a:hover { color: #D8232A; }

/* ---------- 12. Accessibilite et animations ---------- */
.elementor .km-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;
}
@media (prefers-reduced-motion: reduce) {
  .elementor .km-marquee-track { animation: none; }
  .elementor *, .elementor *::before, .elementor *::after {
    transition-duration: .01ms !important; animation-duration: .01ms !important;
  }
}

/* ==========================================================================
   13. Decors SVG (vagues, timbre, tampon Natura 2000)
   Poses en widget HTML par deco.py : illustrations figees, identiques sur
   toutes les pages.
   ========================================================================== */

/* ---------- 13a. Vagues ---------- */
.elementor .km-hero-wave,
.elementor .km-wave-top { position: absolute; inset: 0; pointer-events: none; overflow: hidden; }
/* le widget HTML qui porte une vague doit remplir son conteneur */
.elementor .elementor-widget-html:has(> .km-hero-wave),
.elementor .elementor-widget-html:has(> .km-wave-top) {
  position: absolute; inset: 0; width: 100%; height: 100%;
}
.elementor .km-hero-wave svg,
.elementor .km-wave-top svg { position: absolute; bottom: 0; left: 0; width: 200%; height: 100%; display: block; }
.elementor .km-hero-wave svg path { fill: #fff; }
.elementor .km-hero-wave svg:nth-child(1) { opacity: .16; animation: km-wave 18s linear infinite; }
.elementor .km-hero-wave svg:nth-child(2) { opacity: .26; animation: km-wave 12s linear infinite reverse; height: 80%; }
.elementor .km-hero-wave svg:nth-child(3) { opacity: .50; animation: km-wave 9s linear infinite; height: 55%; }

.elementor .km-wave-top svg path { fill: currentColor; }
.elementor .km-wave-top svg:nth-child(1) { opacity: .35; animation: km-wave 20s linear infinite; }
.elementor .km-wave-top svg:nth-child(2) { opacity: .60; animation: km-wave 13s linear infinite reverse; height: 85%; }
.elementor .km-wave-top svg:nth-child(3) { animation: km-wave 9s linear infinite; height: 62%; }
@keyframes km-wave { to { transform: translateX(-50%); } }

/* ---------- 13b. Timbre « depuis 2009 » ---------- */
.elementor .km-stamp {
  display: flex; flex-direction: column; align-items: center; justify-content: center;
  text-align: center; gap: 2px; width: 196px; aspect-ratio: 200 / 140; padding: 18px 20px;
  color: #0C1A3A; position: relative;
  font-family: "Bricolage Grotesque", sans-serif; font-weight: 800; line-height: 1.05;
  text-transform: uppercase; letter-spacing: .06em;
  filter: drop-shadow(0 10px 20px rgba(0,0,0,.22));
  background: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 140'%3E%3Cpath d='M6,6 L8.1,6.0 A6,6 0 0 0 21.0,6.0 L25.2,6.0 A6,6 0 0 0 38.0,6.0 L42.3,6.0 A6,6 0 0 0 55.1,6.0 L59.4,6.0 A6,6 0 0 0 72.2,6.0 L76.5,6.0 A6,6 0 0 0 89.3,6.0 L93.6,6.0 A6,6 0 0 0 106.4,6.0 L110.7,6.0 A6,6 0 0 0 123.5,6.0 L127.8,6.0 A6,6 0 0 0 140.6,6.0 L144.9,6.0 A6,6 0 0 0 157.7,6.0 L162.0,6.0 A6,6 0 0 0 174.8,6.0 L179.0,6.0 A6,6 0 0 0 191.9,6.0 L194,6 L194.0,8.0 A6,6 0 0 0 194.0,20.0 L194.0,24.0 A6,6 0 0 0 194.0,36.0 L194.0,40.0 A6,6 0 0 0 194.0,52.0 L194.0,56.0 A6,6 0 0 0 194.0,68.0 L194.0,72.0 A6,6 0 0 0 194.0,84.0 L194.0,88.0 A6,6 0 0 0 194.0,100.0 L194.0,104.0 A6,6 0 0 0 194.0,116.0 L194.0,120.0 A6,6 0 0 0 194.0,132.0 L194,134 L191.9,134.0 A6,6 0 0 0 179.0,134.0 L174.8,134.0 A6,6 0 0 0 162.0,134.0 L157.7,134.0 A6,6 0 0 0 144.9,134.0 L140.6,134.0 A6,6 0 0 0 127.8,134.0 L123.5,134.0 A6,6 0 0 0 110.7,134.0 L106.4,134.0 A6,6 0 0 0 93.6,134.0 L89.3,134.0 A6,6 0 0 0 76.5,134.0 L72.2,134.0 A6,6 0 0 0 59.4,134.0 L55.1,134.0 A6,6 0 0 0 42.3,134.0 L38.0,134.0 A6,6 0 0 0 25.2,134.0 L21.0,134.0 A6,6 0 0 0 8.1,134.0 L6,134 L6.0,132.0 A6,6 0 0 0 6.0,120.0 L6.0,116.0 A6,6 0 0 0 6.0,104.0 L6.0,100.0 A6,6 0 0 0 6.0,88.0 L6.0,84.0 A6,6 0 0 0 6.0,72.0 L6.0,68.0 A6,6 0 0 0 6.0,56.0 L6.0,52.0 A6,6 0 0 0 6.0,40.0 L6.0,36.0 A6,6 0 0 0 6.0,24.0 L6.0,20.0 A6,6 0 0 0 6.0,8.0 L6,6 Z' fill='%23f7c948'/%3E%3C/svg%3E") no-repeat center / 100% 100%;
  animation: km-float 6s ease-in-out infinite;
}
.elementor .km-stamp::before {
  content: ""; position: absolute; inset: 13px;
  border: 1.5px dashed rgba(12,26,58,.35); pointer-events: none;
}
.elementor .km-stamp__l1 { font-size: .62rem; }
.elementor .km-stamp__l2 { font-size: .78rem; letter-spacing: .04em; }
.elementor .km-stamp__l3 { font-size: 1.35rem; letter-spacing: -.01em; margin-top: 4px; }
@keyframes km-float { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-8px); } }
@media (max-width: 700px) {
  .elementor .km-stamp { width: 132px; padding: 12px; }
  .elementor .km-stamp__l1 { font-size: .42rem; }
  .elementor .km-stamp__l2 { font-size: .52rem; }
  .elementor .km-stamp__l3 { font-size: .9rem; }
  .elementor .km-stamp::before { inset: 9px; }
}

/* ---------- 13c. Tampon Natura 2000 ---------- */
.elementor .km-eco-stamp {
  display: inline-block; width: 128px; height: 128px; text-decoration: none;
  transform: rotate(-8deg); transition: transform .3s;
  filter: drop-shadow(0 10px 24px rgba(12,26,58,.25));
}
.elementor .km-eco-stamp:hover { transform: rotate(0) scale(1.04); }
.elementor .km-eco-stamp svg { width: 100%; height: 100%; display: block; }
.elementor .km-eco__bg { fill: #0E9F9A; }
.elementor .km-eco__ring { fill: none; stroke: #fff; stroke-width: 2.5; }
.elementor .km-eco__ring--dash { stroke-dasharray: 3 4; stroke-width: 1.5; }
.elementor .km-eco__text { fill: #fff; font: 700 13.2px "Bricolage Grotesque", sans-serif; letter-spacing: .14em; }
.elementor .km-eco__big  { fill: #fff; font: 800 22px "Bricolage Grotesque", sans-serif; letter-spacing: .02em; }
.elementor .km-eco__spin {
  transform-box: view-box; transform-origin: 100px 100px; animation: km-spin 40s linear infinite;
}
.elementor .km-eco-stamp:hover .km-eco__spin { animation-duration: 12s; }
@keyframes km-spin { to { transform: rotate(360deg); } }
.elementor .km-eco--hero {
  position: absolute; z-index: 2; right: clamp(16px, 3vw, 32px); bottom: clamp(24px, 5vw, 64px);
  width: clamp(96px, 11vw, 150px); height: clamp(96px, 11vw, 150px);
}
.elementor .km-eco--lg { width: clamp(160px, 22vw, 240px); height: clamp(160px, 22vw, 240px); }
@media (max-width: 900px) { .elementor .km-eco--hero { display: none; } }

/* ---------- 13d. Sourire lagune (encart Natura 2000) ---------- */
.elementor .smile--lagoon::after {
  background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 200 24' preserveAspectRatio='none'%3E%3Cpath d='M0 1 C 55 28, 145 28, 200 1 C 145 20, 55 20, 0 1 Z' fill='%230e9f9a'/%3E%3C/svg%3E");
}

/* ---------- 13e. Photo de couverture qui respire ---------- */
.elementor .km-kenburns img { animation: km-kenburns 28s ease-in-out infinite alternate; will-change: transform; }
@keyframes km-kenburns {
  from { transform: scale(1) translate(0, 0); }
  to   { transform: scale(1.09) translate(-1.5%, 1%); }
}

@media (prefers-reduced-motion: reduce) {
  .elementor .km-hero-wave svg, .elementor .km-wave-top svg,
  .elementor .km-stamp, .elementor .km-eco__spin, .elementor .km-kenburns img { animation: none !important; }
}

/* ---------- 14. Micro-animations reprises de la maquette ----------
   Quatre effets du fichier d'origine n'avaient pas ete portes : le bouton
   d'appel qui bat, le reflet qui le balaie, l'anneau du bouton de lecture et
   le rebond des icones au survol. Tous sont neutralises plus bas pour qui
   demande de reduire les animations. */
@keyframes km-pulse {
  0%, 100% { box-shadow: 0 10px 24px rgba(216,35,42,.32); }
  50%      { box-shadow: 0 10px 34px rgba(216,35,42,.55), 0 0 0 8px rgba(216,35,42,.12); }
}
@keyframes km-shine {
  0%, 60% { transform: translateX(-140%) skewX(-18deg); }
  100%    { transform: translateX(240%) skewX(-18deg); }
}
@keyframes km-ring {
  0%   { transform: scale(.92); opacity: .7; }
  100% { transform: scale(1.6); opacity: 0; }
}
@keyframes km-bob { 0%, 100% { transform: translateY(0); } 50% { transform: translateY(-4px); } }

/* le bouton principal du hero, seul, respire */
.elementor [class*="-hero-actions"] .km-btn-primary { animation: km-pulse 3.2s ease-in-out infinite; }

/* reflet qui traverse tous les boutons rouges */
.elementor .km-btn-primary { position: relative; overflow: hidden; }
.elementor .km-btn-primary::after {
  content: ""; position: absolute; top: -20%; bottom: -20%; left: 0; width: 34%;
  background: linear-gradient(90deg, transparent, rgba(255,255,255,.35), transparent);
  animation: km-shine 5s ease-in-out infinite; pointer-events: none;
}

/* bouton de lecture des videos : un anneau s'en ecarte */
.elementor .elementor-custom-embed-play { position: relative; }
.elementor .elementor-custom-embed-play::before {
  content: ""; position: absolute; top: 50%; left: 50%;
  /* l'icone de lecture d'Elementor fait 100 px : l'anneau l'epouse */
  width: 100px; height: 100px; margin: -50px 0 0 -50px;
  border-radius: 50%; border: 3px solid #D8232A;
  animation: km-ring 2.2s ease-out infinite; pointer-events: none;
}

/* les icones rebondissent quand on survole ce qui les porte */
.elementor .km-btn-primary:hover .fi, .elementor .km-btn-ghost:hover .fi,
.elementor .km-btn-blue:hover .fi, .elementor .km-btn-light:hover .fi,
.elementor .km-btn-outline:hover .fi, .elementor .km-social:hover .fi,
.elementor .km-contact-link:hover .fi, .elementor .km-footer-link:hover .fi,
.elementor .km-press-link:hover .fi {
  display: inline-block; animation: km-bob 1s ease-in-out infinite;
}
.elementor .km-rating:hover [class*="-stars"] {
  display: inline-block; animation: km-bob 1s ease-in-out infinite;
}

/* deplacements lateraux de la maquette : sous-menus, liste des autres bases */
.elementor .elementor-nav-menu--dropdown a {
  transition: background-color .18s ease, color .18s ease, transform .18s ease;
}
.elementor .elementor-nav-menu--dropdown a:hover { transform: translateX(4px); }
.elementor .km-card-link:hover {
  transform: translateX(6px); box-shadow: 0 10px 26px rgba(12,26,58,.10);
}

@media (prefers-reduced-motion: reduce) {
  .elementor [class*="-hero-actions"] .km-btn-primary,
  .elementor .km-btn-primary::after,
  .elementor .elementor-custom-embed-play::before,
  .elementor .km-social:hover .fi, .elementor .km-rating:hover [class*="-stars"],
  .elementor .km-btn-primary:hover .fi, .elementor .km-btn-ghost:hover .fi,
  .elementor .km-btn-blue:hover .fi, .elementor .km-btn-light:hover .fi,
  .elementor .km-btn-outline:hover .fi, .elementor .km-contact-link:hover .fi,
  .elementor .km-footer-link:hover .fi, .elementor .km-press-link:hover .fi {
    animation: none !important;
  }
}

/* ---------- 15. Vidéo de fond du hero (base lagune) ----------
   Posée au-dessus de la photo, elle n'apparaît que lorsqu'elle joue vraiment :
   le script du thème enfant ne la lance que sur grand écran, hors connexion
   mesurée et hors « réduire les animations ». La photo reste le filet. */
.elementor .s-b-hero-video, .elementor .s-b-hero-video .elementor-widget-container {
  width: 100%; height: 100%;
}
.elementor .km-hero-video {
  position: absolute; top: 0; left: 0; width: 100%; height: 100%;
  object-fit: cover; opacity: 0; transition: opacity .8s ease; pointer-events: none;
}
.elementor .km-hero-video.is-playing { opacity: 1; }
/* pendant la vidéo, la photo cesse de respirer : deux mouvements se gênent */
.elementor .e-con:has(.km-hero-video.is-playing) .km-kenburns img { animation: none; }
@media (max-width: 900px) { .elementor .km-hero-video { display: none; } }

/* ---------- 16. Navigation au clavier ----------
   Seuls le menu et le logo montraient où l'on se trouvait ; boutons, cartes et
   champs de formulaire ne montraient rien. Anneau double : le jaune ressort sur
   les fonds sombres (héros, pied de page), le halo encre sur les fonds clairs.
   `:focus-visible` et non `:focus` : rien n'apparaît au clic à la souris. */
.elementor a:focus-visible,
.elementor button:focus-visible,
.elementor input:focus-visible,
.elementor select:focus-visible,
.elementor textarea:focus-visible,
.elementor [tabindex]:focus-visible,
.elementor .e-button-base:focus-visible,
.elementor .elementor-custom-embed-play:focus-visible,
.elementor-location-header a:focus-visible,
.elementor-location-footer a:focus-visible {
  outline: 3px solid #F7C948;
  outline-offset: 3px;
  box-shadow: 0 0 0 6px rgba(12, 26, 58, .55);
  border-radius: 8px;
}
/* les champs du formulaire gardent leur forme : l'anneau suit leur arrondi */
.elementor input:focus-visible,
.elementor select:focus-visible,
.elementor textarea:focus-visible { border-radius: 12px; }
/* le lien d'évitement doit se voir dès qu'il prend le focus */
.skip-link:focus, .screen-reader-text:focus {
  position: fixed !important; top: 12px !important; left: 12px !important;
  z-index: 100000; width: auto !important; height: auto !important;
  clip: auto !important; clip-path: none !important;
  padding: 12px 20px; border-radius: 999px;
  background: #0C1A3A; color: #fff; font: 700 .95rem "Bricolage Grotesque", sans-serif;
  text-decoration: none; outline: 3px solid #F7C948; outline-offset: 3px;
}

/* les étoiles des avis : le jaune de la charte ne tient pas seul sur blanc,
   un liseré encre leur redonne une forme lisible sans changer la couleur */
.elementor .km-rating [class*="-stars"] {
  -webkit-text-stroke: .6px rgba(12, 26, 58, .55);
  paint-order: stroke fill;
}

/* ---------- 17. Impression ----------
   Les infos pratiques ou l'adresse d'une base s'impriment : on
   enlève les fonds sombres, les décors et tout ce qui ne mène nulle part sur
   papier, et on fait suivre les adresses des liens. */
@media print {
  .elementor-location-header, .elementor-location-footer,
  .elementor .km-marquee, .elementor .km-hero-wave, .elementor .km-wave-top,
  .elementor .km-eco-stamp, .elementor .km-stamp, .elementor .km-hero-video,
  .elementor .elementor-widget-video, .elementor iframe { display: none !important; }
  .elementor *, .elementor *::before, .elementor *::after {
    background: transparent !important; color: #000 !important;
    box-shadow: none !important; text-shadow: none !important;
    animation: none !important; transition: none !important;
  }
  .elementor img { max-width: 40% !important; height: auto !important; }
  .elementor .km-h1, .elementor .km-h2, .elementor .km-h3 { page-break-after: avoid; }
  .elementor a[href^="http"]::after { content: " (" attr(href) ")"; font-size: .8em; }
  .elementor a[href^="#"]::after, .elementor a[href^="tel"]::after,
  .elementor a[href^="mailto"]::after { content: ""; }
  .elementor .e-con, .elementor .e-flexbox-base { break-inside: avoid; }
}

/* ---------- 18. Barre « Réserver » fixe, téléphone seulement ----------
   Elle n'existe que là où le bouton « Réserver » de l'en-tête disparaît, soit
   sous 600 px. Sur tablette et ordinateur, l'en-tête le montre déjà : une
   seconde barre y serait redondante et encombrante.
   Le sélecteur est doublé à dessein : la classe de base des conteneurs
   atomiques (`.elementor .e-flexbox-base { display: flex }`) est chargée après
   le CSS du Kit, à spécificité égale, et réaffichait la barre partout.

   Elle s'efface aussi quand le pied de page entre à l'écran (classe posée par
   le script du thème enfant) : elle glisse sous le bord de l'écran au lieu de
   recouvrir les coordonnées, les liens légaux ou le « Haut de page ». Le pied
   ouvre de toute façon sur son propre bouton « Réserver une sortie ». */
.elementor .km-cta-mobile.km-cta-mobile { display: none; }
@media (max-width: 600px) {
  .elementor .km-cta-mobile.km-cta-mobile {
    display: flex;
    position: fixed; left: 12px; right: 12px;
    bottom: calc(12px + env(safe-area-inset-bottom, 0px));
    z-index: 90;
    /* Elementor impose « width: 100% » à tout conteneur atomique : la barre
       débordait alors de 12 px à droite, sa largeur l'emportant sur « right ». */
    width: auto; max-width: none;
    animation: km-pulse 3.2s ease-in-out infinite;
    transition: transform .35s cubic-bezier(.2,.8,.2,1), opacity .25s ease;
  }
  body.km-pied-visible .elementor .km-cta-mobile.km-cta-mobile {
    transform: translateY(calc(100% + 28px)); opacity: 0; pointer-events: none;
  }
}
.elementor .km-cta-mobile .fi { font-size: 20px; }
body:has(.elementor-menu-toggle[aria-expanded="true"]) .elementor .km-cta-mobile.km-cta-mobile,
body.elementor-menu-open .elementor .km-cta-mobile.km-cta-mobile { display: none; }
@media (prefers-reduced-motion: reduce) {
  .elementor .km-cta-mobile.km-cta-mobile { animation: none !important; transition: none !important; }
}

/* ---------- 19. Carte « fiche » des activités EventsMed ----------
   Le texte quitte la photo pour un fond plein : sa lisibilité ne dépend plus de
   l'exposition de chaque image, et il ne s'efface plus au survol comme sur la
   carte d'origine. Les pages base gardent `km-product`, validé par le client. */
.elementor .km-fiche .km-zoom img { transition: transform .7s ease; }
.elementor .km-fiche:hover .km-zoom img { transform: scale(1.05); }
/* la flèche est le seul élément qui réagit : le texte, lui, ne bouge pas */
.elementor .km-fiche:hover .km-arrow {
  transform: rotate(-45deg); background-color: #D8232A; color: #fff;
}
@media (prefers-reduced-motion: reduce) {
  .elementor .km-fiche:hover .km-zoom img { transform: none; }
}

/* ---------- 20. Cartes produit à deux colonnes ----------
   Entre 600 et 900 px la grille passe à une seule colonne : la carte s'étire
   sur toute la largeur et sa hauteur fixe de 420 px la rendait très allongée
   (jusqu'à 1,9:1). On la cadre par proportion, la hauteur d'origine servant de
   plancher quand la fenêtre se resserre.
   Le sélecteur est doublé à dessein : la feuille des classes globales est
   chargée APRÈS le CSS du Kit, à spécificité égale — sans ce renfort, le
   « min-height » de la classe l'emporterait. */
@media (min-width: 601px) and (max-width: 900px) {
  .elementor .km-product.km-product { aspect-ratio: 3 / 2; min-height: 420px; }
}

/* ---------- 21. Police de base ----------
   Hello Elementor donne au <body> la police système (Segoe UI sous Windows,
   San Francisco sur Mac). Tout texte qui ne porte pas une classe de la charte
   en héritait : pied de page, adresses de la page Contact, lien d'évitement…
   On donne au corps la police de texte de la charte, par sa variable globale,
   pour que tout ce qui hérite retombe juste. `html body` pour passer devant la
   feuille de réinitialisation du thème, de même spécificité. */
html body {
  font-family: var(--FontTexte, "Instrument Sans"), "Instrument Sans", system-ui,
               -apple-system, "Segoe UI", sans-serif;
}
input, select, textarea, button { font-family: inherit; }

/* ---------- 20. Hero d'accueil (retour client du 26/09) ----------
   « KayakMed » en tete, qui flotte comme une coque sur l'eau, sourire rouge
   dessous ; la ligne « Kayak de mer, paddle et e-paddle » plus petite, dessous. */
.elementor .km-brand {
  display: inline-block; font-size: clamp(3.4rem, 10.5vw, 8.2rem); line-height: .92;
  letter-spacing: -.035em; transform-origin: 50% 80%;
  animation: km-flotte 5.5s ease-in-out infinite;
  text-shadow: 0 4px 24px rgba(12,26,58,.45);
}
.elementor .km-brand .smile::after { bottom: -.16em; height: .26em; animation: km-ondule 5.5s ease-in-out infinite; transform-origin: 50% 0; }
.elementor .km-baseline {
  display: block; margin-top: .5em; font-size: clamp(1.35rem, 3.3vw, 2.45rem); line-height: 1.12;
  letter-spacing: -.015em; text-shadow: 0 2px 14px rgba(12,26,58,.55);
}
@media (min-width: 768px) { .elementor .km-baseline { white-space: nowrap; } }
.elementor .km-baseline .nb, .elementor .km-hero-main-cta > * { white-space: nowrap; }
@media (max-width: 600px) {
  .elementor .km-hero-main-cta { padding: 10px 16px !important; }
}
@keyframes km-flotte {
  0%, 100% { transform: translateY(0) rotate(-1deg); }
  50%      { transform: translateY(-8px) rotate(1deg); }
}
@keyframes km-ondule {
  0%, 100% { transform: scaleX(1) scaleY(1); }
  50%      { transform: scaleX(.97) scaleY(1.25); }
}
/* le gros bouton de la base principale : meme halo que « Reserver une sortie » */
.elementor .km-hero-main::before {
  content: ""; position: absolute; inset: 0; border-radius: inherit; pointer-events: none;
  box-shadow: 0 0 0 0 rgba(216,35,42,.55); animation: km-halo-carte 2.6s ease-out infinite;
}
@keyframes km-halo-carte {
  0%   { box-shadow: 0 0 0 0 rgba(216,35,42,.55); }
  100% { box-shadow: 0 0 0 16px rgba(216,35,42,0); }
}
.elementor .km-hero-main:hover .km-hero-main-cta { transform: translateX(4px); }
.elementor .km-hero-main-cta svg { color: #D8232A; }
.elementor .km-hero-base:hover .km-hero-base-cta { background: #fff; color: #D8232A; }
.elementor .km-hero-base .km-hero-base-cta { justify-self: start; }
@media (prefers-reduced-motion: reduce) {
  .elementor .km-brand, .elementor .km-brand .smile::after,
  .elementor .km-hero-main::before { animation: none !important; }
}

/* ---------- 21. Photos : aucun filtre ----------
   Un filtre brightness/contrast/saturate avait ete essaye le 26/09 : il brulait
   les hautes lumieres (soleils couchants, jetees blanches). Les photos sont
   rendues telles quelles ; seul le voile, limite au texte, les assombrit. */
/* <<< km:base */

/* >>> km:footer */
.elementor .s-footer-contact-1 .fi{color:rgba(255,255,255,.45);font-size:.95rem;transition:color .2s} .elementor .s-footer-contact-1:hover .fi{color:#F7C948}
.elementor .s-footer-contact-2 .fi{color:rgba(255,255,255,.45);font-size:.95rem;transition:color .2s} .elementor .s-footer-contact-2:hover .fi{color:#F7C948}
.elementor .s-footer-contact-3 .fi{color:rgba(255,255,255,.45);font-size:.95rem;transition:color .2s} .elementor .s-footer-contact-3:hover .fi{color:#F7C948}
.elementor .s-footer-contact-4 .fi{color:rgba(255,255,255,.45);font-size:.95rem;transition:color .2s} .elementor .s-footer-contact-4:hover .fi{color:#F7C948}
.elementor .s-footer-contact-5 .fi{color:rgba(255,255,255,.45);font-size:.95rem;transition:color .2s} .elementor .s-footer-contact-5:hover .fi{color:#F7C948}
.elementor .s-footer-contact-6 .fi{color:rgba(255,255,255,.45);font-size:.95rem;transition:color .2s} .elementor .s-footer-contact-6:hover .fi{color:#F7C948}
.elementor .s-footer-prat-1 .fi{color:#F7C948;font-size:.95rem}
.elementor .s-footer-prat-2 .fi{color:#F7C948;font-size:.95rem}
.elementor .s-footer-prat-3 .fi{color:#F7C948;font-size:.95rem}
.elementor .s-footer-eco .fi{color:#087C79;font-size:1rem}
/* <<< km:footer */

/* >>> km:accueil */
.elementor .s-natura-li-1 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-2 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-3 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-4 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-avis-1-w::before{content:'';width:22px;height:3px;background:#D8232A;border-radius:3px;flex:none}
.elementor .s-avis-2-w::before{content:'';width:22px;height:3px;background:#D8232A;border-radius:3px;flex:none}
.elementor .s-avis-3-w::before{content:'';width:22px;height:3px;background:#D8232A;border-radius:3px;flex:none}
.elementor .s-avis-4-w::before{content:'';width:22px;height:3px;background:#D8232A;border-radius:3px;flex:none}
.elementor .s-contact::before{content:'';position:absolute;right:-180px;bottom:-220px;width:560px;height:560px;border-radius:50%;border:60px solid rgba(255,255,255,.08);pointer-events:none}
/* <<< km:accueil */

/* >>> km:base-sete-mediterranee */
.elementor .s-reservation-gift .fi{font-size:20px;color:#D8232A}
.elementor .s-natura-li-1 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-2 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-3 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-4 i{color:#087C79;font-size:1.05rem;margin-top:2px}
/* <<< km:base-sete-mediterranee */

/* >>> km:base-sete-lagune */
.elementor .s-reservation-gift .fi{font-size:20px;color:#D8232A}
.elementor .s-natura-li-1 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-2 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-3 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-4 i{color:#087C79;font-size:1.05rem;margin-top:2px}
/* <<< km:base-sete-lagune */

/* >>> km:base-balaruc-les-bains */
.elementor .s-reservation-gift .fi{font-size:20px;color:#D8232A}
.elementor .s-natura-li-1 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-2 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-3 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-4 i{color:#087C79;font-size:1.05rem;margin-top:2px}
/* <<< km:base-balaruc-les-bains */

/* >>> km:base-palavas-les-flots */
.elementor .s-reservation-gift .fi{font-size:20px;color:#D8232A}
.elementor .s-natura-li-1 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-2 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-3 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-4 i{color:#087C79;font-size:1.05rem;margin-top:2px}
/* <<< km:base-palavas-les-flots */

/* >>> km:eventsmed */
.elementor .s-devis::before{content:'';position:absolute;right:-180px;bottom:-220px;width:560px;height:560px;border-radius:50%;border:60px solid rgba(255,255,255,.08);pointer-events:none}
/* <<< km:eventsmed */

/* >>> km:em-beach-challenge */
.elementor .s-emp-goals-obj-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-devis::before{content:'';position:absolute;right:-180px;bottom:-220px;width:560px;height:560px;border-radius:50%;border:60px solid rgba(255,255,255,.08);pointer-events:none}
/* <<< km:em-beach-challenge */

/* >>> km:em-defi-voile */
.elementor .s-emp-goals-obj-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-devis::before{content:'';position:absolute;right:-180px;bottom:-220px;width:560px;height:560px;border-radius:50%;border:60px solid rgba(255,255,255,.08);pointer-events:none}
/* <<< km:em-defi-voile */

/* >>> km:em-defi-pirogue */
.elementor .s-emp-goals-obj-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-devis::before{content:'';position:absolute;right:-180px;bottom:-220px;width:560px;height:560px;border-radius:50%;border:60px solid rgba(255,255,255,.08);pointer-events:none}
/* <<< km:em-defi-pirogue */

/* >>> km:em-detente-balades-encadrees */
.elementor .s-emp-goals-obj-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-devis::before{content:'';position:absolute;right:-180px;bottom:-220px;width:560px;height:560px;border-radius:50%;border:60px solid rgba(255,255,255,.08);pointer-events:none}
/* <<< km:em-detente-balades-encadrees */

/* >>> km:em-voyage-au-centre-de-la-terre */
.elementor .s-emp-goals-obj-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-devis::before{content:'';position:absolute;right:-180px;bottom:-220px;width:560px;height:560px;border-radius:50%;border:60px solid rgba(255,255,255,.08);pointer-events:none}
/* <<< km:em-voyage-au-centre-de-la-terre */

/* >>> km:em-enquete-setoise */
.elementor .s-emp-goals-obj-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-devis::before{content:'';position:absolute;right:-180px;bottom:-220px;width:560px;height:560px;border-radius:50%;border:60px solid rgba(255,255,255,.08);pointer-events:none}
/* <<< km:em-enquete-setoise */

/* >>> km:em-tous-sur-le-meme-bateau */
.elementor .s-emp-goals-obj-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-devis::before{content:'';position:absolute;right:-180px;bottom:-220px;width:560px;height:560px;border-radius:50%;border:60px solid rgba(255,255,255,.08);pointer-events:none}
/* <<< km:em-tous-sur-le-meme-bateau */

/* >>> km:em-wine-making-academy */
.elementor .s-emp-goals-obj-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-devis::before{content:'';position:absolute;right:-180px;bottom:-220px;width:560px;height:560px;border-radius:50%;border:60px solid rgba(255,255,255,.08);pointer-events:none}
/* <<< km:em-wine-making-academy */

/* >>> km:em-koh-lanta-ushuaia */
.elementor .s-emp-goals-obj-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-obj-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-1 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-2 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-emp-goals-ben-3 .fi{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-devis::before{content:'';position:absolute;right:-180px;bottom:-220px;width:560px;height:560px;border-radius:50%;border:60px solid rgba(255,255,255,.08);pointer-events:none}
/* <<< km:em-koh-lanta-ushuaia */

/* >>> km:equipe */
.elementor .s-natura-li-1 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-2 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-3 i{color:#087C79;font-size:1.05rem;margin-top:2px}
.elementor .s-natura-li-4 i{color:#087C79;font-size:1.05rem;margin-top:2px}
/* <<< km:equipe */

/* >>> km:groupes-scolaires */
.elementor .s-devis::before{content:'';position:absolute;right:-180px;bottom:-220px;width:560px;height:560px;border-radius:50%;border:60px solid rgba(255,255,255,.08);pointer-events:none}
/* <<< km:groupes-scolaires */

/* >>> km:revendeurs */
.elementor .s-essai::before{content:'';position:absolute;right:-180px;bottom:-220px;width:560px;height:560px;border-radius:50%;border:60px solid rgba(255,255,255,.08);pointer-events:none}
/* <<< km:revendeurs */

/* >>> km:e404 */
/* ---------- Page 404 ---------- */
.elementor .km-404 {
  font-family: "Bricolage Grotesque", sans-serif; font-weight: 800;
  font-size: clamp(6rem, 22vw, 15rem); line-height: .82; letter-spacing: -.04em;
  color: transparent; -webkit-text-stroke: 2px rgba(12,26,58,.18);
  user-select: none; pointer-events: none;
}
@media (max-width: 600px) { .elementor .km-404 { -webkit-text-stroke-width: 1.5px; } }
/* <<< km:e404 */

/* >>> km:retours-2809 */
/* ---------- Retours client du 28/09 ---------- */

/* Icône GetYourGuide : absente de la fonte UIcons, dessinée en masque SVG
   pour prendre la couleur du texte comme les autres icônes. */
.elementor .fi-gyg::before {
  content: ""; display: block; width: 1em; height: 1em; background: currentColor;
  -webkit-mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-width='2.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.4 8.3H3.1v7.4h4.3v-3.5H5.2'/%3E%3Cpath d='M9.3 8.3l2.7 3.7 2.7-3.7M12 12v3.7'/%3E%3Cpath d='M20.9 8.3h-4.3v7.4h4.3v-3.5h-2.2'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;
          mask: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24'%3E%3Cg fill='none' stroke='%23000' stroke-width='2.3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M7.4 8.3H3.1v7.4h4.3v-3.5H5.2'/%3E%3Cpath d='M9.3 8.3l2.7 3.7 2.7-3.7M12 12v3.7'/%3E%3Cpath d='M20.9 8.3h-4.3v7.4h4.3v-3.5h-2.2'/%3E%3C/g%3E%3C/svg%3E") center / contain no-repeat;
}

/* Bouton 01 de l'accueil : même verre translucide que les bases 02 à 04,
   pastille jaune, bouton « Réserver une sortie » rouge. Il garde sa taille,
   son halo qui bat et son reflet. Sélecteurs doublés : la feuille des
   classes et les styles d'élément sont chargés après le CSS du Kit. */
.elementor .km-hero-main.km-hero-main {
  background: rgba(12, 26, 58, .42) !important;
  -webkit-backdrop-filter: blur(6px); backdrop-filter: blur(6px);
  border: 1px solid rgba(255, 255, 255, .22) !important;
  box-shadow: 0 18px 44px rgba(12, 26, 58, .28) !important;
  transition: background-color .25s ease, border-color .25s ease;
}
.elementor .km-hero-main.km-hero-main:hover {
  background: rgba(12, 26, 58, .52) !important; border-color: rgba(255, 255, 255, .36) !important;
}
.elementor .km-hero-main .s-hero-main-num.s-hero-main-num {
  background: #F7C948 !important; color: #0C1A3A !important;
}
.elementor .km-hero-main-cta.km-hero-main-cta {
  background: #D8232A !important; position: relative; overflow: hidden;
  box-shadow: 0 10px 24px rgba(216, 35, 42, .32);
  animation: km-pulse 3.2s ease-in-out infinite;
  transition: transform .22s cubic-bezier(.2,.8,.2,1), background-color .22s ease;
}
.elementor .km-hero-main-cta .s-hero-main-cta-t.s-hero-main-cta-t { color: #fff !important; }
.elementor .km-hero-main-cta.km-hero-main-cta svg { color: #fff; }
.elementor .km-hero-main-cta.km-hero-main-cta::after {
  content: ""; position: absolute; top: -20%; bottom: -20%; left: 0; width: 34%;
  background: linear-gradient(90deg, transparent, rgba(255, 255, 255, .35), transparent);
  animation: km-shine 5s ease-in-out infinite; pointer-events: none;
}
.elementor .km-hero-main:hover .km-hero-main-cta.km-hero-main-cta { background: #fff !important; }
.elementor .km-hero-main:hover .km-hero-main-cta .s-hero-main-cta-t.s-hero-main-cta-t,
.elementor .km-hero-main:hover .km-hero-main-cta.km-hero-main-cta svg { color: #D8232A !important; }

/* Téléphone : bouton 01 plus ramassé, environ deux fois la hauteur des
   autres bases, même habillage. */
@media (max-width: 767px) {
  .elementor .km-hero-main.km-hero-main { padding: 20px 16px !important; gap: 12px !important; align-items: flex-start; }
  .elementor .km-hero-main .s-hero-main-num.s-hero-main-num {
    width: 38px !important; height: 38px !important; min-width: 38px; font-size: 15px !important;
  }
  .elementor .km-hero-main .s-hero-main-txt { gap: 5px !important; }
  .elementor .km-hero-main .s-hero-main-k { font-size: 10px !important; letter-spacing: .06em !important; line-height: 1.3 !important; }
  .elementor .km-hero-main .s-hero-main-name { font-size: 21px !important; line-height: 1.1 !important; }
  .elementor .km-hero-main .s-hero-main-tag { font-size: 13px !important; line-height: 1.35 !important; }
  .elementor .km-hero-main-cta.km-hero-main-cta {
    margin-top: 6px !important; padding: 8px 14px !important; min-height: 0 !important; gap: 8px !important;
  }
  .elementor .km-hero-main-cta .s-hero-main-cta-t.s-hero-main-cta-t { font-size: 14px !important; }
  .elementor .km-hero-main-cta.km-hero-main-cta svg { width: 14px; height: 14px; }

  /* photo d'accueil : voile allégé, le texte garde son ombre portée */
  .elementor .s-hero-veil.s-hero-veil {
    background-image: linear-gradient(180deg, rgba(12,26,58,.30) 0%, rgba(12,26,58,.08) 38%, rgba(12,26,58,.10) 70%, rgba(12,26,58,.35) 100%) !important;
  }
}
/* photos plus claires : le surtitre jaune des bandeaux garde une ombre
   portée, comme le titre, pour rester lisible sur une zone claire */
.elementor [class*="-hero-kicker"] { text-shadow: 0 1px 8px rgba(12, 26, 58, .75); }

@media (prefers-reduced-motion: reduce) {
  .elementor .km-hero-main-cta.km-hero-main-cta,
  .elementor .km-hero-main-cta.km-hero-main-cta::after { animation: none !important; }
}
/* <<< km:retours-2809 */

/* >>> km:retours-2809b */
/* Pages EventsMed (séminaires) : la barre fixe « Réserver une sortie » du
   téléphone ne concerne pas les entreprises, on la retire. */
body.page-id-157 .elementor .km-cta-mobile.km-cta-mobile,
body.page-id-158 .elementor .km-cta-mobile.km-cta-mobile,
body.page-id-159 .elementor .km-cta-mobile.km-cta-mobile,
body.page-id-160 .elementor .km-cta-mobile.km-cta-mobile,
body.page-id-161 .elementor .km-cta-mobile.km-cta-mobile,
body.page-id-162 .elementor .km-cta-mobile.km-cta-mobile,
body.page-id-163 .elementor .km-cta-mobile.km-cta-mobile,
body.page-id-164 .elementor .km-cta-mobile.km-cta-mobile,
body.page-id-165 .elementor .km-cta-mobile.km-cta-mobile,
body.page-id-166 .elementor .km-cta-mobile.km-cta-mobile { display: none !important; }
/* <<< km:retours-2809b */

/* >>> km:bikemed */
/* Partenaire BikeMed, sous les formulaires de contact : toute la carte est
   cliquable, le logo (fond blanc d'origine) posé sur un encart blanc. */
.elementor [class*="-bikemed"][class^="s-"]:not([class*="-bikemed-"]),
.elementor .s-contact-bikemed, .elementor .s-ct-bikemed {
  display: flex; align-items: center; justify-content: space-between; gap: 18px; flex-wrap: wrap;
  margin-top: 22px; padding: 16px 18px; border-radius: 16px;
  background: #F4EEE2; border: 1px solid rgba(12,26,58,.08);
  color: #0C1A3A; text-decoration: none;
  transition: transform .22s cubic-bezier(.2,.8,.2,1), box-shadow .22s ease;
}
.elementor .s-contact-bikemed:hover, .elementor .s-ct-bikemed:hover {
  transform: translateY(-2px); box-shadow: 0 12px 28px rgba(12,26,58,.12);
}
.elementor .s-contact-bikemed-t, .elementor .s-ct-bikemed-t {
  flex: 1 1 220px; font-size: .98rem; line-height: 1.45; color: #0C1A3A;
}
.elementor .s-contact-bikemed-logo, .elementor .s-ct-bikemed-logo {
  flex: none; width: 150px; height: auto; padding: 6px 10px; background: #fff; border-radius: 12px;
}
/* <<< km:bikemed *//* End custom CSS */