/* Home page information layout. Loaded only by the TOP page.
   Link and button motion is supplied by interactions.css. */

.home-introduction,
.home-harmony,
.home-services-summary,
.home-spatial-simple {
  padding-block: clamp(88px, 9.4vw, 144px);
  color: #28232c;
}

:is(.home-introduction, .home-harmony, .home-services-summary, .home-spatial-simple) .eyebrow {
  margin: 0 0 22px;
  color: #756379;
  font-size: .72rem;
  line-height: 1.6;
  letter-spacing: .15em;
}

:is(.home-harmony-heading, .home-services-heading, .home-spatial-simple-copy) h2 {
  margin: 0;
  font-size: clamp(2.4rem, 4.1vw, 4.2rem);
  font-weight: 710;
  line-height: 1.3;
  letter-spacing: -.055em;
  text-wrap: balance;
}

:is(.home-introduction, .home-harmony, .home-services-summary) .text-link {
  display: inline-flex;
  align-items: center;
  gap: 20px;
  max-width: 100%;
  color: #594166;
  font-size: .88rem;
  font-weight: 650;
  line-height: 1.7;
}

.home-introduction {
  background: #fffefa;
}

.home-introduction-layout {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
  align-items: center;
  gap: clamp(42px, 8vw, 120px);
}

.home-introduction h2 {
  margin: 0;
  font-size: clamp(3.1rem, 5.5vw, 5.5rem);
  font-weight: 710;
  line-height: 1.22;
  letter-spacing: -.06em;
}

.home-introduction-lead {
  margin: 0 0 22px;
  font-size: clamp(1.25rem, 2vw, 1.85rem);
  font-weight: 500;
  line-height: 1.85;
  letter-spacing: -.03em;
}

.home-introduction-detail {
  max-width: 36em;
  margin: 0 0 30px;
  color: #625862;
  font-size: clamp(.95rem, 1.15vw, 1rem);
  font-weight: 400;
  line-height: 2;
  letter-spacing: .005em;
}

.home-introduction-detail strong {
  color: #322b37;
  font-weight: 650;
}

.home-harmony {
  background: #f8f6f3;
}

.home-harmony-heading,
.home-services-heading {
  display: grid;
  grid-template-columns: minmax(0, 1fr) minmax(0, 1.05fr);
  align-items: end;
  gap: clamp(32px, 7vw, 105px);
}

.home-harmony-intro,
.home-services-heading > p {
  max-width: 530px;
  margin: 0 0 3px;
  color: #5e555e;
  font-size: clamp(1rem, 1.22vw, 1.15rem);
  line-height: 1.95;
}

.home-harmony-figure {
  max-width: 860px;
  margin: clamp(32px, 4vw, 54px) auto 0;
}

.home-harmony-figure img {
  display: block;
  width: 100%;
  height: auto;
}

.home-harmony-footer {
  display: flex;
  align-items: baseline;
  justify-content: space-between;
  gap: 26px 50px;
  margin-top: 32px;
  padding-top: 28px;
  border-top: 1px solid #d9d1d7;
}

.home-harmony-footer > p {
  max-width: 650px;
  margin: 0;
  color: #5e555e;
  font-size: .94rem;
  line-height: 1.9;
}

.home-harmony-footer .text-link {
  flex-shrink: 0;
}

.home-services-summary {
  background: #fffefa;
}

.home-service-overview {
  display: grid;
  grid-template-columns: repeat(4, minmax(0, 1fr));
  margin: clamp(40px, 5vw, 66px) 0 0;
  padding: 0;
  list-style: none;
  border-block: 1px solid #d9d1d7;
}

.home-service-overview > li {
  min-width: 0;
  border-right: 1px solid #d9d1d7;
}

.home-service-overview > li:last-child {
  border-right: 0;
}

.home-service-overview > li > :is(a, .home-service-overview-item) {
  position: relative;
  display: flex;
  flex-direction: column;
  height: 100%;
  min-height: 258px;
  padding: 30px 25px 48px;
}

.home-service-overview > li:first-child > :is(a, .home-service-overview-item) {
  padding-left: 0;
}

.home-service-overview > li > .home-service-overview-item {
  padding-bottom: 30px;
}

