@import "https://fonts.googleapis.com/css2?family=JetBrains+Mono:wght@400;500&family=Playfair+Display:wght@600;700;800&family=Source+Serif+4:wght@400;500;600&family=Inter:wght@400;500;600;700&display=swap";:root{--color-page:var(--color-bg);--color-paper:color-mix(in srgb, var(--color-surface) 82%, transparent);--color-paper-solid:var(--color-surface);--color-ink:var(--color-text);--color-muted:color-mix(in srgb, var(--color-text) 72%, var(--color-bg));--color-accent:var(--color-brand-primary);--color-accent-soft:var(--color-accent-muted);--color-border:var(--color-border-subtle-ui);--color-border-strong:var(--color-border-strong-ui);--shadow-card:var(--color-shadow);--color-card-tint:color-mix(in srgb, var(--color-surface) 78%, transparent);--color-card-tint-strong:color-mix(in srgb, var(--color-surface) 92%, var(--color-bg));--color-tag-bg:color-mix(in srgb, var(--color-surface) 88%, var(--color-bg));--color-tag-text:var(--color-ink);--font-display:"Playfair Display", "Times New Roman", serif;--font-body:"Source Serif 4", Georgia, serif;--font-sans:"Inter", "Segoe UI", sans-serif;--font-mono:"JetBrains Mono", Consolas, monospace;--radius-panel:1.25rem;color:var(--color-ink);font-family:var(--font-body);font-synthesis:none;text-rendering:optimizelegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale;scroll-behavior:smooth;font-size:17px;font-weight:400;line-height:1.6}*{box-sizing:border-box}html{scroll-padding-top:5rem}body{background:0 0;min-width:320px;min-height:100vh;margin:0}body:before{content:"";pointer-events:none;background-image:linear-gradient(color-mix(in srgb, var(--color-ink) 6%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--color-ink) 6%, transparent) 1px, transparent 1px);background-size:36px 36px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000000a6,#0000 85%);mask-image:linear-gradient(#000000a6,#0000 85%)}a{color:inherit;text-decoration:none}button,a{cursor:pointer}img{max-width:100%;display:block}#root{min-height:100vh}h1,h2,h3,h4{color:var(--color-ink);margin:0;font-weight:700;line-height:.98}h1,h2{font-family:var(--font-display);letter-spacing:-.05em}h1{max-width:11ch;font-size:clamp(3.1rem,8vw,5.8rem)}h2{font-size:clamp(2rem,4.8vw,3.8rem)}p{margin:0}code{font-family:var(--font-mono)}:focus-visible{outline:3px solid color-mix(in srgb, var(--color-accent) 42%, transparent);outline-offset:4px}::selection{background:color-mix(in srgb, var(--color-accent) 24%, transparent)}@media (width<=640px){:root{font-size:16px}}.site-shell{background:radial-gradient(circle at 12% 10%, color-mix(in srgb, var(--color-brand-primary) 14%, transparent), transparent 34%), radial-gradient(circle at 84% 11%, color-mix(in srgb, var(--color-brand-secondary) 10%, transparent), transparent 34%), radial-gradient(circle at 58% 88%, color-mix(in srgb, var(--color-brand-accent) 9%, transparent), transparent 45%), linear-gradient(180deg, color-mix(in srgb, var(--color-surface) 84%, var(--color-bg)) 0%, var(--color-bg) 100%);min-height:100vh;position:relative}.site-shell:before{content:"";pointer-events:none;z-index:0;background-image:linear-gradient(color-mix(in srgb, var(--color-ink) 6%, transparent) 1px, transparent 1px), linear-gradient(90deg, color-mix(in srgb, var(--color-ink) 6%, transparent) 1px, transparent 1px);background-size:36px 36px;position:fixed;inset:0;-webkit-mask-image:linear-gradient(#000000a6,#0000 85%);mask-image:linear-gradient(#000000a6,#0000 85%)}.site-shell>*{z-index:1;position:relative}.skip-link{background:var(--color-paper);color:var(--color-ink);border:1px solid var(--color-border-strong);z-index:20;border-radius:999px;padding:.65rem 1rem;transition:transform .18s;position:absolute;top:1rem;left:1rem;transform:translateY(-220%)}.skip-link:focus-visible{transform:translateY(0)}.site-nav{z-index:10;background:color-mix(in srgb, var(--color-paper) 92%, var(--color-surface) 8%);-webkit-backdrop-filter:blur(14px);backdrop-filter:blur(14px);border-bottom:1px solid var(--color-border);justify-content:space-between;align-items:center;gap:1.5rem;min-height:4.7rem;padding:1.15rem clamp(4.8rem,8vw,6.5rem) 1.15rem clamp(1rem,2vw,2rem);display:flex;position:sticky;top:0}.site-brand{color:var(--color-ink);font-family:var(--font-display);letter-spacing:-.04em;font-size:1.25rem}.nav-links{flex-wrap:wrap;justify-content:flex-end;gap:.95rem;display:flex}.nav-links a{color:var(--color-muted);font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.18em;font-size:.76rem;transition:color .18s,opacity .18s}.nav-links a:hover,.nav-links a:focus-visible,.hero-links a:hover,.hero-links a:focus-visible,.site-footer a:hover,.site-footer a:focus-visible{color:var(--color-ink)}.main-content{gap:.5rem;display:grid}.section{opacity:0;transition:opacity .7s,transform .7s;transform:translateY(28px)}.section.is-visible{opacity:1;transform:none}.section{padding:clamp(3.2rem,7vw,6.4rem) clamp(1rem,4vw,3rem)}.section-inner{width:min(100%,72rem);margin:0 auto}.hero{padding-top:clamp(3.8rem,8vw,6.2rem)}.hero-inner{grid-template-columns:minmax(0,1.2fr) minmax(14rem,.7fr);align-items:start;gap:1.8rem;display:grid}.hero-copy{gap:1rem;display:grid}.hero-role{color:var(--color-muted);font-family:var(--font-sans);font-size:1rem;font-weight:600}.hero-summary{max-width:40rem;color:var(--color-muted);font-size:clamp(1.08rem,1.9vw,1.32rem);line-height:1.72}.hero-links{flex-wrap:wrap;gap:.8rem;margin-top:.25rem;display:flex}.hero-links a{border:1px solid var(--color-border);background:color-mix(in srgb, var(--color-paper) 94%, transparent);color:var(--color-ink);font-family:var(--font-sans);border-radius:999px;padding:.52rem .78rem;font-size:.95rem;font-weight:600}.hero-photo{place-self:stretch end;align-items:flex-start;margin:0;display:flex;position:relative}.hero-photo:before{content:"";z-index:0;background:radial-gradient(circle at 42% 30%, color-mix(in srgb, var(--color-brand-primary) 32%, transparent), transparent 58%), radial-gradient(circle at 66% 72%, color-mix(in srgb, var(--color-brand-accent) 26%, transparent), transparent 66%);filter:blur(18px);opacity:.7;pointer-events:none;border-radius:48%;position:absolute;inset:10% 12% 8%}.hero-photo img{z-index:1;object-fit:contain;width:auto;max-width:clamp(230px,32vw,440px);height:min(100%,34rem);max-height:100%;filter:drop-shadow(0 20px 32px color-mix(in srgb, var(--color-ink) 20%, transparent)) drop-shadow(0 0 24px color-mix(in srgb, var(--color-brand-primary) 16%, transparent));position:relative}.section-header{gap:.85rem;margin-bottom:clamp(1.7rem,3vw,2.5rem);display:grid}.section-header p{max-width:44rem;color:var(--color-muted);font-size:1.05rem}.about-grid,.highlights-grid,.work-grid,.technologies-layout,.resume-panel,.contact-grid{gap:1rem;display:grid}.panel,.work-card,.highlight-card,.technology-panel,.resume-panel,.contact-grid{background:linear-gradient(180deg, var(--color-card-tint), var(--color-card-tint-strong)), var(--color-paper);border:1px solid var(--color-border);border-radius:var(--radius-panel);box-shadow:var(--shadow-card)}.panel,.work-card,.highlight-card,.technology-panel,.contact-grid{padding:1.15rem}.panel h3,.work-card h3,.highlight-card h3,.technology-panel h3,.resume-panel h3,.contact-grid h3{font-family:var(--font-display);letter-spacing:-.04em;margin:0;font-size:1.42rem;line-height:1.12}.about-profile,.about-focus,.panel p,.work-card p,.highlight-card p,.contact-grid p,.technology-group h4,.section-header p,.impact-list,.plain-list{color:var(--color-muted)}.about-grid{margin-bottom:1rem}.impact-list,.plain-list{gap:.62rem;margin:.6rem 0 0;padding-left:1.15rem;display:grid}.panel .tag-list{margin-top:.82rem}.tag-list,.technology-chip-list,.work-links{flex-wrap:wrap;gap:.55rem;margin:0;padding:0;list-style:none;display:flex}.tag-list li,.technology-chip-list li{border:1px solid var(--color-border);background:var(--color-tag-bg);color:var(--color-tag-text);font-family:var(--font-sans);border-radius:999px;padding:.42rem .7rem;font-size:.9rem}.technology-groups{gap:.9rem;margin-top:.82rem;display:grid}.technology-group{gap:.5rem;display:grid}.technology-group h4{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.18em;margin:.58rem 0 0;font-size:.76rem}.showcase-grid{width:min(100%,58rem);margin-inline:auto}.work-card{gap:.9rem;min-height:100%;display:grid}.work-stack,.highlight-scope,.resume-updated{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.18em;color:var(--color-muted);font-size:.76rem}.highlight-scope{margin-top:.48rem}.resume-updated{margin-top:.52rem}.work-links{margin-top:.1rem}.work-links a,.resume-cta,.contact-links a{border:1px solid var(--color-border);background:color-mix(in srgb, var(--color-surface) 86%, transparent);min-height:2.35rem;color:var(--color-ink);font-family:var(--font-sans);border-radius:999px;align-items:center;padding:.5rem .82rem;font-weight:600;transition:background .18s,border-color .18s,color .18s,transform .18s;display:inline-flex}.work-links a:hover,.work-links a:focus-visible,.resume-cta:hover,.resume-cta:focus-visible,.contact-links a:hover,.contact-links a:focus-visible{border-color:color-mix(in srgb, var(--color-accent) 48%, var(--color-border));transform:translateY(-1px)}.resume-panel{padding:1.15rem}.resume-cta{margin-top:.62rem}.contact-links{gap:.7rem;display:grid}.contact-links a{gap:.3rem;padding-left:1.35rem;display:grid}.contact-links span{font-family:var(--font-mono);text-transform:uppercase;letter-spacing:.18em;color:var(--color-muted);font-size:.72rem}.contact-links strong{font-family:var(--font-display);letter-spacing:-.04em;font-size:1.2rem}.site-footer{width:min(100%,72rem);color:var(--color-muted);justify-content:space-between;gap:1rem;margin:0 auto;padding:1.4rem clamp(1rem,4vw,3rem) 2rem;font-size:.95rem;display:flex}.site-footer p{margin:0}@media (width<=1080px){.hero-inner{grid-template-columns:1fr}.hero-photo{place-self:start}.hero-photo img{width:clamp(230px,54vw,360px);height:auto;max-height:24rem}}@media (width>=920px){.highlights-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.technologies-layout{grid-template-columns:repeat(2,minmax(0,1fr));align-items:start}.resume-panel{grid-template-columns:1.1fr 1fr 1fr;align-items:start}}@media (width<=720px){.site-nav,.site-footer{flex-direction:column;align-items:flex-start}.site-nav{padding-right:4.2rem}.nav-links{gap:.7rem 1rem}.hero,.section{padding-inline:1rem}}@media (prefers-reduced-motion:reduce){.skip-link,.nav-links a,.work-links a,.resume-cta,.contact-links a,.section{transition:none}.section{opacity:1;transform:none}html{scroll-behavior:auto}}
