@charset "UTF-8";

/* ABOUTME: Self-hosted font declarations for the IBM Plex family —
   Plex Sans (headings), Plex Serif (body), Plex Mono (code). */

/* IBM Plex Sans — variable weight (100–700) */
@font-face {
    font-family: 'IBM Plex Sans';
    font-style: normal;
    font-weight: 100 700;
    font-display: swap;
    src: url('../fonts/ibm-plex-sans-variable.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
        U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC,
        U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'IBM Plex Sans';
    font-style: italic;
    font-weight: 100 700;
    font-display: swap;
    src: url('../fonts/ibm-plex-sans-italic-variable.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
        U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC,
        U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* IBM Plex Serif — regular, italic, semibold (static weights, latin subset) */
@font-face {
    font-family: 'IBM Plex Serif';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/ibm-plex-serif-regular.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
        U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC,
        U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'IBM Plex Serif';
    font-style: italic;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/ibm-plex-serif-italic.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
        U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC,
        U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

@font-face {
    font-family: 'IBM Plex Serif';
    font-style: normal;
    font-weight: 600;
    font-display: swap;
    src: url('../fonts/ibm-plex-serif-semibold.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
        U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC,
        U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

/* IBM Plex Mono — regular (static weight, latin subset) */
@font-face {
    font-family: 'IBM Plex Mono';
    font-style: normal;
    font-weight: 400;
    font-display: swap;
    src: url('../fonts/ibm-plex-mono-regular.woff2') format('woff2');
    unicode-range: U+0000-00FF, U+0131, U+0152-0153, U+02BB-02BC, U+02C6,
        U+02DA, U+02DC, U+0304, U+0308, U+0329, U+2000-206F, U+20AC,
        U+2122, U+2191, U+2193, U+2212, U+2215, U+FEFF, U+FFFD;
}

:root {
    /* Font Variables */
    --heading-font: 'IBM Plex Sans', -apple-system, 'Segoe UI', sans-serif;
    --body-font: 'IBM Plex Serif', Georgia, 'Times New Roman', serif;
    --code-font: 'IBM Plex Mono', 'Cascadia Code', 'Fira Code', monospace;

    /*  Color Variables */
    --primary-color: #3e6d98;
    --secondary-color: #8ba7c1;
    --text-color: #333;
    --background-color: #f8f8f8;
    --gray-light: #cccccc;
    --gray-lighter: #f8f8f8;
    --gray-medium: #aaaaaa;
    --link-hover: #8ba7c1;
    --focus: #33b5e5;
    --link-active: #30bb4c;
    --code-bg: #002b36;

    /* Spacing Units */
    --spacing-xs: 0.3em;
    --spacing-sm: 0.8em;
    --spacing-md: 1em;
    --spacing-lg: 1.5em;
    --spacing-xl: 2em;
}

/* Progressive enhancement */
@supports (display: grid) {
    .grid-layout {
        display: grid;
        grid-template-columns: repeat(auto-fit, minmax(250px, 1fr));
        gap: 1rem;
    }
}

/* Fallback */
.grid-layout {
    display: flex;
    flex-wrap: wrap;
}

/* Fonts are self-hosted via @font-face declarations above */

html,
body,
div,
span,
applet,
object,
iframe,
h1,
h2,
h3,
h4,
h5,
h6,
p,
blockquote,
pre,
a,
abbr,
acronym,
address,
big,
cite,
code,
del,
dfn,
em,
img,
ins,
kbd,
q,
s,
samp,
small,
strike,
strong,
sub,
sup,
tt,
var,
b,
u,
i,
center,
dl,
dt,
dd,
ol,
ul,
li,
fieldset,
form,
label,
legend,
table,
caption,
tbody,
tfoot,
thead,
tr,
th,
td,
article,
aside,
canvas,
details,
embed,
figure,
figcaption,
footer,
header,
hgroup,
menu,
nav,
output,
ruby,
section,
summary,
time,
mark,
audio,
video {
    margin: 0;
    padding: 0;
    border: 0;
    font: inherit;
    font-size: 100%;
    vertical-align: baseline;
}

html {
    width: 100%;
    line-height: 1;
}

ol,
ul {
    list-style: none;
}

table {
    border-collapse: collapse;
    border-spacing: 0;
}

caption,
th,
td {
    text-align: left;
    font-weight: normal;
    vertical-align: middle;
}

article .entry-content table {
    width: 100%;
    margin-bottom: 1.5em;
    font-variant-numeric: tabular-nums lining-nums;
}

article .entry-content thead th {
    font-family: var(--heading-font);
    font-weight: 600;
    padding: var(--spacing-sm) var(--spacing-md) var(--spacing-sm) 0;
    border-bottom: 2px solid var(--secondary-color);
}

article .entry-content tbody td {
    padding: var(--spacing-sm) var(--spacing-md) var(--spacing-sm) 0;
    border-bottom: 1px solid var(--gray-light);
}

article .entry-content tbody tr:last-child td {
    border-bottom: none;
}

article .entry-content th:last-child,
article .entry-content td:last-child {
    padding-right: 0;
}

q,
blockquote {
    quotes: none;
}

q:before,
q:after,
blockquote:before,
blockquote:after {
    content: none;
}

a img {
    border: none;
}

article,
aside,
details,
figcaption,
figure,
footer,
header,
hgroup,
menu,
nav,
section,
summary {
    display: block;
}

aside.sidebar {
    display: none;
}

a {
    color: var(--primary-color);
    transition: color 0.3s;
    text-decoration: none;
}

a:visited {
    color: var(--primary-color);
}

a:focus {
    color: var(--link-hover);
}

a:hover {
    color: var(--link-hover);
}

a:active {
    color: var(--link-active);
}

a:hover {
    text-decoration: underline;
}

body {
    background-color: var(--gray-lighter);
}

body div#content {
    background-color: var(--gray-lighter);
}

.heading,
body > header h1,
h1,
h2,
h3,
h4,
h5,
h6 {
    font-family: var(--heading-font);
    font-weight: bold;
}

.sans {
    font-family: var(--heading-font) !important;
}

.serif,
body,
#content .blog-index a[rel='full-article'] {
    font-family: var(--body-font);
}

.mono {
    font-family: var(--code-font) !important;
}

.font-italic {
    font-style: italic !important;
}

.font-bold {
    font-weight: 600 !important;
}

.font-regular {
    font-weight: 400 !important;
    font-style: normal !important;
}

.mono,
pre,
code,
tt,
p code,
li code {
    font-family: var(--code-font);
    font-weight: 400;
    font-style: normal;
    font-variant-numeric: tabular-nums lining-nums;
    font-variant-ligatures: none;
}

article header p.meta,
article > footer,
#content .blog-index footer,
html .gist .gist-file .gist-meta,
#blog-archives a.category,
#blog-archives time {
    font-family: var(--body-font);
}

body > header h1 {
    font-size: 2.2em;
    line-height: 1.2em;
    margin-bottom: 0.6667em;
}

body {
    line-height: 1.5em;
    color: var(--text-color);
    font-variant-ligatures: common-ligatures;
    font-variant-numeric: oldstyle-nums;
    font-size: clamp(1rem, 0rem + 1.5vw, 1.625rem);
}

h1 {
    font-size: 2.2em;
    line-height: 1.2em;
}

h1,
h2,
h3,
h4,
h5,
h6 {
    text-rendering: optimizelegibility;
    margin-bottom: 1em;
    font-variant-ligatures: common-ligatures;
}

h1 {
    font-weight: 700;
}

h2,
section h1 {
    font-weight: 650;
}

h3,
h4,
h5,
h6 {
    font-weight: 600;
}

h2,
section h1 {
    font-size: 1.5em;
}

h3,
section h2,
section section h1 {
    font-size: 1.3em;
}

h4,
section h3,
section section h2,
section section section h1 {
    font-size: 1em;
}

h5,
section h4,
section section h3 {
    font-size: 0.9em;
}

h6,
section h5,
section section h4,
section section section h3 {
    font-size: 0.8em;
}

p,
blockquote,
ul,
ol {
    margin-bottom: 1.5em;
}

ul {
    list-style-type: disc;
}

ul ul {
    list-style-type: circle;
    margin-bottom: 0;
}

ul ul ul {
    list-style-type: square;
    margin-bottom: 0;
}

ol {
    list-style-type: decimal;
}

ol ol {
    list-style-type: lower-alpha;
    margin-bottom: 0;
}

ol ol ol {
    list-style-type: lower-roman;
    margin-bottom: 0;
}

ul,
ul ul,
ul ol,
ol,
ol ul,
ol ol {
    margin-left: 1.3em;
}

strong {
    font-weight: 600;
}

em {
    font-style: italic;
}

sup,
sub {
    font-size: 0.8em;
    position: relative;
    display: inline-block;
}

sup {
    top: -0.5em;
}

sub {
    bottom: -0.5em;
}

q {
    font-style: italic;
}

q:before {
    content: '\201C';
}

q:after {
    content: '\201D';
}

em,
dfn {
    font-style: italic;
}

strong,
dfn {
    font-weight: 600;
}

del,
s {
    text-decoration: line-through;
}

abbr,
acronym {
    border-bottom: 1px dotted;
    cursor: help;
}

sub,
sup {
    line-height: 0;
}

hr {
    margin-bottom: 0.2em;
}

small {
    font-size: 0.8em;
}

big {
    font-size: 1.2em;
}

blockquote {
    font-style: italic;
    position: relative;
    font-size: 1.15em;
    line-height: 1.6em;
    padding-left: 1.2em;
    border-left: 3px solid var(--primary-color);
    color: #444;
    font-variant-numeric: oldstyle-nums;
}

blockquote cite {
    font-style: normal;
    font-size: 0.85em;
    letter-spacing: 0.02em;
    color: #888;
}

blockquote cite a {
    color: #888 !important;
    word-wrap: break-word;
}

blockquote cite:before {
    content: '\2014\00a0';
    color: #aaa;
}

@media only screen and (min-width: 992px) {
    blockquote {
        padding-left: 1.5em;
    }
}

@media only screen and (max-width: 768px) {
    .content iframe {
        width: 580px;
        height: 326px;
    }
}

.pullquote-right:before,
.pullquote-left:before {
    padding: 0;
    border: none;
    content: attr(data-pullquote);
    float: right;
    width: 45%;
    margin: 0.5em 0 1em 1.5em;
    position: relative;
    top: 7px;
    font-size: 1.4em;
    line-height: 1.45em;
}

.pullquote-left:before {
    float: left;
    margin: 0.5em 1.5em 1em 0;
}

.force-wrap,
article a {
    white-space: pre-wrap;
    overflow-wrap: break-word;
}

.group,
body > header,
body > nav,
body > footer,
body #content > article,
body #content > div > article,
body #content > div > section,
body div.pagination,
#main,
#content {
    zoom: 1;
}

.group:after,
body > header:after,
body > nav:after,
body > footer:after,
body #content > article:after,
body #content > div > article:after,
body #content > div > section:after,
body div.pagination:after,
#main:after,
#content:after {
    content: '';
    display: table;
    clear: both;
}

body {
    text-size-adjust: none;
    position: relative;
}

body > header,
body > nav,
body > footer,
body #content > article,
body #content > div > article,
body #content > div > section {
    padding-left: 18px;
    padding-right: 18px;
}