.home-service-overview h3 {
  min-height: 3em;
  margin: 0 0 22px;
  font-size: clamp(1.2rem, 1.65vw, 1.5rem);
  font-weight: 650;
  line-height: 1.5;
  letter-spacing: -.045em;
  overflow-wrap: anywhere;
}

.home-service-overview p {
  margin: 0;
  color: #625963;
  font-size: .88rem;
  line-height: 1.9;
  text-wrap: pretty;
}

.home-service-overview h3 > span:not(.heading-unit) { display: block; }

.home-service-overview [data-interaction-arrow] {
  position: absolute;
  right: 25px;
  bottom: 22px;
  color: #6b5475;
  font-size: 1.2rem;
  line-height: 1;
}

.home-services-summary > .wrap > .text-link {
  margin-top: 31px;
}

/* Four examples remain open image-and-caption links. */
#works.work {
  padding-block: clamp(88px, 9.4vw, 144px);
  background: #f8f6f3;
}

#works .work-head {
  margin-bottom: 48px;
}

#works .work-head h2 {
  font-size: clamp(2.4rem, 4.1vw, 4.2rem);
  line-height: 1.3;
}

#works .home-work-list {
  grid-template-columns: repeat(2, minmax(0, 1fr));
  gap: clamp(42px, 5vw, 70px) clamp(26px, 4vw, 56px);
}

#works .home-work-item:nth-child(even) {
  margin-top: 0;
}

#works .home-work-media {
  aspect-ratio: 1.6;
}

#works .home-work-media img {
  object-fit: contain;
  padding: clamp(8px, 1vw, 15px);
}

#works .home-work-info h3 {
  font-size: clamp(1.45rem, 2.15vw, 2.1rem);
  line-height: 1.3;
}

/* The supplied artwork is shown through three circular windows, unchanged.
   Captions overlap the upper edge; the line connects the design stages. */
#process.home-process-section {
  padding-block: clamp(88px, 9.4vw, 144px);
  background: linear-gradient(180deg, #f2f2f2, #f3f1f4);
  border-top: 0;
}

#process .home-process-heading h2 {
  font-size: clamp(2.4rem, 4.1vw, 4.2rem);
  line-height: 1.3;
}

#process .home-process-list {
  --process-circle-size: clamp(112px, 11.7vw, 150px);
  --process-copy-height: 176px;
  --process-overlap: 28px;
  --process-gap: clamp(30px, 5.2vw, 76px);
  grid-template-columns: repeat(3, minmax(0, 1fr));
  gap: var(--process-gap);
  margin-top: clamp(34px, 4.5vw, 64px);
}

#process .home-process-step {
  position: relative;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  min-width: 0;
  padding: 0;
  border: 0;
}

#process .home-process-step:not(:last-child)::after {
  content: "";
  position: absolute;
  z-index: 0;
  top: calc(var(--process-copy-height) - var(--process-overlap) + var(--process-circle-size) / 2);
  left: var(--process-circle-size);
  right: calc(-1 * var(--process-gap));
  height: 1px;
  background: #c4bfc6;
  pointer-events: none;
}

#process .home-process-step:last-child::after {
  content: none;
}

#process .home-process-visual {
  position: relative;
  z-index: 1;
  order: 1;
  flex: none;
  width: var(--process-circle-size);
  height: var(--process-circle-size);
  margin: calc(-1 * var(--process-overlap)) 0 0;
}

#process .home-process-circle {
  display: block;
  width: 100%;
  height: 100%;
  border-radius: 50%;
  background-image: url('/assets/process-circle-reference.jpg');
  background-size: 833.333333% 569.166667%;
  background-position: 38.409091% 51.509769%;
}

#process .home-process-step:nth-child(2) .home-process-circle {
  background-position: 61.590909% 51.509769%;
}

#process .home-process-step:nth-child(3) .home-process-circle {
  background-position: 84.772727% 51.509769%;
}

#process .home-process-copy {
  position: relative;
  z-index: 2;
  display: flex;
  flex: none;
  flex-direction: column;
  justify-content: flex-end;
  width: calc(100% - var(--process-circle-size) / 2);
  height: var(--process-copy-height);
  min-width: 0;
  margin-left: calc(var(--process-circle-size) / 2);
}

