﻿@import"https://fonts.googleapis.com/css2?family=Google+Sans+Flex:opsz,wght@6..144,1..1000&family=Google+Sans+Text:ital,wght@0,400;0,500;0,700;1,400;1,500;1,700&family=Google+Sans+Mono:ital,wght@0,1..1000;1,1..1000&display=swap";:root{--ff-gsf: "Google Sans Flex", serif;--ff-gst: "Google Sans Text", sans-serif;--ff-gsm: "Google Sans Mono", monospace;--ff-sans: -apple-system, BlinkMacSystemFont, "SF Pro", "Helvetica Neue", "Helvetica", "Arial", "Roboto", "Ubuntu", "Segoe UI", "Fira Sans", "Droid Sans", sans-serif;--f-12: 0.75rem;--f-14: 0.875rem;--f-16: 1rem;--f-20: 1.25rem;--f-24: 1.5rem;--f-32: 2rem;--f-48: 3rem;--f-64: 4rem;--f-72: 4.5rem;--f-96: 6rem;--f-128: 8rem;--f-sml: var(--f-14);--f-med: var(--f-16);--f-semi: var(--f-20);--f-lrg: var(--f-20);--f-xlg: var(--f-24);--f-2xl: var(--f-24);--f-hero: var(--f-24);--f-xhr: var(--f-32);--f-2xh: var(--f-48);--f-logo: var(--f-64)}@media(min-width: 480px){:root{--f-2xl: var(--f-32);--f-xhr: var(--f-48)}}@media(min-width: 800px){:root{--f-lrg: var(--f-24);--f-xlg: var(--f-32);--f-hero: var(--f-48);--f-2xh: var(--f-64);--f-logo: var(--f-96)}}@media(min-width: 1044px){:root{--f-2xl: var(--f-48);--f-hero: var(--f-64);--f-xhr: var(--f-72);--f-2xh: var(--f-96);--f-logo: var(--f-128)}}@media(min-width: 2000px){:root{--f-med: var(--f-20);--f-semi: var(--f-24);--f-lrg: var(--f-32);--f-xlg: var(--f-48);--f-2xl: var(--f-64);--f-hero: var(--f-72);--f-xhr: var(--f-96)}}:root{--u: 0.625rem;--linewidth: 2px;--content-width: 80rem;--magazine-width: 120rem;--measure-width: 35em;--g-blue: #4285f4;--g-red: #ea4335;--g-yellow: #fbbc05;--g-green: #34a853;--black: #202323;--white: #f1e9ee;--orange: #e9532f;--navy: #173f8e;--lilac: #da6fff;--lightblue: #6196ff;--cobalt: #0000ff;--lightgrey: rgba(0, 0, 0, 0.05);--dimgrey: #696969;--steelblue: #abc7e0;--fg: black;--bg: white;--ac: var(--orange);--lc: var(--navy);--lh: var(--cobalt)}*{box-sizing:border-box}*:focus{outline:calc(2*var(--linewidth)) solid var(--ac);transition:none}html{font-size:16px}@media(min-width: 2000px){html{font-size:18px}}@media only print{html{font-size:11pt}}body{font-family:var(--ff-gst);line-height:1.5;color:var(--fg);background-color:var(--bg);font-feature-settings:"kern" 1,"liga" 1,"calt" 1,"pnum" 1,"tnum" 0,"onum" 1,"lnum" 0,"dlig" 0;font-kerning:normal;text-rendering:optimizeSpeed;position:relative;max-width:100vw;overflow-x:hidden;padding:calc(2*var(--u))}@media(min-width: 800px){body{padding:calc(4*var(--u))}}.nls{list-style:none}a{color:var(--lc);text-decoration:underline;transition:all .2s ease-in-out}@media only screen and (prefers-reduced-motion){a{transition:none}}a:hover{color:var(--lh)}@media print{a[href]::after{content:" (" attr(href) ") ";overflow-wrap:anywhere}}pre{white-space:pre-wrap}.logo{font-size:var(--f-logo);font-weight:700;line-height:.6em;text-align:center}@media(min-width: 800px){.logo{text-align:left}}.logo a{color:rgba(0,0,0,0);-webkit-text-stroke:var(--linewidth) var(--fg);letter-spacing:-0.05em;text-decoration:none}.logo a:hover{color:var(--fg)}nav{font-size:var(--f-med)}a.navlink{font-family:var(--ff-gsf);font-weight:300;text-transform:lowercase;text-decoration:none;color:var(--fg)}.tagline{font-family:var(--ff-gsf);font-size:var(--f-2xh);font-weight:600;line-height:.9em;text-transform:lowercase;letter-spacing:-0.05em;text-align:center}@media(min-width: 800px){.tagline{line-height:.7em;text-align:right;padding-top:1em}}.archive-link{font-weight:700;line-height:.6em;text-align:center}.archive-link a{color:rgba(0,0,0,0);-webkit-text-stroke:var(--linewidth) var(--fg);letter-spacing:-0.05em;text-decoration:none}.archive-link a:hover{color:var(--fg)}.archive-link{text-align:center;font-size:var(--f-xlg)}.expand-post-link{text-align:center;font-size:var(--f-lrg)}.post-title{font-family:var(--ff-gst);font-size:var(--f-2xl);font-weight:700;line-height:1em;letter-spacing:-0.025em;margin:0em}.post-title a{color:var(--black);text-decoration:none}@media(max-width: 480px){.post-title{margin-bottom:.25em}}.post-date{font-family:var(--ff-gsm);font-size:var(--f-12);font-weight:300;line-height:1em;letter-spacing:.025em;text-decoration:none;color:var(--fg);display:inline-block;outline:1px solid var(--fg);padding:.5em;margin-right:.5rem;text-transform:uppercase;position:relative;z-index:0}.post-date::after{content:"";position:absolute;top:0;left:0;height:100%;width:0%;z-index:-1;background-color:var(--fg)}.post-date:hover::after,.post-date:focus::after{width:100%;transition:all .2s ease-in-out}@media only screen and (prefers-reduced-motion){.post-date:hover::after,.post-date:focus::after{transition:none}}.post-date:hover{color:var(--bg)}.post-date:hover::after{background:var(--fg)}.post-date:focus{color:var(--fg);box-shadow:none}.post-date:focus::after{background-color:var(--ac)}.post-author{font-family:var(--ff-gsf);font-size:var(--f-16);font-weight:300;line-height:1.5rem;letter-spacing:.05em;display:inline-block;position:relative;top:1.5px}.post-content,.post-content-snippet{line-height:1.75em}.post-content p,.post-content-snippet p{font-weight:300;margin:.25em 0;overflow-wrap:break-word}@media(max-width: 480px){.post-content p,.post-content-snippet p{margin-bottom:1em}}.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6,.post-content-snippet h1,.post-content-snippet h2,.post-content-snippet h3,.post-content-snippet h4,.post-content-snippet h5,.post-content-snippet h6{margin-top:.25em;margin-bottom:var(--u);line-height:1.2}.post-content h2,.post-content-snippet h2{margin-top:.5em;font-size:var(--f-xlg);font-weight:800}.post-content h3,.post-content-snippet h3{font-size:var(--f-xlg);font-weight:400}.post-content h4,.post-content-snippet h4{font-size:var(--f-lrg);font-weight:800}.post-content ol,.post-content ul,.post-content-snippet ol,.post-content-snippet ul{padding-left:calc(3*var(--u))}.post-content ol li,.post-content ul li,.post-content-snippet ol li,.post-content-snippet ul li{margin:.5em 0}.post-content ol li li,.post-content ul li li,.post-content-snippet ol li li,.post-content-snippet ul li li{margin:.25em 0}.post-content ol li:first-child,.post-content ul li:first-child,.post-content-snippet ol li:first-child,.post-content-snippet ul li:first-child{margin-top:0}.post-content ol li:last-child,.post-content ul li:last-child,.post-content-snippet ol li:last-child,.post-content-snippet ul li:last-child{margin-bottom:0}.post-content table,.post-content-snippet table{font-family:var(--ff-gsf);font-size:var(--f-sml)}.post-content table th,.post-content-snippet table th{font-weight:400;text-align:left}.post-content table td,.post-content-snippet table td{font-weight:300}.post-content code,.post-content-snippet code{font-family:var(--ff-gsm);color:var(--ac);font-weight:normal}.post-content a code,.post-content-snippet a code{color:var(--lc)}.post-content div pre,.post-content-snippet div pre{background-color:#000;line-height:1.2em;font-size:var(--f-sml);font-weight:300}.post-content div pre code,.post-content-snippet div pre code{color:#fff;overflow-wrap:anywhere}.post-content-full>p:last-child::after{content:"■"}.more-link{font-family:var(--ff-gsm);font-size:var(--f-16);font-weight:300;line-height:1em;letter-spacing:.025em;text-decoration:none;color:var(--fg);display:inline-block;outline:1px solid var(--fg);padding:.5em;margin-right:.5rem;position:relative;z-index:0}.more-link::after{content:"";position:absolute;top:0;left:0;height:100%;width:0%;z-index:-1;background-color:var(--fg)}.more-link:hover::after,.more-link:focus::after{width:100%;transition:all .2s ease-in-out}@media only screen and (prefers-reduced-motion){.more-link:hover::after,.more-link:focus::after{transition:none}}.more-link:hover{color:var(--bg)}.more-link:hover::after{background:var(--fg)}.more-link:focus{color:var(--fg);box-shadow:none}.more-link:focus::after{background-color:var(--ac)}.archive-link-to{color:var(--fg);font-weight:700;line-height:.6em;font-size:var(--f-48);text-decoration:none;text-align:center}.archive-link-to a{color:rgba(0,0,0,0);-webkit-text-stroke:var(--linewidth) var(--fg);letter-spacing:-0.05em;text-decoration:none}.archive-link-to a:hover{color:var(--fg)}.archive-link{color:var(--fg);font-size:var(--f-16);text-decoration:none;font-weight:250}.archive-link:hover{color:var(--dimgrey)}.highlight{color:#fff}.highlight .c,.highlight .ch,.highlight .cd,.highlight .cm,.highlight .cpf,.highlight .c1,.highlight .cs{color:#6d6e70;font-style:italic}.highlight .cp{color:#41ff5b;font-weight:bold}.highlight .err{color:#fff;background-color:#c00}.highlight .gr{color:#fff;background-color:#c00}.highlight .k,.highlight .kd,.highlight .kv{color:#fff02a;font-weight:bold}.highlight .o,.highlight .ow{color:#41ff5b}.highlight .p,.highlight .pi{color:#41ff5b}.highlight .gd{color:#c00}.highlight .gi{color:#3fb34f}.highlight .ge{font-style:italic}.highlight .ges{font-weight:bold;font-style:italic}.highlight .gs{font-weight:bold}.highlight .gt{color:#fff;background-color:#766daf}.highlight .gl{color:#fff;background-color:#766daf}.highlight .kc{color:#9f93e6;font-weight:bold}.highlight .kn{color:#fff;font-weight:bold}.highlight .kp{color:#fff;font-weight:bold}.highlight .kr{color:#fff;font-weight:bold}.highlight .gh{color:#fff;font-weight:bold}.highlight .gu{color:#fff;font-weight:bold}.highlight .kt{color:#faaf4c;font-weight:bold}.highlight .no{color:#faaf4c;font-weight:bold}.highlight .nc{color:#faaf4c;font-weight:bold}.highlight .nd{color:#faaf4c;font-weight:bold}.highlight .nn{color:#faaf4c;font-weight:bold}.highlight .bp{color:#faaf4c;font-weight:bold}.highlight .ne{color:#faaf4c;font-weight:bold}.highlight .nl{color:#9f93e6;font-weight:bold}.highlight .nt{color:#9f93e6;font-weight:bold}.highlight .m,.highlight .mb,.highlight .mf,.highlight .mh,.highlight .mi,.highlight .il,.highlight .mo,.highlight .mx{color:#9f93e6;font-weight:bold}.highlight .ld{color:#9f93e6;font-weight:bold}.highlight .ss{color:#9f93e6;font-weight:bold}.highlight .s,.highlight .sb,.highlight .dl,.highlight .sd,.highlight .s2,.highlight .sh,.highlight .sx,.highlight .sr,.highlight .s1{color:#fff0a6;font-weight:bold}.highlight .sa{color:#fff02a;font-weight:bold}.highlight .se{color:#faaf4c;font-weight:bold}.highlight .sc{color:#faaf4c;font-weight:bold}.highlight .si{color:#faaf4c;font-weight:bold}.highlight .nb{font-weight:bold}.highlight .ni{color:#999;font-weight:bold}.highlight .w{color:#bbb}.highlight .nf,.highlight .fm{color:#41ff5b}.highlight .py{color:#41ff5b}.highlight .na{color:#41ff5b}.highlight .nv,.highlight .vc,.highlight .vg,.highlight .vi,.highlight .vm{color:#41ff5b;font-weight:bold}header.page-header{position:relative;margin-bottom:calc(3*var(--u))}hr.lifted{border:none;height:var(--linewidth);background-color:var(--fg);position:relative;top:calc(-0.14*var(--f-logo))}@media(max-width: 800px){hr.lifted{display:none}}hr.liftedtl{border:none;height:var(--linewidth);background-color:var(--fg);position:relative;top:calc(-0.23*var(--f-2xh))}@media(max-width: 800px){hr.liftedtl{top:calc(-1.6*var(--f-2xh))}}hr.snippetbreak{border:none;height:var(--linewidth);width:20%;background-color:var(--fg);position:relative;top:calc(-0.23*var(--f-2xh))}@media(max-width: 800px){nav{--nav-underline-position: top 50%;background-color:rgba(0,0,0,0);background-image:linear-gradient(transparent -100%, var(--fg) 100%);background-repeat:no-repeat;background-size:100% var(--linewidth);background-position:var(--nav-underline-position) left 0}}nav #menu-toggle{position:relative;display:inline-block;width:100%}nav #menu-toggle::after{content:"> list pages  ";font-family:var(--ff-gsm);font-size:var(--f-14);position:absolute;visibility:visible;padding:0;padding-right:calc(.5*var(--u));top:calc(-2*var(--u));display:inline-block;background-color:var(--bg)}nav #drop{visibility:hidden;width:0;margin:0;clip-path:0}nav [id^=drop]:checked~.menu{max-height:100vh;transition:max-height 300ms ease-in-out}@media only screen and (prefers-reduced-motion){nav [id^=drop]:checked~.menu{transition:none}}nav [id^=drop]:checked~#menu-toggle::after{content:"✕ exit page list"}@media(max-width: 800px){nav ul.menu{max-height:0px;overflow:hidden;background-color:var(--bg)}nav ul.menu::after{content:"end navigation";color:rgba(0,0,0,0);display:block;padding:.5em 0;--nav-underline-position: top 50%;background-color:rgba(0,0,0,0);background-image:linear-gradient(transparent -100%, var(--fg) 100%);background-repeat:no-repeat;background-size:100% var(--linewidth);background-position:var(--nav-underline-position) left 0}nav li{--nav-underline-position: top 50%;display:block;background-color:rgba(0,0,0,0);background-image:linear-gradient(transparent -100%, currentColor 100%);background-repeat:no-repeat;background-size:100% var(--linewidth);background-position:var(--nav-underline-position) left 0}nav span.navlink-text{display:inline-block;padding:0 var(--u);margin-left:calc(2*var(--u))}}@media(max-width: 1044px){nav span.navlink-text{background-color:var(--bg)}}nav a.navlink{display:inline-block;padding:.5em 0;width:100%}@media(min-width: 800px){nav{text-align:right;margin-top:calc(2*var(--u))}nav #menu-toggle,nav #drop{display:none}nav li{--nav-underline-position: bottom 0.3em;display:inline-block;margin-left:2em}nav a.navlink{padding:.25em}nav a.navlink:hover{background-color:rgba(0,0,0,0);background-image:linear-gradient(transparent -100%, currentColor 100%);background-repeat:no-repeat;background-size:100% var(--linewidth);background-position:var(--nav-underline-position) left 0;animation:draw-underline ease-in-out 300ms 1}}@media only screen and (min-width: 800px)and (prefers-reduced-motion){nav a.navlink:hover{animation:none}}@media(min-width: 1440px){nav{margin-top:0}}footer{position:relative;margin:calc(2*var(--u)) 0}@media(min-width: 1440px){footer{margin:calc(4*var(--u)) 0}}@media(max-width: 800px){footer{padding-top:2rem}}.grid{display:initial}@media(min-width: 480px){.grid{display:grid;grid-template-columns:repeat(8, 1fr);grid-auto-rows:min-content;grid-gap:var(--u) calc(2*var(--u))}}article .post-header{margin:calc(4*var(--u)) 0}@media(min-width: 1044px){article{margin:calc(4*var(--u)) 0}}@media(min-width: 2000px){article{max-width:2000px;margin:calc(4*var(--u)) auto}}article .post-header{margin:calc(4*var(--u)) 0}@media(min-width: 1044px){article{margin:calc(4*var(--u)) 0}}@media(min-width: 2000px){article{max-width:2000px;margin:calc(4*var(--u)) auto}}.post-content-snippet{line-height:1.75em}.post-content-snippet p{font-weight:300;margin:.25em 0;overflow-wrap:break-word;margin-bottom:1em}.post-content-snippet h1,.post-content-snippet h2,.post-content-snippet h3,.post-content-snippet h4,.post-content-snippet h5,.post-content-snippet h6{margin-bottom:.75em;margin-top:0em;line-height:1.2}.post-content-snippet h2{font-size:var(--f-xlg);font-weight:800}.post-content-snippet h3{font-size:var(--f-xlg);font-weight:400}.post-content-snippet h4{font-size:var(--f-lrg);font-weight:800}.post-content-snippet ol,.post-content-snippet ul{padding-left:calc(3*var(--u))}.post-content-snippet ol li,.post-content-snippet ul li{margin:.5em 0}.post-content-snippet ol li li,.post-content-snippet ul li li{margin:.25em 0}.post-content-snippet ol li:first-child,.post-content-snippet ul li:first-child{margin-top:0}.post-content-snippet ol li:last-child,.post-content-snippet ul li:last-child{margin-bottom:0}.post-content-snippet table{font-family:var(--ff-gsf);font-size:var(--f-sml)}.post-content-snippet table th{font-weight:400;text-align:left}.post-content-snippet table td{font-weight:300}.post-content-snippet code{font-family:var(--ff-gsm);color:var(--ac);font-weight:normal;line-break:anywhere}.post-content-snippet a code{color:var(--lc)}.post-content-snippet div pre{background-color:#000;line-height:1.2em;font-size:var(--f-sml);font-weight:300}.post-content-snippet div pre code{color:#fff;overflow-wrap:anywhere}@media(min-width: 480px){.post-header{margin-top:calc(4*var(--u))}.post-header,.post-header-snippet,.post-content{display:inherit;grid-template-columns:subgrid;grid-auto-rows:min-content;grid-gap:inherit;grid-column:1/9}.post-title,.post-meta{grid-column:1/9}.post-content address,.post-content article,.post-content aside,.post-content blockquote,.post-content canvas,.post-content dd,.post-content div,.post-content dl,.post-content dt,.post-content fieldset,.post-content figcaption,.post-content figure,.post-content footer,.post-content form,.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6,.post-content header,.post-content hr,.post-content li,.post-content main,.post-content nav,.post-content noscript,.post-content ol,.post-content p,.post-content pre,.post-content section,.post-content table,.post-content tfoot,.post-content ul,.post-content video{grid-column:1/9}}@media(min-width: 800px){.post-header,.post-content{margin:0}.post-title,.post-meta{grid-column:1/8}.post-content address,.post-content article,.post-content aside,.post-content blockquote,.post-content canvas,.post-content dd,.post-content div,.post-content dl,.post-content dt,.post-content fieldset,.post-content figcaption,.post-content figure,.post-content footer,.post-content form,.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6,.post-content header,.post-content hr,.post-content li,.post-content main,.post-content nav,.post-content noscript,.post-content ol,.post-content p,.post-content pre,.post-content section,.post-content table,.post-content tfoot,.post-content ul,.post-content video{grid-column:1/7}.post-content div:has(pre){grid-column:1/9}}@media(min-width: 1044px){.post-header,.post-content{margin:0}.post-title,.post-meta{grid-column:2/8}.post-content address,.post-content article,.post-content aside,.post-content blockquote,.post-content canvas,.post-content dd,.post-content div,.post-content dl,.post-content dt,.post-content fieldset,.post-content figcaption,.post-content figure,.post-content footer,.post-content form,.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6,.post-content header,.post-content hr,.post-content li,.post-content main,.post-content nav,.post-content noscript,.post-content ol,.post-content p,.post-content pre,.post-content section,.post-content table,.post-content tfoot,.post-content ul,.post-content video{grid-column:2/7}.post-content div:has(pre){grid-column:2/8}}@media(min-width: 1440px){.post-content address,.post-content article,.post-content aside,.post-content blockquote,.post-content canvas,.post-content dd,.post-content div,.post-content dl,.post-content dt,.post-content fieldset,.post-content figcaption,.post-content figure,.post-content footer,.post-content form,.post-content h1,.post-content h2,.post-content h3,.post-content h4,.post-content h5,.post-content h6,.post-content header,.post-content hr,.post-content li,.post-content main,.post-content nav,.post-content noscript,.post-content ol,.post-content p,.post-content pre,.post-content section,.post-content table,.post-content tfoot,.post-content ul,.post-content video{grid-column:2/6}.post-content div:has(pre){grid-column:2/6}}@media(min-width: 2000px){.post-title{font-size:var(--f-xlg)}.post-content h2,.post-content h3{font-size:var(--f-lrg)}.post-content h4{font-size:var(--f-semi)}}.post-content img,.post-content-snippet img{padding:inherit;margin:auto;max-width:100%;object-fit:cover;display:block}.post-content pre,.post-content-snippet pre{padding:1em;border-radius:1rem;margin:var(--u) 0}.post-content table,.post-content-snippet table{--table-border: var(--linewidth) solid var(--fg);max-width:100%;overflow-x:auto;margin:var(--u) 0;border-top:var(--table-border);border-bottom:var(--table-border);border-left:var(--table-border);border-right:var(--table-border);border-spacing:0;border-collapse:collapse}.post-content table thead,.post-content-snippet table thead{border-bottom:var(--table-border)}.post-content table tbody>tr,.post-content-snippet table tbody>tr{border-bottom:1px dotted var(--fg)}.post-content table tbody>tr:last-child,.post-content-snippet table tbody>tr:last-child{border-bottom:1px dotted var(--fg)}.post-content table th,.post-content table td,.post-content-snippet table th,.post-content-snippet table td{padding-top:.2rem;padding-bottom:.2rem;padding-left:.2rem;padding-right:.2rem;border-left:1px dotted var(--fg)}@media(max-width: 768px){table{display:block}}img{max-width:100%;object-fit:cover}@media(max-width: 800px){.top-space{display:none}}@keyframes draw-underline{0%{background-position:var(--nav-underline-position) left -10em}100%{background-position:var(--nav-underline-position) left 0}}