@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/font-374c6c52ce83.ttf) format('truetype');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: italic;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/font-73152f8d0c78.ttf) format('truetype');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 400;
  font-display: swap;
  src: url(/assets/font-bb8f3c3b0ca4.ttf) format('truetype');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 500;
  font-display: swap;
  src: url(/assets/font-75407d221885.ttf) format('truetype');
}
@font-face {
  font-family: 'Cormorant Garamond';
  font-style: normal;
  font-weight: 600;
  font-display: swap;
  src: url(/assets/font-705776b6237d.ttf) format('truetype');
}

/* Motion follows the visitor, without scroll locking or an autoplay carousel. */
main{animation:none}.reading-progress{position:fixed;top:0;left:0;width:100%;height:3px;background:var(--ink);transform:scaleX(0);transform-origin:left;z-index:60;pointer-events:none}.motion-ready .heading-word{display:inline-block;overflow:hidden;vertical-align:bottom;padding-bottom:.09em;margin-bottom:-.09em}.motion-ready .heading-word>span{display:inline-block;animation:word-rise 1.05s cubic-bezier(.16,1,.3,1) both;animation-delay:var(--word-delay,0ms)}.hero-intro,.wedding-opening>p,.wedding-actions,.wedding-signoff{animation:soft-arrival 1s .2s both}.hero-image{animation:photo-arrival 1.15s cubic-bezier(.2,.7,.2,1) both}.hero-image img{animation:none}.reveal{transition:opacity .85s cubic-bezier(.2,.7,.2,1),transform .85s cubic-bezier(.2,.7,.2,1),clip-path 1s;transition-delay:var(--reveal-delay,0ms)}.js .reveal.pending{opacity:0;transform:translateY(38px)}.js .gallery .reveal.pending{clip-path:inset(8% 0 0 0);transform:translateY(28px)}.gallery .reveal{clip-path:inset(0)}.service-card .card-image{transition:border-radius .5s}.service-card:hover .card-image{border-radius:50px 4px 4px 4px}.service-card .card-label span{transition:transform .4s,background .3s}.service-card:hover .card-label span{transform:rotate(90deg)}.button{position:relative;overflow:hidden;transition:background .3s,transform .3s,box-shadow .3s}.button:hover{box-shadow:0 6px 18px #00000012;transform:translateY(-3px)}.button:active{transform:translateY(0) scale(.98)}.text-link{background-image:linear-gradient(currentColor,currentColor);background-size:0 1px;background-position:left bottom;background-repeat:no-repeat;transition:background-size .4s}.text-link:hover{background-size:100% 1px}details{overflow:hidden}summary{list-style:none;position:relative;padding-right:36px}summary::-webkit-details-marker{display:none}summary:after{content:'+';position:absolute;right:3px;top:0;font-size:1.3rem;font-weight:400;transition:transform .35s}details[open]>summary:after{transform:rotate(45deg)}.lightbox[open]{animation:dialog-arrival .35s both}.lightbox::backdrop{animation:backdrop-arrival .3s both}.scroll-image{will-change:transform}header{transition:box-shadow .4s,background .4s}header.scrolled{box-shadow:0 4px 24px #00000009}.wedding-page{--bg:#fbf8f4;--ink:#51463f;--muted:#786d65;--line:#ded3c9;--accent:#eee0d7;--dark:#514940;background:var(--bg);color:var(--ink)}.wedding-page h1,.wedding-page h2,.wedding-page h3,.wedding-page .price,.wedding-page blockquote{font-family:'Cormorant Garamond',Georgia,serif;font-weight:400;letter-spacing:-.025em}.wedding-page h1{line-height:1.04;font-size:clamp(3.5rem,6.4vw,6.7rem)}.wedding-page h1 em{font-family:inherit;color:#967765}.wedding-page h2{font-size:clamp(2.8rem,4.8vw,4.8rem);line-height:1.06}.wedding-page h3{font-size:2.05rem}.wedding-page .eyebrow{font-size:.78rem;letter-spacing:.14em;font-weight:500}.wedding-page header{border-bottom-color:#eee5dc}.wedding-page .button{border-radius:50px;border-color:#ab9382;background:#80634f;color:white;font-weight:400;padding:16px 25px}.wedding-page .button:hover{background:#796353}.wedding-page .button.light,.wedding-page .button.outline{background:transparent;color:var(--ink);border-color:#c4ae9d}.wedding-page .button.light:hover,.wedding-page .button.outline:hover{background:#eaded2}.wedding-page .footer{background:#514940}.wedding-page .footer h3{font-family:'DM Sans',sans-serif;font-size:1rem}.wedding-page .footer p,.wedding-page .footer a{color:#ede5dc}.wedding-hero{padding:65px 0 75px}.wedding-hero-grid{display:grid;grid-template-columns:1fr 1fr;gap:7vw;align-items:center}.wedding-opening{max-width:565px;padding-bottom:20px}.wedding-opening>p{max-width:420px;margin-top:25px;line-height:1.8;font-size:1.03rem}.wedding-actions{display:flex;gap:25px;align-items:center;flex-wrap:wrap;margin-top:35px}.wedding-signoff{display:block;font-family:'Cormorant Garamond',Georgia,serif;font-style:italic;font-size:1.35rem;line-height:1.5;color:#806c5c;margin-top:35px}.wedding-portrait{position:relative;padding:0 0 42px 30px}.wedding-main-photo{height:640px;max-height:66vw;border-radius:240px 240px 4px 4px;overflow:hidden;background:#e5d6ca;animation:portrait-arrival 1.5s cubic-bezier(.16,1,.3,1) both}.wedding-main-photo img{width:100%;height:100%;object-fit:cover;object-position:center}.wedding-inset{position:absolute;bottom:75px;left:-40px;width:41%;aspect-ratio:4/5;border:8px solid #fbf8f4;box-shadow:0 8px 30px #51463f14;transform:rotate(-5deg);animation:inset-arrival 1.2s .3s both}.wedding-inset img{width:100%;height:100%;object-fit:cover}.portrait-caption{position:absolute;right:8px;bottom:0;font-family:'Cormorant Garamond',Georgia,serif;font-style:italic;font-size:1.3rem;color:#826e5e}.wedding-subnav{justify-content:center;gap:50px;border-top:1px solid var(--line);padding:23px 0}.wedding-introduction{text-align:center;max-width:1000px;margin:auto}.wedding-intro-copy{max-width:730px;margin:30px auto 0}.wedding-intro-copy p{margin-top:20px;line-height:1.9}.wedding-wide-photo{position:relative;height:580px;overflow:hidden;max-width:1600px;margin:auto}.wedding-wide-photo>img{width:100%;height:100%;object-fit:cover;object-position:center 50%}.wedding-wide-photo:after{content:'';position:absolute;inset:45% 0 0;background:linear-gradient(transparent,#30251d77)}.wedding-photo-note{position:absolute;left:8vw;bottom:50px;z-index:1;color:white;font-family:'Cormorant Garamond',Georgia,serif;font-size:clamp(2rem,3.6vw,3.7rem);line-height:1.1;font-style:italic}.wedding-photo-note span{display:block}.wedding-chapters{display:grid;grid-template-columns:repeat(3,1fr);gap:55px}.wedding-chapters p{margin-top:22px;color:var(--muted)}.wedding-work{background:#f3ebe3}.wedding-work .gallery{gap:24px}.wedding-work .gallery img{height:430px;border-radius:3px}.wedding-work .gallery button:first-child img{border-radius:180px 180px 3px 3px}.wedding-work .gallery button:nth-child(5) img{border-radius:3px 3px 160px 160px}.wedding-quote{text-align:center}.wedding-quote blockquote{font-size:clamp(2rem,3.4vw,3.4rem);line-height:1.24;max-width:960px;margin:30px auto;font-style:italic}.wedding-quote p{font-size:.9rem;color:var(--muted)}.wedding-section-heading{max-width:750px;margin:auto;text-align:center}.wedding-section-heading>p{max-width:625px;margin:25px auto 0;color:var(--muted)}.wedding-page .pricing-grid{margin-top:55px;gap:24px}.wedding-page .price-card{background:transparent;border:1px solid var(--line);border-radius:150px 150px 6px 6px;padding:58px 28px 32px;text-align:center;align-items:center}.wedding-page .price-card.featured{background:#f0e5dc;color:var(--ink);border-color:#d8c4b5}.wedding-page .price-card.featured p{color:var(--muted)}.wedding-page .price-card .eyebrow{font-size:.72rem}.wedding-page .price-card .price{font-size:3.7rem;margin:24px 0 8px}.wedding-page .price-card ul{list-style:none;padding:0;text-align:center;font-size:.93rem;line-height:2}.wedding-page .small-note{margin:30px auto 0;text-align:center}.wedding-faq{background:#f3eee8}.faq-group{max-width:900px;margin:55px auto 0}.faq-group h3{margin-bottom:22px}.faq-group .faq{margin:0}.wedding-page summary{font-weight:400;font-size:1.03rem;line-height:1.6}.wedding-page details p{line-height:1.85;font-size:.98rem}.wedding-goodbye-photo{overflow:hidden;border-radius:220px 220px 4px 4px}.wedding-goodbye-photo img{height:570px;width:100%;object-fit:cover}.wedding-goodbye .split>div>p{margin:25px 0}.wedding-page .form{background:#fffdf9;border-radius:12px}.wedding-page input,.wedding-page select,.wedding-page textarea{background:#fbf8f4;border-color:var(--line)}
@keyframes word-rise{from{transform:translateY(115%) rotate(3deg)}to{transform:translateY(0) rotate(0)}}@keyframes soft-arrival{from{opacity:0;transform:translateY(20px)}to{opacity:1;transform:translateY(0)}}@keyframes photo-arrival{from{clip-path:inset(7% 3% 0);opacity:.4}to{clip-path:inset(0);opacity:1}}@keyframes portrait-arrival{from{opacity:0;transform:translateY(35px);clip-path:inset(8% 0 0)}to{opacity:1;transform:none;clip-path:inset(0)}}@keyframes inset-arrival{from{opacity:0;transform:translateY(30px) rotate(-9deg)}to{opacity:1;transform:translateY(0) rotate(-5deg)}}@keyframes dialog-arrival{from{opacity:0;transform:scale(.96) translateY(10px)}to{opacity:1;transform:none}}@keyframes backdrop-arrival{from{background:#0000}to{background:#000d}}
@media(max-width:1000px){.wedding-hero-grid{gap:35px}.wedding-main-photo{height:560px}.wedding-inset{left:-15px}.wedding-page .price-card{padding:48px 20px 28px}.wedding-chapters{gap:30px}.wedding-subnav{gap:28px}}
@media(max-width:760px){.wedding-hero{padding:40px 0 40px}.wedding-hero-grid{grid-template-columns:1fr;gap:35px}.wedding-opening{max-width:100%;padding:0}.wedding-opening>p{margin-top:22px}.wedding-page h1{font-size:3.65rem}.wedding-page h2{font-size:2.9rem}.wedding-actions{gap:20px;margin-top:28px}.wedding-signoff{font-size:1.25rem;margin-top:25px}.wedding-portrait{padding-left:34px;padding-bottom:40px;margin:0 0 0 10px}.wedding-main-photo{height:450px;max-height:none;border-radius:170px 170px 3px 3px}.wedding-inset{width:43%;left:-10px;bottom:62px;border-width:6px}.portrait-caption{font-size:1.05rem;right:0;bottom:0}.wedding-subnav{justify-content:flex-start;gap:25px;font-size:.85rem}.wedding-intro-copy{text-align:left}.wedding-wide-photo{height:440px}.wedding-photo-note{left:6vw;bottom:35px}.wedding-chapters{grid-template-columns:1fr;gap:45px}.wedding-chapters article{max-width:520px}.wedding-work .gallery{gap:12px}.wedding-work .gallery img{height:260px}.wedding-page .price-card{padding:52px 32px 30px;max-width:470px;width:100%;margin:auto}.wedding-page .pricing-grid{gap:30px}.wedding-goodbye-photo img{height:440px}.wedding-page .eyebrow{font-size:.75rem}.wedding-page .footer h3{font-size:1rem}.wedding-page .header-inner{gap:10px}}
@media(prefers-reduced-motion:reduce){.reading-progress{display:none}.motion-ready .heading-word>span{animation:none;transform:none}.js .reveal.pending{opacity:1;transform:none;clip-path:none}.scroll-image{transform:none!important;will-change:auto}*,*:before,*:after{animation:none!important;transition:none!important}.wedding-inset{transform:rotate(-5deg)}}
.motion-reduced .reveal.pending{opacity:1;transform:none;clip-path:none}.motion-reduced .scroll-image{transform:none!important}.motion-reduced *{animation:none!important;transition:none!important}

/* Footer artwork: white ink with its black inverted backing blended away. */
.footer .logo-window{background:transparent;mix-blend-mode:screen}
.footer .logo-window img{filter:invert(1)}
.image-caption span:only-child{background:none;border:0;border-radius:0;padding:0;backdrop-filter:none}
.film-section .section-head p{color:#c9d0c9}.film-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));gap:38px}.film-grid article{border-top:1px solid #ffffff35;padding-top:28px}.film-grid h3{margin-bottom:18px}.film-grid p{color:#c9d0c9;margin-bottom:24px}.film-grid .eyebrow{color:#d9f36f;font-size:.75rem}.film-enquiry{display:flex;align-items:center;justify-content:space-between;gap:30px;margin-top:50px;padding-top:30px;border-top:1px solid #ffffff35}.film-enquiry p{max-width:610px;color:#c9d0c9}@media(max-width:760px){.film-grid{grid-template-columns:1fr;gap:34px}.film-enquiry{align-items:flex-start;flex-direction:column}.film-section{scroll-margin-top:20px}}

/* Keep the About introduction in three balanced phrases. */
.about-copy{min-width:0;container-type:inline-size}.about-title{font-size:clamp(1.8rem,4vw,4.1rem);font-size:clamp(1.8rem,10.2cqw,4.1rem);line-height:1.12;margin-bottom:28px}.about-title-line{display:block;white-space:nowrap}.about-copy>p{max-width:560px;margin-bottom:28px}.about-portrait-frame{width:min(100%,350px);aspect-ratio:570 / 886;justify-self:center;overflow:hidden;background:transparent}.about-opening .about-portrait-frame img{width:100%;height:100%;max-height:none!important;object-fit:cover;object-position:center;display:block}@media(max-width:760px){.about-opening{padding-top:50px}.about-portrait-frame{width:min(85%,330px)}.about-title{margin-bottom:24px}}

@media(max-width:760px){.subnav{flex-wrap:wrap;overflow:visible;gap:14px 22px}.subnav a{white-space:normal}}

/* Service-card composition: preserve faces and remove built-in portrait margins. */
.service-card[href="/dogs/"] .card-image img{object-position:50% 0%;}
.service-card[href="/weddings/"] .card-image img{filter:grayscale(1);object-position:50% 50%;}
.service-card[href="/personal/"] .card-image:has(img[src*="portraits"]){background:#d9f36f;display:flex;align-items:center;padding:28px;}
.service-card[href="/personal/"] .card-image img[src*="portraits"]{display:none;}
.service-card[href="/personal/"] .card-image:has(img[src*="portraits"]):after{content:"Your world.\A Your voice.";white-space:pre-line;font-size:clamp(2rem,3.5vw,4rem);line-height:1.04;letter-spacing:-.055em;color:#161c19;}
.about-portrait-frame{overflow:hidden;aspect-ratio:570/886;max-width:430px;margin-inline:auto;width:100%;}
.about-portrait-frame .about-portrait{width:100%;height:100%;object-fit:cover;border:0;}
.personal-service .hero-image:has(img[src*="portraits"]){display:none;}
.personal-work:has(.gallery:empty){display:none;}

.personal-service .hero-image{max-width:560px;height:auto;aspect-ratio:2/3;margin-inline:auto;background:transparent}.personal-service .hero-image img{width:100%;height:100%;object-fit:contain;transform:none!important}.personal-work .gallery{grid-template-columns:repeat(2,minmax(0,1fr));max-width:1000px;margin-inline:auto}.personal-work .gallery img{width:100%;height:auto;aspect-ratio:2/3;object-fit:contain}.service-card[href="/personal/"] .card-image img{object-position:50% 10%}@media(max-width:600px){.personal-work .gallery{grid-template-columns:1fr}}
.service-card[href="/weddings/"] .card-image img{object-position:50% 100%}.short-player{width:100%;max-width:400px;aspect-ratio:9/16;margin-inline:auto;background:#000}.short-player iframe{width:100%;height:100%;border:0}.personal-film p{margin:24px 0}
/* Wedding stories: a place-led editorial section, with uncropped photographs. */
.wedding-main-photo img{filter:grayscale(1);object-position:50% 45%}
.wedding-wide-photo{max-width:1600px;margin-inline:auto;height:auto!important;aspect-ratio:2/1;overflow:hidden}
.wedding-wide-photo>img{height:100%;width:100%;object-fit:cover;object-position:50% 75%}
.wedding-photo-note{max-width:45%;font-size:clamp(22px,2.5vw,40px)}
.wedding-story-card{display:grid;grid-template-columns:1.3fr 1fr;gap:clamp(24px,5vw,80px);align-items:center;text-decoration:none;color:inherit}
.wedding-story-card img{width:100%;height:auto;aspect-ratio:3/2;object-fit:cover;display:block;transition:transform .7s ease}
.wedding-story-card>div:first-child{overflow:hidden}.wedding-story-card:hover img{transform:scale(1.025)}
.story-card-copy h3{font-size:clamp(36px,4vw,62px);line-height:1.1;margin:20px 0}.story-card-copy p{margin-bottom:28px}
.wedding-stories{display:grid;gap:72px}.story-heading{padding-block:70px 36px}.story-heading nav{margin-bottom:40px;font-size:14px}.story-heading h1{max-width:1000px;font-size:clamp(42px,5.2vw,78px);line-height:1.06;margin:24px 0}.story-lead{font-size:20px;max-width:760px}.story-byline{font-size:14px;margin-top:24px}
.story-cover img{width:100%;height:auto;display:block}.story-reading{max-width:780px;padding-block:46px}.story-reading p{line-height:1.9;font-size:17px;margin:0 0 24px}.story-reading h2{font-size:clamp(30px,3vw,44px);line-height:1.15;margin:42px 0 20px}.venue-note{border-block:1px solid #d5c7bb;margin-top:36px;padding-bottom:18px}.story-photographs{display:grid;grid-template-columns:1fr 1fr;gap:30px;align-items:start}.story-photographs figure{margin:0}.story-photographs img{width:100%;height:auto;display:block}.story-photographs figcaption{font-size:14px;padding-top:10px}.story-dashboard-link{padding:0 32px}
.dogs-page .service-hero .hero-image img{object-position:50% 100%}.dogs-page .service-hero .hero-image{aspect-ratio:2.2/1;height:auto}.dogs-page .service-hero .hero-image img{width:100%;height:100%;object-fit:cover}
@media(max-width:760px){.wedding-story-card{grid-template-columns:1fr}.wedding-wide-photo{aspect-ratio:3/2}.wedding-photo-note{font-size:23px;max-width:50%}.story-heading{padding-top:42px}.story-photographs{grid-template-columns:1fr}.dogs-page .service-hero .hero-image{aspect-ratio:3/2}.story-reading{padding-block:26px}}
@media(prefers-reduced-motion:reduce){.wedding-story-card img{transition:none}.wedding-story-card:hover img{transform:none}}
.dogs-page .service-hero .hero-image img{transform:none!important}

/* Warm invitation colour and clear, closer wedding-card framing. */
:root{--accent:#e8c9b6}
.service-card[href="/weddings/"] .card-image img{filter:grayscale(1) contrast(.9);object-position:50% 100%;transform:scale(1.65);transform-origin:43% 55%}
.service-card[href="/weddings/"]:hover .card-image img{transform:scale(1.69)}
.service-card[href="/dogs/"] .card-image img{object-position:50% 15%}
body:has(.headshots-hero) .hero-image img,body:has(.headshots-hero) .gallery img{object-fit:contain!important;transform:none!important;height:auto!important;max-height:none!important}
.headshots-hero .hero-image{height:auto!important;background:transparent;overflow:visible;max-width:650px;margin:40px auto 0}
.headshots-hero .hero-image:after{display:none}
.headshot-selection .gallery{align-items:start}
.headshot-selection .gallery button{margin-top:0!important}
.headshot-collections>.wrap{display:grid;grid-template-columns:1fr 1fr;gap:60px}
.headshot-collections p{margin:24px 0;max-width:560px}
.headshot-collections .gallery{grid-template-columns:1fr 1fr;margin:28px 0;align-items:start}
.headshot-collections .gallery:empty{display:none}
.production-empty{padding:40px;background:#eee7df;max-width:850px}
.production-empty p{margin:15px 0 25px}
@media(max-width:760px){.headshot-collections>.wrap{grid-template-columns:1fr;gap:60px}}
.headshots-hero>.wrap{display:grid;grid-template-columns:1.1fr .8fr;gap:35px 7vw;align-items:center}
.headshots-hero .hero-top{display:block}.headshots-hero .hero-intro{margin:30px 0 0;max-width:480px}
.headshots-hero .hero-image{margin:0;width:100%}.headshots-hero .subnav{grid-column:1/-1}
@media(max-width:760px){.headshots-hero>.wrap{grid-template-columns:1fr}.headshots-hero .hero-image{max-width:460px;margin:auto}}
.review-slide{margin:28px auto;max-width:850px}.review-slide[hidden]{display:none}.review-slide blockquote{margin:24px auto}.review-slide figcaption{display:grid;gap:9px}.review-slide figcaption span{font-size:14px}.review-slide a{text-decoration:underline;text-underline-offset:4px}.review-controls{display:flex;align-items:center;justify-content:center;gap:14px}.review-controls[hidden]{display:none}.review-controls button{background:transparent;border:1px solid #bda18d;color:inherit;border-radius:30px;min-width:44px;min-height:44px;padding:10px 17px;cursor:pointer}.review-controls button:hover{background:#f1e5db}.review-note{font-size:12px!important;margin-top:24px}.review-slide:not([hidden]){animation:review-in .5s ease both}@keyframes review-in{from{opacity:0;transform:translateY(8px)}to{opacity:1;transform:translateY(0)}}@media(prefers-reduced-motion:reduce){.review-slide:not([hidden]){animation:none}}
.headshot-collections>.wrap{grid-template-columns:1fr}.headshot-collections .gallery{grid-template-columns:repeat(3,minmax(0,1fr))}.headshot-collections .gallery button{margin-top:0!important}.wedding-inset:has(img[alt*="reception"]){width:54%;aspect-ratio:3/2}.wedding-inset:has(img[alt*="reception"]) img{aspect-ratio:3/2;object-fit:contain}
@media(max-width:760px){.headshot-collections .gallery{grid-template-columns:repeat(2,minmax(0,1fr))}.review-controls{flex-wrap:wrap}.review-slide blockquote{font-size:30px}}

.theatre-hero .hero-image{aspect-ratio:auto;height:auto;max-width:1250px;margin-left:auto;margin-right:auto;background:transparent}.theatre-hero .hero-image img{display:block;position:static;width:100%;height:auto;max-height:none;aspect-ratio:auto;object-fit:contain;transform:none!important}.theatre-hero .hero-image:after{display:none}

.form-honey{position:absolute;left:-10000px;width:1px;height:1px;overflow:hidden}.form button:disabled{opacity:.7;cursor:default}

.production-caption{display:flex;justify-content:space-between;align-items:baseline;gap:12px 24px;flex-wrap:wrap;max-width:1250px;margin:18px auto 8px;font-size:.875rem}.production-caption .text-link{white-space:normal}

/* Story refinements and image focal point, October 2026. */
.wedding-story .story-reading h2{text-align:center;text-wrap:balance;margin-inline:auto}
.story-photo-stack{display:grid;gap:30px}
.story-photo-stack figure{width:100%}
.dogs-page .gallery img[src*="dog-5."]{object-position:center top}
.personal-film .film-social-proof{margin:24px 0;color:#f0dfce}
.film-social-proof strong{font-size:2.2rem;font-weight:500;margin-right:.2em}
