:root {
  /* GENERAL */
  --correct-color: #66aa64;
  --almost-correct-color: #c9b458;
  --wrong-color: #787c7e;
  --border-color: rgb(229, 231, 235);
  --background-color: #fff;

  /* ALERT */
  --alert-success-color: #66aa64;
  --alert-error-color: #e74c3c;
  --alert-info-color: #3498db;
  --alert-message-color: #fff;

  --button-text-color: #fff;
  --icon-color: rgb(115, 115, 115);
  --list-count-color: rgb(115, 115, 115);

  /* TEXT */
  --text-color: #000;
  --text-color-light: #737373;

  /* KEYBOARD */
  --keyboard-default-color: #000;
  --keyboard-default-background-color: rgb(211, 214, 218);
  --correct-keyboard-letter-background-color: #66aa64;
  --correct-keyboard-letter-color: #fff;
  --almost-correct-keyboard-letter-background-color: #c9b458;
  --almost-correct-keyboard-letter-color: #fff;
  --wrong-keyboard-letter-background-color: #787c7e;
  --wrong-keyboard-letter-color: #fff;
  --keyboard-font-size: 0.875rem;

  /* CELL */
  --cell-text-color: #fff;
  --cell-border-color: rgb(212, 212, 212);
  --active-cell-border-color: #000;
}

[data-theme] {
  /* GENERAL */
  --wrong-color: #3a3a3c;
  --border-color: rgb(64, 64, 64);
  --background-color: #121213;

  --button-background-color: rgb(211, 214, 218);
  --button-text-color: #fff;
  --icon-color: rgb(115, 115, 115);
  --list-count-color: rgb(115, 115, 115);

  /* TEXT */
  --text-color: #f5f5f5;
  --text-color-light: #737373;

  /* KEYBOARD */
  --keyboard-default-color: #fff;
  --keyboard-default-background-color: #818384;
  --correct-keyboard-letter-background-color: #66aa64;
  --correct-keyboard-letter-color: #fff;
  --almost-correct-keyboard-letter-background-color: #c9b458;
  --almost-correct-keyboard-letter-color: #fff;
  --wrong-keyboard-letter-background-color: #3a3a3c;
  --wrong-keyboard-letter-color: #fff;
  --keyboard-font-size: 0.875rem;

  /* CELL */
  --cell-text-color: #fff;
  --cell-border-color: rgb(64, 64, 64);
  --active-cell-border-color: rgb(64, 64, 64);
}

[data-scheme] {
  /* GENERAL */
  --correct-color: #f5793a;
  --almost-correct-color: #85c0f9;

  /* ALERT */
  --alert-success-color: #f5793a;
  --alert-error-color: #85c0f9;
  --alert-info-color: rgb(119, 141, 211);

  /* KEYBOARD */
  --correct-keyboard-letter-background-color: #f5793a;
  --almost-correct-keyboard-letter-background-color: #85c0f9;
}

[data-accessibility] {
  --keyboard-font-size: 1.5rem;
}

* {
  font-family: system-ui, -apple-system, BlinkMacSystemFont, 'Segoe UI', Roboto,
    Oxygen, Ubuntu, Cantarell, 'Open Sans', 'Helvetica Neue', sans-serif;
  box-sizing: border-box;
}

html {
  box-sizing: inherit;
  height: 100%;
}

body {
  margin: 0;
  padding: 0;
  height: 100%;
  /* iOS Safari: 100% includes the area under the browser toolbar, which
     overflows the visible viewport and produces a scrollbar. dvh tracks
     the actually-visible height. */
  height: 100vh;
  height: 100dvh;
  overflow: hidden;
  /* Disable double-tap-to-zoom on iOS */
  touch-action: manipulation;
  background-color: var(--background-color);
  display: flex;
  color: var(--text-color);
  align-items: center;
  justify-content: center;
}

svg {
  pointer-events: none;
}

a {
  color: var(--text-color);
}

.wrapper {
  max-width: 512px;
  display: flex;
  flex-direction: column;
  justify-content: space-between;
  height: 100%;
  min-height: 0;
  width: 100%;
  align-items: center;
  position: relative;
}

/* Shrink the keyboard on short viewports so everything fits on screen */
@media (max-height: 700px) {
  .keyboardButton {
    height: 3rem;
  }

  .keyboardContainer {
    padding-bottom: 0.75rem;
  }
}

@media (max-width: 512px) {
  .wrapper {
    max-width: 100%;
  }
}

.closeButton {
  background-color: transparent;
  border: none;
  cursor: pointer;
  outline: none;
  padding: 0;
  position: absolute;
  right: 1rem;
  top: 1rem;
}

.closeIcon {
  stroke: #a3a3a3;
}

.header {
  width: 100%;
  height: 50px;
}

.headerNav {
  border-bottom: 1px solid var(--border-color);
  padding: 0.25rem 0.75rem;
  display: flex;
  height: 100%;
  flex: 1;
  justify-content: space-between;
  align-items: center;
  position: relative;
}

.headerButton {
  background-color: transparent;
  padding: 0;
  border: none;
  outline: none;
  cursor: pointer;
}

.headerIcon {
  stroke: var(--icon-color);
  width: 24px;
  height: 24px;
}

#settingsIcon {
  fill: var(--icon-color);
  stroke: none;
}

.headerTitle {
  font-size: 1.875rem;
  line-height: 2.25rem;
  letter-spacing: 0.05rem;
  text-transform: uppercase;
  font-weight: 700;
  text-align: center;
  margin: 0;
  position: absolute;
  top: 50%;
  left: 50%;
  white-space: nowrap;
  transform: translate(-50%, -50%);
}

.buttonsContainer {
  padding: 0;
  margin: 0;
  list-style: none;
  display: flex;
  gap: 0.75rem;
}

.keyboardContainer {
  display: flex;
  flex-wrap: wrap;
  gap: 0.5rem;
  margin: 0 auto;
  padding: 0 0.5rem 1.25rem 0.5rem;
}

.keyboardRow {
  display: flex;
  flex-wrap: wrap;
  gap: 0.25rem;
  width: 100%;
}

.keyboardButton {
  background-color: var(--keyboard-default-background-color);
  border-radius: 0.25rem;
  border: none;
  cursor: pointer;
  flex: 1;
  font-size: var(--keyboard-font-size);
  font-weight: 700;
  height: 3.5rem;
  line-height: 1.25rem;
  outline: none;
  padding: 0.5rem;
  text-transform: uppercase;
  color: var(--keyboard-default-color);
}

.correctKeyboardLetter {
  background-color: var(--correct-keyboard-letter-background-color);
  color: var(--correct-keyboard-letter-color);
}

.almostCorrectKeyboardLetter {
  background-color: var(--almost-correct-keyboard-letter-background-color);
  color: var(--almost-correct-keyboard-letter-color);
}

.wrongKeyboardLetter {
  background-color: var(--wrong-keyboard-letter-background-color);
  color: var(--wrong-keyboard-letter-color);
}

.alertContainer {
  border-radius: 1rem;
  padding: 1rem;
  transform: translateY(100%);
  position: fixed;
  top: 0;
}

.alertSuccess {
  background-color: var(--alert-success-color);
}

.alertError {
  background-color: var(--alert-error-color);
}

.alertInfo {
  background-color: var(--alert-info-color);
}

.alertMessage {
  color: var(--alert-message-color);
  margin: 0;
  font-size: 1.1rem;
}
