/* CALPO studio campaign: continuous backdrop, three photographic planes. */
.campaign-hero {
  position: relative;
  isolation: isolate;
  overflow: clip;
  background: linear-gradient(180deg, #f6f6f3 0%, #f0f0ec 53%, #e2e1d9 100%);
}
.campaign-inner {
  position: relative;
  max-width: 1568px;
  min-height: clamp(600px, 44vw, 720px);
  margin-inline: auto;
}
.campaign-copy {
  position: relative;
  z-index: 5;
  width: 30%;
  max-width: 400px;
  min-height: clamp(600px, 44vw, 720px);
  margin-left: var(--gutter);
  padding-block: 72px;
  display: flex;
  flex-direction: column;
  justify-content: center;
  align-items: flex-start;
}
.campaign-intro {
  display: flex;
  align-items: center;
  gap: 14px;
  font-size: 12px;
  margin-bottom: 22px;
}
.campaign-intro::before {
  content: '';
  width: 28px;
  height: 1px;
  background: #8a6a3a;
}
.campaign-copy h1 {
  font-size: clamp(46px, 4.3vw, 64px);
  line-height: 1.05;
  letter-spacing: -0.035em;
  margin-bottom: 24px;
}
.campaign-description {
  font-size: 13px;
  line-height: 1.8;
  color: #41413c;
  margin-bottom: 26px;
}
.campaign-copy > .button {
  min-height: 52px;
  padding: 14px 22px;
}
.hero-line {
  display: block;
  overflow: clip;
  padding-bottom: 0.08em;
  margin-bottom: -0.08em;
}
.hero-line > span {
  display: inline-block;
}
.campaign-stage {
  position: absolute;
  inset: 0;
  pointer-events: none;
}
.campaign-floor {
  position: absolute;
  z-index: 0;
  left: 36%;
  right: -8%;
  bottom: -14%;
  height: 35%;
  background: radial-gradient(ellipse at 57% 42%, #77776a19 0%, #a5a4960a 35%, transparent 70%);
}
.campaign-person {
  position: absolute;
  transform-origin: bottom center;
}
.campaign-person img {
  width: 100%;
  height: auto;
}
.campaign-albert {
  z-index: 2;
  width: 25%;
  left: 37%;
  bottom: 0;
}
.campaign-albert img {
  filter: brightness(1.045) contrast(0.98) saturate(0.9) sepia(0.045);
}
.campaign-jochy {
  z-index: 1;
  width: 21%;
  left: 52%;
  bottom: 20px;
}
.campaign-jochy img {
  filter: brightness(0.97) contrast(0.96) saturate(0.9) sepia(0.025);
}
.campaign-sexapeal {
  z-index: 3;
  width: 32%;
  max-width: 470px;
  right: 1%;
  bottom: -82px;
}
.campaign-sexapeal img {
  filter: brightness(1.025) contrast(0.94) saturate(0.94);
}
.campaign-contact-shadow {
  position: absolute;
  z-index: 0;
  left: 57%;
  bottom: 14px;
  width: 15%;
  height: 18px;
  border-radius: 50%;
  background: radial-gradient(ellipse, #30302b2e, transparent 72%);
  filter: blur(4px);
}
@media (prefers-reduced-motion: no-preference) {
  .campaign-intro {
    animation: hero-fade 280ms ease-out both;
  }
  .hero-line > span {
    animation: hero-line-in 420ms cubic-bezier(0.16, 1, 0.3, 1) both;
  }
  .hero-line:nth-child(2) > span {
    animation-delay: 45ms;
  }
  .hero-line:nth-child(3) > span {
    animation-delay: 90ms;
  }
  .campaign-description {
    animation: hero-fade 280ms 110ms ease-out both;
  }
  .campaign-copy > .button {
    animation: hero-button-in 300ms 170ms cubic-bezier(0.16, 1, 0.3, 1) both;
  }
  .campaign-person {
    animation: hero-photo-in 400ms ease-out both;
  }
}
@keyframes hero-line-in {
  from {
    transform: translateY(110%);
    opacity: 0;
  }
  to {
    transform: translateY(0);
    opacity: 1;
  }
}
@keyframes hero-fade {
  from {
    opacity: 0;
    transform: translateY(6px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes hero-button-in {
  from {
    opacity: 0;
    transform: translateY(10px);
  }
  to {
    opacity: 1;
    transform: translateY(0);
  }
}
@keyframes hero-photo-in {
  from {
    opacity: 0.72;
  }
  to {
    opacity: 1;
  }
}
@media (max-width: 1100px) {
  .campaign-inner {
    min-height: 0;
  }
  .campaign-copy {
    width: auto;
    max-width: 550px;
    min-height: 0;
    margin: 0;
    padding: 40px var(--gutter) 20px;
  }
  .campaign-copy h1 {
    font-size: 52px;
    margin-bottom: 20px;
  }
  .campaign-stage {
    position: relative;
    aspect-ratio: 1.5;
    overflow: hidden;
  }
  .campaign-albert {
    width: 38%;
    left: 1%;
    bottom: 0;
  }
  .campaign-jochy {
    width: 32%;
    left: 31%;
    bottom: 18px;
  }
  .campaign-sexapeal {
    width: 45%;
    max-width: none;
    right: 1%;
    bottom: -40px;
  }
  .campaign-floor {
    left: 0;
    right: -8%;
  }
  .campaign-contact-shadow {
    left: 42%;
    width: 16%;
    bottom: 12px;
  }
}
@media (max-width: 640px) {
  .campaign-copy {
    padding: 28px 24px 18px;
  }
  .campaign-copy h1 {
    font-size: 40px;
    margin-bottom: 18px;
  }
  .campaign-intro {
    margin-bottom: 16px;
  }
  .campaign-description {
    font-size: 12px;
    margin-bottom: 20px;
  }
  .campaign-copy > .button {
    min-height: 50px;
    padding: 13px 20px;
  }
  .campaign-stage {
    aspect-ratio: 1.1;
  }
  .campaign-albert {
    width: 42%;
    left: -1%;
    bottom: 0;
  }
  .campaign-jochy {
    width: 35%;
    left: 32%;
    bottom: 12px;
  }
  .campaign-sexapeal {
    width: 54%;
    right: -5%;
    bottom: -20px;
  }
  .campaign-contact-shadow {
    left: 43%;
    width: 18%;
    height: 12px;
    bottom: 8px;
  }
}
@media (prefers-reduced-motion: reduce) {
  .campaign-copy > *,
  .hero-line > span,
  .campaign-person {
    animation: none !important;
    transform: none !important;
    opacity: 1 !important;
  }
}
