/* tuning.css : la home « relevé au plein ».
   Aucune teinte propre : tout vient de da.css (--c-*) et de global.css (--color-primary-*).
   Grammaire commune à toutes les sections : pastille, titre surligné jaune, carte à filet, chiffres en Space Grotesk. */

/* ---------- En-tête de la home : le bandeau défilant (titres coupés aux bords) est masqué,
   ses liens sont tous repris dans « À la une » ; l'en-tête garde sa barre de 64 px. ---------- */
[data-bandeau], .announcement-bar { display: none !important; }
html:root { --header-h: 64px !important; }

/* ---------- Grammaire ---------- */
.tn-kicker {
  display: inline-flex; align-items: center; gap: .55rem; width: fit-content;
  padding: .32rem .8rem .32rem .55rem; border-radius: 999px;
  background: var(--c-surface); box-shadow: inset 0 0 0 1px var(--c-bord);
  color: var(--c-primaire-texte); font: 600 .72rem/1.2 var(--f-texte);
  letter-spacing: .12em; text-transform: uppercase;
}
.tn-kicker-point {
  width: .5rem; height: .5rem; border-radius: 999px; background: var(--c-primaire);
  box-shadow: 0 0 0 3px var(--c-doux); flex: none;
}
.tn-mark {
  color: inherit; padding: 0 .06em;
  background: linear-gradient(transparent 60%, var(--c-primaire) 60%, var(--c-primaire) 90%, transparent 90%);
  -webkit-box-decoration-break: clone; box-decoration-break: clone;
}
.tn-h1, .tn-h2 { font-family: var(--f-titre); color: var(--c-texte); text-wrap: balance; }
.tn-h2 {
  font-weight: 700; font-size: clamp(1.85rem, 1.1rem + 2.1vw, 2.75rem);
  line-height: 1.08; letter-spacing: -.025em; max-width: 24ch;
}
.tn-lead { font-size: 1.0625rem; line-height: 1.75; color: var(--c-texte-2); max-width: 58ch; }
.tn-texte { font-size: .95rem; line-height: 1.65; color: var(--c-texte-2); }
.tn-petit { font-size: .8rem; color: var(--c-texte-2); }
.tn-ico { color: var(--c-primaire-texte); flex: none; }
.tn-lien {
  display: inline-flex; align-items: center; gap: .35rem; font-weight: 600; font-size: .95rem;
  color: var(--c-texte); transition: color .2s;
}
.tn-lien:hover { color: var(--c-primaire-texte); }

.tn-sec { padding-block: clamp(4.5rem, 8vw, 7rem); }
.tn-tete { display: grid; gap: 1rem; margin-bottom: clamp(2.25rem, 4vw, 3.25rem); }
.tn-tete--ligne { display: flex; flex-wrap: wrap; align-items: flex-end; justify-content: space-between; gap: 1.25rem 3rem; }
.tn-tete--ligne > div { display: grid; gap: 1rem; }
.tn-tete--ligne > .tn-lead { margin: 0; max-width: 40ch; }
.tn-lavis { background: var(--c-fond-2); box-shadow: 0 0 0 100vmax var(--c-fond-2); clip-path: inset(0 -100vmax); }

.tn-carte {
  position: relative; background: var(--c-surface); border-radius: var(--r-carte);
  box-shadow: inset 0 0 0 1px var(--c-bord); transition: box-shadow .25s, transform .25s;
}
.tn-carte:has(.tn-etire):hover { box-shadow: inset 0 0 0 1px var(--c-primaire-texte), var(--o-survol); transform: translateY(-2px); }
.tn-etire::after { content: ""; position: absolute; inset: 0; border-radius: inherit; z-index: 1; }
.tn-dessus { position: relative; z-index: 2; }
.tn-meta { display: flex; flex-wrap: wrap; align-items: center; gap: .4rem .8rem; font: 500 .8rem var(--f-texte); color: var(--c-texte-2); }
.tn-meta time, .tn-meta > span { font-family: ui-monospace, SFMono-Regular, Menlo, monospace; font-size: .75rem; }

.tn-plaque {
  display: grid; align-content: end; gap: .35rem; padding: 1.5rem;
  background: var(--c-doux); border-radius: calc(var(--r-carte) - 1px) calc(var(--r-carte) - 1px) 0 0;
}
.tn-plaque-chiffre { font: 700 clamp(2.6rem, 2rem + 2vw, 3.6rem)/1 var(--f-titre); letter-spacing: -.03em; color: var(--c-texte); }
.tn-plaque-libelle { font-size: .9rem; color: var(--c-primaire-texte); font-weight: 500; }

.tn-jauge { display: grid; grid-template-columns: 1fr auto; align-items: center; gap: .75rem; }
.tn-jauge-piste { display: block; height: .4rem; border-radius: 999px; background: var(--c-fond-2); overflow: hidden; }
.tn-jauge-piste i { display: block; height: 100%; width: calc(var(--v, 0) * 100%); background: var(--c-primaire); border-radius: inherit; transition: width 1s cubic-bezier(.2, .7, .2, 1); }
.tn-jauge-val { font-size: .85rem; color: var(--c-texte-2); white-space: nowrap; }
.tn-jauge-val strong { font: 700 1.05rem var(--f-titre); color: var(--c-texte); }

.tn-releve-badge {
  display: inline-flex; align-items: center; padding: .15rem .55rem; border-radius: 999px;
  background: var(--c-primaire); color: var(--c-sur-primaire); font: 700 .68rem/1.4 var(--f-texte);
  letter-spacing: .1em; text-transform: uppercase; flex: none;
}
.tn-fiche-titre { display: flex; align-items: center; gap: .45rem; font: 600 .72rem var(--f-texte); letter-spacing: .12em; text-transform: uppercase; color: var(--c-texte-2); }

