/*
 * DME
 *
 * Copyright (c) 2026 Daniel Meier.
 * Released under the MIT License. See LICENSE.md.
 */


/*
 * Contents
 *
 * Global resets
 * Masthead
 * Sidebar
 * Slide effect
 * Posts and pages
 * Pagination
 * Reverse layout
 * Themes
 */


/*
 * Global resets
 *
 * Update the foundational and global aspects of the page.
 */

/* Prevent scroll on narrow devices */
.rounded-image {
  border-radius: 50%;
}

.read-more {
  display: block;
  margin-top: 10px;
  color: #9A9A9A; /* Set the desired color */
  text-decoration: none;
  font-size: 15px;
}

html,
body {
  padding: 0;
  overflow-x: hidden;
}

html {
  font-family: "PT Serif", Georgia, "Times New Roman", serif;
}

h1, h2, h3, h4, h5, h6 {
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-weight: 400;
  color: #313131;
  letter-spacing: -.025rem;
}


/*
 * Wrapper
 *
 * The wrapper is used to position site content when the sidebar is toggled. We
 * use an outter wrap to position the sidebar without interferring with the
 * regular page content.
 */

.wrap {
  position: relative;
  width: 100%;
}


/*
 * Container
 *
 * Center the page content.
 */

.container {
  max-width: 28rem;
}
@media (min-width: 38em) {
  .container {
    max-width: 32rem;
  }
}
@media (min-width: 56em) {
  .container {
    max-width: 38rem;
  }
}


/*
 * Masthead
 *
 * Super small header above the content for site name and short description.
 */

html {
  --masthead-offset: 4.9rem;
}

.masthead {
  position: fixed;
  top: 0;
  width: 100%;
  min-height: 78px;
  z-index: 20;
  background: #fff;
  padding-top: .9rem;
  padding-bottom: .9rem;
  margin-bottom: 3rem;
  border-bottom: 1px solid #eee;
}
.wrap {
  padding-top: var(--masthead-offset);
}
.masthead-content {
  display: flex;
  align-items: flex-start;
  justify-content: space-between;
  gap: 1rem;
  background: #fff;
  -webkit-transition: -webkit-transform .3s ease-in-out;
          transition: transform .3s ease-in-out;
  -webkit-backface-visibility: hidden;
      -ms-backface-visibility: hidden;
          backface-visibility: hidden;
}
.masthead-brand {
  min-width: 0;
}
.masthead-title {
  margin-top: 0;
  margin-bottom: .2rem;
  color: #505050;
  font-size: 1.1rem;
  line-height: 1.1;
}
.masthead-title a {
  color: #2f3b46;
}
.masthead-tagline {
  display: block;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .7rem;
  font-weight: 400;
  color: #7d8a96;
  letter-spacing: .02em;
  line-height: 1.35;
}
.masthead-nav {
  display: flex;
  flex-wrap: wrap;
  justify-content: flex-end;
  gap: .6rem;
  padding-top: .1rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
}
.masthead-nav a {
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #7a8794;
}
.masthead-nav a:hover,
.masthead-nav a:focus {
  color: #3e4f5e;
  text-decoration: none;
}

@media (max-width: 48em) {
  .masthead {
    min-height: 96px;
  }
  .masthead-content {
    align-items: center;
    flex-direction: column;
    gap: .35rem;
  }
  .masthead-brand {
    text-align: center;
  }
  .masthead-title {
    margin-bottom: .15rem;
    text-align: center;
  }
  .masthead-tagline {
    display: block;
  }
  .masthead-nav {
    justify-content: center;
  }
}


/*
 * Sidebar
 *
 * The sidebar is the drawer, the item we are toggling with our handy hamburger
 * button in the corner of the page.
 *
 * This particular sidebar implementation was inspired by Chris Coyier's
 * "Offcanvas Menu with CSS Target" article, and the checkbox variation from the
 * comments by a reader. It modifies both implementations to continue using the
 * checkbox (no change in URL means no polluted browser history), but this uses
 * `position` for the menu to avoid some potential content reflow issues.
 *
 * Source: http://css-tricks.com/off-canvas-menu-with-css-target/#comment-207504
 */

/* Style and "hide" the sidebar */
.sidebar {
  position: fixed;
  top: 0;
  bottom: 0;
  left: -14rem;
  width: 14rem;
  visibility: hidden;
  overflow-y: auto;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .875rem; /* 15px */
  color: rgba(255,255,255,.6);
  background-color: #202020;
  -webkit-transition: all .3s ease-in-out;
          transition: all .3s ease-in-out;
}
@media (min-width: 30em) {
  .sidebar {
    font-size: .75rem; /* 14px */
  }
}

/* Sidebar content */
.sidebar a {
  font-weight: normal;
  color: #fff;
}
.sidebar-item {
  padding: 1rem;
}
.sidebar-item p:last-child {
  margin-bottom: 0;
}

