@font-face{font-family:"DM Sans";src:url("fonts/dm-sans-regular.ttf") format("truetype");font-weight:400;font-style:normal;font-display:swap}
@font-face{font-family:"DM Sans";src:url("fonts/dm-sans-medium.ttf") format("truetype");font-weight:500;font-style:normal;font-display:swap}
:root{--paper:#f4f2ed;--ink:#111110;--muted:#595955;--white:#fff;--focus:#2859b0;color:var(--ink);background:var(--paper);font-family:"DM Sans",sans-serif;font-optical-sizing:none;font-variation-settings:"opsz" 14;font-size:16px}
*{box-sizing:border-box}html{scroll-behavior:smooth}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit;color:inherit;background:none;border:0;cursor:pointer}h1,h2,h3,p{margin:0}h1,h2,h3,.brand,.primary,.text-link,nav{font-weight:500}h2{font-size:2rem;line-height:1.1875}h3{font-size:1.5rem;line-height:1.25}p{color:var(--muted)}a:focus-visible,button:focus-visible{outline:3px solid var(--focus);outline-offset:3px}section:focus,article:focus,main:focus{outline:none}section,article,main{scroll-margin-top:24px}.page{max-width:1440px;margin:auto;padding:24px 90px 48px}.header{min-height:56px;display:flex;justify-content:space-between;align-items:center;gap:24px}.brand{font-size:1.5rem;line-height:30px;display:flex;align-items:center;min-height:48px}nav{display:flex;gap:24px;align-items:center}nav a,.text-link{display:inline-flex;align-items:center;min-height:48px;line-height:24px}nav a{min-width:44px}nav a:hover,.text-link:hover{text-decoration:underline;text-underline-offset:5px}.menu-toggle,.menu-close{display:none}.hero{display:flex;flex-direction:column;align-items:center;gap:16px;padding:24px 0;text-align:center}.character{position:relative;width:160px;height:240px;flex:none;display:flex;flex-direction:column;align-items:center}.character-media{position:relative;flex:1;min-height:0;width:100%}.character-media::after{content:"";position:absolute;inset:0;z-index:2;pointer-events:none;background:linear-gradient(to top,var(--paper),transparent 10%) center / 100% 83.333333% no-repeat,linear-gradient(to right,var(--paper),transparent 6%,transparent 94%,var(--paper)),linear-gradient(to bottom,var(--paper),transparent 2%)}.character img,.character video{display:block;width:100%;height:100%;object-fit:contain}.media-color-filters{position:absolute;overflow:hidden}.walk-video{position:absolute;inset:0;pointer-events:none;filter:url("#walk-paper-match")}.walk-poster{position:relative;z-index:1;pointer-events:none}.has-video-frame .walk-poster{visibility:hidden}.walk-toggle{position:absolute;inset:0;z-index:3;width:100%;height:100%;padding:0;background:transparent;border:0;border-radius:0}.walk-toggle[hidden]{display:none}h1{letter-spacing:-.045em;font-size:5.75rem;line-height:1.021739;max-width:100%;font-weight:500}h1 span{display:block}.intro{font-size:1.5rem;font-weight:500;line-height:30px}.location::before{content:" · "}.hero-actions{display:flex;align-items:center;justify-content:center;gap:16px}.primary{display:inline-flex;align-items:center;justify-content:center;gap:16px;min-height:56px;width:224px;max-width:100%;border-radius:999px;background:var(--ink);color:var(--white);line-height:24px}.primary:hover{background:#333330}.work{display:flex;flex-direction:column;gap:16px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:24px}.project-card{display:flex;flex-direction:column;gap:16px;padding:16px;border-radius:20px;background:var(--white);min-width:0}.project-card img{display:block;width:100%;height:auto;aspect-ratio:16/9;object-fit:cover;border-radius:16px}.project-card p{font-size:1rem;line-height:24px}a.project-card:hover h3{text-decoration:underline;text-underline-offset:5px}.about{display:flex;flex-direction:column;gap:24px;padding:96px 0 64px}.eyebrow{font-size:1rem;font-weight:500;line-height:24px}.body-copy{font-size:1.125rem;line-height:28px;max-width:760px}.resume{display:flex;flex-direction:column;gap:24px;padding:32px 0 64px}.resume article{display:flex;flex-direction:column;gap:8px}.resume article p{font-size:1rem;line-height:24px}.download{align-self:flex-start;gap:8px}.contact{display:flex;flex-direction:column;gap:16px;padding:48px 0}.contact .text-link{align-self:flex-start;gap:8px;max-width:100%;overflow-wrap:anywhere}footer{font-size:1rem;line-height:24px;color:var(--muted)}.skip-link{position:absolute;left:24px;top:12px;transform:translateY(-200%);z-index:10;padding:12px 16px;background:var(--white);min-height:48px}.skip-link:focus{transform:none}
@media(max-width:1199px){.page{padding-inline:40px}h1{font-size:4rem;line-height:1.03125}.project-grid{grid-template-columns:1fr}.intro{font-size:1rem;line-height:24px;font-weight:400}}
@media(max-width:639px){.page{padding-inline:24px}.header{flex-wrap:wrap}.brand{max-width:calc(100% - 88px)}.js .menu-toggle{display:block;min-width:64px;min-height:48px;text-align:left}.js nav{display:none}.js nav.is-open{display:flex;width:100%;flex-direction:column;align-items:stretch;gap:8px;padding:24px 0}.js .menu-close{display:block;text-align:left}.js nav a,.menu-close{min-height:56px;font-size:1.5rem;line-height:30px}.hero{gap:16px}.character{width:128px;height:192px}h1{font-size:clamp(2rem,11.282vw,2.75rem);line-height:1.045455}.intro span{display:block}.location::before{content:""}.hero-actions{flex-direction:column;width:100%}nav{flex-wrap:wrap;width:100%}nav a{min-height:44px}h2,h3,p{overflow-wrap:break-word}}
@media(max-width:359px){.page{padding-inline:20px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}}

.visually-hidden{position:absolute;width:1px;height:1px;padding:0;margin:-1px;overflow:hidden;clip-path:inset(50%);white-space:nowrap;border:0}.app-store-art{position:relative;width:100%;aspect-ratio:16/9;overflow:hidden;border-radius:16px;background:var(--white)}.app-store-screens{position:absolute;inset:8px;display:flex;gap:8px}.project-card .app-store-art img{flex:1 1 0;min-width:0;width:0;height:100%;aspect-ratio:auto;object-fit:contain;border-radius:0}.project-meta{display:flex;flex-wrap:wrap;align-items:baseline;justify-content:space-between;gap:8px 16px}.project-date{margin-left:auto;white-space:nowrap;text-align:right}.project-card .project-summary{color:var(--ink)}
