:root{--night:#151a1f;--surface:#1d242b;--rule:#2d363f;--ink:#e7dfd0;--ink-strong:#f6f1e7;--muted:#98a2a7;--sun:#e2a948;--sun-bright:#f2c46f;--sun-wash:#e2a9481f;--lichen:#8fa98a;--font-display:"Archivo", ui-sans-serif, system-ui, sans-serif;--font-body:"Literata", Georgia, serif;--font-mono:"JetBrains Mono", ui-monospace, "SF Mono", Menlo, monospace;--step--1:.875rem;--step-0:1.1875rem;--step-1:1.375rem;--step-2:1.75rem;--step-3:clamp(2.1rem, 1.6rem + 2.2vw, 3rem);--step-4:clamp(2.6rem, 1.4rem + 5vw, 4.5rem);--gutter:clamp(1rem, .6rem + 2vw, 2.5rem);--wide:76rem;--measure:40rem;--header-h:4.25rem;color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-h) + 1.5rem)}@media (prefers-reduced-motion:no-preference){html{scroll-behavior:smooth}}body{background:var(--night);min-height:100svh;color:var(--ink);font-family:var(--font-body);font-size:var(--step-0);font-optical-sizing:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;text-rendering:optimizelegibility;flex-direction:column;margin:0;line-height:1.7;display:flex}main{flex:1}img,video,svg,canvas,iframe{max-width:100%;display:block}img,video{height:auto}::selection{background:var(--sun);color:var(--night)}:focus-visible{outline:2px solid var(--sun);outline-offset:3px;border-radius:2px}h1,h2,h3,h4{font-family:var(--font-display);color:var(--ink-strong);text-wrap:balance;margin:0;font-weight:600;line-height:1.15}h1{font-size:var(--step-3);letter-spacing:-.01em;font-stretch:112%}h2{font-size:var(--step-2);font-stretch:106%}h3{font-size:var(--step-1)}h4{font-size:var(--step-0)}p{text-wrap:pretty;margin:0}a{color:inherit;text-decoration-line:underline;text-decoration-color:color-mix(in srgb, var(--sun) 70%, transparent);text-underline-offset:.22em;text-decoration-thickness:1px;transition:color .16s,text-decoration-color .16s,text-decoration-thickness .16s}a:hover{color:var(--sun-bright);text-decoration-color:var(--sun-bright);text-decoration-thickness:2px}hr{border:0;border-top:1px solid var(--rule);margin:3rem 0}.skip-link{z-index:100;background:var(--sun);color:var(--night);font-family:var(--font-display);padding:.5rem .9rem;font-weight:600;text-decoration:none;position:absolute;top:-4rem;left:1rem}.skip-link:focus{top:1rem}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}.wrap{width:100%;max-width:calc(var(--wide) + 2 * var(--gutter));padding-inline:var(--gutter);margin-inline:auto}.ui{font-family:var(--font-display);font-size:var(--step--1);letter-spacing:.01em;line-height:1.4}.muted{color:var(--muted)}.page-head{padding-block:calc(var(--header-h) + clamp(2.5rem, 6vw, 5rem)) clamp(2rem, 4vw, 3rem)}.page-head p{max-width:var(--measure);color:var(--muted);margin-top:1rem;font-size:clamp(1.1rem,1rem + .6vw,1.375rem);line-height:1.5}.button{border:1px solid color-mix(in srgb, var(--sun) 60%, transparent);font-family:var(--font-display);font-size:var(--step--1);letter-spacing:.01em;color:var(--ink-strong);background:0 0;border-radius:999px;align-items:center;gap:.55rem;padding:.7rem 1.15rem;font-weight:600;text-decoration:none;transition:background-color .16s,color .16s,border-color .16s;display:inline-flex}.button:hover,.button.primary{background:var(--sun);border-color:var(--sun);color:var(--night)}.button.primary:hover{background:var(--sun-bright);border-color:var(--sun-bright)}.prose{max-width:var(--measure)}.prose>*+*{margin-top:1.25em}.prose h2{font-size:var(--step-2);margin-top:2.4em}.prose h3{margin-top:2em}.prose h4{margin-top:1.75em}.prose h2+*,.prose h3+*,.prose h4+*{margin-top:.75em}.prose ul,.prose ol{padding-left:1.3em}.prose li+li{margin-top:.4em}.prose li::marker{color:var(--muted)}.prose strong{color:var(--ink-strong);font-weight:650}.prose blockquote{border-left:2px solid var(--sun);color:var(--muted);margin-inline:0;padding-left:1.25rem;font-style:italic}.prose figure{margin-block:2.25rem;margin-inline:0}.prose figure img,.prose figure video,.prose>p>img{background:var(--surface);border-radius:4px}.prose figcaption{color:var(--muted);font-family:var(--font-display);font-size:var(--step--1);margin-top:.7rem;line-height:1.5}.prose figure.embed iframe{border:1px solid var(--rule);background:#fff;border-radius:4px;width:100%;height:min(80vh,900px)}.prose table{border-collapse:collapse;width:100%;font-size:var(--step--1);font-family:var(--font-display)}.prose th,.prose td{text-align:left;border-bottom:1px solid var(--rule);padding:.5rem .75rem}:not(pre)>code{font-family:var(--font-mono);background:var(--surface);color:var(--sun-bright);overflow-wrap:anywhere;border-radius:4px;padding:.12em .38em;font-size:.82em}pre{font-family:var(--font-mono);border:1px solid var(--rule);tab-size:2;border-radius:6px;padding:1.1rem 1.25rem;font-size:.8rem;line-height:1.65;overflow-x:auto;background-color:var(--surface)!important}.prose pre{margin-inline:calc(-1 * min(1.25rem, var(--gutter)))}@media (width<=40rem){.prose pre{margin-inline:calc(-1 * var(--gutter));border-inline:0;border-radius:0}}@view-transition{navigation:auto}@media (prefers-reduced-motion:no-preference){::view-transition-old(root){animation:.18s ease-in both vt-fade-out}::view-transition-new(root){animation:.32s cubic-bezier(.2,.7,.2,1) both vt-fade-in}}@media (prefers-reduced-motion:reduce){::view-transition-group(*),::view-transition-old(*),::view-transition-new(*){animation:none!important}}@keyframes vt-fade-out{to{opacity:0}}@keyframes vt-fade-in{0%{opacity:0;transform:translateY(6px)}}.site-header[data-astro-cid-hkbrpulz]{z-index:50;height:var(--header-h);view-transition-name:site-header;-webkit-backdrop-filter:blur(14px)saturate(1.2);background:#151a1fe0;border-bottom:1px solid #2d363fb3;position:fixed;inset:0 0 auto}@supports (animation-timeline:scroll()){.site-header[data-astro-cid-hkbrpulz]{animation:linear both header-solidify scroll(root);animation-range:0 140px}@keyframes header-solidify{0%{-webkit-backdrop-filter:blur();background:#151a1f00;border-bottom-color:#2d363f00}}}.header-inner[data-astro-cid-hkbrpulz]{justify-content:space-between;align-items:center;gap:1.5rem;height:100%;display:flex}.nav-desktop[data-astro-cid-hkbrpulz] ul[data-astro-cid-hkbrpulz],#nav-menu[data-astro-cid-hkbrpulz] ul[data-astro-cid-hkbrpulz]{margin:0;padding:0;list-style:none}.nav-desktop[data-astro-cid-hkbrpulz] ul[data-astro-cid-hkbrpulz]{gap:clamp(1rem,2.5vw,2.25rem);display:flex}.home-link[data-astro-cid-hkbrpulz],.nav-desktop[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz],#nav-menu[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]{font-family:var(--font-display);letter-spacing:.01em;color:var(--ink);padding-block:.4rem;font-size:.95rem;font-weight:500;text-decoration:none;position:relative}.home-link[data-astro-cid-hkbrpulz],.nav-desktop[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]{display:inline-block}.home-link[data-astro-cid-hkbrpulz]:after,.nav-desktop[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]:after{content:"";background:var(--sun);transform-origin:0;height:2px;transition:transform .22s cubic-bezier(.2,.7,.2,1);position:absolute;bottom:0;left:0;right:0;transform:scaleX(0)}.home-link[data-astro-cid-hkbrpulz]:hover,.nav-desktop[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]:hover{color:var(--ink-strong)}.home-link[data-astro-cid-hkbrpulz]:hover:after,.home-link[data-astro-cid-hkbrpulz][aria-current=page]:after,.nav-desktop[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]:hover:after,.nav-desktop[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz][aria-current=page]:after{transform:scaleX(1)}.home-link[data-astro-cid-hkbrpulz][aria-current=page],.nav-desktop[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz][aria-current=page]{color:var(--ink-strong)}.menu-button[data-astro-cid-hkbrpulz],.menu-close[data-astro-cid-hkbrpulz]{appearance:none;border:1px solid var(--rule);color:var(--ink-strong);cursor:pointer;background:#151a1f99;border-radius:999px;padding:.45rem .95rem;display:none}#nav-menu[data-astro-cid-hkbrpulz]{width:100%;max-width:none;height:100%;max-height:none;padding:1.25rem var(--gutter) 2rem;background:var(--night);color:var(--ink);border:0;margin:0;inset:0}#nav-menu[data-astro-cid-hkbrpulz] .menu-close[data-astro-cid-hkbrpulz]{margin-left:auto;display:block}#nav-menu[data-astro-cid-hkbrpulz] ul[data-astro-cid-hkbrpulz]{gap:.25rem;margin-top:2.5rem;display:grid}#nav-menu[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]{padding-block:.35rem;font-size:2rem;font-weight:600;font-stretch:115%;display:block}#nav-menu[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz][aria-current=page]{color:var(--sun)}@media (prefers-reduced-motion:no-preference){#nav-menu[data-astro-cid-hkbrpulz]:popover-open{animation:.26s cubic-bezier(.2,.7,.2,1) menu-in}@keyframes menu-in{0%{opacity:0;transform:translateY(-8px)}}}@media (width<=44rem){.nav-desktop[data-astro-cid-hkbrpulz]{display:none}.menu-button[data-astro-cid-hkbrpulz]{display:block}}.site-footer[data-astro-cid-hkbrpulz]{border-top:1px solid var(--rule);margin-top:clamp(4rem,10vw,8rem);padding-block:clamp(2.5rem,6vw,4rem) 2.5rem}.footer-inner[data-astro-cid-hkbrpulz]{grid-template-columns:1fr auto;align-items:end;gap:2rem 3rem;display:grid}.footer-lede[data-astro-cid-hkbrpulz]{color:var(--muted);max-width:30rem;font-size:1.05rem;line-height:1.5}.footer-email[data-astro-cid-hkbrpulz]{font-family:var(--font-display);color:var(--ink-strong);text-decoration-color:var(--sun);overflow-wrap:anywhere;margin-top:.6rem;font-size:clamp(1.25rem,1rem + 1.5vw,2rem);font-weight:600;font-stretch:110%;display:inline-block}.footer-links[data-astro-cid-hkbrpulz]{flex-wrap:wrap;justify-content:flex-end;gap:.5rem 1.4rem;margin:0;padding:0;list-style:none;display:flex}.footer-links[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]{color:var(--ink);text-decoration:none}.footer-links[data-astro-cid-hkbrpulz] a[data-astro-cid-hkbrpulz]:hover{color:var(--sun-bright)}.footer-note[data-astro-cid-hkbrpulz]{border-top:1px solid var(--rule);grid-column:1/-1;padding-top:1.5rem}@media (width<=44rem){.footer-inner[data-astro-cid-hkbrpulz]{grid-template-columns:1fr}.footer-links[data-astro-cid-hkbrpulz]{justify-content:flex-start}}
