code[class*=language-],pre[class*=language-]{background:#f9f9f9;color:#383942;font-family:"Fira Code","Fira Mono",Menlo,Consolas,"DejaVu Sans Mono",monospace;direction:ltr;text-align:left;white-space:pre;word-spacing:normal;word-break:normal;line-height:1.5;-moz-tab-size:2;-o-tab-size:2;tab-size:2;-webkit-hyphens:none;-moz-hyphens:none;-ms-hyphens:none;hyphens:none}code[class*=language-] ::-moz-selection,code[class*=language-]::-moz-selection,pre[class*=language-] ::-moz-selection{background:#e5e5e5;color:inherit}code[class*=language-] ::selection,code[class*=language-]::selection,pre[class*=language-] ::selection{background:#e5e5e5;color:inherit}pre[class*=language-]{padding:1em;margin:.5em 0;overflow:auto;border-radius:.3em}:not(pre)>code[class*=language-]{padding:.2em .3em;border-radius:.3em;white-space:normal}.token.cdata,.token.comment,.token.prolog{color:#9fa0a6}.token.doctype,.token.entity,.token.punctuation{color:#383942}.token.atrule,.token.attr-name,.token.boolean,.token.class-name,.token.constant,.token.number{color:#b66a00}.token.keyword{color:#a625a4}.token.deleted,.token.important,.token.property,.token.symbol,.token.tag{color:#e35549}.token.attr-value,.token.attr-value>.token.punctuation,.token.builtin,.token.char,.token.inserted,.token.regex,.token.selector,.token.string{color:#50a04f}.token.function,.token.operator,.token.variable{color:#4078f1}.token.url{color:#0083bb}.token.attr-value>.token.punctuation.attr-equals,.token.special-attr>.token.attr-value>.token.value.css{color:#383942}.language-css .token.selector{color:#e35549}.language-css .token.property{color:#383942}.language-css .token.function,.language-css .token.url>.token.function{color:#0083bb}.language-css .token.url>.token.string.url{color:#50a04f}.language-css .token.atrule .token.rule,.language-css .token.important{color:#a625a4}.language-javascript .token.operator{color:#a625a4}.language-javascript .token.template-string>.token.interpolation>.token.interpolation-punctuation.punctuation{color:#c91142}.language-json .token.operator{color:#383942}.language-json .token.null.keyword{color:#b66a00}.language-markdown .token.url,.language-markdown .token.url-reference.url>.token.string,.language-markdown .token.url>.token.operator{color:#383942}.language-markdown .token.url>.token.content{color:#4078f1}.language-markdown .token.url-reference.url,.language-markdown .token.url>.token.url{color:#0083bb}.language-markdown .token.blockquote.punctuation,.language-markdown .token.hr.punctuation{color:#9fa0a6;font-style:italic}.language-markdown .token.code-snippet{color:#50a04f}.language-markdown .token.bold .token.content{color:#b66a00}.language-markdown .token.italic .token.content{color:#a625a4}.language-markdown .token.list.punctuation,.language-markdown .token.strike .token.content,.language-markdown .token.strike .token.punctuation,.language-markdown .token.title.important>.token.punctuation{color:#e35549}.token.bold{font-weight:700}.token.comment,.token.italic{font-style:italic}.token.entity{cursor:help}.token.namespace{opacity:.8}.token.token.cr:before,.token.token.lf:before,.token.token.space:before,.token.token.tab:not(:empty):before{color:hsla(230,8%,24%,.2)}div.code-toolbar>.toolbar.toolbar>.toolbar-item{margin-right:.4em}div.code-toolbar>.toolbar.toolbar>.toolbar-item>a,div.code-toolbar>.toolbar.toolbar>.toolbar-item>button,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span{background:#e5e5e5;color:#696b76;padding:.1em .4em;border-radius:.3em}div.code-toolbar>.toolbar.toolbar>.toolbar-item>a:focus,div.code-toolbar>.toolbar.toolbar>.toolbar-item>a:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>button:focus,div.code-toolbar>.toolbar.toolbar>.toolbar-item>button:hover,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span:focus,div.code-toolbar>.toolbar.toolbar>.toolbar-item>span:hover{background:#c6c6c7;color:#383942}.line-highlight.line-highlight{background:hsla(230,8%,24%,.05)}.line-highlight.line-highlight:before,.line-highlight.line-highlight[data-end]:after{background:#e5e5e5;color:#383942;padding:.1em .6em;border-radius:.3em;box-shadow:0 2px 0 0 rgba(0,0,0,.2)}pre[id].linkable-line-numbers.linkable-line-numbers span.line-numbers-rows>span:hover:before{background-color:hsla(230,8%,24%,.05)}.command-line .command-line-prompt,.line-numbers.line-numbers .line-numbers-rows{border-right-color:hsla(230,8%,24%,.2)}.command-line .command-line-prompt>span:before,.line-numbers .line-numbers-rows>span:before{color:#9d9d9f}.rainbow-braces .token.token.punctuation.brace-level-1,.rainbow-braces .token.token.punctuation.brace-level-5,.rainbow-braces .token.token.punctuation.brace-level-9{color:#e35549}.rainbow-braces .token.token.punctuation.brace-level-10,.rainbow-braces .token.token.punctuation.brace-level-2,.rainbow-braces .token.token.punctuation.brace-level-6{color:#50a04f}.rainbow-braces .token.token.punctuation.brace-level-11,.rainbow-braces .token.token.punctuation.brace-level-3,.rainbow-braces .token.token.punctuation.brace-level-7{color:#4078f1}.rainbow-braces .token.token.punctuation.brace-level-12,.rainbow-braces .token.token.punctuation.brace-level-4,.rainbow-braces .token.token.punctuation.brace-level-8{color:#a625a4}pre.diff-highlight>code .token.token.deleted:not(.prefix),pre>code.diff-highlight .token.token.deleted:not(.prefix){background-color:hsla(353,100%,66%,.15)}pre.diff-highlight>code .token.token.deleted:not(.prefix) ::-moz-selection,pre.diff-highlight>code .token.token.deleted:not(.prefix)::-moz-selection,pre>code.diff-highlight .token.token.deleted:not(.prefix) ::-moz-selection,pre>code.diff-highlight .token.token.deleted:not(.prefix)::-moz-selection{background-color:hsla(353,95%,66%,.25)}pre.diff-highlight>code .token.token.deleted:not(.prefix) ::selection,pre.diff-highlight>code .token.token.deleted:not(.prefix)::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix) ::selection,pre>code.diff-highlight .token.token.deleted:not(.prefix)::selection{background-color:hsla(353,95%,66%,.25)}pre.diff-highlight>code .token.token.inserted:not(.prefix),pre>code.diff-highlight .token.token.inserted:not(.prefix){background-color:hsla(137,100%,55%,.15)}pre.diff-highlight>code .token.token.inserted:not(.prefix) ::-moz-selection,pre.diff-highlight>code .token.token.inserted:not(.prefix)::-moz-selection,pre>code.diff-highlight .token.token.inserted:not(.prefix) ::-moz-selection,pre>code.diff-highlight .token.token.inserted:not(.prefix)::-moz-selection{background-color:hsla(135,73%,55%,.25)}pre.diff-highlight>code .token.token.inserted:not(.prefix) ::selection,pre.diff-highlight>code .token.token.inserted:not(.prefix)::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix) ::selection,pre>code.diff-highlight .token.token.inserted:not(.prefix)::selection{background-color:hsla(135,73%,55%,.25)}.prism-previewer-gradient.prism-previewer-gradient div,.prism-previewer.prism-previewer:before{border-color:#f2f2f2}.prism-previewer-color.prism-previewer-color:before,.prism-previewer-easing.prism-previewer-easing:before,.prism-previewer-gradient.prism-previewer-gradient div{border-radius:.3em}.prism-previewer.prism-previewer:after{border-top-color:#f2f2f2}.prism-previewer-flipped.prism-previewer-flipped.after{border-bottom-color:#f2f2f2}.prism-previewer-angle.prism-previewer-angle:before,.prism-previewer-easing.prism-previewer-easing,.prism-previewer-time.prism-previewer-time:before{background:#fff}.prism-previewer-angle.prism-previewer-angle circle,.prism-previewer-time.prism-previewer-time circle{stroke:hsl(230,8%,24%);stroke-opacity:1}.prism-previewer-easing.prism-previewer-easing circle,.prism-previewer-easing.prism-previewer-easing line,.prism-previewer-easing.prism-previewer-easing path{stroke:hsl(230,8%,24%)}.prism-previewer-easing.prism-previewer-easing circle{fill:transparent}@font-face{font-family:'IBM Plex Sans';font-style:normal;font-weight:400;font-display:swap;src:url('/fonts/ibm-plex-sans-400.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-500.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-600.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-400.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-500.woff2') format('woff2')}:root{--primary-color:#227B94;--secondary-color:#FFDC7F;--bg-color:#f9fafb;--text-color:#333;--link-color:#0B8494;--hover-color:#3d8baa;--light-bg:#e8f1f5;--border-color:#e3e7eb;--font-sans:"IBM Plex Sans",-apple-system,BlinkMacSystemFont,"Segoe UI",system-ui,sans-serif;--font-mono:"IBM Plex Mono",ui-monospace,SFMono-Regular,Menlo,Consolas,"Liberation Mono",monospace}*{margin:0;padding:0;box-sizing:border-box}body{font-family:var(--font-sans);font-optical-sizing:auto;font-size:17px;line-height:1.8;color:var(--text-color);background-color:var(--bg-color)}body a{color:var(--link-color);text-decoration:none}body a:hover{text-decoration:underline}h1{font-size:36px;font-weight:600}h2{font-weight:500;font-size:24px;margin-bottom:25px}img{max-width:100%;height:auto}.container{max-width:800px;margin:0 auto;padding:0 20px}header{position:sticky;top:0;z-index:1000;background-color:var(--primary-color);color:#fff;padding:15px 0;border-bottom:4px solid var(--secondary-color);transition:box-shadow .3s ease}header.header-scrolled{box-shadow:0 2px 15px rgba(0,0,0,.2)}.header-content{display:flex;justify-content:space-between;align-items:center}nav ul{font-weight:500;display:flex;list-style:none}nav ul li{margin-right:20px}nav ul li a{color:#fff;text-decoration:none;font-weight:500;transition:color .3s}nav ul li a:hover{color:var(--secondary-color)}.github-icon{color:#fff;font-size:28px}.home-list{list-style-type:none;margin-top:35px}.home-list p{margin-top:10px;margin-bottom:10px}.home-list h2{font-size:38px}.home-list .post-title a{font-size:24px}.recent-articles-list{list-style:inside}.recent-articles-list li{padding-left:2%;padding-bottom:1%}.blog-content{padding-top:40px}.blog-content ul{padding:5px 5px 20px 35px}.post-header{margin-bottom:30px}.post-meta{margin-left:8px;margin-bottom:10px}.page-title{font-weight:600;font-size:28px;text-align:center;margin:0 0 25px 0;color:var(--primary-color)}.blog-posts{padding:20px 0 35px}.post-list{list-style-type:none}.post-item{margin-bottom:15px;background-color:#fff;border-radius:8px;padding:25px;box-shadow:0 2px 10px rgba(0,0,0,.05);transition:transform .2s,box-shadow .2s}.post-item a:hover{text-decoration:underline}.post-item:hover{box-shadow:0 5px 10px rgba(0,0,0,.1)}.post-title{font-weight:600;font-size:32px;margin-bottom:10px}.post-title a{text-decoration:none;color:var(--link-color);font-size:20px;font-weight:500;transition:color .3s}.post-title a:hover{color:var(--hover-color)}.post-description{font-weight:400;font-size:16px;color:#555;margin-bottom:5px}.single-post-header{font-weight:400;margin-bottom:30px;margin-left:10px}.single-post-content{background-color:#fff;padding:30px;margin-bottom:45px;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.05);color:#555}.single-post-content p{font-size:17px;margin-bottom:20px}.single-post-content h2{margin-top:15px}.single-page-content{background-color:#fff;padding:25px 45px 45px 45px;margin-bottom:55px;border-radius:8px;box-shadow:0 2px 10px rgba(0,0,0,.05);color:#555}.single-page-content h2{margin-top:15px}.single-page-content p{font-size:17px;margin-bottom:20px}.single-page-content ul{padding:5px 5px 20px 35px}.list-page-summary{padding:20px}.list-page-summary p{margin-bottom:15px}.styled-table{margin:10px 0 35px 0;border-collapse:collapse;text-align:left;background-color:var(--bg-color)}.styled-table thead,tfoot{background-color:var(--light-bg)}.styled-table td,.styled-table th{padding:15px}.styled-table tbody tr{border-bottom:1px solid #ddd}pre[class*=language-]{font-size:14px;padding:32px 36px;border-radius:8px;margin:30px 0;position:relative}.copy-code-button{position:absolute;top:8px;right:8px;padding:4px 8px;font-size:12px;background:rgba(0,0,0,.06);border:none;border-radius:4px;cursor:pointer;color:var(--text-color);opacity:0;transition:opacity .2s}pre:hover .copy-code-button{opacity:1}code{font-family:var(--font-mono);background-color:var(--light-bg)}:not(pre)>code{font-size:.9em;padding:2px 6px;border-radius:4px}.img-center{display:block;margin-left:auto;margin-right:auto;margin-bottom:25px}.tag{font-weight:400;font-size:14px;display:inline-block;background-color:var(--light-bg);color:var(--link-color);padding:8px 18px;border-radius:15px;margin-right:3px;margin-top:12px}.newsletter-card{background:linear-gradient(135deg,#fff 0,#f9fafb 100%);border:1px solid var(--border-color);list-style:none;margin:50px 0}.newsletter-title{font-weight:600;font-size:26px;color:var(--primary-color);margin-bottom:15px;text-align:center}.newsletter-description{font-weight:400;font-size:16px;color:#555;margin-bottom:20px;line-height:1.6;text-align:center}.newsletter-form{margin-top:20px}.newsletter-form-fields{display:flex;flex-direction:column;align-items:center;gap:12px;margin-bottom:15px}.newsletter-input{font-family:var(--font-sans);font-size:16px;padding:14px 18px;border:2px solid #e3e3e3;border-radius:8px;background-color:#fff;color:var(--text-color);transition:border-color .3s ease,box-shadow .3s ease;width:100%}.newsletter-input::placeholder{color:#999}.newsletter-input:focus{outline:0;border-color:var(--primary-color);box-shadow:0 0 0 3px rgba(34,123,148,.1)}.newsletter-input:hover{border-color:var(--link-color)}.newsletter-button{font-family:var(--font-sans);font-size:17px;font-weight:500;padding:14px 32px;background-color:var(--primary-color);color:#fff;border:none;border-radius:8px;cursor:pointer;transition:background-color .3s ease,transform .2s ease,box-shadow .3s ease;width:100%}.newsletter-button:hover{background-color:var(--hover-color);transform:translateY(-2px)}.newsletter-button:active{transform:translateY(0)}.newsletter-button:focus{outline:0;box-shadow:0 0 0 3px rgba(34,123,148,.3)}.newsletter-privacy{font-size:14px;font-weight:400;color:#686868;font-style:italic;margin-top:10px;text-align:center}.visually-hidden{position:absolute;width:1px;height:1px;margin:-1px;padding:0;overflow:hidden;clip:rect(0,0,0,0);white-space:nowrap;border:0}@media (min-width:640px){.newsletter-form-fields{flex-direction:row;align-items:stretch;justify-content:center}.newsletter-input{flex:1;min-width:0;max-width:400px}.newsletter-button{width:auto;min-width:140px;flex-shrink:0}}@media (max-width:639px){.newsletter-description{font-size:15px}.newsletter-button,.newsletter-input{font-size:16px}}.comments-section{margin-top:40px;margin-bottom:50px}footer{font-weight:400;background-color:var(--primary-color);color:#fff;text-align:center;padding:20px 0;border-top:4px solid var(--secondary-color)}.back-to-top{font-weight:400;display:block;text-align:center;margin:20px 0 20px 0}.back-to-top a{color:var(--link-color);text-decoration:none}.back-to-top a:hover{text-decoration:underline}@media (max-width:768px){.post-item{padding:15px}.post-title a{font-size:18px}}