/* P49 — contrat commun, chargé après les feuilles historiques et dédiées.
   Les anciennes déclarations restent conservées ; cette feuille fait autorité.
   Aucun mouvement d'entrée ni transition de couleur ou de géométrie. */*,*::before,*::after{transition:none !important;animation:none !important}@view-transition{navigation:none}::view-transition-old(root),::view-transition-new(root){animation:none}html{scroll-behavior:auto}/* Le signal tactile est :active ; éviter le flash bleu du navigateur. */:is(a,button,input,textarea,select,summary,audio,video,label){-webkit-tap-highlight-color:transparent}/* Éviter le flash de la navigation complète pendant le chargement du JS.
   Le repli sans script continue d'afficher les liens et masque le burger. */@media (max-width: 900px) and (scripting: enabled){body .entete:not(.entete--menu-pret) #nav-principal{display:none}body .entete:not(.entete--menu-pret) .burger{display:flex}}/* Le contenu est lisible dès la première peinture, également sans JavaScript. */.monte,[data-rv],.ligne__in,.hero__marque,.hero h1 .mot,.hero--wow h1 .car,.mt,h2 .mt2,.trait,.bloc h2::before{opacity:1 !important;transform:none !important;filter:none !important;will-change:auto}.entete,.cinq,body.page-sortie{transform:none !important}body.page-sortie{opacity:1}.hero h1{clip-path:none !important;transform:none !important;filter:none !important;opacity:1 !important}.hero__sous,.hero__actions,.chiffres{opacity:1 !important}.projet__media img,.entree-projet__media img,.ecran__vue img,.ecran__vue .film{transform:none !important}.pied:hover .pied__marque{letter-spacing:normal}.carte,.projet{transform-style:flat}.carte::after,.projet::after,.hero--wow .bouton::after{content:none}.ecran__indice{opacity:1;transform:none}/* Un seul vocabulaire : l'encre et l'ivoire pour les contrôles ; le vert
   déjà validé pour le focus. Le liseré ivoire garantit le focus sur fond sombre. */body :focus-visible,body .apercu-barre :focus-visible{outline:2px solid #1f4d33 !important;outline-offset:2px !important;box-shadow:0 0 0 6px #f4f1ea !important}/* P64y : la marque animee est un bouton de lecture ; un clic ne doit pas
   laisser de cadre. Le contour reste reserve au focus clavier. */body .entete a.marque.marque--clic:focus-visible{outline:none !important;box-shadow:none !important}video[controls]:focus-within{outline:2px solid #1f4d33;outline-offset:2px}.rdv-jour input:focus-visible + span,.rdv-heure input:focus-visible + span{outline:2px solid #1f4d33 !important;outline-offset:2px !important;box-shadow:0 0 0 6px #f4f1ea !important}/* Les spans épousent le texte, même dans une cible mobile pleine largeur.
   Sans JS, le soulignement natif des liens reste disponible. */.interaction__texte{position:relative;display:inline-block}.interaction__texte::after{content:'';position:absolute;inset:auto 0 0;height:1px;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform 180ms ease-out !important}a:has(.interaction__texte){text-decoration:none}.lien{border-bottom:0}.projet__lien{border-bottom:0}.nav__liens a::after,.lien::after,.hero--wow .lien::after,.pied a::after{content:none}:is(a,button):focus-visible .interaction__texte::after,:is(a,button):active .interaction__texte::after,a[aria-current="page"] .interaction__texte::after{transform:scaleX(1)}:is(a,button) .interaction__fleche{display:inline-block;white-space:pre;transition:transform 180ms ease-out !important}/* Repos partagé avec le survol tactile : aucun état collant au tap. */body :is(.bouton,.nav__cta,.dv-button),body :is(.bouton,.nav__cta,.dv-button):is(:hover,:focus-visible){background:#111110;color:#f4f1ea;border-color:#111110;transform:none;will-change:auto}body :is(.dv-button-secondary,.vocal button,.rdv-fleche),body :is(.dv-button-secondary,.vocal button,.rdv-fleche):hover{background:#f4f1ea;color:#111110;border-color:#111110}body :is(a.projet,a.entree-projet,a.carte),body :is(a.projet,a.entree-projet,a.carte):is(:hover,:focus-visible){background:var(--ivoire);transform:none;box-shadow:none;transition:transform 180ms ease-out !important}body :is(a.projet,a.entree-projet,a.carte):focus-visible{box-shadow:0 0 0 6px #f4f1ea !important}.nav a,.nav a:is(:hover,:focus-visible){color:var(--encre)}.nav__reseaux a,.nav__reseaux a:is(:hover,:focus-visible){color:#111110;opacity:1}.langues__lien span,.langues__lien:is(:hover,:focus-visible) span{color:#111110;opacity:1}.retour-haut,.retour-haut:is(:hover,:focus-visible){background:#f4f1ea;color:#111110}.dv-choice,.dv-option,.dv-choice:hover,.dv-option:hover{background:transparent}.dv-choice:has(:checked),.dv-option:has(:checked){background:var(--ivoire-2)}.rdv-jour > span,.rdv-heure > span,.rdv-jour > span:hover,.rdv-heure > span:hover{border-color:var(--filet);background:transparent}.rdv-jour input:checked + span,.rdv-heure input:checked + span{background:#111110;color:#f4f1ea;border-color:#111110}.rdv-champ input:hover,.rdv-champ textarea:hover{border-bottom-color:var(--filet)}.rdv-champ input:focus,.rdv-champ textarea:focus{border-bottom-color:#111110}.ecran__barre,.ecran:hover .ecran__barre{background:#f4f1ea}.jours li:hover{background:transparent}.jours li:hover::after{transform:scaleX(0)}.chiffres div:hover dt{color:inherit}.apercu-barre a:hover{border-bottom-color:transparent}.apercu-barre a.actif{border-bottom-color:#f4f1ea}/* Tous les contrôles ont un état pressé sans déplacer leur cible.
   Le contour ne remplace pas le focus clavier. Les états disabled restent natifs. */body :is(a[href],button,input,textarea,select,summary,audio[controls],video[controls],[role="button"]):not(:disabled):active,body :is(.dv-choice,.dv-option,.rdv-jour,.rdv-heure):active{outline:2px solid #111110;outline-offset:2px;box-shadow:0 0 0 6px #f4f1ea}body :is(.bouton,.nav__cta,.dv-button,.vocal button,.rdv-fleche):not(:disabled):active{background:#f4f1ea;color:#111110;border-color:#111110}/* P64z : la marque animee est un bouton de lecture, pas un controle a etat
   presse : ni contour noir a l'appui, ni halo. Le focus clavier est conserve. */body header.entete a.marque[href]:active,body header.entete a.marque[href]:focus-visible{outline:none !important;box-shadow:none !important}body :is(a.projet,a.entree-projet,a.carte):active{transform:none}@media (hover: hover) and (pointer: fine){:is(a,button):hover .interaction__texte::after{transform:scaleX(1)}:is(a,button):hover .interaction__fleche{transform:translateX(3px)}body :is(a.projet,a.entree-projet,a.carte):hover{transform:translateY(-1px)}body :is(a.projet,a.entree-projet,a.carte):active{transform:none}body :is(button,input,textarea,select,summary,audio[controls],video[controls],.dv-choice,.dv-option,.rdv-jour,.rdv-heure):not(:disabled):hover{outline:1px solid #111110;outline-offset:2px}body :is(.bouton,.nav__cta,.dv-button):hover{outline:1px solid #111110;outline-offset:2px}body :is(.nav__reseau,.retour-haut,.zoom,a:not(.marque):has(>svg)):hover{outline:1px solid #111110;outline-offset:2px}}@media (hover: none){:is(a,button):not(:focus-visible):not(:active):not([aria-current="page"]) .interaction__texte::after{transform:scaleX(0)}.interaction__fleche{transform:none !important}body :is(a.projet,a.entree-projet,a.carte):hover{transform:none}}@media (prefers-reduced-motion: reduce){html:root body,html:root body *,html:root body *::before,html:root body *::after,html:root body :is(a.projet,a.entree-projet,a.carte):is(:hover,:focus-visible){transition:none !important;animation:none !important;scroll-behavior:auto !important}/* Les attributs SVG de dessin (pétales du logo, icônes) sont une géométrie
     statique. Ils restent intacts ; toutes les transformations de mouvement cessent. */html:root body,html:root body *:not(svg *),html:root body *::before,html:root body *::after{transform:none !important;translate:none !important;rotate:none !important;scale:none !important}/* Le soulignement reste un signal d'état, sans mise à l'échelle. */.interaction__texte::after{opacity:0}:is(a,button):is(:focus-visible,:active) .interaction__texte::after,a[aria-current="page"] .interaction__texte::after{opacity:1}@media (hover: hover) and (pointer: fine){:is(a,button):hover .interaction__texte::after{opacity:1}}}@media print{.interaction__texte::after{display:none}}
