/* =============================================================================
   MT CUISINE — site.css
   FEUILLE DE STYLE UNIQUE DU SITE
   -----------------------------------------------------------------------------
   Fichier         : /wp-content/uploads/mtc/site.css
   Charge par      : extrait WPCode 273 « Mtc chargement conditionnel »,
                     sur TOUTES les pages, sans condition.
                     Le numero de version est la date de modification du fichier
                     (filemtime) : le cache navigateur se rafraichit tout seul a
                     chaque enregistrement. NE JAMAIS VERSIONNER LE NOM DU
                     FICHIER — le lien ne doit jamais casser.
   Livraison       : L43 du 29/09/2026 (numero de suivi unique, voir
                     « Claude outputs\CODE-SITE\JOURNAL-DES-LIVRAISONS.md »)
                     L43 touche site.css seul ; site.js reste celui de L38.
   Derniere modif. : 29/09/2026 (v27.30) · UN POINT. Heros de service sous
                     690 px : les regles v27.26 et v27.29 (photo dans le flux,
                     fond photo, voile, z-index) ne s'appliquent qu'aux heros
                     qui portent le jeton --mtc-hero-photo ; sans jeton, le
                     hero est celui d'avant la v27.26. Rapport 280.
                     29/09/2026 (v27.29) · QUATRE POINTS. Cuisine sur mesure,
                     liste « Ce qui fait la difference » en texte fluide sur
                     une colonne ; reperes du socle revele a 16 px (paliers
                     15 et 14) et legendes a 15 ; air egal au-dessus et en
                     dessous des valeurs du socle statique ; fond photo et
                     voile des heros de service sous 690 px, actives par le
                     jeton --mtc-hero-photo que PAGES pose en ligne. Rapport
                     276.
                     29/09/2026 (v27.28) · UN POINT. Socle du volet statique :
                     retour aux colonnes egales de la v27.26 (filet au centre),
                     et sous 480 px les deux valeurs passent de 25,6 a 22 px,
                     sur une ligne. Rapport 273.
                     29/09/2026 (v27.27) · TROIS POINTS. Socle du volet
                     statique (1024 px et moins) : colonnes a la largeur de
                     leur contenu, centrees, chaque valeur sur une ligne.
                     Pages de service : un h3 qui suit un paragraphe recoit
                     40 px au-dessus. Bloc Conseils de l'accueil : trois
                     colonnes jusqu'a 1024 inclus, puis une (le nombre de
                     colonnes des blocs realmt passe par le jeton
                     --realmt-cols, deux !important en moins, un en plus :
                     95). Rapport 272.
                     29/09/2026 (v27.26) · TROIS POINTS. Le socle du hero, sur
                     ses deux copies : deux chiffres de meme structure, valeur
                     au-dessus de sa legende, « Sur rendez-vous » a la taille
                     de « 90 % », deux colonnes egales ; un cran au-dessus sur
                     ordinateur (32 / 14 / 13,4 px), tailles d'aujourd'hui sous
                     800 px de haut et sur telephone. Hero des pages de service
                     sous 690 px : la photo passe dans le flux sous les
                     boutons, cadre 3/2, sans voile. Regles .mtcw-prix
                     retirees. Rapport 271.
                     25/09/2026 (v27.24) · UN POINT. Sous 690 px, les fleches
                     de TOUS les diaporamas (.mtc-art-diapo : fiches, articles,
                     A propos, Cuisine sur mesure, Contact) sortent du cadre et
                     se posent en rangee centree sous la legende, 44 px, 16 px
                     d'ecart, bande de vignettes en dessous. Les avis (accueil
                     et pages services) etaient deja conformes : rien touche.
                     Rapport 267.
                     25/09/2026 (v27.23) · TROIS POINTS. Sous 690 px, les deux
                     fleches du carrousel de la categorie Realisations sortent
                     du cadre et rejoignent la rangee du compteur, de part et
                     d'autre. Sur Contact, les portraits de Mathieu et Thomas
                     disparaissent sous 1200 px, des que l'affichage est
                     superpose. « Email » de la barre mobile ouvre le
                     formulaire de Contact (site.js). Rapport 266.
                     25/09/2026 (v27.22) · UN POINT. La bande de vignettes du
                     diaporama ne s'etire plus : bornes de taille de la
                     v27.12, une rangee centree, plafonds 8 / 6 / 4 retablis
                     dans site.js. Rapport 264.
                     25/09/2026 (v27.21) · CINQ POINTS. Le socle du hero entre
                     dans le flux du volet revele, en bande compacte, et le
                     volet s'ancre au-dessus de « Continuer votre navigation »
                     sous 1 000 px de haut : mesure a 1366 x 768, 1440 x 900 et
                     1920 x 1080, 16 px d'air partout. Le diaporama du showroom
                     d'A propos est borne a la largeur d'une vue paysage,
                     centre. Le bouton de la methode apparait a 90 % de la
                     course. Rapport 262.
                     25/09/2026 (v27.20) · QUATRE POINTS. Les cinq sections de
                     l'accueil s'epinglent ENFIN : un element collant ne se
                     deplace que dans la boite de contenu de sa zone, et le
                     rembourrage bas n'en fait pas partie ; la course devient un
                     pseudo-element de 440 px, fixe et identique. site.js
                     calcule la progression sur cette course, p = 1 au
                     decrochage exact. Le socle du hero se dedouble, une copie
                     par volet. Les cinq figures de la salle de bain passent au
                     portrait 4/5 en deux colonnes. Un seul CTA de fin par page,
                     releve fait (rapport 257).
                     25/09/2026 (v27.19) · RETOUR ARRIERE SUR LE POINT 1 DE LA
                     L31. L'epinglage des cinq sections de l'accueil est retabli
                     a l'identique : la course collante pilotait les animations,
                     la retirer retirait la choregraphie. A la place, la course
                     MORTE est coupee sur les deux seules zones qui en ont,
                     .mtcs-scroll et .mtcr-scroll, et leur animation occupe
                     desormais la course entiere au lieu de 72 %. L'animation
                     garde au moins autant de defilement qu'avant. Le reste de
                     la L31 est intact : socle du hero, cartes, bande de
                     vignettes, pictogrammes, exclusivite du CTA (rapport 254).
                     25/09/2026 (v27.18) · QUATRE POINTS DU PILOTE.
                     Le procede ne reste que sur le hero : les cinq autres zones
                     repassent en defilement normal, residu zero, animations
                     d'apparition conservees par le chemin observateur qui
                     existait deja. La page perd 2 978 px a 1920 et 2 393 a
                     1440 ; le telephone ne bouge pas d'un pixel. La bande de
                     vignettes calcule son nombre de tuiles et remplit la
                     largeur. Le socle du hero est prepare pour son entree dans
                     le hero, pictogrammes redessines. Exclusivite du CTA de
                     fin sur les articles (rapport 253).
                     25/09/2026 (v27.17) · QUATRE POINTS DU PILOTE. Le socle du
                     hero recoit son style, qu'il n'avait pas du tout : trois
                     chiffres sur une rangee et quatre reperes sur une ligne, de
                     424 px a 234. Les cinq zones de defilement de l'accueil
                     passent au meme regime, course bornee et identique : la page
                     perd 1 529 px. Les deux portraits de « Qui sommes-nous » se
                     superposent enfin, la legende de la premiere passant en
                     haut, le seul cote que la seconde ne couvre jamais
                     (rapport 252).
                     25/09/2026 (v27.16) · DERNIER LOT AVANT MISE EN LIGNE.
                     Sept points. Accueil : la hauteur de la zone Realisations
                     derive du contenu et non plus de la fenetre. Tout le site :
                     les fleches passent a 40 px, leur survol ne les deplace
                     plus, et leur centrage quitte transform pour translate.
                     Fiches et A propos : la hauteur du diaporama devient
                     constante au-dessus de 690 px. Telephone et tablette : une
                     barre d'action fixe a quatre entrees. Articles et
                     categories : le CTA de fin, pose par extrait PHP.
                     Coordinations PAGES : composition a deux photos sur
                     l'accueil, pictogramme de lecture retire de la boucle
                     Arredo3 et ouverture au clic retablie (rapport 251).
                     25/09/2026 (v27.15) · CORRECTIF. Le diaporama des fiches et
                     du showroom d'A propos s'effondrait a la plus petite
                     derivee : la regle posee en v27.14 laissait les DEUX axes
                     automatiques, donc sans rapport applique, et site.js
                     mesurait pour sizes une largeur qui dependait elle-meme de
                     sizes. La hauteur devient l'axe determine, la largeur en
                     decoule. Ajout d'une porte de sortie « sans-collant » sur
                     les duos de colonnes collantes (rapport 248).
                     25/09/2026 (v27.14) · SEPT POINTS DU RETOUR CLIENT.
                     Accueil : les trois portraits de « Qui sommes-nous »
                     recomposes dans un cadre, colonne photo a la hauteur exacte
                     du texte ; titres de « Nos univers » alignes par une
                     hauteur de description reservee ; survol des cartes
                     Realisations rendu au CSS par la propriete translate.
                     Tout le site : la colonne la plus courte d'un duo se cale
                     en haut et passe en collant, regle mesuree a chaque
                     chargement. Dressing : le bouton professionnel passe sous
                     le texte. Fiches : le cadre du diaporama prend le rapport
                     de la photo affichee, plus aucun rognage, et sizes suit la
                     largeur reelle du cadre (rapport 247).
                     24/09/2026 (v27.13) · SIX POINTS DU RETOUR CLIENT, seconde
                     serie. Accueil : le savoir-faire prend la largeur utile de
                     la page. Cuisine sur mesure : pictogramme de lecture sur la
                     video Arredo3 et phrase transformee en bouton secondaire.
                     Contact : espacement sous les portraits des cogerants.
                     Tout le site : les fleches des carrousels deviennent un
                     disque plein dore au chevron noir, jetons du bouton
                     d'action principal. Cartes a image en tete : image a fleur
                     de bord, arrondi haut, arc bas, numero sorti de la photo.
                     TROIS DECLARATIONS RETIREES de la passe v27.11.14, voir le
                     commentaire sur place (rapport 246).
                     24/09/2026 (v27.12) · LOT DE SEIZE POINTS DU RETOUR CLIENT.
                     Accueil : portraits visibles sur telephone, troisieme
                     portrait pose, hauteur de zone qui suit le contenu,
                     savoir-faire en trois colonnes, voile des univers au repos,
                     cartes en 4/5. Fiches : bande de vignettes sur une rangee,
                     fleches du diaporama, texte des blocs seuls recentre.
                     Categorie Realisations : carrousel en fondu a trois
                     projets. Cuisine sur mesure : fenetre video, titres des
                     cartes alignes. Contact : portraits agrandis. Murs de
                     logos : une rangee, bas centre. RETIRE dans la meme passe :
                     les 13 regles du module de prix de l'accueil, devenues sans
                     objet (ce module appartient au cowork PRIX depuis le
                     24/09), et la regle de largeur de la boucle de marque posee
                     en v27.11.19 (rapport 242).
                     23/09/2026 (v27.11.19) · CUISINE SUR MESURE : la boucle de
                     marque Arredo3 occupe toute la largeur de son bloc. Trois
                     declarations, aucun effet hors des pages services
                     (rapport 231). CES REGLES SONT RETIREES en v27.12.
                     23/09/2026 (v27.11.18) · ACCUEIL SUR TELEPHONE : fondu
                     ramene de 0,8 s a 0,35 s et decalage d'entree de 22-30 px
                     a 10 px sous 900 px ; respiration verticale resserree sous
                     600 px ; defilement lisse neutralise sous 900 px. Retour
                     client « transitions brutes et noires » (rapports 229
                     et 230). Aucun effet au-dessus de 900 px, mesure.
                     23/09/2026 (v27.11.17) · CONTACT : les portraits passent a
                     cote du chapeau au-dela de 1200 px. Bloc ecrit par le
                     cowork PAGES, livre en fragment separe sous le numero 16,
                     renumerote 17 a la fusion (rapport 227).
                     23/09/2026 (v27.11.16) · accueil, bloc « Ce qui compose le
                     prix » : six photographies du showroom sous la legende
                     des postes (extrait 1246).
                     23/09/2026 (v27.11.15) · Contact, largeur du duo dans le
                     bloc de demande ; variables du cadre dore declarees a la
                     racine ; separateurs des piliers sur telephone ; galerie
                     de la categorie Realisations ; diaporama des fiches.
                     22/09/2026 (v27.11.14) · voile du haut de l'accueil mobile
                     allege de 25 % et dore eclairci dans ce bloc ; cartes a
                     photo dominante (Cuisine, A propos) ; page Contact prete
                     pour le deplacement des portraits ; retrait des deux
                     regles qui visaient le module de demande.
                     22/09/2026 (v27.11.13) · precedent / suivant empiles sur
                     telephone ; accueil mobile, air sous les boutons du haut.
                     Bloc en fin de fichier.
                     22/09/2026 (v27.11.12) · rapport 212 : marges entre
                     sections collees de l'accueil, pictos de la methode,
                     descriptions des cartes sur ordinateur, recapitulatif du
                     formulaire sur mobile, precedent / suivant, cadrage et
                     piliers du haut de l'accueil mobile. Bloc en fin de fichier.
                     21/09/2026 (v27.11.11) · Cuisine sur mesure : sous-titre
                     .mtc-art-sous-titre au-dessus du bandeau photo des
                     collections. Bloc en fin de fichier.
                     21/09/2026 (v27.11.10) · accueil : voile du hero mobile et
                     tablette renforce (surtitre lisible sur la photo 458) ;
                     legendes du bloc chiffres alignees au-dela de 1024 px
                     (rapport 205 §15-16).
                     21/09/2026 (v27.11.9) · realisations : retrait de la regle
                     d'essai « galerie en haut » de Seilh, la galerie est
                     desormais placee dans le HTML des fiches (rapport 205 §12).
                     21/09/2026 (v27.11.8) · Contact : role et telephone des deux
                     cogerants alignes (rapport 205 §6). Bloc en fin de fichier.
                     21/09/2026 (v27.11.7) · retour client en captures : A propos,
                     telephone aligne au pied des deux cartes des cogerants ;
                     fiche realisation de Seilh, galerie remontee en haut, a
                     l'essai (rapport 205). Bloc en fin de fichier.
                     18/09/2026 (v27.11.5) · methode de l'accueil : la mise en
                     avant de l'etape active est SUPPRIMEE. Les quatre cartes
                     sont dessinees a l'identique, sans filet, sans ombre, sans
                     voile et sans agrandissement (rapport 167 §17).
                     18/09/2026 (v27.11.4) · methode de l'accueil : la mise en
                     avant de l'etape active passe au filtre, au numero dore et
                     a un filet ; plus aucun recouvrement (rapport 167 §16).
                     18/09/2026 (v27.11.3) · accueil : hero adapte aux fenetres
                     basses (defauts a et b du client), deux lignes reservees
                     au titre des etapes de la methode (defaut c), et retrait
                     de la famille morte .mtc-photo-attente (rapport 167 §15).
                     17/09/2026 (v27.11.2) · univers de l'accueil : palier des
                     2 colonnes porte de 640 a 650 px (rapport 167 §14).
                     17/09/2026 (v27.11.1) · univers de l'accueil, 640 a 900 px :
                     la 5e carte est centree, a la taille des autres
                     (rapport 167 §14).
                     17/09/2026 (v27.11) · grille des univers de l'accueil a
                     5 cartes : 5 colonnes des 1025 px, 3 + 2 de 901 a
                     1024 px, 2 + 2 + 1 de 640 a 900 px, une colonne en
                     dessous (rapport 167 §13). Bloc « PASSE v27.11 » en
                     fin de fichier, actif seulement avec 5 cartes.
                     17/09/2026 (v27.10.2) · CORRECTIF 1 (eventail) etendu de
                     900 a 1024 px : la photo 2 n'est plus decalee entre 901
                     et 1024 px (rapport 167 §12).
                     17/09/2026 (v27.10.1) · hero du dressing : sous 1024 px,
                     le texte passe au-dessus de la photo, le titre reste dans
                     le premier ecran (rapport 167 §11).
                     17/09/2026 (v27.10) · rapport 167 §10 : ancre #rendez-vous
                     de la page contact, avec sa propre valeur (filet dore a
                     32 px sous l'en-tete) ; hero du dressing en cadre
                     portrait (montage (c) du 153 §5). Voir le bloc
                     « PASSE v27.10 » en fin de fichier.
                     17/09/2026 (v27.9) · passe espacements, rapport 167 :
                     Bureaux du dressing (ecart du bouton, colonne de texte
                     centree, premier chapeau), contact (encart « Ce qui se
                     passe ensuite » detache du titre et en trois colonnes,
                     module de rendez-vous aligne sur son en-tete, gras du bloc
                     Rendez-vous equilibre, ancres), accueil (ecart titre et
                     cartes des Conseils, ecart sous le titre du module prix).
                     Code mort retire : formulaire Kadence (bloc C), widget
                     Calendly (bloc G et ses paliers), ancien schema
                     .mtcw-prix-* (v27.7). Voir le bloc « PASSE v27.9 » en fin
                     de fichier.
                     28/08/2026 (v3.3) — fiches realisations : les pieces de la
                     carte restent des blocs meme en <span>, pour permettre au
                     balisage de sortir les blocs du lien. Voir le rapport 76.
                     28/08/2026 (v3.2) — fiches realisations : le voile des
                     cartes de bas de page revient a celui du socle ; a 92 % il
                     formait une bande grise au lieu d'un degrade.
                     28/08/2026 (v3.1) — fiches realisations : le texte des
                     cartes de bas de page est visible sans survol, la colonne
                     de texte devient collante sur ordinateur, le haut de fiche
                     est centre. Voir le rapport 74.
                     28/08/2026 — SECTION 9, articles et fiches realisations :
                     mise en page deux colonnes, bande de vignettes, visionneur
                     plein ecran, cartes de fin. Voir le rapport 73.
                     27/08/2026 (soir, v2.5) — correctifs telephone : les listes
                     a points passent en deux colonnes, et l'eventail de photos
                     cesse de se decaler et de recouvrir le bloc suivant.
                     Voir le rapport 72.
                     27/08/2026 (soir, v2.4) — page contact : la section
                     « Reserver en ligne » est centree. Voir le rapport 71.
                     27/08/2026 (soir, v2.3) — page contact : le calendrier
                     revient en pleine largeur, la colonne d'appel est retiree
                     (son balisage aussi), hauteurs revues sur l'etape la plus
                     haute du widget. Voir le rapport 70.
                     27/08/2026 (soir, v2.2) — page contact : l'encadre blanc
                     autour du calendrier est supprime, le widget passe en deux
                     colonnes avec l'appel direct, la FAQ se centre. Voir le
                     rapport 69.
                     27/08/2026 (soir) — page contact : hauteur REELLE du widget
                     Calendly (une hauteur en pourcentage ne se resout pas contre
                     un min-height : c'etait la cause du calendrier tronque) et
                     plancher de decrochement d'ancre. Voir le rapport 68.
                     27/08/2026 — habillage de la PAGE CONTACT (225) : son HTML
                     etait en ligne depuis le 12/08 sans une seule regle. 42
                     classes, zero nue, zero orpheline. Voir le rapport 67.
                     27/08/2026 — correctifs mobiles : l'eventail se desempile
                     sous 1025 px, liste courte en deux colonnes ; SECTION 6
                     allegee (page A propos v6 puis v7)
                     26/08/2026 — correctif de debordement mobile de
                     .mtc-photo-attente, composant .mtc-svc-colle, surtitres
                     services
                     en manuscrite (SECTION 8),
                     eventail en zigzag a format normalise, colonne media
                     collante (SECTION 4), marge de flux de .mtc-photo-attente,
                     jeton manuscrite
                     25/08/2026 — SECTION 3 (accueil) phase 2
                     11/08/2026 — SECTION 6 (page A propos) en v4
   Remplace        : extrait 242 « CSS Accueil »   (a desactiver)
                     extrait 300 « CSS Services »  (a desactiver)
                     partie CSS de l'extrait 249 « FONDATIONS »
                     (le PHP de 249 reste en place : il calcule --mtc-font-titre)
   Ne remplace pas : 250 HEADER, 251 FOOTER, 252 INTRO, qui injectent encore leur
                     propre CSS en ligne, apres ce fichier dans la page.

   -----------------------------------------------------------------------------
   SOMMAIRE
   -----------------------------------------------------------------------------
   SECTION 1 — JETONS ET SYSTEME DE BOUTONS
               Sert  : toutes les pages du site
               Prefixe : --mtc-*  et  .mtc-cta / .mtc-cta-2 / .mtc-sombre
               Source : extrait 249 FONDATIONS (sa partie CSS)
               C'EST LE SEUL :root DU FICHIER. Il ne doit jamais y en avoir un
               second, nulle part.

   SECTION 2 — SOCLE COMMUN, COMPOSANTS PARTAGES
               Sert  : accueil (2) ET pages services (217 · 219 · 221)
               Prefixe : .mtcs-card* · .mtcsh-media* · .mtcsh-points ·
                         .mtca-* (carrousel d'avis) · .realmt
               Source : extrait 242, regles des composants reutilises
               Toucher a une regle d'ici, c'est toucher a DEUX familles de pages.

   SECTION 3 — PAGE D'ACCUEIL (2)
               Sert  : la page d'accueil, et elle seule
               Prefixe : .mtc-hero* · .mtcs-* · .mtcsh-* · .mtcr-* · .mtcp-* ·
                         .mtca-* · .mtcf-* · .mtcl-* · .mtcb-* · .mtcw-*
               Source : extrait 242 CSS Accueil
               ATTENTION : les commentaires internes de cette section parlent de
               « SECTION 1 — HERO », « SECTION 2 — UNIVERS »... C'est la
               numerotation d'origine des sept sections de la page d'accueil,
               conservee telle quelle. Rien a voir avec les SECTIONS 1 a 5
               ci-dessus, qui sont annoncees par un bandeau encadre.
               PHASE 2 du 25/08/2026 : millesime, signature manuscrite,
               surtitres en manuscrite, bande partenaires portee a quatre rangs,
               piliers de reassurance passes a quatre, photos du showroom
               ecartees. Les regles concernees sont datees sur place.
               La section se termine par un BLOC DE SURCHARGES qui doit rester
               le dernier : il s'appuie sur l'ordre du document. Toute regle
               nouvelle de la SECTION 3 s'ecrit AVANT lui.

   SECTION 4 — PAGES SERVICES (217 · 219 · 221)
               Sert  : cuisine sur mesure, dressing et living, salle de bain
               Prefixe : .mtc-svc-*  (variables locales --svc-* portees par .mtc-svc)
               Source : extrait 300 CSS Services
               26/08/2026 : la section porte deux mecaniques de colonne media
               collante. Le CABLAGE .mtc-svc-intro / .mtc-svc-living, en service
               aujourd'hui sur 217 et 219 sans aucune classe a poser. Et le
               COMPOSANT .mtc-svc-colle*, generique et reutilisable, encore
               inerte faute de markup. Le second doit remplacer le premier quand
               un cowork posera les classes ; voir le bandeau du composant.

   SECTION 6 — PAGE A PROPOS & SHOWROOM PRIVE (223)
               Sert  : /a-propos/ (223)
               Prefixe : .mtc-apr-*  (.mtc-photo-attente* retire le 18/09/2026)
               Source : cowork page 223, v4 du 11/08, allegee le 27/08/2026
               27/08 : la page abandonne ses grilles maison au profit des
               composants de production (.mtc-svc-duo, .mtc-svc-colle*). Douze
               regles devenues orphelines ont ete retirees apres verification en
               base — zero occurrence sur les 23 contenus du site.
               La page est habillee par le jeu .mtc-svc-* de la SECTION 4 :
               cette section ne porte que les dispositions qui n'existent nulle
               part ailleurs, plus l'emplacement photo en attente.
               PLACEE AVANT LA SECTION 5, comme toute page future : la section
               des correctifs doit rester la derniere du fichier.

   SECTION 8 — TYPOGRAPHIE MANUSCRITE (socle commun)
               Sert  : toutes les pages
               Prefixe : .mtc-manuscrit  ·  .mtc-svc-eyebrow  ·  .mtc-svc-surtitre
               Source : coworks dressing et living, puis cuisine
               A · le composant .mtc-manuscrit, pose element par element ;
               B · les surtitres des cinq pages en .mtc-svc-* ;
               C · le centrage de la signature de cloture des pages services.
               PLACEE APRES LA SECTION 4, et ce n'est pas negociable : elle
               surcharge .mtc-svc-eyebrow a specificite egale, c'est donc
               l'ordre du document qui tranche.

   PAGE CONTACT ET RENDEZ-VOUS (225)      — SANS NUMERO, volontairement
               Sert  : /contact-et-rendez-vous/ (225), et elle seule
               Prefixe : .mtc-cnt-*
               Source : cowork page 225, lot du 27/08/2026
               SANS NUMERO : la numerotation de premier niveau est
               1 · 2 · 3 · 4 · 6 · 8 · 5, et un « 7 » se confondrait avec la
               « SECTION 7 — CTA FINAL » de la numerotation interne de
               l'accueil, dans la SECTION 3.
               PLACEE APRES LA SECTION 4 (dont la page herite tout : ses six
               sections portent .mtc-svc) ET APRES LA SECTION 8 (qui bascule
               ses sept surtitres en manuscrite). La remonter rend inertes les
               regles qui ne l'emportent que par l'ordre du document.
               Depuis la v27.9 (17/09/2026), la page ne porte plus ni widget
               Calendly ni formulaire Kadence : la demande passe par le module
               MTC Demandes (extension, prefixe .mtcd-), qui a sa propre feuille.

   SECTION 9 — ARTICLES ET FICHES REALISATIONS
               Sert  : les articles de la categorie Realisations, et eux seuls
               Prefixe : .mtc-art-*
               Source : cowork Articles realisations, v3 du 28/08/2026
               Vingt articles publies : NEUF fiches completes (bande de
               vignettes, blocs deux colonnes, cartes de fin) et ONZE fiches
               courtes (photo simple + navigation de fin). Les deux familles
               sont couvertes ; voir le pave « D bis » sur place.
               Le visionneur plein ecran est construit par le BLOC 9 de
               site.js et ajoute a <body> : il vit HORS de .mtc-art et ne lit
               donc que des jetons --mtc-*, jamais --svc-*.
               PLACEE APRES LA SECTION 4 et LA SECTION 8 : quatre de ses regles
               ne l'emportent que par l'ordre du document, a specificite egale
               avec .mtc-svc-encart, .mtc-svc-filet et .mtcs-card.

   SECTION 5 — CORRECTIFS DE FIN DE FICHIER
               Elle porte depuis le 27/08 le CORRECTIF 1 (eventail mobile), et
               elle doit rester le DERNIER bloc du fichier.

   -----------------------------------------------------------------------------
   TABLE DES PREFIXES — a tenir a jour
   -----------------------------------------------------------------------------
   Portee                            Prefixe
   Jetons et design system           --mtc-*      .mtc-cta  .mtc-cta-2  .mtc-sombre
   Composants partages               .mtcs-card*  .mtcsh-*  .mtca-*  .realmt
   Page d'accueil                    .mtc-*  .mtcs-*  .mtcsh-*  .mtcr-*  .mtcp-*
                                     .mtca-*  .mtcf-*  .mtcl-*  .mtcb-*  .mtcw-*
                                     ajoutees le 25/08/2026 : .mtc-millesime
                                     .mtc-signature  .mtcl-grille-md
   Pages services                    .mtc-svc-*   (et .mtck-*, reserve, voir 25 §7)
   Page A propos (223)               .mtc-apr-*
   Page Contact (225)                .mtc-cnt-*
   Articles et realisations          .mtc-art-*
   Emplacement photo en attente      retire le 18/09/2026 (v27.11.3)
                                     Famille DESTINEE AU SOCLE COMMUN, posee pour
                                     l'instant dans la SECTION 6 pour ne modifier
                                     aucune section existante. A remonter dans la
                                     SECTION 2 des qu'une deuxieme page l'utilise.
   Media collant (pages services)    .mtc-svc-colle  .mtc-svc-colle-media
                                     .mtc-svc-colle-pile
                                     Composant a deux classes, pose dans le HTML.
   Composant manuscrit               .mtc-manuscrit
                                     Classe de SOCLE, posee element par element
                                     dans le HTML. Lit --mtc-police-manuscrite.
   Toute page future                 un prefixe DEDIE, jamais un prefixe existant

   -----------------------------------------------------------------------------
   AJOUTER UNE PAGE — la procedure, en cinq lignes
   -----------------------------------------------------------------------------
   1. Choisir un prefixe libre (ex. .mtc-cnt-* pour la page contact) et l'inscrire
      dans la table ci-dessus.
   2. Ajouter une SECTION numerotee A LA FIN du fichier, juste avant la section
      « CORRECTIFS », avec son bandeau : numero, titre, prefixe, date, source, pages.
   3. N'ecrire QUE des selecteurs portant ce prefixe. Ne toucher a aucune section
      existante, et surtout pas au :root de la SECTION 1.
   4. Dans site.js, ajouter un bloc du meme nom, avec son garde-fou en premiere
      ligne (voir l'en-tete de site.js).
   5. Enregistrer, purger WP Rocket. Rien d'autre : le chargeur 273 sert deja ce
      fichier sur toutes les pages, il n'y a aucune route a declarer.

   -----------------------------------------------------------------------------
   CE QU'IL NE FAUT JAMAIS FAIRE ICI
   -----------------------------------------------------------------------------
   - minifier ce fichier (WP Rocket s'en charge a la volee) ;
   - le renommer ou le versionner (site-v2.css) ;
   - declarer un second :root ;
   - ecrire un selecteur non prefixe, un selecteur d'element nu (h2 {}) ou un
     selecteur de bloc Gutenberg generique (.wp-block-*) : une fuite de ce type a
     deja ete corrigee sur ce projet ;
   - dupliquer une classe deja definie dans le SOCLE COMMUN ;
   - ecrire quoi que ce soit entre le BLOC DE SURCHARGES de fin de SECTION 3 et
     le bandeau de la SECTION 4 : ce bloc doit rester le dernier de sa section ;
   - de-prefixer .mtcsh-showroom devant .mtcsh-media ou .mtcsh-photo-* : ces
     classes servent aussi l'eventail des pages services ;
   - remonter la SECTION 8 avant la SECTION 4 : .mtc-manuscrit y deviendrait
     inerte sur les pages services ;
   - ecrire un nom de police ailleurs que dans --mtc-police-manuscrite ;
   - ecrire un espacement libre : le pas vient de l'echelle --mtc-e-1 a -9 ;
   - poser overflow autre que visible sur un ancetre de .mtc-svc-intro : le
     collant de la colonne media mourrait en silence ;
   - employer @supports pour tester si une variable CSS est definie : la
     condition est TOUJOURS vraie, verifie en navigateur le 26/08/2026 ;
   - declarer une font-family ou une couleur en dur : Blocksy garde la
     typographie, les couleurs passent par var(--theme-palette-color-N) ou
     var(--mtc-*).

   -----------------------------------------------------------------------------
   LA SEULE EXCEPTION A LA REGLE « PAS DE FONT-FAMILY »
   -----------------------------------------------------------------------------
   CINQ regles declarent une police dans tout ce fichier. Aucune ne l'ecrit en
   dur : toutes lisent le jeton --mtc-police-manuscrite du :root de la
   SECTION 1, qui est le SEUL endroit ou la pile de polices est ecrite.
   Autorisation du pilote le 25/08/2026, etendue aux pages services le 26/08 :

       .mtc-millesime    « Since 2012 », dans le hero
       .mtc-signature    « Mathieu & Thomas », au pied de « Qui sommes-nous »
       les 11 surtitres  .mtc-surtitre · .mtc-static-surtitre · .mtcs-eyebrow ·
                         .mtcsh-eyebrow · .mtcr-eyebrow · .mtcp-eyebrow ·
                         .mtca-eyebrow · .mtcb-eyebrow · .mtcw-eyebrow ·
                         .mtcl-eyebrow · .mtcf-eyebrow
                         (bloc de fin de SECTION 3 — accueil)
       .mtc-manuscrit    classe de socle posee dans le HTML, element par
                         element (SECTION 8 · A)
       .mtc-svc-eyebrow  les surtitres des CINQ pages qui emploient le jeu
       .mtc-svc-surtitre .mtc-svc-* : 217, 219, 221, 223 et 225
                         (SECTION 8 · B). Bascule decidee par le pilote le
                         26/08/2026 : la manuscrite va sur le petit titre dore
                         de toutes les pages, plus seulement de l'accueil.

   LA MANUSCRITE S'ARRETE LA. Elle ne descend pas sur les numeros, les
   compteurs, les legendes ni le texte courant : semee partout, elle perd son
   effet. Hors surtitres, une seule autre occurrence est justifiee par page, et
   seulement quand le mot est litteralement une signature.

   Cette exception ne s'etend a rien d'autre. Le fichier ne contient, en tout
   et pour tout, que SIX declarations de font-family : les cinq ci-dessus, plus
   un font-family:inherit dans la SECTION 3, qui n'impose aucune police.
   S'il en apparait une septieme, quelqu'un a force une police sans
   autorisation. Et aucune ne doit ecrire un nom de police en dur : le jeton
   du :root est la seule source.

   RESERVE OUVERTE, a lever sur le rendu reel : le cowork Accueil a cale les
   tailles de cette manuscrite sur un banc qui ne chargeait pas Adobe Fonts.
   Les valeurs clamp() sont des approximations a confirmer en ligne.
   ============================================================================= */


/* =============================================================================
   SECTION 1 — JETONS ET SYSTEME DE BOUTONS
   Prefixe : --mtc-*  ·  .mtc-cta  .mtc-cta-2  .mtc-sm  .mtc-lg  .mtc-block  .mtc-sombre  ·  Ajoute le 11/08/2026  ·  Source : extrait 249 FONDATIONS (partie CSS)
   Sert : toutes les pages du site
   ============================================================================= */

:root{

  /* --- 1. PONT VERS LA PALETTE BLOCKSY ------------------------------------
     Correspondance verifiee en base le 10/08/2026 (theme_mods_blocksy) :
       color1 #B8945F dore      color5 #E4DFD8 gris filet
       color2 #1A1A1A noir      color6 #EFEAE3 fond alternatif
       color3 #0D0D0D profond   color7 #F7F4EF blanc casse
       color4 #5A5651 gris      color8 #FFFFFF blanc pur
     Les hexadecimaux ne sont QUE des valeurs de secours : la source de
     verite reste Personnaliser > Couleurs. */
  --mtc-dore:         var(--theme-palette-color-1, #B8945F);
  --mtc-noir:         var(--theme-palette-color-2, #1A1A1A);
  --mtc-noir-profond: var(--theme-palette-color-3, #0D0D0D);
  --mtc-gris:         var(--theme-palette-color-4, #5A5651);
  --mtc-gris-clair:   var(--theme-palette-color-5, #E4DFD8);
  --mtc-fond-alt:     var(--theme-palette-color-6, #EFEAE3);
  --mtc-blanc:        var(--theme-palette-color-7, #F7F4EF);
  --mtc-blanc-pur:    var(--theme-palette-color-8, #FFFFFF);

  /* Seule couleur calculee du projet : Blocksy n'expose pas de variante
     foncee de sa palette. Sert aux etats actifs. */
  --mtc-dore-fonce:   #9A7847;

  /* --- 2. COULEURS FONCTIONNELLES -----------------------------------------
     Niveau d'indirection : les composants n'utilisent QUE celles-ci, jamais
     les couleurs de marque en direct. C'est ce qui permet a .mtc-sombre
     d'inverser une section entiere sans toucher a un seul composant. */
  --mtc-c-fond:        var(--mtc-blanc);
  --mtc-c-fond-alt:    var(--mtc-fond-alt);
  --mtc-c-fond-sombre: var(--mtc-noir);
  --mtc-c-texte:       var(--mtc-noir);
  --mtc-c-texte-2:     var(--mtc-gris);
  --mtc-c-texte-inv:   var(--mtc-blanc);
  --mtc-c-accent:      var(--mtc-dore);
  --mtc-c-filet:       var(--mtc-gris-clair);
  --mtc-c-filet-inv:   rgba(255,255,255,.18);

  /* Voiles sur photo. Garantissent la lisibilite du texte blanc pose sur une
     image. Ne jamais improviser un rgba() ailleurs. */
  --mtc-voile-bas:    linear-gradient(180deg, rgba(13,13,13,0) 35%, rgba(13,13,13,.78) 100%);
  --mtc-voile-plein:  rgba(13,13,13,.45);
  --mtc-voile-doux:   rgba(13,13,13,.28);

  /* --- 3. TYPOGRAPHIE ------------------------------------------------------
     Aucune taille de h1 a h6 ici : Blocksy garde la main. Ne restent que des
     tailles RELATIVES, en em, qui suivent le corps de texte du theme. */
  --mtc-fs-eyebrow:  .78em;
  --mtc-fs-legende:  .82em;
  --mtc-fs-lead:    1.18em;

  /* Seule taille absolue : le titre geant du hero, volontairement plus grand
     que le h1 defini dans Blocksy. */
  --mtc-fs-display: clamp(2.6rem, 1.6rem + 5vw, 6.5rem);

  /* La manuscrite. Ajoutee le 26/08/2026 : c'est le SEUL endroit du fichier ou
     cette pile de polices est ecrite. Les regles qui l'emploient la lisent
     toutes ici. Kit Adobe Fonts charge par Blocksy ; repli sans-serif si le kit
     ne repond pas. Pour intercaler un repli maison (nexa-text par exemple),
     c'est cette ligne, et elle seule, qu'on modifie. */
  --mtc-police-manuscrite: above-the-beyond, sans-serif;

  --mtc-lh-titre:   1.08;
  --mtc-lh-texte:   1.68;
  --mtc-ls-eyebrow: .22em;
  --mtc-ls-titre:   -.015em;
  --mtc-ls-cta:     .03em;

  /* --- 4. ESPACEMENTS ------------------------------------------------------ */
  --mtc-e-1: .25rem;  --mtc-e-2: .5rem;   --mtc-e-3: .75rem;
  --mtc-e-4: 1rem;    --mtc-e-5: 1.5rem;  --mtc-e-6: 2rem;
  --mtc-e-7: 3rem;    --mtc-e-8: 4rem;    --mtc-e-9: 6rem;

  --mtc-section-y:       clamp(4rem, 3rem + 6vw, 9rem);
  --mtc-section-y-large: clamp(6rem, 4rem + 9vw, 13rem);
  --mtc-gouttiere:       clamp(1.25rem, .75rem + 2.5vw, 3.5rem);
  --mtc-max-texte:       68ch;

  /* --- 5. FORMES ----------------------------------------------------------- */
  --mtc-r-0: 0;  --mtc-r-s: 2px;  --mtc-r-m: 4px;  --mtc-r-l: 10px;
  --mtc-r-pill: 999px;
  --mtc-filet:     1px solid var(--mtc-c-filet);
  --mtc-filet-inv: 1px solid var(--mtc-c-filet-inv);
  --mtc-filet-or:  1px solid var(--mtc-c-accent);

  /* --- 6. BOUTONS ----------------------------------------------------------
     Valeurs reprises a l'identique du snippet 78, deja valide par le client.
     Le degrade est reconstruit autour de --mtc-dore : changer le dore dans
     Blocksy modifie donc bien le bouton. */
  --mtc-cta-degrade:    linear-gradient(135deg, #D4B078 0%, var(--mtc-dore) 55%, #A67D47 100%);
  --mtc-cta-ombre:      0 10px 30px rgba(184,148,95,.28), 0 2px 6px rgba(0,0,0,.18);
  --mtc-cta-ombre-fort: 0 16px 40px rgba(184,148,95,.42), 0 4px 10px rgba(0,0,0,.22);
  --mtc-cta-bord:       1px solid rgba(184,148,95,.6);
  --mtc-cta-r:          3px;
  --mtc-cta-brillance:  linear-gradient(120deg, transparent 0%, rgba(255,255,255,.55) 50%, transparent 100%);

  /* --- 7. EFFET VERRE (header flottant, boutons ronds, panneau mobile) ----- */
  --mtc-verre:        rgba(13,12,11,.55);
  --mtc-verre-scroll: rgba(10,9,8,.72);
  --mtc-verre-flou:   blur(18px);
  --mtc-verre-bord:   1px solid rgba(247,244,239,.10);
  --mtc-rond:         rgba(0,0,0,.28);
  --mtc-rond-bord:    1px solid rgba(247,244,239,.14);
  --mtc-header-h:     clamp(60px, 6vw, 74px);
  --mtc-header-top:   clamp(12px, 1.6vw, 20px);

  --mtc-ombre-douce: 0 18px 50px -20px rgba(26,26,26,.22);
  --mtc-ombre-forte: 0 40px 90px -30px rgba(13,13,13,.55);

  /* --- 8. MOUVEMENT -------------------------------------------------------- */
  --mtc-d-court:     .28s;
  --mtc-d-moyen:     .6s;
  --mtc-d-long:      1.1s;
  --mtc-d-tres-long: 1.8s;

  --mtc-ease:        cubic-bezier(.22,.61,.36,1);   /* standard */
  --mtc-ease-sortie: cubic-bezier(.16,1,.30,1);     /* tres amorti, reveals */
  --mtc-ease-net:    cubic-bezier(.65,0,.35,1);     /* symetrique, slides */

  --mtc-reveal-decalage: 22px;
  --mtc-reveal-seuil:    .18;
  --mtc-reveal-stagger:  90ms;
  --mtc-parallaxe:       .12;
  --mtc-slider-par-vue:  3;

  /* Ecran d'ouverture : duree avant dissipation. C'EST ICI qu'on la regle.
     Passee de 1700 ms a 900 ms — un voile opaque plein ecran est
     mecaniquement le plus grand element peint de la page, donc le LCP mesure
     par Google ne peut pas descendre sous cette duree. */
  --mtc-intro-duree:     900ms;
  --mtc-intro-sortie:    450ms;

  /* --- 9. SUPERPOSITION ---------------------------------------------------
     Echelle unique du projet. Toute nouvelle couche se place ICI, jamais
     avec un nombre ecrit a la main dans un composant.
     Les valeurs internes aux sections (0 a 30) restent enfermees dans leur
     section : `position:sticky` cree un contexte d'empilement, leurs enfants
     ne peuvent donc pas remonter au-dessus du header. */
  --mtc-z-fond: 0;    --mtc-z-media: 1;   --mtc-z-voile: 2;
  --mtc-z-contenu: 3; --mtc-z-ui: 4;      --mtc-z-sticky: 10;

  --mtc-z-header:  900;   /* barre de navigation flottante   */
  --mtc-z-overlay: 1000;  /* voile derriere le menu mobile   */
  --mtc-z-drawer:  1010;  /* panneau du menu mobile          */
  --mtc-z-intro:   1200;  /* ecran d'ouverture               */

  /* Interrupteur d'animation, lu par le CSS ET par le moteur JS. */
  --mtc-motion: 1;

  /* --- 10. HAUTEUR REELLE DE L'EN-TETE COLLANT --------------------------
     Repli remonte depuis l'extrait 242 le 11/08/2026, pour qu'il n'existe
     qu'une seule declaration :root dans le fichier. Valeur reelle ecrite a
     l'execution par site.js, en style EN LIGNE sur <html> : un style en ligne
     prime sur toute regle de feuille, la mesure gagne donc toujours.
     Consommee par les sections collantes de l'accueil (SECTION 3). */
  --mtc-entete: 0px;
}

/* --- ECRAN TACTILE ---------------------------------------------------------
   La parallaxe n'a pas de sens sans souris : coupee par le token, donc sans
   une seule condition en JavaScript. */
@media (hover: none){
  :root{ --mtc-parallaxe: 0; }
}

/* --- ACCESSIBILITE : MOUVEMENT REDUIT --------------------------------------
   Traite UNE SEULE FOIS ici pour tout le site. Les snippets suivants n'ont
   plus jamais a ecrire @media (prefers-reduced-motion). */
@media (prefers-reduced-motion: reduce){
  :root{
    --mtc-motion: 0;
    --mtc-d-court: .01ms;
    --mtc-d-moyen: .01ms;
    --mtc-d-long: .01ms;
    --mtc-d-tres-long: .01ms;
    --mtc-reveal-decalage: 0px;
    --mtc-reveal-stagger: 0ms;
    --mtc-parallaxe: 0;
    --mtc-intro-duree: 1ms;
  }
  *, *::before, *::after{
    animation-duration: .01ms !important;
    animation-iteration-count: 1 !important;
    transition-duration: .01ms !important;
    scroll-behavior: auto !important;
  }
}

/* --- SECTION SOMBRE --------------------------------------------------------
   Poser la classe .mtc-sombre sur une Row inverse automatiquement TOUS les
   tokens fonctionnels de ses enfants : titres, textes, filets et boutons
   secondaires s'adaptent sans qu'on ajoute une seule classe dessus. */
.mtc-sombre{
  --mtc-c-fond:     var(--mtc-noir);
  --mtc-c-fond-alt: var(--mtc-noir-profond);
  --mtc-c-texte:    var(--mtc-blanc);
  --mtc-c-texte-2:  rgba(247,244,239,.68);
  --mtc-c-filet:    var(--mtc-c-filet-inv);
  background-color: var(--mtc-c-fond);
  color: var(--mtc-c-texte);
}


/* ===========================================================================
   SYSTEME DE BOUTONS  (ex-snippet 78, valeurs identiques)
   ---------------------------------------------------------------------------
   PREMIUM (conversion : RDV, contact)  ->  class="mtc-cta"
   SECONDAIRE (navigation)              ->  class="mtc-cta-2"
   Sur fond sombre                      ->  class="mtc-cta-2 mtc-on-dark"
   Tailles                              ->  mtc-sm | mtc-lg | mtc-block

   Les valeurs en dur du snippet 78 sont remplacees par les tokens ci-dessus.
   Le rendu est identique au pixel ; la difference est qu'un changement de
   dore dans Blocksy se propage maintenant partout.
   =========================================================================== */

.mtc-cta{
  position: relative;
  overflow: hidden;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 11px;
  padding: 17px 38px;
  font-size: .92rem;
  font-weight: 600;
  letter-spacing: var(--mtc-ls-cta, .03em);
  line-height: 1;
  text-decoration: none;
  color: var(--mtc-noir, #1A1A1A);
  border-radius: var(--mtc-cta-r, 3px);
  border: var(--mtc-cta-bord, 1px solid rgba(184,148,95,.6));
  background: var(--mtc-cta-degrade, linear-gradient(135deg,#D4B078 0%,#B8945F 55%,#A67D47 100%));
  box-shadow: var(--mtc-cta-ombre, 0 10px 30px rgba(184,148,95,.28), 0 2px 6px rgba(0,0,0,.18));
  cursor: pointer;
  transition: transform .35s cubic-bezier(.2,.7,.3,1), box-shadow .35s;
}
.mtc-cta:hover{
  color: var(--mtc-noir, #1A1A1A);
  transform: translateY(-3px);
  box-shadow: var(--mtc-cta-ombre-fort, 0 16px 40px rgba(184,148,95,.42), 0 4px 10px rgba(0,0,0,.22));
}
.mtc-cta:active{ transform: translateY(-1px); }
.mtc-cta:focus-visible{ outline: 2px solid var(--mtc-blanc-pur, #FFF); outline-offset: 3px; }

.mtc-cta svg{
  width: 18px; height: 18px; flex-shrink: 0;
  position: relative; z-index: 1;
  transition: transform .35s;
}
.mtc-cta:hover svg{ transform: scale(1.12); }

/* Balayage de brillance au survol. */
.mtc-cta::after{
  content: "";
  position: absolute; top: 0; left: -120%;
  width: 70%; height: 100%;
  background: var(--mtc-cta-brillance, linear-gradient(120deg,transparent 0%,rgba(255,255,255,.55) 50%,transparent 100%));
  transform: skewX(-20deg);
  transition: left .6s ease;
}
.mtc-cta:hover::after{ left: 140%; }

/* ---- Bouton secondaire : navigation (fond clair par defaut) -------------- */
.mtc-cta-2{
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  padding: 16px 32px;
  font-size: .9rem;
  font-weight: 600;
  letter-spacing: var(--mtc-ls-cta, .03em);
  line-height: 1;
  text-decoration: none;
  color: var(--mtc-c-texte, #1A1A1A);
  border-radius: var(--mtc-cta-r, 3px);
  border: 1px solid rgba(26,26,26,.28);
  background: transparent;
  cursor: pointer;
  transition: border-color .35s, background .35s, color .35s, transform .35s;
}
.mtc-cta-2:hover{
  border-color: var(--mtc-c-accent, #B8945F);
  background: rgba(184,148,95,.1);
  color: var(--mtc-c-texte, #1A1A1A);
  transform: translateY(-2px);
}
.mtc-cta-2:focus-visible{ outline: 2px solid var(--mtc-c-accent, #B8945F); outline-offset: 3px; }
.mtc-cta-2 svg{ width: 17px; height: 17px; flex-shrink: 0; transition: transform .35s; }
.mtc-cta-2:hover svg{ transform: translateX(3px); }

/* Modificateur fond sombre : class="mtc-cta-2 mtc-on-dark" */
.mtc-cta-2.mtc-on-dark{
  color: var(--mtc-blanc, #F7F4EF);
  border-color: rgba(247,244,239,.35);
  background: rgba(247,244,239,.04);
}
.mtc-cta-2.mtc-on-dark:hover{
  border-color: var(--mtc-c-accent, #B8945F);
  background: rgba(184,148,95,.12);
  color: var(--mtc-blanc-pur, #FFF);
}

/* Dans une section .mtc-sombre, le bouton secondaire s'inverse tout seul :
   plus besoin de penser a ajouter .mtc-on-dark. */
.mtc-sombre .mtc-cta-2:not(.mtc-on-dark){
  color: var(--mtc-blanc, #F7F4EF);
  border-color: rgba(247,244,239,.35);
  background: rgba(247,244,239,.04);
}
.mtc-sombre .mtc-cta-2:not(.mtc-on-dark):hover{
  border-color: var(--mtc-c-accent, #B8945F);
  background: rgba(184,148,95,.12);
  color: var(--mtc-blanc-pur, #FFF);
}

/* ---- Variantes de taille ------------------------------------------------- */
.mtc-sm{ padding: 12px 24px; font-size: .82rem; gap: 8px; }
.mtc-sm svg{ width: 15px; height: 15px; }

.mtc-lg{ padding: 20px 46px; font-size: 1rem; gap: 13px; }
.mtc-lg svg{ width: 20px; height: 20px; }

.mtc-block{ display: flex; width: 100%; }

@media (max-width: 768px){
  .mtc-cta{   padding: 15px 30px; font-size: .88rem; }
  .mtc-cta-2{ padding: 14px 26px; font-size: .86rem; }
}

/* ===========================================================================
   ICONES PRETES A COLLER DANS LES BOUTONS
   ---------------------------------------------------------------------------
   Calendrier (RDV) — AVANT le texte :
   <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><rect x="3" y="4" width="18" height="18" rx="2"/><path d="M16 2v4M8 2v4M3 10h18"/></svg>

   Fleche (navigation) — APRES le texte :
   <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M5 12h14M13 6l6 6-6 6"/></svg>

   Telephone — AVANT le texte :
   <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M22 16.92v3a2 2 0 0 1-2.18 2 19.79 19.79 0 0 1-8.63-3.07 19.5 19.5 0 0 1-6-6 19.79 19.79 0 0 1-3.07-8.67A2 2 0 0 1 4.11 2h3a2 2 0 0 1 2 1.72c.13.96.36 1.9.7 2.81a2 2 0 0 1-.45 2.11L8.09 9.91a16 16 0 0 0 6 6l1.27-1.27a2 2 0 0 1 2.11-.45c.9.34 1.85.57 2.81.7A2 2 0 0 1 22 16.92z"/></svg>

   Repere lieu (showroom) — AVANT le texte :
   <svg viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="1.7" stroke-linecap="round" stroke-linejoin="round"><path d="M21 10c0 7-9 13-9 13s-9-6-9-13a9 9 0 0 1 18 0z"/><circle cx="12" cy="10" r="3"/></svg>
   =========================================================================== */


/* =============================================================================
   SECTION 2 — SOCLE COMMUN — COMPOSANTS PARTAGES
   Prefixe : .mtcs-card*  .mtcsh-media*  .mtcsh-points  .mtca-* (avis)  .realmt  ·  Ajoute le 11/08/2026  ·  Source : extrait 242, regles des composants reutilises
   Sert : accueil (2) ET pages services (217 · 219 · 221)
   ============================================================================= */



/* Carte carree (apparition pilotee par le scroll via JS) */
.mtcs-card{position:relative;display:block;aspect-ratio:1/1;overflow:hidden;
  text-decoration:none;background:#111;border-radius:8px;
  will-change:opacity,transform;}

/* Photo en fond plein + leger zoom au hover */
.mtcs-img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;display:block;
  transform:scale(1.02);transition:transform 1.1s cubic-bezier(.2,.7,.3,1);}
.mtcs-card:hover .mtcs-img{transform:scale(1.08);}

/* Voile noir : leger au repos, plus opaque au hover */
.mtcs-veil{position:absolute;inset:0;pointer-events:none;
  background:linear-gradient(to top,rgba(10,9,8,.72) 0%,rgba(10,9,8,.28) 42%,rgba(10,9,8,.12) 100%);
  transition:background .5s ease;}
.mtcs-card:hover .mtcs-veil{
  background:linear-gradient(to top,rgba(10,9,8,.9) 0%,rgba(10,9,8,.68) 55%,rgba(10,9,8,.5) 100%);}

/* Cadre blanc qui se trace sur les 4 cotes au hover (2 pseudo-traits en L) */
.mtcs-frame{position:absolute;inset:14px;pointer-events:none;z-index:2;border-radius:4px;}
.mtcs-frame::before,.mtcs-frame::after{content:"";position:absolute;inset:0;border-radius:4px;}
.mtcs-frame::before{
  border-top:1px solid rgba(247,244,239,.9);
  border-right:1px solid rgba(247,244,239,.9);
  clip-path:inset(0 0 100% 100%);
  transition:clip-path .5s ease .05s;}
.mtcs-frame::after{
  border-bottom:1px solid rgba(247,244,239,.9);
  border-left:1px solid rgba(247,244,239,.9);
  clip-path:inset(100% 100% 0 0);
  transition:clip-path .5s ease .05s;}
.mtcs-card:hover .mtcs-frame::before{clip-path:inset(0 0 0 0);}
.mtcs-card:hover .mtcs-frame::after{clip-path:inset(0 0 0 0);}

/* Bulle "Decouvrir" en haut a droite, dans le cadre, revelee au hover */
.mtcs-bubble{position:absolute;top:26px;right:26px;z-index:4;
  display:inline-flex;align-items:center;gap:8px;
  padding:9px 16px;border-radius:100px;
  background:#fff;color:var(--mtc-noir);
  font-size:.78rem;font-weight:600;letter-spacing:.02em;white-space:nowrap;
  box-shadow:0 6px 18px rgba(0,0,0,.28);
  opacity:0;transform:translateY(-8px) scale(.94);
  transition:opacity .45s ease .12s,transform .45s cubic-bezier(.2,.7,.3,1) .12s;}
.mtcs-bubble svg{width:15px;height:15px;transition:transform .35s;}
.mtcs-card:hover .mtcs-bubble{opacity:1;transform:translateY(0) scale(1);}
.mtcs-card:hover .mtcs-bubble svg{transform:translateX(3px);}

/* Legende : H3 en bas a gauche, description revelee au hover */
.mtcs-caption{position:absolute;left:0;right:0;bottom:0;z-index:3;
  padding:26px 26px 28px;text-align:left;}
.mtcs-card-title{margin:0;color:#fff;font-weight:500;
  font-size:clamp(1.5rem,2vw,2rem);line-height:1.15;
  text-shadow:0 2px 16px rgba(0,0,0,.6);}
.mtcs-card-desc{margin:0;color:rgba(247,244,239,.92);
  line-height:1.55;text-shadow:0 2px 14px rgba(0,0,0,.7);
  max-height:0;opacity:0;overflow:hidden;
  transform:translateY(6px);
  transition:max-height .5s ease,opacity .45s ease,transform .5s ease,margin-top .5s ease;
  margin-top:0;}
.mtcs-card:hover .mtcs-card-desc{max-height:140px;opacity:1;transform:translateY(0);margin-top:12px;}

/* Sur mobile (pas de hover) : description + bulle visibles en permanence */
@media (hover:none){
  .mtcs-card-desc{max-height:140px;opacity:1;transform:none;margin-top:12px;}
  .mtcs-veil{background:linear-gradient(to top,rgba(10,9,8,.85) 0%,rgba(10,9,8,.5) 55%,rgba(10,9,8,.3) 100%);}
  .mtcs-bubble{opacity:1;transform:none;}
}

/* Trois photos superposées et décalées à gauche, format original conservé */
.mtcsh-media{position:relative;will-change:opacity,transform;
  padding:12% 8% 16% 6%;}   /* marge de sécurité (plus verticale) pour l'écartement + inclinaison */
.mtcsh-photo{position:absolute;border-radius:10px;overflow:hidden;
  box-shadow:0 22px 55px rgba(0,0,0,.42);}
.mtcsh-photo img{width:100%;height:auto;display:block;will-change:transform;}
/* photo 1 : dans le flux (donne sa hauteur naturelle au conteneur) */
.mtcsh-photo-1{position:relative;z-index:1;width:60%;}
/* photo 2 : droite, chevauche */
.mtcsh-photo-2{z-index:2;top:24%;right:2%;width:58%;
  border:4px solid rgba(20,18,16,1);}
/* photo 3 : bas gauche, au premier plan */
.mtcsh-photo-3{z-index:3;bottom:0;left:2%;width:60%;
  border:4px solid rgba(20,18,16,1);}
/* petit cadre en retrait sur la photo de devant, signature premium */
.mtcsh-media-frame{position:absolute;inset:12px;border:1px solid rgba(247,244,239,.35);
  border-radius:4px;pointer-events:none;}
.mtcsh-points{list-style:none;margin:26px 0 34px;padding:0;display:flex;flex-direction:column;gap:14px;}
.mtcsh-points li{display:flex;align-items:center;gap:12px;
  color:rgba(247,244,239,.9);font-size:.98rem;}
.mtcsh-points svg{width:20px;height:20px;flex-shrink:0;color:var(--mtc-dore);
  padding:4px;border:1px solid rgba(184,148,95,.4);border-radius:50%;box-sizing:content-box;width:16px;height:16px;}

/* ===== Bloc WordPress "Derniers articles" (classe realmt) stylé en cartes premium ===== */
.realmt.wp-block-latest-posts{list-style:none;margin:0;padding:0;
  display:grid;grid-template-columns:repeat(3,1fr);gap:clamp(16px,1.6vw,26px);}
@media (max-width:900px){.realmt.wp-block-latest-posts{grid-template-columns:1fr;max-width:520px;margin:0 auto;}}

.realmt.wp-block-latest-posts > li{position:relative;
  background:#111;border-radius:10px;overflow:hidden;
  box-shadow:0 16px 40px rgba(0,0,0,.28);
  will-change:opacity,transform;
  transition:transform .5s cubic-bezier(.2,.7,.3,1),box-shadow .5s;}
.realmt.wp-block-latest-posts > li:hover{transform:translateY(-6px);
  box-shadow:0 28px 60px rgba(0,0,0,.4);}

/* Image à la une */
.realmt .wp-block-latest-posts__featured-image{margin:0;overflow:hidden;line-height:0;}
.realmt .wp-block-latest-posts__featured-image a{display:block;position:relative;aspect-ratio:3/2;overflow:hidden;}
.realmt .wp-block-latest-posts__featured-image img{position:absolute;inset:0;
  width:100%!important;height:100%!important;object-fit:cover;display:block;
  transform:scale(1.03);transition:transform 1s cubic-bezier(.2,.7,.3,1);}
.realmt.wp-block-latest-posts > li:hover .wp-block-latest-posts__featured-image img{transform:scale(1.1);}
/* voile bas : léger au repos, plus opaque au hover (comme section univers) */
.realmt .wp-block-latest-posts__featured-image a::after{content:"";position:absolute;inset:0;pointer-events:none;z-index:1;
  background:linear-gradient(to top,rgba(10,9,8,.55) 0%,rgba(10,9,8,.12) 45%,rgba(10,9,8,0) 100%);
  opacity:.7;transition:opacity .5s;}
.realmt.wp-block-latest-posts > li:hover .wp-block-latest-posts__featured-image a::after{opacity:.92;}

/* Cadre blanc qui se trace sur les 4 côtés au hover (2 pseudo-traits en L) — signature section univers */
.realmt .wp-block-latest-posts__featured-image a::before{content:"";position:absolute;inset:14px;z-index:2;pointer-events:none;border-radius:4px;
  border-top:1px solid rgba(247,244,239,.9);border-right:1px solid rgba(247,244,239,.9);
  clip-path:inset(0 0 100% 100%);transition:clip-path .55s ease .05s;}
.realmt .wp-block-latest-posts__featured-image{position:relative;}
.realmt.wp-block-latest-posts > li:hover .wp-block-latest-posts__featured-image a::before{clip-path:inset(0 0 0 0);}
/* 2e trait (bas+gauche) porté par le conteneur featured-image */
.realmt .wp-block-latest-posts__featured-image::before{content:"";position:absolute;inset:14px;z-index:2;pointer-events:none;border-radius:4px;
  border-bottom:1px solid rgba(247,244,239,.9);border-left:1px solid rgba(247,244,239,.9);
  clip-path:inset(100% 100% 0 0);transition:clip-path .55s ease .05s;}
.realmt.wp-block-latest-posts > li:hover .wp-block-latest-posts__featured-image::before{clip-path:inset(0 0 0 0);}

/* Bulle "Découvrir" en fond blanc + flèche droite, en haut à droite de l'image — signature section univers */
.realmt .wp-block-latest-posts__featured-image::after{content:"Découvrir →";z-index:3;pointer-events:none;
  position:absolute;top:26px;right:26px;
  display:inline-flex;align-items:center;line-height:1;
  padding:12px 16px;border-radius:100px;
  background:#fff;color:var(--mtc-noir);
  font-size:.78rem;font-weight:600;letter-spacing:.02em;white-space:nowrap;
  box-shadow:0 6px 18px rgba(0,0,0,.28);
  opacity:0;transform:translateY(-8px) scale(.94);
  transition:opacity .45s ease .12s,transform .45s cubic-bezier(.2,.7,.3,1) .12s;}
.realmt.wp-block-latest-posts > li:hover .wp-block-latest-posts__featured-image::after{opacity:1;transform:translateY(0) scale(1);}

/* Titre de l'article */
.realmt .wp-block-latest-posts__post-title{display:block;
  padding:22px 24px 0;margin:0;
  color:#fff;font-weight:500;font-size:1.35rem;line-height:1.22;text-decoration:none;
  transition:color .3s;}
.realmt .wp-block-latest-posts__post-title:hover{color:var(--mtc-dore);}

/* Extrait */
.realmt .wp-block-latest-posts__post-excerpt{padding:12px 24px 24px;margin:0;
  color:rgba(247,244,239,.72);font-size:.92rem;line-height:1.6;}

/* filet doré en bas de carte au hover */
.realmt.wp-block-latest-posts > li::after{content:"";position:absolute;left:24px;bottom:0;height:2px;width:0;pointer-events:none;
  background:var(--mtc-dore);transition:width .5s ease;}
.realmt.wp-block-latest-posts > li:hover::after{width:44px;}

/* ============ PARTIE 2 : Avis (3 par 3) ============ */
.mtca-reviews-sec{
  position:relative;padding:clamp(50px,8vh,100px) 0;}
.mtca-reviews-sec *{box-sizing:border-box;}
.mtca-reviews-head{text-align:center;max-width:680px;margin:0 auto clamp(40px,5vw,60px);}
.mtca-rating{display:flex;align-items:center;justify-content:center;gap:14px;flex-wrap:wrap;margin-top:20px;}
.mtca-rating-note{font-size:clamp(2rem,3.4vw,2.6rem);color:#fff;line-height:1;font-weight:400;}
.mtca-stars{display:inline-flex;gap:3px;color:var(--mtc-dore);}
.mtca-stars svg{width:20px;height:20px;}
.mtca-google{display:inline-flex;align-items:center;gap:7px;color:rgba(247,244,239,.75);font-size:.88rem;
  padding-left:14px;border-left:1px solid rgba(247,244,239,.2);}

.mtca-slider{overflow:hidden;position:relative;width:100%;}
.mtca-track{display:flex;transition:transform .55s cubic-bezier(.4,.1,.2,1);will-change:transform;}
/* 3 cartes visibles : chaque carte = (100% - 2 gaps) / 3 ; gap géré par marge */
.mtca-review{flex:0 0 calc((100% - 48px)/3);margin-right:24px;
  background:rgba(255,255,255,.035);border:1px solid rgba(247,244,239,.1);
  border-radius:12px;padding:30px 28px;display:flex;flex-direction:column;gap:16px;
  backdrop-filter:blur(4px);min-height:300px;}
.mtca-review-stars span{color:var(--mtc-dore);font-size:1.05rem;letter-spacing:2px;}
.mtca-review-text{margin:0;flex:1;color:rgba(247,244,239,.85);font-size:.96rem;line-height:1.62;}
.mtca-review-author{display:flex;align-items:center;gap:12px;padding-top:16px;border-top:1px solid rgba(247,244,239,.1);}
.mtca-avatar{width:42px;height:42px;border-radius:50%;flex-shrink:0;display:flex;align-items:center;justify-content:center;
  background:linear-gradient(135deg,var(--mtc-dore),#9a7847);color:#1a1a1a;font-weight:600;font-size:1.05rem;}
.mtca-author-info{display:flex;flex-direction:column;gap:2px;line-height:1.3;}
.mtca-author-info b{color:#fff;font-weight:500;font-size:.95rem;}
.mtca-author-info i{color:rgba(247,244,239,.5);font-style:normal;font-size:.8rem;}

.mtca-controls{display:flex;align-items:center;justify-content:center;gap:18px;margin-top:clamp(30px,4vw,44px);}
.mtca-arrow{width:48px;height:48px;border-radius:50%;cursor:pointer;flex-shrink:0;
  display:flex;align-items:center;justify-content:center;
  background:transparent;border:1px solid rgba(247,244,239,.25);color:#fff;
  transition:border-color .3s,background .3s;}
.mtca-arrow:hover{border-color:var(--mtc-dore);background:rgba(184,148,95,.12);}
.mtca-arrow:disabled{opacity:.3;cursor:default;}
.mtca-arrow svg{width:20px;height:20px;}
.mtca-dots{display:flex;gap:9px;}
.mtca-dot{width:8px;height:8px;border-radius:50%;cursor:pointer;padding:0;border:0;
  background:rgba(247,244,239,.25);transition:background .3s,width .3s;}
.mtca-dot.mtca-active{background:var(--mtc-dore);width:24px;border-radius:4px;}
.mtca-google-row{display:flex;justify-content:center;margin-top:26px;}
.mtca-google-link{color:rgba(247,244,239,.7);font-size:.88rem;text-decoration:none;transition:color .3s;}
.mtca-google-link:hover{color:var(--mtc-dore);}

/* =============================================================================
   SECTION 3 — PAGE D'ACCUEIL (2)
   Prefixe : .mtc-hero*  .mtcs-*  .mtcsh-*  .mtcr-*  .mtcp-*  .mtca-*  .mtcf-*  .mtcl-*  .mtcb-*  .mtcw-*  ·  Ajoute le 11/08/2026  ·  Source : extrait 242 CSS Accueil
   Sert : la page d'accueil, et elle seule
   ============================================================================= */

/* ATTENTION AUX NUMEROS. Les commentaires internes de cette section parlent de
   « SECTION 1 — HERO », « SECTION 2 — UNIVERS », etc. : c'est la numerotation
   d'ORIGINE de l'extrait 242, celle des sept sections de la page d'accueil. Elle
   est conservee telle quelle pour que les rapports precedents restent lisibles.
   Elle n'a rien a voir avec les SECTIONS 1 a 5 du present fichier, annoncees par
   un bandeau encadre. Ne pas les renumeroter : ce serait reecrire l'historique.

   Cinq blocs @media de cette section melangent des regles de composants partages
   (SECTION 2) et des regles propres a l'accueil. Ils n'ont PAS ete scindes : les
   scinder aurait demande de reecrire des selecteurs. Ils sont restes en bloc, dans
   leur ordre d'origine. Sans effet : le fichier est servi sur toutes les pages, la
   separation socle / accueil est documentaire, plus fonctionnelle. */

/* =====================================================================
   [MTC] Accueil · CSS
   MT Cuisine — feuille de style de la page d'accueil (7 sections)
   ---------------------------------------------------------------------
   Extrait des 7 blocs <style> qui vivaient dans le contenu de la page.
   Le contenu de la page ne contient plus que du HTML.

   Emplacement   : En-tête du site (Site Header)
   Type          : Extrait CSS (WPCode)
   Se charge sur : page d'accueil uniquement — conditionner sur "Est la
                   page d'accueil" dans la logique conditionnelle WPCode.

   Ordre des sections identique à l'ordre d'affichage.
   Aucune classe n'a été renommée. Aucune valeur n'a été modifiée.
   ===================================================================== */


/* ---------------------------------------------------------------------
   PALETTE — déclarée UNE SEULE FOIS
   ---------------------------------------------------------------------
   Avant : ces 4 variables étaient redéclarées 8 fois, une par conteneur
   de section (.mtc-hero-scroll, .mtcs-univers, .mtcsh-showroom,
   .mtcr-real, .mtcp-process, .mtca-intro-sec, .mtca-reviews-sec,
   .mtcf-cta). Elles sont maintenant dans :root.

   Les couleurs sont branchées sur la palette Blocksy avec la valeur
   d'origine en repli. Si le thème ne définit pas la variable, le rendu
   est strictement identique à avant.

   ⚠ À VÉRIFIER AVANT MISE EN LIGNE : la correspondance des numéros de
   palette dans Personnaliser → Couleurs. Test : changer la couleur 1
   dans le Customizer et vérifier que le doré de la page suit. Si le
   rendu ne suit pas, le pont ne fonctionne pas et il faut corriger le
   numéro — ou retirer les var() et garder les valeurs en dur.
   --------------------------------------------------------------------- */
/* La palette n'est plus déclarée ici : elle appartient au snippet global
   « mtc-fondations », qui la pose dès le début du <head> et fait autorité.
   La redéclarer créait un doublon — mêmes valeurs aujourd'hui, mais toute
   modification faite dans les fondations aurait été écrasée par ce fichier.
   Variables consommées ici : --mtc-dore, --mtc-noir, --mtc-blanc, --mtc-gris.
   ⚠ Si le snippet « mtc-fondations » est désactivé, cette page perd ses
   couleurs. C'est une dépendance assumée, pas un oubli. */


/* ---------------------------------------------------------------------
   SOCLE COMMUN — mécanisme de défilement collant
   ---------------------------------------------------------------------
   Les 5 sections à défilement collant déclaraient toutes
   « position:relative » sur leur conteneur de course et
   « position:sticky ; top:0 » sur la section elle-même.
   Regroupé ici. Les hauteurs de course restent propres à chaque
   section (190vh, 180vh, 190vh, 250vh, 180vh) et sont conservées
   telles quelles dans le bloc de chaque section.
   --------------------------------------------------------------------- */
.mtcs-scroll,.mtcsh-scroll,.mtcr-scroll,.mtcp-scroll,.mtca-scroll{position:relative;}
.mtcs-univers,.mtcsh-showroom,.mtcr-real,.mtcp-process,.mtca-intro-sec{position:sticky;top:0;}


/* =====================================================================
   SECTION 1 — HERO (défilement collant 400vh, grille 9 photos, panneau de révélation)
   ===================================================================== */
.mtc-hero-scroll{
  height:400vh;position:relative;}
.mtc-hero-scroll *{box-sizing:border-box;}
.mtc-hero-sticky{position:sticky;top:0;height:100vh;height:100svh;overflow:hidden;
  display:flex;align-items:center;justify-content:center;background:#0d0d0d;}

.mtc-bg{position:absolute;inset:0;z-index:0;
  background:radial-gradient(circle at 50% 42%,
    rgba(40,36,32, calc(var(--mtc-lum,0)*0.9)) 0%,
    rgba(8,8,8,1) 50%, #000 100%);}
.mtc-bg::after{content:"";position:absolute;inset:0;
  background:var(--mtc-blanc);opacity:calc(var(--mtc-lum,0)*0.06);}

/* CALQUE DE VOILE AU PREMIER PLAN (devant les images, derrière les textes) */
/* dense au tout début, se dissipe au scroll, revient pour la phrase — piloté par --mtc-dark 0..1 */
.mtc-overlay{position:absolute;inset:0;z-index:5;pointer-events:none;
  background:#000;opacity:var(--mtc-dark,1);}

/* LOGO : à droite du texte, tilt 3D à la souris, disparaît avec le 1er contenu */
.mtc-logo-wrap{flex:0 0 auto;perspective:900px;pointer-events:none;
  will-change:opacity,transform;
  animation:mtc-logo-in 1.4s cubic-bezier(.16,.8,.3,1) both;}
.mtc-logo{display:block;width:clamp(200px,20vw,340px);height:auto;
  filter:drop-shadow(0 14px 34px rgba(0,0,0,.55));
  /* Safari : « transform-style:preserve-3d » retiré. Combiné à un
     filter:drop-shadow sur le même élément, il fait disparaître ou clignoter
     l'élément sur Safari. Le logo n'a aucun enfant en 3D, la propriété ne
     servait à rien. */
  transition:transform .18s ease-out;will-change:transform;}
@keyframes mtc-logo-in{
  0%{opacity:0;transform:translateX(70px);}
  100%{opacity:1;transform:translateX(0);}
}

.mtc-grid{position:absolute;inset:0;z-index:1;transform-origin:center center;will-change:transform;}
.mtc-cell{position:absolute;overflow:hidden;background:#1e1e1e;border-radius:4px;
  /* Safari : « filter » retiré de will-change. Le JS n'anime jamais le filtre
     de ces cellules — il ne touche que transform et opacity. La déclarer forçait
     9 couches de filtre GPU inutiles, cause connue de scintillement et de
     cellules blanches sur Safari. */
  will-change:opacity,transform;
  -webkit-backface-visibility:hidden;backface-visibility:hidden;transform-origin:center center;
  box-shadow:0 20px 50px rgba(0,0,0,.35);}
/* Safari : les cellules du hero peuvent recevoir un <picture> (repli AVIF →
   WebP). Sans cette règle, le <picture> reste inline et casse la grille. */
.mtc-cell picture{display:block;width:100%;height:100%;}
.mtc-static-bg picture,
.mtc-static-media picture,
.mtca-photo picture,
.realmt .wp-block-latest-posts__featured-image picture{display:block;width:100%;height:100%;}

.mtc-cell img{width:100%;height:100%;object-fit:cover;display:block;will-change:transform;}
.mtc-cell::after{content:"";position:absolute;inset:0;
  background:rgba(15,13,11,.30);opacity:var(--mtc-veil,1);}
.mtc-cell.mtc-center::after{background:rgba(15,13,11,.40);}

.mtc-content{position:relative;z-index:10;display:flex;align-items:center;
  justify-content:space-between;gap:5vw;width:100%;max-width:1600px;padding:0 5vw;
  text-align:left;will-change:opacity,transform;}
.mtc-content-text{flex:1 1 auto;max-width:820px;}
.mtc-surtitre{font-size:.82rem;letter-spacing:.22em;text-transform:uppercase;
  color:var(--mtc-dore);margin:0 0 22px;}
.mtc-h1{font-weight:400;font-size:clamp(2.4rem,5vw,4.4rem);line-height:1.1;
  color:var(--mtc-blanc);margin:0 0 26px;text-shadow:0 2px 30px rgba(0,0,0,.6);}
.mtc-sous-titre{font-size:clamp(1rem,1.4vw,1.18rem);line-height:1.6;
  color:rgba(247,244,239,.92);max-width:600px;margin:0 0 40px;
  text-shadow:0 2px 20px rgba(0,0,0,.5);}
.mtc-cta-row{display:flex;gap:20px;align-items:center;justify-content:flex-start;flex-wrap:wrap;}

/* PILIERS DE RÉASSURANCE (dans le bloc de révélation, entre la phrase et le bouton) */
.mtc-piliers{display:flex;align-items:center;justify-content:center;gap:22px;flex-wrap:wrap;
  margin:0 0 30px;}
.mtc-pilier{display:inline-flex;align-items:center;gap:10px;
  color:rgba(247,244,239,.92);}
.mtc-pilier svg{width:22px;height:22px;flex-shrink:0;color:var(--mtc-dore);}
.mtc-pilier span{font-size:.9rem;letter-spacing:.02em;font-weight:500;
  text-shadow:0 2px 14px rgba(0,0,0,.5);}
.mtc-pilier-sep{width:1px;height:24px;background:rgba(184,148,95,.4);flex-shrink:0;}

/* Les styles des boutons (.mtc-cta et .mtc-cta-2) sont dans le snippet CSS global du site. */

.mtc-reveal{position:absolute;z-index:11;left:50%;top:50%;
  transform:translate(-50%,-50%);text-align:center;padding:38px 54px;
  opacity:0;pointer-events:none;will-change:opacity,transform;
  background:radial-gradient(ellipse at center,rgba(10,9,8,.62) 0%,rgba(10,9,8,.35) 55%,rgba(10,9,8,0) 78%);}
.mtc-reveal-line{font-size:clamp(1.3rem,2.4vw,2rem);letter-spacing:.01em;
  color:rgba(247,244,239,.85);margin:0 0 6px;text-shadow:0 2px 24px rgba(0,0,0,.7);}

/* — le millesime « Since 2012 » — 25 aout 2026 —
   Remplace « 14 ans de metier ». L'interlettrage tombe a .06em : un
   interlettrage large est fait pour des capitales batons, applique a une
   manuscrite il casse les liaisons. La presence vient de la taille et des
   deux filets. La police manuscrite est l'une des DEUX seules du fichier,
   voir la note en tete. */
.mtc-millesime{display:block;margin:0 0 14px;
  font-family:var(--mtc-police-manuscrite, above-the-beyond, sans-serif);
  font-weight:400;font-style:normal;
  color:var(--mtc-dore);line-height:1.1;
  font-size:clamp(1.35rem,2.2vw,1.9rem);
  letter-spacing:.06em;text-transform:none;
  text-shadow:none;}
.mtc-millesime::before,
.mtc-millesime::after{content:"";display:inline-block;
  width:clamp(22px,3vw,44px);height:1px;vertical-align:middle;}
.mtc-millesime::before{margin-right:.7em;
  background:linear-gradient(90deg,transparent,var(--mtc-dore));}
.mtc-millesime::after{margin-left:.7em;
  background:linear-gradient(90deg,var(--mtc-dore),transparent);}
.mtc-reveal-strong{font-weight:500;font-size:clamp(2rem,4.4vw,3.6rem);line-height:1.12;
  color:var(--mtc-blanc);margin:0 0 28px;text-shadow:0 2px 30px rgba(0,0,0,.75);}
.mtc-reveal-btn{pointer-events:auto;}

/* Flèche "continuer votre navigation" — apparaît tout à la fin, sous la phrase */
.mtc-continue{position:absolute;z-index:11;left:50%;bottom:6vh;
  transform:translateX(-50%) translateY(14px);text-align:center;
  opacity:0;pointer-events:none;will-change:opacity,transform;
  display:flex;flex-direction:column;align-items:center;gap:10px;}
.mtc-continue-txt{font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(247,244,239,.72);}
.mtc-continue-arrow{color:var(--mtc-dore);display:inline-flex;
  animation:mtc-arrow 1.8s ease-in-out infinite;}
@keyframes mtc-arrow{0%,100%{transform:translateY(0);}50%{transform:translateY(7px);}}

.mtc-scroll-hint{position:absolute;bottom:34px;left:50%;transform:translateX(-50%);z-index:10;
  font-size:.72rem;letter-spacing:.2em;text-transform:uppercase;
  color:rgba(247,244,239,.6);animation:mtc-bob 2s ease-in-out infinite;}
@keyframes mtc-bob{0%,100%{transform:translateX(-50%) translateY(0);}
  50%{transform:translateX(-50%) translateY(8px);}}

/* ===== HERO STATIQUE (mobile & tablette) : masqué sur desktop ===== */
.mtc-hero-static{display:none;}

/* ---------- MOBILE & TABLETTE (≤1024px) : hero statique, animation désactivée ---------- */
@media (max-width:1024px){
  /* le conteneur reprend une hauteur normale (plus de course de scroll de 400vh) */
  .mtc-hero-scroll{height:auto!important;}
  /* l'animation sticky est masquée */
  .mtc-hero-sticky{display:none!important;}

  /* le hero statique s'affiche */
  .mtc-hero-static{display:flex;position:relative;
    min-height:100svh;width:100%;overflow:hidden;
    align-items:center;justify-content:center;background:#0d0d0d;}
  .mtc-static-media{position:absolute;inset:0;z-index:0;}
  .mtc-static-media img{width:100%;height:100%;object-fit:cover;display:block;}
  /* v27.11.10 (21/09/2026) : voile renforce depuis la photo 458 (cuisine verte,
     mur en pierre clair derriere le surtitre dore). Meme degrade, memes arrets,
     seule l'opacite monte : .55/.45/.78 -> .72/.83/.86. Mesure pixel par
     pixel sur la photo servie : contraste du surtitre >= 4,5 sur 100 % de sa
     surface a 390, 430 et 768 px (rapport 205 §15). Desktop non concerne. */
  .mtc-static-veil{position:absolute;inset:0;
    background:linear-gradient(180deg, rgba(10,9,8,.72) 0%, rgba(10,9,8,.83) 40%, rgba(10,9,8,.86) 100%);}

  .mtc-static-content{position:relative;z-index:1;text-align:center;
    padding:110px 24px 60px;max-width:640px;display:flex;flex-direction:column;align-items:center;}
  .mtc-static-logo{width:clamp(150px,38vw,210px);height:auto;margin:0 0 14px;
    filter:drop-shadow(0 10px 26px rgba(0,0,0,.5));}
  /* La mention « Showroom prive » s'intercale entre le logo et le surtitre.
     L'ecart de 30px du logo est REPARTI, il n'est pas supprime : 14px jusqu'a
     la mention, 26px de la mention au surtitre. La mention doit toucher le
     logo pour se lire comme son etiquette, d'ou l'ecart court au-dessus.
     Mesure en ligne, vraie police : a 1024x800 et a 390x800 la section grandit
     avec son contenu (min-height:100svh) et le rognage reste a 0. */
  .mtc-static-content .mtc-logo-mention{margin:0 0 26px;}
  .mtc-static-surtitre{font-size:.74rem;letter-spacing:.2em;text-transform:uppercase;
    color:var(--mtc-dore);margin:0 0 18px;}
  .mtc-static-h1{font-weight:400;font-size:clamp(1.9rem,7vw,2.7rem);line-height:1.12;
    color:var(--mtc-blanc);margin:0 0 20px;text-shadow:0 2px 24px rgba(0,0,0,.6);}
  .mtc-static-soustitre{font-size:1rem;line-height:1.6;
    color:rgba(247,244,239,.9);margin:0 0 34px;text-shadow:0 2px 16px rgba(0,0,0,.5);}
  .mtc-static-cta-row{display:flex;flex-wrap:wrap;gap:14px;justify-content:center;}
}

/* =====================================================================
   SECTION 2 — UNIVERS D'INTERVENTION (4 cartes : cuisine, living, dressing, salle de bain)
   ===================================================================== */
/* Conteneur haut : donne la "course" de scroll pendant laquelle la section reste figée */
.mtcs-scroll{height:190vh;}
.mtcs-univers{
  min-height:100vh;
  display:flex;flex-direction:column;justify-content:center;
  padding:clamp(80px,10vh,140px) 0;
  background:transparent;overflow:hidden;}
.mtcs-univers *{box-sizing:border-box;}
.mtcs-inner{width:100%;}

/* En-tete (apparition pilotee par le scroll via JS) */
.mtcs-head{max-width:760px;margin:0 0 clamp(40px,5vw,64px);
  will-change:opacity,transform;}
.mtcs-eyebrow{margin:0 0 18px;color:var(--mtc-dore);
  letter-spacing:.24em;text-transform:uppercase;}
.mtcs-h2{margin:0 0 22px;color:#fff;font-weight:400;line-height:1.12;}
.mtcs-intro{margin:0;color:rgba(247,244,239,.85);line-height:1.65;max-width:620px;}

/* Grille : 4 carres avec espace entre eux */
.mtcs-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:clamp(14px,1.4vw,22px);width:100%;}
@media (max-width:900px){.mtcs-grid{grid-template-columns:repeat(2,1fr);}}
@media (max-width:520px){.mtcs-grid{grid-template-columns:1fr;}}

/* =====================================================================
   SECTION 3 — SHOWROOM PRIVÉ (3 photos décalées + texte + 3 points + CTA)
   ===================================================================== */
/* Conteneur haut : "course" de scroll pendant laquelle la section reste figée */
.mtcsh-scroll{height:180vh;}
.mtcsh-showroom{
  min-height:100vh;
  display:flex;align-items:center;
  padding:clamp(70px,10vh,120px) 0;
  background:transparent;overflow:hidden;}
.mtcsh-showroom *{box-sizing:border-box;}
.mtcsh-inner{width:100%;
  display:grid;grid-template-columns:1fr 1fr;gap:clamp(36px,5vw,80px);align-items:center;}
.mtcsh-inner > .mtcsh-media{min-width:0;}
.mtcsh-inner > .mtcsh-content{min-width:0;}
@media (max-width:900px){
  .mtcsh-inner{grid-template-columns:1fr;gap:40px;}
}

/* Texte à droite */
.mtcsh-content{position:relative;}
.mtcsh-eyebrow{margin:0 0 20px;color:var(--mtc-dore);
  letter-spacing:.24em;text-transform:uppercase;font-size:.8rem;}
.mtcsh-title{margin:0 0 26px;color:#fff;font-weight:400;line-height:1.15;}
.mtcsh-text{margin:0 0 18px;color:rgba(247,244,239,.82);line-height:1.7;max-width:560px;}
.mtcsh-text-strong{color:#fff;}
.mtcsh-cta-row{display:flex;flex-wrap:wrap;gap:16px;}

/* =====================================================================
   SECTION 4 — RÉALISATIONS (bloc « Derniers articles » stylé)
   ===================================================================== */
/* Conteneur haut : "course" de scroll pendant laquelle la section reste figée */
.mtcr-scroll{height:190vh;}
.mtcr-real{
  min-height:100vh;
  display:flex;flex-direction:column;justify-content:center;
  padding:clamp(70px,10vh,120px) 0;
  background:transparent;overflow:hidden;}
.mtcr-real *{box-sizing:border-box;}
.mtcr-inner{width:100%;}

/* En-tete */
.mtcr-head{max-width:760px;margin:0 0 clamp(36px,4.5vw,58px);will-change:opacity,transform;}
.mtcr-eyebrow{margin:0 0 18px;color:var(--mtc-dore);letter-spacing:.24em;text-transform:uppercase;font-size:.8rem;}
.mtcr-h2{margin:0 0 20px;color:#fff;font-weight:400;line-height:1.14;}
.mtcr-intro{margin:0;color:rgba(247,244,239,.82);line-height:1.65;max-width:620px;}

/* CTA sous les cartes */
.mtcr-cta-row{margin-top:clamp(34px,4vw,52px);will-change:opacity,transform;}

/* ===== TABLETTE & TÉLÉPHONE : désactive le sticky, flux normal, révélation au scroll ===== */
@media (max-width:1024px){
  .mtcr-scroll{height:auto!important;min-height:0!important;}
  .mtcr-real{position:relative!important;top:auto!important;min-height:0!important;
    padding:clamp(60px,9vh,110px) 0;}
  /* en-tête, cartes et CTA révélés au scroll via observer (état initial caché) */
  .mtcr-head{opacity:0;transform:translateY(28px);
    transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.3,1);}
  .mtcr-head.mtcr-revealed{opacity:1;transform:none;}
  .realmt.wp-block-latest-posts > li{opacity:0;transform:translateY(30px);
    transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.3,1);}
  .realmt.wp-block-latest-posts > li.mtcr-revealed{opacity:1;transform:none;}
  .mtcr-cta-row{opacity:0;transform:translateY(24px);
    transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.3,1);}
  .mtcr-cta-row.mtcr-revealed{opacity:1;transform:none;}
}

/* =====================================================================
   SECTION 5 — PROCESS (timeline cliquable 5 étapes, fond réactif)
   ===================================================================== */
.mtcp-scroll{height:200vh;}
/* Course ramenée de 250vh à 200vh le 10/08/2026 : la méthode est passée
   de 5 à 4 étapes. Le JS répartit les étapes sur la course (pos = p × N),
   donc à course constante chaque étape aurait duré 25 % plus longtemps.
   250 × 4/5 = 200 : le rythme par étape reste identique à celui validé. */
.mtcp-process{
  height:100vh;overflow:hidden;
  display:flex;flex-direction:column;align-items:center;justify-content:center;
  background:transparent;}
.mtcp-process *{box-sizing:border-box;}

/* ===== Fond réactif au scroll (fin & premium) ===== */
.mtcp-bg{position:absolute;inset:0;z-index:0;pointer-events:none;overflow:hidden;
  background:
    radial-gradient(120% 90% at 50% 0%, rgba(30,27,24,.55) 0%, rgba(13,12,11,0) 60%),
    linear-gradient(180deg, rgba(13,12,11,0) 0%, rgba(10,9,8,.25) 100%);}
/* halo doré qui se déplace horizontalement selon la progression (piloté par --mtcp-x) */
.mtcp-bg-glow{position:absolute;top:50%;left:0;width:60vw;height:60vw;
  transform:translate(calc(var(--mtcp-x,0)*1% - 30vw), -50%);
  background:radial-gradient(circle, rgba(184,148,95,.08) 0%, rgba(184,148,95,.03) 35%, rgba(184,148,95,0) 70%);
  filter:blur(20px);transition:transform .1s linear;will-change:transform;}
/* très léger grain/texture lumineuse qui s'intensifie avec le scroll (--mtcp-p 0..1) */
.mtcp-bg-grain{position:absolute;inset:0;
  background:radial-gradient(140% 120% at 50% 120%, rgba(184,148,95,.05) 0%, rgba(184,148,95,0) 55%);
  opacity:var(--mtcp-p,0);transition:opacity .2s linear;}

.mtcp-head{position:absolute;top:clamp(90px,13vh,150px);left:0;right:0;
  text-align:center;padding:0 6vw;z-index:20;pointer-events:none;}
.mtcp-eyebrow{margin:0 0 14px;color:var(--mtc-dore);letter-spacing:.24em;text-transform:uppercase;font-size:.8rem;}
.mtcp-h2{margin:0;color:#fff;font-weight:400;line-height:1.15;}

/* Scène : occupe l'espace dispo entre en-tête et timeline */
.mtcp-stage{position:absolute;left:0;right:0;z-index:10;max-width:100%;
  top:clamp(170px,24vh,260px);bottom:clamp(110px,16vh,160px);
  overflow:hidden;}

/* Étape : largeur = fraction adaptative ; JS gère position/échelle */
.mtcp-step{position:absolute;top:50%;left:0;
  width:clamp(240px,30vw,400px);
  display:flex;flex-direction:column;align-items:center;text-align:center;
  padding:0 clamp(12px,1.6vw,26px);
  will-change:transform,opacity;transform-origin:center center;
  opacity:0;pointer-events:none;}

.mtcp-num{display:block;font-size:clamp(1.7rem,3.2vw,2.6rem);line-height:1;
  color:rgba(184,148,95,.35);font-weight:300;letter-spacing:.04em;margin:0 0 10px;}

/* Icône : cadre large + padding => jamais croppée, homogène pour les 5 */
.mtcp-icon{width:clamp(84px,10vh,120px);height:clamp(84px,10vh,120px);
  display:flex;align-items:center;justify-content:center;margin:0 0 20px;padding:6px;}
.mtcp-icon img{max-width:100%;max-height:100%;width:auto;height:auto;object-fit:contain;display:block;
  filter:drop-shadow(0 10px 26px rgba(0,0,0,.5));}

.mtcp-step-title{margin:0 0 12px;color:#fff;font-weight:400;
  font-size:clamp(1.25rem,2.2vw,1.9rem);line-height:1.14;}
.mtcp-step-text{margin:0;color:rgba(247,244,239,.8);
  font-size:clamp(.9rem,1.1vw,1.02rem);line-height:1.55;max-width:100%;width:100%;}

/* Timeline */
.mtcp-timeline{position:absolute;bottom:clamp(36px,6vh,68px);left:50%;transform:translateX(-50%);
  width:min(760px,84vw);z-index:20;transition:opacity .4s;}
.mtcp-line{position:absolute;top:18px;left:18px;right:18px;height:2px;
  background:rgba(247,244,239,.18);border-radius:2px;overflow:hidden;}
.mtcp-line-fill{position:absolute;inset:0;width:0;background:var(--mtc-dore);border-radius:2px;}
.mtcp-nodes{position:relative;display:flex;justify-content:space-between;}
.mtcp-node{position:relative;z-index:1;width:36px;height:36px;border-radius:50%;padding:0;cursor:pointer;
  display:flex;align-items:center;justify-content:center;
  background:rgba(20,18,16,1);border:1.5px solid rgba(247,244,239,.25);
  transition:border-color .4s,background .4s,transform .3s,box-shadow .4s;}
.mtcp-node:hover{border-color:var(--mtc-dore);transform:scale(1.12);}
.mtcp-node b{color:rgba(247,244,239,.5);font-size:.9rem;font-weight:500;transition:color .4s;
  font-family:inherit;}
.mtcp-node.mtcp-filled{border-color:var(--mtc-dore);background:var(--mtc-dore);transform:scale(1.1);}
.mtcp-node.mtcp-filled b{color:var(--mtc-noir);}
.mtcp-node.mtcp-current{box-shadow:0 0 0 4px rgba(184,148,95,.18);}

.mtcp-cta-row{position:absolute;bottom:clamp(36px,6vh,68px);left:50%;
  transform:translateX(-50%) translateY(16px);z-index:21;
  opacity:0;pointer-events:none;transition:opacity .5s ease,transform .5s ease;}
.mtcp-cta-row.mtcp-show{opacity:1;transform:translateX(-50%) translateY(0);pointer-events:auto;}
.mtcp-timeline.mtcp-hide{opacity:0;pointer-events:none;}

/* ===== TABLETTE & TÉLÉPHONE : bascule en grille statique lisible (pas d'animation horizontale) ===== */
@media (max-width:1024px){
  /* la course de scroll disparaît : la section reprend une hauteur naturelle */
  .mtcp-scroll{height:auto!important;min-height:0!important;}
  .mtcp-process{position:relative!important;top:auto!important;height:auto!important;min-height:0!important;
    overflow:visible;display:block;padding:clamp(60px,9vh,110px) 5vw;}

  /* en-tête redevient dans le flux */
  .mtcp-head{position:relative!important;top:auto!important;left:auto!important;right:auto!important;padding:0;
    margin:0 auto clamp(40px,6vw,64px)!important;max-width:720px;}

  /* fond en absolu mais borné à la section (pas de débordement) */
  .mtcp-bg{position:absolute;inset:0;height:100%;}

  /* la scène devient une grille */
  .mtcp-stage{position:relative;top:auto;bottom:auto;left:auto;right:auto;height:auto;overflow:visible;
    display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(30px,5vw,54px);
    max-width:820px;margin:0 auto;}

  /* chaque étape reprend sa place dans la grille (plus de position absolue ni de transform JS) */
  .mtcp-step{position:relative!important;top:auto!important;left:auto!important;
    width:100%!important;padding:0 10px;
    opacity:0;transform:translateY(30px);
    transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.3,1);}
  .mtcp-step.mtcp-revealed{opacity:1!important;transform:none!important;}

  /* timeline masquée sur tablette/mobile (elle n'a de sens qu'avec l'animation desktop) */
  .mtcp-timeline{display:none;}
  .mtcp-cta-row{position:relative;bottom:auto;left:auto;right:auto;transform:none;
    margin:clamp(36px,6vw,52px) auto 0;opacity:1;pointer-events:auto;
    display:flex;justify-content:center;width:100%;}
  .mtcp-cta-row .mtc-cta{white-space:nowrap;width:auto;max-width:none;flex:0 0 auto;}

  /* fond animé désactivé (le halo suivait le scroll horizontal) */
  .mtcp-bg-glow{display:none;}
}

@keyframes mtcp-fade-in{from{opacity:0;transform:translateY(24px);}to{opacity:1;transform:none;}}

/* ===== TÉLÉPHONE : une seule colonne ===== */
@media (max-width:600px){
  .mtcp-stage{grid-template-columns:1fr;max-width:420px;gap:clamp(34px,8vw,48px);}
  .mtcp-node{width:30px;height:30px;}
}

/* =====================================================================
   SECTION 6 — QUI SOMMES-NOUS + AVIS GOOGLE (sticky puis slider 3 par 3)
   ===================================================================== */
/* ============ PARTIE 1 : Qui sommes-nous (sticky, anim scroll façon showroom) ============ */
.mtca-scroll{height:180vh;}
.mtca-intro-sec{
  min-height:100vh;display:flex;align-items:center;
  padding:clamp(70px,10vh,120px) 0;background:transparent;overflow:hidden;}
.mtca-intro-sec *{box-sizing:border-box;}
.mtca-intro-inner{width:100%;
  display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1fr);
  gap:clamp(36px,5vw,80px);align-items:center;}
.mtca-intro-inner > .mtca-media,.mtca-intro-inner > .mtca-content{min-width:0;}

/* Photos gérants empilées (N&B, écartement au scroll) */
.mtca-media{position:relative;will-change:opacity,transform;padding:12% 10% 14% 4%;}
.mtca-photo{position:absolute;border-radius:10px;overflow:hidden;box-shadow:0 22px 55px rgba(0,0,0,.45);}
.mtca-photo img{width:100%;height:auto;display:block;will-change:transform;
  filter:grayscale(1) contrast(1.02);transition:filter .5s ease;}
.mtca-photo:hover img{filter:grayscale(0) contrast(1);}
.mtca-photo-1{position:relative;z-index:1;width:60%;}
.mtca-photo-2{z-index:2;bottom:0;right:0;width:58%;border:4px solid rgba(20,18,16,1);}
.mtca-media-frame{position:absolute;inset:12px;border:1px solid rgba(247,244,239,.35);
  border-radius:4px;pointer-events:none;z-index:4;}
.mtca-photo-cap{position:absolute;left:0;right:0;bottom:0;z-index:3;
  padding:30px 16px 14px;display:flex;flex-direction:column;gap:2px;
  background:linear-gradient(180deg,rgba(10,9,8,0) 0%,rgba(10,9,8,.82) 100%);}
.mtca-photo-cap b{color:#fff;font-weight:500;font-size:.98rem;}
.mtca-photo-cap i{color:var(--mtc-dore);font-style:normal;font-size:.76rem;letter-spacing:.05em;}

/* Texte à droite */
.mtca-content{position:relative;}
.mtca-eyebrow{margin:0 0 18px;color:var(--mtc-dore);letter-spacing:.24em;text-transform:uppercase;font-size:.8rem;}
.mtca-title{margin:0 0 24px;color:#fff;font-weight:400;line-height:1.15;}
.mtca-text{margin:0 0 18px;color:rgba(247,244,239,.82);line-height:1.7;max-width:560px;}
.mtca-text-strong{color:#fff;}
.mtca-points{list-style:none;margin:26px 0 34px;padding:0;display:flex;flex-direction:column;gap:14px;}
.mtca-points li{display:flex;align-items:center;gap:12px;color:rgba(247,244,239,.9);font-size:.98rem;}
.mtca-points svg{width:16px;height:16px;flex-shrink:0;color:var(--mtc-dore);
  padding:4px;border:1px solid rgba(184,148,95,.4);border-radius:50%;box-sizing:content-box;}
.mtca-cta-row{display:flex;flex-wrap:wrap;gap:16px;}

/* — la signature « Mathieu & Thomas » — 25 aout 2026 —
   Au pied de « Qui sommes-nous », juste avant les deux boutons. Le HTML porte
   data-mtca="t" : l'observateur existant la revele au defilement, aucun JS
   nouveau. Seconde et derniere occurrence de la police manuscrite. */
.mtc-signature{margin:clamp(26px,3vw,38px) 0 clamp(22px,2.6vw,30px);
  font-family:var(--mtc-police-manuscrite, above-the-beyond, sans-serif);
  font-weight:400;font-style:normal;
  font-size:clamp(1.7rem,3vw,2.5rem);line-height:1;
  color:var(--mtc-dore);
  /* Le filet part du texte et se dissipe : un trait de plume, pas un souligne. */
  padding-bottom:clamp(14px,1.6vw,20px);
  border-bottom:1px solid transparent;
  background:linear-gradient(90deg,var(--mtc-dore),transparent) left bottom / clamp(90px,14vw,190px) 1px no-repeat;}

/* ============ RESPONSIVE ============ */
@media (max-width:960px){
  /* Qui sommes-nous : sticky désactivé, une colonne */
  .mtca-scroll{height:auto!important;}
  .mtca-intro-sec{position:relative!important;top:auto!important;min-height:0!important;
    padding:clamp(60px,9vh,100px) 0;}
  .mtca-intro-inner{grid-template-columns:1fr;gap:clamp(50px,8vw,64px);}
  .mtca-media{order:-1;max-width:420px;margin:0 auto;padding:8% 10% 12% 2%;
    opacity:1!important;}
  /* les textes restent visibles (animation gérée par observer ci-dessous) */
  .mtca-content [data-mtca]{opacity:1!important;transform:none!important;}
  /* Avis : 2 par vue */
  .mtca-review{flex:0 0 calc((100% - 24px)/2);}
}

/* ===== TÉLÉPHONE : photos DÉPILÉES (l'une sous l'autre) pour voir les 2 noms ===== */
@media (max-width:640px){
  /* Avis : 1 par vue */
  .mtca-review{flex:0 0 100%;margin-right:0;}

  /* textes : révélation au scroll (état caché initial + classe .mtca-in) */
  .mtca-content [data-mtca]{opacity:0!important;transform:translateY(26px)!important;
    transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.3,1);}
  .mtca-content [data-mtca].mtca-in{opacity:1!important;transform:none!important;}

  /* les photos passent en flux normal, empilées verticalement */
  .mtca-media{max-width:340px;padding:0;display:flex;flex-direction:column;gap:20px;}
  .mtca-photo{position:relative!important;width:100%!important;
    top:auto!important;bottom:auto!important;left:auto!important;right:auto!important;
    opacity:0;transform:translateY(30px);
    transition:opacity .7s ease,transform .7s cubic-bezier(.2,.7,.3,1);}
  .mtca-photo.mtca-in{opacity:1;transform:none;}
  .mtca-photo-2{border:none;}
  .mtca-media-frame{display:none;}
  .mtca-photo-cap{padding:34px 18px 16px;}
}

/* =====================================================================
   SECTION 7 — CTA FINAL (filet doré, titre, deux boutons)
   ===================================================================== */
.mtcf-cta{
  position:relative;padding:clamp(70px,12vh,140px) 0;background:transparent;overflow:hidden;}
.mtcf-cta *{box-sizing:border-box;}

/* halo doré très discret derrière le titre, signature premium */
.mtcf-cta::before{content:"";position:absolute;top:50%;left:50%;
  width:min(760px,90vw);height:min(520px,60vw);
  transform:translate(-50%,-50%);pointer-events:none;
  background:radial-gradient(ellipse at center, rgba(184,148,95,.10) 0%, rgba(184,148,95,0) 68%);}

.mtcf-inner{position:relative;z-index:1;
  display:flex;flex-direction:column;align-items:center;text-align:center;
  max-width:760px;margin:0 auto;padding:0 24px;}

.mtcf-line{width:64px;height:1px;background:linear-gradient(90deg,transparent,var(--mtc-dore),transparent);
  margin:0 0 30px;}
.mtcf-eyebrow{margin:0 0 20px;color:var(--mtc-dore);
  letter-spacing:.24em;text-transform:uppercase;font-size:.8rem;}
.mtcf-title{margin:0 0 26px;color:#fff;font-weight:400;line-height:1.14;
  font-size:clamp(2rem,4.6vw,3.6rem);text-shadow:0 2px 30px rgba(0,0,0,.5);}
.mtcf-text{margin:0 0 42px;color:rgba(247,244,239,.82);line-height:1.75;
  font-size:clamp(1rem,1.3vw,1.15rem);max-width:560px;}

.mtcf-cta-row{display:flex;flex-wrap:wrap;gap:18px;justify-content:center;margin:0 0 30px;}

.mtcf-note{margin:0;color:rgba(247,244,239,.5);font-size:.85rem;letter-spacing:.02em;}

/* Apparition douce au scroll */
[data-mtcf]{opacity:0;transform:translateY(28px);
  transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.3,1);}
[data-mtcf].mtcf-in{opacity:1;transform:none;}

@media (max-width:600px){
  .mtcf-cta-row{flex-direction:column;width:100%;}
  .mtcf-cta-row .mtc-cta,.mtcf-cta-row .mtc-cta-2{width:100%;justify-content:center;}
}


/* =====================================================================
   MODE MOBILE DES SECTIONS 2 ET 3 — ajout du 10 août 2026
   ---------------------------------------------------------------------
   Les sections Univers (190vh) et Showroom (180vh) étaient les deux
   seules sections à défilement collant sans mode dégradé : sur mobile,
   elles conservaient leur course, avec un risque de chevauchement des
   sections voisines. Les sections 4, 5 et 6 ont ce mode depuis l'origine.
   On applique ici exactement le même motif, au même point de rupture.

   Sous 1024 px : la course est supprimée, la section redevient un bloc
   normal, et l'apparition passe d'un pilotage au défilement à une simple
   révélation à l'entrée dans l'écran (classe posée par le JS).
   ===================================================================== */
@media (max-width:1024px){

  /* — SECTION 2 · Univers — */
  .mtcs-scroll{height:auto!important;min-height:0!important;}
  .mtcs-univers{position:relative!important;top:auto!important;min-height:0!important;
    padding:clamp(60px,9vh,110px) 0;}
  .mtcs-head,
  .mtcs-card{opacity:0;transform:translateY(28px);
    transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.3,1);}
  .mtcs-head.mtcs-revealed,
  .mtcs-card.mtcs-revealed{opacity:1;transform:none;}

  /* — SECTION 3 · Showroom — */
  .mtcsh-scroll{height:auto!important;min-height:0!important;}
  .mtcsh-showroom{position:relative!important;top:auto!important;min-height:0!important;
    padding:clamp(60px,9vh,110px) 0;}
  .mtcsh-media,
  .mtcsh-showroom [data-mtcsh="t"]{opacity:0;transform:translateY(28px);
    transition:opacity .8s ease,transform .8s cubic-bezier(.2,.7,.3,1);}
  .mtcsh-media.mtcsh-revealed,
  .mtcsh-showroom [data-mtcsh="t"].mtcsh-revealed{opacity:1;transform:none;}
  /* On neutralise l'eventail pilote au defilement. Le module JS est deja
     garde a min-width:1025px — verifie ligne 102, estGrandEcran() — mais ces
     deux lignes sont la ceinture : un style en ligne bat toute regle non
     !important, et c'est exactement ce que le JS ecrit. */
  .mtcsh-photo{transform:none!important;}
  .mtcsh-photo img{transform:none!important;}

  /* -------------------------------------------------------------------------
     L'EVENTAIL SE DESEMPILE  ·  27 aout 2026  ·  correctif de debordement
     -------------------------------------------------------------------------
     LE DEFAUT, mesure au banc avant correction. Les trois photos sont en
     position absolue, et .mtcsh-photo-3 est calee par bottom:0. La hauteur du
     conteneur est donnee par la seule photo 1, qui est en flux. Des que la
     photo 3 est PLUS HAUTE que la photo 1 — c'est le cas quand son image est
     en portrait et celle de la photo 1 en paysage — elle sort du conteneur PAR
     LE HAUT et recouvre ce qui precede.
       page cuisine, 390 px : la photo 3 depasse de 72 px et passe par-dessus
                              le bouton « Parler de mon projet » ;
       page cuisine, 360 px : 66 px ;
       accueil, showroom    : 21 px — meme defaut, attenue par le
                              padding-bottom de 36 % propre a ce bloc.
     Le defaut ne vient pas d'un lot recent : il existe depuis l'origine du
     composant. Il ne se voyait pas tant que les trois photos avaient des
     rapports voisins.

     LE CORRECTIF. Sous 1025 px, trois photos superposees avec rotation ne se
     lisent de toute facon pas sur 390 px de large. On les DESEMPILE : elles
     repassent en flux, dans une grille, au meme format. Plus aucune position
     absolue, donc plus aucun chevauchement possible, quels que soient les
     rapports des images que le client fournira demain.

     PORTEE : .mtcsh-media, c'est-a-dire le socle — l'eventail des pages
     services ET le showroom de l'accueil. Les deux ont le meme defaut, il a la
     meme cause, on le corrige une fois.

     position:relative et non static : le liseré .mtcsh-media-frame vit DANS la
     photo 3 et s'y positionne en absolu. En static il se recalerait sur le
     conteneur et couvrirait toute la grille. `inset:auto` remet les quatre
     decalages d'un coup, sans en oublier un.
     ---------------------------------------------------------------------- */
  .mtcsh-media{
    display: grid;
    grid-template-columns: 1fr 1fr;
    gap: clamp(10px, 2.6vw, 18px);
    padding: 0;
  }
  .mtcsh-photo{
    position: relative;
    inset: auto;
    width: auto;
    aspect-ratio: 16 / 10;
  }
  /* La premiere photo garde le premier role : pleine largeur, les deux autres
     cote a cote dessous. */
  .mtcsh-photo-1{ grid-column: 1 / -1; }
  .mtcsh-photo img{ width: 100%; height: 100%; object-fit: cover; }
}


/* =====================================================================
   DÉCALAGE SOUS L'EN-TÊTE COLLANT — ajout du 10 août 2026
   ---------------------------------------------------------------------
   Problème observé : une section à défilement collant se fige à top:0,
   donc son surtitre doré passe SOUS l'en-tête du site. Sur une section
   normale on peut faire défiler pour le dégager ; sur une section figée
   il reste masqué en permanence.

   Correctif : les sections collantes se figent non plus à 0 mais à la
   hauteur réelle de l'en-tête, mesurée à l'exécution par le JS et
   exposée dans --mtc-entete. Leur hauteur est réduite d'autant, donc
   l'espace de contenu reste exactement celui d'un plein écran visible.

   Rien d'autre ne change : ni les animations, ni la course de
   défilement, ni la logique JS de progression. Le repli 0px garantit le
   comportement actuel si le JS ne s'exécute pas.

   Volontairement limité au desktop : sous 1025px les sections ne sont
   plus collantes (voir le bloc mobile plus haut), le problème n'existe
   pas.

   ⚠ LE HERO EST CONCERNÉ, ET IL L'A TOUJOURS ÉTÉ. Ce commentaire portait
   jusqu'au 10/09/2026 la phrase « Le hero n'est pas concerné : son
   contenu est centré sur 400vh de course et n'a jamais été masqué ».
   Elle était fausse, et elle a servi de garde-fou pendant un mois.
   Le hero centre son contenu sur la fenêtre ENTIÈRE, en-tête compris :
   dès que la fenêtre descend sous ~725px de haut, le surtitre passe sous
   la barre ; sous ~605px, c'est « Since 2012 ». Reproduit et mesuré,
   voir le rapport 89.
   Le hero N'EST PAS traité ici : réduire sa hauteur décalerait sa boîte
   et ses neuf photos en position absolue. Sa compensation est écrite en
   SECTION 5, fin de fichier, bloc ACCUEIL LOT 1 : elle décale le CONTENU
   à l'intérieur d'une boîte restée à 100svh calée à top:0.
   ===================================================================== */
/* Le repli « --mtc-entete:0px » a ete remonte dans le :root unique de la
   SECTION 1 (jetons). Il n'y a plus qu'une seule declaration :root dans tout
   le fichier. Le JS continue de l'ecrire en style en ligne sur <html>, ce qui
   prime sur toute regle de feuille : le comportement est inchange. */

@media (min-width:1025px){
  .mtcs-univers,
  .mtcsh-showroom,
  .mtcr-real,
  .mtca-intro-sec{
    top:var(--mtc-entete);
    min-height:calc(100vh - var(--mtc-entete));
    min-height:calc(100svh - var(--mtc-entete));
  }
  /* .mtcp-process utilise height et non min-height : ses enfants sont
     positionnés en absolu par rapport à elle. */
  .mtcp-process{
    top:var(--mtc-entete);
    height:calc(100vh - var(--mtc-entete));
    height:calc(100svh - var(--mtc-entete));
  }
}


/* =====================================================================
   PROCESS — RYTHME VERTICAL SUR ÉCRAN PEU HAUT — 10 août 2026
   ---------------------------------------------------------------------
   La scène (.mtcp-stage) est en overflow:hidden pour masquer les étapes
   qui glissent latéralement. Conséquence : si le contenu d'une étape est
   plus haut qu'elle, il est rogné en haut ET en bas.

   Deux causes cumulées, corrigées ensemble : les légendes étaient trop
   longues (remises à ~110-150 caractères dans le HTML), et le décalage
   sous l'en-tête retire de la hauteur à la section.

   Ici on resserre le rythme vertical de l'étape quand l'écran est peu
   haut. Aucune règle de mise en page n'est touchée : uniquement des
   tailles et des marges. Sans effet au-dessus de 900px de hauteur.
   ===================================================================== */
@media (min-width:1025px) and (max-height:900px){
  .mtcp-num{font-size:clamp(1.4rem,2.4vw,2rem);margin:0 0 6px;}
  .mtcp-icon{width:clamp(64px,8vh,96px);height:clamp(64px,8vh,96px);margin:0 0 12px;}
  .mtcp-step-title{font-size:clamp(1.15rem,1.9vw,1.6rem);margin:0 0 8px;}
  .mtcp-step-text{font-size:clamp(.86rem,1vw,.96rem);line-height:1.45;}
  /* La scène récupère une partie de la marge basse, libre : la timeline
     et le CTA sont en z-index supérieur et restent au-dessus. */
  .mtcp-stage{bottom:clamp(84px,12vh,120px);}
}
@media (min-width:1025px) and (max-height:780px){
  .mtcp-num{font-size:1.3rem;margin:0 0 4px;}
  .mtcp-icon{width:clamp(56px,7vh,80px);height:clamp(56px,7vh,80px);margin:0 0 10px;}
  .mtcp-step-title{font-size:1.12rem;margin:0 0 6px;}
  .mtcp-step-text{font-size:.86rem;line-height:1.42;}
  .mtcp-head{top:clamp(70px,10vh,110px);}
  .mtcp-stage{top:clamp(150px,20vh,210px);bottom:clamp(76px,10vh,104px);}
}


/* =====================================================================
   BANDE PARTENAIRES  (.mtcl-)  — 10 août 2026
   ---------------------------------------------------------------------
   Logos en encre blanche sur fond sombre. Deux rangs volontairement
   inégaux : Arredo3 fabrique la cuisine, les autres l'équipent. Un rang
   unique de cinq logos aurait mis le fabricant au même niveau qu'un
   éviers-robinetterie, et donné trois logos sur cinq au seul groupe
   Cosentino (Cosentino, Silestone et Dekton sont la même maison).

   Aucune font-family déclarée : typographie héritée de Blocksy, comme
   les autres sections. Apparition en cascade par IntersectionObserver,
   même motif que les sections 1bis et 6bis.
   ===================================================================== */
.mtcl-marques{position:relative;padding:clamp(60px,8vh,110px) 0;
  background:transparent;overflow:hidden;}
.mtcl-marques *{box-sizing:border-box;}
.mtcl-inner{width:100%;max-width:1180px;margin:0 auto;padding:0 24px;
  display:flex;flex-direction:column;align-items:center;text-align:center;}

/* — en-tête — */
.mtcl-head{max-width:760px;margin:0 0 clamp(34px,4vw,52px);}
.mtcl-eyebrow{margin:0 0 16px;color:var(--mtc-dore);
  letter-spacing:.24em;text-transform:uppercase;font-size:.78rem;}
.mtcl-h2{margin:0;color:#fff;font-weight:400;line-height:1.16;
  font-size:clamp(1.5rem,2.6vw,2.1rem);}

/* — rang 1 : le fabricant — */
.mtcl-fabricant{display:flex;flex-direction:column;align-items:center;
  padding-bottom:clamp(30px,4vw,44px);margin-bottom:clamp(30px,4vw,44px);
  border-bottom:1px solid rgba(184,148,95,.24);width:100%;max-width:640px;}
.mtcl-fabricant-txt{margin:18px 0 0;color:rgba(247,244,239,.62);
  line-height:1.65;font-size:clamp(.86rem,1vw,.95rem);max-width:520px;}
.mtcl-fabricant-txt b{color:var(--mtc-blanc);font-weight:500;}

/* — rang 2 : surfaces et équipement — */
/* Grille et non flex-wrap : sur desktop chaque rang tient sur UNE ligne,
   colonnes de largeur égale. Le nombre de colonnes descend par paliers,
   il n'y a jamais de retour à la ligne subi. */
.mtcl-grille{list-style:none;margin:0;padding:0;width:100%;
  display:grid;grid-template-columns:repeat(5,1fr);
  align-items:start;justify-items:center;
  gap:clamp(20px,2.4vw,40px);}
.mtcl-grille li{display:flex;flex-direction:column;align-items:center;
  gap:10px;width:100%;}
.mtcl-legende{color:rgba(247,244,239,.42);font-size:.72rem;
  letter-spacing:.1em;text-transform:uppercase;}

/* — libellés de rang —
   Trois niveaux d'emphase plutôt qu'un mur de douze logos : le fabricant,
   les matières et l'agencement, puis l'électroménager. Chaque rang porte
   son libellé pour que la hiérarchie se lise sans avoir à la deviner. — */
.mtcl-rang-titre{margin:0 0 clamp(18px,2.2vw,26px);
  color:rgba(247,244,239,.45);font-size:.72rem;
  letter-spacing:.18em;text-transform:uppercase;}
.mtcl-rang-titre-2{margin-top:clamp(34px,4vw,50px);
  padding-top:clamp(28px,3.4vw,40px);width:100%;max-width:820px;
  border-top:1px solid rgba(184,148,95,.18);}

/* — rang 3 : l'agencement et l'équipement — 25 août 2026 —
   Quatre logos, donc quatre colonnes. Rang créé avec le passage de la bande
   de 11 à 20 logos. Les paliers sont dans le bloc responsive plus bas. — */
.mtcl-grille-md{grid-template-columns:repeat(4,1fr);}

/* — rang 4 : plus petit, plus discret, sans lien —
   Ces marques rassurent mais ne différencient pas : elles ne doivent pas
   peser autant que le fabricant ni que les matières.
   5 colonnes depuis le 25/08/2026 : le rang porte 10 logos, soit deux
   rangées pleines. À 6, la seconde rangée n'en compterait que 4. — */
.mtcl-grille-sm{grid-template-columns:repeat(5,1fr);
  gap:clamp(16px,2vw,32px);opacity:.92;}
.mtcl-grille-sm li{gap:0;}
.mtcl-logo-sm img{max-height:40px;}

/* — le logo lui-même —
   Les logos ne sont pas à pleine opacité au repos : posés à 100 % sur du
   noir, cinq encres blanches tirent l'œil plus que les photos de la page.
   Ils remontent au survol et à la tabulation. */
.mtcl-logo{display:block;line-height:0;text-decoration:none;
  opacity:.55;transition:opacity .45s ease,transform .45s cubic-bezier(.2,.7,.3,1);}
.mtcl-logo img{width:auto;height:auto;max-width:100%;display:block;
  /* 400×160 servis dans une boîte de 150×60, soit du 2,6x : net sur écran Retina */
  max-height:60px;object-fit:contain;}
.mtcl-logo-lg img{max-height:86px;}
a.mtcl-logo:hover{opacity:1;transform:translateY(-3px);}
/* Le rang 4 n'est pas cliquable : ses vignettes sont des <span>. La règle de
   survol ne vise que a.mtcl-logo, il n'y a rien à neutraliser — mais le
   curseur, lui, doit rester neutre. */
span.mtcl-logo{cursor:default;}
.mtcl-logo:focus-visible{opacity:1;outline:2px solid var(--mtc-dore);
  outline-offset:8px;border-radius:2px;}

/* — apparition au défilement — */
.mtcl-marques [data-mtcl]{opacity:0;transform:translateY(20px);
  transition:opacity .8s cubic-bezier(.2,.7,.3,1),transform .8s cubic-bezier(.2,.7,.3,1);
  will-change:opacity,transform;}
.mtcl-marques [data-mtcl].mtcl-in{opacity:1;transform:none;}

/* — paliers responsives — révisés le 25 août 2026 —
   La bande porte maintenant quatre rangs. Les paliers sont écrits pour que
   CHAQUE rangée soit pleine à chaque largeur : 4 logos et 10 logos n'ont pas
   les mêmes diviseurs.
     rang 2  (5 logos)  : 5 → 3 → 3    (2 colonnes donneraient 2+2+1)
     rang 3  (4 logos)  : 4 → 2 → 2
     rang 4  (10 logos) : 5 → 5 → 2    (3 colonnes laisseraient un orphelin)
   L'ordre à l'intérieur de chaque palier compte : .mtcl-grille-md et
   .mtcl-grille-sm ont la même spécificité que .mtcl-grille, et les éléments
   portent les deux classes. Elles doivent donc rester ÉCRITES APRÈS elle. */
@media (max-width:1024px){
  .mtcl-grille{grid-template-columns:repeat(3,1fr);
    gap:clamp(26px,4vw,44px) clamp(20px,3vw,36px);}
  .mtcl-grille-md{grid-template-columns:repeat(2,1fr);}
  .mtcl-grille-sm{grid-template-columns:repeat(5,1fr);}
  .mtcl-logo img{max-height:52px;}
  .mtcl-logo-lg img{max-height:76px;}
  .mtcl-logo-sm img{max-height:36px;}
}
@media (max-width:600px){
  /* Rang 2 : 5 logos. À 2 colonnes on obtient 2+2+1, un logo seul en bas de
     rangée. À 3, on obtient 3+2 : deux rangées franches. */
  .mtcl-grille{grid-template-columns:repeat(3,1fr);gap:24px 14px;}
  .mtcl-grille-md{grid-template-columns:repeat(2,1fr);}
  .mtcl-grille-sm{grid-template-columns:repeat(2,1fr);gap:22px 14px;}
  .mtcl-logo img{max-height:42px;}
  .mtcl-logo-lg img{max-height:64px;}
  .mtcl-logo-sm img{max-height:28px;}
  .mtcl-legende{font-size:.66rem;letter-spacing:.06em;}
  /* Pas de survol au doigt : les logos sont posés plus lisibles. */
  .mtcl-logo{opacity:.75;}
}

/* =====================================================================
   ACCESSIBILITÉ — prefers-reduced-motion
   ---------------------------------------------------------------------
   Avant : cette règle était répétée 6 fois, une par section. Les blocs
   n'étaient pas identiques — chacun neutralisait ses propres classes.
   Ils sont ici fusionnés en une seule règle, section par section.
   Placés en fin de feuille : les sélecteurs sont préfixés par section,
   il n'y a donc aucun conflit de cascade avec les règles ci-dessus.
   ===================================================================== */
@media (prefers-reduced-motion:reduce){

  /* SECTION 2 — UNIVERS D'INTERVENTION */
  .mtcs-scroll{height:auto;}
  .mtcs-univers{position:relative;min-height:0;}
  .mtcs-head,.mtcs-card{opacity:1 !important;transform:none !important;}
  .mtcs-img{transition:none;}

  /* SECTION 3 — SHOWROOM PRIVÉ */
  .mtcsh-scroll{height:auto;}
  .mtcsh-showroom{position:relative;min-height:0;}
  .mtcsh-media,[data-mtcsh]{opacity:1 !important;transform:none !important;}

  /* SECTION 4 — RÉALISATIONS */
  .mtcr-scroll{height:auto;}
  .mtcr-real{position:relative;min-height:0;}
  .mtcr-head,.realmt > li,.mtcr-cta-row{opacity:1!important;transform:none!important;}

  /* SECTION 5 — PROCESS */
  .mtcp-scroll{height:auto;}
  .mtcp-process{position:relative;height:auto;padding:60px 0;}
  .mtcp-head{position:relative;top:auto;margin-bottom:30px;}
  .mtcp-stage{position:relative;top:auto;bottom:auto;height:auto;overflow:visible;
    display:flex;flex-wrap:wrap;justify-content:center;gap:30px;}
  .mtcp-step{position:relative;top:auto;left:auto;opacity:1;transform:none;width:260px;}
  .mtcp-timeline,.mtcp-cta-row{position:relative;bottom:auto;left:auto;transform:none;margin:40px auto 0;}
  .mtcp-cta-row{opacity:1;pointer-events:auto;}
  .mtcp-bg-glow{display:none;}

  /* SECTION 6 — QUI SOMMES-NOUS + AVIS GOOGLE */
  .mtca-scroll{height:auto;}
  .mtca-intro-sec{position:relative;min-height:0;}
  [data-mtca]{opacity:1!important;transform:none!important;}
  .mtca-photo{opacity:1!important;transform:none!important;}

  /* SECTION 7 — CTA FINAL */
  [data-mtcf]{opacity:1!important;transform:none!important;}
}


/* =====================================================================
   SECTION 1bis — BANDEAU DE RÉASSURANCE  (.mtcb-)
   ---------------------------------------------------------------------
   Placée juste après le hero. Porte les piliers demandés explicitement
   par le client : 14 ans, 90 % de bouche-à-oreille, sur rendez-vous
   uniquement, partenaires, taille humaine, réactivité.

   Aucune font-family n'est déclarée : comme les 7 sections d'origine,
   la typographie est héritée de Blocksy. Mêmes conventions que
   l'existant — respiration en clamp(), eyebrow doré en majuscules
   espacées, titre en graisse 400, fond transparent.
   ===================================================================== */
.mtcb-reassurance{position:relative;padding:clamp(70px,10vh,130px) 0;
  background:transparent;overflow:hidden;}
.mtcb-reassurance *{box-sizing:border-box;}
.mtcb-inner{width:100%;max-width:1180px;margin:0 auto;padding:0 24px;}

/* — en-tête — */
.mtcb-head{max-width:820px;margin:0 0 clamp(40px,5vw,60px);}
.mtcb-eyebrow{margin:0 0 18px;color:var(--mtc-dore);
  letter-spacing:.24em;text-transform:uppercase;font-size:.8rem;}
.mtcb-h2{margin:0;color:#fff;font-weight:400;line-height:1.14;
  font-size:clamp(1.8rem,3.4vw,2.8rem);}

/* — les 3 chiffres — */
.mtcb-figures{display:flex;align-items:stretch;justify-content:space-between;
  gap:clamp(24px,4vw,56px);
  padding:clamp(30px,4vw,44px) 0;
  border-top:1px solid rgba(184,148,95,.28);
  border-bottom:1px solid rgba(184,148,95,.28);}
.mtcb-figure{flex:1 1 0;min-width:0;}
.mtcb-num{margin:0 0 12px;display:flex;align-items:baseline;gap:8px;
  color:var(--mtc-dore);line-height:1;}
.mtcb-val{font-size:clamp(2.6rem,5vw,4.2rem);font-weight:400;letter-spacing:-.02em;}
.mtcb-val-txt{font-size:clamp(1.5rem,2.6vw,2.2rem);letter-spacing:.01em;}
.mtcb-unit{font-size:clamp(1rem,1.5vw,1.3rem);letter-spacing:.06em;
  text-transform:lowercase;opacity:.85;}
.mtcb-cap{margin:0;color:rgba(247,244,239,.72);line-height:1.6;
  font-size:clamp(.9rem,1.1vw,1rem);max-width:280px;}

/* filets verticaux entre les chiffres */
.mtcb-sep{flex:0 0 1px;background:linear-gradient(180deg,
  transparent,rgba(184,148,95,.35) 22%,rgba(184,148,95,.35) 78%,transparent);}

/* — les piliers texte —
   2 colonnes depuis le 25/08/2026 : la section porte 4 piliers depuis l'ajout
   de la chaîne de pose. À 3 colonnes, 4 éléments laissaient une carte
   orpheline. Le repli à 1 colonne sous 1024 px reste valable. — */
.mtcb-piliers{list-style:none;margin:clamp(34px,4vw,48px) 0 0;padding:0;
  display:grid;grid-template-columns:repeat(2,1fr);gap:clamp(24px,3vw,44px);}
.mtcb-piliers li{display:flex;gap:14px;align-items:flex-start;}
.mtcb-piliers svg{width:22px;height:22px;flex-shrink:0;margin-top:2px;
  color:var(--mtc-dore);}
.mtcb-piliers span{display:block;color:rgba(247,244,239,.72);
  line-height:1.6;font-size:clamp(.88rem,1.05vw,.97rem);}
.mtcb-piliers b{display:block;margin-bottom:5px;font-weight:500;
  color:var(--mtc-blanc);letter-spacing:.01em;}

/* — apparition au défilement — */
.mtcb-reassurance [data-mtcb]{opacity:0;transform:translateY(22px);
  transition:opacity .8s cubic-bezier(.2,.7,.3,1),transform .8s cubic-bezier(.2,.7,.3,1);
  will-change:opacity,transform;}
.mtcb-reassurance [data-mtcb].mtcb-in{opacity:1;transform:none;}

@media (max-width:1024px){
  .mtcb-piliers{grid-template-columns:1fr;gap:22px;}
}
@media (max-width:768px){
  .mtcb-figures{flex-direction:column;gap:30px;}
  .mtcb-sep{flex:0 0 1px;height:1px;width:100%;
    background:linear-gradient(90deg,transparent,rgba(184,148,95,.35),transparent);}
  .mtcb-cap{max-width:none;}
}


/* =====================================================================
   SECTION 6bis — SAVOIR-FAIRE & MATIÈRES  (.mtcw-)
   ---------------------------------------------------------------------
   Placée après les avis, avant le CTA final. Bloc éditorial : il porte
   les entités absentes de la page (électroménager, Luisina, matières,
   implantations) et l'ancrage géographique élargi, sans perturber la
   narration visuelle du haut de page.
   ===================================================================== */
.mtcw-savoir{position:relative;padding:clamp(70px,10vh,130px) 0;
  background:transparent;overflow:hidden;}
.mtcw-savoir *{box-sizing:border-box;}
.mtcw-inner{width:100%;max-width:1180px;margin:0 auto;padding:0 24px;}

.mtcw-head{max-width:820px;margin:0 0 clamp(40px,5vw,60px);}
.mtcw-eyebrow{margin:0 0 18px;color:var(--mtc-dore);
  letter-spacing:.24em;text-transform:uppercase;font-size:.8rem;}
.mtcw-h2{margin:0;color:#fff;font-weight:400;line-height:1.14;
  font-size:clamp(1.8rem,3.4vw,2.8rem);}

.mtcw-cols{display:grid;grid-template-columns:1fr 1fr;
  gap:clamp(34px,5vw,72px);}
.mtcw-col{min-width:0;}
.mtcw-h3{margin:0 0 18px;color:var(--mtc-blanc);font-weight:500;
  line-height:1.3;font-size:clamp(1.05rem,1.5vw,1.25rem);letter-spacing:.01em;}
.mtcw-col p{margin:0 0 16px;color:rgba(247,244,239,.72);line-height:1.75;
  font-size:clamp(.92rem,1.1vw,1rem);}
.mtcw-col p:last-child{margin-bottom:0;}
.mtcw-col b{color:var(--mtc-blanc);font-weight:500;}

/* ligne de zone d'intervention, détachée par un filet doré */
.mtcw-zone{margin:clamp(34px,4vw,52px) 0 0;padding-top:clamp(26px,3vw,34px);
  border-top:1px solid rgba(184,148,95,.28);
  color:rgba(247,244,239,.6);line-height:1.7;
  font-size:clamp(.86rem,1vw,.94rem);}
.mtcw-zone b{color:rgba(247,244,239,.85);font-weight:500;}

.mtcw-savoir [data-mtcw]{opacity:0;transform:translateY(22px);
  transition:opacity .8s cubic-bezier(.2,.7,.3,1),transform .8s cubic-bezier(.2,.7,.3,1);
  will-change:opacity,transform;}
.mtcw-savoir [data-mtcw].mtcw-in{opacity:1;transform:none;}

@media (max-width:860px){
  .mtcw-cols{grid-template-columns:1fr;gap:34px;}
}


/* =====================================================================
   AJOUTS DE CONTENU — août 2026
   ---------------------------------------------------------------------
   Trois classes nouvelles, introduites par la réécriture éditoriale.
   Aucune font-family déclarée : typographie héritée de Blocksy, comme
   tout le reste de la page.
   ===================================================================== */

/* — Showroom : « que faut-il apporter ? », sous le bouton de réservation.
     Lève l'angoisse d'arriver « pas prêt », frein silencieux à la prise
     de rendez-vous identifié dans le relevé d'intentions. — */
.mtcsh-prepare{margin:22px 0 0;max-width:520px;
  color:rgba(247,244,239,.55);line-height:1.65;
  font-size:clamp(.82rem,.95vw,.9rem);}

/* — Méthode : ligne de délai sous la frise (actuellement en commentaire
     dans le HTML, en attente du chiffre réel). — */
.mtcp-delai{margin:26px auto 0;max-width:640px;text-align:center;
  color:rgba(247,244,239,.6);line-height:1.6;
  font-size:clamp(.85rem,1vw,.94rem);}
.mtcp-delai b{color:var(--mtc-blanc);font-weight:500;}

/* — Savoir-faire : le bloc « ce qui fait le prix » (div.mtcw-prix) a ete
     retire de la page par PAGES le 29/09 ; ses six regles et la regle de
     jonction .mtcw-prix + .mtcw-zone sont retirees ici (v27.26, L39, rapport
     271). La section se termine sur p.mtcw-zone, filet doré en haut. — */

@media (max-width:860px){
  .mtcsh-prepare{max-width:none;}
}


/* =====================================================================
   SECTION 2 · UNIVERS — ÉTAT DE SURVOL FORCÉ SUR TACTILE
   Ajout du 10 août 2026
   ---------------------------------------------------------------------
   La description des cartes n'était révélée qu'au survol. Sans souris,
   elle est inatteignable. On applique donc d'office, sur tactile, l'état
   que le survol produit sur ordinateur : voile appuyé, cadre tracé,
   bulle « Découvrir » et description dépliés.

   Deux conditions, pas une seule : (hover:none) couvre les téléphones et
   les tablettes ; max-width:1024px rattrape les appareils hybrides qui
   déclarent à tort savoir survoler, et sur lesquels le texte restait
   totalement invisible.

   Le plafond passe de 140 à 220 px : à 4 lignes serrées le texte
   touchait le plafond sur les écrans étroits.

   Portée : .mtcs-grid uniquement, c'est-à-dire les 4 cartes de l'accueil.
   Cet extrait est servi sur tout le site — les classes .mtcs-* sont
   réutilisées par le bloc .mtck-cartes de la page Cuisine, qui garde ses
   propres règles. Ne pas dé-préfixer.

   Rien d'autre ne change : ni le HTML, ni le JS, ni le rendu sur
   ordinateur.
   ===================================================================== */
@media (hover:none),(max-width:1024px){
  .mtcs-grid .mtcs-card .mtcs-card-desc{
    max-height:220px;opacity:1;transform:none;margin-top:12px;}
  .mtcs-grid .mtcs-veil{
    background:linear-gradient(to top,rgba(10,9,8,.9) 0%,rgba(10,9,8,.68) 55%,rgba(10,9,8,.5) 100%);}
  .mtcs-grid .mtcs-bubble{opacity:1;transform:none;}
  .mtcs-grid .mtcs-frame::before,
  .mtcs-grid .mtcs-frame::after{clip-path:inset(0 0 0 0);}
}

/* Bande à 4 colonnes avec la description ouverte en permanence.
   Au-dessus de 900 px la grille est encore à 4 colonnes : la carte ne
   fait plus que 237 à 254 px de large, et la légende dépliée débordait
   du carré de 6 à 50 px selon la carte. Mesuré à 1024, 1025 et 1100 px.
   On resserre l'échelle sur cette seule bande — la grille, elle, ne
   bouge pas : à 1025 px la section est encore figée en plein écran, y
   passer à 2 colonnes donnerait des cartes de 561 px, deux fois trop
   hautes pour l'écran. */
@media (hover:none) and (min-width:901px),
       (min-width:901px) and (max-width:1024px){
  .mtcs-grid .mtcs-caption{padding:16px 18px 18px;}
  .mtcs-grid .mtcs-card-title{font-size:clamp(1.05rem,1.5vw,1.3rem);}
  .mtcs-grid .mtcs-card .mtcs-card-desc{font-size:.84rem;line-height:1.42;margin-top:8px;}
  .mtcs-grid .mtcs-bubble{top:14px;right:14px;padding:7px 12px;font-size:.72rem;}
}

/* =============================================================================
   FIN DE LA SECTION 3 — BLOC DE SURCHARGES  ·  25 aout 2026
   -----------------------------------------------------------------------------
   ⚠ CE BLOC DOIT RESTER LE DERNIER DE LA SECTION 3. Ne rien ecrire entre lui et
   le bandeau de la SECTION 4 ci-dessous.

   Pourquoi : les selecteurs qui suivent ont la MEME specificite (0,1,0) que les
   regles qu'ils surchargent, et ces regles sont dispersees dans toute la
   SECTION 3 — la derniere, .mtcw-eyebrow, arrive tres tard. C'est donc l'ORDRE
   DU DOCUMENT qui tranche, et lui seul. Place plus haut, ce bloc serait sans
   effet sur une partie des surtitres.

   Un cowork qui ajoute une regle a la SECTION 3 l'ecrit AVANT ce bloc. S'il
   ecrit apres, il passe devant ces surcharges sans s'en apercevoir.
   ============================================================================= */


/* — les surtitres de section en manuscrite — 25 aout 2026 —
   Les onze petits libelles dores poses au-dessus des titres de l'accueil
   passent en above-the-beyond. Seconde et derniere famille concernee par
   l'exception typographique decrite en tete de fichier.

   TROIS REGLAGES SOLIDAIRES, non negociables separement :
     text-transform  uppercase -> none  : une manuscrite en capitales perd ses
                                          liaisons et devient illisible ;
     letter-spacing  .24em -> .02em     : meme raison ;
     font-size       ~.8rem -> ~1.3rem  : sans quoi le surtitre, prive de ses
                                          capitales et de son interlettrage,
                                          disparaitrait de la page.
   Le texte est ecrit en casse naturelle dans le HTML : c'etait le CSS qui le
   mettait en capitales, il n'y a rien a changer cote contenu.

   ⚠ .mtc-svc-eyebrow N'EST PAS dans la liste, et ne doit jamais y entrer : les
   surtitres des pages services sont une famille distincte. Verifie en base le
   25/08 : ces onze classes n'apparaissent QUE dans le contenu de la page 2. */
.mtc-surtitre,
.mtc-static-surtitre,
.mtcs-eyebrow,
.mtcsh-eyebrow,
.mtcr-eyebrow,
.mtcp-eyebrow,
.mtca-eyebrow,
.mtcb-eyebrow,
.mtcw-eyebrow,
.mtcl-eyebrow,
.mtcf-eyebrow{
  font-family:var(--mtc-police-manuscrite, above-the-beyond, sans-serif);
  font-weight:400;font-style:normal;
  text-transform:none;letter-spacing:.02em;
  font-size:clamp(1.15rem,1.6vw,1.5rem);line-height:1.15;}


/* — les trois photos du showroom, ecartees verticalement — 25 aout 2026 —
   Mesure au banc : la photo du haut n'etait visible qu'a 1 %, les deux autres
   la recouvraient. On ecarte sur le plan vertical en gardant la superposition.

   ⚠ NE PAS DE-PREFIXER. .mtcsh-media et .mtcsh-photo-* appartiennent a la
   SECTION 2, LE SOCLE COMMUN : elles habillent aussi l'eventail des pages
   services 217, 219 et 221, qui a deja ses propres correctifs
   (.mtc-svc-eventail .mtcsh-photo-2{right:9%}). Sans le prefixe
   .mtcsh-showroom, ces deux lignes deplaceraient les photos de trois autres
   pages. Verifie en base le 25/08 : .mtcsh-showroom n'existe que sur la page 2.

   Ni la course de defilement ni le JS ne changent : le JS pilote transform,
   ces deux regles ne touchent que padding et top. Aucune regle responsive ne
   redefinit ce padding ni ce top — verifie declaration par declaration — donc
   rien n'est neutralise en silence. */
.mtcsh-showroom .mtcsh-media{padding:5% 8% 36% 6%;}

/* Ces 36 % de padding bas reservaient la place de la superposition des trois
   photos. Sous 1025 px l'eventail est desempile (voir le correctif du 27/08
   dans le bloc @media 1024 plus haut) : le padding n'a plus d'objet et laissait
   140 px de vide sur un ecran de 390.
   Cette annulation est ECRITE ICI, et non dans le bloc 1024 : a specificite
   egale (0,2,0) c'est l'ordre du document qui tranche, et la regle ci-dessus
   arrive apres ce bloc. Mesure au banc : 481 px de conteneur avant, 341 apres. */
@media (max-width:1024px){
  .mtcsh-showroom .mtcsh-media{ padding: 0; }
}
.mtcsh-showroom .mtcsh-photo-2{top:34%;}


/* =============================================================================
   SECTION 4 — PAGES SERVICES (217 · 219 · 221)
   Prefixe : .mtc-svc-*  (et --svc-* portes par .mtc-svc)  ·  Ajoute le 11/08/2026  ·  Source : extrait 300 CSS Services
   Sert : cuisine sur mesure, dressing et living, salle de bain
   ============================================================================= */

/* =============================================================================
   MT CUISINE — PAGES SERVICES · FEUILLE DE STYLE COMMUNE — v3
   -----------------------------------------------------------------------------
   /wp-content/uploads/mtc/services.css  (ou extrait CSS WPCode, en-tête du site)
   Pages 217, 219, 221.

   RÈGLES TENUES
   - Aucune déclaration :root. Les variables locales sont sur .mtc-svc.
   - Aucune font-family. Blocksy garde la typographie.
   - Aucune couleur en dur hors valeur de repli d'un var() ou d'un color-mix().
   - Aucun rythme vertical ici : les Rows Kadence le portent, y compris en
     tablette et en mobile.
   - Un seul point de rupture structurel : 1024 px.
   - Aucun composant du design system (.mtc-cta and co) n'est repeint.

   COMPOSANTS RÉUTILISÉS DE L'ACCUEIL (style dans le snippet 242)
   .mtcs-card (cartes photo) · .mtcsh-media (éventail 3 photos) ·
   .mtca-* (carrousel d'avis) · .realmt (bloc « Derniers articles »).
   On ne redéfinit ici que ce qui manque : mise en grille, neutralisations, et
   les correctifs des pièges relevés au banc de prévisualisation.

   ⚠ DÉPENDANCE. Cette page dépend donc du snippet 242, qui ne se charge partout
   que parce que sa logique conditionnelle est inactive. Le jour où elle
   s'activera, quatre blocs perdent leur habillage. Correctif : déplacer ces
   composants de 242 vers 249, ou les recopier ici.

   LARGEUR DU SITE : 1600 px, relevé en base (theme_mods_blocksy → maxSiteWidth).
   C'est la valeur reprise par .mtc-svc-conteneur, pour que le contenu du hero
   s'aligne exactement sur celui des Rows en inheritMaxWidth.
   ============================================================================= */


/* =============================================================================
   0. SOCLE LOCAL
   ============================================================================= */

.mtc-svc{
  --svc-large:      1600px;   /* = maxSiteWidth Blocksy */
  --svc-gouttiere:  20px;     /* = padding horizontal des Rows */
  --svc-texte-max:  70ch;

  --svc-c-titre:    rgba(255,255,255,1);
  --svc-c-titre:    var(--mtc-blanc-pur, #FFFFFF);

  --svc-c-texte:    rgba(247,244,239,.76);
  --svc-c-texte:    color-mix(in srgb, var(--mtc-blanc, #F7F4EF) 76%, transparent);

  --svc-c-texte-2:  rgba(247,244,239,.58);
  --svc-c-texte-2:  color-mix(in srgb, var(--mtc-blanc, #F7F4EF) 58%, transparent);

  --svc-c-fort:     rgba(247,244,239,1);
  --svc-c-fort:     var(--mtc-blanc, #F7F4EF);

  --svc-filet-or:   rgba(184,148,95,.28);
  --svc-filet-or:   color-mix(in srgb, var(--mtc-dore, #B8945F) 28%, transparent);

  --svc-filet-clair: rgba(247,244,239,.13);
  --svc-filet-clair: color-mix(in srgb, var(--mtc-blanc, #F7F4EF) 13%, transparent);

  --svc-fond-carte: rgba(255,255,255,.035);
  --svc-fond-carte: color-mix(in srgb, var(--mtc-blanc, #F7F4EF) 4%, transparent);

  --svc-ease:       cubic-bezier(.2,.7,.3,1);
  --svc-d:          .8s;

  /* Écrite par services.js sur <html>, en style en ligne : ce n'est pas une
     seconde déclaration :root. Repli 0px si le JS ne tourne pas. */
  --svc-entete:     var(--mtcsvc-entete, 0px);

  position: relative;
  padding-block: 0;          /* les Rows portent le rythme vertical */
  background: transparent;
  color: var(--svc-c-texte);
}

.mtc-svc *{ box-sizing: border-box; }

/* Conteneur aligné sur celui du site — utilisé uniquement là où la Row est en
   pleine largeur sans inheritMaxWidth (le hero). */
.mtc-svc-conteneur{
  width: 100%;
  max-width: var(--svc-large);
  margin-inline: auto;
  padding-inline: var(--svc-gouttiere);
}

.mtc-svc-ancre{
  position: absolute; top: 0; left: 0; width: 1px; height: 1px;
  scroll-margin-top: calc(var(--svc-entete) + 40px);
}


/* =============================================================================
   1. MOTIFS PARTAGÉS
   ============================================================================= */

.mtc-svc-head{ margin: 0 0 clamp(38px, 5vw, 68px); max-width: 900px; }

.mtc-svc-filet{
  display: block; width: 64px; height: 1px; margin: 0 0 24px;
  background: linear-gradient(90deg, var(--mtc-dore, #B8945F), transparent);
}

.mtc-svc-eyebrow{
  margin: 0 0 18px;
  color: var(--mtc-dore, #B8945F);
  letter-spacing: var(--mtc-ls-eyebrow, .24em);
  text-transform: uppercase;
  font-size: var(--mtc-fs-eyebrow, .8em);
}

.mtc-svc-h2{
  margin: 0;
  color: var(--svc-c-titre);
  font-weight: 400; line-height: 1.12;
  font-size: clamp(1.85rem, 3.4vw, 3rem);
  letter-spacing: var(--mtc-ls-titre, -.015em);
  text-wrap: balance;
}

.mtc-svc-h3{
  margin: 0 0 16px; color: var(--svc-c-fort);
  font-weight: 500; line-height: 1.3;
  font-size: clamp(1.08rem, 1.5vw, 1.3rem);
  display: flex; align-items: center; gap: 12px;
}

.mtc-svc-chapeau,
.mtc-svc-lead{
  margin: 22px 0 0; color: var(--svc-c-texte);
  max-width: var(--svc-texte-max);
  font-size: clamp(.98rem, 1.2vw, 1.08rem);
}

.mtc-svc p{ line-height: var(--mtc-lh-texte, 1.68); }
.mtc-svc b, .mtc-svc strong{ color: var(--svc-c-fort); font-weight: 500; }

.mtc-svc-corps p{
  margin: 0 0 18px; color: var(--svc-c-texte);
  max-width: var(--svc-texte-max);
  font-size: clamp(.95rem, 1.1vw, 1.03rem);
}
.mtc-svc-corps p:last-child{ margin-bottom: 0; }

.mtc-svc a:not(.mtc-cta):not(.mtc-cta-2):not(.mtcs-card):not(.mtca-google-link):not(.wp-block-latest-posts__post-title):not(.wp-block-latest-posts__featured-image a){
  color: var(--svc-c-fort);
  text-decoration: none;
  border-bottom: 1px solid var(--svc-filet-or);
  transition: border-color .35s ease, color .35s ease;
}
.mtc-svc a:not(.mtc-cta):not(.mtc-cta-2):not(.mtcs-card):not(.mtca-google-link):not(.wp-block-latest-posts__post-title):hover{
  color: var(--mtc-dore, #B8945F);
  border-bottom-color: var(--mtc-dore, #B8945F);
}

.mtc-svc-cta-row{ display: flex; flex-wrap: wrap; gap: 16px; }
.mtc-svc-centre{ display: flex; justify-content: center; }
.mtc-svc-apres{ margin-top: clamp(32px, 4vw, 48px); }

/* --- Coches : composant .mtcsh-points de l'accueil -------------------------
   Le style (pastille cerclée dorée) vient du snippet 242. On n'ajuste ici que
   les marges, puisque la liste ne vit plus dans le bloc showroom. --------- */
.mtc-svc-coches{ margin: clamp(26px, 3vw, 34px) 0 0; }
.mtc-svc-coches li{ align-items: flex-start; }
.mtc-svc-coches li svg{ margin-top: 2px; }
/* Les labels de certification tiennent sur deux colonnes en desktop. */
.mtc-svc-labels{ display: grid; grid-template-columns: 1fr 1fr; gap: 12px 26px; }
.mtc-svc-labels li{ font-size: .88rem; letter-spacing: .02em; }
/* Deux colonnes AUSSI sur telephone depuis le 27/08 — voir le pave ci-dessous.
   L'ancienne regle « grid-template-columns: 1fr » est retiree ici : elle est
   remplacee par le bloc de fin de pave, qui traite les deux classes ensemble. */

/* -----------------------------------------------------------------------------
   LISTE COURTE — DEUX COLONNES SUR TELEPHONE  ·  27 aout 2026
   -----------------------------------------------------------------------------
   .mtc-svc-labels repasse a UNE colonne sous 620 px, et c'est juste : elle
   porte aussi les libelles longs — « ISO 45001 · sante et securite au travail »
   ne tient pas dans une demi-largeur de telephone.

   Mais elle porte AUSSI des listes de mots courts : les neuf collections de la
   page cuisine — Kali, Asia, Glass, Frida... — qui occupent alors neuf lignes
   pleines. Sur telephone c'est une colonne verticale inutilement longue.

   ⚠ CE RAISONNEMENT A ETE INFIRME PAR LA MESURE, LE 27/08 AU SOIR.

   Il disait : les libelles longs ne tiennent pas dans une demi-largeur de
   telephone, donc il faut un modificateur pose a la main sur les listes
   courtes. C'etait une intuition, et elle etait fausse. Les TROIS listes
   reelles du site ont ete mesurees au navigateur, de 320 a 620 px de large, en
   une colonne puis en deux :

     gammes 217    (9 entrees d'un mot)        316 px  ->  180 px      -43 %
     certifs 217   (4 entrees longues)         136 px  ->   74-106 px
     etapes 221    (4 entrees tres longues)    154 px  ->   90-138 px

   Deux colonnes sont plus courtes que une PARTOUT, y compris sur le cas le plus
   defavorable, et il n'y a de debordement horizontal a aucune largeur, 320 px
   compris. Les libelles les plus longs passent sur deux lignes sous 375 px —
   et restent malgre tout plus courts qu'empiles.

   Le traitement est donc applique PAR DEFAUT, et plus par un mot a poser dans
   le HTML. Un correctif qui attend une modification de balisage est un
   correctif qui n'existe pas : celui-ci a attendu deux jours sans etre pose.

   .mtc-svc-labels-court reste declare a cote, et fait exactement la meme chose.
   Il ne sert plus a rien, mais s'il etait pose un jour il ne casserait pas.
   -------------------------------------------------------------------------- */
@media (max-width: 620px){
  .mtc-svc-labels,
  .mtc-svc-labels-court{ grid-template-columns: 1fr 1fr; gap: 10px 14px; }

  /* A cette largeur, les libelles ont besoin d'un peu moins de corps. */
  .mtc-svc-labels li,
  .mtc-svc-labels-court li{ font-size: .84rem; }
}

/* --- Icônes --------------------------------------------------------------- */
/* Pastille à double anneau : un cercle plein très légèrement doré, un halo
   radial au sommet, et un second anneau en retrait. C'est ce double trait qui
   donne l'impression de gravure plutôt que d'icône plate. */
.mtc-svc-icone{
  position: relative;
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0; width: 58px; height: 58px;
  border: 1px solid var(--svc-filet-or);
  border-radius: 50%;
  color: var(--mtc-dore, #B8945F);
  background: radial-gradient(circle at 50% 26%,
    rgba(184,148,95,.14) 0%, rgba(184,148,95,0) 72%);
  background: radial-gradient(circle at 50% 26%,
    color-mix(in srgb, var(--mtc-dore, #B8945F) 14%, transparent) 0%,
    transparent 72%);
  box-shadow: inset 0 1px 0 rgba(247,244,239,.06);
  transition: border-color .45s ease, background .45s ease, box-shadow .45s ease;
}
.mtc-svc-icone::after{
  content: ""; position: absolute; inset: -6px; border-radius: 50%;
  border: 1px solid rgba(184,148,95,.13);
  border: 1px solid color-mix(in srgb, var(--mtc-dore, #B8945F) 13%, transparent);
  pointer-events: none;
}
.mtc-svc-icone svg{ width: 28px; height: 28px; }
/* Au survol de la carte ou de l'item qui la porte, l'anneau se réchauffe. */
.mtc-svc-prix-liste li:hover .mtc-svc-icone{
  border-color: var(--mtc-dore, #B8945F);
  box-shadow: inset 0 1px 0 rgba(247,244,239,.06), 0 0 26px -8px rgba(184,148,95,.55);
}
.mtc-svc-icone-l{ display: inline-flex; flex-shrink: 0; color: var(--mtc-dore, #B8945F); }
.mtc-svc-icone-l svg{ width: 22px; height: 22px; }
.mtc-svc-puce{
  display: inline-flex; align-items: center; justify-content: center;
  flex-shrink: 0; width: 20px; height: 20px; margin-top: 2px;
  color: var(--mtc-dore, #B8945F);
}
.mtc-svc-puce svg{ width: 17px; height: 17px; }

/* --- Révélation au défilement --------------------------------------------- */
.mtc-svc [data-mtcsvc]{
  opacity: 0; transform: translateY(24px);
  transition: opacity var(--svc-d) var(--svc-ease), transform var(--svc-d) var(--svc-ease);
  transition-delay: var(--svc-delai, 0ms);
  will-change: opacity, transform;
}
.mtc-svc [data-mtcsvc].mtc-svc-vu{ opacity: 1; transform: none; }


/* =============================================================================
   2. HERO — pleine largeur, contenu aligné sur le conteneur du site
   -----------------------------------------------------------------------------
   Les trois piliers sont DANS le hero : aucune bordure de bloc n'est visible à
   l'entrée sur la page.
   ============================================================================= */

.mtc-svc-hero{
  min-height: 100svh;
  display: flex; flex-direction: column; justify-content: flex-end;
  overflow: hidden; isolation: isolate;
  padding-top: calc(var(--svc-entete) + clamp(60px, 10vh, 130px));
  padding-bottom: clamp(88px, 12vh, 150px);
}

.mtc-svc-hero-media{ position: absolute; inset: 0; z-index: 0; overflow: hidden; }
.mtc-svc-hero-media img{
  width: 100%; height: 100%; object-fit: cover; display: block;
  transform: scale(1.08) translate3d(0, var(--svc-parallaxe, 0px), 0);
  transform-origin: 50% 45%;
}

/* Voile en trois couches, construit sur la palette MT Cuisine.
   La v2 laissait certains éléments peu lisibles, surtout sur téléphone :
   un dégradé vertical porte désormais le contraste là où vit le texte. */
.mtc-svc-hero-voile{
  position: absolute; inset: 0; z-index: 1; pointer-events: none;
  background:
    linear-gradient(180deg,
      rgba(13,13,13,.72) 0%,
      rgba(13,13,13,.34) 26%,
      rgba(13,13,13,.62) 62%,
      rgba(13,13,13,.94) 100%);
  background:
    linear-gradient(180deg,
      color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 72%, transparent) 0%,
      color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 34%, transparent) 26%,
      color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 62%, transparent) 62%,
      color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 94%, transparent) 100%);
}
.mtc-svc-hero-voile::after{
  content: ""; position: absolute; inset: 0;
  background: rgba(13,13,13,.22);
  background: color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 22%, transparent);
}

.mtc-svc-hero-corps{ position: relative; z-index: 2; width: 100%; }

.mtc-svc-hero-txt{ text-align: center; }
.mtc-svc-hero-txt .mtc-svc-cta-row{ justify-content: center; }

.mtc-svc-surtitre{
  margin: 0 0 22px;
  color: var(--mtc-dore, #B8945F);
  letter-spacing: var(--mtc-ls-eyebrow, .24em);
  text-transform: uppercase;
  font-size: var(--mtc-fs-eyebrow, .8em);
}

.mtc-svc-h1{
  margin: 0 auto 26px;
  color: var(--svc-c-titre);
  font-weight: 400; line-height: 1.04;
  letter-spacing: var(--mtc-ls-titre, -.015em);
  font-size: clamp(2.2rem, 1.1rem + 4.2vw, 5rem);
  max-width: 20ch;
  text-wrap: balance;
}

.mtc-svc-soustitre{
  margin: 0 auto clamp(32px, 4vw, 46px);
  color: rgba(247,244,239,.9);
  color: color-mix(in srgb, var(--mtc-blanc, #F7F4EF) 90%, transparent);
  font-size: var(--mtc-fs-lead, 1.16em);
  max-width: 58ch;
}

/* --- Les trois piliers, dans le hero -------------------------------------- */
.mtc-svc-piliers-grille{
  list-style: none; margin: clamp(56px, 8vh, 96px) 0 0; padding: clamp(34px, 4vw, 44px) 0 0;
  border-top: 1px solid var(--svc-filet-or);
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(28px, 3.6vw, 64px);
}
.mtc-svc-piliers-grille li{ display: flex; flex-direction: column; align-items: flex-start; }

/* Le titre du pilier est un <h3> : Blocksy lui applique donc la police de
   titre, comme aux <h3> du bloc « ce qui fait le prix ». C'est CE changement
   qui crée la hiérarchie — un <p> en gras dans la police de texte ne se
   distinguait pas du paragraphe en dessous, quel que soit l'écran.
   Un <h2> masqué visuellement précède la liste dans le HTML : le niveau h3
   reste correct, aucun saut de hiérarchie. */
.mtc-svc-pilier-t{
  margin: clamp(26px, 2.4vw, 34px) 0 10px;
  color: var(--svc-c-titre);
  font-weight: 500; line-height: 1.22;
  font-size: clamp(1.14rem, 1.5vw, 1.42rem);
  letter-spacing: var(--mtc-ls-titre, -.015em);
}
/* Le paragraphe descend d'un cran en opacité ET en corps : titre plein blanc en
   police de titre, texte à 74 % en police de texte. */
.mtc-svc-piliers-grille p{
  margin: 0;
  color: rgba(247,244,239,.74);
  color: color-mix(in srgb, var(--mtc-blanc, #F7F4EF) 74%, transparent);
  font-size: clamp(.9rem, 1.02vw, .96rem); max-width: 40ch;
}

/* --- Invite à faire défiler, animée, reprise de l'accueil ------------------ */
/* En flux, sous les piliers : en position absolue en bas de hero elle
   chevauchait le deuxième pilier, puisque le bas du hero est occupé. */
.mtc-svc-continue{
  position: relative; z-index: 3;
  margin: clamp(34px, 5vh, 58px) auto 0;
  display: flex; flex-direction: column; align-items: center; gap: 10px;
  pointer-events: none;
}
.mtc-svc-continue-txt{
  font-size: .7rem; letter-spacing: .2em; text-transform: uppercase;
  color: var(--svc-c-texte-2);
}
.mtc-svc-continue-fleche{
  color: var(--mtc-dore, #B8945F); display: inline-flex;
  animation: mtcsvc-fleche 1.8s ease-in-out infinite;
}
@keyframes mtcsvc-fleche{ 0%,100%{ transform: translateY(0); } 50%{ transform: translateY(7px); } }


/* =============================================================================
   3. CARTES PHOTO — composant .mtcs-card de l'accueil
   ============================================================================= */

.mtc-svc-cartes{
  display: grid; grid-template-columns: repeat(5, 1fr);
  gap: clamp(12px, 1.2vw, 20px); width: 100%;
}
.mtc-svc-cartes .mtcs-card{ aspect-ratio: 4 / 5; }
/* Titre tenu sur une ligne : à cinq colonnes, la taille de l'accueil déborde. */
.mtc-svc-cartes .mtcs-card-title{ font-size: clamp(1.05rem, 1.45vw, 1.5rem); }
.mtc-svc-cartes .mtcs-caption{ padding: 20px 20px 22px; }

/* La carte est un lien : il faut que ça se voie AU REPOS, pas seulement au
   survol. Un chevron cerclé doré, discret, toujours présent, qui avance et se
   remplit au survol. C'est l'affordance qui manquait. */
.mtc-svc-carte-fleche{
  display: inline-flex; align-items: center; justify-content: center;
  width: 34px; height: 34px; margin-top: 16px;
  border: 1px solid var(--svc-filet-or);
  border-radius: 50%;
  color: var(--mtc-dore, #B8945F);
  background: rgba(13,13,13,.35);
  background: color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 35%, transparent);
  transition: transform .45s var(--svc-ease), background .45s ease, border-color .45s ease, color .45s ease;
}
.mtc-svc-carte-fleche svg{ width: 16px; height: 16px; }
.mtcs-card:hover .mtc-svc-carte-fleche,
.mtcs-card:focus-visible .mtc-svc-carte-fleche{
  transform: translateX(5px);
  background: var(--mtc-dore, #B8945F);
  border-color: var(--mtc-dore, #B8945F);
  color: var(--mtc-noir, #1A1A1A);
}

@media (max-width: 1200px){
  .mtc-svc-cartes{ grid-template-columns: repeat(3, 1fr); }
}

/* PIÈGE 242 — sous 1024 px, .mtcs-card est mis en opacity:0 et n'attend que la
   classe .mtcs-revealed, posée par le JS de l'accueil, qui ne tourne pas ici.
   Sans cette règle, les cartes sont INVISIBLES sur mobile. */
@media (max-width: 1024px){
  .mtc-svc .mtcs-card,
  .mtc-svc .mtcs-head{ opacity: 1; transform: none; }
}

/* Sous 900 px il n'y a pas de survol : la carte devient image + texte, toujours
   lisibles, et l'image reste visible en haut pour que le client voie de quoi on
   parle. */
@media (max-width: 900px){
  .mtc-svc-cartes{ grid-template-columns: repeat(2, 1fr); }
  .mtc-svc-cartes .mtcs-card{
    aspect-ratio: auto; display: flex; flex-direction: column;
    background: var(--svc-fond-carte);
    border: 1px solid var(--svc-filet-clair);
  }
  .mtc-svc-cartes .mtcs-img{
    position: relative; inset: auto;
    width: 100%; height: clamp(150px, 26vw, 220px);
    transform: none;
  }
  .mtc-svc-cartes .mtcs-veil,
  .mtc-svc-cartes .mtcs-frame,
  .mtc-svc-cartes .mtcs-bubble{ display: none; }
  .mtc-svc-cartes .mtcs-caption{
    position: relative; inset: auto; padding: 18px 18px 22px;
  }
  .mtc-svc-cartes .mtcs-card-title{
    font-size: 1.15rem; text-shadow: none;
  }
  .mtc-svc-cartes .mtcs-card-desc{
    max-height: none; opacity: 1; transform: none;
    margin-top: 8px; text-shadow: none; font-size: .9rem;
  }
}
@media (max-width: 560px){
  .mtc-svc-cartes{ grid-template-columns: 1fr; }
  .mtc-svc-cartes .mtcs-img{ height: clamp(170px, 44vw, 240px); }
}


/* =============================================================================
   4. DUO TEXTE + MÉDIA, ÉVENTAIL, MOSAÏQUE
   ============================================================================= */

.mtc-svc-duo{
  display: grid; grid-template-columns: 1fr 1fr;
  gap: clamp(40px, 5vw, 90px); align-items: center;
}
.mtc-svc-duo-serre{ grid-template-columns: 40% 1fr; align-items: start; }
.mtc-svc-duo-inv .mtc-svc-mosaique{ order: -1; }
.mtc-svc-duo-txt .mtc-svc-corps{ margin-top: clamp(24px, 2.8vw, 34px); }
.mtc-svc-duo-serre .mtc-svc-duo-txt .mtc-svc-corps + .mtc-svc-corps{ margin-top: clamp(30px, 3.6vw, 44px); }

.mtc-svc-duo-media{
  position: relative; overflow: hidden; margin: 0;
  aspect-ratio: 5 / 4; border-radius: var(--mtc-r-l, 10px);
  background: var(--svc-fond-carte);
}
.mtc-svc-duo-media img{
  position: absolute; inset: -6% 0;
  width: 100%; height: 112%; object-fit: cover; display: block;
  transform: translate3d(0, var(--svc-parallaxe-2, 0px), 0);
}
.mtc-svc-media-cadre{
  position: absolute; inset: 16px; z-index: 2; pointer-events: none;
  border: 1px solid rgba(247,244,239,.28);
  border: 1px solid color-mix(in srgb, var(--mtc-blanc, #F7F4EF) 28%, transparent);
  border-radius: 4px;
}

/* --- Éventail de trois photos, composant .mtcsh-media de l'accueil ---------
   PIÈGE 242, même famille que les cartes : sous 1024 px .mtcsh-media est mis en
   opacity:0 en attendant .mtcsh-revealed. On neutralise. --------------------- */
.mtc-svc-eventail{ margin: 0; }
/* La photo 2 est en position absolue : le padding de sécurité de 242 ne la
   contient donc PAS — un enfant absolu se cale sur la boîte de padding, pas sur
   la boîte de contenu. Avec right:2% et un écartement de 9 % de sa largeur, elle
   débordait la fenêtre de 8 px à 1440, où la colonne touche le bord du
   conteneur. On la rentre. Mesuré au banc, pas deviné. */
.mtc-svc-eventail .mtcsh-photo-2{ right: 9%; }
.mtc-svc-eventail .mtcsh-photo-3{ left: 0; }
@media (max-width: 1024px){
  .mtc-svc .mtcsh-media{ opacity: 1; transform: none; }
}

/* --- Mosaïque du bloc fabricant -------------------------------------------
   Trois photos affichées PETIT plutôt qu'une seule agrandie : les visuels de la
   médiathèque viennent du profil Google et ne supportent pas l'agrandissement. */
.mtc-svc-mosaique{
  display: grid;
  grid-template-columns: 1fr 1fr;
  grid-template-areas: "a a" "b c";
  gap: clamp(10px, 1vw, 16px);
}
.mtc-svc-mosaique figure{ position: relative; margin: 0; overflow: hidden;
  border-radius: var(--mtc-r-m, 4px); background: var(--svc-fond-carte); }
.mtc-svc-mosaique img{ width: 100%; height: 100%; object-fit: cover; display: block; }
.mtc-svc-mos-1{ grid-area: a; aspect-ratio: 16 / 10; }
.mtc-svc-mos-2{ grid-area: b; aspect-ratio: 1 / 1; }
.mtc-svc-mos-3{ grid-area: c; aspect-ratio: 1 / 1; }

.mtc-svc-liens{ margin: clamp(26px, 3vw, 34px) 0 0; color: var(--svc-c-texte);
  max-width: var(--svc-texte-max); font-size: clamp(.92rem, 1.06vw, 1rem); }

.mtc-svc-encart{
  margin: clamp(28px, 3.4vw, 38px) 0 0; padding: clamp(22px, 2.6vw, 30px);
  border-left: 2px solid var(--mtc-dore, #B8945F);
  background: var(--svc-fond-carte);
  border-radius: 0 var(--mtc-r-m, 4px) var(--mtc-r-m, 4px) 0;
}
.mtc-svc-encart p{ margin: 0; max-width: none;
  color: rgba(247,244,239,.92);
  color: color-mix(in srgb, var(--mtc-blanc, #F7F4EF) 92%, transparent); }


/* =============================================================================
   5. IMPLANTATIONS — section collante + navigation rapide
   ============================================================================= */

.mtc-svc-impl-grille{
  display: grid; grid-template-columns: minmax(260px, 28%) 1fr;
  gap: clamp(40px, 5vw, 100px); align-items: start;
}
.mtc-svc-impl-aside{ position: sticky; top: calc(var(--svc-entete) + clamp(24px, 4vh, 56px)); }

/* Navigation rapide : boutons secondaires du design system, taille sm. */
.mtc-svc-impl-nav{
  display: flex; flex-wrap: wrap; gap: 8px;
  margin: clamp(26px, 3vw, 34px) 0 0;
}
.mtc-svc-impl-nav .mtc-cta-2{ padding: 10px 18px; font-size: .8rem; }
.mtc-svc-impl-nav .mtc-cta-2.est-actif{
  border-color: var(--mtc-dore, #B8945F);
  background: rgba(184,148,95,.14);
  background: color-mix(in srgb, var(--mtc-dore, #B8945F) 14%, transparent);
  color: var(--mtc-blanc-pur, #FFF);
}

.mtc-svc-impl-prog{ margin-top: clamp(26px, 3vw, 34px); }
.mtc-svc-impl-rail{ position: relative; width: 100%; height: 2px;
  background: var(--svc-filet-clair); overflow: hidden; }
.mtc-svc-impl-fill{ position: absolute; inset: 0 auto 0 0; width: 20%;
  background: var(--mtc-dore, #B8945F); transition: width .6s var(--svc-ease); }
.mtc-svc-impl-compteur{ margin: 14px 0 0; color: var(--svc-c-texte-2);
  font-size: .82rem; letter-spacing: .12em; }
.mtc-svc-impl-compteur b{ color: var(--mtc-dore, #B8945F); font-weight: 400; }

.mtc-svc-impl-note{
  margin: clamp(26px, 3vw, 34px) 0 0; padding-top: clamp(22px, 2.6vw, 28px);
  border-top: 1px solid var(--svc-filet-or);
  color: var(--svc-c-texte-2); font-size: .9rem;
}

.mtc-svc-impl-liste{ display: flex; flex-direction: column; gap: clamp(56px, 8vh, 120px); }
.mtc-svc-impl-item{ scroll-margin-top: calc(var(--svc-entete) + 40px); }

.mtc-svc-impl-fig{
  position: relative; margin: 0 0 28px; aspect-ratio: 3 / 2;
  overflow: hidden; border-radius: var(--mtc-r-l, 10px);
  background: var(--svc-fond-carte);
}
.mtc-svc-impl-fig img{
  position: absolute; inset: 0; width: 100%; height: 100%;
  object-fit: cover; display: block;
  transform: scale(1.02); transition: transform 1.2s var(--svc-ease);
}
.mtc-svc-impl-item.est-actif .mtc-svc-impl-fig img{ transform: scale(1.06); }
.mtc-svc-impl-fig::before,
.mtc-svc-impl-fig::after{
  content: ""; position: absolute; inset: 16px; z-index: 2;
  pointer-events: none; border-radius: 4px; transition: clip-path .7s ease .05s;
}
.mtc-svc-impl-fig::before{
  border-top: 1px solid var(--svc-c-fort); border-right: 1px solid var(--svc-c-fort);
  clip-path: inset(0 0 100% 100%);
}
.mtc-svc-impl-fig::after{
  border-bottom: 1px solid var(--svc-c-fort); border-left: 1px solid var(--svc-c-fort);
  clip-path: inset(100% 100% 0 0);
}
.mtc-svc-impl-item.est-actif .mtc-svc-impl-fig::before,
.mtc-svc-impl-item.est-actif .mtc-svc-impl-fig::after{ clip-path: inset(0 0 0 0); }

.mtc-svc-impl-num{ display: inline-block; margin: 0 0 10px;
  color: var(--mtc-dore, #B8945F); font-size: .82rem; letter-spacing: .2em; }
.mtc-svc-impl-h3{ margin: 0 0 18px; color: var(--svc-c-titre);
  font-weight: 500; line-height: 1.16; font-size: clamp(1.3rem, 2.1vw, 1.95rem); }
.mtc-svc-impl-item p{ margin: 0 0 16px; color: var(--svc-c-texte);
  max-width: var(--svc-texte-max); font-size: clamp(.95rem, 1.1vw, 1.03rem); }
.mtc-svc-impl-item p:last-child{ margin-bottom: 0; }


/* =============================================================================
   6. FAQ — ouverture ET fermeture animées
   -----------------------------------------------------------------------------
   <details> natif ne sait pas animer sa fermeture : le contenu disparaît d'un
   coup. On anime une piste de grille de 0fr à 1fr, et services.js retarde le
   retrait de l'attribut open le temps de la transition.
   ============================================================================= */

.mtc-svc-faq{ margin-top: clamp(50px, 6vw, 84px); }
.mtc-svc-faq details{ border-top: 1px solid var(--svc-filet-clair); }
.mtc-svc-faq details:last-of-type{ border-bottom: 1px solid var(--svc-filet-clair); }

.mtc-svc-faq summary{
  list-style: none; cursor: pointer; position: relative;
  padding: 24px 50px 24px 0;
  color: var(--svc-c-titre);
  font-size: clamp(1.02rem, 1.3vw, 1.18rem); line-height: 1.35;
  transition: color .3s ease;
}
.mtc-svc-faq summary::-webkit-details-marker{ display: none; }
.mtc-svc-faq summary:hover{ color: var(--mtc-dore, #B8945F); }
.mtc-svc-faq summary:focus-visible{ outline: 2px solid var(--mtc-dore, #B8945F); outline-offset: 4px; }

/* Signe + qui pivote en −, plus lisible qu'un chevron */
.mtc-svc-faq summary::before,
.mtc-svc-faq summary::after{
  content: ""; position: absolute; right: 8px; top: 50%;
  background: var(--mtc-dore, #B8945F);
  transition: transform .45s var(--svc-ease), opacity .3s ease;
}
.mtc-svc-faq summary::before{ width: 15px; height: 1px; margin-top: -.5px; }
.mtc-svc-faq summary::after{ width: 1px; height: 15px; margin: -7.5px 7px 0 0; }
.mtc-svc-faq details.est-ouvert summary::after{ transform: rotate(90deg); opacity: 0; }
.mtc-svc-faq details.est-ouvert summary::before{ transform: rotate(180deg); }

.mtc-svc-faq-corps{
  display: grid; grid-template-rows: 0fr;
  transition: grid-template-rows .45s var(--svc-ease);
}
.mtc-svc-faq-corps > div{ overflow: hidden; }
.mtc-svc-faq details.est-ouvert .mtc-svc-faq-corps{ grid-template-rows: 1fr; }
.mtc-svc-faq details p{
  margin: 0 0 26px; color: var(--svc-c-texte);
  max-width: var(--svc-texte-max); font-size: clamp(.94rem, 1.06vw, 1.02rem);
}
/* Sans JavaScript, l'attribut open suffit : le contenu s'affiche, sans animation. */
.mtc-svc-faq details[open]:not(.est-ouvert):not(.js-pret) .mtc-svc-faq-corps{ grid-template-rows: 1fr; }


/* =============================================================================
   7. CE QUI FAIT LE PRIX — les cinq postes sur une ligne en desktop
   ============================================================================= */

.mtc-svc-prix-liste{
  list-style: none; margin: clamp(36px, 4vw, 52px) 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(5, 1fr);
  gap: clamp(14px, 1.4vw, 24px);
  counter-reset: poste;
}
.mtc-svc-prix-liste li{
  counter-increment: poste; position: relative;
  padding: clamp(22px, 2.2vw, 30px);
  border: 1px solid var(--svc-filet-clair);
  border-radius: var(--mtc-r-l, 10px);
  background: var(--svc-fond-carte);
  transition: border-color .5s ease, transform .5s var(--svc-ease);
}
.mtc-svc-prix-liste li:hover{ border-color: var(--svc-filet-or); transform: translateY(-4px); }
.mtc-svc-prix-liste li::after{
  content: "0" counter(poste);
  position: absolute; top: clamp(22px, 2.2vw, 30px); right: clamp(22px, 2.2vw, 30px);
  color: var(--svc-c-texte-2); font-size: .78rem; letter-spacing: .16em;
}
.mtc-svc-prix-liste .mtc-svc-icone{ width: 46px; height: 46px; }
.mtc-svc-prix-liste .mtc-svc-icone svg{ width: 23px; height: 23px; }
.mtc-svc-prix-liste h3{
  margin: 20px 0 10px; color: var(--svc-c-titre);
  font-weight: 500; font-size: clamp(.98rem, 1.15vw, 1.12rem); line-height: 1.3;
}
.mtc-svc-prix-liste p{ margin: 0; color: var(--svc-c-texte); font-size: clamp(.86rem, .95vw, .94rem); }

/* Phrase de fin : centrée, avec son filet doré centré au-dessus. */
.mtc-svc-prix-fin{
  margin: clamp(40px, 4.5vw, 60px) auto 0;
  max-width: 74ch; text-align: center;
}
.mtc-svc-prix-fin .mtc-svc-filet{ margin: 0 auto 24px; }
.mtc-svc-prix-fin p{
  margin: 0 auto;
  color: rgba(247,244,239,.92);
  color: color-mix(in srgb, var(--mtc-blanc, #F7F4EF) 92%, transparent);
  font-size: clamp(1rem, 1.2vw, 1.14rem);
}
.mtc-svc-prix-fin .mtc-svc-cta-row{ justify-content: center; margin-top: clamp(28px, 3.2vw, 38px); }

@media (max-width: 1280px){
  .mtc-svc-prix-liste{ grid-template-columns: repeat(3, 1fr); }
}
@media (max-width: 820px){
  .mtc-svc-prix-liste{ grid-template-columns: repeat(2, 1fr); }
}
@media (max-width: 560px){
  .mtc-svc-prix-liste{ grid-template-columns: 1fr; gap: 12px; }
  .mtc-svc-prix-liste li{ padding: 22px; }
}


/* =============================================================================
   8. RENDEZ-VOUS — contenu centré
   ============================================================================= */

.mtc-svc-rdv-inner{ max-width: 920px; margin-inline: auto; text-align: center; }
.mtc-svc-rdv-inner .mtc-svc-filet{ margin: 0 auto 24px; }
.mtc-svc-rdv-inner .mtc-svc-lead{ margin-inline: auto; }
.mtc-svc-rdv-inner .mtc-svc-cta-row{ justify-content: center; }
.mtc-svc-prepa{
  list-style: none; margin: clamp(34px, 4vw, 48px) 0 0; padding: 0;
  display: grid; grid-template-columns: repeat(3, 1fr);
  gap: clamp(22px, 2.6vw, 36px);
}
.mtc-svc-prepa li{
  display: flex; flex-direction: column; align-items: center; gap: 16px;
  color: var(--svc-c-fort); font-size: clamp(.92rem, 1.06vw, 1rem); line-height: 1.5;
}
.mtc-svc-note{
  margin: clamp(26px, 3vw, 34px) auto clamp(30px, 3.6vw, 42px);
  color: var(--svc-c-texte-2); font-size: .95rem; max-width: 60ch;
}


/* =============================================================================
   9. RÉALISATIONS — bloc WordPress natif, correctifs
   -----------------------------------------------------------------------------
   Le bloc « Derniers articles » sort avec les classes is-grid et columns-N, que
   la maquette statique de l'accueil n'avait pas. Leurs règles de cœur WordPress
   (flex + largeur en pourcentage sur les li) écrasaient la grille de 242, d'où
   les colonnes étroites constatées en ligne. On rétablit ici.
   ============================================================================= */

.mtc-svc-real-suite{ margin-top: clamp(36px, 4vw, 52px); }

/* ⚠ CAUSE RÉELLE DE L'INVISIBILITÉ EN TABLETTE ET EN TÉLÉPHONE — relevée à la
   source, dans le snippet 242 lu en base :

     @media (max-width:1024px){
       .realmt.wp-block-latest-posts > li{ opacity:0; transform:translateY(30px); }
       .realmt.wp-block-latest-posts > li.mtcr-revealed{ opacity:1; transform:none; }
     }

   Sous 1024 px, les articles sont donc CACHÉS tant qu'une classe .mtcr-revealed
   n'est pas posée. Elle l'est par le JS de l'accueil (snippet 241), dont
   l'observateur est borné à la section .mtcr-real de la page d'accueil :

     var cards = section.querySelectorAll('.realmt > li');

   Cette section n'existe pas ici, l'observateur ne tourne pas, la classe n'est
   jamais posée : le bloc reste à opacity:0. Ce n'est pas un problème de grille.
   C'est exactement le même piège que .mtcs-card et .mtcsh-media, déjà neutralisés
   plus haut — celui-là m'avait échappé parce que la maquette de l'accueil est un
   <ul> écrit à la main, jamais confronté au bloc dynamique.

   La neutralisation est bornée à body:not(.home) : l'animation de révélation de
   la page d'accueil reste intacte, même si cette feuille venait à être chargée
   partout. */
@media (max-width: 1024px){
  body:not(.home) .realmt.wp-block-latest-posts > li,
  body:not(.home) ul.realmt > li{
    opacity: 1 !important;
    transform: none !important;
  }
}

/* Écrit en défensif : WordPress sort ce bloc avec is-grid ET columns-N (vérifié
   sur le DOM rendu de la page 217), et son CSS de coeur pose display:flex, une
   largeur en pourcentage et des marges sur les <li>. Selon l'ordre de chargement
   des extraits WPCode, ces règles reprenaient la main — d'où les colonnes
   étroites en desktop. On force donc la grille sur TOUTES les formes du
   sélecteur, avec ou sans is-grid, et on remet les <li> à plat.
   Le nombre de colonnes est en !important lui aussi : 242 déclare sa propre
   règle à 900 px, et rien ne garantit l'ordre de chargement entre 242 et 300. */
.realmt.wp-block-latest-posts,
.realmt.wp-block-latest-posts.is-grid,
ul.realmt{
  display: grid !important;
  grid-template-columns: var(--realmt-cols, repeat(3, 1fr)) !important;   /* v27.27 (L40) : le nombre de colonnes passe par un jeton, voir la passe v27.27 */
  gap: clamp(16px, 1.6vw, 26px);
  margin: 0 !important; padding: 0 !important;
  list-style: none !important;
  float: none !important;
}
.realmt.wp-block-latest-posts > li,
ul.realmt > li{
  width: auto !important; max-width: none !important;
  margin: 0 !important; padding: 0;
  float: none !important; display: block !important;
  list-style: none !important;
}
.realmt .wp-block-latest-posts__featured-image img{
  max-width: none;   /* le cadrage est géré par object-fit dans 242 */
}
/* v27.27 (L40) : les deux paliers ecrivent le jeton --realmt-cols, lu par la
   declaration en !important ci-dessus ; le !important qu'ils portaient n'a plus
   d'objet. Le bloc Conseils de l'accueil surcharge le jeton dans la passe
   v27.27 (trois colonnes jusqu'a 1024 inclus, puis une). */
@media (max-width: 1024px){
  .realmt.wp-block-latest-posts,
  .realmt.wp-block-latest-posts.is-grid,
  ul.realmt{ --realmt-cols: repeat(2, 1fr); }
}
@media (max-width: 760px){
  .realmt.wp-block-latest-posts,
  .realmt.wp-block-latest-posts.is-grid,
  ul.realmt{ --realmt-cols: 1fr; max-width: 520px; margin-inline: auto !important; }
}
/* Le bloc ajoute parfois un lien « Lire la suite » et une date : on les cale. */
.realmt .wp-block-latest-posts__post-excerpt a{
  display: inline-block; margin-top: 6px;
  color: var(--mtc-dore, #B8945F); text-decoration: none; border: 0;
}
.realmt .wp-block-latest-posts__post-date{
  display: block; padding: 0 24px; color: var(--svc-c-texte-2); font-size: .8rem;
}


/* =============================================================================
   10. AVIS — carrousel de l'accueil
   -----------------------------------------------------------------------------
   Tout le style vient de 242. On ne pose ici que le cadrage de la section et le
   centrage de l'en-tête : la section n'a plus son padding propre, la Row le
   porte.
   ============================================================================= */

.mtca-reviews-sec.mtc-svc{ padding: 0; }
/* ARBITRAGE DE FUSION du 11/08/2026 — voir le rapport 25, §3.
   Cette regle etait ecrite sans prefixe et entrait en concurrence directe avec
   celle du SOCLE COMMUN (max-width:680px), heritee de l'accueil. Dans l'ordre
   de chargement en vigueur jusqu'ici (300 servi AVANT 242), c'est la version
   accueil qui gagnait : les 780 px n'ont jamais ete appliques nulle part.
   Dans le fichier fusionne, la section services passe APRES l'accueil : sans
   prefixe, elle aurait deshabille l'accueil. On la borne donc a .mtc-svc.
   Valeurs inchangees. */
.mtc-svc .mtca-reviews-head{ max-width: 780px; margin-inline: auto; text-align: center; }
.mtca-reviews-sec .mtc-svc-eyebrow,
.mtca-reviews-sec .mtc-svc-h2{ text-align: center; }
.mtca-reviews-sec .mtca-rating{ margin-top: 22px; }


/* =============================================================================
   11. CTA FINAL
   ============================================================================= */

.mtc-svc-cta{ text-align: center; }
.mtc-svc-cta-inner{ max-width: 820px; margin-inline: auto; position: relative; z-index: 1; }
.mtc-svc-cta .mtc-svc-filet{ margin: 0 auto 24px; }
.mtc-svc-cta-txt{
  margin: 26px auto clamp(34px, 4vw, 48px);
  color: rgba(247,244,239,.88);
  color: color-mix(in srgb, var(--mtc-blanc, #F7F4EF) 88%, transparent);
  max-width: 58ch; font-size: clamp(1rem, 1.25vw, 1.14rem);
}
.mtc-svc-cta .mtc-svc-cta-row{ justify-content: center; }
.mtc-svc-nap{ margin: clamp(30px, 3.6vw, 42px) 0 0; color: var(--svc-c-texte-2); font-size: .86rem; }
.mtc-svc-zone{
  margin: clamp(22px, 2.6vw, 30px) auto 0; padding-top: clamp(22px, 2.6vw, 30px);
  border-top: 1px solid var(--svc-filet-or);
  color: var(--svc-c-texte-2); font-size: .86rem; max-width: 70ch;
}


/* =============================================================================
   TABLETTE ET MOBILE — point de rupture structurel unique à 1024 px
   ============================================================================= */

@media (max-width: 1024px){

  /* Section collante : retour au flux. La navigation rapide se retrouve
     naturellement en tête de section et sert de sommaire. */
  .mtc-svc-impl-grille{ grid-template-columns: 1fr; gap: clamp(30px, 5vw, 44px); }
  .mtc-svc-impl-aside{ position: static; top: auto; }
  .mtc-svc-impl-prog{ display: none; }   /* un rail de progression sans course n'a plus de sens */
  .mtc-svc-impl-note{ margin-top: clamp(22px, 3vw, 30px); }
  .mtc-svc-impl-liste{ gap: clamp(44px, 7vh, 72px); }
  .mtc-svc-impl-fig::before,
  .mtc-svc-impl-fig::after{ clip-path: inset(0 0 0 0); }
  .mtc-svc-impl-nav{ margin-top: clamp(22px, 3vw, 30px); }

  /* Aucune parallaxe sans souris : neutralisée ici ET le JS arrête sa boucle. */
  .mtc-svc-hero-media img{ transform: scale(1.05); }
  .mtc-svc-duo-media img{ transform: none; }

  .mtc-svc-duo,
  .mtc-svc-duo-serre{ grid-template-columns: 1fr; gap: clamp(32px, 5vw, 46px); }
  .mtc-svc-duo-inv .mtc-svc-mosaique{ order: -1; }
  .mtc-svc-duo-media{ aspect-ratio: 16 / 10; }

  /* Icône AU-DESSUS, puis le titre, puis le paragraphe. La disposition en ligne
     écrasait le titre sur trois lignes dans une colonne de 90 px à 360 px de
     large : illisible. */
  .mtc-svc-piliers-grille{ grid-template-columns: 1fr; gap: clamp(30px, 5vw, 40px);
    margin-top: clamp(38px, 6vh, 60px); padding-top: clamp(28px, 4vw, 36px); }
  .mtc-svc-piliers-grille li{ flex-direction: column; align-items: flex-start; gap: 0; }
  .mtc-svc-pilier-t{ margin: 24px 0 9px; font-size: 1.18rem; }
  .mtc-svc-piliers-grille p{ max-width: none; }
  .mtc-svc-icone{ width: 50px; height: 50px; }
  .mtc-svc-icone svg{ width: 24px; height: 24px; }

  .mtc-svc-prepa{ grid-template-columns: 1fr; gap: 22px; }
  .mtc-svc-prepa li{ flex-direction: row; align-items: center; text-align: left; }

  .mtc-svc-continue{ display: none; }
  .mtc-svc-hero{ min-height: auto; padding-bottom: clamp(56px, 9vh, 90px); }

  /* Voile renforcé : sur téléphone, le texte et les piliers occupent presque
     toute la hauteur du hero, la photo doit donc reculer davantage. */
  .mtc-svc-hero-voile{
    background: linear-gradient(180deg,
      rgba(13,13,13,.84) 0%,
      rgba(13,13,13,.52) 18%,
      rgba(13,13,13,.86) 52%,
      rgba(13,13,13,.97) 100%);
    background: linear-gradient(180deg,
      color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 84%, transparent) 0%,
      color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 52%, transparent) 18%,
      color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 86%, transparent) 52%,
      color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 97%, transparent) 100%);
  }
  .mtc-svc-hero-voile::after{
    background: rgba(13,13,13,.3);
    background: color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 30%, transparent);
  }
}

@media (max-width: 600px){
  .mtc-svc-cta-row{ flex-direction: column; width: 100%; }
  .mtc-svc-cta-row .mtc-cta,
  .mtc-svc-cta-row .mtc-cta-2{ width: 100%; justify-content: center; }
  .mtc-svc-hero-txt{ text-align: left; }
  .mtc-svc-hero-txt .mtc-svc-cta-row{ justify-content: stretch; }
  .mtc-svc-h1{ margin-inline: 0; max-width: none; }
  .mtc-svc-soustitre{ margin-inline: 0; }
  .mtc-svc-impl-nav{ gap: 6px; }
  .mtc-svc-impl-nav .mtc-cta-2{ padding: 9px 14px; font-size: .76rem; }
  .mtc-svc-encart{ padding: 20px; }
  .mtc-svc-labels{ gap: 8px 16px; }
}


/* =============================================================================
   MOUVEMENT RÉDUIT
   -----------------------------------------------------------------------------
   249 FONDATIONS traite déjà prefers-reduced-motion pour tout le site. On ne le
   réécrit pas : on rend seulement visible ce que le JS aurait dû révéler.
   ============================================================================= */

@media (prefers-reduced-motion: reduce){
  .mtc-svc [data-mtcsvc]{ opacity: 1; transform: none; }
  .mtc-svc-hero-media img,
  .mtc-svc-duo-media img{ transform: none; }
  .mtc-svc .mtcsh-media{ opacity: 1; }
  .mtc-svc .mtcsh-photo{ transform: none; }
  .mtc-svc-impl-fig::before,
  .mtc-svc-impl-fig::after{ clip-path: inset(0 0 0 0); }
  .mtc-svc-continue-fleche{ animation: none; }
}


/* =============================================================================
   LA COLONNE MEDIA SUIT LE TEXTE  ·  26 aout 2026
   -----------------------------------------------------------------------------
   Demande du pilote sur rendu ecran : « les visuels sur la droite sont trop
   empiles », « qu'ils s'affichent en haut de la section a cote du texte et
   qu'ils descendent au defilement en suivant le texte, pour eviter les espaces
   vides ». Meme demande sur la section living.

   PORTEE — arbitrage du pilote du 26/08, pris en connaissance de cause.
   .mtc-svc-intro existe sur les TROIS pages services : 217, 219 et 221 —
   verifie en base. Ces regles s'appliquent donc aux trois, et c'est voulu :
   les pages services sont des duplications qui partagent .mtc-svc-* (playbook
   21 §0). Un eventail collant sur le dressing mais pas sur la cuisine aurait
   ete une incoherence visible.
     · 217 et 219 portent l'eventail : effet complet.
     · 221 n'a pas de .mtcsh-media : seul le calage en haut s'y applique.
   .mtc-svc-living n'existe que sur 219, sa regle ne concerne qu'elle.

   CE QUE CA FAIT, EN TROIS TEMPS
     1. la colonne media se cale EN HAUT, elle ne s'etire plus sur la hauteur
        du texte — align-items:start sur le duo ;
     2. elle devient COLLANTE et accompagne le texte pendant la traversee de la
        section : plus de blanc sous les photos quand le texte est plus long ;
     3. l'eventail est DECOMPRIME — conteneur plus haut, photos plus etroites,
        donc elles se chevauchent moins. Les photos etant positionnees en
        pourcentage, un conteneur plus haut ecarte mecaniquement les photos
        sans redefinir une seule de leurs positions d'origine.

   LE JS N'EST PAS TOUCHE. Le module « eventail » du BLOC 3 continue d'ecrire
   des transform ; ces regles ne touchent que la GEOMETRIE DE BASE et top.
   --mtcsvc-entete est ecrite en style en ligne sur <html> par le BLOC 1 de
   site.js — verifie ligne 202 — donc la valeur suit l'en-tete Blocksy meme en
   mode collant.

   CONSEQUENCE A CONNAITRE : une fois la colonne epinglee, l'ecartement de
   l'eventail se fige, le module calculant sa progression sur la position du
   media qui ne bouge plus. Les photos s'ecartent a l'entree de la section puis
   tiennent leur ecartement en accompagnant le texte. C'est un choix, pas un
   defaut. Pour que l'ecartement CONTINUE pendant l'epinglage il faudrait un
   module JS qui calcule sur la SECTION et non sur le media.

   ⚠ CE QUI PEUT FAIRE ECHOUER LE COLLANT SANS AUCUNE ERREUR : un ancetre avec
   overflow different de visible. Aucun n'existe dans ce fichier — verifie
   regle par regle — ni dans les extraits 250 et 252, dont les overflow:hidden
   sont conditionnes a une classe de verrou temporaire. Reste les habillages
   Kadence et Blocksy, non lisibles d'ici. Symptome le cas echeant : la colonne
   ne colle pas, tout le reste est normal, rien en console.

   ⚠ LES TROIS VALEURS DE GEOMETRIE — aspect-ratio, width, top — sont ecrites
   une par ligne pour etre ajustables seules. Elles n'ont pas ete confirmees au
   rendu reel.
   ============================================================================= */

@media (min-width: 1025px){

  /* 1 · le media se cale en haut */
  .mtc-svc-intro .mtc-svc-duo,
  .mtc-svc-living .mtc-svc-duo{
    align-items: start;
  }

  /* 2 · il devient collant et suit le texte, sous l'en-tete flottant */
  .mtc-svc-intro .mtcsh-media,
  .mtc-svc-living .mtc-svc-duo-media{
    position: sticky;
    /* Meme expression que .mtc-svc-impl-aside plus haut, et que le composant
       .mtc-svc-colle plus bas : UN SEUL calcul de decrochement dans le fichier.
       --svc-entete est declaree sur .mtc-svc et vaut var(--mtcsvc-entete, 0px),
       ecrite en style en ligne sur <html> par le BLOC 1 de site.js. */
    top: calc(var(--svc-entete) + clamp(20px, 3vh, 40px));
    align-self: start;
  }

  /* 3 · L'EVENTAIL — trois photos AU MEME FORMAT, en zigzag.
         Version du 26/08 apres trois allers-retours sur rendu :
           v1  conteneur agrandi, positions d'origine conservees : ecarts
               inegaux, chevauchement perdu ;
           v2  cascade monotone vers la droite : reguliere, mais la troisieme
               photo finissait a droite au lieu de revenir a gauche ;
           v3  ci-dessous. Le pas VERTICAL est constant (19 %), le pas
               HORIZONTAL alterne (0 % -> 32 % -> 6 %). La troisieme photo
               repart a gauche, sous la premiere, et les trois se chevauchent
               deux a deux.

         NORMALISATION DES FORMATS. Les trois fichiers d'origine n'ont pas le
         meme rapport largeur/hauteur : on imposait donc trois vignettes de
         tailles differentes. On pose un cadre identique — 68 % de large,
         rapport 16/10 — et l'image le remplit en object-fit:cover : elle est
         RECADREE, jamais etiree. Aucune photo n'est deformee.

         LES TROIS LIGNES DE NEUTRALISATION NE SONT PAS DECORATIVES.
         Elles ne viennent pas du cowork : elles ont ete ajoutees ici apres
         mesure au banc, et sans elles la mise en page ne tient pas. Le cowork
         ecrit des positions nouvelles sans retirer celles du socle, qui
         restent actives.

           padding: 0    le socle pose padding:12% 8% 16% 6% sur .mtcsh-media.
                         La photo 1 est en position:relative, donc DANS le flux :
                         elle part du coin de la boite de contenu, decalee du
                         padding, tandis que les photos 2 et 3, absolues, partent
                         du coin de la boite de padding. Mesure sans cette ligne :
                         pas vertical de 25 px puis 104 px au lieu d'un pas
                         constant, et la photo 1 large de 400 px quand les deux
                         autres font 466 px — le pourcentage se calculant sur la
                         boite de contenu pour l'une et de padding pour les autres.

           right: auto   le socle pose right:2% sur la photo 2, et la SECTION 4
                         pose .mtc-svc-eventail .mtcsh-photo-2{right:9%}. Avec
                         left ET right ET width definis, la declaration est
                         surcontrainte : le navigateur ignore right. Ca marche,
                         mais par accident.

           bottom: auto  LE POINT SERIEUX. Le socle pose bottom:0 sur la photo 3.
                         Avec top ET bottom definis, la hauteur n'est plus celle
                         du cadre : elle est calculee entre les deux bords, et
                         l'aspect-ratio ci-dessous est ignore. Mesure sans cette
                         ligne : boite de 406 px pour une image de 458 px, et
                         .mtcsh-photo porte overflow:hidden — la troisieme photo
                         etait ROGNEE. */
  .mtc-svc-intro .mtcsh-media{
    aspect-ratio: 4 / 3.5;
    padding: 0;
  }
  .mtc-svc-intro .mtcsh-photo{
    width: 68%;
    aspect-ratio: 16 / 10;   /* le cadre, identique pour les trois */
    height: auto;
    margin: 0;
    right: auto;
    bottom: auto;
  }
  .mtc-svc-intro .mtcsh-photo img{
    width: 100%;
    height: 100%;
    object-fit: cover;       /* recadre, ne deforme pas */
    object-position: center;
  }
  /* pas vertical constant · horizontal en zigzag · empilement 1 sous 2 sous 3 */
  .mtc-svc-intro .mtcsh-photo-1{ top:  0;   left:  0;  z-index: 1; }
  .mtc-svc-intro .mtcsh-photo-2{ top: 19%;  left: 32%; z-index: 2; }
  .mtc-svc-intro .mtcsh-photo-3{ top: 38%;  left:  6%; z-index: 3; }
}

/* =============================================================================
   « LE MEDIA SUIT LE TEXTE » — COMPOSANT GENERIQUE  ·  26 aout 2026
   Prefixe : .mtc-svc-colle*  ·  Source : cowork cuisine
   -----------------------------------------------------------------------------
   CE QUE CA FAIT
   Le media se cale en haut de la section, a hauteur de la premiere ligne de
   texte, descend avec le texte, et s'arrete net au bas du duo. Plus de colonne a
   moitie vide quand le texte est plus long que l'image. Aucun JavaScript :
   position:sticky, et l'arret en fin de section est le comportement natif de
   sticky dans son bloc conteneur.

   COMMENT ON S'EN SERT — DEUX CLASSES, RIEN D'AUTRE
     1. .mtc-svc-colle        sur le conteneur du duo, a cote de .mtc-svc-duo ;
     2. .mtc-svc-colle-media  sur l'element media DEJA EN PLACE, quel qu'il soit :
        .mtc-svc-duo-media, .mtc-svc-mosaique, .mtcsh-media, une <figure>, un
        .mtc-photo-attente...
   Aucune balise a ajouter, aucun conteneur a creer.

   POUR PLUSIEURS IMAGES EMPILEES
   Ajouter .mtc-svc-colle-pile a cote de .mtc-svc-colle-media : la colonne
   devient une pile verticale reguliere, plafonnee a la hauteur de la fenetre, et
   les images se recadrent en object-fit:cover plutot que de se deformer. Sans
   cette classe, le media garde exactement la geometrie qu'il avait.

   PAS DE PLAFOND DE HAUTEUR GENERIQUE. Le cowork en avait pose un et l'a retire
   apres mesure : applique a une grille dont les enfants portent un aspect-ratio
   — la mosaique —, il fait s'effondrer les photos a zero. Le plafond n'existe
   donc que dans .mtc-svc-colle-pile, ou la structure est maitrisee.

   ⚠ ETAT AU 26/08/2026 : AUCUNE PAGE NE PORTE ENCORE CES CLASSES.
   Releve en base : zero occurrence de .mtc-svc-colle sur 2, 217, 219, 221, 223
   et 225. Ce composant est donc INERTE aujourd'hui — il ne peut rien casser, et
   il ne fait rien non plus.

   Le collant actuellement en service est cable en dur sur .mtc-svc-intro et
   .mtc-svc-living, plus haut dans cette section. C'est ce cablage qui fait
   fonctionner les pages 217 et 219 aujourd'hui, sans une ligne de HTML a
   toucher. On ne le retire pas : le supprimer maintenant enleverait le collant
   des deux pages sans rien mettre a la place.

   LE CHEMIN DE SORTIE, quand un cowork reprendra ces pages : poser les deux
   classes dans le HTML des sections concernees, verifier le rendu, PUIS retirer
   le cablage .mtc-svc-intro / .mtc-svc-living. Une seule mecanique restera.
   Tant que les deux coexistent elles ne se contredisent pas : elles posent les
   memes proprietes avec le meme calcul de `top`, verifie ci-dessous.

   SOUS 1025 px, RIEN NE S'APPLIQUE : c'est le point de rupture structurel des
   pages services, le duo est deja passe en une colonne.
   ============================================================================= */

@media (min-width: 1025px){

  /* Le duo cesse de centrer verticalement : le media se cale en haut. */
  .mtc-svc-colle{ align-items: start; }

  /* Il devient collant sous l'en-tete flottant et suit le texte.
     Meme expression que .mtc-svc-impl-aside et que le cablage .mtc-svc-intro :
     un seul calcul de decrochement dans tout le fichier. */
  .mtc-svc-colle > .mtc-svc-colle-media{
    position: sticky;
    align-self: start;
    top: calc(var(--svc-entete) + clamp(20px, 3vh, 40px));
  }

  /* Variante « plusieurs images » : pile verticale plafonnee a la fenetre. */
  .mtc-svc-colle > .mtc-svc-colle-pile{
    display: flex; flex-direction: column;
    gap: clamp(12px, 1.4vw, 20px);
    max-height: calc(100svh - var(--svc-entete) - clamp(44px, 7vh, 88px));
  }
  .mtc-svc-colle-pile > *{
    margin: 0; min-height: 0; flex: 1 1 auto;
    overflow: hidden; border-radius: var(--mtc-r-l, 10px);
  }
  .mtc-svc-colle-pile img{ width: 100%; height: 100%; object-fit: cover; display: block; }
}

/* Ecran peu haut : la mosaique du bloc fabricant mesure 668 px a 1280x720, pour
   610 px disponibles — une fois epinglee, ses deux photos basses tombaient sous
   la ligne de flottaison pendant toute la course. On aplatit la photo du haut,
   qui est la plus large : 668 -> 558 px. Mesure par le cowork a 1280x720,
   1366x768 et 1025x700. Sans effet au-dessus de 820 px de hauteur.
   Inerte tant qu'aucun markup ne porte .mtc-svc-colle-media. */
@media (min-width: 1025px) and (max-height: 820px){
  .mtc-svc-colle-media.mtc-svc-mosaique .mtc-svc-mos-1{ aspect-ratio: 16 / 7; }
}


/* =============================================================================
   SECTION 6 — PAGE À PROPOS & SHOWROOM PRIVÉ (223)
   Prefixe : .mtc-apr-*  ·  v4 du 11/08/2026  ·  Source : cowork page 223
   Sert : /a-propos/ (223) — et, pour le sous-bloc A, tout le site
   -----------------------------------------------------------------------------
   CETTE SECTION EST VOLONTAIREMENT COURTE.

   La page 223 est habillee par le jeu .mtc-svc-* de la SECTION 4 : elle porte
   la classe .mtc-svc sur chacune de ses sections. Elle herite donc, sans une
   ligne de CSS nouvelle : les variables --svc-*, header.mtc-svc-head, le filet,
   l'eyebrow, les titres, le chapeau, .mtc-svc-icone, .mtc-svc-pilier-t, le hero,
   les piliers, les boutons, .mtc-svc-ancre, la revelation [data-mtcsvc] et le
   carrousel d'avis .mtca-* de la SECTION 2.

   AUCUNE regle ci-dessous ne redefinit une classe existante. On n'ecrit que des
   selecteurs .mtc-apr-*. Les rares fois ou l'on ajuste un
   composant du socle, on le fait TOUJOURS depuis un ancetre prefixe.

   SOUS-BLOC A : .mtc-photo-attente — RETIRE LE 18/09/2026, famille morte.
   Le detail de la verification est dans la note qui remplace le sous-bloc.

   SOUS-BLOC B : .mtc-apr-* — les dispositions propres a la page 223.
   ============================================================================= */


/* -----------------------------------------------------------------------------
   A · EMPLACEMENT PHOTO EN ATTENTE — RETIRE LE 18/09/2026 (v27.11.3)
   -----------------------------------------------------------------------------
   La famille .mtc-photo-attente* n'est plus employee nulle part depuis la passe
   de coherence. Verifie avant retrait, le 18/09/2026 :
     · base de donnees : la chaine « photo-attente » n'apparait que dans 105
       REVISIONS. Aucune page, aucun article, aucun extrait WPCode, aucune
       option (donc pas non plus l'option compilee des extraits) ;
     · rendu : audit des feuilles de style sur 9 pages servies (accueil, trois
       pages services, a propos, contact, realisations, conseils,
       confidentialite). Les 20 regles de la famille ne correspondent a aucun
       element sur aucune de ces pages.
   Retire ici : le sous-bloc A (20 regles, 2,6 Kio) et les 8 declarations des
   paliers 1024 et 600 px plus bas dans cette section. Le jour ou le composant
   revient, il est dans l'historique de ce fichier et dans le rapport 167 §15.
   -------------------------------------------------------------------------- */


/* -----------------------------------------------------------------------------
   B.0 · LA COLONNE MEDIA DU DUO
   -----------------------------------------------------------------------------
   Ce qui vivait ici — les grilles .mtc-apr-grille / -inv, .mtc-apr-corps, et le
   triptyque .mtc-apr-triptyque / .mtc-apr-fig du bloc B.1 — a ete retire le
   27/08/2026. La v6 de la page emploie desormais les composants de production :
   .mtc-svc-duo, .mtc-svc-duo-inv, .mtc-svc-colle, .mtc-svc-colle-media,
   .mtc-svc-colle-pile, .mtc-svc-centre. Le composant media collant de la v11
   fait ce que ces grilles faisaient, PLUS l'epinglage qu'elles n'avaient pas.
   Verifie en base avant retrait : zero occurrence de ces classes sur les 23
   contenus du site — pages, articles et extraits WPCode compris.
   -------------------------------------------------------------------------- */

/* La colonne media : un conteneur souple dont l'unique enfant remplit tout.
   Renommee .mtc-apr-media-colle le 27/08/2026, sans changer une valeur — le lot
   la redeclarait a l'identique sous ce nom, on renomme plutot que de supprimer
   puis re-ecrire. .mtc-svc-duo-media ne conviendrait pas ici : ses regles
   ciblent un <img> en position absolue, et son recadrage couperait le cadre
   « Photographie a realiser » que cette colonne accueille. */
.mtc-apr-media-colle{ min-width: 0; display: flex; }
.mtc-apr-media-colle > *{ flex: 1 1 auto; width: 100%; }

.mtc-apr-accroche{
  margin: 30px 0 0 !important;
  padding-left: 24px;
  border-left: 1px solid var(--mtc-dore, #B8945F);
  color: var(--svc-c-fort) !important;
  font-size: clamp(1.05rem, 1.5vw, 1.24rem);
  line-height: 1.5;
  max-width: 52ch !important;
}


/* -----------------------------------------------------------------------------
   B.2 · LA PASTILLE CHIFFREE — remplace l'icone dans deux sections
   -----------------------------------------------------------------------------
   Meme cercle que .mtc-svc-icone, dont elle herite tout : le trait dore, le
   halo radial, le second anneau en retrait. On ne fait qu'y mettre du texte a
   la place d'un SVG. C'est plus lisible qu'un pictogramme surmonte d'un chiffre,
   et ca economise une ligne dans chaque item.
   -------------------------------------------------------------------------- */

.mtc-apr-num{
  line-height: 1;
  font-size: 1.12rem;
  letter-spacing: .02em;
  flex-direction: column;
}
.mtc-apr-num i{
  font-style: normal;
  font-size: .54rem;
  letter-spacing: .18em;
  text-transform: uppercase;
  margin-top: 3px;
  opacity: .75;
}


/* -----------------------------------------------------------------------------
   B.3 · LES TROIS JALONS DU RENDEZ-VOUS — liste verticale
   -----------------------------------------------------------------------------
   Pourquoi une disposition nouvelle : .mtcp-step (methode de l'accueil) est une
   scene animee en overflow:hidden, bornee a #mtcpProcess et limitee a 150
   caracteres par etape. .mtc-svc-prix-liste est calibree pour cinq postes sur
   une ligne. Aucune ne convient a trois temps sequences dans une colonne.

   v3 : plus aucun filet dore ni pointille. Le rythme est porte par la pastille
   chiffree et par l'espacement, pas par des traits qui n'apportent rien.
   -------------------------------------------------------------------------- */

.mtc-apr-jalons{
  display: flex; flex-direction: column;
  gap: clamp(26px, 3vw, 38px);
  margin: clamp(38px, 4.5vh, 56px) 0 0;
  padding: 0; list-style: none;
}
.mtc-apr-jalons > li{
  display: grid;
  grid-template-columns: auto minmax(0, 1fr);
  gap: clamp(18px, 2vw, 26px);
  align-items: start;
  min-width: 0;
}
.mtc-apr-jalons > li p{ margin: 0; color: var(--svc-c-texte); }
.mtc-apr-jalons .mtc-svc-pilier-t{ margin: 0 0 8px; }


/* -----------------------------------------------------------------------------
   B.4 · SECTION CENTREE — modificateur reutilisable
   -----------------------------------------------------------------------------
   Certaines sections se lisent mieux centrees : celles qui alignent des faits
   paralleles plutot qu'un recit. Le modificateur se pose sur la <section>, a
   cote de .mtc-svc, et il centre l'en-tete, le filet et les paragraphes de pied.
   Il ne redefinit AUCUNE classe du socle : il ne fait que les recadrer depuis
   un ancetre prefixe.
   -------------------------------------------------------------------------- */

.mtc-apr-centre{ text-align: center; }
.mtc-apr-centre .mtc-svc-head{ max-width: 74ch; margin-inline: auto; }
.mtc-apr-centre .mtc-svc-filet{ margin-inline: auto; }
.mtc-apr-centre .mtc-svc-h2,
.mtc-apr-centre .mtc-svc-chapeau,
.mtc-apr-centre .mtc-svc-lead{ margin-inline: auto; }


/* -----------------------------------------------------------------------------
   B.5 · LES GARANTIES — quatre colonnes, centrees
   -----------------------------------------------------------------------------
   v4 : les durees SORTENT de la pastille cerclee. Un cercle de 58 px est fait
   pour une icone ou un chiffre court ; « 5 a 10 ans » n'y tient pas et le
   rendu etait mauvais. Elles passent en chiffre d'affichage dore, sur le modele
   de .mtca-rating-note (la note du carrousel d'avis) — c'est le precedent du
   site pour un nombre mis en avant dans un <span>, et il est deja valide.
   -------------------------------------------------------------------------- */

.mtc-apr-garanties{
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  gap: clamp(26px, 3vw, 44px);
  margin: clamp(44px, 5.5vh, 72px) 0 0;
  padding: 0; list-style: none;
}
.mtc-apr-garanties > li{
  min-width: 0;
  padding-top: clamp(22px, 2.4vw, 30px);
  border-top: 1px solid var(--svc-filet-or, rgba(184,148,95,.28));
}
.mtc-apr-garanties > li p{ margin: 0; color: var(--svc-c-texte); }
.mtc-apr-garanties .mtc-svc-pilier-t{ margin: 0 0 10px; }

.mtc-apr-duree{
  display: block;
  margin-bottom: clamp(14px, 1.6vw, 20px);
  line-height: 1;
  font-size: clamp(2.3rem, 3.4vw, 3.1rem);
  letter-spacing: var(--mtc-ls-titre, -.015em);
  color: var(--mtc-dore, #B8945F);
}
.mtc-apr-duree em{
  font-style: normal;
  font-size: .34em;
  letter-spacing: .04em;
  margin: 0 .18em;
  opacity: .7;
}
.mtc-apr-duree i{
  display: block;
  margin-top: 9px;
  font-style: normal;
  font-size: .8rem;
  letter-spacing: var(--mtc-ls-eyebrow, .24em);
  text-transform: uppercase;
  opacity: .8;
}

.mtc-apr-garanties-fin{
  margin: clamp(44px, 5.5vh, 70px) auto 0;
  padding-top: clamp(28px, 3.4vw, 38px);
  border-top: 1px solid var(--svc-filet-clair, rgba(247,244,239,.13));
  max-width: 78ch;
}
.mtc-apr-garanties-fin p{ margin: 0 0 14px; color: var(--svc-c-texte); }
.mtc-apr-garanties-fin p:last-child{ margin-bottom: 0; }


/* -----------------------------------------------------------------------------
   B.6 · LES ASSOCIES — portrait au-dessus, recit dessous, tout centre
   -----------------------------------------------------------------------------
   Pourquoi une disposition nouvelle : .mtca-photo de l'accueil est une pile
   decalee pilotee par le defilement de #mtcaScroll, et elle figure au tableau
   des huit pieges (opacity:0 sous 640 px en attente de .mtca-in). La reutiliser
   rendrait les portraits invisibles sur telephone.

   v4 : la disposition passe en colonne centree. Deux raisons — la demande de
   Nath, et le fait que le portrait mesure 300 px : cote a cote d'un texte de
   46ch, il paraissait toujours trop petit. Centre et surmontant son texte, il
   retrouve un rapport juste.
   -------------------------------------------------------------------------- */

.mtc-apr-duo{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(44px, 5vw, 88px);
  margin-top: clamp(52px, 7vh, 88px);
  align-items: start;
  justify-items: center;
}
/* Prete pour la reactivation du bloc Lisa Gasc (phase 2). */
.mtc-apr-duo-trois{ grid-template-columns: repeat(3, minmax(0, 1fr)); }

.mtc-apr-personne{
  display: flex;
  flex-direction: column;
  align-items: center;
  text-align: center;
  max-width: 46ch;
  min-width: 0;
}

/* Les portraits font 298 et 305 px de large. On ne les agrandit JAMAIS : au-dela
   ils sont mous, et c'est la page qui vend la confiance. */
.mtc-apr-portrait{
  position: relative;
  width: 100%; max-width: 300px;
  margin-bottom: clamp(22px, 2.4vw, 30px);
  border: 1px solid var(--svc-filet-clair, rgba(247,244,239,.13));
  border-radius: 12px;
  overflow: hidden;
}
.mtc-apr-portrait::after{
  content: ""; position: absolute; inset: 0; border-radius: 12px;
  box-shadow: inset 0 0 0 1px rgba(184,148,95,.14);
  pointer-events: none;
}
.mtc-apr-portrait img{
  width: 100%; height: auto; display: block;
  aspect-ratio: 1 / 1;
  object-fit: cover; object-position: 50% 28%;
  filter: grayscale(1) contrast(1.05);
  transition: filter .7s var(--svc-ease, cubic-bezier(.2,.7,.3,1));
}
.mtc-apr-personne:hover .mtc-apr-portrait img{ filter: grayscale(0) contrast(1); }

/* Bandeau « portrait a refaire » — decision 5 de Nath, 11/08/2026.
   A SUPPRIMER le jour ou les vrais portraits arrivent : cette regle, et la
   balise <span class="mtc-apr-portrait-note"> dans le HTML. Rien d'autre. */
.mtc-apr-portrait-note{
  position: absolute; left: 0; right: 0; bottom: 0;
  padding: 9px 10px;
  background: rgba(13,13,13,.8);
  background: color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 80%, transparent);
  border-top: 1px solid var(--svc-filet-or, rgba(184,148,95,.28));
  font-size: .68rem;
  letter-spacing: .12em; text-transform: uppercase; text-align: center;
  color: var(--mtc-dore, #B8945F);
}

.mtc-apr-personne-txt{ min-width: 0; width: 100%; }
.mtc-apr-personne-txt .mtc-svc-eyebrow{ margin-bottom: 10px; }
.mtc-apr-personne-txt .mtc-svc-filet{ margin: 18px auto 22px; }
.mtc-apr-personne-txt p{ color: var(--svc-c-texte); margin: 0; }

.mtc-apr-nom{
  margin: 0; color: var(--svc-c-titre);
  font-weight: 400; line-height: 1.12;
  letter-spacing: var(--mtc-ls-titre, -.015em);
  font-size: clamp(1.6rem, 2.4vw, 2.2rem);
}
.mtc-apr-tel{ margin-top: 18px !important; }
.mtc-apr-tel a{
  color: var(--mtc-dore, #B8945F);
  text-decoration: none;
  border-bottom: 1px solid var(--svc-filet-or, rgba(184,148,95,.28));
  transition: border-color .3s ease;
}
.mtc-apr-tel a:hover,
.mtc-apr-tel a:focus-visible{ border-bottom-color: var(--mtc-dore, #B8945F); }

/* v4 — .mtc-apr-signature a ete SUPPRIMEE. La ligne qu'elle habillait
   repetait ce que disent deja les deux portraits, et son filet de separation
   n'avait aucune logique de lecture. Ne pas la reintroduire. */


/* -----------------------------------------------------------------------------
   B.9 · CE QUE LA PAGE AJOUTE  ·  27 aout 2026
   -----------------------------------------------------------------------------
   Deux regles, et deux seulement. La demande du pilote — « chaque photo a cote
   d'un paragraphe doit etre en haut du bloc, avec une regle collante qui suit le
   paragraphe » — est satisfaite SANS UNE LIGNE DE CSS NOUVELLE : c'est le
   composant .mtc-svc-colle de la v11, que la page emploie six fois.

   Balisage v7 pose le 27/08 a 11h29, verifie en base juste apres :
     .mtc-apr-showroom-fin  1     .mtc-apr-horaires     1
     .mtc-apr-media-colle   1     .mtc-svc-real-suite   1
     .mtc-apr-real-liste    0     .mtc-apr-media-large  0
   Les deux dernieres ont disparu du HTML dans le meme mouvement : la premiere
   remplacee par .mtc-svc-real-suite, la seconde par .mtc-apr-showroom-fin.
   -------------------------------------------------------------------------- */

/* Ligne d'horaires et d'adresse, sous le duo du showroom. Reprend le registre
   des mentions discretes de bas de section, sans le centrage. */
.mtc-apr-horaires{
  margin: clamp(30px, 3.6vw, 44px) 0 0;
  padding-top: clamp(22px, 2.6vw, 30px);
  border-top: 1px solid var(--svc-filet-clair, rgba(247,244,239,.13));
  font-size: .92rem;
  color: var(--svc-c-texte-2, rgba(247,244,239,.58));
}

/* .mtc-apr-real-liste a vecu ici du 27/08 matin au 27/08 midi. La v7 de la page
   lui prefere .mtc-svc-real-suite, deja en production sur 217, 219 et 221 :
   un composant de moins a maintenir. Retiree apres verification en base —
   zero occurrence sur les 23 contenus du site. */


/* Respiration sous le duo du showroom, avant le cadre « Photographie a
   realiser ». Sans elle le cadre se colle au bas de l'eventail : l'eventail est
   epingle, il descend jusqu'au bas du duo, et le bloc suivant demarre aussitot.
   Valeur calee sur le rythme des Rows, pas sur une marge de composant.

   Elle prend la place de .mtc-apr-media-large, qui n'a JAMAIS eu de regle dans
   ce fichier — verifie en v12 comme en v13. Le « grand media » de la page
   recoit donc enfin une mise en forme. C'est la reponse au point laisse ouvert
   au §5 du rapport 62. */
.mtc-apr-showroom-fin{
  max-width: 900px;
  margin: clamp(56px, 7vh, 96px) auto 0;
}


/* -----------------------------------------------------------------------------
   B.7 · TABLETTE ET MOBILE — meme point de rupture que les pages services
   -------------------------------------------------------------------------- */

@media (max-width: 1200px){
  /* Quatre durees sur une ligne deviennent illisibles avant 1024 px :
     les titres passent sur trois lignes. On repasse a deux colonnes plus tot. */
  .mtc-apr-garanties{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
}

@media (max-width: 1024px){
  /* Le media repasse SOUS le texte : sur telephone, on lit d'abord, on regarde
     ensuite. Et il reprend une hauteur bornee, faute de colonne a remplir. */
  /* Les deux gardes .mtc-photo-attente de ce palier sont retirees le 18/09/2026
     avec la famille (voir la note du sous-bloc A). */
  .mtc-apr-duo{ grid-template-columns: 1fr; gap: clamp(48px, 6vw, 64px); }
  .mtc-apr-duo-trois{ grid-template-columns: 1fr; }
}

@media (max-width: 600px){
  .mtc-apr-garanties{ grid-template-columns: 1fr; gap: clamp(26px, 4vw, 34px); }
  .mtc-apr-portrait{ max-width: 240px; }
  .mtc-apr-accroche{ padding-left: 18px; }
  /* Les regles .mtc-photo-attente de ce palier — remplissage, et le correctif
     de debordement horizontal du 26/08/2026 — sont retirees le 18/09/2026
     avec la famille (voir la note du sous-bloc A). */

  .mtc-apr-jalons > li,
  .mtc-apr-garanties > li{ gap: 16px; }
}


/* -----------------------------------------------------------------------------
   B.8 · MOUVEMENT REDUIT
   -----------------------------------------------------------------------------
   249 FONDATIONS traite deja prefers-reduced-motion pour tout le site, et la
   SECTION 4 revele deja [data-mtcsvc]. On ne rend immobile que ce qui nous
   appartient.
   -------------------------------------------------------------------------- */

@media (prefers-reduced-motion: reduce){
  .mtc-apr-portrait img{ transition: none; }
}


/* =============================================================================
   SECTION 8 — TYPOGRAPHIE MANUSCRITE (socle commun)
   Prefixes : .mtc-manuscrit · .mtc-svc-eyebrow · .mtc-svc-surtitre
   Ajoutee le 26/08/2026  ·  Sources : coworks 219 puis 217
   Sert : toutes les pages.
     A · le composant .mtc-manuscrit, pose element par element dans le HTML ;
     B · les surtitres des cinq pages qui emploient le jeu .mtc-svc-* ;
     C · le centrage de la signature de cloture des pages services.
   Numerotee 8 et non 7 pour ne pas se confondre avec la « SECTION 7 — CTA
   FINAL » de la numerotation interne de l'accueil, plus haut dans le fichier.
   -----------------------------------------------------------------------------
   POURQUOI CE COMPOSANT EXISTE
   Demande client du 24/08 : « le format sur le titre est trop abrupt, on aime
   bien le style plus manuscrit ». Arbitrage du pilote le 26/08 : porter la meme
   inflexion sur le petit titre dore, sur l'accueil ET sur les pages services.

   L'accueil applique la manuscrite en dur, sur des selecteurs nommes. Une page
   service ne peut pas faire pareil : ses surtitres partagent tous la meme
   classe .mtc-svc-eyebrow, et tous ne doivent pas basculer. D'ou une classe
   qu'on pose element par element dans le HTML.

   /* --- A · LE COMPOSANT .mtc-manuscrit --- */

   ⚠ POURQUOI CETTE SECTION EST PLACEE ICI, ET PAS DANS LA SECTION 2
   Le cowork demandait la SECTION 2 (socle commun). Ce n'etait pas possible :
   .mtc-svc-eyebrow, en SECTION 4, declare letter-spacing, text-transform et
   font-size — les trois proprietes que ce composant doit surcharger — avec la
   MEME specificite (0,1,0). Ecrit en SECTION 2, il serait passe AVANT et se
   serait fait battre par l'ordre du document : la classe aurait ete inerte sur
   les pages memes pour lesquelles elle a ete faite.
   Elle doit donc rester APRES la SECTION 4. Ne pas la remonter.

   ⚠ CE COMPOSANT NE DECLARE PAS DE POLICE EN DUR
   Il lit --mtc-police-manuscrite, defini une seule fois dans le :root de la
   SECTION 1. Les trois regles de l'accueil lisent le meme jeton depuis le
   26/08. Changer la manuscrite du site, c'est modifier UNE ligne.
   ============================================================================= */

.mtc-manuscrit{
  font-family: var(--mtc-police-manuscrite, above-the-beyond, sans-serif);
  font-weight: 300;
  font-style: normal;
  letter-spacing: .01em;
  /* Relatif, donc la classe suit la taille de son contexte. Sur un
     .mtc-svc-eyebrow, qui vaut .78em, on passe a 1.22em : la manuscrite perd
     ses capitales et son interlettrage large, il lui faut cette taille pour
     garder sa presence. Meme raisonnement que pour les surtitres de l'accueil. */
  font-size: 1.22em;
  line-height: 1.35;
  /* Annule la capitalisation heritee du surtitre : une manuscrite en capitales
     perd ses liaisons et cesse d'etre lisible. */
  text-transform: none;
}


/* -----------------------------------------------------------------------------
   B · LES SURTITRES DES PAGES SERVICES  ·  26 aout 2026
   -----------------------------------------------------------------------------
   Arbitrage du pilote : la manuscrite va sur le petit titre dore de TOUTES les
   pages, pas de la seule page d'accueil. Les surtitres services partagent deux
   classes — .mtc-svc-eyebrow pour les sections, .mtc-svc-surtitre pour le hero —
   et basculent donc en bloc, sans rien poser dans le HTML.

   PORTEE REELLE, relevee en base le 26/08 : CINQ pages, pas quatre.
     217 cuisine (10 + 1)   219 dressing (9 + 1)   221 salle de bain (10 + 1)
     223 a propos (9 + 1)   225 contact (7)
   Le lot cuisine annoncait quatre pages et oubliait /contact-et-rendez-vous/,
   qui emploie .mtc-svc-eyebrow sept fois. Elle bascule aussi.

   ⚠ POURQUOI CE BLOC EST ICI ET NON EN FIN DE SECTION 4, comme le demandait le
   cowork. Il doit passer apres DEUX choses, pas une :
     · les regles .mtc-svc-eyebrow et .mtc-svc-surtitre d'origine, en SECTION 4,
       qu'il surcharge a specificite egale — c'etait le raisonnement du cowork ;
     · .mtc-manuscrit ci-dessus, qui a AUSSI la meme specificite (0,1,0).
   Sur la page 219, onze elements portent .mtc-manuscrit et neuf d'entre eux sont
   des .mtc-svc-eyebrow. Place en SECTION 4, ce bloc se serait fait battre par
   .mtc-manuscrit sur ces neuf-la : mesure au banc, 19,5 px et graisse 300 sur la
   219 contre 22,4 px et graisse 400 sur la 217 — deux rendus differents du meme
   surtitre sur deux pages soeurs. Place ici, les cinq pages sont identiques.
   .mtc-manuscrit continue de gouverner les elements qui ne sont pas des
   surtitres, ou sa taille relative garde tout son sens.

   Memes trois reglages solidaires que sur l'accueil. On ne les reinvente pas.

   NOTE, verifiee au banc : le line-height ci-dessous est INERTE sur les pages
   services. Les surtitres y sont des <p>, et .mtc-svc p{line-height:1.68} a une
   specificite superieure (0,1,1 contre 0,1,0). C'etait deja le cas avant ce
   bloc — ce n'est donc pas une regression, et un surtitre tient sur une ligne :
   l'interligne ne se voit pas. La valeur est conservee pour le cas ou la classe
   servirait hors .mtc-svc. Ne PAS la renforcer en .mtc-svc p.mtc-svc-eyebrow :
   on gagnerait zero pixel et on paierait une specificite de plus.
   -------------------------------------------------------------------------- */

.mtc-svc-eyebrow,
.mtc-svc-surtitre{
  font-family: var(--mtc-police-manuscrite, above-the-beyond, sans-serif);
  font-weight: 400;
  font-style: normal;
  text-transform: none;
  letter-spacing: .02em;
  font-size: clamp(1.15rem, 1.6vw, 1.5rem);
  line-height: 1.15;
}


/* -----------------------------------------------------------------------------
   C · LA SIGNATURE DE CLOTURE DES PAGES SERVICES
   -----------------------------------------------------------------------------
   La page cuisine reprend .mtc-signature telle quelle, la classe de l'accueil :
   police, couleur et filet viennent de la, et les deux pages resteront
   identiques si elle evolue. Il manque seulement le centrage — sur l'accueil la
   signature est alignee a gauche dans une colonne, ici elle clot un bloc centre.
   Le filet degrade, qui part du bord gauche, est recentre en consequence.

   Le balisage est en ligne depuis le 26/08 a 14h44 : la page 217 porte deux
   .mtc-signature. Cette regle a donc son effet des la pose du fichier.
   -------------------------------------------------------------------------- */

.mtc-svc-cta .mtc-signature{
  margin-inline: auto;
  text-align: center;
  background-position: center bottom;
}


/* =============================================================================
   PAGE CONTACT ET RENDEZ-VOUS (225)
   Prefixe : .mtc-cnt-*
   Ajoutee le 27/08/2026  ·  Source : cowork page 225
   Sert : /contact-et-rendez-vous/ (225), et elle seule.
     A · hero et acces direct        E · FAQ
     B · ou nous trouver             F · reassurance et CTA final
     C · le formulaire               G · prise de rendez-vous en ligne
     D · ce qui se passe ensuite     H · adaptations
   SANS NUMERO, volontairement : la numerotation de premier niveau du fichier
   est 1 · 2 · 3 · 4 · 6 · 8 · 5, et 7 se confondrait avec la
   « SECTION 7 — CTA FINAL » de la numerotation interne de l'accueil.
   -----------------------------------------------------------------------------
   CE QUE CE LOT REPARE
   Le HTML de cette page est en ligne depuis le 12/08. Son habillage, lui, n'est
   jamais arrive dans la fusion : au 27/08, le fichier ne contient AUCUNE regle
   .mtc-cnt-*, et 41 classes de la page sont nues. C'est ce lot.

   OU IL SE PLACE ET POURQUOI
   Cette section doit rester APRES la SECTION 4 et APRES la SECTION 8. Trois de
   ses regles ne l'emportent que par l'ordre du document, a specificite egale
   avec « .mtc-svc p » (0,1,1). La remonter, c'est les rendre inertes — c'est
   exactement ce qui est documente pour la SECTION 8.

   CE QU'IL N'Y A PAS ICI, ET C'EST VOULU
   - aucun second :root ;
   - aucune font-family : la page n'a aucun besoin typographique propre, ses
     surtitres sont des .mtc-svc-eyebrow et basculent deja en manuscrite depuis
     le 26/08 ;
   - aucune couleur en dur : var(--svc-*) sur les sections, qui portent toutes
     .mtc-svc, sinon var(--mtc-*) ou var(--theme-palette-color-N), toujours avec
     un repli ;
   - aucun aspect-ratio : le seul qu'il y avait servait un emplacement carte que
     Nath a retire du HTML. Plus d'aspect-ratio, donc plus de risque de
     debordement mobile par le rapport impose ;
   - aucune redefinition d'une classe du socle : .mtc-cta, .mtc-cta-2,
     .mtc-svc-* et .mtc-photo-attente ne sont reecrits nulle part. Les deux
     variantes necessaires sont portees par le prefixe de la page.

   TROIS ERREURS DE LA VERSION DU 11/08, CORRIGEES ICI
   1. --mtc-filet et --mtc-filet-or ne sont PAS des couleurs, ce sont des
      raccourcis complets : « 1px solid var(--mtc-c-filet) ». Ecrire
      « 1px solid var(--mtc-filet) » produisait « 1px solid 1px solid ... »,
      declaration invalide, ignoree en silence. Les bords passent desormais par
      --svc-filet-clair et --svc-filet-or, qui sont bien des couleurs — c'est
      d'ailleurs ce que fait deja .mtc-svc-faq.
   2. Les replis de l'echelle d'espacement etaient faux (--mtc-e-4 vaut 1rem,
      pas 1.5rem). Sans consequence tant que le jeton existe, mais un repli faux
      est un piege pour le jour ou il servira.
   3. Les elements qui sont des <p> etaient cibles a 0,1,0 et se faisaient
      battre par « .mtc-svc p » (0,1,1). Ils sont desormais qualifies par deux
      classes de la page.

   ⚠ NE PAS AJOUTER D'OVERFLOW dans cette section. La carte de la Row 2 est en
   position:sticky, posee a la main par Nath : un seul ancetre en overflow
   different de visible la desactive, sans erreur et sans symptome autre que
   « ca ne colle plus ».
   ============================================================================= */


/* --- A · HERO ET ACCES DIRECT ---------------------------------------------- */

/* Les six sections de la page. Elles portent toutes .mtc-svc, qui fait tout le
   travail de mise en page : ce lot ne leur ajoute qu'une chose, le decrochement
   d'ancre. Deux sections sont ancrees, #rendez-vous et #formulaire.

   ⚠ CORRIGE LE 27/08 AU SOIR. La version precedente lisait --svc-entete avec un
   repli de 0px. Or ce jeton est DECLARE — « var(--mtcsvc-entete, 0px) » — donc
   sa valeur est 0 tant que site.js n'a pas ecrit la mesure reelle en style en
   ligne sur <html>, et le repli du var() ne s'applique jamais. Resultat : le
   titre de la section arrivait sous l'en-tete flottant.
   max() garantit un plancher quoi qu'il arrive, que le JS ait mesure ou non.

   v27.9 (17/09/2026) : .mtc-cnt-form-sec et .mtc-cnt-resa n'existent plus dans
   la page, elles sont retirees de la liste. Les cibles reelles des liens sont
   ajoutees par leur identifiant : #formulaire (en-tete de la demande),
   #mtcdDemande (module MTC Demandes, hors .mtc-svc : le plancher de 132 px
   s'y applique seul) et #mtcCntLieuT (titre « Ou nous trouver », vise par le
   bouton d'appel du menu). */
.mtc-cnt-hero,
.mtc-cnt-lieu,
.mtc-cnt-faq-sec,
.mtc-cnt-final,
#formulaire,
#mtcdDemande,
#mtcCntLieuT{
  scroll-margin-top: max(132px, calc(var(--svc-entete, 0px) + 40px));
}

/* #rendez-vous · v27.10 (17/09/2026), rapport 167 §10.
   C'est la rangee Kadence qui enveloppe la demande, l'ancre la plus liee du
   site. Elle a sa propre valeur, et non celle de la liste ci-dessus : la
   rangee ouvre sur 100 px de rembourrage (72 sous 1024, 54 sous 768) avant le
   filet dore, et la valeur commune laissait 161 px de fond sombre sous le
   menu. But : le filet arrive 32 px sous l'en-tete fixe, a toutes les largeurs.
     decrochement = hauteur de l'en-tete + 32 - rembourrage de la rangee
   --mtcsvc-entete est ecrite par site.js (BLOC 1) sur <html> et compte la
   barre d'administration ; --wp-admin--admin-bar--height la retire, parce que
   WordPress ajoute deja la barre en scroll-padding-top. Sans barre (visiteur),
   la variable n'existe pas et vaut 0.
   Mesure a la vraie police, visiteur et administrateur : filet a 32 px sous
   l'en-tete a 1920, 1366, 1024, 768 et 390. Si le rembourrage de la rangee
   change dans Kadence, les trois valeurs 68, 40 et 22 changent avec lui. */
#rendez-vous{
  scroll-margin-top: calc(var(--mtcsvc-entete, 96px) - var(--wp-admin--admin-bar--height, 0px) - 68px);
}
@media (max-width: 1024px){
  #rendez-vous{
    scroll-margin-top: calc(var(--mtcsvc-entete, 80px) - var(--wp-admin--admin-bar--height, 0px) - 40px);
  }
}
@media (max-width: 767px){
  #rendez-vous{
    scroll-margin-top: calc(var(--mtcsvc-entete, 74px) - var(--wp-admin--admin-bar--height, 0px) - 22px);
  }
}

.mtc-cnt-hero{ text-align: left; }

/* Deux classes : un « .mtc-svc h1 » eventuel ne doit pas passer devant. */
.mtc-cnt-hero .mtc-cnt-h1{
  margin: .35em 0 0;
  font-size: clamp(2rem, 1.15rem + 3.1vw, 3.65rem);
  line-height: var(--mtc-lh-titre, 1.08);
  letter-spacing: var(--mtc-ls-titre, -.015em);
  color: var(--svc-c-titre, var(--mtc-blanc, #F7F4EF));
  text-wrap: balance;
}

.mtc-cnt-texte{
  max-width: var(--mtc-max-texte, 68ch);
  margin-top: var(--mtc-e-5, 1.5rem);
}

/* 0,1,1 — a egalite avec « .mtc-svc p ». C'est l'ordre du document qui tranche,
   et c'est pour cela que cette section doit rester apres la SECTION 4. */
.mtc-cnt-texte p{
  color: var(--svc-c-texte, var(--mtc-c-texte-2, rgba(247,244,239,.78)));
  line-height: var(--mtc-lh-texte, 1.68);
}
.mtc-cnt-texte p + p{ margin-top: .85em; }

.mtc-cnt-texte .mtc-cnt-chapeau{
  font-size: var(--mtc-fs-lead, 1.18em);
  color: var(--svc-c-titre, var(--mtc-blanc, #F7F4EF));
}

/* Les quatre acces directs. Grille auto-ajustee : aucune largeur imposee, et le
   4e element est le CTA dore du design system. */
.mtc-cnt-direct{
  display: grid;
  grid-template-columns: repeat(auto-fit, minmax(230px, 1fr));
  gap: var(--mtc-e-4, 1rem);
  margin: var(--mtc-e-7, 3rem) 0 0;
  padding: 0;
  list-style: none;
  max-width: 62rem;
}

.mtc-cnt-direct-item{
  display: flex;
  align-items: center;
  gap: var(--mtc-e-4, 1rem);
  padding: .95rem 1.15rem;
  border: 1px solid var(--svc-filet-clair, rgba(247,244,239,.14));
  border-radius: var(--mtc-r-l, 10px);
  background: var(--svc-fond-carte, rgba(255,255,255,.035));
  transition: border-color var(--svc-d, .28s) var(--svc-ease, ease),
              transform    var(--svc-d, .28s) var(--svc-ease, ease);
}

.mtc-cnt-direct-item:hover{
  border-color: var(--svc-filet-or, var(--mtc-dore, #B8945F));
  transform: translateY(-2px);
}

.mtc-cnt-direct-icone{
  flex: 0 0 auto;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 40px;
  height: 40px;
  border: 1px solid var(--svc-filet-or, var(--mtc-dore, #B8945F));
  border-radius: 50%;
  color: var(--mtc-dore, #B8945F);
}

.mtc-cnt-direct-icone svg{ width: 18px; height: 18px; }

.mtc-cnt-direct-txt{
  display: flex;
  flex-direction: column;
  min-width: 0;
}

/* Micro-libelle de carte, PAS un surtitre de section : il reste en capitales
   espacees et ne bascule pas en manuscrite. A .78em, la manuscrite ne serait
   plus lisible, et ce n'est pas ce que la demande client du 24/08 visait. */
.mtc-cnt-direct-label{
  font-size: var(--mtc-fs-eyebrow, .78em);
  letter-spacing: var(--mtc-ls-eyebrow, .22em);
  text-transform: uppercase;
  color: var(--mtc-dore, #B8945F);
}

.mtc-cnt-direct-txt .mtc-cnt-direct-valeur{
  margin-top: .15rem;
  font-size: 1.075rem;
  color: var(--svc-c-titre, var(--mtc-blanc, #F7F4EF));
  text-decoration: none;
  word-break: break-word;
  transition: color var(--svc-d, .28s) var(--svc-ease, ease);
}

.mtc-cnt-direct-txt .mtc-cnt-direct-valeur:hover,
.mtc-cnt-direct-txt .mtc-cnt-direct-valeur:focus-visible{
  color: var(--mtc-dore, #B8945F);
}

/* 4e acces : le bouton EST la carte. On retire l'habillage de l'encart, on ne
   redefinit pas .mtc-cta. */
.mtc-cnt-direct-cta{
  padding: 0;
  border: 0;
  background: none;
}
.mtc-cnt-direct-cta:hover{
  border-color: transparent;
  transform: none;
}
.mtc-cnt-direct-cta .mtc-cta{
  width: 100%;
  height: 100%;
}


/* --- B · OU NOUS TROUVER --------------------------------------------------- */

/* UNE seule colonne. La carte n'est pas dans cette section : elle est dans une
   deuxieme colonne Kadence, en sticky. Reserver une colonne ici tasserait les
   encarts sur la gauche de LEUR propre colonne. */
.mtc-cnt-lieu-grille{
  display: grid;
  grid-template-columns: minmax(0, 1fr);
  gap: var(--mtc-gouttiere, 2.5rem);
  align-items: start;
  margin-top: var(--mtc-e-7, 3rem);
}

/* Les trois encarts restent empiles : ils occupent une demi-largeur, a cote de
   la carte. Cote a cote, ils seraient illisibles. */
.mtc-cnt-blocs{
  display: grid;
  gap: var(--mtc-e-5, 1.5rem);
}

.mtc-cnt-bloc{
  padding: 1.45rem 1.6rem;
  border: 1px solid var(--svc-filet-clair, rgba(247,244,239,.14));
  border-left: 2px solid var(--svc-filet-or, var(--mtc-dore, #B8945F));
  border-radius: var(--mtc-r-m, 4px);
  background: var(--svc-fond-carte, rgba(255,255,255,.035));
}

.mtc-cnt-bloc .mtc-cnt-bloc-t{
  margin: 0 0 .6rem;
  font-size: var(--mtc-fs-eyebrow, .78em);
  letter-spacing: var(--mtc-ls-eyebrow, .22em);
  text-transform: uppercase;
  color: var(--mtc-dore, #B8945F);
}

.mtc-cnt-bloc .mtc-cnt-adresse{
  font-style: normal;
  font-size: 1.15rem;
  line-height: 1.45;
  color: var(--svc-c-titre, var(--mtc-blanc, #F7F4EF));
}

.mtc-cnt-bloc .mtc-cnt-horaires{
  margin: 0;
  font-size: 1.05rem;
  line-height: 1.5;
  color: var(--svc-c-texte, var(--mtc-c-texte-2, rgba(247,244,239,.78)));
}

.mtc-cnt-bloc .mtc-cnt-horaires b{
  display: inline-block;
  margin-top: .15rem;
  font-size: 1.3rem;
  color: var(--svc-c-titre, var(--mtc-blanc, #F7F4EF));
}

/* Deux classes : bat « .mtc-svc p » (0,1,1) par la specificite, pas par
   l'ordre. Ces notes sont le corps de texte de la section. */
.mtc-cnt-bloc .mtc-cnt-bloc-note{
  margin: .7rem 0 0;
  font-size: var(--mtc-fs-legende, .82em);
  line-height: 1.6;
  color: var(--svc-c-texte-2, var(--mtc-c-texte-2, rgba(247,244,239,.72)));
}

.mtc-cnt-bloc .mtc-cta-2{ margin-top: 1.1rem; }

/* -----------------------------------------------------------------------------
   LIENS DE CONTENU — MESURE FAITE A LA FUSION DU 27/08, A LIRE AVANT D'Y TOUCHER

   La SECTION 4 porte deja une regle de lien pour tout ce qui vit dans .mtc-svc :

     .mtc-svc a:not(.mtc-cta):not(.mtc-cta-2):not(.mtcs-card)
              :not(.mtca-google-link):not(.wp-block-latest-posts__post-title)
              :not(.wp-block-latest-posts__featured-image)      ->  0,7,2

   Chaque :not(.classe) compte pour une classe : cette regle pese 0,7,2. Les
   regles de liens de ce lot pesent 0,3,1 a 0,4,2. Elles PERDENT, et
   aucun ordre de document n'y change quoi que ce soit — c'est la specificite.

   Consequence, verifiee declaration par declaration :
   - .mtc-cnt-bloc a demande exactement ce que le socle applique deja (pas de
     soulignement, filet dore, survol dore). Elle est donc SANS EFFET et SANS
     DEGAT. Elle est conservee : le jour ou la chaine :not() du socle change,
     elle reprend la main. Mais ne perdez pas une heure a la modifier en
     attendant un resultat : il ne viendra pas. (La regle jumelle
     .mtc-cnt-resa-repli a est retiree en v27.9 avec le bloc G.)
   - .mtc-cnt-note a demande un soulignement classique la ou le socle pose un
     filet dore ; .mtc-cnt-gerant figcaption a demande la couleur de texte la ou
     le socle pose la couleur forte. Ces deux intentions ne passent pas. Leurs
     declarations que le socle n'ecrit pas (margin-top, font-size) s'appliquent
     normalement. Arbitrage a rendre par Nath, note au rapport 67.
   -------------------------------------------------------------------------- */
.mtc-cnt-bloc a:not(.mtc-cta):not(.mtc-cta-2){
  color: var(--svc-c-titre, var(--mtc-blanc, #F7F4EF));
  text-decoration: none;
  border-bottom: 1px solid var(--svc-filet-or, var(--mtc-dore, #B8945F));
  transition: color var(--svc-d, .28s) var(--svc-ease, ease);
}
.mtc-cnt-bloc a:not(.mtc-cta):not(.mtc-cta-2):hover,
.mtc-cnt-bloc a:not(.mtc-cta):not(.mtc-cta-2):focus-visible{
  color: var(--mtc-dore, #B8945F);
}


/* --- D · CE QUI SE PASSE ENSUITE ------------------------------------------- */

/* Reecrit en v27.9 (17/09/2026), rapport 167.
   L'encart vit sous l'en-tete de la section .mtc-cnt-suite. Il n'avait plus
   aucun ecart avec le titre : cet ecart venait de .mtc-cnt-form-grille,
   retiree avec le formulaire. Il reprend la valeur de .mtc-svc-head, celle de
   toutes les sections validees (68 px a 1920 et 1366, 51 a 1024, 38 a 390).
   Au-dessus de 1024 px, les trois etapes passent en trois colonnes ; la note
   de confidentialite reste en pleine largeur sous elles, hors de la liste.
   Aucune largeur maximale : arbitrage du pilote.
   Le titre interne .mtc-cnt-apres-t est retire : l'encart n'en porte plus. */
.mtc-cnt-suite .mtc-cnt-apres{
  margin-top: clamp(38px, 5vw, 68px);
}

.mtc-cnt-apres{
  padding: clamp(1.3rem, .8rem + 1.4vw, 2rem);
  border: 1px solid var(--svc-filet-clair, rgba(247,244,239,.12));
  border-radius: var(--mtc-r-l, 10px);
}

.mtc-cnt-etapes{
  margin: 0;
  padding: 0;
  list-style: none;
  display: grid;
  gap: 1.05rem;
}

.mtc-cnt-etapes li{
  display: grid;
  grid-template-columns: 2rem minmax(0, 1fr);
  gap: .9rem;
  align-items: start;
  font-size: var(--mtc-fs-legende, .82em);
  line-height: 1.6;
  color: var(--svc-c-texte, var(--mtc-c-texte-2, rgba(247,244,239,.78)));
}

.mtc-cnt-etapes li b{ color: var(--svc-c-titre, var(--mtc-blanc, #F7F4EF)); }

@media (min-width: 1025px){
  .mtc-cnt-suite .mtc-cnt-etapes{
    grid-template-columns: repeat(3, minmax(0, 1fr));
    gap: var(--mtc-gouttiere, 2.5rem);
  }
}

.mtc-cnt-etape-n{
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 2rem;
  height: 2rem;
  border: 1px solid var(--svc-filet-or, var(--mtc-dore, #B8945F));
  border-radius: 50%;
  font-size: .85rem;
  color: var(--mtc-dore, #B8945F);
}

.mtc-cnt-apres .mtc-cnt-note{
  margin: 1.3rem 0 0;
  padding-top: 1.1rem;
  border-top: 1px solid var(--svc-filet-clair, rgba(247,244,239,.12));
  font-size: .85rem;
  line-height: 1.6;
  color: var(--svc-c-texte-2, rgba(247,244,239,.6));
}

.mtc-cnt-note a:not(.mtc-cta):not(.mtc-cta-2){
  color: var(--svc-c-titre, var(--mtc-blanc, #F7F4EF));
  text-decoration: underline;
  text-underline-offset: .18em;
}


/* --- E · FAQ --------------------------------------------------------------- */

/* Aucune regle de comportement : .mtc-svc-faq et .mtc-svc-faq-corps font tout,
   et le MODULE 6 de site.js s'y attache par « .mtc-svc-faq details », sans
   getElementById. On ne fixe qu'une mesure de lecture. */
.mtc-cnt-faq{
  max-width: 62rem;
  margin-top: var(--mtc-e-7, 3rem);
}


/* --- F · REASSURANCE ET CTA FINAL ------------------------------------------ */

.mtc-cnt-final-grille{
  display: grid;
  grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr);
  gap: var(--mtc-gouttiere, 2.5rem);
  align-items: center;
}

.mtc-cnt-final-txt .mtc-cnt-avis{
  display: flex;
  align-items: center;
  flex-wrap: wrap;
  gap: .55rem .8rem;
  margin: var(--mtc-e-6, 2rem) 0 0;
}

.mtc-cnt-avis-note{
  font-size: 2rem;
  line-height: 1;
  color: var(--svc-c-titre, var(--mtc-blanc, #F7F4EF));
}

.mtc-cnt-avis-etoiles{
  display: inline-flex;
  gap: .15rem;
  color: var(--mtc-dore, #B8945F);
}

.mtc-cnt-avis-etoiles svg{ width: 17px; height: 17px; }

.mtc-cnt-avis-txt{
  font-size: var(--mtc-fs-legende, .82em);
  color: var(--svc-c-texte-2, rgba(247,244,239,.72));
}

/* .mtc-cnt-cta-inactif : RETIREE le 27/08. Le bouton du bas de page etait un
   <span> inerte faute de destination ; le calendrier de la Row 4 lui en donne
   une, il est redevenu un <a class="mtc-cta"> ordinaire. La classe n'existe plus
   nulle part dans le HTML : trois regles de moins, et zero regle orpheline. */

.mtc-cnt-duo{
  display: grid;
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: var(--mtc-e-5, 1.5rem);
}

.mtc-cnt-gerant{
  margin: 0;
  border: 1px solid var(--svc-filet-clair, rgba(247,244,239,.14));
  border-radius: var(--mtc-r-l, 10px);
  overflow: hidden;
  background: var(--svc-fond-carte, rgba(255,255,255,.035));
}

.mtc-cnt-gerant img{
  display: block;
  width: 100%;
  height: auto;
  object-fit: cover;
}

.mtc-cnt-gerant figcaption{
  display: flex;
  flex-direction: column;
  gap: .15rem;
  padding: .95rem 1.05rem 1.1rem;
}

.mtc-cnt-gerant figcaption b{
  font-size: 1.05rem;
  color: var(--svc-c-titre, var(--mtc-blanc, #F7F4EF));
}

.mtc-cnt-gerant figcaption span{
  font-size: var(--mtc-fs-eyebrow, .78em);
  letter-spacing: var(--mtc-ls-eyebrow, .22em);
  text-transform: uppercase;
  color: var(--mtc-dore, #B8945F);
}

.mtc-cnt-gerant figcaption a:not(.mtc-cta):not(.mtc-cta-2){
  margin-top: .3rem;
  font-size: .95rem;
  color: var(--svc-c-texte, rgba(247,244,239,.78));
  text-decoration: none;
  transition: color var(--svc-d, .28s) var(--svc-ease, ease);
}

.mtc-cnt-gerant figcaption a:not(.mtc-cta):not(.mtc-cta-2):hover,
.mtc-cnt-gerant figcaption a:not(.mtc-cta):not(.mtc-cta-2):focus-visible{
  color: var(--mtc-dore, #B8945F);
}


/* --- G bis · CENTRAGE (FAQ) ------------------------------------------------ */

/* Modificateur pose sur la section FAQ. Jusqu'a la v27.8, la section
   rendez-vous (.mtc-cnt-resa) partageait ces regles ; elle n'existe plus, sa
   moitie des selecteurs est retiree en v27.9 (17/09/2026).

   CE QUI SE CENTRE TOUT SEUL, ET CE QUI NE SE CENTRE PAS
   .mtc-svc-eyebrow et .mtc-svc-h2 n'ont ni largeur maximale ni marge laterale :
   « text-align: center » sur la section suffit, verifie dans la SECTION 4.
   .mtc-svc-filet et .mtc-cnt-texte, eux, sont des blocs bornes en largeur
   (64 px pour l'un, 68ch pour l'autre) : sans marge automatique ils resteraient
   colles a gauche pendant que leur texte se centrerait. D'ou les deux regles
   ci-dessous. */
.mtc-cnt-centre{ text-align: center; }

.mtc-cnt-centre .mtc-svc-filet{
  margin-left: auto;
  margin-right: auto;
}

/* Le bloc de texte est borne a 68ch : il faut le recentrer, pas seulement
   centrer ses lignes. Portee limitee aux sections centrees — le hero et les
   autres sections emploient .mtc-cnt-texte et restent alignes a gauche. */
.mtc-cnt-centre .mtc-cnt-texte{
  margin-inline: auto;
}

/* Le corps de la FAQ revient a gauche : une question et sa reponse centrees ne
   se lisent pas. */
.mtc-cnt-centre .mtc-cnt-faq{
  margin-left: auto;
  margin-right: auto;
  text-align: left;
}


/* --- H · ADAPTATIONS ------------------------------------------------------- */

/* 1024 px est la charniere structurelle du fichier — 16 occurrences. On ne cree
   pas un troisieme systeme de points de rupture. */
@media (max-width: 1024px){

  .mtc-cnt-final-grille{
    grid-template-columns: minmax(0, 1fr);
  }

  /* Deux visages cote a cote tiennent tres bien a cette largeur, et la section
     reste courte : le duo ne descend pas en pile. */
  .mtc-cnt-final-grille .mtc-cnt-duo{ max-width: 34rem; }
}

/* 600 px : la seconde valeur reellement utilisee dans le fichier. */
@media (max-width: 600px){

  .mtc-cnt-direct{ grid-template-columns: minmax(0, 1fr); }

  .mtc-cnt-etapes li{ grid-template-columns: 1.7rem minmax(0, 1fr); }
  .mtc-cnt-etape-n{ width: 1.7rem; height: 1.7rem; font-size: .8rem; }
}

/* Le fichier porte deja --mtc-motion et --mtc-parallaxe pour le mouvement
   reduit. On se contente de couper nos propres transitions de survol. */
@media (prefers-reduced-motion: reduce){

  .mtc-cnt-direct-item{ transition: none; }

  .mtc-cnt-direct-item:hover{ transform: none; }
}

/* ============ FIN DE LA PAGE CONTACT ET RENDEZ-VOUS (225) ============ */


/* =============================================================================
   SECTION 9 — ARTICLES ET FICHES RÉALISATIONS
   Prefixe : .mtc-art-*  ·  v3 du 28/08/2026  ·  Source : cowork Articles realisations
   Sert : les articles de la categorie Realisations, et eux seuls
   -----------------------------------------------------------------------------
   CE QUE LA SECTION NE FAIT PAS, ET C'EST VOULU
   - aucun second :root ;
   - aucune font-family ;
   - aucune couleur en dur : var(--svc-*) dans .mtc-svc, sinon var(--mtc-*),
     toujours avec un repli ;
   - aucune redefinition d'une classe du socle. .mtcs-card, .mtc-svc-encart,
     .mtcsh-points, .mtc-svc-filet, .mtca-arrow et .mtc-cta-2 ne sont jamais
     reecrits : ils sont RECADRES depuis un ancetre prefixe .mtc-art.

   LE H1, LA PHOTO D'OUVERTURE ET LA DATE VIENNENT DU THEME. Blocksy sert le
   hero type-2 sur les articles. Le contenu ne porte aucun h1.

   DEPENDANCE : le visionneur plein ecran (.mtc-art-visio) est CONSTRUIT PAR LE
   JS, bloc 9 de site.js. Sans le JS, les vignettes et le bouton « voir les
   photographies » restent inertes — ils ne cassent rien, ils n'ouvrent rien.
   ============================================================================= */

/* --- A · LE CONTENEUR ------------------------------------------------------ */

.mtc-art{ padding-block: 0; }

.mtc-art-tete{ margin-bottom: clamp(30px, 3.6vw, 44px); }
.mtc-art-tete > .mtc-svc-chapeau{ margin-top: 0; }
.mtc-art-tete-actions{ margin-top: clamp(22px, 2.6vw, 30px); }

/* Le bouton du visionneur est un BOUTON SECONDAIRE : ce n'est pas une action
   qui convertit, elle ne doit pas concurrencer le CTA dore. Il herite tout de
   .mtc-cta-2.mtc-on-dark ; on ne pose ici que le curseur. */
.mtc-art-voir{ cursor: zoom-in; }
.mtc-art-voir svg{ transition: transform .35s var(--svc-ease, ease); }
.mtc-art-voir:hover svg{ transform: scale(1.1); }

/* --- B · LE BANDEAU DE FAITS ----------------------------------------------- */

.mtc-art-faits{ margin-block: clamp(30px, 3.6vw, 44px); }

.mtc-art-faits > .mtc-svc-h3{
  margin-bottom: clamp(16px, 1.8vw, 22px);
  font-size: var(--mtc-fs-eyebrow, .78em);
  letter-spacing: var(--mtc-ls-eyebrow, .22em);
  text-transform: uppercase;
  color: var(--mtc-dore, #B8945F);
}

/* -----------------------------------------------------------------------------
   LA LISTE DE FAITS — POURQUOI ELLE N'EST PAS UNE GRILLE DU SOCLE
   -----------------------------------------------------------------------------
   La v1 employait .mtc-svc-labels (grid 1fr 1fr). Mesure au telephone le
   28/08 : la colonne de droite sortait du cadre, valeurs coupees en plein mot.
   CAUSE : un element de grille a min-width:auto, il ne peut pas se reduire sous
   son contenu ; et .mtcsh-points li est display:flex, qui ne se coupe pas non
   plus. Deux colonnes dont aucune ne retrecit, dans 390 px : ca deborde.
   PRINCIPE RETENU, valable pour toute grille de texte de ce fichier :
     1. piste en « minmax(0, 1fr) », jamais « 1fr » ;
     2. item en « min-width: 0 » ;
     3. item de liste en « display: block », pas flex.
   -------------------------------------------------------------------------- */

.mtc-art-faits-liste{ margin-top: 0; gap: 0; }
.mtc-art-faits-liste li{
  display: block; min-width: 0;
  padding-block: clamp(9px, 1vw, 12px);
  border-bottom: 1px solid var(--svc-filet-clair, rgba(247,244,239,.13));
  color: var(--svc-c-texte, rgba(247,244,239,.76));
  font-size: clamp(.88rem, 1vw, .95rem);
  line-height: 1.5;
}
.mtc-art-faits-liste li:last-child{ border-bottom: 0; padding-bottom: 0; }
.mtc-art-faits-liste b{
  color: var(--mtc-dore, #B8945F); font-weight: 500; letter-spacing: .01em;
}
@media (min-width: 820px){
  .mtc-art-faits-liste{
    display: grid;
    grid-template-columns: repeat(2, minmax(0, 1fr));
    column-gap: clamp(24px, 3vw, 44px);
  }
  .mtc-art-faits-liste li:nth-last-child(-n+2){ border-bottom: 0; }
}

/* --- C · LES BLOCS TEXTE + PHOTO ------------------------------------------- */

/* Demande du 28/08 : « des sections de 2 colonnes, texte a gauche et photo a
   droite ». Le duo alterne d'un bloc a l'autre (.mtc-art-bloc-inv), ce qui
   evite l'effet catalogue et donne son rythme a la page.
   align-items:start — le texte ne se centre pas sur la photo, il commence en
   haut. C'est ce qui fait qu'un paragraphe court ne flotte pas. */
.mtc-art-bloc{
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1fr);
  gap: clamp(28px, 3.6vw, 64px);
  align-items: start;
  margin-block: clamp(50px, 6.5vw, 92px);
}
.mtc-art-bloc-inv > .mtc-art-bloc-media{ order: -1; }
/* Bloc sans photo : une seule colonne, mesure de lecture bornee.
   ⚠ PROVISION, VERIFIEE A LA FUSION : .mtc-art-bloc-solo n'existe dans AUCUN
   des vingt articles au 28/08. Les deux regles sont donc inertes aujourd'hui.
   Elles sont conservees — elles ne peuvent rien casser et servent le jour ou
   une fiche portera un bloc sans photo — mais ne cherchez pas leur effet en
   ligne : il n'y en a pas encore. Meme statut que .mtc-svc-colle en v11. */
.mtc-art-bloc-solo{ grid-template-columns: minmax(0, 1fr); }
.mtc-art-bloc-solo .mtc-art-bloc-txt{ max-width: var(--svc-texte-max, 70ch); }

.mtc-art-bloc-txt{ min-width: 0; }
.mtc-art-bloc-txt > .mtc-svc-filet{ margin-bottom: clamp(18px, 2vw, 24px); }
.mtc-art-bloc-txt > h2{ margin-bottom: clamp(16px, 1.8vw, 22px); }
.mtc-art-bloc-txt p{
  margin: 0 0 clamp(14px, 1.6vw, 18px);
  color: var(--svc-c-texte, rgba(247,244,239,.76));
  font-size: clamp(.95rem, 1.1vw, 1.03rem);
}
.mtc-art-bloc-txt p:last-child{ margin-bottom: 0; }

/* --- D · LES PHOTOS -------------------------------------------------------- */

/* Rayon de 4 px et filet dore de 1 px, demandes le 28/08. Le filet passe par
   --svc-filet-or, le meme que tous les traits dores du site : si la palette
   Blocksy bouge, il suit. */
.mtc-art-bloc-media{ margin: 0; min-width: 0; }

/* Le bouton qui enveloppe la photo : il n'a AUCUNE apparence propre, il rend
   seulement l'image cliquable et focalisable au clavier. */
.mtc-art-vue{
  display: block; position: relative;
  width: 100%; padding: 0; margin: 0;
  border: 0; background: none; cursor: zoom-in;
  line-height: 0;
}
.mtc-art-vue img{
  display: block; width: 100%; height: auto;
  border-radius: 4px;
  border: 1px solid var(--svc-filet-or, rgba(184,148,95,.28));
  transition: border-color .45s ease;
}
.mtc-art-vue:hover img{ border-color: var(--mtc-dore, #B8945F); }
.mtc-art-vue:focus-visible{ outline: 2px solid var(--mtc-dore, #B8945F); outline-offset: 4px; }

/* La loupe : elle dit que l'image s'agrandit, sans le crier. Toujours visible
   sur tactile, revelee au survol sur ordinateur. */
.mtc-art-loupe{
  position: absolute; top: 12px; right: 12px;
  display: inline-flex; align-items: center; justify-content: center;
  width: 38px; height: 38px; border-radius: 50%;
  color: var(--mtc-dore, #B8945F);
  background: rgba(13,13,13,.55);
  background: color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 55%, transparent);
  border: 1px solid var(--svc-filet-or, rgba(184,148,95,.28));
  opacity: 0; transform: translateY(-6px);
  transition: opacity .4s ease, transform .4s var(--svc-ease, ease);
  pointer-events: none;
}
.mtc-art-loupe svg{ width: 17px; height: 17px; }
.mtc-art-vue:hover .mtc-art-loupe,
.mtc-art-vue:focus-visible .mtc-art-loupe{ opacity: 1; transform: none; }
@media (hover: none){
  .mtc-art-loupe{ opacity: .85; transform: none; }
}

.mtc-art-bloc-media figcaption{
  margin-top: clamp(11px, 1.3vw, 15px);
  color: var(--svc-c-texte-2, rgba(247,244,239,.58));
  font-size: var(--mtc-fs-legende, .82em);
  line-height: 1.6;
}

/* -----------------------------------------------------------------------------
   D bis · LES FICHES SANS BANDE — AJOUTE A LA FUSION, LE 28/08

   Le lot est ecrit pour les NEUF fiches completes (534, 536 a 543). Le site en
   compte VINGT. Les onze autres (544 a 554) sont des fiches courtes, publiees
   le 28/08 a 08h29, et elles emploient deux classes que le lot ne cite pas :

     .mtc-art-fig     9 occurrences   la photo dans le corps de texte
     .mtc-art-liens  11 occurrences   la navigation « A voir aussi » de fin

   Sans ces regles, onze fiches sur vingt affichent leurs photos sans rayon ni
   filet dore, et leur navigation de fin sans separation — a cote de neuf fiches
   qui les ont. C'est le defaut « page non habillee » du protocole 37 §6.

   AUCUN CHOIX ESTHETIQUE NOUVEAU N'EST FAIT ICI : .mtc-art-fig reprend mot pour
   mot le traitement de .mtc-art-vue img et de la legende de .mtc-art-bloc-media ;
   .mtc-art-liens reprend celui de .mtc-art-suite, qui joue le meme role en bas
   des fiches completes.
   -------------------------------------------------------------------------- */

.mtc-art-fig{
  margin-block: clamp(50px, 6.5vw, 92px);
  min-width: 0;
}
.mtc-art-fig img{
  display: block; width: 100%; height: auto;
  border-radius: 4px;
  border: 1px solid var(--svc-filet-or, rgba(184,148,95,.28));
}
.mtc-art-fig figcaption{
  margin-top: clamp(11px, 1.3vw, 15px);
  color: var(--svc-c-texte-2, rgba(247,244,239,.58));
  font-size: var(--mtc-fs-legende, .82em);
  line-height: 1.6;
}

.mtc-art-liens{
  margin-top: clamp(56px, 7vw, 88px);
  padding-top: clamp(32px, 4vw, 46px);
  border-top: 1px solid var(--svc-filet-clair, rgba(247,244,239,.13));
}
.mtc-art-liens > .mtc-svc-h3{
  margin-bottom: clamp(14px, 1.6vw, 18px);
  font-size: var(--mtc-fs-eyebrow, .78em);
  letter-spacing: var(--mtc-ls-eyebrow, .22em);
  text-transform: uppercase;
  color: var(--mtc-dore, #B8945F);
}


/* --- E · LA BANDE DE VIGNETTES --------------------------------------------- */

.mtc-art-strip{ margin-block: clamp(50px, 6.5vw, 92px); }
.mtc-art-strip > .mtc-svc-filet{ margin-bottom: clamp(18px, 2vw, 24px); }
.mtc-art-strip > h2{ margin-bottom: clamp(20px, 2.4vw, 28px); }

.mtc-art-strip-liste{
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(auto-fill, minmax(clamp(84px, 11vw, 128px), 1fr));
  gap: clamp(8px, 1vw, 14px);
}
.mtc-art-vignette{
  display: block; width: 100%; padding: 0; margin: 0;
  border: 1px solid var(--svc-filet-or, rgba(184,148,95,.28));
  border-radius: 4px; overflow: hidden;
  background: var(--svc-fond-carte, rgba(255,255,255,.035));
  cursor: zoom-in; line-height: 0;
  aspect-ratio: 1 / 1;
  transition: border-color .4s ease, transform .4s var(--svc-ease, ease);
}
.mtc-art-vignette img{
  width: 100%; height: 100%; object-fit: cover; display: block;
  opacity: .82; transition: opacity .4s ease, transform .8s var(--svc-ease, ease);
}
.mtc-art-vignette:hover{ border-color: var(--mtc-dore, #B8945F); transform: translateY(-2px); }
.mtc-art-vignette:hover img{ opacity: 1; transform: scale(1.06); }
.mtc-art-vignette:focus-visible{ outline: 2px solid var(--mtc-dore, #B8945F); outline-offset: 3px; }
/* La vignette en cours de lecture dans le visionneur, marquee par le JS. */
.mtc-art-vignette.est-actif{ border-color: var(--mtc-dore, #B8945F); }
.mtc-art-vignette.est-actif img{ opacity: 1; }

/* --- F · L'ENCART DES MANQUES ---------------------------------------------- */

/* Il doit se lire comme une note de travail, PAS comme un bloc de contenu.
   Filet en pointille, fond retire : la difference suffit.
   ⚠ Ne bat .mtc-svc-encart que par l'ORDRE DU DOCUMENT (0,1,0 contre 0,1,0). */
.mtc-art-manque{
  margin-block: clamp(52px, 7vw, 84px);
  border-left-style: dashed;
  background: transparent;
}
.mtc-art-manque > .mtc-svc-h3{
  margin-bottom: clamp(14px, 1.6vw, 18px);
  color: var(--mtc-dore, #B8945F);
}
.mtc-art-manque > p{
  margin-bottom: clamp(20px, 2.4vw, 26px);
  color: var(--svc-c-texte-2, rgba(247,244,239,.58));
  font-size: var(--mtc-fs-legende, .82em);
}
.mtc-art-manque .mtcsh-points{ margin-top: 0; }

/* --- G · L'APPEL A L'ACTION ------------------------------------------------ */

/* Signale le 28/08 : « le bouton est trop colle en haut et en bas ». Le bloc
   reprend donc la respiration d'une fin de section de page de service, et le
   bouton a sa propre marge basse : rien ne le touche. */
.mtc-art-cta{
  margin-top: clamp(60px, 7.5vw, 96px);
  margin-bottom: clamp(60px, 7.5vw, 96px);
  padding-top: clamp(36px, 4.5vw, 54px);
  padding-bottom: clamp(4px, 1vw, 10px);
  border-top: 1px solid var(--svc-filet-or, rgba(184,148,95,.28));
  text-align: center;
}
.mtc-art-cta .mtc-svc-filet{ margin: 0 auto clamp(22px, 2.6vw, 28px); }
.mtc-art-cta .mtc-svc-lead{
  margin: 0 auto;
  max-width: 62ch;
}
.mtc-art-cta .mtc-svc-cta-row{
  justify-content: center;
  margin-top: clamp(30px, 3.6vw, 42px);
  margin-bottom: clamp(8px, 1.2vw, 14px);
}

/* --- H · LES AUTRES RÉALISATIONS ------------------------------------------- */

/* Demande du 28/08 : uniquement des fiches realisations ici, presentees en
   cartes illustrees. Les liens vers les pages piliers vivent DANS le texte de
   l'article — ce sont les liens prioritaires.
   La carte est le composant .mtcs-card du socle, deja premium : voile, cadre
   qui se trace, bulle « Decouvrir ». On ne pose que la grille et le format. */
.mtc-art-suite{
  margin-top: clamp(56px, 7vw, 88px);
  padding-top: clamp(32px, 4vw, 46px);
  border-top: 1px solid var(--svc-filet-clair, rgba(247,244,239,.13));
}
.mtc-art-suite > .mtc-svc-filet{ margin-bottom: clamp(18px, 2vw, 24px); }
.mtc-art-suite > h2{ margin-bottom: clamp(22px, 2.6vw, 30px); }

.mtc-art-cartes{
  list-style: none; margin: 0; padding: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: clamp(12px, 1.4vw, 22px);
}
.mtc-art-cartes > li{ min-width: 0; }
/* -----------------------------------------------------------------------------
   LES PIECES DE LA CARTE RESTENT DES BLOCS, QUEL QUE SOIT LEUR NOM DE BALISE
   Ajoute le 28/08/2026 a la fusion  ·  voir le rapport 76
   -----------------------------------------------------------------------------
   Constate en ligne le 28/08 : dans le DOM des fiches, chaque <li> de cette
   grille contient DEUX <a class="mtcs-card"> — un vrai, et une copie vide.
   Six pour trois cartes. La copie vide herite du fond #111 et du rapport 4/3 :
   elle se dessine en boite sombre sous la carte. C'est ce que la capture montre.

   CES COPIES N'EXISTENT NI DANS LE post_content, NI DANS LE HTML RENDU PAR
   WORDPRESS — verifie a la source et via l'API REST, wpautop n'insere que des
   sauts de ligne. Elles apparaissent a l'analyse, dans le navigateur.

   La cause connue de ce dedoublement : <a> est un ELEMENT DE FORMATAGE. Quand
   il contient des elements de BLOC — ici <div class="mtcs-caption"> et deux
   <p> —, l'algorithme d'adoption du parseur HTML peut le scinder et CLONER sa
   balise ouvrante, attributs compris. Le clone est vide : exactement ce qu'on
   observe.

   La parade est dans le balisage : n'y mettre que de l'INLINE. Le cowork des
   fiches remplace <div class="mtcs-caption"> par <span> et les deux <p
   class="mtcs-card-*"> par des <span>. Les regles ci-dessous rendent alors
   exactement le meme dessin qu'aujourd'hui.

   ⚠ CES TROIS LIGNES SONT SANS EFFET SUR LE BALISAGE ACTUEL : un <div> et un
   <p> sont deja des blocs. On peut donc poser ce fichier AVANT que le HTML ne
   change, sans rien casser, et dans n'importe quel ordre. Portee limitee a
   .mtc-art-cartes : les cartes de l'accueil ne sont pas touchees.
   -------------------------------------------------------------------------- */
.mtc-art-cartes .mtcs-caption,
.mtc-art-cartes .mtcs-card-title,
.mtc-art-cartes .mtcs-card-desc{ display: block; }

/* Format : 4/3 plutot que le carre de l'accueil. Trois cartes en bas d'article
   ne doivent pas peser autant qu'une section d'accueil.

   NOTE DE FUSION : le balisage pose « class="mtcs-card mtc-art-carte" » sur
   chaque lien. La classe .mtc-art-carte n'est ciblee NULLE PART — le format
   vient du couple .mtc-art-cartes + .mtcs-card ci-dessous. Ce n'est pas un
   oubli : c'est ce qui garantit qu'aucune regle de ce fichier ne reecrit la
   carte du socle. Consequence a connaitre : sortie de .mtc-art-cartes, une
   carte reprend le format de l'accueil. */
.mtc-art-cartes .mtcs-card{ aspect-ratio: 4 / 3; border-radius: 4px; }
.mtc-art-cartes .mtcs-card-title{ font-size: clamp(1rem, 1.3vw, 1.24rem); }
.mtc-art-cartes .mtcs-caption{ padding: 18px 18px 20px; }
.mtc-art-cartes .mtcs-card-desc{ font-size: .86rem; }
.mtc-art-cartes .mtcs-bubble{ top: 14px; right: 14px; padding: 7px 13px; font-size: .72rem; }

/* --- I · LE VISIONNEUR PLEIN ECRAN ----------------------------------------- */

/* Construit par le BLOC 9 de site.js et ajoute a <body>. Il vit donc HORS de
   .mtc-art : ses selecteurs ne peuvent pas etre portes par un ancetre prefixe,
   et il ne lit pas les variables --svc-*. Toutes ses couleurs passent donc par
   --mtc-*, qui vivent dans le :root de la SECTION 1. */
.mtc-art-visio{
  position: fixed; inset: 0;
  z-index: var(--mtc-z-intro, 1200);
  display: flex; align-items: center; justify-content: center;
  padding: clamp(52px, 7vh, 84px) clamp(12px, 4vw, 72px);
  background: rgba(10,9,8,.96);
  background: color-mix(in srgb, var(--mtc-noir-profond, #0D0D0D) 96%, transparent);
  opacity: 0;
  transition: opacity .32s ease;
}
.mtc-art-visio[hidden]{ display: none; }
.mtc-art-visio.est-ouvert{ opacity: 1; }

.mtc-art-visio-scene{
  margin: 0; position: relative;
  display: flex; flex-direction: column; align-items: center; gap: clamp(14px, 2vh, 22px);
  max-width: 100%; max-height: 100%;
}
.mtc-art-visio-scene img{
  display: block;
  max-width: min(1400px, 100%);
  max-height: 72vh;
  width: auto; height: auto;
  object-fit: contain;
  border-radius: 4px;
  border: 1px solid var(--mtc-dore, #B8945F);
  background: var(--mtc-noir, #1A1A1A);
}
.mtc-art-visio-scene figcaption{
  max-width: 74ch; text-align: center;
  color: rgba(247,244,239,.72);
  color: color-mix(in srgb, var(--mtc-blanc, #F7F4EF) 72%, transparent);
  font-size: var(--mtc-fs-legende, .82em);
  line-height: 1.6;
}

/* Les trois boutons reprennent .mtca-arrow du carrousel d'avis : meme rond,
   meme trait, meme survol dore. Zero style nouveau. */
.mtc-art-visio-prec,
.mtc-art-visio-suiv,
.mtc-art-visio-fermer{ position: absolute; z-index: 2; }
/* v27.16 (point 2) · le centrage passe de transform a translate, propriete
   independante. Les etats de .mtca-arrow n'ecrivent plus aucun transform, mais
   une echelle : si le centrage restait un transform, l'echelle multiplierait sa
   translation et la fleche glisserait encore de 1,5 px. Mesure a l'appui.
   Avec translate pour la position et scale pour l'etat, le glissement est nul. */
.mtc-art-visio-prec{ left: clamp(8px, 2vw, 28px); top: 50%; translate: 0 -50%; }
.mtc-art-visio-suiv{ right: clamp(8px, 2vw, 28px); top: 50%; translate: 0 -50%; }
.mtc-art-visio-fermer{ top: clamp(12px, 2vh, 24px); right: clamp(12px, 2vw, 28px); }

.mtc-art-visio-compteur{
  position: absolute; left: 0; right: 0;
  bottom: clamp(14px, 2.4vh, 26px);
  margin: 0; text-align: center;
  color: rgba(247,244,239,.55);
  color: color-mix(in srgb, var(--mtc-blanc, #F7F4EF) 55%, transparent);
  font-size: .82rem; letter-spacing: .14em;
}
.mtc-art-visio-compteur b{ color: var(--mtc-dore, #B8945F); font-weight: 400; }

/* Le defilement de la page est bloque pendant l'ouverture. La classe est posee
   sur <html> par le JS. */
.mtc-art-fige{ overflow: hidden; }

/* --- J · TABLETTE ET TELEPHONE --------------------------------------------- */

/* 1024 px est la charniere structurelle du fichier — on n'en cree pas d'autre. */
@media (max-width: 1024px){
  /* Le duo passe en une colonne. La photo revient TOUJOURS sous le texte, y
     compris sur les blocs inverses : sur telephone on lit d'abord, on regarde
     ensuite. C'est la meme regle que la page A propos. */
  .mtc-art-bloc{
    grid-template-columns: minmax(0, 1fr);
    gap: clamp(20px, 3.4vw, 30px);
    margin-block: clamp(42px, 7vw, 64px);
  }
  .mtc-art-bloc-inv > .mtc-art-bloc-media{ order: 0; }
  .mtc-art-cartes{ grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .mtc-art-strip{ margin-block: clamp(42px, 7vw, 64px); }

  /* Le visionneur : les fleches passent sous l'image, elles ne recouvrent plus
     la photo sur un ecran etroit. */
  .mtc-art-visio{ padding: clamp(56px, 8vh, 72px) 12px clamp(72px, 10vh, 96px); }
  .mtc-art-visio-scene img{ max-height: 58vh; }
  .mtc-art-visio-prec{ left: 16px; top: auto; bottom: clamp(52px, 7vh, 68px); translate: none; }
  .mtc-art-visio-suiv{ right: 16px; top: auto; bottom: clamp(52px, 7vh, 68px); translate: none; }
}

@media (max-width: 600px){
  .mtc-art-cartes{ grid-template-columns: minmax(0, 1fr); gap: 12px; }
  .mtc-art-cartes .mtcs-card{ aspect-ratio: 16 / 10; }
  .mtc-art-cta{ padding-top: clamp(28px, 6vw, 36px); }
  .mtc-art-cta .mtc-svc-cta-row{ flex-direction: column; }
  .mtc-art-cta .mtc-svc-cta-row .mtc-cta{ width: 100%; justify-content: center; }
  .mtc-art-tete-actions .mtc-cta-2{ width: 100%; justify-content: center; }
}

/* --- K · MOUVEMENT REDUIT -------------------------------------------------- */

/* 249 FONDATIONS traite deja prefers-reduced-motion pour tout le site. On ne
   neutralise que ce qui nous appartient. */
@media (prefers-reduced-motion: reduce){
  .mtc-art-vignette,
  .mtc-art-vignette img,
  .mtc-art-vue img,
  .mtc-art-loupe,
  .mtc-art-visio{ transition: none; }
  .mtc-art-vignette:hover{ transform: none; }
  .mtc-art-vignette:hover img{ transform: none; }
  .mtc-art-loupe{ opacity: .85; transform: none; }
}

/* --- L · CORRECTIF v3.1 · 28 aout 2026 ------------------------------------- */

/* -----------------------------------------------------------------------------
   L.1 · LE TEXTE DES CARTES DE BAS DE PAGE
   -----------------------------------------------------------------------------
   DEFAUT SIGNALE : « texte non visible sur les cards en bas ».

   CAUSE, lue dans le socle (SECTION 2). .mtcs-card-desc est pose a
   « max-height:0 ; opacity:0 ; overflow:hidden » et n'est revele QUE par
   .mtcs-card:hover. Sur telephone le socle le rattrape deja, par son bloc
   @media (hover:none) — c'est pourquoi le rendu mobile etait juste. Sur
   ordinateur, la commune et l'attribut de chaque chantier restaient invisibles
   tant que la souris n'entrait pas dans la carte.

   Une information qui n'existe qu'au survol n'existe pas : elle ne se lit ni au
   premier coup d'oeil, ni au clavier, ni sur une capture d'ecran. On l'ouvre
   d'office DANS LES CARTES D'ARTICLE, et la seulement.

   ⚠ PORTEE. La regle est portee par .mtc-art-cartes : les cartes de l'accueil
   et des pages services gardent exactement leur comportement actuel. On ne
   REECRIT PAS .mtcs-card-desc, on le RECADRE depuis un ancetre prefixe — c'est
   la regle du fichier.

   Le voile est renforce en consequence : avec deux lignes de texte au lieu
   d'une, sur des photos de cuisines claires — plans blancs, credences en
   marbre — le blanc sur blanc n'etait plus garanti.

   ⚠ RECTIFICATION FAITE A LA FUSION. Le lot annoncait des « valeurs reprises
   telles quelles de l'etat de survol du socle ». Releve dans le fichier, c'est
   inexact — les trois valeurs sont differentes :

     socle, au repos      .72  /  .28  /  .12
     socle, au survol     .90  /  .68  /  .50
     ici                  .92  /  .62  /  .34

   Les valeurs sont CONSERVEES, parce qu'elles sont mieux choisies que celles du
   survol pour un texte affiche en permanence : plus sombre en bas, la ou le
   texte se pose, et plus clair en haut, ou la photo doit rester lisible. Mais
   ce sont bien trois valeurs propres a cette section, et non un emprunt. La
   marge, elle, a ete ramenee de 10 a 12 px pour coller au socle : sans cela,
   la meme carte affichait 10 px sur ordinateur et 12 px sur tactile.

   La bulle « Decouvrir » reste, elle, revelee au survol : c'est une affordance,
   pas une information. Le socle l'affiche deja d'office sur tactile.
   -------------------------------------------------------------------------- */

.mtc-art-cartes .mtcs-card-desc{
  max-height: 140px;
  opacity: 1;
  transform: none;
  margin-top: 12px;   /* 12 et non 10 : voir la note de fusion ci-dessous */
}
/* ⚠ LE VOILE N'EST PLUS SURCHARGE — v3.2 du 28/08, retour client.
   La v3.1 le portait a 92 % de noir en bas de carte pour securiser deux lignes
   de blanc sur des plans de travail clairs. Mesure du resultat : a 92 %, ce
   n'est plus un voile, c'est une surface. Le degrade cesse de se lire comme une
   photo qui s'assombrit et devient un encart plat colle sous l'image — visible
   sur la capture du client, et juste.
   On revient au voile du socle (.72 / .28 / .12). Le texte reste porte par son
   ombre : text-shadow 0 2px 14px sur la description, 0 2px 16px sur le titre,
   qui n'ajoutent aucune surface.

   SI LE TEXTE SE REVELE JUSTE SUR LES PHOTOS LES PLUS CLAIRES, la valeur a
   reprendre n'est PAS 92 % : c'est .85 / .5 / .3, celle que le socle emploie
   lui-meme dans son bloc @media (hover:none) — c'est-a-dire exactement le cas
   « description affichee en permanence ». Une ligne, pas une invention. */


/* -----------------------------------------------------------------------------
   L.2 · LA COLONNE DE TEXTE SUIT LA PHOTO  (ordinateur uniquement)
   -----------------------------------------------------------------------------
   DEMANDE : « applique la regle sticky aux textes quand l'image est trop
   grande, comme ca le texte defile a cote de l'image fixe ».

   CE QUE CA FAIT. Quand la photo est plus haute que son paragraphe — c'est le
   cas de toutes les photos en portrait, et il y en a dans presque chaque
   fiche —, la colonne de texte s'epingle sous l'en-tete et accompagne la photo
   jusqu'au bas du bloc, au lieu de rester en haut avec un grand vide dessous.
   Quand le texte est plus haut que la photo, position:sticky n'a aucun effet :
   le bloc se comporte exactement comme aujourd'hui. Aucune regression possible
   sur les blocs equilibres.

   C'EST LA MEME MECANIQUE QUE LE RESTE DU SITE, pas une nouvelle. Le calcul de
   decrochement est celui de .mtc-svc-impl-aside, de .mtc-svc-colle et du
   cablage .mtc-svc-intro : un seul calcul dans tout le fichier.

   ⚠ POURQUOI max() ET PAS calc() SEUL. --svc-entete vaut
   « var(--mtcsvc-entete, 0px) » : le jeton EST declare, donc le repli du var()
   ne s'applique jamais, et la valeur est 0 tant que site.js n'a pas ecrit la
   mesure reelle en style en ligne sur <html>. Sans plancher, le titre passerait
   sous l'en-tete flottant si le JS ne tournait pas sur les articles. C'est
   exactement l'erreur corrigee le 27/08 sur la page contact — on ne la refait
   pas. 118 px = hauteur d'en-tete observee (74 px) + son decalage haut (20 px)
   + 24 px de respiration.

   ⚠ CE QUI PEUT LE FAIRE ECHOUER SANS AUCUNE ERREUR : un ancetre en overflow
   different de visible. Rien dans ce fichier n'en pose sur le chemin d'un
   article — verifie. Reste l'habillage Blocksy de la zone de contenu, non
   lisible d'ici. Symptome le cas echeant : le texte ne colle pas, tout le reste
   est normal, rien en console. Ce n'est pas bloquant : on retombe sur le rendu
   d'aujourd'hui.

   Sous 1025 px, rien ne s'applique : le duo est deja passe en une colonne.
   -------------------------------------------------------------------------- */

@media (min-width: 1025px){
  .mtc-art-bloc-txt{
    position: sticky;
    align-self: start;
    top: max(118px, calc(var(--svc-entete, 0px) + 40px));
  }
}


/* -----------------------------------------------------------------------------
   L.3 · LE HAUT DE FICHE, CENTRE
   -----------------------------------------------------------------------------
   DEMANDE : « centre les contenus en haut, texte et bouton voir les
   photographies ».

   Le titre, la date et le fil d'Ariane sont deja centres — c'est le hero type-2
   de Blocksy. Le chapeau et le bouton, eux, etaient alignes a gauche : la
   rupture se voyait des l'entree sur la page.

   .mtc-svc-chapeau est borne a 70ch : « text-align: center » ne suffit pas, il
   faut aussi recentrer LA BOITE. Meme raisonnement et meme paire de regles que
   .mtc-cnt-centre sur la page contact.

   RETOUR A GAUCHE SOUS 600 px, et c'est la convention du site, pas une
   exception : .mtc-svc-hero-txt fait deja exactement cela. Sur telephone, une
   colonne etroite se lit alignee a gauche, et le bouton y est deja en pleine
   largeur — le centrer ne changerait rien a sa position mais deferait un rendu
   que le pilote a valide.
   -------------------------------------------------------------------------- */

/* ⚠ DEUX DECLARATIONS DU LOT ONT ETE RETIREES A LA FUSION.
   Il posait « justify-content: center » puis « justify-content: stretch » sur
   .mtc-art-tete-actions. Or ce conteneur n'est ni flex ni grid — il ne porte
   qu'un margin-top. Les deux declarations etaient donc SANS AUCUN EFFET.

   Le centrage marche quand meme, et par un autre chemin : .mtc-cta-2 est en
   « display: inline-flex », donc c'est une boite de niveau ligne, et le
   « text-align: center » de la ligne au-dessus la centre. Verifie au banc.
   Ce chemin tient aussi si un deuxieme bouton est ajoute un jour.

   On ne garde pas une declaration qui ne fait rien : c'est une heure perdue
   pour celui qui essaiera de la modifier. */
.mtc-art-tete{ text-align: center; }
.mtc-art-tete > .mtc-svc-chapeau{ margin-inline: auto; }

@media (max-width: 600px){
  .mtc-art-tete{ text-align: left; }
  .mtc-art-tete > .mtc-svc-chapeau{ margin-inline: 0; }
}

/* --- FIN DU CORRECTIF v3.1 ------------------------------------------------- */

/* ============ FIN DE LA SECTION 9 — ARTICLES ET REALISATIONS ============ */


/* =============================================================================
   SECTION 5 — CORRECTIFS DE FIN DE FICHIER
   Prefixe : aucun a ce jour  ·  Ajoute le 11/08/2026  ·  Source : —
   Sert : reserve — voir le mode d'emploi 25, §5
   ============================================================================= */

/* -----------------------------------------------------------------------------
   CORRECTIF 1 — L'EVENTAIL DE PHOTOS SUR TELEPHONE
   Ajoute le 27/08/2026  ·  Source : captures client, pages accueil et cuisine
   -----------------------------------------------------------------------------
   LE DEFAUT, REPRODUIT AU BANC A 360, 390 ET 414 px AVANT D'ETRE CORRIGE

   Sous 900 px l'eventail se desempile : .mtcsh-media passe en grille deux
   colonnes, et .mtcsh-photo revient en « position: relative; inset: auto ».
   Cette derniere regle pese 0,1,0. Or TROIS regles de bureau la battent : elles
   pesent 0,2,0 ET elles sont ecrites plus loin dans le fichier.

     .mtcsh-showroom   .mtcsh-photo-2 { top: 34%; }    (accueil)
     .mtc-svc-eventail .mtcsh-photo-2 { right: 9%; }   (pages services)
     .mtc-svc-eventail .mtcsh-photo-3 { left: 0; }     (pages services)

   Sur un element « position: relative », ces valeurs ne le repositionnent pas :
   elles le DECALENT de sa place, sans liberer ni reserver le moindre espace.
   Mesure a 390 px, avant correctif :

     accueil : la photo 2 descend de 114 px, sort de son conteneur par le bas et
               vient peindre par-dessus ce qui suit — texte et bouton ;
     cuisine : la photo 2 part de 31 px vers la gauche, deborde du conteneur et
               se desaligne de la photo 3, restee en place.

   C'est exactement ce que montrent les captures du client : deux photos ni a la
   meme hauteur ni a la meme abscisse, et un trou la ou l'une devrait etre.

   POURQUOI CE CORRECTIF EST ICI, ET PAS DANS LE BLOC MOBILE

   Le bloc mobile est a l'offset 80938 du fichier ; les trois fauteurs a 107175,
   108310 et 129529. A specificite egale, c'est l'ordre du document qui tranche :
   ecrite la-bas, la correction perdrait deux fois — sur la specificite et sur
   l'ordre. La SECTION 5 est le dernier bloc du fichier ; c'est sa raison d'etre.

   POURQUOI 900 px ET PAS 1024

   Parce que 900 est la largeur exacte a laquelle .mtcsh-media se desempile.
   Entre 901 et 1024 px l'eventail est encore en positionnement absolu, et
   « right: 9% » y est VOULU. Deplacer ce point de rupture reparerait le
   telephone en cassant la tablette.

   ⚠ DEVENU FAUX, CORRIGE EN v27.10.2 (17/09/2026, rapport 167 §12).
   Depuis le bloc « L'EVENTAIL SE DESEMPILE » du 27/08 (SECTION 3, palier
   max-width:1024px), .mtcsh-media se desempile des 1024 px, et le placement
   absolu des pages services n'existe plus qu'au-dessus de 1024 (palier
   min-width:1025px de .mtc-svc-intro). Entre 901 et 1024 px, les trois photos
   etaient donc deja en grille, et les decalages de bureau s'y appliquaient
   encore : mesure en ligne a 1024 px, photo 2 decalee de 87 px vers la gauche
   et sortie de 23 px de l'ecran, sur Dressing et sur Cuisine. Le palier du
   correctif est aligne sur celui du desempilement : 1024 px. Au-dessus de
   1024, rien ne change.
   -------------------------------------------------------------------------- */

@media (max-width: 1024px){

  .mtcsh-showroom .mtcsh-photo,
  .mtc-svc-eventail .mtcsh-photo,
  .mtc-svc-intro .mtcsh-photo{
    inset: auto;
  }
}


/* Cette section n'est plus vide : elle porte le CORRECTIF 1 ci-dessus.
   Ce qui suit reste vrai.

   Cette section etait VIDE, et c'etait voulu.
   Elle existe pour que personne n'ait besoin d'inventer un endroit ou poser un
   correctif qui doit passer apres tout le reste. Une regle n'a sa place ici que
   si elle doit gagner par l'ORDRE de la cascade et non par la specificite —
   c'est-a-dire presque jamais. Avant d'en ajouter une, verifier qu'un selecteur
   plus precis dans sa propre section ne suffit pas.
   Une nouvelle PAGE ne va pas ici : elle prend une SECTION 6, 7, 8... datee et
   prefixee, ajoutee entre la section 4 et celle-ci. */


/* ACCUEIL LOT 1 — début */
/* -----------------------------------------------------------------------------
   CORRECTIF 2 — L'EN-TÊTE FLOTTANT MORD SUR LE HERO   (défauts 1 et 2)
   Ajouté le 10/09/2026  ·  Source : retour client, rapport 89
   -----------------------------------------------------------------------------
   LE DÉFAUT, REPRODUIT AU BANC AVANT D'ÊTRE CORRIGÉ

   .mtc-hero-sticky est une boîte de 100svh calée à top:0 qui centre son
   contenu (align-items:center). Les 96 premiers pixels de cette boîte sont
   occupés par .mtch-header, en position:fixed. Dès que le bloc de texte
   devient assez haut pour que son sommet remonte au-dessus de 96px, sa
   première ligne passe dessous. Mesuré : +32px de recouvrement sur le
   surtitre à 1366x657, +33px sur « Since 2012 » à 1093x526.

   Ce n'est PAS un défaut de largeur, c'est un défaut de HAUTEUR de fenêtre.
   Le déclencheur le plus courant est le zoom du navigateur : zoomer ne
   change pas l'écran, il réduit la fenêtre exprimée en pixels CSS.

   POURQUOI ON NE TOUCHE PAS À LA HAUTEUR DE LA BOÎTE

   Le remède employé pour les cinq autres sections collantes — top:var(
   --mtc-entete) et hauteur réduite d'autant — ne convient PAS ici :
   .mtc-bg, .mtc-grid et .mtc-overlay sont en position:absolute;inset:0 sur
   cette boîte. Réduire la boîte réduirait la grille des neuf photos et
   ferait apparaître une bande de fond de page au-dessus du hero.
   Vérifié au banc : la boîte perd 96px et la grille avec elle.

   CE QU'ON FAIT À LA PLACE

   La boîte reste à 100svh, calée à top:0 : le fond, la grille et le voile
   ne bougent pas d'un pixel. Seul le CONTENU descend, par un padding haut
   sur la boîte flex. box-sizing:border-box est déjà posé par
   « .mtc-hero-scroll * », donc la boîte garde exactement 100svh.

   ⚠ POURQUOI .mtc-reveal A BESOIN DE SA PROPRE LIGNE
   Le padding ne le déplace pas : il est en position:absolute, et le bloc
   conteneur d'un élément absolu est la BOÎTE DE REMPLISSAGE de son
   ancêtre — padding compris. Son top:50% reste donc 50% de 100svh.
   On lui donne la même moitié de compensation que celle qu'un centrage
   dans l'espace restant produit : 50% + moitié de l'en-tête.

   LA COURSE DE 400vh N'EST PAS TOUCHÉE. .mtc-hero-scroll garde sa hauteur,
   computeP() lit -zone.top / (offsetHeight - innerHeight) : aucun des deux
   termes ne change. Vérifié au banc, progression identique au millième.

   ⚠⚠ POURQUOI max() ET PAS var(--mtc-entete) SEUL — MESURÉ EN LIGNE LE 10/09
   Sur le site réel, --mtc-entete vaut 74px alors que le bas réel de l'en-tête
   est à 96px. Relevé sur la page d'accueil en 1366x657 : .mtch-header est en
   position:fixed, top 20px, hauteur 76px, donc bas à 96px ; le style en ligne
   posé sur <html> par le BLOC 1 de site.js dit « --mtc-entete: 74px ».
   Provoquer un resize et un défilement ne le corrige pas. 74px, c'est la
   HAUTEUR de l'en-tête sans son décalage haut : le mesureur ne voit pas
   .mtch-header et retombe sur autre chose.

   Ce n'est pas corrigé ici — le mesureur est le socle, commun aux 33 pages,
   et il sort du périmètre de ce lot. Il est signalé au rapport 90.
   Mais on ne peut pas bâtir un correctif sur une valeur fausse : le décalage
   obtenu vaut la MOITIÉ du remplissage, donc 37px au lieu de 48px, et à
   1366x657 le surtitre ne serait dégagé que de 5px.

   D'où le plancher : la géométrie de l'en-tête, telle que ses propres jetons
   la déclarent — décalage haut + hauteur + 2px de filets. Vérifié en ligne :
   l'expression calcule exactement 96px à 1366px de large, et 85px à 1093px,
   soit le bas réel au pixel. max() prend la plus grande des deux : le jour où
   le mesureur sera réparé, --mtc-entete reprendra la main sans qu'on retouche
   à cette règle.

   ⚠ ON NE TOUCHE PAS À L'EN-TÊTE POUR AUTANT : on LIT ses jetons, dans une
   règle qui appartient au hero. Aucune règle de l'extrait 250 n'est modifiée.

   REPLI : sans JS, --mtc-entete n'existe pas, max() retombe sur le plancher,
   qui est purement CSS. Le hero reste donc compensé MÊME SI LE JS NE
   S'EXÉCUTE PAS — ce que les cinq autres sections collantes, elles, ne
   savent pas faire.

   BORNÉ À 1025px : sous cette largeur .mtc-hero-sticky est en display:none
   et c'est le hero statique qui s'affiche, avec sa propre mise en page.
   -------------------------------------------------------------------------- */

@media (min-width:1025px){

  .mtc-hero-scroll{
    --mtc-hero-entete:max(
      var(--mtc-entete, 0px),
      calc(var(--mtc-header-top, clamp(12px, 1.6vw, 20px))
         + var(--mtc-header-h,   clamp(60px, 6vw, 74px))
         + 2px)
    );
  }

  .mtc-hero-sticky{
    padding-top:var(--mtc-hero-entete, 0px);
  }

  .mtc-reveal{
    top:calc(50% + var(--mtc-hero-entete, 0px) / 2);
  }
}


/* -----------------------------------------------------------------------------
   CORRECTIF 3 — LES QUATRE ÉTAPES DE LA MÉTHODE   (défauts 3b, 3c et 3d)
   Ajouté le 10/09/2026  ·  Source : retour client, rapport 89
   -----------------------------------------------------------------------------
   TROIS DÉFAUTS MESURÉS, DEUX RÈGLES ICI, LE RESTE DANS site.js.

   3b — LES COLONNES SE TOUCHENT. La carte fait 30vw, le pas entre colonnes
   vaut la largeur de la scène divisée par le nombre d'étapes. Au repos la
   carte est à l'échelle 0,86 : 30 x 0,86 = 25,8 % de large pour 25 % de pas.
   L'écart est négatif PAR CONSTRUCTION dès que la carte suit les 30vw,
   c'est-à-dire sous 1376px. Mesuré : -8px à 1366, -20px à 1280.

   3c — LA RANGÉE N'EST PAS CENTRÉE. Voir site.js : la largeur était lue
   après mise à l'échelle.

   3d — LES ÉTAPES NE S'ALIGNENT PAS. Chaque carte est centrée sur SON
   propre axe (top:50% puis translateY(-50%)). Quatre textes de longueurs
   différentes donnent quatre hauteurs différentes, donc quatre lignes de
   référence différentes. « Validation & expertise technique » est le titre
   le plus long : c'est la carte qui décroche le plus, et c'est celle que le
   client a nommée. Mesuré : 23px d'écart entre les numéros à 1280x1080.

   CE QU'ON FAIT

   --mtcp-larg-max  largeur maximale d'une colonne, écrite par site.js :
                    le pas entre colonnes, moins une gouttière, divisé par
                    l'échelle de repos. min() garantit qu'on ne PEUT pas
                    élargir une carte, seulement la resserrer là où il le
                    faut. Au-dessus de 1440px la valeur calculée dépasse
                    400px : min() garde 400px et RIEN NE CHANGE.

   --mtcp-h         hauteur commune aux quatre cartes, écrite par site.js.
                    Des boîtes de même hauteur, centrées de la même façon,
                    partagent la même ligne haute : numéros, icônes et
                    titres s'alignent sans qu'aucun texte soit touché.

   ⚠ AUCUNE DES DEUX NE DÉPEND DU NOMBRE 4. site.js les calcule à partir de
   steps.length. Le passage de 5 à 4 étapes en août ne se reproduira pas en
   silence.

   ⚠ POURQUOI « prefers-reduced-motion:no-preference » DANS LA REQUÊTE
   Sans cette condition, ces deux règles battraient — par l'ordre du
   document — le repli statique du bloc prefers-reduced-motion de la ligne
   1750, qui pose width:260px. On casserait l'accessibilité en réparant une
   animation qui, là-bas, ne tourne même pas : site.js sort avant.

   REPLI : sans JS, --mtcp-larg-max n'existe pas, min() retombe sur 9999px
   et min-height sur auto. Comportement identique à aujourd'hui.
   -------------------------------------------------------------------------- */

@media (min-width:1025px) and (prefers-reduced-motion:no-preference){

  .mtcp-step{
    width:min(clamp(240px,30vw,400px), var(--mtcp-larg-max, 9999px));
    min-height:var(--mtcp-h, auto);
  }
}


/* -----------------------------------------------------------------------------
   CORRECTIF 4 — RETIRE LE 18/09/2026 (v27.11.5)
   -----------------------------------------------------------------------------
   Le voile radial .mtcp-step::before, pose le 10/09 sous l'etape mise en avant
   pour que son recouvrement se lise comme une profondeur, n'a plus d'objet :
   le recouvrement est nul depuis la v27.11.4, et l'arbitrage du 18/09 supprime
   toute mise en avant de l'etape active. Regle, jeton --mtcp-voile et calcul
   de site.js retires ensemble : rien ne tourne a vide. Rapport 167 §17.
   -------------------------------------------------------------------------- */
/* ACCUEIL LOT 1 — fin */


/* -----------------------------------------------------------------------------
   NOTE SUR LE CORRECTIF 3 — LA COMPACITE EST PILOTEE PAR site.js, PAS D'ICI
   Ajoutee le 11/09/2026  ·  arbitrage du pilote, annulation de la bascule grille
   -----------------------------------------------------------------------------
   Le CORRECTIF 3 retrecit la carte pour que les colonnes cessent de se toucher.
   Consequence mecanique : le texte se replie davantage et LA CARTE GRANDIT.
   Mesure a 1093 px de large : 328 -> 262 px de large, et 176 -> 235 px de haut.

   C'est cette croissance qui faisait deborder la scene, pas l'animation.
   Une premiere version de ce fichier basculait la section en grille sous
   552 px de hauteur de fenetre. ⛔ CETTE BASCULE EST ANNULEE : l'animation est
   un element valide, et une contrainte technique n'est pas un motif de retrait.

   LA COMPENSATION EST DONC APPLIQUEE PAR site.js, ET AUCUNE REGLE N'EST ECRITE
   ICI. La raison est precise : le corps et les espacements de la carte sont
   deja redefinis par les blocs @media (max-height:900px) et (max-height:780px)
   plus haut. Les restater ici, meme multiplies par un facteur, les ECRASERAIT
   et annulerait le travail du 10 aout sur les ecrans peu hauts.
   site.js LIT donc la valeur calculee de chaque element — quelle que soit la
   regle qui l'a produite — et reecrit une valeur absolue reduite en style en
   ligne, par paliers, jusqu'a ce que la hauteur MESUREE de la carte retombe a
   celle qu'elle avait a pleine largeur.

   REPLI SANS JAVASCRIPT : aucun jeton n'est ecrit, min() retombe sur 9999px et
   min-height sur auto. La section se comporte exactement comme avant le LOT 1.
   C'est volontaire, et c'est le comportement d'origine demande.
   -------------------------------------------------------------------------- */


/* =============================================================================
   ACCUEIL v27.6 — LA PLACE DU BANDEAU, AVEC LES TEXTES DEFINITIFS
   Ajoute le 15/09/2026  ·  brief 129  ·  mesure EN LIGNE, vraie police Typekit
   -----------------------------------------------------------------------------
   CE QUI A ETE MESURE, ET CE QUE CA CORRIGE

   Le conteneur du cowork n'atteint ni la preproduction ni Typekit. Toutes les
   valeurs ci-dessous ont donc ete relevees dans le navigateur de l'ordinateur
   du pilote, sur la page reelle, avec meno-banner-extra-condensed et
   above-the-beyond effectivement chargees, en substituant les textes definitifs
   puis en les restaurant. Aucune ecriture sur le site.

   ⚠ PREMIER CONSTAT, QUI CORRIGE LE BRIEF. Le surtitre ne passe PAS sous la
   barre. Marge du bloc de texte du bandeau, sous le bas reel de l'en-tete, avec
   les textes definitifs : +145,84 a 1920x955 · +33,34 a 1536x730 · +132,69 a
   1440x900 · +16,50 a 1366x657 · +53,47 a 1280x637 · +56,83 a 1152x608 ·
   +23,13 a 1093x526. Positive partout, avant comme apres. Le deficit de -5,3px
   du rapport 106 ne se reproduit pas sur le site reel.

   ⚠ LE VRAI DEFAUT EST AILLEURS : c'est le BLOC DE REVELATION (.mtc-reveal),
   celui qui porte « Since 2012 », la phrase, les trois piliers et le bouton.
   Sa position d'arret est pure CSS — site.js lui ecrit
   translate(-50%,-50%) translateY((1-rEase)*26px), donc exactement le transform
   du CSS quand rEase vaut 1 — et sa hauteur depasse la place disponible :

     1093x526 : bloc 498,48px pour 440,94px sous la barre  ->  il manque 57,55px
     1025x500 : bloc 484,72px pour 420,11px                ->  il manque 64,61px
     1280x637 : bloc 536,20px pour 541,00px                ->  il reste 4,80px
     1152x608 : bloc 510,36px pour 518,47px                ->  il reste 8,11px

   A 1093x526 le bloc remonte donc de 28,77px AU-DESSUS du bas de l'en-tete, et
   « Since 2012 » passe sous la barre. A 1280 et 1152 il tient, mais a moins de
   10px pres : une ligne de texte en plus le casse.

   ⚠ LES TEXTES DEFINITIFS NE CHANGENT RIEN A CES MARGES. Mesure : la hauteur du
   bloc de revelation et celle de la colonne de texte sont identiques au
   centieme avant et apres substitution, a toutes les fenetres. A2 remplace une
   phrase par une plus courte, S tient sur une ligne, et R garde son nombre de
   lignes. Le seul ajout reel, la mention sous le logo, fait grandir la COLONNE
   DU LOGO de 29,39px — colonne qui ne porte jamais la hauteur du bandeau :
   218,59 contre 394,67px pour la colonne de texte a 1093x526, 369,39 contre
   567,31 a 1920x955. Verifie aux neuf fenetres du banc.

   CE QU'ON FAIT, ET POURQUOI C'EST UNE EXTENSION ET PAS UN RETRAIT

   Le bloc de revelation est la SEULE piece collante du site sans traitement
   « ecran peu haut ». La section methode en a deux depuis le 10 aout 2026
   (@media max-height:900px et 780px, plus haut dans ce fichier), et leur
   commentaire dit la regle suivie ici mot pour mot : « on resserre le rythme
   vertical quand l'ecran est peu haut. Aucune regle de mise en page n'est
   touchee : uniquement des tailles et des marges. »

   On applique exactement ce traitement au bloc de revelation, en deux paliers.
   Rien n'est retire, rien ne bascule, l'animation est intacte.

     PALIER 1, sous 660px de haut : MARGES ET REMPLISSAGE SEULS. Aucune taille
     de texte n'est touchee, donc aucun retour a la ligne ne change. Le seuil
     est a 660 et non plus bas parce que le point de rupture depend de la
     largeur : bloc de 536px pour un en-tete de 96px a 1280, la casse arrive
     des 632px de hauteur de fenetre ; a 1152 des 600px ; a 1366 des 596px.

     PALIER 2, sous 600px de haut : on descend aussi l'echelle typographique.
     C'est la seule zone ou les marges seules ne suffisent pas.

   RESULTAT MESURE EN LIGNE, textes definitifs et mention comprises :

     fenetre     marge du bloc avant  ->  apres
     1920x955        +238,13              +238,13   (hors seuil, inchange)
     1536x730         +66,98               +66,98   (hors seuil, inchange)
     1440x900        +151,98              +151,98   (hors seuil, inchange)
     1366x657         +30,68               +46,18
     1280x637          +2,40               +40,78
     1152x608          +4,05               +20,55
     1093x526         -28,77               +19,22
     1025x500         -32,31                +8,80   (coin extreme, hors banc)

   Positive partout. Le palier de compacite de la methode n'est pas touche.
   ============================================================================= */

/* --- LA MENTION SOUS LE LOGO ------------------------------------------------
   Registre d'etiquette et non de titre : capitales, interlettrage large, doré.
   Ce sont les valeurs de la declaration d'origine de .mtc-surtitre, celle que
   la refonte des surtitres du 25/08 a remplacee par la manuscrite plus haut
   dans ce fichier. Aucune couleur en dur, aucune police en dur : la famille est
   heritee de .mtc-content.
   ⚠ ELLE EST PLACEE DANS .mtc-logo-wrap, ET C'EST STRUCTUREL. L'animation
   d'entree mtc-logo-in porte sur le conteneur, et site.js anime .mtc-content
   dans son ensemble : la mention suit donc le logo a tout instant de la course
   sans qu'aucune valeur ne soit a regler. Elle ne peut pas s'en detacher. */
.mtc-logo-mention{
  display:block;
  margin:14px 0 0;
  text-align:center;
  font-size:.74rem;
  letter-spacing:.22em;
  text-transform:uppercase;
  line-height:1.3;
  color:var(--mtc-dore);
}

/* --- PALIER 1 : marges et remplissage seuls -------------------------------- */
@media (min-width:1025px) and (max-height:660px){
  .mtc-reveal{padding:30px 48px;--mtc-reveal-px:48px;}   /* v27.21 : le jeton suit le rembourrage, il sert au socle */
  .mtc-millesime{margin:0 0 11px;}
  .mtc-reveal-strong{margin:0 0 22px;}
  .mtc-piliers{gap:20px;margin:0 0 24px;}
}

/* --- PALIER 2 : l'echelle typographique descend aussi ----------------------
   Les tailles sont posees en rem et non en clamp() : sous 600px de hauteur la
   part variable du clamp d'origine reste a son maximum sur toute la plage de
   largeur concernee, elle n'apporte rien et masquerait la valeur reelle. */
@media (min-width:1025px) and (max-height:600px){
  .mtc-reveal{padding:20px 40px;--mtc-reveal-px:40px;}   /* v27.21 : idem */
  .mtc-millesime{font-size:1.5rem;margin:0 0 8px;}
  .mtc-reveal-line{font-size:1.5rem;margin:0 0 4px;}
  .mtc-reveal-strong{font-size:2.6rem;margin:0 0 16px;}
  .mtc-piliers{gap:18px;margin:0 0 16px;}
}
/* ACCUEIL v27.6 — fin */


/* =============================================================================
   ACCUEIL v27.8 — LES CARTES CONSEILS PASSENT AU BLOC NATIF
   Ajoute le 16/09/2026  ·  brief 139  ·  DEUX REGLES, ET PAS UNE DE PLUS
   -----------------------------------------------------------------------------
   CE QUI CHANGE DANS LA PAGE : les trois cartes Conseils statiques
   (<ul class="mtc-art-cartes"> avec des .mtcs-card) deviennent un second bloc
   « Derniers articles » filtre sur la categorie 19, avec la meme classe realmt
   que les realisations. L'ecriture est faite par le cowork Accueil ; ici on ne
   pose que ce que ce second bloc exige.

   ⚠ VERDICT SUR site.js — IL NE CHANGE PAS, ET VOICI POURQUOI.
   « realmt » n'apparait qu'UNE SEULE FOIS dans tout site.js :

       var section = document.getElementById('mtcrReal');
       if(!scrollZone || !section) return;
       var cards = Array.prototype.slice.call(section.querySelectorAll('.realmt > li'));

   La lecture part de #mtcrReal, pas du document. Un second bloc realmt place
   hors de cette section n'est donc JAMAIS collecte : il n'est pas anime, aucun
   style en ligne ne lui est ecrit, et il ne peut pas fausser la course de la
   section realisations — computeP() ne mesure que #mtcrScroll, et render() ne
   mesure rien en dehors de la section. Aucun blocage, aucune modification.

   ⚠ LE PIEGE, ET LA PREUVE QU'IL EST REEL.
   Sur l'accueil, la feuille met les cartes d'un bloc realmt a opacity:0 sous
   1025px en attendant .mtcr-revealed, classe que seul le JS de la section
   realisations pose. La neutralisation ecrite le 11/09 est bornee a
   body:not(.home), precisement pour ne pas casser la revelation de l'accueil.
   Un second bloc realmt sur l'accueil tombe donc dans ce trou.
   MESURE AU BANC, page reelle, vraie police, 1024x800 : le meme bloc natif
   POSE SANS le modificateur affiche opacite 0, 0, 0 sur ses trois cartes.
   Avec le modificateur : 1, 1, 1. Le temoin a ete fait avant la regle, pas
   apres, pour que la regle prouve quelque chose.

   ⚠ CE QU'ON N'ECRIT PAS, ET C'EST DELIBERE.
   L'ALIGNEMENT N'A BESOIN D'AUCUNE REGLE. Mesure aux cinq fenetres : les bords
   gauche et droit des deux grilles coincident deja exactement (ecart 0,00 px
   partout), parce que les deux conteneurs ont la meme largeur utile. Le
   « leger decalage » vu en ligne ne venait pas de l'alignement mais de la
   GOUTTIERE : .mtc-art-cartes posait clamp(12px,1.4vw,22px) la ou realmt pose
   clamp(16px,1.6vw,26px). En passant au bloc natif, la grille prend la
   gouttiere des realisations d'elle-meme, et les colonnes deviennent egales au
   centieme. Il n'y avait donc rien a corriger : ajouter une regle d'alignement
   aurait ete inventer un probleme.

   ⚠ POURQUOI PAS .mtcr-cta-row SUR LE BOUTON CONSEILS.
   Ce serait le moyen evident d'obtenir le meme ecart. C'est un piege : sous
   1025px, .mtcr-cta-row est elle aussi mise a opacity:0 en attendant
   .mtcr-revealed. Le bouton « Tous nos conseils » disparaitrait sur telephone.
   On garde donc .mtc-svc-cta-row, et on lui donne la marge par adjacence.
   ============================================================================= */

/* 1 · LE MODIFICATEUR — il rend le second bloc visible SANS script.
   Meme forme que la neutralisation body:not(.home) de la section 9 : !important
   assume, parce qu'on ecrase une regle de masquage et qu'on ne veut pas que
   l'ordre de chargement des extraits WPCode puisse en decider. */
@media (max-width:1024px){
  .realmt.mtc-conseils-grille > li{
    opacity:1 !important;
    transform:none !important;
  }
}

/* 2 · L'ECART CARTES / BOUTON — exactement celui des realisations.
   .mtcr-cta-row porte margin-top:clamp(34px,4vw,52px) ; .mtc-svc-cta-row n'a
   aucune marge, d'ou le bouton colle constate en ligne. On pose la meme valeur,
   par adjacence, donc uniquement quand la rangee suit cette grille-la.
   Mesure a la vraie police, ecart reel entre le bas des cartes et le haut du
   bouton, realisations puis conseils : 52,00 / 52,00 a 1920 et a 1366 ;
   43,72 / 43,72 a 1093 ; 40,95 / 40,95 a 1024 ; 34,00 / 34,00 a 390. */
.mtc-conseils-grille + .mtc-svc-cta-row{
  margin-top:clamp(34px,4vw,52px);
}
/* ACCUEIL v27.8 — fin */


/* =============================================================================
   PASSE v27.9 · ESPACEMENTS DES ZONES MODIFIEES DEPUIS LE 16/09
   Ajoute le 17/09/2026  ·  brief 166  ·  audit et arbitrages : rapport 167
   -----------------------------------------------------------------------------
   Mesures faites a la vraie police (Typekit), dans le navigateur de Nath, a
   1920, 1366, 1024 et 390 px. Reference : les sections validees de Cuisine sur
   mesure (en-tete vers contenu 68 / 68 / 51 / 38 ; contenu vers bouton
   .mtc-svc-apres 48 / 48 / 41 / 32).

   REGLE DE CE BLOC : chaque correctif vise UNE zone par un selecteur precis.
   Aucune regle globale. Releve fait a la fusion sur les pages servies (Accueil,
   Cuisine, Dressing, Salle de bain, A propos, Contact) et en base sur les 23
   contenus qui portent .mtc-svc-centre : chaque selecteur ci-dessous ne
   rencontre QUE la zone qu'il corrige.

   Les deux correctifs propres a la page Contact (encart « Ce qui se passe
   ensuite », ancres) sont ecrits dans sa section : bloc D, et liste des
   decrochements d'ancre en tete de section.

   Place en fin de fichier, apres la v27.8 : D9 surcharge une regle de la
   SECTION 9 (.mtc-art-suite > h2), D10 une regle du module prix (CSS en ligne dans la page, donc
   lu apres ce fichier). Tous deux l'emportent par la specificite, pas par
   l'ordre.
   ============================================================================= */

/* D1 · DRESSING, « Bureaux et locaux professionnels » : le bouton touchait le
   duo : 0 px a 1920 et 1024, -1 px a 1366 (chevauchement), 1 px a 390.
   Le div .mtc-svc-centre n'a pas la classe .mtc-svc-apres ; on lui donne sa
   valeur par adjacence, sans toucher au HTML (arbitrage du pilote).
   Seule occurrence du couple duo + centre sur le site au 17/09/2026. */
.mtc-svc-duo + .mtc-svc-centre{
  margin-top: clamp(32px, 4vw, 48px);
}

/* D2 · DRESSING, Bureaux : colonne de texte de 237 px contre une photo de 420
   a 1366 (218 contre 499 a 1920), collee en haut par .mtc-svc-duo-serre.
   Au-dessus de 1024 px seulement : en dessous, le duo est sur une colonne. */
@media (min-width: 1025px){
  .mtc-svc-pro .mtc-svc-duo-serre{
    align-items: center;
  }
}

/* D3 · DRESSING, Bureaux : le premier chapeau de la colonne commencait 22 px
   sous le haut de la colonne (marge du socle .mtc-svc-chapeau). */
.mtc-svc-duo-txt > .mtc-svc-chapeau:first-child{
  margin-top: 0;
}

/* D7 · CONTACT, module de demande : regle RETIREE en v27.11.14 (22/09/2026).
   Elle alignait le module de l'extension sur l'en-tete de la rangee. site.css
   ne touche plus au balisage de mtc-demandes : l'extension est autonome et
   porte son propre CSS. Si l'alignement doit revenir, il se fait dans
   mtc-demandes, pas ici. */

/* D8 · CONTACT, bloc Rendez-vous : a 390 px le gras se coupait en
   « Au showroom ou a votre / domicile ». */
.mtc-cnt-horaires b{
  text-wrap: balance;
}

/* D9 · ACCUEIL, Conseils : titre vers cartes 30 px contre 58 pour les
   Realisations. On reprend la marge de .mtcr-head (36 a 58 px).
   La marge est portee par le TITRE, pas par la grille : la grille realmt a sa
   marge verrouillee a 0 par une regle en !important (bloc ul.realmt), verifie
   au banc a la fusion. Portee : la page d'accueil (.home), et elle seule ; les
   fiches et les articles, qui emploient aussi .mtc-art-suite, ne sont pas
   touches. */
.home .mtc-art-suite > .mtc-svc-impl-h3{
  margin-bottom: clamp(36px, 4.5vw, 58px);
}

/* PASSE v27.9 · fin */


/* =============================================================================
   PASSE v27.10 · HERO DRESSING EN CADRE PORTRAIT
   Ajoute le 17/09/2026  ·  montage (c) du rapport 153 §5  ·  rapport 167 §10
   -----------------------------------------------------------------------------
   CE QUE FAIT CE BLOC : sur /dressing-et-living-sur-mesure/, la photo du living
   (896 x 1195, portrait) quitte le fond pleine largeur et se pose dans un cadre
   3 : 4, a gauche du texte. Le HTML est ecrit par le cowork Dressing (153 §5) :
   .mtc-svc-duo, .mtc-svc-duo-media et .mtc-svc-duo-txt, classes deja servies,
   poses DANS .mtc-svc-hero-txt.

   PORTEE : tout est prefixe par .mtc-svc-hero-corps .mtc-svc-duo. Les heros de
   Cuisine sur mesure, Salle de bain et A propos n'ont pas de .mtc-svc-duo : ils
   ne sont pas touches (0 ecart au banc). Les sections Bureaux et matieres,
   qui emploient .mtc-svc-duo, ne sont pas dans le hero : pas touchees non plus.

   ECARTS A LA REGLE DU 153 §5, TOUS MESURES A LA VRAIE POLICE AVANT D'ECRIRE
   (fenetre emulee 1920, 1366, 1100, 1024, 768 et 390, HTML du 153 §5 injecte) :
   1. Colonnes : avec « 1fr 1fr », la photo plafonnee a 420 px laissait un
      trou dans sa colonne et la colonne de texte ne faisait que 748 px a 1920
      (628 a 1366) : surtitre sur deux lignes. La photo prend donc une colonne a
      sa taille, clamp(300px, 32vw, 420px), le texte prend le reste. A 1100 px,
      420 px de photo laissaient 581 px au texte pour un surtitre de 584 px.
   2. Photo : l'image du duo est posee en « inset: -6% 0 ; height: 112% » pour
      la parallaxe des sections. Dans le cadre du hero, height: 100% sans inset
      laissait une bande vide en bas. On remet inset: 0 et on coupe la
      parallaxe de cette seule image.
   3. Titre et sous-titre : le socle les centre par « margin: 0 auto ». Dans
      une colonne alignee a gauche, ils se decalaient de 18 px. Marges
      laterales remises a 0 au-dessus de 1024, recentrees en dessous.
   4. Boutons : avec flex-wrap, « Les bureaux » passait seul a la ligne (1920
      avec la regle du 153, 1366 et 1100 avec toute largeur de texte utile). Le
      bouton principal occupe donc sa propre rangee, et les trois ancres
      restent ensemble sur la suivante, a toutes les largeurs au-dessus de
      600 px. Sous 600 px, le socle empile les quatre boutons en pleine largeur,
      comme avant : on le laisse faire.
   5. Point de rupture : 1024 px, celui ou le socle passe .mtc-svc-duo en une
      colonne (le 860 du 153 etait provisoire, il l'annoncait).
   ============================================================================= */

.mtc-svc-hero-corps .mtc-svc-duo{
  align-items: center;
  gap: clamp(28px, 4vw, 64px);
}

.mtc-svc-hero-corps .mtc-svc-duo-media{
  aspect-ratio: 3 / 4;
  max-width: 420px;
  width: 100%;
  margin: 0;
}

.mtc-svc-hero-corps .mtc-svc-duo-media img{
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: 50% 50%;
  transform: none;
}

.mtc-svc-hero-corps .mtc-svc-duo-txt{
  text-align: left;
}

.mtc-svc-hero-corps .mtc-svc-duo-txt .mtc-svc-h1,
.mtc-svc-hero-corps .mtc-svc-duo-txt .mtc-svc-soustitre{
  margin-inline: 0;
}

.mtc-svc-hero-corps .mtc-svc-duo-txt .mtc-svc-surtitre{
  text-wrap: balance;
}

/* Le bouton principal seul, les trois ancres ensemble sur la rangee suivante. */
.mtc-svc-hero-corps .mtc-svc-duo-txt .mtc-svc-cta-row{
  display: grid;
  grid-template-columns: repeat(3, max-content);
  justify-content: start;
}
.mtc-svc-hero-corps .mtc-svc-duo-txt .mtc-svc-cta-row .mtc-cta{
  grid-column: 1 / -1;
  justify-self: start;
}

@media (min-width: 1025px){
  .mtc-svc-hero-corps .mtc-svc-duo{
    grid-template-columns: minmax(0, clamp(300px, 32vw, 420px)) minmax(0, 1fr);
  }
}

/* Une colonne : le texte d'abord, la photo dessous, centree.
   v27.10.1 (17/09/2026), arbitrage du pilote sur le rapport 167 §10 : le titre
   doit rester dans le premier ecran. La photo est premiere dans le HTML ; order
   la fait passer apres le texte a l'ecran, sans toucher au HTML. Les lecteurs
   d'ecran gardent l'ordre du HTML (photo, puis texte). */
@media (max-width: 1024px){
  .mtc-svc-hero-corps .mtc-svc-duo-media{
    order: 2;
    max-width: 320px;
    margin-inline: auto;
  }
  .mtc-svc-hero-corps .mtc-svc-duo-txt{
    text-align: center;
  }
  .mtc-svc-hero-corps .mtc-svc-duo-txt .mtc-svc-h1,
  .mtc-svc-hero-corps .mtc-svc-duo-txt .mtc-svc-soustitre{
    margin-inline: auto;
  }
  .mtc-svc-hero-corps .mtc-svc-duo-txt .mtc-svc-cta-row{
    justify-content: center;
  }
  .mtc-svc-hero-corps .mtc-svc-duo-txt .mtc-svc-cta-row .mtc-cta{
    justify-self: center;
  }
}

/* Sous 600 px : retour a la pile pleine largeur du socle. */
@media (max-width: 600px){
  .mtc-svc-hero-corps .mtc-svc-duo-txt .mtc-svc-cta-row{
    display: flex;
  }
}
/* PASSE v27.10 · fin */

/* ==========================================================================
   PASSE v27.11 · GRILLE DES UNIVERS DE L'ACCUEIL A 5 CARTES (17/09/2026)
   Portee : #mtcsUnivers .mtcs-grid, et seulement quand la grille contient
   une 5e carte (:has). Avec 4 cartes, rien ne change.
   - 1025px et plus (section collante) : 5 colonnes sur une ligne. Deux
     rangees ne tiennent pas dans l'ecran fige (mesure : 1125 a 1250 px de
     haut pour 708 px disponibles a 800 px de haut).
   - 1025 a 1365px : legende resserree (reprend le correctif 901-1024).
   - 1025 a 1279px : description masquee, elle ne tient pas sous la bulle
     dans une carte de 183 a 230 px. A partir de 1280px : au survol.
   - 901 a 1024px : 3 + 2 centrees (grille de 6 pistes, cartes sur 2 pistes).
   - 650 a 900px : 2 + 2 + 1, la 5e carte centree, meme taille (v27.11.1 :
     en pleine largeur, la photo portrait de la salle de bain etait
     recadree a 37 % de sa hauteur).
   - 521 a 649px : une colonne, cartes en 3/2. En deux colonnes, la legende
     deborde de la carte sous 645px (defaut deja present avec 4 cartes ;
     palier porte de 640 a 650 en v27.11.2, carte salle de bain carree).
   - 520px et moins : empilement inchange.
   ========================================================================== */
@media (min-width:1025px){
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)){grid-template-columns:repeat(5,minmax(0,1fr));}
}
@media (min-width:1025px) and (max-width:1365px){
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) .mtcs-caption{padding:16px 16px 18px;}
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) .mtcs-card-title{font-size:clamp(1.05rem,1.35vw,1.3rem);}
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) .mtcs-card .mtcs-card-desc{font-size:.8rem;line-height:1.4;}
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) .mtcs-bubble{top:14px;right:14px;padding:7px 12px;font-size:.72rem;}
}
@media (min-width:1025px) and (max-width:1279px){
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) .mtcs-card .mtcs-card-desc{display:none;}
}
@media (min-width:1366px){
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) .mtcs-caption{padding:clamp(18px,1.45vw,26px) clamp(18px,1.45vw,26px) clamp(20px,1.55vw,28px);}
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) .mtcs-card-title{font-size:clamp(1.2rem,1.45vw,1.75rem);}
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) .mtcs-card .mtcs-card-desc{font-size:clamp(.84rem,.8vw,.95rem);line-height:1.45;}
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) .mtcs-bubble{top:clamp(16px,1.35vw,26px);right:clamp(16px,1.35vw,26px);}
}
@media (min-width:901px) and (max-width:1024px){
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)){grid-template-columns:repeat(6,minmax(0,1fr));}
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) > .mtcs-card{grid-column:span 2;}
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) > .mtcs-card:nth-child(4){grid-column:2 / span 2;}
}
@media (min-width:650px) and (max-width:900px){
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)){grid-template-columns:repeat(4,minmax(0,1fr));}
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) > .mtcs-card{grid-column:span 2;}
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) > .mtcs-card:nth-child(5){grid-column:2 / span 2;}
}
@media (min-width:521px) and (max-width:649px){
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)){grid-template-columns:minmax(0,1fr);}
  #mtcsUnivers .mtcs-grid:has(> .mtcs-card:nth-child(5)) > .mtcs-card{aspect-ratio:3 / 2;}
}
/* PASSE v27.11 · fin */


/* =============================================================================
   PASSE v27.11.3 · LOT 2 — TROIS DEFAUTS RELEVES PAR LE CLIENT SUR L'ACCUEIL
   Ajoute le 18/09/2026  ·  rapport 167 §15  ·  portee : hero de l'accueil et
   etapes de la methode, au-dessus de 1025 px. Rien d'autre n'est touche.
   -----------------------------------------------------------------------------
   DEFAUTS a ET b — « la barre de navigation mord sur le cuisiniste et agenceur »,
   « Since 2012 est rogne aussi ». UNE SEULE CAUSE, MESUREE.

   .mtc-hero-sticky est une boite de 100svh qui centre .mtc-content, avec pour
   seule reserve un padding-top egal a la hauteur de l'en-tete. Le bloc de texte
   mesure 528 px a 1366 px de large et 567 px a 1920, QUELLE QUE SOIT la hauteur
   de la fenetre : rien dans la composition ne depend de la hauteur. Des que la
   place sous l'en-tete tombe sous cette valeur, le centrage deborde vers le HAUT
   et le surtitre passe sous la barre. Mesure en ligne (visiteur, en-tete a 96 px,
   ecart entre le haut du surtitre et le bas de l'en-tete) :

       1366 x 768 : +72 px      1366 x 630 : +3 px       1366 x 600 : -12 px
       1920 x 1080 : +224 px    1920 x 620 : -22 px      1536 x 620 : -22 px

   Le seuil est donc ~624 px de hauteur utile a 1366, ~663 px a 1920 : une
   fenetre de portable avec barre des taches, ou un zoom navigateur a 110 %,
   suffit. Le millesime « Since 2012 » suit la meme mecanique dans .mtc-reveal,
   avec une marge qui tombe a 51 px a 1440 x 605 pendant la phase figee.

   CE QU'ON FAIT — DEUX LEVIERS, AUCUN CONTENU TOUCHE.
   1. Un garde-fou : align-items:safe center. Quand le bloc ne tient plus, le
      centrage bascule sur le depart au lieu de deborder des deux cotes : le haut
      du texte ne PEUT plus passer sous l'en-tete. Navigateur ancien : valeur
      ignoree, comportement d'aujourd'hui.
   2. Deux paliers de hauteur, ecrits sur le meme modele que ceux de .mtc-reveal
      (lignes plus haut) : la typographie du hero se met a dependre de la hauteur,
      via min(clamp(...), Nvh), et les marges se resserrent. Au-dessus de 760 px
      de hauteur, rien ne change : les valeurs mesurees a 1366x768 et 1920x1080
      sont identiques avant et apres.

   Mesure apres correction, meme ecart : 1366x630 +91 · 1366x560 +81 ·
   1920x620 +77 · 1536x620 +94. Hauteur du bloc : 528 -> 351 px a 1366x630.

   -----------------------------------------------------------------------------
   DEFAUT c — « Validation expertise technique n'est pas aligne ».

   Les quatre cartes partagent deja une hauteur commune (--mtcp-h, CORRECTIF 3).
   Ce qui decroche, c'est le TEXTE : le titre le plus long passe sur deux lignes
   quand les autres tiennent sur une, et tout ce qui suit descend d'une ligne.
   Mesure a 1920 x 1080, position du paragraphe dans sa carte, echelle annulee :
   226 px pour « Ecoute et decouverte » et « Pose & reception », 261 px pour
   « Conception sur mesure & 3D » et « Validation & expertise technique ».
   Ecart : 35 px. A 1280 x 800, seul « Validation » passe sur deux lignes.

   ON RESERVE DEUX LIGNES AU TITRE. min-height, pas height : un titre sur trois
   lignes (fenetre etroite) grandit toujours. La hauteur commune des cartes est
   recalculee par site.js apres coup, sans intervention.
   Mesure apres : 261 px pour les quatre cartes.

   Le chevauchement des colonnes pendant le defilement etait traite dans site.js
   (plafond d'agrandissement), et non ici : il est geometrique, pas typographique.
   Depuis la v27.11.5 il n'y a plus d'agrandissement du tout, donc plus de
   chevauchement possible : voir le bloc « PASSE v27.11.5 » en fin de fichier.
   ============================================================================= */

@media (min-width:1025px){
  .mtc-hero-sticky{align-items:safe center;}
  .mtcp-step-title{min-height:2.28em;}
}

@media (min-width:1025px) and (max-height:760px){
  .mtc-surtitre{margin:0 0 14px;}
  .mtc-h1{font-size:min(clamp(2.4rem,5vw,4.4rem),9.4vh);margin:0 0 18px;}
  .mtc-sous-titre{margin:0 0 26px;}
  .mtc-cta-row{gap:16px;}
}

@media (min-width:1025px) and (max-height:660px){
  .mtc-surtitre{margin:0 0 10px;}
  .mtc-h1{font-size:min(clamp(2.2rem,4.4vw,3.6rem),8.6vh);margin:0 0 14px;}
  .mtc-sous-titre{font-size:1rem;margin:0 0 18px;}
}
/* PASSE v27.11.3 · fin */

/* =============================================================================
   PASSE v27.11.5 · LA MISE EN AVANT DE L'ETAPE ACTIVE EST SUPPRIMEE
   Ajoute le 18/09/2026  ·  rapport 167 §17  ·  arbitrage du pilote
   -----------------------------------------------------------------------------
   CE BLOC NE POSE AUCUNE REGLE. Il enregistre une suppression, pour qu'aucune
   relecture ne reintroduise ce qui vient d'etre retire.

   L'arbitrage du 10/09 — mettre l'etape active en avant — est renverse. Les
   quatre cartes de « Notre methode » sont desormais dessinees a l'identique :
   meme echelle, meme couleur, meme opacite, aucune boite, aucun filet, aucune
   ombre, aucun fond propre. C'est l'etat qui existait deja sans script, en
   mouvement reduit et en grille sous 1025 px ; il devient l'etat unique.

   CE QUI A ETE RETIRE DE CETTE FEUILLE
     · .mtcp-step::after           filet dore + ombre portee   (PASSE v27.11.4)
     · filter brightness/saturate  voile sur les trois voisines (PASSE v27.11.4)
     · .mtcp-num                   rampe vers le dore plein     (PASSE v27.11.4)
     · .mtcp-step-title            rampe d'opacite .74 -> 1     (PASSE v27.11.4)
     · .mtcp-step::before          voile radial                 (CORRECTIF 4)
     · --mtcp-voile / --mtcp-av    les deux jetons, plus lus nulle part

   CE QUI A ETE RETIRE DE site.js, EN MEME TEMPS
     · GRANDE et grandeEff         l'agrandissement lui-meme
     · le plafond « ajuste »       il n'a plus rien a plafonner
     · l'ecriture de --mtcp-voile  et son effacement au passage vers la grille
     · farFade                     l'opacite decroissante des cartes deja rangees

   CE QUI RESTE, ET POURQUOI
     · l'echelle unique PETITE (0,86), commune aux quatre cartes. Elle n'est PAS
       une mise en avant : c'est l'echelle de repos que trois cartes sur quatre
       portaient deja, et la largeur --mtcp-larg-max est calculee pour elle. La
       porter a 1 aurait agrandi les quatre cartes de 16 % et change le
       repliement des textes : un agrandissement, precisement ce qui est interdit.
     · l'apparition en fondu et en zoom court (0,76 -> 1 de l'echelle commune).
       Elle accompagne l'ARRIVEE de chaque carte, elle est identique pour les
       quatre, et elle est finie des que la carte est en place.
     · la frise du bas, ses noeuds et son remplissage : hors sujet, non touches.
   ============================================================================= */


/* =============================================================================
   PASSE v27.11.7 · RETOUR CLIENT EN CAPTURES DU 19-20/09 (rapport 205)
   Ajoute le 21/09/2026  ·  deux corrections, aucune bordure, ombre, fond ou
   couleur ajoutes. Numerotation v27.11.6 sautee : elle designait le lot des
   bandes de defilement, annule le 19/09 et jamais mis en ligne.
   ============================================================================= */

/* -----------------------------------------------------------------------------
   1 · A PROPOS · CARTES MATHIEU ET THOMAS : LE TELEPHONE ALIGNE EN BAS
   Capture 27 du client : « pas alignees ». Mesure sur la page actuelle : photo,
   role et nom sont deja sur la meme ligne dans les deux cartes ; seul le
   numero de telephone decroche, de 27 px a 1100 px de large, parce que les deux
   biographies n'ont pas la meme longueur. Le nom de Thomas tient sur une ligne
   a 390, 1100 et 1440 px (la capture precede la refonte de la page du 21/09).
   Les deux cartes prennent la hauteur de la plus haute, et le numero descend
   au pied de chacune. Le padding-top de 18 px remplace a l'identique l'ancien
   margin-top de 18 px : la carte la plus longue ne bouge pas d'un pixel.
   Bureau seulement : sous 1025 px les cartes sont empilees, il n'y a rien a
   aligner, et le rendu mesure a 390 px est rigoureusement identique.
   -------------------------------------------------------------------------- */
@media (min-width:1025px){
  .mtc-apr-duo{ align-items:stretch; }
  .mtc-apr-personne-txt{ flex:1 1 auto; display:flex; flex-direction:column; }
  .mtc-apr-tel{ margin-top:auto !important; padding-top:18px; }
}

/* -----------------------------------------------------------------------------
   2 · REALISATIONS · GALERIE EN HAUT · REGLE D'ESSAI RETIREE (v27.11.9)
   L'essai sur Seilh (colonne flexible + order) a ete valide puis remplace le
   21/09 par un deplacement dans le HTML : sur les 15 fiches a galerie,
   .mtc-art-strip est desormais place juste apres .mtc-art-tete. La regle
   d'essai n'a donc plus d'objet ; retiree entiere (rapport 205 §12).
   -------------------------------------------------------------------------- */
/* PASSE v27.11.7 · fin */


/* =============================================================================
   PASSE v27.11.8 · CONTACT · CARTES DE MATHIEU ET THOMAS ALIGNEES
   Ajoute le 21/09/2026  ·  rapport 205 §6  ·  aucune bordure, ombre, fond ou
   couleur ajoutes ; HTML, textes, tailles de police et photos inchanges.
   -----------------------------------------------------------------------------
   Capture 27 du client : cartes « pas alignees ». Le defaut est sur Contact
   (.mtc-cnt-gerant), pas sur A propos. DEUX CAUSES, mesurees :
   1. Les deux portraits n'ont pas le meme rapport (298 x 263 et 305 x 278) :
      a largeur egale, celui de Thomas est plus haut, de 4,8 px a 390 px et de
      7,8 px a 1440 px. C'est la seule cause a 768 et 1440 px.
   2. Sur telephone, « Thomas Delannoy » passe sur deux lignes et « Mathieu
      Gally » tient sur une : 28 px d'ecart en plus.
   CE QU'ON FAIT : les deux portraits prennent le rapport de celui de Mathieu
   (298 / 263). Sa photo ne bouge pas d'un pixel ; celle de Thomas est
   recadree d'environ 3 % de sa hauteur (deja en object-fit:cover), cadrage
   tenu a 30 % du haut pour garder le visage. Le bas des deux photos tombe
   ainsi sur la meme ligne (constat visuel de Nath du 21/09). La figure
   devient une colonne flexible et la marge basse automatique de la photo
   cale la legende au pied de la carte : filet de securite si un nom passe
   sur deux lignes de lui-meme (police agrandie sur un telephone).
   Sous 600 px seulement, prenom et nom passent sur deux lignes dans les deux
   cartes, centres, pour que les noms aussi se repondent.
   MESURE a 390, 768 et 1440 px : photos, noms, roles et telephones a la meme
   hauteur au dixieme de pixel dans les deux cartes. Les cartes raccourcissent
   de 4,8 a 7,8 px (la photo de Thomas n'est plus plus haute que l'autre).
   ============================================================================= */
.mtc-cnt-gerant{ display:flex; flex-direction:column; }
.mtc-cnt-gerant img{ margin-bottom:auto; aspect-ratio:298 / 263; object-position:50% 30%; }
@media (max-width:600px){
  .mtc-cnt-gerant figcaption b{ width:min-content; margin-inline:auto; }
}
/* PASSE v27.11.8 · fin */


/* =============================================================================
   PASSE v27.11.10 · ACCUEIL · BLOC CHIFFRES, LEGENDES ALIGNEES AU-DELA DE 1024 PX
   Ajoute le 21/09/2026  ·  rapport 205 §16
   -----------------------------------------------------------------------------
   MESURE a 1440 px : « Sur RDV » tient sur une ligne (142 px pour 302 px de
   colonne), mais sa taille est la moitie de celle des chiffres (35,2 contre
   67,2 px) : sa ligne est plus basse et sa legende remontait de 32 px par
   rapport a « 2012 » et « 90 % ». Meme ecart de 25 px a 1025 px.
   CE QU'ON FAIT : les trois lignes de chiffres prennent la hauteur des grands
   chiffres ; « Sur RDV » se pose en bas de la sienne, sur la meme ligne de
   pied que « 2012 » ; et il ne passe jamais a la ligne. Aucune taille de
   police changee. Sous 1025 px, rien ne bouge (les chiffres sont empiles).
   ============================================================================= */
@media (min-width:1025px){
  .mtcb-num{ min-height:clamp(2.6rem,5vw,4.2rem); }
  .mtcb-num:has(.mtcb-val-txt){ align-items:flex-end; }
  .mtcb-val-txt{ white-space:nowrap; }
}
/* PASSE v27.11.10 · fin */


/* =============================================================================
   PASSE v27.11.11 · CUISINE SUR MESURE · SOUS-TITRE AU-DESSUS DU BANDEAU PHOTO
   Ajoute le 21/09/2026  ·  section « Les collections visibles au showroom »
   -----------------------------------------------------------------------------
   HTML pose par PAGES juste avant <div class="mtc-art"> :
     <p class="mtc-art-sous-titre">Nos collections en image</p>
   Typographie des petits surtitres du site (capitales, interlettrage .2em,
   comme .mtc-static-surtitre), en couleur de texte courant --svc-c-texte,
   claire et lisible sur fond sombre. Aucune nouvelle couleur.
   RESPIRATION : le sous-titre reprend l'ecart qui separait jusqu'ici la liste
   du bandeau (92 px a 1440, 64 a 1024, 54 a 768, 42 a 390), et le bandeau se
   pose 14 px dessous. La marge haute du bandeau n'est annulee QUE lorsqu'il
   suit ce sous-titre : les autres .mtc-art du site ne bougent pas.
   Les legendes sous chaque vignette (.mtc-art-legende) ont ete abandonnees :
   aucune regle ecrite pour elles.
   ============================================================================= */
.mtc-art-sous-titre{
  margin: clamp(50px, 6.5vw, 92px) 0 14px;
  font-size: .76rem;
  letter-spacing: .2em;
  text-transform: uppercase;
  line-height: 1.4;
  color: var(--svc-c-texte, rgba(247,244,239,.76));
}
.mtc-art-sous-titre + .mtc-art > .mtc-art-strip:first-child{ margin-top: 0; }
@media (max-width:1024px){
  .mtc-art-sous-titre{ margin-top: clamp(42px, 7vw, 64px); }
}
/* PASSE v27.11.11 · fin */

/* =============================================================================
   PASSE v27.11.12 · SUITE DU DIAGNOSTIC 212 · CORRECTIONS VALIDEES PAR NATH
   Ajoute le 22/09/2026. Chaque regle est portee par un ancetre precis : rien
   ne sort de la section visee.
   ============================================================================= */

/* 3 · ACCUEIL · MARGES ENTRE SECTIONS COLLEES (ordinateur seulement)
   Les rangees Kadence portent 100 px de marge interne. Entre deux sections
   collees, ces marges n'etaient qu'une bande vide qui prolongeait l'ecran
   noir. Sous 1025 px les sections ne collent pas : l'espacement y est garde. */
@media (min-width:1025px){
  .kt-row-column-wrap:has(#mtcsScroll){ padding-bottom: 0; }
  .kt-row-column-wrap:has(#mtcshScroll){ padding-top: 0; }
  .kt-row-column-wrap:has(#mtcaScroll){ padding-top: 0; }
}

/* 4 · ACCUEIL · PICTOS « NOTRE METHODE » (ordinateur seulement)
   La taille suit desormais la LARGEUR de la fenetre et non sa hauteur :
   remplace les trois tailles 10vh / 8vh / 7vh, qui tombaient a 33-47 px sur
   un portable. Mesure en simulation : 65 px a 1280x650, 70 a 1440x900,
   96 a 1920x1080, cartes toujours entre le titre et la frise. */
@media (min-width:1025px){
  .mtcp-icon{
    width: clamp(88px, 6.5vw, 128px);
    height: clamp(88px, 6.5vw, 128px);
  }
}

/* 5 · CARTES PHOTO · DESCRIPTION AFFICHEE EN PERMANENCE SUR ORDINATEUR
   Accueil (« Nos univers », .mtcs-grid) et page Cuisine (implantations,
   .mtc-svc-cartes) : meme etat que sur telephone, description ouverte et
   voile du telephone (.90 / .68 / .50). La bulle « Decouvrir » et le cadre
   restent au survol. Entre 1025 et 1279 px, la description des cinq cartes
   de l'accueil reste masquee par la regle v27.11 (elle ne tient pas dans une
   carte de 183 a 230 px). */
@media (min-width:1025px){
  .mtcs-grid .mtcs-card .mtcs-card-desc,
  .mtc-svc-cartes .mtcs-card .mtcs-card-desc{
    max-height: 220px; opacity: 1; transform: none; margin-top: 12px;
  }
  /* Page Cuisine : a 16 px, la description de « Petite cuisine » faisait
     6 lignes et sortait de la carte a 1280 px (15 px au-dessus du bord).
     Meme echelle que les cartes de l'accueil au-dela de 1366 px. */
  .mtc-svc-cartes .mtcs-card .mtcs-card-desc{
    font-size: clamp(.84rem, .75vw, .95rem); line-height: 1.45;
  }
  .mtcs-grid .mtcs-veil,
  .mtc-svc-cartes .mtcs-veil{
    background: linear-gradient(to top,rgba(10,9,8,.9) 0%,rgba(10,9,8,.68) 55%,rgba(10,9,8,.5) 100%);
  }
}

/* 6 · CONTACT · RECAPITULATIF SOUS 1024 PX : regle RETIREE en v27.11.14.
   Elle reaffichait le recapitulatif que mtcd.css masque sous 1024 px. Meme
   raison que D7 : l'affichage du module de demande appartient a l'extension
   mtc-demandes. A reprendre la-bas si le recapitulatif doit revenir. */

/* 8 · PRECEDENT / SUIVANT · LIBELLE COMPLET SUR TELEPHONE
   Blocksy masque le mot « Article » sous 690 px (posts-nav.min.css) : on
   lisait « precedent » seul. Le libelle est desormais le meme partout. */
@media (max-width:689.98px){
  nav.post-navigation .item-label span{ display: inline; }
}

/* 9 · ACCUEIL MOBILE · CADRAGE DE LA PHOTO DU HAUT
   Photo paysage (3:2) dans un cadre portrait : seule une bande verticale
   est visible. Centree sur la table, le bouquet et les suspensions ;
   le haut de l'arche en brique reste dans le cadre, ses deux piliers non. */
@media (max-width:1024px){
  .mtc-hero-static .mtc-static-media img{ object-position: 64% 50%; }
}

/* 10 · ACCUEIL MOBILE · PILIERS DU HAUT
   Un pilier par ligne, sans separateur : au retour a la ligne, les filets
   restaient en bout de ligne. */
@media (max-width:1024px){
  .mtc-hero-static .mtc-piliers{ flex-direction: column; gap: 12px; }
  .mtc-hero-static .mtc-pilier-sep{ display: none; }
}
/* PASSE v27.11.12 · fin */

/* =============================================================================
   PASSE v27.11.13 · AJUSTEMENTS APRES LA v27.11.12 · 22/09/2026 (rapport 215)
   ============================================================================= */

/* 1 · PRECEDENT / SUIVANT · EMPILES SUR TELEPHONE
   Sous 690 px (seuil de Blocksy), les deux liens passaient en deux colonnes
   de 79 px : un titre de fiche prenait 7 a 8 lignes. Un lien par ligne, pleine
   largeur : 2 a 3 lignes. Le filet vertical du milieu n'a plus de sens. */
@media (max-width:689.98px){
  nav.post-navigation{ grid-template-columns: minmax(0, 1fr); row-gap: 28px; }
  nav.post-navigation:after{ display: none; }
}

/* 2 · ACCUEIL MOBILE · AIR SOUS LES BOUTONS DU HAUT
   Depuis que les boutons precedent « Depuis 2012 », il n'y avait que 12 px
   entre eux. 34 px : le meme ecart qu'entre le sous-titre et les boutons. */
@media (max-width:1024px){
  .mtc-hero-static .mtc-static-cta-row{ margin-bottom: 34px; }
}
/* PASSE v27.11.13 · fin */

/* =============================================================================
   PASSE v27.11.14 · 22/09/2026 (rapport 219)
   Quatre sujets : voile du haut de l'accueil mobile, cartes a photo dominante
   (page Cuisine et A propos), page Contact preparee pour le deplacement des
   portraits, et retrait des deux regles qui visaient le module de demande
   (voir D7 et le point 6 de la passe v27.11.12, remplaces par une note).
   ============================================================================= */

/* 1 · ACCUEIL MOBILE · VOILE ALLEGE SUR LE HAUT DE PAGE
   Le voile de la v27.11.10 (.72 / .83 / .86) rendait la photo indechiffrable.
   Il descend de 25 % : .54 / .6225 / .645. A cette valeur, le dore de marque
   (#B8945F) tombe sous le seuil AA sur les trois textes dores du bloc. Ils
   passent donc a #E6D0AA, DANS CE BLOC SEULEMENT : le dore du reste du site
   n'est pas touche. Mesure pixel par pixel sur la photo servie, cadrage 64 %,
   390 x 844, ombres portees ignorees, seuil 4,5 (aucun de ces textes n'atteint
   24 px) : mention 6,39 · surtitre 6,39 · millesime 4,71 · titre 5,05 ·
   sous-titre 4,94. Tout passe, minimum 4,71.
   PALIER 480 PX, ET PAS 1024. Le hero statique sert du telephone a la
   tablette. Sur les largeurs de tablette, le surtitre se place plus haut, sur
   une zone claire de la photo : le voile allege l'y fait tomber sous 4,5 sur
   2 % de sa surface (il y est deja a 4,23 aujourd'hui, mesure a 768). Le voile
   allege s'arrete donc a 480 px, la ou la mesure passe partout : telephones
   servis (390, 430, 480 verifies), tablettes inchangees.
   Marge etroite : si la photo du haut change, la mesure est a refaire. */
@media (max-width:480px){
  .mtc-hero-static .mtc-static-veil{
    background: linear-gradient(180deg, rgba(10,9,8,.54) 0%, rgba(10,9,8,.6225) 40%, rgba(10,9,8,.645) 100%);
  }
  .mtc-hero-static .mtc-logo-mention,
  .mtc-hero-static .mtc-static-surtitre,
  .mtc-hero-static .mtc-millesime{
    color: #E6D0AA;
  }
}

/* 2 · CARTES A PHOTO · LA PHOTO PASSE DEVANT LE TEXTE
   Deux listes portent une photo dans une carte : « Le jour de la pose » sur
   la page Cuisine sur mesure (.mtc-svc-prix-liste) et les valeurs de la page
   A propos (.mtc-apr-garanties). La photo y etait plus petite que le bloc de
   texte : 199 x 133 px et 314 x 209 px a 1440.
   Deux leviers, aucun nouveau composant :
     a. la photo sort des rembourrages de la carte et touche ses deux bords ;
     b. le cadre passe du paysage 3/2 au portrait 4/5, format des photos
        d'origine (1025 x 1536) : plus de hauteur, et moins de rognage.
   Le selecteur :has() ne vise que les cartes QUI CONTIENNENT une photo : les
   cartes sans photo (« Ce qui fait le prix », Salle de bain, Dressing) ne
   bougent pas. Le grand cadre des implantations (.mtc-svc-impl-liste, 925 x
   617) n'est pas concerne : il n'est ni dans l'une ni dans l'autre liste. */
/* v27.13 (24/09/2026, rapport 246) : trois declarations RETIREES de cette
   regle — margin-left, margin-right et border-radius. Elles sont reprises par
   la regle unique .mtc-svc-impl-fig:first-child de la passe v27.13, qui traite
   les onze cartes a image en tete. Les laisser ici les aurait emporte par
   specificite : cette regle pese (0,3,1), la regle unique (0,1,1).
   Ce qui reste appartient toujours a cette passe-ci : la respiration sous
   l'image, la largeur automatique et le format portrait. */
.mtc-svc-prix-liste li:has(> .mtc-svc-impl-fig) > .mtc-svc-impl-fig{
  margin-bottom: clamp(20px, 2vw, 26px);
  width: auto;
  aspect-ratio: 4 / 5;
}
.mtc-apr-garanties > li > .mtc-svc-impl-fig{
  aspect-ratio: 4 / 5;
  margin-bottom: clamp(20px, 2vw, 26px);
}
/* Les valeurs passent a deux colonnes des 1200 px : la carte y fait 469 px de
   large et un portrait 4/5 monterait a 586 px de haut pour 77 px de texte.
   Le carre garde la photo dominante sans etirer la page. */
@media (max-width:1200px){
  .mtc-apr-garanties > li > .mtc-svc-impl-fig{ aspect-ratio: 1 / 1; }
}
/* Une colonne : la carte fait toute la largeur de l'ecran. Un portrait 4/5
   y ferait 448 px de haut sur un telephone de 390 px et repousserait le texte
   hors de l'ecran. Le paysage 3/2 reprend la main, la photo restant pleine
   largeur, donc toujours plus large que le texte. */
@media (max-width:600px){
  .mtc-svc-prix-liste li:has(> .mtc-svc-impl-fig) > .mtc-svc-impl-fig,
  .mtc-apr-garanties > li > .mtc-svc-impl-fig{
    aspect-ratio: 3 / 2;
  }
}

/* 3 · CONTACT · PREPARATION DU DEPLACEMENT DES PORTRAITS (pour PAGES)
   a. Quand le duo Mathieu / Thomas sera place dans le bloc de demande, il
      garde la largeur qu'il a en bas de page sous 1024 px : 34rem. Sans cela,
      deux portraits etires sur 1120 px ecrasent le formulaire.
   b. Quand le duo quitte le bas de page, la grille finale n'a plus qu'un
      element : elle passe d'elle-meme a une colonne, au lieu de laisser une
      colonne vide de 568 px a 1440.
   Les deux regles sont sans effet tant que le HTML n'a pas bouge. */
#rendez-vous .mtc-cnt-duo{ max-width: 34rem; }
.mtc-cnt-final-grille:has(> :only-child){ grid-template-columns: minmax(0, 1fr); }
/* PASSE v27.11.14 · fin */

/* =============================================================================
   PASSE v27.11.15 · 23/09/2026 (rapport 223)
   Matinee autonome : Contact prepare pour PAGES, variables du cadre dore
   disponibles hors des sections .mtc-svc, separateurs des piliers sur telephone,
   galerie de la categorie Realisations, diaporama des fiches.
   ============================================================================= */

/* 1 · CONTACT · LARGEUR DU DUO DANS LE BLOC DE DEMANDE
   La v27.11.14 bornait deja le duo a l'echelle de la rangee (#rendez-vous).
   PAGES posera les portraits DANS la section .mtc-cnt-demande : la regle est
   donc doublee a ce niveau, pour que le cadrage tienne quel que soit l'endroit
   exact du bloc ou le duo atterrit. 34rem = la largeur qu'il a deja en bas de
   page sous 1024 px, mesuree et validee. */
.mtc-cnt-demande .mtc-cnt-duo{ max-width: 34rem; }

/* 2 · CONTACT · GRILLE FINALE A UN SEUL ENFANT
   Deja posee en v27.11.14 :
     .mtc-cnt-final-grille:has(> :only-child){ grid-template-columns: minmax(0,1fr); }
   Rien a ajouter ici, la regle est conservee telle quelle. */

/* 3 · LE CADRE DORE HORS DES SECTIONS .mtc-svc
   figure.mtc-svc-impl-fig est utilisee sur l'accueil, dans .mtcw-savoir, qui
   n'est pas une section .mtc-svc. Ses deux equerres et son fond lisent des
   variables declarees uniquement sur .mtc-svc : hors de ces sections, les
   declarations sont invalides et le cadre ne se dessine pas (mesure : largeur
   de bordure 0 px sur l'accueil).
   Les quatre variables du cadre sont donc declarees a la racine, AVEC LES
   MEMES VALEURS que dans .mtc-svc. Dans une section .mtc-svc, la declaration
   locale continue de gagner : rien n'y change.
   Ne sont PAS remontees : --svc-d et --svc-ease, dont les valeurs de repli
   utilisees ailleurs dans le fichier different de celles de .mtc-svc (.28s
   contre .8s), et les couleurs de texte, pour la meme raison. */
:root{
  --svc-c-fort:      rgba(247,244,239,1);
  --svc-c-fort:      var(--mtc-blanc, #F7F4EF);

  --svc-filet-or:    rgba(184,148,95,.28);
  --svc-filet-or:    color-mix(in srgb, var(--mtc-dore, #B8945F) 28%, transparent);

  --svc-filet-clair: rgba(247,244,239,.13);
  --svc-filet-clair: color-mix(in srgb, var(--mtc-blanc, #F7F4EF) 13%, transparent);

  --svc-fond-carte:  rgba(255,255,255,.035);
}

/* 4 · PILIERS · SEPARATEURS SUR TELEPHONE
   La v27.11.12 empile les piliers et masque les filets dans le haut de page
   mobile (.mtc-hero-static, jusqu'a 1024 px). La meme bascule est posee ici
   pour TOUS les blocs .mtc-piliers, sous 690 px : le jour ou un pilier est
   ajoute ailleurs, ou ou le bloc de revelation de l'accueil est servi sur un
   telephone, les filets ne restent pas en bout de ligne. Preventif : aucun
   separateur n'est affiche aujourd'hui a 390 px hors du haut de page. */
@media (max-width:689.98px){
  .mtc-piliers{ flex-direction: column; gap: 12px; }
  .mtc-pilier-sep{ display: none; }
}

/* 5 · GALERIE DE LA CATEGORIE REALISATIONS
   Le balisage est pose par l'extrait WPCode « [MTC] Galerie · categorie
   Realisations », en brouillon. Le defilement automatique est dans site.js.
   Sans JS, la bande reste une liste qui se fait glisser au doigt ou a la
   souris : rien ne depend du script. */
.mtc-galcat{
  margin: clamp(26px, 3.4vw, 44px) 0 clamp(34px, 4vw, 54px);
}
.mtc-galcat-piste{
  list-style: none; margin: 0; padding: 0 0 6px;
  display: flex; gap: clamp(10px, 1.2vw, 18px);
  overflow-x: auto; scroll-behavior: auto;
  scrollbar-width: none; -ms-overflow-style: none;
  overscroll-behavior-x: contain;
}
.mtc-galcat-piste::-webkit-scrollbar{ display: none; }
.mtc-galcat-item{
  flex: 0 0 auto;
  /* 240 px au plancher : sous cette largeur, le bouton « Decouvrir le projet »
     passe sur deux lignes (mesure a 1024 px avec un plancher a 212 px). */
  width: clamp(240px, 22vw, 320px);
}
.mtc-galcat-lien{
  position: relative; display: block; overflow: hidden;
  border: 1px solid var(--svc-filet-or, rgba(184,148,95,.28));
  border-radius: 4px; text-decoration: none; line-height: 0;
  transition: border-color .45s ease, transform .45s cubic-bezier(.2,.7,.3,1);
}
.mtc-galcat-lien img{
  display: block; width: 100%; height: 100%;
  aspect-ratio: 4 / 5; object-fit: cover;
  transition: transform 1.1s cubic-bezier(.2,.7,.3,1);
}
.mtc-galcat-fond{
  position: absolute; inset: 0; pointer-events: none;
  background: linear-gradient(to top, rgba(10,9,8,.86) 0%, rgba(10,9,8,.45) 46%, rgba(10,9,8,.06) 100%);
}
.mtc-galcat-txt{
  position: absolute; inset: auto 0 0 0;
  display: flex; flex-direction: column; align-items: flex-start; gap: 10px;
  padding: clamp(14px, 1.4vw, 20px);
}
.mtc-galcat-titre{
  color: var(--mtc-blanc, #F7F4EF);
  font-size: clamp(.92rem, 1vw, 1.02rem); line-height: 1.3;
  display: -webkit-box; -webkit-line-clamp: 2; -webkit-box-orient: vertical;
  overflow: hidden;
}
.mtc-galcat-bouton{
  display: inline-flex; align-items: center; gap: 8px;
  padding: 7px 12px; border-radius: 2px;
  border: 1px solid var(--mtc-dore, #B8945F);
  color: var(--mtc-dore, #B8945F);
  font-size: .76rem; letter-spacing: .08em; text-transform: uppercase;
  line-height: 1.2;
  transition: background-color .4s ease, color .4s ease;
}
.mtc-galcat-lien:hover{ border-color: var(--mtc-dore, #B8945F); }
.mtc-galcat-lien:hover img{ transform: scale(1.05); }
.mtc-galcat-lien:hover .mtc-galcat-bouton{
  background: var(--mtc-dore, #B8945F);
  color: var(--mtc-noir-profond, #0D0D0D);
}
.mtc-galcat-lien:focus-visible{
  outline: 2px solid var(--mtc-dore, #B8945F); outline-offset: 3px;
}
@media (max-width:689.98px){
  .mtc-galcat-item{ width: 72vw; max-width: 300px; }
}
@media (prefers-reduced-motion: reduce){
  .mtc-galcat-lien img{ transition: none; }
}

/* 6 · DIAPORAMA DES FICHES
   La bande de vignettes existante (.mtc-art-strip-liste) reste le balisage
   servi : site.js ajoute au-dessus d'elle une image large. La vignette
   choisit la photo, l'image large ouvre le visionneur plein ecran. Sans JS,
   la bande de vignettes fonctionne comme avant : rien n'est retire. */
.mtc-art-diapo{
  margin: 0 0 clamp(12px, 1.4vw, 18px);
}
.mtc-art-diapo-scene{
  position: relative; display: block; width: 100%;
  margin: 0; padding: 0; border: 0; background: none;
  cursor: zoom-in; line-height: 0;
}
.mtc-art-diapo-scene img{
  display: block; width: 100%;
  aspect-ratio: 3 / 2; object-fit: cover;
  /* Plafond de hauteur : a 1440 px la bande fait 1 254 px de large, et un
     cadre 3/2 monterait a 836 px, plus haut que l'ecran. Mesure apres
     plafond : 1 254 x 558 a 1440 x 900. */
  /* v27.15 · ce plafond est desormais pose par la passe v27.15, qui rend la
     hauteur DETERMINEE. Le laisser ici le ferait rogner l'image : un plafond
     de hauteur sur une boite dont la hauteur est explicite casse le rapport. */
  max-height: clamp(320px, 62vh, 560px);
  border-radius: 4px;
  border: 1px solid var(--svc-filet-or, rgba(184,148,95,.28));
  transition: border-color .45s ease, opacity .45s ease;
}
.mtc-art-diapo-scene:hover img{ border-color: var(--mtc-dore, #B8945F); }
.mtc-art-diapo-scene:focus-visible{
  outline: 2px solid var(--mtc-dore, #B8945F); outline-offset: 4px;
}
.mtc-art-diapo.est-en-transition .mtc-art-diapo-scene img{ opacity: .35; }
.mtc-art-diapo-legende{
  margin: clamp(10px, 1.2vw, 14px) 0 0;
  color: var(--svc-c-texte-2, rgba(247,244,239,.58));
  font-size: clamp(.82rem, .92vw, .9rem); line-height: 1.5;
}
/* La bande passe sous l'image large : des vignettes plus petites, une seule
   ligne qui defile quand il y a beaucoup de photos. */
.mtc-art-strip.est-diapo .mtc-art-strip-liste{
  grid-template-columns: repeat(auto-fill, minmax(clamp(64px, 8vw, 96px), 1fr));
}
@media (max-width:689.98px){
  .mtc-art-diapo-scene img{ aspect-ratio: 4 / 3; }
  .mtc-art-strip.est-diapo .mtc-art-strip-liste{
    grid-template-columns: repeat(auto-fill, minmax(62px, 1fr));
  }
}
@media (prefers-reduced-motion: reduce){
  .mtc-art-diapo-scene img{ transition: none; }
  .mtc-art-diapo.est-en-transition .mtc-art-diapo-scene img{ opacity: 1; }
}
/* PASSE v27.11.15 · fin */

/* =============================================================================
   PASSE v27.11.17 · 23/09/2026 (rapport 225, fusion rapport 227)
   CONTACT · les portraits passent a cote du chapeau au-dela de 1200 px
   -----------------------------------------------------------------------------
   FUSION. Ce bloc est arrive en fragment separe, ecrit par le cowork PAGES et
   numerote v27.11.16 ; il portait le meme numero que le bloc du module de prix
   deja present plus haut. Il est renumerote v27.11.17 ici, et v27.11.17 devient
   le numero du fichier. Seules ces deux lignes de numero et ce paragraphe ont
   change : le reste du fragment est repris octet pour octet.
   Fragment d'origine : site-css-passe-v27-11-16.css, 4 085 octets,
   MD5 faa8c15b8d75a915d9148bef8e9bf8ce,
   SHA-1 54238dfb617d1d86dbb68c925a7a31ef1a2a18bb, empreintes verifiees.

   POURQUOI
   Les portraits de Mathieu et Thomas ont ete remontes dans la section
   .mtc-cnt-demande le 23/09 (rapport 224). Poses AU-DESSUS du module de
   demande, ils reportaient le haut du formulaire a 779 px. Sur un portable en
   1440 x 768, tres courant, le formulaire passait donc sous la ligne de
   flottaison : mesure faite, 779 > 768.

   CE QUE FAIT LA REGLE
   Au-dela de 1200 px, la section devient une grille de deux colonnes. Le filet,
   le surtitre, le titre et le chapeau restent en colonne 1, les portraits
   passent en colonne 2 et couvrent les quatre rangees. La hauteur de la section
   n'est plus la somme du texte et des portraits mais le plus grand des deux.
   Sous 1200 px, rien ne change : la regle vit entierement dans la requete, la
   section reste en flux normal et le duo garde le max-width de 34rem pose en
   v27.11.15.

   LES TROIS VALEURS, ET POURQUOI CELLES-LA
   - 1200 px : point de rupture choisi parce que c'est la largeur a partir de
     laquelle la colonne de texte garde une longueur de ligne confortable une
     fois 25rem preleves a droite. Mesure a 1200 px : 697 px pour le texte.
     Le fichier utilise deja 1024 px et 600 px comme charnieres ; 1200 px est
     une quatrieme valeur, assumee, propre a cette seule section.
   - 25rem (400 px) pour la colonne des portraits : c'est la plus large des
     valeurs testees qui laisse le titre h2 sur une seule ligne a 1440 px.
     A 26rem il passe a deux lignes. Mesure : 23rem -> 491 px de haut de
     formulaire, 24rem -> 471, 25rem -> 478, 26rem -> 485 avec titre sur deux
     lignes.
   - grid-row: 1 / span 4 : la colonne de gauche compte exactement quatre
     elements (filet, surtitre, titre, chapeau). Si un cinquieme est ajoute un
     jour dans cette section, il faut passer le span a 5.
     grid-template-rows se termine par 1fr pour que le surplus de hauteur des
     portraits aille dans la derniere rangee, celle du chapeau, et non reparti
     entre le titre et le surtitre : sans cette ligne, l'interlettrage vertical
     de l'en-tete se dilatait.

   MESURES, HAUT DU FORMULAIRE
   Protocole : rangee #rendez-vous calee a 90 px du haut de la fenetre, comme
   apres un clic sur un bouton « Demander un rendez-vous ».

     1440 x 768   779 px  ->  478 px   (etait sous le pli, ne l'est plus)
     1440 x 900   779 px  ->  478 px
     1280 x 800   768 px  ->  477 px
     1200 x 800   ---     ->  477 px
     1199 x 800   763 px  ->  763 px   (inchange, hors requete)
      390 x 844   736 px  ->  736 px   (inchange)

   Aucun debordement horizontal constate : document a 1425 px pour 1440 de
   fenetre, 1185 pour 1200, 390 pour 390.
   ============================================================================= */

@media (min-width: 1200px){

  .mtc-cnt-demande{
    display: grid;
    grid-template-columns: minmax(0, 1fr) 25rem;
    grid-template-rows: auto auto auto 1fr;
    column-gap: clamp(2.5rem, 4vw, 4.5rem);
    align-items: start;
  }

  /* La colonne de gauche, dans l'ordre du document. */
  .mtc-cnt-demande > .mtc-svc-filet,
  .mtc-cnt-demande > .mtc-svc-eyebrow,
  .mtc-cnt-demande > .mtc-svc-h2,
  .mtc-cnt-demande > .mtc-cnt-texte{
    grid-column: 1;
  }

  /* Les portraits, a droite, sur toute la hauteur de l'en-tete.
     max-width est neutralise ici : la largeur vient de la colonne, la borne de
     34rem de la v27.11.15 reste en service partout ailleurs. */
  .mtc-cnt-demande > .mtc-cnt-duo{
    grid-column: 2;
    grid-row: 1 / span 4;
    align-self: start;
    max-width: none;
    margin-top: 0;
  }
}

/* PASSE v27.11.17 · fin */


/* =============================================================================
   PASSE v27.11.18 · 23/09/2026 · TRANSITIONS DE L'ACCUEIL SUR TELEPHONE
   -----------------------------------------------------------------------------
   Retour client du 23/09 : « sur mobile il y a des transitions pas tres sexy,
   un peu brutes. Et noir. » Diagnostic complet : rapport 229.

   Deux causes mesurees, deux leviers CSS ici, trois leviers dans site.js.

   LEVIER 1 · le fondu passe de 0,8 s a 0,35 s et le decalage d'entree de 22 a
   30 px a 10 px, sous 900 px seulement. Sur un telephone lance a 3 000 px par
   seconde, 0,8 s valent 2 400 px de defilement : le contenu traverse l'ecran
   avant d'avoir fini d'apparaitre. C'est ca, le noir.
   On ne touche QUE transition-duration et transform : les courbes d'assouplis-
   sement d'origine sont conservees telles quelles.

   LEVIER 4 · la respiration verticale des sections est resserree sous 600 px.
   Mesure du 23/09 a 390 px : 348 a 380 px de fond noir entre le dernier
   contenu d'une section et le premier de la suivante, soit 41 a 45 % de
   l'ecran, animation ou pas. Cible : 200 a 220 px.

   LEVIER 6 · scroll-behavior:smooth est neutralise sous 900 px. Sur un long
   saut d'ancre depuis un telephone, le defilement rampe.

   AUCUN EFFET AU-DESSUS DE 900 px. Tout ce bloc est dans des requetes
   @media (max-width: 900px) et @media (max-width: 600px). Verifie par mesure
   a 1440 px avant et apres : voir le rapport.

   CE QUI N'EST PAS TOUCHE ICI : les pages services (.mtc-svc [data-mtcsvc])
   portent le meme defaut et attendent leur propre passe, mesuree a part. Le
   module de prix de l'accueil appartient au cowork PRIX depuis le 24/09 : tout
   son style vit dans son extrait, ce fichier n'en porte plus une seule regle.
   ============================================================================= */

/* --- LEVIER 1 · fondu court et decalage court sous 900 px ------------------- */
@media (max-width: 900px){

  .mtcs-head,
  .mtcs-card,
  .mtcsh-media,
  .mtcsh-showroom [data-mtcsh="t"],
  .mtcr-head,
  .realmt.wp-block-latest-posts > li,
  .mtcr-cta-row,
  .mtcp-step,
  .mtca-photo,
  .mtcb-reassurance [data-mtcb],
  .mtcw-savoir [data-mtcw],
  .mtcl-marques [data-mtcl],
  [data-mtcf]{
    transform: translateY(10px);
    transition-duration: .35s, .35s;
  }

  /* la regle d'origine de .mtca-content [data-mtca] est en !important :
     on la suit, sinon l'ecriture ne passerait pas. */
  .mtca-content [data-mtca]{
    transform: translateY(10px) !important;
    transition-duration: .35s, .35s;
  }

  /* LEVIER 6 · plus de defilement lisse sur telephone */
  html{ scroll-behavior: auto; }
}

/* --- LEVIER 4 · respiration resserree sous 600 px -------------------------- */
@media (max-width: 600px){

  /* sections a defilement, rembourrage d'origine clamp(60px,9vh,110px) */
  .mtcs-univers,
  .mtcsh-showroom,
  .mtcr-real,
  .mtcp-process,
  .mtca-intro-sec{ padding: clamp(34px,4.6vh,56px) 0; }

  /* sections plates, rembourrage d'origine clamp(70px,10vh,130px) */
  .mtcb-reassurance,
  .mtcw-savoir{ padding: clamp(38px,5vh,62px) 0; }

  /* bande partenaires, rembourrage d'origine clamp(60px,8vh,110px) */
  .mtcl-marques{ padding: clamp(34px,4.6vh,56px) 0; }

  /* appel final, rembourrage d'origine clamp(70px,12vh,140px) */
  .mtcf-cta{ padding: clamp(42px,5.6vh,70px) 0; }

  /* chapeaux de section : la marge basse suit le meme resserrement */
  .mtcs-head{ margin-bottom: clamp(24px,3.2vw,38px); }
  .mtcr-head{ margin-bottom: clamp(22px,3vw,34px); }
}
/* PASSE v27.11.18 · fin */

/* =============================================================================
   PASSE v27.12 · 24/09/2026 · LOT DE SEIZE POINTS DU RETOUR CLIENT
   -----------------------------------------------------------------------------
   Source : retour client du 24/09, seize points, traites d'affilee.
   Rapport : 242-lot-seize-points-retour-client.md

   PERIMETRE. Ce bloc ne touche ni le balisage, ni les fiches, ni le module de
   prix de l'accueil (extrait 1246, propriete du cowork PRIX depuis le 24/09),
   ni les classes .mtcd- du formulaire (extension mtc-demandes).

   Les points 4, 5, 6, 7, 8 et 14 ont une part JS : elle vit dans site.js, meme
   numero de version.
   ============================================================================= */


/* -----------------------------------------------------------------------------
   P1 · ACCUEIL, « Qui sommes-nous » : les portraits disparaissaient sur telephone
   -----------------------------------------------------------------------------
   CAUSE, mesuree a 390 px. .mtca-media est une case de grille. La requete des
   960 px lui pose margin:0 auto pour le centrer ; des marges automatiques sur
   une case de grille annulent justify-self:stretch, et la largeur de la case
   n'est plus celle de la colonne mais celle de son contenu. Sous 640 px, ses
   trois enfants .mtca-photo sont en width:100%!important : un pourcentage
   calcule sur une largeur qui depend elle-meme du contenu. Le cycle se resout
   a zero. Mesure avant : .mtca-media 0 px de large, les trois photos 0 x 0.

   CORRECTIF. Une largeur definie, et rien d'autre. max-width:340px continue de
   borner, margin:0 auto continue de centrer.
   Mesure apres, 390 px : .mtca-media 340 x 803, photos 340 x 300, 340 x 310,
   340 x 153.
   ----------------------------------------------------------------------------- */
@media (max-width: 640px){
  .mtca-media{ width: 100%; }
}


/* -----------------------------------------------------------------------------
   P2 · ACCUEIL, « Qui sommes-nous » : le troisieme portrait n'avait pas de regle
   -----------------------------------------------------------------------------
   CONSTAT. Le balisage porte trois .mtca-photo. Le fichier n'ecrivait que
   .mtca-photo-1 et .mtca-photo-2. La troisieme heritait de .mtca-photo
   (position:absolute) sans inset, sans largeur et sans plan : 0 x 0 a 1920.

   COMPOSITION RETENUE, trois plans en cascade descendante. Mesures a 1920,
   colonne de 740 x 940, coordonnees prises dans le coin haut gauche de la
   colonne, rotation d'origine comprise :
     photo 1  en flux, en haut a gauche, 64 %   436 x 387 de (10, 24) a (446, 411)
     photo 3  absolue, a 46 % du haut,   58 %   429 x 198 de ( 0,432) a (429, 630)
     photo 2  absolue, en bas a droite,  50 %   378 x 347 de (366,598) a (744, 944)
   AUCUNE LEGENDE RECOUVERTE, c'est la contrainte qui a fixe les valeurs. La
   photo 1 se termine a 411, la photo 3 commence a 432 : 21 px d'ecart franc.
   La photo 3 et la photo 2 se chevauchent sur 63 px de large et 32 px de haut,
   dans un coin ou la photo 2 ne porte que de l'image ; la photo 3 est au plan
   3, sa legende passe DEVANT. La legende de la photo 2 est en bas de la photo
   2, a 840, hors de toute zone de recouvrement.

   HAUTEUR DE COLONNE. La colonne de texte mesure 939 px a 1920. Une colonne
   photo en flux ne faisait que 529 px : l'ecart se voyait. aspect-ratio 74/94
   donne 740 x 940 a 1920, soit 1 px d'ecart avec le texte. La valeur suit la
   largeur : elle ne se deregle pas au changement de fenetre.

   CADRE DORE. NON RETENU. Le cadre existant (.mtca-media-frame) est un filet
   blanc a 35 % pose a l'interieur de la photo 2, il fait partie du dessin
   d'origine. Ajouter un second cadre dore sur la photo 3 aurait mis trois
   traitements differents dans le meme bloc. La photo 3 reprend donc le meme
   filet blanc que la photo 2, par coherence.

   Sous 961 px, rien de tout cela ne s'applique : les photos sont deja empilees.
   ----------------------------------------------------------------------------- */
@media (min-width: 961px){
  .mtca-media{
    aspect-ratio: 74 / 94;
    padding: 4% 8% 0 2%;
  }
  .mtca-photo-1{ width: 64%; }
  .mtca-photo-2{
    top: auto; bottom: 0; right: 0;
    width: 50%;
  }
  .mtca-photo-3{
    left: 0; top: 46%; bottom: auto; right: auto;
    width: 58%;
    z-index: 3;
  }
  /* Le meme filet que la photo 2, pose en pseudo-element : le balisage de la
     photo 3 ne porte pas de .mtca-media-frame et on n'y touche pas. */
  .mtca-photo-3::after{
    content: ""; position: absolute; inset: 12px;
    border: 1px solid rgba(247,244,239,.35);
    border-radius: 4px; pointer-events: none; z-index: 4;
  }
  .mtca-photo-3{ border: 4px solid rgba(20,18,16,1); }
}


/* -----------------------------------------------------------------------------
   P3 · ACCUEIL, « Qui sommes-nous » : la hauteur de la zone ne suivait pas
   -----------------------------------------------------------------------------
   CAUSE. .mtca-scroll etait a height:180vh. La zone porte une section collante
   qui, elle, est dimensionnee par son contenu : le debattement disponible pour
   l'animation valait 180vh moins cette hauteur, donc 788 px a 1080 de haut,
   500 px a 900, 1 272 px a 1440. Trois vitesses differentes pour la meme
   animation, et un risque de debattement nul sur un ecran bas.

   CORRECTIF. La hauteur devient celle du contenu, plus un debattement borne.
   La section collante garde exactement ce debattement, quelle que soit la
   hauteur d'ecran, et la zone grandit si le contenu grandit.

   site.js n'est pas touche : computeP lit scrollZone.offsetHeight moins la
   hauteur de fenetre. Toute hauteur superieure a la fenetre lui convient.

   MESURES en ligne (zone / section / debattement), a 1920 de large :
     1920 x  900   avant 1 620 / 1 120 /   500   apres 1 750 / 1 120 /   630
     1920 x 1080   avant 1 944 / 1 156 /   788   apres 1 912 / 1 156 /   756
     1920 x 1440   avant 2 592 / 1 320 / 1 272   apres 2 080 / 1 320 /   760
   Le debattement passe de 500-1 272 px selon l'ecran a 630-760 px : la meme
   animation se joue desormais a peu pres a la meme vitesse partout. Et la
   hauteur de zone suit bien la section, qui grandit avec son contenu quand
   l'ecran change (1 120, 1 156, 1 320).
   ----------------------------------------------------------------------------- */
@media (min-width: 961px){
  .mtca-scroll{
    height: auto;
    padding-bottom: clamp(420px, 70vh, 760px);
  }
}
@media (max-width: 960px){
  .mtca-scroll{ padding-bottom: 0; }
}


/* -----------------------------------------------------------------------------
   P6 · FICHES : la bande de vignettes tenait sur plusieurs rangees
   -----------------------------------------------------------------------------
   CAUSE. repeat(auto-fill, minmax(...)) fixe le nombre de colonnes a partir de
   la largeur disponible, jamais du nombre de photos. Mesure sur une fiche a
   deux photos, a 1920 : 14 colonnes pour 2 vignettes. Sur une fiche a vingt
   photos, retour a la ligne.

   CORRECTIF. Le nombre de colonnes vient du nombre reel de photos, ecrit par
   site.js dans --mtc-strip-n. Une seule rangee, quel que soit le compte.
   Les bornes de largeur d'origine sont conservees telles quelles (84 a 128 px
   hors diaporama, 64 a 96 px sous le diaporama, 62 px sous 690 px) : sans
   elles, une fiche a deux photos donnerait deux vignettes de 772 px, plus
   larges que la moitie de l'image principale. Seul le NOMBRE de colonnes
   change, jamais leur taille. La bande reste calee a gauche.
   Au-dela du plafond (8 au-dessus de 1024 px, 6 entre 690 et 1024, 4 en
   dessous), site.js masque le surplus et assombrit la derniere vignette
   visible, qui porte alors le compte restant et ouvre le visionneur.

   Le repli sans JS reste la regle d'origine : la nouvelle valeur ne s'applique
   que sur .est-comptee, classe posee par site.js en meme temps que le compte.
   Sans JS, la grille est exactement celle d'avant.
   ----------------------------------------------------------------------------- */
.mtc-art-strip-liste.est-comptee{
  grid-template-columns: repeat(var(--mtc-strip-n), minmax(0, clamp(84px, 11vw, 128px)));
  justify-content: center;   /* v27.22 (L35) : la rangee se centre, elle ne s'etire plus ; etait start */
}
.mtc-art-strip.est-diapo .mtc-art-strip-liste.est-comptee{
  grid-template-columns: repeat(var(--mtc-strip-n), minmax(0, clamp(64px, 8vw, 96px)));
}
@media (max-width:689.98px){
  .mtc-art-strip.est-diapo .mtc-art-strip-liste.est-comptee{
    grid-template-columns: repeat(var(--mtc-strip-n), minmax(0, 62px));
  }
}
/* .mtc-art-vignette est declaree display:block dans la SECTION 5 : une regle
   d'auteur l'emporte sur le display:none que le navigateur applique a
   l'attribut hidden. Sans cette ligne, les vignettes masquees par site.js
   restaient dans la grille et la bande gardait deux rangees. Mesure : 12
   photos, plafond a 8, bande de 206 px sur deux rangees avant, 96 px sur une
   rangee apres. */
.mtc-art-vignette[hidden]{ display: none; }

/* La derniere vignette visible quand il reste des photos derriere. */
.mtc-art-vignette-plus{ position: relative; }
.mtc-art-vignette-plus img{ opacity: .38; }
.mtc-art-vignette-plus:hover img,
.mtc-art-vignette-plus.est-actif img{ opacity: .5; }
.mtc-art-vignette-compte{
  position: absolute; inset: 0; z-index: 2;
  display: flex; align-items: center; justify-content: center;
  color: var(--mtc-blanc, #F7F4EF);
  font-size: clamp(.78rem, 1.1vw, .92rem); line-height: 1;
  letter-spacing: .04em;
  background: rgba(10,9,8,.42);
  pointer-events: none;
}


/* -----------------------------------------------------------------------------
   P7 · FICHES : le diaporama n'avait pas de fleches
   -----------------------------------------------------------------------------
   Les autres carrousels du site en ont deja : avis de l'accueil et des pages
   services (.mtca-arrow), visionneur plein ecran (.mtc-art-visio-prec/-suiv).
   Manquaient le diaporama des fiches et la bande de la categorie Realisations
   (P8 ci-dessous). Les boutons sont de vrais <button>, dans le flux du
   document, donc atteignables a la tabulation sans entrer dans le carrousel.
   Ils reprennent .mtca-arrow, deja stylee par le socle.
   ----------------------------------------------------------------------------- */
.mtc-art-diapo{ position: relative; }
.mtc-art-diapo-nav{
  position: absolute; z-index: 3; top: 50%;
  /* v27.16 (point 2) · translate, pas transform : voir la note du visionneur. */
  translate: 0 -50%;
}
.mtc-art-diapo-prec{ left: clamp(8px, 1.4vw, 20px); }
.mtc-art-diapo-suiv{ right: clamp(8px, 1.4vw, 20px); }
.mtc-art-diapo-nav[disabled]{ opacity: .3; cursor: default; }
@media (max-width:689.98px){
  .mtc-art-diapo-prec{ left: 6px; }
  .mtc-art-diapo-suiv{ right: 6px; }
}


/* -----------------------------------------------------------------------------
   P8 · CATEGORIE REALISATIONS : la bande devient un carrousel en fondu
   -----------------------------------------------------------------------------
   AVANT. Une piste en defilement continu, 21 projets plus 21 copies, visuels de
   320 x 400, 4,7 projets visibles a 1920, aucune fleche, aucun arret franc.

   APRES. Trois projets par vue au-dessus de 1024 px, deux entre 690 et 1024, un
   en dessous. Les vues se remplacent en fondu, de gauche a droite : chaque
   colonne part 90 ms apres la precedente. Deux fleches, toujours visibles, et
   un compteur. Le clic mene toujours a la fiche.

   MESURES a 1920 : visuel 521 x 651 contre 320 x 400 avant, soit +63 % de
   largeur. Densite d'image : 768 px de fichier pour 521 px d'affichage, 1,47.

   Sans JS, la piste reste une liste qui se fait glisser : .mtc-galcat-piste
   garde son overflow-x et ses proprietes de flex tant que site.js n'a pas pose
   .est-carrousel.
   ----------------------------------------------------------------------------- */
.mtc-galcat{ position: relative; }

.mtc-galcat-piste.est-carrousel{
  display: grid;
  grid-template-columns: repeat(var(--galcat-n, 3), minmax(0, 1fr));
  overflow: hidden;
  padding-bottom: 0;
}
.mtc-galcat-piste.est-carrousel > .mtc-galcat-item{
  grid-row: 1;
  /* La largeur vient de la colonne. max-width est neutralise ici : la borne de
     300 px posee sous 690 px pour la piste qui defilait bridait la colonne a
     300 px pour 343 px disponibles a 390. */
  width: auto;
  max-width: none;
  opacity: 0;
  visibility: hidden;
  transition: opacity .75s ease, visibility 0s linear .75s;
}
.mtc-galcat-piste.est-carrousel > .mtc-galcat-item.est-visible{
  opacity: 1;
  visibility: visible;
  transition: opacity .75s ease var(--galcat-retard, 0ms), visibility 0s linear 0s;
}

.mtc-galcat-nav{
  position: absolute; z-index: 4; top: 50%;
  /* v27.16 (point 2) · translate, pas transform : voir la note du visionneur. */
  translate: 0 -50%;
}
.mtc-galcat-prec{ left: clamp(-22px, -1.2vw, -8px); }
.mtc-galcat-suiv{ right: clamp(-22px, -1.2vw, -8px); }

.mtc-galcat-compteur{
  margin: clamp(14px, 1.6vw, 20px) 0 0;
  text-align: center;
  color: var(--svc-c-texte-2, rgba(247,244,239,.58));
  font-size: .8rem; letter-spacing: .08em;
}
.mtc-galcat-compteur b{ color: var(--mtc-dore, #B8945F); font-weight: 400; }

@media (max-width:1024px){
  .mtc-galcat-prec{ left: 2px; }
  .mtc-galcat-suiv{ right: 2px; }
}
/* Sous 690 px il n'y a plus qu'un projet par vue, sur toute la largeur. Un
   cadre 4/5 ferait alors 343 x 428, soit la moitie d'un ecran de telephone, et
   surtout : les photographies etant en paysage, couvrir un cadre de 428 px de
   haut demanderait une source de 950 px de large. En 4/3 le cadre fait
   343 x 257 et la source demandee tombe a 571 px. Moitie moins de poids sur
   reseau mobile, pour une vignette qui se lit aussi bien. */
@media (max-width:689.98px){
  .mtc-galcat-piste.est-carrousel .mtc-galcat-lien img{ aspect-ratio: 4 / 3; }
}
@media (prefers-reduced-motion: reduce){
  .mtc-galcat-piste.est-carrousel > .mtc-galcat-item,
  .mtc-galcat-piste.est-carrousel > .mtc-galcat-item.est-visible{
    transition: none;
  }
}


/* -----------------------------------------------------------------------------
   P9 · FICHES : le texte d'un bloc seul ne se recentrait pas
   -----------------------------------------------------------------------------
   CAUSE. .mtc-art-bloc-solo fait bien retomber la grille sur une colonne, et
   .mtc-art-bloc-txt garde sa mesure de lecture (max-width 772,8 px). Mais la
   case fait 1 558 px a 1920 : le texte restait cale a gauche, 785 px de vide a
   droite. La classe etait la, son style manquait.

   CORRECTIF. Une marge automatique de chaque cote. Le texte garde sa mesure et
   son alignement a gauche : seule la colonne se centre.
   Mesure a 1920, 12 fiches, 19 blocs concernes : avant, texte a 0 px du bord
   gauche ; apres, a 392 px.
   ----------------------------------------------------------------------------- */
.mtc-art-bloc-solo .mtc-art-bloc-txt{
  margin-inline: auto;
}


/* -----------------------------------------------------------------------------
   P11 · ACCUEIL, savoir-faire : trois colonnes et un vrai filet
   -----------------------------------------------------------------------------
   CAUSE. .mtcw-cols etait fige a 1fr 1fr. Le balisage porte trois .mtcw-col :
   la troisieme passait seule sur une deuxieme rangee, 530 px de contenu pour
   1 132 px de bande.

   CORRECTIF. Trois colonnes au-dessus de 1024 px. Sous ce palier, la regle
   d'origine (une colonne sous 860 px) continue de s'appliquer ; entre 861 et
   1024 px la bande reste a deux colonnes, la troisieme dessous : a 1024 px
   trois colonnes donneraient 300 px de texte, une longueur de ligne trop
   courte pour des paragraphes.

   LE FILET. Un trait de 1 px, dans l'esprit de .mtc-pilier-sep (meme encre,
   rgba(184,148,95,.4)), pose au milieu de la gouttiere par un pseudo-element
   et non par une case de grille peinte. Il se dissipe en haut et en bas pour
   ne pas boucher la composition.
   ----------------------------------------------------------------------------- */
@media (min-width: 1025px){
  .mtcw-cols{ grid-template-columns: repeat(3, minmax(0, 1fr)); }
  .mtcw-col{ position: relative; }
  .mtcw-col + .mtcw-col::before{
    content: ""; position: absolute;
    top: 0; bottom: 0;
    left: calc(clamp(34px, 5vw, 72px) / -2);
    width: 1px;
    background: linear-gradient(
      to bottom,
      rgba(184,148,95,0) 0%,
      rgba(184,148,95,.4) 12%,
      rgba(184,148,95,.4) 88%,
      rgba(184,148,95,0) 100%);
    pointer-events: none;
  }
}


/* -----------------------------------------------------------------------------
   P12 · ACCUEIL, « Nos univers » : le voile de repos portait les valeurs du survol
   -----------------------------------------------------------------------------
   CAUSE, relevee rule par rule dans le navigateur de controle. DEUX regles,
   pas une, posent au repos le degrade du survol, rgba(10,9,8,.9) / .68 / .5 :
     - @media (min-width:1025px){ .mtcs-grid .mtcs-veil, .mtc-svc-cartes
       .mtcs-veil } — c'est celle qui s'applique sur un ordinateur ;
     - @media (hover:none),(max-width:1024px){ .mtcs-grid .mtcs-veil } — celle
       qui s'applique au doigt et sous 1024 px.
   Le degrade de repos ecrit dans le socle (.72 / .28 / .12) n'atteignait donc
   jamais la bande des univers, a aucune largeur.

   CORRECTIF. Deux regles portees par l'identifiant de la section, sans requete
   de media : le repos a .85 / .5 / .3, la valeur demandee, et le survol
   maintenu a .9 / .68 / .5. L'identifiant est necessaire : une regle de meme
   specificite que les deux ci-dessus laisserait l'ordre de source decider, et
   la bande des pages services (.mtc-svc-cartes) n'est pas concernee par ce
   point, elle ne doit pas bouger.

   CONTRASTE DU TEXTE. Calcul sur .mtcs-card-title, blanc pur #FFFFFF, au bas
   de la carte, la ou se trouve la legende et ou le voile est le plus dense.
   Cas le plus defavorable retenu : une photographie entierement blanche sous
   le voile, ce qui donne le fond composite le plus clair possible.
     avant  #0A0908 a 90 % sur blanc  ->  #232221  contraste 16,0:1
     apres  #0A0908 a 85 % sur blanc  ->  #2F2E2D  contraste 14,1:1
   Sur une photographie reelle, plus sombre que du blanc, les deux valeurs sont
   plus elevees encore. Le seuil AA est 4,5:1 : la lisibilite n'est pas
   entamee, la photographie respire.

   CARTES A 4/5. Alignement sur .mtc-svc-cartes des pages services, qui portent
   deja aspect-ratio 4/5. Au-dessus de 1025 px seulement : entre 901 et 1024 px
   la bande a cinq cartes a ses propres proportions (3/2), reglees en v27.11.2,
   et on n'y touche pas.
   Mesure a 1920 : carte 284 x 284 avant, 284 x 355 apres.

   LA CASCADE. Le decalage vertical est retire dans site.js : les cartes
   n'arrivent plus par en dessous, elles se revelent en opacite, decalees dans
   le temps. Voir P12 du meme numero dans site.js.
   ----------------------------------------------------------------------------- */
#mtcsUnivers .mtcs-veil{
  background: linear-gradient(to top,
    rgba(10,9,8,.85) 0%,
    rgba(10,9,8,.5) 55%,
    rgba(10,9,8,.3) 100%);
}
#mtcsUnivers .mtcs-card:hover .mtcs-veil{
  background: linear-gradient(to top,
    rgba(10,9,8,.9) 0%,
    rgba(10,9,8,.68) 55%,
    rgba(10,9,8,.5) 100%);
}
@media (min-width: 1025px){
  #mtcsUnivers .mtcs-card{ aspect-ratio: 4 / 5; }
}


/* -----------------------------------------------------------------------------
   P13 · CUISINE SUR MESURE, « Se projeter » : les titres ne s'alignaient pas
   -----------------------------------------------------------------------------
   CAUSE. .mtcs-caption est ancree en bas de la carte. La description a deux ou
   trois lignes selon la carte : le titre, pose au-dessus, remonte d'autant.
   Mesure a 1920, haut du titre depuis le haut de la carte :
     Lineaire 204, En L 183, En U 204, Avec ilot 204, Petite cuisine 183.
   « Petite cuisine » et « En L » remontaient de 21 px.

   CORRECTIF. Une hauteur plancher de trois lignes pour la description. L'unite
   lh vaut une ligne de la boite : elle suit la taille de police et l'interligne
   sans avoir a les recopier. Support verifie sur le navigateur de controle
   (CSS.supports('min-height','3lh') vrai) ; la ligne est inerte la ou lh n'est
   pas connue, aucun repli necessaire puisque l'etat actuel est l'etat sans la
   regle.
   Mesure apres : les cinq titres a 183 px, ecart 0.
   ----------------------------------------------------------------------------- */
.mtc-svc-cartes .mtcs-card-desc{
  min-height: 3lh;
}


/* -----------------------------------------------------------------------------
   P14 · CUISINE SUR MESURE : la fenetre du film Arredo3
   -----------------------------------------------------------------------------
   Le balisage existe deja et n'est pas touche : un bouton .mtc-video-ouvrir
   qui porte aria-controls, et un conteneur .mtc-video-modale en role dialog,
   aria-modal, hidden, contenant une video a controles et preload="none".
   Il n'avait aucun style : la fenetre n'existait pas.

   Ce bloc ecrit la fenetre. Le comportement (ouverture, fermeture par la croix,
   par un clic dans la zone vide, par Echap, focus piege, arret de la video,
   chargement differe du fichier) est dans site.js, meme numero.

   RAPPEL v27.11.19. La regle de largeur posee en L24 sur la boucle de marque
   est retiree de ce fichier dans la meme passe : la boucle reprend le
   comportement du socle.
   ----------------------------------------------------------------------------- */
.mtc-video-modale{
  position: fixed; inset: 0; z-index: 9000;
  display: flex; flex-direction: column;
  align-items: center; justify-content: center;
  gap: clamp(14px, 2vh, 22px);
  padding: clamp(16px, 4vh, 48px) clamp(16px, 4vw, 64px);
  background: rgba(10,9,8,.94);
  opacity: 0;
  transition: opacity .4s ease;
}
.mtc-video-modale[hidden]{ display: none; }
.mtc-video-modale.est-ouvert{ opacity: 1; }

.mtc-video-modale-video{
  display: block;
  width: auto; height: auto;
  max-width: min(1400px, 100%);
  max-height: 76vh;
  border-radius: 4px;
  border: 1px solid var(--mtc-dore, #B8945F);
  background: var(--mtc-noir, #1A1A1A);
}
.mtc-video-modale-legende{
  max-width: 74ch; margin: 0; text-align: center;
  color: rgba(247,244,239,.72);
  font-size: clamp(.82rem, .92vw, .9rem); line-height: 1.55;
}
.mtc-video-modale-fermer{
  position: absolute; z-index: 2;
  top: clamp(12px, 2vh, 24px);
  right: clamp(12px, 2vw, 28px);
}
@media (prefers-reduced-motion: reduce){
  .mtc-video-modale{ transition: none; }
}


/* -----------------------------------------------------------------------------
   P15 · CONTACT : les portraits des gerants etaient trop petits
   -----------------------------------------------------------------------------
   CAUSE, ordinateur. La colonne de droite posee en v27.11.17 vaut 25rem, soit
   400 px. Deux portraits cote a cote dans 400 px, gouttiere de 24 px comprise,
   font 188 px chacun. La valeur avait ete choisie pour garder le titre h2 sur
   une seule ligne a 1440 px : cet arbitrage privilegiait le titre, le client
   demande l'inverse.

   ARBITRAGE. La colonne passe a 30rem. Le titre passe a deux lignes a 1440 px,
   ce qui reste une mise en page correcte pour un h2 de section, et le haut du
   formulaire descend de 35 px, en restant tres au-dessus du pli.

     largeur de colonne   carte a 1920   carte a 1440   h2 a 1440   haut du form.
       25rem (avant)      188 x 287      188 x 287      1 ligne       1 195 px
       28rem              212 x 308      212 x 308      2 lignes      1 216 px
       30rem (retenu)     228 x 323      228 x 323      2 lignes      1 230 px
       32rem              244 x 337      244 x 337      2 lignes      1 244 px

   CAUSE, telephone. .mtc-cnt-duo est en deux colonnes a toutes les largeurs :
   a 390 px, chaque portrait fait 163 px. Un visage de 163 px ne se lit pas.

   CORRECTIF. Sous 600 px, les deux portraits passent l'un sous l'autre et
   prennent toute la largeur : 350 px au lieu de 163, soit +115 %.
   ----------------------------------------------------------------------------- */
@media (min-width: 1200px){
  .mtc-cnt-demande{
    grid-template-columns: minmax(0, 1fr) 30rem;
  }
}
@media (max-width: 600px){
  .mtc-cnt-duo{ grid-template-columns: minmax(0, 1fr); }
}


/* -----------------------------------------------------------------------------
   P16 · MURS DE LOGOS : une rangee pour le rang des surfaces, un bas centre
   -----------------------------------------------------------------------------
   CAUSE 1. .mtcl-grille est ecrite a repeat(5,1fr). Le rang porte six logos
   depuis l'ajout du 23/09 : cinq en haut, un seul en bas.
   CORRECTIF. Le nombre de colonnes suit le nombre d'elements, de 4 a 6, par
   :has(). Le site utilise deja :has() (bande a cinq univers, v27.11.2). En
   dessous de 4 et au-dessus de 6, la valeur d'origine reste en service.

   CAUSE 2. Le rang de l'electromenager porte neuf logos dans une grille de
   cinq colonnes : cinq en haut, quatre en bas, cales a gauche, un trou de
   200 px a droite.
   CORRECTIF. Ce seul rang passe en flex : les rangees se centrent, celle du
   bas comprise. Les largeurs de logo ne bougent pas, la valeur de colonne est
   reprise a l'identique.
   Mesure a 1920, bande de 1 132 px : avant, rangee basse de 4 logos calee a
   gauche, bord droit a 932 px ; apres, rangee de 4 logos centree, marges de
   100 px de chaque cote.
   ----------------------------------------------------------------------------- */
@media (min-width: 1025px){
  .mtcl-grille:has(> li:nth-child(4)):not(:has(> li:nth-child(5))){
    grid-template-columns: repeat(4, 1fr);
  }
  .mtcl-grille:has(> li:nth-child(5)):not(:has(> li:nth-child(6))){
    grid-template-columns: repeat(5, 1fr);
  }
  .mtcl-grille:has(> li:nth-child(6)):not(:has(> li:nth-child(7))){
    grid-template-columns: repeat(6, 1fr);
  }
  /* Le rang de l'electromenager garde deux rangees, centrees. */
  .mtcl-grille-sm{
    display: flex; flex-wrap: wrap;
    justify-content: center; align-items: flex-start;
  }
  .mtcl-grille-sm > li{
    flex: 0 0 calc((100% - 4 * clamp(16px, 2vw, 32px)) / 5);
    max-width: calc((100% - 4 * clamp(16px, 2vw, 32px)) / 5);
  }
}

/* PASSE v27.12 · fin */

/* =============================================================================
   PASSE v27.13 · 24/09/2026 · SIX POINTS DU RETOUR CLIENT
   -----------------------------------------------------------------------------
   Source : retour client du 24/09, seconde serie. Rapport 246.
   Livraison L26. Meme numero de version pour site.css et site.js.

   PERIMETRE. Ni le balisage, ni les fiches, ni le module de prix de l'accueil
   (extrait 1246, cowork PRIX), ni les classes .mtcd- du formulaire.
   Les points 2, 4 et 5 ont une part JS, dans site.js, meme numero.
   ============================================================================= */


/* -----------------------------------------------------------------------------
   Q1 · ACCUEIL, savoir-faire : la bande prend la largeur utile de la page
   -----------------------------------------------------------------------------
   CAUSE. .mtcw-inner est borne a max-width 1180px avec 24 px de rembourrage,
   alors que les sections voisines de l'accueil ne sont bornees ni de la meme
   facon ni a la meme valeur. Mesure des largeurs de contenu a 1440 :
     .mtcr-real (Realisations)      1 385 px
     .mtcs-inner (Nos univers)      1 385 px
     .mtca-intro-inner (Qui somme)  1 385 px
     .mtcw-cols (savoir-faire)      1 132 px   <- 253 px de moins
   La regle des sections voisines se lit a deux largeurs : 1 385 px a 1440
   (soit la page moins 20 px de chaque cote) et 1 560 px a 1920 (soit un
   plafond). C'est donc min(1560px, 100% - 40px).

   CORRECTIF. La meme expression, ecrite ici. Aucune valeur inventee : les deux
   nombres sont releves sur les sections voisines.

   MESURES, largeur de .mtcw-cols :
       1920   1 132  ->  1 560   (identique a .mtcr-real)
       1440   1 132  ->  1 385   (identique a .mtcr-real)
       1024   1 132  ->    969   (identique a .mtcr-real ; l'ancienne valeur
                                  debordait de 40 px la largeur des voisines)
   Trois colonnes, a 1920 : 329 px chacune avant, 472 px apres.
   Gouttiere inchangee, 72 px. Le filet central reste a -36 px du bord de
   colonne, soit le milieu exact de la gouttiere, a toutes les largeurs.
   Hauteur des trois colonnes, a 1920 : 868 px avant, 795 px apres, et les
   trois restent egales.
   ----------------------------------------------------------------------------- */
.mtcw-savoir .mtcw-inner{
  width: calc(100% - 40px);
  max-width: 1560px;
  padding-inline: 0;
  margin-inline: auto;
}


/* -----------------------------------------------------------------------------
   Q2 · CUISINE SUR MESURE : la video Arredo3 ne disait pas qu'elle s'ouvre
   -----------------------------------------------------------------------------
   ETAT MESURE. La boucle de marque n'a aucune commande : rien, sur l'image,
   n'indique qu'un film existe. Le seul acces est le bouton pose sous la
   legende, et ce bouton n'a AUCUN style : fond rgb(240,240,240), texte noir,
   bordure 0, rembourrage 0, taille de police 16 px. C'est le rendu par defaut
   du navigateur pour un <button> nu, d'ou la « phrase blanche » signalee.

   DEUX CORRECTIFS.

   a. UN PICTOGRAMME DE LECTURE SUR LA VIDEO. Un vrai bouton, cree par site.js,
      pose sur la boucle. Sa zone cliquable couvre toute l'image : le visiteur
      n'a pas a viser. Le disque est le repere visuel.
      Disque : le degrade du bouton d'action principal, jeton --mtc-cta-degrade,
      repris tel quel, et le chevron en --mtc-noir. Aucun dore invente.
      Transparence de repos 0,88, pleine opacite au survol.
      Diametre clamp(64px, 5.6vw, 88px) : 81 px a 1440, 64 px a 390. La cible
      tactile depasse donc partout les 44 px recommandes.
      Le centrage suit le rapport reel de la video, ecrit par site.js dans
      --mtc-video-ratio ; 16/9 sert de valeur de repli.

   b. LA PHRASE DEVIENT UN BOUTON SECONDAIRE. Les declarations sont celles de
      .mtc-cta-2 avec le modificateur .mtc-on-dark, recopiees et non
      reinventees : meme rembourrage, meme rayon, meme graisse, meme bordure.
      On ne peut pas poser la classe sur le balisage, qui ne nous appartient
      pas ; on pose le style sur la classe existante.

   Les deux menent a la meme fenetre. Les deux ont un etat au survol et un
   anneau de focus visible.
   ----------------------------------------------------------------------------- */

/* a · le pictogramme de lecture */
.mtc-svc-marque-video,
.mtc-svc-marque-film{ position: relative; }

.mtc-video-lecture{
  position: absolute;
  inset: 0 0 auto 0;
  width: 100%;
  aspect-ratio: var(--mtc-video-ratio, 16 / 9);
  display: flex; align-items: center; justify-content: center;
  margin: 0; padding: 0; border: 0; background: none;
  cursor: pointer;
  z-index: 2;
}
.mtc-video-lecture-disque{
  width: clamp(64px, 5.6vw, 88px);
  height: clamp(64px, 5.6vw, 88px);
  border-radius: 50%;
  display: flex; align-items: center; justify-content: center;
  background: var(--mtc-cta-degrade, linear-gradient(135deg,#D4B078 0%,#B8945F 55%,#A67D47 100%));
  border: var(--mtc-cta-bord, 1px solid rgba(184,148,95,.6));
  color: var(--mtc-noir, #1A1A1A);
  /* Un anneau sombre et une ombre portee : sur une image claire, le dore seul
     ne se detache pas assez (2,0:1 contre du blanc). L'anneau porte la
     separation, il ne change pas la couleur du disque. */
  box-shadow: 0 0 0 1px rgba(10,9,8,.55), 0 10px 30px rgba(10,9,8,.5);
  opacity: .88;
  transition: opacity .35s ease, transform .35s var(--svc-ease, cubic-bezier(.2,.7,.3,1));
}
.mtc-video-lecture-disque svg{
  width: 38%; height: 38%;
  margin-left: 6%;            /* un triangle plein parait decale a gauche */
  fill: currentColor;
}
.mtc-video-lecture:hover .mtc-video-lecture-disque{
  opacity: 1;
  transform: scale(1.06);
}
.mtc-video-lecture:focus-visible{
  outline: 2px solid var(--mtc-blanc-pur, #FFF);
  outline-offset: 4px;
  border-radius: 4px;
}
@media (prefers-reduced-motion: reduce){
  .mtc-video-lecture-disque{ transition: none; }
  .mtc-video-lecture:hover .mtc-video-lecture-disque{ transform: none; }
}

/* b · la phrase devient un bouton secondaire sur fond sombre */
.mtc-video-ouvrir{
  position: relative;
  display: inline-flex;
  align-items: center;
  justify-content: center;
  gap: 9px;
  margin-top: clamp(14px, 1.6vw, 20px);
  padding: 16px 32px;
  font-size: .9rem;
  font-weight: 600;
  letter-spacing: var(--mtc-ls-cta, .03em);
  line-height: 1.2;
  text-align: center;
  text-decoration: none;
  color: var(--mtc-blanc, #F7F4EF);
  background: rgba(247,244,239,.04);
  border: 1px solid rgba(247,244,239,.35);
  border-radius: var(--mtc-cta-r, 3px);
  cursor: pointer;
  transition: border-color .35s, background .35s, color .35s, transform .35s;
}
.mtc-video-ouvrir:hover{
  border-color: var(--mtc-dore, #B8945F);
  background: rgba(184,148,95,.12);
  color: var(--mtc-blanc, #F7F4EF);
  transform: translateY(-2px);
}
.mtc-video-ouvrir:focus-visible{
  outline: 2px solid var(--mtc-dore, #B8945F);
  outline-offset: 3px;
}
@media (prefers-reduced-motion: reduce){
  .mtc-video-ouvrir{ transition: none; }
  .mtc-video-ouvrir:hover{ transform: none; }
}


/* -----------------------------------------------------------------------------
   Q3 · CONTACT : les portraits des cogerants touchaient le formulaire
   -----------------------------------------------------------------------------
   ETAT MESURE a 1440 : le bas de .mtc-cnt-demande et le haut du formulaire
   .mtcd sont tous les deux a 1 230 px du haut du document. ECART : 0 px.
   Les deux blocs sont dans la meme rangee Kadence, donc aucun rembourrage de
   rangee ne les separe.

   CORRECTIF. Une marge basse sur la section, qui nous appartient. On ne touche
   pas au formulaire : les classes .mtcd- sont celles de l'extension.
   La valeur n'est pas inventee : clamp(36px, 4vw, 52px) est le pas deja utilise
   dans ce fichier pour separer deux blocs a l'interieur d'une meme section
   (.mtc-svc-prix-liste, .mtc-galcat). 52 px a 1440 et au-dela, 45 px a 1024,
   36 px a 390.

   Ecart bas des portraits / haut du formulaire : 0 px avant, 52 px apres.
   ----------------------------------------------------------------------------- */
.mtc-cnt-demande{
  margin-bottom: clamp(36px, 4vw, 52px);
}


/* -----------------------------------------------------------------------------
   Q4 et Q5 · LES FLECHES DE TOUS LES CARROUSELS
   -----------------------------------------------------------------------------
   ETAT MESURE. .mtca-arrow est un rond de 48 px, fond transparent, filet blanc
   a 25 %, chevron blanc. Sur une photographie claire, le filet a 25 % de blanc
   disparait. C'est le composant unique de tous les carrousels du site :

     avis de l'accueil                .mtca-arrow
     avis des pages services          .mtca-arrow
     visionneur plein ecran           .mtc-art-visio-prec / -suiv / -fermer
     diaporama des fiches             .mtc-art-diapo-prec / -suiv
     carrousel du showroom, A propos  meme diaporama que les fiches
     bande de la categorie Realisations  .mtc-galcat-prec / -suiv

   Les six reprennent .mtca-arrow : une seule regle les traite tous.

   CORRECTIF. Disque plein, le degrade du bouton d'action principal repris par
   son jeton --mtc-cta-degrade, chevron en --mtc-noir, bordure --mtc-cta-bord.
   Aucun dore invente : ce sont les memes jetons que .mtc-cta.

   TAILLE. clamp(48px, 3.4vw, 56px) : 56 px a 1920 et 1440, 48 px sous 1412 px
   et sur telephone. La cible tactile ne descend jamais sous 48 px, au-dessus
   des 44 px recommandes.

   CONTRASTES, calcules sur les trois bornes du degrade.
     chevron #1A1A1A sur #D4B078 (borne claire)   8,5:1
     chevron #1A1A1A sur #B8945F (borne mediane)  6,1:1
     chevron #1A1A1A sur #A67D47 (borne sombre)   4,7:1
   Le minimum, 4,7:1, passe le seuil AA de 4,5:1 pour du texte, et tres au-dessus
   du seuil de 3:1 applicable a un element d'interface.

   LE DISQUE CONTRE SON FOND. Le dore seul ne suffit pas partout :
     disque #D4B078 sur un fond sombre #0A0908   10,3:1   largement visible
     disque #D4B078 sur une photographie blanche  2,0:1   insuffisant
   D'ou l'anneau sombre de 1 px, rgba(10,9,8,.55), qui porte la separation :
     anneau sur photographie blanche              4,4:1
     anneau sur fond sombre                       confondu, mais le disque dore
                                                  y fait deja 10,3:1
   Le contraste minimum du contour est donc 4,4:1 dans les deux situations.
   L'ombre portee ajoute la profondeur, elle ne porte pas le contraste.

   ETAT DESACTIVE. Le disque garde sa couleur et perd en opacite : un rond
   grisaille serait pris pour un defaut d'affichage.

   RESERVE, et elle est importante : les deux fleches du module de prix de
   l'accueil, « Poste precedent » et « Poste suivant », ne sont PAS traitees
   ici. Ce module appartient au cowork PRIX depuis le 24/09 et son style vit
   dans son extrait. Les declarations a recopier telles quelles sont celles de
   .mtca-arrow ci-dessous.
   ----------------------------------------------------------------------------- */
/* REPRISE v27.16 (points 2 et 3 du lot du 25/09, rapport 251).

   POINT 2, LA CAUSE. Le survol ecrivait transform: translateY(-2px). Or trois
   familles de fleches se POSITIONNENT avec transform: translateY(-50%). Un seul
   transform par element : le survol remplacait le centrage et la fleche tombait
   de la moitie de sa hauteur, 22,5 px mesures sur le visionneur. C'est le
   mecanisme corrige en L27 sur les cartes Realisations.
   Le remede est le meme : plus aucun transform dans les etats. Le soulevement
   disparait au profit d'une echelle, propriete independante qui se compose avec
   le transform de positionnement au lieu de le remplacer.

   POINT 3, LE DESSIN. Mesure avant : 49 x 49 a 1440 (clamp 3,4vw), chevron de
   22 px, anneau sombre et ombre portee de 18 px. Apres : 40 x 40 sur pointeur,
   chevron de 18 px a trait plus fin, ombre ramenee a 12 px. Soit -18 % de
   diametre et une ombre deux fois plus discrete.
   La cible tactile ne suit pas cette reduction : sous 1025 px le rond reste a
   44 px, la valeur recommandee pour le doigt. Le gain de finesse est pris la ou
   Nath regarde, l'ecran large, sans rien enlever au telephone.
   L'anneau reste a rgba(10,9,8,.55) : c'est lui qui porte les 4,4:1 de contraste
   sur une photographie claire, mesure en v27.13. Le degrade et le chevron ne
   changent pas, donc les contrastes de la v27.13 restent valables.

   SURVOL. Aucun deplacement, la cible ne bouge pas sous le doigt ni sous le
   curseur : une echelle de 1,06, une clarte de 1,06 et une ombre un peu plus
   ouverte. Appui : 0,97. */
.mtca-arrow{
  width: 40px;
  height: 40px;
  background: var(--mtc-cta-degrade, linear-gradient(135deg,#D4B078 0%,#B8945F 55%,#A67D47 100%));
  border: var(--mtc-cta-bord, 1px solid rgba(184,148,95,.6));
  color: var(--mtc-noir, #1A1A1A);
  box-shadow: 0 0 0 1px rgba(10,9,8,.55), 0 4px 12px rgba(10,9,8,.38);
  transition: scale .28s var(--svc-ease, cubic-bezier(.2,.7,.3,1)),
              box-shadow .28s ease, filter .28s ease;
}
@media (max-width: 1024px){
  .mtca-arrow{ width: 44px; height: 44px; }
}
.mtca-arrow svg{ width: 18px; height: 18px; stroke-width: 1.6; }
.mtca-arrow:hover{
  background: var(--mtc-cta-degrade, linear-gradient(135deg,#D4B078 0%,#B8945F 55%,#A67D47 100%));
  border-color: rgba(184,148,95,.6);
  scale: 1.06;
  filter: brightness(1.06);
  box-shadow: 0 0 0 1px rgba(10,9,8,.55), 0 8px 20px rgba(10,9,8,.42);
}
.mtca-arrow:active{ scale: .97; }
.mtca-arrow:focus-visible{
  outline: 2px solid var(--mtc-blanc-pur, #FFF);
  outline-offset: 3px;
}
.mtca-arrow:disabled{
  opacity: .38;
  filter: none;
  scale: 1;
  box-shadow: 0 0 0 1px rgba(10,9,8,.35);
}
@media (prefers-reduced-motion: reduce){
  .mtca-arrow{ transition: none; }
  .mtca-arrow:hover{ scale: 1; }
}

/* Effet de bord corrige dans le meme geste : les deux fleches du diaporama des
   fiches etaient calees a 50 % de .mtc-art-diapo, qui contient l'image ET sa
   legende. Elles tombaient donc 19 px sous le centre de l'image, et le passage
   de 48 a 56 px aggravait l'ecart. Le bloc passe en grille, l'image et la
   legende prennent chacune leur rangee, et les fleches sont placees dans la
   rangee de l'image, centrees dessus. Mesure a 1920 : centre des fleches a
   280 px du haut d'une image de 560, soit le centre exact.
   Sert aussi le carrousel du showroom de la page A propos, qui utilise le meme
   composant. */
.mtc-art-diapo{
  display: grid;
  grid-template-columns: minmax(0, 1fr);
}
.mtc-art-diapo > .mtc-art-diapo-scene{ grid-row: 1; grid-column: 1; }
.mtc-art-diapo > .mtc-art-diapo-legende{ grid-row: 2; grid-column: 1; }
.mtc-art-diapo-nav{
  position: static;
  grid-row: 1; grid-column: 1;
  align-self: center;
  transform: none;
  z-index: 3;
}
.mtc-art-diapo-prec{ justify-self: start; left: auto; margin-left: clamp(8px, 1.4vw, 20px); }
.mtc-art-diapo-suiv{ justify-self: end; right: auto; margin-right: clamp(8px, 1.4vw, 20px); }
@media (max-width:689.98px){
  .mtc-art-diapo-prec{ margin-left: 6px; }
  .mtc-art-diapo-suiv{ margin-right: 6px; }
}


/* -----------------------------------------------------------------------------
   Q6 · L'IMAGE EN TETE DE CARTE
   -----------------------------------------------------------------------------
   PREALABLE FAIT PAR PAGES : onze cartes ouvrent desormais sur la figure.
   RELEVE, carte par carte, a 1440 :

     5 cartes « Le jour de la pose », Cuisine sur mesure
       <li> de .mtc-svc-prix-liste, rembourrage 30 px, filet 1 px, rayon 10 px
       figure 259 x 324, a 31 px du bord haut de la carte, rayon 0
     5 cartes « Bien choisir la forme », Cuisine sur mesure
       <article> .mtc-svc-impl-item, rembourrage 0, sans filet
       figure 925 x 617, a 0 px du bord haut, rayon 10 px
     1 carte d'implantation, Dressing living et bureau
       meme <article>, figure 925 x 617, a 0 px du bord haut, rayon 10 px

   DONC : six des onze cartes sont DEJA a fleur de bord et deja arrondies. Le
   defaut decrit ne concerne que les cinq cartes a rembourrage.

   UNE SEULE REGLE, comme demande, ET QUI RESTE SANS EFFET SUR LES SIX AUTRES :
   le decalage est calcule sur une variable --mtc-carte-pad que seules les
   cartes a rembourrage declarent. Sur les six autres la variable vaut 0 et le
   calcul rend 0. Aucune valeur en dur, aucun selecteur de page.
   Le filet de 1 px de la carte est ajoute au calcul : sans lui il resterait
   1 px de bordure de chaque cote et en haut, ce que le releve appelait le
   debord de 2 px.

   L'ARC DU BAS. Deux rayons elliptiques de 50 % par 26 px sur les deux coins
   bas : les deux courbes se rejoignent au milieu et forment UN arc continu,
   profond de 26 px au centre et nul aux angles. Valeur prise au milieu de la
   fourchette demandee, 24 a 32.
   L'arc n'est PAS applique aux six figures a rembourrage nul : sur une figure
   de 925 x 617, l'equerre doree de .mtc-svc-impl-fig::after est posee a 16 px
   du bord et l'arc y remonte a 19,2 px. Elle serait rognee de 3,2 px. Sur les
   figures de 259 de large, l'arc remonte a 13,5 px au droit de l'equerre, qui
   passe donc 2,5 px au-dessus. Mesure faite, valeur retenue en consequence.

   LE NUMERO DE LA CARTE. Il est produit par li::after, en position absolue,
   cale a top et right egaux au rembourrage. Depuis que l'image occupe le haut,
   il se pose dessus, en creme a 58 % : illisible.
   Il sort du positionnement absolu et vient sur la ligne du pictogramme, a
   droite. Le compteur CSS est conserve tel quel, content: "0" counter(poste).
   Le procede : la carte passe en colonne flex, l'ordre des elements est ecrit,
   et le numero est remonte de la hauteur exacte du pictogramme, 46 px, avec
   une marge negative egale. Sa contribution a la hauteur de la carte est donc
   nulle : la rangee ne bouge pas d'un pixel de ce fait.
   La regle ne vise QUE les cartes qui portent une image (:has). Les cartes de
   .mtc-svc-prix-liste sans photo — « Ce qui fait le prix », Salle de bain,
   Dressing — gardent leur numero dans l'angle.

   HORS PERIMETRE, et mesure pour memoire : les quatre colonnes de valeurs de
   A propos (.mtc-apr-garanties) portent aussi une figure en premier enfant, a
   31 px du haut. Ce ne sont PAS des cartes : pas de rembourrage lateral, pas de
   fond, pas de rayon, mais un filet dore en haut de colonne et un rembourrage
   sous ce filet. Remonter l'image y recouvrirait le filet, qui est le dessin
   voulu. Elles ne sont pas touchees.
   ----------------------------------------------------------------------------- */

/* Les cartes a rembourrage declarent leur valeur. Les autres ne declarent rien
   et la valeur de repli, 0px, laisse la regle unique sans effet. */
.mtc-svc-prix-liste li{
  --mtc-carte-pad: clamp(22px, 2.2vw, 30px);
  --mtc-carte-filet: 1px;
}

/* LA REGLE UNIQUE. */
.mtc-svc-impl-fig:first-child{
  margin-top: calc(-1 * (var(--mtc-carte-pad, 0px) + var(--mtc-carte-filet, 0px)));
  margin-inline: calc(-1 * (var(--mtc-carte-pad, 0px) + var(--mtc-carte-filet, 0px)));
  width: auto;
  border-top-left-radius: var(--mtc-r-l, 10px);
  border-top-right-radius: var(--mtc-r-l, 10px);
}

/* L'arc, sur les seules figures logees dans une carte a rembourrage. */
.mtc-svc-prix-liste li > .mtc-svc-impl-fig:first-child{
  border-bottom-left-radius: 50% 26px;
  border-bottom-right-radius: 50% 26px;
}

/* Le numero rejoint la ligne du pictogramme. */
.mtc-svc-prix-liste li:has(> .mtc-svc-impl-fig:first-child){
  display: flex;
  flex-direction: column;
}
.mtc-svc-prix-liste li:has(> .mtc-svc-impl-fig:first-child) > .mtc-svc-impl-fig{ order: 0; }
.mtc-svc-prix-liste li:has(> .mtc-svc-impl-fig:first-child) > .mtc-svc-icone{ order: 1; }
.mtc-svc-prix-liste li:has(> .mtc-svc-impl-fig:first-child)::after{
  order: 2;
  position: static;
  align-self: flex-end;
  display: flex;
  align-items: center;
  height: 46px;          /* la hauteur exacte de .mtc-svc-icone dans cette liste */
  margin-top: -46px;     /* contribution nulle a la hauteur de la carte */
}
.mtc-svc-prix-liste li:has(> .mtc-svc-impl-fig:first-child) > h3{ order: 3; }
.mtc-svc-prix-liste li:has(> .mtc-svc-impl-fig:first-child) > p{ order: 4; }

/* PASSE v27.13 · fin */

/* =============================================================================
   PASSE v27.14 · 25/09/2026 · SEPT POINTS DU RETOUR CLIENT
   -----------------------------------------------------------------------------
   Source : retour client du 24/09 au soir, sur la L26 en ligne. Rapport 247.
   Livraison L27. Meme numero de version pour site.css et site.js.

   PERIMETRE inchange : ni le balisage, ni les fiches, ni le module de prix de
   l'accueil, ni les classes .mtcd- du formulaire.
   Les points R1, R2, R4 et R5 ont une part JS, dans site.js, meme numero.
   ============================================================================= */


/* -----------------------------------------------------------------------------
   R1 · ACCUEIL, « Qui sommes-nous » : les trois photos, recomposees
   -----------------------------------------------------------------------------
   CE QUI N'ALLAIT PAS, mesure a 1440, coordonnees depuis le coin haut gauche
   de la colonne photo (657 x 834) :
     photo 1  378 x 334  de ( 13,  26) a (391, 360)
     photo 3  381 x 176  de (  0, 384) a (381, 559)
     photo 2  328 x 300  de (328, 534) a (657, 834)
   Trois defauts, et le troisieme explique le mot « deborde » du client :
     a. photo 3 et photo 2 se croisent sur 53 px de large et 25 px de haut, et
        la legende de la photo 3 passe DANS la photo 2 ;
     b. photo 3 touche le bord gauche de la colonne, a 0 px : elle n'est pas
        posee, elle est coincee ;
     c. photo 2 est calee a (droite 0, bas 0) de la colonne. Or site.js ecarte
        les photos en eventail au defilement, et la photo 2 recoit
        translate(8%, 12%), soit +26 px a droite et +36 px en bas de SA propre
        taille. A pleine ouverture elle sort donc de la colonne de 26 px et de
        36 px, et la section la coupe (overflow: hidden). Meme mecanique pour
        la photo 1, qui sort de 26 px en haut et de 43 px a gauche.
     La composition avait ete pensee au repos, jamais en mouvement.

   CE QU'ON FAIT. Les trois photos sont reprises ensemble, dans un cadre dont
   le rapport est fixe, et positionnees pour que L'ENVELOPPE DU MOUVEMENT reste
   dans le cadre : chaque position tient compte de son propre ecartement et de
   sa rotation. Plus aucune photo n'est collee a un bord.

   POSITIONS RETENUES, en pourcentage du cadre (largeur pour les x, hauteur
   pour les y), et enveloppe de mouvement calculee :
     photo 1  x  6.0 -> 53.0   y  7.0 -> 39.7   ecartement -3.3 / -4.3
     photo 2  x 54.5 -> 94.5   y 35.0 -> 63.8   ecartement +3.2 / +3.5
     photo 3  x  6.0 -> 56.0   y 78.0 -> 96.2   ecartement -2.0 / +0.9
   Marges minimales apres ecartement ET rotation : 1.3 % a gauche, 1.1 % en
   haut, 1.1 % a droite, 2.0 % en bas. Plus aucun debordement.

   AUCUNE LEGENDE RECOUVERTE, et c'est la contrainte qui a fixe les valeurs.
   Les legendes occupent toute la largeur de leur photo, sur 92 px de haut :
   un recouvrement horizontal, meme de quelques pixels, mange un nom. Les trois
   photos sont donc decalees de sorte qu'aucune n'empiete sur la bande de
   legende d'une autre. La seule zone commune est x 54.5 -> 56 entre les photos
   2 et 3, et leurs hauteurs y sont disjointes de 14 points.

   HAUTEUR DE COLONNE. La colonne photo devient exactement aussi haute que la
   colonne de texte, a toutes les largeurs : la case de grille est etiree, et
   la composition vit dans un cadre au rapport fixe, centre dedans. Mesures
   dans le rapport 247.
   ----------------------------------------------------------------------------- */
@media (min-width: 961px){

  /* La colonne prend la hauteur de sa voisine. */
  .mtca-intro-inner > .mtca-media.est-cadree{
    align-self: stretch;
    position: relative;
    padding: 0;
    /* Le rapport fixe pose en v27.12 passe au cadre. Le laisser ici, sur une
       colonne desormais etiree, ferait deriver la LARGEUR de la hauteur : la
       colonne montait a 739 px pour 657 de place et debordait sur le texte. */
    aspect-ratio: auto;
  }
  /* Repli si site.js n'a pas pose le cadre : l'ancien comportement. */
  .mtca-media:not(.est-cadree){
    align-self: center;
    aspect-ratio: 74 / 94;
  }

  /* Le cadre est pose en absolu, et c'est voulu : en flux, une boite a rapport
     fixe dans une colonne etiree tire sa LARGEUR de sa hauteur et pousse la
     colonne a 739 px pour 657 de place. En absolu, il ne contribue plus a la
     largeur, il la subit. Mesure : colonne 657 px avant comme apres. */
  .mtca-media-cadre{
    position: absolute;
    left: 0; right: 0; top: 50%;
    transform: translateY(-50%);
    width: 100%;
    aspect-ratio: 74 / 94;
  }

  /* Les trois plans. La photo 1 quitte le flux : les trois sont desormais
     posees par la meme mecanique, c'est ce qui fait une composition. */
  .mtca-media-cadre .mtca-photo-1{
    position: absolute;
    left: 6%; top: 7%; right: auto; bottom: auto;
    width: 47%;
    z-index: 1;
  }
  .mtca-media-cadre .mtca-photo-2{
    left: 54.5%; top: 35%; right: auto; bottom: auto;
    width: 40%;
    z-index: 2;
  }
  .mtca-media-cadre .mtca-photo-3{
    left: 6%; top: 78%; right: auto; bottom: auto;
    width: 50%;
    z-index: 3;
  }
}

/* Sous 961 px, les photos sont empilees l'une sous l'autre par une colonne
   flex posee sur .mtca-media, avec un espace de 20 px entre elles. Le cadre
   s'y intercalerait comme enfant unique et mangerait ces espaces : mesure a
   390 px, colonne de 763 px au lieu de 803. display: contents le retire du
   rendu sans toucher au document : les trois photos redeviennent les enfants
   directs de la colonne. */
@media (max-width: 960px){
  .mtca-media-cadre{ display: contents; }
}


/* -----------------------------------------------------------------------------
   R2 · LE COLLANT, BALAYAGE COMPLET
   -----------------------------------------------------------------------------
   REGLE DU PROJET, rappelee par le client : un bloc plus court que son voisin
   ne se centre pas verticalement, il se cale en haut et passe en collant.

   RELEVE COMPLET, fait a 1440 sur toutes les pages a deux colonnes. Pour chaque
   duo : hauteur des deux colonnes, et etat du collant.

     Cuisine sur mesure      4 duos   811/574, 586/5059, 746/2586, 443/717
                             les quatre DEJA collants
     A propos                2 duos   586/410, 525/893
                             les deux DEJA collants
     Dressing                4 duos   1059/574, 622/2046, 525/1341  DEJA collants
                                      443/225  « Bureaux et locaux pro »  NON
     Salle de bain           4 duos   840/525, 562/2340              DEJA collants
                                      876/605  « Ce que nous faisons »    NON
                                      443/844  « Le plan de toilette »    NON
     Contact                 1 duo    523/380, deja collant, et il appartient a
                                      l'extension : on n'y touche pas.
     Accueil                 2 duos   834/939 et 495/714 — voir ci-dessous.

   TROIS BLOCS A CORRIGER, donc, et pas trois pages.

   COMMENT. Pas par trois selecteurs de page : le client dit que c'est une regle
   permanente, on l'ecrit comme une regle. site.js mesure les deux colonnes de
   chaque duo de section service, et pose .est-court sur la plus courte quand
   l'ecart depasse 60 px. Le style ci-dessous fait le reste. Un contenu qui
   change demain sera traite tout seul.

   POURQUOI 60 px DE SEUIL : en dessous, le decalage ne se lit pas et le collant
   n'aurait aucune course utile. Les trois cas releves sont a 218, 271 et 401 px.

   L'ACCUEIL EST HORS REGLE, et c'est un arbitrage, pas un oubli. Ses deux duos
   (« Mathieu & Thomas » 834/939, « Un showroom prive » 495/714) vivent dans des
   sections elles-memes collantes, figees plein ecran pendant que l'animation se
   joue. Une colonne collante dans une section deja figee n'a aucune course :
   elle ne bougerait jamais. Ces deux compositions se lisent comme un ecran, pas
   comme un texte qu'on descend. Le premier des deux est traite par R1.
   ----------------------------------------------------------------------------- */
@media (min-width: 1025px){
  .mtc-svc-duo.est-calee{ align-items: start; }
  .mtc-svc-duo > .est-court{
    position: sticky;
    /* Meme expression que .mtc-svc-colle et .mtc-svc-impl-aside : UN SEUL
       calcul de decrochement dans le fichier. */
    top: calc(var(--svc-entete) + clamp(20px, 3vh, 40px));
    align-self: start;
  }
}

/* DRESSING, « Bureaux et locaux professionnels » : le bouton sous le texte.
   Le bouton vit dans .mtc-svc-centre, un bloc en flex centre, pose APRES le duo
   et large comme toute la section : il se retrouvait centre sous l'ensemble,
   loin du texte auquel il repond. La section reprend les colonnes du duo, tous
   ses blocs occupent les deux colonnes, et le bouton la seule colonne du texte.
   Valeurs reprises telles quelles de .mtc-svc-duo-serre : 40 % et la meme
   gouttiere. Mesure a 1440 : bouton a 554 + 72 = 626 px du bord gauche au lieu
   de 510, aligne au mot pres sur le premier caractere du texte.
   Seule occurrence du couple duo + centre sur le site, verifiee page par page. */
@media (min-width: 1025px){
  .mtc-svc-pro{
    display: grid;
    grid-template-columns: 40% 1fr;
    column-gap: clamp(36px, 5vw, 72px);
  }
  .mtc-svc-pro > *{ grid-column: 1 / -1; }
  .mtc-svc-pro > .mtc-svc-centre{
    grid-column: 2;
    justify-content: flex-start;
  }
}


/* -----------------------------------------------------------------------------
   R3 · LE SURVOL DES CARTES DE LA SECTION REALISATIONS
   -----------------------------------------------------------------------------
   CAUSE TROUVEE, ET MESUREE. Les trois cartes portent
     .realmt.wp-block-latest-posts > li:hover{ transform: translateY(-6px); }
   et site.js, pour les faire apparaitre au defilement, leur ecrit une propriete
   de style EN LIGNE :
     style="opacity: 1; transform: translateY(0px) scale(1);"
   Un style en ligne l'emporte sur toute regle d'auteur sans !important. Le
   soulevement au survol ne se produit donc jamais. Releve sur la page : les
   trois cartes de la section Realisations portent ce style en ligne, les trois
   autres cartes .realmt de la page ne l'ont pas et se soulevent normalement.
   Deux cartes identiques, deux comportements : c'est ce que le client voit.

   EST-CE QUE CA TOUCHE D'AUTRES BOUTONS DU SITE ? Non, et je l'ai verifie plutot
   que suppose. J'ai recense toutes les regles :hover du site qui posent un
   transform SUR L'ELEMENT SURVOLE lui-meme — 28 selecteurs, dont .mtc-cta,
   .mtc-cta-2, .mtca-arrow, .mtcp-node, a.mtcl-logo, .mtc-svc-prix-liste li,
   .mtc-art-vignette, .mtc-cnt-direct-item, .mtch-social — puis, pour chacune,
   cherche les elements qui portent un transform en ligne. UN SEUL selecteur
   ressort : .realmt.wp-block-latest-posts > li. Les vingt-sept autres sont sains.

   CORRECTIF, SANS !important. Le soulevement passe de transform a translate,
   qui est une propriete independante depuis CSS Transforms niveau 2. Les deux
   se composent : site.js garde la main sur transform pour son animation, le
   survol pose sa translation par-dessus. Aucun !important ajoute, aucune ligne
   retiree a site.js.
   Mesure apres : carte soulevee de 6 px au survol, mise a l'echelle de
   l'apparition conservee.
   ----------------------------------------------------------------------------- */
.realmt.wp-block-latest-posts > li{
  transition: transform .5s cubic-bezier(.2,.7,.3,1),
              translate .5s cubic-bezier(.2,.7,.3,1),
              box-shadow .5s;
}
.realmt.wp-block-latest-posts > li:hover{
  transform: none;
  translate: 0 -6px;
}


/* -----------------------------------------------------------------------------
   R4 · ACCUEIL, « Nos univers » : les titres s'alignent
   -----------------------------------------------------------------------------
   CAUSE, confirmee par la mesure et deja bien vue par le client : .mtcs-caption
   est en position absolue, accrochee par le BAS de la carte. Sa hauteur suit le
   nombre de lignes de la description, et le titre, pose au-dessus, monte ou
   descend d'autant.
   Releve a 1440 : les cinq cartes font 326 px ; quatre descriptions tiennent sur
   quatre lignes, le titre est a 190 px du haut ; la cinquieme en fait cinq, son
   titre est a 170 px. Vingt pixels, soit exactement une hauteur de ligne.
   La carte concernee change avec la largeur de la fenetre, puisque le retour a
   la ligne en depend : corriger carte par carte ne sert a rien.

   CORRECTIF, ET POURQUOI CELUI-LA. Des deux pistes proposees, la hauteur
   reservee est la bonne ; l'ancrage par le haut demanderait de connaitre la
   hauteur de la plus grande legende, ce que le CSS ne sait pas faire. Mais une
   hauteur reservee ECRITE EN DUR ne tient pas non plus : le nombre de lignes
   depend de la largeur. site.js mesure donc la plus haute description de la
   rangee et ecrit sa hauteur dans --mtcs-desc-h ; toutes les autres s'y calent.
   La mesure est refaite au changement de largeur.
   Sans JS, la variable n'existe pas, la valeur de repli est 0 et le rendu est
   celui d'aujourd'hui : rien n'est casse.

   Le bas des cartes ne bouge pas : la legende reste accrochee en bas, seule la
   hauteur de la description change, donc seul le titre remonte.
   ----------------------------------------------------------------------------- */
.mtcs-card-desc{
  min-height: var(--mtcs-desc-h, 0px);
}


/* -----------------------------------------------------------------------------
   R5 · FICHES REALISATIONS : la nettete et le cadrage
   -----------------------------------------------------------------------------
   J'AI MESURE AVANT DE CONCLURE, comme demande, et le client a raison sur les
   deux points.

   LA NETTETE. Releve a 1440 sur la fiche « Cuisine vert fonce avec ilot » :
     cadre affiche     1 254 x 558
     fichier retenu    1 180 x 885 en pixels rendus
     densite LARGEUR   0,94      <- sous 1, donc floue
     densite HAUTEUR   1,59
   La densite de 1,01 mesuree en L25 etait juste, mais sur une autre photo et a
   une autre largeur. La cause de ce 0,94 : sizes vaut 82vw, soit 1 168 px a
   1440, alors que le cadre en fait 1 254. La valeur decrivait la colonne de
   texte, pas le cadre de l'image. Sur A propos, meme mesure : densite 0,85.
   CORRECTIF : site.js n'ecrit plus un pourcentage de fenetre mais la largeur
   REELLE du cadre, relue apres mise en page, comme pour la bande de la
   categorie Realisations en L25.

   LE CADRAGE. Celui-la est structurel, et il est pire que ce que le releve
   disait. Le cadre est declare en 3/2, mais il porte aussi
   max-height: clamp(320px, 62vh, 560px), et c'est ce plafond qui commande :
     a 1440 x 900   1 254 de large pour 558 de haut, rapport reel 2,25
     a 1920 x 1080  1 558 de large pour 560 de haut, rapport reel 2,78
   Le rapport declare n'est jamais celui qui s'applique.
   Et les photographies ne sont pas toutes au meme rapport. Releve reel :
     fiche « ilot vert »        4 photos, toutes en 1,33
     showroom A propos         19 photos, 13 en 1,50 et 6 en 0,67 (portraits)
   Consequence mesuree : une photo de 1,33 dans un cadre de 2,25 est agrandie a
   1 254 x 941 puis rognee de 191 px en haut et en bas, soit 41 % de l'image
   perdue. Sur un portrait de 0,67, la perte depasse 70 %.

   CORRECTIF RETENU : le cadre prend le rapport de LA photo affichee, ecrit par
   site.js dans --mtc-diapo-ratio, et sa hauteur est bornee a 74 % de la fenetre.
   La largeur suit, et l'image est centree quand elle est plus etroite que la
   colonne. Resultat : plus aucun rognage, sur aucune photo, quel que soit son
   format. object-fit n'a plus rien a rogner.

   CE QUE CA CHANGE SUR LA PAGE, et je le dis clairement : la section grandit.
     1920 x 1080   diaporama 560 -> 799 px   (+239)
     1440 x  900   diaporama 558 -> 666 px   (+108)
   A 1920 l'image passe de 1 558 x 560 a environ 1 199 x 799 : elle est moins
   large mais sa surface augmente de 10 %, et surtout elle est entiere. Le prix a
   payer est une marge laterale sur les formats les plus hauts. Pour une galerie
   de realisations, respecter le cadrage du photographe vaut mieux que remplir la
   largeur : c'est l'arbitrage que je propose, il se defait en une ligne.
   ----------------------------------------------------------------------------- */
.mtc-art-diapo-scene{
  display: flex;
  justify-content: center;
}

/* -----------------------------------------------------------------------------
   CORRECTION v27.15 · 25/09/2026 (rapport 248)
   La regle posee ici en v27.14 etait fausse et a ete retiree. Elle posait
   width:auto ET height:auto avec un aspect-ratio. Les deux axes automatiques,
   le rapport ne s'applique pas : la mise en page suit alors la taille propre du
   fichier retenu. Comme site.js ecrivait dans sizes une largeur mesuree SUR
   L'IMAGE, chaque tour rapetissait le fichier suivant, qui rapetissait la mise
   en page. La boucle descendait jusqu'a la plus petite derivee : 124 x 56 px
   mesures pour un conteneur de 1 558 px.

   La regle ci-dessous rend la HAUTEUR determinee, c'est elle qu'on borne. La
   largeur en decoule par le rapport, et ne depend plus d'aucun fichier.
     1 · height est une longueur calculee sans jamais lire l'image ;
     2 · le second plafond, 100cqw / rapport, garantit que la largeur deduite
         ne depasse jamais le conteneur : sans lui max-width rognerait ;
     3 · la premiere declaration height est le filet pour un moteur sans
         requetes de conteneur : hauteur determinee malgre tout, jamais auto.
   --------------------------------------------------------------------------- */
.mtc-art-diapo-scene{ container-type: inline-size; }
.mtc-art-diapo-scene img{
  width: auto;
  max-width: 100%;
  max-height: none;
  /* v27.16 (point 4) · le plafond ne se calcule plus sur le rapport de LA photo
     affichee mais sur celui de la PLUS LARGE des photos de la page, ecrit une
     fois par site.js dans --mtc-diapo-rmax. La hauteur ne depend donc plus que
     du conteneur et de la fenetre : elle est la meme pour toutes les photos,
     et c'est la largeur qui varie. Le rapport de chaque photo reste applique,
     donc toujours aucun rognage. */
  height: clamp(320px, 74vh, 880px);
  height: min(clamp(320px, 74vh, 880px), calc(100cqw / var(--mtc-diapo-rmax, 1.5)));
  aspect-ratio: var(--mtc-diapo-ratio, 3 / 2);
  object-fit: cover;
}
/* SOUS 690 px, LA HAUTEUR REDEVIENT CELLE DE CHAQUE PHOTO, et c'est voulu.
   Mesure a 390 px, conteneur de 301 : avec une hauteur constante calee sur la
   photo la plus large de la page, une photo en portrait tombe a 133 x 178 px.
   Illisible. Sur un ecran etroit, remplir la largeur vaut mieux que ne pas
   bouger : la fleche y est sous l'image, pas sous le doigt, et le reflux d'une
   photo a l'autre ne gene personne. Le plafond redevient donc celui de LA
   photo affichee, --mtc-diapo-r, exactement comme en L28.
   Mesure apres : 301 x 401 pour la meme photo en portrait. */
@media (max-width:689.98px){
  .mtc-art-diapo-scene img{
    height: 62vh;
    height: min(62vh, calc(100cqw / var(--mtc-diapo-r, 1.5)));
  }
}

/* PASSE v27.14 · fin */


/* =============================================================================
   PASSE v27.16 · 25/09/2026 · DERNIER LOT AVANT MISE EN LIGNE
   -----------------------------------------------------------------------------
   Source : lot de sept points du 25/09. Rapport 251. Livraison L29.
   Meme numero de version pour site.css et site.js.

   PERIMETRE inchange : ni le balisage, ni les fiches, ni le module de prix de
   l'accueil, ni les classes .mtcd- du formulaire.
   Les points 1, 3, 4, 6 et les deux coordinations avec PAGES ont une part JS.

   Les points 2 et 3 ne sont PAS ici : ils corrigent la regle unique
   .mtca-arrow, qui vit dans la passe v27.13. Corriger sur place plutot
   qu'empiler une surcharge, c'est la regle du fichier.
   ============================================================================= */


/* -----------------------------------------------------------------------------
   1 · ACCUEIL : LA HAUTEUR DE LA ZONE REALISATIONS EN UNITES DE FENETRE
   -----------------------------------------------------------------------------
   CE QUI N'ALLAIT PAS. .mtcr-scroll etait a height: 190vh. La zone porte une
   section collante, #mtcrReal, dimensionnee par son contenu. La course de
   l'animation vaut donc hauteur de zone moins hauteur de fenetre, soit
   0,9 x la hauteur d'ecran : elle varie du simple au double selon l'ecran,
   pendant que le contenu, lui, ne bouge pas.

   MESURE, a 1440 de large, course = offsetHeight de la zone moins la fenetre :
     900 de haut    zone 1 710   enfant 1 077   course   810
    1080 de haut    zone 2 052   enfant 1 077   course   972
    1440 de haut    zone 2 736   enfant 1 440   course 1 296
   La meme animation se joue a trois vitesses. C'est exactement le defaut
   corrige sur .mtca-scroll par la passe v27.11.18, et le remede est le meme :
   la hauteur derive de l'enfant, plus une course bornee.

   .mtca-scroll N'EST PAS RETOUCHEE. Verification faite avant d'ecrire : elle
   est deja a height: auto avec un rembourrage de clamp(420px, 70vh, 760px)
   depuis la v27.11.18. Mesure a 1440 x 900 : zone 1 749, enfant 1 119,
   residu 510. Le defaut symetrique decrit dans la demande n'existe plus en
   production ; il n'y avait rien a corriger de ce cote.

   LA CHARNIERE EST 1025 px, pas 961 : sous 1025 px la zone est deja neutralisee
   par la regle de la section 4, height: auto !important. On ne cree pas de
   charniere nouvelle.
   ----------------------------------------------------------------------------- */
@media (min-width: 1025px){
  .mtcr-scroll{
    height: auto;
    padding-bottom: clamp(420px, 70vh, 760px);
  }
}
@media (max-width: 1024px){
  .mtcr-scroll{ padding-bottom: 0; }
}


/* -----------------------------------------------------------------------------
   COORDINATION PAGES · LA VIDEO ARREDO3 PERD SON PICTOGRAMME
   -----------------------------------------------------------------------------
   PAGES retire le bouton et la phrase sous la boucle. Le client veut garder la
   boucle courte et l'ouverture au clic. Le disque dore etait pose par notre
   composant : il disparait ici.

   LA ZONE CLIQUABLE RESTE, et c'est le point important : le bouton couvre
   toujours toute la boucle, il devient seulement invisible. Sans lui, retirer
   le disque aurait retire l'ouverture au clic avec lui.

   RISQUE SIGNALE, il est reel : une video sans aucun repere de lecture ne dit
   pas qu'elle s'ouvre. Il ne reste que le curseur en main, qui n'existe pas au
   doigt. C'est la demande du client, elle est appliquee telle quelle, et elle
   se defait en retirant ce bloc.
   ----------------------------------------------------------------------------- */
.mtc-video-lecture-disque{ display: none; }
.mtc-video-lecture{ background: none; border: 0; }


/* -----------------------------------------------------------------------------
   COORDINATION PAGES · « QUI SOMMES-NOUS » AVEC DEUX PHOTOS
   -----------------------------------------------------------------------------
   PAGES retire la troisieme photo. La composition de la L27 avait ete calculee
   pour trois : avec deux, elle occupe y 7 -> 63,8 % du cadre et laisse 36 % de
   vide en bas. Mesure faite en production le 25/09, le retrait est deja en
   ligne : cadre 657 x 834, photo 1 a 6 / 7 %, photo 2 a 54,5 / 35 %, et rien
   en dessous.

   NOUVELLE COMPOSITION. Positions retenues, en pourcentage du cadre, largeur
   de 52 % pour les deux : photo 1 a (7 ; 8), photo 2 a (37 ; 55).
   Boites mesurees AU REPOS, rotation comprise, cadre 657 x 834 a 1440 :
     photo 1  x  6,4 -> 59,6   y  7,5 -> 44,7
     photo 2  x 36,4 -> 89,6   y 54,5 -> 92,9
   Elles se chevauchent de 23,2 points en largeur et sont disjointes de
   9,8 points en hauteur : c'est une cascade, pas deux blocs isoles. Le vide en
   bas du cadre passe de 35,8 % a 7,1 %.

   ECARTEMENT ET ROTATION, ET C'EST LA QUE LES VALEURS SE FIXENT. A pleine
   ouverture site.js ecarte la photo 1 de -7 / -13 % de SA taille avec une
   rotation de -3,8 degres, et la photo 2 de +8 / +12 % avec +3,6 degres. Ce ne
   sont pas de petites valeurs : une composition qui tient au repos deborde des
   quatre cotes en mouvement. Premier jeu essaye, largeur 60 % a (4 ; 5) et
   (36 ; 53) : mesure a pleine ouverture -1,9 % a gauche, -1,9 % en haut,
   -2,5 % a droite, -2,8 % en bas. Quatre debordements. Les valeurs ci-dessous
   sont celles qui passent.
   Boites mesurees A PLEINE OUVERTURE :
     photo 1  x  1,9 -> 56,8   y  2,0 -> 40,7
     photo 2  x 39,7 -> 94,6   y 58,2 -> 98,1
   Marges minimales : gauche 1,9 %   haut 2,0 %   droite 5,4 %   bas 1,9 %.
   Toutes positives, et toutes au-dessus du minimum de 1,1 % accepte en L27 :
   aucun debordement, la section ne coupe plus rien.

   AUCUNE LEGENDE RECOUVERTE. La photo 1 finit a y 44,7 au repos, la photo 2
   commence a y 54,5 : 9,8 points d'ecart. Et comme la photo 1 ne monte que et
   la photo 2 ne descend que, l'ecart ne peut que grandir en mouvement : le
   repos est le cas le plus serre, celui qui a ete mesure.

   POURQUOI PAS DE SUPERPOSITION FRANCHE, et c'est la demande a laquelle je ne
   reponds qu'a moitie : une legende occupe toute la largeur de sa photo. Tout
   chevauchement vertical entre les deux photos mange un nom, puisque leurs
   plages horizontales se croisent. C'est la contrainte qui avait deja fixe les
   valeurs de la L27. Le chevauchement est donc horizontal, le decalage
   vertical : la composition se lit comme une cascade, aucun nom n'est coupe.

   La classe est posee par site.js, qui compte les photos. A trois photos, rien
   de tout ceci ne s'applique et la composition de la L27 reste en place.
   ----------------------------------------------------------------------------- */
@media (min-width: 961px){
  .mtca-media-cadre.est-a-deux .mtca-photo-1{
    left: 7%; top: 8%; right: auto; bottom: auto;
    width: 52%;
    z-index: 1;
  }
  .mtca-media-cadre.est-a-deux .mtca-photo-2{
    left: 37%; top: 55%; right: auto; bottom: auto;
    width: 52%;
    z-index: 2;
  }
}


/* -----------------------------------------------------------------------------
   6 · BARRE D'ACTION FIXE, TELEPHONE ET TABLETTE
   -----------------------------------------------------------------------------
   Quatre actions : le rendez-vous, les deux cogerants au telephone, le courriel.
   Aucune donnee inventee : les deux numeros et l'adresse sont ceux du pied de
   page servi, relus le 25/09.

   ELLE NE MASQUE RIEN. site.js mesure sa hauteur et l'ecrit dans --mtc-barre-h
   sur la racine ; le corps recoit ce rembourrage en bas. Le rembourrage suit
   donc la hauteur reelle, zone sure comprise, et vaut zero quand la barre
   n'existe pas. Mesure sur page longue et page courte dans le rapport 251.

   ZONE SURE. env(safe-area-inset-bottom) est ajoute au rembourrage interne :
   sur un telephone a barre de geste, les libelles remontent au-dessus d'elle.
   Sur un appareil qui n'en declare pas, la valeur de repli est 0 et rien ne
   change.

   COLLISION AVEC LE RETOUR EN HAUT : releve fait avant d'ecrire, a 1440 et a
   390, sur une page longue et apres defilement. Aucun element en position fixe
   flottant en bas de l'ecran n'existe sur le site : il n'y a que l'en-tete, a
   900, et le panneau du menu mobile, a 1010. Il n'y a donc rien a eviter
   aujourd'hui. La barre se pose a 1000 : au-dessus du contenu, SOUS le panneau
   du menu, qui doit la recouvrir quand il s'ouvre. Et --mtc-barre-h est publiee
   a la racine precisement pour qu'un futur bouton flottant s'en serve comme
   base, sans avoir a mesurer quoi que ce soit.

   CLAVIER VIRTUEL. Une barre fixe en bas et un clavier virtuel se disputent le
   meme bord. site.js replie la barre des qu'un champ du formulaire prend le
   focus et la remet au retrait du focus : le clavier ne la rencontre jamais.
   ----------------------------------------------------------------------------- */
.mtc-barre{
  position: fixed;
  left: 0; right: 0; bottom: 0;
  z-index: 1000;
  display: none;
  grid-template-columns: repeat(4, 1fr);
  margin: 0;
  background: rgba(10,9,8,.96);
  border-top: 1px solid var(--svc-filet-or, rgba(184,148,95,.28));
  box-shadow: 0 -6px 24px rgba(10,9,8,.5);
  padding-bottom: env(safe-area-inset-bottom, 0px);
  transition: translate .3s var(--svc-ease, cubic-bezier(.2,.7,.3,1));
}
@media (max-width: 1024px){
  .mtc-barre{ display: grid; }
}
/* Repliee : elle sort par le bas, elle ne disparait pas. */
.mtc-barre.est-repliee{ translate: 0 100%; }

.mtc-barre-item{
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: center;
  gap: 5px;
  min-height: 56px;
  padding: 9px 4px 10px;
  text-decoration: none;
  color: var(--mtc-blanc, #F7F4EF);
  font-size: .68rem;
  letter-spacing: .04em;
  line-height: 1.15;
  text-align: center;
  background: none;
  border: 0;
  border-left: 1px solid rgba(247,244,239,.1);
}
.mtc-barre-item:first-child{ border-left: 0; }
.mtc-barre-item svg{
  width: 20px; height: 20px;
  stroke-width: 1.6;
  color: var(--mtc-dore, #B8945F);
}
/* La premiere action est celle qu'on veut : elle porte le dore du bouton
   d'action principal, les trois autres restent sobres. */
.mtc-barre-item.est-prioritaire{
  background: var(--mtc-cta-degrade, linear-gradient(135deg,#D4B078 0%,#B8945F 55%,#A67D47 100%));
  color: var(--mtc-noir, #1A1A1A);
  font-weight: 600;
}
.mtc-barre-item.est-prioritaire svg{ color: var(--mtc-noir, #1A1A1A); }
.mtc-barre-item:active{ filter: brightness(1.12); }
.mtc-barre-item:focus-visible{
  outline: 2px solid var(--mtc-blanc-pur, #FFF);
  outline-offset: -3px;
}

/* Le rembourrage qui empeche la barre de manger le bas de la page. La valeur
   est ecrite par site.js et vaut 0 tant que la barre n'existe pas. */
body{ padding-bottom: var(--mtc-barre-h, 0px); }

@media (prefers-reduced-motion: reduce){
  .mtc-barre{ transition: none; }
}

/* -----------------------------------------------------------------------------
   5 · LE CTA DE FIN SUR LES ARTICLES ET LES CATEGORIES
   -----------------------------------------------------------------------------
   La section est posee par un extrait PHP, « extrait-cta-articles.php », sur le
   crochet blocksy:footer:before : apres </main>, juste avant le pied de page.
   Elle reprend .mtc-svc-cta au balisage pres, donc TOUT son style existe deja.
   Typographie relevee des deux cotes, a 1920 : oeil 24 px, titre 48 px,
   colonne interieure 820 px. Identiques.

   LA SEULE REGLE NOUVELLE EST CELLE-CI, et voici pourquoi. Sur les pages
   pilier, l'air autour de la section vient de la rangee Kadence qui la
   contient. Hors de <main>, cette rangee n'existe pas : mesure a 1920, la
   section sort a 388 px de haut, filet colle en haut et boutons colles en bas.
   On lui rend donc sa respiration, a l'echelle des autres sections du site.

   CE QUI N'EST PAS REPRIS, et c'est un choix SEO : la version des pages pilier
   porte en plus une signature, un bloc NAP et un bloc de zone desservie, 299 px
   au total. Les recopier au bas des vingt-quatre articles dupliquerait le meme
   paragraphe vingt-quatre fois. Le CTA des articles s'arrete donc au couple
   titre + boutons.
   ----------------------------------------------------------------------------- */
.mtc-svc-cta-articles{
  padding-block: clamp(56px, 7vw, 96px);
}

/* PASSE v27.16 · fin */


/* =============================================================================
   PASSE v27.17 · 25/09/2026 · QUATRE POINTS DU PILOTE
   -----------------------------------------------------------------------------
   Source : releve du pilote sur la L29 en ligne. Rapport 252. Livraison L30.
   Meme numero de version pour site.css et site.js.

   PERIMETRE inchange : ni le balisage, ni les fiches, ni le module de prix de
   l'accueil, ni les classes .mtcd- du formulaire.
   ============================================================================= */


/* -----------------------------------------------------------------------------
   1 · LE SOCLE DU HERO
   -----------------------------------------------------------------------------
   PAGES a pose section.mtc-hero-socle sans qu'aucune de ses classes existe dans
   la feuille. Verifie avant d'ecrire : zero occurrence de mtc-hero-socle et de
   mtc-hero-reperes. Resultat en ligne, mesure a 1440 : une liste a puces brute,
   list-style: disc, quatre lignes de 1 385 px, et le socle a 424 px de haut.

   LE TRAITEMENT EST REPRIS DE .mtcb-reassurance, le bandeau que ce socle
   remplace : memes filets horizontaux au-dessus et au-dessous des chiffres,
   memes filets verticaux entre eux, meme oeil dore, meme hierarchie entre la
   valeur et sa legende. Les echelles sont plus courtes, puisque tout l'objet de
   la demande est de gagner de la place : la valeur descend de clamp(2,6 ; 5vw ;
   4,2rem) a clamp(2,2 ; 3,9vw ; 3,4rem).

   LA LIGNE DE BASE DES TROIS CHIFFRES. Le troisieme n'est pas un nombre mais un
   texte, « Sur rendez-vous ». Sans precaution sa ligne fait 29 px contre 54 aux
   deux autres, les trois valeurs flottent et les trois legendes ne demarrent pas
   a la meme hauteur. Le remede est celui deja ecrit pour .mtcb-num en v27.11.x :
   une hauteur minimale egale a la taille de la valeur, et un alignement en bas
   quand la ligne porte la variante texte. Mesure apres : les trois valeurs sur
   la meme ligne de base au pixel, les trois legendes au meme sommet.

   LES REPERES. Plus de puces : quatre parts egales sur une ligne, separees par
   un filet vertical, pictogramme dore et deux mots centres. Sous 690 px ils
   passent sur deux colonnes, alignes a gauche, avec un filet entre les colonnes
   et un filet entre les deux rangees.

   LA GRILLE. Le socle reprend exactement la grille de contenu du site, celle de
   .mtcw-savoir .mtcw-inner : largeur calc(100% - 40px), plafond 1 560 px,
   centree. Mesure a 1440 : socle et reference a x 20 sur 1 385 px, au pixel.

   HAUTEUR : 424 px avant, 234 apres a 1440, 238 a 1920, 180 a 1024. La demande
   parlait d'environ 260 px : on est en dessous, et la place gagnee est allee
   dans les chiffres plutot que dans le vide.
   ----------------------------------------------------------------------------- */
.mtc-hero-socle{
  width: calc(100% - 40px);
  max-width: 1560px;
  margin: clamp(26px, 3vw, 40px) auto 0;
  padding-inline: 0;
}
.mtc-hero-socle *{ box-sizing: border-box; }

.mtc-hero-chiffres{
  display: flex;
  align-items: stretch;
  justify-content: space-between;
  gap: clamp(20px, 3vw, 48px);
  padding: clamp(24px, 2.8vw, 34px) 0;
  border-top: 1px solid var(--svc-filet-or, rgba(184,148,95,.28));
  border-bottom: 1px solid var(--svc-filet-or, rgba(184,148,95,.28));
}
.mtc-hero-chiffre{ flex: 1 1 0; min-width: 0; }
.mtc-hero-chiffre-num{
  margin: 0 0 9px;
  display: flex; align-items: baseline; gap: 9px;
  color: var(--mtc-dore, #B8945F);
  line-height: 1;
  /* La ligne garde la hauteur d'une grande valeur, meme quand elle porte un
     texte : c'est ce qui aligne les trois legendes. */
  min-height: clamp(2.2rem, 3.9vw, 3.4rem);
}
.mtc-hero-chiffre-num:has(.mtc-hero-chiffre-txt){ align-items: flex-end; }
.mtc-hero-chiffre-val{
  font-size: clamp(2.2rem, 3.9vw, 3.4rem);
  font-weight: 400; letter-spacing: -.02em;
}
.mtc-hero-chiffre-txt{
  font-size: clamp(1.2rem, 2.1vw, 1.8rem);
  letter-spacing: .01em;
  white-space: nowrap;
}
.mtc-hero-chiffre-unit{
  font-size: clamp(.85rem, 1.2vw, 1.1rem);
  letter-spacing: .06em; text-transform: lowercase; opacity: .85;
}
.mtc-hero-chiffre-cap{
  margin: 0;
  color: var(--svc-c-texte-2, rgba(247,244,239,.72));
  line-height: 1.55;
  font-size: clamp(.82rem, .97vw, .95rem);
  max-width: 280px;
}
.mtc-hero-sep{
  flex: 0 0 1px; align-self: stretch;
  background: linear-gradient(180deg, transparent,
    rgba(184,148,95,.35) 22%, rgba(184,148,95,.35) 78%, transparent);
}

.mtc-hero-reperes{
  list-style: none;
  margin: 0; padding: 0;
  display: flex; align-items: stretch;
}
.mtc-hero-reperes li{
  flex: 1 1 0; min-width: 0;
  display: flex; align-items: center; justify-content: center; gap: 10px;
  padding: clamp(14px, 1.6vw, 19px) clamp(6px, 1vw, 14px);
  border-left: 1px solid rgba(184,148,95,.22);
  color: var(--svc-c-texte-2, rgba(247,244,239,.72));
  font-size: clamp(.78rem, .9vw, .88rem);
  letter-spacing: .02em; line-height: 1.3; text-align: center;
}
.mtc-hero-reperes li:first-child{ border-left: 0; }
.mtc-hero-reperes svg{
  width: 19px; height: 19px; flex-shrink: 0;
  color: var(--mtc-dore, #B8945F);
}

@media (max-width: 689.98px){
  .mtc-hero-chiffres{ flex-direction: column; gap: 0; padding: clamp(18px, 4vw, 24px) 0; }
  .mtc-hero-chiffre{ display: flex; align-items: baseline; gap: 14px; padding: 13px 0; }
  .mtc-hero-chiffre-num{ margin: 0; min-height: 0; flex: 0 0 auto; }
  .mtc-hero-chiffre-val{ font-size: 1.7rem; }
  .mtc-hero-chiffre-txt{ font-size: 1.05rem; white-space: normal; }
  .mtc-hero-chiffre-cap{ max-width: none; font-size: .82rem; line-height: 1.45; }
  .mtc-hero-sep{
    flex: 0 0 1px; height: 1px; width: 100%; align-self: auto;
    background: linear-gradient(90deg, transparent, rgba(184,148,95,.3), transparent);
  }
  .mtc-hero-reperes{ display: grid; grid-template-columns: repeat(2, 1fr); }
  .mtc-hero-reperes li{
    justify-content: flex-start; text-align: left; gap: 9px;
    padding: 12px 10px;
    border-left: 0;
    border-top: 1px solid rgba(184,148,95,.18);
  }
  .mtc-hero-reperes li:nth-child(2n){ border-left: 1px solid rgba(184,148,95,.18); }
  .mtc-hero-reperes li:nth-child(-n+2){ border-top: 0; }
}


/* -----------------------------------------------------------------------------
   2 · LES CINQ ZONES DE DEFILEMENT
   -----------------------------------------------------------------------------
   ETAT MESURE a 1440 x 900, zone / enfant collant / residu / course :
     .mtcs-scroll   1 710 /   847 /   863 / 810
     .mtcsh-scroll  1 620 /   894 /   726 / 720
     .mtcr-scroll   1 707 / 1 077 /   630 / 807
     .mtcp-scroll   1 800 /   780 / 1 020 / 900
     .mtca-scroll   1 749 / 1 119 /   630 / 849
   Page entiere : 19 880 px. Trois zones sont encore ecrites en unites de
   fenetre, 190vh, 180vh et 200vh ; deux derivent deja du contenu.

   OU FINIT L'ANIMATION, zone par zone. Ce n'est pas mesurable dans le panneau
   de controle : il est masque, requestAnimationFrame y est suspendu et les cinq
   modules ne tournent pas. La fraction est donc CALCULEE sur les constantes de
   site.js, ce qui est exact et verifiable ligne a ligne :
     .mtcs   a = p / 0,72 ; derniere carte startI 0,80 + span 0,20  ->  p = 0,72
     .mtcsh  ecartement = clamp(p) , lineaire                       ->  p = 1,00
     .mtcr   a = p / 0,72 ; derniere carte 0,65 + 0,36 ; CTA a 1,00 ->  p = 0,72
     .mtcp   pos = p x 5 ; derniere etape rangee a 4 + GLISSE 0,62  ->  p = 0,92
     .mtca   ecartement = clamp(p) , lineaire                       ->  p = 1,00

   ET C'EST LA QUE JE DOIS ETRE FRANC. Deux zones seulement ont de la course
   reellement morte : .mtcs et .mtcr, 28 % chacune, soit 227 et 226 px. Les
   trois autres animent jusqu'au bout de la course par construction : leur
   ecartement est une fonction lineaire de p. Couper la course n'y supprime
   aucune pause, cela accelere le mouvement. Appliquer la regle « animation
   finie a 40 %, donc 60 % de course morte » n'y donnerait que 453 px sur
   19 880, soit 2 %. Le client ne le verrait pas.

   CE QUE JE FAIS DONC, et c'est un arbitrage, pas un simple nettoyage : les
   cinq zones passent au meme regime, hauteur derivee du contenu plus une course
   bornee et IDENTIQUE partout. La course collante devient la meme dans les cinq
   sections, 348 px a 900 de haut, la ou elle allait de 510 a 900. Les deux
   zones a course morte la perdent ; les trois autres jouent la meme animation
   sur moins de defilement.

   MESURES APRES, a 1440 x 900 :
     .mtcs   1 710 -> 1 315   course 810 -> 415   collante 743 -> 348
     .mtcsh  1 620 -> 1 362   course 720 -> 462   collante 606 -> 348
     .mtcr   1 707 -> 1 545   course 807 -> 645   collante 510 -> 348
     .mtcp   1 800 -> 1 248   course 900 -> 348   collante 900 -> 348
     .mtca   1 749 -> 1 587   course 849 -> 687   collante 510 -> 348
   Page entiere : 19 880 -> 18 351, soit 1 529 px de moins, 7,7 %.

   POURQUOI 52vh ET PAS MOINS. A clamp(300px, 46vh, 520px) la page tombe a
   18 081, 1 799 px de moins. Mais la course de .mtcp descend alors a 294 px
   pour cinq etapes, soit 272 px d'animation : moins de trois crans de molette
   pour cinq etapes, c'est precipite. La valeur retenue garde au moins 321 px
   d'animation dans la zone la plus serree. Une seule ligne a changer si le
   client veut aller plus loin.

   MOUVEMENT REDUIT. Les cinq zones y passent deja en hauteur automatique, mais
   gardaient leur rembourrage : c'etait du defilement vide offert a quelqu'un qui
   demande justement moins de mouvement. Il tombe a zero.
   ----------------------------------------------------------------------------- */
/* v27.20 (L33) · LA COURSE COLLANTE EST FIXE ET IDENTIQUE : 440 px, sans vh.
   Elle remplace clamp(330px, 52vh, 580px) ci-dessus (v27.17) ET les deux coupes
   de la v27.19, clamp(300px, 42vh, 500px) sur .mtcs-scroll et clamp(270px,
   37vh, 440px) sur .mtcr-scroll, toutes trois retirees : une seule regle, pas
   quatre empilees.

   POURQUOI UN PSEUDO-ELEMENT ET PAS UN REMBOURRAGE, et c'est le point qui
   compte. Un element collant ne peut se deplacer qu'a l'interieur de la BOITE
   DE CONTENU de son bloc conteneur. Le rembourrage bas de la zone n'en fait
   pas partie : avec height: auto et padding-bottom, la boite de contenu de la
   zone a exactement la hauteur de la section, la section n'a aucune place pour
   se deplacer, et elle ne s'epingle JAMAIS. Elle defile avec la page pendant
   que le module anime. Mesure dans le panneau, 25/09 (rapport 257) :
     zone height: 800px, enfant collant 300 px       colle a top: 10 sur 500 px
     zone height: auto + padding-bottom: 500px        ne colle jamais
     zone height: auto + ::after de 500 px            colle a top: 10 sur 500 px
   C'etait donc l'etat des cinq sections depuis que leur zone est passee au
   rembourrage : .mtca et .mtcr depuis la v27.11.x, les trois autres depuis la
   v27.17. Un rembourrage de 440 px aurait laisse ce defaut en place.
   Le pseudo-element ::after est un bloc de 440 px DANS la boite de contenu,
   apres la section : la section dispose de 440 px de course collante, la zone
   garde la meme hauteur totale qu'avec un rembourrage, et site.js lit toujours
   zone.offsetHeight - section.offsetHeight = 440.

   POURQUOI UNE VALEUR FIXE. site.js (v27.20) calcule la progression sur cette
   course : p = 1 exactement au decrochage. La course n'a plus a suivre la
   hauteur de fenetre pour tomber juste, et une valeur fixe donne la meme
   longueur d'animation sur tous les ecrans.
   Sous 1025 px et en mouvement reduit, aucune course : le pseudo-element n'y
   existe pas, et padding-bottom: 0 ci-dessous reste. Le hero n'est pas
   concerne. */
@media (min-width: 1025px){
  .mtcs-scroll,
  .mtcsh-scroll,
  .mtcr-scroll,
  .mtcp-scroll,
  .mtca-scroll{
    height: auto;
    padding-bottom: 0;
  }
  .mtcs-scroll::after,
  .mtcsh-scroll::after,
  .mtcr-scroll::after,
  .mtcp-scroll::after,
  .mtca-scroll::after{
    content: "";
    display: block;
    height: 440px;
  }
}
@media (prefers-reduced-motion: reduce){
  .mtcs-scroll::after,
  .mtcsh-scroll::after,
  .mtcr-scroll::after,
  .mtcp-scroll::after,
  .mtca-scroll::after{ display: none; }
}
@media (max-width: 1024px){
  .mtcs-scroll,
  .mtcsh-scroll,
  .mtcr-scroll,
  .mtcp-scroll{ padding-bottom: 0; }
}
@media (prefers-reduced-motion: reduce){
  .mtcs-scroll,
  .mtcsh-scroll,
  .mtcr-scroll,
  .mtcp-scroll,
  .mtca-scroll{ padding-bottom: 0; }
}


/* -----------------------------------------------------------------------------
   3 · LES DEUX PORTRAITS SE SUPERPOSENT
   -----------------------------------------------------------------------------
   Nath tranche l'obstacle signale en L29 : les legendes sortent de la zone de
   recouvrement. Voici comment, et pourquoi de cette facon.

   CE QUI BLOQUAIT. Chaque legende est en position absolue sur le bas de SA
   photo, sur toute sa largeur, avec un voile degrade. La photo 2 arrive par le
   bas-droite : tout chevauchement vertical lui faisait recouvrir la bande basse
   de la photo 1, donc le nom de Mathieu.

   LES DEUX ISSUES POSSIBLES, mesurees avant de choisir. Le nom le plus long,
   « Thomas DELANNOY », fait 153 px de large, le role 60 px : une legende n'a
   donc besoin que d'environ 185 px. On pouvait l'ancrer a gauche sur cette
   largeur. Mais avec des photos assez grandes pour remplir le cadre, le
   recouvrement horizontal monte a 245 px : le texte de la photo 1 finirait a
   2 px du bord de la photo 2. Deux pixels, ce n'est pas une marge.

   CE QU'ON FAIT DONC : la legende de la photo 1 passe EN HAUT de sa photo, le
   seul cote que la photo 2 ne peut jamais atteindre, puisqu'elle arrive par le
   bas-droite. Son voile degrade est retourne, du sombre en haut vers le
   transparent en bas. La legende de la photo 2 reste en bas : rien ne passe
   au-dessus d'elle. Les deux textes sont alignes a gauche, ce qui les ancre du
   cote sur lequel ils sont surs.

   LA COMPOSITION. Largeur 58 % pour les deux, photo 1 a (8 ; 9), photo 2 a
   (30 ; 40,9). Boites mesurees au repos, rotation comprise, cadre 657 x 834 :
     photo 1  x  7,3 -> 66,7   y  8,4 -> 49,9
     photo 2  x 29,4 -> 88,6   y 40,3 -> 83,2
   RECOUVREMENT VERTICAL : 80 px a 1440, 90 a 1920, 56 a 1024. Le recouvrement
   est proportionnel, comme toute la composition : a 1024 le cadre fait 459 px
   de large contre 740 a 1920, et 56 px y sont le meme recouvrement relatif que
   90 la-bas. La fourchette demandee, 60 a 90 px, est tenue a 1440 et a 1920 ;
   a 1024 on est 4 px en dessous, et je le dis plutot que de casser la
   proportion pour quatre pixels.
   Recouvrement horizontal : 245 px a 1440.

   MARGES, enveloppe du mouvement et rotation comprises : gauche 2,3 %,
   haut 2,3 %, droite 5,8 %, bas 11,0 %. Toutes au-dessus des 1,9 % de la L29 et
   des 1,1 % de la L27. Le bas est plus genereux qu'avant : c'est le prix du
   recouvrement, deux photos qui se chevauchent occupent moins de hauteur que
   deux photos qui se suivent.

   AUCUN NOM COUVERT, verifie a 1920, 1440 et 1024, au repos ET a pleine
   ouverture, par intersection des rectangles du nom et du role avec la boite de
   l'autre photo. Aucun debordement de texte hors de sa boite.

   SOUS 961 px rien de ceci ne s'applique : le cadre passe en display: contents,
   les photos s'empilent et les legendes reprennent leur place en bas.
   ----------------------------------------------------------------------------- */
@media (min-width: 961px){
  .mtca-media-cadre.est-a-deux .mtca-photo-1{
    left: 8%; top: 9%; right: auto; bottom: auto;
    width: 58%;
    z-index: 1;
  }
  .mtca-media-cadre.est-a-deux .mtca-photo-2{
    left: 30%; top: 40.9%; right: auto; bottom: auto;
    width: 58%;
    z-index: 2;
  }
  /* La legende de la photo 1 monte, et son voile se retourne avec elle. */
  .mtca-media-cadre.est-a-deux .mtca-photo-1 .mtca-photo-cap{
    inset: 0 0 auto;
    padding: 14px 16px 30px;
    background: linear-gradient(180deg,
      rgba(10,9,8,.78), rgba(10,9,8,.55) 55%, rgba(10,9,8,0));
    text-align: left;
  }
  .mtca-media-cadre.est-a-deux .mtca-photo-2 .mtca-photo-cap{
    text-align: left;
  }
}


/* -----------------------------------------------------------------------------
   4 · LES CARTES AVEC ET SANS PHOTO, COTE A COTE
   -----------------------------------------------------------------------------
   AUCUNE REGLE ICI, et c'est le resultat du controle. Mesures a 1440 :
     Dressing, cinq photos posees   cartes 261 x 758, figure 326, picto a 352,
                                    numero sur la ligne du picto
     Salle de bain, aucune photo    cartes 261 x 412, picto a 31,
                                    numero dans l'angle
   Meme largeur, meme grille, meme rembourrage de 30 px, meme typographie. Chaque
   rangee est uniforme : les cinq cartes d'une meme section font la meme hauteur.

   LA PREUVE QUE LES DEUX RENDUS COHABITENT : la page Cuisine sur mesure porte
   DEJA les deux, l'un sous l'autre. « Ce qui fait le prix » fait 368 px sans
   photo, « Le jour de la pose » fait 735 px avec. C'est en ligne depuis la L26
   et personne ne l'a releve. Un visiteur ne voit jamais Dressing et Salle de
   bain en meme temps ; il voit en revanche ces deux sections sur la meme page.

   CE QUI SE VOIT, EN REVANCHE, et c'est sur Dressing : la premiere photo est un
   panorama au rapport 2,22 dans un cadre 4/5. Avec object-fit: cover, il n'en
   reste que 36 % de la largeur, donc 64 % de la photo est coupee. Les quatre
   autres, en portrait 0,45, perdent 44 % de leur hauteur, ce qui est le jeu
   normal d'un cadre. La premiere, non. C'est un choix de photo, pas une regle a
   ecrire : signale a PAGES dans le rapport 252.
   ----------------------------------------------------------------------------- */

/* PASSE v27.17 · fin */



/* =============================================================================
   PASSE v27.18 · 25/09/2026 · QUATRE POINTS DU PILOTE
   -----------------------------------------------------------------------------
   Source : releve du pilote sur la L30 en ligne. Rapports 253 et 254.
   Livraison L32. Meme numero de version pour site.css et site.js.

   RETOUR ARRIERE ASSUME, ET IL FAUT QU'IL SOIT ECRIT ICI. La premiere version
   de cette passe retirait l'epinglage des cinq sections de l'accueil. C'etait
   une erreur : la course collante ne servait pas qu'a occuper du defilement,
   elle PILOTAIT les animations — l'ecartement des photographies, les
   apparitions progressives, toute la choregraphie. En basculant les cinq
   modules sur leur chemin observateur, on a perdu cette choregraphie et des
   photographies ont cesse de s'afficher. Tout ce bloc a ete retire.

   CE QUI EST FAIT A LA PLACE, et c'est ce que le rapport 252 proposait deja :
   on coupe la course MORTE, et seulement elle, sur les deux zones qui en ont.
   Voir le point 1 ci-dessous. Les trois autres ne sont pas touchees.

   PERIMETRE inchange : ni le balisage, ni les fiches, ni le module de prix de
   l'accueil, ni les classes .mtcd- du formulaire.
   ============================================================================= */


/* -----------------------------------------------------------------------------
   1 · LA COURSE MORTE DE .mtcs-scroll ET .mtcr-scroll  ·  RETIRE EN v27.20
   -----------------------------------------------------------------------------
   La v27.19 ramenait la course de ces deux zones a 72 % par deux clamps, avec
   a = p dans site.js. La v27.20 (L33) remplace ce dispositif : les cinq zones
   ont la meme course fixe de 440 px (bloc « 2 · LES CINQ ZONES » de la passe
   v27.17, regle reecrite sur place), et site.js calcule la progression sur la
   course collante avec a = p / 0,9 pour ces deux modules. Les deux clamps sont
   retires d'ici pour qu'aucune regle ne s'empile. Mesures dans le rapport 257.
   ----------------------------------------------------------------------------- */


/* -----------------------------------------------------------------------------
   4 · LA BANDE DE VIGNETTES PREND TOUTE LA LARGEUR  ·  RETIRE EN v27.22 (L35)
   -----------------------------------------------------------------------------
   La v27.18 remplacait les bornes de colonne par des fractions egales
   (minmax(0, 1fr), justify-content: stretch) : la consigne « les vignettes
   prennent toute la largeur » etait appliquee comme un ETIREMENT. Mesure sur
   « Cuisine en U », 1440 : huit vignettes de 145 px sur 1 254 ; avec deux
   photos, deux paves de la moitie du diaporama. Les deux regles sont retirees.
   Regle definitive : les vignettes reprennent leurs bornes de la v27.12 (84 a
   128 px hors diaporama, 64 a 96 px sous le diaporama, 62 px sous 690 px), une
   seule rangee, CENTREE sous le diaporama quel que soit le nombre de photos :
   justify-content: center sur la regle .est-comptee de la v27.12, plus haut.
   Le compte de colonnes reste egal au nombre de photos, les plafonds 8 / 6 / 4
   et la tuile « + N voir plus » restent (site.js). Rapport 264.
   ----------------------------------------------------------------------------- */


/* -----------------------------------------------------------------------------
   5 · LE CTA DE FIN : EXCLUSIVITE AVEC LE BLOC CONTEXTUEL
   -----------------------------------------------------------------------------
   L'extrait WPCode n'emet que du balisage : tout le graphique est ici, sans
   exception, pour qu'il n'y ait jamais deux sources de verite sur ce bloc.

   L'EXCLUSIVITE, arbitree par Nath. Le bloc contextuel .mtc-art-cta se trouve
   a 71 % de la page sur un article, donc juste au-dessus du nouveau : deux
   appels a l'action empiles, c'est non. Le CTA de pied de page gagne, le bloc
   contextuel s'efface LA OU le nouveau s'affiche, et nulle part ailleurs.

   La condition n'est pas ecrite en dur, elle est lue sur la page : si la
   section de fin est presente, le bloc contextuel disparait. Un article ou
   l'extrait ne poserait rien, pour une raison ou une autre, garde donc son
   bloc contextuel. C'est ce que :has permet et ce qu'une classe de corps ne
   permettrait pas sans une seconde source de verite.
   :has est deja utilise dans cette feuille depuis la v27.13.

   VERIFIE : .mtc-art-cta existe aussi sur les fiches realisations, releve sur
   la fiche Leguevin. La meme regle s'y applique, les fiches etant des articles.
   ----------------------------------------------------------------------------- */
body:has(.mtc-svc-cta-articles) .mtc-art-cta{ display: none; }


/* -----------------------------------------------------------------------------
   2 · LE SOCLE DU HERO, UNE FOIS ENTRE DANS LE HERO
   -----------------------------------------------------------------------------
   UN AVERTISSEMENT AVANT TOUT, et il doit remonter a PAGES avant le
   deplacement. La demande dit de poser le socle « sous .mtc-static-cta-row ».
   Or .mtc-hero-static porte display: none au-dessus de 1024 px : ce balisage
   n'existe que sur tablette et telephone. Releve a 1440 : .mtc-hero-static fait
   0 px de haut, .mtc-static-cta-row aussi. Un socle pose la serait INVISIBLE
   sur poste fixe, c'est-a-dire exactement la ou le client regarde.
   Le socle doit donc devenir enfant direct de .mtc-hero-sticky, le volet
   reellement affiche au-dessus de 1024 px. Les regles ci-dessous sont ecrites
   pour cet emplacement et ne s'appliquent qu'a lui : tant que le balisage n'a
   pas bouge, elles ne visent rien et la page ne change pas.

   CE QUI CHANGE PAR RAPPORT AU SOCLE SUR FOND PLAT. Il ne s'agit pas de
   reporter des styles. Le socle passe d'un fond noir uni a une photographie :
     · un voile monte du bas, du transparent vers rgba(10,9,8,.82). Il porte la
       lisibilite du texte quelle que soit la photo, et il se fond dans le bas
       de l'image au lieu de poser un bandeau ;
     · le filet du haut disparait, le voile fait la separation ; celui du bas
       reste, entre les chiffres et les reperes ;
     · les valeurs descendent de clamp(2,2 ; 3,9vw ; 3,4rem) a
       clamp(1,6 ; 2,4vw ; 2,2rem). C'est la mesure qui compte pour ne pas
       concurrencer le bouton : le socle passe de 234 px a 169 px de haut, et
       la valeur dorée ne fait plus que 2,2rem contre 3,4 ;
     · les textes remontent en opacite, 0,72 a 0,82 pour les legendes et 0,86
       pour les reperes : sur une photographie claire, 0,72 ne tient pas.

   IL NE MANGE PAS LE BOUTON. Sans precaution, mesure faite : le socle
   recouvrait le bouton « Reserver mon rendez-vous » sur 53 px, le contenu du
   hero etant centre verticalement. site.js publie donc la hauteur reelle du
   socle dans --mtc-socle-h et le volet la prend en rembourrage bas. Mesure
   apres : 32 px d'air entre le bas du bouton et le haut du socle, aucun
   chevauchement.
   ----------------------------------------------------------------------------- */
/* v27.20 (L33) · DEUX COPIES, DEUX REGIMES · REPRIS EN v27.21 (L34).
   PAGES a finalement pose la copie du poste fixe DANS le volet revele,
   div.mtc-reveal, apres le bouton « Reserver mon rendez-vous », et non en
   enfant direct de .mtc-hero-sticky. Les regles de position absolue, de voile
   et de hauteur publiee (--mtc-socle-h, rembourrage bas du volet collant) sont
   RETIREES : le socle est dans le flux du volet revele, voir la passe v27.21 en
   fin de fichier. La copie du volet statique (telephone et tablette) ne change
   pas : dans le flux, sous le contenu, ci-dessous.
   .mtc-hero-static est un flex en ligne, centre : sans precaution la copie se
   poserait A COTE de .mtc-static-content, pas dessous. Des qu'il porte un
   socle, il passe en colonne ; le socle prend la largeur de la grille du site
   et remonte au-dessus du voile du hero statique (z-index 1, comme le contenu).
   Les regles typographiques restent sur #mtcHeroScroll : elles servent aux
   deux copies. */
@media (max-width: 1024px){
  .mtc-hero-static:has(> .mtc-hero-socle){ flex-direction: column; }
  .mtc-hero-static > .mtc-hero-socle{
    position: relative;
    z-index: 1;
    flex: 0 0 auto;
    width: calc(100% - 40px);
    max-width: 1560px;
    margin: 0 auto clamp(24px, 4vw, 40px);
  }
}
#mtcHeroScroll .mtc-hero-chiffres{
  padding: 0 0 clamp(12px, 1.4vw, 18px);
  border-bottom: 1px solid rgba(184,148,95,.30);
  gap: clamp(16px, 2.4vw, 40px);
}
/* Avec deux chiffres et un seul separateur, les deux parts restent egales
   (flex: 1 1 0 chacune) de part et d'autre du filet vertical. Le filet du haut
   de la copie statique garde son rembourrage au-dessus des chiffres. */
.mtc-hero-static > .mtc-hero-socle .mtc-hero-chiffres{
  padding-top: clamp(14px, 1.8vw, 20px);
}
#mtcHeroScroll .mtc-hero-chiffre-num{
  margin: 0 0 5px;
  min-height: clamp(1.6rem, 2.4vw, 2.2rem);
}
#mtcHeroScroll .mtc-hero-chiffre-val{ font-size: clamp(1.6rem, 2.4vw, 2.2rem); }
#mtcHeroScroll .mtc-hero-chiffre-txt{ font-size: clamp(.95rem, 1.35vw, 1.15rem); }
#mtcHeroScroll .mtc-hero-chiffre-unit{ font-size: clamp(.72rem, .9vw, .85rem); }
#mtcHeroScroll .mtc-hero-chiffre-cap{
  font-size: clamp(.74rem, .85vw, .84rem);
  line-height: 1.45;
  color: rgba(247,244,239,.82);
  max-width: none;
}
#mtcHeroScroll .mtc-hero-reperes li{
  padding: clamp(9px, 1vw, 13px) clamp(6px, .9vw, 12px);
  font-size: clamp(.72rem, .82vw, .8rem);
  color: rgba(247,244,239,.86);
}
/* Les pictogrammes : plus fins, plus petits. Les dessins eux-memes sont
   remplaces par site.js, le balisage appartenant a PAGES. */
#mtcHeroScroll .mtc-hero-reperes svg{
  width: 17px; height: 17px;
  stroke-width: 1.2;
}

/* PASSE v27.18 · fin */


/* =============================================================================
   PASSE v27.20 · 25/09/2026 · L33 · QUATRE POINTS (rapport 257)
   -----------------------------------------------------------------------------
   Les points 1 et 2 sont ecrits SUR PLACE, la ou vivaient les regles qu'ils
   remplacent, pour ne rien empiler :
     1 · la course collante des cinq zones de l'accueil : bloc « 2 · LES CINQ
         ZONES DE DEFILEMENT » de la passe v27.17 (regle reecrite, pseudo-element
         de 440 px) et bloc « 1 » de la passe v27.19 (les deux clamps retires) ;
     2 · le socle du hero en deux copies : bloc « 2 · LE SOCLE DU HERO » de la
         passe v27.18 (regles rescopees sur .mtc-hero-sticky > .mtc-hero-socle,
         copie du volet statique dans le flux).
   Le point 4 (un seul CTA de fin par page) n'a demande aucune regle : releve
   dans le rapport 257.
   Ici, le point 3 seulement.
   ============================================================================= */

/* -----------------------------------------------------------------------------
   3 · SALLE DE BAIN, « BIEN PENSER VOTRE SALLE DE BAIN AVANT D'EN TRACER LES
       PLANS » : LES CINQ FIGURES PASSENT AU PORTRAIT
   -----------------------------------------------------------------------------
   ETAT MESURE a 1440, page Salle de bain, section.mtc-svc-impl : cinq
   photographies portrait de 710 x 1536 dans des cadres 3/2 de 925 x 617, soit
   31 % de chaque photo visible. PAGES a pose la classe mtc-svc-impl-portrait
   sur la section, c'est elle qui porte les regles.

   LE CADRE. aspect-ratio 4/5 : 58 % de la photo visible au lieu de 31.

   L'AJUSTEMENT DE COLONNE, et pourquoi il est necessaire. La figure est posee
   AU-DESSUS du texte, sur toute la largeur de la colonne, 925 px : en 4/5 elle
   ferait 1 156 px de haut, plus que l'ecran. Au-dessus de 1024 px chaque
   bloc passe donc en deux colonnes, figure a gauche, numero, titre et
   paragraphes a droite, cales en haut (regle permanente : un bloc plus court
   se cale en haut). La figure occupe 38 % de la largeur du bloc, c'est la
   valeur mesuree pour qu'elle ne depasse JAMAIS la hauteur de la colonne de
   texte a 1440 :
     largeur de figure   44 %  407 x 509   texte 447 a 569   depasse sur 3 blocs
                         40 %  370 x 463   texte 447 a 543   depasse sur 2 blocs
                         38 %  352 x 439   texte 447 a 543   ne depasse sur aucun
   Le texte se replie sur 530 px de large au lieu de 925, d'ou sa hauteur.
   Les enfants du bloc ne sont pas enveloppes (numero, h3, paragraphes sont
   des freres directs de la figure) : la figure occupe la colonne 1 sur huit
   rangees implicites, les autres enfants tombent dans la colonne 2, une par
   rangee, les rangees vides font zero. Un sixieme paragraphe demain trouve sa
   rangee. Les equerres ::before/::after de la figure ne changent pas.

   A 390 : rien de tout cela, un bloc reste en colonne unique, la figure fait
   358 x 448 au-dessus du texte, a 28 px de lui, comme aujourd'hui en 3/2.

   RIEN NE CHANGE sur Cuisine sur mesure ni sur Dressing, living et bureau :
   la classe n'y est pas, leurs figures gardent le 3/2.
   ----------------------------------------------------------------------------- */
.mtc-svc-impl-portrait .mtc-svc-impl-fig{ aspect-ratio: 4 / 5; }
@media (min-width: 1025px){
  .mtc-svc-impl-portrait .mtc-svc-impl-item:has(> .mtc-svc-impl-fig){   /* v27.21 : sans figure, pas de colonne vide */
    display: grid;
    grid-template-columns: minmax(0, 38%) minmax(0, 1fr);
    column-gap: clamp(28px, 3vw, 44px);
    align-items: start;
  }
  .mtc-svc-impl-portrait .mtc-svc-impl-fig{
    grid-column: 1;
    grid-row: 1 / span 8;
    margin: 0;
  }
  .mtc-svc-impl-portrait .mtc-svc-impl-item > :not(.mtc-svc-impl-fig){ grid-column: 2; }
}

/* PASSE v27.20 · fin */


/* =============================================================================
   PASSE v27.21 · 25/09/2026 · L34 · CINQ POINTS (rapport 262)
   -----------------------------------------------------------------------------
   Points 1 et 5 : extraits WPCode (2483 corrige, extrait neuf pour le prefixe
   des titres d'archive), rien ici. Point 2 : site.js seul. Point 5, l'alt des
   vues du carrousel : site.js seul. Ici, les points 3 et 4.
   ============================================================================= */

/* -----------------------------------------------------------------------------
   3 · LE SOCLE DU HERO, DANS LE FLUX DU VOLET REVELE
   -----------------------------------------------------------------------------
   ETAT MESURE sur la L33, 1440 x 900 : PAGES a pose le socle en dernier enfant
   de div.mtc-reveal, apres le bouton. Volet revele de 200 a 892, socle de 702
   a 854, « Continuer votre navigation » de 823 a 878 : le socle recouvrait
   « Continuer » de 31 px. A 1366 x 768, de 87 px. Et sans le socle, le volet
   n'avait deja que 7 px d'air au-dessus de « Continuer » a 1366 x 768.

   LA REGLE (Nath) : le socle se lit entre le bouton du volet revele et
   « Continuer », il apparait avec le volet, pas avant.

   CE QUI EST FAIT.
   a) Le socle est dans le flux, dernier enfant du volet : il prend l'opacite et
      le mouvement du volet, ecrits par site.js sur #mtcReveal a chaque image.
      Plus de position absolue, plus de voile, plus de --mtc-socle-h.
   b) Il se resserre en une bande : les deux chiffres sur UNE ligne (valeur et
      legende cote a cote, sur la ligne de base), les quatre reperes sur une
      ligne. La bande prend toute la largeur du volet, rembourrage compris
      (marges negatives egales au rembourrage lateral, porte par le jeton
      --mtc-reveal-px qui suit les paliers d'ecran peu haut) : c'est ce qui
      tient chaque legende et chaque repere sur une seule ligne.
   c) LE VOLET S'ANCRE EN BAS sous 1 000 px de haut. Centre a 50 % + entete/2,
      le volet ne peut pas tenir : a 1440 x 900 il aurait 522 px au plus avant
      de toucher « Continuer », et le contenu seul en fait 500. Sous 1 000 px
      il s'ancre a 16 px au-dessus de « Continuer » (bottom: 6vh + 55 + 16) et
      se deroule vers le haut. site.js ecrit translate(-50%,-50%) dans
      transform ; la propriete translate: 0 50% le compense, les deux se
      composent. A 1080 et plus, le centrage d'origine reste.
   d) Sous 800 px de haut, les chiffres descendent d'un cran (1,15rem), pas le
      texte du volet.

   MESURE, volet revele + socle + « Continuer », rembourrage compris :
     1366 x 768   volet 139 -> 651 (512 px), 11 px sous l'en-tete ;
                  bouton -> socle 16 ; socle -> « Continuer » 34 ; socle 60 px
     1440 x 900   volet 252 -> 775 (523 px), 124 px sous l'en-tete ;
                  bouton -> socle 16 ; socle -> « Continuer » 34 ; socle 71 px
     1920 x 1080  volet 368 -> 840 (471 px), centre ;
                  bouton -> socle 16 ; socle -> « Continuer » 159 ; socle 72 px
   Legendes et reperes sur une ligne aux trois tailles. Aucun chevauchement.
   Sous 1025 px rien ne change : la copie du volet statique reste dans le flux
   comme livree en L33.
   ----------------------------------------------------------------------------- */
@media (min-width: 1025px){
  #mtcHeroScroll .mtc-reveal{ --mtc-reveal-px: 54px; }
  #mtcHeroScroll .mtc-reveal .mtc-hero-socle{
    position: static;
    width: calc(100% + 2 * var(--mtc-reveal-px));
    max-width: none;
    margin: 16px calc(-1 * var(--mtc-reveal-px)) 0;
    padding: 0;
    background: none;
  }
  #mtcHeroScroll .mtc-reveal .mtc-hero-chiffres{
    display: flex; align-items: center; justify-content: center;
    gap: clamp(14px, 1.6vw, 28px);
    padding: 8px 0;
    border-top: 1px solid rgba(184,148,95,.30);
    border-bottom: 1px solid rgba(184,148,95,.30);
  }
  #mtcHeroScroll .mtc-reveal .mtc-hero-chiffre{
    flex: 0 1 auto; min-width: 0;
    display: flex; align-items: baseline; gap: 9px;
  }
  #mtcHeroScroll .mtc-reveal .mtc-hero-chiffre-num{
    margin: 0; min-height: 0; flex: 0 0 auto; align-items: baseline;
  }
  #mtcHeroScroll .mtc-reveal .mtc-hero-chiffre-val{ font-size: clamp(1.15rem, 1.5vw, 1.45rem); }
  #mtcHeroScroll .mtc-reveal .mtc-hero-chiffre-txt{ font-size: clamp(.95rem, 1.15vw, 1.1rem); white-space: nowrap; }
  #mtcHeroScroll .mtc-reveal .mtc-hero-chiffre-unit{ font-size: .72rem; }
  #mtcHeroScroll .mtc-reveal .mtc-hero-chiffre-cap{
    margin: 0; max-width: none;
    font-size: .74rem; line-height: 1.3; text-align: left;
  }
  #mtcHeroScroll .mtc-reveal .mtc-hero-sep{ flex: 0 0 1px; align-self: stretch; }
  #mtcHeroScroll .mtc-reveal .mtc-hero-reperes li{ padding: 8px 6px; font-size: .7rem; gap: 8px; }
  #mtcHeroScroll .mtc-reveal .mtc-hero-reperes svg{ width: 15px; height: 15px; }
}
@media (min-width: 1025px) and (max-height: 1000px){
  .mtc-reveal{
    top: auto;
    bottom: calc(6vh + 71px);   /* « Continuer » : bottom 6vh, 55 px de haut, plus 16 px d'air */
    translate: 0 50%;           /* compense le -50 % vertical que site.js ecrit dans transform */
  }
}
@media (min-width: 1025px) and (max-height: 1000px) and (min-height: 661px){
  /* Entre les paliers d'ecran peu haut (660 et 600) et 1 000 px : marges
     resserrees sans toucher aux tailles de texte du volet. */
  .mtc-reveal{ padding: 18px 54px; }
  .mtc-reveal-strong{ margin: 0 0 16px; }
  .mtc-piliers{ margin: 0 0 18px; }
}
@media (min-width: 1025px) and (max-height: 800px){
  #mtcHeroScroll .mtc-reveal .mtc-hero-chiffre-val{ font-size: 1.15rem; }
  #mtcHeroScroll .mtc-reveal .mtc-hero-chiffre-txt{ font-size: .95rem; }
  #mtcHeroScroll .mtc-reveal .mtc-hero-chiffres{ padding: 6px 0; }
  #mtcHeroScroll .mtc-reveal .mtc-hero-reperes li{ padding: 6px 6px; }
}

/* -----------------------------------------------------------------------------
   4 · A PROPOS, « LE SHOWROOM EN IMAGES » : LE DIAPORAMA A LA LARGEUR D'UNE VUE
       PAYSAGE
   -----------------------------------------------------------------------------
   ETAT MESURE a 1440 x 900 : .mtc-art-strip.est-diapo fait 1 385 px de large,
   la scene aussi, et la hauteur d'image est bornee a 74vh = 666 px (regle
   v27.15). Une vue paysage 3/2 fait donc 999 x 666 et une vue portrait 2/3
   444 x 666 : les deux flottent dans une scene de 1 385, le portrait avec
   470 px de vide de chaque cote.

   LA REGLE, sur cette section seulement : le cadre et la bande de vignettes
   prennent la largeur d'une vue paysage entiere a la hauteur actuelle, soit
   la hauteur bornee multipliee par 3/2, plafonnee a la largeur disponible, et
   se centrent. Le titre et le filet gardent la largeur de la section.
   3/2 est le rapport le plus large des 19 photos de cette page (2000 x 1334
   et 1334 x 2000, releve dans le balisage) : c'est aussi ce que site.js ecrit
   dans --mtc-diapo-rmax, mais ce jeton vit sur la scene, un descendant, et
   n'est pas lisible ici. La valeur est donc ecrite, avec la meme expression de
   hauteur que la regle v27.15 pour que les deux ne divergent jamais.

   MESURE apres, 1440 x 900 : cadre 999 x 702, centre (193 px de chaque cote),
   vue paysage 998 x 666 pleine largeur, vue portrait 444 x 666 centree. La
   bande de vignettes suit : 999 px, 9 colonnes de 99 px, compteur « +11 »
   juste (site.js recalcule le nombre de tuiles sur la largeur reelle). Les
   fiches realisation ne changent pas : la regle est sous .mtc-apr-showroom.
   Sous 690 px la hauteur redevient celle de chaque photo (v27.15), la regle
   ne s'applique pas.
   ----------------------------------------------------------------------------- */
@media (min-width: 690px){
  .mtc-apr-showroom .mtc-art-strip.est-diapo > .mtc-art-diapo,
  .mtc-apr-showroom .mtc-art-strip.est-diapo > .mtc-art-strip-liste{
    width: min(100%, calc(clamp(320px, 74vh, 880px) * 1.5));
    margin-inline: auto;
  }
}

/* PASSE v27.21 · fin */


/* =============================================================================
   PASSE v27.23 · 25/09/2026 · L36 · TROIS POINTS (rapport 266)
   -----------------------------------------------------------------------------
   Point 1, « Email » de la barre mobile : site.js seul. Ici, le point 2.
   ============================================================================= */

/* -----------------------------------------------------------------------------
   2 · CATEGORIE REALISATIONS, SOUS 690 PX : LES FLECHES SORTENT DU CADRE
   -----------------------------------------------------------------------------
   ETAT MESURE a 390 : cadre 343 x 258, fleches de 44 px en absolu a mi-hauteur,
   590 a 634 ; bloc texte .mtc-galcat-txt de 616 a 723, titre de 630 a 668.
   Recouvrement d'une fleche sur le bloc texte : 811 px carres, chacune. A un
   projet par vue, le bloc texte couvre deja la moitie basse de la photo : il
   n'y a plus de place a mi-hauteur.

   CE QUI EST FAIT, sous 690 px seulement. .mtc-galcat devient une grille de
   deux rangees : la piste sur toute la largeur, puis fleche precedente,
   compteur « NN / 21 », fleche suivante, centres sur la meme ligne. Les deux
   boutons quittent la position absolue (position: static, translate: none),
   memes 44 px, meme dessin, memes ecouteurs : le glisse au doigt, le clavier
   et l'avance automatique vivent dans site.js et ne sont pas touches. Le
   compteur perd sa marge haute au profit de l'ecart de rangee, meme valeur.
   Le cadre reste en 4/3 et n'est pas touche.

   MESURE apres, trois projets par taille, recouvrement fleche / bloc texte :
     390 x 844   cadre 343 x 258 (4/3)  fleches 44 x 44 a x = 23 et 323, y = 738
                 compteur 79 -> 310, centres a 759,6 tous les trois   0 px2
     430 x 932   cadre 378 x 284 (4/3)  fleches a x = 26 et 360, y = 738
                 compteur 82 -> 348, centres a 759,6                   0 px2
     1440        inchange : absolu, 40 px, translate 0 -50 %, a -17 px hors du
                 cadre, .mtc-galcat en display: block
   ----------------------------------------------------------------------------- */
@media (max-width: 689.98px){
  .mtc-galcat{
    display: grid;
    grid-template-columns: 44px minmax(0, 1fr) 44px;
    grid-template-areas: "piste piste piste" "prec compteur suiv";
    align-items: center;
    column-gap: 12px;
    row-gap: clamp(14px, 1.6vw, 20px);
  }
  .mtc-galcat > .mtc-galcat-piste{ grid-area: piste; }
  .mtc-galcat-nav{ position: static; top: auto; translate: none; }
  .mtc-galcat-prec{ grid-area: prec; left: auto; justify-self: start; }
  .mtc-galcat-suiv{ grid-area: suiv; right: auto; justify-self: end; }
  .mtc-galcat-compteur{ grid-area: compteur; margin: 0; }
}

/* -----------------------------------------------------------------------------
   3 · CONTACT : LES PORTRAITS DE MATHIEU ET THOMAS DISPARAISSENT DES QUE
       L'AFFICHAGE EST SUPERPOSE
   -----------------------------------------------------------------------------
   Demande de Nath, 25/09, ajoutee a la passe : sur telephone, les portraits
   prennent la place et on n'arrive pas au formulaire ; on les garde sur
   ordinateur.

   LA CHARNIERE EST CELLE DE LA SECTION. Au-dela de 1200 px, .mtc-cnt-demande
   est une grille : texte a gauche, portraits a droite (v27.11.17). En dessous,
   la section repasse en flux et les portraits se posent AU-DESSUS du module de
   demande : c'est l'affichage superpose. La regle vit donc sous 1200 px, meme
   charniere, et seul le duo de cette section est vise (l'unique .mtc-cnt-duo
   de la page, releve).

   MESURE, haut du formulaire (form.mtcd-form) sous l'ancre #rendez-vous :
     390 x 844    duo 954 px, section 1 250  ->  0, section 272
                  formulaire a 1 340 px sous l'ancre  ->  362 (a 460 px de l'ecran
                  apres le saut d'ancre) ; page 9 273 -> 8 295
     1024 x 768   formulaire a 678 px sous l'ancre  ->  304
     1440 x 900   inchange : grille, duo 480 x 323 en colonne 2
   ----------------------------------------------------------------------------- */
@media (max-width: 1199.98px){
  .mtc-cnt-demande > .mtc-cnt-duo{ display: none; }
}

/* PASSE v27.23 · fin */


/* =============================================================================
   PASSE v27.24 · 25/09/2026 · L37 · UN POINT (rapport 267)
   -----------------------------------------------------------------------------
   LA REGLE DE LA CATEGORIE (v27.23) DEVIENT CELLE DE TOUS LES CARROUSELS SOUS
   690 PX : les fleches sortent du cadre et forment une rangee centree juste
   sous le bloc image (sous la legende quand il y en a une), memes 44 px, meme
   dessin, centres sur une meme ligne. Avec compteur, le compteur entre les
   fleches (categorie, deja fait). Sans compteur, les deux fleches cote a cote,
   16 px d'ecart, pas de compteur ajoute.

   INVENTAIRE (rapport 267) :
     .mtc-art-diapo      fiches de realisation a 2 photos et plus (16), les 3
                         articles, le showroom d'A propos, Cuisine sur mesure,
                         Contact : fleches .mtc-art-diapo-prec / -suiv, pas de
                         compteur. C'EST LE SEUL COMPOSANT TOUCHE ICI.
     avis de l'accueil   .mtca-controls : rangee flex SOUS la piste, fleches de
                         44 px, points entre les deux, centree. Deja conforme,
                         mesure a 390 et 430 : rien a changer.
     avis des services   mtcSvcAvis* : meme rangee, memes mesures. Rien.
     categorie           .mtc-galcat : fait en v27.23.
     visionneur          .mtc-art-visio-* : hors perimetre, intact.

   COMMENT : le diaporama est deja une grille a une colonne (v27.16) : scene en
   rangee 1, legende en rangee 2, fleches statiques posees dans la rangee 1
   (sur la photo). Sous 690 px, la grille passe a quatre colonnes
   [1fr | 44px | 44px | 1fr] avec 16 px d'ecart : la scene et la legende
   s'etalent sur les quatre, les fleches vont en rangee 3, colonnes 2 et 3,
   l'une collee a droite de sa colonne, l'autre a gauche. Les deux 1fr egales
   les centrent sur le diaporama quelle que soit sa largeur.

   PIEGE : la propriete individuelle translate: 0 -50% de la regle de base
   (.mtc-art-diapo-nav absolue, a mi-hauteur) reste appliquee quand la position
   devient statique (v27.16 ne remet que transform: none). Mesure au premier
   essai : fleches 10 px trop hautes, 440 px carres communs avec la legende.
   D'ou translate: none ici. Au-dessus de 690, ce reste n'est pas touche
   (perimetre), note au rapport.

   MESURE, fleches [x, y, l, h] ; ecart ; centre de la paire = centre du
   diaporama ; pixels communs avec la legende et la photo ; air sous la
   legende ; bande [n vignettes, tuile, marge g, marge d, air sous fleches] :
     390  fiche 2 photos   143/203, 44 x 44 ; 16 ; 151 = 151 ; 0 / 0 ; 12 ;
                           bande 2 x 62, 85 / 85, 12
          fiche 8 photos   143/203 ; 16 ; 151 = 151 ; 0 / 0 ; 12 ; 4 x 62, 15/15
          A propos         143/203 ; 16 ; 179 = 179 ; 0 / 0 ; 12 ; 4 x 62, 43/43
          Cuisine s. mes.  143/203 ; 16 ; 179 = 179 ; 0 / 0 ; 12 ; 4 x 62, 43/43
          Contact          143/203 ; 16 ; 179 = 179 ; 0 / 0 ; 12 ; 4 x 62, 43/43
     430  fiche 2 photos   163/223 ; 16 ; 168 = 168 ; 0 / 0 ; 12 ; 2 x 62, 102/102
          fiche 8, A propos, Cuisine s. mes., Contact : 163/223 ; 16 ; centre
          egal ; 0 / 0 ; 12 ; 4 x 62 centrees
     1440 fiche 8 : 106 / 1 280, 40 x 40, avant = apres (identique) ;
          A propos : 233 / 1 152, 40 x 40, identique.
     Avis accueil 390 : fleches 28 / 319 de 44, points entre, 30 px sous la
          piste, 0 pixel commun ; 430 : 48 / 339 ; 1440 : 617 / 768 de 40.
     Avis services 390 : 53 / 293 ; 430 : 73 / 313 ; 1440 : 626 / 760.
   ============================================================================= */
@media (max-width: 689.98px){
  .mtc-art-diapo{
    grid-template-columns: minmax(0, 1fr) 44px 44px minmax(0, 1fr);
    column-gap: 16px;
  }
  .mtc-art-diapo > .mtc-art-diapo-scene{ grid-column: 1 / -1; }
  .mtc-art-diapo > .mtc-art-diapo-legende{ grid-column: 1 / -1; }
  .mtc-art-diapo-nav{
    grid-row: 3;
    align-self: center;
    translate: none;
    margin-top: 12px;
  }
  .mtc-art-diapo-prec{ grid-column: 2; justify-self: end; margin-left: 0; }
  .mtc-art-diapo-suiv{ grid-column: 3; justify-self: start; margin-right: 0; }
}

/* PASSE v27.24 · fin */


/* =============================================================================
   PASSE v27.26 · 29/09/2026 · L39 · TROIS POINTS (rapport 271)
   -----------------------------------------------------------------------------
   Point 3, les regles .mtcw-prix : retirees dans le bloc ACCUEIL v27.7, plus
   haut. Ici, les points 1 et 2. site.js n'est pas touche : aucun des trois
   points n'a besoin de script.
   ============================================================================= */

/* -----------------------------------------------------------------------------
   1 · LE SOCLE DU HERO, LES DEUX COPIES : MEME STRUCTURE, UN CRAN AU-DESSUS
   -----------------------------------------------------------------------------
   RETOUR CLIENT : « trop petit » sur ordinateur, « mettre meme format » sur
   telephone.

   ETAT MESURE (L38). Volet revele, 1440 x 900 : valeur 21,6 px, legende 11,8,
   reperes 11,2, « Sur rendez-vous » 16,6, chaque chiffre sur UNE ligne (valeur
   et legende cote a cote, L34), socle 71 px. Volet statique, 390 : « 90 » a
   25,6 px et « Sur rendez-vous » a 15,2, deux lignes de formes differentes.

   LA REGLE, pour les deux copies : les deux chiffres ont la meme structure,
   la valeur au-dessus de sa legende ; « Sur rendez-vous » a la taille de
   « 90 % » (la classe .mtc-hero-chiffre-txt ne reduit plus rien) ; les deux
   chiffres cote a cote en deux colonnes egales, centres ; puis les reperes.

   COMMENT. Une grille a trois colonnes [1fr | 1px | 1fr] et deux rangees :
   les valeurs en rangee 1, alignees en bas, les legendes en rangee 2, le
   filet vertical (le .mtc-hero-sep existant) sur les deux rangees. Chaque
   .mtc-hero-chiffre passe en display: contents pour que sa valeur et sa
   legende se placent dans la grille : les deux legendes sont ainsi sur une
   meme ligne meme quand une valeur prend deux lignes (telephone). La taille
   de valeur est portee par le paragraphe .mtc-hero-chiffre-num, valeur et
   texte en 1em : c'est ce qui rend les deux valeurs egales. Trois jetons
   --mtc-socle-val / -cap / -rep portent les tailles par ecran.

   TAILLES.
     Volet revele (1025 px et plus) : 32 / 14 / 13,4 px (2rem, .875rem, .84rem).
     Sous 800 px de haut : 18,4 / 11,8 / 11,2, les tailles d'aujourd'hui.
     Volet statique (1024 et moins) : les tailles d'aujourd'hui, 25,6 px pour
     LES DEUX valeurs a 390 (le « 90 » d'aujourd'hui), colonnes de 174,5 px.
     Sur telephone la grille 2 x 2 des reperes (v27.x) reste telle quelle :
     quatre reperes sur une ligne de 350 px ne tiennent pas.

   CONTRAINTE DE HAUTEUR (L34). Le volet s'ancre en bas sous 1 000 px de haut
   et grandit vers le haut : la place est celle qui separe le volet de
   l'en-tete.
     1920 x 1080  plein format : socle 115 px (71 avant), volet 347 -> 861,
                  219 px sous l'en-tete, bouton -> socle 16, socle ->
                  « Continuer » 151.
     1440 x 900   plein format aussi : socle 115, volet 208 -> 775, 80 px sous
                  l'en-tete (124 avant), bouton -> socle 16, socle ->
                  « Continuer » 48. Aucun resserrement necessaire.
     1366 x 768   socle a ses tailles d'aujourd'hui mais empile : 82 px (60
                  avant, + 22). Pour ne pas manger l'air sous l'en-tete, le
                  volet se resserre de 18 px : rembourrage 18 -> 12 (x 2),
                  marge de la phrase forte 16 -> 12, marge des piliers 18 -> 13.
                  Mesure : volet 139 -> 651, 512 px comme avant, 11 px sous
                  l'en-tete comme avant ; bouton -> socle 16 ; socle ->
                  « Continuer » 42 ; legendes et reperes sur une ligne.
   Sur telephone, 390 : socle 176 px, valeurs 25,6 les deux, « Sur
   rendez-vous » sur deux lignes dans sa colonne de 174,5 px (202 px de large
   sur une ligne a cette taille : c'est la consequence directe de la regle
   « meme taille » avec deux colonnes de 175), legendes alignees.
   ----------------------------------------------------------------------------- */
#mtcHeroScroll .mtc-hero-socle{
  --mtc-socle-val: clamp(1.6rem, 2.4vw, 2.2rem);
  --mtc-socle-cap: clamp(.74rem, .85vw, .84rem);
  --mtc-socle-rep: clamp(.72rem, .82vw, .8rem);
}
#mtcHeroScroll .mtc-hero-socle .mtc-hero-chiffres{
  display: grid;
  grid-template-columns: minmax(0, 1fr) 1px minmax(0, 1fr);
  grid-template-rows: auto auto;
  align-items: end;
  justify-items: center;
  column-gap: 0;
  row-gap: 6px;
}
#mtcHeroScroll .mtc-hero-socle .mtc-hero-chiffre{ display: contents; }
#mtcHeroScroll .mtc-hero-socle .mtc-hero-chiffre:first-child > *{ grid-column: 1; }
#mtcHeroScroll .mtc-hero-socle .mtc-hero-chiffre:last-child > *{ grid-column: 3; }
#mtcHeroScroll .mtc-hero-socle .mtc-hero-chiffre-num{
  grid-row: 1;
  display: flex; flex-wrap: wrap; align-items: baseline; justify-content: center;
  gap: 0 .22em;
  margin: 0; min-height: 0;
  font-size: var(--mtc-socle-val);
  line-height: 1.05;
  text-align: center;
}
#mtcHeroScroll .mtc-hero-socle .mtc-hero-chiffre-val,
#mtcHeroScroll .mtc-hero-socle .mtc-hero-chiffre-txt{
  font-size: 1em; letter-spacing: -.02em; white-space: normal;
}
#mtcHeroScroll .mtc-hero-socle .mtc-hero-chiffre-unit{ font-size: .5em; }
#mtcHeroScroll .mtc-hero-socle .mtc-hero-chiffre-cap{
  grid-row: 2; align-self: start;
  margin: 0; max-width: none;
  font-size: var(--mtc-socle-cap); line-height: 1.3; text-align: center;
}
#mtcHeroScroll .mtc-hero-socle .mtc-hero-sep{
  grid-column: 2; grid-row: 1 / span 2;
  width: 1px; height: auto; align-self: stretch; flex: none;
  background: linear-gradient(180deg, transparent,
    rgba(184,148,95,.35) 22%, rgba(184,148,95,.35) 78%, transparent);
}
#mtcHeroScroll .mtc-hero-socle .mtc-hero-reperes li{ font-size: var(--mtc-socle-rep); }

@media (min-width: 1025px){
  #mtcHeroScroll .mtc-reveal .mtc-hero-socle{
    --mtc-socle-val: 2rem;
    --mtc-socle-cap: .875rem;
    --mtc-socle-rep: .84rem;
  }
  #mtcHeroScroll .mtc-reveal .mtc-hero-socle .mtc-hero-chiffres{ padding: 10px 0; }
  #mtcHeroScroll .mtc-reveal .mtc-hero-socle .mtc-hero-reperes li{ padding: 9px 6px; }
}
@media (min-width: 1025px) and (max-height: 800px){
  #mtcHeroScroll .mtc-reveal .mtc-hero-socle{
    --mtc-socle-val: 1.15rem;
    --mtc-socle-cap: .74rem;
    --mtc-socle-rep: .7rem;
  }
  #mtcHeroScroll .mtc-reveal .mtc-hero-socle .mtc-hero-chiffres{ padding: 6px 0; }
  #mtcHeroScroll .mtc-reveal .mtc-hero-socle .mtc-hero-reperes li{ padding: 6px 6px; }
}
@media (min-width: 1025px) and (max-height: 800px) and (min-height: 661px){
  /* Le volet se resserre de ce que le socle empile lui prend ; les paliers
     660 et 600 (ACCUEIL v27.6) gardent leurs propres marges. */
  .mtc-reveal{ padding: 12px 54px; }
  .mtc-reveal-strong{ margin: 0 0 12px; }
  .mtc-piliers{ margin: 0 0 13px; }
}

/* -----------------------------------------------------------------------------
   2 · HERO DES PAGES DE SERVICE, SOUS 690 PX : LA PHOTO PASSE DANS LE FLUX
   -----------------------------------------------------------------------------
   RETOUR CLIENT sur A propos : « ajouter visuels ». ETAT MESURE a 390 sur les
   quatre pages (Cuisine sur mesure, Dressing living et bureau, Salle de bain,
   A propos, meme composant section.mtc-svc-hero) : .mtc-svc-hero-media est en
   absolu derriere tout le hero (390 x 1 386 a 1 670), sous le voile en trois
   couches renforce sur telephone : la photo n'est pas lisible comme une photo.

   LA REGLE, sous 690 px seulement : la photo passe dans le flux, juste sous la
   rangee des deux boutons, en vraie image, cadre 3/2 a la largeur du
   conteneur (350 px a 390), coins var(--mtc-r-l) comme les autres figures du
   site, sans voile ; le fond du hero derriere le texte devient uni, le noir
   du site (le fond du corps de page, rien n'est ajoute). Au-dessus de 690 px
   rien ne change.

   COMMENT. Le hero est deja une colonne flex. Le corps .mtc-svc-hero-corps
   passe en display: contents : ses enfants (texte du hero, piliers, appel a
   continuer) deviennent des items du hero, et l'ordre place la photo entre le
   texte et les piliers. La parallaxe du script (jeton --svc-parallaxe) est
   neutralisee par transform: none sur l'image ; le script ne touche pas a
   l'image elle-meme.

   MESURE a 390, les quatre pages : figure 350 x 233 (3/2), 28 px sous la
   rangee des boutons (transformations d'entree neutralisees), 51 px
   au-dessus des piliers, coins 10 px, une seule image dans le hero, page
   390 de large sans debordement, voile absent.
   ----------------------------------------------------------------------------- */
/* v27.30 (L43) : ces regles ne s'appliquent plus qu'aux heros qui portent le
   jeton --mtc-hero-photo (attribut style pose par PAGES). Sans jeton, le hero
   garde son comportement d'avant la v27.26 : media en absolu derriere le
   voile, aucune photo dans le flux. */
@media (max-width: 689.98px){
  .mtc-svc-hero[style*="--mtc-hero-photo"] > .mtc-svc-hero-corps{ display: contents; }
  .mtc-svc-hero[style*="--mtc-hero-photo"] > .mtc-svc-hero-media{
    position: relative; inset: auto; z-index: auto;
    order: 2;
    width: calc(100% - 2 * var(--svc-gouttiere, 20px));
    max-width: var(--svc-large, 1600px);
    margin: clamp(28px, 7vw, 36px) auto 0;
    aspect-ratio: 3 / 2;
    border-radius: var(--mtc-r-l, 10px);
    overflow: hidden;
  }
  .mtc-svc-hero[style*="--mtc-hero-photo"] > .mtc-svc-hero-media img{ transform: none; }
  .mtc-svc-hero[style*="--mtc-hero-photo"] .mtc-svc-hero-txt{ order: 1; }
  .mtc-svc-hero[style*="--mtc-hero-photo"] .mtc-svc-hero-corps > .mtc-svc-conteneur:not(.mtc-svc-hero-txt){ order: 3; }
  .mtc-svc-hero[style*="--mtc-hero-photo"] .mtc-svc-continue{ order: 4; }
}

/* PASSE v27.26 · fin */


/* =============================================================================
   PASSE v27.27 · 29/09/2026 · L40 · TROIS POINTS (rapport 272)
   -----------------------------------------------------------------------------
   site.js n'est pas touche.
   ============================================================================= */

/* -----------------------------------------------------------------------------
   1 · SOCLE, VOLET STATIQUE (1024 PX ET MOINS) : COLONNES A LA LARGEUR DE LEUR
       CONTENU, ENSEMBLE CENTRE
   -----------------------------------------------------------------------------
   ETAT MESURE (L39) a 390 : deux colonnes egales de 174,5 px, « Sur
   rendez-vous » a 25,6 px (202 px de large) sur deux lignes dans la sienne.

   LA REGLE : les colonnes passent de [1fr | 1px | 1fr] a [auto | 1px | auto],
   l'ensemble centre (justify-content), chaque valeur sur une ligne (les deux
   valeurs gardent 25,6 px ; la v27.26 mettait white-space: normal sur la
   valeur, remis a nowrap ici pour cette copie). Un ecart de colonne de
   clamp(16px, 4vw, 32px) separe les legendes du filet.

   COMPORTEMENT DES COLONNES auto : quand les legendes tiennent (768 px et
   plus), chaque colonne prend la largeur de sa legende (250 et 191 px), le
   tout centre dans le socle. A 390, la place manque : la colonne de droite
   garde la largeur de sa valeur sur une ligne (191 px), la colonne de gauche
   prend le reste (126 px) et sa legende « De nos projets viennent du
   bouche-a-oreille » passe sur trois lignes. Les deux legendes partent de la
   meme ligne (rangee 2 de la grille, alignees en haut).

   MESURE :
     390  colonnes 125,7 | 1 | 191,3, ecarts 16 : 350 px pleins ; « 90 % »
          49 x 27 sur une ligne, « Sur rendez-vous » 191 x 27 sur une ligne ;
          filet a 162 ; legendes alignees en haut (1 299), 3 lignes / 1 ligne.
     768  colonnes 249,8 | 1 | 191,3, ecarts 32, contenu de 506 px centre
          dans 713 (de 123 a 629) ; tout sur une ligne.
     900  idem, centre dans 845 ; 1024 idem, centre dans 969.
   ----------------------------------------------------------------------------- */
/* v27.28 (L41) : les colonnes auto ci-dessus sont RETIREES, retour aux colonnes
   egales de la v27.26 (1fr | 1px | 1fr, filet au centre, sans ecart). Reste de
   la v27.27 : les valeurs en nowrap. Voir la passe v27.28 pour la taille sous
   480 px. */
@media (max-width: 1024px){
  #mtcHeroScroll .mtc-hero-static .mtc-hero-socle .mtc-hero-chiffre-num{ flex-wrap: nowrap; white-space: nowrap; }
  #mtcHeroScroll .mtc-hero-static .mtc-hero-socle .mtc-hero-chiffre-val,
  #mtcHeroScroll .mtc-hero-static .mtc-hero-socle .mtc-hero-chiffre-txt{ white-space: nowrap; }
}

/* -----------------------------------------------------------------------------
   2 · PAGES DE SERVICE : UN INTERTITRE QUI SUIT UN PARAGRAPHE RESPIRE
   -----------------------------------------------------------------------------
   ETAT MESURE a 1440 : dans .mtc-svc-corps, h3.mtc-svc-h3 n'a pas de marge
   haute ; quand il suit un paragraphe, seuls les 18 px de marge basse du
   paragraphe le separent, contre 34 px en dessous (Cuisine sur mesure,
   « Ce qui fait la difference au quotidien »). Inventaire sur les quatre
   pages : 14 intertitres, un seul suit un paragraphe (celui-la), les 13
   autres ouvrent leur conteneur et ne sont pas concernes.
   REGLE : 40 px de marge haute par adjacence p + h3 ; la marge basse du
   paragraphe (18) fusionne dedans. Mesure : 40 au-dessus, 34 en dessous a
   1440, 31 a 1024 (marge de la liste, inchangee).
   ----------------------------------------------------------------------------- */
.mtc-svc-corps p + .mtc-svc-h3{ margin-top: 40px; }

/* -----------------------------------------------------------------------------
   3 · ACCUEIL, BLOC CONSEILS : TROIS COLONNES JUSQU'A 1024 INCLUS, PUIS UNE
   -----------------------------------------------------------------------------
   ETAT MESURE : ul.mtc-conseils-grille est un bloc realmt ; les regles
   communes (bloc « Ecrit en defensif », plus haut) le passaient a deux
   colonnes de 1024 px a 761 et a une sous 760 : a 1024, trois vignettes en
   2 + 1 (476 px chacune, la troisieme seule).

   COMMENT : ces regles communes portaient le nombre de colonnes en
   !important a chaque palier. Pour ne pas empiler des !important, la
   declaration en !important lit maintenant un jeton --realmt-cols, que les
   paliers ecrivent sans !important ; ce bloc-ci ecrit le jeton pour le seul
   bloc Conseils, avec une specificite superieure a celle des regles
   communes (0,3,1 contre 0,3,0). Bilan : deux !important retires, un ajoute
   (margin-inline: auto, comme le palier 760 des autres blocs), 95 au total
   contre 96 depuis la L24.

   MESURE, bloc Conseils / autres blocs realmt de la meme page :
     1024  trois colonnes de 312 px sur une rangee / deux colonnes de 476
     900   une colonne de 520 px centree / deux colonnes de 252
     390   une colonne de 350 px / une colonne de 350
   ----------------------------------------------------------------------------- */
@media (max-width: 1024px){
  ul.mtc-conseils-grille.realmt.wp-block-latest-posts{ --realmt-cols: repeat(3, 1fr); }
}
@media (max-width: 1023.98px){
  ul.mtc-conseils-grille.realmt.wp-block-latest-posts{
    --realmt-cols: 1fr;
    max-width: 520px;
    margin-inline: auto !important;
  }
}

/* PASSE v27.27 · fin */


/* =============================================================================
   PASSE v27.28 · 29/09/2026 · L41 · UN POINT (rapport 273)
   -----------------------------------------------------------------------------
   SOCLE, VOLET STATIQUE : COLONNES EGALES, ET 22 PX SOUS 480 PX
   -----------------------------------------------------------------------------
   Les colonnes auto de la v27.27 sont retirees (dans le bloc v27.27, plus
   haut) : la grille [1fr | 1px | 1fr] de la v27.26 s'applique de nouveau au
   volet statique, filet au centre, sans ecart de colonne. Les valeurs restent
   en nowrap (v27.27).

   Sous 480 px seulement, les deux valeurs passent de 25,6 px a 22 px, meme
   taille toutes les deux (le jeton --mtc-socle-val, lu par le paragraphe
   .mtc-hero-chiffre-num ; valeur et texte en 1em). Entre 481 et 1024 rien ne
   change : 25,6 px.

   MESURE a 390 : colonnes de 174,5 px chacune (350 moins le filet), filet a
   x = 195, le centre ; « 90 % » et « Sur rendez-vous » sur une ligne chacun,
   « Sur rendez-vous » 164 px de large a 22 px (191 a 25,6 : il ne tenait pas
   dans 174,5). Voir le rapport 273 pour les legendes et les temoins 768 et
   1024.
   ============================================================================= */
@media (max-width: 480px){
  #mtcHeroScroll .mtc-hero-static .mtc-hero-socle{ --mtc-socle-val: 22px; }
}

/* PASSE v27.28 · fin */


/* =============================================================================
   PASSE v27.29 · 29/09/2026 · L42 · QUATRE POINTS (rapport 276)
   -----------------------------------------------------------------------------
   site.js n'est pas touche.
   ============================================================================= */

/* -----------------------------------------------------------------------------
   1 · CUISINE SUR MESURE, « CE QUI FAIT LA DIFFERENCE AU QUOTIDIEN » : LIBELLE
       ET PHRASE SUR LA MEME LIGNE, UNE COLONNE
   -----------------------------------------------------------------------------
   ETAT MESURE a 1440 : ul.mtcsh-points.mtc-svc-coches.mtc-svc-labels, trois
   elements « <b>libelle</b> : phrase ». Le li est un conteneur flex (regle
   .mtcsh-points li de l'extrait 242) : le <b> devient un item flex a cote
   du texte nu, ecrase a 51 a 80 px de large, sur 5 a 8 lignes, pour une
   phrase de 3 lignes ; elements de 186, 186 et 209 px de haut.

   REGLE, pour cette liste seule : la portee est section.mtc-svc-marque, et
   le :has(> li > b) ecarte les deux listes de Salle de bain qui vivent dans
   la meme section sans <b> (« Ce qui est dans notre devis », « Ce qui est
   garanti »), et les deux listes de collections de Cuisine sur mesure. Le <b>
   passe en display: contents : son texte et le texte qui suit forment un
   seul item flex anonyme, le libelle en gras suivi de sa phrase, pleine
   largeur de la colonne ; la coche reste a gauche. Une colonne : a deux
   colonnes, trois elements de texte fluide font 2 + 1 avec un orphelin ; sur
   une colonne de 657 px ils se lisent en 2, 3 et 4 lignes. text-wrap: pretty
   evite un mot seul en derniere ligne (mesure sans : 58 px ; avec : 128 px).

   MESURE (hauteur, lignes, largeur de la derniere ligne) :
     1440  46 / 2 / 598 ; 70 / 3 / 318 ; 93 / 4 / 128
     1024  46 / 2 / 280 ; 46 / 2 / 634 ; 46 / 2 / 899
     390   89 / 4 / 171 ; 111 / 5 / 206 ; 133 / 6 / 228
   ----------------------------------------------------------------------------- */
section.mtc-svc-marque .mtc-svc-labels:has(> li > b){ grid-template-columns: 1fr; }
section.mtc-svc-marque .mtc-svc-labels:has(> li > b) li{ text-wrap: pretty; }
section.mtc-svc-marque .mtc-svc-labels:has(> li > b) li > b{ display: contents; }

/* -----------------------------------------------------------------------------
   2 · SOCLE DU VOLET REVELE : REPERES A 16 PX, LEGENDES A 15
   -----------------------------------------------------------------------------
   ETAT MESURE a 1440 : reperes 13,4 px, pictogrammes 15, legendes 14, quatre
   colonnes egales de 177 px (flex: 1 1 0).

   CONTRAINTE DE LARGEUR : « Poseurs selectionnes » fait 140 px a 13,4 ; a
   16 px, 167 + pictogramme 19 + ecart 8 + rembourrage 12 = 206 px, plus que
   la colonne de 177. En colonnes egales, 13,5 px est le maximum a 1440.
   Les colonnes passent donc a la largeur de leur contenu (flex: 1 1 auto),
   la place libre partagee : a 16 px la rangee entiere fait 684 px pour 713
   disponibles. Paliers : 1401 px et plus, 16 / 19 ; 1400 et moins, 15 / 18
   (647 px pour 676 a 1366) ; 1300 et moins, 14 / 17 ; sous 800 px de haut,
   14 / 17 et legendes 13, avec 4 px repris sur la marge de la premiere ligne
   du volet (6 -> 2), pour garder l'air sous l'en-tete.

   MESURE (reperes / pictos / legendes ; socle ; air en-tete -> volet ;
   bouton -> socle ; socle -> « Continuer ») :
     1920 x 1080  16 / 19 / 15 ; 120 px ; 217 ; 16 ; 149 ; tout sur une ligne
     1440 x 900   16 / 19 / 15 ; 120 ; 75 ; 16 ; 48 ; une ligne, colonnes
                  193 / 161 / 144 / 214
     1366 x 900   15 / 18 / 15 ; 119 ; 77 ; 16 ; 48 ; une ligne
     1366 x 768   14 / 17 / 13 ; 86 (82 avant) ; 10 (11 avant) ; 16 ; 42
     1280 x 800   14 / 17 / 13 ; 86 ; 3 ; 16 ; 42 (hors brief, sans
                  chevauchement)
   ----------------------------------------------------------------------------- */
@media (min-width: 1025px){
  #mtcHeroScroll .mtc-reveal .mtc-hero-socle{
    --mtc-socle-cap: .9375rem;
    --mtc-socle-rep: 1rem;
    --mtc-socle-svg: 19px;
  }
  #mtcHeroScroll .mtc-reveal .mtc-hero-socle .mtc-hero-reperes li{ flex: 1 1 auto; }
  #mtcHeroScroll .mtc-reveal .mtc-hero-socle .mtc-hero-reperes svg{
    width: var(--mtc-socle-svg); height: var(--mtc-socle-svg);
  }
}
@media (min-width: 1025px) and (max-width: 1400px){
  #mtcHeroScroll .mtc-reveal .mtc-hero-socle{ --mtc-socle-rep: .9375rem; --mtc-socle-svg: 18px; }
}
@media (min-width: 1025px) and (max-width: 1300px){
  #mtcHeroScroll .mtc-reveal .mtc-hero-socle{ --mtc-socle-rep: .875rem; --mtc-socle-svg: 17px; }
}
@media (min-width: 1025px) and (max-height: 800px){
  #mtcHeroScroll .mtc-reveal .mtc-hero-socle{
    --mtc-socle-cap: .8125rem;
    --mtc-socle-rep: .875rem;
    --mtc-socle-svg: 17px;
  }
}
@media (min-width: 1025px) and (max-height: 800px) and (min-height: 661px){
  .mtc-reveal-line{ margin: 0 0 2px; }
}

/* -----------------------------------------------------------------------------
   3 · SOCLE, LES DEUX VOLETS : MEME AIR AU-DESSUS ET EN DESSOUS DES VALEURS
   -----------------------------------------------------------------------------
   ETAT MESURE, air entre le filet et la boite des valeurs / entre la boite
   des legendes et le filet : volet revele 10 / 10 a 1440 et 1920, 6 / 6 a
   1366 x 768, deja egaux. Volet statique a 390 : 0 / 12. Cause : la regle
   #mtcHeroScroll .mtc-hero-chiffres (v27.18, padding: 0 0 clamp(12px, 1.4vw,
   18px)) l'emporte par son identifiant sur .mtc-hero-static > .mtc-hero-socle
   .mtc-hero-chiffres (padding-top: clamp(14px, ...)), qui n'a jamais eu
   d'effet. Le haut prend la valeur du bas : 12 / 12 mesure a 390.
   ----------------------------------------------------------------------------- */
@media (max-width: 1024px){
  #mtcHeroScroll .mtc-hero-static .mtc-hero-socle .mtc-hero-chiffres{ padding-top: clamp(12px, 1.4vw, 18px); }
}

/* -----------------------------------------------------------------------------
   4 · HEROS DE SERVICE, SOUS 690 PX : LE FOND PHOTO ET SON VOILE REVIENNENT,
       LA PHOTO EN FLUX RESTE
   -----------------------------------------------------------------------------
   Le balisage n'a qu'une image par hero. En v27.26 elle est passee dans le
   flux sous les boutons, et le fond derriere le texte est devenu uni : une
   feuille de style ne peut pas afficher deux fois la meme <img>, ni lire son
   adresse. Pour remettre la photo en fond ET la garder en flux, il faut une
   seconde source : PAGES pose sur section.mtc-svc-hero, dans l'attribut
   style, le jeton --mtc-hero-photo: url(...) avec l'adresse de la photo du
   hero (la meme que l'image), sur les quatre pages.

   Tant que le jeton n'est pas pose, rien ne change (fond uni, voile masque).
   Des qu'il l'est : le fond du hero est la photo, centree, couvrante ; le
   voile renforce de telephone (v2) reprend au-dessus du fond ; le texte, les
   piliers et la photo en flux passent devant le voile (position: relative,
   z-index: 2, ce que .mtc-svc-hero-corps portait avant display: contents).

   MESURE a 390 sur les quatre pages, jeton simule avec l'adresse de l'image
   servie : fond photo present et couvrant, voile affiche (z 1), texte et
   photo en flux devant (z 2), photo en flux 350 x 233 a 28 px sous les
   boutons, une seule <img> dans le hero, page 390 de large sans debordement.
   ----------------------------------------------------------------------------- */
/* v27.30 (L43) : tout est borne au jeton ; le voile n'est plus jamais masque
   (la regle display: none de la v27.26 est retiree), il garde son affichage
   d'origine sans jeton. */
@media (max-width: 689.98px){
  .mtc-svc-hero[style*="--mtc-hero-photo"]{ background: var(--mtc-hero-photo) center / cover no-repeat; }
  .mtc-svc-hero[style*="--mtc-hero-photo"] > .mtc-svc-hero-corps > *{ position: relative; z-index: 2; }
  .mtc-svc-hero[style*="--mtc-hero-photo"] > .mtc-svc-hero-media{ z-index: 2; }
}

/* PASSE v27.29 · fin */


/* =============================================================================
   PASSE v27.30 · 29/09/2026 · L43 · UN POINT (rapport 280)
   -----------------------------------------------------------------------------
   HEROS DE SERVICE SOUS 690 PX : TOUT EST BORNE AU JETON --mtc-hero-photo
   -----------------------------------------------------------------------------
   Les regles de la v27.26 (bloc L39, point 2 : corps en display: contents,
   media dans le flux sous les boutons, ordre des blocs, parallaxe coupee) et
   de la v27.29 (bloc L42, point 4 : fond photo, corps et media en z-index 2)
   portent desormais toutes le selecteur section.mtc-svc-hero[style*=
   "--mtc-hero-photo"]. La regle v27.26 qui masquait le voile est retiree :
   le voile garde son affichage d'origine, et la v27.29 n'a plus besoin de le
   reafficher. Ce bloc n'ajoute aucune regle : les modifications sont dans les
   deux blocs d'origine, annotees v27.30.

   Sans jeton : media en absolu plein cadre derriere le voile, corps en bloc
   (z-index 2 d'origine), aucune photo dans le flux, comme avant la v27.26.
   Avec jeton : fond photo, voile, texte et photo en flux devant, comme en
   v27.29. Au-dessus de 690 px rien ne change, aucune de ces regles n'y vit.

   MESURE a 390, rapport 280 : Cuisine sur mesure jeton retire, media absolu
   390 x 1 386 sous le voile, aucune figure sous les boutons, hero de 1 386 px
   comme avant la v27.26 ; A propos avec jeton, fond, voile, photo en flux
   350 x 233 a 28 px sous les boutons.
   ============================================================================= */

/* PASSE v27.30 · fin */