/* ---------- 01. Hero ---------- */
.tn-hero { display: flex; align-items: center; padding-block: clamp(2rem, 5vh, 3.5rem); }
.tn-hero > div { width: 100%; }
.tn-hero-in { display: grid; grid-template-columns: minmax(0, 1fr); gap: 3rem; align-items: center; }
.tn-hero-copie { min-width: 0; display: grid; gap: 1.5rem; justify-items: start; }
html:root .tn-h1 {
  font-family: var(--f-titre); font-weight: 700; letter-spacing: -.035em; line-height: 1.02;
  font-size: clamp(2.35rem, 1rem + 3.2vw, 3.45rem); max-width: 17ch; margin: 0;
}
.tn-chapeau { font-size: 1.125rem; line-height: 1.7; color: var(--c-texte-2); max-width: 46ch; }
.tn-actions { display: flex; flex-wrap: wrap; gap: .75rem; }
.tn-reperes { display: flex; gap: 0; margin-top: .5rem; border-top: 1px solid var(--c-bord); padding-top: 1.25rem; }
.tn-reperes li { display: grid; gap: .15rem; padding-right: 1.75rem; margin-right: 1.75rem; border-right: 1px solid var(--c-bord); }
.tn-reperes li:last-child { border-right: 0; margin-right: 0; padding-right: 0; }
.tn-reperes strong { font: 700 1.6rem/1 var(--f-titre); color: var(--c-texte); letter-spacing: -.02em; }
.tn-reperes span { font-size: .82rem; color: var(--c-texte-2); }

.tn-releve { position: relative; min-width: 0; width: 100%; max-width: 660px; justify-self: center; }
.tn-releve-photo { position: relative; margin: 0; width: 64%; border-radius: var(--r-image); overflow: hidden; box-shadow: var(--o-carte); }
.tn-releve-photo img { display: block; width: 100%; height: auto; aspect-ratio: 4 / 5; object-fit: cover; }
.tn-releve-etat {
  position: absolute; left: .85rem; top: .85rem; right: .85rem; display: flex; align-items: center; gap: .55rem; width: fit-content; max-width: calc(100% - 1.7rem);
  padding: .4rem .75rem .4rem .45rem; border-radius: 999px; background: var(--c-surface); color: var(--c-texte);
  font: 600 .8rem/1.25 var(--f-texte); box-shadow: 0 6px 18px -8px color-mix(in srgb, var(--c-ombre) 40%, transparent);
}
.tn-releve-fiche {
  position: absolute; right: 0; top: 9%; width: 46%; min-width: 270px;
  background: var(--c-surface); border-radius: var(--r-carte); padding: 1.1rem 1.1rem 1rem;
  box-shadow: inset 0 0 0 1px var(--c-bord), var(--o-carte);
}
.tn-fiche-tete { display: flex; align-items: baseline; justify-content: space-between; gap: 1rem; padding-bottom: .7rem; border-bottom: 1px solid var(--c-bord); }
.tn-fiche-km { font: 700 1.35rem/1 var(--f-titre); color: var(--c-texte); font-variant-numeric: tabular-nums; }
.tn-segs { display: grid; gap: .15rem; padding-block: .55rem; }
.tn-seg {
  display: grid; grid-template-columns: minmax(0, 1fr) auto; column-gap: .75rem; row-gap: .3rem;
  padding: .45rem .5rem; margin-inline: -.5rem; border-radius: calc(var(--r-carte) - 2px);
  transition: background .3s, opacity .3s; cursor: default;
}
.tn-seg-nom { font: 600 .84rem/1.2 var(--f-texte); color: var(--c-texte); }
.tn-seg-km { grid-column: 1; font: 500 .72rem/1.2 ui-monospace, SFMono-Regular, Menlo, monospace; color: var(--c-texte-2); }
.tn-seg-val { grid-column: 2; grid-row: 1 / span 2; align-self: center; font: 700 1.15rem/1 var(--f-titre); color: var(--c-texte); font-variant-numeric: tabular-nums; white-space: nowrap; }
.tn-seg-val small { font: 500 .68rem var(--f-texte); color: var(--c-texte-2); margin-left: .15rem; }
.tn-seg-barre { grid-column: 1 / -1; height: .3rem; border-radius: 999px; background: var(--c-fond-2); overflow: hidden; }
.tn-seg-barre i { display: block; height: 100%; width: calc(var(--v) * 100%); background: var(--c-primaire); border-radius: inherit; transition: width .9s cubic-bezier(.2, .7, .2, 1); }
.tn-seg.est-active { background: var(--c-doux); }
.tn-seg.est-active .tn-seg-barre i { background: var(--c-primaire-texte); }
.tn-releve.tn-joue .tn-seg:not(.est-roule) { opacity: .4; }
.tn-releve.tn-joue .tn-seg:not(.est-roule) .tn-seg-barre i { width: 0; }
.tn-fiche-pied { display: grid; grid-template-columns: auto auto 1fr; align-items: end; gap: 1.1rem; padding-top: .75rem; border-top: 1px solid var(--c-bord); }
.tn-fiche-pied p { display: grid; gap: .15rem; }
.tn-fiche-pied span { font: 600 .66rem var(--f-texte); letter-spacing: .1em; text-transform: uppercase; color: var(--c-texte-2); }
.tn-fiche-pied strong { font: 700 1.6rem/1 var(--f-titre); color: var(--c-texte-2); font-variant-numeric: tabular-nums; }
.tn-fiche-releve strong { color: var(--c-texte); }
.tn-ecart {
  justify-self: end; align-self: center; padding: .3rem .6rem; border-radius: 999px;
  background: var(--c-doux); color: var(--c-primaire-texte); font: 700 .78rem var(--f-texte); white-space: nowrap;
  transition: background .3s, color .3s;
}
.tn-releve.tn-joue:not(.est-fini) .tn-fiche-releve strong, .tn-releve.tn-joue:not(.est-fini) .tn-ecart { opacity: .35; }
.tn-releve.est-fini .tn-ecart { background: var(--c-primaire); color: var(--c-sur-primaire); }
.tn-fiche-lien { display: flex; align-items: center; justify-content: space-between; margin-top: .85rem; padding: .6rem .75rem; border-radius: var(--r-bouton); background: var(--c-fond-2); font: 600 .85rem var(--f-texte); color: var(--c-texte); transition: background .2s, color .2s; }
.tn-fiche-lien:hover { background: var(--c-primaire); color: var(--c-sur-primaire); }