@media only screen and (min-width: 480px) {
    body > header,
    body > nav,
    body > footer,
    body #content > article,
    body #content > div > article,
    body #content > div > section {
        padding-left: 25px;
        padding-right: 25px;
    }
}

@media only screen and (min-width: 768px) {
    body > header,
    body > nav,
    body > footer,
    body #content > article,
    body #content > div > article,
    body #content > div > section {
        padding-left: 35px;
        padding-right: 35px;
    }
}

@media only screen and (min-width: 992px) {
    body > header,
    body > nav,
    body > footer,
    body #content > article,
    body #content > div > article,
    body #content > div > section {
        padding-left: 55px;
        padding-right: 55px;
    }
}

body div.pagination {
    margin-left: 18px;
    margin-right: 18px;
}

@media only screen and (min-width: 480px) {
    body div.pagination {
        margin-left: 25px;
        margin-right: 25px;
    }
}

@media only screen and (min-width: 768px) {
    body div.pagination {
        margin-left: 35px;
        margin-right: 35px;
    }
}

@media only screen and (min-width: 992px) {
    body div.pagination {
        margin-left: 55px;
        margin-right: 55px;
    }
}

body > header {
    font-size: 1em;
    padding-top: 1.5em;
    padding-bottom: 1.5em;
}

