Compare commits

..

No commits in common. "6cb31ac3b7ec91859c9752bae9ac4d71c7949d9c" and "505cc634d356e903f2057c993d5fde5282dba584" have entirely different histories.

64 changed files with 381 additions and 311 deletions

View file

@ -358,6 +358,8 @@ export default class GroupRollDialog extends HandlebarsApplicationMixin(Applicat
}); });
if (!result) return; if (!result) return;
// todo: move logic to actor.rollTrait() or actor.diceRoll()
if (!game.modules.get('dice-so-nice')?.active) foundry.audio.AudioHelper.play({ src: CONFIG.sounds.dice });
const rollData = result.messageRoll.toJSON(); const rollData = result.messageRoll.toJSON();
delete rollData.options.messageRoll; delete rollData.options.messageRoll;

View file

@ -1,4 +1,4 @@
import { itemAbleRollParse, triggerChatRollFx } from '../../helpers/utils.mjs'; import { itemAbleRollParse } from '../../helpers/utils.mjs';
const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api; const { ApplicationV2, HandlebarsApplicationMixin } = foundry.applications.api;
@ -69,7 +69,7 @@ export default class ResourceDiceDialog extends HandlebarsApplicationMixin(Appli
const max = itemAbleRollParse(this.item.system.resource.max, this.actor, this.item); const max = itemAbleRollParse(this.item.system.resource.max, this.actor, this.item);
const diceFormula = `${max}${this.item.system.resource.dieFaces}`; const diceFormula = `${max}${this.item.system.resource.dieFaces}`;
const roll = await new Roll(diceFormula).evaluate(); const roll = await new Roll(diceFormula).evaluate();
await triggerChatRollFx([roll]); if (game.modules.get('dice-so-nice')?.active) await game.dice3d.showForRoll(roll, game.user, true);
this.rollValues = roll.terms[0].results.map(x => ({ value: x.result, used: false })); this.rollValues = roll.terms[0].results.map(x => ({ value: x.result, used: false }));
this.resetUsed = true; this.resetUsed = true;

View file

@ -434,6 +434,8 @@ export default class TagTeamDialog extends HandlebarsApplicationMixin(Applicatio
if (!result) return; if (!result) return;
if (!game.modules.get('dice-so-nice')?.active) foundry.audio.AudioHelper.play({ src: CONFIG.sounds.dice });
const rollData = result.messageRoll.toJSON(); const rollData = result.messageRoll.toJSON();
delete rollData.options.messageRoll; delete rollData.options.messageRoll;
this.updatePartyData( this.updatePartyData(

View file

@ -1,5 +1,3 @@
import { triggerChatRollFx } from '../../helpers/utils.mjs';
const fields = foundry.data.fields; const fields = foundry.data.fields;
const targetsField = () => const targetsField = () =>
@ -156,7 +154,13 @@ export default class DHActorRoll extends foundry.abstract.TypeDataModel {
partData.roll = rerolled.toJSON(); partData.roll = rerolled.toJSON();
} }
await triggerChatRollFx(rerolls); if (game.modules.get('dice-so-nice')?.active) {
for (const roll of rerolls) {
await game.dice3d.showForRoll(roll, game.user, true);
}
} else {
foundry.audio.AudioHelper.play({ src: CONFIG.sounds.dice });
}
return update; return update;
} }

View file

@ -72,6 +72,9 @@ export default class DamageField extends fields.SchemaField {
damageConfig.source.message = messageId; damageConfig.source.message = messageId;
damageConfig.directDamage = !!damageConfig.source?.message; damageConfig.directDamage = !!damageConfig.source?.message;
// if(damageConfig.source?.message && game.modules.get('dice-so-nice')?.active)
// await game.dice3d.waitFor3DAnimationByMessageID(damageConfig.source.message);
const damageResult = await CONFIG.Dice.daggerheart.DamageRoll.build(damageConfig); const damageResult = await CONFIG.Dice.daggerheart.DamageRoll.build(damageConfig);
if (!damageResult) return false; if (!damageResult) return false;
if (damageResult.actionChatMessageHandled) config.actionChatMessageHandled = true; if (damageResult.actionChatMessageHandled) config.actionChatMessageHandled = true;

View file

@ -78,24 +78,6 @@ export class DHActionRollData extends foundry.abstract.DataModel {
return formula; return formula;
} }
getModifier() {
const modifiers = [];
if (!this.parent?.actor) return modifiers;
switch (this.parent.actor.type) {
case 'companion':
case 'adversary':
if (this.type === CONFIG.DH.GENERAL.rollTypes.attack.id)
modifiers.push({
label: 'Bonus to Hit',
value: this.bonus ?? this.parent.actor.system.attack.roll.bonus ?? 0
});
break;
default:
break;
}
return modifiers;
}
get rollTrait() { get rollTrait() {
if (this.parent?.actor?.type !== 'character') return null; if (this.parent?.actor?.type !== 'character') return null;
switch (this.type) { switch (this.type) {
@ -145,7 +127,6 @@ export default class RollField extends fields.EmbeddedDataField {
config.dialog.configure = RollField.getAutomation() ? !config.dialog.configure : config.dialog.configure; config.dialog.configure = RollField.getAutomation() ? !config.dialog.configure : config.dialog.configure;
const roll = { const roll = {
baseModifiers: this.roll.getModifier(),
label: 'Attack', label: 'Attack',
type: this.roll?.type, type: this.roll?.type,
trait: this.roll?.rollTrait, trait: this.roll?.rollTrait,

View file

@ -1,4 +1,4 @@
import { itemAbleRollParse, triggerChatRollFx } from '../../../helpers/utils.mjs'; import { itemAbleRollParse } from '../../../helpers/utils.mjs';
import FormulaField from '../formulaField.mjs'; import FormulaField from '../formulaField.mjs';
const fields = foundry.data.fields; const fields = foundry.data.fields;
@ -40,7 +40,7 @@ export default class DHSummonField extends fields.ArrayField {
const roll = new Roll(itemAbleRollParse(summon.count, this.actor, this.item)); const roll = new Roll(itemAbleRollParse(summon.count, this.actor, this.item));
await roll.evaluate(); await roll.evaluate();
const count = roll.total; const count = roll.total;
if (!roll.isDeterministic) rolls.push(roll); if (!roll.isDeterministic && game.modules.get('dice-so-nice')?.active) rolls.push(roll);
const actor = await DHSummonField.getWorldActor(await foundry.utils.fromUuid(summon.actorUUID)); const actor = await DHSummonField.getWorldActor(await foundry.utils.fromUuid(summon.actorUUID));
/* Extending summon data in memory so it's available in actionField.toChat. Think it's harmless, but ugly. Could maybe find a better way. */ /* Extending summon data in memory so it's available in actionField.toChat. Think it's harmless, but ugly. Could maybe find a better way. */
@ -56,7 +56,7 @@ export default class DHSummonField extends fields.ArrayField {
} }
} }
if (rolls.length) await triggerChatRollFx(rolls); if (rolls.length) await Promise.all(rolls.map(roll => game.dice3d.showForRoll(roll, game.user, true)));
this.actor.sheet?.minimize(); this.actor.sheet?.minimize();
DHSummonField.handleSummon(summonData, this.actor); DHSummonField.handleSummon(summonData, this.actor);

View file

@ -1,5 +1,4 @@
import D20RollDialog from '../applications/dialogs/d20RollDialog.mjs'; import D20RollDialog from '../applications/dialogs/d20RollDialog.mjs';
import { triggerChatRollFx } from '../helpers/utils.mjs';
import DHRoll from './dhRoll.mjs'; import DHRoll from './dhRoll.mjs';
export default class D20Roll extends DHRoll { export default class D20Roll extends DHRoll {
@ -129,8 +128,30 @@ export default class D20Roll extends DHRoll {
} }
} }
getBaseModifiers() {
const modifiers = [];
const actor = foundry.utils.fromUuidSync(this.options.source.actor);
if (!actor) return modifiers;
switch (actor.type) {
case 'companion':
case 'adversary':
if (
this.options.roll.type === CONFIG.DH.GENERAL.rollTypes.attack.id ||
this.options.source.action === actor.system.attack.id
)
modifiers.push({
label: 'Bonus to Hit',
value: this.data.attack.roll.bonus ?? 0
});
break;
default:
break;
}
return modifiers;
}
applyBaseBonus() { applyBaseBonus() {
const modifiers = foundry.utils.deepClone(this.options.roll.baseModifiers) ?? []; const modifiers = this.getBaseModifiers();
modifiers.push( modifiers.push(
...this.getBonus( ...this.getBonus(
@ -231,7 +252,11 @@ export default class D20Roll extends DHRoll {
if (this instanceof game.system.api.dice.DualityRoll) return result; if (this instanceof game.system.api.dice.DualityRoll) return result;
if (options?.liveRoll) { if (options?.liveRoll) {
await triggerChatRollFx([result]); if (game.modules.get('dice-so-nice')?.active) {
await game.dice3d.showForRoll(result, game.user, true);
} else {
foundry.audio.AudioHelper.play({ src: CONFIG.sounds.dice });
}
} }
return result; return result;

View file

@ -1,5 +1,5 @@
import DamageDialog from '../applications/dialogs/damageDialog.mjs'; import DamageDialog from '../applications/dialogs/damageDialog.mjs';
import { parseRallyDice, triggerChatRollFx } from '../helpers/utils.mjs'; import { parseRallyDice } from '../helpers/utils.mjs';
import DHRoll from './dhRoll.mjs'; import DHRoll from './dhRoll.mjs';
export default class DamageRoll extends DHRoll { export default class DamageRoll extends DHRoll {
@ -43,24 +43,25 @@ export default class DamageRoll extends DHRoll {
const chatMessage = config.source?.message const chatMessage = config.source?.message
? ui.chat.collection.get(config.source.message) ? ui.chat.collection.get(config.source.message)
: getDocumentClass('ChatMessage').applyMode({}, config.rollMode ?? 'public'); : getDocumentClass('ChatMessage').applyMode({}, config.rollMode ?? 'public');
const diceRolls = [];
if (game.modules.get('dice-so-nice')?.active) { if (game.modules.get('dice-so-nice')?.active) {
config.mute = true;
const pool = foundry.dice.terms.PoolTerm.fromRolls( const pool = foundry.dice.terms.PoolTerm.fromRolls(
Object.values(config.damage).flatMap(r => r.parts.map(p => p.roll)) Object.values(config.damage).flatMap(r => r.parts.map(p => p.roll))
),
diceRoll = Roll.fromTerms([pool]);
await game.dice3d.showForRoll(
diceRoll,
game.user,
true,
chatMessage.whisper?.length > 0 ? chatMessage.whisper : null,
chatMessage.blind
); );
diceRolls.push(Roll.fromTerms([pool])); config.mute = true;
} }
await triggerChatRollFx(diceRolls, {
whisper: chatMessage.whisper?.length > 0 ? chatMessage.whisper : null,
blind: chatMessage.blind
});
await super.buildPost(roll, config, message); await super.buildPost(roll, config, message);
if (config.source?.message) { if (config.source?.message) {
chatMessage.update({ 'system.damage': config.damage }); chatMessage.update({ 'system.damage': config.damage });
if (!game.modules.get('dice-so-nice')?.active) foundry.audio.AudioHelper.play({ src: CONFIG.sounds.dice });
} }
} }
@ -323,10 +324,9 @@ export default class DamageRoll extends DHRoll {
const newIndex = parsedDiceTerms[dice].results.length; const newIndex = parsedDiceTerms[dice].results.length;
await term.reroll(`/r1=${termResult.result}`); await term.reroll(`/r1=${termResult.result}`);
const diceRolls = [];
if (game.modules.get('dice-so-nice')?.active) { if (game.modules.get('dice-so-nice')?.active) {
const newResult = parsedDiceTerms[dice].results[newIndex]; const newResult = parsedDiceTerms[dice].results[newIndex];
diceRolls.push({ const diceSoNiceRoll = {
_evaluated: true, _evaluated: true,
dice: [ dice: [
new foundry.dice.terms.Die({ new foundry.dice.terms.Die({
@ -337,10 +337,11 @@ export default class DamageRoll extends DHRoll {
}) })
], ],
options: { appearance: {} } options: { appearance: {} }
}); };
await game.dice3d.showForRoll(diceSoNiceRoll, game.user, true);
} }
await triggerChatRollFx(diceRolls);
await parsedRoll.evaluate(); await parsedRoll.evaluate();
const results = parsedRoll.dice[dice].results.map(result => ({ const results = parsedRoll.dice[dice].results.map(result => ({

View file

@ -1,5 +1,4 @@
import D20RollDialog from '../applications/dialogs/d20RollDialog.mjs'; import D20RollDialog from '../applications/dialogs/d20RollDialog.mjs';
import { triggerChatRollFx } from '../helpers/utils.mjs';
export default class DHRoll extends Roll { export default class DHRoll extends Roll {
baseTerms = []; baseTerms = [];
@ -76,7 +75,9 @@ export default class DHRoll extends Roll {
} }
if (config.skips?.createMessage) { if (config.skips?.createMessage) {
await triggerChatRollFx([roll]); if (game.modules.get('dice-so-nice')?.active) {
await game.dice3d.showForRoll(roll, game.user, true);
}
} else if (!config.source?.message) { } else if (!config.source?.message) {
config.message = await this.toMessage(roll, config); config.message = await this.toMessage(roll, config);
} }
@ -84,7 +85,6 @@ export default class DHRoll extends Roll {
static postEvaluate(roll, config = {}) { static postEvaluate(roll, config = {}) {
return { return {
...roll.options.roll,
total: roll.total, total: roll.total,
formula: roll.formula, formula: roll.formula,
dice: roll.dice.map(d => ({ dice: roll.dice.map(d => ({

View file

@ -1,4 +1,5 @@
import { updateResourcesForDualityReroll } from '../helpers.mjs'; import { ResourceUpdateMap } from '../../data/action/baseAction.mjs';
import DualityRoll from '../dualityRoll.mjs';
export default class DualityDie extends foundry.dice.terms.Die { export default class DualityDie extends foundry.dice.terms.Die {
constructor(options) { constructor(options) {
@ -39,7 +40,7 @@ export default class DualityDie extends foundry.dice.terms.Die {
if (options.liveRoll.isReaction) return; if (options.liveRoll.isReaction) return;
const newDuality = this.#getDualityState(options.liveRoll.roll); const newDuality = this.#getDualityState(options.liveRoll.roll);
updateResourcesForDualityReroll(oldDuality, newDuality, options.liveRoll.actor); DualityRoll.updateResources(oldDuality, newDuality, options.liveRoll.actor);
} }
} }

View file

@ -2,7 +2,7 @@ import D20RollDialog from '../applications/dialogs/d20RollDialog.mjs';
import D20Roll from './d20Roll.mjs'; import D20Roll from './d20Roll.mjs';
import { parseRallyDice, setDiceSoNiceForDualityRoll } from '../helpers/utils.mjs'; import { parseRallyDice, setDiceSoNiceForDualityRoll } from '../helpers/utils.mjs';
import { getDiceSoNicePresets } from '../config/generalConfig.mjs'; import { getDiceSoNicePresets } from '../config/generalConfig.mjs';
import { updateResourcesForDualityReroll } from './helpers.mjs'; import { ResourceUpdateMap } from '../data/action/baseAction.mjs';
export default class DualityRoll extends D20Roll { export default class DualityRoll extends D20Roll {
_advantageNumber = 1; _advantageNumber = 1;
@ -132,7 +132,13 @@ export default class DualityRoll extends D20Roll {
} }
createBaseDice() { createBaseDice() {
if (
this.dice[0] instanceof game.system.api.dice.diceTypes.HopeDie &&
this.dice[1] instanceof game.system.api.dice.diceTypes.FearDie
) {
this.terms = [this.terms[0], this.terms[1], this.terms[2]]; this.terms = [this.terms[0], this.terms[1], this.terms[2]];
return;
}
this.terms[0] = new game.system.api.dice.diceTypes.HopeDie({ this.terms[0] = new game.system.api.dice.diceTypes.HopeDie({
faces: this.data.rules.dualityRoll?.defaultHopeDice ?? 12 faces: this.data.rules.dualityRoll?.defaultHopeDice ?? 12
@ -385,6 +391,24 @@ export default class DualityRoll extends D20Roll {
} }
} }
static updateResources(oldDuality, newDuality, actor) {
const { hopeFear } = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation);
if (game.user.isGM ? !hopeFear.gm : !hopeFear.players) return;
const updates = [];
const hope = (newDuality >= 0 ? 1 : 0) - (oldDuality >= 0 ? 1 : 0);
const stress = (newDuality === 0 ? 1 : 0) - (oldDuality === 0 ? 1 : 0);
const fear = (newDuality === -1 ? 1 : 0) - (oldDuality === -1 ? 1 : 0);
if (hope !== 0) updates.push({ key: 'hope', value: hope, total: -1 * hope, enabled: true });
if (stress !== 0) updates.push({ key: 'stress', value: -1 * stress, total: stress, enabled: true });
if (fear !== 0) updates.push({ key: 'fear', value: fear, total: -1 * fear, enabled: true });
const resourceUpdates = new ResourceUpdateMap(actor);
resourceUpdates.addResources(updates);
resourceUpdates.updateResources();
}
async reroll(options) { async reroll(options) {
const oldDuality = this.withHope ? 1 : this.withFear ? -1 : 0; const oldDuality = this.withHope ? 1 : this.withFear ? -1 : 0;
const rerolled = DualityRoll.fromData((await super.reroll(options)).toJSON()); const rerolled = DualityRoll.fromData((await super.reroll(options)).toJSON());
@ -411,7 +435,7 @@ export default class DualityRoll extends D20Roll {
const newDuality = rerolled.withHope ? 1 : rerolled.withFear ? -1 : 0; const newDuality = rerolled.withHope ? 1 : rerolled.withFear ? -1 : 0;
const actor = await foundry.utils.fromUuid(this.options.source.actor); const actor = await foundry.utils.fromUuid(this.options.source.actor);
updateResourcesForDualityReroll(oldDuality, newDuality, actor); DualityRoll.updateResources(oldDuality, newDuality, actor);
} }
return rerolled; return rerolled;

View file

@ -1,17 +0,0 @@
export function updateResourcesForDualityReroll(oldDuality, newDuality, actor) {
const { hopeFear } = game.settings.get(CONFIG.DH.id, CONFIG.DH.SETTINGS.gameSettings.Automation);
if (game.user.isGM ? !hopeFear.gm : !hopeFear.players) return;
const updates = [];
const hope = (newDuality >= 0 ? 1 : 0) - (oldDuality >= 0 ? 1 : 0);
const stress = (newDuality === 0 ? 1 : 0) - (oldDuality === 0 ? 1 : 0);
const fear = (newDuality === -1 ? 1 : 0) - (oldDuality === -1 ? 1 : 0);
if (hope !== 0) updates.push({ key: 'hope', value: hope, total: -1 * hope, enabled: true });
if (stress !== 0) updates.push({ key: 'stress', value: -1 * stress, total: stress, enabled: true });
if (fear !== 0) updates.push({ key: 'fear', value: fear, total: -1 * fear, enabled: true });
const resourceUpdates = new ResourceUpdateMap(actor);
resourceUpdates.addResources(updates);
resourceUpdates.updateResources();
}

View file

@ -864,18 +864,3 @@ export function camelize(str) {
}) })
.replace(/\s+/g, ''); .replace(/\s+/g, '');
} }
/**
* Triggers DiceSoNice rolls or dice roll audio for rolls. Not used for duality rolls.
* @param { Roll[] } rolls
* @return { void }
*/
export async function triggerChatRollFx(rolls, options = { whisper: false, blind: false }) {
const { whisper, blind } = options;
if (game.modules.get('dice-so-nice')?.active) {
const rerollPromises = rolls.map(roll => game.dice3d.showForRoll(roll, game.user, true, whisper, blind));
await Promise.allSettled(rerollPromises);
} else {
foundry.audio.AudioHelper.play({ src: CONFIG.sounds.dice });
}
}

View file

@ -43,7 +43,7 @@
text-align: center; text-align: center;
font-size: var(--font-size-16); font-size: var(--font-size-16);
margin: 0 4px; margin: 0 4px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
color: light-dark(@dark, @beige); color: light-dark(@dark, @beige);
background-image: url('../assets/parchments/dh-parchment-dark.png'); background-image: url('../assets/parchments/dh-parchment-dark.png');
@ -58,7 +58,7 @@
position: relative; position: relative;
display: flex; display: flex;
justify-content: center; justify-content: center;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
cursor: pointer; cursor: pointer;
width: 120px; width: 120px;
@ -164,7 +164,7 @@
.hybrid-data { .hybrid-data {
padding: 0 2px; padding: 0 2px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
color: light-dark(@dark, @beige); color: light-dark(@dark, @beige);
background-image: url('../assets/parchments/dh-parchment-dark.png'); background-image: url('../assets/parchments/dh-parchment-dark.png');
@ -191,7 +191,7 @@
flex-direction: column; flex-direction: column;
gap: 4px; gap: 4px;
padding: 0 4px; padding: 0 4px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
color: light-dark(@dark, @beige); color: light-dark(@dark, @beige);
background-image: url('../assets/parchments/dh-parchment-dark.png'); background-image: url('../assets/parchments/dh-parchment-dark.png');
@ -226,7 +226,7 @@
gap: 4px; gap: 4px;
.trait-card { .trait-card {
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
padding: 2px; padding: 2px;
opacity: 0.4; opacity: 0.4;

View file

@ -79,7 +79,7 @@
font-weight: bold; font-weight: bold;
padding: 0 2px; padding: 0 2px;
background-image: url(../assets/parchments/dh-parchment-light.png); background-image: url(../assets/parchments/dh-parchment-light.png);
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
color: light-dark(@beige, @dark); color: light-dark(@beige, @dark);
opacity: 0.4; opacity: 0.4;
@ -203,7 +203,7 @@
height: 16px; height: 16px;
width: 110px; width: 110px;
min-height: unset; min-height: unset;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
color: light-dark(@beige, @beige); color: light-dark(@beige, @beige);
background-color: light-dark(var(--color-warm-3), var(--color-warm-3)); background-color: light-dark(var(--color-warm-3), var(--color-warm-3));
@ -230,7 +230,7 @@
.suggested-trait-container { .suggested-trait-container {
width: 56px; width: 56px;
white-space: nowrap; white-space: nowrap;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
color: light-dark(@beige, @dark); color: light-dark(@beige, @dark);
background-image: url('../assets/parchments/dh-parchment-light.png'); background-image: url('../assets/parchments/dh-parchment-light.png');
@ -345,7 +345,7 @@
display: flex; display: flex;
justify-content: center; justify-content: center;
position: relative; position: relative;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
.nav-section-text { .nav-section-text {
@ -383,7 +383,7 @@
width: 56px; width: 56px;
text-align: center; text-align: center;
line-height: 1; line-height: 1;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
color: light-dark(@beige, @dark); color: light-dark(@beige, @dark);
background-image: url(../assets/parchments/dh-parchment-light.png); background-image: url(../assets/parchments/dh-parchment-light.png);
@ -447,7 +447,7 @@
height: 100%; height: 100%;
.simple-equipment { .simple-equipment {
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 8px; border-radius: 8px;
position: relative; position: relative;
display: flex; display: flex;
@ -466,7 +466,7 @@
top: -8px; top: -8px;
font-size: var(--font-size-12); font-size: var(--font-size-12);
white-space: nowrap; white-space: nowrap;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
color: @dark; color: @dark;
background-image: url('../assets/parchments/dh-parchment-light.png'); background-image: url('../assets/parchments/dh-parchment-light.png');

View file

@ -7,7 +7,7 @@
border-top: 0; border-top: 0;
a { a {
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
&[disabled] { &[disabled] {
opacity: 0.4; opacity: 0.4;

View file

@ -67,6 +67,7 @@
i { i {
font-size: 18px; font-size: 18px;
// color: light-dark(@dark-blue, @golden);
} }
} }
} }

View file

@ -81,7 +81,7 @@
.mark-container { .mark-container {
cursor: pointer; cursor: pointer;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
height: 26px; height: 26px;
padding: 0 1px; padding: 0 1px;
@ -126,7 +126,7 @@
width: 100%; width: 100%;
.chip-inner-container { .chip-inner-container {
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
height: 26px; height: 26px;
padding: 0 4px; padding: 0 4px;

View file

@ -56,7 +56,7 @@
cursor: pointer; cursor: pointer;
padding: 5px; padding: 5px;
background: light-dark(@dark-blue-10, @golden-10); background: light-dark(@dark-blue-10, @golden-10);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
.label { .label {
font-style: normal; font-style: normal;
@ -129,7 +129,7 @@
cursor: pointer; cursor: pointer;
padding: 5px; padding: 5px;
background: light-dark(@dark-blue-10, @golden-10); background: light-dark(@dark-blue-10, @golden-10);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
.label { .label {
font-style: normal; font-style: normal;

View file

@ -37,7 +37,7 @@
.activity-marker { .activity-marker {
font-size: 0.5rem; font-size: 0.5rem;
flex: none; flex: none;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
margin-right: 4px; margin-right: 4px;
} }
@ -55,7 +55,7 @@
.activity-selected-marker { .activity-selected-marker {
font-size: var(--font-size-14); font-size: var(--font-size-14);
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
color: light-dark(@dark, @beige); color: light-dark(@dark, @beige);
background-image: url(../assets/parchments/dh-parchment-dark.png); background-image: url(../assets/parchments/dh-parchment-dark.png);
@ -78,7 +78,7 @@
} }
.refreshable-container { .refreshable-container {
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
color: light-dark(@dark, @beige); color: light-dark(@dark, @beige);
background-image: url('../assets/parchments/dh-parchment-dark.png'); background-image: url('../assets/parchments/dh-parchment-dark.png');

View file

@ -1,5 +1,5 @@
h1 { h1 {
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
font: 700 var(--font-size-24) var(--dh-font-subtitle); font: 700 var(--font-size-24) var(--dh-font-subtitle);
text-align: center; text-align: center;
} }

View file

@ -110,7 +110,7 @@
display: flex; display: flex;
flex-direction: row; flex-direction: row;
button { button {
--button-text-color: @color-text-primary; --button-text-color: var(--color-text-primary);
--button-size: 1.5em; --button-size: 1.5em;
padding: 0 var(--spacer-4); padding: 0 var(--spacer-4);
img { img {

View file

@ -12,7 +12,7 @@
img { img {
width: 136px; width: 136px;
height: 136px; height: 136px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
opacity: 0.4; opacity: 0.4;

View file

@ -19,7 +19,7 @@
a, a,
span { span {
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
} }
} }

View file

@ -35,7 +35,7 @@
width: 120px; width: 120px;
height: 120px; height: 120px;
background: light-dark(@dark-blue-10, @golden-10); background: light-dark(@dark-blue-10, @golden-10);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
&.selected { &.selected {
background: light-dark(@dark-blue-40, @golden-40); background: light-dark(@dark-blue-40, @golden-40);
@ -57,7 +57,7 @@
display: flex; display: flex;
flex-wrap: wrap; flex-wrap: wrap;
font-style: italic; font-style: italic;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
padding: 4px 4px; padding: 4px 4px;
} }

View file

@ -36,7 +36,7 @@
align-items: stretch; align-items: stretch;
justify-content: center; justify-content: center;
border-radius: 6px; border-radius: 6px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
overflow: hidden; overflow: hidden;
height: 11.5rem; height: 11.5rem;
width: 122px; width: 122px;
@ -62,7 +62,7 @@
padding: 5rem 4px var(--spacer-8) 4px; padding: 5rem 4px var(--spacer-8) 4px;
text-align: center; text-align: center;
color: @color-text-primary; color: var(--color-text-primary);
text-shadow: 1px 1px 2px var(--shadow-color), 0 0 10px var(--shadow-color); text-shadow: 1px 1px 2px var(--shadow-color), 0 0 10px var(--shadow-color);
.smooth-gradient-ease-in-out(background-image, to bottom, var(--shadow-color), 100%); .smooth-gradient-ease-in-out(background-image, to bottom, var(--shadow-color), 100%);
} }

View file

@ -1,6 +1,6 @@
.daggerheart.dialog.dh-style.views.tag-team-dialog .window-content { .daggerheart.dialog.dh-style.views.tag-team-dialog .window-content {
h1 { h1 {
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
font: 700 var(--font-size-24) var(--dh-font-subtitle); font: 700 var(--font-size-24) var(--dh-font-subtitle);
text-align: center; text-align: center;
} }
@ -42,7 +42,7 @@
img { img {
height: 64px; height: 64px;
border-radius: 6px; border-radius: 6px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
} }
.member-name { .member-name {
@ -64,7 +64,7 @@
.roll-title { .roll-title {
font-size: var(--font-size-20); font-size: var(--font-size-20);
font-weight: bold; font-weight: bold;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
text-align: center; text-align: center;
display: flex; display: flex;
align-items: center; align-items: center;
@ -72,7 +72,7 @@
&::before, &::before,
&::after { &::after {
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
content: ''; content: '';
flex: 1; flex: 1;
height: 2px; height: 2px;
@ -202,7 +202,7 @@
justify-content: center; justify-content: center;
i { i {
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
font-size: 48px; font-size: 48px;
&.inactive { &.inactive {

View file

@ -36,8 +36,8 @@
padding: 0; padding: 0;
&:hover { &:hover {
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
} }
} }
@ -81,7 +81,7 @@
cursor: pointer; cursor: pointer;
padding: 5px; padding: 5px;
background: light-dark(@dark-blue-10, @golden-10); background: light-dark(@dark-blue-10, @golden-10);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
.label { .label {
font-style: normal; font-style: normal;

View file

@ -2,6 +2,8 @@
@import '../utils/fonts.less'; @import '../utils/fonts.less';
.dh-style { .dh-style {
border: 1px solid light-dark(@dark-blue, @golden);
input[type='text'], input[type='text'],
input[type='number'], input[type='number'],
textarea, textarea,
@ -12,12 +14,12 @@
box-shadow: 0 4px 30px @soft-shadow; box-shadow: 0 4px 30px @soft-shadow;
backdrop-filter: blur(9.5px); backdrop-filter: blur(9.5px);
outline: 2px solid transparent; outline: 2px solid transparent;
color: @input-color-text; color: light-dark(@dark-blue, @golden);
border: 1px solid @input-color-border; border: 1px solid light-dark(@dark, @beige);
transition: all 0.3s ease; transition: all 0.3s ease;
&::placeholder { &::placeholder {
color: @color-text-subtle; color: light-dark(@dark-40, @beige-50);
} }
&:hover, &:hover,
@ -28,7 +30,7 @@
&:focus[type='number'] { &:focus[type='number'] {
background: light-dark(@soft-shadow, @semi-transparent-dark-blue); background: light-dark(@soft-shadow, @semi-transparent-dark-blue);
box-shadow: none; box-shadow: none;
outline: 2px solid @input-color-border; outline: 2px solid light-dark(@dark, @beige);
} }
&:disabled[type='text'], &:disabled[type='text'],
@ -45,7 +47,7 @@
.input[contenteditable] { .input[contenteditable] {
cursor: var(--cursor-text); cursor: var(--cursor-text);
&:empty:before { &:empty:before {
color: @color-text-subtle; color: light-dark(@dark-40, @beige-50);
content: attr(placeholder); content: attr(placeholder);
} }
} }
@ -105,7 +107,7 @@
&:hover { &:hover {
background: light-dark(@light-black, @dark-blue); background: light-dark(@light-black, @dark-blue);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
&.glow { &.glow {
@ -126,7 +128,7 @@
&.reverted { &.reverted {
background: light-dark(@dark-blue-10, @golden-10); background: light-dark(@dark-blue-10, @golden-10);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
border: 1px solid light-dark(@dark, transparent); border: 1px solid light-dark(@dark, transparent);
&:hover { &:hover {
background: light-dark(transparent, @golden); background: light-dark(transparent, @golden);
@ -173,7 +175,7 @@
height: inherit; height: inherit;
.tag { .tag {
padding: 0.3rem 0.5rem; padding: 0.3rem 0.5rem;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
background-color: light-dark(@dark-blue-10, @golden-40); background-color: light-dark(@dark-blue-10, @golden-40);
border-radius: 3px; border-radius: 3px;
transition: 0.13s ease-out; transition: 0.13s ease-out;
@ -263,7 +265,7 @@
align-items: center; align-items: center;
margin-top: 5px; margin-top: 5px;
border-radius: 6px; border-radius: 6px;
border-color: @color-fieldset-border; border-color: light-dark(@dark-blue, @golden);
&.glassy { &.glassy {
background-color: light-dark(@dark-blue-10, @golden-10); background-color: light-dark(@dark-blue-10, @golden-10);
@ -272,7 +274,7 @@
legend { legend {
padding: 2px 12px; padding: 2px 12px;
border-radius: 3px; border-radius: 3px;
background-color: @color-fieldset-border; background-color: light-dark(@dark-blue, @golden);
color: light-dark(@beige, @dark-blue); color: light-dark(@beige, @dark-blue);
margin-bottom: var(--spacer-4); margin-bottom: var(--spacer-4);
} }
@ -351,7 +353,7 @@
legend { legend {
font-weight: bold; font-weight: bold;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
&.with-icon { &.with-icon {
display: flex; display: flex;
@ -363,6 +365,18 @@
} }
} }
input[type='text'],
input[type='number'] {
color: light-dark(@dark, @beige);
transition: all 0.3s ease;
outline: 2px solid transparent;
&:focus,
&:hover {
outline: 2px solid light-dark(@dark, @beige);
}
}
&[disabled], &[disabled],
&.child-disabled .form-group, &.child-disabled .form-group,
select[disabled], select[disabled],
@ -500,7 +514,7 @@
display: block; display: block;
height: 1px; height: 1px;
width: 100%; width: 100%;
border-bottom: 1px solid @color-border; border-bottom: 1px solid light-dark(@dark-blue, @golden);
mask-image: linear-gradient(270deg, transparent 0%, black 50%, transparent 100%); mask-image: linear-gradient(270deg, transparent 0%, black 50%, transparent 100%);
} }
@ -508,7 +522,7 @@
display: block; display: block;
height: 1px; height: 1px;
width: 100%; width: 100%;
border-bottom: 1px solid @color-border; border-bottom: 1px solid light-dark(@dark-blue, @golden);
mask-image: linear-gradient(270deg, transparent 0%, black 100%); mask-image: linear-gradient(270deg, transparent 0%, black 100%);
&.invert { &.invert {
@ -557,7 +571,7 @@
border: 0; border: 0;
&:hover { &:hover {
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
&:not(:first-child) { &:not(:first-child) {

View file

@ -13,7 +13,7 @@
legend { legend {
font-weight: bold; font-weight: bold;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
font-size: var(--font-size-12); font-size: var(--font-size-12);
} }
@ -25,7 +25,7 @@
button { button {
background: light-dark(@light-black, @dark-blue); background: light-dark(@light-black, @dark-blue);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
outline: none; outline: none;
box-shadow: none; box-shadow: none;
border: 1px solid light-dark(@dark-blue, @dark-blue); border: 1px solid light-dark(@dark-blue, @dark-blue);

View file

@ -287,7 +287,7 @@
position: relative; position: relative;
height: 120px; height: 120px;
width: 98px; width: 98px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
cursor: pointer; cursor: pointer;

View file

@ -50,16 +50,16 @@
flex-wrap: wrap; flex-wrap: wrap;
gap: 5px; gap: 5px;
padding: 5px; padding: 5px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
z-index: 1; z-index: 1;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
width: fit-content; width: fit-content;
.slot { .slot {
width: 15px; width: 15px;
height: 10px; height: 10px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
background: light-dark(@dark-blue-10, @golden-10); background: light-dark(@dark-blue-10, @golden-10);
border-radius: 3px; border-radius: 3px;
transition: all 0.3s ease; transition: all 0.3s ease;
@ -148,7 +148,7 @@
appearance: none; appearance: none;
width: 100px; width: 100px;
height: 40px; height: 40px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
z-index: 1; z-index: 1;
background: @dark-blue; background: @dark-blue;

View file

@ -4,7 +4,7 @@
// Theme handling // Theme handling
.appTheme({ .appTheme({
background: @dark-blue-c0; background: @dark-blue-d0;
backdrop-filter: blur(7px); backdrop-filter: blur(7px);
}, { }, {
background: url('../assets/parchments/dh-parchment-light.png') no-repeat center; background: url('../assets/parchments/dh-parchment-light.png') no-repeat center;
@ -43,7 +43,7 @@ body.game:is(.performance-low, .noblur) {
&:hover { &:hover {
border-color: light-dark(@dark-blue, @golden); border-color: light-dark(@dark-blue, @golden);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
} }
} }

View file

@ -20,7 +20,7 @@
white-space: nowrap; white-space: nowrap;
a { a {
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
} }
} }

View file

@ -24,7 +24,7 @@
.palette-category-title { .palette-category-title {
grid-column: span var(--effect-columns); grid-column: span var(--effect-columns);
font-weight: bold; font-weight: bold;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
} }
} }

View file

@ -1,7 +1,6 @@
@import '../../utils/colors.less'; @import '../../utils/colors.less';
.appTheme({}, { .theme-light .application.daggerheart.dh-style.dialog {
&.dialog.character-settings {
.tab.details { .tab.details {
.traits-inner-container .trait-container { .traits-inner-container .trait-container {
background: url('../assets/svg/trait-shield-light.svg') no-repeat; background: url('../assets/svg/trait-shield-light.svg') no-repeat;
@ -13,7 +12,6 @@
} }
} }
} }
});
.application.daggerheart.dh-style.dialog { .application.daggerheart.dh-style.dialog {
.tab.details { .tab.details {

View file

@ -13,7 +13,7 @@
font-size: var(--font-size-24); font-size: var(--font-size-24);
margin: 0; margin: 0;
text-align: center; text-align: center;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
} }
} }

View file

@ -127,7 +127,7 @@
.title-name { .title-name {
text-align: start; text-align: start;
font-size: var(--font-size-28); font-size: var(--font-size-28);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
text-align: center; text-align: center;
} }
} }
@ -180,9 +180,9 @@
display: flex; display: flex;
gap: 10px; gap: 10px;
background-color: light-dark(transparent, @dark-blue); background-color: light-dark(transparent, @dark-blue);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
padding: 5px 10px; padding: 5px 10px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
align-items: center; align-items: center;
width: fit-content; width: fit-content;
@ -194,7 +194,7 @@
font-size: var(--font-size-14); font-size: var(--font-size-14);
font-weight: bold; font-weight: bold;
text-transform: uppercase; text-transform: uppercase;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
.domain { .domain {
@ -206,7 +206,7 @@
font-size: var(--font-size-14); font-size: var(--font-size-14);
font-weight: bold; font-weight: bold;
text-transform: uppercase; text-transform: uppercase;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
img { img {
@ -230,7 +230,7 @@
padding: 10px; padding: 10px;
border-radius: 5px; border-radius: 5px;
min-width: 90px; min-width: 90px;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
background-color: light-dark(@dark-blue-10, @golden-40); background-color: light-dark(@dark-blue-10, @golden-40);
} }
} }

View file

@ -65,9 +65,9 @@
display: flex; display: flex;
gap: 10px; gap: 10px;
background-color: light-dark(transparent, @dark-blue); background-color: light-dark(transparent, @dark-blue);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
padding: 5px 10px; padding: 5px 10px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
align-items: center; align-items: center;
width: fit-content; width: fit-content;
@ -77,7 +77,7 @@
font-size: var(--font-size-14); font-size: var(--font-size-14);
font-weight: bold; font-weight: bold;
text-transform: uppercase; text-transform: uppercase;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
&.threshold-value { &.threshold-value {
color: light-dark(@dark, @beige); color: light-dark(@dark, @beige);
@ -191,7 +191,7 @@
appearance: none; appearance: none;
width: 100px; width: 100px;
height: 40px; height: 40px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
z-index: 1; z-index: 1;
background: @dark-blue; background: @dark-blue;
@ -237,7 +237,7 @@
display: flex; display: flex;
width: 50px; width: 50px;
height: 30px; height: 30px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-bottom: none; border-bottom: none;
border-radius: 6px 6px 0 0; border-radius: 6px 6px 0 0;
padding: 0 6px; padding: 0 6px;

View file

@ -103,7 +103,7 @@
padding: 5px 0; padding: 5px 0;
margin-bottom: 8px; margin-bottom: 8px;
font-size: var(--font-size-12); font-size: var(--font-size-12);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
.missing-header-feature { .missing-header-feature {
opacity: 0.5; opacity: 0.5;
@ -170,9 +170,9 @@
display: flex; display: flex;
gap: 4px; gap: 4px;
background-color: light-dark(transparent, @dark-blue); background-color: light-dark(transparent, @dark-blue);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
padding: 5px 10px; padding: 5px 10px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
align-items: center; align-items: center;
width: fit-content; width: fit-content;
@ -182,7 +182,7 @@
font-size: var(--font-size-14); font-size: var(--font-size-14);
font-weight: bold; font-weight: bold;
text-transform: uppercase; text-transform: uppercase;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
margin-right: 4px; margin-right: 4px;
} }
@ -195,7 +195,7 @@
font-size: var(--font-size-14); font-size: var(--font-size-14);
font-weight: bold; font-weight: bold;
text-transform: uppercase; text-transform: uppercase;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
img { img {
@ -226,6 +226,7 @@
padding-left: 0.5rem; padding-left: 0.5rem;
.trait { .trait {
--color-border: light-dark(@semi-transparent-dark-blue, @golden-60);
cursor: pointer; cursor: pointer;
position: relative; position: relative;
@ -237,10 +238,10 @@
.trait-name { .trait-name {
position: relative; position: relative;
background-color: @trait-color-bg; background-color: light-dark(@semi-transparent-dark-blue, @golden-40);
border: 1px solid @trait-color-border; border: 1px solid var(--color-border);
border-radius: 3px; border-radius: 3px;
color: @color-text-emphatic; color: light-dark(var(--color-light-1), @golden);
font-size: var(--font-size-12); font-size: var(--font-size-12);
font-weight: 600; font-weight: 600;
height: 1rem; height: 1rem;
@ -249,7 +250,7 @@
width: 100%; width: 100%;
padding: 0 0.1876px 0 0.375rem; padding: 0 0.1876px 0 0.375rem;
margin-right: 0.125rem; /* makes it center SLIGHTLY */ margin-right: 0.125rem; /* makes it center SLIGHTLY */
text-shadow: 1px 1px 3px @color-text-shadow-contrast; text-shadow: 1px 1px 2px @light-black;
display: flex; display: flex;
align-items: center; align-items: center;
@ -258,7 +259,7 @@
.tier-mark { .tier-mark {
position: absolute; position: absolute;
background-color: @dark-blue; background-color: @dark-blue;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 50%; border-radius: 50%;
width: 1rem; width: 1rem;
height: 1rem; height: 1rem;
@ -278,7 +279,6 @@
} }
.trait-value-area { .trait-value-area {
--color-border: @trait-color-border;
--background: light-dark(#e8e6e3, @dark-blue); --background: light-dark(#e8e6e3, @dark-blue);
display: flex; display: flex;
position: relative; position: relative;
@ -298,7 +298,7 @@
.spellcasting-mark { .spellcasting-mark {
position: absolute; position: absolute;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
color: @golden; color: @golden;
left: 0; left: 0;
right: 0; right: 0;

View file

@ -45,7 +45,7 @@
.btn-toggle-view { .btn-toggle-view {
background: light-dark(@dark-blue-10, @dark-blue); background: light-dark(@dark-blue-10, @dark-blue);
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 15px; border-radius: 15px;
padding: 0; padding: 0;
gap: 0; gap: 0;
@ -54,7 +54,7 @@
span { span {
margin: 1px; margin: 1px;
width: 26px; width: 26px;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
&.list-icon { &.list-icon {
i { i {

View file

@ -40,7 +40,7 @@
.application.sheet.dh-style .character-sidebar-sheet { .application.sheet.dh-style .character-sidebar-sheet {
width: 275px; width: 275px;
min-width: 275px; min-width: 275px;
border-right: 1px solid @color-border; border-right: 1px solid light-dark(@dark-blue, @golden);
.portrait { .portrait {
position: relative; position: relative;
@ -168,7 +168,7 @@
appearance: none; appearance: none;
width: 100px; width: 100px;
height: 40px; height: 40px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
z-index: 1; z-index: 1;
background: @dark-blue; background: @dark-blue;
@ -282,11 +282,11 @@
&:hover { &:hover {
background: light-dark(@light-black, @dark-blue); background: light-dark(@light-black, @dark-blue);
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
h4, h4,
i { i {
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
} }
} }
@ -309,12 +309,12 @@
flex-wrap: wrap; flex-wrap: wrap;
gap: 4px; gap: 4px;
padding: 5px; padding: 5px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
z-index: 1; z-index: 1;
background: @dark-blue; background: @dark-blue;
justify-content: center; justify-content: center;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
.armor-slot { .armor-slot {
cursor: pointer; cursor: pointer;
@ -343,12 +343,12 @@
&:hover { &:hover {
background: light-dark(@light-black, @dark-blue); background: light-dark(@light-black, @dark-blue);
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
.label, .label,
.value, .value,
i { i {
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
} }
@ -375,7 +375,7 @@
text-align: center; text-align: center;
z-index: 2; z-index: 2;
color: light-dark(@dark-blue, @beige); color: light-dark(@dark-blue, @beige);
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-bottom: none; border-bottom: none;
border-radius: 6px 6px 0 0; border-radius: 6px 6px 0 0;
@ -411,7 +411,7 @@
appearance: none; appearance: none;
width: 80px; width: 80px;
height: 30px; height: 30px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
z-index: 1; z-index: 1;
background: light-dark(transparent, @dark-blue); background: light-dark(transparent, @dark-blue);
@ -450,7 +450,7 @@
display: flex; display: flex;
width: 50px; width: 50px;
height: 30px; height: 30px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-bottom: none; border-bottom: none;
border-radius: 6px 6px 0 0; border-radius: 6px 6px 0 0;
padding: 0 6px; padding: 0 6px;
@ -513,9 +513,9 @@
align-self: center; align-self: center;
gap: 10px; gap: 10px;
background-color: light-dark(transparent, @dark-blue); background-color: light-dark(transparent, @dark-blue);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
padding: 5px 10px; padding: 5px 10px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
align-items: center; align-items: center;
width: fit-content; width: fit-content;
@ -525,7 +525,7 @@
font-size: var(--font-size-14); font-size: var(--font-size-14);
font-weight: bold; font-weight: bold;
text-transform: uppercase; text-transform: uppercase;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
&.threshold-value { &.threshold-value {
color: light-dark(@dark, @beige); color: light-dark(@dark, @beige);

View file

@ -30,14 +30,14 @@
font-size: var(--font-size-24); font-size: var(--font-size-24);
outline: 2px solid transparent; outline: 2px solid transparent;
box-shadow: unset; box-shadow: unset;
text-shadow: 0 0 4px @color-text-shadow-contrast, 0 0 8px @color-text-shadow-contrast, 0 0 14px @color-text-shadow-contrast; text-shadow: 0 0 4px light-dark(white, @dark-80), 0 0 8px light-dark(white, @dark-80), 0 0 14px light-dark(white, @dark-80);
height: 2rem; height: 2rem;
text-align: center; text-align: center;
transition: all 0.3s ease; transition: all 0.3s ease;
&:hover { &:hover {
outline: 2px solid @color-border; outline: 2px solid light-dark(@dark, @golden);
} }
} }
} }
@ -68,7 +68,7 @@
display: flex; display: flex;
width: 50px; width: 50px;
height: 40px; height: 40px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-bottom: none; border-bottom: none;
border-radius: 6px 6px 0 0; border-radius: 6px 6px 0 0;
padding: 0 6px; padding: 0 6px;
@ -100,6 +100,104 @@
} }
} }
// .status-bar {
// display: flex;
// justify-content: center;
// position: relative;
// width: 100px;
// height: 40px;
// .status-label {
// position: relative;
// top: 40px;
// height: 22px;
// width: 79px;
// clip-path: path('M0 0H79L74 16.5L39 22L4 16.5L0 0Z');
// background: light-dark(@dark-blue, @golden);
// h4 {
// font-weight: bold;
// text-align: center;
// line-height: 18px;
// color: light-dark(@beige, @dark-blue);
// }
// }
// .status-value {
// position: absolute;
// display: flex;
// padding: 0 6px;
// font-size: 1.5rem;
// align-items: center;
// width: 100px;
// height: 40px;
// justify-content: center;
// text-align: center;
// z-index: 2;
// color: @beige;
// input[type='number'] {
// background: transparent;
// font-size: 1.5rem;
// width: 40px;
// height: 30px;
// text-align: center;
// border: none;
// outline: 2px solid transparent;
// color: @beige;
// &.bar-input {
// padding: 0;
// color: @beige;
// backdrop-filter: none;
// background: transparent;
// transition: all 0.3s ease;
// &:hover,
// &:focus {
// background: @semi-transparent-dark-blue;
// backdrop-filter: blur(9.5px);
// }
// }
// }
// .bar-label {
// width: 40px;
// }
// }
// .progress-bar {
// position: absolute;
// appearance: none;
// width: 100px;
// height: 40px;
// border: 1px solid light-dark(@dark-blue, @golden);
// border-radius: 6px;
// z-index: 1;
// background: @dark-blue;
// &::-webkit-progress-bar {
// border: none;
// background: @dark-blue;
// border-radius: 6px;
// }
// &::-webkit-progress-value {
// background: @gradient-hp;
// border-radius: 6px;
// }
// &.stress-color::-webkit-progress-value {
// background: @gradient-stress;
// border-radius: 6px;
// }
// &::-moz-progress-bar {
// background: @gradient-hp;
// border-radius: 6px;
// }
// &.stress-color::-moz-progress-bar {
// background: @gradient-stress;
// border-radius: 6px;
// }
// }
// }
.level-div { .level-div {
white-space: nowrap; white-space: nowrap;
display: flex; display: flex;

View file

@ -36,14 +36,15 @@
transition: all 0.3s ease; transition: all 0.3s ease;
outline: 2px solid transparent; outline: 2px solid transparent;
box-shadow: none; box-shadow: none;
text-shadow: 0 0 4px @color-text-shadow-contrast, 0 0 8px @color-text-shadow-contrast, 0 0 14px @color-text-shadow-contrast; text-shadow: 0 0 4px light-dark(white, @dark-80), 0 0 8px light-dark(white, @dark-80), 0 0 14px light-dark(white, @dark-80);
padding-left: 0; padding-left: 0;
height: 2.625rem; height: 2.625rem;
&:hover[type='text'], &:hover[type='text'],
&:focus[type='text'] { &:focus[type='text'] {
box-shadow: none; box-shadow: none;
outline: 2px solid @color-border; outline: 2px solid light-dark(@dark-blue, @golden);
} }
} }
@ -97,7 +98,7 @@
display: flex; display: flex;
width: 50px; width: 50px;
height: 30px; height: 30px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-bottom: none; border-bottom: none;
border-radius: 6px 6px 0 0; border-radius: 6px 6px 0 0;
padding: 0 6px; padding: 0 6px;

View file

@ -20,12 +20,11 @@
input.item-name[type='text'] { input.item-name[type='text'] {
backdrop-filter: none; backdrop-filter: none;
border: none; border: none;
color: @color-text-emphatic;
font-family: @font-title; font-family: @font-title;
font-size: var(--font-size-32); font-size: var(--font-size-32);
outline: 2px solid transparent; outline: 2px solid transparent;
box-shadow: unset; box-shadow: unset;
text-shadow: 0 0 4px @color-text-shadow-contrast, 0 0 8px @color-text-shadow-contrast, 0 0 14px @color-text-shadow-contrast; text-shadow: 0 0 4px light-dark(white, @dark-80), 0 0 8px light-dark(white, @dark-80), 0 0 14px light-dark(white, @dark-80);
text-align: center; text-align: center;
transition: all 0.3s ease; transition: all 0.3s ease;
@ -34,7 +33,7 @@
&:hover[type='text'], &:hover[type='text'],
&:focus[type='text'] { &:focus[type='text'] {
outline: 2px solid @color-border; outline: 2px solid light-dark(@dark-blue, @golden);
} }
} }

View file

@ -48,7 +48,7 @@
border-radius: 50%; border-radius: 50%;
width: 24px; width: 24px;
height: 24px; height: 24px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
object-fit: cover; object-fit: cover;
} }
} }
@ -79,9 +79,9 @@
display: flex; display: flex;
gap: 4px; gap: 4px;
background-color: light-dark(var(--color-light-1), @dark-blue); background-color: light-dark(var(--color-light-1), @dark-blue);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
padding: 4px 6px; padding: 4px 6px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 3px; border-radius: 3px;
align-items: baseline; align-items: baseline;
width: fit-content; width: fit-content;
@ -93,7 +93,7 @@
&.threshold-label { &.threshold-label {
font-size: var(--font-size-10); font-size: var(--font-size-10);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
&.threshold-value { &.threshold-value {
@ -116,7 +116,7 @@
width: 100%; width: 100%;
z-index: 1; z-index: 1;
font-size: var(--font-size-20); font-size: var(--font-size-20);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
font-weight: bold; font-weight: bold;
} }
@ -132,9 +132,9 @@
.hope-section { .hope-section {
display: flex; display: flex;
background-color: light-dark(transparent, @dark-blue); background-color: light-dark(transparent, @dark-blue);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
padding: 3px 6px; padding: 3px 6px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 3px; border-radius: 3px;
align-items: center; align-items: center;
width: fit-content; width: fit-content;
@ -144,7 +144,7 @@
font-size: var(--font-size-12); font-size: var(--font-size-12);
font-weight: bold; font-weight: bold;
text-transform: uppercase; text-transform: uppercase;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
margin-right: 3px; margin-right: 3px;
} }
@ -212,9 +212,9 @@
gap: 4px; gap: 4px;
background-color: light-dark(@dark-blue-10, @dark-blue); background-color: light-dark(@dark-blue-10, @dark-blue);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
padding: 2px 5px; padding: 2px 5px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 0 6px 6px 0; border-radius: 0 6px 6px 0;
width: fit-content; width: fit-content;
min-height: 22px; min-height: 22px;
@ -232,7 +232,7 @@
.slot { .slot {
width: 16px; width: 16px;
height: 10px; height: 10px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
background: light-dark(@dark-blue-10, @golden-10); background: light-dark(@dark-blue-10, @golden-10);
border-radius: 3px; border-radius: 3px;
transition: all 0.3s ease; transition: all 0.3s ease;
@ -248,7 +248,7 @@
.traits { .traits {
background-color: light-dark(@dark-blue-10, @dark-blue); background-color: light-dark(@dark-blue-10, @dark-blue);
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
display: grid; display: grid;
grid-template-columns: 1fr 1fr; grid-template-columns: 1fr 1fr;
@ -260,7 +260,7 @@
justify-content: space-between; justify-content: space-between;
gap: 3px; gap: 3px;
.label { .label {
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
.value { .value {
font-weight: 600; font-weight: 600;

View file

@ -31,7 +31,7 @@
} }
i { i {
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
} }
} }
@ -71,7 +71,7 @@
align-items: center; align-items: center;
justify-content: center; justify-content: center;
gap: 10px; gap: 10px;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
.main-value { .main-value {
font-size: var(--font-size-24); font-size: var(--font-size-24);
@ -153,7 +153,7 @@
cursor: pointer; cursor: pointer;
padding: 5px; padding: 5px;
background: light-dark(@dark-blue-10, @golden-10); background: light-dark(@dark-blue-10, @golden-10);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
&.finished { &.finished {
background-color: initial; background-color: initial;

View file

@ -93,7 +93,7 @@
} }
a[href] { a[href] {
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
a[href]:hover, a[href]:hover,

View file

@ -17,7 +17,7 @@
position: relative; position: relative;
border: 0; border: 0;
box-shadow: none; box-shadow: none;
color: @color-text-primary; color: var(--color-text-primary);
width: 300px; width: 300px;
pointer-events: all; pointer-events: all;
align-self: flex-end; align-self: flex-end;

View file

@ -20,7 +20,7 @@
.effect-container { .effect-container {
position: relative; position: relative;
pointer-events: all; pointer-events: all;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 3px; border-radius: 3px;
img { img {

View file

@ -200,7 +200,7 @@
font-weight: bold; font-weight: bold;
border-radius: 3px; border-radius: 3px;
background-color: light-dark(@dark-blue-40, @golden-40); background-color: light-dark(@dark-blue-40, @golden-40);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
.subfolder-list { .subfolder-list {
@ -218,7 +218,7 @@
font-weight: bold; font-weight: bold;
border-radius: 3px; border-radius: 3px;
background-color: light-dark(@dark-blue-10, @golden-10); background-color: light-dark(@dark-blue-10, @golden-10);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
} }
.wrapper { .wrapper {
@ -265,8 +265,8 @@
.item-list-header { .item-list-header {
align-items: center; align-items: center;
background-color: light-dark(@dark-15, @dark-golden-80); background-color: light-dark(@dark-15, @dark-golden-80);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 3px; border-radius: 3px;
min-height: 30px; min-height: 30px;
font-weight: bold; font-weight: bold;

View file

@ -60,7 +60,7 @@
position: relative; position: relative;
display: flex; display: flex;
justify-content: center; justify-content: center;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
&.selectable { &.selectable {
@ -76,7 +76,7 @@
.domain-label { .domain-label {
position: absolute; position: absolute;
top: 4px; top: 4px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
padding: 0 2px; padding: 0 2px;
color: light-dark(@dark, @beige); color: light-dark(@dark, @beige);

View file

@ -61,7 +61,7 @@
display: flex; display: flex;
align-items: center; align-items: center;
gap: 4px; gap: 4px;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
i { i {
font-size: 14px; font-size: 14px;

View file

@ -21,7 +21,7 @@
border: 1px solid; border: 1px solid;
border-radius: 6px; border-radius: 6px;
padding: 0 8px; padding: 0 8px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
color: light-dark(@dark, @beige); color: light-dark(@dark, @beige);
background-image: url('../assets/parchments/dh-parchment-dark.png'); background-image: url('../assets/parchments/dh-parchment-dark.png');
cursor: pointer; cursor: pointer;

View file

@ -1,7 +1,7 @@
@import '../../utils/colors.less'; @import '../../utils/colors.less';
.daggerheart.dh-style.setting { .daggerheart.dh-style.setting {
--color-form-label: @color-text-primary; --color-form-label: var(--color-text-primary);
h2, h2,
h3, h3,

View file

@ -34,7 +34,7 @@
cursor: pointer; cursor: pointer;
padding: 5px; padding: 5px;
background: light-dark(@dark-blue-10, @golden-10); background: light-dark(@dark-blue-10, @golden-10);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
.label { .label {
font-style: normal; font-style: normal;

View file

@ -51,7 +51,7 @@
--dark-blue-50: #18162e50; --dark-blue-50: #18162e50;
--dark-blue-60: #18162e60; --dark-blue-60: #18162e60;
--dark-blue-90: #18162e90; --dark-blue-90: #18162e90;
--dark-blue-c0: #18162ec0; --dark-blue-d0: #18162ed0;
--semi-transparent-dark-blue: rgba(24, 22, 46, 0.33); --semi-transparent-dark-blue: rgba(24, 22, 46, 0.33);
--dark: #222222; --dark: #222222;
@ -71,7 +71,6 @@
--beige-filter: brightness(0) saturate(100%) invert(87%) sepia(25%) saturate(164%) hue-rotate(339deg) brightness(106%) contrast(87%); --beige-filter: brightness(0) saturate(100%) invert(87%) sepia(25%) saturate(164%) hue-rotate(339deg) brightness(106%) contrast(87%);
--bright-beige-filter: brightness(0) saturate(100%) invert(87%) sepia(15%) saturate(343%) hue-rotate(333deg) brightness(110%) contrast(87%); --bright-beige-filter: brightness(0) saturate(100%) invert(87%) sepia(15%) saturate(343%) hue-rotate(333deg) brightness(110%) contrast(87%);
--light-white: rgba(255, 255, 255, 0.3);
--soft-white-shadow: rgba(255, 255, 255, 0.05); --soft-white-shadow: rgba(255, 255, 255, 0.05);
--light-black: rgba(0, 0, 0, 0.3); --light-black: rgba(0, 0, 0, 0.3);
@ -84,47 +83,8 @@
--gradient-stress: linear-gradient(15deg, rgb(130, 59, 1) 0%, rgb(252, 142, 69) 65%, rgb(190, 0, 0) 100%); --gradient-stress: linear-gradient(15deg, rgb(130, 59, 1) 0%, rgb(252, 142, 69) 65%, rgb(190, 0, 0) 100%);
--primary-color-fear: rgba(9, 71, 179, 0.75); --primary-color-fear: rgba(9, 71, 179, 0.75);
}
/** --dh-color-text-subtle: light-dark(#555, #a29086);
* Override core foundry color variables in theme scopes, and add some new theme specific variants.
* These are intended to be more representative of its use case, so avoid naming these after the color.
* Some foundry variables are heavily scoped and we need to redefine them (https://github.com/foundryvtt/foundryvtt/issues/12893)
* Convention for the redefined ones is --dh-{element}-color-{thing}
*/
@scope (.theme-light) to (.themed) {
.dh-style :scope,
:scope.dh-style,
.dh-style,
.duality {
--color-border: @dark-blue;
--color-fieldset-border: @dark-blue;
--color-text-emphatic: @dark-blue;
--color-text-subtle: #555;
--dh-color-text-shadow-contrast: #ffffffa0;
--dh-input-color-border: @dark;
--dh-input-color-text: @dark;
--dh-trait-color-bg: #b1afb6;
--dh-trait-color-border: #8e8d96;
}
}
@scope (.theme-dark) to (.themed) {
.dh-style :scope,
:scope.dh-style,
.dh-style,
.duality {
--color-border: @golden;
--color-fieldset-border: @golden;
--color-text-emphatic: @golden;
--color-text-subtle: #a29086;
--dh-color-text-shadow-contrast: @dark-80;
--dh-input-color-border: @beige;
--dh-input-color-text: @beige;
--dh-trait-color-bg: #50433F;
--dh-trait-color-border: #927952;
}
} }
@primary-blue: var(--primary-blue, #1488cc); @primary-blue: var(--primary-blue, #1488cc);
@ -179,7 +139,7 @@
@dark-blue-50: var(--dark-blue-50, #18162e50); @dark-blue-50: var(--dark-blue-50, #18162e50);
@dark-blue-60: var(--dark-blue-60, #18162e60); @dark-blue-60: var(--dark-blue-60, #18162e60);
@dark-blue-90: var(--dark-blue-90, #18162e90); @dark-blue-90: var(--dark-blue-90, #18162e90);
@dark-blue-c0: var(--dark-blue-c0, #18162ec0); @dark-blue-d0: var(--dark-blue-d0, #18162ed0);
@semi-transparent-dark-blue: var(--semi-transparent-dark-blue, rgba(24, 22, 46, 0.33)); @semi-transparent-dark-blue: var(--semi-transparent-dark-blue, rgba(24, 22, 46, 0.33));
@dark: var(--dark, #222222); @dark: var(--dark, #222222);
@ -201,7 +161,6 @@
@soft-white-shadow: var(--soft-white-shadow, rgba(255, 255, 255, 0.05)); @soft-white-shadow: var(--soft-white-shadow, rgba(255, 255, 255, 0.05));
@light-white: var(--light-white, rgba(255, 255, 255, 0.3));
@light-black: var(--light-black, rgba(0, 0, 0, 0.3)); @light-black: var(--light-black, rgba(0, 0, 0, 0.3));
@soft-shadow: var(--soft-shadow, rgba(0, 0, 0, 0.05)); @soft-shadow: var(--soft-shadow, rgba(0, 0, 0, 0.05));
@ -234,14 +193,4 @@
} }
} }
// LESS variable versions of core foundry color variables @color-text-subtle: var(--dh-color-text-subtle);
@color-border: var(--color-border);
@color-fieldset-border: var(--color-fieldset-border);
@color-text-emphatic: var(--color-text-emphatic);
@color-text-primary: var(--color-text-primary);
@color-text-subtle: var(--color-text-subtle);
@color-text-shadow-contrast: var(--dh-color-text-shadow-contrast);
@input-color-border: var(--dh-input-color-border);
@input-color-text: var(--dh-input-color-text);
@trait-color-bg: var(--dh-trait-color-bg);
@trait-color-border: var(--dh-trait-color-border);

View file

@ -5,16 +5,16 @@
*/ */
.appTheme(@darkRules, @lightRules) { .appTheme(@darkRules, @lightRules) {
// Dark theme selectors // Dark theme selectors
.themed.theme-dark .application.daggerheart.dh-style, .themed.theme-dark .application.daggerheart.sheet.dh-style,
.themed.theme-dark.application.daggerheart.dh-style, .themed.theme-dark.application.daggerheart.sheet.dh-style,
body.theme-dark .application.daggerheart, body.theme-dark .application.daggerheart,
body.theme-dark.application.daggerheart { body.theme-dark.application.daggerheart {
@darkRules(); @darkRules();
} }
// Light theme selectors // Light theme selectors
.themed.theme-light .application.daggerheart.dh-style, .themed.theme-light .application.daggerheart.sheet.dh-style,
.themed.theme-light.application.daggerheart.dh-style, .themed.theme-light.application.daggerheart.sheet.dh-style,
body.theme-light .application.daggerheart, body.theme-light .application.daggerheart,
body.theme-light.application.daggerheart { body.theme-light.application.daggerheart {
@lightRules(); @lightRules();
@ -50,15 +50,14 @@
*/ */
.dh-typography() { .dh-typography() {
h1 { h1 {
--dh-input-color-text: @color-text-emphatic;
font-family: @font-title; font-family: @font-title;
margin: 0; margin: 0;
border: none; border: none;
font-weight: normal; font-weight: normal;
input[type='text'],
.input[contenteditable] {
font-family: @font-title;
} }
h1 input[type='text'] {
font-family: @font-title;
} }
h2, h2,

View file

@ -83,7 +83,7 @@
appearance: none; appearance: none;
width: 100%; width: 100%;
height: 30px; height: 30px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
z-index: 1; z-index: 1;
background: @dark-blue; background: @dark-blue;
@ -118,13 +118,13 @@
flex-wrap: wrap; flex-wrap: wrap;
gap: 4px; gap: 4px;
padding: 5px; padding: 5px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
z-index: 1; z-index: 1;
background: @dark-blue; background: @dark-blue;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
min-height: 30px; min-height: 30px;
width: 100%; width: 100%;

View file

@ -9,9 +9,9 @@
display: flex; display: flex;
gap: 10px; gap: 10px;
background-color: light-dark(transparent, @dark-blue); background-color: light-dark(transparent, @dark-blue);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
padding: 5px 10px; padding: 5px 10px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
align-items: center; align-items: center;
width: fit-content; width: fit-content;
@ -22,7 +22,7 @@
font-size: var(--font-size-14); font-size: var(--font-size-14);
font-weight: bold; font-weight: bold;
text-transform: uppercase; text-transform: uppercase;
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
margin: 0; margin: 0;
} }

View file

@ -3,7 +3,7 @@ aside[role='tooltip']:has(div.daggerheart.dh-style.tooltip),
#tooltip.bordered-tooltip { #tooltip.bordered-tooltip {
.tooltip-title { .tooltip-title {
font-size: var(--font-size-20); font-size: var(--font-size-20);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
font-weight: 700; font-weight: 700;
} }

View file

@ -132,7 +132,7 @@ aside[role='tooltip']:has(div.daggerheart.dh-style.tooltip.card-style) {
border-radius: 3px; border-radius: 3px;
padding: 3px; padding: 3px;
background: light-dark(@dark-blue-60, @rustic-brown-80); background: light-dark(@dark-blue-60, @rustic-brown-80);
color: @color-text-emphatic; color: light-dark(@dark-blue, @golden);
font-size: 12px; font-size: 12px;
margin-bottom: 10px; margin-bottom: 10px;
} }
@ -238,7 +238,7 @@ aside[role='tooltip'].locked-tooltip:has(div.daggerheart.dh-style.tooltip.card-s
.tooltip-chip { .tooltip-chip {
font-size: var(--font-size-18); font-size: var(--font-size-18);
padding: 2px 4px; padding: 2px 4px;
border: 1px solid @color-border; border: 1px solid light-dark(@dark-blue, @golden);
border-radius: 6px; border-radius: 6px;
color: light-dark(@dark, @beige); color: light-dark(@dark, @beige);
background-image: url(../assets/parchments/dh-parchment-dark.png); background-image: url(../assets/parchments/dh-parchment-dark.png);

View file

@ -2,7 +2,7 @@
"id": "daggerheart", "id": "daggerheart",
"title": "Daggerheart", "title": "Daggerheart",
"description": "An unofficial implementation of the Daggerheart system", "description": "An unofficial implementation of the Daggerheart system",
"version": "2.2.7", "version": "2.2.6",
"compatibility": { "compatibility": {
"minimum": "14.361", "minimum": "14.361",
"verified": "14.363", "verified": "14.363",
@ -10,7 +10,7 @@
}, },
"url": "https://github.com/Foundryborne/daggerheart", "url": "https://github.com/Foundryborne/daggerheart",
"manifest": "https://raw.githubusercontent.com/Foundryborne/daggerheart/v14/system.json", "manifest": "https://raw.githubusercontent.com/Foundryborne/daggerheart/v14/system.json",
"download": "https://github.com/Foundryborne/daggerheart/releases/download/2.2.7/system.zip", "download": "https://github.com/Foundryborne/daggerheart/releases/download/2.2.6/system.zip",
"authors": [ "authors": [
{ {
"name": "WBHarry" "name": "WBHarry"