/* Sidebar nav */
.sidebar-nav {
  border-bottom: 1px solid rgba(255,255,255,.1);
}
.sidebar-nav-item {
  display: block;
  padding: .5rem 1rem;
  border-top: 1px solid rgba(255,255,255,.1);
}
.sidebar-nav-item.active,
a.sidebar-nav-item:hover,
a.sidebar-nav-item:focus {
  text-decoration: none;
  background-color: rgba(255,255,255,.1);
  border-color: transparent;
}

@media (min-width: 48em) {
  .sidebar-item {
    padding: 1.5rem;
  }
  .sidebar-nav-item {
    padding-left:  1.5rem;
    padding-right: 1.5rem;
  }
}

/* Hide the sidebar checkbox that we toggle with `.sidebar-toggle` */
.sidebar-checkbox {
  position: absolute;
  opacity: 0;
  -webkit-user-select: none;
     -moz-user-select: none;
          user-select: none;
}

/* Style the `label` that we use to target the `.sidebar-checkbox` */
.sidebar-toggle {
  position: absolute;
  top:  .8rem;
  left: 1rem;
  z-index: 30;
  display: flex;
  align-items: center;
  padding: .25rem .75rem;
  color: #505050;
  background-color: #fff;
  border-radius: .25rem;
  cursor: pointer;
}

.sidebar-toggle::before {
  display: inline-block;
  width: 32px;
  height: 32px;
  content: "";
  background: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='%23555' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M2.5 11.5A.5.5 0 013 11h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5zm0-4A.5.5 0 013 7h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5zm0-4A.5.5 0 013 3h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5z' clip-rule='evenodd'/%3E%3C/svg%3E") no-repeat;
}

.sidebar-toggle:active,
#sidebar-checkbox:focus ~ .sidebar-toggle,
#sidebar-checkbox:checked ~ .sidebar-toggle {
  color: #fff;
  background-color: #555;
}

.sidebar-toggle:active:before,
#sidebar-checkbox:focus ~ .sidebar-toggle::before,
#sidebar-checkbox:checked ~ .sidebar-toggle::before {
  background: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='%23fff' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M2.5 11.5A.5.5 0 013 11h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5zm0-4A.5.5 0 013 7h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5zm0-4A.5.5 0 013 3h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5z' clip-rule='evenodd'/%3E%3C/svg%3E") no-repeat;
}

.scroll-top {
  position: fixed;
  right: 1rem;
  bottom: 1rem;
  z-index: 30;
  display: flex;
  flex-direction: column;
  align-items: center;
  gap: .05rem;
  min-width: 3.4rem;
  padding: .45rem .7rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .68rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #5e6f80;
  background: rgba(255,255,255,.96);
  border: 1px solid #dbe3ea;
  border-radius: 999px;
  box-shadow: 0 10px 22px rgba(15, 23, 42, .1);
  cursor: pointer;
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transition: opacity .2s ease, transform .2s ease, visibility .2s ease, color .2s ease, border-color .2s ease;
  transform: translateY(.4rem);
}

.scroll-top-label {
  display: block;
}

.scroll-top-progress {
  display: none;
  font-size: .58rem;
  font-weight: 400;
  letter-spacing: .04em;
  text-transform: none;
  color: #8391a0;
}

.scroll-top.has-progress .scroll-top-progress {
  display: block;
}

.scroll-top.is-visible {
  opacity: 1;
  visibility: visible;
  pointer-events: auto;
  transform: translateY(0);
}

.scroll-top:hover,
.scroll-top:focus {
  color: #324252;
  border-color: #c5d2df;
  text-decoration: none;
}

.code-block {
  position: relative;
  scroll-margin-top: calc(var(--masthead-offset) + 1rem);
}

.code-block-toolbar {
  position: absolute;
  top: .65rem;
  right: .65rem;
  display: flex;
  align-items: center;
  gap: .35rem;
  z-index: 2;
}

.code-copy-button {
  padding: .28rem .5rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #62758a;
  background: rgba(255,255,255,.92);
  border: 1px solid #dbe3ea;
  border-radius: 999px;
  box-shadow: 0 8px 18px rgba(15, 23, 42, .08);
  cursor: pointer;
  opacity: .18;
  transition: opacity .18s ease, color .18s ease, border-color .18s ease, background-color .18s ease;
}

.code-link-button,
.code-expand-button {
  padding: .28rem .5rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .62rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #62758a;
  background: rgba(255,255,255,.92);
  border: 1px solid #dbe3ea;
  border-radius: 999px;
  box-shadow: 0 8px 18px rgba(15, 23, 42, .08);
  cursor: pointer;
  text-decoration: none;
  opacity: .18;
  transition: opacity .18s ease, color .18s ease, border-color .18s ease, background-color .18s ease;
}

.code-block:hover .code-copy-button,
.code-block:hover .code-link-button,
.code-block:hover .code-expand-button,
.code-copy-button:focus,
.code-link-button:focus,
.code-expand-button:focus,
.code-copy-button.is-copied {
  opacity: 1;
}

