@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:400;src:url(/assets/fonts/PlusJakartaSans-VariableFont_wght.ttf) format("truetype");font-display:swap}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:600;src:url(/assets/fonts/PlusJakartaSans-VariableFont_wght.ttf) format("truetype");font-display:swap}@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:800;src:url(/assets/fonts/PlusJakartaSans-VariableFont_wght.ttf) format("truetype");font-display:swap}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:400;src:url(/assets/fonts/SourceSerif4-VariableFont_opsz,wght.ttf) format("truetype");font-display:swap}@font-face{font-family:"Source Serif 4";font-style:normal;font-weight:700;src:url(/assets/fonts/SourceSerif4-VariableFont_opsz,wght.ttf) format("truetype");font-display:swap}@font-face{font-family:"Source Serif 4";font-style:italic;font-weight:400;src:url(/assets/fonts/SourceSerif4-Italic-VariableFont_opsz,wght.ttf) format("truetype");font-display:swap}@font-face{font-family:"Source Serif 4";font-style:italic;font-weight:700;src:url(/assets/fonts/SourceSerif4-Italic-VariableFont_opsz,wght.ttf) format("truetype");font-display:swap}:root{--background-body: #fff;--background-layer-1: rgba(244, 244, 244, 1);--background-layer-1-transparent: rgba(244, 244, 244, 0);--text-main: #36393b;--text-secondary: #6b6f72;--primary-color: #F29727;--font-family-serif: "Source Serif 4", serif;--font-family-sans: "Plus Jakarta Sans", sans-serif;--font-family-mono: "SF Mono", SFMono-Regular, ui-monospace, "DejaVu Sans Mono", Menlo, Consolas, monospace;--divider: #445069;--accent-color-green: #5C8374;--accent-color-green-bold: #183D3D;--accent-color-blue: #3085C3;--accent-color-blue-5: rgba(48, 133, 195, .05);--highlight-text: #F8DE22;--code: #ed0547}:root.theme-dark{--background-body: #111;--background-layer-1: rgba(0, 0, 0, 1);--background-layer-1-transparent: rgba(0, 0, 0, 0);--text-main: #f4f4f4;--text-secondary: #ccc;--highlight-text: #F29727 }*,*:before,*:after{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0;font-family:var(--font-family-serif);font-size:16px;line-height:1.6;background-color:var(--background-body);color:var(--text-main)}h1,h2,h3,h4,h5,h6{font-family:var(--font-family-sans);font-weight:700;line-height:1.2;margin:0 0 .5em}h1{font-size:3em;margin:0 0 1em}h2{margin:.7em 0 0;font-size:1.8em}h3{font-size:1.3em;margin-top:1em;line-height:1.4}h4{font-size:1.4em;line-height:1.4}h5{font-size:1.3em}h6{font-size:1.2em}p,ul,ol{font-size:1.2rem;line-height:1.7em;margin:1.2em 0}ol,ul{padding-left:2rem;-webkit-padding-start:5%;-webkit-padding-end:5%}li{margin:1rem 0}li p{margin-bottom:.5rem;margin-top:.5rem}button{cursor:pointer;font-size:1em;border:none;outline:none;border-radius:10px;font-family:var(--font-family-sans);font-weight:600}a{color:inherit;transition:color linear .15s;text-decoration:none}a:hover{color:var(--primary-color)}p a:not(.hash-tag,.toc-heading),li a{box-shadow:inset 0 -.06em 0 var(--text-secondary);-webkit-transition:box-shadow .2s ease-in-out,color .2s ease-in-out;transition:box-shadow .2s ease-in-out,color .2s ease-in-out}p a:not(.hash-tag,.toc-heading):hover,li a:not(.hash-tag,.toc-heading):hover{box-shadow:inset 0 -.5em 0 var(--highlight-text);color:var(--text-main)}p a.toc-heading,li a.toc-heading{box-shadow:none}img{max-width:100%;height:auto}hr{padding:0;height:1px;margin:40px auto;position:relative;background-color:#111;border:none}hr:before{content:"";position:absolute;top:0;left:0;right:5%;width:100%;height:1px;background-image:linear-gradient(to right,var(--background-body),var(--divider),var(--background-body))}code{font-family:var(--font-family-mono);font-size:calc(1em - 2px);color:var(--code);padding:.2em .4em;border-radius:2px;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}pre{border-radius:8px!important;margin:1.2em 0!important;padding:1.2em}pre code{padding:0}img+em{font-family:var(--font-family-mono);font-size:.7em;color:var(--text-secondary)}figure{padding:0;border:0;font-size:100%;font:inherit;vertical-align:baseline;-webkit-margin-start:0;-webkit-margin-end:0;margin:0 0 3em}table{border-collapse:collapse;font-family:var(--font-family-sans);font-size:1.125em;margin:2em 0}th{border-bottom:2px solid #cccccc;padding:.4em .8em}td{padding:.4em .8em}tbody>tr:nth-child(2n){background-color:var(--accent-color-blue-5)}.container{margin:0 auto;max-width:42em;width:100%}blockquote{border-left:4px solid #cccccc;font-size:1.3rem;margin:2rem 0;padding-left:2rem;font-style:italic}blockquote p{padding-bottom:6px}blockquote footer{font-size:1.1rem;text-align:right}.theme-toggle{display:inline-flex;align-items:center;height:100%;padding:8px .67em .33em;gap:.6em;border-radius:50%}.theme-toggle>label:focus-within{outline:2px solid transparent}.theme-toggle>label{position:relative;display:flex;align-items:center;justify-content:center;opacity:.5;cursor:pointer}.theme-toggle .checked{opacity:1}input[name=theme-toggle]{position:absolute;opacity:0;inset:0;z-index:-1}.color-primary{color:var(--primary-color)}.d-flex{display:flex}.gloss{font-size:.97em;opacity:.9}.footnotes{opacity:.9}.footnotes p{font-size:.85em}.footnotes>h2{color:transparent;font-size:0;margin:0;padding:0;line-height:0;user-select:none;height:0;overflow:hidden;position:absolute;width:0}.twitter-button,.facebook-button,.send-me-email{border-radius:14px;height:28px;padding:0 12px;font-family:var(--font-family-sans);font-size:.8em;display:inline-block;line-height:28px;font-weight:700;display:inline-flex;align-items:center;color:#fff}.send-me-email{background:#5c5470}.send-me-email:hover{background-color:#4e426e;color:#fff}.facebook-button{background-color:#4267b2}.twitter-button{background-color:#000}.facebook-button:hover{color:#fff;background-color:#2e5ab3}.twitter-button:hover{color:#fff;background-color:#333}#facebook-icon-svg,#twitter-icon-svg,#email-icon-svg{margin-right:4px;fill:#fff;width:16px;height:16px}.post-item-footer{font-family:var(--font-family-sans);font-weight:700}.post-item-date{color:var(--text-secondary);text-align:left;margin-right:16px;text-transform:uppercase}.hash-tag{display:inline-flex;align-items:center;background-color:#4450690d;border-radius:1em;height:2em;padding:0 .7em;margin:0 .4em .4em 0;font-size:1rem;color:var(--text-main);transition:all .2s ease-in;font-family:var(--font-family-sans);font-weight:600}.hash-tag:hover{background-color:#f2972733;box-shadow:inset 1px 1px,inset -1px -1px;color:var(--text-main)}.thumbnail{aspect-ratio:16/9;object-fit:cover;border-radius:15px;margin-bottom:.5em;display:block}.katex-display{max-width:100%;overflow:hidden}.katex{overflow-x:auto}@media(max-width:1020px){h1,h2{font-size:2.6em}}@media(max-width:480px){body{font-size:14px}p,ul,ol,blockquote{font-size:1.05rem;margin:1em 0;line-height:1.6em}.katex-display>.katex>.katex-html>.tag{position:relative;margin-left:2em}}@media(min-width:481px){.katex{-ms-overflow-style:none;scrollbar-width:none}.katex::-webkit-scrollbar{display:none}}blockquote[data-callout]{--callout-color: hsl(207, 14%, 62%);--callout-background: ;--callout-radius: 8px;--callout-padding: 2ch;--callout-margin-line: .3em;border:none;border-radius:var(--callout-radius);background:var(--callout-background);padding:var(--callout-padding);position:relative;overflow:hidden;color:var(--callout-color)}blockquote[data-callout] li{margin:0 0 var(--callout-margin-line) 0}.callout-title{margin-bottom:var(--callout-margin-line)}.callout-title,.callout-title+div,.callout-title+ul,.callout-title+ol{z-index:1;position:relative}.callout-title-icon{margin-bottom:var(--callout-margin-line);display:flex}.callout-title-icon:after{content:"";display:inline-block;text-transform:capitalize;font-size:.8em;line-height:20px;margin-left:4px;opacity:.7}.callout-title-icon>svg{height:20px;width:20px;opacity:.7}blockquote[data-callout=quote],blockquote[data-callout=cite]{--callout-background: #CEDEBD;--callout-color: #435334;font-style:italic;box-shadow:#cedebd40 5px 5px,#cedebd30 10px 10px}blockquote[data-callout=quote]>.callout-title{font-weight:400}blockquote[data-callout=quote] .callout-title-icon:after{content:""}blockquote[data-callout=cite] .callout-title-icon:after{content:"cite"}blockquote[data-callout=example]{--callout-background: #F8F0E5;--callout-color: #102C57;font-style:normal;border:1px solid #EADBC8}blockquote[data-callout=example] .callout-title-icon:after{content:"example"}blockquote[data-callout=bug]{--callout-background: #C84B31;--callout-color: #EDEDED;font-style:normal}blockquote[data-callout=bug]:after{content:"";width:5px;height:100%;position:absolute;right:0;top:0;display:block;background-color:#eeb76b;box-shadow:#eeb76b70 -5px 0,#eeb76b30 -10px 0}blockquote[data-callout=bug] .callout-title,blockquote[data-callout=error] .callout-title,blockquote[data-callout=danger] .callout-title,blockquote[data-callout=fail] .callout-title,blockquote[data-callout=failure] .callout-title,blockquote[data-callout=missing] .callout-title,blockquote[data-callout=success] .callout-title,blockquote[data-callout=done] .callout-title,blockquote[data-callout=check] .callout-title{font-weight:700}blockquote[data-callout=bug] .callout-title-icon:after{content:"bug"}blockquote[data-callout=error],blockquote[data-callout=danger]{--callout-background: #ba293d;--callout-color: #EDEDED;background:repeating-linear-gradient(45deg,#ba293d,#ba293d 20px,#b02034 15px 24px)}blockquote[data-callout=error] .callout-title-icon:after{content:"error";text-transform:uppercase}blockquote[data-callout=danger] .callout-title-icon:after{content:"danger";text-transform:uppercase}blockquote[data-callout=fail],blockquote[data-callout=failure],blockquote[data-callout=missing]{--callout-background: #b02034;--callout-color: #EDEDED;background:repeating-linear-gradient(-45deg,#b02034,#b02034 20px,#ba293d 15px 24px)}blockquote[data-callout=fail] .callout-title-icon:after{content:"fail";text-transform:uppercase}blockquote[data-callout=failure] .callout-title-icon:after{content:"failure";text-transform:uppercase}blockquote[data-callout=missing] .callout-title-icon:after{content:"missing";text-transform:uppercase}blockquote[data-callout=warning],blockquote[data-callout=cautions],blockquote[data-callout=attention]{--callout-background: #ECBC55;--callout-color: #313131;border:2px dashed #FFE98A;font-style:normal;box-shadow:inset -2px -2px var(--background-body),inset 2px 2px var(--background-body)}blockquote[data-callout=warning] .callout-title-icon:after{content:"warning"}blockquote[data-callout=cautions] .callout-title-icon:after{content:"cautions"}blockquote[data-callout=attention] .callout-title-icon:after{content:"attention"}blockquote[data-callout=success],blockquote[data-callout=check],blockquote[data-callout=done]{--callout-background: #8FD9A8;--callout-color: #125C13}blockquote[data-callout=success]:after,blockquote[data-callout=check]:after,blockquote[data-callout=done]:after{content:"";height:8em;width:8em;transform:rotate(18deg);background-color:#faeab150;display:block;position:absolute;top:-2em;right:-1em;box-shadow:#faeab120 -1em 1em,#faeab110 -1.5em 1.5em;z-index:0}blockquote[data-callout=check]:after{inset:auto auto -2em -1em;box-shadow:#faeab120 1em -1em,#faeab110 1.5em -1.5em}blockquote[data-callout=success] .callout-title-icon:after{content:"success";text-transform:uppercase}blockquote[data-callout=check] .callout-title-icon:after{content:"check";text-transform:uppercase}blockquote[data-callout=done] .callout-title-icon:after{content:"done";text-transform:uppercase}blockquote[data-callout=faq],blockquote[data-callout=help],blockquote[data-callout=question]{--callout-background: #F0EBCC;--callout-color: #344FA1;font-style:normal}blockquote[data-callout=faq] .callout-title-icon:after{content:"faq";text-transform:uppercase}blockquote[data-callout=help] .callout-title-icon:after{content:"help"}blockquote[data-callout=question] .callout-title-icon:after{content:"question"}blockquote[data-callout=question] .callout-title-icon:after,blockquote[data-callout=question] svg{color:#c84b31}blockquote[data-callout=info]{--callout-background: #C4DDFF;--callout-color: #214abf;font-style:normal}blockquote[data-callout=info] .callout-title-icon:after{content:"info"}blockquote[data-callout=tldr],blockquote[data-callout=abstract],blockquote[data-callout=summary],blockquote[data-callout=note]{--callout-background: #FAE392;--callout-color: #313131;font-style:normal}blockquote[data-callout=tldr] .callout-title-icon:after{content:"tl;dr";text-transform:uppercase}blockquote[data-callout=abstract] .callout-title-icon:after{content:"abstract"}blockquote[data-callout=summary] .callout-title-icon:after{content:"summary"}blockquote[data-callout=note] .callout-title-icon:after{content:"note"}blockquote[data-callout=note]{background:repeating-linear-gradient(0deg,#fae392 -5px 27px,#f0d36c 29px);border-top:10px solid #f0d36c}blockquote[data-callout=todo]{--callout-background: #D9D7F1;--callout-color: #233E8B;font-style:normal}blockquote[data-callout=todo] .callout-title-icon:after{content:"todo"}blockquote[data-callout=tip],blockquote[data-callout=hint]{--callout-background: #FCEEF5;--callout-color: #E05297;font-style:normal}blockquote[data-callout=tip] .callout-title-icon:after{content:"tip"}blockquote[data-callout=hint] .callout-title-icon:after{content:"hint"}blockquote[data-callout=important]{--callout-background: #f7b7b7;--callout-color: #B31E6F;border:2px dotted rgba(0,0,0,.2);box-shadow:inset -3px -3px var(--background-body),inset 3px 3px var(--background-body)}blockquote[data-callout=important] .callout-title-icon:after{content:"important!";text-transform:uppercase}.logo[data-astro-cid-tvrurpns]{display:block;width:75px}.logo-light[data-astro-cid-tvrurpns]{display:block}.logo-dark[data-astro-cid-tvrurpns],html.theme-dark .logo-light[data-astro-cid-tvrurpns]{display:none}html.theme-dark .logo-dark[data-astro-cid-tvrurpns]{display:block}nav[data-astro-cid-dmqpwcec]{align-items:center;display:flex;flex:1;font-family:var(--font-family-sans);justify-content:flex-end;gap:16px;position:relative;z-index:110}.menu-toggle[data-astro-cid-dmqpwcec]{border:0;cursor:pointer;width:52px;height:52px;border-radius:999px;background:#fff;box-shadow:0 8px 20px #00000024;display:inline-flex;flex-direction:column;justify-content:center;align-items:center;gap:7px;transition:transform .2s ease;color:#111;position:relative;z-index:122}.menu-toggle[data-astro-cid-dmqpwcec]:hover{transform:translateY(-1px) scale(1.02)}.menu-line[data-astro-cid-dmqpwcec]{width:24px;height:2px;border-radius:2px;background:currentColor;transition:transform .22s ease}.menu-toggle[data-astro-cid-dmqpwcec][aria-expanded=true] .menu-line[data-astro-cid-dmqpwcec]:first-child{transform:translateY(4.5px) rotate(45deg)}.menu-toggle[data-astro-cid-dmqpwcec][aria-expanded=true] .menu-line[data-astro-cid-dmqpwcec]:last-child{transform:translateY(-4.5px) rotate(-45deg)}.menu-overlay[data-astro-cid-dmqpwcec]{position:fixed;inset:0;display:flex;align-items:center;justify-content:center;padding:120px 24px 32px;background:color-mix(in srgb,var(--background-body) 32%,transparent);backdrop-filter:blur(13px);will-change:opacity;z-index:121;pointer-events:none}.menu-overlay[data-astro-cid-dmqpwcec][hidden]{display:none}.pill-list[data-astro-cid-dmqpwcec]{list-style:none;margin:0;padding:0 8px;display:grid;grid-template-columns:repeat(2,minmax(200px,260px));gap:14px;width:min(calc(100vw - 32px),534px);justify-content:center;pointer-events:auto}.pill-col[data-astro-cid-dmqpwcec]{width:100%;display:flex;justify-content:center}.pill-link[data-astro-cid-dmqpwcec]{--item-rot: 0deg;--pill-bg: #ffffff;--pill-color: #111111;--hover-bg: #f3f4f6;--hover-color: #111111;--accent: #111111;display:flex;align-items:center;justify-content:center;width:100%;min-width:200px;max-width:260px;min-height:120px;padding:1.1rem 0;border-radius:999px;text-decoration:none;text-transform:uppercase;letter-spacing:.065em;font-weight:700;font-size:clamp(1rem,2.1vw,1.45rem);background:var(--pill-bg);color:var(--pill-color);box-shadow:0 6px 16px #0000001a,inset 0 0 0 1px color-mix(in srgb,var(--accent) 20%,#ffffff 80%);transition:transform .2s ease,color .2s ease,background .2s ease,box-shadow .2s ease;transform:rotate(var(--item-rot)) translateZ(0);will-change:transform;backface-visibility:hidden;position:relative;overflow:hidden}.pill-link[data-astro-cid-dmqpwcec]:before{content:"";position:absolute;inset:0;background:linear-gradient(120deg,color-mix(in srgb,var(--accent) 17%,transparent) 0%,transparent 60%);pointer-events:none;opacity:.7}.pill-link[data-astro-cid-dmqpwcec]:hover{transform:rotate(var(--item-rot)) scale(1.06);background:var(--hover-bg);color:var(--hover-color);box-shadow:0 12px 26px #0000002e,inset 0 0 0 1px color-mix(in srgb,var(--accent) 40%,#ffffff 60%)}.pill-link[data-astro-cid-dmqpwcec]:active{transform:rotate(var(--item-rot)) scale(.94)}.pill-link[data-astro-cid-dmqpwcec].selected{background:color-mix(in srgb,var(--hover-bg) 84%,#ffffff 16%);color:var(--hover-color);box-shadow:0 10px 22px color-mix(in srgb,var(--accent) 25%,transparent),inset 0 0 0 2px color-mix(in srgb,var(--accent) 42%,#ffffff 58%)}.pill-label[data-astro-cid-dmqpwcec]{display:inline-block;will-change:transform,opacity;line-height:1.2;position:relative;z-index:2}.pill-link[data-astro-cid-dmqpwcec].work{--item-rot: -11deg;--hover-bg: #3b82f6;--hover-color: #ffffff;--accent: #3b82f6}.pill-link[data-astro-cid-dmqpwcec].blog{--item-rot: -4deg;--hover-bg: #ef4444;--hover-color: #ffffff;--accent: #ef4444}.pill-link[data-astro-cid-dmqpwcec].photo{--item-rot: 10deg;--hover-bg: #8b5cf6;--hover-color: #ffffff;--accent: #8b5cf6}.pill-link[data-astro-cid-dmqpwcec].about{--item-rot: 6deg;--hover-bg: #10b981;--hover-color: #ffffff;--accent: #10b981}@media(max-width:720px){.menu-overlay[data-astro-cid-dmqpwcec]{padding:92px 16px 24px}.pill-list[data-astro-cid-dmqpwcec]{grid-template-columns:1fr;width:min(100%,420px)}.pill-col[data-astro-cid-dmqpwcec]{width:100%}.pill-link[data-astro-cid-dmqpwcec]{min-height:84px;font-size:clamp(1.05rem,4vw,1.4rem)}.pill-link[data-astro-cid-dmqpwcec]:hover,.pill-link[data-astro-cid-dmqpwcec]:active{transform:rotate(var(--item-rot)) scale(1.06)}}header[data-astro-cid-3ef6ksr2]{display:flex;margin:0 auto;max-width:1400px;padding:2em;width:100%}footer[data-astro-cid-sz7xmlte]{color:var(--text-secondary);font-size:.8em;margin:1em auto;max-width:1400px;padding:1em 2em;text-align:center;width:100%}.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}.layout[data-astro-cid-37fxchfa]{display:flex;flex-direction:column;min-height:100%;min-height:100vh}main[data-astro-cid-37fxchfa]{flex:1;position:relative;margin:0 auto;max-width:1400px;padding:1em 2em;box-sizing:border-box;width:100%;display:flex;flex-direction:column}
