@font-face {
  font-style: normal;
  font-family: Nunito;
  src: url("/lib/font-nunito/Nunito-Regular.ttf");
}

@font-face {
  font-style: medium;
  font-family: Nunito;
  src: url("/lib/font-nunito/Nunito-Medium.ttf");
}

html {
  border: none;
}

body {
  font-family: Nunito, sans-serif;
  font-size: 16px;
}

body h1, body h2, body h3, body h4, body h5, body h6,
body .h1, body .h2, body .h3, body .h4, body .h5, body .h6 {
  font-family: Georgia, Cambria, serif;
}

body h1, body .h1 {
  font-size: 2em;
  margin-top: 2rem;
}

/*
body h1, body .h1 {
  color: #02508F;
}
*/

.h1 a.more {
  cursor: pointer;
}

.h1 a.more:hover:after {
  content: ' ❯';
}

.alt {
  display: none;
}

/* terminal screenshots: rounded, with breathing room */
img.term {
  display: block;
  max-width: 100%;
  margin: 1.2em auto;
  border-radius: 10px;
  box-shadow: 0 2px 14px rgba(0, 0, 0, 0.25);
}

a.no-underline:not(:hover) {
  background: none !important;
}

#header-post .active {
  color: unset;
}

#footer a.icon {
  text-decoration: none;
}

#footer {
  font-size: 12px;
  margin-bottom: 20px;
}

#footer .footer-left {
  height: initial;
}

#footer .footer-left .links {
  display: inline-block;
}

#section-desc {
  margin: 10px 0;
}

.content.index {
  padding-bottom: 6rem;
}

@media (max-width: 499px) {
  .content.index #recent .h1 {
    margin-top: 0;
  }


}

/* utilities */

.more {
  cursor: pointer;
}

.nowrap {
  white-space: nowrap;
}

/* article */

article .content h2,
article .content h3,
article .content h4,
article .content h5,
article .content h6 {
  color: #444;
  text-decoration: none;
}

article header .posttitle {
  font-size: 1.6rem;
}

article header .meta * {
  font-size: 1rem;
}

article .content h2 {
  font-size: 1.3rem;
}

article .content h3 {
  font-size: 1.2rem;
}

article .content h2:before {
  font-size: 30px;
  left: -1.5rem;
  top: -2px;
  visibility: hidden;
}

article .content h2:hover:before {
  /*visibility: visible;*/
}

article .content {
  font-family: Charter, Georgia, Cambria, serif;
  font-size: 21px;
  text-align: left;
  overflow-wrap: unset;
  hyphens: unset;
}

/* long links (and URLs) must wrap, or narrow screens scroll sideways */
article .content a {
  overflow-wrap: anywhere;
}

article .content,
article .content p,
article .content li {
  text-align: left;
  overflow-wrap: unset;
  hyphens: unset;
  font-size: 18px;
}

article .content p {
  margin-top: 0.2em;
  margin-bottom: 0.5em;
}

article .content .highlight + p {
  margin-top: 0.5em;
}

article .content p + ul,
article .content p + ol {
  margin-top: 0;
}

article .content ul {
  padding-left: 1.8em;
}

article .content code {
  background: #fafafa;
  padding: 3px 5px 2px 5px;
  font-size: 14.5px;
  border: solid 1px #e0e0e0;
  border-radius: 4px;
  font-family: "JetBrains Mono", monospace;
}

article .content .highlight {
  overflow: initial;
  position: relative;
  padding: 0;
  background: #fafafa;
  border: solid 1px #e8e8e8;
  box-shadow: 1px 2px 2px #f0f0f0;
  border-radius: 8px;
}

article .content .highlight code {
  background: #fafafa;
  border: none;
}

@keyframes btn-copy-fadeIn {
  0% {
    opacity: 0;
  }
  100% {
    opacity: 0.5;
  }
}

article .content .highlight .btn-copy {
  position: absolute;
  cursor: pointer;
  top: 8px;
  right: 8px;
  padding: 0 10px 1px 10px;
  border: solid 1px #ccc;
  border-radius: 4px;
  box-shadow: 0 1px 1px #bbb;

  font-size: 1rem;
  font-family: Charter, Georgia, Cambria, serif;
  display: none;
  user-select: none;
}

article .content .highlight:hover .btn-copy {
  display: block;
  animation: btn-copy-fadeIn 0.5s;
  opacity: 0.5;
}

article .content .highlight .btn-copy:hover {
  opacity: 1;
  border: solid 1px rgba(204, 42, 65, 0.6);
  border-bottom-width: 2px;
}

article .content blockquote {
  margin: 1rem 0 2rem 0;
  padding: 0.5rem 0;
}

article blockquote p {
  font-size: 1.2rem;
  font-style: italic;
  font-weight: 400;
  line-height: 1.5;
  margin: 0;
  padding: 0 0 0 1rem;
  color: #2b2b2b;
}

@media (min-width: 500px) {
  article .content .highlight {
    margin: 1rem -2rem;
  }
}

@media (max-width: 499px) {
  article .content .highlight {
    margin: 1rem -1rem;
  }
}

article .content pre code {
  padding: 0;
  font-size: 12.5px;
  font-family: "JetBrains Mono", monospace;
}

