/* mur.css — styles du calculateur commun, du formulaire et de la fiche courte (lot « mur v1 », 07/10/2026 ;
   lot « mur v2 », 08/10/2026 : étapes 1 · 2 · 3, onglets Taille / Résolution / Dalles, PDF noir bord à bord ;
   relectures du 08/10 : étape 1 hors de la grille, « Choisir par », le mur en page 1, la porte en 2 pages).
   SOURCE : outils/mur/mur.css. La copie servie, site/assets/mur.<empreinte>.css, est produite par
   outils/poser_mur.py : le bloc entre COURT-DEBUT et COURT-FIN y est écrit DEUX fois, le jeton « deux-points court »
   devenant « html » sous @media print (impression, Ctrl+P compris) et « html.mur-impr » sous @media screen
   (aperçu de la fiche courte à l’écran). Les classes des fiches (.md-tabs, .rc, .dim-card, .sp-ctl...) sont
   reprises telles quelles ; ce qui manque dans certaines fiches est redéfini ici, sous #mur.
   (v4, 09/10, demande d’Alex : « proposer les deux ») DEUX versions du PDF : la simplifiée (3 pages, celle
   d’avant) et la complète (toute la fiche). Dans le bloc COURT, « deux-points simple » ne vaut que pour la
   simplifiée et « deux-points complet » que pour la complète : poser_mur.py les suit de :not(.mur-complet) et de
   .mur-complet, aux deux émissions ; « deux-points court » vaut pour les deux.
   (lot 5, 12/10, demande d’Alex : « l’écran est petit, non ? On devrait pas mettre une personne humaine ? ») le mur EN GRAND en
   page 1, avec une silhouette de 1,75 m à la même échelle (mur.js : scene). Sa hauteur est ce qui RESTE de la page 1 : mur.js
   la mesure sous html.mur-mesure, la page posée à la largeur A4. La mise en page A4 (entre A4-DEBUT et A4-FIN, jeton
   « deux-points a4 ») est donc émise TROIS fois par poser_mur.py : @media print (html), @media screen et 700 px au moins
   (html.mur-impr, l’aperçu) et sans condition sous html.mur-mesure (la mesure).
   (17/10, étape 1 du plan validé par Alex) LA FICHE SEULE (« Télécharger la fiche », html.mur-fiche) : le même aperçu et le même papier, sans la
   section du calculateur ; « Les formats de dalle au pitch … » (.mur-formats-tous) ; la simplifiée resserrée (3 pages au plus, jamais le pied seul). */

/* ====== le calculateur, à l’écran ====== */
#mur [hidden]{display:none !important;}
/* le bouton du haut de fiche vise #mur-haut (la .wrap de la section) : on arrive sur « Votre mur » et
   la phrase des trois façons de choisir (relectures du 08/10) */
#mur-haut, #mur-app{scroll-margin-top:16px;}
#mur .mur-etape{margin:0 0 16px;font-family:'Archivo',sans-serif;font-size:17px;font-weight:400;letter-spacing:0;text-transform:none;color:var(--paper);line-height:1.3;}
#mur .mur-e2, #mur .mur-e3{margin-top:40px;}
#mur .cfg-label{color:#a8a29a;}
#mur .mur-e1 .cfg-label{margin:22px 0 10px;}
#mur .mur-e1 .mur-etape + .cfg-label{margin-top:0;}
/* (15/10) l’option que le calcul suit (Sub Zero : « La luminosité ») et le sens des dalles, côte à côte sur un écran large : l’étape 1 garde
   sa hauteur d’avant, et la ligne du mur (étape 3) reste à l’écran après un geste de l’étape 1 (relectures du 08/10). Sur téléphone aussi
   (« Composer mon écran » doit amener la phrase et les onglets de l’étape 2 à l’écran, à 375 × 812 : relectures du 08/10) : les quatre
   onglets sur une rangée, sans le sous-libellé du sens (ses cotes n’y tiennent pas).
   (relectures du 15/10) Sur un écran large, les quatre onglets sont dans la grille des pitchs (même largeur, même gouttière de 10 px) : ils
   s’arrêtaient 88 px avant le bord droit de la rangée des pitchs. Sur téléphone, la luminosité garde son sous-libellé (« de série »,
   « en option », en bas de casse, 12 px : le plancher de lecture) sous le chiffre, dans les 44 px de l’onglet : la rangée ne grandit pas */
#mur .mur-e1-duo{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:0 10px;}
#mur .mur-e1-duo .md-tabs.md-2{grid-template-columns:repeat(2,minmax(0,1fr));max-width:none;}   /* (la fiche borne .md-2 a 460 px) */
@media(max-width:760px){#mur .mur-e1-duo{gap:0 16px;}}
@media(max-width:560px){
  #mur .mur-e1-duo{gap:0 12px;}
  #mur .mur-e1-duo .md-tabs.md-2{gap:6px;}
  #mur .mur-e1-duo .md-tab{padding:10px 3px;text-align:center;line-height:15px;}   /* une ligne de 15 px : deux lignes tiennent dans 44 px */
  #mur .mur-e1-duo .md-tab .p{font-size:14px;}
  #mur .mur-e1-duo .md-tab .d{display:none;}
  #mur .mur-e1-duo .mur-opt .md-tab{padding:5px 3px;}
  #mur .mur-e1-duo .mur-opt .md-tab .d{display:block;margin-top:1px;line-height:1.2;letter-spacing:0;text-transform:none;}
}
@media(max-width:380px){#mur .mur-e1-duo .md-tab .p{font-size:13px;}}   /* 360 px : « Horizontale » tient dans son onglet */
/* « Choisir par » : dit que Taille, Résolution et Dalles sont trois façons au choix */
#mur .mur-e2 .mur-par{margin:0 0 4px;}
/* téléphone : un peu moins d’air, pour qu’à l’arrivée par « Composer mon écran » les onglets soient à
   l’écran sous la phrase des trois façons, même à 360 × 780 avec le sens d’Element (relectures du 08/10) */
@media(max-width:560px){
  #mur .intro{margin-bottom:32px;}
  #mur .mur-e2, #mur .mur-e3{margin-top:28px;}
  #mur .mur-e1 .cfg-label{margin:18px 0 8px;}
}
#mur .md-tabs{margin-top:0;}
#mur .md-tabs.md-3{grid-template-columns:repeat(3,minmax(0,1fr));max-width:560px;}
#mur .md-tab{min-height:44px;}

/* les onglets « Choisir le mur par » : PAS le style des onglets de pitch (ce n’est pas un réglage de plus).
   L’onglet ouvert se voit par deux signes : un trait de 2 px et la graisse. */
#mur .mur-onglets{display:grid;grid-auto-flow:column;grid-auto-columns:minmax(0,1fr);max-width:560px;border-bottom:1px solid var(--hair);}
#mur .mur-onglet{appearance:none;-webkit-appearance:none;background:transparent;border:0;border-bottom:2px solid transparent;margin:0 0 -1px;
  min-height:48px;padding:10px 6px;font:inherit;font-family:'Archivo',sans-serif;font-size:15px;font-weight:400;letter-spacing:.01em;
  color:var(--paper-dim);cursor:pointer;text-align:center;-webkit-tap-highlight-color:transparent;}
#mur .mur-onglet[aria-selected="true"]{border-bottom-color:var(--paper);color:var(--paper);font-weight:600;}
#mur .mur-onglet:focus-visible{outline:2px solid var(--paper);outline-offset:-2px;}
#mur .mur-panneau{padding-top:20px;max-width:640px;}
#mur .mur-aide-p{margin:0 0 16px;font-size:14px;line-height:1.6;color:var(--paper-dim);max-width:62ch;}

/* Taille */
#mur .md-dim{gap:14px 18px;}
#mur .md-dim input{width:96px;font-size:21px;}
#mur .md-dim .fld{cursor:text;}
#mur .mur-err{margin-top:6px;font-size:12.5px;line-height:1.5;color:#ff9d8a;max-width:60ch;}
#mur .mur-err:empty{display:none;}
#mur .mur-voir{margin-top:16px;}
@media(max-width:560px){#mur .mur-voir{display:block;width:100%;}}
#mur .mur-msg{margin-top:20px;font-size:14.5px;color:var(--paper);line-height:1.6;max-width:70ch;}
#mur .mur-msg:empty{display:none;}

/* les cartes : « choisi » = fond clair, texte foncé, « ✓ Votre mur » ; sinon un contour et « Choisir ce mur » */
#mur .mur-cartes{margin-top:12px;scroll-margin:16px 0;}   /* « Voir les murs proposés » : un peu d’air sous la 2e carte */
#mur .mur-cartes.mur-cartes-1{grid-template-columns:minmax(0,420px);}
#mur .mur-carte{appearance:none;-webkit-appearance:none;cursor:pointer;text-align:left;font:inherit;color:inherit;width:100%;min-height:44px;
  transition:border-color .2s ease;-webkit-tap-highlight-color:transparent;}
#mur .mur-carte .k{text-transform:none;letter-spacing:.01em;font-size:13.5px;line-height:1.45;color:var(--paper-dim);}
#mur .mur-carte .k b{font-weight:600;font-size:12px;letter-spacing:.14em;text-transform:uppercase;color:var(--paper);}
#mur .mur-carte .d{text-transform:none;letter-spacing:.01em;font-size:13.5px;line-height:1.5;color:var(--paper-dim);}
#mur .mur-carte .a{display:block;margin-top:10px;text-align:right;font-size:13px;font-weight:600;letter-spacing:.02em;color:var(--paper);}
#mur .mur-carte[aria-pressed="true"]{background:var(--paper);border-color:var(--paper);}
#mur .mur-carte[aria-pressed="true"] .k, #mur .mur-carte[aria-pressed="true"] .k b, #mur .mur-carte[aria-pressed="true"] .p,
#mur .mur-carte[aria-pressed="true"] .a{color:#0a0a0b;}
#mur .mur-carte[aria-pressed="true"] .d{color:rgba(10,11,12,.72);}

/* Résolution : une ligne par résolution, qui annonce son résultat avant qu’on la touche */
#mur .mur-lignes{display:grid;gap:8px;max-width:560px;}
#mur .mur-ligne-reso{appearance:none;-webkit-appearance:none;display:grid;grid-template-columns:auto minmax(0,1fr) auto;column-gap:12px;row-gap:3px;
  align-items:baseline;width:100%;min-height:56px;padding:11px 16px;text-align:left;font:inherit;color:var(--paper);cursor:pointer;
  background:rgba(255,255,255,.028);border:1px solid rgba(255,255,255,.14);border-radius:6px;-webkit-tap-highlight-color:transparent;}
#mur .mur-ligne-reso .n{font-family:'Archivo',sans-serif;font-size:16px;color:var(--paper);}
#mur .mur-ligne-reso .x{font-size:13px;color:var(--paper-dim);font-variant-numeric:tabular-nums;}
#mur .mur-ligne-reso .r{grid-column:1 / span 2;font-size:13.5px;line-height:1.45;color:var(--paper-dim);}
#mur .mur-ligne-reso .a{grid-column:3;grid-row:1 / span 2;align-self:center;display:none;font-size:13px;font-weight:600;white-space:nowrap;}
#mur .mur-ligne-reso[aria-pressed="true"]{background:var(--paper);border-color:var(--paper);}
#mur .mur-ligne-reso[aria-pressed="true"] .n, #mur .mur-ligne-reso[aria-pressed="true"] .a{color:#0a0a0b;}
#mur .mur-ligne-reso[aria-pressed="true"] .x, #mur .mur-ligne-reso[aria-pressed="true"] .r{color:rgba(10,11,12,.72);}
#mur .mur-ligne-reso[aria-pressed="true"] .a{display:block;}

/* Dalles : Colonnes / Rangées, une ligne même à 360 px */
#mur .mur-dim{display:flex;gap:16px 28px;flex-wrap:wrap;align-items:flex-start;}
#mur .mur-axe .cl{font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:#a8a29a;margin-bottom:8px;}
#mur .mur-sous{margin-top:6px;font-size:12.5px;color:var(--paper-dim);}
#mur .sp-ctl{display:inline-flex;}
#mur .sp-ctl button{min-width:48px;min-height:48px;padding:0 14px;font-size:21px;-webkit-tap-highlight-color:transparent;}
#mur .sp-ctl button:disabled{opacity:.28;cursor:default;}
#mur .sp-ctl .n{min-width:52px;}
/* (lot 5) un mur calepiné : la largeur et la hauteur en m (« 12,25 m »), la découpe dessous ; à 375 px, les deux réglages
   passent l’un sous l’autre plutôt que de déborder */
#mur .mur-dim.mur-cotes{flex-wrap:wrap;}
#mur .mur-cotes .sp-ctl .n{min-width:84px;white-space:nowrap;}
#mur .mur-cotes .mur-sous{max-width:230px;line-height:1.45;}
@media(max-width:560px){
  #mur .mur-dim{gap:16px;flex-wrap:nowrap;}
  #mur .sp-ctl button{min-width:44px;min-height:44px;padding:0 10px;}
  #mur .sp-ctl .n{min-width:40px;}
}

