/*
  ============================================
    DEFAULTS
  ============================================
*/

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


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

:root {
  --media-sm: 640px;
  --media-md: 768px;
  --media-lg: 1024px;
  --media-xl: 1335px;
  --scale-factor: 1.0;
}

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

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

/* color scheme */
:root {
  --color-scheme: light;
}

:root {
  /* base00: default bg */
  /* base01: lighter bg for status bar */
  /* base02: selection bg */
  /* base03: comments, invisibles, line highlighting*/
  /* base04: darker fg for status bar */
  /* base05: default foreground */
  /* base06: light foreground */
  /* base07: light background */
  /* base08: red */
  /* base09: orange */
  /* base0A: yellow */
  /* base0B: green */
  /* base0C: aqua */
  /* base0D: blue */
  /* base0E: purple */
  /* base0F: brown */
  --base00: #ffffff;
  --base01: #e0e0e0;
  --base02: #c5c9c6;
  --base03: #b4b7b4;
  --base04: #959795;
  --base05: #383c42;
  --base06: #282a2e;
  --base07: #1d1f20;
  --base08: #c82829;
  --base09: #f5871f;
  --base0A: #eab700;
  --base0B: #718c00;
  --base0C: #3e999f;
  --base0D: #4271ae;
  --base0E: #8959a8;
  --base0F: #a3685a;
}

/* dark footer */
:root {
  --footer--bg: #1d1f20;
  --footer--color: #959795;
}

/* buttons */
:root {
  --base01--btnColor: var(--base05);
  --base08--btnColor: var(--base00);
  --base09--btnColor: var(--base05);
  --base0A--btnColor: var(--base05);
  --base0B--btnColor: var(--base05);
  --base0C--btnColor: var(--base05);
  --base0D--btnColor: var(--base00);
  --base0E--btnColor: var(--base00);
  --base0F--btnColor: var(--base00);
}

/* filters */
:root {
  --filter--brightness: 1.04;
  --hover-color: rgba(0, 0, 0, 0.04);
}

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

/* 
 * Fix normalise.css bug for firefox which removes
 * focusring around buttons  
 */
button:-moz-focusring,
[type="button"]:-moz-focusring,
[type="reset"]:-moz-focusring,
[type="submit"]:-moz-focusring {
  border-radius: 4px;
  outline: 2px solid Highlight;
}

/*
  ============================================
    HTML AND BODY
  ============================================
*/

html {
  font-size: 100%;
}

body {
  font-size: calc(1rem * var(--scale-factor));
  line-height: calc(1.5rem * var(--scale-factor));
  font-family: 'Open Sans', sans-serif;
  font-weight: 500;
  -webkit-font-smoothing: antialiased;
  -moz-osx-font-smoothing: grayscale;
  color: var(--base05);
  background-color: var(--base00);
  overflow-x: hidden;
}

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

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

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

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

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

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

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

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

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

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

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

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

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

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

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


.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: calc(1.125 * var(--scale-factor));
}

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;
  color: var(--base0D);
}

a:visited {
  color: var(--base0E);
}

/*
  ============================================
    POSITIONING
  ============================================
*/

.top--0 {
  top: 0;
}

.left--0 {
  left: 0;
}


/*
  ============================================
    SQUARE DIV
  ============================================
*/

.square__div {
  height: 0;
  width: 100%;
  padding-bottom: 100%;
}


/*
  ============================================
    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;
}

.preventTouchDefault {
  touch-action: none;
}

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

.smallcaps {
  font-variant: small-caps;
}

.uppercase {
  text-transform: uppercase;
}

.underline {
  text-decoration: underline;
}

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

.overflow-x--auto {
  overflow-x: auto;
}

.round {
  border-radius: 4px;
}

.height--0 {
  height: 0;
}

.height--100 {
  height: 100%;
}

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

.width--62 {
  /* golden ratio */
  width: 62%;
}

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

.position--absolute {
  position: absolute;
}

.position--relative {
  position: relative;
}

.base03 {
  color: var(--base03)
}

.base04 {
  color: var(--base04)
}

.base05 {
  color: var(--base05)
}

.base08 {
  color: var(--base08)
}

.base09 {
  color: var(--base09)
}

.base0A {
  color: var(--base0A)
}

.base0B {
  color: var(--base0B)
}

.base0C {
  color: var(--base0C)
}

.base0D {
  color: var(--base0D)
}

.base0E {
  color: var(--base0E)
}

.base0F {
  color: var(--base0F)
}

.text-align--left {
  text-align: left;
}

.text-align--center {
  text-align: center;
}

.text-align--right {
  text-align: right;
}

.font-weight--400 {
  font-weight: 400;
}

.font-weight--500 {
  font-weight: 500;
}

.semi-bold {
  font-weight: 600;
}

.bold {
  font-weight: 700;
}

.visibility--hidden {
  visibility: hidden;
}

.visibility--visible {
  visibility: visible;
}

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

.display--none {
  display: none;
}

/*
  ============================================
    CURSOR
  ============================================
*/

.cursor--pointer {
  cursor: pointer;
}

.cursor--grab {
  cursor: grab;
}

.cursor--grabbing {
  cursor: grabbing;
}

/*
  ============================================
    ICON SIZE
  ============================================
*/

:root {
  --icon--xs: calc(0.75rem * var(--scale-factor));
}

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

:root {
  --scaled--s: calc(0.125rem * var(--scale-factor));
  --scaled--1: calc(0.25rem * var(--scale-factor));
  --scaled--2: calc(0.5rem * var(--scale-factor));
  --scaled--3: calc(1.0rem * var(--scale-factor));
  --scaled--4: calc(1.75rem * var(--scale-factor));
}

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

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

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

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

.margin--auto {
  margin: auto;
}

.m--0 {
  margin: 0;
}

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

.m--1 {
  margin: calc(0.25rem * 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--0 {
  padding: 0;
}

.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));
}

.pb--100 {
  padding-bottom: 100%;
}



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

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

::-webkit-calendar-picker-indicator {
  opacity: 0.51;
  cursor: pointer;
}

input {
  accent-color: var(--base06);
  color-scheme: var(--color-scheme);
  outline: none;
}

input[type="checkbox"],
input[type="radio"] {
  min-height: calc(1.5rem * var(--scale-factor));
  cursor: pointer;
}

input:focus {
  border-color: var(--base0D);
  box-shadow: 0 0 4px var(--base0D);
}

form {
  border: 1px solid var(--base03);
  border-radius: 4px;
  padding: calc(1.5rem * var(--scale-factor));
  display: flex;
  flex-direction: column;
  gap: calc(1.5rem * var(--scale-factor));
  align-items: flex-start;
}

select {
  background-color: var(--base00);
  color: var(--base05);
  caret-color: var(--base05);
  border: 1px solid var(--base03);
  border-radius: 4px;
  padding: calc(0.25rem * var(--scale-factor)) calc(0.5rem * var(--scale-factor));
  border-radius: 4px;
  width: 100%;
  /* min-height important for equal input heights */
  min-height: calc(2.25rem * var(--scale-factor));
}


/*
  ============================================
    RULER
  ============================================
*/

hr {
  border: 0;
  border-top: 1px solid var(--base03);
  width: 100%;
}

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

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

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

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

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

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

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

.justify-content--space-evenly {
  justify-content: space-evenly;
}

.justify-content--flex-end {
  justify-content: flex-end;
}

.justify-content--center {
  justify-content: center;
}