.color-picker.flex-row {
  display: flex;
  flex-direction: row;
}

.color-picker.flex-col {
  display: flex;
  flex-direction: column;
}

.color-picker.flex-row.center,
.color-picker.flex-col.center {
  align-items: center;
  justify-content: center;
}

.color-picker.grid {
  display: grid;
  grid-template-columns: repeat(12, 1fr);
}

.color-picker.grid.gap {
  gap: 15px;
}

.color-picker.g-col-3 {
  grid-column: auto / span 3;
}

.color-picker.g-col-12 {
  grid-column: auto / span 12;
}

.color-picker.textInput {
  margin: 0;
  color: black;
  border: 1px solid #bfbfbf;
  border-radius: 5px;
  padding-top: 2px;
  padding-bottom: 9px;
  font-size: 12px;
}

.color-picker.textInput legend {
  padding: 0 8px;
  font-size: inherit;
}

.color-picker.textInput input[type=text] {
  margin: 0;
  font-size: inherit;
  color: black;
  caret-color: black;
  background-color: inherit;
  border: none;
  text-align: left;
  width: 11em;
}

.color-picker.textInput input[type=text].color-picker.wide {
  width: 100%;
}

.color-picker.textInput input[type=text]:focus {
  outline: none;
}

.color-picker.textInput.center legend,
.color-picker.textInput.center input[type=text] {
  text-align: center;
}

.color-picker.container {
  --backgroundColorLight: #dcdcdc;
  --borderColorLight: #a6a6a6;
  --backgroundColorDark: #1f1f1f;
  --borderColorDark: #5f5f5f;

  width: fit-content;
  background-color: var(--backgroundColorLight);
  border: 1px solid var(--borderColorLight);
  border-radius: 8px;
  font-family: Arial, Helvetica, sans-serif;
}

.color-picker.paletteSample {
  border-top-left-radius: 8px;
  width: 30%;
  aspect-ratio: 1 / 1;
  background-color: red;
}

.color-picker.paletteContainer {
  width: 70%;
  position: relative;
  --hue: 0;
}

.color-picker.paletteBackground,
.color-picker.paletteSaturation,
.color-picker.paletteValue {
  border-top-right-radius: 8px;
  position: absolute;
  width: 100%;
  height: 100%;
  user-select: none;
}

.color-picker.paletteBackground {
  background-color: hsl(var(--hue), 100%, 50%);
}

.color-picker.paletteSaturation {
  background: linear-gradient(to right, rgb(255, 255, 255), rgba(0, 0, 0, 0));
}

.color-picker.paletteValue {
  background: linear-gradient(to top, rgb(0, 0, 0), rgba(0, 0, 0, 0));
}

.color-picker.dropper {
  width: 20px;
  height: 20px;
  border: 2px solid white;
  border-radius: 50%;
  position: absolute;
  user-select: none;
  cursor: pointer;
}

.color-picker.hueSlider {
  --height: 10px;
  background: linear-gradient(to right, rgb(255, 0, 0),
      rgb(255, 255, 0),
      rgb(0, 255, 0),
      rgb(0, 255, 255),
      rgb(0, 0, 255),
      rgb(255, 0, 255),
      rgb(255, 0, 0));
  width: 90%;
  height: var(--height);
  border-radius: calc(var(--height)/2);
  position: relative;
  margin-top: calc(var(--height) * 0.8);
  margin-bottom: calc(var(--height) * 0.8);
}

@media (prefers-color-scheme: dark) {
  .color-picker.textInput {
    color: white;
    border-color: var(--borderColorDark);
  }

  .color-picker.textInput input[type=text] {
    color: white;
    caret-color: white;
  }

  .color-picker.container {
    background-color: var(--backgroundColorDark);
    border-color: var(--borderColorDark);
  }
}