Refonte complète du système Anomalies
- DataModel : renommage value→level (1-4), ajout usesRemaining (0-4), suppression scores/notes - Config : ajout ANOMALY_DEFINITIONS avec compétences applicables par type (8 anomalies) - Fiche item anomalie : header avec level/uses visuels (dots), barre de compétences applicables, 2 onglets Description + Technique/Narratif (suppression onglet Scores) - Fiche PJ onglet Domaines : bloc anomalie proéminent unique avec: - Nom + sous-type + icône - Dots niveau (●●○○) - Dots usages + bouton Utiliser + bouton Réinitialiser - Chips des domaines applicables - Actions : useAnomaly (décrémente usesRemaining), resetAnomalyUses (reset au niveau) - Contrainte : max 1 anomalie par personnage (drop + createAnomaly) - Helpers HBS : lte, gte, lt ajoutés - i18n : nouvelles clés Anomaly.* (level, usesRemaining, use, resetUses, etc.) - CSS : .anomaly-block sur fiche PJ, dots animés, .anomaly-uses-row sur fiche item Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
@@ -250,4 +250,187 @@
|
||||
.section-header { .cel-section-header(); }
|
||||
.enriched-html { font-size: 0.9em; line-height: 1.6; }
|
||||
}
|
||||
|
||||
// ── Bloc Anomalie sur l'onglet Domaines ──────────────────────────────────
|
||||
.anomaly-block {
|
||||
border: 1px solid rgba(196,154,26,0.5);
|
||||
border-radius: 4px;
|
||||
margin-bottom: 12px;
|
||||
overflow: hidden;
|
||||
|
||||
.anomaly-block-header {
|
||||
background: var(--cel-green);
|
||||
background-image: url("../assets/ui/fond_cadrille.jpg");
|
||||
background-blend-mode: soft-light;
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
padding: 5px 10px;
|
||||
border-bottom: 2px solid var(--cel-orange);
|
||||
|
||||
.anomaly-block-title {
|
||||
font-family: var(--cel-font-title);
|
||||
font-size: 0.85em;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.07em;
|
||||
color: var(--cel-orange);
|
||||
}
|
||||
a { color: var(--cel-orange-light); &:hover { color: var(--cel-orange); } }
|
||||
}
|
||||
|
||||
.anomaly-empty {
|
||||
padding: 12px;
|
||||
text-align: center;
|
||||
color: var(--cel-border);
|
||||
font-style: italic;
|
||||
font-size: 0.85em;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
gap: 6px;
|
||||
i { font-size: 1.1em; }
|
||||
}
|
||||
|
||||
.anomaly-content {
|
||||
padding: 8px 10px;
|
||||
background: rgba(240,232,212,0.06);
|
||||
|
||||
.anomaly-info-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
margin-bottom: 7px;
|
||||
|
||||
.anomaly-icon {
|
||||
width: 40px;
|
||||
height: 40px;
|
||||
object-fit: cover;
|
||||
border: 1px solid var(--cel-orange);
|
||||
border-radius: 3px;
|
||||
}
|
||||
|
||||
.anomaly-details {
|
||||
flex: 1;
|
||||
.anomaly-name {
|
||||
font-family: var(--cel-font-title);
|
||||
font-size: 1em;
|
||||
color: var(--cel-orange);
|
||||
font-weight: bold;
|
||||
}
|
||||
.anomaly-subtype {
|
||||
font-size: 0.75em;
|
||||
color: var(--cel-orange-light);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.05em;
|
||||
}
|
||||
}
|
||||
|
||||
.anomaly-controls {
|
||||
display: flex;
|
||||
gap: 6px;
|
||||
a { color: var(--cel-border); font-size: 0.9em; &:hover { color: var(--cel-orange); } }
|
||||
}
|
||||
}
|
||||
|
||||
.anomaly-level-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
margin-bottom: 6px;
|
||||
|
||||
.anomaly-level-label {
|
||||
font-size: 0.72em;
|
||||
text-transform: uppercase;
|
||||
color: var(--cel-orange-light);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.anomaly-level-dots {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
.anomaly-level-dot {
|
||||
width: 10px;
|
||||
height: 10px;
|
||||
border-radius: 50%;
|
||||
border: 2px solid var(--cel-orange);
|
||||
&.active { background: var(--cel-orange); }
|
||||
&.inactive { background: transparent; border-color: rgba(196,154,26,0.25); }
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.anomaly-uses-row {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 6px;
|
||||
flex-wrap: wrap;
|
||||
|
||||
.anomaly-uses-label {
|
||||
font-size: 0.72em;
|
||||
text-transform: uppercase;
|
||||
color: var(--cel-orange-light);
|
||||
white-space: nowrap;
|
||||
}
|
||||
|
||||
.anomaly-uses-dots {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
.anomaly-dot {
|
||||
width: 12px;
|
||||
height: 12px;
|
||||
border-radius: 50%;
|
||||
border: 2px solid var(--cel-orange);
|
||||
&.available { background: var(--cel-orange); }
|
||||
&.spent { background: transparent; }
|
||||
&.inactive { background: transparent; border-color: rgba(196,154,26,0.25); }
|
||||
}
|
||||
}
|
||||
|
||||
.anomaly-use-btn {
|
||||
background: var(--cel-green);
|
||||
border: 1px solid var(--cel-orange);
|
||||
color: var(--cel-orange);
|
||||
font-size: 0.72em;
|
||||
padding: 2px 8px;
|
||||
cursor: pointer;
|
||||
font-family: var(--cel-font-title);
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.04em;
|
||||
border-radius: 2px;
|
||||
transition: background 0.15s;
|
||||
&:hover:not(:disabled) { background: var(--cel-green-light); }
|
||||
&:disabled { opacity: 0.4; cursor: default; }
|
||||
}
|
||||
|
||||
.anomaly-reset-btn {
|
||||
color: var(--cel-border);
|
||||
font-size: 0.9em;
|
||||
&:hover { color: var(--cel-orange); }
|
||||
}
|
||||
}
|
||||
|
||||
.anomaly-skills {
|
||||
margin-top: 6px;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: 4px;
|
||||
align-items: center;
|
||||
|
||||
.anomaly-skills-label {
|
||||
font-size: 0.7em;
|
||||
color: var(--cel-border);
|
||||
text-transform: uppercase;
|
||||
}
|
||||
|
||||
.anomaly-skill-chip {
|
||||
background: rgba(196,154,26,0.1);
|
||||
border: 1px solid rgba(196,154,26,0.3);
|
||||
border-radius: 3px;
|
||||
padding: 1px 5px;
|
||||
font-size: 0.7em;
|
||||
color: var(--cel-orange-light);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user