:root,:root.dark{--colorBackground: #000000;--colorBackgroundSecondary: #0a0a0a;--colorText: #ffffff;--colorTextSecondary: #d4d4d4;--colorTextTertiary: #a3a3a3;--colorPrimary: #00ff69;--colorPrimaryDark: #5dffa4;--colorPrimaryLight: #b9ffdf;--colorBorder: #404040;--colorBorderLight: #262626;--boxBg: transparent;--boxBorder: #00ff69;--redBoxBg: #2a1212;--redBoxBorder: #ff6b6b;--yellowBoxBg: #2a2510;--yellowBoxBorder: #ffd93d;--greenBoxBg: #122a18;--greenBoxBorder: #51cf66;--blueBoxBg: #0c1e2a;--blueBoxBorder: #339af0;--orangeBoxBg: #2a1e0a;--orangeBoxBorder: #f59f00}:root.light{--colorBackground: #ffffff;--colorBackgroundSecondary: #f5fff5;--colorText: #000000;--colorTextSecondary: #131313;--colorTextTertiary: #404040;--colorPrimary: #00cc54;--colorPrimaryDark: #00994d;--colorPrimaryLight: #00ff69;--colorBorder: #d4d4d4;--colorBorderLight: #e5e5e5;--boxBg: transparent;--boxBorder: #00cc54;--redBoxBg: #ff6b6b;--redBoxBorder: #c92a2a;--yellowBoxBg: #ffd93d;--yellowBoxBorder: #f59f00;--greenBoxBg: #51cf66;--greenBoxBorder: #2f9e44;--blueBoxBg: #e7f5ff;--blueBoxBorder: #339af0;--orangeBoxBg: #fff3bf;--orangeBoxBorder: #f59f00}@media(prefers-color-scheme:light){:root:not(.dark):not(.light){--colorBackground: #ffffff;--colorBackgroundSecondary: #f5fff5;--colorText: #000000;--colorTextSecondary: #131313;--colorTextTertiary: #404040;--colorPrimary: #00cc54;--colorPrimaryDark: #00994d;--colorPrimaryLight: #00ff69;--colorBorder: #d4d4d4;--colorBorderLight: #e5e5e5}}@font-face{font-family:Karma;src:url(/fonts/Karma-Light.ttf) format("truetype");font-weight:300;font-style:normal}@font-face{font-family:Karma;src:url(/fonts/Karma-Regular.ttf) format("truetype");font-weight:400;font-style:normal}@font-face{font-family:Karma;src:url(/fonts/Karma-Medium.ttf) format("truetype");font-weight:500;font-style:normal}@font-face{font-family:Montserrat;src:url(/fonts/Montserrat-Regular.otf) format("opentype");font-weight:400;font-style:normal}@font-face{font-family:Montserrat;src:url(/fonts/Montserrat-Medium.otf) format("opentype");font-weight:500;font-style:normal}@font-face{font-family:Source Code Pro;src:url(/fonts/SourceCodePro-Regular.ttf) format("truetype");font-weight:400;font-style:normal}*{margin:0;padding:0;box-sizing:border-box}html{font-family:Karma,-apple-system,BlinkMacSystemFont,Segoe UI,serif;background-color:var(--colorBackground);color:var(--colorText);line-height:1.6}body{min-height:100vh;overflow-x:hidden}a{color:var(--colorPrimary);text-decoration:none;transition:color .2s ease}a:hover{color:var(--colorPrimaryDark)}h1,h2,h3,h4,h5,h6{font-family:Montserrat,sans-serif;font-weight:400;line-height:1.2;margin-top:1.5em;margin-bottom:.5em;clear:both}h1{font-size:2.5rem;color:var(--colorText);border-bottom:1px solid var(--colorBorderLight);padding-bottom:.5rem}h2{font-size:2rem;color:var(--colorText)}h3{font-size:1.5rem;color:var(--colorTextSecondary)}p{margin:1em 0;color:var(--colorText)}code{font-family:Source Code Pro,monospace;padding:.2em;border-radius:0;font-size:.95em}pre{padding:1rem;border-radius:8px;overflow-x:auto;border:1px solid var(--colorBorderLight);margin:1.5em 0}:root.light pre{background-color:#0000000d}pre code{background:none;padding:0}:root.light .astro-code,:root.light .astro-code span{color:var(--shiki-light)!important;background-color:var(--shiki-light-bg)!important}:root.dark .astro-code,:root.dark .astro-code span{color:var(--shiki-dark)!important;background-color:var(--shiki-dark-bg)!important}pre span[style*="6A737D"],.astro-code span[style*="6A737D"]{color:#00ff69!important}ul,ol{margin:1em 0;padding-left:2em;color:var(--colorTextSecondary)}li{margin:.5em 0}hr{border:none;border-top:1px solid var(--colorBorderLight);margin:2em 0}blockquote{border-left:3px solid var(--colorPrimary);margin:1.5em 0;padding:.5em 0 .5em 1.5em;color:var(--colorTextSecondary);font-style:italic}table{border-collapse:separate;border-spacing:0;width:100%;margin:1.5em 0;font-family:Montserrat,sans-serif}thead{border-bottom:2px solid var(--colorBorder)}th{padding:.375rem 1.5rem;text-align:left;font-weight:500;color:var(--colorText);border-right:1px solid var(--colorBorderLight)}th:last-child{border-right:none}td{padding:.375rem 1.5rem;color:var(--colorTextSecondary);border-right:1px solid var(--colorBorderLight)}td:last-child{border-right:none}tbody tr{border-bottom:1px solid var(--colorBorderLight)}tbody tr:last-child{border-bottom:none}tbody tr td{padding-top:.5rem;padding-bottom:.5rem}tbody tr+tr td{padding-top:.75rem}.tag{background-color:#00ff691a;color:var(--colorPrimary);padding:.25rem .75rem;border-radius:4px;font-size:.8rem;font-family:Montserrat,sans-serif}:root.light .tag{background-color:#00cc5426}figure.table-float-right{float:right;margin:0 0 1.5rem 2rem;max-width:50%;clear:right;text-align:center}figure.table-float-right table{width:auto;margin:.5rem 0 0;text-align:left}figure.table-float-right figcaption{font-family:Montserrat,sans-serif;font-weight:500;font-size:.95rem;color:var(--colorText);margin-bottom:0;text-align:center}@media(min-width:1200px){figure.table-float-right{float:right;width:clamp(300px,calc(300px + (100vw - 1200px)/2),600px);margin:0 clamp(-650px,calc(-350px - ((100vw - 1200px)/2)),-350px) 1.5rem 2rem;max-width:none}}@media(max-width:768px){figure.table-float-right{float:none;max-width:100%;margin:1.5rem 0}figure.table-float-right table{width:100%}}article blockquote{float:right;width:40%;margin:0rem 0rem 1.5rem 2rem;padding:.5rem;font-family:Montserrat,sans-serif;font-size:1.1rem;font-weight:400;line-height:1.4;color:var(--colorText);border-left:4px solid var(--colorPrimary);border-radius:4px;clear:right}article blockquote:before{content:'"';font-size:3rem;line-height:0;vertical-align:-.4em;color:var(--colorPrimary);margin-right:.25rem}@media(min-width:1200px){article blockquote{width:clamp(250px,calc(250px + (100vw - 1200px)*.4),500px);margin:0 clamp(-550px,calc(-300px - ((100vw - 1200px)*.4)),-300px) 1.5rem 2rem}}@media(max-width:768px){article blockquote{float:none;width:100%;margin:1.5rem 0}}article figure{float:right;margin:0 0 1.5rem 2rem;max-width:50%;clear:right;text-align:center}article figure .graphviz{margin:0;padding:0;background:transparent}article figure .graphviz svg{background:transparent!important;padding:1.5rem;border-radius:8px;display:block;margin:0 auto}article figure figcaption{margin-top:.5rem;font-size:.9rem;color:var(--colorTextSecondary);text-align:center;font-style:italic}article figure pre,article figure code{text-align:left!important}@media(min-width:1200px){article figure{float:right;width:clamp(300px,calc(300px + (100vw - 1200px)/2),600px);margin:0 clamp(-650px,calc(-350px - ((100vw - 1200px)/2)),-350px) 1.5rem 2rem;max-width:none;clear:right}}@media(max-width:768px){article figure{float:none;max-width:100%;margin:1.5rem 0}}.graphviz{margin:2rem 0;padding:1.5rem;border-radius:8px;border:none;overflow-x:auto}@media(max-width:768px){.graphviz{padding:1rem}}.graphviz svg{max-width:100%;height:auto;min-height:200px;background:transparent!important;border:none!important}.graphviz svg>g>polygon,.graphviz svg>g>rect{stroke:none!important;fill:transparent!important}.graphviz polygon,.graphviz ellipse,.graphviz path,.graphviz rect,.graphviz circle{fill:transparent!important;stroke:var(--boxBorder)!important;stroke-width:2px!important}.graphviz .node polygon,.graphviz .node ellipse,.graphviz .node path,.graphviz .node rect{fill:var(--boxBg)!important;stroke:var(--boxBorder)!important;stroke-width:1px!important}.graphviz .edge path{stroke:var(--boxBorder)!important;stroke-width:2px!important;fill:none!important}.graphviz .node.redBox polygon,.graphviz .node.redBox ellipse,.graphviz .node.redBox path,.graphviz .node.redBox rect,.graphviz .redBox polygon,.graphviz .redBox ellipse,.graphviz .redBox path,.graphviz .redBox rect{fill:var(--redBoxBg)!important;stroke:var(--redBoxBorder)!important;stroke-width:2px!important}.graphviz .node.yellowBox polygon,.graphviz .node.yellowBox ellipse,.graphviz .node.yellowBox path,.graphviz .node.yellowBox rect,.graphviz .yellowBox polygon,.graphviz .yellowBox ellipse,.graphviz .yellowBox path,.graphviz .yellowBox rect{fill:var(--yellowBoxBg)!important;stroke:var(--yellowBoxBorder)!important;stroke-width:2px!important}.graphviz .node.greenBox polygon,.graphviz .node.greenBox ellipse,.graphviz .node.greenBox path,.graphviz .node.greenBox rect,.graphviz .greenBox polygon,.graphviz .greenBox ellipse,.graphviz .greenBox path,.graphviz .greenBox rect{fill:var(--greenBoxBg)!important;stroke:var(--greenBoxBorder)!important;stroke-width:2px!important}.graphviz .node.blueBox polygon,.graphviz .node.blueBox ellipse,.graphviz .node.blueBox path,.graphviz .node.blueBox rect,.graphviz .blueBox polygon,.graphviz .blueBox ellipse,.graphviz .blueBox path,.graphviz .blueBox rect{fill:var(--blueBoxBg)!important;stroke:var(--blueBoxBorder)!important;stroke-width:2px!important}.graphviz .node.orangeBox polygon,.graphviz .node.orangeBox ellipse,.graphviz .node.orangeBox path,.graphviz .node.orangeBox rect,.graphviz .orangeBox polygon,.graphviz .orangeBox ellipse,.graphviz .orangeBox path,.graphviz .orangeBox rect{fill:var(--orangeBoxBg)!important;stroke:var(--orangeBoxBorder)!important;stroke-width:2px!important}.graphviz .cluster polygon,.graphviz .cluster rect{fill:transparent!important;stroke:var(--colorBorder)!important;stroke-width:1px!important}.graphviz g.blueBox>polygon,.graphviz g.blueBox>rect{fill:var(--blueBoxBg)!important;stroke:var(--blueBoxBorder)!important}.graphviz g.orangeBox>polygon,.graphviz g.orangeBox>rect{fill:var(--orangeBoxBg)!important;stroke:var(--orangeBoxBorder)!important}.graphviz g.greenBox>polygon,.graphviz g.greenBox>rect{fill:var(--greenBoxBg)!important;stroke:var(--greenBoxBorder)!important}.graphviz g.redBox>polygon,.graphviz g.redBox>rect{fill:var(--redBoxBg)!important;stroke:var(--redBoxBorder)!important}.graphviz g.yellowBox>polygon,.graphviz g.yellowBox>rect{fill:var(--yellowBoxBg)!important;stroke:var(--yellowBoxBorder)!important}.graphviz text{fill:var(--colorText)!important;font-family:Karma,-apple-system,BlinkMacSystemFont,Segoe UI,serif!important;font-size:13px!important;line-height:1.3!important}.graphviz .edge text{fill:var(--colorTextSecondary)!important;paint-order:stroke fill}.graphviz .edge text tspan{dominant-baseline:central}.markdown-content{font-family:Karma,-apple-system,BlinkMacSystemFont,Segoe UI,serif;line-height:1.6;color:var(--colorText)}.markdown-content h1,.markdown-content h2,.markdown-content h3,.markdown-content h4,.markdown-content h5,.markdown-content h6{font-family:Montserrat,sans-serif}.markdown-content code{font-family:Source Code Pro,monospace}:root{--warmup-brightness: 0}body.warming-up h1,body.warming-up h2,body.warming-up h3,body.warming-up h4,body.warming-up h5,body.warming-up h6,body.warming-up p,body.warming-up a,body.warming-up li,body.warming-up span,body.warming-up time,body.warming-up blockquote,body.warming-up code,body.warming-up pre,body.warming-up label,body.warming-up button,body.warming-up div:not(.noise-overlay){filter:brightness(var(--warmup-brightness))}.main-nav[data-astro-cid-dmqpwcec]{position:sticky;top:0;background-color:#000000f2;backdrop-filter:blur(10px);border-bottom:1px solid var(--colorBorderLight);z-index:100}:root.light .main-nav[data-astro-cid-dmqpwcec]{background-color:#fffffff2}.nav-container[data-astro-cid-dmqpwcec]{max-width:1200px;margin:0 auto;padding:1rem 2rem;display:flex;justify-content:space-between;align-items:center}.nav-right[data-astro-cid-dmqpwcec]{display:flex;align-items:center;gap:1.5rem}.logo[data-astro-cid-dmqpwcec]{font-size:1.25rem;font-weight:500;color:var(--colorPrimary);font-family:Montserrat,sans-serif}.nav-links[data-astro-cid-dmqpwcec]{display:flex;gap:2rem}.nav-links[data-astro-cid-dmqpwcec] a[data-astro-cid-dmqpwcec]{color:var(--colorTextSecondary);font-size:.95rem;transition:color .2s ease;font-family:Montserrat,sans-serif}.nav-links[data-astro-cid-dmqpwcec] a[data-astro-cid-dmqpwcec]:hover{color:var(--colorPrimary)}.theme-toggle[data-astro-cid-dmqpwcec]{background:none;border:1px solid var(--colorBorderLight);border-radius:6px;padding:.5rem;cursor:pointer;color:var(--colorTextSecondary);display:flex;align-items:center;justify-content:center;transition:color .2s ease,border-color .2s ease}.theme-toggle[data-astro-cid-dmqpwcec]:hover{color:var(--colorPrimary);border-color:var(--colorPrimary)}.sun-icon[data-astro-cid-dmqpwcec]{display:block}.moon-icon[data-astro-cid-dmqpwcec]{display:none}:root.light .sun-icon[data-astro-cid-dmqpwcec]{display:none}:root.light .moon-icon[data-astro-cid-dmqpwcec]{display:block}@media(max-width:768px){.nav-container[data-astro-cid-dmqpwcec]{flex-direction:column;gap:1rem}.nav-right[data-astro-cid-dmqpwcec]{width:100%;justify-content:space-between}.nav-links[data-astro-cid-dmqpwcec]{gap:1rem}}.site-footer[data-astro-cid-sz7xmlte]{max-width:1200px;margin:0 auto;padding:2rem;border-top:1px solid var(--colorBorder);text-align:center;color:var(--colorTextTertiary);font-size:.9rem}.noise-overlay[data-astro-cid-llmor6nl]{pointer-events:none;position:fixed;inset:0;z-index:9999;opacity:1}:root:not(.light) .noise-overlay[data-astro-cid-llmor6nl]{mix-blend-mode:multiply}:root.light .noise-overlay[data-astro-cid-llmor6nl]{mix-blend-mode:lighten}