.code-copy-button:hover,
.code-copy-button:focus,
.code-link-button:hover,
.code-link-button:focus,
.code-expand-button:hover,
.code-expand-button:focus {
  color: #324252;
  border-color: #c5d2df;
  text-decoration: none;
}

.code-copy-button.is-copied {
  color: #315b43;
  border-color: #b9d8c5;
  background: #eef8f1;
}

.code-overlay {
  position: fixed;
  inset: 0;
  z-index: 60;
}

.code-overlay-backdrop {
  position: absolute;
  inset: 0;
  background: rgba(15, 23, 42, .68);
  -webkit-backdrop-filter: blur(4px);
          backdrop-filter: blur(4px);
}

.code-overlay-panel {
  position: absolute;
  inset: 4vh 4vw;
  display: flex;
  flex-direction: column;
  border-radius: 18px;
  background: #0f1720;
  box-shadow: 0 20px 80px rgba(15, 23, 42, .45);
  overflow: hidden;
}

.code-overlay-toolbar {
  display: flex;
  justify-content: flex-end;
  gap: .5rem;
  padding: .85rem 1rem;
  background: rgba(255,255,255,.04);
  border-bottom: 1px solid rgba(255,255,255,.08);
}

.code-overlay-link,
.code-overlay-copy,
.code-overlay-close {
  padding: .35rem .75rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .74rem;
  font-weight: 700;
  letter-spacing: .06em;
  color: #f8fafc;
  background: rgba(255,255,255,.1);
  border: 0;
  border-radius: 999px;
  text-decoration: none;
}

.code-overlay-copy,
.code-overlay-close {
  cursor: pointer;
}

.code-overlay-link:hover,
.code-overlay-link:focus,
.code-overlay-copy:hover,
.code-overlay-copy:focus,
.code-overlay-close:hover,
.code-overlay-close:focus {
  background: rgba(255,255,255,.18);
  color: #fff;
}

.code-overlay-content {
  flex: 1;
  overflow: auto;
  padding: 0 1rem 1rem;
}

.code-overlay-content pre {
  margin: 0;
  min-height: 100%;
}

.has-code-overlay {
  overflow: hidden;
}

@media (hover: none) {
  .code-copy-button,
  .code-link-button,
  .code-expand-button {
    opacity: 1;
  }
}

@media (max-width: 48em) {
  .code-overlay-panel {
    inset: 1rem;
  }
}

@media (min-width: 30.1em) {
  .sidebar-toggle {
    position: fixed;
  }
}

@media print {
  .sidebar-toggle,
  .scroll-top {
    display: none;
  }
}

/* Slide effect
 *
 * Handle the sliding effects of the sidebar and content in one spot, seperate
 * from the default styles.
 *
 * As an a heads up, we don't use `transform: translate3d()` here because when
 * mixed with `position: fixed;` for the sidebar toggle, it creates a new
 * containing block. Put simply, the fixed sidebar toggle behaves like
 * `position: absolute;` when transformed.
 *
 * Read more about it at http://meyerweb.com/eric/thoughts/2011/09/12/.
 */

.wrap,
.sidebar,
.sidebar-toggle {
  -webkit-backface-visibility: hidden;
      -ms-backface-visibility: hidden;
          backface-visibility: hidden;
}
.wrap,
.sidebar-toggle {
  -webkit-transition: -webkit-transform .3s ease-in-out;
          transition: transform .3s ease-in-out;
}

#sidebar-checkbox:checked + .sidebar {
  z-index: 25;
  visibility: visible;
}
#sidebar-checkbox:checked ~ .masthead .masthead-content,
#sidebar-checkbox:checked ~ .sidebar,
#sidebar-checkbox:checked ~ .wrap,
#sidebar-checkbox:checked ~ .sidebar-toggle {
  -webkit-transform: translateX(14rem);
      -ms-transform: translateX(14rem);
          transform: translateX(14rem);
}


/*
 * Posts and pages
 *
 * Each post is wrapped in `.post` and is used on default and post layouts. Each
 * page is wrapped in `.page` and is only used on the page layout.
 */

.page,
.post {
  margin-bottom: 4em;
}

.about-page {
  margin-top: 1rem;
}

.about-hero,
.about-panel {
  margin-bottom: 1.5rem;
  padding: 1.35rem;
  background: #fff;
  border: 1px solid #e3e8ee;
  border-radius: .9rem;
  box-shadow: 0 12px 24px rgba(15, 23, 42, .05);
}

