main
  fieldset
    - for (let i = 5; i > 0; i--) {
      input(id='star'+i, type='radio', name='rating', value=i)
      label.full(for='star'+i, title=i+' stars')  
      
      input(id='star'+i+'5', type='radio', name='rating', value=i+'5')
      label.half(for='star'+i+'5', title=i+',5 stars')  
    - }
View Compiled
body,
html {
  background-color: var(--color-dark);
  color: var(--color-white);
  height: 100%;
}
main {
  display: flex;
  height: 100%;
  width: 100%;
  align-items: center;
  justify-content: center;
}

label {  
  margin: 0;
  padding: 0;
  transform: scale(1);
  &:before {
    transition: transform 0.3s;
  }
  &.full {
    &:hover {
      &:before {
        transform: scale(1.5);
      }
    }
  }

  &.half {
    &:hover {
      &:before {
        transform: translate(-25%, 0%) scale(1.5);
      }
    }
  }
}

fieldset {
  border: 1px solid red;
  display: flex;
  flex-wrap: nowrap;
    margin: 0;
  padding: 0;

  & > input {
    display: none;
  }

  & > label {
    width: auto;
    padding: 0;
    margin: 0;
    display: block;
    color: var(--color-white);
    &:before {
      content: "";
      display: inline-block;
      display: block;
      border-radius: 1rem;
      background-color: var(--color-white);
      width: 2rem;
      height: 2rem;
    }
    &.half {
     position: absolute;
     z-index: 10;
      &:before {
        width: 1rem;
        border-radius: 1rem 0 0 1rem;
        background-color: var(--color-white);
      }
    }
  }

  & > input:checked ~ label,
  /* show gold star when clicked */ &:not(:checked) > label:hover,
  /* hover current star */ &:not(:checked) > label:hover ~ label {
    &:before {
      background-color: var(--color-yellow);
    } /* hover previous stars in list */
  }

  & > input:checked + label:hover,
  /* hover current star when changing rating */ & > input:checked ~ label:hover,
  & > label:hover ~ input:checked ~ label,
  /* lighten current selection */ & > input:checked ~ label:hover ~ label {
    &:before {
      background-color: var(--color-yellow);
    }
  }
}
View Compiled

External CSS

  1. https://styleguide.svd.im/svd-full.css

External JavaScript

This Pen doesn't use any external JavaScript resources.