Usage
--page-width, --page-height, and --page-margin-*for page size and margins --page-top-*-contentand --page-bottom-*-contentfor running headers/footers --page-margin-font-familyand --page-margin-font-sizefor margin box typography --page-border-*tokens for header/footer rules --page1-*overrides to customize the first page
--document-title--document-authors--document-date
Tokens
Page Size and Margins
--page-width | 210mm | |
--page-height | 297mm | |
--page-margin-vertical | 1.5cm | |
--page-margin-horizontal | 2cm | |
--page-margin-top | var(--page-margin-vertical) | |
--page-margin-right | var(--page-margin-horizontal) | |
--page-margin-bottom | var(--page-margin-vertical) | |
--page-margin-left | var(--page-margin-horizontal) | |
--page-content-height | calc(var(--page-height) - var(--page-margin-top) - var(--page-margin-bottom) - var(--page-padding-top) - var(--page-padding-bottom)) | |
--page-content-width | calc(var(--page-width) - var(--page-margin-left) - var(--page-margin-right)) |
Page Padding
--page-padding | 0.5cm | |
--page-padding-top | var(--page-padding) | |
--page-padding-bottom | var(--page-padding) |
Margin Box Styling
--page-margin-font-family | var(--font-family-sans) | |
--page-margin-font-size | 8pt | |
--page-margin-line-height | var(--line-height-tight) | |
--page-margin-color | var(--text-color-secondary) | |
--page-margin-padding | 0 |
Margin Box Content
--page-top-left-content | none | |
--page-top-center-content | none | |
--page-top-right-content | none | |
--page-bottom-left-content | none | |
--page-bottom-center-content | none | |
--page-bottom-right-content | none |
First Page Content
--page1-top-left-content | var(--page-top-left-content) | |
--page1-top-center-content | var(--page-top-center-content) | |
--page1-top-right-content | var(--page-top-right-content) | |
--page1-bottom-left-content | var(--page-bottom-left-content) | |
--page1-bottom-center-content | var(--page-bottom-center-content) | |
--page1-bottom-right-content | var(--page-bottom-right-content) |
Margin Box Borders
Level 1: Global Border Tokens
--page-border-style | solid | |
--page-border-color | var(--border-color-default) | |
--page-border-narrow | initial | |
--page-border-wide | initial | |
--page-border-full | initial |
Level 2: Horizontal Borders
--page-horizontal-border-style | var(--page-border-style) | |
--page-horizontal-border-color | var(--page-border-color) | |
--page-horizontal-border-narrow | var(--page-border-narrow) | |
--page-horizontal-border-wide | var(--page-border-wide) | |
--page-horizontal-border-full | var(--page-border-full) |
Level 3: Specific Top/Bottom Borders
--page-top-border-style | var(--page-horizontal-border-style) | |
--page-top-border-color | var(--page-horizontal-border-color) | |
--page-top-border-narrow | var(--page-horizontal-border-narrow) | |
--page-top-border-wide | var(--page-horizontal-border-wide) | |
--page-top-border-full | var(--page-horizontal-border-full) | |
--page-bottom-border-style | var(--page-horizontal-border-style) | |
--page-bottom-border-color | var(--page-horizontal-border-color) | |
--page-bottom-border-narrow | var(--page-horizontal-border-narrow) | |
--page-bottom-border-wide | var(--page-horizontal-border-wide) | |
--page-bottom-border-full | var(--page-horizontal-border-full) |
First Page Border Tokens
Level 1: --page1-border-*Level 2: --page1-horizontal-border-*Level 3: --page1-top-border-*and --page1-bottom-border-*
Page Layout Tokens
--page-display | flex | |
--page-flex-direction | column | |
--page-section-gap | 0 | |
--page-justify-content | flex-start | |
--page-align-items | stretch |
Available Content Variables
<head>
--document-title | ||
--document-authors | ||
--document-doi | ||
--document-date |
Examples
Basic Page Numbers
:root {
--page-bottom-right-content: counter(page);
}Academic Article Headers
:root {
--page-top-left-content: var(--document-authors);
--page-top-right-content: var(--document-title);
--page-bottom-left-content: "DOI: " var(--document-doi);
--page-bottom-right-content: "Page " counter(page);
--page-border-wide: 1px;
}Border Span Examples
Narrow Border (Center Only)
:root {
--page-border-narrow: 1px;
--page-top-center-content: var(--document-title);
--page-bottom-center-content: counter(page);
}Full Border (Including Corners)
:root {
--page-border-full: 1px;
--page-top-center-content: var(--document-title);
--page-bottom-center-content: counter(page);
}First Page Different
:root {
/* Regular page margins */
--page-top-left-content: var(--document-authors);
--page-top-right-content: var(--document-title);
--page-bottom-right-content: counter(page);
/* Override just the first page */
--page1-top-left-content: none;
--page1-top-right-content: none;
--page1-bottom-right-content: none;
/* Remove first-page borders */
--page1-border-wide: initial;
}Different Left/Right Pages
@media print {
@page :left {
@top-left {
content: counter(page);
font-family: var(--page-margin-font-family);
font-size: var(--page-margin-font-size);
}
@top-right {
content: string(article-title);
font-family: var(--page-margin-font-family);
font-size: var(--page-margin-font-size);
font-style: italic;
}
}
@page :right {
@top-left {
content: string(section-title);
font-family: var(--page-margin-font-family);
font-size: var(--page-margin-font-size);
font-style: italic;
}
@top-right {
content: counter(page);
font-family: var(--page-margin-font-family);
font-size: var(--page-margin-font-size);
}
}
}Tips
none--page-top-*-content--page-bottom-*-content
--page-width--page-height
--page1-*
--page-border-*