.portrait-hero,
.portrait-cta { position: relative; display: grid; min-height: 100svh; place-items: center; overflow: hidden; color: var(--white); isolation: isolate; text-align: center; }
.portrait-hero > img, .portrait-hero__overlay, .portrait-cta > img, .portrait-cta__overlay { position: absolute; inset: 0; width: 100%; height: 100%; }
.portrait-hero > img, .portrait-cta > img { object-fit: cover; }
.portrait-hero > img { object-position: center; }
.portrait-hero__overlay, .portrait-cta__overlay { z-index: 1; background: linear-gradient(to bottom, rgba(0,0,0,.28), rgba(0,0,0,.62)); }
.portrait-hero__content, .portrait-cta__content { position: relative; z-index: 2; width: min(900px, calc(100% - 2.5rem)); padding-top: 4rem; }
.portrait-hero__content h1 { font-size: clamp(3.4rem, 9vw, 8rem); }
.portrait-hero__content p:last-child { margin: 1rem 0 0; font-size: clamp(1rem, 2vw, 1.25rem); letter-spacing: .08em; text-transform: uppercase; }
.portrait-intro { display: grid; grid-template-columns: minmax(0, 1fr) minmax(280px, .75fr); gap: clamp(2.5rem, 10vw, 10rem); align-items: end; min-height: 65vh; }
.portrait-intro__text { max-width: 500px; color: var(--muted); font-size: 1.04rem; }
.portrait-intro__text p { margin: 0; }.portrait-intro__text p + p { margin-top: 1.75rem; }
.portrait-gallery { position: relative; height: 500svh; background: var(--black); }
.portrait-gallery__stage { position: sticky; top: 0; height: 100svh; overflow: hidden; color: var(--white); isolation: isolate; }
.portrait-gallery__images, .portrait-gallery__images img, .portrait-gallery__overlay { position: absolute; inset: 0; width: 100%; height: 100%; }
.portrait-gallery__images img { object-fit: cover; opacity: 0; transform: scale(1.035); transition: opacity 460ms ease, transform 700ms ease; }
.portrait-gallery__images img.is-active { opacity: 1; transform: scale(1); }
.portrait-gallery__overlay { z-index: 1; background: linear-gradient(90deg, rgba(0,0,0,.4), transparent 55%), linear-gradient(0deg, rgba(0,0,0,.45), transparent 40%); pointer-events: none; }
.portrait-gallery__ui { position: absolute; z-index: 2; right: clamp(1.25rem, 4vw, 4rem); bottom: clamp(1.6rem, 5vw, 3.5rem); display: grid; justify-items: end; gap: .65rem; }
.portrait-gallery__count { margin: 0; font-family: var(--serif); font-size: 2rem; }.portrait-gallery__count span { font-size: 3.3rem; }
.portrait-gallery__controls { display: flex; align-items: center; gap: 1rem; }.portrait-gallery__controls > button { width: 42px; height: 42px; border: 1px solid rgba(255,255,255,.5); font-size: 1.3rem; transition: background 220ms ease, color 220ms ease; }.portrait-gallery__controls > button:hover { background: var(--white); color: var(--black); }
.portrait-gallery__dots { display: flex; gap: .45rem; }.portrait-gallery__dots button { width: 22px; height: 3px; background: rgba(255,255,255,.38); transition: background 260ms ease, transform 260ms ease; }.portrait-gallery__dots button.is-active { background: var(--white); transform: scaleX(1.25); }
.portrait-quote { display: grid; min-height: 48vh; place-items: center; padding: 4rem 1.25rem; text-align: center; }.portrait-quote p { margin: 0; font-family: var(--serif); font-size: clamp(1.55rem, 3.4vw, 3.2rem); line-height: 1.1; }
.portrait-packages { background: var(--black); color: var(--white); }.portrait-package-card { display: flex; width: min(820px, 100%); align-items: end; justify-content: space-between; gap: 2rem; padding: clamp(1.75rem, 5vw, 4rem); border: 1px solid rgba(255,255,255,.2); }.portrait-package-card ul { display: grid; gap: .85rem; margin: 0; padding: 0; list-style: none; }.portrait-package-card li { padding-bottom: .85rem; border-bottom: 1px solid rgba(255,255,255,.16); }.portrait-package-card li::before { content: "✓"; margin-right: .75rem; }.portrait-package-card .button { color: var(--black); white-space: nowrap; }
.portrait-cta { min-height: 82svh; }.portrait-cta > img { filter: grayscale(1) contrast(1.05); }.portrait-cta__content h2 { max-width: 780px; margin-inline: auto; }.portrait-cta__content > p:not(.eyebrow) { margin: 1.25rem 0 0; color: rgba(255,255,255,.82); }.portrait-cta__content .button { margin-top: 2rem; color: var(--black); }
@media (max-width: 760px) { .portrait-intro { grid-template-columns: 1fr; min-height: auto; }.portrait-intro__text br, .portrait-quote br, .portrait-cta__content br { display: none; }.portrait-package-card { display: grid; align-items: stretch; }.portrait-package-card .button { width: 100%; } }
