:root {
  --app-height: 100vh;
  --page-padding: clamp(28px, 5vw, 64px);
  --box-padding: clamp(14px, 2.5vw, 28px);
  --box-radius: 28px;
  --transition-duration: 1000ms;
  --easing: cubic-bezier(0.22, 1, 0.36, 1);
  --shadow-soft: 0 24px 64px rgba(0, 0, 0, 0.18);
  --stack-gap: clamp(12px, 1.5vw, 18px);
}

* {
  box-sizing: border-box;
}

html,
body {
  margin: 0;
  width: 100%;
  height: 100%;
  overflow: hidden;
}

body {
  font-family: "Helvetica Neue", Helvetica, Arial, sans-serif;
  background: #f5f0e8 url("./background.png") center center / cover no-repeat fixed;
  color: #111;
  touch-action: none;
}

button,
a {
  -webkit-tap-highlight-color: transparent;
}

.page-shell {
  position: relative;
  width: 100vw;
  height: var(--app-height);
}

.panel {
  position: absolute;
  inset: 0;
  display: flex;
  align-items: center;
  justify-content: center;
  padding: var(--page-padding);
  opacity: 0;
  visibility: hidden;
  pointer-events: none;
  transform: translateY(18px) scale(0.985);
  transition:
    opacity var(--transition-duration) var(--easing),
    transform var(--transition-duration) var(--easing),
    visibility 0s linear var(--transition-duration);
  will-change: opacity, transform;
}

.panel.is-active,
.panel.is-entering,
.panel.is-leaving {
  visibility: visible;
}

.panel.is-active,
.panel.is-entering {
  opacity: 1;
  pointer-events: auto;
  transform: translateY(0) scale(1);
  transition:
    opacity var(--transition-duration) var(--easing),
    transform var(--transition-duration) var(--easing),
    visibility 0s linear 0s;
}

.panel.is-leaving {
  opacity: 0;
  pointer-events: none;
  transform: translateY(-18px) scale(1.015);
}

.home-cta,
.dress-link,
.stack-link--button {
  border: 0;
  padding: 0;
  margin: 0;
  background: transparent;
  cursor: pointer;
}

.home-cta {
  width: 100vw;
  height: var(--app-height);
}

.home-image {
  width: 100vw;
  height: var(--app-height);
  object-fit: cover;
  display: block;
}

.content-box {
  width: min(100%, 560px);
  max-height: calc(var(--app-height) - (var(--page-padding) * 2));
  padding: var(--box-padding);
  border-radius: var(--box-radius);
  display: flex;
  flex-direction: column;
  gap: var(--stack-gap);
}

.content-box--white {
  background: rgba(255, 255, 255, 0.95);
  box-shadow: var(--shadow-soft);
  justify-content: center;
}

.content-box--transparent {
  background: transparent;
  width: min(100%, 560px);
  height: calc(var(--app-height) - (var(--page-padding) * 2));
  justify-content: center;
}

.stack-image,
.dress-image {
  width: 100%;
  display: block;
  height: auto;
}

.content-box--white .stack-image {
  width: auto;
  max-width: 100%;
  margin: 0 auto;
  object-fit: contain;
}

.content-box--white .stack-image:first-child {
  max-height: calc(
    var(--app-height) - (var(--page-padding) * 2) - (var(--box-padding) * 2) - (var(--stack-gap) * 2) - clamp(180px, 22vh, 260px)
  );
}

.content-box--white .stack-link .stack-image,
.content-box--white .stack-link--button .stack-image {
  max-width: 58%;
  max-height: clamp(86px, 11vh, 132px);
}

.stack-link {
  display: block;
  cursor: pointer;
}

.dress-link {
  display: block;
  width: 100%;
  height: 100%;
}

.dress-image {
  height: 100%;
  object-fit: contain;
}

@media (max-width: 768px) {
  :root {
    --page-padding: clamp(18px, 4vw, 28px);
    --box-padding: clamp(12px, 3vw, 20px);
    --stack-gap: clamp(10px, 2vw, 14px);
  }

  .content-box {
    width: 100%;
  }

  .content-box--white {
    border-radius: 22px;
  }

  .content-box--white .stack-image:first-child {
    max-height: calc(
      var(--app-height) - (var(--page-padding) * 2) - (var(--box-padding) * 2) - (var(--stack-gap) * 2) - clamp(150px, 20vh, 220px)
    );
  }

  .content-box--white .stack-link .stack-image,
  .content-box--white .stack-link--button .stack-image {
    max-width: 62%;
    max-height: clamp(76px, 10vh, 112px);
  }
}
