* {
  box-sizing: border-box;
  min-width: 0;
  min-height: 0;
}

/*
  ============================================
    RESPONSIVE LAYOUT
  ============================================
*/


:root {
  font-size: 100%;
  --media-sm: 640px;
  --media-md: 768px;
  --media-lg: 1024px;
  --media-xl: 1280px;
  --scale-factor: 1.0;
}

@media screen and (min-width: 1024px) {
  :root {
    --scale-factor: 1.10;
  }
}

/*
  ============================================
    FONT SIZES
  ============================================
*/

.text-xs {
  /* 12px */
  font-size: calc(0.75rem * var(--scale-factor));
  /* 16px */
  line-height: calc(1rem * var(--scale-factor));
}

.text-sm {
  /* 14px */
  font-size: calc(0.875rem * var(--scale-factor));
  /* 20px */
  line-height: calc(1.25rem * var(--scale-factor));
}

.text-base {
  /* 16px */
  font-size: calc(1rem * var(--scale-factor));
  /* 24px */
  line-height: calc(1.5rem * var(--scale-factor));
}

.text-lg {
  /* 18px */
  font-size: calc(1.125rem * var(--scale-factor));
  /* 28px */
  line-height: calc(1.75rem * var(--scale-factor));
}

.text-xl {
  /* 20px */
  font-size: calc(1.25rem * var(--scale-factor));
  /* 28px */
  line-height: calc(1.75rem * var(--scale-factor));
}

.text-2xl {
  /* 24px */
  font-size: calc(1.5rem * var(--scale-factor));
  /* 32px */
  line-height: calc(2rem * var(--scale-factor));
}

.text-3xl {
  /* 30px */
  font-size: calc(1.875rem * var(--scale-factor));
  /* 36px */
  line-height: calc(2.25rem * var(--scale-factor));
}

.text-4xl {
  /* 36px */
  font-size: calc(2.25rem * var(--scale-factor));
  /* 40px */
  line-height: calc(2.5rem * var(--scale-factor));
}

.text-5xl {
  /* 48px */
  font-size: calc(3rem * var(--scale-factor));
  line-height: 1.125;
}

.text-6xl {
  /* 60px */
  font-size: calc(3.75rem * var(--scale-factor));
  line-height: 1;
}

.text-7xl {
  /* 72px */
  font-size: calc(4.5rem * var(--scale-factor));
  line-height: 1;
}

.text-8xl {
  /* 96px */
  font-size: calc(6rem * var(--scale-factor));
  line-height: 1;
}

.text-9xl {
  /* 128px */
  font-size: calc(8rem * var(--scale-factor));
  line-height: 1;
}

/*
  ============================================
    COLORS
  ============================================
*/

html {
  --bg-1: #e0e0e0;
  --bg-2: #f5f5f5;
  --bg-3: #fafafa;
  --bg-4: #ffffff;
  --bg-red: #EF5350;
  --grey-50: #fafafa;
  --grey-100: #f5f5f5;
  --grey-200: #eeeeee;
  --grey-300: #e0e0e0;
  --grey-400: #bdbdbd;
  --grey-500: #9e9e9e;
  --grey-600: #757575;
  --grey-700: #616161;
  --grey-800: #424242;
  --grey-900: #212121;
  --color-1: rgba(0, 0, 0, 0.90);
  --color-2: rgba(0, 0, 0, 0.70);
  --color-3: rgba(0, 0, 0, 0.50);
  --color-red: #D32F2F;
  --color-green: #4CAF50;
  --border--dark: #bdbdbd;
  --filter-brightness: brightness(0.94);
  --theme-1: #333333;
  --theme-2: #fb3640;
  --theme-3: #e2e2e2;
  --theme-4: #055f67;
  --theme-5: #579420;
}

.color--1 {
  color: var(--color-1);
}

.color--2 {
  color: var(--color-2);
}

.color--3 {
  color: var(--color-3);
}

.color--red {
  color: var(--color-red);
}

.color--theme1 {
  color: var(--theme-1);
}

.color--theme2 {
  color: var(--theme-2);
}

.color--theme3 {
  color: var(--theme-3);
}

.color--theme4 {
  color: var(--theme-4);
}

/*
  ============================================
    BUGFIXES
  ============================================
*/

/* Fix normalise.css bug for firefox */
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  outline: var(--text-color) solid thin;
}

body {
  font-size: calc(1rem * var(--scale-factor));
  line-height: calc(1.5rem * var(--scale-factor));
  font-family: 'Open Sans', sans-serif;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  color: var(--color-1);
  background-color: var(--bg-3);
}

/*
  ============================================
    ELEVATION
  ============================================
*/

