/* Landing-only accents. No layout changes, hidden content, or endless effects. */
/* Unlike overflow:hidden, clip keeps the existing sticky navigation attached to the viewport. */
body.premium-landing-body { overflow-x: clip; }

.pl-page {
  --fx-ease: cubic-bezier(.2, .7, .2, 1);
  --fx-edge: rgba(81, 217, 182, .48);
}

.pl-page .pl-stage-halo {
  animation: fx-halo-arrive 1500ms var(--fx-ease) both;
}

/* Preserve the existing reveal while allowing its opacity to fade smoothly. */
.pl-page .pl-process-grid > article,
.pl-page .pl-benefit-grid > article {
  transition: opacity 480ms var(--fx-ease), transform 280ms var(--fx-ease),
    border-color 220ms ease, background-color 220ms ease, box-shadow 220ms ease;
}

.pl-page .pl-process-icon {
  transition: transform 280ms var(--fx-ease), box-shadow 280ms ease;
}
.pl-page .pl-process-grid > article.is-visible .pl-process-icon {
  animation: fx-icon-arrive 550ms var(--fx-ease) both;
}
.pl-page .pl-process-grid > article:nth-child(2).is-visible .pl-process-icon { animation-delay: 90ms; }
.pl-page .pl-process-grid > article:nth-child(3).is-visible .pl-process-icon { animation-delay: 180ms; }

/* A single reflection on deliberate desktop hover; no cursor tracking. */
.pl-page :is(.pl-button-primary, .pl-button-lime) {
  position: relative;
  overflow: hidden;
}
.pl-page :is(.pl-button-primary, .pl-button-lime)::after,
.pl-page :is(.pl-process-grid, .pl-benefit-grid) > article::before {
  position: absolute;
  inset: 0;
  content: "";
  pointer-events: none;
  opacity: 0;
  transform: translateX(-110%);
  background: linear-gradient(110deg, transparent 20%, rgba(255, 255, 255, .19) 48%, transparent 75%);
}
.pl-page :is(.pl-process-grid, .pl-benefit-grid) > article::before {
  background: linear-gradient(115deg, transparent 25%, rgba(81, 217, 182, .12) 50%, transparent 75%);
}

.premium-nav-links a.is-section-active,
.pl-section-nav a.is-section-active,
html[data-theme="dark"] .premium-nav-links a.is-section-active {
  color: var(--polish-focus, #08715b);
}

/* Keep the lime action readable under the site's generic dark-theme link rule. */
.pl-page .pl-button-lime,
html[data-theme="dark"] .pl-page .pl-button-lime { color: #062e24; }
.premium-nav-links a.is-section-active::after { transform: scaleX(1); }
.pl-section-nav a.is-section-active {
  text-decoration: underline;
  text-underline-offset: 6px;
  text-decoration-thickness: 2px;
}

@media (hover: hover) and (pointer: fine) {
  .pl-page :is(.pl-button-primary, .pl-button-lime):hover::after {
    animation: fx-reflection 700ms var(--fx-ease);
  }
  .pl-page :is(.pl-process-grid, .pl-benefit-grid) > article:hover::before {
    animation: fx-reflection 850ms var(--fx-ease);
  }
  .pl-page .pl-process-grid > article:hover {
    border-color: var(--fx-edge);
    box-shadow: 0 16px 38px rgba(0, 18, 13, .18), inset 0 1px rgba(110, 232, 192, .18);
  }
  .pl-page .pl-benefit-grid > article:hover {
    box-shadow: 0 16px 36px rgba(7, 63, 53, .13), inset 0 1px rgba(110, 232, 192, .2);
  }
  .pl-page .pl-process-grid > article:hover .pl-process-icon {
    box-shadow: 0 0 0 6px rgba(81, 217, 182, .09);
  }
}

@keyframes fx-halo-arrive {
  from { opacity: .35; transform: scale(.85); }
  to { opacity: 1; transform: scale(1); }
}
@keyframes fx-icon-arrive {
  from { transform: translateY(5px) scale(.94); }
  to { transform: translateY(0) scale(1); }
}
@keyframes fx-reflection {
  0% { transform: translateX(-110%); opacity: 0; }
  15%, 75% { opacity: 1; }
  100% { transform: translateX(110%); opacity: 0; }
}

@media (prefers-reduced-motion: reduce) {
  .pl-page .pl-stage-halo,
  .pl-page .pl-process-icon,
  .pl-page :is(.pl-button-primary, .pl-button-lime)::after,
  .pl-page :is(.pl-process-grid, .pl-benefit-grid) > article::before {
    animation: none !important;
    transition: none !important;
  }
  .pl-page :is(.pl-button-primary, .pl-button-lime)::after,
  .pl-page :is(.pl-process-grid, .pl-benefit-grid) > article::before { display: none; }
}
