:root{--bg:#fff;--text:#111827;--muted:#6b7280;--card:#fbfbfc;--border:#1118271f;--shadow:0 1px 2px #1118270f,0 10px 30px #1118270f;--link:#111827;--accent:#2563eb;--radius:18px}*{box-sizing:border-box}html,body{margin:0;padding:0}body{background:var(--bg);color:var(--text);font-family:var(--font-jakarta),var(--font-inter),ui-sans-serif,system-ui,-apple-system,Segoe UI,Roboto,Helvetica,Arial;line-height:1.6}a{color:var(--link);text-decoration:none}a:hover{text-decoration:underline}.container{max-width:980px;margin:0 auto;padding:32px 18px 70px}.nav{-webkit-backdrop-filter:blur(10px);backdrop-filter:blur(10px);border-bottom:1px solid var(--border);background:#ffffffd9;position:sticky;top:0}.navInner{justify-content:space-between;align-items:center;gap:14px;max-width:980px;margin:0 auto;padding:14px 18px;display:flex}.brand{letter-spacing:-.2px;font-weight:650}.navLinks{flex-wrap:wrap;justify-content:flex-end;align-items:center;gap:10px;display:flex}.pill{border:1px solid var(--border);background:#fff;border-radius:999px;padding:8px 12px;box-shadow:0 1px #11182708}.pill:hover{background:#11182708;text-decoration:none}.h1{letter-spacing:-.6px;margin:0 0 10px;font-size:40px;line-height:1.12}.sub{color:var(--muted);max-width:70ch;margin:0 0 24px}.heroRow{grid-template-columns:1fr;align-items:center;gap:0;padding:20px 0 28px;display:grid}@media (min-width:820px){.heroRow{grid-template-columns:1.6fr .8fr}}.avatarWrap{justify-content:center;align-items:center;display:flex}@media (min-width:820px){.avatarWrap{justify-content:flex-end}}.avatar{border:1px solid var(--border);width:250px;height:250px;box-shadow:var(--shadow);background:#fff;border-radius:999px;overflow:hidden}.grid{grid-template-columns:1fr;gap:14px;display:grid}@media (min-width:820px){.grid{grid-template-columns:1fr 1fr}}.card{border:5px solid var(--border);background:var(--card);border-radius:var(--radius);padding:16px;box-shadow:0 1px #11182708}.cardTitle{letter-spacing:-.2px;margin:0 0 6px;font-size:22px}.projCard{border:1px solid var(--border);background:var(--card);border-radius:var(--radius);grid-template-columns:1fr;gap:14px;padding:16px;display:grid;box-shadow:0 1px #11182708}@media (min-width:820px){.projCard{grid-template-columns:1fr 1fr;align-items:stretch;gap:18px}}.projList{margin:10px 0 0;padding-left:18px}.projImages.singleImage{align-self:center}.projImages{align-items:center;gap:12px;display:grid}.projFigure{margin:0}.projImgWrap{border:1px solid var(--border);background:#fff;border-radius:14px;overflow:hidden}.projImg{width:100%;height:auto;display:block}.projCaption{color:var(--muted);margin-top:6px;font-size:12px}.projRight{flex-direction:column;display:flex}.projRight.projRightSingle{justify-content:center}.muted{color:var(--muted)}.btnRow{flex-wrap:wrap;gap:10px;margin-top:14px;display:flex}.button{border:1px solid var(--border);background:#fff;border-radius:999px;justify-content:center;align-items:center;gap:8px;padding:10px 14px;font-weight:550;display:inline-flex;box-shadow:0 1px #11182708}.button:hover{background:#11182708;text-decoration:none}.buttonPrimary{color:var(--accent);background:#2563eb14;border-color:#2563eb40}.buttonPrimary:hover{background:#2563eb1f}.tags{flex-wrap:wrap;gap:8px;margin-top:10px;display:flex}.tag{border:1px solid var(--border);color:var(--muted);background:#fff;border-radius:999px;padding:5px 9px;font-size:12px}.footer{border-top:1px solid var(--border);color:var(--muted);max-width:980px;margin:0 auto;padding:22px 18px}
@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_c15e96cb-module__0bjUvq__className{font-family:Inter,Inter Fallback;font-style:normal}.inter_c15e96cb-module__0bjUvq__variable{--font-inter:"Inter","Inter Fallback"}
@font-face{font-family:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/0b1dc8ddaa74ba49-s.8624a701.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:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/e629b5bc06499d58-s.8e66b869.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:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/1a099d89ee94ee96-s.f6ed4c33.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:Plus Jakarta Sans;font-style:normal;font-weight:200 800;font-display:swap;src:url(../media/fba5a26ea33df6a3-s.p.1bbdebe6.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:Plus Jakarta Sans Fallback;src:local(Arial);ascent-override:98.88%;descent-override:21.15%;line-gap-override:0.0%;size-adjust:104.98%}.plus_jakarta_sans_6cbc0d5f-module__dx4leq__className{font-family:Plus Jakarta Sans,Plus Jakarta Sans Fallback;font-style:normal}.plus_jakarta_sans_6cbc0d5f-module__dx4leq__variable{--font-jakarta:"Plus Jakarta Sans","Plus Jakarta Sans Fallback"}
