:root {
  --ink: #20201e;
  --ink-soft: #57544f;
  --paper: #f3efe8;
  --paper-light: #faf8f4;
  --stone: #c9c1b5;
  --brass: #9a754f;
  --oxblood: #57261f;
  --line: rgba(32, 32, 30, .18);
  --max: 1380px;
}
* { box-sizing: border-box; }
html { scroll-behavior: smooth; }
body { margin: 0; background: var(--paper-light); color: var(--ink); font-family: Manrope, Arial, sans-serif; line-height: 1.55; }
a { color: inherit; }
img { max-width: 100%; display: block; }
.container { width: min(calc(100% - 48px), var(--max)); margin-inline: auto; }
.skip-link { position: fixed; left: 12px; top: -50px; z-index: 100; padding: 10px 14px; background: var(--ink); color: #fff; }
.skip-link:focus { top: 12px; }
.site-header { position: sticky; top: 0; z-index: 50; background: rgba(250,248,244,.92); backdrop-filter: blur(16px); border-bottom: 1px solid transparent; transition: border-color .2s ease; }
.site-header.scrolled { border-color: var(--line); }
.header-inner { min-height: 92px; display: flex; align-items: center; justify-content: space-between; gap: 28px; }
.brand { display: inline-flex; flex-direction: column; text-decoration: none; }
.brand-name { font-size: 1rem; letter-spacing: .28em; font-weight: 600; white-space: nowrap; }
.brand-plus { color: var(--brass); }
.brand-line { margin-top: 5px; font-size: .57rem; text-transform: uppercase; letter-spacing: .23em; color: var(--ink-soft); }
.site-nav { display: flex; align-items: center; gap: 30px; }
.site-nav a { color: var(--ink); text-decoration: none; font-size: .86rem; }
.site-nav a:not(.nav-cta):hover { color: var(--brass); }
.nav-cta { padding: 12px 17px; border: 1px solid var(--ink); }
.menu-toggle { display:none; background: transparent; border: 0; padding: 0; color: var(--ink); font: inherit; cursor: pointer; -webkit-appearance: none; appearance: none; }
.hero { padding: 52px 0 28px; }
.hero-grid { display: grid; grid-template-columns: .78fr 1.22fr; min-height: 690px; }
.hero-copy { display: flex; flex-direction: column; justify-content: center; padding: 60px 9vw 60px 0; }
.eyebrow { margin: 0 0 26px; font-size: .68rem; letter-spacing: .25em; text-transform: uppercase; color: var(--brass); }
h1,h2,h3,p { margin-top: 0; }
h1,h2 { font-family: "Source Serif 4", Georgia, serif; font-weight: 400; line-height: .98; }
h1 { margin-bottom: 32px; font-size: clamp(3.5rem, 6.4vw, 7.4rem); letter-spacing: -.045em; }
h2 { margin-bottom: 28px; font-size: clamp(2.6rem, 4.5vw, 5.3rem); letter-spacing: -.04em; }
h3 { margin-bottom: 8px; font-size: 1rem; font-weight: 600; }
.hero-intro { max-width: 560px; color: var(--ink-soft); font-size: 1.05rem; }
.hero-actions { display: flex; align-items: center; gap: 24px; margin-top: 24px; }
.button { display: inline-flex; justify-content: center; align-items: center; min-height: 50px; padding: 0 22px; text-decoration: none; border: 0; font: inherit; cursor: pointer; }
.button-dark { background: var(--ink); color: #fff; }
.button-dark:hover { background: var(--oxblood); }
.text-link { color: var(--ink); text-underline-offset: 5px; }
.placeholder-image { position: relative; overflow: hidden; display:flex; align-items:flex-end; padding: 22px; color: rgba(255,255,255,.8); background: linear-gradient(145deg,#4b453d 0%,#8c7b69 42%,#2f302d 100%); }
.placeholder-image::after { content:""; position:absolute; inset:0; background: linear-gradient(90deg,rgba(255,255,255,.06) 1px,transparent 1px),linear-gradient(rgba(255,255,255,.04) 1px,transparent 1px); background-size: 52px 52px; mix-blend-mode: screen; }
.placeholder-image span { position:relative; z-index:1; font-size:.62rem; letter-spacing:.2em; text-transform:uppercase; }
.hero-image { min-height: 690px; background: linear-gradient(130deg,#5d584f,#b6a28b 48%,#343833); }
.hero-note { display: flex; justify-content: space-between; gap: 20px; padding-top: 22px; font-size: .67rem; letter-spacing: .18em; text-transform: uppercase; color: var(--ink-soft); }
.section { padding: 130px 0; }
.section-intro { background: var(--paper); }
.split-copy { display: grid; grid-template-columns: 80px 1.15fr .85fr; gap: 50px; align-items: start; }
.section-number { font-size: .68rem; letter-spacing: .2em; color: var(--brass); }
.body-copy { max-width: 520px; color: var(--ink-soft); }
.section-heading { display:flex; align-items:flex-end; justify-content:space-between; gap:30px; margin-bottom:48px; }
.section-heading h2 { max-width:850px; margin-bottom:0; }
.project-grid { display:grid; grid-template-columns: 1.4fr .8fr; gap: 28px; }
.project-card-large { grid-row: span 2; }
.project-image { min-height: 360px; }
.project-card-large .project-image { min-height: 760px; }
.image-one { background: linear-gradient(145deg,#30332f,#7e715f 48%,#c3b09a); }
.image-two { background: linear-gradient(145deg,#746c60,#30322f 52%,#a08c75); }
.image-three { background: linear-gradient(145deg,#433c35,#a38d73 48%,#5f635c); }
.project-meta { padding: 18px 0 10px; border-bottom:1px solid var(--line); }
.project-meta p { margin:0; font-size:.78rem; color:var(--ink-soft); }
.services-section { background: var(--ink); color: #f4efe7; }
.services-layout { display:grid; grid-template-columns:.8fr 1.2fr; gap:90px; }
.services-title h2 { max-width:650px; }
.service-list { border-top:1px solid rgba(255,255,255,.2); }
.service-row { display:grid; grid-template-columns:50px 1fr 1.1fr; gap:26px; padding:28px 0; border-bottom:1px solid rgba(255,255,255,.2); }
.service-row span { color:#b28d68; font-size:.72rem; }
.service-row h3 { font-family:"Source Serif 4",Georgia,serif; font-size:1.65rem; font-weight:400; }
.service-row p { color:rgba(255,255,255,.68); margin:0; font-size:.9rem; }
.process-grid { display:grid; grid-template-columns:repeat(5,1fr); border-top:1px solid var(--line); }
.process-step { padding:30px 22px 0 0; min-height:230px; border-right:1px solid var(--line); }
.process-step + .process-step { padding-left:22px; }
.process-step:last-child { border-right:0; }
.process-step span { display:block; margin-bottom:52px; font-size:.7rem; color:var(--brass); }
.process-step p { color:var(--ink-soft); font-size:.86rem; }
.statement-section { background:var(--paper); padding:0; }
.statement-grid { display:grid; grid-template-columns:1fr 1fr; align-items:stretch; }
.statement-image { min-height:560px; background:linear-gradient(140deg,#7e6c59,#302f2b 62%,#9a846c); }
blockquote { margin:0; padding:90px; display:flex; flex-direction:column; justify-content:center; }
blockquote p { font-family:"Source Serif 4",Georgia,serif; font-size:clamp(2rem,3.4vw,4rem); line-height:1.08; }
blockquote cite { font-style:normal; font-size:.68rem; text-transform:uppercase; letter-spacing:.2em; color:var(--brass); }
.contact-section { background:var(--paper-light); }
.contact-grid { display:grid; grid-template-columns:.8fr 1.2fr; gap:100px; }
.contact-intro { max-width:470px; color:var(--ink-soft); }
.contact-details { display:flex; flex-direction:column; gap:10px; margin-top:36px; font-size:.88rem; }
.enquiry-form { display:grid; gap:24px; }
.form-row { display:grid; grid-template-columns:1fr 1fr; gap:22px; }
label { display:grid; gap:9px; font-size:.72rem; text-transform:uppercase; letter-spacing:.14em; }
input,select,textarea { width:100%; border:0; border-bottom:1px solid var(--ink); background:transparent; padding:12px 2px; color:var(--ink); font:inherit; font-size:.95rem; border-radius:0; }
textarea { border:1px solid var(--line); padding:14px; resize:vertical; }
.form-note { font-size:.68rem; color:var(--ink-soft); }
.hidden { position:absolute; left:-9999px; }
.site-footer { background:#171715; color:#f4efe7; padding:70px 0 26px; }
.footer-top { display:flex; justify-content:space-between; align-items:flex-end; gap:30px; padding-bottom:60px; border-bottom:1px solid rgba(255,255,255,.16); }
.footer-top p { font-family:"Source Serif 4",Georgia,serif; font-size:1.7rem; margin:0; }
.footer-brand .brand-line { color:rgba(255,255,255,.58); }
.footer-bottom { display:flex; justify-content:space-between; gap:20px; padding-top:22px; font-size:.75rem; color:rgba(255,255,255,.65); }
.reveal { opacity:0; transform:translateY(18px); transition:opacity .7s ease, transform .7s ease; }
.reveal.visible { opacity:1; transform:none; }
@media (max-width: 980px) {
  .menu-toggle { display:block; }
  .site-nav { position:absolute; top:92px; left:0; right:0; display:none; flex-direction:column; align-items:flex-start; padding:28px 24px 34px; background:var(--paper-light); border-bottom:1px solid var(--line); }
  .site-nav.open { display:flex; }
  .hero-grid,.services-layout,.contact-grid,.statement-grid { grid-template-columns:1fr; }
  .hero-copy { padding:70px 0; }
  .hero-image { min-height:520px; }
  .split-copy { grid-template-columns:55px 1fr; }
  .split-copy .body-copy { grid-column:2; }
  .project-grid { grid-template-columns:1fr 1fr; }
  .project-card-large { grid-column:1/-1; grid-row:auto; }
  .project-card-large .project-image { min-height:560px; }
  .process-grid { grid-template-columns:repeat(2,1fr); }
  .process-step { border-bottom:1px solid var(--line); }
  blockquote { padding:70px 0; }
}
@media (max-width: 640px) {
  .container { width:min(calc(100% - 28px), var(--max)); }
  .header-inner { min-height:78px; }
  .brand-name { font-size:.84rem; }
  .brand-line { display:none; }
  .site-nav { top:78px; }
  .hero { padding-top:8px; }
  .hero-grid { min-height:0; }
  .hero-copy { padding:34px 0 42px; }
  .hero-copy .eyebrow { margin-bottom:20px; font-size:.62rem; letter-spacing:.22em; }
  h1 { margin-bottom:24px; font-size:clamp(2.85rem, 13.3vw, 3.05rem); line-height:1.01; }
  h2 { font-size:2.75rem; }
  .hero-intro { font-size:1rem; line-height:1.55; }
  .hero-actions { align-items:flex-start; flex-direction:column; gap:20px; margin-top:20px; }
  .hero-actions .button { min-height:48px; padding:0 18px; }
  .hero-image { min-height:420px; }
  .hero-note { flex-direction:column; }
  .section { padding:90px 0; }
  .split-copy { grid-template-columns:1fr; gap:24px; }
  .split-copy .body-copy { grid-column:auto; }
  .project-grid { grid-template-columns:1fr; }
  .project-card-large .project-image,.project-image { min-height:420px; }
  .section-heading { align-items:flex-start; flex-direction:column; }
  .service-row { grid-template-columns:40px 1fr; }
  .service-row p { grid-column:2; }
  .process-grid { grid-template-columns:1fr; }
  .process-step,.process-step + .process-step { padding:26px 0; border-right:0; }
  .process-step span { margin-bottom:24px; }
  .statement-image { min-height:420px; }
  blockquote { padding:60px 0; }
  .contact-grid { gap:55px; }
  .form-row { grid-template-columns:1fr; }
  .footer-top,.footer-bottom { align-items:flex-start; flex-direction:column; }
}


/* Project index and case-study pages */
.project-card-link,
.project-feature-link,
.next-project-inner {
  color: inherit;
  text-decoration: none;
}

.project-card-link {
  display: block;
}

.project-card-link .project-image,
.project-feature-image {
  transition: transform .6s ease, filter .6s ease;
}

.project-card-link:hover .project-image,
.project-feature-link:hover .project-feature-image {
  transform: scale(1.012);
  filter: brightness(.94);
}

.page-hero {
  padding: 120px 0 90px;
}

.page-hero-grid {
  display: grid;
  grid-template-columns: .38fr 1.15fr .65fr;
  gap: 50px;
  align-items: start;
}

.page-hero h1 {
  max-width: 950px;
  margin: 0;
  font-size: clamp(4rem, 7.4vw, 8.6rem);
}

.page-intro {
  max-width: 440px;
  margin: 8px 0 0;
  color: var(--ink-soft);
}

.section-compact {
  padding: 55px 0 125px;
}

.projects-list {
  display: grid;
  gap: 105px;
}

.project-feature-link {
  display: grid;
  grid-template-columns: 1.45fr .55fr;
  gap: 34px;
}

.project-feature-reverse .project-feature-link {
  grid-template-columns: .55fr 1.45fr;
}

.project-feature-reverse .project-feature-image {
  order: 2;
}

.project-feature-image {
  min-height: 680px;
}

.project-feature-copy {
  display: grid;
  grid-template-columns: 38px 1fr 25px;
  gap: 18px;
  align-content: end;
  padding: 0 0 18px;
  border-bottom: 1px solid var(--line);
}

.project-feature-copy h2 {
  margin: 0 0 13px;
  font-size: clamp(2.2rem, 3.5vw, 4.4rem);
}

.project-feature-copy p {
  margin: 0;
  color: var(--ink-soft);
  font-size: .82rem;
}

.project-index-number {
  padding-top: 10px;
  color: var(--brass);
  font-size: .68rem;
  letter-spacing: .15em;
}

.project-arrow {
  align-self: end;
  padding-bottom: 4px;
  font-size: 1.2rem;
}

.projects-cta {
  padding: 115px 0;
  background: var(--paper);
}

.projects-cta-inner {
  display: grid;
  grid-template-columns: .55fr 1.25fr auto;
  gap: 40px;
  align-items: center;
}

.projects-cta h2 {
  margin: 0;
}

.case-hero {
  padding: 85px 0 0;
}

.back-link {
  display: inline-block;
  margin-bottom: 72px;
  color: var(--ink-soft);
  text-underline-offset: 5px;
}

.case-heading h1 {
  max-width: 1050px;
  margin-bottom: 55px;
}

.case-summary {
  display: grid;
  grid-template-columns: .9fr 1.1fr;
  gap: 110px;
  margin-bottom: 70px;
}

.case-summary > p {
  max-width: 590px;
  color: var(--ink-soft);
  font-size: 1.18rem;
}

.case-facts {
  display: grid;
  grid-template-columns: 1fr 1fr;
  gap: 0 35px;
  margin: 0;
  border-top: 1px solid var(--line);
}

.case-facts div {
  padding: 19px 0;
  border-bottom: 1px solid var(--line);
}

.case-facts dt {
  margin-bottom: 7px;
  color: var(--brass);
  font-size: .62rem;
  letter-spacing: .17em;
  text-transform: uppercase;
}

.case-facts dd {
  margin: 0;
  font-size: .84rem;
}

.case-hero-image {
  min-height: 780px;
}

.case-story-grid {
  display: grid;
  grid-template-columns: 80px 1.15fr .85fr;
  gap: 50px;
}

.case-gallery {
  padding-bottom: 70px;
}

.case-gallery-grid {
  display: grid;
  grid-template-columns: 1.2fr .8fr;
  gap: 25px;
}

.gallery-tall {
  grid-row: span 2;
  min-height: 970px;
}

.gallery-wide {
  min-height: 472px;
}

.case-details {
  background: var(--paper);
}

.case-details-grid {
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  gap: 110px;
}

.detail-list {
  border-top: 1px solid var(--line);
}

.detail-list div {
  display: grid;
  grid-template-columns: 55px 1fr;
  gap: 22px;
  padding: 24px 0;
  border-bottom: 1px solid var(--line);
}

.detail-list span {
  color: var(--brass);
  font-size: .67rem;
}

.detail-list p {
  margin: 0;
}

.next-project {
  background: var(--ink);
  color: #f4efe7;
}

.next-project-inner {
  display: flex;
  justify-content: space-between;
  align-items: flex-end;
  padding-top: 90px;
  padding-bottom: 90px;
}

.next-project h2 {
  margin: 0;
}

.next-project-inner > span {
  font-size: 2rem;
}

@media (max-width: 980px) {
  .page-hero-grid {
    grid-template-columns: 1fr;
    gap: 25px;
  }

  .page-hero h1 {
    max-width: 820px;
  }

  .project-feature-link,
  .project-feature-reverse .project-feature-link {
    grid-template-columns: 1fr;
  }

  .project-feature-reverse .project-feature-image {
    order: initial;
  }

  .project-feature-image {
    min-height: 560px;
  }

  .projects-cta-inner,
  .case-summary,
  .case-details-grid {
    grid-template-columns: 1fr;
    gap: 42px;
  }

  .case-story-grid {
    grid-template-columns: 55px 1fr;
  }

  .case-story-grid .body-copy {
    grid-column: 2;
  }

  .case-hero-image {
    min-height: 610px;
  }
}

@media (max-width: 640px) {
  .page-hero {
    padding: 62px 0 55px;
  }

  .page-hero h1 {
    font-size: clamp(3rem, 14.7vw, 4.15rem);
  }

  .section-compact {
    padding: 30px 0 90px;
  }

  .projects-list {
    gap: 72px;
  }

  .project-feature-image {
    min-height: 440px;
  }

  .project-feature-copy {
    grid-template-columns: 30px 1fr 20px;
    gap: 11px;
  }

  .project-feature-copy h2 {
    font-size: 2.25rem;
  }

  .projects-cta {
    padding: 85px 0;
  }

  .projects-cta-inner {
    gap: 22px;
  }

  .case-hero {
    padding-top: 50px;
  }

  .back-link {
    margin-bottom: 45px;
  }

  .case-heading h1 {
    margin-bottom: 38px;
  }

  .case-summary {
    gap: 30px;
    margin-bottom: 48px;
  }

  .case-facts {
    grid-template-columns: 1fr;
  }

  .case-hero-image {
    min-height: 460px;
  }

  .case-story-grid {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  .case-story-grid .body-copy {
    grid-column: auto;
  }

  .case-gallery-grid {
    grid-template-columns: 1fr;
  }

  .gallery-tall,
  .gallery-wide {
    min-height: 440px;
  }

  .detail-list div {
    grid-template-columns: 35px 1fr;
  }

  .next-project-inner {
    padding-top: 68px;
    padding-bottom: 68px;
  }
}


/* V4 refinements */
.page-hero {
  padding-bottom: 52px;
}

.page-hero h1 {
  font-size: clamp(3.8rem, 6.8vw, 7.7rem);
  line-height: .94;
}

.page-hero .page-intro {
  align-self: center;
  margin-top: 0;
}

.project-index.section-compact {
  padding-top: 20px;
}

.case-hero {
  padding-top: 125px;
}

.case-heading h1 {
  font-size: clamp(4.2rem, 7vw, 8rem);
  line-height: .95;
  margin-bottom: 42px;
}

.case-summary {
  margin-bottom: 82px;
}

.case-gallery {
  padding-bottom: 45px;
}

.case-details {
  padding-top: 105px;
  padding-bottom: 105px;
}

.case-details h2 {
  font-size: clamp(3rem, 4.8vw, 5.7rem);
}

/* Services page */
.services-hero {
  padding: 120px 0 88px;
}

.services-hero-grid {
  display: grid;
  grid-template-columns: .38fr 1.15fr .65fr;
  gap: 50px;
  align-items: start;
}

.services-hero h1 {
  margin: 0;
  max-width: 1000px;
  font-size: clamp(4rem, 7.1vw, 8.25rem);
  line-height: .94;
}

.services-hero .page-intro {
  align-self: center;
  margin-top: 0;
}

.services-intro-grid {
  display: grid;
  grid-template-columns: 80px 1.15fr .85fr;
  gap: 50px;
}

.service-list-section {
  padding: 15px 0 120px;
}

.service-list {
  border-top: 1px solid var(--line);
}

.service-row {
  display: grid;
  grid-template-columns: 70px 1fr 180px;
  gap: 35px;
  align-items: start;
  padding: 36px 0 40px;
  border-bottom: 1px solid var(--line);
}

.service-number {
  padding-top: 11px;
  color: var(--brass);
  font-size: .68rem;
  letter-spacing: .15em;
}

.service-row h2 {
  margin: 0 0 12px;
  font-size: clamp(2.2rem, 3.5vw, 4.25rem);
}

.service-row p {
  max-width: 720px;
  margin: 0;
  color: var(--ink-soft);
}

.service-meta {
  justify-self: end;
  padding-top: 13px;
  color: var(--ink-soft);
  font-size: .7rem;
  letter-spacing: .12em;
  text-transform: uppercase;
}

.service-image-band {
  padding-bottom: 110px;
}

.service-image-grid {
  display: grid;
  grid-template-columns: 1.35fr .65fr;
  gap: 25px;
}

.service-image-large {
  min-height: 720px;
}

.service-image-small {
  min-height: 720px;
}

.service-approach {
  background: var(--paper);
}

.service-approach-grid {
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  gap: 110px;
}

.approach-steps {
  border-top: 1px solid var(--line);
}

.approach-steps > div {
  display: grid;
  grid-template-columns: 45px 130px 1fr;
  gap: 20px;
  align-items: start;
  padding: 24px 0;
  border-bottom: 1px solid var(--line);
}

.approach-steps span {
  color: var(--brass);
  font-size: .68rem;
}

.approach-steps h3 {
  margin: 0;
  font-size: 1rem;
  font-weight: 500;
}

.approach-steps p {
  margin: 0;
  color: var(--ink-soft);
}

@media (max-width: 980px) {
  .services-hero-grid,
  .service-approach-grid {
    grid-template-columns: 1fr;
    gap: 30px;
  }

  .services-intro-grid {
    grid-template-columns: 55px 1fr;
  }

  .services-intro-grid .body-copy {
    grid-column: 2;
  }

  .service-row {
    grid-template-columns: 45px 1fr;
  }

  .service-meta {
    grid-column: 2;
    justify-self: start;
    padding-top: 0;
  }

  .service-image-large,
  .service-image-small {
    min-height: 560px;
  }
}

@media (max-width: 640px) {
  .page-hero h1 {
    font-size: clamp(2.9rem, 14vw, 4rem);
  }

  .case-hero {
    padding-top: 78px;
  }

  .case-heading h1 {
    font-size: clamp(3.15rem, 14.5vw, 4.3rem);
  }

  .case-summary {
    margin-bottom: 58px;
  }

  .case-details {
    padding-top: 75px;
    padding-bottom: 75px;
  }

  .case-details h2 {
    font-size: clamp(2.7rem, 13vw, 3.75rem);
  }

  .services-hero {
    padding: 62px 0 55px;
  }

  .services-hero h1 {
    font-size: clamp(3rem, 14.5vw, 4.1rem);
  }

  .services-intro-grid {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  .services-intro-grid .body-copy {
    grid-column: auto;
  }

  .service-list-section {
    padding-bottom: 85px;
  }

  .service-row {
    grid-template-columns: 30px 1fr;
    gap: 12px;
    padding: 28px 0 30px;
  }

  .service-row h2 {
    font-size: 2.25rem;
  }

  .service-meta {
    grid-column: 2;
  }

  .service-image-grid {
    grid-template-columns: 1fr;
  }

  .service-image-large,
  .service-image-small {
    min-height: 430px;
  }

  .service-approach-grid {
    gap: 38px;
  }

  .approach-steps > div {
    grid-template-columns: 30px 95px 1fr;
    gap: 10px;
  }
}


/* V5 refinements */
.services-hero h1 {
  font-size: clamp(3.8rem, 6.75vw, 7.8rem);
}

.service-list-section {
  padding-bottom: 80px;
}

@media (max-width: 640px) {
  .service-row .service-meta {
    margin-top: 4px;
  }
}

/* Process page */
.process-hero {
  padding: 120px 0 88px;
}

.process-hero-grid {
  display: grid;
  grid-template-columns: .38fr 1.15fr .65fr;
  gap: 50px;
  align-items: start;
}

.process-hero h1 {
  margin: 0;
  max-width: 1050px;
  font-size: clamp(3.9rem, 6.9vw, 8rem);
  line-height: .94;
}

.process-hero .page-intro {
  align-self: center;
  margin-top: 0;
}

.process-overview-grid {
  display: grid;
  grid-template-columns: 80px 1.15fr .85fr;
  gap: 50px;
}

.process-steps-section {
  padding: 15px 0 120px;
}

.process-steps {
  border-top: 1px solid var(--line);
}

.process-step {
  display: grid;
  grid-template-columns: 65px .95fr 1.05fr;
  gap: 42px;
  align-items: start;
  padding: 44px 0 48px;
  border-bottom: 1px solid var(--line);
}

.process-number {
  padding-top: 8px;
  color: var(--brass);
  font-size: .68rem;
  letter-spacing: .15em;
}

.process-step-heading h2 {
  margin: 0;
  font-size: clamp(2.35rem, 3.6vw, 4.4rem);
}

.process-step-copy {
  max-width: 650px;
  color: var(--ink-soft);
}

.process-step-copy p {
  margin-top: 0;
}

.process-image-band {
  padding-bottom: 95px;
}

.process-image-grid {
  display: grid;
  grid-template-columns: 1.3fr .7fr;
  gap: 25px;
}

.process-image-large,
.process-image-small {
  min-height: 700px;
}

.process-principles {
  background: var(--paper);
}

.process-principles-grid {
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  gap: 110px;
}

.principle-list {
  border-top: 1px solid var(--line);
}

.principle-list div {
  display: grid;
  grid-template-columns: 45px 1fr;
  gap: 22px;
  padding: 24px 0;
  border-bottom: 1px solid var(--line);
}

.principle-list span {
  color: var(--brass);
  font-size: .68rem;
}

.principle-list p {
  margin: 0;
}

@media (max-width: 980px) {
  .process-hero-grid,
  .process-principles-grid {
    grid-template-columns: 1fr;
    gap: 30px;
  }

  .process-overview-grid {
    grid-template-columns: 55px 1fr;
  }

  .process-overview-grid .body-copy {
    grid-column: 2;
  }

  .process-step {
    grid-template-columns: 45px 1fr;
  }

  .process-step-copy {
    grid-column: 2;
  }

  .process-image-large,
  .process-image-small {
    min-height: 560px;
  }
}

@media (max-width: 640px) {
  .process-hero {
    padding: 62px 0 55px;
  }

  .process-hero h1 {
    font-size: clamp(3rem, 14.4vw, 4.15rem);
  }

  .process-overview-grid {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  .process-overview-grid .body-copy {
    grid-column: auto;
  }

  .process-steps-section {
    padding-bottom: 85px;
  }

  .process-step {
    grid-template-columns: 30px 1fr;
    gap: 12px;
    padding: 32px 0 36px;
  }

  .process-step-copy {
    grid-column: 2;
  }

  .process-step-heading h2 {
    font-size: 2.25rem;
  }

  .process-image-grid {
    grid-template-columns: 1fr;
  }

  .process-image-large,
  .process-image-small {
    min-height: 430px;
  }

  .process-principles-grid {
    gap: 38px;
  }
}


/* V6 refinements */
.process-hero h1 {
  font-size: clamp(3.75rem, 6.55vw, 7.55rem);
}

.process-hero .page-intro {
  max-width: 390px;
}

.process-step-copy {
  max-width: 560px;
}

@media (max-width: 640px) {
  .process-step {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .process-step .process-number,
  .process-step .process-step-heading,
  .process-step .process-step-copy {
    grid-column: 1;
  }

  .process-step-heading .eyebrow {
    margin-bottom: 10px;
  }
}

/* About page */
.about-hero {
  padding: 120px 0 88px;
}

.about-hero-grid {
  display: grid;
  grid-template-columns: .38fr 1.15fr .65fr;
  gap: 50px;
  align-items: start;
}

.about-hero h1 {
  margin: 0;
  max-width: 1020px;
  font-size: clamp(4rem, 6.95vw, 8.05rem);
  line-height: .94;
}

.about-hero .page-intro {
  align-self: center;
  margin-top: 0;
}

.about-intro-grid {
  display: grid;
  grid-template-columns: 80px 1.15fr .85fr;
  gap: 50px;
}

.about-image-band {
  padding: 10px 0 110px;
}

.about-image-grid {
  display: grid;
  grid-template-columns: 1.35fr .65fr;
  gap: 25px;
}

.about-image-large,
.about-image-small {
  min-height: 720px;
}

.founder-story {
  background: var(--paper);
}

.founder-story-grid {
  display: grid;
  grid-template-columns: .85fr 1.15fr;
  gap: 120px;
}

.founder-copy {
  max-width: 720px;
  color: var(--ink-soft);
  font-size: 1.06rem;
}

.founder-copy p:first-child {
  margin-top: 0;
}

.about-values {
  padding: 105px 0;
}

.about-values-grid {
  display: grid;
  grid-template-columns: repeat(4, 1fr);
  border-top: 1px solid var(--line);
  border-bottom: 1px solid var(--line);
}

.about-value {
  min-height: 285px;
  padding: 28px 30px 34px;
  border-right: 1px solid var(--line);
}

.about-value:last-child {
  border-right: 0;
}

.about-value span {
  color: var(--brass);
  font-size: .68rem;
  letter-spacing: .15em;
}

.about-value h3 {
  margin: 62px 0 14px;
  font-family: var(--serif);
  font-size: 2.25rem;
  font-weight: 400;
}

.about-value p {
  margin: 0;
  color: var(--ink-soft);
  font-size: .84rem;
}

.about-region-grid {
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  gap: 110px;
}

@media (max-width: 980px) {
  .about-hero-grid,
  .founder-story-grid,
  .about-region-grid {
    grid-template-columns: 1fr;
    gap: 32px;
  }

  .about-intro-grid {
    grid-template-columns: 55px 1fr;
  }

  .about-intro-grid .body-copy {
    grid-column: 2;
  }

  .about-image-large,
  .about-image-small {
    min-height: 560px;
  }

  .about-values-grid {
    grid-template-columns: 1fr 1fr;
  }

  .about-value:nth-child(2) {
    border-right: 0;
  }

  .about-value:nth-child(-n+2) {
    border-bottom: 1px solid var(--line);
  }
}

@media (max-width: 640px) {
  .about-hero {
    padding: 62px 0 55px;
  }

  .about-hero h1 {
    font-size: clamp(3rem, 14.2vw, 4.1rem);
  }

  .about-intro-grid {
    grid-template-columns: 1fr;
    gap: 22px;
  }

  .about-intro-grid .body-copy {
    grid-column: auto;
  }

  .about-image-grid {
    grid-template-columns: 1fr;
  }

  .about-image-large,
  .about-image-small {
    min-height: 430px;
  }

  .founder-story-grid {
    gap: 36px;
  }

  .about-values {
    padding: 75px 0;
  }

  .about-values-grid {
    grid-template-columns: 1fr;
  }

  .about-value,
  .about-value:nth-child(2) {
    border-right: 0;
    border-bottom: 1px solid var(--line);
  }

  .about-value:last-child {
    border-bottom: 0;
  }

  .about-value {
    min-height: 220px;
  }

  .about-value h3 {
    margin-top: 42px;
  }
}


/* V7 refinements */
.about-hero h1 {
  font-size: clamp(3.85rem, 6.7vw, 7.7rem);
}

.about-hero .page-intro {
  max-width: 360px;
}

.about-intro.section-compact {
  padding-top: 25px;
}

/* Contact page */
.contact-hero {
  padding: 120px 0 88px;
}

.contact-hero-grid {
  display: grid;
  grid-template-columns: .38fr 1.15fr .65fr;
  gap: 50px;
  align-items: start;
}

.contact-hero h1 {
  margin: 0;
  max-width: 1050px;
  font-size: clamp(4rem, 6.95vw, 8rem);
  line-height: .94;
}

.contact-hero .page-intro {
  align-self: center;
  margin: 0;
}

.contact-grid {
  display: grid;
  grid-template-columns: .75fr 1.25fr;
  gap: 110px;
  align-items: start;
}

.contact-aside {
  position: sticky;
  top: 130px;
}

.contact-aside h2 {
  font-size: clamp(2.8rem, 4.5vw, 5.2rem);
}

.contact-notes {
  margin-top: 45px;
  border-top: 1px solid var(--line);
}

.contact-notes div {
  display: grid;
  grid-template-columns: 38px 1fr;
  gap: 18px;
  padding: 18px 0;
  border-bottom: 1px solid var(--line);
}

.contact-notes span {
  color: var(--brass);
  font-size: .67rem;
}

.contact-notes p {
  margin: 0;
}

.contact-direct {
  margin-top: 48px;
}

.contact-direct a {
  display: inline-block;
  margin-bottom: 10px;
  color: var(--ink);
  text-underline-offset: 5px;
}

.contact-direct p:last-child {
  color: var(--ink-soft);
  font-size: .8rem;
}

.project-form {
  border-top: 1px solid var(--line);
}

.form-row {
  display: grid;
  gap: 20px;
  padding: 26px 0;
  border-bottom: 1px solid var(--line);
}

.form-row.two-col {
  grid-template-columns: 1fr 1fr;
  gap: 28px;
}

.project-form label {
  display: grid;
  gap: 10px;
}

.project-form label > span {
  color: var(--brass);
  font-size: .67rem;
  letter-spacing: .14em;
  text-transform: uppercase;
}

.project-form input,
.project-form select,
.project-form textarea {
  width: 100%;
  border: 0;
  border-radius: 0;
  background: transparent;
  color: var(--ink);
  font: inherit;
  font-size: 1rem;
  outline: none;
  -webkit-appearance: none;
  appearance: none;
}

.project-form input,
.project-form select {
  min-height: 42px;
}

.project-form textarea {
  resize: vertical;
  line-height: 1.6;
}

.project-form select {
  padding-right: 24px;
  background-image:
    linear-gradient(45deg, transparent 50%, var(--ink-soft) 50%),
    linear-gradient(135deg, var(--ink-soft) 50%, transparent 50%);
  background-position:
    calc(100% - 12px) 50%,
    calc(100% - 7px) 50%;
  background-size: 5px 5px, 5px 5px;
  background-repeat: no-repeat;
}

.project-form input:focus,
.project-form select:focus,
.project-form textarea:focus {
  box-shadow: inset 0 -1px 0 var(--ink);
}

.project-form small {
  color: var(--ink-soft);
}

.form-consent {
  padding: 24px 0;
}

.form-consent label {
  display: flex;
  grid-template-columns: none;
  align-items: flex-start;
  gap: 12px;
}

.form-consent input {
  width: 16px;
  min-height: 16px;
  margin-top: 3px;
  appearance: auto;
}

.form-consent label > span {
  color: var(--ink-soft);
  font-size: .8rem;
  letter-spacing: 0;
  text-transform: none;
}

.form-submit {
  margin-top: 12px;
  cursor: pointer;
}

.hidden-field {
  position: absolute;
  left: -9999px;
}

.thanks-page {
  min-height: 72vh;
  display: flex;
  align-items: center;
  padding: 110px 0;
}

.thanks-inner {
  max-width: 950px;
}

.thanks-inner h1 {
  margin-bottom: 30px;
}

.thanks-inner p {
  max-width: 600px;
  color: var(--ink-soft);
  font-size: 1.1rem;
}

.thanks-inner .button {
  margin-top: 26px;
}

@media (max-width: 980px) {
  .contact-hero-grid,
  .contact-grid {
    grid-template-columns: 1fr;
    gap: 36px;
  }

  .contact-aside {
    position: static;
  }
}

@media (max-width: 640px) {
  .contact-hero {
    padding: 62px 0 55px;
  }

  .contact-hero h1 {
    font-size: clamp(3rem, 14.2vw, 4.1rem);
  }

  .form-row.two-col {
    grid-template-columns: 1fr;
    gap: 24px;
  }

  .contact-grid {
    gap: 58px;
  }

  .project-form .button {
    width: 100%;
  }

  .thanks-page {
    min-height: 65vh;
    padding: 75px 0;
  }
}


/* V8 corrections */
.about-intro-grid-no-number {
  grid-template-columns: 1.15fr .85fr;
  padding-left: 80px;
}

.process-step:last-child {
  border-bottom: 1px solid var(--line);
}

.process-steps {
  border-bottom: 0;
}

@media (max-width: 980px) {
  .about-intro-grid-no-number {
    grid-template-columns: 1fr 1fr;
    padding-left: 55px;
  }

  .about-intro-grid-no-number .body-copy {
    grid-column: auto;
  }
}

@media (max-width: 640px) {
  .about-intro-grid-no-number {
    grid-template-columns: 1fr;
    padding-left: 0;
  }
}


/* V9 correction: keep the right-hand divider on Process step 06 */
.process-steps-section .process-step:last-child {
  border-right: 1px solid var(--line);
}

@media (max-width: 980px) {
  .process-steps-section .process-step:last-child {
    border-right: 0;
  }
}


/* V10 correction: draw the missing far-right rule on Process step 06 */
.process-steps-section .process-step:last-child {
  position: relative;
  border-right: 0 !important;
}

.process-steps-section .process-step:last-child::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: 1px;
  background: var(--line);
  pointer-events: none;
}

@media (max-width: 980px) {
  .process-steps-section .process-step:last-child::after {
    display: none;
  }
}


/* V11 correction: remove duplicate section number from Services introduction */
.services-intro-grid-no-number {
  grid-template-columns: 1.15fr .85fr;
  padding-left: 80px;
}

@media (max-width: 980px) {
  .services-intro-grid-no-number {
    grid-template-columns: 1fr 1fr;
    padding-left: 55px;
  }

  .services-intro-grid-no-number .body-copy {
    grid-column: auto;
  }
}

@media (max-width: 640px) {
  .services-intro-grid-no-number {
    grid-template-columns: 1fr;
    padding-left: 0;
  }
}


/* V12: remove duplicate intro numbering and align Services with Process */
.process-overview-grid-no-number {
  grid-template-columns: 1.15fr .85fr;
  padding-left: 80px;
}

.service-list {
  border-right: 1px solid var(--line);
}

.service-row {
  position: relative;
}

.service-row::after {
  content: "";
  position: absolute;
  top: 0;
  right: 0;
  bottom: 0;
  width: 1px;
  background: var(--line);
  pointer-events: none;
}

@media (max-width: 980px) {
  .process-overview-grid-no-number {
    grid-template-columns: 1fr 1fr;
    padding-left: 55px;
  }

  .process-overview-grid-no-number .body-copy {
    grid-column: auto;
  }

  .service-list {
    border-right: 0;
  }

  .service-row::after {
    display: none;
  }
}

@media (max-width: 640px) {
  .process-overview-grid-no-number {
    grid-template-columns: 1fr;
    padding-left: 0;
  }
}


/* V13: remove decorative numbering across the site */
.section-number,
.project-index-number,
.service-number,
.process-number,
.detail-list > div > span,
.principle-list > div > span,
.approach-steps > div > span,
.contact-notes > div > span,
.about-value > span {
  display: none !important;
}

/* Rebalance layouts after removing number columns */
.project-feature-copy {
  grid-template-columns: 1fr 25px;
}

.service-row {
  grid-template-columns: 1fr 180px;
}

.process-step {
  grid-template-columns: .95fr 1.05fr;
}

.detail-list div,
.principle-list div,
.contact-notes div {
  grid-template-columns: 1fr;
}

.approach-steps > div {
  grid-template-columns: 130px 1fr;
}

.about-value h3 {
  margin-top: 20px;
}

@media (max-width: 980px) {
  .service-row {
    grid-template-columns: 1fr;
  }

  .service-meta {
    grid-column: 1;
  }

  .process-step {
    grid-template-columns: 1fr 1fr;
  }

  .process-step-copy {
    grid-column: 2;
  }
}

@media (max-width: 640px) {
  .project-feature-copy {
    grid-template-columns: 1fr 20px;
  }

  .service-row,
  .process-step,
  .detail-list div,
  .principle-list div,
  .approach-steps > div,
  .contact-notes div {
    grid-template-columns: 1fr;
  }

  .process-step-copy,
  .service-meta {
    grid-column: 1;
  }
}


/* V14: contact telephone */
.footer-bottom {
  flex-wrap: wrap;
  gap: 14px 28px;
}

.contact-direct a {
  display: block;
}


/* V15: refined Wolf + Grain editorial CTA */
.button-brand {
  display: inline-grid;
  grid-template-columns: 1fr 54px;
  align-items: stretch;
  min-width: 292px;
  min-height: 58px;
  padding: 0;
  overflow: hidden;
  border: 1px solid var(--ink);
  background: transparent;
  color: var(--ink);
  text-decoration: none;
  transition: background-color .25s ease, color .25s ease;
}

.button-brand > span:first-child {
  display: flex;
  align-items: center;
  padding: 0 22px;
  font-family: var(--sans);
  font-size: .72rem;
  font-weight: 500;
  letter-spacing: .14em;
  text-transform: uppercase;
  white-space: nowrap;
}

.button-brand-arrow {
  display: flex;
  align-items: center;
  justify-content: center;
  border-left: 1px solid var(--ink);
  font-family: var(--serif);
  font-size: 1.25rem;
  line-height: 1;
  transition: transform .25s ease, border-color .25s ease;
}

.button-brand:hover,
.button-brand:focus-visible {
  background: var(--ink);
  color: #f4efe7;
}

.button-brand:hover .button-brand-arrow,
.button-brand:focus-visible .button-brand-arrow {
  border-left-color: rgba(244, 239, 231, .35);
  transform: translate(2px, -2px);
}

@media (max-width: 640px) {
  .button-brand {
    min-width: 0;
    width: min(100%, 330px);
  }

  .button-brand > span:first-child {
    padding: 0 18px;
    font-size: .68rem;
    letter-spacing: .12em;
  }
}


/* V17: remove the outer right-hand vertical rule from the Services list */
.service-list {
  border-right: 0 !important;
}

.service-row::after {
  display: none !important;
}


/* V19: safe photographic placeholders and homepage layout repair */
.placeholder-image {
  position: relative;
  overflow: hidden;
  background-position: center;
  background-repeat: no-repeat;
  background-size: cover;
}

.placeholder-image::before {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(to top, rgba(20,18,15,.30), rgba(20,18,15,0) 48%);
  pointer-events: none;
}

.placeholder-image > span {
  position: absolute;
  left: 20px;
  bottom: 18px;
  z-index: 1;
  color: #f4efe7;
  text-shadow: 0 1px 8px rgba(0,0,0,.45);
}

.img-hero-kitchen { background-image: url("../images/hero-kitchen.webp"); }
.img-fitted-wardrobes { background-image: url("../images/fitted-wardrobes.webp"); }
.img-living-cabinetry { background-image: url("../images/living-cabinetry.webp"); }
.img-home-office { background-image: url("../images/home-office.webp"); }
.img-bespoke-storage { background-image: url("../images/bespoke-storage.webp"); }
.img-joinery-detail { background-image: url("../images/joinery-detail.webp"); }
.img-project-kitchen { background-image: url("../images/project-kitchen.webp"); }
.img-project-wardrobes { background-image: url("../images/project-wardrobes.webp"); }
.img-project-media { background-image: url("../images/project-media.webp"); }
.img-project-dark-wardrobe { background-image: url("../images/project-dark-wardrobe.webp"); }
.img-project-bathroom { background-image: url("../images/project-bathroom.webp"); }

/* Restore homepage components after later page-specific rules */
.section-intro .split-copy {
  display: grid;
  grid-template-columns: 1.15fr .85fr;
  gap: 90px;
  align-items: start;
}

.services-section .service-list {
  border-top: 1px solid rgba(255,255,255,.2);
  border-right: 0 !important;
}

.services-section .service-row {
  display: grid;
  grid-template-columns: .8fr 1.2fr;
  gap: 36px;
  align-items: start;
  padding: 28px 0;
  border-bottom: 1px solid rgba(255,255,255,.2);
}

.services-section .service-row::after {
  display: none !important;
}

.services-section .service-row h3 {
  margin: 0;
  color: #f4efe7;
  font-family: "Source Serif 4", Georgia, serif;
  font-size: 1.65rem;
  font-weight: 400;
}

.services-section .service-row p {
  margin: 0;
  max-width: none;
  color: rgba(255,255,255,.68);
  font-size: .9rem;
}

.process-section .process-step {
  display: block;
  padding: 30px 22px 0 0;
  min-height: 230px;
  border-right: 1px solid var(--line);
  border-bottom: 0;
}

.process-section .process-step + .process-step {
  padding-left: 22px;
}

.process-section .process-step:last-child {
  border-right: 0;
}

.process-section .process-step::after {
  display: none !important;
}

.process-section .process-step h3 {
  margin: 0 0 12px;
}

.process-section .process-step p {
  color: var(--ink-soft);
  font-size: .86rem;
}

@media (max-width: 980px) {
  .section-intro .split-copy {
    grid-template-columns: 1fr;
    gap: 30px;
  }

  .services-section .service-row {
    grid-template-columns: 1fr 1fr;
  }

  .process-section .process-step {
    border-bottom: 1px solid var(--line);
  }
}

@media (max-width: 640px) {
  .services-section .service-row {
    grid-template-columns: 1fr;
    gap: 10px;
  }

  .process-section .process-step,
  .process-section .process-step + .process-step {
    padding: 26px 0;
    border-right: 0;
  }
}


/* V20 verified final overrides */
.section-number,
.project-index-number,
.service-number,
.process-number,
.detail-list > div > span,
.principle-list > div > span,
.approach-steps > div > span,
.contact-notes > div > span,
.about-value > span {
  display: none !important;
}

/* Services page: horizontal dividers only, no outer right-hand rule. */
.service-list {
  border-right: 0 !important;
}

.service-row::after {
  display: none !important;
}

/* Footer accommodates email, telephone and back-to-top cleanly. */
.footer-bottom {
  flex-wrap: wrap;
  gap: 14px 28px;
}
