@font-face{font-family:Cooper Lt;src:url(/fonts/cooper-lt-light.woff2) format("woff2");font-weight:300;font-display:swap}:root{--bg: #fbfbfa;--fg: #171717;--muted: #6f6f6f;--faint: rgba(0, 0, 0, .08);--tile: #fff;--hover: rgba(0, 0, 0, .035);--sans: "Geist", ui-sans-serif, system-ui, -apple-system, sans-serif;--serif: "Cooper Lt", Georgia, serif;--out: cubic-bezier(.22, 1, .36, 1);color-scheme:light dark}@media(prefers-color-scheme:dark){:root{--bg: #0c0c0c;--fg: #ededed;--muted: #8f8f8f;--faint: rgba(255, 255, 255, .09);--tile: #141414;--hover: rgba(255, 255, 255, .035)}}*{box-sizing:border-box;margin:0;padding:0}body{background:var(--bg);color:var(--fg);font:400 15.5px/1.7 var(--sans);-webkit-font-smoothing:antialiased;text-rendering:optimizeLegibility}a{color:inherit;text-decoration:none}a,button{cursor:pointer}main{width:min(600px,100% - 40px);margin:0 auto;padding:96px 0 64px;display:grid;gap:64px}main>*{animation:rise .8s var(--out) both;animation-delay:calc(var(--i) * 80ms)}@keyframes rise{0%{opacity:0;transform:translateY(8px);filter:blur(3px)}}.intro{margin-bottom:-40px}h1{font:500 15.5px/1.4 var(--sans)}.sub{color:var(--muted);line-height:1.4}.bio{display:grid;gap:14px;color:color-mix(in srgb,var(--fg) 82%,var(--bg))}.bio em{font:300 1.12em/1 var(--serif);font-style:normal;color:var(--fg)}.inline{color:var(--fg);font-weight:500;white-space:nowrap;text-decoration:underline;text-decoration-color:var(--faint);text-decoration-thickness:1.5px;text-underline-offset:3px;transition:text-decoration-color .2s}.inline:hover{text-decoration-color:currentColor}.inline img,.inline svg{width:15px;height:15px;vertical-align:-2.5px;margin-right:5px;border-radius:4px}h2{font:300 21px/1 var(--serif);letter-spacing:-.01em;margin-bottom:18px}.projects{list-style:none;display:grid;gap:4px;margin-inline:-10px}.projects a{display:flex;align-items:center;gap:14px;padding:8px 10px;border-radius:14px;transition:background .2s}.projects a:hover{background:var(--hover)}.projects a:focus-visible{outline:2px solid var(--fg);outline-offset:2px}.tile{flex:none;width:44px;height:44px;border-radius:11px;display:grid;place-items:center;background:var(--tile);box-shadow:0 0 0 1px var(--faint),0 1px 2px #0000000f,inset 0 1px #ffffff0a;transition:transform .4s var(--out)}.tile img{width:30px;height:30px;border-radius:7px}.projects a:hover .tile{transform:scale(1.05) rotate(-2deg)}.text{display:grid;line-height:1.45}.name{font-weight:500;display:flex;align-items:center;gap:6px}.desc{color:var(--muted)}.arrow{font-size:12px;color:var(--muted);opacity:0;transform:translate(-4px,4px);transition:opacity .2s,transform .3s var(--out)}.projects a:hover .arrow{opacity:1;transform:none}.lede{color:color-mix(in srgb,var(--fg) 82%,var(--bg));margin:-4px 0 22px}.lede em{font:300 1.12em/1 var(--serif);font-style:normal;color:var(--fg)}.shots{display:grid;grid-template-columns:1fr 1fr;gap:18px 14px}.shots figure{display:grid;gap:8px}.shots .hero{grid-column:1 / -1;margin-bottom:6px}.shots figcaption{color:var(--muted);font-size:13.5px;line-height:1.4;padding-left:2px}.shot{display:block;width:100%;border:0;padding:0;font:inherit;background:#fff;border-radius:16px;overflow:hidden;box-shadow:0 0 0 1px var(--faint),0 1px 2px #0000000a;transition:box-shadow .2s}.hero .shot{border-radius:20px}.shot img{display:block;width:100%;height:auto}.shot:hover{box-shadow:0 0 0 1px color-mix(in srgb,var(--fg) 18%,transparent),0 1px 2px #0000000a}.shot:focus-visible{outline:2px solid var(--fg);outline-offset:3px}.lightbox{margin:auto;padding:0;border:0;background:transparent;max-width:min(1200px,100vw - 32px);max-height:none;overflow:visible;cursor:pointer}.lightbox::backdrop{background:color-mix(in srgb,var(--bg) 88%,transparent);-webkit-backdrop-filter:blur(8px);backdrop-filter:blur(8px)}.lightbox img{display:block;width:auto;height:auto;max-width:100%;max-height:calc(100dvh - 32px);border-radius:20px;box-shadow:0 0 0 1px var(--faint),0 24px 64px -16px #0000004d}.lightbox[open]{animation:pop .4s var(--out)}@keyframes pop{0%{opacity:0;transform:scale(.97)}}.facts{display:grid;gap:10px}.facts div{display:grid;grid-template-columns:80px 1fr}.facts dt{color:var(--muted)}footer{display:flex;justify-content:space-between;padding-top:24px;border-top:1px solid var(--faint);color:var(--muted);font-size:13.5px}.serif{font:300 15px/1.5 var(--serif)}@media(max-width:520px){main{padding-top:64px;gap:52px}.intro{margin-bottom:-28px}.shots{gap:16px 10px}.shot{border-radius:12px}.hero .shot{border-radius:16px}}@media(prefers-reduced-motion:reduce){*,*:before,*:after{animation:none!important;transition:none!important}}
