.portfolio-page{background:#fffaf3}
.portfolio-banner{position:relative;height:460px;background:#252421;overflow:hidden}
.portfolio-banner>img{position:absolute;inset:0;width:100%;height:100%;object-fit:cover;object-position:50% 29%;filter:grayscale(1) brightness(.55)}
.portfolio-banner-copy{position:relative;max-width:1300px;margin:auto;padding:95px 7%;color:white;text-align:center}
.portfolio-banner h1{font:400 clamp(55px,6.8vw,96px)/1.05 Georgia;letter-spacing:-.04em;margin:24px 0 14px}.portfolio-banner h1 em{color:white}
.portfolio-banner-copy p{margin:0 auto 28px;font:18px Georgia}
.named-gallery-section{max-width:1260px;margin:auto;padding:45px 6% 65px}
.named-gallery-heading{text-align:center;margin-bottom:40px}.named-gallery-heading p{font:italic 21px/1.5 Georgia;margin:12px auto;max-width:680px}
.named-gallery-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:50px 35px}
.named-gallery:last-child:nth-child(3n + 1){grid-column:2}
.named-gallery-image{position:relative;border:1px solid #d5c6af;padding:6px;background:#fffdf8;box-shadow:4px 5px 0 #eee4d4}
.named-gallery-image img{width:100%;height:auto;aspect-ratio:4/5;object-fit:cover}
.gallery-open{position:absolute;right:14px;bottom:16px;background:#fffaf3f0;padding:8px 12px;font-size:10px;letter-spacing:.08em;text-transform:uppercase;color:#44352d}
.named-gallery h2{text-align:center;font:17px/1.5 Georgia;letter-spacing:.13em;text-transform:uppercase;margin:20px 0 5px}
.named-gallery p{text-align:center;font:italic 15px/1.5 Georgia;letter-spacing:.04em;margin:0;max-width:none}
.named-gallery a:hover h2{color:var(--red)}.named-gallery a:hover .named-gallery-image{border-color:var(--red)}
.portfolio-detail-strip{max-width:1100px;margin:0 auto 65px;display:grid;grid-template-columns:.8fr 1.2fr;gap:7%;align-items:center;background:#eee5d8}
.portfolio-detail-strip>img{width:100%;height:auto}.portfolio-detail-strip>div{padding:30px 35px 30px 0}.portfolio-detail-strip h2{font-size:clamp(34px,4vw,54px)}
.portfolio-closing{text-align:center;position:relative;background:#f2e9dd;padding:75px 6%}.portfolio-closing h2{font-size:clamp(35px,4.5vw,62px)}
.portfolio-closing:before{content:"❧";display:block;font:35px Georgia;color:var(--red);margin-bottom:20px}
.gallery-detail-page{background:#fffaf3}.gallery-detail-intro{padding:45px 6%;text-align:center}.gallery-detail-intro h1{font-size:clamp(40px,5vw,70px)}.gallery-detail-intro p{margin:10px auto;font:italic 20px Georgia}.gallery-detail-intro>.link{margin-bottom:20px}
.wedding-story-grid{columns:3;column-gap:20px;max-width:1200px;margin:0 auto;padding:0 5% 60px}.wedding-story-grid img{display:block;width:100%;height:auto;margin:0 0 20px;break-inside:avoid}
@media(max-width:760px){.portfolio-banner{height:420px}.portfolio-banner-copy{padding:75px 6%}.portfolio-banner h1{font-size:58px}.portfolio-banner-copy p{font-size:16px}.named-gallery-section{padding:35px 6% 45px}.named-gallery-grid{grid-template-columns:repeat(2,minmax(0,1fr));gap:35px 20px}.named-gallery:last-child{grid-column:auto}.named-gallery h2{font-size:14px;letter-spacing:.08em}.named-gallery p{font-size:13px}.gallery-open{font-size:8px;right:10px;bottom:12px;padding:7px}.portfolio-detail-strip{margin:0 6% 45px;grid-template-columns:1fr;gap:0}.portfolio-detail-strip>img{max-height:470px;object-fit:cover}.portfolio-detail-strip>div{padding:30px}.wedding-story-grid{columns:2;column-gap:12px}.wedding-story-grid img{margin-bottom:12px}}
@media(max-width:450px){.named-gallery-grid{grid-template-columns:minmax(0,1fr);gap:35px}.named-gallery h2{font-size:17px}.named-gallery p{font-size:15px}.gallery-open{font-size:10px}}
.named-gallery a[href="gallery-gabby.html"] img{object-position:50% 85%}
/* Pack mixed photo proportions into flowing columns without empty grid rows. */
.wedding-story-grid.arranged-gallery{display:block;columns:3;column-gap:20px}
.wedding-story-grid.arranged-gallery img{margin:0 0 20px;break-inside:avoid}
@media(max-width:760px){.wedding-story-grid.arranged-gallery{columns:2;column-gap:12px}.wedding-story-grid.arranged-gallery img{margin-bottom:12px}}

.wedding-story-grid.justified-gallery{display:block;columns:auto}
.justified-photo-row{display:flex;gap:20px;margin-bottom:20px;align-items:flex-start}
.wedding-story-grid.justified-gallery img{display:block;height:auto;margin:0;flex:none;min-width:0}
@media(max-width:760px){.justified-photo-row{gap:12px;margin-bottom:12px}}