#content {
    overflow: hidden;
}

@media only screen and (min-width: 768px) {
    #content > div,
    #content > article {
        width: 100%;
    }
}

@media only screen and (max-width: 767px) {
    #content > div,
    #content > article {
        width: unset;
    }
}

.flex-content,
article img,
article video,
article .flash-video {
    height: auto;
    width: 100%;
}

.basic-alignment.left,
article img.left,
article video.left,
article .left.flash-video {
    float: left;
    margin-right: 1.5em;
}

.basic-alignment.right,
article img.right,
article video.right,
article .right.flash-video {
    float: right;
    margin-left: 1.5em;
}

.basic-alignment.center,
article img.center,
article video.center,
article .center.flash-video {
    display: block;
    margin: 0 auto 1.5em;
}

.basic-alignment.left,
article img.left,
article video.left,
article .left.flash-video,
.basic-alignment.right,
article img.right,
article video.right,
article .right.flash-video {
    margin-bottom: var(--spacing-sm);
}

@media only screen and (min-width: 550px) {
    body > header {
        font-size: 1em;
    }
}

@media only screen and (min-width: 768px) {
    body {
        text-size-adjust: auto;
    }

    #main {
        padding: 0;
    }

    #content {
        overflow: visible;
        position: relative;
    }

    .no-sidebar #content {
        margin-right: 0;
        border-right: 0;
    }

    .collapse-sidebar #content {
        margin-right: 20px;
    }

    #content > div,
    #content > article {
        padding-top: 18px;
        padding-bottom: 18px;
    }
}

@media only screen and (min-width: 992px) {
    #content > div,
    #content > article {
        padding-top: 28px;
        padding-bottom: 28px;
    }
}

@media only screen and (min-width: 768px) {
    ul,
    ol {
        margin-left: 0;
    }
}

body > header {
    font-family: var(--heading-font);
    position: relative;
    width: 100%;
    height: inherit;
    padding: 16px;
    background: var(--text-color);
    text-align: center;
    box-sizing: border-box;
}

@media only screen and (min-width: 768px) {
    body > header {
        position: fixed;
        top: 0;
        left: 0;
        height: 100vh;
        min-height: 100vh;
        width: 320px;
        overflow-y: auto;
    }
}

body > header a {
    transition: all 0.33s ease-out;
}

body > header a,
body > header a:visited,
body > header a:hover {
    text-decoration: none;
    color: var(--gray-light);
}

body > header a:hover {
    text-shadow: 0 0 8px --focus;
}

body > header h1 {
    display: inline-block;
    margin: 0;
    font-size: 32px;
    font-weight: 600;
    color: var(--gray-light);
    padding: 0;
}

@media only screen and (min-width: 768px) {
    body > header h1 {
        padding: 12px 0 0 0;
    }
}

body > header .logo {
    margin: 12px auto 4px;
    display: none;
}

body > header .logo a {
    display: block;
    width: 100%;
    height: 100%;
}

@media only screen and (min-width: 768px) {
    body > header .logo {
        display: inherit;
    }
}

/* Site logo component styles */
.site-logo {
    text-align: center;
    margin-bottom: 0;
}

.site-logo .logo-image {
    display: block;
    margin: 0 auto;
    width: 160px;
    height: auto;
    transition: transform 0.2s ease-out;
}

.site-logo .logo-image:hover {
    transform: scale(1.05);
}

/* Mobile: hide logo to save space */
@media only screen and (max-width: 767px) {
    .site-logo {
        display: none;
    }
}

/* Tablet and desktop: show logo */
@media only screen and (min-width: 768px) {
    .site-logo {
        display: block;
    }
}

body > header form .search {
    font-family: var(--heading-font);
    background: rgba(255, 255, 255, 0.08);
    border: 1px solid rgba(255, 255, 255, 0.15);
    border-radius: 3px;
    font-size: 13px;
    font-weight: 400;
    padding: 7px 10px;
    width: 200px;
    color: var(--gray-light);
    transition: border-color 0.2s ease, background-color 0.2s ease;
}

body > header form .search:hover {
    border-color: rgba(255, 255, 255, 0.3);
}

body > header form .search:focus {
    background: rgba(255, 255, 255, 0.12);
    border-color: var(--focus);
    outline: none;
}

body > header form ::placeholder {
    color: rgba(255, 255, 255, 0.4);
}

body > header ul#personal-links {
    font-size: 18px;
    display: none;
    margin: 20px auto 0 auto;
}

body > header ul#personal-links li {
    float: left;
    list-style-type: none;
    padding: 0;
    margin: 0 8px;
}

@media only screen and (min-width: 768px) {
    body > header ul#personal-links {
        display: inline-block;
    }
}

/* Enhanced Social Links with Text Labels */
.social-link {
    position: relative;
    display: inline-flex;
    align-items: center;
    gap: 0.3em;
    padding: 0.2em 0.4em;
    border-radius: 0.25em;
    transition: background-color 0.2s ease;
    text-decoration: none;
}

.social-link:hover,
.social-link:focus {
    background-color: rgba(0, 0, 0, 0.05);
    outline: 2px solid var(--focus);
    outline-offset: 2px;
}

.social-link-text {
    position: absolute;
    width: 1px;
    height: 1px;
    padding: 0;
    margin: -1px;
    overflow: hidden;
    clip: rect(0, 0, 0, 0);
    white-space: nowrap;
    border: 0;
}