/* 3. Votre mur */
#mur .mur-invite{margin:0;padding:18px 20px;border:1px dashed rgba(255,255,255,.2);border-radius:6px;font-size:14px;line-height:1.6;color:var(--paper-dim);max-width:62ch;}
#mur .mur-statut{margin:0;font-family:'Archivo',sans-serif;font-size:16px;color:var(--paper);font-variant-numeric:tabular-nums;}
#mur .mur-origine{margin:4px 0 0;font-size:13px;line-height:1.5;color:#a8a29a;}
#mur .mur-dessin{display:block;max-width:100%;height:auto;margin:14px 0 18px;color:var(--paper-dim);overflow:visible;}
#mur .mur-e3.mur-sans-mur .mur-dessin, #mur .mur-e3.mur-sans-mur .mur-tuiles{display:none;}
#mur .mur-dessin text{fill:currentColor;font-family:'Archivo',sans-serif;font-size:12.5px;letter-spacing:.04em;}
/* (lot 5) la scène : le mur et la silhouette de 1,75 m (mur.js), sobres, dans la couleur de la fiche */
#mur .mur-dessin .mur-personne{pointer-events:none;}
#mur .mur-tuiles{grid-template-columns:repeat(3,minmax(0,1fr));max-width:1040px;}
@media(max-width:900px){#mur .mur-tuiles{grid-template-columns:repeat(2,minmax(0,1fr));}}
/* (lot 5) jamais dans la mesure de la page 1 (html.mur-mesure) : sur un téléphone, elle se fait à la largeur A4, avec les tailles du papier */
@media(max-width:420px){html:not(.mur-mesure) #mur .mur-tuiles .rc{padding:13px 12px;} html:not(.mur-mesure) #mur .mur-tuiles .rc .v{font-size:17px;}}
/* (09/10) sur deux colonnes, une dernière tuile seule sur sa rangée (Vellum : 3 tuiles, la fiche ne donne ni poids ni
   consommation ; Element : 5) prend toute la largeur, au lieu d’un vide à sa droite. Sur papier, trois colonnes : rien ne change. */
@media screen and (max-width:900px){#mur .mur-tuiles .rc:last-child:nth-child(odd){grid-column:1/-1;}}
@media screen and (min-width:700px) and (max-width:900px){html.mur-impr #mur .mur-tuiles .rc:last-child:nth-child(odd){grid-column:auto;}}
/* (14/10) sur trois colonnes, à l’ÉCRAN DE TOUS LES JOURS (901 px et plus), une dernière tuile seule sur sa rangée (Sub Zero : 7 tuiles,
   avec « Chaleur dégagée ») prend toute la largeur, comme sur deux colonnes ; 1, 4, 7 ou 10 tuiles seulement. (relectures du 14/10) Sur papier
   et dans l’aperçu aussi (bloc A4, plus bas : elle restait seule à gauche d’une rangée aux deux tiers vide, sa ligne du dessous repliée sur
   trois lignes), avec un fond UNI sur papier noir : Chrome matricialise le dégradé de fond (à demi transparent) d’une tuile élargie en une image
   de 2 107 px de large, 105 Kio de plus par PDF, et la simplifiée de Sub Zero passait le mégaoctet ; un fond uni ne coûte rien */
@media screen and (min-width:901px){html:not(.mur-impr) #mur .mur-tuiles .rc:last-child:nth-child(3n+1){grid-column:1/-1;}}
/* (vérification du 16/10, tour 3) et deux tuiles sur la dernière rangée (The Set : 8 tuiles) : la dernière prend les deux places qui restent, la rangée
   n’a plus de trou (sur papier et dans l’aperçu aussi, bloc A4) */
@media screen and (min-width:901px){html:not(.mur-impr) #mur .mur-tuiles .rc:last-child:nth-child(3n+2){grid-column:span 2;}}
/* (relectures du 13/10) le temps où le calculateur synchronise les onglets de la fiche (mur.js, garderPlace) : rien ne s'anime, le changement
   est immédiat et compensé (« Les formats » de Swap grandissait en 0,45 s au-dessus du calculateur : le bouton touché sautait de 65 px) */
html.mur-sans-transition *, html.mur-sans-transition *::before, html.mur-sans-transition *::after { transition:none !important; }
/* (relectures du 13/10) un mur calepiné : sa tuile « Dalles » dit une ligne par format (« 1 000 × 500 mm · 2 dalles »), puis le sens */
#mur .mur-tuiles .u .mur-lf{display:block;}
#mur .mur-note-conso{margin-top:14px;}
#mur .mur-e3.mur-sans-mur .mur-note-conso{display:none;}
/* (16/10) le calculateur « lés » (Invisia) : la phrase de l’axe alimenté sous les tuiles (un film plus large que l’axe : sur étude) */
#mur .mur-note-axe{margin-top:14px;}
#mur .mur-e3.mur-sans-mur .mur-note-axe{display:none;}
/* (vérification du 16/10, tour 3) la légende du dessin du calculateur « formats » (The Set : le comptoir vu de face, l’écran en fait le tour), juste dessous */
#mur .mur-legende{margin:0 0 14px;font-size:13px;line-height:1.5;letter-spacing:.01em;color:var(--paper-dim);}
/* ses trois trames sur une rangée au téléphone : « 85 % de transparence » en bas de casse, sur deux lignes (en capitales espacées, « TRANSPARENCE »
   sortait de son onglet à 375 px) */
@media(max-width:560px){
  #mur .mur-trames .md-tab{padding:10px 10px 11px;}
  #mur .mur-trames .md-tab .d{text-transform:none;letter-spacing:.02em;line-height:1.3;overflow-wrap:anywhere;}
}
/* (16/10) le calculateur « versions » (Curva) : ses neuf versions trois par rangée (deux au téléphone), le nom puis le module et la surface en bas de
   casse ; les pitchs de la version, quatre par rangée, téléphone compris (« 0,94 mm » y tient) ; la forme, deux onglets ; sous les tuiles, les notes (le
   cylindre, les caissons d’Ultra 30, le « ≈ » d’une valeur estimée) */
/* (vérification du 16/10, tour 3) le calculateur « formats » (Cala, The Set) : la taille sous l’onglet en bas de casse (« 2,43 × 1,37 m » : en capitales
   de la fiche, le « m » devenait « M », qui se lit méga) */
#mur .mur-modeles .md-tab .d{text-transform:none;letter-spacing:.02em;}
#mur .md-tabs.mur-versions{grid-template-columns:repeat(3,minmax(0,1fr));max-width:820px;}
#mur .mur-versions .md-tab .d, #mur .mur-formes .md-tab .d{text-transform:none;letter-spacing:.02em;line-height:1.35;}
#mur .md-tabs.mur-pitchs-v{grid-template-columns:repeat(4,minmax(0,1fr));max-width:820px;}
@media(max-width:640px){
  #mur .md-tabs.mur-versions{grid-template-columns:repeat(2,minmax(0,1fr));}
  #mur .mur-versions .md-tab .d{overflow-wrap:anywhere;}
  #mur .md-tabs.mur-pitchs-v{gap:6px;}
  #mur .mur-pitchs-v .md-tab{padding-left:4px;padding-right:4px;text-align:center;}
}
#mur .mur-notes-v .mx-note{margin-top:12px;}
/* (vérification du 16/10, tour 3) LE CHOIX RAPIDE « Plus petit / Plus grand » de Curva (mur.js, rendreVersions) : à l’écran sans défiler après un clic à
   l’étape 1. Sur ordinateur (1 024 px et plus), en haut de l’étape 3, dans la colonne collée ; en dessous, une barre collée au bas de l’écran tant que le
   calculateur y est (sa section en overflow:clip, qui coupe sans faire une boîte de défilement : dans un overflow:hidden, rien ne colle). Jamais dans
   l’aperçu ni sur papier. */
#mur .mur-choix-v{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
#mur .mur-choix-v.mur-choix-1{grid-template-columns:minmax(0,1fr);}
#mur .mur-choix-v[hidden]{display:none!important;}
#mur .mur-choix-b{appearance:none;-webkit-appearance:none;cursor:pointer;text-align:left;font:inherit;color:var(--paper);min-height:44px;margin:0;
  padding:7px 12px 8px;border:1px solid rgba(255,255,255,.22);border-radius:6px;background:rgba(255,255,255,.03);display:flex;flex-direction:column;justify-content:center;gap:1px;}
#mur .mur-choix-b .k{font-size:12px;font-weight:600;letter-spacing:.14em;text-transform:uppercase;line-height:1.3;color:var(--paper);}
#mur .mur-choix-b .p{font-size:14.5px;line-height:1.35;letter-spacing:.01em;color:var(--paper);}
#mur .mur-choix-b[aria-pressed="true"]{background:var(--paper);border-color:var(--paper);}
#mur .mur-choix-b[aria-pressed="true"] .k, #mur .mur-choix-b[aria-pressed="true"] .p{color:#0a0a0b;}
#mur .mur-choix-b:focus-visible{outline:2px solid var(--paper);outline-offset:2px;}
@media (hover:hover){#mur .mur-choix-b:not([aria-pressed="true"]):hover{border-color:rgba(255,255,255,.42);}}
@media screen and (min-width:1024px){
  html:not(.mur-impr) #mur .mur-choix-bas{display:none!important;}
  html:not(.mur-impr) #mur .mur-choix-col{margin:0 0 12px;}
}
/* (vérification du 16/10, finitions) la barre : la taille visée d’abord (.mur-choix-t, « Pour 3,2 × 1,92 m : ») ; un trait au-dessus, sans ombre portée (en bas du
   calculateur, l’ombre débordait sur « Télécharger la fiche ») ; tue (.mur-choix-redit, mur.js : rediteChoixV) quand les cartes de l’étape 2, qui disent le même
   choix, sont à l’écran : elle garde sa place, rien ne bouge */
#mur .mur-choix-v .mur-choix-t{grid-column:1/-1;margin:0;font-size:12.5px;line-height:1.3;letter-spacing:.01em;color:rgba(255,255,255,.72);}
@media screen and (max-width:1023.98px){
  html:not(.mur-impr) #mur .mur-choix-col{display:none!important;}
  html:not(.mur-impr) #mur.mur-sec:has(.mur-choix-bas){overflow:clip;}
  html:not(.mur-impr) #mur .mur-choix-bas{position:-webkit-sticky;position:sticky;bottom:0;z-index:6;margin-top:20px;padding:8px 0 calc(10px + env(safe-area-inset-bottom, 0px));
    background:var(--ink, #0a0a0b);box-shadow:0 -1px 0 rgba(255,255,255,.14);row-gap:6px;}
  html:not(.mur-impr) #mur .mur-choix-bas.mur-choix-redit{visibility:hidden;}
}
html.mur-impr #mur .mur-choix-v{display:none!important;}
@media print{#mur .mur-choix-v{display:none!important;}}
#mur .mur-msg .mur-msg-choix{display:block;}
#mur .mur-etapes-versions .mur-gauche .mur-e2{margin-top:40px;}
#mur .mur-e3.mur-sans-mur .mur-notes-v{display:none;}
#mur .mur-lu{position:absolute!important;width:1px;height:1px;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;margin:0;padding:0;}
.mur-resume,.mur-impr-seul,.mur-sans-form,.mur-photo,.mur-fiche-pitch,.mur-onglet-dit,.mur-fiche-formats,.mur-chaleur,.mur-formats-tous{display:none;}
#mur-pied,#mur-barre{display:none;}
.mur-sec--suite{padding:0 0 90px;}
@media screen{html:not(.mur-impr) #mur.mur-sec--suite{margin-top:-64px;position:relative;z-index:2;}}
#mur.mur-sec--suite .mur-pdf{margin-top:0;}
#mur .mur-resume{margin:4px 0 6px;font-size:15px;color:var(--paper);line-height:1.6;}
.mur-lien-produit{color:inherit;text-decoration:underline;text-decoration-thickness:1px;text-underline-offset:2px;}
span.mur-lien-produit{text-decoration:none;}   /* (19/10, étape 5a) le revendeur : le nom du produit n’est pas un lien (mur.js, lienProduit) */
#mur .mur-resume-o{color:var(--paper-dim);}
#mur-copie .sim-strip{margin:12px 0 20px;}
/* 4 tuiles côte à côte (Fold-Up) seulement sur papier ou sur un écran assez large : sur téléphone, la
   grille de la fiche (2 puis 1 colonne) ; sinon l’aperçu débordait de 24 px à 390 px (revue du 08/10) */
@media print, (min-width:700px){ #mur-copie .rc-grid{grid-template-columns:repeat(4,minmax(0,1fr));} }
/* (15/10, D6) la chaleur dégagée des affiches, la tuile ajoutée à la copie : sur toute la largeur, sous les quatre autres (ou les deux) */
#mur-copie .rc.mur-rc-chaleur{grid-column:1/-1;}

/* ordinateur, à partir de 1 024 px : l’étape 1 en pleine largeur, puis une grille « 2 | 3 » ; l’étape 3 dans une
   colonne de droite qui reste à l’écran (collée), sauf si elle est plus haute que l’écran (mur.js pose alors
   mur-droite-libre). Le haut de l’étape 3 est au niveau des onglets ; mur.js donne à la colonne de gauche
   une hauteur minimale (place pour coller, et pas de saut quand on change d’onglet). Sur téléphone, une colonne. */
@media screen and (min-width:1024px){
  /* la section porte .tech, que les fiches mettent en overflow:hidden : une boîte de défilement, dans laquelle une
     colonne collée ne colle jamais (mesuré le 08/10). overflow:clip coupe pareil sans en faire une boîte de
     défilement ; un navigateur qui ne le connaît pas garde hidden (la colonne ne colle pas, rien ne casse). */
  html:not(.mur-impr) #mur.mur-sec{overflow:clip;}
  html:not(.mur-impr) #mur .mur-etapes{display:grid;grid-template-columns:minmax(0,1fr) 420px;column-gap:56px;align-items:start;margin-top:40px;}
  html:not(.mur-impr) #mur .mur-droite{position:-webkit-sticky;position:sticky;top:24px;}
  html:not(.mur-impr) #mur .mur-droite.mur-droite-libre{position:static;}
  html:not(.mur-impr) #mur .mur-e2, html:not(.mur-impr) #mur .mur-e3{margin-top:0;}
  /* (16/10) le calculateur « formats » (Cala, The Set) : une seule colonne, le modèle choisi sous ses onglets */
  html:not(.mur-impr) #mur .mur-e3.mur-e3-formats{margin-top:36px;}
  /* (16/10) Curva : l’étape 1 dans la colonne de gauche, l’étape 2 dessous */
  html:not(.mur-impr) #mur .mur-etapes-versions .mur-gauche .mur-e2{margin-top:44px;}
  html:not(.mur-impr) #mur .mur-droite .mur-etape{margin-bottom:12px;}
  html:not(.mur-impr) #mur .mur-droite .mur-tuiles{grid-template-columns:repeat(2,minmax(0,1fr));gap:8px;}
  html:not(.mur-impr) #mur .mur-droite .mur-tuiles .rc:last-child:nth-child(odd){grid-column:1/-1;}
  /* (15/10) sur ces deux colonnes, jamais une dernière tuile PAIRE en pleine largeur : la règle des trois colonnes (3n+1, plus haut) élargissait
     la quatrième (Vellum, Phantom : la chaleur en attente), qui partait seule sur une rangée de plus et laissait un vide à droite de la troisième */
  html:not(.mur-impr) #mur .mur-droite .mur-tuiles .rc:last-child:nth-child(even){grid-column:auto;}
  html:not(.mur-impr) #mur .mur-droite .rc{padding:9px 12px 10px;}
  /* (26/10/2026, lot 2610, correction 4 des experts) le libellé à 12 px (10,5 avant) : jamais coupé (« CONSOMMATION MAXIMA… » à 1 366 px) ; il passe
     à la ligne s’il le faut, son espacement un cran plus serré (il tient sur une ligne dès 1 366 px) */
  html:not(.mur-impr) #mur .mur-droite .rc .k{letter-spacing:.05em;white-space:normal;overflow:visible;text-overflow:clip;}
  html:not(.mur-impr) #mur .mur-droite .rc .v{font-size:16px;margin-top:3px;}
  html:not(.mur-impr) #mur .mur-droite .rc .u{font-size:12px;line-height:1.45;margin-top:3px;}
  html:not(.mur-impr) #mur .mur-droite .mur-dessin{margin:10px 0 12px;}
  html:not(.mur-impr) #mur .mur-droite .mur-note-conso, html:not(.mur-impr) #mur .mur-droite .mur-note-axe, html:not(.mur-impr) #mur .mur-droite .mur-notes-v .mx-note{margin-top:8px;}
  html:not(.mur-impr) #mur .mur-droite .mur-pdf{margin-top:16px;}
  html:not(.mur-impr) #mur .mur-droite .mur-pdf-note{margin-top:10px;font-size:12px;line-height:1.5;}
  /* (15/10, lot 3) LA COLONNE RESSERRÉE (mur.js, verifierCollage : mur-droite-serree) : encore trop haute pour rester collée, le plan déjà à
     son minimum (sept tuiles avec la chaleur : Cinetix, Echo, Helio, Verso, Block, Sub Zero, sur un portable de 650 px de haut), ses tuiles et
     ses marges se resserrent avant qu’elle ne lâche (elle passait de 676 à 748 px) ; une colonne qui tient ne change pas */
  html:not(.mur-impr) #mur .mur-droite.mur-droite-serree .mur-tuiles{gap:6px;}
  html:not(.mur-impr) #mur .mur-droite.mur-droite-serree .rc{padding:6px 10px 7px;}
  html:not(.mur-impr) #mur .mur-droite.mur-droite-serree .rc .v{font-size:15px;margin-top:1px;}
  html:not(.mur-impr) #mur .mur-droite.mur-droite-serree .rc .u{line-height:1.3;margin-top:1px;}
  html:not(.mur-impr) #mur .mur-droite.mur-droite-serree .mur-etape{margin-bottom:8px;}
  html:not(.mur-impr) #mur .mur-droite.mur-droite-serree .mur-pdf{margin-top:6px;}
  /* (18/10, étape 3) « Télécharger la fiche du produit » sous la note : 133 px pour ce bloc au lieu de 94, la colonne de Cinetix (8 × 2, 650 px)
     passait à 689 px et lâchait ; ses marges se resserrent aussi (les boutons gardent 44 px) */
  html:not(.mur-impr) #mur .mur-droite.mur-droite-serree .mur-pdf-note{margin-top:6px;}
  html:not(.mur-impr) #mur .mur-droite.mur-droite-serree .mur-pdf-a{margin-top:6px;}
  html:not(.mur-impr) #mur .mur-droite.mur-droite-serree .mur-note-conso{margin-top:4px;}
  html:not(.mur-impr) #mur .mur-droite.mur-droite-serree .mur-dessin{margin:6px 0 8px;}
}

/* le survol, seulement avec une souris : après un toucher, plus de fond gris qui reste */
@media (hover:hover){
  #mur .mur-onglet:not([aria-selected="true"]):hover{color:var(--paper);}
  #mur .mur-carte:not([aria-pressed="true"]):hover, #mur .mur-ligne-reso:not([aria-pressed="true"]):hover{border-color:rgba(255,255,255,.42);}
}
@media (hover:none){
  #mur .sp-ctl button:hover{background:transparent;color:var(--paper-dim);}
  #mur .md-tab:not([aria-selected="true"]):hover{border-color:rgba(255,255,255,.10);color:var(--paper-dim);}
}

/* l’accès direct au calculateur, dans le haut de fiche */
.hero .mur-vers{margin-top:28px;}
@media(max-width:560px){.hero .mur-vers{display:block;width:100%;max-width:420px;}}
/* (17/10, étape 1 du plan validé par Alex) « Télécharger la fiche · pitch 1,95 mm », juste sous « Composer mon écran » : UN accès, secondaire
   (un contour, pas un second bouton plein), sur sa propre ligne ; au téléphone, de la même largeur que « Composer mon écran », 44 px au moins,
   le libellé sur deux lignes au plus (« Télécharger la fiche · Studio 30 · 1,88 mm » à 360 px) */
.hero .mur-fiche-vers{display:flex;align-items:center;width:-webkit-max-content;width:max-content;max-width:100%;min-height:44px;margin-top:12px;padding:11px 20px;
  font-size:14px;line-height:1.35;text-align:left;-webkit-tap-highlight-color:transparent;}
@media(max-width:560px){.hero .mur-fiche-vers{width:100%;max-width:420px;justify-content:center;text-align:center;padding:11px 14px;}}
.hero .mur-fiche-vers:focus-visible{outline:2px solid var(--paper);outline-offset:2px;}
/* (23/10/2026, demande d’Alex) « Télécharger la fiche produit » : il ne présuppose plus de pitch ; touché, il ouvre SUR PLACE le choix, juste dessous
   (mur.js, vueChoixFiche) : « Choisissez votre pitch », les pitchs en pastilles (44 px), aucune choisie d’avance ; la pastille choisie s’allume comme
   l’onglet choisi de la fiche technique (fond clair, texte foncé) ; puis « Télécharger la fiche · pitch 2,5 mm », le bouton plein du choix. Le choix a
   son fond sombre : il reste lisible sur le film du haut de fiche. Les sélecteurs portent l’identifiant : les règles des fiches (« .hero p »,
   « .hero .wrap > div », leurs animations d’entrée) ne l’atteignent pas. Jamais sur papier ni dans l’aperçu (le bloc COURT, plus bas). */
/* le chevron : un pseudo-élément (le libellé reste le seul texte du bouton) ; vers le bas, fermé ; vers le haut, ouvert */
.hero .mur-fiche-vers::after{content:"";display:inline-block;flex:none;width:7px;height:7px;margin:0 2px 0 12px;border-right:1.5px solid currentColor;border-bottom:1.5px solid currentColor;
  transform:translateY(-2px) rotate(45deg);}
.hero .mur-fiche-vers[aria-expanded="true"]{border-color:rgba(255,255,255,.45);}
.hero .mur-fiche-vers[aria-expanded="true"]::after{transform:translateY(2px) rotate(-135deg);}
/* (26/10/2026, lot 2610, demande d’Alex) « Télécharger la fiche · pitch 2,5 mm » sous les onglets de la fiche technique (mur.js, poserFicheBas) : le même bouton
   que celui du haut de fiche (un contour, 44 px), à gauche, au-dessus du tableau ; au téléphone, de la même largeur que celui du haut. Les sélecteurs portent la
   classe de section (.mur-fiche-bas) : les règles des fiches (« .wrap p ») ne l’atteignent pas. Jamais sur papier ni dans l’aperçu (le bloc COURT). */
p.mur-fiche-bas{display:block;margin:22px 0 0;padding:0;max-width:none;opacity:1;transform:none;}
p.mur-fiche-bas .mur-fiche-bas-b{display:flex;align-items:center;width:-webkit-max-content;width:max-content;max-width:100%;min-height:44px;margin:0;padding:11px 20px;
  font-size:14px;line-height:1.35;text-align:left;-webkit-tap-highlight-color:transparent;}
@media(max-width:560px){p.mur-fiche-bas .mur-fiche-bas-b{width:100%;max-width:420px;justify-content:center;text-align:center;padding:11px 14px;}}
p.mur-fiche-bas .mur-fiche-bas-b:focus-visible{outline:2px solid var(--paper);outline-offset:2px;}
/* (26/10/2026, lot 2610, variante B d’Alex) « Votre mur passe en 7,8 mm · Revenir au 3,9 » (mur.js, majPasse), en haut de « 3. Votre mur » (Fold-Up, Nomad : sous
   « Composer un mur d’affiches ») : un filet de l’accent à gauche, le texte de la page, « Revenir » un contour de 44 px ; d’un tenant au téléphone */
p.mur-passe, #mur p.mur-passe{display:flex;flex-wrap:wrap;align-items:center;gap:6px 12px;margin:0 0 14px;padding:6px 0 6px 12px;max-width:none;
  border-left:2px solid var(--accent);font-size:14.5px;line-height:1.45;color:var(--paper);opacity:1;transform:none;}
p.mur-passe[hidden], #mur p.mur-passe[hidden]{display:none !important;}
p.mur-passe .mur-passe-r{min-height:44px;padding:8px 14px;font-size:14px;line-height:1.3;}
/* (27/10/2026, décision d’Alex) la même ligne, redite juste sous « Télécharger la fiche · pitch X mm » de la fiche technique (mur.js, poserPasse) : l’écart avec
   le bouton au-dessus ; celui du tableau, dessous, reste celui de la fiche */
p.mur-passe.mur-passe-bas{margin:12px 0 0;}
#mur-fiche-choix{display:block;box-sizing:border-box;width:100%;max-width:620px;margin:10px 0 0;padding:16px 16px 18px;border:1px solid rgba(255,255,255,.16);border-radius:8px;
  background:rgba(8,8,9,.82);opacity:1;transform:none;text-align:left;}
#mur-fiche-choix[hidden]{display:none;}
#mur-fiche-choix .mur-choix-q{margin:0 0 12px;padding:0;font-family:'Archivo',sans-serif;font-size:17px;font-weight:600;line-height:1.35;letter-spacing:0;text-transform:none;color:var(--paper);opacity:1;transform:none;}
#mur-fiche-choix .mur-choix-t{margin:16px 0 8px;padding:0;font-size:12px;font-weight:400;line-height:1.3;letter-spacing:.14em;text-transform:uppercase;color:var(--paper-dim);opacity:1;transform:none;}
#mur-fiche-choix .mur-choix-q + .mur-choix-t{margin-top:0;}
#mur-fiche-choix .mur-choix-r{display:grid;grid-template-columns:repeat(auto-fill,minmax(92px,1fr));gap:8px;margin:0;padding:0;}
#mur-fiche-choix .mur-choix-r2{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));}
/* (24/10/2026) un libellé long sans sous-ligne (Vitra « 10,4 × 10,4 mm ») : les colonnes larges ; il ne sort plus de sa pastille */
#mur-fiche-choix .mur-choix-rl{grid-template-columns:repeat(auto-fill,minmax(132px,1fr));}
#mur-fiche-choix .mur-choix-b{appearance:none;-webkit-appearance:none;display:flex;flex-direction:column;align-items:center;justify-content:center;box-sizing:border-box;min-width:0;
  min-height:44px;margin:0;padding:8px 10px;border:1px solid rgba(255,255,255,.24);border-radius:22px;background:transparent;color:var(--paper);font:inherit;
  font-family:'Archivo',sans-serif;font-size:15px;font-weight:400;line-height:1.25;letter-spacing:0;text-transform:none;text-align:center;cursor:pointer;
  -webkit-tap-highlight-color:transparent;opacity:1;transform:none;}
#mur-fiche-choix .mur-choix-r2 .mur-choix-b{border-radius:10px;}
#mur-fiche-choix .mur-choix-b .p{display:block;white-space:nowrap;}
#mur-fiche-choix .mur-choix-b .d{display:block;margin-top:3px;font-size:12px;line-height:1.3;color:var(--paper-dim);white-space:normal;}
#mur-fiche-choix .mur-choix-b[aria-pressed="true"]{background:var(--paper);border-color:var(--paper);color:#0a0a0b;font-weight:600;}
#mur-fiche-choix .mur-choix-b[aria-pressed="true"] .d{color:rgba(10,11,12,.7);font-weight:400;}
#mur-fiche-choix .mur-choix-b:focus-visible, #mur-fiche-choix .mur-fiche-dl:focus-visible{outline:2px solid var(--paper);outline-offset:2px;}
@media (hover:hover){#mur-fiche-choix .mur-choix-b:not([aria-pressed="true"]):hover{border-color:rgba(255,255,255,.55);}}
#mur-fiche-choix .mur-choix-n{margin:12px 0 0;padding:0;font-size:13px;line-height:1.5;color:var(--paper-dim);opacity:1;transform:none;}
#mur-fiche-choix .mur-fiche-dl{display:block;margin:16px 0 0;}
/* pas encore de choix : le bouton garde sa place, éteint (contraste du texte 4,5 : 1 au moins sur le fond du choix) */
#mur-fiche-choix .mur-fiche-dl[aria-disabled="true"]{background:rgba(255,255,255,.07);color:rgba(255,255,255,.62);box-shadow:inset 0 0 0 1px rgba(255,255,255,.16);cursor:default;}
/* Curva : le pitch attend le module */
#mur-fiche-choix .mur-choix-vide{display:flex;align-items:center;min-height:44px;font-size:14px;line-height:1.4;color:var(--paper-dim);}
/* le bouton touché avant le choix : le rang à choisir s’éclaire (une couleur, aucun mouvement) */
#mur-fiche-choix .mur-choix-signal{border-radius:24px;box-shadow:0 0 0 2px var(--paper);}
#mur-fiche-choix .mur-choix-r2.mur-choix-signal{border-radius:12px;}
@media(max-width:560px){
  #mur-fiche-choix{max-width:420px;padding:14px 12px 16px;}
  #mur-fiche-choix .mur-choix-r{grid-template-columns:repeat(auto-fill,minmax(88px,1fr));}
  #mur-fiche-choix .mur-choix-r2{grid-template-columns:repeat(2,minmax(0,1fr));}
  #mur-fiche-choix .mur-choix-rl{grid-template-columns:repeat(2,minmax(0,1fr));}
  #mur-fiche-choix .mur-choix-rl .mur-choix-b{padding-left:6px;padding-right:6px;}
  #mur-fiche-choix .mur-fiche-dl{width:100%;text-align:center;}
}

/* téléphone : un plancher de lecture dans le calculateur (les sous-libellés des fiches font 10 px) */
@media(max-width:640px){
  #mur .md-tab .d, #mur .mur-axe .cl, #mur .mur-sous, #mur .cfg-label, #mur .mur-champ label, #mur .mur-suite legend{font-size:12px;}
  html:not(.mur-mesure) #mur .rc .k{font-size:12px;}
  html:not(.mur-mesure) #mur .rc .u, #mur .mur-carte .k, #mur .mur-carte .d, #mur .mur-err, html:not(.mur-mesure) #mur .mx-note{font-size:13px;}
}

/* ====== le PDF et le formulaire ====== */
#mur .mur-pdf{margin-top:24px;max-width:860px;}
.mur-cta{display:inline-block;appearance:none;-webkit-appearance:none;background:var(--paper);color:var(--ink);border:0;border-radius:4px;
  padding:15px 28px;min-height:44px;font-family:'Archivo',sans-serif;font-weight:600;font-size:14px;letter-spacing:.02em;line-height:1.3;
  cursor:pointer;text-decoration:none;text-align:center;transition:background .3s ease;}
@media (hover:hover){.mur-cta:hover{background:#fff;}}
.mur-cta:disabled{opacity:.6;cursor:default;}
@media(max-width:560px){#mur .mur-cta{display:block;width:100%;}}
#mur .mur-pdf-note{max-width:62ch;}
#mur .mur-zone{max-width:860px;}
#mur .mur-zone:empty{display:none;}
/* ====== (19/10, étape 5a) L’ESPACE REVENDEUR : son bloc sous « Votre mur » (mur.js : construireRevendeur), à la place de « Être rappelé » ; la
   mini-connexion, sur place. Les champs sont ceux du formulaire (.mur-champ : 48 px, texte de 16 px, sans zoom d’iOS) ; un seul bouton plein. ====== */
#mur .mur-pdf-rev .mur-champ{max-width:460px;margin:0 0 14px;}
#mur .mur-rev-t{margin:0 0 14px;font-size:15.5px;line-height:1.6;color:var(--paper);max-width:64ch;}
/* (19/10, 1er tour de verification) le statut « Enregistrée : … » recoit le focus (lecteurs d'ecran) : apres Entree au clavier, le cadre du focus
   le faisait prendre pour un champ ; un texte qui n'est pas une commande n'a pas de cadre */
#mur .mur-rev-t:focus,#mur .mur-rev-t:focus-visible{outline:none;}
#mur .mur-rev-pw{display:flex;gap:8px;align-items:stretch;}
#mur .mur-rev-pw input{flex:1 1 auto;min-width:0;width:auto;}
#mur .mur-rev-pw .mur-lien-b{flex:0 0 auto;min-height:48px;}
#mur .mur-rev-rester{margin:0 0 6px;}
#mur .mur-pdf-rev .mur-err:empty{display:none;}
#mur .mur-pdf-rev .mur-rev-err{margin:12px 0 0;font-size:14px;line-height:1.55;}
#mur .mur-pdf-rev .mur-rev-err .mur-lien-b{display:inline-flex;align-items:center;margin-top:8px;}
#mur .mur-pdf-rev .mur-pdf-note{margin-top:10px;}
#mur .mur-pdf-rev .mur-pdf-a{margin-top:14px;}
#mur .mur-pdf-rev .mur-champ label{font-size:12px;}   /* jamais sous 12 px (le formulaire public : 11,5) */
/* (19/10, 2e tour de verification) la mini-connexion : « Mot de passe oublié ? » qui se deplie ; le mode equipe qui dit le revendeur connecte */
#mur .mur-pdf-rev .mur-rev-oubli-l{margin:4px 0 0;}
#mur .mur-pdf-rev .mur-rev-oubli-t{margin:8px 0 0;}
/* (20/10, lot D4, l'écran du 3e tour) « Mot de passe oublié ? » et « Écrire à Alex » sont des LIENS, soulignés et sans cadre, comme sur
   /espace/ ; le bouton plein garde 20 px au-dessus de lui (avant : 0 px, un bouton encadré collé au bouton plein ; au téléphone, le doigt
   touchait l'un pour l'autre). La cible reste de 44 px. */
#mur .mur-pdf-rev .mur-lien-t{appearance:none;-webkit-appearance:none;display:inline-flex;align-items:center;min-height:44px;padding:0;margin:0;border:0;
  background:none;color:var(--paper);font:inherit;font-size:14px;line-height:1.3;text-decoration:underline;text-underline-offset:4px;
  text-decoration-color:rgba(255,255,255,.45);cursor:pointer;}
@media (hover:hover){#mur .mur-pdf-rev .mur-lien-t:hover{text-decoration-color:currentColor;}}
#mur .mur-pdf-rev .mur-lien-t:focus-visible{outline:2px solid var(--accent-glow);outline-offset:3px;border-radius:2px;}
#mur .mur-rev-connexion .mur-rev-envoyer{margin-top:20px;}
/* (20/10, lot D2) le mur changé : « Enregistrer les changements » (le seul bouton plein) et, juste dessous, « Enregistrer comme nouvelle
   configuration » (un contour, de la même hauteur et de la même largeur), 12 px entre eux ; la colonne du mur est étroite (420 px chez
   Swap à 1 366 px) : côte à côte, ils passaient à la ligne, de largeurs inégales ; au téléphone, toute la largeur */
#mur .mur-rev-boutons{display:inline-flex;flex-direction:column;align-items:stretch;gap:12px;max-width:100%;vertical-align:top;}
#mur .mur-rev-boutons .mur-rev-nouvelle{display:flex;align-items:center;justify-content:center;min-height:48px;padding:0 20px;font-size:14px;
  border-color:rgba(255,255,255,.45);}
@media(max-width:560px){#mur .mur-rev-boutons{display:flex;}}
#mur .mur-equipe-rev{margin:14px 0 0;}
@media(max-width:560px){#mur .mur-pdf-rev .mur-pdf-a .mur-lien-b{display:flex;width:100%;justify-content:center;}}
.mur-config-nom{display:none;}
#mur .mur-form{margin-top:30px;padding:26px 26px 28px;border:1px solid rgba(255,255,255,.12);border-radius:8px;background:rgba(255,255,255,.025);}
@media(max-width:560px){#mur .mur-form{padding:22px 16px 24px;}}
#mur .mur-form .cfg-label{margin-top:0;}
/* (20/10, finitions, tour 1 de vérification) la ligne du mur sous le titre du formulaire (majFormMur) : lue d’abord, à l’encre du texte */
#mur .mur-form .mur-form-mur{margin:6px 0 16px;color:var(--paper);font-weight:600;}
#mur .mur-oblig{margin-top:0;margin-bottom:18px;}
/* (deuxième relecture du 09/10) la phrase des champs facultatifs et la note du bouton : --paper-dim, comme les libellés
   (--paper-faint donnait 3,6 et 3,7 : 1, sous 4,5 : 1) */
#mur .mur-oblig, #mur .mur-pdf-note{color:var(--paper-dim);}
#mur .mur-champs{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:16px 18px;}
@media(max-width:640px){#mur .mur-champs{grid-template-columns:1fr;}}
/* (relectures du 09/10) libellés et légende du formulaire : --paper-dim (--paper-faint donnait 3,7 : 1, sous 4,5 : 1) */
#mur .mur-champ label{display:block;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--paper-dim);margin-bottom:8px;}
#mur .mur-champ input, #mur .mur-champ textarea{display:block;width:100%;min-height:48px;padding:11px 14px;font:inherit;font-size:16px;color:var(--paper);
  background:rgba(24,24,24,.6);border:1px solid rgba(255,255,255,.18);border-radius:6px;outline:none;}
#mur .mur-champ input:focus, #mur .mur-champ textarea:focus{border-color:var(--accent-glow);}
/* (v4) société et projet, facultatifs : « (facultatif) » en minuscules, à côté du libellé en capitales */
#mur .mur-champ .mur-facult{text-transform:none;letter-spacing:.02em;}
#mur .mur-champ-l{grid-column:1 / -1;}
#mur .mur-champ textarea{min-height:96px;line-height:1.5;resize:vertical;}
/* (relectures du 09/10) l'aide du projet : --paper-dim, 7,3 : 1 sur le fond du champ (--paper-faint donnait 3,4 : 1) */
#mur .mur-champ textarea::placeholder{color:var(--paper-dim);opacity:1;}
#mur .mur-champ input[aria-invalid="true"],#mur .mur-choix input[aria-invalid="true"]{border-color:#ff9d8a;}
#mur .mur-suite{border:0;margin:24px 0 0;padding:0;min-width:0;}
#mur .mur-suite legend{padding:0;margin-bottom:6px;font-size:12px;letter-spacing:.16em;text-transform:uppercase;color:var(--paper-dim);}
/* color-scheme sombre : sinon les cases non cochées sont des disques BLANCS pleins et la cochée un anneau
   gris, qu’on lit à l’envers (revue du 08/10) ; le choix coché passe aussi en gras */
#mur .mur-form{color-scheme:dark;}
#mur .mur-choix{display:flex;gap:12px;align-items:flex-start;min-height:44px;padding:10px 0;cursor:pointer;font-size:15px;line-height:1.5;color:var(--paper);}
#mur .mur-choix input{flex:0 0 auto;width:22px;height:22px;margin:1px 0 0;accent-color:var(--accent-glow);cursor:pointer;}
#mur .mur-suite .mur-choix:has(input:checked){font-weight:600;}
#mur .mur-accord{margin-top:14px;font-size:14px;color:var(--paper-dim);}
#mur .mur-piege{position:absolute!important;left:-9999px;width:1px;height:1px;opacity:0;pointer-events:none;}
#mur .mur-envoyer{margin-top:22px;}
/* (18/10, le filet) la ligne d'information sous le bouton : les demandes sont gardées 3 ans au plus */
#mur .mur-garde-info{margin:14px 0 0;max-width:62ch;color:var(--paper-dim);}
/* (18/10, étape 3) « Être rappelé avec ce mur » : sous le bouton, sa note neutre puis « Télécharger la fiche du produit » (un contour, pas un
   second bouton plein) ; en mode équipe, « Voir comme un visiteur » à côté */
#mur .mur-pdf-a{display:flex;flex-wrap:wrap;gap:8px 12px;margin:12px 0 0;}
#mur .mur-pdf-a .mur-lien-b{font-size:14px;}
/* « Vous êtes » : un select natif (un seul geste), à la taille des champs (16 px : pas de zoom au téléphone) */
#mur .mur-champ select{display:block;width:100%;min-height:48px;padding:11px 14px;font:inherit;font-size:16px;color:var(--paper);
  background:rgba(24,24,24,.6);border:1px solid rgba(255,255,255,.18);border-radius:6px;outline:none;cursor:pointer;}
#mur .mur-champ select:focus{border-color:var(--accent-glow);}
#mur .mur-champ select[aria-invalid="true"]{border-color:#ff9d8a;}
#mur .mur-profil-note{margin:8px 0 0;max-width:62ch;color:var(--paper-dim);}
/* replié sous « + Ajouter un mot sur le projet » : le nom du projet et le projet en quelques mots (facultatifs) */
#mur details.mur-plus{margin:18px 0 0;}
#mur details.mur-plus > summary{display:inline-flex;align-items:center;min-height:44px;cursor:pointer;list-style:none;font-size:15px;line-height:1.4;
  color:var(--paper);text-decoration:underline;text-underline-offset:3px;}
#mur details.mur-plus > summary::-webkit-details-marker{display:none;}
#mur details.mur-plus > summary:focus-visible{outline:2px solid var(--paper);outline-offset:2px;}
#mur details.mur-plus[open] > summary{margin-bottom:12px;}
/* l’interrupteur « Demander aussi le prix de l’autre version » (Sub Zero) : toute la ligne se touche (44 px) */
#mur .mur-autre{margin-top:12px;align-items:center;}
#mur .mur-autre input{appearance:none;-webkit-appearance:none;position:relative;flex:0 0 auto;width:46px;height:26px;margin:0;border-radius:13px;
  background:rgba(255,255,255,.16);border:1px solid rgba(255,255,255,.45);cursor:pointer;transition:background-color .2s ease;}
#mur .mur-autre input::after{content:"";position:absolute;top:2px;left:2px;width:20px;height:20px;border-radius:50%;background:var(--paper);transition:transform .2s ease;}
#mur .mur-autre input:checked{background:var(--accent-glow);border-color:var(--accent-glow);}
#mur .mur-autre input:checked::after{transform:translateX(20px);background:var(--ink);}
#mur .mur-autre input:focus-visible{outline:2px solid var(--paper);outline-offset:2px;}
@media (prefers-reduced-motion:reduce){#mur .mur-autre input, #mur .mur-autre input::after{transition:none;}}
/* après l’envoi : « Télécharger la fiche du produit », « Rouvrir mon mur » (ou « Revenir à l’accueil ») */
#mur .mur-pret-a{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:0;}
@media(max-width:560px){#mur .mur-pret-a .mur-lien-b{display:flex;width:100%;justify-content:center;}}
#mur .mur-pret{margin-top:26px;padding:22px 24px;border:1px solid rgba(255,255,255,.18);border-radius:8px;background:rgba(255,255,255,.03);}
#mur .mur-pret-t{font-size:15.5px;line-height:1.6;color:var(--paper);margin-bottom:16px;max-width:64ch;}
/* (2e tour de vérification) l’autre version demandée, redite sous « C’est noté » */
#mur .mur-pret-t + .mur-pret-v{margin-top:-8px;}
#mur .mur-pret-m{margin:-4px 0 16px;font-size:14px;}
#mur .mur-mailto{color:var(--accent-glow);}
/* (18/10, étape 3) le bloc après l’envoi est la seule place du lien vers la messagerie (plus de barre d’aperçu) : une cible de 44 px, qui se coupe */
#mur .mur-pret-m .mur-mailto{display:inline-flex;align-items:center;min-height:44px;max-width:100%;font-weight:600;text-decoration:underline;
  text-underline-offset:3px;overflow-wrap:anywhere;}
#mur .mur-pret:focus:not(:focus-visible){outline:none;}
/* (18/10, étape 3, 1er tour de vérification) rien de gardé : « Écrire à … » est le bouton PLEIN (la fiche du produit passe en lien) ; l’adresse,
   longue, se coupe dans le bouton */
#mur .mur-pret-m a.mur-cta.mur-mailto{display:inline-flex;align-items:center;justify-content:center;color:var(--ink);text-decoration:none;
  overflow-wrap:anywhere;max-width:100%;}
@media(max-width:560px){#mur .mur-pret-m a.mur-cta.mur-mailto{display:flex;width:100%;}}
/* (1er tour de vérification) le formulaire court de « Télécharger la fiche » (commun.fiche_coordonnees vrai) : une fenêtre posée sur la page */
#mur dialog.mur-fiche-d{padding:0;margin:auto;border:1px solid rgba(255,255,255,.18);border-radius:8px;background:var(--ink);color:var(--paper);
  width:min(560px, calc(100vw - 32px));max-width:calc(100vw - 32px);max-height:calc(100vh - 32px);overflow:auto;}
#mur dialog.mur-fiche-d::backdrop{background:rgba(0,0,0,.72);}
#mur dialog.mur-fiche-d .mur-form{margin:0;border:0;border-radius:0;}
#mur dialog.mur-fiche-d .mur-champs{grid-template-columns:1fr;}
#mur .mur-fiche-d-a{display:flex;flex-wrap:wrap;align-items:center;gap:10px 14px;margin:22px 0 0;}
#mur .mur-fiche-d-a .mur-envoyer{margin-top:0;}
#mur .mur-fiche-d-a .mur-lien-b{min-height:44px;}
/* (20/10, lot C2) « Être rappelé » sans mur composé : la même fenêtre que le formulaire court, son bloc de fin dedans */
#mur dialog.mur-rappel-d .mur-produit-note{margin:6px 0 0;color:var(--paper-dim);}
#mur dialog.mur-rappel-d .mur-pret{margin:0;border:0;border-radius:0;padding:26px 24px;}
#mur dialog.mur-rappel-d .mur-pret .mur-fiche-d-a{margin-top:18px;}
/* (20/10, finitions, tour 2, l’écran) la sortie EN HAUT de la fenêtre : une croix de 44 px, collée en haut quand la fenêtre défile (une rangée de
   hauteur nulle : elle ne pousse rien) ; le titre et la phrase du bloc lui laissent la place */
#mur dialog.mur-rappel-d .mur-rappel-haut{position:sticky;top:0;z-index:3;height:0;display:flex;justify-content:flex-end;}
#mur dialog.mur-rappel-d .mur-rappel-x{flex:none;width:44px;height:44px;margin:6px 6px 0 0;padding:0;border:1px solid rgba(255,255,255,.3);border-radius:50%;
  background:var(--ink);color:var(--paper);font:400 26px/1 system-ui, sans-serif;cursor:pointer;}
/* (21/10, N5 ; le banc et l’écran, tour 3) la fenêtre DÉFILÉE, la croix couvrait la droite du champ visible juste dessous (Téléphone, au
   téléphone) : un doigt qui corrigeait son numéro la touchait, la fenêtre se fermait et se vidait. Défilée (mur-rappel-defile, mur.js), la croix
   est posée sur une BANDE opaque de toute la largeur : sous elle, rien de la fenêtre ne se voit ni ne se touche. Au repos, rien ne change */
#mur dialog.mur-rappel-d .mur-rappel-haut::before{content:"";display:none;position:absolute;left:0;right:0;top:0;height:56px;background:var(--ink);
  border-bottom:1px solid rgba(255,255,255,.18);}
#mur dialog.mur-rappel-d.mur-rappel-defile .mur-rappel-haut::before{display:block;}
#mur dialog.mur-rappel-d .mur-rappel-x{position:relative;z-index:1;}
#mur dialog.mur-rappel-d .mur-rappel-x:hover{border-color:var(--paper);}
#mur dialog.mur-rappel-d .mur-rappel-x:focus-visible{outline:2px solid var(--accent-glow);outline-offset:2px;}
#mur dialog.mur-rappel-d .mur-form > .cfg-label{padding-right:48px;}
#mur dialog.mur-rappel-d .mur-pret .mur-pret-t{padding-right:40px;}
/* (20/10, lot C2, correction 5 du panel) la barre du haut de la fiche ouverte seule (depuis Google, un lien partagé) : le logo, « Être rappelé » ;
   dans le flux (elle part avec la page). (21/10, vérification du tour 1 de la navigation) Sous la barre du site, elle reste collée sous elle
   (outils/barre_site.py, v2 : .lu-site+.mur-haut), comme le fil du lecteur de l’accueil sous son en-tête ; une fiche d’avant (sans la barre du
   site) la garde dans le flux */
.mur-haut{position:relative;z-index:60;background:#050506;border-bottom:1px solid rgba(255,255,255,.12);}
.mur-haut-in{box-sizing:border-box;max-width:1180px;margin:0 auto;padding:6px 16px;min-height:56px;display:flex;align-items:center;justify-content:space-between;gap:12px;}
.mur-haut-logo{display:inline-flex;align-items:center;min-height:44px;color:#fff;text-decoration:none;font-family:'Archivo',sans-serif;font-size:19px;font-weight:700;letter-spacing:.01em;}
.mur-haut-rappel{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border:1px solid rgba(255,255,255,.6);border-radius:999px;background:transparent;
  color:#fff;font-family:'Archivo',sans-serif;font-size:15px;font-weight:600;letter-spacing:.01em;cursor:pointer;white-space:nowrap;}
.mur-haut-rappel:focus-visible{background:#fff;color:#060708;}
@media (hover:hover){.mur-haut-rappel:hover{background:#fff;color:#060708;}}   /* au doigt, le survol resterait collé sous la fenêtre ouverte */
.mur-haut-rappel[hidden]{display:none;}
/* (21/10/2026, N2, N3) sous la barre du site (outils/barre_site.py) : ni logo ni bordure en double ; le premier bouton à gauche (« Partager »),
   les autres à droite ; « Partager » au même contour que « Être rappelé » ; son « Lien copié » se dit (role=status) */
.mur-haut-in > :first-child{margin-right:auto;}
.mur-haut-partager{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border:1px solid rgba(255,255,255,.6);border-radius:999px;background:transparent;
  color:#fff;font-family:'Archivo',sans-serif;font-size:15px;font-weight:600;letter-spacing:.01em;cursor:pointer;white-space:nowrap;}
.mur-haut-partager:focus-visible{background:#fff;color:#060708;}
@media (hover:hover){.mur-haut-partager:hover{background:#fff;color:#060708;}}
.mur-haut-partager[hidden]{display:none;}   /* (21/10) le revendeur connecté ne partage pas la fiche publique (mur.js, majHaut) */
.mur-haut-dit{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0 0 0 0);white-space:nowrap;border:0;}
.mur-haut-champ{box-sizing:border-box;display:block;width:calc(100% - 32px);max-width:1148px;margin:0 auto 10px;padding:10px 12px;border:1px solid rgba(255,255,255,.6);
  border-radius:6px;background:#0b0c0e;color:#fff;font:15px/1.3 'Archivo',sans-serif;}
/* (20/10, lot D5) le revendeur connecté : « Mon espace », le même contour (jamais pour le public, jamais au mode équipe : mur.js, majHaut) */
.mur-haut-espace{display:inline-flex;align-items:center;min-height:44px;padding:0 18px;border:1px solid rgba(255,255,255,.6);border-radius:999px;
  color:#fff;text-decoration:none;font-family:'Archivo',sans-serif;font-size:15px;font-weight:600;letter-spacing:.01em;white-space:nowrap;}
.mur-haut-espace:focus-visible{background:#fff;color:#060708;}
@media (hover:hover){.mur-haut-espace:hover{background:#fff;color:#060708;}}
.mur-haut-espace[hidden]{display:none;}
/* (24/10/2026, H2 ; décisions d’Alex, variante B de la maquette finale) LES COLONNES, à partir de 1 280 px de large, dans le lecteur de l’accueil
   comme sur la fiche ouverte seule (mur.js, poserHaut : .mur-haut-col, le fil .mur-fil ; html.mur-colonnes). À GAUCHE, posés sur la fiche (ni marge
   ni bande), collés au défilement, sur un dégradé noir LÉGER : « ← Retour » et le fil ; à DROITE, collés aussi, sur un dégradé symétrique encore plus
   léger : « Être rappelé » (contour fin) et l’icône du lien. Le texte de la fiche se resserre juste ce qu’il faut (la gouttière : il commence au
   moins à 170 px du bord ; les photos gardent toute la largeur) : rien ne passe sous les colonnes. SOUS 1 280 PX ET AU TÉLÉPHONE, RIEN NE CHANGE :
   la barre de la fiche d’aujourd’hui (la fiche seule), aucune barre dans le lecteur (son fil est celui de l’accueil). Jamais sur papier ni dans
   l’aperçu (le bloc COURT cache .mur-haut), ni la gouttière (html.mur-impr, html.mur-mesure). Le modèle exact : la maquette 3 (colonnes3.js, 24/10). */
.mur-fil{display:none;}
.mur-haut-in > .mur-fil:first-child + *{margin-right:auto;}   /* sous 1 280 px, le fil se tait : le premier bouton reste à gauche, comme avant */
@media (max-width:1279px){
  .mur-haut.mur-haut-vide{display:none;}       /* sans bouton à montrer, la barre se tait, comme avant (majHaut) */
  .mur-haut.mur-haut-lecteur{display:none;}    /* dans le lecteur de l’accueil : aucune barre de la fiche, comme avant */
}
@media (min-width:1280px){
  html.mur-colonnes:not(.mur-impr):not(.mur-mesure) .wrap,html.mur-colonnes:not(.mur-impr):not(.mur-mesure) .head{
    padding-left:max(40px,calc(170px - max(0px,(100% - 1120px) / 2)));padding-right:max(40px,calc(170px - max(0px,(100% - 1120px) / 2)));}
  html.mur-colonnes:not(.mur-impr):not(.mur-mesure) .pull .wrap{padding-left:40px;padding-right:40px;}
  /* la barre : un point fixe (0 × 0) d’où partent les colonnes ; leur milieu, celui de l’écran sous la barre du site (83 px), ou du cadre du lecteur */
  .mur-haut.mur-haut-col{--mur-col-c:calc(50% + 41px);position:fixed !important;top:0 !important;left:0;width:0;height:0;min-height:0;margin:0;padding:0;
    transform:none !important;background:none !important;border:0 !important;z-index:60;overflow:visible;}
  html.lu-cadre .mur-haut.mur-haut-col{--mur-col-c:50%;}
  .mur-haut-col .mur-haut-in{display:contents;}
  .mur-haut-col::before,.mur-haut-col::after{content:"";position:fixed;top:0;bottom:0;z-index:-1;pointer-events:none;}
  .mur-haut-col::before{left:0;width:230px;background:linear-gradient(90deg,rgba(5,5,6,.5) 0,rgba(5,5,6,.31) 32%,rgba(5,5,6,.12) 66%,rgba(5,5,6,0) 100%);}
  .mur-haut-col::after{right:0;width:180px;background:linear-gradient(270deg,rgba(5,5,6,.35) 0,rgba(5,5,6,.217) 32%,rgba(5,5,6,.084) 66%,rgba(5,5,6,0) 100%);}
  /* à gauche : « ← Retour », puis le fil (JetBrains Mono en capitales, points de 6 px, le produit en cours qui brille, jamais un lien) */
  .mur-haut-col .mur-fil{box-sizing:border-box;display:flex;flex-direction:column;align-items:flex-start;position:fixed;left:22px;top:var(--mur-col-c);
    transform:translateY(-50%);width:max-content;max-width:128px;margin:0;padding:0;-webkit-font-smoothing:antialiased;}
  .mur-haut-col .mur-fil *{box-sizing:border-box;}
  .mur-haut-col .mur-fil::before{content:"";position:absolute;z-index:-1;left:-22px;right:-60px;top:-36px;bottom:-36px;pointer-events:none;
    background:radial-gradient(ellipse 62% 58% at 38% 50%,rgba(5,5,6,.5) 0,rgba(5,5,6,.3) 55%,rgba(5,5,6,0) 100%);}   /* un halo : une photo claire */
  .mur-haut-col .mur-fil-retour{display:inline-flex;align-items:center;height:40px;margin:0 0 12px;padding:0 16px;border-radius:999px;
    border:1px solid rgba(255,255,255,.3);background:rgba(10,10,12,.8);color:#fff;font:400 12px/1 "JetBrains Mono",monospace;letter-spacing:.12em;
    text-transform:uppercase;white-space:nowrap;cursor:pointer;}
  .mur-haut-col .mur-fil-retour:hover{border-color:#fff;}
  .mur-haut-col .mur-fil-pas{display:flex;align-items:flex-start;gap:11px;min-height:32px;margin:0;padding:9px 0;border:0;background:none;
    color:rgba(255,255,255,.88);font:400 12px/1.3 "JetBrains Mono",monospace;letter-spacing:.12em;text-transform:uppercase;text-align:left;
    text-decoration:none;text-shadow:0 0 2px rgba(0,0,0,.95),0 1px 10px rgba(0,0,0,.9);cursor:pointer;}
  .mur-haut-col .mur-fil-pas i{flex:none;width:6px;height:6px;margin-top:4.5px;border-radius:50%;background:rgba(255,255,255,.8);box-shadow:0 0 0 1px rgba(0,0,0,.35);}
  .mur-haut-col a.mur-fil-pas:hover,.mur-haut-col button.mur-fil-pas:hover{color:#fff;}
  .mur-haut-col a.mur-fil-pas:hover span,.mur-haut-col button.mur-fil-pas:hover span{text-decoration:underline;text-underline-offset:4px;}
  .mur-haut-col .mur-fil-pas[aria-current]{color:#fff;cursor:default;}
  .mur-haut-col .mur-fil-pas[aria-current] i{background:#fff;box-shadow:0 0 14px 2px rgba(255,255,255,.85);transform:scale(1.55);}
  .mur-haut-col a:focus-visible,.mur-haut-col button:focus-visible{outline:2px solid #f6f2e8;outline-offset:3px;}
  /* à droite : « Être rappelé » écrit (B), puis l’icône du lien (le mot reste le nom du bouton : lu, et dit) */
  .mur-haut-col .mur-haut-rappel{position:fixed;right:22px;top:calc(var(--mur-col-c) - 46px);height:40px;min-height:0;margin:0;padding:0 16px;
    border:1px solid rgba(255,255,255,.6);border-radius:999px;background:rgba(10,10,12,.8);font:600 14px/1 'Archivo',sans-serif;letter-spacing:.01em;}
  .mur-haut-col .mur-haut-partager{--mur-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M10 13a5 5 0 0 0 7.54.54l3-3a5 5 0 0 0-7.07-7.07l-1.72 1.71'/%3E%3Cpath d='M14 11a5 5 0 0 0-7.54-.54l-3 3a5 5 0 0 0 7.07 7.07l1.71-1.71'/%3E%3C/svg%3E");
    position:fixed;right:22px;top:calc(var(--mur-col-c) + 6px);width:40px;height:40px;min-height:0;margin:0;padding:0;font-size:0;line-height:0;
    letter-spacing:0;border:1px solid rgba(255,255,255,.55);border-radius:50%;background:rgba(10,10,12,.8);color:#fff;justify-content:center;}
  .mur-haut-col .mur-haut-partager::before{content:"";display:block;width:18px;height:18px;background:currentColor;
    -webkit-mask:var(--mur-ic) center/contain no-repeat;mask:var(--mur-ic) center/contain no-repeat;}
  .mur-haut-col .mur-haut-dit:not(:empty){position:fixed;right:72px;top:calc(var(--mur-col-c) + 12px);width:auto;height:auto;margin:0;overflow:visible;
    clip:auto;white-space:nowrap;padding:8px 11px;border:0;border-radius:6px;background:#fff;color:#060708;font:600 12.5px/1 'Archivo',sans-serif;
    box-shadow:0 8px 24px rgba(0,0,0,.5);z-index:2;}
  .mur-haut-col .mur-haut-dit:not(:empty)::after{content:"";position:absolute;right:-5px;top:50%;width:10px;height:10px;margin-top:-5px;background:#fff;
    transform:rotate(45deg);}
  .mur-haut-col > .mur-haut-champ{position:fixed;right:22px;top:calc(var(--mur-col-c) + 58px);width:min(360px,40vw);margin:0;z-index:61;}
  .mur-haut-col .mur-haut-espace{display:none;}
  /* (24/10/2026, Alex : « en haut la bande, c’est bien parce que ça reste toujours pratique si on veut s’en aller sans re-scroller ») LA BARRE DU SITE
     RESTE en haut de la fiche ouverte seule, comme celle de l’accueil (mur.js, poserHaut : html.mur-barre-reste ; outils/barre_site.py la range encore en
     descendant, html.lu-range : ici elle ne bouge plus) ; une ancre (« Composer mon écran ») arrive sous elle, ses 83 px comptés */
  html.mur-barre-reste:not(.mur-impr):not(.mur-mesure){scroll-padding-top:83px;}
  html.mur-barre-reste:not(.mur-impr):not(.mur-mesure) .lu-site{transform:none !important;}
}
/* au doigt (une grande tablette en paysage) : l’icône du partage du téléphone (mur.js : la feuille de partage) ; à la souris, le mot au survol */
@media (min-width:1280px) and (pointer:coarse){
  .mur-haut-col .mur-haut-partager{--mur-ic:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='%23000' stroke-width='1.8' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M12 3v12M7 8l5-5 5 5M5 13v6a2 2 0 0 0 2 2h10a2 2 0 0 0 2-2v-6'/%3E%3C/svg%3E");}
}
@media (min-width:1280px) and (hover:hover) and (pointer:fine){
  .mur-haut-col .mur-haut-partager:hover::after{content:"Copier le lien";position:absolute;right:calc(100% + 10px);top:50%;transform:translateY(-50%);
    white-space:nowrap;padding:8px 12px;border-radius:999px;background:rgba(10,10,12,.9);border:1px solid rgba(255,255,255,.3);color:#fff;
    font:600 13.5px/1 'Archivo',sans-serif;letter-spacing:.01em;pointer-events:none;}
  .mur-haut-col:has(.mur-haut-dit:not(:empty)) .mur-haut-partager::after{display:none;}
}
/* les rangées de formats (Block, Swap…) : là où la gouttière resserre le texte (sous 1 380 px), un cran de moins, comme la fiche le fait déjà plus bas */
@media (min-width:1280px) and (max-width:1379px){
  html.mur-colonnes:not(.mur-impr):not(.mur-mesure) .fmt-row{gap:16px;}
  html.mur-colonnes:not(.mur-impr):not(.mur-mesure) .fmt-row .fmt .box{width:calc(var(--w)*.54px);height:calc(var(--h)*.54px);}
}
/* (24/10/2026, demande d’Alex : « un petit truc pour qu’ils sachent que tu descendes ») LE SIGNE POUR DESCENDRE (mur.js, poserDefiler ; sa place :
   Vue.defiler) : « Faites défiler » et une flèche qui respire doucement, en bas du premier écran, sur la fiche seule comme dans le lecteur, à toutes les
   tailles ; parti au premier défilement, il ne revient pas. JetBrains Mono en capitales, comme « scroll ou clic » de l’accueil ; un halo sombre le
   garde lisible sur une photo claire. Un décor : ni le pointeur ni le doigt. Mouvement réduit : ni respiration ni fondu. Jamais sur papier, dans
   l’aperçu ni à la mesure. */
.mur-defiler{position:fixed;left:0;top:0;z-index:58;display:flex;flex-direction:column;align-items:center;gap:7px;box-sizing:border-box;
  margin:0 0 env(safe-area-inset-bottom,0px);padding:0;pointer-events:none;-webkit-user-select:none;user-select:none;white-space:nowrap;
  color:rgba(255,255,255,.8);font:400 11px/1 "JetBrains Mono",ui-monospace,monospace;letter-spacing:.26em;text-transform:uppercase;
  text-shadow:0 0 2px rgba(0,0,0,.9),0 1px 10px rgba(0,0,0,.85);-webkit-font-smoothing:antialiased;
  opacity:0;visibility:hidden;transition:opacity .6s ease,visibility 0s linear .6s;}
.mur-defiler[hidden]{display:none !important;}
.mur-defiler-t{display:block;margin:0;padding:0 0 0 .26em;}   /* l’espacement finit le mot : un cran à gauche, le mot centré à l’œil */
.mur-defiler svg{display:block;width:12px;height:18px;margin:0;overflow:visible;filter:drop-shadow(0 0 3px rgba(0,0,0,.8));
  animation:murDefiler 2.4s ease-in-out infinite;}
.mur-defiler.mur-defiler-vu{opacity:1;visibility:visible;transition:opacity .6s ease;}
.mur-defiler.mur-defiler-part{opacity:0;visibility:hidden;transition:opacity .35s ease,visibility 0s linear .35s;}
@keyframes murDefiler{0%,100%{transform:translateY(0);opacity:.5;}50%{transform:translateY(4px);opacity:1;}}
@media (prefers-reduced-motion:reduce){
  .mur-defiler,.mur-defiler.mur-defiler-vu,.mur-defiler.mur-defiler-part{transition:none;}
  .mur-defiler svg{animation:none;}
}
html.mur-impr .mur-defiler,html.mur-mesure .mur-defiler{display:none !important;}
@media print{.mur-defiler{display:none !important;}}
/* (20/10, lot C3) « 1,95 mm : se regarde à partir d’environ 2 m. », sous les onglets de pitch (du calculateur, de la fiche technique) */
#mur .mur-recul{margin:5px 0 0 !important;font-size:13.5px !important;line-height:1.35;color:var(--paper-dim) !important;max-width:none !important;}
#mur .mur-recul[hidden]{display:none !important;}
#mur .mur-e1 .mur-recul + .cfg-label{margin-top:12px;}   /* resserré : au téléphone, les onglets de l’étape 2 d’Echo restent à l’écran */
/* sous les onglets de la fiche technique (des grilles .md-tabs) : une rangée entière, sous eux */
[data-mur-recul]::after{content:attr(data-mur-recul);display:block;grid-column:1/-1;flex:1 1 100%;width:100%;margin-top:4px;font-size:13.5px;line-height:1.4;
  font-weight:400;letter-spacing:0;text-transform:none;text-align:left;color:var(--paper-dim);}
/* (relectures du 09/10) « Copier la demande », quand le lien vers la messagerie est trop long (dans le bloc et la barre) */
.mur-copier-l{display:flex;flex-wrap:wrap;align-items:center;gap:8px 14px;margin:0 0 16px;}
.mur-copier-note{flex:1 1 260px;font-size:13px;line-height:1.5;color:var(--paper-dim);max-width:60ch;}
.mur-demande-champ{display:block;width:100%;max-width:760px;margin:0 0 16px;padding:10px 12px;font:inherit;font-size:13px;line-height:1.5;
  color:var(--paper);background:var(--ink);border:1px solid var(--line);border-radius:4px;}
a.mur-lien-b{display:inline-flex;align-items:center;text-decoration:none;}

/* ====== le bandeau du mode impression (à l’écran seulement) ====== */
html.mur-impr #mur-barre{display:block;position:relative;z-index:30;background:var(--char);border-bottom:1px solid var(--line);padding:22px 0 18px;}
#mur-barre .wrap{display:flex;flex-wrap:wrap;align-items:center;gap:14px 24px;}
#mur-barre .mur-barre-t{flex:1 1 100%;font-size:18px;font-weight:400;line-height:1.45;color:var(--paper);outline:none;}
/* (v4) ce qui s’est passé à l’envoi, quand rien n’est parti (limite, secours) : la phrase, puis le lien vers
   la messagerie en vrai bouton, sous les yeux */
#mur-barre .mur-barre-r{flex:1 1 100%;margin:-6px 0 0;font-size:15px;line-height:1.6;color:var(--paper);max-width:72ch;}
#mur-barre .mur-barre-m{flex:1 1 100%;margin:-4px 0 4px;}
#mur-barre .mur-barre-m .mur-copier-l{margin:12px 0 0;}
#mur-barre .mur-barre-r:empty, #mur-barre .mur-barre-m:empty{display:none;}
#mur-barre .mur-barre-m .mur-mailto{display:inline-block;max-width:100%;color:var(--paper);font-weight:600;font-size:14.5px;line-height:1.45;
  text-decoration:underline;text-underline-offset:3px;overflow-wrap:anywhere;border-color:var(--paper);}
#mur-barre .mur-barre-l{display:flex;align-items:center;gap:12px;}
#mur-barre .mur-barre-k{font-size:12px;letter-spacing:.08em;text-transform:uppercase;color:var(--paper-faint);white-space:nowrap;}
#mur-barre .md-tabs{margin:0;min-width:200px;}
/* téléphone : « Fond du PDF : » sur sa ligne, au-dessus des deux boutons (relectures du 08/10 : le
   deux-points restait seul sur une 2e ligne à 390 px) */
@media(max-width:560px){
  #mur-barre .mur-barre-l{flex:1 1 100%;flex-wrap:wrap;gap:8px;}
  #mur-barre .mur-barre-k{flex:1 1 100%;}
  #mur-barre .mur-barre-l .md-tabs{flex:1 1 100%;}
}
#mur-barre .md-tab{min-height:44px;padding:10px 16px;}
/* (17/10, étape 1, 2e tour) le libellé des choix de la barre à la taille des 16 autres fiches : Sub Zero écrit ses onglets en 24 px (ses pitchs),
   sa barre en héritait ; au téléphone, la coche de « Simplifiée » sortait de son bouton et se collait à « Complète » */
#mur-barre .md-tab .p{font-size:15.5px;line-height:1.15;}
/* Noir / Blanc : une pastille de la vraie couleur, une coche et un contour sur le choix ; jamais
   d’inversion (« Noir » dans une case blanche se lisait à l’envers) */
#mur-barre .mur-fond .md-tab .p{display:inline-flex;align-items:center;gap:10px;}
/* un échantillon en forme de PETITE FEUILLE (en hauteur) : carré, le blanc passait pour une case à cocher ; rond, pour un
   bouton radio coché sur le choix NON retenu (relectures du 09/10). Seule la coche dit le choix. */
#mur-barre .mur-pastille{display:inline-block;width:13px;height:17px;border-radius:1.5px;border:1px solid #8a8a8a;flex:0 0 auto;}
/* le coin replié, en haut à droite, dit « une page » : pas une case, pas un rond */
#mur-barre .mur-pastille-noir{background:linear-gradient(225deg,#8a8a8a 0 4px,#000 4px);}
#mur-barre .mur-pastille-blanc{background:linear-gradient(225deg,#8a8a8a 0 4px,#fff 4px);}
html #mur-barre .mur-fond .md-tab[aria-checked="true"], html #mur-barre .mur-version .md-tab[aria-checked="true"]{background:transparent !important;border-color:var(--paper) !important;box-shadow:inset 0 0 0 1px var(--paper);}
html #mur-barre .mur-fond .md-tab[aria-checked="true"] .p, html #mur-barre .mur-version .md-tab[aria-checked="true"] .p{color:var(--paper) !important;font-weight:600;}
#mur-barre .mur-fond .md-tab[aria-checked="true"] .p::after, #mur-barre .mur-version .md-tab[aria-checked="true"] .p::after{content:"\2713";margin-left:8px;}
/* (v4) « Version : Simplifiée (3 pages) / Complète (toute la fiche) », du même style que le fond : le nom, puis
   ce qu’il contient en petit, en clair (ni capitales ni gris pâle) */
#mur-barre .mur-version .md-tab{padding:8px 16px;}
#mur-barre .mur-version .md-tab .d{display:block;margin-top:2px;font-size:12.5px;letter-spacing:.01em;text-transform:none;color:var(--paper-dim) !important;}
#mur-barre .mur-aide{flex:1 1 100%;margin-top:0;}
/* (relectures du 09/10) la version choisie, dite en clair, juste sous les choix */
#mur-barre .mur-barre-vd{flex:1 1 100%;margin:-4px 0 0;font-size:14px;line-height:1.55;color:var(--paper);max-width:72ch;}
#mur-barre .mur-barre-vd:empty{display:none;}
#mur-barre .mur-barre-vd{border-radius:4px;}
#mur-barre .mur-barre-a{flex:1 1 100%;display:flex;flex-wrap:wrap;gap:8px 18px;}
.mur-lien-b{appearance:none;-webkit-appearance:none;background:transparent;border:1px solid rgba(255,255,255,.18);border-radius:4px;color:var(--paper);
  font:inherit;font-size:13.5px;padding:10px 16px;min-height:44px;cursor:pointer;}
@media (hover:hover){.mur-lien-b:hover{border-color:rgba(255,255,255,.4);}}
/* (deuxième relecture du 09/10) au téléphone, la barre laissait 240 px à la fiche sur 812 (« là tu la vois ») : plus serrée,
   chaque libellé à gauche de ses deux choix, les liens sur une ligne (« Copier le lien », sans « de ce mur ») */
@media(max-width:560px){
  html.mur-impr #mur-barre{padding:12px 0 10px;}
  #mur-barre .wrap{gap:10px 12px;}
  #mur-barre .mur-barre-t{font-size:16px;line-height:1.4;}
  #mur-barre .mur-barre-r{font-size:14px;line-height:1.5;margin:-4px 0 0;}
  #mur-barre .mur-barre-l{flex-wrap:nowrap;gap:10px;}
  #mur-barre .mur-barre-k{flex:0 0 64px;white-space:normal;font-size:12px;line-height:1.3;letter-spacing:.06em;}
  #mur-barre .mur-barre-l .md-tabs{flex:1 1 auto;min-width:0;}
  #mur-barre .md-tab{padding:8px 10px;}
  #mur-barre .mur-version .md-tab{padding:6px 10px;}
  #mur-barre .mur-version .md-tab .d{font-size:12px;margin-top:0;}
  #mur-barre .mur-fond .md-tab .p{gap:8px;}
  #mur-barre .mur-fond .md-tab[aria-checked="true"] .p::after, #mur-barre .mur-version .md-tab[aria-checked="true"] .p::after{margin-left:6px;}
  #mur-barre .mur-barre-vd{font-size:13.5px;line-height:1.5;margin:0;}
  #mur-barre .mur-aide{font-size:12.5px;line-height:1.45;}
  #mur-barre .mur-barre-a{gap:8px;}
  #mur-barre .mur-barre-a .mur-lien-b{font-size:13px;padding:8px 11px;}
  #mur-barre .mur-copier .mur-tel-non{display:none;}
}
#mur-barre .mur-copie-champ{display:none;flex:1 1 100%;font:inherit;font-size:16px;padding:10px 12px;color:var(--paper);background:var(--ink);border:1px solid var(--line);border-radius:4px;}
html.mur-impr.mur-blanc #mur-barre{background:#f0f0f0;border-color:#d0d0d0;}
html.mur-blanc .mur-lien-b{border-color:#bbb;}

/* ====== le pied de la fiche courte : UNE ligne discrète, à la fin du document (dernière page) ====== */
/* (20/10, lot C5) gris à 5,5 : 1 (avant : 4,7 : 1 tout juste) : les coordonnées publiées y ont des apostrophes étroites collées à leurs lettres
   (« d’Effiat »), lues sous 4,5 : 1 contre le fond rendu autour d’elles (analyse_pdf) ; toujours discret */
#mur-pied .wrap{padding-top:4mm;padding-bottom:0;font-size:10px;line-height:1.5;color:#858585;}
html.mur-blanc #mur-pied .wrap{color:#686868;}
/* (20/10, finitions, tour 1 de vérification, l’écran) chaque partie des coordonnées reste sur sa ligne (« 91160 Longjumeau » n’est plus coupé) */
#mur-pied .mur-co{white-space:nowrap;}

/* ====== (09/10) le PDF parle du projet, au pitch choisi (mur.js, auPitch) : dans l’aperçu et sur papier, les deux
   versions ; la page de tous les jours ne change pas (la porte, Ctrl+P sans formulaire, non plus) ====== */
/* (la classe répétée : plus forte que les mises en page de la complète, qui posent display sur les cartes) */
html.mur-impr .mur-hors-pitch.mur-hors-pitch.mur-hors-pitch.mur-hors-pitch.mur-hors-pitch { display:none !important; }
html:not(.mur-impr) .mur-au-pitch { display:none !important; }
/* (relectures du 13/10) Verso : « par face » après chaque watt de la fiche, sur papier et dans l'aperçu seulement (mur.js, parFace) */
html:not(.mur-impr) .mur-par-face { display:none !important; }

/* ====== la fiche courte : écrite UNE fois, émise pour l’impression et pour l’aperçu ====== */
/* fiche courte : impression (Ctrl+P compris) */
@media print{
  html, html body { -webkit-print-color-adjust:exact !important; print-color-adjust:exact !important; }
  html .reveal { opacity:1 !important; transform:none !important; transition:none !important; }
  html .pillar-grid .pillar, html .more-grid .feat { opacity:1 !important; transform:none !important; animation:none !important; }
  html .flux, html .amb, html .aurora, html .hb, html .hero-bg, html .hero .grad, html .hero .frost,
  html .hero-shot, html .hero-halo, html video, html iframe, html .mx-hint, html .mur-vers, html .mur-fiche-vers, html .mur-fiche-choix { display:none !important; }
  /* (20/10, lot C) la barre du haut de la fiche ouverte seule (C2) et le recul sous les onglets de pitch (C3) : l’écran seulement */
  html .mur-haut, html .mur-recul { display:none !important; }
  /* (26/10/2026, lot 2610) le bouton de la fiche technique et la ligne « Votre mur passe en … » : l’écran seulement */
  html .mur-fiche-bas, html .mur-passe { display:none !important; }
  html [data-mur-recul]::after { content:none !important; display:none !important; }
  html .hero { min-height:0 !important; height:auto !important; display:block !important; overflow:visible !important; padding:6mm 0 2mm !important; }
  /* le haut de fiche : UNE photo du produit (celle que la page affiche déjà), sous le texte par défaut ;
     à droite du texte sur papier et sur écran large (voir « mise en page A4 » après COURT-FIN) */
  html .hero .wrap { padding-bottom:0 !important; }
  html .hero .mur-photo { display:block !important; width:auto !important; height:auto !important;
    max-width:100% !important; max-height:62mm !important; object-fit:contain !important; margin-top:6mm !important; }
  html .hero h1 { font-size:40px !important; }
  html .hero p { margin-top:12px !important; }
  /* (lot 5) le chapô du haut de fiche est en vw dans les fiches (clamp(16px,1.9vw,21px)) : 16 px sur papier, 16 px aussi dans
     l’aperçu et dans la mesure de la page 1 (sinon elle se trompait de 27 mm à 1 366 px de large) */
  html .hero p { font-size:16px !important; }
  /* (19/10, étape 5a) le PDF d’un revendeur : le nom de sa configuration en tête de la page 1, au-dessus du titre du produit (mur.js, nomConfigEnTete) */
  html .hero .mur-config-nom { display:block !important; margin:0 0 4mm !important; font-family:'Archivo',sans-serif; font-size:20px !important; font-weight:600;
    line-height:1.3 !important; letter-spacing:.01em; color:var(--paper) !important; }
  /* la simplifiée : le haut de fiche, le mur, les chiffres clés et la fiche technique ; la complète : toutes les sections */
  html:not(.mur-complet) body > section { display:none !important; }
  html:not(.mur-complet) body > section.pillars, html:not(.mur-complet) body > section#mur, html:not(.mur-complet) body > section#caracteristiques { display:block !important; }
  html .sec, html .sec--tight { padding:6mm 0 !important; }
  html #mur .intro, html #mur h2, html #caracteristiques .intro { display:none !important; }
  /* la fiche technique : ni son titre d’écran ni ses onglets (une case seule qui ressemblait à un bouton) ;
     le pitch est dit en clair par .mur-fiche-pitch (revue du 08/10) */
  /* (lot 5) .mur-onglets-fiche : les onglets de pitch de la fiche technique quand elle les nomme autrement (Sub Zero : #md-tabs) */
  html:not(.mur-complet) #caracteristiques h2, html #spec-tabs, html .mur-onglets-fiche, html #caracteristiques .wrap > .cfg-label { display:none !important; }
  /* le tableau du pitch et les chiffres clés : resserrés ; leurs colonnes A4 (2 et 3) sont posées après
     COURT-FIN, sur papier et sur écran large seulement (sur téléphone l’aperçu les écrasait, vérif. du 08/10) */
  html .md-panel { margin-top:4mm !important; }
  html .md-row { padding:6px 0 !important; }
  html .pillar-grid { gap:8px !important; }
  html .pillar { padding:12px 14px 13px !important; }
  html .pillar .v { font-size:20px !important; margin:8px 0 2px !important; }
  html #mur-pied { break-inside:avoid !important; }
  /* le mur ouvre la page 2 : son titre et son résumé ne restent jamais seuls en bas de la page 1 */
  html body > section#mur { break-before:page !important; }
  /* (v2) le calculateur en étapes redevient un seul bloc : le titre « Votre mur » de la section, le résumé,
     le plan et les chiffres. Ni étapes, ni onglets, ni invite, ni bouton, ni formulaire. */
  html #mur .mur-etapes { display:block !important; }
  html #mur .mur-droite { position:static !important; }
  html #mur .mur-e3 { margin:0 !important; }
  html #mur .mur-e1, html #mur .mur-gauche, html #mur .mur-etape, html #mur .mur-invite, html #mur .mur-statut, html #mur .mur-origine,
  html .mur-pdf, html .mur-zone, html #mur form { display:none !important; }
  /* Fold-Up : sa section garde à l’écran 0 en haut et 90 px en bas ; sur papier, le rythme des autres fiches */
  html #mur.mur-sec--suite { padding:6mm 0 !important; }
  /* (lot 5) le mur EN GRAND : toute la largeur utile (178 mm), la hauteur que mur.js mesure (ce qui reste de la page 1) */
  html .mur-dessin { display:block !important; width:100% !important; max-width:178mm !important; height:auto !important; max-height:none !important; margin:3mm 0 5mm !important; }
  html .mur-dessin text.mur-cote { font-size:11px !important; letter-spacing:.03em !important; }
  html #mur .mur-resume { font-size:16px !important; line-height:1.5 !important; }
  html #mur-copie .sim-strip { display:none !important; }
  html .mur-fiche-pitch { display:block !important; margin:2mm 0 0 !important; font-size:15px !important; color:var(--paper) !important; }
  html.mur-sans-synchro #md-panel, html.mur-sans-synchro .cm-head, html.mur-sans-synchro #cm-grid { display:none !important; }
  /* (lot 5, « option B » du 12/10) un mur à plusieurs formats : une ligne par format utilisé au-dessus du tableau (mur.js, formatsFiche),
     d’un seul tenant, écrite à gauche ; les lignes du tableau qui changent d’un format à l’autre se taisent (une colonne vidée aussi) */
  html .mur-fiche-formats { display:block !important; margin:4mm 0 0 !important; }
  html .mur-fiche-formats .md-row { justify-content:flex-start !important; }
  html .mur-fiche-formats .md-row .v { text-align:left !important; color:var(--paper) !important; }
  html .md-row.mur-hors-format, html .md-col.mur-hors-format { display:none !important; }
  /* (relectures du 13/10) une colonne du tableau vidée (Block : « La dalle ») : celle qui reste prend toute la largeur, comme les lignes par
     format au-dessus d'elle (elle restait en demi-largeur, la moitié droite de la page vide) */
  html .md-panel:has(> .md-col.mur-hors-format) > .md-col { grid-column:1 / -1 !important; }
  html.mur-sans-synchro .mur-fiche-formats { display:none !important; }
  /* (17/10, étape 1 du plan validé par Alex) LA FICHE SEULE (« Télécharger la fiche », mur.js : entrerFiche ; html.mur-fiche) : ni le mur, ni ses
     tuiles, ni son dessin, ni le bloc « Dissipation thermique » (mur.js ne le pose pas) : la section du calculateur se tait entière ; la page 1 est
     le haut de fiche puis les chiffres clés au pitch choisi. (La classe répétée : plus forte que « html:not(.mur-complet) … section#mur », plus haut.) */
  html.mur-fiche.mur-fiche body > section#mur { display:none !important; }
  /* Swap, Swap-Ec, Verso, Block : « Les formats de dalle au pitch … » (mur.js, formatsTous), tous les formats, une ligne chacun, juste au-dessus
     du tableau (dont les lignes propres à un format se taisent, .mur-hors-format) ; d’un seul tenant ; les valeurs telles que la fiche les écrit,
     leur note dessous (son <i>), en petit */
  html .mur-formats-tous { display:block !important; margin:4mm 0 0 !important; break-inside:avoid !important; }
  /* ce qui l’annonce (« La fiche technique », la ligne du pitch, la note du palier de Block) part avec lui : jamais seul en bas de la page d’avant */
  html.mur-fiche .wrap > :has(~ .mur-formats-tous) { break-after:avoid !important; }
  html .mur-formats-tous h5 { margin-bottom:0 !important; }
  html .mur-formats-tous table { width:100% !important; border-collapse:collapse !important; margin:1.5mm 0 0 !important; font-size:11.5px !important; line-height:1.32 !important; }
  html .mur-formats-tous th, html .mur-formats-tous td { padding:1.2mm 2mm 1.2mm 0 !important; border-bottom:1px solid rgba(128,128,128,.4) !important; text-align:left !important;
    vertical-align:top !important; font-weight:inherit !important; color:var(--paper) !important; background:none !important; font-variant-numeric:tabular-nums !important; }
  html .mur-formats-tous thead th { font-size:10.5px !important; line-height:1.3 !important; letter-spacing:.04em !important; color:var(--paper-dim) !important; }
  html .mur-formats-tous tr { break-inside:avoid !important; }
  html .mur-formats-tous i { font-style:normal !important; display:block !important; font-size:10px !important; color:var(--paper-dim) !important; }
  html .mur-formats-tous b { font-weight:inherit !important; }
  /* la simplifiée de la fiche seule tient en deux pages, trois au plus : sans le mur, le haut de fiche et les chiffres clés ouvrent la page 1, la
     fiche technique les suit ; ses rangées un peu resserrées (comme celles de la porte), pour que la fin de la fiche (le pied, la mention) ne parte
     jamais seule sur une page de plus (Verso et Fold-Up : 14 % d’une troisième page) */
  html:not(.mur-complet).mur-fiche .cm { padding:3px 0 !important; }
  html:not(.mur-complet).mur-fiche .md-row { padding:4px 0 !important; }
  html:not(.mur-complet).mur-fiche .cm-head { margin-top:4mm !important; }
  html:not(.mur-complet).mur-fiche footer .wrap { padding-top:3mm !important; padding-bottom:0 !important; }
  /* une note reste avec le bloc qu’elle commente (Sub Zero en 0,78 : la note des consommations ouvrait seule la page 2, sous le tableau resté en page 1) */
  html:not(.mur-complet).mur-fiche .mx-note, html:not(.mur-complet).mur-fiche .foot-note { break-before:avoid !important; }
  /* (14/10, demande d’Alex) le bloc « Dissipation thermique » (mur.js, blocChaleur), dans la fiche technique, avant les caractéristiques
     communes : sur papier et dans l’aperçu seulement (masqué à l’écran plus haut), d’un seul tenant, dans le ton des tuiles ; lisible en noir
     (--paper, --paper-dim relevé à #cdc8bf plus haut) comme en blanc (html.mur-blanc : --paper #111, --paper-dim #3a3a3a) ; le filet gris moyen
     passe sur les deux fonds. Il hérite de la police et de la graisse de la fiche (relecture du banc complet : une police ou une graisse de plus
     coûte ses glyphes dans le PDF, 49 Kio) ; seul le « ≈ », absent de la police du site, vient d’Arial (8 Kio) */
  html .mur-chaleur { display:block !important; break-inside:avoid !important; margin:6mm 0 0 !important; padding:4mm 5mm 4.5mm !important; border:1px solid rgba(128,128,128,.5) !important; border-radius:6px !important; }
  /* (relectures du 14/10) la tuile « Chaleur dégagée », élargie (bloc A4), sur un fond UNI dans le ton du dégradé des autres tuiles (de #0d121a à
     #070910 sur l’encre) : le dégradé à demi transparent d’une tuile de 2 107 px, Chrome le matricialise (105 Kio par PDF) ; sur fond blanc, les
     tuiles sont déjà unies (#f4f4f4, plus bas) */
  html:not(.mur-blanc) #mur .mur-tuiles .rc:last-child:nth-child(3n+1), html:not(.mur-blanc) #mur .mur-tuiles .rc:last-child:nth-child(3n+2) { background:#0a0e15 !important; }
  html .mur-chaleur h5 { margin:0 0 2.5mm !important; padding:0 !important; border:0 !important; font-size:11px !important; letter-spacing:.16em !important; text-transform:uppercase !important; font-weight:inherit !important; color:var(--paper-dim) !important; }
  html .mur-chaleur p { margin:0 !important; max-width:none !important; font-size:12.5px !important; line-height:1.55 !important; color:var(--paper) !important; }
  html .mur-chaleur p + p { margin-top:2mm !important; }
  html .mur-chaleur .mur-chaleur-mur { font-variant-numeric:tabular-nums !important; }
  html .mur-chaleur table { width:100% !important; border-collapse:collapse !important; margin:3mm 0 !important; font-size:12.5px !important; line-height:1.4 !important; }
  html .mur-chaleur th, html .mur-chaleur td { padding:1.6mm 2.5mm !important; border-bottom:1px solid rgba(128,128,128,.4) !important; text-align:left !important; vertical-align:top !important; font-weight:inherit !important; color:var(--paper) !important; background:none !important; }
  html .mur-chaleur thead th { font-size:11px !important; letter-spacing:.14em !important; text-transform:uppercase !important; color:var(--paper-dim) !important; }
  html .mur-chaleur tbody th { padding-left:0 !important; }
  html .mur-chaleur td { font-variant-numeric:tabular-nums !important; white-space:nowrap !important; }
  html .mur-chaleur .mur-chaleur-note { font-size:11px !important; line-height:1.5 !important; color:var(--paper-dim) !important; }
  /* (15/10, lot 3) LA SIMPLIFIÉE GARDE SES TROIS PAGES avec le bloc de chaque fiche : la fin de la fiche technique, le bloc, les caractéristiques
     communes (jusqu’à dix-sept rangées chez Fold-Up) et le pied ne tenaient plus sur la troisième (Cinetix, Element, Fold-Up, Helio, Vellum XR,
     Verso sortaient en quatre pages). Le bloc resserré, et les rangées des caractéristiques communes resserrées comme celles de la porte */
  html:not(.mur-complet) .mur-chaleur { margin:4mm 0 0 !important; padding:3mm 4mm 3.2mm !important; }
  html:not(.mur-complet) .mur-chaleur h5 { margin:0 0 1.6mm !important; }
  html:not(.mur-complet) .mur-chaleur p { font-size:11.5px !important; line-height:1.42 !important; }
  html:not(.mur-complet) .mur-chaleur p + p { margin-top:1.4mm !important; }
  html:not(.mur-complet) .mur-chaleur table { margin:1.8mm 0 !important; font-size:11.5px !important; line-height:1.3 !important; }
  html:not(.mur-complet) .mur-chaleur th, html:not(.mur-complet) .mur-chaleur td { padding-top:1mm !important; padding-bottom:1mm !important; }
  html:not(.mur-complet) .mur-chaleur .mur-chaleur-note { font-size:10.5px !important; line-height:1.4 !important; }
  html:not(.mur-complet) .cm { padding:5px 0 !important; }
  html:not(.mur-complet) .cm-head { margin-top:5mm !important; }
  html .mur-impr-seul, html .mur-resume, html #mur-pied { display:block !important; }
  /* (vérification du 16/10, tour 3) sur papier, les notes du calculateur sous ses tuiles (Invisia : la phrase de la hauteur hors de la plage et celle de l’axe ; Curva :
     ses remarques) sur toute la largeur de la page, et non sur 74 caractères, en 11 px comme les notes du bloc chaleur : deux lignes au lieu de trois, le dessin
     de la page 1 garde ses 45 mm (Invisia 2,5 à 1,80 m : 40,9 mm) */
  html #mur .mur-note-axe, html #mur .mur-notes-v .mx-note { max-width:none !important; margin-top:3mm !important; font-size:11px !important; line-height:1.45 !important; }
  /* fond noir : les gris les plus pâles des fiches (#6e6e6e, #6f6960, #666d79 sur #060708 : 3,7 à 3,8 : 1)
     passent au-dessus de 7 : 1 sur papier ; l’écran du site ne change pas (revue du 08/10) */
  html:not(.mur-blanc) { --paper-faint:#a8a29a !important; --paper-dim:#cdc8bf !important; }
  html .pillar-grid, html .rc-grid, html .rc, html .md-panel, html .md-col, html .cm-grid,
  html .mur-dessin, html .mur-resume, html #mur-copie, html table { break-inside:avoid !important; }
  html .label, html h2, html .cfg-label, html .cm-head { break-after:avoid !important; }
  /* (v2) les coupures : aucun titre seul en bas de page, aucune ligne de tableau coupée, pas de ligne veuve */
  html .mur-fiche-pitch, html .md-col h5 { break-after:avoid !important; }
  html .md-row, html .cm { break-inside:avoid !important; }
  /* (deuxième relecture du 09/10) un tableau réduit à la colonne du pitch : l’en-tête de rangée garde son fond d’écran (collant
     au défilement), la valeur non ; la rangée était en deux tons. Une rangée ordinaire est d’un seul ton, sans fond */
  html table.mx tbody tr:not(.key) th.rowh { background:transparent !important; }
  html p { orphans:3; widows:3; }
  html * { text-shadow:none !important; box-shadow:none !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
  /* ---- (v4, 09/10) la fiche COMPLÈTE : toute la fiche, le mur du client en page 1 comme la simplifiée, propre sur
     papier : rien qui bouge (chaque animation à son état de repos, visible), aucune vidéo, aucun réglage d’écran.
     Les onglets d’une section (pitch, sens, état) disparaissent : mur.js les met au pitch choisi et écrit à leur
     place, en clair, l’onglet ouvert (.mur-onglet-dit) ; les points sur les photos deviennent les numéros de leur
     liste. Et des coupures propres : aucun bloc coupé en deux, aucun titre seul en bas de page. ---- */
  html.mur-complet *, html.mur-complet *::before, html.mur-complet *::after { animation:none !important; transition:none !important; }
  html.mur-complet img { filter:none !important; }
  html.mur-complet .stage-lit::before { display:none !important; }   /* le halo flou derrière les photos : une image de plus, sans contenu */
  html.mur-complet .sim, html.mur-complet body > section form, html.mur-complet body > section:not(#mur) [role="tablist"] { display:none !important; }
  html.mur-complet .mur-onglet-dit { display:block !important; margin:2mm 0 3mm !important; font-size:15px !important; line-height:1.5 !important; color:var(--paper) !important; }
  html.mur-complet .mur-onglet-dit:empty, html.mur-complet .mur-ecran-seul { display:none !important; }
  /* les points sur les photos : un numéro, celui de la liste à côté */
  html.mur-complet .hs { cursor:default !important; width:24px !important; height:24px !important; border-radius:50% !important; background:var(--ink) !important;
    border:1.5px solid var(--paper) !important; color:var(--paper) !important; }
  html.mur-complet .hs i, html.mur-complet .hs b { display:none !important; }
  html.mur-complet .hs::after { content:attr(data-mur-n); position:absolute; left:0; right:0; top:50%; transform:translateY(-50%); text-align:center;
    font:600 10.5px/1 'Archivo',sans-serif; letter-spacing:0; color:var(--paper); }
  html.mur-complet .hs:not([data-mur-n]) { display:none !important; }
  /* coupures : un bloc reste entier, un titre reste avec ce qu’il annonce */
  html.mur-complet .cmp-card, html.mur-complet .feat, html.mur-complet .cob-point, html.mur-complet figure, html.mur-complet .origin-card, html.mur-complet .demo-pt, html.mur-complet .bar-row,
  html.mur-complet .hs-item, html.mur-complet .hs-stage, html.mur-complet tr, html.mur-complet img, html.mur-complet svg, html.mur-complet .draw-stage, html.mur-complet .fold-stage, html.mur-complet .mx-note,
  html.mur-complet .mur-onglet-dit { break-inside:avoid !important; }
  /* (17/10, étape 1, 3e tour) une dalle de « Les formats » (Swap, Swap-Ec, Verso, Block, Cinetix, Echo) : sa photo est posée en absolu dans un cadre vide
     (.frame), que Chrome coupait au saut de page comme un bloc sans contenu : le haut de la dalle en bas d’une page, le reste en haut de la suivante (Swap,
     complète de la fiche seule). La dalle, sa cote et sa surface restent ensemble ; et le cadre garde sa photo (overflow) : repoussée entière à la page
     suivante, elle laissait encore un liseré de 0,2 pt en bas de la page d’avant (la même image, posée sur les deux pages : analyse_pdf.py, images_coupees) */
  html.mur-complet .fmt, html.mur-complet .fmt .frame { break-inside:avoid !important; }
  html.mur-complet .fmt .frame { overflow:hidden !important; }
  /* (deuxième relecture du 09/10) une photo à points et sa liste : un seul bloc (la liste coupée laissait « 06 » seul en haut de page) */
  html.mur-complet .hotspots { break-inside:avoid !important; }
  /* (jamais sur un h4 : le dernier d’une liste passe son « avoid » à la fin de la section, et tout le bloc d’avant
     partait à la page suivante, mesuré sur Fold-Up le 09/10) */
  html.mur-complet .mur-onglet-dit { break-after:avoid !important; }
  /* la dernière page n’est jamais le pied seul : (relectures du 09/10) la fin de la fiche (« Quel que soit le pitch »,
     ses notes, le pied du site et la mention) est UN bloc insécable, .mur-queue, que mur.js forme le temps de la
     complète (queueFiche) ; le tableau ne se coupe plus, et la mention ne part plus seule sur une page de plus */
  html.mur-complet .md-panel { break-inside:auto !important; }
  html.mur-complet .mur-queue { break-inside:avoid !important; }
  html.mur-complet .mur-queue footer .wrap, html.mur-complet .mur-queue #mur-pied .wrap { padding-left:0 !important; padding-right:0 !important; }
  /* (relectures du 09/10) le graphique de consommation (ses barres) et les cartes chiffrées de « Dehors » restent
     entiers ; le début d'une section (surtitre, titre, chapô) ne reste jamais seul en bas de page : le chapô ne se
     coupe pas et part avec ce qui le suit ; une note de fin de bloc ne part pas seule en haut de la page suivante */
  html.mur-complet .bars, html.mur-complet .stat { break-inside:avoid !important; }
  html.mur-complet .intro { break-inside:avoid !important; break-after:avoid !important; }
  html.mur-complet .mx-note, html.mur-complet .foot-note { break-before:avoid !important; }
}
/* fiche courte : apercu a l'ecran (mode impression) */
@media screen{
  html.mur-impr, html.mur-impr body { -webkit-print-color-adjust:exact !important; print-color-adjust:exact !important; }
  html.mur-impr .reveal { opacity:1 !important; transform:none !important; transition:none !important; }
  html.mur-impr .pillar-grid .pillar, html.mur-impr .more-grid .feat { opacity:1 !important; transform:none !important; animation:none !important; }
  html.mur-impr .flux, html.mur-impr .amb, html.mur-impr .aurora, html.mur-impr .hb, html.mur-impr .hero-bg, html.mur-impr .hero .grad, html.mur-impr .hero .frost,
  html.mur-impr .hero-shot, html.mur-impr .hero-halo, html.mur-impr video, html.mur-impr iframe, html.mur-impr .mx-hint, html.mur-impr .mur-vers, html.mur-impr .mur-fiche-vers, html.mur-impr .mur-fiche-choix { display:none !important; }
  /* (20/10, lot C) la barre du haut de la fiche ouverte seule (C2) et le recul sous les onglets de pitch (C3) : l’écran seulement */
  html.mur-impr .mur-haut, html.mur-impr .mur-recul { display:none !important; }
  /* (26/10/2026, lot 2610) le bouton de la fiche technique et la ligne « Votre mur passe en … » : l’écran seulement */
  html.mur-impr .mur-fiche-bas, html.mur-impr .mur-passe { display:none !important; }
  html.mur-impr [data-mur-recul]::after { content:none !important; display:none !important; }
  html.mur-impr .hero { min-height:0 !important; height:auto !important; display:block !important; overflow:visible !important; padding:6mm 0 2mm !important; }
  /* le haut de fiche : UNE photo du produit (celle que la page affiche déjà), sous le texte par défaut ;
     à droite du texte sur papier et sur écran large (voir « mise en page A4 » après COURT-FIN) */
  html.mur-impr .hero .wrap { padding-bottom:0 !important; }
  html.mur-impr .hero .mur-photo { display:block !important; width:auto !important; height:auto !important;
    max-width:100% !important; max-height:62mm !important; object-fit:contain !important; margin-top:6mm !important; }
  html.mur-impr .hero h1 { font-size:40px !important; }
  html.mur-impr .hero p { margin-top:12px !important; }
  /* (lot 5) le chapô du haut de fiche est en vw dans les fiches (clamp(16px,1.9vw,21px)) : 16 px sur papier, 16 px aussi dans
     l’aperçu et dans la mesure de la page 1 (sinon elle se trompait de 27 mm à 1 366 px de large) */
  html.mur-impr .hero p { font-size:16px !important; }
  /* (19/10, étape 5a) le PDF d’un revendeur : le nom de sa configuration en tête de la page 1, au-dessus du titre du produit (mur.js, nomConfigEnTete) */
  html.mur-impr .hero .mur-config-nom { display:block !important; margin:0 0 4mm !important; font-family:'Archivo',sans-serif; font-size:20px !important; font-weight:600;
    line-height:1.3 !important; letter-spacing:.01em; color:var(--paper) !important; }
  /* la simplifiée : le haut de fiche, le mur, les chiffres clés et la fiche technique ; la complète : toutes les sections */
  html.mur-impr:not(.mur-complet) body > section { display:none !important; }
  html.mur-impr:not(.mur-complet) body > section.pillars, html.mur-impr:not(.mur-complet) body > section#mur, html.mur-impr:not(.mur-complet) body > section#caracteristiques { display:block !important; }
  html.mur-impr .sec, html.mur-impr .sec--tight { padding:6mm 0 !important; }
  html.mur-impr #mur .intro, html.mur-impr #mur h2, html.mur-impr #caracteristiques .intro { display:none !important; }
  /* la fiche technique : ni son titre d’écran ni ses onglets (une case seule qui ressemblait à un bouton) ;
     le pitch est dit en clair par .mur-fiche-pitch (revue du 08/10) */
  /* (lot 5) .mur-onglets-fiche : les onglets de pitch de la fiche technique quand elle les nomme autrement (Sub Zero : #md-tabs) */
  html.mur-impr:not(.mur-complet) #caracteristiques h2, html.mur-impr #spec-tabs, html.mur-impr .mur-onglets-fiche, html.mur-impr #caracteristiques .wrap > .cfg-label { display:none !important; }
  /* le tableau du pitch et les chiffres clés : resserrés ; leurs colonnes A4 (2 et 3) sont posées après
     COURT-FIN, sur papier et sur écran large seulement (sur téléphone l’aperçu les écrasait, vérif. du 08/10) */
  html.mur-impr .md-panel { margin-top:4mm !important; }
  html.mur-impr .md-row { padding:6px 0 !important; }
  html.mur-impr .pillar-grid { gap:8px !important; }
  html.mur-impr .pillar { padding:12px 14px 13px !important; }
  html.mur-impr .pillar .v { font-size:20px !important; margin:8px 0 2px !important; }
  html.mur-impr #mur-pied { break-inside:avoid !important; }
  /* le mur ouvre la page 2 : son titre et son résumé ne restent jamais seuls en bas de la page 1 */
  html.mur-impr body > section#mur { break-before:page !important; }
  /* (v2) le calculateur en étapes redevient un seul bloc : le titre « Votre mur » de la section, le résumé,
     le plan et les chiffres. Ni étapes, ni onglets, ni invite, ni bouton, ni formulaire. */
  html.mur-impr #mur .mur-etapes { display:block !important; }
  html.mur-impr #mur .mur-droite { position:static !important; }
  html.mur-impr #mur .mur-e3 { margin:0 !important; }
  html.mur-impr #mur .mur-e1, html.mur-impr #mur .mur-gauche, html.mur-impr #mur .mur-etape, html.mur-impr #mur .mur-invite, html.mur-impr #mur .mur-statut, html.mur-impr #mur .mur-origine,
  html.mur-impr .mur-pdf, html.mur-impr .mur-zone, html.mur-impr #mur form { display:none !important; }
  /* Fold-Up : sa section garde à l’écran 0 en haut et 90 px en bas ; sur papier, le rythme des autres fiches */
  html.mur-impr #mur.mur-sec--suite { padding:6mm 0 !important; }
  /* (lot 5) le mur EN GRAND : toute la largeur utile (178 mm), la hauteur que mur.js mesure (ce qui reste de la page 1) */
  html.mur-impr .mur-dessin { display:block !important; width:100% !important; max-width:178mm !important; height:auto !important; max-height:none !important; margin:3mm 0 5mm !important; }
  html.mur-impr .mur-dessin text.mur-cote { font-size:11px !important; letter-spacing:.03em !important; }
  html.mur-impr #mur .mur-resume { font-size:16px !important; line-height:1.5 !important; }
  html.mur-impr #mur-copie .sim-strip { display:none !important; }
  html.mur-impr .mur-fiche-pitch { display:block !important; margin:2mm 0 0 !important; font-size:15px !important; color:var(--paper) !important; }
  html.mur-impr.mur-sans-synchro #md-panel, html.mur-impr.mur-sans-synchro .cm-head, html.mur-impr.mur-sans-synchro #cm-grid { display:none !important; }
  /* (lot 5, « option B » du 12/10) un mur à plusieurs formats : une ligne par format utilisé au-dessus du tableau (mur.js, formatsFiche),
     d’un seul tenant, écrite à gauche ; les lignes du tableau qui changent d’un format à l’autre se taisent (une colonne vidée aussi) */
  html.mur-impr .mur-fiche-formats { display:block !important; margin:4mm 0 0 !important; }
  html.mur-impr .mur-fiche-formats .md-row { justify-content:flex-start !important; }
  html.mur-impr .mur-fiche-formats .md-row .v { text-align:left !important; color:var(--paper) !important; }
  html.mur-impr .md-row.mur-hors-format, html.mur-impr .md-col.mur-hors-format { display:none !important; }
  /* (relectures du 13/10) une colonne du tableau vidée (Block : « La dalle ») : celle qui reste prend toute la largeur, comme les lignes par
     format au-dessus d'elle (elle restait en demi-largeur, la moitié droite de la page vide) */
  html.mur-impr .md-panel:has(> .md-col.mur-hors-format) > .md-col { grid-column:1 / -1 !important; }
  html.mur-impr.mur-sans-synchro .mur-fiche-formats { display:none !important; }
  /* (17/10, étape 1 du plan validé par Alex) LA FICHE SEULE (« Télécharger la fiche », mur.js : entrerFiche ; html.mur-fiche) : ni le mur, ni ses
     tuiles, ni son dessin, ni le bloc « Dissipation thermique » (mur.js ne le pose pas) : la section du calculateur se tait entière ; la page 1 est
     le haut de fiche puis les chiffres clés au pitch choisi. (La classe répétée : plus forte que « html.mur-impr:not(.mur-complet) … section#mur », plus haut.) */
  html.mur-impr.mur-fiche.mur-fiche body > section#mur { display:none !important; }
  /* Swap, Swap-Ec, Verso, Block : « Les formats de dalle au pitch … » (mur.js, formatsTous), tous les formats, une ligne chacun, juste au-dessus
     du tableau (dont les lignes propres à un format se taisent, .mur-hors-format) ; d’un seul tenant ; les valeurs telles que la fiche les écrit,
     leur note dessous (son <i>), en petit */
  html.mur-impr .mur-formats-tous { display:block !important; margin:4mm 0 0 !important; break-inside:avoid !important; }
  /* ce qui l’annonce (« La fiche technique », la ligne du pitch, la note du palier de Block) part avec lui : jamais seul en bas de la page d’avant */
  html.mur-impr.mur-fiche .wrap > :has(~ .mur-formats-tous) { break-after:avoid !important; }
  html.mur-impr .mur-formats-tous h5 { margin-bottom:0 !important; }
  html.mur-impr .mur-formats-tous table { width:100% !important; border-collapse:collapse !important; margin:1.5mm 0 0 !important; font-size:11.5px !important; line-height:1.32 !important; }
  html.mur-impr .mur-formats-tous th, html.mur-impr .mur-formats-tous td { padding:1.2mm 2mm 1.2mm 0 !important; border-bottom:1px solid rgba(128,128,128,.4) !important; text-align:left !important;
    vertical-align:top !important; font-weight:inherit !important; color:var(--paper) !important; background:none !important; font-variant-numeric:tabular-nums !important; }
  html.mur-impr .mur-formats-tous thead th { font-size:10.5px !important; line-height:1.3 !important; letter-spacing:.04em !important; color:var(--paper-dim) !important; }
  html.mur-impr .mur-formats-tous tr { break-inside:avoid !important; }
  html.mur-impr .mur-formats-tous i { font-style:normal !important; display:block !important; font-size:10px !important; color:var(--paper-dim) !important; }
  html.mur-impr .mur-formats-tous b { font-weight:inherit !important; }
  /* la simplifiée de la fiche seule tient en deux pages, trois au plus : sans le mur, le haut de fiche et les chiffres clés ouvrent la page 1, la
     fiche technique les suit ; ses rangées un peu resserrées (comme celles de la porte), pour que la fin de la fiche (le pied, la mention) ne parte
     jamais seule sur une page de plus (Verso et Fold-Up : 14 % d’une troisième page) */
  html.mur-impr:not(.mur-complet).mur-fiche .cm { padding:3px 0 !important; }
  html.mur-impr:not(.mur-complet).mur-fiche .md-row { padding:4px 0 !important; }
  html.mur-impr:not(.mur-complet).mur-fiche .cm-head { margin-top:4mm !important; }
  html.mur-impr:not(.mur-complet).mur-fiche footer .wrap { padding-top:3mm !important; padding-bottom:0 !important; }
  /* une note reste avec le bloc qu’elle commente (Sub Zero en 0,78 : la note des consommations ouvrait seule la page 2, sous le tableau resté en page 1) */
  html.mur-impr:not(.mur-complet).mur-fiche .mx-note, html.mur-impr:not(.mur-complet).mur-fiche .foot-note { break-before:avoid !important; }
  /* (14/10, demande d’Alex) le bloc « Dissipation thermique » (mur.js, blocChaleur), dans la fiche technique, avant les caractéristiques
     communes : sur papier et dans l’aperçu seulement (masqué à l’écran plus haut), d’un seul tenant, dans le ton des tuiles ; lisible en noir
     (--paper, --paper-dim relevé à #cdc8bf plus haut) comme en blanc (html.mur-blanc : --paper #111, --paper-dim #3a3a3a) ; le filet gris moyen
     passe sur les deux fonds. Il hérite de la police et de la graisse de la fiche (relecture du banc complet : une police ou une graisse de plus
     coûte ses glyphes dans le PDF, 49 Kio) ; seul le « ≈ », absent de la police du site, vient d’Arial (8 Kio) */
  html.mur-impr .mur-chaleur { display:block !important; break-inside:avoid !important; margin:6mm 0 0 !important; padding:4mm 5mm 4.5mm !important; border:1px solid rgba(128,128,128,.5) !important; border-radius:6px !important; }
  /* (relectures du 14/10) la tuile « Chaleur dégagée », élargie (bloc A4), sur un fond UNI dans le ton du dégradé des autres tuiles (de #0d121a à
     #070910 sur l’encre) : le dégradé à demi transparent d’une tuile de 2 107 px, Chrome le matricialise (105 Kio par PDF) ; sur fond blanc, les
     tuiles sont déjà unies (#f4f4f4, plus bas) */
  html.mur-impr:not(.mur-blanc) #mur .mur-tuiles .rc:last-child:nth-child(3n+1), html.mur-impr:not(.mur-blanc) #mur .mur-tuiles .rc:last-child:nth-child(3n+2) { background:#0a0e15 !important; }
  html.mur-impr .mur-chaleur h5 { margin:0 0 2.5mm !important; padding:0 !important; border:0 !important; font-size:11px !important; letter-spacing:.16em !important; text-transform:uppercase !important; font-weight:inherit !important; color:var(--paper-dim) !important; }
  html.mur-impr .mur-chaleur p { margin:0 !important; max-width:none !important; font-size:12.5px !important; line-height:1.55 !important; color:var(--paper) !important; }
  html.mur-impr .mur-chaleur p + p { margin-top:2mm !important; }
  html.mur-impr .mur-chaleur .mur-chaleur-mur { font-variant-numeric:tabular-nums !important; }
  html.mur-impr .mur-chaleur table { width:100% !important; border-collapse:collapse !important; margin:3mm 0 !important; font-size:12.5px !important; line-height:1.4 !important; }
  html.mur-impr .mur-chaleur th, html.mur-impr .mur-chaleur td { padding:1.6mm 2.5mm !important; border-bottom:1px solid rgba(128,128,128,.4) !important; text-align:left !important; vertical-align:top !important; font-weight:inherit !important; color:var(--paper) !important; background:none !important; }
  html.mur-impr .mur-chaleur thead th { font-size:11px !important; letter-spacing:.14em !important; text-transform:uppercase !important; color:var(--paper-dim) !important; }
  html.mur-impr .mur-chaleur tbody th { padding-left:0 !important; }
  html.mur-impr .mur-chaleur td { font-variant-numeric:tabular-nums !important; white-space:nowrap !important; }
  html.mur-impr .mur-chaleur .mur-chaleur-note { font-size:11px !important; line-height:1.5 !important; color:var(--paper-dim) !important; }
  /* (15/10, lot 3) LA SIMPLIFIÉE GARDE SES TROIS PAGES avec le bloc de chaque fiche : la fin de la fiche technique, le bloc, les caractéristiques
     communes (jusqu’à dix-sept rangées chez Fold-Up) et le pied ne tenaient plus sur la troisième (Cinetix, Element, Fold-Up, Helio, Vellum XR,
     Verso sortaient en quatre pages). Le bloc resserré, et les rangées des caractéristiques communes resserrées comme celles de la porte */
  html.mur-impr:not(.mur-complet) .mur-chaleur { margin:4mm 0 0 !important; padding:3mm 4mm 3.2mm !important; }
  html.mur-impr:not(.mur-complet) .mur-chaleur h5 { margin:0 0 1.6mm !important; }
  html.mur-impr:not(.mur-complet) .mur-chaleur p { font-size:11.5px !important; line-height:1.42 !important; }
  html.mur-impr:not(.mur-complet) .mur-chaleur p + p { margin-top:1.4mm !important; }
  html.mur-impr:not(.mur-complet) .mur-chaleur table { margin:1.8mm 0 !important; font-size:11.5px !important; line-height:1.3 !important; }
  html.mur-impr:not(.mur-complet) .mur-chaleur th, html.mur-impr:not(.mur-complet) .mur-chaleur td { padding-top:1mm !important; padding-bottom:1mm !important; }
  html.mur-impr:not(.mur-complet) .mur-chaleur .mur-chaleur-note { font-size:10.5px !important; line-height:1.4 !important; }
  html.mur-impr:not(.mur-complet) .cm { padding:5px 0 !important; }
  html.mur-impr:not(.mur-complet) .cm-head { margin-top:5mm !important; }
  html.mur-impr .mur-impr-seul, html.mur-impr .mur-resume, html.mur-impr #mur-pied { display:block !important; }
  /* (vérification du 16/10, tour 3) sur papier, les notes du calculateur sous ses tuiles (Invisia : la phrase de la hauteur hors de la plage et celle de l’axe ; Curva :
     ses remarques) sur toute la largeur de la page, et non sur 74 caractères, en 11 px comme les notes du bloc chaleur : deux lignes au lieu de trois, le dessin
     de la page 1 garde ses 45 mm (Invisia 2,5 à 1,80 m : 40,9 mm) */
  html.mur-impr #mur .mur-note-axe, html.mur-impr #mur .mur-notes-v .mx-note { max-width:none !important; margin-top:3mm !important; font-size:11px !important; line-height:1.45 !important; }
  /* fond noir : les gris les plus pâles des fiches (#6e6e6e, #6f6960, #666d79 sur #060708 : 3,7 à 3,8 : 1)
     passent au-dessus de 7 : 1 sur papier ; l’écran du site ne change pas (revue du 08/10) */
  html.mur-impr:not(.mur-blanc) { --paper-faint:#a8a29a !important; --paper-dim:#cdc8bf !important; }
  html.mur-impr .pillar-grid, html.mur-impr .rc-grid, html.mur-impr .rc, html.mur-impr .md-panel, html.mur-impr .md-col, html.mur-impr .cm-grid,
  html.mur-impr .mur-dessin, html.mur-impr .mur-resume, html.mur-impr #mur-copie, html.mur-impr table { break-inside:avoid !important; }
  html.mur-impr .label, html.mur-impr h2, html.mur-impr .cfg-label, html.mur-impr .cm-head { break-after:avoid !important; }
  /* (v2) les coupures : aucun titre seul en bas de page, aucune ligne de tableau coupée, pas de ligne veuve */
  html.mur-impr .mur-fiche-pitch, html.mur-impr .md-col h5 { break-after:avoid !important; }
  html.mur-impr .md-row, html.mur-impr .cm { break-inside:avoid !important; }
  /* (deuxième relecture du 09/10) un tableau réduit à la colonne du pitch : l’en-tête de rangée garde son fond d’écran (collant
     au défilement), la valeur non ; la rangée était en deux tons. Une rangée ordinaire est d’un seul ton, sans fond */
  html.mur-impr table.mx tbody tr:not(.key) th.rowh { background:transparent !important; }
  html.mur-impr p { orphans:3; widows:3; }
  html.mur-impr * { text-shadow:none !important; box-shadow:none !important; -webkit-backdrop-filter:none !important; backdrop-filter:none !important; }
  /* ---- (v4, 09/10) la fiche COMPLÈTE : toute la fiche, le mur du client en page 1 comme la simplifiée, propre sur
     papier : rien qui bouge (chaque animation à son état de repos, visible), aucune vidéo, aucun réglage d’écran.
     Les onglets d’une section (pitch, sens, état) disparaissent : mur.js les met au pitch choisi et écrit à leur
     place, en clair, l’onglet ouvert (.mur-onglet-dit) ; les points sur les photos deviennent les numéros de leur
     liste. Et des coupures propres : aucun bloc coupé en deux, aucun titre seul en bas de page. ---- */
  html.mur-impr.mur-complet *, html.mur-impr.mur-complet *::before, html.mur-impr.mur-complet *::after { animation:none !important; transition:none !important; }
  html.mur-impr.mur-complet img { filter:none !important; }
  html.mur-impr.mur-complet .stage-lit::before { display:none !important; }   /* le halo flou derrière les photos : une image de plus, sans contenu */
  html.mur-impr.mur-complet .sim, html.mur-impr.mur-complet body > section form, html.mur-impr.mur-complet body > section:not(#mur) [role="tablist"] { display:none !important; }
  html.mur-impr.mur-complet .mur-onglet-dit { display:block !important; margin:2mm 0 3mm !important; font-size:15px !important; line-height:1.5 !important; color:var(--paper) !important; }
  html.mur-impr.mur-complet .mur-onglet-dit:empty, html.mur-impr.mur-complet .mur-ecran-seul { display:none !important; }
  /* les points sur les photos : un numéro, celui de la liste à côté */
  html.mur-impr.mur-complet .hs { cursor:default !important; width:24px !important; height:24px !important; border-radius:50% !important; background:var(--ink) !important;
    border:1.5px solid var(--paper) !important; color:var(--paper) !important; }
  html.mur-impr.mur-complet .hs i, html.mur-impr.mur-complet .hs b { display:none !important; }
  html.mur-impr.mur-complet .hs::after { content:attr(data-mur-n); position:absolute; left:0; right:0; top:50%; transform:translateY(-50%); text-align:center;
    font:600 10.5px/1 'Archivo',sans-serif; letter-spacing:0; color:var(--paper); }
  html.mur-impr.mur-complet .hs:not([data-mur-n]) { display:none !important; }
  /* coupures : un bloc reste entier, un titre reste avec ce qu’il annonce */
  html.mur-impr.mur-complet .cmp-card, html.mur-impr.mur-complet .feat, html.mur-impr.mur-complet .cob-point, html.mur-impr.mur-complet figure, html.mur-impr.mur-complet .origin-card, html.mur-impr.mur-complet .demo-pt, html.mur-impr.mur-complet .bar-row,
  html.mur-impr.mur-complet .hs-item, html.mur-impr.mur-complet .hs-stage, html.mur-impr.mur-complet tr, html.mur-impr.mur-complet img, html.mur-impr.mur-complet svg, html.mur-impr.mur-complet .draw-stage, html.mur-impr.mur-complet .fold-stage, html.mur-impr.mur-complet .mx-note,
  html.mur-impr.mur-complet .mur-onglet-dit { break-inside:avoid !important; }
  /* (17/10, étape 1, 3e tour) une dalle de « Les formats » (Swap, Swap-Ec, Verso, Block, Cinetix, Echo) : sa photo est posée en absolu dans un cadre vide
     (.frame), que Chrome coupait au saut de page comme un bloc sans contenu : le haut de la dalle en bas d’une page, le reste en haut de la suivante (Swap,
     complète de la fiche seule). La dalle, sa cote et sa surface restent ensemble ; et le cadre garde sa photo (overflow) : repoussée entière à la page
     suivante, elle laissait encore un liseré de 0,2 pt en bas de la page d’avant (la même image, posée sur les deux pages : analyse_pdf.py, images_coupees) */
  html.mur-impr.mur-complet .fmt, html.mur-impr.mur-complet .fmt .frame { break-inside:avoid !important; }
  html.mur-impr.mur-complet .fmt .frame { overflow:hidden !important; }
  /* (deuxième relecture du 09/10) une photo à points et sa liste : un seul bloc (la liste coupée laissait « 06 » seul en haut de page) */
  html.mur-impr.mur-complet .hotspots { break-inside:avoid !important; }
  /* (jamais sur un h4 : le dernier d’une liste passe son « avoid » à la fin de la section, et tout le bloc d’avant
     partait à la page suivante, mesuré sur Fold-Up le 09/10) */
  html.mur-impr.mur-complet .mur-onglet-dit { break-after:avoid !important; }
  /* la dernière page n’est jamais le pied seul : (relectures du 09/10) la fin de la fiche (« Quel que soit le pitch »,
     ses notes, le pied du site et la mention) est UN bloc insécable, .mur-queue, que mur.js forme le temps de la
     complète (queueFiche) ; le tableau ne se coupe plus, et la mention ne part plus seule sur une page de plus */
  html.mur-impr.mur-complet .md-panel { break-inside:auto !important; }
  html.mur-impr.mur-complet .mur-queue { break-inside:avoid !important; }
  html.mur-impr.mur-complet .mur-queue footer .wrap, html.mur-impr.mur-complet .mur-queue #mur-pied .wrap { padding-left:0 !important; padding-right:0 !important; }
  /* (relectures du 09/10) le graphique de consommation (ses barres) et les cartes chiffrées de « Dehors » restent
     entiers ; le début d'une section (surtitre, titre, chapô) ne reste jamais seul en bas de page : le chapô ne se
     coupe pas et part avec ce qui le suit ; une note de fin de bloc ne part pas seule en haut de la page suivante */
  html.mur-impr.mur-complet .bars, html.mur-impr.mur-complet .stat { break-inside:avoid !important; }
  html.mur-impr.mur-complet .intro { break-inside:avoid !important; break-after:avoid !important; }
  html.mur-impr.mur-complet .mx-note, html.mur-impr.mur-complet .foot-note { break-before:avoid !important; }
}

/* la mise en page A4 de la fiche courte : sur papier, à l’écran seulement s’il est assez large, et dans la mesure de la page 1
   (lot 5). Sur téléphone, l’aperçu garde l’empilement de la fiche (vérification finale du 08/10 : le haut de fiche en 2 colonnes
   laissait 17 px au texte à 390 px, les chiffres clés sortaient de leurs cases ; « CONSOMMATION » sortait de sa tuile).
   Jeton « deux-points a4 » : poser_mur.py écrit ce bloc trois fois (@media print : html ; @media screen et (min-width:700px) :
   html.mur-impr ; sans condition : html.mur-mesure). */
@media print{
  html .mur-tuiles { grid-template-columns:repeat(3,minmax(0,1fr)) !important; }
  /* (relectures du 14/10) la septième tuile (« Chaleur dégagée ») sur toute la largeur, comme à l’écran ; (15/10) la quatrième aussi, seule sur
     sa rangée (Vellum, Phantom : la chaleur en attente) ; jamais la sixième (Element, Swap, Swap-Ec, Vellum XR : deux rangées pleines) */
  html #mur .mur-tuiles .rc:last-child:nth-child(3n+1) { grid-column:1 / -1 !important; }
  /* (vérification du 16/10, tour 3) deux tuiles sur la dernière rangée (The Set) : la dernière prend les deux places, sans trou */
  html #mur .mur-tuiles .rc:last-child:nth-child(3n+2) { grid-column:span 2 !important; }
  /* (15/10, lot 3) cette tuile élargie (la chaleur, la dernière) sur UNE rangée : le libellé, la valeur, puis le détail ; la hauteur gagnée va au
     dessin de la page 1 (Cinetix, Block, Verso : sept tuiles, le dessin passait sous 45 mm) */
  html #mur .mur-tuiles .rc:last-child:nth-child(3n+1) { display:grid !important; grid-template-columns:auto auto minmax(0,1fr) !important; column-gap:5mm !important; align-items:baseline !important; }
  html #mur .mur-tuiles .rc:last-child:nth-child(3n+1) .v, html #mur .mur-tuiles .rc:last-child:nth-child(3n+1) .u { margin-top:0 !important; }
  html .hero .wrap { display:grid !important; grid-template-columns:minmax(0,1fr) auto !important; column-gap:8mm !important; align-items:center !important; }
  html .hero .wrap > * { grid-column:1 !important; }
  html .hero .mur-photo { grid-column:2 !important; grid-row:1 / span 3 !important; max-width:78mm !important; margin-top:0 !important; }
  /* (19/10, étape 5a) le nom de la configuration sur toute la largeur ; la photo, à côté du texte, en dessous de lui */
  html.mur-config .hero .mur-config-nom { grid-column:1 / -1 !important; }
  html.mur-config .hero .mur-photo { grid-row:2 / span 3 !important; }
  html .md-panel { grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important; gap:0 9mm !important; }
  html .md-col + .md-col h5 { margin-top:0 !important; }
  html .pillar-grid { grid-template-columns:repeat(3,minmax(0,1fr)) !important; }
}
@media screen and (min-width:700px){
  html.mur-impr .mur-tuiles { grid-template-columns:repeat(3,minmax(0,1fr)) !important; }
  /* (relectures du 14/10) la septième tuile (« Chaleur dégagée ») sur toute la largeur, comme à l’écran ; (15/10) la quatrième aussi, seule sur
     sa rangée (Vellum, Phantom : la chaleur en attente) ; jamais la sixième (Element, Swap, Swap-Ec, Vellum XR : deux rangées pleines) */
  html.mur-impr #mur .mur-tuiles .rc:last-child:nth-child(3n+1) { grid-column:1 / -1 !important; }
  /* (vérification du 16/10, tour 3) deux tuiles sur la dernière rangée (The Set) : la dernière prend les deux places, sans trou */
  html.mur-impr #mur .mur-tuiles .rc:last-child:nth-child(3n+2) { grid-column:span 2 !important; }
  /* (15/10, lot 3) cette tuile élargie (la chaleur, la dernière) sur UNE rangée : le libellé, la valeur, puis le détail ; la hauteur gagnée va au
     dessin de la page 1 (Cinetix, Block, Verso : sept tuiles, le dessin passait sous 45 mm) */
  html.mur-impr #mur .mur-tuiles .rc:last-child:nth-child(3n+1) { display:grid !important; grid-template-columns:auto auto minmax(0,1fr) !important; column-gap:5mm !important; align-items:baseline !important; }
  html.mur-impr #mur .mur-tuiles .rc:last-child:nth-child(3n+1) .v, html.mur-impr #mur .mur-tuiles .rc:last-child:nth-child(3n+1) .u { margin-top:0 !important; }
  html.mur-impr .hero .wrap { display:grid !important; grid-template-columns:minmax(0,1fr) auto !important; column-gap:8mm !important; align-items:center !important; }
  html.mur-impr .hero .wrap > * { grid-column:1 !important; }
  html.mur-impr .hero .mur-photo { grid-column:2 !important; grid-row:1 / span 3 !important; max-width:78mm !important; margin-top:0 !important; }
  /* (19/10, étape 5a) le nom de la configuration sur toute la largeur ; la photo, à côté du texte, en dessous de lui */
  html.mur-impr.mur-config .hero .mur-config-nom { grid-column:1 / -1 !important; }
  html.mur-impr.mur-config .hero .mur-photo { grid-row:2 / span 3 !important; }
  html.mur-impr .md-panel { grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important; gap:0 9mm !important; }
  html.mur-impr .md-col + .md-col h5 { margin-top:0 !important; }
  html.mur-impr .pillar-grid { grid-template-columns:repeat(3,minmax(0,1fr)) !important; }
}
html.mur-mesure .mur-tuiles { grid-template-columns:repeat(3,minmax(0,1fr)) !important; }
/* (relectures du 14/10) la septième tuile (« Chaleur dégagée ») sur toute la largeur, comme à l’écran ; (15/10) la quatrième aussi, seule sur
   sa rangée (Vellum, Phantom : la chaleur en attente) ; jamais la sixième (Element, Swap, Swap-Ec, Vellum XR : deux rangées pleines) */
html.mur-mesure #mur .mur-tuiles .rc:last-child:nth-child(3n+1) { grid-column:1 / -1 !important; }
/* (vérification du 16/10, tour 3) deux tuiles sur la dernière rangée (The Set) : la dernière prend les deux places, sans trou */
html.mur-mesure #mur .mur-tuiles .rc:last-child:nth-child(3n+2) { grid-column:span 2 !important; }
/* (15/10, lot 3) cette tuile élargie (la chaleur, la dernière) sur UNE rangée : le libellé, la valeur, puis le détail ; la hauteur gagnée va au
   dessin de la page 1 (Cinetix, Block, Verso : sept tuiles, le dessin passait sous 45 mm) */
html.mur-mesure #mur .mur-tuiles .rc:last-child:nth-child(3n+1) { display:grid !important; grid-template-columns:auto auto minmax(0,1fr) !important; column-gap:5mm !important; align-items:baseline !important; }
html.mur-mesure #mur .mur-tuiles .rc:last-child:nth-child(3n+1) .v, html.mur-mesure #mur .mur-tuiles .rc:last-child:nth-child(3n+1) .u { margin-top:0 !important; }
html.mur-mesure .hero .wrap { display:grid !important; grid-template-columns:minmax(0,1fr) auto !important; column-gap:8mm !important; align-items:center !important; }
html.mur-mesure .hero .wrap > * { grid-column:1 !important; }
html.mur-mesure .hero .mur-photo { grid-column:2 !important; grid-row:1 / span 3 !important; max-width:78mm !important; margin-top:0 !important; }
/* (19/10, étape 5a) le nom de la configuration sur toute la largeur ; la photo, à côté du texte, en dessous de lui */
html.mur-mesure.mur-config .hero .mur-config-nom { grid-column:1 / -1 !important; }
html.mur-mesure.mur-config .hero .mur-photo { grid-row:2 / span 3 !important; }
html.mur-mesure .md-panel { grid-template-columns:minmax(0,1fr) minmax(0,1fr) !important; gap:0 9mm !important; }
html.mur-mesure .md-col + .md-col h5 { margin-top:0 !important; }
html.mur-mesure .pillar-grid { grid-template-columns:repeat(3,minmax(0,1fr)) !important; }

/* (lot 5) LA MESURE de la page 1 (mur.js, hauteurDessin) : le temps d’une lecture, la page à la largeur imprimée (186 mm de
   contenu, .wrap à 4 mm), ce que seul le papier pose, et le dessin à 0 de haut (sa place est ce qu’on mesure) */
html.mur-mesure body { width:186mm !important; min-width:0 !important; max-width:186mm !important; margin:0 !important; }
html.mur-mesure .wrap { padding-left:4mm !important; padding-right:4mm !important; }
html.mur-mesure .mur-impr-seul { margin-bottom:6mm; }
html.mur-mesure .mur-tuiles-fu .v { white-space:nowrap !important; font-size:17px !important; }
html.mur-mesure #mur-copie .rc-grid { grid-template-columns:repeat(4,minmax(0,1fr)); }
html.mur-mesure .mur-dessin { height:0 !important; }
html.mur-mesure #mur .mur-tuiles .rc:last-child:nth-child(odd):not(:nth-child(3n+1)):not(:nth-child(3n+2)) { grid-column:auto !important; }   /* la septième s’élargit, la cinquième prend deux places (bloc A4) */
/* la complète se resserre sur papier (« la fiche COMPLÈTE sur papier A4 », plus bas) : la mesure fait de même pour la page 1 */
html.mur-mesure.mur-complet .sec, html.mur-mesure.mur-complet .sec--tight { padding:5mm 0 !important; }
html.mur-mesure.mur-complet .label { margin-bottom:4mm !important; }
html.mur-mesure.mur-complet .mx-note, html.mur-mesure.mur-complet .foot-note { margin-top:3mm !important; max-width:none !important; }

/* (vérification du 16/10, tour 2) l’aperçu SOUS 700 px (pas de mise en page A4) : le tableau « Dissipation thermique » sortait de son cadre et de
   l’écran (375 px : « 8,96 kW (≈ 30 570 BTU/h) » de Cala 220 coupé au bord, + 34 px ; les fourchettes de Sub Zero, + 100 px), sur les 17 fiches.
   Ses cellules ne se coupent pas (une fourchette reste d’un seul tenant) : trois colonnes n’y tiennent pas. Chaque ligne s’empile : son libellé, puis
   « Consommation : … », puis « Chaleur dégagée : … », dits par le titre de leur colonne (data-k, mur.js) ; la chaleur passe à la ligne entre kW et
   BTU/h s’il le faut. Le papier (A4, @media print) et l’aperçu large gardent le tableau. :not(.mur-mesure) : la mesure de la page 1 se fait à la
   largeur A4 ; et ces règles passent après celles du bloc court (la simplifiée y resserre les cellules). */
@media screen and (max-width:699.98px){
  html.mur-impr:not(.mur-mesure) .mur-chaleur table, html.mur-impr:not(.mur-mesure) .mur-chaleur tbody, html.mur-impr:not(.mur-mesure) .mur-chaleur tr,
  html.mur-impr:not(.mur-mesure) .mur-chaleur th, html.mur-impr:not(.mur-mesure) .mur-chaleur td { display:block !important; width:auto !important; }
  html.mur-impr:not(.mur-mesure) .mur-chaleur thead { display:none !important; }
  html.mur-impr:not(.mur-mesure) .mur-chaleur tr { padding:2mm 0 !important; border-bottom:1px solid rgba(128,128,128,.4) !important; }
  html.mur-impr:not(.mur-mesure) .mur-chaleur th, html.mur-impr:not(.mur-mesure) .mur-chaleur td { padding:0 !important; border:0 !important; white-space:normal !important; overflow-wrap:break-word !important; }
  html.mur-impr:not(.mur-mesure) .mur-chaleur th { margin-bottom:1mm !important; }
  html.mur-impr:not(.mur-mesure) .mur-chaleur td::before { content:attr(data-k) "\00a0: "; color:var(--paper-dim); }
  /* (17/10, étape 1) « Les formats de dalle au pitch … » de la fiche seule, de même : chaque format s’empile (son format en tête, puis chaque valeur
     dite par le titre de sa colonne) ; cinq ou six colonnes ne tiennent pas dans 375 px */
  html.mur-impr:not(.mur-mesure) .mur-formats-tous table, html.mur-impr:not(.mur-mesure) .mur-formats-tous tbody, html.mur-impr:not(.mur-mesure) .mur-formats-tous tr,
  html.mur-impr:not(.mur-mesure) .mur-formats-tous th, html.mur-impr:not(.mur-mesure) .mur-formats-tous td { display:block !important; width:auto !important; }
  html.mur-impr:not(.mur-mesure) .mur-formats-tous thead { display:none !important; }
  html.mur-impr:not(.mur-mesure) .mur-formats-tous tr { padding:2.5mm 0 !important; border-bottom:1px solid rgba(128,128,128,.4) !important; }
  html.mur-impr:not(.mur-mesure) .mur-formats-tous th, html.mur-impr:not(.mur-mesure) .mur-formats-tous td { padding:0 !important; border:0 !important; overflow-wrap:break-word !important; }
  html.mur-impr:not(.mur-mesure) .mur-formats-tous tbody th { margin-bottom:1mm !important; font-weight:600 !important; }
  html.mur-impr:not(.mur-mesure) .mur-formats-tous td + td { margin-top:1mm !important; }
  html.mur-impr:not(.mur-mesure) .mur-formats-tous td::before { content:attr(data-k) "\00a0: "; color:var(--paper-dim); }
  html.mur-impr:not(.mur-mesure) .mur-formats-tous td i { display:inline !important; margin-left:.4em; }
}

/* ====== (v4) la fiche COMPLÈTE sur papier A4 ======
   La page imprimée fait 186 mm de large, environ 700 px : les fiches y prennent leur mise en page de tablette
   (une colonne, de grandes cartes, une page par carte). Sur papier, on rend aux grilles leurs colonnes
   d’ordinateur, en plus serré ; à l’écran, l’aperçu garde la mise en page de la fiche. */
@media print{
  html.mur-complet .sec, html.mur-complet .sec--tight { padding:5mm 0 !important; }
  /* (20/10, lot C5) rien ne suit la fin insécable (.mur-queue) sur papier : le rembourrage bas de sa section tombe (avec la ligne des coordonnées,
     ses 5 mm passaient sous la marge : une page vide de plus, Curva Silk 24 ; ou la queue entière à la page suivante, Swap-Ec 1,25) */
  /* (:is avec un identifiant : plus fort que les règles papier d’une fiche, celle de Swap-Ec sur #caracteristiques, 4 mm) */
  html.mur-complet :is(#caracteristiques, .sec, .sec--tight, .spec):has(> .wrap > .mur-queue) { padding-bottom:0 !important; }
  html.mur-complet .label { margin-bottom:4mm !important; }
  html.mur-complet h2 { font-size:28px !important; max-width:none !important; margin-bottom:3mm !important; }
  html.mur-complet .intro { font-size:13.5px !important; line-height:1.6 !important; max-width:none !important; margin-bottom:5mm !important; }
  html.mur-complet .cfg-label { margin-top:6mm !important; margin-bottom:2mm !important; }
  html.mur-complet .mx-note, html.mur-complet .foot-note { margin-top:3mm !important; max-width:none !important; }
  /* les cartes : 2 ou 3 colonnes */
  html.mur-complet .cob-cmp { grid-template-columns:repeat(2,minmax(0,1fr)) !important; gap:3mm !important; }
  html.mur-complet .cob-cmp.trio, html.mur-complet .sp-pts, html.mur-complet .inst-grid { grid-template-columns:repeat(3,minmax(0,1fr)) !important; gap:3mm !important; }
  html.mur-complet .sp-pts, html.mur-complet .inst-grid { margin-top:4mm !important; }
  html.mur-complet .cmp-card { padding:4mm 4mm 3.5mm !important; }
  html.mur-complet .cmp-card svg { margin-bottom:3mm !important; }
  html.mur-complet .cmp-card h4, html.mur-complet .feat h4 { font-size:14.5px !important; margin-bottom:1.5mm !important; }
  html.mur-complet .cmp-card p, html.mur-complet .feat p { font-size:12.5px !important; line-height:1.55 !important; }
  html.mur-complet .cob-points { grid-template-columns:repeat(2,minmax(0,1fr)) !important; gap:4mm 8mm !important; margin-top:5mm !important; }
  html.mur-complet .cob-point p { font-size:13px !important; line-height:1.6 !important; }
  html.mur-complet .more-grid { grid-template-columns:repeat(3,minmax(0,1fr)) !important; gap:3mm !important; }
  html.mur-complet .more-grid .feat { grid-column:auto !important; }
  /* (deuxième relecture du 09/10) « L’accompagnement », resserré (42 et 46 px de marge, 40 px entre le titre et le texte) : il
     tient au bas de la page d’avant au lieu de pousser la fin de la fiche sur une page de plus (Fold-Up : 11 pages, trois à 60 %) */
  html.mur-complet .origin-card { padding:6mm 7mm !important; gap:3mm !important; }
  html.mur-complet .origin-card p { font-size:13.5px !important; line-height:1.6 !important; max-width:none !important; }
  html.mur-complet .feat { padding:4mm !important; }
  html.mur-complet .stat-band { grid-template-columns:repeat(4,minmax(0,1fr)) !important; gap:3mm !important; margin-top:5mm !important; }
  html.mur-complet .stat { padding:4mm !important; }
  html.mur-complet .res-duo { grid-template-columns:repeat(2,minmax(0,1fr)) !important; }
  /* une image à côté de son texte, comme sur ordinateur. (deuxième relecture du 09/10) la photo un peu plus étroite et la liste
     plus serrée : une photo couchée ou carrée y perd 15 à 25 mm de haut (une photo debout, le dos de Fold-Up, garde ses 105 mm) ;
     « L’entretien » d’Echo, entier, laissait la page d’avant à moitié vide */
  html.mur-complet .hotspots { grid-template-columns:minmax(0,.8fr) minmax(0,1.2fr) !important; gap:6mm !important; margin-top:5mm !important; }
  html.mur-complet .hs-list { gap:0 !important; }
  html.mur-complet .hs-item { padding:1.2mm 3mm !important; gap:10px !important; }
  html.mur-complet .hs-item h4 { font-size:13.5px !important; }
  /* une photo à points très haute (le dos de Fold-Up) : 105 mm au plus ; la scène prend la largeur de la photo,
     pour que chaque point reste à sa place */
  html.mur-complet .hs-stage { width:fit-content !important; max-width:100% !important; margin:0 auto !important; }
  html.mur-complet .hs-stage img { width:auto !important; max-width:100% !important; max-height:105mm !important; }
  html.mur-complet .mod-grid { grid-template-columns:minmax(0,200px) minmax(0,1fr) !important; gap:8mm !important; }
  html.mur-complet .mod-grid img { max-width:none !important; margin:0 !important; }
  html.mur-complet .fold-stage { grid-template-columns:repeat(2,minmax(0,1fr)) !important; gap:8mm !important; margin-top:4mm !important; }
  html.mur-complet .fold-pic { height:85mm !important; }
  html.mur-complet .draw-stage { grid-template-columns:minmax(0,1.25fr) minmax(0,.75fr) !important; gap:8mm !important; margin-top:4mm !important; }
  html.mur-complet .demo-grid { grid-template-columns:minmax(0,200px) minmax(0,1fr) !important; gap:8mm !important; }
  html.mur-complet .dalle-shot, html.mur-complet .splice-shot { margin:5mm 0 3mm !important; }
  html.mur-complet .dalle-shot img { width:auto !important; max-width:100% !important; max-height:75mm !important; }
  /* le graphique de consommation, resserré (09/10, reprise) : il ne se coupe pas, et entier il laissait la moitié
     d'une page vide avant lui (Echo) ; 4 barres en 6 cm au lieu de 8 */
  html.mur-complet .bars { margin-top:4mm !important; gap:3mm !important; }
  html.mur-complet .bar-row .bl { margin-bottom:1.5mm !important; }
  html.mur-complet .bars .track { height:11px !important; }
  html.mur-complet .fmt-row { overflow:visible !important; margin-top:5mm !important; }
  /* les tableaux tiennent dans la largeur : chiffres sur une ligne, en-têtes et notes repliés (à l’écran, sur
     téléphone, ils gardent leur défilement) */
  html.mur-complet .mx-scroll { overflow:visible !important; }
  html.mur-complet table.mx { width:100% !important; min-width:0 !important; table-layout:auto !important; }
  html.mur-complet table.mx th, html.mur-complet table.mx td { padding:4px 5px !important; font-size:10.5px !important; }
  html.mur-complet table.mx thead th { font-size:11px !important; position:static !important; white-space:normal !important; }
  html.mur-complet table.mx thead th span { font-size:8.5px !important; letter-spacing:.06em !important; }
  html.mur-complet table.mx th.rowh { position:static !important; white-space:normal !important; max-width:none !important; min-width:22mm !important; font-size:9px !important; letter-spacing:.06em !important; line-height:1.35 !important; }
  html.mur-complet table.mx td small, html.mur-complet table.mx td .u { white-space:normal !important; font-size:9px !important; }
  /* la fiche technique et le pied, resserrés (relectures du 09/10 : un peu plus, pour que la fin de la fiche de Fold-Up,
     d'un bloc, tienne sous son tableau du pitch au lieu de laisser une page à 35 %) */
  html.mur-complet .cm, html.mur-complet .md-row { padding:4px 0 !important; }
  html.mur-complet .mur-queue .cm-head { margin-top:4mm !important; }
  /* (17/10, étape 1, 2e tour) la fiche SEULE, complète : sa fin d’un seul tenant (.mur-queue : « Caractéristiques communes », le pied, la mention), un
     quart de page, partait seule sur une dernière page remplie au tiers, sous une page d’avant vide au quart (Swap, Sub Zero, Phantom, Swap-Ec…) ;
     resserrée comme celle de la simplifiée, elle tient au bas de la page d’avant quand la place y est presque */
  html.mur-complet.mur-fiche .mur-queue .cm, html.mur-complet.mur-fiche .mur-queue .md-row { padding:2.5px 0 !important; }
  html.mur-complet.mur-fiche .mur-queue .cm { font-size:12.5px !important; }
  html.mur-complet.mur-fiche .mur-queue .cm-head { margin-top:3mm !important; }
  html.mur-complet.mur-fiche .mur-queue .cm-grid { margin-top:2mm !important; }
  html.mur-complet.mur-fiche .mur-queue footer { margin-top:2mm !important; }
  html.mur-complet.mur-fiche .mur-queue footer .wrap { padding-top:2mm !important; }
  html.mur-complet .mur-queue footer { margin-top:3mm !important; padding:0 !important; }
  html.mur-complet .mur-queue footer .wrap { padding-top:3mm !important; }
  html.mur-complet .mur-queue #mur-pied .wrap { padding-top:2mm !important; }
  /* « Quel que soit le pitch » : deux colonnes faites de lignes (et non d'une grille) */
  html.mur-complet .cm-grid { display:block !important; font-size:0 !important; }
  html.mur-complet .cm { display:inline-flex !important; width:calc(50% - 3.6mm) !important; vertical-align:top !important; font-size:13.5px !important; }
  /* (relectures du 13/10) la colonne de gauche : un rang impair parmi les lignes IMPRIMÉES. Une ligne masquée sur papier (« Luminosité
     en option … selon le pitch » de Swap, au pitch du projet) comptait : dès elle, la valeur de gauche collait à l'étiquette de droite */
  html.mur-complet .cm:nth-child(odd of .cm:not(.mur-hors-pitch):not(.mur-hors-format)) { margin-right:7mm !important; }
  /* les photos de carte à hauteur fixée par la fiche (300 px) : 60 mm au plus */
  html.mur-complet .cmp-card img.photo { max-height:60mm !important; }
  html.mur-complet .cm-head { margin-top:6mm !important; }
  html.mur-complet footer .wrap { padding-top:4mm !important; padding-bottom:0 !important; }
  /* (relectures du 09/10) les cartes qui portent un DESSIN légendé : UNE carte par rangée, le dessin (82 mm) à gauche de
     son texte. Sur 3 colonnes, les légendes sortaient en 3,7 pt (ici 5,9 pt au moins) ; et deux cartes côte à côte
     formaient un bloc de 9 cm qui ne se coupe pas : avec le titre de sa section, il emportait tout à la page suivante
     et laissait des pages à moitié vides. Carte par carte, la page peut tomber entre deux cartes. */
  /* (09/10, reprise) en simple FLUX de blocs, et non en grille d'une colonne : Chrome ne coupait pas cette grille entre deux
     cartes et l'envoyait entière à la page suivante (« Le module » d'Echo : titre et chapô seuls sur une page vide aux 2/3) */
  html.mur-complet .cob-cmp:has(> .cmp-card > svg text) { display:block !important; }
  html.mur-complet .cob-cmp:has(> .cmp-card > svg text) > .cmp-card + .cmp-card { margin-top:3mm !important; }
  html.mur-complet .cob-cmp:has(> .cmp-card > svg text) > .cmp-card { display:flow-root !important; }
  html.mur-complet .cob-cmp:has(> .cmp-card > svg text) > .cmp-card > :is(svg, img):first-child { float:left !important; width:82mm !important; margin:0 6mm 0 0 !important; }
  html.mur-complet .cob-cmp:has(> .cmp-card > svg text) > .cmp-card > img:first-child { height:auto !important; max-height:60mm !important; object-fit:contain !important; }
  /* le dessin de « L'assemblage » de Cinetix prend toute la largeur : ses petites légendes (9 et 10) passent à 11,5, soit 6,4 pt
     (deuxième relecture du 09/10 : « planéité ≤ 0,1 mm » sortait en 5,6 pt, « DEUX DALLES, UN SEUL PLAN » en 5,9 pt) */
  html.mur-complet .mix-shape svg text[font-size="9"], html.mur-complet .mix-shape svg text[font-size="10"] { font-size:11.5px !important; }
  /* une grille de cartes juste sous le chapô : pas de marge en plus (« L'accrochage » d'Echo et de Cinetix gardait 46 px de la fiche,
     un blanc d'un centimètre sous le chapô) */
  html.mur-complet .cob-cmp { margin-top:0 !important; }
  /* le plan de la dalle d'Element : 140 mm de large (« MODULE 1 » sortait en 5,4 pt), ses chiffres dessous, deux par deux */
  html.mur-complet .draw-stage { grid-template-columns:minmax(0,1fr) !important; gap:5mm !important; }
  html.mur-complet .draw-stage > svg { width:140mm !important; max-width:100% !important; }
  html.mur-complet .draw-stage .fold-dims { grid-template-columns:repeat(2,minmax(0,1fr)) !important; gap:3mm !important; }
  html.mur-complet .draw-stage .fold-dims .rc { padding:3mm 3.5mm !important; }
  html.mur-complet .draw-stage .fold-dims .rc .v { font-size:17px !important; white-space:nowrap !important; }
  /* les trois grilles 2K, 4K, 8K de Cinetix sur une rangée (et non 2 + 1) */
  html.mur-complet .fmt-row:has(> :nth-child(3):last-child) { display:grid !important; grid-template-columns:repeat(3,minmax(0,1fr)) !important; gap:5mm !important; }
}

/* ====== impression seulement ====== */
@media print{
  /* (v2) la feuille ENTIÈRE prend le fond de la fiche (noir ; blanc sous html.mur-blanc, qui pose --ink:#fff),
     marges comprises : plus de cadre blanc. La marge de 12 mm garde le texte loin du bord après chaque saut
     de page. Les 6 boîtes de marge vides empêchent Chrome d’y écrire la date, le titre, l’adresse et la
     pagination (case « En-têtes et pieds de page »). Mesuré dans Chrome le 08/10 (cahier v2, §B). */
  @page{
    size:A4; margin:12mm;
    background:var(--ink,#060708);
    @top-left{content:""} @top-center{content:""} @top-right{content:""}
    @bottom-left{content:""} @bottom-center{content:""} @bottom-right{content:""}
  }
  html .wrap{padding-left:4mm !important;padding-right:4mm !important;}
  #mur-barre{display:none !important;}
  /* (relectures du 08/10) le mur du client en PAGE 1 : mur.js le place sous le haut de fiche (classe mur-tete) ;
     les chiffres clés et la fiche technique ouvrent la page 2, « Quel que soit le pitch » et les pieds suivent */
  html.mur-tete body > section#mur { break-before:auto !important; }
  html.mur-tete body > section.pillars { break-before:page !important; }
  /* la porte : sans formulaire (Ctrl+P direct), la fiche courte sort SANS le mur ; (relectures du 14/10) ni le bloc « Dissipation
     thermique », qui disait la taille, les dalles et les consommations du mur sous « Pour recevoir cette fiche avec votre mur… » */
  html:not(.mur-impr) .mur-resume, html:not(.mur-impr) .mur-dessin, html:not(.mur-impr) .mur-tuiles,
  html:not(.mur-impr) #mur-copie, html:not(.mur-impr) .mur-note-conso, html:not(.mur-impr) .mur-chaleur { display:none !important; }
  /* (16/10) ni la phrase de l'axe alimenté du film d'Invisia (« Votre film fait 4,25 m de large… » : un chiffre du film, le banc 14i l'a vu sur la porte) */
  html:not(.mur-impr) .mur-note-axe { display:none !important; }
  /* (16/10) ni les notes de l’écran de Curva (son cylindre, ses caissons, le « ≈ » de ses chiffres) */
  html:not(.mur-impr) .mur-notes-v { display:none !important; }
  html:not(.mur-impr) .mur-sans-form { display:block !important; }
  html:not(.mur-impr) body > section#mur { break-before:auto !important; }   /* sans mur, pas de page à lui */
  /* la porte, resserrée : sa dernière page ne gardait que le pied de la fiche et la mention (relectures du 08/10) */
  html:not(.mur-impr) footer .wrap { padding-top:4mm !important; padding-bottom:0 !important; }
  html:not(.mur-impr) .cm, html:not(.mur-impr) .md-row { padding:5px 0 !important; }
  html:not(.mur-impr) .cm-head { margin-top:6mm !important; }
  html:not(.mur-impr) .sec, html:not(.mur-impr) .sec--tight { padding:4mm 0 !important; }
  .mur-sans-form{font-size:13px;color:var(--paper-dim);}
  .mur-impr-seul{margin-bottom:6mm;}
  /* Fold-Up : une valeur de tuile tient sur UNE ligne (« 1 664 × 1 248 px » laissait « px » seul) */
  html .mur-tuiles-fu .v { white-space:nowrap !important; font-size:17px !important; }
}

/* ====== fond blanc, à l’écran ET à l’impression ====== */
html.mur-blanc { --ink:#fff; --ink-2:#fff; --char:#f3f3f3; --line:#d0d0d0; --paper:#111; --paper-dim:#3a3a3a;
  --paper-faint:#5a5a5a; --accent:#111; --accent-glow:#000; --hair:rgba(0,0,0,.14); }
html.mur-blanc body { background:#fff !important; color:#111 !important; }
html.mur-blanc .hero p, html.mur-blanc .tech .intro { color:#333 !important; }
html.mur-blanc .eyebrow::before { background:#111 !important; }
html.mur-blanc .pillar, html.mur-blanc .rc, html.mur-blanc .md-tab, html.mur-blanc .dim-card { background:#f4f4f4 !important; border-color:#cfcfcf !important; }
html.mur-blanc .rc.lead { background:#ececec !important; border-color:#999 !important; }
html.mur-blanc .md-tab[aria-selected="true"] { background:#111 !important; border-color:#111 !important; }
html.mur-blanc .md-tab[aria-selected="true"] .p { color:#fff !important; }
html.mur-blanc .md-tab[aria-selected="true"] .d { color:rgba(255,255,255,.75) !important; }
html.mur-blanc .md-col h5, html.mur-blanc .md-row, html.mur-blanc .cm, html.mur-blanc .cm-grid, html.mur-blanc footer .wrap { border-color:#d6d6d6 !important; }
html.mur-blanc .sim-strip i { background:#cfcfcf !important; }
html.mur-blanc * { text-shadow:none !important; }
/* (v4) la fiche complète sur fond blanc : ce que les fiches écrivent en dur pour le fond noir (textes clairs,
   fonds de cartes et d’en-têtes de tableau, barres lumineuses). Les dessins, eux, sont repris par mur.js. */
html.mur-blanc .more .intro, html.mur-blanc .demo .intro, html.mur-blanc .origin .intro, html.mur-blanc .cob-point p { color:#333 !important; }
html.mur-blanc .cob-point b { color:#111 !important; }
html.mur-blanc .cmp-card, html.mur-blanc .feat, html.mur-blanc .stat, html.mur-blanc .origin-card { background:#f4f4f4 !important; border-color:#cfcfcf !important; }
html.mur-blanc .origin-card { border-left-color:#111 !important; }
html.mur-blanc .opt-tag { border-color:#8a8a8a !important; }
html.mur-blanc .mx-scroll { background:transparent !important; border-color:#cfcfcf !important; }
html.mur-blanc table.mx thead th, html.mur-blanc table.mx th.rowh { background:#f0f0f0 !important; }
html.mur-blanc table.mx th, html.mur-blanc table.mx td { border-color:#dcdcdc !important; }
html.mur-blanc table.mx tr.key th, html.mur-blanc table.mx tr.key td { background:#f4f4f4 !important; }
html.mur-blanc .track { background:#efefef !important; border-color:#cfcfcf !important; }
html.mur-blanc .track::after { display:none !important; }
html.mur-blanc .fill { background:#1a1a1a !important; }
html.mur-blanc .fill.dim, html.mur-blanc .fill.peak { background:#9a9a9a !important; }
