.snowfall { overflow: hidden; z-index: -1; contain: strict; }
.snowflake { position: absolute; top: -8%; left: var(--left); width: var(--size); height: var(--size); opacity: 0; color: var(--white); animation: snowfall var(--duration) var(--delay) linear infinite; }
.snowflake svg { width: 100%; height: 100%; }
.rotating-message p { --phrase-delay: 0s; opacity: 0; animation: phrase-cycle 24s linear infinite; animation-delay: var(--phrase-delay); }
.rotating-message p:nth-child(2) { --phrase-delay: 8s; }
.rotating-message p:nth-child(3) { --phrase-delay: 16s; }
.motion-paused .snowflake, .motion-paused .rotating-message p,
.ambient-paused .snowflake, .ambient-paused .rotating-message p { animation-play-state: paused; }
.insert-card { animation: card-float 2.6s ease-in-out infinite; }
.authorizing .insert-card { animation: card-insert 650ms ease-out forwards; }
@keyframes phrase-cycle { 0%, 30% { opacity: 1; } 33.33%, 100% { opacity: 0; } }
@keyframes snowfall { 0% { opacity: 0; transform: translate3d(0,-20px,0) rotate(0deg); } 8% { opacity: var(--opacity); } 88% { opacity: var(--opacity); } 100% { opacity: 0; transform: translate3d(var(--drift),110dvh,0) rotate(160deg); } }
@keyframes panel-in { from { opacity: 0; transform: translateY(8px); } to { opacity: 1; transform: translateY(0); } }
@keyframes card-float { 0%,100% { transform: translateY(-5px); } 50% { transform: translateY(2px); } }
@keyframes card-insert { to { transform: translateY(28px); opacity: .25; } }
@media (prefers-reduced-motion: reduce) {
  *, *::before, *::after { scroll-behavior: auto !important; }
  button { transition: opacity 100ms ease; }
  button:active:not(:disabled) { transform: none; }
  .snowflake { animation: none; top: var(--left); opacity: .25; }
  .snowflake:nth-child(n+7) { display: none; }
  .rotating-message p { animation: none; opacity: 0; transform: none; }
  .rotating-message p:first-child { opacity: 1; }
  .gift-dialog[open], .flow-body section, .insert-card, .authorizing .insert-card { animation: none; }
}
