/* Progressive enhancement: decorative pointer effects never intercept input. */
.fx-cursor {
  position: fixed;
  top: 0;
  left: 0;
  z-index: 500;
  width: 30px;
  height: 30px;
  margin: -15px 0 0 -15px;
  border: 1px solid #fa5b5ba6;
  border-radius: 50%;
  pointer-events: none;
  opacity: 0;
  visibility: hidden;
  box-shadow: 0 0 16px #e9202017;
  transition: opacity .18s ease, width .18s ease, height .18s ease, margin .18s ease, border-color .18s ease, background .18s ease;
  contain: layout paint style;
}
.fx-enabled .fx-cursor.is-visible { opacity: .85; visibility: visible; }
.fx-cursor.is-over-link {
  width: 44px;
  height: 44px;
  margin: -22px 0 0 -22px;
  border-color: #ff7676;
  background: #ff47470a;
}
.fx-cursor.is-over-field { opacity: 0 !important; }

.fx-card { position: relative; isolation: isolate; }
.fx-card > .fx-sheen {
  position: absolute;
  inset: 2px;
  z-index: -1;
  overflow: hidden;
  border-radius: inherit;
  pointer-events: none;
  opacity: 0;
  background: radial-gradient(300px circle at var(--fx-x, 50%) var(--fx-y, 50%), #ff49491e, #f44b4b05 52%, transparent 76%);
  transform: perspective(800px) rotateX(var(--fx-tilt-x, 0deg)) rotateY(var(--fx-tilt-y, 0deg));
  transition: opacity .25s ease, transform .25s ease-out;
}
.fx-enabled .fx-card.fx-active > .fx-sheen { opacity: 1; }
.fx-enabled .fx-card:focus-within > .fx-sheen { opacity: .65; }
.fx-enabled .fx-card:hover, .fx-enabled .button:hover { transform: none !important; }
.fx-hero-glow {
  position: absolute;
  inset: 0;
  z-index: -1;
  border-radius: inherit;
  pointer-events: none;
  opacity: 0;
  background: radial-gradient(560px circle at var(--fx-x, 70%) var(--fx-y, 35%), #ec29291b, transparent 70%);
  transition: opacity .4s ease;
}
.fx-enabled .fx-hero-active > .fx-hero-glow { opacity: 1; }

.fx-click-surface {
  position: fixed;
  z-index: 250;
  pointer-events: none;
  overflow: hidden;
  contain: layout paint style;
}
.fx-click-ripple {
  position: absolute;
  display: block;
  border-radius: 50%;
  pointer-events: none;
  background: radial-gradient(circle, #fff5, #ffddd138 50%, transparent 72%);
  transform: scale(0);
  opacity: .85;
  animation: fx-ripple .62s cubic-bezier(.2,.65,.3,1) forwards;
}
@keyframes fx-ripple { to { transform: scale(1); opacity: 0; } }

/* Reduced-motion and touch-device settings also pause decorative artwork. */
.effects-disabled *, .effects-disabled *::before, .effects-disabled *::after {
  animation: none !important;
  scroll-behavior: auto !important;
}
.fx-off .brief-hero::before,
.fx-off .hero::before,
.fx-off .page-hero::before,
.fx-off .brief-orbit,
.fx-off .brief-art-window,
.fx-off .page-art-card,
.fx-off .page-illustration,
.fx-off .browser-window,
.fx-off .float-years,
.fx-off .float-responsive,
.fx-off .spotlight-stamp svg { animation: none !important; }
.fx-off.has-js [data-reveal] { opacity: 1; transform: none; transition: none !important; }
.fx-off .fx-card:hover, .fx-off .button:hover { transform: none !important; }

@media (hover: none), (pointer: coarse) {
  .fx-cursor, .fx-click-surface, .fx-sheen, .fx-hero-glow { display: none !important; }
}
@media (prefers-reduced-motion: reduce) {
  .fx-cursor, .fx-click-surface, .fx-sheen, .fx-hero-glow { display: none !important; }
}

