:root{color-scheme:light;--main-bg-color: #f8f9fa;--main-light-color: #e3e3e3;--main-accent-color: #00b653;--text-color-important: #1c313a;--text-color: #3a3a3a;--text-color-muted: #726f6f;--on-accent-color: #ffffff;--link-color-mouserover-color: #12964a;--surface-color: #f0f2f3;--embed-hackaday-color: #1a1a1a;--syntax-comment: #596a71;--syntax-keyword: #0a7a3d;--syntax-string: #a8420a;--syntax-number: #0b6a94;--syntax-name: #7a4f00;--syntax-error: #c0261f}[data-theme=dark]{color-scheme:dark;--main-bg-color: #263238;--main-light-color: #e3e3e3;--main-accent-color: #2fd47c;--text-color-important: #cccccc;--text-color: #b9b8b8;--text-color-muted: #726f6f;--on-accent-color: #263238;--link-color-mouserover-color: #5ddd99;--surface-color: #2a383f;--embed-hackaday-color: #b5b5b5;--syntax-comment: #98a3a8;--syntax-keyword: #5ddd99;--syntax-string: #f2a65a;--syntax-number: #6cc4f0;--syntax-name: #e0c070;--syntax-error: #ff7b72}:root{--main-social-link-color: var(--main-accent-color);--main-social-link-mouserover-color: var(--on-accent-color);--link-color: var(--main-accent-color);--tag-color: var(--text-color);--tag-hover-bg-color: var(--main-accent-color);--tag-hover-color: var(--on-accent-color);--post-list-icon-color: #808e95;--post-content-blockquote-border-color: var(--main-accent-color);--post-content-table-border-color: var(--post-list-icon-color);--post-content-dl-dt-color: var(--main-accent-color);--post-content-warning-border: #ef6c00;--post-content-todo-border: #d32f2f;--embed-youtube-color: #f30a0a;--embed-github-color: #967bb6;--embed-reddit-color: #ff5700;--embed-stackoverflow-color: #f48024;--embed-twitter-color: #1da1f2;--embed-wikipedia-color: #c9c9c9;--embed-diagram-color: #ee53ab;--embed-thanks-color: #f84fc5;--shadow-kbd: 0 1px 1px rgba(0, 0, 0, 0.2), 0 2px 0 0 rgba(0, 0, 0, 0.205) inset}@font-face{font-family:"Bebas Neue";src:url("/fonts/BebasNeue-Regular.woff2") format("woff2");font-weight:400;font-style:normal;font-display:swap}@font-face{font-family:"Material Design Icons";src:url("/fonts/materialdesignicons-webfont.woff2") format("woff2");font-weight:400;font-style:normal;font-display:block}.mdi::before{display:inline-block;font:normal normal normal 24px/1 "Material Design Icons";font-size:inherit;line-height:inherit;text-rendering:auto;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}.mdi-email::before{content:"󰇮"}.mdi-web::before{content:"󰖟"}.mdi-github::before{content:"󰊤"}.mdi-youtube::before{content:"󰗃"}.mdi-linkedin::before{content:"󰌻"}.mdi-twitter::before{content:"󰕄"}.mdi-at::before{content:"󰁥"}.mdi-rss-box::before{content:"󰑬"}.mdi-school::before{content:"󰑴"}.mdi-briefcase::before{content:"󰃖"}.mdi-server::before{content:"󰒋"}.mdi-link-variant::before{content:"󰌹"}.mdi-tag::before{content:"󰓹"}.mdi-account::before{content:"󰀄"}.mdi-clock::before{content:"󰥔"}.mdi-chevron-double-left::before{content:"󰄽"}.mdi-chevron-double-right::before{content:"󰄾"}.mdi-chevron-left::before{content:"󰅁"}.mdi-chevron-right::before{content:"󰅂"}.mdi-shield-key::before{content:"󰯄"}.mdi-heart::before{content:"󰋑"}*,::before,::after{box-sizing:border-box}body{display:flex;flex-direction:column;min-height:100vh;margin:0;padding:0;background:var(--main-bg-color);color:var(--text-color);font-family:"Roboto",sans-serif;text-align:justify;text-rendering:optimizeLegibility;print-color-adjust:exact;-webkit-print-color-adjust:exact}h1,h2,h3,h4,h5,h6{margin-top:0;margin-bottom:.25rem;color:var(--text-color-important);font-family:"Bebas Neue",cursive;font-weight:500;line-height:1.2}h1{font-size:2.45em;font-weight:normal}h2{font-size:2.05em}h3{font-size:1.75em}h4{font-size:1.4em}p{margin-left:8px;color:var(--text-color);font-size:1.05rem;overflow-wrap:break-word}ul{color:var(--text-color)}li{display:list-item;margin:3px 0;font-size:1.05rem;list-style-type:square;list-style-position:outside}a{color:var(--link-color);overflow-wrap:break-word}a:hover{color:var(--link-color-mouserover-color)}hr{height:1px;margin:0 16px;border:1px solid var(--text-color-important);background-color:currentColor;color:inherit;opacity:.25}code{padding:1px 3px;border-radius:3px;background-color:var(--surface-color);color:var(--text-color);font-size:.85rem}mark{padding:0 3px;border-radius:3px;background-color:var(--main-accent-color);color:var(--on-accent-color)}section{margin-top:52px}img,svg{vertical-align:middle}i{margin:0 12px}.sr-only{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip:rect(0, 0, 0, 0);white-space:nowrap;border:0}a:focus-visible,button:focus-visible{outline:2px solid var(--text-color-important);outline-offset:2px}.align-center{justify-content:center;align-items:center;align-content:center;justify-items:center;text-align:center}.container{width:100%;padding-left:16px;padding-right:16px;margin-left:auto;margin-right:auto}@media(min-width: 576px){.container{max-width:540px}}@media(min-width: 768px){.container{max-width:720px}}@media(min-width: 992px){.container{max-width:960px}}@media(min-width: 1200px){.container{max-width:1140px}}@media(min-width: 1200px){.container{width:1150px}}.row{display:flex;flex-wrap:wrap;margin-top:0;margin-left:-0.75rem;margin-right:-0.75rem}.row *{flex-shrink:0;width:100%;max-width:100%;margin-top:0;padding-left:.75rem;padding-right:.75rem}.col{flex:1 0 0}header{padding-top:16px;padding-bottom:20px}header .header-link{border:1px solid var(--link-color);color:var(--link-color);text-decoration:none;min-width:90px}header .header-link:hover{background:var(--link-color);color:var(--on-accent-color)}header .header-link{padding:2px 0;margin:.25rem 1rem !important}#header-title .site-title{margin:0 0 .25rem;color:var(--text-color-important);font-family:"Bebas Neue",cursive;font-weight:normal;line-height:1.2;display:flex;align-items:center;justify-content:center;gap:16px;font-size:3.6rem}@media(max-width: 500px){#header-title .site-title{font-size:330%}}.header-title-image{display:inline-block;flex:none;height:65px;border-radius:50%;vertical-align:middle}@media(max-width: 500px){.header-title-image{display:none}}footer{width:100%;margin-top:auto;padding:12px 16px;border-top:2.5px solid var(--main-accent-color);color:var(--text-color);font-size:13px;line-height:1.6;text-align:center}footer::first-line{font-family:"Bebas Neue",cursive;font-size:18px;letter-spacing:.08em;text-transform:uppercase;color:var(--text-color-important)}footer a{color:var(--text-color-important)}footer a:hover{color:var(--main-accent-color)}.big-link{display:flex;justify-content:center}.big-link a{border:1px solid var(--link-color);color:var(--link-color);text-decoration:none;min-width:90px}.big-link a:hover{background:var(--link-color);color:var(--on-accent-color)}.big-link a{padding:8px 24px}.social-icon{display:flex;justify-content:center;align-items:center;width:50px;height:50px;margin-right:16px;padding-top:2px;border:1px solid var(--main-social-link-color);font-size:0 !important}.social-icon>i{position:relative;color:var(--main-social-link-color);font-size:35px !important}.social-icon:hover,.social-icon:active{background:var(--main-social-link-color)}.social-icon:hover>i,.social-icon:active>i{color:var(--main-social-link-mouserover-color)}.tag-container{text-align:initial}.tag-icon{padding-top:2px}.tag{display:inline-block;margin:2px;padding:2px 6px;border-radius:4px;background-color:var(--surface-color);color:var(--tag-color);font-size:.75em;text-decoration:none;cursor:pointer}.tag:hover{background-color:var(--tag-hover-bg-color);color:var(--tag-hover-color)}.post-list{display:grid;grid-template-columns:repeat(3, 1fr);grid-gap:4vmin}@media(max-width: 1200px){.post-list{grid-template-columns:repeat(2, 1fr)}}@media(max-width: 768px){.post-list{grid-template-columns:1fr}}.post-item{display:flex;flex-direction:column;width:100%;background:var(--surface-color);text-align:inherit}.post-item-image-container{height:200px;background:var(--main-light-color)}.post-item-image-container a{position:relative;display:block;overflow:hidden}.post-item-image-container img{display:block;width:100%;height:200px;object-fit:cover}.post-item-details-container{flex:1;display:flex;flex-direction:column;width:100%;padding:0 12px 10px}.post-item-details-container p{margin:0}.post-item-title{font-family:"Bebas Neue",cursive;font-size:20px;letter-spacing:.08em;text-transform:uppercase;margin:0 -12px 8px !important;padding:5px 12px 4px;background:var(--text-color-important);font-weight:400;line-height:1.2}.post-item-title a,.post-item-title a:hover{color:var(--main-bg-color);text-decoration:none}.post-item-description{margin:4px 0 6px !important;color:var(--text-color);font-size:.88em}.post-item-infos{display:flex;flex-grow:0;align-items:center;margin-top:2px}.post-item-infos div{color:var(--text-color);font-size:.9em}.post-item-infos div i{margin:0 4px 0 0;color:var(--post-list-icon-color);font-size:1em}.post-item-infos div i[class*=mdi-tag]{margin-left:1px;margin-right:1px}.post-item-infos div:not(:first-child)>i{margin-left:8px}.post-item-infos a:not(.tag),.post-item-infos a:not(.tag):hover{color:var(--text-color-important);text-decoration:underline;text-decoration-color:var(--main-accent-color);text-decoration-thickness:2px;text-underline-offset:3px}.post-item-infos .tag{background-color:color-mix(in srgb, var(--text-color-important) 10%, var(--surface-color))}.post-item-infos .tag:hover{background-color:var(--tag-hover-bg-color);color:var(--tag-hover-color)}@media(min-width: 1200px){.post-item-big{display:grid;grid-column:1/span 3;grid-template-columns:1fr 2fr;grid-gap:0}.post-item-big .post-item-image-container,.post-item-big .post-item-image-container a{height:100%}.post-item-big .post-item-image-container img{height:100%;min-height:260px}.post-item-big .post-item-details-container{padding:0 0 18px}.post-item-big .post-item-title{margin:0 0 14px !important;padding:10px 22px 6px;font-size:30px}.post-item-big .post-item-description,.post-item-big .post-item-infos{padding:0 22px}}.post-item-featured{margin-left:8px;font-family:"Roboto",sans-serif;font-size:12px;letter-spacing:0;text-transform:none;opacity:.85}.page-selector{display:flex;flex-wrap:wrap;justify-content:center;align-items:center;margin:24px 0;text-align:center}.page-selector a,.page-selector span{display:inline-flex;align-items:center;justify-content:center;box-sizing:border-box;min-width:28px;height:28px;color:var(--text-color);font-size:14px;font-weight:700;text-decoration:none}.page-selector a:hover,.page-selector .page-selector-control:not(.page-selector-disabled):hover{background:var(--surface-color);color:var(--text-color-important)}.page-selector i{display:inline-flex;margin:0;font-size:18px}.page-selector .page-selector-controls{display:inline-flex;margin:0 8px}.page-selector .page-selector-current{background:var(--text-color-important);color:var(--main-bg-color);box-shadow:inset 0 -2.5px 0 var(--main-accent-color)}.page-selector .page-selector-disabled{color:var(--text-color-muted)}#section-content{position:relative}.toc-gutter{position:absolute;top:0;right:100%;bottom:0;width:260px;margin-right:clamp(8px,(100vw - 1150px)/2 - 260px - 24px*2,64px)}@media(max-width: 1729px){.toc-gutter{display:none}}.markdown :is(h1,h2,h3,h4,h5,h6)[id]{scroll-margin-top:24px}.toc{position:sticky;top:24px;max-height:calc(100vh - 24px*2);padding-left:18px;overflow-y:auto;text-align:left}.toc::before{content:"";position:absolute;left:3px;top:4px;bottom:4px;width:1px;background:var(--post-list-icon-color)}.toc ul{margin:0;padding:0;list-style:none}.toc li{margin:0;list-style:none}.toc li ul{padding-left:14px}.toc li.on>a{color:var(--text-color-important);font-weight:700}.toc li.on>a::before{content:"";position:absolute;width:7px;height:7px;background:var(--main-accent-color);left:-18px;top:calc(3px + (20px - 7px)/2)}.toc li li.on>a::before{left:-32px}.toc a{position:relative;display:block;padding:3px 0;color:var(--text-color);font-size:15px;line-height:20px;text-decoration:none}.toc a:hover{color:var(--link-color)}.toc li li>a{font-size:14px}.author-item{display:flex;flex-direction:column;width:100%;margin-top:8px;text-align:inherit}@media(min-width: 768px){.author-item{display:grid;grid-template-columns:auto 2fr;grid-gap:4vmin}}.author-item-image-container{height:200px;border-radius:4px;background:var(--main-light-color) no-repeat 50%}@media(min-width: 768px){.author-item-image-container{width:fit-content}}.author-item-image-container img{display:block;width:100%;height:200px;border-radius:4px;object-fit:cover}@media(min-width: 768px){.author-item-image-container img{object-fit:contain}}.author-item-details-container{display:flex;flex-direction:column;width:100%;margin-top:8px}.author-item-details-container p{margin:0}.author-item-description{margin:2px 0 4px !important;font-size:.88em}.author-item-infos{display:flex;margin-top:2px}.author-item-infos div{color:var(--text-color);font-size:.9em}.author-item-infos div i{margin:0 4px 0 0;color:var(--post-list-icon-color);font-size:1em}.author-item-infos div:not(:first-child)>i{margin-left:8px}.markdown .fig-im a{cursor:zoom-in}.lightbox{width:100%;max-width:none;height:100%;max-height:none;padding:16px;border:0;background:rgba(0,0,0,0);color:var(--main-bg-color)}.lightbox[open]{display:flex;align-items:center;justify-content:center}.lightbox::backdrop{background:rgba(0,0,0,.88)}.lightbox-figure{display:flex;flex-direction:column;align-items:stretch;max-width:100%;max-height:100%;margin:0}.lightbox-image{display:block;max-width:100%;max-height:calc(100vh - 100px);margin:0 auto;object-fit:contain}.lightbox-image:has(+.lightbox-caption:not([hidden])){border-bottom:1px solid var(--main-accent-color)}.lightbox-caption{font-family:"Bebas Neue",cursive;font-size:16px;letter-spacing:.06em;text-transform:uppercase;box-sizing:border-box;width:0;min-width:100%;padding:4px 12px;background:var(--text-color-important);color:var(--main-bg-color);text-align:left;overflow-wrap:anywhere}.lightbox-caption[hidden]{display:none}.lightbox-button{position:absolute;display:flex;align-items:center;justify-content:center;width:44px;height:44px;padding:0;border:1px solid var(--main-bg-color);background:var(--text-color-important);color:var(--main-bg-color);cursor:pointer}.lightbox-button[hidden]{display:none}.lightbox-button:hover:not(:disabled){background:var(--main-accent-color);color:var(--on-accent-color)}.lightbox-button:disabled{opacity:.35;cursor:default}.lightbox-button:focus-visible{outline:2px solid var(--main-accent-color);outline-offset:2px}.lightbox-button svg{width:22px;height:22px}.lightbox-button i{margin:0;font-size:28px}.lightbox-close{top:16px;right:16px}.lightbox-previous,.lightbox-next{top:50%;margin-top:-22px}.lightbox-previous{left:16px}.lightbox-next{right:16px}.lightbox-counter{font-family:"Bebas Neue",cursive;font-size:16px;letter-spacing:.08em;text-transform:uppercase;position:absolute;top:16px;left:16px;color:var(--main-bg-color)}@media(max-width: 767px){.lightbox[open]{display:grid;grid-template:"counter  close" auto "figure   figure" 1fr "previous next" auto/minmax(0, 1fr) auto;align-items:center;gap:12px;padding:12px}.lightbox-button,.lightbox-counter{position:static;margin:0}.lightbox-counter{grid-area:counter}.lightbox-close{grid-area:close}.lightbox-previous{grid-area:previous;justify-self:start}.lightbox-next{grid-area:next;justify-self:end}.lightbox-figure{grid-area:figure;justify-self:center;min-width:0;min-height:0}.lightbox-image{max-height:calc(100dvh - 200px)}}.newsletter-form{margin:8px 0 0 8px}.newsletter-form .newsletter-fields{display:grid;gap:12px;align-items:end}@media(min-width: 768px){.newsletter-form .newsletter-fields{grid-template-columns:1fr 1fr auto}}.newsletter-form .newsletter-field{min-width:0}.newsletter-form .newsletter-field label{font-family:"Bebas Neue",cursive;font-size:18px;letter-spacing:.05em;text-transform:uppercase;display:block;margin-bottom:4px;color:var(--text-color-important)}.newsletter-form .newsletter-field label span{color:var(--text-color-muted);font-size:14px}.newsletter-form .newsletter-field input{width:100%;box-sizing:border-box;padding:8px 12px;border:1px solid var(--text-color-muted);border-radius:0;background:var(--main-bg-color);color:var(--text-color-important);font:inherit}.newsletter-form .newsletter-field input::placeholder{color:var(--text-color-muted)}.newsletter-form .newsletter-field input:focus-visible{border-color:var(--main-accent-color);outline:2px solid var(--main-accent-color);outline-offset:0}.newsletter-form .newsletter-submit{border:1px solid var(--link-color);color:var(--link-color);text-decoration:none;min-width:90px}.newsletter-form .newsletter-submit:hover{background:var(--link-color);color:var(--on-accent-color)}.newsletter-form .newsletter-submit{padding:8px 24px;background:none;cursor:pointer;font-family:"Bebas Neue",cursive;font-size:20px;letter-spacing:.06em;text-transform:uppercase}.newsletter-form .newsletter-submit:focus-visible{outline:2px solid var(--text-color-important);outline-offset:2px}.newsletter-form.is-sending .newsletter-submit{opacity:.6;cursor:progress}.newsletter-form .newsletter-status{margin:12px 0 0;padding-left:12px;border-left:2.5px solid rgba(0,0,0,0);font-size:.95rem}.newsletter-form .newsletter-status:empty{display:none}.newsletter-form .newsletter-status[data-state=info]{border-color:var(--text-color-muted)}.newsletter-form .newsletter-status[data-state=success]{border-color:var(--main-accent-color)}.newsletter-form .newsletter-status[data-state=error]{border-color:var(--post-content-todo-border);color:var(--post-content-todo-border)}#section-newsletter{margin-bottom:32px}.newsletter-popup{position:fixed;right:20px;bottom:20px;z-index:900;width:min(360px,100vw - 20px*2);padding:12px 16px 16px;border:1px solid var(--main-light-color);border-top:2.5px solid var(--main-accent-color);background:var(--main-bg-color);box-shadow:0 6px 24px rgba(0,0,0,.14);opacity:0;transform:translateY(16px);transition:opacity .25s ease,transform .25s ease}.newsletter-popup.shown{opacity:1;transform:none}@media(prefers-reduced-motion: reduce){.newsletter-popup{transition:none}}.newsletter-popup h3{margin:0 24px 4px 0;font-size:1.6em}.newsletter-popup p{margin:0 0 8px;font-size:.95rem}.newsletter-popup .newsletter-form{margin:0}.newsletter-popup .newsletter-form .newsletter-fields{grid-template-columns:1fr}.newsletter-popup .newsletter-form .newsletter-field:nth-child(2){display:none}.newsletter-popup .newsletter-form .newsletter-submit{justify-self:start}.newsletter-popup .newsletter-close{position:absolute;top:4px;right:8px;padding:0 4px;border:0;background:none;color:var(--text-color-muted);font-size:26px;line-height:1.2;cursor:pointer}.newsletter-popup .newsletter-close:hover{color:var(--text-color-important)}.newsletter-popup .newsletter-close:focus-visible{outline:2px solid var(--text-color-important);outline-offset:0}.markdown hr{margin:16px 0}.markdown img{display:block;max-width:100%;max-height:512px;margin-left:auto;margin-right:auto}.markdown pre,.markdown code{overflow-x:auto;overflow-wrap:break-word;background-color:var(--surface-color);color:var(--text-color)}.markdown pre{padding:12px}.markdown p>code{margin:0;padding:0 3px}.markdown kbd{padding:2px 5px;border:1px solid var(--post-content-table-border-color);border-bottom-width:2px;border-radius:3px;background:var(--surface-color);box-shadow:none;color:var(--text-color-important);font-family:monospace;font-size:.85em;font-weight:400;line-height:1}.markdown .header-link{font-size:.9em;text-decoration:none;opacity:0;transition:opacity 75ms}.markdown .header-link i{margin:0 6px}@media(prefers-reduced-motion: reduce){.markdown .header-link{transition:none}}.markdown :is(h1,h2,h3,h4,h5,h6):hover .header-link,.markdown .header-link:focus-visible{opacity:1}.h1-subtitle p{margin:0;font-size:.9rem}.content-featured-image{position:relative;display:block;max-width:100%;height:300px;margin:16px auto 0;overflow:hidden;border-radius:4px}.content-featured-image img{position:absolute;width:100%;height:100%;max-width:none;max-height:none;margin:0;object-fit:cover}#section-comments,#section-thanks{margin-bottom:32px}#section-error{display:flex;flex-direction:column;align-items:center;margin-top:0}#section-error h1{font-size:3.25rem}.markdown .highlight{margin-bottom:16px;padding:12px;background:var(--surface-color) !important;color:var(--text-color) !important}.markdown .highlight pre{margin:0 -12px;padding:0 12px;overflow-x:auto;background:none !important;color:var(--text-color) !important;font-family:monospace;font-size:13.6px;line-height:1.5;tab-size:4}.markdown .highlight pre:focus-visible{outline:2px solid var(--text-color-important);outline-offset:4px}@media print{.markdown .highlight pre{white-space:pre-wrap}}.markdown .highlight pre code{margin:0;padding:0;background:none !important;color:inherit !important;font:inherit}.markdown .highlight pre span[style]{background:none !important}.markdown .highlight .filename{font-family:"Bebas Neue",cursive;font-size:17px;letter-spacing:.08em;text-transform:uppercase;background:var(--text-color-important);color:var(--main-bg-color);border-bottom:2.5px solid var(--main-accent-color);position:relative;display:block;margin:-12px -12px 12px;padding:6px 12px 3px;background:var(--text-color-important) !important;color:var(--main-bg-color) !important;line-height:1.2}.markdown .highlight .line{display:flex}.markdown .highlight .ln,.markdown .highlight .lnt{flex:none;box-sizing:content-box;min-width:2ch;padding-right:14px;color:var(--text-color-muted) !important;font-variant-numeric:tabular-nums;text-align:right;user-select:none;-webkit-user-select:none}.markdown .highlight .cl{flex:1;min-width:0}.markdown .highlight .hl{margin:0 -12px;padding:0 12px;background:color-mix(in srgb, var(--main-accent-color) 14%, transparent) !important;box-shadow:inset 2.5px 0 0 var(--main-accent-color)}.markdown .highlight .lntable{width:100%;margin:0;border-spacing:0;font-size:inherit}.markdown .highlight .lntable pre{margin:0;padding:0}.markdown .highlight .lntable .hl{margin:0;padding:0}.markdown .highlight .lntable td{padding:0;border:0;background:none;color:inherit;font-weight:400;vertical-align:top}.markdown .highlight .lntable .lntd:first-child{padding-right:14px}.markdown .highlight .lntable .lntd:first-child .lnt{display:block;padding-right:0}.markdown .highlight .lntable .lntd:last-child{width:100%}.markdown .highlight .chroma .c,.markdown .highlight .chroma .ch,.markdown .highlight .chroma .cm,.markdown .highlight .chroma .c1,.markdown .highlight .chroma .cs,.markdown .highlight .chroma .cp,.markdown .highlight .chroma .cpf{color:var(--syntax-comment);font-style:italic}.markdown .highlight .chroma .k,.markdown .highlight .chroma .kc,.markdown .highlight .chroma .kd,.markdown .highlight .chroma .kn,.markdown .highlight .chroma .kp,.markdown .highlight .chroma .kr,.markdown .highlight .chroma .kt,.markdown .highlight .chroma .ow{color:var(--syntax-keyword);font-weight:700}.markdown .highlight .chroma .s,.markdown .highlight .chroma .sa,.markdown .highlight .chroma .sb,.markdown .highlight .chroma .sc,.markdown .highlight .chroma .dl,.markdown .highlight .chroma .sd,.markdown .highlight .chroma .s2,.markdown .highlight .chroma .se,.markdown .highlight .chroma .sh,.markdown .highlight .chroma .si,.markdown .highlight .chroma .sx,.markdown .highlight .chroma .sr,.markdown .highlight .chroma .s1,.markdown .highlight .chroma .ss{color:var(--syntax-string)}.markdown .highlight .chroma .m,.markdown .highlight .chroma .mb,.markdown .highlight .chroma .mf,.markdown .highlight .chroma .mh,.markdown .highlight .chroma .mi,.markdown .highlight .chroma .il,.markdown .highlight .chroma .mo,.markdown .highlight .chroma .no,.markdown .highlight .chroma .nb,.markdown .highlight .chroma .bp{color:var(--syntax-number)}.markdown .highlight .chroma .nf,.markdown .highlight .chroma .fm,.markdown .highlight .chroma .nc,.markdown .highlight .chroma .nd,.markdown .highlight .chroma .ni,.markdown .highlight .chroma .ne,.markdown .highlight .chroma .nl,.markdown .highlight .chroma .nn,.markdown .highlight .chroma .nt,.markdown .highlight .chroma .na{color:var(--syntax-name)}.markdown .highlight .chroma .err,.markdown .highlight .chroma .gd,.markdown .highlight .chroma .gr,.markdown .highlight .chroma .gt{color:var(--syntax-error)}.markdown .highlight .chroma .gi{color:var(--syntax-keyword)}.markdown .highlight .chroma .gh,.markdown .highlight .chroma .gu{color:var(--text-color-important);font-weight:700}.markdown .highlight .chroma .ge{font-style:italic}.markdown .highlight .chroma .gs{font-weight:700}.markdown table{width:100%;margin-bottom:16px;border-collapse:collapse;font-size:14px}.markdown table th,.markdown table td{padding:6px 10px;border:0;color:var(--text-color);text-align:left}.markdown table th{font-family:"Bebas Neue",cursive;font-size:17px;letter-spacing:.08em;text-transform:uppercase;background:var(--text-color-important);color:var(--main-bg-color);border-bottom:2.5px solid var(--main-accent-color);font-weight:400}.markdown table tbody tr:nth-child(odd) td{background:var(--surface-color)}.markdown table th:first-child,.markdown table td:first-child{position:relative;padding-left:22px}.markdown table td:first-child{color:var(--text-color-important);font-weight:700}.markdown table tbody tr:hover td:first-child::before{content:"";position:absolute;width:7px;height:7px;background:var(--main-accent-color);left:8px;top:50%;margin-top:-3px}.markdown table .n,.markdown table [align=right],.markdown table [style*="text-align:right"],.markdown table [style*="text-align: right"]{font-variant-numeric:tabular-nums;text-align:right}.markdown table [align=center],.markdown table [style*="text-align:center"],.markdown table [style*="text-align: center"]{text-align:center}.markdown ul:has(>li>input[type=checkbox]){margin:0 0 16px;padding:0;list-style:none}.markdown ul:has(>li>input[type=checkbox]) ul{margin:0;padding-left:0;list-style:none}.markdown ul:has(>li>input[type=checkbox]):not(li ul){counter-reset:tasks-all tasks-done}.markdown ul:has(>li>input[type=checkbox]):not(li ul)::after{font-family:"Bebas Neue",cursive;font-size:18px;letter-spacing:.08em;text-transform:uppercase;content:counter(tasks-done) " / " counter(tasks-all) " done";display:block;margin-top:8px;padding-top:4px;border-top:2.5px solid var(--main-accent-color);color:var(--main-accent-color)}.markdown li:has(>input[type=checkbox]){position:relative;padding:3px 0 3px 24px;list-style:none;text-align:left;counter-increment:tasks-all}.markdown li:has(>input[type=checkbox])>ul{display:inline-block;width:100%;vertical-align:top}.markdown li:has(>input[type=checkbox]):has(>input[type=checkbox]:checked){color:var(--text-color-muted);counter-increment:tasks-all tasks-done}.markdown input[type=checkbox]{appearance:none;-webkit-appearance:none;position:absolute;left:2px;top:7px;width:11px;height:11px;margin:0;border:1.5px solid var(--text-color-muted);background:none;font:inherit;transform:rotate(45deg);transition:background-color .15s,border-color .15s}.markdown input[type=checkbox]:checked{border-color:var(--main-accent-color);background-color:var(--main-accent-color)}.markdown input[type=checkbox]:focus-visible{outline:2px solid var(--text-color-important);outline-offset:2px}@media(prefers-reduced-motion: reduce){.markdown input[type=checkbox]{transition:none}}.markdown blockquote,.markdown dl{position:relative;display:flex;flex-direction:column;justify-content:center;min-height:44px;margin:0 0 16px;padding:8px 16px 8px 52px;border:0;background:var(--surface-color);color:var(--text-color)}.markdown blockquote::before{content:"";position:absolute;left:0;top:0;bottom:0;width:36px;background:var(--post-content-blockquote-border-color)}.markdown blockquote::after{content:"“";position:absolute;left:0;top:2px;width:36px;text-align:center;font:400 52px/1 "Bebas Neue",cursive;color:var(--on-accent-color)}.markdown blockquote p{margin:0;padding:0;color:var(--text-color)}.markdown blockquote.thanks::before{content:"";position:absolute;left:0;top:0;bottom:0;width:36px;background:var(--embed-thanks-color)}.markdown blockquote.thanks::after{content:"󰋑";position:absolute;left:0;top:12px;width:36px;text-align:center;font:400 20px/1 "Material Design Icons";color:var(--on-accent-color)}.markdown dl::before{content:"";position:absolute;left:0;top:0;bottom:0;width:36px;background:var(--post-content-dl-dt-color)}.markdown dl::after{content:"=";position:absolute;left:0;top:8px;width:36px;text-align:center;font:400 30px/1 "Bebas Neue",cursive;color:var(--on-accent-color)}.markdown dt{font-family:"Bebas Neue",cursive;font-size:18px;letter-spacing:.08em;text-transform:uppercase;margin:0;padding:0;color:var(--post-content-dl-dt-color)}.markdown dt:not(:first-child){margin-top:8px}.markdown dd{margin:0;padding:0;color:var(--text-color)}.markdown blockquote.warning::before{content:"";position:absolute;left:0;top:0;bottom:0;width:36px;background:var(--post-content-warning-border)}.markdown blockquote.warning::after{content:"!";position:absolute;left:0;top:6px;width:36px;text-align:center;font:400 30px/1 "Bebas Neue",cursive;color:var(--on-accent-color)}.markdown blockquote.warning .warning-title{font-family:"Bebas Neue",cursive;font-size:20px;letter-spacing:.08em;text-transform:uppercase;margin:0;color:var(--post-content-warning-border);font-weight:400;line-height:1.2}.markdown blockquote.warning .warning-text{margin:0;color:var(--text-color);font-family:"Roboto",sans-serif;font-size:.925rem}.markdown blockquote.warning .warning-content{margin:8px 0 0;padding:8px 12px;overflow-x:auto;background:color-mix(in srgb, var(--text-color-important) 8%, var(--surface-color)) !important;color:var(--text-color) !important;font-family:monospace;font-size:13.6px;line-height:1.5;white-space:pre-wrap}.markdown blockquote.todo::before{content:"";position:absolute;left:0;top:0;bottom:0;width:36px;background:var(--post-content-todo-border)}.markdown blockquote.todo::after{content:"!";position:absolute;left:0;top:6px;width:36px;text-align:center;font:400 30px/1 "Bebas Neue",cursive;color:var(--on-accent-color)}.markdown blockquote.todo{background:color-mix(in srgb, var(--post-content-todo-border) 9%, var(--main-bg-color))}.markdown blockquote.todo .warning-title{color:var(--post-content-todo-border)}.markdown blockquote.todo .warning-content{background:color-mix(in srgb, var(--post-content-todo-border) 13%, var(--main-bg-color)) !important}figure{display:flow-root;width:fit-content;max-width:100%;margin:0 auto 16px;padding:0}figure:focus-visible{outline:2px solid var(--text-color-important);outline-offset:6px}figure .fig-im{position:relative}figure .fig-im:has(+figcaption){border-bottom:1px solid var(--main-accent-color)}figure .fig-im a{display:block}figure img{display:block;max-width:100%;margin:0 auto}figure figcaption{font-family:"Bebas Neue",cursive;font-size:14px;letter-spacing:.06em;text-transform:uppercase;display:grid;grid-template-rows:minmax(1.2em, 0fr);position:static;max-width:100%;margin:0;padding:3px 8px;background:var(--text-color-important);color:var(--main-bg-color);line-height:1.2;text-align:left;transition:grid-template-rows .35s ease-in-out}figure figcaption .txt{display:block;min-height:0;overflow:hidden;text-overflow:ellipsis;white-space:nowrap;transition:white-space 0s linear .3s allow-discrete}figure:hover figcaption,figure:focus-within figcaption,figure.open figcaption{grid-template-rows:minmax(1.2em, 1fr)}figure:hover figcaption .txt,figure:focus-within figcaption .txt,figure.open figcaption .txt{white-space:normal;transition-delay:0s}figure.below figcaption{box-sizing:border-box;width:0;min-width:100%}figure.over figcaption{position:absolute;left:0;bottom:0}@media(prefers-reduced-motion: reduce){figure figcaption,figure figcaption .txt{transition:none}}.markdown .img-gallery-container{margin-bottom:16px}.markdown .img-gallery-row{display:flex;justify-content:flex-start;gap:12px}.markdown .img-gallery-row:not(:first-of-type){margin-top:12px}@media(max-width: 767px){.markdown .img-gallery-row{flex-direction:column}}.markdown .img-gallery-container[style*="--gallery-columns"] .img-gallery-image{flex:0 0 calc((100% - (var(--gallery-columns) - 1)*12px)/var(--gallery-columns))}@media(max-width: 767px){.markdown .img-gallery-container[style*="--gallery-columns"] .img-gallery-image{flex:1 1 auto}}.markdown .img-gallery-image{display:flex;min-width:0;flex:1 1 0}@media(max-width: 767px){.markdown .img-gallery-image{flex:1 1 auto}}.markdown .img-gallery-image figure{display:grid;grid-template-rows:1fr auto;width:100%;height:100%;margin:0}.markdown .img-gallery-image figure .fig-im{min-height:0}.markdown .img-gallery-image figure .fig-im a{height:100%}.markdown .img-gallery-image figure img{width:100%;height:100%;max-height:none;margin:0;object-fit:cover}.markdown p img.inline-img{margin:8px auto}.markdown .embed{--embed: var(--main-accent-color);position:relative;display:flex;align-items:stretch;gap:16px;margin:16px 0;padding:4px 0 4px 54px;color:var(--text-color);text-decoration:none}@media(max-width: 767px){.markdown .embed{flex-direction:column-reverse}}.markdown .embed::before{content:"";position:absolute;left:0;top:0;bottom:0;width:36px;border:2.5px solid var(--embed);border-right:0}.markdown .embed .embed-go{position:absolute;left:8px;top:50%;width:22px;height:22px;margin-top:-11px;color:var(--embed);transition:transform .2s ease}@media(prefers-reduced-motion: reduce){.markdown .embed .embed-go{transition:none}}.markdown .embed:hover .embed-go,.markdown .embed:focus-visible .embed-go{transform:translate(2px, -2px)}.markdown .embed:hover .embed-title,.markdown .embed:focus-visible .embed-title{color:var(--embed)}.markdown .embed .embed-content{flex:1;min-width:0}.markdown .embed .embed-domain{font-family:"Bebas Neue",cursive;font-size:13px;letter-spacing:.08em;text-transform:uppercase;display:block;color:var(--text-color-muted)}.markdown .embed .embed-title{display:block;margin:0 0 3px;color:var(--text-color-important);font-family:"Bebas Neue",cursive;font-size:24px;letter-spacing:.04em;line-height:1.1}.markdown .embed .embed-desc{display:block;margin:0;font-size:14px;line-height:1.45}.markdown .embed .embed-image{flex:none;width:150px;border-radius:2px;background:var(--surface-color) center/cover no-repeat}@media(max-width: 767px){.markdown .embed .embed-image{width:auto;height:110px}}.markdown .embed:is(div) .embed-content a{color:var(--embed)}.markdown .embed:is(div) .embed-content p{margin:0;padding:0;font-size:14px;line-height:1.45}.markdown .embed[class*=youtube]{--embed: var(--embed-youtube-color)}.markdown .embed[class*=github]{--embed: var(--embed-github-color)}.markdown .embed[class*=reddit]{--embed: var(--embed-reddit-color)}.markdown .embed[class*=stackoverflow]{--embed: var(--embed-stackoverflow-color)}.markdown .embed[class*=twitter]{--embed: var(--embed-twitter-color)}.markdown .embed[class*=wikipedia]{--embed: var(--embed-wikipedia-color)}.markdown .embed[class*=hackaday]{--embed: var(--embed-hackaday-color)}.markdown .embed[class*=diagram]{--embed: var(--embed-diagram-color)}.markdown .embed[class*=stackexchange]{--embed: var(--embed-stackoverflow-color)}.markdown .embed[class*=gist]{--embed: var(--embed-github-color)}.markdown blockquote.twitter-tweet{min-height:0;margin:16px 0;padding:0;background:none}.markdown blockquote.twitter-tweet::before,.markdown blockquote.twitter-tweet::after{content:none}.markdown blockquote.twitter-tweet .embed{margin:0}.markdown .twitter-tweet-rendered{margin:16px auto !important}.markdown .video-embed{display:flex;justify-content:center;margin:16px 0}.markdown .video-embed iframe{width:100%;max-width:720px;height:auto;aspect-ratio:16/9;border:0}.markdown .diagram{margin:16px 0}.markdown pre.mermaid{position:relative;margin:0;padding:46px 12px 12px;overflow-x:auto;background:var(--surface-color);color:var(--text-color);font-family:monospace;font-size:13.6px;line-height:1.5;text-align:left;tab-size:4}.markdown pre.mermaid::before{font-family:"Bebas Neue",cursive;font-size:17px;letter-spacing:.08em;text-transform:uppercase;background:var(--text-color-important);color:var(--main-bg-color);border-bottom:2.5px solid var(--main-accent-color);content:"Diagram source — enable JavaScript to see it drawn";position:absolute;left:0;right:0;top:0;padding:6px 12px 3px;line-height:1.2;white-space:nowrap;overflow:hidden;text-overflow:ellipsis}html.js:not(.diagrams-failed) .markdown pre.mermaid:not([data-processed]){visibility:hidden;min-height:120px}.markdown pre.mermaid[data-processed]{padding:0;overflow-x:auto;background:none;text-align:center}.markdown pre.mermaid[data-processed]::before{display:none}.markdown pre.mermaid[data-processed] svg{max-width:100%;height:auto}