@font-face {
  font-family: 'Rosarivo';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url("../../fonts/Rosarivo/Rosarivo-Italic.ttf") format('truetype');
}

@font-face {
  font-family: 'Rosarivo';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../../fonts/Rosarivo/Rosarivo-Regular.ttf") format('truetype');
}

@font-face {
  font-family: 'Squada One';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url("../../fonts/Squada_One/SquadaOne-Regular.ttf") format('truetype');
}

:root {
  --pico-font-family: "Rosarivo", cursive;
  font-style: normal;
}

html {
  scroll-behavior: smooth;
}

h1 {
  font-size: 3rem;
}

svg {
  color: var(--pico-color);
  stroke: var(--pico-color);
}

dialog {
  article {
    border: 5px solid var(--bardic-blue);
  }
}

.header-logo {
  max-height: 5rem;
}

.color-font {
  font-size: var(--pico-font-size) * 2.0;
  line-height: 1rem;
}

span.color-font {
  font-size: 1.10rem;
  font-weight: bold;
}

.center-contents-v {
  display: flex;
  flex-direction: column;
  justify-content: center;
}

.center-contents-v>* {
  display: flex;
  justify-content: center;
}

.center-contents-h {
  display: flex;
  flex-direction: column;
  align-items: center;
}

.center-contents-h>* {
  display: flex;
  align-items: center;
}

.center-contents-vh {
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
}

.center-contents-vh>* {
  display: flex;
  justify-content: center;
  align-items: center;
}

.login-provider-button {
  position: relative;
}

.login-provider-logo {
  position: absolute;
  top: 0.5em;
  left: 1em;
}

.user-info {
  display: grid;
  align-items: center;
  justify-items: right;
  grid-template-areas:
    "welcome welcome   avatar"
    "theme-toggle logout avatar";
}

.user-info-avatar {
  grid-area: avatar;
  margin-left: 1rem;
  width: 4rem;
  height: 4rem;
  justify-content: center;
  align-items: center;
}

.user-info-avatar>img {
  border-radius: 50%;
  border: 2px;
  border-style: solid;
  border-color: var(--pico-contrast-border);
  aspect-ratio: 1/1;
  width: 100%;
  object-fit: contain;
}

.user-info-avatar>img:hover {
  border: 3px;
  border-color: var(--pico-primary-hover-border);
}

.user-info-welcome {
  grid-area: welcome;
}

.user-info-logout {
  grid-area: logout;
}

.user-info-theme-toggle {
  grid-area: theme-toggle;
}

.divider {
  display: flex;
  justify-content: center;
  font-style: italic;
  margin-top: 0.5rem;
  margin-bottom: 0.5rem;
}

.hidden {
  display: none;
}

.editable-icon>.hover-target {
  opacity: 0%;
  transition: ease opacity 0.5s;
}

.editable-icon:hover>.hover-target {
  opacity: 100%;
  transition: ease opacity 0.5s;
}

.fade-in {
  opacity: 1;
  transition: opacity 0.5s ease-in;
}

.fade-out {
  opacity: 0;
  transition: opacity 0.5s ease;
}

.vanish-in {
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-name: vanishIn;
  animation-name: vanishIn;
}

@-webkit-keyframes vanishIn {
  0% {
    opacity: 0;
    transform-origin: 50% 50%;
    transform: scale(2, 2);
    filter: blur(90px);
  }

  100% {
    opacity: 1;
    transform-origin: 50% 50%;
    transform: scale(1, 1);
    filter: blur(0px);
  }
}

@keyframes vanishIn {
  0% {
    opacity: 0;
    transform-origin: 50% 50%;
    transform: scale(2, 2);
    filter: blur(90px);
  }

  100% {
    opacity: 1;
    transform-origin: 50% 50%;
    transform: scale(1, 1);
    filter: blur(0px);
  }
}

.vanish-out {
  -webkit-animation-duration: 1s;
  animation-duration: 1s;
  -webkit-animation-name: vanishOut;
  animation-name: vanishOut;
}

@-webkit-keyframes vanishOut {
  0% {
    opacity: 1;
    transform-origin: 50% 50%;
    transform: scale(1, 1);
    filter: blur(0px);
  }

  100% {
    opacity: 0;
    transform-origin: 50% 50%;
    transform: scale(2, 2);
    filter: blur(20px);
  }
}