.about-hero {
  display: grid;
  gap: 1.2rem;
  background: linear-gradient(135deg, #f7f9fc 0%, #eef3f8 100%);
}

.about-hero-photo {
  display: flex;
  justify-content: center;
  align-items: center;
}

.about-hero-photo .rounded-image {
  width: 150px;
  height: 150px;
  border: 4px solid #fff;
  box-shadow: 0 12px 25px rgba(15, 23, 42, .12);
}

.about-kicker,
.about-section-kicker {
  margin-bottom: .35rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: #62758a;
}

.about-heading {
  margin-top: 0;
  margin-bottom: .75rem;
  font-size: 1.85rem;
}

.about-lede {
  margin-bottom: 1rem;
  color: #536271;
}

.about-skill-pills,
.topic-post-tags {
  display: flex;
  flex-wrap: wrap;
  gap: .45rem;
}

.about-skill-pills span {
  display: inline-block;
  padding: .3rem .65rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .74rem;
  font-weight: 700;
  color: #36536b;
  background: #e8f0f7;
  border-radius: 999px;
}

.about-panel h3,
.about-card h4 {
  margin-top: 0;
}

.about-panel p:last-child,
.about-card p:last-child,
.about-principle p:last-child {
  margin-bottom: 0;
}

.about-card-grid,
.about-principles {
  display: grid;
  gap: 1rem;
}

.about-card,
.about-principle {
  padding: 1rem;
  background: #f9fbfd;
  border: 1px solid #e4eaf0;
  border-radius: .8rem;
}

.about-card h4 {
  margin-bottom: .4rem;
  font-size: 1rem;
}

.about-card p,
.about-principle p {
  color: #53616e;
}

.about-principle strong {
  display: block;
  margin-bottom: .35rem;
}

.about-contact a {
  font-weight: 700;
}

.topics-page {
  margin-top: 1rem;
}

.topics-intro {
  margin-bottom: 2.5rem;
  padding: 1.5rem;
  background: linear-gradient(135deg, #f7f9fc 0%, #eef3f8 100%);
  border: 1px solid #dde5ee;
  border-radius: .75rem;
}

.topics-kicker {
  margin-bottom: .35rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .7rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: #5f6f82;
}

.topics-heading {
  margin-top: 0;
  margin-bottom: .75rem;
  font-size: 1.8rem;
}

.topics-lede {
  margin-bottom: 0;
  max-width: 32rem;
  color: #52606d;
}

.topics-grid {
  display: grid;
  gap: 1rem;
  margin-bottom: 3rem;
}

.topic-card {
  display: block;
  padding: 1.1rem 1.15rem;
  color: inherit;
  text-decoration: none;
  background: #fff;
  border: 1px solid #e3e8ee;
  border-radius: .85rem;
  box-shadow: 0 12px 24px rgba(15, 23, 42, .05);
  transition: transform .18s ease, box-shadow .18s ease, border-color .18s ease;
}

.topic-card:hover,
.topic-card:focus {
  text-decoration: none;
  border-color: #c5d2df;
  box-shadow: 0 18px 30px rgba(15, 23, 42, .09);
  transform: translateY(-2px);
}

.topic-card-count {
  display: inline-block;
  margin-bottom: .55rem;
  padding: .2rem .55rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .72rem;
  font-weight: 700;
  color: #36536b;
  background: #e8f0f7;
  border-radius: 999px;
}

.topic-card h3 {
  margin-top: 0;
  margin-bottom: .35rem;
  font-size: 1.1rem;
}

.topic-card p {
  margin-bottom: 0;
  font-size: .9rem;
  color: #607080;
}

.topics-section-list {
  display: grid;
  gap: 2.5rem;
}

.topic-section {
  scroll-margin-top: 6.5rem;
}

.topic-section-header {
  margin-bottom: 1rem;
}

.topic-section-count {
  margin-bottom: .3rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .78rem;
  font-weight: 700;
  letter-spacing: .08em;
  text-transform: uppercase;
  color: #6f7f91;
}

.topic-section-header h2 {
  margin-top: 0;
  margin-bottom: .35rem;
}

.topic-section-header p:last-child {
  margin-bottom: 0;
  color: #5c6c7a;
}

.topic-post-list {
  display: grid;
  gap: 1rem;
}

.topic-post-card {
  padding: 1.15rem 1.2rem;
  background: #fff;
  border: 1px solid #e6eaef;
  border-radius: .85rem;
}

.topic-post-meta {
  margin-bottom: .45rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .78rem;
  color: #738395;
}

.topic-post-card h3 {
  margin-top: 0;
  margin-bottom: .45rem;
  font-size: 1.12rem;
}

.topic-post-excerpt {
  margin-bottom: .7rem;
  color: #53616e;
}

.topic-post-tags {
  margin-bottom: 0;
}

.topic-post-tags span {
  display: inline-block;
  margin: 0 .4rem .35rem 0;
  padding: .2rem .5rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .72rem;
  color: #55697d;
  background: #f3f6f9;
  border-radius: 999px;
}

@media (min-width: 42em) {
  .about-hero {
    grid-template-columns: 170px minmax(0, 1fr);
    align-items: center;
  }

  .about-card-grid,
  .about-principles {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .topics-grid {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }
}

.search-page {
  display: grid;
  gap: 1.3rem;
}

.search-intro,
.search-shell,
.search-result {
  background: linear-gradient(180deg, #ffffff 0%, #fbfcfd 100%);
  border: 1px solid #e7edf2;
  border-radius: 18px;
  box-shadow: 0 14px 35px rgba(15, 23, 42, .04);
}

.search-intro,
.search-shell {
  padding: 1.2rem 1.25rem;
}

.search-kicker {
  margin: 0 0 .35rem;
  font-size: .72rem;
  font-weight: 700;
  letter-spacing: .12em;
  text-transform: uppercase;
  color: #7c8b98;
}

.search-heading {
  margin: 0 0 .45rem;
}

.search-lede {
  margin: 0;
  color: #66727e;
}

.search-label {
  display: block;
  margin-bottom: .55rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .8rem;
  font-weight: 700;
  letter-spacing: .06em;
  text-transform: uppercase;
  color: #526272;
}

.search-input {
  width: 100%;
  padding: .95rem 1rem;
  border: 1px solid #cfd9e2;
  border-radius: 12px;
  background: #fff;
  color: #23313f;
  font: inherit;
  box-sizing: border-box;
}

.search-input:focus {
  outline: none;
  border-color: #7f99b3;
  box-shadow: 0 0 0 4px rgba(127, 153, 179, .14);
}

.search-meta {
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .9rem;
  color: #66727e;
}

.search-results {
  display: grid;
  gap: 1rem;
}

.search-result {
  padding: 1rem 1.1rem;
}

.search-result h3 {
  margin-top: 0;
  margin-bottom: .3rem;
}

.search-result-date,
.search-result-tags {
  margin: 0 0 .35rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .84rem;
  color: #728191;
}

.search-result-snippet {
  margin-bottom: 0;
}

.search-hit {
  font-weight: 700;
  color: #24394d;
  background: #e7f0f8;
}

/* Blog post or page title */
.page-title,
.post-title,
.post-title a {
  color: #303030;
}
.post h2[id],
.post h3[id],
.post h4[id],
.post h5[id],
.post h6[id] {
  scroll-margin-top: calc(var(--masthead-offset) + 1rem);
}

.heading-anchor {
  opacity: 0;
  margin-left: .35rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .8em;
  font-weight: 700;
  color: #8aa0b5;
  text-decoration: none;
  transition: opacity .15s ease, color .15s ease;
}

.post h2:hover .heading-anchor,
.post h3:hover .heading-anchor,
.post h4:hover .heading-anchor,
.post h5:hover .heading-anchor,
.post h6:hover .heading-anchor,
.heading-anchor:focus {
  opacity: 1;
}

.heading-anchor:hover,
.heading-anchor:focus {
  color: #4d657c;
}

.post-header {
  position: sticky;
  top: calc(var(--masthead-offset) + .35rem);
  z-index: 15;
  margin-bottom: 1.4rem;
  padding: .85rem 0 .7rem;
  background: rgba(255,255,255,.96);
  border-bottom: 1px solid #eef2f5;
  -webkit-backdrop-filter: blur(10px);
          backdrop-filter: blur(10px);
}
.page-title,
.post-title {
  margin-top: 0;
}

/* Meta data line below post title */
.post-date {
  display: block;
  margin-top: -.5rem;
  margin-bottom: 1rem;
  color: #9a9a9a;
  font-size: 15px;
}

.post-loc,
.post-read-time {
  font-variant-numeric: tabular-nums;
}

@media (max-width: 48em) {
  .post-header {
    padding-top: .7rem;
  }
}

/* Related posts */
.related {
  padding-top: 2rem;
  padding-bottom: 2rem;
  border-top: 1px solid #eee;
}
.related-posts {
  padding-left: 0;
  list-style: none;
}
.related-posts h3 {
  margin-top: 0;
}
.related-posts li small {
  font-size: 75%;
  color: #999;
}
.related-posts li a:hover {
  color: #268bd2;
  text-decoration: none;
}
.related-posts li a:hover small {
  color: inherit;
}


/*
 * Pagination
 *
 * Super lightweight (HTML-wise) blog pagination. `span`s are provide for when
 * there are no more previous or next posts to show.
 */

.pagination {
  overflow: hidden; /* clearfix */
  margin-left: -1rem;
  margin-right: -1rem;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  color: #ccc;
  text-align: center;
}

/* Pagination items can be `span`s or `a`s */
.pagination-item {
  display: block;
  padding: 1rem;
  border: 1px solid #eee;
}
.pagination-item:first-child {
  margin-bottom: -1px;
}

/* Only provide a hover state for linked pagination items */
a.pagination-item:hover {
  background-color: #f5f5f5;
}

@media (min-width: 30em) {
  .pagination {
    margin: 3rem 0;
  }
  .pagination-item {
    float: left;
    width: 50%;
  }
  .pagination-item:first-child {
    margin-bottom: 0;
    border-top-left-radius:    4px;
    border-bottom-left-radius: 4px;
  }
  .pagination-item:last-child {
    margin-left: -1px;
    border-top-right-radius:    4px;
    border-bottom-right-radius: 4px;
  }
}


/*
 * Reverse layout
 *
 * Flip the orientation of the page by placing the `.sidebar` and sidebar toggle
 * on the right side.
 */

.layout-reverse .sidebar {
  left: auto;
  right: -14rem;
}
.layout-reverse .sidebar-toggle {
  left: auto;
  right: 1rem;
}

.layout-reverse #sidebar-checkbox:checked ~ .sidebar,
.layout-reverse #sidebar-checkbox:checked ~ .wrap,
.layout-reverse #sidebar-checkbox:checked ~ .sidebar-toggle {
  -webkit-transform: translateX(-14rem);
      -ms-transform: translateX(-14rem);
          transform: translateX(-14rem);
}


/*
 * Themes
 *
 * Apply custom color schemes by adding the appropriate class to the `body`.
 * Based on colors from Base16: http://chriskempson.github.io/base16/#default.
 */

/* Red */
.theme-base-08 .sidebar,
.theme-base-08 .sidebar-toggle:active,
.theme-base-08 #sidebar-checkbox:checked ~ .sidebar-toggle {
  background-color: #ac4142;
}
.theme-base-08 .container a,
.theme-base-08 .sidebar-toggle,
.theme-base-08 .related-posts li a:hover {
  color: #ac4142;
}

/* Orange */
.theme-base-09 .sidebar,
.theme-base-09 .sidebar-toggle:active,
.theme-base-09 #sidebar-checkbox:checked ~ .sidebar-toggle {
  background-color: #d28445;
}
.theme-base-09 .container a,
.theme-base-09 .sidebar-toggle,
.theme-base-09 .related-posts li a:hover {
  color: #d28445;
}

/* Yellow */
.theme-base-0a .sidebar,
.theme-base-0a .sidebar-toggle:active,
.theme-base-0a #sidebar-checkbox:checked ~ .sidebar-toggle {
  background-color: #f4bf75;
}
.theme-base-0a .container a,
.theme-base-0a .sidebar-toggle,
.theme-base-0a .related-posts li a:hover {
  color: #f4bf75;
}

