/* ============================================================
   Performance
   Two parts: cheap wins that apply to everyone, then the
   low-power fallback for machines without hardware acceleration.
   ============================================================ */

/* -- everyone -------------------------------------------------------------
   `will-change` permanently promotes an element to its own layer, which costs
   memory whether or not anything is animating. Promote on hover instead, when
   the transform is actually about to run. */
.pricing-pass {
  will-change: auto;
}

.pricing-pass:hover {
  will-change: transform;
}

/* ============================================================
   .low-power — no hardware acceleration, or a machine that
   measured badly. Blur is removed rather than reduced: a
   software-rendered 45px blur on a full-width element costs more
   than everything else on the page combined.
   ============================================================ */

/* Translucent panels become solid. Same reading experience, no
   backdrop sampling on every scroll frame. */
.low-power .site-header,
.low-power .nav-shell,
.low-power .purchase-dialog,
.low-power .download-dialog,
.low-power .image-dialog,
.low-power .hero-platform,
.low-power .directory-toolbar select {
  backdrop-filter: none !important;
  -webkit-backdrop-filter: none !important;
}

.low-power .site-header {
  background: #060407;
}

/* Every soft light source: the blur goes, the glow stays as a plain
   radial gradient, which is close to free. */
.low-power .hero-nebula,
.low-power .eclipse-flare,
.low-power .corona-detail,
.low-power .network-glow,
.low-power .closing-flare,
.low-power .product-orbit,
.low-power .pricing-pass-orbit,
.low-power .stage .under,
.low-power .legal-orb {
  filter: none !important;
}

/* Grain is a full-viewport repaint. Cheap with a GPU, not without. */
.low-power .film-grain {
  display: none;
}

/* Nothing loops. */
.low-power .status-dot,
.low-power .hero-nebula,
.low-power .scroll-line,
.low-power .discover-link {
  animation: none !important;
}

/* Pointer-reactive lighting off: it repaints large gradients on every move. */
.low-power .feature-card::after,
.low-power .checkout-reseller::after,
.low-power .pricing-pass::after,
.low-power .button-primary::after,
.low-power .checkout-visit::after,
.low-power .directory-store-link::after {
  display: none !important;
}

.low-power .pricing-pass {
  transform: none !important;
  transition: none !important;
  will-change: auto !important;
}

/* The hero scene stops reacting to scroll; it stays at its opening state. */
.low-power .hero-scene .eclipse {
  transform: none !important;
}

.low-power .hero-scene .corona-detail,
.low-power .hero-scene .eclipse-flare,
.low-power .hero-scene .hero-nebula {
  opacity: 1 !important;
}

/* Entrance animations still run — they are one-shot transforms and cost
   almost nothing — but they finish sooner so the page settles fast. */
.low-power .line-inner,
.low-power .hero h1 > span,
.low-power .hero-description,
.low-power .hero-buttons,
.low-power .hero-bottom,
.low-power .checkout-reseller {
  animation-duration: 0.35s !important;
  transition-duration: 0.35s !important;
}

/* Skip painting offscreen sections entirely. Intrinsic sizes keep the
   scrollbar honest and in-page anchors landing in the right place. */
.low-power .features-section,
.low-power .community-section,
.low-power .closing-section {
  content-visibility: auto;
  contain-intrinsic-size: auto 900px;
}

/* Heavy decorative layers that add nothing without their blur. */
.low-power .hero-vignette,
.low-power .scene-crosshair,
.low-power .rail-star {
  display: none;
}

/* -- the manual switch ---------------------------------------------------- */
.effects-toggle {
  appearance: none;
  background: transparent;
  border: 1px solid rgba(240, 240, 245, 0.12);
  border-radius: 3px;
  padding: 6px 12px;
  font-family: var(--font-mono, ui-monospace, monospace);
  font-size: 9.5px;
  letter-spacing: 0.18em;
  text-transform: uppercase;
  color: rgba(244, 243, 244, 0.5);
  cursor: pointer;
  transition:
    color 0.3s ease,
    border-color 0.3s ease;
}

.effects-toggle:hover {
  color: #f4f3f4;
  border-color: rgba(215, 25, 64, 0.4);
}

/* Load-in shortens on weak machines; the sweep stops entirely. */
.low-power.assets-armed .hero-rocks img,
.low-power.assets-armed .corona-detail,
.low-power.assets-armed .distant-terrain img,
.low-power.assets-armed .interface-viewport img,
.low-power.assets-armed .reveal-stage img {
  transition-duration: 0.3s !important;
  transition-delay: 0ms !important;
  transform: none !important;
}

.low-power.assets-armed .interface-viewport::after,
.low-power.assets-armed .reveal-stage::after {
  display: none !important;
}
