@import "https://fonts.googleapis.com/css2?family=DM+Sans:ital,opsz,wght@0,9..40,400;0,9..40,500;0,9..40,600;0,9..40,700;1,9..40,400&family=Syne:wght@600;700;800&display=swap";:root{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--font-sans:"DM Sans", system-ui, sans-serif;--font-display:"Syne", system-ui, sans-serif;--radius:14px;--radius-sm:10px;--space:clamp(1rem, 2vw, 1.75rem);--max:1120px;--header-h:72px}[data-theme=dark]{--lightningcss-light: ;--lightningcss-dark:initial;color-scheme:dark;--bg:#07080f;--bg-elevated:#0e101a;--text:#f4f4f8;--muted:#a0a4b8;--line:#ffffff14;--accent:#8b5cf6;--accent-2:#22d3ee;--glow:#8b5cf659;--page-bg:var(--bg);--firefly-core:#fffbeb;--firefly-mid:#fde68a;--firefly-glow:#fde047bf;--firefly-halo:#fafafa47}[data-theme=light]{--lightningcss-light:initial;--lightningcss-dark: ;color-scheme:light;--bg:#f3f7ff;--bg-elevated:#fff;--text:#0f1222;--muted:#4b5168;--line:#1e40af1a;--accent:#4f46e5;--accent-2:#2563eb;--glow:#4f46e538;--page-bg:linear-gradient(165deg, #fff 0%, #fbfdff 22%, #f5f9ff 55%, #eef4ff 82%, #e8f0fc 100%);--firefly-core:#eff6ff;--firefly-mid:#2563eb;--firefly-glow:#2563ebb8;--firefly-halo:#3b82f680}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{min-height:100vh;font-family:var(--font-sans);background:var(--page-bg,var(--bg));color:var(--text);-webkit-font-smoothing:antialiased;background-attachment:fixed;margin:0;line-height:1.6}body.nav-open{overflow:hidden}#root{isolation:isolate}img{max-width:100%;display:block}a{color:inherit;text-underline-offset:3px;text-decoration-thickness:1px}a:hover{text-decoration:underline}:focus-visible{outline:2px solid var(--accent-2);outline-offset:3px}.sr-only{clip:rect(0, 0, 0, 0);white-space:nowrap;border:0;width:1px;height:1px;margin:-1px;padding:0;position:absolute;overflow:hidden}.skip-link{left:var(--space);z-index:2000;background:var(--accent);color:#fff;border-radius:var(--radius-sm);padding:.5rem 1rem;font-weight:600;text-decoration:none;transition:transform .2s;position:absolute;top:.75rem;transform:translateY(-200%)}.skip-link:focus{transform:translateY(0)}.site-loader{z-index:1500;background:var(--page-bg,var(--bg));clip-path:inset(0);place-items:center;display:grid;position:fixed;inset:0}.site-loader__inner{text-align:center}.site-loader__ring{border:3px solid var(--line);border-top-color:var(--accent);border-radius:50%;width:56px;height:56px;margin:0 auto 1rem;animation:.9s linear infinite spin}@media (prefers-reduced-motion:reduce){.site-loader__ring{border-top-color:var(--accent);animation:none}}.site-loader__label{color:var(--muted);margin:0;font-size:.95rem}@keyframes spin{to{transform:rotate(360deg)}}.site-header{z-index:100;height:var(--header-h);background:color-mix(in srgb, var(--bg) 82%, transparent);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--line);justify-content:space-between;align-items:center;gap:1rem;padding:0 clamp(1rem,4vw,2.5rem);display:flex;position:fixed;top:0;left:0;right:0}.site-header__brand{font-family:var(--font-display);letter-spacing:-.02em;align-items:center;gap:.5rem;font-size:clamp(.78rem,2.1vw,.98rem);font-weight:800;text-decoration:none;display:inline-flex}.site-header__brand:hover{text-decoration:none}.site-header__dot{background:linear-gradient(135deg, var(--accent), var(--accent-2));width:10px;height:10px;box-shadow:0 0 18px var(--glow);border-radius:50%}.site-header__nav ul{gap:1.25rem;margin:0;padding:0;list-style:none;display:flex}.site-header__nav a{color:var(--muted);font-size:.95rem;font-weight:500;text-decoration:none}.site-header__nav a:hover,.site-header__nav a.is-active{color:var(--text)}.site-header__nav a.is-active{text-decoration:underline;-webkit-text-decoration-color:var(--accent-2);text-decoration-color:var(--accent-2)}.site-header__actions{align-items:center;gap:.5rem;display:flex}.theme-toggle{border:1px solid var(--line);background:var(--bg-elevated);width:42px;height:42px;color:var(--text);cursor:pointer;border-radius:50%;font-size:1.1rem}.site-header__burger{border:1px solid var(--line);border-radius:var(--radius-sm);cursor:pointer;background:0 0;flex-direction:column;justify-content:center;gap:6px;width:44px;height:44px;display:none}.site-header__burger span{background:var(--text);width:22px;height:2px;margin:0 auto;display:block}.site-header__mobile{top:var(--header-h);background:var(--bg-elevated);border-bottom:1px solid var(--line);padding:1rem 1.25rem 1.5rem;position:absolute;left:0;right:0}.site-header__mobile ul{flex-direction:column;gap:.75rem;margin:0;padding:0;list-style:none;display:flex}.site-header__mobile a{font-weight:600;text-decoration:none}@media (width<=900px){.site-header__nav{display:none}.site-header__burger{display:flex}}@media (width>=901px){.site-header__mobile{display:none}}.btn{cursor:pointer;border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;gap:.35rem;padding:.75rem 1.25rem;font-size:.95rem;font-weight:600;text-decoration:none;transition:background .2s,border-color .2s,transform .15s;display:inline-flex}.btn:hover{text-decoration:none;transform:translateY(-1px)}.btn--sm{padding:.45rem .9rem;font-size:.85rem}.btn--primary{background:linear-gradient(120deg, var(--accent), var(--accent-2));color:#fff;box-shadow:0 10px 30px var(--glow)}.btn--ghost{border-color:var(--line);color:var(--text);background:0 0}.btn--outline{background:var(--bg-elevated);border-color:var(--line);color:var(--text)}.page-ambience{z-index:0;pointer-events:none;position:fixed;inset:0;overflow:hidden}.page-ambience__layer{position:absolute;inset:0}.page-firefly{background:radial-gradient(circle, var(--firefly-core) 0%, var(--firefly-mid) 48%, transparent 74%);box-shadow:0 0 clamp(4px, .9vmin, 8px) 1px var(--firefly-glow), 0 0 clamp(12px, 2.4vmin, 22px) clamp(3px, .9vmin, 6px) var(--firefly-halo);opacity:.35;will-change:transform, opacity;border-radius:50%;animation:cubic-bezier(.42,0,.25,1) infinite firefly-drift;position:absolute}[data-theme=light] .page-firefly{opacity:.52;box-shadow:0 0 clamp(4px, .9vmin, 8px) 1px var(--firefly-glow), 0 0 clamp(12px, 2.4vmin, 22px) clamp(3px, 1vmin, 6px) var(--firefly-halo)}.page-firefly.is-static{opacity:.45;animation:none}@keyframes firefly-drift{0%,to{opacity:.12;transform:translate(0,0)scale(1)}18%{opacity:.92}38%{transform:translate3d(var(--ff-dx), var(--ff-dy), 0) scale(1.18);opacity:.88}62%{transform:translate3d(var(--ff-dx2), var(--ff-dy2), 0) scale(1.06);opacity:.55}82%{opacity:.28}}@media (prefers-reduced-motion:reduce){.page-firefly{animation:none}}.site-main{z-index:1;padding-top:var(--header-h);scroll-margin-top:calc(var(--header-h) + 1rem);position:relative}.hero-section{min-height:calc(100vh - var(--header-h));align-items:center;padding:clamp(2rem,5vw,4rem) clamp(1rem,4vw,2.5rem);display:flex;position:relative;overflow:hidden}.hero-canvas,.hero-fallback{z-index:0;pointer-events:none;position:absolute;inset:0}.hero-canvas canvas{width:100%!important;height:100%!important}.hero-fallback__blob{filter:blur(80px);opacity:.55;border-radius:50%;width:55vmax;height:55vmax;animation:18s ease-in-out infinite alternate floaty;position:absolute}.hero-fallback__blob--a{background:radial-gradient(circle, var(--accent), transparent 65%);top:-10%;left:-15%}.hero-fallback__blob--b{background:radial-gradient(circle, var(--accent-2), transparent 60%);animation-delay:-4s;bottom:-15%;right:-20%}.hero-fallback__noise{opacity:.07;mix-blend-mode:overlay;background-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='120' height='120' viewBox='0 0 120 120'%3E%3Cfilter id='n'%3E%3CfeTurbulence type='fractalNoise' baseFrequency='0.9' numOctaves='3' stitchTiles='stitch'/%3E%3C/filter%3E%3Crect width='120' height='120' filter='url(%23n)' opacity='0.55'/%3E%3C/svg%3E");position:absolute;inset:0}@media (prefers-reduced-motion:reduce){.hero-fallback__blob{animation:none}}@keyframes floaty{0%{transform:translate(0,0)scale(1)}to{transform:translate(3%,4%)scale(1.08)}}.hero-section__layout{z-index:2;width:100%;max-width:var(--max);grid-template-columns:minmax(0,1fr) minmax(0,min(100%,clamp(18rem,88vw,42rem)));align-items:center;gap:clamp(1rem,4vw,3rem);margin:0 auto;display:grid;position:relative}.hero-section__panel{border-radius:var(--radius);background:color-mix(in srgb, var(--bg) 18%, transparent);border:1px solid var(--line);-webkit-backdrop-filter:blur(18px);width:min(100%,clamp(18rem,92vw,42rem));transform-style:preserve-3d;padding:clamp(1.1rem,4.2vw,2.7rem) clamp(1.15rem,4vw,2.7rem);box-shadow:0 24px 60px #0000002e}[data-theme=light] .hero-section__panel{background:#ffffff1a;box-shadow:0 18px 50px #1e3a8a12}@media (width>=901px){.hero-section__panel{grid-column:2;justify-self:end}}@media (width<=900px){.hero-section{padding-left:clamp(.85rem,4vw,1.5rem);padding-right:clamp(.85rem,4vw,1.5rem)}.hero-section__layout{grid-template-columns:1fr;justify-items:stretch}.hero-section__panel{justify-self:stretch;width:100%;max-width:min(36rem,100%);margin-inline:auto}}.hero-eyebrow{margin:0 0 1rem}.hero-eyebrow__inner{letter-spacing:clamp(.1em,.35vw,.14em);text-transform:uppercase;color:var(--muted);border:1px solid var(--line);background:color-mix(in srgb, var(--bg-elevated) 70%, transparent);border-radius:999px;align-items:center;padding:clamp(.26rem,1.1vw,.38rem) clamp(.5rem,2.4vw,.78rem);font-size:clamp(.58rem,1.65vw,.7rem);font-weight:700;display:inline-flex}.hero-title{font-family:var(--font-display);letter-spacing:-.03em;margin:0 0 1rem}.hero-title__line{color:var(--text);font-size:clamp(2.35rem,5.5vw,3.6rem);line-height:1.08;display:block}.hero-title__first{font-weight:700}.hero-title__last{background:linear-gradient(110deg, var(--accent), var(--accent-2));color:#0000;-webkit-background-clip:text;background-clip:text;font-weight:800}.hero-title__role{color:var(--muted);letter-spacing:.01em;margin-top:.5rem;font-size:clamp(1.05rem,2.4vw,1.35rem);font-weight:600;display:block}.hero-lead{color:var(--text);max-width:38rem;margin:0 0 .85rem;font-size:clamp(1rem,2.1vw,1.12rem);line-height:1.55}.hero-sub{color:var(--muted);max-width:38rem;margin:0 0 1.25rem;font-size:.95rem;line-height:1.55}.hero-badges{flex-wrap:wrap;gap:.45rem;margin:0 0 1.35rem;padding:0;list-style:none;display:flex}.hero-badges li{border:1px solid var(--line);color:var(--muted);background:color-mix(in srgb, var(--bg-elevated) 55%, transparent);border-radius:999px;padding:.35rem .65rem;font-size:.78rem;font-weight:600}.hero-cta{flex-wrap:wrap;gap:.65rem;display:flex}.section{padding:clamp(3rem,8vw,6rem) clamp(1rem,4vw,2.5rem)}.section__head{max-width:var(--max);margin:0 auto 2.5rem}.section__head h2{font-family:var(--font-display);margin:0 0 .5rem;font-size:clamp(1.75rem,3vw,2.35rem)}.section__intro{color:var(--muted);max-width:40rem;margin:0}.about__grid{max-width:var(--max);grid-template-columns:1fr 1.1fr;gap:2rem;margin:0 auto;display:grid}@media (width<=900px){.about__grid{grid-template-columns:1fr}}.about__bio p{color:var(--muted)}.timeline-card{border-radius:var(--radius);border:1px solid var(--line);background:var(--bg-elevated);margin-bottom:1rem;padding:1.25rem 1.35rem}.timeline-card__year{color:var(--accent-2);letter-spacing:.04em;font-size:.8rem;font-weight:700}.timeline-card h3{margin:.35rem 0 .15rem;font-size:1.1rem}.timeline-card__org{color:var(--muted);margin:0 0 .5rem;font-size:.9rem}.timeline-card p:last-child{color:var(--muted);margin:0;font-size:.95rem}.skills__bars{max-width:var(--max);flex-direction:column;gap:1.25rem;margin:0 auto;display:flex}.skill-bar__top{justify-content:space-between;margin-bottom:.35rem;font-size:.9rem;display:flex}.skill-bar__track{background:var(--line);border-radius:999px;height:10px;overflow:hidden}.skill-bar__fill{border-radius:inherit;background:linear-gradient(90deg, var(--accent), var(--accent-2));width:0%;height:100%}.skills__tags-wrap{max-width:var(--max);border-top:1px solid var(--line);margin:2.75rem auto 0;padding-top:2rem}.skills__tags-title{font-size:1.05rem;font-family:var(--font-display);color:var(--text);margin:0 0 1rem}.skills__tags{flex-wrap:wrap;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.skills__tags li{border:1px solid var(--line);color:var(--muted);background:var(--bg-elevated);border-radius:999px;padding:.4rem .75rem;font-size:.85rem;font-weight:600}.projects__grid{max-width:var(--max);grid-template-columns:repeat(auto-fit,minmax(280px,1fr));gap:1.5rem;margin:0 auto;display:grid}.project-card-wrap{height:100%}.project-card{border-radius:var(--radius);border:1px solid var(--line);background:var(--bg-elevated);flex-direction:column;height:100%;display:flex;overflow:hidden}.project-card__media img{aspect-ratio:8/5;object-fit:cover;width:100%;height:auto}.project-card__body{flex-direction:column;flex:1;gap:.65rem;padding:1.15rem 1.25rem 1.35rem;display:flex}.project-card__body h3{margin:0;font-size:1.15rem}.project-card__body>p{color:var(--muted);flex:1;margin:0;font-size:.92rem}.project-card__tags{flex-wrap:wrap;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.project-card__tags li{border:1px solid var(--line);color:var(--muted);border-radius:999px;padding:.2rem .55rem;font-size:.75rem}.project-card__links{gap:.75rem;margin-top:.25rem;display:flex}.project-card__links a{font-size:.9rem;font-weight:600}.contact__layout{max-width:var(--max);grid-template-columns:1.2fr .8fr;gap:2rem;margin:0 auto;display:grid}@media (width<=900px){.contact__layout{grid-template-columns:1fr}}.contact__form{border-radius:var(--radius);border:1px solid var(--line);background:var(--bg-elevated);flex-direction:column;gap:1rem;padding:1.5rem;display:flex}.field label{margin-bottom:.35rem;font-size:.9rem;font-weight:600;display:block}.field input,.field textarea{border-radius:var(--radius-sm);border:1px solid var(--line);background:var(--bg);width:100%;color:var(--text);font:inherit;padding:.65rem .75rem}.field__error{color:#f87171;margin:.35rem 0 0;font-size:.82rem}.contact__actions{flex-wrap:wrap;gap:.65rem;margin-top:.25rem;display:flex}.contact__aside{border-radius:var(--radius);border:1px dashed var(--line);align-self:start;padding:1.5rem}.contact__email{margin:0 0 1rem;font-weight:600}.contact__email a{text-decoration:none}.contact__email a:hover{text-decoration:underline}.contact__social{flex-direction:column;gap:.5rem;margin:0;padding:0;list-style:none;display:flex}.contact__social a{font-weight:600}.site-footer{z-index:1;border-top:1px solid var(--line);text-align:center;color:var(--muted);padding:2rem clamp(1rem,4vw,2.5rem) 3rem;font-size:.9rem;position:relative}.site-footer p{margin:0}