article .content pre {
  overflow-x: auto;
  border: none;
  padding: 1rem 1.5rem;
}

/* Plain (no-language) code blocks have no .highlight/.chroma wrapper, so put the
   box on <pre> itself — a fixed frame that stays put while content scrolls inside,
   instead of on <code> (which scrolls away on horizontal overflow). */
article .content pre:not(.chroma) {
  background: #fafafa;
  border: solid 1px #e0e0e0;
  border-radius: 4px;
}
article .content pre:not(.chroma) > code {
  background: transparent;
  border: none;
}

/* Heading anchor: a '#' that appears on hover; clicking copies the section URL. */
article .content .heading-anchor {
  position: relative;
  margin-left: 0.4rem;
  color: #ccc;
  font-weight: 400;
  text-decoration: none;
  cursor: pointer;
  user-select: none;
  opacity: 0;
  transition: opacity 0.15s, color 0.15s;
}
article .content h2:hover .heading-anchor,
article .content h3:hover .heading-anchor,
article .content h4:hover .heading-anchor,
article .content .heading-anchor:focus,
article .content .heading-anchor.copied {
  opacity: 1;
}
article .content .heading-anchor:hover {
  color: rgba(204, 42, 65, 1);
  background-image: none;
}
article .content .heading-anchor.copied::after {
  content: "Copied!";
  position: absolute;
  left: 100%;
  top: 50%;
  transform: translateY(-50%);
  margin-left: 0.4rem;
  padding: 0.1rem 0.4rem;
  white-space: nowrap;
  font-size: 0.6em;
  font-weight: 400;
  color: #fff;
  background: rgba(204, 42, 65, 0.95);
  border-radius: 3px;
  pointer-events: none;
}

article .content pre + pre {
  margin-top: 1rem;
}

article header .meta {
  margin-top: 1rem;
}

table th, table td {
  font-size: 1rem;
}

/* Article tables: clean accent header underline, subtle row dividers, roomy cells. */
article .content table {
  width: 100%;
  border-collapse: collapse;
  margin: 1.75rem 0;
  line-height: 1.5;
}
article .content thead th {
  color: rgba(204, 42, 65, 1);
  font-weight: 700;
  text-align: left;
  padding: 0.4rem 0.9rem 0.55rem;
  border-bottom: 2px solid rgba(204, 42, 65, 0.45);
  vertical-align: bottom;
}
article .content tbody td {
  padding: 0.55rem 0.9rem;
  border-bottom: 1px solid rgba(0, 0, 0, 0.08);
  vertical-align: top;
}
article .content tbody tr:last-child td {
  border-bottom: none;
}
article .content tbody tr:hover {
  background: rgba(204, 42, 65, 0.045);
}
/* vertical divider between columns */
article .content thead th:not(:last-child),
article .content tbody td:not(:last-child) {
  border-right: 1px solid rgba(0, 0, 0, 0.08);
}

@media (max-width: 499px) {
  article .content pre {
    padding: 1rem 1rem;
  }

  article .content pre + pre {
    margin-top: 0.5rem;
  }
}

@media (min-width: 728px) {
  article header .posttitle {
    font-size: 2.2rem;
  }

  article .content h2 {
    font-size: 1.7rem;
  }

  article .content h3 {
    font-size: 1.45rem;
  }

  article .content,
  article .content p,
  article .content li {
    font-size: 1.3rem;
  }

  article .content code {
    font-size: 1.05rem;
  }

  article .content pre code {
    font-size: 0.9rem;
  }

  table th, table td {
    font-size: 1.2rem;
  }
}

.content a {
  background-image: linear-gradient(transparent, transparent 5px, #aaa 5px, #aaa);
}

.content a:hover {
  background-image: linear-gradient(transparent, transparent 4px, rgba(204, 42, 65, 0.6) 4px, rgba(204, 42, 65, 0.6));
  /*background-image: linear-gradient(transparent, transparent 4px, rgba(2, 80, 143, 0.6) 4px, rgba(2, 80, 143, 0.6));*/
}

.content a code {
  text-decoration: underline #999;
  text-underline-offset: 4px;
  text-decoration-thickness: 1px;
}

.content a:hover code {
  text-decoration: none;
  /*text-decoration: underline rgba(204, 42, 65, 0.6);*/
  text-underline-offset: 6px;
  text-decoration-thickness: 1px;
  border-color: rgba(204, 42, 65, 0.6);
  border-bottom-width: 2px;
}

.content a.icon:hover {
  background-image: none;
  color: rgba(86, 124, 119, 0.9);
}


.content #header #title {
  margin-right: 0;
}

@media screen and (min-width: 500px) {
  #header-post {
    display: block;
  }
}

@media screen and (max-width: 499px) {
  #header-post {
    display: none;
  }
  #header-post #header-toc {
    display: none;
  }
}

#header-post {
  position: fixed;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: center;
  top: 0;
  left: 0;
  bottom: 0;
  /*width: 1px;*/
  right: initial;
  padding: 3.5rem 0 1rem 0; /* top clears the fixed back button (~54px) */
  box-sizing: border-box;
}

.menu-icons {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 1;
}

