:root,[data-bs-theme='light']{--bs-blue:#0d6efd;--bs-indigo:#6610f2;--bs-purple:#6f42c1;--bs-pink:#d63384;--bs-red:#dc3545;--bs-orange:#fd7e14;--bs-yellow:#ffc107;--bs-green:#198754;--bs-teal:#20c997;--bs-cyan:#0dcaf0;--bs-black:#000;--bs-white:#fff;--bs-gray:#6c757d;--bs-gray-dark:#343a40;--bs-gray-100:#f8f9fa;--bs-gray-200:#e9ecef;--bs-gray-300:#dee2e6;--bs-gray-400:#ced4da;--bs-gray-500:#adb5bd;--bs-gray-600:#6c757d;--bs-gray-700:#495057;--bs-gray-800:#343a40;--bs-gray-900:#212529;--bs-primary:#0d6efd;--bs-secondary:#6c757d;--bs-success:#198754;--bs-info:#0dcaf0;--bs-warning:#ffc107;--bs-danger:#dc3545;--bs-light:#f8f9fa;--bs-dark:#212529;--bs-primary-rgb:13,110,253;--bs-secondary-rgb:108,117,125;--bs-success-rgb:25,135,84;--bs-info-rgb:13,202,240;--bs-warning-rgb:255,193,7;--bs-danger-rgb:220,53,69;--bs-light-rgb:248,249,250;--bs-dark-rgb:33,37,41;--bs-primary-text-emphasis:#052c65;--bs-secondary-text-emphasis:#2b2f32;--bs-success-text-emphasis:#0a3622;--bs-info-text-emphasis:#055160;--bs-warning-text-emphasis:#664d03;--bs-danger-text-emphasis:#58151c;--bs-light-text-emphasis:#495057;--bs-dark-text-emphasis:#495057;--bs-primary-bg-subtle:#cfe2ff;--bs-secondary-bg-subtle:#e2e3e5;--bs-success-bg-subtle:#d1e7dd;--bs-info-bg-subtle:#cff4fc;--bs-warning-bg-subtle:#fff3cd;--bs-danger-bg-subtle:#f8d7da;--bs-light-bg-subtle:#fcfcfd;--bs-dark-bg-subtle:#ced4da;--bs-primary-border-subtle:#9ec5fe;--bs-secondary-border-subtle:#c4c8cb;--bs-success-border-subtle:#a3cfbb;--bs-info-border-subtle:#9eeaf9;--bs-warning-border-subtle:#ffe69c;--bs-danger-border-subtle:#f1aeb5;--bs-light-border-subtle:#e9ecef;--bs-dark-border-subtle:#adb5bd;--bs-white-rgb:255,255,255;--bs-black-rgb:0,0,0;--bs-font-sans-serif:system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue','Noto Sans','Liberation Sans',Arial,sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';--bs-font-monospace:SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono','Courier New',monospace;--bs-gradient:linear-gradient(180deg,rgba(255,255,255,0.15),rgba(255,255,255,0));--bs-body-font-family:var(--bs-font-sans-serif);--bs-body-font-size:1rem;--bs-body-font-weight:400;--bs-body-line-height:1.5;--bs-body-color:#212529;--bs-body-color-rgb:33,37,41;--bs-body-bg:#fff;--bs-body-bg-rgb:255,255,255;--bs-emphasis-color:#000;--bs-emphasis-color-rgb:0,0,0;--bs-secondary-color:rgba(33,37,41,0.75);--bs-secondary-color-rgb:33,37,41;--bs-secondary-bg:#e9ecef;--bs-secondary-bg-rgb:233,236,239;--bs-tertiary-color:rgba(33,37,41,0.5);--bs-tertiary-color-rgb:33,37,41;--bs-tertiary-bg:#f8f9fa;--bs-tertiary-bg-rgb:248,249,250;--bs-heading-color:inherit;--bs-link-color:#0d6efd;--bs-link-color-rgb:13,110,253;--bs-link-decoration:underline;--bs-link-hover-color:#0a58ca;--bs-link-hover-color-rgb:10,88,202;--bs-code-color:#d63384;--bs-highlight-color:#212529;--bs-highlight-bg:#fff3cd;--bs-border-width:1px;--bs-border-style:solid;--bs-border-color:#dee2e6;--bs-border-color-translucent:rgba(0,0,0,0.175);--bs-border-radius:0.375rem;--bs-border-radius-sm:0.25rem;--bs-border-radius-lg:0.5rem;--bs-border-radius-xl:1rem;--bs-border-radius-xxl:2rem;--bs-border-radius-2xl:var(--bs-border-radius-xxl);--bs-border-radius-pill:50rem;--bs-box-shadow:0 0.5rem 1rem rgba(0,0,0,0.15);--bs-box-shadow-sm:0 0.125rem 0.25rem rgba(0,0,0,0.075);--bs-box-shadow-lg:0 1rem 3rem rgba(0,0,0,0.175);--bs-box-shadow-inset:inset 0 1px 2px rgba(0,0,0,0.075);--bs-focus-ring-width:0.25rem;--bs-focus-ring-opacity:0.25;--bs-focus-ring-color:rgba(13,110,253,0.25);--bs-form-valid-color:#198754;--bs-form-valid-border-color:#198754;--bs-form-invalid-color:#dc3545;--bs-form-invalid-border-color:#dc3545}[data-bs-theme='dark']{color-scheme:dark;--bs-body-color:#dee2e6;--bs-body-color-rgb:222,226,230;--bs-body-bg:#212529;--bs-body-bg-rgb:33,37,41;--bs-emphasis-color:#fff;--bs-emphasis-color-rgb:255,255,255;--bs-secondary-color:rgba(222,226,230,0.75);--bs-secondary-color-rgb:222,226,230;--bs-secondary-bg:#343a40;--bs-secondary-bg-rgb:52,58,64;--bs-tertiary-color:rgba(222,226,230,0.5);--bs-tertiary-color-rgb:222,226,230;--bs-tertiary-bg:#2b3035;--bs-tertiary-bg-rgb:43,48,53;--bs-primary-text-emphasis:#6ea8fe;--bs-secondary-text-emphasis:#a7acb1;--bs-success-text-emphasis:#75b798;--bs-info-text-emphasis:#6edff6;--bs-warning-text-emphasis:#ffda6a;--bs-danger-text-emphasis:#ea868f;--bs-light-text-emphasis:#f8f9fa;--bs-dark-text-emphasis:#dee2e6;--bs-primary-bg-subtle:#031633;--bs-secondary-bg-subtle:#161719;--bs-success-bg-subtle:#051b11;--bs-info-bg-subtle:#032830;--bs-warning-bg-subtle:#332701;--bs-danger-bg-subtle:#2c0b0e;--bs-light-bg-subtle:#343a40;--bs-dark-bg-subtle:#1a1d20;--bs-primary-border-subtle:#084298;--bs-secondary-border-subtle:#41464b;--bs-success-border-subtle:#0f5132;--bs-info-border-subtle:#087990;--bs-warning-border-subtle:#997404;--bs-danger-border-subtle:#842029;--bs-light-border-subtle:#495057;--bs-dark-border-subtle:#343a40;--bs-heading-color:inherit;--bs-link-color:#6ea8fe;--bs-link-hover-color:#8bb9fe;--bs-link-color-rgb:110,168,254;--bs-link-hover-color-rgb:139,185,254;--bs-code-color:#e685b5;--bs-highlight-color:#dee2e6;--bs-highlight-bg:#664d03;--bs-border-color:#495057;--bs-border-color-translucent:rgba(255,255,255,0.15);--bs-form-valid-color:#75b798;--bs-form-valid-border-color:#75b798;--bs-form-invalid-color:#ea868f;--bs-form-invalid-border-color:#ea868f}*,*::before,*::after{box-sizing:border-box}@media (prefers-reduced-motion:no-preference){:root{scroll-behavior:smooth}}body{margin:0;font-family:var(--bs-body-font-family);font-size:var(--bs-body-font-size);font-weight:var(--bs-body-font-weight);line-height:var(--bs-body-line-height);color:var(--bs-body-color);text-align:var(--bs-body-text-align);background-color:var(--bs-body-bg);-webkit-text-size-adjust:100%;-webkit-tap-highlight-color:rgba(0,0,0,0)}hr{margin:1rem 0;color:inherit;border:0;border-top:var(--bs-border-width) solid;opacity:0.25}h6,h5,h4,h3,h2,h1{margin-top:0;margin-bottom:0.5rem;font-weight:500;line-height:1.2;color:var(--bs-heading-color)}h1{font-size:calc(1.375rem + 1.5vw)}@media (min-width:1200px){h1{font-size:2.5rem}}h2{font-size:calc(1.325rem + 0.9vw)}@media (min-width:1200px){h2{font-size:2rem}}h3{font-size:calc(1.3rem + 0.6vw)}@media (min-width:1200px){h3{font-size:1.75rem}}h4{font-size:calc(1.275rem + 0.3vw)}@media (min-width:1200px){h4{font-size:1.5rem}}h5{font-size:1.25rem}h6{font-size:1rem}p{margin-top:0;margin-bottom:1rem}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted;cursor:help;-webkit-text-decoration-skip-ink:none;text-decoration-skip-ink:none}address{margin-bottom:1rem;font-style:normal;line-height:inherit}ol,ul{padding-left:2rem}ol,ul,dl{margin-top:0;margin-bottom:1rem}ol ol,ul ul,ol ul,ul ol{margin-bottom:0}dt{font-weight:700}dd{margin-bottom:0.5rem;margin-left:0}blockquote{margin:0 0 1rem}b,strong{font-weight:bolder}small{font-size:0.875em}mark{padding:0.1875em;color:var(--bs-highlight-color);background-color:var(--bs-highlight-bg)}sub,sup{position:relative;font-size:0.75em;line-height:0;vertical-align:baseline}sub{bottom:-0.25em}sup{top:-0.5em}a{color:rgba(var(--bs-link-color-rgb),var(--bs-link-opacity,1));text-decoration:underline}a:hover{--bs-link-color-rgb:var(--bs-link-hover-color-rgb)}a:not([href]):not([class]),a:not([href]):not([class]):hover{color:inherit;text-decoration:none}pre,code,kbd,samp{font-family:var(--bs-font-monospace);font-size:1em}pre{display:block;margin-top:0;margin-bottom:1rem;overflow:auto;font-size:0.875em}pre code{font-size:inherit;color:inherit;word-break:normal}code{font-size:0.875em;color:var(--bs-code-color);word-wrap:break-word}a>code{color:inherit}kbd{padding:0.1875rem 0.375rem;font-size:0.875em;color:var(--bs-body-bg);background-color:var(--bs-body-color);border-radius:0.25rem}kbd kbd{padding:0;font-size:1em}figure{margin:0 0 1rem}img,svg{vertical-align:middle}table{caption-side:bottom;border-collapse:collapse}caption{padding-top:0.5rem;padding-bottom:0.5rem;color:var(--bs-secondary-color);text-align:left}th{text-align:inherit;text-align:-webkit-match-parent}thead,tbody,tfoot,tr,td,th{border-color:inherit;border-style:solid;border-width:0}label{display:inline-block}button{border-radius:0}button:focus:not(:focus-visible){outline:0}input,button,select,optgroup,textarea{margin:0;font-family:inherit;font-size:inherit;line-height:inherit}button,select{text-transform:none}[role='button']{cursor:pointer}select{word-wrap:normal}select:disabled{opacity:1}[list]:not([type='date']):not([type='datetime-local']):not([type='month']):not([type='week']):not([type='time'])::-webkit-calendar-picker-indicator{display:none!important}button,[type='button'],[type='reset'],[type='submit']{-webkit-appearance:button}button:not(:disabled),[type='button']:not(:disabled),[type='reset']:not(:disabled),[type='submit']:not(:disabled){cursor:pointer}::-moz-focus-inner{padding:0;border-style:none}textarea{resize:vertical}fieldset{min-width:0;padding:0;margin:0;border:0}legend{float:left;width:100%;padding:0;margin-bottom:0.5rem;font-size:calc(1.275rem + 0.3vw);line-height:inherit}@media (min-width:1200px){legend{font-size:1.5rem}}legend + *{clear:left}::-webkit-datetime-edit-fields-wrapper,::-webkit-datetime-edit-text,::-webkit-datetime-edit-minute,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-year-field{padding:0}::-webkit-inner-spin-button{height:auto}[type='search']{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-color-swatch-wrapper{padding:0}::-webkit-file-upload-button{font:inherit;-webkit-appearance:button}::file-selector-button{font:inherit;-webkit-appearance:button}output{display:inline-block}iframe{border:0}summary{display:list-item;cursor:pointer}progress{vertical-align:baseline}[hidden]{display:none!important}:root{color-scheme:light dark;--bs-body-font-size:1.3rem;--duration:0.5s;--timing:ease;--content-bg:#eaeaeb;--content-fg:#efefef;--content-border:#bbb;--primary:210,61%;--primary-l:45%;--blueprint-bg:hsl(var(--primary),var(--primary-l));--blueprint-fg:#e8e8e8;--border-radius:0.2rem;--text-color:#001;--text-color-muted:#666;--text-color-amp:#bbb;--inline-code-bg:var(--content-fg);--inline-code-fg:#d63384;--inline-code-border:var(--content-border);--code-block-bg:#090916;--code-block-fg:#f8f8f2;--blockquote-border:var(--content-border);--blockquote-bg:var(--content-fg);--link-color:var(--blueprint-bg);--link-color-hover:hsl(var(--primary),calc(var(--primary-l) -15%));--admonition-bg:var(--blueprint-bg);--hr-fg:#444;--img-border-color:var(--content-border);--img-bg:var(--content-fg);--img-shadow-color:hsla(0deg,0%,0%,0.075);--admonition-border-color:#3c7cbd;--icon-color-content:#bbb;--icon-color-blueprint:#e8e8e8;--pagination-hover-bg:#e9ecec;--pagination-border-color:#bcc4cd;--font-stack-serif:'Lucida Bright',Lucidabright,'Lucida Serif',Lucida,'DejaVu Serif','Bitstream Vera Serif','Liberation Serif',Georgia,serif;--font-heading:'Noto Serif',var(--font-stack-serif);--font-body:'Bitter',var(--font-stack-serif);--font-flourish:'Flourishes',var(--font-stack-serif);--font-mono:'PT Mono',SFMono-Regular,Menlo,Monaco,Consolas,'Liberation Mono',monospace;--font-sans:system-ui,-apple-system,'Segoe UI',Roboto,'Helvetica Neue',Arial,'Noto Sans','Liberation Sans',sans-serif,'Apple Color Emoji','Segoe UI Emoji','Segoe UI Symbol','Noto Color Emoji';accent-color:var(--blueprint-bg)}@media (prefers-color-scheme:dark){:root{color-scheme:dark;--content-bg:#363839;--content-fg:#424446;--content-border:#888;--link-color:hsl(var(--primary),calc(var(--primary-l) +5%));--link-color-hover:hsl(var(--primary),calc(var(--primary-l) +15%));--text-color:#fff;--text-color-muted:#cac5bf;--blueprint-fg:#e8e8e8;--blockquote-border:var(--content-border);--blockquote-bg:var(--content-fg);--hr-fg:var(--blueprint-fg);--text-color-amp:#ada69d;--inline-code-bg:var(--content-fg);--inline-code-fg:#ff8ac4;--inline-code-border:#666;--img-bg:var(--content-fg);--pagination-hover-bg:var(--content-fg);--pagination-border-color:#777}}body.dark-theme{color-scheme:dark;--content-bg:#363839;--content-fg:#424446;--content-border:#888;--link-color:hsl(var(--primary),calc(var(--primary-l) +5%));--link-color-hover:hsl(var(--primary),calc(var(--primary-l) +15%));--text-color:#fff;--text-color-muted:#cac5bf;--blueprint-fg:#e8e8e8;--blockquote-border:var(--content-border);--blockquote-bg:var(--content-fg);--hr-fg:var(--blueprint-fg);--text-color-amp:#ada69d;--inline-code-bg:var(--content-fg);--inline-code-fg:#ff8ac4;--inline-code-border:#666;--img-bg:var(--content-fg);--pagination-hover-bg:var(--content-fg);--pagination-border-color:#777}.hidden{display:none}.amp{font-family:var(--font-flourish);color:var(--text-color-muted)}.caps{font-size:0.92em;font-variant:small-caps}.muted{color:var(--text-color-muted)}.day_suffix{vertical-align:super;font-size:70%}.smallprint{color:var(--text-color-muted);font-size:1rem;font-style:italic;line-height:1.25}.content .noclear h2,.content .noclear h3,.content .noclear h4,.content .noclear h5{clear:unset}.two-columns>ul{column-count:2}.three-columns>ul{column-count:3}.content .scrollable{overflow-y:scroll;height:25rem;margin-bottom:0.5rem}p.lead{font-size:1.5rem;line-height:1.3;font-style:italic;color:var(--text-color-muted);text-wrap:balance}.clear{clear:both}i.icon svg{fill:currentColor;display:inline-block;font-size:inherit;height:1em;width:1.25em;overflow:visible;vertical-align:-0.125em;margin:0 4px 0 0}:is(header,footer) i.icon svg{fill:var(--icon-color-blueprint)}article i.icon svg{fill:var(--icon-color-content)}:is(header,footer) a:hover i.icon svg,:is(header,footer) .active i.icon svg{fill:var(--blueprint-bg)}i.icon noscript img{padding:0;border:none;float:none;margin:0;box-shadow:none;margin-right:-14px}body{display:grid;grid-template-columns:1fr;grid-template-rows:repeat(3,auto);gap:0px 0px;grid-auto-flow:row;grid-template-areas:'header' 'article' 'footer';height:100vh}header{grid-area:header}footer{grid-area:footer}article{display:grid;grid-template-columns:1fr;grid-template-rows:repeat(2,auto);gap:0px 0px;grid-auto-flow:row;grid-template-areas:'title' 'main';grid-area:article}.title{grid-area:title}.main{display:flex;flex-wrap:nowrap;flex-direction:column}.article-sidebar{flex:2}.article-content{flex:8;padding:0 1rem}:is(header,footer){padding:1.5rem 0.5rem;background:var(--blueprint-bg) url(/images/blueprint-background.svg) repeat;background-size:15px;color:var(--blueprint-fg)}:is(header,footer) nav{margin-right:1rem}:is(header,footer) a{text-decoration:none;border-radius:var(--border-radius);border:1px solid transparent}:is(header,footer) a:hover,:is(header,footer) .amp{color:var(--blueprint-fg)}:is(header,footer) nav ul{list-style-type:none;padding:0;margin-top:0;margin-right:0}:is(header,footer) nav li a{color:var(--blueprint-fg);display:inline-block;padding:0.25rem;width:100%;word-break:break-all;transition:color 0.1s ease-in-out,background-color 0.1s ease-in-out,border-color 0.1s ease-in-out,box-shadow 0.1s ease-in-out}:is(header,footer) nav li i{color:var(--blueprint-fg)}:is(header,footer) nav li a:hover{color:var(--blueprint-bg);background-color:var(--blueprint-fg);border:1px solid var(--blueprint-fg)}:is(header,footer) nav li a:hover .amp{color:inherit}:is(header,footer) nav li.active a{background-color:var(--blueprint-fg);color:var(--blueprint-bg)}:is(header,footer) nav li.active .amp{color:inherit}header{display:flex;justify-content:center;margin-bottom:0.75rem}header nav{margin:1.5rem 0.5rem 0.5rem 0}header nav li{float:left;margin-left:0.25rem}.brand{display:block;margin-right:2rem;font-family:var(--font-heading);font-weight:normal;font-size:5.063rem;line-height:1;color:var(--blueprint-fg)}a.brand:hover{text-decoration:underline}#theme-toggle{background-color:rgba(0,0,0,0.4);border-bottom-left-radius:0.5rem;padding:0.25rem 0.5rem 0.5rem 0.75rem;position:absolute;top:0;right:0;cursor:pointer}#theme-toggle i.icon svg{margin:0;width:1rem;height:1rem}#theme-toggle i.icon.dark-theme{display:none}@media (prefers-color-scheme:dark){#theme-toggle i.icon.light-theme{display:none}#theme-toggle i.icon.dark-theme{display:block}}body.dark-theme #theme-toggle i.icon.light-theme{display:none}body.dark-theme #theme-toggle i.icon.dark-theme{display:block}@media (prefers-color-scheme:light){#theme-toggle i.icon.light-theme{display:block}#theme-toggle i.icon.dark-theme{display:none}}body.light-theme #theme-toggle i.icon.light-theme{display:block}body.light-theme #theme-toggle i.icon.dark-theme{display:none}footer{padding:1em 2em;margin:1em 0 0 0}footer li{text-align:left;line-height:1;margin-bottom:0}footer li.feeds i.icon svg{margin-left:4px}footer li.feeds a{display:inline;padding:3px;margin:0 3px 0 -6px}footer .row{display:flex}footer .links{flex:1;display:flex}footer nav{flex:1}footer .colophon{flex:1}footer a{color:var(--blueprint-fg);border-radius:var(--border-radius);border:1px solid transparent}footer h3{font:bold 1rem/1.5 var(--font-sans);text-transform:uppercase;margin:0 0 0.2rem 0;color:var(--blueprint-fg)}footer hr{opacity:initial}.colophon p,.copyright p{margin:0;font-size:90%;font-style:italic;line-height:1.25}.colophon img.icon{height:100px;float:left;margin-right:1rem}.colophon img.icon.right{height:100px;float:right;margin-left:1rem}.content img{border:1px solid var(--img-border-color);border-radius:var(--border-radius);padding:0.5rem;background:var(--img-bg);float:left;margin:1em 1em 1em 0;box-shadow:0 1px 1px var(--img-shadow-color),0 2px 2px var(--img-shadow-color),0 4px 4px var(--img-shadow-color),0 8px 8px var(--img-shadow-color),0 16px 16px var(--img-shadow-color);max-width:100%;height:auto}.content img.align-left{float:left;margin:0.5em 1em 1em 0}.content img.align-right{float:right;margin:0.5em 0 1em 1em}.content img.no-wrap{float:none;clear:both;margin-bottom:0.15em}.content img.small{width:300px}.content div.bare img,.content img.bare{border:none;border-radius:0;padding:0;box-shadow:none}.content div.icon img,.content img.icon{border:none;border-radius:0;padding:0;box-shadow:none;margin:4px;color:var(--text-color)}.content figure{display:table;max-width:100%;float:left;border:1px solid var(--img-border-color);border-bottom:none;border-radius:var(--border-radius);background:var(--img-bg);margin:0 1.75em 1em 0;padding:0.5rem 0.5rem 0.25rem 0.5rem;box-shadow:0 1px 1px var(--img-shadow-color),0 2px 2px var(--img-shadow-color),0 4px 4px var(--img-shadow-color),0 8px 8px var(--img-shadow-color),0 16px 16px var(--img-shadow-color)}.content figure.align-right{float:right;margin:0 0 1em 1em}.content figure.align-left{float:left}.content figure.small{width:332px}.content figure img{display:block;max-width:100%;height:auto;border:none;box-shadow:none;margin:0;padding:0}.content figcaption{padding:0.25rem 0.5rem 0.5rem 0.5rem;display:table-caption;caption-side:bottom;border:1px solid var(--img-border-color);border-top:none;background-color:var(--img-bg);color:var(--text-color);box-shadow:0 1px 1px var(--img-shadow-color),0 2px 2px var(--img-shadow-color),0 4px 4px var(--img-shadow-color),0 8px 8px var(--img-shadow-color),0 16px 16px var(--img-shadow-color);border-radius:var(--border-radius);border-top-right-radius:0;border-top-left-radius:0;margin-top:-3px;position:relative;font-size:80%}.content figcaption .amp{color:var(--text-color-amp)}.content figure pre{margin-bottom:0}article .article-sidebar{text-align:left;color:var(--text-color-muted);font-size:90%;padding:0 1rem 0 1rem;display:flex;flex-direction:column;height:-moz-available;height:fit-content}article .article-sidebar .article-info{flex:1}article .article-sidebar section{flex:1;margin-bottom:0.75rem}article .article-sidebar .series{flex:1}article .article-sidebar .article-info{margin-left:0}article .article-sidebar p{text-align:left;margin:0 0 0.5em 0;font-size:1em}article .article-sidebar .by{font-style:italic;color:var(--text-color-muted)}article .article-sidebar p.social_widgets{margin-bottom:0}article .article-sidebar p + ul{margin-bottom:0}article .article-sidebar .tag-list{margin:0;margin-left:1rem;padding:0}article .article-sidebar .tag-list .tag{padding:0;float:none;clear:both}article .article-sidebar .contents ul{margin:0;list-style-type:none}article .article-sidebar .contents ul li{line-height:1.1;margin-bottom:0.25em}article .article-sidebar .contents ul li a{color:#aaa}article .article-sidebar .contents ul ul{margin:0 0 0.5em 0.7em}article .article-sidebar nav.toc ul{margin-top:0}article .article-sidebar nav{margin-top:0.5em}article .article-sidebar nav .amp{color:var(--text-color-amp)}article .article-sidebar h3{color:var(--text-color-muted);font-size:1.1rem;font-weight:bold}@media screen and (max-width:480px){article .article-sidebar p.tag-heading,article .article-sidebar ul{display:inline}article .article-sidebar .tag-list .tag{float:none;display:inline-block;list-style-type:none}}.pagination{display:flex;list-style:none}.page-link{position:relative;display:block;color:var(--link-color);text-decoration:none;background-color:var(--content-bg);border:1px solid var(--pagination-border-color);transition:color 0.15s ease-in-out,background-color 0.15s ease-in-out,border-color 0.15s ease-in-out,box-shadow 0.15s ease-in-out;padding:0.375rem 0.75rem;width:100%;float:none;clear:both}@media (prefers-reduced-motion:reduce){.page-link{transition:none}}.page-link:hover{z-index:2;color:var(--link-color);background-color:var(--pagination-hover-bg);border-color:var(--pagination-border-color)}.page-link:focus{z-index:3;color:var(--link-color);background-color:var(--pagination-hover-bg);outline:0;box-shadow:0 0 0 0.25rem rgba(13,110,253,0.25)}.page-item:not(:first-child) .page-link{margin-left:-1px}.page-item.active .page-link{z-index:3;color:var(--blueprint-fg);background-color:var(--link-color);border-color:var(--link-color)}.page-item.disabled .page-link{color:#6c757d;pointer-events:none;background-color:var(--content-bg);border-color:var(--pagination-border-color)}.page-item:first-child .page-link{border-top-left-radius:var(--border-radius);border-bottom-left-radius:var(--border-radius)}.page-item:last-child .page-link{border-top-right-radius:var(--border-radius);border-bottom-right-radius:var(--border-radius)}.content .page-item svg{stroke:currentColor;display:inline-block;font-size:inherit;height:1em;width:1.25em;overflow:visible;vertical-align:-0.125em;margin:0 4px 0 0;opacity:0.75}.index h2 a{text-decoration:none;color:var(--text-color)}.index h2 a:hover{text-decoration:underline;color:var(--text-color)}.index .read-more .page-link{border-radius:var(--border-radius)}.index.minimal .tag-list-container{margin-top:-0.25rem}.index.minimal h2{font-size:1.75rem;margin:0.25rem 0}.index.minimal .icon{vertical-align:top;display:inline-block}.index.minimal .tag-list{display:inline-block;margin:0;padding:0}.index.minimal .tag{padding-top:0}.index.minimal .smallprint::before{content:'Today I Learned: ';margin-right:0.25rem;color:var(--text-color)}.index.minimal .smallprint::after{content:'…'}@media (max-width:420px){.content :is(figure,img),.content :is(figure,img).align-left,.content :is(figure,img).align-right,.content :is(figure,img).small{float:none;margin:0 0 1rem 0;width:100%}.brand{font-size:3.2rem;margin-right:0;word-break:break-all}header,footer .row{flex-direction:column}header nav{margin:0}body:not(.index) header div.brand-container{display:none}body:not(.index) header .home-link{display:list-item}body.index header .home-link{display:none}}@media (min-width:421px){.brand{font-size:3rem;word-break:break-all}header .home-link{display:none}article .article-sidebar{flex-direction:row}article .article-sidebar .series{display:none}.index.minimal .article-info p br{display:none}header{flex-direction:column;padding:1rem 0.5rem}:is(header,footer){padding:0.75rem}footer .row{flex-direction:column}:is(header,footer) nav{margin-right:0.5rem}.hresume .intro{flex-direction:column}.hresume .boxout{width:90%}.hresume .technical-skills{margin-top:-1rem}}@media (min-width:768px){.brand{font-size:4.5rem}article .article-sidebar .series{display:block}.index.minimal .article-info p br{display:initial}:is(header,footer){padding:1.5rem 0.5rem}:is(header,footer) nav{margin-right:0.5rem}.hresume .technical-skills{margin-top:-2rem}}@media (min-width:992px){.brand{font-size:5rem}body>div.content{margin:auto;max-width:900px}header{flex-direction:row;padding:1.5rem 0.5rem}.main{flex-direction:row}article .article-sidebar{flex-direction:column}footer .row{flex-direction:row}.hresume .intro{flex-direction:row}.hresume .skills{column-count:2}.hresume .technical-skills{margin-top:-3rem}}@font-face{font-family:'Flourishes';font-style:normal;font-weight:normal;src:url('./fonts/subset-Caladea-Regular.woff2') format('woff2');font-display:swap;unicode-range:U+0020,U+0026,U+00A7,U+201C,U+201D}body{font-family:var(--font-body);color:var(--text-color);background-color:var(--content-bg);transition-property:color,background-color;transition-duration:var(--duration);transition-timing-function:var(--timing)}h1,h2,h3,h4,h5,h6{font-family:var(--font-heading);font-weight:normal;color:var(--text-color);word-break:break-word;text-wrap:balance}h1{--minFontSize:3rem;--maxFontSize:6rem;--scaler:3.5vw;font-size:clamp(var(--minFontSize),var(--scaler),var(--maxFontSize));line-height:1.05}h6{font-size:1.1rem;font-weight:bold}p{-webkit-hyphens:auto;-moz-hyphens:auto;hyphens:auto;text-wrap:pretty}li p{margin-bottom:0}a{color:var(--link-color);white-space:normal;word-break:break-word;overflow-wrap:break-word}a:hover{color:var(--link-color-hover)}dl{font-size:1.15rem}dt{font-size:1.1rem}article .content-title{padding:0 1rem}article .main{padding-top:1rem;max-width:100vw}section.content{padding:0 1rem}.content blockquote{background-color:var(--blockquote-bg);border-left:5px solid var(--blockquote-border);border-radius:var(--border-radius);padding:0.5rem 0.5rem 0 0.75rem;margin:0 0 1.25rem;position:relative}.content blockquote::before{content:'“';position:absolute;top:-12px;left:2px;font-size:7rem;line-height:1;font-family:var(--font-flourish);opacity:0.25}.content blockquote p{font-style:italic;margin-bottom:0.5rem;line-height:1.25;text-indent:2.25rem}.content blockquote p:last-of-type{margin-bottom:0}.content footer{background:initial;color:var(--text-color);padding:0.5rem;margin:initial}.content footer a{color:var(--link-color)}.content p:first-of-type{margin-top:0}.content aside{margin-left:1rem;border-left:0.35rem solid var(--content-border);padding-left:1rem;border-radius:var(--border-radius)}.content .footnotes hr{display:none}.content table.footnote{font-size:95%}.content .footnote-ref,.content .footnote-reference{font-size:75%;vertical-align:top}.content .footnote td{border:none;text-align:left}.content .footnote td.label{background-color:var(--content-bg);text-shadow:none;border-radius:0;padding:0;font-size:inherit;font-weight:normal}.content dd{margin:0.2rem 0 0.3rem 1.5rem}.content dd ul{margin:0.2rem 0 0.3rem 1rem}.content table{border-collapse:collapse;border:none;width:100%;margin-bottom:1rem}.content :is(th,td){border:none;word-break:break-word;padding:0.25rem}.content th{border-bottom:2px solid var(--content-border);border-right:2px solid var(--content-bg);text-align:left}.content td{vertical-align:top;border-bottom:1px dotted var(--content-border);border-right:1px solid var(--content-bg)}.content :is(th,td).halign-right{text-align:right}.content :is(th,td).valign-top{vertical-align:top}.content tfoot td{border-top:2px solid var(--content-border);font-weight:bold}.content .admonition-block{padding:0.25rem 1rem;background:var(--blueprint-bg) url(/images/blueprint-background.svg) repeat;background-size:15px;color:var(--blueprint-fg);border:1px solid var(--admonition-border-color);border-radius:var(--border-radius);margin-bottom:1rem}.content .admonition-block h6{color:var(--blueprint-fg);font-size:150%;font-weight:bold;margin:0.5rem 0 0.5rem 0}.content aside.note .amp,.content section.caution .amp{color:var(--blueprint-fg)}.content aside.note a,.content section.caution a{color:var(--blueprint-fg);text-decoration:underline}.content aside.note p,.content section.caution p{margin-top:0.1rem}.content p + img{margin-top:0}.content :is(p,td,li)>code{border-radius:var(--border-radius);background-color:var(--inline-code-bg);border:1px solid var(--inline-code-border);padding:0.1rem 0.2rem}.highlight{border-radius:var(--border-radius)}.content code{font-family:var(--font-mono);font-size:initial;color:var(--inline-code-fg)}.content pre.highlight{white-space:pre-wrap;word-break:break-word;overflow-wrap:break-word;font-family:var(--font-mono);font-size:1rem;background-color:var(--code-block-bg);color:var(--code-block-fg);padding:0.75rem;overflow:auto;border:none}.content pre.highlight td.code{border:none}.content :is(h1,h2,h3,h4,h5,hr){clear:both;float:none}.content h2{font-size:2.325rem;line-height:1.1}.content h3{font-size:1.6rem}.content h4{font-size:1.3rem}.content h5{font-size:1.2rem}.content hr{background-color:transparent;line-height:1rem;position:relative;outline:0;border:0;color:var(--hr-fg);text-align:center;height:1.5rem;transition:none;margin:0.75rem 1rem}.content hr::before{content:'';background:var(--hr-fg);position:absolute;left:0;top:50%;width:100%;height:1px}.content hr::after{font-family:var(--font-flourish);font-size:1.5rem;content:'§';position:relative;display:inline-block;padding:0 0.5rem;line-height:1.5rem;color:var(--hr-fg);background-color:var(--content-bg)}.tag-list{margin:1rem 0 0.5rem 0;padding:0 0 0.5rem 0;clear:both;float:none;overflow:auto}.tag-list .tag{float:left;list-style-type:none}.tag{padding:0.3rem 0.5rem}.tag .muted{color:var(--text-color-muted)}.video-block iframe{aspect-ratio:16 / 9;width:100%}.video-block{margin-bottom:0.5rem}.highlight{background:#272822;color:#f8f8f2}.highlight .bp{color:#f8f8f2}.highlight .c1{color:#75715e}.highlight .c{color:#75715e}.highlight .ch{color:#75715e}.highlight .cm{color:#75715e}.highlight .cp{color:#75715e}.highlight .cpf{color:#75715e}.highlight .cs{color:#75715e}.highlight .err{color:#960050;background-color:#1e0010}.highlight .gd{color:#f92672}.highlight .ge{font-style:italic}.highlight .gh{color:#fff}.highlight .gi{color:#a6e22e}.highlight .go{color:#808080}.highlight .gp{color:#c65d09;font-weight:bold}.highlight .gr{color:#FF0000}.highlight .gs{font-weight:bold}.highlight .gt{color:#0040D0}.highlight .gu{color:#75715e}.highlight .hll{background-color:#49483e}.highlight .il{color:#ae81ff}.highlight .kc{color:#66d9ef}.highlight .k{color:#66d9ef}.highlight .kd{color:#66d9ef}.highlight .kn{color:#f92672}.highlight .kp{color:#66d9ef}.highlight .kr{color:#66d9ef}.highlight .kt{color:#66d9ef}.highlight .l{color:#ae81ff}.highlight .ld{color:#e6db74}.highlight .mb{color:#ae81ff}.highlight .m{color:#ae81ff}.highlight .mf{color:#ae81ff}.highlight .mh{color:#ae81ff}.highlight .mi{color:#ae81ff}.highlight .mo{color:#ae81ff}.highlight .na{color:#a6e22e}.highlight .nb{color:#f8f8f2}.highlight .nc{color:#a6e22e}.highlight .n{color:#f8f8f2}.highlight .nd{color:#a6e22e}.highlight .ne{color:#a6e22e}.highlight .nf{color:#a6e22e}.highlight .ni{color:#f8f8f2}.highlight .nl{color:#f8f8f2}.highlight .nn{color:#f8f8f2}.highlight .no{color:#66d9ef}.highlight .nt{color:#f92672}.highlight .nv{color:#f8f8f2}.highlight .nx{color:#a6e22e}.highlight .o{color:#f92672}.highlight .ow{color:#f92672}.highlight .p{color:#f8f8f2}.highlight .py{color:#f8f8f2}.highlight .s1{color:#e6db74}.highlight .s2{color:#e6db74}.highlight .sb{color:#e6db74}.highlight .sc{color:#e6db74}.highlight .s{color:#e6db74}.highlight .sd{color:#e6db74}.highlight .se{color:#ae81ff}.highlight .sh{color:#e6db74}.highlight .si{color:#e6db74}.highlight .sr{color:#e6db74}.highlight .ss{color:#e6db74}.highlight .sx{color:#e6db74}.highlight .vc{color:#f8f8f2}.highlight .vg{color:#f8f8f2}.highlight .vi{color:#f8f8f2}.highlight .w{color:#f8f8f2}nav.enumbers ul{padding-left:0;list-style-type:none}nav.enumbers li{float:left;padding-right:1rem}table.enumbers{width:100%}.enumbers :is(td.good,td.bad,td.unknown){text-align:center}.enumbers td.bad{background-color:#f63;font-weight:bolder;color:#fff}.enumbers td.good{background-color:#6c6;font-weight:bolder;color:#fff}.enumbers td.unknown{background-color:#ffc}.enumbers td .altname{font-size:smaller;font-style:italic;color:#666}.hresume .intro{display:flex}.hresume .intro .about{flex:2}.hresume .intro .boxout{flex:1;margin-top:-1rem}.hresume h1,.hresume h2,.hresume h3{clear:none}.hresume .summary{margin-bottom:inherit;margin-top:inherit;font-size:inherit;line-height:inherit}.hresume .about p{line-height:1.2;font-size:150%;font-style:italic;color:var(--text-color-muted)}.hresume .intro .amp{color:var(--text-color-amp)}.hresume .boxout{border:1px solid var(--content-border);border-radius:var(--border-radius);padding:1rem;background-color:var(--content-fg)}.hresume .boxout address,.hresume .boxout dl{margin:0 auto 0 auto}.hresume i{color:var(--text-color-muted)}.hresume .xp_description{display:flex}.hresume .xp_description .smallprint{padding:1rem;flex:1}.hresume .xp_description .job_description{padding:1rem;flex:3}.hresume .experience h4{font-weight:bold}.hresume .experience .smallprint p{text-align:right;font-size:1rem}.hresume .experience .job_description p{line-height:1.3}.hresume .download{float:right;margin-top:-1rem;font-variant:small-caps;color:var(--text-color-muted)}.page-toc nav ul{list-style-type:none;padding:0;margin-top:0;margin-right:0}.page-toc nav li{display:inline-block;margin-left:0.5rem}.review td img.bare{margin:0.1rem 0.5rem 0.1rem 0.1rem}.review span.rating svg{margin:0;width:1em}article .article-sidebar dt{font-size:1.1rem}article .article-sidebar dd{margin-left:1rem;font-size:1em}