feat: implémentation complète du système Célestopol 1922 pour FoundryVTT v13
- DataModels (character, npc, anomaly, aspect, attribute, equipment) - ApplicationV2 sheets (character 5 tabs, npc 3 tabs, 4 item sheets) - DialogV2 pour les jets de dés avec phase de lune - Templates Handlebars complets (fiches PJ/PNJ, items, jet, chat) - Styles LESS → CSS compilé (thème vert foncé / orange CopaseticNF) - i18n fr.json complet (clés CELESTOPOL.*) - Point d'entrée fvtt-celestopol.mjs avec hooks init/ready - Assets : polices CopaseticNF, images UI, icônes items - Mise à jour copilot-instructions.md avec l'architecture réelle Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
This commit is contained in:
177
styles/roll.less
Normal file
177
styles/roll.less
Normal file
@@ -0,0 +1,177 @@
|
||||
// ─── Roll dialog ─────────────────────────────────────────────────────────────
|
||||
|
||||
.roll-dialog.celestopol {
|
||||
padding: 8px 12px;
|
||||
font-family: var(--cel-font-body, "Palatino Linotype", serif);
|
||||
|
||||
.roll-title {
|
||||
text-align: center;
|
||||
font-family: var(--cel-font-title, "CopaseticNF", serif);
|
||||
font-size: 1.1em;
|
||||
color: var(--cel-green, rgb(12,76,12));
|
||||
margin-bottom: 10px;
|
||||
|
||||
.separator {
|
||||
margin: 0 6px;
|
||||
color: var(--cel-orange, #e07b00);
|
||||
}
|
||||
}
|
||||
|
||||
.form-group {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
margin-bottom: 8px;
|
||||
|
||||
label {
|
||||
flex: 0 0 140px;
|
||||
font-size: 0.85em;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.04em;
|
||||
color: var(--cel-green, rgb(12,76,12));
|
||||
}
|
||||
|
||||
select, input[type="number"] {
|
||||
flex: 1;
|
||||
border: 1px solid var(--cel-border, #8b7355);
|
||||
border-radius: 2px;
|
||||
padding: 2px 6px;
|
||||
background: rgba(255,255,255,0.7);
|
||||
}
|
||||
}
|
||||
|
||||
.dice-preview {
|
||||
text-align: center;
|
||||
font-size: 1em;
|
||||
margin-top: 10px;
|
||||
padding: 6px;
|
||||
background: rgba(12,76,12,0.08);
|
||||
border-radius: 4px;
|
||||
border: 1px solid var(--cel-green, rgb(12,76,12));
|
||||
|
||||
.nb-dice {
|
||||
font-family: var(--cel-font-title, "CopaseticNF", serif);
|
||||
font-size: 1.5em;
|
||||
color: var(--cel-orange, #e07b00);
|
||||
font-weight: bold;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
// ─── Chat message ─────────────────────────────────────────────────────────────
|
||||
|
||||
.celestopol.chat-roll {
|
||||
border: 1px solid var(--cel-border, #8b7355);
|
||||
border-radius: 4px;
|
||||
overflow: hidden;
|
||||
font-family: var(--cel-font-body, "Palatino Linotype", serif);
|
||||
|
||||
.roll-header {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
background: var(--cel-green, rgb(12,76,12));
|
||||
padding: 6px 8px;
|
||||
|
||||
.actor-img {
|
||||
width: 36px;
|
||||
height: 36px;
|
||||
object-fit: cover;
|
||||
border: 1px solid var(--cel-orange, #e07b00);
|
||||
border-radius: 2px;
|
||||
}
|
||||
|
||||
.roll-info {
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
.actor-name {
|
||||
font-family: var(--cel-font-title, "CopaseticNF", serif);
|
||||
color: var(--cel-orange, #e07b00);
|
||||
font-weight: bold;
|
||||
}
|
||||
.skill-info {
|
||||
color: var(--cel-cream, #f5f0e8);
|
||||
font-size: 0.8em;
|
||||
font-style: italic;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.roll-details {
|
||||
padding: 8px;
|
||||
background: var(--cel-cream, #f5f0e8);
|
||||
|
||||
.dice-results {
|
||||
display: flex;
|
||||
gap: 4px;
|
||||
flex-wrap: wrap;
|
||||
margin-bottom: 6px;
|
||||
|
||||
.die.d6 {
|
||||
display: inline-flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
width: 28px;
|
||||
height: 28px;
|
||||
border: 2px solid var(--cel-border, #8b7355);
|
||||
border-radius: 4px;
|
||||
background: white;
|
||||
font-weight: bold;
|
||||
font-size: 1em;
|
||||
}
|
||||
}
|
||||
|
||||
.bonus-line {
|
||||
display: flex;
|
||||
justify-content: space-between;
|
||||
font-size: 0.85em;
|
||||
color: #666;
|
||||
padding: 1px 0;
|
||||
}
|
||||
|
||||
.roll-total-line {
|
||||
display: flex;
|
||||
align-items: center;
|
||||
gap: 8px;
|
||||
margin-top: 6px;
|
||||
padding-top: 4px;
|
||||
border-top: 1px solid var(--cel-border, #8b7355);
|
||||
|
||||
.total-label {
|
||||
text-transform: uppercase;
|
||||
font-size: 0.75em;
|
||||
color: var(--cel-green, rgb(12,76,12));
|
||||
}
|
||||
|
||||
.total-value {
|
||||
font-family: var(--cel-font-title, "CopaseticNF", serif);
|
||||
font-size: 1.6em;
|
||||
font-weight: bold;
|
||||
color: var(--cel-orange, #e07b00);
|
||||
}
|
||||
|
||||
.vs-difficulty {
|
||||
font-size: 0.8em;
|
||||
color: #999;
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
.roll-result-banner {
|
||||
text-align: center;
|
||||
padding: 4px 8px;
|
||||
font-family: var(--cel-font-title, "CopaseticNF", serif);
|
||||
font-size: 1.1em;
|
||||
text-transform: uppercase;
|
||||
letter-spacing: 0.08em;
|
||||
|
||||
&.success { background: var(--cel-green, rgb(12,76,12)); color: var(--cel-orange, #e07b00); }
|
||||
&.failure { background: #4a1a1a; color: #e0a0a0; }
|
||||
|
||||
.critical {
|
||||
display: block;
|
||||
font-size: 0.75em;
|
||||
letter-spacing: 0.12em;
|
||||
}
|
||||
}
|
||||
}
|
||||
Reference in New Issue
Block a user