@import url("https://fonts.googleapis.com/css2?family=Roboto+Mono&display=swap");
@import url("https://fonts.googleapis.com/css2?family=Inter:wght@400;700&display=swap");
html { height: 100%; }

body { font-family: "Inter", -apple-system, "avenir next", avenir, roboto, noto, ubuntu, "helvetica neue", helvetica, sans-serif; font-size: 1.0rem; line-height: 2; margin: 0; min-height: 100%; }

pre, code { font-family: "Roboto Mono", "Courier New", monospace; font-size: 0.9rem; }

h2, h3, h4, h5 { margin-top: 1.5em; }

hr { margin: 1em 0; }

hr.page-break { text-align: center; border: 0; }
hr.page-break:before { content: "-----"; }
hr.page-break:after { content: attr(data-content) "-----"; }

p { margin: 1em 0; }

li { margin: 0.4em 0; }

.w { max-width: 720px; margin: 0 auto; padding: 4em 2em; }

table, th, td { width: 100%; border: thin solid black; border-collapse: collapse; padding: 0.4em; }

div.highlighter-rouge pre code, pre code.highlighter-rouge { display: block; overflow-x: auto; padding: 1em; }

blockquote { font-style: italic; border: thin solid black; padding: 1em; }
blockquote p { margin: 0; }

img { max-width: 100%; display: block; margin: 0 auto; }