@media (min-width: 1100px) {
  .tn-hero-in { grid-template-columns: minmax(0, 1fr) minmax(0, 600px); gap: 4rem; }
  .tn-releve { justify-self: end; }
}
@media (max-width: 1099px) and (min-width: 701px) {
  .tn-hero-copie { max-width: 640px; }
}
@media (max-width: 700px) {
  .tn-hero { padding-block: 1.25rem 3rem; min-height: 0 !important; }
  .tn-hero-in { gap: 2.25rem; }
  .tn-hero-copie { gap: 1.1rem; }
  html:root .tn-h1 { font-size: 2.3rem; max-width: none; }
  .tn-chapeau { font-size: 1rem; line-height: 1.6; }
  .tn-reperes { margin-top: 0; padding-top: 1rem; }
  .tn-reperes li { padding-right: .9rem; margin-right: .9rem; }
  .tn-reperes strong { font-size: 1.3rem; }
  .tn-reperes span { font-size: .76rem; }
  .tn-kicker { font-size: .66rem; letter-spacing: .1em; }
  .tn-releve-photo { width: 100%; }
  .tn-releve-fiche { position: relative; top: auto; right: auto; width: auto; min-width: 0; margin: -3.5rem .75rem 0; }
}

/* ---------- 02. Preuves ---------- */
.tn-preuves-grille { display: grid; gap: 2.5rem; align-items: center; }
.tn-preuves .tn-tete { margin-bottom: 0; }
.tn-note { display: flex; flex-wrap: wrap; align-items: center; gap: .6rem; font-size: .9rem; color: var(--c-texte-2); }
.tn-note strong { color: var(--c-texte); }
.tn-compteurs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.tn-compteur { display: grid; gap: .5rem; padding: 1.4rem 1.4rem 1.3rem; align-content: start; }
.tn-compteur strong { font: 700 clamp(2rem, 1.5rem + 1.4vw, 2.75rem)/1 var(--f-titre); letter-spacing: -.03em; color: var(--c-texte); font-variant-numeric: tabular-nums; }
.tn-compteur span { font-size: .88rem; color: var(--c-texte-2); line-height: 1.45; }
.tn-marques { margin-top: clamp(2.5rem, 5vw, 3.5rem); padding-top: 1.75rem; border-top: 1px solid var(--c-bord); display: grid; gap: 1.25rem; }
.tn-marques-titre { font: 600 .72rem var(--f-texte); letter-spacing: .12em; text-transform: uppercase; color: var(--c-texte-2); }
.tn-marques ul { display: flex; flex-wrap: wrap; align-items: center; justify-content: space-between; gap: 1.5rem 2.5rem; }
.tn-marques img { height: 1.9rem; width: auto; object-fit: contain; filter: brightness(0); opacity: .55; transition: opacity .25s; }
.tn-marques img:hover { opacity: .9; }
/* logo dessiné sur un fond plein : une silhouette en ferait un pavé, il reste en niveaux de gris */
.tn-marques img[alt="Euromaster"] { filter: grayscale(1); opacity: .7; }
@media (min-width: 900px) { .tn-preuves-grille { grid-template-columns: minmax(0, 5fr) minmax(0, 6fr); gap: 4rem; } }

/* ---------- 03. À la une ---------- */
.tn-une-grille { display: grid; gap: 1.25rem; }
.tn-une-lead { display: grid; grid-template-rows: auto 1fr; }
.tn-une-lead .tn-plaque { min-height: 13rem; }
.tn-une-corps { display: grid; gap: .8rem; align-content: start; padding: 1.5rem; }
.tn-une-titre { font: 700 1.5rem/1.2 var(--f-titre); letter-spacing: -.02em; color: var(--c-texte); }
.tn-une-liste { display: grid; gap: 1.25rem; }
.tn-une-ligne { display: grid; grid-template-columns: 8.5rem minmax(0, 1fr); gap: 1.25rem; padding: .85rem; align-items: center; }
.tn-une-vignette { width: 100%; aspect-ratio: 1 / 1; object-fit: cover; border-radius: calc(var(--r-carte) - 2px); display: block; }
.tn-une-vignette--plaque { display: grid; place-items: center; background: var(--c-doux); }
.tn-une-vignette--plaque span { font: 700 1.5rem var(--f-titre); color: var(--c-texte); }
.tn-une-ligne-corps { display: grid; gap: .45rem; min-width: 0; }
.tn-une-ligne-titre { font: 700 1.1rem/1.3 var(--f-titre); color: var(--c-texte); letter-spacing: -.01em; }
.tn-repere { font-size: .85rem; color: var(--c-texte-2); }
.tn-repere strong { font-family: var(--f-titre); color: var(--c-primaire-texte); margin-right: .2rem; }
@media (min-width: 900px) { .tn-une-grille { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); } }
@media (max-width: 520px) { .tn-une-ligne { grid-template-columns: 5.5rem minmax(0, 1fr); gap: .9rem; } }

