/*------------------------------------*\
  #GLOBAL-STYLES
\*------------------------------------*/

:root {
  --clr-bg-dark: hsl(215, 28%, 17%);
  --clr-bg-light: hsl(152, 81%, 96%);

  --clr-primary-400: hsl(160, 84%, 39%);
  --clr-primary-300: hsl(144, 70%, 58%);
  --clr-primary-200: hsl(142, 93%, 65%);
  --clr-primary-100: hsl(142, 82%, 65%);

  --clr-neutral-light-300: hsl(255, 5%, 84%);
  --clr-neutral-light-200: hsl(255, 5%, 90%);
  --clr-neutral-light-100: hsl(0, 0%, 100%);

  --clr-neutral-dark-600: hsl(250, 18%, 19%);
  --clr-neutral-dark-500: hsl(215, 30%, 18%);
  --clr-neutral-dark-400: hsl(215, 30%, 22%);
  --clr-neutral-dark-300: hsl(215, 28%, 25%);
  --clr-neutral-dark-200: hsl(215, 26%, 33%);
  --clr-neutral-dark-100: hsl(220, 9%, 46%);

  --ff-title: "Karla", sans-serif;
  --ff-body: "Inter", sans-serif;

  --fs-800: 4rem;
  --fs-500: 2rem;
  --fs-400: 1.6rem;
  --fs-300: 1.5rem;
  --fs-200: 1.4rem;

  --lh-600: 2;
  --lh-500: 1.75;

  /* Light mode */
  --bg: var(--clr-bg-light);
  --main-text-clr: var(--clr-neutral-dark-600);
  --text-emphasis: var(--clr-primary-400);
  --text-clr: var(--clr-neutral-dark-100);
  --btn-clr: var(--clr-primary-400);
  --hr-clr: var(--clr-neutral-light-300);
  --pw-container-clr: var(--clr-neutral-dark-400);
  --pw-text-clr: var(--clr-primary-100);
  --switch-bg: var(--clr-bg-dark);
  --unpopulated-icon: url("../icons/Icon-ellipsis-light.svg");
}

.dark-mode {
  --bg: var(--clr-bg-dark);
  --main-text-clr: var(--clr-neutral-light-100);
  --text-emphasis: var(--clr-primary-300);
  --text-clr: var(--clr-neutral-light-300);
  --btn-clr: var(--clr-primary-400);
  --hr-clr: var(--clr-neutral-dark-300);
  --pw-container-clr: var(--clr-neutral-dark-400);
  --pw-text-clr: var(--clr-primary-200);
  --switch-bg: var(--clr-neutral-dark-200);
  --unpopulated-icon: url("../icons/Icon-ellipsis-dark.svg");
}

/* Hides sun during light mode */
.light--hidden {
  display: none;
}

/* Hides moon icon during dark mode */
.dark-mode .dark--hidden {
  display: none;
  transition: all 0.3 ease-in-out;
}

/* Reveals sun icon during dark mode */
.dark-mode .light--hidden {
  display: block;
}

/* Styles for users who prefer dark mode at the OS level */
@media (prefers-color-scheme: dark) {
  /* Defaults to dark mode */
  body {
    --bg: var(--clr-bg-dark);
    --main-text-clr: var(--clr-neutral-light-100);
    --text-emphasis: var(--clr-primary-300);
    --text-clr: var(--clr-neutral-light-300);
    --btn-clr: var(--clr-primary-400);
    --hr-clr: var(--clr-neutral-dark-300);
    --pw-container-clr: var(--clr-neutral-dark-400);
    --pw-text-clr: var(--clr-primary-200);
    --switch-bg: var(--clr-neutral-dark-200);
    --unpopulated-icon: url("../icons/Icon-ellipsis-dark.svg");
  }

  /* Overrides dark mode with light mode styles if the user decides to swap */
  body.light-mode {
    --bg: var(--clr-bg-light);
    --main-text-clr: var(--clr-neutral-dark-600);
    --text-emphasis: var(--clr-primary-400);
    --text-clr: var(--clr-neutral-dark-100);
    --btn-clr: var(--clr-primary-400);
    --hr-clr: var(--clr-neutral-light-300);
    --pw-container-clr: var(--clr-neutral-dark-400);
    --pw-text-clr: var(--clr-primary-100);
    --switch-bg: var(--clr-bg-dark);
    --unpopulated-icon: url("../icons/Icon-ellipsis-light.svg");
  }

  .toggle-switch__slider {
    transform: translateX(20px);
  }

  .light-mode .toggle-switch__slider {
    transform: none;
  }

  /* Reveals sun icon during dark mode */
  .light--hidden {
    display: block;
  }
}

body {
  display: grid;
  place-items: center;
  font-family: var(--ff-body);
  font-size: var(--fs-400);
  transition: 0.3s;
}

h1 {
  font-family: var(--ff-title);
  font-size: var(--fs-800);
  font-weight: 800;
  letter-spacing: -0.025em;
  line-height: 1;
}

h2 {
  font-size: var(--fs-400);
  font-weight: 400;
}

hr {
  height: 1px;
  margin: 0;
  border: 0;
}

ul {
  margin: 0;
  padding: 0;
}

/*------------------------------------*\
  COMPOSITION
\*------------------------------------*/

.flow * + * {
  margin-block-start: var(--space, 2.8rem);
}

.flow-exception-11px {
  --space: 1.1rem;
}

.flow-exception-4px {
  --space: 0.4rem;
}

.flex-end {
  display: flex;
  justify-content: flex-end;
}

