/* Éléments COMMUNS aux 10 modèles. Ne dépend que des jetons T-2 du modèle :
   --site-primary --site-accent --site-bg --site-surface --site-text --site-muted
   --site-radius --site-font-heading --site-font-body (+ --site-on-primary, défaut #fff). */
.mq-banner{display:block;position:relative;z-index:50;margin:0;padding:.375rem 1rem;background:#111;color:#fff;font:600 .875rem/1.4 system-ui,sans-serif;text-align:center;letter-spacing:.02em}
.visually-hidden{position:absolute!important;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0}
.skip-link{position:absolute;left:-999px;top:.5rem;z-index:60;padding:.75rem 1rem;background:var(--site-primary);color:var(--site-on-primary,#fff);border-radius:var(--site-radius);text-decoration:none}
.skip-link:focus{left:.5rem}
.powered{font-size:.875rem;color:var(--site-muted)}
.powered a{color:inherit;text-decoration:underline;text-underline-offset:2px;display:inline-block;padding:.75rem 0;min-height:44px}
[hidden]{display:none!important}
/* Curseur avant / après */
.ba{margin:0}
.ba-frame{--pos:50%;position:relative;overflow:hidden;border-radius:var(--site-radius);aspect-ratio:3/2;touch-action:pan-y;cursor:ew-resize;user-select:none;-webkit-user-select:none;background:var(--site-surface)}
.ba-frame img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;pointer-events:none}
.ba-after{clip-path:inset(0 0 0 var(--pos))}
.ba-line{position:absolute;top:0;bottom:0;left:var(--pos);width:3px;margin-left:-1.5px;background:#fff;box-shadow:0 0 0 1px rgba(0,0,0,.35);pointer-events:none}
.ba-line::after{content:"";position:absolute;top:50%;left:50%;width:44px;height:44px;margin:-22px 0 0 -22px;border-radius:50%;background:#fff;box-shadow:0 1px 4px rgba(0,0,0,.4);
  background-image:linear-gradient(90deg,transparent 13px,#222 13px,#222 15px,transparent 15px,transparent 29px,#222 29px,#222 31px,transparent 31px)}
.ba-tag{position:absolute;top:.75rem;padding:.25rem .5rem;border-radius:4px;background:rgba(17,17,17,.82);color:#fff;font:600 .875rem/1.3 system-ui,sans-serif;pointer-events:none}
.ba-tag-before{left:.75rem;top:auto;bottom:.75rem}
.ba-tag-after{right:.75rem}
.ba-range{position:absolute;inset:0;touch-action:pan-y;width:100%;height:100%;margin:0;opacity:0;cursor:ew-resize}
.ba-frame:has(.ba-range:focus-visible){outline:3px solid var(--site-accent);outline-offset:3px}
.ba figcaption{margin-top:.5rem;font-size:.875rem;color:var(--site-muted)}
.ba figcaption strong{color:var(--site-text)}
/* Interaction (reglages communs aux 30 modeles ; !important seulement sur les planchers tactiles) */
a,button,input,select,textarea,label,summary{touch-action:manipulation}
input,select,textarea{font-size:max(1rem,16px)}
select,input:not([type=checkbox]):not([type=radio]):not([type=range]){min-height:48px}
/* Liens dans un texte courant : soulignes (WCAG 1.4.1), pas la navigation ni les boutons */
:where(p,dd,figcaption,blockquote) a:not(.btn):not([class*="btn"]){text-decoration-line:underline;text-decoration-thickness:max(1px,.07em);text-underline-offset:.2em}
a:not([class*="btn"]):hover{text-decoration-line:underline;text-decoration-thickness:2px}
a,button,summary,.card{transition:color .15s ease,background-color .15s ease,border-color .15s ease,box-shadow .15s ease,filter .15s ease,text-decoration-color .15s ease}
:where(.btn,button,[type=submit]):hover{filter:brightness(1.1)}
:where(.card):hover{box-shadow:0 0 0 2px var(--site-muted)}
:focus-visible{outline:3px solid var(--site-accent,#005fcc);outline-offset:3px}
/* Cibles tactiles : 48 x 48 px au minimum (deux cibles voisines se touchent ou sont a 8 px au moins) */
:is(nav,header,footer) a,.card-link,.card-title a,a[href^="tel:"],a[href^="mailto:"],.btn,button,summary,input[type=submit]{display:inline-flex;align-items:center;min-height:48px!important;min-width:48px!important}
/* Listes de definitions a plat (dt/dd directs, produites par build/post.cjs) : libelle a gauche, valeur a droite */
dl.dl-flat{display:grid;grid-template-columns:fit-content(45%) minmax(0,1fr);gap:0 1rem;margin-left:0;margin-right:0}
dl.dl-flat>dt,dl.dl-flat>dd{margin:0;padding:.5rem 0;overflow-wrap:anywhere;border-bottom:1px solid color-mix(in srgb,currentColor 22%,transparent)}
dl.dl-flat>dt{font-weight:600}
footer dl.dl-flat>dt,footer dl.dl-flat>dd{padding:.25rem 0;border-bottom:0}
/* citation dont le <p> est devenu <div> (build/post.cjs) : meme marge qu'un paragraphe */
:where(blockquote)>:where(div){margin:0 0 1em}
/* boutons cote a cote : 12 px entre les deux */
.btn-row{display:flex;flex-wrap:wrap;gap:.75rem}
/* lien seul sous une liste de cartes */
.more-link{margin:1.25rem 0 0}
.more-link>a{display:inline-flex;align-items:center;min-height:48px}
/* contenu d'un <details> ferme : aucune boite de mise en page (sinon les champs masques comptent comme cibles tactiles) */
details:not([open])>:not(summary){display:none}
/* FAQ de l'agence (details natifs, sans JS) */
.faq{margin:3rem 0}
.faq-list{display:grid;gap:.5rem;max-width:48rem}
.faq-item{border:1px solid var(--site-muted);border-radius:var(--site-radius);background:var(--site-surface)}
.faq-item h3{margin:0;font:inherit;letter-spacing:inherit}
.faq-item>summary{display:flex;justify-content:space-between;gap:1rem;padding:.5rem 1rem;font-weight:600;cursor:pointer}
.faq-item>summary::after{content:"+";flex:none;font-size:1.25rem;line-height:1}
.faq-item[open]>summary::after{content:"\2212"}
.faq-item p{margin:0;padding:0 1rem 1rem;max-width:60ch}
@media (prefers-reduced-motion:reduce){*,*::before,*::after{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
