Bearming theme

Bearming is a Bear theme built for readability, easy customization, and modern styling with a bit of warmth and personality.
You can use it on its own or shape it further. Swap the colors with a palette, change the look with styles, or add features with add-ons. Mix and match however you like.
To see how everything fits together, check out the style guide. Curious what others think of it? Check out the testimonials.
The theme was last updated 1 day, 6 hours ago.
/*
* Bearming — a personal Bear theme
* Version 5.3.0 | 2026-04-26
* Robert Birming | robertbirming.com
*/
/* Palette: Default */
:root {
color-scheme: light dark;
/* Layout */
--page-width: 65ch;
--line-height: 1.65;
--space-block: 1.8rem;
--radius: 4px;
/* Typography */
--font-body: system-ui, sans-serif;
--font-heading: var(--font-body);
--font-mono: ui-monospace, monospace;
--font-size: 1.0625rem;
--font-small: calc(var(--font-size) * 0.875);
/* Light */
--bg: #f9f7f4;
--text: #2c2d2e;
--link: #1f5fbf;
--visited: #7c5a91;
--accent: var(--link);
--muted: color-mix(in srgb, var(--accent) 15%, color-mix(in srgb, var(--text) 65%, var(--bg)));
--surface: color-mix(in srgb, var(--accent) 7%, var(--bg));
--border: color-mix(in srgb, var(--accent) 20%, var(--bg));
}
@media (prefers-color-scheme: dark) {
:root {
/* Dark */
--bg: #1c1f23;
--text: #e6e7e8;
--link: #74b0f4;
--visited: #c4a8d4;
--surface: color-mix(in srgb, var(--accent) 13%, var(--bg));
--border: color-mix(in srgb, var(--accent) 30%, var(--bg));
--muted: color-mix(in srgb, var(--accent) 10%, color-mix(in srgb, var(--text) 80%, var(--bg)));
}
}
/* =========================
Base - view style options:
robertbirming.com/bearming/styles
========================= */
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
-webkit-text-size-adjust: 100%;
background-color: var(--bg);
}
body {
margin-inline: auto;
padding: 1.25rem;
max-width: var(--page-width);
font-family: var(--font-body);
font-size: var(--font-size);
line-height: var(--line-height);
overflow-wrap: break-word;
color: var(--text);
background-color: var(--bg);
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
p {
margin-block: 1.2em;
}
h1, h2, h3, h4 {
margin-block: var(--space-block) 0.5em;
line-height: 1.3;
font-family: var(--font-heading);
}
h1 { font-size: 1.8rem; }
h2 { font-size: 1.5rem; }
h3 { font-size: 1.3rem; }
h4 { font-size: 1.2rem; }
a {
color: var(--link);
text-decoration: none;
}
main a {
text-decoration: underline;
text-decoration-thickness: 1px;
text-underline-offset: 0.2em;
text-decoration-color: color-mix(in srgb, var(--link) 40%, transparent);
}
.blog-posts a {
text-decoration: none;
}
main a:visited {
color: var(--visited);
text-decoration-color: color-mix(in srgb, var(--visited) 40%, transparent);
}
@media (hover: hover) {
a:hover {
text-decoration: underline;
text-decoration-thickness: 1.5px;
text-underline-offset: 0.2em;
text-decoration-color: currentColor;
}
}
ul, ol {
padding-inline-start: 1.5rem;
}
li {
margin-block: 0.2em;
}
li > ul,
li > ol {
margin-block: 0.3em;
}
hr,
img,
video,
pre,
blockquote {
margin-block: var(--space-block);
}
hr {
border: none;
border-top: 1px solid var(--border);
}
img,
video {
display: block;
max-width: 100%;
height: auto;
border-radius: var(--radius);
}
figure {
margin-inline: 0;
margin-block: var(--space-block);
}
figure img,
figure p {
margin-block: 0;
}
figcaption {
margin-block-start: 0.7em;
font-size: var(--font-small);
color: var(--muted);
}
blockquote {
margin-inline: 0;
padding-block: 1em;
padding-inline: 1.5em;
font-style: italic;
color: var(--muted);
background: var(--surface);
border: 1px solid var(--border);
border-inline-start: 3px solid var(--border);
border-radius: var(--radius);
}
blockquote > :first-child { margin-block-start: 0; }
blockquote > :last-child { margin-block-end: 0; }
blockquote cite {
display: block;
margin-block-start: 0.7em;
font-style: normal;
}
pre {
padding-block: 1rem;
padding-inline: 1.2rem;
overflow-x: auto;
font-family: var(--font-mono);
font-size: var(--font-small);
line-height: 1.5;
tab-size: 2;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius);
}
code {
padding-block: 0.1em;
padding-inline: 0.3em;
font-family: var(--font-mono);
font-size: var(--font-small);
overflow-wrap: anywhere;
background: var(--surface);
border-radius: var(--radius);
}
pre code {
padding: 0;
background: none;
border-radius: 0;
font-size: inherit;
overflow-wrap: normal;
}
mark {
padding-inline: 0.15em;
color: var(--bg);
background: color-mix(in srgb, var(--link) 70%, var(--text));
border-radius: 2px;
}
table {
width: 100%;
border-collapse: collapse;
font-size: var(--font-small);
}
th, td {
padding-block: 0.5em;
padding-inline: 0.75em;
border: 1px solid var(--border);
text-align: start;
}
th {
background: var(--surface);
font-weight: 700;
}
time {
font-family: var(--font-mono);
font-size: calc(var(--font-small) * 0.9);
font-style: normal;
color: var(--muted);
}
header nav p,
main > :first-child,
.post main > h1 + p {
margin-block-start: 0;
}
.post main > h1 {
margin-block-end: 0;
}
header {
margin-block: 0 2.4rem;
padding-block: 1rem;
padding-inline: 1.2rem;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius);
text-align: center;
}
header a.title {
display: inline-block;
color: var(--text);
text-decoration: none;
}
.title h1 {
margin: 0;
font-size: 1.7rem;
font-weight: 900;
letter-spacing: -0.01em;
}
header nav {
margin-block-start: 0.7rem;
padding-block-start: 0.6rem;
border-block-start: 1px solid var(--border);
}
header nav p {
margin: 0;
}
header nav a {
margin-inline: 0.4em;
font-size: var(--font-small);
font-weight: 500;
}
.blog-posts {
margin-block-end: var(--space-block);
padding: 0;
list-style: none;
background: var(--surface);
border: 1px solid var(--border);
border-radius: var(--radius);
overflow: hidden;
}
.blog-posts li {
display: flex;
align-items: center;
gap: 1rem;
padding-block: 0.7rem 0.9rem;
padding-inline: 1.2rem;
border-block-end: 1px solid var(--border);
}
.blog-posts li:last-child {
border-block-end: none;
}
.blog-posts li a {
flex: 1;
min-width: 0;
font-weight: 500;
white-space: nowrap;
overflow: hidden;
text-overflow: ellipsis;
}
.blog-posts li span {
order: 2;
flex: 0 0 auto;
margin-inline-start: auto;
white-space: nowrap;
}
@media (max-width: 520px) {
.blog-posts li {
flex-direction: column;
align-items: flex-start;
gap: 0;
}
.blog-posts li a {
width: 100%;
}
.blog-posts li span {
margin-inline-start: 0;
}
}
p.tags {
display: block;
margin-block: var(--space-block);
}
p.tags a,
p.tags a:visited,
p.tags a:hover {
margin-inline-end: 0.5em;
font-size: var(--font-small);
color: var(--muted);
}
@media (hover: hover) {
p.tags a:hover {
text-decoration-color: var(--muted);
}
}
#upvote-form > small {
display: block;
margin-block-start: var(--space-block);
}
#upvote-form .upvote-button {
display: inline-flex;
align-items: center;
padding: 0;
border: 0;
background: none;
font-size: 1rem;
color: var(--muted) !important;
cursor: pointer;
}
#upvote-form .upvote-button svg {
display: none;
}
#upvote-form .upvote-count::before {
content: "♡";
display: inline-block;
margin-inline-end: 0.15em;
font-family: system-ui, sans-serif;
font-size: 1.4rem;
color: var(--link);
vertical-align: -0.12em;
transition: transform 0.15s ease;
}
@media (hover: hover) {
#upvote-form .upvote-button:not([disabled]):hover .upvote-count::before {
transform: scale(1.15);
}
}
#upvote-form .upvote-button[disabled] {
opacity: 0.7;
cursor: default;
}
#upvote-form .upvote-button[disabled] .upvote-count::before {
content: "♥";
}
footer {
margin-block-start: var(--space-block);
padding-block-start: 1.2rem;
text-align: center;
color: var(--muted);
border-block-start: 1px solid var(--border);
}
footer p {
margin-block: 0.5em;
}
footer span:last-child {
font-size: var(--font-small);
}
/* =========================
Add-ons - see what's available:
robertbirming.com/bearming/add-ons
========================= */
/* Footnote styles | robertbirming.com */
.footnotes {
margin-block-start: var(--space-block);
padding-block-start: 1.2rem;
font-size: var(--font-small);
color: var(--muted);
border-block-start: 1px solid var(--border);
}
.footnotes ol {
padding-inline-start: 1.5rem;
}
.footnotes li {
margin-block-end: 0.4em;
}
.footnotes p {
display: inline;
margin: 0;
}
.footnote-ref a {
text-decoration: none;
font-feature-settings: "tnum";
}
.footnote {
margin-inline-start: 0.2em;
text-decoration: none;
}
/* Curve divider | robertbirming.com */
span.curve {
display: block;
width: 8rem;
height: 0.5rem;
margin-block-start: calc(var(--space-block) * 0.7);
margin-inline: auto;
background: var(--link);
-webkit-mask:
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='8' viewBox='0 0 120 8'><path d='M0 4 Q30 0 60 4 T120 4' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/></svg>")
no-repeat center / contain;
mask:
url("data:image/svg+xml;utf8,<svg xmlns='http://www.w3.org/2000/svg' width='120' height='8' viewBox='0 0 120 8'><path d='M0 4 Q30 0 60 4 T120 4' fill='none' stroke='black' stroke-width='2' stroke-linecap='round'/></svg>")
no-repeat center / contain;
}
@supports not ((mask: url("")) or (-webkit-mask: url(""))) {
span.curve {
height: 0.125rem;
border-radius: 999px;
}
}
/* Tree-style menu | robertbirming.com */
.menu ul {
padding: 0;
padding-inline-start: 1.5rem;
list-style: none;
border-inline-start: 1px solid var(--border);
}
.menu li {
position: relative;
margin-block: 0.4em;
}
.menu li::before {
content: "";
position: absolute;
inset-block-start: 0.8em;
inset-inline-start: -1.2rem;
width: 0.5rem;
height: 1px;
background: var(--border);
}
.menu a {
font-weight: 500;
text-decoration: none;
}
.menu a:visited {
color: var(--link);
text-decoration-color: color-mix(in srgb, var(--link) 40%, transparent);
}
@media (hover: hover) {
.menu a:hover {
text-decoration: underline;
text-decoration-thickness: 1px;
text-underline-offset: 0.2em;
}
}
/* Inline menu | robertbirming.com */
.inline-menu ul {
display: flex;
justify-content: center;
gap: 0.7rem;
padding-block: 0.75rem;
padding-inline: 0;
list-style: none;
font-size: var(--font-small);
font-weight: 500;
color: var(--muted);
background: var(--surface);
border-block: 1px solid var(--border);
}
.inline-menu a {
text-decoration: none;
}
.inline-menu a:visited {
color: var(--link);
}
@media (hover: hover) {
.inline-menu a:hover {
text-decoration: underline;
text-decoration-thickness: 1px;
text-underline-offset: 0.2em;
}
}
.inline-menu li:not(:last-child)::after {
content: "·";
margin-inline-start: 0.8rem;
opacity: 0.7;
pointer-events: none;
}
/* Frame image | robertbirming.com */
.frame {
margin-block: var(--space-block);
padding: 0.6rem;
background: var(--surface);
border: 1px solid var(--border);
border-radius: calc(var(--radius) * 2);
}
.frame img {
display: block;
width: 100%;
height: auto;
margin: 0;
border-radius: var(--radius);
}
.frame p {
margin: 0;
}