@font-face {
  font-family: "HankenGrotesk";
  font-display: swap;
  font-weight: 100 900;
  src: url("assets/fonts/HankenGrotesk-VariableFont_wght.ttf")
    format("truetype");
}

:root {
  --font-family-default: "HankenGrotesk";

  --fw-regular: 500;
  --fw-bold: 700;
  --fw-black: 800;

  --fs-400: 1.125rem;
  --fs-500: 1.25rem;
  --fs-600: 1.5rem;
  --fs-700: 1.75rem;
  --fs-800: 2rem;
  --fs-900: 5rem;

  --clr-primary-hsl-400: 252, 100%, 67%;
  --clr-primary-hsl-500: 256, 72%, 46%;
  --clr-secondary-hsl-400: 241, 81%, 54%;
  --clr-secondary-hsl-500: 241, 72%, 46%, 0;

  --clr-neutral-hsl-100: 0, 0%, 100%;
  --clr-neutral-hsl-200: 221, 100%, 96%;
  --clr-neutral-hsl-300: 241, 100%, 89%;
  --clr-neutral-hsl-700: 0, 0%, 0%;

  --clr-neutral-100: hsl(var(--clr-neutral-hsl-100));
  --clr-neutral-200: hsl(var(--clr-neutral-hsl-200));
  --clr-neutral-300: hsl(var(--clr-neutral-hsl-300));
  --clr-neutral-700: hsl(var(--clr-neutral-hsl-700));

  --clr-primary-400: hsl(var(--clr-primary-hsl-400));
  --clr-primary-500: hsl(var(--clr-primary-hsl-500));
  --clr-secondary-400: hsl(var(--clr-secondary-hsl-400));
  --clr-secondary-500: hsl(var(--clr-secondary-hsl-500));

  --gradient-primary: linear-gradient(
    var(--clr-primary-400),
    var(--clr-secondary-400)
  );

  --gradient-to-transparent: linear-gradient(
    var(--clr-primary-500),
    hsl(var(--clr-secondary-hsl-500))
  );

  --clr-accent-1: 0, 100%, 67%;
  --clr-accent-2: 39, 100%, 56%;
  --clr-accent-3: 166, 100%, 37%;
  --clr-accent-4: 234, 85%, 45%;
}

*,
*::before,
*::after {
  box-sizing: border-box;
}

* {
  margin: 0;
  font: inherit;
}

img {
  display: block;
  max-width: 100%;
}

body {
  font-family: var(--font-family-default);
  font-size: var(--fs-400);
  color: var(--clr-neutral-700);
}

@media (min-width: 600px) {
  body {
    min-height: 100vh;
    display: grid;
    place-items: center;
  }
}

.flex-group {
  display: flex;
  align-items: center;
  gap: 0.5rem;
  flex-wrap: wrap;
}

.grid-flow {
  display: grid;
  align-content: start;
  gap: 1rem;
}

.grid-flow[data-spacing="large"] {
  gap: 2rem;
}

.section-title {
  font-weight: var(--fw-bold);
  font-size: var(--fs-600);
}

.button {
  color: var(--clr-neutral-100);
  line-height: 1;
  background: var(--clr-neutral-700);
  padding: 1rem 2rem;
  border: 0;
  border-radius: 100vw;
  cursor: pointer;
  /* no transition since going from color to gradient for hover 
   * gets too complex */
}

.button:hover,
.button:focus-visible {
  background: var(--gradient-primary);
}

.result-summary {
  --padding: 2.5rem;
  --border-radius: 2rem;

  max-width: 46rem;
  display: grid;
}

@media (min-width: 600px) {
  .result-summary {
    margin-inline: 1rem;
    grid-template-columns: 1fr 1fr;
    border-radius: var(--border-radius);
    overflow: hidden;
    box-shadow: 0.5rem 1rem 3rem hsl(var(--clr-neutral-hsl-700), 0.2);
  }
}

.results {
  color: hsl(var(--clr-neutral-hsl-100), 0.7);
  text-align: center;
  padding: var(--padding) calc(var(--padding) * 1.5);
  background: var(--gradient-primary);
  border-radius: 0 0 var(--border-radius) var(--border-radius);
}

@media (min-width: 600px) {
  .results {
    border-radius: var(--border-radius);
  }
}

.result-score {
  display: grid;
  place-content: center;
  width: 12rem;
  margin-inline: auto;
  background: var(--gradient-to-transparent);
  aspect-ratio: 1 / 1; /* perfect circle */
  border-radius: 50%;
}

.result-score span {
  display: block;
  font-size: var(--fs-900);
  font-weight: var(--fw-black);
  line-height: 1;
  color: var(--clr-neutral-100);
}

.result-rank {
  color: var(--clr-neutral-100);
  font-size: var(--fs-700);
  font-weight: var(--fw-bold);
}

.summary {
  padding: var(--padding);
}

.summary-item {
  display: flex;
  justify-content: space-between;
  align-items: center;
  padding: 1rem;
  border-radius: 0.5rem;
  background-color: hsl(var(--item-color), 0.1);
}

.summary-item-title {
  color: hsl(var(--item-color));
  font-weight: var(--fw-bold);
}

.summary-item[data-item-type="accent-1"] {
  --item-color: var(--clr-accent-1);
}

.summary-item[data-item-type="accent-2"] {
  --item-color: var(--clr-accent-2);
}

.summary-item[data-item-type="accent-3"] {
  --item-color: var(--clr-accent-3);
}

.summary-item[data-item-type="accent-4"] {
  --item-color: var(--clr-accent-4);
}

.summary-score {
  font-weight: var(--fw-black);
  color: hsl(var(--clr-neutral-hsl-700), 0.3);
}

.summary-score span {
  color: var(--clr-neutral-700);
}