.menu-icons #menu-icon {
  position: fixed;
  opacity: 1;
  display: block;
  color: #aaa;
  top: 0.3rem;
  left: 0.1rem;
  margin: 0;
  padding: 0.5rem 1rem 0.3rem 0.1rem;
  /*background: #fafafa;*/
  border: solid 1px transparent;
  border-bottom-width: 2px;
  border-radius: 4px;
  text-decoration: none;
  /*border-top: none;*/
  /*border-left: none;*/
}

.menu-icons #menu-icon:hover {
  opacity: 1 !important;
  color: rgba(204, 42, 65, 1);
  background-image: none;
  /*border-color: rgba(204, 42, 65, 0.6);*/
  /*box-shadow: 1px 1px 2px rgba(0, 0, 0, 0.2);*/
}

.menu-icons #menu-icon {

}

@media screen and (max-width: 499px) {
  #header-post #menu-icon {
    display: none;
  }
  #header-post #actions {
    display: none;
  }
}

/*#header-post #menu-icon-tablet {*/
/*  color: #aaa;*/
/*  margin: 0;*/
/*  padding: 1rem 0.5rem 0.5rem 0.6rem;*/
/*}*/

/*#header-post #menu-icon:hover,*/
/*#header-post #menu-icon-tablet:hover {*/
/*  opacity: 1 !important;*/
/*}*/

#header-post #menu-icon:hover .icon-text,
#header-post #menu-icon-tablet:hover .icon-text {
  visibility: visible;
}

#header-post #menu-icon:hover,
#header-post #menu-icon-tablet:hover {
  background-color: #f2f0ee;
}

#header-post .icon-text {
  visibility: hidden;
  font-size: 1.2em;
}

#header-post #header-toc {
  z-index: -1;
  border: solid 1px transparent;
  border-left: none;
  margin: 0 0 2rem 0;
  padding: 0.5rem 1rem 0.5rem 1rem;
  max-height: calc(100vh - 5rem); /* fit within viewport minus back-button zone */
  overflow-y: auto; /* scroll internally when the TOC is long */
  overflow-x: hidden;
  scrollbar-width: none; /* Firefox: hide scrollbar */
}
#header-post #header-toc::-webkit-scrollbar {
  display: none; /* WebKit: hide scrollbar */
}

#header-post #header-toc ul {
  padding: 0 0 0 0;
}
#header-post #header-toc li a {
  display: none;
}
#header-post #header-toc li::before {
  content: '●';
  opacity: 0.2;
  text-align: center;
  padding: 0;
  display: inline-block;

  transition: opacity 1s, color 1s;
}
#header-post #header-toc li.active::before {
  opacity: 1;
  color: rgba(204, 42, 65, 1);
}
#header-post #header-toc li.active > a,
#header-post #header-toc li:hover > a {
  color: rgba(204, 42, 65, 1);
}
#header-post #header-toc li a:hover {
  color: rgba(204, 42, 65, 1);
}
#header-post #header-toc li:hover::before {
  color: rgba(204, 42, 65, 1);
  transition: color 0.1s;
  cursor: pointer;
}
#header-post #header-toc:hover {
  border: solid 1px #ddd;
  border-left: none;
  border-top-right-radius: 6px;
  border-bottom-right-radius: 6px;
  box-shadow: 1px 2px 2px rgba(0, 0, 0, 0.1);
  background: #fafafa;
  padding-right: 2rem;
}
#header-post #header-toc:hover ul ul {
  padding-left: 0.5rem;
}
#header-post #header-toc:hover li a {
  display: inline;
}
#header-post #header-toc:hover li::before {
  opacity: 1;
  padding-right: 0.5rem;
}
#header-post a code {
  text-decoration: none;
  border: solid 1px #e0e0e0;
  border-radius: 3px;
  padding: 0.1rem 0.2rem;
  font-size: 0.9rem;
  background: #f4f4f4;
}


@media (min-width: 480px) {
  .article-tag:before, .article-category:before {
    content: none;
  }
}

.article-tag {
  display: inline;
}

.article-tag .fa-tag:before {
  content: none;
}

.article-tag .tag-link:before {
  content: none;
}

#header a, #projects .h1 a {
  cursor: default;
}

#search-result p.search-result {
  text-align: left;
}

#header #nav {
  display: none;
}

#header #logo {
  background-size: cover;
  width: 100px;
  height: 150px;
  margin: -40px 40px -10px -15px;
  mix-blend-mode: multiply;
  cursor: pointer;
}

#footer {
  font-size: 16px;
}

#footer-post #actions-footer {
  display: flex;
  padding: 0;
  margin: 0;
}

#footer-post #actions-footer a {
  flex: 1 0 0;
  margin: 0;
  padding: 1rem 0;
  padding-bottom: calc(1rem + env(safe-area-inset-bottom) * 2);
}

#footer-post #actions-footer a#menu {
  display: none;
}

#footer-post #actions-footer a#top {
  display: none;
}

#footer-post #actions-footer .hidden {
  visibility: hidden;
}

#footer-post {
  border-top: solid 1px #aaa;
}

#footer-post #share-footer {
  background-color: #f5f5f5;
  border-bottom: solid 1px #ddd;
}

#footer-post #toc-footer {
  background-color: #f5f5f5;
  border-bottom: solid 1px #ddd;
  box-shadow: 0 0 100px 10px rgba(120, 120, 120, 0.5);
}

