.astro-route-announcer{position:absolute;left:0;top:0;clip:rect(0 0 0 0);clip-path:inset(50%);overflow:hidden;white-space:nowrap;width:1px;height:1px}@media (prefers-reduced-motion: no-preference){@view-transition{navigation: auto;}}::view-transition-group(root){animation-duration:.4s}@layer reset,base,grid,layout,content-blocks,utils;:root{--base-ff: "Segoe UI", Tahoma, Geneva, Verdana, sans-serif;--base-ff-serif: Cambria, Cochin, Georgia, Times, "Times New Roman", serif;--fs-xs: clamp(.75rem, .7065rem + .2174vw, .875rem);--fs-sm: clamp(.8438rem, .7568rem + .4348vw, 1.0938rem);--fs-md: clamp(.9492rem, .8038rem + .7269vw, 1.3672rem);--fs-lg: clamp(1.0679rem, .8449rem + 1.115vw, 1.709rem);--fs-xl: clamp(1.2014rem, .8762rem + 1.6259vw, 2.1362rem);--fs-xxl: clamp(1.3515rem, .8928rem + 2.2935vw, 2.6703rem);--base-fs: var(--fs-sm);--base-letter-spacing: calc(var(--base-fs) * .02);--_spc: var(--base-fs);--xs: calc(var(--_spc) / 4);--sm: calc(var(--_spc) / 2);--md: var(--_spc);--lg: calc(var(--_spc) * 2);--xl: calc(var(--_spc) * 4);--xxl: calc(var(--_spc) * 6);--light-100: #ffffff;--light-200: #FAFAFA;--light-250: #F3F4F3;--light-300: #D3D4D3;--light-400: #AEB1AE;--light-500: #899189;--dark-100: #6C756C;--dark-200: #434843;--dark-300: #111211;--dark-400: #090d09;--dark-500: #000000;--primary-50: hsl(105, 12%, 80%);--primary-100: #A7CC9B;--primary-200: #77A868;--primary-300: #568C45;--primary-400: #3C722A;--primary-500: hsl(106, 63%, 21%);--primary-600: hsl(106, 43%, 4%);--secondary-100: #F1CDB6;--secondary-200: #C6987A;--secondary-300: #A57251;--secondary-400: #865332;--secondary-500: #663617;--tertiary-100: #B68AA9;--tertiary-200: #965D85;--tertiary-300: #7D3D6A;--tertiary-400: #652652;--tertiary-500: #4D113B;--btn-border-gradient-glow-light: var(--light-300), var(--light-250), var(--light-250), var(--light-300);--btn-border-gradient-glow-dark: var(--dark-200), var(--dark-300), var(--dark-300), var(--dark-200);--btn-border-gradient-glow-light-primary: var(--primary-200), var(--primary-100), var(--primary-100), var(--primary-200);--btn-border-gradient-glow-dark-primary: var(--primary-300), var(--primary-200), var(--primary-200), var(--primary-300);--base-dark: var(--dark-300);--base-darker: var(--dark-400);--base-muted-light: var(--dark-100);--base-muted-dark: var(--light-500);--base-light: var(--light-250);--base-primary-dark: var(--primary-200);--base-primary-light: var(--primary-300);--base-secondary-dark: var(--secondary-200);--base-secondary-light: var(--secondary-300);--base-tertiary-dark: var(--tertiary-200);--base-tertiary-light: var(--tertiary-200);--base-box-bg-light: rgba(0,0,0,.1);--base-box-bg-dark: rgba(255,255,255,.1);--base-neo-light-white-shadow: white;--base-neo-dark-white-shadow: rgba(255,255,255,.1);--base-neo-light-black-shadow: rgba(0,0,0,.1);--base-neo-dark-black-shadow: black;--base-primary-shadow-light: 0 0 .6rem var(--base-primary-light);--base-primary-shadow-dark: 0 0 .6rem var(--base-primary-dark);--base-box-shadow: 0 3px .4rem rgba(0,0,0,.3), 0 6px 1.6rem rgba(0,0,0,.2);--_shadow-x: 4px;--_shadow-y: 4px;--_shadow-blur: .5rem;--base-neo-shadow-light: calc(var(--_shadow-x) * 1) calc(var(--_shadow-y) * 1) var(--_shadow-blur) rgba(0,0,0,.2), calc(var(--_shadow-x) * -1) calc(var(--_shadow-y) * -1) var(--_shadow-blur) rgba(255,255,255,1);--base-neo-shadow-dark: calc(var(--_shadow-x) * 1) calc(var(--_shadow-y) * 1) var(--_shadow-blur) rgba(0,0,0,1), calc(var(--_shadow-x) * -1) calc(var(--_shadow-y) * -1) var(--_shadow-blur) rgba(255,255,255,.2);--anim-out-back: cubic-bezier(.34, 1.56, .64, 1);--base-hr-box-shadow-dark: 0 1px 0 rgba(0,0,0, 1), 0 2px 0 rgba(0,0,0, 1), 0 3px 0 rgba(255, 255, 255, .2);--base-hr-box-shadow-light: 0 1px 0 rgba(0,0,0, .3), 0 3px 0 rgba(255, 255, 255, .6);@media (prefers-color-scheme: light){--theme: 🌞;color-scheme:light}@media (prefers-color-scheme: dark){--theme: 🌗;color-scheme:dark}}:root:has([value=🌞]){--theme: 🌗;color-scheme:dark}:root:has([value=🌞]:checked){--theme: 🌞;color-scheme:light}@layer reset{body{margin:0;min-height:100dvh}h2,h3,h4,h5,h6,p{hyphens:auto}:where(h1){margin:0}p{text-wrap:pretty}hr{display:block;width:100%;border-width:1px;border-style:solid;border-color:transparent;box-shadow:var(--hr-box-shadow)}fieldset{margin:0;padding:0;border:none}img{max-width:100%;height:auto;vertical-align:middle;font-style:italic;object-fit:cover;shape-margin:var(--md)}.nav-list{padding:0;margin:0;list-style:none}#TSFE_ADMIN_PANEL_FORM{position:fixed;bottom:0;right:0}}@layer base{html{color-scheme:light dark}body{--ff: var(--base-ff);--ff-serif: var(--base-ff-serif);--letter-spacing: var(--base-letter-spacing);font-family:var(--ff);font-size:var(--base-fs);line-height:1.675;letter-spacing:var(--letter-spacing);text-rendering:optimizeSpeed;overflow-y:scroll;color-scheme:light;--surface: var(--base-light);--text: var(--base-dark);--text-muted: var(--base-muted-light);--primary: var(--base-primary-light);--secondary: var(--base-secondary-light);--tertiary: var(--base-tertiary-light);--control-box-shadow: var(--base-neo-shadow-light);--hr-box-shadow: var(--base-hr-box-shadow-light);--box-bg: var(--base-box-bg-light);--box-shadow: var(--base-box-shadow);--neo-white-shadow: var(--base-neo-light-white-shadow);--neo-black-shadow: var(--base-neo-light-black-shadow);--primary-shadow: var(--base-primary-shadow-light);--btn-border-gradient-glow: var(--btn-border-gradient-glow-light);@container style(--theme: 🌗){color-scheme:dark;--surface: var(--base-dark);--text: var(--base-light);--text-muted: var(--base-muted-dark);--primary: var(--base-primary-dark);--secondary: var(--base-secondary-dark);--tertiary: var(--base-tertiary-dark);--control-box-shadow: var(--base-neo-shadow-dark);--hr-box-shadow: var(--base-hr-box-shadow-dark);--box-bg: var(--base-box-bg-dark);--box-shadow: var(--base-box-shadow);--neo-white-shadow: var(--base-neo-dark-white-shadow);--neo-black-shadow: var(--base-neo-dark-black-shadow);--primary-shadow: var(--base-primary-shadow-dark);--btn-border-gradient-glow: var(--btn-border-gradient-glow-dark)}--dd: 4px;--dl: -4px;--neo-shadow: 0 0 1px var(--neo-white-shadow), var(--dl) var(--dl) 1rem var(--neo-white-shadow), var(--dl) var(--dl) .6rem var(--neo-white-shadow), 0 0 1px var(--neo-black-shadow), var(--dd) var(--dd) 1rem var(--neo-black-shadow), var(--dd) var(--dd) .6rem var(--neo-black-shadow) }*{&:hover,&:focus-visible{outline-offset:var(--base-outline-offset)}}body>aside{z-index:400000}body>header{z-index:300000}body>main{z-index:200000}body>footer{z-index:100000}body>main{padding-block-end:var(--xxl)}h1,h2,h3,h4{font-family:var(--ff-serif);font-optical-sizing:auto}[class^=icon-],[class*=" icon-"]{display:inline-block;width:attr(width,var(--base-fs));height:attr(height,var(--base-fs));stroke-width:0;stroke:currentColor;fill:currentColor}}@layer grid{body{display:grid;grid-template-rows:auto 1fr auto}.main-grid,.full-width{--grid-padding-inline: clamp(1rem, 1vw, 3rem);--grid-full-width: minmax(var(--grid-padding-inline), 1fr);--grid-content: min(70ch, 100% - var(--grid-padding-inline) * 2);--grid-breakout: minmax(0, var(--lg));--grid-wide: minmax(0, 111px);display:grid;grid-template-columns:[full-width-start] var(--grid-full-width) [wide-start] var(--grid-wide) [breakout-start] var(--grid-breakout) [content-start] var(--grid-content) [content-end] var(--grid-breakout) [breakout-end] var(--grid-wide) [wide-end] var(--grid-full-width) [full-width-end];>:not(.breakout,.wide,.full-width){grid-column:content}>.breakout{grid-column:breakout}>.wide{grid-column:wide}>.full-width{grid-column:full-width}}.nav-list--row{display:flex;align-items:center;flex-wrap:wrap}}@layer layout{body{color:var(--text);background:var(--background, var(--surface));background-attachment:fixed}header{position:sticky;top:0;margin-block:var(--lg) var(--sm);padding-block:var(--md);background:var(--surface)}.hero-img{float:right;min-width:160px;max-width:260px;aspect-ratio:1 / 1;overflow:hidden;border-radius:50%;border:var(--md) solid var(--surface);padding:var(--sm);margin:var(--md);margin-inline-end:0;box-shadow:var(--neo-shadow)}.articles-list{--grid-max-col-count: 3;--grid-min-col-size: 30ch;--grid-gap: var(--lg);list-style:none;margin:0;padding:0;margin-block-start:var(--lg);display:grid;gap:var(--grid-gap);grid-template-columns:repeat(auto-fit,minmax(var(--grid-min-col-size),1fr));align-items:stretch}.article-item{display:grid;grid-template-rows:auto 1fr auto auto}.article-preview{padding:var(--md);display:grid;grid-template-rows:subgrid;grid-row:span 4;gap:var(--sm);border-radius:var(--md);box-shadow:var(--neo-shadow);>*{margin:0}>:nth-child(1){align-self:start}>:nth-child(4){align-self:end}}@supports not (grid-template-rows: subgrid){ul.articles-list>li.articles-item{display:flex;flex-direction:column}.article-preview{display:flex;flex-direction:column;gap:0}.article-preview :nth-child(2){flex:1 1 auto}}.article-header{margin-block-end:var(--md)}.article{margin-block-start:var(--lg);h2,h3,h4,h5,h6,p,blockquote{margin:0;padding:0}h2,h3,h4,h5,h6{margin-block-start:1.2em;grid-column:breakout}p{margin-block:.5em}blockquote{margin-block:1em}a{color:var(--secondary);font-weight:700}sup{display:inline-flex;justify-content:center;align-items:center;width:1.5em;height:1.5em;border-radius:50%;font-family:monospace;background-color:var(--box-bg);font-size:.65em;line-height:1;text-align:center;a{color:var(--text);text-decoration:none;font-weight:700;display:block;width:100%;height:100%;display:flex;justify-content:center;align-items:center}}blockquote{grid-column:breakout;background:var(--box-bg);padding:var(--md);p{margin:0;font-style:italic}}.footnotes{grid-column:breakout;border-top:1px solid var(--box-bg);color:var(--text-muted);font-style:italic;font-size:.85em;margin-block-start:var(--lg);padding-block-start:var(--md);li::marker{color:var(--text-muted)}}[data-footnote-backref]{color:var(--text-muted);text-decoration:none;font-size:.85em}}.btn{--clr1: hsl(from var(--surface) h s calc(l + 10) );--clr11: hsl(from var(--surface) h s calc(l + 8) );--clr2: hsl(from var(--surface) h s calc(l - 4) );--clr22: hsl(from var(--surface) h s calc(l - 8) );--gradient1: hsl(from var(--primary) h s calc(l - 8) );--gradient2: hsl(from var(--primary) h s calc(l + -0) );--gradient3: hsl(from var(--primary) h s calc(l + 8) );--surface-gradient: linear-gradient(135deg, var(--clr1), var(--clr2));--gradient-glow: yellow, red, green, blue, purple;display:inline-block;position:relative;font-size:80%;border-radius:100vw;margin-block:var(--sm);color:var(--text);text-decoration:none;text-transform:uppercase;font-weight:700;z-index:1;box-shadow:var(--neo-shadow);background:var(--surface-gradient);&.btn--lg{font-size:100%}>span{transition:.3s;position:relative;isolation:isolate;display:block;margin:0;padding-block:calc(var(--sm) * 1);padding-inline:calc(var(--md) * 1.1);border-radius:inherit;border:2px solid transparent;background:var(--surface-gradient) padding-box;box-shadow:inset 1px 1px 2px 1px var(--clr22),inset -1px -1px 2px 1px var(--clr11)}&:hover{>span{color:var(--primary)}}}.carousel{list-style:none;margin-block-start:var(--md);margin-block-end:0;margin-inline:calc(var(--lg) * 1.6);padding:var(--md);grid-column:wide;display:grid;grid-auto-flow:column;grid-auto-columns:min(100%,360px);overflow-x:auto;scroll-snap-type:x mandatory;scroll-behavior:smooth;scroll-marker-group:after;anchor-name:var(--anchor-name);--marker-size: calc(var(--md) * 1.3);>li{scroll-snap-align:center}>li::scroll-marker{content:" ";border:2px solid var(--box-bg);width:var(--marker-size);height:calc(var(--marker-size) / 3)}>li::scroll-marker:target-current{border:2px solid var(--text);background:var(--text)}&::scroll-marker-group{grid-area:markers;display:grid;place-content:safe center;grid:var(--marker-size) / auto-flow var(--marker-size);gap:var(--md);padding:calc(var(--marker-size) / 2);scroll-padding:calc(var(--marker-size) / 2);overflow:auto;overscroll-behavior-x:contain;scrollbar-width:none;scroll-snap-type:x mandatory}&::scroll-button(*){position:fixed;position-anchor:var(--anchor-name);margin:var(--sm);cursor:pointer;border:0;background:transparent;font-family:inherit;font-size:larger}&::scroll-button(left){content:"◀" / attr(data-today);position-area:center left}&::scroll-button(right){content:"▶" / attr(data-early);position-area:center right}}.carousel-content{padding:var(--md);height:calc(100% - 2 * var(--md));display:flex;flex-direction:column;justify-content:space-between;h4,p{margin:0}}.job{height:100%;>p{line-height:1.2}>h4,>p{margin-inline:var(--lg)}>h4{text-shadow:var(--primary-shadow);filter:brightness(1.1)}}.carousel li:first-child{margin-left:var(--xl);.job-timeline{background:linear-gradient(to right,transparent 25%,var(--box-bg) 50%)}}.carousel li:last-child{margin-right:var(--xl);.job-timeline{background:linear-gradient(to left,transparent 25%,var(--box-bg) 50%)}}.carousel li:has(.education){height:100%;border:2px solid var(--box-bg)}.carousel:has(.education){gap:var(--lg);grid-auto-columns:min(100%,280px)}.job-timeline{position:relative;background:var(--box-bg);height:var(--xs);margin-block:var(--md);&:after{background:var(--primary);box-shadow:var(--primary-shadow);content:"";position:absolute;top:50%;left:50%;height:var(--md);width:var(--md);border-radius:100%;transform:translate(-50%,-50%)}}.education{padding:var(--md);p,h4{margin:0}}.skills{margin:0;padding:0;list-style:none;display:grid;grid-gap:var(--lg);grid-template-columns:repeat(auto-fit,minmax(min(100%,30ch),1fr))}.skill{position:relative}.skill-bar{position:absolute;bottom:-14px;right:0;left:0}.skill-val{text-align:right;font-size:220%;border-bottom:5px solid var(--box-bg)}.skill-progress{position:absolute;bottom:0;width:var(--val);height:5px;background:var(--primary);box-shadow:var(--primary-shadow)}}@layer content-blocks{.logo{display:grid;place-items:center;h1 a{display:flex;flex-direction:column;justify-content:center;align-items:center;width:fit-content;text-decoration:none;font-size:2.675rem;color:var(--text);strong{line-height:.9}small{color:var(--text-muted);text-transform:uppercase;font-size:25%;letter-spacing:.05em}}}.nav{display:block;width:fit-content;.nav-item{position:relative}.nav-link{display:inline-block;text-decoration:none;text-transform:uppercase;font-weight:700;user-select:none;white-space:nowrap;font-family:var(--ff-serif);color:var(--text-muted);transition:.2s;span{display:block;padding:var(--sm) var(--md)}}.nav-link:hover{color:var(--primary);filter:brightness(1.2)}.nav-link:active{color:var(--tertiary);filter:brightness(1.2)}.nav-link--active{color:var(--text)}}.nav-main{--clr1: hsl(from var(--surface) h s calc(l + 10) );--clr11: hsl(from var(--surface) h s calc(l + 8) );--clr2: hsl(from var(--surface) h s calc(l - 4) );--clr22: hsl(from var(--surface) h s calc(l - 8) );--surface-gradient: linear-gradient(135deg, var(--clr1), var(--clr2));border-radius:var(--sm);@media (max-width: 500px){position:relative;height:36px;width:44px;background:var(--surface);box-shadow:1px 1px 2px 1px var(--clr22),-1px -1px 2px 1px var(--clr11),var(--neo-shadow);&:after{content:" ";position:absolute;top:50%;left:50%;transform:translate(-50%,-50%);height:2px;background-color:var(--text);box-shadow:0 6px 0 0 var(--text),0 -6px 0 0 var(--text);width:70%}.nav-list{display:none;flex-direction:column;gap:var(--md);position:absolute;top:36px;right:0;border-radius:var(--sm);border-top-right-radius:0;background:var(--surface-gradient) border-box;box-shadow:1px 1px 2px 1px var(--clr22),-1px -1px 2px 1px var(--clr11)}&:focus,&:focus-within{border-bottom-left-radius:0;border-bottom-right-radius:0;.nav-list{display:flex}}}@media (min-width: 500px){anchor-name:--hovered-link;border-radius:100vw;.nav-link:hover,.nav-link:focus{anchor-name:--hovered-link}&:after{content:"";z-index:-1;position:absolute;top:calc(anchor(bottom) - 3px);left:anchor(left);right:anchor(right);bottom:calc(anchor(bottom) + 2px);border-radius:100vw;background:var(--surface-gradient) border-box;box-shadow:inset 1px 1px 2px 1px var(--clr22),inset -1px -1px 2px 1px var(--clr11),var(--neo-shadow);position-anchor:--hovered-link;transition:.8s linear(0,.008 1.1%,.034 2.3%,.134 4.9%,.264 7.3%,.683 14.3%,.797 16.5%,.89 18.6%,.967 20.7%,1.027 22.8%,1.073 25%,1.104 27.3%,1.123 30.6%,1.119 34.3%,1.018 49.5%,.988 58.6%,.985 65.2%,1 84.5%,1)}&:has(.nav-link:hover,.nav-link:focus):after{top:anchor(top);left:anchor(left);right:anchor(right);bottom:anchor(bottom)}}}.page-control{position:fixed;bottom:0;right:0;padding-block-start:var(--lg);padding-inline-start:var(--lg);transition:.8s var(--anim-out-back);background:radial-gradient(circle at bottom right,var(--text) 50%,transparent 50%)}.control-item{.theme-switch{color:var(--surface)}}.theme-switch{label{display:grid;place-items:center;position:relative;cursor:pointer;padding:var(--sm)}.toggle{display:block}.theme-label{display:none}input[name=theme]{appearance:none;position:absolute;inset:0;border:none;background:none;z-index:-1}input[name=theme]+.toggle .icon-sun2{display:block}input[name=theme]+.toggle .icon-moon{display:none}input[name=theme]:checked+.toggle .icon-sun2{display:none}input[name=theme]:checked+.toggle .icon-moon{display:block}}}@layer utils{.visually-hidden,.sr-only{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;width:1px;overflow:hidden;position:absolute;white-space:nowrap}.squircle{@supports (corner-shape: squircle){corner-shape:squircle}}.fg-primary{color:var(--primary)}.fg-white{color:#fff}.fg-secondary{color:var(--secondary)}.fg-tertiary{color:var(--tertiary)}.brd-1-default{border:1px solid var(--text)}.neo-shadow{box-shadow:var(--neo-shadow)}.d-none{display:none}.d-grid{display:grid}.d-flex{display:flex}.flex-wrap{flex-wrap:wrap}.flex-nowrap{flex-wrap:nowrap}.justify-space-between{justify-content:space-between}.justify-center{justify-content:center}.justify-end{justify-content:end}.align-center{align-items:center}.align-end{align-items:end}.gap-0{gap:0}.gap-xs{gap:var(--xs)}.gap-sm{gap:var(--sm)}.gap-md{gap:var(--md)}.gap-lg{gap:var(--lg)}.gap-xl{gap:var(--xl)}.row-gap-0{row-gap:0}.row-gap-xs{row-gap:var(--xs)}.row-gap-sm{row-gap:var(--sm)}.row-gap-md{row-gap:var(--md)}.row-gap-lg{row-gap:var(--lg)}.row-gap-xl{row-gap:var(--xl)}.col-gap-0{column-gap:0}.col-gap-xs{column-gap:var(--xs)}.col-gap-sm{column-gap:var(--sm)}.col-gap-md{column-gap:var(--md)}.col-gap-lg{column-gap:var(--lg)}.col-gap-xl{column-gap:var(--xl)}.m-b-0{margin-block:0}.m-b-xs{margin-block:var(--xs)}.m-b-sm{margin-block:var(--sm)}.m-b-md{margin-block:var(--md)}.m-b-lg{margin-block:var(--lg)}.m-b-xl{margin-block:var(--xl)}.m-b-start-0{margin-block-start:0}.m-b-start-xs{margin-block-start:var(--xs)}.m-b-start-sm{margin-block-start:var(--sm)}.m-b-start-md{margin-block-start:var(--md)}.m-b-start-lg{margin-block-start:var(--lg)}.m-b-start-xl{margin-block-start:var(--xl)}.m-b-end-0{margin-block-start:0}.m-b-end-xs{margin-block-end:var(--xs)}.m-b-end-sm{margin-block-end:var(--sm)}.m-b-end-md{margin-block-end:var(--md)}.m-b-end-lg{margin-block-end:var(--lg)}.m-b-end-xl{margin-block-end:var(--xl)}.p-0{padding:0}.p-xs{padding:var(--xs)}.p-sm{padding:var(--sm)}.p-md{padding:var(--md)}.p-lg{padding:var(--lg)}.p-xl{padding:var(--xl)}.p-b-0{padding-block:0}.p-b-xs{padding-block:var(--xs)}.p-b-sm{padding-block:var(--sm)}.p-b-md{padding-block:var(--md)}.p-b-lg{padding-block:var(--lg)}.p-b-xl{padding-block:var(--xl)}.p-b-end-0{padding-block-end:0}.p-b-end-xs{padding-block-end:var(--xs)}.p-b-end-sm{padding-block-end:var(--sm)}.p-b-end-md{padding-block-end:var(--md)}.p-b-end-lg{padding-block-end:var(--lg)}.p-b-end-xl{padding-block-end:var(--xl)}.p-i-0{padding-inline:0}.p-i-xs{padding-inline:var(--xs)}.p-i-sm{padding-inline:var(--sm)}.p-i-md{padding-inline:var(--md)}.p-i-lg{padding-inline:var(--lg)}.p-i-xl{padding-inline:var(--xl)}.brd-radius-xs{border-radius:var(--xs)}.brd-radius-sm{border-radius:var(--sm)}.brd-radius-md{border-radius:var(--md)}.brd-radius-lg{border-radius:var(--lg)}.brd-radius-xl{border-radius:var(--xl)}.text-left{text-align:left}.text-center{text-align:center}.text-right{text-align:right}.text-lead{font-size:var(--fs-md)}.text-bold{font-weight:700}.text-balance{text-wrap:balance}.text-uppercase{text-transform:uppercase}.text-muted{color:var(--text-muted)}}