/* PLUR ambient waves — isolated, offline CSS-only component.
   Apply class "plur-ambient" to a full-screen page container and add:
   <div class="plur-ambient__art" aria-hidden="true"><i></i><i></i><i></i></div>
   Place existing page content inside <div class="plur-ambient__content">...</div>.
   No dependencies. Does not modify app state or gifting behavior. */
.plur-ambient { position:relative; isolation:isolate; min-height:100dvh; background:#0b0719; overflow-x:clip; }
.plur-ambient__art { position:fixed; inset:0; z-index:-1; pointer-events:none; overflow:hidden; background:radial-gradient(ellipse at 50% 95%,#29114b 0%,transparent 65%),#0b0719; }
.plur-ambient__art::before { content:""; position:absolute; inset:-20%; opacity:.45; background:radial-gradient(ellipse 60% 28% at 25% 25%,#5a23a9 0%,transparent 85%),radial-gradient(ellipse 48% 25% at 85% 65%,#0d82a4 0%,transparent 85%); filter:blur(45px); animation:plur-wave-drift 24s ease-in-out infinite alternate; }
.plur-ambient__art i { position:absolute; display:block; width:140vw; height:48vh; left:-20vw; border-radius:48% 52% 55% 45% / 55% 40% 60% 45%; filter:blur(48px); opacity:.32; will-change:transform; transform:translate3d(0,0,0) rotate(-10deg); }
.plur-ambient__art i:nth-child(1) { top:8%; background:linear-gradient(110deg,transparent 8%,#b22acb 40%,#542fd7 65%,transparent 93%); animation:plur-wave-one 21s ease-in-out infinite alternate; }
.plur-ambient__art i:nth-child(2) { top:40%; background:linear-gradient(105deg,transparent 7%,#1f70cf 37%,#16b9b0 68%,transparent 95%); opacity:.22; animation:plur-wave-two 26s ease-in-out infinite alternate; }
.plur-ambient__art i:nth-child(3) { top:73%; background:linear-gradient(105deg,transparent 9%,#a623b5 38%,#5e36c9 65%,transparent 94%); opacity:.23; animation:plur-wave-three 23s ease-in-out infinite alternate; }
.plur-ambient__content { position:relative; z-index:1; }
@keyframes plur-wave-drift { to { transform:translate3d(6%,-4%,0) scale(1.07); } }
@keyframes plur-wave-one { to { transform:translate3d(9vw,5vh,0) rotate(8deg) scaleY(.8); } }
@keyframes plur-wave-two { to { transform:translate3d(-7vw,-8vh,0) rotate(-5deg) scaleY(1.15); } }
@keyframes plur-wave-three { to { transform:translate3d(8vw,-9vh,0) rotate(6deg) scaleY(.9); } }
/* Maker is calmer than the home/receive views. */
.plur-ambient--maker .plur-ambient__art i { opacity:.14; }
.plur-ambient--maker .plur-ambient__art::before { opacity:.25; }
@media (prefers-reduced-motion:reduce) { .plur-ambient__art *, .plur-ambient__art::before { animation:none!important; will-change:auto!important; } }
@media (max-width:600px) { .plur-ambient__art i { filter:blur(35px); } .plur-ambient__art::before { filter:blur(30px); } }

/* App-shell integration: reuse #app as the content layer, with no screen wrappers. */
body:not(.plur-ambient) > .plur-ambient__art { display:none; }
body.plur-ambient { min-height:100svh; }
body.plur-ambient > .plur-ambient__art { z-index:0; }
body.plur-ambient > .plur-ambient__content { z-index:1; }

/* Defined flowing ribbons, rather than an indistinct full-screen blur. */
.plur-ambient__art::before{filter:blur(26px);opacity:.36}
.plur-ambient__art i{width:150vw;height:44vh;left:-25vw;filter:blur(12px);opacity:.48;border-radius:46% 54% 43% 57% / 65% 38% 62% 35%;background-size:100% 100%;box-shadow:inset 0 2px 12px #cba4ff24,inset 0 -8px 20px #10072955}
.plur-ambient__art i:nth-child(1){top:4%;background:linear-gradient(165deg,transparent 16%,#7228b933 35%,#b22acb88 48%,#542fd799 58%,transparent 78%);animation-duration:12s;animation-delay:-4s}
.plur-ambient__art i:nth-child(2){top:34%;background:linear-gradient(165deg,transparent 14%,#1f70cf55 34%,#16b9b088 49%,#3561c477 59%,transparent 79%);opacity:.38;animation-duration:16s;animation-delay:-8s}
.plur-ambient__art i:nth-child(3){top:66%;background:linear-gradient(165deg,transparent 14%,#a623b566 36%,#7e42d699 50%,#4531a366 61%,transparent 80%);opacity:.40;animation-duration:14s;animation-delay:-5s}
.plur-ambient--maker .plur-ambient__art i{opacity:.25;animation-duration:22s}
.plur-ambient--maker .plur-ambient__art::before{opacity:.22}
@media(max-width:600px){.plur-ambient__art i{filter:blur(8px)}.plur-ambient__art::before{filter:blur(22px)}}
@media(prefers-reduced-motion:reduce){.plur-ambient__art i,.plur-ambient__art::before{animation:none!important;will-change:auto!important}}
