:root{--md-source: #65c9ff;--md-ref-palette-primary0: #000000;--md-ref-palette-primary10: #001e2d;--md-ref-palette-primary20: #00344a;--md-ref-palette-primary25: #00405a;--md-ref-palette-primary30: #004c6a;--md-ref-palette-primary35: #00597a;--md-ref-palette-primary40: #00658b;--md-ref-palette-primary50: #0080ae;--md-ref-palette-primary60: #289ace;--md-ref-palette-primary70: #4eb5ea;--md-ref-palette-primary80: #7ed0ff;--md-ref-palette-primary90: #c5e7ff;--md-ref-palette-primary95: #e3f3ff;--md-ref-palette-primary98: #f5faff;--md-ref-palette-primary99: #fbfcff;--md-ref-palette-primary100: #ffffff;--md-ref-palette-secondary0: #000000;--md-ref-palette-secondary10: #0a1e28;--md-ref-palette-secondary20: #20333e;--md-ref-palette-secondary25: #2b3e49;--md-ref-palette-secondary30: #374955;--md-ref-palette-secondary35: #425561;--md-ref-palette-secondary40: #4e616d;--md-ref-palette-secondary50: #677a87;--md-ref-palette-secondary60: #8093a1;--md-ref-palette-secondary70: #9baebc;--md-ref-palette-secondary80: #b6c9d8;--md-ref-palette-secondary90: #d1e5f4;--md-ref-palette-secondary95: #e3f3ff;--md-ref-palette-secondary98: #f5faff;--md-ref-palette-secondary99: #fbfcff;--md-ref-palette-secondary100: #ffffff;--md-ref-palette-tertiary0: #000000;--md-ref-palette-tertiary10: #1d1735;--md-ref-palette-tertiary20: #322c4c;--md-ref-palette-tertiary25: #3e3757;--md-ref-palette-tertiary30: #494263;--md-ref-palette-tertiary35: #554e70;--md-ref-palette-tertiary40: #615a7c;--md-ref-palette-tertiary50: #7a7296;--md-ref-palette-tertiary60: #948cb1;--md-ref-palette-tertiary70: #afa6cd;--md-ref-palette-tertiary80: #cbc1e9;--md-ref-palette-tertiary90: #e7deff;--md-ref-palette-tertiary95: #f5eeff;--md-ref-palette-tertiary98: #fdf7ff;--md-ref-palette-tertiary99: #fffbff;--md-ref-palette-tertiary100: #ffffff;--md-ref-palette-neutral0: #000000;--md-ref-palette-neutral10: #191c1e;--md-ref-palette-neutral20: #2e3133;--md-ref-palette-neutral25: #393c3e;--md-ref-palette-neutral30: #454749;--md-ref-palette-neutral35: #505355;--md-ref-palette-neutral40: #5c5f61;--md-ref-palette-neutral50: #75777a;--md-ref-palette-neutral60: #8f9193;--md-ref-palette-neutral70: #aaabae;--md-ref-palette-neutral80: #c5c6c9;--md-ref-palette-neutral90: #e1e2e5;--md-ref-palette-neutral95: #f0f1f3;--md-ref-palette-neutral98: #f9f9fc;--md-ref-palette-neutral99: #fbfcff;--md-ref-palette-neutral100: #ffffff;--md-ref-palette-neutral-variant0: #000000;--md-ref-palette-neutral-variant10: #161c21;--md-ref-palette-neutral-variant20: #2a3136;--md-ref-palette-neutral-variant25: #353c41;--md-ref-palette-neutral-variant30: #41484d;--md-ref-palette-neutral-variant35: #4c5359;--md-ref-palette-neutral-variant40: #585f65;--md-ref-palette-neutral-variant50: #71787e;--md-ref-palette-neutral-variant60: #8b9297;--md-ref-palette-neutral-variant70: #a5acb2;--md-ref-palette-neutral-variant80: #c1c7ce;--md-ref-palette-neutral-variant90: #dde3ea;--md-ref-palette-neutral-variant95: #ebf1f8;--md-ref-palette-neutral-variant98: #f5faff;--md-ref-palette-neutral-variant99: #fbfcff;--md-ref-palette-neutral-variant100: #ffffff;--md-ref-palette-error0: #000000;--md-ref-palette-error10: #410002;--md-ref-palette-error20: #690005;--md-ref-palette-error25: #7e0007;--md-ref-palette-error30: #93000a;--md-ref-palette-error35: #a80710;--md-ref-palette-error40: #ba1a1a;--md-ref-palette-error50: #de3730;--md-ref-palette-error60: #ff5449;--md-ref-palette-error70: #ff897d;--md-ref-palette-error80: #ffb4ab;--md-ref-palette-error90: #ffdad6;--md-ref-palette-error95: #ffedea;--md-ref-palette-error98: #fff8f7;--md-ref-palette-error99: #fffbff;--md-ref-palette-error100: #ffffff;--md-sys-color-primary-light: #00658b;--md-sys-color-on-primary-light: #ffffff;--md-sys-color-primary-container-light: #c5e7ff;--md-sys-color-on-primary-container-light: #001e2d;--md-sys-color-secondary-light: #4e616d;--md-sys-color-on-secondary-light: #ffffff;--md-sys-color-secondary-container-light: #d1e5f4;--md-sys-color-on-secondary-container-light: #0a1e28;--md-sys-color-tertiary-light: #615a7c;--md-sys-color-on-tertiary-light: #ffffff;--md-sys-color-tertiary-container-light: #e7deff;--md-sys-color-on-tertiary-container-light: #1d1735;--md-sys-color-error-light: #ba1a1a;--md-sys-color-error-container-light: #ffdad6;--md-sys-color-on-error-light: #ffffff;--md-sys-color-on-error-container-light: #410002;--md-sys-color-background-light: #fbfcff;--md-sys-color-on-background-light: #191c1e;--md-sys-color-surface-light: #fbfcff;--md-sys-color-on-surface-light: #191c1e;--md-sys-color-surface-variant-light: #dde3ea;--md-sys-color-on-surface-variant-light: #41484d;--md-sys-color-outline-light: #71787e;--md-sys-color-inverse-on-surface-light: #f0f1f3;--md-sys-color-inverse-surface-light: #2e3133;--md-sys-color-inverse-primary-light: #7ed0ff;--md-sys-color-shadow-light: #000000;--md-sys-color-surface-tint-light: #00658b;--md-sys-color-outline-variant-light: #c1c7ce;--md-sys-color-scrim-light: #000000;--md-sys-color-primary-dark: #7ed0ff;--md-sys-color-on-primary-dark: #00344a;--md-sys-color-primary-container-dark: #004c6a;--md-sys-color-on-primary-container-dark: #c5e7ff;--md-sys-color-secondary-dark: #b6c9d8;--md-sys-color-on-secondary-dark: #20333e;--md-sys-color-secondary-container-dark: #374955;--md-sys-color-on-secondary-container-dark: #d1e5f4;--md-sys-color-tertiary-dark: #cbc1e9;--md-sys-color-on-tertiary-dark: #322c4c;--md-sys-color-tertiary-container-dark: #494263;--md-sys-color-on-tertiary-container-dark: #e7deff;--md-sys-color-error-dark: #ffb4ab;--md-sys-color-error-container-dark: #93000a;--md-sys-color-on-error-dark: #690005;--md-sys-color-on-error-container-dark: #ffdad6;--md-sys-color-background-dark: #191c1e;--md-sys-color-on-background-dark: #e1e2e5;--md-sys-color-surface-dark: #191c1e;--md-sys-color-on-surface-dark: #e1e2e5;--md-sys-color-surface-variant-dark: #41484d;--md-sys-color-on-surface-variant-dark: #c1c7ce;--md-sys-color-outline-dark: #8b9297;--md-sys-color-inverse-on-surface-dark: #191c1e;--md-sys-color-inverse-surface-dark: #e1e2e5;--md-sys-color-inverse-primary-dark: #00658b;--md-sys-color-shadow-dark: #000000;--md-sys-color-surface-tint-dark: #7ed0ff;--md-sys-color-outline-variant-dark: #41484d;--md-sys-color-scrim-dark: #000000;--md-sys-typescale-display-large-font-family-name: Roboto;--md-sys-typescale-display-large-font-family-style: Regular;--md-sys-typescale-display-large-font-weight: 400px;--md-sys-typescale-display-large-font-size: 57px;--md-sys-typescale-display-large-line-height: 64px;--md-sys-typescale-display-large-letter-spacing: -.25px;--md-sys-typescale-display-medium-font-family-name: Roboto;--md-sys-typescale-display-medium-font-family-style: Regular;--md-sys-typescale-display-medium-font-weight: 400px;--md-sys-typescale-display-medium-font-size: 45px;--md-sys-typescale-display-medium-line-height: 52px;--md-sys-typescale-display-medium-letter-spacing: 0px;--md-sys-typescale-display-small-font-family-name: Roboto;--md-sys-typescale-display-small-font-family-style: Regular;--md-sys-typescale-display-small-font-weight: 400px;--md-sys-typescale-display-small-font-size: 36px;--md-sys-typescale-display-small-line-height: 44px;--md-sys-typescale-display-small-letter-spacing: 0px;--md-sys-typescale-headline-large-font-family-name: Roboto;--md-sys-typescale-headline-large-font-family-style: Regular;--md-sys-typescale-headline-large-font-weight: 400px;--md-sys-typescale-headline-large-font-size: 32px;--md-sys-typescale-headline-large-line-height: 40px;--md-sys-typescale-headline-large-letter-spacing: 0px;--md-sys-typescale-headline-medium-font-family-name: Roboto;--md-sys-typescale-headline-medium-font-family-style: Regular;--md-sys-typescale-headline-medium-font-weight: 400px;--md-sys-typescale-headline-medium-font-size: 28px;--md-sys-typescale-headline-medium-line-height: 36px;--md-sys-typescale-headline-medium-letter-spacing: 0px;--md-sys-typescale-headline-small-font-family-name: Roboto;--md-sys-typescale-headline-small-font-family-style: Regular;--md-sys-typescale-headline-small-font-weight: 400px;--md-sys-typescale-headline-small-font-size: 24px;--md-sys-typescale-headline-small-line-height: 32px;--md-sys-typescale-headline-small-letter-spacing: 0px;--md-sys-typescale-body-large-font-family-name: Roboto;--md-sys-typescale-body-large-font-family-style: Regular;--md-sys-typescale-body-large-font-weight: 400px;--md-sys-typescale-body-large-font-size: 16px;--md-sys-typescale-body-large-line-height: 24px;--md-sys-typescale-body-large-letter-spacing: .5px;--md-sys-typescale-body-medium-font-family-name: Roboto;--md-sys-typescale-body-medium-font-family-style: Regular;--md-sys-typescale-body-medium-font-weight: 400px;--md-sys-typescale-body-medium-font-size: 14px;--md-sys-typescale-body-medium-line-height: 20px;--md-sys-typescale-body-medium-letter-spacing: .25px;--md-sys-typescale-body-small-font-family-name: Roboto;--md-sys-typescale-body-small-font-family-style: Regular;--md-sys-typescale-body-small-font-weight: 400px;--md-sys-typescale-body-small-font-size: 12px;--md-sys-typescale-body-small-line-height: 16px;--md-sys-typescale-body-small-letter-spacing: .4px;--md-sys-typescale-label-large-font-family-name: Roboto;--md-sys-typescale-label-large-font-family-style: Medium;--md-sys-typescale-label-large-font-weight: 500px;--md-sys-typescale-label-large-font-size: 14px;--md-sys-typescale-label-large-line-height: 20px;--md-sys-typescale-label-large-letter-spacing: .1px;--md-sys-typescale-label-medium-font-family-name: Roboto;--md-sys-typescale-label-medium-font-family-style: Medium;--md-sys-typescale-label-medium-font-weight: 500px;--md-sys-typescale-label-medium-font-size: 12px;--md-sys-typescale-label-medium-line-height: 16px;--md-sys-typescale-label-medium-letter-spacing: .5px;--md-sys-typescale-label-small-font-family-name: Roboto;--md-sys-typescale-label-small-font-family-style: Medium;--md-sys-typescale-label-small-font-weight: 500px;--md-sys-typescale-label-small-font-size: 11px;--md-sys-typescale-label-small-line-height: 16px;--md-sys-typescale-label-small-letter-spacing: .5px;--md-sys-typescale-title-large-font-family-name: Roboto;--md-sys-typescale-title-large-font-family-style: Regular;--md-sys-typescale-title-large-font-weight: 400px;--md-sys-typescale-title-large-font-size: 22px;--md-sys-typescale-title-large-line-height: 28px;--md-sys-typescale-title-large-letter-spacing: 0px;--md-sys-typescale-title-medium-font-family-name: Roboto;--md-sys-typescale-title-medium-font-family-style: Medium;--md-sys-typescale-title-medium-font-weight: 500px;--md-sys-typescale-title-medium-font-size: 16px;--md-sys-typescale-title-medium-line-height: 24px;--md-sys-typescale-title-medium-letter-spacing: .15px;--md-sys-typescale-title-small-font-family-name: Roboto;--md-sys-typescale-title-small-font-family-style: Medium;--md-sys-typescale-title-small-font-weight: 500px;--md-sys-typescale-title-small-font-size: 14px;--md-sys-typescale-title-small-line-height: 20px;--md-sys-typescale-title-small-letter-spacing: .1px}@media (prefers-color-scheme: light){:root{--md-sys-color-primary: var(--md-sys-color-primary-light);--md-sys-color-on-primary: var(--md-sys-color-on-primary-light);--md-sys-color-primary-container: var(--md-sys-color-primary-container-light);--md-sys-color-on-primary-container: var(--md-sys-color-on-primary-container-light);--md-sys-color-secondary: var(--md-sys-color-secondary-light);--md-sys-color-on-secondary: var(--md-sys-color-on-secondary-light);--md-sys-color-secondary-container: var(--md-sys-color-secondary-container-light);--md-sys-color-on-secondary-container: var(--md-sys-color-on-secondary-container-light);--md-sys-color-tertiary: var(--md-sys-color-tertiary-light);--md-sys-color-on-tertiary: var(--md-sys-color-on-tertiary-light);--md-sys-color-tertiary-container: var(--md-sys-color-tertiary-container-light);--md-sys-color-on-tertiary-container: var(--md-sys-color-on-tertiary-container-light);--md-sys-color-error: var(--md-sys-color-error-light);--md-sys-color-error-container: var(--md-sys-color-error-container-light);--md-sys-color-on-error: var(--md-sys-color-on-error-light);--md-sys-color-on-error-container: var(--md-sys-color-on-error-container-light);--md-sys-color-background: var(--md-sys-color-background-light);--md-sys-color-on-background: var(--md-sys-color-on-background-light);--md-sys-color-surface: var(--md-sys-color-surface-light);--md-sys-color-on-surface: var(--md-sys-color-on-surface-light);--md-sys-color-surface-variant: var(--md-sys-color-surface-variant-light);--md-sys-color-on-surface-variant: var(--md-sys-color-on-surface-variant-light);--md-sys-color-outline: var(--md-sys-color-outline-light);--md-sys-color-inverse-on-surface: var(--md-sys-color-inverse-on-surface-light);--md-sys-color-inverse-surface: var(--md-sys-color-inverse-surface-light);--md-sys-color-inverse-primary: var(--md-sys-color-inverse-primary-light);--md-sys-color-shadow: var(--md-sys-color-shadow-light);--md-sys-color-surface-tint: var(--md-sys-color-surface-tint-light);--md-sys-color-outline-variant: var(--md-sys-color-outline-variant-light);--md-sys-color-scrim: var(--md-sys-color-scrim-light)}}@media (prefers-color-scheme: dark){:root{--md-sys-color-primary: var(--md-sys-color-primary-dark);--md-sys-color-on-primary: var(--md-sys-color-on-primary-dark);--md-sys-color-primary-container: var(--md-sys-color-primary-container-dark);--md-sys-color-on-primary-container: var(--md-sys-color-on-primary-container-dark);--md-sys-color-secondary: var(--md-sys-color-secondary-dark);--md-sys-color-on-secondary: var(--md-sys-color-on-secondary-dark);--md-sys-color-secondary-container: var(--md-sys-color-secondary-container-dark);--md-sys-color-on-secondary-container: var(--md-sys-color-on-secondary-container-dark);--md-sys-color-tertiary: var(--md-sys-color-tertiary-dark);--md-sys-color-on-tertiary: var(--md-sys-color-on-tertiary-dark);--md-sys-color-tertiary-container: var(--md-sys-color-tertiary-container-dark);--md-sys-color-on-tertiary-container: var(--md-sys-color-on-tertiary-container-dark);--md-sys-color-error: var(--md-sys-color-error-dark);--md-sys-color-error-container: var(--md-sys-color-error-container-dark);--md-sys-color-on-error: var(--md-sys-color-on-error-dark);--md-sys-color-on-error-container: var(--md-sys-color-on-error-container-dark);--md-sys-color-background: var(--md-sys-color-background-dark);--md-sys-color-on-background: var(--md-sys-color-on-background-dark);--md-sys-color-surface: var(--md-sys-color-surface-dark);--md-sys-color-on-surface: var(--md-sys-color-on-surface-dark);--md-sys-color-surface-variant: var(--md-sys-color-surface-variant-dark);--md-sys-color-on-surface-variant: var(--md-sys-color-on-surface-variant-dark);--md-sys-color-outline: var(--md-sys-color-outline-dark);--md-sys-color-inverse-on-surface: var(--md-sys-color-inverse-on-surface-dark);--md-sys-color-inverse-surface: var(--md-sys-color-inverse-surface-dark);--md-sys-color-inverse-primary: var(--md-sys-color-inverse-primary-dark);--md-sys-color-shadow: var(--md-sys-color-shadow-dark);--md-sys-color-surface-tint: var(--md-sys-color-surface-tint-dark);--md-sys-color-outline-variant: var(--md-sys-color-outline-variant-dark);--md-sys-color-scrim: var(--md-sys-color-scrim-dark)}}:root{--surface-1: color-mix(in hsl, var(--md-sys-color-surface-tint) 5%, var(--md-sys-color-surface));--sidebar-width: 10vw;--sidebar-max-width: 5rem;--sidebar-padding: .5rem;--border-radius: 1rem;--section-padding: 1.5rem;--scrollbar-color: color-mix(in hsl, var(--md-sys-color-on-background) 50%, var(--md-sys-color-background));--body-fonts: Inter, "Adwaita Sans", Roboto, "Helvetica Neue", "Arial Nova", "Nimbus Sans", Arial, ui-sans-serif, system-ui, sans-serif;--heading-fonts: var(--monospace-fonts);--monospace-fonts: "Adwaita Mono", "Ubuntu Mono", "Droid Sans Mono", "Fira Code", "Fira Mono", "JetBrains Mono", ui-monospace, "Cascadia Code", "Source Code Pro", Menlo, Consolas, "DejaVu Sans Mono", SFMono-Regular, source-code-pro, "Source Code Pro", Monaco, "Liberation Mono", "Courier New", monospace}*{box-sizing:border-box;padding:0;margin:0}html,body,#root{width:100%;height:100%;overflow:hidden}html{color-scheme:light dark}body{background:var(--md-sys-color-background);font-family:var(--body-fonts)}h1,h2,h3,h4,h5,h6{font-family:var(--heading-fonts)}#root{display:grid;grid-template-columns:auto 1fr;grid-template-rows:auto 1fr;gap:1rem}a{color:inherit;text-decoration:underline}code{font-family:var(--monospace-fonts)}img.mock-mac-os-icon{padding:calc(var(--img-size) / 10);border-radius:calc(var(--img-size) * .25);--shadow-color: rgba(0, 0, 0, .2);--ds: calc(var(--img-size) / 50);filter:drop-shadow(var(--ds) var(--ds) var(--ds) var(--shadow-color))}img.mock-mac-os-icon-white{--shadow-color: rgba(255, 255, 255, .2)}.pfp{width:var(--sidebar-width);max-width:var(--sidebar-max-width);height:auto;padding:var(--sidebar-padding);box-sizing:content-box}header{align-self:center;padding:1rem}header h1+p{font-size:1.5rem;font-weight:300;font-style:italic;margin-top:-.25rem}menu,main{scrollbar-color:var(--scrollbar-color) transparent;scrollbar-width:thin}menu{background:var(--surface-1);padding:var(--sidebar-padding);border-top-right-radius:var(--border-radius);overflow-y:auto;scroll-behavior:smooth}menu li{list-style:none}menu li img{--img-size: min(var(--sidebar-width), var(--sidebar-max-width));width:var(--img-size);height:auto}main{padding-left:1rem;padding-right:2rem;overflow-y:auto;scroll-behavior:smooth;transition:padding-left .1s ease-out,padding-right .1s ease-out}@media (width <= 80rem){main{padding-left:0;padding-right:1rem}}@media print{html{height:auto}body{background:none}menu{display:none}main{grid-column:1 / -1;overflow:visible;height:auto}a{text-decoration:none}a:after{content:" (" attr(href) ")";font-style:italic;opacity:.8;font-weight:300}a[href^="#"]:after,section .section-header .technologies a:after{content:""}}section{background:var(--surface-1);padding:var(--section-padding);border-radius:var(--border-radius);max-width:70rem;margin-bottom:2rem}section h2{margin-bottom:1.5rem}section h2 a{text-decoration:none}section p,section ul{margin-bottom:.75rem}section ul{padding-inline-start:1.5rem}section .date{text-align:end}section .section-header{display:flex;flex-flow:row wrap;margin-bottom:1.5rem}section .section-header img{--img-size: 2em;height:var(--img-size);width:auto;max-width:calc(var(--img-size) * 1.5);margin-inline-end:.5rem}section .section-header h2{flex:1 0;margin-bottom:0;padding-inline-end:.5rem}section .section-header .technologies{flex:1 0;text-align:end}section .section-header .technologies>*:last-child img{margin-inline-end:0}section .section-header .date-mobile{display:none}@media (width <= 40rem){section .section-header .date-desktop{display:none}section .section-header .date-mobile{display:block;flex:1 0 50vw;text-align:center}section .section-header .technologies{flex:none}}section .section-images{display:flex;overflow-x:auto;scroll-snap-type:x mandatory;gap:1rem;margin-inline:calc(-1 * var(--section-padding));padding-inline:var(--section-padding);margin-bottom:calc(-1 * var(--section-padding));padding-bottom:var(--section-padding)}section .section-images>*{flex-shrink:0;border-radius:var(--border-radius);cursor:zoom-in}section .section-images img{--img-size: min(33vh, 33vw);height:var(--img-size);width:auto;border-radius:var(--border-radius)}.section-dialog{display:flex;flex-flow:column nowrap;width:90vw;margin:1rem auto}.section-dialog,.section-dialog .MuiDialog-paper{background:var(--surface-1);border-radius:var(--border-radius);color:var(--on-surface)}.section-dialog .section-dialog-header{display:flex;flex-flow:row nowrap;margin-bottom:1rem;padding:1rem}.section-dialog .section-dialog-header .spacer{flex:1}.section-dialog .section-dialog-header .section-dialog-button{appearance:none;padding:.5rem;background:none;border:none;cursor:pointer}.section-dialog .section-dialog-header .section-dialog-button[disabled]{cursor:default}.section-dialog .section-dialog-header .section-dialog-nav{display:flex;flex-flow:row nowrap;gap:1rem;padding-inline:1rem}.section-dialog .section-dialog-header .section-dialog-nav>p{padding-block:.5rem}.section-dialog .section-dialog-wrapper{flex:1;width:100%}.section-dialog .section-dialog-wrapper .section-dialog-content{width:100%}.section-dialog .section-dialog-wrapper .section-dialog-content img{flex:1;width:100%;height:auto;max-height:90lvh;object-fit:contain;border-radius:var(--border-radius)}@media (prefers-color-scheme: dark){img[src$="pwa.svg"]{filter:invert(1) hue-rotate(166deg)}}
