.photo-preview { background: #f3f0e8; }

.photo-hero {
  position: relative;
  min-height: calc(100vh - 146px);
  display: flex;
  align-items: flex-end;
  overflow: hidden;
  color: #fff;
  background: #1a1e1a;
}
.photo-hero > img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center 58%;
  transform: scale(1.015);
}
.photo-hero-shade {
  position: absolute;
  inset: 0;
  background:
    linear-gradient(90deg, rgba(12,17,14,.86) 0%, rgba(12,17,14,.55) 43%, rgba(12,17,14,.12) 74%),
    linear-gradient(0deg, rgba(10,14,11,.55) 0%, transparent 47%);
}
.photo-hero-copy { position: relative; z-index: 2; width: min(760px, 72vw); padding: clamp(5rem, 9vw, 9rem) 6vw; }
.photo-eyebrow { margin-bottom: 1.7rem; font-size: .62rem; font-weight: 700; letter-spacing: .17em; text-transform: uppercase; }
.photo-eyebrow::before { content: ""; display: inline-block; width: 2rem; height: 1px; margin-right: .75rem; vertical-align: middle; background: currentColor; opacity: .7; }
.photo-hero h1 {
  max-width: 11ch;
  margin: 0 0 1.6rem;
  font-family: var(--serif);
  font-size: clamp(4rem, 7.2vw, 8.2rem);
  font-weight: 400;
  letter-spacing: -.055em;
  line-height: .88;
}
.photo-hero h1 em, .photo-intro h2 em { color: #b8c5a8; font-weight: 400; }
.photo-hero-summary { max-width: 37rem; margin: 0; color: rgba(255,255,255,.77); font-size: .93rem; line-height: 1.75; }
.photo-button-light { border-color: #fff; background: #fff; color: var(--ink); }
.photo-button-line { border-color: rgba(255,255,255,.58); color: #fff; }
.photo-hero-caption { position: absolute; right: 3vw; bottom: 2.5rem; z-index: 2; margin: 0; font-size: .56rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; writing-mode: vertical-rl; transform: rotate(180deg); }

.photo-intro {
  display: grid;
  grid-template-columns: minmax(0, 1.25fr) minmax(18rem, .75fr);
  gap: 10vw;
  align-items: end;
  padding: clamp(6rem, 10vw, 11rem) 6vw;
}
.photo-intro h2, .photo-section-heading h2, .photo-markets h2 {
  margin: 0;
  font-family: var(--serif);
  font-size: clamp(3.2rem, 6vw, 7rem);
  font-weight: 400;
  line-height: .94;
  letter-spacing: -.05em;
}
.photo-intro-copy > p { margin: 0 0 2.2rem; color: rgba(29,33,29,.67); font-size: .93rem; line-height: 1.9; }
.photo-text-link { display: inline-flex; gap: 2rem; padding-bottom: .65rem; border-bottom: 1px solid var(--ink); font-size: .63rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }

.profile-index {
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  margin: 0 6vw clamp(7rem, 10vw, 11rem);
  border-top: 1px solid var(--line);
  border-left: 1px solid var(--line);
}
.profile-index a {
  display: flex;
  gap: 1rem;
  align-items: center;
  min-height: 6rem;
  padding: 1.25rem;
  border-right: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
  font-family: var(--serif);
  font-size: clamp(1.05rem, 1.7vw, 1.6rem);
  transition: background 180ms ease, color 180ms ease;
}
.profile-index a:hover { background: var(--ink); color: #fff; }
.profile-index span { font-family: var(--sans); font-size: .55rem; letter-spacing: .1em; opacity: .5; }

.profile-positioning { padding: 0 6vw clamp(7rem, 10vw, 11rem); }
.positioning-lead { display: grid; grid-template-columns: .38fr 1fr; gap: 4vw; align-items: start; padding-top: 3.5rem; border-top: 1px solid var(--line); }
.positioning-lead h2 { max-width: 16ch; margin: 0; font-family: var(--serif); font-size: clamp(2.8rem, 5vw, 5.8rem); font-weight: 400; line-height: .95; letter-spacing: -.045em; }
.positioning-copy { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 3rem; max-width: 60rem; margin: 3.5rem 0 4.5rem auto; }
.positioning-copy p { margin: 0; color: rgba(29,33,29,.68); font-size: .84rem; line-height: 1.85; }
.positioning-points { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); border-top: 1px solid var(--line); border-left: 1px solid var(--line); }
.positioning-points article { min-height: 14rem; padding: 1.5rem; border-right: 1px solid var(--line); border-bottom: 1px solid var(--line); }
.positioning-points span { display: block; margin-bottom: 3rem; font-size: .56rem; letter-spacing: .1em; opacity: .5; }
.positioning-points strong { display: block; margin-bottom: .8rem; font-family: var(--serif); font-size: 1.35rem; font-weight: 400; line-height: 1.15; }
.positioning-points p { margin: 0; color: rgba(29,33,29,.61); font-size: .7rem; line-height: 1.65; }

.photo-work { padding: 0 6vw clamp(7rem, 10vw, 11rem); }
.photo-section-heading { display: grid; grid-template-columns: minmax(0, 1fr) 32%; gap: 8vw; align-items: end; margin-bottom: 3.5rem; }
.photo-section-heading > p { margin: 0 0 .5rem; color: rgba(29,33,29,.62); font-size: .86rem; line-height: 1.75; }
.photo-story-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.photo-story { position: relative; min-height: clamp(25rem, 40vw, 42rem); overflow: hidden; background: #20251f; color: #fff; }
.photo-story-wide { grid-column: 1 / -1; min-height: clamp(30rem, 54vw, 58rem); }
.photo-story-tall { min-height: clamp(34rem, 52vw, 55rem); }
.photo-story > img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 700ms cubic-bezier(.22,1,.36,1); }
.photo-story::after { content: ""; position: absolute; inset: 30% 0 0; background: linear-gradient(0deg, rgba(10,14,11,.78), transparent); }
.photo-story:hover > img { transform: scale(1.025); }
.photo-story > div { position: absolute; left: 0; right: 0; bottom: 0; z-index: 2; padding: clamp(1.5rem, 3vw, 3rem); }
.photo-story p { margin: 0 0 .55rem; font-size: .58rem; font-weight: 700; letter-spacing: .15em; text-transform: uppercase; }
.photo-story h3 { margin: 0 0 .65rem; font-family: var(--serif); font-size: clamp(2rem, 4vw, 4rem); font-weight: 400; line-height: 1; }
.photo-story span { color: rgba(255,255,255,.68); font-size: .67rem; letter-spacing: .06em; }
.photo-story:nth-child(2) img { object-position: center; }
.photo-story:nth-child(3) img { object-position: center 55%; }
.photo-story:nth-child(4) img { object-position: center 55%; }
.photo-story:nth-child(5) img { object-position: center 60%; }

.furniture-families { padding: clamp(6rem, 9vw, 10rem) 6vw; background: #eee9df; }
.furniture-family-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.furniture-family-card { overflow: hidden; background: #f8f5ee; }
.furniture-family-card img { width: 100%; aspect-ratio: 16 / 10; object-fit: cover; transition: transform 650ms cubic-bezier(.22,1,.36,1); }
.furniture-family-card:hover img { transform: scale(1.02); }
.furniture-family-card > div { min-height: 13rem; padding: clamp(1.5rem, 2.6vw, 2.7rem); }
.furniture-family-card p { margin: 0 0 1.1rem; color: rgba(29,33,29,.58); font-size: .56rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.furniture-family-card h3 { margin: 0 0 .8rem; font-family: var(--serif); font-size: clamp(2rem, 3.4vw, 3.8rem); font-weight: 400; letter-spacing: -.035em; line-height: .96; }
.furniture-family-card span { color: rgba(29,33,29,.6); font-size: .68rem; line-height: 1.55; }

.residential-profile { padding: clamp(6rem, 9vw, 10rem) 6vw; background: #e4ded1; }
.residential-projects { display: grid; grid-template-columns: 1.2fr 1fr 1fr; gap: 1rem; }
.residential-card { position: relative; min-height: clamp(30rem, 46vw, 50rem); overflow: hidden; background: #d4cec1; }
.residential-card:nth-child(2), .residential-card:nth-child(3) { min-height: clamp(26rem, 38vw, 44rem); margin-top: 6rem; }
.residential-card img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; transition: transform 650ms cubic-bezier(.22,1,.36,1); }
.residential-card:hover img { transform: scale(1.025); }
.residential-card::after { content: ""; position: absolute; inset: 30% 0 0; background: linear-gradient(0deg, rgba(10,14,11,.84), transparent); }
.residential-card-copy { position: absolute; z-index: 2; left: 0; right: 0; bottom: 0; padding: clamp(1.4rem, 2.5vw, 2.5rem); color: #fff; }
.residential-card-copy p { margin: 0 0 .55rem; font-size: .57rem; font-weight: 700; letter-spacing: .14em; text-transform: uppercase; }
.residential-card-copy h3 { margin: 0 0 .65rem; font-family: var(--serif); font-size: clamp(2rem, 3vw, 3.4rem); font-weight: 400; line-height: 1; }
.residential-card-copy span { color: rgba(255,255,255,.7); font-size: .66rem; line-height: 1.5; }
.source-note { margin: 1.2rem 0 0; color: rgba(29,33,29,.54); font-size: .61rem; line-height: 1.6; }

.commercial-profile { padding: clamp(6rem, 9vw, 10rem) 6vw; background: #20241f; color: #fff; }
.commercial-feature { display: grid; grid-template-columns: minmax(0, 1.3fr) minmax(20rem, .7fr); min-height: 38rem; margin-top: 1rem; background: #2a3029; }
.commercial-feature-reverse { grid-template-columns: minmax(20rem, .7fr) minmax(0, 1.3fr); }
.commercial-feature-reverse img { order: 2; }
.commercial-feature img { width: 100%; height: 100%; min-height: 38rem; object-fit: cover; }
.commercial-feature > div { display: flex; flex-direction: column; justify-content: center; padding: clamp(2.4rem, 5vw, 5.5rem); }
.commercial-feature > div > p { margin: 0 0 1.5rem; font-size: .6rem; font-weight: 700; letter-spacing: .13em; text-transform: uppercase; }
.commercial-feature > div > p span { display: inline-block; margin-left: .75rem; padding: .35rem .55rem; border: 1px solid rgba(255,255,255,.32); color: rgba(255,255,255,.68); }
.commercial-feature h3 { margin: 0 0 2rem; font-family: var(--serif); font-size: clamp(2.6rem, 4.6vw, 5rem); font-weight: 400; line-height: .95; letter-spacing: -.04em; }
.commercial-feature ul { margin: 0; padding: 0; list-style: none; border-top: 1px solid rgba(255,255,255,.2); }
.commercial-feature li { padding: .9rem 0; border-bottom: 1px solid rgba(255,255,255,.2); color: rgba(255,255,255,.67); font-size: .75rem; }

.millwork-profile { display: grid; grid-template-columns: minmax(0, 1.08fr) minmax(26rem, .92fr); min-height: 58rem; background: #d8cfc0; }
.millwork-image { position: relative; min-height: 50rem; }
.millwork-image img { position: absolute; inset: 0; width: 100%; height: 100%; object-fit: cover; }
.millwork-image > span { position: absolute; z-index: 2; left: 1.5rem; bottom: 1.5rem; padding: .65rem .8rem; background: rgba(20,24,20,.86); color: #fff; font-size: .54rem; font-weight: 700; letter-spacing: .12em; text-transform: uppercase; }
.millwork-copy { display: flex; flex-direction: column; justify-content: center; padding: clamp(4rem, 7vw, 8rem) 5vw; }
.millwork-copy h2 { margin: 0 0 1.8rem; font-family: var(--serif); font-size: clamp(3rem, 5vw, 6rem); font-weight: 400; line-height: .92; letter-spacing: -.05em; }
.millwork-copy > p:not(.kicker) { max-width: 37rem; margin-bottom: 2.5rem; color: rgba(29,33,29,.67); font-size: .86rem; line-height: 1.8; }
.millwork-list { border-top: 1px solid rgba(29,33,29,.24); }
.millwork-list article { display: grid; grid-template-columns: 2.2rem minmax(9rem, .8fr) 1.2fr; gap: 1rem; padding: 1.2rem 0; border-bottom: 1px solid rgba(29,33,29,.24); }
.millwork-list article > span { padding-top: .2rem; font-family: var(--serif); font-size: .7rem; opacity: .55; }
.millwork-list h3 { margin: 0; font-family: var(--serif); font-size: 1.2rem; font-weight: 400; line-height: 1.2; }
.millwork-list p { margin: 0; color: rgba(29,33,29,.58); font-size: .68rem; line-height: 1.6; }

.photo-capabilities { padding: clamp(6rem, 9vw, 10rem) 6vw; background: var(--ink); color: #fff; }
.photo-section-heading-light > p { color: rgba(255,255,255,.62); }
.photo-capability-grid { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 1px; background: rgba(255,255,255,.2); border: 1px solid rgba(255,255,255,.2); }
.photo-capability { display: block; min-width: 0; padding: 1.1rem 1.1rem 2.2rem; background: var(--ink); }
.photo-capability img { width: 100%; aspect-ratio: 4 / 3; object-fit: cover; margin-bottom: 2rem; filter: saturate(.83); transition: filter 240ms ease, transform 240ms ease; }
.photo-capability:hover img { filter: saturate(1); transform: translateY(-3px); }
.photo-capability > span { display: block; margin-bottom: 2.5rem; color: rgba(255,255,255,.42); font-family: var(--serif); font-size: .8rem; }
.photo-capability h3 { margin: 0 0 1rem; font-family: var(--serif); font-size: clamp(1.75rem, 2.7vw, 3.1rem); font-weight: 400; line-height: 1; }
.photo-capability p { max-width: 25rem; margin: 0; color: rgba(255,255,255,.57); font-size: .76rem; line-height: 1.7; }

.project-process { display: grid; grid-template-columns: .8fr 1.2fr; gap: 8vw; padding: clamp(6rem, 9vw, 10rem) 6vw; background: #e4ded1; }
.process-heading h2 { max-width: 10ch; margin: 0 0 1.8rem; font-family: var(--serif); font-size: clamp(3.2rem, 5vw, 6rem); font-weight: 400; line-height: .94; letter-spacing: -.05em; }
.process-heading > p:last-child { max-width: 30rem; color: rgba(29,33,29,.64); font-size: .82rem; line-height: 1.8; }
.process-steps { border-top: 1px solid rgba(29,33,29,.24); }
.process-steps article { display: grid; grid-template-columns: 3rem minmax(9rem, .65fr) 1fr; gap: 1.4rem; padding: 1.5rem 0; border-bottom: 1px solid rgba(29,33,29,.24); }
.process-steps span { font-family: var(--serif); font-size: .7rem; opacity: .5; }
.process-steps h3 { margin: 0; font-family: var(--serif); font-size: 1.25rem; font-weight: 400; }
.process-steps p { margin: 0; color: rgba(29,33,29,.6); font-size: .71rem; line-height: 1.65; }

.photo-markets { display: grid; grid-template-columns: .8fr 1.2fr; gap: 9vw; padding: clamp(6rem, 10vw, 11rem) 6vw; }
.photo-markets h2 { max-width: 10ch; font-size: clamp(3.2rem, 5vw, 6rem); }
.photo-market-list { border-top: 1px solid var(--line); }
.photo-market-list a { display: grid; grid-template-columns: 3rem 1fr auto; gap: 1rem; align-items: center; min-height: 7.5rem; border-bottom: 1px solid var(--line); transition: padding 180ms ease, color 180ms ease; }
.photo-market-list a:hover { padding-left: 1rem; color: var(--rust); }
.photo-market-list span { font-family: var(--serif); font-size: .75rem; opacity: .55; }
.photo-market-list strong { font-family: var(--serif); font-size: clamp(1.35rem, 2.2vw, 2.35rem); font-weight: 400; }
.photo-market-list i { font-style: normal; font-size: 1.2rem; }

.quote-panel { display: grid; grid-template-columns: .82fr 1.18fr; gap: 8vw; align-items: start; padding: clamp(6rem, 10vw, 11rem) 6vw; background: #b8573f; color: #fff; }
.quote-panel h2 { margin: 0; font-family: var(--serif); font-size: clamp(3.3rem, 6vw, 7rem); font-weight: 400; line-height: .92; letter-spacing: -.05em; }
.quote-panel h2 em { color: #f3dccd; font-weight: 400; }
.quote-intro { max-width: 34rem; margin: 2rem 0 0; color: rgba(255,255,255,.74); font-size: .82rem; line-height: 1.8; }
.quote-panel .button { border-color: #fff; background: #fff; color: var(--ink); }
.project-enquiry-form { display: grid; gap: 1rem; }
.enquiry-field-grid { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); gap: 1rem; }
.project-enquiry-form label { display: grid; gap: .55rem; color: rgba(255,255,255,.78); font-size: .57rem; font-weight: 700; letter-spacing: .11em; text-transform: uppercase; }
.project-enquiry-form input, .project-enquiry-form select, .project-enquiry-form textarea { width: 100%; min-width: 0; border: 1px solid rgba(255,255,255,.46); border-radius: 0; background: rgba(255,255,255,.08); color: #fff; font: inherit; font-size: .78rem; letter-spacing: 0; text-transform: none; }
.project-enquiry-form input, .project-enquiry-form select { min-height: 3.25rem; padding: 0 .9rem; }
.project-enquiry-form textarea { resize: vertical; min-height: 8rem; padding: .9rem; line-height: 1.6; }
.project-enquiry-form input::placeholder, .project-enquiry-form textarea::placeholder { color: rgba(255,255,255,.5); }
.project-enquiry-form input:focus, .project-enquiry-form select:focus, .project-enquiry-form textarea:focus { outline: 2px solid #fff; outline-offset: 2px; }
.project-enquiry-form select option { color: var(--ink); }
.project-enquiry-form .button { justify-content: space-between; margin-top: .5rem; cursor: pointer; }
.enquiry-note, .enquiry-status { margin: 0; color: rgba(255,255,255,.66); font-size: .6rem; line-height: 1.65; }
.enquiry-note a { border-bottom: 1px solid currentColor; color: #fff; }
.enquiry-status:empty { display: none; }

@media (max-width: 900px) {
  .photo-hero { min-height: 78vh; }
  .photo-hero-shade { background: linear-gradient(0deg, rgba(11,15,12,.85), rgba(11,15,12,.08) 83%); }
  .photo-hero-copy { width: 100%; padding: 7rem 6vw 4rem; }
  .photo-hero-caption { display: none; }
  .photo-intro, .photo-section-heading, .photo-markets, .project-process, .quote-panel { grid-template-columns: 1fr; }
  .photo-intro, .photo-section-heading, .photo-markets, .project-process, .quote-panel { gap: 2.5rem; }
  .positioning-points { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .photo-capability-grid { grid-template-columns: 1fr; }
  .photo-capability { display: grid; grid-template-columns: minmax(12rem, .8fr) 1fr; column-gap: 1.5rem; }
  .photo-capability img { grid-row: 1 / 5; margin: 0; height: 100%; }
  .photo-capability > span { margin-bottom: 1.3rem; }
  .profile-index { grid-template-columns: repeat(2, minmax(0, 1fr)); }
  .residential-projects { grid-template-columns: 1fr 1fr; }
  .residential-card:first-child { grid-column: 1 / -1; }
  .residential-card:nth-child(2), .residential-card:nth-child(3) { margin-top: 0; }
  .commercial-feature, .commercial-feature-reverse { grid-template-columns: 1fr; }
  .commercial-feature-reverse img { order: 0; }
  .commercial-feature img { min-height: 31rem; }
  .millwork-profile { grid-template-columns: 1fr; }
  .millwork-image { min-height: 46rem; }
}

@media (max-width: 640px) {
  .photo-hero { min-height: 76vh; }
  .photo-hero > img { object-position: 62% center; }
  .photo-hero h1 { font-size: clamp(3.3rem, 15vw, 5.5rem); }
  .photo-hero .button-row { flex-direction: column; align-items: stretch; }
  .photo-hero .button { width: 100%; }
  .photo-intro, .photo-work, .furniture-families, .photo-capabilities, .photo-markets, .profile-positioning, .project-process, .quote-panel { padding-left: 5vw; padding-right: 5vw; }
  .positioning-lead, .positioning-copy { grid-template-columns: 1fr; }
  .positioning-copy { gap: 1.4rem; }
  .positioning-points { grid-template-columns: 1fr; }
  .positioning-points article { min-height: 0; }
  .photo-story-grid { grid-template-columns: 1fr; }
  .photo-story-wide { grid-column: auto; }
  .photo-story, .photo-story-wide, .photo-story-tall { min-height: 28rem; }
  .furniture-family-grid { grid-template-columns: 1fr; }
  .furniture-family-card > div { min-height: 0; }
  .photo-capability { display: block; }
  .photo-capability img { height: auto; margin-bottom: 1.5rem; }
  .photo-market-list a { min-height: 6.5rem; }
  .profile-index { grid-template-columns: 1fr; margin-left: 5vw; margin-right: 5vw; }
  .profile-index a { min-height: 5rem; }
  .residential-projects { grid-template-columns: 1fr; }
  .residential-card:first-child { grid-column: auto; }
  .residential-card, .residential-card:nth-child(2), .residential-card:nth-child(3) { min-height: 29rem; }
  .commercial-feature img { min-height: 24rem; }
  .commercial-feature > div { padding: 2rem 1.4rem 2.5rem; }
  .commercial-feature > div > p span { display: block; width: max-content; margin: .65rem 0 0; }
  .millwork-image { min-height: 32rem; }
  .millwork-list article { grid-template-columns: 2rem 1fr; }
  .millwork-list article p { grid-column: 2; }
  .process-steps article { grid-template-columns: 2rem 1fr; }
  .process-steps article p { grid-column: 2; }
  .enquiry-field-grid { grid-template-columns: 1fr; }
}

@media (prefers-reduced-motion: reduce) {
  .photo-story > img, .furniture-family-card img, .photo-capability img { transition: none; }
}
