:root {
  --navy:#0F183A;
  --blue:#1D3179;
  --gold:#C79544;
  --olive:#796431;
  --cream:#F3EFE5;
  --paper:#FBFAF7;
  --ink:#111522;
  --muted:#646978;
  --line:#D8CFBD;
  --white:#fff
}

/* Permanent, restrained indicator for cards containing a project image set. */
.portfolio-card>a .portfolio-count-badge {
  left:auto;
  right:12px;
  top:12px;
  bottom:auto;
  display:inline-flex;
  align-items:center;
  min-width:38px;
  padding:7px 9px 6px;
  background:rgba(15,24,58,.82);
  color:#fff;
  font:700 .65rem/1 Arial,sans-serif;
  letter-spacing:.08em;
  opacity:1;
  backdrop-filter:blur(3px);
}
* {
  box-sizing:border-box
}
html {
  scroll-behavior:smooth
}
body {
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:Arial,Helvetica,sans-serif;
  line-height:1.6
}
img {
  display:block;
  width:100%;
  object-fit:cover
}
a {
  color:inherit;
  text-decoration:none
}
h1,
h2,
h3,
p,
figure,
blockquote {
  margin:0
}
h1,
h2,
h3 {
  font-family:Georgia,'Times New Roman',serif;
  font-weight:400;
  line-height:1.05
}
.skip {
  position:fixed;
  top:-50px;
  left:20px;
  background:var(--gold);
  padding:10px;
  z-index:100
}
.kicker,
.eyebrow {
  text-transform:uppercase;
  letter-spacing:.2em;
  font-size:.72rem;
  font-weight:700;
  color:var(--wine);
  margin-bottom:1rem
}
.skip:focus {
  top:10px
}
.overline,
.section-no {
  text-transform:uppercase;
  letter-spacing:.18em;
  font-weight:700;
  font-size:.68rem
}
.section-no {
  color:var(--blue)
}
.masthead {
  height:112px;
  display:grid;
  grid-template-columns:270px 1fr 220px;
  align-items:center;
  padding:0 4vw;
  border-bottom:1px solid var(--line);
  background:var(--paper);
  position:relative;
  z-index:30
}
.mark img {
  width:235px;
  height:auto
}
.masthead nav {
  justify-self:center;
  display:flex;
  gap:clamp(18px,2.8vw,44px);
  font-size:.73rem;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase
}
.masthead nav a {
  padding:12px 0;
  border-bottom:1px solid transparent
}
.masthead nav a:hover {
  color:var(--blue);
  border-color:var(--gold)
}
.call {
  justify-self:end;
  text-align:right;
  color:var(--blue);
  font-family:Georgia,serif;
  font-size:1.05rem
}
.call span {
  display:block;
  color:var(--muted);
  font:600 .58rem Arial;
  text-transform:uppercase;
  letter-spacing:.12em
}
.menu-check,
.menu-button {
  display:none
}
.testimonial {
  padding:110px max(10vw,30px);
  text-align:center;
  background:linear-gradient(rgba(40,18,13,.82),rgba(40,18,13,.82)),url('images/rail_04.jpg') center/cover fixed;
  color:white
}
.testimonial p {
  font-family:Georgia,serif;
  font-size:clamp(2rem,5vw,4rem);
  line-height:1.18;
  max-width:1050px;
  margin:0 auto 28px
}
.testimonial span {
  max-width:780px;
  display:block;
  margin:auto;
  color:#e5d9ce
}
.opening {
  min-height:750px;
  display:grid;
  grid-template-columns:90px minmax(330px,1fr) minmax(380px,1.15fr);
  grid-template-rows:1fr;
  gap:4vw;
  padding:54px 4vw 82px;
  position:relative;
  overflow:hidden
}
.datum {
  border-right:1px solid var(--line);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:12px;
  padding:12px 18px;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.13em;
  font-size:.58rem;
  text-align:center
}
.datum strong {
  color:var(--blue);
  font:400 2.8rem Georgia
}
.datum i {
  width:1px;
  flex:1;
  background:var(--gold);
  margin:4px 0
}
.opening-copy {
  align-self:center;
  max-width:600px;
  padding-bottom:80px
}
.opening-copy .overline {
  color:var(--olive);
  margin-bottom:26px
}
.opening h1 {
  font-size:clamp(3.2rem,5.6vw,6.2rem);
  letter-spacing:-.045em;
  color:var(--navy);
  max-width:780px
}
.deck {
  font-family:Georgia,serif;
  font-size:1.12rem;
  line-height:1.6;
  color:var(--muted);
  max-width:510px;
  margin:32px 0
}
.arrow-link {
  display:inline-flex;
  align-items:center;
  gap:45px;
  border-top:1px solid var(--navy);
  padding-top:13px;
  text-transform:uppercase;
  letter-spacing:.13em;
  font-weight:700;
  font-size:.72rem
}
.arrow-link b {
  font-size:1.2rem;
  color:var(--gold)
}
.opening-photo {
  height:610px;
  position:relative
}
.opening-photo img {
  height:100%;
  object-position:center
}
.opening-photo figcaption {
  display:flex;
  justify-content:space-between;
  padding-top:10px;
  font-size:.62rem;
  text-transform:uppercase;
  letter-spacing:.12em;
  color:var(--muted)
}
.process-inset {
  position:absolute;
  width:270px;
  height:195px;
  right:34%;
  bottom:34px;
  border:8px solid var(--paper);
  box-shadow:0 14px 35px rgba(15,24,58,.13)
}
.process-inset img {
  height:155px
}
.process-inset figcaption {
  height:40px;
  padding:9px 10px;
  background:var(--navy);
  color:white;
  text-transform:uppercase;
  letter-spacing:.12em;
  font-size:.58rem
}
.craft-index {
  background:var(--navy);
  color:white;
  padding:100px 6vw 108px;
  display:grid;
  grid-template-columns:.9fr 1.1fr;
  gap:10vw
}
.craft-index header h2 {
  font-size:clamp(2.6rem,4.8vw,5rem);
  margin:24px 0 30px
}
.craft-index header>p:last-child {
  color:#B9BED0;
  max-width:470px
}
.craft-index .section-no {
  color:var(--gold)
}
.craft-lines {
  list-style:none;
  margin:0;
  padding:0
}
.craft-lines li {
  display:grid;
  grid-template-columns:55px 150px 1fr;
  gap:18px;
  align-items:baseline;
  padding:30px 0;
  border-top:1px solid #354064
}
.craft-lines li:last-child {
  border-bottom:1px solid #354064
}
.craft-lines span {
  color:var(--gold);
  font-size:.68rem
}
.craft-lines h3 {
  font-size:1.7rem
}
.craft-lines p {
  color:#C7CAD6;
  font-size:.88rem
}
.landing-image {
  height:760px;
  position:relative;
  background:var(--navy);
  overflow:hidden
}
.landing-image>img {
  height:100%;
  object-position:center 42%
}
.landing-image:after {
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(15,24,58,.78),transparent 66%)
}
.landing-image blockquote {
  position:absolute;
  z-index:2;
  left:7vw;
  top:50%;
  transform:translateY(-50%);
  width:min(560px,70vw);
  color:white;
  font:400 clamp(2rem,4vw,4.1rem)/1.15 Georgia
}
.landing-image cite {
  display:block;
  font:600 .68rem Arial;
  text-transform:uppercase;
  letter-spacing:.14em;
  color:#E1C893;
  margin-top:28px
}
.margin-note {
  position:absolute;
  z-index:2;
  right:25px;
  bottom:90px;
  color:white;
  writing-mode:vertical-rl;
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:.6rem
}
.work {
  padding:120px 3vw 130px;
  background:var(--cream)
}
.work-heading {
  display:grid;
  grid-template-columns:.8fr 1.4fr .8fr;
  gap:5vw;
  align-items:end;
  margin:0 4vw 65px
}
.work-heading .section-no {
  align-self:start
}
.work-heading h2 {
  font-size:clamp(3rem,5vw,5.4rem);
  color:var(--navy)
}
.work-heading>p:last-child {
  color:var(--muted);
  font-family:Georgia,serif
}
.gallery-grid {
  display:grid;
  grid-template-columns:1.1fr .75fr 1.05fr .85fr;
  grid-auto-rows:210px;
  gap:10px
}
.gallery-grid a {
  position:relative;
  overflow:hidden;
  background:var(--navy)
}
.gallery-grid a:nth-child(1) {
  grid-column:span 2;
  grid-row:span 3
}
.gallery-grid a:nth-child(2) {
  grid-row:span 2
}
.gallery-grid a:nth-child(4) {
  grid-row:span 2
}
.gallery-grid a:nth-child(6) {
  grid-column:span 2;
  grid-row:span 2
}
.gallery-grid a:nth-child(9) {
  grid-row:span 2
}
.gallery-grid a:nth-child(12) {
  grid-column:span 2
}
.gallery-grid img {
  height:100%;
  transition:transform .45s,filter .45s
}
.gallery-grid a:after {
  content:"";
  position:absolute;
  inset:55% 0 0;
  background:linear-gradient(transparent,rgba(15,24,58,.9))
}
.gallery-grid span {
  position:absolute;
  z-index:2;
  left:17px;
  bottom:13px;
  color:white;
  font:400 .9rem Georgia
}
.gallery-grid a:hover img {
  transform:scale(1.035);
  filter:saturate(.82)
}
.family {
  display:grid;
  grid-template-columns:.85fr 1.15fr;
  gap:7vw;
  padding:120px 6vw 95px
}
.family-lead {
  max-width:520px;
  align-self:center
}
.family-lead h2 {
  font-size:clamp(3rem,5vw,5.2rem);
  color:var(--navy);
  margin:24px 0 30px
}
.family-lead>h2+p {
  color:var(--muted)
}
.family-standards {
  grid-column:1/-1;
  display:grid;
  grid-template-columns:minmax(220px,.65fr) minmax(0,1.35fr);
  gap:7vw;
  margin-top:26px;
  padding-top:34px;
  border-top:1px solid var(--line)
}
.family-standards h3 {
  margin:0;
  color:var(--blue);
  font:700 .7rem/1.2 Arial,sans-serif;
  letter-spacing:.14em;
  text-transform:uppercase
}
.family-standards p {
  margin:0;
  color:var(--muted);
  font-size:.88rem
}
.family-standards p+p {
  margin-top:12px
}
@media(max-width:700px) {
  .family-standards {
    grid-template-columns:1fr;
    gap:16px;
    margin-top:14px;
    padding-top:28px
  }
}
.family-portrait {
  position:relative
}
.family-portrait img {
  height:560px
}
.family-portrait span {
  position:absolute;
  left:-36px;
  bottom:28px;
  background:var(--gold);
  color:var(--navy);
  padding:16px 24px;
  text-transform:uppercase;
  letter-spacing:.15em;
  font-size:.65rem;
  font-weight:700
}
.family-roster {
  grid-column:1/-1;
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:1px;
  background:var(--line);
  margin-top:28px;
  border:1px solid var(--line)
}
.family-roster figure {
  background:var(--paper);
  padding:12px
}
.family-roster img {
  aspect-ratio:1;
  filter:sepia(.1)
}
.family-roster figcaption {
  font-family:Georgia,serif;
  padding:12px 2px 5px
}
.family-roster small {
  display:block;
  color:var(--blue);
  font:700 .58rem Arial;
  text-transform:uppercase;
  letter-spacing:.13em;
  margin-top:3px
}
.family-roster .memorial {
  background:#F1EEE5
}
.family-roster .memorial img {
  filter:grayscale(.28) sepia(.15)
}
.process {
  background:var(--paper);
  padding:105px 7vw 130px;
  border-top:1px solid var(--line)
}
.process header {
  display:flex;
  justify-content:space-between;
  align-items:start;
  margin-bottom:80px
}
.process header h2 {
  font-size:clamp(2.8rem,5vw,5.2rem);
  color:var(--navy);
  width:60%
}
.process-step {
  min-height:320px;
  display:grid;
  grid-template-columns:90px 1fr 360px;
  gap:5vw;
  align-items:center;
  border-top:1px solid var(--line);
  padding:44px 0
}
.process-step>strong {
  font:400 5rem Georgia;
  color:var(--gold)
}
.process-step h3 {
  font-size:2.2rem;
  color:var(--navy);
  margin:10px 0 18px
}
.process-step p:last-child {
  max-width:650px;
  color:var(--muted)
}
.process-step img {
  height:250px
}
.step-two {
  grid-template-columns:90px 360px 1fr;
  margin-left:8vw
}
.step-three {
  margin-left:16vw
}
.process-step .overline {
  color:var(--olive)
}
.questions {
  display:grid;
  grid-template-columns:.7fr 1.3fr;
  gap:9vw;
  padding:105px 7vw;
  background:var(--blue);
  color:white
}
.questions aside {
  position:sticky;
  top:40px;
  align-self:start
}
.questions aside .section-no {
  color:var(--gold)
}
.questions aside h2 {
  font-size:clamp(2.8rem,4.5vw,4.8rem);
  margin:22px 0
}
.questions aside>p:last-of-type {
  color:#C2C7DA;
  max-width:350px
}
.questions aside>a {
  display:inline-block;
  margin-top:24px;
  color:#F1D69F;
  font:400 1.4rem Georgia
}
.question-list details {
  border-top:1px solid #53639E
}
.question-list details:last-child {
  border-bottom:1px solid #53639E
}
.question-list summary {
  cursor:pointer;
  list-style:none;
  display:flex;
  justify-content:space-between;
  gap:20px;
  padding:23px 0;
  font:400 1.3rem Georgia
}
.question-list summary::-webkit-details-marker {
  display:none
}
.question-list summary span {
  color:var(--gold);
  font:300 1.6rem Arial
}
.question-list details[open] summary span {
  transform:rotate(45deg)
}
.question-list details p {
  color:#CDD1DF;
  max-width:720px;
  padding:0 30px 28px 0
}
.contact {
  padding:110px 6vw 90px;
  background:var(--gold);
  color:var(--navy);
  display:grid;
  grid-template-columns:1.2fr .8fr;
  gap:50px 8vw
}
.contact-title h2 {
  font-size:clamp(3rem,5.5vw,5.8rem);
  margin-top:22px
}
.contact-note {
  align-self:end;
  font-family:Georgia,serif;
  font-size:1.05rem;
  max-width:460px
}
.contact-note address {
  font:600 .65rem Arial;
  text-transform:uppercase;
  letter-spacing:.13em;
  margin-top:28px
}
.contact-links {
  grid-column:1/-1;
  display:grid;
  grid-template-columns:1fr 1fr 1.4fr;
  border-top:1px solid rgba(15,24,58,.45);
  border-bottom:1px solid rgba(15,24,58,.45)
}
.contact-links a {
  padding:20px;
  border-right:1px solid rgba(15,24,58,.45);
  font:400 1.2rem Georgia
}
.contact-links a:last-child {
  border-right:0
}
.contact-links span {
  display:block;
  font:700 .55rem Arial;
  text-transform:uppercase;
  letter-spacing:.13em;
  margin-bottom:5px
}
.contact form {
  grid-column:1/-1;
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:20px
}
.contact label {
  font-size:.6rem;
  text-transform:uppercase;
  letter-spacing:.13em;
  font-weight:700
}
.contact input,
.contact textarea {
  display:block;
  width:100%;
  border:0;
  border-bottom:1px solid var(--navy);
  background:transparent;
  padding:12px 3px;
  font:inherit;
  color:var(--navy);
  border-radius:0
}
.contact .wide {
  grid-column:1/-1
}
.contact button {
  grid-column:1/-1;
  justify-self:end;
  border:0;
  background:var(--navy);
  color:white;
  padding:17px 24px;
  text-transform:uppercase;
  letter-spacing:.12em;
  font-weight:700;
  cursor:pointer
}
.contact button b {
  color:var(--gold);
  margin-left:35px
}
footer {
  min-height:240px;
  background:var(--navy);
  color:white;
  padding:60px 6vw 28px;
  display:grid;
  grid-template-columns:1.2fr 1fr .8fr;
  gap:40px;
  align-items:start
}
footer img {
  width:250px;
  filter:brightness(0) invert(1)
}
footer p {
  color:#B6BACA
}
footer nav {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:8px;
  text-transform:uppercase;
  letter-spacing:.12em;
  font-size:.64rem
}
footer small {
  grid-column:1/-1;
  border-top:1px solid #39415F;
  padding-top:20px;
  color:#8F95A9
}
@media(max-width:980px) {
  .masthead {
    grid-template-columns:230px 1fr 45px;
    height:94px
  }
  .call {
    display:none
  }
  .menu-button {
    display:grid;
    gap:7px;
    justify-self:end;
    cursor:pointer
  }
  .menu-button span {
    width:28px;
    height:2px;
    background:var(--navy)
  }
  .masthead nav {
    display:none;
    position:absolute;
    top:94px;
    left:0;
    right:0;
    background:var(--paper);
    padding:30px 4vw;
    flex-direction:column;
    align-items:flex-start;
    border-bottom:1px solid var(--line)
  }
  .menu-check:checked~nav {
    display:flex
  }
  .opening {
    grid-template-columns:60px 1fr 1fr;
    gap:3vw
  }
  .process-inset {
    right:28%
  }
  .craft-index {
    gap:6vw
  }
  .work-heading {
    grid-template-columns:.5fr 1.5fr
  }
  .work-heading>p:last-child {
    grid-column:2
  }
  .gallery-grid {
    grid-template-columns:repeat(3,1fr)
  }
  .gallery-grid a:nth-child(1) {
    grid-column:span 2
  }
  .gallery-grid a:nth-child(6) {
    grid-column:span 1
  }
  .family {
    gap:4vw
  }
  .process-step,
  .step-two {
    grid-template-columns:70px 1fr 270px;
    margin-left:0
  }
  .step-three {
    margin-left:0
  }
  .questions {
    gap:5vw
  }
}
@media(max-width:700px) {
  .masthead {
    height:82px;
    padding:0 20px;
    grid-template-columns:1fr 40px
  }
  .mark img {
    width:205px
  }
  .masthead nav {
    top:82px
  }
  .opening {
    display:grid;
    grid-template-columns:42px 1fr;
    padding:28px 20px 64px;
    min-height:0
  }
  .datum {
    grid-row:1/3
  }
  .datum strong {
    font-size:2rem
  }
  .opening-copy {
    grid-column:2;
    padding:38px 0 32px
  }
  .opening h1 {
    font-size:3.35rem
  }
  .opening-photo {
    grid-column:2;
    height:480px
  }
  .process-inset {
    width:180px;
    height:135px;
    right:8px;
    bottom:10px
  }
  .process-inset img {
    height:100px
  }
  .craft-index {
    grid-template-columns:1fr;
    padding:75px 24px
  }
  .craft-lines li {
    grid-template-columns:34px 1fr
  }
  .craft-lines li p {
    grid-column:2
  }
  .landing-image {
    height:650px
  }
  .landing-image blockquote {
    left:25px;
    width:82vw;
    font-size:2.25rem
  }
  .work {
    padding:80px 10px
  }
  .work-heading {
    display:block;
    margin:0 15px 40px
  }
  .work-heading h2 {
    margin:20px 0
  }
  .gallery-grid {
    grid-template-columns:repeat(2,1fr);
    grid-auto-rows:155px;
    gap:6px
  }
  .gallery-grid a:nth-child(1) {
    grid-column:span 2;
    grid-row:span 2
  }
  .gallery-grid a:nth-child(2),
  .gallery-grid a:nth-child(4),
  .gallery-grid a:nth-child(6),
  .gallery-grid a:nth-child(9),
  .gallery-grid a:nth-child(12) {
    grid-column:span 1;
    grid-row:span 1
  }
  .gallery-grid span {
    font-size:.72rem;
    left:10px;
    bottom:8px
  }
  .family {
    grid-template-columns:1fr;
    padding:80px 24px
  }
  .family-portrait img {
    height:400px
  }
  .family-roster {
    grid-template-columns:repeat(2,1fr);
    margin-top:0
  }
  .family-roster figure:last-child {
    grid-column:span 2
  }
  .process {
    padding:80px 24px
  }
  .process header {
    display:block
  }
  .process header h2 {
    width:100%;
    margin-top:20px
  }
  .process-step,
  .step-two,
  .step-three {
    grid-template-columns:50px 1fr;
    gap:18px;
    padding:34px 0
  }
  .process-step>strong {
    font-size:3.5rem
  }
  .process-step img {
    grid-column:2;
    height:210px
  }
  .step-two img {
    grid-row:auto
  }
  .questions {
    grid-template-columns:1fr;
    padding:75px 24px
  }
  .questions aside {
    position:static
  }
  .contact {
    grid-template-columns:1fr;
    padding:75px 24px
  }
  .contact-links {
    grid-template-columns:1fr
  }
  .contact-links a {
    border-right:0;
    border-bottom:1px solid rgba(15,24,58,.45)
  }
  .contact form {
    grid-template-columns:1fr
  }
  .contact .wide {
    grid-column:1
  }
  .contact button {
    justify-self:start
  }
  footer {
    grid-template-columns:1fr;
    padding:50px 24px
  }
}

