---
title: "Using Custom CSS"
description: "Learn how to use the Custom CSS panel in the resume builder, which selectors to target, and copy‑paste examples for common tweaks."
---
## What the Custom CSS section does
The **Custom CSS** panel lets you write your own CSS rules to change how your resume looks in the live preview (and exports).
- **Live updates**: your changes are applied immediately as you type.
- **Auto-save**: there is no “Save” button—your CSS is saved automatically when it changes.
- **Scoped styling (mostly)**: to avoid affecting the rest of the app, your CSS is _usually_ scoped to the resume preview.
## Where to find it
In the resume builder, open the **right sidebar** and select **Custom CSS** (the `CSS` section).
## Enable / Disable
- Turn on the **Enable** switch to apply your CSS.
- Turning it off keeps your CSS saved, but stops applying it.
## How scoping works (important)
Your CSS is injected into the preview and most **top-level selectors** are automatically prefixed with:
- `.resume-preview-container`
That means:
- Writing `.page { ... }` effectively becomes `.resume-preview-container .page { ... }`
- Writing `h2 { ... }` becomes `.resume-preview-container h2 { ... }`
- Writing `body { ... }` becomes `.resume-preview-container body { ... }` (which usually matches nothing, because `body` is not inside the preview container)
### Scoping limitation: `@media` / `@supports` blocks
Rules that start with **at-rules** (like `@media print { ... }`) are **not automatically scoped**. If you want to keep those rules limited to the resume preview, you should **manually** prefix selectors inside at-rules with `.resume-preview-container`.
Example:
```css
/* Normal rules: rely on auto-scoping */
.page a {
text-decoration: none;
}
/* At-rules: manually scope selectors */
@media print {
.resume-preview-container .page a {
text-decoration: none;
}
}
```
### Formatting tip (to avoid scoping edge-cases)
Keep each rule's selector on **one line**, for example:
```css
.page-section-experience .section-item-title {
font-weight: 700;
}
```
Avoid splitting a selector across multiple lines unless you've confirmed it behaves as expected.
## Finding the right selectors
### Use autocomplete in the editor
In the Custom CSS editor, type a `.` (dot). You'll get suggestions for commonly-used class selectors, including:
- **Page-level**: `.page`, `.page-content`, `.page-header`, `.page-basics`, `.page-main`, `.page-sidebar`, `.page-picture`
- **Section-level**: `.page-section`, `.section-content`
- **Section types**: `.page-section-experience`, `.page-section-education`, `.page-section-projects`, etc.
- **Generic item building blocks**: `.section-item`, `.section-item-header`, `.section-item-title`, `.section-item-description`, `.section-item-metadata`, `.section-item-website`, etc.
- **Per-section item selectors**: `.experience-item`, `.skills-item`, `.profiles-item`, etc.
- **Template wrapper**: `.template-azurill`, `.template-onyx`, `.template-gengar`, etc.
### Stable “starter selectors”
If you're not sure where to start, these are usually safe:
- `.page` (the resume page container)
- `.page-section` (each resume section)
- `.section-item` (each item inside a section)
- `.page-picture` (profile picture container)
### Target a specific template (optional)
To apply styles only on one template, prefix with the template wrapper:
```css
.template-azurill .page-header {
gap: 12pt;
}
```
### Target a specific page (optional)
Each page has a class like `.page-0`, `.page-1`, etc.
```css
.page-0 .page-header {
margin-bottom: 6pt;
}
```
### Target a custom section (optional)
Custom sections include a dynamic class: `.page-section-`.
```css
.page-section-custom {
border-top: 1pt solid color-mix(in srgb, var(--page-text-color) 15%, transparent);
padding-top: 6pt;
}
```
If you need the exact ``, use your browser devtools on the resume preview to inspect the section element.
## Useful built-in CSS variables (you can override them)
The preview sets a number of CSS variables you can reuse or override:
- `--page-width`, `--page-height`
- `--page-sidebar-width`
- `--page-text-color`, `--page-primary-color`, `--page-background-color`
- `--page-body-font-family`, `--page-body-font-size`, `--page-body-line-height`, `--page-body-font-weight`, `--page-body-font-weight-bold`
- `--page-heading-font-family`, `--page-heading-font-size`, `--page-heading-line-height`, `--page-heading-font-weight`, `--page-heading-font-weight-bold`
- `--page-margin-x`, `--page-margin-y`
- `--page-gap-x`, `--page-gap-y`
Example (tighten spacing without changing your layout settings):
```css
.page {
--page-margin-x: 10pt;
--page-margin-y: 10pt;
--page-gap-y: 6pt;
}
```
## Common examples (copy/paste)
### 1) Make section headings bolder and more compact
```css
.page-section > h6 {
margin-bottom: 2pt;
font-weight: 800;
letter-spacing: 0.02em;
text-transform: uppercase;
}
```
### 2) Add subtle dividers between sections
```css
.page-section {
padding-bottom: 8pt;
border-bottom: 1pt solid color-mix(in srgb, var(--page-text-color) 12%, transparent);
}
.page-section:last-child {
border-bottom: none;
}
```
### 3) Reduce the size of metadata (dates/locations)
```css
.section-item-metadata {
font-size: calc(var(--page-body-font-size) * 0.9pt);
opacity: 0.75;
}
```
### 4) Improve readability of rich-text descriptions (bullets, spacing)
```css
.section-item-description {
opacity: 0.95;
}
.section-item-description ul {
margin-left: 12pt;
padding-left: 0;
}
.section-item-description li {
margin: 2pt 0;
}
```
### 5) Style links like a “chip” (useful for project links)
```css
.section-item-website a {
display: inline-block;
padding: 3pt 9pt;
border-radius: 999pt;
border: 2pt solid color-mix(in srgb, var(--page-primary-color) 45%, transparent);
text-decoration: none;
}
```
### 6) Hide the profile picture (CSS-only)
```css
.page-picture {
display: none;
}
```
### 7) Make the header more compact
```css
.page-header {
gap: 6pt;
padding-bottom: 6pt;
}
.basics-headline {
opacity: 0.8;
}
```
### 8) Make skills look denser (better use of space)
```css
.skills-item-name {
font-weight: 700;
}
.skills-item-proficiency {
margin-top: 1pt;
}
.skills-item-keywords {
display: block;
opacity: 0.85;
}
```
### 9) Highlight a specific section (example: Profiles)
```css
.page-section-profiles {
background: color-mix(in srgb, var(--page-primary-color) 10%, transparent);
border-radius: 8pt;
padding: 8pt 12pt;
}
```
## Troubleshooting
### My CSS doesn't do anything
- Make sure **Enable** is turned on.
- Prefer targeting `.page`, `.page-section`, and `.section-item` instead of `body`.
- Use your browser devtools to **inspect** the preview and confirm the element/class names.
### My `@media` rules affect the whole app / don't apply
At-rules aren't auto-scoped. Prefix selectors inside them with `.resume-preview-container` as shown above.