/**
 * Checkbox
 */
.checkbox {
  position: relative;
  display: flex;
  align-items: center;
  white-space: nowrap;
  outline: none;
  margin-right: var(--checkbox--margin-right, var(--margin-right));
}
.checkbox:last-of-type {
  margin-right: 0;
}
.checkbox.-disabled {
  cursor: default;
}
.checkbox.-disabled .checkbox-label::before, .checkbox.-disabled .checkbox-label::after {
  cursor: not-allowed;
}
.checkbox .checkbox-label {
  cursor: pointer;
  margin-bottom: 0;
  display: inline-flex;
  align-items: center;
  position: relative;
  transition-property: var(--checkbox--transition-property, color);
  transition-duration: var(--checkbox--transition-duration, var(--transition-duration));
  transition-timing-function: var(--checkbox--transition-timing-function, var(--transition-timing-function));
  color: var(--checkbox--label--color);
  font-size: var(--checkbox--label--font-size);
}
.checkbox .checkbox-label::before, .checkbox .checkbox-label::after {
  width: var(--checkbox--size);
  height: var(--checkbox--size);
  display: inline-flex;
  justify-content: center;
  align-items: center;
  cursor: pointer;
}
.checkbox .checkbox-label::before {
  content: "";
  user-select: none;
  border-width: var(--checkbox--border-width, var(--checkbox--border-top-width, var(--border-top-width)) var(--checkbox--border-right-width, var(--border-right-width)) var(--checkbox--border-bottom-width, var(--border-bottom-width)) var(--checkbox--border-left-width, var(--border-left-width)));
  border-style: var(--checkbox--border-style, var(--checkbox--border-top-style, var(--border-top-style)) var(--checkbox--border-right-style, var(--border-right-style)) var(--checkbox--border-bottom-style, var(--border-bottom-style)) var(--checkbox--border-left-style, var(--border-left-style)));
  border-color: var(--checkbox--border-color, var(--checkbox--border-top-color, var(--border-top-color)) var(--checkbox--border-right-color, var(--border-right-color)) var(--checkbox--border-bottom-color, var(--border-bottom-color)) var(--checkbox--border-left-color, var(--border-left-color)));
  border-radius: var(--checkbox--border-radius, var(--checkbox--border-top-left-radius, var(--border-top-left-radius)) var(--checkbox--border-top-right-radius, var(--border-top-right-radius)) var(--checkbox--border-bottom-right-radius, var(--border-bottom-right-radius)) var(--checkbox--border-bottom-left-radius, var(--border-bottom-left-radius)));
  box-shadow: var(--checkbox--box-shadow, var(--checkbox--box-shadow-x-offset, var(--box-shadow-offset-x)) var(--checkbox--box-shadow-y-offset, var(--box-shadow-offset-y)) var(--checkbox--box-shadow-blur-radius, var(--box-shadow-blur-radius)) var(--checkbox--box-shadow-spread-radius, var(--box-shadow-spread-radius)) var(--checkbox--box-shadow-color, var(--box-shadow-color)));
  margin-right: var(--checkbox--margin-right, var(--margin-right-1-2));
  transition-property: var(--checkbox--transition-property, background-color, border-color);
  transition-duration: var(--checkbox--transition-duration, var(--transition-duration));
  transition-timing-function: var(--checkbox--transition-timing-function, var(--transition-timing-function));
  background-color: var(--checkbox--background);
}
.checkbox .checkbox-label::after {
  mask-image: url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>check</title><path d="M23.625 3.5l-13.125 13.125-6.125-6.125-4.375 4.375 10.5 10.5 17.5-17.5z"></path></svg>');
  -webkit-mask-image: url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>check</title><path d="M23.625 3.5l-13.125 13.125-6.125-6.125-4.375 4.375 10.5 10.5 17.5-17.5z"></path></svg>');
  mask-size: var(--checkbox--checkmark--size) var(--checkbox--checkmark--size);
  -webkit-mask-size: var(--checkbox--checkmark--size) var(--checkbox--checkmark--size);
  position: absolute;
  top: 50%;
  left: 0;
  z-index: 1;
  text-align: center;
  transition-property: var(--checkbox--transition-property, transform);
  transition-duration: var(--checkbox--transition-duration, var(--transition-duration));
  transition-timing-function: var(--checkbox--transition-timing-function, var(--transition-timing-function));
  transform: scale(0);
  background-color: var(--checkbox--color);
  margin-top: calc(var(--checkbox--size) / -2);
}
.checkbox input {
  top: 0;
  left: 0;
  position: absolute;
  z-index: 0;
  opacity: 0;
  height: 0;
  width: 0;
  outline: 0;
}
.checkbox input:focus, .checkbox input:active {
  outline: none;
}
.checkbox input:checked ~ .checkbox-label::before, .checkbox input[type=checkbox]:indeterminate ~ .checkbox-label::before {
  border-color: var(--checkbox--checked--border-color, var(--checkbox--border-color));
  background: var(--checkbox--checked--background, var(--checkbox--background));
}
.checkbox input:checked ~ .checkbox-label::after, .checkbox input[type=checkbox]:indeterminate ~ .checkbox-label::after {
  content: "";
  mask-position: center center;
  -webkit-mask-position: center center;
  mask-repeat: no-repeat;
  -webkit-mask-repeat: no-repeat;
  transform: scale(1);
}
.checkbox input:disabled ~ .checkbox-label, .checkbox input[readonly] ~ .checkbox-label {
  color: var(--checkbox--disabled--label--color, var(--checkbox--label--color));
}
.checkbox input:disabled ~ .checkbox-label::before, .checkbox input[readonly] ~ .checkbox-label::before {
  cursor: not-allowed;
  border-color: var(--checkbox--disabled--border-color, var(--checkbox--border-color));
  background: var(--checkbox--disabled--background, var(--checkbox--background));
}
.checkbox input:disabled:checked ~ .checkbox-label::before, .checkbox input[readonly]:checked ~ .checkbox-label::before {
  border-color: var(--checkbox--checked--disabled--border-color, var(--checkbox--border-color));
  background: var(--checkbox--checked--disabled--background, var(--checkbox--background));
}
.checkbox input:disabled:checked ~ .checkbox-label::after, .checkbox input[readonly]:checked ~ .checkbox-label::after {
  cursor: not-allowed;
  background: var(--checkbox--disabled--color, var(--checkbox--color));
}
.checkbox input:indeterminate ~ .checkbox-label::after {
  mask-image: url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>minus</title><path d="M0 11.375v5.25c0 0.483 0.392 0.875 0.875 0.875h26.25c0.483 0 0.875-0.392 0.875-0.875v-5.25c0-0.483-0.392-0.875-0.875-0.875h-26.25c-0.483 0-0.875 0.392-0.875 0.875z"></path></svg>');
  -webkit-mask-image: url('data:image/svg+xml; utf8, <svg fill="currentColor" version="1.1" xmlns="http://www.w3.org/2000/svg" width="28" height="28" viewBox="0 0 28 28"><title>minus</title><path d="M0 11.375v5.25c0 0.483 0.392 0.875 0.875 0.875h26.25c0.483 0 0.875-0.392 0.875-0.875v-5.25c0-0.483-0.392-0.875-0.875-0.875h-26.25c-0.483 0-0.875 0.392-0.875 0.875z"></path></svg>');
}
.checkbox.-native input {
  top: auto;
  left: auto;
  position: relative;
  opacity: 1;
  height: auto;
  width: auto;
  margin-right: var(--checkbox--margin-right, var(--margin-right-1-2));
}
.checkbox.-native .checkbox-label::after, .checkbox.-native .checkbox-label::before {
  display: none;
}