.social-link:hover .social-link-text,
.social-link:focus .social-link-text {
    position: absolute;
    width: auto;
    height: auto;
    padding: 0.25em 0.5em;
    margin: 0;
    overflow: visible;
    clip: auto;
    white-space: nowrap;
    font-size: 0.85em;
    font-weight: 500;
    background-color: rgba(0, 0, 0, 0.9);
    color: white;
    border-radius: 0.25em;
    bottom: 100%;
    left: 50%;
    transform: translateX(-50%) translateY(-0.5em);
    pointer-events: none;
    z-index: 10;
    opacity: 0;
    animation: tooltip-fade-in 0.2s ease-in-out forwards;
}

@keyframes tooltip-fade-in {
    from {
        opacity: 0;
        transform: translateX(-50%) translateY(-0.2em);
    }
    to {
        opacity: 1;
        transform: translateX(-50%) translateY(-0.5em);
    }
}

@media (prefers-reduced-motion: reduce) {
    .social-link {
        transition: none;
    }
}

.social-links.show-labels .social-link-text {
    position: static;
    width: auto;
    height: auto;
    padding: 0;
    margin: 0;
    overflow: visible;
    clip: auto;
    white-space: normal;
    font-size: 0.9em;
}

@media (prefers-contrast: high) {
    .social-link:hover,
    .social-link:focus {
        background-color: var(--text-color);
        color: var(--background-color);
    }

    .social-link:hover .icon,
    .social-link:focus .icon {
        fill: var(--background-color);
    }

    .social-link:hover .social-link-text,
    .social-link:focus .social-link-text {
        background-color: var(--text-color);
        color: var(--background-color);
        border: 1px solid var(--background-color);
    }
}

body > header > nav {
    margin: 16px 0;
    text-transform: uppercase;
    letter-spacing: 0.08em;
}

body > header > nav ul {
    display: inline-block;
    margin: 0 auto;
}

body > header > nav ul li {
    list-style-type: none;
    float: left;
    color: #777;
    font-weight: 500;
    font-size: 13px;
    padding: 0 6px 0 0;
}

body > header > nav ul li a {
    padding: 0 0 0 3px;
    font-size: 13px;
    text-decoration: none;
}

body > header > nav ul li:before {
    content: '\00b7';
    color: #777;
    font-weight: 500;
    font-size: 13px;
}

body > header > nav ul li:first-child:before {
    content: none;
}

article {
    padding-top: 1em;
}

article header {
    position: relative;
    padding-top: 2em;
    padding-bottom: 1em;
    margin-bottom: 1em;
    background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC')
        bottom left repeat-x;
}

article header.post {
    padding-top: 0;
    padding-bottom: 1em;
}

article header.post .post-date {
    display: block;
    font-family: var(--heading-font);
    font-size: 0.85em;
    color: #888;
    letter-spacing: 0.05em;
    margin-top: 0.4em;
}

article header.archive {
    padding-top: 0;
    padding-bottom: 0;
}

article header h1 {
    margin: 0;
}

article header h1 a {
    text-decoration: none;
}

article header h1 a:hover {
    text-decoration: underline;
}

article header p {
    font-size: 0.9em;
    color: #666;
    margin: 0;
}

article header p.meta {
    text-transform: uppercase;
    letter-spacing: 0.05em;
    font-variant-numeric: tabular-nums lining-nums;
    position: absolute;
    top: 0;
}

@media only screen and (min-width: 768px) {
    article header {
        margin-bottom: 1.5em;
        padding-bottom: 1em;
        background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC')
            bottom left repeat-x;
    }

    article header {
        padding-bottom: 0;
    }
}

article h2 {
    padding-top: 1.2em;
    margin-top: 1.2em;
    position: relative;
}

article .entry-content h2::before {
    content: '';
    display: block;
    width: 3em;
    height: 2px;
    background: var(--secondary-color);
    margin-bottom: 0.8em;
}

.entry-content article h2:first-child,
article header + h2 {
    padding-top: 0;
}

article h2:first-child,
article header + h2 {
    background: none;
    margin-top: 0;
}

article .feature {
    padding-top: 0.5em;
    margin-bottom: 1em;
    padding-bottom: 1em;
    background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC')
        bottom left repeat-x;
    font-size: 2em;
    font-style: italic;
    line-height: 1.3em;
}

article img,
article video,
article .flash-video {
    border-radius: 1px;
    box-shadow: rgba(0, 0, 0, 0.15) 0 1px 4px;
    box-sizing: border-box;
    border: rgb(255, 255, 255) 0.5em solid;
}

article figure {
    margin: 0 0 1.5em;
}

article figure img {
    margin-bottom: 0;
}

article figure figcaption {
    font-family: var(--heading-font);
    font-size: 0.75em;
    font-style: italic;
    color: #888;
    line-height: 1.4em;
    margin-top: 0.4em;
    text-align: center;
}

article figure.narrow {
    max-width: 480px;
    margin-left: auto;
    margin-right: auto;
}

article video,
article .flash-video {
    margin: 0 auto 1.5em;
}

article video {
    display: block;
    width: 100%;
}

article .flash-video > div {
    position: relative;
    display: block;
    padding-bottom: 56.25%;
    padding-top: 1px;
    height: 0;
    overflow: hidden;
}

article .flash-video > div iframe,
article .flash-video > div object,
article .flash-video > div embed {
    position: absolute;
    top: 0;
    left: 0;
    width: 100%;
    height: 100%;
}

article > footer.main {
    padding-bottom: 2.5em;
    margin-top: 2em;
}

article > footer.post {
    margin-top: 2em;
}

article > footer p.meta {
    margin-bottom: 0.8em;
    font-size: 0.85em;
    clear: both;
    overflow: hidden;
}

.blog-index article + article {
    padding-top: 3em;
    position: relative;
    margin-top: 1.5em;
}

.blog-index article + article::before {
    content: '';
    display: block;
    width: 4em;
    height: 1px;
    background: var(--gray-light);
    position: absolute;
    top: 0;
    left: 0;
}

#content .blog-index {
    padding-top: 0;
    padding-bottom: 0;
}

#content .blog-index article {
    padding-top: 2em;
}

#content .blog-index article header {
    background: none;
    padding-bottom: 0;
    padding-top: 0;
    margin-bottom: 0;
}

