Adding margin-bottom: 30px does the trick, but you are also more or less locked-in to spacing the next element below your last paragraph to also start with a 30px spacing. Spacing between paragraphs likely will match the line-height of the paragraph itself (or be close), which may be different from the spacing to the next type of element.
For example, say you have a dialog that has a paragraph at the end of the content area, and the next element is the footer area of the dialog (with action buttons). You wouldn't want to have to do some reverse negative margins if that created too much margin than what is expected between the content and footer of your dialog.
p {
line-height: 32px;
&:not(:last-child) {
margin-bottom: 30px;
}
}
// or space on top with a sibling selector:
p {
line-height: 30px;
+ p {
margin-top: 32px;
}
}
////
// or if your line-height and paragraph spacing is the same:
////
$p-line-height: 30px;
p {
line-height: $p-line-height;
&:not(:last-child) {
margin-bottom: $p-line-height;
}
}
// w/ space on top:
p {
line-height: $p-line-height;
+ p {
margin-top: $p-line-height;
}
}