307 lines
7.1 KiB
Plaintext
307 lines
7.1 KiB
Plaintext
// ============================================================
|
||
// NPC SHEET — layout, vitals, skills, traits
|
||
// ============================================================
|
||
|
||
.oathhammer .npc-main {
|
||
.npc-left {
|
||
min-width: @npc-left-width;
|
||
max-width: @npc-left-width;
|
||
flex-shrink: 0;
|
||
|
||
.actor-img {
|
||
width: 100%;
|
||
height: 170px;
|
||
object-fit: cover;
|
||
object-position: center top;
|
||
}
|
||
}
|
||
|
||
.npc-right {
|
||
flex: 1;
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 6px;
|
||
min-width: 0;
|
||
}
|
||
|
||
// Name row
|
||
.character-name {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 4px;
|
||
border-bottom: 1px solid @color-olive;
|
||
padding-bottom: 4px;
|
||
|
||
input {
|
||
flex: 1;
|
||
font-family: @font-primary;
|
||
font-size: @font-size-lg;
|
||
}
|
||
}
|
||
|
||
// Vitals: 2×2 grid (Grit | Defense / Armor | Movement)
|
||
.npc-vitals-grid {
|
||
display: grid;
|
||
grid-template-columns: 1fr 1fr 1fr;
|
||
gap: 4px 10px;
|
||
padding: 4px 6px;
|
||
border: 1px solid @color-olive;
|
||
border-radius: 3px;
|
||
background: rgba(0, 0, 0, 0.08);
|
||
|
||
.npc-vital {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 4px;
|
||
|
||
.vital-label {
|
||
font-family: @font-secondary;
|
||
font-size: @font-size-sm;
|
||
font-weight: bold;
|
||
color: @color-dark;
|
||
white-space: nowrap;
|
||
min-width: 4.5rem;
|
||
}
|
||
|
||
.vital-roll-label {
|
||
cursor: pointer;
|
||
color: @color-blue;
|
||
transition: color 0.15s;
|
||
i { margin-right: 2px; font-size: 0.75rem; }
|
||
&:hover { color: @color-gold; text-decoration: underline; }
|
||
}
|
||
|
||
.vital-value {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 3px;
|
||
flex: 1;
|
||
|
||
div.form-group { display: contents; }
|
||
|
||
input, .npc-num-input {
|
||
width: 2.8rem;
|
||
text-align: center;
|
||
font-size: @font-size-sm;
|
||
padding: 1px 2px;
|
||
}
|
||
|
||
.res-sep { opacity: 0.6; font-size: @font-size-xs; }
|
||
}
|
||
}
|
||
|
||
.npc-vital-grit .vital-value {
|
||
.grit-btn {
|
||
display: inline-flex;
|
||
align-items: center;
|
||
justify-content: center;
|
||
width: 1.2rem;
|
||
height: 1.2rem;
|
||
font-size: 0.85rem;
|
||
font-weight: bold;
|
||
line-height: 1;
|
||
border: 1px solid @color-olive;
|
||
border-radius: 3px;
|
||
background: @color-olive-faint;
|
||
color: @color-dark;
|
||
cursor: pointer;
|
||
user-select: none;
|
||
flex-shrink: 0;
|
||
&:hover { background: @color-gold; border-color: @color-gold; }
|
||
}
|
||
}
|
||
}
|
||
|
||
// Statistics fieldset grid
|
||
}
|
||
|
||
// Inline color badge (emoji in play mode)
|
||
.oathhammer .npc-color-badge {
|
||
font-size: 0.85rem;
|
||
flex-shrink: 0;
|
||
line-height: 1;
|
||
}
|
||
|
||
// Inline color dropdown (in edit mode) — fixed width so it doesn't stretch the grid
|
||
.oathhammer .npc-color-select {
|
||
width: 88px;
|
||
max-width: 88px;
|
||
flex-shrink: 0;
|
||
font-size: @font-size-xs;
|
||
padding: 0 2px;
|
||
height: 20px;
|
||
min-width: 0;
|
||
}
|
||
|
||
// Subtype badge (play mode) / select (edit mode)
|
||
.oathhammer .npc-subtype-badge {
|
||
font-size: @font-size-base;
|
||
font-weight: 600;
|
||
color: @color-dark;
|
||
background: fade(@color-gold, 20%);
|
||
border: 1px solid fade(@color-gold, 50%);
|
||
border-radius: 3px;
|
||
padding: 1px 8px;
|
||
}
|
||
|
||
.oathhammer .npc-subtype-select {
|
||
font-size: @font-size-sm;
|
||
padding: 0 2px;
|
||
height: 20px;
|
||
min-width: 80px;
|
||
}
|
||
|
||
// ============================================================
|
||
// NPC SKILLS TAB
|
||
// ============================================================
|
||
|
||
// Color emoji indicator per dice type
|
||
.oathhammer .npc-skill-color {
|
||
font-size: 0.95rem;
|
||
text-align: center;
|
||
line-height: 1;
|
||
justify-self: center;
|
||
}
|
||
.oathhammer .npc-skill-color-white { opacity: 0.75; }
|
||
.oathhammer .npc-skill-color-red { color: #cc4444; }
|
||
.oathhammer .npc-skill-color-black { color: #333; font-weight: bold; }
|
||
|
||
// Roll button in skill list
|
||
.oathhammer .npc-skill-roll-btn {
|
||
color: @color-gold;
|
||
padding: 2px 4px;
|
||
border: 1px solid fade(@color-gold, 40%);
|
||
border-radius: 3px;
|
||
font-size: @font-size-sm;
|
||
text-align: center;
|
||
justify-self: center;
|
||
&:hover { background: fade(@color-gold, 15%); }
|
||
}
|
||
|
||
// ============================================================
|
||
// NPC TRAITS TAB
|
||
// ============================================================
|
||
|
||
// Type badge used in traits list
|
||
.oathhammer .npc-trait-type-badge {
|
||
font-size: 0.72rem;
|
||
padding: 1px 5px;
|
||
border-radius: 3px;
|
||
white-space: nowrap;
|
||
background: fade(@color-gold, 15%);
|
||
border: 1px solid fade(@color-gold, 35%);
|
||
color: @color-dark;
|
||
text-align: center;
|
||
overflow: hidden;
|
||
text-overflow: ellipsis;
|
||
}
|
||
|
||
// ============================================================
|
||
// NPC SKILL DIALOG
|
||
// ============================================================
|
||
|
||
.npc-skill-dialog {
|
||
display: flex;
|
||
flex-direction: column;
|
||
gap: 8px;
|
||
padding: 4px 0;
|
||
}
|
||
|
||
|
||
// ============================================================
|
||
// REGIMENT ACTOR SHEET overrides
|
||
// ============================================================
|
||
|
||
// Regiment uses the same .npc-main structure but split into 2 rows
|
||
.oathhammer .npc-main .regiment-vitals-grid {
|
||
&.regiment-row1 { grid-template-columns: 1fr 1fr 1fr; }
|
||
&.regiment-row2 {
|
||
grid-template-columns: 1fr 1fr;
|
||
border-top: none;
|
||
margin-top: 4px;
|
||
padding-top: 4px;
|
||
border-top: 1px dashed fade(@color-olive, 50%);
|
||
}
|
||
}
|
||
|
||
// Regiment portrait — same dimensions as settlement sheet
|
||
.oathhammer .regiment-content .npc-left {
|
||
min-width: 94px;
|
||
max-width: 94px;
|
||
|
||
.actor-img {
|
||
width: 94px;
|
||
height: 110px;
|
||
object-fit: cover;
|
||
object-position: center top;
|
||
border: 2px solid fade(@color-dark, 40%);
|
||
border-radius: 4px;
|
||
cursor: pointer;
|
||
flex-shrink: 0;
|
||
flex-grow: 0;
|
||
}
|
||
}
|
||
|
||
// Regiment fieldset — remove default fieldset border for clean header look
|
||
.oathhammer .regiment-fieldset {
|
||
border: none;
|
||
padding: 0;
|
||
margin: 0;
|
||
}
|
||
|
||
// ── Regiment leader row ───────────────────────────────────────
|
||
.oathhammer .regiment-leader-row {
|
||
display: flex;
|
||
align-items: center;
|
||
gap: 6px;
|
||
margin-top: 5px;
|
||
padding: 4px 6px;
|
||
border: 1px dashed fade(@color-olive, 60%);
|
||
border-radius: 3px;
|
||
background: rgba(0,0,0,0.04);
|
||
min-height: 28px;
|
||
|
||
.regiment-leader-label {
|
||
font-family: @font-secondary;
|
||
font-size: @font-size-sm;
|
||
font-weight: bold;
|
||
color: @color-dark;
|
||
white-space: nowrap;
|
||
min-width: 5.5rem;
|
||
}
|
||
|
||
.regiment-leader-img {
|
||
width: 22px;
|
||
height: 22px;
|
||
border-radius: 3px;
|
||
border: 1px solid @color-olive;
|
||
object-fit: cover;
|
||
flex-shrink: 0;
|
||
}
|
||
|
||
.regiment-leader-name {
|
||
flex: 1;
|
||
font-family: @font-secondary;
|
||
font-size: @font-size-sm;
|
||
color: @color-blue;
|
||
font-weight: 600;
|
||
cursor: pointer;
|
||
&:hover { text-decoration: underline; color: @color-gold; }
|
||
}
|
||
|
||
.regiment-leader-empty {
|
||
flex: 1;
|
||
font-size: @font-size-xs;
|
||
color: fade(@color-dark, 45%);
|
||
font-style: italic;
|
||
}
|
||
|
||
.regiment-leader-clear {
|
||
color: fade(@color-dark, 40%);
|
||
font-size: @font-size-sm;
|
||
cursor: pointer;
|
||
flex-shrink: 0;
|
||
&:hover { color: #cc3333; }
|
||
}
|
||
}
|