/* .elevation:hover {
    box-shadow: 0 14px 28px rgba(0,0,0,0.25), 0 10px 10px rgba(0,0,0,0.22);
    transition: all 0.3s cubic-bezier(.25,.8,.25,1);
 } */

.elevation--1 {
  box-shadow: 0 1px 3px rgba(0, 0, 0, 0.12), 0 1px 2px rgba(0, 0, 0, 0.24);
}

.elevation--2 {
  box-shadow: 0 3px 6px rgba(0, 0, 0, 0.16), 0 3px 6px rgba(0, 0, 0, 0.23);
}

.elevation--3 {
  box-shadow: 0 10px 20px rgba(0, 0, 0, 0.19), 0 6px 6px rgba(0, 0, 0, 0.23);
}

.elevation--4 {
  box-shadow: 0 14px 28px rgba(0, 0, 0, 0.25), 0 10px 10px rgba(0, 0, 0, 0.22);
}

.elevation--5 {
  box-shadow: 0 19px 38px rgba(0, 0, 0, 0.30), 0 15px 12px rgba(0, 0, 0, 0.22);
}

/*
  ============================================
    HEADING
  ============================================
*/

h1 {
  /* text-5xl */
  font-size: calc(3rem * var(--scale-factor));
  line-height: 1.125;
}

h2 {
  /* text-4xl */
  font-size: calc(2.25rem * var(--scale-factor));
  line-height: calc(2.5rem * var(--scale-factor));
}

h3 {
  /* text-3xl */
  font-size: calc(1.875rem * var(--scale-factor));
  line-height: calc(2.25rem * var(--scale-factor));
}

/*
  ============================================
    LINKS
  ============================================
*/

a {
  text-decoration: none;
}

/*
  ============================================
    UTILITY
  ============================================
*/

.noselect {
  /* iOS Safari */
  -webkit-touch-callout: none;
  /* Safari */
  -webkit-user-select: none;
  /* Konqueror HTML */
  -khtml-user-select: none;
  /* Old versions of Firefox */
  -moz-user-select: none;
  /* Internet Explorer/Edge */
  -ms-user-select: none;
  /* Non-prefixed version, currently
  supported by Chrome, Edge, Opera and Firefox */
  user-select: none;
}

.strikeThrough {
  text-decoration: line-through;
}

.font-weight--light {
  font-weight: 300;
}

.overflowX {
  overflow-x: auto;
}

.hoverable:hover {
  color: var(--color-1);
}

.nowrap {
  white-space: nowrap;
  text-overflow: ellipsis;
}

.monospace {
  font-family: "UbuntuMono", monospace;
}

.display--inline-block {
  display: inline-block;
}

.display--none {
  display: none;
}

.visible--onHover {
  visibility: hidden;
}

*:hover>.visible--onHover {
  visibility: visible;
}

/*
  ============================================
    BUTTONS
  ============================================
*/

button {
  border: 1px solid var(--grey-400);
  border-radius: 4px;
  padding: 0.5rem;
  cursor: pointer;
  background-color: var(--grey-200);
  color: var(--color-2);
  min-width: fit-content;
}

button:hover {
  color: var(--color-1);
  background-color: var(--grey-300);
}

/*
  ============================================
    LAYOUTS
  ============================================
*/

.centered {
  margin-left: auto;
  margin-right: auto;
  max-width: var(--media-sm);
  border: 1px solid var(--grey-400);
  border-radius: 4px;
}

/*
  ============================================
    TEXT ALIGN
  ============================================
*/

.right {
  text-align: right;
}

.left {
  text-align: left;
}

.center {
  text-align: center;
}

/*
  ============================================
    WIDTHS
  ============================================
*/

.width--min-content {
  min-width: min-content;
}

.width--fit-content {
  width: fit-content;
}

.width--max-width {
  max-width: var(--media-xl);
}

.width--full-width {
  width: 100%;
}

/*
  ============================================
    DRAG 'N DROP
  ============================================
*/

.dragNdrop__source {
  color: var(--bg-3) !important;
}

.dragNdrop__dragged {
  background-color: var(--bg-4);
}

/*
  ============================================
    BORDERS
  ============================================
*/

.bordered {
  border: 1px solid var(--grey-400);
  border-radius: 4px;
}

.borderless {
  border: 0 !important;
}

.borderless--tb {
  border-top: 0 !important;
  border-bottom: 0 !important;
}

.borderless--t {
  border-top: 0 !important;
}

.borderless--b {
  border-bottom: 0 !important;
}

/*
  ============================================
    ROUND TABLE BORDER WRAPPER
  ============================================
*/

.table--rounded-borders {
  border: 1px solid var(--theme-4);
  border-radius: 4px;
}

.table--rounded-borders td,
.table--rounded-borders th {
  border: 1px solid var(--theme-4);
}

.table--rounded-borders th {
  border-top: 0;
}