#content .blog-index article header .post-date {
    display: block;
    font-family: var(--heading-font);
    font-size: 0.8em;
    color: #888;
    letter-spacing: 0.05em;
    margin-bottom: 0.3em;
}

#content .blog-index article h1 {
    font-size: 2.2em;
}

#content .blog-index article h1 a {
    color: #3e6d98;
}

#content .blog-index article h1 a:hover {
    color: #3e6d98;
}

#content .blog-index a[rel='full-article'] {
    background: rgb(235, 235, 235);
    display: inline-block;
    padding: 8px 16px 6px 16px;
    margin-right: 0.5em;
    text-decoration: none;
    color: rgb(110, 110, 110);
    border-radius: 1px;
    transition: background-color 0.5s;
}

#content .blog-index a[rel='full-article']:hover {
    background: var(--primary-color);
    text-shadow: none;
    color: var(--gray-lighter);
}

#content .blog-index footer {
    margin-top: 1em;
    display: flex;
    align-items: center;
    flex-wrap: wrap;
    gap: 0.5em;
}

/* Homepage post tag pills */
.post-tags {
    display: inline-flex;
    flex-wrap: wrap;
    gap: 0.35em;
}

.post-tag {
    display: inline-block;
    font-size: 0.78em;
    padding: 0.15em 0.55em;
    background: var(--gray-lighter, #eee);
    color: var(--gray-medium);
    border-radius: 3px;
    text-decoration: none;
    transition: background-color 0.3s, color 0.3s;
    letter-spacing: 0.02em;
    font-variant-numeric: lining-nums;
}

.post-tag:hover {
    background: var(--primary-color);
    color: white;
    text-decoration: none;
}

.separator,
article > footer .byline + time:before,
article > footer time + time:before,
article > footer .comments:before,
article > footer .byline ~ .categories:before {
    content: '\2022 ';
    padding: 0 0.4em 0 0.2em;
    display: inline-block;
}

#content div.pagination {
    text-align: center;
    font-size: 0.95em;
    position: relative;
    background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC')
        top left repeat-x;
    padding-top: 1.5em;
    padding-bottom: 1.5em;
}

#content div.pagination a {
    text-decoration: none;
    color: #aaa;
}

#content div.pagination a.prev {
    position: absolute;
    left: 0;
}

#content div.pagination a.next {
    position: absolute;
    right: 0;
}

#content div.pagination a:hover {
    color: var(--link-hover);
}

#content div.pagination a[href*='archive']:before,
#content div.pagination a[href*='archive']:after {
    content: '\2014';
    padding: 0 0.3em;
}

p.meta + .sharing {
    padding-top: 1em;
    padding-left: 0;
    background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC')
        top left repeat-x;
}

#fb-root {
    display: none;
}

.highlight,
html .gist .gist-file .gist-syntax .gist-highlight {
    border: 1px solid rgb(5, 35, 43) !important;
}

.highlight table td.code,
html .gist .gist-file .gist-syntax .gist-highlight table td.code {
    width: 100%;
}

.highlight .line-numbers,
html .gist .gist-file .gist-syntax .highlight .line_numbers {
    text-align: right;
    font-size: 13px;
    line-height: 1.45em;
    background: rgb(7, 54, 66) !important;
    border-right: 1px solid rgb(0, 35, 44) !important;
    box-shadow: rgb(8, 62, 75) -1px 0 inset;
    text-shadow: rgb(2, 16, 20) 0 -1px;
    padding: 0.8em !important;
    border-radius: 0;
}

.highlight .line-numbers span,
html .gist .gist-file .gist-syntax .highlight .line_numbers span {
    color: #586e75 !important;
}

figure.code,
.gist-file,
pre {
    box-shadow: rgba(0, 0, 0, 0.06) 0 0 10px;
}

figure.code .highlight pre,
.gist-file .highlight pre,
pre .highlight pre {
    box-shadow: none;
}

.gist .highlight *::selection,
figure.code .highlight *::selection {
    background: rgb(56, 103, 116);
    color: inherit;
    text-shadow: rgb(0, 43, 54) 0 1px;
}

html .gist .gist-file {
    margin-bottom: 1.8em;
    position: relative;
    border: none;
    padding-top: 26px !important;
}

html .gist .gist-file .highlight {
    margin-bottom: 0;
}

html .gist .gist-file .gist-syntax {
    border-bottom: 0 !important;
    background: none !important;
}

html .gist .gist-file .gist-syntax .gist-highlight {
    background: rgb(0, 43, 54) !important;
}

html .gist .gist-file .gist-syntax .highlight pre {
    padding: 0;
}

html .gist .gist-file .gist-meta {
    padding: 0.6em 0.8em;
    border: 1px solid #083e4b !important;
    color: rgb(88, 110, 117);
    font-size: 0.7em !important;
    background: #073642;
    line-height: 1.5em;
}

html .gist .gist-file .gist-meta a {
    color: rgb(117, 135, 139) !important;
    text-decoration: none;
}

html .gist .gist-file .gist-meta a:hover {
    text-decoration: underline;
}

html .gist .gist-file .gist-meta a:hover {
    color: rgb(147, 161, 161) !important;
}

html .gist .gist-file .gist-meta a[href*='#file'] {
    position: absolute;
    top: 0;
    left: 0;
    right: -10px;
    color: rgb(71, 71, 71) !important;
}

html .gist .gist-file .gist-meta a[href*='#file']:hover {
    color: rgb(62, 109, 152) !important;
}

html .gist .gist-file .gist-meta a[href*='raw'] {
    top: var(--spacing-xs);
}

pre {
    background: #002b36;
    border-radius: 1px;
    border: 1px solid #05232b;
    line-height: 1.45em;
    font-size: 13px;
    margin-bottom: var(--spacing-xl);
    padding: var(--spacing-sm) var(--spacing-md);
    color: #93a1a1;
    overflow: auto;
}

h3.filename + pre {
    border-top-left-radius: 0;
    border-top-right-radius: 0;
}

