.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}@layer properties{@supports (((-webkit-hyphens:none)) and (not (margin-trim:inline))) or ((-moz-orient:inline) and (not (color:rgb(from red r g b)))){*,:before,:after,::backdrop{--tw-rotate-x:initial;--tw-rotate-y:initial;--tw-rotate-z:initial;--tw-skew-x:initial;--tw-skew-y:initial;--tw-border-style:solid;--tw-outline-style:solid}}}@layer theme{:root,:host{--font-sans:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--font-mono:ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace;--spacing:.25rem;--default-transition-duration:.15s;--default-transition-timing-function:cubic-bezier(.4, 0, .2, 1);--default-font-family:var(--font-sans);--default-mono-font-family:var(--font-mono)}}@layer base{*,:after,:before,::backdrop{box-sizing:border-box;border:0 solid;margin:0;padding:0}::file-selector-button{box-sizing:border-box;border:0 solid;margin:0;padding:0}html,:host{-webkit-text-size-adjust:100%;tab-size:4;line-height:1.5;font-family:var(--default-font-family,ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji");font-feature-settings:var(--default-font-feature-settings,normal);font-variation-settings:var(--default-font-variation-settings,normal);-webkit-tap-highlight-color:transparent}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;-webkit-text-decoration:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:var(--default-mono-font-family,ui-monospace, SFMono-Regular, Menlo, Monaco, Consolas, "Liberation Mono", "Courier New", monospace);font-feature-settings:var(--default-mono-font-feature-settings,normal);font-variation-settings:var(--default-mono-font-variation-settings,normal);font-size:1em}small{font-size:80%}sub,sup{vertical-align:baseline;font-size:75%;line-height:0;position:relative}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}:-moz-focusring{outline:auto}progress{vertical-align:baseline}summary{display:list-item}ol,ul,menu{list-style:none}img,svg,video,canvas,audio,iframe,embed,object{vertical-align:middle;display:block}img,video{max-width:100%;height:auto}button,input,select,optgroup,textarea{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}::file-selector-button{font:inherit;font-feature-settings:inherit;font-variation-settings:inherit;letter-spacing:inherit;color:inherit;opacity:1;background-color:#0000;border-radius:0}:where(select:is([multiple],[size])) optgroup{font-weight:bolder}:where(select:is([multiple],[size])) optgroup option{padding-inline-start:20px}::file-selector-button{margin-inline-end:4px}::placeholder{opacity:1}@supports (not ((-webkit-appearance:-apple-pay-button))) or (contain-intrinsic-size:1px){::placeholder{color:currentColor}@supports (color:color-mix(in lab,red,red)){::placeholder{color:color-mix(in oklab,currentcolor 50%,transparent)}}}textarea{resize:vertical}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-date-and-time-value{min-height:1lh;text-align:inherit}::-webkit-datetime-edit{display:inline-flex}::-webkit-datetime-edit-fields-wrapper{padding:0}::-webkit-datetime-edit{padding-block:0}::-webkit-datetime-edit-year-field{padding-block:0}::-webkit-datetime-edit-month-field{padding-block:0}::-webkit-datetime-edit-day-field{padding-block:0}::-webkit-datetime-edit-hour-field{padding-block:0}::-webkit-datetime-edit-minute-field{padding-block:0}::-webkit-datetime-edit-second-field{padding-block:0}::-webkit-datetime-edit-millisecond-field{padding-block:0}::-webkit-datetime-edit-meridiem-field{padding-block:0}::-webkit-calendar-picker-indicator{line-height:1}:-moz-ui-invalid{box-shadow:none}button,input:where([type=button],[type=reset],[type=submit]){appearance:button}::file-selector-button{appearance:button}::-webkit-inner-spin-button{height:auto}::-webkit-outer-spin-button{height:auto}[hidden]:where(:not([hidden=until-found])){display:none!important}}@layer components;@layer utilities{.fixed{position:fixed}.static{position:static}.m-2{margin:calc(var(--spacing) * 2)}.m-6{margin:calc(var(--spacing) * 6)}.m-10{margin:calc(var(--spacing) * 10)}.m-13{margin:calc(var(--spacing) * 13)}.m-19{margin:calc(var(--spacing) * 19)}.m-20{margin:calc(var(--spacing) * 20)}.m-24{margin:calc(var(--spacing) * 24)}.m-26{margin:calc(var(--spacing) * 26)}.m-30{margin:calc(var(--spacing) * 30)}.m-33{margin:calc(var(--spacing) * 33)}.m-37{margin:calc(var(--spacing) * 37)}.m-41{margin:calc(var(--spacing) * 41)}.m-48{margin:calc(var(--spacing) * 48)}.m-53{margin:calc(var(--spacing) * 53)}.m-55{margin:calc(var(--spacing) * 55)}.m-56{margin:calc(var(--spacing) * 56)}.m-59{margin:calc(var(--spacing) * 59)}.m-60{margin:calc(var(--spacing) * 60)}.m-65{margin:calc(var(--spacing) * 65)}.m-79{margin:calc(var(--spacing) * 79)}.m-90{margin:calc(var(--spacing) * 90)}.m-105{margin:calc(var(--spacing) * 105)}.m-106{margin:calc(var(--spacing) * 106)}.m-108{margin:calc(var(--spacing) * 108)}.m-168{margin:calc(var(--spacing) * 168)}.m-169{margin:calc(var(--spacing) * 169)}.m-180{margin:calc(var(--spacing) * 180)}.m-187{margin:calc(var(--spacing) * 187)}.m-195{margin:calc(var(--spacing) * 195)}.m-235{margin:calc(var(--spacing) * 235)}.m-238{margin:calc(var(--spacing) * 238)}.m-900{margin:calc(var(--spacing) * 900)}.m-1550{margin:calc(var(--spacing) * 1550)}.m-1728{margin:calc(var(--spacing) * 1728)}.m-2698{margin:calc(var(--spacing) * 2698)}.m-3366{margin:calc(var(--spacing) * 3366)}.m-3951{margin:calc(var(--spacing) * 3951)}.m-5119{margin:calc(var(--spacing) * 5119)}.m-5525{margin:calc(var(--spacing) * 5525)}.m-5990{margin:calc(var(--spacing) * 5990)}.m-6124{margin:calc(var(--spacing) * 6124)}.block{display:block}.inline{display:inline}.h-3{height:calc(var(--spacing) * 3)}.h-full{height:100%}.w-3{width:calc(var(--spacing) * 3)}.w-full{width:100%}.transform{transform:var(--tw-rotate-x,) var(--tw-rotate-y,) var(--tw-rotate-z,) var(--tw-skew-x,) var(--tw-skew-y,)}.border{border-style:var(--tw-border-style);border-width:1px}.outline{outline-style:var(--tw-outline-style);outline-width:1px}.transition{transition-property:color,background-color,border-color,outline-color,text-decoration-color,fill,stroke,--tw-gradient-from,--tw-gradient-via,--tw-gradient-to,opacity,box-shadow,transform,translate,scale,rotate,filter,-webkit-backdrop-filter,backdrop-filter,display,content-visibility,overlay,pointer-events;transition-timing-function:var(--tw-ease,var(--default-transition-timing-function));transition-duration:var(--tw-duration,var(--default-transition-duration))}}:root{--flexoki-black:#100f0f;--flexoki-paper:#fffcf0;--flexoki-bg-main:#100f0f;--flexoki-bg-alt:#1c1b1a;--flexoki-border-base:#282726;--flexoki-border-hover:#343331;--flexoki-border-active:#403e3c;--flexoki-text-faint:#575653;--flexoki-text-muted:#878580;--flexoki-text-primary:#cecdc3;--flexoki-text-error:#d14d41;--flexoki-text-warning:#da702c;--flexoki-text-success:#879a39;--flexoki-text-link:#3aa99f;--flexoki-syntax-constant:#d0a215;--flexoki-syntax-variable:#4385be;--flexoki-syntax-number:#8b7ec8;--flexoki-syntax-keyword:#ce5d97;--flexoki-light-bg:#fffcf0;--flexoki-light-bg-2:#f2f0e5;--flexoki-light-ui:#e6e4d9;--flexoki-light-ui-2:#dad8ce;--flexoki-light-ui-3:#cecdc3;--flexoki-light-tx:#100f0f;--flexoki-light-tx-2:#6f6e69;--flexoki-light-tx-3:#b7b5ac;--flexoki-dark-bg:#100f0f;--flexoki-dark-bg-2:#1c1b1a;--flexoki-dark-ui:#282726;--flexoki-dark-ui-2:#343331;--flexoki-dark-ui-3:#403e3c;--flexoki-dark-tx:#cecdc3;--flexoki-dark-tx-2:#878580;--flexoki-dark-tx-3:#575653;--flexoki-base-50:#f2f0e5;--flexoki-base-100:#e6e4d9;--flexoki-base-150:#dad8ce;--flexoki-base-200:#cecdc3;--flexoki-base-300:#b7b5ac;--flexoki-base-400:#9f9d96;--flexoki-base-500:#878580;--flexoki-base-600:#6f6e69;--flexoki-base-700:#575653;--flexoki-base-800:#403e3c;--flexoki-base-850:#343331;--flexoki-base-900:#282726;--flexoki-base-950:#1c1b1a;--flexoki-red-50:#ffe1d5;--flexoki-red-100:#ffcabb;--flexoki-red-150:#fdb2a2;--flexoki-red-200:#f89a8a;--flexoki-red-300:#e8705f;--flexoki-red-400:#d14d41;--flexoki-red-500:#c03e35;--flexoki-red-600:#af3029;--flexoki-red-700:#942822;--flexoki-red-800:#6c201c;--flexoki-red-850:#551b18;--flexoki-red-900:#3e1715;--flexoki-red-950:#261312;--flexoki-orange-50:#ffe1d5;--flexoki-orange-100:#ffcabb;--flexoki-orange-150:#fdb2a2;--flexoki-orange-200:#f89a8a;--flexoki-orange-300:#e8705f;--flexoki-orange-400:#d14d41;--flexoki-orange-500:#c03e35;--flexoki-orange-600:#af3029;--flexoki-orange-700:#942822;--flexoki-orange-800:#6c201c;--flexoki-orange-850:#551b18;--flexoki-orange-900:#3e1715;--flexoki-orange-950:#261312;--flexoki-yellow-50:#faeec6;--flexoki-yellow-100:#f6e2a0;--flexoki-yellow-150:#f1d67e;--flexoki-yellow-200:#eccb60;--flexoki-yellow-300:#dfb431;--flexoki-yellow-400:#d0a215;--flexoki-yellow-500:#be9207;--flexoki-yellow-600:#ad8301;--flexoki-yellow-700:#8e6b01;--flexoki-yellow-800:#664d01;--flexoki-yellow-850:#503d02;--flexoki-yellow-900:#3a2d04;--flexoki-yellow-950:#241e08;--flexoki-green-50:#edeecf;--flexoki-green-100:#dde2b2;--flexoki-green-150:#cdd597;--flexoki-green-200:#bec97e;--flexoki-green-300:#a0af54;--flexoki-green-400:#879a39;--flexoki-green-500:#768d21;--flexoki-green-600:#66800b;--flexoki-green-700:#536907;--flexoki-green-800:#3d4c07;--flexoki-green-850:#313d07;--flexoki-green-900:#252d09;--flexoki-green-950:#1a1e0c;--flexoki-cyan-50:#ddf1e4;--flexoki-cyan-100:#bfe8d9;--flexoki-cyan-150:#a2dece;--flexoki-cyan-200:#87d3c3;--flexoki-cyan-300:#5abdac;--flexoki-cyan-400:#3aa99f;--flexoki-cyan-500:#2f968d;--flexoki-cyan-600:#24837b;--flexoki-cyan-700:#1c6c66;--flexoki-cyan-800:#164f4a;--flexoki-cyan-850:#143f3c;--flexoki-cyan-900:#122f2c;--flexoki-cyan-950:#101f1d;--flexoki-blue-50:#e1eceb;--flexoki-blue-100:#c6dde8;--flexoki-blue-150:#abcfe2;--flexoki-blue-200:#92bfdb;--flexoki-blue-300:#66a0c8;--flexoki-blue-400:#4385be;--flexoki-blue-500:#3171b2;--flexoki-blue-600:#205ea6;--flexoki-blue-700:#1a4f8c;--flexoki-blue-800:#163b66;--flexoki-blue-850:#133051;--flexoki-blue-900:#12253b;--flexoki-blue-950:#101a24;--flexoki-purple-50:#f0eaec;--flexoki-purple-100:#e2d9e9;--flexoki-purple-150:#d3cae6;--flexoki-purple-200:#c4b9e0;--flexoki-purple-300:#a699d0;--flexoki-purple-400:#8b7ec8;--flexoki-purple-500:#735eb5;--flexoki-purple-600:#5e409d;--flexoki-purple-700:#4f3685;--flexoki-purple-800:#3c2a62;--flexoki-purple-850:#31234e;--flexoki-purple-900:#261c39;--flexoki-purple-950:#1a1623;--flexoki-magenta-50:#fee4e5;--flexoki-magenta-100:#fccfda;--flexoki-magenta-150:#f9b9cf;--flexoki-magenta-200:#f4a4c2;--flexoki-magenta-300:#e47da8;--flexoki-magenta-400:#ce5d97;--flexoki-magenta-500:#b74583;--flexoki-magenta-600:#a02f6f;--flexoki-magenta-700:#87285e;--flexoki-magenta-800:#641f46;--flexoki-magenta-850:#4f1b39;--flexoki-magenta-900:#39172b;--flexoki-magenta-950:#24131d;--content-max-width:56rem;--content-padding-x:1.5rem;--section-space:3rem;--section-heading-space:1rem;--accent-stroke:1px;--line-height:1.5;--heading-weight:500;--background:var(--flexoki-dark-bg);--foreground:var(--flexoki-dark-tx);--muted:var(--flexoki-base-400);--faint:var(--flexoki-dark-tx-3);--border:var(--flexoki-dark-ui);--ui-element:var(--flexoki-dark-ui);--action:var(--flexoki-cyan-400)}@media(max-width:860px){:root{--heading-weight:600}}@media(min-width:640px){:root{--content-padding-x:2rem}}@media(min-width:768px){:root{--content-padding-x:4rem}}[data-theme=dark]{--background:var(--flexoki-dark-bg);--foreground:var(--flexoki-dark-tx);--muted:var(--flexoki-base-400);--faint:var(--flexoki-dark-tx-3);--border:var(--flexoki-dark-ui);--ui-element:var(--flexoki-dark-ui);--action:var(--flexoki-cyan-400)}[data-theme=light]{--background:var(--flexoki-light-bg);--foreground:var(--flexoki-light-tx);--muted:var(--flexoki-base-700);--faint:var(--flexoki-light-tx-3);--border:var(--flexoki-light-ui);--ui-element:var(--flexoki-light-ui);--action:var(--flexoki-cyan-600)}html{text-wrap:pretty}body{font-family:-apple-system,BlinkMacSystemFont,Inter,IBM Plex Sans,Segoe UI,Helvetica,Arial,sans-serif;line-height:var(--line-height);color:var(--foreground);background-color:var(--background);margin:0}.content-wrap{width:100%;max-width:var(--content-max-width);padding:3rem var(--content-padding-x) 4rem;margin:0 auto}@media(min-width:640px){.content-wrap{padding-top:3.5rem}}@media(min-width:768px){.content-wrap{padding-top:4rem}}article{display:block}h1,h2,h3,h4,h5,h6{color:var(--foreground);line-height:1.3}h1{font-size:calc(1.35em + .55vw);font-weight:var(--heading-weight);margin-top:1.5em;margin-bottom:.25em;line-height:1.25}.section-heading{margin-top:0;margin-bottom:var(--section-heading-space);border-bottom:var(--accent-stroke) solid var(--border);padding-bottom:.5rem;font-size:calc(1.4em + .32vw);font-weight:600;line-height:1.25}h3{font-size:1em;font-weight:var(--heading-weight);margin-top:1em;margin-bottom:.35em;line-height:1.3}h4{font-size:calc(1rem + .15vw)}p,li{font-size:calc(1rem + .1vw)}article p,article li{margin-top:.75em;margin-bottom:.75em}a{color:var(--foreground);text-underline-offset:.15em;text-decoration:underline}a:hover{color:var(--action)}h1 a,h2 a,h3 a{color:inherit;text-underline-offset:.15em;text-decoration:underline}h1 a:hover,h2 a:hover,h3 a:hover{color:var(--action)}.meta{color:var(--muted);font-size:.875em}.summary{color:var(--muted)}.text-error{color:var(--flexoki-text-error)}.keywords{color:var(--muted);font-size:.875em}ul{padding-left:1.25rem}article ul{padding-left:1.5rem;list-style-type:disc;list-style-position:outside}article li{display:list-item}article li::marker{color:var(--muted)}.entry-highlights{margin:.9em 0 0;padding-left:1.35rem;list-style-type:disc;list-style-position:outside}.entry-highlights li{text-wrap:pretty;color:var(--muted);margin:.45em 0;line-height:1.55;display:list-item}.entry-highlights li::marker{color:var(--faint)}.entry-keywords{color:var(--muted);margin:1em 0 0;font-size:.8125rem}.entry-tags{flex-wrap:wrap;gap:.375rem .5rem;margin:1em 0 0;padding:0;list-style:none;display:flex}.entry-tags li{color:var(--muted);background-color:var(--ui-element);border:1px solid var(--border);border-radius:9999px;margin:0;padding:.2em .65em;font-size:.8125rem;line-height:1.4;display:inline-block}.entry-accent+.entry-accent{margin-top:2rem}.entry-accent .entry-tags{padding-left:0}.entry-title{margin:0;font-size:calc(1rem + .2vw);font-weight:500;line-height:1.35}.entry-summary{max-width:62ch;color:var(--muted);margin:.5em 0 0;line-height:1.55}.page-header h1{margin-top:0}.page-header-top{margin-bottom:var(--section-heading-space);justify-content:space-between;align-items:center;gap:1rem;display:flex}.location{align-items:baseline;gap:.375rem;margin-top:.5rem;display:inline-flex}.location-icon{flex-shrink:0;width:.75rem;height:.75rem}.page-header>:last-child{margin-bottom:0}.content-section{margin-top:var(--section-space);display:flow-root}.content-section>:last-child,.content-section .entry-highlights li:last-child,.content-section .entry-tags li:last-child,.content-section .entry-accent:last-child>:last-child{margin-bottom:0}.resume-entry,.content-section>.projects-list{margin-top:0}.resume-entry-header{flex-direction:column;gap:.35rem;margin-bottom:0;display:flex}.resume-entry-leading{min-width:0}.resume-entry-dates{margin:0}.resume-entry-separator{color:var(--muted);-webkit-user-select:none;user-select:none;padding:0 .25em;font-weight:500}.resume-entry-subtitle{font-weight:400}@media(min-width:640px){.resume-entry-header{flex-direction:row;justify-content:space-between;align-items:flex-start;gap:1.5rem}.resume-entry-dates{text-align:right;white-space:nowrap;flex-shrink:0}}.resume-entry .entry-highlights{margin-top:.9em}html[data-theme=light]{background-color:var(--flexoki-light-bg)}html[data-theme=dark]{background-color:var(--flexoki-dark-bg)}.projects-list{flex-direction:column;display:flex}.project-entry-header{margin-bottom:0}.project-title-link{font:inherit;color:inherit;text-align:left;text-underline-offset:.15em;margin:0;padding:0;font-weight:500;line-height:1.35;text-decoration:underline;transition:color .15s;display:inline}.project-title-link:hover{color:var(--flexoki-text-link)}.project-title-link:focus-visible{outline:1px solid var(--flexoki-cyan-400);outline-offset:2px;border-radius:2px}.project-page-header{margin-bottom:var(--section-heading-space);justify-content:space-between;align-items:center;gap:1rem;display:flex}.project-back-link{color:var(--muted);font-size:.9375rem;text-decoration:none}.project-back-link:hover{color:var(--foreground);text-underline-offset:.15em;text-decoration:underline}.project-back-link:focus-visible{outline:1px solid var(--flexoki-cyan-400);outline-offset:2px;border-radius:2px}.project-page .entry-title,.project-detail-header{margin:0}.project-page .entry-summary{color:var(--muted);margin-top:.75em}.project-page .entry-highlights{margin-top:1em}.project-page .entry-highlights li{color:var(--muted)}.project-page .entry-highlights li::marker{color:var(--faint)}.project-page .entry-tags{margin-top:1em}.project-page .entry-tags li{color:var(--muted);background-color:var(--ui-element);border:1px solid var(--border)}.project-page a.project-external-link{color:var(--action);text-underline-offset:.15em;margin-top:.35em;font-size:.875rem;text-decoration:underline;display:inline-block}.project-page a.project-external-link:hover{color:var(--action)}@property --tw-rotate-x{syntax:"*";inherits:false}@property --tw-rotate-y{syntax:"*";inherits:false}@property --tw-rotate-z{syntax:"*";inherits:false}@property --tw-skew-x{syntax:"*";inherits:false}@property --tw-skew-y{syntax:"*";inherits:false}@property --tw-border-style{syntax:"*";inherits:false;initial-value:solid}@property --tw-outline-style{syntax:"*";inherits:false;initial-value:solid}.theme-toggle[data-astro-cid-x3pjskd3]{position:relative;display:inline-flex;align-items:center;justify-content:center;width:2.25rem;height:2.25rem;border:none;border-radius:.375rem;background-color:transparent;cursor:pointer;transition:background-color .15s ease}.theme-toggle[data-astro-cid-x3pjskd3]:focus-visible{outline:1px solid var(--flexoki-cyan-400);outline-offset:2px}[data-theme=light] .theme-toggle[data-astro-cid-x3pjskd3]:hover{background-color:var(--flexoki-base-100)}[data-theme=dark] .theme-toggle[data-astro-cid-x3pjskd3]:hover{background-color:var(--flexoki-base-900)}.sun-icon[data-astro-cid-x3pjskd3],.moon-icon[data-astro-cid-x3pjskd3]{position:absolute;width:1.2rem;height:1.2rem;transition:transform .2s ease,opacity .2s ease}.sun-icon[data-astro-cid-x3pjskd3]{transform:rotate(0) scale(1);opacity:1;color:var(--flexoki-light-tx)}.moon-icon[data-astro-cid-x3pjskd3]{transform:rotate(90deg) scale(0);opacity:0}[data-theme=dark] .sun-icon[data-astro-cid-x3pjskd3]{transform:rotate(-90deg) scale(0);opacity:0}[data-theme=dark] .moon-icon[data-astro-cid-x3pjskd3]{transform:rotate(0) scale(1);opacity:1;color:var(--flexoki-dark-tx)}
