:root{color-scheme:light dark;--bg:#fff;--text:#404040;--heading:#000;--secondary:#737373;--muted:#a3a3a3;--line:#d4d4d4;--hover-bg:#f5f5f5;--project-icon-color:#a3a3a3;--project-icon-size:18px;--font:ui-sans-serif, system-ui, sans-serif, "Apple Color Emoji", "Segoe UI Emoji", "Segoe UI Symbol", "Noto Color Emoji";--body-size:1.125rem;--name-size:1.5rem;--tagline-size:1.25rem;--details-size:1rem;--wrapper-leading:1.25;--text-leading:1.75rem;--name-leading:2rem;--list-leading:1.375;--details-leading:1.5rem;--light-weight:300;--regular-weight:400;--medium-weight:500;--bold-weight:700;--page-width:768px;--page-gutter:1.5rem;--page-space:3rem;--page-space-medium:6rem;--page-space-wide:8rem;--block-gap:2rem;--inner-gap:1rem;--nav-gap:1.5rem;--header-gap:.75rem;--small-gap:.25rem;--row-block:.5rem;--row-inline:.75rem;--details-gap:.125rem;--underline-offset:3px;--link-duration:.15s;--link-easing:cubic-bezier(.4, 0, .2, 1);--line-width:1px;--focus-width:2px}@media (prefers-color-scheme:dark){:root{--bg:#0a0a0a;--text:#d4d4d4;--heading:#fff;--secondary:#8a8a8a;--muted:#6b6b6b;--line:#404040;--hover-bg:#262626}}*{box-sizing:border-box}html{scroll-behavior:smooth}body{padding-block:var(--page-space);background:var(--bg);color:var(--text);font-family:var(--font);margin:0}h1,h2,p,ul{margin:0}ul{padding:0;list-style:none}a{color:inherit}a:focus-visible{outline:var(--focus-width) solid var(--heading);outline-offset:var(--underline-offset)}.link{text-decoration:underline;text-decoration-color:var(--muted);text-underline-offset:var(--underline-offset);transition:color var(--link-duration) var(--link-easing), text-decoration-color var(--link-duration) var(--link-easing)}.link:hover,.link:focus-visible{color:var(--heading);text-decoration-color:var(--heading)}.page{max-width:var(--page-width);padding-inline:var(--page-gutter);line-height:var(--wrapper-leading);margin-inline:auto}.site-header{justify-content:space-between;align-items:flex-start;gap:var(--small-gap) var(--inner-gap);margin-bottom:var(--header-gap);flex-wrap:wrap;display:flex}h1{color:var(--heading);font-size:var(--name-size);line-height:var(--name-leading);font-weight:var(--bold-weight)}h1 a,nav a{text-decoration:none}nav{gap:var(--nav-gap);font-size:var(--details-size);line-height:var(--details-leading);display:flex}nav a{transition:color var(--link-duration) var(--link-easing)}nav a:hover,nav a:focus-visible{color:var(--heading)}.tagline{margin-bottom:var(--block-gap);color:var(--heading);font-size:var(--tagline-size);line-height:var(--text-leading);font-weight:var(--light-weight)}.g{color:var(--muted)}.bio,h2{font-size:var(--body-size);line-height:var(--text-leading);font-weight:var(--regular-weight)}.bio{margin-bottom:var(--block-gap)}h2{margin-bottom:var(--inner-gap)}.projects{gap:var(--inner-gap);font-size:var(--body-size);line-height:var(--list-leading);display:grid}.project-row{row-gap:var(--small-gap);padding:var(--row-block) var(--row-inline);margin-inline:calc(-1 * var(--row-inline));display:grid}a.project-row{transition:background-color var(--link-duration) var(--link-easing);text-decoration:none}a.project-row:hover,a.project-row:focus-visible{background-color:var(--hover-bg)}.project-name{align-self:start;align-items:center;gap:var(--small-gap);color:var(--heading);font-weight:var(--medium-weight);display:flex}.project-icon{width:var(--project-icon-size);height:var(--project-icon-size);color:var(--project-icon-color);flex-shrink:0}.project-description{color:var(--text)}.project-details{margin-top:var(--details-gap);color:var(--secondary);font-size:var(--details-size);line-height:var(--details-leading)}footer{margin-top:var(--block-gap);font-size:var(--body-size)}.contact-links{gap:var(--row-block);display:grid}.contact-links li{align-items:center;gap:var(--inner-gap);display:flex}.contact-links span{color:var(--secondary)}.contact-links hr{border:0;border-top:var(--line-width) dotted var(--line);margin:var(--details-gap) 0 0;flex:1}.contact-links a{overflow-wrap:anywhere;min-width:0}@media (width>=640px){body{padding-block:var(--page-space-medium)}.site-header{margin-bottom:var(--small-gap)}.project-row{grid-template-columns:1fr 2fr}}@media (width>=1024px){body{padding-block:var(--page-space-wide)}}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}
