/* Shared polish, navigation, and accessibility. */
:root { --nav-height: 96px; }
html { scroll-behavior: smooth; scroll-padding-top: calc(var(--nav-height) + 20px); }
* { box-sizing: border-box; }
:focus-visible { outline: 3px solid #957336; outline-offset: 5px; }
[id] { scroll-margin-top: calc(var(--nav-height) + 20px); }
.skip-link { position: fixed; top: 8px; left: 8px; z-index: 20000; padding: 12px 20px; background: #fff; color: #222; transform: translateY(-160%); }
.skip-link:focus { transform: translateY(0); }
.site-page { --color-light: #f6f3ee; }
.site-page .nav { position: sticky; top: 0; padding: 1.2rem 0; transition: none; }
.site-page .nav-container { gap: 24px; }
.site-page .nav-menu { gap: clamp(1rem, 2vw, 2rem); }
.site-page .nav-menu a { font-size: .76rem; white-space: nowrap; }
.site-page .nav-menu a[aria-current="page"]:not(.nav-cta) { border-bottom: 1px solid #957336; padding-bottom: 5px; }
.site-page .nav-cta:hover { color: #1a1a1a !important; }
.site-page .page-header, .site-page .book-header { padding-top: 70px; }
.site-page .footer-content { grid-template-columns: 1fr 1.5fr; }
.site-page .footer .logo-text { color: #f7f3eb; }
.site-page .footer .logo-subtitle, .site-page .footer-tagline, .site-page .footer-column a, .site-page .footer-column p, .site-page .footer-bottom p { color: #bebbb5; }
.site-page .btn-primary:hover { color: #1a1a1a; }
.site-page .intro-image img { min-height: 0; max-height: 650px; object-position: center 25%; }
.site-page .gallery-nav { top: var(--nav-height); }
.site-page .gallery-section { scroll-margin-top: calc(var(--nav-height) + 110px); }
.site-page .gallery-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 300px), 1fr)); }
.site-page .investment-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 280px), 1fr)); }
.site-page .service-image img { object-position: center 25%; transition: transform .35s ease; }
.site-page .service-card:hover img { transform: scale(1.035); }
.site-page .service-pricing .price-tag { color: #826322; }
.form-fallback { font-size: .8rem; line-height: 1.8; color: #595652; margin: 18px 0; text-align: center; }
.form-fallback a { text-decoration: underline; text-underline-offset: 3px; color: inherit; }
iframe { max-width: 100%; border: 0; }
a[href^="mailto:"] { overflow-wrap: anywhere; }
.contact-box a { overflow-wrap: anywhere; }
.site-page .blog-grid { grid-template-columns: repeat(auto-fit, minmax(min(100%, 340px), 1fr)); }
.journal-photo { width: 100%; height: 320px; object-fit: cover; object-position: center 25%; }

/* Homepage: let the portraits lead, with warm ivory and restrained gold. */
.home-page .promo-banner { background: #242321; color: #f8f3e9; padding: 11px 24px; }
.home-page .promo-content { display: flex; justify-content: center; align-items: center; gap: 24px; flex-wrap: wrap; }
.home-page .promo-text { font-size: .72rem; letter-spacing: .035em; }
.home-page .promo-text strong { letter-spacing: .14em; color: #e2c788; }
.home-page .promo-divider { margin: 0 12px; color: #9f8b60; }
.home-page .promo-btn { padding: 5px 0; border-bottom: 1px solid #b8a576; font-size: .72rem; white-space: nowrap; }
.home-page .hero { min-height: 650px; padding: 0; grid-template-columns: 1fr 1fr; background: #f6f3ee; align-items: stretch; }
.home-page .hero-content { display: flex; flex-direction: column; justify-content: center; align-items: flex-start; padding: clamp(40px, 6vw, 96px); }
.eyebrow { font-size: .65rem; font-weight: 600; letter-spacing: .18em; text-transform: uppercase; margin-bottom: 32px; color: #756448; }
.home-page .hero-title { margin-bottom: 24px; }
.home-page .hero-title-small { font-size: .82rem; letter-spacing: .15em; color: #58554e; }
.home-page .hero-title-large { font-size: clamp(4rem, 6.5vw, 7rem); line-height: 1.06; color: #242321; letter-spacing: -.035em; }
.home-page .hero-subtitle { font-size: 1rem; line-height: 1.9; max-width: 450px; margin-bottom: 26px; color: #5d5a54; }
.home-page .hero-image { height: 740px; min-height: 0; }
.home-page .hero-image img { min-height: 0; height: 100%; width: 100%; object-fit: cover; object-position: 50% 35%; }
.home-page .hero-accent { display: none; }
.home-page .hero .btn { padding: 17px 24px; font-size: .75rem; }
.text-link { font-size: .78rem; margin-top: 20px; padding-bottom: 4px; border-bottom: 1px solid #9e8a60; }
.hero-note { font-size: .63rem; color: #746b5d; margin-top: 32px; letter-spacing: .035em; }
.home-page .services-grid { grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 20px; }
.home-page .service-image { height: 440px; }
.home-page .service-title { padding: 36px 20px 24px; font-size: 1.55rem; }
.home-page .intro { background: #fff; }

/* Real, keyboard-accessible portfolio enlargement. */
.portrait-trigger { display: block; width: 100%; height: 100%; padding: 0; border: 0; background: transparent; cursor: zoom-in; }
.portrait-trigger:focus-visible { outline-offset: -5px; }
.portrait-open { overflow: hidden; }
.portrait-viewer { position: fixed; margin: auto; padding: 54px 16px 14px; border: 0; background: #1a1a1a; color: white; width: min(90vw, 1000px); max-height: 94dvh; }
.portrait-viewer::backdrop { background: rgba(0,0,0,.88); }
.portrait-viewer img { display: block; max-height: 76dvh; max-width: 100%; width: auto; height: auto; object-fit: contain; margin: auto; }
.portrait-viewer p { text-align: center; font-size: .78rem; padding-top: 12px; }
.portrait-close { position: absolute; top: 8px; right: 16px; min-height: 38px; padding: 8px 12px; background: transparent; border: 1px solid #aaa; color: white; cursor: pointer; }

@media (max-width: 1100px) {
  .home-page .hero-content { padding: 48px 32px; }
  .home-page .services-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
}
@media (max-width: 1000px) {
  .site-page .nav { padding: 1rem 0; }
  .site-page .nav-container { flex-wrap: wrap; }
  .site-page .nav-menu { position: static; width: 100%; height: auto; flex-direction: column; gap: 0; background: #fff; box-shadow: none; }
  .site-page .nav-menu a { display: block; padding: 14px 24px; }
  .site-page .nav-menu a[aria-current="page"]:not(.nav-cta) { padding-bottom: 14px; }
  .site-page .nav-toggle { display: none; min-width: 44px; min-height: 44px; justify-content: center; align-items: center; }
  .nav-ready .site-page .nav-toggle { display: flex; }
  .nav-ready .site-page .nav-menu { position: absolute; top: 100%; left: 0; right: 0; visibility: hidden; opacity: 0; box-shadow: 0 16px 24px #0001; padding: 16px; max-height: calc(100dvh - var(--nav-height)); overflow-y: auto; }
  .nav-ready .site-page .nav-menu.active { visibility: visible; opacity: 1; }
  .nav-toggle[aria-expanded="true"] span:nth-child(1) { transform: translateY(7px) rotate(45deg); }
  .nav-toggle[aria-expanded="true"] span:nth-child(2) { opacity: 0; }
  .nav-toggle[aria-expanded="true"] span:nth-child(3) { transform: translateY(-7px) rotate(-45deg); }
  .site-page .footer-content { grid-template-columns: 1fr; }
  .home-page .hero-image { order: 0; height: 650px; }
}
@media (max-width: 700px) {
  body:not(.site-page):not(.headshot-page) footer { flex-direction: column; gap: 24px; padding: 36px 24px; text-align: center; }
  body:not(.site-page):not(.headshot-page) footer .footer-links { flex-wrap: wrap; justify-content: center; max-width: 100%; }
  /* The existing Klaviyo checklist uses fixed desktop columns on phones. */
  form[data-testid="klaviyo-form-S848W3"] { padding: 60px 16px 24px !important; }
  form[data-testid="klaviyo-form-S848W3"] > div { flex-direction: column !important; }
  form[data-testid="klaviyo-form-S848W3"] > div > div:first-child { display: none !important; }
  form[data-testid="klaviyo-form-S848W3"] > div > div:nth-child(2) { width: 100% !important; max-width: 100% !important; min-width: 0 !important; padding: 0 !important; }
  form[data-testid="klaviyo-form-S848W3"] h1 { font-size: 32px !important; }
  .site-page .container, .site-page .nav-container { padding-left: 22px; padding-right: 22px; }
  .home-page .promo-banner { padding: 11px 14px; }
  .home-page .promo-content { gap: 7px 16px; }
  .home-page .promo-text { font-size: .62rem; }
  .home-page .promo-divider { margin: 0 5px; }
  .home-page .hero { grid-template-columns: 1fr; }
  .home-page .hero-content { padding: 42px 26px; }
  .home-page .hero-title-large { font-size: clamp(3.8rem, 17vw, 6rem); }
  .home-page .hero-image { height: 520px; }
  .home-page .eyebrow { margin-bottom: 24px; font-size: .61rem; }
  .home-page .hero-note { margin-top: 24px; }
  .home-page .services-grid { gap: 12px; }
  .home-page .service-image { height: 280px; }
  .home-page .service-title { font-size: 1.25rem; padding: 30px 12px 18px; }
  .site-page .gallery-nav { position: static; }
  .site-page .gallery-section { scroll-margin-top: calc(var(--nav-height) + 12px); }
  .site-page .service-detail-content { padding: 0; }
  .site-page .form-container { padding: 20px 12px; }
  .site-page .booking-grid { grid-template-columns: minmax(0,1fr); }
  .site-page .step { grid-template-columns: 44px minmax(0,1fr); gap: 12px; }
  .site-page .step-number { width: 38px; height: 38px; }
  .site-page .footer-column a { display: inline-block; padding: 5px 0; }
  .form-fallback { overflow-wrap: anywhere; }
}
@media (prefers-reduced-motion: reduce) {
  html { scroll-behavior: auto; }
  *, *::before, *::after { animation: none !important; transition: none !important; }
}

