Aside

My theme CSS

This page contains my theme CSS. Last edited {{ post_last_modified }} ago.

For more on how I set up my Bearblog, see Markdown for my pages, my #bearblog posts, and Changelog.

:root {
  /* Fonts */
  --font-main: -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, Oxygen-Sans, Ubuntu, Cantarell, "Helvetica Neue", sans-serif;
  --font-monospace: ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", monospace;
  /* Font sizes */
  --step--2: clamp(0.6944rem, 0.6908rem + 0.0183vw, 0.72rem);
  --step--1: clamp(0.8333rem, 0.8238rem + 0.0476vw, 0.9rem);
  --step-0: clamp(1rem, 0.9821rem + 0.0893vw, 1.125rem);
  --step-1: clamp(1.2rem, 1.1705rem + 0.1473vw, 1.4063rem);
  --step-2: clamp(1.44rem, 1.3946rem + 0.227vw, 1.7578rem);
  --step-3: clamp(1.728rem, 1.661rem + 0.3352vw, 2.1973rem);
  /* Spacing */
  --space-3xs: clamp(0.3125rem, 0.3125rem + 0vw, 0.3125rem);
  --space-2xs: clamp(0.5625rem, 0.5408rem + 0.1087vw, 0.625rem);
  --space-xs: clamp(0.875rem, 0.8533rem + 0.1087vw, 0.9375rem);
  --space-s: clamp(1.125rem, 1.0815rem + 0.2174vw, 1.25rem);
  --space-m: clamp(1.6875rem, 1.6223rem + 0.3261vw, 1.875rem);
  --space-l: clamp(2.25rem, 2.163rem + 0.4348vw, 2.5rem);
  /* Light mode */
  --background-color: #eff1f5;
  --text-color: #4c4f69;
  --subtext-color: #6c6f85;
  --link-color: #8839ef;
  --visited-color: #c71f9a;
  --gradient: linear-gradient(90deg, #4c4f69 0%, #8839ef 50%, #c71f9a 100%);
  --hl-flamingo: #c43131;
  --hl-pink: #be1e93;
  --hl-mauve: #8534ef;
  --hl-red: #cd0e38;
  --hl-maroon: #ce1c2b;
  --hl-peach: #b24201;
  --hl-green: #2f751f;
  --hl-teal: #147176;
  --hl-sky: #03709b;
  --hl-blue: #0b59f4;
  --hl-sapphire: #167383;
  --hl-lavender: #3553fd;
  --hl-surface: #acb0be;
  --hl-mantle: #e6e9ef;
  --hl-crust: #dce0e8;
}
/* Dark mode */
@media (prefers-color-scheme: dark) {
  :root {
    --background-color: #1e1e2e;
    --text-color: #cdd6f4;
    --subtext-color: #a6adc8;
    --link-color: #cba6f7;
    --visited-color: #f5c2e7;
    --gradient: linear-gradient(90deg, #cdd6f4 0%, #cba6f7 50%, #f5c2e7 100%);
    --hl-flamingo: #f2cdcd;
    --hl-pink: #f5c2e7;
    --hl-mauve: #cba6f7;
    --hl-red: #f38ba8;
    --hl-maroon: #eba0ac;
    --hl-peach: #fab387;
    --hl-green: #a6e3a1;
    --hl-teal: #94e2d5;
    --hl-sky: #89dceb;
    --hl-blue: #89b4fa;
    --hl-sapphire: #74c7ec;
    --hl-lavender: #b4befe;
    --hl-surface: #585b70;
    --hl-mantle: #181825;
    --hl-crust: #11111b;
  }
  img {
    filter: brightness(0.8) contrast(1.2);
  }
}
/* Page styles */
html {
  margin-left: calc(100vw - 100%);
}
@media (max-width: 768px) {
  html {
    margin-left: auto;
  }
}
body {
  max-width: 65ch;
  margin: var(--space-m) auto;
  padding: 0 var(--space-s);
  font-family: var(--font-main);
  font-size: var(--step-0);
  line-height: 1.6;
  color: var(--text-color);
  background-color: var(--background-color);
}
/* Headings */
h1,
h2,
h3,
h4,
h5,
h6 {
  line-height: 1.3;
  margin: var(--space-m) auto;
}
h1 {
  font-size: var(--step-3);
}
h2 {
  font-size: var(--step-2);
}
h3 {
  font-size: var(--step-1);
}
h4 {
  font-size: var(--step-0);
}
h5 {
  font-size: var(--step--1);
}
h6 {
  font-size: var(--step--2);
}
/* Title */
.title h1,
.title h1::after {
  margin: 0;
  font-size: var(--step-0);
  font-family: var(--font-monospace);
  color: var(--text-color);
  font-weight: normal;
}
.title h1::after {
  content: "*:・゚✧";
  background: var(--gradient);
  color: transparent;
  background-clip: text;
}
.title,
.title:hover {
  text-decoration: none;
}
/* Navigation */
nav p {
  display: flex;
  flex-wrap: wrap;
  gap: .5em;
}
nav a {
  padding: 0.25em 0.75em;
  font-size: var(--step--1);
  color: var(--link-color);
  border: 1px dotted var(--link-color);
  text-decoration: none;
  font-family: var(--font-monospace);
  display: inline-block;
}
nav a:hover {
  text-decoration: none;
  border: 1px solid var(--link-color);
}
nav a:visited {
  border: 1px dotted var(--visited-color);
}
.home nav .nav-home a,
.about nav .nav-about a,
.notes nav .nav-notes a,
.status nav .nav-status a,
.clippings nav .nav-clippings a,
.doodles nav .nav-doodles a,
.blogroll nav .nav-blogroll a {
  border-style: solid;
}
/* Footer */
footer {
  padding: var(--space-m) 0;
  font-family: var(--font-monospace);
  font-size: var(--step--1);
}
/* Links */
a {
  color: var(--link-color);
  text-decoration-line: underline;
  text-decoration-style: dotted;
  text-decoration-thickness: 1px;
}
a:hover {
  text-decoration-line: underline;
  text-decoration-style: solid;
}
a:visited {
  color: var(--visited-color);
}
/* Post meta */
time {
  font-style: normal;
  font-size: var(--step--1);
  font-family: var(--font-monospace);
}
p:has(> .last-modified) {
  font-style: italic;
  font-size: var(--step--1);
}
.last-modified::before {
  content: "Edited ";
}
.tags {
  margin: var(--space-m) 0;
  display: flex;
  flex-direction: row;
  flex-wrap: wrap;
  gap: .5em;
}
.tags a {
  padding: 0.25em 0.75em;
  font-size: var(--step--1);
  text-decoration: none;
  font-family: var(--font-monospace);
  border: 1px dotted var(--link-color);
}
.tags a:hover {
  border: 1px solid var(--link-color);
}
.tags a:visited {
  border: 1px dotted var(--visited-color);
}
/* Post content */
img {
  width: 100%;
  margin: .5em 0;
}
p:has(img) {
  line-height: 1;
}
hr {
  border: 0;
  margin: var(--space-m) 0;
}
hr::after {
  content: "+++";
  color: var(--link-color);
}
blockquote {
  border-left: 1px dotted var(--link-color);
  color: var(--subtext-color);
  padding: 0 var(--space-s);
  margin: var(--space-m) var(--space-s);
}
.footnote,
.footnote-ref a {
  text-decoration: none;
}
sup {
  vertical-align: top;
  font-size: var(--step--2);
}
.footnote {
  font-size: var(--step--2);
  margin-left: var(--space-3xs);
}
.footnotes {
  margin: var(--space-m) 0 0;
  padding: var(--space-2xs) 0 0;
  border-top: 1px dotted var(--link-color);
}
span.email b {
  display: none;
}
::marker {
  line-height: initial;
}
/* Tables */
table {
  width: 100%;
  border-collapse: collapse;
  margin: var(--space-m) 0;
}
thead th,
tfoot th,
tfoot td,
td {
  padding: var(--space-3xs) var(--space-2xs);
  border: 1px dotted var(--link-color);
}
th {
  position: sticky;
  top: 0;
  background-color: var(--hl-crust);
}
/* Upvote button */
#upvote-form {
  margin: var(--space-m) 0 var(--space-xs) !important;
  display: block !important;
}
.upvote-button svg,
.upvote-count {
  display: none;
}
.upvote-button {
  display: block !important;
  font-size: var(--step-0);
}
.upvote-button::before {
  content: "🤍";
  cursor: pointer;
}
.upvote-button:hover::before {
  content: "❤️";
  cursor: pointer;
}
.upvote-button[disabled]::before {
  content: "💖";
  cursor: default;
}
.upvote-button::after {
  content: " ₊˚✩⊹";
  background: var(--gradient);
  color: transparent;
  background-clip: text;
  cursor: pointer;
}
.upvote-button[disabled]::after {
  cursor: default;
}
/* Blog list */
ul.blog-posts {
  margin: var(--space-m) 0;
  padding: 0;
}
ul.blog-posts > li {
  padding: 0 0 var(--space-2xs);
  display: flex;
  flex-direction: column-reverse;
}
ul.blog-posts > li > span {
  color: var(--hl-surface);
  line-height: 1;
}
/* Embedded post lists */
.status ul.embedded.blog-posts > li,
.clippings ul.embedded.blog-posts > li,
.doodles ul.embedded.blog-posts > li {
  border: 1px dotted var(--subtext-color);
  margin-top: var(--space-m);
  padding: 1.25em;
  flex-direction: row;
  flex-wrap: wrap-reverse;
  justify-content: space-between;
  align-items: baseline;
}
.doodles ul.embedded.blog-posts > li {
  padding-top: 0;
}
.status ul.embedded.blog-posts > li > a,
.clippings ul.embedded.blog-posts > li > a,
.doodles ul.embedded.blog-posts > li > a {
  visibility: hidden;
  font-size: 0px;
  text-decoration: none;
}
.status ul.embedded.blog-posts > li > a::after,
.clippings ul.embedded.blog-posts > li > a::after,
.doodles ul.embedded.blog-posts > li > a::after {
  visibility: visible;
  content: "__";
  font-size: var(--step--1);
}
.status ul.embedded.blog-posts > li > div,
.clippings ul.embedded.blog-posts > li > div,
.doodles ul.embedded.blog-posts > li > div {
  flex-basis: 100%;
}
.clippings ul.embedded.blog-posts > li p:has(> a) {
  font-size: var(--step--1);
}
.clippings blockquote {
  color: var(--text-color);
  border: none;
  margin: 0;
  padding: 0;
}
.doodles ul.embedded.blog-posts > li img {
  width: calc(100% + 2.5em);
  margin: 0 0 0 -1.25em;
}
.doodles ul.embedded.blog-posts > li p:has(> img) {
  line-height: 1;
}
/* Embedded post content */
ul.embedded.blog-posts > li div p:first-child {
  margin-top: 0;
}
ul.embedded.blog-posts > li div > ul,
ul.embedded.blog-posts > li div > ol {
  margin-bottom: 1em;
}
ul.embedded.blog-posts > li div > ul li {
  list-style-type: disc;
}
ul.embedded.blog-posts > li div > ul li ul li {
  list-style-type: circle;
}
ul.embedded.blog-posts > li div > .footnotes {
  padding: var(--space-s) 0 0;
}
/* Code */
.highlight {
  font-size: var(--step--1);
  padding: var(--space-3xs) var(--space-s);
  overflow-x: auto;
  margin: var(--space-m) 0;
}
code {
  margin: 0 0.125em;
  padding: 0.25em 0.5em;
  background-color: var(--hl-crust);
  font-size: var(--step--1);
}
/* Syntax highlighting */
.highlight .hll { background-color: var(--hl-crust); } 
.highlight { background: var(--hl-mantle); color: var(--text-color); } 
.highlight .c { color: var(--subtext-color); } /* Comment */
.highlight .err { color: var(--hl-maroon); border: 0; } /* Error */
.highlight .g { color: var(--text-color); } /* Generic */
.highlight .k { color: var(--hl-sapphire); } /* Keyword */
.highlight .l { color: var(--hl-flamingo); } /* Literal */
.highlight .n { color: var(--text-color); } /* Name */
.highlight .o { color: var(--hl-sapphire); } /* Operator */
.highlight .x { color: var(--text-color); } /* Other */
.highlight .p { color: var(--hl-maroon); } /* Punctuation */
.highlight .ch { color: var(--subtext-color); } /* Comment.Hashbang */
.highlight .cm { color: var(--subtext-color); } /* Comment.Multiline */
.highlight .cp { color: var(--hl-maroon); } /* Comment.Preproc */
.highlight .cpf { color: var(--subtext-color); } /* Comment.PreprocFile */
.highlight .c1 { color: var(--subtext-color); } /* Comment.Single */
.highlight .cs { color: var(--subtext-color); } /* Comment.Special */
.highlight .gd { color: var(--hl-pink); } /* Generic.Deleted */
.highlight .ge { color: var(--text-color); text-decoration: underline; } /* Generic.Emph */
.highlight .ges { color: var(--text-color); text-decoration: underline; } /* Generic.EmphStrong */
.highlight .gr { color: var(--text-color); } /* Generic.Error */
.highlight .gh { color: var(--text-color); font-weight: bold; } /* Generic.Heading */
.highlight .gi { color: var(--text-color); font-weight: bold; } /* Generic.Inserted */
.highlight .go { color: var(--hl-lavender); } /* Generic.Output */
.highlight .gp { color: var(--text-color); } /* Generic.Prompt */
.highlight .gs { color: var(--text-color); } /* Generic.Strong */
.highlight .gu { color: var(--text-color); font-weight: bold; } /* Generic.Subheading */
.highlight .gt { color: var(--text-color); } /* Generic.Traceback */
.highlight .kc { color: var(--hl-pink); } /* Keyword.Constant */
.highlight .kd { color: var(--hl-pink); font-style: italic; } /* Keyword.Declaration */
.highlight .kn { color: var(--hl-sapphire); } /* Keyword.Namespace */
.highlight .kp { color: var(--hl-sapphire); } /* Keyword.Pseudo */
.highlight .kr { color: var(--hl-sapphire); } /* Keyword.Reserved */
.highlight .kt { color: var(--hl-sky); } /* Keyword.Type */
.highlight .ld { color: var(--text-color); } /* Literal.Date */
.highlight .m { color: var(--hl-pink); } /* Literal.Number */
.highlight .s { color: var(--hl-sapphire); } /* Literal.String */
.highlight .na { color: var(--hl-blue); } /* Name.Attribute */
.highlight .nb { color: var(--hl-pink); font-style: italic; } /* Name.Builtin */
.highlight .nc { color: var(--hl-sapphire); font-weight: normal; } /* Name.Class */
.highlight .no { color: var(--text-color); } /* Name.Constant */
.highlight .nd { color: var(--hl-sapphire); } /* Name.Decorator */
.highlight .ni { color: var(--text-color); } /* Name.Entity */
.highlight .ne { color: var(--text-color); } /* Name.Exception */
.highlight .nf { color: var(--hl-pink); } /* Name.Function */
.highlight .nl { color: var(--hl-flamingo); font-style: italic; } /* Name.Label */
.highlight .nn { color: var(--text-color); } /* Name.Namespace */
.highlight .nx { color: var(--text-color); } /* Name.Other */
.highlight .py { color: var(--text-color); } /* Name.Property */
.highlight .nt { color: var(--hl-green); font-weight: normal; } /* Name.Tag */
.highlight .nv { color: var(--hl-sky); font-style: italic; } /* Name.Variable */
.highlight .ow { color: var(--hl-sapphire); } /* Operator.Word */
.highlight .pm { color: var(--text-color); } /* Punctuation.Marker */
.highlight .w { color: var(--text-color); } /* Text.Whitespace */
.highlight .mb { color: var(--hl-pink); } /* Literal.Number.Bin */
.highlight .mf { color: var(--hl-pink); } /* Literal.Number.Float */
.highlight .mh { color: var(--hl-pink); } /* Literal.Number.Hex */
.highlight .mi { color: var(--hl-pink); } /* Literal.Number.Integer */
.highlight .mo { color: var(--hl-pink); } /* Literal.Number.Oct */
.highlight .sa { color: var(--hl-maroon); } /* Literal.String.Affix */
.highlight .sb { color: var(--hl-maroon); } /* Literal.String.Backtick */
.highlight .sc { color: var(--hl-maroon); } /* Literal.String.Char */
.highlight .dl { color: var(--hl-maroon); } /* Literal.String.Delimiter */
.highlight .sd { color: var(--hl-maroon); } /* Literal.String.Doc */
.highlight .s2 { color: var(--hl-maroon); } /* Literal.String.Double */
.highlight .se { color: var(--hl-maroon); } /* Literal.String.Escape */
.highlight .sh { color: var(--hl-maroon); } /* Literal.String.Hepinkoc */
.highlight .si { color: var(--hl-maroon); } /* Literal.String.Interpol */
.highlight .sx { color: var(--hl-maroon); } /* Literal.String.Other */
.highlight .sr { color: var(--hl-maroon); } /* Literal.String.Regex */
.highlight .s1 { color: var(--hl-maroon); } /* Literal.String.Single */
.highlight .ss { color: var(--hl-maroon); } /* Literal.String.Symbol */
.highlight .bp { color: var(--text-color); font-style: italic; } /* Name.Builtin.Pseudo */
.highlight .fm { color: var(--hl-pink); } /* Name.Function.Magic */
.highlight .vc { color: var(--hl-blue); font-style: italic; } /* Name.Variable.Class */
.highlight .vg { color: var(--hl-blue); font-style: italic; } /* Name.Variable.Global */
.highlight .vi { color: var(--hl-blue); font-style: italic; } /* Name.Variable.Instance */
.highlight .vm { color: var(--hl-blue); font-style: italic; } /* Name.Variable.Magic */
.highlight .il { color: var(--hl-pink); } /* Literal.Number.Integer.Long */
/* Theme CSS */
.code-wrap .highlight pre {
  white-space: break-spaces;
}