');mask:url('data:image/svg+xml; utf8, ');right:3px;top:3px;font-size:.75rem;pointer-events:none;position:absolute;height:1rem;width:1rem;--tw-bg-opacity:1;background-color:rgb(87 83 78 / var(--tw-bg-opacity))}@media (prefers-color-scheme:dark){.code-select:after{--tw-bg-opacity:1;background-color:rgb(168 162 158 / var(--tw-bg-opacity))}}@media print{.code-select:after{display:none}}.code-highlight{position:relative;margin-left:0;margin-right:0;margin-top:.75rem;margin-bottom:.75rem;display:grid;border-radius:.25rem;border-top-width:1px;--tw-border-opacity:1;border-color:rgb(245 245 244 / var(--tw-border-opacity));--tw-bg-opacity:1;background-color:rgb(8 8 8 / var(--tw-bg-opacity));padding-left:0;padding-right:0;--tw-text-opacity:1;color:rgb(239 239 239 / var(--tw-text-opacity))}@media (prefers-color-scheme:dark){.code-highlight{--tw-border-opacity:1;border-color:rgb(28 25 23 / var(--tw-border-opacity))}}.code-highlight:before{content:attr(lang);right:10px;top:5px;font-size:.75rem;position:absolute;--tw-text-opacity:1;color:rgb(239 239 239 / var(--tw-text-opacity))}.code-highlight .line-numbers{font-size:100%;letter-spacing:-1px;padding-right:.8rem;margin-right:.8rem;pointer-events:none;float:left;-webkit-user-select:none;-moz-user-select:none;user-select:none;border-right-width:1px;--tw-border-opacity:1;border-color:rgb(38 48 64 / var(--tw-border-opacity));text-align:right}.code-highlight .line-numbers>span{counter-increment:linenumber;display:block}.code-highlight .line-numbers>span:before{content:counter(linenumber);display:block;--tw-text-opacity:1;color:rgb(92 99 112 / var(--tw-text-opacity))}.code-highlight .syntax{text-shadow:none;box-shadow:none;-webkit-user-select:text;-moz-user-select:text;user-select:text;position:relative;margin:0;overflow:auto;white-space:pre;background-color:transparent;padding-left:1.5rem;padding-right:1.5rem;padding-top:1.25rem;padding-bottom:1.25rem;line-height:1.5;font-size:0}.code-highlight .syntax::-webkit-scrollbar{display:none}.code-highlight .syntax code{font-size:.875rem;--tw-text-opacity:1;color:rgb(239 239 239 / var(--tw-text-opacity))}.code-highlight .comment{--tw-text-opacity:1;color:rgb(92 99 112 / var(--tw-text-opacity))}.code-highlight .boolean{--tw-text-opacity:1;color:rgb(108 113 196 / var(--tw-text-opacity))}.code-highlight .number{--tw-text-opacity:1;color:rgb(108 113 196 / var(--tw-text-opacity))}.code-highlight .directive{--tw-text-opacity:1;color:rgb(231 76 60 / var(--tw-text-opacity))}.code-highlight .keyword{--tw-text-opacity:1;color:rgb(231 76 60 / var(--tw-text-opacity))}.code-highlight .keyword-function,.code-highlight .keyword-override,.code-highlight .keyword-private,.code-highlight .keyword-protected,.code-highlight .keyword-public,.code-highlight .keyword-static{--tw-text-opacity:1;color:rgb(52 152 219 / var(--tw-text-opacity))}.code-highlight .key{--tw-text-opacity:1;color:rgb(230 126 34 / var(--tw-text-opacity))}.code-highlight .function{--tw-text-opacity:1;color:rgb(46 204 113 / var(--tw-text-opacity))}.code-highlight .operator{--tw-text-opacity:1;color:rgb(231 76 60 / var(--tw-text-opacity))}.code-highlight .string{--tw-text-opacity:1;color:rgb(241 196 15 / var(--tw-text-opacity))}.code-highlight .class-name{--tw-text-opacity:1;color:rgb(230 126 34 / var(--tw-text-opacity))}.code-highlight .title{--tw-text-opacity:1;color:rgb(52 152 219 / var(--tw-text-opacity))}.code-highlight .type-list .class-name{--tw-text-opacity:1;color:rgb(46 204 113 / var(--tw-text-opacity))}.code-highlight .namespace{--tw-text-opacity:1;color:rgb(46 204 113 / var(--tw-text-opacity))}.menu-icon .navicon::after,.menu-icon .navicon::before{content:'';position:absolute;display:block;height:100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1;background-color:rgb(120 113 108 / var(--tw-bg-opacity));transition-property:all;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.5s;transition-timing-function:cubic-bezier(0,0,.2,1)}.menu-icon .navicon::before{width:50%;top:5px}.menu-icon .navicon::after{width:100%;top:-5px}.menu-btn:focus~.menu-icon .navicon,.menu-btn:focus~.menu-icon .navicon::after,.menu-btn:focus~.menu-icon .navicon::before{--tw-bg-opacity:1;background-color:rgb(28 25 23 / var(--tw-bg-opacity))}@media (prefers-color-scheme:dark){.menu-btn:focus~.menu-icon .navicon,.menu-btn:focus~.menu-icon .navicon::after,.menu-btn:focus~.menu-icon .navicon::before{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}}.menu-btn:not(:checked)~.menu-icon{left:0;margin-left:0}.menu-btn:checked~.menu{visibility:visible;--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.menu-btn:checked~.big-label{pointer-events:auto;opacity:.75}.menu-btn:checked~.menu-icon .navicon{background-color:transparent}@media (prefers-color-scheme:dark){.menu-btn:checked~.menu-icon .navicon{background-color:transparent}}.menu-btn:checked~.menu-icon .navicon::before{width:100%;--tw-rotate:-45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}@media (prefers-color-scheme:dark){.menu-btn:checked~.menu-icon .navicon::before{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}}.menu-btn:checked~.menu-icon .navicon::after{--tw-rotate:45deg;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y));--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}@media (prefers-color-scheme:dark){.menu-btn:checked~.menu-icon .navicon::after{--tw-bg-opacity:1;background-color:rgb(255 255 255 / var(--tw-bg-opacity))}}.menu-btn:checked~.menu-icon:not(.steps) .navicon::after,.menu-btn:checked~.menu-icon:not(.steps) .navicon::before{top:0}.break-anywhere{overflow-wrap:anywhere}.edit-link{--tw-text-opacity:1!important;color:rgb(68 64 60 / var(--tw-text-opacity))!important}.edit-link:hover{--tw-text-opacity:1!important;color:rgb(28 25 23 / var(--tw-text-opacity))!important}@media (prefers-color-scheme:dark){.edit-link{--tw-text-opacity:1!important;color:rgb(168 162 158 / var(--tw-text-opacity))!important}.edit-link:hover{--tw-text-opacity:1!important;color:rgb(245 245 244 / var(--tw-text-opacity))!important}}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border-width:0}.pointer-events-none{pointer-events:none}.pointer-events-auto{pointer-events:auto}.invisible{visibility:hidden}.fixed{position:fixed}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-0{top:0;right:0;bottom:0;left:0}.left-full{left:100%}.top-0{top:0}.z-10{z-index:10}.z-20{z-index:20}.mx-auto{margin-left:auto;margin-right:auto}.-ml-16{margin-left:-4rem}.-ml-px{margin-left:-1px}.mb-3{margin-bottom:.75rem}.ml-4{margin-left:1rem}.mr-4{margin-right:1rem}.mt-1{margin-top:.25rem}.block{display:block}.inline-block{display:inline-block}.flex{display:flex}.hidden{display:none}.h-0{height:0}.h-16{height:4rem}.h-2px{height:2px}.h-6{height:1.5rem}.h-auto{height:auto}.h-full{height:100%}.h-screen{height:100vh}.max-h-screen{max-height:100vh}.w-14{width:3.5rem}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-64{width:16rem}.w-full{width:100%}.w-screen{width:100vw}.max-w-7xl{max-width:80rem}.max-w-sm{max-width:24rem}.max-w-xs{max-width:20rem}.flex-1{flex:1 1 0%}.flex-none{flex:none}.shrink-0{flex-shrink:0}.grow{flex-grow:1}.-translate-x-full{--tw-translate-x:-100%;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.transform{transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.cursor-pointer{cursor:pointer}.select-none{-webkit-user-select:none;-moz-user-select:none;user-select:none}.flex-row-reverse{flex-direction:row-reverse}.flex-col{flex-direction:column}.items-center{align-items:center}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.space-y-1>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(.25rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(.25rem * var(--tw-space-y-reverse))}.overflow-y-auto{overflow-y:auto}.overflow-x-hidden{overflow-x:hidden}.overflow-y-hidden{overflow-y:hidden}.break-words{overflow-wrap:break-word}.border-r{border-right-width:1px}.border-stone-200{--tw-border-opacity:1;border-color:rgb(231 229 228 / var(--tw-border-opacity))}.bg-stone-100{--tw-bg-opacity:1;background-color:rgb(245 245 244 / var(--tw-bg-opacity))}.bg-stone-50{--tw-bg-opacity:1;background-color:rgb(250 250 249 / var(--tw-bg-opacity))}.bg-stone-500{--tw-bg-opacity:1;background-color:rgb(120 113 108 / var(--tw-bg-opacity))}.bg-stone-600{--tw-bg-opacity:1;background-color:rgb(87 83 78 / var(--tw-bg-opacity))}.p-2{padding:.5rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-4{padding-left:1rem;padding-right:1rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.py-0{padding-top:0;padding-bottom:0}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-8{padding-top:2rem;padding-bottom:2rem}.pb-8{padding-bottom:2rem}.pt-20{padding-top:5rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-sm{font-size:.875rem;line-height:1.25rem}.font-medium{font-weight:500}.font-semibold{font-weight:600}.uppercase{text-transform:uppercase}.leading-6{line-height:1.5rem}.tracking-wide{letter-spacing:.025em}.text-stone-400{--tw-text-opacity:1;color:rgb(168 162 158 / var(--tw-text-opacity))}.text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108 / var(--tw-text-opacity))}.text-stone-600{--tw-text-opacity:1;color:rgb(87 83 78 / var(--tw-text-opacity))}.text-stone-900{--tw-text-opacity:1;color:rgb(28 25 23 / var(--tw-text-opacity))}.underline{text-decoration-line:underline}.opacity-0{opacity:0}.transition-colors{transition-property:color,background-color,border-color,text-decoration-color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-opacity{transition-property:opacity;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.duration-300{transition-duration:.3s}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}@media (prefers-color-scheme:dark){.dark\:prose-invert{--tw-prose-body:var(--tw-prose-invert-body);--tw-prose-headings:var(--tw-prose-invert-headings);--tw-prose-lead:var(--tw-prose-invert-lead);--tw-prose-links:var(--tw-prose-invert-links);--tw-prose-bold:var(--tw-prose-invert-bold);--tw-prose-counters:var(--tw-prose-invert-counters);--tw-prose-bullets:var(--tw-prose-invert-bullets);--tw-prose-hr:var(--tw-prose-invert-hr);--tw-prose-quotes:var(--tw-prose-invert-quotes);--tw-prose-quote-borders:var(--tw-prose-invert-quote-borders);--tw-prose-captions:var(--tw-prose-invert-captions);--tw-prose-code:var(--tw-prose-invert-code);--tw-prose-pre-code:var(--tw-prose-invert-pre-code);--tw-prose-pre-bg:var(--tw-prose-invert-pre-bg);--tw-prose-th-borders:var(--tw-prose-invert-th-borders);--tw-prose-td-borders:var(--tw-prose-invert-td-borders)}}@media print{.print\:prose-sm{font-size:.875rem;line-height:1.7142857}.print\:prose-sm :where(p):not(:where([class~=not-prose]*)){margin-top:1.1428571em;margin-bottom:1.1428571em}.print\:prose-sm :where([class~=lead]):not(:where([class~=not-prose]*)){font-size:1.2857143em;line-height:1.5555556;margin-top:.8888889em;margin-bottom:.8888889em}.print\:prose-sm :where(blockquote):not(:where([class~=not-prose]*)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.1111111em}.print\:prose-sm :where(h1):not(:where([class~=not-prose]*)){font-size:2.1428571em;margin-top:0;margin-bottom:.8em;line-height:1.2}.print\:prose-sm :where(h2):not(:where([class~=not-prose]*)){font-size:1.4285714em;margin-top:1.6em;margin-bottom:.8em;line-height:1.4}.print\:prose-sm :where(h3):not(:where([class~=not-prose]*)){font-size:1.2857143em;margin-top:1.5555556em;margin-bottom:.4444444em;line-height:1.5555556}.print\:prose-sm :where(h4):not(:where([class~=not-prose]*)){margin-top:1.4285714em;margin-bottom:.5714286em;line-height:1.4285714}.print\:prose-sm :where(img):not(:where([class~=not-prose]*)){margin-top:1.7142857em;margin-bottom:1.7142857em}.print\:prose-sm :where(video):not(:where([class~=not-prose]*)){margin-top:1.7142857em;margin-bottom:1.7142857em}.print\:prose-sm :where(figure):not(:where([class~=not-prose]*)){margin-top:1.7142857em;margin-bottom:1.7142857em}.print\:prose-sm :where(figure>*):not(:where([class~=not-prose]*)){margin-top:0;margin-bottom:0}.print\:prose-sm :where(figcaption):not(:where([class~=not-prose]*)){font-size:.8571429em;line-height:1.3333333;margin-top:.6666667em}.print\:prose-sm :where(code):not(:where([class~=not-prose]*)){font-size:.8571429em}.print\:prose-sm :where(h2code):not(:where([class~=not-prose]*)){font-size:.9em}.print\:prose-sm :where(h3code):not(:where([class~=not-prose]*)){font-size:.8888889em}.print\:prose-sm :where(pre):not(:where([class~=not-prose]*)){font-size:.8571429em;line-height:1.6666667;margin-top:1.6666667em;margin-bottom:1.6666667em;border-radius:.25rem;padding-top:.6666667em;padding-right:1em;padding-bottom:.6666667em;padding-left:1em}.print\:prose-sm :where(ol):not(:where([class~=not-prose]*)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-left:1.5714286em}.print\:prose-sm :where(ul):not(:where([class~=not-prose]*)){margin-top:1.1428571em;margin-bottom:1.1428571em;padding-left:1.5714286em}.print\:prose-sm :where(li):not(:where([class~=not-prose]*)){margin-top:.2857143em;margin-bottom:.2857143em}.print\:prose-sm :where(ol>li):not(:where([class~=not-prose]*)){padding-left:.4285714em}.print\:prose-sm :where(ul>li):not(:where([class~=not-prose]*)){padding-left:.4285714em}.print\:prose-sm :where(.print\:prose-sm>ul>lip):not(:where([class~=not-prose]*)){margin-top:.5714286em;margin-bottom:.5714286em}.print\:prose-sm :where(.print\:prose-sm>ul>li>:first-child):not(:where([class~=not-prose]*)){margin-top:1.1428571em}.print\:prose-sm :where(.print\:prose-sm>ul>li>:last-child):not(:where([class~=not-prose]*)){margin-bottom:1.1428571em}.print\:prose-sm :where(.print\:prose-sm>ol>li>:first-child):not(:where([class~=not-prose]*)){margin-top:1.1428571em}.print\:prose-sm :where(.print\:prose-sm>ol>li>:last-child):not(:where([class~=not-prose]*)){margin-bottom:1.1428571em}.print\:prose-sm :where(ulul,ulol,olul,olol):not(:where([class~=not-prose]*)){margin-top:.5714286em;margin-bottom:.5714286em}.print\:prose-sm :where(hr):not(:where([class~=not-prose]*)){margin-top:2.8571429em;margin-bottom:2.8571429em}.print\:prose-sm :where(hr+*):not(:where([class~=not-prose]*)){margin-top:0}.print\:prose-sm :where(h2+*):not(:where([class~=not-prose]*)){margin-top:0}.print\:prose-sm :where(h3+*):not(:where([class~=not-prose]*)){margin-top:0}.print\:prose-sm :where(h4+*):not(:where([class~=not-prose]*)){margin-top:0}.print\:prose-sm :where(table):not(:where([class~=not-prose]*)){font-size:.8571429em;line-height:1.5}.print\:prose-sm :where(theadth):not(:where([class~=not-prose]*)){padding-right:1em;padding-bottom:.6666667em;padding-left:1em}.print\:prose-sm :where(theadth:first-child):not(:where([class~=not-prose]*)){padding-left:0}.print\:prose-sm :where(theadth:last-child):not(:where([class~=not-prose]*)){padding-right:0}.print\:prose-sm :where(tbodytd,tfoottd):not(:where([class~=not-prose]*)){padding-top:.6666667em;padding-right:1em;padding-bottom:.6666667em;padding-left:1em}.print\:prose-sm :where(tbodytd:first-child,tfoottd:first-child):not(:where([class~=not-prose]*)){padding-left:0}.print\:prose-sm :where(tbodytd:last-child,tfoottd:last-child):not(:where([class~=not-prose]*)){padding-right:0}.print\:prose-sm :where(.print\:prose-sm>:first-child):not(:where([class~=not-prose]*)){margin-top:0}.print\:prose-sm :where(.print\:prose-sm>:last-child):not(:where([class~=not-prose]*)){margin-bottom:0}}@media (min-width:1024px){.lg\:prose-lg{font-size:1.125rem;line-height:1.7777778}.lg\:prose-lg :where(p):not(:where([class~=not-prose]*)){margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\:prose-lg :where([class~=lead]):not(:where([class~=not-prose]*)){font-size:1.2222222em;line-height:1.4545455;margin-top:1.0909091em;margin-bottom:1.0909091em}.lg\:prose-lg :where(blockquote):not(:where([class~=not-prose]*)){margin-top:1.6666667em;margin-bottom:1.6666667em;padding-left:1em}.lg\:prose-lg :where(h1):not(:where([class~=not-prose]*)){font-size:2.6666667em;margin-top:0;margin-bottom:.8333333em;line-height:1}.lg\:prose-lg :where(h2):not(:where([class~=not-prose]*)){font-size:1.6666667em;margin-top:1.8666667em;margin-bottom:1.0666667em;line-height:1.3333333}.lg\:prose-lg :where(h3):not(:where([class~=not-prose]*)){font-size:1.3333333em;margin-top:1.6666667em;margin-bottom:.6666667em;line-height:1.5}.lg\:prose-lg :where(h4):not(:where([class~=not-prose]*)){margin-top:1.7777778em;margin-bottom:.4444444em;line-height:1.5555556}.lg\:prose-lg :where(img):not(:where([class~=not-prose]*)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\:prose-lg :where(video):not(:where([class~=not-prose]*)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\:prose-lg :where(figure):not(:where([class~=not-prose]*)){margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\:prose-lg :where(figure>*):not(:where([class~=not-prose]*)){margin-top:0;margin-bottom:0}.lg\:prose-lg :where(figcaption):not(:where([class~=not-prose]*)){font-size:.8888889em;line-height:1.5;margin-top:1em}.lg\:prose-lg :where(code):not(:where([class~=not-prose]*)){font-size:.8888889em}.lg\:prose-lg :where(h2code):not(:where([class~=not-prose]*)){font-size:.8666667em}.lg\:prose-lg :where(h3code):not(:where([class~=not-prose]*)){font-size:.875em}.lg\:prose-lg :where(pre):not(:where([class~=not-prose]*)){font-size:.8888889em;line-height:1.75;margin-top:2em;margin-bottom:2em;border-radius:.375rem;padding-top:1em;padding-right:1.5em;padding-bottom:1em;padding-left:1.5em}.lg\:prose-lg :where(ol):not(:where([class~=not-prose]*)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.5555556em}.lg\:prose-lg :where(ul):not(:where([class~=not-prose]*)){margin-top:1.3333333em;margin-bottom:1.3333333em;padding-left:1.5555556em}.lg\:prose-lg :where(li):not(:where([class~=not-prose]*)){margin-top:.6666667em;margin-bottom:.6666667em}.lg\:prose-lg :where(ol>li):not(:where([class~=not-prose]*)){padding-left:.4444444em}.lg\:prose-lg :where(ul>li):not(:where([class~=not-prose]*)){padding-left:.4444444em}.lg\:prose-lg :where(.lg\:prose-lg>ul>lip):not(:where([class~=not-prose]*)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\:prose-lg :where(.lg\:prose-lg>ul>li>:first-child):not(:where([class~=not-prose]*)){margin-top:1.3333333em}.lg\:prose-lg :where(.lg\:prose-lg>ul>li>:last-child):not(:where([class~=not-prose]*)){margin-bottom:1.3333333em}.lg\:prose-lg :where(.lg\:prose-lg>ol>li>:first-child):not(:where([class~=not-prose]*)){margin-top:1.3333333em}.lg\:prose-lg :where(.lg\:prose-lg>ol>li>:last-child):not(:where([class~=not-prose]*)){margin-bottom:1.3333333em}.lg\:prose-lg :where(ulul,ulol,olul,olol):not(:where([class~=not-prose]*)){margin-top:.8888889em;margin-bottom:.8888889em}.lg\:prose-lg :where(hr):not(:where([class~=not-prose]*)){margin-top:3.1111111em;margin-bottom:3.1111111em}.lg\:prose-lg :where(hr+*):not(:where([class~=not-prose]*)){margin-top:0}.lg\:prose-lg :where(h2+*):not(:where([class~=not-prose]*)){margin-top:0}.lg\:prose-lg :where(h3+*):not(:where([class~=not-prose]*)){margin-top:0}.lg\:prose-lg :where(h4+*):not(:where([class~=not-prose]*)){margin-top:0}.lg\:prose-lg :where(table):not(:where([class~=not-prose]*)){font-size:.8888889em;line-height:1.5}.lg\:prose-lg :where(theadth):not(:where([class~=not-prose]*)){padding-right:.75em;padding-bottom:.75em;padding-left:.75em}.lg\:prose-lg :where(theadth:first-child):not(:where([class~=not-prose]*)){padding-left:0}.lg\:prose-lg :where(theadth:last-child):not(:where([class~=not-prose]*)){padding-right:0}.lg\:prose-lg :where(tbodytd,tfoottd):not(:where([class~=not-prose]*)){padding-top:.75em;padding-right:.75em;padding-bottom:.75em;padding-left:.75em}.lg\:prose-lg :where(tbodytd:first-child,tfoottd:first-child):not(:where([class~=not-prose]*)){padding-left:0}.lg\:prose-lg :where(tbodytd:last-child,tfoottd:last-child):not(:where([class~=not-prose]*)){padding-right:0}.lg\:prose-lg :where(.lg\:prose-lg>:first-child):not(:where([class~=not-prose]*)){margin-top:0}.lg\:prose-lg :where(.lg\:prose-lg>:last-child):not(:where([class~=not-prose]*)){margin-bottom:0}}@media (min-width:1280px){.xl\:prose-xl{font-size:1.25rem;line-height:1.8}.xl\:prose-xl :where(p):not(:where([class~=not-prose]*)){margin-top:1.2em;margin-bottom:1.2em}.xl\:prose-xl :where([class~=lead]):not(:where([class~=not-prose]*)){font-size:1.2em;line-height:1.5;margin-top:1em;margin-bottom:1em}.xl\:prose-xl :where(blockquote):not(:where([class~=not-prose]*)){margin-top:1.6em;margin-bottom:1.6em;padding-left:1.0666667em}.xl\:prose-xl :where(h1):not(:where([class~=not-prose]*)){font-size:2.8em;margin-top:0;margin-bottom:.8571429em;line-height:1}.xl\:prose-xl :where(h2):not(:where([class~=not-prose]*)){font-size:1.8em;margin-top:1.5555556em;margin-bottom:.8888889em;line-height:1.1111111}.xl\:prose-xl :where(h3):not(:where([class~=not-prose]*)){font-size:1.5em;margin-top:1.6em;margin-bottom:.6666667em;line-height:1.3333333}.xl\:prose-xl :where(h4):not(:where([class~=not-prose]*)){margin-top:1.8em;margin-bottom:.6em;line-height:1.6}.xl\:prose-xl :where(img):not(:where([class~=not-prose]*)){margin-top:2em;margin-bottom:2em}.xl\:prose-xl :where(video):not(:where([class~=not-prose]*)){margin-top:2em;margin-bottom:2em}.xl\:prose-xl :where(figure):not(:where([class~=not-prose]*)){margin-top:2em;margin-bottom:2em}.xl\:prose-xl :where(figure>*):not(:where([class~=not-prose]*)){margin-top:0;margin-bottom:0}.xl\:prose-xl :where(figcaption):not(:where([class~=not-prose]*)){font-size:.9em;line-height:1.5555556;margin-top:1em}.xl\:prose-xl :where(code):not(:where([class~=not-prose]*)){font-size:.9em}.xl\:prose-xl :where(h2code):not(:where([class~=not-prose]*)){font-size:.8611111em}.xl\:prose-xl :where(h3code):not(:where([class~=not-prose]*)){font-size:.9em}.xl\:prose-xl :where(pre):not(:where([class~=not-prose]*)){font-size:.9em;line-height:1.7777778;margin-top:2em;margin-bottom:2em;border-radius:.5rem;padding-top:1.1111111em;padding-right:1.3333333em;padding-bottom:1.1111111em;padding-left:1.3333333em}.xl\:prose-xl :where(ol):not(:where([class~=not-prose]*)){margin-top:1.2em;margin-bottom:1.2em;padding-left:1.6em}.xl\:prose-xl :where(ul):not(:where([class~=not-prose]*)){margin-top:1.2em;margin-bottom:1.2em;padding-left:1.6em}.xl\:prose-xl :where(li):not(:where([class~=not-prose]*)){margin-top:.6em;margin-bottom:.6em}.xl\:prose-xl :where(ol>li):not(:where([class~=not-prose]*)){padding-left:.4em}.xl\:prose-xl :where(ul>li):not(:where([class~=not-prose]*)){padding-left:.4em}.xl\:prose-xl :where(.xl\:prose-xl>ul>lip):not(:where([class~=not-prose]*)){margin-top:.8em;margin-bottom:.8em}.xl\:prose-xl :where(.xl\:prose-xl>ul>li>:first-child):not(:where([class~=not-prose]*)){margin-top:1.2em}.xl\:prose-xl :where(.xl\:prose-xl>ul>li>:last-child):not(:where([class~=not-prose]*)){margin-bottom:1.2em}.xl\:prose-xl :where(.xl\:prose-xl>ol>li>:first-child):not(:where([class~=not-prose]*)){margin-top:1.2em}.xl\:prose-xl :where(.xl\:prose-xl>ol>li>:last-child):not(:where([class~=not-prose]*)){margin-bottom:1.2em}.xl\:prose-xl :where(ulul,ulol,olul,olol):not(:where([class~=not-prose]*)){margin-top:.8em;margin-bottom:.8em}.xl\:prose-xl :where(hr):not(:where([class~=not-prose]*)){margin-top:2.8em;margin-bottom:2.8em}.xl\:prose-xl :where(hr+*):not(:where([class~=not-prose]*)){margin-top:0}.xl\:prose-xl :where(h2+*):not(:where([class~=not-prose]*)){margin-top:0}.xl\:prose-xl :where(h3+*):not(:where([class~=not-prose]*)){margin-top:0}.xl\:prose-xl :where(h4+*):not(:where([class~=not-prose]*)){margin-top:0}.xl\:prose-xl :where(table):not(:where([class~=not-prose]*)){font-size:.9em;line-height:1.5555556}.xl\:prose-xl :where(theadth):not(:where([class~=not-prose]*)){padding-right:.6666667em;padding-bottom:.8888889em;padding-left:.6666667em}.xl\:prose-xl :where(theadth:first-child):not(:where([class~=not-prose]*)){padding-left:0}.xl\:prose-xl :where(theadth:last-child):not(:where([class~=not-prose]*)){padding-right:0}.xl\:prose-xl :where(tbodytd,tfoottd):not(:where([class~=not-prose]*)){padding-top:.8888889em;padding-right:.6666667em;padding-bottom:.8888889em;padding-left:.6666667em}.xl\:prose-xl :where(tbodytd:first-child,tfoottd:first-child):not(:where([class~=not-prose]*)){padding-left:0}.xl\:prose-xl :where(tbodytd:last-child,tfoottd:last-child):not(:where([class~=not-prose]*)){padding-right:0}.xl\:prose-xl :where(.xl\:prose-xl>:first-child):not(:where([class~=not-prose]*)){margin-top:0}.xl\:prose-xl :where(.xl\:prose-xl>:last-child):not(:where([class~=not-prose]*)){margin-bottom:0}}.hover\:text-stone-500:hover{--tw-text-opacity:1;color:rgb(120 113 108 / var(--tw-text-opacity))}.hover\:text-stone-900:hover{--tw-text-opacity:1;color:rgb(28 25 23 / var(--tw-text-opacity))}.focus\:text-black:focus{--tw-text-opacity:1;color:rgb(0 0 0 / var(--tw-text-opacity))}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}.group:hover .group-hover\:text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108 / var(--tw-text-opacity))}.group:focus .group-focus\:text-stone-500{--tw-text-opacity:1;color:rgb(120 113 108 / var(--tw-text-opacity))}.prose-code\:before\:content-none :is(:where(code):not(:where([class~=not-prose]*)))::before{--tw-content:none;content:var(--tw-content)}.prose-code\:after\:content-none :is(:where(code):not(:where([class~=not-prose]*)))::after{--tw-content:none;content:var(--tw-content)}@media (prefers-color-scheme:dark){.dark\:border-r-2{border-right-width:2px}.dark\:border-stone-700{--tw-border-opacity:1;border-color:rgb(68 64 60 / var(--tw-border-opacity))}.dark\:bg-stone-800{--tw-bg-opacity:1;background-color:rgb(41 37 36 / var(--tw-bg-opacity))}.dark\:bg-stone-900{--tw-bg-opacity:1;background-color:rgb(28 25 23 / var(--tw-bg-opacity))}.dark\:text-stone-100{--tw-text-opacity:1;color:rgb(245 245 244 / var(--tw-text-opacity))}.dark\:text-stone-300{--tw-text-opacity:1;color:rgb(214 211 209 / var(--tw-text-opacity))}.dark\:text-stone-400{--tw-text-opacity:1;color:rgb(168 162 158 / var(--tw-text-opacity))}.dark\:text-white{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:hover\:text-stone-100:hover{--tw-text-opacity:1;color:rgb(245 245 244 / var(--tw-text-opacity))}.dark\:hover\:text-stone-300:hover{--tw-text-opacity:1;color:rgb(214 211 209 / var(--tw-text-opacity))}.dark\:hover\:text-white:hover{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.dark\:focus\:text-white:focus{--tw-text-opacity:1;color:rgb(255 255 255 / var(--tw-text-opacity))}.group:hover .dark\:group-hover\:text-stone-300{--tw-text-opacity:1;color:rgb(214 211 209 / var(--tw-text-opacity))}.group:focus .dark\:group-focus\:text-stone-300{--tw-text-opacity:1;color:rgb(214 211 209 / var(--tw-text-opacity))}}@media print{.print\:hidden{display:none}.print\:max-w-none{max-width:none}.print\:\!py-0{padding-top:0!important;padding-bottom:0!important}.print\:px-0{padding-left:0;padding-right:0}}@media (min-width:640px){.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}}@media (min-width:768px){.md\:visible{visibility:visible}.md\:sticky{position:sticky}.md\:mr-3{margin-right:.75rem}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-16{height:4rem}.md\:w-64{width:16rem}.md\:flex-1{flex:1 1 0%}.md\:flex-initial{flex:0 1 auto}.md\:translate-x-0{--tw-translate-x:0px;transform:translate(var(--tw-translate-x),var(--tw-translate-y)) rotate(var(--tw-rotate)) skewX(var(--tw-skew-x)) skewY(var(--tw-skew-y)) scaleX(var(--tw-scale-x)) scaleY(var(--tw-scale-y))}.md\:flex-col{flex-direction:column}.md\:px-8{padding-left:2rem;padding-right:2rem}.md\:py-0{padding-top:0;padding-bottom:0}.md\:py-12{padding-top:3rem;padding-bottom:3rem}.md\:py-4{padding-top:1rem;padding-bottom:1rem}.md\:pb-0{padding-bottom:0}.md\:text-sm{font-size:.875rem;line-height:1.25rem}.md\:leading-5{line-height:1.25rem}.md\:transition-none{transition-property:none}}@media (min-width:1024px){.lg\:flex{display:flex}.lg\:flex-col{flex-direction:column}.lg\:text-xs{font-size:.75rem;line-height:1rem}}
Get started - Learn MonoGame
Get started This guide will give you the steps to install MonoGame, get a basic project setup, and build an output that you can publish.
Install Get the .NET 8.0 SDK .Test that dotnet is installed correctly: Get the MonoGame templates: dotnet new install MonoGame.Templates.CSharp
You can ignore this error:Error: Failed to load template from … Details: ‘identity’ is missing or is an empty string.
Create a new game Replace MyGame
with your game’s name in the following two command:
dotnet new mgdesktopgl -o MyGame
cd MyGame
Run Publish You can publish on Windows, Mac, and Linux using:
dotnet publish -c Release -r win-x64 -o artifacts/windows --self-contained
dotnet publish -c Release -r osx-x64 -o artifacts/osx --self-contained
dotnet publish -c Release -r linux-x64 -o artifacts/linux --self-contained
You’ll find the output in:
artifacts/windows
artifacts/osx
artifacts/linux
You can zip those folders to share your game.
MonoGame Content Builder Editor To launch the MonoGame Content Builder Editor, you can call the following command from the root folder of your project:
dotnet mgcb-editor Content/Content.mgcb
You should see this window appear:
Notes To build shaders, make sure you have the Visual Studio 2013 redistributable installed. Otherwise you might see an error about the builder being unable to load libmojoshader_64.dll.
Read more You can read more getting started info from the official MonoGame docs .
Now that you have a project, the next step is to setup a development environment. Developing with Visual Studio Code .
Edit this page on GitHub