#footer-post #toc-footer #TableOfContents > ul > li:before {
  display: none;
}

#footer-post #toc-footer #TableOfContents > ul > li,
#footer-post #toc-footer .toc-header a {
  font-size: 1em;
  color: #666;
  list-style-type: none;
}

#footer-post #toc-footer #TableOfContents > ul > li > ul > li:before {
  display: none;
}

#footer-post #toc-footer #TableOfContents > ul > li a,
#footer-post #toc-footer .toc-header {
  font-size: 1.1em;
  line-height: 2em;
  text-decoration: none;
}

#footer-post #toc-footer #TableOfContents > ul > li > ul > li {
  font-size: 1em;
}

#footer-post #toc-footer #TableOfContents > ul > li > ul > li > ul > li,
#footer-post #toc-footer .toc-header {
  display: list-item;
  padding-left: 10px;
  padding-bottom: 13px;
  border-bottom: solid 1px #e0e0e0;
  margin-bottom: 13px;
}

#footer-post #toc-footer #TableOfContents > ul > li a code {
  text-decoration: none;
  border: none;
  font-size: 0.9em;
}

#footer-post #toc-footer #TableOfContents,
#footer-post #toc-footer .toc-header {
  padding-left: 20px;
  font-family: Georgia, Cambria, serif;
}

#footer-post #toc-footer #TableOfContents ul {
  padding-left: 0;
}

#footer-post #toc-footer a:hover {
  color: rgb(34 39 42 / 50%)
}

#footer-post #toc-footer #TableOfContents .alt {
  display: inline;
}

/* twitter */

.content blockquote.twitter-tweet {
  padding-left: 20px;
  font-weight: 400;
  font-size: 0.9em;
  color: #22272a;
}

.content blockquote.twitter-tweet:before {
  margin-left: -20px;
  color: #22272a;
}

.published-at {
  display: block;
}

.published-at a {
  display: inline-block;
  text-decoration: none;
  background-image: none;
  font-weight: 600;
}

.post-list .post-item .meta {
  font-size: 1rem;
}

.project-list .project-item {
  display: flex;
}

.project-list .project-item .meta {
  display: block;
  margin-right: 16px;
  color: #666;
  font-size: 1rem;
}

#speaking .project-list .project-item .meta {
  min-width: 45px;
}

#projects .project-list .project-item .meta {
  min-width: 140px;
}

#projects2 .project-list .project-item {
  display: block;
  padding-bottom: 10px;
}

#projects2 .project-list .project-item .meta {
  display: flex;
  min-width: 80px;
}

#projects2 .project-list .project-item .name-list {
  display: flex;
}

#projects2 .project-list .project-item .name + .name {
  padding-left: 10px;
}

#projects2 .project-list .project-item .meta {
  display: flex;
  flex-direction: row-reverse;
  justify-content: space-between;
}

.desc-cv, .cv {
  font-family: Charter, Georgia, Cambria, serif;
  font-style: italic;
  font-size: 17px;
}

.style-alt {
  font-style: normal;
}

#about .desc-cv {
  padding-bottom: 14px;
}

/* ------ subscription ------ */

#home-subscription {
  margin: 20px 0 -40px 0;
}

#home-subscription h2 {
  margin-top: 0;
  font-size: 1.5rem;
}

#subscription-form {
  width: 100%;
  margin-top: 0.7rem;
}
#subscription-form iframe {
  display: block;
  height: 320px;
  border: 1px solid #e6e2dd;
  border-radius: 8px;
  background: #f0f0f0;
}
@media (max-width: 600px) {
  #subscription-form iframe {
    height: 440px;
  }
}


/*
  https://gohugo.io/content-management/syntax-highlighting/
  hugo gen chromastyles --style=github > static/_syntax.css
*/

/* Background */
.chroma {
  background-color: #ffffff
}

/* Other */
.chroma .x {
}

/* Error */
.chroma .err {
  color: #a61717;
  background-color: #e3d2d2
}

/* LineTableTD */
.chroma .lntd {
  vertical-align: top;
  padding: 0;
  margin: 0;
  border: 0;
}

/* LineTable */
.chroma .lntable {
  border-spacing: 0;
  padding: 0;
  margin: 0;
  border: 0;
  width: auto;
  overflow: auto;
  display: block;
}

/* LineHighlight */
.chroma .hl {
  display: block;
  width: 100%;
  background-color: #ffffcc
}

/* LineNumbersTable */
.chroma .lnt {
  margin-right: 0.4em;
  padding: 0 0.4em 0 0.4em;
  color: #7f7f7f
}

/* LineNumbers */
.chroma .ln {
  margin-right: 0.4em;
  padding: 0 0.4em 0 0.4em;
  color: #7f7f7f
}

/* Keyword */
.chroma .k {
  color: #000000;
  font-weight: bold
}

/* KeywordConstant */
.chroma .kc {
  color: #000000;
  font-weight: bold
}

/* KeywordDeclaration */
.chroma .kd {
  color: #000000;
  font-weight: bold
}

/* KeywordNamespace */
.chroma .kn {
  color: #000000;
  font-weight: bold
}

