/*!modern-normalize v1.1.0 | MIT License | https://github.com/sindresorhus/modern-normalize*/*,::before,::after{box-sizing:border-box}html{-moz-tab-size:4;-o-tab-size:4;tab-size:4}html{line-height:1.15;-webkit-text-size-adjust:100%}body{margin:0}body{font-family:system-ui,-apple-system,segoe ui,Roboto,Helvetica,Arial,sans-serif,apple color emoji,segoe ui emoji}hr{height:0;color:inherit}abbr[title]{-webkit-text-decoration:underline dotted;text-decoration:underline dotted}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Consolas,liberation mono,Menlo,monospace;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}button,input,optgroup,select,textarea{font-family:inherit;font-size:100%;line-height:1.15;margin:0}button,select{text-transform:none}button,[type=button]{-webkit-appearance:button}legend{padding:0}progress{vertical-align:baseline}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}button{background-color:transparent;background-image:none}fieldset{margin:0;padding:0}ol,ul{list-style:none;margin:0;padding:0}html{font-family:ui-sans-serif,system-ui,-apple-system,BlinkMacSystemFont,segoe ui,Roboto,helvetica neue,Arial,noto sans,sans-serif,apple color emoji,segoe ui emoji,segoe ui symbol,noto color emoji;line-height:1.5}body{font-family:inherit;line-height:inherit}*,::before,::after{box-sizing:border-box;border-width:0;border-style:solid;border-color:initial}hr{border-top-width:1px}img{border-style:solid}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input:-ms-input-placeholder,textarea:-ms-input-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}table{border-collapse:collapse}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}button,input,optgroup,select,textarea{padding:0;line-height:inherit;color:inherit}pre,code,kbd,samp{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,liberation mono,courier new,monospace}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]{display:none}*,::before,::after{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.container{width:100%}@media(min-width:640px){.container{max-width:640px}}@media(min-width:768px){.container{max-width:768px}}@media(min-width:992px){.container{max-width:992px}}@media(min-width:1280px){.container{max-width:1280px}}@media(min-width:1536px){.container{max-width:1536px}}.prose{color:#374151;max-width:65ch}.prose [class~=lead]{color:#4b5563;font-size:1.25em;line-height:1.6;margin-top:1.2em;margin-bottom:1.2em}.prose a{color:#111827;text-decoration:underline;font-weight:500}.prose strong{color:#111827;font-weight:600}.prose ol[type=a]{--list-counter-style:lower-alpha}.prose ol[type=as]{--list-counter-style:lower-alpha}.prose ol[type=i]{--list-counter-style:lower-roman}.prose ol[type=is]{--list-counter-style:lower-roman}.prose ol[type="1"]{--list-counter-style:decimal}.prose ol>li{position:relative;padding-left:1.75em}.prose ol>li::before{content:counter(list-item,var(--list-counter-style,decimal))".";position:absolute;font-weight:400;color:#6b7280;left:0}.prose ul>li{position:relative;padding-left:1.75em}.prose ul>li::before{content:"";position:absolute;background-color:#d1d5db;border-radius:50%;width:.375em;height:.375em;top:calc(.875em - .1875em);left:.25em}.prose hr{border-color:#e5e7eb;border-top-width:1px;margin-top:3em;margin-bottom:3em}.prose blockquote{font-weight:500;font-style:italic;color:#111827;border-left-width:.25rem;border-left-color:#e5e7eb;quotes:"\201C""\201D""\2018""\2019";margin-top:1.6em;margin-bottom:1.6em;padding-left:1em}.prose blockquote p:first-of-type::before{content:open-quote}.prose blockquote p:last-of-type::after{content:close-quote}.prose h1{color:#111827;font-weight:800;font-size:2.25em;margin-top:0;margin-bottom:.8888889em;line-height:1.1111111}.prose h2{color:#111827;font-weight:700;font-size:1.5em;margin-top:2em;margin-bottom:1em;line-height:1.3333333}.prose h3{color:#111827;font-weight:600;font-size:1.25em;margin-top:1.6em;margin-bottom:.6em;line-height:1.6}.prose h4{color:#111827;font-weight:600;margin-top:1.5em;margin-bottom:.5em;line-height:1.5}.prose figure figcaption{color:#6b7280;font-size:.875em;line-height:1.4285714;margin-top:.8571429em}.prose code{color:#111827;font-weight:600;font-size:.875em}.prose code::before{content:"`"}.prose code::after{content:"`"}.prose a code{color:#111827}.prose pre{color:#e5e7eb;background-color:#1f2937;overflow-x:auto;font-size:.875em;line-height:1.7142857;margin-top:1.7142857em;margin-bottom:1.7142857em;border-radius:.375rem;padding-top:.8571429em;padding-right:1.1428571em;padding-bottom:.8571429em;padding-left:1.1428571em}.prose pre code{background-color:transparent;border-width:0;border-radius:0;padding:0;font-weight:400;color:inherit;font-size:inherit;font-family:inherit;line-height:inherit}.prose pre code::before{content:none}.prose pre code::after{content:none}.prose table{width:100%;table-layout:auto;text-align:left;margin-top:2em;margin-bottom:2em;font-size:.875em;line-height:1.7142857}.prose thead{color:#111827;font-weight:600;border-bottom-width:1px;border-bottom-color:#d1d5db}.prose thead th{vertical-align:bottom;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose tbody tr{border-bottom-width:1px;border-bottom-color:#e5e7eb}.prose tbody tr:last-child{border-bottom-width:0}.prose tbody td{vertical-align:top;padding-top:.5714286em;padding-right:.5714286em;padding-bottom:.5714286em;padding-left:.5714286em}.prose{font-size:1rem;line-height:1.75}.prose p{margin-top:1.25em;margin-bottom:1.25em}.prose img{margin-top:2em;margin-bottom:2em}.prose video{margin-top:2em;margin-bottom:2em}.prose figure{margin-top:2em;margin-bottom:2em}.prose figure>*{margin-top:0;margin-bottom:0}.prose h2 code{font-size:.875em}.prose h3 code{font-size:.9em}.prose ol{margin-top:1.25em;margin-bottom:1.25em}.prose ul{margin-top:1.25em;margin-bottom:1.25em}.prose li{margin-top:.5em;margin-bottom:.5em}.prose>ul>li p{margin-top:.75em;margin-bottom:.75em}.prose>ul>li>*:first-child{margin-top:1.25em}.prose>ul>li>*:last-child{margin-bottom:1.25em}.prose>ol>li>*:first-child{margin-top:1.25em}.prose>ol>li>*:last-child{margin-bottom:1.25em}.prose ul ul,.prose ul ol,.prose ol ul,.prose ol ol{margin-top:.75em;margin-bottom:.75em}.prose hr+*{margin-top:0}.prose h2+*{margin-top:0}.prose h3+*{margin-top:0}.prose h4+*{margin-top:0}.prose thead th:first-child{padding-left:0}.prose thead th:last-child{padding-right:0}.prose tbody td:first-child{padding-left:0}.prose tbody td:last-child{padding-right:0}.prose>:first-child{margin-top:0}.prose>:last-child{margin-bottom:0}.dark .dark\:prose-dark{color:#9ca3af}.dark .dark\:prose-dark [class~=lead]{color:#d1d5db}.dark .dark\:prose-dark a{color:#fff}.dark .dark\:prose-dark strong{color:#fff}.dark .dark\:prose-dark ol>li::before{color:#9ca3af}.dark .dark\:prose-dark ul>li::before{background-color:#4b5563}.dark .dark\:prose-dark hr{border-color:#e5e7eb}.dark .dark\:prose-dark blockquote{color:#e5e7eb;border-left-color:#4b5563}.dark .dark\:prose-dark h1{color:#fff}.dark .dark\:prose-dark h2{color:#fff}.dark .dark\:prose-dark h3{color:#fff}.dark .dark\:prose-dark h4{color:#fff}.dark .dark\:prose-dark figure figcaption{color:#9ca3af}.dark .dark\:prose-dark code{color:#fff}.dark .dark\:prose-dark a code{color:#fff}.dark .dark\:prose-dark pre{color:#e5e7eb;background-color:#1f2937}.dark .dark\:prose-dark thead{color:#fff;border-bottom-color:#9ca3af}.dark .dark\:prose-dark tbody tr{border-bottom-color:#4b5563}@font-face{font-family:ibm plex sans;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-400-normal.woff2)format("woff2")}@font-face{font-family:ibm plex sans;font-style:italic;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-400-italic.woff2)format("woff2")}@font-face{font-family:ibm plex sans;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-500-normal.woff2)format("woff2")}@font-face{font-family:ibm plex sans;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-600-normal.woff2)format("woff2")}@font-face{font-family:ibm plex sans;font-style:normal;font-weight:700;font-display:swap;src:url(/fonts/ibm-plex-sans-latin-700-normal.woff2)format("woff2")}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:400;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-400-normal.woff2)format("woff2")}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:500;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-500-normal.woff2)format("woff2")}@font-face{font-family:ibm plex mono;font-style:normal;font-weight:600;font-display:swap;src:url(/fonts/ibm-plex-mono-latin-600-normal.woff2)format("woff2")}:root{--font-sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, Consolas, monospace;--ink:#1c1e3a;--muted:#5b6078;--paper:#ffffff;--surface:#f4f5fb;--line:#e2e4ef;--brand:#4338ca;--brand-strong:#3730a3;--brand-soft:#eceefe;--code-bg:#2e3440}.dark{--ink:#eef0fb;--muted:#a7abc3;--paper:#1f2937;--surface:#111827;--line:#374151;--brand:#a5b4fc;--brand-strong:#c7d2fe;--brand-soft:#312e81}body{font-family:var(--font-sans);font-feature-settings:"kern","liga";-webkit-font-smoothing:antialiased}code,pre,kbd,samp,textarea.sqlrun__editor{font-family:var(--font-mono)}[x-cloak]{display:none!important}:focus-visible{outline:2px solid var(--brand);outline-offset:2px}.post-grid{display:grid;grid-template-columns:minmax(0,1fr);grid-template-areas:"head" "toc" "main" "side"}.post-area-head{grid-area:head}.post-area-toc{grid-area:toc}.post-area-main{grid-area:main;min-width:0}.post-area-side{grid-area:side}@media(min-width:640px){.post-grid{grid-template-columns:300px minmax(0,1fr)300px;grid-template-areas:"toc head side" "toc main side";align-items:start}}.lesson-nav{max-width:65ch;margin-left:auto;margin-right:auto;padding-left:1rem;padding-right:1rem}.lesson-nav__links{display:grid;grid-template-columns:minmax(0,1fr);gap:.75rem}.lesson-nav__link--next{text-align:right}@media(min-width:640px){.lesson-nav__links{grid-template-columns:repeat(2,minmax(0,1fr))}}.sqlrun{margin:1.5em 0;border-radius:.375rem;overflow:hidden;background:#2e3440;color:#d8dee9}.sqlrun__editor{display:block;width:100%;min-height:3em;padding:1em 1.25em;border:0;resize:vertical;background:0 0;color:inherit;font-family:ui-monospace,SFMono-Regular,Menlo,Consolas,monospace;font-size:.875em;line-height:1.7;white-space:pre;overflow-x:auto;-moz-tab-size:4;-o-tab-size:4;tab-size:4}.sqlrun__editor:focus{outline:2px solid #88c0d0;outline-offset:-2px}.sqlrun__bar{display:none;flex-wrap:wrap;align-items:center;gap:.5rem .75rem;padding:.5rem 1.25em;border-top:1px solid #3b4252}.sqlrun--ready .sqlrun__bar{display:flex}.sqlrun__bar button{border-radius:.375rem;padding:.35rem .9rem;font-size:.875rem;font-weight:600;cursor:pointer}.sqlrun__run{background:#88c0d0;color:#2e3440}.sqlrun__run:hover{background:#8fbcbb}.sqlrun__run:disabled{opacity:.7;cursor:progress}.sqlrun__reset{background:0 0;color:#d8dee9;border:1px solid #4c566a}.sqlrun__reset:hover{background:#3b4252}.sqlrun__hint{font-size:.75rem;color:#a3abba}.sqlrun__output{padding:.75rem 1.25em 1rem;background:#fff;color:#1f2937;border-top:1px solid #3b4252}.dark .sqlrun__output{background:#1f2937;color:#e5e7eb}.sqlrun__table-wrap{overflow-x:auto}.sqlrun__table{width:auto;margin:0!important;border-collapse:collapse;font-size:.875rem}.sqlrun__table th,.sqlrun__table td{padding:.35rem .75rem;border-bottom:1px solid #e5e7eb;text-align:left;white-space:nowrap}.dark .sqlrun__table th,.dark .sqlrun__table td{border-color:#374151}.sqlrun__table th{font-weight:600}.sqlrun__null{color:#9ca3af;font-style:italic}.sqlrun__msg{margin:.5rem 0 0;font-size:.75rem;color:#6b7280}.sqlrun__error{margin:0;font-size:.875rem;color:#b91c1c;white-space:pre-wrap}.dark .sqlrun__error{color:#fca5a5}.course-outline{margin-top:2.5rem;font-size:.875rem;border:1px solid #e5e7eb;border-radius:.5rem;overflow:hidden;background:#fff}.dark .course-outline{background:#374151;border-color:#4b5563}.course-outline__title{margin:0;padding:.75rem 1rem;font-size:1.125rem;font-weight:600;border-bottom:1px solid #e5e7eb}.dark .course-outline__title{border-color:#4b5563}.course-outline__section+.course-outline__section{border-top:1px solid #e5e7eb}.dark .course-outline__section+.course-outline__section{border-color:#4b5563}.course-outline__section summary{padding:.6rem 1rem;font-weight:600;cursor:pointer;list-style-position:inside}.course-outline__section summary:hover{background:#eef2ff}.dark .course-outline__section summary:hover{background:#4b5563}.course-outline__section ol{list-style:none;margin:0;padding:0 0 .5rem}.course-outline__link{display:flex;gap:.5rem;padding:.35rem 1rem .35rem 1.25rem;line-height:1.35;color:inherit}a.course-outline__link:hover{background:#eef2ff;color:#1d4ed8}.dark a.course-outline__link:hover{background:#4b5563;color:#fff}.course-outline__link.is-current{background:#e0e7ff;font-weight:600;box-shadow:inset 3px 0 #4f46e5}.dark .course-outline__link.is-current{background:#312e81;box-shadow:inset 3px 0 #a5b4fc}.course-outline__n{flex:none;min-width:1.5rem;color:#9ca3af;font-variant-numeric:tabular-nums}@media(min-width:640px){.post-area-side>div{position:sticky;top:1rem;max-height:calc(100vh - 2rem);overflow-y:auto}}.home-wrap{max-width:80rem;margin:0 auto;padding:0 1rem}@media(min-width:768px){.home-wrap{padding:0 2rem}}.home-h2{margin:0;font-size:clamp(1.75rem,3vw,2.25rem);line-height:1.15;font-weight:600;letter-spacing:-.015em;color:var(--ink)}.home-hero{padding:3rem 0 3.5rem;background:var(--surface);border-bottom:1px solid var(--line)}.home-hero__grid{display:grid;gap:2.5rem;align-items:center}@media(min-width:1024px){.home-hero{padding:5rem 0}.home-hero__grid{grid-template-columns:minmax(0,5fr)minmax(0,7fr);gap:4rem}}.home-hero__title{margin:0;font-size:clamp(2.5rem,6vw,4.25rem);line-height:1.02;font-weight:600;letter-spacing:-.03em;color:var(--ink);text-wrap:balance}.home-hero__lead{margin:1.25rem 0 0;max-width:34rem;font-size:1.1875rem;line-height:1.55;color:var(--muted)}.home-hero__actions{display:flex;flex-wrap:wrap;gap:.75rem;margin-top:2rem}.home-btn{display:inline-flex;align-items:center;min-height:2.875rem;padding:0 1.25rem;border-radius:.375rem;font-weight:600;font-size:1rem;text-decoration:none}.home-btn--primary{background:var(--brand);color:#fff}.home-btn--primary:hover{background:var(--brand-strong)}.dark .home-btn--primary{color:#1c1e3a}.home-btn--ghost{border:1px solid var(--line);color:var(--ink);background:var(--paper)}.home-btn--ghost:hover{border-color:var(--brand);color:var(--brand)}.home-hero__demo-label{margin:0 0 .6rem;font-size:.9375rem;color:var(--muted)}.home-sqlrun{margin:0;border-radius:.625rem;box-shadow:0 1px rgba(28,30,58,4%),0 18px 40px -18px rgba(28,30,58,.45)}.home-sqlrun .sqlrun__editor{font-size:.9375rem;padding:1.25rem 1.5rem}.home-sqlrun .sqlrun__output{max-height:20rem;overflow:auto}.home-course{padding:4rem 0}@media(min-width:1024px){.home-course{padding:5.5rem 0}}.home-course__lead{margin:.75rem 0 0;max-width:40rem;font-size:1.0625rem;line-height:1.6;color:var(--muted)}.home-path{list-style:none;margin:2.5rem 0 0;padding:0;max-width:48rem}.home-path__step{position:relative;display:grid;grid-template-columns:2.75rem minmax(0,1fr);gap:1.25rem;padding-bottom:2.25rem}.home-path__step:not(:last-child)::before{content:"";position:absolute;left:calc(1.375rem - 1px);top:2.75rem;bottom:0;width:2px;background:var(--line)}.home-path__n{display:grid;place-items:center;width:2.75rem;height:2.75rem;border-radius:999px;border:2px solid var(--brand);color:var(--brand);background:var(--paper);font-family:var(--font-mono);font-weight:600;font-size:1.0625rem}.home-path__title{margin:.45rem 0 0;font-size:1.375rem;line-height:1.25;font-weight:600;letter-spacing:-.01em}.home-path__title a{color:var(--ink);text-decoration:none}.home-path__title a:hover{color:var(--brand)}.home-path__desc{margin:.4rem 0 0;line-height:1.6;color:var(--muted)}.home-path__meta{display:flex;flex-wrap:wrap;gap:.25rem 1.25rem;margin:.6rem 0 0;font-size:.9375rem;color:var(--muted)}.home-path__meta a{color:var(--brand);font-weight:500;text-decoration:none}.home-path__meta a:hover{text-decoration:underline}.home-faq{padding:4rem 0;background:var(--surface);border-top:1px solid var(--line)}@media(min-width:1024px){.home-faq{padding:5.5rem 0}}.home-faq__grid{display:grid;gap:2rem}@media(min-width:1024px){.home-faq__grid{grid-template-columns:minmax(0,1fr)minmax(0,2fr);gap:4rem}}.home-faq__lead{margin:.75rem 0 0;line-height:1.6;color:var(--muted);max-width:26rem}.home-faq__item{border-bottom:1px solid var(--line)}.home-faq__item:first-child{border-top:1px solid var(--line)}.home-faq__item summary{display:flex;justify-content:space-between;gap:1rem;padding:1.1rem 0;font-weight:500;font-size:1.0625rem;color:var(--ink);cursor:pointer;list-style:none}.home-faq__item summary::-webkit-details-marker{display:none}.home-faq__item summary::after{content:"+";color:var(--brand);font-size:1.375rem;line-height:1}.home-faq__item[open] summary::after{content:"\2212"}.home-faq__item p{margin:0 0 1.25rem;max-width:42rem;line-height:1.65;color:var(--muted)}@media(prefers-reduced-motion:no-preference){.home-btn,.home-path__title a,.home-faq__item summary::after{transition:color .15s,background-color .15s,border-color .15s}}.sqlrun__table{border:0!important;border-radius:0!important;background:0 0!important}.sqlrun__table th,.sqlrun__table td{padding:.35rem .75rem!important}.sqlrun__table thead{background:0 0}.sqlrun__table thead tr{color:inherit}.sqlrun__table th{border-bottom:2px solid var(--line)!important}.sqlrun__table tr{color:inherit}.prose :not(pre)>code{font-weight:500;color:var(--ink)}.prose pre code,.chroma code{background:0 0;border:0;padding:0}.prose a code,.dark .prose a code{color:var(--brand);border-color:initial}.prose a:hover code{background:var(--brand-soft)}.callout{--callout-accent:var(--brand);--callout-bg:#eef0fd;margin:1.75em 0;padding:.9rem 1.15rem;border-left:4px solid var(--callout-accent);border-radius:0 .5rem .5rem 0;background:var(--callout-bg);color:var(--ink)}.callout--note{--callout-accent:#0f8a5f;--callout-bg:#eaf7f1}.callout--warning{--callout-accent:#c27803;--callout-bg:#fdf6e7}.callout--error{--callout-accent:#c53030;--callout-bg:#fdeeee}.dark .callout{--callout-bg:rgba(165, 180, 252, 0.10)}.dark .callout--note{--callout-accent:#34d399;--callout-bg:rgba(52, 211, 153, 0.10)}.dark .callout--warning{--callout-accent:#fbbf24;--callout-bg:rgba(251, 191, 36, 0.10)}.dark .callout--error{--callout-accent:#f87171;--callout-bg:rgba(248, 113, 113, 0.10)}.callout__title{margin:0 0 .35rem!important;font-weight:600;color:var(--callout-accent)}.callout__body{line-height:1.65}.callout__body>:first-child{margin-top:0}.callout__body>:last-child{margin-bottom:0}.prose .callout p{margin:.5em 0}.syntax-block{margin:1.75em 0}.syntax-block__label{margin-bottom:.4rem;font-size:.8125rem;font-weight:600;color:var(--muted)}.prose .syntax-block pre{margin:0}.post-area-side .social-buttons{justify-content:flex-start;margin-top:0}.post-area-side .social-button{width:44px;height:44px}.post-area-side .social-button__inner{border-width:1px;border-color:var(--line);border-radius:.5rem}.post-area-side .social-buttons__button{margin:0 .5rem 0 0}.post-area-side .mb-8{margin-bottom:0}.course-outline{margin-top:1.25rem}.section-hero{padding:2.5rem 0 2.25rem;background:var(--surface);border-bottom:1px solid var(--line)}@media(min-width:1024px){.section-hero{padding:3.5rem 0 3rem}}.section-hero__title{margin:.5rem 0 0;font-size:clamp(2rem,4.5vw,3.25rem);line-height:1.08;font-weight:600;letter-spacing:-.025em;color:var(--ink)}.section-hero__lead{margin:1rem 0 0;max-width:44rem;font-size:1.125rem;line-height:1.6;color:var(--muted)}.section-hero__meta{display:flex;flex-wrap:wrap;gap:.25rem 1.5rem;margin:1.25rem 0 0;font-size:.9375rem;color:var(--muted)}.section-body{padding-top:2.5rem;padding-bottom:4rem}.lesson-list{list-style:none;margin:0;padding:0;max-width:48rem}.lesson-list__item{display:grid;grid-template-columns:3rem minmax(0,1fr);gap:1rem;padding:1.25rem 0;border-bottom:1px solid var(--line)}.lesson-list__item:first-child{padding-top:0}.lesson-list__n{font-family:var(--font-mono);font-weight:600;font-size:1.0625rem;line-height:1.9rem;color:var(--brand);font-variant-numeric:tabular-nums}.lesson-list__title{margin:0;font-size:1.25rem;line-height:1.5;font-weight:600;letter-spacing:-.01em}.lesson-list__title a{color:var(--ink);text-decoration:none}.lesson-list__title a:hover{color:var(--brand)}.lesson-list__desc{margin:.3rem 0 0;line-height:1.6;color:var(--muted);display:-webkit-box;-webkit-line-clamp:2;-webkit-box-orient:vertical;overflow:hidden}.lesson-list__tag{display:inline-block;margin:.55rem 0 0;padding:.1rem .5rem;border-radius:.25rem;background:var(--brand-soft);color:var(--brand);font-size:.8125rem;font-weight:500}.section-intro{margin:3.5rem 0 0;max-width:48rem}.related{padding:3rem 0 3.5rem;background:var(--surface);border-top:1px solid var(--line)}.related__title{margin:0 0 1.25rem;font-size:1.375rem;font-weight:600;color:var(--ink)}.related__grid{display:grid;gap:1rem}@media(min-width:768px){.related__grid{grid-template-columns:repeat(3,minmax(0,1fr))}}.related-card{display:flex;flex-direction:column;gap:.35rem;padding:1.25rem 1.25rem 1.35rem;border:1px solid var(--line);border-radius:.5rem;background:var(--paper);text-decoration:none}.related-card:hover{border-color:var(--brand)}.related-card__section{font-size:.8125rem;color:var(--muted)}.related-card__title{font-size:1.125rem;font-weight:600;line-height:1.35;color:var(--ink)}.related-card:hover .related-card__title{color:var(--brand)}.related-card__desc{font-size:.9375rem;line-height:1.55;color:var(--muted)}.section-hero,.section-body,.related{width:100%}@media(max-width:639px){.lesson-list__item{grid-template-columns:2rem minmax(0,1fr);gap:.75rem}}.home-wrap{max-width:100%;padding:0 1.5rem}@media(min-width:640px){.home-wrap{max-width:640px}}@media(min-width:768px){.home-wrap{max-width:768px}}@media(min-width:992px){.home-wrap{max-width:992px;padding:0 2rem}}@media(min-width:1280px){.home-wrap{max-width:1280px}}@media(min-width:1536px){.home-wrap{max-width:1536px}}.section-layout{display:grid;gap:3rem}@media(min-width:992px){.section-layout{grid-template-columns:minmax(0,48rem)minmax(16rem,20rem);justify-content:space-between}}.section-aside__box{position:sticky;top:1.5rem;padding:1.25rem 1.25rem .75rem;border:1px solid var(--line);border-radius:.5rem;background:var(--paper)}.section-aside__title{margin:0 0 .75rem;font-size:1.0625rem;font-weight:600;color:var(--ink)}.section-aside__list{list-style:none;margin:0;padding:0}.section-aside__list li+li{border-top:1px solid var(--line)}.section-aside__link{display:grid;grid-template-columns:1.75rem minmax(0,1fr);gap:.25rem .5rem;padding:.7rem 0;color:var(--ink);text-decoration:none;line-height:1.35}.section-aside__link:hover .section-aside__name{color:var(--brand)}.section-aside__n{font-family:var(--font-mono);font-weight:600;color:var(--brand)}.section-aside__name{font-weight:500}.section-aside__count{grid-column:2;font-size:.8125rem;color:var(--muted)}.section-aside__link.is-current .section-aside__name{color:var(--brand);font-weight:600}@media(min-width:992px){.home-course__grid{display:grid;grid-template-columns:minmax(0,4fr)minmax(0,7fr);gap:4rem;align-items:start}.home-course__intro{position:sticky;top:2rem}.home-course .home-path{margin-top:.25rem}}.home-wrap.section-body{padding-top:2.5rem;padding-bottom:4rem}.pagination{display:inline-flex;border-radius:.25rem;border-width:1px}.dark .pagination{--tw-border-opacity:1;border-color:rgba(75,85,99,var(--tw-border-opacity))}.pagination{padding-left:.25rem;padding-right:.25rem}.page-item{margin-left:.125rem;margin-right:.125rem;margin-top:.25rem;margin-bottom:.25rem;cursor:pointer;border-radius:.25rem}.page-item:hover{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity))}.dark .page-item:hover{--tw-bg-opacity:1;background-color:rgba(107,114,128,var(--tw-bg-opacity))}.page-item{padding-left:.75rem;padding-right:.75rem;padding-top:.25rem;padding-bottom:.25rem}.page-item:hover{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.dark .page-item:hover{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.page-item.active{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity))}.dark .page-item.active{--tw-bg-opacity:1;background-color:rgba(209,213,219,var(--tw-bg-opacity))}.page-item.active{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.dark .page-item.active{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}.page-item.disabled{cursor:not-allowed}.page-item.disabled:hover{background-color:transparent}.page-item.disabled{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.page-item.disabled:hover{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.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}.absolute{position:absolute}.relative{position:relative}.sticky{position:sticky}.inset-x-0{left:0;right:0}.top-0{top:0}.top-8{top:2rem}.-top-10{top:-2.5rem}.top-full{top:100%}.right-0{right:0}.-right-9{right:-2.25rem}.-right-10{right:-2.5rem}.-bottom-7{bottom:-1.75rem}.left-0{left:0}.-left-7{left:-1.75rem}.left-1\/2{left:50%}.z-10{z-index:10}.z-20{z-index:20}.z-50{z-index:50}.col-start-1{grid-column-start:1}.col-end-9{grid-column-end:9}.-m-3{margin:-.75rem}.mx-auto{margin-left:auto;margin-right:auto}.-mx-4{margin-left:-1rem;margin-right:-1rem}.my-2{margin-top:.5rem;margin-bottom:.5rem}.my-3{margin-top:.75rem;margin-bottom:.75rem}.my-4{margin-top:1rem;margin-bottom:1rem}.my-6{margin-top:1.5rem;margin-bottom:1.5rem}.my-8{margin-top:2rem;margin-bottom:2rem}.my-10{margin-top:2.5rem;margin-bottom:2.5rem}.-my-2{margin-top:-.5rem;margin-bottom:-.5rem}.mt-1{margin-top:.25rem}.mt-2{margin-top:.5rem}.mt-3{margin-top:.75rem}.mt-4{margin-top:1rem}.mt-5{margin-top:1.25rem}.mt-6{margin-top:1.5rem}.mt-10{margin-top:2.5rem}.mt-12{margin-top:3rem}.mt-40{margin-top:10rem}.mr-2{margin-right:.5rem}.mr-3{margin-right:.75rem}.mr-4{margin-right:1rem}.mr-6{margin-right:1.5rem}.-mr-2{margin-right:-.5rem}.mb-1{margin-bottom:.25rem}.mb-2{margin-bottom:.5rem}.mb-3{margin-bottom:.75rem}.mb-4{margin-bottom:1rem}.mb-6{margin-bottom:1.5rem}.mb-8{margin-bottom:2rem}.mb-9{margin-bottom:2.25rem}.mb-10{margin-bottom:2.5rem}.mb-40{margin-bottom:10rem}.ml-2{margin-left:.5rem}.ml-3{margin-left:.75rem}.ml-4{margin-left:1rem}.ml-8{margin-left:2rem}.-ml-4{margin-left:-1rem}.block{display:block}.inline-block{display:inline-block}.inline{display:inline}.flex{display:flex}.inline-flex{display:inline-flex}.table{display:table}.flow-root{display:flow-root}.grid{display:grid}.contents{display:contents}.hidden{display:none}.h-5{height:1.25rem}.h-6{height:1.5rem}.h-8{height:2rem}.h-12{height:3rem}.h-14{height:3.5rem}.h-20{height:5rem}.h-56{height:14rem}.h-full{height:100%}.min-h-screen{min-height:100vh}.w-5{width:1.25rem}.w-6{width:1.5rem}.w-12{width:3rem}.w-20{width:5rem}.w-72{width:18rem}.w-auto{width:auto}.w-full{width:100%}.w-screen{width:100vw}.max-w-md{max-width:28rem}.max-w-2xl{max-width:42rem}.max-w-3xl{max-width:48rem}.max-w-4xl{max-width:56rem}.max-w-7xl{max-width:80rem}.flex-none{flex:none}.flex-shrink-0{flex-shrink:0}.flex-grow{flex-grow:1}.origin-top-right{transform-origin:top right}.transform{--tw-translate-x:0;--tw-translate-y:0;--tw-rotate:0;--tw-skew-x:0;--tw-skew-y:0;--tw-scale-x:1;--tw-scale-y:1;transform:translateX(var(--tw-translate-x))translateY(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))}.-translate-x-1\/2{--tw-translate-x:-50%}.translate-y-0{--tw-translate-y:0px}.translate-y-1{--tw-translate-y:0.25rem}.scale-95{--tw-scale-x:.95;--tw-scale-y:.95}.scale-100{--tw-scale-x:1;--tw-scale-y:1}.hover\:scale-105:hover{--tw-scale-x:1.05;--tw-scale-y:1.05}@-webkit-keyframes spin{to{transform:rotate(360deg)}}@keyframes spin{to{transform:rotate(360deg)}}@-webkit-keyframes ping{75%,100%{transform:scale(2);opacity:0}}@keyframes ping{75%,100%{transform:scale(2);opacity:0}}@-webkit-keyframes pulse{50%{opacity:.5}}@keyframes pulse{50%{opacity:.5}}@-webkit-keyframes bounce{0%,100%{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}@keyframes bounce{0%,100%{transform:translateY(-25%);-webkit-animation-timing-function:cubic-bezier(.8,0,1,1);animation-timing-function:cubic-bezier(.8,0,1,1)}50%{transform:none;-webkit-animation-timing-function:cubic-bezier(0,0,.2,1);animation-timing-function:cubic-bezier(0,0,.2,1)}}.cursor-pointer{cursor:pointer}.grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.grid-cols-6{grid-template-columns:repeat(6,minmax(0,1fr))}.flex-col{flex-direction:column}.flex-col-reverse{flex-direction:column-reverse}.flex-wrap{flex-wrap:wrap}.place-items-center{place-items:center}.content-center{align-content:center}.items-start{align-items:flex-start}.items-center{align-items:center}.justify-start{justify-content:flex-start}.justify-end{justify-content:flex-end}.justify-center{justify-content:center}.justify-between{justify-content:space-between}.gap-2{gap:.5rem}.gap-4{gap:1rem}.gap-6{gap:1.5rem}.gap-8{gap:2rem}.gap-16{gap:4rem}.gap-x-8{-moz-column-gap:2rem;column-gap:2rem}.gap-y-4{row-gap:1rem}.gap-y-8{row-gap:2rem}.space-y-4>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1rem * var(--tw-space-y-reverse))}.space-y-6>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(1.5rem * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(1.5rem * var(--tw-space-y-reverse))}.divide-y-2>:not([hidden])~:not([hidden]){--tw-divide-y-reverse:0;border-top-width:calc(2px * calc(1 - var(--tw-divide-y-reverse)));border-bottom-width:calc(2px * var(--tw-divide-y-reverse))}.divide-gray-50>:not([hidden])~:not([hidden]){--tw-divide-opacity:1;border-color:rgba(249,250,251,var(--tw-divide-opacity))}.overflow-hidden{overflow:hidden}.truncate{overflow:hidden;text-overflow:ellipsis;white-space:nowrap}.whitespace-nowrap{white-space:nowrap}.rounded{border-radius:.25rem}.rounded-md{border-radius:.375rem}.rounded-lg{border-radius:.5rem}.rounded-xl{border-radius:.75rem}.rounded-full{border-radius:9999px}.border-2{border-width:2px}.border{border-width:1px}.border-t-4{border-top-width:4px}.border-t{border-top-width:1px}.border-b-2{border-bottom-width:2px}.border-transparent{border-color:transparent}.border-white{--tw-border-opacity:1;border-color:rgba(255,255,255,var(--tw-border-opacity))}.border-gray-100{--tw-border-opacity:1;border-color:rgba(243,244,246,var(--tw-border-opacity))}.border-gray-200{--tw-border-opacity:1;border-color:rgba(229,231,235,var(--tw-border-opacity))}.border-gray-300{--tw-border-opacity:1;border-color:rgba(209,213,219,var(--tw-border-opacity))}.border-red-100{--tw-border-opacity:1;border-color:rgba(254,226,226,var(--tw-border-opacity))}.border-blue-100{--tw-border-opacity:1;border-color:rgba(219,234,254,var(--tw-border-opacity))}.border-blue-300{--tw-border-opacity:1;border-color:rgba(147,197,253,var(--tw-border-opacity))}.border-indigo-100{--tw-border-opacity:1;border-color:rgba(224,231,255,var(--tw-border-opacity))}.hover\:border-gray-800:hover{--tw-border-opacity:1;border-color:rgba(31,41,55,var(--tw-border-opacity))}.dark .dark\:border-transparent{border-color:transparent}.dark .dark\:border-gray-100{--tw-border-opacity:1;border-color:rgba(243,244,246,var(--tw-border-opacity))}.dark .dark\:border-gray-600{--tw-border-opacity:1;border-color:rgba(75,85,99,var(--tw-border-opacity))}.dark .dark\:border-gray-700{--tw-border-opacity:1;border-color:rgba(55,65,81,var(--tw-border-opacity))}.dark .dark\:border-blue-300{--tw-border-opacity:1;border-color:rgba(147,197,253,var(--tw-border-opacity))}.dark .dark\:hover\:border-gray-300:hover{--tw-border-opacity:1;border-color:rgba(209,213,219,var(--tw-border-opacity))}.bg-white{--tw-bg-opacity:1;background-color:rgba(255,255,255,var(--tw-bg-opacity))}.bg-gray-50{--tw-bg-opacity:1;background-color:rgba(249,250,251,var(--tw-bg-opacity))}.bg-gray-100{--tw-bg-opacity:1;background-color:rgba(243,244,246,var(--tw-bg-opacity))}.bg-red-50{--tw-bg-opacity:1;background-color:rgba(254,242,242,var(--tw-bg-opacity))}.bg-blue-50{--tw-bg-opacity:1;background-color:rgba(239,246,255,var(--tw-bg-opacity))}.bg-indigo-50{--tw-bg-opacity:1;background-color:rgba(238,242,255,var(--tw-bg-opacity))}.bg-indigo-100{--tw-bg-opacity:1;background-color:rgba(224,231,255,var(--tw-bg-opacity))}.bg-indigo-200{--tw-bg-opacity:1;background-color:rgba(199,210,254,var(--tw-bg-opacity))}.bg-indigo-600{--tw-bg-opacity:1;background-color:rgba(79,70,229,var(--tw-bg-opacity))}.bg-pink-50{--tw-bg-opacity:1;background-color:rgba(253,242,248,var(--tw-bg-opacity))}.hover\:bg-gray-200:hover{--tw-bg-opacity:1;background-color:rgba(229,231,235,var(--tw-bg-opacity))}.hover\:bg-indigo-50:hover{--tw-bg-opacity:1;background-color:rgba(238,242,255,var(--tw-bg-opacity))}.hover\:bg-indigo-100:hover{--tw-bg-opacity:1;background-color:rgba(224,231,255,var(--tw-bg-opacity))}.hover\:bg-indigo-200:hover{--tw-bg-opacity:1;background-color:rgba(199,210,254,var(--tw-bg-opacity))}.hover\:bg-indigo-700:hover{--tw-bg-opacity:1;background-color:rgba(67,56,202,var(--tw-bg-opacity))}.dark .dark\:bg-gray-700{--tw-bg-opacity:1;background-color:rgba(55,65,81,var(--tw-bg-opacity))}.dark .dark\:bg-gray-800{--tw-bg-opacity:1;background-color:rgba(31,41,55,var(--tw-bg-opacity))}.dark .dark\:bg-gray-900{--tw-bg-opacity:1;background-color:rgba(17,24,39,var(--tw-bg-opacity))}.dark .dark\:hover\:bg-gray-600:hover{--tw-bg-opacity:1;background-color:rgba(75,85,99,var(--tw-bg-opacity))}.dark .dark\:hover\:bg-gray-700:hover{--tw-bg-opacity:1;background-color:rgba(55,65,81,var(--tw-bg-opacity))}.dark .dark\:hover\:bg-indigo-600:hover{--tw-bg-opacity:1;background-color:rgba(79,70,229,var(--tw-bg-opacity))}.fill-current{fill:currentColor}.object-contain{-o-object-fit:contain;object-fit:contain}.p-1{padding:.25rem}.p-2{padding:.5rem}.p-3{padding:.75rem}.p-4{padding:1rem}.p-6{padding:1.5rem}.p-8{padding:2rem}.p-12{padding:3rem}.px-2{padding-left:.5rem;padding-right:.5rem}.px-3{padding-left:.75rem;padding-right:.75rem}.px-4{padding-left:1rem;padding-right:1rem}.px-5{padding-left:1.25rem;padding-right:1.25rem}.px-6{padding-left:1.5rem;padding-right:1.5rem}.px-8{padding-left:2rem;padding-right:2rem}.py-1{padding-top:.25rem;padding-bottom:.25rem}.py-2{padding-top:.5rem;padding-bottom:.5rem}.py-3{padding-top:.75rem;padding-bottom:.75rem}.py-4{padding-top:1rem;padding-bottom:1rem}.py-5{padding-top:1.25rem;padding-bottom:1.25rem}.py-6{padding-top:1.5rem;padding-bottom:1.5rem}.py-8{padding-top:2rem;padding-bottom:2rem}.py-10{padding-top:2.5rem;padding-bottom:2.5rem}.py-12{padding-top:3rem;padding-bottom:3rem}.py-16{padding-top:4rem;padding-bottom:4rem}.py-20{padding-top:5rem;padding-bottom:5rem}.py-24{padding-top:6rem;padding-bottom:6rem}.pt-1{padding-top:.25rem}.pt-3{padding-top:.75rem}.pt-5{padding-top:1.25rem}.pt-6{padding-top:1.5rem}.pt-10{padding-top:2.5rem}.pr-3{padding-right:.75rem}.pb-6{padding-bottom:1.5rem}.pb-8{padding-bottom:2rem}.pb-10{padding-bottom:2.5rem}.pb-12{padding-bottom:3rem}.pl-3{padding-left:.75rem}.pl-4{padding-left:1rem}.text-center{text-align:center}.text-xs{font-size:.75rem;line-height:1rem}.text-sm{font-size:.875rem;line-height:1.25rem}.text-base{font-size:1rem;line-height:1.5rem}.text-lg{font-size:1.125rem;line-height:1.75rem}.text-xl{font-size:1.25rem;line-height:1.75rem}.text-2xl{font-size:1.5rem;line-height:2rem}.text-4xl{font-size:2.25rem;line-height:2.5rem}.font-light{font-weight:300}.font-medium{font-weight:500}.font-semibold{font-weight:600}.font-bold{font-weight:700}.font-extrabold{font-weight:800}.uppercase{text-transform:uppercase}.capitalize{text-transform:capitalize}.leading-relaxed{line-height:1.625}.tracking-tight{letter-spacing:-.025em}.text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.text-gray-700{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.text-gray-800{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.text-gray-900{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}.text-red-400{--tw-text-opacity:1;color:rgba(248,113,113,var(--tw-text-opacity))}.text-blue-400{--tw-text-opacity:1;color:rgba(96,165,250,var(--tw-text-opacity))}.text-blue-600{--tw-text-opacity:1;color:rgba(37,99,235,var(--tw-text-opacity))}.text-indigo-400{--tw-text-opacity:1;color:rgba(129,140,248,var(--tw-text-opacity))}.text-indigo-600{--tw-text-opacity:1;color:rgba(79,70,229,var(--tw-text-opacity))}.text-indigo-700{--tw-text-opacity:1;color:rgba(67,56,202,var(--tw-text-opacity))}.group:hover .group-hover\:text-gray-500{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.hover\:text-gray-500:hover{--tw-text-opacity:1;color:rgba(107,114,128,var(--tw-text-opacity))}.hover\:text-gray-600:hover{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.hover\:text-gray-700:hover{--tw-text-opacity:1;color:rgba(55,65,81,var(--tw-text-opacity))}.hover\:text-gray-800:hover{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.hover\:text-gray-900:hover{--tw-text-opacity:1;color:rgba(17,24,39,var(--tw-text-opacity))}.hover\:text-blue-400:hover{--tw-text-opacity:1;color:rgba(96,165,250,var(--tw-text-opacity))}.hover\:text-indigo-500:hover{--tw-text-opacity:1;color:rgba(99,102,241,var(--tw-text-opacity))}.dark .dark\:text-black{--tw-text-opacity:1;color:rgba(0,0,0,var(--tw-text-opacity))}.dark .dark\:text-white{--tw-text-opacity:1;color:rgba(255,255,255,var(--tw-text-opacity))}.dark .dark\:text-gray-200{--tw-text-opacity:1;color:rgba(229,231,235,var(--tw-text-opacity))}.dark .dark\:text-gray-300{--tw-text-opacity:1;color:rgba(209,213,219,var(--tw-text-opacity))}.dark .dark\:text-gray-400{--tw-text-opacity:1;color:rgba(156,163,175,var(--tw-text-opacity))}.dark .dark\:text-gray-600{--tw-text-opacity:1;color:rgba(75,85,99,var(--tw-text-opacity))}.dark .dark\:text-gray-800{--tw-text-opacity:1;color:rgba(31,41,55,var(--tw-text-opacity))}.dark .dark\:text-indigo-300{--tw-text-opacity:1;color:rgba(165,180,252,var(--tw-text-opacity))}.dark .dark\:text-indigo-600{--tw-text-opacity:1;color:rgba(79,70,229,var(--tw-text-opacity))}.dark .dark\:hover\:text-gray-200:hover{--tw-text-opacity:1;color:rgba(229,231,235,var(--tw-text-opacity))}.dark .dark\:hover\:text-gray-300:hover{--tw-text-opacity:1;color:rgba(209,213,219,var(--tw-text-opacity))}.no-underline{text-decoration:none}.hover\:underline:hover{text-decoration:underline}.opacity-0{opacity:0}.opacity-60{opacity:.6}.opacity-100{opacity:1}*,::before,::after{--tw-shadow:0 0 #0000}.shadow-sm{--tw-shadow:0 1px 2px 0 rgba(0, 0, 0, 0.05);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow{--tw-shadow:0 1px 3px 0 rgba(0, 0, 0, 0.1), 0 1px 2px 0 rgba(0, 0, 0, 0.06);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.shadow-lg{--tw-shadow:0 10px 15px -3px rgba(0, 0, 0, 0.1), 0 4px 6px -2px rgba(0, 0, 0, 0.05);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.hover\:shadow-xl:hover{--tw-shadow:0 20px 25px -5px rgba(0, 0, 0, 0.1), 0 10px 10px -5px rgba(0, 0, 0, 0.04);box-shadow:var(--tw-ring-offset-shadow,0 0 #0000),var(--tw-ring-shadow,0 0 #0000),var(--tw-shadow)}.focus\:outline-none:focus{outline:2px solid transparent;outline-offset:2px}*,::before,::after{--tw-ring-inset:var(--tw-empty,/*!*/ /*!*/);--tw-ring-offset-width:0px;--tw-ring-offset-color:#fff;--tw-ring-color:rgba(59, 130, 246, 0.5);--tw-ring-offset-shadow:0 0 #0000;--tw-ring-shadow:0 0 #0000}.ring-1{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(1px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.focus\:ring-2:focus{--tw-ring-offset-shadow:var(--tw-ring-inset) 0 0 0 var(--tw-ring-offset-width) var(--tw-ring-offset-color);--tw-ring-shadow:var(--tw-ring-inset) 0 0 0 calc(2px + var(--tw-ring-offset-width)) var(--tw-ring-color);box-shadow:var(--tw-ring-offset-shadow),var(--tw-ring-shadow),var(--tw-shadow,0 0 #0000)}.ring-black{--tw-ring-opacity:1;--tw-ring-color:rgba(0, 0, 0, var(--tw-ring-opacity))}.focus\:ring-indigo-700:focus{--tw-ring-opacity:1;--tw-ring-color:rgba(67, 56, 202, var(--tw-ring-opacity))}.ring-opacity-5{--tw-ring-opacity:0.05}.focus\:ring-opacity-50:focus{--tw-ring-opacity:0.5}.filter{--tw-blur:var(--tw-empty,/*!*/ /*!*/);--tw-brightness:var(--tw-empty,/*!*/ /*!*/);--tw-contrast:var(--tw-empty,/*!*/ /*!*/);--tw-grayscale:var(--tw-empty,/*!*/ /*!*/);--tw-hue-rotate:var(--tw-empty,/*!*/ /*!*/);--tw-invert:var(--tw-empty,/*!*/ /*!*/);--tw-saturate:var(--tw-empty,/*!*/ /*!*/);--tw-sepia:var(--tw-empty,/*!*/ /*!*/);--tw-drop-shadow:var(--tw-empty,/*!*/ /*!*/);filter:var(--tw-blur)var(--tw-brightness)var(--tw-contrast)var(--tw-grayscale)var(--tw-hue-rotate)var(--tw-invert)var(--tw-saturate)var(--tw-sepia)var(--tw-drop-shadow)}.blur{--tw-blur:blur(8px)}.transition{transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,-webkit-backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter;transition-property:background-color,border-color,color,fill,stroke,opacity,box-shadow,transform,filter,backdrop-filter,-webkit-backdrop-filter;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.transition-colors{transition-property:background-color,border-color,color,fill,stroke;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:150ms}.duration-100{transition-duration:100ms}.duration-150{transition-duration:150ms}.duration-200{transition-duration:200ms}.duration-300{transition-duration:300ms}.ease-in{transition-timing-function:cubic-bezier(.4,0,1,1)}.ease-out{transition-timing-function:cubic-bezier(0,0,.2,1)}.dark .dark\:hover\:bg-gray-900:hover{--tw-bg-opacity:1;background-color:rgba(17,24,39,var(--tw-bg-opacity))}@media(min-width:992px){.lg\:prose-lg>ol>li>*:first-child{margin-top:0}}code{border-radius:4px;padding:.1em .35em;font-family:var(--font-mono)!important;font-size:.875em;background:var(--surface);border:1px solid var(--line)}.prose code::before,.prose code::after{content:""}@media(min-width:1024px){.lg\:prose-lg code{font-size:1em}}.mega-menu{display:none;left:0;position:absolute;text-align:left;width:100%}.hoverable{position:static}.hoverable:hover .mega-menu{display:block}.read-more{font-weight:600;color:#18a7f5;font-size:15px;margin-bottom:0}.read-more:after{font-size:15px;content:"\2192";line-height:1.5;margin-left:5px;margin-top:5px}.bread{color:rgba(156,163,175,var(--tw-text-opacity))!important;text-decoration:none!important}.bread:hover{color:rgba(96,165,250,var(--tw-text-opacity))!important;text-decoration:none!important}.breadcrumb-element::before{display:inline-block;padding-right:.25rem;content:"▸"}@media(min-width:640px){.w-fixed{flex:0 1 300px;min-width:300px}}.social-buttons{display:flex;flex-wrap:wrap;justify-content:center;margin-top:-10px}.social-buttons__button{margin:10px 5px 0}.social-button{position:relative;display:flex;justify-content:center;align-items:center;width:70px;height:70px;text-decoration:none}.social-button__inner{position:relative;display:flex;align-items:center;justify-content:center;width:calc(100% - 2px);height:calc(100% - 2px);border-radius:25%;background:#fff;border:5px solid #eff6ff;text-align:center}.social-button i,.social-button svg{position:relative;z-index:1;transition:.3s}.social-button svg{height:40%;width:40%}.social-button::after{content:"";position:absolute;top:0;left:50%;display:block;width:0;height:0;border-radius:25%;transition:.3s}.social-button:hover{color:#fff}.social-button:hover::after{width:100%;height:100%;margin-left:-50%}.social-button--facebook{color:#3b5999}.social-button--facebook::after{background:#3b5999}.social-button--github{color:#000}.social-button--github::after{background:#000}.social-button--twitter{color:#55acee}.social-button--twitter::after{background:#55acee}.katex{font:18px KaTeX_Main,Times New Roman,serif}@media(max-width:600px){.katex{font:16px KaTeX_Main,Times New Roman,serif}}.box p,.box-2 p:not(.read-more){font-size:17px;margin-top:10px;overflow:auto}.box,.box-2{border-radius:5px;padding:10px 30px 30px;margin:20px}.box-3{border-radius:5px;padding:10px;margin:20px}@media(max-width:950px) and (min-width:450px){.box,.box-2,.box-3{text-align:center}}.example-title{color:#4c4e61;font-weight:600;font-size:22px}@media(min-width:950px){.box-down{position:relative}.box,.box-2,.box-3{width:100%;margin-left:auto;margin-right:auto}.box-2,.box-3{width:100%}.box-3{height:100%;text-align:center;display:flex;justify-content:center;align-content:center;flex-direction:column;border-top:0}}.ex-icon{float:right;margin-top:0!important;margin-bottom:0!important}.dropdown:hover .dropdown-menu{display:block}.toc-list-item{padding:.15rem;border-radius:.25rem}@media(min-width:640px){.is-active-link::before{background-color:#4f46e5!important}}@media(max-width:640px){.is-active-link::before{background-color:#fff!important}}a.toc-link{font-size:1.125rem}.prose a:not(.bread){color:var(--brand)!important;text-underline-offset:.15em}@media(min-width:640px){.hide{height:0}}@media(max-width:640px){.h1-title{font-size:2.2em;margin-top:0;margin-bottom:.3333333em!important;line-height:1}}.page-item{box-sizing:border-box}.page-item.active{background-color:#4f46e5}.page-item:not(.active):not(.disabled):hover{background-color:#fff;color:#4f46e5}.page-item{padding:0}.page-item a{padding-left:.75rem;padding-right:.75rem;padding-top:.25rem;padding-bottom:.25rem;display:inline-block}.search-ui{bottom:0;left:0;right:0;top:0;overflow:scroll;position:fixed}body.compensate{overflow:hidden}.compensate{margin-right:17px}.prose a button{color:#fff!important}#button{width:50px;height:50px;text-align:center;border-radius:4px;position:fixed;bottom:30px;right:30px;transition:background-color .3s,opacity .5s,visibility .5s;opacity:1;z-index:49;box-shadow:1px 3px 6px rgb(0 0 0/.2)}.logo{display:block;width:auto;height:auto;max-width:120px;max-height:55px}@media(max-width:640px){.logo{max-height:40px}}img{margin:auto}table{display:block;max-width:-moz-fit-content;max-width:-webkit-fit-content;max-width:fit-content;margin:0 auto;overflow-x:auto;white-space:nowrap;border:1px solid var(--line);border-radius:.5rem;background:var(--paper);font-size:.9375em;font-variant-numeric:tabular-nums}thead{background-color:#2e3440}thead tr{color:#fff}tr{color:var(--muted)}tbody tr+tr td{border-top:1px solid var(--line)}thead th{padding:.6rem .9rem!important;font-weight:600}th,td{padding:.55rem .9rem!important;text-align:left;vertical-align:middle}.cardh a{text-decoration:none!important}.cardh p{margin-top:0;margin-bottom:0}@media(min-width:1280px){.xl\:inline{display:inline}}.prose a button{color:rgba(243,244,246,var(--tw-text-opacity));text-decoration:none;font-weight:400}.prose sup{color:rgba(243,244,246,var(--tw-text-opacity));text-decoration:none;font-weight:400;font-size:50%;top:-.85em}.lg\:prose-lg h1{font-size:2.6666667em;margin-top:0;margin-bottom:.3333333em!important;line-height:1}.highlight-wrapper{display:block}.highlight{position:relative;z-index:0;padding:0;margin:0;border-radius:4px}.highlight>.chroma{color:#d0d0d0;background-color:#212121;position:static;z-index:1;border-radius:4px;padding:10px}.chroma{overflow:auto}.chroma .lntable{display:table;width:100%;padding:0 0 5px;margin:0;border-spacing:0;border:0;overflow:auto}.chroma .lntd:first-child{padding:7px 7px 7px 10px;margin:0}.chroma .lntd:last-child{padding:7px 10px 7px 7px;margin:0}.copy-code-button{position:absolute;z-index:2;right:0;top:0;font-size:13px;font-weight:700;line-height:14px;width:65px;color:#232326;background-color:#7f7f7f;border:1.25px solid #232326;border-top-left-radius:0;border-top-right-radius:4px;border-bottom-right-radius:0;border-bottom-left-radius:4px;white-space:nowrap;padding:4px 4px 5px;margin:0 0 0 1px;cursor:pointer;opacity:.6}.copy-code-button:hover,.copy-code-button:focus,.copy-code-button:active,.copy-code-button:active:hover{color:#222225;background-color:#b3b3b3;opacity:.8}.copyable-text-area{position:absolute;height:0;z-index:-1;opacity:.01}@media(min-width:640px){.sm\:mx-auto{margin-left:auto;margin-right:auto}.sm\:my-10{margin-top:2.5rem;margin-bottom:2.5rem}.sm\:mt-0{margin-top:0}.sm\:mt-5{margin-top:1.25rem}.sm\:mt-8{margin-top:2rem}.sm\:mt-10{margin-top:2.5rem}.sm\:mt-12{margin-top:3rem}.sm\:ml-3{margin-left:.75rem}.sm\:block{display:block}.sm\:inline{display:inline}.sm\:flex{display:flex}.sm\:h-72{height:18rem}.sm\:w-full{width:100%}.sm\:max-w-xl{max-width:36rem}.sm\:grid-cols-1{grid-template-columns:repeat(1,minmax(0,1fr))}.sm\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.sm\:flex-row{flex-direction:row}.sm\:flex-col{flex-direction:column}.sm\:flex-nowrap{flex-wrap:nowrap}.sm\:items-center{align-items:center}.sm\:justify-center{justify-content:center}.sm\:justify-between{justify-content:space-between}.sm\:gap-6{gap:1.5rem}.sm\:gap-8{gap:2rem}.sm\:space-x-4>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(1rem * var(--tw-space-x-reverse));margin-left:calc(1rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.5rem * var(--tw-space-x-reverse));margin-left:calc(2.5rem * calc(1 - var(--tw-space-x-reverse)))}.sm\:space-y-0>:not([hidden])~:not([hidden]){--tw-space-y-reverse:0;margin-top:calc(0px * calc(1 - var(--tw-space-y-reverse)));margin-bottom:calc(0px * var(--tw-space-y-reverse))}.sm\:p-6{padding:1.5rem}.sm\:p-8{padding:2rem}.sm\:p-12{padding:3rem}.sm\:px-0{padding-left:0;padding-right:0}.sm\:px-6{padding-left:1.5rem;padding-right:1.5rem}.sm\:px-8{padding-left:2rem;padding-right:2rem}.sm\:py-8{padding-top:2rem;padding-bottom:2rem}.sm\:pr-8{padding-right:2rem}.sm\:pb-16{padding-bottom:4rem}.sm\:text-center{text-align:center}.sm\:text-lg{font-size:1.125rem;line-height:1.75rem}.sm\:text-2xl{font-size:1.5rem;line-height:2rem}.sm\:text-5xl{font-size:3rem;line-height:1}}@media(min-width:768px){.md\:mx-0{margin-left:0;margin-right:0}.md\:mt-5{margin-top:1.25rem}.md\:mt-16{margin-top:4rem}.md\:mb-0{margin-bottom:0}.md\:flex{display:flex}.md\:hidden{display:none}.md\:h-96{height:24rem}.md\:flex-1{flex:1}.md\:grid-cols-2{grid-template-columns:repeat(2,minmax(0,1fr))}.md\:justify-start{justify-content:flex-start}.md\:justify-between{justify-content:space-between}.md\:gap-28{gap:7rem}.md\:space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.5rem * var(--tw-space-x-reverse));margin-left:calc(2.5rem * calc(1 - var(--tw-space-x-reverse)))}.md\:p-10{padding:2.5rem}.md\:px-10{padding-left:2.5rem;padding-right:2.5rem}.md\:px-44{padding-left:11rem;padding-right:11rem}.md\:py-4{padding-top:1rem;padding-bottom:1rem}.md\:py-20{padding-top:5rem;padding-bottom:5rem}.md\:pb-20{padding-bottom:5rem}.md\:text-lg{font-size:1.125rem;line-height:1.75rem}.md\:text-xl{font-size:1.25rem;line-height:1.75rem}.md\:text-5xl{font-size:3rem;line-height:1}.md\:text-6xl{font-size:3.75rem;line-height:1}}@media(min-width:992px){.lg\:prose-lg{font-size:1.125rem;line-height:1.7777778}.lg\:prose-lg p{margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\:prose-lg [class~=lead]{font-size:1.2222222em;line-height:1.4545455;margin-top:1.0909091em;margin-bottom:1.0909091em}.lg\:prose-lg blockquote{margin-top:1.6666667em;margin-bottom:1.6666667em;padding-left:1em}.lg\:prose-lg h1{font-size:2.6666667em;margin-top:0;margin-bottom:.8333333em;line-height:1}.lg\:prose-lg h2{font-size:1.6666667em;margin-top:1.8666667em;margin-bottom:1.0666667em;line-height:1.3333333}.lg\:prose-lg h3{font-size:1.3333333em;margin-top:1.6666667em;margin-bottom:.6666667em;line-height:1.5}.lg\:prose-lg h4{margin-top:1.7777778em;margin-bottom:.4444444em;line-height:1.5555556}.lg\:prose-lg img{margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\:prose-lg video{margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\:prose-lg figure{margin-top:1.7777778em;margin-bottom:1.7777778em}.lg\:prose-lg figure>*{margin-top:0;margin-bottom:0}.lg\:prose-lg figure figcaption{font-size:.8888889em;line-height:1.5;margin-top:1em}.lg\:prose-lg code{font-size:.8888889em}.lg\:prose-lg h2 code{font-size:.8666667em}.lg\:prose-lg h3 code{font-size:.875em}.lg\:prose-lg pre{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 ol{margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\:prose-lg ul{margin-top:1.3333333em;margin-bottom:1.3333333em}.lg\:prose-lg li{margin-top:.6666667em;margin-bottom:.6666667em}.lg\:prose-lg ol>li{padding-left:1.6666667em}.lg\:prose-lg ol>li::before{left:0}.lg\:prose-lg ul>li{padding-left:1.6666667em}.lg\:prose-lg ul>li::before{width:.3333333em;height:.3333333em;top:calc(.8888889em - .1666667em);left:.2222222em}.lg\:prose-lg>ul>li p{margin-top:.8888889em;margin-bottom:.8888889em}.lg\:prose-lg>ul>li>*:first-child{margin-top:1.3333333em}.lg\:prose-lg>ul>li>*:last-child{margin-bottom:1.3333333em}.lg\:prose-lg>ol>li>*:first-child{margin-top:1.3333333em}.lg\:prose-lg>ol>li>*:last-child{margin-bottom:1.3333333em}.lg\:prose-lg ul ul,.lg\:prose-lg ul ol,.lg\:prose-lg ol ul,.lg\:prose-lg ol ol{margin-top:.8888889em;margin-bottom:.8888889em}.lg\:prose-lg hr{margin-top:3.1111111em;margin-bottom:3.1111111em}.lg\:prose-lg hr+*{margin-top:0}.lg\:prose-lg h2+*{margin-top:0}.lg\:prose-lg h3+*{margin-top:0}.lg\:prose-lg h4+*{margin-top:0}.lg\:prose-lg table{font-size:.8888889em;line-height:1.5}.lg\:prose-lg thead th{padding-right:.75em;padding-bottom:.75em;padding-left:.75em}.lg\:prose-lg thead th:first-child{padding-left:0}.lg\:prose-lg thead th:last-child{padding-right:0}.lg\:prose-lg tbody td{padding-top:.75em;padding-right:.75em;padding-bottom:.75em;padding-left:.75em}.lg\:prose-lg tbody td:first-child{padding-left:0}.lg\:prose-lg tbody td:last-child{padding-right:0}.lg\:prose-lg>:first-child{margin-top:0}.lg\:prose-lg>:last-child{margin-bottom:0}.lg\:absolute{position:absolute}.lg\:inset-y-0{top:0;bottom:0}.lg\:right-0{right:0}.lg\:left-1\/2{left:50%}.lg\:mx-0{margin-left:0;margin-right:0}.lg\:my-8{margin-top:2rem;margin-bottom:2rem}.lg\:mt-20{margin-top:5rem}.lg\:mb-11{margin-bottom:2.75rem}.lg\:ml-0{margin-left:0}.lg\:ml-8{margin-left:2rem}.lg\:ml-10{margin-left:2.5rem}.lg\:flex{display:flex}.lg\:h-full{height:100%}.lg\:w-0{width:0}.lg\:w-auto{width:auto}.lg\:w-1\/2{width:50%}.lg\:w-full{width:100%}.lg\:max-w-md{max-width:28rem}.lg\:flex-1{flex:1}.lg\:-translate-x-1\/2{--tw-translate-x:-50%}.lg\:grid-cols-3{grid-template-columns:repeat(3,minmax(0,1fr))}.lg\:grid-cols-5{grid-template-columns:repeat(5,minmax(0,1fr))}.lg\:flex-row{flex-direction:row}.lg\:items-center{align-items:center}.lg\:justify-start{justify-content:flex-start}.lg\:justify-between{justify-content:space-between}.lg\:gap-8{gap:2rem}.lg\:space-x-10>:not([hidden])~:not([hidden]){--tw-space-x-reverse:0;margin-right:calc(2.5rem * var(--tw-space-x-reverse));margin-left:calc(2.5rem * calc(1 - var(--tw-space-x-reverse)))}.lg\:px-0{padding-left:0;padding-right:0}.lg\:px-8{padding-left:2rem;padding-right:2rem}.lg\:px-24{padding-left:6rem;padding-right:6rem}.lg\:py-12{padding-top:3rem;padding-bottom:3rem}.lg\:py-24{padding-top:6rem;padding-bottom:6rem}.lg\:pb-0{padding-bottom:0}.lg\:pb-28{padding-bottom:7rem}.lg\:text-left{text-align:left}.lg\:text-xl{font-size:1.25rem;line-height:1.75rem}}@media(min-width:1280px){.xl\:mt-28{margin-top:7rem}.xl\:ml-8{margin-left:2rem}.xl\:w-1\/2{width:50%}.xl\:w-full{width:100%}.xl\:max-w-2xl{max-width:42rem}.xl\:grid-cols-4{grid-template-columns:repeat(4,minmax(0,1fr))}.xl\:px-0{padding-left:0;padding-right:0}.xl\:pt-24{padding-top:6rem}.xl\:pb-32{padding-bottom:8rem}}@media(min-width:1536px){}