Correction compendiums

This commit is contained in:
2026-04-27 21:30:33 +02:00
parent 1e252ff6f2
commit bc49286f91
76 changed files with 1645 additions and 73 deletions
+355
View File
@@ -3833,3 +3833,358 @@ ol.item-list li.item .item-controls a.item-control:hover {
color: #ff3d5a;
text-shadow: 0 0 5px rgba(255, 61, 90, 0.4);
}
/* ============================================================
ROUE D'INITIATIVE — CDEWheelApp
============================================================ */
.cde-wheel-app {
color: #e2e8f4;
background: #080c14;
font-family: "Averia", "Averia Regular", sans-serif;
}
.cde-wheel-app .window-content {
padding: 0;
overflow: hidden;
}
/* Two-column layout: SVG wheel left, panel right */
.cde-wheel-layout {
display: flex;
height: 100%;
min-height: 520px;
}
/* ---- Left: SVG wheel ---- */
.cde-wheel-svg-container {
flex: 0 0 480px;
width: 480px;
padding: 12px 12px 6px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: #0d1520;
border-right: 1px solid #1a2436;
}
.cde-wheel-svg-container svg {
flex: 1 1 auto;
width: 100%;
max-width: 456px;
max-height: 456px;
overflow: visible;
}
.cde-wheel-svg-container .cde-wheel-legend {
display: flex;
align-items: center;
gap: 8px;
padding: 4px 0 2px;
font-size: 11px;
color: rgba(255, 255, 255, 0.55);
flex-shrink: 0;
}
.cde-wheel-svg-container .cde-wheel-legend-dot {
display: inline-block;
width: 10px;
height: 10px;
border-radius: 50%;
flex-shrink: 0;
}
.cde-wheel-svg-container .cde-wheel-segment {
stroke: #080c14;
stroke-width: 1.5;
transition: opacity 0.2s;
}
.cde-wheel-svg-container .cde-wheel-cran-label {
font-family: "Averia Regular", sans-serif;
font-size: 12px;
fill: rgba(255, 255, 255, 0.55);
text-anchor: middle;
dominant-baseline: central;
pointer-events: none;
user-select: none;
}
.cde-wheel-svg-container .cde-wheel-fighter-circle {
stroke-width: 2;
cursor: pointer;
transition: r 0.2s, stroke-width 0.2s;
}
.cde-wheel-svg-container .cde-wheel-fighter-circle:hover {
stroke-width: 3;
}
.cde-wheel-svg-container .cde-wheel-fighter-circle.is-active {
r: 18;
stroke-width: 3;
filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.7));
}
.cde-wheel-svg-container .cde-wheel-fighter-circle.is-turn {
stroke-dasharray: 3 2;
animation: cde-spin 4s linear infinite;
}
.cde-wheel-svg-container .cde-wheel-fighter-initial {
font-size: 13px;
font-weight: 700;
fill: #fff;
text-anchor: middle;
dominant-baseline: central;
pointer-events: none;
}
/* ---- Right: panel ---- */
.cde-wheel-panel {
flex: 1 1 auto;
display: flex;
flex-direction: column;
overflow: hidden;
padding: 0;
min-width: 0;
}
.cde-wheel-section-title {
padding: 7px 12px 6px;
border-bottom: 1px solid #1a2436;
background: #0d1520;
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.12em;
color: #7d94b8;
border-left: 3px solid #4a9eff;
flex-shrink: 0;
}
.cde-wheel-section-title em {
font-style: normal;
color: #e2e8f4;
text-transform: none;
letter-spacing: 0;
font-size: 11px;
}
/* Combatant list */
.cde-wheel-combatants {
flex: 0 0 auto;
max-height: 130px;
overflow-y: auto;
border-bottom: 1px solid #1a2436;
}
.cde-wheel-combatant {
display: flex;
align-items: center;
gap: 8px;
padding: 6px 12px 6px 9px;
cursor: pointer;
border-bottom: 1px solid rgba(26, 36, 54, 0.5);
border-left: 3px solid transparent;
transition: background 0.15s, border-color 0.15s;
}
.cde-wheel-combatant:last-child {
border-bottom: none;
}
.cde-wheel-combatant:hover {
background: #101622;
}
.cde-wheel-combatant.cde-wheel-combatant--selected {
background: rgba(74, 158, 255, 0.1);
border-left-color: #4a9eff;
}
.cde-wheel-combatant.cde-wheel-combatant--selected .cde-wheel-combatant-name {
color: #e2e8f4;
font-weight: 600;
}
.cde-wheel-combatant.cde-wheel-combatant--active .cde-wheel-active-marker {
color: #f0c040;
filter: drop-shadow(0 0 3px #f0c040);
}
.cde-wheel-combatant-img {
width: 30px;
height: 30px;
border-radius: 50%;
object-fit: cover;
border: 1.5px solid #263853;
flex-shrink: 0;
}
.cde-wheel-combatant-name {
flex: 1 1 auto;
font-size: 13px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: #7d94b8;
}
.cde-wheel-combatant-cran {
font-size: 11px;
font-weight: 700;
font-variant-numeric: tabular-nums;
flex-shrink: 0;
min-width: 22px;
text-align: center;
padding: 2px 6px;
border-radius: 12px;
line-height: 1.3;
}
.cde-wheel-active-marker {
font-size: 10px;
color: #7d94b8;
flex-shrink: 0;
}
/* Action area */
.cde-wheel-actions {
flex: 1 1 auto;
display: flex;
flex-direction: column;
overflow-y: auto;
padding: 8px 10px 10px;
gap: 6px;
}
.cde-wheel-actions.cde-wheel-actions--hint {
justify-content: center;
align-items: center;
}
.cde-wheel-hint {
color: #7d94b8;
font-size: 12px;
text-align: center;
font-style: italic;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
}
.cde-wheel-hint i {
font-size: 22px;
opacity: 0.4;
}
.cde-wheel-action-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 5px;
}
.cde-wheel-action-btn {
display: flex;
align-items: center;
justify-content: space-between;
gap: 4px;
background: #101622;
border: 1px solid #263853;
border-radius: 5px;
color: #7d94b8;
font-size: 11px;
padding: 5px 7px;
cursor: pointer;
text-align: left;
transition: background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.15s;
font-family: inherit;
}
.cde-wheel-action-btn:hover {
color: #e2e8f4;
background: #1a2436;
border-color: #263853;
}
.cde-wheel-action-btn .cde-wheel-action-name {
flex: 1 1 auto;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.cde-wheel-action-btn .cde-wheel-action-cost {
flex-shrink: 0;
font-weight: 700;
font-size: 10px;
padding: 1px 5px;
border-radius: 10px;
background: #263853;
color: #7d94b8;
line-height: 1.4;
}
.cde-wheel-action-btn[data-cost="1"]:hover {
box-shadow: 0 0 6px rgba(74, 158, 255, 0.22);
}
.cde-wheel-action-btn[data-cost="1"] .cde-wheel-action-cost {
background: #1a3d6a;
color: #6aadff;
}
.cde-wheel-action-btn[data-cost="2"]:hover {
box-shadow: 0 0 6px rgba(212, 160, 80, 0.25);
}
.cde-wheel-action-btn[data-cost="2"] .cde-wheel-action-cost {
background: #4a3200;
color: #d4a050;
}
.cde-wheel-action-btn[data-cost="3"]:hover {
box-shadow: 0 0 6px rgba(224, 96, 48, 0.28);
}
.cde-wheel-action-btn[data-cost="3"] .cde-wheel-action-cost {
background: #4a1800;
color: #e07840;
}
.cde-wheel-action-btn[data-cost="6"] {
border-color: rgba(204, 32, 64, 0.4);
}
.cde-wheel-action-btn[data-cost="6"]:hover {
box-shadow: 0 0 6px rgba(204, 32, 64, 0.35);
}
.cde-wheel-action-btn[data-cost="6"] .cde-wheel-action-cost {
background: #4a0814;
color: #e03050;
}
/* Special action buttons */
.cde-wheel-special-actions {
display: flex;
gap: 6px;
margin-top: 2px;
}
.cde-wheel-btn-roll,
.cde-wheel-btn-surprise {
flex: 1 1 0;
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
border-radius: 5px;
font-size: 11px;
font-weight: 600;
padding: 7px 8px;
cursor: pointer;
font-family: inherit;
transition: background 0.15s, box-shadow 0.15s;
border: 1px solid;
}
.cde-wheel-btn-roll {
background: rgba(192, 138, 0, 0.14);
border-color: rgba(192, 138, 0, 0.5);
color: #e0b030;
}
.cde-wheel-btn-roll:hover {
background: rgba(192, 138, 0, 0.26);
box-shadow: 0 0 8px rgba(192, 138, 0, 0.4);
}
.cde-wheel-btn-surprise {
background: rgba(255, 61, 90, 0.12);
border-color: rgba(255, 61, 90, 0.45);
color: #ff3d5a;
}
.cde-wheel-btn-surprise:hover {
background: rgba(255, 61, 90, 0.24);
box-shadow: 0 0 8px rgba(255, 61, 90, 0.35);
}
/* No-combat empty state */
.cde-wheel-no-combat {
flex: 1 1 auto;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
color: #7d94b8;
gap: 8px;
padding: 20px;
text-align: center;
font-size: 12px;
}
.cde-wheel-no-combat i {
font-size: 28px;
opacity: 0.4;
}
/* Spin animation for active-turn token */
@keyframes cde-spin {
from {
transform-origin: var(--fx) var(--fy);
transform: rotate(0deg);
}
to {
transform-origin: var(--fx) var(--fy);
transform: rotate(360deg);
}
}
+393
View File
@@ -3951,3 +3951,396 @@ ol.item-list {
text-shadow: 0 0 5px fade(@cde-kungfu, 40%);
}
}
/* ============================================================
ROUE D'INITIATIVE — CDEWheelApp
============================================================ */
// Wu Xing segment colours (match JS constants)
@wu-metal: #b8c4cc;
@wu-water: #3a7bd5;
@wu-earth: #c8a84b;
@wu-fire: #d94f3d;
@wu-wood: #4a9b5a;
@wu-reference: #2c1f6b;
.cde-wheel-app {
color: @cde-text;
background: @cde-bg;
font-family: "Averia", "Averia Regular", sans-serif;
.window-content {
padding: 0;
overflow: hidden;
}
}
/* Two-column layout: SVG wheel left, panel right */
.cde-wheel-layout {
display: flex;
height: 100%;
min-height: 520px;
}
/* ---- Left: SVG wheel ---- */
.cde-wheel-svg-container {
flex: 0 0 480px;
width: 480px;
padding: 12px 12px 6px;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
background: @cde-surface2;
border-right: 1px solid @cde-border;
svg {
flex: 1 1 auto;
width: 100%;
max-width: 456px;
max-height: 456px;
overflow: visible;
}
.cde-wheel-legend {
display: flex;
align-items: center;
gap: 8px;
padding: 4px 0 2px;
font-size: 11px;
color: rgba(255,255,255,0.55);
flex-shrink: 0;
}
.cde-wheel-legend-dot {
display: inline-block;
width: 10px;
height: 10px;
border-radius: 50%;
flex-shrink: 0;
}
.cde-wheel-segment {
stroke: @cde-bg;
stroke-width: 1.5;
transition: opacity 0.2s;
}
.cde-wheel-cran-label {
font-family: "Averia Regular", sans-serif;
font-size: 12px;
fill: rgba(255,255,255,0.55);
text-anchor: middle;
dominant-baseline: central;
pointer-events: none;
user-select: none;
}
// Combatant token circle on the wheel
.cde-wheel-fighter-circle {
stroke-width: 2;
cursor: pointer;
transition: r 0.2s, stroke-width 0.2s;
&:hover {
stroke-width: 3;
}
&.is-active {
r: 18;
stroke-width: 3;
filter: drop-shadow(0 0 5px rgba(255, 255, 255, 0.7));
}
&.is-turn {
stroke-dasharray: 3 2;
animation: cde-spin 4s linear infinite;
}
}
.cde-wheel-fighter-initial {
font-size: 13px;
font-weight: 700;
fill: #fff;
text-anchor: middle;
dominant-baseline: central;
pointer-events: none;
}
}
/* ---- Right: panel ---- */
.cde-wheel-panel {
flex: 1 1 auto;
display: flex;
flex-direction: column;
overflow: hidden;
padding: 0;
min-width: 0;
}
.cde-wheel-section-title {
padding: 7px 12px 6px;
border-bottom: 1px solid @cde-border;
background: @cde-surface2;
font-size: 10px;
font-weight: 700;
text-transform: uppercase;
letter-spacing: 0.12em;
color: @cde-muted;
border-left: 3px solid @cde-spell;
flex-shrink: 0;
em {
font-style: normal;
color: @cde-text;
text-transform: none;
letter-spacing: 0;
font-size: 11px;
}
}
/* Combatant list */
.cde-wheel-combatants {
flex: 0 0 auto;
max-height: 130px;
overflow-y: auto;
border-bottom: 1px solid @cde-border;
}
.cde-wheel-combatant {
display: flex;
align-items: center;
gap: 8px;
padding: 6px 12px 6px 9px;
cursor: pointer;
border-bottom: 1px solid fade(@cde-border, 50%);
border-left: 3px solid transparent;
transition: background 0.15s, border-color 0.15s;
&:last-child { border-bottom: none; }
&:hover {
background: @cde-surface;
}
&.cde-wheel-combatant--selected {
background: fade(@cde-spell, 10%);
border-left-color: @cde-spell;
.cde-wheel-combatant-name {
color: @cde-text;
font-weight: 600;
}
}
&.cde-wheel-combatant--active {
.cde-wheel-active-marker {
color: #f0c040;
filter: drop-shadow(0 0 3px #f0c040);
}
}
}
.cde-wheel-combatant-img {
width: 30px;
height: 30px;
border-radius: 50%;
object-fit: cover;
border: 1.5px solid @cde-border-hi;
flex-shrink: 0;
}
.cde-wheel-combatant-name {
flex: 1 1 auto;
font-size: 13px;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
color: @cde-muted;
}
.cde-wheel-combatant-cran {
font-size: 11px;
font-weight: 700;
font-variant-numeric: tabular-nums;
flex-shrink: 0;
min-width: 22px;
text-align: center;
padding: 2px 6px;
border-radius: 12px;
line-height: 1.3;
}
.cde-wheel-active-marker {
font-size: 10px;
color: @cde-muted;
flex-shrink: 0;
}
/* Action area */
.cde-wheel-actions {
flex: 1 1 auto;
display: flex;
flex-direction: column;
overflow-y: auto;
padding: 8px 10px 10px;
gap: 6px;
&.cde-wheel-actions--hint {
justify-content: center;
align-items: center;
}
}
.cde-wheel-hint {
color: @cde-muted;
font-size: 12px;
text-align: center;
font-style: italic;
display: flex;
flex-direction: column;
align-items: center;
gap: 8px;
i {
font-size: 22px;
opacity: 0.4;
}
}
.cde-wheel-action-grid {
display: grid;
grid-template-columns: 1fr 1fr;
gap: 5px;
}
.cde-wheel-action-btn {
display: flex;
align-items: center;
justify-content: space-between;
gap: 4px;
background: @cde-surface;
border: 1px solid @cde-border-hi;
border-radius: @cde-radius-sm;
color: @cde-muted;
font-size: 11px;
padding: 5px 7px;
cursor: pointer;
text-align: left;
transition: background 0.15s, border-color 0.15s, color 0.15s, box-shadow 0.15s;
font-family: inherit;
&:hover {
color: @cde-text;
background: @cde-border;
border-color: @cde-border-hi;
}
.cde-wheel-action-name {
flex: 1 1 auto;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.cde-wheel-action-cost {
flex-shrink: 0;
font-weight: 700;
font-size: 10px;
padding: 1px 5px;
border-radius: 10px;
background: @cde-border-hi;
color: @cde-muted;
line-height: 1.4;
}
&[data-cost="1"] {
&:hover { box-shadow: 0 0 6px fade(@cde-spell, 22%); }
.cde-wheel-action-cost { background: #1a3d6a; color: #6aadff; }
}
&[data-cost="2"] {
&:hover { box-shadow: 0 0 6px fade(#d4a050, 25%); }
.cde-wheel-action-cost { background: #4a3200; color: #d4a050; }
}
&[data-cost="3"] {
&:hover { box-shadow: 0 0 6px fade(#e06030, 28%); }
.cde-wheel-action-cost { background: #4a1800; color: #e07840; }
}
&[data-cost="6"] {
border-color: fade(#cc2040, 40%);
&:hover { box-shadow: 0 0 6px fade(#cc2040, 35%); }
.cde-wheel-action-cost { background: #4a0814; color: #e03050; }
}
}
/* Special action buttons */
.cde-wheel-special-actions {
display: flex;
gap: 6px;
margin-top: 2px;
}
.cde-wheel-btn-roll,
.cde-wheel-btn-surprise {
flex: 1 1 0;
display: flex;
align-items: center;
justify-content: center;
gap: 6px;
border-radius: @cde-radius-sm;
font-size: 11px;
font-weight: 600;
padding: 7px 8px;
cursor: pointer;
font-family: inherit;
transition: background 0.15s, box-shadow 0.15s;
border: 1px solid;
}
.cde-wheel-btn-roll {
background: fade(#c08a00, 14%);
border-color: fade(#c08a00, 50%);
color: #e0b030;
&:hover {
background: fade(#c08a00, 26%);
box-shadow: 0 0 8px fade(#c08a00, 40%);
}
}
.cde-wheel-btn-surprise {
background: fade(@cde-kungfu, 12%);
border-color: fade(@cde-kungfu, 45%);
color: @cde-kungfu;
&:hover {
background: fade(@cde-kungfu, 24%);
box-shadow: 0 0 8px fade(@cde-kungfu, 35%);
}
}
/* No-combat empty state */
.cde-wheel-no-combat {
flex: 1 1 auto;
display: flex;
flex-direction: column;
align-items: center;
justify-content: center;
color: @cde-muted;
gap: 8px;
padding: 20px;
text-align: center;
font-size: 12px;
i {
font-size: 28px;
opacity: 0.4;
}
}
/* Spin animation for active-turn token */
@keyframes cde-spin {
from { transform-origin: var(--fx) var(--fy); transform: rotate(0deg); }
to { transform-origin: var(--fx) var(--fy); transform: rotate(360deg); }
}