﻿/*!
 * Bootstrap Icons v1.13.1 (https://icons.getbootstrap.com/)
 * Copyright 2019-2024 The Bootstrap Authors
 * Licensed under MIT (https://github.com/twbs/icons/blob/main/LICENSE)
 */@font-face{font-display:block;font-family:"bootstrap-icons";src:url("../fonts/bootstrap-icons.woff2?e34853135f9e39acf64315236852cd5a") format("woff2")}.bi::before,[class^=bi-]::before,[class*=" bi-"]::before{display:inline-block;font-family:bootstrap-icons !important;font-style:normal;font-weight:normal !important;font-variant:normal;text-transform:none;line-height:1;vertical-align:-.125em;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.bi-rewind-fill::before{content:""}.bi-caret-left-fill::before{content:""}.bi-caret-right-fill::before{content:""}.bi-fast-forward-fill::before{content:""}.bi-moon-fill::before{content:""}.bi-sun-fill::before{content:""}.bi-calendar::before{content:""}.bi-folder::before{content:""}.bi-tag::before{content:""}.bi-list::before{content:""}/*!
 * Font Awesome Free 7.0.0 by @fontawesome - https://fontawesome.com
 * License - https://fontawesome.com/license/free (Icons: CC BY 4.0, Fonts: SIL OFL 1.1, Code: MIT License)
 * Copyright 2025 Fonticons, Inc.
 */:root,:host{--fa-family-brands: "Font Awesome 7 Brands";--fa-font-brands: normal 400 1em/1 var(--fa-family-brands)}.fa-solid,.fa-regular,.fa-brands,.fa-classic,.fas,.far,.fab,.fa{--_fa-family: var(--fa-family, var(--fa-style-family, "Font Awesome 7 Free"));-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;display:var(--fa-display, inline-block);font-family:var(--_fa-family);font-feature-settings:normal;font-style:normal;font-synthesis:none;font-variant:normal;font-weight:var(--fa-style, 900);line-height:1;text-align:center;text-rendering:auto;width:var(--fa-width, 1.25em)}:is(.fas,.far,.fab,.fa-solid,.fa-regular,.fa-brands,.fa-classic,.fa)::before{content:var(--fa);content:var(--fa)/""}@font-face{font-family:"Font Awesome 7 Brands";font-style:normal;font-weight:400;font-display:block;src:url("../fonts/fa-brands-400.woff2")}.fab,.fa-brands,.fa-classic.fa-brands{--fa-family: var(--fa-family-brands);--fa-style: 400}.fa-github{--fa: ""}.fa-stack-overflow{--fa: ""}.fa-flickr{--fa: ""}.fa-500px{--fa: ""}.fa-facebook{--fa: ""}#lightbox{width:100%;height:100%;position:fixed;top:0;left:0;background:rgba(0,0,0,.85);z-index:9999999;line-height:0;cursor:pointer;display:none}#lightbox .img{position:relative;top:50%;left:50%;-ms-transform:translateX(-50%) translateY(-50%);-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);max-width:100%;max-height:100%}#lightbox .img img{opacity:0;pointer-events:none;width:auto}@media screen and (min-width: 1200px){#lightbox .img{max-width:1200px}}@media screen and (min-height: 1200px){#lightbox .img{max-height:1200px}}#lightbox span{display:block;position:fixed;bottom:13px;height:1.5em;line-height:1.4em;width:100%;text-align:center;color:#fff;text-shadow:-1px -1px 0 #000,1px -1px 0 #000,-1px 1px 0 #000,1px 1px 0 #000}#lightbox span{display:none}#lightbox .videoWrapperContainer{position:relative;top:50%;left:50%;-ms-transform:translateX(-50%) translateY(-50%);-webkit-transform:translate(-50%, -50%);transform:translate(-50%, -50%);max-width:900px;max-height:100%}#lightbox .videoWrapperContainer .videoWrapper{height:0;line-height:0;margin:0;padding:0;position:relative;padding-bottom:56.333%;background:#000}#lightbox .videoWrapper iframe{position:absolute;top:0;left:0;width:100%;height:100%;border:0;display:block}#lightbox #prev,#lightbox #next{height:50px;line-height:36px;display:none;margin-top:-25px;position:fixed;top:50%;padding:0 15px;cursor:pointer;text-decoration:none;z-index:99;color:#fff;font-size:60px}#lightbox.gallery #prev,#lightbox.gallery #next{display:block}#lightbox #prev{left:0}#lightbox #next{right:0}#lightbox #close{height:50px;width:50px;position:fixed;cursor:pointer;text-decoration:none;z-index:99;right:0;top:0}#lightbox #close:after,#lightbox #close:before{position:absolute;margin-top:22px;margin-left:14px;content:"";height:3px;background:#fff;width:23px;-webkit-transform-origin:50% 50%;-moz-transform-origin:50% 50%;-o-transform-origin:50% 50%;transform-origin:50% 50%;-webkit-transform:rotate(-45deg);-moz-transform:rotate(-45deg);-ms-transform:rotate(-45deg);-o-transform:rotate(-45deg)}#lightbox #close:after{-webkit-transform:rotate(45deg);-moz-transform:rotate(45deg);-ms-transform:rotate(45deg);-o-transform:rotate(45deg)}#lightbox,#lightbox *{-webkit-user-select:none;-moz-user-select:none;-ms-user-select:none;user-select:none}*,*::before,*::after{box-sizing:border-box}*{margin:0}@media (prefers-reduced-motion: no-preference){html{interpolate-size:allow-keywords}}body{line-height:1.5;-webkit-font-smoothing:antialiased}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit}p,h1,h2,h3,h4,h5,h6{overflow-wrap:break-word}p{text-wrap:pretty}h1,h2,h3,h4,h5,h6{text-wrap:balance}:root{--font-sans: "PT Sans", "sans-serif";--font-serif: "PT Serif", "serif";--font-mono: "Monaco", "monospace";--text-xs: clamp(0.5208rem, 0.34rem + 0.742vw, 0.8rem);--text-sm: clamp(0.625rem, 0.3821rem + 0.9967vw, 1rem);--text-m: clamp(0.75rem, 0.4261rem + 1.3289vw, 1.25rem);--text-lg: clamp(0.9rem, 0.4708rem + 1.7608vw, 1.5625rem);--text-xl: clamp(1.08rem, 0.5144rem + 2.3206vw, 1.9531rem);--text-2xl: clamp(1.296rem, 0.554rem + 3.0443vw, 2.4414rem);--text-3xl: clamp(1.5552rem, 0.5857rem + 3.9776vw, 3.0518rem);--text-4xl: clamp(1.8662rem, 0.604rem + 5.1786vw, 3.8147rem);--space-3xs: clamp(0.1875rem, 0.1065rem + 0.3322vw, 0.3125rem);--space-2xs: clamp(0.375rem, 0.213rem + 0.6645vw, 0.625rem);--space-xs: clamp(0.5625rem, 0.3196rem + 0.9967vw, 0.9375rem);--space-s: clamp(0.75rem, 0.4261rem + 1.3289vw, 1.25rem);--space-m: clamp(1.125rem, 0.6391rem + 1.9934vw, 1.875rem);--space-l: clamp(1.5rem, 0.8522rem + 2.6578vw, 2.5rem);--space-xl: clamp(2.25rem, 1.2782rem + 3.9867vw, 3.75rem);--space-2xl: clamp(3rem, 1.7043rem + 5.3156vw, 5rem);--space-3xl: clamp(4.5rem, 2.5565rem + 7.9734vw, 7.5rem);--space-3xs-2xs: clamp(0.1875rem, -0.0959rem + 1.1628vw, 0.625rem);--space-2xs-xs: clamp(0.375rem, 0.0106rem + 1.495vw, 0.9375rem);--space-xs-s: clamp(0.5625rem, 0.1171rem + 1.8272vw, 1.25rem);--space-s-m: clamp(0.75rem, 0.0212rem + 2.99vw, 1.875rem);--space-m-l: clamp(1.125rem, 0.2342rem + 3.6545vw, 2.5rem);--space-l-xl: clamp(1.5rem, 0.0424rem + 5.9801vw, 3.75rem);--space-xl-2xl: clamp(2.25rem, 0.4684rem + 7.309vw, 5rem);--space-2xl-3xl: clamp(3rem, 0.0847rem + 11.9601vw, 7.5rem);--space-s-l: clamp(0.75rem, -0.3837rem + 4.6512vw, 2.5rem);--grid-max-width: 62.5rem;--grid-gutter: var( --space-2xs-l, clamp(0.375rem, -0.9836rem + 5.5738vw, 2.5rem) );--grid-columns: 6;--color-gray-0: #f2f2f2;--color-gray-10: #d3d3d3;--color-gray-20: #b7b7b7;--color-gray-30: #9e9e9e;--color-gray-40: #878787;--color-gray-50: #727272;--color-gray-60: #5e5e5e;--color-gray-70: #4b4b4b;--color-gray-80: #383838;--color-gray-90: #232323;--color-gray-100: #000000;--color-text-primary: var(--color-gray-80);--color-text-secondary: var(--color-gray-50);--color-text-accent: red;--color-text-light: var(--color-gray-10);--color-bg-lightest: var(--color-gray-0);--color-bg-light: var(--color-gray-10);--color-bg-darkest: var(--color-gray-90)}.dark{--color-text-primary: var(--color-gray-20);--color-text-secondary: var(--color-gray-50);--color-bg-lightest: var(--color-gray-50);--color-bg-light: var(--color-gray-80);--color-bg-darkest: var(--color-gray-100)}body{margin:var(--space-m)}footer{display:flex}@media (min-width: 600px){body{display:grid;max-width:1000px;grid-template-columns:clamp(4rem,20vw,200px) 1fr}.content{grid-column:2/2;margin:0 var(--space-m)}.pagination{grid-column:2/2}footer{display:none}}.inactive{color:var(--color-text-secondary)}.hidden{display:none}.blog-title a{text-decoration:none}.blog-meta{font-family:var(--font-sans);font-size:var(--text-sm);color:var(--color-text-secondary)}.blog-meta a{text-decoration:none;color:var(--color-text-secondary)}.blog-meta.blog-dates{margin-bottom:calc(var(--space-3xs)*-1)}.blog-meta.blog-taxonomies{margin-top:calc(var(--space-3xs)*-1);margin-bottom:var(--space-xs)}ul.button-nav{padding:0;margin-bottom:0}ul.button-nav>li{float:left;border:2px solid var(--color-text-secondary);padding:var(--space-3xs) var(--space-xs)}ul.button-nav>li+li{margin-left:-2px}ul.button-nav>li:first-child{border-top-left-radius:var(--space-2xs);border-bottom-left-radius:var(--space-2xs)}ul.button-nav>li:last-child{border-top-right-radius:var(--space-2xs);border-bottom-right-radius:var(--space-2xs)}.prose a,p a{text-decoration:underline dotted}.prose.post-summary{margin-bottom:var(--space-l)}footer{background-color:var(--color-bg-darkest);padding:var(--space-xs);margin-top:var(--space-m);color:var(--color-text-light);font-family:var(--font-sans);font-size:var(--text-xs)}footer ul{display:flex;list-style:none;margin-bottom:0}footer a{color:var(--color-text-light);margin-left:var(--space-xs)}nav{display:flex;align-items:center;background-color:var(--color-bg-darkest);padding:var(--space-xs);color:var(--color-text-light);position:relative;margin-bottom:var(--space-xs)}nav a{text-decoration:none;color:var(--color-text-light);font-family:var(--font-sans)}nav li{font-family:var(--font-sans)}nav a.icon{margin-left:auto;font-size:var(--text-3xl);color:var(--color-text-light)}button#theme-toggle{color:var(--color-text-light);background-color:var(--color-bg-darkest);border-style:none}button#theme-toggle:hover{color:var(--color-text-accent)}nav .vert-logo{display:none}nav .links{display:none}nav .nav-list{display:none;position:absolute;top:100%;width:100%;left:0;background-color:var(--color-bg-darkest)}nav .nav-list ul{list-style:none;padding-left:var(--space-m)}nav .copyright{margin-top:var(--space-m);font-size:var(--text-xs)}@media (min-width: 600px){nav{display:block;margin-bottom:0}nav .vert-logo{display:block}nav .horiz-logo{display:none}nav a.icon{display:none}nav .nav-list{display:block;position:static}nav .nav-list ul{text-align:center;padding:0;margin-top:var(--space-xs)}nav .nav-list li{padding:var(--space-3xs)}nav .links{display:block}}.page-nav{display:flex;justify-content:space-between;font-family:var(--font-sans);font-size:var(--text-sm)}.page-nav a{text-decoration:none;color:var(--color-primary)}.page-nav a:hover{color:var(--color-text-accent)}.page-nav>div{border:2px solid var(--color-text-secondary);padding:var(--space-3xs) var(--space-xs)}.page-nav>div:first-child{border-top-left-radius:var(--space-2xs);border-bottom-left-radius:var(--space-2xs)}.page-nav>div:last-child{border-top-right-radius:var(--space-2xs);border-bottom-right-radius:var(--space-2xs)}.pagination{display:flex;justify-content:center;align-items:center;margin-top:var(--space-m);margin-bottom:0}.pagination ul{display:flex;list-style:none;font-family:var(--font-sans);font-size:var(--text-sm)}.pagination ul a{text-decoration:none;color:var(--color-primary)}.pagination ul a:hover{color:var(--color-text-accent)}.pagination .location{padding-left:var(--space-s);padding-right:var(--space-s)}.taxonomy ul{list-style:none;font-family:var(--font-sans);font-size:var(--text-lg)}.taxonomy a{text-decoration:none;color:var(--color-primary)}.taxonomy a:hover{color:var(--color-text-accent)}h1.heading{margin-bottom:var(--space-s)}:not(pre)>code{font-family:var(--font-mono);font-size:var(--text-sm);font-weight:bold;background-color:var(--color-bg-lightest);padding:calc(var(--space-3xs)/2) var(--space-3xs);border-radius:5px}a{color:var(--color-text-primary)}a:hover{color:var(--color-text-accent)}body{color:var(--color-text-primary);background-color:var(--color-bg-light);font-family:var(--font-serif);font-size:var(--text-m)}dd{margin-left:var(--space-s);margin-bottom:var(--space-xs)}dt{font-weight:bold}figcaption{text-align:center !important;font-size:var(--text-sm);margin-top:0 !important;font-family:var(--font-sans)}h1,h2,h3,h4,h5,h6{font-family:var(--font-sans)}h1{font-size:var(--text-2xl)}h2{font-size:var(--text-xl)}h3{font-size:var(--text-lg)}p{margin-bottom:var(--space-xs)}p+ul{margin-top:calc(var(--space-xs)*-1)}pre{font-family:var(--font-mono);font-size:var(--text-sm);text-wrap:wrap;margin-bottom:var(--space-xs);padding:var(--space-xs)}ul{margin-bottom:var(--space-xs)}