feat: gestion de l'expérience (XP)

- Schéma xp dans CelestopolCharacter : actuel (éditable), log[] ({montant, raison, date}), depense (calculé dans prepareDerivedData)
- Bouton 'Dépenser XP' → DialogV2 (montant + raison) : décrémente actuel, logge l'entrée
- Suppression d'entrée de log avec remboursement des points (mode édition)
- Section XP en haut de l'onglet Biographie : compteurs, tableau du log, référentiel des coûts
- i18n : section CELESTOPOL.XP.* complète
- CSS : .xp-section avec compteurs, tableau de log et accordéon de référence

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
2026-03-31 00:33:59 +02:00
parent 79a68ee9ab
commit 9dbd614c5a
40 changed files with 849 additions and 529 deletions

View File

@@ -277,18 +277,63 @@
&:disabled { cursor: default; opacity: 0.7; }
}
.faction-count {
margin-left: 8px;
font-weight: bold;
color: var(--cel-orange);
min-width: 20px;
text-align: right;
// ── Badge d'état de blessure intégré dans header-stats-row ─────────────────
.wound-status-badge {
// Supprime le fond/bord générique du .header-stat
background: transparent;
border-color: currentColor;
label {
text-transform: uppercase;
white-space: nowrap;
}
.wound-value {
font-family: var(--cel-font-title);
font-size: 0.95em;
font-weight: bold;
white-space: nowrap;
line-height: 1.2;
}
.wound-duration { font-weight: normal; opacity: 0.85; }
.wound-malus { opacity: 0.9; }
// Niveaux 1-2 : aucun malus → vert doux
&.wound-level-1, &.wound-level-2 {
color: #6abf5e;
background: rgba(106,191,94,0.10);
label { color: #6abf5e; }
}
// Niveaux 3-4 : malus -1 → ambre
&.wound-level-3, &.wound-level-4 {
color: #e8a020;
background: rgba(232,160,32,0.13);
label { color: #e8a020; }
}
// Niveaux 5-6 : malus -2 → orange vif
&.wound-level-5, &.wound-level-6 {
color: #e06020;
background: rgba(224,96,32,0.13);
label { color: #e06020; }
}
// Niveau 7 : malus -3 → rouge
&.wound-level-7 {
color: #d43030;
background: rgba(212,48,48,0.13);
label { color: #d43030; }
}
// Niveau 8 : hors combat → rouge sombre + pulsation
&.wound-level-8 {
color: #c00;
background: rgba(192,0,0,0.18);
label { color: #c00; }
animation: wound-pulse 1.4s ease-in-out infinite;
}
}
.faction-value-input { width: 40px; margin-left: 8px; }
.faction-row {
pointer-events: auto !important;
td { pointer-events: auto !important; }
@keyframes wound-pulse {
0%, 100% { opacity: 1; }
50% { opacity: 0.55; }
}
}