@keyframes vanishOut {
  0% {
    opacity: 1;
    transform-origin: 50% 50%;
    transform: scale(1, 1);
    filter: blur(0px);
  }

  100% {
    opacity: 0;
    transform-origin: 50% 50%;
    transform: scale(2, 2);
    filter: blur(20px);
  }
}

@media (width <=480px) {
  .header-logo {
    font-size: 2rem;
  }
}

.banner {
  background-color: var(--pico-card-background-color);
  border: 2px solid;
  border-color: var(--pico-primary-border);

  p {
    margin: 0px;
  }
}

.banner-error {
  border-color: var(--pico-form-element-invalid-focus-color);
}

.banner-success {
  border-color: var(--pico-form-element-valid-focus-color);
}

.toast-container {
  text-align: center;
  z-index: 1;
  width: 100%;

  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;

  position: fixed;
  top: 30px;

  /* Allow people to click through it */
  pointer-events: none;
}


.toast {
  visibility: hidden;
  width: clamp(90%, 20rem, 20rem);
}

.toast.show {
  visibility: visible;
  -webkit-animation: fadein 0.5s, fadeout 0.5s 2.5s;
  animation: fadein 0.5s, fadeout 0.5s 2.5s;
}

@-webkit-keyframes fadein {
  from {
    top: 0;
    opacity: 0;
  }

  to {
    top: 30px;
    opacity: 1;
  }
}

@keyframes fadein {
  from {
    top: 0;
    opacity: 0;
  }

  to {
    top: 30px;
    opacity: 1;
  }
}

@-webkit-keyframes fadeout {
  from {
    top: 30px;
    opacity: 1;
  }

  to {
    top: 0;
    opacity: 0;
  }
}

@keyframes fadeout {
  from {
    top: 30px;
    opacity: 1;
  }

  to {
    top: 0;
    opacity: 0;
  }
}

@media (width <=900px) {
  .top-navbar {
    display: flex;
    flex-direction: column;
    justify-content: center;
    align-items: center;

    li {
      margin-top: 5px;
      margin-bottom: 5px;
      padding-top: 0;
      padding-bottom: 0;
    }
  }
}

.page-title {
  margin-bottom: 0;
}

.page-title-underline {
  height: 2rem;
  width: clamp(10rem, 20%, 20rem);
  margin-bottom: 1rem;
}

#theme-toggle {
  display: grid;
  grid-template-columns: 2rem auto 2rem;
  justify-items: center;
  align-items: center;
  align-content: center;
}

/* TODO BL THis is just not showing */
.header-link-separator {
  display: flex;
  justify-content: center;
  align-items: center;

  svg {
    height: 1.5rem;
  }
}

.modal {
  font-size: var(--pico-font-size);
  text-shadow: none;
}

.no-tooltip-underline[data-tooltip] {
  border-bottom: 0;
}

.tooltip-no-shadow:hover {
  --pico-box-shadow: none;
  text-shadow: none;
}

.tooltip-no-shadow:focus {
  --pico-box-shadow: none;
  text-shadow: none;
}

.volume-input {
  input[type="range"] {
    appearance: none;
  }

  /******** Chrome and Safari ********/
  input[type="range"]::-webkit-slider-thumb {
    height: 1rem;
    width: 1rem;
  }

  input[type="range"]::-webkit-slider-runnable-track {
    height: 0.2rem;
  }

  /******** Firefox ********/
  input[type="range"]::-moz-range-track {
    height: 0.2rem;
  }

  input[type="range"]::-moz-range-thumb {
    height: 0.6rem;
    width: 0.6rem;
  }

  input[type="range"]:focus-within {
    --pico-range-border-color: var(--bardic-light);
    --pico-range-active-border-color: var(--bardic-light);
  }
}

.bard-background {
  background-image: linear-gradient(to bottom, transparent 0%, var(--pico-background-color)), url("/public/img/hero-bg-lines.png");
  background-repeat: no-repeat;
  background-position: top center;
  padding-top: 5rem;
  padding-bottom: 5rem;
}