/**
 * Color variants
 */
.checkbox.-light {
  --checkbox--background: var(--checkbox--light--background, var(--color-white));
  --checkbox--border-top-color: var(
      --checkbox--light--border-top-color,
      var(--color-light-shade-50)
  );
  --checkbox--border-right-color: var(
      --checkbox--light--border-right-color,
      var(--color-light-shade-50)
  );
  --checkbox--border-bottom-color: var(
      --checkbox--light--border-bottom-color,
      var(--color-light-shade-50)
  );
  --checkbox--border-left-color: var(
      --checkbox--light--border-left-color,
      var(--color-light-shade-50)
  );
  --checkbox--color: var(--checkbox--light--color, var(--color-white));
  --checkbox--label--color: var(
      --checkbox--light--label--color,
      var(--contrast-text-color-light)
  );
  --checkbox--disabled--background: var(
      --checkbox--light--disabled--background,
      var(--color-gray-50)
  );
  --checkbox--disabled--border-color: var(
      --checkbox--light--disabled--border-color,
      var(--color-light)
  );
  --checkbox--disabled--color: var(--checkbox--light--disabled--color, var(--color-white));
  --checkbox--disabled--label--color: var(
      --checkbox--light--disabled--label--color,
      var(--text-color-weak)
  );
  --checkbox--checked--background: var(
      --checkbox--light--checked--background,
      var(--color-primary)
  );
  --checkbox--checked--border-color: var(
      --checkbox--light--checked--border-color,
      var(--color-primary-shade-50)
  );
  --checkbox--checked--disabled--background: var(
      --checkbox--light--checked--disabled--background,
      var(--color-primary-300)
  );
  --checkbox--checked--disabled--border-color: var(
      --checkbox--light--checked--disabled--border-color,
      var(--color-primary-400)
  );
}
.checkbox.-dark {
  --checkbox--background: var(--checkbox--dark--background, var(--color-dark));
  --checkbox--border-top-color: var(
      --checkbox--dark--border-top-color,
      var(--color-dark-tint-50)
  );
  --checkbox--border-right-color: var(
      --checkbox--dark--border-right-color,
      var(--color-dark-tint-50)
  );
  --checkbox--border-bottom-color: var(
      --checkbox--dark--border-bottom-color,
      var(--color-dark-tint-50)
  );
  --checkbox--border-left-color: var(
      --checkbox--dark--border-left-color,
      var(--color-dark-tint-50)
  );
  --checkbox--color: var(--checkbox--dark--color, var(--color-white));
  --checkbox--label--color: var(
      --checkbox--dark--label--color,
      var(--contrast-text-color-dark)
  );
  --checkbox--disabled--background: var(
      --checkbox--dark--disabled--background,
      var(--color-dark-tint-100)
  );
  --checkbox--disabled--border-color: var(
      --checkbox--dark--disabled--border-color,
      var(--color-dark-tint-50)
  );
  --checkbox--disabled--color: var(--checkbox--dark--disabled--color, var(--color-white));
  --checkbox--disabled--label--color: var(
      --checkbox--dark--disabled--label--color,
      var(--text-color-weak)
  );
  --checkbox--checked--background: var(
      --checkbox--dark--checked--background,
      var(--color-primary)
  );
  --checkbox--checked--border-color: var(
      --checkbox--dark--checked--border-color,
      var(--color-primary-tint-50)
  );
  --checkbox--checked--disabled--background: var(
      --checkbox--dark--checked--disabled--background,
      var(--color-primary-800)
  );
  --checkbox--checked--disabled--border-color: var(
      --checkbox--dark--checked--disabled--border-color,
      var(--color-primary-700)
  );
}