/* KeywordPseudo */
.chroma .kp {
  color: #000000;
  font-weight: bold
}

/* KeywordReserved */
.chroma .kr {
  color: #000000;
  font-weight: bold
}

/* KeywordType */
.chroma .kt {
  color: #445588;
  font-weight: bold
}

/* Name */
.chroma .n {
}

/* NameAttribute */
.chroma .na {
  color: #008080
}

/* NameBuiltin */
.chroma .nb {
  color: #0086b3
}

/* NameBuiltinPseudo */
.chroma .bp {
  color: #999999
}

/* NameClass */
.chroma .nc {
  color: #445588;
  font-weight: bold
}

/* NameConstant */
.chroma .no {
  color: #008080
}

/* NameDecorator */
.chroma .nd {
  color: #3c5d5d;
  font-weight: bold
}

/* NameEntity */
.chroma .ni {
  color: #800080
}

/* NameException */
.chroma .ne {
  color: #990000;
  font-weight: bold
}

/* NameFunction */
.chroma .nf {
  color: #990000;
  font-weight: bold
}

/* NameFunctionMagic */
.chroma .fm {
}

/* NameLabel */
.chroma .nl {
  color: #990000;
  font-weight: bold
}

/* NameNamespace */
.chroma .nn {
  color: #555555
}

/* NameOther */
.chroma .nx {
}

/* NameProperty */
.chroma .py {
}

/* NameTag */
.chroma .nt {
  color: #000080
}

/* NameVariable */
.chroma .nv {
  color: #008080
}

/* NameVariableClass */
.chroma .vc {
  color: #008080
}

/* NameVariableGlobal */
.chroma .vg {
  color: #008080
}

/* NameVariableInstance */
.chroma .vi {
  color: #008080
}

/* NameVariableMagic */
.chroma .vm {
}

/* Literal */
.chroma .l {
}

/* LiteralDate */
.chroma .ld {
}

/* LiteralString */
.chroma .s {
  color: #dd1144
}

/* LiteralStringAffix */
.chroma .sa {
  color: #dd1144
}

/* LiteralStringBacktick */
.chroma .sb {
  color: #dd1144
}

/* LiteralStringChar */
.chroma .sc {
  color: #dd1144
}

/* LiteralStringDelimiter */
.chroma .dl {
  color: #dd1144
}

/* LiteralStringDoc */
.chroma .sd {
  color: #dd1144
}

/* LiteralStringDouble */
.chroma .s2 {
  color: #dd1144
}

/* LiteralStringEscape */
.chroma .se {
  color: #dd1144
}

/* LiteralStringHeredoc */
.chroma .sh {
  color: #dd1144
}

/* LiteralStringInterpol */
.chroma .si {
  color: #dd1144
}

/* LiteralStringOther */
.chroma .sx {
  color: #dd1144
}

/* LiteralStringRegex */
.chroma .sr {
  color: #009926
}

/* LiteralStringSingle */
.chroma .s1 {
  color: #dd1144
}

/* LiteralStringSymbol */
.chroma .ss {
  color: #990073
}

/* LiteralNumber */
.chroma .m {
  color: #009999
}

/* LiteralNumberBin */
.chroma .mb {
  color: #009999
}

/* LiteralNumberFloat */
.chroma .mf {
  color: #009999
}

/* LiteralNumberHex */
.chroma .mh {
  color: #009999
}

/* LiteralNumberInteger */
.chroma .mi {
  color: #009999
}

/* LiteralNumberIntegerLong */
.chroma .il {
  color: #009999
}

/* LiteralNumberOct */
.chroma .mo {
  color: #009999
}

/* Operator */
.chroma .o {
  color: #000000;
  font-weight: bold
}

/* OperatorWord */
.chroma .ow {
  color: #000000;
  font-weight: bold
}

/* Punctuation */
.chroma .p {
}

/* Comment */
.chroma .c {
  color: #999988;
  font-style: italic
}

/* CommentHashbang */
.chroma .ch {
  color: #999988;
  font-style: italic
}

/* CommentMultiline */
.chroma .cm {
  color: #999988;
  font-style: italic
}

/* CommentSingle */
.chroma .c1 {
  color: #999988;
  font-style: italic
}

/* CommentSpecial */
.chroma .cs {
  color: #999999;
  font-weight: bold;
  font-style: italic
}

/* CommentPreproc */
.chroma .cp {
  color: #999999;
  font-weight: bold;
  font-style: italic
}

/* CommentPreprocFile */
.chroma .cpf {
  color: #999999;
  font-weight: bold;
  font-style: italic
}

/* Generic */
.chroma .g {
}

/* GenericDeleted */
.chroma .gd {
  color: #000000;
  background-color: #ffdddd
}

/* GenericEmph */
.chroma .ge {
  color: #000000;
  font-style: italic
}

/* GenericError */
.chroma .gr {
  color: #aa0000
}

/* GenericHeading */
.chroma .gh {
  color: #999999
}

/* GenericInserted */
.chroma .gi {
  color: #000000;
  background-color: #ddffdd
}

/* GenericOutput */
.chroma .go {
  color: #888888
}

/* GenericPrompt */
.chroma .gp {
  color: #555555
}

/* GenericStrong */
.chroma .gs {
  font-weight: bold
}

