@keyframes fadeIn{0%{opacity:0}to{opacity:1}}:root{--background:#fff;--foreground:#171717;--text-primary:#111;--text-secondary:#0006;--text-muted:#00000040;--border-color:#0000001a;--button-hover:#f6f6f6;--selection-bg:#111;--selection-text:#fff;--logo-fill:#111;--link-arrow-fill:#0006}[data-theme=dark]{--background:#0a0a0a;--foreground:#ededed;--text-primary:#ededed;--text-secondary:#ffffff80;--text-muted:#ffffff4d;--border-color:#ffffff1f;--button-hover:#1a1a1a;--selection-bg:#fff;--selection-text:#111;--logo-fill:#ededed;--link-arrow-fill:#fff6}*{box-sizing:border-box;margin:0;padding:0}.page-wrapper{background-color:#0a0a0a;min-height:100vh;transition:background-color .3s;position:relative}[data-theme=light] .page-wrapper{background-color:#0a0a0a}[data-theme=dark] .page-wrapper{background-color:#1a1a1a}::selection{color:var(--selection-text);background:var(--selection-bg)}html{overscroll-behavior:none;scrollbar-width:none;background-color:#fff;transition:background-color .3s}html::-webkit-scrollbar{display:none}[data-theme=dark] html{background-color:#0a0a0a}body{font-family:var(--font-neue-haas),sans-serif;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-smooth:always;text-rendering:optimizeLegibility;color:var(--text-primary);letter-spacing:0;overscroll-behavior:none;background-color:#fff;margin:0;padding:0;font-size:15px;font-weight:400;line-height:22px;transition:color .3s,background-color .3s}[data-theme=dark] body{background-color:#0a0a0a}code,pre,.monospace{font-family:var(--font-geist-mono)}.main-container{background-color:var(--background);z-index:1;border-radius:0;flex-direction:column;justify-content:center;align-items:center;max-width:100%;height:100vh;margin:0 auto;padding:3rem 1rem 6rem;transition:border-radius .5s ease-out,background-color .3s;display:flex;position:relative}.main-container>*{width:100%;max-width:440px;animation:.8s ease-in-out fadeIn}.main-container.scrolled{border-radius:0 0 40px 40px}.footer-bar{background-color:#0a0a0a;padding:1.5rem 1rem;transition:background-color .3s}[data-theme=dark] .footer-bar{background-color:#1a1a1a}.footer-content{color:#fff6;font-size:13px;font-weight:440;line-height:19px;font-family:var(--font-inter);justify-content:space-between;align-items:center;margin:0 auto;padding:0 16px 4px;display:flex}.footer-text{color:#ffffffb3}.footer-text-secondary{color:#fff6}.footer-date{padding-left:6px}@media (max-width:768px){.main-container{justify-content:flex-start;height:100%;min-height:100vh;margin-bottom:0;padding:.3rem 1rem 1.5rem}.footer-bar{padding:2rem 1rem 4rem}.main-container.scrolled{border-radius:0 0 36px 36px}.footer-content{font-size:12px}}.header{text-align:left;color:var(--text-primary);margin-bottom:1.2rem}.logo{text-align:left;border:0 solid #00000016;border-radius:100px;justify-content:flex-start;align-items:center;width:auto;height:50px;margin-bottom:1.8rem;margin-left:auto;margin-right:auto;padding:0;display:flex}.logo svg{width:auto;height:18px;margin-top:2px;margin-right:1px}.logo svg path{fill:var(--logo-fill);transition:fill .3s}.name{font-size:15px;font-family:var(--font-neue-haas);margin-bottom:.1rem;font-weight:500}.bio{font-size:15px;font-family:var(--font-neue-haas);color:var(--text-secondary);font-weight:400}.section{margin-bottom:1rem}.section-title{font-size:15px;font-family:var(--font-neue-haas);color:var(--text-secondary);text-align:left;margin-bottom:.4rem;font-weight:400}.paragraph{color:var(--text-primary);text-align:left;margin-bottom:1rem;font-size:15px;font-weight:400}.app-banner-container{background-color:var(--background);border-radius:20px;width:100%;margin-top:1.8rem;transition:background-color .3s;position:relative;overflow:hidden}.app-banner{-webkit-user-select:none;user-select:none;pointer-events:none;width:100%;transition:opacity .3s;display:block}.app-banner-light{opacity:1}.app-banner-dark{opacity:0;position:absolute;top:0;left:0}[data-theme=dark] .app-banner-light{opacity:0}[data-theme=dark] .app-banner-dark{opacity:1}.side-by-side-banners{gap:.5rem;width:100%;margin-top:1.8rem;display:flex}.side-by-side-banners .banner-item-wrapper{flex:1}.side-by-side-banners .banner-item{background-color:var(--background);aspect-ratio:3/2;border-radius:20px;position:relative;overflow:hidden}.banner-caption{color:var(--text-secondary);text-align:center;margin-top:.5rem;font-size:12px}.side-by-side-banners .app-banner{object-fit:cover;width:100%;height:100%;display:block}.side-by-side-banners .app-banner-dark{position:absolute;top:0;left:0}.list{color:var(--text-primary);margin-left:8px;font-size:15px;font-weight:400;line-height:23px;list-style-type:disc;list-style-position:inside}.link{color:var(--text-primary);text-decoration:none;transition:color .3s,transform .3s}.link:hover{color:var(--text-secondary);text-decoration:none}.link-arrow{margin-left:4px;margin-right:1px;display:inline-block;position:relative;top:1px;overflow:visible}.link-arrow-alt{margin-left:4px;margin-right:6px;display:inline-block;position:relative;top:1px;overflow:visible}.link-arrow svg,.link-arrow-alt svg{width:13px;height:13px;fill:var(--link-arrow-fill);transition:fill .3s,transform .3s}.connect-title{font-size:15px;font-family:var(--font-neue-haas);color:var(--text-secondary);text-align:left;margin-top:.4rem;margin-bottom:1rem;font-weight:400}.social-links{justify-content:flex-start;gap:.5rem;padding-bottom:4px;display:flex}.button{border:1px solid var(--border-color);color:inherit;background-color:var(--background);border-radius:9999px;padding:.3rem 1rem .45em;font-size:14px;font-weight:440;text-decoration:none;transition:background-color .3s,border-color .3s;box-shadow:0 3px 3px #00000005}.button:hover{background-color:var(--button-hover)}.portfolio-button{border:1px solid var(--border-color);background-color:var(--background);border-radius:.75rem;justify-content:space-between;align-items:center;width:100%;margin:.9rem 0;padding:8px 13px;text-decoration:none;transition:all .2s;display:flex}.portfolio-button:hover{background-color:var(--button-hover);transform:translateY(-1px)}.button-content{flex:1;display:flex}.button-text-primary{color:var(--text-primary);margin-right:.5rem;font-weight:440}.button-text-secondary{color:var(--text-secondary)}.button-arrow{color:var(--text-muted);place-content:center;align-items:center;margin-right:4px;display:flex}.portfolio-button:hover .button-arrow{color:var(--text-secondary)}@media (max-width:768px){.button-content{flex-direction:column}.button-text-primary{margin-bottom:.1rem;margin-right:0}}.work-title{color:var(--text-secondary);margin-top:2rem;margin-bottom:1rem;font-size:15px;font-weight:440}.experience-item{gap:30px;margin-bottom:1rem;display:flex}@media (max-width:768px){.experience-item{gap:16px;margin-bottom:1.5rem;display:flex}}.experience-date{color:var(--text-primary);width:100px;font-size:14px}.experience-details{flex:1}.experience-title{color:var(--text-primary);align-items:center;margin:0 0 .15rem;font-size:15px;font-weight:440;display:flex}.experience-description{color:var(--text-secondary);margin:0 0 .15rem;font-size:15px;font-weight:440}.experience-location{color:var(--text-secondary);margin:0 0 .2rem;font-size:15px;font-weight:440}.credit{text-align:left;color:var(--text-muted);font-size:13px;font-weight:440;line-height:14.4px;font-family:var(--font-inter);justify-content:space-between;align-items:center;margin-top:4.8rem;display:flex}.last-updated{color:var(--text-primary)}.date{padding-left:6px}.text-secondary{color:var(--text-secondary)}@media (max-width:768px){body{font-size:14px;line-height:19px}.header{text-align:left;margin-bottom:1.2rem}.logo{justify-content:flex-start;margin-bottom:2rem;margin-left:0;margin-right:auto}.name,.bio{font-size:14px}.section{margin-bottom:1rem}.section-title{text-align:left;font-size:14px}.paragraph{text-align:left;font-size:14px;line-height:19px}.list{font-size:14px;line-height:22px}.connect-title{font-size:14px}.button{font-size:14px;line-height:19px}.social-links{justify-content:flex-start}.work-title{font-size:14px}.experience-date{font-size:13px}.experience-title,.experience-description,.experience-location{font-size:14px}.credit{text-align:left;margin-top:8rem;font-size:12px}}.drawer-trigger{font-family:var(--font-inter),-apple-system,BlinkMacSystemFont,"Segoe UI",Roboto,Helvetica,Arial,sans-serif;letter-spacing:0;color:#333;cursor:pointer;background-color:#fff;border:1px solid #0000001a;border-radius:9999px;flex-shrink:0;justify-content:center;align-items:center;gap:.5rem;margin-top:12px;padding:.3rem .75rem;font-size:14px;font-weight:400;line-height:23px;transition:all .2s;display:flex;position:relative;overflow:hidden;box-shadow:0 3px 3px #00000005}.drawer-trigger:hover{background-color:#f6f6f6}@media (prefers-color-scheme:dark){.drawer-trigger{color:#fff;background-color:#161615}.drawer-trigger:hover{background-color:#1a1a19}}@media (max-width:768px){.drawer-trigger{font-size:13px;line-height:22px}}.drawer-overlay{background-color:#0006;position:fixed;inset:0}.drawer-content{background-color:#f3f4f6;border-top-left-radius:.825rem;border-top-right-radius:.825rem;outline:none;flex-direction:column;height:fit-content;margin-top:6rem;display:flex;position:fixed;bottom:0;left:0;right:0}.drawer-content-inner{background-color:#fff;border-top-left-radius:.825rem;border-top-right-radius:.825rem;flex:1;padding:1.25rem 1.5rem 4rem}.drawer-handle{background-color:#d1d5db;border-radius:999px;flex-shrink:0;width:3rem;height:.375rem;margin:0 auto 2rem}.drawer-title{color:#111827;margin-bottom:1rem;font-weight:500}.drawer-text{color:#4b5563;margin-bottom:.5rem}.drawer-text-mb-4{color:#4b5563;margin-bottom:1rem}.drawer-content-container{max-width:30rem;margin:0 auto}.drawer-skills-container{margin-top:1.5rem}.drawer-skills-title{margin-bottom:.5rem;font-weight:500}.drawer-skills-tags{flex-wrap:wrap;gap:.5rem;display:flex}.drawer-skill-tag{background-color:#f3f4f6;border-radius:.25rem;padding:.25rem .5rem;font-size:.875rem}.drawer-project-container{margin-top:2rem}.drawer-project-title{margin-bottom:.5rem;font-weight:500}.drawer-projects-list{color:#4b5563;margin-top:.25rem;margin-left:.875rem;font-size:.875rem}.drawer-projects-list li{margin-bottom:.25rem}.drawer-footer{background-color:#f3f4f6;border-top:1px solid #e5e7eb;margin-top:auto;padding:1rem}.drawer-footer-links{justify-content:flex-end;gap:1.5rem;max-width:28rem;margin:0 auto;display:flex}.drawer-footer-link{color:#4b5563;align-items:center;gap:.0625rem;font-size:.75rem;text-decoration:none;display:flex}.drawer-footer-link:hover{color:#374151}.drawer-footer-link svg{width:.75rem;height:.75rem;margin-left:.25rem}.theme-toggle-wrapper{z-index:1000;position:fixed;top:1.5rem;right:1.5rem}.theme-toggle{cursor:pointer;background-color:#e9e9eb;border:none;border-radius:14px;outline:none;width:48px;height:28px;padding:0;transition:background-color .3s;position:relative}.theme-toggle:focus-visible{box-shadow:0 0 0 3px #007dfa66}.theme-toggle.dark{background-color:#3a3a3c}.toggle-thumb{background-color:#fff;border-radius:50%;width:24px;height:24px;transition:transform .3s cubic-bezier(.4,0,.2,1),background-color .3s;position:absolute;top:2px;left:2px;box-shadow:0 2px 6px #00000026,0 1px 1px #00000029}.theme-toggle.dark .toggle-thumb{background-color:#e8e8e8;transform:translate(20px)}@media (max-width:768px){.theme-toggle-wrapper{top:1rem;right:1rem}}.accordion{margin-bottom:1rem}.accordion-header{cursor:pointer;-webkit-user-select:none;user-select:none;-webkit-tap-highlight-color:transparent;justify-content:space-between;align-items:center;padding:.25rem 0;display:flex}.accordion-header:focus{outline:none}.accordion-header:focus-visible{outline:2px solid var(--text-secondary);outline-offset:2px;border-radius:4px}.accordion-header .section-title{margin-bottom:0}.accordion-chevron{color:var(--text-secondary);flex-shrink:0;margin-top:4px;transition:transform .3s}.accordion-chevron.open{transform:rotate(180deg)}.accordion-content{grid-template-rows:0fr;transition:grid-template-rows .35s cubic-bezier(.4,0,.2,1);display:grid}.accordion-content.open{grid-template-rows:1fr}.accordion-content>div{opacity:0;transition:opacity .25s ease-out;overflow:hidden}.accordion-content.open>div{opacity:1;transition:opacity .3s ease-in .1s}.accordion-content>div>:first-child{margin-top:.4rem}
@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2c55a0e60120577a-s.2a48534a.woff2)format("woff2");unicode-range:U+460-52F,U+1C80-1C8A,U+20B4,U+2DE0-2DFF,U+A640-A69F,U+FE2E-FE2F}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/9c72aa0f40e4eef8-s.18a48cbc.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/ad66f9afd8947f86-s.7a40eb73.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/5476f68d60460930-s.c995e352.woff2)format("woff2");unicode-range:U+370-377,U+37A-37F,U+384-38A,U+38C,U+38E-3A1,U+3A3-3FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/2bbe8d2671613f1f-s.76dcb0b2.woff2)format("woff2");unicode-range:U+102-103,U+110-111,U+128-129,U+168-169,U+1A0-1A1,U+1AF-1B0,U+300-301,U+303-304,U+308-309,U+323,U+329,U+1EA0-1EF9,U+20AB}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/1bffadaabf893a1e-s.7cd81963.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Inter;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/83afe278b6a6bb3c-s.p.3a6ba036.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Inter Fallback;src:local(Arial);ascent-override:90.44%;descent-override:22.52%;line-gap-override:0.0%;size-adjust:107.12%}.inter_4a4f7444-module__UHjWDq__className{font-family:Inter,Inter Fallback;font-style:normal}.inter_4a4f7444-module__UHjWDq__variable{--font-inter:"Inter","Inter Fallback"}
@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/4fa387ec64143e14-s.c1fdd6c2.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/bbc41e54d2fcbd21-s.799d8ef8.woff2)format("woff2");unicode-range:U+100-2BA,U+2BD-2C5,U+2C7-2CC,U+2CE-2D7,U+2DD-2FF,U+304,U+308,U+329,U+1D00-1DBF,U+1E00-1E9F,U+1EF2-1EFF,U+2020,U+20A0-20AB,U+20AD-20C0,U+2113,U+2C60-2C7F,U+A720-A7FF}@font-face{font-family:Geist Mono;font-style:normal;font-weight:100 900;font-display:swap;src:url(../media/797e433ab948586e-s.p.dbea232f.woff2)format("woff2");unicode-range:U+??,U+131,U+152-153,U+2BB-2BC,U+2C6,U+2DA,U+2DC,U+304,U+308,U+329,U+2000-206F,U+20AC,U+2122,U+2191,U+2193,U+2212,U+2215,U+FEFF,U+FFFD}@font-face{font-family:Geist Mono Fallback;src:local(Arial);ascent-override:74.67%;descent-override:21.92%;line-gap-override:0.0%;size-adjust:134.59%}.geist_mono_e423e1f1-module__qkJnNW__className{font-family:Geist Mono,Geist Mono Fallback;font-style:normal}.geist_mono_e423e1f1-module__qkJnNW__variable{--font-geist-mono:"Geist Mono","Geist Mono Fallback"}
@font-face{font-family:neueHaas;src:url(../media/NeueHaasUnicaPro_Regular-s.p.02743b43.ttf)format("truetype");font-display:swap}@font-face{font-family:neueHaas Fallback;src:local(Arial);ascent-override:116.25%;descent-override:33.9%;line-gap-override:0.0%;size-adjust:100.3%}.neuehaas_9abaad11-module__bqRdgq__className{font-family:neueHaas,neueHaas Fallback}.neuehaas_9abaad11-module__bqRdgq__variable{--font-neue-haas:"neueHaas","neueHaas Fallback"}
