:root{--bg:#f7f8f5;--ink:#15201c;--muted:#65716b;--line:#d9dfd6;--accent:#0084ff;--dark:#101715}*{box-sizing:border-box}html{scroll-behavior:smooth;scroll-padding-top:100px}body{margin:0;background:var(--bg);color:var(--ink);font:16px/1.65 Arial,Helvetica,sans-serif;-webkit-font-smoothing:antialiased}a{color:inherit;text-decoration:none}button,input,textarea{font:inherit}a:focus-visible,button:focus-visible,input:focus-visible,textarea:focus-visible{outline:3px solid var(--accent);outline-offset:5px}img{max-width:100%;display:block;height:auto}h1,h2,h3,p{margin-top:0}h1,h2,h3{font-weight:500;line-height:1.04;letter-spacing:-.055em}h1{font-size:clamp(3.3rem,6.8vw,7rem);margin-bottom:30px}h2{font-size:clamp(2.1rem,3.5vw,3.8rem);margin-bottom:20px}h3{font-size:1.65rem;line-height:1.14;letter-spacing:-.035em}.skip{position:absolute;top:-100px;padding:15px;background:var(--accent);z-index:10}.skip:focus{top:10px}.header{height:100px;padding:0 5%;display:flex;align-items:center;justify-content:space-between;border-bottom:1px solid var(--line);background:var(--bg)}.brand{font-size:44px;font-weight:800;letter-spacing:-5px;line-height:1}.brand>span{color:var(--accent)}.header nav{display:flex;gap:36px;align-items:center;font-size:14px}.header nav>a{padding:8px 0}.header nav>a[aria-current]{border-bottom:1px solid var(--ink)}.header nav>a:hover{color:var(--accent)}.contact-nav{margin-left:34px}.eyebrow{font-size:12px;letter-spacing:.14em;line-height:1.5;font-weight:600;display:block;margin-bottom:24px}.accent{color:var(--accent)}.status-dot{display:inline-block;background:var(--accent);height:7px;width:7px;border-radius:50%;margin-right:8px}.hero{margin:0 5%;display:grid;grid-template-columns:1.08fr 1fr;min-height:660px;align-items:center;gap:4%}.hero-copy{padding:64px 0 32px}.hero-copy h1{font-size:clamp(4rem,7.5vw,8rem)}.intro{font-size:20px;line-height:1.6;max-width:520px;color:#53615a}.hero-actions{display:flex;align-items:center;gap:26px;margin:36px 0 74px;flex-wrap:wrap}.button{display:inline-flex;align-items:center;justify-content:center;gap:20px;background:var(--ink);color:white;padding:15px 24px;border:1px solid var(--ink);font-size:14px;font-weight:600;transition:background .2s,transform .2s}.button:hover{background:#344d3e;transform:translateY(-2px)}.button.light{background:var(--accent);color:var(--dark);border-color:var(--accent)}.button.light:hover{background:#daf7ac}.text-link{font-size:14px;border-bottom:1px solid var(--ink);padding-bottom:5px}.hero-footnote{display:flex;justify-content:space-between;gap:16px;max-width:390px;color:var(--muted);font-size:12px;letter-spacing:.12em}.hero-image{position:relative;background:#292c2a;height:545px;overflow:hidden}.hero-image>img{width:100%;height:100%;object-fit:cover}.image-label{position:absolute;bottom:0;background:linear-gradient(transparent,rgba(0,0,0,.6));padding:50px 25px 24px;left:0;right:0;display:flex;justify-content:space-between;gap:20px;color:white;font-size:12px}.section{padding:88px 5%;border-top:1px solid var(--line)}.section-heading{display:flex;align-items:end;justify-content:space-between;gap:30px;margin-bottom:40px}.section-heading h2{margin-bottom:0}.section-heading p{margin-top:24px;max-width:560px;color:var(--muted)}.section-heading .eyebrow{margin-bottom:18px}.project-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:60px 28px}.card-image{position:relative;background:#e9ece6;overflow:hidden;aspect-ratio:1.23}.card-image>img{height:100%;width:100%;object-fit:cover;transition:transform .45s}.project-card:hover .card-image>img{transform:scale(1.045)}.project-number{position:absolute;top:15px;left:16px;background:var(--bg);padding:3px 8px;font:12px monospace}.card-arrow{position:absolute;bottom:15px;right:15px;background:var(--bg);width:36px;height:36px;text-align:center;line-height:36px;font-size:21px;border-radius:50%}.card-meta{display:flex;justify-content:space-between;gap:10px;color:var(--muted);font-size:12px;margin:20px 0 12px}.project-card h3{margin-bottom:12px}.project-card p{color:var(--muted);font-size:15px;line-height:1.6;margin:0;max-width:340px}.about-section{padding:100px 9%;display:grid;grid-template-columns:1fr 1.35fr;gap:12%;background:#eaf0e5;border-top:1px solid var(--line)}.about-title>img{width:260px;aspect-ratio:1;object-fit:cover;margin-top:40px}.prose{font-size:17px;line-height:1.85;overflow-wrap:anywhere}.prose h2{font-size:2rem;margin:0 0 28px}.prose li{padding-left:4px;margin-bottom:15px}.prose ul{padding-left:22px}.prose a{color:var(--accent);text-decoration:underline;text-underline-offset:4px}.prose>div+div{margin-top:30px}.prose strong,.prose b{font-weight:600}.music-strip{display:grid;grid-template-columns:1.1fr 1fr;background:var(--dark);color:var(--bg)}.music-strip>div:first-child{min-height:530px}.music-strip img{width:100%;height:100%;object-fit:cover}.music-strip>div:last-child{padding:85px 15%}.music-strip p{color:#b6c0b9;max-width:340px;margin:30px 0}.music-strip .eyebrow{color:var(--accent)}.gallery{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:22px;margin-top:35px}.gallery-photo{background:#e8ece5;position:relative;display:flex;flex-direction:column;justify-content:center;min-width:0;overflow:hidden}.gallery-photo img{width:100%;height:290px;object-fit:contain;padding:12px;transition:transform .3s}.gallery-photo:hover img{transform:scale(1.02)}.gallery-photo>span{display:flex;justify-content:space-between;padding:8px 16px;font:12px/1.7 monospace;border-top:1px solid #d3d9ce}.contact{background:var(--accent);padding:90px 9%;display:grid;grid-template-columns:1.2fr 1fr;gap:10%;align-items:center}.contact h2{font-size:clamp(2.8rem,4vw,4.5rem);margin-bottom:0}.contact-detail{max-width:350px}.small{font-size:13px;color:var(--muted);margin-top:18px}footer{padding:55px 5% 30px;display:grid;grid-template-columns:1fr auto;gap:38px;background:var(--dark);color:#e5ebe3}.footer-name{font-size:24px;line-height:1.25;letter-spacing:-.03em}.footer-name span{display:block;font-size:13px;color:#9daa9f;letter-spacing:0;margin-top:8px}footer>div{display:flex;gap:30px;font-size:14px;align-items:start}footer>p{border-top:1px solid #354039;padding-top:25px;margin:0;color:#9daa9f;font-size:12px;grid-column:1/-1}.page-intro{padding:85px 5% 65px}.page-intro h1{max-width:1100px}.intro-row{display:flex;justify-content:space-between;align-items:center;gap:30px}.intro-row p{font-size:19px;max-width:480px;color:var(--muted);margin:0}.count{font:12px/1.8 monospace;text-align:right}.projects-section{padding-top:55px}.archive{background:#eaf0e5}.project-intro{padding:40px 9% 60px}.back{display:block;font-size:13px;color:var(--muted);margin-bottom:50px}.project-intro h1{max-width:1000px;font-size:clamp(3rem,6vw,6rem)}.project-intro .intro{max-width:650px;margin-bottom:0}.project-hero-image{margin:0 9%;background:#e8ece5;height:580px}.project-hero-image img{width:100%;height:100%;object-fit:contain}.project-details{padding:80px 9%;display:grid;grid-template-columns:210px minmax(0,1fr);gap:8%}.project-details aside{font-size:14px;color:var(--muted)}.project-details aside nav{display:flex;flex-direction:column;gap:10px;margin-top:30px}.project-details .prose{max-width:780px}.document-link{display:flex!important;justify-content:space-between;align-items:center;gap:20px;border:1px solid var(--line);padding:22px;margin-top:30px;text-decoration:none!important;background:#edf2e7}.videos{display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:28px;margin-top:30px}.video-frame{aspect-ratio:16/9;background:var(--dark)}.video iframe{border:0;width:100%;height:100%;display:block}.video>a{display:flex;justify-content:space-between;gap:16px;font-size:14px;margin:12px 0 20px}.next-project{display:block;padding:65px 9%;background:var(--accent)}.next-project>span:last-child{font-size:clamp(2rem,4vw,4rem);line-height:1.1;letter-spacing:-.04em;display:block}.music-hero{height:660px;position:relative;background:#111320;color:white}.music-hero>div:first-child{position:absolute;inset:0}.music-hero img{width:100%;height:100%;object-fit:cover;object-position:60% 40%}.music-hero:after{content:"";position:absolute;inset:0;background:linear-gradient(90deg,rgba(12,14,20,.94),rgba(12,14,20,.25) 75%)}.music-hero-copy{position:relative;z-index:1;padding:80px 9%;max-width:780px}.music-hero h1{font-size:clamp(4rem,8vw,8rem)}.music-hero h1 span{color:var(--accent)}.music-hero p{font-size:19px;margin-bottom:30px}.music-gallery{background:var(--dark)}.music-gallery .gallery-photo{background:#1f2722}.music-gallery .gallery-photo>span{color:#bdc8be;border-color:#3a443c}.music-gallery .gallery-photo img{padding:0;object-fit:cover}.contact-form label{display:block;font-size:14px;margin-bottom:14px}.contact-form input,.contact-form textarea{display:block;width:100%;padding:12px;border:1px solid #7e9b60;background:#f7fff0;color:var(--ink)}.contact-form textarea{min-height:110px;resize:vertical}
@media(min-width:1600px){body{max-width:1800px;margin:auto}.hero{min-height:780px}.hero-image{height:640px}}
@media(max-width:1000px){.header nav{gap:22px}.contact-nav{margin-left:5px}.hero{min-height:600px}.hero-image{height:460px}.hero-copy h1{font-size:5rem}.hero-actions{margin-bottom:40px}.hero-footnote{display:none}.project-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.about-section{gap:8%;padding:75px 6%}.music-strip>div:last-child{padding:65px 10%}.gallery-photo img{height:230px}.project-details{grid-template-columns:160px minmax(0,1fr);gap:5%;padding:65px 6%}.project-hero-image{margin:0 6%;height:470px}}
@media(max-width:650px){.header{height:82px;padding:0 6%}.header nav{gap:18px;font-size:13px}.header .brand{font-size:37px}.contact-nav{display:none}.hero{display:flex;flex-direction:column;gap:0;margin:0 6%}.hero-copy{padding:55px 0 35px;width:100%}.hero-copy h1{font-size:clamp(3.7rem,14vw,5.5rem)}.eyebrow{font-size:12px;letter-spacing:.11em}.intro{font-size:18px}.hero-actions{margin:26px 0 0;gap:20px}.hero-image{width:100%;height:390px;margin-bottom:38px}.image-label{padding:45px 18px 20px;font-size:12px}.section{padding:55px 6%}.section-heading{align-items:start;flex-direction:column;gap:15px;margin-bottom:30px}.project-grid{grid-template-columns:1fr;gap:38px}.project-card h3{font-size:1.8rem}.card-image{aspect-ratio:1.25}.card-meta{margin-top:15px}.about-section{padding:60px 6%;grid-template-columns:1fr;gap:40px}.about-title{display:grid;grid-template-columns:1fr 115px;gap:0 12px}.about-title>.eyebrow{grid-column:1/-1}.about-title>img{grid-column:2;grid-row:2;width:115px;margin:0}.about-title h2{font-size:2.3rem}.prose{font-size:16px;line-height:1.8}.music-strip{grid-template-columns:1fr}.music-strip>div:first-child{min-height:0;height:340px}.music-strip>div:last-child{padding:55px 6%}.gallery{grid-template-columns:repeat(2,minmax(0,1fr));gap:12px}.gallery-photo img{height:180px;padding:6px}.contact{padding:60px 6%;grid-template-columns:1fr;gap:32px}footer{padding:40px 6% 25px;grid-template-columns:1fr;gap:28px}footer>div{flex-wrap:wrap;gap:22px}.page-intro{padding:55px 6% 40px}.page-intro h1{font-size:3.5rem}.intro-row p{font-size:17px}.count{min-width:90px;font-size:12px}.project-intro{padding:30px 6% 40px}.back{margin-bottom:35px}.project-intro h1{font-size:3.2rem;overflow-wrap:anywhere}.project-hero-image{height:340px}.project-details{display:block;padding:45px 6%}.project-details aside{border-bottom:1px solid var(--line);padding-bottom:25px;margin-bottom:35px}.project-details aside nav{flex-direction:row;flex-wrap:wrap;gap:20px;margin-top:15px}.project-details aside p{margin-bottom:15px}.project-details aside .eyebrow{margin-bottom:12px}.videos{grid-template-columns:1fr;gap:12px}.next-project{padding:45px 6%}.music-hero{height:590px}.music-hero-copy{padding:65px 6%}.music-hero h1{font-size:5rem}.music-hero img{object-position:60%}.music-hero:after{background:linear-gradient(90deg,rgba(12,14,20,.86),rgba(12,14,20,.35))}}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}*,*:before,*:after{transition:none!important;animation:none!important}}