/* ---------- 04. Rubriques ---------- */
.tn-rub-grille { display: grid; gap: 1.25rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 19rem), 1fr)); }
.tn-rub { display: grid; grid-template-rows: auto 1fr; overflow: hidden; }
.tn-rub-photo { width: 100%; aspect-ratio: 3 / 2; object-fit: cover; display: block; }
.tn-rub-corps { display: grid; gap: .75rem; align-content: start; padding: 1.25rem 1.35rem 1.4rem; }
.tn-rub-nom { display: flex; align-items: center; gap: .5rem; font: 700 1.2rem var(--f-titre); color: var(--c-texte); }
.tn-rub-dernier { display: grid; gap: .2rem; padding-top: .75rem; border-top: 1px solid var(--c-bord); font-size: .88rem; }
.tn-rub-dernier span { font: 600 .66rem var(--f-texte); letter-spacing: .12em; text-transform: uppercase; color: var(--c-texte-2); }
.tn-rub-dernier a { color: var(--c-texte); font-weight: 500; }
.tn-rub-dernier a:hover { color: var(--c-primaire-texte); }
.tn-rub--tout .tn-plaque { aspect-ratio: 3 / 2; border-radius: 0; }

/* ---------- 05. Méthode ---------- */
.tn-methode-grille { display: grid; gap: 2rem; align-items: start; }
.tn-methode-photo { position: relative; margin: 0; border-radius: var(--r-image); overflow: hidden; box-shadow: var(--o-carte); }
.tn-methode-photo img { display: block; width: 100%; aspect-ratio: 5 / 4; object-fit: cover; transition: opacity .35s; }
.tn-methode-photo img.est-change { opacity: .15; }
.tn-methode-legende { position: absolute; left: .85rem; bottom: .85rem; display: flex; align-items: center; gap: .55rem; padding: .4rem .8rem .4rem .45rem; border-radius: 999px; background: var(--c-surface); font: 600 .82rem var(--f-texte); color: var(--c-texte); }
.tn-etapes { position: relative; display: grid; gap: .5rem; }
.tn-etape {
  position: relative; display: grid; grid-template-columns: 3rem minmax(0, 1fr); gap: 1rem; padding: 1.1rem 1.1rem 1.1rem .9rem;
  border-radius: var(--r-carte); transition: background .3s, box-shadow .3s; cursor: pointer;
}
.tn-etape-num { font: 700 1.5rem/1.1 var(--f-titre); color: var(--c-texte-2); transition: color .3s; }
.tn-etape-titre { font: 700 1.1rem/1.3 var(--f-titre); color: var(--c-texte); margin-bottom: .35rem; }
.tn-etape-tag { display: inline-flex; margin-top: .6rem; padding: .12rem .55rem; border-radius: 999px; background: var(--c-doux); color: var(--c-primaire-texte); font: 600 .72rem var(--f-texte); }
.tn-etape.est-active { background: var(--c-surface); box-shadow: inset 0 0 0 1px var(--c-bord), var(--o-carte); }
.tn-etape.est-active .tn-etape-num { color: var(--c-primaire-texte); }
.tn-etape::before { content: ""; position: absolute; left: 0; top: 1rem; bottom: 1rem; width: 3px; border-radius: 3px; background: transparent; transition: background .3s; }
.tn-etape.est-active::before { background: var(--c-primaire); }
.tn-fiche-ligne { display: flex; align-items: center; gap: .6rem; margin-top: 2rem; padding: .9rem 1.1rem; border-radius: var(--r-carte); background: var(--c-doux); color: var(--c-texte); font-weight: 500; font-size: .95rem; }
@media (min-width: 900px) { .tn-methode-grille { grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: 3.5rem; } .tn-methode-photo { position: sticky; top: calc(var(--header-h) + 2rem); } }

/* ---------- 06. Consommation ---------- */
.tn-conso-grille { display: grid; gap: 1.5rem; align-items: start; }
.tn-conso-profils { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem; }
.tn-onglet {
  display: grid; gap: .2rem; text-align: left; padding: .9rem 1rem; border-radius: var(--r-carte); cursor: pointer;
  background: var(--c-surface); box-shadow: inset 0 0 0 1px var(--c-bord); color: var(--c-texte); transition: box-shadow .2s, background .2s;
}
.tn-onglet-nom { font: 700 1.05rem var(--f-titre); }
.tn-onglet-note { font-size: .8rem; color: var(--c-texte-2); line-height: 1.4; }
.tn-onglet[aria-selected="true"] { background: var(--c-doux); box-shadow: inset 0 0 0 2px var(--c-primaire-texte); }
.tn-onglet:hover { box-shadow: inset 0 0 0 1px var(--c-primaire-texte); }
.tn-conso-panneaux { display: grid; gap: 1rem; }
.tn-conso-panneau { padding: 1.5rem; display: grid; gap: 1.1rem; }
.tn-js .tn-conso-panneau:not(.est-visible) { display: none; }
.tn-conso-titre { font: 700 1.2rem var(--f-titre); color: var(--c-texte); }
.tn-conso-titre span { font: 500 .9rem var(--f-texte); color: var(--c-texte-2); }
.tn-barres { display: grid; gap: .9rem; }
.tn-barre { display: grid; grid-template-columns: 6.5rem minmax(0, 1fr) 9.5rem; align-items: center; gap: 1rem; }
.tn-barre-nom { font-weight: 600; font-size: .92rem; color: var(--c-texte); }
.tn-barre-piste { height: .8rem; border-radius: 999px; background: var(--c-fond-2); overflow: hidden; }
.tn-barre-piste i { display: block; height: 100%; width: calc(var(--v) * 100%); background: var(--color-primary-300); border-radius: inherit; transition: width .8s cubic-bezier(.2, .7, .2, 1); }
.tn-barre.est-mini .tn-barre-piste i { background: var(--c-primaire-texte); }
.tn-conso-panneau.est-entrant .tn-barre-piste i { width: 0; }
.tn-barre-val { display: grid; justify-items: end; line-height: 1.2; }
.tn-barre-val strong { font: 700 1.05rem var(--f-titre); color: var(--c-texte); font-variant-numeric: tabular-nums; }
.tn-barre-val small { font-size: .74rem; color: var(--c-texte-2); }
.tn-conso-bilan { padding-top: 1rem; border-top: 1px solid var(--c-bord); font-size: .92rem; color: var(--c-texte-2); }
.tn-conso-bilan strong { font-family: var(--f-titre); color: var(--c-texte); font-size: 1.05rem; }
@media (min-width: 900px) { .tn-conso-grille { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 2rem; } .tn-conso-profils { grid-template-columns: minmax(0, 1fr); } }
@media (max-width: 560px) { .tn-barre { grid-template-columns: 5.2rem minmax(0, 1fr); } .tn-barre-val { grid-column: 1 / -1; justify-items: start; grid-auto-flow: column; justify-content: start; gap: .5rem; align-items: baseline; } }