p code,
li code {
    display: inline-block;
    white-space: nowrap;
    background: rgb(255, 255, 255);
    font-size: 0.8em;
    line-height: 1.5em;
    color: #555;
    border: 1px solid rgb(221, 221, 221);
    border-radius: 1px;
    padding: 0 var(--spacing-xs);
    margin: -1px 0;
}

p pre code,
li pre code {
    font-size: 1em !important;
    background: none;
    border: none;
}

.pre-code,
html .gist .gist-file .gist-syntax .highlight pre,
.highlight code {
    font-family: var(--code-font) !important;
    overflow: scroll;
    overflow-y: hidden;
    display: block;
    padding: var(--spacing-sm);
    overflow-x: auto;
    line-height: 1.45em;
    background: #002b36 !important;
    color: #93a1a1 !important;
}

.pre-code span,
html .gist .gist-file .gist-syntax .highlight pre span,
.highlight code span {
    color: #93a1a1 !important;
}

.pre-code span,
html .gist .gist-file .gist-syntax .highlight pre span,
.highlight code span {
    font-style: normal !important;
    font-weight: normal !important;
}

.pre-code .c,
html .gist .gist-file .gist-syntax .highlight pre .c,
.highlight code .c {
    color: #586e75 !important;
    font-style: italic !important;
}

.pre-code .cm,
html .gist .gist-file .gist-syntax .highlight pre .cm,
.highlight code .cm {
    color: #586e75 !important;
    font-style: italic !important;
}

.pre-code .cp,
html .gist .gist-file .gist-syntax .highlight pre .cp,
.highlight code .cp {
    color: #586e75 !important;
    font-style: italic !important;
}

.pre-code .c1,
html .gist .gist-file .gist-syntax .highlight pre .c1,
.highlight code .c1 {
    color: #586e75 !important;
    font-style: italic !important;
}

.pre-code .cs,
html .gist .gist-file .gist-syntax .highlight pre .cs,
.highlight code .cs {
    color: #586e75 !important;
    font-weight: bold !important;
    font-style: italic !important;
}

.pre-code .err,
html .gist .gist-file .gist-syntax .highlight pre .err,
.highlight code .err {
    color: #dc322f !important;
    background: none !important;
}

.pre-code .k,
html .gist .gist-file .gist-syntax .highlight pre .k,
.highlight code .k {
    color: #cb4b16 !important;
}

.pre-code .o,
html .gist .gist-file .gist-syntax .highlight pre .o,
.highlight code .o {
    color: #93a1a1 !important;
    font-weight: bold !important;
}

.pre-code .p,
html .gist .gist-file .gist-syntax .highlight pre .p,
.highlight code .p {
    color: #93a1a1 !important;
}

.pre-code .ow,
html .gist .gist-file .gist-syntax .highlight pre .ow,
.highlight code .ow {
    color: #2aa198 !important;
    font-weight: bold !important;
}

.pre-code .gd,
html .gist .gist-file .gist-syntax .highlight pre .gd,
.highlight code .gd {
    color: #93a1a1 !important;
    background-color: #372c34 !important;
    display: inline-block;
}

.pre-code .gd .x,
html .gist .gist-file .gist-syntax .highlight pre .gd .x,
.highlight code .gd .x {
    color: #93a1a1 !important;
    background-color: #4d2d33 !important;
    display: inline-block;
}

.pre-code .ge,
html .gist .gist-file .gist-syntax .highlight pre .ge,
.highlight code .ge {
    color: #93a1a1 !important;
    font-style: italic !important;
}

.pre-code .gh,
html .gist .gist-file .gist-syntax .highlight pre .gh,
.highlight code .gh {
    color: #586e75 !important;
}

.pre-code .gi,
html .gist .gist-file .gist-syntax .highlight pre .gi,
.highlight code .gi {
    color: #93a1a1 !important;
    background-color: #1a412b !important;
    display: inline-block;
}

.pre-code .gi .x,
html .gist .gist-file .gist-syntax .highlight pre .gi .x,
.highlight code .gi .x {
    color: #93a1a1 !important;
    background-color: #355720 !important;
    display: inline-block;
}

.pre-code .gs,
html .gist .gist-file .gist-syntax .highlight pre .gs,
.highlight code .gs {
    color: #93a1a1 !important;
    font-weight: bold !important;
}

.pre-code .gu,
html .gist .gist-file .gist-syntax .highlight pre .gu,
.highlight code .gu {
    color: #6c71c4 !important;
}

.pre-code .kc,
html .gist .gist-file .gist-syntax .highlight pre .kc,
.highlight code .kc {
    color: #859900 !important;
    font-weight: bold !important;
}

.pre-code .kd,
html .gist .gist-file .gist-syntax .highlight pre .kd,
.highlight code .kd {
    color: #268bd2 !important;
}

.pre-code .kp,
html .gist .gist-file .gist-syntax .highlight pre .kp,
.highlight code .kp {
    color: #cb4b16 !important;
    font-weight: bold !important;
}

.pre-code .kr,
html .gist .gist-file .gist-syntax .highlight pre .kr,
.highlight code .kr {
    color: #d33682 !important;
    font-weight: bold !important;
}

.pre-code .kt,
html .gist .gist-file .gist-syntax .highlight pre .kt,
.highlight code .kt {
    color: #2aa198 !important;
}

.pre-code .n,
html .gist .gist-file .gist-syntax .highlight pre .n,
.highlight code .n {
    color: #268bd2 !important;
}

.pre-code .na,
html .gist .gist-file .gist-syntax .highlight pre .na,
.highlight code .na {
    color: #268bd2 !important;
}

.pre-code .nb,
html .gist .gist-file .gist-syntax .highlight pre .nb,
.highlight code .nb {
    color: #859900 !important;
}

.pre-code .nc,
html .gist .gist-file .gist-syntax .highlight pre .nc,
.highlight code .nc {
    color: #d33682 !important;
}

.pre-code .no,
html .gist .gist-file .gist-syntax .highlight pre .no,
.highlight code .no {
    color: #b58900 !important;
}

.pre-code .nl,
html .gist .gist-file .gist-syntax .highlight pre .nl,
.highlight code .nl {
    color: #859900 !important;
}

