/* Home page: hero, philosophy, works, instagram strip */

/* Hero */
.hero {
  position: relative;
  height: 75vh;
  height: 75svh;
  min-height: 460px;
  color: var(--color-white);
  overflow: hidden;
}
/* Dark placeholder keeps the white title and nav readable before the image paints */
.hero__media { position: absolute; inset: 0; background: #3a3835; }
/* The scrim behind the title and the darker header band keep the white text at WCAG AA
   (title 3:1, subtitle and nav 4.5:1) over the bright facade, glass panels and white flowers */
.hero__overlay {
  --hero-scrim: ellipse 72% 78% at 10% 100%;
  position: absolute;
  inset: 0;
  background:
    radial-gradient(var(--hero-scrim), rgba(0,0,0,.6) 0%, rgba(0,0,0,.46) 50%, rgba(0,0,0,0) 100%),
    linear-gradient(180deg, rgba(0,0,0,.55) 0, rgba(0,0,0,.5) 64px, rgba(0,0,0,.14) 30%, rgba(0,0,0,.12) 55%, rgba(0,0,0,.4) 100%);
}
/* Editorial composition: subtitle above the title, both at the bottom left of the content column */
.hero__content {
  position: absolute;
  inset: 0;
  display: flex;
  flex-direction: column;
  align-items: flex-start;
  justify-content: flex-end;
  padding: 0 max(var(--gutter), calc((100% - var(--container)) / 2)) clamp(40px, 9vh, 96px);
  text-align: left;
}
.hero__title {
  margin: 0;
  font-family: var(--font-display);
  font-weight: 500;
  font-size: var(--fs-hero);
  letter-spacing: var(--ls-hero);
  line-height: 0.98;
  /* one word per line keeps the name left of the couple in the centre of the frame */
  max-width: min-content;
}
.hero__subtitle {
  order: -1;
  display: flex;
  align-items: center;
  gap: 16px;
  margin: 0 0 18px;
  font-family: var(--font-head);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.3em;
  text-transform: uppercase;
}
.hero__subtitle::before {
  content: "";
  flex: 0 0 auto;
  width: 40px;
  height: 1px;
  background: currentColor;
}
/* Portrait hero on phones: the title sits over the sky and roof so it does not cover the couple */
@media (max-width: 767px) {
  .hero__overlay { --hero-scrim: ellipse 90% 28% at 30% 34%; }
  .hero__content {
    justify-content: flex-start;
    padding-top: calc(var(--header-h) + 10vh);
    padding-top: calc(var(--header-h) + 10svh);
  }
  .hero__subtitle::before { width: 24px; }
}

/* Philosophy (mobile first) */
.philosophy__grid {
  display: grid;
  grid-template-columns: 1fr 1fr;
  column-gap: 12px;
  align-items: start;
}
.philosophy__photo--low { aspect-ratio: 3 / 4; margin-top: 48px; }
.philosophy__photo--high { aspect-ratio: 2 / 3; }
.philosophy__text { grid-column: 1 / -1; margin-top: 40px; }
.philosophy__text .h2 { margin: 0 0 24px; }
.philosophy__text .btn { margin-top: 16px; }
.philosophy__photo[data-reveal]:nth-child(2) { --reveal-delay: 120ms; }
.philosophy__text[data-reveal] { --reveal-delay: 240ms; }

@media (min-width: 768px) {
  .philosophy__grid { column-gap: 24px; }
  .philosophy__photo--low { margin-top: 80px; }
  .philosophy__text { margin: 48px auto 0; max-width: 560px; text-align: center; }
  .philosophy__text .text { margin-inline: auto; }
}
@media (min-width: 1024px) {
  .philosophy__grid { grid-template-columns: 0.82fr 1fr 1.08fr; column-gap: 40px; }
  /* clear offset: the low photo ends about 50-80px below the high photo, never level with it */
  .philosophy__photo--low { margin-top: 200px; }
  .philosophy__text {
    grid-column: auto;
    align-self: center;
    margin: 0;
    max-width: 400px;
    padding-left: 16px;
    text-align: left;
  }
  .philosophy__text .text { margin-inline: 0; }
}

/* Works grid */
.works__title { margin: 0 0 48px; text-align: center; }
.works__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--grid-gap);
}
.works__item {
  display: block;
  padding: 0;
  border: 0;
  aspect-ratio: 2 / 3;
  cursor: zoom-in;
  font: inherit;
  color: inherit;
}
.works__item img { position: absolute; inset: 0; width: 100%; height: 100%; }
.works__cta { display: flex; justify-content: center; margin-top: 56px; }
/* Staggered rhythm: one column drops by --works-offset; the grid pads its bottom by the same amount */
.works__grid { padding-bottom: var(--works-offset); }
@media (max-width: 767px) {
  .works__item.is-orphan { display: none; }
  .works__item:nth-child(2n) { top: var(--works-offset); }
}
@media (min-width: 768px) {
  .works__grid { grid-template-columns: repeat(3, 1fr); }
  .works__item:nth-child(3n + 2) { top: var(--works-offset); }
}

/* Instagram strip */
.ig__label {
  margin: 0 0 28px;
  font-family: var(--font-head);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.35em;
  text-align: center;
  text-transform: uppercase;
}
.ig__strip {
  display: grid;
  grid-template-columns: repeat(3, 1fr);
  gap: var(--grid-gap);
}
.ig__item { display: block; aspect-ratio: 1 / 1; }
.ig__item img { position: absolute; inset: 0; width: 100%; height: 100%; }
.ig__handle {
  display: block;
  margin-top: 20px;
  font-family: var(--font-body);
  font-size: 13px;
  text-align: center;
}
.ig__social { display: flex; justify-content: center; gap: 16px; margin-top: 16px; }
.social-link {
  display: inline-flex;
  align-items: center;
  justify-content: center;
  width: 44px;
  height: 44px;
  transition: opacity var(--dur-fast) var(--ease);
}
.social-link:hover { opacity: 0.6; }
.social-link svg { width: 18px; height: 18px; }
@media (min-width: 768px) {
  .ig__strip { display: flex; height: clamp(180px, 21vw, 270px); }
  .ig__item { aspect-ratio: auto; flex: var(--ar, 1) 1 0%; min-width: 0; }
}

/* Shoot types */
.kinds__title { text-align: center; margin: 0; }
.kinds__intro {
  margin: 12px auto 32px;
  max-width: 520px;
  text-align: center;
  font-family: var(--font-body);
  font-style: italic;
  color: var(--color-muted);
}
.kinds__grid {
  display: grid;
  grid-template-columns: repeat(2, 1fr);
  gap: var(--grid-gap);
}
.kinds__item {
  position: relative;
  display: block;
  aspect-ratio: 3 / 4;
  background: var(--color-panel);
  overflow: hidden;
}
.kinds__item img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
}
.kinds__item::after {
  content: "";
  position: absolute;
  inset: 0;
  background: linear-gradient(180deg, rgba(0,0,0,0) 55%, rgba(0,0,0,.55) 100%);
}
.kinds__label {
  position: absolute;
  z-index: 1;
  left: 0;
  right: 0;
  bottom: 18px;
  padding-inline: 12px;
  text-align: center;
  color: var(--color-white);
  font-family: var(--font-head);
  font-weight: 500;
  font-size: 11px;
  letter-spacing: 0.25em;
  text-transform: uppercase;
}
@media (min-width: 768px) {
  .kinds__grid { grid-template-columns: repeat(3, 1fr); }
}
@media (min-width: 1024px) {
  .kinds__grid { grid-template-columns: repeat(5, 1fr); }
}
