@layer components {
  /* Toggle Component
     ========================================================================== */

  .form-toggle .form-check {
    padding-left: 0 !important;
  }

  /* Align toggle hints under the label text rather than under the switch */
  .form-toggle + .form-hint {
    padding-inline-start: 40px;
  }

  .toggle {
    position: absolute;
    transform: scale(0);
  }

  .toggle + label {
    position: relative;
    display: inline-block;
    padding-left: 40px;
    cursor: pointer;
    user-select: none;
  }

  .toggle + label::before {
    content: "";
    display: block;
    position: absolute;
    cursor: pointer;
    width: 36px;
    height: 20px;
    top: 50%;
    left: 0;
    transform: translateY(-50%);
    background-color: var(--color-gray);
    border-radius: 50rem;
    transition: background-color 0.2s ease;
  }

  .toggle:checked + label::before {
    background-color: var(--color-blue-bright, var(--color-red));
  }

  .toggle + label::after {
    content: "";
    display: block;
    position: absolute;
    cursor: pointer;
    width: 16px;
    height: 16px;
    top: 50%;
    left: 2px;
    transform: translateY(-50%);
    background-color: var(--color-always-white);
    border-radius: 50%;
    transition: left 0.2s ease;
  }

  .toggle:checked + label::after {
    left: 18px;
  }

  /* Focus styles */
  .toggle:focus-visible + label::before {
    outline: 2px solid var(--color-blue-bright, var(--color-red));
    outline-offset: 2px;
  }

  /* Disabled state */
  .toggle:disabled + label {
    opacity: 0.6;
    cursor: not-allowed;
  }

  .toggle:disabled + label::before {
    background-color: var(--color-gray-light);
  }
}
