@font-face{font-family:Fragment Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/fragment-mono-latin-400-normal.yxdJ5AmL.woff2)format("woff2"),url(/_astro/fragment-mono-latin-400-normal.BYwT3kSJ.woff)format("woff")}@font-face{font-family:Geist;font-style:normal;font-weight:100 900;font-display:swap;src:url(/fonts/geist-latin-wght-normal.woff2)format("woff2")}@font-face{font-family:Geist Fallback;src:local(Arial),local(Liberation Sans),local(Arimo),local(Helvetica);size-adjust:105.47%;ascent-override:95.29%;descent-override:27.97%;line-gap-override:0%}:root{color-scheme:light dark;--n-0:#fafaf8;--n-1:#f2f1ee;--n-2:#e4e2de;--n-3:#ccc9c4;--n-4:#a8a49e;--n-5:#7d7973;--n-6:#5a5652;--n-7:#3a3835;--n-8:#232220;--n-9:#151413;--n-black:#000;--accent-100:#fdeadf;--accent-300:#f8a67c;--accent-500:#ee5a1b;--accent-700:#b8420e;--accent-900:#6b2708;--success:#3e7a56;--success-on-dark:#86bfa0;--warning:#8a6512;--warning-on-dark:#d6ae5c;--error:#a83440;--error-on-dark:#e48a8f;--bg:light-dark(var(--n-0),var(--n-black));--surface:light-dark(var(--n-1),var(--n-8));--border:light-dark(var(--n-2),var(--n-7));--text:light-dark(var(--n-9),var(--n-0));--text-secondary:light-dark(var(--n-6),var(--n-4));--accent:var(--accent-500);--accent-text:light-dark(var(--accent-700),var(--accent-300));--on-accent:var(--n-9);--link-underline:var(--n-5);--selection-bg:light-dark(var(--accent-100),var(--accent-900));--selection-text:light-dark(var(--n-9),var(--accent-100));--success-text:light-dark(var(--success),var(--success-on-dark));--warning-text:light-dark(var(--warning),var(--warning-on-dark));--error-text:light-dark(var(--error),var(--error-on-dark));--font-sans:"Geist", "Geist Fallback", Arial, sans-serif;--font-mono:"Fragment Mono", Consolas, monospace;--weight-regular:400;--weight-medium:500;--weight-semibold:600;--text-display:88px;--leading-display:1;--tracking-display:-.04em;--text-headline:48px;--leading-headline:1.08;--tracking-headline:-.03em;--text-subhead:24px;--leading-subhead:1.35;--tracking-subhead:-.012em;--text-body:18px;--leading-body:1.6;--tracking-body:0em;--text-caption:13px;--leading-caption:1.4;--tracking-caption:.005em;--text-data:64px;--leading-data:1;--tracking-data:-.04em;--space-1:4px;--space-2:8px;--space-3:12px;--space-4:16px;--space-5:24px;--space-6:32px;--space-7:48px;--space-8:64px;--space-9:96px;--space-10:128px;--space-11:192px;--radius-0:0;--radius-1:4px;--radius-2:8px;--logo-point:.14em;--logo-tracking:-.04em;--hairline:1px;--rule-strong:2px;--underline-offset:.2em;--focus-width:2px;--focus-offset:2px;--grid-columns:12;--gutter:var(--space-5);--content-max:1200px;--page-margin:clamp(var(--space-5), 5vw, var(--space-8));--ratio-cover:16 / 10}:root[data-theme=light]{color-scheme:light}:root[data-theme=dark],.roles-dark{color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;background:var(--bg);scrollbar-gutter:stable}body{background:var(--bg);color:var(--text);font-family:var(--font-sans);font-size:var(--text-body);line-height:var(--leading-body);font-weight:var(--weight-regular);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;flex-direction:column;min-height:100dvh;margin:0;display:flex}main{padding-block:var(--space-8) var(--space-10);flex:1}img{max-width:100%;height:auto;display:block}h1,h2,h3,h4,p,ul,ol,dl,dd,figure,blockquote{margin:0}ul,ol{padding:0}::selection{background:var(--selection-bg);color:var(--selection-text)}:focus-visible{outline:var(--focus-width) solid var(--accent);outline-offset:var(--focus-offset)}.skip-link{left:var(--space-4);top:calc(var(--space-9) * -1);background:var(--n-9);color:var(--n-0);padding:var(--space-2) var(--space-4);border-radius:var(--radius-1);font-weight:var(--weight-medium);z-index:10;text-decoration:none;position:absolute}.skip-link:focus{top:var(--space-4)}.container{width:100%;max-width:calc(var(--content-max) + 2 * var(--page-margin));padding-inline:var(--page-margin);margin-inline:auto}.grid{grid-template-columns:repeat(var(--grid-columns), minmax(0, 1fr));column-gap:var(--gutter);display:grid}.t-display{font-size:clamp(48px, 5.6vw + 16px, var(--text-display));line-height:var(--leading-display);letter-spacing:var(--tracking-display);font-weight:var(--weight-semibold)}.t-headline{font-size:clamp(34px, 2.2vw + 22px, var(--text-headline));line-height:var(--leading-headline);letter-spacing:var(--tracking-headline);font-weight:var(--weight-semibold)}.t-subhead{font-size:clamp(20px, .5vw + 17px, var(--text-subhead));line-height:var(--leading-subhead);letter-spacing:var(--tracking-subhead);font-weight:var(--weight-medium)}.t-caption{font-size:var(--text-caption);line-height:var(--leading-caption);letter-spacing:var(--tracking-caption);font-weight:var(--weight-medium);color:var(--text-secondary)}.secondary{color:var(--text-secondary)}.tnum,time,th,td,dd{font-variant-numeric:tabular-nums}a{color:inherit;text-decoration-line:underline;text-decoration-color:var(--link-underline);text-decoration-thickness:var(--hairline);text-underline-offset:var(--underline-offset)}a:hover{text-decoration-color:var(--accent);text-decoration-thickness:var(--rule-strong)}@media (prefers-reduced-motion:no-preference){a{transition:text-decoration-color .12s ease-out}}.accent-value{color:var(--accent-text)}.prose>*+*{margin-top:var(--space-5)}.prose h2{margin-top:var(--space-7);font-size:var(--text-subhead);line-height:var(--leading-subhead);letter-spacing:var(--tracking-subhead);font-weight:var(--weight-semibold)}.prose h3{margin-top:var(--space-6);font-size:var(--text-body);line-height:var(--leading-body);font-weight:var(--weight-semibold)}.prose h2+*,.prose h3+*{margin-top:var(--space-3)}.prose strong{font-weight:var(--weight-semibold)}.prose ol{padding-left:1.4em}.prose li+li{margin-top:var(--space-2)}.prose ul{padding-left:1.4em;list-style:none}.prose ul>li{position:relative}.prose ul>li:before{content:"";background:var(--text);width:.3em;height:.3em;position:absolute;top:.68em;left:-1.1em}.prose ol>li::marker{font-variant-numeric:tabular-nums;color:var(--text-secondary);font-weight:var(--weight-medium)}.prose blockquote{padding-left:var(--space-5);border-left:var(--rule-strong) solid var(--border);font-size:var(--text-subhead);line-height:var(--leading-subhead);letter-spacing:var(--tracking-subhead);font-weight:var(--weight-medium)}.prose hr{border:0;border-top:var(--hairline) solid var(--border);margin-block:var(--space-7)}.prose code{font-family:var(--font-mono);background:var(--surface);border-radius:var(--radius-1);padding:.1em .35em;font-size:.85em}.prose pre{font-family:var(--font-mono);font-size:var(--text-caption);line-height:var(--leading-body);padding:var(--space-5);border-radius:var(--radius-1);overflow-x:auto;background:var(--surface)!important}.prose pre code{font-size:inherit;background:0 0;padding:0}.astro-code,.astro-code span{color:light-dark(var(--shiki-light),var(--shiki-dark))}.prose table{border-collapse:collapse;width:100%}.prose th,.prose td{text-align:left;padding:var(--space-3) var(--space-4) var(--space-3) 0;border-bottom:var(--hairline) solid var(--border)}.prose th{font-size:var(--text-caption);font-weight:var(--weight-medium);color:var(--text-secondary)}@media print{:root{color-scheme:light;--bg:white;--text:black;--text-secondary:black;--accent-text:black;--border:black}.skip-link,.site-header,.site-footer,.no-print{display:none!important}html,body{color:#000;background:#fff}main{padding:0}.prose a[href^=http]:after{content:" (" attr(href) ")";font-size:var(--text-caption);word-break:break-all}.prose a[href^=\/]:after{content:" (https://ashlaws.net" attr(href) ")";font-size:var(--text-caption);word-break:break-all}.prose pre{border:var(--hairline) solid black}.astro-code,.astro-code span{color:#000!important}}.rail-meta{gap:var(--space-1);font-variant-numeric:tabular-nums;display:grid}.rail-meta .first{color:var(--text);font-weight:var(--weight-semibold)}.block+.block{margin-top:var(--space-8)}.wordmark[data-astro-cid-qisgtjgl]{color:inherit;line-height:0;text-decoration:none;display:inline-block}svg[data-astro-cid-qisgtjgl]{width:calc(var(--wm-size) * 3.913);height:auto;display:block}.point[data-astro-cid-qisgtjgl]{fill:currentColor}.point-accent[data-astro-cid-qisgtjgl] .point[data-astro-cid-qisgtjgl]{fill:var(--accent)}.theme-toggle[data-astro-cid-l6lhmie6]{min-width:var(--space-6);min-height:var(--space-6);padding:0 var(--space-2);margin-right:calc(var(--space-2) * -1);border-radius:var(--radius-1);color:var(--text);cursor:pointer;text-decoration:underline;text-decoration-color:var(--link-underline);text-decoration-thickness:var(--hairline);text-underline-offset:var(--underline-offset);background:0 0;border:0;font-family:inherit}.theme-toggle[data-astro-cid-l6lhmie6]:hover{text-decoration-color:var(--accent);text-decoration-thickness:var(--rule-strong)}.to-light[data-astro-cid-l6lhmie6],:root[data-theme=dark] .to-dark[data-astro-cid-l6lhmie6]{display:none}:root[data-theme=dark] .to-light[data-astro-cid-l6lhmie6]{display:inline}:root:not([data-theme]) .theme-toggle[data-astro-cid-l6lhmie6]{display:none}.site-header[data-astro-cid-nen7h5rs]{border-bottom:var(--hairline) solid var(--border)}.bar[data-astro-cid-nen7h5rs]{padding-block:var(--space-4);align-items:center;row-gap:var(--space-3)}.mark[data-astro-cid-nen7h5rs]{grid-column:1/4}nav[data-astro-cid-nen7h5rs]{grid-column:4/11}.toggle[data-astro-cid-nen7h5rs]{grid-column:11/13;justify-self:end}ul[data-astro-cid-nen7h5rs]{gap:var(--space-2) var(--space-6);flex-wrap:wrap;list-style:none;display:flex}a[data-astro-cid-nen7h5rs]{padding-block:var(--space-1);font-weight:var(--weight-medium);text-decoration-line:none;display:inline-block}a[data-astro-cid-nen7h5rs]:hover{text-decoration-line:underline}a[data-astro-cid-nen7h5rs][aria-current=page]{text-decoration-line:underline;text-decoration-color:var(--text)}a[data-astro-cid-nen7h5rs][aria-current=page]:hover{text-decoration-color:var(--accent)}@media (width<=900px){.bar[data-astro-cid-nen7h5rs]{flex-wrap:wrap;justify-content:space-between;display:flex}nav[data-astro-cid-nen7h5rs]{flex-basis:100%;order:3}}.site-footer[data-astro-cid-jo6i4kqk]{border-top:var(--hairline) solid var(--border);padding-block:var(--space-5)}.built[data-astro-cid-jo6i4kqk]{font-variant-numeric:tabular-nums;white-space:nowrap}.rail[data-astro-cid-jcxjyvts],.content[data-astro-cid-jcxjyvts]{min-width:0}.rail[data-astro-cid-jcxjyvts]{grid-column:1/4}.span-text[data-astro-cid-jcxjyvts] .content[data-astro-cid-jcxjyvts]{grid-column:4/11}.span-wide[data-astro-cid-jcxjyvts] .content[data-astro-cid-jcxjyvts]{grid-column:4/13}.span-full[data-astro-cid-jcxjyvts] .rail[data-astro-cid-jcxjyvts],.span-full[data-astro-cid-jcxjyvts] .content[data-astro-cid-jcxjyvts]{grid-column:1/13}.span-full[data-astro-cid-jcxjyvts] .rail[data-astro-cid-jcxjyvts]{margin-bottom:var(--space-4)}@media (width<=900px){.rail-layout[data-astro-cid-jcxjyvts]{display:block}.rail[data-astro-cid-jcxjyvts]{margin-bottom:var(--space-4)}}