html[data-theme="dark"] html, html[data-theme="dark"] body { --headings: #74c0fc; --links: #91A7FF; --highlight: #41C7C7; --bg: #1f242A; --bg-secondary: #323945; --text: #adb5bd; --text-secondary: #9CA3AF; --code-text: #91A7FF; --share-text: #C4C4C4; }

html[data-theme="light"] html, html[data-theme="light"] body { --bg: #FFF; --bg-secondary: #f3f4f6; --headings: #1e293b; --text: #374151; --text-secondary: #6b7280; --links: #6366f1; --highlight: #FFECB2; --code-text: #9D174D; --share-text: #999; }

@media (prefers-color-scheme: dark) { body[data-theme="auto"] html, body[data-theme="auto"] body { --headings: #74c0fc; --links: #91A7FF; --highlight: #41C7C7; --bg: #1f242A; --bg-secondary: #323945; --text: #adb5bd; --text-secondary: #9CA3AF; --code-text: #91A7FF; --share-text: #C4C4C4; } }
@media (prefers-color-scheme: light) { body[data-theme="auto"] html, body[data-theme="auto"] body { --bg: #FFF; --bg-secondary: #f3f4f6; --headings: #1e293b; --text: #374151; --text-secondary: #6b7280; --links: #6366f1; --highlight: #FFECB2; --code-text: #9D174D; --share-text: #999; } }
html, body { background-color: var(--bg); color: var(--text); }

h1, h2, h3, h4, h5, h6 { color: var(--headings); }

p, strong, b, em, small, li, hr, table, figcaption { color: var(--text); }

.highlight, pre code, blockquote { border-radius: 0.5em; }

blockquote { background-color: var(--bg-secondary); border: 1px var(--border) solid; }

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

*:target { background-color: var(--bg-secondary); }

html.transition, html.transition *, html.transition *:before, html.transition *:after { transition: all 250ms !important; transition-delay: 0 !important; }

.theme-toggle { color: var(--text); background-color: transparent; padding: 4px; cursor: pointer; margin: 1em; position: fixed; right: 0; top: 0; border: 2px transparent solid; outline: none; }

.theme-toggle:hover { color: var(--links); outline: none; }

.theme-toggle:focus { outline: none; }

.dashed { border-top: 1px var(--text) dashed; margin: 0.5em 0; }

mark { padding: 0.4em; background-color: var(--highlight); font-size: 0.6em; letter-spacing: 1px; }

.post-date { color: var(--text-secondary); margin-top: 1rem; font-size: 0.7em; font-family: "Roboto Mono", "Courier New", monospace; }

.home-date { font-family: "Roboto Mono", "Courier New", monospace; }

.post-list-item a { text-decoration: none; }

.text-bold { font-weight: bold; }

.text-upcase { text-transform: uppercase; letter-spacing: 1px; }

p code, li code { background-color: var(--bg-secondary); padding: 0.2rem; color: var(--code-text); font-weight: bold; }

.post-title { margin-bottom: -1.5rem; }

.project-title { margin-bottom: 0.8rem; }

.credits { font-size: 0.8em; color: var(--text); margin: 8em auto -4em auto; text-align: center; }
.credits a { color: var(--text); text-decoration: none; font-weight: bold; }
.credits a:hover { color: var(--links); }

.tag { font-family: "Roboto Mono", "Courier New", monospace; color: var(--text-secondary); padding: 0.4em 1em; margin-right: 0.5em; border-radius: 1em; background-color: var(--bg-secondary); font-size: 0.7em; font-weight: bold; text-transform: lowercase; }

ul.horizontal-list { display: flex; margin-top: 0em; margin-left: -40px; flex-wrap: wrap; }
ul.horizontal-list li { display: inline; margin-right: 1em; }
ul.horizontal-list li a { text-decoration: none; font-weight: normal; }

.card { padding: 1em; border: 1px var(--text) solid; width: 11em; height: auto; text-align: center; font-size: 1em; align-items: center; background-color: var(--bg-secondary); margin-bottom: 0.8em; border-radius: 0.5em; }
.card .header { color: var(--links); }
.card .body { font-size: 0.8em; }
.card hr { margin: 0.5em 0; }

/* Responsive cards - one column layout on small screens */
@media screen and (max-width: 600px) { ul.horizontal-list li.card { width: 100%; display: block; margin-bottom: 1em; margin-left: 1em; }
  ul.horizontal-list li.card a, ul.horizontal-list li.card .header { font-size: 1em; } }
.highlight .hll { background-color: #515151; }

/*.highlight  { background: #2d2d2d; color: #f2f0ec }*/
.highlight { background: #1A1F35; color: #f2f0ec; }

.highlight .c { color: #747369; }

/* Comment */
.highlight .err { color: #f2777a; }

/* Error */
.highlight .k { color: #cc99cc; }

/* Keyword */
.highlight .l { color: #f99157; }

/* Literal */
.highlight .n { color: #f2f0ec; }

/* Name */
.highlight .o { color: #66cccc; }

/* Operator */
.highlight .p { color: #f2f0ec; }

/* Punctuation */
.highlight .ch { color: #747369; }

/* Comment.Hashbang */
.highlight .cm { color: #747369; }

/* Comment.Multiline */
.highlight .cp { color: #747369; }

/* Comment.Preproc */
.highlight .cpf { color: #747369; }

/* Comment.PreprocFile */
.highlight .c1 { color: #747369; }

/* Comment.Single */
.highlight .cs { color: #747369; }

/* Comment.Special */
.highlight .gd { color: #f2777a; }

/* Generic.Deleted */
.highlight .ge { font-style: italic; }

/* Generic.Emph */
.highlight .gh { color: #f2f0ec; font-weight: bold; }

/* Generic.Heading */
.highlight .gi { color: #99cc99; }

/* Generic.Inserted */
.highlight .gp { color: #747369; font-weight: bold; }

/* Generic.Prompt */
.highlight .gs { font-weight: bold; }

/* Generic.Strong */
.highlight .gu { color: #66cccc; font-weight: bold; }

/* Generic.Subheading */
.highlight .kc { color: #cc99cc; }

/* Keyword.Constant */
.highlight .kd { color: #cc99cc; }

/* Keyword.Declaration */
.highlight .kn { color: #66cccc; }

/* Keyword.Namespace */
.highlight .kp { color: #cc99cc; }

/* Keyword.Pseudo */
.highlight .kr { color: #cc99cc; }

/* Keyword.Reserved */
.highlight .kt { color: #ffcc66; }

/* Keyword.Type */
.highlight .ld { color: #99cc99; }

/* Literal.Date */
.highlight .m { color: #f99157; }

/* Literal.Number */
.highlight .s { color: #99cc99; }

/* Literal.String */
.highlight .na { color: #6699cc; }

/* Name.Attribute */
.highlight .nb { color: #f2f0ec; }

/* Name.Builtin */
.highlight .nc { color: #ffcc66; }

/* Name.Class */
.highlight .no { color: #f2777a; }

/* Name.Constant */
.highlight .nd { color: #66cccc; }

/* Name.Decorator */
.highlight .ni { color: #f2f0ec; }

/* Name.Entity */
.highlight .ne { color: #f2777a; }

/* Name.Exception */
.highlight .nf { color: #6699cc; }

/* Name.Function */
.highlight .nl { color: #f2f0ec; }

/* Name.Label */
.highlight .nn { color: #ffcc66; }

/* Name.Namespace */
.highlight .nx { color: #6699cc; }

/* Name.Other */
.highlight .py { color: #f2f0ec; }

/* Name.Property */
.highlight .nt { color: #66cccc; }

/* Name.Tag */
.highlight .nv { color: #f2777a; }

/* Name.Variable */
.highlight .ow { color: #66cccc; }

/* Operator.Word */
.highlight .w { color: #f2f0ec; }

/* Text.Whitespace */
.highlight .mb { color: #f99157; }

/* Literal.Number.Bin */
.highlight .mf { color: #f99157; }

/* Literal.Number.Float */
.highlight .mh { color: #f99157; }

/* Literal.Number.Hex */
.highlight .mi { color: #f99157; }

/* Literal.Number.Integer */
.highlight .mo { color: #f99157; }

/* Literal.Number.Oct */
.highlight .sa { color: #99cc99; }

/* Literal.String.Affix */
.highlight .sb { color: #99cc99; }

/* Literal.String.Backtick */
.highlight .sc { color: #f2f0ec; }

/* Literal.String.Char */
.highlight .dl { color: #99cc99; }

/* Literal.String.Delimiter */
.highlight .sd { color: #747369; }

/* Literal.String.Doc */
.highlight .s2 { color: #99cc99; }

/* Literal.String.Double */
.highlight .se { color: #f99157; }

/* Literal.String.Escape */
.highlight .sh { color: #99cc99; }

/* Literal.String.Heredoc */
.highlight .si { color: #f99157; }

/* Literal.String.Interpol */
.highlight .sx { color: #99cc99; }

/* Literal.String.Other */
.highlight .sr { color: #99cc99; }

/* Literal.String.Regex */
.highlight .s1 { color: #99cc99; }

/* Literal.String.Single */
.highlight .ss { color: #99cc99; }

/* Literal.String.Symbol */
.highlight .bp { color: #f2f0ec; }

/* Name.Builtin.Pseudo */
.highlight .fm { color: #6699cc; }

/* Name.Function.Magic */
.highlight .vc { color: #f2777a; }

/* Name.Variable.Class */
.highlight .vg { color: #f2777a; }

/* Name.Variable.Global */
.highlight .vi { color: #f2777a; }

/* Name.Variable.Instance */
.highlight .vm { color: #f2777a; }

/* Name.Variable.Magic */
.highlight .il { color: #f99157; }

/* Literal.Number.Integer.Long */
body { min-height: 100vh; }

.page-content { min-height: 100vh; }

.page-shell { width: min(60vw, 1400px); max-width: none; margin: 0 auto; padding: 4em 2em; box-sizing: border-box; display: flex; flex-direction: column; min-height: calc(100vh - 8em); }

.nav-link { text-decoration: none; }

.nav-link.active { color: var(--headings); font-weight: bold; text-decoration: underline; text-underline-offset: 0.2em; }

.home-intro h1 { margin-bottom: 0.4rem; }

.home-intro p { margin-top: 0; max-width: 44rem; }

.home-section-title { margin-top: 1.5rem; }

.post-list-item { margin: 0.65rem 0; }

.post-list-item a { text-decoration: none; }

.post-shell .back-link { text-decoration: none; }

.post-shell .post-title { margin-top: 0.6rem; margin-bottom: -1rem; }

pre, code, pre code, div.highlighter-rouge pre code, pre code.highlighter-rouge { line-height: 1.35; }

.highlight .w, .highlighter-rouge .w { max-width: none; margin: 0; padding: 0; }

.site-footer-nav { margin-top: auto; padding-top: 3rem; }

img + em { display: block; text-align: center; }

.post-figure { margin: 2rem auto; text-align: center; }

.post-figure img { margin: 0 auto; }

.post-figure figcaption { margin-top: 0.75rem; text-align: center; font-style: italic; color: var(--text-secondary); }

table { table-layout: fixed; }

table th:nth-child(1), table td:nth-child(1) { width: 22%; }

table th:nth-child(2), table td:nth-child(2) { width: 39%; }

table th:nth-child(3), table td:nth-child(3) { width: 39%; }

table th, table td { vertical-align: top; word-break: break-word; }

@media screen and (max-width: 900px) { .page-shell { width: 100%; max-width: 100%; padding: 2rem 1rem; } }
