@font-face{font-family:Iosevka;font-style:normal;font-display:swap;font-weight:400;src:url(/_astro/iosevka-latin-400-normal.7stTb90X.woff2) format("woff2"),url(/_astro/iosevka-latin-400-normal.BVqCxfc4.woff) format("woff")}@font-face{font-family:Iosevka;font-style:italic;font-display:swap;font-weight:400;src:url(/_astro/iosevka-latin-400-italic.CIbCu8HM.woff2) format("woff2"),url(/_astro/iosevka-latin-400-italic.vtZYYIIb.woff) format("woff")}@font-face{font-family:Iosevka;font-style:normal;font-display:swap;font-weight:700;src:url(/_astro/iosevka-latin-700-normal.CRYvTbw8.woff2) format("woff2"),url(/_astro/iosevka-latin-700-normal.3F2qW26k.woff) format("woff")}:root{--base03: #002b36;--base02: #073642;--base01: #586e75;--base00: #657b83;--base0: #839496;--base1: #93a1a1;--base2: #eee8d5;--base3: #fdf6e3;--yellow: #b58900;--orange: #cb4b16;--red: #dc322f;--magenta: #d33682;--violet: #6c71c4;--blue: #268bd2;--cyan: #2aa198;--green: #859900;--bg: var(--base3);--bg-hl: var(--base2);--text: var(--base01);--text-em: var(--base02);--text-dim: var(--base00);--link: var(--blue);--border: var(--base2);--code-bg: #f3ecd8;--code-bg-elevated: #ebe2ca;--code-border: #dccfb4;--code-gutter-border: #e4d8bf;--code-gutter-text: var(--base00);--code-gutter-text-strong: var(--base01)}[data-theme=dark]{--bg: var(--base03);--bg-hl: var(--base02);--text: var(--base1);--text-em: var(--base2);--text-dim: var(--base0);--border: var(--base02);--code-bg: #0a3641;--code-bg-elevated: #11404c;--code-border: #1c4a55;--code-gutter-border: #21525e;--code-gutter-text: var(--base00);--code-gutter-text-strong: var(--base1)}:root{--mono-font: "Iosevka", ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, monospace;--reading-font: "Spline Sans", "Helvetica Neue", Arial, sans-serif;--font-size: 1.1rem;--line-height: 1.65;--sidebar-w: 240px;--sidebar-gap: 3.5rem}*,*:before,*:after{box-sizing:border-box}*{margin:0;padding:0}img,picture,video,canvas,svg{display:block;max-width:100%}input,button,textarea,select{font:inherit;color:currentColor}html{background:var(--bg);color:var(--text);font-family:var(--reading-font);font-size:var(--font-size);line-height:var(--line-height);-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;transition:background-color .2s ease,color .2s ease}body{min-height:100vh}a{color:var(--link);text-decoration:underline;text-underline-offset:2px;text-decoration-thickness:1px}a:hover{text-decoration-thickness:2px}a:focus-visible{outline:2px solid var(--link);outline-offset:2px;border-radius:2px}strong{font-weight:700;color:var(--text-em)}em{font-style:italic}code,pre,kbd,samp{font-family:var(--mono-font)}::selection{background:var(--blue);color:var(--base3)}.site{display:grid;grid-template-columns:var(--sidebar-w) 1fr;column-gap:var(--sidebar-gap);max-width:1200px;margin:0 auto;padding:3rem 2.5rem;min-height:100vh}.site-sidebar{display:flex;flex-direction:column;align-items:flex-start;gap:1.25rem;position:sticky;top:3rem;align-self:start}.site-avatar-link{display:block}.site-avatar{display:block;width:240px;height:240px;border-radius:50%;object-fit:cover;border:1px solid var(--code-border)}.site-social{display:flex;width:100%;align-items:center;justify-content:center;gap:.75rem;flex-wrap:nowrap}.site-social a{display:inline-flex;align-items:center;color:var(--text-dim);text-decoration:none}.site-social a:hover{color:var(--text-em)}.site-social svg{display:block;width:20px;height:20px}.site-content,.site-main{min-width:0}.theme-toggle{position:fixed;top:1.25rem;right:1.5rem;background:none;border:none;cursor:pointer;color:var(--text-dim);font-family:inherit;font-size:1rem;padding:0;line-height:1;user-select:none;z-index:100}.theme-icon{width:1rem;height:1rem}.theme-toggle:hover{color:var(--text-em)}.site-intro{color:var(--text-dim);margin-bottom:2rem;font-size:1.05rem}.post-list{list-style:none}.post-entry{display:grid;grid-template-columns:12ch 1fr;column-gap:1rem;margin-bottom:1.5rem}.post-date{grid-column:1;grid-row:1;color:var(--text-dim);font-size:1rem;font-family:var(--mono-font);font-weight:400;padding-top:.05em;white-space:nowrap}.post-title{grid-column:2;grid-row:1;color:var(--text-em);text-decoration:none;font-size:18px;font-family:var(--reading-font);font-weight:400}.post-title:hover{color:var(--link);text-decoration:none}.article-header{margin-bottom:2.5rem}.article-title-row{display:flex;align-items:baseline;gap:.45rem}.article-home-link{display:none;color:var(--text-dim);text-decoration:none;font-size:1.05rem;line-height:1;flex:0 0 auto}.article-home-link:hover{color:var(--text-em)}.article-title{font-size:1.375rem;line-height:1.35;color:var(--text-em);font-family:var(--reading-font);font-weight:400;margin-bottom:.5rem}.article-title code{font-family:var(--mono-font);font-size:.92em;color:inherit;background:var(--bg-hl);padding:.08em .28em;border-radius:.2rem}.article-meta{color:var(--text-dim);font-size:.875rem;font-family:var(--mono-font);font-weight:400}.article-body{font-family:var(--reading-font);font-weight:400;text-align:justify;text-justify:inter-word}.article-body p{margin-bottom:1.25rem}.article-body p:last-child{margin-bottom:0}.article-body h2{font-size:1.1875rem;color:var(--text-em);font-weight:700;margin-top:2.5rem;margin-bottom:.75rem}.article-body h3{font-size:1.0625rem;color:var(--text-em);font-weight:700;margin-top:2rem;margin-bottom:.5rem}.article-body ul,.article-body ol{padding-left:2ch;margin-bottom:1.25rem}.article-body li{margin-bottom:.25rem}.article-body blockquote{border-left:2px solid var(--border);padding-left:1rem;margin:1.5rem 0;color:var(--text-dim);font-style:italic}.article-body h2,.article-body h3,.article-body pre,.article-body code,.article-body .expressive-code{text-align:left}.article-body :not(pre)>code{background:var(--bg-hl);padding:.1em .3em;font-size:.9em}.article-body>pre,.article-body pre{background:var(--bg-hl);padding:1rem;overflow-x:auto;max-width:100%;margin:1.5rem 0;border-left:2px solid var(--border)}.article-body>pre>code,.article-body pre>code{background:none;padding:0;font-size:.875rem}.article-body .expressive-code{margin:1.75rem 0;max-width:100%;overflow-x:auto}.article-body .frame{max-width:100%;overflow-x:auto}.article-body img{border:1px solid var(--code-border)}.article-body hr{border:none;border-top:1px solid var(--border);margin:2.5rem 0}.article-body a{color:var(--link)}.page-title{font-size:1.25rem;color:var(--text-em);font-weight:700;margin-bottom:1.5rem}.page-title--with-chevron{display:none;align-items:baseline;gap:.45rem}.page-content h2{font-size:1.125rem;color:var(--text-em);font-weight:700;margin-top:2.5rem;margin-bottom:.75rem}.page-content h3{font-size:1rem;color:var(--text-em);font-weight:700;margin-top:1.75rem;margin-bottom:.25rem}.page-content p{margin-bottom:1.25rem}.page-content p:last-child{margin-bottom:0}.page-content ul,.page-content ol{padding-left:2ch;margin-bottom:1.25rem}.page-content li{margin-bottom:.25rem}.cv-page p,.cv-page li,.about-page p{text-align:justify;text-align-last:left}.about-page .name-ipa{margin:-.5rem 0 1.5rem;color:var(--yellow);font-family:var(--mono-font);font-size:.95rem;letter-spacing:.02em;line-height:1.4}.cv-entry-header{display:flex;justify-content:space-between;align-items:baseline;gap:1rem}.cv-page h2{color:var(--orange)}.cv-entry-header h3{font-size:19px;margin-top:1rem;margin-bottom:0;color:var(--green)}.cv-entry-meta{white-space:nowrap;font-size:.9em;flex-shrink:0;color:var(--yellow)}.cv-pills{display:flex;flex-wrap:wrap;gap:.5rem}.cv-pill{--pill-r: 0;--pill-g: 0;--pill-b: 0;display:inline-flex;align-items:center;gap:.3rem;padding:.15rem .5rem;border:1.5px solid rgba(var(--pill-r),var(--pill-g),var(--pill-b),.45);border-radius:.3rem;font-size:.75em;color:var(--text);background:rgba(var(--pill-r),var(--pill-g),var(--pill-b),.1)}.cv-pill-icon{width:1em;height:1em;flex-shrink:0}.cv-pill--scala{--pill-r: 220;--pill-g: 50;--pill-b: 47}.cv-pill--java{--pill-r: 237;--pill-g: 139;--pill-b: 0}.cv-pill--python{--pill-r: 55;--pill-g: 118;--pill-b: 171}.cv-pill--typescript{--pill-r: 49;--pill-g: 120;--pill-b: 198}.cv-pill--spring{--pill-r: 109;--pill-g: 179;--pill-b: 63}.cv-pill--aws{--pill-r: 255;--pill-g: 153;--pill-b: 0}.cv-pill--terraform{--pill-r: 123;--pill-g: 66;--pill-b: 188}.cv-pill--kubernetes{--pill-r: 50;--pill-g: 108;--pill-b: 229}.cv-pill--kafka{--pill-r: 35;--pill-g: 31;--pill-b: 32}.cv-pill--postgresql{--pill-r: 65;--pill-g: 105;--pill-b: 225}.cv-pill--cockroachdb{--pill-r: 105;--pill-g: 51;--pill-b: 255}.cv-pill--cassandra{--pill-r: 18;--pill-g: 135;--pill-b: 177}.cv-pill--redis{--pill-r: 220;--pill-g: 56;--pill-b: 45}.cv-pill--elasticsearch{--pill-r: 0;--pill-g: 85;--pill-b: 113}.cv-pill--graphql{--pill-r: 225;--pill-g: 0;--pill-b: 152}[data-theme=dark] .cv-pill--kafka{--pill-r: 200;--pill-g: 196;--pill-b: 197}@media(max-width:640px){html{font-size:.975rem}.site{grid-template-columns:1fr;padding:1.5rem 1rem 2rem}.site-sidebar{position:static;width:100%;flex-direction:column;align-items:center;justify-self:center;gap:1rem;margin-bottom:2rem;text-align:center}.site-avatar-link,.site-avatar{margin-inline:auto}.site-social{justify-content:center;flex-wrap:wrap;max-width:min(100%,18rem)}.site-intro{font-size:.97rem;margin-bottom:1.5rem}.post-entry{grid-template-columns:6.5rem 1fr;column-gap:.8rem;margin-bottom:1.15rem}.post-date{font-size:.9rem}.post-title{font-size:1rem}.article-title,.page-title{font-size:1.12rem}.page-title--with-chevron{display:flex}body[data-page-kind=page] .page-content>.page-title--with-chevron+.name-ipa{margin-top:-.25rem}.article-meta{font-size:.8rem}.article-home-link{display:inline-block;font-size:.95rem}.article-body h2,.page-content h2,.cv-page h2{font-size:1rem}.article-body h3,.page-content h3,.cv-entry-header h3{font-size:.92rem}.cv-entry-meta{font-size:.82rem}body[data-page-kind=article] .site-sidebar,body[data-page-kind=page] .site-sidebar{display:none}body[data-page-kind=article] .site,body[data-page-kind=page] .site{padding-top:1.5rem}.about-page .name-ipa{font-size:.9rem;margin-bottom:1.25rem}}@media(max-width:932px)and (max-height:500px)and (pointer:coarse){.article-home-link{display:inline-block;font-size:.95rem}.page-title--with-chevron{display:flex}body[data-page-kind=article] .site-sidebar,body[data-page-kind=page] .site-sidebar{display:none}body[data-page-kind=article] .site,body[data-page-kind=page] .site{grid-template-columns:1fr;padding-top:1.5rem}}
