/* Shared editorial rhythm: evergreen, champagne and one warm cream. */
:root { --paper:#f7f3ea; --cream:#f7f3ea; --ink:#30362e; --line:#d8c4a7; }
body, main, main > section { background-color:#f7f3ea; color:#30362e; }
body > footer { background:#f1ebdf; border-top:1px solid #d8c4a7; }
main h1, main h2, main h3 { color:#2b372c; font-weight:400; }
main.contact-page, main .standalone-section > .shell, main .sellwood-section.shell { max-width:1200px; }
.page-heading, .contact-heading, .sellwood-heading {
 text-align:center; border-bottom:1px solid #d8c4a7; padding:0 0 28px; margin:0 0 40px;
}
.page-heading h1, .contact-heading h1, .sellwood-heading h1,
.standalone-section > .shell > h1.page-title {
 font-family:Georgia,'Times New Roman',serif; font-size:clamp(36px,4.4vw,56px);
 line-height:1.15; font-weight:400; letter-spacing:-.035em; text-align:center;
 text-decoration:none; margin:0;
}
.standalone-section > .shell > h1.page-title {
 border-bottom:1px solid #d8c4a7; padding-bottom:28px; margin-bottom:40px;
}
#portfolio .page-title { text-decoration:none; }
body.homepage main .shell { width:calc(100% - 72px); max-width:1200px; }
body.homepage .hero { padding-top:36px; padding-bottom:0; }
body.homepage .hero-image img { aspect-ratio:16 / 7.5; object-fit:cover; object-position:center 78%; }
body.homepage .hero-copy { padding:30px 0 36px; border-bottom:1px solid #d8c4a7; }
body.homepage .hero-copy h1 { max-width:980px; margin:0 auto; font-size:clamp(27px,3.1vw,40px); line-height:1.25; letter-spacing:-.025em; }
body.homepage #services { padding:40px 0 0; }
body.homepage #services > .shell { border-top:0; padding-top:0; }
body.homepage main .section-label {
 display:block; width:100%; margin:0 0 30px; padding:0; border:0;
 font:400 clamp(27px,2.7vw,34px)/1.2 Georgia,'Times New Roman',serif;
 letter-spacing:-.025em; text-transform:none; color:#2b372c; text-align:center;
}
body.homepage .services-grid { gap:48px; }
body.homepage .service-card img { aspect-ratio:1.5; object-fit:cover; }
body.homepage .service-card h2 { font-size:30px; line-height:1.2; margin:20px 0 10px; }
body.homepage .service-card p { font-size:18px; line-height:1.6; margin:0; max-width:490px; color:#4b5a4a; }
body.homepage .testimonials { padding-top:64px; padding-bottom:48px !important; }
body.homepage .testimonials > .shell { border-top:1px solid #d8c4a7; padding-top:40px; }
body.homepage .testimonial-grid { gap:40px 56px; padding:0; }
body.homepage .quote { padding:0 12px; }
body.homepage .quote blockquote { font-size:18px; line-height:1.65; margin-bottom:18px; color:#394536; }
body.homepage .quote cite { font-size:10px; line-height:1.7; letter-spacing:.1em; color:#53604f; }
body.homepage main > .closing-band { background:#2b372c; height:6px; padding:0; }
main .portfolio-item p { font-size:24px; line-height:1.3; margin-top:16px; color:#2b372c; }
main .inquiry-form { border-color:#d8c4a7; background:#f1ebdf; }
main .form-field input, main .form-field select, main .form-field textarea { background:#fcfaf4; border-color:#cec7b8; color:#30362e; }
.contact-page .inquiry-layout > aside { padding-top:0; }
.contact-page .inquiry-layout > aside .direct-contact { margin:0 0 28px; padding:0; border:0; background:transparent; width:100%; align-items:stretch; }
.contact-page .direct-contact > p.contact-hours,
.contact-page .direct-contact > a.contact-call,
.contact-page .direct-contact > a.contact-email {
 display:block; width:100%; min-width:0; min-height:0; margin:0; padding:18px 0;
 border:0; border-bottom:1px solid #d8c4a7; background:transparent;
 color:#2b372c; text-align:left; text-transform:none; letter-spacing:0;
 font:400 16px/1.6 Arial,sans-serif; text-decoration:none;
}
.contact-page .direct-contact > p.contact-hours { border-top:1px solid #d8c4a7; }
.contact-page .contact-hours span:first-child { font-weight:600; }
.contact-page .direct-contact > a.contact-call { font-size:20px; }
.contact-page .direct-contact > a.contact-email { font-size:15px; overflow-wrap:anywhere; }
.contact-page .direct-contact > a:hover { color:#65765a; background:transparent; }
.contact-page .contact-visual img { aspect-ratio:1.15; }
@media(max-width:640px) {
 .page-heading, .contact-heading, .sellwood-heading { padding-bottom:22px; margin-bottom:28px; }
 .standalone-section > .shell > h1.page-title { padding-bottom:22px; margin-bottom:28px; }
 body.homepage main .shell { width:calc(100% - 36px); }
 body.homepage .hero { padding-top:22px; }
 body.homepage .hero-image img { aspect-ratio:1.3; }
 body.homepage .hero-copy { padding:24px 0 28px; }
 body.homepage #services { padding-top:30px; }
 body.homepage main .section-label { margin-bottom:24px; }
 body.homepage .services-grid { gap:32px; }
 body.homepage .service-card h2 { font-size:27px; margin:16px 0 8px; }
 body.homepage .service-card p { font-size:17px; }
 body.homepage .testimonials { padding-top:40px; padding-bottom:32px !important; }
 body.homepage .testimonials > .shell { padding-top:30px; }
 body.homepage .testimonial-grid { gap:28px; }
 body.homepage .quote { padding:0; }
 body.homepage .quote blockquote { font-size:17px; line-height:1.65; }
 main .portfolio-item p { font-size:22px; }
 .contact-page .direct-contact > p.contact-hours,
 .contact-page .direct-contact > a.contact-call,
 .contact-page .direct-contact > a.contact-email { padding:16px 0; }
}
/* Warm service panels and a featured client-story carousel. */
body.homepage .service-card { background:#eee6d7; border-bottom:3px solid #d8c4a7; }
body.homepage .service-card h2 { margin:22px 24px 10px; }
body.homepage .service-card p { margin:0 24px 26px; max-width:none; }
body.homepage #services .section-label::after { content:''; display:block; width:64px; height:1px; margin:16px auto 0; background:#d8c4a7; }
body.homepage section.testimonials { background:#2b372c; color:#fff5e6; margin-top:64px; padding:54px 0 48px !important; }
body.homepage .testimonials > .shell { border:0; padding-top:0; }
body.homepage .testimonials .section-label { color:#d8c4a7; margin-bottom:34px; }
.testimonial-carousel { max-width:860px; margin:0 auto; touch-action:pan-y; }
.testimonial-carousel:focus-visible { outline:1px solid #d8c4a7; outline-offset:12px; }
body.homepage .testimonial-carousel .testimonial-grid { display:block; min-height:250px; }
body.homepage .testimonial-carousel .quote { padding:0 12px; text-align:center; }
body.homepage .testimonial-carousel .quote + .quote { margin-top:30px; }
body.homepage .testimonial-carousel.is-enhanced .quote + .quote { margin-top:0; }
body.homepage .testimonial-carousel .quote[hidden], .testimonial-controls[hidden] { display:none !important; }
body.homepage .testimonial-carousel .quote blockquote { max-width:820px; font-size:clamp(20px,2.1vw,27px); line-height:1.55; color:#fff5e6; margin:0 auto 24px; }
body.homepage .testimonial-carousel .quote cite { color:#d8c4a7; font-size:11px; line-height:1.7; letter-spacing:.12em; }
body.homepage .testimonial-carousel .quote .testimonial-toggle { color:#d8c4a7; }
body.homepage .testimonial-carousel .testimonial-toggle:focus-visible { outline-color:#d8c4a7; }
.testimonial-controls { display:flex; align-items:center; justify-content:center; gap:24px; margin-top:30px; }
.testimonial-controls button { display:flex; align-items:center; justify-content:center; width:46px; height:46px; padding:0; border:1px solid #d8c4a7; border-radius:50%; color:#fff5e6; background:transparent; font:30px/1 Georgia,serif; cursor:pointer; }
.testimonial-controls button:hover, .testimonial-controls button:focus-visible { color:#2b372c; background:#d8c4a7; outline-offset:4px; }
.testimonial-count { color:#d8c4a7; min-width:48px; text-align:center; font:12px/1.5 Arial,sans-serif; letter-spacing:.12em; }
@media(prefers-reduced-motion:no-preference) {
 .testimonial-carousel.is-enhanced .quote:not([hidden]) { animation:client-story-enter .32s ease-out; }
 @keyframes client-story-enter { from { opacity:0; transform:translateY(7px); } to { opacity:1; transform:translateY(0); } }
}
@media(max-width:640px) {
 body.homepage .service-card h2 { margin:18px 20px 9px; }
 body.homepage .service-card p { margin:0 20px 22px; }
 body.homepage section.testimonials { margin-top:40px; padding:38px 0 34px !important; }
 body.homepage .testimonials .section-label { margin-bottom:28px; }
 body.homepage .testimonial-carousel .testimonial-grid { min-height:0; }
 body.homepage .testimonial-carousel .quote { padding:0; }
 body.homepage .testimonial-carousel .quote blockquote { font-size:20px; line-height:1.55; }
 .testimonial-controls { margin-top:26px; }
}
/* Warmer champagne canvas and a quieter editorial type pairing. */
:root { --paper:#efe6d6; --cream:#efe6d6; --body-font:'Avenir Next','Segoe UI',Arial,sans-serif; --display-font:Baskerville,'Palatino Linotype',Palatino,Georgia,serif; }
body, main, main > section { background-color:#efe6d6; }
main { font-family:var(--body-font); }
main h1, main h2, main h3,
.page-heading h1, .contact-heading h1, .sellwood-heading h1,
.standalone-section > .shell > h1.page-title,
body.homepage main .section-label { font-family:var(--display-font); font-weight:400; }
body.homepage .hero, body.homepage #services { background:#efe6d6; }
body.homepage .hero-copy { padding:30px 0 34px; }
body.homepage .hero-copy h1 { font-size:clamp(34px,4.2vw,54px); line-height:1.12; letter-spacing:-.025em; }
body.homepage .hero-copy p.hero-location { max-width:640px; margin:14px auto 0; color:#53604f; font:400 17px/1.6 var(--body-font); text-align:center; }
body.homepage .service-card { background:#e6dac4; border-bottom-color:#b9a17d; }
body.homepage .service-card h2 { font-family:var(--display-font); font-size:34px; letter-spacing:-.02em; }
body.homepage .service-card p { font-family:var(--body-font); font-size:17px; line-height:1.7; }
body.homepage section.testimonials { margin-top:54px; padding:36px 0 30px !important; }
body.homepage .testimonials .section-label { margin-bottom:22px; font-size:32px; }
body.homepage .testimonial-carousel { max-width:960px; }
body.homepage .testimonial-carousel .testimonial-grid { min-height:180px; }
body.homepage .testimonial-carousel .quote blockquote { font-family:var(--display-font); max-width:900px; font-size:24px; line-height:1.5; margin-bottom:18px; }
body.homepage .testimonial-carousel .quote cite { font-family:var(--body-font); font-size:10px; }
.testimonial-controls { margin-top:18px; gap:16px; }
.testimonial-controls button { width:40px; height:40px; font-size:27px; }
.contact-page .form-intro, main .about-copy p { font-family:var(--body-font); }
main .inquiry-form { background:#e8ddca; }
main .form-field input, main .form-field select, main .form-field textarea { background:#f8f2e7; font-family:var(--body-font); }
body > footer { background:#e5dac6; }
.contact-footer-row p { text-transform:none; letter-spacing:0; font:400 11px/1.8 var(--body-font); }
.footer-design-credit { display:block; margin-top:3px; color:#53604f; }
@media(max-width:640px) {
 body.homepage .hero-copy { padding:24px 0 28px; }
 body.homepage .hero-copy p.hero-location { font-size:15px; line-height:1.6; margin-top:12px; }
 body.homepage .service-card h2 { font-size:30px; }
 body.homepage section.testimonials { margin-top:36px; padding:30px 0 28px !important; }
 body.homepage .testimonials .section-label { font-size:29px; margin-bottom:22px; }
 body.homepage .testimonial-carousel .testimonial-grid { min-height:0; }
 body.homepage .testimonial-carousel .quote blockquote { font-size:22px; line-height:1.5; }
}
/* A balanced footer and an overlapping-grid carousel with a stable footprint. */
body > footer .contact-footer-row { display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr); align-items:center; gap:24px; }
body > footer .footer-copyright-note { grid-column:1; margin:0; text-align:left; }
body > footer .footer-socials { grid-column:2; justify-self:center; display:flex; align-items:center; gap:8px; }
body > footer a.footer-design-credit { grid-column:3; justify-self:end; margin:0; text-align:right; color:#465b48; font:400 11px/1.8 var(--body-font,'Avenir Next',Arial,sans-serif); text-decoration:none; }
body > footer a.footer-design-credit:hover { text-decoration:underline; text-underline-offset:4px; }
body > footer a.footer-design-credit:focus-visible { outline:2px solid #2b372c; outline-offset:5px; }
body.homepage .testimonial-carousel.is-enhanced .testimonial-grid { display:grid; grid-template-columns:minmax(0,1fr); min-height:0; align-items:center; }
body.homepage .testimonial-carousel.is-enhanced .quote { grid-area:1 / 1; width:100%; margin:0; visibility:hidden; pointer-events:none; }
body.homepage .testimonial-carousel.is-enhanced .quote.is-active { visibility:visible; pointer-events:auto; }
@media(prefers-reduced-motion:no-preference) {
 body.homepage .testimonial-carousel.is-enhanced .quote { animation:none; }
 body.homepage .testimonial-carousel.is-enhanced .quote.is-active { animation:client-story-enter .32s ease-out; }
}
@media(max-width:700px) {
 body > footer .contact-footer-row { grid-template-columns:minmax(0,1fr); gap:8px; }
 body > footer .footer-copyright-note { grid-column:1; grid-row:1; text-align:center; }
 body > footer .footer-socials { grid-column:1; grid-row:2; }
 body > footer a.footer-design-credit { grid-column:1; grid-row:3; justify-self:center; text-align:center; }
}
/* The footer meets the bottom edge of short pages without a trailing band. */
html { min-height:100%; background:#e5dac6; }
body { min-height:100vh; min-height:100svh; display:flex; flex-direction:column; }
body > header { flex:0 0 auto; }
body > main { flex:1 0 auto; }
body > footer.contact-minimal-footer { flex:0 0 auto; width:100%; margin:0; padding:22px 0; }
body > footer .contact-footer-row { width:calc(100% - 72px); max-width:1200px; margin-left:auto; margin-right:auto; }
/* A single form and one compact group of direct-contact details. */
.contact-page .inquiry-layout { display:block; max-width:820px; margin:0 auto; }
.contact-page .inquiry-layout > .inquiry-form { width:100%; margin:0; }
.contact-page .contact-compact { max-width:820px; margin:0 auto 30px; text-align:center; }
.contact-page .contact-compact-links { display:flex; justify-content:center; align-items:center; flex-wrap:wrap; gap:10px 22px; }
.contact-page .contact-compact-links a { color:#2b372c; font:400 15px/1.6 var(--body-font,'Avenir Next',Arial,sans-serif); text-decoration:none; overflow-wrap:anywhere; }
.contact-page .contact-compact-links a:hover { text-decoration:underline; text-underline-offset:4px; }
.contact-page .contact-compact-links a:focus-visible { outline:2px solid #2b372c; outline-offset:4px; }
.contact-page .contact-compact-separator { display:block; width:1px; height:16px; background:#b9a17d; }
.contact-page .contact-compact p { margin:10px 0 0; color:#53604f; font:400 13px/1.7 var(--body-font,'Avenir Next',Arial,sans-serif); }
@media(max-width:640px) {
 body > footer .contact-footer-row { width:calc(100% - 36px); }
 .contact-page .contact-compact { margin-bottom:26px; }
 .contact-page .contact-compact-links { column-gap:14px; }
 .contact-page .contact-compact-links a { font-size:14px; }
}
@media(max-width:390px) {
 .contact-page .contact-compact-links { flex-direction:column; gap:6px; }
 .contact-page .contact-compact-separator { display:none; }
}
/* One consistent horizontal line of contact information. */
.contact-page .contact-compact { max-width:100%; margin:0 auto 30px; }
.contact-page .contact-compact-row { display:flex; justify-content:center; align-items:center; flex-wrap:nowrap; }
.contact-page .contact-compact-row > * { display:block; margin:0; padding:0 22px; color:#2b372c; font:400 14px/1.6 var(--body-font,'Avenir Next',Arial,sans-serif); letter-spacing:0; text-decoration:none; white-space:nowrap; }
.contact-page .contact-compact-row > * + * { border-left:1px solid #b9a17d; }
.contact-page .contact-compact-row a:hover { text-decoration:underline; text-underline-offset:4px; }
.contact-page .contact-compact-row a:focus-visible { outline:2px solid #2b372c; outline-offset:4px; }
@media(max-width:700px) {
 .contact-page .contact-compact-row { flex-wrap:wrap; gap:12px 0; }
 .contact-page .contact-compact-row > * { padding:0 12px; font-size:13px; }
 .contact-page .contact-compact-row > a:last-child { flex-basis:100%; border-left:0; text-align:center; }
}
/* A champagne mat gives the hero photograph a defined place on the page. */
body.homepage .hero-image.hero-full { padding:12px; background:#d8c4a7; border:1px solid #c2aa85; }
body.homepage .hero-image img { display:block; width:100%; }
@media(max-width:640px) { body.homepage .hero-image.hero-full { padding:7px; } }
/* Match the service photographs to the champagne-framed hero. */
body.homepage .service-card { background:#efe6d6; border:1px solid #c2aa85; }
body.homepage .service-photo-frame { padding:12px; background:#d8c4a7; border-bottom:1px solid #c2aa85; }
body.homepage .service-photo-frame img { display:block; width:100%; }
@media(max-width:640px) { body.homepage .service-photo-frame { padding:7px; } }
/* A photograph-led homepage with a single introduction. */
body.homepage .hero > .shell { max-width:1280px; }
body.homepage .hero-image.hero-full { padding:6px; }
body.homepage .hero-image img { aspect-ratio:16 / 9; object-fit:cover; object-position:center 78%; }
body.homepage .hero-copy { padding:38px 0 24px; border:0; }
body.homepage .hero-copy h1 { max-width:1000px; }
body.homepage #services.homepage-intro { background:#efe6d6; padding:0 0 56px; text-align:center; }
body.homepage .homepage-intro .shell { max-width:820px; }
body.homepage .homepage-intro p { margin:0 auto; max-width:760px; color:#4b5a4a; font:400 19px/1.7 var(--body-font,'Avenir Next',Arial,sans-serif); }
body.homepage .homepage-intro .portfolio-invitation { display:inline-block; margin-top:22px; padding:7px 0; border-bottom:1px solid #b9a17d; color:#2b372c; font:600 13px/1.5 var(--body-font,'Avenir Next',Arial,sans-serif); letter-spacing:.08em; text-decoration:none; }
body.homepage .homepage-intro .portfolio-invitation:hover { border-bottom-color:#2b372c; }
body.homepage .homepage-intro .portfolio-invitation:focus-visible { outline:2px solid #2b372c; outline-offset:5px; }
body.homepage section.testimonials { margin-top:0; }
@media(max-width:640px) {
 body.homepage .hero-image.hero-full { padding:4px; }
 body.homepage .hero-image img { aspect-ratio:4 / 3; }
 body.homepage .hero-copy { padding:28px 0 20px; }
 body.homepage #services.homepage-intro { padding-bottom:36px; }
 body.homepage .homepage-intro p { font-size:17px; line-height:1.7; }
 body.homepage .homepage-intro .portfolio-invitation { margin-top:18px; }
}
/* Consistent editorial headings, property captions and biography text. */
#about .page-heading, #about .page-heading h1 { text-align:left; }
main .portfolio-item p,
main .sellwood-heading h1,
main .standalone-section h1.page-title,
#about .page-heading h1 { font-family:var(--display-font,Baskerville,Georgia,serif); font-weight:400; letter-spacing:-.025em; }
#about .about-copy p { font:400 18px/1.75 var(--body-font,'Avenir Next',Arial,sans-serif); color:#4b5a4a; margin:0 0 20px; }
#about .about-copy p:last-child { margin-bottom:0; }
@media(max-width:640px) { #about .about-copy p { font-size:17px; } }
/* A quiet continuation of the homepage introduction. */
body.homepage .homepage-intro .portfolio-invitation {
 margin-top:18px; padding:2px 0 4px;
 font:400 22px/1.4 var(--display-font,Baskerville,Georgia,serif);
 letter-spacing:0; text-transform:none; color:#2b372c;
 border-bottom:1px solid #b9a17d;
}
@media(max-width:640px) { body.homepage .homepage-intro .portfolio-invitation { margin-top:16px; font-size:21px; } }
/* A single photographic hero with an overlapping champagne introduction. */
body.homepage .hero { padding:36px 0 58px; }
body.homepage .hero > .shell { max-width:1360px; }
body.homepage .hero-image.hero-full { padding:6px; background:#d8c4a7; }
body.homepage .hero-image img { aspect-ratio:16 / 8.5; object-fit:cover; object-position:center bottom; }
body.homepage .hero-copy.hero-panel {
 position:relative; z-index:1; width:calc(100% - 80px); max-width:840px;
 margin:-94px auto 0; padding:30px 44px 34px; display:block; text-align:center;
 background:linear-gradient(135deg,#efe3cc 0%,#e2cfae 100%);
 border:1px solid #c6ad86; box-shadow:0 14px 32px rgba(43,55,44,.09);
}
body.homepage .hero-panel h1 { margin:0; max-width:none; font-family:var(--display-font,Baskerville,Georgia,serif); font-weight:400; line-height:1.08; color:#2b372c; }
body.homepage .hero-panel .hero-heading-prefix { display:block; font-size:clamp(24px,2.6vw,32px); letter-spacing:-.015em; margin-bottom:5px; }
body.homepage .hero-panel h1 em { display:block; font-size:clamp(46px,5.4vw,70px); font-weight:400; line-height:1.08; letter-spacing:-.035em; }
body.homepage .hero-panel p { margin:18px auto 0; max-width:590px; color:#4b5a4a; font:400 17px/1.65 var(--body-font,'Avenir Next',Arial,sans-serif); }
body.homepage .hero-panel .portfolio-invitation { display:inline-block; margin-top:19px; padding:2px 0 4px; border-bottom:1px solid #b59b72; font:400 22px/1.4 var(--display-font,Baskerville,Georgia,serif); color:#2b372c; text-decoration:none; letter-spacing:0; }
body.homepage .hero-panel .portfolio-invitation:hover { border-bottom-color:#2b372c; }
body.homepage .hero-panel .portfolio-invitation:focus-visible { outline:2px solid #2b372c; outline-offset:5px; }
@media(prefers-reduced-motion:no-preference) {
 body.homepage .hero-panel { animation:hero-panel-arrive .65s ease-out both; }
 @keyframes hero-panel-arrive { from { opacity:0; transform:translateY(12px); } to { opacity:1; transform:translateY(0); } }
}
@media(max-width:640px) {
 body.homepage .hero { padding:22px 0 36px; }
 body.homepage .hero-image.hero-full { padding:4px; }
 body.homepage .hero-image img { aspect-ratio:3 / 2; object-position:center bottom; }
 body.homepage .hero-copy.hero-panel { width:100%; max-width:none; margin:0; padding:26px 20px 28px; border-top:0; box-shadow:none; }
 body.homepage .hero-panel .hero-heading-prefix { font-size:25px; }
 body.homepage .hero-panel h1 em { font-size:clamp(38px,8.6vw,50px); }
 body.homepage .hero-panel p { margin-top:16px; font-size:16px; line-height:1.65; }
 body.homepage .hero-panel .portfolio-invitation { margin-top:17px; font-size:21px; }
}
/* Final hero alignment and spacing. */
body.homepage .hero { padding-bottom:0; }
body.homepage .hero-panel h1 em { font-style:normal; }
body.homepage .hero-copy.hero-panel { margin-bottom:0; }
body.homepage .hero-panel p { width:100%; max-width:590px; margin-left:auto; margin-right:auto; text-align:center; }
body.homepage section.testimonials { margin-top:0; }
@media(max-width:640px) { body.homepage .hero { padding-bottom:0; } }
/* Crop the white strips embedded in the source photo; separate the card from the next section. */
body.homepage .hero-image img { object-fit:cover; object-position:center 75%; }
body.homepage .hero { background:#efe6d6; padding-bottom:42px; }
@media(max-width:640px) {
 body.homepage .hero-image img { aspect-ratio:8 / 5; object-position:center 50%; }
 body.homepage .hero { padding-bottom:32px; }
}
/* Align footer credits to the page edges, with social links truly centered. */
body > footer .contact-footer-row {
 width:100%; max-width:none; margin:0; padding:0 20px;
 display:grid; grid-template-columns:minmax(0,1fr) auto minmax(0,1fr);
 gap:16px; align-items:center;
}
body > footer .footer-copyright-note { grid-column:1; grid-row:1; justify-self:start; text-align:left; }
body > footer .footer-socials { grid-column:2; grid-row:1; justify-self:center; }
body > footer a.footer-design-credit { grid-column:3; grid-row:1; justify-self:end; text-align:right; }
@media(max-width:640px) {
 body > footer .contact-footer-row { padding:0 12px; gap:10px; }
 body > footer .footer-copyright-note, body > footer a.footer-design-credit { font-size:10px; line-height:1.6; }
 body > footer .footer-socials { gap:2px; }
 body > footer .social-link { width:32px; height:36px; }
}
/* Present the complete brand phrase as one featured headline. */
body.homepage .hero-panel h1 {
 font-family:var(--display-font,Baskerville,Georgia,serif);
 font-size:clamp(38px,4.7vw,62px); font-weight:400; font-style:normal;
 line-height:1.12; letter-spacing:-.03em; text-align:center;
 max-width:760px; margin:0 auto; text-wrap:balance;
}
@media(max-width:640px) {
 body.homepage .hero-panel h1 { font-size:clamp(34px,8.3vw,46px); line-height:1.14; }
}
/* A lighter photo overlap and a quieter mobile testimonial heading. */
body.homepage .hero-copy.hero-panel { margin-top:-24px; }
@media(max-width:640px) {
 body.homepage .hero-copy.hero-panel { margin-top:0; }
 body.homepage .testimonials .section-label { font-size:25px; line-height:1.2; margin-bottom:20px; }
}
/* Supporting copy shares the hero headline's editorial typeface. */
body main p,
body main blockquote,
body main cite,
body main .portfolio-item p,
body main .contact-compact-row > *,
body main .portfolio-invitation {
 font-family:var(--display-font,Baskerville,'Palatino Linotype',Palatino,Georgia,serif) !important;
}

body.homepage .hero-panel p { font-size:24px; line-height:1.5; max-width:650px; }
@media(max-width:640px) { body.homepage .hero-panel p { font-size:21px; line-height:1.5; } }

/* Separate the contact details from the inquiry heading. */
.contact-page .contact-heading { border-top:1px solid #d8c4a7; border-bottom:0; padding-top:28px; padding-bottom:0; }
@media(max-width:640px) { .contact-page .contact-heading { padding-top:22px; padding-bottom:0; } }

/* Calm contact signature and consistent, uncropped portfolio frames. */
.contact-signature { background:#e8ddca; color:#2b372c; padding:28px 24px; }
.contact-signature-inner { max-width:1000px; margin:0 auto; display:flex; align-items:center; justify-content:center; }
.contact-signature-inner > * { margin:0; padding:0 28px; font:400 18px/1.5 var(--display-font,Baskerville,Georgia,serif); color:inherit; text-decoration:none; }
.contact-signature-inner > * + * { border-left:1px solid #b9a17d; }
.contact-signature a:hover { text-decoration:underline; text-underline-offset:5px; }
.contact-signature a:focus-visible { outline:2px solid #2b372c; outline-offset:5px; }
.contact-page .contact-signature { max-width:820px; margin:30px auto 0; background:transparent; border-top:1px solid #d8c4a7; padding:26px 0 0; }
.contact-page .contact-signature-inner > * { font-size:17px; padding:0 20px; }
.project-stage { max-width:1156px; margin-inline:auto; }
.project-stage .project-photo-frame { width:100%; max-width:1040px; aspect-ratio:4 / 3; overflow:hidden; background:#efe6d6; }
.project-stage .project-photo-frame #project-main-photo { display:block; width:100%; height:100%; max-height:none; max-width:none; aspect-ratio:auto; }
.gallery-main { background:#efe6d6; aspect-ratio:4 / 3; overflow:hidden; }
.gallery-main img { display:block; width:100%; height:100%; max-height:none; aspect-ratio:auto; object-fit:contain; }
@media(max-width:700px) {
 .contact-signature { padding:25px 20px; }
 .contact-signature-inner { flex-direction:column; gap:12px; text-align:center; }
 .contact-signature-inner > *, .contact-page .contact-signature-inner > * { padding:0; font-size:18px; overflow-wrap:anywhere; }
 .contact-signature-inner > * + * { border-left:0; }
}

/* Stronger contrast and weight for Mallory's introduction. */
#about .page-heading h1 { color:#202c22; font-weight:700; }
#about .about-copy p { color:#263329; font-weight:600; }

/* Deep evergreen defines the hero against the champagne page. */
body.homepage .hero-image.hero-full { background:#485b4b; padding:3px; }
@media(max-width:640px) { body.homepage .hero-image.hero-full { padding:2px; } }

/* Keep the headline and supporting sentence together. */
body.homepage .hero-panel p { margin-top:4px; }
body.homepage .hero-panel .portfolio-invitation { margin-top:26px; }

/* More readable client credits and contact information. */
body.homepage .testimonial-carousel .quote cite { font-size:15px; line-height:1.6; letter-spacing:.04em; }
.contact-signature-inner > * { font-weight:600; color:#263329; }
@media(max-width:640px) { body.homepage .testimonial-carousel .quote cite { font-size:14px; } }

/* A slightly larger logo with balanced space above and below. */
body > header .header-inner { min-height:179px; padding-top:26px; padding-bottom:26px; }
body > header .header-inner > .brand { width:270px; height:127px; }
@media(max-width:640px) {
 body > header .header-inner { min-height:156px; padding-top:24px; padding-bottom:24px; }
 body > header .header-inner > .brand { width:230px; height:108px; }
}
@media(max-width:360px) { body > header .header-inner > .brand { width:205px; height:96px; } }

/* Anchor the dropdown closely to its menu button. */
body > header .header-inner.menu-open > .nav {
 top:var(--menu-top,calc(50% + 32px)); right:var(--menu-right,0px);
 width:240px; max-width:calc(100vw - 36px); padding:10px 16px 14px;
}
@media(max-width:640px) {
 body > header .header-inner.menu-open > .nav { top:var(--menu-top,calc(50% + 30px)); }
}

/* Warm, defined inquiry styling in the site's evergreen and champagne palette. */
.contact-page .contact-heading {
 max-width:820px; margin:0 auto 30px; padding:0 0 24px;
 border-top:0; border-bottom:1px solid #d8c4a7;
}
.contact-page .inquiry-layout > .inquiry-form {
 padding:36px; border:1px solid #b9a17d; border-left:4px solid #485b4b;
 background:linear-gradient(135deg,#eee2cd 0%,#e5d5ba 100%);
 box-shadow:0 12px 30px rgba(43,55,44,.06);
}
.contact-page .inquiry-form .form-intro {
 color:#263329; font-size:23px; line-height:1.45; margin:0 0 28px; text-align:left;
}
.contact-page .form-field label { color:#263329; font-weight:600; }
.contact-page .form-field label span { color:#55624f; font-weight:400; }
.contact-page .inquiry-form input,
.contact-page .inquiry-form select,
.contact-page .inquiry-form textarea {
 background:#faf5ea; border:1px solid #b8b5a3; color:#263329;
 transition:border-color .15s ease,background-color .15s ease;
}
.contact-page .inquiry-form input:focus,
.contact-page .inquiry-form select:focus,
.contact-page .inquiry-form textarea:focus {
 background:#fffbf3; border-color:#485b4b; outline:2px solid #485b4b; outline-offset:2px;
}
.contact-page .inquiry-form > .btn {
 width:100%; background:#2b372c; color:#f5ebd9; border:1px solid #2b372c;
 padding:15px 24px; letter-spacing:.08em;
}
.contact-page .inquiry-form > .btn:hover { background:#405542; border-color:#405542; }
@media(max-width:640px) {
 .contact-page .contact-heading { padding-top:0; padding-bottom:22px; margin-bottom:24px; }
 .contact-page .inquiry-layout > .inquiry-form { padding:25px 20px; }
 .contact-page .inquiry-form .form-intro { font-size:21px; margin-bottom:24px; }
}

/* A framed inquiry paired with a personal styling detail. */
.contact-page .inquiry-layout {
 display:grid; grid-template-columns:minmax(0,1.65fr) minmax(0,1fr);
 align-items:center; gap:36px; max-width:1100px; margin-inline:auto;
}
.contact-page .inquiry-layout > .inquiry-form {
 border:1px solid #485b4b; outline:1px solid #c5ad87; outline-offset:6px;
 background:linear-gradient(135deg,#f0e5d1,#e7d7bd);
 box-shadow:0 14px 32px rgba(43,55,44,.08); padding:32px;
}
.contact-page .inquiry-layout > .inquiry-photo {
 grid-column:2; grid-row:1; margin:0; padding:10px;
 background:#e3d2b4; border:1px solid #485b4b;
 outline:1px solid #c5ad87; outline-offset:6px;
}
.contact-page .inquiry-photo img { display:block; width:100%; height:auto; aspect-ratio:3 / 4; object-fit:contain; }
@media(max-width:800px) {
 .contact-page .inquiry-layout { grid-template-columns:minmax(0,1fr); gap:36px; max-width:720px; }
 .contact-page .inquiry-layout > .inquiry-photo { grid-column:1; grid-row:2; width:min(100%,360px); justify-self:center; }
}
@media(max-width:480px) {
 .contact-page .inquiry-layout > .inquiry-form { padding:24px 18px; }
 .contact-page .inquiry-layout > .inquiry-photo { width:min(100% - 12px,320px); }
}

/* A quieter inquiry page with one restrained border. */
.contact-page .inquiry-layout { gap:40px; }
.contact-page .inquiry-layout > .inquiry-form {
 background:#f3ecdf; border:1px solid #c9b898; outline:none;
 box-shadow:none;
}
.contact-page .inquiry-layout > .inquiry-photo {
 padding:0; border:0; outline:none; box-shadow:none; background:transparent;
 width:100%; max-width:340px; justify-self:center;
}
.contact-page .inquiry-form .form-intro { font-size:21px; }
.contact-page .inquiry-form > .btn {
 width:fit-content; min-width:180px; margin-left:0; margin-right:0;
 padding:13px 22px;
}
@media(max-width:800px) {
 .contact-page .inquiry-layout { gap:30px; }
 .contact-page .inquiry-layout > .inquiry-photo { width:min(100%,320px); }
}

/* One shared panel connects the photograph to the inquiry form. */
.contact-page .inquiry-layout {
 background:#f3ecdf; border:1px solid #c9b898;
 padding:32px; gap:32px; align-items:center;
}
.contact-page .inquiry-layout > .inquiry-form {
 padding:0; border:0; background:transparent; outline:none; box-shadow:none;
}
.contact-page .inquiry-layout > .inquiry-photo {
 width:100%; max-width:none; margin:0;
 padding:0 0 0 28px; border:0; border-left:1px solid #d8c4a7;
 background:transparent;
}
.contact-page .inquiry-photo img { width:100%; height:auto; display:block; }
@media(max-width:800px) {
 .contact-page .inquiry-layout { padding:28px; gap:28px; }
 .contact-page .inquiry-layout > .inquiry-photo {
 width:100%; max-width:none; padding:26px 0 0;
 border-left:0; border-top:1px solid #d8c4a7;
 }
 .contact-page .inquiry-photo img { max-width:360px; margin-inline:auto; }
}
@media(max-width:480px) {
 .contact-page .inquiry-layout { padding:22px 18px; }
 .contact-page .inquiry-layout > .inquiry-form { padding:0; }
}

/* A warm olive taupe keeps the photo and form together. */
.contact-page .inquiry-layout { background:#ded5c2; border-color:#ab997a; }
.contact-page .inquiry-form .form-intro,
.contact-page .form-field label { color:#2b372c; }
.contact-page .form-field label span { color:#576854; }
.contact-page .inquiry-layout > .inquiry-photo { border-left-color:#b7a484; }
.contact-page .inquiry-form input,
.contact-page .inquiry-form select,
.contact-page .inquiry-form textarea { background:#fcf8ef; border-color:#b7a484; }
.contact-page .inquiry-form > .btn { background:#2b372c; border-color:#2b372c; color:#f5ebd9; }
.contact-page .inquiry-form > .btn:hover { background:#405542; border-color:#405542; color:#f5ebd9; }
.contact-page .inquiry-form > .btn:focus-visible { outline:2px solid #2b372c; outline-offset:4px; }
.contact-page .inquiry-form .preview-status { color:#2b372c; background:transparent; border-color:#b7a484; }
.contact-page .inquiry-form .preview-status a { color:#2b372c; }
@media(max-width:800px) {
 .contact-page .inquiry-layout > .inquiry-photo { border-top-color:#b7a484; }
}
@media(max-width:640px) {
 .contact-page .inquiry-form > .btn { margin:24px auto 0; justify-content:center; }
 .contact-page .form-fields { grid-template-columns:minmax(0,1fr); gap:20px; }
 .contact-page .form-field { grid-column:1 / -1; min-width:0; }
 .contact-page .inquiry-form input,
 .contact-page .inquiry-form select,
 .contact-page .inquiry-form textarea { min-width:0; max-width:100%; }
}

/* A quiet cream mat gives the artichoke photograph a finished edge. */
.contact-page .inquiry-layout > .inquiry-photo { max-width:350px; }
.contact-page .inquiry-photo img {
 display:block; width:100%; height:auto; padding:7px;
 background:#f6efe2; border:1px solid #ad9a7d;
 box-shadow:0 5px 16px rgba(43,55,44,.08);
}
@media(max-width:800px) {
 .contact-page .inquiry-layout > .inquiry-photo { max-width:none; }
 .contact-page .inquiry-photo img { max-width:360px; }
}

/* Show every property at once on desktop, matching the mobile portfolio. */
#portfolio .property-carousel { display:block; }
#portfolio .property-carousel > .carousel-arrow { display:none; }
#portfolio #property-track.portfolio-grid {
 display:grid; grid-template-columns:repeat(2,minmax(0,1fr));
 gap:38px 28px; overflow:visible; scroll-snap-type:none; padding:4px 0 16px;
}
#portfolio #property-track .portfolio-item { width:100%; min-width:0; flex:none; }
#portfolio #property-track .portfolio-placeholder-image {
  width:100%; aspect-ratio:1.34;
  border:1px solid #c8b895;
  background:linear-gradient(145deg,#eee4d1,#e3d4b8);
}
#portfolio #property-track .portfolio-placeholder p { margin-top:16px; }

/* A full-size view keeps gallery photos legible on narrow screens. */
.project-photo-frame, .gallery-main { cursor:zoom-in; }
.project-photo-frame:focus-visible, .gallery-main:focus-visible { outline:2px solid #2b372c; outline-offset:4px; }
.gallery-zoom {
  width:100vw; max-width:none; height:100dvh; max-height:none;
  box-sizing:border-box; margin:0; padding:48px 18px 24px; border:0; background:#17251b;
  overflow:auto; text-align:center;
}
.gallery-zoom::backdrop { background:rgba(11,20,14,.92); }
.gallery-zoom img { display:block; width:100%; height:100%; object-fit:contain; cursor:zoom-in; }
.gallery-zoom.is-zoomed img { width:200%; height:200%; max-width:none; object-fit:contain; cursor:zoom-out; }
.gallery-zoom-close {
  position:fixed; top:12px; right:16px; z-index:2;
  width:44px; height:44px; padding:0; border:1px solid #d8c4a7;
  border-radius:50%; background:#2b372c; color:#f5ead7;
  font:32px/1 Arial,sans-serif; cursor:pointer;
}
.gallery-zoom-close:focus-visible { outline:2px solid #fff; outline-offset:3px; }
/* Crop some ceiling from the Westmoreland cover without altering its source. */
#portfolio .portfolio-item a[href="sellwood-moreland.html"] .sellwood-cover-frame img,
#portfolio .portfolio-item a[href="Sellwood_Moreland.html"] .sellwood-cover-frame img {
 display:block; width:100%; height:100%; aspect-ratio:auto;
 object-fit:cover; object-position:center bottom;
 transform:scale(1.35); transform-origin:center bottom;
}
@media(max-width:640px) {
 #portfolio #property-track.portfolio-grid { grid-template-columns:minmax(0,1fr); gap:32px; padding:0; }
}

/* Share the homepage card's champagne and simplify the photo frame. */
.contact-page .inquiry-layout {
 background:linear-gradient(135deg,#efe3cc 0%,#e2cfae 100%);
 border-color:#c6ad86;
}
.contact-page .inquiry-form .form-intro {
 width:100%; margin-left:auto; margin-right:auto; text-align:center;
}
.contact-page .inquiry-photo img {
 padding:0; background:transparent; border:3px solid #c6ad86;
 box-shadow:none;
}

/* The introduction spans the full form-and-photo panel. */
.contact-page .inquiry-layout > .form-intro {
 grid-column:1 / -1; grid-row:1; width:100%; max-width:900px;
 margin:0 auto 6px; color:#2b372c; text-align:center;
 font:400 23px/1.45 var(--display-font,Baskerville,Georgia,serif);
 text-wrap:balance;
}
.contact-page .inquiry-layout > .inquiry-form { grid-column:1; grid-row:2; }
.contact-page .inquiry-layout > .inquiry-photo { grid-column:2; grid-row:2; }
.contact-page .inquiry-form > .btn { margin:24px auto 0; justify-content:center; }
.contact-page .inquiry-photo img {
 box-sizing:border-box; width:100%; height:auto; aspect-ratio:auto;
 object-fit:cover; padding:0; background:transparent;
 border:4px solid #c6ad86; border-top-width:10px; border-bottom-width:10px;
}
@media(max-width:800px) {
 .contact-page .inquiry-layout > .form-intro { grid-column:1; grid-row:1; margin-bottom:0; font-size:21px; }
 .contact-page .inquiry-layout > .inquiry-form { grid-column:1; grid-row:2; }
 .contact-page .inquiry-layout > .inquiry-photo { grid-column:1; grid-row:3; }
}

/* Reveal the hero card in place when the page opens. */
body.homepage .hero-copy.hero-panel { animation:none; }
@media(prefers-reduced-motion:no-preference) {
 body.homepage .hero-copy.hero-panel { animation:hero-card-appear 1.6s ease-out .1s both; }
 @keyframes hero-card-appear {
  from { opacity:0; }
  to { opacity:1; }
 }
}

/* An even frame sits flush against the photograph on every side. */
.contact-page .inquiry-layout > .inquiry-photo {
 padding:0; border:0; background:transparent; line-height:0;
}
.contact-page .inquiry-photo img {
 display:block; width:100%; height:auto; aspect-ratio:auto;
 padding:0; background:transparent; object-fit:cover;
 border:6px solid #c6ad86; box-shadow:none;
}
@media(max-width:800px) {
 .contact-page .inquiry-layout > .inquiry-photo { padding:0; border:0; }
}

/* A quicker reveal suits the smaller mobile hero. */
@media(max-width:640px) and (prefers-reduced-motion:no-preference) {
 body.homepage .hero-copy.hero-panel { animation-duration:1.2s; }
}

/* Crop ceiling and shift the room upward inside the existing mobile photo frame. */
@media(max-width:640px) {
 body.homepage .hero-image.hero-full {
  padding:0; border:3px solid #485b4b; overflow:hidden;
 }
 body.homepage .hero-image img {
  aspect-ratio:8 / 5; object-fit:cover; object-position:center 85%;
  transform:scale(1.1); transform-origin:center center;
 }
}

/* SVG chevrons center cleanly within the testimonial circles. */
.testimonial-controls button svg { display:block; flex:none; width:20px; height:20px; }
@media(max-width:640px) { .testimonial-controls button svg { width:18px; height:18px; } }

/* Keep only a narrow band of ceiling in both hero crops. */
body.homepage .hero-image.hero-full { padding:0; border:3px solid #485b4b; overflow:hidden; }
@media(min-width:641px) {
 body.homepage .hero-image img {
  object-fit:cover; object-position:center 85%;
  transform:scale(1.1); transform-origin:center center;
 }
}
@media(max-width:640px) {
 body.homepage .hero-image img {
  object-fit:cover; object-position:center 95%;
  transform:scale(1.3); transform-origin:center center;
 }
}

/* Center the submit control across the entire inquiry card. */
.contact-page .inquiry-layout > .btn {
 grid-column:1 / -1; grid-row:3; justify-self:center;
 display:flex; align-items:center; justify-content:center;
 width:fit-content; min-width:180px; margin:0 auto;
 padding:13px 22px; background:#2b372c; border:1px solid #2b372c;
 color:#f5ebd9; cursor:pointer;
}
.contact-page .inquiry-layout > .btn:hover { background:#405542; border-color:#405542; color:#f5ebd9; }
.contact-page .inquiry-layout > .btn:focus-visible { outline:2px solid #2b372c; outline-offset:4px; }
@media(min-width:801px) {
 .contact-page .inquiry-layout > .inquiry-photo { transform:translateY(20px); }
}
@media(max-width:800px) {
 .contact-page .inquiry-layout > .btn { grid-column:1; grid-row:3; }
 .contact-page .inquiry-layout > .inquiry-photo { grid-column:1; grid-row:4; transform:none; }
}

/* Warm bronze photo edge complements the champagne panel. */
.contact-page .inquiry-photo img { border-color:#8a745a; }

/* With the heading carrying the invitation, the form starts the card. */
.contact-page .inquiry-layout > .inquiry-form { grid-row:1; }
.contact-page .inquiry-layout > .inquiry-photo { grid-row:1; }
.contact-page .inquiry-layout > .btn { grid-row:2; }
@media(max-width:800px) {
 .contact-page .inquiry-layout > .inquiry-form { grid-row:1; }
 .contact-page .inquiry-layout > .btn { grid-row:2; }
 .contact-page .inquiry-layout > .inquiry-photo { grid-row:3; }
}