/* Works with with imgs */
.outline-black {
  --outline-color: black;
  --outline-thickness: 3px;
  -webkit-filter:
    drop-shadow(var(--outline-thickness) 0px 0 var(--outline-color)) drop-shadow(0px var(--outline-thickness) 0 var(--outline-color)) drop-shadow(calc(-1 * var(--outline-thickness)) 0px 0 var(--outline-color)) drop-shadow(0px calc(-1 * var(--outline-thickness)) 0 var(--outline-color));
  filter:
    drop-shadow(var(--outline-thickness) 0px 0 var(--outline-color)) drop-shadow(0px var(--outline-thickness) 0 var(--outline-color)) drop-shadow(calc(-1 * var(--outline-thickness)) 0px 0 var(--outline-color)) drop-shadow(0px calc(-1 * var(--outline-thickness)) 0 var(--outline-color));
}

.sound-ghost {
  background-color: var(--pico-background-color);
  height: fit-content;
  max-width: 20rem;

  display: block;

  .favourite {
    display: none;
  }

  .controls {
    display: none;
  }

  svg {
    display: none;
  }
}

/* A Button, but removing the styles from PicoCSS */
button.unstyled-button {
  border: 0;
  background-color: transparent;
  padding: 0;

  --pico-color: var(--pico-primary-inverse);
}

/** Bardic Wind
 *
 * This is just a collection of utility CSS classes for common transformations of properties.
 * Like Tailwind, but just what I need and probably worse.
 *
 * When navigating, look for the UPPERCASE version of the CSS property you want to modify
 * (e.g. HEIGHT, WIDTH, OPACITY)
 */

/* Classes that set the HEIGHT attribute */
.height-1rem {
  height: 1rem;
}

.height-1-5rem {
  height: 1.5rem;
}

.height-2rem {
  height: 2rem;
}

.height-10rem {
  height: 10rem;
}

.height-15rem {
  height: 15rem;
}

.full-h {
  height: 100%;
}

.min-height-1-5rem {
  min-height: 1.5rem;
}

.min-height-2rem {
  min-height: 2rem;
}

.min-height-15rem {
  min-height: 15rem;
}

/* Classes that set the WIDTH attribute */
.width-0-5rem {
  width: 0.5rem;
}

.width-1rem {
  width: 1rem;
}

.width-2rem {
  width: 2rem;
}

.width-10rem {
  width: 10rem;
}

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

.full-w {
  width: 100%;
}

/* Classes that set COLOR and BORDER-COLOR */
.blue {
  color: var(--bardic-blue);
  stroke: var(--bardic-blue);
  border-color: var(--bardic-blue);

  svg {
    color: var(--bardic-blue);
    stroke: var(--bardic-blue);
  }
}

.blue-50a {
  color: var(--bardic-blue-50a);
  stroke: var(--bardic-blue-50a);
  border-color: var(--bardic-blue-50a);

  svg {
    color: var(--bardic-blue-50a);
    stroke: var(--bardic-blue-50a);
  }
}

.red {
  color: var(--pico-form-element-invalid-focus-color);
  stroke: var(--pico-form-element-invalid-focus-color);
  border-color: var(--pico-form-element-invalid-focus-color);

  svg {
    color: var(--pico-form-element-invalid-focus-color);
    stroke: var(--pico-form-element-invalid-focus-color);
  }
}

.green {
  color: var(--pico-form-element-valid-focus-color);
  stroke: var(--pico-form-element-valid-focus-color);
  border-color: var(--pico-form-element-valid-focus-color);

  svg {
    color: var(--pico-form-element-valid-focus-color);
    stroke: var(--pico-form-element-valid-focus-color);
  }
}

.dark {
  color: var(--bardic-dark);
  stroke: var(--bardic-dark);
  border-color: var(--bardic-dark);

  svg {
    color: var(--bardic-dark);
    stroke: var(--bardic-dark);
  }
}

.light {
  color: var(--bardic-light);
  stroke: var(--bardic-light);
  border-color: var(--bardic-light);

  svg {
    color: var(--bardic-light);
    stroke: var(--bardic-light);
  }
}

.pico-primary {
  color: var(--pico-primary);
  stroke: var(--pico-primary);
  border-color: var(--pico-primary);

  svg {
    color: var(--pico-primary);
    stroke: var(--pico-primary);
  }
}