/*------------------------------------*\
  UTILITY
\*------------------------------------*/

.margin-inline-39 {
  margin-inline: 3.9rem;
}

.margin-right-12 {
  margin-right: 1.2rem;
}

.wh-12x12 {
  width: 12px;
  height: 12px;
}
.wh-15x15 {
  width: 15px;
  height: 15px;
}

.position-right {
  position: absolute;
  top: 3.5px;
  left: 24px;
  margin: 0;
}

.position-left {
  position: absolute;
  top: 2.5px;
  left: 3px;
  margin: 0;
}

.align-middle {
  display: inline-block;
  vertical-align: sub;
}

.fs-300 {
  font-size: var(--fs-300);
}

.fw-500 {
  font-weight: 500;
}

.fw-700 {
  font-weight: 700;
}

.lh-500 {
  line-height: var(--lh-500);
}

.lh-600 {
  line-height: var(--lh-600);
}

.bg-clr {
  background: var(--bg);
}

.main-text-clr {
  color: var(--main-text-clr);
}

.text-emphasis {
  color: var(--text-emphasis);
}

.text-clr {
  color: var(--text-clr);
}

.btn-clr {
  background: var(--btn-clr);
}

.btn-text-clr {
  color: var(--btn-text-color);
}

.hr-clr {
  background: var(--hr-clr);
}

.pw-container-clr {
  background: var(--pw-container-clr);
}

.pw-text-clr {
  color: var(--pw-text-clr);
}

/*------------------------------------*\
  BLOCK
\*------------------------------------*/

.toggle-switch {
  --width: 40px;
  --height: calc(var(--width) / 2);

  position: relative;
  width: var(--width);
  height: var(--height);
  border-radius: var(--height);
  background: var(--switch-bg);
  cursor: pointer;
}

.toggle-switch__slider {
  position: absolute;
  top: 2.5px;
  left: 2.5px;
  width: 15px;
  height: 15px;
  border-radius: 50%;
  background-color: var(--clr-neutral-light-100);
  box-shadow: inset 2px 2px 2px rgb(255, 255, 255),
    inset -2px -2px 2px rgba(195, 193, 198, 0.9);
  transition: all 0.3s ease-in-out;
}

.dark-mode .toggle-switch__slider {
  transform: translateX(20px);
}

.slider[type="range"] {
  -webkit-appearance: none;
  width: 100%;
  height: 7px;
  margin: 0;
  border-radius: 10px;
  outline: none;
  background: var(--clr-neutral-light-200);
  opacity: 0.8;
  -webkit-transition: 0.2s;
  transition: opacity 0.2s;
}

.slider[type="range"]:hover {
  opacity: 1;
}

/* Chrome & Safari */
.slider[type="range"]::-webkit-slider-thumb {
  -webkit-appearance: none;
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--clr-primary-400);
  box-shadow: 0px 0px 3px rgba(0, 0, 0, 0.4);
  cursor: pointer;
  -webkit-transition: background 0.15s ease-in-out;
  transition: background 0.15s ease-in-out;
}

.slider[type="range"]::-webkit-slider-thumb:hover {
  background: var(--clr-primary-300);
}

/* Firefox */
.slider[type="range"]::-moz-slider-thumb {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--clr-primary-400);
  box-shadow: 0 0px 3px rgba(0, 0, 0, 0.4);
  cursor: pointer;
}

.slider[type="range"]::-moz-slider-thumb:hover {
  background: var(--clr-primary-300);
}

/* Microsoft Edge */
.slider[type="range"]::-ms-thumb {
  width: 16px;
  height: 16px;
  border-radius: 50%;
  background: var(--clr-primary-400);
  box-shadow: 0 0px 3px rgba(0, 0, 0, 0.4);
  cursor: pointer;
}

.slider[type="range"]::-ms-slider-thumb:hover {
  background: var(--clr-primary-300);
}

button[data-type="primary"] {
  padding: 0.9rem 1.7rem 0.9rem 1.5rem;
  border: none;
  border-radius: 6px;
  background: var(--clr-primary-400);
  box-shadow: 0px 1px 2px rgba(0, 0, 0, 0.05);
  color: var(--clr-neutral-light-100);
  cursor: pointer;
}

button[data-type="primary"]:hover {
  background: var(--clr-primary-300);
}

.pw-container {
  color: var(--pw-text-clr);
  line-height: var(--lh-600);
}

.pw-container li {
  height: 3.9rem;
  padding: 0.4rem 2.8rem;
  border-radius: 6px;
  background: var(--pw-container-clr) var(--unpopulated-icon) no-repeat center;
  text-align: center;
  list-style-type: none;
  cursor: pointer;
}

.copy {
  position: relative;
  right: 50%;
  bottom: 190%;
  font-size: var(--fs-200);
  color: var(--text-clr);
}

/*------------------------------------*\
  MEDIA-QUERY
\*------------------------------------*/

@media (min-width: 768px) {
  body {
    display: block;
  }

  main {
    width: 600px;
    margin-block-start: 11.8rem;
  }

  .margin-inline-39 {
    margin-inline: auto;
  }

  .subheader {
    font-size: var(--fs-500);
  }

  .slider[type="range"] {
    width: 35rem;
  }

  .pw-container {
    display: grid;
    grid-template-columns: repeat(2, 1fr);
    gap: 2.8rem 2.4rem;
    font-size: var(--fs-200);
  }

  .pw-container li {
    align-self: center;
    margin: 0;
    white-space: nowrap;
  }
}
