.project.svelte-1c34g4d:hover>header:where(.svelte-1c34g4d)>div:where(.svelte-1c34g4d)>a:where(.svelte-1c34g4d){opacity:1}.project.svelte-1c34g4d>header:where(.svelte-1c34g4d){flex-direction:column;display:flex;position:relative}.project.svelte-1c34g4d>header:where(.svelte-1c34g4d)>img:where(.svelte-1c34g4d){aspect-ratio:16/9;width:100%;height:auto}.project.svelte-1c34g4d>header:where(.svelte-1c34g4d)>header:where(.svelte-1c34g4d){aspect-ratio:16/9;justify-content:center;align-items:center;width:100%;height:auto;display:flex}.project.svelte-1c34g4d>header:where(.svelte-1c34g4d)>div:where(.svelte-1c34g4d){z-index:2;justify-content:flex-end;padding:1rem;display:flex;position:absolute;top:0;right:0}.project.svelte-1c34g4d>header:where(.svelte-1c34g4d)>div:where(.svelte-1c34g4d)>a:where(.svelte-1c34g4d){all:unset;text-transform:uppercase;cursor:pointer;opacity:0;color:var(--color-3);background-color:var(--color-1);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);flex-direction:row;justify-content:flex-end;align-items:center;gap:.5rem;padding:.875rem 1rem;font-size:1.375rem;line-height:1rem;transition:opacity .5s,background-color .25s,color .25s;display:inline-flex}.project.svelte-1c34g4d>header:where(.svelte-1c34g4d)>div:where(.svelte-1c34g4d)>a:where(.svelte-1c34g4d):hover{color:var(--color-1);background-color:var(--color-3)}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d){border-top:var(--accent-border);flex-direction:column;flex-grow:1;justify-content:space-between;gap:1.25rem;width:100%;padding:2rem;display:flex}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>header:where(.svelte-1c34g4d)>h2:where(.svelte-1c34g4d){color:var(--foreground);font-size:1.75rem;font-weight:600;line-height:1.75rem}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>header:where(.svelte-1c34g4d){color:var(--color-3)}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>footer:where(.svelte-1c34g4d){flex-direction:column;gap:1.25rem;display:flex}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>footer:where(.svelte-1c34g4d)>.project-links:where(.svelte-1c34g4d){flex-direction:row;align-items:center;display:flex}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>footer:where(.svelte-1c34g4d)>.project-links:where(.svelte-1c34g4d)>a:where(.svelte-1c34g4d){background-color:var(--color-0);outline:var(--accent-border);color:var(--color-3);align-items:center;gap:.5rem;padding:.5rem .75rem;font-size:1.25rem;transition:color .25s,background-color .25s;display:inline-flex}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>footer:where(.svelte-1c34g4d)>.project-links:where(.svelte-1c34g4d)>a:where(.svelte-1c34g4d)>svg{color:inherit}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>footer:where(.svelte-1c34g4d)>.project-links:where(.svelte-1c34g4d)>a:where(.svelte-1c34g4d):hover{color:var(--color-0);background-color:var(--color-3);text-decoration:none}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>footer:where(.svelte-1c34g4d)>.project-info:where(.svelte-1c34g4d){flex-direction:row;justify-content:space-between;display:flex}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>footer:where(.svelte-1c34g4d)>.project-info:where(.svelte-1c34g4d)>.project-year:where(.svelte-1c34g4d){color:var(--color-2);font-size:1.25rem}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>footer:where(.svelte-1c34g4d)>.project-info:where(.svelte-1c34g4d)>.project-status:where(.svelte-1c34g4d){font-size:1.25rem;font-weight:800}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>footer:where(.svelte-1c34g4d)>.project-info:where(.svelte-1c34g4d)>.project-status:where(.svelte-1c34g4d).project-status-finished,.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>footer:where(.svelte-1c34g4d)>.project-info:where(.svelte-1c34g4d)>.project-status:where(.svelte-1c34g4d).project-status-active{color:#9ef0b0}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>footer:where(.svelte-1c34g4d)>.project-info:where(.svelte-1c34g4d)>.project-status:where(.svelte-1c34g4d).project-status-deprecated{color:#f09ea9}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>footer:where(.svelte-1c34g4d)>.project-info:where(.svelte-1c34g4d)>.project-status:where(.svelte-1c34g4d).project-status-paused{color:#f0d19e}.project.svelte-1c34g4d>main:where(.svelte-1c34g4d)>footer:where(.svelte-1c34g4d)>.project-info:where(.svelte-1c34g4d)>.project-status:where(.svelte-1c34g4d).project-status-inprogress{color:#9ee4f0}.blog-post.svelte-978c34:hover>header:where(.svelte-978c34)>div:where(.svelte-978c34)>a:where(.svelte-978c34){opacity:1}.blog-post.svelte-978c34>header:where(.svelte-978c34){flex-direction:column;display:flex;position:relative}.blog-post.svelte-978c34>header:where(.svelte-978c34)>img:where(.svelte-978c34){aspect-ratio:16/9;width:100%;height:auto}.blog-post.svelte-978c34>header:where(.svelte-978c34)>div:where(.svelte-978c34){z-index:2;justify-content:flex-end;padding:1rem;display:flex;position:absolute;top:0;right:0}.blog-post.svelte-978c34>header:where(.svelte-978c34)>div:where(.svelte-978c34)>a:where(.svelte-978c34){all:unset;text-transform:uppercase;cursor:pointer;opacity:0;color:var(--color-3);background-color:var(--color-1);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);flex-direction:row;justify-content:flex-end;align-items:center;gap:.5rem;padding:.875rem 1rem;font-size:1.375rem;line-height:1rem;transition:opacity .5s,background-color .25s,color .25s;display:inline-flex}.blog-post.svelte-978c34>header:where(.svelte-978c34)>div:where(.svelte-978c34)>a:where(.svelte-978c34):hover{color:var(--color-1);background-color:var(--color-3)}.blog-post.svelte-978c34>main:where(.svelte-978c34){border-top:var(--accent-border);flex-direction:column;flex-grow:1;justify-content:space-between;gap:1.25rem;width:100%;padding:2rem;display:flex}.blog-post.svelte-978c34>main:where(.svelte-978c34)>header:where(.svelte-978c34)>h2:where(.svelte-978c34){color:var(--foreground);font-size:1.75rem;font-weight:600;line-height:1.75rem}.blog-post.svelte-978c34>main:where(.svelte-978c34)>header:where(.svelte-978c34){color:var(--color-3)}.blog-post.svelte-978c34>main:where(.svelte-978c34)>footer:where(.svelte-978c34){flex-direction:column;gap:1.25rem;display:flex}.blog-post.svelte-978c34>main:where(.svelte-978c34)>footer:where(.svelte-978c34)>.post-info:where(.svelte-978c34){flex-direction:row;justify-content:space-between;display:flex}.blog-post.svelte-978c34>main:where(.svelte-978c34)>footer:where(.svelte-978c34)>.post-info:where(.svelte-978c34)>.post-date:where(.svelte-978c34){color:var(--color-2);font-size:1.25rem}.blog-post.svelte-978c34>main:where(.svelte-978c34)>footer:where(.svelte-978c34)>.post-info:where(.svelte-978c34)>.post-tag:where(.svelte-978c34){font-size:1.25rem;font-weight:800}.contact-card.svelte-1cv2yas{color:var(--foreground);border-left:var(--accent-border);justify-content:space-between;align-items:center;padding:2.5rem;text-decoration:none;display:flex}.contact-card.svelte-1cv2yas>div:where(.svelte-1cv2yas)>svg{width:2.5rem;height:2.5rem;transition:color .25s}.contact-card.svelte-1cv2yas>div:where(.svelte-1cv2yas)>h1:where(.svelte-1cv2yas){font-size:2rem;font-weight:800;transition:color .25s}.contact-card.svelte-1cv2yas>div:where(.svelte-1cv2yas)>h2:where(.svelte-1cv2yas){color:var(--color-3);font-size:1.5rem;font-weight:400;transition:color .25s}.contact-card.svelte-1cv2yas:hover{color:var(--background);background-color:var(--color-3)}.contact-card.svelte-1cv2yas:hover>div:where(.svelte-1cv2yas)>h2:where(.svelte-1cv2yas){color:var(--color-1)}.contact-card.svelte-1cv2yas:hover>svg{opacity:1}.contact-card.svelte-1cv2yas>svg{opacity:0;color:var(--background);width:2rem;height:2rem;transition:color .25s,opacity .25s}.contact-card.svelte-1cv2yas{transition:background-color .25s}.contact-card.svelte-1cv2yas:last-child{border-right:var(--accent-border)}@media screen and (width<=64rem){.contact-card.svelte-1cv2yas{border-right:var(--accent-border);border-bottom:var(--accent-border)}.contact-card.svelte-1cv2yas:last-child{border-bottom:none}}.hero.svelte-1uha8ag{flex-direction:column;min-height:calc(100vh - 8.3125rem);display:flex}.hero-content.svelte-1uha8ag{flex-grow:1;grid-template-columns:1fr 2fr;gap:1px;display:grid}@media screen and (width<=64rem){.hero-content.svelte-1uha8ag{flex-direction:column;gap:0;display:flex}}.hero-image.svelte-1uha8ag{background-image:linear-gradient(180deg, #0c110d00 0%, #0c110d 100%), var(--bg-url);background-color:var(--background);background-blend-mode:normal, color-dodge;padding:var(--section-padding-x);border-right:var(--accent-border);background-position:50%;background-repeat:no-repeat,no-repeat;background-size:cover,cover;flex-direction:column;justify-content:space-between;display:flex}@media screen and (width<=64rem){.hero-image.svelte-1uha8ag{border-bottom:var(--accent-border);border-right:none;gap:2rem}}.hero-header-text-1.svelte-1uha8ag{font-size:2rem;line-height:2rem}.hero-header-name-text.svelte-1uha8ag{color:var(--color-4);font-size:3rem;font-weight:800;line-height:3rem}.hero-header-name-pronunciation.svelte-1uha8ag{color:var(--color-1);font-size:2rem}.hero-header-pronouns.svelte-1uha8ag{color:var(--color-2);font-size:1.5rem;font-style:italic;line-height:1.5rem}.hero-tags.svelte-1uha8ag{flex-wrap:wrap;gap:.625rem;display:flex}.hero-tags.svelte-1uha8ag>div:where(.svelte-1uha8ag){color:var(--color-3);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);background-color:#a7dab51a;padding:.875rem 1rem;font-size:1.375rem;line-height:1rem;display:inline-block}@media screen and (width<=80rem){.hero-tags.svelte-1uha8ag>div:where(.svelte-1uha8ag){padding:.75rem .825rem;font-size:1.125rem}}.article.svelte-1uha8ag{justify-content:center;align-items:center;display:flex}.article-content.svelte-1uha8ag{padding:var(--section-padding-x);flex-direction:column;justify-content:center;gap:2rem;max-width:1280px;display:flex}.article-paragraph.svelte-1uha8ag{margin:0;padding:0;font-size:1.375rem}@media screen and (width<=80rem){.article-paragraph.svelte-1uha8ag{font-size:1.25rem}}.hero-nav.svelte-1uha8ag{border-top:var(--accent-border);flex-direction:row;display:flex}@media screen and (width<=80rem){.hero-nav.svelte-1uha8ag{flex-direction:column}}.hero-nav.svelte-1uha8ag>header:where(.svelte-1uha8ag){padding:var(--section-padding-y) var(--section-padding-x)}.hero-nav-sections.svelte-1uha8ag{flex-grow:1;grid-template-columns:1fr 1fr 1fr 1fr;display:grid}@media screen and (width<=80rem){.hero-nav-sections.svelte-1uha8ag{text-align:center;grid-template-columns:1fr 1fr}.hero-nav-sections.svelte-1uha8ag>a:where(.svelte-1uha8ag){border-top:var(--accent-border);padding:2rem;border-left:none!important}.hero-nav-sections.svelte-1uha8ag>a:where(.svelte-1uha8ag):nth-child(2n){border-left:var(--accent-border)!important}}.hero-nav-sections.svelte-1uha8ag>a:where(.svelte-1uha8ag){border-left:var(--accent-border);background-color:var(--color-0);color:var(--color-3);cursor:pointer;flex-direction:column;justify-content:center;align-items:center;font-size:1.5rem;font-weight:500;text-decoration:none;transition:background-color .25s,color .25s;display:flex}.hero-nav-sections.svelte-1uha8ag>a:where(.svelte-1uha8ag):hover{background-color:var(--color-3);color:var(--color-0)}.section-heading.svelte-1uha8ag{padding:var(--section-padding-y) var(--section-padding-x);background-color:var(--color-3);color:var(--background);border-bottom:var(--accent-border);border-top:var(--accent-border);gap:.75rem;display:flex}.section-heading.svelte-1uha8ag>h1:where(.svelte-1uha8ag){margin:0;padding:0;font-size:2rem}.bento.svelte-1uha8ag{border-bottom:var(--accent-border)}.bento.svelte-1uha8ag>div:where(.svelte-1uha8ag){background-image:var(--bg-url);background-position:50%;background-size:cover;height:100%}@media screen and (width<=96rem){.bento.svelte-1uha8ag>div:where(.svelte-1uha8ag){display:none}}.bento-left.svelte-1uha8ag{grid-template-columns:2fr 1fr;display:grid}@media screen and (width<=96rem){.bento-left.svelte-1uha8ag{grid-template-columns:1fr}}.bento-left.svelte-1uha8ag>main:where(.svelte-1uha8ag)>.bento-header:where(.svelte-1uha8ag){border-right:var(--accent-border)}.bento-right.svelte-1uha8ag{grid-template-columns:1fr 2fr;display:grid}@media screen and (width<=96rem){.bento-right.svelte-1uha8ag{grid-template-columns:1fr}}.bento-right.svelte-1uha8ag>main:where(.svelte-1uha8ag)>.bento-header:where(.svelte-1uha8ag){border-left:var(--accent-border)}.bento-grid-3.svelte-1uha8ag{grid-template-rows:1fr;grid-template-columns:1fr 1fr 1fr;display:grid}.bento-grid-3.svelte-1uha8ag>.bento-box:where(.svelte-1uha8ag){aspect-ratio:365/600;border-left:var(--accent-border)}@media screen and (width<=64rem){.bento-grid-3.svelte-1uha8ag>.bento-box:where(.svelte-1uha8ag){aspect-ratio:549/300!important}.bento-grid-3.svelte-1uha8ag{flex-direction:column;display:flex}}.bento-grid-4.svelte-1uha8ag{grid-template-rows:1fr 1fr;grid-template-columns:1fr 1fr;display:grid}.bento-grid-4.svelte-1uha8ag>.bento-box:where(.svelte-1uha8ag){aspect-ratio:549/300;border-right:var(--accent-border)}@media screen and (width<=64rem){.bento-grid-4.svelte-1uha8ag{flex-direction:column;display:flex}}.bento-header.svelte-1uha8ag{padding:var(--section-padding-y) var(--section-padding-x)}.bento-box-link.svelte-1uha8ag{z-index:2;justify-content:flex-end;display:flex}.bento-box-link.svelte-1uha8ag>a:where(.svelte-1uha8ag){all:unset;text-transform:uppercase;cursor:pointer;opacity:0;color:var(--color-3);background-color:var(--color-1);-webkit-backdrop-filter:blur(5px);backdrop-filter:blur(5px);flex-direction:row;justify-content:flex-end;align-items:center;gap:.5rem;padding:.875rem 1rem;font-size:1.375rem;line-height:1rem;transition:opacity .5s,background-color .25s,color .25s;display:inline-flex}.bento-box-link.svelte-1uha8ag>a:where(.svelte-1uha8ag):hover{color:var(--color-1);background-color:var(--color-3)}.bento-box.svelte-1uha8ag{border-top:var(--accent-border);padding:var(--section-padding-y);z-index:2;flex-direction:column;justify-content:space-between;display:flex;position:relative;overflow:hidden}.bento-box.svelte-1uha8ag:hover>.bento-box-link:where(.svelte-1uha8ag)>a:where(.svelte-1uha8ag){opacity:1}.bento-box.svelte-1uha8ag:before{content:" ";z-index:0;background-image:linear-gradient(180deg, #0c110d00 0%, #0c110d 100%), var(--bg-grayscale-url);background-blend-mode:normal, color-dodge;background-position:50%,50%;background-size:cover,cover;background-color:var(--background);width:100%;height:100%;transition:transform .5s;position:absolute;top:0;left:0}.bento-box.svelte-1uha8ag:hover:before{transform:scale(1.1)}.bento-box.svelte-1uha8ag:after{content:" ";z-index:0;background-image:linear-gradient(180deg, #0c110d00 0%, #0c110d 100%), var(--bg-url);background-blend-mode:normal, normal;background-position:50%,50%;background-size:cover,cover;background-color:var(--background);opacity:0;width:100%;height:100%;transition:transform .5s,opacity .5s;position:absolute;top:0;left:0;transform:scale(1)}.bento-box.svelte-1uha8ag:hover:after{opacity:1;transform:scale(1.1)}.bento-box.svelte-1uha8ag:hover>header:where(.svelte-1uha8ag)>h3:where(.svelte-1uha8ag){color:var(--foreground)}.bento-box.svelte-1uha8ag>header:where(.svelte-1uha8ag){z-index:2}.bento-box.svelte-1uha8ag>header:where(.svelte-1uha8ag)>h2:where(.svelte-1uha8ag){z-index:2;font-size:1.75rem;font-weight:800}@media screen and (width<=40rem){.bento-box.svelte-1uha8ag>header:where(.svelte-1uha8ag)>h2:where(.svelte-1uha8ag){font-size:1.25rem}}.bento-box.svelte-1uha8ag>header:where(.svelte-1uha8ag)>h3:where(.svelte-1uha8ag){color:var(--color-3);z-index:2;font-size:1rem;font-style:italic;font-weight:400;transition:color .5s}@media screen and (width<=40rem){.bento-box.svelte-1uha8ag>header:where(.svelte-1uha8ag)>p:where(.svelte-1uha8ag){font-size:1rem}}.bento-box.svelte-1uha8ag>header:where(.svelte-1uha8ag)>p:where(.svelte-1uha8ag)>a:where(.svelte-1uha8ag):hover{color:var(--color-3)!important}.bento-box.svelte-1uha8ag>header:where(.svelte-1uha8ag)>p:where(.svelte-1uha8ag){z-index:2}.intro-section.svelte-1uha8ag{padding:var(--section-padding-y) var(--section-padding-x);flex-direction:column;gap:2rem;display:flex}.card-list.svelte-1uha8ag{border-top:var(--accent-border);grid-template-columns:1fr 1fr 1fr 1fr;padding:0 3.75rem;display:grid}@media screen and (width<=80rem){.card-list.svelte-1uha8ag{grid-template-columns:1fr 1fr}}@media screen and (width<=58rem){.card-list.svelte-1uha8ag{grid-template-columns:1fr}}@media screen and (width<=40rem){.card-list.svelte-1uha8ag{padding:0 calc(50vw - 11.375rem)}}.expanded-card-list.svelte-1uha8ag{border-bottom:var(--accent-border);grid-template-columns:1fr 1fr 1fr 1fr;padding:0 3.75rem;display:grid}@media screen and (width<=64rem){.expanded-card-list.svelte-1uha8ag{grid-template-columns:1fr 1fr}}@media screen and (width<=48rem){.expanded-card-list.svelte-1uha8ag{grid-template-columns:1fr}}@media screen and (width<=40rem){.expanded-card-list.svelte-1uha8ag{padding:0 calc(50vw - 11.375rem)}}.contact-cards.svelte-1uha8ag{border-top:var(--accent-border);border-bottom:var(--accent-border);grid-template-columns:1fr 1fr 1fr;padding:0 3.75rem;display:grid}@media screen and (width<=64rem){.contact-cards.svelte-1uha8ag{grid-template-columns:1fr}}@media screen and (width<=40rem){.contact-cards.svelte-1uha8ag{padding:0 calc(50vw - 11.375rem)}}.tech-and-tools.svelte-1uha8ag{padding:var(--section-padding-y) var(--section-padding-x);flex-direction:column;gap:2rem;display:flex}.tech-and-tools-grid.svelte-1uha8ag{grid-template-rows:auto auto;grid-template-columns:1fr 1fr;grid-auto-flow:column;align-items:start;gap:1.25rem;display:grid}@media screen and (width<=48rem){.tech-and-tools-grid.svelte-1uha8ag{flex-direction:column;display:flex}}.details.svelte-1uha8ag[open]>summary:where(.svelte-1uha8ag)>.details-when-closed:where(.svelte-1uha8ag){display:none}.details.svelte-1uha8ag:not([open])>summary:where(.svelte-1uha8ag)>.details-when-open:where(.svelte-1uha8ag){display:none}.details.svelte-1uha8ag>summary:where(.svelte-1uha8ag)>.details-summary:where(.svelte-1uha8ag){justify-content:space-between;align-items:center;display:flex}.details.svelte-1uha8ag>summary:where(.svelte-1uha8ag){cursor:pointer}.details.svelte-1uha8ag>summary:where(.svelte-1uha8ag):hover{background-color:var(--color-3);color:var(--color-0)}.details.svelte-1uha8ag>summary:where(.svelte-1uha8ag){border-top:var(--accent-border);border-bottom:var(--accent-border);background-color:var(--color-0);color:var(--color-3);padding:1rem 3.75rem;font-size:1.5rem;font-weight:500;list-style:none;transition:color .25s,background-color .25s}.details.svelte-1uha8ag>summary:where(.svelte-1uha8ag) :where(.svelte-1uha8ag)::-webkit-details-marker{display:none}