.pico-color {
  color: var(--pico-color);
  stroke: var(--pico-color);
  border-color: var(--pico-color);

  svg {
    color: var(--pico-color);
    stroke: var(--pico-color);
  }
}

.pico-contrast {
  color: var(--pico-contrast);
  stroke: var(--pico-contrast);
  border-color: var(--pico-contrast);

  svg {
    color: var(--pico-contrast);
    stroke: var(--pico-contrast);
  }
}

.color-pico-background {
  color: var(--pico-background-color);
  stroke: var(--pico-background-color);
  border-color: var(--pico-background-color);

  svg {
    color: var(--pico-background-color);
    stroke: var(--pico-background-color);
  }
}

.svg-fill-blue {
  svg {
    fill: var(--bardic-blue);
  }
}

.svg-fill-pico-background {
  svg {
    fill: var(--pico-background-color);
  }
}

.svg-fill-pico-color {
  svg {
    fill: var(--pico-color);
  }
}

.svg-stroke-pico-color {
  svg {
    stroke: var(--pico-color);
  }
}

.svg-stroke-pico-primary-inverse {
  svg {
    stroke: var(--pico-primary-inverse);
  }
}

/* Classes that set FLEX-DIRECTION */
.flex-direction-row {
  flex-direction: row;
}

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

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

/* Classes that set FLEX */
.flex {
  display: flex;
}

/* Classes that set GAP */
.gap-5px {
  gap: 5px;
}

/* Classes that set GRID */
.grid {
  display: grid;
}

/* Classes that set TEXT-ALIGN */
.text-align-center {
  text-align: center;
}

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

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

/* Classes that set LINE-HEIGHT */
.line-height-1rem {
  line-height: 1rem;
}

/* Classes that set TEXT-DECORATION */
.text-decoration-none {
  text-decoration: none;
}

/* Classes that set MARGIN-BOTTOM */
.margin-bottom-0 {
  margin-bottom: 0rem;
}

.margin-bottom-5px {
  margin-bottom: 5px;
}

.margin-bottom-1rem {
  margin-bottom: 1rem;
}

.margin-bottom-2rem {
  margin-bottom: 2rem;
}

.margin-bottom-4rem {
  margin-bottom: 4rem;
}

/* Classes that set MARGIN-RIGHT */
.margin-right-0 {
  margin-right: 0;
}

.margin-right-5px {
  margin-right: 5px;
}

/* Classes that set MARGIN-LEFT */
.margin-left-0 {
  margin-left: 0;
}

.margin-left-5px {
  margin-left: 5px;
}

/* Classes that set OPACITY */

.invisible {
  opacity: 0%;
}

/* Various CONTAINER sizings */
.container-medium {
  max-width: 70rem;
  margin-left: auto;
  margin-right: auto;
  padding-left: auto;
  padding-right: auto;
  justify-content: center;
}

.container-small {
  max-width: 50rem;
  margin-left: auto;
  margin-right: auto;
  padding-left: auto;
  padding-right: auto;
  justify-content: center;
}

.container-xsmall {
  max-width: 25rem;
  margin-left: auto;
  margin-right: auto;
  padding-left: auto;
  padding-right: auto;
  justify-content: center;
}

/* Classes that set JUSTIFY-CONTENT */
.align-left {
  justify-content: left;
}

.align-right {
  justify-content: right;
}

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

/* Classes that set FONT-FAMILY */
.font-family-bardic-sans {
  font-family: var(--bardic-font-sans);
}

/* Casses that set FONT* */
.font-size-0-5-rem {
  font-size: 0.5rem;
}

.font-size-0-7rem {
  font-size: 0.7rem;
}

.font-size-1-rem {
  font-size: 0.5rem;
}

.font-size-1-2-rem {
  font-size: 1.2rem;
}

.font-size-1-5-rem {
  font-size: 1.5rem;
}

.font-size-2-rem {
  font-size: 2rem;
}

.font-size-4-rem {
  font-size: 4rem;
}

.font-size-small {
  font-size: small;
}

.font-size-smaller {
  font-size: smaller;
}

/* Classes that set PADDING* */
.padding-5px {
  padding: 5px;
}

