﻿/* Root Variables */
:root {
  --color-bg: #000000;
  --color-primary: #ab2338;
  --color-accent: #38eb85;
  --color-heading: #000000;
}

/* Reset */
* {
  margin: 0;
  padding: 0;
  box-sizing: border-box;
}

/* Body */
body {
  display: flex;
  min-height: 100vh;
  background-color: var(--color-bg);
  color: var(--color-primary);
  font-family: 'Big Shoulders Display', 'Oswald', 'Arial Black', sans-serif;
  font-size: 16px;
  font-weight: 700;
  letter-spacing: 0.02em;
  border: 1rem double;
  cursor: url("data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABQAAAAUCAMAAAC6V+0/AAAACVBMVEX///8AAAD///9+749PAAAAAXRSTlMAQObYZgAAAEdJREFUeAF90FEKgDAMwFDT+x9awYCRwjL282CM9joFsGie/swYy6oiENW8RaJ5PBvxvCpqxfwetTOqeyo+Rgx3JjnrCxNa3TwuAY6NyoMhAAAAAElFTkSuQmCC") 16 16, auto;
}
@media (hover: none) and (pointer: coarse) {
  body {
    min-height: 100svh;
  }
}

/* Flex utilities */
.flex-row { display: flex; flex-direction: row; }
.flex-column { display: flex; flex-direction: column; }
.wrap { flex-wrap: wrap; }
.grow-1 { flex-grow: 1; }
.gap-md { gap: 1rem; }

/* Alignment */
.justify-center { justify-content: center; }
.justify-space { justify-content: space-between; }
.justify-end { justify-content: flex-end; }
.align-center { align-items: center; }
.align-end { align-items: flex-end; }

/* Container */
.container {
  width: 100%;
  padding: 0 1rem;
  background-color: var(--color-bg);
}

/* Borders */
.black {
  border-color: var(--color-bg);
}

/* Typography */
h1, h2, a {
  margin: 0;
  height: fit-content;
}

h1 {
  font-size: 6em;
  font-weight: 900;
  color: var(--color-heading);
  background-color: var(--color-primary);
}

h2 {
  font-size: 1.5em;
}

a {
  font-size: 1.5em;
  color: var(--color-primary);
  cursor: inherit;
  user-select: none;
  -webkit-tap-highlight-color: transparent;
}

a:active {
  color: var(--color-accent);
}

@media (hover: hover) and (pointer: fine) {
  a:hover {
    color: var(--color-accent);
  }
}

/* Images */
img {
  width: 100%;
  max-width: 300px;
  margin: 1rem 0;
  user-select: none;
}

/* Visibility toggle */
.fade {
  opacity: 0;
}

.toshow {
  display: none;
}

/* Footer */
footer {
  padding-bottom: 1rem;
}

footer div {
  font-size: 1.5em;
  flex-basis: 12em;
}

/* Selection */
::selection {
  color: var(--color-heading);
  background: var(--color-primary);
}

/* Responsive */
@media only screen and (max-width: 1024px) {
  h1 { font-size: 5rem; }
}

@media only screen and (max-width: 767px) {
  h1 { font-size: 4rem; }
  h2, a, footer div { font-size: 1.2em; }
}

@media only screen and (max-width: 480px) {
  h1 { font-size: 3rem; }
}