/* Original Weebly font families, locally hosted. */
body{font-family:'Montserrat',sans-serif;font-weight:400}
h1{font-family:'Birdseye','Montserrat',sans-serif;font-weight:600;letter-spacing:0;line-height:1.15}
h2,h3{font-family:'Montserrat',sans-serif;font-weight:400;letter-spacing:0;line-height:1.3}
.header{min-height:100px;height:auto;gap:35px;padding-top:22px;padding-bottom:22px}
.brand{font-family:'Montserrat',sans-serif;font-size:25px;font-weight:700;letter-spacing:.03em;line-height:1.25}
.header nav{font-weight:700;text-transform:uppercase;letter-spacing:.035em}
.footer-name{font-family:'Montserrat',sans-serif;font-size:21px;font-weight:700;letter-spacing:.03em}
.page-intro{padding:60px 6% 35px}
.page-intro h1{font-size:clamp(2.5rem,5vw,4.5rem);margin:0;text-transform:uppercase}
.project-intro{padding:34px 9% 35px}
.project-intro h1{font-size:clamp(2.1rem,4.3vw,3.8rem);margin:0}
.project-intro .back{margin-bottom:30px}
.home-content{padding:10px 6% 65px;display:grid;grid-template-columns:minmax(0,1fr) minmax(0,1.15fr);gap:6%;align-items:start}
.home-slideshow{position:sticky;top:24px;min-width:0}
.prose{font-size:17px;line-height:1.75;font-weight:400}
.prose h2{font-size:clamp(1.5rem,3vw,2.5rem);margin-bottom:25px}
.prose strong,.prose b{font-weight:700}
.top-media{padding:0 9% 30px}
.source-content{padding:40px 9% 55px}
.source-content>.prose{max-width:950px;margin:auto}
.projects-section{padding-top:48px}
.project-card h2{font-size:1.2rem;margin:20px 0 0;line-height:1.45}
.card-image{aspect-ratio:1.35}
.project-videos{padding-top:40px;padding-bottom:60px}
.music-source-section{padding:20px 9% 65px}
.music-source-section+.music-source-section{border-top:1px solid var(--line);padding-top:55px}
.music-source-section>.prose{margin-bottom:30px}
.music-source-section .videos{margin-top:40px}
.contact{padding:50px 9%;gap:25px}
.contact h2{font-size:2rem;line-height:1.3}
.slideshow{width:100%;min-width:0;background:#e8ece5;border:1px solid var(--line);overflow:hidden}
.slideshow-track{display:flex;overflow-x:auto;scroll-snap-type:x mandatory}
.slide{flex:0 0 100%;min-width:0;display:block;scroll-snap-align:start;height:clamp(300px,47vw,590px);background:#e8ece5}
.slide img{width:100%;height:100%;padding:16px;object-fit:contain}
.slideshow.is-enhanced .slideshow-track{display:block;overflow:hidden}
.slideshow [hidden]{display:none!important}
.slideshow-controls{display:flex;align-items:center;justify-content:center;gap:12px;padding:14px 16px;border-top:1px solid var(--line);flex-wrap:wrap;background:var(--bg)}
.slideshow-controls button,.slide-selectors button{background:transparent;border:1px solid #a8b3a6;color:var(--ink);min-width:44px;min-height:44px;padding:7px 14px;cursor:pointer;border-radius:0;font:14px 'Montserrat',sans-serif}
.slideshow-controls button:hover,.slide-selectors button:hover{background:#e3edda}
.slideshow-controls button[data-play]{margin-left:8px;min-width:80px}
.slide-counter{min-width:70px;text-align:center;font-size:14px;font-variant-numeric:tabular-nums}
.slide-selectors{display:flex;justify-content:center;gap:7px;flex-wrap:wrap;padding:0 14px 16px;background:var(--bg)}
.slide-selectors button{min-width:36px;min-height:36px;padding:5px 9px;font-size:12px}
.slide-selectors button[aria-current="true"]{background:var(--ink);border-color:var(--ink);color:white}
.single-photo .slide{height:clamp(300px,47vw,590px)}
.home-content .slide{height:480px}
.videos .video:only-child{grid-column:1/-1;max-width:900px;width:100%;margin:auto}
@media(max-width:1000px){.brand{font-size:21px}.header nav{gap:20px;font-size:13px}.home-content{grid-template-columns:1fr}.home-slideshow{position:static;margin-bottom:35px}.home-content .slide{height:460px}.top-media{padding:0 6% 25px}.source-content{padding:35px 6% 50px}}
@media(max-width:650px){.header{flex-direction:column;align-items:flex-start;gap:16px;padding:22px 6% 18px}.header .brand{font-size:23px}.header nav{gap:26px;font-size:12px}.header nav>a{padding:4px 0}.page-intro{padding:40px 6% 28px}.page-intro h1{font-size:2.45rem}.project-intro{padding:26px 6%}.project-intro h1{font-size:2.1rem;overflow-wrap:normal;word-break:normal}.home-content{padding:0 6% 40px;gap:0}.home-content .slide,.slide,.single-photo .slide{height:350px}.slide img{padding:8px}.slideshow-controls{padding:10px;gap:8px}.slide-selectors{gap:5px;padding:0 10px 12px}.slide-selectors button{min-width:36px;min-height:36px}.prose{font-size:16px}.music-source-section{padding:8px 6% 45px}.music-source-section+.music-source-section{padding-top:40px}.contact{padding:40px 6%}.contact h2{font-size:1.8rem}.project-card h2{font-size:1.15rem}.footer-name{font-size:20px}}

/* Requested font: use a locally installed copy or an attached webfont project. */
@font-face{font-family:'Portfolio Neue Haas Text';font-weight:400;font-style:normal;src:local('Neue Haas Grotesk Text Pro'),local('Neue Haas Grotesk Text Pro 55 Roman'),local('NHaasGroteskTXPro-55Rg');font-display:swap}
@font-face{font-family:'Portfolio Neue Haas Text';font-weight:700;font-style:normal;src:local('Neue Haas Grotesk Text Pro Bold'),local('Neue Haas Grotesk Text Pro 75 Bold'),local('NHaasGroteskTXPro-75Bd');font-display:swap}
:root{--portfolio-font:'neue-haas-grotesk-text','Portfolio Neue Haas Text','Neue Haas Grotesk Text Pro','Neue Haas Grotesk Text','Montserrat',sans-serif}
body,h1,h2,h3,.brand,.footer-name,.slideshow-controls button,.slide-selectors button{font-family:var(--portfolio-font)}
.header nav{font-family:var(--portfolio-font)}
.page-intro h1,.project-intro h1{animation:heading-enter .7s cubic-bezier(.16,1,.3,1) both}
@keyframes heading-enter{from{opacity:0;transform:translateY(16px)}to{opacity:1;transform:translateY(0)}}
.reveal-pending{opacity:0;transform:translate3d(0,22px,0)}
.reveal-pending,.is-revealed{transition:opacity .7s cubic-bezier(.16,1,.3,1),transform .7s cubic-bezier(.16,1,.3,1);transition-delay:var(--reveal-delay,0ms)}
.is-revealed{opacity:1;transform:none}
.project-card .card-arrow{transition:transform .25s ease,background .25s ease}
.project-card:hover .card-arrow,.project-card:focus-visible .card-arrow{transform:rotate(45deg);background:var(--accent)}
.project-card:hover h2{text-decoration:underline;text-underline-offset:5px;text-decoration-thickness:1px}
.slideshow.is-enhanced .slide:not([hidden]) img{animation:slide-enter .4s cubic-bezier(.2,.7,.3,1)}
@keyframes slide-enter{from{opacity:.4;transform:scale(.985)}to{opacity:1;transform:scale(1)}}
.slideshow-controls button,.slide-selectors button{transition:background .18s ease,transform .18s ease}
.slideshow-controls button:active,.slide-selectors button:active{transform:scale(.94)}
.photo-dialog{border:0;padding:0;background:#111715;color:#fff;max-width:94vw;width:1180px;max-height:94vh;overflow:auto;box-shadow:0 20px 80px #0008}
.photo-dialog[open]{animation:photo-open .3s cubic-bezier(.16,1,.3,1)}
.photo-dialog::backdrop{background:#0c1416d9;backdrop-filter:blur(8px);animation:backdrop-open .25s ease}
.photo-dialog.is-closing{animation:photo-close .16s ease both}
.photo-dialog.is-closing::backdrop{animation:backdrop-close .16s ease both}
.photo-dialog-header{display:flex;align-items:center;justify-content:space-between;gap:20px;padding:14px 20px;border-bottom:1px solid #374039}
.photo-dialog-title{font-size:14px;margin:0;font-weight:400;max-width:75%;line-height:1.45}
.photo-dialog-close{border:1px solid #6b776e;background:transparent;color:white;font:14px var(--portfolio-font);min-height:44px;padding:10px 16px;cursor:pointer}
.photo-dialog-close:hover{background:#354039}
.photo-dialog-image{width:100%;height:72vh;object-fit:contain;padding:12px}
.photo-dialog-footer{display:flex;justify-content:flex-end;padding:12px 20px;font-size:14px;border-top:1px solid #374039}
.photo-dialog-footer a{text-decoration:underline;text-underline-offset:4px}
body.photo-open{overflow:hidden}
@keyframes photo-open{from{opacity:0;transform:translateY(16px) scale(.965)}to{opacity:1;transform:none}}
@keyframes photo-close{to{opacity:0;transform:translateY(10px) scale(.98)}}
@keyframes backdrop-open{from{opacity:0}to{opacity:1}}
@keyframes backdrop-close{to{opacity:0}}
@view-transition{navigation:auto}
::view-transition-old(root){animation:page-out .18s ease both}
::view-transition-new(root){animation:page-in .28s ease both}
@keyframes page-out{to{opacity:0}}
@keyframes page-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:none}}
@media(max-width:650px){.photo-dialog{max-width:96vw;max-height:94vh}.photo-dialog-header{padding:10px 12px;gap:12px}.photo-dialog-title{font-size:12px}.photo-dialog-image{height:65vh}}
@media(prefers-reduced-motion:reduce){.reveal-pending{opacity:1;transform:none}::view-transition-old(root),::view-transition-new(root){animation:none!important}.photo-dialog::backdrop{animation:none!important}}

/* Source-ordered sections and scroll choreography. */
:root{--header-height:100px}
body{padding-top:var(--header-height)}
.header{position:fixed;inset:0 0 auto;z-index:40;background:rgba(247,248,245,.94);backdrop-filter:blur(18px);animation:header-descend .85s cubic-bezier(.16,1,.3,1) both;transition:box-shadow .35s,background .35s}
.header.is-scrolled{background:rgba(247,248,245,.98);box-shadow:0 5px 28px #15201c0d}
.scroll-progress{position:absolute;bottom:-1px;left:0;right:0;height:2px;background:var(--accent);transform-origin:left;transform:scaleX(var(--scroll-progress,0))}
.skip{position:fixed;z-index:60}
@keyframes header-descend{from{transform:translateY(-100%)}to{transform:translateY(0)}}
.page-intro,.project-intro{padding:64px 9% 42px}
.section-intro{font-size:clamp(17px,1.8vw,23px);max-width:680px;line-height:1.65;color:var(--muted);margin:25px 0 0;animation:heading-enter 1s cubic-bezier(.16,1,.3,1) both}
.page-intro h1,.project-intro h1{translate:0 calc(var(--intro-shift,0px)*-1)}
.page-blocks{padding:0 9% 72px}
.content-block{min-width:0;margin:0 0 48px}
.content-block:last-child{margin-bottom:0}
.block-text{max-width:1000px;margin-left:auto;margin-right:auto}
.source-columns{display:grid;grid-template-columns:var(--columns,1fr 1fr);gap:32px;align-items:start}
.source-column{min-width:0}
.source-column .content-block{margin-bottom:28px}
.source-column .content-block:last-child{margin-bottom:0}
.content-block .videos{margin-top:0}
.source-column .videos{grid-template-columns:1fr;gap:12px}
.source-photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:20px}
.source-photo-grid.count-1{grid-template-columns:1fr}
.source-photo-grid.count-2{grid-template-columns:repeat(2,minmax(0,1fr))}
.source-photo-grid .slide,.single-photo .slide{height:auto;overflow:hidden}
.source-photo-grid .slide img,.single-photo .slide img{height:auto;width:100%;padding:0;object-fit:contain}
.source-photo-grid:not(.count-1) .slide{display:flex;align-items:center}
.source-photo-grid:not(.count-1) .slide img{max-height:600px;object-fit:contain}
.page-home .source-column:first-child{position:sticky;top:calc(var(--header-height) + 28px)}
.page-home .slideshow .slide{height:clamp(350px,58vh,680px)}
.page-home .slideshow .slide img{padding:0;object-fit:cover}
.slideshow-viewport{overflow:hidden}
.slideshow.is-enhanced .slideshow-track{display:flex;overflow:visible;scroll-snap-type:none;will-change:transform}
.slideshow-track .slide{flex:0 0 100%;width:100%;overflow:hidden}
.slideshow.is-enhanced .slide:not([hidden]) img{animation:none;transform:scale(var(--photo-zoom,1));transform-origin:center;will-change:transform}
.source-column .slideshow .slide{height:clamp(300px,35vw,580px)}
.card-image>img{transform:scale(var(--photo-zoom,1));will-change:transform}
.project-card:hover .card-image>img{transform:scale(1.12)}
.reveal-pending{opacity:0;transform:translate3d(0,64px,0)}
.reveal-pending,.is-revealed{transition:opacity 1s cubic-bezier(.16,1,.3,1),transform 1.1s cubic-bezier(.16,1,.3,1)}
.is-revealed{opacity:1;transform:none}
.block-text .prose{padding:8px 0}
@media(max-width:900px){.page-blocks{padding:0 6% 55px}.page-intro,.project-intro{padding:48px 6% 32px}.source-columns{gap:22px}.page-home .source-columns{grid-template-columns:1fr}.page-home .source-column:first-child{position:static}.source-photo-grid{gap:12px}}
@media(max-width:650px){:root{--header-height:124px}.header{gap:12px}.page-blocks{padding-bottom:40px}.source-columns{grid-template-columns:1fr}.content-block{margin-bottom:32px}.source-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}.section-intro{margin-top:18px}.slideshow-track .slide,.source-column .slideshow .slide{height:350px}.page-home .slideshow .slide{height:420px}.page-intro h1,.project-intro h1{translate:none}}
@media(prefers-reduced-motion:reduce){.reveal-pending{opacity:1;transform:none}.page-intro h1,.project-intro h1{translate:none}.slideshow.is-enhanced .slide img,.card-image>img,.project-card:hover .card-image>img{transform:none!important}}
