:root{--bg:#0b0d10;--bg-alt:#12151a;--border:#22262e;--text:#e8eaed;--text-dim:#9aa1ac;--accent:#6ee7b7;--max-width:960px;color-scheme:dark}*{box-sizing:border-box}html{scroll-behavior:smooth}body{background:var(--bg);color:var(--text);margin:0;font-family:-apple-system,BlinkMacSystemFont,Segoe UI,Helvetica,Arial,sans-serif;line-height:1.6}.wrap{max-width:var(--max-width);margin:0 auto;padding:0 1.5rem}.pinned-nav{z-index:10;backdrop-filter:blur(8px);border-bottom:1px solid var(--border);background:#0b0d10d9;transition:transform .2s;position:sticky;top:0;transform:translateY(-100%)}.pinned-nav.is-visible{transform:translateY(0)}.pinned-nav-inner{align-items:center;gap:1.5rem;padding:.7rem 1.5rem;font-size:.9rem;display:flex}.pinned-avatar{object-fit:cover;border:1px solid var(--border);border-radius:50%;flex-shrink:0;width:28px;height:28px;margin-right:.25rem}.pinned-nav-inner a{color:var(--text-dim);white-space:nowrap;flex-shrink:0;text-decoration:none}.pinned-nav-inner a:hover{color:var(--accent)}.pinned-nav-inner a:last-child{color:var(--accent);margin-left:auto}header.hero{border-bottom:1px solid var(--border);padding:5rem 0 3rem}header.hero .avatar{object-fit:cover;border:1px solid var(--border);border-radius:50%;width:96px;height:96px;margin-bottom:1.25rem}header.hero h1{letter-spacing:-.02em;margin:0 0 .25rem;font-size:2.25rem}header.hero .title{color:var(--accent);margin:0 0 .75rem;font-size:1.1rem}header.hero .location{color:var(--text-dim);margin:0 0 1.25rem;font-size:.95rem}header.hero p.bio{color:var(--text-dim)}.links{flex-wrap:wrap;gap:.75rem 1.25rem;margin-top:1.5rem;display:flex}.links a{color:var(--text);border-bottom:1px solid var(--border);padding-bottom:2px;font-size:.95rem;text-decoration:none}.links a:hover{border-color:var(--accent);color:var(--accent)}.links a.resume-link{color:var(--accent);border-color:var(--accent)}section{border-bottom:1px solid var(--border);padding:3rem 0;scroll-margin-top:4.5rem}section:last-of-type{border-bottom:none}section h2{margin:0 0 1.75rem;font-size:1.4rem}.entry{margin-bottom:2rem}.entry:last-child{margin-bottom:0}.entry-head{flex-wrap:wrap;justify-content:space-between;align-items:flex-start;gap:.25rem 1rem;display:flex}.entry-head h3{flex:auto;min-width:0;margin:0;font-size:1.05rem}.entry-head:has(.job-title){display:block}.entry-head:has(.job-title):after{content:"";clear:both;display:table}.entry-head:has(.job-title) .period{float:right;margin-left:1rem}.entry-head h3.job-title{font-style:italic}.entry-head .period{color:var(--text-dim);white-space:nowrap;flex-shrink:0;font-size:.85rem;font-style:italic}.entry .org{color:var(--accent);margin:.15rem 0 .75rem;font-size:.9rem}.entry .org.job-location{font-style:italic}.entry ul{color:var(--text-dim);margin:0;padding-left:1.1rem}.entry ul li{margin-bottom:.4rem;font-size:.95rem}.earlier{color:var(--text-dim);margin-bottom:.9rem;font-size:.9rem}.earlier strong{color:var(--text);font-weight:600}.project{margin-bottom:1.75rem}.project:last-child{margin-bottom:0}.project h3{margin:0 0 .35rem;font-size:1.05rem}.project h3 a{color:var(--text);text-decoration:none}.project h3 a:hover{color:var(--accent)}.project p{color:var(--text-dim);margin:0 0 .6rem;font-size:.95rem}.tags{flex-wrap:wrap;gap:.4rem;display:flex}.tags span{color:var(--text-dim);border:1px solid var(--border);border-radius:4px;padding:.15rem .5rem;font-size:.75rem}.skills-grid{grid-template-columns:repeat(auto-fill,minmax(220px,1fr));gap:1.5rem;display:grid}.skills-grid h3{text-transform:uppercase;letter-spacing:.05em;color:var(--text-dim);margin:0 0 .5rem;font-size:.85rem}.skills-grid p{margin:0;font-size:.95rem}footer{color:var(--text-dim);padding:3rem 0 4rem;font-size:.85rem}@media (width<=640px){header.hero{padding:3rem 0 2rem}header.hero h1{font-size:1.8rem}.pinned-nav-inner{scrollbar-width:none;-webkit-overflow-scrolling:touch;padding-right:.75rem;overflow-x:auto;mask-image:linear-gradient(90deg,#0000,#000 12px calc(100% - 24px),#0000)}.pinned-nav-inner::-webkit-scrollbar{display:none}.pinned-nav-inner a:last-child{margin-left:1.5rem;padding-right:.5rem}.entry-head:has(.job-title) .period{float:none;margin-bottom:.2rem;margin-left:0;display:block}}