@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto
  }
  .gallery-grid img {
    transition:none
  }
}
.opening {
  grid-template-columns:minmax(330px,1fr) minmax(380px,1.15fr)
}
.hero-stats {
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  background:var(--navy);
  color:white;
  padding:0 6vw
}
.hero-stats p {
  display:flex;
  align-items:baseline;
  gap:24px;
  padding:25px 2vw;
  border-right:1px solid #39415f
}
.hero-stats p:last-child {
  border-right:0
}
.hero-stats span {
  color:var(--gold);
  font-size:.56rem;
  font-weight:700;
  letter-spacing:.15em;
  text-transform:uppercase
}
.hero-stats strong {
  font:400 1.25rem Georgia
}
.family-portrait img {
  height:auto;
  object-fit:contain
}
.gallery-grid a:nth-child(9) {
  grid-row:span 1
}
.gallery-grid a:nth-child(10) {
  grid-column:span 2;
  grid-row:span 2
}
@media(max-width:980px) {
  .opening {
    grid-template-columns:1fr 1fr
  }
  .hero-stats {
    padding:0 3vw
  }
  .hero-stats p {
    display:block
  }
  .hero-stats span,
  .hero-stats strong {
    display:block
  }
  .hero-stats span {
    margin-bottom:5px
  }
}
@media(max-width:700px) {
  .opening {
    grid-template-columns:1fr;
    padding:28px 20px 64px
  }
  .opening-copy,
  .opening-photo {
    grid-column:1
  }
  .hero-stats {
    grid-template-columns:1fr;
    padding:0 24px
  }
  .hero-stats p {
    display:flex;
    padding:18px 0;
    border-right:0;
    border-bottom:1px solid #39415f
  }
  .hero-stats p:last-child {
    border-bottom:0
  }
  .hero-stats span {
    width:90px;
    flex:0 0 auto
  }
  .family-portrait img {
    height:auto
  }
}
.featured-work {
  padding:120px 5vw 135px;
  background:var(--cream)
}
.featured-heading {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8vw;
  max-width:1380px;
  margin:0 auto 60px;
  border-top:1px solid var(--line);
  padding-top:25px
}
.featured-heading h2 {
  font-size:clamp(3rem,6vw,6.5rem);
  color:var(--navy);
  margin-top:20px
}
.featured-heading>div:last-child {
  align-self:end;
  max-width:560px
}
.featured-heading>div:last-child>p {
  font:400 clamp(1.05rem,1.7vw,1.45rem)/1.5 Georgia;
  color:var(--muted)
}
.featured-heading .arrow-link {
  margin-top:22px
}
.featured-grid {
  max-width:1380px;
  margin:auto;
  display:grid;
  grid-template-columns:repeat(12,1fr);
  gap:22px;
  align-items:start
}
.featured-image {
  overflow:hidden;
  background:#dedbd3
}
.featured-image img {
  height:100%;
  transition:transform .6s
}
.featured-image:hover img {
  transform:scale(1.025)
}
.featured-image-1 {
  grid-column:1/span 5
}
.featured-image-2 {
  grid-column:6/span 7;
  margin-top:110px
}
.featured-image-3 {
  grid-column:1/span 7
}
.featured-image-4 {
  grid-column:8/span 5;
  margin-top:90px
}
.featured-image-5 {
  grid-column:1/span 5
}
.featured-image-6 {
  grid-column:6/span 7;
  margin-top:110px
}
.featured-image-1 img,
.featured-image-4 img,
.featured-image-5 img {
  aspect-ratio:4/5
}
.featured-image-2 img,
.featured-image-3 img,
.featured-image-6 img {
  aspect-ratio:5/4
}
.featured-mobile-link {
  display:none
}
.portfolio-body {
  background:#f8f7f3
}
.portfolio-masthead {
  position:relative
}
.portfolio-masthead [aria-current="page"] {
  color:var(--blue);
  border-bottom-color:var(--gold)
}
.portfolio-main {
  padding:120px max(4vw,24px) 140px
}
.portfolio-intro {
  max-width:1380px;
  margin:auto;
  display:grid;
  grid-template-columns:1fr 1.2fr;
  gap:22px 8vw;
  border-top:1px solid #c9c5bb;
  padding-top:24px
}
.portfolio-intro .section-no {
  grid-column:1/-1
}
.portfolio-intro h1 {
  font:500 clamp(3.4rem,7vw,7.5rem)/.85 Arial;
  letter-spacing:-.055em;
  color:var(--navy)
}
.portfolio-intro>p:last-child {
  font:400 clamp(1.25rem,2vw,1.9rem)/1.4 Georgia;
  max-width:680px
}
.portfolio-filters {
  max-width:1380px;
  margin:65px auto 55px;
  display:flex;
  gap:28px;
  overflow-x:auto;
  border-bottom:1px solid #cfcbc1
}
.portfolio-filters button {
  flex:none;
  border:0;
  border-bottom:2px solid transparent;
  background:transparent;
  padding:0 0 14px;
  color:#676a70;
  font:700 .67rem Arial;
  letter-spacing:.1em;
  text-transform:uppercase;
  cursor:pointer
}
.portfolio-filters button.active,
.portfolio-filters button:hover {
  color:var(--navy);
  border-bottom-color:var(--navy)
}
.portfolio-filters button:focus-visible,
.portfolio-card a:focus-visible {
  outline:2px solid var(--gold);
  outline-offset:4px
}
.portfolio-grid {
  max-width:1380px;
  margin:auto;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:68px 28px;
  align-items:start
}
.portfolio-card>a {
  display:block;
  position:relative;
  overflow:hidden;
  background:#dedbd3
}
.portfolio-card>a:after {
  content:"";
  position:absolute;
  inset:0;
  background:rgba(15,24,58,0);
  transition:.3s
}
.portfolio-card img {
  height:auto;
  max-height:610px;
  transition:transform .55s
}
.portfolio-card:nth-child(3n+1) img {
  aspect-ratio:3/4
}
.portfolio-card:nth-child(3n+2) img {
  aspect-ratio:4/5
}
.portfolio-card:nth-child(3n) img {
  aspect-ratio:4/3
}
.portfolio-card>a span {
  position:absolute;
  z-index:2;
  left:17px;
  bottom:14px;
  color:white;
  text-transform:uppercase;
  letter-spacing:.15em;
  font-size:.63rem;
  font-weight:700;
  opacity:0;
  transition:.3s
}
.portfolio-card>a:hover img {
  transform:scale(1.025)
}
.portfolio-card>a:hover:after {
  background:rgba(15,24,58,.18)
}
.portfolio-card>a:hover span {
  opacity:1
}
.portfolio-card>div {
  border-top:1px solid #aaa9a2;
  margin-top:15px;
  padding-top:16px
}
.portfolio-card h2 {
  font-size:1.6rem;
  color:var(--navy)
}
.portfolio-card p {
  font:400 .92rem Georgia;
  color:var(--muted)
}
.portfolio-card .portfolio-location {
  font:700 .68rem Arial;
  text-transform:uppercase;
  letter-spacing:.1em;
  margin:8px 0
}
.portfolio-cta {
  text-align:center;
  background:var(--navy);
  color:white;
  padding:115px 24px
}
.portfolio-cta .section-no {
  color:var(--gold)
}
.portfolio-cta h2 {
  font-size:clamp(2.8rem,5vw,5rem);
  max-width:800px;
  margin:22px auto 36px
}
.section {padding: 110px max(5vw,24px);}
.portfolio-cta>a {
  display:inline-block;
  background:var(--gold);
  color:var(--navy);
  padding:16px 24px;
  text-transform:uppercase;
  letter-spacing:.13em;
  font-weight:700;
  font-size:.7rem
}
.choices{background:var(--cream)}
.section-heading {
  display:grid;
  grid-template-columns:1.25fr .75fr;
  gap:8vw;
  align-items:end;
  margin-bottom:55px
}
.section-heading>p {
  color:#c9bbb2;
  max-width:570px
}
.choices .section-heading>p{color:var(--muted)}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.steps article{background:#fff;padding:20px 20px 32px}.steps article>span{display:block;color:var(--wine);font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700;margin:8px 0 16px}.steps img{width:100%;aspect-ratio:1.55}.steps h3{font-size:1.65rem;margin:24px 0 12px}.steps p{font-size:.9rem;color:var(--muted)}.custom-solution{margin-top:90px;display:grid;grid-template-columns:1fr 1fr;gap:7vw;align-items:center}.custom-solution img{width:100%}.custom-solution h3{font-size:clamp(2rem,4vw,3.5rem);margin-bottom:20px}.custom-solution p:last-child{color:var(--muted)}
:root {
  --navy:#0F183A;
  --blue:#1D3179;
  --gold:#C79544;
  --olive:#796431;
  --cream:#F3EFE5;
  --paper:#FBFAF7;
  --ink:#111522;
  --muted:#646978;
  --line:#D8CFBD;
  --white:#fff
}
* {
  box-sizing:border-box
}
html {
  scroll-behavior:smooth
}
body {
  margin:0;
  background:var(--paper);
  color:var(--ink);
  font-family:Arial,Helvetica,sans-serif;
  line-height:1.6
}
img {
  display:block;
  width:100%;
  object-fit:cover
}
a {
  color:inherit;
  text-decoration:none
}
h1,
h2,
h3,
p,
figure,
blockquote {
  margin:0
}
h1,
h2,
h3 {
  font-family:Georgia,'Times New Roman',serif;
  font-weight:400;
  line-height:1.05
}
.skip {
  position:fixed;
  top:-50px;
  left:20px;
  background:var(--gold);
  padding:10px;
  z-index:100
}
.skip:focus {
  top:10px
}
.overline,
.section-no {
  text-transform:uppercase;
  letter-spacing:.18em;
  font-weight:700;
  font-size:.68rem
}
.section-no {
  color:var(--blue)
}
.masthead {
  height:112px;
  display:grid;
  grid-template-columns:270px 1fr 220px;
  align-items:center;
  padding:0 4vw;
  border-bottom:1px solid var(--line);
  background:var(--paper);
  position:relative;
  z-index:30
}
.mark img {
  width:235px;
  height:auto
}
.masthead nav {
  justify-self:center;
  display:flex;
  gap:clamp(18px,2.8vw,44px);
  font-size:.73rem;
  font-weight:700;
  letter-spacing:.12em;
  text-transform:uppercase
}
.masthead nav a {
  padding:12px 0;
  border-bottom:1px solid transparent
}
.masthead nav a:hover {
  color:var(--blue);
  border-color:var(--gold)
}
.call {
  justify-self:end;
  text-align:right;
  color:var(--blue);
  font-family:Georgia,serif;
  font-size:1.05rem
}
.call span {
  display:block;
  color:var(--muted);
  font:600 .58rem Arial;
  text-transform:uppercase;
  letter-spacing:.12em
}
.menu-check,
.menu-button {
  display:none
}
.testimonial {
  padding:110px max(10vw,30px);
  text-align:center;
  background:linear-gradient(rgba(40,18,13,.82),rgba(40,18,13,.82)),url('images/rail_04.jpg') center/cover fixed;
  color:white
}
.testimonial p {
  font-family:Georgia,serif;
  font-size:clamp(2rem,5vw,4rem);
  line-height:1.18;
  max-width:1050px;
  margin:0 auto 28px
}
.testimonial span {
  max-width:780px;
  display:block;
  margin:auto;
  color:#e5d9ce
}
.opening {
  background:var(--cream);
  min-height:750px;
  display:grid;
  grid-template-columns:90px minmax(330px,1fr) minmax(380px,1.15fr);
  grid-template-rows:1fr;
  gap:4vw;
  padding:54px 4vw 82px;
  position:relative;
  overflow:hidden
}
.datum {
  border-right:1px solid var(--line);
  display:flex;
  flex-direction:column;
  align-items:center;
  gap:12px;
  padding:12px 18px;
  color:var(--muted);
  text-transform:uppercase;
  letter-spacing:.13em;
  font-size:.58rem;
  text-align:center
}
.datum strong {
  color:var(--navy);
  font:400 2.8rem Georgia
}
.datum i {
  width:1px;
  flex:1;
  background:var(--gold);
  margin:4px 0
}
.opening-copy {
  align-self:center;
  max-width:600px;
  padding-bottom:80px
}
.opening-copy .overline {
  color:var(--olive);
  margin-bottom:26px
}
.opening h1 {
  font-size:clamp(3.2rem,5.6vw,6.2rem);
  letter-spacing:-.045em;
  color:var(--navy);
  max-width:780px
}
.deck {
  font-family:Georgia,serif;
  font-size:1.12rem;
  line-height:1.6;
  color:var(--muted);
  max-width:510px;
  margin:32px 0
}
.arrow-link {
  display:inline-flex;
  align-items:center;
  gap:45px;
  border-top:1px solid var(--navy);
  padding-top:13px;
  text-transform:uppercase;
  letter-spacing:.13em;
  font-weight:700;
  font-size:.72rem
}
.arrow-link b {
  font-size:1.2rem;
  color:var(--gold)
}
.opening-photo {
  height:610px;
  position:relative
}
.opening-photo img {
  height:100%;
  object-position:center
}
.opening-photo figcaption {
  display:flex;
  justify-content:space-between;
  padding-top:10px;
  font-size:.62rem;
  text-transform:uppercase;
  letter-spacing:.12em;
  color:var(--muted)
}
.process-inset {
  position:absolute;
  width:270px;
  height:195px;
  right:34%;
  bottom:34px;
  border:8px solid var(--paper);
  box-shadow:0 14px 35px rgba(15,24,58,.13)
}
.process-inset img {
  height:155px
}
.process-inset figcaption {
  height:40px;
  padding:9px 10px;
  background:var(--navy);
  color:white;
  text-transform:uppercase;
  letter-spacing:.12em;
  font-size:.58rem
}
.craft-index {
  background:var(--navy);
  color:white;
  padding:100px 6vw 108px;
  display:grid;
  grid-template-columns:.9fr 1.1fr;
  gap:10vw
}
.craft-index header h2 {
  font-size:clamp(2.6rem,4.8vw,5rem);
  margin:24px 0 30px
}
.craft-index header>p:last-child {
  color:#B9BED0;
  max-width:470px
}
.craft-index .section-no {
  color:var(--gold)
}
.craft-lines {
  list-style:none;
  margin:0;
  padding:0
}
.craft-lines li {
  display:grid;
  grid-template-columns:55px 150px 1fr;
  gap:18px;
  align-items:baseline;
  padding:30px 0;
  border-top:1px solid #354064
}
.craft-lines li:last-child {
  border-bottom:1px solid #354064
}
.craft-lines span {
  color:var(--gold);
  font-size:.68rem
}
.craft-lines h3 {
  font-size:1.7rem
}
.craft-lines p {
  color:#C7CAD6;
  font-size:.88rem
}
.landing-image {
  height:760px;
  position:relative;
  background:var(--navy);
  overflow:hidden
}
.landing-image>img {
  height:100%;
  object-position:center 42%
}
.landing-image:after {
  content:"";
  position:absolute;
  inset:0;
  background:linear-gradient(90deg,rgba(15,24,58,.78),transparent 66%)
}
.landing-image blockquote {
  position:absolute;
  z-index:2;
  left:7vw;
  top:50%;
  transform:translateY(-50%);
  width:min(560px,70vw);
  color:white;
  font:400 clamp(2rem,4vw,4.1rem)/1.15 Georgia
}
.landing-image cite {
  display:block;
  font:600 .68rem Arial;
  text-transform:uppercase;
  letter-spacing:.14em;
  color:#E1C893;
  margin-top:28px
}
.margin-note {
  position:absolute;
  z-index:2;
  right:25px;
  bottom:90px;
  color:white;
  writing-mode:vertical-rl;
  text-transform:uppercase;
  letter-spacing:.14em;
  font-size:.6rem
}
.work {
  padding:120px 3vw 130px;
  background:var(--cream)
}
.work-heading {
  display:grid;
  grid-template-columns:.8fr 1.4fr .8fr;
  gap:5vw;
  align-items:end;
  margin:0 4vw 65px
}
.work-heading .section-no {
  align-self:start
}
.work-heading h2 {
  font-size:clamp(3rem,5vw,5.4rem);
  color:var(--navy)
}
.work-heading>p:last-child {
  color:var(--muted);
  font-family:Georgia,serif
}
.gallery-grid {
  display:grid;
  grid-template-columns:1.1fr .75fr 1.05fr .85fr;
  grid-auto-rows:210px;
  gap:10px
}
.gallery-grid a {
  position:relative;
  overflow:hidden;
  background:var(--navy)
}
.gallery-grid a:nth-child(1) {
  grid-column:span 2;
  grid-row:span 3
}
.gallery-grid a:nth-child(2) {
  grid-row:span 2
}
.gallery-grid a:nth-child(4) {
  grid-row:span 2
}
.gallery-grid a:nth-child(6) {
  grid-column:span 2;
  grid-row:span 2
}
.gallery-grid a:nth-child(9) {
  grid-row:span 2
}
.gallery-grid a:nth-child(12) {
  grid-column:span 2
}
.gallery-grid img {
  height:100%;
  transition:transform .45s,filter .45s
}
.gallery-grid a:after {
  content:"";
  position:absolute;
  inset:55% 0 0;
  background:linear-gradient(transparent,rgba(15,24,58,.9))
}
.gallery-grid span {
  position:absolute;
  z-index:2;
  left:17px;
  bottom:13px;
  color:white;
  font:400 .9rem Georgia
}
.gallery-grid a:hover img {
  transform:scale(1.035);
  filter:saturate(.82)
}
.family {
  display:grid;
  grid-template-columns:.85fr 1.15fr;
  gap:7vw;
  padding:120px 6vw 95px
}
.family-lead {
  max-width:520px;
  align-self:center
}
h2 {
  font-size:clamp(3rem,5vw,5.2rem);
  margin:24px 0 30px
}
.family-lead>p:last-child {
  color:var(--muted)
}
.family-portrait {
  position:relative
}
.family-portrait img {
  height:560px
}
.family-portrait span {
  position:absolute;
  left:-36px;
  bottom:28px;
  background:var(--gold);
  color:var(--navy);
  padding:16px 24px;
  text-transform:uppercase;
  letter-spacing:.15em;
  font-size:.65rem;
  font-weight:700
}
.family-roster {
  grid-column:1/-1;
  display:grid;
  grid-template-columns:repeat(5,1fr);
  gap:1px;
  background:var(--line);
  margin-top:28px;
  border:1px solid var(--line)
}
.family-roster figure {
  background:var(--paper);
  padding:12px
}
.family-roster img {
  aspect-ratio:1;
  filter:sepia(.1)
}
.family-roster figcaption {
  font-family:Georgia,serif;
  padding:12px 2px 5px
}
.family-roster small {
  display:block;
  color:var(--blue);
  font:700 .58rem Arial;
  text-transform:uppercase;
  letter-spacing:.13em;
  margin-top:3px
}
.family-roster .memorial {
  background:#F1EEE5
}
.family-roster .memorial img {
  filter:grayscale(.28) sepia(.15)
}
.process {
  background:var(--paper);
  padding:105px 7vw 130px;
  border-top:1px solid var(--line)
}
.process header {
  display:flex;
  justify-content:space-between;
  align-items:start;
  margin-bottom:80px
}
.process header h2 {
  font-size:clamp(2.8rem,5vw,5.2rem);
  color:var(--navy);
  width:60%
}
.process-step {
  min-height:320px;
  display:grid;
  grid-template-columns:90px 1fr 360px;
  gap:5vw;
  align-items:center;
  border-top:1px solid var(--line);
  padding:44px 0
}
.process-step>strong {
  font:400 5rem Georgia;
  color:var(--gold)
}
.process-step h3 {
  font-size:2.2rem;
  color:var(--navy);
  margin:10px 0 18px
}
.process-step p:last-child {
  max-width:650px;
  color:var(--muted)
}
.process-step img {
  height:250px
}
.step-two {
  grid-template-columns:90px 360px 1fr;
  margin-left:8vw
}
.step-three {
  margin-left:16vw
}
.process-step .overline {
  color:var(--olive)
}
.questions {
  display:grid;
  grid-template-columns:.7fr 1.3fr;
  gap:9vw;
  padding:105px 7vw;
  background:var(--blue);
  color:white
}
.questions aside {
  position:sticky;
  top:40px;
  align-self:start
}
.questions aside .section-no {
  color:var(--gold)
}
.questions aside h2 {
  font-size:clamp(2.8rem,4.5vw,4.8rem);
  margin:22px 0
}
.questions aside>p:last-of-type {
  color:#C2C7DA;
  max-width:350px
}
.questions aside>a {
  display:inline-block;
  margin-top:24px;
  color:#F1D69F;
  font:400 1.4rem Georgia
}
.question-list details {
  border-top:1px solid #53639E
}
.question-list details:last-child {
  border-bottom:1px solid #53639E
}
.question-list summary {
  cursor:pointer;
  list-style:none;
  display:flex;
  justify-content:space-between;
  gap:20px;
  padding:23px 0;
  font:400 1.3rem Georgia
}
.question-list summary::-webkit-details-marker {
  display:none
}
.question-list summary span {
  color:var(--gold);
  font:300 1.6rem Arial
}
.question-list details[open] summary span {
  transform:rotate(45deg)
}
.question-list details p {
  color:#CDD1DF;
  max-width:720px;
  padding:0 30px 28px 0
}
.contact {
  padding:110px 6vw 90px;
  background:var(--gold);
  color:var(--navy);
  display:grid;
  grid-template-columns:1.2fr .8fr;
  gap:50px 8vw
}
.contact-title h2 {
  font-size:clamp(3rem,5.5vw,5.8rem);
  margin-top:22px
}
.contact-note {
  align-self:end;
  font-family:Georgia,serif;
  font-size:1.05rem;
  max-width:460px
}
.contact-note address {
  font:600 .65rem Arial;
  text-transform:uppercase;
  letter-spacing:.13em;
  margin-top:28px
}
.contact-links {
  grid-column:1/-1;
  display:grid;
  grid-template-columns:1fr 1fr 1.4fr;
  border-top:1px solid rgba(15,24,58,.45);
  border-bottom:1px solid rgba(15,24,58,.45)
}
.contact-links a {
  padding:20px;
  border-right:1px solid rgba(15,24,58,.45);
  font:400 1.2rem Georgia
}
.contact-links a:last-child {
  border-right:0
}
.contact-links span {
  display:block;
  font:700 .55rem Arial;
  text-transform:uppercase;
  letter-spacing:.13em;
  margin-bottom:5px
}
.contact form {
  grid-column:1/-1;
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  gap:20px
}
.contact label {
  font-size:.6rem;
  text-transform:uppercase;
  letter-spacing:.13em;
  font-weight:700
}
.contact input,
.contact textarea {
  display:block;
  width:100%;
  border:0;
  border-bottom:1px solid var(--navy);
  background:transparent;
  padding:12px 3px;
  font:inherit;
  color:var(--navy);
  border-radius:0
}
.contact .wide {
  grid-column:1/-1
}
.contact button {
  grid-column:1/-1;
  justify-self:end;
  border:0;
  background:var(--navy);
  color:white;
  padding:17px 24px;
  text-transform:uppercase;
  letter-spacing:.12em;
  font-weight:700;
  cursor:pointer
}
.contact button b {
  color:var(--gold);
  margin-left:35px
}
footer {
  min-height:240px;
  background:var(--navy);
  color:white;
  padding:60px 6vw 28px;
  display:grid;
  grid-template-columns:1.2fr 1fr .8fr;
  gap:40px;
  align-items:start
}
footer img {
  width:250px;
  filter:brightness(0) invert(1)
}
footer p {
  color:#B6BACA
}
footer nav {
  display:flex;
  flex-direction:column;
  align-items:flex-start;
  gap:8px;
  text-transform:uppercase;
  letter-spacing:.12em;
  font-size:.64rem
}
footer small {
  grid-column:1/-1;
  border-top:1px solid #39415F;
  padding-top:20px;
  color:#8F95A9
}
@media(max-width:980px) {
  .masthead {
    grid-template-columns:230px 1fr 45px;
    height:94px
  }
  .call {
    display:none
  }
  .menu-button {
    display:grid;
    gap:7px;
    justify-self:end;
    cursor:pointer
  }
  .menu-button span {
    width:28px;
    height:2px;
    background:var(--navy)
  }
  .masthead nav {
    display:none;
    position:absolute;
    top:94px;
    left:0;
    right:0;
    background:var(--paper);
    padding:30px 4vw;
    flex-direction:column;
    align-items:flex-start;
    border-bottom:1px solid var(--line)
  }
  .menu-check:checked~nav {
    display:flex
  }
  .opening {
    grid-template-columns:60px 1fr 1fr;
    gap:3vw
  }
  .process-inset {
    right:28%
  }
  .craft-index {
    gap:6vw
  }
  .work-heading {
    grid-template-columns:.5fr 1.5fr
  }
  .work-heading>p:last-child {
    grid-column:2
  }
  .gallery-grid {
    grid-template-columns:repeat(3,1fr)
  }
  .gallery-grid a:nth-child(1) {
    grid-column:span 2
  }
  .gallery-grid a:nth-child(6) {
    grid-column:span 1
  }
  .family {
    gap:4vw
  }
  .process-step,
  .step-two {
    grid-template-columns:70px 1fr 270px;
    margin-left:0
  }
  .step-three {
    margin-left:0
  }
  .questions {
    gap:5vw
  }
}
@media(max-width:700px) {
  .masthead {
    height:82px;
    padding:0 20px;
    grid-template-columns:1fr 40px
  }
  .mark img {
    width:205px
  }
  .masthead nav {
    top:82px
  }
  .opening {
    display:grid;
    grid-template-columns:42px 1fr;
    padding:28px 20px 64px;
    min-height:0
  }
  .datum {
    grid-row:1/3
  }
  .datum strong {
    font-size:2rem
  }
  .opening-copy {
    grid-column:2;
    padding:38px 0 32px
  }
  .opening h1 {
    font-size:3.35rem
  }
  .opening-photo {
    grid-column:2;
    height:480px
  }
  .process-inset {
    width:180px;
    height:135px;
    right:8px;
    bottom:10px
  }
  .process-inset img {
    height:100px
  }
  .craft-index {
    grid-template-columns:1fr;
    padding:75px 24px
  }
  .craft-lines li {
    grid-template-columns:34px 1fr
  }
  .craft-lines li p {
    grid-column:2
  }
  .landing-image {
    height:650px
  }
  .landing-image blockquote {
    left:25px;
    width:82vw;
    font-size:2.25rem
  }
  .work {
    padding:80px 10px
  }
  .work-heading {
    display:block;
    margin:0 15px 40px
  }
  .work-heading h2 {
    margin:20px 0
  }
  .gallery-grid {
    grid-template-columns:repeat(2,1fr);
    grid-auto-rows:155px;
    gap:6px
  }
  .gallery-grid a:nth-child(1) {
    grid-column:span 2;
    grid-row:span 2
  }
  .gallery-grid a:nth-child(2),
  .gallery-grid a:nth-child(4),
  .gallery-grid a:nth-child(6),
  .gallery-grid a:nth-child(9),
  .gallery-grid a:nth-child(12) {
    grid-column:span 1;
    grid-row:span 1
  }
  .gallery-grid span {
    font-size:.72rem;
    left:10px;
    bottom:8px
  }
  .family {
    grid-template-columns:1fr;
    padding:80px 24px
  }
  .family-portrait img {
    height:400px
  }
  .family-roster {
    grid-template-columns:repeat(2,1fr);
    margin-top:0
  }
  .family-roster figure:last-child {
    grid-column:span 2
  }
  .process {
    padding:80px 24px
  }
  .process header {
    display:block
  }
  .process header h2 {
    width:100%;
    margin-top:20px
  }
  .process-step,
  .step-two,
  .step-three {
    grid-template-columns:50px 1fr;
    gap:18px;
    padding:34px 0
  }
  .process-step>strong {
    font-size:3.5rem
  }
  .process-step img {
    grid-column:2;
    height:210px
  }
  .step-two img {
    grid-row:auto
  }
  .questions {
    grid-template-columns:1fr;
    padding:75px 24px
  }
  .questions aside {
    position:static
  }
  .contact {
    grid-template-columns:1fr;
    padding:75px 24px
  }
  .contact-links {
    grid-template-columns:1fr
  }
  .contact-links a {
    border-right:0;
    border-bottom:1px solid rgba(15,24,58,.45)
  }
  .contact form {
    grid-template-columns:1fr
  }
  .contact .wide {
    grid-column:1
  }
  .contact button {
    justify-self:start
  }
  footer {
    grid-template-columns:1fr;
    padding:50px 24px
  }
}
@media(prefers-reduced-motion:reduce) {
  html {
    scroll-behavior:auto
  }
  .gallery-grid img {
    transition:none
  }
}
.opening {
  grid-template-columns:minmax(330px,1fr) minmax(380px,1.15fr)
}
.hero-stats {
  display:grid;
  grid-template-columns:1fr 1fr 1fr;
  background:var(--navy);
  color:white;
  padding:0 6vw
}
.hero-stats p {
  display:flex;
  align-items:baseline;
  gap:24px;
  padding:25px 2vw;
  border-right:1px solid #39415f
}
.hero-stats p:last-child {
  border-right:0
}
.hero-stats span {
  color:var(--gold);
  font-size:.56rem;
  font-weight:700;
  letter-spacing:.15em;
  text-transform:uppercase
}
.hero-stats strong {
  font:400 1.25rem Georgia
}
.family-portrait img {
  height:auto;
  object-fit:contain
}
.gallery-grid a:nth-child(9) {
  grid-row:span 1
}
.gallery-grid a:nth-child(10) {
  grid-column:span 2;
  grid-row:span 2
}
@media(max-width:980px) {
  .opening {
    grid-template-columns:1fr 1fr
  }
  .hero-stats {
    padding:0 3vw
  }
  .hero-stats p {
    display:block
  }
  .hero-stats span,
  .hero-stats strong {
    display:block
  }
  .hero-stats span {
    margin-bottom:5px
  }
}
@media(max-width:700px) {
  .opening {
    grid-template-columns:1fr;
    padding:28px 20px 64px
  }
  .opening-copy,
  .opening-photo {
    grid-column:1
  }
  .hero-stats {
    grid-template-columns:1fr;
    padding:0 24px
  }
  .hero-stats p {
    display:flex;
    padding:18px 0;
    border-right:0;
    border-bottom:1px solid #39415f
  }
  .hero-stats p:last-child {
    border-bottom:0
  }
  .hero-stats span {
    width:90px;
    flex:0 0 auto
  }
  .family-portrait img {
    height:auto
  }
}
.featured-work {
  padding:120px 5vw 135px;
  background:var(--cream)
}
.featured-heading {
  display:grid;
  grid-template-columns:1fr 1fr;
  gap:8vw;
  max-width:1380px;
  margin:0 auto 60px;
  border-top:1px solid var(--line);
  padding-top:25px
}
.featured-heading h2 {
  font-size:clamp(3rem,6vw,6.5rem);
  color:var(--navy);
  margin-top:20px
}
.featured-heading>div:last-child {
  align-self:end;
  max-width:560px
}
.featured-heading>div:last-child>p {
  font:400 clamp(1.05rem,1.7vw,1.45rem)/1.5 Georgia;
  color:var(--muted)
}
.featured-heading .arrow-link {
  margin-top:22px
}
.featured-grid {
  max-width:1380px;
  margin:auto;
  display:grid;
  grid-template-columns:repeat(12,1fr);
  gap:22px;
  align-items:start
}
.featured-image {
  overflow:hidden;
  background:#dedbd3
}
.featured-image img {
  height:100%;
  transition:transform .6s
}
.featured-image:hover img {
  transform:scale(1.025)
}
.featured-image-1 {
  grid-column:1/span 5
}
.featured-image-2 {
  grid-column:6/span 7;
  margin-top:110px
}
.featured-image-3 {
  grid-column:1/span 7
}
.featured-image-4 {
  grid-column:8/span 5;
  margin-top:90px
}
.featured-image-5 {
  grid-column:1/span 5
}
.featured-image-6 {
  grid-column:6/span 7;
  margin-top:110px
}
.featured-image-1 img,
.featured-image-4 img,
.featured-image-5 img {
  aspect-ratio:4/5
}
.featured-image-2 img,
.featured-image-3 img,
.featured-image-6 img {
  aspect-ratio:5/4
}
.featured-mobile-link {
  display:none
}
.portfolio-body {
  background:#f8f7f3
}
.portfolio-masthead {
  position:relative
}
.portfolio-masthead [aria-current="page"] {
  color:var(--blue);
  border-bottom-color:var(--gold)
}
.portfolio-main {
  padding:120px max(4vw,24px) 140px
}
.portfolio-intro {
  max-width:1380px;
  margin:auto;
  display:grid;
  grid-template-columns:1fr 1.2fr;
  gap:22px 8vw;
  border-top:1px solid #c9c5bb;
  padding-top:24px
}
.portfolio-intro .section-no {
  grid-column:1/-1
}
.portfolio-intro h1 {
  font:500 clamp(3.4rem,7vw,7.5rem)/.85 Arial;
  letter-spacing:-.055em;
  color:var(--navy)
}
.portfolio-intro>p:last-child {
  font:400 clamp(1.25rem,2vw,1.9rem)/1.4 Georgia;
  max-width:680px
}
.portfolio-filters {
  max-width:1380px;
  margin:65px auto 55px;
  display:flex;
  gap:28px;
  overflow-x:auto;
  border-bottom:1px solid #cfcbc1
}
.portfolio-filters button {
  flex:none;
  border:0;
  border-bottom:2px solid transparent;
  background:transparent;
  padding:0 0 14px;
  color:#676a70;
  font:700 .67rem Arial;
  letter-spacing:.1em;
  text-transform:uppercase;
  cursor:pointer
}
.portfolio-filters button.active,
.portfolio-filters button:hover {
  color:var(--navy);
  border-bottom-color:var(--navy)
}
.portfolio-filters button:focus-visible,
.portfolio-card a:focus-visible {
  outline:2px solid var(--gold);
  outline-offset:4px
}
.portfolio-grid {
  max-width:1380px;
  margin:auto;
  display:grid;
  grid-template-columns:repeat(3,minmax(0,1fr));
  gap:68px 28px;
  align-items:start
}
.portfolio-card>a {
  display:block;
  position:relative;
  overflow:hidden;
  background:#dedbd3
}
.portfolio-card>a:after {
  content:"";
  position:absolute;
  inset:0;
  background:rgba(15,24,58,0);
  transition:.3s
}
.portfolio-card img {
  height:auto;
  max-height:610px;
  transition:transform .55s
}
.portfolio-card:nth-child(3n+1) img {
  aspect-ratio:3/4
}
.portfolio-card:nth-child(3n+2) img {
  aspect-ratio:4/5
}
.portfolio-card:nth-child(3n) img {
  aspect-ratio:4/3
}
.portfolio-card>a span {
  position:absolute;
  z-index:2;
  left:17px;
  bottom:14px;
  color:white;
  text-transform:uppercase;
  letter-spacing:.15em;
  font-size:.63rem;
  font-weight:700;
  opacity:0;
  transition:.3s
}
.portfolio-card>a:hover img {
  transform:scale(1.025)
}
.portfolio-card>a:hover:after {
  background:rgba(15,24,58,.18)
}
.portfolio-card>a:hover span {
  opacity:1
}
.portfolio-card>div {
  border-top:1px solid #aaa9a2;
  margin-top:15px;
  padding-top:16px
}
.portfolio-card h2 {
  font-size:1.6rem;
  color:var(--navy)
}
.portfolio-card p {
  font:400 .92rem Georgia;
  color:var(--muted)
}
.portfolio-card .portfolio-location {
  font:700 .68rem Arial;
  text-transform:uppercase;
  letter-spacing:.1em;
  margin:8px 0
}
.portfolio-cta {
  text-align:center;
  background:var(--navy);
  color:white;
  padding:115px 24px
}
.portfolio-cta .section-no {
  color:var(--gold)
}
.portfolio-cta h2 {
  font-size:clamp(2.8rem,5vw,5rem);
  max-width:800px;
  margin:22px auto 36px
}
.section {padding: 110px max(5vw,24px);}
.portfolio-cta>a {
  display:inline-block;
  background:var(--gold);
  color:var(--navy);
  padding:16px 24px;
  text-transform:uppercase;
  letter-spacing:.13em;
  font-weight:700;
  font-size:.7rem
}
.section-heading>p{color:#c9bbb2;max-width:570px}
.choices{background:var(--cream)}.choices .section-heading>p{color:var(--muted)}.steps{display:grid;grid-template-columns:repeat(3,1fr);gap:24px}.steps article{background:#fff;padding:20px 20px 32px}.steps article>span{display:block;color:var(--wine);font-size:.72rem;text-transform:uppercase;letter-spacing:.14em;font-weight:700;margin:8px 0 16px}.steps img{width:100%;aspect-ratio:1.55}.steps h3{font-size:1.65rem;margin:24px 0 12px}.steps p{font-size:.9rem;color:var(--muted)}.custom-solution{margin-top:90px;display:grid;grid-template-columns:1fr 1fr;gap:7vw;align-items:center}.custom-solution img{width:100%}.custom-solution h3{font-size:clamp(2rem,4vw,3.5rem);margin-bottom:20px}.custom-solution p:last-child{color:var(--muted)}
.choices.section{padding-top:88px;padding-bottom:92px}.choices .section-heading{margin-bottom:42px}.choices .steps{gap:18px}.choices .steps article{padding:16px 16px 24px}.choices .steps img{aspect-ratio:1.8}.choices .steps h3{margin:18px 0 9px}.solutions-merge{margin-top:56px;padding-top:26px;border-top:1px solid var(--line);display:grid;grid-template-columns:repeat(2,minmax(0,1fr));gap:20px}.solutions-heading{grid-column:1/-1;display:flex;justify-content:space-between;align-items:end;gap:30px;margin-bottom:6px}.solutions-heading .kicker{margin:0}.solutions-heading h3{font-size:clamp(1.6rem,2.5vw,2.5rem);max-width:520px;text-align:right}.solution-feature{background:#fff;display:grid;grid-template-columns:180px 1fr;gap:0;align-items:stretch;border:1px solid var(--line);min-width:0}.solution-feature>img,.solution-feature-reverse>img{width:180px;height:100%;min-height:310px;object-fit:cover;object-position:center}.solution-feature-reverse>img{grid-column:1;grid-row:1;object-position:center 38%}.solution-feature>div,.solution-feature-reverse>div{padding:26px;max-width:none;justify-self:stretch}.solution-feature-reverse>div{grid-column:2;grid-row:1}.solution-feature h3{font-size:clamp(1.7rem,2.2vw,2.5rem);margin:0 0 13px}.solution-feature>div>p:not(.kicker){font:400 .95rem/1.5 Georgia;color:var(--muted)}.solution-feature .kicker{font-size:.58rem;margin-bottom:10px}.solution-feature .arrow-link{margin-top:18px;gap:22px;font-size:.62rem}
.choices .steps .wood-sample-grid{height:auto;aspect-ratio:1.8;display:grid;grid-template-columns:repeat(4,1fr);gap:3px;background:var(--line);overflow:hidden}.wood-sample-grid figure{margin:0;position:relative;min-width:0;background:#e8e2d7}.choices .steps .wood-sample-grid img{width:100%;height:100%;aspect-ratio:auto;object-fit:cover}.wood-sample-grid figcaption{position:absolute;left:0;right:0;bottom:0;padding:20px 5px 6px;background:linear-gradient(transparent,rgba(15,24,58,.82));color:#fff;text-align:center;font:700 .53rem/1 Arial;text-transform:uppercase;letter-spacing:.07em}
.choices .steps img.wood-species-image{aspect-ratio:16/9;object-fit:cover;object-position:center}
.choices .steps img.stair-type-image{aspect-ratio:16/9;object-fit:cover;object-position:center}
@media(max-width:1100px){.solutions-merge{grid-template-columns:1fr}.solutions-heading{grid-column:1}.solution-feature{grid-template-columns:230px 1fr}.solution-feature>img,.solution-feature-reverse>img{width:230px;min-height:300px}}
@media(max-width:600px){.choices .section-heading h2{font-size:2.8rem}.solutions-merge{margin-top:48px;padding-top:24px}.solutions-heading{display:block;margin-bottom:4px}.solutions-heading h3{text-align:left;margin-top:10px}.solution-feature,.solution-feature-reverse{grid-template-columns:1fr}.solution-feature>img,.solution-feature-reverse>img{grid-column:1;grid-row:1;width:100%;height:240px;min-height:0}.solution-feature>div,.solution-feature-reverse>div{grid-column:1;grid-row:2;padding:26px}.solution-feature h3{font-size:2.25rem}}

/* Portfolio page alignment with the homepage editorial system */
.portfolio-body .portfolio-intro h1 {
  font-family:Georgia,serif;
  font-weight:400;
  line-height:.92;
  letter-spacing:-.045em
}
.portfolio-body .portfolio-intro>p:last-child {
  color:var(--muted)
}
.portfolio-body .portfolio-card h2 {
  font-family:Georgia,serif;
  font-weight:400
}
.portfolio-body .portfolio-cta>a {
  transition:background .2s,color .2s
}
.portfolio-body .portfolio-cta>a:hover {
  background:var(--paper);
  color:var(--navy)
}
@media(max-width:980px) {
  .portfolio-body .portfolio-intro {
    grid-template-columns:1fr
  }
  .portfolio-body .portfolio-grid {
    grid-template-columns:repeat(2,minmax(0,1fr))
  }
}
@media(max-width:700px) {
  .portfolio-body .portfolio-main {
    padding:72px 18px 88px
  }
  .portfolio-body .portfolio-intro h1 {
    margin:18px 0
  }
  .portfolio-body .portfolio-filters {
    gap:22px;
    margin:45px auto 40px
  }
  .portfolio-body .portfolio-grid {
    grid-template-columns:1fr;
    gap:52px
  }
  .portfolio-body .portfolio-card:nth-child(n) img {
    aspect-ratio:auto;
    max-height:none
  }
  .portfolio-body .portfolio-card>a span {
    opacity:1
  }
}

/* Editorial introduction for Solutions 04 and 05 */
.solutions-merge {
  padding-top:0;
  border-top:0
}
.solutions-heading {
  display:grid;
  grid-template-columns:minmax(220px,.75fr) minmax(320px,1.25fr);
  align-items:end;
  gap:40px;
  margin-bottom:4px;
  padding:30px 34px 32px;
  background:var(--navy);
  color:var(--white)
}
.solutions-heading .solutions-eyebrow {
  margin:0;
  color:#d9dce7;
  font-size:.66rem;
  font-weight:700;
  line-height:1.45;
  letter-spacing:.14em;
  text-transform:uppercase
}
.solutions-heading .solutions-eyebrow span {
  display:block;
  margin-bottom:14px;
  color:var(--gold);
  font:400 1.15rem/1 Georgia,serif;
  letter-spacing:.08em
}
.solutions-heading h3 {
  justify-self:end;
  max-width:600px;
  color:var(--white);
  font-size:clamp(2.25rem,4vw,4.3rem);
  line-height:.98;
  letter-spacing:-.035em;
  text-align:left
}
@media(max-width:700px) {
  .solutions-heading {
    display:grid;
    grid-template-columns:1fr;
    gap:22px;
    padding:26px 24px 29px
  }
  .solutions-heading h3 {
    justify-self:start;
    margin:0;
    font-size:2.7rem
  }
}

/* Alternate light editorial treatment for the additional solutions heading */
.solutions-heading {
  grid-template-columns:minmax(0,1.4fr) minmax(240px,.6fr);
  align-items:end;
  gap:7vw;
  margin-bottom:8px;
  padding:28px 4px 30px;
  background:transparent;
  color:var(--navy);
  border-top:1px solid var(--line);
  border-bottom:1px solid var(--line)
}
.solutions-heading-main {
  max-width:760px
}
.solutions-heading .solutions-label {
  margin:0 0 14px;
  color:var(--gold);
  font-size:.66rem;
  font-weight:700;
  line-height:1;
  letter-spacing:.17em;
  text-transform:uppercase
}
.solutions-heading .solutions-heading-main h3 {
  justify-self:start;
  max-width:760px;
  color:var(--navy);
  font-size:clamp(2.35rem,4vw,4.6rem);
  line-height:.98;
  letter-spacing:-.04em;
  text-align:left
}
.solutions-heading .solutions-note {
  margin:0;
  padding-left:30px;
  border-left:1px solid var(--gold);
  color:var(--muted);
  font:400 clamp(1.15rem,1.6vw,1.45rem)/1.45 Georgia,serif
}
.solutions-heading .solutions-note em {
  color:var(--navy);
  font-weight:400
}
@media(max-width:700px) {
  .solutions-heading {
    grid-template-columns:1fr;
    gap:25px;
    padding:26px 0 28px
  }
  .solutions-heading .solutions-heading-main h3 {
    font-size:2.75rem
  }
.solutions-heading .solutions-note {
    padding:0 0 0 20px
  }
}

/* Refined single-column introduction for the additional solutions */
.solutions-heading {
  grid-template-columns:1fr
}
.solutions-heading-main {
  max-width:900px
}
.solutions-heading .solutions-label {
  margin:0 0 18px;
  color:var(--muted);
  font:400 clamp(1.15rem,1.6vw,1.45rem)/1.35 Georgia,serif;
  letter-spacing:0;
  text-transform:none
}
.solutions-heading .solutions-label em {
  color:var(--navy);
  font-weight:400
}

/* Centered architectural divider treatment */
.solutions-heading.solutions-heading-centered {
  display:block;
  margin-bottom:10px;
  padding:36px 20px 40px;
  text-align:center;
  border-top:1px solid var(--navy);
  border-bottom:1px solid var(--navy);
  background:var(--navy)
}
.solutions-heading-centered .solutions-kicker {
  display:flex;
  align-items:center;
  justify-content:center;
  gap:16px;
  margin:0 0 21px;
  color:var(--gold);
  font-size:.64rem;
  font-weight:700;
  line-height:1;
  letter-spacing:.17em;
  text-transform:uppercase
}
.solutions-heading-centered .solutions-kicker::before,
.solutions-heading-centered .solutions-kicker::after {
  content:"";
  width:58px;
  height:1px;
  background:var(--gold)
}
.solutions-heading.solutions-heading-centered h3 {
  max-width:1180px;
  margin:0 auto;
  color:var(--white);
  font-size:clamp(1.9rem,3vw,3.6rem);
  line-height:1;
  letter-spacing:-.045em;
  text-align:center;
  white-space:nowrap
}
@media(max-width:700px) {
  .solutions-heading.solutions-heading-centered {
    padding:30px 8px 33px
  }
  .solutions-heading-centered .solutions-kicker {
    gap:10px;
    font-size:.57rem;
    letter-spacing:.12em
  }
  .solutions-heading-centered .solutions-kicker::before,
  .solutions-heading-centered .solutions-kicker::after {
    width:24px
  }
  .solutions-heading.solutions-heading-centered h3 {
    font-size:2.2rem;
    white-space:normal
  }
}

/* Mobile family hierarchy: Alex leads the team roster */
@media(max-width:700px) {
  .family-roster figure:first-child {
    grid-column:1/-1
  }
  .family-roster figure:last-child {
    grid-column:auto
  }
  .family-roster figure:first-child img {
    aspect-ratio:4/3;
    object-position:center 32%
  }
}

/* Dual hero actions: project inquiry and selected-work preview */
.hero-actions {
  display:flex;
  align-items:flex-start;
  gap:28px;
  flex-wrap:wrap
}
.hero-actions .arrow-link {
  min-width:190px;
  justify-content:space-between
}
@media(max-width:520px) {
  .hero-actions {
    display:grid;
    grid-template-columns:1fr;
    gap:18px
  }
  .hero-actions .arrow-link {
    width:100%
  }
}

/* Dual phone numbers in the desktop masthead */
@media(min-width:981px) {
  .masthead {
    grid-template-columns:270px 1fr 300px
  }
}
.call {
  white-space:nowrap;
  font-size:.95rem
}
.call b {
  color:var(--gold);
  font-weight:400
}
.call a:hover {
  color:var(--gold)
}

/* Match the Portfolio CTA label to the homepage solutions kicker */
.portfolio-cta .section-no {
  display:flex;
  align-items:center;
  justify-content:center;
  gap:16px;
  color:var(--gold);
  font-size:.64rem;
  line-height:1;
  letter-spacing:.17em
}
.portfolio-cta .section-no::before,
.portfolio-cta .section-no::after {
  content:"";
  width:58px;
  height:1px;
  background:var(--gold)
}
@media(max-width:600px) {
  .portfolio-cta .section-no {
    gap:10px;
    font-size:.57rem;
    letter-spacing:.12em
  }
  .portfolio-cta .section-no::before,
  .portfolio-cta .section-no::after {
    width:24px
  }
}

/* Stack the Make It Yours steps into one clear column on mobile. */
@media(max-width:700px) {
  .choices .steps {
    grid-template-columns:1fr
  }
}

/* Protected contact form feedback and bot trap. */
.form-trap {
  position:absolute!important;
  width:1px!important;
  height:1px!important;
  overflow:hidden!important;
  clip:rect(0 0 0 0)!important;
  clip-path:inset(50%)!important;
  white-space:nowrap!important
}
.form-verification {
  min-height:70px
}
.form-privacy {
  margin:8px 0 0;
  color:rgba(255,255,255,.62);
  font-size:.72rem
}
.form-status {
  min-height:1.5em;
  margin-top:4px;
  font-size:.88rem
}
.form-status[data-state="success"] {
  color:#d9bf78
}
.form-status[data-state="error"] {
  color:#ffd7d7
}
#contact-form button[disabled] {
  cursor:wait;
  opacity:.62
}

/* Keep entered form content comfortably readable on desktop and mobile. */
#contact-form input,
#contact-form textarea {
  font-family:Arial, Helvetica, sans-serif;
  font-size:1rem;
  font-weight:400;
  letter-spacing:normal;
  line-height:1.5;
  text-transform:none
}
