* { box-sizing: border-box; } article { border: solid 1px #333333; border-radius: 1em; margin: 0.5em; } div { & > p:first-child { margin-top: 0; } & > p:last-child { margin-bottom: 0; } } article.tag { padding: 0.5em 2em; & > h2 { margin: 0 0 0.25em -1em; } } article.contrib { display: grid; grid-template-columns: 25% 25% 25% 25%; grid-template-areas: "uname submitted updated status" "uname url url url" "uname tag tag tag" "udesc desc desc desc"; gap: 1px; overflow: hidden; & > div { padding: 0.5em; } @mixin color-panel { background-color: #DDDDFF; border: solid 1px #8D8DA6; margin: -1px; } div.contrib-upstream-name { grid-area: uname; @include color-panel; text-align: center; font-weight: bold; padding-top: 1em; } div.contrib-upstream-desc { grid-area: udesc; @include color-panel; } div.contrib-urls { grid-area: url; padding-bottom: 0; } div.contrib-tags { grid-area: tag; padding-top: 0; } div.contrib-submitted { grid-area: submitted; @include color-panel; } div.contrib-updated { grid-area: updated; @include color-panel; } div.contrib-status { grid-area: status; @include color-panel; } div.contrib-desc { grid-area: desc; } }