@layer astro.images{:where([data-astro-image]){height:auto}:where([data-astro-image=full-width]){width:100%}:where([data-astro-image=constrained]){max-width:100%}[data-astro-image-fit=fill]{object-fit:fill}[data-astro-image-fit=contain]{object-fit:contain}[data-astro-image-fit=cover]{object-fit:cover}[data-astro-image-fit=scale-down]{object-fit:scale-down}[data-astro-image-pos=top]{object-position:top}[data-astro-image-pos=bottom]{object-position:bottom}[data-astro-image-pos=left]{object-position:left}[data-astro-image-pos=right]{object-position:right}[data-astro-image-pos=center]{object-position:center}[data-astro-image-pos=top-bottom]{object-position:top bottom}[data-astro-image-pos=top-left]{object-position:top left}[data-astro-image-pos=top-right]{object-position:top right}[data-astro-image-pos=top-center]{object-position:top center}[data-astro-image-pos=bottom-top]{object-position:bottom top}[data-astro-image-pos=bottom-left]{object-position:bottom left}[data-astro-image-pos=bottom-right]{object-position:bottom right}[data-astro-image-pos=bottom-center]{object-position:bottom center}[data-astro-image-pos=left-top]{object-position:left top}[data-astro-image-pos=left-bottom]{object-position:left bottom}[data-astro-image-pos=left-right]{object-position:left right}[data-astro-image-pos=left-center]{object-position:left center}[data-astro-image-pos=right-top]{object-position:right top}[data-astro-image-pos=right-bottom]{object-position:right bottom}[data-astro-image-pos=right-left]{object-position:right left}[data-astro-image-pos=right-center]{object-position:right center}[data-astro-image-pos=center-top]{object-position:center top}[data-astro-image-pos=center-bottom]{object-position:center bottom}[data-astro-image-pos=center-left]{object-position:center left}[data-astro-image-pos=center-right]{object-position:center right}}:root{--bg:#f0ecf9;--surface:#e7e0f5;--border:#d8cdee;--rule:#c7bddb;--text:#171221;--text-accent:#573894;--accent-dark:#623fa6;--accent-dark-border:#4c3181;--accent-dark-hover:#7551bd;--accent-dark-border-hover:#5d3c9f;--accent-light:#cdbaf3;--accent-light-border:#bda4ef;--accent-light-hover:#b497ed;--accent-light-border-hover:#a481e9;--logo-bg:#829cd3;--border-logo-bg:#708dcd;--text-inverse:#fff;--black:#000;--shadow:0 8px 24px #2c1f471f;--container:70rem;--gutter:1.5rem;--radius-xs:.5rem;--radius-sm:1rem;--radius:1.5rem;--radius-lg:2rem;--ease:cubic-bezier(.4, 0, .2, 1);--duration-fast:.12s;--duration:.2s;--duration-slow:.28s}*,:before,:after{box-sizing:border-box;margin:0;padding:0}html{font-family:var(--font-sans);color:var(--text);background:var(--bg);scrollbar-gutter:stable;scrollbar-width:thin;scrollbar-color:var(--rule) transparent}body{min-height:100dvh;line-height:1.5}main{max-width:var(--container);padding:2.5rem var(--gutter) 4rem;min-height:calc(100dvh - 26rem);margin:0 auto;container-type:inline-size}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}@media (width<=56rem){main{padding-top:1rem}}@media (width<=30rem){:root{--gutter:1rem}}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}a.text-link,.prose a{color:var(--text-accent);text-decoration:underline;text-decoration-color:var(--rule);text-underline-offset:2px;transition:text-decoration-color var(--duration-fast) var(--ease);font-weight:500}a.text-link:hover,.prose a:hover{text-decoration-color:var(--text-accent)}.link-arrow{color:var(--text-accent);align-items:center;gap:.375rem;font-weight:500;display:inline-flex}a.btn [data-icon]{font-size:1.125em}.arrow-right,.arrow-left,.arrow-external{transition:transform var(--duration) var(--ease)}:is(a,button,.is-linked):hover .arrow-right{transform:translate(3px)}:is(a,button,.is-linked):hover .arrow-left{transform:translate(-3px)}:is(a,button,.is-linked):hover .arrow-external{transform:translate(2px,-2px)}button{font:inherit;cursor:pointer;color:inherit;background:0 0;border:none}h1,h2,h3,h4{letter-spacing:-.02em;text-wrap:balance;margin-bottom:.75rem;scroll-margin-top:2rem;font-weight:700;line-height:1.25}h1{margin-bottom:1rem;font-size:clamp(2rem,1.5rem + 2vw,2.5rem)}h2{font-size:clamp(1.5rem,1.25rem + 1vw,1.75rem)}h3{font-size:1.25rem}h4{font-size:1rem}.heading-anchor{color:var(--text-accent);opacity:0;transition:opacity var(--duration-fast) var(--ease);margin-left:.25em;font-weight:400;text-decoration:none}:is(h1,h2,h3,h4):hover>.heading-anchor,.heading-anchor:focus-visible{opacity:1}.heading-anchor:hover{opacity:1;text-decoration:underline}.page-header{margin-bottom:2rem;&>:last-child{margin-bottom:0}}.section-head{justify-content:space-between;align-items:baseline;gap:1rem;display:flex}.label{letter-spacing:.04em;text-transform:uppercase;color:var(--text-accent);font-size:.75rem;font-weight:600;line-height:1.5}.prose{overflow-wrap:break-word;& h2{margin-top:2rem}& h3{margin-top:1.5rem}& h4{margin-top:1rem}& ul,& ol{margin-bottom:1rem}& li>:is(ul,ol){margin-bottom:0}& hr{border:0;border-top:1px solid var(--rule);margin:2rem 0}& blockquote{background:var(--surface);border:1px solid var(--border);border-radius:var(--radius-sm);margin:0 0 1rem;padding:1rem 1.25rem;&>:last-child{margin-bottom:0}}& mark{background:var(--accent-light);color:inherit;border-radius:.25em;padding:0 .125em}& :not(pre)>code{background:var(--surface);border:1px solid var(--border);border-radius:.375em;padding:.125em .375em;font-size:.875em}& pre{border:1px solid var(--border);border-radius:var(--radius-sm);margin:0 0 1rem;padding:1rem 1.25rem;font-size:.875rem;line-height:1.6;overflow-x:auto}& img{border-radius:var(--radius-sm);width:auto;max-width:min(100%,36rem);height:auto;max-height:28rem;margin:1.5rem auto}& p:has(>img+img){flex-wrap:wrap;justify-content:center;gap:.5rem;margin:1.5rem 0;display:flex;& img{width:auto;height:10rem;margin:0}}& iframe{aspect-ratio:16/9;border-radius:var(--radius);border:0;width:100%;max-width:40rem;height:auto;margin:1.5rem auto;display:block}& .mermaid{justify-content:center;margin:1.5rem 0;display:flex}& .katex-display{padding:.25rem 0;overflow:auto hidden}}p{margin-bottom:1rem;line-height:1.75}ul,ol{padding-left:1.25rem;& li{margin-top:.5rem}}section{margin-top:3rem}.list-reset{padding:0;list-style:none;&>li{margin:0}}.indicator{flex-shrink:0;width:1rem;height:1rem;position:relative;&:before,&:after{content:"";height:.125rem;transition:rotate var(--duration) var(--ease);background:currentColor;border-radius:999px;position:absolute;inset:calc(50% - .0625rem) 0 auto}&:after{rotate:90deg}details[open]>summary &:after,details[data-expanded=true]>summary &:after{rotate:0deg}}summary:has(.indicator){cursor:pointer;transition:color var(--duration-fast) var(--ease);list-style:none;&::-webkit-details-marker{display:none}&:hover{color:var(--text-accent)}}table{border-collapse:collapse;width:100%;margin-bottom:1rem;font-size:1rem;& th,& td{text-align:left;border:1px solid var(--border);padding:.5rem .75rem}& th{background:var(--surface);font-weight:600}& tr:nth-child(2n) td{background:var(--surface)}}.btn{white-space:nowrap;border-radius:var(--radius);transition:background var(--duration-fast) var(--ease), border-color var(--duration-fast) var(--ease), transform var(--duration-fast) var(--ease);align-items:center;gap:.375rem;padding:.5rem 1rem;font-weight:500;display:inline-flex}.btn:hover{transform:scale(1.05)}.btn:active{transform:scale(.98)}.btn-primary{background:var(--accent-dark);color:var(--text-inverse);border:1px solid var(--accent-dark-border)}.btn-primary:hover{background:var(--accent-dark-hover);border-color:var(--accent-dark-border-hover)}.btn-accent{background:var(--accent-light);color:var(--text);border:1px solid var(--accent-light-border)}.btn-accent:hover{background:var(--accent-light-hover);border-color:var(--accent-light-border-hover)}.btn-surface{background:var(--surface);color:inherit;border:1px solid var(--border)}.btn-surface:hover,.btn-surface.active{background:var(--accent-light);border-color:var(--accent-light-border)}.btn-surface:hover{transform:scale(1.02)}.btn-surface:active{transform:scale(.98)}@media (prefers-reduced-motion:reduce){.arrow-right,.arrow-left,.arrow-external,.btn{transition-property:background,border-color,color}:is(a,button,.is-linked):hover :is(.arrow-right,.arrow-left,.arrow-external),.btn:hover,.btn:active{transform:none}.indicator:before,.indicator:after{transition:none}}[data-closes][hidden]{display:none}.sr-only{clip-path:inset(50%);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{z-index:100;position:absolute;top:.5rem;left:.5rem;transform:translateY(-200%)}.skip-link:focus-visible{transform:none}
