{{- $base := (index . "Base") | default 1 -}} {{- $unit := (index . "Unit") | default "rem" -}} {{- $factor := (index . "Factor") | default 1.618 -}} {{- $scale := partial "base/_size_scale.html" . }} /*********** # SPACING ***********/ :root { --space-base: {{ $base }}{{ $unit }}; {{- range $scale }} --space-{{ .Name }}: calc(var(--space-base) * pow({{ $factor }}, {{ .Value }})); {{- end }} --fixed-space-base: 1rem; {{- range $scale }} --fixed-space-{{ .Name }}: calc(var(--fixed-space-base) * pow({{ $factor }}, {{ .Value }})); {{- end }} --space-paragraph: var(--space-m); } {{ range $scale }} {{ printf "/* Spacing utility classes: %s */" .Name }} .margin-block-start--{{ .Name }} { margin-block-start: var(--space-{{ .Name }}); } .margin-block-end--{{ .Name }} { margin-block-end: var(--space-{{ .Name }}); } .margin-inline-start--{{ .Name }} { margin-inline-start: var(--space-{{ .Name }}); } .margin-inline-end--{{ .Name }} { margin-inline-end: var(--space-{{ .Name }}); } {{ end }} h1, h2, h3, h4, h5, h6 { margin-block: var(--space-l) var(--space-m); } :is(h1, h2, h3, h4, h5, h6), .page-header { + :is(h1, h2, h3, h4, h5, h6), + :is(dl, ol, ul) { margin-block-start: 0; } } hr { margin-block: var(--space-m); } p + p { margin-block-start: var(--space-paragraph); } /* Figures */ {{- $elementsWithXLBlockMargins := "blockquote, .figure--code, .figure--image, .figure--youtube, .codeblock, .highlight, table" -}} p + :is({{ $elementsWithXLBlockMargins }}) { margin-block-start: var(--space-xl); } :is({{ $elementsWithXLBlockMargins }}):has(+ p) { margin-block-end: var(--space-xl); }