Refonte visuelle : direction artistique Grèce antique

Remplace le thème générique (tokens navy/gold/ivory re-thématisables par
édition) par une direction artistique fixe et codée en dur : tribunal
égéen de nuit — marbre, or, mer sombre, sceaux de cire.

Fondations (globals.css, layout.tsx) :
- Polices next/font/google : Cinzel (titres, tracking large), Cormorant
  Garamond (citations italiques), Manrope (interface).
- Nouveaux tokens couleur : ink/ink-2 (fond mer de nuit), marble/marble-2
  (surfaces claires), gold/gold-bright (accents), oxblood (blâmes/erreurs),
  olive (honneurs/succès), sea, text-marble/text-mut (texte sur marbre —
  jamais de doré en texte courant, contraste insuffisant).
- Classes utilitaires : .marble-surface (texture par dégradés, pas
  d'image de bruit), .meander-divider (frise à méandre grecque en SVG
  data-URI).

Composants d'ornement (aucune image bitmap) :
- components/laurel-wreath.tsx : couronne de laurier calculée par
  trigonométrie (deux arcs symétriques de feuilles), réutilisée en logo,
  favicon (icon.svg régénéré avec les mêmes coordonnées) et couronne du
  rang 1 du podium.
- components/diamond-divider.tsx : séparateur ◆ avec filets dégradés.

Header global (components/header.tsx, remplace nav-bar.tsx) :
- Logo laurier + "LE TRIBUNAL" à gauche (cliquable vers le leaderboard).
- Chip utilisateur à droite : avatar (bordure dorée), pseudo, badge de
  rôle (Archonte/Citoyen), points de gloire, menu déroulant (Mon profil,
  Le Conseil des Archontes si juge, Se déconnecter).
- Onglets L'Agora / Le Crieur, frise à méandre en séparateur.
- Responsive : nom du site et pseudo masqués sous le breakpoint sm,
  l'avatar reste toujours visible.

Vocabulaire diégétique (toujours avec le terme fonctionnel à côté) :
juges → Archontes, membres → Citoyens, leaderboard → L'Agora, journal →
Le Crieur (décrets avec sceau de cire oxblood), points positifs/négatifs
→ Honneurs/Blâmes, points → gloires, section admin → Le Conseil des
Archontes.

Avatar : bordure dorée, couleur de fallback dérivée d'un hash du pseudo
(au lieu d'une couleur fixe).

Toutes les pages (login, signup, leaderboard/podium, journal, admin,
profil) sont passées sur les nouveaux tokens/polices/vocabulaire.

README.md et CLAUDE.md : section "Ré-thématisation" remplacée par
"Direction artistique" documentant la palette, les polices et les
ornements ; toute mention du système de re-thème par édition retirée.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
This commit is contained in:
Valentin ROBIN
2026-07-12 13:13:54 +02:00
parent e6f4463cb0
commit 9f4e58019b
25 changed files with 541 additions and 291 deletions
+54 -15
View File
@@ -1,40 +1,79 @@
@import "tailwindcss";
:root {
--color-navy: #0f2748;
--color-gold: #c9a227;
--color-ivory: #f4ecd8;
--color-ink: #2a2116;
--ink: #0a1b33;
--ink-2: #0f2748;
--marble: #f4ecd8;
--marble-2: #e9dec2;
--gold: #c9a227;
--gold-bright: #e7c560;
--oxblood: #a5342a;
--sea: #2e6e7e;
--olive: #5e6b3b;
--text-marble: #2a2116;
--text-mut: #7a6a4c;
--background: var(--color-ivory);
--foreground: var(--color-ink);
--background: var(--ink);
--foreground: var(--marble);
}
@theme inline {
--color-navy: var(--color-navy);
--color-gold: var(--color-gold);
--color-ivory: var(--color-ivory);
--color-ink: var(--color-ink);
--color-ink: var(--ink);
--color-ink-2: var(--ink-2);
--color-marble: var(--marble);
--color-marble-2: var(--marble-2);
--color-gold: var(--gold);
--color-gold-bright: var(--gold-bright);
--color-oxblood: var(--oxblood);
--color-sea: var(--sea);
--color-olive: var(--olive);
--color-text-marble: var(--text-marble);
--color-text-mut: var(--text-mut);
--color-background: var(--background);
--color-foreground: var(--foreground);
--font-sans: var(--font-geist-sans);
--font-mono: var(--font-geist-mono);
--font-heading: var(--font-cinzel);
--font-serif: var(--font-cormorant);
--font-sans: var(--font-manrope);
}
body {
background: var(--background);
background:
radial-gradient(ellipse 80% 50% at 20% -10%, color-mix(in srgb, var(--ink-2) 75%, transparent) 0%, transparent 60%),
radial-gradient(ellipse 70% 60% at 100% 110%, color-mix(in srgb, var(--sea) 30%, transparent) 0%, transparent 65%),
var(--ink);
background-attachment: fixed;
color: var(--foreground);
font-family: var(--font-sans), Arial, Helvetica, sans-serif;
}
*:focus-visible {
outline: 2px solid var(--color-gold);
outline: 2px solid var(--gold-bright);
outline-offset: 2px;
}
/* Carte "marbre" : surface claire avec léger grain, bordure dorée fine. */
.marble-surface {
background:
radial-gradient(circle at 18% 12%, color-mix(in srgb, var(--marble-2) 65%, transparent) 0%, transparent 42%),
radial-gradient(circle at 82% 88%, color-mix(in srgb, var(--marble-2) 55%, transparent) 0%, transparent 48%),
linear-gradient(150deg, var(--marble) 0%, var(--marble) 55%, var(--marble-2) 100%);
color: var(--text-marble);
}
/* Frise à méandre (motif grec), séparateur horizontal discret. */
.meander-divider {
height: 10px;
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='32' height='10' viewBox='0 0 32 10'%3E%3Cpath d='M0 8 H6 V2 H16 V8 H22 V2 H32' fill='none' stroke='%23C9A227' stroke-width='1.3'/%3E%3C/svg%3E");
background-repeat: repeat-x;
background-position: center;
background-size: 32px 10px;
opacity: 0.45;
}
@keyframes points-flash {
0% {
background-color: color-mix(in srgb, var(--color-gold) 55%, transparent);
background-color: color-mix(in srgb, var(--gold-bright) 55%, transparent);
}
100% {
background-color: transparent;