@font-face{font-family:IBM Plex Mono;font-style:italic;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-mono-latin-600-italic.DrfJ59vG.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-600-italic.DYu2LnOQ.woff)format("woff")}.blog{--background:#dde4c3;--foreground:#0f380f;--foreground-soft:#2b4a28;--accent:#306230;--accent-foreground:#dde4c3;--muted:#c8d3a2;--muted-foreground:#306230;--border:#8bac0f;--pea:#8bac0f;--pixel-shadow:#306230;--led:#c8231b}@media (prefers-color-scheme:dark){.blog{--background:#142a12;--foreground:#d3dfb0;--foreground-soft:#b5c495;--accent:#9bbc0f;--accent-foreground:#142a12;--muted:#253f22;--muted-foreground:#9bbc0f;--border:#306230;--pea:#306230;--pixel-shadow:#0b1a09;--led:#e0392f}}.blog{--font-app:var(--font-mono);--font-pixel:var(--font-display);--blog-accent:var(--accent);background:var(--background);min-height:100svh;color:var(--foreground);font-family:var(--font-app);-webkit-font-smoothing:antialiased;flex-direction:column;line-height:1.5;display:flex;& ::selection{background:color-mix(in srgb, var(--accent) 75%, transparent);color:var(--accent-foreground)}}html:has(>.blog){scroll-behavior:smooth;scrollbar-color:var(--muted) transparent;overflow-y:scroll}:where(.blog){& :where(h1,h2,h3,h4,h5,h6,p,ul,ol,figure,blockquote){margin:0}& :where(h1,h2,h3,h4,h5,h6){font-size:inherit;font-weight:inherit}& :where(ul,ol){padding:0;list-style:none}& :where(a){color:inherit;text-decoration:inherit}& :where(img,svg,video){max-width:100%;height:auto;display:block}& :where(button){color:inherit;font:inherit;cursor:pointer;background:0 0;border:0;padding:0}& :where(sub,sup){vertical-align:baseline;font-size:75%;line-height:0;position:relative}& :where(sup){top:-.5em}& :where(sub){bottom:-.25em}& :where(hr){border:0;border-top:1px solid var(--border);height:0}& :where(a,button,#main-content):focus-visible{outline:2px dashed var(--accent);outline-offset:1px;text-decoration:none}}.blog :target{scroll-margin-block:1rem}.blog [data-menu-item]{scroll-margin-block:6rem}.app-layout{width:100%;max-width:48rem;margin-inline:auto;padding-inline:1rem}.font-pixel{font-family:var(--font-pixel);font-weight:400}.pixel-title{font-family:var(--font-pixel);letter-spacing:-.04em;text-shadow:.0625em .0625em 0 var(--pea), .125em .125em 0 var(--pixel-shadow);font-weight:400;line-height:1.1}.pixel-label{font-family:var(--font-pixel);color:var(--muted-foreground);font-size:12px;font-weight:400;line-height:1.4}.pixel-arrow{background:currentColor;flex-shrink:0;width:6px;height:10px;display:inline-block;mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 3 5' shape-rendering='crispEdges'%3E%3Cpath d='M0 0h1v5H0zM1 1h1v3H1zM2 2h1v1H2z'/%3E%3C/svg%3E") 50%/100% 100% no-repeat;&.back{scale:-1 1}&.up{rotate:-90deg}}.pixel-button{font-family:var(--font-pixel);background:var(--foreground);color:var(--background);box-shadow:4px 4px 0 var(--pea);padding:16px 18px;font-size:12px;line-height:1;text-decoration:none;display:inline-block;&:hover,&[data-hover]{background:var(--accent);color:var(--accent-foreground)}&:active,&[data-active]{box-shadow:none;translate:4px 4px}}.pixel-button-outline{border:3px solid var(--foreground);font-family:var(--font-pixel);padding:13px 18px;font-size:12px;line-height:1;&:hover{background:var(--foreground);color:var(--background)}&:active{translate:0 2px}}.pixel-icon{width:44px;height:44px;color:var(--foreground);justify-content:center;align-items:center;display:inline-flex;& svg{width:24px;height:24px}&:hover,&:focus-visible,&[data-hover]{color:var(--accent);background:linear-gradient(var(--pea), var(--pea)) center calc(100% - 4px) / 24px 3px no-repeat}}.pixel-link{min-height:44px;color:var(--foreground);align-items:center;padding-inline:5px;text-decoration:none;display:inline-flex;&:hover,&:focus-visible,&[data-hover]{color:var(--accent);background:linear-gradient(var(--pea), var(--pea)) center calc(100% - 8px) / calc(100% - 10px) 3px no-repeat}}.menu-cursor{position:relative;&:hover:before,&:focus-visible:before,&[data-hover]:before,&[aria-current=location]:before{content:"";inset-inline-start:-15px;background:currentColor;width:8px;height:14px;position:absolute;top:calc(.6875em - 7px);mask:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 4 7' shape-rendering='crispEdges'%3E%3Cpath d='M0 0h1v7H0zM1 1h1v5H1zM2 2h1v3H2zM3 3h1v1H3z'/%3E%3C/svg%3E") 50%/100% 100% no-repeat}}.tag-link{text-underline-offset:4px;text-decoration:underline dashed;&:hover{color:var(--accent)}}.back-link{font-family:var(--font-pixel);color:var(--muted-foreground);align-items:center;gap:.5rem;padding-block:.875rem;font-size:12px;line-height:1rem;display:inline-flex;&:hover{color:var(--foreground)}}@media (prefers-reduced-motion:no-preference){.boot{animation:2s steps(60,end) backwards boot-scroll}}@keyframes boot-scroll{0%{translate:0 calc(-100% - var(--boot-window,0px));clip-path:inset(100% -1em -1em)}to{clip-path:inset(calc(-1 * var(--boot-window,0px)) -1em -1em -1em);translate:0}}.pixel-rule{background-image:linear-gradient(90deg, var(--pea) 50%, transparent 50%);background-size:8px 4px;height:4px}.dashed-rule{border-top-style:dashed;margin-block:2rem}[data-callout=note]{--rc-color-light:var(--callout-note-color-light,#0969da);--rc-color-dark:var(--callout-note-color-dark,#2f81f7)}[data-callout=tip]{--rc-color-light:var(--callout-tip-color-light,#1a7f37);--rc-color-dark:var(--callout-tip-color-dark,#3fb950)}[data-callout=important]{--rc-color-light:var(--callout-important-color-light,#8250df);--rc-color-dark:var(--callout-important-color-dark,#a371f7)}[data-callout=warning]{--rc-color-light:var(--callout-warning-color-light,#9a6700);--rc-color-dark:var(--callout-warning-color-dark,#d29922)}[data-callout=caution]{--rc-color-light:var(--callout-caution-color-light,#d1242f);--rc-color-dark:var(--callout-caution-color-dark,#d1242f)}.callout{--rc-color-default:#888;border-left:.25em solid var(--rc-color-light,var(--rc-color-default));width:100%;margin-bottom:1rem;padding:.5rem 1rem}.dark .callout{border-left-color:var(--rc-color-dark,var(--rc-color-default))}.callout-title{color:var(--rc-color-light,var(--rc-color-default));align-items:flex-start;gap:8px;font-weight:500;line-height:1;display:flex}.dark .callout-title{color:var(--rc-color-dark,var(--rc-color-default))}.callout-title::-webkit-details-marker{display:none}.callout-title-icon svg{vertical-align:text-bottom;display:inline-block;overflow:visible!important}.callout-content>:first-child{margin-top:1rem}.callout-content>:last-child{margin-bottom:0}.callout[data-collapsible=true] .callout-title{cursor:pointer}.callout[data-collapsible=true] .callout-fold-icon{align-items:center;padding-inline-end:8px;display:flex}.callout[data-collapsible=true]>.callout-title .callout-fold-icon svg{transition:transform .1s ease-in-out;transform:rotate(-90deg)}.callout[data-collapsible=true][open]>.callout-title .callout-fold-icon svg{transform:none}.callout-fold-icon{margin-left:-2px}.prose{max-width:48rem;color:var(--foreground);font-size:1rem;line-height:1.75;& :where(p):not(:where(.not-prose *)){margin-block:1.25em}& :where(strong):not(:where(.not-prose *)){font-weight:600}& :where(a):not(:where(.not-prose *)){overflow-wrap:break-word;text-decoration:underline dashed var(--pea) 2px;text-underline-offset:4px;font-weight:500;&:hover{color:var(--accent)}&:focus-visible{text-decoration:none}}& :where(h2,h3,h4):not(:where(.not-prose *)){margin-bottom:.75rem;font-weight:600}& :where(h2):not(:where(.not-prose *)){margin-top:2em;font-size:1.5em;line-height:1.33333}& :where(h3):not(:where(.not-prose *)){margin-top:1.6em;font-size:1.25em;line-height:1.6}& :where(h4):not(:where(.not-prose *)){margin-top:1.5em;line-height:1.5}& :where(ul,ol):not(:where(.not-prose,.not-prose *)){margin-block:1.25em;padding-inline-start:1.625em;overflow-x:clip}& :where(ol):not(:where(.not-prose,.not-prose *)){list-style:decimal}& :where(ul):not(:where(.not-prose,.not-prose *)){list-style:outside}& :where(li):not(:where(.not-prose *)){margin-block:.5em;padding-inline-start:.375em;&::marker{color:var(--pea)}}& :where(ul,ol) :where(ul,ol){margin-block:.75em}& ul:not(.not-prose,.not-prose *)>li::marker{content:"■  ";font-size:.8em}& li.task-list-item{&::marker{content:none}& input{vertical-align:-1px;appearance:none;border:2px solid var(--foreground);width:.875rem;height:.875rem;margin:0 .5rem 0 0}& input:checked{background:var(--accent);box-shadow:inset 0 0 0 2px var(--background)}}& :where(hr):not(:where(.not-prose *)){margin-block:3em}& :where(blockquote):not(:where(.not-prose *)){border-inline-start:4px solid var(--pea);overflow-wrap:break-word;quotes:"“" "”" "‘" "’";margin-block:1.6em;padding-inline-start:1em;font-style:italic;font-weight:500;& p:first-of-type:before{content:open-quote}& p:last-of-type:after{content:close-quote}}& :where(img,video,picture):not(:where(.not-prose *)){margin-block:2em}& :where(img):not(:where(.not-prose *)){border:2px solid var(--pea);margin-inline:auto}& :where(picture)>img{margin-block:0}& :where(figure):not(:where(.not-prose *)){margin-block:2em;&>*{margin-block:0}}& :where(figcaption):not(:where(.not-prose *)){opacity:.75;margin-top:.857143em;font-size:.875em;line-height:1.42857}& :where(code):not(:where(pre code,.not-prose *)){background:var(--muted);overflow-wrap:break-word;padding:.125rem .375rem;font-size:.875em;font-weight:600}& :where(kbd):not(:where(.not-prose *)){border:2px solid var(--foreground);background:var(--muted);box-shadow:2px 2px 0 var(--pea);padding:0 .375rem;font-family:inherit;font-size:.875em;font-weight:500}& :where(mark):not(:where(.not-prose *)){background:var(--pea);color:var(--foreground);padding-inline:.125rem}& :where(table):not(:where(.not-prose *)){border-collapse:collapse;width:100%;margin-block:2em;font-size:.875em;line-height:1.71429;& th,& td{border:1px solid var(--border);text-align:start;padding:.5rem}& th{background:var(--muted);vertical-align:bottom;padding-block:.375rem;font-weight:600}& td{vertical-align:baseline}& :is(th,td)[align=center]{text-align:center}& :is(th,td)[align=right]{text-align:right}}& details:not(.callout){cursor:pointer;user-select:none;display:inline-block;& p{display:none}& ul{margin-block:0}}& summary:focus-visible{outline:2px dashed var(--accent);outline-offset:1px}& img[role=button]{cursor:zoom-in;&:focus-visible{outline:2px dashed var(--accent);outline-offset:2px}}& img:not([data-image-state],.leaflet-container img),& img[data-image-state=loading]{background:var(--muted) linear-gradient(var(--muted-foreground), var(--muted-foreground)) center / 16px 16px no-repeat;@media (prefers-reduced-motion:no-preference){animation:1.2s step-end infinite image-loading}}& img[data-image-state=failed]{background:var(--muted) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 5 5' shape-rendering='crispEdges' fill='%23306230'%3E%3Cpath d='M0 0h1v1H0zM1 1h1v1H1zM2 2h1v1H2zM3 3h1v1H3zM4 4h1v1H4zM4 0h1v1H4zM3 1h1v1H3zM1 3h1v1H1zM0 4h1v1H0z'/%3E%3C/svg%3E") center / 20px 20px no-repeat;@media (prefers-color-scheme:dark){background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 5 5' shape-rendering='crispEdges' fill='%239bbc0f'%3E%3Cpath d='M0 0h1v1H0zM1 1h1v1H1zM2 2h1v1H2zM3 3h1v1H3zM4 4h1v1H4zM4 0h1v1H4zM3 1h1v1H3zM1 3h1v1H1zM0 4h1v1H0z'/%3E%3C/svg%3E")}}& :where(h2,h3,h4,hr)+*{margin-top:0}& .leaflet-container img{border:0;margin:0}}@keyframes image-loading{50%{background-size:0 0}}.astro-code{background-color:var(--shiki-light-bg);color:var(--shiki-light);box-shadow:6px 6px 0 var(--pea);margin-block:1.71429em;padding:.857143em 6em .857143em 1.14286em;font-size:.875em;line-height:1.71429;display:flex;overflow-x:auto;@media (prefers-color-scheme:dark){outline:2px solid var(--border)}&:focus-visible{outline:2px dashed var(--accent)}& code{font-size:inherit;flex:1 0 100%}& span{color:var(--shiki-light)}& .line.diff,& .line.highlighted{width:100%;display:inline-block;position:relative}& .line.diff:before{position:absolute;left:-.75rem}& .line.diff.add{background:#9bbc0f33;&:before{content:"+";color:#9bbc0f}}& .line.diff.remove{background:#ff8a7a26;&:before{content:"-";color:#ff8a7a}}& .line.highlighted{background:#ffffff14}& .highlighted-word{border:1px solid var(--border);padding:1px .125rem}}.astro-code.has-file-name{margin-top:2rem;padding-top:1.75rem}.astro-code .file-name{border:2px solid var(--pea);background:var(--background);color:var(--foreground);font-family:var(--font-pixel);padding:.25rem .5rem .25rem 1.25rem;font-size:10px;line-height:1rem;position:absolute;top:-.75rem;left:1rem;&:before{content:"";background:var(--led);width:.25rem;height:.25rem;position:absolute;top:50%;left:.5rem;translate:0 -50%}}.copy-code{color:#0f380f;font-family:var(--font-pixel);background:#c4d49a;padding:.375rem .5rem;font-size:10px;line-height:1;position:absolute;top:.5rem;right:.5rem;&:hover{background:#9bbc0f}}.prose .callout{border:2px solid var(--foreground);background-color:var(--muted);box-shadow:4px 4px 0 var(--pea);border-radius:0;margin-block:1em;padding:12px 12px 12px 24px;& .callout-title{font-family:var(--font-pixel);color:var(--foreground);align-items:center;gap:.5rem;font-size:12px}& .callout-title-icon svg{width:18px;height:18px}&:is([data-callout=warning],[data-callout=caution]) .callout-title-icon{color:var(--led)}}.heading-link{opacity:.75;margin-inline-start:.5rem;text-decoration:none;@media (width>=768px){opacity:0;:is(h2,h3,h4,h5,h6):hover>&,&:focus{opacity:1}}}.lightbox{z-index:50;backdrop-filter:blur(4px);cursor:zoom-out;opacity:0;background:#000000b3;justify-content:center;align-items:center;transition:opacity .2s;display:flex;position:fixed;inset:0;&.open{opacity:1}@media (prefers-reduced-motion:reduce){transition:none}& img{object-fit:contain;cursor:default;max-width:90dvw;max-height:90dvh}}.lightbox-close{color:#fff;padding:.5rem;font-size:1.875rem;line-height:1;position:absolute;top:1rem;right:1rem}html :is(.leaflet-container,[data-gpx-tracks],[data-gpx-walks],[data-gpx-map],[data-route-map],[data-map-state]){--gb-darkest:var(--foreground);--gb-dark:var(--muted-foreground);--gb-light:var(--pea);--gb-lighter:var(--muted);--gb-lightest:var(--background);--gb-highlight:var(--led);--gb-font:var(--font-app);border:2px solid var(--gb-darkest);background:var(--gb-lighter);box-shadow:6px 6px 0 var(--gb-light);border-radius:0}html :is([data-gpx-tracks],[data-gpx-walks],[data-gpx-map],[data-route-map],[data-map-state]):empty{place-items:center;display:grid;&:before{content:"LOADING...";font-family:var(--font-pixel);color:var(--muted-foreground);font-size:12px;@media (prefers-reduced-motion:no-preference){animation:1.2s step-end infinite map-loading}}&[data-map-state=failed]:before{content:"NO SIGNAL";animation:none}}@keyframes map-loading{50%{opacity:0}}.map-track,.route-leg{shape-rendering:crispedges}.map-track{stroke:var(--led);stroke-opacity:1}.map-track-1{stroke:var(--foreground)}.map-track-2{stroke-dasharray:6 6}.route-stop{stroke:var(--foreground);fill:var(--background);fill-opacity:1}.route-leg{stroke:var(--leg);stroke-opacity:1}.route-leg-train,.route-leg-flight{--leg:var(--led)}.route-leg-bus,.route-leg-foot{--leg:var(--foreground)}.route-leg-boat{--leg:var(--accent)}:is([data-gpx-map],[data-route-map]){margin-block:1.5rem;overflow:hidden}.route-map-legend{color:color-mix(in srgb, var(--foreground) 80%, transparent);flex-wrap:wrap;gap:.25rem 1rem;margin-top:.5rem;font-size:.875rem;line-height:1.25rem;display:flex;&>span{align-items:center;gap:.375rem;display:inline-flex}}.webring[data-astro-cid-evu63yx6]{align-items:center;font-size:12px;display:flex;& a{justify-content:center;align-items:center;min-width:32px;min-height:32px;display:inline-flex}& a:is(:hover,:focus-visible){color:var(--foreground)}}footer[data-astro-cid-krtx73xu]{margin-top:auto}.clear-back-to-top[data-astro-cid-krtx73xu]{@media (width<=767px){padding-bottom:3rem}}.bar[data-astro-cid-krtx73xu]{border-top:2px dashed var(--blog-accent);flex-direction:column;gap:.5rem;margin-top:3rem;padding-block:1rem 1.5rem;display:flex}ul[data-astro-cid-krtx73xu]{font-family:var(--font-pixel);grid-template-columns:repeat(4,auto);justify-content:center;column-gap:1.5rem;font-size:12px;display:grid;@media (width>=640px){justify-content:start;display:flex}}li[data-astro-cid-krtx73xu]{text-align:center}a[data-astro-cid-krtx73xu].menu-cursor{align-items:center;min-height:44px;display:inline-flex;&:before{top:calc(50% - 7px)}&:is(:hover,:focus-visible){color:var(--accent)}}.fine-print[data-astro-cid-krtx73xu]{color:var(--muted-foreground);flex-direction:column;align-items:center;gap:.75rem;font-size:13px;line-height:1.6;display:flex;@media (width>=640px){flex-direction:row;justify-content:space-between}& a[rel=license]{text-underline-offset:3px;text-decoration:underline;&:is(:hover,:focus-visible){color:var(--foreground)}}}.site-header[data-astro-cid-f3rt2zve]{height:117px;position:relative}.pause-extras[data-astro-cid-f3rt2zve]{border-top:2px dashed var(--blog-accent);font-family:var(--font-app);justify-content:center;align-items:center;gap:.5rem;margin-bottom:1.5rem;padding-top:1rem;font-size:15px;display:flex;&>a[data-astro-cid-f3rt2zve]:not(.pixel-icon){padding:.625rem .5rem}& .pixel-icon{color:var(--background);&:hover{color:var(--pea)}}}
