Files
l5rx-chiaroscuro/system/styles/scss/ui.scss
Litasa b14006a826 V14 update with various fixes
* Fixing so that chat messages now show list icon
* Fixed deprecation message from chat
* Adding our custom drop down icons to search compendium filter
* Fixing error when creating actors
2026-04-12 11:00:49 +00:00

893 lines
21 KiB
SCSS

/* SCSS */
$l5r5e-selection-circle-svg: "../assets/icons/circle.svg";
@mixin l5r5e-selection-circle($inset: -8px) {
position: relative;
&::before {
position: relative;
z-index: 1;
}
&::after {
content: "";
position: absolute;
inset: $inset;
-webkit-mask: url("#{$l5r5e-selection-circle-svg}") center / contain no-repeat;
mask: url("#{$l5r5e-selection-circle-svg}") center / contain no-repeat;
background-color: $l5r5e-selection-circle-color;
pointer-events: none;
z-index: 0;
}
}
@mixin l5r5e-selection-circle-state($state, $inset: -8px) {
&.#{$state} {
@include l5r5e-selection-circle($inset);
}
}
// ─────────────────────────────────────────────────────────────
// Themes
// ─────────────────────────────────────────────────────────────
@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);
--l5r5e-gm-monitor-void-icon: #{$l5r5e-void-light};
--l5r5e-combat-tracker-encounter-icon: #{$l5r5e-white};
}
@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);
--l5r5e-gm-monitor-void-icon: #{$l5r5e-void};
--l5r5e-combat-tracker-encounter-icon: #{$l5r5e-black};
}
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;
}
.pointer {
cursor: url("../assets/cursors/pointer.webp"), pointer;
}
#game-details {
.system {
overflow: auto;
border-bottom: 1px solid var(--color-border-light-highlight);
.system-title {
white-space: break-spaces;
}
}
}
#logo {
content: url("../assets/l5r-logo.webp");
height: 80px;
width: 88px;
margin-left: 0.5rem;
opacity: 0.8;
}
#playlists {
.playlist {
.playlist-header {
h4 {
font: 0.75rem $font-primary;
text-transform: uppercase;
text-align: right;
}
}
}
}
#combat,
#combat-popout {
.combat-tracker-header {
.encounters {
h3 {
font-size: 0.85rem;
}
ul {
display: flex;
color: var(--l5r5e-combat-tracker-encounter-icon);
&.encounter {
border-right: 1px solid $l5r5e-white-light;
}
li {
cursor: url("../assets/cursors/pointer.webp"), pointer;
}
}
.prepared {
justify-content: space-evenly;
}
.encounter {
justify-content: space-between;
i {
font-size: 23px;
vertical-align: middle;
position: relative;
display: inline-flex;
align-items: center;
justify-content: center;
@include l5r5e-selection-circle-state("active");
&.active {
color: $l5r5e-maho;
&:hover { text-shadow: none; }
}
&:hover {
text-shadow: 0 0 8px $red;
}
}
&-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;
&-intrigue:before {
content: "\f21b";
}
&-duel:before {
content: "\f506";
}
&-skirmish:before {
content: "\f505";
}
&-mass_battle:before {
content: "\f447";
}
}
}
}
}
}
#pause {
img {
content: url("../assets/icons/pause.svg");
}
}
.compendium-directory {
min-width: 350px;
.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;
}
}
}
.not-for-players {
opacity: var(--l5r5e-restricted-opacity);
filter: var(--l5r5e-restricted-filter);
}
[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;
&.source-filter {
padding-right: 0;
}
label {
flex-shrink: 0;
width: 3.5rem;
font-size: 0.8rem;
line-height: 1;
margin-right: 0.25rem;
}
}
.number-filter {
flex-wrap: nowrap;
}
.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;
}
.rank-filter a,
.rarity-filter a,
.ring-filter i {
@include l5r5e-selection-circle-state("selected", -4px);
}
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;
}
}
@mixin l5r5e-card-base {
color: $black-light;
font-size: 0.8rem;
* {
color: $black-light;
}
section > ul {
display: flex;
flex-flow: row wrap;
padding: 0.25rem 0 0.25rem 1rem;
}
.card-header img {
display: inline-block;
background: transparent;
border: 0 none;
width: 20px;
margin: 0;
padding: 0;
}
}
.l5r5e-tooltip {
cursor: url("../assets/cursors/pointer.webp"), pointer;
.l5r5e-tooltip-ct,
&.l5r5e-tooltip-ct {
@include l5r5e-card-base;
visibility: hidden;
min-height: fit-content;
width: 600px;
height: auto;
max-height: 100%;
background: #3e3a30 url("../assets/imgs/bg-l5r.webp") no-repeat;
text-align: left;
border: 0 none;
border-radius: 0;
padding: 0.5rem 0.75rem;
display: block;
position: absolute;
z-index: 9999;
section > ul li {
flex: 50%;
padding: 0;
padding-right: 1rem;
margin: 0;
list-style-type: square;
}
&:before {
z-index: -2;
content: "";
position: absolute;
height: calc(100% + 0.6rem);
width: calc(100% - 0.65rem);
border: 1px solid #c3a582;
border-radius: 0;
top: -0.35rem;
left: 0.25rem;
background: #3e3a30 url("../assets/imgs/bg-l5r.webp") no-repeat;
}
&:after {
z-index: -1;
content: "";
position: absolute;
height: calc(100%);
width: calc(100%);
border: 1px solid #c3a582;
border-radius: 0;
top: -1px;
left: -1px;
}
.goodvalue {
color: #4e8c69;
}
.badvalue {
color: #ab2a00;
}
.reference {
display: flex;
.page {
margin-left: 1ch
}
}
.content-link {
background: initial;
}
}
}
.l5r5e-chat-item {
@include l5r5e-card-base;
h2 {
font-size: 1.1rem;
}
section > ul li {
flex: 100%;
padding: 1px !important;
margin: 0;
border: 0 none !important;
list-style-type: square;
}
.reference {
display: flex;
flex-wrap: nowrap;
}
.page {
margin-left: 1ch;
}
}
#l5r5e-gm-monitor {
min-height: 170px;
min-width: 240px;
.window-content {
[data-application-part="hidden_tabs"] {
display: none;
}
table {
margin: 0;
overflow: auto;
}
form {
padding: 0 0.5rem;
}
thead tr > th {
background: rgb(0 0 0 / 90%);
color: #cfcfcfc7;
position: sticky;
z-index: 2;
top: 0;
i.i_void:before {
color: $l5r5e-void-light;
}
}
th, td {
border: 1px solid #5a6e5a50;
padding: 0.25em;
}
img {
border: none;
min-width: 24px;
min-height: 24px;
max-width: 32px;
max-height: 32px;
}
.goodvalue {
color: #4e8c69;
}
.badvalue {
color: #ab2a00;
}
.i_void:before {
color: var(--l5r5e-gm-monitor-void-icon);
}
}
.window-draggable-handle {
display: none;
}
}
#l5r5e-gm-toolbox {
display: flex;
border: 1px solid rgb(195, 165, 130);
margin: 0.5rem;
.window-header {
border-bottom: 1px solid rgb(195, 165, 130);
background: none;
.window-title {
text-align: center;
}
h1 {
letter-spacing: 0.25rem;
line-height: 2.25rem;
color: var(--color-text-emphatic);
padding-top: 1ch;
}
}
.window-content {
padding: 0;
.gm-tools-container {
color: var(--color-text-primary);
display: flex;
font-size: 2rem;
line-height: 2rem;
min-height: 2rem;
margin: 0;
padding: 0;
li {
flex: 1;
display: flex;
margin: 0;
padding: 0;
border-right: 1px solid #c3a582;
cursor: url("../assets/cursors/pointer.webp"), pointer;
&:last-child {
margin: 0;
border: 0 none;
}
:hover {
text-shadow: 0px 0px 5px $red;
}
}
.difficulty_hidden {
.fa {
width: 3rem;
}
.difficulty {
flex: 1rem;
width: 2rem;
font-size: 2rem;
text-align: center;
margin: 0;
padding: 0.5rem;
}
}
.fa {
padding: 0.5rem;
}
.fa-bed,
.fa-star-half-alt,
.fa-table,
.fa-podcast {
width: 100%;
padding: 0.5rem;
}
}
}
.window-draggable-handle {
display: none;
}
}
form#settings-config {
div.form-group:has(l5r5e-multi-select) {
.form-fields {
order: 3; // Move the multiselect to be below the title and description for nicer ui
}
}
div.form-group:has(#settings-config-l5r5e\.compendium-unofficial-content-for-players) {
.form-fields {
order: 3;
.tags {
order: 1;
}
}
}
}
.autocomplete-wrapper {
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;
}
.autocomplete-list div {
padding: 10px;
cursor: pointer;
background-color: #fff;
border-bottom: 1px solid #6e7e6b;
text-align: left;
}
.autocomplete-list div:hover {
background-color: #e9e9e9;
}
.autocomplete-active {
background-color: DodgerBlue !important;
color: #ffffff;
}
}
l5r5e-multi-select,
l5r5e-combo-box {
display: block;
position: relative;
}
l5r5e-combo-box {
// Reset inherited li/input rules
li {
flex: none !important;
margin: 0 !important;
padding: 0 !important;
}
input {
margin: 0 !important;
flex: none !important;
height: auto !important;
}
flex: 1;
min-width: 0;
width: 100%;
.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);
}
}
.input-sizer {
display: inline-grid;
flex: 1 1 auto;
min-width: 4ch;
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;
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;
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);
}
}
}