/**
 * Size variants
 */
.checkbox.-sm {
  --checkbox--border-top-left-radius: var(
      --checkbox--sm--border-top-left-radius,
      calc(var(--border-top-left-radius) * var(--size-multiplier-sm))
  );
  --checkbox--border-top-right-radius: var(
      --checkbox--sm--border-top-right-radius,
      calc(var(--border-top-right-radius) * var(--size-multiplier-sm))
  );
  --checkbox--border-bottom-right-radius: var(
      --checkbox--sm--border-bottom-right-radius,
      calc(var(--border-bottom-right-radius) * var(--size-multiplier-sm))
  );
  --checkbox--border-bottom-left-radius: var(
      --checkbox--sm--border-bottom-left-radius,
      calc(var(--border-bottom-left-radius) * var(--size-multiplier-sm))
  );
  --checkbox--size: var(--checkbox--sm--size, calc(1rem * var(--size-multiplier-sm)));
  --checkbox--checkmark--size: var(
      --checkbox--sm--checkmark--size,
      calc(8px * var(--size-multiplier-sm))
  );
  --checkbox--label--font-size: var(
      --checkbox--sm--label--font-size,
      calc(var(--font-size) * var(--size-multiplier-sm))
  );
}
.checkbox.-md {
  --checkbox--border-top-left-radius: var(
      --checkbox--md--border-top-left-radius,
      calc(var(--border-top-left-radius) * var(--size-multiplier-md))
  );
  --checkbox--border-top-right-radius: var(
      --checkbox--md--border-top-right-radius,
      calc(var(--border-top-right-radius) * var(--size-multiplier-md))
  );
  --checkbox--border-bottom-right-radius: var(
      --checkbox--md--border-bottom-right-radius,
      calc(var(--border-bottom-right-radius) * var(--size-multiplier-md))
  );
  --checkbox--border-bottom-left-radius: var(
      --checkbox--md--border-bottom-left-radius,
      calc(var(--border-bottom-left-radius) * var(--size-multiplier-md))
  );
  --checkbox--size: var(--checkbox--md--size, calc(1rem * var(--size-multiplier-md)));
  --checkbox--checkmark--size: var(
      --checkbox--md--checkmark--size,
      calc(8px * var(--size-multiplier-md))
  );
  --checkbox--label--font-size: var(
      --checkbox--md--label--font-size,
      calc(var(--font-size) * var(--size-multiplier-md))
  );
}
.checkbox.-lg {
  --checkbox--border-top-left-radius: var(
      --checkbox--lg--border-top-left-radius,
      calc(var(--border-top-left-radius) * var(--size-multiplier-lg))
  );
  --checkbox--border-top-right-radius: var(
      --checkbox--lg--border-top-right-radius,
      calc(var(--border-top-right-radius) * var(--size-multiplier-lg))
  );
  --checkbox--border-bottom-right-radius: var(
      --checkbox--lg--border-bottom-right-radius,
      calc(var(--border-bottom-right-radius) * var(--size-multiplier-lg))
  );
  --checkbox--border-bottom-left-radius: var(
      --checkbox--lg--border-bottom-left-radius,
      calc(var(--border-bottom-left-radius) * var(--size-multiplier-lg))
  );
  --checkbox--size: var(--checkbox--lg--size, calc(1rem * var(--size-multiplier-lg)));
  --checkbox--checkmark--size: var(
      --checkbox--lg--checkmark--size,
      calc(8px * var(--size-multiplier-lg))
  );
  --checkbox--label--font-size: var(
      --checkbox--lg--label--font-size,
      calc(var(--font-size) * var(--size-multiplier-lg))
  );
}