/* GenericSubheading */
.chroma .gu {
  color: #aaaaaa
}

/* GenericTraceback */
.chroma .gt {
  color: #aa0000
}

/* GenericUnderline */
.chroma .gl {
  text-decoration: underline
}

/* TextWhitespace */
.chroma .w {
  color: #bbbbbb
}

/* ------ box ------ */

.content .box {
  padding: 30px 30px;
  margin: 1rem -1rem 1rem -2rem;
  background: #FFE4D0;
  border-radius: 6px;
  overflow: hidden;
}

.content .box .label {
  display: inline-block;
  width: 15rem;
}

.content .box .output {
  background: #EACEB8;
  margin: 2rem -2.2rem -2rem;
  padding: 15px calc(30px + 0.2rem);
  font-family: "JetBrains Mono", monospace;
  font-size: 1rem;
}

.content .box input[type=text],
.content .box input {
  font-size: 16px;
  padding: 3px 10px;
  font-family: "JetBrains Mono", monospace;
}

.content .box input[type=button],
.content .box input[type=submit] {
  font-size: 16px;
  padding: 3px 10px;
  font-family: Nunito, sans-serif;
}


/* ================================================================== site menu, lists, tags */

#homepage-menu .items {
  display: flex;
  flex-wrap: wrap;
  align-items: center;
  gap: 8px 30px;
}
#homepage-menu {
  margin-top: 30px;
}
#homepage-menu .item {
  font-size: 16px;
}
#homepage-menu .item a.selected {
  color: rgba(204, 42, 65, 1);
  background-image: linear-gradient(transparent, transparent 5px, rgba(204, 42, 65, 1) 5px, rgba(204, 42, 65, 1));
}
#homepage-menu .item-rss {
  margin-left: auto;
}
#homepage-menu .item-rss a {
  background: none;
  color: #999;
}
#homepage-menu .item-rss a:hover {
  color: rgba(204, 42, 65, 1);
}

/* TIL label in post lists: small red caps, no border */
.post-label {
  margin-left: 0.3rem;
  color: rgba(204, 42, 65, 1);
  font-size: 0.7rem;
  font-weight: 600;
  letter-spacing: 0.06em;
  vertical-align: 0.1em;
}

.see-all {
  margin-top: 0.8rem;
}

.archive-year {
  display: block;
  margin-top: 2rem;
}

/* tag list: /w/, /tags/, tag pages. Plain cactus links, no borders. */
.tag-chips {
  display: flex;
  flex-wrap: wrap;
  gap: 4px 18px;
  margin: 1.5rem 0 0.5rem;
}
.content .tag-chips a.tag-chip {
  font-size: 0.95rem;
  background-image: none;
}
.content .tag-chips a.tag-chip:hover {
  color: rgba(204, 42, 65, 1);
  background-image: none;
}
.content .tag-chips .count {
  margin-left: 0.2rem;
  color: #999;
  font-size: 0.75rem;
  vertical-align: 0.35em;
}
.content .tag-chips a.tag-chip.selected {
  color: rgba(204, 42, 65, 1);
  background-image: none;
}

/* social icons: no separators, comfortable tap targets */
.social-icons {
  display: inline-flex;
  align-items: center;
  gap: 2px;
  vertical-align: middle;
}
.content .social-icons a.icon {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  min-width: 30px;
  height: 30px;
  border-radius: 6px;
  background: none;
}
.content .social-icons a.icon:hover {
  color: rgba(204, 42, 65, 1);
  background: rgba(204, 42, 65, 0.06);
}

/* article meta line */
article header .meta .postdate,
article header .meta .article-tag {
  display: inline;
}

/* dark theme: currently unused (nothing sets data-theme). Light is the only theme; kept to revisit later. */
html[data-theme="dark"] {
    color-scheme: dark;
  }
html[data-theme="dark"] {
    border-top-color: #faf8f5;
  }
html[data-theme="dark"] body {
    background-color: #17191c;
    color: #f0ede9;
  }
html[data-theme="dark"] .content a,
html[data-theme="dark"] article .content a {
    color: #faf8f5;
    background-image: linear-gradient(transparent, transparent 5px, #9a958f 5px, #9a958f);
  }
html[data-theme="dark"] .content a:hover {
    background-image: linear-gradient(transparent, transparent 4px, rgba(240, 86, 107, 0.6) 4px, rgba(240, 86, 107, 0.6));
  }
html[data-theme="dark"] body h1,
html[data-theme="dark"] body .h1,
html[data-theme="dark"] body h2,
html[data-theme="dark"] body .h2,
html[data-theme="dark"] body h3,
html[data-theme="dark"] body h4,
html[data-theme="dark"] body h5,
html[data-theme="dark"] body h6,
html[data-theme="dark"] #header #title h1 {
    color: #faf8f5;
  }
html[data-theme="dark"] body h1,
html[data-theme="dark"] body .h1,
html[data-theme="dark"] article header .posttitle,
html[data-theme="dark"] .content .h1 a {
    color: #f0566b;
  }
html[data-theme="dark"] article .content h2,
html[data-theme="dark"] article .content h3,
html[data-theme="dark"] article .content h4,
html[data-theme="dark"] article .content h5,
html[data-theme="dark"] article .content h6 {
    color: #f2efeb;
  }
