@font-face{font-family:Sora;font-style:normal;font-weight:400;font-display:swap;src:url(../media/3dbe685087e51055-s.3go3gb1_xu4rn.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:Sora;font-style:normal;font-weight:400;font-display:swap;src:url(../media/6bd983bd58a87a3d-s.p.1hey5yyym6mz_.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:Sora;font-style:normal;font-weight:500;font-display:swap;src:url(../media/3dbe685087e51055-s.3go3gb1_xu4rn.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:Sora;font-style:normal;font-weight:500;font-display:swap;src:url(../media/6bd983bd58a87a3d-s.p.1hey5yyym6mz_.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:Sora;font-style:normal;font-weight:600;font-display:swap;src:url(../media/3dbe685087e51055-s.3go3gb1_xu4rn.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:Sora;font-style:normal;font-weight:600;font-display:swap;src:url(../media/6bd983bd58a87a3d-s.p.1hey5yyym6mz_.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:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(../media/3dbe685087e51055-s.3go3gb1_xu4rn.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:Sora;font-style:normal;font-weight:700;font-display:swap;src:url(../media/6bd983bd58a87a3d-s.p.1hey5yyym6mz_.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:Sora Fallback;src:local(Arial);ascent-override:85.29%;descent-override:25.5%;line-gap-override:0.0%;size-adjust:113.73%}.sora_af1f9e3-module__aeo33G__className{font-family:Sora,Sora Fallback;font-style:normal}.sora_af1f9e3-module__aeo33G__variable{--font-display:"Sora", "Sora Fallback"}
@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:400;font-display:swap;src:url(../media/da8a9dd0d68e512b-s.0n8i_inn0i2i9.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:"Source Sans 3";font-style:normal;font-weight:400;font-display:swap;src:url(../media/94b4a5dc1fe84361-s.3wm_n5jv1to7s.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:400;font-display:swap;src:url(../media/ff5be760267bb4bc-s.3dkqd4mro2h3_.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:400;font-display:swap;src:url(../media/99596c30eb072d3c-s.2fp9tilo6sy14.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:"Source Sans 3";font-style:normal;font-weight:400;font-display:swap;src:url(../media/e5864b32625b6bc3-s.0m7i6b77o5yxd.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:"Source Sans 3";font-style:normal;font-weight:400;font-display:swap;src:url(../media/e285ad1a914469f0-s.15241mr5-1s6i.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:"Source Sans 3";font-style:normal;font-weight:400;font-display:swap;src:url(../media/47df9ba1c7236d3b-s.p.137759vg1sbmi.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:"Source Sans 3";font-style:normal;font-weight:500;font-display:swap;src:url(../media/da8a9dd0d68e512b-s.0n8i_inn0i2i9.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:"Source Sans 3";font-style:normal;font-weight:500;font-display:swap;src:url(../media/94b4a5dc1fe84361-s.3wm_n5jv1to7s.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:500;font-display:swap;src:url(../media/ff5be760267bb4bc-s.3dkqd4mro2h3_.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:500;font-display:swap;src:url(../media/99596c30eb072d3c-s.2fp9tilo6sy14.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:"Source Sans 3";font-style:normal;font-weight:500;font-display:swap;src:url(../media/e5864b32625b6bc3-s.0m7i6b77o5yxd.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:"Source Sans 3";font-style:normal;font-weight:500;font-display:swap;src:url(../media/e285ad1a914469f0-s.15241mr5-1s6i.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:"Source Sans 3";font-style:normal;font-weight:500;font-display:swap;src:url(../media/47df9ba1c7236d3b-s.p.137759vg1sbmi.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:"Source Sans 3";font-style:normal;font-weight:600;font-display:swap;src:url(../media/da8a9dd0d68e512b-s.0n8i_inn0i2i9.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:"Source Sans 3";font-style:normal;font-weight:600;font-display:swap;src:url(../media/94b4a5dc1fe84361-s.3wm_n5jv1to7s.woff2)format("woff2");unicode-range:U+301,U+400-45F,U+490-491,U+4B0-4B1,U+2116}@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:600;font-display:swap;src:url(../media/ff5be760267bb4bc-s.3dkqd4mro2h3_.woff2)format("woff2");unicode-range:U+1F??}@font-face{font-family:"Source Sans 3";font-style:normal;font-weight:600;font-display:swap;src:url(../media/99596c30eb072d3c-s.2fp9tilo6sy14.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:"Source Sans 3";font-style:normal;font-weight:600;font-display:swap;src:url(../media/e5864b32625b6bc3-s.0m7i6b77o5yxd.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:"Source Sans 3";font-style:normal;font-weight:600;font-display:swap;src:url(../media/e285ad1a914469f0-s.15241mr5-1s6i.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:"Source Sans 3";font-style:normal;font-weight:600;font-display:swap;src:url(../media/47df9ba1c7236d3b-s.p.137759vg1sbmi.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:"Source Sans 3 Fallback";src:local(Arial);ascent-override:109.21%;descent-override:42.66%;line-gap-override:0.0%;size-adjust:93.76%}.source_sans_3_fdf69974-module__wTMdBG__className{font-family:"Source Sans 3","Source Sans 3 Fallback";font-style:normal}.source_sans_3_fdf69974-module__wTMdBG__variable{--font-body:"Source Sans 3", "Source Sans 3 Fallback"}
:root{--bg:#070b16;--bg-elevated:#101827;--bg-panel:#121a2b;--ink:#f4f7ff;--muted:#9aa8c7;--line:#94a3c824;--accent:#3b82f6;--accent-bright:#60a5fa;--accent-deep:#2563eb;--violet:#8b5cf6;--space:clamp(1.25rem, 3vw, 2.5rem);--max:78rem;--radius:.85rem}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{color:var(--ink);font-family:var(--font-body), system-ui, sans-serif;background:radial-gradient(900px 520px at 82% 8%, #3b82f638, transparent 55%), radial-gradient(720px 480px at 8% 18%, #8b5cf629, transparent 50%), radial-gradient(600px 400px at 50% 100%, #2563eb1a, transparent 55%), linear-gradient(180deg, #0a1020 0%, var(--bg) 45%, #050812 100%);min-height:100vh;margin:0;font-size:1.0625rem;line-height:1.6}img{max-width:100%;display:block}a{color:inherit;text-decoration:none}.grain{pointer-events:none;z-index:60;opacity:.045;mix-blend-mode:soft-light;background-image:url("data:image/svg+xml,%3Csvg viewBox='0 0 200 200' xmlns='http://www.w3.org/2000/svg'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.85' numOctaves='4' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='100%25' height='100%25' filter='url(%23n)'/%3E%3C/svg%3E");position:fixed;inset:0}.site-header{z-index:50;padding:1rem var(--space);-webkit-backdrop-filter:blur(12px);backdrop-filter:blur(12px);background:linear-gradient(#070b16eb,#070b1600);justify-content:space-between;align-items:center;gap:1rem;display:flex;position:fixed;top:0;left:0;right:0}.site-header.is-open{-webkit-backdrop-filter:none;backdrop-filter:none;background:0 0}.logo{font-family:var(--font-display), system-ui, sans-serif;letter-spacing:.04em;z-index:52;font-size:.95rem;font-weight:700;position:relative}.nav-desktop{font-family:var(--font-display), system-ui, sans-serif;letter-spacing:.08em;text-transform:uppercase;gap:1.5rem;font-size:.75rem;font-weight:600;display:none}.nav-desktop a{color:var(--muted);transition:color .2s}.nav-desktop a:hover{color:var(--ink)}.nav-actions-desktop{align-items:center;gap:.75rem;display:none}.nav-link{font-family:var(--font-display), system-ui, sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--muted);font-size:.75rem;font-weight:700;transition:color .2s;display:inline-flex}.nav-link:hover{color:var(--ink)}.nav-github{font-family:var(--font-display), system-ui, sans-serif;letter-spacing:.08em;text-transform:uppercase;color:var(--accent-bright);background:#3b82f614;border:1px solid #60a5fa59;border-radius:999px;padding:.55rem .9rem;font-size:.75rem;font-weight:700;transition:background .2s,border-color .2s}.nav-github:hover{background:#3b82f62e;border-color:#60a5fa99}.nav-toggle{z-index:52;cursor:pointer;background:#3b82f614;border:1px solid #60a5fa59;border-radius:.7rem;flex-direction:column;justify-content:center;gap:.35rem;width:2.5rem;height:2.5rem;padding:.55rem;display:inline-flex;position:relative}.nav-toggle-bar{background:var(--accent-bright);transform-origin:50%;border-radius:999px;width:100%;height:2px;transition:transform .25s,opacity .2s;display:block}.site-header.is-open .nav-toggle-bar:first-child{transform:translateY(7.5px)rotate(45deg)}.site-header.is-open .nav-toggle-bar:nth-child(2){opacity:0}.site-header.is-open .nav-toggle-bar:nth-child(3){transform:translateY(-7.5px)rotate(-45deg)}.nav-panel{z-index:45;padding:5.75rem var(--space) 2.25rem;background:radial-gradient(700px 420px at 80% 0,#3b82f638,#0000 55%),#070b16;flex-direction:column;justify-content:space-between;gap:2rem;display:flex;position:fixed;inset:0;overflow-y:auto}.nav-panel[hidden]{display:none}.nav-panel-links{font-family:var(--font-display), system-ui, sans-serif;letter-spacing:-.02em;gap:1.25rem;margin:auto 0;font-size:clamp(1.55rem,6vw,2rem);font-weight:600;display:grid}.nav-panel-links a{color:var(--ink);transition:color .2s}.nav-panel-links a:hover{color:var(--accent-bright)}.nav-panel-actions{flex-wrap:wrap;gap:.75rem;padding-top:.5rem;display:flex}.nav-panel-actions .btn{flex:auto;min-width:6.5rem}@media (min-width:900px){.nav-desktop,.nav-actions-desktop{display:flex}.nav-toggle,.nav-panel{display:none!important}}.hero{padding:calc(6.5rem + var(--space)) var(--space) clamp(3.5rem, 8vw, 5.5rem);width:min(100% - 2 * var(--space), var(--max));box-sizing:content-box;grid-template-columns:minmax(0,1fr) auto;align-items:center;gap:1.75rem clamp(2rem,6vw,5rem);margin:0 auto;display:grid;position:relative}.hero-avatar{object-fit:cover;object-position:center 18%;border:2px solid #60a5fa8c;border-radius:50%;justify-self:end;width:clamp(11rem,22vw,16rem);height:clamp(11rem,22vw,16rem);margin:0;box-shadow:0 0 0 10px #3b82f61a,0 22px 48px #0006}.hero-copy{z-index:1;width:100%;max-width:none;animation:.9s both rise;position:relative}@media (max-width:820px){.hero{text-align:center;padding-top:calc(5.25rem + var(--space));grid-template-columns:1fr;justify-items:center;row-gap:1.35rem}.hero-avatar{order:-1;justify-self:center;width:clamp(7.5rem,34vw,10rem);height:clamp(7.5rem,34vw,10rem);box-shadow:0 0 0 8px #3b82f61a,0 16px 36px #00000059}.hero-copy{flex-direction:column;align-items:center;display:flex}.hero-copy h1,.hero-lead{max-width:34ch}.hero-actions{justify-content:center}}.hero-brand{font-family:var(--font-display), system-ui, sans-serif;letter-spacing:-.035em;background:linear-gradient(115deg,#fff 10%,#93c5fd 55%,#a78bfa 100%);color:#0000;-webkit-background-clip:text;background-clip:text;margin:0 0 .85rem;font-size:clamp(2.4rem,6.5vw,4rem);font-weight:700;line-height:1}.hero-copy h1{font-family:var(--font-display), system-ui, sans-serif;color:var(--ink);max-width:42ch;margin:0;font-size:clamp(1.15rem,2.2vw,1.45rem);font-weight:600;line-height:1.4}.text-gradient{background:linear-gradient(115deg,#60a5fa,#a78bfa);color:#0000;-webkit-background-clip:text;background-clip:text}.hero-lead{color:var(--muted);max-width:48ch;margin:1.15rem 0 0;font-size:1.05rem}.hero-actions{flex-wrap:wrap;gap:.75rem;margin-top:1.85rem;display:flex}.btn{font-family:var(--font-display), system-ui, sans-serif;letter-spacing:.06em;text-transform:uppercase;border:1px solid #0000;border-radius:.75rem;justify-content:center;align-items:center;padding:.9rem 1.25rem;font-size:.78rem;font-weight:700;transition:transform .2s,background .2s,border-color .2s,box-shadow .2s;display:inline-flex}.btn:hover{transform:translateY(-1px)}.btn-primary{background:linear-gradient(135deg, var(--accent-bright), var(--accent-deep));color:#fff;box-shadow:0 10px 28px #2563eb59}.btn-primary:hover{background:linear-gradient(135deg, #93c5fd, var(--accent))}.btn-ghost{border-color:var(--line);color:var(--ink);background:#ffffff08}.btn-ghost:hover{background:#3b82f614;border-color:#60a5fa73}.section{width:min(100% - 2 * var(--space), var(--max));margin:0 auto;padding:clamp(3.5rem,8vw,6rem) 0}.section-head{max-width:30rem;margin-bottom:1.75rem}.eyebrow{font-family:var(--font-display), system-ui, sans-serif;letter-spacing:.16em;text-transform:uppercase;color:var(--accent-bright);margin:0 0 .65rem;font-size:.72rem;font-weight:700}.section-head h2{font-family:var(--font-display), system-ui, sans-serif;letter-spacing:-.02em;margin:0;font-size:clamp(1.75rem,4vw,2.45rem);line-height:1.15}.about-text,.contact-text{max-width:40rem;color:var(--muted);margin:0;font-size:clamp(1.05rem,2vw,1.25rem)}.timeline{gap:.9rem;margin:0;padding:0;list-style:none;display:grid}.job{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(#121a2bf2,#0c1220e6);gap:1rem;padding:1.35rem 1.25rem;transition:border-color .2s,transform .2s;display:grid}.job:hover{border-color:#60a5fa59;transform:translateY(-2px)}@media (min-width:860px){.job{grid-template-columns:minmax(15rem,.85fr) 1.2fr;gap:1.75rem;padding:1.5rem}}.job-meta h3,.edu h3{font-family:var(--font-display), system-ui, sans-serif;letter-spacing:-.01em;margin:0 0 .35rem;font-size:1.1rem;font-weight:700}.org{color:var(--accent-bright);font-family:var(--font-display), system-ui, sans-serif;margin:0;font-size:.82rem;font-weight:600}.when{color:var(--muted);margin:.4rem 0 0;font-size:.92rem}.job ul{color:var(--muted);margin:0;padding-left:1.1rem}.job li+li{margin-top:.5rem}.edu{border:1px solid var(--line);border-radius:var(--radius);background:linear-gradient(#121a2bf2,#0c1220e6);padding:1.4rem 1.35rem}.skill-list{flex-wrap:wrap;gap:.65rem;margin:0;padding:0;list-style:none;display:flex}.skill-list li{font-family:var(--font-display), system-ui, sans-serif;letter-spacing:.04em;text-transform:uppercase;border:1px solid var(--line);color:var(--muted);background:#101827cc;border-radius:.7rem;padding:.7rem .95rem;font-size:.76rem;font-weight:600;transition:color .2s,border-color .2s,background .2s}.skill-list li:hover{color:var(--ink);background:#3b82f61f;border-color:#60a5fa73}.contact .btn{margin-top:0}.contact-actions{flex-wrap:wrap;gap:.75rem;margin-top:1.5rem;display:flex}.site-footer{width:min(100% - 2 * var(--space), var(--max));border-top:1px solid var(--line);color:var(--muted);font-family:var(--font-display), system-ui, sans-serif;letter-spacing:.08em;text-transform:uppercase;flex-wrap:wrap;justify-content:space-between;align-items:center;gap:1rem;margin:0 auto;padding:2rem 0 3rem;font-size:.72rem;display:flex}.footer-links{flex-wrap:wrap;gap:1rem;display:flex}.footer-links a{color:var(--muted);transition:color .2s}.footer-links a:hover{color:var(--accent-bright)}.reveal{opacity:1;transform:none}.js-ready .reveal{opacity:0;transition:opacity .6s,transform .6s;transform:translateY(18px)}.js-ready .reveal.is-visible{opacity:1;transform:none}@keyframes rise{0%{opacity:0;transform:translateY(24px)}to{opacity:1;transform:none}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}.hero-copy,.reveal,.job{opacity:1!important;transition:none!important;animation:none!important;transform:none!important}}