#process .home-process-number {
  position: static;
  display: block;
  margin-bottom: 13px;
  color: #5e5663;
  font-size: .7rem;
  font-weight: 500;
  line-height: 1;
  letter-spacing: .06em;
}

#process .home-process-step h3 {
  flex: none;
  margin: 0 0 10px;
  font-size: clamp(1rem, 1.35vw, 1.15rem);
  font-weight: 550;
  line-height: 1.5;
  letter-spacing: -.025em;
  text-wrap: wrap;
}

#process .home-process-step p {
  flex: none;
  max-width: none;
  margin: 0;
  color: #312d35;
  font-size: .86rem;
  line-height: 1.65;
}

#process .home-process-footer {
  justify-content: space-between;
  align-items: center;
  flex-wrap: wrap;
  gap: 26px;
  margin-top: clamp(44px, 5vw, 70px);
}

#process .home-process-note {
  margin: 0;
  color: #6c6470;
  font-size: .82rem;
  line-height: 1.8;
}

#news.home-news-section {
  padding-block: clamp(78px, 8vw, 120px);
  background: #f8f6f3;
  border-top: 1px solid #e8e2df;
}

#news .home-news-heading h2 {
  font-size: clamp(2.4rem, 4.1vw, 4.2rem);
  line-height: 1.3;
}

/* One artwork photograph, with its full portrait composition visible. */
.home-spatial-simple {
  background: #fff;
}

.home-spatial-simple-link {
  display: grid;
  grid-template-columns: minmax(0, .9fr) minmax(0, 1.1fr);
  align-items: center;
  gap: clamp(48px, 8vw, 120px);
}

.home-spatial-simple-media {
  display: flex;
  flex-direction: column;
  align-items: center;
  justify-content: flex-start;
  min-width: 0;
  margin: 0;
}

.home-spatial-simple-media figcaption {
  align-self: flex-start;
  margin-top: 14px;
  color: #756d77;
  font-size: .75rem;
  letter-spacing: .02em;
}

.home-spatial-simple-media img {
  display: block;
  width: 100%;
  max-width: 445px;
  height: auto;
  object-fit: contain;
}

.home-spatial-simple-copy {
  min-width: 0;
}

.home-spatial-simple-copy h2 {
  font-size: clamp(2rem, 3.3vw, 3.45rem);
  line-height: 1.45;
  overflow-wrap: anywhere;
}

.home-spatial-simple-copy > p:not(.eyebrow) {
  max-width: 470px;
  margin: 26px 0 0;
  color: #625963;
  font-size: 1rem;
  line-height: 1.95;
}

.home-spatial-simple-copy [data-interaction-label] {
  margin-top: 38px;
  color: #594166;
  font-size: .88rem;
  font-weight: 650;
  line-height: 1.7;
}

.home-spatial-simple-copy [data-interaction-arrow] {
  margin-left: 16px;
  color: #594166;
  font-size: 1rem;
}

@media (max-width: 1100px) {
  .home-service-overview {
    grid-template-columns: repeat(2, minmax(0, 1fr));
  }

  .home-service-overview > li:nth-child(2) {
    border-right: 0;
  }

  .home-service-overview > li:nth-child(-n+2) {
    border-bottom: 1px solid #d9d1d7;
  }

  .home-service-overview > li > :is(a, .home-service-overview-item) {
    min-height: 235px;
  }

  .home-service-overview > li:nth-child(odd) > :is(a, .home-service-overview-item) {
    padding-left: 0;
  }

  .home-service-overview h3 {
    font-size: 1.42rem;
  }
}

@media (max-width: 900px) {
  .home-harmony-figure {
    max-width: 600px;
    margin-inline: auto;
  }

  .home-introduction-layout,
  .home-harmony-heading,
  .home-services-heading {
    grid-template-columns: 1fr;
    gap: 32px;
  }

  .home-introduction-lead {
    margin-bottom: 20px;
  }

  .home-harmony-footer {
    align-items: flex-start;
    flex-direction: column;
    gap: 24px;
  }

  #process .home-process-list {
    --process-circle-size: 144px;
    --process-copy-height: 130px;
    --process-gap: 42px;
    grid-template-columns: 1fr;
    margin-top: 38px;
  }

  #process .home-process-copy {
    max-width: 410px;
    width: calc(100% - var(--process-circle-size) * .65);
    margin-left: calc(var(--process-circle-size) * .65);
  }

  #process .home-process-step:not(:last-child)::after {
    top: calc(var(--process-copy-height) - var(--process-overlap) + var(--process-circle-size));
    bottom: calc(-1 * var(--process-gap) - var(--process-copy-height) + var(--process-overlap));
    left: calc(var(--process-circle-size) / 2);
    right: auto;
    width: 1px;
    height: auto;
  }

  .home-spatial-simple-link {
    grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr);
    gap: 38px;
  }

  .home-spatial-simple-copy h2 {
    font-size: 2rem;
  }
}

