:root{--type-body: 1rem;--type-small: .875rem;--type-section: 1.125rem;--type-heading: 1.5rem;color:#171717;background:#f8f9fa;font-family:SFMono-Regular,Consolas,Liberation Mono,Menlo,monospace;font-size:var(--type-body);line-height:1.6;text-rendering:optimizeLegibility;-webkit-font-smoothing:antialiased;-moz-osx-font-smoothing:grayscale}*{box-sizing:border-box}body{margin:0}a{color:#7047eb;text-decoration:none;text-underline-position:from-font;text-decoration-thickness:from-font}a:hover,a:focus-visible{text-decoration:underline}p{text-wrap:pretty}button,input{font:inherit}button:focus-visible,a:focus-visible,input:focus-visible{outline:2px solid #7047eb;outline-offset:3px}.site-shell{max-width:820px;margin:0 auto;padding:2rem 2rem 5rem}.site-header{align-items:baseline;display:flex;gap:2rem;justify-content:space-between;margin-bottom:3rem}.site-title{align-items:center;color:#171717;display:inline-flex;font-size:1rem;font-weight:700;gap:.45rem}nav{display:flex;flex-wrap:wrap;gap:1.25rem}.site-header nav a{color:#7047eb}.content{padding-top:0}.portfolio{max-width:756px;margin:0 auto;padding:0 0 2rem}.portfolio-label{margin:0 0 .8rem;color:#555;font-size:var(--type-small)}.portfolio h1{font-size:var(--type-heading);line-height:1.25;margin:0 0 1rem}.portfolio-lede{font-size:var(--type-body);line-height:1.6;margin:0;max-width:45rem}.portfolio-links{display:flex;flex-wrap:wrap;gap:.25rem 1rem;margin-top:1.5rem}.site-header nav a,.portfolio-links a{font-size:var(--type-body)}.portfolio-facts{border-top:1px solid #d8dadd;border-bottom:1px solid #d8dadd;display:grid;grid-template-columns:repeat(3,1fr);margin:2rem 0 0}.portfolio-facts div{padding:1rem 1rem 1rem 0}.portfolio-facts div+div{border-left:1px solid #d8dadd;padding-left:1rem}.portfolio-facts dt,.projects h2,.experience h2{font-weight:700}.portfolio-facts dt{margin-bottom:.35rem}.portfolio-facts dd{margin:0}.projects,.experience{margin-top:2rem;padding-top:1.25rem}.experience{border-top:1px solid #d8dadd}.projects h2,.experience h2{font-size:var(--type-section);line-height:1.3;margin:0}.project-list{list-style:none;margin:1rem 0 0;padding:0}.project{padding-bottom:1rem}.project+.project{border-top:1px solid #d8dadd;padding-top:1rem}.project-heading,.experience-company-header{align-items:baseline;display:flex;gap:1rem;justify-content:space-between}.project-heading h3,.project p,.experience-company-header h3,.experience-company-header p,.experience-role h3,.experience-role p{margin:0}.project-heading h3,.experience-company-header h3,.experience-role h3{font-size:var(--type-body);line-height:1.4}.project-links{display:flex;gap:1rem}.project-note,.experience-company-header p,.experience-role-type,.experience-role p:not(.experience-role-type){color:#555}.project p{margin-top:.35rem;max-width:45rem}.experience-company{margin-top:1rem}.experience-roles{border-left:1px solid #d8dadd;list-style:none;margin:1rem 0 0;padding:0 0 0 1.25rem}.experience-role{padding:0 0 1.25rem;position:relative}.experience-role:last-child{padding-bottom:0}.experience-role:before{background:#a8a8ad;border-radius:50%;content:"";height:.45rem;left:-1.52rem;position:absolute;top:.55rem;width:.45rem}.experience-role p{margin-top:.15rem}.experience-company-header p,.experience-role p:not(.experience-role-type),td:first-child,td:nth-child(5){font-variant-numeric:tabular-nums}.table-section+.table-section{border-top:1px solid #d8dadd;margin-top:3rem;padding-top:2rem}.section-heading{align-items:baseline;display:flex;gap:1rem;justify-content:space-between;margin-bottom:.75rem}h1,h2{margin:0}h1{font-size:var(--type-heading);line-height:1.25}input{background:#fff;border:1px solid #c9c9ce;border-radius:2px;min-width:15rem;padding:.3rem .45rem}.table-scroll{overflow-x:auto}table{border-collapse:collapse;min-width:0;table-layout:fixed;width:100%}th,td{border-bottom:1px solid #d8dadd;padding:.55rem .6rem;text-align:left;vertical-align:top}th{border-bottom:2px solid #aaa;font-weight:700}th:first-child,td:first-child{width:6%}th:nth-child(2),td:nth-child(2){overflow-wrap:break-word;width:28%}th:nth-child(3),td:nth-child(3){width:25%}th:nth-child(4),td:nth-child(4){width:24%}th:nth-child(5),td:nth-child(5){width:17%}td:nth-child(3){max-width:18rem;padding-right:1rem}.url-link{display:inline-block;max-width:100%;overflow:hidden;text-overflow:ellipsis;vertical-align:top;white-space:nowrap}td:nth-child(4){max-width:32rem}.summary-button{background:transparent;border:0;color:inherit;cursor:pointer;max-width:100%;overflow-wrap:break-word;padding:0;text-align:left}.summary-button:hover{color:#7047eb}.modal-backdrop{align-items:center;background:#00000059;display:flex;top:0;right:0;bottom:0;left:0;justify-content:center;padding:1rem;position:fixed}.summary-modal{background:#f8f9fa;border:1px solid #aaa;max-height:80vh;max-width:45rem;overflow-y:auto;padding:1rem;width:100%}.summary-modal header{align-items:baseline;border-bottom:1px solid #d8dadd;display:flex;justify-content:space-between;margin-bottom:1rem;padding-bottom:.5rem}.summary-modal p{margin:0;white-space:pre-wrap}.visually-hidden{clip:rect(0 0 0 0);clip-path:inset(50%);height:1px;overflow:hidden;position:absolute;white-space:nowrap}@media (max-width: 640px){.site-shell{padding:1.25rem 1rem 3rem}.site-header{align-items:flex-start;flex-direction:column;gap:.65rem;margin-bottom:2.5rem}.section-heading{align-items:flex-start;flex-direction:column;gap:.5rem}input{min-width:0;width:100%}.portfolio{padding-top:.5rem}.portfolio-facts{display:block}.portfolio-facts div,.portfolio-facts div+div{border-left:0;padding:.85rem 0}.portfolio-facts div+div{border-top:1px solid #d8dadd}.experience-company-header,.project-heading{align-items:flex-start;flex-direction:column;gap:.25rem}.table-scroll{overflow:visible}table{border:0;min-width:0}thead{display:none}tbody{display:block}tr{border-bottom:1px solid #d8dadd;display:grid;grid-template-columns:2rem minmax(0,1fr);margin-bottom:.75rem;min-width:0;padding:.45rem 0}td,td:first-child,td:nth-child(2),td:nth-child(3),td:nth-child(4),td:nth-child(5){border:0;max-width:none;min-width:0;padding:.25rem 0;width:auto}td:first-child{grid-row:1 / span 4}td:not(:first-child):before{content:attr(data-label) ": ";font-weight:700}.url-link{max-width:calc(100% - .5rem)}}
