@import "https://fonts.googleapis.com/css2?family=Plus+Jakarta+Sans:ital,wght@0,400;0,500;0,600;0,700;1,400&display=swap";:root{--bg-deep:#06060a;--surface:#101018;--fg:#f4f2fb;--fg-dim:#c4bdd6;--fg-muted:#9892ac;--fg-faint:#5c586f;--accent:#a78bfa;--accent-2:#38bdf8;--accent-soft:#c4b5fd;--border-subtle:#ffffff0f;--border-strong:#ffffff1f;color:var(--fg-muted);background:var(--bg-deep);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;font-family:Plus Jakarta Sans,system-ui,-apple-system,sans-serif;font-size:16px;line-height:1.5}*,:before,:after{box-sizing:border-box}body{min-height:100dvh;margin:0;overflow-x:hidden}#root{min-height:100dvh}.page{min-height:100dvh;color:var(--fg);isolation:isolate;flex-direction:column;display:flex;position:relative}.page__bg{z-index:-2;background:radial-gradient(120% 80% at 80% -10%, #7c5cff2e, transparent), radial-gradient(90% 60% at -10% 90%, #38bdf814, transparent), var(--bg-deep);position:fixed;inset:0}.hero-scene-root{z-index:-1;pointer-events:none;position:fixed;inset:0}.hero-scene-root canvas{width:100%;height:100%;display:block}.site-header{border-bottom:1px solid var(--border-subtle);background:color-mix(in srgb, var(--bg-deep) 72%, transparent);-webkit-backdrop-filter:blur(14px);justify-content:space-between;align-items:center;gap:1rem;padding:clamp(1rem,3vw,1.35rem) clamp(1.25rem,4vw,2.5rem);display:flex}.wordmark{letter-spacing:-.02em;color:var(--fg);white-space:nowrap;font-size:clamp(.95rem,2vw,1.05rem);font-weight:600;text-decoration:none}.wordmark:hover{color:var(--accent)}.wordmark--active{color:var(--accent-soft)}.site-nav{color:var(--fg-muted);flex-wrap:wrap;gap:clamp(.35rem,2vw,1.5rem);font-size:.9rem;font-weight:500;display:flex}.site-nav__link{color:inherit;border-bottom:1px solid #0000;padding:.15rem 0;text-decoration:none;transition:color .2s,border-color .2s}.site-nav__link:hover{color:var(--fg)}.site-nav__link--active{color:var(--accent);border-bottom-color:color-mix(in srgb, var(--accent) 50%, transparent)}.site-main{box-sizing:border-box;flex-direction:column;flex:1;width:100%;padding:0 clamp(1.25rem,4vw,2.5rem) clamp(3rem,8vw,5rem);display:flex}.home{flex:1;align-items:center;padding:clamp(2rem,6vw,4rem) 0;display:flex}.work{flex:1;width:100%;max-width:72rem;margin-inline:auto;padding-top:clamp(1rem,3vw,1.75rem)}.work__intro{max-width:40rem;margin-bottom:clamp(2rem,4vw,2.75rem)}.work__title{letter-spacing:-.03em;color:var(--fg);margin:0 0 .75rem;font-size:clamp(1.85rem,3vw + 1rem,2.5rem);font-weight:600}.work__lede{color:var(--fg-muted);margin:0;font-size:clamp(1rem,.8vw + .9rem,1.1rem);line-height:1.65}.work__grid{grid-template-columns:repeat(auto-fill,minmax(min(100%,17.5rem),1fr));gap:clamp(1rem,2vw,1.35rem);margin:0;padding:0;list-style:none;display:grid}.work__grid-item{display:flex}.project-card,a.project-card{border:1px solid var(--border-strong);background:color-mix(in srgb, var(--surface) 72%, transparent);width:100%;height:100%;color:inherit;border-radius:1rem;flex-direction:column;text-decoration:none;transition:border-color .2s,transform .2s,box-shadow .2s;display:flex;overflow:hidden}a.project-card--link:hover{border-color:color-mix(in srgb, var(--accent) 42%, var(--border-strong));transform:translateY(-3px);box-shadow:0 22px 48px #00000059}a.project-card--link:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.project-card__media{aspect-ratio:16/10;background:linear-gradient(145deg, #7c5cff59, transparent 55%), linear-gradient(210deg, #38bdf833, transparent 50%), color-mix(in srgb, var(--surface) 88%, var(--bg-deep));border-bottom:1px solid var(--border-subtle);place-items:center;display:grid}.project-card__glyph{letter-spacing:.08em;color:color-mix(in srgb, var(--fg) 35%, transparent);font-size:clamp(1.5rem,3vw,1.85rem);font-weight:700}.project-card__media--image{background:var(--surface);padding:0}.project-card__thumb{object-fit:cover;object-position:top center;width:100%;height:100%;display:block}.project-card__body{flex-direction:column;flex:1;gap:.65rem;padding:1.1rem 1.15rem 1.2rem;display:flex}.project-card__meta{letter-spacing:.06em;text-transform:uppercase;color:var(--fg-faint);flex-wrap:wrap;align-items:center;gap:.5rem .65rem;margin:0;font-size:.75rem;font-weight:600;display:flex}.project-card__badge{letter-spacing:.04em;color:var(--fg-muted);border:1px solid var(--border-strong);background:color-mix(in srgb, var(--bg-deep) 40%, transparent);border-radius:999px;padding:.2rem .5rem;font-size:.68rem}.project-card__badge--live{color:var(--accent-2);border-color:color-mix(in srgb, var(--accent-2) 35%, var(--border-strong))}.project-card__title{letter-spacing:-.02em;color:var(--fg);margin:0;font-size:1.08rem;font-weight:600}.project-card__summary{color:var(--fg-muted);flex:1;margin:0;font-size:.9rem;line-height:1.55}.project-card__tags{flex-wrap:wrap;gap:.4rem;margin:.15rem 0 0;padding:0;list-style:none;display:flex}.project-card__tags li{color:var(--fg-dim);border:1px solid var(--border-subtle);background:color-mix(in srgb, var(--bg-deep) 35%, transparent);border-radius:999px;padding:.25rem .55rem;font-size:.72rem;font-weight:500}.project-card__cta{color:var(--accent-soft);border-top:1px solid var(--border-subtle);background:color-mix(in srgb, var(--bg-deep) 25%, transparent);justify-content:space-between;align-items:center;margin-top:auto;padding:.85rem 1.15rem;font-size:.82rem;font-weight:600;display:flex}.project-card__cta-arrow{transition:transform .2s}a.project-card--link:hover .project-card__cta-arrow{transform:translate(4px)}.hero{text-align:left;max-width:40rem}.eyebrow{letter-spacing:.14em;text-transform:uppercase;color:var(--accent-soft);margin:0 0 1rem;font-size:.78rem;font-weight:600}.hero__title{letter-spacing:-.035em;color:var(--fg);margin:0 0 1.25rem;font-size:clamp(2.1rem,5vw + .6rem,3.35rem);font-weight:600;line-height:1.08}.hero__title-line{color:var(--fg-dim);font-weight:500;display:block}.hero__lede{max-width:34ch;color:var(--fg-muted);margin:0 0 2rem;font-size:clamp(1rem,1.1vw + .85rem,1.125rem);line-height:1.65}.hero__actions{flex-wrap:wrap;gap:.75rem;display:flex}.btn{border:1px solid #0000;border-radius:999px;justify-content:center;align-items:center;padding:.65rem 1.25rem;font-size:.92rem;font-weight:600;text-decoration:none;transition:background .2s,color .2s,border-color .2s,transform .2s;display:inline-flex}.btn--primary{color:var(--bg-deep);background:linear-gradient(135deg, var(--accent), var(--accent-2));box-shadow:0 12px 40px #7c5cff40}.btn--primary:hover{transform:translateY(-1px);box-shadow:0 16px 48px #7c5cff52}.btn--primary:focus-visible{outline:2px solid var(--accent);outline-offset:3px}.btn--ghost{color:var(--fg);border-color:var(--border-strong);background:color-mix(in srgb, var(--surface) 55%, transparent)}.btn--ghost:hover{border-color:var(--accent-soft);color:var(--accent)}.btn--ghost:focus-visible{outline:2px solid var(--accent-soft);outline-offset:3px}.site-footer{border-top:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;gap:.75rem;padding:1rem clamp(1.25rem,4vw,2.5rem) 1.35rem;font-size:.8rem;display:flex}.site-footer__muted{color:var(--fg-faint)}.about{flex:1;width:100%;max-width:48rem;margin-inline:auto;padding-top:clamp(1rem,3vw,1.75rem)}.about__intro{margin-bottom:clamp(2rem,4vw,2.75rem)}.about__title{letter-spacing:-.03em;color:var(--fg);margin:0 0 .75rem;font-size:clamp(1.85rem,3vw + 1rem,2.45rem);font-weight:600}.about__lede{max-width:42rem;color:var(--fg-muted);margin:0 0 1.5rem;font-size:clamp(1rem,.8vw + .9rem,1.1rem);line-height:1.65}.about__actions{flex-wrap:wrap;gap:.65rem;margin-bottom:1.75rem;display:flex}.about__contact{border:1px solid var(--border-strong);background:color-mix(in srgb, var(--surface) 65%, transparent);border-radius:.85rem;grid-template-columns:repeat(auto-fit,minmax(11rem,1fr));gap:1rem 1.5rem;margin:0;padding:1.1rem 1.15rem;display:grid}.about__contact dt{letter-spacing:.1em;text-transform:uppercase;color:var(--fg-faint);margin:0 0 .2rem;font-size:.68rem;font-weight:600}.about__contact dd{color:var(--fg-dim);margin:0;font-size:.92rem}.about__contact a{color:var(--accent-soft);text-decoration:none}.about__contact a:hover{text-decoration:underline}.about__section{margin-bottom:clamp(2rem,4vw,2.75rem)}.about__section-title{letter-spacing:-.02em;color:var(--fg);margin:0 0 1rem;font-size:1.05rem;font-weight:600}.about__skill-groups{gap:1.25rem;display:grid}@media (width>=640px){.about__skill-groups{grid-template-columns:repeat(2,minmax(0,1fr))}}.about__skill-label{letter-spacing:.08em;text-transform:uppercase;color:var(--fg-faint);margin:0 0 .5rem;font-size:.78rem;font-weight:600}.about__skill-tags{flex-wrap:wrap;gap:.4rem;margin:0;padding:0;list-style:none;display:flex}.about__skill-tags li{color:var(--fg-dim);border:1px solid var(--border-subtle);background:color-mix(in srgb, var(--bg-deep) 35%, transparent);border-radius:999px;padding:.28rem .55rem;font-size:.75rem;font-weight:500}.about__timeline{flex-direction:column;gap:1.25rem;margin:0;padding:0;list-style:none;display:flex}.about__job{border:1px solid var(--border-strong);background:color-mix(in srgb, var(--surface) 72%, transparent);border-radius:1rem;padding:1.15rem 1.2rem 1.2rem}.about__job-head{flex-wrap:wrap;justify-content:space-between;gap:.5rem 1rem;margin-bottom:.75rem;display:flex}.about__job-title{color:var(--fg);margin:0 0 .2rem;font-size:1.05rem;font-weight:600}.about__job-title a{color:inherit;border-bottom:1px solid color-mix(in srgb, var(--accent) 45%, transparent);text-decoration:none}.about__job-title a:hover{color:var(--accent-soft)}.about__job-role{color:var(--fg-muted);margin:0;font-size:.88rem}.about__job-range{color:var(--fg-faint);white-space:nowrap;margin:0;font-size:.82rem;font-weight:600}.about__job-bullets{color:var(--fg-muted);margin:0 0 .85rem;padding-left:1.15rem;font-size:.9rem;line-height:1.55}.about__job-bullets li{margin-bottom:.35rem}.about__job-stack{flex-wrap:wrap;gap:.35rem;margin:0;padding:0;list-style:none;display:flex}.about__job-stack li{color:var(--accent-2);border:1px solid color-mix(in srgb, var(--accent-2) 28%, var(--border-strong));background:color-mix(in srgb, var(--bg-deep) 40%, transparent);border-radius:999px;padding:.22rem .5rem;font-size:.72rem;font-weight:500}.about__education{flex-direction:column;gap:1rem;margin:0;padding:0;list-style:none;display:flex}.about__education-row{border-bottom:1px solid var(--border-subtle);flex-wrap:wrap;justify-content:space-between;gap:.5rem 1.25rem;padding-bottom:1rem;display:flex}.about__education-row:last-child{border-bottom:none;padding-bottom:0}.about__education-school{color:var(--fg);margin:0 0 .2rem;font-weight:600}.about__education-cred{color:var(--fg-muted);margin:0;font-size:.9rem}.about__education-meta{color:var(--fg-faint);text-align:right;margin:0;font-size:.82rem}.about__education-dot{margin:0 .35rem}@media (width<=520px){.about__education-meta{text-align:left;width:100%}.site-header{flex-direction:column;align-items:flex-start}.site-nav{justify-content:flex-start;width:100%}}.project-detail{flex:1;width:100%;max-width:52rem;margin-inline:auto;padding-top:clamp(1rem,3vw,1.75rem)}.project-detail__nav{margin-bottom:1.25rem}.project-detail__back{color:var(--accent-soft);font-size:.9rem;font-weight:500;text-decoration:none;transition:color .2s}.project-detail__back:hover{color:var(--accent)}.project-detail__hero{gap:clamp(1.25rem,3vw,1.75rem);margin-bottom:clamp(2.25rem,4vw,3rem);display:grid}.project-detail__hero-visual{border:1px solid var(--border-strong);background:color-mix(in srgb, var(--surface) 88%, var(--bg-deep));border-radius:1rem;overflow:hidden;box-shadow:0 18px 42px #00000059}.project-detail__hero-img{vertical-align:middle;width:100%;height:auto;display:block}.project-detail__hero-panel{border:1px solid var(--border-strong);background:color-mix(in srgb, var(--surface) 72%, transparent);border-radius:1rem;padding:clamp(1.1rem,2.5vw,1.35rem) clamp(1.15rem,2.5vw,1.5rem)}.project-detail__title{letter-spacing:-.03em;color:var(--fg);margin:.35rem 0 .5rem;font-size:clamp(1.65rem,2.5vw + 1rem,2.15rem);font-weight:600}.project-detail__meta{color:var(--fg-muted);margin:0 0 1rem;font-size:.88rem}.project-detail__meta-sep{color:var(--fg-faint);margin:0 .4rem}.project-detail__summary{color:var(--fg-muted);margin:0 0 1.25rem;font-size:.98rem;line-height:1.6}.project-detail__actions{flex-wrap:wrap;gap:.65rem;display:flex}.project-detail__section-title{letter-spacing:-.02em;color:var(--fg);margin:0 0 .85rem;font-size:1.05rem;font-weight:600}.project-detail__employer{border:1px solid var(--border-strong);background:color-mix(in srgb, var(--surface) 55%, transparent);border-radius:1rem;margin-bottom:clamp(2.25rem,4vw,3rem);padding:clamp(1.15rem,2.5vw,1.45rem) clamp(1.15rem,2.5vw,1.5rem)}.project-detail__employer-lede{color:var(--fg-muted);margin:0 0 1rem;font-size:.95rem;line-height:1.65}.project-detail__keywords{flex-wrap:wrap;gap:.45rem;margin:0;padding:0;list-style:none;display:flex}.project-detail__keywords li{color:var(--fg-dim);border:1px solid var(--border-subtle);background:color-mix(in srgb, var(--bg-deep) 35%, transparent);border-radius:999px;padding:.28rem .58rem;font-size:.72rem;font-weight:500}.project-detail__readme{margin-bottom:clamp(2rem,5vw,3.5rem)}.markdown-body{border:1px solid var(--border-strong);background:color-mix(in srgb, var(--surface) 78%, transparent);color:var(--fg-muted);border-radius:1rem;padding:clamp(1.1rem,2.5vw,1.35rem);font-size:.92rem;line-height:1.65;overflow-x:auto}.markdown-body>:first-child{margin-top:0}.markdown-body>:last-child{margin-bottom:0}.markdown-body h2,.markdown-body h3,.markdown-body h4{letter-spacing:-.02em;color:var(--fg);margin:1.65rem 0 .65rem;font-weight:600}.markdown-body h2{border-bottom:1px solid var(--border-subtle);padding-bottom:.35rem;font-size:1.18rem}.markdown-body h3{font-size:1.02rem}.markdown-body h4{font-size:.95rem}.markdown-body p{margin:.75rem 0}.markdown-body a{color:var(--accent-soft);text-underline-offset:.18em;text-decoration:underline}.markdown-body a:hover{color:var(--accent)}.markdown-body ul,.markdown-body ol{margin:.75rem 0;padding-left:1.35rem}.markdown-body li{margin:.35rem 0}.markdown-body blockquote{border-left:3px solid color-mix(in srgb, var(--accent) 55%, transparent);background:color-mix(in srgb, var(--bg-deep) 40%, transparent);color:var(--fg-dim);border-radius:0 .5rem .5rem 0;margin:1rem 0;padding:.65rem 1rem}.markdown-body hr{border:none;border-top:1px solid var(--border-subtle);margin:1.75rem 0}.markdown-body code{border:1px solid var(--border-subtle);background:color-mix(in srgb, var(--bg-deep) 55%, transparent);color:var(--accent-2);border-radius:.35rem;padding:.12rem .38rem;font-family:ui-monospace,Cascadia Code,Segoe UI Mono,monospace;font-size:.84em}.markdown-body pre{border:1px solid var(--border-subtle);background:color-mix(in srgb, var(--bg-deep) 65%, transparent);border-radius:.65rem;margin:1rem 0;padding:1rem 1.1rem;line-height:1.5;overflow-x:auto}.markdown-body pre code{color:var(--fg-dim);background:0 0;border:none;padding:0;font-size:.8rem}.markdown-body table{border-collapse:collapse;width:100%;min-width:36rem;margin:1rem 0;font-size:.82rem}.markdown-body tr{border-bottom:1px solid var(--border-subtle)}.markdown-body th,.markdown-body td{text-align:left;vertical-align:top;border:1px solid var(--border-subtle);padding:.55rem .65rem}.markdown-body th{color:var(--fg);background:color-mix(in srgb, var(--bg-deep) 45%, transparent);font-weight:600}@media (width>=720px){.project-detail__hero{grid-template-columns:minmax(0,1.15fr) minmax(0,1fr);align-items:stretch}.project-detail__hero-visual{min-height:100%}.project-detail__hero-img{object-fit:cover;object-position:top center;height:100%}}
