
:root {
  --ink: #071022;
  --muted: #7d8899;
  --shadow: 0 20px 55px rgba(7, 16, 34, 0.13);
  --radius: 26px;
}
* { box-sizing: border-box; }
html, body {
  width: 100%;
  height: 100%;
  margin: 0;
  overflow: hidden;
  background: #fff;
  color: var(--ink);
  font-family: Arial, Helvetica, sans-serif;
}
body {
  background:
    radial-gradient(circle at 12% 2%, rgba(7,16,34,.065), transparent 25%),
    radial-gradient(circle at 90% 82%, rgba(7,16,34,.045), transparent 24%),
    linear-gradient(180deg, #ffffff 0%, #f8f9fb 100%);
}
.page {
  height: 100vh;
  width: 100vw;
  padding: 30px 36px 34px;
  display: flex;
  flex-direction: column;
  gap: 22px;
}
.header { flex: 0 0 auto; }
.eyebrow {
  font-size: 13px;
  letter-spacing: .28em;
  font-weight: 800;
  color: var(--muted);
}
h1 {
  margin: 5px 0 0;
  font-size: clamp(58px, 7.2vw, 118px);
  line-height: .82;
  letter-spacing: -.085em;
  font-weight: 950;
}
.photo-wall {
  flex: 1 1 auto;
  min-height: 0;
  display: grid;
  grid-template-columns: minmax(280px, 1fr) minmax(320px, .88fr) minmax(280px, 1fr);
  gap: 24px;
  align-items: center;
}
.side-grid {
  height: 100%;
  min-height: 0;
  display: grid;
  grid-template-columns: repeat(3, minmax(0, 1fr));
  grid-template-rows: repeat(2, minmax(0, 1fr));
  gap: 18px;
  align-items: center;
}
.photo-card {
  position: relative;
  overflow: hidden;
  border-radius: var(--radius);
  background: rgba(239,242,246,.78);
  box-shadow: var(--shadow);
  border: 1px solid rgba(255,255,255,.82);
  opacity: 1;
  transform: translateY(0) scale(1);
  transition: opacity 500ms ease, transform 550ms ease, visibility 500ms ease;
}
.photo-card.no-photo {
  opacity: 0;
  visibility: hidden;
  transform: translateY(8px) scale(.98);
}
.side-card {
  aspect-ratio: 9 / 16;
  min-height: 0;
  justify-self: center;
  width: min(100%, 15vw);
}
.hero-card {
  width: min(30vw, calc((100vh - 185px) * 0.5625));
  height: min(calc(100vh - 185px), 53vw);
  aspect-ratio: 9 / 16;
  justify-self: center;
  align-self: center;
  border-radius: 34px;
}
.image-stage {
  position: absolute;
  inset: 0;
}
.photo-img {
  position: absolute;
  inset: 0;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: center center;
  opacity: 1;
  transform: scale(1);
  transition: opacity 800ms ease, transform 1200ms ease;
}
.photo-img.enter {
  opacity: 0;
  transform: scale(1.045);
}
.photo-img.show {
  opacity: 1;
  transform: scale(1);
}
.photo-img.exit {
  opacity: 0;
  transform: scale(.985);
}
.latest-badge {
  position: absolute;
  left: 18px;
  bottom: 18px;
  z-index: 5;
  padding: 10px 14px;
  border-radius: 999px;
  background: rgba(7,16,34,.76);
  color: #fff;
  font-size: 13px;
  font-weight: 900;
  letter-spacing: .08em;
  backdrop-filter: blur(10px);
}
.empty-state {
  position: fixed;
  inset: 0;
  display: grid;
  place-items: center;
  background: rgba(255,255,255,.86);
  backdrop-filter: blur(16px);
  z-index: 20;
}
.empty-state.hidden { display: none; }
.empty-logo {
  font-size: clamp(76px, 10vw, 150px);
  font-weight: 950;
  letter-spacing: -.09em;
  line-height: .85;
  text-align: center;
}
.empty-text {
  margin-top: 16px;
  text-align: center;
  color: var(--muted);
  font-size: clamp(20px, 2vw, 34px);
}
@media (max-aspect-ratio: 1.45/1) {
  .page { padding: 22px; gap: 16px; }
  .photo-wall { grid-template-columns: 1fr; }
  .side-grid {
    grid-template-columns: repeat(3, 1fr);
    grid-template-rows: repeat(2, 1fr);
    height: auto;
  }
  .hero-card {
    width: min(52vw, 420px);
    height: auto;
    aspect-ratio: 9/16;
    order: -1;
  }
}
