@font-face{font-family:cooperhewitt;font-style:normal;font-weight:normal;font-stretch:normal;src:url('CooperHewitt-Semibold.woff2') format('woff2')}@font-face{font-family:sourceserif;font-style:normal;font-weight:bold;font-stretch:normal;src:url('SourceSerif4-Bold.ttf.woff2') format('woff2')}@font-face{font-family:sourceserif;font-style:normal;font-weight:600;font-stretch:normal;src:url('SourceSerif4-Semibold.ttf.woff2') format('woff2')}@font-face{font-family:sourceserif;font-style:normal;font-weight:bold;font-stretch:normal;src:url('SourceSerif4-Bold.ttf.woff2') format('woff2')}@font-face{font-family:charter;font-style:normal;font-weight:normal;font-stretch:normal;src:url('charter_regular.woff2') format('woff2')}@font-face{font-family:charter;font-style:italic;font-weight:normal;font-stretch:normal;src:url('charter_italic.woff2') format('woff2')}@font-face{font-family:charter;font-style:normal;font-weight:bold;font-stretch:normal;src:url('charter_bold.woff2') format('woff2')}@font-face{font-family:charter;font-style:italic;font-weight:bold;font-stretch:normal;src:url('charter_bold_italic.woff2') format('woff2')}html{font-size:62.5%}body{font-size:22px;color:#212427;background:#fff7f7;line-height:1.4;font-family:charter}header{border-bottom:0.2rem solid #000}a[href^="https://"]::after{content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-external-link-icon lucide-external-link'%3E%3Cpath d='M15 3h6v6'/%3E%3Cpath d='M10 14 21 3'/%3E%3Cpath d='M18 13v6a2 2 0 0 1-2 2H5a2 2 0 0 1-2-2V8a2 2 0 0 1 2-2h6'/%3E%3C/svg%3E");width:15px;transform:translate(-26%,-14%) scale(0.5);display:inline-block}nav{text-align:right}nav a{font-size:1.8rem;font-weight:bold;color:black;text-decoration:none;text-transform:uppercase}footer{margin-top:3rem;padding:1.2rem 0;border-top:0.2rem solid #000;font-size:1.2rem;color:#555}code{font-size:20px}h1{font-size:1.5em;font-family:sourceserif;font-weight:600}h2{font-size:1.3em;font-family:sourceserif;font-weight:600}article h2,article h3,article h4,article h5{font-weight:600;font-family:sourceserif;margin-top:2em;margin-bottom:0.5em}article h2{font-size:1.3em}article h3{font-size:1.2em}article h4{font-size:1.1em}article h5{font-size:1em}article .header{font-size:1.4rem;font-style:italic;color:#555}article img{max-width:100%}blockquote{border-left:6px solid rgb(152,115,247);margin-left:0;padding-left:3em}pre{border-top:1px solid #ddd;border-bottom:1px solid #ddd;background:#fbfbfb;padding:1rem;font-size:16px;overflow:auto}pre code{font-size:16px}.logo a{font-weight:bold;color:#000;text-decoration:none}.callout{border-radius:4px;padding:12px 16px 12px 24px;margin:1em 0}.callout>p{font-weight:bold;margin:0}.callout>p::before{position:relative;top:5px;display:inline-block;width:30px}.callout-info{background:rgba(8,109,221,0.1);border:1px solid rgba(8,109,221,0.25)}.callout-info>p{color:rgb(8,109,221)}.callout-info>p::before{content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-info-icon lucide-info'%3E%3Ccircle cx='12' cy='12' r='10'/%3E%3Cpath d='M12 16v-4'/%3E%3Cpath d='M12 8h.01'/%3E%3C/svg%3E");filter:brightness(0) saturate(100%) invert(37%) sepia(58%) saturate(6907%) hue-rotate(201deg) brightness(94%) contrast(94%)}.callout-bug{background:rgba(233,49,71,0.1);border:1px solid rgba(233,49,71,0.25)}.callout-bug>p{color:rgb(233,49,71)}.callout-bug>p::before{content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-bug-icon lucide-bug'%3E%3Cpath d='M12 20v-9'/%3E%3Cpath d='M14 7a4 4 0 0 1 4 4v3a6 6 0 0 1-12 0v-3a4 4 0 0 1 4-4z'/%3E%3Cpath d='M14.12 3.88 16 2'/%3E%3Cpath d='M21 21a4 4 0 0 0-3.81-4'/%3E%3Cpath d='M21 5a4 4 0 0 1-3.55 3.97'/%3E%3Cpath d='M22 13h-4'/%3E%3Cpath d='M3 21a4 4 0 0 1 3.81-4'/%3E%3Cpath d='M3 5a4 4 0 0 0 3.55 3.97'/%3E%3Cpath d='M6 13H2'/%3E%3Cpath d='m8 2 1.88 1.88'/%3E%3Cpath d='M9 7.13V6a3 3 0 1 1 6 0v1.13'/%3E%3C/svg%3E");filter:brightness(0) saturate(100%) invert(33%) sepia(93%) saturate(2409%) hue-rotate(332deg) brightness(90%) contrast(104%)}.callout-warning{background:rgba(236,117,0,0.1);border:1px solid rgba(236,117,0,0.25)}.callout-warning>p{color:rgb(236,117,0)}.callout-warning>p::before{content:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24' fill='none' stroke='currentColor' stroke-width='2' stroke-linecap='round' stroke-linejoin='round' class='lucide lucide-triangle-alert-icon lucide-triangle-alert'%3E%3Cpath d='m21.73 18-8-14a2 2 0 0 0-3.48 0l-8 14A2 2 0 0 0 4 21h16a2 2 0 0 0 1.73-3'/%3E%3Cpath d='M12 9v4'/%3E%3Cpath d='M12 17h.01'/%3E%3C/svg%3E");filter:brightness(0) saturate(100%) invert(48%) sepia(84%) saturate(2029%) hue-rotate(4deg) brightness(96%) contrast(101%)}.comments{border-top:4px solid #ccc}.comments h2{font-size:1em}.post-list{padding:0}.post-list li{list-style:none;display:flex;flex-direction:column;margin:1em 0 0 0}.post-list date{font-size:0.8em;line-height:0.8em}@media (max-width:319px){body{width:90%;margin:0;padding:0 5%}header{margin:4.2rem 0}nav{margin:0 auto 3rem;text-align:center}footer{text-align:center}.logo{text-align:center;margin:1rem auto 3rem}.logo a{font-size:2.4rem}nav a{display:block;line-height:1.6}}@media (min-width:320px){body{width:90%;margin:0;padding:0 5%}header{margin:4.2rem 0}nav{margin:0 auto 3rem;text-align:center}footer{text-align:center}.logo{text-align:center;margin:1rem auto 3rem}.logo a{font-size:2.4rem}nav a{display:inline;margin:0 0.6rem}}@media (min-width:1080px){body{width:70rem;margin:0 auto;padding:0}header{margin:1.3em 1.1em 0 -166px;border-bottom:none;position:absolute}header small{display:block}nav{margin:0;margin-top:2rem;display:flex;flex-direction:column;text-align:left}nav a{margin:0;display:inline;text-transform:none}main{border-top:4px double black}footer{text-align:right}.logo{margin:0;text-align:left}.logo a{font-size:1.8rem}}