/* Green */
.theme-base-0b .sidebar,
.theme-base-0b .sidebar-toggle:active,
.theme-base-0b #sidebar-checkbox:checked ~ .sidebar-toggle {
  background-color: #90a959;
}
.theme-base-0b .container a,
.theme-base-0b .sidebar-toggle,
.theme-base-0b .related-posts li a:hover {
  color: #90a959;
}

/* Cyan */
.theme-base-0c .sidebar,
.theme-base-0c .sidebar-toggle:active,
.theme-base-0c #sidebar-checkbox:checked ~ .sidebar-toggle {
  background-color: #75b5aa;
}
.theme-base-0c .container a,
.theme-base-0c .sidebar-toggle,
.theme-base-0c .related-posts li a:hover {
  color: #75b5aa;
}

/* Blue */
.theme-base-0d .sidebar,
.theme-base-0d .sidebar-toggle:active,
.theme-base-0d #sidebar-checkbox:checked ~ .sidebar-toggle {
  background-color: #6a9fb5;
}
.theme-base-0d .container a,
.theme-base-0d .sidebar-toggle,
.theme-base-0d .related-posts li a:hover {
  color: #6a9fb5;
}

/* Magenta */
.theme-base-0e .sidebar,
.theme-base-0e .sidebar-toggle:active,
.theme-base-0e #sidebar-checkbox:checked ~ .sidebar-toggle {
  background-color: #aa759f;
}
.theme-base-0e .container a,
.theme-base-0e .sidebar-toggle,
.theme-base-0e .related-posts li a:hover {
  color: #aa759f;
}

