// ============================================================ // ACTOR SHEET — Character layout, attributes, resources, etc. // ============================================================ .oathhammer { .actor-img { height: @portrait-height; width: auto; border: 2px solid @color-blue; border-radius: 4px; cursor: pointer; object-fit: cover; } .character-main { display: flex; flex-direction: column; gap: 4px; .character-pc { display: flex; gap: 10px; flex: 1; } .character-left { min-width: @left-panel-width; max-width: @left-panel-width; display: flex; flex-direction: column; align-items: center; gap: 4px; } .character-portrait { display: flex; justify-content: center; } .character-resource { display: flex; align-items: center; flex-wrap: nowrap; gap: 4px; margin-bottom: 2px; // formInput renders a
— flatten it so it doesn't break flex row div.form-group { display: contents; } input { min-width: 2.5rem; max-width: 2.5rem; text-align: center; } } .resource-label { min-width: 3.5rem; font-family: @font-secondary; font-size: @font-size-xs; } .character-right { flex: 1; display: flex; flex-direction: column; 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; 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; } } // Attributes grid .attributes-grid { display: grid; grid-template-columns: repeat(6, 1fr); gap: 4px; } .attribute-box { display: flex; flex-direction: column; align-items: center; gap: 2px; label { font-family: @font-secondary; font-size: @font-size-sm; text-align: center; } input { width: 2.5rem; text-align: center; font-size: @font-size-lg; } } // Currency bar .currency-bar { margin-top: 4px; .currency-item { display: flex; flex-direction: column; align-items: center; gap: 2px; flex: 1; input { width: 4rem; text-align: center; } } } // Lineage / Class item slots in Identity tab .identity-lineage-class { gap: 8px; margin-bottom: 8px; .item-slot { flex: 1; display: flex; align-items: center; gap: 6px; padding: 6px 8px; border: 2px solid @color-gold; border-radius: 4px; background: rgba(212, 160, 23, 0.08); min-height: 40px; &.empty { border-style: dashed; opacity: 0.7; cursor: default; .slot-icon { font-size: 1.2rem; color: @color-gold; } .slot-placeholder { font-family: @font-body; font-style: italic; color: @color-gold; font-size: 0.9rem; } } .item-img { width: 32px; height: 32px; object-fit: contain; border: none; flex-shrink: 0; } .item-name { flex: 1; font-family: @font-primary; font-size: 1rem; color: @color-dark; } a[data-action] { color: @color-gold; &:hover { color: @color-blue; } } } } // Biodata .biodata-col { flex: 1; display: flex; flex-direction: column; gap: 2px; } // Arcane Stress compact .character-arcane-stress { .stress-inputs { display: flex; align-items: center; justify-content: center; gap: 4px; } // formInput renders a
— flatten it div.form-group { display: contents; } input { width: 2.8rem; text-align: center; } span { opacity: 0.6; } } // Defense display .defense-display { min-width: 3rem; max-width: 3rem; text-align: center; font-weight: bold; } }