@import url('https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,100..1000;1,9..40,100..1000&display=swap');

:root {
  /* Font Families */
  --ff-dm-sans: 'DM Sans', sans-serif;

  /* Colors */
  --clr-neutral-0: #FFFFFF;
  --clr-neutral-100: #F2F2F7;
  --clr-neutral-200: #E4E4EF;
  --clr-neutral-600: #404254;
  --clr-neutral-700: #2A2B37;
  --clr-neutral-800: #21222C;
  --clr-neutral-900: #12131A;
  --clr-purple-400: #D3A0FA;
  --clr-purple-500: #C27CF8;
  --clr-yellow-500: #FF9F00;
  --clr-orange-500: #FE8159;
  --clr-orange-800: #DA3701;

  /* Text Presets */
  --txt-preset-1: 700 4rem / 1 var(--ff-dm-sans);
  --txt-preset-1-mobile: 700 2.5rem / 1 var(--ff-dm-sans);
  --txt-preset-2: 600 1.5rem / 1.3 var(--ff-dm-sans);
  --txt-preset-3: 400 1.25rem / 1.4 var(--ff-dm-sans);
  --txt-preset-4: 400 1rem / 1.3 var(--ff-dm-sans);
}

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

html {
  -moz-text-size-adjust: none;
  -webkit-text-size-adjust: none;
  text-size-adjust: none;
}

html,
body {
  position: relative;
  overflow-x: hidden;
  scroll-behavior: smooth;
}

body,
h1,
h2,
h3,
h4,
p,
figure,
blockquote,
dl,
dd {
  margin-block-end: 0;
}

ul[role='list'],
ol[role='list'] {
  list-style: none;
}

