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.
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
Oswald · Inter · IBM Plex Mono
Oswald pour les titres à impact, Inter pour le corps et les interfaces, IBM Plex Mono pour les codes et annotations techniques.
Ciel & Marine
Sur fond marine — idéal
Ciel & Marine
Sur fond blanc — ciel profond, légère ombre pour la lisibilité
LE ONZE DE DÉPART
Article neutre + substantif ciel profond
STADE CMA CGM OCÉANE
Lieu neutre + nom propre bronze
Display · Oswald · clamp(40,7vw,92px)
Cavée Océane
H1 · Oswald · clamp(30,5vw,52px)
Saison 2026–27
Body Large · Inter 400/600 · 18px
Rejoignez les Ciel & Marine pour une saison inoubliable. Billetterie et abonnements disponibles en ligne.
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
Oswald 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
Tableau de bordMes billetsFidélitéBoutiqueMon profil
Espace fan HAC — prochain match, statut abonnement Ciel & Marine, historique billetterie et points fidélité en un coup d'œil.
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 Inter 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 italic (variantes Rg/Md/Smbd/Bd/Xbd/Blk + italiques). Fichiers transmis par le club, en attente de dépôt serveur — à glisser dans le chat pour intégration dans assets/fonts/behind-the-nineties/. Repli actuel : Oswald italic.
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 en erreur (HTTP 401)
Le premier test du token transmis retourne 401 Unauthorized côté API. Le token stocké fait 63 caractères — les tokens de ce type font généralement 64 caractères hexadécimaux : il manque probablement un caractère, perdu lors d'un copier-coller. Merci de renvoyer le token (idéalement dans un bloc de code séparé, sans texte autour) pour vérification caractère par caractère. Dès qu'il sera valide, le cron déjà en place (toutes les heures, minute 7) alimentera automatiquement le footer sans autre intervention.
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