/* fx.css — particle canvas + ambience
   The canvas is the first child of #window at z-index:-1. isolation:isolate makes the
   window its own stacking context, so the negative z-index stays inside it: the dust
   paints above the window's gradient and below every control. */
#window { isolation: isolate; }

.fx-canvas {
  position: absolute; inset: 0; z-index: -1;
  width: 100%; height: 100%; display: block;
  pointer-events: none; border-radius: inherit;
}
.fx-canvas[hidden] { display: none; }

/* pulse(): a ring the size of the element, above the content it frames, gone in .6s */
.fx-ring {
  position: absolute; z-index: 60; pointer-events: none; box-sizing: border-box;
  border: 2px solid var(--fx-c, var(--accent, #9a7bff));
  box-shadow: 0 0 18px var(--fx-c-soft, rgba(154,123,255,.45)), inset 0 0 10px rgba(255,255,255,.10);
  opacity: 0; will-change: transform, opacity;
  animation: fx-ring .62s cubic-bezier(.2,.7,.2,1) forwards;
}
@keyframes fx-ring { 0% { opacity: .95; transform: scale(.94); } 100% { opacity: 0; transform: scale(1.22); } }

@media (prefers-reduced-motion: reduce) {
  .fx-ring { animation: fx-ring-still .7s ease-out forwards; }
  @keyframes fx-ring-still { 0% { opacity: .8; } 100% { opacity: 0; } }
}
