/* ==========================================================================
   Espace Dentaire du Forum — feuille de style du thème (v2.1.0)
   Conçu par Snazzy Digital Agency
   Les valeurs de mise en page sont portées en styles en ligne dans les gabarits
   (copie exacte des maquettes). Ce fichier contient : polices, base, survols,
   variables par palier (mobile < 640 / tablette 640–999 / bureau ≥ 1000), états d'animation.
   ========================================================================== */

/* ——— Polices General Sans ——— */
@font-face{font-family:'General Sans';src:url('../fonts/GeneralSans-200.woff2') format('woff2');font-weight:200;font-style:normal;font-display:swap}
@font-face{font-family:'General Sans';src:url('../fonts/GeneralSans-200i.woff2') format('woff2');font-weight:200;font-style:italic;font-display:swap}
@font-face{font-family:'General Sans';src:url('../fonts/GeneralSans-300.woff2') format('woff2');font-weight:300;font-style:normal;font-display:swap}
@font-face{font-family:'General Sans';src:url('../fonts/GeneralSans-300i.woff2') format('woff2');font-weight:300;font-style:italic;font-display:swap}
@font-face{font-family:'General Sans';src:url('../fonts/GeneralSans-400.woff2') format('woff2');font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:'General Sans';src:url('../fonts/GeneralSans-400i.woff2') format('woff2');font-weight:400;font-style:italic;font-display:swap}
@font-face{font-family:'General Sans';src:url('../fonts/GeneralSans-500.woff2') format('woff2');font-weight:500;font-style:normal;font-display:swap}
@font-face{font-family:'General Sans';src:url('../fonts/GeneralSans-500i.woff2') format('woff2');font-weight:500;font-style:italic;font-display:swap}
@font-face{font-family:'General Sans';src:url('../fonts/GeneralSans-600.woff2') format('woff2');font-weight:600;font-style:normal;font-display:swap}
@font-face{font-family:'General Sans';src:url('../fonts/GeneralSans-600i.woff2') format('woff2');font-weight:600;font-style:italic;font-display:swap}
@font-face{font-family:'General Sans';src:url('../fonts/GeneralSans-700.woff2') format('woff2');font-weight:700;font-style:normal;font-display:swap}