/* ---------- 07. Seuils ---------- */
.tn-seuils-grille { display: grid; gap: 1.25rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15.5rem), 1fr)); }
.tn-seuil { display: grid; gap: .7rem; padding: 1.35rem; align-content: start; }
.tn-seuil-titre { font: 700 1.1rem var(--f-titre); color: var(--c-texte); }
.tn-seuil-valeur { font-size: .95rem; color: var(--c-texte-2); }
.tn-seuil-valeur strong { font: 700 2.4rem/1 var(--f-titre); color: var(--c-texte); letter-spacing: -.03em; font-variant-numeric: tabular-nums; }
.tn-seuil-verdict { width: fit-content; padding: .2rem .65rem; border-radius: 999px; background: var(--c-doux); color: var(--c-primaire-texte); font: 700 .8rem var(--f-texte); }
.tn-seuil.est-mauvais .tn-seuil-verdict { background: var(--c-texte); color: var(--c-surface); }
.tn-seuil-cadran { position: relative; height: .7rem; margin-top: .35rem; border-radius: 999px; background: var(--c-doux); }
.tn-bande { position: absolute; top: 0; bottom: 0; background: var(--c-doux); }
.tn-bande.est-mauvais { background: var(--c-secondaire); opacity: .55; }
.tn-bande:first-child { border-radius: 999px 0 0 999px; }
.tn-bande:last-of-type { border-radius: 0 999px 999px 0; }
.tn-seuil-curseur { position: absolute; top: 50%; left: var(--pos); width: 1.1rem; height: 1.1rem; margin: -.55rem 0 0 -.55rem; border-radius: 999px; background: var(--c-texte); box-shadow: 0 0 0 3px var(--c-surface); transition: left .35s cubic-bezier(.2, .7, .2, 1); }
.tn-seuil-label { display: grid; gap: .35rem; font-size: .8rem; color: var(--c-texte-2); }
.tn-seuil-label input[type="range"] { width: 100%; accent-color: var(--c-primaire-texte); }
.tn-seuil-lien { display: flex; align-items: center; justify-content: space-between; gap: .5rem; padding-top: .75rem; border-top: 1px solid var(--c-bord); font: 600 .86rem var(--f-texte); color: var(--c-texte); }
.tn-seuil-lien:hover { color: var(--c-primaire-texte); }

