@charset "UTF-8";:root{--font-body:"Manrope", system-ui, sans-serif;--font-heading:"Bricolage Grotesque", system-ui, sans-serif;--font-mono:"JetBrains Mono", ui-monospace, monospace;--type-xs:0.8rem;--type-sm:0.875rem;--type-base:1rem;--type-md:1.125rem;--type-lg:1.25rem;--type-xl:clamp(1.4rem, 1.2rem + 0.5vw, 1.563rem);--type-2xl:clamp(1.6rem, 1.3rem + 0.75vw, 1.953rem);--type-3xl:clamp(1.8rem, 1.4rem + 1vw, 2.441rem);--space-1:0.25rem;--space-2:0.5rem;--space-3:0.75rem;--space-4:1rem;--space-5:1.5rem;--space-6:2rem;--space-7:3rem;--space-8:4rem;--space-9:6rem;--color-bg:#2b2d35;--color-bg:oklch(0.20 0.012 250);--color-text:#bbbec6;--color-text:oklch(0.78 0.012 250);--color-primary:#7fafc5;--color-primary:oklch(0.68 0.06 230);--color-primary-tint:rgba(127, 175, 197, 0.10);--color-primary-tint:oklch(0.68 0.06 230 / 0.10);--color-primary-hover:oklch(0.68 0.06 230 / 0.20);--color-primary-faint:oklch(0.68 0.06 230 / 0.05);--color-primary-underline:oklch(0.68 0.06 230 / 0.30);--color-text-muted:#969ba3;--color-text-muted:oklch(0.64 0.012 250);--color-text-dimmed:#8a8f97;--color-text-dimmed:oklch(0.62 0.012 250);--color-border:oklch(0.30 0.008 250);--color-heading:#d8dae0;--color-heading:oklch(0.88 0.008 250);--color-lead:oklch(0.72 0.03 280);--callout-note:oklch(0.68 0.06 230);--callout-note-bg:oklch(0.68 0.06 230 / 0.06);--callout-tip:oklch(0.64 0.06 165);--callout-tip-bg:oklch(0.64 0.06 165 / 0.06);--callout-warning:oklch(0.68 0.07 75);--callout-warning-bg:oklch(0.68 0.07 75 / 0.06);--callout-danger:oklch(0.62 0.08 25);--callout-danger-bg:oklch(0.62 0.08 25 / 0.06);--callout-info:oklch(0.68 0.06 230);--callout-info-bg:oklch(0.68 0.06 230 / 0.06);--callout-question:oklch(0.64 0.06 300);--callout-question-bg:oklch(0.64 0.06 300 / 0.06);--callout-example:oklch(0.68 0.07 60);--callout-example-bg:oklch(0.68 0.07 60 / 0.06);--callout-quote:oklch(0.62 0.012 250);--callout-quote-bg:oklch(0.62 0.012 250 / 0.06)}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);line-height:1.3;text-wrap:balance}h1{font-size:var(--type-2xl)}h2{font-size:var(--type-xl);margin-top:var(--space-7)}h3{font-size:var(--type-lg);margin-top:var(--space-6)}h4{font-size:var(--type-md);margin-top:var(--space-5)}h5{font-size:var(--type-base);margin-top:var(--space-5)}h6{font-size:var(--type-sm);margin-top:var(--space-5)}.callout{border:1px solid var(--callout-note);border-radius:4px;background:var(--callout-note-bg);padding:var(--space-3)var(--space-4);margin:var(--space-4)0;font-style:normal}.callout-title,.callout>summary{font-family:var(--font-heading);font-weight:600;font-size:var(--type-sm);text-transform:uppercase;letter-spacing:.04em;color:var(--callout-note);margin:0 0 var(--space-1)}.callout>summary{cursor:pointer;list-style:none}.callout>summary::-webkit-details-marker{display:none}.callout-tip,.callout-hint,.callout-important{border-color:var(--callout-tip);background:var(--callout-tip-bg)}.callout-tip .callout-title,.callout-hint .callout-title,.callout-important .callout-title,.callout-tip>summary,.callout-hint>summary,.callout-important>summary{color:var(--callout-tip)}.callout-warning,.callout-caution,.callout-attention{border-color:var(--callout-warning);background:var(--callout-warning-bg)}.callout-warning .callout-title,.callout-caution .callout-title,.callout-attention .callout-title,.callout-warning>summary,.callout-caution>summary,.callout-attention>summary{color:var(--callout-warning)}.callout-danger,.callout-error,.callout-bug{border-color:var(--callout-danger);background:var(--callout-danger-bg)}.callout-danger .callout-title,.callout-error .callout-title,.callout-bug .callout-title,.callout-danger>summary,.callout-error>summary,.callout-bug>summary{color:var(--callout-danger)}.callout-abstract,.callout-summary,.callout-tldr,.callout-info,.callout-todo{border-color:var(--callout-info);background:var(--callout-info-bg)}.callout-abstract .callout-title,.callout-summary .callout-title,.callout-tldr .callout-title,.callout-info .callout-title,.callout-todo .callout-title,.callout-abstract>summary,.callout-summary>summary,.callout-tldr>summary,.callout-info>summary,.callout-todo>summary{color:var(--callout-info)}.callout-question,.callout-help,.callout-faq{border-color:var(--callout-question);background:var(--callout-question-bg)}.callout-question .callout-title,.callout-help .callout-title,.callout-faq .callout-title,.callout-question>summary,.callout-help>summary,.callout-faq>summary{color:var(--callout-question)}.callout-example{border-color:var(--callout-example);background:var(--callout-example-bg)}.callout-example .callout-title,.callout-example>summary{color:var(--callout-example)}.callout-quote,.callout-cite{border-color:var(--callout-quote);background:var(--callout-quote-bg)}.callout-quote .callout-title,.callout-cite .callout-title,.callout-quote>summary,.callout-cite>summary{color:var(--callout-quote)}.callout-success,.callout-check,.callout-done{border-color:var(--callout-tip);background:var(--callout-tip-bg)}.callout-success .callout-title,.callout-check .callout-title,.callout-done .callout-title,.callout-success>summary,.callout-check>summary,.callout-done>summary{color:var(--callout-tip)}.callout-failure,.callout-fail,.callout-missing{border-color:var(--callout-danger);background:var(--callout-danger-bg)}.callout-failure .callout-title,.callout-fail .callout-title,.callout-missing .callout-title,.callout-failure>summary,.callout-fail>summary,.callout-missing>summary{color:var(--callout-danger)}.post-header{font-size:var(--type-sm)}.post-tags{list-style:none;padding:0;margin:var(--space-1)0 0;display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1)}.tags-label{font-family:var(--font-heading);text-transform:uppercase;letter-spacing:.04em;font-size:var(--type-xs);color:var(--color-text-dimmed)}a.blog-tags{display:inline-block;background:var(--color-primary-tint);border-radius:3px;padding:1px var(--space-2);font-family:var(--font-heading);font-size:var(--type-xs);line-height:1.5;color:var(--color-text-muted);text-decoration:none}.post-header a.blog-tags{font-size:calc(var(--type-xs)/.875)}.tag-cloud{list-style:none;padding:0;display:flex;flex-wrap:wrap;gap:var(--space-2)}.tag-cloud a.blog-tags::before{content:"#"}a.blog-tags:hover{background:var(--color-primary-hover);color:var(--color-primary)}.post-meta{color:var(--color-text-muted);margin:var(--space-2)0 0;font-variant-numeric:tabular-nums}.post-meta-item{display:inline-block;margin-inline-end:var(--space-4)}.post-meta-label{font-family:var(--font-heading);text-transform:uppercase;letter-spacing:.04em;font-size:var(--type-xs);color:var(--color-text-dimmed)}.post-content{counter-reset:figures}.post-content img{display:block;margin-inline:auto}figure{margin:var(--space-6)0;text-align:center}figcaption{font-size:var(--type-sm);color:var(--color-text-muted);margin-top:var(--space-2);text-align:start}figcaption .figure-number::before{counter-increment:figures;content:"Figure " counter(figures)". ";font-family:var(--font-heading);font-weight:600;color:var(--color-text-dimmed)}.footnotes{margin-top:var(--space-7);font-size:var(--type-sm);color:var(--color-text-muted);line-height:1.6}.footnotes hr{border:0;border-top:none;text-align:center;margin:0 0 var(--space-5)}.footnotes hr::after{content:"· · ·";display:block;position:relative;top:-.7em;font-size:var(--type-sm);letter-spacing:.4em;color:var(--color-text-dimmed)}.footnotes ol{padding-inline-start:var(--space-4)}.footnotes li{margin-bottom:var(--space-3);padding-inline-start:var(--space-1);scroll-margin-top:var(--space-5)}sup[id^=fnref]{scroll-margin-top:var(--space-5)}.footnotes li::marker{font-family:var(--font-heading);font-weight:600;font-size:var(--type-xs);color:var(--color-primary)}.footnote-ref{font-family:var(--font-heading);font-weight:600;font-size:.75em;color:var(--color-primary);text-decoration:none;margin-inline-start:1px}.footnote-ref:hover{text-decoration:underline}.footnote-backref{font-size:var(--type-xs);color:var(--color-text-dimmed);text-decoration:none;margin-inline-start:var(--space-1)}.footnote-backref:hover{color:var(--color-primary)}hr{border:0;text-align:center;margin:var(--space-6)0}hr::after{content:"· · ·";display:block;font-size:var(--type-sm);letter-spacing:.4em;color:var(--color-text-dimmed)}.post-preamble{margin:var(--space-5)0 var(--space-6);padding:var(--space-4);background:var(--color-primary-faint);border-radius:4px}.post-lead{font-size:var(--type-md);line-height:1.65;color:var(--color-lead);margin:0}.post-preamble+.toc{margin-top:var(--space-3)}.post-content :is(h1,h2,h3,h4,h5,h6){position:relative;scroll-margin-top:var(--space-5)}.post-content .heading-anchor{position:absolute;inset-inline-start:-1.2em;width:1.2em;text-align:center;opacity:0;text-decoration:none;color:var(--color-primary);font-family:var(--font-heading);font-weight:400;transition:opacity .15s ease}.post-content :is(h1,h2,h3,h4,h5,h6):hover .heading-anchor,.post-content .heading-anchor:hover,.post-content .heading-anchor:focus-visible{opacity:.6}@media(prefers-reduced-motion:reduce){.post-content .heading-anchor{transition:none}}table{border-collapse:collapse;width:100%;margin:var(--space-5)0;border-top:2px solid var(--color-text-muted);border-bottom:2px solid var(--color-text-muted);font-size:var(--type-sm);font-variant-numeric:tabular-nums}th,td{border:none;padding:var(--space-2)var(--space-3)}thead th{font-family:var(--font-heading);border-bottom:1px solid var(--color-text-muted);padding:var(--space-2)var(--space-3);text-align:left;font-weight:600;color:var(--color-heading)}tbody tr:first-child td{padding-top:var(--space-2)}tbody tr:last-child td{padding-bottom:var(--space-2)}.home-intro{display:flex;gap:var(--space-6);align-items:start;margin:var(--space-6)0}.home-profile{flex-shrink:0;text-align:center}.profile-photo{width:150px;height:150px;border-radius:50%;object-fit:cover}.home-content{flex:1;min-width:0}.home-content>:first-child{margin-top:0}.social-links{display:grid;grid-template-columns:1fr 1fr;gap:var(--space-2);margin-top:var(--space-3);max-width:150px}.social-pill{display:block;background:var(--color-primary-tint);border-radius:3px;padding:2px 0;font-family:var(--font-heading);font-size:var(--type-xs);line-height:1.5;color:var(--color-text-muted);text-decoration:none;text-align:center}.social-pill:hover{background:var(--color-primary-hover);color:var(--color-primary)}@media(max-width:480px){.home-intro{flex-direction:column;align-items:center;text-align:center}}a{color:var(--color-primary);text-decoration:none;transition:color .15s}a:hover{text-decoration:underline;text-underline-offset:3px;text-decoration-thickness:1px;text-decoration-skip-ink:auto}nav a{font-family:var(--font-heading)}nav a.active{color:var(--color-heading)}.post-content a[href^=http]::after,.post-content a[href^="//"]::after{content:" ↗";font-size:.75em;opacity:.4}@media(prefers-reduced-motion:reduce){a{transition:none}}.toc{font-size:var(--type-sm);margin:var(--space-5)0 var(--space-6);border:1px solid var(--color-border);border-radius:4px;padding:var(--space-3)var(--space-4)}.toc summary{cursor:pointer;font-family:var(--font-heading);font-weight:600;color:var(--color-text-dimmed);font-size:var(--type-xs);text-transform:uppercase;letter-spacing:.06em}.toc summary::marker{content:"▸\2002";color:var(--color-primary);font-size:var(--type-base)}.toc details[open]>summary::marker{content:"▾\2002"}.toc #TableOfContents>ul{counter-reset:toc-h2;padding-left:0;list-style:none;margin:var(--space-2)0 0}.toc #TableOfContents>ul>li{counter-increment:toc-h2;counter-reset:toc-h3}.toc #TableOfContents>ul>li>a::before{content:counter(toc-h2)" ";font-family:var(--font-heading);font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-primary);margin-inline-end:var(--space-1)}.toc #TableOfContents>ul>li>ul{counter-reset:toc-h3}.toc #TableOfContents>ul>li>ul>li{counter-increment:toc-h3}.toc #TableOfContents>ul>li>ul>li>a::before{content:counter(toc-h2)"." counter(toc-h3)" ";font-family:var(--font-heading);font-weight:600;font-variant-numeric:tabular-nums;color:var(--color-primary);margin-inline-end:var(--space-1)}.toc ul{display:block;list-style:none;padding-inline-start:var(--space-4);margin:var(--space-1)0 0}.toc li{margin:var(--space-1)0;line-height:1.5}.toc ul ul li{margin:var(--space-1)0}.toc a{color:var(--color-text-muted);text-decoration:none}.toc a:hover{color:var(--color-primary)}.site-footer{margin-top:var(--space-6);padding-block:var(--space-4);border-top:1px solid var(--color-border);font-size:var(--type-sm);color:var(--color-text-dimmed);text-align:center}.site-footer-primary{margin-bottom:var(--space-2);font-family:var(--font-heading);letter-spacing:.02em}.site-footer-primary a{color:var(--color-text-muted);text-decoration:none}.site-footer-primary a:hover{color:var(--color-primary)}.site-footer-sep{margin:0 var(--space-2);color:var(--color-border)}.site-footer-secondary{color:var(--color-text-dimmed);font-size:var(--type-xs)}@media print{body{max-width:100%;color:#000;background:#fff;font-family:manrope,system-ui,sans-serif}a{color:#000;text-decoration:underline}.post-content a[href^=http]::after,.post-content a[href^="//"]::after{content:" (" attr(href)")";font-size:var(--type-xs);color:#555}header nav,.skip-link,.site-footer,.social-links,.heading-anchor,.toc{display:none}h1,h2,h3,h4,h5,h6{color:#000;break-after:avoid}img,figure{break-inside:avoid}pre,code{background:#f5f5f5;border:1px solid #ccc}}.bookshelf-theme{margin-bottom:var(--space-6)}.bookshelf-theme h3{font-family:var(--font-heading);color:var(--color-text-muted);font-size:var(--type-sm);font-weight:600;text-transform:uppercase;letter-spacing:.06em;margin-top:var(--space-5);margin-bottom:var(--space-4)}.bookshelf-cards{list-style:none;padding:0;margin:0}.bookshelf-card{display:flex;gap:var(--space-4);align-items:flex-start;margin-bottom:var(--space-5)}.bookshelf-card img{display:block;width:72px;height:auto;margin:0;flex-shrink:0;border-radius:2px}.bookshelf-card-body{flex:1;min-width:0}.bookshelf-card-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1)var(--space-2);margin-bottom:var(--space-1)}.bookshelf-list{list-style:none;padding:0;margin:0}.bookshelf-entry{margin-bottom:var(--space-4)}.bookshelf-entry-header{display:flex;flex-wrap:wrap;align-items:baseline;gap:var(--space-1)var(--space-2)}.bookshelf-title,.bookshelf-author,.bookshelf-year,.bookshelf-status,.bookshelf-doi{font-size:var(--type-sm);color:var(--color-text-muted)}.bookshelf-title{font-weight:600}.bookshelf-author{font-style:italic}.bookshelf-status{font-family:var(--font-heading);font-size:var(--type-xs);padding:1px 6px;border-radius:3px}.bookshelf-status--read{background:var(--callout-quote-bg)}.bookshelf-status--reading{color:var(--color-primary);background:var(--color-primary-tint)}.bookshelf-doi{text-decoration:none}.bookshelf-doi:hover{color:var(--color-primary)}.bookshelf-annotation{font-size:var(--type-sm);font-style:italic;color:var(--color-text-muted);margin:var(--space-1)0 0;line-height:1.55}