.TreeList {
  margin: calc(var(--gap-l) - var(--gap-s)) 0 var(--gap-l) 0;
  position: relative;

  .TreeList {
    margin: 0;
    padding-left: var(--gap-l);

    &:not(:empty)::before {
      border-color: var(--color-gray4);
      border-style: solid;
      border-width: 0 0 1px 1px;
      bottom: calc(var(--Text-height) / 2);
      content: '';
      left: var(--gap-s);
      position: absolute;
      top: var(--gap-s);
      width: calc(var(--gap-l) - var(--gap-s) * 2);
    }

    &.is-insertable {
      padding-left: calc(var(--gap-m) * 1.25);
      padding-top: calc(var(--gap-xs) * 1.5);

      &:not(:empty)::before {
        bottom: 0;
      }

      > li {
        &:not(.TreeList-radio) {
          margin-left: calc(var(--gap-l) * 1.25);
          padding-top: calc(var(--gap-xs) * 1.25);
        }

        &.TreeList-group + li:not(.TreeList-group) {
          padding-top: calc(var(--gap-xs) * 1.5);
        }
      }
    }
  }

  li {
    padding-top: var(--gap-s);

    &.TreeList-group {
      padding-top: var(--Text-height);

      + li:not(.TreeList-group) {
        padding-top: var(--Text-height);
      }

      &.is-insertable {
        padding-bottom: calc(var(--gap-l) * 1.08);
        padding-top: 0;

        + li:not(.TreeList-group) {
          padding-top: calc(var(--gap-xs) * 1.25);
        }
      }
    }
  }

  & .TreeList-radio {
    align-items: center;
    display: flex;

    input[type='radio'] {
      margin-right: var(--gap-s);
    }

    &.is-insertable {
      align-items: center;
      border-top: 1px solid var(--color-gray4);
      display: block;
      left: calc(var(--gap-l) * 1.2);
      margin-right: calc(var(--gap-l) * 1.3);
      position: relative;
      top: 6px;

      input[type='radio'] {
        left: calc(-1 * (var(--gap-xl) / 1.05));
        margin-left: var(--gap-s);
        margin-right: var(--gap-s);
        position: absolute;
        top: calc(-1 * (var(--gap-m) / 1.08));
      }

      & + :not(&) {
        margin-left: calc(var(--gap-l) * 1.25);
      }
    }
  }
}
