.gradient-card_gradientCard__JtVEc{padding:20px;z-index:1;position:relative;box-shadow:var(--shadow-2);border-radius:16px;background:var(--border-gradient-onyx)}.gradient-card_gradientCard__JtVEc:before{content:"";position:absolute;inset:1px;background:var(--bg-gradient-jet);border-radius:inherit;z-index:-1}@media (min-width:580px){.gradient-card_gradientCard__JtVEc{display:flex;justify-content:flex-start;align-items:flex-start;gap:18px;padding:30px}}@media (min-width:580px) and (max-width:639px){.gradient-card_gradientCard__JtVEc{flex-direction:row;align-items:center}.gradient-card_gradientCard__JtVEc>div:last-child{text-align:left}}.image_imageContainer__SMI8h{text-align:center;margin-top:2.5rem;margin-bottom:2.5rem}.image_imageFrame__8Q5z5{display:block;text-align:center;position:relative;border-radius:1rem;margin:2.5rem auto 1rem;overflow:hidden;max-height:12rem}.image_responsiveImage__O04qE{object-fit:contain;border-radius:1rem}.image_imageCaption__cV6p4{color:var(--light-gray-70);text-align:center;display:block;margin-bottom:2.5rem;font-size:.875rem;line-height:1.4}@media (min-width:640px){.image_imageFrame__8Q5z5{max-height:24rem}}@media (min-width:768px){.image_imageFrame__8Q5z5{max-height:24rem}}@media (min-width:1024px){.image_imageFrame__8Q5z5{max-height:24rem}}@media (min-width:1200px){.image_imageFrame__8Q5z5{max-height:24rem}}.md_h1__VqpiC,.md_h2__4qwe0,.md_h3__7x_lz,.md_h4__klByv,.md_h5__u1pev,.md_h6__sn_V3{color:var(--white-1);display:block;text-decoration:none;line-height:1.375;font-weight:500;margin-top:1.5rem;margin-bottom:1rem}.md_h1__VqpiC a,.md_h2__4qwe0 a,.md_h3__7x_lz a,.md_h4__klByv a,.md_h5__u1pev a,.md_h6__sn_V3 a{color:inherit;text-decoration:none;display:inline-flex;align-items:center}.md_h1__VqpiC:hover,.md_h1__VqpiC:hover a,.md_h2__4qwe0:hover,.md_h2__4qwe0:hover a,.md_h3__7x_lz:hover,.md_h3__7x_lz:hover a,.md_h4__klByv:hover,.md_h4__klByv:hover a,.md_h5__u1pev:hover,.md_h5__u1pev:hover a,.md_h6__sn_V3:hover,.md_h6__sn_V3:hover a{text-decoration:underline;color:var(--light-gray);-webkit-text-decoration-color:var(--orange-yellow-crayola);text-decoration-color:var(--orange-yellow-crayola)}.md_h1__VqpiC{font-size:2.25rem;font-weight:700;line-height:1.5;margin-top:2.5rem;margin-bottom:.25rem}.md_h2__4qwe0{font-size:1.875rem;font-weight:600;margin-top:3rem;margin-bottom:.25rem}.md_h3__7x_lz{font-size:1.5rem;margin-top:2rem}.md_h4__klByv{font-size:1.25rem}.md_h5__u1pev{font-size:1.125rem}.md_h6__sn_V3{font-size:1rem}.md_separator___QhoG{width:100%;height:1px;background:var(--jet);margin:12px 0 24px}.md_pre__vMzDP{font-size:var(--fs-6);padding:15px;border-radius:14px;margin-top:1rem;margin-bottom:1rem;white-space:pre;overflow-x:auto;overflow-y:hidden;max-width:100%;position:relative}.md_pre__vMzDP::-webkit-scrollbar{height:8px}.md_pre__vMzDP::-webkit-scrollbar-track{background:#f1f1f1;border-radius:4px}.md_pre__vMzDP::-webkit-scrollbar-thumb{background:#888;border-radius:4px}.md_pre__vMzDP::-webkit-scrollbar-thumb:hover{background:#555}@media (min-width:768px){.md_pre__vMzDP{white-space:pre;overflow-x:auto}}@media (max-width:767px){.md_pre__vMzDP{white-space:pre-wrap;word-break:break-word;overflow-x:hidden}}.md_code__QDOy4[data-line-numbers]{counter-reset:line}.md_code__QDOy4[data-line-numbers]>[data-line]:before{counter-increment:line;content:counter(line);display:inline-block;width:.75rem;margin-right:2rem;text-align:right;color:gray}.md_code__QDOy4[data-line-numbers-max-digits="2"]>[data-line]:before{width:1.25rem}.md_code__QDOy4[data-line-numbers-max-digits="3"]>[data-line]:before{width:1.75rem}.md_code__QDOy4[data-line-numbers-max-digits="4"]>[data-line]:before{width:2.25rem}.md_code__QDOy4 [data-highlighted-line]{background:rgba(200,200,255,.1)}.md_code__QDOy4 [data-highlighted-chars]{background-color:rgba(82,82,91,.5);border-radius:.25rem;box-shadow:0 0 0 4px rgb(82 82 91/.5)}.md_code__QDOy4 [data-chars-id]{box-shadow:none;padding:.25rem;border-bottom-width:2px;border-bottom-style:solid}.md_code__QDOy4 [data-chars-id] span{color:inherit!important}.md_code__QDOy4 [data-chars-id=v]{color:#f9a8d4!important;background-color:rgba(159,18,57,.5);border-bottom:2px solid #db2777;font-weight:700}.md_code__QDOy4 [data-chars-id=s]{color:#fde68a!important;background-color:rgba(133,77,14,.5);border-bottom:2px solid #ca8a04;font-weight:700}.md_code__QDOy4 [data-chars-id=i]{color:#e9d5ff!important;background-color:rgba(107,33,168,.5);border-bottom:2px solid #9333ea;font-weight:700}.md_code__QDOy4:not(pre code){font-size:.875rem;color:#f8f8f2;background-color:#282a36;padding:.25rem .5rem;border-radius:.25rem}@media (min-width:580px){.md_separator___QhoG{margin:16px 0 32px}}.list_ul___B4FD{list-style:disc}.list_ol__ylcao,.list_ul___B4FD{padding-left:1.5rem;color:var(--light-gray);margin-top:1.5rem;margin-bottom:1.5rem}.list_ol__ylcao{list-style:decimal}.list_li__ElfT0{line-height:1.7;color:var(--light-gray);margin-top:.25rem;margin-bottom:.25rem}.list_ul___B4FD .md-ul{margin-top:.5rem;margin-bottom:.5rem;list-style:circle}.list_ol__ylcao .md-ol{margin-top:.5rem;margin-bottom:.5rem;list-style:lower-alpha}.list_ul___B4FD .md-ol{margin-top:.5rem;margin-bottom:.5rem;list-style:decimal}.list_ol__ylcao .md-ul{margin-top:.5rem;margin-bottom:.5rem;list-style:disc}.list_ul___B4FD .md-ul .md-ul{list-style:square}.list_ol__ylcao .md-ol .md-ol{list-style:lower-roman}.list_ol__ylcao .md-ul .md-ol,.list_ul___B4FD .md-ol .md-ul{list-style:disc}.list_ol__ylcao .md-ul .md-ul,.list_ul___B4FD .md-ol .md-ol{list-style:circle}.list_ul___B4FD .md-ul .md-ul .md-ul{list-style:disc}.list_ol__ylcao .md-ol .md-ol .md-ol{list-style:decimal}.list_ol__ylcao .md-ol .md-ol .md-ol,.list_ol__ylcao .md-ul .md-ol .md-ul,.list_ul___B4FD .md-ol .md-ul .md-ol,.list_ul___B4FD .md-ul .md-ul .md-ul{margin-top:.25rem;margin-bottom:.25rem;padding-left:1.25rem}.list_ol__ylcao .md-li,.list_ul___B4FD .md-li{margin-top:.125rem;margin-bottom:.125rem}.list_li__ElfT0:has(>.md-ol),.list_li__ElfT0:has(>.md-ul){margin-bottom:.5rem}.anchor_anchor__tRlDN{display:inline;color:var(--orange-yellow-crayola);text-decoration:underline}.anchor_anchor__tRlDN:hover{opacity:.7}.github-map_section__2uSJU{margin-top:2rem;margin-bottom:2rem;color:var(--light-gray)}.blockquote_blockquote__FXNMd{margin-top:1.5rem;margin-bottom:1.5rem;padding-left:1rem;border-left:.25rem solid;border-color:var(--light-gray-70)}.paragraph_p__jWUBF{margin-top:1.5rem;margin-bottom:1.5rem;line-height:1.7;color:var(--light-gray)}.tweet .react-tweet-theme{--tweet-container-margin:0;--tweet-font-family:inherit;--tweet-font-color:inherit;--tweet-bg-color:#fff;--tweet-bg-color-hover:var(--tweet-bg-color);--tweet-color-blue-secondary:#4b5563;--tweet-color-blue-secondary-hover:#f3f4f6;--tweet-font-color-secondary:#6b7280;--tweet-quoted-bg-color-hover:rgba(0,0,0,0.03);--tweet-border:1px solid rgb(207,217,222);--tweet-skeleton-gradient:linear-gradient(270deg,#fafafa,#eaeaea,#eaeaea,#fafafa);--tweet-color-red-primary:rgb(249,24,128);--tweet-color-red-primary-hover:rgba(249,24,128,0.1);--tweet-color-green-primary:rgb(0,186,124);--tweet-color-green-primary-hover:rgba(0,186,124,0.1);--tweet-twitter-icon-color:var(--tweet-font-color);--tweet-verified-old-color:rgb(130,154,171);--tweet-verified-blue-color:var(--tweet-color-blue-primary);--tweet-actions-font-weight:500;--tweet-replies-font-weight:500}@media (prefers-color-scheme:dark){.tweet .react-tweet-theme{--tweet-bg-color:#222;--tweet-bg-color-hover:var(--tweet-bg-color);--tweet-quoted-bg-color-hover:rgba(255,255,255,0.03);--tweet-border:1px solid #333;--tweet-color-blue-secondary:#fff;--tweet-color-blue-secondary-hover:#333;--tweet-font-color-secondary:#9ca3af}}.tweet .react-tweet-theme p{font-size:1rem;line-height:1.3rem}.tweet .react-tweet-theme p a{border-bottom-width:1px;--tw-border-opacity:1;border-color:rgb(209 213 219/var(--tw-border-opacity,1));transition-property:border-color;transition-timing-function:cubic-bezier(.4,0,.2,1);transition-duration:.15s}.tweet .react-tweet-theme p a:hover{--tw-border-opacity:1;border-color:rgb(75 85 99/var(--tw-border-opacity,1))}@media (prefers-color-scheme:dark){.tweet .react-tweet-theme p a{--tw-border-opacity:1;border-color:rgb(107 114 128/var(--tw-border-opacity,1));--tw-text-opacity:1;color:rgb(255 255 255/var(--tw-text-opacity,1))}.tweet .react-tweet-theme p a:hover{--tw-border-opacity:1;border-color:rgb(255 255 255/var(--tw-border-opacity,1))}}.tweet .react-tweet-theme p a:hover{text-decoration:none}.tweet a div{font-weight:500;letter-spacing:-.025em}.selected-projects_latest-posts__e0GBt{display:grid;grid-template-columns:1fr;gap:30px;margin-bottom:10px}@media (min-width:768px){.selected-projects_latest-posts__e0GBt{grid-template-columns:repeat(2,1fr)}}@media (min-width:1024px){.selected-projects_latest-posts__e0GBt{grid-template-columns:repeat(3,1fr)}}.selected-projects_latest-post-img__26q5K{position:relative;width:100%;height:200px;border-radius:16px;overflow:hidden;margin-bottom:15px}.selected-projects_latest-post-img__26q5K:before{content:"";position:absolute;top:0;left:0;width:100%;height:100%;background:transparent;z-index:1;transition:var(--transition-1)}.selected-projects_latest-post__Rrt8c{list-style:none;width:100%}.selected-projects_latest-post__Rrt8c.selected-projects_active__BTPH4{display:block;animation:selected-projects_scaleUp__dRtGb .25s ease forwards}.selected-projects_latest-post__Rrt8c>a{width:100%}.selected-projects_latest-post__Rrt8c>a:hover .selected-projects_latest-post-img__26q5K:before{background:hsla(0,0%,0%,.5)}.selected-projects_latest-post-img__26q5K img{width:100%;height:100%;object-fit:cover;transition:var(--transition-1)}.selected-projects_latest-post__Rrt8c>a:hover img{transform:scale(1.1)}.selected-projects_latest-post-icon-box__zwcFz{--scale:0.8;transform:translate(-50%,-50%) scale(var(--scale));opacity:0;z-index:1}.selected-projects_latest-post__Rrt8c>a:hover .selected-projects_latest-post-icon-box__zwcFz{--scale:1;opacity:1}@media (min-width:375px){.selected-projects_latest-post-img__26q5K{height:auto}}@media (min-width:450px){.selected-projects_latest-post-img__26q5K{height:auto}}@media (min-width:580px){.selected-projects_latest-post-img__26q5K{border-radius:16px}}.project-links_container__BoUg1{display:flex;flex-direction:row;align-items:flex-start;gap:.5rem;flex-wrap:wrap}.project-links_link__Bctnt{align-items:center;gap:.25rem;position:relative;background:var(--border-gradient-onyx);color:var(--light-grey);display:flex;padding:1rem;border-radius:.5rem;height:2.5rem;font-size:var(--fs-6);box-shadow:var(--shadow-3);transition:var(--transition-1);z-index:1}.project-links_link__Bctnt:before{content:"";position:absolute;inset:1px;background:var(--bg-gradient-jet);border-radius:inherit;z-index:-1;transition:var(--transition-1)}.project-links_group__57Hrx:hover{transform:scale(1.05);transition-duration:.3s}.project-links_icon__Mcc6T{width:1rem;height:1rem;flex-shrink:0}.project-links_iconHover__CqHg6,.project-links_icon__Mcc6T{transition:transform var(--transition-1)}.project-links_group__57Hrx:hover .project-links_iconHover__CqHg6{transform:rotate(-12deg)}@media (min-width:580px){.project-links_link__Bctnt{padding:1rem}}@media (min-width:640px){.project-links_container__BoUg1{gap:1rem}}@media (min-width:768px){.project-links_link__Bctnt{width:-webkit-max-content;width:max-content}}.icons_verified__LFE3H{margin-left:.125rem;max-width:20px;max-height:20px;height:1.25em;fill:currentColor;-webkit-user-select:none;-moz-user-select:none;user-select:none;vertical-align:text-bottom}.quoted-tweet-container_root__JGg92{width:100%;overflow:hidden;border:var(--tweet-border);border-radius:12px;margin:var(--tweet-quoted-container-margin);transition-property:background-color,box-shadow;transition-duration:.2s;cursor:pointer}.quoted-tweet-container_root__JGg92:hover{background-color:var(--tweet-quoted-bg-color-hover)}.quoted-tweet-container_article__sYqCd{position:relative;box-sizing:inherit}.quoted-tweet-body_root__lMHNN{font-size:var(--tweet-quoted-body-font-size);font-weight:var(--tweet-quoted-body-font-weight);line-height:var(--tweet-quoted-body-line-height);margin:var(--tweet-quoted-body-margin);overflow-wrap:break-word;white-space:pre-wrap;padding:0 .75rem}.tweet-media_root__2YZ5P{margin-top:.75rem;overflow:hidden;position:relative}.tweet-media_rounded__yrsFE{border:var(--tweet-border);border-radius:12px}.tweet-media_mediaWrapper__CE2gE{display:grid;grid-auto-rows:1fr;gap:2px;height:100%;width:100%}.tweet-media_grid2Columns__h_OOv{grid-template-columns:repeat(2,1fr)}.tweet-media_grid3__tGuEm>a:first-child{grid-row:span 2}.tweet-media_grid2x2__HRRvS{grid-template-rows:repeat(2,1fr)}.tweet-media_mediaContainer__EAahM{position:relative;height:100%;width:100%;display:flex;align-items:center;justify-content:center}.tweet-media_mediaLink__sqhwE{text-decoration:none;outline-style:none}.tweet-media_skeleton__ACspY{padding-bottom:56.25%;width:100%;display:block}.tweet-media_image__H30kA{position:absolute;top:0;left:0;bottom:0;height:100%;width:100%;margin:0;-o-object-fit:cover;object-fit:cover;-o-object-position:center;object-position:center}.tweet-media-video_anchor__J_gVZ{display:flex;align-items:center;color:white;padding:0 1rem;border:1px solid transparent;border-radius:9999px;font-weight:700;transition:background-color .2s;cursor:pointer;-webkit-user-select:none;-moz-user-select:none;user-select:none;outline-style:none;text-decoration:none;text-overflow:ellipsis;white-space:nowrap}.tweet-media-video_videoButton__Eb6Wo{position:relative;height:67px;width:67px;display:flex;align-items:center;justify-content:center;background-color:var(--tweet-color-blue-primary);transition-property:background-color;transition-duration:.2s;border:4px solid #fff;border-radius:9999px;cursor:pointer}.tweet-media-video_videoButton__Eb6Wo:focus-visible,.tweet-media-video_videoButton__Eb6Wo:hover{background-color:var(--tweet-color-blue-primary-hover)}.tweet-media-video_videoButtonIcon__QiRob{margin-left:3px;width:calc(50% + 4px);height:calc(50% + 4px);max-width:100%;color:#fff;fill:currentColor;-webkit-user-select:none;-moz-user-select:none;user-select:none}.tweet-media-video_watchOnTwitter__lfr5q{position:absolute;top:12px;right:8px}.tweet-media-video_watchOnTwitter__lfr5q>a{min-width:2rem;min-height:2rem;font-size:.875rem;line-height:1rem;backdrop-filter:blur(4px);background-color:rgba(15,20,25,.75)}.tweet-media-video_watchOnTwitter__lfr5q>a:hover{background-color:rgba(39,44,48,.75)}.tweet-media-video_viewReplies__dOQxX{position:relative;min-height:2rem;background-color:var(--tweet-color-blue-primary);border-color:var(--tweet-color-blue-primary);font-size:.9375rem;line-height:1.25rem}.tweet-media-video_viewReplies__dOQxX:hover{background-color:var(--tweet-color-blue-primary-hover)}.skeleton_skeleton__PN_Nb{display:block;width:100%;border-radius:5px;background-image:var(--tweet-skeleton-gradient);background-size:400% 100%;animation:skeleton_loading__Wu5To 8s ease-in-out infinite}@media (prefers-reduced-motion:reduce){.skeleton_skeleton__PN_Nb{animation:none;background-position:200% 0}}@keyframes skeleton_loading__Wu5To{0%{background-position:200% 0}to{background-position:-200% 0}}.tweet-not-found_root__pl36M{display:flex;flex-direction:column;align-items:center;padding-bottom:.75rem}.tweet-not-found_root__pl36M>h3{font-size:1.25rem;margin-bottom:.5rem}.tweet-skeleton_root__rj8hs{pointer-events:none;padding-bottom:.25rem}