Item ehnance, fixes on actor sheet

This commit is contained in:
2026-03-08 11:35:00 +01:00
parent e9abefd90d
commit aaf965c78a
13 changed files with 849 additions and 208 deletions

View File

@@ -67,15 +67,106 @@
flex: 1;
display: flex;
flex-direction: column;
gap: 4px;
gap: 6px;
min-width: 0;
}
.character-name {
display: flex;
align-items: center;
gap: 4px;
border-bottom: 1px solid @color-olive;
padding-bottom: 4px;
input { flex: 1; }
input {
flex: 1;
font-family: @font-primary;
font-size: @font-size-lg;
}
}
.character-identity-bar {
display: flex;
flex-direction: row;
align-items: center;
gap: 6px;
flex-wrap: wrap;
.identity-slot {
display: flex;
align-items: center;
gap: 4px;
padding: 2px 6px;
border: 1px solid @color-olive;
border-radius: 3px;
background: rgba(0,0,0,0.15);
font-size: @font-size-sm;
min-width: 6rem;
min-height: 1.6rem;
&.empty {
opacity: 0.6;
font-style: italic;
border-style: dashed;
}
.identity-img {
width: 18px;
height: 18px;
object-fit: cover;
border-radius: 2px;
border: none;
}
.identity-name {
flex: 1;
font-family: @font-secondary;
font-size: @font-size-sm;
}
.slot-icon { font-size: @font-size-sm; opacity: 0.6; }
.slot-placeholder { font-size: @font-size-sm; }
a { font-size: @font-size-sm; opacity: 0.7; &:hover { opacity: 1; } }
}
.identity-xp {
display: flex;
align-items: center;
gap: 3px;
margin-left: auto;
font-size: @font-size-sm;
.xp-label {
font-family: @font-secondary;
font-size: @font-size-sm;
color: @color-olive;
margin-left: 4px;
}
.xp-sep { opacity: 0.6; }
input {
width: 3rem;
text-align: center;
font-size: @font-size-sm;
padding: 1px 2px;
}
}
}
}
// Attributes + Arcane Stress side by side
.attributes-stress-row {
display: flex;
align-items: flex-start;
gap: 6px;
.character-attributes { flex: 1; }
.character-arcane-stress {
flex-shrink: 0;
width: auto;
}
}
@@ -186,17 +277,21 @@
gap: 2px;
}
// Arcane Stress narrow inputs
// Arcane Stress compact
.character-arcane-stress {
.flexrow {
.stress-inputs {
display: flex;
align-items: center;
justify-content: center;
gap: 4px;
}
// formInput renders a <div class="form-group"> — flatten it
div.form-group { display: contents; }
input {
min-width: 3rem;
max-width: 3rem;
width: 2.8rem;
text-align: center;
}
span { opacity: 0.6; }
}
// Defense display

View File

@@ -122,7 +122,7 @@
.skills-header,
.skill-row {
display: grid;
grid-template-columns: 1fr 3rem 3rem;
grid-template-columns: 1fr 2.5rem 2.5rem 2.5rem 5.5rem;
align-items: center;
gap: 4px;
}
@@ -135,6 +135,9 @@
border-bottom: 1px solid @color-olive;
margin-bottom: 2px;
padding-bottom: 2px;
span { text-align: center; }
.skill-name-col { text-align: left; }
}
.skill-row {
@@ -144,8 +147,46 @@
font-size: @font-size-sm;
}
.skill-rank-col input {
.skill-rank-col select,
.skill-modifier-col input {
width: 100%;
text-align: center;
font-size: @font-size-sm;
padding: 1px 2px;
}
.skill-color-col {
display: flex;
align-items: center;
gap: 2px;
.color-dice-dot {
display: inline-block;
width: 8px;
height: 8px;
border-radius: 50%;
flex-shrink: 0;
border: 1px solid rgba(0,0,0,0.3);
&.color-dice-white { background: #f0f0f0; }
&.color-dice-red { background: #d9534f; }
&.color-dice-black { background: #222; }
}
.color-dice-select {
flex: 1;
font-size: @font-size-sm;
padding: 1px 1px;
min-width: 0;
}
input[type="number"] {
width: 2.2rem;
text-align: center;
font-size: @font-size-sm;
padding: 1px 2px;
flex-shrink: 0;
}
}
.skill-total {

View File

@@ -10,45 +10,153 @@
padding: 0;
}
.item-entry {
display: flex;
// Header row shared by all lists
.item-list-header {
display: grid;
align-items: center;
gap: 6px;
padding: 3px 4px;
border-bottom: 1px solid @color-olive-faint;
gap: 4px;
padding: 2px 4px 3px;
border-bottom: 1px solid @color-olive;
margin-bottom: 2px;
font-family: @font-secondary;
font-size: @font-size-xs;
color: @color-blue;
span { text-align: center; }
.col-name { text-align: left; }
}
// Data row
.item-entry {
display: grid;
align-items: center;
gap: 4px;
padding: 2px 4px;
border-bottom: 1px solid @color-olive-faint;
&:hover { background-color: @color-blue-hover; }
.item-img {
height: @item-img-size;
width: @item-img-size;
height: @item-img-size;
border: 1px solid @color-olive;
border-radius: 2px;
object-fit: cover;
align-self: center;
justify-self: center;
flex-shrink: 0;
}
.item-name {
flex: 1;
font-family: @font-body;
font-size: @font-size-base;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
min-width: 0;
}
.item-detail {
font-size: @font-size-xs;
color: @color-olive;
min-width: 4rem;
text-align: center;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
.item-type {
font-size: @font-size-sm;
font-size: @font-size-xs;
color: @color-blue;
min-width: 6rem;
text-align: center;
overflow: hidden;
text-overflow: ellipsis;
white-space: nowrap;
}
a {
.transition-opacity();
&:hover { color: @color-blue; }
.item-equipped {
display: flex;
align-items: center;
justify-content: center;
input[type="checkbox"] {
width: 0.95rem;
height: 0.95rem;
cursor: pointer;
margin: 0;
}
}
.item-actions {
display: flex;
align-items: center;
justify-content: flex-end;
gap: 4px;
a {
.transition-opacity();
font-size: @font-size-sm;
&:hover { color: @color-blue; }
}
}
}
// ── Per-list grid templates ──────────────────────────────
// Format: [img] [name] [detail cols...] [equipped?] [actions]
.item-list--weapon {
.item-list-header, .item-entry {
grid-template-columns: @item-img-size 1fr 5.5rem 3rem 1.8rem 3.5rem;
}
}
.item-list--armor {
.item-list-header, .item-entry {
grid-template-columns: @item-img-size 1fr 3.5rem 5rem 1.8rem 3.5rem;
}
}
.item-list--ammo {
.item-list-header, .item-entry {
grid-template-columns: @item-img-size 1fr 4rem 3.5rem;
}
}
.item-list--spell {
.item-list-header, .item-entry {
grid-template-columns: @item-img-size 1fr 3rem 6rem 3rem 3.5rem;
}
}
.item-list--miracle {
.item-list-header, .item-entry {
grid-template-columns: @item-img-size 1fr 4.5rem 3.5rem;
}
}
.item-list--equipment {
.item-list-header, .item-entry {
grid-template-columns: @item-img-size 1fr 5rem 3rem 3.5rem;
}
}
.item-list--magic-item {
.item-list-header, .item-entry {
grid-template-columns: @item-img-size 1fr 5rem 3.5rem;
}
}
.item-list--condition {
.item-list-header, .item-entry {
grid-template-columns: @item-img-size 1fr 5.5rem 3.5rem;
}
}
.item-list--ability {
.item-list-header, .item-entry {
grid-template-columns: @item-img-size 1fr 6rem 3.5rem;
}
}
.item-list--oath {
.item-list-header, .item-entry {
grid-template-columns: @item-img-size 1fr 5.5rem 3.5rem;
}
}