@layer theme{:root,:host{--font-sans:Inter, ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", sans-serif;--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--text-sm:.95rem;--text-base:1rem;--text-lg:1.125rem;--text-xl:1.35rem;--text-2xl:2rem;--text-3xl:3rem;--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono);--spacing-1:.375rem;--spacing-2:.75rem;--spacing-3:1rem;--spacing-4:1.5rem;--spacing-5:2rem;--spacing-6:2.5rem;--spacing-7:3.5rem;--spacing-8:4.5rem;--radius-code:3px}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.relative{position:relative}.static{position:static}.contents{display:contents}.table{display:table}}:root{color-scheme:light;--color-page:#fff;--color-text:#1f2320;--color-muted:#626a65;--color-rule:#d9dfda;--color-link:#17695d;--color-focus:#c47b34;--bg:var(--color-page);--ink:var(--color-text);--muted:var(--color-muted);--line:var(--color-rule);--accent:var(--color-link);--focus:var(--color-focus);background:var(--bg);color:var(--ink)}:root[data-theme=dark]{color-scheme:dark;--color-page:#181818;--color-text:#d7d7d7;--color-muted:#969696;--color-rule:#3a3a3a;--color-link:#c8c8c8;--color-focus:#adadad}:root{--measure-page:820px;--measure-article:760px;--measure-archive-year:7.5rem;--measure-nav-sidebar:8rem;--measure-page-gutter:2rem;--measure-min-page:320px;--article-nav-block-start:clamp(var(--space-7), 20vh, 9rem);--border-width-rule:1px;--border-width-focus:3px;--space-1:var(--spacing-1);--space-2:var(--spacing-2);--space-3:var(--spacing-3);--space-4:var(--spacing-4);--space-5:var(--spacing-5);--space-6:var(--spacing-6);--space-7:var(--spacing-7);--space-8:var(--spacing-8);--flow-list-offset:clamp(var(--space-6), 7vw, var(--space-8));font-family:var(--font-sans)}*{box-sizing:border-box}html{min-width:var(--measure-min-page);scrollbar-gutter:stable;background:var(--bg)}body{color:var(--ink);background:var(--bg);font-size:var(--text-base);text-rendering:optimizelegibility;margin:0;line-height:1.6}a{color:inherit;-webkit-text-decoration-color:var(--accent);text-decoration-color:var(--accent)}@supports (color:color-mix(in lab,red,red)){a{-webkit-text-decoration-color:color-mix(in srgb,var(--accent) 52%,transparent);text-decoration-color:color-mix(in srgb,var(--accent) 52%,transparent)}}a{text-underline-offset:.18em;text-decoration-thickness:.08em}a:hover{color:var(--accent)}a:focus-visible,button:focus-visible{outline:var(--border-width-focus) solid var(--focus)}@supports (color:color-mix(in lab,red,red)){a:focus-visible,button:focus-visible{outline:var(--border-width-focus) solid color-mix(in srgb,var(--focus) 48%,transparent)}}a:focus-visible,button:focus-visible{outline-offset:var(--space-1)}img,svg{max-width:100%}.site-shell{min-height:100vh}.page-width{width:min(calc(100% - var(--measure-page-gutter)),var(--measure-page));margin-inline:auto}.site-main{padding-block:var(--space-6)}.page-header{margin-bottom:var(--space-5)}.page-header h1,.page-title{font-size:var(--text-3xl);margin:0;line-height:1.05}.article-list,.post-list{margin:0;padding:0;list-style:none}.article-list li,.post-row{padding-block:var(--space-4);border-top:var(--border-width-rule) solid var(--line)}.article-list h2,.post-row h2{font-size:var(--text-xl);margin:0;line-height:1.25}.article-list p,.post-row p{margin:var(--space-1) 0 0;color:var(--muted)}.article-meta{color:var(--muted);font-size:var(--text-sm)}.article-layout{width:min(calc(100% - var(--measure-page-gutter)),calc(var(--measure-article) + var(--measure-nav-sidebar) + var(--space-6)));grid-template-columns:var(--measure-nav-sidebar) minmax(0,var(--measure-article));gap:var(--space-6);min-height:calc(100vh - var(--space-6) - var(--space-6));align-items:start;margin-inline:auto;display:grid}.article-nav{--nav-control-size:2rem;--nav-font-size:var(--text-sm);--nav-link-gap:var(--space-1);--nav-link-size:1.875rem;--nav-radius:var(--radius-code);top:var(--article-nav-block-start);color:var(--muted);font-size:var(--nav-font-size);line-height:1.35;position:sticky}.article-nav__desktop,.article-nav__content{gap:var(--space-2);width:var(--measure-nav-sidebar);display:grid}.article-nav__section{gap:var(--space-2);display:grid}.theme-switch{gap:var(--space-1);border-radius:var(--nav-radius);background:0 0;border:0;grid-template-columns:repeat(3,minmax(0,1fr));width:100%;padding:0;display:grid}.theme-switch__option{min-width:0;min-height:var(--nav-control-size);border-radius:var(--nav-radius);color:var(--muted);font:inherit;cursor:pointer;background:0 0;border:0;place-items:center;display:grid}.theme-switch__icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:1.15rem;height:1.15rem}.theme-switch__option:hover{color:var(--accent);background:var(--line)}@supports (color:color-mix(in lab,red,red)){.theme-switch__option:hover{background:color-mix(in srgb,var(--line) 14%,var(--bg))}}:root[data-theme-mode=light] .theme-switch__option[data-theme-option=light],:root[data-theme-mode=system] .theme-switch__option[data-theme-option=system],:root[data-theme-mode=dark] .theme-switch__option[data-theme-option=dark]{color:var(--ink);background:var(--line)}@supports (color:color-mix(in lab,red,red)){:root[data-theme-mode=light] .theme-switch__option[data-theme-option=light],:root[data-theme-mode=system] .theme-switch__option[data-theme-option=system],:root[data-theme-mode=dark] .theme-switch__option[data-theme-option=dark]{background:color-mix(in srgb,var(--line) 24%,var(--bg))}}:root[data-theme-mode=light] .theme-switch__option[data-theme-option=light],:root[data-theme-mode=system] .theme-switch__option[data-theme-option=system],:root[data-theme-mode=dark] .theme-switch__option[data-theme-option=dark]{box-shadow:none}.article-nav__float{display:none}.article-nav__trigger{border:var(--border-width-rule) solid var(--line);border-radius:var(--nav-radius);width:2.75rem;min-height:2.75rem;color:var(--ink);background:var(--bg);font:inherit;cursor:pointer;place-items:center;display:grid}.article-nav__trigger:hover{color:var(--accent);background:var(--line)}@supports (color:color-mix(in lab,red,red)){.article-nav__trigger:hover{background:color-mix(in srgb,var(--line) 20%,var(--bg))}}.article-nav__trigger-icon{fill:none;stroke:currentColor;stroke-linecap:round;stroke-linejoin:round;stroke-width:2px;width:1.15rem;height:1.15rem}.article-nav__links{gap:var(--nav-link-gap);padding-top:var(--space-1);border-top:var(--border-width-rule) solid var(--line);display:grid}.article-nav__link{min-height:var(--nav-link-size);padding:0 var(--space-2) 0 var(--space-3);border-radius:var(--nav-radius);align-items:center;text-decoration:none;display:flex;position:relative}.article-nav__link:before{content:"";top:50%;left:var(--space-1);width:var(--border-width-focus);border-radius:var(--nav-radius);opacity:0;background:currentColor;height:1em;position:absolute;transform:translateY(-50%)}.article-nav__link:hover{color:var(--accent);background:var(--line)}@supports (color:color-mix(in lab,red,red)){.article-nav__link:hover{background:color-mix(in srgb,var(--line) 20%,var(--bg))}}.article-nav__link--active{color:var(--ink);background:var(--line);font-weight:700}@supports (color:color-mix(in lab,red,red)){.article-nav__link--active{background:color-mix(in srgb,var(--line) 26%,var(--bg))}}.article-nav__link--active:before{opacity:1}.article-shell{width:100%;min-width:0}.article-header{margin-bottom:var(--space-5)}.article-header h1{font-size:var(--text-3xl);margin:0;line-height:1.08}.article-description{margin:var(--space-3) 0 0;color:var(--muted);font-size:var(--text-lg)}.article-date{margin-top:var(--space-4)}.typst-article{font-size:var(--text-base);line-height:1.7}.typst-article>div{display:flow-root}.typst-article>div>:first-child{margin-top:0}.typst-article :where(h1,h2,h3,h4,h5,h6){margin:var(--space-6) 0 var(--space-2);font-weight:700;line-height:1.2}.typst-article :where(h1,h2,h3){font-size:var(--text-xl)}.typst-article :where(h4,h5,h6){font-size:var(--text-lg)}.typst-article :where(p,ul,ol,blockquote,table,pre){max-width:100%;margin:0 0 var(--space-4)}.typst-article :where(ul,ol){padding-left:var(--space-5)}.typst-article :where(ul){list-style-type:disc;list-style-position:outside}.typst-article :where(ol){list-style-type:decimal;list-style-position:outside}.typst-article :where(li){padding-left:var(--space-1)}.typst-article :where(li+li){margin-top:var(--space-1)}.typst-article :where(code){border-radius:var(--radius-code);background:var(--line);padding:.05em .22em}@supports (color:color-mix(in lab,red,red)){.typst-article :where(code){background:color-mix(in srgb,var(--line) 34%,transparent)}}.typst-article :where(code){font-size:var(--text-sm)}.typst-article :where(table){border-collapse:collapse;width:100%;font-size:var(--text-sm)}.typst-article :where(th,td){padding:var(--space-2);border:var(--border-width-rule) solid var(--line);text-align:left;vertical-align:top}.typst-article :where(pre,table){overflow-x:auto}.typst-article :where(img,svg){max-width:100%;height:auto}.typst-article :where(.typst-frame){margin:var(--space-3) auto var(--space-4);display:block;overflow:visible}:root[data-theme=dark] .typst-article :where(.typst-frame){filter:invert()brightness(.84)}.typst-article :where(p .typst-frame){vertical-align:-.25em;margin:0 .1em;display:inline-block}.archive-list{gap:var(--space-5);display:grid}.flow-list{margin-top:var(--flow-list-offset)}.archive-year{grid-template-columns:var(--measure-archive-year) minmax(0,1fr);gap:var(--space-4);border-top:var(--border-width-rule) solid var(--line);padding-top:var(--space-4);display:grid}.archive-year h2{color:var(--accent);font-size:var(--text-base);margin:0}.archive-year ul{margin:0;padding:0;list-style:none}.archive-year li+li{margin-top:var(--space-2)}@media(max-width:760px){.article-layout{width:min(calc(100% - var(--measure-page-gutter)),var(--measure-article));min-height:0;display:block}.article-nav{z-index:10;top:auto;bottom:var(--space-3);left:var(--space-3);margin:0;position:fixed;transform:none}.article-nav__desktop{display:none}.article-nav__float{--nav-hit-slop:var(--space-2);margin:calc(var(--nav-hit-slop) * -1);padding:var(--nav-hit-slop);display:block;position:relative}.article-nav__float:before{content:"";inset:calc(var(--nav-hit-slop) * -1);position:absolute}.article-nav__trigger{background:var(--line);border-color:#0000;display:grid}@supports (color:color-mix(in lab,red,red)){.article-nav__trigger{background:color-mix(in srgb,var(--line) 14%,var(--bg))}}.article-nav__content{bottom:calc(100% - var(--nav-hit-slop) + var(--space-2));left:var(--nav-hit-slop);gap:var(--space-2);width:7.25rem;padding:var(--space-1);border-radius:var(--nav-radius);background:var(--line);border:0;position:absolute}@supports (color:color-mix(in lab,red,red)){.article-nav__content{background:color-mix(in srgb,var(--line) 12%,var(--bg))}}.article-nav__content{box-shadow:none;opacity:0;pointer-events:none;transform-origin:0 100%;transition:opacity .16s,transform .16s;transform:scale(.96)}.article-nav__float:hover .article-nav__content,.article-nav__float--open .article-nav__content,.article-nav__trigger:focus-visible+.article-nav__content,.article-nav__content:has(:focus-visible){opacity:1;pointer-events:auto;transform:scale(1)}.article-nav__float--open .article-nav__trigger{color:var(--accent);background:var(--line)}@supports (color:color-mix(in lab,red,red)){.article-nav__float--open .article-nav__trigger{background:color-mix(in srgb,var(--line) 24%,var(--bg))}}.article-nav__content .article-nav__links{border-top:0;gap:0;margin-top:0;padding-top:0}.article-nav__content .article-nav__link{min-height:var(--nav-control-size);padding-right:var(--space-3)}.article-nav__content .article-nav__link:hover,.article-nav__content .article-nav__link--active{background:var(--line)}@supports (color:color-mix(in lab,red,red)){.article-nav__content .article-nav__link:hover,.article-nav__content .article-nav__link--active{background:color-mix(in srgb,var(--line) 20%,var(--bg))}}.page-header h1,.page-title,.article-header h1{font-size:var(--text-2xl)}.post-row,.archive-year{grid-template-columns:1fr}}@keyframes astroFadeInOut{0%{opacity:1}to{opacity:0}}@keyframes astroFadeIn{0%{opacity:0;mix-blend-mode:plus-lighter}to{opacity:1;mix-blend-mode:plus-lighter}}@keyframes astroFadeOut{0%{opacity:1;mix-blend-mode:plus-lighter}to{opacity:0;mix-blend-mode:plus-lighter}}@keyframes astroSlideFromRight{0%{transform:translate(100%)}}@keyframes astroSlideFromLeft{0%{transform:translate(-100%)}}@keyframes astroSlideToRight{to{transform:translate(100%)}}@keyframes astroSlideToLeft{to{transform:translate(-100%)}}@media(prefers-reduced-motion){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}[data-astro-transition-scope]{animation:none!important}}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}
