:root{--bg:#fff;--surface:#f4f4f2;--text:#161616;--muted:#5f5f5c;--line:#e2e2de;--accent:#1f4fd8;--font:ui-sans-serif, system-ui, -apple-system, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif;--wide:1100px;--narrow:720px;--gutter:clamp(16px, 4vw, 40px);color-scheme:light}*,:before,:after{box-sizing:border-box}html{scroll-behavior:smooth}@media (prefers-reduced-motion:reduce){html{scroll-behavior:auto}}body{background:var(--bg);color:var(--text);font-family:var(--font);-webkit-font-smoothing:antialiased;margin:0;font-size:1.0625rem;line-height:1.65}img{max-width:100%;height:auto;display:block}a{color:var(--accent);text-underline-offset:.18em}a:hover{text-decoration-thickness:2px}:focus-visible{outline:2px solid var(--accent);outline-offset:3px;border-radius:2px}h1,h2,h3{letter-spacing:-.01em;margin:0 0 .5em;line-height:1.2}h1{font-size:clamp(2rem,4.5vw,3rem);font-weight:700}h2{font-size:clamp(1.5rem,3vw,2rem);font-weight:700}h3{font-size:1.2rem;font-weight:650}p,ul,ol{margin:0 0 1em}li+li{margin-top:.35em}.skip-link{background:var(--text);color:var(--bg);z-index:10;padding:8px 12px;position:absolute;top:8px;left:-9999px}.skip-link:focus{left:8px}main{padding:0 var(--gutter)}.site-header{max-width:var(--wide);padding:28px var(--gutter);flex-wrap:wrap;justify-content:space-between;align-items:center;gap:12px 32px;margin:0 auto;display:flex}.brand{color:var(--text);font-size:1.25rem;font-weight:700;text-decoration:none}.nav-list{gap:28px;margin:0;padding:0;list-style:none;display:flex}.nav-list li+li{margin-top:0}.nav-list a{color:var(--muted);text-decoration:none}.nav-list a:hover,.nav-list a[aria-current=page]{color:var(--text)}.nav-dropdown{position:relative}.nav-sub{z-index:5;background:var(--bg);border:1px solid var(--line);opacity:0;visibility:hidden;border-radius:8px;min-width:300px;margin:0;padding:12px 0;list-style:none;transition:opacity .15s,transform .15s,visibility .15s;position:absolute;top:100%;right:0;transform:translateY(4px);box-shadow:0 12px 32px #00000014}.nav-sub a{padding:8px 18px;font-size:.95rem;display:block}.nav-sub li+li{margin-top:0}.nav-dropdown:hover .nav-sub,.nav-dropdown:focus-within .nav-sub{opacity:1;visibility:visible;transform:none}@media (width<=640px){.nav-sub{display:none}}.site-footer{max-width:var(--wide);padding:32px var(--gutter) 48px;border-top:1px solid var(--line);color:var(--muted);flex-wrap:wrap;justify-content:space-between;gap:12px;margin:96px auto 0;font-size:.9rem;display:flex}.site-footer p{margin:0}.back-to-top{color:var(--muted);text-decoration:none}.back-to-top:hover{color:var(--text)}.work-grid{max-width:var(--wide);grid-template-columns:repeat(auto-fill,minmax(min(100%,320px),1fr));gap:40px 28px;margin:16px auto 0;display:grid}.work-card{color:inherit;text-decoration:none}.work-card .thumb{aspect-ratio:1;background:var(--surface);border-radius:6px;overflow:hidden}.work-card .thumb img,.work-card .thumb .figure-missing{object-fit:cover;width:100%;height:100%;transition:transform .4s}.work-card:hover .thumb img{transform:scale(1.03)}.work-card .meta{margin-top:14px}.work-card .year{color:var(--muted);font-size:.85rem;display:block}.work-card .name{font-weight:600}.work-card .figure{height:100%;margin:0}.page,.case-study{max-width:var(--wide);margin:0 auto}.page>*,.prose>*{max-width:var(--narrow);margin-left:auto;margin-right:auto}.page-header{padding:48px 0 32px}.case-study .page-header{max-width:var(--narrow);margin:0 auto}.scroll-hint{color:var(--muted)}.overview{max-width:var(--wide);grid-template-columns:repeat(auto-fit,minmax(min(100%,300px),1fr));gap:28px 40px;margin:48px auto 72px;display:grid}.overview h2{text-transform:uppercase;letter-spacing:.08em;color:var(--muted);margin-bottom:.4em;font-size:.8rem}.overview p{margin:0}.prose h2{border-top:1px solid var(--line);margin-top:2.6em;padding-top:1.2em}.prose h3{margin-top:2em}.figure,.before-after,.figure-pair{margin:32px auto 40px;max-width:var(--wide)!important}.figure img{border-radius:4px;width:100%}.figure figcaption{color:var(--muted);text-align:center;margin-top:10px;font-size:.9rem}.before-after,.figure-pair{grid-template-columns:repeat(auto-fit,minmax(min(100%,320px),1fr));gap:24px;display:grid}.before-after .figure,.figure-pair .figure{margin:0}.figure-missing{text-align:center;background:repeating-linear-gradient(45deg, var(--surface), var(--surface) 12px, #ecece8 12px, #ecece8 24px);min-height:220px;color:var(--muted);border:1px dashed #c9c9c3;border-radius:4px;place-content:center;gap:6px;padding:24px;font-size:.85rem;display:grid}.figure-missing code{color:var(--text);font-size:.8rem}.prototype-link a{border:1px solid var(--text);color:var(--text);border-radius:999px;align-items:center;gap:6px;padding:10px 18px;font-weight:550;text-decoration:none;display:inline-flex}.prototype-link a:hover{background:var(--text);color:var(--bg)}.resume-pdf{border:1px solid var(--line);background:var(--surface);border-radius:6px;width:100%;height:clamp(640px,88vh,1180px);display:block}.resume-pdf-fallback{text-align:center;color:var(--muted);padding:32px 24px}.project-pager{max-width:var(--narrow);border-top:1px solid var(--line);margin:72px auto 0;padding-top:24px}.project-pager span{color:var(--muted);font-size:.85rem;display:block}.project-pager a{font-size:1.2rem;font-weight:600;text-decoration:none}.contact-form{gap:20px;display:grid}.contact-form label{gap:6px;font-weight:550;display:grid}.contact-form input,.contact-form textarea{font:inherit;background:var(--bg);color:var(--text);border:1px solid #bdbdb7;border-radius:6px;padding:12px 14px}.contact-form textarea{resize:vertical;min-height:180px}.contact-form button{font:inherit;cursor:pointer;background:var(--text);color:var(--bg);border:0;border-radius:999px;justify-self:start;padding:12px 28px;font-weight:600}.contact-form button:hover{background:var(--accent)}.visually-hidden{clip:rect(0 0 0 0);white-space:nowrap;width:1px;height:1px;overflow:hidden;position:absolute!important}
