:root {
  --theme-primary: #6200ee;
}

@font-face {
  src: url("./Roboto.ttf");
  font-family: Roboto;
}

material *:not(icon, [nostyle]) {
  font-family: Roboto, sans-serif;
}

material *[fullwidth]:not([nostyle]) {
  width: 100%;
}

material div.ripple {
  position: absolute;
  transform: scale(0);
  animation: ripple 400ms linear;
  border-radius: 50%;
  background-color: rgba(222, 222, 222, 0.6);
  aspect-ratio: 1;
}

@keyframes ripple {
  to {
    transform: scale(2);
    opacity: 0;
  }
}

/** BEGIN MAIN **/

/* #region Buttons */

material button:not([nostyle]) {
  display: flex;
  position: relative;
  justify-content: center;
  align-items: center;
  cursor: pointer;
  border-radius: 4px;
  min-width: 64px;
  height: 36px;
  overflow: hidden;
  font-weight: 500;
  font-size: 0.875rem;
  letter-spacing: 0.0892857143em;
  text-transform: uppercase;
}

material button:not([nostyle]):disabled {
  cursor: initial;
  color: rgba(0, 0, 0, 0.38) !important;
}

material button:not([nostyle]):has(icon[leading]:not([nostyle])) {
  padding-left: 12px;
}

material button:not([nostyle]) > icon[leading]:not([nostyle]) {
  margin-right: 8px;
  width: 18px;
  height: 18px;
  font-size: 18px;
}

material button:not([nostyle]):has(icon[trailing]:not([nostyle])) {
  padding-right: 12px;
}

material button:not([nostyle]) > icon[trailing]:not([nostyle]) {
  margin-left: 8px;
  width: 18px;
  height: 18px;
  font-size: 18px;
}

material button[variant="contained"]:not([nostyle]) {
  box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2), 0px 2px 2px 0px rgba(0, 0, 0, 0.14), 0px 1px 5px 0px rgba(0, 0, 0, 0.12);
  border: none;
  background-color: var(--theme-primary);
  padding: 0 16px 0 16px;
  color: #fff;
}

material button[variant="contained"]:not([disabled], [nostyle]):hover {
  background-color: #6e14ef;
}

material button[variant="contained"]:not([nostyle]):disabled {
  box-shadow: none;
  background-color: #dcdcdc;
}

material button[variant="outlined"]:not([nostyle]) {
  border: 1px solid #dcdcdc;
  background-color: transparent;
  padding: 0 16px 0 16px;
  color: var(--theme-primary);
}

material button[variant="outlined"]:not([disabled], [nostyle]):hover {
  background-color: #f4f0fa;
}

material button[variant="text"]:not([nostyle]) {
  border: none;
  background-color: transparent;
  padding: 0 8px 0 8px;
  color: var(--theme-primary);
}

material button[variant="text"]:not([disabled], [nostyle]):hover {
  background-color: #e8e2ed;
}

/* #endregion */

/* #region FAB */

material fab:not([nostyle]) {
  display: flex;
  position: absolute;
  right: 16px;
  bottom: 16px;
  align-items: center;
  cursor: pointer;
  box-sizing: border-box;
  box-shadow: rgba(0, 0, 0, 0.2) 0px 3px 5px -1px, rgba(0, 0, 0, 0.14) 0px 6px 10px 0px, rgba(0, 0, 0, 0.12) 0px 1px 18px 0px;
  border-radius: 50%;
  background-color: var(--theme-primary);
  padding: 0 16px 0 16px;
  aspect-ratio: 1;
  width: 56px;
  overflow: hidden;
  user-select: none;
}

material fab:not([disabled], [nostyle]):hover {
  background-color: #6e14ef;
}

material fab:not([nostyle]) > icon {
  color: #fff;
}

/* #endregion */

/* #region Linear Progress */

@keyframes linear-progress-1 {
  0% {
    left: -35%;
    right: 100%;
  }

  60% {
    left: 100%;
    right: -90%;
  }
  100% {
    left: 100%;
    right: -90%;
  }
}

@keyframes linear-progress-2 {
  0% {
    left: -200%;
    right: 100%;
  }

  60% {
    left: 107%;
    right: -8%;
  }
  100% {
    left: 107%;
    right: -8%;
  }
}

/** Track */
material linear-progress:not([nostyle]) {
  display: block;
  background-color: #d7b7fd;
  width: 240px;
  height: 4px;
  position: absolute;
  overflow: hidden;
}

/** Pseudos */
material linear-progress:not([nostyle])::after,
material linear-progress[indeterminate]:not([nostyle])::before {
  display: block;
  background-color: var(--theme-primary);
  height: 4px;
  content: "";
}

/** Determinate Pseudo */
material linear-progress:not([indeterminate], [nostyle])::after {
  width: calc(var(--progress) * 100%);
  transition: width 250ms;
}

/** Indeterminate Pseudo 1 */
material linear-progress[indeterminate]:not([nostyle])::before {
  animation: 2.1s cubic-bezier(0.65, 0.815, 0.735, 0.395) 0s infinite normal none running linear-progress-1;
  position: absolute;
}

/** Indeterminate Pseudo 2 */
material linear-progress[indeterminate]:not([nostyle])::after {
  animation: 2.1s cubic-bezier(0.165, 0.84, 0.44, 1) 1.15s infinite normal none running linear-progress-2;
  position: absolute;
}

/* #endregion */
