Files
roll20-character-sheets/Troika/Troika.scss
T

647 lines
12 KiB
SCSS

@use "sass:math";
$sheet-width: 680px;
$gray-lightest: #f5f5f5;
$gray-light: #f0f0f0;
$gray-medium: #aaa;
$gray-dark: #999;
$black: #000;
$white: #fff;
$border-colour: $gray-medium;
$background-colour: #fdfbf7;
$font-tiny: 10px;
$font-small: 14px;
$font-medium: 18px;
$font-large: 22px;
$font-xlarge: 34px;
$colour-text: #333;
$colour-luck: gold;
$colour-success: lightgreen;
$colour-success-dark: darkolivegreen;
$colour-fail: lightpink;
$colour-fail-dark: indianred;
$sheet-font: "Averia Libre", serif;
$icon-font: "Pictos", serif;
$icon-stat-size: 24px;
$sheets: name, background, special, stats, skills, weapons, inventory, wearing, monies, provisions,
footer;
$sheets-skill: skill, stamina, luck;
$grid-row: 6px;
$grid-column: 12px;
/*! ----------------- TROIKA CSS v1.01 ------------------ */
@import url("https://fonts.googleapis.com/css?family=Averia+Libre&display=swap");
/* ------------- Colours ------------- */
$colours: (
"black" $black,
"gray-lightest" $gray-lightest,
"gray-light" $gray-light,
"gray-medium" $gray-medium,
"gray-dark" $gray-dark,
"text" $colour-text,
"white" $white,
"luck" $colour-luck,
"sheet" $background-colour,
"success" $colour-success,
"success-dark" $colour-success-dark,
"fail" $colour-fail,
"fail-dark" $colour-fail-dark
);
@each $name, $colour in $colours {
.sheet-u-bg-#{$name} {
background-color: $colour;
}
.sheet-u-#{$name} {
color: $colour;
}
.sheet-u-bd-#{$name} {
border-color: $colour;
}
}
/* ------------- Grids ------------- */
.sheet-grid-main {
display: grid;
grid-gap: $grid-row $grid-column;
grid-template-areas:
"name name stats"
"background background stats"
"special special stats"
"skills skills skills"
"weapons weapons weapons"
"inventory inventory inventory"
"wearing monies provisions"
". . footer";
grid-template-columns: 50% auto 25%;
grid-template-rows: auto;
width: 100%;
min-width: $sheet-width;
max-width: $sheet-width;
height: auto;
color: $colour-text;
}
.sheet-grid-stats {
display: grid;
grid-gap: 6px 0;
grid-template-areas: "skill" "stamina" "luck";
grid-template-columns: 100%;
grid-template-rows: auto;
width: 100%;
height: auto;
}
.sheet-grid-stat {
display: grid;
grid-gap: 6px 0;
grid-template-columns: 20% 80%;
grid-template-rows: $font-large auto auto;
width: 100%;
height: auto;
}
.sheet-grid-skills {
display: grid;
grid-gap: 0 4px;
grid-template-columns: 100px auto 60px 60px 47px 47px;
grid-template-rows: auto;
width: 100%;
height: auto;
}
.sheet-grid-weapons {
display: grid;
grid-gap: 0 4px;
grid-template-columns: 80px auto 40px 40px 40px 40px 40px 40px 40px;
grid-template-rows: auto;
width: 100%;
height: auto;
}
.sheet-grid-provisions {
display: grid;
grid-template-columns: 1fr 1fr 1fr 1fr 1fr;
grid-template-rows: repeat(4, 31px);
width: 100%;
height: auto;
}
/* ------------- Grid Items ------------- */
.sheet-grid-stat-item-title {
grid-column-end: 2;
grid-column-start: 2;
grid-row-end: 1;
grid-row-start: 1;
line-height: 1;
}
.sheet-grid-stat-item-icon {
grid-column-end: 1;
grid-column-start: 1;
grid-row-end: 1;
grid-row-start: 1;
font-size: $icon-stat-size;
line-height: 1;
}
.sheet-grid-stat-item-input {
grid-column-end: 2;
grid-column-start: 1;
grid-row-end: 2;
grid-row-start: 2;
}
.sheet-grid-stat-item-footer {
grid-column-end: 2;
grid-column-start: 1;
grid-row-end: 3;
grid-row-start: 3;
}
/* ------------- Section-specific CSS ------------- */
@each $sheet in $sheets {
.sheet-#{$sheet} {
grid-area: $sheet;
}
}
@each $sheet in $sheets-skill {
.sheet-#{$sheet} {
grid-area: $sheet;
}
}
.sheet-layout--stat {
padding: $grid-row * 2;
border: 2px solid $gray-light;
border-radius: 8px 0 8px 0;
background-color: $background-colour;
&.sheet-skill {
border-color: $colour-success;
}
&.sheet-stamina {
border-color: $colour-fail;
}
&.sheet-luck {
border-color: $colour-luck;
}
}
.sheet-layout-heading {
margin-bottom: 2rem;
padding-bottom: 1rem;
border-bottom: 1px solid $gray-medium;
}
/* ----------------- OBJECTS ------------------ */
.sheet-o-input-number,
.sheet-o-input-line,
.sheet-o-input-textarea,
.sheet-o-input-text {
width: calc(100% - #{$grid-column + 4});
height: auto;
margin-top: $grid-row;
padding: $grid-row;
border: 2px solid $border-colour;
font-family: $sheet-font;
font-size: $font-medium;
}
.sheet-o-input-checkbox,
.sheet-o-input-number {
width: 40px !important; // override UI width
padding: $grid-row 0;
text-align: center;
&[readonly] {
background-color: $gray-light;
}
}
.sheet-o-input-number--large {
width: 50px !important; // override UI width
height: 56px !important; // override UI height
padding: $grid-row 0;
font-size: $font-xlarge;
}
.sheet-o-input-line {
width: 100%;
height: auto;
padding: $grid-row 0;
border-top: 2px solid transparent;
border-right: 2px solid transparent;
border-bottom: 2px solid $border-colour;
border-left: 2px solid transparent;
}
.sheet-o-input-modifier {
width: 30px !important; // override UI width
border: 2px solid $border-colour;
font-family: $sheet-font;
font-size: $font-medium;
text-align: center;
}
/* ----------------- UTILITIES ------------------ */
.sheet-u-w100 {
width: 100%;
}
.sheet-u-w75 {
width: 50%;
}
.sheet-u-w50 {
width: 50%;
}
.sheet-u-w33 {
width: 33%;
}
.sheet-u-w25 {
width: 25%;
}
.sheet-u-mr-small {
margin-right: math.div($grid-column, 2);
}
.sheet-u-font-heading {
font-family: $sheet-font;
}
.sheet-u-font-icon {
font-family: $icon-font;
}
.sheet-u-font-tiny {
font-size: $font-tiny;
}
.sheet-u-font-small {
font-size: $font-small;
}
.sheet-u-font-medium {
font-size: $font-medium;
}
.sheet-u-font-large {
font-size: $font-large;
}
.sheet-u-font-xlarge {
font-size: $font-xlarge;
}
.sheet-u-ucase {
text-transform: uppercase;
}
.sheet-u-text-right {
text-align: right;
}
.sheet-u-text-center {
text-align: center;
}
.sheet-u-hide {
display: none;
}
.sheet-u-hidden {
visibility: hidden;
}
.sheet-u-block {
display: block;
}
.sheet-u-inline-block {
display: inline-block;
}
.sheet-u-flex {
display: flex;
}
.sheet-u-flex-wrap {
flex-wrap: wrap;
}
.sheet-u-flex-column {
flex-direction: column;
}
.sheet-u-flex-align-center {
align-items: center;
}
.sheet-u-flex-justify-center {
justify-content: center;
}
.sheet-u-flex-justify-between {
justify-content: space-between;
}
.sheet-u-flex-justify-end {
justify-content: flex-end;
}
.sheet-u-flexcol {
flex-direction: column;
}
.sheet-u-flexrow {
flex-direction: row;
}
.sheet-u-flexrow-reverse {
flex-direction: row-reverse;
}
/* ------------- Buttons ------------- */
.sheet-button {
transition-property: background-color, border;
transition-duration: 0.2s;
transition-timing-function: ease-in-out;
border-radius: 3px;
background-image: none;
text-shadow: none;
}
.sheet-button::before {
display: none;
}
.sheet-button-title {
font-family: $sheet-font;
font-size: $font-small;
text-transform: uppercase;
}
.sheet-button--roll {
border: 2px solid $border-colour;
background-color: $gray-medium;
}
.sheet-button--roll-small {
padding: 0 8px !important; // override UI padding
transform: translateY(-2px);
}
.sheet-button--mod {
width: calc(100% - 18px);
height: 17px;
margin-left: -2px;
padding: 4px 0.5em;
border: 2px solid $gray-medium;
background-color: $gray-light;
font-family: $sheet-font;
font-size: $font-medium;
}
.sheet-button--grid-mod {
width: 28px;
height: 29px;
padding: 0;
border: 2px solid $gray-medium;
background-color: $gray-light;
font-family: $sheet-font;
font-size: $font-medium;
}
.sheet-button:focus {
outline: none;
}
.sheet-button--roll:hover,
.sheet-button--mod:hover {
background-color: $white;
}
.sheet-button--mod-sub {
border-top: 0;
border-top-left-radius: 0;
border-top-right-radius: 0;
}
.sheet-button--mod-add {
border-bottom: 2px solid $gray-dark;
border-bottom-right-radius: 0;
border-bottom-left-radius: 0;
}
.sheet-button--mod-sub:hover {
border-color: $colour-fail-dark;
background-color: $colour-fail;
}
.sheet-button--mod-add:hover {
border-color: $colour-success-dark;
background-color: $colour-success;
}
.sheet-button--inv {
height: 24px;
padding: 2px !important; // override .btn
border: 2px solid $gray-medium;
background-color: $gray-medium;
color: $colour-text;
font-size: $font-small;
}
.sheet-button--inv:hover {
background-color: $white;
}
.sheet-button--inv-move {
display: block;
min-width: 18px;
background-color: $gray-light;
color: $gray-medium;
}
.sheet-button--inv-move:hover {
color: $colour-text;
}
/* ------------- Overrides ------------- */
.charsheet .repcontrol_add,
.charsheet .repcontrol_edit {
display: block;
transition-property: background-color, border;
transition-duration: 0.2s;
transition-timing-function: ease-in-out;
border: 2px solid $border-colour;
border-radius: 3px;
background-image: none;
box-shadow: none;
color: $colour-text;
font-family: $sheet-font;
text-shadow: none;
text-transform: uppercase;
&:hover {
border-color: $colour-success-dark;
background-color: $colour-success;
}
&:focus {
outline: none;
}
}
.charsheet .repcontrol {
padding-top: 1rem;
padding-bottom: 1rem;
}
.charsheet .itemcontrol {
padding-top: 0.7rem;
}
// Hide the up down arrows on the number inputs
input[type="number"] {
appearance: textfield;
&::-webkit-outer-spin-button,
&::-webkit-inner-spin-button {
appearance: none;
margin: 0;
}
}
/* ----------------- Inventory ------------- */
.sheet-inventory-index {
width: $grid-column;
height: $grid-column;
padding-right: 0.5em;
padding-left: 0.5em;
font-family: $sheet-font;
text-align: right;
}
/* ------------ Provisions (Checkbox) --------- */
.sheet-provision {
width: 100%;
height: 100%;
padding: 0;
border: solid 2px $gray-medium;
background-color: $gray-light;
color: $gray-dark;
font-size: $icon-stat-size;
cursor: pointer;
}
input.sheet-provision-input {
display: none;
}
span.sheet-checked {
display: block;
visibility: hidden;
margin-top: 7px;
margin-left: 3px;
}
input.sheet-provision-input:checked + span.sheet-checked {
visibility: visible;
}
/* ------------- Roll Templates ------------- */
.sheet-rolltemplate-troika {
padding-top: 0.5rem;
font-family: $sheet-font;
}
.sheet-rolltemplate-troika .sheet-template-container {
border: 2px solid $gray-medium;
background-color: $gray-lightest;
box-shadow: 2px 2px 12px 0 $gray-dark;
line-height: 1.2;
text-align: center;
> div {
padding: 0.5rem;
}
}
.sheet-rolltemplate-troika .sheet-template-header {
background-color: $gray-medium;
}
.sheet-rolltemplate-troika .sheet-template-header--luck {
background-color: $colour-luck;
}
.sheet-rolltemplate-troika .sheet-subtitle {
font-size: $font-large;
}
.sheet-rolltemplate-troika .sheet-modifier {
font-size: $font-large;
}
.sheet-rolltemplate-troika .sheet-template-dice {
font-family: "dicefontd6", sans-serif;
font-size: $font-xlarge;
}
.sheet-rolltemplate-troika .sheet-template-total {
padding: 0.5rem;
font-size: $font-large;
}
.sheet-rolltemplate-troika .sheet-template-dice-total {
display: inline-block;
transform: translateY(-5px);
font-family: $sheet-font;
font-size: $font-large;
& > span {
background-color: transparent;
}
}
.sheet-rolltemplate-troika .sheet-template-footer--fail {
background-color: $colour-fail;
.sheet-template-total > span {
border-color: $colour-fail-dark;
}
}
.sheet-rolltemplate-troika .sheet-template-footer--success {
background-color: $colour-success;
.sheet-template-total > span {
border-color: $colour-success-dark;
}
}
.sheet-rolltemplate-troika .sheet-template-row-head {
padding-top: 0.3em;
}
.sheet-rolltemplate-troika .sheet-template-equal {
display: block;
padding-top: 0.5em;
font-size: $font-small;
}
.sheet-rolltemplate-troika .sheet-template-note {
background-color: $gray-light;
}