.pre-code .ne,
html .gist .gist-file .gist-syntax .highlight pre .ne,
.highlight code .ne {
    color: #268bd2 !important;
    font-weight: bold !important;
}

.pre-code .nf,
html .gist .gist-file .gist-syntax .highlight pre .nf,
.highlight code .nf {
    color: #268bd2 !important;
    font-weight: bold !important;
}

.pre-code .nn,
html .gist .gist-file .gist-syntax .highlight pre .nn,
.highlight code .nn {
    color: #b58900 !important;
}

.pre-code .nt,
html .gist .gist-file .gist-syntax .highlight pre .nt,
.highlight code .nt {
    color: #268bd2 !important;
    font-weight: bold !important;
}

.pre-code .nx,
html .gist .gist-file .gist-syntax .highlight pre .nx,
.highlight code .nx {
    color: #b58900 !important;
}

.pre-code .vg,
html .gist .gist-file .gist-syntax .highlight pre .vg,
.highlight code .vg {
    color: #268bd2 !important;
}

.pre-code .vi,
html .gist .gist-file .gist-syntax .highlight pre .vi,
.highlight code .vi {
    color: #268bd2 !important;
}

.pre-code .nv,
html .gist .gist-file .gist-syntax .highlight pre .nv,
.highlight code .nv {
    color: #268bd2 !important;
}

.pre-code .mf,
html .gist .gist-file .gist-syntax .highlight pre .mf,
.highlight code .mf {
    color: #2aa198 !important;
}

.pre-code .m,
html .gist .gist-file .gist-syntax .highlight pre .m,
.highlight code .m {
    color: #2aa198 !important;
}

.pre-code .mh,
html .gist .gist-file .gist-syntax .highlight pre .mh,
.highlight code .mh {
    color: #2aa198 !important;
}

.pre-code .mi,
html .gist .gist-file .gist-syntax .highlight pre .mi,
.highlight code .mi {
    color: #2aa198 !important;
}

.pre-code .s,
html .gist .gist-file .gist-syntax .highlight pre .s,
.highlight code .s {
    color: #2aa198 !important;
}

.pre-code .sd,
html .gist .gist-file .gist-syntax .highlight pre .sd,
.highlight code .sd {
    color: #2aa198 !important;
}

.pre-code .s2,
html .gist .gist-file .gist-syntax .highlight pre .s2,
.highlight code .s2 {
    color: #2aa198 !important;
}

.pre-code .se,
html .gist .gist-file .gist-syntax .highlight pre .se,
.highlight code .se {
    color: #dc322f !important;
}

.pre-code .si,
html .gist .gist-file .gist-syntax .highlight pre .si,
.highlight code .si {
    color: #268bd2 !important;
}

.pre-code .sr,
html .gist .gist-file .gist-syntax .highlight pre .sr,
.highlight code .sr {
    color: #2aa198 !important;
}

.pre-code .s1,
html .gist .gist-file .gist-syntax .highlight pre .s1,
.highlight code .s1 {
    color: #2aa198 !important;
}

.pre-code div .gd,
html .gist .gist-file .gist-syntax .highlight pre div .gd,
.highlight code div .gd,
.pre-code div .gd .x,
html .gist .gist-file .gist-syntax .highlight pre div .gd .x,
.highlight code div .gd .x,
.pre-code div .gi,
html .gist .gist-file .gist-syntax .highlight pre div .gi,
.highlight code div .gi,
.pre-code div .gi .x,
html .gist .gist-file .gist-syntax .highlight pre div .gi .x,
.highlight code div .gi .x {
    display: inline-block;
    width: 100%;
}

.highlight,
.gist-highlight {
    margin-bottom: 1.8em;
    background: #002b36;
    overflow-y: hidden;
    overflow-x: auto;
}

.highlight pre,
.gist-highlight pre {
    background: none;
    border-radius: 0;
    border: none;
    padding: 0;
    margin-bottom: 0;
}

pre,
.highlight,
.gist-highlight {
    scrollbar-width: thin;
    scrollbar-color: rgba(255, 255, 255, 0.2) rgba(255, 255, 255, 0.15);
}

.highlight code {
    background: rgb(0, 0, 0);
}

figure.code {
    background: none;
    padding: 0;
    border: 0;
    margin-bottom: var(--spacing-xl);
}

figure.code pre {
    margin-bottom: 0;
}

figure.code figcaption {
    position: relative;
}

figure.code .highlight {
    margin-bottom: 0;
}

.code-title,
html .gist .gist-file .gist-meta a[href*='#file'],
h3.filename,
figure.code figcaption {
    text-align: center;
    font-size: 16px;
    line-height: 2em;
    text-shadow: #cbcccc 0 1px 0;
    color: #474747;
    font-weight: normal;
    margin-bottom: 0;
    font-family: 'nimbus-sans', sans-serif;
    background: #aaaaaa top repeat-x;
    border: 1px solid #a5a5a5;
    border-top-color: #cbcbcb;
    border-bottom: 0 #565656;
}

.download-source,
html .gist .gist-file .gist-meta a[href*='raw'],
figure.code figcaption a {
    position: absolute;
    right: var(--spacing-md);
    text-decoration: none;
    color: #666 !important;
    z-index: 1;
    font-size: 13px;
    text-shadow: #cbcccc 0 1px 0;
    padding-left: 3em;
}

.download-source:hover,
html .gist .gist-file .gist-meta a[href*='raw']:hover,
figure.code figcaption a:hover {
    text-decoration: underline;
}

#archive #content > div,
#archive #content > div > article {
    padding-top: 0;
}

#blog-archives {
    color: #aaa;
}

#blog-archives article {
    padding: var(--spacing-md) 0 var(--spacing-md);
    position: relative;
    background: url('data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAACgAAAABCAYAAACsXeyTAAAACXBIWXMAAAsTAAALEwEAmpwYAAAAFUlEQVQIHWNIS0sr/v//PwMMDzY+ADqMahlW4J91AAAAAElFTkSuQmCC')
        bottom left repeat-x;
}

#blog-archives article:last-child {
    background: none;
}