@media (max-width: 600px) {
  .home-introduction,
  .home-harmony,
  .home-services-summary,
  .home-spatial-simple,
  #works.work,
  #process.home-process-section {
    padding-block: 72px;
  }

  :is(.home-introduction, .home-harmony, .home-services-summary, .home-spatial-simple) .eyebrow {
    margin-bottom: 17px;
    font-size: .68rem;
  }

  .home-introduction h2 {
    font-size: clamp(2.8rem, 12vw, 3.7rem);
  }

  .home-introduction-lead {
    font-size: clamp(1.12rem, 4.6vw, 1.4rem);
    line-height: 1.9;
  }

  .home-introduction-lead br {
    display: none;
  }

  :is(.home-harmony-heading, .home-services-heading) h2,
  #works .work-head h2,
  #process .home-process-heading h2,
  #news .home-news-heading h2 {
    font-size: clamp(2.15rem, 8.8vw, 3rem);
  }

  .home-harmony-intro,
  .home-services-heading > p {
    font-size: .97rem;
  }

  .home-harmony-figure {
    margin-top: 28px;
    width: calc(100% + 24px);
    margin-inline: -12px;
  }

  .home-harmony-footer {
    margin-top: 25px;
    padding-top: 23px;
  }

  .home-harmony-footer > p {
    font-size: .9rem;
  }

  .home-service-overview {
    grid-template-columns: 1fr;
    margin-top: 35px;
  }

  .home-service-overview > li {
    border-right: 0;
  }

  .home-service-overview > li:not(:last-child) {
    border-bottom: 1px solid #d9d1d7;
  }

  .home-service-overview > li > :is(a, .home-service-overview-item) {
    min-height: 0;
    padding: 27px 28px 29px 0;
  }

  .home-service-overview h3 {
    min-height: 0;
    margin-bottom: 12px;
    font-size: 1.3rem;
  }

  .home-service-overview p {
    max-width: 32em;
    font-size: .87rem;
  }

  .home-service-overview [data-interaction-arrow] {
    top: 30px;
    right: 0;
    bottom: auto;
  }

  #works .work-head {
    margin-bottom: 34px;
  }

  #works .home-work-list {
    grid-template-columns: 1fr;
    gap: 40px;
  }

  #works .home-work-media {
    aspect-ratio: 1.55;
  }

  #works .home-work-info h3 {
    font-size: clamp(1.42rem, 6.3vw, 1.9rem);
  }

  #process .home-process-list {
    --process-circle-size: clamp(104px, 29vw, 120px);
    --process-copy-height: 130px;
    --process-gap: 34px;
    margin-top: 26px;
  }

  #process .home-process-step h3 {
    margin-bottom: 9px;
    font-size: 1.02rem;
    line-height: 1.5;
  }

  #process .home-process-step p {
    font-size: .82rem;
    line-height: 1.7;
  }

  #process .home-process-footer {
    align-items: flex-start;
    flex-direction: column;
    gap: 23px;
    margin-top: 40px;
  }

  #news.home-news-section {
    padding-block: 64px;
  }

  .home-spatial-simple-link {
    grid-template-columns: 1fr;
    gap: 35px;
  }

  .home-spatial-simple-media {
    justify-content: center;
  }

  .home-spatial-simple-media img {
    width: min(100%, 360px);
  }

  .home-spatial-simple-copy h2 {
    font-size: clamp(1.9rem, 7.6vw, 2.6rem);
  }

  .home-spatial-simple-copy > p:not(.eyebrow) {
    margin-top: 20px;
    font-size: .95rem;
  }

  .home-spatial-simple-copy [data-interaction-label] {
    margin-top: 26px;
    font-size: .84rem;
  }
}