html[data-theme="dark"] .meta,
html[data-theme="dark"] .post-list .post-item .meta,
html[data-theme="dark"] article header .meta,
html[data-theme="dark"] article header .meta *,
html[data-theme="dark"] #footer,
html[data-theme="dark"] .project-list .meta,
html[data-theme="dark"] .content .tag-chips .count {
    color: #b3aea8;
  }
html[data-theme="dark"] article header .meta a {
    color: #d6d1cb;
  }
html[data-theme="dark"] hr,
html[data-theme="dark"] body hr {
    border-color: #34373b;
  }
/* the sketch avatar is dark-on-transparent: give it its paper back */
html[data-theme="dark"] #header #logo {
    mix-blend-mode: normal;
    background-color: #e9e5e0;
    border-radius: 12px;
  }
/* code */
html[data-theme="dark"] article .content code {
    background: #22252a;
    border-color: #34373b;
    color: #faf8f5;
  }
html[data-theme="dark"] article .content .highlight,
html[data-theme="dark"] article .content .highlight code,
html[data-theme="dark"] article .content pre:not(.chroma) {
    background: #161b22;
    border-color: #2b3038;
    box-shadow: none;
  }
html[data-theme="dark"] article .content .highlight .btn-copy {
    background: #22252a;
    border-color: #444;
    color: #e6e2dd;
  }
html[data-theme="dark"] article .content blockquote {
    border-left-color: #4a4d52;
    color: #dcd8d3;
  }
html[data-theme="dark"] article .content table th,
html[data-theme="dark"] article .content table td {
    border-color: #34373b;
  }
html[data-theme="dark"] img.term {
    box-shadow: 0 0 0 1px #2b3038;
  }
/* chrome */
html[data-theme="dark"] #header-post #header-toc:hover {
    background: #1f2226;
    border-color: #34373b;
  }
html[data-theme="dark"] #header-post #menu-icon:hover,
html[data-theme="dark"] #header-post #menu-icon-tablet:hover {
    background-color: #1f2226;
  }
html[data-theme="dark"] #subscription-form iframe {
    border-color: #34373b;
  }
