:root{--bg:#f3f3f0;--ink:#2a2b2d;--mut:#6f7072;--line:#d6d6d1;--sf:#e8e8e3}
@media (prefers-color-scheme:dark){:root{--bg:#222325;--ink:#ecece8;--mut:#9a9b9d;--line:#3b3c3e;--sf:#2d2e30;color-scheme:dark}}
*,*::before,*::after{box-sizing:border-box}
html{scroll-behavior:smooth}
body{margin:0;background:var(--bg);color:var(--ink);font-family:'Instrument Sans',system-ui,-apple-system,'Segoe UI',sans-serif;font-size:17px;line-height:1.6;-webkit-font-smoothing:antialiased;padding-bottom:env(safe-area-inset-bottom,0px)}
a{color:inherit}
img{display:block;max-width:100%}
figure{margin:0}
.skip{position:absolute;left:-9999px;top:8px;background:var(--ink);color:var(--bg);padding:8px 14px;z-index:50}
.skip:focus{left:8px}
.wrap{max-width:1440px;margin:0 auto;padding:0 40px}
header .wrap{display:flex;justify-content:space-between;align-items:center;padding-top:24px;padding-bottom:24px}
.logo{font-weight:600;text-decoration:none;font-size:21px;letter-spacing:-.015em}
nav{display:flex;gap:28px}
nav a{text-decoration:none;color:var(--mut);font-size:15px;padding-bottom:3px;border-bottom:1px solid transparent;transition:color .2s}
nav a:hover,nav a.on{color:var(--ink)}
nav a.on{border-color:var(--ink)}
section[data-page]{display:none;padding-bottom:110px;animation:fade .35s ease}
section[data-page].show{display:block}
@keyframes fade{from{opacity:0;transform:translateY(6px)}to{opacity:1;transform:none}}
h1,h2,h3{font-weight:500;letter-spacing:-.035em;line-height:1.02;margin:0}
h1{font-size:clamp(3.2rem,10vw,8rem)}
h2{font-size:clamp(2.1rem,5vw,3.8rem)}
h3{font-size:clamp(1.3rem,2.4vw,1.7rem);letter-spacing:-.02em;line-height:1.2}
p{margin:0}
.lead{font-size:clamp(1.1rem,1.8vw,1.35rem);line-height:1.55;max-width:680px}
.mut{color:var(--mut)}
.small{font-size:15px}

/* image slots */
.slot{display:block;background:var(--sf);position:relative;overflow:hidden}
.slot img{width:100%;height:100%;object-fit:cover;transition:transform .6s ease}
a.slot{cursor:pointer}
a.slot:hover img{transform:scale(1.03)}

.hero{display:grid;grid-template-columns:1.15fr .85fr;gap:64px;align-items:center;padding:2vh 0 4vh}
.name{font-size:clamp(2.8rem,6vw,5.6rem);line-height:1;letter-spacing:-.04em}
.role{font-size:clamp(1.25rem,2.1vw,1.8rem);font-weight:500;letter-spacing:-.02em;line-height:1.25;color:var(--mut);margin:18px 0 34px}
.intro .lead{max-width:600px}
.portrait{justify-self:end;background:none}
.portrait img{width:auto;height:auto;max-width:100%;max-height:calc(100svh - 130px);object-fit:contain}
.btn{display:inline-block;background:var(--ink);color:var(--bg);padding:15px 30px;text-decoration:none;font-weight:500;font-size:16px;border-radius:2px;transition:opacity .2s}
.btn:hover{opacity:.82}
#projects{padding-top:14vh;scroll-margin-top:10px}
#projects>h2{font-size:clamp(2.6rem,7vw,5.5rem);margin-bottom:56px}
.row{display:grid;grid-template-columns:1fr 1fr;gap:56px;padding:56px 0;border-top:1px solid var(--line);align-items:center}
.row .slot{aspect-ratio:3/2}
.shot{min-width:0}
.loc{margin-top:10px;font-size:13px;color:var(--mut);letter-spacing:.01em}
.row h2{font-size:clamp(1.8rem,3.4vw,2.7rem);margin:14px 0 18px}
.row p.mut{max-width:460px}
.lnk,.wl{display:inline-block;font-weight:500;border-bottom:1px solid var(--ink);text-decoration:none;padding-bottom:2px}
.lnk{margin-top:26px}.wl{margin-top:22px}
.pagehead{padding:7vh 0 6vh}
.pj h1{font-size:clamp(2.4rem,6.2vw,5.4rem);line-height:1.04;max-width:1100px}
.brand{font-size:clamp(1.5rem,3vw,2.3rem);font-weight:600;letter-spacing:-.02em;margin-bottom:20px}
.pj .lead{margin-top:36px}
.txt{max-width:680px}.txt p+p{margin-top:18px}
.step{display:grid;grid-template-columns:90px 1fr;gap:20px;padding:44px 0;border-top:1px solid var(--line)}
.step .n{color:var(--mut);font-size:15px;padding-top:6px}
.step h3{margin-bottom:14px}
.step p{max-width:620px;color:var(--mut)}
.g{display:grid;gap:14px;grid-template-columns:repeat(3,1fr);margin-top:32px}
.g .slot{aspect-ratio:4/3}
.g:empty{display:none}
.g.igs{grid-template-columns:repeat(auto-fit,minmax(280px,1fr));align-items:start}
.ig{min-width:0}
.ig .instagram-media{min-width:0!important;width:100%!important;max-width:100%!important;margin:0!important}
.ig blockquote.instagram-media{background:var(--sf);border:1px solid var(--line);border-radius:6px;padding:28px;font-size:15px}
.ig blockquote a{color:var(--mut)}
.doc{display:block;max-width:620px;margin-top:34px;text-decoration:none;border:1px solid var(--line);transition:border-color .25s}
.doc:hover{border-color:var(--ink)}
.stack{display:block;position:relative;background:var(--sf);overflow:hidden}
.doc-portrait .stack{aspect-ratio:16/10}
.doc-landscape .stack{aspect-ratio:16/9.5}
.pg{position:absolute;left:50%;top:50%;background:#fff;box-shadow:0 2px 6px rgba(0,0,0,.12),0 14px 34px rgba(0,0,0,.16);transition:transform .45s cubic-bezier(.2,.7,.2,1)}
.doc-portrait .pg{width:44%;transform-origin:50% 100%}
.doc-landscape .pg{width:70%;transform-origin:50% 100%}
.doc-portrait .pg1{z-index:3;transform:translate(-50%,-38%)}
.doc-portrait .pg2{z-index:2;transform:translate(-50%,-38%) translateX(-34%) rotate(-7deg) scale(.94)}
.doc-portrait .pg3{z-index:1;transform:translate(-50%,-38%) translateX(34%) rotate(7deg) scale(.94)}
.doc-portrait:hover .pg1{transform:translate(-50%,-42%)}
.doc-portrait:hover .pg2{transform:translate(-50%,-38%) translateX(-52%) rotate(-10deg) scale(.94)}
.doc-portrait:hover .pg3{transform:translate(-50%,-38%) translateX(52%) rotate(10deg) scale(.94)}
.doc-landscape .pg1{z-index:3;transform:translate(-50%,-44%)}
.doc-landscape .pg2{z-index:2;transform:translate(-50%,-44%) translate(-14%,-8%) rotate(-5deg) scale(.92)}
.doc-landscape .pg3{z-index:1;transform:translate(-50%,-44%) translate(14%,-8%) rotate(5deg) scale(.92)}
.doc-landscape:hover .pg1{transform:translate(-50%,-47%)}
.doc-landscape:hover .pg2{transform:translate(-50%,-44%) translate(-22%,-10%) rotate(-7deg) scale(.92)}
.doc-landscape:hover .pg3{transform:translate(-50%,-44%) translate(22%,-10%) rotate(7deg) scale(.92)}
.doc-meta{display:flex;justify-content:space-between;gap:16px;align-items:center;padding:18px 22px;border-top:1px solid var(--line)}
.doc-meta>span:first-child{display:flex;flex-direction:column;gap:2px}
.doc-meta small{color:var(--mut);font-size:14px}
.doc-meta .arr{font-size:22px;transition:transform .25s}
.doc:hover .arr{transform:translate(3px,-3px)}
.cover{aspect-ratio:21/9;margin:2vh 0 6vh}
.nx{display:flex;align-items:center;gap:18px;margin-top:56px;padding-top:40px;border-top:1px solid var(--line)}
.nx span{color:var(--mut);font-size:15px}
.btn.sm{padding:11px 22px;font-size:15px}
.bio{font-size:clamp(1.6rem,3.4vw,2.6rem);line-height:1.2;letter-spacing:-.025em;font-weight:500;max-width:900px}
.about2{max-width:640px;margin-top:56px;padding-top:40px;border-top:1px solid var(--line);color:var(--mut)}
.about2 p+p{margin-top:20px}
.contact{border-top:1px solid var(--line);padding-top:40px;font-weight:600}
.contact a{text-decoration:none;border-bottom:1px solid var(--line);transition:border-color .2s}
.contact a:hover{border-color:var(--ink)}
form{display:grid;gap:18px;max-width:560px;margin-top:56px}
input,textarea{font:inherit;color:inherit;background:transparent;border:0;border-bottom:1px solid var(--line);padding:12px 0;width:100%;border-radius:0;outline:0}
input:focus,textarea:focus{border-color:var(--ink)}
textarea{min-height:110px;resize:vertical}
button.btn{border:0;cursor:pointer;font-family:inherit;justify-self:start}
footer .wrap{display:flex;justify-content:space-between;gap:20px;flex-wrap:wrap;padding-top:32px;padding-bottom:44px;border-top:1px solid var(--line);color:var(--mut);font-size:15px}
footer a{text-decoration:none}
footer a:hover{color:var(--ink)}
a:focus-visible,button:focus-visible{outline:2px solid var(--ink);outline-offset:3px}

/* lightbox */
#lb{position:fixed;inset:0;background:rgba(20,20,22,.92);display:flex;align-items:center;justify-content:center;z-index:100;padding:4vh 4vw;cursor:zoom-out}
#lb[hidden]{display:none}
#lb img{max-width:100%;max-height:100%;object-fit:contain}
#lb button{position:absolute;top:14px;right:18px;background:none;border:0;color:#fff;font-size:38px;line-height:1;cursor:pointer}

@media (max-width:760px){
.wrap{padding:0 22px}
.hero,.row{grid-template-columns:1fr;gap:32px}
.portrait{order:-1;justify-self:start}
.portrait img{max-height:70svh}
.hero{gap:28px;padding-top:0}
.step{grid-template-columns:1fr;gap:6px}
nav{gap:16px}nav a{font-size:14px}
header .wrap{flex-direction:column;align-items:flex-start;gap:14px}
.cover{aspect-ratio:4/3}
.g{gap:8px}
}
@media (prefers-reduced-motion:reduce){*{animation:none!important;transition:none!important;scroll-behavior:auto!important}}