/* Brown */
.theme-base-0f .sidebar,
.theme-base-0f .sidebar-toggle:active,
.theme-base-0f #sidebar-checkbox:checked ~ .sidebar-toggle {
  background-color: #8f5536;
}
.theme-base-0f .container a,
.theme-base-0f .sidebar-toggle,
.theme-base-0f .related-posts li a:hover {
  color: #8f5536;
}


/*
 * Overlay sidebar
 *
 * Make the sidebar content overlay the viewport content instead of pushing it
 * aside when toggled.
 */

.sidebar-overlay #sidebar-checkbox:checked ~ .wrap {
  -webkit-transform: translateX(0);
      -ms-transform: translateX(0);
          transform: translateX(0);
}
.sidebar-overlay #sidebar-checkbox:checked ~ .sidebar-toggle {
  box-shadow: 0 0 0 .25rem #fff;
}
.sidebar-overlay #sidebar-checkbox:checked ~ .sidebar {
  box-shadow: .25rem 0 .5rem rgba(0,0,0,.1);
}

/* Only one tweak for a reverse layout */
.layout-reverse.sidebar-overlay #sidebar-checkbox:checked ~ .sidebar {
  box-shadow: -.25rem 0 .5rem rgba(0,0,0,.1);
}


/*
 * Default dark theme
 *
 * Keep the site readable without the glare of a white canvas. The palette is
 * neutral gray with restrained teal and amber accents.
 */

