/* Motion is ornamental: navigation and photographs remain usable without it. */
:root{--ease:cubic-bezier(.22,.68,.2,1);--paper:#f6f3eb;--ink:#29392e}
body:before{content:'';position:fixed;left:0;top:0;height:3px;width:var(--scroll-progress,0%);background:#9b7e4c;z-index:20;pointer-events:none}
header{position:sticky;top:0;z-index:10;background:rgba(246,243,235,.94);backdrop-filter:blur(16px);transition:padding .4s var(--ease),box-shadow .4s;border-bottom-color:transparent}
header.scrolled{padding-top:18px;padding-bottom:18px;box-shadow:0 1px 0 #29392e18}
nav a{position:relative;padding:8px 0}nav a:after{content:'';position:absolute;left:0;bottom:0;height:1px;width:100%;background:currentColor;transform:scaleX(0);transform-origin:left;transition:transform .3s var(--ease)}nav a:hover{text-decoration:none}nav a:hover:after{transform:scaleX(1)}
.hero{padding-top:35px;padding-bottom:95px;gap:28px;grid-template-columns:43% 1fr;align-items:center}.intro{padding-top:0}.hero h1{font-size:clamp(75px,8.3vw,132px)}.hero-image{position:relative;padding:12px;background:#fffdf7;box-shadow:0 20px 60px #28352e14;transform:rotate(1.2deg);animation:photo-arrive 1.4s var(--ease) both}.hero-image img{height:530px;display:block;object-position:center}.hero-image figcaption{padding:17px 4px 5px}.intro>*{animation:arrive .95s var(--ease) both}.intro h1{animation-delay:.1s}.intro .lede{animation-delay:.2s}.intro .button{animation-delay:.3s}.intro .edition{animation-delay:.4s}.eyebrow{color:#7b795e}.button{padding:17px 22px;border:1px solid #b5b9a7;border-radius:40px;transition:background .3s,color .3s,box-shadow .3s}.button:hover{background:var(--ink);color:var(--paper);box-shadow:0 8px 25px #28352e20}.button span{transition:transform .3s}.button:hover span{transform:translateY(4px)}
.work{padding-top:85px;padding-bottom:95px}.section-heading h2{font-size:clamp(44px,5vw,70px)}.filters{gap:8px;margin:30px 0 45px}.filters button{padding:12px 21px;border-radius:30px;border:1px solid transparent;transition:background .3s,color .3s,border-color .3s}.filters button:hover{background:#e8e9dc}.filters button.active{background:var(--ink);color:var(--paper);border-color:var(--ink)}
.gallery{grid-template-columns:repeat(6,1fr);gap:40px 26px}.gallery figure{grid-column:span 2}.gallery figure:nth-child(1),.gallery figure:nth-child(2){grid-column:span 3}.gallery .photo-frame{position:relative;display:block;border:0;padding:0;width:100%;cursor:zoom-in;text-align:left;border-radius:3px}.gallery img{height:420px;display:block;transition:transform .85s var(--ease),filter .6s}.gallery figure:nth-child(-n+2) img{height:auto;aspect-ratio:4/3}.gallery figure:hover img{transform:scale(1.045);filter:saturate(1.05)}.photo-hint{position:absolute;bottom:20px;left:20px;padding:11px 16px;border-radius:30px;background:#f7f5efee;color:var(--ink);font:11px 'DM Sans',sans-serif;opacity:0;transform:translateY(8px);transition:opacity .3s,transform .3s}.photo-frame:hover .photo-hint,.photo-frame:focus-visible .photo-hint{opacity:1;transform:translateY(0)}.gallery figcaption{font-size:14px;padding-top:18px}.gallery small{text-transform:uppercase;letter-spacing:1.5px;font-size:9px}.about{padding:85px 0 100px}.contact{position:relative;overflow:hidden;background:radial-gradient(ellipse at 50% 100%,#d7dec5,transparent 70%),#e9ecdf;padding:100px 20px}.contact h2{font-size:clamp(65px,7.5vw,104px)}footer{padding-top:50px;padding-bottom:50px}
.reveal{opacity:1;transform:none}@media(prefers-reduced-motion:no-preference){.reveal{opacity:0;transform:translateY(28px);transition:opacity .85s var(--ease),transform .85s var(--ease)}.reveal.revealed{opacity:1;transform:none}}
.viewer-open{overflow:hidden}.lightbox{border:0;width:100vw;max-width:100vw;height:100dvh;max-height:100dvh;padding:65px 5% 25px;background:#172019f5;color:#f7f5ef;overflow:auto}.lightbox::backdrop{background:#172019}.lightbox[open]{display:flex;flex-direction:column;align-items:center;animation:viewer-arrive .3s var(--ease)}.lightbox img{max-width:100%;height:calc(100dvh - 190px);min-height:100px;object-fit:contain}.lightbox p{font:24px 'Libre Caslon Display',Georgia,serif;margin:18px 0}.lightbox button{border:1px solid #f7f5ef50;background:transparent;color:inherit;padding:10px 18px;border-radius:30px;cursor:pointer;font:12px 'DM Sans',sans-serif;transition:background .2s}.lightbox button:hover{background:#ffffff20}.close-viewer{position:absolute;right:25px;top:20px}.viewer-nav{display:flex;align-items:center;gap:25px}.viewer-nav span{font-size:11px;color:#c3cbb9}
@keyframes arrive{from{opacity:0;transform:translateY(22px)}to{opacity:1;transform:translateY(0)}}@keyframes photo-arrive{from{opacity:0;transform:translateY(30px) rotate(0)}to{opacity:1;transform:translateY(0) rotate(1.2deg)}}@keyframes viewer-arrive{from{opacity:0}to{opacity:1}}
@media(max-width:750px){html{scroll-padding-top:100px}.hero{grid-template-columns:1fr;gap:20px;padding-bottom:55px}.hero h1{font-size:clamp(65px,15vw,100px)}.hero-image img{height:auto;aspect-ratio:4/3}.hero-image{margin:0 3px}.hero-image figcaption{font-size:9px}.gallery{grid-template-columns:repeat(2,1fr);gap:30px 16px}.gallery figure,.gallery figure:nth-child(-n+2){grid-column:span 1}.gallery figure:first-child{grid-column:span 2}.gallery img{height:auto;aspect-ratio:3/4}.gallery figure:nth-child(2) img{aspect-ratio:3/4;object-fit:contain;background:#e2e5dc}.gallery figcaption{font-size:12px}.photo-hint{display:none}.filters{gap:4px}.filters button{padding:10px 13px;font-size:11px}.work{padding-top:40px;padding-bottom:50px}.about{padding:40px 0 55px}.contact{padding:65px 20px}.lightbox{padding-left:15px;padding-right:15px}}
.motion-controls{display:flex;gap:16px;flex-wrap:wrap;margin-top:22px}.motion-controls button{background:none;border:0;border-bottom:1px solid #b5b9a7;padding:8px 0;color:var(--muted);font:11px 'DM Sans',sans-serif;cursor:pointer}.motion-controls button:hover{color:var(--ink)}
.story-ribbon{overflow:hidden;background:var(--ink);color:#e4e7d5;padding:23px 0;margin-bottom:25px}.story-ribbon>div{display:flex;align-items:center;gap:45px;width:max-content;animation:ribbon-travel 42s linear infinite}.story-ribbon span{font:32px 'Libre Caslon Display',Georgia,serif;white-space:nowrap;letter-spacing:.5px}.story-ribbon i{font-style:normal;color:#b3be96;font-size:25px;animation:slow-turn 18s linear infinite}.hero-image{animation:photo-arrive 1.6s var(--ease) both,photo-float 7s ease-in-out 1.6s infinite}.hero-image img{animation:living-photo 18s ease-in-out infinite;transform-origin:50% 65%}.hero-image{overflow:hidden}.button span{display:inline-block;animation:arrow-nudge 2.5s ease-in-out infinite}.intro>*{animation-duration:1.4s}.intro h1{animation-delay:.25s}.intro .lede{animation-delay:.45s}.intro .button{animation-delay:.65s}.intro .edition{animation-delay:.85s}.reveal{transition-duration:1.2s}.reveal:not(.revealed){transform:translateY(48px)}.contact{background-size:150% 150%;animation:light-shift 12s ease-in-out infinite}.gallery .photo-frame:after{content:'';position:absolute;inset:0;pointer-events:none;background:linear-gradient(110deg,transparent 30%,#ffffff24 48%,transparent 65%);transform:translateX(-130%);transition:transform 1s var(--ease)}.gallery .photo-frame:hover:after{transform:translateX(130%)}
@keyframes photo-float{0%,100%{transform:translateY(var(--hero-drift,0px)) rotate(1.2deg)}50%{transform:translateY(calc(var(--hero-drift,0px) - 13px)) rotate(-.4deg)}}
@keyframes living-photo{0%,100%{transform:scale(1)}50%{transform:scale(1.055)}}@keyframes ribbon-travel{to{transform:translateX(-50%)}}@keyframes slow-turn{to{transform:rotate(360deg)}}@keyframes arrow-nudge{0%,70%,100%{transform:translateY(0)}80%{transform:translateY(7px)}}@keyframes light-shift{0%,100%{background-position:0% 50%}50%{background-position:100% 50%}}
.motion-paused *,.motion-paused *:before,.motion-paused *:after{animation:none!important;transition:none!important}.motion-paused .reveal{opacity:1;transform:none}
@media(prefers-reduced-motion:reduce){html{scroll-behavior:auto}.reveal{opacity:1;transform:none}.motion-paused .hero-image{transform:none}.motion-paused .gallery figure:hover img{transform:none}}

