@font-face{font-family:Inter;src:url(/assets/fonts/InterVariable.woff2) format("woff2");font-style:normal;font-weight:100 900;font-display:swap}:root{color-scheme:light;--background:#fafaf8;--text:#202428;--secondary:#596168;--accent:#185f73;--on-accent:#fff;--placeholder:#e9ecee;--rule:#d2d7da;--control:#7a8288;font-family:Inter,system-ui,-apple-system,Segoe UI,sans-serif;font-size:16px;line-height:1.6;background:var(--background);color:var(--text)}:root[data-theme=dark]{color-scheme:dark;--background:#191d21;--text:#eef0f2;--secondary:#adb5bd;--accent:#89c9da;--on-accent:#191d21;--placeholder:#272e34;--rule:#424b53;--control:#77838c}*{box-sizing:border-box}body{margin:0;background:var(--background);color:var(--text)}a,button{-webkit-tap-highlight-color:transparent}button{font:inherit}a{color:var(--accent);text-underline-offset:.25em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:3px solid var(--accent);outline-offset:5px}::selection{color:var(--on-accent);background:var(--accent)}dd,dl,h1,h2,h3,p{margin:0}h1,h2,h3{color:var(--text);font-weight:650;line-height:1.25}h1{font-size:2.25rem}h2{font-size:1.75rem;margin-bottom:16px}h3{font-size:1.1875rem}dd,p{overflow-wrap:break-word}.dates,.muted,.supporting-note{color:var(--secondary)}.supporting-note{font-size:.875rem}.skip-link{position:absolute;z-index:2;top:12px;left:12px;padding:10px 16px;background:var(--background);border:1px solid var(--control);transform:translateY(-200%)}.skip-link:focus{transform:none}.portfolio{width:min(1200px,calc(100% - 96px));margin-inline:auto;display:grid;grid-template-columns:256px minmax(0,1fr);column-gap:80px}.profile-column{border-right:1px solid var(--rule);padding:48px 32px 48px 0}.profile{width:100%}.placeholder{display:flex;align-items:center;justify-content:center;background:var(--placeholder);color:var(--secondary);text-align:center;font-size:.875rem;line-height:1.45;border-radius:10px}.headshot{width:104px;height:112px;margin-bottom:20px}.profession{margin-top:5px;font-size:1rem}.introduction{margin-top:24px}.positioning{margin-top:16px;color:var(--secondary);font-size:.875rem}.profile-actions{display:grid;gap:12px;margin-top:24px}.contact-action{display:flex;justify-content:center;align-items:center;min-height:44px;padding:10px 16px;color:var(--on-accent);background:var(--accent);font-size:.9375rem;font-weight:600;border-radius:8px;text-decoration:none}.resume-link,.resume-placeholder{color:var(--secondary);font-size:.875rem}.section-nav{display:flex;flex-direction:column;margin-top:28px;padding-block:20px;border-block:1px solid var(--rule)}.section-nav a{position:relative;display:flex;align-items:center;min-height:44px;padding:8px 16px;margin-left:-16px;color:var(--secondary);font-size:.9375rem;text-decoration:none}.section-nav a:hover{text-decoration:underline}.section-nav a[aria-current=location]{color:var(--accent);font-weight:600}.section-nav a[aria-current=location]:before{content:"";width:2px;height:22px;position:absolute;left:0;top:50%;transform:translateY(-50%);background:var(--accent)}.profile-bottom{padding-top:20px}.theme-control{display:flex;gap:8px}.theme-control button{min-height:44px;min-width:72px;border:1px solid transparent;padding:8px 16px;border-radius:24px;background:none;color:var(--secondary);cursor:pointer;font-size:.875rem}.theme-control button[aria-pressed=true]{border-color:var(--accent);color:var(--accent);font-weight:600}.social-links{display:flex;gap:12px;margin-top:16px}.social-icon{min-height:40px;padding:8px;color:var(--control);font-size:.75rem}.content{min-width:0;padding-top:48px}.section{padding-block:32px;border-top:1px solid var(--rule);scroll-margin-top:32px}.section p+p{margin-top:16px}.work{border-top:0;padding-top:0;padding-bottom:0}.eyebrow,.preview-note{color:var(--secondary);font-size:.8125rem;margin-bottom:12px}.work h2{font-size:2rem;margin-bottom:8px}.section-intro{color:var(--secondary);max-width:65ch}.projects{margin-top:32px}.project{display:grid;grid-template-columns:minmax(170px,.82fr) minmax(0,1.4fr);gap:28px;padding-block:28px;border-top:1px solid var(--rule)}.project:first-child{border-top:0;padding-top:0}.project-image{height:210px;width:100%;object-fit:cover;border-radius:10px}.project-label{font-size:.8125rem;color:var(--secondary);margin-bottom:5px}.project-summary{color:var(--secondary);margin-top:7px;line-height:1.55}.detail-grid,.project-details{margin-top:16px;font-size:.875rem;line-height:1.65}.project-details div{display:block}.project-details dd,.project-details dt{display:inline}.project-details dt{font-weight:600}.project-details dt:after{content:": "}.project-details dd{color:var(--secondary)}.text-link{display:inline-block;margin-top:14px;font-size:.875rem;font-weight:600}.experience-list{list-style:none;margin:24px 0 0;padding:0;display:grid;gap:28px}.experience-list li{display:grid;grid-template-columns:128px minmax(0,1fr);gap:24px}.experience-list h3{font-size:1rem;line-height:1.6}.experience-list li div p{color:var(--secondary);font-size:.9375rem;margin-top:4px}.skills-list{display:grid;gap:12px;margin-top:24px}.skills-list div{display:grid;grid-template-columns:128px minmax(0,1fr);gap:24px}.skills-list dt{font-weight:600}.skills-list dd,.skills-list dt{color:var(--secondary)}#skills h2{margin-bottom:6px}.markdown p{max-width:65ch}.markdown p+p{margin-top:16px}.markdown h2{margin-top:32px}.markdown h3{margin-top:24px}.markdown ol,.markdown ul{margin:16px 0;padding-left:24px}.markdown blockquote{margin:20px 0;padding-left:16px;border-left:3px solid var(--accent);color:var(--secondary)}.markdown img{max-width:100%;height:auto;border-radius:10px}.markdown code{font-family:ui-monospace,monospace;padding:2px 4px;border-radius:4px}.markdown code,.markdown pre{background:var(--placeholder)}.markdown pre{overflow:auto;padding:16px;border-radius:10px}.contact>p:not(.email){color:var(--secondary)}.contact .email{color:var(--accent);font-weight:550;font-size:1.125rem;margin-top:20px}.contact .email+.supporting-note{margin-top:6px}.footer{border-top:1px solid var(--rule);padding:28px 0 40px;color:var(--secondary);font-size:.8125rem;display:flex;justify-content:space-between;align-items:center;gap:24px}.footer div p+p{margin-top:4px}.signature-placeholder{font-size:.875rem}.material-list{display:grid;gap:12px}.material-card{display:grid;gap:4px;padding:16px;border:1px solid var(--rule);border-radius:10px;text-decoration:none;color:var(--text)}.material-card span{color:var(--secondary);font-size:.9rem}.article-page,.standalone-page{width:min(820px,calc(100% - 48px));margin:0 auto;padding:64px 0}.article-page h1,.standalone-page h1{margin-bottom:12px}.page-lede{color:var(--secondary);font-size:1.1rem;max-width:65ch;margin-bottom:36px}.collection-grid{display:grid;gap:20px}.collection-card{padding:24px;border:1px solid var(--rule);border-radius:12px;background:color-mix(in srgb,var(--background) 94%,var(--accent))}.collection-card h2{font-size:1.35rem;margin-bottom:8px}.collection-card p{color:var(--secondary)}.collection-image{width:100%;max-height:280px;object-fit:cover;border-radius:8px;margin-bottom:14px}.empty-state{color:var(--secondary)}.back-link{display:inline-block;margin-bottom:36px;font-size:.9rem}.article-body{margin-top:28px}.article-body h1{font-size:2rem}.tag-row{display:flex;flex-wrap:wrap;gap:8px;margin-top:32px}.tag-row span{padding:4px 9px;border:1px solid var(--rule);border-radius:999px;color:var(--secondary);font-size:.8rem}.detail-grid{display:grid;gap:12px}.detail-grid div{display:grid;grid-template-columns:128px minmax(0,1fr);gap:24px}.detail-grid dt{font-weight:600}.detail-grid dd,.detail-grid dt{color:var(--secondary)}.card-links{display:flex;flex-wrap:wrap;gap:16px;margin-top:24px;font-weight:600}@media(min-width:1024px){.profile[data-sticky=true]{position:sticky;top:32px}}@media(max-width:1199px) and (min-width:1024px){.portfolio{grid-template-columns:232px minmax(0,1fr);column-gap:40px;width:calc(100% - 64px)}.profile-column{padding-right:24px}.project{grid-template-columns:172px minmax(0,1fr);gap:24px}.project-image{height:190px}}@media(max-width:1023px){.portfolio{width:min(760px,calc(100% - 64px));display:block}.profile-column{border:0;padding:36px 0 0}.profile{position:relative}.headshot{width:96px;height:104px}.positioning{max-width:36ch}.section-nav{flex-direction:row;flex-wrap:wrap;column-gap:24px;padding-block:12px;margin-top:28px}.section-nav a{margin-left:0;padding:8px 0}.section-nav a[aria-current=location]:before{width:100%;height:2px;left:0;top:auto;bottom:3px;transform:none}.profile-bottom{padding:0}.theme-control{position:absolute;right:0;top:0}.social-links{position:absolute;right:0;top:60px;margin:0}.content{padding-top:32px}.section{scroll-margin-top:24px}}@media(max-width:599px){.portfolio{width:calc(100% - 40px)}.profile-column{padding-top:24px}h1{font-size:2rem}h2{font-size:1.5rem}.headshot{width:88px;height:96px}.introduction{margin-top:20px}.section-nav{column-gap:24px;row-gap:2px}.theme-control{gap:0}.theme-control button{min-width:62px;padding-inline:12px}.social-links{top:54px;gap:4px}.work h2{font-size:1.75rem}.project{grid-template-columns:1fr;gap:20px}.project-image{height:168px}.experience-list li{grid-template-columns:1fr;gap:4px}.skills-list div{grid-template-columns:max-content minmax(0,1fr);gap:16px}.skills-list{font-size:.9375rem}.footer{flex-wrap:wrap;align-items:flex-start;gap:20px}.article-page,.standalone-page{padding:40px 0;width:calc(100% - 40px)}}@media print{.portfolio{display:block;width:100%}.profile-column{border:0;padding:0}.profile{position:static!important}.contact-action,.section-nav,.skip-link,.social-links,.theme-control{display:none!important}.footer,.project,.section{break-inside:avoid}}\n.page-nav{display:flex;flex-wrap:wrap;gap:12px;margin-top:20px}.page-nav a{color:var(--secondary);font-size:.875rem}.page-nav a:hover{color:var(--accent)}.article-image{display:block;width:100%;max-height:420px;object-fit:cover;border-radius:12px;margin:28px 0 24px}.project.project-text{grid-template-columns:minmax(0,1fr)}.additional-projects a,.project h3{overflow-wrap:anywhere}.additional-projects{padding-block:28px;border-top:1px solid var(--rule)}.additional-projects ul{padding-left:20px;margin-top:20px;display:grid;gap:20px}.additional-projects li p{color:var(--secondary);font-size:.9375rem;margin-top:6px}.article-body img{display:block;max-width:100%;height:auto;margin-block:24px}