::selection {
  color: var(--color-bg);
  background: var(--color-link-hover);
}

html,
body,
.wrap {
  background: var(--color-bg);
}

body {
  color: var(--color-text);
}

h1, h2, h3, h4, h5, h6 {
  color: var(--color-text-strong);
  letter-spacing: 0;
}

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

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

strong,
.page-title,
.post-title,
.post-title a,
.masthead-title,
.masthead-title a,
.topic-card h3,
.topic-post-card h3,
.search-heading,
.search-result h3 {
  color: var(--color-text-strong);
}

.masthead {
  background: rgba(36, 37, 38, .96);
  border-bottom: 1px solid var(--color-border-muted);
  -webkit-backdrop-filter: blur(10px);
          backdrop-filter: blur(10px);
}

.masthead-content {
  background: transparent;
}

.masthead-tagline,
.masthead-nav a,
.post-date,
.related-posts li small,
.scroll-top-progress,
.about-kicker,
.about-section-kicker,
.about-lede,
.about-card p,
.about-principle p,
.topics-kicker,
.topics-lede,
.topic-section-count,
.topic-section-header p:last-child,
.topic-post-meta,
.topic-post-excerpt,
.topic-card p,
.search-kicker,
.search-lede,
.search-meta,
.search-result-date,
.search-result-tags {
  color: var(--color-text-muted);
}

.masthead-nav a:hover,
.masthead-nav a:focus {
  color: var(--color-link-hover);
}

.sidebar {
  color: var(--color-text-muted);
  background: #202124;
}

.sidebar-nav,
.sidebar-nav-item {
  border-color: rgba(255, 255, 255, .08);
}

a.sidebar-nav-item:hover,
a.sidebar-nav-item:focus,
.sidebar-nav-item.active {
  background: rgba(255, 255, 255, .08);
}

.sidebar-toggle {
  color: var(--color-text-strong);
  background: var(--color-bg-elevated);
  border: 1px solid var(--color-border);
  box-shadow: 0 8px 18px rgba(0, 0, 0, .18);
}

.sidebar-toggle::before {
  background: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='%23dedbd2' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M2.5 11.5A.5.5 0 013 11h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5zm0-4A.5.5 0 013 7h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5zm0-4A.5.5 0 013 3h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5z' clip-rule='evenodd'/%3E%3C/svg%3E") no-repeat;
}

.sidebar-toggle:active,
#sidebar-checkbox:focus ~ .sidebar-toggle,
#sidebar-checkbox:checked ~ .sidebar-toggle {
  color: var(--color-bg);
  background: var(--color-link-hover);
}

.sidebar-toggle:active:before,
#sidebar-checkbox:focus ~ .sidebar-toggle::before,
#sidebar-checkbox:checked ~ .sidebar-toggle::before {
  background: url("data:image/svg+xml,%3Csvg viewBox='0 0 16 16' fill='%23242526' xmlns='http://www.w3.org/2000/svg'%3E%3Cpath fill-rule='evenodd' d='M2.5 11.5A.5.5 0 013 11h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5zm0-4A.5.5 0 013 7h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5zm0-4A.5.5 0 013 3h10a.5.5 0 010 1H3a.5.5 0 01-.5-.5z' clip-rule='evenodd'/%3E%3C/svg%3E") no-repeat;
}

hr,
.related,
.post-header {
  border-color: var(--color-border-muted);
}

.post-header {
  background: rgba(36, 37, 38, .96);
}

code,
pre,
.highlight,
.highlight pre {
  background: var(--color-bg-soft);
}

code {
  color: var(--color-code);
}

blockquote {
  color: var(--color-text-muted);
  border-left-color: var(--color-border);
}

table,
td,
th,
.pagination-item {
  border-color: var(--color-border);
}

tbody tr:nth-child(odd) td,
tbody tr:nth-child(odd) th,
a.pagination-item:hover {
  background: var(--color-bg-muted);
}

.message,
.about-panel,
.topic-card,
.topic-post-card,
.search-intro,
.search-shell,
.search-result {
  background: var(--color-bg-elevated);
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-soft);
}

.about-hero,
.topics-intro {
  background: var(--color-panel-gradient);
  border: 1px solid var(--color-border);
  box-shadow: var(--shadow-soft);
}

.about-card,
.about-principle {
  background: var(--color-bg-muted);
  border: 1px solid var(--color-border-muted);
}

.topic-card:hover,
.topic-card:focus {
  border-color: var(--color-link);
  box-shadow: 0 18px 30px rgba(0, 0, 0, .24);
}