/* syntax highlighting: hugo gen chromastyles --style=github-dark */
html[data-theme="dark"] .chroma { color:#e6edf3; background-color:#161b22 }
html[data-theme="dark"] .chroma .err { color:#f85149 }
html[data-theme="dark"] .chroma .lnlinks { outline:none;text-decoration:none;color:inherit }
html[data-theme="dark"] .chroma .lntd { vertical-align:top;padding:0;margin:0;border:0; }
html[data-theme="dark"] .chroma .lntable { border-spacing:0;padding:0;margin:0;border:0; }
html[data-theme="dark"] .chroma .hl { background-color:#6e7681 }
html[data-theme="dark"] .chroma .lnt { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#737679 }
html[data-theme="dark"] .chroma .ln { white-space:pre;-webkit-user-select:none;user-select:none;margin-right:0.4em;padding:0 0.4em 0 0.4em;color:#6e7681 }
html[data-theme="dark"] .chroma .line { display:flex; }
html[data-theme="dark"] .chroma .k { color:#ff7b72 }
html[data-theme="dark"] .chroma .kc { color:#79c0ff }
html[data-theme="dark"] .chroma .kd { color:#ff7b72 }
html[data-theme="dark"] .chroma .kn { color:#ff7b72 }
html[data-theme="dark"] .chroma .kp { color:#79c0ff }
html[data-theme="dark"] .chroma .kr { color:#ff7b72 }
html[data-theme="dark"] .chroma .kt { color:#ff7b72 }
html[data-theme="dark"] .chroma .nc { color:#f0883e;font-weight:bold }
html[data-theme="dark"] .chroma .no { color:#79c0ff;font-weight:bold }
html[data-theme="dark"] .chroma .nd { color:#d2a8ff;font-weight:bold }
html[data-theme="dark"] .chroma .ni { color:#ffa657 }
html[data-theme="dark"] .chroma .ne { color:#f0883e;font-weight:bold }
html[data-theme="dark"] .chroma .nl { color:#79c0ff;font-weight:bold }
html[data-theme="dark"] .chroma .nn { color:#ff7b72 }
html[data-theme="dark"] .chroma .nx { color:#e6edf3 }
html[data-theme="dark"] .chroma .py { color:#79c0ff }
html[data-theme="dark"] .chroma .nt { color:#7ee787 }
html[data-theme="dark"] .chroma .nv { color:#79c0ff }
html[data-theme="dark"] .chroma .vc { color:#79c0ff }
html[data-theme="dark"] .chroma .vg { color:#79c0ff }
html[data-theme="dark"] .chroma .vi { color:#79c0ff }
html[data-theme="dark"] .chroma .vm { color:#79c0ff }
html[data-theme="dark"] .chroma .nf { color:#d2a8ff;font-weight:bold }
html[data-theme="dark"] .chroma .fm { color:#d2a8ff;font-weight:bold }
html[data-theme="dark"] .chroma .l { color:#a5d6ff }
html[data-theme="dark"] .chroma .ld { color:#79c0ff }
html[data-theme="dark"] .chroma .s { color:#a5d6ff }
html[data-theme="dark"] .chroma .sa { color:#79c0ff }
html[data-theme="dark"] .chroma .sb { color:#a5d6ff }
html[data-theme="dark"] .chroma .sc { color:#a5d6ff }
html[data-theme="dark"] .chroma .dl { color:#79c0ff }
html[data-theme="dark"] .chroma .sd { color:#a5d6ff }
html[data-theme="dark"] .chroma .s2 { color:#a5d6ff }
html[data-theme="dark"] .chroma .se { color:#79c0ff }
html[data-theme="dark"] .chroma .sh { color:#79c0ff }
html[data-theme="dark"] .chroma .si { color:#a5d6ff }
html[data-theme="dark"] .chroma .sx { color:#a5d6ff }
html[data-theme="dark"] .chroma .sr { color:#79c0ff }
html[data-theme="dark"] .chroma .s1 { color:#a5d6ff }
html[data-theme="dark"] .chroma .ss { color:#a5d6ff }
html[data-theme="dark"] .chroma .m { color:#a5d6ff }
html[data-theme="dark"] .chroma .mb { color:#a5d6ff }
html[data-theme="dark"] .chroma .mf { color:#a5d6ff }
html[data-theme="dark"] .chroma .mh { color:#a5d6ff }
html[data-theme="dark"] .chroma .mi { color:#a5d6ff }
html[data-theme="dark"] .chroma .il { color:#a5d6ff }
html[data-theme="dark"] .chroma .mo { color:#a5d6ff }
html[data-theme="dark"] .chroma .o { color:#ff7b72;font-weight:bold }
html[data-theme="dark"] .chroma .ow { color:#ff7b72;font-weight:bold }
html[data-theme="dark"] .chroma .or { color:#ff7b72;font-weight:bold }
html[data-theme="dark"] .chroma .c { color:#8b949e;font-style:italic }
html[data-theme="dark"] .chroma .ch { color:#8b949e;font-style:italic }
html[data-theme="dark"] .chroma .cm { color:#8b949e;font-style:italic }
html[data-theme="dark"] .chroma .c1 { color:#8b949e;font-style:italic }
html[data-theme="dark"] .chroma .cs { color:#8b949e;font-weight:bold;font-style:italic }
html[data-theme="dark"] .chroma .cp { color:#8b949e;font-weight:bold;font-style:italic }
html[data-theme="dark"] .chroma .cpf { color:#8b949e;font-weight:bold;font-style:italic }
html[data-theme="dark"] .chroma .gd { color:#ffa198;background-color:#490202 }
html[data-theme="dark"] .chroma .ge { font-style:italic }
html[data-theme="dark"] .chroma .gr { color:#ffa198 }
html[data-theme="dark"] .chroma .gh { color:#79c0ff;font-weight:bold }
html[data-theme="dark"] .chroma .gi { color:#56d364;background-color:#0f5323 }
html[data-theme="dark"] .chroma .go { color:#8b949e }
html[data-theme="dark"] .chroma .gp { color:#8b949e }
html[data-theme="dark"] .chroma .gs { font-weight:bold }
html[data-theme="dark"] .chroma .gu { color:#79c0ff }
html[data-theme="dark"] .chroma .gt { color:#ff7b72 }
html[data-theme="dark"] .chroma .gl { text-decoration:underline }
html[data-theme="dark"] .chroma .w { color:#6e7681 }


/* archive lists line up with the other post lists (theme indents #archive items by 1rem) */
#archive .post-list,
#til .post-list {
  padding-left: 0;
  margin-left: 0;
}
#archive .post-list .post-item,
#til .post-list .post-item {
  margin-left: 0;
}

/* About › Work: fixed-width left column so descriptions line up */
#work .project-item {
  display: flex;
  gap: 1.2rem;
  margin-bottom: 0.9rem;
}
#work .project-item .meta {
  flex: 0 0 7.5rem;
  margin: 0;
}
#work .project-item .date {
  white-space: nowrap;
}
#work .project-item .desc {
  flex: 1;
}
@media (max-width: 600px) {
  #work .project-item {
    flex-direction: column;
    gap: 0.2rem;
  }
  #work .project-item .meta {
    flex: none;
  }
}


/* tag links in the article header: no underline */
article header .meta a.tag-link,
article header .meta .article-tag .tag-link,
.content .article-tag a.tag-link {
  background-image: none !important;
}
article header .meta a.tag-link:hover {
  color: rgba(204, 42, 65, 1);
}

/* drafts (only rendered by `./run watch`) */
.post-label.draft {
  color: #b07a00;
}
.draft-banner {
  display: inline-block;
  margin-bottom: 0.6rem;
  color: #b07a00;
  font-size: 0.8rem;
  font-weight: 600;
  letter-spacing: 0.06em;
}

/* TOC: the list can be taller than the screen. It scrolls (the script keeps the active dot in
   view); on hover show a thin scrollbar so it's clear there's more below. */
#header-post #header-toc:hover {
  scrollbar-width: thin;
}
#header-post #header-toc:hover::-webkit-scrollbar {
  display: block;
  width: 6px;
}
#header-post #header-toc:hover::-webkit-scrollbar-thumb {
  background: #ccc;
  border-radius: 3px;
}