#blog-archives article footer {
    padding: 0;
    margin: 0;
}

#blog-archives h1 {
    color: #333;
    margin-bottom: var(--spacing-xs);
}

#blog-archives h2 {
    display: none;
}

#blog-archives h1 {
    font-size: 1.2em;
}

#blog-archives h1 a {
    text-decoration: none;
    color: inherit;
    font-weight: normal;
    display: inline-block;
}

#blog-archives h1 a:hover {
    text-decoration: underline;
    color: #8ba7c1;
}

#blog-archives time {
    top: 17px;
}

#blog-archives h2:first-child {
    padding-top: 19px;
}

#blog-archives a.category,
#blog-archives time {
    color: #aaa;
}

#blog-archives .entry-content {
    display: none;
}

#blog-archives time {
    font-size: 1em;
    font-variant-numeric: tabular-nums lining-nums;
}

#blog-archives time .month,
#blog-archives time .day {
    display: inline-block;
}

#blog-archives time .month {
    text-transform: uppercase;
    letter-spacing: 0.05em;
}

#blog-archives p {
    margin-bottom: var(--spacing-md);
}

#blog-archives a,
#blog-archives .entry-content a {
    color: inherit;
}

#blog-archives a:hover,
#blog-archives .entry-content a:hover {
    color: var(--link-hover);
}

@media only screen and (max-width: 768px) {
    .archive-title h1 {
        font-size: 24pt;
        line-height: 1.2em;
    }

    .entry-title h1 {
        font-size: 1.8em;
        line-height: 1.2em;
    }

}

@media only screen and (min-width: 550px) {
    #blog-archives article {
        margin-left: 5em;
        padding-left: 4.5em;
        padding-bottom: 0.7em;
    }

    #blog-archives h2 {
        margin-bottom: var(--spacing-xs);
        font-weight: normal;
        display: inline-block;
        position: relative;
        top: -1px;
    }

    #blog-archives h2:first-child {
        padding-top: 0.75em;
    }

    #blog-archives time {
        position: absolute;
        text-align: right;
        left: 0;
    }

    #blog-archives .year {
        display: none;
    }

    #blog-archives a.category {
        line-height: 1.1em;
    }
}

#content > .category article {
    margin-left: 0;
    padding-left: 6.8em;
}

#content > .category .year {
    display: inline;
}

.aligncenter {
    display: block;
    margin: 20px auto;
    text-align: center;
}

.alignleft {
    float: left;
    margin: 10px;
}

.alignright {
    float: right;
    margin: 10px;
}

.textcenter {
    text-align: center;
}

.caption {
    font-size: 0.7em;
    color: #666;
}

.caption img {
    margin-bottom: -7px;
}

.screen-reader-text {
    position: absolute;
    top: -9999px;
    left: -9999px;
}

textarea:focus,
input:focus {
    outline: none;
}

.hide {
    display: none;
}

ul,
ol {
    margin: 10px 0 15px 2em;
}

blockquote {
    margin: 30px;
}

/* =====================================================
   LAYOUT
   - html background matches sidebar dark color so it
     bleeds flush to the left viewport edge at any width
   - body is full viewport width, no centering
   - Fixed 320px sidebar pinned top-left
   - #main fills remaining viewport width after sidebar
   - Content wrapper (div/article inside #content) is
     centered with max-width for comfortable reading
   ===================================================== */

html {
    background: var(--text-color);
}

body {
    background-color: var(--gray-lighter);
}
@media only screen and (min-width: 768px) {
    #main {
        margin-left: 320px;
        min-height: 100vh;
    }

    #content > div,
    #content > article {
        max-width: 960px;
        margin-left: auto;
        margin-right: auto;
        padding-left: 1.5em;
        padding-right: 1.5em;
        box-sizing: border-box;
    }
}

@media only screen and (min-width: 768px) {
    #content > div,
    #content > article {
        padding-top: 2.75em;
    }
}

.archives-link {
    margin: 0.9em 0 0;
    padding: 0 16px 16px 0;
}

@media only screen and (min-width: 768px) {
    .archives-link {
        margin-top: 1.25em;
    }
}

.archives-link h2 {
    margin: 0 16px 0 0;
    padding: 0;
    text-align: right;
}

.archives-link h2 a,
.archives-link h2 a:hover {
    text-decoration: none;
}

article.hentry .entry-content hr {
    margin: 8px 0;
    background: var(--gray-light);
    height: 1px;
    border: solid 0;
}

figure.code {
    box-shadow: rgba(0, 0, 0, 0.15) 0 1px 4px;
}

/* Tag Cloud Styles - Base (mobile-first) */
.tagcloud {
    display: flex;
    flex-wrap: wrap;
    gap: 0.5em;
    line-height: 1.8;
}

.tagcloud .tagcloud-tag {
    display: inline-block;
}

.tagcloud .tagcloud-tag a {
    display: inline-block;
    padding: 0.3em 0.7em;
    background-color: var(--gray-lighter);
    border-radius: 4px;
    text-decoration: none;
    color: var(--text-color);
    transition: background-color 0.2s ease, color 0.2s ease;
}

.tagcloud .tagcloud-tag a:hover {
    background-color: var(--primary-color);
    color: white;
}

.tagcloud .tagcloud-tag-s a {
    font-size: 0.85em;
}

.tagcloud .tagcloud-tag-m a {
    font-size: 1em;
}

.tagcloud .tagcloud-tag-l a {
    font-size: 1.15em;
}

.tagcloud .tagcloud-tag-xl a {
    font-size: 1.35em;
    font-weight: 500;
}

@media only screen and (min-width: 768px) {
    .tagcloud {
        gap: 0.6em;
    }

    .tagcloud .tagcloud-tag a {
        padding: 0.4em 0.9em;
    }

    .tagcloud .tagcloud-tag-s a {
        font-size: 0.9em;
    }

    .tagcloud .tagcloud-tag-m a {
        font-size: 1.05em;
    }

    .tagcloud .tagcloud-tag-l a {
        font-size: 1.25em;
    }

    .tagcloud .tagcloud-tag-xl a {
        font-size: 1.5em;
    }
}