.about-skill-pills span,
.topic-card-count,
.topic-post-tags span,
.search-hit {
  color: #c7dfd4;
  background: #354039;
}

.about-hero-photo .rounded-image {
  border-color: var(--color-bg-elevated);
  box-shadow: 0 12px 25px rgba(0, 0, 0, .24);
}

.search-label {
  color: var(--color-text-muted);
}

.search-input {
  color: var(--color-text-strong);
  background: var(--color-bg-muted);
  border-color: var(--color-border);
}

.search-input::placeholder {
  color: var(--color-text-subtle);
}

.search-input:focus {
  border-color: var(--color-link);
  box-shadow: 0 0 0 4px rgba(143, 201, 194, .16);
}

.scroll-top,
.code-copy-button,
.code-link-button,
.code-expand-button {
  color: var(--color-text-muted);
  background: rgba(44, 46, 49, .94);
  border: 1px solid var(--color-border);
  box-shadow: 0 10px 22px rgba(0, 0, 0, .2);
}

.scroll-top:hover,
.scroll-top:focus,
.code-copy-button:hover,
.code-copy-button:focus,
.code-link-button:hover,
.code-link-button:focus,
.code-expand-button:hover,
.code-expand-button:focus {
  color: var(--color-link-hover);
  border-color: var(--color-link-hover);
}

.code-copy-button.is-copied {
  color: var(--color-success);
  background: #29362d;
  border-color: #47634f;
}

.code-overlay-backdrop {
  background: rgba(0, 0, 0, .72);
}

.code-overlay-panel {
  background: var(--color-bg-muted);
  box-shadow: 0 20px 80px rgba(0, 0, 0, .58);
}

.code-overlay-toolbar {
  background: rgba(255, 255, 255, .04);
  border-bottom-color: var(--color-border-muted);
}

.code-overlay-link,
.code-overlay-copy,
.code-overlay-close {
  color: var(--color-text-strong);
  background: rgba(255, 255, 255, .08);
}

.heading-anchor {
  color: var(--color-text-subtle);
}

.heading-anchor:hover,
.heading-anchor:focus {
  color: var(--color-link-hover);
}

.pagination {
  color: var(--color-text-subtle);
}

.infinite-scroll-status {
  clear: both;
  min-height: 1.5rem;
  margin: .8rem 0 0;
  font-family: "PT Sans", Helvetica, Arial, sans-serif;
  font-size: .75rem;
  text-align: center;
  color: var(--color-text-subtle);
}

.infinite-scroll-sentinel {
  clear: both;
  width: 100%;
  height: 1px;
}

.pagination.has-infinite-scroll .pagination-item.older {
  float: none;
  width: 100%;
  margin-bottom: 0;
  border-radius: 4px;
}

.pagination.has-infinite-scroll .pagination-item.newer {
  display: none;
}

.pagination.has-infinite-scroll.is-loading .pagination-item.older {
  pointer-events: none;
  opacity: .65;
}

.pagination.has-infinite-scroll.has-error .infinite-scroll-status {
  color: #f0a6a6;
}

.highlight .hll { background-color: #434036; }
.highlight .c,
.highlight .c1,
.highlight .cs,
.highlight .ni,
.highlight .w { color: #908a80; }
.highlight .err { color: #f0a6a6; background-color: #472b2b; }
.highlight .k,
.highlight .kc,
.highlight .kd,
.highlight .kn,
.highlight .kp,
.highlight .kr { color: #8fc9c2; }
.highlight .kt,
.highlight .nc,
.highlight .nf,
.highlight .nt { color: #9bc3e5; }
.highlight .o,
.highlight .ow { color: #dedbd2; }
.highlight .cm,
.highlight .cp,
.highlight .gh,
.highlight .gu { color: #a3b9ad; }
.highlight .gd { background-color: #472b2b; border-color: #8f4e4e; }
.highlight .gi { background-color: #293b2f; border-color: #5f8f6a; }
.highlight .gr,
.highlight .ne { color: #f0a6a6; }
.highlight .go,
.highlight .gp { color: #aaa59a; }
.highlight .gt,
.highlight .m,
.highlight .mf,
.highlight .mh,
.highlight .mi,
.highlight .mo,
.highlight .il { color: #d8b46a; }
.highlight .s,
.highlight .sb,
.highlight .sc,
.highlight .sd,
.highlight .s2,
.highlight .se,
.highlight .sh,
.highlight .si,
.highlight .sx,
.highlight .sr,
.highlight .s1,
.highlight .ss { color: #d7a585; }
.highlight .na,
.highlight .nb,
.highlight .nl,
.highlight .nn,
.highlight .no,
.highlight .nv,
.highlight .bp,
.highlight .vc,
.highlight .vg,
.highlight .vi { color: #c7dfd4; }
.highlight .nd { color: #c9b3dd; }

.css .o,
.css .o + .nt,
.css .nt + .nt { color: #aaa59a; }
