/* Widget de contact flottant — reprise du BrokerCallWidget de equipelefrancois.ca (mêmes valeurs de charte).
   Variables locales au widget : aucune collision avec les styles du portail. */
.el-contact{--ink:#2d2f31;--black:#151616;--red:#e00000;--red-dark:#b50000;--white:#fff;--grey-100:#f6f6f6;--grey-200:#ececec;--grey-600:#767676;--space-1:.25rem;--space-2:.5rem;--space-3:.75rem;--space-4:1rem;--radius-sm:.375rem;--radius-md:.75rem;--radius-lg:1.25rem;--shadow-card:0 1px 1px rgba(21,22,22,.03),0 20px 40px -20px rgba(21,22,22,.28);--touch-target:2.75rem;--text-xs:clamp(.75rem,.72rem + .15vw,.8125rem);--text-sm:clamp(.875rem,.84rem + .18vw,.9375rem);
 position:fixed;right:max(var(--space-4),env(safe-area-inset-right));bottom:max(var(--space-4),env(safe-area-inset-bottom));z-index:90;display:flex;align-items:flex-end;pointer-events:none;font-family:var(--brand-sans,Urbanist,Arial,sans-serif);animation:el-contact-in .5s cubic-bezier(.22,1,.36,1) 1.2s both}
@media print{.el-contact{display:none}}
/* Espace connecté sur téléphone : le menu devient une barre fixe d environ 78 px en bas; la bulle passe au-dessus (comme sur le site pour la barre d'appel). */
@media(max-width:650px){body:has(.sidebar) .el-contact{bottom:calc(78px + var(--space-3) + env(safe-area-inset-bottom))}}
.el-contact__toggle{position:relative;pointer-events:auto;display:inline-flex;align-items:center;justify-content:center;width:3.5rem;height:3.5rem;padding:0;border-radius:50%;background:var(--black);color:var(--white);border:0;cursor:pointer;box-shadow:0 10px 24px -8px rgba(21,22,22,.55),0 2px 6px rgba(21,22,22,.2);transition:background-color .2s ease,transform .2s ease,box-shadow .2s ease}
.el-contact__toggle:hover{background:var(--red);transform:translateY(-2px)}
.el-contact__toggle:active{transform:translateY(0) scale(.97)}
.el-contact__toggle:focus-visible,.el-contact__close:focus-visible{outline:2px solid var(--red);outline-offset:3px}
.el-contact__icon{position:absolute;display:inline-flex;transition:opacity .2s ease,transform .25s cubic-bezier(.22,1,.36,1)}
.el-contact__icon--hidden{opacity:0;transform:rotate(-60deg) scale(.6)}
.el-contact__panel{position:absolute;right:0;bottom:calc(100% + var(--space-3));width:min(21.5rem,calc(100vw - 2 * var(--space-4)));background:var(--white);border:1px solid var(--grey-200);border-radius:var(--radius-lg);box-shadow:var(--shadow-card);overflow:hidden;transform-origin:bottom right;opacity:0;transform:translateY(10px) scale(.96);visibility:hidden;pointer-events:none;transition:opacity .2s ease,transform .25s cubic-bezier(.22,1,.36,1),visibility 0s linear .25s}
.el-contact__panel--open{opacity:1;transform:translateY(0) scale(1);visibility:visible;pointer-events:auto;transition-delay:0s}
.el-contact__header{display:flex;align-items:center;justify-content:space-between;gap:var(--space-3);padding:var(--space-3) var(--space-3) var(--space-3) var(--space-4);background:var(--black);color:var(--white);border-bottom:3px solid var(--red)}
.el-contact__team{font-weight:600;font-size:var(--text-sm);letter-spacing:.02em}
.el-contact__close{display:inline-flex;align-items:center;justify-content:center;width:var(--touch-target);height:var(--touch-target);margin:calc(-1 * var(--space-2)) 0;padding:0;border:0;border-radius:50%;background:transparent;color:rgba(255,255,255,.8);cursor:pointer;transition:color .18s ease,background-color .18s ease}
.el-contact__close:hover{color:var(--white);background:rgba(255,255,255,.12)}
.el-contact__body{display:flex;flex-direction:column;gap:var(--space-3);padding:var(--space-4)}
.el-contact__bubble{position:relative;margin:0 0 var(--space-1);padding:var(--space-3) var(--space-4);background:var(--grey-100);border-radius:var(--radius-md) var(--radius-md) var(--radius-md) var(--space-1);color:var(--ink);font-size:var(--text-sm);line-height:1.5}
.el-contact__action{display:inline-flex;align-items:center;justify-content:center;gap:var(--space-2);box-sizing:border-box;width:100%;min-height:var(--touch-target);padding:0 var(--space-4);border-radius:var(--radius-sm);font:600 var(--text-sm)/1.2 var(--brand-sans,Urbanist,Arial,sans-serif);letter-spacing:.01em;text-align:center;text-decoration:none;white-space:nowrap;transition:background-color .18s ease,color .18s ease,border-color .18s ease}
.el-contact__action--primary{background:var(--red);color:var(--white);border:1px solid var(--red)}
.el-contact__action--primary:hover{background:var(--red-dark);border-color:var(--red-dark)}
.el-contact__action--ghost{background:transparent;color:var(--ink);border:1px solid var(--ink)}
.el-contact__action--ghost:hover{background:var(--ink);color:var(--white)}
.el-contact__action:focus-visible{outline:2px solid var(--red);outline-offset:3px}
.el-contact__dial{margin:var(--space-1) 0 0;text-align:center;font-size:var(--text-xs);color:var(--grey-600)}
.el-contact__dial-number{color:var(--ink);font-weight:600;letter-spacing:.01em}
.el-contact__panel--open .el-contact__bubble,.el-contact__panel--open .el-contact__action,.el-contact__panel--open .el-contact__dial{animation:el-contact-item .35s cubic-bezier(.22,1,.36,1) both}
.el-contact__panel--open .el-contact__bubble{animation-delay:.05s}
.el-contact__panel--open .el-contact__action--primary{animation-delay:.12s}
.el-contact__panel--open .el-contact__action--ghost{animation-delay:.18s}
.el-contact__panel--open .el-contact__dial{animation-delay:.24s}
@keyframes el-contact-in{from{opacity:0;transform:translateY(12px)}to{opacity:1;transform:translateY(0)}}
@keyframes el-contact-item{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:translateY(0)}}
@media (prefers-reduced-motion:reduce){.el-contact,.el-contact__panel--open .el-contact__bubble,.el-contact__panel--open .el-contact__action,.el-contact__panel--open .el-contact__dial{animation:none}.el-contact__toggle,.el-contact__icon,.el-contact__panel,.el-contact__close{transition:none}}