.table--rounded-borders tr:first-child td {
  border-top: 0;
}

.table--rounded-borders tr:last-child td {
  border-bottom: 0;
}

.table--rounded-borders td:first-child,
.table--rounded-borders th:first-child {
  border-left: 0;
}

.table--rounded-borders td:last-child,
.table--rounded-borders th:last-child {
  border-right: 0;
}

/*
  ============================================
    CURSORS
  ============================================
*/

.cursor--default {
  cursor: default;
}

.cursor--grab {
  cursor: grab;
}

.cursor--pointer {
  cursor: pointer;
}

/*
  ============================================
    FLEXBOX
  ============================================
*/

.flex--row {
  display: flex;
  flex-direction: row;
}

.flex--column {
  display: flex;
  flex-direction: column;
}

.flex--wrap {
  flex-wrap: wrap;
}

.flex--align-center {
  align-items: center;
}

.flex--align-start {
  align-items: flex-start;
}

.flex--align-end {
  align-items: flex-end;
}

.flex--justify-around {
  justify-content: space-around;
}

.flex--justify-between {
  justify-content: space-between
}

.flex--grow {
  flex-grow: 1;
}

/*
  ============================================
    INPUT
  ============================================
*/

input:-webkit-autofill,
input:-webkit-autofill::first-line,
input:-webkit-autofill:hover,
input:-webkit-autofill:focus,
input:-webkit-autofill:active {
  filter: none;
  /* needed for firefox */
  font-family: 'Open Sans', sans-serif;
  font-size: calc(1rem * var(--scale-factor));
  color: var(--color-2);
  box-shadow: 0 0 0 50px var(--bg-3) inset;
  -webkit-box-shadow: 0 0 0 50px var(--bg-3) inset;
}

input {
  background-color: var(--bg-3);
  color: var(--color-1);
  caret-color: var(--color-1);
  border: 1px solid var(--grey-400);
  border-radius: 4px;
  padding: calc(0.125rem * var(--scale-factor)) calc(0.25rem * var(--scale-factor));
}

textarea {
  background-color: var(--bg-3);
  color: var(--color-1);
  caret-color: var(--color-1);
  border: 1px solid var(--grey-400);
  border-radius: 4px;
  padding: calc(0.125rem * var(--scale-factor)) calc(0.25rem * var(--scale-factor));
}

::placeholder {
  /* Chrome, Firefox, Opera, Safari 10.1+ */
  color: var(--color-3);
  opacity: 1;
  /* Firefox */
}

::-ms-input-placeholder {
  /* Microsoft Edge */
  color: var(--color-3);
}

.input--with-label {
  display: flex;
  flex-direction: column;
}

.input--with-label label {
  white-space: nowrap;
  color: var(--color-2);
  font-size: calc(0.875rem * var(--scale-factor));
  line-height: calc(1.25rem * var(--scale-factor));
}

/*
  ============================================
    SPACING
  ============================================
*/

.m--0 {
  margin: 0;
}

.m--s {
  margin: calc(0.125rem * var(--scale-factor));
}

.mt--s {
  margin-top: calc(0.125rem * var(--scale-factor));
}

.mt--1 {
  margin-top: calc(0.25rem * var(--scale-factor));
}

.mt--2 {
  margin-top: calc(0.5rem * var(--scale-factor));
}

.mt--3 {
  margin-top: calc(1rem * var(--scale-factor));
}

.mt--4 {
  margin-top: calc(1.75rem * var(--scale-factor));
}

.mb--s {
  margin-bottom: calc(0.125rem * var(--scale-factor));
}

.mb--1 {
  margin-bottom: calc(0.25rem * var(--scale-factor));
}

.mb--2 {
  margin-bottom: calc(0.5rem * var(--scale-factor));
}

.mb--3 {
  margin-bottom: calc(1rem * var(--scale-factor));
}

.mb--4 {
  margin-bottom: calc(1.75rem * var(--scale-factor));
}

.ml--s {
  margin-left: calc(0.125rem * var(--scale-factor));
}

.ml--1 {
  margin-left: calc(0.25rem * var(--scale-factor));
}

.ml--2 {
  margin-left: calc(0.5rem * var(--scale-factor));
}

.ml--3 {
  margin-left: calc(1rem * var(--scale-factor));
}

.ml--4 {
  margin-left: calc(1.75rem * var(--scale-factor));
}

.mr--s {
  margin-right: calc(0.125rem * var(--scale-factor));
}

.mr--1 {
  margin-right: calc(0.25rem * var(--scale-factor));
}

.mr--2 {
  margin-right: calc(0.5rem * var(--scale-factor));
}

.mr--3 {
  margin-right: calc(1rem * var(--scale-factor));
}

.mr--4 {
  margin-right: calc(1.75rem * var(--scale-factor));
}

