From 2dd9ee19e981dc6d7400b413eafa2de99a83a7fa Mon Sep 17 00:00:00 2001
From: Litasa <5760383-litasa@users.noreply.gitlab.com>
Date: Fri, 27 Feb 2026 04:15:10 +0000
Subject: [PATCH] Updating the compendium filter to make it more snappy
---
system/lang/en-en.json | 8 +-
.../compendium/l5r5e-compendium-directory.js | 1 +
.../compendium/l5r5e-item-compendium.js | 497 ++++++++++++++
system/scripts/data/l5r5e-setfield.js | 129 +++-
system/scripts/hooks.js | 234 +------
system/scripts/main-l5r5e.js | 4 +-
system/scripts/misc/l5r5e-combo-box.js | 257 +++++++
system/scripts/misc/l5r5e-dropdown-mixin.js | 492 +++++++++++++
system/scripts/misc/l5r5e-multiselect.js | 591 +++++++++-------
system/styles/l5r5e.css | 2 +-
system/styles/scss/global-appv2.scss | 2 +-
system/styles/scss/ui.scss | 647 +++++++++++++++---
system/templates/compendium/filter-bar.html | 52 ++
.../compendium/l5r5e-index-partial.html | 30 +
system/templates/compendium/rank-filter.html | 6 -
system/templates/compendium/ring-filter.html | 8 -
.../compendium/ring-rarity-rank.html | 6 -
17 files changed, 2327 insertions(+), 639 deletions(-)
create mode 100644 system/scripts/compendium/l5r5e-item-compendium.js
create mode 100644 system/scripts/misc/l5r5e-combo-box.js
create mode 100644 system/scripts/misc/l5r5e-dropdown-mixin.js
create mode 100644 system/templates/compendium/filter-bar.html
create mode 100644 system/templates/compendium/l5r5e-index-partial.html
delete mode 100644 system/templates/compendium/rank-filter.html
delete mode 100644 system/templates/compendium/ring-filter.html
delete mode 100644 system/templates/compendium/ring-rarity-rank.html
diff --git a/system/lang/en-en.json b/system/lang/en-en.json
index ae0b312..725e4db 100644
--- a/system/lang/en-en.json
+++ b/system/lang/en-en.json
@@ -40,8 +40,8 @@
},
"Compendium": {
"HideDisabledSources": {
- "Title": "[Compendium] Hide sources filter without reference",
- "Hint": "Hide empty source with no elements in source filter."
+ "Title": "[Compendium] Hide unavailable sources",
+ "Hint": "Hide sources that have no available content from the source filter dropdown."
},
"HideEmptySourcesFromPlayers": {
"Title": "[Compendium] Hide elements with empty reference",
@@ -136,6 +136,7 @@
"player_filter_label": "Player filter",
"player_filter_tooltip": "Apply player filter",
"already_in_filter": "Already in filter",
+ "no_results": "Not Found",
"sources_categories": {
"rules": "Rules",
"adventures": "Adventures",
@@ -810,7 +811,8 @@
"filter": {
"rank": "Rank",
"rarity": "Rarity",
- "ring": "Ring"
+ "ring": "Ring",
+ "clear": "Clear Filter"
}
},
"source_reference": {
diff --git a/system/scripts/compendium/l5r5e-compendium-directory.js b/system/scripts/compendium/l5r5e-compendium-directory.js
index fe1aca0..78a9acc 100644
--- a/system/scripts/compendium/l5r5e-compendium-directory.js
+++ b/system/scripts/compendium/l5r5e-compendium-directory.js
@@ -1,3 +1,4 @@
+const { CompendiumDirectory } = foundry.applications.sidebar.tabs;
export class CompendiumDirectoryL5r5e extends CompendiumDirectory {
diff --git a/system/scripts/compendium/l5r5e-item-compendium.js b/system/scripts/compendium/l5r5e-item-compendium.js
new file mode 100644
index 0000000..2994b19
--- /dev/null
+++ b/system/scripts/compendium/l5r5e-item-compendium.js
@@ -0,0 +1,497 @@
+import { L5r5eHtmlMultiSelectElement } from "../misc/l5r5e-multiselect.js";
+
+const { Compendium } = foundry.applications.sidebar.apps;
+
+/**
+ * Extended Compendium application for L5R5e.
+ * Adds source/rank/ring/rarity filters to Item compendiums
+ * @extends {Compendium}
+ */
+export class ItemCompendiumL5r5e extends Compendium {
+ /** @override */
+ static DEFAULT_OPTIONS = {
+ actions: {
+ applyPlayerView: ItemCompendiumL5r5e.#onApplyPlayerView,
+ },
+ window: {
+ resizable: true
+ }
+ };
+
+ /**
+ * Our own entry partial which mirrors Foundry's index-partial.hbs structure
+ * and appends ring/rarity/rank badges using data from _prepareDirectoryContext.
+ *
+ * NOTE: We intentionally duplicate Foundry's
structure here rather than
+ * trying to include their partial, because their partial renders a complete
+ * element which cannot be nested or extended from outside. If Foundry ever
+ * changes their index-partial.hbs, this file will need updating to match.
+ * @override
+ */
+ static _entryPartial = "systems/l5r5e/templates/" + "compendium/l5r5e-index-partial.html";
+
+ /**
+ * Sources present in this specific compendium, populated during _prepareContext.
+ * @type {Set}
+ */
+ #sourcesInThisCompendium = new Set();
+
+ /**
+ * Sources unavailable to players based on permission settings.
+ * @type {Set}
+ */
+ #unavailableSourceForPlayersSet = new Set();
+
+ /**
+ * Whether to hide entries with empty sources from players.
+ * @type {boolean}
+ */
+ #hideEmptySourcesFromPlayers = false;
+
+ /**
+ * Which filter UI controls are worth showing.
+ * Determined during _prepareContext by checking whether at least two
+ * distinct values exist for each filterable property.
+ * @type {{ rank: boolean, rarity: boolean, source: boolean, ring: boolean }|null}
+ */
+ #filtersToShow = null;
+
+ /**
+ * Cached active filter values, read from the DOM once at the start of
+ * each filter pass in #reapplyFilters and held for _onMatchSearchEntry
+ * to consume per-entry without re-querying the DOM.
+ * @type {{ userFilter: string[], rankFilter: string[], ringFilter: string[], rarityFilter: string[] }}
+ */
+ #activeFilters = {
+ userFilter: [],
+ rankFilter: [],
+ ringFilter: [],
+ rarityFilter: [],
+ };
+
+ /**
+ * Insert the filter part between header and directory by composing with
+ * the parent parts rather than replacing them, so future Foundry changes
+ * to Compendium.PARTS are picked up automatically.
+ * @override
+ */
+ _configureRenderParts(options) {
+ const parts = super._configureRenderParts(options);
+
+ const ordered = {};
+ for (const [key, value] of Object.entries(parts)) {
+ ordered[key] = value;
+ if (key === "header") {
+ ordered.filter = {
+ template: `${CONFIG.l5r5e.paths.templates}compendium/filter-bar.html`,
+ };
+ }
+ }
+
+ return ordered;
+ }
+
+ /**
+ * @override
+ */
+ async _prepareContext(options) {
+ const context = await super._prepareContext(options);
+ this.#sourcesInThisCompendium = new Set();
+ this.#resolvePermissions();
+ this.#filtersToShow = this.#computeFilterVisibility();
+ return context;
+ }
+
+ /* -------------------------------------------- */
+
+ /**
+ * @override
+ */
+ async _preparePartContext(partId, context, options) {
+ context = await super._preparePartContext(partId, context, options);
+
+ if (partId === "filter") {
+ const ns = CONFIG.l5r5e.namespace;
+ const allCompendiumReferencesSet = game.settings.get(ns, "all-compendium-references");
+ const hideDisabledOptions = game.settings.get(ns, "compendium-hide-disabled-sources");
+
+ context.filtersToShow = this.#filtersToShow;
+ context.ranks = [1, 2, 3, 4, 5];
+ context.rarities = [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10];
+ context.rings = ["fire", "water", "earth", "air", "void"];
+ context.hideDisabledOptions = hideDisabledOptions;
+ context.showPlayerView = game.user.isGM && this.#unavailableSourceForPlayersSet.size > 0;
+
+ // Source multiselect options — plain data for {{selectOptions}} in the template.
+ context.sources = [...allCompendiumReferencesSet].map((reference) => ({
+ value: reference,
+ label: CONFIG.l5r5e.sourceReference[reference]?.label ?? reference,
+ translate: true,
+ group:
+ CONFIG.l5r5e.sourceReference[reference]?.type.split(",")[0] ??
+ "l5r5e.multiselect.sources_categories.others",
+ disabled:
+ !this.#sourcesInThisCompendium.has(reference) ||
+ (!game.user.isGM && this.#unavailableSourceForPlayersSet.has(reference)),
+ }));
+ }
+
+ if (partId === "directory") {
+ context.entryFilterData = Object.fromEntries(
+ [...this.collection.index.values()].map((entry) => [
+ entry._id,
+ {
+ rank: entry.system?.rank,
+ ring: entry.system?.ring,
+ rarity: entry.system?.rarity,
+ },
+ ])
+ );
+ }
+
+ return context;
+ }
+
+ /**
+ * @override
+ */
+ async _onRender(context, options) {
+ await super._onRender(context, options);
+
+ if (options.parts.includes("filter")) {
+ this.#bindButtonFilter(".rank-filter");
+ this.#bindButtonFilter(".rarity-filter");
+ this.#bindButtonFilter(".ring-filter");
+ this.#bindSourceFilter();
+ }
+
+ // Reapply filters whenever the filter controls or the entry list changes.
+ if (options.parts.some((p) => p === "filter" || p === "directory")) {
+ this.#reapplyFilters();
+ }
+ }
+
+ /* -------------------------------------------- */
+
+ /**
+ * @override
+ */
+ _preSyncPartState(partId, newElement, priorElement, state) {
+ super._preSyncPartState(partId, newElement, priorElement, state);
+
+ if (partId === "filter") {
+ state.selectedRanks = [...priorElement.querySelectorAll(".rank-filter .selected")].map((element) => element.dataset.rank);
+ state.selectedRarities = [...priorElement.querySelectorAll(".rarity-filter .selected")].map((element) => element.dataset.rarity);
+ state.selectedRings = [...priorElement.querySelectorAll(".ring-filter .selected")].map((element) => element.dataset.ring);
+ state.sourceValue = priorElement.querySelector("l5r5e-multi-select")?.value;
+ }
+ }
+
+ /**
+ * Restore filter selections after the filter part has been re-rendered.
+ * The [data-clear] button visibility is derived from whether any values
+ * were restored — no extra state needed.
+ * @override
+ */
+ _syncPartState(partId, newElement, priorElement, state) {
+ super._syncPartState(partId, newElement, priorElement, state);
+
+ if (partId === "filter") {
+ for (const rank of state.selectedRanks ?? []) {
+ newElement.querySelector(`.rank-filter [data-rank="${rank}"]`)?.classList.add("selected");
+ }
+ const rankClear = newElement.querySelector(".rank-filter [data-clear]");
+ if (rankClear) {
+ rankClear.style.display = state.selectedRanks?.length ? "" : "none";
+ }
+
+ for (const rarity of state.selectedRarities ?? []) {
+ newElement.querySelector(`.rarity-filter [data-rarity="${rarity}"]`)?.classList.add("selected");
+ }
+ const rarityClear = newElement.querySelector(".rarity-filter [data-clear]");
+ if (rarityClear) {
+ rarityClear.style.display = state.selectedRarities?.length ? "" : "none";
+ }
+
+ for (const ring of state.selectedRings ?? []) {
+ newElement.querySelector(`.ring-filter [data-ring="${ring}"]`)?.classList.add("selected");
+ }
+ const ringClear = newElement.querySelector(".ring-filter [data-clear]");
+ if (ringClear) {
+ ringClear.style.display = state.selectedRings?.length ? "" : "none";
+ }
+
+ if (state.sourceValue) {
+ const multiSelect = newElement.querySelector("l5r5e-multi-select");
+ if (multiSelect) {
+ multiSelect.value = state.sourceValue;
+ }
+ }
+ }
+ }
+
+ /**
+ * @override
+ */
+ _onMatchSearchEntry(query, entryIds, entry, options) {
+ super._onMatchSearchEntry(query, entryIds, entry, options);
+ if (entry.style.display === "none") {
+ return;
+ }
+ this.#applyEntryFilter(entry);
+ }
+
+ /**
+ * Snapshot active filter state then re-run the search filter (or walk entries directly as fallback).
+ * @private
+ */
+ #reapplyFilters() {
+ this.#refreshActiveFilters();
+
+ const searchFilter = this._searchFilters?.[0];
+ if (searchFilter) {
+ searchFilter.filter(null, searchFilter.query);
+ return;
+ }
+
+ // Fallback
+ for (const entry of this.element.querySelectorAll(".directory-item")) {
+ this.#applyEntryFilter(entry);
+ }
+ }
+
+ /**
+ * Read current filter selections from the DOM and cache them in #activeFilters.
+ * @private
+ */
+ #refreshActiveFilters() {
+ const filterElement = this.element.querySelector("[data-application-part=\"filter\"]");
+ const multiSelect = filterElement?.querySelector("l5r5e-multi-select");
+
+ const collectSelected = (containerSelector, dataKey) =>
+ [...(filterElement?.querySelectorAll(`${containerSelector} .selected`) ?? [])]
+ .map((element) => element.dataset[dataKey])
+ .filter(Boolean);
+
+ this.#activeFilters = {
+ userFilter: multiSelect?.value ?? [],
+ rankFilter: collectSelected(".rank-filter", "rank"),
+ ringFilter: collectSelected(".ring-filter", "ring"),
+ rarityFilter: collectSelected(".rarity-filter", "rarity"),
+ };
+ }
+
+ /**
+ * Apply all active filters to a single directory entry, showing or hiding it accordingly.
+ * @param {HTMLElement} entry
+ * @private
+ */
+ #applyEntryFilter(entry) {
+ const indexEntry = this.collection.index.get(entry.dataset.entryId);
+ if (!indexEntry) {
+ return;
+ }
+
+ const system = indexEntry.system;
+ const lineSource = system?.source_reference?.source ?? null;
+ const { userFilter, rankFilter, ringFilter, rarityFilter } = this.#activeFilters;
+ let shouldShow = true;
+
+ const sourceUnavailable =
+ (lineSource && this.#unavailableSourceForPlayersSet.has(lineSource)) ||
+ (lineSource === "" && this.#hideEmptySourcesFromPlayers);
+
+ if (sourceUnavailable) {
+ if (game.user.isGM) {
+ entry.classList.add("not-for-players");
+ entry.dataset.tooltip = game.i18n.localize("l5r5e.compendium.not_for_players");
+ } else {
+ shouldShow = false;
+ }
+ }
+
+ if (rankFilter.length) {
+ shouldShow &&= rankFilter.includes(String(system?.rank));
+ }
+ if (rarityFilter.length) {
+ shouldShow &&= rarityFilter.includes(String(system?.rarity));
+ }
+ if (ringFilter.length) {
+ shouldShow &&= ringFilter.includes(system?.ring);
+ }
+ if (userFilter.length) {
+ shouldShow &&= userFilter.includes(lineSource);
+ }
+
+ entry.style.display = shouldShow ? "" : "none";
+ }
+
+ /**
+ * Iterate the compendium index to:
+ * 1. Populate #sourcesInThisCompendium for source filter options
+ * 2. Determine which filter controls have enough distinct values to show
+ * @returns {{ rank: boolean, rarity: boolean, source: boolean, ring: boolean }}
+ * @private
+ */
+ #computeFilterVisibility() {
+ const filtersToShow = { rank: false, rarity: false, source: true, ring: false };
+ const firstSeen = { rank: null, rarity: null, ring: null };
+
+ const markIfDistinct = (prop, value) => {
+ if (filtersToShow[prop] || value === undefined || value === null) {
+ return;
+ }
+ if (firstSeen[prop] === null) {
+ firstSeen[prop] = value;
+ } else if (firstSeen[prop] !== value) {
+ filtersToShow[prop] = true;
+ }
+ };
+
+ for (const entry of this.collection.index.values()) {
+ const sys = entry.system;
+ if (!sys) {
+ continue;
+ }
+ if (sys.rank !== undefined) {
+ markIfDistinct("rank", sys.rank);
+ }
+ if (sys.ring !== undefined) {
+ markIfDistinct("ring", sys.ring);
+ }
+ if (sys.rarity !== undefined) {
+ markIfDistinct("rarity", sys.rarity);
+ }
+ if (sys.source_reference?.source !== undefined) {
+ this.#sourcesInThisCompendium.add(sys.source_reference.source);
+ }
+ }
+
+ return filtersToShow;
+ }
+
+ /**
+ * Resolve which sources are restricted from players and cache the result
+ * in instance-level sets for use by #applyEntryFilter.
+ * @private
+ */
+ #resolvePermissions() {
+ const ns = CONFIG.l5r5e.namespace;
+ const officialSet = game.settings.get(ns, "compendium-official-content-for-players");
+ const unofficialSet = game.settings.get(ns, "compendium-unofficial-content-for-players");
+ const allRefsSet = game.settings.get(ns, "all-compendium-references");
+
+ this.#hideEmptySourcesFromPlayers = game.settings.get(ns, "compendium-hide-empty-sources-from-players");
+
+ this.#unavailableSourceForPlayersSet = new Set(
+ [...allRefsSet].filter((ref) => {
+ if (CONFIG.l5r5e.sourceReference[ref]) {
+ return officialSet.size > 0 ? !officialSet.has(ref) : false;
+ }
+ return unofficialSet.size > 0 ? !unofficialSet.has(ref) : false;
+ })
+ );
+ }
+
+ /**
+ * Bind toggle-selection click handlers to all children of a button filter container.
+ * A [data-clear] element at the end of the container acts as an inline reset:
+ * - It is hidden (display:none in the template) when no values are selected.
+ * - It becomes visible as soon as any value is selected.
+ * - Clicking it deselects all values and hides itself again.
+ * @param {string} containerSelector
+ * @private
+ */
+ #bindButtonFilter(containerSelector) {
+ const container = this.element.querySelector(containerSelector);
+ if (!container) {
+ return;
+ }
+
+ const clearButton = container.querySelector("[data-clear]");
+
+ const updateClearButton = () => {
+ if (!clearButton) {
+ return;
+ }
+ const anySelected = [...container.children].some(
+ (element) => element.dataset.clear === undefined && element.classList.contains("selected")
+ );
+ clearButton.style.display = anySelected ? "" : "none";
+ };
+
+ for (const child of container.children) {
+ child.addEventListener("click", (event) => {
+ const target = event.currentTarget;
+
+ if (target.dataset.clear !== undefined) {
+ // Clicked the clear button — deselect all value elements
+ for (const element of container.children) {
+ element.classList.remove("selected");
+ }
+ } else {
+ // Clicked a value element — toggle it
+ target.classList.toggle("selected");
+ }
+
+ updateClearButton();
+ this.#reapplyFilters();
+ });
+ }
+ }
+
+ /**
+ * Wire up the change listener on the already-rendered multiselect element.
+ * The element and its options are fully declared in filter-bar.html via
+ * {{selectOptions}} — no imperative construction needed here.
+ * @private
+ */
+ #bindSourceFilter() {
+ const multiSelect = this.element.querySelector("l5r5e-multi-select[name=\"filter-sources\"]");
+ if (!multiSelect) {
+ return;
+ }
+ multiSelect.addEventListener("change", () => this.#reapplyFilters());
+ }
+
+ /**
+ * Handle the GM player-view button, selecting only the sources that are
+ * both visible to players and present in this specific compendium.
+ * @this {ItemCompendiumL5r5e}
+ * @private
+ */
+ static #onApplyPlayerView() {
+ const ns = CONFIG.l5r5e.namespace;
+ const allRefsSet = game.settings.get(ns, "all-compendium-references");
+
+ const availableForPlayers = [...allRefsSet]
+ .filter((ref) => !this.#unavailableSourceForPlayersSet.has(ref))
+ .filter((ref) => this.#sourcesInThisCompendium.has(ref));
+
+ const multiSelect = this.element.querySelector("l5r5e-multi-select[name=\"filter-sources\"]");
+ if (!multiSelect) {
+ return;
+ }
+
+ multiSelect.value = availableForPlayers;
+ this.#reapplyFilters();
+ }
+
+ /**
+ * Register this compendium class and extend the index fields for all Item packs.
+ */
+ static applyToPacks() {
+ CONFIG.Item.compendiumIndexFields = [
+ ...(CONFIG.Item.compendiumIndexFields ?? []),
+ "system.rank",
+ "system.ring",
+ "system.rarity",
+ "system.source_reference.source",
+ ];
+
+ for (const pack of game.packs.filter((p) => p.metadata.type === "Item")) {
+ pack.applicationClass = ItemCompendiumL5r5e;
+ pack.getIndex(); // rebuild index with new fields — no need to await since this happens before anyone have a chance to act
+ }
+ }
+}
diff --git a/system/scripts/data/l5r5e-setfield.js b/system/scripts/data/l5r5e-setfield.js
index dc896ea..9da601f 100644
--- a/system/scripts/data/l5r5e-setfield.js
+++ b/system/scripts/data/l5r5e-setfield.js
@@ -1,47 +1,110 @@
import { L5r5eHtmlMultiSelectElement } from "../misc/l5r5e-multiselect.js";
+
/**
- * A subclass of [ArrayField]{@link ArrayField} which supports a set of contained elements.
- * Elements in this set are treated as fungible and may be represented in any order or discarded if invalid.
+ * A Foundry `SetField` that renders as an {@link L5r5eHtmlMultiSelectElement} chip-input.
+ *
+ * Use this in a DataModel schema whenever a field stores an unordered collection of
+ * string values drawn from a fixed option list. On form submission the element returns a
+ * comma-separated string; `clean()` splits it back into an Array before Foundry processes
+ * it, and `initialize()` wraps the result in a `Set` for use in the model.
+ *
+ * @example
+ * // In a DataModel schema:
+ * skills: new L5r5eSetField({
+ * options: [
+ * { value: "athletics", label: "Athletics" },
+ * { value: "meditation", label: "Meditation", disabled: true, tooltip: "Requires rank 3" },
+ * ]
+ * })
+ *
+ * // Renders automatically via {{formGroup}} in a Handlebars template:
+ * // {{formGroup fields.skills name="skills" value=data.skills localize=true}}
+ *
+ * @param {object} options
+ * @param {{ value: string, label: string, disabled?: boolean, tooltip?: string }[]} options.options
+ * Flat list of selectable items. Passed directly to {@link L5r5eHtmlMultiSelectElement.create}.
+ * @param {object[]} [options.groups]
+ * Optional optgroup definitions, forwarded to the element factory unchanged.
+ * @param {boolean} [options.hideDisabledOptions=false]
+ * When true, disabled options are hidden from the dropdown instead of greyed out.
*/
export class L5r5eSetField extends foundry.data.fields.SetField {
+ /**
+ * Saved constructor options, used to reconstruct the multiselect input on form render.
+ * @type {object}
+ */
+ #savedOptions;
- // We don't get the options we expect when we convert this to input,
- // So store them here
- #savedOptions;
+ /**
+ * @param {object} options
+ * @param {object} context
+ */
+ constructor(options = {}, context = {}) {
+ super(
+ new foundry.data.fields.StringField({
+ choices: options.options?.map((option) => option.value) ?? [],
+ }),
+ options,
+ context
+ );
- constructor(options={}, context={}) {
- super(new foundry.data.fields.StringField({
- choices: options.options.map((option) => option.value)
- }), options, context);
-
- this.#savedOptions = options;
- }
-
- /** @override */
- initialize(value, model, options={}) {
- if ( !value ) return value;
- return new Set(super.initialize(value, model, options));
+ this.#savedOptions = options;
}
- /** @override */
+ /**
+ * @param {*} value
+ * @param {object} model
+ * @param {object} options
+ * @return {Set}
+ * @override
+ */
+ initialize(value, model, options = {}) {
+ if (!value || (Array.isArray(value) && value.length === 0)) {
+ return new Set();
+ }
+
+ return new Set(super.initialize(value, model, options).filter(Boolean));
+ }
+
+ /**
+ * @param {Set} value
+ * @return {*[]|*}
+ * @override
+ */
toObject(value) {
- if ( !value ) return value;
- return Array.from(value).map(v => this.element.toObject(v));
+ if (!value) {
+ return value;
+ }
+ return Array.from(value).map((v) => this.element.toObject(v));
}
- /* -------------------------------------------- */
- /* Form Field Integration */
- /* -------------------------------------------- */
+ /**
+ * @param {string|Array} value
+ * @param {object} options
+ * @return {Array}
+ * @override
+ */
+ clean(value, options) {
+ // Settings forms submit comma-separated strings; split before normal cleaning.
+ if (typeof value === "string") {
+ value = value.length ? value.split(",").filter(Boolean) : [];
+ }
+ return super.clean(value, options);
+ }
- /** @override */
+ /**
+ * @param {object} config
+ * @return {L5r5eHtmlMultiSelectElement}
+ * @override
+ */
_toInput(config) {
- const e = this.element;
- return L5r5eHtmlMultiSelectElement.create({
- name: config.name,
- options: this.#savedOptions.options,
- groups: this.#savedOptions.groups,
- value: config.value,
- localize: config.localize
- });
+ return L5r5eHtmlMultiSelectElement.create({
+ name: config.name,
+ options: this.#savedOptions.options,
+ groups: this.#savedOptions.groups,
+ value: config.value,
+ localize: config.localize,
+ hideDisabledOptions: this.#savedOptions.hideDisabledOptions,
+ });
}
- }
\ No newline at end of file
+}
\ No newline at end of file
diff --git a/system/scripts/hooks.js b/system/scripts/hooks.js
index 15ccb1f..6a2ee47 100644
--- a/system/scripts/hooks.js
+++ b/system/scripts/hooks.js
@@ -1,4 +1,4 @@
-import { L5r5eHtmlMultiSelectElement } from "./misc/l5r5e-multiselect.js";
+import { ItemCompendiumL5r5e } from "./compendium/l5r5e-item-compendium.js"
export default class HooksL5r5e {
/**
@@ -26,6 +26,8 @@ export default class HooksL5r5e {
) {
game.babele.setSystemTranslationsDir("babele"); // Since Babele v2.0.7
}
+
+ ItemCompendiumL5r5e.applyToPacks();
}
/**
@@ -245,236 +247,6 @@ export default class HooksL5r5e {
});
}
- /**
- * Compendium display (Add filters)
- */
- static async renderCompendium(app, html, data) {
- html = $(html); // basic patch for v13
-
- if (app.collection.documentName === "Item") {
- const content = await app.collection.getDocuments();
- const sourcesInThisCompendium = new Set([]);
- const filtersToShow = {
- rank: false,
- rarity: false,
- source: false,
- ring: false,
- };
- // Used to auto hide same values for a full compendium
- const previousValue = {
- rank: null,
- rarity: null,
- source: null,
- ring: null,
- };
-
- // Cache
- const header = html.find(".directory-header");
- const entries = html.find(".directory-item");
-
- // Add additional data to the entries to make it faster to lookup.
- // Add Ring/rank/rarity information
- for (const document of content) {
- const entry = entries.filter(`[data-entry-id="${document.id}"]`);
-
- // Hide filter if only one value of this type is found in the compendium
- const autoDisplayFilter = (props, documentData = null) => {
- documentData ??= document.system[props];
-
- if (filtersToShow[props] || previousValue[props] === documentData) {
- return;
- }
- filtersToShow[props] = previousValue[props] !== null && previousValue[props] !== documentData;
- previousValue[props] = documentData;
- };
-
- if (document.system?.rank) {
- autoDisplayFilter('rank');
- entry.data("rank", document.system.rank);
- }
-
- if (document.system?.source_reference.source) {
- autoDisplayFilter('source', document.system.source_reference.source);
- sourcesInThisCompendium.add(document.system.source_reference.source);
- entry.data("source", document.system.source_reference);
- }
-
- if (document.system?.ring) {
- autoDisplayFilter('ring');
- entry.data("ring", document.system.ring);
- }
-
- if (document.system?.rarity) {
- autoDisplayFilter('rarity');
- entry.data("rarity", document.system.rarity);
- }
-
- // Add ring/rank/rarity information on the item in the compendium view
- if (document.system?.ring || document.system?.rarity || document.system?.rank) {
- const ringRarityRank = await foundry.applications.handlebars.renderTemplate(`${CONFIG.l5r5e.paths.templates}compendium/ring-rarity-rank.html`, document.system);
- entry.append(ringRarityRank);
- }
- }
-
- // Setup filters
- const officialContentSet = game.settings.get(CONFIG.l5r5e.namespace, "compendium-official-content-for-players");
- const unofficialContentSet = game.settings.get(CONFIG.l5r5e.namespace, "compendium-unofficial-content-for-players");
- const allCompendiumReferencesSet = game.settings.get(CONFIG.l5r5e.namespace, "all-compendium-references")
- const hideEmptySourcesFromPlayers = game.settings.get(CONFIG.l5r5e.namespace, "compendium-hide-empty-sources-from-players");
-
- const unavailableSourceForPlayersSet = new Set([...allCompendiumReferencesSet].filter((element) => {
- if (CONFIG.l5r5e.sourceReference[element]) {
- return officialContentSet.size > 0 ? !officialContentSet.has(element) : false;
- }
- return unofficialContentSet.size > 0 ? !unofficialContentSet.has(element) : false;
- }));
-
- // Create filter function
- const applyCompendiumFilter = () => {
- const userFilter = header.find("l5r5e-multi-select").val();
- const rankFilter = header.find(".rank-filter .selected").data("rank");
- const ringFilter = header.find(".ring-filter .selected").data("ring");
- const rarityFilter = header.find(".rarity-filter .selected").data("rarity");
-
- entries.each(function () {
- const lineSource = $(this).data("source")?.source;
-
- // We might have stuff in the compendium view that does not have a source (folders etc.) Ignore those.
- if (lineSource === null || lineSource === undefined) {
- return;
- }
-
- let shouldShow = true;
-
- // Handle unavailable sources
- if (unavailableSourceForPlayersSet.has(lineSource)) {
- if (game.user.isGM) {
- shouldShow &= true;
- $(this)
- .addClass("not-for-players")
- .attr("data-tooltip", game.i18n.localize("l5r5e.compendium.not_for_players"));
- } else {
- shouldShow &= false;
- }
- }
-
- // Handle empty sources
- if (lineSource === "" && hideEmptySourcesFromPlayers) {
- if (game.user.isGM) {
- shouldShow &= true;
- $(this)
- .addClass("not-for-players")
- .attr("data-tooltip", game.i18n.localize("l5r5e.compendium.not_for_players"));
- } else {
- shouldShow &= false;
- }
- }
-
- // Apply filters
- if (rankFilter) {
- shouldShow &= $(this).data("rank") == rankFilter;
- }
- if (userFilter?.length) {
- shouldShow &= userFilter.includes(lineSource);
- }
- if (ringFilter) {
- shouldShow &= $(this).data("ring") == ringFilter;
- }
- if (rarityFilter >= 0) {
- shouldShow &= $(this).data("rarity") == rarityFilter;
- }
-
- // Show or hide this entry based on the result
- shouldShow ? $(this).show() : $(this).hide();
- });
- };
-
- // Filter setup
- const addFilter = async (filterType, templateFile, templateData) => {
- if (!filtersToShow[filterType]) {
- return;
- }
- const filterTemplate = await foundry.applications.handlebars.renderTemplate(
- `${CONFIG.l5r5e.paths.templates}compendium/${templateFile}.html`,
- templateData
- );
- header.append(filterTemplate);
-
- header.find(`.${filterType}-filter`).children().each(function () {
- $(this).on("click", (event) => {
- const selected = $(event.target).hasClass("selected");
- header.find(`.${filterType}-filter`).children().removeClass("selected");
- $(event.target).toggleClass("selected", !selected);
- applyCompendiumFilter();
- });
- });
- };
-
- // Add Rank, Rarity, Ring Filters
- await Promise.all([
- addFilter('rank' , 'rank-filter', { type: "rank", number: [1, 2, 3, 4, 5] }),
- addFilter('rarity', 'rank-filter', { type: "rarity", number: [0, 1, 2, 3, 4, 5, 6, 7, 8, 9, 10] }),
- addFilter('ring' , 'ring-filter', {}),
- ]);
-
- if (filtersToShow.source) {
- // Build the source select
- const selectableSourcesArray = [...allCompendiumReferencesSet].map((reference) => ({
- value: reference,
- label: CONFIG.l5r5e.sourceReference[reference]?.label ?? reference,
- translate: true,
- group: CONFIG.l5r5e.sourceReference[reference]?.type.split(",")[0] ?? "l5r5e.multiselect.sources_categories.others",
- disabled: !sourcesInThisCompendium.has(reference) || (!game.user.isGM && unavailableSourceForPlayersSet.has(reference))
- }));
- const filterSourcesBox = L5r5eHtmlMultiSelectElement.create({
- name: "filter-sources",
- options: selectableSourcesArray,
- localize: true,
- });
- header.append(filterSourcesBox.outerHTML);
- $("l5r5e-multi-select").on("change", applyCompendiumFilter);
-
- // If gm add an extra button to easily filter the content to see the same stuff as a player
- if (game.user.isGM && unavailableSourceForPlayersSet.size > 0) {
- const buttonHTML = `'
-
- const filterPlayerViewArray = [...allCompendiumReferencesSet]
- .filter((item) => !unavailableSourceForPlayersSet.has(item))
- .filter((item) => sourcesInThisCompendium.has(item));
-
- $(buttonHTML).appendTo($(header).find("l5r5e-multi-select")).click(function() {
- header.find("l5r5e-multi-select")[0].value = filterPlayerViewArray;
- });
- }
- }
-
- // TODO: This delay is a workaround and should be addressed in another way.
- // This is ugly but if we hide the content too early then it won't be hidden for some reason.
- // Current guess is that the foundry search filter is doing something.
- // Adding a delay here so that we hide the content. This will fail on slow computers/network...
- setTimeout(() => {
- applyCompendiumFilter();
- }, 250);
-
- return false;
- }
- }
-
- static updateCompendium(pack, documents, options, userId) {
- documents.forEach((document) => {
- const inc_reference = document?.system?.source_reference?.source?.trim();
- if (!!inc_reference) {
- const references = game.settings.get(CONFIG.l5r5e.namespace, "all-compendium-references");
- if (!references.includes(inc_reference)) {
- references.push(inc_reference);
- game.settings.set(CONFIG.l5r5e.namespace, "all-compendium-references", references);
- }
- }
- });
- }
-
/**
* DiceSoNice - Add L5R DicePresets
*/
diff --git a/system/scripts/main-l5r5e.js b/system/scripts/main-l5r5e.js
index 25e1eef..01406f7 100644
--- a/system/scripts/main-l5r5e.js
+++ b/system/scripts/main-l5r5e.js
@@ -47,8 +47,10 @@ import { GmMonitor } from "./gm/gm-monitor.js";
import { Storage } from "./storage.js";
// Misc
import { L5r5eHtmlMultiSelectElement } from "./misc/l5r5e-multiselect.js";
+import { L5R5eHtmlComboBoxElement } from "./misc/l5r5e-combo-box.js";
window.customElements.define(L5r5eHtmlMultiSelectElement.tagName, L5r5eHtmlMultiSelectElement);
+window.customElements.define(L5R5eHtmlComboBoxElement.tagName, L5R5eHtmlComboBoxElement);
/* ------------------------------------ */
/* Initialize system */
@@ -286,6 +288,4 @@ Hooks.on("renderSidebarTab", (app, html, data) => HooksL5r5e.renderSidebarTab(ap
Hooks.on("activateSettings", async (app)=> HooksL5r5e.activateSettings(app));
Hooks.on("renderChatMessageHTML", (message, html, data) => HooksL5r5e.renderChatMessage(message, html, data));
Hooks.on("renderCombatTracker", (app, html, data) => HooksL5r5e.renderCombatTracker(app, html, data));
-Hooks.on("renderCompendium", async (app, html, data) => HooksL5r5e.renderCompendium(app, html, data));
Hooks.on("diceSoNiceRollStart", (messageId, context) => HooksL5r5e.diceSoNiceRollStart(messageId, context));
-Hooks.on("updateCompendium", (pack, documents, options, userId) => HooksL5r5e.updateCompendium(pack, documents, options, userId));
diff --git a/system/scripts/misc/l5r5e-combo-box.js b/system/scripts/misc/l5r5e-combo-box.js
new file mode 100644
index 0000000..97afbf6
--- /dev/null
+++ b/system/scripts/misc/l5r5e-combo-box.js
@@ -0,0 +1,257 @@
+import { DropdownMixin } from "./l5r5e-dropdown-mixin.js";
+
+const { AbstractFormInputElement } = foundry.applications.elements;
+
+/**
+ * A custom `` combining a free-text input with a filterable option dropdown.
+ *
+ * Stores a **single string value** — either a predefined option's `value` attribute, or
+ * whatever the user typed freely. Use this when a field holds exactly one value, whether
+ * chosen from a list or entered manually (e.g. a weapon name, a title, a custom skill).
+ * For storing multiple values from a list, use {@link L5r5eHtmlMultiSelectElement} instead.
+ *
+ * Picking a predefined option stores its `value` attribute while displaying its human-readable
+ * label. Free-typing stores the typed string as both value and label. Fires `input` on every
+ * keystroke and `change` only on commit (blur or Enter) to avoid triggering sheet re-renders
+ * mid-typing. Picking from the dropdown fires both `input` and `change` immediately.
+ *
+ * Use `{{selectOptions}}` without `selected=` to render the available options, and set the
+ * current value via the `value` attribute on the element directly.
+ *
+ * @example
+ * ```hbs
+ * {{!-- Pass current value via the element's `value` attribute, not selectOptions selected= --}}
+ *
+ * {{selectOptions choices localize=true}}
+ *
+ * ```
+ *
+ * @example
+ * // Programmatic update — query the element by its name attribute, then set value directly.
+ * // The visible input label updates automatically to match the selected option's label.
+ * const el = document.querySelector("l5r5e-combo-box[name='weapon']");
+ * el.value = "axe"; // input shows "Battleaxe", el.value returns "axe"
+ *
+ * // Free-text entry (no matching option) — value and label are both set to the typed string:
+ * el.value = "naginata"; // input shows "naginata", el.value returns "naginata"
+ */
+export class L5R5eHtmlComboBoxElement extends DropdownMixin(
+ AbstractFormInputElement,
+ { multiSelect: false, debounceMs: 150, clearOnClose: false }
+) {
+ /**
+ * The label currently shown in the text input. Differs from `_value` when a predefined
+ * option is selected (value = option's value attribute, label = option's display text).
+ * @type {string}
+ */
+ _label = "";
+
+ /** @override */
+ static tagName = "l5r5e-combo-box";
+
+ /** @override */
+ static observedAttributes = ["disabled", "placeholder", "value"];
+
+ /**
+ * Flat descriptor list built once in _initialize(), mirrors the light-DOM options.
+ * @type {{ value: string, label: string, group: string|null }[]}
+ */
+ #options = [];
+
+ /**
+ * Value snapshot taken when the input receives focus.
+ * Used by the blur handler to decide whether to fire a change event.
+ * @type {string}
+ */
+ #valueAtFocus = "";
+
+ /* -------------------------------------------- */
+ /* Accessors */
+ /* -------------------------------------------- */
+
+ /** @override */
+ get value() {
+ return this._value ?? "";
+ }
+
+ set value(value) {
+ const match = this.#options.find(option => option.value === String(value ?? ""));
+ if (match) {
+ this._value = match.value;
+ this._label = match.label;
+ }
+ else {
+ this._value = String(value ?? "");
+ this._label = this._value;
+ }
+ this._internals.setFormValue(this._value);
+ if (this._dropdownInput) {
+ this._dropdownInput.value = this._label;
+ }
+ this.dispatchEvent(new Event("input", { bubbles: true, cancelable: true }));
+ this.dispatchEvent(new Event("change", { bubbles: true, cancelable: true }));
+ }
+
+ /**
+ * AbstractFormInputElement does not have an _initialize() hook, so we override
+ * connectedCallback to snapshot options from the light DOM before _buildElements()
+ * is called by super.connectedCallback().
+ *
+ * We keep this minimal: just build the flat #options list so _getDropdownOptions()
+ * and the value setter can look options up by value.
+ * @override
+ */
+ connectedCallback() {
+ this.#snapshotOptions();
+ this.#resolveInitialValue();
+ super.connectedCallback();
+ }
+
+ #snapshotOptions() {
+ const makeOption = (option, group = null) => ({
+ value: option.value,
+ label: option.innerText,
+ group,
+ });
+
+ this.#options = [...this.children].flatMap(child => {
+ if (child instanceof HTMLOptGroupElement) {
+ return [...child.querySelectorAll("option")]
+ .filter(option => option.value)
+ .map(option => makeOption(option, child.label));
+ }
+ if (child instanceof HTMLOptionElement && child.value) {
+ return makeOption(child);
+ }
+ return [];
+ });
+ }
+
+ #resolveInitialValue() {
+ // Honour a `value` attribute if set, otherwise find a selected option.
+ const attrValue = this.getAttribute("value");
+ const initial = attrValue ?? this.#options.find(option => option.selected)?.value ?? "";
+ const match = this.#options.find(option => option.value === initial);
+ if (match) {
+ this._value = match.value;
+ this._label = match.label;
+ } else {
+ this._value = initial;
+ this._label = initial;
+ }
+ }
+
+ /* -------------------------------------------- */
+ /* Element Lifecycle */
+ /* -------------------------------------------- */
+
+ /** @override */
+ _buildElements() {
+ const wrapper = this._buildDropdownElements({
+ placeholder: this.getAttribute("placeholder") ?? "",
+ });
+
+ this._dropdownInput.value = this._label || this._value || "";
+ this._primaryInput = this._dropdownInput;
+
+ return [wrapper];
+ }
+
+ /** @override */
+ _activateListeners() {
+ const signal = this.abortSignal;
+ this._activateDropdownListeners();
+
+ // Prevent the inner 's own native change from reaching Foundry's form handler.
+ // We dispatch our own change at commit time only (see below).
+ this._dropdownInput.addEventListener("change", (e) => e.stopPropagation(), { signal });
+
+ // Free typing: update value and fire `input` immediately.
+ // Do NOT fire `change` here — Foundry's form handler re-renders the sheet on
+ // every `change` event, which would destroy the element mid-typing.
+ // `change` is fired at commit time: on blur (if value changed) or Enter.
+ this._dropdownInput.addEventListener("input", () => {
+ const typed = this._dropdownInput.value;
+ this._label = typed;
+ this._value = typed;
+ this._internals.setFormValue(typed);
+ this.dispatchEvent(new Event("input", { bubbles: true, cancelable: true }));
+ // DropdownMixin's #onInput fires the debounced dropdown re-render.
+ }, { signal });
+
+ // Commit on blur if the value has changed since the element was focused.
+ this._dropdownInput.addEventListener("focus", () => {
+ this.#valueAtFocus = this._value;
+ }, { signal });
+
+ this._dropdownInput.addEventListener("blur", () => {
+ if (this._value !== this.#valueAtFocus) {
+ this.dispatchEvent(new Event("change", { bubbles: true, cancelable: true }));
+ }
+ }, { signal });
+
+ // Commit on Enter for free-text values (not picked from the dropdown).
+ this._dropdownInput.addEventListener("keydown", (e) => {
+ if (e.key === "Enter") {
+ e.preventDefault();
+ this._dropdownInput.blur();
+ }
+ }, { signal });
+ }
+
+ /** @override */
+ _toggleDisabled(disabled) {
+ this._toggleDropdownDisabled(disabled);
+ // Add/remove .disabled on the wrapper so CSS can dim the whole control.
+ const wrapper = this.querySelector(".wrapper");
+ if (wrapper) {
+ wrapper.classList.toggle("disabled", disabled);
+ }
+ }
+
+ /** @override */
+ attributeChangedCallback(attrName, oldValue, newValue) {
+ super.attributeChangedCallback(attrName, oldValue, newValue);
+ if (attrName === "disabled") {
+ this._toggleDropdownDisabled(newValue !== null);
+ }
+ }
+
+ /** @override */
+ _refresh() {
+ if (!this._dropdownInput)
+ return;
+
+ this._dropdownInput.value = this._label ?? "";
+ this._internals.setFormValue(this._value ?? "");
+ this._dropdownRefresh();
+ }
+
+ /* -------------------------------------------- */
+ /* DropdownMixin Contract */
+ /* -------------------------------------------- */
+
+ /** @override */
+ _getDropdownOptions() {
+ return this.#options;
+ }
+
+ /** @override */
+ _isOptionSelected(value) {
+ return this._value === value;
+ }
+
+ /**
+ * Commit the picked option as the current value and close the dropdown.
+ * @override
+ */
+ _onDropdownPick(option) {
+ this._value = option.value;
+ this._label = option.label;
+ this._dropdownInput.value = option.label;
+ this._internals.setFormValue(option.value);
+ this._dropdownInput.blur();
+ this.dispatchEvent(new Event("input", { bubbles: true, cancelable: true }));
+ this.dispatchEvent(new Event("change", { bubbles: true, cancelable: true }));
+ }
+}
\ No newline at end of file
diff --git a/system/scripts/misc/l5r5e-dropdown-mixin.js b/system/scripts/misc/l5r5e-dropdown-mixin.js
new file mode 100644
index 0000000..5223a52
--- /dev/null
+++ b/system/scripts/misc/l5r5e-dropdown-mixin.js
@@ -0,0 +1,492 @@
+/**
+ * @typedef {Object} DropdownMixinConfig
+ * @property {boolean} [multiSelect=false]
+ * When true the dropdown toggles selection and stays open after a pick.
+ * When false a pick commits the value and closes (combo-box mode).
+ * @property {number} [debounceMs=150]
+ * Trailing-debounce delay in milliseconds for dropdown re-renders while typing.
+ */
+
+/**
+ * DropdownMixin
+ *
+ * Adds a fully custom `` dropdown to any AbstractFormInputElement
+ * subclass. Handles UI only — building, opening, closing, rendering options, and keyboard
+ * navigation. Has no opinion about how options are stored or how values are managed.
+ *
+ * ### Contract: three methods the host must implement
+ *
+ * - `_getDropdownOptions()`
+ * Return `{ value, label, group, disabled, tooltip }[]` — the full unfiltered list.
+ *
+ * - `_isOptionSelected(value)` → boolean
+ * Return whether a given value is currently selected.
+ *
+ * - `_onDropdownPick(option)` → void
+ * Called when the user picks an option. The mixin handles post-pick behaviour
+ * (close in single mode, re-render in multi mode) after this returns.
+ *
+ * ### Host responsibilities
+ * - Call `this._buildDropdownElements({ placeholder })` inside `_buildElements()`
+ * and include the returned wrapper in the returned array.
+ * - Call `this._activateDropdownListeners()` inside `_activateListeners()`.
+ * - Call `this._toggleDropdownDisabled(disabled)` inside `_toggleDisabled()`.
+ * - Call `this._dropdownRefresh()` inside `_refresh()` to keep checkmarks in sync.
+ *
+ * @param {typeof AbstractFormInputElement} Base
+ * @param {DropdownMixinConfig} [mixinConfig={}]
+ * @return {typeof Base}
+ */
+export function DropdownMixin(Base, mixinConfig = {}) {
+ const {
+ multiSelect = false,
+ debounceMs = 150,
+ /**
+ * When true, closing the dropdown clears the search input text.
+ * Use true for multi-select (search is transient) and false for
+ * combo-box (the input IS the value and must persist after close).
+ */
+ clearOnClose = true,
+ } = mixinConfig;
+
+ return class DropdownMixinElement extends Base {
+
+ /* --------------------------------------------------------- */
+ /* Private Fields */
+ /* --------------------------------------------------------- */
+
+ /** @type {HTMLInputElement} */
+ #searchInput;
+
+ /** @type {HTMLUListElement} */
+ #list;
+
+ /** @type {boolean} */
+ #open = false;
+
+ /**
+ * Snapshot of #open at the moment a focus event fires.
+ * Lets us distinguish a fresh focus (should open) from a click
+ * on an already-focused input (should toggle closed).
+ * @type {boolean}
+ */
+ #wasOpenOnFocus = false;
+
+ /** @type {number} */
+ #activeIndex = -1;
+
+ /** @type {HTMLLIElement[]} — flat list of pickable - s, excludes group headers */
+ #optionElements = [];
+
+ /** @type {Function} */
+ #debouncedOpen;
+
+ /**
+ * Per-instance key so multiple elements on the same page never share a timer.
+ * @type {string}
+ */
+ #debounceId = `l5r5e-dropdown-${foundry.utils.randomID()}`;
+
+ /**
+ * The search input element. The host should assign this to `this._primaryInput`.
+ * @return {HTMLInputElement}
+ */
+ get _dropdownInput() {
+ return this.#searchInput;
+ }
+
+ /**
+ * Build the search `` + `
` dropdown inside a positioned wrapper div.
+ * Include the returned element in the array returned from `_buildElements()`.
+ *
+ * @param {object} [opts]
+ * @param {string} [opts.placeholder=""]
+ * @return {HTMLDivElement}
+ */
+ _buildDropdownElements({ placeholder = "" } = {}) {
+ const wrapper = document.createElement("div");
+ wrapper.classList.add("wrapper");
+
+ this.#searchInput = document.createElement("input");
+ this.#searchInput.type = "text";
+ this.#searchInput.classList.add("input");
+ this.#searchInput.setAttribute("autocomplete", "off");
+ this.#searchInput.setAttribute("role", "combobox");
+ this.#searchInput.setAttribute("aria-autocomplete", "list");
+ this.#searchInput.setAttribute("aria-expanded", "false");
+ this.#searchInput.setAttribute("aria-haspopup", "listbox");
+ if (placeholder) {
+ this.#searchInput.setAttribute("placeholder", placeholder);
+ }
+
+ this.#list = document.createElement("ul");
+ this.#list.classList.add("dropdown");
+ this.#list.setAttribute("role", "listbox");
+ if (multiSelect) {
+ this.#list.setAttribute("aria-multiselectable", "true");
+ }
+ this.#list.hidden = true;
+
+ this.#syncOffset();
+ wrapper.append(this.#searchInput, this.#list);
+ return wrapper;
+ }
+
+ /** Attach dropdown event listeners. Call inside `_activateListeners()`. */
+ _activateDropdownListeners() {
+ const signal = this.abortSignal;
+
+ this.#debouncedOpen = game.l5r5e.HelpersL5r5e.debounce(
+ this.#debounceId,
+ (query) => this.#openDropdown(query),
+ debounceMs,
+ false // trailing — fires after the user pauses
+ );
+
+ this.#searchInput.addEventListener("mousedown", this.#onMouseDown.bind(this), { signal });
+ this.#searchInput.addEventListener("focus", this.#onFocus.bind(this), { signal });
+ this.#searchInput.addEventListener("input", this.#onInput.bind(this), { signal });
+ this.#searchInput.addEventListener("keydown", this.#onKeydown.bind(this), { signal });
+ this.#searchInput.addEventListener("blur", this.#onBlur.bind(this), { signal });
+ }
+
+ /**
+ * Enable or disable the search input. Call inside `_toggleDisabled()`.
+ * @param {boolean} disabled
+ */
+ _toggleDropdownDisabled(disabled) {
+ if (this.#searchInput) {
+ this.#searchInput.disabled = disabled;
+ }
+ }
+
+ /* --------------------------------------------------------- */
+ /* Refresh */
+ /* --------------------------------------------------------- */
+
+ /**
+ * Re-render the open dropdown in place so checkmarks and disabled states
+ * stay in sync with the current value. Call inside `_refresh()`.
+ */
+ _dropdownRefresh() {
+ if (this.#open) {
+ this.#renderOptions(this.#filter(this.#searchInput?.value ?? ""));
+ }
+ }
+
+ /**
+ * @abstract
+ * @return {{ value: string, label: string, group: string|null, disabled?: boolean, tooltip?: string }[]}
+ */
+ _getDropdownOptions() {
+ throw new Error(`${this.constructor.name} must implement _getDropdownOptions()`);
+ }
+
+ /**
+ * @abstract
+ * @param {string} value
+ * @return {boolean}
+ */
+ _isOptionSelected(value) {
+ throw new Error(`${this.constructor.name} must implement _isOptionSelected()`);
+ }
+
+ /**
+ * @abstract
+ * @param {{ value: string, label: string }} option
+ */
+ _onDropdownPick(option) {
+ throw new Error(`${this.constructor.name} must implement _onDropdownPick()`);
+ }
+
+ /**
+ * Case-insensitive label filter over `_getDropdownOptions()`.
+ * Returns all options when query is empty.
+ * @param {string} query
+ * @return {object[]}
+ */
+ #filter(query) {
+ const all = this._getDropdownOptions();
+ if (!query) {
+ return all;
+ }
+ const lower = query.toLowerCase();
+ return all.filter(option => option.label.toLowerCase().includes(lower));
+ }
+
+ #openDropdown(query = "") {
+ this.#renderOptions(this.#filter(query));
+ this.#list.hidden = false;
+ this.#searchInput.setAttribute("aria-expanded", "true");
+ this.#open = true;
+ this.#activeIndex = -1;
+ this._onDropdownOpened();
+ }
+
+ /**
+ * Called when the dropdown opens. Override in host classes to snapshot
+ * the current value so _onDropdownClosed can compare against it.
+ * Default is a no-op.
+ * @protected
+ */
+ _onDropdownOpened() {}
+
+ #closeDropdown() {
+ this.#list.hidden = true;
+ this.#searchInput.setAttribute("aria-expanded", "false");
+ this.#open = false;
+ this.#wasOpenOnFocus = false;
+ this.#activeIndex = -1;
+ this.#optionElements = [];
+ // In combo-box mode the input IS the value, so we leave it intact.
+ // In multi-select mode the search text is transient and should reset.
+ if (clearOnClose && this.#searchInput) {
+ this.#searchInput.value = "";
+ }
+ // Notify the host that the dropdown has closed. Hosts can override this
+ // to fire a single change event after a multi-pick session.
+ this._onDropdownClosed();
+ }
+
+ /**
+ * Called when the dropdown closes. Override in host classes to fire a
+ * consolidated change event after a multi-pick session.
+ * Default is a no-op.
+ * @protected
+ */
+ _onDropdownClosed() {}
+
+ #renderOptions(options) {
+ this.#list.innerHTML = "";
+ this.#optionElements = [];
+
+ // hideDisabledOptions is a host-level attribute, read via the DOM.
+ const visible = this.hasAttribute("hidedisabledoptions")
+ ? options.filter(o => !o.disabled)
+ : options;
+
+ if (!visible.length) {
+ const empty = document.createElement("li");
+ empty.classList.add("no-results");
+ empty.textContent = game.i18n.localize("l5r5e.multiselect.no_results") ?? "No matches";
+ empty.setAttribute("aria-disabled", "true");
+ this.#list.append(empty);
+ return;
+ }
+
+ // Bucket into groups, preserving insertion order.
+ const groups = new Map();
+ const ungrouped = [];
+ for (const option of visible) {
+ if (option.group) {
+ if (!groups.has(option.group)) groups.set(option.group, []);
+ groups.get(option.group).push(option);
+ } else {
+ ungrouped.push(option);
+ }
+ }
+
+ for (const [label, options] of groups) {
+ const header = document.createElement("li");
+ header.classList.add("group");
+ header.setAttribute("role", "presentation");
+ header.textContent = label;
+ this.#list.append(header);
+ for (const option of options) {
+ this.#list.append(this.#buildOptionEl(option));
+ }
+ }
+ for (const option of ungrouped){
+ this.#list.append(this.#buildOptionEl(option));
+ }
+ }
+
+ #buildOptionEl(option) {
+ const selected = this._isOptionSelected(option.value);
+ const disabled = !!option.disabled;
+
+ const li = document.createElement("li");
+ li.classList.add("option");
+ if (selected) {
+ li.classList.add("selected");
+ }
+ if (disabled) {
+ li.classList.add("disabled");
+ }
+ li.setAttribute("role", "option");
+ li.setAttribute("aria-selected", String(selected));
+ li.setAttribute("aria-disabled", String(disabled));
+ li.dataset.value = option.value;
+
+ if (multiSelect) {
+ const check = document.createElement("span");
+ check.classList.add("checkmark");
+ check.setAttribute("aria-hidden", "true");
+ li.append(check);
+ }
+
+ const labelEl = document.createElement("span");
+ labelEl.classList.add("label");
+ labelEl.textContent = option.label;
+ li.append(labelEl);
+
+ if (selected && multiSelect) {
+ li.title = game.i18n.localize("l5r5e.multiselect.already_in_filter");
+ } else if (disabled && option.tooltip) {
+ li.title = option.tooltip;
+ }
+
+ if (!disabled) {
+ li.addEventListener("mouseenter", () => {
+ for (const element of this.#optionElements) {
+ element.classList.remove("active");
+ }
+ this.#activeIndex = this.#optionElements.indexOf(li);
+ li.classList.add("active");
+ });
+ li.addEventListener("mouseleave", () => {
+ li.classList.remove("active");
+ this.#activeIndex = -1;
+ });
+ li.addEventListener("mousedown", (event) => {
+ event.preventDefault(); // keep focus on the search input
+ this.#pick(option);
+ });
+ }
+
+ this.#optionElements.push(li);
+ return li;
+ }
+
+ #pick(option) {
+ this._onDropdownPick(option);
+ if (multiSelect) {
+ // Stay open — re-render so checkmarks reflect the new state.
+ this.#renderOptions(this.#filter(this.#searchInput.value));
+ } else {
+ this.#closeDropdown();
+ }
+ }
+
+ #moveHighlight(direction) {
+ if (!this.#optionElements.length) {
+ return;
+ }
+ const prev = this.#optionElements[this.#activeIndex];
+ if (prev) {
+ prev.classList.remove("active");
+ }
+
+ this.#activeIndex = Math.max(
+ -1,
+ Math.min(this.#optionElements.length - 1, this.#activeIndex + direction)
+ );
+
+ const next = this.#optionElements[this.#activeIndex];
+ if (next) {
+ next.classList.add("active");
+ next.scrollIntoView({ block: "nearest" });
+ }
+ }
+
+ #syncOffset() {
+ if (!this.#searchInput || !this.#list) {
+ return;
+ }
+ const offset = this.#searchInput.offsetLeft;
+ this.#list.style.left = `${offset}px`;
+ this.#list.style.right = `-${offset}px`;
+ }
+
+ /**
+ * Handles click-to-toggle behaviour.
+ *
+ * Three cases:
+ * 1. Dropdown is open → close it. preventDefault stops blur firing, which
+ * would otherwise trigger a second close via #onBlur.
+ * 2. Dropdown is closed AND input is already focused → open immediately.
+ * In this case focus will NOT fire again (input never blurred after the
+ * previous preventDefault), so we must open here rather than in #onFocus.
+ * 3. Dropdown is closed AND input is not yet focused → do nothing; the
+ * browser will fire focus naturally and #onFocus will open the dropdown.
+ */
+ #onMouseDown(event) {
+ this.#wasOpenOnFocus = this.#open;
+ if (this.#open) {
+ event.preventDefault();
+ this.#closeDropdown();
+ } else if (document.activeElement === this.#searchInput) {
+ // Case 2: already focused, focus won't re-fire — open directly.
+ this.#openDropdown(this.#searchInput.value);
+ }
+ }
+
+ #onFocus(event) {
+ // Only open if mousedown didn't already handle it (cases 1 & 2 above).
+ if (!this.#wasOpenOnFocus && document.activeElement === this.#searchInput) {
+ this.#openDropdown(this.#searchInput.value);
+ }
+ }
+
+ #onInput(event) {
+ this.#debouncedOpen(this.#searchInput.value);
+ }
+
+ /**
+ * Close the dropdown when focus genuinely leaves the component.
+ *
+ * event.relatedTarget is the element that is RECEIVING focus. If it is
+ * inside our host element (e.g. the clear button, a chip remove span that
+ * managed to steal focus) we leave the dropdown open. Only when focus moves
+ * completely outside do we close — and we do so synchronously, so that
+ * _onDropdownClosed fires its change event BEFORE the browser hands control
+ * to whatever the user clicked. This eliminates the 100 ms race where Foundry
+ * could read stale FormData between the blur and a deferred close.
+ */
+ #onBlur(event) {
+ if (this.contains(event.relatedTarget)) {
+ return;
+ }
+ this.#closeDropdown();
+ }
+
+ #onKeydown(event) {
+ if (!this.#open) {
+ if (event.key === "ArrowDown" || event.key === "ArrowUp") {
+ event.preventDefault();
+ this.#openDropdown(this.#searchInput.value);
+ }
+ return;
+ }
+ switch (event.key) {
+ case "ArrowDown": {
+ event.preventDefault();
+ this.#moveHighlight(1);
+ } break;
+ case "ArrowUp": {
+ event.preventDefault();
+ this.#moveHighlight(-1);
+ }break;
+ case "Enter": {
+ event.preventDefault();
+ if (this.#activeIndex >= 0) {
+ const li = this.#optionElements[this.#activeIndex];
+ const option = this._getDropdownOptions().find(option => option.value === li.dataset.value);
+ if (option) {
+ this.#pick(option);
+ }
+ } else {
+ this.#closeDropdown();
+ }
+ } break;
+ case "Escape": {
+ event.preventDefault();
+ this.#closeDropdown();
+ } break;
+ case "Tab": {
+ this.#closeDropdown();
+ } break;
+ }
+ }
+ };
+}
\ No newline at end of file
diff --git a/system/scripts/misc/l5r5e-multiselect.js b/system/scripts/misc/l5r5e-multiselect.js
index a126b47..dcb1c32 100644
--- a/system/scripts/misc/l5r5e-multiselect.js
+++ b/system/scripts/misc/l5r5e-multiselect.js
@@ -1,301 +1,424 @@
+import { DropdownMixin } from "./l5r5e-dropdown-mixin.js";
+
const { AbstractMultiSelectElement } = foundry.applications.elements;
/**
- * Provide a multi-select workflow using a select element as the input mechanism.
- * It is a expanded copy of the HTMLMultiselect with support for disabling options
- * and a clear all button. Also have support for hover-over information using titlea
+ * A custom `` form element providing Select2-style chip multi-selection.
*
- * @example Multi-Select HTML Markup
- * ```html
- *
- *
- *
+ * Stores **multiple string values** from a fixed option list, shown as removable chips inside
+ * the input box. A live-search input filters the dropdown as the user types. Use this when a
+ * field holds an unordered collection of values (e.g. a set of skills, tags, or abilities).
+ * For storing a single value — predefined or free-text — use {@link L5R5eHtmlComboBoxElement} instead.
+ *
+ * The element's `value` getter returns a comma-separated string (e.g. `"fire,water"`),
+ * which is what `FormData` will read on submission. `_getValue()` returns a plain Array,
+ * which is what `FormDataExtended` will use.
+ *
+ * Pre-selection on render is handled via the `value` attribute on the element — NOT via
+ * `{{selectOptions selected=...}}`, which cannot handle comma-separated strings. Use
+ * `{{selectOptions}}` without `selected` purely to render the available options, and let
+ * the `value` attribute drive pre-selection. Since `getAttribute()` always returns a string,
+ * passing a `Set` or `Array` via Handlebars will not work correctly — always pass a
+ * comma-separated string to `value=`.
+ *
+ * Prefer {@link L5r5eSetField} + `{{formGroup}}` when wiring this into a DataModel — the
+ * field handles the full round-trip automatically.
+ *
+ * @example
+ * ```hbs
+ * {{!-- Use value= (comma-separated string) for pre-selection, not selectOptions selected= --}}
+ *
+ * {{selectOptions choices localize=true}}
*
* ```
+ *
+ * @example
+ * // Static factory — use only when building outside of Foundry's field/template system:
+ * const el = L5r5eHtmlMultiSelectElement.create({
+ * name: "elements",
+ * options: [{ value: "fire", label: "Fire" }, { value: "water", label: "Water" }],
+ * value: "fire,water", // comma-separated pre-selection
+ * });
+ * form.appendChild(el);
+ *
+ * // Reading the value back:
+ * el.value; // "fire,water" — comma-separated string, compatible with FormData
+ * el._getValue(); // ["fire","water"] — array, compatible with FormDataExtended
*/
-export class L5r5eHtmlMultiSelectElement extends AbstractMultiSelectElement {
-
- constructor() {
- super();
- this.#setup();
- }
-
+export class L5r5eHtmlMultiSelectElement extends DropdownMixin(
+ AbstractMultiSelectElement,
+ { multiSelect: true, debounceMs: 150 }
+) {
/** @override */
static tagName = "l5r5e-multi-select";
- /**
- * A select element used to choose options.
- * @type {HTMLSelectElement}
- */
- #select;
+ /** @type {HTMLDivElement} — outer box containing chips, input, clear button */
+ #selectionBox;
+
+ /** @type {HTMLDivElement} — chips are injected here */
+ #chipList;
+
+ /** @type {HTMLSpanElement} — auto-sizing wrapper around the search input */
+ #inputSizer;
+
+ /** @type {HTMLButtonElement} — trailing clear-all button */
+ #clearButton;
+
+ /** @type {Set} */
+ #disabledValues = new Set();
+
+ /** @type {Map} */
+ #tooltips = new Map();
+
/**
- * A display element which lists the chosen options.
- * @type {HTMLDivElement}
+ * Returns a comma-separated string
+ * FormData reads this via field.value.
+ * @override
*/
- #tags;
+ get value() {
+ return Array.from(this._value).join(",");
+ }
+
+ /** @override */
+ set value(val) {
+ this._value.clear();
+ const values = Array.isArray(val) ? val : String(val).split(",").filter(Boolean);
+ for (const v of values) {
+ this._value.add(v);
+ }
+ this._internals.setFormValue(this.value);
+ this._refresh();
+ }
/**
- * A button element which clear all the options.
- * @type {HTMLButtonElement}
+ * Return an array so FormDataExtended.object[name] matches Foundry's own
+ * HTMLMultiSelectElement — both field.value (string) and .object (array) are correct.
+ * @override
+ * @protected
*/
- #clearAll;
+ _getValue() {
+ return Array.from(this._value);
+ }
/**
- * A Set containing the values that should always be disabled.
- * @type {Set}
+ * Accept either an array or comma-separated string when Foundry calls _setValue().
+ * @override
+ * @protected
*/
- #disabledValues;
-
- /* -------------------------------------------- */
-
- // We will call initialize twice (one in the parent constructor) then one in #setup
- // required since when we want to build the elements we should to an initialize first
- // and we cannot override _initialize since we don't have access to #disabledValues there
- #setup() {
- super._initialize();
- this.#disabledValues = new Set();
- for (const option of this.querySelectorAll("option")) {
- if (option.value === "") {
- option.label = game.i18n.localize("l5r5e.multiselect.empty_tag");
- this._choices[option.value] = game.i18n.localize("l5r5e.multiselect.empty_tag");
- }
- if (option.disabled) {
- this.#disabledValues.add(option.value);
- }
+ _setValue(val) {
+ const values = Array.isArray(val) ? val : String(val).split(",").filter(Boolean);
+ if (values.some(v => v && !(v in this._choices))) {
+ throw new Error("The values assigned to a multi-select element must all be valid options.");
+ }
+ this._value.clear();
+ for (const v of values) {
+ this._value.add(v);
}
}
+ /** @override */
+ _initialize() {
+ super._initialize(); // fills this._choices, this._value, this._options
+ for (const option of this.querySelectorAll("option")) {
+ if (option.disabled)
+ this.#disabledValues.add(option.value);
+ if (option.title)
+ this.#tooltips.set(option.value, option.title);
+ }
+ if (this.hasAttribute("value")) {
+ this._setValue(this.getAttribute("value"));
+ }
+ }
+
+ /* -------------------------------------------- */
+ /* Element Lifecycle */
+ /* -------------------------------------------- */
+
/** @override */
_buildElements() {
- this.#setup();
-
- // Create select element
- this.#select = this._primaryInput = document.createElement("select");
- this.#select.insertAdjacentHTML("afterbegin", ``);
- this.#select.append(...this._options);
- this.#select.disabled = !this.editable;
-
- // Create a div element for display
- this.#tags = document.createElement("div");
- this.#tags.className = "tags input-element-tags";
-
- // Create a clear all button
- this.#clearAll = document.createElement("button");
- this.#clearAll.textContent = "X";
- return [this.#select, this.#clearAll, this.#tags];
- }
-
- /* -------------------------------------------- */
-
- /** @override */
- _refresh() {
- // Update the displayed tags
- const tags = Array.from(this._value).map(id => {
- return foundry.applications.elements.HTMLStringTagsElement.renderTag(id, this._choices[id], this.editable);
+ // Ask mixin to build + , then re-home them into our structure.
+ const mixinWrapper = this._buildDropdownElements({
+ placeholder: this.getAttribute("placeholder")
+ ?? game.i18n.localize("l5r5e.multiselect.placeholder"),
});
- this.#tags.replaceChildren(...tags);
+ const searchInput = mixinWrapper.querySelector("input.input");
+ const dropdownList = mixinWrapper.querySelector("ul.dropdown");
- // Figure out if we are overflowing the tag div.
- if($(this.#tags).css("max-height")) {
- const numericMaxHeight = parseInt($(this.#tags).css("max-height"), 10);
- if(numericMaxHeight) {
- if($(this.#tags).prop("scrollHeight") > numericMaxHeight) {
- this.#tags.classList.add("overflowing");
- }
- else {
- this.#tags.classList.remove("overflowing");
- }
- }
- }
+ // Selection box
+ this.#selectionBox = document.createElement("div");
+ this.#selectionBox.classList.add("selection-box");
- // Disable selected options
- const hideDisabled = game.settings.get(CONFIG.l5r5e.namespace, "compendium-hide-disabled-sources");
- for (const option of this.#select) {
- if (this._value.has(option.value)) {
- option.disabled = true;
- option.title = game.i18n.localize("l5r5e.multiselect.already_in_filter");
- continue;
- }
- if (this.#disabledValues.has(option.value)) {
- option.disabled = true;
- option.hidden = hideDisabled;
- continue;
- }
- option.disabled = false;
- option.removeAttribute("title");
- }
+ // Chip list
+ this.#chipList = document.createElement("div");
+ this.#chipList.classList.add("chip-list");
+
+ // Auto-sizing sizer — CSS grid trick: ::after mirrors data-value, input shares the cell
+ this.#inputSizer = document.createElement("span");
+ this.#inputSizer.classList.add("input-sizer");
+ this.#inputSizer.dataset.value = "";
+ this.#inputSizer.append(searchInput);
+
+ // Clear-all button
+ this.#clearButton = document.createElement("button");
+ this.#clearButton.type = "button";
+ this.#clearButton.classList.add("clear-btn");
+ this.#clearButton.setAttribute("aria-label",
+ game.i18n.localize("l5r5e.multiselect.clear_all") ?? "Clear all");
+ this.#clearButton.textContent = "×";
+ this.#clearButton.hidden = true;
+
+ this.#selectionBox.append(this.#chipList, this.#inputSizer, this.#clearButton);
+
+ // Container: selection box + dropdown must share the same positioned ancestor.
+ const container = document.createElement("div");
+ container.classList.add("multi-select-container");
+ container.append(this.#selectionBox, dropdownList);
+
+ this._primaryInput = searchInput;
+ return [container];
}
- /* -------------------------------------------- */
-
/** @override */
_activateListeners() {
- this.#select.addEventListener("change", this.#onChangeSelect.bind(this));
- this.#clearAll.addEventListener("click", this.#onClickClearAll.bind(this));
- this.#tags.addEventListener("click", this.#onClickTag.bind(this));
+ this._activateDropdownListeners();
+ const signal = this.abortSignal;
- this.#tags.addEventListener("mouseleave", this.#onMouseLeave.bind(this));
+ this.#selectionBox.addEventListener("mousedown", this.#onBoxMouseDown.bind(this), { signal });
+ this.#chipList.addEventListener("click", this.#onChipClick.bind(this), { signal });
+ this.#clearButton.addEventListener("click", this.#onClearAll.bind(this), { signal });
+ // stop the clear button from opening the selection box when pressing it
+ this.#clearButton.addEventListener("mousedown", (event) => {event.preventDefault(); event.stopPropagation();}, {signal});
+ this._dropdownInput.addEventListener("input", () => this.#updateInputSizer(), { signal });
}
- #onMouseLeave(event) {
- // Figure out if we are overflowing the tag div.
- if($(this.#tags).css("max-height")) {
- const numericMaxHeight = parseInt($(this.#tags).css("max-height"), 10);
-
- if($(this.#tags).prop("scrollHeight") > numericMaxHeight) {
- this.#tags.classList.add("overflowing");
- }
- else {
- this.#tags.classList.remove("overflowing");
- }
- }
- }
-
- /* -------------------------------------------- */
-
- /**
- * Handle changes to the Select input, marking the selected option as a chosen value.
- * @param {Event} event The change event on the select element
- */
- #onChangeSelect(event) {
- event.preventDefault();
- event.stopImmediatePropagation();
- const select = event.currentTarget;
- if (select.valueIndex === 0)
- return; // Ignore placeholder
- this.select(select.value);
- select.value = "";
- }
-
- /* -------------------------------------------- */
-
- /**
- * Handle click events on a tagged value, removing it from the chosen set.
- * @param {PointerEvent} event The originating click event on a chosen tag
- */
- #onClickTag(event) {
- event.preventDefault();
- if (!event.target.classList.contains("remove"))
- return;
- if (!this.editable)
- return;
- const tag = event.target.closest(".tag");
- this.unselect(tag.dataset.key);
- }
-
- /* -------------------------------------------- */
-
- /**
- * Handle clickling the clear all button
- * @param {Event} event The originating click event on the clear all button
- */
- #onClickClearAll(event) {
- event.preventDefault();
- var _this = this;
- $(this.#tags).children().each(function () {
- _this.unselect($(this).data("key"));
- })
- }
-
- /* -------------------------------------------- */
/** @override */
_toggleDisabled(disabled) {
- this.#select.toggleAttribute("disabled", disabled);
+ this._toggleDropdownDisabled(disabled);
+
+ if (this.#selectionBox) {
+ this.#selectionBox.classList.toggle("disabled", disabled);
+ }
+
+ if (this.#chipList) {
+ this._refresh(); // re-render chips so × appears/disappears
+ }
+ }
+
+ /** @override */
+ _refresh() {
+ const values = Array.from(this._value);
+ this._internals.setFormValue(values.length ? values.join(",") : "");
+
+ this.#renderChips(values);
+
+ // Clear button: only visible when editable and something is selected.
+ if (this.#clearButton) {
+ this.#clearButton.hidden = (!this.editable || values.length === 0);
+ }
+
+ this.#updateInputSizer();
+ this._dropdownRefresh();
+ }
+
+ /** @param {string[]} values */
+ #renderChips(values) {
+ if (!this.#chipList){
+ return
+ }
+ this.#chipList.replaceChildren(...values.map(id => this.#buildChip(id)));
+ }
+
+ /** @param {string} id */
+ #buildChip(id) {
+ const chip = document.createElement("span");
+ chip.classList.add("chip");
+ chip.dataset.key = id;
+
+ const label = document.createElement("span");
+ label.classList.add("chip-label");
+ label.textContent = this._choices[id] ?? id;
+ chip.append(label);
+
+ // Only add × when the element is editable (not disabled, not readonly).
+ if (this.editable) {
+ const remove = document.createElement("span");
+ remove.classList.add("chip-remove");
+ remove.setAttribute("aria-label", `Remove ${this._choices[id] ?? id}`);
+ remove.setAttribute("aria-hidden", "true");
+ remove.textContent = "×";
+ chip.append(remove);
+ }
+ return chip;
+ }
+
+ /** Mirror typed text into the sizer span so CSS sizes the input correctly. */
+ #updateInputSizer() {
+ if (!this.#inputSizer || !this._dropdownInput)
+ return;
+
+ const input = this._dropdownInput;
+ const text = input.value || input.placeholder || "";
+ this.#inputSizer.dataset.value = text;
+ }
+
+ /** @override */
+ _getDropdownOptions() {
+ const makeOption = (option, group = null) => ({
+ value: option.value,
+ label: this._choices[option.value] ?? option.innerText,
+ group,
+ disabled: this.#disabledValues.has(option.value),
+ tooltip: this.#tooltips.get(option.value) ?? "",
+ });
+
+ return this._options.flatMap(child => {
+ if (child instanceof HTMLOptGroupElement) {
+ return [...child.querySelectorAll("option")]
+ .filter(option => option.value)
+ .map(option => makeOption(option, child.label));
+ }
+ if (child instanceof HTMLOptionElement && child.value) {
+ return makeOption(child);
+ }
+ return [];
+ });
+ }
+
+ /** @override */
+ _isOptionSelected(value) {
+ return this._value.has(value);
+ }
+
+ /** @override */
+ _onDropdownPick(option) {
+ const inValue = this._value.has(option.value);
+ const inChoices = option.value in this._choices;
+ if(!(inValue || inChoices))
+ return;
+
+ if (inValue) {
+ this._value.delete(option.value);
+ }
+ else if(inChoices) {
+ this._value.add(option.value);
+ }
+
+ this._internals.setFormValue(this.value);
+ this._refresh();
+ this.dispatchEvent(new Event("change", { bubbles: true, cancelable: true }));
+ }
+
+ #onBoxMouseDown(event) {
+ // Fully block interaction when not editable.
+ if (!this.editable) {
+ event.preventDefault();
+ return;
+ }
+ if (event.target.classList.contains("chip-remove"))
+ return;
+ if (event.target === this._dropdownInput)
+ return;
+
+ event.preventDefault();
+ this._dropdownInput?.focus();
+ }
+
+ #onChipClick(event) {
+ if (!event.target.classList.contains("chip-remove") || !this.editable)
+ return;
+
+ const chip = event.target.closest(".chip");
+ if (!chip)
+ return;
+
+ this._value.delete(chip.dataset.key);
+ this._internals.setFormValue(this.value);
+ this._refresh();
+ this.dispatchEvent(new Event("change", { bubbles: true, cancelable: true }));
+ this._dropdownInput?.focus();
+ }
+
+ #onClearAll(event) {
+ event.preventDefault();
+ if (!this.editable)
+ return;
+
+ this._value.clear();
+ this._internals.setFormValue("");
+ this._refresh();
+ this.dispatchEvent(new Event("change", { bubbles: true, cancelable: true }));
}
+ /* -------------------------------------------- */
+ /* Static Factory */
/* -------------------------------------------- */
- /**
- * Create a HTML_l5r5e_MultiSelectElement using provided configuration data.
- * @param {FormInputConfig & Omit} config
- * @returns {L5r5eHtmlMultiSelectElement}
- */
static create(config) {
- // Foundry creates either a select with tag multi-select or multi-checkboxes. We want a l5r5e-multi-select
- // Copied the implementation from foundry.applications.fields.createMultiSelectInput with our required changes.
const groups = prepareSelectOptionGroups(config);
+ const element = document.createElement(L5r5eHtmlMultiSelectElement.tagName);
+ element.name = config.name;
+ foundry.applications.fields.setInputAttributes(element, config);
+ if (config.hideDisabledOptions) {
+ element.toggleAttribute("hidedisabledoptions", true);
+ }
- //Setup the HTML
- const select = document.createElement(L5r5eHtmlMultiSelectElement.tagName);
- select.name = config.name;
- foundry.applications.fields.setInputAttributes(select, config);
- for (const group_entry of groups) {
- let parent = select;
- if (group_entry.group) {
- parent = _appendOptgroupHtml(group_entry.group, select);
+ for (const groupEntry of groups) {
+ let parent = element;
+ if (groupEntry.group) {
+ parent = _appendOptgroup(groupEntry.group, element);
}
- for (const option_entry of group_entry.options) {
- _appendOptionHtml(option_entry, parent);
+ for (const groupOption of groupEntry.options){
+ _appendOption(groupOption, parent);
}
}
- return select;
+ return element;
}
}
-/** Stolen from foundry.applications.fields.prepareSelectOptionGroups: Needed to add support for tooltips
- *
- */
+/* -------------------------------------------- */
+/* Module Helpers */
+/* -------------------------------------------- */
+
function prepareSelectOptionGroups(config) {
const result = foundry.applications.fields.prepareSelectOptionGroups(config);
-
- // Disable options based on input
- config.options.filter((option) => option?.disabled || option?.tooltip).forEach((SpecialOption) => {
- result.forEach((group) => {
- group.options.forEach((option) => {
- if (SpecialOption.value === option.value) {
- option.disabled = SpecialOption.disabled;
- option.tooltip = SpecialOption?.tooltip;
+ config.options.filter(option => option?.disabled || option?.tooltip).forEach(special => {
+ result.forEach(group => {
+ group.options.forEach(groupOption => {
+ if (groupOption.value === special.value) {
+ groupOption.disabled = special.disabled;
+ groupOption.tooltip = special.tooltip;
}
- })
- })
- })
+ });
+ });
+ });
return result;
}
-/** Stolen from foundry.applications.fields
- * Create and append an optgroup element to a parent select.
- * @param {string} label
- * @param {HTMLSelectElement} parent
- * @returns {HTMLOptGroupElement}
- * @internal
- */
-function _appendOptgroupHtml(label, parent) {
- const optgroup = document.createElement("optgroup");
- optgroup.label = label;
- parent.appendChild(optgroup);
- return optgroup;
+function _appendOptgroup(label, parent) {
+ const element = document.createElement("optgroup");
+ element.label = label;
+ parent.appendChild(element);
+
+ return element;
}
-/** Stolen from foundry.applications.fields
- * Create and append an option element to a parent select or optgroup.
- * @param {FormSelectOption} option
- * @param {HTMLSelectElement|HTMLOptGroupElement} parent
- * @internal
- */
-function _appendOptionHtml(option, parent) {
+function _appendOption(option, parent) {
const { value, label, selected, disabled, rule, tooltip } = option;
- if ((value !== undefined) && (label !== undefined)) {
- const option_html = document.createElement("option");
- option_html.value = value;
- option_html.innerText = label;
+ if (value !== undefined && label !== undefined) {
+ const element = document.createElement("option");
+ element.value = value;
+ element.innerText = label;
if (selected) {
- option_html.toggleAttribute("selected", true);
+ element.toggleAttribute("selected", true);
}
if (disabled) {
- option_html.toggleAttribute("disabled", true);
+ element.toggleAttribute("disabled", true);
}
if (tooltip) {
- option_html.setAttribute("title", tooltip);
+ element.setAttribute("title", tooltip);
}
- parent.appendChild(option_html);
+ parent.appendChild(element);
}
if (rule) {
parent.insertAdjacentHTML("beforeend", "
");
diff --git a/system/styles/l5r5e.css b/system/styles/l5r5e.css
index 9f01650..099743d 100644
--- a/system/styles/l5r5e.css
+++ b/system/styles/l5r5e.css
@@ -1 +1 @@
-@layer system{body>*{scrollbar-width:thin}body:not(.background){background:url("../assets/imgs/bg-table.webp") no-repeat;background-size:cover}.toggle-hidden{display:none !important}.window-app .window-content{z-index:1;position:relative;background-size:cover;scrollbar-width:thin;padding:0}.window-app .window-content>form,.window-app .window-content>div{padding:.5rem}.window-app .window-content .compendium,.window-app .window-content .help-dialog{background-position:top;background-size:100%;background:url("../assets/ui/bgSidebar.webp") no-repeat;border:1px solid #c3a582;border-radius:0;color:#fff}.window-app .window-content .compendium ol,.window-app .window-content .help-dialog ol{padding-right:.25rem}.window-app .window-content .compendium ol li,.window-app .window-content .help-dialog ol li{border-bottom:1px solid rgba(255,255,255,.25)}.window-app .window-content .compendium .directory-header,.window-app .window-content .help-dialog .directory-header{padding:.25rem 0}.window-app .window-content .help-dialog{padding:.5rem 1.5rem}.window-app .window-content .help-dialog button{cursor:default;color:#fff;background:linear-gradient(rgb(95, 40, 65), rgb(65, 25, 40), rgb(95, 40, 65));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.5rem;border-image-outset:0px}.window-app .window-content .help-dialog button:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}.window-app .window-content .compendium .item{position:relative}.window-app .window-content .compendium .item i{float:right;line-height:1rem;text-align:right;font-size:.75rem;color:rgba(240,240,225,.75);font-style:italic;flex:0 0 auto;position:absolute;right:0;text-shadow:0 0 0 rgba(255,255,255,.1)}.window-app .window-content .compendium .item i:before{margin:0 .25rem 0 0;font-style:normal}.window-app.sheet .window-content,.window-app.npc .window-content,.window-app.advancement .window-content,.window-app.armor .window-content,.window-app.item .window-content,.window-app.peculiarity .window-content,.window-app.property .window-content,.window-app.technique .window-content,.window-app.weapon .window-content,.window-app.twenty-questions-dialog .window-content{overflow-y:scroll}.window-app .window-resizable-handle{z-index:2;background:#000}.window-app.twenty-questions-dialog .window-content{background:#fffae6 url("../assets/imgs/bg-scroll.webp") no-repeat;background-size:cover}#l5r5e-twenty-questions-dialog{min-height:800px;min-width:600px}input[type=text]:focus,input[type=number]:focus,input[type=password]:focus,input[type=date]:focus,input[type=time]:focus{box-shadow:0 0 6px red}.tabs .item.active{text-shadow:0 0 10px red}#controls .scene-control.active,#controls .control-tool.active,#controls .scene-control:hover,#controls .control-tool:hover{box-shadow:0 0 10px red}#sidebar #settings button,#sidebar .sidebar-tab .action-buttons button{height:2rem;line-height:initial}button:hover{box-shadow:0 0 10px red}button:focus{box-shadow:0 0 10px red}.item-list>li{padding:.25rem;border:1px solid rgba(0,0,0,.05);border-bottom:0 none}.item-list>li:nth-child(odd){background:rgba(186,187,177,.2)}.item-list>li:nth-child(even){background:rgba(186,187,177,.1)}.item-list>li:last-child{border-bottom:1px solid rgba(0,0,0,.05)}fieldset{flex:1;flex-wrap:wrap;display:flex;margin:0 .25rem;padding:.5rem;border:1px solid rgba(186,187,177,.5)}fieldset legend{color:#5a6e5a}fieldset .editor{height:100%}.editor,.editor-container{flex:1;height:100%}table{background:rgba(0,0,0,0);border:1px solid rgba(186,187,177,.5)}table thead{background:rgba(186,187,177,.5);color:#5a6e5a;text-shadow:none;border-bottom:rgba(186,187,177,.5)}table tr:nth-child(odd){background:rgba(186,187,177,.2)}table tr:nth-child(even){background:rgba(186,187,177,.1)}sub,sup{color:rgba(0,0,0,.5)}.sheet nav.sheet-tabs{font-size:.75rem}.editor-container ul,.item-description ul{margin:.5rem 0}.editor-container ul li,.item-description ul li{list-style-type:initial;margin:.5rem 0 .5rem 1.5rem;padding:0}.prepared-character{color:#699678}.prepared-adversary{color:#9b7350}.prepared-minion{color:#5f919b}.prepared-icon{font-weight:900;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;width:1.5rem}.prepared-icon-true:before{content:""}.prepared-icon-false:before{content:""}.prepared-icon-actor:before{content:""}a.compendium-link{background:#ddd;padding:1px 4px;border:1px solid #4b4a44;border-radius:2px;white-space:nowrap;word-break:break-all}#playlists .sound-control i.fas.fa-random,#playlists .sound-control i.far.fa-arrow-alt-circle-right,#playlists .sound-control i.fas.fa-compress-arrows-alt,#playlists .sound-control i.fas.fa-ban{color:#ff6400}#playlists .sound-control i.fas.fa-square{color:#d00}#playlists .sound-control i.fas.fa-play,#playlists .sound-control i.fas.fa-play-circle{color:#0d0}#playlists .sound-control i.fas.fa-pause,#playlists .sound-control i.fas.fa-backward,#playlists .sound-control i.fas.fa-forward{color:#0096ff}.window-draggable-handle{z-index:20 !important}#forien-quest-log .window-content,#forien-quest-log-form .window-content,.window-app.forien-quest-preview .window-content{overflow:initial}#OneJournalShell:first-child>.window-header,#OneJournalShell.maximized>.window-header{z-index:20}@font-face{font-family:"LogotypeL5r";src:url("../fonts/LogotypeL5r.ttf") format("truetype")}@font-face{font-family:"BrushtipTexe";src:url("../fonts/BrushtipTexe.ttf") format("truetype")}@font-face{font-family:"PatrickHand";src:url("../fonts/PatrickHand.ttf") format("truetype")}@font-face{font-family:"Caballar";src:url("../fonts/Caballar.ttf") format("truetype")}@font-face{font-family:"ArchitectsDaughter";src:url("../fonts/ArchitectsDaughter.ttf") format("truetype")}body{font:16px "PatrickHand",sans-serif;letter-spacing:.05rem}h1,h4{font-family:"BrushtipTexe",sans-serif}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1.25rem}i.i_strife,i.i_success,i.i_explosive,i.i_opportunity,i.i_earth,i.i_water,i.i_fire,i.i_air,i.i_void,i.i_kiho,i.i_maho,i.i_ninjitsu,i.i_prerequisite_exemption,i.i_rituals,i.i_shuji,i.i_invocations,i.i_kata,i.i_inversion,i.i_mantra,i.i_imperial,i.i_ronin,i.i_crab,i.i_crane,i.i_dragon,i.i_lion,i.i_mantis,i.i_phoenix,i.i_scorpion,i.i_tortoise,i.i_unicorn,i.i_bushi,i.i_courtier,i.i_shugenja,i.i_ring,i.i_skill{font-family:"LogotypeL5r",sans-serif;line-height:1rem;font-size:1.25rem;font-style:normal;font-weight:normal;vertical-align:middle;text-shadow:0 0 0 rgba(0,0,0,.5)}i.i_strife:before{content:"";color:#cd0000}i.i_success:before{content:"";color:#cd0000}i.i_explosive:before{content:"";color:#cd0000}i.i_opportunity:before{content:"";color:#cd0000}i.i_earth:before{content:"";color:#699678}i.i_air:before{content:"";color:#917896}i.i_water:before{content:"";color:#5f919b}i.i_fire:before{content:"";color:#9b7350}i.i_void:before{content:"";color:#4b4641}i.i_invocations:before{content:"";color:#ff6400}i.i_kata:before{content:"";color:red}i.i_kiho:before{content:"";color:#009632}i.i_maho:before{content:"";color:#c83200}i.i_ninjitsu:before{content:"";color:#343434}i.i_prerequisite_exemption:before{content:"";color:#343434}i.i_rituals:before{content:"";color:#0096ff}i.i_shuji:before{content:"";color:#00ff96}i.i_inversion:before{content:"";color:#4b4641}i.i_mantra:before{content:"";color:#fa0}i.i_crab:before{content:"";color:#82828c}i.i_crane:before{content:"";color:#789191}i.i_dragon:before{content:"";color:#55826e}i.i_lion:before{content:"";color:#a08c50}i.i_mantis:before{content:"";color:#2d551e}i.i_phoenix:before{content:"";color:#91784b}i.i_scorpion:before{content:"";color:#9b463c}i.i_tortoise:before{content:"";color:#b4c82d}i.i_unicorn:before{content:"";color:#785a87}i.i_imperial:before{content:"";color:#78ffb4}i.i_ronin:before{content:"";color:#612001}i.i_bushi:before{content:"";color:#a55a5a}i.i_courtier:before{content:"";color:#6982a5}i.i_shugenja:before{content:"";color:#5aa582}i.i_ring{content:"";background:rgba(0,0,0,0) url("../assets/dices/default/ring_blank.svg") no-repeat 0 center;background-size:1rem;display:inline-block;height:1rem;width:1rem}i.i_skill{content:"";background:rgba(0,0,0,0) url("../assets/dices/default/skill_blank.svg") no-repeat 0 0;background-size:1rem;display:inline-block;height:1rem;width:1rem}.compendium .item i{font-family:"PatrickHand",sans-serif}.compendium .item i:before{font-family:"LogotypeL5r",sans-serif}body,#navigation #scene-list .scene.view,#navigation #scene-list .scene.context,#navigation #nav-toggle,#navigation #scene-list .scene.nav-item,#controls .scene-control.active,#controls .control-tool.active,#controls .scene-control:hover,#controls .control-tool:hover,#client-settings .window-content form .form-group>label,#client-settings .window-content form .form-group select,#client-settings .form-group input,.app.window-app .form-group label,#sidebar .sidebar-tab #chat-controls div.roll-type-select select,#sidebar .sidebar-tab #chat-controls div.roll-type-select i.fas{cursor:url("../assets/cursors/normal.webp"),default !important}a,#logo,#hotbar .macro,#playlists-popout .global-volume::-webkit-slider-thumb,#sidebar #playlists .global-volume::-webkit-slider-thumb,#playlists-popout li.playlist:not(:first-of-type) li.sound .sound-volume::-webkit-slider-thumb,#sidebar #playlists li.playlist:not(:first-of-type) li.sound .sound-volume::-webkit-slider-thumb,#sidebar #settings button,.app.window-app.sheet.wfrp4e.actor.character-sheet .tab.main.active .main-row .movement.row-section .move-value .auto-calc-toggle,.app.window-app.sheet.wfrp4e.actor.npc-sheet .main-row .movement.row-section .move-value .auto-calc-toggle,.app.window-app.sheet.wfrp4e.actor.creature-sheet .main-row .movement.row-section .move-value .auto-calc-toggle,.app.window-app .form-group input[type=range]::-webkit-slider-thumb,.token-sheet .tab[data-tab=image] input[type=range]::-webkit-slider-thumb,#drawing-config .tab[data-tab=image] input[type=range]::-webkit-slider-thumb,.metacurrency-value,.overcast-button,.chargen-button,#controls .scene-control,#controls .control-tool,#effects-config .flex2::-webkit-slider-thumb,#client-settings section.content .submenu>button,#client-settings .window-content button label,form .form-group .form-fields button,.sidebar-tab .action-buttons button,.dialog .dialog-buttons button,.item-edit,.item-delete,.item-equip,.item-curriculum,.technique-edit,.technique-delete,.peculiarity-edit,.peculiarity-delete,.attribute-dtype,.equip-readied-control,form button,label{cursor:url("../assets/cursors/pointer.webp"),pointer !important}.draggable{cursor:url("../assets/cursors/drag.webp"),move !important}button{font-size:.75rem;cursor:url("../assets/cursors/pointer.webp"),pointer}.pointer{cursor:url("../assets/cursors/pointer.webp"),pointer}#game-details .system{overflow:auto;border-bottom:1px solid var(--color-border-light-highlight)}#game-details .system .system-title{white-space:break-spaces}.chat-message ul,.chat-message li{list-style:none;margin:unset;padding:unset}#logo{content:url("../assets/l5r-logo.webp");height:80px;width:88px;margin-left:.5rem;opacity:.8}#navigation{left:120px}#navigation #nav-toggle,#navigation #scene-list .scene.nav-item{cursor:default;color:#fff;background:linear-gradient(rgba(10, 0, 20, 0.75), rgba(0, 0, 10, 0.75), rgba(10, 0, 20, 0.75));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.25rem;border-image-outset:0px}#navigation #nav-toggle:hover,#navigation #scene-list .scene.nav-item:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}#navigation #scene-list .scene.nav-item.active{background:linear-gradient(rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75))}#navigation #scene-list .scene.nav-item.active:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}#navigation #scene-list .scene.view,#navigation #scene-list .scene.context{cursor:default;color:#fff;background:linear-gradient(rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.25rem;border-image-outset:0px;box-shadow:0 0 20px red}#navigation #scene-list .scene.view:hover,#navigation #scene-list .scene.context:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}#controls{top:100px}#controls ol .scene-control.active,#controls ol .control-tool.active,#controls ol .scene-control:hover,#controls ol .control-tool:hover{background:linear-gradient(rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.25rem;border-image-outset:0px;box-shadow:0 0 10px red}#controls ol .scene-control.active:hover,#controls ol .control-tool.active:hover,#controls ol .scene-control:hover:hover,#controls ol .control-tool:hover:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}#controls ol .scene-control,#controls ol .control-tool{color:#fff;background:linear-gradient(rgba(10, 0, 20, 0.75), rgba(0, 0, 10, 0.75), rgba(10, 0, 20, 0.75));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.25rem;border-image-outset:0px}#controls ol .scene-control:hover,#controls ol .control-tool:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}#playlists .playlist .playlist-header h4{font:.75rem "PatrickHand",sans-serif;text-transform:uppercase;text-align:right}#combat .combat-tracker-header .encounters h3,#combat-popout .combat-tracker-header .encounters h3{font-size:.85rem}#combat .combat-tracker-header .encounters ul,#combat-popout .combat-tracker-header .encounters ul{display:flex;color:rgba(255,255,255,.5)}#combat .combat-tracker-header .encounters ul.encounter,#combat-popout .combat-tracker-header .encounters ul.encounter{border-right:1px solid rgba(255,255,255,.25)}#combat .combat-tracker-header .encounters ul li,#combat-popout .combat-tracker-header .encounters ul li{cursor:url("../assets/cursors/pointer.webp"),pointer}#combat .combat-tracker-header .encounters .prepared,#combat-popout .combat-tracker-header .encounters .prepared{justify-content:space-evenly}#combat .combat-tracker-header .encounters .encounter,#combat-popout .combat-tracker-header .encounters .encounter{justify-content:space-between}#combat .combat-tracker-header .encounters .encounter i,#combat-popout .combat-tracker-header .encounters .encounter i{font-size:23px;vertical-align:middle}#combat .combat-tracker-header .encounters .encounter i:hover,#combat-popout .combat-tracker-header .encounters .encounter i:hover{text-shadow:0 0 8px red}#combat .combat-tracker-header .encounters .encounter .active,#combat-popout .combat-tracker-header .encounters .encounter .active{color:#c83200}#combat .combat-tracker-header .encounters .encounter .active:hover,#combat-popout .combat-tracker-header .encounters .encounter .active:hover{text-shadow:none}#combat .combat-tracker-header .encounters .encounter-icon,#combat-popout .combat-tracker-header .encounters .encounter-icon{font-weight:900;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}#combat .combat-tracker-header .encounters .encounter-icon-intrigue:before,#combat-popout .combat-tracker-header .encounters .encounter-icon-intrigue:before{content:""}#combat .combat-tracker-header .encounters .encounter-icon-duel:before,#combat-popout .combat-tracker-header .encounters .encounter-icon-duel:before{content:""}#combat .combat-tracker-header .encounters .encounter-icon-skirmish:before,#combat-popout .combat-tracker-header .encounters .encounter-icon-skirmish:before{content:""}#combat .combat-tracker-header .encounters .encounter-icon-mass_battle:before,#combat-popout .combat-tracker-header .encounters .encounter-icon-mass_battle:before{content:""}#pause img{content:url("../assets/icons/pause.svg")}.directory-item .ring-filter i.i_earth,.directory-item .ring-filter i.i_fire,.directory-item .ring-filter i.i_water,.directory-item .ring-filter i.i_air,.directory-item .ring-filter i.i_void{line-height:unset}.directory-item .ring-rarity-rank{flex:unset}.not-for-players{filter:brightness(0.5)}.compendium-header .ring-filter .selected{filter:drop-shadow(0px 0px 5px yellow)}.compendium-header .rank-filter .selected{filter:drop-shadow(0px 0px 5px yellow) drop-shadow(0px 0px 5px yellow) drop-shadow(0px 0px 5px yellow)}.compendium-header l5r5e-multi-select .input-element-tags{max-height:100px}.l5r5e-tooltip{cursor:url("../assets/cursors/pointer.webp"),pointer}.l5r5e-tooltip .l5r5e-tooltip-ct,.l5r5e-tooltip.l5r5e-tooltip-ct{visibility:hidden;min-height:-moz-fit-content;min-height:fit-content;width:600px;height:auto;max-height:100%;background:#3e3a30 url("../assets/imgs/bg-l5r.webp") no-repeat;color:#000;font-size:.8rem;text-align:left;border:0 none;border-radius:0;padding:.5rem .75rem;display:block;position:absolute;z-index:9999}.l5r5e-tooltip .l5r5e-tooltip-ct *,.l5r5e-tooltip.l5r5e-tooltip-ct *{color:#000}.l5r5e-tooltip .l5r5e-tooltip-ct section>ul,.l5r5e-tooltip.l5r5e-tooltip-ct section>ul{display:flex;flex-flow:row wrap;padding:.25rem 0 .25rem 1rem}.l5r5e-tooltip .l5r5e-tooltip-ct section>ul li,.l5r5e-tooltip.l5r5e-tooltip-ct section>ul li{flex:50%;padding:0;padding-right:1rem;margin:0;list-style-type:square}.l5r5e-tooltip .l5r5e-tooltip-ct:before,.l5r5e-tooltip.l5r5e-tooltip-ct:before{z-index:-2;content:"";position:absolute;height:calc(100% + .6rem);width:calc(100% - .65rem);border:1px solid #c3a582;border-radius:0;top:-0.35rem;left:.25rem;background:#3e3a30 url("../assets/imgs/bg-l5r.webp") no-repeat}.l5r5e-tooltip .l5r5e-tooltip-ct:after,.l5r5e-tooltip.l5r5e-tooltip-ct:after{z-index:-1;content:"";position:absolute;height:100%;width:100%;border:1px solid #c3a582;border-radius:0;top:-1px;left:-1px}.l5r5e-tooltip .l5r5e-tooltip-ct .goodvalue,.l5r5e-tooltip.l5r5e-tooltip-ct .goodvalue{color:#4e8c69}.l5r5e-tooltip .l5r5e-tooltip-ct .badvalue,.l5r5e-tooltip.l5r5e-tooltip-ct .badvalue{color:#ab2a00}.l5r5e-tooltip .l5r5e-tooltip-ct .reference,.l5r5e-tooltip.l5r5e-tooltip-ct .reference{display:flex}.l5r5e-tooltip .l5r5e-tooltip-ct .reference .page,.l5r5e-tooltip.l5r5e-tooltip-ct .reference .page{margin-left:1ch}.l5r5e-tooltip .card-header img{display:inline-block;background:rgba(0,0,0,0);border:0 none;width:20px;margin:0;padding:0}.l5r5e-chat-item{color:#000;font-size:.8rem}.l5r5e-chat-item *{color:#000}.l5r5e-chat-item h2{font-size:1.1rem}.l5r5e-chat-item section>ul{display:flex;flex-flow:row wrap;padding:.25rem 0 .25rem 1rem}.l5r5e-chat-item section>ul li{flex:100%;padding:1px !important;margin:0;border:0 none !important;list-style-type:square}.l5r5e-chat-item .card-header img{display:inline-block;background:rgba(0,0,0,0);border:0 none;width:20px;margin:0;padding:0}.l5r5e-chat-item .reference{display:flex;flex-wrap:nowrap}.l5r5e-chat-item .page{margin-left:1ch}#l5r5e-gm-monitor{min-height:170px;min-width:240px}#l5r5e-gm-monitor .window-content [data-application-part=hidden_tabs]{display:none}#l5r5e-gm-monitor .window-content table{margin:0;overflow:auto}#l5r5e-gm-monitor .window-content form{padding:0 .5rem}#l5r5e-gm-monitor .window-content thead tr>th{background:rgba(0,0,0,.9);color:rgba(207,207,207,.7803921569);position:sticky;z-index:2;top:0}#l5r5e-gm-monitor .window-content thead tr>th i.i_void:before{color:rgba(207,207,207,.8)}#l5r5e-gm-monitor .window-content th,#l5r5e-gm-monitor .window-content td{border:1px solid rgba(90,110,90,.3137254902);padding:.25em}#l5r5e-gm-monitor .window-content img{border:none;min-width:24px;min-height:24px;max-width:32px;max-height:32px}#l5r5e-gm-monitor .window-content .goodvalue{color:#4e8c69}#l5r5e-gm-monitor .window-content .badvalue{color:#ab2a00}#l5r5e-gm-monitor .window-draggable-handle{display:none}#l5r5e-gm-toolbox{display:flex;background:linear-gradient(rgba(10, 0, 20, 0.75), rgba(0, 0, 10, 0.75), rgba(10, 0, 20, 0.75));border:1px solid #c3a582;margin:.5rem}#l5r5e-gm-toolbox .window-header{border-bottom:1px solid #c3a582;background:none}#l5r5e-gm-toolbox .window-header .window-title{text-align:center}#l5r5e-gm-toolbox .window-header h1{letter-spacing:.25rem;line-height:2.25rem;color:rgba(255,255,255,.65);padding-top:1ch}#l5r5e-gm-toolbox .window-content{padding:0}#l5r5e-gm-toolbox .window-content .gm-tools-container{color:var(--color-text-primary);display:flex;font-size:2rem;line-height:2rem;min-height:2rem;margin:0;padding:0}#l5r5e-gm-toolbox .window-content .gm-tools-container li{flex:1;display:flex;margin:0;padding:0;border-right:1px solid #c3a582;cursor:url("../assets/cursors/pointer.webp"),pointer}#l5r5e-gm-toolbox .window-content .gm-tools-container li:last-child{margin:0;border:0 none}#l5r5e-gm-toolbox .window-content .gm-tools-container li :hover{text-shadow:0 0 red}#l5r5e-gm-toolbox .window-content .gm-tools-container .difficulty_hidden .fa{width:3rem}#l5r5e-gm-toolbox .window-content .gm-tools-container .difficulty_hidden .difficulty{flex:1rem;width:2rem;font-size:2rem;text-align:center;margin:0;padding:.5rem}#l5r5e-gm-toolbox .window-content .gm-tools-container .fa{padding:.5rem}#l5r5e-gm-toolbox .window-content .gm-tools-container .fa-bed,#l5r5e-gm-toolbox .window-content .gm-tools-container .fa-star-half-alt,#l5r5e-gm-toolbox .window-content .gm-tools-container .fa-table,#l5r5e-gm-toolbox .window-content .gm-tools-container .fa-podcast{width:100%;padding:.5rem}#l5r5e-gm-toolbox .window-draggable-handle{display:none}l5r5e-multi-select{display:grid;grid-template-columns:minmax(auto, 1fr)}l5r5e-multi-select select{justify-self:center;width:100%;height:100%;-moz-text-align-last:center;text-align-last:center}l5r5e-multi-select .input-element-tags{grid-column-start:1;grid-column-end:span 3;max-height:-moz-fit-content;max-height:fit-content;overflow:hidden}l5r5e-multi-select .input-element-tags.overflowing{-webkit-mask-image:linear-gradient(to bottom, rgb(0, 0, 0) 80%, rgba(0, 0, 0, 0) 100%);mask-image:linear-gradient(to bottom, rgb(0, 0, 0) 80%, rgba(0, 0, 0, 0) 100%);transition:height .3s ease,-webkit-mask-image .3s ease;transition:height .3s ease,mask-image .3s ease;transition:height .3s ease,mask-image .3s ease,-webkit-mask-image .3s ease}l5r5e-multi-select .input-element-tags.overflowing:hover{max-height:-moz-fit-content;max-height:fit-content;-webkit-mask-image:none;mask-image:none}l5r5e-multi-select select{grid-row:1}l5r5e-multi-select button{grid-row:1;line-height:1}l5r5e-multi-select:has(>button.gm) .input-element-tags{grid-column-end:span 4}form#settings-config div.form-group:has(l5r5e-multi-select) .form-fields{order:3}form#settings-config div.form-group:has(#settings-config-l5r5e\.compendium-unofficial-content-for-players) .form-fields{order:3}form#settings-config div.form-group:has(#settings-config-l5r5e\.compendium-unofficial-content-for-players) .form-fields .tags{order:1}.autocomplete-wrapper{position:relative}.autocomplete-wrapper .autocomplete-list{position:absolute;border:1px solid #6e7e6b;border-bottom:none;border-top:none;z-index:99;top:100%;left:0;right:0}.autocomplete-wrapper .autocomplete-list div{padding:10px;cursor:pointer;background-color:#fff;border-bottom:1px solid #6e7e6b;text-align:left}.autocomplete-wrapper .autocomplete-list div:hover{background-color:#e9e9e9}.autocomplete-wrapper .autocomplete-active{background-color:#1e90ff !important;color:#fff}.application{color:var(--color-text-dark-primary)}.application .scrollable{--scroll-margin: 0}.application .window-header{background:linear-gradient(rgba(10, 0, 20, 0.75), rgba(0, 0, 10, 0.75), rgba(10, 0, 20, 0.75))}.application .window-header .window-title{font-family:"BrushtipTexe",sans-serif;font-size:1.25rem}.application .window-content{padding:.25rem}.application .window-content table{background:rgba(0,0,0,0);border:1px solid rgba(186,187,177,.5)}.application .window-content table thead{background:rgba(186,187,177,.5);color:#5a6e5a;text-shadow:none;border-bottom:rgba(186,187,177,.5)}.application .window-content table tr:nth-child(odd){background:rgba(186,187,177,.2)}.application .window-content table tr:nth-child(even){background:rgba(186,187,177,.1)}#sidebar-tabs button.l5r5e{position:relative;display:flex;justify-content:center;align-items:center}#sidebar-tabs button.l5r5e.chatIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/chat.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/chat.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.combatIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/combat-tracker.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/combat-tracker.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.sceneIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/scenes.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/scenes.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.actorIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/actors.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/actors.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.itemIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/object.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/object.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.journalIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/journal.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/journal.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.rolltableIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/rolltable.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/rolltable.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.playlistIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/playlist.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/playlist.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.compendiumIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/compendium.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/compendium.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.settingsIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/settings.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/settings.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.icon-plus::after{z-index:2}#sidebar-content .create-button.l5r5e{position:relative;display:flex;justify-content:center;align-items:center;filter:drop-shadow(0 0 3px var(--color-dark-1))}#sidebar-content .create-button.l5r5e.chatIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/chat.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/chat.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.combatIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/combat-tracker.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/combat-tracker.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.sceneIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/scenes.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/scenes.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.actorIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/actors.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/actors.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.itemIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/object.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/object.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.journalIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/journal.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/journal.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.rolltableIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/rolltable.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/rolltable.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.playlistIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/playlist.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/playlist.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.compendiumIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/compendium.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/compendium.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.settingsIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/settings.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/settings.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.icon-plus::after{z-index:2}#sidebar-content i.l5r5e{position:relative;display:flex;justify-content:center;align-items:center;width:2em;height:2em;color:currentColor}#sidebar-content i.l5r5e.chatIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/chat.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/chat.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.combatIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/combat-tracker.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/combat-tracker.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.sceneIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/scenes.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/scenes.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.actorIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/actors.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/actors.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.itemIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/object.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/object.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.journalIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/journal.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/journal.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.rolltableIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/rolltable.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/rolltable.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.playlistIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/playlist.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/playlist.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.compendiumIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/compendium.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/compendium.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.settingsIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/settings.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/settings.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.icon-plus::after{z-index:2}#sidebar-tabs>menu{gap:4px}#sidebar-content.expanded{background:url("../assets/ui/bgSidebar.webp") no-repeat;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-style:solid;border-image-width:.5rem;border-image-outset:0px;margin-top:2px;margin-right:2px;height:calc(100% - 10px)}#sidebar-content.expanded .sidebar-tab,#sidebar-content.expanded .tab{margin:3px;border-radius:5px}#sidebar-content.expanded #chat{margin:unset;padding-right:4px}#sidebar-content.expanded #chat .chat-scroll{direction:unset;scrollbar-color:var(--color-light-4) var(--color-dark-3);scrollbar-width:thin}#hotbar #action-bar .slot{-o-border-image:url("../assets/ui/macro-button.webp");border-image:url("../assets/ui/macro-button.webp");border-image-slice:8 fill;border-image-width:.25rem}#menu.active{transition:max-height 150ms ease-in}#menu{transition:max-height 10ms ease-out}.l5r5e .dice-picker{cursor:url("../assets/cursors/pointer.webp"),pointer}.l5r5e .dice-picker-dialog{width:35rem;min-height:auto}.l5r5e .dice-picker-dialog .effects{clear:both;display:flex;flex-wrap:wrap;justify-content:center;gap:2px 4px}.l5r5e .dice-picker-dialog .effects .effect-container{border:1px solid #5a6e5a;border-radius:4px;background-color:rgba(0,0,0,.4);padding:3px;display:flex}.l5r5e .dice-picker-dialog .effects .effect-delete{width:16px;height:16px;background-repeat:no-repeat;background-size:contain;text-align:end;cursor:url("../assets/cursors/pointer.webp"),pointer}.l5r5e .dice-picker-dialog .effects .effect-icon{width:16px;height:16px;background-repeat:no-repeat;background-size:contain}.l5r5e .dice-picker-dialog .effects .effect-name{vertical-align:top;white-space:nowrap;color:#fff;margin-left:4px;font-size:14px;line-height:16px}.l5r5e .dice-picker-dialog *{transition:none}.l5r5e .dice-picker-dialog input[type=text]:focus,.l5r5e .dice-picker-dialog input[type=text]:hover{box-shadow:none !important;border:none !important;text-shadow:none !important}.l5r5e .dice-picker-dialog select{text-align:center;width:134px;direction:rtl;-webkit-appearance:none;-moz-appearance:none;appearance:none}.l5r5e .dice-picker-dialog option{font-size:.8rem}.l5r5e .dice-picker-dialog img{border:0}.l5r5e .dice-picker-dialog table{text-align:center;background:none;border:none;border:0 none;margin:0;padding:0}.l5r5e .dice-picker-dialog table tbody tr td{width:250px;padding:0 .5rem}.l5r5e .dice-picker-dialog table tbody tr td:first-child,.l5r5e .dice-picker-dialog table tbody tr td:last-child{width:150px}.l5r5e .dice-picker-dialog table tbody tr:last-child td{width:100%;padding:.5rem}.l5r5e .dice-picker-dialog .pointer-choice{cursor:url("../assets/cursors/pointer.webp"),pointer}.l5r5e .dice-picker-dialog .ring-selection.ring-selected i{text-shadow:0px 1px 1px red}.l5r5e .dice-picker-dialog .ring-selection.ring-selected strong{color:rgba(255,0,0,.75)}.l5r5e .dice-picker-dialog .ring-selection.ring-selected input{border:2px solid rgba(255,0,0,.75) !important}.l5r5e .dice-picker-dialog .quantity{font-size:xx-large}.l5r5e .dice-picker-dialog .third{display:inline-block;text-align:center;vertical-align:middle}.l5r5e .dice-picker-dialog .dice-container.assistance{display:flex;align-items:anchor-center}.l5r5e .dice-picker-dialog .dice-container{display:inline-block;position:relative;text-align:center}.l5r5e .dice-picker-dialog .dice-container>img{height:40px;width:40px}.l5r5e .dice-picker-dialog .dice-container.dice-value.input-dice{width:20px;color:#0f0f0e;background:none;border:none;font-size:large;padding:0}.l5r5e .dice-picker-dialog .dice-value{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.l5r5e .dice-picker-dialog input[name="ring.value"][type=text]{color:#f0f0e0;border:unset;background:unset}.l5r5e .dice-picker-dialog input[name="skill.value"][type=text]{color:#0f0f0e;border:unset;background:unset}.l5r5e .dice-picker-dialog input[name="difficulty.value"][type=text]{color:#0f0f0e;border:unset;background:unset}.l5r5e .dice-picker-dialog input[name="skill.assistance"][type=text]{color:#0f0f0e;border:unset;background:unset}.l5r5e .roll-n-keep-dialog{min-width:600px;max-width:800px}.l5r5e .roll-n-keep-dialog.finalized{width:auto;min-width:400px}.l5r5e .roll-n-keep-dialog img{border:0}.l5r5e .roll-n-keep-dialog table{display:table;min-height:9rem;border:0 none;margin:.25rem 0;padding:0}.l5r5e .roll-n-keep-dialog table tbody tr{background:rgba(0,0,0,0)}.l5r5e .roll-n-keep-dialog table tbody tr td{margin:0;padding:0}.l5r5e .roll-n-keep-dialog .rnk-ct{margin:0;display:flex;flex-wrap:wrap;border-radius:.25rem;background:rgba(0,0,0,.05);border:1px solid rgba(255,255,255,.5)}.l5r5e .roll-n-keep-dialog .rnk-ct .rnk-center{flex:350px;flex-wrap:wrap;display:flex}.l5r5e .roll-n-keep-dialog .rnk-ct .form-group{width:100%}.l5r5e .roll-n-keep-dialog .rnk-ct .form-group .form-fields{flex:1}.l5r5e .roll-n-keep-dialog .rnk-ct .form-group .form-fields:nth-child(2){flex:3}.l5r5e .roll-n-keep-dialog .rnk-ct .form-group .form-fields:nth-child(2) input{flex:3}.l5r5e .roll-n-keep-dialog .rnk-ct .form-group .form-fields:nth-child(2) i{flex:unset}.l5r5e .roll-n-keep-dialog .rnk-ct .form-group .range-value{width:2rem}.l5r5e .roll-n-keep-dialog .profil{border-bottom:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column}.l5r5e .roll-n-keep-dialog .profil .effects{clear:both;display:flex;flex-wrap:wrap;justify-content:center;gap:2px 4px}.l5r5e .roll-n-keep-dialog .profil .effects .effect-container{border:1px solid #5a6e5a;border-radius:4px;background-color:rgba(0,0,0,.4);padding:3px;display:flex}.l5r5e .roll-n-keep-dialog .profil .effects .effect-delete{width:16px;height:16px;background-repeat:no-repeat;background-size:contain;text-align:end;cursor:url("../assets/cursors/pointer.webp"),pointer}.l5r5e .roll-n-keep-dialog .profil .effects .effect-icon{width:16px;height:16px;background-repeat:no-repeat;background-size:contain}.l5r5e .roll-n-keep-dialog .profil .effects .effect-name{vertical-align:top;white-space:nowrap;color:#fff;margin-left:4px;font-size:14px;line-height:16px}.l5r5e .roll-n-keep-dialog .dropbox{position:relative;min-height:7rem}.l5r5e .roll-n-keep-dialog .dropbox legend i:last-child{position:absolute;top:0;right:0;border-radius:.15rem;padding:0 .1rem 0 .15rem;font-size:.65rem;line-height:1rem;width:1rem;margin:.25rem;text-align:center;color:#fff;background:#5a6e5a}.l5r5e .roll-n-keep-dialog .dropbox.faces-change{min-height:40px;margin:.5rem auto}.l5r5e .roll-n-keep-dialog .dropbox.discards{border:1px solid gray}.l5r5e .roll-n-keep-dialog .dropbox.rerolls{border:1px solid #ff4500}.l5r5e .roll-n-keep-dialog .dropbox.keeps{flex:100%;border:1px solid green}.l5r5e .roll-n-keep-dialog .dropbox.swap{flex:0 0 calc(100px + 1rem);flex-direction:column;border:1px solid #f0f}.l5r5e .roll-n-keep-dialog .dropbox.discards,.l5r5e .roll-n-keep-dialog .dropbox.rerolls{flex:0 0 calc(50% - .5rem);margin-bottom:.5rem}.l5r5e .roll-n-keep-dialog .dice-ct{position:relative;padding:.25rem}.l5r5e .roll-n-keep-dialog .dice-ct:before{content:"";position:absolute;height:.5rem;width:2px;top:-0.3rem;right:calc(50% - 1px);background:rgba(0,0,0,.25)}.l5r5e .roll-n-keep-dialog .dice-ct:after{content:"";position:absolute;bottom:0;right:0;border-radius:.15rem;padding:0 .15rem;font-size:.65rem;line-height:1rem;width:1rem;text-align:center;color:#fff;background:gray}.l5r5e .roll-n-keep-dialog .dice-ct.discard{filter:opacity(0.5)}.l5r5e .roll-n-keep-dialog .dice-ct.discard:after{content:"";background:gray}.l5r5e .roll-n-keep-dialog .dice-ct.reroll{filter:opacity(0.5)}.l5r5e .roll-n-keep-dialog .dice-ct.reroll:after{content:"";background:#ff4500}.l5r5e .roll-n-keep-dialog .dice-ct.keep:after{content:"";background:green}.l5r5e .roll-n-keep-dialog .dice-ct.swap:after{content:"";background:#f0f}.l5r5e .roll-n-keep-dialog tr:first-child .dice-ct:before{display:none}.l5r5e .roll-n-keep-dialog .dice{height:40px;width:40px}.l5r5e .roll-n-keep-dialog .dice.discard{filter:opacity(0.5);border:0 none}.l5r5e .roll-n-keep-dialog .dice.reroll{filter:opacity(0.5);border:0 none}.l5r5e .roll-n-keep-dialog .dice.keep{border:0 none}.l5r5e .roll-n-keep-dialog .dice.swap{border:0 none}.l5r5e .roll-n-keep-dialog #finalize{width:100%;margin:.5rem .25rem .25rem}.l5r5e .roll-n-keep-dialog .section-header i{font-size:.75rem;margin:0 .25rem}.l5r5e .roll-n-keep-dialog .fa-sign-in-alt{transform:rotate(90deg)}.l5r5e .roll-n-keep-dialog .chat-profil ul{display:flex;flex-direction:row}.l5r5e .roll-n-keep-dialog .chat-profil ul li:nth-child(1),.l5r5e .roll-n-keep-dialog .chat-profil ul li:nth-child(2){flex:0 0 4rem;padding:0 .25rem .25rem}.l5r5e .roll-n-keep-dialog .chat-profil ul li:nth-child(4){flex:0 0 4rem;padding:0 .25rem .25rem}.l5r5e .roll-n-keep-dialog .chat-profil ul .profile-img{width:4rem}.l5r5e .roll-n-keep-dialog .chat-profil ul .chat-profil-stance{font-size:3.5rem;line-height:3.5rem}.l5r5e .dice-picker-dialog button,.l5r5e .roll-n-keep-dialog button{cursor:default;color:#fff;background:linear-gradient(rgb(95, 40, 65), rgb(65, 25, 40), rgb(95, 40, 65));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.5rem;border-image-outset:0px;margin:.5rem 0 0}.l5r5e .dice-picker-dialog button:hover,.l5r5e .roll-n-keep-dialog button:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}.l5r5e .dice-picker-dialog button[disabled],.l5r5e .roll-n-keep-dialog button[disabled]{opacity:.25}.l5r5e .dice-picker-dialog button[disabled]:hover,.l5r5e .roll-n-keep-dialog button[disabled]:hover{box-shadow:none}.l5r5e .dice-picker-dialog #context-menu,.l5r5e .roll-n-keep-dialog #context-menu{max-width:none}.l5r5e .dice-picker-dialog .symbols-help,.l5r5e .roll-n-keep-dialog .symbols-help{font-style:italic;color:#666;font-size:.8rem;line-height:1rem;margin:.5rem auto 0}.l5r5e .dice-picker-dialog .symbols-help i,.l5r5e .roll-n-keep-dialog .symbols-help i{font-size:1rem;line-height:1rem}.l5r5e ul,.l5r5e li{list-style-type:none;margin:0;padding:0}.l5r5e .earth{color:#699678}.l5r5e .air{color:#917896}.l5r5e .water{color:#5f919b}.l5r5e .fire{color:#9b7350}.l5r5e .void{color:#4b4641}.l5r5e input[type=text],.l5r5e input[type=number],.l5r5e input[type=password],.l5r5e input[type=date],.l5r5e input[type=time],.l5r5e textarea{padding:.25rem;background:rgba(255,255,255,.5);border:1px solid rgba(186,187,177,.5);color:rgba(0,0,0,.5);resize:vertical;border-radius:0;box-shadow:none}.l5r5e input[type=text][disabled],.l5r5e input[type=number][disabled],.l5r5e input[type=password][disabled],.l5r5e input[type=date][disabled],.l5r5e input[type=time][disabled],.l5r5e textarea[disabled]{background:rgba(255,255,255,.25)}.l5r5e input[type=number]{text-align:center}.l5r5e.system-badge{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.25rem}.l5r5e.system-badge>img{height:128px;border:none;-o-object-fit:contain;object-fit:contain}.l5r5e.system-badge .system-info{position:relative;font-size:var(--font-size-16)}.l5r5e.system-badge .system-info i{-webkit-padding-start:2px;padding-inline-start:2px;font-size:var(--font-size-12)}.l5r5e.sidebar-info{margin-bottom:-0.5rem}.l5r5e.sidebar-info .system-badge{margin-top:.5rem}.l5r5e.sidebar-info .notification-pip{color:var(--color-text-accent);font-size:var(--font-size-12);top:4px;right:-14px}.l5r5e.sidebar-info ul.unlist{display:flex;flex-wrap:wrap;padding-left:0;list-style:none;-webkit-clip-path:inset(0 0 0 2ch);clip-path:inset(0 0 0 2ch)}.l5r5e.sidebar-info ul.links{gap:0;margin-top:6px;margin-left:10%}.l5r5e.sidebar-info ul.links li{padding-left:1ch;white-space:nowrap}.l5r5e.sidebar-info ul.links li::before{content:"•";display:inline-block;margin-right:1ch;width:1ch;text-align:center}.l5r5e.chat.dice-roll .chat-dice{display:inline;position:relative;padding:0;margin:0}.l5r5e.chat.dice-roll .chat-dice:after{content:"";position:absolute;bottom:0;right:0;border-radius:.15rem;padding:0 .15rem;font-size:.65em;line-height:1rem;text-align:center;color:#fff;background:rgba(0,0,0,0)}.l5r5e.chat.dice-roll .chat-dice:last-of-type:after,.l5r5e.chat.dice-roll .chat-dice:nth-child(6):after,.l5r5e.chat.dice-roll .chat-dice:nth-child(12):after,.l5r5e.chat.dice-roll .chat-dice:nth-child(18):after{padding:0 .175rem 0 .15rem}.l5r5e.chat.dice-roll .chat-dice.rerolled>img{border-bottom:0 none}.l5r5e.chat.dice-roll .chat-dice.rerolled:after{content:"";background:#ff4500}.l5r5e.chat.dice-roll .chat-dice.swapped>img{border-bottom:0 none}.l5r5e.chat.dice-roll .chat-dice.swapped:after{content:"";background:#f0f}.l5r5e.chat.dice-roll .chat-dice>img{border:1px solid rgba(0,0,0,0);height:auto}.l5r5e.chat.dice-roll .chat-profil{text-align:center;vertical-align:middle}.l5r5e.chat.dice-roll .chat-profil .profile-img{margin:.25rem .25rem 0 0}.l5r5e.chat.dice-roll .chat-profil-stance{font-size:2.5rem;line-height:2.5rem;margin:.25rem;text-shadow:1px 1px 1px rgba(0,0,0,.5)}.l5r5e.chat.dice-roll .chat-profil-element{flex-wrap:wrap;flex-grow:1}.l5r5e.chat.dice-roll .chat-profil-element-skill{flex-grow:3}.l5r5e.chat.dice-roll .chat-profil-element:last-child{flex-grow:2}.l5r5e.chat.dice-roll .dice-formula,.l5r5e.chat.dice-roll .dice-total{background:rgba(255,255,255,.1);border:rgba(255,255,255,.75);text-align:center;margin:.5rem 0;padding:.25rem .5rem .25rem .25rem}.l5r5e.chat.dice-roll .dice-formula-rnk,.l5r5e.chat.dice-roll .dice-total-rnk{line-height:2rem}.l5r5e.chat.dice-roll .dice-formula-rnk i,.l5r5e.chat.dice-roll .dice-total-rnk i{margin-left:.5rem}.l5r5e.chat.dice-roll button{justify-self:center}.l5r5e.chat.dice-roll button.chat-dice-rnk{cursor:url("../assets/cursors/pointer.webp"),pointer;color:#fff;background:linear-gradient(rgb(95, 40, 65), rgb(65, 25, 40), rgb(95, 40, 65));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.5rem;border-image-outset:0px;margin:.5rem 0 0}.l5r5e.chat.dice-roll button.chat-dice-rnk:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}.l5r5e.chat.dice-roll button.chat-dice-rnk-ended{background:linear-gradient(rgba(10, 0, 20, 0.75), rgba(0, 0, 10, 0.75), rgba(10, 0, 20, 0.75))}.l5r5e.chat.dice-roll .dice-result-rnk{background:rgba(0,0,255,.1);border:1px solid rgba(55,55,155,.75);padding:.25rem;color:rgba(55,55,155,.75);text-align:center;font-weight:bold;text-shadow:0 0 0 #000}.l5r5e.chat.dice-roll .dice-result-rnk.success{background:rgba(0,255,0,.1);border-color:rgba(55,155,55,.75);color:rgba(55,155,55,.75)}.l5r5e.chat.dice-roll .dice-result-rnk.success i.i_success{font-size:1rem}.l5r5e.chat.dice-roll .dice-result-rnk.unknown{background:rgba(121,121,121,.1);border-color:rgba(124,124,124,.75);color:rgba(91,91,91,.75)}.l5r5e.chat.dice-roll .dice-result-rnk.fail{background:rgba(255,0,0,.1);border-color:rgba(155,55,55,.75);color:rgba(155,55,55,.75)}.l5r5e.chat.dice-roll .target,.l5r5e.chat.dice-roll .item-infos{display:flex;align-items:center;flex:0 0 100%;margin:.5rem 0;padding:.25rem .5rem .25rem .25rem;background:rgba(255,255,255,.1);border:solid 1px rgba(100,0,0,.75);border-radius:3px}.l5r5e.chat.dice-roll .target .profile,.l5r5e.chat.dice-roll .item-infos .profile{flex:1;margin:.25rem .25rem 0 0;position:relative}.l5r5e.chat.dice-roll .target .profile .profile-img,.l5r5e.chat.dice-roll .item-infos .profile .profile-img{position:relative;border:none;filter:drop-shadow(0 0 1px rgba(0, 0, 0, 0.66))}.l5r5e.chat.dice-roll .target .name,.l5r5e.chat.dice-roll .item-infos .name{flex:6;font-family:"BrushtipTexe",sans-serif}.l5r5e.chat.dice-roll .target .content-link,.l5r5e.chat.dice-roll .item-infos .content-link{background:unset;border:unset}.l5r5e.chat.dice-roll .target .content-link i,.l5r5e.chat.dice-roll .item-infos .content-link i{display:none}.l5r5e.chat.dice-roll .item-infos{border:solid 1px rgba(0,78,100,.75)}.l5r5e.chat.dice-roll .item-infos i{font-size:var(--font-size-12)}.l5r5e.chat.dice-roll .dice-container{display:flex}.l5r5e.sheet{min-width:37rem}.l5r5e.sheet label:hover{text-shadow:0 0 2px red}.l5r5e.sheet .l5r-buttons-bar{display:flex;flex:0 0 100%;overflow:hidden;padding:0 8px;line-height:1.9rem;justify-content:flex-end;background:rgba(186,187,177,.5);height:2rem}.l5r5e.sheet .l5r-buttons-bar a.l5r-header-button{flex:none;margin:0 0 0 8px}.l5r5e.sheet.actor .sheet-header h1{flex:auto;margin:0 0 .25rem .5rem}.l5r5e.sheet.actor .sheet-body{height:calc(100% - 28rem)}.l5r5e.sheet.actor fieldset.advancement,.l5r5e.sheet.actor fieldset.items-wrapper{display:grid;flex:100%}.l5r5e.sheet.actor .advancements-tabs{height:2rem;line-height:2rem;font-size:1rem}.l5r5e.sheet form{display:flex;flex-wrap:wrap;align-content:flex-start}.l5r5e.sheet .sheet-body{flex:0 0 100%;align-items:flex-start}.l5r5e.sheet .sheet-body .effects{clear:both;display:flex;flex-wrap:wrap;gap:2px 4px}.l5r5e.sheet .sheet-body .effects .effect-container{border:1px solid #5a6e5a;border-radius:4px;background-color:rgba(0,0,0,.4);padding:3px;display:flex}.l5r5e.sheet .sheet-body .effects .effect-delete{width:16px;height:16px;background-repeat:no-repeat;background-size:contain;text-align:end;cursor:url("../assets/cursors/pointer.webp"),pointer}.l5r5e.sheet .sheet-body .effects .effect-icon{width:16px;height:16px;background-repeat:no-repeat;background-size:contain}.l5r5e.sheet .sheet-body .effects .effect-name{vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff;margin-left:4px;font-size:14px;line-height:16px;max-width:140px}.l5r5e.sheet section.tab[data-tab],.l5r5e.sheet article.tab[data-tab]{display:none}.l5r5e.sheet section.tab[data-tab].active,.l5r5e.sheet article.tab[data-tab].active{display:flex}.l5r5e.sheet .sheet-header{align-items:flex-start;flex-wrap:wrap}.l5r5e.sheet .sheet-header input{flex:0 0 3rem;font-size:1.5rem;height:2rem}.l5r5e.sheet .sheet-header h1{flex:0 0 calc(100% - 90px - 1.25rem);margin:0 0 .25rem 1rem}.l5r5e.sheet .sheet-header h1 input{flex:0 0 100%;font-size:3rem;height:5rem;margin:0;width:100%;text-align:right;color:#963c41;text-shadow:0 0 1px #963c41;background:rgba(0,0,0,0);border:0 none;border-radius:0;border-bottom:1px solid rgba(90,110,90,.25)}.l5r5e.sheet .sheet-header h1:before{content:"";position:absolute;background:url("../assets/imgs/brush.webp") no-repeat 0 0;background-size:contain;height:225px;width:100%;z-index:-1;top:-1rem;left:-0.25rem}.l5r5e.sheet .sheet-header img{flex:0 0 150px;height:150px;width:150px;margin-right:0;-o-object-fit:contain;object-fit:contain;background:rgba(255,255,255,.25);border:1px solid rgba(186,187,177,.25);--notchSize: 0.5rem;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)));clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)))}.l5r5e.sheet .sheet-header .compromised input{border:1px solid #963c41;box-shadow:0 1px 5px #963c41}.l5r5e.sheet .sheet-header .header-fields h2{font-family:"BrushtipTexe",sans-serif;font-size:1rem;padding:.25rem .25rem 0;margin:1rem 20% 0 0;text-align:center;color:rgba(0,0,0,.25);text-shadow:0 0 1px rgba(90,110,90,.25);border-bottom:0 none;background:rgba(186,187,177,.5);--notchSize: 0.5rem;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, 100% 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% 100%);clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, 100% 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% 100%)}.l5r5e.sheet .sheet-header .header-fields h2.right{margin:1rem 0 0 20%;-webkit-clip-path:polygon(0% 0, var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 100% 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)));clip-path:polygon(0% 0, var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 100% 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)))}.l5r5e.sheet .sheet-header .header-fields h2:before{content:"";position:absolute;height:1px;width:100%}.l5r5e.sheet .sheet-header .identity-wrapper{display:flex;position:initial;flex-wrap:wrap;flex:0 0 calc(100% - 150px)}.l5r5e.sheet .sheet-header .identity-wrapper label{display:flex;color:#5a6e5a;text-transform:uppercase;font-size:.75rem;line-height:2rem}.l5r5e.sheet .sheet-header .identity-wrapper label input{flex:1;font-size:1.25rem;height:1.75rem;margin:0 1rem 0 .5rem;padding:0 .25rem .25rem}.l5r5e.sheet .sheet-header .identity-wrapper label input[disabled]{border:1px solid rgba(186,187,177,.5);background:rgba(255,255,255,.25)}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content{display:flex;flex-wrap:wrap}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li{flex:33%}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(1),.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(2){flex:calc(50% - 3rem);margin:0 0 .25rem}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(3){flex:auto}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(3) input{width:1rem;padding:0;margin-right:0}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(4),.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(5){flex:60%}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(4) input,.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(5) input{font-size:1rem}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(5){flex:40%}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(5) input{margin-right:0}.l5r5e.sheet .sheet-header .mid-wrapper{display:flex}.l5r5e.sheet .sheet-header .side-col{width:30%}.l5r5e.sheet .sheet-header .central-col{width:40%}.l5r5e.sheet .sheet-header .rings{padding:0;margin-top:1rem}.l5r5e.sheet .sheet-header .social-content,.l5r5e.sheet .sheet-header .attributes-wrapper{flex:none;flex-wrap:wrap;display:flex;padding:.5rem 0 0 .25rem;border-left:2px solid rgba(186,187,177,.5)}.l5r5e.sheet .sheet-header .social-content li,.l5r5e.sheet .sheet-header .attributes-wrapper li{position:relative}.l5r5e.sheet .sheet-header .social-content li:before,.l5r5e.sheet .sheet-header .attributes-wrapper li:before{content:"";position:absolute;background:linear-gradient(rgba(186, 187, 177, 0.5), rgba(186, 187, 177, 0));height:2px;width:97%;top:-0.25rem;left:-0.25rem}.l5r5e.sheet .sheet-header .social-content li:nth-child(2):before,.l5r5e.sheet .sheet-header .attributes-wrapper li:nth-child(2):before{width:90%}.l5r5e.sheet .sheet-header .social-content li:nth-child(3):before,.l5r5e.sheet .sheet-header .attributes-wrapper li:nth-child(3):before{width:80%}.l5r5e.sheet .sheet-header .social-content li:nth-child(4):before,.l5r5e.sheet .sheet-header .attributes-wrapper li:nth-child(4):before{width:90%}.l5r5e.sheet .sheet-header .social-content label,.l5r5e.sheet .sheet-header .attributes-wrapper label{display:flex;color:#5a6e5a;text-transform:uppercase;font-size:.75rem;height:2.5rem;margin:.25rem 0;flex-direction:row-reverse}.l5r5e.sheet .sheet-header .social-content label strong,.l5r5e.sheet .sheet-header .attributes-wrapper label strong{flex:0 0 calc(100% - 4.5rem)}.l5r5e.sheet .sheet-header .social-content label input,.l5r5e.sheet .sheet-header .attributes-wrapper label input{flex:0 0 3rem;margin:0 .25rem;height:2rem}.l5r5e.sheet .sheet-header .social-content label input[disabled],.l5r5e.sheet .sheet-header .attributes-wrapper label input[disabled]{background:rgba(255,255,255,.25)}.l5r5e.sheet .sheet-header .social-content .affinities,.l5r5e.sheet .sheet-header .attributes-wrapper .affinities{padding-top:.25rem}.l5r5e.sheet .sheet-header .social-content .affinities .ring,.l5r5e.sheet .sheet-header .attributes-wrapper .affinities .ring{display:flex;flex-wrap:wrap;flex-direction:unset;flex:3rem;height:1.5rem;margin:0}.l5r5e.sheet .sheet-header .social-content .affinities i,.l5r5e.sheet .sheet-header .attributes-wrapper .affinities i{flex:1rem;margin:0;text-align:center}.l5r5e.sheet .sheet-header .social-content .affinities input,.l5r5e.sheet .sheet-header .attributes-wrapper .affinities input{flex:1.25rem;height:1.25rem;margin:0}.l5r5e.sheet .sheet-header .focus-content,.l5r5e.sheet .sheet-header .vigilance-content{flex:0 0 50%;padding-bottom:.5rem}.l5r5e.sheet .sheet-header .focus-content .attribute-label,.l5r5e.sheet .sheet-header .vigilance-content .attribute-label{flex-wrap:wrap;height:auto}.l5r5e.sheet .sheet-header .focus-content .attribute-label strong,.l5r5e.sheet .sheet-header .vigilance-content .attribute-label strong{flex:100%;text-align:center}.l5r5e.sheet .sheet-header .focus-content .attribute-label input,.l5r5e.sheet .sheet-header .vigilance-content .attribute-label input{flex:1 0 3rem}.l5r5e.sheet .sheet-header .focus-content .attribute-label:before,.l5r5e.sheet .sheet-header .vigilance-content .attribute-label:before{top:auto;bottom:.1rem;height:calc(100% - 1.45rem);width:calc(100% - .4rem)}.l5r5e.sheet .sheet-header .attributes-wrapper{padding:.5rem .25rem 0 0;border-left:0 none;border-right:2px solid rgba(186,187,177,.5)}.l5r5e.sheet .sheet-header .attributes-wrapper li:before{left:auto;right:-0.25rem}.l5r5e.sheet .sheet-header .attributes-wrapper li.focus-content:before{width:0}.l5r5e.sheet .sheet-header .attributes-wrapper li.vigilance-content:before{width:160%}.l5r5e.sheet .sheet-header .attributes-wrapper li.void-content:before{width:90%}.l5r5e.sheet .sheet-header .attributes-wrapper label{flex-direction:row;width:100%}.l5r5e.sheet .sheet-header .attributes-wrapper label strong{text-align:right}.l5r5e.sheet .sheet-header .attributes-wrapper label:nth-child(2) strong{position:absolute;top:0;left:0;font-size:.65rem;width:3rem;color:rgba(0,0,0,.25)}.l5r5e.sheet .sheet-header .attributes-wrapper label:nth-child(2) input{font-size:1.25rem;padding-top:.75rem}.l5r5e.sheet .sheet-header .attributes-wrapper .endurance-content label:nth-child(1) strong,.l5r5e.sheet .sheet-header .attributes-wrapper .composure-content label:nth-child(1) strong{flex:0 0 calc(100% - 6rem)}.l5r5e.sheet .sheet-header .attributes-wrapper .endurance-content label:nth-child(1) input,.l5r5e.sheet .sheet-header .attributes-wrapper .composure-content label:nth-child(1) input{flex:0 0 5.5rem;padding-right:3rem}.l5r5e.sheet .sheet-header .attributes-wrapper .endurance-content label:nth-child(2),.l5r5e.sheet .sheet-header .attributes-wrapper .composure-content label:nth-child(2){position:absolute;right:0;width:3.5rem}.l5r5e.sheet .sheet-header .attributes-wrapper .increment-control{line-height:13px;position:relative;top:.2rem}.l5r5e.sheet .sheet-header .attributes-wrapper .void-content{width:100%;padding-top:.25rem}.l5r5e.sheet .sheet-header .attributes-wrapper .void-content label{margin:0}.l5r5e.sheet .sheet-header .attributes-wrapper .void-content label strong{flex:1 0 calc(100% - 5rem);padding:0 .25rem}.l5r5e.sheet .sheet-header .attributes-wrapper .void-content label strong:after{content:"/";position:absolute;right:1.25rem;font-size:1rem;bottom:.6rem;color:#764f40}.l5r5e.sheet .sheet-header .attributes-wrapper .void-content label input:nth-child(2){flex:3rem;padding-right:1.25rem}.l5r5e.sheet .sheet-header .attributes-wrapper .void-content label input:last-child{flex:1;border:0 none;font-size:1rem;text-align:right;padding-left:.25rem;padding-top:.75rem;position:absolute;right:.25rem;width:1rem}.l5r5e.sheet .sheet-header .attributes-wrapper li{display:flex}.l5r5e.sheet .sheet-header .attributes-wrapper li p{display:none;z-index:2;position:absolute;background:rgba(0,0,0,.5);color:#fff;line-height:1.5rem;text-align:center;width:100%;padding:.25rem;bottom:-2.25rem;right:-0.25rem;--notchSize: 0.5rem;-webkit-clip-path:polygon(0% 0, 0 0%, 100% 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)));clip-path:polygon(0% 0, 0 0%, 100% 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)))}.l5r5e.sheet .sheet-header .attributes-wrapper li:hover p{display:block;height:auto}.l5r5e.sheet .sheet-header .attributes-wrapper .focus-content p,.l5r5e.sheet .sheet-header .attributes-wrapper .vigilance-content p{bottom:-3.75rem}.l5r5e.sheet .sheet-header .attribute-label{position:relative}.l5r5e.sheet .sheet-header .identity-content .attribute-label:before{height:calc(100% - .6rem);width:calc(100% - .65rem);left:auto;top:.15rem;right:.85rem}.l5r5e.sheet .sheet-header .identity-content li:nth-child(3) .attribute-label:before,.l5r5e.sheet .sheet-header .identity-content li:nth-child(5) .attribute-label:before{height:calc(100% - .6rem);width:calc(100% + .25rem);left:auto;top:.15rem;right:-0.15rem}.l5r5e.sheet .sheet-header .attributes-wrapper .attribute-label:nth-child(2):before{left:auto;right:3.15rem;width:2.6rem}.l5r5e.sheet .sheet-header .attributes-wrapper .attribute-label:before{left:auto;right:.15rem}.l5r5e.sheet .sheet-header .void-content .attribute-label:before{width:3.85rem}.l5r5e.sheet article{background:rgba(255,255,255,.25);padding:.5rem;flex-wrap:wrap;min-height:calc(100% - 3.25rem)}.l5r5e.sheet article fieldset h3{font-size:1.25rem;width:100%;text-align:left;line-height:2rem;color:#764f40;border-bottom:1px solid}.l5r5e.sheet article fieldset h3 .item-control.item-add{float:right;font-size:.75rem;line-height:.75rem;border:1px solid;padding:.25rem;margin:.25rem;color:#fff;background:#764f40}.l5r5e.sheet article fieldset h3 .item-control.item-add:hover{opacity:.75}.l5r5e.sheet article .narrative-content{flex:100%;display:flex}.l5r5e.sheet article .narrative-content fieldset{flex:0 0 calc(50% - .5rem)}.l5r5e.sheet article .narrative-content fieldset label{width:100%}.l5r5e.sheet article .narrative-list{flex:0 0 50%}.l5r5e.sheet article .narrative-list fieldset{flex:0 0 50%}.l5r5e.sheet article .narrative-list fieldset label{width:100%}.l5r5e.sheet article .narrative-fluff{flex:0 0 50%;display:flex;flex-direction:column}.l5r5e.sheet article .narrative-fluff .narrative-description,.l5r5e.sheet article .narrative-fluff .narrative-note{flex:1;font-size:.85rem;max-height:24rem}.l5r5e.sheet article .narrative-fluff .narrative-description .editor-container,.l5r5e.sheet article .narrative-fluff .narrative-note .editor-container{min-height:18rem}.l5r5e.sheet article .techniques-wrapper{padding-left:.25rem}.l5r5e.sheet article .techniques-wrapper fieldset{margin:0 0 0 .25rem}.l5r5e.sheet article .techniques-wrapper .dice-picker-tech:hover{text-shadow:0 0 2px red}.l5r5e.sheet article .techniques-wrapper .checklist{display:flex;flex-wrap:wrap;font-size:.85rem;margin:0 0 .25rem .25rem;padding:.5rem;background:rgba(186,187,177,.5);--notchSize: 0.25rem;-webkit-clip-path:polygon(0% 0, var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 100% 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)));clip-path:polygon(0% 0, var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 100% 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)))}.l5r5e.sheet article .techniques-wrapper .checklist i{color:rgba(0,0,0,.5);margin-right:.5rem}.l5r5e.sheet article .techniques-wrapper .checklist label{flex:0 0 auto;margin:0 .25rem .25rem;padding:0 .5rem;color:#5a6e5a;background:rgba(255,255,255,.5);border:1px solid #5a6e5a;border-radius:1rem}.l5r5e.sheet article .techniques-wrapper .checklist input{margin:.25rem 0 0 0;height:.65rem;width:.65rem}.l5r5e.sheet article .stances-content{flex:100%;height:100%;align-self:flex-start}.l5r5e.sheet article .stances-content .item-list{position:relative;padding-top:2rem;margin:0}.l5r5e.sheet article .stances-content .stance-content{padding:0;margin:0}.l5r5e.sheet article .stances-content .stance-content label{display:block;position:absolute;top:0;left:0;width:20%;line-height:1.5rem;padding:.25rem;color:#fff}.l5r5e.sheet article .stances-content .stance-content label.earth{background:#699678}.l5r5e.sheet article .stances-content .stance-content label.air{background:#917896;left:20%}.l5r5e.sheet article .stances-content .stance-content label.water{background:#5f919b;left:40%}.l5r5e.sheet article .stances-content .stance-content label.fire{background:#9b7350;left:60%}.l5r5e.sheet article .stances-content .stance-content label.void{background:#4b4641;left:80%}.l5r5e.sheet article .stances-content .stance-content label input{float:right;position:relative;top:.3rem;right:.25rem}.l5r5e.sheet article .weapons-content,.l5r5e.sheet article .armors-content{flex:0 0 calc(50% - .5rem)}.l5r5e.sheet .xp,.l5r5e.sheet .money-wrapper{flex:100%;flex-direction:row;color:#000}.l5r5e.sheet .xp label,.l5r5e.sheet .money-wrapper label{display:flex;flex:33.3333333333%;padding:.5rem;font-size:.85rem;align-items:center}.l5r5e.sheet .xp label input,.l5r5e.sheet .money-wrapper label input{margin-left:.5rem}.l5r5e.sheet .xp .xp-buttons,.l5r5e.sheet .xp .money-buttons,.l5r5e.sheet .money-wrapper .xp-buttons,.l5r5e.sheet .money-wrapper .money-buttons{line-height:13px;padding-left:.3em}.l5r5e.sheet .xp .increment-control,.l5r5e.sheet .money-wrapper .increment-control{display:flex;flex-direction:column;align-items:center;padding-left:.2rem;flex:none}.l5r5e.sheet table{border:none;font-size:.85rem;color:#000;text-align:left}.l5r5e.sheet table thead{border:none;font-family:"BrushtipTexe",sans-serif;font-weight:normal}.l5r5e.sheet table thead th{padding-left:.5rem;padding-right:.5rem;font-size:1rem}.l5r5e.sheet table thead th:first-child{flex:calc(100% - 16rem);padding-left:.5rem;text-align:left}.l5r5e.sheet table thead th:nth-child(2){flex:0 0 2rem}.l5r5e.sheet table thead th:nth-child(3),.l5r5e.sheet table thead th:nth-child(4){flex:0 0 4rem}.l5r5e.sheet table tbody{border:none}.l5r5e.sheet table tbody .curriculum{flex:0 0 2rem}.l5r5e.sheet table tbody .name{flex:calc(100% - 13rem);padding-left:.5rem;text-align:left}.l5r5e.sheet table tbody .xp,.l5r5e.sheet table tbody .rank{flex:0 0 4rem}.l5r5e.sheet table tbody .actions{flex:0 0 3rem;font-size:.75rem}.l5r5e.sheet table tbody .actions ul{display:flex;flex-direction:row}.l5r5e.sheet table tbody .actions ul li{flex:0 0 1rem}.l5r5e.sheet table tbody .actions ul li:hover{color:rgba(255,0,0,.75)}.l5r5e.sheet table tbody .tfoot{padding:.25 .5rem;background:rgba(186,187,177,.5);text-shadow:none;border-top:rgba(186,187,177,.5);text-align:center}.l5r5e.sheet table tbody img{width:16px;height:16px;border:none;display:inline}.l5r5e.sheet table tfoot{border:none;-moz-text-align-last:center;text-align-last:center}.l5r5e.sheet .inventory .items-wrapper h3{background:rgba(90,110,90,.15);color:#5a6e5a;border-bottom:1px solid #fff;font-family:"Caballar",sans-serif;font-size:1rem;padding-left:.5rem;margin:0}.l5r5e.sheet .inventory .items-wrapper .item-list{display:block}.l5r5e.sheet.actor .initiative-wrapper,.l5r5e.sheet.npc .initiative-wrapper{flex:100%;height:100%;align-self:flex-start;text-align:center;display:block}.l5r5e.sheet.actor .initiative button,.l5r5e.sheet.npc .initiative button{width:auto;min-width:20%;margin:0 .25rem .25rem;padding:0 .5rem;color:#5a6e5a;background:rgba(255,255,255,.5);border:1px solid #5a6e5a;border-radius:1rem;line-height:1.5rem;height:1.5rem}.l5r5e.sheet.actor .initiative button:focus,.l5r5e.sheet.npc .initiative button:focus{box-shadow:none}.l5r5e.sheet.actor .limited h1,.l5r5e.sheet.npc .limited h1{margin:.5rem 0}.l5r5e.sheet.actor .limited img.full,.l5r5e.sheet.npc .limited img.full{flex:initial;height:auto;width:-moz-max-content;width:max-content;border:0 none;margin:0 auto}.l5r5e.sheet.actor .limited .sheet-header,.l5r5e.sheet.npc .limited .sheet-header{flex:none;height:auto;width:100%}.l5r5e.sheet.actor .limited ul,.l5r5e.sheet.npc .limited ul{display:flex;flex-wrap:wrap}.l5r5e.sheet.actor .limited ul li,.l5r5e.sheet.npc .limited ul li{flex:50%;padding:.25rem 0}.l5r5e.sheet.actor .limited ul li input,.l5r5e.sheet.npc .limited ul li input{width:75%;float:right}.l5r5e.sheet.actor .limited ul li:nth-child(1),.l5r5e.sheet.actor .limited ul li:nth-child(2),.l5r5e.sheet.npc .limited ul li:nth-child(1),.l5r5e.sheet.npc .limited ul li:nth-child(2){flex:calc(50% - 5rem);margin-right:1rem}.l5r5e.sheet.actor .limited ul li:nth-child(3),.l5r5e.sheet.npc .limited ul li:nth-child(3){flex:auto}.l5r5e.sheet.actor .limited ul li:nth-child(3) input,.l5r5e.sheet.npc .limited ul li:nth-child(3) input{width:2rem}.l5r5e.sheet.actor .limited ul li:nth-child(4),.l5r5e.sheet.actor .limited ul li:nth-child(5),.l5r5e.sheet.npc .limited ul li:nth-child(4),.l5r5e.sheet.npc .limited ul li:nth-child(5){flex:calc(50% - 1rem);margin-right:1rem}.l5r5e.sheet.actor .limited ul li:nth-child(4) input,.l5r5e.sheet.actor .limited ul li:nth-child(5) input,.l5r5e.sheet.npc .limited ul li:nth-child(4) input,.l5r5e.sheet.npc .limited ul li:nth-child(5) input{font-size:1rem}.l5r5e.sheet nav.sheet-tabs{flex:100%}.l5r5e.sheet.journal .journal-page-content ul{margin:.5rem 0}.l5r5e.sheet.journal .journal-page-content li{list-style-type:initial;margin:.5rem 0 .5rem 1.5rem;padding:0}.l5r5e.sheet .editable[data-lang=Español] .sheet-header .focus-content .attribute-label strong,.l5r5e.sheet .editable[data-lang=Español] .sheet-header .vigilance-content .attribute-label strong{font-size:.7rem;line-height:1.1rem}.l5r5e.npc .sheet-header h1:before{top:-3.75rem}.l5r5e.npc .sheet-header img{flex:0 0 90px;height:90px;width:90px}.l5r5e.npc .sheet-header fieldset{flex:1 1 100%;min-height:2rem;width:100%;margin:0}.l5r5e.npc .sheet-header .header-fields{padding:0}.l5r5e.npc .sheet-header .identity-wrapper{flex:1 1 100%}.l5r5e.npc .sheet-header .identity-wrapper h1{margin:0 .25rem 1rem 1rem}.l5r5e.npc .sheet-header .identity-wrapper .identity-list{flex:0 0 100%;display:flex;margin:.25rem 0 .5rem}.l5r5e.npc .sheet-header .identity-wrapper .identity-list li{flex:1;flex-wrap:wrap;display:flex}.l5r5e.npc .sheet-header .identity-wrapper .identity-list li select{width:100%;background:rgba(255,255,255,.5);border:0 none;text-transform:capitalize;color:#764f40;font-family:"PatrickHand",sans-serif;font-weight:bold;font-size:1rem;letter-spacing:.15rem}.l5r5e.npc .sheet-header .identity-wrapper .identity-list li i,.l5r5e.npc .sheet-header .identity-wrapper .identity-list li input{font-size:1.25rem;height:1.5rem;line-height:1.5rem;width:7.25rem;margin:auto;text-align:center}.l5r5e.npc .sheet-header .affinities{display:flex;flex-wrap:wrap}.l5r5e.npc .sheet-header .affinities select{position:relative;background:rgba(0,0,0,0);border:0 none;margin:0;padding:0;text-align:left;font-weight:bold;margin:0 0 .25rem 0;color:#5a6e5a}.l5r5e.npc .sheet-header .affinities input{flex:1rem;font-size:1rem;height:1.5rem}.l5r5e.npc .sheet-header .social-content{margin-bottom:.5rem}.l5r5e.npc .sheet-header .social-content .attitude{height:1.5rem;padding-left:.25rem}.l5r5e.npc .sheet-header .social-content .attitude input{height:1.5rem;flex:1;margin-right:0}.l5r5e.npc .sheet-body{padding:0}.l5r5e.npc .npc-skill{display:flex;width:100%;line-height:2rem;font-size:.75rem;margin:.5rem 0;text-align:center}.l5r5e.npc .npc-skill li{flex:1;padding:.25rem;text-transform:uppercase;color:#fff}.l5r5e.npc .npc-skill li:nth-child(1){background:#4b4641}.l5r5e.npc .npc-skill li:nth-child(2){background:#699678}.l5r5e.npc .npc-skill li:nth-child(3){background:#9b7350}.l5r5e.npc .npc-skill li:nth-child(4){background:#917896}.l5r5e.npc .npc-skill li:nth-child(5){flex:1.25;background:#5f919b}.l5r5e.npc .npc-skill input[type=number]{float:right;font-size:1.25rem;height:2rem;width:1rem;margin:0;padding:0;border:0 none;background:rgba(0,0,0,0);color:#fff}.l5r5e.npc article{min-height:auto}.l5r5e.npc article fieldset,.l5r5e.npc article .checklist{flex:0 0 calc(100% - .5rem)}.l5r5e.npc article .items-content{flex:0 0 calc(100% - .5rem);margin:1rem .25rem 0}.l5r5e.npc article .weapons-content{flex:1}.l5r5e.npc article .initiative-wrapper{margin-bottom:.5rem}.l5r5e.npc article:last-child{padding-bottom:1rem}.l5r5e.npc article .techniques-wrapper{padding-left:.5rem}.l5r5e.npc article .techniques-wrapper fieldset,.l5r5e.npc article .techniques-wrapper .checklist{flex:100%;margin:0}.l5r5e.npc .npc-note .editor{min-height:6rem;max-height:12rem}.l5r5e.npc .narrative-note{flex:0 0 calc(50% - .25rem)}.l5r5e.character-generator-dialog form .body{clear:both;display:flex;flex-direction:column;flex-wrap:wrap;margin:3px 0;align-items:start}.l5r5e.character-generator-dialog input[type=number]{width:auto}.l5r5e.character-generator-dialog form .form-group{border-bottom:solid rgba(128,128,128,.2392156863) 1px}.l5r5e.character-generator-dialog form .form-group.smaller>label{flex:10}.l5r5e.character-generator-dialog form .form-group.smaller .form-fields{flex:1}.l5r5e.sheet.army .sheet-header{height:9.5rem}.l5r5e.sheet.army .sheet-header h1{flex:1}.l5r5e.sheet.army .sheet-header .readiness{flex:0 0 100%;align-items:flex-start}.l5r5e.sheet.army .sheet-header .readiness ul{display:flex;position:relative;padding:.25rem;height:4rem}.l5r5e.sheet.army .sheet-header .readiness ul li{flex:25%;display:flex;flex-direction:column;align-items:center;position:relative}.l5r5e.sheet.army .sheet-header .readiness ul li .increment-control{position:absolute;right:-0.7rem;top:15%;display:flex;flex-direction:column;gap:.1rem;line-height:1}.l5r5e.sheet.army .sheet-header .readiness ul li strong{color:#5a6e5a;text-align:center;text-transform:uppercase;font-size:.75rem}.l5r5e.sheet.army .sheet-header .readiness ul li label{position:relative;display:flex;align-items:center;justify-content:center}.l5r5e.sheet.army .sheet-header .readiness ul li input{background:rgba(0,0,0,0);border:0 none;text-align:center;margin:0;padding:0;width:2rem}.l5r5e.sheet.army .sheet-header .readiness ul li:after{content:"";width:2rem;height:2rem;position:absolute;background:rgba(0,0,0,0) url("../assets/icons/circle.svg") no-repeat 0 0;background-size:contain;opacity:.25;z-index:-1}.l5r5e.sheet.army .sheet-header .readiness ul li:nth-child(1):after{transform:rotate(0deg)}.l5r5e.sheet.army .sheet-header .readiness ul li:nth-child(2):after{transform:rotate(90deg)}.l5r5e.sheet.army .sheet-header .readiness ul li:nth-child(3):after{transform:rotate(180deg)}.l5r5e.sheet.army .sheet-header .readiness ul li:nth-child(4):after{transform:rotate(-90deg)}.l5r5e.sheet.army .sheet-header .readiness h2{flex:0 0 100%}.l5r5e.sheet.army .sheet-body{height:calc(100% - 11.5rem)}.l5r5e.sheet.army .sheet-body .tab{height:calc(100% - 3.5rem)}.l5r5e.sheet.army .sheet-body .tab.army .warlord,.l5r5e.sheet.army .sheet-body .tab.army .commander{display:flex;flex-wrap:wrap}.l5r5e.sheet.army .sheet-body .tab.army .warlord .fa-sign-in-alt,.l5r5e.sheet.army .sheet-body .tab.army .commander .fa-sign-in-alt{transform:rotate(90deg)}.l5r5e.sheet.army .sheet-body .tab.army .warlord fieldset,.l5r5e.sheet.army .sheet-body .tab.army .commander fieldset{margin-top:.25rem;margin-bottom:.25rem}.l5r5e.sheet.army .sheet-body .tab.army .warlord fieldset strong,.l5r5e.sheet.army .sheet-body .tab.army .commander fieldset strong{color:#5a6e5a}.l5r5e.sheet.army .sheet-body .tab.army .warlord fieldset label,.l5r5e.sheet.army .sheet-body .tab.army .commander fieldset label{flex:100%}.l5r5e.sheet.army .sheet-body .tab.army .warlord fieldset p,.l5r5e.sheet.army .sheet-body .tab.army .commander fieldset p{width:100%}.l5r5e.sheet.army .sheet-body .tab.army .warlord fieldset textarea,.l5r5e.sheet.army .sheet-body .tab.army .commander fieldset textarea{height:calc(100% - 22px)}.l5r5e.sheet.army .sheet-body .tab.army .warlord fieldset .actor-remove-control,.l5r5e.sheet.army .sheet-body .tab.army .commander fieldset .actor-remove-control{font-size:12px}.l5r5e.sheet.army .sheet-body .tab.army .standing{flex:0 0 100%;display:flex;flex-wrap:wrap}.l5r5e.sheet.army .sheet-body .tab.army .standing h2{flex:0 0 100%}.l5r5e.sheet.army .sheet-body .tab.army .standing ul{display:flex;position:relative}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li{flex:33%;display:inline-grid;position:relative;padding:.25rem;flex-direction:column-reverse}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li strong{text-align:center}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li input{background:rgba(0,0,0,0);border:0 none;text-align:center}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li:after{content:"";width:2rem;height:2rem;position:absolute;right:calc(50% - .95rem);top:calc(50% - .2rem);background:rgba(0,0,0,0) url("../assets/icons/circle.svg") no-repeat 0 0;background-size:contain;opacity:.25;z-index:-1}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li:nth-child(1):after{transform:rotate(0deg)}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li:nth-child(2):after{transform:rotate(90deg)}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li:nth-child(3):after{transform:rotate(180deg)}.l5r5e.sheet.army .sheet-body .tab.army .warlord-name{display:flex;flex:100%;flex-wrap:wrap;margin:0;padding:.5rem .5rem 0;background:rgba(186,187,177,.5);--notchSize: 0.25rem}.l5r5e.sheet.army .sheet-body .tab.army .warlord-name i{color:rgba(0,0,0,.5);margin-right:.5rem}.l5r5e.sheet.army .sheet-body .tab.army .warlord-name label{flex:0 0 auto !important;height:1.65rem;margin:0;padding:0 .5rem;color:#5a6e5a;background:rgba(255,255,255,.5);border:1px solid #5a6e5a;border-radius:1rem}.l5r5e.sheet.army .sheet-body .tab.others{flex-direction:column}.l5r5e.sheet.army .sheet-body .tab.others .editor-container{min-height:8rem;max-height:14rem}.l5r5e nav.sheet-tabs{height:3rem;line-height:2rem;font-family:"Caballar",sans-serif;letter-spacing:-0.05rem;font-size:1rem;border:0 none;border-bottom:1px solid rgba(186,187,177,.5);margin-bottom:0;background:rgba(255,255,255,.5);color:rgba(0,0,0,.5);display:flex;flex-direction:row;--notchSize: 0.5rem;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), 100% 100%, var(--notchSize) 100%, 0% 100%);clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), 100% 100%, var(--notchSize) 100%, 0% 100%)}.l5r5e nav .item{flex:1}.l5r5e nav .item:hover{background-color:#5a6e5a;color:rgba(255,255,255,.65);text-shadow:none;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 0 100%, 0% 0%, 0% 100%);clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 0 100%, 0% 0%, 0% 100%)}.l5r5e nav .item.active{background-color:rgba(73,12,11,.85);color:#fff;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 0 100%, 0% 0%, 0% 100%);clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 0 100%, 0% 0%, 0% 100%)}.l5r5e nav .item.active:hover{background-color:rgba(73,12,11,.85);cursor:default}.l5r5e .rings{display:flex;flex-wrap:wrap;color:rgba(255,255,255,.65)}.l5r5e .rings #earth,.l5r5e .rings #air,.l5r5e .rings #water,.l5r5e .rings #fire,.l5r5e .rings #void{position:relative;flex:1 1 50%;text-align:center}.l5r5e .rings #earth i.i_earth,.l5r5e .rings #earth i.i_water,.l5r5e .rings #earth i.i_fire,.l5r5e .rings #earth i.i_air,.l5r5e .rings #earth i.i_void,.l5r5e .rings #air i.i_earth,.l5r5e .rings #air i.i_water,.l5r5e .rings #air i.i_fire,.l5r5e .rings #air i.i_air,.l5r5e .rings #air i.i_void,.l5r5e .rings #water i.i_earth,.l5r5e .rings #water i.i_water,.l5r5e .rings #water i.i_fire,.l5r5e .rings #water i.i_air,.l5r5e .rings #water i.i_void,.l5r5e .rings #fire i.i_earth,.l5r5e .rings #fire i.i_water,.l5r5e .rings #fire i.i_fire,.l5r5e .rings #fire i.i_air,.l5r5e .rings #fire i.i_void,.l5r5e .rings #void i.i_earth,.l5r5e .rings #void i.i_water,.l5r5e .rings #void i.i_fire,.l5r5e .rings #void i.i_air,.l5r5e .rings #void i.i_void{font-size:5rem;line-height:4.75rem}.l5r5e .rings #earth label,.l5r5e .rings #air label,.l5r5e .rings #water label,.l5r5e .rings #fire label,.l5r5e .rings #void label{position:relative;width:5rem;line-height:0;float:right}.l5r5e .rings #earth label.stance-active strong,.l5r5e .rings #air label.stance-active strong,.l5r5e .rings #water label.stance-active strong,.l5r5e .rings #fire label.stance-active strong,.l5r5e .rings #void label.stance-active strong{-webkit-text-decoration:underline 2px;text-decoration:underline 2px}.l5r5e .rings #earth input,.l5r5e .rings #air input,.l5r5e .rings #water input,.l5r5e .rings #fire input,.l5r5e .rings #void input{position:absolute;height:2rem;width:2rem;border-radius:100%;top:0;left:0;text-align:center;font-size:1rem;border:2px solid rgba(186,187,177,.5);color:rgba(255,255,255,.65)}.l5r5e .rings #earth input:hover,.l5r5e .rings #air input:hover,.l5r5e .rings #water input:hover,.l5r5e .rings #fire input:hover,.l5r5e .rings #void input:hover{border:2px solid rgba(255,0,0,.75);text-shadow:0 0 3px red;box-shadow:0 0 3px inset red}.l5r5e .rings #earth{float:right;color:#699678}.l5r5e .rings #earth input{top:auto;right:0;bottom:-0.9rem;left:auto;background:#699678}.l5r5e .rings #earth label strong{position:absolute;bottom:.75rem;left:-1.75rem}.l5r5e .rings #air{color:#917896}.l5r5e .rings #air input{top:auto;right:auto;bottom:-0.9rem;left:0;background:#917896}.l5r5e .rings #air label{float:left}.l5r5e .rings #air label strong{position:absolute;bottom:.75rem;right:-1rem}.l5r5e .rings #water{float:right;color:#5f919b;padding-right:2rem}.l5r5e .rings #water input{top:17%;right:-1.25rem;bottom:auto;left:auto;background:#5f919b}.l5r5e .rings #water label strong{position:absolute;bottom:-0.75rem;right:2rem}.l5r5e .rings #fire{color:#9b7350;padding-left:2rem}.l5r5e .rings #fire input{top:17%;right:auto;bottom:auto;left:-1.25rem;background:#9b7350}.l5r5e .rings #fire label{float:left}.l5r5e .rings #fire label strong{position:absolute;bottom:-0.75rem;right:2rem}.l5r5e .rings #void{top:-2rem;margin:0 calc(50% - 2.5rem);color:#4b4641}.l5r5e .rings #void input{top:-1rem;right:auto;bottom:auto;left:30%;background:#4b4641}.l5r5e .rings #void label strong{position:absolute;bottom:-0.75rem;left:1.75rem}.l5r5e.sheet article .skills-wrapper,.l5r5e.sheet article .techniques-wrapper{flex:50%}.l5r5e.sheet article .skills-wrapper>li,.l5r5e.sheet article .techniques-wrapper>li{display:flex;flex-wrap:wrap;font-size:.85rem;margin:0 0 1rem;border:1px solid rgba(186,187,177,.5);--notchSize: 0.75rem;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, 100% 0, 100% 0, 100% 100%, 100% 100%, 0 100%, 0 100%);clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, 100% 0, 100% 0, 100% 100%, 100% 100%, 0 100%, 0 100%)}.l5r5e.sheet article .skills-wrapper>li h4,.l5r5e.sheet article .techniques-wrapper>li h4{flex:100%;margin:0;padding:.5rem .5rem 0;text-align:center;background:rgba(186,187,177,.5);color:#5a6e5a;--notchSize: 0.5rem;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, 100% 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% 100%);clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, 100% 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% 100%)}.l5r5e.sheet article .skills-wrapper>li ul,.l5r5e.sheet article .techniques-wrapper>li ul{flex:50%;padding:.25rem .5rem .25rem 0}.l5r5e.sheet article .skills-wrapper>li ul li,.l5r5e.sheet article .techniques-wrapper>li ul li{text-align:left;line-height:2rem;margin:.25rem 0}.l5r5e.sheet article .skills-wrapper>li ul li.skill,.l5r5e.sheet article .techniques-wrapper>li ul li.skill{text-align:right}.l5r5e.sheet article .skills-wrapper>li ul li.skill span,.l5r5e.sheet article .techniques-wrapper>li ul li.skill span{color:rgba(0,0,0,.5)}.l5r5e.sheet article .skills-wrapper>li ul li.skill span[data-skill=melee],.l5r5e.sheet article .skills-wrapper>li ul li.skill span[data-skill=ranged],.l5r5e.sheet article .skills-wrapper>li ul li.skill span[data-skill=unarmed],.l5r5e.sheet article .techniques-wrapper>li ul li.skill span[data-skill=melee],.l5r5e.sheet article .techniques-wrapper>li ul li.skill span[data-skill=ranged],.l5r5e.sheet article .techniques-wrapper>li ul li.skill span[data-skill=unarmed]{float:left;line-height:1rem;width:calc(100% - 2rem)}.l5r5e.sheet article .skills-wrapper>li ul.skill-category-ring-actions,.l5r5e.sheet article .techniques-wrapper>li ul.skill-category-ring-actions{padding:.25rem 0 .25rem .5rem;border-left:1px solid rgba(186,187,177,.5)}.l5r5e.sheet article .skills-wrapper>li input,.l5r5e.sheet article .techniques-wrapper>li input{width:1.75rem;height:1.75rem;text-align:center}.l5r5e.sheet article .skills-wrapper>li:last-child,.l5r5e.sheet article .techniques-wrapper>li:last-child{margin:0}.l5r5e .item-list{flex:100%}.l5r5e .item-list .tab[data-tab]{display:none}.l5r5e .item-list .item .item-header{display:flex}.l5r5e .item-list .item .item-header .item-img{flex:0 0 32px;padding-right:.25rem}.l5r5e .item-list .item .item-header .item-img img{border:none}.l5r5e .item-list .item .item-header .item-name{flex:1 1 auto;font-size:1rem;line-height:1rem;color:#764f40;align-content:center}.l5r5e .item-list .item .item-header .removed{text-decoration-line:line-through}.l5r5e .item-list .item .item-header .item-edit,.l5r5e .item-list .item .item-header .item-delete,.l5r5e .item-list .item .item-header .item-equip,.l5r5e .item-list .item .item-header .technique-edit,.l5r5e .item-list .item .item-header .technique-delete,.l5r5e .item-list .item .item-header .peculiarity-edit,.l5r5e .item-list .item .item-header .peculiarity-delete,.l5r5e .item-list .item .item-header .property-edit,.l5r5e .item-list .item .item-header .property-delete{line-height:1rem;font-size:.75rem;flex:0 0 1rem;padding:0 .1rem;color:#000}.l5r5e .item-list .item .item-header .icon-stat-container{line-height:1rem;font-size:.75rem;padding:0 .25rem;color:#000}.l5r5e .item-list .item .item-header .item-edit:hover,.l5r5e .item-list .item .item-header .item-delete:hover,.l5r5e .item-list .item .item-header .item-equip:hover,.l5r5e .item-list .item .item-header .technique-edit:hover,.l5r5e .item-list .item .item-header .technique-delete:hover,.l5r5e .item-list .item .item-header .peculiarity-edit:hover,.l5r5e .item-list .item .item-header .peculiarity-delete:hover,.l5r5e .item-list .item .item-header .property-edit:hover,.l5r5e .item-list .item .item-header .property-delete:hover{text-shadow:0 0 3px red;color:#000}.l5r5e .item-list .item .item-properties{display:flex;flex-direction:row}.l5r5e .item-list .item .item-properties>li{margin:.25rem .1rem;padding:.1rem .5rem;background-color:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.65);border-radius:1rem;width:auto;font-size:.75rem;color:#000}.l5r5e .item-list .item .item-properties>li:first-child{margin-left:0}.l5r5e .item-list .item .item-properties>li:last-child{margin-right:0}.l5r5e .item-list .item .item-properties .equip-readied-control:hover{color:#963c41;background:#fff}.l5r5e .item-list .item p{font-size:.85rem;margin:0;padding:0 .5rem;max-width:100%}.l5r5e .item-list .item p:first-child{padding-top:.5rem}.l5r5e .item-list .item p:last-child{padding-bottom:.5rem}.l5r5e.advancement .sheet-header,.l5r5e.army-cohort .sheet-header,.l5r5e.army-fortification .sheet-header,.l5r5e.armor .sheet-header,.l5r5e.bond .sheet-header,.l5r5e.item .sheet-header,.l5r5e.item-pattern .sheet-header,.l5r5e.peculiarity .sheet-header,.l5r5e.property .sheet-header,.l5r5e.signature-scroll .sheet-header,.l5r5e.technique .sheet-header,.l5r5e.title .sheet-header,.l5r5e.weapon .sheet-header{margin-bottom:.5rem}.l5r5e.advancement .sheet-header img,.l5r5e.army-cohort .sheet-header img,.l5r5e.army-fortification .sheet-header img,.l5r5e.armor .sheet-header img,.l5r5e.bond .sheet-header img,.l5r5e.item .sheet-header img,.l5r5e.item-pattern .sheet-header img,.l5r5e.peculiarity .sheet-header img,.l5r5e.property .sheet-header img,.l5r5e.signature-scroll .sheet-header img,.l5r5e.technique .sheet-header img,.l5r5e.title .sheet-header img,.l5r5e.weapon .sheet-header img{flex:0 0 90px;height:90px;width:90px;background:rgba(255,255,255,.25)}.l5r5e.advancement .sheet-header h1 input,.l5r5e.army-cohort .sheet-header h1 input,.l5r5e.army-fortification .sheet-header h1 input,.l5r5e.armor .sheet-header h1 input,.l5r5e.bond .sheet-header h1 input,.l5r5e.item .sheet-header h1 input,.l5r5e.item-pattern .sheet-header h1 input,.l5r5e.peculiarity .sheet-header h1 input,.l5r5e.property .sheet-header h1 input,.l5r5e.signature-scroll .sheet-header h1 input,.l5r5e.technique .sheet-header h1 input,.l5r5e.title .sheet-header h1 input,.l5r5e.weapon .sheet-header h1 input{height:5.5rem}.l5r5e.advancement fieldset input[name="system.effects"],.l5r5e.army-cohort fieldset input[name="system.effects"],.l5r5e.army-fortification fieldset input[name="system.effects"],.l5r5e.armor fieldset input[name="system.effects"],.l5r5e.bond fieldset input[name="system.effects"],.l5r5e.item fieldset input[name="system.effects"],.l5r5e.item-pattern fieldset input[name="system.effects"],.l5r5e.peculiarity fieldset input[name="system.effects"],.l5r5e.property fieldset input[name="system.effects"],.l5r5e.signature-scroll fieldset input[name="system.effects"],.l5r5e.technique fieldset input[name="system.effects"],.l5r5e.title fieldset input[name="system.effects"],.l5r5e.weapon fieldset input[name="system.effects"]{text-align:left}.l5r5e.advancement .sheet-body,.l5r5e.army-cohort .sheet-body,.l5r5e.army-fortification .sheet-body,.l5r5e.armor .sheet-body,.l5r5e.bond .sheet-body,.l5r5e.item .sheet-body,.l5r5e.item-pattern .sheet-body,.l5r5e.peculiarity .sheet-body,.l5r5e.property .sheet-body,.l5r5e.signature-scroll .sheet-body,.l5r5e.technique .sheet-body,.l5r5e.title .sheet-body,.l5r5e.weapon .sheet-body{flex:100%;height:calc(100% - 90px - .25rem);align-self:stretch;display:flex;flex-wrap:wrap}.l5r5e.advancement article,.l5r5e.army-cohort article,.l5r5e.army-fortification article,.l5r5e.armor article,.l5r5e.bond article,.l5r5e.item article,.l5r5e.item-pattern article,.l5r5e.peculiarity article,.l5r5e.property article,.l5r5e.signature-scroll article,.l5r5e.technique article,.l5r5e.title article,.l5r5e.weapon article{display:flex;flex-wrap:wrap;min-height:auto}.l5r5e.advancement article label,.l5r5e.army-cohort article label,.l5r5e.army-fortification article label,.l5r5e.armor article label,.l5r5e.bond article label,.l5r5e.item article label,.l5r5e.item-pattern article label,.l5r5e.peculiarity article label,.l5r5e.property article label,.l5r5e.signature-scroll article label,.l5r5e.technique article label,.l5r5e.title article label,.l5r5e.weapon article label{color:#5a6e5a;margin:.25rem;line-height:1.5rem}.l5r5e.advancement article.attributes,.l5r5e.army-cohort article.attributes,.l5r5e.army-fortification article.attributes,.l5r5e.armor article.attributes,.l5r5e.bond article.attributes,.l5r5e.item article.attributes,.l5r5e.item-pattern article.attributes,.l5r5e.peculiarity article.attributes,.l5r5e.property article.attributes,.l5r5e.signature-scroll article.attributes,.l5r5e.technique article.attributes,.l5r5e.title article.attributes,.l5r5e.weapon article.attributes{align-self:flex-start;width:100%;height:6.5rem}.l5r5e.advancement article.attributes #advancement_type,.l5r5e.advancement article.attributes #advancement_skill,.l5r5e.army-cohort article.attributes #advancement_type,.l5r5e.army-cohort article.attributes #advancement_skill,.l5r5e.army-fortification article.attributes #advancement_type,.l5r5e.army-fortification article.attributes #advancement_skill,.l5r5e.armor article.attributes #advancement_type,.l5r5e.armor article.attributes #advancement_skill,.l5r5e.bond article.attributes #advancement_type,.l5r5e.bond article.attributes #advancement_skill,.l5r5e.item article.attributes #advancement_type,.l5r5e.item article.attributes #advancement_skill,.l5r5e.item-pattern article.attributes #advancement_type,.l5r5e.item-pattern article.attributes #advancement_skill,.l5r5e.peculiarity article.attributes #advancement_type,.l5r5e.peculiarity article.attributes #advancement_skill,.l5r5e.property article.attributes #advancement_type,.l5r5e.property article.attributes #advancement_skill,.l5r5e.signature-scroll article.attributes #advancement_type,.l5r5e.signature-scroll article.attributes #advancement_skill,.l5r5e.technique article.attributes #advancement_type,.l5r5e.technique article.attributes #advancement_skill,.l5r5e.title article.attributes #advancement_type,.l5r5e.title article.attributes #advancement_skill,.l5r5e.weapon article.attributes #advancement_type,.l5r5e.weapon article.attributes #advancement_skill{flex:0 0 calc(40% - 2rem);margin:.25rem}.l5r5e.advancement article.attributes select[name="system.skill"],.l5r5e.advancement article.attributes select[name="system.ring"],.l5r5e.advancement article.attributes select[name="system.peculiarity_type"],.l5r5e.advancement article.attributes select[name="system.technique_type"],.l5r5e.army-cohort article.attributes select[name="system.skill"],.l5r5e.army-cohort article.attributes select[name="system.ring"],.l5r5e.army-cohort article.attributes select[name="system.peculiarity_type"],.l5r5e.army-cohort article.attributes select[name="system.technique_type"],.l5r5e.army-fortification article.attributes select[name="system.skill"],.l5r5e.army-fortification article.attributes select[name="system.ring"],.l5r5e.army-fortification article.attributes select[name="system.peculiarity_type"],.l5r5e.army-fortification article.attributes select[name="system.technique_type"],.l5r5e.armor article.attributes select[name="system.skill"],.l5r5e.armor article.attributes select[name="system.ring"],.l5r5e.armor article.attributes select[name="system.peculiarity_type"],.l5r5e.armor article.attributes select[name="system.technique_type"],.l5r5e.bond article.attributes select[name="system.skill"],.l5r5e.bond article.attributes select[name="system.ring"],.l5r5e.bond article.attributes select[name="system.peculiarity_type"],.l5r5e.bond article.attributes select[name="system.technique_type"],.l5r5e.item article.attributes select[name="system.skill"],.l5r5e.item article.attributes select[name="system.ring"],.l5r5e.item article.attributes select[name="system.peculiarity_type"],.l5r5e.item article.attributes select[name="system.technique_type"],.l5r5e.item-pattern article.attributes select[name="system.skill"],.l5r5e.item-pattern article.attributes select[name="system.ring"],.l5r5e.item-pattern article.attributes select[name="system.peculiarity_type"],.l5r5e.item-pattern article.attributes select[name="system.technique_type"],.l5r5e.peculiarity article.attributes select[name="system.skill"],.l5r5e.peculiarity article.attributes select[name="system.ring"],.l5r5e.peculiarity article.attributes select[name="system.peculiarity_type"],.l5r5e.peculiarity article.attributes select[name="system.technique_type"],.l5r5e.property article.attributes select[name="system.skill"],.l5r5e.property article.attributes select[name="system.ring"],.l5r5e.property article.attributes select[name="system.peculiarity_type"],.l5r5e.property article.attributes select[name="system.technique_type"],.l5r5e.signature-scroll article.attributes select[name="system.skill"],.l5r5e.signature-scroll article.attributes select[name="system.ring"],.l5r5e.signature-scroll article.attributes select[name="system.peculiarity_type"],.l5r5e.signature-scroll article.attributes select[name="system.technique_type"],.l5r5e.technique article.attributes select[name="system.skill"],.l5r5e.technique article.attributes select[name="system.ring"],.l5r5e.technique article.attributes select[name="system.peculiarity_type"],.l5r5e.technique article.attributes select[name="system.technique_type"],.l5r5e.title article.attributes select[name="system.skill"],.l5r5e.title article.attributes select[name="system.ring"],.l5r5e.title article.attributes select[name="system.peculiarity_type"],.l5r5e.title article.attributes select[name="system.technique_type"],.l5r5e.weapon article.attributes select[name="system.skill"],.l5r5e.weapon article.attributes select[name="system.ring"],.l5r5e.weapon article.attributes select[name="system.peculiarity_type"],.l5r5e.weapon article.attributes select[name="system.technique_type"]{flex:0 0 calc(40% - .5rem);margin:.25rem}.l5r5e.advancement article.attributes .attribute-value,.l5r5e.advancement article.attributes .attribute,.l5r5e.advancement article.attributes .value,.l5r5e.army-cohort article.attributes .attribute-value,.l5r5e.army-cohort article.attributes .attribute,.l5r5e.army-cohort article.attributes .value,.l5r5e.army-fortification article.attributes .attribute-value,.l5r5e.army-fortification article.attributes .attribute,.l5r5e.army-fortification article.attributes .value,.l5r5e.armor article.attributes .attribute-value,.l5r5e.armor article.attributes .attribute,.l5r5e.armor article.attributes .value,.l5r5e.bond article.attributes .attribute-value,.l5r5e.bond article.attributes .attribute,.l5r5e.bond article.attributes .value,.l5r5e.item article.attributes .attribute-value,.l5r5e.item article.attributes .attribute,.l5r5e.item article.attributes .value,.l5r5e.item-pattern article.attributes .attribute-value,.l5r5e.item-pattern article.attributes .attribute,.l5r5e.item-pattern article.attributes .value,.l5r5e.peculiarity article.attributes .attribute-value,.l5r5e.peculiarity article.attributes .attribute,.l5r5e.peculiarity article.attributes .value,.l5r5e.property article.attributes .attribute-value,.l5r5e.property article.attributes .attribute,.l5r5e.property article.attributes .value,.l5r5e.signature-scroll article.attributes .attribute-value,.l5r5e.signature-scroll article.attributes .attribute,.l5r5e.signature-scroll article.attributes .value,.l5r5e.technique article.attributes .attribute-value,.l5r5e.technique article.attributes .attribute,.l5r5e.technique article.attributes .value,.l5r5e.title article.attributes .attribute-value,.l5r5e.title article.attributes .attribute,.l5r5e.title article.attributes .value,.l5r5e.weapon article.attributes .attribute-value,.l5r5e.weapon article.attributes .attribute,.l5r5e.weapon article.attributes .value{flex:1 1 auto;margin:.5rem .25rem .25rem}.l5r5e.advancement article.attributes select[name="system.advancement_type"],.l5r5e.advancement article.attributes select[name="system.skill"],.l5r5e.army-cohort article.attributes select[name="system.advancement_type"],.l5r5e.army-cohort article.attributes select[name="system.skill"],.l5r5e.army-fortification article.attributes select[name="system.advancement_type"],.l5r5e.army-fortification article.attributes select[name="system.skill"],.l5r5e.armor article.attributes select[name="system.advancement_type"],.l5r5e.armor article.attributes select[name="system.skill"],.l5r5e.bond article.attributes select[name="system.advancement_type"],.l5r5e.bond article.attributes select[name="system.skill"],.l5r5e.item article.attributes select[name="system.advancement_type"],.l5r5e.item article.attributes select[name="system.skill"],.l5r5e.item-pattern article.attributes select[name="system.advancement_type"],.l5r5e.item-pattern article.attributes select[name="system.skill"],.l5r5e.peculiarity article.attributes select[name="system.advancement_type"],.l5r5e.peculiarity article.attributes select[name="system.skill"],.l5r5e.property article.attributes select[name="system.advancement_type"],.l5r5e.property article.attributes select[name="system.skill"],.l5r5e.signature-scroll article.attributes select[name="system.advancement_type"],.l5r5e.signature-scroll article.attributes select[name="system.skill"],.l5r5e.technique article.attributes select[name="system.advancement_type"],.l5r5e.technique article.attributes select[name="system.skill"],.l5r5e.title article.attributes select[name="system.advancement_type"],.l5r5e.title article.attributes select[name="system.skill"],.l5r5e.weapon article.attributes select[name="system.advancement_type"],.l5r5e.weapon article.attributes select[name="system.skill"]{text-transform:capitalize}.l5r5e.advancement article.attributes .type,.l5r5e.army-cohort article.attributes .type,.l5r5e.army-fortification article.attributes .type,.l5r5e.armor article.attributes .type,.l5r5e.bond article.attributes .type,.l5r5e.item article.attributes .type,.l5r5e.item-pattern article.attributes .type,.l5r5e.peculiarity article.attributes .type,.l5r5e.property article.attributes .type,.l5r5e.signature-scroll article.attributes .type,.l5r5e.technique article.attributes .type,.l5r5e.title article.attributes .type,.l5r5e.weapon article.attributes .type{display:block}.l5r5e.advancement article.attributes .type label,.l5r5e.army-cohort article.attributes .type label,.l5r5e.army-fortification article.attributes .type label,.l5r5e.armor article.attributes .type label,.l5r5e.bond article.attributes .type label,.l5r5e.item article.attributes .type label,.l5r5e.item-pattern article.attributes .type label,.l5r5e.peculiarity article.attributes .type label,.l5r5e.property article.attributes .type label,.l5r5e.signature-scroll article.attributes .type label,.l5r5e.technique article.attributes .type label,.l5r5e.title article.attributes .type label,.l5r5e.weapon article.attributes .type label{width:calc(50% - .5rem);float:left}.l5r5e.advancement article.attributes .properties,.l5r5e.army-cohort article.attributes .properties,.l5r5e.army-fortification article.attributes .properties,.l5r5e.armor article.attributes .properties,.l5r5e.bond article.attributes .properties,.l5r5e.item article.attributes .properties,.l5r5e.item-pattern article.attributes .properties,.l5r5e.peculiarity article.attributes .properties,.l5r5e.property article.attributes .properties,.l5r5e.signature-scroll article.attributes .properties,.l5r5e.technique article.attributes .properties,.l5r5e.title article.attributes .properties,.l5r5e.weapon article.attributes .properties{flex:0 0 calc(50% - .5rem);margin:.25rem}.l5r5e.advancement article.attributes .equipped,.l5r5e.army-cohort article.attributes .equipped,.l5r5e.army-fortification article.attributes .equipped,.l5r5e.armor article.attributes .equipped,.l5r5e.bond article.attributes .equipped,.l5r5e.item article.attributes .equipped,.l5r5e.item-pattern article.attributes .equipped,.l5r5e.peculiarity article.attributes .equipped,.l5r5e.property article.attributes .equipped,.l5r5e.signature-scroll article.attributes .equipped,.l5r5e.technique article.attributes .equipped,.l5r5e.title article.attributes .equipped,.l5r5e.weapon article.attributes .equipped{flex:100%;margin:0;text-align:right}.l5r5e.advancement article.attributes input[type=text],.l5r5e.advancement article.attributes input[type=number],.l5r5e.army-cohort article.attributes input[type=text],.l5r5e.army-cohort article.attributes input[type=number],.l5r5e.army-fortification article.attributes input[type=text],.l5r5e.army-fortification article.attributes input[type=number],.l5r5e.armor article.attributes input[type=text],.l5r5e.armor article.attributes input[type=number],.l5r5e.bond article.attributes input[type=text],.l5r5e.bond article.attributes input[type=number],.l5r5e.item article.attributes input[type=text],.l5r5e.item article.attributes input[type=number],.l5r5e.item-pattern article.attributes input[type=text],.l5r5e.item-pattern article.attributes input[type=number],.l5r5e.peculiarity article.attributes input[type=text],.l5r5e.peculiarity article.attributes input[type=number],.l5r5e.property article.attributes input[type=text],.l5r5e.property article.attributes input[type=number],.l5r5e.signature-scroll article.attributes input[type=text],.l5r5e.signature-scroll article.attributes input[type=number],.l5r5e.technique article.attributes input[type=text],.l5r5e.technique article.attributes input[type=number],.l5r5e.title article.attributes input[type=text],.l5r5e.title article.attributes input[type=number],.l5r5e.weapon article.attributes input[type=text],.l5r5e.weapon article.attributes input[type=number]{width:2rem}.l5r5e.advancement article.attributes input[type=text].grip,.l5r5e.advancement article.attributes input[type=number].grip,.l5r5e.army-cohort article.attributes input[type=text].grip,.l5r5e.army-cohort article.attributes input[type=number].grip,.l5r5e.army-fortification article.attributes input[type=text].grip,.l5r5e.army-fortification article.attributes input[type=number].grip,.l5r5e.armor article.attributes input[type=text].grip,.l5r5e.armor article.attributes input[type=number].grip,.l5r5e.bond article.attributes input[type=text].grip,.l5r5e.bond article.attributes input[type=number].grip,.l5r5e.item article.attributes input[type=text].grip,.l5r5e.item article.attributes input[type=number].grip,.l5r5e.item-pattern article.attributes input[type=text].grip,.l5r5e.item-pattern article.attributes input[type=number].grip,.l5r5e.peculiarity article.attributes input[type=text].grip,.l5r5e.peculiarity article.attributes input[type=number].grip,.l5r5e.property article.attributes input[type=text].grip,.l5r5e.property article.attributes input[type=number].grip,.l5r5e.signature-scroll article.attributes input[type=text].grip,.l5r5e.signature-scroll article.attributes input[type=number].grip,.l5r5e.technique article.attributes input[type=text].grip,.l5r5e.technique article.attributes input[type=number].grip,.l5r5e.title article.attributes input[type=text].grip,.l5r5e.title article.attributes input[type=number].grip,.l5r5e.weapon article.attributes input[type=text].grip,.l5r5e.weapon article.attributes input[type=number].grip{width:calc(100% - 4rem);margin-bottom:.25rem}.l5r5e.advancement article.attributes input[name="system.zeni"],.l5r5e.army-cohort article.attributes input[name="system.zeni"],.l5r5e.army-fortification article.attributes input[name="system.zeni"],.l5r5e.armor article.attributes input[name="system.zeni"],.l5r5e.bond article.attributes input[name="system.zeni"],.l5r5e.item article.attributes input[name="system.zeni"],.l5r5e.item-pattern article.attributes input[name="system.zeni"],.l5r5e.peculiarity article.attributes input[name="system.zeni"],.l5r5e.property article.attributes input[name="system.zeni"],.l5r5e.signature-scroll article.attributes input[name="system.zeni"],.l5r5e.technique article.attributes input[name="system.zeni"],.l5r5e.title article.attributes input[name="system.zeni"],.l5r5e.weapon article.attributes input[name="system.zeni"]{width:7rem;float:right}.l5r5e.advancement article.attributes fieldset input[type=text],.l5r5e.advancement article.attributes fieldset input[type=number],.l5r5e.army-cohort article.attributes fieldset input[type=text],.l5r5e.army-cohort article.attributes fieldset input[type=number],.l5r5e.army-fortification article.attributes fieldset input[type=text],.l5r5e.army-fortification article.attributes fieldset input[type=number],.l5r5e.armor article.attributes fieldset input[type=text],.l5r5e.armor article.attributes fieldset input[type=number],.l5r5e.bond article.attributes fieldset input[type=text],.l5r5e.bond article.attributes fieldset input[type=number],.l5r5e.item article.attributes fieldset input[type=text],.l5r5e.item article.attributes fieldset input[type=number],.l5r5e.item-pattern article.attributes fieldset input[type=text],.l5r5e.item-pattern article.attributes fieldset input[type=number],.l5r5e.peculiarity article.attributes fieldset input[type=text],.l5r5e.peculiarity article.attributes fieldset input[type=number],.l5r5e.property article.attributes fieldset input[type=text],.l5r5e.property article.attributes fieldset input[type=number],.l5r5e.signature-scroll article.attributes fieldset input[type=text],.l5r5e.signature-scroll article.attributes fieldset input[type=number],.l5r5e.technique article.attributes fieldset input[type=text],.l5r5e.technique article.attributes fieldset input[type=number],.l5r5e.title article.attributes fieldset input[type=text],.l5r5e.title article.attributes fieldset input[type=number],.l5r5e.weapon article.attributes fieldset input[type=text],.l5r5e.weapon article.attributes fieldset input[type=number]{float:right}.l5r5e.advancement article.attributes .attribute.full,.l5r5e.army-cohort article.attributes .attribute.full,.l5r5e.army-fortification article.attributes .attribute.full,.l5r5e.armor article.attributes .attribute.full,.l5r5e.bond article.attributes .attribute.full,.l5r5e.item article.attributes .attribute.full,.l5r5e.item-pattern article.attributes .attribute.full,.l5r5e.peculiarity article.attributes .attribute.full,.l5r5e.property article.attributes .attribute.full,.l5r5e.signature-scroll article.attributes .attribute.full,.l5r5e.technique article.attributes .attribute.full,.l5r5e.title article.attributes .attribute.full,.l5r5e.weapon article.attributes .attribute.full{flex:100%}.l5r5e.advancement article.attributes .attribute.full input,.l5r5e.army-cohort article.attributes .attribute.full input,.l5r5e.army-fortification article.attributes .attribute.full input,.l5r5e.armor article.attributes .attribute.full input,.l5r5e.bond article.attributes .attribute.full input,.l5r5e.item article.attributes .attribute.full input,.l5r5e.item-pattern article.attributes .attribute.full input,.l5r5e.peculiarity article.attributes .attribute.full input,.l5r5e.property article.attributes .attribute.full input,.l5r5e.signature-scroll article.attributes .attribute.full input,.l5r5e.technique article.attributes .attribute.full input,.l5r5e.title article.attributes .attribute.full input,.l5r5e.weapon article.attributes .attribute.full input{float:right;width:70%}.l5r5e.advancement article.attributes .bonds-types,.l5r5e.army-cohort article.attributes .bonds-types,.l5r5e.army-fortification article.attributes .bonds-types,.l5r5e.armor article.attributes .bonds-types,.l5r5e.bond article.attributes .bonds-types,.l5r5e.item article.attributes .bonds-types,.l5r5e.item-pattern article.attributes .bonds-types,.l5r5e.peculiarity article.attributes .bonds-types,.l5r5e.property article.attributes .bonds-types,.l5r5e.signature-scroll article.attributes .bonds-types,.l5r5e.technique article.attributes .bonds-types,.l5r5e.title article.attributes .bonds-types,.l5r5e.weapon article.attributes .bonds-types{flex:100%}.l5r5e.advancement article.attributes .bonds-types input,.l5r5e.army-cohort article.attributes .bonds-types input,.l5r5e.army-fortification article.attributes .bonds-types input,.l5r5e.armor article.attributes .bonds-types input,.l5r5e.bond article.attributes .bonds-types input,.l5r5e.item article.attributes .bonds-types input,.l5r5e.item-pattern article.attributes .bonds-types input,.l5r5e.peculiarity article.attributes .bonds-types input,.l5r5e.property article.attributes .bonds-types input,.l5r5e.signature-scroll article.attributes .bonds-types input,.l5r5e.technique article.attributes .bonds-types input,.l5r5e.title article.attributes .bonds-types input,.l5r5e.weapon article.attributes .bonds-types input{width:75%;float:right}.l5r5e.advancement article.infos,.l5r5e.army-cohort article.infos,.l5r5e.army-fortification article.infos,.l5r5e.armor article.infos,.l5r5e.bond article.infos,.l5r5e.item article.infos,.l5r5e.item-pattern article.infos,.l5r5e.peculiarity article.infos,.l5r5e.property article.infos,.l5r5e.signature-scroll article.infos,.l5r5e.technique article.infos,.l5r5e.title article.infos,.l5r5e.weapon article.infos{display:flex;align-self:stretch;height:calc(100% - 7.5rem);width:100%;padding-bottom:1.25rem}.l5r5e.advancement article.infos .reference,.l5r5e.army-cohort article.infos .reference,.l5r5e.army-fortification article.infos .reference,.l5r5e.armor article.infos .reference,.l5r5e.bond article.infos .reference,.l5r5e.item article.infos .reference,.l5r5e.item-pattern article.infos .reference,.l5r5e.peculiarity article.infos .reference,.l5r5e.property article.infos .reference,.l5r5e.signature-scroll article.infos .reference,.l5r5e.technique article.infos .reference,.l5r5e.title article.infos .reference,.l5r5e.weapon article.infos .reference{display:flex;flex:0 0 calc(100% - .5rem);margin:.5rem .25rem}.l5r5e.advancement article.infos .reference input[name="system.source_reference.source"],.l5r5e.army-cohort article.infos .reference input[name="system.source_reference.source"],.l5r5e.army-fortification article.infos .reference input[name="system.source_reference.source"],.l5r5e.armor article.infos .reference input[name="system.source_reference.source"],.l5r5e.bond article.infos .reference input[name="system.source_reference.source"],.l5r5e.item article.infos .reference input[name="system.source_reference.source"],.l5r5e.item-pattern article.infos .reference input[name="system.source_reference.source"],.l5r5e.peculiarity article.infos .reference input[name="system.source_reference.source"],.l5r5e.property article.infos .reference input[name="system.source_reference.source"],.l5r5e.signature-scroll article.infos .reference input[name="system.source_reference.source"],.l5r5e.technique article.infos .reference input[name="system.source_reference.source"],.l5r5e.title article.infos .reference input[name="system.source_reference.source"],.l5r5e.weapon article.infos .reference input[name="system.source_reference.source"]{text-align:center;width:70%}.l5r5e.advancement article.infos .reference input[name="system.source_reference.page"],.l5r5e.army-cohort article.infos .reference input[name="system.source_reference.page"],.l5r5e.army-fortification article.infos .reference input[name="system.source_reference.page"],.l5r5e.armor article.infos .reference input[name="system.source_reference.page"],.l5r5e.bond article.infos .reference input[name="system.source_reference.page"],.l5r5e.item article.infos .reference input[name="system.source_reference.page"],.l5r5e.item-pattern article.infos .reference input[name="system.source_reference.page"],.l5r5e.peculiarity article.infos .reference input[name="system.source_reference.page"],.l5r5e.property article.infos .reference input[name="system.source_reference.page"],.l5r5e.signature-scroll article.infos .reference input[name="system.source_reference.page"],.l5r5e.technique article.infos .reference input[name="system.source_reference.page"],.l5r5e.title article.infos .reference input[name="system.source_reference.page"],.l5r5e.weapon article.infos .reference input[name="system.source_reference.page"]{width:30%}.l5r5e.advancement article.infos fieldset,.l5r5e.army-cohort article.infos fieldset,.l5r5e.army-fortification article.infos fieldset,.l5r5e.armor article.infos fieldset,.l5r5e.bond article.infos fieldset,.l5r5e.item article.infos fieldset,.l5r5e.item-pattern article.infos fieldset,.l5r5e.peculiarity article.infos fieldset,.l5r5e.property article.infos fieldset,.l5r5e.signature-scroll article.infos fieldset,.l5r5e.technique article.infos fieldset,.l5r5e.title article.infos fieldset,.l5r5e.weapon article.infos fieldset{align-self:stretch;height:calc(100% - 2rem);box-sizing:content-box}.l5r5e.advancement article.properties fieldset,.l5r5e.army-cohort article.properties fieldset,.l5r5e.army-fortification article.properties fieldset,.l5r5e.armor article.properties fieldset,.l5r5e.bond article.properties fieldset,.l5r5e.item article.properties fieldset,.l5r5e.item-pattern article.properties fieldset,.l5r5e.peculiarity article.properties fieldset,.l5r5e.property article.properties fieldset,.l5r5e.signature-scroll article.properties fieldset,.l5r5e.technique article.properties fieldset,.l5r5e.title article.properties fieldset,.l5r5e.weapon article.properties fieldset{margin-bottom:.5rem}.l5r5e.advancement article.attributes .attribute-value,.l5r5e.advancement article.attributes .attribute,.l5r5e.advancement article.attributes .value{flex:0 0 calc(33% - .5rem)}.l5r5e.advancement article.attributes .cursus{flex:0 0 calc(19% - .5rem);line-height:.75rem;text-align:right;margin:0 .25rem}.l5r5e.advancement article.attributes .cursus input{margin-top:.25rem}.l5r5e.technique article.attributes{height:7.5rem}.l5r5e.technique article.attributes input[type=text]{width:10rem}.l5r5e.technique article.attributes .cursus{flex:0 0 calc(20% - .5rem);line-height:.75rem;text-align:right;margin:0 .25rem}.l5r5e.technique article.attributes .cursus input{margin-top:.25rem}.l5r5e.technique article.infos{height:calc(100% - 8.5rem)}.l5r5e.peculiarity article.attributes{height:8.5rem}.l5r5e.peculiarity article.attributes .cursus{flex:0 0 calc(20% - .5rem);line-height:.75rem;text-align:right;margin:0 .25rem}.l5r5e.peculiarity article.attributes .cursus input{margin-top:.25rem}.l5r5e.peculiarity article.infos{height:calc(100% - 9.5rem)}.l5r5e.item article.attributes{height:4.5rem}.l5r5e.item article.attributes .properties{flex:100%}.l5r5e.item article.infos{flex:0 0 60%;height:calc(100% - 5.5rem)}.l5r5e.item article.properties{flex:0 0 40%;height:calc(100% - 5.5rem)}.l5r5e.property article.properties{width:100%}.l5r5e.property article.infos{height:calc(100% - 4.5rem)}.l5r5e.armor article.attributes{height:9.5rem}.l5r5e.armor article.infos{flex:0 0 60%;height:calc(100% - 10.5rem)}.l5r5e.armor article.properties{flex:0 0 40%;height:calc(100% - 10.5rem)}.l5r5e.weapon article.attributes{height:18.5rem}.l5r5e.weapon article.attributes .stats,.l5r5e.weapon article.attributes .attribute-value{flex:0 0 calc(50% - .5rem);flex-wrap:wrap;margin:.25rem}.l5r5e.weapon article.attributes .stats label,.l5r5e.weapon article.attributes .attribute-value label{width:100%}.l5r5e.weapon article.attributes .stats input[type=text]{text-align:center}.l5r5e.weapon article.attributes .value{flex:0 0 calc(25% - .5rem)}.l5r5e.weapon article.attributes .category,.l5r5e.weapon article.attributes .skillType{flex:0 0 calc(50% - .5rem)}.l5r5e.weapon article.attributes .category input,.l5r5e.weapon article.attributes .category .attribute-dtype,.l5r5e.weapon article.attributes .skillType input,.l5r5e.weapon article.attributes .skillType .attribute-dtype{width:100%;margin:.25rem}.l5r5e.weapon article.infos{flex:0 0 60%;height:calc(100% - 19.5rem)}.l5r5e.weapon article.properties{flex:0 0 40%;height:calc(100% - 19.5rem)}.l5r5e.item-pattern .attribute.item{display:inline}.l5r5e.item-pattern .attribute.item .item-properties{display:inline}.l5r5e.item-pattern .attribute.item .item-properties li{display:inline}.l5r5e.title .sheet-body{height:calc(100% - 90px - 4.25rem)}.l5r5e.title article.infos{height:calc(100% - 3.5rem)}.l5r5e.title article.attributes{height:auto;background:rgba(0,0,0,0)}.l5r5e.title article.experience{flex:100%;height:calc(100% - 4rem)}.l5r5e.army-cohort .sheet-body{height:calc(100% - 92px - 3.6rem)}.l5r5e.army-cohort article .fa-sign-in-alt{transform:rotate(90deg)}.l5r5e.army-cohort article.attributes{height:7rem}.l5r5e.army-cohort article.attributes input[type=text]{width:100%}.l5r5e.army-cohort article.attributes .actor-remove-control{font-size:12px}.l5r5e.army-cohort article.attributes .flx50{flex:0 0 calc(50% - .5rem)}.l5r5e.army-cohort article.attributes .flx100{flex:0 0 calc(100% - .5rem)}.l5r5e.army-cohort article.attributes .editor-container{min-height:8rem;max-height:14rem}.l5r5e.army-cohort article.abilities{align-self:stretch;height:calc(100% - 8rem);width:100%;box-sizing:content-box}.l5r5e.army-fortification .sheet-body{height:calc(100% - 92px)}.l5r5e.army-fortification article.infos{height:calc(100% - 4.5rem)}.l5r5e.army-fortification article.attributes{height:3.5rem}.l5r5e .item-list>li .item-description{flex:unset;height:0;margin:0;padding:0;font-size:.75rem;color:rgba(0,0,0,.75);overflow:hidden;background:rgba(0,0,0,.05);border:0 none;transition:height .25s ease-in}.l5r5e .item-list>li div.item-description{padding:0}.l5r5e .item-list>li div.item-description:hover,.l5r5e .item-list>li div.item-description:active{padding:0}.l5r5e .item-list>li:hover .item-description,.l5r5e .item-list>li:active .item-description{height:6rem;overflow-y:auto;scrollbar-width:thin;border:1px solid rgba(186,187,177,.5)}.l5r5e .item-list>li:hover p .item-description,.l5r5e .item-list>li:active p .item-description{padding:.25rem}.l5r5e .item-list .stance-content .item-description{display:none;height:auto}.l5r5e .item-list .stance-content .stance-active{display:block;height:auto;border:0 none}.l5r5e .item-list .stance-content:hover .item-description{height:auto;border:0 none}.l5r5e .item-list .stance-content:hover .stance-active{display:block}.l5r5e.twenty-questions-dialog .sheet-tabs{position:fixed;flex-direction:column;background:url("../assets/imgs/bg-20nav.webp") no-repeat;background-size:cover;width:4rem;height:41.58rem;margin:1%;line-height:3rem;padding:.25rem;border-bottom:0 none}.l5r5e.twenty-questions-dialog .errors{position:sticky;top:1rem;left:1rem;z-index:999;width:calc(100% - 1rem);background-color:#963c41;border:1px solid rgba(25,0,0,.75);color:#fff;border-radius:1rem;text-align:center;line-height:2rem}.l5r5e.twenty-questions-dialog h3{font-size:1.25rem;color:#5a6e5a;text-shadow:0 0 rgba(0,0,0,.25);margin:2rem 0 .5rem 1rem}.l5r5e.twenty-questions-dialog nav .item{color:#000;font-size:2rem;font-weight:bold;background-color:rgba(255,255,255,.25)}.l5r5e.twenty-questions-dialog nav .item.active,.l5r5e.twenty-questions-dialog nav .item:hover{color:#fff;background-color:rgba(73,12,11,.85);--notchSize: 0.5rem;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)));clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)))}.l5r5e.twenty-questions-dialog nav .item:hover{background-color:#5a6e5a}.l5r5e.twenty-questions-dialog article{padding:2% 2% 2% 18%}.l5r5e.twenty-questions-dialog article label.full{display:block;width:100%;text-align:right;font-size:1rem}.l5r5e.twenty-questions-dialog article label.full input{display:inline;width:80%;float:right;text-align:left;margin-left:.5rem}.l5r5e.twenty-questions-dialog article>label{font-size:1rem;padding:0 0 0 1rem;line-height:2rem}.l5r5e.twenty-questions-dialog article>label>*{line-height:1rem}.l5r5e.twenty-questions-dialog article table{width:100%;text-align:center}.l5r5e.twenty-questions-dialog article table tr th{color:#5a6e5a;font-weight:normal}.l5r5e.twenty-questions-dialog article table tr td{vertical-align:top;line-height:2rem;border:1px solid rgba(186,187,177,.5);font-size:.85rem;padding:.25rem}.l5r5e.twenty-questions-dialog article table tr td>*{line-height:1rem}.l5r5e.twenty-questions-dialog article table tr td>ul li{line-height:2rem}.l5r5e.twenty-questions-dialog article table tr td>ul li>*{line-height:1rem}.l5r5e.twenty-questions-dialog article table tr td.done{border:1px solid #699678;box-shadow:0 1px 5px #699678}.l5r5e.twenty-questions-dialog article select{height:2rem;color:#764f40;background:rgba(255,255,255,.25);border:1px solid rgba(255,255,255,.5);border-radius:.25rem;padding:0 .25rem;margin:.25rem;width:calc(100% - .5rem)}.l5r5e.twenty-questions-dialog article textarea{color:#764f40;background:rgba(255,255,255,.25);border:1px solid rgba(255,255,255,.5);margin:0 .25rem 1rem}.l5r5e.twenty-questions-dialog article hr{border-top:1px solid rgba(0,0,0,.25)}.l5r5e.twenty-questions-dialog article a.entity-link,.l5r5e.twenty-questions-dialog article a.inline-roll{color:#5a6e5a;background:rgba(255,255,255,.25);border:1px solid rgba(0,0,0,.25)}.l5r5e.twenty-questions-dialog article a.entity-link i,.l5r5e.twenty-questions-dialog article a.inline-roll i{color:#5a6e5a}.l5r5e.twenty-questions-dialog article .tq-drag-n-drop{border:0 none;padding:0}.l5r5e.twenty-questions-dialog article .third{width:230px}.l5r5e.twenty-questions-dialog article .fifty{width:49%}.l5r5e.twenty-questions-dialog article .or{width:100px}.l5r5e.twenty-questions-dialog article .dropbox{min-height:75px}.l5r5e.twenty-questions-dialog article .checklist{margin:.25rem .25rem 1rem}.l5r5e.twenty-questions-dialog article .checklist strong{display:block;width:100%;color:#764f40}.l5r5e.twenty-questions-dialog article .checklist label{font-size:.85rem;flex:0 0 auto;margin:0 .25rem .25rem;padding:0 .5rem;color:#5a6e5a;background:rgba(255,255,255,.5);border:1px solid #5a6e5a;border-radius:1rem}.l5r5e.twenty-questions-dialog article .checklist label.technique{padding:.25rem;margin:.25rem;border-radius:0;display:inline-block}.l5r5e.twenty-questions-dialog article .checklist input{margin:.25rem 0 0 0;height:.65rem;width:.65rem}.l5r5e.twenty-questions-dialog article #generchar_disclaimer{color:#963c41;font-weight:bold;font-size:1.25rem;text-align:center;flex:100%;padding:1rem 0}.l5r5e.twenty-questions-dialog article .next{margin:2rem 0 4rem}.l5r5e.twenty-questions-dialog article .autocomplete-wrapper{width:calc(100% - 2px)}#measurement .waypoint-label-additional{color:var(--color-text-emphatic);font-size:var(--font-size-24)}#tactical-grid-settings input[type=number]:invalid{background-color:red}#tactical-grid-settings input[type=number]:-moz-read-only{border:none;outline:none;box-shadow:none;background:rgba(0,0,0,0);cursor:default;pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none}#tactical-grid-settings input[type=number]:read-only{border:none;outline:none;box-shadow:none;background:rgba(0,0,0,0);cursor:default;pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none}#tactical-grid-settings .range_band{display:flex;flex-flow:wrap}#tactical-grid-settings .range_band fieldset{flex:25%}}
\ No newline at end of file
+@layer system{body>*{scrollbar-width:thin}body:not(.background){background:url("../assets/imgs/bg-table.webp") no-repeat;background-size:cover}.toggle-hidden{display:none !important}.window-app .window-content{z-index:1;position:relative;background-size:cover;scrollbar-width:thin;padding:0}.window-app .window-content>form,.window-app .window-content>div{padding:.5rem}.window-app .window-content .compendium,.window-app .window-content .help-dialog{background-position:top;background-size:100%;background:url("../assets/ui/bgSidebar.webp") no-repeat;border:1px solid #c3a582;border-radius:0;color:#fff}.window-app .window-content .compendium ol,.window-app .window-content .help-dialog ol{padding-right:.25rem}.window-app .window-content .compendium ol li,.window-app .window-content .help-dialog ol li{border-bottom:1px solid rgba(255,255,255,.25)}.window-app .window-content .compendium .directory-header,.window-app .window-content .help-dialog .directory-header{padding:.25rem 0}.window-app .window-content .help-dialog{padding:.5rem 1.5rem}.window-app .window-content .help-dialog button{cursor:default;color:#fff;background:linear-gradient(rgb(95, 40, 65), rgb(65, 25, 40), rgb(95, 40, 65));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.5rem;border-image-outset:0px}.window-app .window-content .help-dialog button:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}.window-app .window-content .compendium .item{position:relative}.window-app .window-content .compendium .item i{float:right;line-height:1rem;text-align:right;font-size:.75rem;color:rgba(240,240,225,.75);font-style:italic;flex:0 0 auto;position:absolute;right:0;text-shadow:0 0 0 rgba(255,255,255,.1)}.window-app .window-content .compendium .item i:before{margin:0 .25rem 0 0;font-style:normal}.window-app.sheet .window-content,.window-app.npc .window-content,.window-app.advancement .window-content,.window-app.armor .window-content,.window-app.item .window-content,.window-app.peculiarity .window-content,.window-app.property .window-content,.window-app.technique .window-content,.window-app.weapon .window-content,.window-app.twenty-questions-dialog .window-content{overflow-y:scroll}.window-app .window-resizable-handle{z-index:2;background:#000}.window-app.twenty-questions-dialog .window-content{background:#fffae6 url("../assets/imgs/bg-scroll.webp") no-repeat;background-size:cover}#l5r5e-twenty-questions-dialog{min-height:800px;min-width:600px}input[type=text]:focus,input[type=number]:focus,input[type=password]:focus,input[type=date]:focus,input[type=time]:focus{box-shadow:0 0 6px red}.tabs .item.active{text-shadow:0 0 10px red}#controls .scene-control.active,#controls .control-tool.active,#controls .scene-control:hover,#controls .control-tool:hover{box-shadow:0 0 10px red}#sidebar #settings button,#sidebar .sidebar-tab .action-buttons button{height:2rem;line-height:initial}button:hover{box-shadow:0 0 10px red}button:focus{box-shadow:0 0 10px red}.item-list>li{padding:.25rem;border:1px solid rgba(0,0,0,.05);border-bottom:0 none}.item-list>li:nth-child(odd){background:rgba(186,187,177,.2)}.item-list>li:nth-child(even){background:rgba(186,187,177,.1)}.item-list>li:last-child{border-bottom:1px solid rgba(0,0,0,.05)}fieldset{flex:1;flex-wrap:wrap;display:flex;margin:0 .25rem;padding:.5rem;border:1px solid rgba(186,187,177,.5)}fieldset legend{color:#5a6e5a}fieldset .editor{height:100%}.editor,.editor-container{flex:1;height:100%}table{background:rgba(0,0,0,0);border:1px solid rgba(186,187,177,.5)}table thead{background:rgba(186,187,177,.5);color:#5a6e5a;text-shadow:none;border-bottom:rgba(186,187,177,.5)}table tr:nth-child(odd){background:rgba(186,187,177,.2)}table tr:nth-child(even){background:rgba(186,187,177,.1)}sub,sup{color:rgba(0,0,0,.5)}.sheet nav.sheet-tabs{font-size:.75rem}.editor-container ul,.item-description ul{margin:.5rem 0}.editor-container ul li,.item-description ul li{list-style-type:initial;margin:.5rem 0 .5rem 1.5rem;padding:0}.prepared-character{color:#699678}.prepared-adversary{color:#9b7350}.prepared-minion{color:#5f919b}.prepared-icon{font-weight:900;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1;width:1.5rem}.prepared-icon-true:before{content:""}.prepared-icon-false:before{content:""}.prepared-icon-actor:before{content:""}a.compendium-link{background:#ddd;padding:1px 4px;border:1px solid #4b4a44;border-radius:2px;white-space:nowrap;word-break:break-all}#playlists .sound-control i.fas.fa-random,#playlists .sound-control i.far.fa-arrow-alt-circle-right,#playlists .sound-control i.fas.fa-compress-arrows-alt,#playlists .sound-control i.fas.fa-ban{color:#ff6400}#playlists .sound-control i.fas.fa-square{color:#d00}#playlists .sound-control i.fas.fa-play,#playlists .sound-control i.fas.fa-play-circle{color:#0d0}#playlists .sound-control i.fas.fa-pause,#playlists .sound-control i.fas.fa-backward,#playlists .sound-control i.fas.fa-forward{color:#0096ff}.window-draggable-handle{z-index:20 !important}#forien-quest-log .window-content,#forien-quest-log-form .window-content,.window-app.forien-quest-preview .window-content{overflow:initial}#OneJournalShell:first-child>.window-header,#OneJournalShell.maximized>.window-header{z-index:20}@font-face{font-family:"LogotypeL5r";src:url("../fonts/LogotypeL5r.ttf") format("truetype")}@font-face{font-family:"BrushtipTexe";src:url("../fonts/BrushtipTexe.ttf") format("truetype")}@font-face{font-family:"PatrickHand";src:url("../fonts/PatrickHand.ttf") format("truetype")}@font-face{font-family:"Caballar";src:url("../fonts/Caballar.ttf") format("truetype")}@font-face{font-family:"ArchitectsDaughter";src:url("../fonts/ArchitectsDaughter.ttf") format("truetype")}body{font:16px "PatrickHand",sans-serif;letter-spacing:.05rem}h1,h4{font-family:"BrushtipTexe",sans-serif}h1{font-size:2rem}h2{font-size:1.5rem}h3{font-size:1.25rem}h4{font-size:1.25rem}i.i_strife,i.i_success,i.i_explosive,i.i_opportunity,i.i_earth,i.i_water,i.i_fire,i.i_air,i.i_void,i.i_kiho,i.i_maho,i.i_ninjitsu,i.i_prerequisite_exemption,i.i_rituals,i.i_shuji,i.i_invocations,i.i_kata,i.i_inversion,i.i_mantra,i.i_imperial,i.i_ronin,i.i_crab,i.i_crane,i.i_dragon,i.i_lion,i.i_mantis,i.i_phoenix,i.i_scorpion,i.i_tortoise,i.i_unicorn,i.i_bushi,i.i_courtier,i.i_shugenja,i.i_ring,i.i_skill{font-family:"LogotypeL5r",sans-serif;line-height:1rem;font-size:1.25rem;font-style:normal;font-weight:normal;vertical-align:middle;text-shadow:0 0 0 rgba(0,0,0,.5)}i.i_strife:before{content:"";color:#cd0000}i.i_success:before{content:"";color:#cd0000}i.i_explosive:before{content:"";color:#cd0000}i.i_opportunity:before{content:"";color:#cd0000}i.i_earth:before{content:"";color:#699678}i.i_air:before{content:"";color:#917896}i.i_water:before{content:"";color:#5f919b}i.i_fire:before{content:"";color:#9b7350}i.i_void:before{content:"";color:#4b4641}i.i_invocations:before{content:"";color:#ff6400}i.i_kata:before{content:"";color:red}i.i_kiho:before{content:"";color:#009632}i.i_maho:before{content:"";color:#c83200}i.i_ninjitsu:before{content:"";color:#343434}i.i_prerequisite_exemption:before{content:"";color:#343434}i.i_rituals:before{content:"";color:#0096ff}i.i_shuji:before{content:"";color:#00ff96}i.i_inversion:before{content:"";color:#4b4641}i.i_mantra:before{content:"";color:#fa0}i.i_crab:before{content:"";color:#82828c}i.i_crane:before{content:"";color:#789191}i.i_dragon:before{content:"";color:#55826e}i.i_lion:before{content:"";color:#a08c50}i.i_mantis:before{content:"";color:#2d551e}i.i_phoenix:before{content:"";color:#91784b}i.i_scorpion:before{content:"";color:#9b463c}i.i_tortoise:before{content:"";color:#b4c82d}i.i_unicorn:before{content:"";color:#785a87}i.i_imperial:before{content:"";color:#78ffb4}i.i_ronin:before{content:"";color:#612001}i.i_bushi:before{content:"";color:#a55a5a}i.i_courtier:before{content:"";color:#6982a5}i.i_shugenja:before{content:"";color:#5aa582}i.i_ring{content:"";background:rgba(0,0,0,0) url("../assets/dices/default/ring_blank.svg") no-repeat 0 center;background-size:1rem;display:inline-block;height:1rem;width:1rem}i.i_skill{content:"";background:rgba(0,0,0,0) url("../assets/dices/default/skill_blank.svg") no-repeat 0 0;background-size:1rem;display:inline-block;height:1rem;width:1rem}.compendium .item i{font-family:"PatrickHand",sans-serif}.compendium .item i:before{font-family:"LogotypeL5r",sans-serif}body,#navigation #scene-list .scene.view,#navigation #scene-list .scene.context,#navigation #nav-toggle,#navigation #scene-list .scene.nav-item,#controls .scene-control.active,#controls .control-tool.active,#controls .scene-control:hover,#controls .control-tool:hover,#client-settings .window-content form .form-group>label,#client-settings .window-content form .form-group select,#client-settings .form-group input,.app.window-app .form-group label,#sidebar .sidebar-tab #chat-controls div.roll-type-select select,#sidebar .sidebar-tab #chat-controls div.roll-type-select i.fas{cursor:url("../assets/cursors/normal.webp"),default !important}a,#logo,#hotbar .macro,#playlists-popout .global-volume::-webkit-slider-thumb,#sidebar #playlists .global-volume::-webkit-slider-thumb,#playlists-popout li.playlist:not(:first-of-type) li.sound .sound-volume::-webkit-slider-thumb,#sidebar #playlists li.playlist:not(:first-of-type) li.sound .sound-volume::-webkit-slider-thumb,#sidebar #settings button,.app.window-app.sheet.wfrp4e.actor.character-sheet .tab.main.active .main-row .movement.row-section .move-value .auto-calc-toggle,.app.window-app.sheet.wfrp4e.actor.npc-sheet .main-row .movement.row-section .move-value .auto-calc-toggle,.app.window-app.sheet.wfrp4e.actor.creature-sheet .main-row .movement.row-section .move-value .auto-calc-toggle,.app.window-app .form-group input[type=range]::-webkit-slider-thumb,.token-sheet .tab[data-tab=image] input[type=range]::-webkit-slider-thumb,#drawing-config .tab[data-tab=image] input[type=range]::-webkit-slider-thumb,.metacurrency-value,.overcast-button,.chargen-button,#controls .scene-control,#controls .control-tool,#effects-config .flex2::-webkit-slider-thumb,#client-settings section.content .submenu>button,#client-settings .window-content button label,form .form-group .form-fields button,.sidebar-tab .action-buttons button,.dialog .dialog-buttons button,.item-edit,.item-delete,.item-equip,.item-curriculum,.technique-edit,.technique-delete,.peculiarity-edit,.peculiarity-delete,.attribute-dtype,.equip-readied-control,form button,label{cursor:url("../assets/cursors/pointer.webp"),pointer !important}.draggable{cursor:url("../assets/cursors/drag.webp"),move !important}body.theme-light{--l5r5e-restricted-opacity: 0.35;--l5r5e-restricted-filter: grayscale(1) brightness(1.1);--l5r5e-dropdown-bg: #f4efe6;--l5r5e-dropdown-color: var(--color-dark-2, #222);--l5r5e-dropdown-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);--l5r5e-dropdown-group-color: var(--color-dark-4, #444);--l5r5e-dropdown-group-bg: rgba(0, 0, 0, 0.05);--l5r5e-dropdown-option-color: var(--color-dark-2, #222);--l5r5e-dropdown-no-results-color: var(--color-dark-4, #444);--l5r5e-chip-border-color: var(--color-light-5, #9f8475);--l5r5e-chip-bg: rgba(93, 20, 43, 0.08);--l5r5e-chip-color: var(--color-dark-2, #222);--l5r5e-filter-selected-opacity: 0.45;--l5r5e-filter-selected-tint: invert(0.15) sepia(1) saturate(6) hue-rotate(295deg) brightness(0.7)}body.theme-dark{--l5r5e-restricted-opacity: 0.6;--l5r5e-restricted-filter: grayscale(0.3);--l5r5e-dropdown-bg: var(--color-cool-4, #302831);--l5r5e-dropdown-color: var(--color-light-2, #efe6d8);--l5r5e-dropdown-shadow: 0 4px 12px rgba(0, 0, 0, 0.6);--l5r5e-dropdown-group-color: var(--color-light-5, #9f8475);--l5r5e-dropdown-group-bg: rgba(255, 255, 255, 0.05);--l5r5e-dropdown-option-color: var(--color-light-2, #efe6d8);--l5r5e-dropdown-no-results-color: var(--color-light-5, #9f8475);--l5r5e-chip-border-color: var(--color-light-5, #9f8475);--l5r5e-chip-bg: rgba(93, 20, 43, 0.12);--l5r5e-chip-color: var(--color-light-2, #efe6d8);--l5r5e-filter-selected-opacity: 0.6;--l5r5e-filter-selected-tint: invert(1) sepia(1) saturate(4) hue-rotate(5deg)}.application.theme-light,.themed.theme-light{--l5r5e-restricted-opacity: 0.35;--l5r5e-restricted-filter: grayscale(1) brightness(1.1);--l5r5e-dropdown-bg: #f4efe6;--l5r5e-dropdown-color: var(--color-dark-2, #222);--l5r5e-dropdown-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);--l5r5e-dropdown-group-color: var(--color-dark-4, #444);--l5r5e-dropdown-group-bg: rgba(0, 0, 0, 0.05);--l5r5e-dropdown-option-color: var(--color-dark-2, #222);--l5r5e-dropdown-no-results-color: var(--color-dark-4, #444);--l5r5e-chip-border-color: var(--color-light-5, #9f8475);--l5r5e-chip-bg: rgba(93, 20, 43, 0.08);--l5r5e-chip-color: var(--color-dark-2, #222);--l5r5e-filter-selected-opacity: 0.45;--l5r5e-filter-selected-tint: invert(0.15) sepia(1) saturate(6) hue-rotate(295deg) brightness(0.7)}.application.theme-dark,.themed.theme-dark{--l5r5e-restricted-opacity: 0.6;--l5r5e-restricted-filter: grayscale(0.3);--l5r5e-dropdown-bg: var(--color-cool-4, #302831);--l5r5e-dropdown-color: var(--color-light-2, #efe6d8);--l5r5e-dropdown-shadow: 0 4px 12px rgba(0, 0, 0, 0.6);--l5r5e-dropdown-group-color: var(--color-light-5, #9f8475);--l5r5e-dropdown-group-bg: rgba(255, 255, 255, 0.05);--l5r5e-dropdown-option-color: var(--color-light-2, #efe6d8);--l5r5e-dropdown-no-results-color: var(--color-light-5, #9f8475);--l5r5e-chip-border-color: var(--color-light-5, #9f8475);--l5r5e-chip-bg: rgba(93, 20, 43, 0.12);--l5r5e-chip-color: var(--color-light-2, #efe6d8);--l5r5e-filter-selected-opacity: 0.6;--l5r5e-filter-selected-tint: invert(1) sepia(1) saturate(4) hue-rotate(5deg)}button{font-size:.75rem;cursor:url("../assets/cursors/pointer.webp"),pointer}.pointer{cursor:url("../assets/cursors/pointer.webp"),pointer}#game-details .system{overflow:auto;border-bottom:1px solid var(--color-border-light-highlight)}#game-details .system .system-title{white-space:break-spaces}.chat-message ul,.chat-message li{list-style:none;margin:unset;padding:unset}#logo{content:url("../assets/l5r-logo.webp");height:80px;width:88px;margin-left:.5rem;opacity:.8}#navigation{left:120px}#navigation #nav-toggle,#navigation #scene-list .scene.nav-item{cursor:default;color:#fff;background:linear-gradient(rgba(10, 0, 20, 0.75), rgba(0, 0, 10, 0.75), rgba(10, 0, 20, 0.75));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.25rem;border-image-outset:0px}#navigation #nav-toggle:hover,#navigation #scene-list .scene.nav-item:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}#navigation #scene-list .scene.nav-item.active{background:linear-gradient(rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75))}#navigation #scene-list .scene.nav-item.active:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}#navigation #scene-list .scene.view,#navigation #scene-list .scene.context{cursor:default;color:#fff;background:linear-gradient(rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.25rem;border-image-outset:0px;box-shadow:0 0 20px red}#navigation #scene-list .scene.view:hover,#navigation #scene-list .scene.context:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}#controls{top:100px}#controls ol .scene-control.active,#controls ol .control-tool.active,#controls ol .scene-control:hover,#controls ol .control-tool:hover{background:linear-gradient(rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.25rem;border-image-outset:0px;box-shadow:0 0 10px red}#controls ol .scene-control.active:hover,#controls ol .control-tool.active:hover,#controls ol .scene-control:hover:hover,#controls ol .control-tool:hover:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}#controls ol .scene-control,#controls ol .control-tool{color:#fff;background:linear-gradient(rgba(10, 0, 20, 0.75), rgba(0, 0, 10, 0.75), rgba(10, 0, 20, 0.75));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.25rem;border-image-outset:0px}#controls ol .scene-control:hover,#controls ol .control-tool:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}#playlists .playlist .playlist-header h4{font:.75rem "PatrickHand",sans-serif;text-transform:uppercase;text-align:right}#combat .combat-tracker-header .encounters h3,#combat-popout .combat-tracker-header .encounters h3{font-size:.85rem}#combat .combat-tracker-header .encounters ul,#combat-popout .combat-tracker-header .encounters ul{display:flex;color:rgba(255,255,255,.5)}#combat .combat-tracker-header .encounters ul.encounter,#combat-popout .combat-tracker-header .encounters ul.encounter{border-right:1px solid rgba(255,255,255,.25)}#combat .combat-tracker-header .encounters ul li,#combat-popout .combat-tracker-header .encounters ul li{cursor:url("../assets/cursors/pointer.webp"),pointer}#combat .combat-tracker-header .encounters .prepared,#combat-popout .combat-tracker-header .encounters .prepared{justify-content:space-evenly}#combat .combat-tracker-header .encounters .encounter,#combat-popout .combat-tracker-header .encounters .encounter{justify-content:space-between}#combat .combat-tracker-header .encounters .encounter i,#combat-popout .combat-tracker-header .encounters .encounter i{font-size:23px;vertical-align:middle}#combat .combat-tracker-header .encounters .encounter i:hover,#combat-popout .combat-tracker-header .encounters .encounter i:hover{text-shadow:0 0 8px red}#combat .combat-tracker-header .encounters .encounter .active,#combat-popout .combat-tracker-header .encounters .encounter .active{color:#c83200}#combat .combat-tracker-header .encounters .encounter .active:hover,#combat-popout .combat-tracker-header .encounters .encounter .active:hover{text-shadow:none}#combat .combat-tracker-header .encounters .encounter-icon,#combat-popout .combat-tracker-header .encounters .encounter-icon{font-weight:900;-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:inline-block;font-style:normal;font-variant:normal;text-rendering:auto;line-height:1}#combat .combat-tracker-header .encounters .encounter-icon-intrigue:before,#combat-popout .combat-tracker-header .encounters .encounter-icon-intrigue:before{content:""}#combat .combat-tracker-header .encounters .encounter-icon-duel:before,#combat-popout .combat-tracker-header .encounters .encounter-icon-duel:before{content:""}#combat .combat-tracker-header .encounters .encounter-icon-skirmish:before,#combat-popout .combat-tracker-header .encounters .encounter-icon-skirmish:before{content:""}#combat .combat-tracker-header .encounters .encounter-icon-mass_battle:before,#combat-popout .combat-tracker-header .encounters .encounter-icon-mass_battle:before{content:""}#pause img{content:url("../assets/icons/pause.svg")}.compendium-directory{min-width:350px}.compendium-directory .directory-item .ring-rarity-rank{display:flex;align-items:center;justify-content:end;padding-right:1rem;font-size:.75rem;white-space:nowrap}.compendium-directory .directory-item .ring-rarity-rank i[class^=i_]{margin-right:.25rem}.compendium-directory .not-for-players{opacity:var(--l5r5e-restricted-opacity);filter:var(--l5r5e-restricted-filter)}.compendium-directory [data-application-part=filter] .filter-bar{display:flex;flex-direction:column;gap:.25rem;padding:.5rem}.compendium-directory [data-application-part=filter] .flexrow{position:relative;display:flex;align-items:center;gap:.35rem;margin:.35rem .5rem;padding-right:1.5rem}.compendium-directory [data-application-part=filter] .flexrow.source-filter{padding-right:0}.compendium-directory [data-application-part=filter] .flexrow label{flex-shrink:0;width:3.5rem;font-size:.8rem;line-height:1;margin-right:.25rem}.compendium-directory [data-application-part=filter] .number-filter{flex-wrap:nowrap}.compendium-directory [data-application-part=filter] .number-filter a,.compendium-directory [data-application-part=filter] .rank-filter a,.compendium-directory [data-application-part=filter] .rarity-filter a,.compendium-directory [data-application-part=filter] .ring-filter i{display:inline-flex;align-items:center;justify-content:center;min-width:1.5rem;padding:.1rem .3rem;cursor:pointer;text-align:center;border-radius:3px;font-size:1.2rem;line-height:1;-webkit-user-select:none;-moz-user-select:none;user-select:none;position:relative;z-index:1}.compendium-directory [data-application-part=filter] .rank-filter a.selected::before,.compendium-directory [data-application-part=filter] .rarity-filter a.selected::before,.compendium-directory [data-application-part=filter] .ring-filter i.selected::after{content:"";position:absolute;inset:0;background:url("../assets/icons/circle.svg") center/contain no-repeat;opacity:var(--l5r5e-filter-selected-opacity);filter:var(--l5r5e-filter-selected-tint);pointer-events:none;z-index:-1}.compendium-directory [data-application-part=filter] .ring-filter i.selected::after{inset:-4px}.compendium-directory [data-application-part=filter] a[data-clear]{position:absolute;display:inline-flex;align-items:center;justify-content:center;right:.25rem;top:50%;transform:translateY(-50%);margin:0;min-width:unset;opacity:.5;cursor:pointer;font-size:.85rem;line-height:1;-webkit-user-select:none;-moz-user-select:none;user-select:none;padding:.1rem .3rem}.compendium-directory [data-application-part=filter] a[data-clear]:hover{opacity:1}.compendium-directory [data-application-part=filter] .source-filter l5r5e-multi-select{width:100%}.compendium-directory button.gm.applyPlayerFilter{margin-left:.5rem;margin-bottom:.3rem}.l5r5e-tooltip{cursor:url("../assets/cursors/pointer.webp"),pointer}.l5r5e-tooltip .l5r5e-tooltip-ct,.l5r5e-tooltip.l5r5e-tooltip-ct{visibility:hidden;min-height:-moz-fit-content;min-height:fit-content;width:600px;height:auto;max-height:100%;background:#3e3a30 url("../assets/imgs/bg-l5r.webp") no-repeat;color:#000;font-size:.8rem;text-align:left;border:0 none;border-radius:0;padding:.5rem .75rem;display:block;position:absolute;z-index:9999}.l5r5e-tooltip .l5r5e-tooltip-ct *,.l5r5e-tooltip.l5r5e-tooltip-ct *{color:#000}.l5r5e-tooltip .l5r5e-tooltip-ct section>ul,.l5r5e-tooltip.l5r5e-tooltip-ct section>ul{display:flex;flex-flow:row wrap;padding:.25rem 0 .25rem 1rem}.l5r5e-tooltip .l5r5e-tooltip-ct section>ul li,.l5r5e-tooltip.l5r5e-tooltip-ct section>ul li{flex:50%;padding:0;padding-right:1rem;margin:0;list-style-type:square}.l5r5e-tooltip .l5r5e-tooltip-ct:before,.l5r5e-tooltip.l5r5e-tooltip-ct:before{z-index:-2;content:"";position:absolute;height:calc(100% + .6rem);width:calc(100% - .65rem);border:1px solid #c3a582;border-radius:0;top:-0.35rem;left:.25rem;background:#3e3a30 url("../assets/imgs/bg-l5r.webp") no-repeat}.l5r5e-tooltip .l5r5e-tooltip-ct:after,.l5r5e-tooltip.l5r5e-tooltip-ct:after{z-index:-1;content:"";position:absolute;height:100%;width:100%;border:1px solid #c3a582;border-radius:0;top:-1px;left:-1px}.l5r5e-tooltip .l5r5e-tooltip-ct .goodvalue,.l5r5e-tooltip.l5r5e-tooltip-ct .goodvalue{color:#4e8c69}.l5r5e-tooltip .l5r5e-tooltip-ct .badvalue,.l5r5e-tooltip.l5r5e-tooltip-ct .badvalue{color:#ab2a00}.l5r5e-tooltip .l5r5e-tooltip-ct .reference,.l5r5e-tooltip.l5r5e-tooltip-ct .reference{display:flex}.l5r5e-tooltip .l5r5e-tooltip-ct .reference .page,.l5r5e-tooltip.l5r5e-tooltip-ct .reference .page{margin-left:1ch}.l5r5e-tooltip .card-header img{display:inline-block;background:rgba(0,0,0,0);border:0 none;width:20px;margin:0;padding:0}.l5r5e-chat-item{color:#000;font-size:.8rem}.l5r5e-chat-item *{color:#000}.l5r5e-chat-item h2{font-size:1.1rem}.l5r5e-chat-item section>ul{display:flex;flex-flow:row wrap;padding:.25rem 0 .25rem 1rem}.l5r5e-chat-item section>ul li{flex:100%;padding:1px !important;margin:0;border:0 none !important;list-style-type:square}.l5r5e-chat-item .card-header img{display:inline-block;background:rgba(0,0,0,0);border:0 none;width:20px;margin:0;padding:0}.l5r5e-chat-item .reference{display:flex;flex-wrap:nowrap}.l5r5e-chat-item .page{margin-left:1ch}#l5r5e-gm-monitor{min-height:170px;min-width:240px}#l5r5e-gm-monitor .window-content [data-application-part=hidden_tabs]{display:none}#l5r5e-gm-monitor .window-content table{margin:0;overflow:auto}#l5r5e-gm-monitor .window-content form{padding:0 .5rem}#l5r5e-gm-monitor .window-content thead tr>th{background:rgba(0,0,0,.9);color:rgba(207,207,207,.7803921569);position:sticky;z-index:2;top:0}#l5r5e-gm-monitor .window-content thead tr>th i.i_void:before{color:rgba(207,207,207,.8)}#l5r5e-gm-monitor .window-content th,#l5r5e-gm-monitor .window-content td{border:1px solid rgba(90,110,90,.3137254902);padding:.25em}#l5r5e-gm-monitor .window-content img{border:none;min-width:24px;min-height:24px;max-width:32px;max-height:32px}#l5r5e-gm-monitor .window-content .goodvalue{color:#4e8c69}#l5r5e-gm-monitor .window-content .badvalue{color:#ab2a00}#l5r5e-gm-monitor .window-draggable-handle{display:none}#l5r5e-gm-toolbox{display:flex;background:linear-gradient(rgba(10, 0, 20, 0.75), rgba(0, 0, 10, 0.75), rgba(10, 0, 20, 0.75));border:1px solid #c3a582;margin:.5rem}#l5r5e-gm-toolbox .window-header{border-bottom:1px solid #c3a582;background:none}#l5r5e-gm-toolbox .window-header .window-title{text-align:center}#l5r5e-gm-toolbox .window-header h1{letter-spacing:.25rem;line-height:2.25rem;color:rgba(255,255,255,.65);padding-top:1ch}#l5r5e-gm-toolbox .window-content{padding:0}#l5r5e-gm-toolbox .window-content .gm-tools-container{color:var(--color-text-primary);display:flex;font-size:2rem;line-height:2rem;min-height:2rem;margin:0;padding:0}#l5r5e-gm-toolbox .window-content .gm-tools-container li{flex:1;display:flex;margin:0;padding:0;border-right:1px solid #c3a582;cursor:url("../assets/cursors/pointer.webp"),pointer}#l5r5e-gm-toolbox .window-content .gm-tools-container li:last-child{margin:0;border:0 none}#l5r5e-gm-toolbox .window-content .gm-tools-container li :hover{text-shadow:0 0 red}#l5r5e-gm-toolbox .window-content .gm-tools-container .difficulty_hidden .fa{width:3rem}#l5r5e-gm-toolbox .window-content .gm-tools-container .difficulty_hidden .difficulty{flex:1rem;width:2rem;font-size:2rem;text-align:center;margin:0;padding:.5rem}#l5r5e-gm-toolbox .window-content .gm-tools-container .fa{padding:.5rem}#l5r5e-gm-toolbox .window-content .gm-tools-container .fa-bed,#l5r5e-gm-toolbox .window-content .gm-tools-container .fa-star-half-alt,#l5r5e-gm-toolbox .window-content .gm-tools-container .fa-table,#l5r5e-gm-toolbox .window-content .gm-tools-container .fa-podcast{width:100%;padding:.5rem}#l5r5e-gm-toolbox .window-draggable-handle{display:none}form#settings-config div.form-group:has(l5r5e-multi-select) .form-fields{order:3}form#settings-config div.form-group:has(#settings-config-l5r5e\.compendium-unofficial-content-for-players) .form-fields{order:3}form#settings-config div.form-group:has(#settings-config-l5r5e\.compendium-unofficial-content-for-players) .form-fields .tags{order:1}l5r5e-combo-box{display:block;flex:1;min-width:0;width:100%}l5r5e-combo-box li{flex:none !important;margin:0 !important;padding:0 !important}l5r5e-combo-box input{margin:0 !important;flex:none !important;height:auto !important}l5r5e-combo-box .wrapper{display:block;position:relative;width:100%}l5r5e-combo-box .input{width:100%;background:rgba(0,0,0,0);border:none;border-bottom:1px solid #6e7e6b;font-family:inherit;font-size:inherit;color:inherit;padding:2px 4px}l5r5e-combo-box .input:focus{outline:none;border-bottom-color:darkred}l5r5e-combo-box .input:disabled{opacity:.45;cursor:not-allowed}l5r5e-combo-box .dropdown{text-shadow:none;color:#333;position:absolute;top:100%;left:0;right:0;z-index:100;max-height:200px;overflow-y:auto;background:#f4efe6;border:1px solid #6e7e6b;box-shadow:2px 4px 8px rgba(0,0,0,.3);margin:0;padding:0;list-style:none;text-align:center;font-size:var(--font-size-16);font-family:"PatrickHand",sans-serif}l5r5e-combo-box .option{display:block;margin:0;flex:none;padding:4px 8px;cursor:pointer;font-size:.85em;color:#333;text-transform:uppercase;letter-spacing:.05em;border-bottom:1px solid rgba(110,126,107,.3)}l5r5e-combo-box .option:hover,l5r5e-combo-box .option.active{background:darkred;color:#f4efe6}l5r5e-combo-box .option:last-child,l5r5e-combo-box .group:last-child{border-bottom:none}l5r5e-combo-box .group{padding:4px 8px 2px;font-size:.7em;font-weight:bold;color:#6e7e6b;text-transform:uppercase;letter-spacing:.08em;background:rgba(110,126,107,.15);cursor:default}l5r5e-combo-box .no-results{padding:6px 8px;color:#999;font-style:italic;font-size:.85em}l5r5e-multi-select,l5r5e-combo-box{display:block;position:relative}l5r5e-combo-box .wrapper{position:relative;display:block;padding:.375rem .625rem;border-width:1px;border-style:solid;border-color:var(--color-border, #6e7e6b);border-radius:4px;transition:border-color .15s ease,box-shadow .15s ease}l5r5e-combo-box .wrapper:focus-within{border-color:var(--color-warm-3, #5d142b);box-shadow:0 0 0 2px rgba(93,20,43,.2)}l5r5e-combo-box .wrapper.disabled{opacity:.45;pointer-events:none}l5r5e-combo-box input.input{display:block;width:100%;padding:0;border:none;background:rgba(0,0,0,0);outline:none;font-size:inherit;line-height:1.4;min-width:4ch}l5r5e-multi-select .multi-select-container{position:relative}l5r5e-multi-select .selection-box{position:relative;display:flex;flex-wrap:wrap;align-items:center;gap:.25rem;padding:.3125rem .5rem;min-height:2.25rem;border:1px solid var(--color-border, #6e7e6b);border-radius:4px;cursor:text;transition:border-color .15s ease,box-shadow .15s ease}l5r5e-multi-select .selection-box:focus-within{border-color:var(--color-warm-3, #5d142b);box-shadow:0 0 0 2px rgba(93,20,43,.2)}l5r5e-multi-select .selection-box.disabled{opacity:.45;pointer-events:none;cursor:default}l5r5e-multi-select .selection-box.disabled .input-sizer{display:none}l5r5e-multi-select .chip-list{display:contents}l5r5e-multi-select .chip{display:inline-flex;align-items:center;gap:.1875rem;padding:.0625rem .3125rem;border:1px solid var(--l5r5e-chip-border-color);border-radius:3px;background:var(--l5r5e-chip-bg);color:var(--l5r5e-chip-color);font-size:.8em;line-height:1.4;white-space:nowrap;-webkit-user-select:none;-moz-user-select:none;user-select:none}l5r5e-multi-select .chip-remove{display:inline-flex;align-items:center;justify-content:center;padding:0 .0625rem;cursor:pointer;color:var(--color-light-5, #9f8475)}l5r5e-multi-select .chip-remove:hover{color:var(--color-warm-2, #c9593f)}l5r5e-multi-select .input-sizer{display:inline-grid;flex:1 1 auto;min-width:4ch;max-width:100%}l5r5e-multi-select .input-sizer::after{content:attr(data-value) " ";grid-area:1/1;visibility:hidden;white-space:pre;font:inherit;line-height:1.4;pointer-events:none}l5r5e-multi-select .input-sizer input.input{grid-area:1/1;width:100%;min-width:0;padding:.125rem 0;border:none;background:rgba(0,0,0,0);outline:none;font:inherit;line-height:1.4}l5r5e-multi-select .clear-btn{display:inline-flex;align-items:center;justify-content:center;margin-left:auto;flex-shrink:0;white-space:nowrap;padding:0 .125rem;border:none;background:none;font-size:1.1em;cursor:pointer;color:var(--color-light-5, #9f8475)}l5r5e-multi-select .clear-btn:hover{color:var(--color-warm-2, #c9593f)}l5r5e-multi-select .dropdown,l5r5e-combo-box .dropdown{position:absolute;top:calc(100% + .25rem);left:0;right:0;z-index:100;max-height:14rem;overflow-y:auto;overflow-x:hidden;list-style:none;margin:0;padding:.25rem 0;border-width:1px;border-style:solid;border-radius:4px;background:var(--l5r5e-dropdown-bg);border-color:var(--color-border, #6e7e6b);box-shadow:var(--l5r5e-dropdown-shadow);color:var(--l5r5e-dropdown-color)}l5r5e-multi-select .dropdown li.group,l5r5e-combo-box .dropdown li.group{padding:.375rem .75rem .125rem;font-size:.7em;font-weight:600;text-transform:uppercase;letter-spacing:.06em;cursor:default;-webkit-user-select:none;-moz-user-select:none;user-select:none;color:var(--l5r5e-dropdown-group-color);background:var(--l5r5e-dropdown-group-bg)}l5r5e-multi-select .dropdown li.option,l5r5e-combo-box .dropdown li.option{display:flex;align-items:center;gap:.5rem;padding:.375rem .75rem;font-size:.875em;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;color:var(--l5r5e-dropdown-option-color)}l5r5e-multi-select .dropdown li.option:hover,l5r5e-multi-select .dropdown li.option.active,l5r5e-combo-box .dropdown li.option:hover,l5r5e-combo-box .dropdown li.option.active{background:var(--color-warm-3, #5d142b);color:var(--color-light-1, #f7f3e8)}l5r5e-multi-select .dropdown li.option.selected,l5r5e-combo-box .dropdown li.option.selected{background:rgba(93,20,43,.25)}l5r5e-multi-select .dropdown li.option.disabled,l5r5e-combo-box .dropdown li.option.disabled{cursor:default;pointer-events:none;opacity:.45}l5r5e-multi-select .dropdown li.option .checkmark,l5r5e-combo-box .dropdown li.option .checkmark{flex-shrink:0;width:.875rem;text-align:center;font-size:.85em;color:var(--color-warm-1, #ee9b3a)}l5r5e-multi-select .dropdown li.option .label,l5r5e-combo-box .dropdown li.option .label{flex:1;overflow:hidden;text-overflow:ellipsis;white-space:nowrap}l5r5e-multi-select .dropdown li.no-results,l5r5e-combo-box .dropdown li.no-results{padding:.5rem .75rem;font-size:.875em;font-style:italic;-webkit-user-select:none;-moz-user-select:none;user-select:none;color:var(--l5r5e-dropdown-no-results-color)}.application{color:var(--color-text-primary)}.application .scrollable{--scroll-margin: 0}.application .window-header{background:linear-gradient(rgba(10, 0, 20, 0.75), rgba(0, 0, 10, 0.75), rgba(10, 0, 20, 0.75))}.application .window-header .window-title{font-family:"BrushtipTexe",sans-serif;font-size:1.25rem}.application .window-content{padding:.25rem}.application .window-content table{background:rgba(0,0,0,0);border:1px solid rgba(186,187,177,.5)}.application .window-content table thead{background:rgba(186,187,177,.5);color:#5a6e5a;text-shadow:none;border-bottom:rgba(186,187,177,.5)}.application .window-content table tr:nth-child(odd){background:rgba(186,187,177,.2)}.application .window-content table tr:nth-child(even){background:rgba(186,187,177,.1)}#sidebar-tabs button.l5r5e{position:relative;display:flex;justify-content:center;align-items:center}#sidebar-tabs button.l5r5e.chatIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/chat.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/chat.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.combatIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/combat-tracker.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/combat-tracker.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.sceneIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/scenes.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/scenes.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.actorIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/actors.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/actors.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.itemIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/object.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/object.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.journalIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/journal.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/journal.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.rolltableIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/rolltable.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/rolltable.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.playlistIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/playlist.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/playlist.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.compendiumIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/compendium.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/compendium.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.settingsIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/settings.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/settings.svg") no-repeat center/contain;z-index:0}#sidebar-tabs button.l5r5e.icon-plus::after{z-index:2}#sidebar-content .create-button.l5r5e{position:relative;display:flex;justify-content:center;align-items:center;filter:drop-shadow(0 0 3px var(--color-dark-1))}#sidebar-content .create-button.l5r5e.chatIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/chat.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/chat.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.combatIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/combat-tracker.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/combat-tracker.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.sceneIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/scenes.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/scenes.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.actorIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/actors.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/actors.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.itemIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/object.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/object.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.journalIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/journal.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/journal.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.rolltableIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/rolltable.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/rolltable.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.playlistIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/playlist.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/playlist.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.compendiumIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/compendium.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/compendium.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.settingsIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/settings.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/settings.svg") no-repeat center/contain;z-index:0}#sidebar-content .create-button.l5r5e.icon-plus::after{z-index:2}#sidebar-content i.l5r5e{position:relative;display:flex;justify-content:center;align-items:center;width:2em;height:2em;color:currentColor}#sidebar-content i.l5r5e.chatIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/chat.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/chat.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.combatIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/combat-tracker.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/combat-tracker.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.sceneIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/scenes.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/scenes.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.actorIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/actors.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/actors.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.itemIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/object.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/object.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.journalIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/journal.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/journal.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.rolltableIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/rolltable.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/rolltable.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.playlistIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/playlist.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/playlist.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.compendiumIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/compendium.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/compendium.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.settingsIcon::before{content:"";position:absolute;width:95%;height:95%;background-color:currentColor;mask:url("../assets/ui/sidebar/settings.svg") no-repeat center/contain;-webkit-mask:url("../assets/ui/sidebar/settings.svg") no-repeat center/contain;z-index:0}#sidebar-content i.l5r5e.icon-plus::after{z-index:2}#sidebar-tabs>menu{gap:4px}#sidebar-content.expanded{background:url("../assets/ui/bgSidebar.webp") no-repeat;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-style:solid;border-image-width:.5rem;border-image-outset:0px;margin-top:2px;margin-right:2px;height:calc(100% - 10px)}#sidebar-content.expanded .sidebar-tab,#sidebar-content.expanded .tab{margin:3px;border-radius:5px}#sidebar-content.expanded #chat{margin:unset;padding-right:4px}#sidebar-content.expanded #chat .chat-scroll{direction:unset;scrollbar-color:var(--color-light-4) var(--color-dark-3);scrollbar-width:thin}#hotbar #action-bar .slot{-o-border-image:url("../assets/ui/macro-button.webp");border-image:url("../assets/ui/macro-button.webp");border-image-slice:8 fill;border-image-width:.25rem}#menu.active{transition:max-height 150ms ease-in}#menu{transition:max-height 10ms ease-out}.l5r5e .dice-picker{cursor:url("../assets/cursors/pointer.webp"),pointer}.l5r5e .dice-picker-dialog{width:35rem;min-height:auto}.l5r5e .dice-picker-dialog .effects{clear:both;display:flex;flex-wrap:wrap;justify-content:center;gap:2px 4px}.l5r5e .dice-picker-dialog .effects .effect-container{border:1px solid #5a6e5a;border-radius:4px;background-color:rgba(0,0,0,.4);padding:3px;display:flex}.l5r5e .dice-picker-dialog .effects .effect-delete{width:16px;height:16px;background-repeat:no-repeat;background-size:contain;text-align:end;cursor:url("../assets/cursors/pointer.webp"),pointer}.l5r5e .dice-picker-dialog .effects .effect-icon{width:16px;height:16px;background-repeat:no-repeat;background-size:contain}.l5r5e .dice-picker-dialog .effects .effect-name{vertical-align:top;white-space:nowrap;color:#fff;margin-left:4px;font-size:14px;line-height:16px}.l5r5e .dice-picker-dialog *{transition:none}.l5r5e .dice-picker-dialog input[type=text]:focus,.l5r5e .dice-picker-dialog input[type=text]:hover{box-shadow:none !important;border:none !important;text-shadow:none !important}.l5r5e .dice-picker-dialog select{text-align:center;width:134px;direction:rtl;-webkit-appearance:none;-moz-appearance:none;appearance:none}.l5r5e .dice-picker-dialog option{font-size:.8rem}.l5r5e .dice-picker-dialog img{border:0}.l5r5e .dice-picker-dialog table{text-align:center;background:none;border:none;border:0 none;margin:0;padding:0}.l5r5e .dice-picker-dialog table tbody tr td{width:250px;padding:0 .5rem}.l5r5e .dice-picker-dialog table tbody tr td:first-child,.l5r5e .dice-picker-dialog table tbody tr td:last-child{width:150px}.l5r5e .dice-picker-dialog table tbody tr:last-child td{width:100%;padding:.5rem}.l5r5e .dice-picker-dialog .pointer-choice{cursor:url("../assets/cursors/pointer.webp"),pointer}.l5r5e .dice-picker-dialog .ring-selection.ring-selected i{text-shadow:0px 1px 1px red}.l5r5e .dice-picker-dialog .ring-selection.ring-selected strong{color:rgba(255,0,0,.75)}.l5r5e .dice-picker-dialog .ring-selection.ring-selected input{border:2px solid rgba(255,0,0,.75) !important}.l5r5e .dice-picker-dialog .quantity{font-size:xx-large}.l5r5e .dice-picker-dialog .third{display:inline-block;text-align:center;vertical-align:middle}.l5r5e .dice-picker-dialog .dice-container.assistance{display:flex;align-items:anchor-center}.l5r5e .dice-picker-dialog .dice-container{display:inline-block;position:relative;text-align:center}.l5r5e .dice-picker-dialog .dice-container>img{height:40px;width:40px}.l5r5e .dice-picker-dialog .dice-container.dice-value.input-dice{width:20px;color:#0f0f0e;background:none;border:none;font-size:large;padding:0}.l5r5e .dice-picker-dialog .dice-value{position:absolute;top:50%;left:50%;transform:translate(-50%, -50%)}.l5r5e .dice-picker-dialog input[name="ring.value"][type=text]{color:#f0f0e0;border:unset;background:unset}.l5r5e .dice-picker-dialog input[name="skill.value"][type=text]{color:#0f0f0e;border:unset;background:unset}.l5r5e .dice-picker-dialog input[name="difficulty.value"][type=text]{color:#0f0f0e;border:unset;background:unset}.l5r5e .dice-picker-dialog input[name="skill.assistance"][type=text]{color:#0f0f0e;border:unset;background:unset}.l5r5e .roll-n-keep-dialog{min-width:600px;max-width:800px}.l5r5e .roll-n-keep-dialog.finalized{width:auto;min-width:400px}.l5r5e .roll-n-keep-dialog img{border:0}.l5r5e .roll-n-keep-dialog table{display:table;min-height:9rem;border:0 none;margin:.25rem 0;padding:0}.l5r5e .roll-n-keep-dialog table tbody tr{background:rgba(0,0,0,0)}.l5r5e .roll-n-keep-dialog table tbody tr td{margin:0;padding:0}.l5r5e .roll-n-keep-dialog .rnk-ct{margin:0;display:flex;flex-wrap:wrap;border-radius:.25rem;background:rgba(0,0,0,.05);border:1px solid rgba(255,255,255,.5)}.l5r5e .roll-n-keep-dialog .rnk-ct .rnk-center{flex:350px;flex-wrap:wrap;display:flex}.l5r5e .roll-n-keep-dialog .rnk-ct .form-group{width:100%}.l5r5e .roll-n-keep-dialog .rnk-ct .form-group .form-fields{flex:1}.l5r5e .roll-n-keep-dialog .rnk-ct .form-group .form-fields:nth-child(2){flex:3}.l5r5e .roll-n-keep-dialog .rnk-ct .form-group .form-fields:nth-child(2) input{flex:3}.l5r5e .roll-n-keep-dialog .rnk-ct .form-group .form-fields:nth-child(2) i{flex:unset}.l5r5e .roll-n-keep-dialog .rnk-ct .form-group .range-value{width:2rem}.l5r5e .roll-n-keep-dialog .profil{border-bottom:1px solid rgba(0,0,0,.1);display:flex;flex-direction:column}.l5r5e .roll-n-keep-dialog .profil .effects{clear:both;display:flex;flex-wrap:wrap;justify-content:center;gap:2px 4px}.l5r5e .roll-n-keep-dialog .profil .effects .effect-container{border:1px solid #5a6e5a;border-radius:4px;background-color:rgba(0,0,0,.4);padding:3px;display:flex}.l5r5e .roll-n-keep-dialog .profil .effects .effect-delete{width:16px;height:16px;background-repeat:no-repeat;background-size:contain;text-align:end;cursor:url("../assets/cursors/pointer.webp"),pointer}.l5r5e .roll-n-keep-dialog .profil .effects .effect-icon{width:16px;height:16px;background-repeat:no-repeat;background-size:contain}.l5r5e .roll-n-keep-dialog .profil .effects .effect-name{vertical-align:top;white-space:nowrap;color:#fff;margin-left:4px;font-size:14px;line-height:16px}.l5r5e .roll-n-keep-dialog .dropbox{position:relative;min-height:7rem}.l5r5e .roll-n-keep-dialog .dropbox legend i:last-child{position:absolute;top:0;right:0;border-radius:.15rem;padding:0 .1rem 0 .15rem;font-size:.65rem;line-height:1rem;width:1rem;margin:.25rem;text-align:center;color:#fff;background:#5a6e5a}.l5r5e .roll-n-keep-dialog .dropbox.faces-change{min-height:40px;margin:.5rem auto}.l5r5e .roll-n-keep-dialog .dropbox.discards{border:1px solid gray}.l5r5e .roll-n-keep-dialog .dropbox.rerolls{border:1px solid #ff4500}.l5r5e .roll-n-keep-dialog .dropbox.keeps{flex:100%;border:1px solid green}.l5r5e .roll-n-keep-dialog .dropbox.swap{flex:0 0 calc(100px + 1rem);flex-direction:column;border:1px solid #f0f}.l5r5e .roll-n-keep-dialog .dropbox.discards,.l5r5e .roll-n-keep-dialog .dropbox.rerolls{flex:0 0 calc(50% - .5rem);margin-bottom:.5rem}.l5r5e .roll-n-keep-dialog .dice-ct{position:relative;padding:.25rem}.l5r5e .roll-n-keep-dialog .dice-ct:before{content:"";position:absolute;height:.5rem;width:2px;top:-0.3rem;right:calc(50% - 1px);background:rgba(0,0,0,.25)}.l5r5e .roll-n-keep-dialog .dice-ct:after{content:"";position:absolute;bottom:0;right:0;border-radius:.15rem;padding:0 .15rem;font-size:.65rem;line-height:1rem;width:1rem;text-align:center;color:#fff;background:gray}.l5r5e .roll-n-keep-dialog .dice-ct.discard{filter:opacity(0.5)}.l5r5e .roll-n-keep-dialog .dice-ct.discard:after{content:"";background:gray}.l5r5e .roll-n-keep-dialog .dice-ct.reroll{filter:opacity(0.5)}.l5r5e .roll-n-keep-dialog .dice-ct.reroll:after{content:"";background:#ff4500}.l5r5e .roll-n-keep-dialog .dice-ct.keep:after{content:"";background:green}.l5r5e .roll-n-keep-dialog .dice-ct.swap:after{content:"";background:#f0f}.l5r5e .roll-n-keep-dialog tr:first-child .dice-ct:before{display:none}.l5r5e .roll-n-keep-dialog .dice{height:40px;width:40px}.l5r5e .roll-n-keep-dialog .dice.discard{filter:opacity(0.5);border:0 none}.l5r5e .roll-n-keep-dialog .dice.reroll{filter:opacity(0.5);border:0 none}.l5r5e .roll-n-keep-dialog .dice.keep{border:0 none}.l5r5e .roll-n-keep-dialog .dice.swap{border:0 none}.l5r5e .roll-n-keep-dialog #finalize{width:100%;margin:.5rem .25rem .25rem}.l5r5e .roll-n-keep-dialog .section-header i{font-size:.75rem;margin:0 .25rem}.l5r5e .roll-n-keep-dialog .fa-sign-in-alt{transform:rotate(90deg)}.l5r5e .roll-n-keep-dialog .chat-profil ul{display:flex;flex-direction:row}.l5r5e .roll-n-keep-dialog .chat-profil ul li:nth-child(1),.l5r5e .roll-n-keep-dialog .chat-profil ul li:nth-child(2){flex:0 0 4rem;padding:0 .25rem .25rem}.l5r5e .roll-n-keep-dialog .chat-profil ul li:nth-child(4){flex:0 0 4rem;padding:0 .25rem .25rem}.l5r5e .roll-n-keep-dialog .chat-profil ul .profile-img{width:4rem}.l5r5e .roll-n-keep-dialog .chat-profil ul .chat-profil-stance{font-size:3.5rem;line-height:3.5rem}.l5r5e .dice-picker-dialog button,.l5r5e .roll-n-keep-dialog button{cursor:default;color:#fff;background:linear-gradient(rgb(95, 40, 65), rgb(65, 25, 40), rgb(95, 40, 65));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.5rem;border-image-outset:0px;margin:.5rem 0 0}.l5r5e .dice-picker-dialog button:hover,.l5r5e .roll-n-keep-dialog button:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}.l5r5e .dice-picker-dialog button[disabled],.l5r5e .roll-n-keep-dialog button[disabled]{opacity:.25}.l5r5e .dice-picker-dialog button[disabled]:hover,.l5r5e .roll-n-keep-dialog button[disabled]:hover{box-shadow:none}.l5r5e .dice-picker-dialog #context-menu,.l5r5e .roll-n-keep-dialog #context-menu{max-width:none}.l5r5e .dice-picker-dialog .symbols-help,.l5r5e .roll-n-keep-dialog .symbols-help{font-style:italic;color:#666;font-size:.8rem;line-height:1rem;margin:.5rem auto 0}.l5r5e .dice-picker-dialog .symbols-help i,.l5r5e .roll-n-keep-dialog .symbols-help i{font-size:1rem;line-height:1rem}.l5r5e ul,.l5r5e li{list-style-type:none;margin:0;padding:0}.l5r5e .earth{color:#699678}.l5r5e .air{color:#917896}.l5r5e .water{color:#5f919b}.l5r5e .fire{color:#9b7350}.l5r5e .void{color:#4b4641}.l5r5e input[type=text],.l5r5e input[type=number],.l5r5e input[type=password],.l5r5e input[type=date],.l5r5e input[type=time],.l5r5e textarea{padding:.25rem;background:rgba(255,255,255,.5);border:1px solid rgba(186,187,177,.5);color:rgba(0,0,0,.5);resize:vertical;border-radius:0;box-shadow:none}.l5r5e input[type=text][disabled],.l5r5e input[type=number][disabled],.l5r5e input[type=password][disabled],.l5r5e input[type=date][disabled],.l5r5e input[type=time][disabled],.l5r5e textarea[disabled]{background:rgba(255,255,255,.25)}.l5r5e input[type=number]{text-align:center}.l5r5e.system-badge{display:flex;flex-direction:column;align-items:center;gap:.5rem;padding:.25rem}.l5r5e.system-badge>img{height:128px;border:none;-o-object-fit:contain;object-fit:contain}.l5r5e.system-badge .system-info{position:relative;font-size:var(--font-size-16)}.l5r5e.system-badge .system-info i{-webkit-padding-start:2px;padding-inline-start:2px;font-size:var(--font-size-12)}.l5r5e.sidebar-info{margin-bottom:-0.5rem}.l5r5e.sidebar-info .system-badge{margin-top:.5rem}.l5r5e.sidebar-info .notification-pip{color:var(--color-text-accent);font-size:var(--font-size-12);top:4px;right:-14px}.l5r5e.sidebar-info ul.unlist{display:flex;flex-wrap:wrap;padding-left:0;list-style:none;-webkit-clip-path:inset(0 0 0 2ch);clip-path:inset(0 0 0 2ch)}.l5r5e.sidebar-info ul.links{gap:0;margin-top:6px;margin-left:10%}.l5r5e.sidebar-info ul.links li{padding-left:1ch;white-space:nowrap}.l5r5e.sidebar-info ul.links li::before{content:"•";display:inline-block;margin-right:1ch;width:1ch;text-align:center}.l5r5e.chat.dice-roll .chat-dice{display:inline;position:relative;padding:0;margin:0}.l5r5e.chat.dice-roll .chat-dice:after{content:"";position:absolute;bottom:0;right:0;border-radius:.15rem;padding:0 .15rem;font-size:.65em;line-height:1rem;text-align:center;color:#fff;background:rgba(0,0,0,0)}.l5r5e.chat.dice-roll .chat-dice:last-of-type:after,.l5r5e.chat.dice-roll .chat-dice:nth-child(6):after,.l5r5e.chat.dice-roll .chat-dice:nth-child(12):after,.l5r5e.chat.dice-roll .chat-dice:nth-child(18):after{padding:0 .175rem 0 .15rem}.l5r5e.chat.dice-roll .chat-dice.rerolled>img{border-bottom:0 none}.l5r5e.chat.dice-roll .chat-dice.rerolled:after{content:"";background:#ff4500}.l5r5e.chat.dice-roll .chat-dice.swapped>img{border-bottom:0 none}.l5r5e.chat.dice-roll .chat-dice.swapped:after{content:"";background:#f0f}.l5r5e.chat.dice-roll .chat-dice>img{border:1px solid rgba(0,0,0,0);height:auto}.l5r5e.chat.dice-roll .chat-profil{text-align:center;vertical-align:middle}.l5r5e.chat.dice-roll .chat-profil .profile-img{margin:.25rem .25rem 0 0}.l5r5e.chat.dice-roll .chat-profil-stance{font-size:2.5rem;line-height:2.5rem;margin:.25rem;text-shadow:1px 1px 1px rgba(0,0,0,.5)}.l5r5e.chat.dice-roll .chat-profil-element{flex-wrap:wrap;flex-grow:1}.l5r5e.chat.dice-roll .chat-profil-element-skill{flex-grow:3}.l5r5e.chat.dice-roll .chat-profil-element:last-child{flex-grow:2}.l5r5e.chat.dice-roll .dice-formula,.l5r5e.chat.dice-roll .dice-total{background:rgba(255,255,255,.1);border:rgba(255,255,255,.75);text-align:center;margin:.5rem 0;padding:.25rem .5rem .25rem .25rem}.l5r5e.chat.dice-roll .dice-formula-rnk,.l5r5e.chat.dice-roll .dice-total-rnk{line-height:2rem}.l5r5e.chat.dice-roll .dice-formula-rnk i,.l5r5e.chat.dice-roll .dice-total-rnk i{margin-left:.5rem}.l5r5e.chat.dice-roll button{justify-self:center}.l5r5e.chat.dice-roll button.chat-dice-rnk{cursor:url("../assets/cursors/pointer.webp"),pointer;color:#fff;background:linear-gradient(rgb(95, 40, 65), rgb(65, 25, 40), rgb(95, 40, 65));background-origin:padding-box;-o-border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image:url("../assets/ui/macro-button.webp") 10 repeat;border-image-width:.5rem;border-image-outset:0px;margin:.5rem 0 0}.l5r5e.chat.dice-roll button.chat-dice-rnk:hover{background:linear-gradient(rgba(35, 10, 5, 0.75), rgba(65, 20, 15, 0.75), rgba(35, 10, 5, 0.75))}.l5r5e.chat.dice-roll button.chat-dice-rnk-ended{background:linear-gradient(rgba(10, 0, 20, 0.75), rgba(0, 0, 10, 0.75), rgba(10, 0, 20, 0.75))}.l5r5e.chat.dice-roll .dice-result-rnk{background:rgba(0,0,255,.1);border:1px solid rgba(55,55,155,.75);padding:.25rem;color:rgba(55,55,155,.75);text-align:center;font-weight:bold;text-shadow:0 0 0 #000}.l5r5e.chat.dice-roll .dice-result-rnk.success{background:rgba(0,255,0,.1);border-color:rgba(55,155,55,.75);color:rgba(55,155,55,.75)}.l5r5e.chat.dice-roll .dice-result-rnk.success i.i_success{font-size:1rem}.l5r5e.chat.dice-roll .dice-result-rnk.unknown{background:rgba(121,121,121,.1);border-color:rgba(124,124,124,.75);color:rgba(91,91,91,.75)}.l5r5e.chat.dice-roll .dice-result-rnk.fail{background:rgba(255,0,0,.1);border-color:rgba(155,55,55,.75);color:rgba(155,55,55,.75)}.l5r5e.chat.dice-roll .target,.l5r5e.chat.dice-roll .item-infos{display:flex;align-items:center;flex:0 0 100%;margin:.5rem 0;padding:.25rem .5rem .25rem .25rem;background:rgba(255,255,255,.1);border:solid 1px rgba(100,0,0,.75);border-radius:3px}.l5r5e.chat.dice-roll .target .profile,.l5r5e.chat.dice-roll .item-infos .profile{flex:1;margin:.25rem .25rem 0 0;position:relative}.l5r5e.chat.dice-roll .target .profile .profile-img,.l5r5e.chat.dice-roll .item-infos .profile .profile-img{position:relative;border:none;filter:drop-shadow(0 0 1px rgba(0, 0, 0, 0.66))}.l5r5e.chat.dice-roll .target .name,.l5r5e.chat.dice-roll .item-infos .name{flex:6;font-family:"BrushtipTexe",sans-serif}.l5r5e.chat.dice-roll .target .content-link,.l5r5e.chat.dice-roll .item-infos .content-link{background:unset;border:unset}.l5r5e.chat.dice-roll .target .content-link i,.l5r5e.chat.dice-roll .item-infos .content-link i{display:none}.l5r5e.chat.dice-roll .item-infos{border:solid 1px rgba(0,78,100,.75)}.l5r5e.chat.dice-roll .item-infos i{font-size:var(--font-size-12)}.l5r5e.chat.dice-roll .dice-container{display:flex}.l5r5e.sheet{min-width:37rem}.l5r5e.sheet label:hover{text-shadow:0 0 2px red}.l5r5e.sheet .l5r-buttons-bar{display:flex;flex:0 0 100%;overflow:hidden;padding:0 8px;line-height:1.9rem;justify-content:flex-end;background:rgba(186,187,177,.5);height:2rem}.l5r5e.sheet .l5r-buttons-bar a.l5r-header-button{flex:none;margin:0 0 0 8px}.l5r5e.sheet.actor .sheet-header h1{flex:auto;margin:0 0 .25rem .5rem}.l5r5e.sheet.actor .sheet-body{height:calc(100% - 28rem)}.l5r5e.sheet.actor fieldset.advancement,.l5r5e.sheet.actor fieldset.items-wrapper{display:grid;flex:100%}.l5r5e.sheet.actor .advancements-tabs{height:2rem;line-height:2rem;font-size:1rem}.l5r5e.sheet form{display:flex;flex-wrap:wrap;align-content:flex-start}.l5r5e.sheet .sheet-body{flex:0 0 100%;align-items:flex-start}.l5r5e.sheet .sheet-body .effects{clear:both;display:flex;flex-wrap:wrap;gap:2px 4px}.l5r5e.sheet .sheet-body .effects .effect-container{border:1px solid #5a6e5a;border-radius:4px;background-color:rgba(0,0,0,.4);padding:3px;display:flex}.l5r5e.sheet .sheet-body .effects .effect-delete{width:16px;height:16px;background-repeat:no-repeat;background-size:contain;text-align:end;cursor:url("../assets/cursors/pointer.webp"),pointer}.l5r5e.sheet .sheet-body .effects .effect-icon{width:16px;height:16px;background-repeat:no-repeat;background-size:contain}.l5r5e.sheet .sheet-body .effects .effect-name{vertical-align:top;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;color:#fff;margin-left:4px;font-size:14px;line-height:16px;max-width:140px}.l5r5e.sheet section.tab[data-tab],.l5r5e.sheet article.tab[data-tab]{display:none}.l5r5e.sheet section.tab[data-tab].active,.l5r5e.sheet article.tab[data-tab].active{display:flex}.l5r5e.sheet .sheet-header{align-items:flex-start;flex-wrap:wrap}.l5r5e.sheet .sheet-header input{flex:0 0 3rem;font-size:1.5rem;height:2rem}.l5r5e.sheet .sheet-header h1{flex:0 0 calc(100% - 90px - 1.25rem);margin:0 0 .25rem 1rem}.l5r5e.sheet .sheet-header h1 input{flex:0 0 100%;font-size:3rem;height:5rem;margin:0;width:100%;text-align:right;color:#963c41;text-shadow:0 0 1px #963c41;background:rgba(0,0,0,0);border:0 none;border-radius:0;border-bottom:1px solid rgba(90,110,90,.25)}.l5r5e.sheet .sheet-header h1:before{content:"";position:absolute;background:url("../assets/imgs/brush.webp") no-repeat 0 0;background-size:contain;height:225px;width:100%;z-index:-1;top:-1rem;left:-0.25rem}.l5r5e.sheet .sheet-header img{flex:0 0 150px;height:150px;width:150px;margin-right:0;-o-object-fit:contain;object-fit:contain;background:rgba(255,255,255,.25);border:1px solid rgba(186,187,177,.25);--notchSize: 0.5rem;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)));clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)))}.l5r5e.sheet .sheet-header .compromised input{border:1px solid #963c41;box-shadow:0 1px 5px #963c41}.l5r5e.sheet .sheet-header .header-fields h2{font-family:"BrushtipTexe",sans-serif;font-size:1rem;padding:.25rem .25rem 0;margin:1rem 20% 0 0;text-align:center;color:rgba(0,0,0,.25);text-shadow:0 0 1px rgba(90,110,90,.25);border-bottom:0 none;background:rgba(186,187,177,.5);--notchSize: 0.5rem;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, 100% 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% 100%);clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, 100% 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% 100%)}.l5r5e.sheet .sheet-header .header-fields h2.right{margin:1rem 0 0 20%;-webkit-clip-path:polygon(0% 0, var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 100% 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)));clip-path:polygon(0% 0, var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 100% 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)))}.l5r5e.sheet .sheet-header .header-fields h2:before{content:"";position:absolute;height:1px;width:100%}.l5r5e.sheet .sheet-header .identity-wrapper{display:flex;position:initial;flex-wrap:wrap;flex:0 0 calc(100% - 150px)}.l5r5e.sheet .sheet-header .identity-wrapper label{display:flex;color:#5a6e5a;text-transform:uppercase;font-size:.75rem;line-height:2rem}.l5r5e.sheet .sheet-header .identity-wrapper label input{flex:1;font-size:1.25rem;height:1.75rem;margin:0 1rem 0 .5rem;padding:0 .25rem .25rem}.l5r5e.sheet .sheet-header .identity-wrapper label input[disabled]{border:1px solid rgba(186,187,177,.5);background:rgba(255,255,255,.25)}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content{display:flex;flex-wrap:wrap}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li{flex:33%}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(1),.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(2){flex:calc(50% - 3rem);margin:0 0 .25rem}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(3){flex:auto}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(3) input{width:1rem;padding:0;margin-right:0}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(4),.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(5){flex:60%}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(4) input,.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(5) input{font-size:1rem}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(5){flex:40%}.l5r5e.sheet .sheet-header .identity-wrapper .identity-content li:nth-child(5) input{margin-right:0}.l5r5e.sheet .sheet-header .mid-wrapper{display:flex}.l5r5e.sheet .sheet-header .side-col{width:30%}.l5r5e.sheet .sheet-header .central-col{width:40%}.l5r5e.sheet .sheet-header .rings{padding:0;margin-top:1rem}.l5r5e.sheet .sheet-header .social-content,.l5r5e.sheet .sheet-header .attributes-wrapper{flex:none;flex-wrap:wrap;display:flex;padding:.5rem 0 0 .25rem;border-left:2px solid rgba(186,187,177,.5)}.l5r5e.sheet .sheet-header .social-content li,.l5r5e.sheet .sheet-header .attributes-wrapper li{position:relative}.l5r5e.sheet .sheet-header .social-content li:before,.l5r5e.sheet .sheet-header .attributes-wrapper li:before{content:"";position:absolute;background:linear-gradient(rgba(186, 187, 177, 0.5), rgba(186, 187, 177, 0));height:2px;width:97%;top:-0.25rem;left:-0.25rem}.l5r5e.sheet .sheet-header .social-content li:nth-child(2):before,.l5r5e.sheet .sheet-header .attributes-wrapper li:nth-child(2):before{width:90%}.l5r5e.sheet .sheet-header .social-content li:nth-child(3):before,.l5r5e.sheet .sheet-header .attributes-wrapper li:nth-child(3):before{width:80%}.l5r5e.sheet .sheet-header .social-content li:nth-child(4):before,.l5r5e.sheet .sheet-header .attributes-wrapper li:nth-child(4):before{width:90%}.l5r5e.sheet .sheet-header .social-content label,.l5r5e.sheet .sheet-header .attributes-wrapper label{display:flex;color:#5a6e5a;text-transform:uppercase;font-size:.75rem;height:2.5rem;margin:.25rem 0;flex-direction:row-reverse}.l5r5e.sheet .sheet-header .social-content label strong,.l5r5e.sheet .sheet-header .attributes-wrapper label strong{flex:0 0 calc(100% - 4.5rem)}.l5r5e.sheet .sheet-header .social-content label input,.l5r5e.sheet .sheet-header .attributes-wrapper label input{flex:0 0 3rem;margin:0 .25rem;height:2rem}.l5r5e.sheet .sheet-header .social-content label input[disabled],.l5r5e.sheet .sheet-header .attributes-wrapper label input[disabled]{background:rgba(255,255,255,.25)}.l5r5e.sheet .sheet-header .social-content .affinities,.l5r5e.sheet .sheet-header .attributes-wrapper .affinities{padding-top:.25rem}.l5r5e.sheet .sheet-header .social-content .affinities .ring,.l5r5e.sheet .sheet-header .attributes-wrapper .affinities .ring{display:flex;flex-wrap:wrap;flex-direction:unset;flex:3rem;height:1.5rem;margin:0}.l5r5e.sheet .sheet-header .social-content .affinities i,.l5r5e.sheet .sheet-header .attributes-wrapper .affinities i{flex:1rem;margin:0;text-align:center}.l5r5e.sheet .sheet-header .social-content .affinities input,.l5r5e.sheet .sheet-header .attributes-wrapper .affinities input{flex:1.25rem;height:1.25rem;margin:0}.l5r5e.sheet .sheet-header .focus-content,.l5r5e.sheet .sheet-header .vigilance-content{flex:0 0 50%;padding-bottom:.5rem}.l5r5e.sheet .sheet-header .focus-content .attribute-label,.l5r5e.sheet .sheet-header .vigilance-content .attribute-label{flex-wrap:wrap;height:auto}.l5r5e.sheet .sheet-header .focus-content .attribute-label strong,.l5r5e.sheet .sheet-header .vigilance-content .attribute-label strong{flex:100%;text-align:center}.l5r5e.sheet .sheet-header .focus-content .attribute-label input,.l5r5e.sheet .sheet-header .vigilance-content .attribute-label input{flex:1 0 3rem}.l5r5e.sheet .sheet-header .focus-content .attribute-label:before,.l5r5e.sheet .sheet-header .vigilance-content .attribute-label:before{top:auto;bottom:.1rem;height:calc(100% - 1.45rem);width:calc(100% - .4rem)}.l5r5e.sheet .sheet-header .attributes-wrapper{padding:.5rem .25rem 0 0;border-left:0 none;border-right:2px solid rgba(186,187,177,.5)}.l5r5e.sheet .sheet-header .attributes-wrapper li:before{left:auto;right:-0.25rem}.l5r5e.sheet .sheet-header .attributes-wrapper li.focus-content:before{width:0}.l5r5e.sheet .sheet-header .attributes-wrapper li.vigilance-content:before{width:160%}.l5r5e.sheet .sheet-header .attributes-wrapper li.void-content:before{width:90%}.l5r5e.sheet .sheet-header .attributes-wrapper label{flex-direction:row;width:100%}.l5r5e.sheet .sheet-header .attributes-wrapper label strong{text-align:right}.l5r5e.sheet .sheet-header .attributes-wrapper label:nth-child(2) strong{position:absolute;top:0;left:0;font-size:.65rem;width:3rem;color:rgba(0,0,0,.25)}.l5r5e.sheet .sheet-header .attributes-wrapper label:nth-child(2) input{font-size:1.25rem;padding-top:.75rem}.l5r5e.sheet .sheet-header .attributes-wrapper .endurance-content label:nth-child(1) strong,.l5r5e.sheet .sheet-header .attributes-wrapper .composure-content label:nth-child(1) strong{flex:0 0 calc(100% - 6rem)}.l5r5e.sheet .sheet-header .attributes-wrapper .endurance-content label:nth-child(1) input,.l5r5e.sheet .sheet-header .attributes-wrapper .composure-content label:nth-child(1) input{flex:0 0 5.5rem;padding-right:3rem}.l5r5e.sheet .sheet-header .attributes-wrapper .endurance-content label:nth-child(2),.l5r5e.sheet .sheet-header .attributes-wrapper .composure-content label:nth-child(2){position:absolute;right:0;width:3.5rem}.l5r5e.sheet .sheet-header .attributes-wrapper .increment-control{line-height:13px;position:relative;top:.2rem}.l5r5e.sheet .sheet-header .attributes-wrapper .void-content{width:100%;padding-top:.25rem}.l5r5e.sheet .sheet-header .attributes-wrapper .void-content label{margin:0}.l5r5e.sheet .sheet-header .attributes-wrapper .void-content label strong{flex:1 0 calc(100% - 5rem);padding:0 .25rem}.l5r5e.sheet .sheet-header .attributes-wrapper .void-content label strong:after{content:"/";position:absolute;right:1.25rem;font-size:1rem;bottom:.6rem;color:#764f40}.l5r5e.sheet .sheet-header .attributes-wrapper .void-content label input:nth-child(2){flex:3rem;padding-right:1.25rem}.l5r5e.sheet .sheet-header .attributes-wrapper .void-content label input:last-child{flex:1;border:0 none;font-size:1rem;text-align:right;padding-left:.25rem;padding-top:.75rem;position:absolute;right:.25rem;width:1rem}.l5r5e.sheet .sheet-header .attributes-wrapper li{display:flex}.l5r5e.sheet .sheet-header .attributes-wrapper li p{display:none;z-index:2;position:absolute;background:rgba(0,0,0,.5);color:#fff;line-height:1.5rem;text-align:center;width:100%;padding:.25rem;bottom:-2.25rem;right:-0.25rem;--notchSize: 0.5rem;-webkit-clip-path:polygon(0% 0, 0 0%, 100% 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)));clip-path:polygon(0% 0, 0 0%, 100% 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)))}.l5r5e.sheet .sheet-header .attributes-wrapper li:hover p{display:block;height:auto}.l5r5e.sheet .sheet-header .attributes-wrapper .focus-content p,.l5r5e.sheet .sheet-header .attributes-wrapper .vigilance-content p{bottom:-3.75rem}.l5r5e.sheet .sheet-header .attribute-label{position:relative}.l5r5e.sheet .sheet-header .identity-content .attribute-label:before{height:calc(100% - .6rem);width:calc(100% - .65rem);left:auto;top:.15rem;right:.85rem}.l5r5e.sheet .sheet-header .identity-content li:nth-child(3) .attribute-label:before,.l5r5e.sheet .sheet-header .identity-content li:nth-child(5) .attribute-label:before{height:calc(100% - .6rem);width:calc(100% + .25rem);left:auto;top:.15rem;right:-0.15rem}.l5r5e.sheet .sheet-header .attributes-wrapper .attribute-label:nth-child(2):before{left:auto;right:3.15rem;width:2.6rem}.l5r5e.sheet .sheet-header .attributes-wrapper .attribute-label:before{left:auto;right:.15rem}.l5r5e.sheet .sheet-header .void-content .attribute-label:before{width:3.85rem}.l5r5e.sheet article{background:rgba(255,255,255,.25);padding:.5rem;flex-wrap:wrap;min-height:calc(100% - 3.25rem)}.l5r5e.sheet article fieldset h3{font-size:1.25rem;width:100%;text-align:left;line-height:2rem;color:#764f40;border-bottom:1px solid}.l5r5e.sheet article fieldset h3 .item-control.item-add{float:right;font-size:.75rem;line-height:.75rem;border:1px solid;padding:.25rem;margin:.25rem;color:#fff;background:#764f40}.l5r5e.sheet article fieldset h3 .item-control.item-add:hover{opacity:.75}.l5r5e.sheet article .narrative-content{flex:100%;display:flex}.l5r5e.sheet article .narrative-content fieldset{flex:0 0 calc(50% - .5rem)}.l5r5e.sheet article .narrative-content fieldset label{width:100%}.l5r5e.sheet article .narrative-list{flex:0 0 50%}.l5r5e.sheet article .narrative-list fieldset{flex:0 0 50%}.l5r5e.sheet article .narrative-list fieldset label{width:100%}.l5r5e.sheet article .narrative-fluff{flex:0 0 50%;display:flex;flex-direction:column}.l5r5e.sheet article .narrative-fluff .narrative-description,.l5r5e.sheet article .narrative-fluff .narrative-note{flex:1;font-size:.85rem;max-height:24rem}.l5r5e.sheet article .narrative-fluff .narrative-description .editor-container,.l5r5e.sheet article .narrative-fluff .narrative-note .editor-container{min-height:18rem}.l5r5e.sheet article .techniques-wrapper{padding-left:.25rem}.l5r5e.sheet article .techniques-wrapper fieldset{margin:0 0 0 .25rem}.l5r5e.sheet article .techniques-wrapper .dice-picker-tech:hover{text-shadow:0 0 2px red}.l5r5e.sheet article .techniques-wrapper .checklist{display:flex;flex-wrap:wrap;font-size:.85rem;margin:0 0 .25rem .25rem;padding:.5rem;background:rgba(186,187,177,.5);--notchSize: 0.25rem;-webkit-clip-path:polygon(0% 0, var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 100% 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)));clip-path:polygon(0% 0, var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 100% 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)))}.l5r5e.sheet article .techniques-wrapper .checklist i{color:rgba(0,0,0,.5);margin-right:.5rem}.l5r5e.sheet article .techniques-wrapper .checklist label{flex:0 0 auto;margin:0 .25rem .25rem;padding:0 .5rem;color:#5a6e5a;background:rgba(255,255,255,.5);border:1px solid #5a6e5a;border-radius:1rem}.l5r5e.sheet article .techniques-wrapper .checklist input{margin:.25rem 0 0 0;height:.65rem;width:.65rem}.l5r5e.sheet article .stances-content{flex:100%;height:100%;align-self:flex-start}.l5r5e.sheet article .stances-content .item-list{position:relative;padding-top:2rem;margin:0}.l5r5e.sheet article .stances-content .stance-content{padding:0;margin:0}.l5r5e.sheet article .stances-content .stance-content label{display:block;position:absolute;top:0;left:0;width:20%;line-height:1.5rem;padding:.25rem;color:#fff}.l5r5e.sheet article .stances-content .stance-content label.earth{background:#699678}.l5r5e.sheet article .stances-content .stance-content label.air{background:#917896;left:20%}.l5r5e.sheet article .stances-content .stance-content label.water{background:#5f919b;left:40%}.l5r5e.sheet article .stances-content .stance-content label.fire{background:#9b7350;left:60%}.l5r5e.sheet article .stances-content .stance-content label.void{background:#4b4641;left:80%}.l5r5e.sheet article .stances-content .stance-content label input{float:right;position:relative;top:.3rem;right:.25rem}.l5r5e.sheet article .weapons-content,.l5r5e.sheet article .armors-content{flex:0 0 calc(50% - .5rem)}.l5r5e.sheet .xp,.l5r5e.sheet .money-wrapper{flex:100%;flex-direction:row;color:#000}.l5r5e.sheet .xp label,.l5r5e.sheet .money-wrapper label{display:flex;flex:33.3333333333%;padding:.5rem;font-size:.85rem;align-items:center}.l5r5e.sheet .xp label input,.l5r5e.sheet .money-wrapper label input{margin-left:.5rem}.l5r5e.sheet .xp .xp-buttons,.l5r5e.sheet .xp .money-buttons,.l5r5e.sheet .money-wrapper .xp-buttons,.l5r5e.sheet .money-wrapper .money-buttons{line-height:13px;padding-left:.3em}.l5r5e.sheet .xp .increment-control,.l5r5e.sheet .money-wrapper .increment-control{display:flex;flex-direction:column;align-items:center;padding-left:.2rem;flex:none}.l5r5e.sheet table{border:none;font-size:.85rem;color:#000;text-align:left}.l5r5e.sheet table thead{border:none;font-family:"BrushtipTexe",sans-serif;font-weight:normal}.l5r5e.sheet table thead th{padding-left:.5rem;padding-right:.5rem;font-size:1rem}.l5r5e.sheet table thead th:first-child{flex:calc(100% - 16rem);padding-left:.5rem;text-align:left}.l5r5e.sheet table thead th:nth-child(2){flex:0 0 2rem}.l5r5e.sheet table thead th:nth-child(3),.l5r5e.sheet table thead th:nth-child(4){flex:0 0 4rem}.l5r5e.sheet table tbody{border:none}.l5r5e.sheet table tbody .curriculum{flex:0 0 2rem}.l5r5e.sheet table tbody .name{flex:calc(100% - 13rem);padding-left:.5rem;text-align:left}.l5r5e.sheet table tbody .xp,.l5r5e.sheet table tbody .rank{flex:0 0 4rem}.l5r5e.sheet table tbody .actions{flex:0 0 3rem;font-size:.75rem}.l5r5e.sheet table tbody .actions ul{display:flex;flex-direction:row}.l5r5e.sheet table tbody .actions ul li{flex:0 0 1rem}.l5r5e.sheet table tbody .actions ul li:hover{color:rgba(255,0,0,.75)}.l5r5e.sheet table tbody .tfoot{padding:.25 .5rem;background:rgba(186,187,177,.5);text-shadow:none;border-top:rgba(186,187,177,.5);text-align:center}.l5r5e.sheet table tbody img{width:16px;height:16px;border:none;display:inline}.l5r5e.sheet table tfoot{border:none;-moz-text-align-last:center;text-align-last:center}.l5r5e.sheet .inventory .items-wrapper h3{background:rgba(90,110,90,.15);color:#5a6e5a;border-bottom:1px solid #fff;font-family:"Caballar",sans-serif;font-size:1rem;padding-left:.5rem;margin:0}.l5r5e.sheet .inventory .items-wrapper .item-list{display:block}.l5r5e.sheet.actor .initiative-wrapper,.l5r5e.sheet.npc .initiative-wrapper{flex:100%;height:100%;align-self:flex-start;text-align:center;display:block}.l5r5e.sheet.actor .initiative button,.l5r5e.sheet.npc .initiative button{width:auto;min-width:20%;margin:0 .25rem .25rem;padding:0 .5rem;color:#5a6e5a;background:rgba(255,255,255,.5);border:1px solid #5a6e5a;border-radius:1rem;line-height:1.5rem;height:1.5rem}.l5r5e.sheet.actor .initiative button:focus,.l5r5e.sheet.npc .initiative button:focus{box-shadow:none}.l5r5e.sheet.actor .limited h1,.l5r5e.sheet.npc .limited h1{margin:.5rem 0}.l5r5e.sheet.actor .limited img.full,.l5r5e.sheet.npc .limited img.full{flex:initial;height:auto;width:-moz-max-content;width:max-content;border:0 none;margin:0 auto}.l5r5e.sheet.actor .limited .sheet-header,.l5r5e.sheet.npc .limited .sheet-header{flex:none;height:auto;width:100%}.l5r5e.sheet.actor .limited ul,.l5r5e.sheet.npc .limited ul{display:flex;flex-wrap:wrap}.l5r5e.sheet.actor .limited ul li,.l5r5e.sheet.npc .limited ul li{flex:50%;padding:.25rem 0}.l5r5e.sheet.actor .limited ul li input,.l5r5e.sheet.npc .limited ul li input{width:75%;float:right}.l5r5e.sheet.actor .limited ul li:nth-child(1),.l5r5e.sheet.actor .limited ul li:nth-child(2),.l5r5e.sheet.npc .limited ul li:nth-child(1),.l5r5e.sheet.npc .limited ul li:nth-child(2){flex:calc(50% - 5rem);margin-right:1rem}.l5r5e.sheet.actor .limited ul li:nth-child(3),.l5r5e.sheet.npc .limited ul li:nth-child(3){flex:auto}.l5r5e.sheet.actor .limited ul li:nth-child(3) input,.l5r5e.sheet.npc .limited ul li:nth-child(3) input{width:2rem}.l5r5e.sheet.actor .limited ul li:nth-child(4),.l5r5e.sheet.actor .limited ul li:nth-child(5),.l5r5e.sheet.npc .limited ul li:nth-child(4),.l5r5e.sheet.npc .limited ul li:nth-child(5){flex:calc(50% - 1rem);margin-right:1rem}.l5r5e.sheet.actor .limited ul li:nth-child(4) input,.l5r5e.sheet.actor .limited ul li:nth-child(5) input,.l5r5e.sheet.npc .limited ul li:nth-child(4) input,.l5r5e.sheet.npc .limited ul li:nth-child(5) input{font-size:1rem}.l5r5e.sheet nav.sheet-tabs{flex:100%}.l5r5e.sheet.journal .journal-page-content ul{margin:.5rem 0}.l5r5e.sheet.journal .journal-page-content li{list-style-type:initial;margin:.5rem 0 .5rem 1.5rem;padding:0}.l5r5e.sheet .editable[data-lang=Español] .sheet-header .focus-content .attribute-label strong,.l5r5e.sheet .editable[data-lang=Español] .sheet-header .vigilance-content .attribute-label strong{font-size:.7rem;line-height:1.1rem}.l5r5e.npc .sheet-header h1:before{top:-3.75rem}.l5r5e.npc .sheet-header img{flex:0 0 90px;height:90px;width:90px}.l5r5e.npc .sheet-header fieldset{flex:1 1 100%;min-height:2rem;width:100%;margin:0}.l5r5e.npc .sheet-header .header-fields{padding:0}.l5r5e.npc .sheet-header .identity-wrapper{flex:1 1 100%}.l5r5e.npc .sheet-header .identity-wrapper h1{margin:0 .25rem 1rem 1rem}.l5r5e.npc .sheet-header .identity-wrapper .identity-list{flex:0 0 100%;display:flex;margin:.25rem 0 .5rem}.l5r5e.npc .sheet-header .identity-wrapper .identity-list li{flex:1;flex-wrap:wrap;display:flex}.l5r5e.npc .sheet-header .identity-wrapper .identity-list li select{width:100%;background:rgba(255,255,255,.5);border:0 none;text-transform:capitalize;color:#764f40;font-family:"PatrickHand",sans-serif;font-weight:bold;font-size:1rem;letter-spacing:.15rem}.l5r5e.npc .sheet-header .identity-wrapper .identity-list li i,.l5r5e.npc .sheet-header .identity-wrapper .identity-list li input{font-size:1.25rem;height:1.5rem;line-height:1.5rem;width:7.25rem;margin:auto;text-align:center}.l5r5e.npc .sheet-header .affinities{display:flex;flex-wrap:wrap}.l5r5e.npc .sheet-header .affinities select{position:relative;background:rgba(0,0,0,0);border:0 none;margin:0;padding:0;text-align:left;font-weight:bold;margin:0 0 .25rem 0;color:#5a6e5a}.l5r5e.npc .sheet-header .affinities input{flex:1rem;font-size:1rem;height:1.5rem}.l5r5e.npc .sheet-header .social-content{margin-bottom:.5rem}.l5r5e.npc .sheet-header .social-content .attitude{height:1.5rem;padding-left:.25rem}.l5r5e.npc .sheet-header .social-content .attitude input{height:1.5rem;flex:1;margin-right:0}.l5r5e.npc .sheet-body{padding:0}.l5r5e.npc .npc-skill{display:flex;width:100%;line-height:2rem;font-size:.75rem;margin:.5rem 0;text-align:center}.l5r5e.npc .npc-skill li{flex:1;padding:.25rem;text-transform:uppercase;color:#fff}.l5r5e.npc .npc-skill li:nth-child(1){background:#4b4641}.l5r5e.npc .npc-skill li:nth-child(2){background:#699678}.l5r5e.npc .npc-skill li:nth-child(3){background:#9b7350}.l5r5e.npc .npc-skill li:nth-child(4){background:#917896}.l5r5e.npc .npc-skill li:nth-child(5){flex:1.25;background:#5f919b}.l5r5e.npc .npc-skill input[type=number]{float:right;font-size:1.25rem;height:2rem;width:1rem;margin:0;padding:0;border:0 none;background:rgba(0,0,0,0);color:#fff}.l5r5e.npc article{min-height:auto}.l5r5e.npc article fieldset,.l5r5e.npc article .checklist{flex:0 0 calc(100% - .5rem)}.l5r5e.npc article .items-content{flex:0 0 calc(100% - .5rem);margin:1rem .25rem 0}.l5r5e.npc article .weapons-content{flex:1}.l5r5e.npc article .initiative-wrapper{margin-bottom:.5rem}.l5r5e.npc article:last-child{padding-bottom:1rem}.l5r5e.npc article .techniques-wrapper{padding-left:.5rem}.l5r5e.npc article .techniques-wrapper fieldset,.l5r5e.npc article .techniques-wrapper .checklist{flex:100%;margin:0}.l5r5e.npc .npc-note .editor{min-height:6rem;max-height:12rem}.l5r5e.npc .narrative-note{flex:0 0 calc(50% - .25rem)}.l5r5e.character-generator-dialog form .body{clear:both;display:flex;flex-direction:column;flex-wrap:wrap;margin:3px 0;align-items:start}.l5r5e.character-generator-dialog input[type=number]{width:auto}.l5r5e.character-generator-dialog form .form-group{border-bottom:solid rgba(128,128,128,.2392156863) 1px}.l5r5e.character-generator-dialog form .form-group.smaller>label{flex:10}.l5r5e.character-generator-dialog form .form-group.smaller .form-fields{flex:1}.l5r5e.sheet.army .sheet-header{height:9.5rem}.l5r5e.sheet.army .sheet-header h1{flex:1}.l5r5e.sheet.army .sheet-header .readiness{flex:0 0 100%;align-items:flex-start}.l5r5e.sheet.army .sheet-header .readiness ul{display:flex;position:relative;padding:.25rem;height:4rem}.l5r5e.sheet.army .sheet-header .readiness ul li{flex:25%;display:flex;flex-direction:column;align-items:center;position:relative}.l5r5e.sheet.army .sheet-header .readiness ul li .increment-control{position:absolute;right:-0.7rem;top:15%;display:flex;flex-direction:column;gap:.1rem;line-height:1}.l5r5e.sheet.army .sheet-header .readiness ul li strong{color:#5a6e5a;text-align:center;text-transform:uppercase;font-size:.75rem}.l5r5e.sheet.army .sheet-header .readiness ul li label{position:relative;display:flex;align-items:center;justify-content:center}.l5r5e.sheet.army .sheet-header .readiness ul li input{background:rgba(0,0,0,0);border:0 none;text-align:center;margin:0;padding:0;width:2rem}.l5r5e.sheet.army .sheet-header .readiness ul li:after{content:"";width:2rem;height:2rem;position:absolute;background:rgba(0,0,0,0) url("../assets/icons/circle.svg") no-repeat 0 0;background-size:contain;opacity:.25;z-index:-1}.l5r5e.sheet.army .sheet-header .readiness ul li:nth-child(1):after{transform:rotate(0deg)}.l5r5e.sheet.army .sheet-header .readiness ul li:nth-child(2):after{transform:rotate(90deg)}.l5r5e.sheet.army .sheet-header .readiness ul li:nth-child(3):after{transform:rotate(180deg)}.l5r5e.sheet.army .sheet-header .readiness ul li:nth-child(4):after{transform:rotate(-90deg)}.l5r5e.sheet.army .sheet-header .readiness h2{flex:0 0 100%}.l5r5e.sheet.army .sheet-body{height:calc(100% - 11.5rem)}.l5r5e.sheet.army .sheet-body .tab{height:calc(100% - 3.5rem)}.l5r5e.sheet.army .sheet-body .tab.army .warlord,.l5r5e.sheet.army .sheet-body .tab.army .commander{display:flex;flex-wrap:wrap}.l5r5e.sheet.army .sheet-body .tab.army .warlord .fa-sign-in-alt,.l5r5e.sheet.army .sheet-body .tab.army .commander .fa-sign-in-alt{transform:rotate(90deg)}.l5r5e.sheet.army .sheet-body .tab.army .warlord fieldset,.l5r5e.sheet.army .sheet-body .tab.army .commander fieldset{margin-top:.25rem;margin-bottom:.25rem}.l5r5e.sheet.army .sheet-body .tab.army .warlord fieldset strong,.l5r5e.sheet.army .sheet-body .tab.army .commander fieldset strong{color:#5a6e5a}.l5r5e.sheet.army .sheet-body .tab.army .warlord fieldset label,.l5r5e.sheet.army .sheet-body .tab.army .commander fieldset label{flex:100%}.l5r5e.sheet.army .sheet-body .tab.army .warlord fieldset p,.l5r5e.sheet.army .sheet-body .tab.army .commander fieldset p{width:100%}.l5r5e.sheet.army .sheet-body .tab.army .warlord fieldset textarea,.l5r5e.sheet.army .sheet-body .tab.army .commander fieldset textarea{height:calc(100% - 22px)}.l5r5e.sheet.army .sheet-body .tab.army .warlord fieldset .actor-remove-control,.l5r5e.sheet.army .sheet-body .tab.army .commander fieldset .actor-remove-control{font-size:12px}.l5r5e.sheet.army .sheet-body .tab.army .standing{flex:0 0 100%;display:flex;flex-wrap:wrap}.l5r5e.sheet.army .sheet-body .tab.army .standing h2{flex:0 0 100%}.l5r5e.sheet.army .sheet-body .tab.army .standing ul{display:flex;position:relative}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li{flex:33%;display:inline-grid;position:relative;padding:.25rem;flex-direction:column-reverse}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li strong{text-align:center}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li input{background:rgba(0,0,0,0);border:0 none;text-align:center}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li:after{content:"";width:2rem;height:2rem;position:absolute;right:calc(50% - .95rem);top:calc(50% - .2rem);background:rgba(0,0,0,0) url("../assets/icons/circle.svg") no-repeat 0 0;background-size:contain;opacity:.25;z-index:-1}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li:nth-child(1):after{transform:rotate(0deg)}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li:nth-child(2):after{transform:rotate(90deg)}.l5r5e.sheet.army .sheet-body .tab.army .standing ul li:nth-child(3):after{transform:rotate(180deg)}.l5r5e.sheet.army .sheet-body .tab.army .warlord-name{display:flex;flex:100%;flex-wrap:wrap;margin:0;padding:.5rem .5rem 0;background:rgba(186,187,177,.5);--notchSize: 0.25rem}.l5r5e.sheet.army .sheet-body .tab.army .warlord-name i{color:rgba(0,0,0,.5);margin-right:.5rem}.l5r5e.sheet.army .sheet-body .tab.army .warlord-name label{flex:0 0 auto !important;height:1.65rem;margin:0;padding:0 .5rem;color:#5a6e5a;background:rgba(255,255,255,.5);border:1px solid #5a6e5a;border-radius:1rem}.l5r5e.sheet.army .sheet-body .tab.others{flex-direction:column}.l5r5e.sheet.army .sheet-body .tab.others .editor-container{min-height:8rem;max-height:14rem}.l5r5e nav.sheet-tabs{height:3rem;line-height:2rem;font-family:"Caballar",sans-serif;letter-spacing:-0.05rem;font-size:1rem;border:0 none;border-bottom:1px solid rgba(186,187,177,.5);margin-bottom:0;background:rgba(255,255,255,.5);color:rgba(0,0,0,.5);display:flex;flex-direction:row;--notchSize: 0.5rem;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), 100% 100%, var(--notchSize) 100%, 0% 100%);clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), 100% 100%, var(--notchSize) 100%, 0% 100%)}.l5r5e nav .item{flex:1}.l5r5e nav .item:hover{background-color:#5a6e5a;color:rgba(255,255,255,.65);text-shadow:none;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 0 100%, 0% 0%, 0% 100%);clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 0 100%, 0% 0%, 0% 100%)}.l5r5e nav .item.active{background-color:rgba(73,12,11,.85);color:#fff;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 0 100%, 0% 0%, 0% 100%);clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% 100%, 0 100%, 0% 0%, 0% 100%)}.l5r5e nav .item.active:hover{background-color:rgba(73,12,11,.85);cursor:default}.l5r5e .rings{display:flex;flex-wrap:wrap;color:rgba(255,255,255,.65)}.l5r5e .rings #earth,.l5r5e .rings #air,.l5r5e .rings #water,.l5r5e .rings #fire,.l5r5e .rings #void{position:relative;flex:1 1 50%;text-align:center}.l5r5e .rings #earth i.i_earth,.l5r5e .rings #earth i.i_water,.l5r5e .rings #earth i.i_fire,.l5r5e .rings #earth i.i_air,.l5r5e .rings #earth i.i_void,.l5r5e .rings #air i.i_earth,.l5r5e .rings #air i.i_water,.l5r5e .rings #air i.i_fire,.l5r5e .rings #air i.i_air,.l5r5e .rings #air i.i_void,.l5r5e .rings #water i.i_earth,.l5r5e .rings #water i.i_water,.l5r5e .rings #water i.i_fire,.l5r5e .rings #water i.i_air,.l5r5e .rings #water i.i_void,.l5r5e .rings #fire i.i_earth,.l5r5e .rings #fire i.i_water,.l5r5e .rings #fire i.i_fire,.l5r5e .rings #fire i.i_air,.l5r5e .rings #fire i.i_void,.l5r5e .rings #void i.i_earth,.l5r5e .rings #void i.i_water,.l5r5e .rings #void i.i_fire,.l5r5e .rings #void i.i_air,.l5r5e .rings #void i.i_void{font-size:5rem;line-height:4.75rem}.l5r5e .rings #earth label,.l5r5e .rings #air label,.l5r5e .rings #water label,.l5r5e .rings #fire label,.l5r5e .rings #void label{position:relative;width:5rem;line-height:0;float:right}.l5r5e .rings #earth label.stance-active strong,.l5r5e .rings #air label.stance-active strong,.l5r5e .rings #water label.stance-active strong,.l5r5e .rings #fire label.stance-active strong,.l5r5e .rings #void label.stance-active strong{-webkit-text-decoration:underline 2px;text-decoration:underline 2px}.l5r5e .rings #earth input,.l5r5e .rings #air input,.l5r5e .rings #water input,.l5r5e .rings #fire input,.l5r5e .rings #void input{position:absolute;height:2rem;width:2rem;border-radius:100%;top:0;left:0;text-align:center;font-size:1rem;border:2px solid rgba(186,187,177,.5);color:rgba(255,255,255,.65)}.l5r5e .rings #earth input:hover,.l5r5e .rings #air input:hover,.l5r5e .rings #water input:hover,.l5r5e .rings #fire input:hover,.l5r5e .rings #void input:hover{border:2px solid rgba(255,0,0,.75);text-shadow:0 0 3px red;box-shadow:0 0 3px inset red}.l5r5e .rings #earth{float:right;color:#699678}.l5r5e .rings #earth input{top:auto;right:0;bottom:-0.9rem;left:auto;background:#699678}.l5r5e .rings #earth label strong{position:absolute;bottom:.75rem;left:-1.75rem}.l5r5e .rings #air{color:#917896}.l5r5e .rings #air input{top:auto;right:auto;bottom:-0.9rem;left:0;background:#917896}.l5r5e .rings #air label{float:left}.l5r5e .rings #air label strong{position:absolute;bottom:.75rem;right:-1rem}.l5r5e .rings #water{float:right;color:#5f919b;padding-right:2rem}.l5r5e .rings #water input{top:17%;right:-1.25rem;bottom:auto;left:auto;background:#5f919b}.l5r5e .rings #water label strong{position:absolute;bottom:-0.75rem;right:2rem}.l5r5e .rings #fire{color:#9b7350;padding-left:2rem}.l5r5e .rings #fire input{top:17%;right:auto;bottom:auto;left:-1.25rem;background:#9b7350}.l5r5e .rings #fire label{float:left}.l5r5e .rings #fire label strong{position:absolute;bottom:-0.75rem;right:2rem}.l5r5e .rings #void{top:-2rem;margin:0 calc(50% - 2.5rem);color:#4b4641}.l5r5e .rings #void input{top:-1rem;right:auto;bottom:auto;left:30%;background:#4b4641}.l5r5e .rings #void label strong{position:absolute;bottom:-0.75rem;left:1.75rem}.l5r5e.sheet article .skills-wrapper,.l5r5e.sheet article .techniques-wrapper{flex:50%}.l5r5e.sheet article .skills-wrapper>li,.l5r5e.sheet article .techniques-wrapper>li{display:flex;flex-wrap:wrap;font-size:.85rem;margin:0 0 1rem;border:1px solid rgba(186,187,177,.5);--notchSize: 0.75rem;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, 100% 0, 100% 0, 100% 100%, 100% 100%, 0 100%, 0 100%);clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, 100% 0, 100% 0, 100% 100%, 100% 100%, 0 100%, 0 100%)}.l5r5e.sheet article .skills-wrapper>li h4,.l5r5e.sheet article .techniques-wrapper>li h4{flex:100%;margin:0;padding:.5rem .5rem 0;text-align:center;background:rgba(186,187,177,.5);color:#5a6e5a;--notchSize: 0.5rem;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, 100% 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% 100%);clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, 100% 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% 100%)}.l5r5e.sheet article .skills-wrapper>li ul,.l5r5e.sheet article .techniques-wrapper>li ul{flex:50%;padding:.25rem .5rem .25rem 0}.l5r5e.sheet article .skills-wrapper>li ul li,.l5r5e.sheet article .techniques-wrapper>li ul li{text-align:left;line-height:2rem;margin:.25rem 0}.l5r5e.sheet article .skills-wrapper>li ul li.skill,.l5r5e.sheet article .techniques-wrapper>li ul li.skill{text-align:right}.l5r5e.sheet article .skills-wrapper>li ul li.skill span,.l5r5e.sheet article .techniques-wrapper>li ul li.skill span{color:rgba(0,0,0,.5)}.l5r5e.sheet article .skills-wrapper>li ul li.skill span[data-skill=melee],.l5r5e.sheet article .skills-wrapper>li ul li.skill span[data-skill=ranged],.l5r5e.sheet article .skills-wrapper>li ul li.skill span[data-skill=unarmed],.l5r5e.sheet article .techniques-wrapper>li ul li.skill span[data-skill=melee],.l5r5e.sheet article .techniques-wrapper>li ul li.skill span[data-skill=ranged],.l5r5e.sheet article .techniques-wrapper>li ul li.skill span[data-skill=unarmed]{float:left;line-height:1rem;width:calc(100% - 2rem)}.l5r5e.sheet article .skills-wrapper>li ul.skill-category-ring-actions,.l5r5e.sheet article .techniques-wrapper>li ul.skill-category-ring-actions{padding:.25rem 0 .25rem .5rem;border-left:1px solid rgba(186,187,177,.5)}.l5r5e.sheet article .skills-wrapper>li input,.l5r5e.sheet article .techniques-wrapper>li input{width:1.75rem;height:1.75rem;text-align:center}.l5r5e.sheet article .skills-wrapper>li:last-child,.l5r5e.sheet article .techniques-wrapper>li:last-child{margin:0}.l5r5e .item-list{flex:100%}.l5r5e .item-list .tab[data-tab]{display:none}.l5r5e .item-list .item .item-header{display:flex}.l5r5e .item-list .item .item-header .item-img{flex:0 0 32px;padding-right:.25rem}.l5r5e .item-list .item .item-header .item-img img{border:none}.l5r5e .item-list .item .item-header .item-name{flex:1 1 auto;font-size:1rem;line-height:1rem;color:#764f40;align-content:center}.l5r5e .item-list .item .item-header .removed{text-decoration-line:line-through}.l5r5e .item-list .item .item-header .item-edit,.l5r5e .item-list .item .item-header .item-delete,.l5r5e .item-list .item .item-header .item-equip,.l5r5e .item-list .item .item-header .technique-edit,.l5r5e .item-list .item .item-header .technique-delete,.l5r5e .item-list .item .item-header .peculiarity-edit,.l5r5e .item-list .item .item-header .peculiarity-delete,.l5r5e .item-list .item .item-header .property-edit,.l5r5e .item-list .item .item-header .property-delete{line-height:1rem;font-size:.75rem;flex:0 0 1rem;padding:0 .1rem;color:#000}.l5r5e .item-list .item .item-header .icon-stat-container{line-height:1rem;font-size:.75rem;padding:0 .25rem;color:#000}.l5r5e .item-list .item .item-header .item-edit:hover,.l5r5e .item-list .item .item-header .item-delete:hover,.l5r5e .item-list .item .item-header .item-equip:hover,.l5r5e .item-list .item .item-header .technique-edit:hover,.l5r5e .item-list .item .item-header .technique-delete:hover,.l5r5e .item-list .item .item-header .peculiarity-edit:hover,.l5r5e .item-list .item .item-header .peculiarity-delete:hover,.l5r5e .item-list .item .item-header .property-edit:hover,.l5r5e .item-list .item .item-header .property-delete:hover{text-shadow:0 0 3px red;color:#000}.l5r5e .item-list .item .item-properties{display:flex;flex-direction:row}.l5r5e .item-list .item .item-properties>li{margin:.25rem .1rem;padding:.1rem .5rem;background-color:rgba(255,255,255,.5);border:1px solid rgba(255,255,255,.65);border-radius:1rem;width:auto;font-size:.75rem;color:#000}.l5r5e .item-list .item .item-properties>li:first-child{margin-left:0}.l5r5e .item-list .item .item-properties>li:last-child{margin-right:0}.l5r5e .item-list .item .item-properties .equip-readied-control:hover{color:#963c41;background:#fff}.l5r5e .item-list .item p{font-size:.85rem;margin:0;padding:0 .5rem;max-width:100%}.l5r5e .item-list .item p:first-child{padding-top:.5rem}.l5r5e .item-list .item p:last-child{padding-bottom:.5rem}.l5r5e.advancement .sheet-header,.l5r5e.army-cohort .sheet-header,.l5r5e.army-fortification .sheet-header,.l5r5e.armor .sheet-header,.l5r5e.bond .sheet-header,.l5r5e.item .sheet-header,.l5r5e.item-pattern .sheet-header,.l5r5e.peculiarity .sheet-header,.l5r5e.property .sheet-header,.l5r5e.signature-scroll .sheet-header,.l5r5e.technique .sheet-header,.l5r5e.title .sheet-header,.l5r5e.weapon .sheet-header{margin-bottom:.5rem}.l5r5e.advancement .sheet-header img,.l5r5e.army-cohort .sheet-header img,.l5r5e.army-fortification .sheet-header img,.l5r5e.armor .sheet-header img,.l5r5e.bond .sheet-header img,.l5r5e.item .sheet-header img,.l5r5e.item-pattern .sheet-header img,.l5r5e.peculiarity .sheet-header img,.l5r5e.property .sheet-header img,.l5r5e.signature-scroll .sheet-header img,.l5r5e.technique .sheet-header img,.l5r5e.title .sheet-header img,.l5r5e.weapon .sheet-header img{flex:0 0 90px;height:90px;width:90px;background:rgba(255,255,255,.25)}.l5r5e.advancement .sheet-header h1 input,.l5r5e.army-cohort .sheet-header h1 input,.l5r5e.army-fortification .sheet-header h1 input,.l5r5e.armor .sheet-header h1 input,.l5r5e.bond .sheet-header h1 input,.l5r5e.item .sheet-header h1 input,.l5r5e.item-pattern .sheet-header h1 input,.l5r5e.peculiarity .sheet-header h1 input,.l5r5e.property .sheet-header h1 input,.l5r5e.signature-scroll .sheet-header h1 input,.l5r5e.technique .sheet-header h1 input,.l5r5e.title .sheet-header h1 input,.l5r5e.weapon .sheet-header h1 input{height:5.5rem}.l5r5e.advancement fieldset input[name="system.effects"],.l5r5e.army-cohort fieldset input[name="system.effects"],.l5r5e.army-fortification fieldset input[name="system.effects"],.l5r5e.armor fieldset input[name="system.effects"],.l5r5e.bond fieldset input[name="system.effects"],.l5r5e.item fieldset input[name="system.effects"],.l5r5e.item-pattern fieldset input[name="system.effects"],.l5r5e.peculiarity fieldset input[name="system.effects"],.l5r5e.property fieldset input[name="system.effects"],.l5r5e.signature-scroll fieldset input[name="system.effects"],.l5r5e.technique fieldset input[name="system.effects"],.l5r5e.title fieldset input[name="system.effects"],.l5r5e.weapon fieldset input[name="system.effects"]{text-align:left}.l5r5e.advancement .sheet-body,.l5r5e.army-cohort .sheet-body,.l5r5e.army-fortification .sheet-body,.l5r5e.armor .sheet-body,.l5r5e.bond .sheet-body,.l5r5e.item .sheet-body,.l5r5e.item-pattern .sheet-body,.l5r5e.peculiarity .sheet-body,.l5r5e.property .sheet-body,.l5r5e.signature-scroll .sheet-body,.l5r5e.technique .sheet-body,.l5r5e.title .sheet-body,.l5r5e.weapon .sheet-body{flex:100%;height:calc(100% - 90px - .25rem);align-self:stretch;display:flex;flex-wrap:wrap}.l5r5e.advancement article,.l5r5e.army-cohort article,.l5r5e.army-fortification article,.l5r5e.armor article,.l5r5e.bond article,.l5r5e.item article,.l5r5e.item-pattern article,.l5r5e.peculiarity article,.l5r5e.property article,.l5r5e.signature-scroll article,.l5r5e.technique article,.l5r5e.title article,.l5r5e.weapon article{display:flex;flex-wrap:wrap;min-height:auto}.l5r5e.advancement article label,.l5r5e.army-cohort article label,.l5r5e.army-fortification article label,.l5r5e.armor article label,.l5r5e.bond article label,.l5r5e.item article label,.l5r5e.item-pattern article label,.l5r5e.peculiarity article label,.l5r5e.property article label,.l5r5e.signature-scroll article label,.l5r5e.technique article label,.l5r5e.title article label,.l5r5e.weapon article label{color:#5a6e5a;margin:.25rem;line-height:1.5rem}.l5r5e.advancement article.attributes,.l5r5e.army-cohort article.attributes,.l5r5e.army-fortification article.attributes,.l5r5e.armor article.attributes,.l5r5e.bond article.attributes,.l5r5e.item article.attributes,.l5r5e.item-pattern article.attributes,.l5r5e.peculiarity article.attributes,.l5r5e.property article.attributes,.l5r5e.signature-scroll article.attributes,.l5r5e.technique article.attributes,.l5r5e.title article.attributes,.l5r5e.weapon article.attributes{align-self:flex-start;width:100%;height:6.5rem}.l5r5e.advancement article.attributes #advancement_type,.l5r5e.advancement article.attributes #advancement_skill,.l5r5e.army-cohort article.attributes #advancement_type,.l5r5e.army-cohort article.attributes #advancement_skill,.l5r5e.army-fortification article.attributes #advancement_type,.l5r5e.army-fortification article.attributes #advancement_skill,.l5r5e.armor article.attributes #advancement_type,.l5r5e.armor article.attributes #advancement_skill,.l5r5e.bond article.attributes #advancement_type,.l5r5e.bond article.attributes #advancement_skill,.l5r5e.item article.attributes #advancement_type,.l5r5e.item article.attributes #advancement_skill,.l5r5e.item-pattern article.attributes #advancement_type,.l5r5e.item-pattern article.attributes #advancement_skill,.l5r5e.peculiarity article.attributes #advancement_type,.l5r5e.peculiarity article.attributes #advancement_skill,.l5r5e.property article.attributes #advancement_type,.l5r5e.property article.attributes #advancement_skill,.l5r5e.signature-scroll article.attributes #advancement_type,.l5r5e.signature-scroll article.attributes #advancement_skill,.l5r5e.technique article.attributes #advancement_type,.l5r5e.technique article.attributes #advancement_skill,.l5r5e.title article.attributes #advancement_type,.l5r5e.title article.attributes #advancement_skill,.l5r5e.weapon article.attributes #advancement_type,.l5r5e.weapon article.attributes #advancement_skill{flex:0 0 calc(40% - 2rem);margin:.25rem}.l5r5e.advancement article.attributes select[name="system.skill"],.l5r5e.advancement article.attributes select[name="system.ring"],.l5r5e.advancement article.attributes select[name="system.peculiarity_type"],.l5r5e.advancement article.attributes select[name="system.technique_type"],.l5r5e.army-cohort article.attributes select[name="system.skill"],.l5r5e.army-cohort article.attributes select[name="system.ring"],.l5r5e.army-cohort article.attributes select[name="system.peculiarity_type"],.l5r5e.army-cohort article.attributes select[name="system.technique_type"],.l5r5e.army-fortification article.attributes select[name="system.skill"],.l5r5e.army-fortification article.attributes select[name="system.ring"],.l5r5e.army-fortification article.attributes select[name="system.peculiarity_type"],.l5r5e.army-fortification article.attributes select[name="system.technique_type"],.l5r5e.armor article.attributes select[name="system.skill"],.l5r5e.armor article.attributes select[name="system.ring"],.l5r5e.armor article.attributes select[name="system.peculiarity_type"],.l5r5e.armor article.attributes select[name="system.technique_type"],.l5r5e.bond article.attributes select[name="system.skill"],.l5r5e.bond article.attributes select[name="system.ring"],.l5r5e.bond article.attributes select[name="system.peculiarity_type"],.l5r5e.bond article.attributes select[name="system.technique_type"],.l5r5e.item article.attributes select[name="system.skill"],.l5r5e.item article.attributes select[name="system.ring"],.l5r5e.item article.attributes select[name="system.peculiarity_type"],.l5r5e.item article.attributes select[name="system.technique_type"],.l5r5e.item-pattern article.attributes select[name="system.skill"],.l5r5e.item-pattern article.attributes select[name="system.ring"],.l5r5e.item-pattern article.attributes select[name="system.peculiarity_type"],.l5r5e.item-pattern article.attributes select[name="system.technique_type"],.l5r5e.peculiarity article.attributes select[name="system.skill"],.l5r5e.peculiarity article.attributes select[name="system.ring"],.l5r5e.peculiarity article.attributes select[name="system.peculiarity_type"],.l5r5e.peculiarity article.attributes select[name="system.technique_type"],.l5r5e.property article.attributes select[name="system.skill"],.l5r5e.property article.attributes select[name="system.ring"],.l5r5e.property article.attributes select[name="system.peculiarity_type"],.l5r5e.property article.attributes select[name="system.technique_type"],.l5r5e.signature-scroll article.attributes select[name="system.skill"],.l5r5e.signature-scroll article.attributes select[name="system.ring"],.l5r5e.signature-scroll article.attributes select[name="system.peculiarity_type"],.l5r5e.signature-scroll article.attributes select[name="system.technique_type"],.l5r5e.technique article.attributes select[name="system.skill"],.l5r5e.technique article.attributes select[name="system.ring"],.l5r5e.technique article.attributes select[name="system.peculiarity_type"],.l5r5e.technique article.attributes select[name="system.technique_type"],.l5r5e.title article.attributes select[name="system.skill"],.l5r5e.title article.attributes select[name="system.ring"],.l5r5e.title article.attributes select[name="system.peculiarity_type"],.l5r5e.title article.attributes select[name="system.technique_type"],.l5r5e.weapon article.attributes select[name="system.skill"],.l5r5e.weapon article.attributes select[name="system.ring"],.l5r5e.weapon article.attributes select[name="system.peculiarity_type"],.l5r5e.weapon article.attributes select[name="system.technique_type"]{flex:0 0 calc(40% - .5rem);margin:.25rem}.l5r5e.advancement article.attributes .attribute-value,.l5r5e.advancement article.attributes .attribute,.l5r5e.advancement article.attributes .value,.l5r5e.army-cohort article.attributes .attribute-value,.l5r5e.army-cohort article.attributes .attribute,.l5r5e.army-cohort article.attributes .value,.l5r5e.army-fortification article.attributes .attribute-value,.l5r5e.army-fortification article.attributes .attribute,.l5r5e.army-fortification article.attributes .value,.l5r5e.armor article.attributes .attribute-value,.l5r5e.armor article.attributes .attribute,.l5r5e.armor article.attributes .value,.l5r5e.bond article.attributes .attribute-value,.l5r5e.bond article.attributes .attribute,.l5r5e.bond article.attributes .value,.l5r5e.item article.attributes .attribute-value,.l5r5e.item article.attributes .attribute,.l5r5e.item article.attributes .value,.l5r5e.item-pattern article.attributes .attribute-value,.l5r5e.item-pattern article.attributes .attribute,.l5r5e.item-pattern article.attributes .value,.l5r5e.peculiarity article.attributes .attribute-value,.l5r5e.peculiarity article.attributes .attribute,.l5r5e.peculiarity article.attributes .value,.l5r5e.property article.attributes .attribute-value,.l5r5e.property article.attributes .attribute,.l5r5e.property article.attributes .value,.l5r5e.signature-scroll article.attributes .attribute-value,.l5r5e.signature-scroll article.attributes .attribute,.l5r5e.signature-scroll article.attributes .value,.l5r5e.technique article.attributes .attribute-value,.l5r5e.technique article.attributes .attribute,.l5r5e.technique article.attributes .value,.l5r5e.title article.attributes .attribute-value,.l5r5e.title article.attributes .attribute,.l5r5e.title article.attributes .value,.l5r5e.weapon article.attributes .attribute-value,.l5r5e.weapon article.attributes .attribute,.l5r5e.weapon article.attributes .value{flex:1 1 auto;margin:.5rem .25rem .25rem}.l5r5e.advancement article.attributes select[name="system.advancement_type"],.l5r5e.advancement article.attributes select[name="system.skill"],.l5r5e.army-cohort article.attributes select[name="system.advancement_type"],.l5r5e.army-cohort article.attributes select[name="system.skill"],.l5r5e.army-fortification article.attributes select[name="system.advancement_type"],.l5r5e.army-fortification article.attributes select[name="system.skill"],.l5r5e.armor article.attributes select[name="system.advancement_type"],.l5r5e.armor article.attributes select[name="system.skill"],.l5r5e.bond article.attributes select[name="system.advancement_type"],.l5r5e.bond article.attributes select[name="system.skill"],.l5r5e.item article.attributes select[name="system.advancement_type"],.l5r5e.item article.attributes select[name="system.skill"],.l5r5e.item-pattern article.attributes select[name="system.advancement_type"],.l5r5e.item-pattern article.attributes select[name="system.skill"],.l5r5e.peculiarity article.attributes select[name="system.advancement_type"],.l5r5e.peculiarity article.attributes select[name="system.skill"],.l5r5e.property article.attributes select[name="system.advancement_type"],.l5r5e.property article.attributes select[name="system.skill"],.l5r5e.signature-scroll article.attributes select[name="system.advancement_type"],.l5r5e.signature-scroll article.attributes select[name="system.skill"],.l5r5e.technique article.attributes select[name="system.advancement_type"],.l5r5e.technique article.attributes select[name="system.skill"],.l5r5e.title article.attributes select[name="system.advancement_type"],.l5r5e.title article.attributes select[name="system.skill"],.l5r5e.weapon article.attributes select[name="system.advancement_type"],.l5r5e.weapon article.attributes select[name="system.skill"]{text-transform:capitalize}.l5r5e.advancement article.attributes .type,.l5r5e.army-cohort article.attributes .type,.l5r5e.army-fortification article.attributes .type,.l5r5e.armor article.attributes .type,.l5r5e.bond article.attributes .type,.l5r5e.item article.attributes .type,.l5r5e.item-pattern article.attributes .type,.l5r5e.peculiarity article.attributes .type,.l5r5e.property article.attributes .type,.l5r5e.signature-scroll article.attributes .type,.l5r5e.technique article.attributes .type,.l5r5e.title article.attributes .type,.l5r5e.weapon article.attributes .type{display:block}.l5r5e.advancement article.attributes .type label,.l5r5e.army-cohort article.attributes .type label,.l5r5e.army-fortification article.attributes .type label,.l5r5e.armor article.attributes .type label,.l5r5e.bond article.attributes .type label,.l5r5e.item article.attributes .type label,.l5r5e.item-pattern article.attributes .type label,.l5r5e.peculiarity article.attributes .type label,.l5r5e.property article.attributes .type label,.l5r5e.signature-scroll article.attributes .type label,.l5r5e.technique article.attributes .type label,.l5r5e.title article.attributes .type label,.l5r5e.weapon article.attributes .type label{width:calc(50% - .5rem);float:left}.l5r5e.advancement article.attributes .properties,.l5r5e.army-cohort article.attributes .properties,.l5r5e.army-fortification article.attributes .properties,.l5r5e.armor article.attributes .properties,.l5r5e.bond article.attributes .properties,.l5r5e.item article.attributes .properties,.l5r5e.item-pattern article.attributes .properties,.l5r5e.peculiarity article.attributes .properties,.l5r5e.property article.attributes .properties,.l5r5e.signature-scroll article.attributes .properties,.l5r5e.technique article.attributes .properties,.l5r5e.title article.attributes .properties,.l5r5e.weapon article.attributes .properties{flex:0 0 calc(50% - .5rem);margin:.25rem}.l5r5e.advancement article.attributes .equipped,.l5r5e.army-cohort article.attributes .equipped,.l5r5e.army-fortification article.attributes .equipped,.l5r5e.armor article.attributes .equipped,.l5r5e.bond article.attributes .equipped,.l5r5e.item article.attributes .equipped,.l5r5e.item-pattern article.attributes .equipped,.l5r5e.peculiarity article.attributes .equipped,.l5r5e.property article.attributes .equipped,.l5r5e.signature-scroll article.attributes .equipped,.l5r5e.technique article.attributes .equipped,.l5r5e.title article.attributes .equipped,.l5r5e.weapon article.attributes .equipped{flex:100%;margin:0;text-align:right}.l5r5e.advancement article.attributes input[type=text],.l5r5e.advancement article.attributes input[type=number],.l5r5e.army-cohort article.attributes input[type=text],.l5r5e.army-cohort article.attributes input[type=number],.l5r5e.army-fortification article.attributes input[type=text],.l5r5e.army-fortification article.attributes input[type=number],.l5r5e.armor article.attributes input[type=text],.l5r5e.armor article.attributes input[type=number],.l5r5e.bond article.attributes input[type=text],.l5r5e.bond article.attributes input[type=number],.l5r5e.item article.attributes input[type=text],.l5r5e.item article.attributes input[type=number],.l5r5e.item-pattern article.attributes input[type=text],.l5r5e.item-pattern article.attributes input[type=number],.l5r5e.peculiarity article.attributes input[type=text],.l5r5e.peculiarity article.attributes input[type=number],.l5r5e.property article.attributes input[type=text],.l5r5e.property article.attributes input[type=number],.l5r5e.signature-scroll article.attributes input[type=text],.l5r5e.signature-scroll article.attributes input[type=number],.l5r5e.technique article.attributes input[type=text],.l5r5e.technique article.attributes input[type=number],.l5r5e.title article.attributes input[type=text],.l5r5e.title article.attributes input[type=number],.l5r5e.weapon article.attributes input[type=text],.l5r5e.weapon article.attributes input[type=number]{width:2rem}.l5r5e.advancement article.attributes input[type=text].grip,.l5r5e.advancement article.attributes input[type=number].grip,.l5r5e.army-cohort article.attributes input[type=text].grip,.l5r5e.army-cohort article.attributes input[type=number].grip,.l5r5e.army-fortification article.attributes input[type=text].grip,.l5r5e.army-fortification article.attributes input[type=number].grip,.l5r5e.armor article.attributes input[type=text].grip,.l5r5e.armor article.attributes input[type=number].grip,.l5r5e.bond article.attributes input[type=text].grip,.l5r5e.bond article.attributes input[type=number].grip,.l5r5e.item article.attributes input[type=text].grip,.l5r5e.item article.attributes input[type=number].grip,.l5r5e.item-pattern article.attributes input[type=text].grip,.l5r5e.item-pattern article.attributes input[type=number].grip,.l5r5e.peculiarity article.attributes input[type=text].grip,.l5r5e.peculiarity article.attributes input[type=number].grip,.l5r5e.property article.attributes input[type=text].grip,.l5r5e.property article.attributes input[type=number].grip,.l5r5e.signature-scroll article.attributes input[type=text].grip,.l5r5e.signature-scroll article.attributes input[type=number].grip,.l5r5e.technique article.attributes input[type=text].grip,.l5r5e.technique article.attributes input[type=number].grip,.l5r5e.title article.attributes input[type=text].grip,.l5r5e.title article.attributes input[type=number].grip,.l5r5e.weapon article.attributes input[type=text].grip,.l5r5e.weapon article.attributes input[type=number].grip{width:calc(100% - 4rem);margin-bottom:.25rem}.l5r5e.advancement article.attributes input[name="system.zeni"],.l5r5e.army-cohort article.attributes input[name="system.zeni"],.l5r5e.army-fortification article.attributes input[name="system.zeni"],.l5r5e.armor article.attributes input[name="system.zeni"],.l5r5e.bond article.attributes input[name="system.zeni"],.l5r5e.item article.attributes input[name="system.zeni"],.l5r5e.item-pattern article.attributes input[name="system.zeni"],.l5r5e.peculiarity article.attributes input[name="system.zeni"],.l5r5e.property article.attributes input[name="system.zeni"],.l5r5e.signature-scroll article.attributes input[name="system.zeni"],.l5r5e.technique article.attributes input[name="system.zeni"],.l5r5e.title article.attributes input[name="system.zeni"],.l5r5e.weapon article.attributes input[name="system.zeni"]{width:7rem;float:right}.l5r5e.advancement article.attributes fieldset input[type=text],.l5r5e.advancement article.attributes fieldset input[type=number],.l5r5e.army-cohort article.attributes fieldset input[type=text],.l5r5e.army-cohort article.attributes fieldset input[type=number],.l5r5e.army-fortification article.attributes fieldset input[type=text],.l5r5e.army-fortification article.attributes fieldset input[type=number],.l5r5e.armor article.attributes fieldset input[type=text],.l5r5e.armor article.attributes fieldset input[type=number],.l5r5e.bond article.attributes fieldset input[type=text],.l5r5e.bond article.attributes fieldset input[type=number],.l5r5e.item article.attributes fieldset input[type=text],.l5r5e.item article.attributes fieldset input[type=number],.l5r5e.item-pattern article.attributes fieldset input[type=text],.l5r5e.item-pattern article.attributes fieldset input[type=number],.l5r5e.peculiarity article.attributes fieldset input[type=text],.l5r5e.peculiarity article.attributes fieldset input[type=number],.l5r5e.property article.attributes fieldset input[type=text],.l5r5e.property article.attributes fieldset input[type=number],.l5r5e.signature-scroll article.attributes fieldset input[type=text],.l5r5e.signature-scroll article.attributes fieldset input[type=number],.l5r5e.technique article.attributes fieldset input[type=text],.l5r5e.technique article.attributes fieldset input[type=number],.l5r5e.title article.attributes fieldset input[type=text],.l5r5e.title article.attributes fieldset input[type=number],.l5r5e.weapon article.attributes fieldset input[type=text],.l5r5e.weapon article.attributes fieldset input[type=number]{float:right}.l5r5e.advancement article.attributes .attribute.full,.l5r5e.army-cohort article.attributes .attribute.full,.l5r5e.army-fortification article.attributes .attribute.full,.l5r5e.armor article.attributes .attribute.full,.l5r5e.bond article.attributes .attribute.full,.l5r5e.item article.attributes .attribute.full,.l5r5e.item-pattern article.attributes .attribute.full,.l5r5e.peculiarity article.attributes .attribute.full,.l5r5e.property article.attributes .attribute.full,.l5r5e.signature-scroll article.attributes .attribute.full,.l5r5e.technique article.attributes .attribute.full,.l5r5e.title article.attributes .attribute.full,.l5r5e.weapon article.attributes .attribute.full{flex:100%}.l5r5e.advancement article.attributes .attribute.full input,.l5r5e.army-cohort article.attributes .attribute.full input,.l5r5e.army-fortification article.attributes .attribute.full input,.l5r5e.armor article.attributes .attribute.full input,.l5r5e.bond article.attributes .attribute.full input,.l5r5e.item article.attributes .attribute.full input,.l5r5e.item-pattern article.attributes .attribute.full input,.l5r5e.peculiarity article.attributes .attribute.full input,.l5r5e.property article.attributes .attribute.full input,.l5r5e.signature-scroll article.attributes .attribute.full input,.l5r5e.technique article.attributes .attribute.full input,.l5r5e.title article.attributes .attribute.full input,.l5r5e.weapon article.attributes .attribute.full input{float:right;width:70%}.l5r5e.advancement article.attributes .bonds-types,.l5r5e.army-cohort article.attributes .bonds-types,.l5r5e.army-fortification article.attributes .bonds-types,.l5r5e.armor article.attributes .bonds-types,.l5r5e.bond article.attributes .bonds-types,.l5r5e.item article.attributes .bonds-types,.l5r5e.item-pattern article.attributes .bonds-types,.l5r5e.peculiarity article.attributes .bonds-types,.l5r5e.property article.attributes .bonds-types,.l5r5e.signature-scroll article.attributes .bonds-types,.l5r5e.technique article.attributes .bonds-types,.l5r5e.title article.attributes .bonds-types,.l5r5e.weapon article.attributes .bonds-types{flex:100%}.l5r5e.advancement article.attributes .bonds-types input,.l5r5e.army-cohort article.attributes .bonds-types input,.l5r5e.army-fortification article.attributes .bonds-types input,.l5r5e.armor article.attributes .bonds-types input,.l5r5e.bond article.attributes .bonds-types input,.l5r5e.item article.attributes .bonds-types input,.l5r5e.item-pattern article.attributes .bonds-types input,.l5r5e.peculiarity article.attributes .bonds-types input,.l5r5e.property article.attributes .bonds-types input,.l5r5e.signature-scroll article.attributes .bonds-types input,.l5r5e.technique article.attributes .bonds-types input,.l5r5e.title article.attributes .bonds-types input,.l5r5e.weapon article.attributes .bonds-types input{width:75%;float:right}.l5r5e.advancement article.infos,.l5r5e.army-cohort article.infos,.l5r5e.army-fortification article.infos,.l5r5e.armor article.infos,.l5r5e.bond article.infos,.l5r5e.item article.infos,.l5r5e.item-pattern article.infos,.l5r5e.peculiarity article.infos,.l5r5e.property article.infos,.l5r5e.signature-scroll article.infos,.l5r5e.technique article.infos,.l5r5e.title article.infos,.l5r5e.weapon article.infos{display:flex;align-self:stretch;height:calc(100% - 7.5rem);width:100%;padding-bottom:1.25rem}.l5r5e.advancement article.infos .reference,.l5r5e.army-cohort article.infos .reference,.l5r5e.army-fortification article.infos .reference,.l5r5e.armor article.infos .reference,.l5r5e.bond article.infos .reference,.l5r5e.item article.infos .reference,.l5r5e.item-pattern article.infos .reference,.l5r5e.peculiarity article.infos .reference,.l5r5e.property article.infos .reference,.l5r5e.signature-scroll article.infos .reference,.l5r5e.technique article.infos .reference,.l5r5e.title article.infos .reference,.l5r5e.weapon article.infos .reference{display:flex;flex:0 0 calc(100% - .5rem);margin:.5rem .25rem}.l5r5e.advancement article.infos .reference input[name="system.source_reference.source"],.l5r5e.army-cohort article.infos .reference input[name="system.source_reference.source"],.l5r5e.army-fortification article.infos .reference input[name="system.source_reference.source"],.l5r5e.armor article.infos .reference input[name="system.source_reference.source"],.l5r5e.bond article.infos .reference input[name="system.source_reference.source"],.l5r5e.item article.infos .reference input[name="system.source_reference.source"],.l5r5e.item-pattern article.infos .reference input[name="system.source_reference.source"],.l5r5e.peculiarity article.infos .reference input[name="system.source_reference.source"],.l5r5e.property article.infos .reference input[name="system.source_reference.source"],.l5r5e.signature-scroll article.infos .reference input[name="system.source_reference.source"],.l5r5e.technique article.infos .reference input[name="system.source_reference.source"],.l5r5e.title article.infos .reference input[name="system.source_reference.source"],.l5r5e.weapon article.infos .reference input[name="system.source_reference.source"]{text-align:center;width:70%}.l5r5e.advancement article.infos .reference input[name="system.source_reference.page"],.l5r5e.army-cohort article.infos .reference input[name="system.source_reference.page"],.l5r5e.army-fortification article.infos .reference input[name="system.source_reference.page"],.l5r5e.armor article.infos .reference input[name="system.source_reference.page"],.l5r5e.bond article.infos .reference input[name="system.source_reference.page"],.l5r5e.item article.infos .reference input[name="system.source_reference.page"],.l5r5e.item-pattern article.infos .reference input[name="system.source_reference.page"],.l5r5e.peculiarity article.infos .reference input[name="system.source_reference.page"],.l5r5e.property article.infos .reference input[name="system.source_reference.page"],.l5r5e.signature-scroll article.infos .reference input[name="system.source_reference.page"],.l5r5e.technique article.infos .reference input[name="system.source_reference.page"],.l5r5e.title article.infos .reference input[name="system.source_reference.page"],.l5r5e.weapon article.infos .reference input[name="system.source_reference.page"]{width:30%}.l5r5e.advancement article.infos fieldset,.l5r5e.army-cohort article.infos fieldset,.l5r5e.army-fortification article.infos fieldset,.l5r5e.armor article.infos fieldset,.l5r5e.bond article.infos fieldset,.l5r5e.item article.infos fieldset,.l5r5e.item-pattern article.infos fieldset,.l5r5e.peculiarity article.infos fieldset,.l5r5e.property article.infos fieldset,.l5r5e.signature-scroll article.infos fieldset,.l5r5e.technique article.infos fieldset,.l5r5e.title article.infos fieldset,.l5r5e.weapon article.infos fieldset{align-self:stretch;height:calc(100% - 2rem);box-sizing:content-box}.l5r5e.advancement article.properties fieldset,.l5r5e.army-cohort article.properties fieldset,.l5r5e.army-fortification article.properties fieldset,.l5r5e.armor article.properties fieldset,.l5r5e.bond article.properties fieldset,.l5r5e.item article.properties fieldset,.l5r5e.item-pattern article.properties fieldset,.l5r5e.peculiarity article.properties fieldset,.l5r5e.property article.properties fieldset,.l5r5e.signature-scroll article.properties fieldset,.l5r5e.technique article.properties fieldset,.l5r5e.title article.properties fieldset,.l5r5e.weapon article.properties fieldset{margin-bottom:.5rem}.l5r5e.advancement article.attributes .attribute-value,.l5r5e.advancement article.attributes .attribute,.l5r5e.advancement article.attributes .value{flex:0 0 calc(33% - .5rem)}.l5r5e.advancement article.attributes .cursus{flex:0 0 calc(19% - .5rem);line-height:.75rem;text-align:right;margin:0 .25rem}.l5r5e.advancement article.attributes .cursus input{margin-top:.25rem}.l5r5e.technique article.attributes{height:7.5rem}.l5r5e.technique article.attributes input[type=text]{width:10rem}.l5r5e.technique article.attributes .cursus{flex:0 0 calc(20% - .5rem);line-height:.75rem;text-align:right;margin:0 .25rem}.l5r5e.technique article.attributes .cursus input{margin-top:.25rem}.l5r5e.technique article.infos{height:calc(100% - 8.5rem)}.l5r5e.peculiarity article.attributes{height:8.5rem}.l5r5e.peculiarity article.attributes .cursus{flex:0 0 calc(20% - .5rem);line-height:.75rem;text-align:right;margin:0 .25rem}.l5r5e.peculiarity article.attributes .cursus input{margin-top:.25rem}.l5r5e.peculiarity article.infos{height:calc(100% - 9.5rem)}.l5r5e.item article.attributes{height:4.5rem}.l5r5e.item article.attributes .properties{flex:100%}.l5r5e.item article.infos{flex:0 0 60%;height:calc(100% - 5.5rem)}.l5r5e.item article.properties{flex:0 0 40%;height:calc(100% - 5.5rem)}.l5r5e.property article.properties{width:100%}.l5r5e.property article.infos{height:calc(100% - 4.5rem)}.l5r5e.armor article.attributes{height:9.5rem}.l5r5e.armor article.infos{flex:0 0 60%;height:calc(100% - 10.5rem)}.l5r5e.armor article.properties{flex:0 0 40%;height:calc(100% - 10.5rem)}.l5r5e.weapon article.attributes{height:18.5rem}.l5r5e.weapon article.attributes .stats,.l5r5e.weapon article.attributes .attribute-value{flex:0 0 calc(50% - .5rem);flex-wrap:wrap;margin:.25rem}.l5r5e.weapon article.attributes .stats label,.l5r5e.weapon article.attributes .attribute-value label{width:100%}.l5r5e.weapon article.attributes .stats input[type=text]{text-align:center}.l5r5e.weapon article.attributes .value{flex:0 0 calc(25% - .5rem)}.l5r5e.weapon article.attributes .category,.l5r5e.weapon article.attributes .skillType{flex:0 0 calc(50% - .5rem)}.l5r5e.weapon article.attributes .category input,.l5r5e.weapon article.attributes .category .attribute-dtype,.l5r5e.weapon article.attributes .skillType input,.l5r5e.weapon article.attributes .skillType .attribute-dtype{width:100%;margin:.25rem}.l5r5e.weapon article.infos{flex:0 0 60%;height:calc(100% - 19.5rem)}.l5r5e.weapon article.properties{flex:0 0 40%;height:calc(100% - 19.5rem)}.l5r5e.item-pattern .attribute.item{display:inline}.l5r5e.item-pattern .attribute.item .item-properties{display:inline}.l5r5e.item-pattern .attribute.item .item-properties li{display:inline}.l5r5e.title .sheet-body{height:calc(100% - 90px - 4.25rem)}.l5r5e.title article.infos{height:calc(100% - 3.5rem)}.l5r5e.title article.attributes{height:auto;background:rgba(0,0,0,0)}.l5r5e.title article.experience{flex:100%;height:calc(100% - 4rem)}.l5r5e.army-cohort .sheet-body{height:calc(100% - 92px - 3.6rem)}.l5r5e.army-cohort article .fa-sign-in-alt{transform:rotate(90deg)}.l5r5e.army-cohort article.attributes{height:7rem}.l5r5e.army-cohort article.attributes input[type=text]{width:100%}.l5r5e.army-cohort article.attributes .actor-remove-control{font-size:12px}.l5r5e.army-cohort article.attributes .flx50{flex:0 0 calc(50% - .5rem)}.l5r5e.army-cohort article.attributes .flx100{flex:0 0 calc(100% - .5rem)}.l5r5e.army-cohort article.attributes .editor-container{min-height:8rem;max-height:14rem}.l5r5e.army-cohort article.abilities{align-self:stretch;height:calc(100% - 8rem);width:100%;box-sizing:content-box}.l5r5e.army-fortification .sheet-body{height:calc(100% - 92px)}.l5r5e.army-fortification article.infos{height:calc(100% - 4.5rem)}.l5r5e.army-fortification article.attributes{height:3.5rem}.l5r5e .item-list>li .item-description{flex:unset;height:0;margin:0;padding:0;font-size:.75rem;color:rgba(0,0,0,.75);overflow:hidden;background:rgba(0,0,0,.05);border:0 none;transition:height .25s ease-in}.l5r5e .item-list>li div.item-description{padding:0}.l5r5e .item-list>li div.item-description:hover,.l5r5e .item-list>li div.item-description:active{padding:0}.l5r5e .item-list>li:hover .item-description,.l5r5e .item-list>li:active .item-description{height:6rem;overflow-y:auto;scrollbar-width:thin;border:1px solid rgba(186,187,177,.5)}.l5r5e .item-list>li:hover p .item-description,.l5r5e .item-list>li:active p .item-description{padding:.25rem}.l5r5e .item-list .stance-content .item-description{display:none;height:auto}.l5r5e .item-list .stance-content .stance-active{display:block;height:auto;border:0 none}.l5r5e .item-list .stance-content:hover .item-description{height:auto;border:0 none}.l5r5e .item-list .stance-content:hover .stance-active{display:block}.l5r5e.twenty-questions-dialog .sheet-tabs{position:fixed;flex-direction:column;background:url("../assets/imgs/bg-20nav.webp") no-repeat;background-size:cover;width:4rem;height:41.58rem;margin:1%;line-height:3rem;padding:.25rem;border-bottom:0 none}.l5r5e.twenty-questions-dialog .errors{position:sticky;top:1rem;left:1rem;z-index:999;width:calc(100% - 1rem);background-color:#963c41;border:1px solid rgba(25,0,0,.75);color:#fff;border-radius:1rem;text-align:center;line-height:2rem}.l5r5e.twenty-questions-dialog h3{font-size:1.25rem;color:#5a6e5a;text-shadow:0 0 rgba(0,0,0,.25);margin:2rem 0 .5rem 1rem}.l5r5e.twenty-questions-dialog nav .item{color:#000;font-size:2rem;font-weight:bold;background-color:rgba(255,255,255,.25)}.l5r5e.twenty-questions-dialog nav .item.active,.l5r5e.twenty-questions-dialog nav .item:hover{color:#fff;background-color:rgba(73,12,11,.85);--notchSize: 0.5rem;-webkit-clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)));clip-path:polygon(0% var(--notchSize), var(--notchSize) 0%, calc(100% - var(--notchSize)) 0%, 100% var(--notchSize), 100% calc(100% - var(--notchSize)), calc(100% - var(--notchSize)) 100%, var(--notchSize) 100%, 0% calc(100% - var(--notchSize)))}.l5r5e.twenty-questions-dialog nav .item:hover{background-color:#5a6e5a}.l5r5e.twenty-questions-dialog article{padding:2% 2% 2% 18%}.l5r5e.twenty-questions-dialog article label.full{display:block;width:100%;text-align:right;font-size:1rem}.l5r5e.twenty-questions-dialog article label.full input{display:inline;width:80%;float:right;text-align:left;margin-left:.5rem}.l5r5e.twenty-questions-dialog article>label{font-size:1rem;padding:0 0 0 1rem;line-height:2rem}.l5r5e.twenty-questions-dialog article>label>*{line-height:1rem}.l5r5e.twenty-questions-dialog article table{width:100%;text-align:center}.l5r5e.twenty-questions-dialog article table tr th{color:#5a6e5a;font-weight:normal}.l5r5e.twenty-questions-dialog article table tr td{vertical-align:top;line-height:2rem;border:1px solid rgba(186,187,177,.5);font-size:.85rem;padding:.25rem}.l5r5e.twenty-questions-dialog article table tr td>*{line-height:1rem}.l5r5e.twenty-questions-dialog article table tr td>ul li{line-height:2rem}.l5r5e.twenty-questions-dialog article table tr td>ul li>*{line-height:1rem}.l5r5e.twenty-questions-dialog article table tr td.done{border:1px solid #699678;box-shadow:0 1px 5px #699678}.l5r5e.twenty-questions-dialog article select{height:2rem;color:#764f40;background:rgba(255,255,255,.25);border:1px solid rgba(255,255,255,.5);border-radius:.25rem;padding:0 .25rem;margin:.25rem;width:calc(100% - .5rem)}.l5r5e.twenty-questions-dialog article textarea{color:#764f40;background:rgba(255,255,255,.25);border:1px solid rgba(255,255,255,.5);margin:0 .25rem 1rem}.l5r5e.twenty-questions-dialog article hr{border-top:1px solid rgba(0,0,0,.25)}.l5r5e.twenty-questions-dialog article a.entity-link,.l5r5e.twenty-questions-dialog article a.inline-roll{color:#5a6e5a;background:rgba(255,255,255,.25);border:1px solid rgba(0,0,0,.25)}.l5r5e.twenty-questions-dialog article a.entity-link i,.l5r5e.twenty-questions-dialog article a.inline-roll i{color:#5a6e5a}.l5r5e.twenty-questions-dialog article .tq-drag-n-drop{border:0 none;padding:0}.l5r5e.twenty-questions-dialog article .third{width:230px}.l5r5e.twenty-questions-dialog article .fifty{width:49%}.l5r5e.twenty-questions-dialog article .or{width:100px}.l5r5e.twenty-questions-dialog article .dropbox{min-height:75px}.l5r5e.twenty-questions-dialog article .checklist{margin:.25rem .25rem 1rem}.l5r5e.twenty-questions-dialog article .checklist strong{display:block;width:100%;color:#764f40}.l5r5e.twenty-questions-dialog article .checklist label{font-size:.85rem;flex:0 0 auto;margin:0 .25rem .25rem;padding:0 .5rem;color:#5a6e5a;background:rgba(255,255,255,.5);border:1px solid #5a6e5a;border-radius:1rem}.l5r5e.twenty-questions-dialog article .checklist label.technique{padding:.25rem;margin:.25rem;border-radius:0;display:inline-block}.l5r5e.twenty-questions-dialog article .checklist input{margin:.25rem 0 0 0;height:.65rem;width:.65rem}.l5r5e.twenty-questions-dialog article #generchar_disclaimer{color:#963c41;font-weight:bold;font-size:1.25rem;text-align:center;flex:100%;padding:1rem 0}.l5r5e.twenty-questions-dialog article .next{margin:2rem 0 4rem}.l5r5e.twenty-questions-dialog article .autocomplete-wrapper{width:calc(100% - 2px)}#measurement .waypoint-label-additional{color:var(--color-text-emphatic);font-size:var(--font-size-24)}#tactical-grid-settings input[type=number]:invalid{background-color:red}#tactical-grid-settings input[type=number]:-moz-read-only{border:none;outline:none;box-shadow:none;background:rgba(0,0,0,0);cursor:default;pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none}#tactical-grid-settings input[type=number]:read-only{border:none;outline:none;box-shadow:none;background:rgba(0,0,0,0);cursor:default;pointer-events:none;user-select:none;-webkit-user-select:none;-moz-user-select:none}#tactical-grid-settings .range_band{display:flex;flex-flow:wrap}#tactical-grid-settings .range_band fieldset{flex:25%}}
\ No newline at end of file
diff --git a/system/styles/scss/global-appv2.scss b/system/styles/scss/global-appv2.scss
index ea0bd6d..d185aa3 100644
--- a/system/styles/scss/global-appv2.scss
+++ b/system/styles/scss/global-appv2.scss
@@ -1,5 +1,5 @@
.application {
- color: var(--color-text-dark-primary);
+ color: var(--color-text-primary);
.scrollable {
--scroll-margin: 0;
diff --git a/system/styles/scss/ui.scss b/system/styles/scss/ui.scss
index 6525080..97f5b7d 100644
--- a/system/styles/scss/ui.scss
+++ b/system/styles/scss/ui.scss
@@ -1,5 +1,67 @@
/* SCSS */
+@mixin theme-dark {
+ // Restricted entries
+ --l5r5e-restricted-opacity: 0.6;
+ --l5r5e-restricted-filter: grayscale(0.3);
+
+ // l5r5e-multi-select
+ --l5r5e-dropdown-bg: var(--color-cool-4, #302831);
+ --l5r5e-dropdown-color: var(--color-light-2, #efe6d8);
+ --l5r5e-dropdown-shadow: 0 4px 12px rgba(0, 0, 0, 0.6);
+ --l5r5e-dropdown-group-color: var(--color-light-5, #9f8475);
+ --l5r5e-dropdown-group-bg: rgba(255, 255, 255, 0.05);
+ --l5r5e-dropdown-option-color: var(--color-light-2, #efe6d8);
+ --l5r5e-dropdown-no-results-color: var(--color-light-5, #9f8475);
+ --l5r5e-chip-border-color: var(--color-light-5, #9f8475);
+ --l5r5e-chip-bg: rgba(93, 20, 43, 0.12);
+ --l5r5e-chip-color: var(--color-light-2, #efe6d8);
+
+ // selection ring
+ --l5r5e-filter-selected-opacity: 0.6;
+ --l5r5e-filter-selected-tint: invert(1) sepia(1) saturate(4) hue-rotate(5deg); // → gold
+}
+
+@mixin theme-light {
+ // Restricted entries
+ --l5r5e-restricted-opacity: 0.35;
+ --l5r5e-restricted-filter: grayscale(1) brightness(1.1);
+
+ // l5r5e-multi-select
+ --l5r5e-dropdown-bg: #f4efe6;
+ --l5r5e-dropdown-color: var(--color-dark-2, #222);
+ --l5r5e-dropdown-shadow: 0 4px 12px rgba(0, 0, 0, 0.2);
+ --l5r5e-dropdown-group-color: var(--color-dark-4, #444);
+ --l5r5e-dropdown-group-bg: rgba(0, 0, 0, 0.05);
+ --l5r5e-dropdown-option-color: var(--color-dark-2, #222);
+ --l5r5e-dropdown-no-results-color: var(--color-dark-4, #444);
+ --l5r5e-chip-border-color: var(--color-light-5, #9f8475);
+ --l5r5e-chip-bg: rgba(93, 20, 43, 0.08);
+ --l5r5e-chip-color: var(--color-dark-2, #222);
+
+ // selection ring
+ --l5r5e-filter-selected-opacity: 0.45;
+ --l5r5e-filter-selected-tint: invert(0.15) sepia(1) saturate(6) hue-rotate(295deg) brightness(0.7); // → deep red
+}
+
+body.theme-light {
+ @include theme-light();
+}
+body.theme-dark {
+ @include theme-dark();
+}
+
+.application.theme-light,
+.themed.theme-light {
+ @include theme-light();
+}
+.application.theme-dark,
+.themed.theme-dark {
+ @include theme-dark();
+}
+
+// ─────────────────────────────────────────────────────────────
+
button {
font-size: 0.75rem;
cursor: url("../assets/cursors/pointer.webp"), pointer;
@@ -29,7 +91,6 @@ button {
}
}
-// logo
#logo {
content: url("../assets/l5r-logo.webp");
height: 80px;
@@ -38,22 +99,8 @@ button {
opacity: 0.8;
}
-// navigation
#navigation {
left: 120px;
- //&:before {
- // content: "";
- // background: url("../assets/l5r-logo.webp") no-repeat 0 0;
- // background-size: cover;
- // height: 80px;
- // width: 88px;
- // opacity: 0.65;
- // position: absolute;
- // left: -12rem;
- // &:hover {
- // opacity: 0.75;
- // }
- //}
#nav-toggle,
#scene-list .scene.nav-item {
cursor: default;
@@ -115,7 +162,6 @@ button {
}
}
-// controls
#controls {
top: 100px;
ol {
@@ -164,7 +210,6 @@ button {
}
}
-// Playlist
#playlists {
.playlist {
.playlist-header {
@@ -177,7 +222,6 @@ button {
}
}
-// Combat
#combat,
#combat-popout {
.combat-tracker-header {
@@ -246,50 +290,138 @@ button {
}
}
-// Pause
#pause {
img {
content: url("../assets/icons/pause.svg");
}
}
-// Compendium
-.directory-item {
- .ring-filter {
- i.i_earth,
- i.i_fire,
- i.i_water,
- i.i_air,
- i.i_void {
- line-height: unset; // do not have it rised up
+.compendium-directory {
+
+ min-width: 350px; //Default size set as min
+
+ .directory-item {
+ .ring-rarity-rank {
+ display: flex;
+ align-items: center;
+ justify-content: end;
+ padding-right: 1rem;
+ font-size: 0.75rem;
+ white-space: nowrap;
+
+ i[class^="i_"] { // i_water, i_air etc.
+ margin-right: 0.25rem;
+ }
}
}
- .ring-rarity-rank {
- flex: unset
- }
-}
-
-.not-for-players {
- filter:brightness(0.5);
-}
-
-.compendium-header {
- .ring-filter{
- .selected {
- filter: drop-shadow(0px 0px 5px yellow);
- }
- }
- .rank-filter {
- .selected {
- filter: drop-shadow(0px 0px 5px yellow) drop-shadow(0px 0px 5px yellow) drop-shadow(0px 0px 5px yellow);
- }
+ .not-for-players {
+ opacity: var(--l5r5e-restricted-opacity);
+ filter: var(--l5r5e-restricted-filter);
}
- l5r5e-multi-select {
- .input-element-tags {
- max-height: 100px;
+ [data-application-part="filter"] {
+ .filter-bar {
+ display: flex;
+ flex-direction: column;
+ gap: 0.25rem;
+ padding: 0.5rem;
}
+
+ .flexrow {
+ position: relative;
+ display: flex;
+ align-items: center;
+ gap: 0.35rem;
+ margin: 0.35rem 0.5rem;
+ padding-right: 1.5rem; // space for the clear filter x
+
+ &.source-filter {
+ padding-right: 0;
+ }
+
+ label {
+ flex-shrink: 0;
+ width: 3.5rem; // same column alignment
+ font-size: 0.8rem;
+ line-height: 1;
+ margin-right: 0.25rem;
+ }
+ }
+
+ .number-filter {
+ flex-wrap: nowrap;
+ }
+
+ // ── Filter buttons ( and )
+ .number-filter a,
+ .rank-filter a,
+ .rarity-filter a,
+ .ring-filter i {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ min-width: 1.5rem;
+ padding: 0.1rem 0.3rem;
+ cursor: pointer;
+ text-align: center;
+ border-radius: 3px;
+ font-size: 1.2rem;
+ line-height: 1;
+ user-select: none;
+ position: relative;
+ z-index: 1;
+ }
+
+ // ── Selected state circle
+ .rank-filter a.selected::before,
+ .rarity-filter a.selected::before,
+ .ring-filter i.selected::after {
+ content: "";
+ position: absolute;
+ inset: 0;
+ background: url("../assets/icons/circle.svg") center / contain no-repeat;
+ opacity: var(--l5r5e-filter-selected-opacity);
+ filter: var(--l5r5e-filter-selected-tint);
+ pointer-events: none;
+ z-index: -1;
+ }
+
+ // Ring-specific adjustment for circle
+ .ring-filter i.selected::after {
+ inset: -4px;
+ }
+
+ // ── Inline clear button
+ a[data-clear] {
+ position: absolute;
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ right: 0.25rem;
+ top: 50%;
+ transform: translateY(-50%);
+ margin: 0;
+ min-width: unset;
+ opacity: 0.5;
+ cursor: pointer;
+ font-size: 0.85rem;
+ line-height: 1;
+ user-select: none;
+ padding: 0.1rem 0.3rem;
+
+ &:hover {
+ opacity: 1;
+ }
+ }
+
+ .source-filter l5r5e-multi-select {
+ width: 100%;
+ }
+ }
+ button.gm.applyPlayerFilter {
+ margin-left: 0.5rem;
+ margin-bottom: 0.3rem;
}
}
@@ -545,49 +677,6 @@ button {
}
}
-l5r5e-multi-select {
- display: grid;
- grid-template-columns: minmax(auto, 1fr);
- select {
- justify-self: center;
- width: 100%;
- height: 100%;
- text-align-last: center;
- }
- .input-element-tags {
- grid-column-start: 1;
- grid-column-end: span 3;
-
- max-height: fit-content; // use value in px to limit the initial size of the tags list, but expandable when hovering over
- overflow: hidden;
-
- &.overflowing {
- // Apply mask-image with linear gradient fade-out effect
- mask-image: linear-gradient(to bottom, rgba(0, 0, 0, 1) 80%, rgba(0, 0, 0, 0) 100%);
-
- // Transition for smooth height change and mask removal
- transition: height 0.3s ease, mask-image 0.3s ease;
- }
- &.overflowing:hover {
- max-height: fit-content;
- mask-image: none;
- }
- }
- select {
- grid-row: 1;
- }
- button {
- grid-row: 1;
- line-height: 1;
- }
-}
-
-l5r5e-multi-select:has( > button.gm) {
- .input-element-tags {
- grid-column-end: span 4;
- }
-}
-
form#settings-config {
div.form-group:has(l5r5e-multi-select) {
@@ -607,31 +696,361 @@ form#settings-config {
}
}
+l5r5e-combo-box {
+ // Reset li rules
+ li {
+ flex: none !important;
+ margin: 0 !important;
+ padding: 0 !important;
+ }
-.autocomplete-wrapper {
+ input {
+ margin: 0 !important;
+ flex: none !important;
+ height: auto !important;
+ }
+
+ display: block;
+ flex: 1;
+ min-width: 0; // prevents flex overflow
+ width: 100%;
+
+ .wrapper {
+ display: block;
position: relative;
- .autocomplete-list {
- position: absolute;
- border: 1px solid #6e7e6b;
- border-bottom: none;
- border-top: none;
- z-index: 99;
- top: 100%;
- left: 0;
- right: 0;
+ width: 100%;
+ }
+
+ .input {
+ width: 100%;
+ background: transparent;
+ border: none;
+ border-bottom: 1px solid #6e7e6b;
+ font-family: inherit;
+ font-size: inherit;
+ color: inherit;
+ padding: 2px 4px;
+
+ &:focus {
+ outline: none;
+ border-bottom-color: #8b0000;
}
- .autocomplete-list div {
- padding: 10px;
- cursor: pointer;
- background-color: #fff;
- border-bottom: 1px solid #6e7e6b;
- text-align: left;
+
+ &:disabled {
+ opacity: 0.45;
+ cursor: not-allowed;
}
- .autocomplete-list div:hover {
- background-color: #e9e9e9;
+ }
+
+ .dropdown {
+ // Reset any inherited text styles from parent label
+ text-shadow: none;
+ color: #333;
+
+ position: absolute;
+ top: 100%;
+ left: 0;
+ right: 0;
+ z-index: 100; /* floats above everything */
+ max-height: 200px; /* scrollable */
+ overflow-y: auto;
+ background: #f4efe6; /* matches parchment */
+ border: 1px solid #6e7e6b;
+ box-shadow: 2px 4px 8px rgba(0, 0, 0, 0.3);
+ margin: 0;
+ padding: 0;
+ list-style: none;
+
+ text-align: center;
+ font-size: var(--font-size-16);
+ font-family: $font-primary;
+ }
+
+ .option {
+ display: block; // override list-item
+ margin: 0; // reset any inherited li margins
+ flex: none; // reset any inherited li flex
+ padding: 4px 8px;
+ cursor: pointer;
+ font-size: 0.85em;
+ color: #333;
+ text-transform: uppercase; /* matches the label style in your sheet */
+ letter-spacing: 0.05em;
+ border-bottom: 1px solid rgba(110, 126, 107, 0.3);
+
+ &:hover,
+ &.active {
+ background: #8b0000;
+ color: #f4efe6;
}
- .autocomplete-active {
- background-color: DodgerBlue !important;
- color: #ffffff;
+ }
+ .option:last-child,
+ .group:last-child {
+ border-bottom: none;
+ }
+
+ .group {
+ padding: 4px 8px 2px;
+ font-size: 0.7em;
+ font-weight: bold;
+ color: #6e7e6b;
+ text-transform: uppercase;
+ letter-spacing: 0.08em;
+ background: rgba(110, 126, 107, 0.15);
+ cursor: default;
+ }
+
+ .no-results {
+ padding: 6px 8px;
+ color: #999;
+ font-style: italic;
+ font-size: 0.85em;
+ }
+}
+
+l5r5e-multi-select,
+l5r5e-combo-box {
+ display: block;
+ position: relative;
+}
+
+l5r5e-combo-box {
+ .wrapper {
+ position: relative;
+ display: block;
+ padding: 0.375rem 0.625rem;
+ border-width: 1px;
+ border-style: solid;
+ border-color: var(--color-border, #6e7e6b);
+ border-radius: 4px;
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
+
+ &:focus-within {
+ border-color: var(--color-warm-3, #5d142b);
+ box-shadow: 0 0 0 2px rgba(93, 20, 43, 0.2);
+ }
+
+ &.disabled {
+ opacity: 0.45;
+ pointer-events: none;
+ }
+ }
+
+ input.input {
+ display: block;
+ width: 100%;
+ padding: 0;
+ border: none;
+ background: transparent;
+ outline: none;
+ font-size: inherit;
+ line-height: 1.4;
+ min-width: 4ch;
+ }
+}
+
+l5r5e-multi-select {
+ .multi-select-container {
+ position: relative;
+ }
+
+ .selection-box {
+ position: relative;
+ display: flex;
+ flex-wrap: wrap;
+ align-items: center;
+ gap: 0.25rem;
+ padding: 0.3125rem 0.5rem;
+ min-height: 2.25rem;
+
+ border: 1px solid var(--color-border, #6e7e6b);
+ border-radius: 4px;
+ cursor: text;
+ transition: border-color 0.15s ease, box-shadow 0.15s ease;
+
+ &:focus-within {
+ border-color: var(--color-warm-3, #5d142b);
+ box-shadow: 0 0 0 2px rgba(93, 20, 43, 0.2);
+ }
+
+ &.disabled {
+ opacity: 0.45;
+ pointer-events: none;
+ cursor: default;
+
+ .input-sizer {
+ display: none;
+ }
+ }
+ }
+
+ .chip-list {
+ display: contents;
+ }
+
+ .chip {
+ display: inline-flex;
+ align-items: center;
+ gap: 0.1875rem;
+ padding: 0.0625rem 0.3125rem;
+
+ border: 1px solid var(--l5r5e-chip-border-color);
+ border-radius: 3px;
+ background: var(--l5r5e-chip-bg);
+ color: var(--l5r5e-chip-color);
+
+ font-size: 0.8em;
+ line-height: 1.4;
+ white-space: nowrap;
+ user-select: none;
+ }
+
+ .chip-remove {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ padding: 0 0.0625rem;
+ cursor: pointer;
+ color: var(--color-light-5, #9f8475);
+
+ &:hover {
+ color: var(--color-warm-2, #c9593f);
+ }
+ }
+
+ /* Auto-sizing input */
+ .input-sizer {
+ display: inline-grid;
+ flex: 1 1 auto;
+ min-width: 4ch; // never collapse
+ max-width: 100%;
+
+ &::after {
+ content: attr(data-value) " ";
+ grid-area: 1 / 1;
+ visibility: hidden;
+ white-space: pre;
+ font: inherit;
+ line-height: 1.4;
+ pointer-events: none;
+ }
+
+ input.input {
+ grid-area: 1 / 1;
+ width: 100%;
+ min-width: 0; // allow flexbox to shrink
+ padding: 0.125rem 0;
+ border: none;
+ background: transparent;
+ outline: none;
+ font: inherit;
+ line-height: 1.4;
+ }
+ }
+
+ .clear-btn {
+ display: inline-flex;
+ align-items: center;
+ justify-content: center;
+ margin-left: auto; // pushes it to the end
+ flex-shrink: 0;
+ white-space: nowrap;
+
+ padding: 0 0.125rem;
+ border: none;
+ background: none;
+ font-size: 1.1em;
+ cursor: pointer;
+ color: var(--color-light-5, #9f8475);
+
+ &:hover {
+ color: var(--color-warm-2, #c9593f);
+ }
+ }
+}
+
+l5r5e-multi-select,
+l5r5e-combo-box {
+ .dropdown {
+ position: absolute;
+ top: calc(100% + 0.25rem);
+ left: 0;
+ right: 0;
+ z-index: 100;
+ max-height: 14rem;
+ overflow-y: auto;
+ overflow-x: hidden;
+ list-style: none;
+ margin: 0;
+ padding: 0.25rem 0;
+ border-width: 1px;
+ border-style: solid;
+ border-radius: 4px;
+ background: var(--l5r5e-dropdown-bg);
+ border-color: var(--color-border, #6e7e6b);
+ box-shadow: var(--l5r5e-dropdown-shadow);
+ color: var(--l5r5e-dropdown-color);
+
+ li.group {
+ padding: 0.375rem 0.75rem 0.125rem;
+ font-size: 0.7em;
+ font-weight: 600;
+ text-transform: uppercase;
+ letter-spacing: 0.06em;
+ cursor: default;
+ user-select: none;
+ color: var(--l5r5e-dropdown-group-color);
+ background: var(--l5r5e-dropdown-group-bg);
+ }
+
+ li.option {
+ display: flex;
+ align-items: center;
+ gap: 0.5rem;
+ padding: 0.375rem 0.75rem;
+ font-size: 0.875em;
+ cursor: pointer;
+ user-select: none;
+ color: var(--l5r5e-dropdown-option-color);
+
+ &:hover,
+ &.active {
+ background: var(--color-warm-3, #5d142b);
+ color: var(--color-light-1, #f7f3e8);
+ }
+
+ &.selected {
+ background: rgba(93, 20, 43, 0.25);
+ }
+
+ &.disabled {
+ cursor: default;
+ pointer-events: none;
+ opacity: 0.45;
+ }
+
+ .checkmark {
+ flex-shrink: 0;
+ width: 0.875rem;
+ text-align: center;
+ font-size: 0.85em;
+ color: var(--color-warm-1, #ee9b3a);
+ }
+
+ .label {
+ flex: 1;
+ overflow: hidden;
+ text-overflow: ellipsis;
+ white-space: nowrap;
+ }
+ }
+
+ li.no-results {
+ padding: 0.5rem 0.75rem;
+ font-size: 0.875em;
+ font-style: italic;
+ user-select: none;
+ color: var(--l5r5e-dropdown-no-results-color);
+ }
}
}
diff --git a/system/templates/compendium/filter-bar.html b/system/templates/compendium/filter-bar.html
new file mode 100644
index 0000000..4e4f437
--- /dev/null
+++ b/system/templates/compendium/filter-bar.html
@@ -0,0 +1,52 @@
+
+
+ {{#if filtersToShow.rank}}
+
+
+ {{#each ranks}}
+
{{this}}
+ {{/each}}
+
×
+
+ {{/if}}
+
+ {{#if filtersToShow.rarity}}
+
+
+ {{#each rarities}}
+
{{this}}
+ {{/each}}
+
×
+
+ {{/if}}
+
+ {{#if filtersToShow.ring}}
+
+
+ {{#each rings}}
+
+ {{/each}}
+
×
+
+ {{/if}}
+
+ {{#if filtersToShow.source}}
+
+
+ {{selectOptions sources localize=true}}
+
+
+ {{#if showPlayerView}}
+
+ {{/if}}
+ {{/if}}
+
+
\ No newline at end of file
diff --git a/system/templates/compendium/l5r5e-index-partial.html b/system/templates/compendium/l5r5e-index-partial.html
new file mode 100644
index 0000000..06e4287
--- /dev/null
+++ b/system/templates/compendium/l5r5e-index-partial.html
@@ -0,0 +1,30 @@
+{{!--
+ L5R5e entry partial — mirrors Foundry's index-partial.hbs structure and adds
+ ring/rarity/rank badges from entryFilterData injected by _prepareDirectoryContext.
+
+ NOTE: Foundry's index-partial.hbs renders a complete - element so it cannot
+ be composed via {{> partial}} without nesting
- inside
- . We therefore
+ duplicate its simple structure here and own it ourselves. If Foundry changes
+ their index-partial.hbs, this file should be checked for parity.
+
+ Foundry original: templates/sidebar/apps/compendium/index-partial.hbs
+--}}
+
-
+ {{#if thumb}}
+
+ {{else if img}}
+
+ {{else}}
+
+ {{/if}}
+ {{ name }}
+ {{#with (lookup @root.entryFilterData _id)}}
+ {{#if (or ring rarity rank)}}
+
+ {{/if}}
+ {{/with}}
+
diff --git a/system/templates/compendium/rank-filter.html b/system/templates/compendium/rank-filter.html
deleted file mode 100644
index 3221ffc..0000000
--- a/system/templates/compendium/rank-filter.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
-{{#each number}}
-
{{.}}
-{{/each}}
-
\ No newline at end of file
diff --git a/system/templates/compendium/ring-filter.html b/system/templates/compendium/ring-filter.html
deleted file mode 100644
index c56f6a4..0000000
--- a/system/templates/compendium/ring-filter.html
+++ /dev/null
@@ -1,8 +0,0 @@
-
-
-
-
-
-
-
-
\ No newline at end of file
diff --git a/system/templates/compendium/ring-rarity-rank.html b/system/templates/compendium/ring-rarity-rank.html
deleted file mode 100644
index 8a1b674..0000000
--- a/system/templates/compendium/ring-rarity-rank.html
+++ /dev/null
@@ -1,6 +0,0 @@
-
-
- {{#if rarity}} {{localize "l5r5e.sheets.rarity"}} {{rarity}} {{/if}}
- {{#if rank}} {{localize "l5r5e.sheets.rank"}} {{rank}} {{/if}}
-
-
\ No newline at end of file