/* ——— Base (reprise de maquettes/site.css) ——— */
html,body{margin:0;background:#FBF8F2}
body{-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}
a{color:inherit;text-decoration:none}
a:hover{color:inherit}
button,input,select,textarea{font:inherit;color:inherit}
::selection{background:#9AA6E8;color:#0E1740}
[hidden]{display:none !important}

/* Accessibilité : focus clavier visible (absent des maquettes, demandé par le cahier des charges) */
a:focus-visible,button:focus-visible,[tabindex]:focus-visible{outline:2px solid #9AA6E8;outline-offset:3px}
.edf-skip{position:fixed;left:16px;top:-80px;z-index:200;padding:12px 18px;border-radius:999px;background:#0E1740;color:#FBF8F2;font:500 14px/1 'General Sans',sans-serif;transition:top .3s}
.edf-skip:focus{top:16px;color:#FBF8F2}
.screen-reader-text{border:0;clip:rect(1px,1px,1px,1px);clip-path:inset(50%);height:1px;margin:-1px;overflow:hidden;padding:0;position:absolute !important;width:1px;word-wrap:normal !important}

/* ——— Visibilité par palier (équivalent des sc-if wide / narrow / mob des maquettes) ——— */
@media (max-width:999.98px){.edf-desk{display:none !important}}
@media (min-width:1000px){.edf-narrow{display:none !important}}
@media (max-width:639.98px){.edf-notmob{display:none !important}}
@media (min-width:640px){.edf-mob{display:none !important}}

/* ——— Survols / focus (style-hover des maquettes, mêmes règles !important) ——— */
.h-d7d64c:hover{background:rgba(14,23,64,.07) !important}
.h-9e6084:hover{background:#0E1740 !important;color:#FBF8F2 !important}
.h-aad4c8:hover{color:#1A2A5E !important}
.h-8059b4:hover{transform:scale(1.07) !important}
.h-a2ea60:hover{font-style:italic !important;padding-left:.2em !important}
.h-eca0cb:hover{color:#0E1740 !important}
.h-0ae5ae:hover{gap:20px !important;background:#1A2A5E !important;color:#FBF8F2 !important}
.h-ce3a96:hover{background:color-mix(in srgb,#9AA6E8 30%,transparent) !important}
.h-94d5db:hover{transform:translateY(-4px) !important;color:#FBF8F2 !important}
.h-b5e610:hover{gap:20px !important;background:#FBF8F2 !important;color:#0E1740 !important}
.h-0cdf17:hover{gap:20px !important;color:#FBF8F2 !important}
.h-5987e4:hover{transform:scale(1.05) !important}
.h-feb58f:hover{gap:16px !important;color:#FBF8F2 !important}
.h-99a266:hover{flex-grow:2 !important;color:#FBF8F2 !important}
.h-9e3214:hover{padding-left:10px !important}
.h-2191cd:hover{gap:20px !important}
.h-74b3e2:hover{transform:rotate(-45deg) !important;background:#FBF8F2 !important}
.h-d2469a:hover{background:#0E1740 !important;color:#FBF8F2 !important;border-color:#0E1740 !important}
.h-3c35d9:hover{background:#FBF8F2 !important;transform:translateY(-4px) !important}
.h-c35cd5:hover{gap:20px !important;background:#9AA6E8 !important}
.h-d14969:hover{color:#FBF8F2 !important}
.h-24b266:hover{background:color-mix(in srgb,#9AA6E8 25%,transparent) !important}
.h-f62bc2:hover{transform:translateY(-3px) !important;color:#FBF8F2 !important}
.h-90f850:hover{transform:translateY(-3px) !important;color:#0E1740 !important}
.h-bbca67:hover{transform:translateY(-3px) !important;background:#F4EFE6 !important}
.h-f86460:hover{padding-left:12px !important}
.f-1e813f:focus{border-bottom-color:#0E1740 !important}
.h-18bdf3:hover{gap:20px !important;background:#1A2A5E !important}
.h-945cce:hover{background:#FBF8F2 !important;color:#0E1740 !important;transform:scale(1.06) !important}
.h-202a42:hover{background:color-mix(in srgb,currentColor 5%,transparent) !important}
.h-50d16f:hover{transform:translateY(-4px) !important;color:#0E1740 !important}
.h-394fa2:hover{flex-grow:2.8 !important}
.h-eb3bb2:hover{background:#FBF8F2 !important;gap:22px !important;color:#0E1740 !important}
.h-93c1ac:hover{text-decoration:underline !important}
.h-77235c:hover{gap:18px !important;background:#1A2A5E !important;color:#FBF8F2 !important}
.h-c0c83b:hover{background:var(--acc) !important}
.h-ff8570:hover{gap:18px !important;background:#FBF8F2 !important;color:#0E1740 !important}
.h-d681e3:hover{background:color-mix(in srgb,currentColor 10%,transparent) !important}

/* ——— Variables par palier (valeurs exactes des renderVals() des maquettes) ——— */
.edf-root{--edf-ctaMinH:86vh}
.edf-p-soin{--edf-heroImgH:clamp(360px,58vh,620px);--edf-wideH:clamp(300px,56vh,600px);--edf-docCols:minmax(0,.8fr) minmax(0,1fr);--edf-otherOvf:visible;--edf-otherPad:0;--edf-otherBleed:0;--edf-otherFlex:1 1 0px;--edf-otherH:clamp(420px,64vh,640px)}
.edf-p-soins{--edf-stackPos:sticky;--edf-stackTop:84px;--edf-cardH:min(calc(100vh - 120px), 680px);--edf-cardGap:60vh;--edf-imgBasis:420px;--edf-imgMinH:0px}
.edf-p-equipe{--edf-heroImgH:clamp(360px,58vh,620px);--edf-wideH:clamp(300px,62vh,640px);--edf-asidePos:sticky}
.edf-p-praticien{--edf-heroImgH:clamp(420px,66vh,700px);--edf-portraitAR:auto;--edf-stickyPos:sticky;--edf-portraitMax:520px;--edf-domImgH:clamp(280px,46vh,480px);--edf-otherW:calc((100% - 48px) / 5)}
.edf-p-contact{--edf-mapH:100%}
.edf-home{--edf-heroH:270vh;--edf-cvH:380vh;--edf-cvBigFs:clamp(40px,6.2vw,124px);--edf-photoH:clamp(360px,70vh,780px);--edf-ph1Basis:420px;--edf-ph2Basis:300px;--edf-stackWrap:wrap;--edf-stackOvf:visible;--edf-stackSnap:none;--edf-stackBleed:0;--edf-stackPad:0;--edf-cardFlex:1 1 0px;--edf-cardH:clamp(520px,82vh,880px);--edf-teamCardW:40vw;--edf-ctaMinH:100vh}

@media (max-width:999.98px){
  .edf-root{--edf-ctaMinH:auto}
  .edf-p-soin{--edf-heroImgH:52vw;--edf-wideH:56vw;--edf-otherOvf:auto;--edf-otherPad:clamp(12px,1.6vw,24px);--edf-otherBleed:calc(-1 * clamp(12px,1.6vw,24px));--edf-otherFlex:0 0 44vw;--edf-otherH:min(62vw,520px)}
  .edf-p-soins{--edf-stackPos:relative;--edf-stackTop:0px;--edf-cardH:auto;--edf-cardGap:12px;--edf-imgBasis:100%;--edf-imgMinH:40vw}
  .edf-p-equipe{--edf-heroImgH:52vw;--edf-wideH:58vw;--edf-asidePos:relative}
  .edf-p-praticien{--edf-heroImgH:0px;--edf-portraitAR:3 / 4;--edf-stickyPos:relative;--edf-portraitMax:420px;--edf-domImgH:58vw;--edf-otherW:34vw}
  .edf-p-contact{--edf-mapH:72vw}
  .edf-home{--edf-heroH:200vh;--edf-cvH:250vh;--edf-cvBigFs:9vw;--edf-photoH:48vw;--edf-ph1Basis:0px;--edf-ph2Basis:0px;--edf-stackWrap:nowrap;--edf-stackOvf:auto;--edf-stackSnap:x mandatory;--edf-stackBleed:calc(-1 * clamp(12px,1.6vw,24px));--edf-stackPad:clamp(12px,1.6vw,24px);--edf-cardFlex:0 0 46vw;--edf-cardH:min(68vw,600px);--edf-teamCardW:40vw;--edf-ctaMinH:auto}
}
@media (max-width:639.98px){
  .edf-p-soin{--edf-heroImgH:78vw;--edf-docCols:1fr;--edf-otherFlex:0 0 78vw;--edf-otherH:min(110vw,460px)}
  .edf-p-soins{--edf-imgMinH:58vw}
  .edf-p-equipe{--edf-heroImgH:78vw}
  .edf-p-praticien{--edf-portraitMax:min(100%,380px);--edf-otherW:62vw}
  .edf-home{--edf-heroH:175vh;--edf-photoH:62vw;--edf-ph1Basis:100%;--edf-ph2Basis:100%;--edf-cardFlex:0 0 80vw;--edf-cardH:min(122vw,520px);--edf-teamCardW:74vw}
}

/* ——— États initiaux tant que le JavaScript n'a pas pris la main (évite tout flash) ———
   La classe .edf-js est posée dans le <head> ; si les scripts ne chargent pas, elle est retirée. */
.edf-js [data-r="up"]{opacity:0;transform:translateY(36px)}
.edf-js [data-r="left"]{opacity:0;transform:translateX(-28px)}
.edf-js [data-r="mask"]{transform:translateY(108%)}
.edf-js [data-r="curtain"]{clip-path:inset(100% 0 0 0 round 18px)}
.edf-js [data-r="fade"]{opacity:0}
.edf-js [data-r="scale"]{opacity:0;transform:scale(1.18)}
.edf-js .edf-hd[data-unfold]{opacity:0} /* en-tête masqué avant son animation d'ouverture : accueil uniquement */
.edf-js .edf-home [data-ref="l1a"],.edf-js .edf-home [data-ref="l1b"],.edf-js .edf-home [data-ref="l2"]{opacity:0;translate:0 .5em}
.edf-js .edf-home [data-ref="slot"]{transform:scaleX(0)}

/* ——— Barre d'administration WordPress (utilisateurs connectés) ——— */
body.admin-bar .edf-hd{top:46px !important}
@media (max-width:782px){body.admin-bar .edf-hd{top:60px !important}}

/* ——— Formulaire de contact : erreurs et consentement (dans le style des champs) ——— */
.edf-err{font-size:13px;line-height:1.4;color:#0E1740}
.edf-invalid{border-bottom-color:#0E1740 !important}
.edf-consent input{appearance:none;-webkit-appearance:none;flex:none;width:18px;height:18px;margin:1px 0 0;border:1px solid rgba(14,23,64,.35);border-radius:5px;background:transparent;display:grid;place-content:center;cursor:pointer;transition:background .3s,border-color .3s}
.edf-consent input::after{content:'';width:9px;height:5px;border:solid #FBF8F2;border-width:0 0 1.5px 1.5px;transform:translateY(-1px) rotate(-45deg);opacity:0;transition:opacity .2s}
.edf-consent input:checked{background:#0E1740;border-color:#0E1740}
.edf-consent input:checked::after{opacity:1}
.edf-consent input:focus-visible{outline:2px solid #9AA6E8;outline-offset:3px}
[data-contact-form][aria-busy="true"] button[type="submit"]{opacity:.6;pointer-events:none}

/* ——— Mouvement réduit ——— */
@media (prefers-reduced-motion:reduce){
  *,*::before,*::after{scroll-behavior:auto !important}
  [data-marquee]{animation:none !important}
}

/* ——— Protection contre les styles génériques d'autres extensions (ne change rien au rendu des maquettes) ——— */
.edf-root :is(h1,h2,h3,h4,p,ul,ol,li,dl,dt,dd,figure,blockquote,nav,article,aside,section,footer,header,a,span,button,label,input,textarea),
.edf-home :is(h1,h2,h3,h4,p,ul,ol,li,dl,dt,dd,figure,blockquote,nav,article,aside,section,footer,header,a,span,button,label,input,textarea){font-family:inherit}
.edf-app{padding-top:clamp(84px,12vh,110px)}