/* ---------- 08. Carnet ---------- */
.tn-carnet-grille { display: grid; gap: 1.5rem; align-items: start; }
.tn-compteur-km { padding: 1.5rem; display: grid; gap: 1rem; }
.tn-odo { display: flex; align-items: baseline; gap: .25rem; }
.tn-odo span { display: inline-grid; place-items: center; width: 2.3rem; height: 3rem; border-radius: .35rem; background: var(--c-texte); color: var(--c-surface); font: 700 1.8rem/1 var(--f-titre); font-variant-numeric: tabular-nums; }
.tn-odo span:nth-child(n+5) { background: var(--c-primaire); color: var(--c-sur-primaire); }
.tn-odo small { margin-left: .4rem; font: 600 .9rem var(--f-texte); color: var(--c-texte-2); }
.tn-carnet-bilan { display: grid; gap: .75rem; padding-top: 1rem; border-top: 1px solid var(--c-bord); }
.tn-carnet-bilan div { display: flex; justify-content: space-between; align-items: baseline; gap: 1rem; }
.tn-carnet-bilan dt { font-size: .85rem; color: var(--c-texte-2); }
.tn-carnet-bilan dd { font: 700 1rem var(--f-titre); color: var(--c-texte); text-align: right; }
.tn-jalons { display: grid; gap: .5rem; }
.tn-jalon {
  display: grid; grid-template-columns: 1.6rem 6.2rem minmax(0, 1fr) auto; align-items: center; gap: .3rem .9rem;
  padding: .75rem 1rem; border-radius: var(--r-carte); background: var(--c-surface); box-shadow: inset 0 0 0 1px var(--c-bord); transition: box-shadow .3s, background .3s;
}
.tn-jalon-coche { display: grid; place-items: center; width: 1.6rem; height: 1.6rem; border-radius: 999px; box-shadow: inset 0 0 0 1.5px var(--c-bord); color: transparent; transition: background .3s, color .3s; }
.tn-jalon.est-fait .tn-jalon-coche { background: var(--c-primaire); color: var(--c-sur-primaire); box-shadow: none; }
.tn-jalon-km { font: 600 .8rem ui-monospace, SFMono-Regular, Menlo, monospace; color: var(--c-texte-2); }
.tn-jalon-titre { font-weight: 600; color: var(--c-texte); font-size: .95rem; }
.tn-jalon-cout { font: 700 .9rem var(--f-titre); color: var(--c-texte); white-space: nowrap; }
.tn-jalon-detail { display: none; grid-column: 3 / -1; font-size: .87rem; line-height: 1.55; color: var(--c-texte-2); }
.tn-jalon.est-prochain { box-shadow: inset 0 0 0 2px var(--c-primaire-texte); }
.tn-jalon.est-prochain .tn-jalon-detail { display: block; }
.tn-jalon.est-fait .tn-jalon-titre { color: var(--c-texte-2); }
.tn-saisons { margin-top: 2.5rem; display: grid; gap: 1rem; }
.tn-saisons ul { display: grid; gap: 1rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 15rem), 1fr)); }
.tn-saison { padding: 1.2rem; display: grid; gap: .5rem; align-content: start; }
.tn-saison-nom { display: flex; align-items: center; gap: .45rem; font: 700 1rem var(--f-titre); color: var(--c-texte); }
.tn-saison-maintenant { display: none; margin-left: auto; padding: .1rem .5rem; border-radius: 999px; background: var(--c-primaire); color: var(--c-sur-primaire); font: 700 .62rem var(--f-texte); letter-spacing: .08em; text-transform: uppercase; }
.tn-saison.est-maintenant { box-shadow: inset 0 0 0 2px var(--c-primaire-texte); }
.tn-saison.est-maintenant .tn-saison-maintenant { display: inline-flex; }
@media (min-width: 900px) { .tn-carnet-grille { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 2rem; } .tn-compteur-km { position: sticky; top: calc(var(--header-h) + 2rem); } }
@media (max-width: 560px) {
  .tn-jalon { grid-template-columns: 1.6rem minmax(0, 1fr) auto; }
  .tn-jalon-km { grid-column: 2; grid-row: 1; }
  .tn-jalon-titre { grid-column: 2 / -1; }
  .tn-jalon-cout { grid-column: 3; grid-row: 1; }
  .tn-jalon-detail { grid-column: 2 / -1; }
  .tn-odo span { width: 1.95rem; height: 2.6rem; font-size: 1.5rem; }
}

/* ---------- 09. Erreurs ---------- */
.tn-tableau { overflow: hidden; }
.tn-tableau-tete, .tn-tableau-ligne { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); }
.tn-tableau-tete span { padding: .9rem 1.4rem; font: 600 .72rem var(--f-texte); letter-spacing: .12em; text-transform: uppercase; color: var(--c-texte-2); background: var(--c-fond-2); }
.tn-tableau-tete span + span { background: var(--c-doux); color: var(--c-primaire-texte); }
.tn-tableau-ligne { border-top: 1px solid var(--c-bord); transition: background .2s; }
.tn-tableau-ligne > span { display: flex; align-items: flex-start; gap: .65rem; padding: 1.1rem 1.4rem; font-size: .95rem; line-height: 1.55; }
.tn-avant { color: var(--c-texte-2); }
.tn-avant > span:last-child { text-decoration: line-through; text-decoration-color: color-mix(in srgb, var(--c-texte-2) 45%, transparent); }
.tn-apres { color: var(--c-texte); border-left: 1px solid var(--c-bord); }
.tn-tableau-num { font: 700 .85rem var(--f-titre); color: var(--c-texte-2); min-width: 1.4rem; padding-top: .1rem; }
.tn-ico-avant { color: var(--c-secondaire); flex: none; margin-top: .2rem; }
.tn-apres .tn-ico { margin-top: .2rem; }
.tn-tableau-ligne:hover { background: var(--c-fond); }
.tn-tableau-ligne:hover .tn-avant > span:last-child { text-decoration-color: var(--c-secondaire); }
@media (max-width: 700px) {
  .tn-tableau-tete { display: none; }
  .tn-tableau-ligne { grid-template-columns: minmax(0, 1fr); }
  .tn-apres { border-left: 0; padding-top: 0 !important; padding-left: 3.5rem !important; }
}

