@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-latin-400-normal.CDDApCn2.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-400-normal.CYLoc0-x.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-sans-latin-ext-400-normal.C5H60-Va.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-ext-400-normal.RBey6euL.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-latin-500-normal.6ng42L7E.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-500-normal.BgVn5rGT.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:500;src:url(/_astro/ibm-plex-sans-latin-ext-500-normal.DakdToA3.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-ext-500-normal.D0aIdm-b.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-latin-600-normal.CuJfVYMP.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-600-normal.Cu4Hd6ag.woff)format("woff")}@font-face{font-family:IBM Plex Sans;font-style:normal;font-display:swap;font-weight:600;src:url(/_astro/ibm-plex-sans-latin-ext-600-normal.DOrvGEcy.woff2)format("woff2"),url(/_astro/ibm-plex-sans-latin-ext-600-normal.DIrixKbi.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-400-normal.DMJ8VG8y.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-400-normal.CvHOgSBP.woff)format("woff")}@font-face{font-family:IBM Plex Mono;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/ibm-plex-mono-latin-ext-400-normal.BmRBH3aV.woff2)format("woff2"),url(/_astro/ibm-plex-mono-latin-ext-400-normal.D3D2R8hC.woff)format("woff")}:root{--font-sans:"IBM Plex Sans", system-ui, -apple-system, "Segoe UI", sans-serif;--font-mono:"IBM Plex Mono", ui-monospace, "SFMono-Regular", Menlo, monospace;--color-bg:#13161c;--color-surface:#1a1e25;--color-surface-hover:#1f242c;--color-border:#2a303a;--color-border-strong:#3b424e;--color-text:#e8eaee;--color-muted:#a3abb7;--color-accent:#a78bfa;--color-accent-strong:#8b5cf6;--page-width:68rem;--gutter:clamp(1rem, 4vw, 2rem);--header-height:4rem;--title-gap:2rem;--radius:10px;--radius-small:6px;--ease:cubic-bezier(.22, 1, .36, 1);color-scheme:dark}*,:before,:after{box-sizing:border-box}html{-webkit-text-size-adjust:100%;text-size-adjust:100%;scroll-padding-top:calc(var(--header-height) + 1rem);scrollbar-gutter:stable}body{background:var(--color-bg);color:var(--color-text);font-family:var(--font-sans);-webkit-font-smoothing:antialiased;margin:0;font-size:1rem;line-height:1.6}h1,h2,h3,h4,p,ul,ol,dl,dd,figure{margin:0}h1,h2,h3,h4{text-wrap:balance;font-weight:600;line-height:1.25}p{text-wrap:pretty}a{color:inherit}img{max-width:100%;height:auto;display:block}button{font:inherit;color:inherit}:focus-visible{outline:2px solid var(--color-accent-strong);outline-offset:3px;border-radius:4px}::selection{background:#8b5cf659}.page{flex-direction:column;min-height:100dvh;display:flex}.container{width:100%;max-width:var(--page-width);padding-inline:var(--gutter);margin-inline:auto}.main{flex:1;padding-block:clamp(2rem,6vw,4rem)}.page-title{letter-spacing:-.02em;font-size:clamp(1.75rem,1.4rem + 1.4vw,2.25rem)}.section+.section{margin-top:clamp(2.5rem,6vw,4rem)}.section-title{letter-spacing:-.01em;margin-bottom:1rem;font-size:1.125rem}.card{background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);padding:1.25rem 1.5rem}@media (width<=40rem){.card{padding:1.125rem 1.25rem}}.muted{color:var(--color-muted)}.mono{font-family:var(--font-mono);font-size:.85em}.text-link{color:var(--color-accent);text-underline-offset:.2em;text-decoration:underline 1px}@media (hover:hover){.text-link:hover{text-decoration-thickness:2px}}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{left:var(--gutter);z-index:100;border-radius:var(--radius-small);background:var(--color-text);color:var(--color-bg);padding:.5rem 1rem;text-decoration:none;position:absolute;top:-4rem}.skip-link:focus{top:.75rem}.button{border:1px solid var(--color-border-strong);min-height:2.5rem;color:var(--color-text);cursor:pointer;background:0 0;border-radius:8px;align-items:center;gap:.5rem;padding:0 1rem;font-size:.9375rem;font-weight:500;text-decoration:none;transition:background-color .15s,border-color .15s;display:inline-flex}.button--primary{background:var(--color-text);border-color:var(--color-text);color:var(--color-bg)}.button i{font-size:.9em}.icon-button{border:1px solid var(--color-border-strong);width:2.5rem;height:2.5rem;color:var(--color-muted);border-radius:8px;place-items:center;text-decoration:none;transition:color .15s,border-color .15s;display:inline-grid}@media (hover:hover){.button:hover{background:var(--color-surface-hover);border-color:var(--color-muted)}.button--primary:hover{background:#fff;border-color:#fff}.icon-button:hover{color:var(--color-text);border-color:var(--color-muted)}}@media (pointer:coarse){.button{min-height:2.75rem}.icon-button{width:2.75rem;height:2.75rem}}.chips{flex-wrap:wrap;gap:.5rem;padding:0;list-style:none;display:flex}.chip{border:1px solid var(--color-border);color:var(--color-muted);border-radius:999px;align-items:center;gap:.45rem;padding:.2rem .65rem;font-size:.8125rem;line-height:1.6;display:inline-flex}.chip i{text-align:center;width:1.15em;font-size:1rem;display:inline-block}@media (width>=64rem) and (height>=37.5rem){:root{--page-width:76rem;--spare-height:calc(100dvh - 700px);--title-gap:clamp(1rem, calc(var(--spare-height) * .06), 2rem)}.main{padding-block:clamp(1rem, calc(var(--spare-height) * .15), 4rem)}.page-title{font-size:clamp(1.5rem, calc(1.5rem + var(--spare-height) * .025), 2.25rem)}.section+.section{margin-top:clamp(1.5rem, calc(var(--spare-height) * .15), 3rem)}}@media (prefers-reduced-motion:reduce){*,:before,:after{transition:none!important;animation:none!important}}.fa{font-family:var(--fa-style-family,"Font Awesome 6 Free");font-weight:var(--fa-style,900)}.fa,.fa-classic,.fa-sharp,.fas,.fa-solid,.far,.fa-regular,.fab,.fa-brands{-moz-osx-font-smoothing:grayscale;-webkit-font-smoothing:antialiased;display:var(--fa-display,inline-block);font-variant:normal;text-rendering:auto;font-style:normal;line-height:1}.fas,.fa-classic,.fa-solid,.far,.fa-regular{font-family:"Font Awesome 6 Free"}.fab,.fa-brands{font-family:"Font Awesome 6 Brands"}.fa-1x{font-size:1em}.fa-2x{font-size:2em}.fa-3x{font-size:3em}.fa-4x{font-size:4em}.fa-5x{font-size:5em}.fa-6x{font-size:6em}.fa-7x{font-size:7em}.fa-8x{font-size:8em}.fa-9x{font-size:9em}.fa-10x{font-size:10em}.fa-2xs{vertical-align:.225em;font-size:.625em;line-height:.1em}.fa-xs{vertical-align:.125em;font-size:.75em;line-height:.08333em}.fa-sm{vertical-align:.05357em;font-size:.875em;line-height:.07143em}.fa-lg{vertical-align:-.075em;font-size:1.25em;line-height:.05em}.fa-xl{vertical-align:-.125em;font-size:1.5em;line-height:.04167em}.fa-2xl{vertical-align:-.1875em;font-size:2em;line-height:.03125em}.fa-fw{text-align:center;width:1.25em}.fa-ul{margin-left:var(--fa-li-margin,2.5em);padding-left:0;list-style-type:none}.fa-ul>li{position:relative}.fa-li{left:calc(var(--fa-li-width,2em) * -1);text-align:center;width:var(--fa-li-width,2em);line-height:inherit;position:absolute}.fa-border{border-color:var(--fa-border-color,#eee);border-radius:var(--fa-border-radius,.1em);border-style:var(--fa-border-style,solid);border-width:var(--fa-border-width,.08em);padding:var(--fa-border-padding,.2em .25em .15em)}.fa-pull-left{float:left;margin-right:var(--fa-pull-margin,.3em)}.fa-pull-right{float:right;margin-left:var(--fa-pull-margin,.3em)}.fa-beat{-webkit-animation-name:fa-beat;animation-name:fa-beat;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-bounce{-webkit-animation-name:fa-bounce;animation-name:fa-bounce;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28, .84, .42, 1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.28, .84, .42, 1))}.fa-fade{-webkit-animation-name:fa-fade;animation-name:fa-fade;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4, 0, .6, 1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4, 0, .6, 1))}.fa-beat-fade{-webkit-animation-name:fa-beat-fade;animation-name:fa-beat-fade;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4, 0, .6, 1));animation-timing-function:var(--fa-animation-timing,cubic-bezier(.4, 0, .6, 1))}.fa-flip{-webkit-animation-name:fa-flip;animation-name:fa-flip;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,ease-in-out);animation-timing-function:var(--fa-animation-timing,ease-in-out)}.fa-shake{-webkit-animation-name:fa-shake;animation-name:fa-shake;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-delay:var(--fa-animation-delay,0s);animation-delay:var(--fa-animation-delay,0s);-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,2s);animation-duration:var(--fa-animation-duration,2s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,linear);animation-timing-function:var(--fa-animation-timing,linear)}.fa-spin-reverse{--fa-animation-direction:reverse}.fa-pulse,.fa-spin-pulse{-webkit-animation-name:fa-spin;animation-name:fa-spin;-webkit-animation-direction:var(--fa-animation-direction,normal);animation-direction:var(--fa-animation-direction,normal);-webkit-animation-duration:var(--fa-animation-duration,1s);animation-duration:var(--fa-animation-duration,1s);-webkit-animation-iteration-count:var(--fa-animation-iteration-count,infinite);animation-iteration-count:var(--fa-animation-iteration-count,infinite);-webkit-animation-timing-function:var(--fa-animation-timing,steps(8));animation-timing-function:var(--fa-animation-timing,steps(8))}@media (prefers-reduced-motion:reduce){.fa-beat,.fa-bounce,.fa-fade,.fa-beat-fade,.fa-flip,.fa-pulse,.fa-shake,.fa-spin,.fa-spin-pulse{-webkit-transition-duration:0s;transition-duration:0s;-webkit-transition-delay:0s;transition-delay:0s;-webkit-animation-duration:1ms;animation-duration:1ms;-webkit-animation-iteration-count:1;animation-iteration-count:1;-webkit-animation-delay:-1ms;animation-delay:-1ms}}@-webkit-keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@keyframes fa-beat{0%,90%{-webkit-transform:scale(1);transform:scale(1)}45%{-webkit-transform:scale(var(--fa-beat-scale,1.25));transform:scale(var(--fa-beat-scale,1.25))}}@-webkit-keyframes fa-bounce{0%{-webkit-transform:scale(1)translateY(0);transform:scale(1)translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1), var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1), var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9), var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9), var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05), var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05), var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1, 1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1, 1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1)translateY(0);transform:scale(1)translateY(0)}to{-webkit-transform:scale(1)translateY(0);transform:scale(1)translateY(0)}}@keyframes fa-bounce{0%{-webkit-transform:scale(1)translateY(0);transform:scale(1)translateY(0)}10%{-webkit-transform:scale(var(--fa-bounce-start-scale-x,1.1), var(--fa-bounce-start-scale-y,.9)) translateY(0);transform:scale(var(--fa-bounce-start-scale-x,1.1), var(--fa-bounce-start-scale-y,.9)) translateY(0)}30%{-webkit-transform:scale(var(--fa-bounce-jump-scale-x,.9), var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em));transform:scale(var(--fa-bounce-jump-scale-x,.9), var(--fa-bounce-jump-scale-y,1.1)) translateY(var(--fa-bounce-height,-.5em))}50%{-webkit-transform:scale(var(--fa-bounce-land-scale-x,1.05), var(--fa-bounce-land-scale-y,.95)) translateY(0);transform:scale(var(--fa-bounce-land-scale-x,1.05), var(--fa-bounce-land-scale-y,.95)) translateY(0)}57%{-webkit-transform:scale(1, 1) translateY(var(--fa-bounce-rebound,-.125em));transform:scale(1, 1) translateY(var(--fa-bounce-rebound,-.125em))}64%{-webkit-transform:scale(1)translateY(0);transform:scale(1)translateY(0)}to{-webkit-transform:scale(1)translateY(0);transform:scale(1)translateY(0)}}@-webkit-keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@keyframes fa-fade{50%{opacity:var(--fa-fade-opacity,.4)}}@-webkit-keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@keyframes fa-beat-fade{0%,to{opacity:var(--fa-beat-fade-opacity,.4);-webkit-transform:scale(1);transform:scale(1)}50%{opacity:1;-webkit-transform:scale(var(--fa-beat-fade-scale,1.125));transform:scale(var(--fa-beat-fade-scale,1.125))}}@-webkit-keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), var(--fa-flip-angle,-180deg))}}@keyframes fa-flip{50%{-webkit-transform:rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), var(--fa-flip-angle,-180deg));transform:rotate3d(var(--fa-flip-x,0), var(--fa-flip-y,1), var(--fa-flip-z,0), var(--fa-flip-angle,-180deg))}}@-webkit-keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0);transform:rotate(0)}}@keyframes fa-shake{0%{-webkit-transform:rotate(-15deg);transform:rotate(-15deg)}4%{-webkit-transform:rotate(15deg);transform:rotate(15deg)}8%,24%{-webkit-transform:rotate(-18deg);transform:rotate(-18deg)}12%,28%{-webkit-transform:rotate(18deg);transform:rotate(18deg)}16%{-webkit-transform:rotate(-22deg);transform:rotate(-22deg)}20%{-webkit-transform:rotate(22deg);transform:rotate(22deg)}32%{-webkit-transform:rotate(-12deg);transform:rotate(-12deg)}36%{-webkit-transform:rotate(12deg);transform:rotate(12deg)}40%,to{-webkit-transform:rotate(0);transform:rotate(0)}}@-webkit-keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}@keyframes fa-spin{0%{-webkit-transform:rotate(0);transform:rotate(0)}to{-webkit-transform:rotate(360deg);transform:rotate(360deg)}}.fa-rotate-90{-webkit-transform:rotate(90deg);transform:rotate(90deg)}.fa-rotate-180{-webkit-transform:rotate(180deg);transform:rotate(180deg)}.fa-rotate-270{-webkit-transform:rotate(270deg);transform:rotate(270deg)}.fa-flip-horizontal{-webkit-transform:scaleX(-1);transform:scaleX(-1)}.fa-flip-vertical{-webkit-transform:scaleY(-1);transform:scaleY(-1)}.fa-flip-both,.fa-flip-horizontal.fa-flip-vertical{-webkit-transform:scale(-1);transform:scale(-1)}.fa-rotate-by{-webkit-transform:rotate(var(--fa-rotate-angle,none));transform:rotate(var(--fa-rotate-angle,none))}.fa-stack{vertical-align:middle;width:2.5em;height:2em;line-height:2em;display:inline-block;position:relative}.fa-stack-1x,.fa-stack-2x{text-align:center;width:100%;z-index:var(--fa-stack-z-index,auto);position:absolute;left:0}.fa-stack-1x{line-height:inherit}.fa-stack-2x{font-size:2em}.fa-inverse{color:var(--fa-inverse,#fff)}.fa-bars:before{content:""}.fa-times:before{content:""}.fa-envelope:before{content:""}.fa-briefcase:before{content:""}.fa-vial:before{content:""}.fa-database:before{content:""}.fa-cube:before{content:""}.fa-cogs:before{content:""}.fa-download:before{content:""}.fa-code:before{content:""}.fa-chevron-down:before{content:""}.fa-arrow-up-right-from-square:before{content:""}.fa-location-dot:before{content:""}.fa-globe:before{content:""}.fa-file-lines:before{content:""}.fa-cubes:before{content:""}.fa-right-left:before{content:""}.fa-envelope-open-text:before{content:""}.fa-arrows-rotate:before{content:""}.fa-github:before{content:""}.fa-linkedin:before{content:""}:root,:host{--fa-style-family-brands:"Font Awesome 6 Brands";--fa-font-brands:normal 400 1em/1 "Font Awesome 6 Brands"}@font-face{font-family:"Font Awesome 6 Brands";font-style:normal;font-weight:400;font-display:block;src:url(/_astro/fa-brands-400.BYAsY3qQ.woff2)format("woff2")}.fab,.fa-brands{font-weight:400}:root,:host{--fa-style-family-classic:"Font Awesome 6 Free";--fa-font-solid:normal 900 1em/1 "Font Awesome 6 Free"}@font-face{font-family:"Font Awesome 6 Free";font-style:normal;font-weight:900;font-display:block;src:url(/_astro/fa-solid-900.BWlyrMMC.woff2)format("woff2")}.fas,.fa-solid{font-weight:900}@font-face{font-family:devicon;src:url(/_astro/devicon.DZ7tEty_.woff2)format("woff2");font-weight:400;font-style:normal;font-display:block}[class^=devicon-],[class*=\ devicon-]{speak:never;font-variant:normal;text-transform:none;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-style:normal;font-weight:400;line-height:1;font-family:devicon!important}.devicon-java-plain:before{content:""}.devicon-python-plain:before{content:""}.devicon-javascript-plain:before{content:""}.devicon-typescript-plain:before{content:""}.devicon-html5-plain:before{content:""}.devicon-css3-plain:before{content:""}.devicon-spring-plain:before{content:""}.devicon-react-original:before{content:""}.devicon-quarkus-plain:before{content:""}.devicon-numpy-plain:before{content:""}.devicon-pandas-plain:before{content:""}.devicon-junit-plain:before{content:""}.devicon-hibernate-plain:before{content:""}.devicon-intellij-plain:before{content:""}.devicon-vscode-plain:before{content:""}.devicon-eclipse-plain:before{content:""}.devicon-android-plain:before{content:""}.devicon-datagrip-plain:before{content:""}.devicon-postgresql-plain:before{content:""}.devicon-mysql-plain:before{content:""}.devicon-oracle-original:before{content:""}.devicon-postman-plain:before{content:""}.devicon-git-plain:before{content:""}.devicon-github-original:before{content:""}.devicon-gitlab-plain:before{content:""}.devicon-jenkins-plain:before{content:""}.devicon-jira-plain:before{content:""}.devicon-confluence-plain:before{content:""}.devicon-bitbucket-original:before{content:""}.devicon-gradle-plain:before{content:""}.devicon-apachekafka-original:before{content:""}.devicon-docker-plain:before{content:""}.devicon-amazonwebservices-plain:before{content:""}.devicon-angular-plain:before{content:""}.devicon-nodejs-plain:before{content:""}.devicon-thymeleaf-plain:before{content:""}.devicon-rabbitmq-original:before{content:""}.devicon-kubernetes-plain:before{content:""}.devicon-xml-plain:before{content:""}.devicon-openapi-plain:before{content:""}.site-footer[data-astro-cid-jo6i4kqk]{border-top:1px solid var(--color-border)}.inner[data-astro-cid-jo6i4kqk]{flex-wrap:wrap;justify-content:space-between;align-items:center;gap:.75rem 1.5rem;padding-block:1.5rem;display:flex}.links[data-astro-cid-jo6i4kqk]{flex-wrap:wrap;gap:.25rem 1.25rem;display:flex}.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{min-height:1.5rem;color:var(--color-muted);align-items:center;font-size:.9rem;text-decoration:none;display:inline-flex}@media (hover:hover){.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]:hover{color:var(--color-text)}}@media (pointer:coarse){.links[data-astro-cid-jo6i4kqk] a[data-astro-cid-jo6i4kqk]{min-height:2.75rem}}@media (width>=64rem) and (height>=37.5rem){.inner[data-astro-cid-jo6i4kqk]{padding-block:.75rem}}.site-header[data-astro-cid-nen7h5rs]{z-index:50;background:var(--color-bg);border-bottom:1px solid var(--color-border);position:sticky;top:0}.bar[data-astro-cid-nen7h5rs]{min-height:var(--header-height);align-items:center;gap:1rem;display:flex;position:relative}.brand[data-astro-cid-nen7h5rs]{place-items:center;min-width:2.75rem;min-height:2.75rem;margin-left:-.375rem;margin-right:auto;display:inline-grid}.brand[data-astro-cid-nen7h5rs] .brand-logo{width:32px;height:32px}.menu[data-astro-cid-nen7h5rs]{align-items:center;gap:.25rem;padding:0;list-style:none;display:flex}.nav-link[data-astro-cid-nen7h5rs]{min-height:2.5rem;color:var(--color-muted);align-items:center;padding:0 .75rem;font-size:.9375rem;text-decoration:none;transition:color .15s;display:inline-flex}.nav-link[data-astro-cid-nen7h5rs][aria-current=page]{color:var(--color-text)}@media (hover:hover){.nav-link[data-astro-cid-nen7h5rs]:hover{color:var(--color-text)}}.nav-link[data-astro-cid-nen7h5rs][aria-current=page]{text-decoration:underline;text-decoration-color:var(--color-accent);text-underline-offset:.5rem;text-decoration-thickness:2px}.nav-cv[data-astro-cid-nen7h5rs]{min-height:2.25rem;margin-left:.5rem}.nav-cv[data-astro-cid-nen7h5rs][aria-current=page]{border-color:var(--color-accent)}.menu-toggle[data-astro-cid-nen7h5rs]{border:1px solid var(--color-border-strong);cursor:pointer;background:0 0;border-radius:8px;width:2.75rem;height:2.75rem;display:none}@media (width<=52rem){.bar[data-astro-cid-nen7h5rs]{gap:0}.menu-toggle[data-astro-cid-nen7h5rs]{place-items:center;display:inline-grid}.menu[data-astro-cid-nen7h5rs]{top:calc(100% + .5rem);right:var(--gutter);left:var(--gutter);background:var(--color-surface);border:1px solid var(--color-border);border-radius:var(--radius);opacity:0;transition:opacity .15s ease, translate .15s var(--ease), display .15s allow-discrete;flex-direction:column;align-items:stretch;padding:.5rem;display:none;position:absolute;translate:0 -.25rem;box-shadow:0 16px 40px #00000080}.menu[data-astro-cid-nen7h5rs].active{opacity:1;display:flex;translate:0}@starting-style{.menu[data-astro-cid-nen7h5rs].active{opacity:0;translate:0 -.25rem}}.nav-link[data-astro-cid-nen7h5rs]{border-radius:var(--radius-small);width:100%;min-height:2.75rem}.nav-link[data-astro-cid-nen7h5rs][aria-current=page]{background:var(--color-surface-hover);box-shadow:inset 2px 0 0 var(--color-accent);text-decoration:none}.nav-cv[data-astro-cid-nen7h5rs]{justify-content:center;width:100%;min-height:2.75rem;margin:.5rem 0 0}}