.padding-left-5px {
  padding-left: 5px;
}

.padding-right-5px {
  padding-right: 5px;
}

.padding-top-5px {
  padding-top: 5px;
}

.padding-bottom-5px {
  padding-bottom: 5px;
}

.padding-0-5rem {
  padding: 0.5rem;
}

.padding-left-0-5rem {
  padding-left: 0.5rem;
}

.padding-right-0-5rem {
  padding-right: 0.5rem;
}

.padding-top-0-5rem {
  padding-top: 0.5rem;
}

.padding-bottom-0-5rem {
  padding-bottom: 0.5rem;
}

.padding-1rem {
  padding: 1rem;
}

.padding-left-1rem {
  padding-left: 1rem;
}

.padding-right-1rem {
  padding-right: 1rem;
}

.padding-top-1rem {
  padding-top: 1rem;
}

.padding-bottom-1rem {
  padding-bottom: 1rem;
}

/* Classes that set BORDER* */
.border-0 {
  border: 0;
}

.border-solid-1px {
  border: 1px solid;
}

.border-solid-2px {
  border: 2px solid;
}

.border-pico-bg-color {
  border-color: var(--pico-background-color);
}

.border-blue {
  border-color: var(--bardic-blue);
}

.border-red {
  border-color: var(--pico-form-element-invalid-focus-color);
}

.border-green {
  border-color: var(--pico-form-element-valid-focus-color);
}

.border-pico-color {
  border-color: var(--pico-color);
}

.border-bardic-light {
  border-color: var(--bardic-light);
}

.border-radius-pico-border-radius {
  border-radius: var(--pico-border-radius);
}

/* Classes that set BACKGROUND */
.background-color-pico-background {
  background-color: var(--pico-background-color);
}

.background-color-pico-color {
  background-color: var(--pico-color);
}

.background-color-bardic-dark {
  background-color: var(--bardic-dark);
}

.background-color-blue {
  background-color: var(--bardic-blue);
}

.background-color-blue-10a {
  background-color: var(--bardic-blue-10a);
}

.background-color-blue-20a {
  background-color: var(--bardic-blue-20a);
}

.background-color-blue-50a {
  background-color: var(--bardic-blue-50a);
}

.background-color-red {
  background-color: var(--pico-form-element-invalid-focus-color);
}

.background-color-green {
  background-color: var(--pico-form-element-valid-focus-color);
}

.background-color-grey {
  background-color: var(--bardic-grey);
}

.background-color-pico-dark-background {
  /* Picocss's regular background color, which we need for inputs and such */
  background-color: #13171f;
}

.background-color-pico-form-element {
  background-color: var(--pico-form-element-background-color);
}

/* Classes that set ALIGN-CONTENT */
.align-content-center {
  align-content: center;
}

/* Classes that set BOX-SHADOE */
.box-shadow-none {
  box-shadow: none;
}

/* Classes that set TRANSITION* */
.transition-all-300ms {
  transition: all 300ms;
}

/* Classes that set TRANSFORM* */
.transform-scale-102 {
  transform: scale(102%)
}

.transform-scale-105 {
  transform: scale(105%)
}

/* Classes that set CURSOR* */
.cursor-pointer {
  cursor: pointer;
}

.cursor-pointer[data-tooltip] {
  cursor: pointer;
}

/* Classes that set POSITION and other position-related attributes (e.g. `right` and `bottom`) */
.position-absolute {
  position: absolute;
}

.position-fixed {
  position: fixed;
}

.position-relative {
  position: relative;
}

.right-0 {
  right: 0;
}

.right-1rem {
  right: 1rem;
}

.left-1rem {
  left: 1rem;
}

.top-0 {
  top: 0;
}

.bottom-0 {
  bottom: 0;
}

.bottom-1rem {
  bottom: 1rem;
}

/* Classes that set OVERFLOW* */
.overflow-y-hidden {
  overflow-y: hidden;
}

.overflow-y-scroll {
  overflow-y: scroll;
}

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

/* Classes that set Z-INDEX */
.z-remove-sound {
  z-index: var(--bardic-z-indices-remove-sound);
}

/* Classes that set WHITE-SPACE */
.white-space-nowrap {
  white-space: nowrap;
}