@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@500;700&family=Onest:wght@400;500;600;700&family=Unbounded:wght@500;700;800&display=swap";:root{--bg:#eceaf2;--card:#f8f7fb;--ink-strong:#161224;--ink-muted:#5e5871;--line-soft:#d9d4e8;--line-strong:#bdb3d3;--violet-500:#6a4eff;--pink-500:#ef5fba;--soft-shadow:0 10px 22px #261c480f, 0 2px 4px #1510290d;--float-shadow:0 20px 34px #31225e29, 0 8px 13px #281c4a1a;--font-body:"Onest", "Segoe UI Variable Text", "Helvetica Neue", "Noto Sans", sans-serif;--font-display:"Unbounded", "Arial Black", sans-serif;--font-mono:"JetBrains Mono", "SFMono-Regular", monospace;font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-size:17px;line-height:1.45}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}body{min-height:100vh;color:var(--ink-strong);background-color:var(--bg);background-image:radial-gradient(circle at 11% 10%, color-mix(in srgb, var(--pink-500) 16%, transparent), transparent 38%), radial-gradient(circle at 84% 6%, color-mix(in srgb, var(--violet-500) 16%, transparent), transparent 36%), linear-gradient(90deg, #71679714 1px, transparent 1px), linear-gradient(180deg, #71679714 1px, transparent 1px);background-size:100% 100%,100% 100%,54px 54px,54px 54px;margin:0;position:relative}body:after{content:"";pointer-events:none;opacity:.14;mix-blend-mode:multiply;background-image:radial-gradient(#221a3314 .7px,#0000 .7px);background-size:2px 2px;position:fixed;inset:0}a,button{font:inherit}#root{isolation:isolate}@media (width<=760px){:root{font-size:16px}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}.window-frame{border:1px solid var(--line-soft);background:var(--card);box-shadow:var(--soft-shadow);border-radius:28px}.page-shell{width:min(1180px,100% - 2.25rem);margin:1rem auto 2.5rem}.topbar{z-index:20;-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);background:color-mix(in srgb, var(--card) 78%, white 22%);justify-content:space-between;align-items:center;margin-bottom:1.4rem;padding:.75rem .95rem;display:flex;position:sticky;top:.9rem}.brand-chip{border:1px solid var(--line-strong);background:linear-gradient(116deg, color-mix(in srgb, var(--violet-500) 22%, white 78%), color-mix(in srgb, var(--pink-500) 18%, white 82%));color:var(--ink-strong);font-family:var(--font-mono);letter-spacing:.04em;text-transform:uppercase;border-radius:999px;padding:.57rem .88rem;font-size:.79rem;line-height:1;text-decoration:none}.nav-list{align-items:center;gap:.42rem;margin:0;padding:0;list-style:none;display:flex}.nav-link{color:var(--ink-muted);border:1px solid #0000;border-radius:999px;padding:.58rem .92rem;font-size:.9rem;font-weight:600;line-height:1;text-decoration:none;transition:color .22s,border-color .22s,transform .22s,background-color .22s;display:inline-flex}.nav-link:hover{color:var(--ink-strong);border-color:var(--line-strong);background:color-mix(in srgb, var(--violet-500) 8%, white 92%);transform:translateY(-1px)}.hero-section{margin-bottom:2.1rem}.hero-panel{isolation:isolate;padding:1.2rem;position:relative;overflow:clip}.hero-panel:before{content:"";opacity:.14;mix-blend-mode:multiply;pointer-events:none;background-image:url(/media/finder-folder.jpg);background-size:cover;border-radius:28px;width:220px;height:220px;position:absolute;top:1.4rem;right:6%}.hero-panel:after{content:"";opacity:.22;pointer-events:none;background-image:url(/media/selection-wire.jpg);background-repeat:no-repeat;background-size:contain;width:230px;height:132px;position:absolute;bottom:-1.5rem;left:-2.5rem}.window-chrome{gap:.45rem;margin-bottom:1rem;display:flex}.window-chrome span{border:1px solid color-mix(in srgb, var(--ink-strong) 20%, transparent);border-radius:50%;width:10px;height:10px}.window-chrome span:first-child{background:#ff5f57}.window-chrome span:nth-child(2){background:#febc2e}.window-chrome span:nth-child(3){background:#28c840}.hero-grid{grid-template-columns:minmax(0,1.18fr) minmax(260px,.82fr);align-items:start;gap:1.35rem;display:grid}.hero-copy{align-content:start;gap:.85rem;display:grid}.eyebrow{color:var(--ink-muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.14em;margin:0;font-size:.78rem}h1{font-family:var(--font-display);letter-spacing:-.03em;color:var(--ink-strong);white-space:pre-line;text-wrap:balance;margin:0;font-size:clamp(2rem,4.2vw,3.75rem);line-height:.94}.hero-subtitle{max-width:58ch;color:color-mix(in srgb, var(--ink-muted) 90%, black 10%);margin:0;font-size:clamp(1rem,1.5vw,1.18rem);line-height:1.52}.hero-education{color:color-mix(in srgb, var(--ink-strong) 80%, var(--violet-500) 20%);margin:0;font-size:.95rem;font-weight:600}.hero-links{flex-wrap:wrap;gap:.46rem;display:flex}.hero-link-chip{border:1px solid var(--line-soft);background:color-mix(in srgb, white 82%, var(--violet-500) 18%);color:var(--ink-strong);border-radius:999px;align-items:center;gap:.44rem;padding:.32rem .56rem;font-size:.8rem;text-decoration:none;display:inline-flex}.hero-link-icon{border:1px solid color-mix(in srgb, var(--ink-strong) 14%, transparent);background:color-mix(in srgb, white 58%, var(--pink-500) 42%);width:1.45rem;height:1.45rem;font-family:var(--font-mono);letter-spacing:.03em;border-radius:999px;justify-content:center;align-items:center;font-size:.66rem;font-weight:700;display:inline-flex}.hero-link-text{font-weight:600}.hero-actions{flex-wrap:wrap;align-items:center;gap:.7rem;margin-top:.4rem;display:flex}.cta-button{border:1px solid var(--line-strong);border-radius:14px;padding:.7rem 1rem;font-size:.93rem;font-weight:700;text-decoration:none;transition:transform .22s,box-shadow .22s,border-color .22s}.cta-button.primary{color:#fff;border-color:color-mix(in srgb, var(--violet-500) 70%, black 30%);background:linear-gradient(116deg, var(--violet-500), var(--pink-500));box-shadow:0 11px 22px color-mix(in srgb, var(--pink-500) 24%, transparent), inset 0 1px 1px #fff9}.cta-button.ghost{color:var(--ink-strong);background:color-mix(in srgb, white 72%, var(--violet-500) 28%)}.cta-button.cv-button{color:var(--ink-strong);border-color:color-mix(in srgb, var(--ink-strong) 24%, transparent);background:#f6f6f8;box-shadow:inset 0 1px #ffffffe6,0 2px 5px #18142614}.cta-button:hover{box-shadow:var(--float-shadow);transform:translateY(-2px)}.hero-card{border:1px solid var(--line-strong);background:linear-gradient(160deg, color-mix(in srgb, white 72%, var(--violet-500) 28%), color-mix(in srgb, white 78%, var(--pink-500) 22%));width:100%;max-width:390px;box-shadow:var(--float-shadow);border-radius:22px;place-self:start end;padding:.72rem .72rem .78rem}.portrait-shell{border:1px solid color-mix(in srgb, var(--ink-muted) 28%, transparent);border-radius:18px;position:relative;overflow:hidden;box-shadow:inset 0 0 0 1px #fff9}.portrait-shell img{aspect-ratio:5/6;object-fit:cover;object-position:center top;width:100%;display:block}.profile-name{font-family:var(--font-display);color:var(--ink-strong);margin:.5rem 0 .12rem;font-size:.94rem;line-height:1.14}.profile-meta{color:var(--ink-muted);margin:0;font-size:.83rem}.stats-grid{grid-template-columns:repeat(4,minmax(0,1fr));gap:.68rem;margin-top:1.2rem;display:grid}.stat-card{border:1px solid var(--line-soft);background:color-mix(in srgb, white 66%, var(--violet-500) 34%);border-radius:18px;min-height:100%;padding:.95rem .8rem}.stat-value{font-family:var(--font-display);color:var(--ink-strong);margin:0 0 .3rem;font-size:1.25rem;line-height:1}.stat-label{color:var(--ink-muted);margin:0;font-size:.9rem}.section{margin-top:1.9rem}.section-head{margin-bottom:1rem}.section-head h2{font-family:var(--font-display);color:var(--ink-strong);margin:0 0 .38rem;font-size:clamp(1.25rem,2.2vw,2rem);line-height:1}.section-head p{color:var(--ink-muted);max-width:70ch;margin:0;line-height:1.45}.filter-row{justify-content:space-between;align-items:flex-start;gap:1rem;margin-bottom:1rem;display:flex}.tag-list{flex-wrap:wrap;gap:.46rem;display:flex}.tag-button{border:1px solid var(--line-soft);background:color-mix(in srgb, white 80%, var(--pink-500) 20%);color:var(--ink-muted);cursor:pointer;border-radius:999px;padding:.42rem .72rem;font-size:.84rem;font-weight:600;transition:transform .21s,color .21s,border-color .21s,box-shadow .21s}.tag-button:hover{color:var(--ink-strong);border-color:var(--line-strong);transform:translateY(-1px)}.tag-button.is-active{border-color:color-mix(in srgb, var(--violet-500) 60%, black 40%);color:#fff;background:linear-gradient(112deg, color-mix(in srgb, var(--violet-500) 92%, black 8%), color-mix(in srgb, var(--pink-500) 92%, black 8%));box-shadow:0 8px 18px color-mix(in srgb, var(--violet-500) 26%, transparent)}.pending-note{color:var(--ink-muted);opacity:0;margin:.2rem 0 0;font-size:.8rem;transition:opacity .18s,transform .18s;transform:translateY(4px)}.pending-note.is-visible{opacity:1;transform:translateY(0)}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.95rem;display:grid}.project-card{border:1px solid var(--line-soft);background:linear-gradient(176deg, color-mix(in srgb, white 66%, var(--pink-500) 34%), color-mix(in srgb, white 68%, var(--violet-500) 32%));border-radius:22px;padding:1rem;transition:transform .22s,box-shadow .22s,border-color .22s;position:relative;overflow:hidden}.project-card:hover{box-shadow:var(--float-shadow);border-color:var(--line-strong);transform:translateY(-5px)}.project-head{justify-content:flex-start;align-items:flex-start;gap:.8rem;margin-bottom:.62rem;display:flex}.project-head h3{color:var(--ink-strong);margin:0;font-size:1.09rem;font-weight:700;line-height:1.18}.project-summary{color:var(--ink-muted);margin:0 0 .8rem;font-size:.93rem;line-height:1.4}.list-label{font-family:var(--font-mono);color:color-mix(in srgb, var(--ink-muted) 80%, black 20%);text-transform:uppercase;letter-spacing:.08em;margin:0;font-size:.73rem}.chip-list{flex-wrap:wrap;gap:.38rem;margin:.36rem 0 .8rem;padding:0;list-style:none;display:flex}.chip-list li{border:1px solid color-mix(in srgb, var(--ink-strong) 12%, transparent);background:color-mix(in srgb, white 72%, var(--violet-500) 28%);color:color-mix(in srgb, var(--ink-strong) 84%, white 16%);border-radius:999px;padding:.3rem .58rem;font-size:.74rem;font-weight:600}.highlights-list{gap:.43rem;margin:.45rem 0 .95rem;padding:0;list-style:none;display:grid}.highlights-list li{color:color-mix(in srgb, var(--ink-muted) 86%, black 14%);margin:0;padding-left:.72rem;font-size:.88rem;line-height:1.4;position:relative}.highlights-list li:before{content:"";background:linear-gradient(150deg, var(--violet-500), var(--pink-500));border-radius:50%;width:.36rem;height:.36rem;position:absolute;top:.51rem;left:0}.project-foot{border-top:1px solid color-mix(in srgb, var(--line-soft) 80%, white 20%);justify-content:flex-end;gap:.8rem;padding-top:.68rem;display:flex}.project-foot a{border:1px solid var(--line-strong);background:color-mix(in srgb, white 64%, var(--pink-500) 36%);color:var(--ink-strong);border-radius:10px;padding:.42rem .62rem;font-size:.83rem;font-weight:700;text-decoration:none}.project-foot a:hover{box-shadow:var(--soft-shadow)}.about-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:.9rem;display:grid}.about-card{padding:1rem}.about-kicker{font-family:var(--font-mono);letter-spacing:.08em;text-transform:uppercase;color:var(--ink-muted);margin:0 0 .32rem;font-size:.74rem}.about-card h3{font-family:var(--font-display);color:var(--ink-strong);margin:0 0 .62rem;font-size:1.18rem;line-height:1.12}.about-card p{color:color-mix(in srgb, var(--ink-muted) 90%, black 10%);margin:0;line-height:1.52}.publication-list{gap:.75rem;display:grid}.publication-card{padding:.92rem .94rem}.publication-year{font-family:var(--font-mono);color:color-mix(in srgb, var(--pink-500) 66%, black 34%);margin:0 0 .35rem;font-size:.78rem}.publication-card h3{color:var(--ink-strong);margin:0 0 .45rem;font-size:1.03rem;line-height:1.3}.publication-authors{color:var(--ink-muted);margin:0 0 .15rem;font-size:.9rem;font-weight:600}.publication-venue{color:color-mix(in srgb, var(--ink-muted) 76%, black 24%);margin:0 0 .55rem;font-size:.84rem}.publication-abstract{color:color-mix(in srgb, var(--ink-muted) 86%, black 14%);margin:0;line-height:1.48}.publication-links{flex-wrap:wrap;gap:.45rem;margin-top:.72rem;display:flex}.publication-links a{border:1px solid var(--line-strong);background:color-mix(in srgb, white 74%, var(--violet-500) 26%);color:var(--ink-strong);border-radius:10px;padding:.38rem .58rem;font-size:.8rem;font-weight:700;text-decoration:none}.page-footer{border-top:1px solid var(--line-soft);justify-content:space-between;align-items:center;gap:1rem;margin-top:2rem;padding:1rem .14rem 0;display:flex}.page-footer p{color:var(--ink-muted);margin:0;font-size:.86rem}.page-footer a{color:var(--ink-strong);font-size:.86rem;font-weight:700;text-decoration:none}a:focus-visible,button:focus-visible{outline:2px solid var(--violet-500);outline-offset:2px}.reveal{opacity:0;transition:opacity .46s,transform .46s;transition-delay:var(--reveal-delay,0s);transform:translateY(18px)scale(.985)}.reveal.is-visible{opacity:1;transform:none}.hero-copy .stagger,.hero-card.stagger{opacity:0;animation:.72s cubic-bezier(.18,.82,.23,1) forwards hero-rise;animation-delay:var(--stagger-delay,0s);transform:translateY(12px)}.hero-copy .stagger:first-of-type{--stagger-delay:80ms}.hero-copy .stagger:nth-of-type(2){--stagger-delay:.16s}.hero-copy .stagger:nth-of-type(3){--stagger-delay:.24s}.hero-copy .stagger:nth-of-type(4){--stagger-delay:.32s}.hero-card.stagger{--stagger-delay:.38s}@keyframes hero-rise{to{opacity:1;transform:none}}@media (width<=1080px){.topbar{position:relative;top:0}.hero-grid{grid-template-columns:1fr}.hero-card{max-width:350px}.stats-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.project-grid,.about-grid{grid-template-columns:1fr}}@media (width<=760px){.page-shell{width:min(100%,100% - 1.2rem);margin-top:.65rem}.topbar{gap:.65rem;padding:.74rem;display:grid}.brand-chip{justify-self:start}.nav-list{padding-bottom:.22rem;overflow-x:auto}.hero-panel{padding:.92rem}.hero-panel:before,.hero-panel:after{opacity:.1}.hero-subtitle{font-size:.98rem}.stats-grid{grid-template-columns:1fr}.filter-row{gap:.58rem;display:grid}.page-footer{justify-items:start;display:grid}}@media (prefers-reduced-motion:reduce){.reveal,.hero-copy .stagger,.hero-card.stagger{opacity:1;transition:none;animation:none;transform:none}.cta-button,.project-card,.tag-button,.nav-link{transition:none}}
