/* Layout primitives for continuous LPs. Place the visual and copy in the
   same .lp-scene. Set dimensions and image position per composition. */
.lp-scene {
  position: relative;
  isolation: isolate;
}

.lp-scene-art {
  position: absolute;
  z-index: -1;
  inset: 0;
  overflow: clip;
  pointer-events: none;
}

.lp-scene-art > img {
  display: block;
  width: 100%;
  height: 100%;
  object-fit: cover;
  object-position: var(--scene-image-position, center);
}

.lp-scene-art[data-fade="both"] {
  mask-image: linear-gradient(to bottom, transparent, #000 var(--scene-fade-in, 18%), #000 var(--scene-fade-out, 75%), transparent);
}

.lp-scene-art[data-fade="bottom"] {
  mask-image: linear-gradient(to bottom, #000 var(--scene-fade-out, 64%), transparent);
}

.scene-cta {
  --cta-ink: var(--scene-cta-ink, #08241a);
  --cta-top: var(--scene-cta-top, #bbefc0);
  --cta-middle: var(--scene-cta-middle, #75cd98);
  --cta-bottom: var(--scene-cta-bottom, #47a875);
  --cta-edge: var(--scene-cta-edge, #cff6c9);
  --cta-shadow: var(--scene-cta-shadow, #143529);
  --cta-inset-shadow: var(--scene-cta-inset-shadow, #09291c4d);
  position: relative;
  isolation: isolate;
  display: grid;
  grid-template-columns: var(--scene-cta-icon-size, 32px) minmax(0, 1fr) var(--scene-cta-icon-size, 32px);
  align-items: center;
  gap: clamp(8px, 2.6vw, 14px);
  min-height: 58px;
  padding: 11px clamp(12px, 4vw, 22px);
  border: 1px solid var(--cta-edge);
  border-radius: var(--scene-cta-radius, 999px);
  color: var(--cta-ink);
  background: linear-gradient(180deg, var(--cta-top), var(--cta-middle) 48%, var(--cta-bottom));
  box-shadow: inset 0 2px 0 #fff8, inset 0 -2px 0 var(--cta-inset-shadow), 0 4px 0 var(--cta-shadow), 0 10px 26px #0006;
  text-decoration: none;
  text-align: center;
  font-weight: 800;
  line-height: 1.35;
  transition: filter .2s ease, transform .2s ease, box-shadow .2s ease;
}

.scene-cta > [data-cta-leading] { grid-area: 1 / 1; justify-self: center; }
.scene-cta > [data-cta-label] { grid-area: 1 / 2; min-width: 0; overflow-wrap: anywhere; }
.scene-cta > [data-cta-trailing] { grid-area: 1 / 3; justify-self: center; }
.scene-cta:not(:has(> [data-cta-leading], > [data-cta-trailing])) { grid-template-columns: minmax(0, 1fr); }
.scene-cta:not(:has(> [data-cta-leading], > [data-cta-trailing])) > [data-cta-label] { grid-column: 1; }

.scene-cta::before {
  content: "";
  position: absolute;
  z-index: -1;
  inset: 3px 9% 50%;
  border-radius: inherit;
  background: linear-gradient(#fff5, #fff0);
  pointer-events: none;
}

@media (hover: hover) {
  .scene-cta:hover { filter: brightness(1.08); transform: translateY(-1px); }
}

.scene-cta:active {
  transform: translateY(2px);
  box-shadow: inset 0 1px 0 #fff5, inset 0 -1px 0 var(--cta-inset-shadow), 0 2px 0 var(--cta-shadow), 0 6px 15px #0005;
}

.scene-cta:focus-visible { outline: 2px solid var(--cta-edge); outline-offset: 5px; }

@media (prefers-reduced-motion: reduce) {
  .scene-cta { transition: none; }
  .scene-cta:hover, .scene-cta:active { transform: none; }
}