html {
  background: url("../images/bg-light-theme.png"), var(--clr-neutral-0);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

html.dark {
  background: url("../images/bg-dark-theme.png"), var(--clr-neutral-900);
  background-size: cover;
  background-position: center;
  background-repeat: no-repeat;
}

body {
  min-height: 100vh;
  font-size: 1rem;
  line-height: 1.5;
  font: var(--txt-preset-4);
}

h1,
h2,
h3,
h4,
h5,
h6,
button,
input,
label {
  font-weight: 700;
  line-height: 1.2;
}

a:not([class]) {
  text-decoration-skip-ink: auto;
  color: currentColor;
}

img,
picture {
  max-width: 100%;
  display: block;
  object-fit: cover;
}

input,
button,
textarea,
select {
  font-family: inherit;
  font-size: inherit;
  background-color: none;
  border: none;
}

input[type=number]::-webkit-inner-spin-button,
input[type=number]::-webkit-outer-spin-button {
  -webkit-appearance: none;
  margin: 0;
}

input[type=number] {
  appearance: textfield;
}

button {
  cursor: pointer;
}

textarea:not([rows]) {
  min-height: 10em;
}

:target {
  scroll-margin-block: 5ex;
}

a {
  text-decoration: none;
  color: inherit;
  background-color: none;
}

ul, ol {
  list-style: none;
}

/* End Reset */

/* Globals */
.container {
  width: calc(100% - 2rem);
  margin-inline: auto;
}

@media (min-width: 48rem) {
  .container {
    max-width: 44rem;
  }
}

@media (min-width: 64rem) {
  .container {
    max-width: 61.875rem;
  }
}

.textarea {
  width: 100%;
  min-height: 12.5rem;
  background-color: var(--clr-neutral-100);
  border: .125rem solid var(--clr-neutral-200);
  border-radius: .75rem;
  padding: .75rem;
  font: var(--txt-preset-3);
  letter-spacing: -0.6px;
  color: var(--clr-neutral-700);
  resize: none;
  transition: background-color .2s ease-in-out, border .2s ease-in-out, box-shadow .2s ease-in-out;
}

@media (min-width: 48rem) {
  .textarea {
    padding: 1.25rem;
  }
}

.textarea:focus {
  outline: none;
  border: .125rem solid var(--clr-purple-500);
  box-shadow: 0 0 .625rem var(--clr-purple-400);
}

.dark .textarea:focus {
  border: .125rem solid var(--clr-purple-500);
  box-shadow: 0 0 .625rem var(--clr-purple-400);
}

.textarea::placeholder {
  color: var(--clr-neutral-700);
}

.textarea:hover {
  background-color: var(--clr-neutral-200);
}

.dark .textarea {
  background-color: var(--clr-neutral-800);
  border: .125rem solid var(--clr-neutral-700);
  color: var(--clr-neutral-200);
}

.dark .textarea::placeholder {
  color: var(--clr-neutral-200);
}

.dark .textarea:hover {
  background-color: var(--clr-neutral-700);
  border: .125rem solid var(--clr-neutral-600);
}

.textarea--error {
  border-color: var(--clr-orange-800);
  box-shadow: 0 0 .5rem var(--clr-orange-800);
}

.dark .textarea--error {
  border-color: var(--clr-orange-500);
  box-shadow: 0 0 .5rem var(--clr-orange-500);
}

.textarea__message {
  display: none;
  align-items: center;
  gap: .5rem;
  font: var(--txt-preset-4);
  letter-spacing: -0.6px;
  color: var(--clr-orange-800);
}

.dark .textarea__message {
  color: var(--clr-orange-500);
}

.textarea__message-icon path {
  fill: var(--clr-orange-800);
}

.dark .textarea__message-icon path {
  fill: var(--clr-orange-500);
}

.textarea-controls__container {
  display: flex;
  flex-direction: column;
  gap: .75rem;
}

@media (min-width: 48rem) {
  .textarea-controls__container {
    flex-direction: row;
    align-items: center;
    justify-content: space-between;
    gap: 0;
  }
}

.textarea-controls__left {
  display: flex;
  flex-direction: column;
  gap: .75rem;
}

@media (min-width: 48rem) {
  .textarea-controls__left {
    flex-direction: row;
    align-items: center;
    gap: 1.5rem;
  }
}

.textarea-controls__item {
  display: flex;
  align-items: center;
  gap: .625rem;
}

.textarea-controls__number {
  width: 3.4375rem;
  height: 1.8125rem;
  display: none;
  font: var(--txt-preset-4);
  letter-spacing: -0.6px;
  color: var(--clr-neutral-900);
  text-align: center;
  border: 1px solid var(--clr-neutral-600);
  border-radius: .375rem;
}

.dark .textarea-controls__number {
  color: var(--clr-neutral-200);
  background: transparent;
}

.textarea-controls__reading-time {
  font: var(--txt-preset-4);
  letter-spacing: -0.6px;
}

.dark .textarea-controls__reading-time {
  color: var(--clr-neutral-200);
}

.checkbox {
  display: flex;
  align-items: center;
  cursor: pointer;
  font: var(--txt-preset-4);
  letter-spacing: -0.6px;
  color: var(--clr-neutral-900);
}

.dark .checkbox {
  color: var(--clr-neutral-200);
}

.checkbox__input {
  position: absolute;
  opacity: 0;
  pointer-events: none;
}

.checkbox__checkmark {
  width: 1rem;
  height: 1rem;
  border: 1px solid var(--clr-neutral-900);
  border-radius: .25rem;
  margin-right: .625rem;
  position: relative;
  transition: background-color .2s ease-in-out, border-color .2s ease-in-out;
}

.dark .checkbox__checkmark {
  border-color: var(--clr-neutral-200);
}

.checkbox .checkbox__input:checked + .checkbox__checkmark {
  background-color: var(--clr-purple-400);
  border-color: var(--clr-purple-400);
}

.checkbox:hover .checkbox__input:checked + .checkbox__checkmark {
  background-color: var(--clr-purple-500);
  border-color: var(--clr-purple-500);
}

.checkbox__checkmark::after {
  content: "";
  position: absolute;
  display: none;
  top: .0625rem; 
  left: .0625rem;
  width: .75rem;
  height: .75rem;
  background-image: url("../images/icon-check.svg");
}

.checkbox .checkbox__input:checked + .checkbox__checkmark::after {
  display: flex;
}

.checkbox .checkbox__input:focus:not(:checked) + .checkbox__checkmark {
  outline: none;
  border: .125rem solid var(--clr-neutral-200);
  box-shadow: 0 0 0 .125rem var(--clr-neutral-0), 0 0 0 .25rem var(--clr-purple-400);
}

.checkbox .checkbox__input:checked:focus + .checkbox__checkmark {
  outline: none;
  border: .125rem solid var(--clr-purple-400);
  box-shadow: 0 0 0 .125rem var(--clr-neutral-0), 0 0 0 .25rem var(--clr-purple-400);
  top: -0.0625rem;
  left: -0.0625rem;
}

.dark .checkbox .checkbox__input:focus:not(:checked) + .checkbox__checkmark {
  outline: none;
  background-color: var(--clr-neutral-0);
  border: .125rem solid var(--clr-neutral-200);
  box-shadow: 0 0 0 .125rem var(--clr-neutral-0), 0 0 0 .25rem var(--clr-purple-400);
}

/* End Globals */
.navbar__container {
  padding: 1rem 0;
  display: flex;
  align-items: center;
  justify-content: space-between;
}

@media (min-width: 64rem) {
  .navbar__container {
    padding: 2.125rem 0 0;
  }
}

.navbar__logo {
  height: 1.875rem;
}

@media (min-width: 48rem) {
  .navbar__logo {
    height: 2.5rem;
  }
}

.navbar__logo-img {
  width: 100%;
  height: 100%;
}

.navbar__logo-img--dark {
  display: none;
}

.navbar__logo-img--light {
  display: block;
}

.dark .navbar__logo-img--light {
  display: none;
}

.dark .navbar__logo-img--dark {
  display: block;
}

.navbar__toggle {
  width: 2rem;
  height: 2rem;
  display: flex;
  align-items: center;
  justify-content: center;
  background: var(--clr-neutral-100);
  border-radius: .375rem;
}

.dark .navbar__toggle {
  background: var(--clr-neutral-700);
}

@media (min-width: 48rem) {
  .navbar__toggle {
    width: 2.75rem;
    height: 2.75rem;
  }
}

.navbar__toggle-icon {
  width: 1.25rem;
  height: 1.25rem;
}

@media (min-width: 48rem) {
  .navbar__toggle-icon {
    width: 1.375rem;
    height: 1.375rem;
  }
}

.hero__container {
  padding: 2.5rem 0;
}

@media (min-width: 64rem) {
  .hero__container {
    padding: 3rem 0;
  }
}

.hero__title {
  font: var(--txt-preset-1-mobile);
  text-align: center;
  letter-spacing: -1px;
  color: var(--clr-neutral-900);
}

.dark .hero__title {
  color: var(--clr-neutral-100);
}

@media (min-width: 48rem) {
  .hero__title {
    font: var(--txt-preset-1);
    width: 31.875rem;
    margin-inline: auto;
  }
}

.typing__container {
  display: flex;
  flex-direction: column;
  gap: 1rem;
}

.stats {
  margin-top: 2.5rem;
}

@media (min-width: 64rem) {
  .stats {
    margin-top: 3rem;
  }
}

.stats__cards {
  display: grid;
  gap: 1rem;
}

@media (min-width: 48rem) {
  .stats__cards {
    grid-template-columns: repeat(3, 1fr);
  }
}

.stats__card {
  padding: 1.6875rem 1.25rem;
  border-radius: .75rem;
}

@media (min-width: 48rem) {
  .stats__card {
    padding: 1.5625rem .75rem;
  }
}

@media (min-width: 64rem) {
  .stats__card {
    padding: 1.6563rem 1rem;
  }
}

.stats__card--total {
  background: url("../images/pattern-character-count.svg"), var(--clr-purple-400);
  background-size: 9.375rem 9.375rem, cover;
  background-repeat: no-repeat;
  background-position: center right -3.1563rem, center;
}

@media (min-width: 48rem) {
  .stats__card--total {
    background-position: center right -4.375rem, center;
  }
}

@media (min-width: 64rem) {
  .stats__card--total {
    background-position: center right -1.875rem, center;
  }
}

.stats__card--word {
  background: url("../images/pattern-word-count.svg"), var(--clr-yellow-500);
  background-size: 9.375rem 9.375rem, cover;
  background-repeat: no-repeat;
  background-position: center right -3.1563rem, center;
}

@media (min-width: 48rem) {
  .stats__card--word {
    background-position: center right -4.375rem, center;
  }
}

@media (min-width: 64rem) {
  .stats__card--word {
    background-position: center right -1.875rem, center;
  }
}

.stats__card--sentence {
  background: url("../images/pattern-sentence-count.svg"), var(--clr-orange-500);
  background-size: 9.375rem 9.375rem, cover;
  background-repeat: no-repeat;
  background-position: center right -3.1563rem, center;
}

@media (min-width: 48rem) {
  .stats__card--sentence {
    background-position: center right -4.375rem, center;
  }
}

@media (min-width: 64rem) {
  .stats__card--sentence {
    background-position: center right -1.875rem, center;
  }
}

.stats__card-number {
  font: var(--txt-preset-1-mobile);
  letter-spacing: -1px;
  color: var(--clr-neutral-900);
}

@media (min-width: 48rem) {
  .stats__card-number {
    font: var(--txt-preset-1);
  }
}

.stats__card-title {
  margin-top: .5rem;
  font: var(--txt-preset-3);
  letter-spacing: -0.6px;
  color: var(--clr-neutral-900);
}

@media (min-width: 64rem) {
  .stats__card-title {
    margin-top: .3125rem;
  }
}

.stats__card-title-span {
  font: var(--txt-preset-4);
}

.letters {
  margin: 1.5rem 0 2rem;
}

@media (min-width: 48rem) {
  .letters {
    margin: 1.5rem 0 5.8125rem;
  }
}

@media (min-width: 64rem) {
  .letters {
    margin: 1.5rem 0 4rem;
  }
}

.letters__title {
  font: var(--txt-preset-2);
  letter-spacing: -1px;
  color: var(--clr-neutral-900);
}

.dark .letters__title {
  color: var(--clr-neutral-200);
}

.letters__empty {
  margin-top: 1.25rem;
  font: var(--txt-preset-4);
  letter-spacing: -0.6px;
  color: var(--clr-neutral-600);
}

.dark .letters__empty {
  color: var(--clr-neutral-200);
}

.letters__info {
  display: none;
  margin-top: 1.25rem;
}

.letters__grid {
  display: grid;
  gap: .75rem;
  overflow: hidden;
}

.letters__grid--open {
  overflow: visible;
  height: auto;
}

.letter {
  display: flex;
  align-items: center;
  justify-content: space-between;
  gap: .875rem;
}

.letter__title {
  flex: 0 0 1rem;
  font: var(--txt-preset-4);
  letter-spacing: -0.6px;
  color: var(--clr-neutral-900);
}

.dark .letter__title {
  color: var(--clr-neutral-200);
} 

.letter__bar-container {
  flex: 1;
  height: .75rem;
  background-color: var(--clr-neutral-200);
  border-radius: 62.4375rem;
}

.dark .letter__bar-container {
  background-color: var(--clr-neutral-800);
}

.letter__bar {
  width: 50%;
  height: 100%;
  background-color: var(--clr-purple-400);
  border-radius: 62.4375rem;
}

.letter__data {
  flex: 0 0 5.4375rem;
  display: flex;
  justify-content: flex-end;
  gap: .25rem;
  font: var(--txt-preset-4);
  letter-spacing: -0.6px;
  color: var(--clr-neutral-900);
}

.dark .letter__data {
  color: var(--clr-neutral-200);
} 

.letters__button {
  margin-top: 1.25rem;
  background-color: transparent;
  display: flex;
  align-items: center;
  gap: .5rem;
  font: var(--txt-preset-3);
  letter-spacing: -0.6px;
  color: var(--clr-neutral-900);
}

.dark .letters__button {
  color: var(--clr-neutral-200);
}

.dark .letters__button .letters__button-icon {
  filter: invert(100%);
}

.letters__button--open .letters__button-icon {
  transform: rotate(180deg);
}

.disable-transitions *, 
.disable-transitions *::before, 
.disable-transitions *::after {
  transition: none !important;
}