/* ---------- 10. Budget ---------- */
.tn-budget-grille { display: grid; gap: 1.5rem; align-items: start; }
.tn-budget-photo { margin: 0; display: grid; gap: 1rem; }
.tn-budget-photo img { width: 100%; aspect-ratio: 4 / 5; object-fit: cover; object-position: 55% 50%; border-radius: var(--r-image); box-shadow: var(--o-carte); display: block; }
.tn-calcul { padding: 1.5rem; display: grid; gap: 1.4rem; }
.tn-champs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.tn-champs label { display: grid; gap: .35rem; font-size: .82rem; font-weight: 500; color: var(--c-texte-2); }
.tn-champs input { width: 100%; padding: .6rem .75rem; border-radius: var(--r-bouton); border: 1px solid var(--c-bord); background: var(--c-surface); font: 600 1rem var(--f-texte); color: var(--c-texte); }
.tn-champs input:focus { outline: 2px solid var(--c-primaire-texte); outline-offset: 1px; }
.tn-calcul-resultat { display: grid; grid-template-columns: 1.4fr 1fr; gap: 1rem; padding: 1.1rem 1.25rem; border-radius: var(--r-carte); background: var(--c-doux); }
.tn-calcul-resultat p { display: grid; gap: .25rem; }
.tn-calcul-resultat span { font: 600 .7rem var(--f-texte); letter-spacing: .12em; text-transform: uppercase; color: var(--c-primaire-texte); }
.tn-calcul-resultat output { font: 700 2.2rem/1 var(--f-titre); color: var(--c-texte); letter-spacing: -.02em; font-variant-numeric: tabular-nums; }
.tn-calcul-km output { font-size: 1.6rem; }
.tn-pile { display: flex; height: .9rem; border-radius: 999px; overflow: hidden; gap: 2px; background: var(--c-fond-2); }
.tn-pile i { display: block; flex-basis: 0; transition: flex-grow .5s; }
.tn-pile [data-poste="assurance"], .tn-pile-legende [data-poste="assurance"] .tn-pastille-couleur { background: var(--c-texte); }
.tn-pile [data-poste="entretien"], .tn-pile-legende [data-poste="entretien"] .tn-pastille-couleur { background: var(--c-primaire-texte); }
.tn-pile [data-poste="equipement"], .tn-pile-legende [data-poste="equipement"] .tn-pastille-couleur { background: var(--c-secondaire); }
.tn-pile [data-poste="carburant"], .tn-pile-legende [data-poste="carburant"] .tn-pastille-couleur { background: var(--c-primaire); }
.tn-pile-legende { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: .6rem 1.25rem; }
.tn-pile-legende li { display: flex; align-items: center; gap: .5rem; font-size: .85rem; color: var(--c-texte-2); }
.tn-pile-legende strong { margin-left: auto; font: 700 .92rem var(--f-titre); color: var(--c-texte); font-variant-numeric: tabular-nums; }
.tn-pastille-couleur { width: .7rem; height: .7rem; border-radius: 3px; flex: none; }
@media (min-width: 900px) { .tn-budget-grille { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 2.5rem; } }
@media (max-width: 520px) { .tn-champs, .tn-pile-legende { grid-template-columns: minmax(0, 1fr); } .tn-calcul-resultat output { font-size: 1.8rem; } }

/* ---------- 11. Équipe ---------- */
.tn-equipe-grille { display: grid; gap: 1.5rem; align-items: start; }
.tn-equipe-photo { position: relative; margin: 0; border-radius: var(--r-image); overflow: hidden; box-shadow: var(--o-carte); }
.tn-equipe-photo img { display: block; width: 100%; aspect-ratio: 3 / 4; object-fit: cover; }
.tn-equipe-photo .tn-releve-etat { top: auto; bottom: .85rem; }
.tn-auteurs { display: grid; gap: .75rem; }
.tn-auteur { display: grid; grid-template-columns: 4.5rem minmax(0, 1fr) 8.5rem; gap: 1.1rem; align-items: center; padding: 1rem 1.2rem; }
.tn-auteur-portrait { width: 4.5rem; height: 4.5rem; box-shadow: 0 0 0 1px var(--c-bord); }
.tn-auteur-corps { display: grid; gap: .15rem; }
.tn-auteur-nom { font: 700 1.05rem var(--f-titre); color: var(--c-texte); }
.tn-auteur-role { font: 600 .78rem var(--f-texte); color: var(--c-primaire-texte); margin-bottom: .25rem; }
.tn-auteur .tn-texte { font-size: .87rem; line-height: 1.55; }
.tn-auteur-compte { display: grid; gap: .3rem; justify-items: start; }
.tn-auteur-compte strong { font: 700 1.7rem/1 var(--f-titre); color: var(--c-texte); }
.tn-auteur-compte span:not(.tn-jauge-piste) { font-size: .76rem; color: var(--c-texte-2); }
.tn-auteur-compte .tn-jauge-piste { width: 100%; }
.tn-auteur-domaine { align-self: center; justify-self: start; padding: .25rem .65rem; border-radius: 999px; background: var(--c-doux); color: var(--c-primaire-texte); font: 600 .75rem/1.3 var(--f-texte); }
@media (min-width: 900px) { .tn-equipe-grille { grid-template-columns: minmax(0, 4fr) minmax(0, 8fr); gap: 2rem; } .tn-equipe-photo { position: sticky; top: calc(var(--header-h) + 2rem); } }
@media (max-width: 700px) {
  .tn-equipe-photo { max-width: 22rem; }
  .tn-auteur { grid-template-columns: 3.5rem minmax(0, 1fr); }
  .tn-auteur-portrait { width: 3.5rem; height: 3.5rem; }
  .tn-auteur-compte { grid-column: 2; grid-template-columns: auto auto 1fr; align-items: center; gap: .6rem; }
  .tn-auteur-compte strong { font-size: 1.2rem; }
}

/* ---------- 12. Avis ---------- */
.tn-avis-grille { display: grid; gap: 2rem; align-items: start; }
.tn-avis .tn-tete { margin-bottom: 0; }
.tn-avis-note { display: flex; align-items: center; gap: 1rem; margin-block: .5rem; }
.tn-avis-chiffre { font: 700 4.2rem/1 var(--f-titre); letter-spacing: -.04em; color: var(--c-texte); font-variant-numeric: tabular-nums; }
.tn-avis-liste { display: grid; gap: 1.25rem; grid-template-columns: repeat(auto-fill, minmax(min(100%, 17rem), 1fr)); }
.tn-avis-carte { display: grid; gap: .8rem; padding: 1.35rem; align-content: start; }
.tn-avis-carte blockquote { margin: 0; color: var(--c-texte); }
.tn-avis-auteur { font: 600 .88rem var(--f-texte); color: var(--c-texte); }
.tn-avis-article { display: grid; gap: .15rem; padding-top: .75rem; border-top: 1px solid var(--c-bord); font: 600 .88rem/1.35 var(--f-texte); color: var(--c-primaire-texte); }
.tn-avis-article span { font: 600 .66rem var(--f-texte); letter-spacing: .12em; text-transform: uppercase; color: var(--c-texte-2); }
.tn-avis-article:hover { color: var(--c-texte); }
@media (min-width: 900px) { .tn-avis-grille { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 3rem; } }

