Design System officiel · Noyau V0.1 · Sept. 2026 · Havre Athletic Club · Fondé en 1872
Design System Le Havre AC
Ce document de référence définit les règles visuelles, typographiques et les composants UI du Havre Athletic Club sur l'ensemble de ses supports digitaux.
Identité chromatique · 3 couleurs principales + 1 couleur de support
La palette du HAC s'articule autour de trois couleurs identitaires — Marine, Ciel, Blanc — héritées des couleurs d'Oxford et Cambridge portées depuis 1872. Une couleur de support, le bronze, complète le système pour les accents patrimoniaux.
Le site institutionnel expose sa palette via Tailwind : --color-blue-darker/#0A152E · --color-blue-dark/#254162 · --color-blue-med/#3F6D97 · --color-blue-light/#5A98CB · --color-blue-lighter/#74C4FB · --color-gold-darker/#C0946A · --color-gold-dark/#D0AF8F. Notre bronze #C0946A est identique au pixel. Nos marine/ciel sont de la même famille mais pas pixel-parfaits (écarts de quelques points RVB, imperceptibles à l'œil) — à harmoniser si une refonte des tokens couleur est engagée un jour ; non prioritaire par rapport à la correction typographique.
02
Logotype
Écusson, versions & règles d'usage
L'écusson du HAC existe en version couleur et en version blanche. La salamandre, emblème historique de la ville du Havre, accompagne le blason sur les usages patrimoniaux.
Élément graphique patrimonial
La salamandre couronnée, emblème historique de la ville du Havre, orne le blason du club depuis sa création. Utilisée seule uniquement sur les supports institutionnels et patrimoniaux — jamais en remplacement de l'écusson principal.
Mascotte officielle — Saly
SALY EN ACTION
La mascotte anime la pelouse avant-match et les temps forts de la rencontre.
RENCONTRE SUPPORTERS
En fan zone, Saly incarne la proximité du club avec ses jeunes supporters lors des animations d'avant-match.
Version couleur — fond marine
Version couleur — fond clair
Monochrome blanc — sur dégradé, halon protégé
Halon sombre centré sous le logo
Sur photo, appliquer un halon radial noir/marine opacité 40–65% pour garantir un contraste minimum de 4.5:1. Le logo ne se pose jamais directement sur une photo non traitée.
ZONE DE PROTECTION
Marge minimale = hauteur du bouclier sur chaque côté. Aucun élément dans cette zone.
TAILLE MINIMALE
40px de hauteur pour le digital, 10mm pour l'impression.
JAMAIS DÉFORMÉ
Ratio bloqué en permanence. Pas de rotation, ni de recoloriage non autorisé.
03
Typographie
Acumin Pro · Acumin Pro Condensed · IBM Plex Mono · + 2 typos patrimoniales
Acumin Pro Condensed pour les titres à impact et Acumin Pro pour le corps et les interfaces — ce sont les typographies réellement utilisées sur hac.football (vérifié dans le CSS compilé du site le 5 sept. 2026 : rôles --font-sans/--font-acumin-pro et --font-acumin-pro-cond). Oswald/Inter servent de repli automatique si le kit Adobe ne charge pas. IBM Plex Mono reste la mono du design system pour les tokens et annotations techniques — le site institutionnel n'a pas de mono dédiée (police système par défaut). Deux typographies patrimoniales — Dharma Gothic (« push ») et Behind The Nineties — complètent le système, réservées au footer institutionnel partagé (détail section 20).
Correction du 5 sept. 2026 — ce design system utilisait par défaut Oswald + Inter (Google Fonts), une approximation web-safe posée au démarrage du projet. En inspectant le CSS compilé réel de hac.football, il s'avère que le kit Typekit vzo7qrm déjà chargé sur ce site (pour Dharma Gothic) contient aussi Acumin Pro et Acumin Pro Condensed, sans restriction de domaine au niveau des fichiers — ce sont les vraies typos du club. Le design system a été aligné dessus ; Oswald/Inter restent chargées comme repli si jamais le kit venait à échouer.
Ciel & Marine
Sur fond marine — idéal
Ciel & Marine
Sur fond blanc — ciel profond, légère ombre pour la lisibilité
Graisses disponibles (kit Adobe vzo7qrm)
ACUMIN PRO
500 (medium) · 700 (bold) · 800 (extrabold) — normal + italic. Pas de 400 : le corps de texte standard se cale automatiquement sur 500, le poids le plus proche.
ACUMIN PRO CONDENSED
500 · 600 (italic) · 700 · 800 — normal + italic. Réservée aux titres, kickers et labels compacts.
LE ONZE DE DÉPART
Article neutre + substantif ciel profond
STADE CMA CGM OCÉANE
Lieu neutre + nom propre bronze
Display · Acumin Pro Condensed 800 · clamp(40,7vw,92px)
Cavée Océane
H1 · Acumin Pro Condensed 700 · clamp(30,5vw,52px)
Saison 2026–27
Body Large · Acumin Pro 500/700 · 18px
Rejoignez les Ciel & Marine pour une saison inoubliable. Billetterie et abonnements disponibles en ligne.
Label / Mono · IBM Plex Mono 500 · 11px
LIGUE 1 · JOURNÉE 34 · SAM. 21 MARS 19H00
Typographies patrimoniales — réservées au footer partagé
Usage strict — ces deux typographies ne servent qu'au footer institutionnel partagé (devise « À jamais le premier ! » et millésime « 1872 »). Elles ne doivent jamais remplacer Oswald ailleurs dans l'interface. Dharma Gothic est chargée via le kit Adobe Typekit vzo7qrm (licence agence, domaine autorisé) ; Behind The Nineties est auto-hébergée en woff2/woff, 10 graisses × normal/italic — les deux vérifiées fonctionnelles sur ce domaine (fichiers servis en 200).
Reprise du traitement effectif du site institutionnel : le numéro en Behind The Nineties italic bronze clair, le nom en Acumin Pro Condensed 800 blanc — les deux seules typos qui se croisent sur cette composition. Photo assombrie par un dégradé bas, salamandre en filigrane.
MADE IN CAVÉE
50
Paul
Argney
77
Lionel
Mpasi
93
Gauthier
Gallon
Démo avec une seule photo disponible (hac-joueur-01.jpg) répétée sur les 3 cartes — à remplacer par les vraies photos studio par joueur.
05
Espacement
Système de spacing 4px
Système de spacing 4px base — tokens --sp-* pour garantir la cohérence entre composants.
--sp-1
4px — inter-éléments très proches
--sp-2
8px — espacement serré
--sp-3
12px — badges, labels
--sp-4
16px — base unit
--sp-6
24px — padding cards
--sp-8
32px — sections
--sp-12
48px — padding vertical
--sp-16
64px — héros
--sp-20
80px — inter-sections
--sp-32
128px — grand héro
06
Motion & Animation
Timing tokens · exemples
Animations directes et franches. Durée type 200–350ms. Pas d'animation supérieure à 600ms, sauf transitions de page.
Bounce-in
800ms
Slide-up
600ms · ease
Pulse ring
Badge « Live » · 2s
Spin loader
linear · 900ms
--t-fast
150ms — hover, focus
--t-base
250ms — transitions standard
--t-slow
400ms — modales, drawers
--t-page
600ms — transitions de page
07
Principes de design
Six principes fondateurs
Six principes traduisent l'identité du club — doyen, patrimoine, passion populaire — en orientations concrètes.
01
Photo en priorité
La photographie est le premier vecteur d'émotion. Chaque page à forte valeur éditoriale comporte au moins une image haute définition. La typographie se superpose toujours sur une zone traitée.
02
Impact premier
Chaque écran a un point focal dominant. Le ciel capte, le marine ancre.
03
Typographie forte
Acumin Pro Condensed domine les surfaces. La hiérarchie est toujours claire, jamais timide.
04
Ancrage local
La Cavée Océane, le port du Havre, la salamandre havraise — les références locales sont valorisées, jamais génériques.
05
Passion des supporters
Le design parle d'abord aux fans. Chaud, direct, populaire.
06
Cohérence système
Tokens, composants et règles appliqués de façon homogène sur tous les supports.
08
Langage graphique
Rayures · dégradés · glassmorphisme
Rayures verticales — héritées du maillot historique —, grille de fond, dégradés signature et glassmorphisme sur photo. Un seul geste graphique par visuel, jamais deux superposés.
Rayures — fond de bloc
.hac-rayures · bandes verticales ciel/marine, héritées du maillot
.hac-maree-sep · 40px · transitions de sections majeures
.hac-liseret · 6px · alternance marine & bronze, pied de carte
09
Photo & Typographie
Traitement photo · superposition
Vues action, portraits expressifs, ambiance de tribune. La typographie se superpose toujours sur un fond traité (halo, gradient ou glassmorphisme) — jamais directement sur la photo brute.
Règles de traitement
Format action
Joueurs en mouvement, duel, tir — sujet cadré en règle des tiers. Ratio 16/9 en une, 4/3 en vignette.
MATCH CE SOIR
Typo sur gradient
Dégradé sombre de bas en haut, opacité 0→92%. Le texte se pose toujours dans la zone la plus sombre, en bas.
PROCHAINEMENT
19 SEPT.
Cartouche glass
Glassmorphisme pour les infos contextuelles sur photo : fond flou, bordure translucide, jamais de fond plein.
Ambiance stade
Filtre marine
Overlay marine 40–50% pour les ambiances fortes. Réservé aux grandes surfaces et temps forts (Kop, huit-clos, soirs de match).
Trois niveaux : la barre d'annonces (ticker, contextuelle), le N0 inter-sites (commun à tous les espaces digitaux du club) et le N1 propre à chaque site, avec ses états déconnecté / connecté.
N0 — Barre inter-sites (commune à tous les sites du club)
N0 inter-sites · hauteur 34px · liens vers tous les espaces digitaux du club (site, boutique, billetterie, app, espace fan) · fond marine profond partagé.
Tableau de bordMes billetsFidélitéBoutiqueMon profil
Bonjour, Camille
Rang Bronze · 1 240 XPMatch ce soir
Sidebar espace fan · icônes 16px stroke 1.5 · avatar cerclé bronze · badge de rang/XP dans le N0 en état connecté.
11
Footer
Composant partagé multi-sites · voir section 20
Le footer du HAC n'est pas un composant local à ce site : c'est un bloc institutionnel unique, identique sur toutes les plateformes du club (fond #0A152E, accent or #C0946A, bloc partenaires alimenté par API). Spécification complète, contrat de données et guide d'intégration : voir section 20 — Footer partagé. Démonstration grandeur réelle en bas de cette page.
12
Pictogrammes & Icônes
Outline · stroke 1.5px
Bibliothèque d'icônes outline, stroke 1.5px, héritant systématiquement de currentColor. Zéro emoji dans le design system — chaque usage passe par un pictogramme vectoriel.
Navigation & Interface
home
search
menu
close
chevron-r
chevron-l
chevron-d
chevron-u
arrow-r
arrow-l
external
grid
Communication & Réseaux sociaux
mail
phone
bell
share
message
send
x
instagram
facebook
youtube
linkedin
tiktok
whatsapp
Compte & Utilisateur
user
users
login
logout
settings
lock
eye
eye-off
Billetterie & Boutique
ticket
credit-card
tag
percent
shopping
cart
qr-code
calendar
Football & Club
ballon
trophy
corner
carton-jaune
carton-rouge
remplacement
tribune
megaphone
flag
award
Média & Contenu
camera
image
video
mic
headphones
play
pause
volume
Informations & Statuts
info
check
check-c
alert
x-circle
star
heart
clock
map-pin
globe
compass
Données & Divers
download
file
refresh
filter
sort
plus
edit
trash
sun
moon
wifi
shield
Règles d'usage
Taille — 16px minimum, 24px standard, 32px pour les emplacements proéminents
Stroke — 1.5px par défaut, 2px pour les UI compactes tactiles
Couleur — toujours currentColor, jamais hard-codée
Accent — color:var(--hac-ciel) pour les états actifs uniquement
13
Sponsors
Partenaires · règles de visibilité
Logos partenaires en monochrome blanc sur tous les fonds. Au survol : ciel #6FB6E8.
PARTENAIRE PREMIUM
CMA CGM
PARTENAIRE PRINCIPAL
Hummel
INSTITUTIONNELS
Ville du HavreLe Havre Seine MétropoleSeine-MaritimeNormandie
Contenu onglet Buteurs — top scoreurs de la saison 2026–27.
Accordéon FAQ
Rendez-vous sur la billetterie en ligne ou au guichet du Stade CMA CGM Océane, du lundi au vendredi de 9h à 18h.
Créez un compte sur le site officiel et connectez-vous depuis le menu principal, section « Mon Compte ».
17
Accessibilité
Contrastes WCAG
AA ✓Blanc sur marine · 15.8:1
AAA ✓Marine sur ciel · 5.2:1
AAA ✓Marine sur blanc · 16.9:1
AAA ✓Blanc sur marine profond · 18.4:1
18
Dark / Light
Tokens adaptatifs — démo isolée
Le design system supporte les deux modes via des tokens CSS adaptatifs — les composants n'ont pas besoin d'être réécrits. Le bouton flottant en bas à droite change le thème de cette page ; la démo ci-dessous illustre le principe de façon isolée.
Mode sombre — défaut
Composant card
Corps Acumin Pro 13px · couleur muted
CTA CielGhost
19
Export Tokens
CSS Variables — source de vérité
Tokens exportables en CSS Variables — source de vérité unique pour tous les projets digitaux du club.
Composant institutionnel + flux partenaires API · brief v. 2 sept. 2026
Le footer HAC est un composant unique, agnostique de stack, décliné à l'identique sur tout site ou plateforme de l'écosystème (institutionnel, boutique, billetterie, apps, landings…). Le design system fixe la structure visuelle et les tokens ; chaque plateforme y injecte ses propres menus, contacts et son propre token API — rien n'est hardcodé côté design system.
Fond continu #0A152E du haut du footer jusqu'à la barre légale — aucune rupture de couleur entre les blocs.
1 → 2 → 3 → 4 → 5
Brand — salamandre or + « 1872 » + devise « À jamais le premier ! »
Réseaux sociaux — icônes centrées, URLs fournies par le site
Navigation — crest mono blanc + N colonnes de listes génériques (+ colonne info optionnelle)
Partenaires — séparateur fin puis logos groupés par niveau, via l'API officielle
Barre légale — contenu fourni par le site, style unifié design system
Tokens design du footer
Fond footer / partenaires / légal ........ #0A152E
Accent or (titres, devise, année, sala) .. #C0946A
Titres listes / niveaux partenaires ...... #C0946A · 22px · 700
Items de listes + textes info ............ #7a9bb8 · 18px
Séparateur avant partenaires ............. 1px solid #7a9bb8 (largeur container)
Slot logo partenaire (tous niveaux) ...... 200px large · object-fit:contain · h.max ~80px
Salamandre ................................ SVG or #C0946A · largeur 114px
Crest footer .............................. SVG mono blanc, HAC_logo_monoblanc.svg, sans filter:invert
Devise « À jamais le premier ! » ......... #C0946A · casse phrase · 40px mobile / 70px desktop · italic
Texte « 1872 » ............................ #C0946A · 23px · italic
Icônes réseaux ............................ #79bde8
Texte barre légale ........................ #ffffff
Z-index header sticky vs footer .......... header ≫ footer (ex. 5000 vs auto)
Typographies spécifiques (licences à vérifier par domaine)
DEVISE — ADOBE TYPEKIT ✓ ACTIF
Police dharma-gothic-m, kit BDSA via https://use.typekit.net/vzo7qrm.css (compte licence agence), italic, weight 900. Kit chargé et vérifié fonctionnel sur ce domaine (fichiers woff2 servis en 200).
« 1872 » — BEHIND THE NINETIES ✓
Police locale du club — 10 graisses (Rg/Md/Smbd/Bd/Xbd/Blk × normal/italic), hébergées en woff2+woff dans assets/fonts/behind-the-nineties/. Le « 1872 » du footer utilise la graisse Regular italic, conformément au brief.
Contrat de slots — listes de liens génériques
Le design system expose des listes injectées par la plateforme — 3 à 4 listes typiquement, dont une colonne « infos » possible en dernière position. Titres et items sont des données, jamais des libellés métier figés dans le composant (pas de « Produits », « Prochains matches »… en dur).
Règle responsive : desktop = crest + colonnes flex égales sur une rangée · mobile = 1 seule colonne empilée (jamais de grille 2 colonnes).
Flux partenaires — cœur du brief
Une seule source de vérité pour les logos partenaires sur tout l'écosystème HAC : aucun site ne maintient de liste de logos en dur.
GET https://hac.football/api/partners
Authorization: Bearer <TOKEN> (fourni séparément par le club — jamais versionné)
Accept: application/json
401 Unauthorized si token manquant / invalide
Réponse JSON — champs du contrat
{
"partners": [
{
"name": "Winamax",
"logo_url": "https://hac-foot.com/storage/partners/logos/xxxxx.png",
"website": "https://www.winamax.fr/",
"position": 1,
"type": "Partenaires Principaux",
"type_rank": 1
}
]
}
/* name → alt/title · logo_url → image absolue · website → null = logo sans lien
position → ordre DANS la catégorie · type → libellé de section
type_rank → rang de catégorie (0 = plus haut, peut être null) */
Algorithme de rendu (client)
Fetch (ou lecture cache) — la liste API est déjà triée par type_rank puis position
Grouper les items par type en respectant l'ordre / type_rank
Pour chaque groupe : titre #C0946A 22px → rangée de logos
Chaque logo dans un slot 200px (indépendant du niveau)
Si website non null : wrapper <a target="_blank" rel="noopener noreferrer">
Cache & résilience
TTL RECOMMANDÉ
~3600s (1h) ; 1×/jour acceptable, le flux change rarement.
STOCKAGE
Cache serveur / transient / KV — jamais uniquement navigateur.
FALLBACK
Si API en échec : dernier cache valide, sinon rien affiché — la page ne doit jamais casser.
SÉCURITÉ TOKEN
Bearer configuré hors code versionné (env / secrets / BO) — jamais dans le design system ni le repo.
Pipeline live sur ce serveur
Ce site implémente réellement le pattern recommandé : un script serveur (hac-designsystem-partners-sync.sh), exécuté chaque heure par cron, appelle GET /api/partners avec le Bearer token (stocké hors webroot, permissions 600, jamais versionné) et écrit le résultat dans assets/data/partners.json — un fichier statique, public, sans secret. Le footer (renderFooterPartners()) fetch ce fichier côté client et n'a jamais accès au token. Si le fichier est absent ou l'API en échec, le footer retombe automatiquement sur un jeu de données d'exemple pour ne jamais casser la page.
✓ Token validé — synchronisation active
Le token complet (64 caractères) a été validé le 5 septembre 2026 — GET /api/partners répond 200 et retourne les 12 partenaires actuels (CMA CGM, Hummel, Ville du Havre, Le Havre Seine Métropole, Seine-Maritime, Normandie, SIM, ZEturf, DF Industrie, Parmentier, LH Traiteur, Hervé Thermique). Le cache assets/data/partners.json est à jour et le cron (chaque heure, minute 7) prend le relais automatiquement — aucune autre intervention nécessaire côté token.
Guide de déclinaison — brancher un nouveau site
Injecter 3 à 4 listes génériques (titre + liens) dans le contrat de slots, propres au site (boutique, billetterie, institutionnel…). Le design system ne fournit aucun libellé métier.
Obtenir le Bearer token auprès de l'équipe HAC, le stocker en variable d'environnement / secret / back-office — jamais dans un fichier versionné.
Implémenter un client serveur authentifié Bearer vers GET /api/partners, avec cache TTL ~3600s et fallback sur dernier cache valide en cas d'erreur.
Récupérer le package d'assets partagés (salamandre SVG or, crest mono blanc SVG, police Behind The Nineties) et faire autoriser le domaine du site sur le kit Adobe Typekit vzo7qrm.
Fournir son propre contenu (copyright, crédits, liens légaux) dans le style unifié fond navy / texte blanc — le design system ne force pas de texte unique.
Critères d'acceptance
✓ Ordre des blocs & fond continu #0A152E
✓ Accent or #C0946A appliqué
✓ Listes génériques, données non hardcodées métier