@font-face{font-family:Inter;src:url(/fonts/Inter-VariableFont_opsz,wght-subset.woff2) format("woff2");font-display:swap;font-weight:100 900;font-style:normal}@font-face{font-family:Inter;src:url(/fonts/Inter-Italic-VariableFont_opsz,wght-subset.woff2) format("woff2");font-display:swap;font-weight:100 900;font-style:italic}@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono-VariableFont_wght.ttf) format("truetype");font-display:swap;font-weight:100 800;font-style:normal}@font-face{font-family:JetBrains Mono;src:url(/fonts/JetBrainsMono-Italic-VariableFont_wght.ttf) format("truetype");font-display:swap;font-weight:100 800;font-style:italic}:root{--font-primary: "Inter";--font-mono: "JetBrains Mono";--text-xs: .875rem;--text-sm: .938rem;--text-base: 1rem;--text-lg: 1.125rem;--text-xl: 1.25rem;--text-2xl: 1.375rem;--text-3xl: 1.5rem;--text-4xl: 2rem;--text-5xl: 2.5rem;--text-6xl: 3.5rem;--leading-body: 1.5;--leading-heading: 1.4;--bg-light: #e8e8f5;--bg-dark: radial-gradient(circle at 50% -250%, #374151, #111827, #000);--text-light: #18181b;--text-dark: #fafafa;--surface-light: #ffffff;--surface-dark: #272732;--surface-light-hover: color-mix(in srgb, var(--surface-light) 85%, white);--surface-dark-hover: color-mix(in srgb, var(--surface-dark) 85%, white);--on-surface-light: #d4d4d8;--on-surface-dark: #525264;--on-surface-light-hover: color-mix( in srgb, var(--on-surface-light) 85%, white );--on-surface-dark-hover: color-mix( in srgb, var(--on-surface-dark) 85%, #e0e7ff );--on-surface-content-light: #e4e4e7;--on-surface-content-dark: #3f3f4d;--modal-btn-dark: #31313c;--modal-btn-on-surface-light-hover: color-mix( in srgb, var(--on-surface-light) 92%, black );--card-dark-hover: color-mix(in srgb, var(--surface-dark) 97%, white);--search-mark-light: rgba(144, 202, 249, .5);--search-mark-dark: rgba(187, 134, 252, .4);--overlay-light: rgba(0, 0, 0, .7);--overlay-dark: rgba(255, 255, 255, .3);--scrollbar-track: #f1f1f1;--scrollbar-thumb: #c1c1c1;--scrollbar-thumb-hover: #a1a1a1;--article-link: #0066cc;--article-link-visited: #551a8b;--article-link-hover: #0052a3;--article-link-active: #004c99;--article-link-visited-hover: #441579;--article-link-visited-active: #331052;--article-link-dark: #66b3ff;--article-link-visited-dark: #bb86fc;--article-link-hover-dark: #99ccff;--article-link-active-dark: #3399ff;--article-link-visited-hover-dark: #cf9fff;--article-link-visited-active-dark: #a64dff;--shadow-sm-light: 0 1px 3px rgba(0, 0, 0, .1), 0 1px 2px rgba(0, 0, 0, .06);--shadow-md-light: 0 4px 6px -1px rgba(0, 0, 0, .1), 0 2px 4px -1px rgba(0, 0, 0, .06);--shadow-lg-light: 0 10px 15px -3px rgba(0, 0, 0, .1), 0 4px 6px -4px rgba(0, 0, 0, .05);--shadow-sm-dark: 0 2px 4px rgba(0, 0, 0, .4);--radius-surface: .625rem;--radius-on-surface: .438rem;--radius-search-kbd: .375rem;--transition-sm: .1s ease;--transition-base: .2s ease;--transition-lg: .3s ease;--px-0: 0px;--px-1: 1px;--px-2: .125rem;--px-4: .25rem;--px-6: .375rem;--px-8: .5rem;--px-10: .625rem;--px-12: .75rem;--px-14: .875rem;--px-16: 1rem;--px-18: 1.125rem;--px-20: 1.25rem;--px-24: 1.5rem;--px-28: 1.75rem;--px-32: 2rem;--px-36: 2.25rem;--px-40: 2.5rem;--px-44: 2.75rem;--px-48: 3rem;--px-56: 3.5rem;--px-64: 4rem;--px-80: 5rem;--px-96: 6rem;--px-112: 7rem;--px-128: 8rem;--px-144: 9rem;--px-160: 10rem;--px-176: 11rem;--px-192: 12rem;--px-208: 13rem;--px-224: 14rem;--px-240: 15rem;--px-256: 16rem;--px-288: 18rem;--px-320: 20rem;--px-384: 24rem;--container-3xl: 58.875rem;--container-2xl: 50rem;--w-modal: 36.25rem;--w-error: 30rem;--w-card-img: 15.625rem;--w-card-arrow: 3.25rem;--h-modal: calc(68vh - 3.813rem) ;--h-card: 14.5rem;--h-card-img: 15rem;--h-toc: 80vh;--z-0: 0;--z-10: 10;--z-20: 20;--z-30: 30;--z-40: 40;--z-50: 50;--z-999: 999;--z-max: 1000}*,:after,:before,::backdrop,::file-selector-button{box-sizing:border-box;margin:0;padding:0;border:0 solid}html,:host{line-height:var(--leading-body);-webkit-text-size-adjust:100%;tab-size:4;font-family:var(--font-primary),ui-sans-serif,system-ui,sans-serif,"Apple Color Emoji","Segoe UI Emoji","Segoe UI Symbol","Noto Color Emoji";font-feature-settings:var(--default-font-feature-settings, normal);font-variation-settings:var( --default-font-variation-settings, normal );-webkit-tap-highlight-color:transparent;padding-left:calc(100vw - 100%)}body{line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--font-mono),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-feature-settings:var( --default-mono-font-feature-settings, normal );font-variation-settings:var( --default-mono-font-variation-settings, normal );font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse;font-family:var(--font-mono),ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,"Liberation Mono","Courier New",monospace;font-feature-settings:var( --default-mono-font-feature-settings, normal );font-variation-settings:var( --default-mono-font-variation-settings, normal );font-size:1em}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea,::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;border-radius:0;background-color:transparent;opacity:1}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1;color:color-mix(in oklab,currentColor 50%,transparent)}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit,::-webkit-datetime-edit-year-field,::-webkit-datetime-edit-month-field,::-webkit-datetime-edit-day-field,::-webkit-datetime-edit-hour-field,::-webkit-datetime-edit-minute-field,::-webkit-datetime-edit-second-field,::-webkit-datetime-edit-millisecond-field,::-webkit-datetime-edit-meridiem-field{padding-block:0}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]),::file-selector-button{appearance:button}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}html{color:var(--text-light);background-color:var(--bg-light)}html.dark{color:var(--text-dark);background-image:var(--bg-dark);background-size:cover;background-repeat:no-repeat;background-attachment:fixed}body{margin-block:var(--px-24);padding-inline:var(--px-24)}main{position:relative;margin-inline:auto;max-width:var(--container-2xl)}.truncate-2{overflow:hidden;display:-webkit-box;-webkit-box-orient:vertical;-webkit-line-clamp:2;line-clamp:2}.toc-max-h{max-height:calc(var(--h-toc) - 5rem)}mark{background-color:var(--search-mark-light);color:inherit}.dark mark{background-color:var(--search-mark-dark)}.btn{display:flex;align-items:center;justify-content:center;cursor:pointer}.other-links{display:flex;align-items:center;justify-content:center;gap:6px;margin-bottom:var(--px-6)}.other-links a{transition:all var(--transition-base);color:var(--text-1)}@media (hover: hover) and (pointer: fine){.other-links a:hover{box-shadow:0 var(--px-1) 0 0 currentColor}}@media (hover: none){.other-links a:hover{box-shadow:none}}.other-links a:active{box-shadow:none;transform:scale(.95)}.social-link-icon{display:flex;width:var(--px-40);height:var(--px-40);justify-content:center;padding:var(--px-8);background-color:var(--on-surface-light);border-radius:var(--radius-on-surface);transition:all var(--transition-base)}.dark .social-link-icon{background-color:var(--on-surface-dark)}@media (hover: hover) and (pointer: fine){.social-link-icon:hover{transform:translateY(-2px);opacity:.8}.dark .social-link-icon:hover{background-color:var(--on-surface-dark-hover);opacity:1}}@media (hover: none){.social-link-icon:hover{transform:none;opacity:1}}.social-link-icon:active{transform:translateY(0);background-color:var(--on-surface-dark);color:var(--text-dark)}.dark .social-link-icon:active{background-color:var(--on-surface-light);color:var(--text-light)}.nav-link,.nav-link-search{padding-inline:var(--px-16)}.nav-link-search{width:100%}.nav-link{padding-block:var(--px-12);border-radius:var(--radius-on-surface);transition:all var(--transition-base)}@media (hover: hover) and (pointer: fine){.nav-link:hover,.btn-active{background-color:var(--on-surface-content-light)}.dark .nav-link:hover,.dark .btn-active{background-color:var(--on-surface-content-dark)}}@media (hover: none){.nav-link:hover{background-color:transparent}}.nav-link:active{background-color:var(--on-surface-content-dark);color:var(--text-dark)}.dark .nav-link:active{background-color:var(--on-surface-content-light);color:var(--text-light)}.primary-btn{color:var(--text-dark);background-color:var(--surface-dark);transition:all var(--transition-base)}.dark .primary-btn{color:var(--text-light);background-color:var(--surface-light)}@media (hover: hover) and (pointer: fine){.primary-btn:hover{opacity:.85}}@media (hover: none){.primary-btn:hover{opacity:1}}.primary-btn:active{opacity:.7}.modal-overlay{position:fixed;inset:0;width:100vw;height:100vh;background-color:var(--overlay-light);z-index:var(--z-999)}.dark .modal-overlay{background-color:var(--overlay-dark)}.modal-btn{padding:var(--px-8) var(--px-16);border-radius:var(--radius-surface);background-color:var(--surface-light);transition:all var(--transition-base)}.dark .modal-btn{background-color:var(--surface-dark)}@media (hover: hover) and (pointer: fine){.modal-btn:hover{opacity:.85}.dark .modal-btn:hover{background-color:var(--modal-btn-dark);opacity:1}}@media (hover: none){.modal-btn:hover{opacity:1}}.modal-btn:active{background-color:var(--surface-dark);color:var(--text-dark);opacity:1}.dark .modal-btn:active{background-color:var(--surface-light);color:var(--text-light)}.not-found-message{background-color:var(--surface-light);border-radius:var(--radius-surface);box-shadow:var(--shadow-sm-light);padding:var(--px-12) var(--px-16)}.dark .not-found-message{background-color:var(--surface-dark)}.expressive-code{margin-bottom:var(--px-20)}@media (max-width: 34.25rem){body{margin-block:var(--px-16);padding-inline:var(--px-16)}.nav-link,.nav-link-search{padding-inline:var(--px-10)}}@media (max-width: 24.125rem){body{margin-block:var(--px-10);padding-inline:var(--px-10)}}.onopen-animation{display:block!important;animation:dropdownFade var(--transition-base)}.dropdown-fade{animation:dropdownFade var(--transition-base)}@keyframes dropdownFade{0%{opacity:0;transform:translateY(-10px)}to{opacity:1;transform:translateY(0)}}@keyframes fadeIn{0%{opacity:0}to{opacity:1}}@keyframes fadeOut{0%{opacity:1}to{opacity:0}}.onopen-chevron{animation:bounceRotate var(--transition-sm) forwards}@keyframes bounceRotate{0%{transform:rotate(180deg)}50%{transform:rotate(90deg)}to{transform:rotate(0)}}.modal-fade{animation:modalFade var(--transition-base)}@keyframes modalFade{0%{opacity:0;transform:translate(-50%,-10px)}to{opacity:1;transform:translate(-50%)}}.spinner{width:var(--px-40);height:var(--px-40);border:var(--px-6) solid var(--scrollbar-thumb);border-top-color:var(--text-light);border-radius:50%;animation:spin 1s linear infinite}.dark .spinner{border-color:var(--on-surface-dark);border-top-color:var(--text-dark)}@keyframes spin{to{transform:rotate(360deg)}}.article{font-size:var(--text-lg)}.article :where(h2,h3,h4,h5,h6){margin:var(--px-40) 0 var(--px-24);font-weight:650;line-height:var(--leading-heading);scroll-margin-top:4em}.article h2{font-size:clamp(var(--text-lg),2vw + var(--text-lg),calc(var(--text-lg) * 1.5))}.article h3{font-size:clamp(var(--text-lg),1.5vw + var(--text-lg),calc(var(--text-lg) * 1.25))}.article :where(h4,h5,h6){font-size:clamp(var(--text-lg),1vw + var(--text-lg),calc(var(--text-lg) * 1.1))}.article p{margin-bottom:var(--px-20)}.article a{color:var(--article-link);transition:all .2s ease;text-decoration:underline;text-decoration-color:transparent;-webkit-text-decoration-color:transparent;-moz-text-decoration-color:transparent}@media (hover: hover) and (pointer: fine){.article a:hover,.article a:focus{color:var( --article-link-hover, color-mix(in srgb, var(--article-link) 85%, white) );text-decoration-color:currentColor;-webkit-text-decoration-color:currentColor;-moz-text-decoration-color:currentColor}.article a:visited:hover,.article a:visited:focus{color:var( --article-link-visited-hover, color-mix(in srgb, var(--article-link-visited) 85%, white) )}.dark .article a:hover,.dark .article a:focus{color:var( --article-link-hover-dark, color-mix(in srgb, var(--article-link) 70%, white) )}.dark .article a:visited:hover,.dark .article a:visited:focus{color:var( --article-link-visited-hover-dark, color-mix(in srgb, var(--article-link-visited) 70%, white) )}}@media (hover: none){.article a:hover{color:var(--article-link);text-decoration-color:transparent}.dark .article a:hover{color:var( --article-link-dark, color-mix(in srgb, var(--article-link) 85%, white) )}}.article a:active{color:var( --article-link-active, color-mix(in srgb, var(--article-link) 75%, black) )}.article a:visited{color:var(--article-link-visited)}.article a:visited:active{color:var( --article-link-visited-active, color-mix(in srgb, var(--article-link-visited) 75%, black) )}.dark .article a{color:var( --article-link-dark, color-mix(in srgb, var(--article-link) 85%, white) )}.dark .article a:active{color:var( --article-link-active-dark, color-mix(in srgb, var(--article-link) 55%, white) )}.dark .article a:visited{color:var( --article-link-visited-dark, color-mix(in srgb, var(--article-link-visited) 85%, white) )}.dark .article a:visited:active{color:var( --article-link-visited-active-dark, color-mix(in srgb, var(--article-link-visited) 55%, white) )}.article blockquote{margin:var(--px-16) 0;padding:var(--px-12) var(--px-16);border-left:var(--px-4) solid var(--text-light);border-radius:var(--radius-on-surface);background-color:var(--on-surface-content-light);font-style:italic}.dark article blockquote{border-left-color:var(--text-dark);background-color:var(--on-surface-content-dark)}.article blockquote p{padding:0;margin:0}.article ul,.article ol{margin-top:0;margin-bottom:0;padding-left:var(--px-36);list-style:revert}@media (max-width: 24.125rem){.article ul,.article ol{padding-left:var(--px-32)}}.article ol ol,.article ul ol{list-style-type:lower-roman}.article ul ul ol,.article ul ol ol,.article ol ul ol,.article ol ol ol,.article ol[type="a s"]{list-style-type:lower-alpha}.article ol[type="A s"]{list-style-type:upper-alpha}.article ol[type="i s"]{list-style-type:lower-roman}.article ol[type="I s"]{list-style-type:upper-roman}.article ol[type="1"]{list-style-type:decimal}.article div>ol:not([type]){list-style-type:decimal}.article ul ul,.article ul ol,.article ol ol,.article ol ul{padding-left:var(--px-24);margin-top:var(--px-8);margin-bottom:0}.article li+li{margin-top:var(--px-12)}.article li>p{margin-top:1rem;margin-bottom:0}.article li:last-child{margin-bottom:var(--px-20)}:not(pre)>code{background-color:var(--on-surface-light);padding-inline:var(--px-6);border-radius:var(--radius-on-surface);font-size:.85em}.dark :not(pre)>code{background-color:var(--on-surface-dark)}.table-wrapper{width:100%;margin-block:var(--px-16);font-size:var(--text-base);overflow-x:auto;-webkit-overflow-scrolling:touch;padding-block:var(--px-8)}.article table{width:100%;font-size:1em;border:2px solid var(--on-surface-light);border-radius:var(--radius-surface);border-collapse:separate;border-spacing:0}.dark .article table{border-color:var(--on-surface-dark)}.article :where(th,td){padding:var(--px-8)}.article th{text-align:left;background-color:var(--on-surface-light)}.dark .article th{background-color:var(--on-surface-dark)}.article tr:nth-child(2n){background-color:var(--on-surface-content-light)}.dark .article tr:nth-child(2n){background-color:var(--on-surface-content-dark)}.article img{max-width:100%;margin:var(--px-16) 0;border-radius:var(--radius-on-surface)}.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}
