/* TechHome — Utilitaires nommés. Remplacent les th-u-NN générés.
   Chargé en dernier : un utilitaire l'emporte sur la classe de composant
   à spécificité égale. Uniquement des var(--…). */

/* Piles verticales (grid + gap) */
.th-stack{display:grid;gap:var(--sp-4);align-content:start}
.th-stack-1{display:grid;gap:var(--sp-1);align-content:start}
.th-stack-2{display:grid;gap:var(--sp-2);align-content:start}
.th-stack-3{display:grid;gap:var(--sp-3);align-content:start}
.th-stack-5{display:grid;gap:var(--sp-5);align-content:start}
.th-stack-6{display:grid;gap:var(--sp-6);align-content:start}
.th-stack-8{display:grid;gap:var(--sp-8);align-content:start}
.th-stack-10{display:grid;gap:var(--sp-10);align-content:start}
.th-stack-12{display:grid;gap:var(--sp-12);align-content:start}

/* Rangées qui passent à la ligne */
.th-cluster{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-3)}
.th-cluster-2{display:flex;flex-wrap:wrap;align-items:center;gap:var(--sp-2)}
.th-cluster-between{display:flex;flex-wrap:wrap;align-items:center;justify-content:space-between;gap:var(--sp-3)}

/* Grilles : 1 colonne en mobile, n colonnes dès 768 px */
.th-grid-2,.th-grid-3,.th-grid-4{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-5)}
.th-grid-auto{display:grid;grid-template-columns:minmax(0,1fr);gap:var(--sp-5)}
@media (min-width:768px){
.th-grid-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.th-grid-3{grid-template-columns:repeat(3,minmax(0,1fr))}
.th-grid-4{grid-template-columns:repeat(4,minmax(0,1fr))}
.th-grid-auto{grid-template-columns:repeat(auto-fit,minmax(var(--grid-card-min),1fr))}
}

/* Écarts (grid et flex) */
.th-gap-0{gap:0}.th-gap-1{gap:var(--sp-1)}.th-gap-2{gap:var(--sp-2)}.th-gap-3{gap:var(--sp-3)}.th-gap-4{gap:var(--sp-4)}
.th-gap-5{gap:var(--sp-5)}.th-gap-6{gap:var(--sp-6)}.th-gap-8{gap:var(--sp-8)}.th-gap-10{gap:var(--sp-10)}.th-gap-12{gap:var(--sp-12)}.th-gap-16{gap:var(--sp-16)}

/* Marges */
.th-mt-0{margin-top:0}.th-mt-1{margin-top:var(--sp-1)}.th-mt-2{margin-top:var(--sp-2)}.th-mt-3{margin-top:var(--sp-3)}.th-mt-4{margin-top:var(--sp-4)}
.th-mt-5{margin-top:var(--sp-5)}.th-mt-6{margin-top:var(--sp-6)}.th-mt-8{margin-top:var(--sp-8)}.th-mt-10{margin-top:var(--sp-10)}.th-mt-12{margin-top:var(--sp-12)}.th-mt-16{margin-top:var(--sp-16)}
.th-mb-0{margin-bottom:0}.th-mb-1{margin-bottom:var(--sp-1)}.th-mb-2{margin-bottom:var(--sp-2)}.th-mb-3{margin-bottom:var(--sp-3)}.th-mb-4{margin-bottom:var(--sp-4)}
.th-mb-5{margin-bottom:var(--sp-5)}.th-mb-6{margin-bottom:var(--sp-6)}.th-mb-8{margin-bottom:var(--sp-8)}.th-mb-10{margin-bottom:var(--sp-10)}.th-mb-12{margin-bottom:var(--sp-12)}.th-mb-16{margin-bottom:var(--sp-16)}
.th-mx-auto{margin-inline:auto}

/* Remplissages */
.th-card-pad{padding:var(--sp-6)}
.th-card-pad-sm{padding:var(--sp-4)}
.th-card-pad-lg{padding:var(--sp-5)}
@media (min-width:768px){.th-card-pad-lg{padding:var(--sp-8)}}
.th-pt-8{padding-top:var(--sp-8)}
.th-divider-top{padding-top:var(--sp-8);border-top:var(--bw-hairline) solid var(--border-hairline)}
.th-divider-bottom{padding-bottom:var(--sp-8);border-bottom:var(--bw-hairline) solid var(--border-hairline)}

/* Texte : couleur */
.th-text-primary{color:var(--text-primary)}
.th-text-muted{color:var(--text-secondary)}
.th-text-subtle{color:var(--text-tertiary)}
.th-text-accent{color:var(--text-accent)}
.th-text-coral{color:var(--coral)}
.th-text-mustard{color:var(--mustard)}
.th-text-mauve{color:var(--mauve)}
.th-text-teal{color:var(--teal)}

/* Texte : taille, graisse, alignement, mesure */
.th-fs-2xs{font-size:var(--fs-2xs)}.th-fs-xs{font-size:var(--fs-xs)}.th-fs-sm{font-size:var(--fs-sm)}.th-fs-base{font-size:var(--fs-base)}.th-fs-md{font-size:var(--fs-md)}.th-fs-lg{font-size:var(--fs-lg)}
.th-fw-medium{font-weight:var(--fw-medium)}.th-fw-bold{font-weight:var(--fw-bold)}
.th-text-center{text-align:center}.th-text-start{text-align:start}
.th-measure{max-width:var(--measure)}.th-measure-narrow{max-width:var(--measure-narrow)}.th-measure-wide{max-width:var(--measure-wide)}
.th-uppercase{text-transform:uppercase;letter-spacing:var(--ls-eyebrow)}

/* Titres hors composant */
.th-heading-section{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-xl);line-height:var(--lh-snug);letter-spacing:var(--ls-heading);color:var(--text-primary)}
.th-heading-card{font-family:var(--font-display);font-weight:var(--fw-bold);font-size:var(--fs-lg);line-height:var(--lh-snug);letter-spacing:var(--ls-heading);color:var(--text-primary)}
.th-heading-sub{font-family:var(--font-display);font-weight:var(--fw-medium);font-size:var(--fs-md);line-height:var(--lh-snug);letter-spacing:var(--ls-heading);color:var(--text-primary)}
@media (min-width:768px){.th-heading-section{font-size:var(--fs-2xl)}}

/* Alignement & dimensions */
.th-w-full{width:100%}
.th-self-center{justify-self:center}.th-self-start{justify-self:start}
.th-items-start{align-items:start}.th-items-center{align-items:center}.th-items-end{align-items:end}
.th-justify-between{justify-content:space-between}.th-justify-center{justify-content:center}

/* Visibilité par format */
@media (max-width:767.98px){.th-hide-mobile{display:none!important}}
@media (min-width:768px){.th-hide-desktop{display:none!important}}
