@import url('https://fonts.googleapis.com/css2?family=DM+Sans:wght@400;450;500;550;600;650;700&family=Instrument+Serif:ital@0;1&display=swap');
:root{--bg:#fafaf8;--ink:#1c1d1b;--muted:#666862;--line:#d9dad4;--accent:#3155ea;--surface:#efefeb;--inverse:#f9faf6;font-family:'DM Sans',Arial,sans-serif;color:var(--ink);background:var(--bg);font-synthesis:none;color-scheme:light}
:root[data-theme=dark]{--bg:#181a18;--ink:#f2f3ee;--muted:#a6aaa2;--line:#3d403a;--surface:#242722;--accent:#a8baff;--inverse:#181a18;color-scheme:dark}
*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:35px}body{margin:0}a{color:inherit;text-decoration:none}button{font:inherit}a,button{-webkit-tap-highlight-color:transparent}a:focus-visible,button:focus-visible{outline:3px solid var(--accent);outline-offset:6px}::selection{background:#d9ff62;color:#20211d}.wrap{width:min(1440px,100% - 112px);margin-inline:auto}.skip{position:fixed;top:-100px;left:20px;background:var(--ink);color:var(--bg);padding:15px;z-index:99}.skip:focus{top:10px}.site-header{height:112px;display:flex;align-items:center;border-bottom:1px solid var(--line);gap:25px}.wordmark{padding-bottom:8px;font-size:47px;letter-spacing:-5px;font-weight:650;line-height:1;color:var(--accent)}.wordmark>span{font-size:12px;letter-spacing:0;vertical-align:top;display:inline-block;margin:5px 0 0 5px}.identity{font-size:16px;line-height:1.5;font-weight:550}.identity>span{display:block;font-size:13px;font-weight:400;color:var(--muted)}nav{margin-left:auto;display:flex;align-items:center;gap:35px;font-size:14px}nav a{padding:12px 0}nav a:hover{color:var(--accent)}nav span{margin-left:5px;font-size:12px}.theme-toggle{display:grid;place-items:center;border:1px solid var(--line);background:transparent;color:var(--ink);border-radius:50%;height:36px;width:36px;font-size:21px;cursor:pointer}.hero{padding-top:51px;padding-bottom:57px}.hero-top{display:flex;align-items:center;justify-content:space-between;gap:20px}.eyebrow{font-size:12px;letter-spacing:.085em;text-transform:uppercase;font-weight:500;margin:0}.available{font-size:13px;display:flex;align-items:center;gap:8px}.available>span{width:7px;height:7px;background:#608535;border-radius:50%}h1{font-size:clamp(65px,8.5vw,132px);line-height:1.04;letter-spacing:-.067em;font-weight:500;margin:46px 0 40px}.serif{font-family:'Instrument Serif',Georgia,serif;font-weight:400;font-style:italic;letter-spacing:-.04em}.period{color:var(--accent)}.hero-bottom{display:grid;grid-template-columns:1.6fr 1fr 58px;align-items:end;gap:32px}.hero-bottom p{font-size:17px;line-height:1.6;margin:0;letter-spacing:-.02em}.hero-detail{font-size:14px;line-height:1.6;color:var(--muted)}.round-link{width:52px;height:52px;border:1px solid var(--line);border-radius:50%;display:grid;place-items:center;font-size:25px;transition:background .2s,color .2s}.round-link:hover{background:var(--ink);color:var(--bg)}.work{padding:30px 0 84px;border-top:1px solid var(--line)}.section-heading{display:flex;align-items:center;justify-content:space-between;gap:25px;margin-bottom:30px}.section-heading h2{font-size:21px;font-weight:500;letter-spacing:-.03em;margin:0}.count{font-size:12px;vertical-align:top;margin-left:10px;color:var(--muted)}.section-heading>.eyebrow{color:var(--muted)}.project-grid{display:grid;grid-template-columns:1.3fr 1fr;gap:52px 30px}.project{min-width:0;display:block}.project-image{height:390px;overflow:hidden;position:relative;border-radius:3px}.agenlead{background:#e5e9f1}.shotfit{background:#ececde}.image-label{position:absolute;top:24px;left:26px;font-size:11px;font-weight:500;letter-spacing:.08em;z-index:1;color:#343a43}.project-image img{display:block;transition:transform .5s cubic-bezier(.2,.6,.2,1)}.project-image>img{position:absolute;max-width:none;border-radius:0}
/* Phone canvases fill the stage from the top; browser windows bleed right/bottom. */
.project-image.preview-mobile>img{top:56px;left:0;width:100%;height:calc(100% - 56px);object-fit:cover;object-position:center top}
.project-image.preview-desktop>img{top:72px;left:8%;width:100%;height:auto;object-fit:initial;object-position:left top;border-radius:6px 0 0 0}
.agenlead img,.pattern img{filter:drop-shadow(0 12px 15px #18263c20)}.project:hover img{transform:translateY(-5px) scale(1.018)}.project-open{position:absolute;right:18px;bottom:18px;width:38px;height:38px;border-radius:50%;background:#fff;color:#20211d;display:grid;place-items:center;font-size:20px;transition:transform .2s}.project:hover .project-open{transform:rotate(45deg)}.project-caption{display:flex;justify-content:space-between;gap:16px;margin-top:20px}.project-caption h3{font-size:24px;font-weight:500;letter-spacing:-.04em;margin:0 0 7px}.project-caption p{font-size:14px;color:var(--muted);line-height:1.5;margin:0}.project-role{font-size:12px;color:var(--muted);line-height:1.6;text-align:right;flex-shrink:0;padding-top:4px}
.pattern{background:#e4e1f0}.outdoorsy{background:#dfe6db}.project-grid>.project:nth-child(3){grid-column:1}.archive-link{display:inline-flex;margin-top:38px}.text-link{font-size:14px;border-bottom:1px solid currentColor;padding-bottom:7px;display:inline-flex;gap:24px}.text-link:hover{color:var(--accent)}.about{background:#20241f;color:#f4f5ef;padding:84px 0}.about-grid{display:grid;grid-template-columns:1fr 1fr;gap:10%}.about .eyebrow{color:#b8beb2}.about h2{font-size:clamp(42px,4.8vw,72px);line-height:1.06;font-weight:450;letter-spacing:-.045em;margin:32px 0}.about em,.contact em{font-family:'Instrument Serif',Georgia,serif;font-weight:400}.about-copy>p{font-size:21px;line-height:1.5;letter-spacing:-.02em;margin:0 0 24px}.about-copy>p+p{font-size:16px;color:#bcc3b7}.about-facts{display:grid;grid-template-columns:1fr 1fr;gap:20px;border-top:1px solid #51574d;padding-top:24px;margin-top:32px;font-size:14px;line-height:1.6}.about-facts span{font-size:11px;text-transform:uppercase;letter-spacing:.05em;display:block;color:#a3ad9b;margin-bottom:10px}.cv-links{display:flex;gap:26px;margin-top:26px}.experience,.process,.testimonials{padding-block:80px}.experience-list{border-top:1px solid var(--line)}.experience-list>a{display:grid;grid-template-columns:145px 1.2fr 1fr 24px;gap:24px;align-items:center;border-bottom:1px solid var(--line);padding:28px 0;transition:color .2s}.experience-list>a:hover{color:var(--accent)}.experience-date{font-size:13px;color:var(--muted)}.experience-list h3{font-size:23px;letter-spacing:-.035em;font-weight:500;margin:0 0 7px}.experience-list div>span{font-size:13px;color:var(--muted)}.experience-list p{font-size:14px;color:var(--muted);line-height:1.6;margin:0;max-width:320px}.experience-note{font-size:13px;color:var(--muted);line-height:1.8;margin:24px 0 0}.experience-note a{color:var(--ink);text-decoration:underline;text-underline-offset:4px;white-space:nowrap}.process{border-block:1px solid var(--line);padding-block:42px 60px}.process-grid{display:grid;grid-template-columns:repeat(4,1fr);gap:36px;margin-top:44px}.step{font-size:12px;color:var(--accent)}.process h3{font-weight:500;font-size:21px;letter-spacing:-.035em;margin:28px 0 13px}.process p{font-size:14px;line-height:1.7;color:var(--muted);margin:0}.quotes-grid{display:grid;grid-template-columns:repeat(3,1fr);gap:40px 36px}.quotes-grid figure{margin:0;padding-top:22px;border-top:1px solid var(--line);display:flex;flex-direction:column;justify-content:space-between;gap:24px}.quotes-grid blockquote{margin:0;font-size:17px;letter-spacing:-.02em;line-height:1.6}.quotes-grid figcaption{font-size:13px;line-height:1.6}.quotes-grid figcaption strong{font-weight:550;display:block}.quotes-grid figcaption span{color:var(--muted);font-size:12px}.contact{background:#d9ff62;color:#22261b;padding:46px 0 40px}.contact-top{display:flex;justify-content:space-between;gap:24px;align-items:center}.contact-top>span{font-size:13px}.contact-title{font-size:clamp(52px,7vw,106px);line-height:1.02;font-weight:450;letter-spacing:-.055em;display:block;position:relative;padding:55px 70px 55px 0}.contact-title>span{position:absolute;right:0;top:60px;font-size:76px}.contact-bottom{border-top:1px solid #9bb83e;padding-top:28px;display:flex;justify-content:space-between;align-items:center;gap:24px}.contact-bottom>a:first-child{font-size:20px;letter-spacing:-.02em}.contact-bottom a:hover{text-decoration:underline;text-underline-offset:5px}.book{font-size:14px}.contact-bottom a>span{margin-left:20px}footer{display:flex;align-items:center;justify-content:space-between;gap:30px;padding-block:35px;font-size:13px}.footer-name{font-weight:550}.footer-name>span{font-weight:400;color:var(--muted);margin-left:16px}footer>div{display:flex;gap:26px}.back-top{color:var(--muted)}
@media(min-width:1550px){.project-image{height:465px}}
@media(max-width:1000px){.wrap{width:calc(100% - 64px)}.identity>span{display:none}.project-image{height:310px}.project-caption{display:block}.project-role{display:block;text-align:left;padding-top:12px}.hero-bottom{grid-template-columns:1.5fr 1fr 50px}.hero-bottom p{font-size:16px}h1{font-size:10vw}}
@media(max-width:640px){.wrap{width:calc(100% - 40px)}.site-header{height:86px;gap:16px}.wordmark{font-size:39px}.identity{font-size:14px}.identity>span{display:none}nav{gap:18px}nav a{font-size:13px}nav a:nth-child(2){display:none}nav a:last-child{display:none}.theme-toggle{width:32px;height:32px}.hero{padding-top:30px;padding-bottom:35px}.hero-top{align-items:flex-start;flex-direction:column;gap:15px}.eyebrow{font-size:11px}.available{font-size:12px}h1{font-size:clamp(44px,12vw,76px);line-height:1.07;margin:35px 0 27px;letter-spacing:-.065em}.hero-bottom{grid-template-columns:1fr 42px;gap:20px}.hero-bottom p{font-size:15px}.hero-detail{display:none}.round-link{width:42px;height:42px}.work{padding-top:25px;padding-bottom:50px}.section-heading{margin-bottom:24px}.section-heading h2{font-size:19px}.section-heading>.eyebrow{font-size:10px}.project-grid{grid-template-columns:1fr;gap:35px}.project-image{height:340px}.project-caption{display:flex}.project-caption h3{font-size:22px}.project-caption p{font-size:13px;max-width:210px}.project-role{font-size:11px;padding-top:3px;text-align:right}.image-label{font-size:10px}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*::before,*::after{transition:none!important;animation:none!important}}
@media(max-width:1000px){.experience-list>a{grid-template-columns:110px 1fr 1fr 20px;gap:18px}.process-grid{gap:24px}.process h3{font-size:18px}.quotes-grid{grid-template-columns:repeat(2,1fr)}.about-grid{gap:7%}.contact-title{font-size:8.5vw}}
@media(max-width:640px){.about{padding:48px 0}.about-grid{grid-template-columns:1fr;gap:34px}.about h2{font-size:49px;margin:22px 0}.about-copy>p{font-size:19px}.about-copy>p+p{font-size:16px}.experience,.testimonials{padding-block:50px}.experience-list>a{grid-template-columns:1fr 20px;gap:12px;padding-block:22px}.experience-date{grid-column:1;font-size:12px}.experience-list>a>div{grid-column:1}.experience-list>a>span:last-child{grid-column:2;grid-row:span 2;align-self:center}.experience-list p{grid-column:1;font-size:13px}.experience-list h3{font-size:22px}.process{padding-block:30px 45px}.process-grid{grid-template-columns:1fr 1fr;gap:32px 22px;margin-top:30px}.process h3{font-size:19px;margin-top:18px}.process p{font-size:14px}.quotes-grid{grid-template-columns:1fr;gap:28px}.quotes-grid blockquote{font-size:17px}.testimonials .section-heading{align-items:flex-start;flex-direction:column;gap:12px}.contact{padding-block:30px}.contact-top{align-items:flex-start}.contact-top>span{font-size:11px}.contact-title{font-size:13vw;padding:40px 0}.contact-title>span{font-size:40px;top:37px}.contact-bottom{align-items:flex-start;flex-direction:column;gap:20px;padding-top:24px}.contact-bottom>a:first-child{font-size:18px}footer{flex-wrap:wrap;gap:24px;padding-block:30px}footer>div{gap:20px;font-size:12px}.back-top{font-size:12px}.footer-name{width:100%}.footer-name>span{float:right}}

/* Each project stage keeps a tint sampled from its image. */
.project-image,.archive-image{--image-tint:#8290b3;background:radial-gradient(ellipse at 25% 0%,color-mix(in oklab,var(--image-tint) 32%,var(--bg)),color-mix(in oklab,var(--image-tint) 14%,var(--surface)) 85%)}
.project-image .image-label{color:var(--ink)}
.project:hover .project-image>img{transform:translateY(-3px) scale(1.01)}

/* Crisp vector icons and a stable touch target at every viewport. */
.icon-arrow-up-right{display:inline-block;width:1em;height:1em;flex-shrink:0;vertical-align:-.12em}
.theme-toggle{width:40px;height:40px;min-width:40px;flex:0 0 40px;padding:0;line-height:1;appearance:none;-webkit-appearance:none;touch-action:manipulation}
.theme-toggle svg{width:19px;height:19px;display:block;grid-area:1/1}
.theme-toggle .theme-sun{display:none}
[data-theme="dark"] .theme-toggle .theme-moon{display:none}
[data-theme="dark"] .theme-toggle .theme-sun{display:block}
@media(max-width:360px){.site-header{gap:12px}.site-header nav{gap:12px}}

@media(max-width:800px){.project-grid{grid-template-columns:1fr}.project-image{height:auto;aspect-ratio:16/11}.project-image.preview-mobile>img{top:48px;height:calc(100% - 48px)}.project-image.preview-desktop>img{top:60px}.image-label{top:20px;left:24px}}

/* One-row company gallery at the end of the work archive. */
.companies-slider{padding-top:40px;padding-bottom:48px;border-top:1px solid var(--line)}
.companies-heading{display:flex;align-items:center;justify-content:space-between;gap:20px;margin-bottom:20px}
.interior .companies-heading h2{font-size:14px;font-weight:500;color:var(--muted);margin:0}
.company-controls{display:flex;gap:8px}.company-controls button{display:grid;place-items:center;width:40px;height:40px;border:1px solid var(--line);border-radius:50%;background:transparent;color:var(--ink);cursor:pointer}.company-controls svg{width:20px;height:20px}.company-controls button:hover:not(:disabled){background:var(--surface)}.company-controls button:disabled{opacity:.3;cursor:default}
.company-logos{display:flex;gap:28px;overflow-x:auto;scroll-snap-type:x mandatory;scroll-padding-inline:8px;padding:8px;scrollbar-width:thin;scrollbar-color:var(--line) transparent}
.company-logo{display:flex;align-items:center;justify-content:center;flex:0 0 180px;height:80px;padding:18px;scroll-snap-align:start;border-radius:4px;transition:background .2s}
.company-logo img{display:block;width:auto;height:auto;max-width:100%;max-height:30px;filter:brightness(0);opacity:.64;transition:opacity .2s}
.company-logo:hover{background:var(--surface)}.company-logo:hover img{opacity:1}
[data-theme=dark] .company-logo img{filter:brightness(0) invert(1);opacity:.72}
@media(max-width:640px){.companies-slider{padding-top:28px;padding-bottom:32px}.company-logos{gap:16px}.company-logo{flex-basis:150px;height:68px;padding:14px}.company-logo img{max-height:26px}}