.pt--s {
  padding-top: calc(0.125rem * var(--scale-factor));
}

.pt--1 {
  padding-top: calc(0.25rem * var(--scale-factor));
}

.pt--2 {
  padding-top: calc(0.5rem * var(--scale-factor));
}

.pt--3 {
  padding-top: calc(1rem * var(--scale-factor));
}

.pt--4 {
  padding-top: calc(1.75rem * var(--scale-factor));
}

.pb--s {
  padding-bottom: calc(0.125rem * var(--scale-factor));
}

.pb--1 {
  padding-bottom: calc(0.25rem * var(--scale-factor));
}

.pb--2 {
  padding-bottom: calc(0.5rem * var(--scale-factor));
}

.pb--3 {
  padding-bottom: calc(1rem * var(--scale-factor));
}

.pb--4 {
  padding-bottom: calc(1.75rem * var(--scale-factor));
}

.pl--s {
  padding-left: calc(0.125rem * var(--scale-factor));
}

.pl--1 {
  padding-left: calc(0.25rem * var(--scale-factor));
}

.pl--2 {
  padding-left: calc(0.5rem * var(--scale-factor));
}

.pl--3 {
  padding-left: calc(1rem * var(--scale-factor));
}

.pl--4 {
  padding-left: calc(1.75rem * var(--scale-factor));
}

.pr--s {
  padding-right: calc(0.125rem * var(--scale-factor));
}

.pr--1 {
  padding-right: calc(0.25rem * var(--scale-factor));
}

.pr--2 {
  padding-right: calc(0.5rem * var(--scale-factor));
}

.pr--3 {
  padding-right: calc(1rem * var(--scale-factor));
}

.pr--4 {
  padding-right: calc(1.75rem * var(--scale-factor));
}

.p--s {
  padding: calc(0.125rem * var(--scale-factor));
}

.p--1 {
  padding: calc(0.25rem * var(--scale-factor));
}

.p--2 {
  padding: calc(0.5rem * var(--scale-factor));
}

.p--3 {
  padding: calc(1rem * var(--scale-factor));
}

.p--4 {
  padding: calc(1.75rem * var(--scale-factor));
}

/*
  ============================================
    TABLES
  ============================================
*/

/* do not collapse empty cells */
td:empty::before {
  content: "\00a0";
  visibility: hidden;
}

th,
td {
  padding: calc(0.125rem * var(--scale-factor)) calc(0.5rem * var(--scale-factor));
}

/*
  ============================================
    BACKGROUND PATTERNS
  ============================================
*/

.stripes--diagonal {
  background-color: var(--bg-3);
  opacity: 0.8;
  background-size: 10px 10px;
  background-image: repeating-linear-gradient(45deg, var(--grey-500) 0, var(--grey-500) 1px, var(--bg-3) 0, var(--bg-3) 50%);
}

.stripes--diagonalv2 {
  background-color: var(--bg-3);
  opacity: 0.8;
  background: repeating-linear-gradient(-45deg, var(--grey-500), var(--grey-500) 1px, var(--bg-3) 5px, var(--bg-3) 6px);
}

.rectangles {
  background-color: var(--bg-3);
  opacity: 0.4;
  background-image: repeating-linear-gradient(45deg, var(--grey-500) 25%, transparent 25%, transparent 75%, var(--grey-500) 75%, var(--grey-500)), repeating-linear-gradient(45deg, var(--grey-500) 25%, var(--bg-3) 25%, var(--bg-3) 75%, var(--grey-500) 75%, var(--grey-500));
  background-position: 0 0, 4px 4px;
  background-size: 8px 8px;
}

.polka {
  background-color: var(--bg-3);
  opacity: 0.4;
  background-image: radial-gradient(var(--grey-600) 0.8px, var(--bg-3) 0.8px);
  background-size: 4px 4px;
}

/*
  ============================================
    ALERTS
  ============================================
*/

.alert {
  display: flex;
  flex-direction: row;
  align-items: center;
  justify-content: space-between;
  border-radius: 4px;
  gap: 1.25rem;
}

.alert button {
  background-color: var(--color-green);
  border-width: 2px;
  border-color: var(--color-2);
  color: var(--color-1);
  padding: calc(0.25rem * var(--scale-factor));
  font-size: calc(0.875rem * var(--scale-factor));
  line-height: calc(1.25rem * var(--scale-factor));
  font-weight: 600;
}

.alert button:hover {
  border-color: var(--color-1);
}


.alert--success {
  background-color: var(--color-green);
}

.alert--success button {
  background-color: var(--color-green);
}


.alert--error {
  background-color: var(--bg-red);
}

.alert--error button {
  background-color: var(--bg-red);
}

/*
  ============================================
    IMAGES
  ============================================
*/

img {
  max-width: 100%;
}