Custom CSS
Restyle the paper with your own CSS, where it applies and what it beats, how it travels with the resume, and how to write rules that keep working.
Custom CSS is for what no control in the Style tab can do. You write it in
the style.css tab of the Code pane, and it applies to the paper and
nothing else. See Markdown and CSS panes.
Try the controls first. Moving a setting in the Style tab is easier than a rule, and it is safer: the paper is measured at the values you set, so the pages stay right. See Design tokens.
Where it applies
Three layers of style are stacked on the paper, and yours is the highest:
- The template, which draws every element.
- The Style tab, which sets the design tokens as CSS variables.
- Your CSS.
A rule of yours therefore beats the template and the Style tab with an ordinary
selector. You do not need to make it more specific, and you do not need
!important, which the paper removes from your CSS with a notice. See
What CSS cannot do.
Your CSS cannot reach the app around the paper, because the paper is a document of its own. The one part of the paper it cannot change is the page itself: the size of the sheet, its margins and the clipping at its edge. Those are the Paper settings.
It travels with the resume
Your CSS is stored with the resume, exactly as you typed it. The HTML export carries it inside the file, and the PDF is that same document printed, so a rule you write here is in every form of the resume.
The paper is laid out with your CSS applied, and the page breaks are measured afterwards. A rule that makes something taller or shorter therefore moves where a page ends, and the export breaks in the same place. See Pages and breaks.
Writing rules
Select elements by their class names, which all begin rp-. They are listed in
The CSS class reference. Read the design
tokens with var() so a rule follows the Style tab, such as var(--paper-accent).
Spread the letters of section headings out:
style.css
.rp-section-title {
letter-spacing: 0.12em;
}
Set each contact on a line of its own:
style.css
.rp-contacts {
flex-direction: column;
gap: 0.15em;
}
Put a slash between skills instead of a dot:
style.css
.rp-tag + .rp-tag::before {
content: "/";
}
That last rule adds a character that is on the page and not in the file. It is harmless here, but the ATS tab points out text added this way, because a parser never reads it.
What the paper does with it
What you write is kept as you wrote it. The paper uses a cleaned copy, written out again in one plain form, without comments, and without any rule it refuses. A refused rule is underlined in yellow in the editor with the reason, and it is counted as a notice beside the Markdown's.
A mistake does not void the stylesheet. If a brace is missing, or one rule is refused, every other rule that could be read still applies. The list of what is refused, and why, is in What CSS cannot do.
CSS that hides text
The ATS tab reads your CSS as well as your content. It warns when a rule
hides text, with display: none, visibility: hidden, a font size of 0, an
opacity of 0 or transparent text. Hidden text is read by a parser and never by a
person, and some systems score the pattern as keyword stuffing, whatever the
author meant.