.elementor-kit-7{--e-global-color-primary:#6EC1E4;--e-global-color-secondary:#54595F;--e-global-color-text:#7A7A7A;--e-global-color-accent:#61CE70;--e-global-typography-primary-font-family:"Roboto";--e-global-typography-primary-font-weight:600;--e-global-typography-secondary-font-family:"Roboto Slab";--e-global-typography-secondary-font-weight:400;--e-global-typography-text-font-family:"Roboto";--e-global-typography-text-font-weight:400;--e-global-typography-accent-font-family:"Roboto";--e-global-typography-accent-font-weight:500;}.elementor-kit-7 e-page-transition{background-color:#FFBC7D;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1140px;}.e-con{--container-max-width:1140px;}.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);}@media(max-width:1024px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}
/* Start custom CSS *//* =====================================================================
   Delphine Sokolow — Ostéopathe D.O. · OPTION A « Onde » · CSS global v2
   À coller UNE FOIS dans Elementor › Réglages du site › CSS personnalisé
   (ou Apparence › Personnaliser › CSS additionnel).

   Règles d'architecture :
   - toutes les règles visent des classes « ds- » posées dans les templates (onglet Avancé) :
     aucun sélecteur global sur body / h1 / p / a, donc aucun impact sur Blocksy ailleurs ;
   - la mise en page est 100 % gérée par Elementor (containers Flex/Grid natifs) ; ce fichier
     n'ajoute que : ratios d'images, décors, micro-interactions, neutralisation ciblée des
     styles du thème, menu mobile ;
   - aucun position:absolute de mise en page, aucune marge négative, pas de !important ;
   - si ce fichier est absent, le site reste lisible et correctement mis en page.
   ===================================================================== */

:root{
  --ds-primary:#1C7F7C; --ds-light:#CFEBE8; --ds-dark:#135A58; --ds-green:#DDEFE2;
  --ds-pink:#F6E4E1; --ds-blue:#DFEDF5; --ds-alt:#F8F6F1; --ds-text:#1F3A3D;
  --ds-text2:#55696B; --ds-border:#DCE6E4; --ds-hover:#135E5C;
  --ds-ease:cubic-bezier(.22,.61,.36,1);
  --ds-ring-offset:clamp(7px,1.1vw,13px);
}

/* ---------- 1. Neutralisation ciblée des styles du thème (Blocksy) ---------- */
/* Paragraphes : rythme défini ici, plus de marge résiduelle sous le dernier paragraphe. */
.elementor-widget-text-editor.ds-text p{margin:0 0 .85em}
.elementor-widget-text-editor.ds-text p:last-child,
.elementor-widget-text-editor.ds-text > :last-child{margin-bottom:0}
.elementor-widget-text-editor.ds-text ul{margin:0 0 .85em;padding-left:1.2em}
.elementor-widget-text-editor.ds-text strong{font-weight:700;color:inherit}
/* Titres : aucune marge héritée (y compris dans un éventuel .entry-content). */
.elementor-widget-heading.ds-title .elementor-heading-title,
.elementor-widget-heading.ds-eyebrow .elementor-heading-title{margin:0}
.ds-title .elementor-heading-title a{color:inherit}
.ds-faq .e-n-accordion-item-title-text{margin:0}
/* Formulaire : le thème impose hauteur / casse / ombres aux champs et au bouton. */
.ds-form .elementor-field-group .elementor-field-textual{height:auto;min-height:52px;box-shadow:none;line-height:1.4}
.ds-form .elementor-field-group textarea.elementor-field-textual{min-height:140px}
.ds-form .elementor-button{min-height:0;text-transform:none;box-shadow:none}
.ds-form .elementor-field-type-acceptance .elementor-field-subgroup label{font-size:13px;line-height:1.5;color:var(--ds-text2)}
.ds-form .elementor-field-type-acceptance input{accent-color:var(--ds-primary);width:18px;height:18px;margin:2px 10px 0 0}
.ds-form .elementor-field-group .elementor-field-textual:focus{border-color:var(--ds-primary);box-shadow:0 0 0 3px var(--ds-light);outline:0}
.ds-form a{color:var(--ds-dark);text-decoration:underline;text-underline-offset:3px}
.ds-form .elementor-message{border-radius:10px;padding:14px 16px;margin-top:12px}
.ds-form .elementor-message-success{background:var(--ds-green)}
.ds-form .elementor-message-danger{background:var(--ds-pink)}
/* Images : le thème force height:auto — on garde la main sur le ratio. */
.ds-img img{display:block;width:100%;height:auto;margin-inline:auto;object-fit:cover}

/* ---------- 2. Typographie ---------- */
.ds-title em{font-style:italic;color:var(--ds-primary)}
.ds-title .elementor-heading-title{text-wrap:balance}
h1.elementor-heading-title em{white-space:nowrap}
.ds-eyebrow .elementor-heading-title{display:inline-flex;align-items:center;gap:12px}
.ds-eyebrow .elementor-heading-title::before{content:"";width:28px;height:1.5px;background:currentColor;opacity:.7;flex:none}
.ds-eyebrow.ds-center .elementor-heading-title{justify-content:center}

/* ---------- 3. Images : ratios fiables, sans hauteur fixe ---------- */
.ds-img--circle img{aspect-ratio:1/1}
.ds-img--arch img{aspect-ratio:var(--ds-ratio,4/5)}
.ds-ratio-square{--ds-ratio:1/1}
.ds-img--rounded img{aspect-ratio:var(--ds-ratio,4/3)}
.ds-ratio-wide{--ds-ratio:16/10}
.ds-ratio-tall{--ds-ratio:4/5}
/* Anneau décalé (signature) : dessiné sur le widget, qui épouse exactement l'image. */
.ds-ring{position:relative;isolation:isolate}
.ds-ring::after{content:"";position:absolute;inset:0;border:2px solid var(--ds-ring-c,#95D0CA);border-radius:50%;
  transform:translate(var(--ds-ring-offset),calc(var(--ds-ring-offset)*.85));z-index:-1;pointer-events:none;
  transition:transform .6s var(--ds-ease)}
.ds-img--arch.ds-ring::after{border-radius:999px 999px 28px 28px}
.ds-ring--blue{--ds-ring-c:#A9CCE0}.ds-ring--green{--ds-ring-c:#A7D2B4}.ds-ring--pink{--ds-ring-c:#E5BDB6}
.ds-ring--teal{--ds-ring-c:#95D0CA}.ds-ring--adult{--ds-ring-c:#7FBFC1}
.ds-zoom{overflow:hidden}
.ds-zoom img{transition:transform 1.2s var(--ds-ease)}
.ds-zoom:hover img{transform:scale(1.03)}

/* ---------- 4. Superpositions (portrait + badge + petit cercle) ----------
   Le container est un Grid natif 1 cellule : tous ses enfants partagent la même case.
   Ces classes ne font que les placer dans la case (aucune position absolue). */
.ds-place-start{justify-self:start}
.ds-place-end{justify-self:end}
.ds-badge,.ds-mini{position:relative;z-index:2}
.ds-badge{background:#fff;border-radius:16px;box-shadow:0 18px 40px -24px rgba(19,90,88,.45)}

/* ---------- 5. Cercles patientèles ---------- */
.ds-orb{text-decoration:none;transition:transform .6s var(--ds-ease)}
.ds-orb:hover,.ds-orb:focus-visible{transform:translateY(-6px)}
.ds-orb:hover .ds-ring::after{transform:translate(4px,4px)}
.ds-orb .ds-img img{transition:transform 1.1s var(--ds-ease)}
.ds-orb:hover .ds-img img{transform:scale(1.035)}
.ds-orb .ds-more .elementor-heading-title{transition:letter-spacing .3s ease}
.ds-orb:hover .ds-more .elementor-heading-title{letter-spacing:.2em}
.ds-orb:focus-visible{outline:2px solid var(--ds-dark);outline-offset:6px;border-radius:16px}
@keyframes dsFloat{0%,100%{translate:0 0}50%{translate:0 -6px}}
@media (min-width:1025px){
  .ds-orbs .ds-orb .ds-img{animation:dsFloat 7s ease-in-out infinite}
  .ds-orbs .ds-orb:nth-child(2) .ds-img{animation-delay:-1.4s}
  .ds-orbs .ds-orb:nth-child(3) .ds-img{animation-delay:-2.8s}
  .ds-orbs .ds-orb:nth-child(4) .ds-img{animation-delay:-4.2s}
  .ds-orbs .ds-orb:nth-child(5) .ds-img{animation-delay:-5.6s}
}
/* Mobile : défilement horizontal aimanté (la disposition — une ligne, largeur des cercles — est réglée dans Elementor). */
@media (max-width:767px){
  .ds-orbs{overflow-x:auto;overscroll-behavior-x:contain;scroll-snap-type:x mandatory;scroll-padding-inline:4px;scrollbar-width:none}
  .ds-orbs::-webkit-scrollbar{display:none}
  .ds-orbs>.ds-orb{scroll-snap-align:start}
}

/* ---------- 6. Étapes numérotées (le trait relie les pastilles, sans cote fixe) ---------- */
.ds-num .elementor-heading-title{display:flex;align-items:center;justify-content:center;width:clamp(48px,4.4vw,60px);aspect-ratio:1;
  border-radius:50%;border:1.5px solid var(--ds-primary);background:#fff}
.ds-num-fill .elementor-heading-title{background:var(--ds-primary)}
.ds-step:not(:last-child) .ds-step-rail::after{content:"";flex:1 1 auto;width:0;min-height:24px;margin-top:10px;border-left:1.5px dashed var(--ds-light)}

/* ---------- 7. Frise chronologique ---------- */
.ds-tl-axis{position:relative}
.ds-tl-axis::after{content:"";position:absolute;top:0;bottom:0;left:50%;border-left:1.5px solid var(--ds-light);z-index:0}
.ds-tl-axis>*{position:relative;z-index:1}
.ds-tl:first-child .ds-tl-axis::after{top:34px}
.ds-tl:last-child .ds-tl-axis::after{bottom:auto;height:34px}

/* ---------- 8. Cartes, puces, chiffres ---------- */
.ds-card{transition:border-color .3s ease,transform .5s var(--ds-ease)}
.ds-card:hover{border-color:var(--ds-primary);transform:translateY(-3px)}
.ds-tag .elementor-heading-title{display:inline-block;padding:9px 14px;border-radius:8px;background:#fff;border:1px solid var(--ds-border)}
.ds-anchors .elementor-icon-list-item a{background:#fff;border:1px solid var(--ds-border);border-radius:999px;padding:9px 16px;transition:border-color .25s ease}
.ds-anchors .elementor-icon-list-item a:hover{border-color:var(--ds-primary)}
.ds-anchors .elementor-icon-list-icon{order:2;padding:0 0 0 8px}
.ds-stat{border-left:1px solid var(--ds-border);padding-left:clamp(14px,2vw,24px)}
.ds-price .elementor-heading-title{font-variant-numeric:lining-nums}

/* ---------- 9. Décors (dessinés en arrière-plan : aucune incidence sur la mise en page) ---------- */
.ds-bubbles{background-image:
   url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='49.5' fill='none' stroke='%23CFEBE8' stroke-width='.5' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E"),
   radial-gradient(circle,#DFEDF5 0 69%,transparent 70%);
  background-repeat:no-repeat;
  background-size:clamp(220px,32vw,420px) clamp(220px,32vw,420px),clamp(80px,9vw,130px) clamp(80px,9vw,130px);
  background-position:right -6% top -12%,left -3% bottom -30%}
.ds-cta-final{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='49.5' fill='none' stroke='%23FFFFFF' stroke-width='.6' vector-effect='non-scaling-stroke'/%3E%3Ccircle cx='50' cy='50' r='36' fill='none' stroke='%23FFFFFF' stroke-width='.6' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-size:clamp(260px,36vw,520px) clamp(260px,36vw,520px);background-position:right -8% top -40%}
.ds-blob-pink{background-image:radial-gradient(closest-side,rgba(246,228,225,.85) 0 97%,transparent 100%);background-repeat:no-repeat;background-position:center;background-size:contain}
.ds-price-card,.ds-rdv-card{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='49.5' fill='none' stroke='%231C7F7C' stroke-opacity='.25' stroke-width='.6' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-size:280px 280px;background-position:right -130px bottom -150px}
.ds-rdv-card{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 100 100'%3E%3Ccircle cx='50' cy='50' r='49.5' fill='none' stroke='%23FFFFFF' stroke-opacity='.25' stroke-width='.6' vector-effect='non-scaling-stroke'/%3E%3Ccircle cx='50' cy='50' r='36' fill='none' stroke='%23FFFFFF' stroke-opacity='.12' stroke-width='.6' vector-effect='non-scaling-stroke'/%3E%3C/svg%3E")}
.ds-hero-card{-webkit-backdrop-filter:blur(12px) saturate(1.3);backdrop-filter:blur(12px) saturate(1.3);box-shadow:0 18px 40px -24px rgba(19,90,88,.45)}
.ds-hero-badges .elementor-icon-list-item{background:rgba(255,255,255,.75);border-radius:999px;padding:7px 14px}

/* Ligne d'eau du Hero : diviseur natif Elementor (motif « courbe »), révélé au chargement. */
@keyframes dsDraw{from{clip-path:inset(0 100% 0 0)}to{clip-path:inset(0 0 0 0)}}
.ds-wave .elementor-divider-separator{animation:dsDraw 1.8s var(--ds-ease) .4s both}

/* ---------- 10a. Animations d'entrée (Elementor) : déplacement réduit à 24 px, sans effet sur la mise en page ----------
   Elles sont désactivées sur mobile directement dans les réglages de chaque élément. */
@keyframes dsFadeUp{from{opacity:0;transform:translate3d(0,24px,0)}to{opacity:1;transform:none}}
.elementor-element.animated.fadeInUp{animation-name:dsFadeUp}
.elementor-element.animated.animated-slow{animation-duration:.9s;animation-timing-function:var(--ds-ease)}

/* ---------- 10. Boutons ---------- */
.ds-btn .elementor-button{transition:background-color .25s ease,color .25s ease,border-color .25s ease}
.ds-btn .elementor-button-icon{transition:transform .25s var(--ds-ease)}
.ds-btn .elementor-button:hover .elementor-button-icon{transform:translateX(4px)}
.ds-btn .elementor-button:focus-visible{outline:2px solid var(--ds-dark);outline-offset:3px}

/* ---------- 11. FAQ (accordéon natif) ---------- */
.ds-faq .e-n-accordion-item-title-icon{width:32px;height:32px;border-radius:50%;border:1.5px solid var(--ds-primary);display:flex;align-items:center;justify-content:center;flex:none;transition:background-color .3s ease}
.ds-faq .e-n-accordion-item[open] .e-n-accordion-item-title-icon{background:var(--ds-primary)}
.ds-faq .e-n-accordion-item:first-child>.e-n-accordion-item-title{border-top:1px solid var(--ds-border)}
.ds-map iframe{border-radius:20px;filter:saturate(.65)}

/* ---------- 12. Header ---------- */
.ds-header{transition:padding .35s var(--ds-ease),box-shadow .35s ease}
.ds-header.elementor-sticky--effects{box-shadow:0 1px 0 var(--ds-border),0 10px 30px -24px rgba(19,90,88,.35)}
.ds-nav .elementor-nav-menu--main .elementor-item{white-space:nowrap}
/* Bouton RDV : libellé complet à partir de 1280 px, libellé court en dessous. */
.ds-header .ds-only-xl{display:none}
@media (min-width:1280px){.ds-header .ds-only-xl{display:block}.ds-header .ds-below-xl{display:none}}
@media (min-width:1025px) and (max-width:1199px),(max-width:359px){.ds-header .ds-tel{display:none}}
/* Menu mobile (widget Menu d'Elementor Pro, ouvert sous le header, pleine largeur). */
.ds-nav.elementor-widget .elementor-menu-toggle.elementor-active+.elementor-nav-menu__container{max-height:calc(100dvh - 72px);overflow-y:auto;box-shadow:0 30px 40px -30px rgba(19,90,88,.35)}
.ds-nav .elementor-nav-menu--dropdown{border-top:1px solid var(--ds-border);padding:8px 0 24px}
.ds-nav .elementor-nav-menu--dropdown .elementor-item{border-bottom:1px solid var(--ds-border)}
/* Liens « Prendre rendez-vous » / « Appeler » ajoutés au menu WordPress (classes ds-menu-cta / ds-menu-tel) :
   masqués sur ordinateur, transformés en boutons dans le menu mobile. Sélecteurs plus précis que ceux du widget. */
.elementor .ds-nav.elementor-widget .elementor-nav-menu--main li.ds-menu-cta,
.elementor .ds-nav.elementor-widget .elementor-nav-menu--main li.ds-menu-tel{display:none}
.elementor .ds-nav.elementor-widget .elementor-nav-menu--dropdown li.ds-menu-cta>a.elementor-item,
.elementor .ds-nav.elementor-widget .elementor-nav-menu--dropdown li.ds-menu-tel>a.elementor-item{justify-content:center;margin:16px 24px 0;border-radius:10px;border:2px solid var(--ds-primary);font-family:"Nunito Sans",sans-serif;font-size:17px;font-weight:600;color:var(--ds-dark)}
.elementor .ds-nav.elementor-widget .elementor-nav-menu--dropdown li.ds-menu-cta>a.elementor-item{background:var(--ds-primary);color:#fff}

/* ---------- 13. Footer : vague supérieure et filigrane dessinés par le footer lui-même ---------- */
.ds-footer{background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 64 64' fill='none' stroke='%23FFFFFF' stroke-opacity='.09' stroke-width='.7'%3E%3Ccircle cx='32' cy='32' r='26'/%3E%3Cpath d='M7 38C17 30 24 46 32 38S47 30 57 38' stroke-linecap='round'/%3E%3Ccircle cx='41' cy='22' r='1.4' fill='%23FFFFFF' fill-opacity='.09' stroke='none'/%3E%3C/svg%3E");
  background-repeat:no-repeat;background-size:clamp(240px,34vw,480px) clamp(240px,34vw,480px);background-position:right -10% bottom -75%}
.ds-footer::after{content:"";position:absolute;left:0;right:0;bottom:calc(100% - 1px);height:clamp(24px,4vw,56px);pointer-events:none;
  background:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 1000 100' preserveAspectRatio='none'%3E%3Cpath fill='%23135A58' d='M0 100V58C120 28 250 18 380 40S640 92 780 70 940 22 1000 30V100Z'/%3E%3C/svg%3E") center bottom/100% 100% no-repeat}
.ds-footer .ds-list a:hover .elementor-icon-list-text{text-decoration:underline;text-underline-offset:5px}

/* ---------- 14. Mouvement réduit ---------- */
@media (prefers-reduced-motion:reduce){
  .ds-orbs .ds-orb .ds-img,.ds-wave .elementor-divider-separator{animation:none}
  .ds-orb,.ds-orb *,.ds-card,.ds-zoom img,.ds-ring::after,.ds-btn .elementor-button,.ds-btn .elementor-button-icon{transition:none}
  .ds-orb:hover,.ds-card:hover{transform:none}
  .elementor-invisible{visibility:visible}
  .elementor-element.animated{animation:none}
}/* End custom CSS */