@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/alegreya-sans-latin-400-normal.DtLlO8BS.woff2)format("woff2"),url(/_astro/alegreya-sans-latin-400-normal.DmA8jeke.woff)format("woff")}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/alegreya-sans-latin-ext-400-normal.D7N6b6bd.woff2)format("woff2"),url(/_astro/alegreya-sans-latin-ext-400-normal.DpBVrRWA.woff)format("woff")}@font-face{font-family:Alegreya Sans;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/alegreya-sans-latin-400-italic.rmlAbObI.woff2)format("woff2"),url(/_astro/alegreya-sans-latin-400-italic.CgbdrOqg.woff)format("woff")}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/alegreya-sans-latin-500-normal.DS713u5J.woff2)format("woff2"),url(/_astro/alegreya-sans-latin-500-normal.vXxrTKJT.woff)format("woff")}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/alegreya-sans-latin-700-normal.DEbcy2sF.woff2)format("woff2"),url(/_astro/alegreya-sans-latin-700-normal.BnzUNlma.woff)format("woff")}@font-face{font-family:Alegreya Sans;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/alegreya-sans-latin-ext-700-normal.HuHd3-Mg.woff2)format("woff2"),url(/_astro/alegreya-sans-latin-ext-700-normal.CkNjzB9Y.woff)format("woff")}@font-face{font-family:"Jersey 10";font-style:normal;font-weight:400;font-display:swap;size-adjust:140%;src:url(/_astro/jersey-10-latin-400-normal.DrL73VYW.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:"Jersey 10";font-style:normal;font-weight:400;font-display:swap;size-adjust:140%;src:url(/_astro/jersey-10-latin-ext-400-normal.uIKqQSaG.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Alegreya Sans Fallback;src:local(Arial),local(Liberation Sans),local(Helvetica);size-adjust:86.11%;ascent-override:92.9%;descent-override:23.23%;line-gap-override:0%}@font-face{font-family:"Jersey 10 Fallback";src:local(Arial),local(Liberation Sans),local(Helvetica);size-adjust:111.13%;ascent-override:101.23%;descent-override:33.75%;line-gap-override:0%}:root{--step--1:clamp(.9rem, .87rem + .13vw, .96rem);--step-0:clamp(1.08rem, 1.03rem + .22vw, 1.2rem);--step-1:clamp(1.18rem, 1.1rem + .37vw, 1.38rem);--step-2:clamp(1.4rem, 1.27rem + .62vw, 1.75rem);--step-3:clamp(1.66rem, 1.45rem + 1vw, 2.25rem);--step-4:clamp(1.96rem, 1.62rem + 1.6vw, 2.9rem);--step-5:clamp(2.3rem, 1.8rem + 2.5vw, 3.8rem);--space-3xs:.25rem;--space-2xs:.5rem;--space-xs:.75rem;--space-s:1rem;--space-m:1.5rem;--space-l:2rem;--space-xl:3rem;--space-2xl:4.5rem;--space-3xl:6rem;--measure:70ch;--wrap:72rem;--gutter:clamp(1rem, .6rem + 2vw, 2rem);--radius-s:4px;--radius-m:4px;--radius-full:999px;--border-width:2px;--duration:.18s;--ease:cubic-bezier(.2, .7, .2, 1);--font-body:"Alegreya Sans", "Alegreya Sans Fallback", "Gill Sans", system-ui, sans-serif;--font-heading:"Jersey 10", "Jersey 10 Fallback", system-ui, sans-serif;--font-label:var(--font-body);--font-mono:ui-monospace, "SFMono-Regular", Menlo, Consolas, monospace;--heading-weight:400;--heading-tracking:0;--label-transform:none;--label-tracking:0;color-scheme:light;--color-bg:#f5f4ef;--color-surface:#eae8df;--color-text:#18181b;--color-muted:#52525b;--color-border:#d3d0c4;--color-accent:#6b21a8;--color-on-accent:#fff;--color-accent-soft:color-mix(in oklab, var(--color-accent) 12%, var(--color-bg));--color-focus:var(--color-accent);--color-todo-bg:#fde68a;--color-todo-text:#422006}@media (prefers-color-scheme:dark){:root:not([data-theme=light]){color-scheme:dark;--color-bg:#111214;--color-surface:#1a1b1f;--color-text:#e8e6e1;--color-muted:#a3a3ab;--color-border:#2e3035;--color-accent:#ae62f8;--color-on-accent:#111214;--color-todo-bg:#854d0e;--color-todo-text:#fef9c3}}:root[data-theme=dark]{color-scheme:dark;--color-bg:#111214;--color-surface:#1a1b1f;--color-text:#e8e6e1;--color-muted:#a3a3ab;--color-border:#2e3035;--color-accent:#ae62f8;--color-on-accent:#111214;--color-todo-bg:#854d0e;--color-todo-text:#fef9c3}*,:before,:after{box-sizing:border-box}*{margin:0}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;hanging-punctuation:first last}body{background:var(--color-bg);min-height:100dvh;color:var(--color-text);font-family:var(--font-body);font-size:var(--step-0);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;flex-direction:column;line-height:1.6;display:flex}img,picture,svg,video{max-width:100%;height:auto;display:block}input,button,select,textarea{font:inherit;color:inherit}p,li,dd,h1,h2,h3,h4{overflow-wrap:break-word}p,li{text-wrap:pretty}[hidden],html:not(.js) .js-only{display:none!important}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition-duration:.01ms!important;animation-duration:.01ms!important;animation-iteration-count:1!important}}h1,h2,h3,h4{font-family:var(--font-heading);font-weight:var(--heading-weight);letter-spacing:var(--heading-tracking);text-wrap:balance;line-height:1.15}h1{font-size:var(--step-4)}h2{font-size:var(--step-2)}h3{font-size:var(--step-1)}a{color:var(--color-accent);text-underline-offset:.18em;transition:color var(--duration) var(--ease);text-decoration-thickness:.08em}a:hover{text-decoration-thickness:.14em}:focus-visible{outline:3px solid var(--color-focus);outline-offset:3px;border-radius:2px}::selection{background:var(--color-accent);color:var(--color-on-accent)}.label{font-family:var(--font-label);font-size:var(--step--1);text-transform:var(--label-transform);letter-spacing:var(--label-tracking);color:var(--color-muted);font-weight:600}.muted{color:var(--color-muted)}.visually-hidden{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;position:absolute!important}.wrap{width:min(100% - 2 * var(--gutter), var(--wrap));margin-inline:auto}.prose{max-width:var(--measure)}.prose>*+*{margin-top:var(--space-s)}.prose h2{margin-top:var(--space-xl);font-size:var(--step-2)}.prose h3{margin-top:var(--space-l)}.prose ul,.prose ol{padding-inline-start:1.3em}.prose li+li{margin-top:var(--space-3xs)}.prose li::marker{color:var(--color-accent)}.prose blockquote{padding:var(--space-xs) var(--space-s);border-inline-start:2px solid var(--color-accent);background:var(--color-surface);margin-inline:0}.prose code{border-radius:var(--radius-s);background:var(--color-surface);font-family:var(--font-mono);padding:.1em .3em;font-size:.88em}.prose pre{padding:var(--space-s);border:2px solid var(--color-border);border-radius:var(--radius-s);background:var(--color-surface);overflow-x:auto}.prose pre code{background:0 0;padding:0}.prose img{border-radius:var(--radius-m)}main{padding-block:var(--space-xl) var(--space-2xl);flex:1}.stack>*+*{margin-top:var(--space-s)}.section+.section{margin-top:var(--space-2xl)}.section-title{margin-bottom:var(--space-m);font-size:var(--step-1)}.section-title:before{content:"// ";content:"// " / "";color:var(--color-accent)}.skip-link{top:var(--space-2xs);left:var(--space-2xs);z-index:100;padding:var(--space-2xs) var(--space-s);background:var(--color-accent);color:var(--color-on-accent);border-radius:var(--radius-s);position:absolute;transform:translateY(-200%)}.skip-link:focus{transform:none}.button{align-items:center;gap:var(--space-2xs);border:var(--border-width) solid var(--color-accent);border-radius:var(--radius-s);background:var(--color-accent);color:var(--color-on-accent);font-family:var(--font-label);font-weight:600;font-size:var(--step--1);transition:background-color var(--duration) var(--ease), color var(--duration) var(--ease);padding:.6em 1.1em;line-height:1.2;text-decoration:none;display:inline-flex}.button:hover,.button--ghost{color:var(--color-accent);background:0 0}.button--ghost:hover{background:var(--color-accent);color:var(--color-on-accent)}.button svg{flex:none;width:1.1em;height:1.1em}.tags{gap:var(--space-2xs) var(--space-s);flex-wrap:wrap;padding:0;list-style:none;display:flex}.tag{font-family:var(--font-label);font-size:var(--step--1);line-height:1.4;display:inline-block}.tag:before,.tag:after{color:var(--color-accent)}.tag:before{content:"[";content:"[" / "";margin-inline-end:.2ch}.tag:after{content:"]";content:"]" / "";margin-inline-start:.2ch}.badge{background:var(--color-accent-soft);color:var(--color-text);font-family:var(--font-label);letter-spacing:.02em;vertical-align:.1em;border-radius:0;padding:.1em .55em;font-size:.78rem;font-weight:600;display:inline-block}.todo{border-radius:var(--radius-s);background:var(--color-todo-bg);color:var(--color-todo-text);font-family:var(--font-mono);padding:.05em .35em;font-size:.85em}.draft-badge{border-radius:var(--radius-s);color:var(--color-muted);font-family:var(--font-mono);letter-spacing:0;text-transform:uppercase;vertical-align:.2em;border:1px dashed;margin-inline-start:var(--space-2xs);padding:.05em .5em;font-size:.72rem;font-weight:400;display:inline-block}.draft-note{margin-top:var(--space-xs);color:var(--color-muted);font-size:var(--step--1)}.draft-note .draft-badge{margin-inline-start:0}.fallback-note{border:1px solid var(--color-border);border-radius:var(--radius-s);color:var(--color-muted);font-family:var(--font-label);vertical-align:.15em;cursor:help;margin-inline-start:.35em;padding:0 .3em;font-size:.7rem}.news-list{gap:var(--space-s);padding:0;list-style:none;display:grid}.news-item{gap:var(--space-3xs);display:grid}.news-item time{font-family:var(--font-label);font-size:var(--step--1);color:var(--color-accent)}.pub-list{gap:var(--space-m);padding:0;list-style:none;display:grid}.pub{gap:var(--space-3xs);border-inline-start:2px solid var(--color-accent);padding-inline-start:var(--space-s);display:grid}.pub__title{font-family:var(--font-body);font-size:var(--step-0);letter-spacing:0;font-weight:650;line-height:1.35}.pub__authors,.pub__venue{font-size:var(--step--1);color:var(--color-muted)}.pub__authors strong{color:var(--color-text);font-weight:650}.pub__links{gap:var(--space-2xs) var(--space-s);font-size:var(--step--1);flex-wrap:wrap;padding:0;font-weight:600;list-style:none;display:flex}.more-link{margin-top:var(--space-m);font-weight:600;font-size:var(--step--1);display:inline-block}@media print{:root{--step--1:8.5pt;--step-0:9.5pt;--step-1:11pt;--step-2:12.5pt;--step-3:15pt;--step-4:21pt;--step-5:24pt;color-scheme:light!important;--color-bg:#fff!important;--color-surface:#fff!important;--color-text:#111!important;--color-muted:#444!important;--color-border:#ccc!important;--color-accent:#6b21a8!important;--color-on-accent:#fff!important}@page{size:A4;margin:12mm 14mm}html,body{background:#fff!important}body{line-height:1.4}.site-header,.site-footer,.skip-link,.no-print{display:none!important}main{padding:0}.wrap{width:100%;max-width:none}a{color:inherit;text-decoration:none}h2,h3{break-after:avoid}li,dd,[class*=entry]{break-inside:avoid}.section-title{margin-bottom:6pt}}.social-links[data-astro-cid-y2qsmizv]{gap:var(--space-2xs) var(--space-m);font-size:var(--step--1);flex-wrap:wrap;padding:0;font-weight:600;list-style:none;display:flex}.social-links[data-astro-cid-y2qsmizv] a{min-height:2.75rem;color:var(--color-text);align-items:center;gap:.4em;text-decoration:none;display:inline-flex}.social-links[data-astro-cid-y2qsmizv] a:hover{color:var(--color-accent)}.social-links[data-astro-cid-y2qsmizv] svg{width:1.15rem;height:1.15rem;color:var(--color-accent)}.site-footer[data-astro-cid-jo6i4kqk]{border-top:var(--border-width) solid var(--color-border);padding-block:var(--space-l);background:var(--color-surface)}.site-footer__inner[data-astro-cid-jo6i4kqk]{gap:var(--space-s);display:grid}.site-footer__meta[data-astro-cid-jo6i4kqk]{gap:var(--space-3xs) var(--space-m);color:var(--color-muted);font-size:var(--step--1);flex-wrap:wrap;display:flex}.site-footer__meta[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{color:inherit}.lang-switch[data-astro-cid-lemdd452]{border:2px solid var(--color-text);border-radius:var(--radius-s);background:var(--color-bg);font-family:var(--font-label);margin:0;padding:0;font-size:.85rem;font-weight:700;list-style:none;display:flex;overflow:hidden}.lang-switch[data-astro-cid-lemdd452] li[data-astro-cid-lemdd452]+li[data-astro-cid-lemdd452]{border-inline-start:2px solid var(--color-text)}.lang-switch[data-astro-cid-lemdd452] a[data-astro-cid-lemdd452],.lang-switch[data-astro-cid-lemdd452] span[data-astro-cid-lemdd452][aria-current]{place-items:center;min-width:2.4rem;min-height:2.15rem;padding:0 .55em;line-height:1;display:grid}.lang-switch[data-astro-cid-lemdd452] a[data-astro-cid-lemdd452]{color:var(--color-muted);text-decoration:none}.lang-switch[data-astro-cid-lemdd452] a[data-astro-cid-lemdd452]:hover{color:var(--color-text);background:var(--color-accent-soft)}.lang-switch[data-astro-cid-lemdd452] a[data-astro-cid-lemdd452]:focus-visible{outline-offset:-4px}.lang-switch[data-astro-cid-lemdd452] span[data-astro-cid-lemdd452][aria-current]{background:var(--color-text);color:var(--color-bg)}.theme-toggle[data-astro-cid-l6lhmie6][data-current=dark] .theme-toggle__moon,.theme-toggle[data-astro-cid-l6lhmie6]:not([data-current=dark]) .theme-toggle__sun{display:none}.site-header[data-astro-cid-nen7h5rs]{background:var(--color-surface);border-bottom:2px solid var(--color-text)}.site-header__inner[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-s);min-height:4rem;display:flex}.brand[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-2xs);color:var(--color-text);font-family:var(--font-heading);font-weight:var(--heading-weight);margin-inline-end:auto;text-decoration:none;display:inline-flex}.brand__mark[data-astro-cid-nen7h5rs]{aspect-ratio:1;border:2px solid var(--color-text);border-radius:var(--radius-s);background:var(--color-accent);width:2.25rem;color:var(--color-on-accent);font-family:var(--font-label);letter-spacing:.02em;box-shadow:3px 3px 0 var(--color-text);place-items:center;font-size:.95rem;font-weight:700;display:grid}.brand__name[data-astro-cid-nen7h5rs]{font-size:var(--step-0)}.brand[data-astro-cid-nen7h5rs]:hover .brand__name[data-astro-cid-nen7h5rs]{color:var(--color-accent)}@media (width<=26rem){.brand__name[data-astro-cid-nen7h5rs]{clip:rect(0, 0, 0, 0);white-space:nowrap;width:1px;height:1px;position:absolute;overflow:hidden}}.icon-button{border:2px solid var(--color-text);border-radius:var(--radius-s);background:var(--color-bg);width:2.5rem;height:2.5rem;color:var(--color-text);box-shadow:3px 3px 0 var(--color-accent);cursor:pointer;transition:transform 80ms ease-out, box-shadow 80ms ease-out, background-color var(--duration) var(--ease);place-items:center;padding:0;display:inline-grid}.icon-button:hover{background:var(--color-accent-soft)}.icon-button:active{box-shadow:1px 1px 0 var(--color-accent);transform:translate(2px,2px)}.icon-button svg{width:1.2rem;height:1.2rem}.site-header__tools[data-astro-cid-nen7h5rs]{align-items:center;gap:var(--space-s);display:flex}.site-nav[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{gap:var(--space-3xs);padding:0;list-style:none;display:grid}.site-nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{padding:var(--space-2xs) 0;color:var(--color-text);font-size:var(--step-1);align-items:baseline;gap:.35ch;font-weight:700;text-decoration:none;display:flex}.site-nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:before{content:"▸";content:"▸" / "";width:1ch;color:var(--color-accent);opacity:0;transition:opacity var(--duration) var(--ease), transform var(--duration) var(--ease);display:inline-block;transform:translate(-4px)}.site-nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover:before,.site-nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:focus-visible:before,.site-nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current=page]:before{opacity:1;transform:none}.site-nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]:hover,.site-nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs][aria-current=page]{color:var(--color-accent)}.site-nav[data-astro-cid-nen7h5rs]{inset:var(--space-s) var(--gutter) auto var(--gutter);width:auto;max-width:24rem;padding:var(--space-l) var(--space-m) var(--space-m);border:2px solid var(--color-text);border-radius:var(--radius-m);background:var(--color-surface);color:var(--color-text);box-shadow:6px 6px 0 var(--color-accent);margin:0 0 0 auto;overflow:visible}.site-nav[data-astro-cid-nen7h5rs]:before{content:attr(data-label);top:0;left:var(--space-s);background:var(--color-accent);color:var(--color-on-accent);font-family:var(--font-label);font-size:var(--step--1);padding:.1em .6em;font-weight:700;position:absolute;transform:translateY(-55%)}.site-nav[data-astro-cid-nen7h5rs]::backdrop{background:#00000073}.site-nav__close[data-astro-cid-nen7h5rs]{top:var(--space-s);right:var(--space-s);position:absolute}@media (prefers-reduced-motion:no-preference){.site-nav[data-astro-cid-nen7h5rs]:popover-open{animation:menu-in var(--duration) var(--ease)}@keyframes menu-in{0%{opacity:0;transform:scale(.97)}}}@media (width>=52rem){.menu-button[data-astro-cid-nen7h5rs],.site-nav__close[data-astro-cid-nen7h5rs]{display:none}.site-nav[data-astro-cid-nen7h5rs][popover]{width:auto;max-width:none;box-shadow:none;background:0 0;border:0;margin:0;padding:0;animation:none;display:block;position:static;inset:auto;overflow:visible}.site-nav[data-astro-cid-nen7h5rs][popover]:before{content:none}.site-nav[data-astro-cid-nen7h5rs] ul[data-astro-cid-nen7h5rs]{gap:var(--space-2xs);display:flex}.site-nav[data-astro-cid-nen7h5rs] a[data-astro-cid-nen7h5rs]{font-size:var(--step--1);padding:.4em .35em}}