/* ---------- 13. FAQ ---------- */
.tn-faq-grille { display: grid; gap: 2rem; align-items: start; }
.tn-faq .tn-tete { margin-bottom: 0; }
.tn-faq-liste { display: grid; gap: .75rem; }
.tn-question summary { display: grid; grid-template-columns: 2.2rem minmax(0, 1fr) auto; align-items: center; gap: .75rem; padding: 1.1rem 1.25rem; cursor: pointer; list-style: none; }
.tn-question summary::-webkit-details-marker { display: none; }
.tn-question-num { font: 700 1rem var(--f-titre); color: var(--c-primaire-texte); }
.tn-question-texte { font: 600 1.02rem/1.4 var(--f-titre); color: var(--c-texte); }
.tn-question-ico { transition: transform .25s; }
.tn-question[open] .tn-question-ico { transform: rotate(180deg); }
.tn-question[open] { box-shadow: inset 0 0 0 1px var(--c-primaire-texte); }
.tn-question-reponse { display: grid; gap: .75rem; padding: 0 1.25rem 1.25rem 4.2rem; }
.tn-question-reponse .tn-lien { font-size: .88rem; color: var(--c-primaire-texte); }
@media (min-width: 900px) { .tn-faq-grille { grid-template-columns: minmax(0, 5fr) minmax(0, 7fr); gap: 3rem; } .tn-faq .tn-tete { position: sticky; top: calc(var(--header-h) + 2rem); } }
@media (max-width: 560px) { .tn-question-reponse { padding-left: 1.25rem; } }

/* ---------- 14. CTA ---------- */
.tn-cta-cadre { display: grid; gap: 2rem; align-items: center; padding: clamp(2rem, 5vw, 3.75rem); border-radius: calc(var(--r-carte) * 2); }
.tn-cta-copie { display: grid; gap: 1.1rem; justify-items: start; }
.tn-kicker--sombre { background: transparent; box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c-sur-voile) 25%, transparent); color: var(--c-primaire); }
.tn-kicker--sombre .tn-kicker-point { box-shadow: none; }
.tn-cta .tn-h2 { color: var(--c-sur-voile); }
.tn-cta .tn-mark { background: none; color: var(--c-primaire); padding: 0; }
.tn-cta-texte { color: color-mix(in srgb, var(--c-sur-voile) 80%, transparent); line-height: 1.7; max-width: 52ch; }
.tn-cta-fiche { display: grid; gap: 1rem; padding: 1.4rem; border-radius: var(--r-carte); background: color-mix(in srgb, var(--c-sur-voile) 6%, transparent); box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--c-sur-voile) 16%, transparent); }
.tn-cta-fiche .tn-fiche-titre { color: color-mix(in srgb, var(--c-sur-voile) 75%, transparent); }
.tn-cta-fiche .tn-ico { color: var(--c-primaire); }
.tn-cta-fiche dl { display: grid; gap: .8rem; }
.tn-cta-fiche dl div { display: grid; grid-template-columns: 7rem minmax(0, 1fr); gap: 1rem; padding-top: .8rem; border-top: 1px solid color-mix(in srgb, var(--c-sur-voile) 14%, transparent); }
.tn-cta-fiche dt { font-size: .82rem; color: color-mix(in srgb, var(--c-sur-voile) 65%, transparent); }
.tn-cta-fiche dd { font: 600 .98rem/1.35 var(--f-titre); color: var(--c-sur-voile); }
@media (min-width: 900px) { .tn-cta-cadre { grid-template-columns: minmax(0, 7fr) minmax(0, 5fr); gap: 3.5rem; } }

/* ---------- Bloc d'avant-pied de l'usine, remis dans la grammaire de la home ---------- */
.uf-block[data-avant-footer] .eyebrow { display: inline-flex; width: fit-content; padding: .25rem .7rem; border-radius: 999px; background: var(--c-doux); color: var(--c-primaire-texte); font: 600 .7rem var(--f-texte); letter-spacing: .12em; text-transform: uppercase; }
.uf-block[data-avant-footer] h2 { font-family: var(--f-titre); font-weight: 700; letter-spacing: -.02em; color: var(--c-texte); }
.uf-block[data-avant-footer] .af-button { background: var(--btn-fond); color: var(--btn-texte); border-radius: var(--r-bouton); box-shadow: none; }
.uf-block[data-avant-footer] .af-button:hover { background: var(--color-primary-500); color: var(--btn-texte); }

/* ---------- Mouvement réduit : tout est déjà rempli ---------- */
@media (prefers-reduced-motion: reduce) {
  .tn-releve *, .tn-seuil *, .tn-carnet *, .tn-conso *, .tn-carte { transition: none !important; }
}

/* ---------- GSAP + Lenis : CSS officiel de Lenis, GSAP pilote seul les largeurs ---------- */
html.lenis, html.lenis body { height: auto; }
.lenis.lenis-smooth { scroll-behavior: auto !important; }
.lenis.lenis-smooth [data-lenis-prevent] { overscroll-behavior: contain; }
.lenis.lenis-stopped { overflow: hidden; }
.tn-mark { background-repeat: no-repeat; background-size: 100% 100%; }
.tn-gsap .tn-jauge-piste i, .tn-gsap .tn-barre-piste i, .tn-gsap .tn-pile i { transition: none; }
.tn-gsap .tn-releve-photo, .tn-gsap .tn-releve-fiche { will-change: transform; }
