/* Pagecraft's built-in theme: intentionally plain CSS, easy to override. */
:root { color-scheme: light dark; --paper:#f8f7f3; --surface:#fff; --ink:#1c252b; --muted:#637078; --line:#d9dedb; --accent:#0a665c; --accent-soft:#e1f1ed; --accent-ink:#05483f; --code:#15252d; --radius:12px; --shadow:0 10px 28px rgb(20 43 38 / 7%); --shell:1120px; --measure:730px; --sans:Inter,ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,"Segoe UI",sans-serif; --serif:Charter,"Bitstream Charter","Iowan Old Style","Palatino Linotype",Georgia,serif; }
html[data-theme="dark"] { color-scheme:dark; --paper:#121918; --surface:#192421; --ink:#ecf0eb; --muted:#afbbb4; --line:#31413c; --accent:#72d4be; --accent-soft:#1d3832; --accent-ink:#b7f3e5; --code:#0f181a; --shadow:0 10px 28px rgb(0 0 0 / 22%); }
@media (prefers-color-scheme:dark) { html[data-theme="auto"] { color-scheme:dark; --paper:#121918; --surface:#192421; --ink:#ecf0eb; --muted:#afbbb4; --line:#31413c; --accent:#72d4be; --accent-soft:#1d3832; --accent-ink:#b7f3e5; --code:#0f181a; --shadow:0 10px 28px rgb(0 0 0 / 22%); } }
*{box-sizing:border-box} html{min-height:100%;scroll-behavior:smooth} body{margin:0;min-height:100vh;display:flex;flex-direction:column;background:var(--paper);color:var(--ink);font:16px/1.65 var(--sans);text-rendering:optimizeLegibility} main{flex:1;padding:clamp(2.5rem,6vw,5.75rem) 1.25rem} a{color:var(--accent-ink);text-decoration-color:color-mix(in srgb,var(--accent) 45%,transparent);text-underline-offset:.16em}a:hover{color:var(--accent);text-decoration-thickness:2px}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:3px}button{font:inherit}code{padding:.12em .35em;border-radius:4px;background:var(--accent-soft);font-size:.88em}pre{overflow-x:auto;padding:1.2rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--code);box-shadow:var(--shadow)}pre code{padding:0;background:transparent}img{max-width:100%;height:auto}
.shell{width:min(100%,var(--shell));margin-inline:auto}.skip-link{position:fixed;left:1rem;top:-4rem;z-index:10;padding:.55rem .8rem;background:var(--ink);color:var(--surface);border-radius:6px}.skip-link:focus{top:1rem}.site-header{position:sticky;top:0;z-index:5;border-bottom:1px solid color-mix(in srgb,var(--line) 82%,transparent);background:color-mix(in srgb,var(--paper) 92%,transparent);backdrop-filter:blur(12px)}.header-inner{min-height:4.6rem;display:flex;align-items:center;gap:1rem;padding-inline:1.25rem}.brand{display:inline-flex;align-items:center;gap:.55rem;color:var(--ink);font-weight:760;letter-spacing:-.035em;text-decoration:none}.brand-mark{display:grid;width:1.72rem;height:1.72rem;place-items:center;border-radius:6px;background:var(--accent);color:#fff;font-family:var(--serif);font-size:1.15rem;font-weight:700}.site-nav{display:flex;align-items:center;gap:clamp(.65rem,2vw,1.25rem);margin-left:auto;overflow-x:auto;white-space:nowrap}.site-nav a{color:var(--muted);font-size:.91rem;font-weight:600;text-decoration:none}.site-nav a:hover{color:var(--ink)}.theme-toggle{width:2.25rem;height:2.25rem;flex:0 0 auto;border:1px solid var(--line);border-radius:50%;background:var(--surface);color:var(--ink);cursor:pointer}.preview-banner{padding:.45rem 1rem;border-bottom:1px solid #c99021;background:#fff4d6;color:#5c3b00;text-align:center;font-size:.9rem;font-weight:650}
.hero{max-width:var(--measure);padding-bottom:clamp(2.5rem,5vw,4.5rem)}.eyebrow{margin:0 0 .75rem;color:var(--accent);font-size:.77rem;font-weight:800;letter-spacing:.12em;text-transform:uppercase}.eyebrow a{color:inherit;text-decoration:none}h1,h2,h3{color:var(--ink);font-family:var(--serif);font-weight:650;letter-spacing:-.035em;line-height:1.08}h1{max-width:13ch;margin:0;font-size:clamp(2.75rem,8vw,5.2rem)}h2{margin:0;font-size:clamp(1.8rem,4vw,2.6rem)}h3{margin:0;font-size:clamp(1.35rem,2.5vw,1.7rem)}.hero-copy,.article-dek{max-width:61ch;margin:1rem 0 0;color:var(--muted);font-size:clamp(1.05rem,2vw,1.25rem)}.section-heading{display:flex;align-items:baseline;justify-content:space-between;gap:1rem;margin-bottom:1.2rem}.section-heading span{color:var(--muted);font-size:.9rem}.post-list{display:grid;gap:.95rem}.post-card{padding:clamp(1.2rem,3vw,1.7rem);border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);box-shadow:0 1px 0 rgb(255 255 255 / 35%) inset;transition:transform 150ms ease,border-color 150ms ease,box-shadow 150ms ease}.post-card:hover{transform:translateY(-2px);border-color:color-mix(in srgb,var(--accent) 45%,var(--line));box-shadow:var(--shadow)}.post-card h3{margin-top:.26rem}.post-card h3 a{color:var(--ink);text-decoration:none}.post-card p{margin:.45rem 0 0;color:var(--muted)}.post-card-meta,.article-meta{display:flex;flex-wrap:wrap;gap:.48rem;align-items:center;color:var(--muted);font-size:.84rem}.taxonomy-row{display:flex;flex-wrap:wrap;gap:.42rem;margin-top:1rem}.tag,.category,.status-pill{display:inline-flex;align-items:center;min-height:1.7rem;padding:.15rem .52rem;border-radius:999px;font-size:.76rem;font-weight:700;line-height:1;text-decoration:none}.tag{background:var(--accent-soft);color:var(--accent-ink)}.category{border:1px solid color-mix(in srgb,var(--accent) 38%,var(--line));color:var(--accent-ink)}.status-pill{background:#fff1cf;color:#795000}
.article{width:min(100%,var(--measure));margin-inline:auto}.article-header{margin-bottom:2rem}.article-header h1{max-width:none;font-size:clamp(2.45rem,6vw,4.15rem)}.article-meta{margin-top:1.2rem}.article-image{display:block;width:100%;margin:0 0 2.2rem;border-radius:var(--radius);background:var(--accent-soft)}.prose{font-family:var(--serif);font-size:1.13rem;line-height:1.78}.prose>:first-child{margin-top:0}.prose h2,.prose h3{margin-top:2.3em}.prose p,.prose ul,.prose ol,.prose blockquote{max-width:65ch}.prose blockquote{margin:1.6rem 0;padding:.1rem 1.2rem;border-left:3px solid var(--accent);color:var(--muted)}.prose table{display:block;overflow-x:auto;width:100%;border-collapse:collapse;font-family:var(--sans);font-size:.91rem}.prose th,.prose td{padding:.65rem .75rem;border:1px solid var(--line);text-align:left}.prose th{background:var(--accent-soft)}.article-footer{margin-top:3rem;padding-top:1.25rem;border-top:1px solid var(--line)}.article-footer h2{font-family:var(--sans);font-size:.95rem;letter-spacing:0}
.listing-page{width:min(100%,850px)}.listing-page>h1{max-width:none}.term-grid{display:grid;grid-template-columns:repeat(auto-fit,minmax(180px,1fr));gap:.8rem;margin-top:2rem}.term-card{display:flex;flex-direction:column;gap:.2rem;min-height:5.6rem;justify-content:center;padding:1rem;border:1px solid var(--line);border-radius:var(--radius);background:var(--surface);color:var(--ink);text-decoration:none}.term-card:hover{border-color:var(--accent);box-shadow:var(--shadow)}.term-card span{color:var(--muted);font-size:.85rem}.archive-list{margin-top:2.25rem}.archive-group{margin-bottom:2.2rem}.archive-group h2{padding-bottom:.45rem;border-bottom:1px solid var(--line);font-family:var(--sans);font-size:.98rem;letter-spacing:.02em}.archive-group ul{padding:0;list-style:none}.archive-group li{display:grid;grid-template-columns:2rem minmax(0,1fr) auto;gap:.65rem;align-items:baseline;padding:.45rem 0}.archive-group time,.archive-group span{color:var(--muted);font-size:.84rem}.empty-state{padding:1rem 1.2rem;border:1px dashed var(--line);border-radius:var(--radius);color:var(--muted)}.pagination{display:grid;grid-template-columns:1fr auto 1fr;align-items:center;gap:1rem;margin-top:2.2rem;color:var(--muted);font-size:.9rem;text-align:center}.pagination .button:last-child{justify-self:end}.button{display:inline-flex;justify-content:center;padding:.5rem .75rem;border:1px solid var(--line);border-radius:7px;background:var(--surface);color:var(--ink);font-weight:700;text-decoration:none}.button:hover{border-color:var(--accent)}.site-footer{margin-top:auto;border-top:1px solid var(--line)}.footer-inner{display:flex;align-items:center;justify-content:space-between;gap:1rem;padding:1.6rem 1.25rem;color:var(--muted);font-size:.85rem}.footer-inner p{margin:0}
@media (max-width:680px){.header-inner{min-height:auto;flex-wrap:wrap;padding-block:.75rem}.site-nav{order:3;width:100%;margin-left:0;padding-bottom:.1rem}.theme-toggle{margin-left:auto}main{padding-inline:1rem}.archive-group li{grid-template-columns:1.7rem minmax(0,1fr)}.archive-group li span{display:none}.footer-inner{align-items:flex-start;flex-direction:column}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition-duration:.01ms!important;animation-duration:.01ms!important}}

pre { line-height: 125%; }
td.linenos .normal { color: #6e7681; background-color: #0d1117; padding-left: 5px; padding-right: 5px; }
span.linenos { color: #6e7681; background-color: #0d1117; padding-left: 5px; padding-right: 5px; }
td.linenos .special { color: #e6edf3; background-color: #6e7681; padding-left: 5px; padding-right: 5px; }
span.linenos.special { color: #e6edf3; background-color: #6e7681; padding-left: 5px; padding-right: 5px; }
.highlight .hll { background-color: #6e7681 }
.highlight { background: #0d1117; color: #E6EDF3 }
.highlight .c { color: #8B949E; font-style: italic } /* Comment */
.highlight .err { color: #F85149 } /* Error */
.highlight .esc { color: #E6EDF3 } /* Escape */
.highlight .g { color: #E6EDF3 } /* Generic */
.highlight .k { color: #FF7B72 } /* Keyword */
.highlight .l { color: #A5D6FF } /* Literal */
.highlight .n { color: #E6EDF3 } /* Name */
.highlight .o { color: #FF7B72; font-weight: bold } /* Operator */
.highlight .x { color: #E6EDF3 } /* Other */
.highlight .p { color: #E6EDF3 } /* Punctuation */
.highlight .ch { color: #8B949E; font-style: italic } /* Comment.Hashbang */
.highlight .cm { color: #8B949E; font-style: italic } /* Comment.Multiline */
.highlight .cp { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Preproc */
.highlight .cpf { color: #8B949E; font-style: italic } /* Comment.PreprocFile */
.highlight .c1 { color: #8B949E; font-style: italic } /* Comment.Single */
.highlight .cs { color: #8B949E; font-weight: bold; font-style: italic } /* Comment.Special */
.highlight .gd { color: #FFA198; background-color: #490202 } /* Generic.Deleted */
.highlight .ge { color: #E6EDF3; font-style: italic } /* Generic.Emph */
.highlight .ges { color: #E6EDF3; font-weight: bold; font-style: italic } /* Generic.EmphStrong */
.highlight .gr { color: #FFA198 } /* Generic.Error */
.highlight .gh { color: #79C0FF; font-weight: bold } /* Generic.Heading */
.highlight .gi { color: #56D364; background-color: #0F5323 } /* Generic.Inserted */
.highlight .go { color: #8B949E } /* Generic.Output */
.highlight .gp { color: #8B949E } /* Generic.Prompt */
.highlight .gs { color: #E6EDF3; font-weight: bold } /* Generic.Strong */
.highlight .gu { color: #79C0FF } /* Generic.Subheading */
.highlight .gt { color: #FF7B72 } /* Generic.Traceback */
.highlight .g-Underline { color: #E6EDF3; text-decoration: underline } /* Generic.Underline */
.highlight .kc { color: #79C0FF } /* Keyword.Constant */
.highlight .kd { color: #FF7B72 } /* Keyword.Declaration */
.highlight .kn { color: #FF7B72 } /* Keyword.Namespace */
.highlight .kp { color: #79C0FF } /* Keyword.Pseudo */
.highlight .kr { color: #FF7B72 } /* Keyword.Reserved */
.highlight .kt { color: #FF7B72 } /* Keyword.Type */
.highlight .ld { color: #79C0FF } /* Literal.Date */
.highlight .m { color: #A5D6FF } /* Literal.Number */
.highlight .s { color: #A5D6FF } /* Literal.String */
.highlight .na { color: #E6EDF3 } /* Name.Attribute */
.highlight .nb { color: #E6EDF3 } /* Name.Builtin */
.highlight .nc { color: #F0883E; font-weight: bold } /* Name.Class */
.highlight .no { color: #79C0FF; font-weight: bold } /* Name.Constant */
.highlight .nd { color: #D2A8FF; font-weight: bold } /* Name.Decorator */
.highlight .ni { color: #FFA657 } /* Name.Entity */
.highlight .ne { color: #F0883E; font-weight: bold } /* Name.Exception */
.highlight .nf { color: #D2A8FF; font-weight: bold } /* Name.Function */
.highlight .nl { color: #79C0FF; font-weight: bold } /* Name.Label */
.highlight .nn { color: #FF7B72 } /* Name.Namespace */
.highlight .nx { color: #E6EDF3 } /* Name.Other */
.highlight .py { color: #79C0FF } /* Name.Property */
.highlight .nt { color: #7EE787 } /* Name.Tag */
.highlight .nv { color: #79C0FF } /* Name.Variable */
.highlight .ow { color: #FF7B72; font-weight: bold } /* Operator.Word */
.highlight .pm { color: #E6EDF3 } /* Punctuation.Marker */
.highlight .w { color: #6E7681 } /* Text.Whitespace */
.highlight .mb { color: #A5D6FF } /* Literal.Number.Bin */
.highlight .mf { color: #A5D6FF } /* Literal.Number.Float */
.highlight .mh { color: #A5D6FF } /* Literal.Number.Hex */
.highlight .mi { color: #A5D6FF } /* Literal.Number.Integer */
.highlight .mo { color: #A5D6FF } /* Literal.Number.Oct */
.highlight .sa { color: #79C0FF } /* Literal.String.Affix */
.highlight .sb { color: #A5D6FF } /* Literal.String.Backtick */
.highlight .sc { color: #A5D6FF } /* Literal.String.Char */
.highlight .dl { color: #79C0FF } /* Literal.String.Delimiter */
.highlight .sd { color: #A5D6FF } /* Literal.String.Doc */
.highlight .s2 { color: #A5D6FF } /* Literal.String.Double */
.highlight .se { color: #79C0FF } /* Literal.String.Escape */
.highlight .sh { color: #79C0FF } /* Literal.String.Heredoc */
.highlight .si { color: #A5D6FF } /* Literal.String.Interpol */
.highlight .sx { color: #A5D6FF } /* Literal.String.Other */
.highlight .sr { color: #79C0FF } /* Literal.String.Regex */
.highlight .s1 { color: #A5D6FF } /* Literal.String.Single */
.highlight .ss { color: #A5D6FF } /* Literal.String.Symbol */
.highlight .bp { color: #E6EDF3 } /* Name.Builtin.Pseudo */
.highlight .fm { color: #D2A8FF; font-weight: bold } /* Name.Function.Magic */
.highlight .vc { color: #79C0FF } /* Name.Variable.Class */
.highlight .vg { color: #79C0FF } /* Name.Variable.Global */
.highlight .vi { color: #79C0FF } /* Name.Variable.Instance */
.highlight .vm { color: #79C0FF } /* Name.Variable.Magic */
.highlight .il { color: #A5D6FF } /* Literal.Number.Integer.Long */