/* Pet auras: shared by the random-chat header, Campfire avatars and the Collection.
   Markup comes from public/pet-aura-renderer.js. Sizes scale from the host box through container units. */
.lemo-aura {
  --ember-wash: rgba(255,138,64,.42); --ember-spark: #ffc98f; --ember-glow: rgba(255,130,50,.8);
  --moon-wash: rgba(170,195,255,.20); --moon-rim: rgba(226,236,255,.95); --moon-c: #eef3ff; --moon-glow: rgba(190,210,255,.75); --moon-mote: rgba(226,236,255,.9);
  --blossom-wash: rgba(255,160,195,.24); --petal-a: #ffd0dd; --petal-b: #f59bb8;
  --frost-wash: rgba(150,205,255,.28); --snow: #f3faff; --shine: rgba(235,248,255,.5);
  --star-wash: rgba(130,118,255,.22); --star: #fff1bf; --star-glow: rgba(255,230,150,.9);
  --ink-mist: rgba(205,205,220,.30); --ink-drop: rgba(230,230,240,.75);
  --aurora-op: .62;
  --fly: #f4ff9a; --fly-glow: rgba(220,255,120,.85); --fly-wash: rgba(190,230,110,.12);
  --bub-edge: rgba(200,235,255,.75); --bub-tint: rgba(120,200,255,.28); --bub-wash: rgba(90,180,255,.18);
  --heart: #ff8fab; --heart-glow: rgba(255,110,150,.8); --heart-wash: rgba(255,110,140,.22);
  --leaf-a: #f6b04a; --leaf-b: #c9502a; --leaf-wash: rgba(230,140,50,.20);
  --wing-a: #b8ecff; --wing-b: #7f95ff; --wing-glow: rgba(150,190,255,.7);
  --cloud: #a3abba; --cloud-shade: #7c8496; --drop: rgba(170,205,255,.9);
  --note: #e6dcff; --note-glow: rgba(185,160,255,.85); --note-wash: rgba(170,140,255,.18);
  --shade-rim: rgba(170,95,255,.95); --shade-smoke: rgba(130,60,220,.45);
  position: relative; display: grid; place-items: center; width: 100%; height: 100%;
  container-type: size; isolation: isolate; pointer-events: none;
  --s: 100cqw;
}
body[data-theme="inkpaw"] .lemo-aura, body[data-theme="default"][data-default-mode="light"] .lemo-aura {
  --ember-wash: rgba(240,110,40,.34); --ember-spark: #f07a2e; --ember-glow: rgba(240,120,40,.55);
  --moon-wash: rgba(120,145,215,.18); --moon-rim: rgba(110,135,215,.75); --moon-c: #8d9fdc; --moon-glow: rgba(120,145,215,.45); --moon-mote: rgba(110,135,215,.8);
  --blossom-wash: rgba(240,120,165,.20); --petal-a: #f7a9c0; --petal-b: #e0668f;
  --frost-wash: rgba(90,160,230,.24); --snow: #7fb6e6; --shine: rgba(255,255,255,.8);
  --star-wash: rgba(110,95,230,.16); --star: #e0a526; --star-glow: rgba(230,170,40,.6);
  --ink-mist: rgba(40,38,52,.26); --ink-drop: rgba(35,32,45,.7);
  --aurora-op: .5;
  --fly: #d9c400; --fly-glow: rgba(215,180,0,.6); --fly-wash: rgba(190,200,60,.14);
  --bub-edge: rgba(60,140,210,.7); --bub-tint: rgba(80,160,230,.22); --bub-wash: rgba(80,160,230,.14);
  --heart: #e8517a; --heart-glow: rgba(230,80,120,.45); --heart-wash: rgba(240,110,140,.16);
  --leaf-wash: rgba(220,130,40,.16);
  --wing-a: #7cc8ef; --wing-b: #5a6fe0; --wing-glow: rgba(90,120,220,.4);
  --cloud: #8e96a6; --cloud-shade: #6c7486; --drop: rgba(70,120,200,.85);
  --note: #7a5cd6; --note-glow: rgba(120,90,220,.4); --note-wash: rgba(140,110,230,.14);
  --shade-rim: rgba(100,45,180,.75); --shade-smoke: rgba(70,35,120,.3);
}
.lemo-aura > img, .lemo-aura > .la-subject { position: relative; z-index: 1; grid-area: 1 / 1; width: 100%; height: 100%; object-fit: contain; }
.la-fx { position: absolute; inset: calc(var(--s) * -.3); pointer-events: none; z-index: 0; }
.la-fx.la-front { z-index: 2; }
.la-fx i { position: absolute; display: block; font-style: normal; }
.la-wash { position: absolute; inset: 14%; border-radius: 50%; }
.la-silwrap { inset: calc(var(--s) * .3) !important; filter: blur(max(1px, calc(var(--s) * .028))); }
.la-sil { inset: 0; -webkit-mask: var(--la-mask) center / contain no-repeat; mask: var(--la-mask) center / contain no-repeat; transform: scale(1.09); overflow: hidden; }
.lemo-aura:not([style*="--la-mask"]) .la-silwrap { display: none; }

/* ember */
.la-ember .la-wash { background: radial-gradient(closest-side at 50% 58%, var(--ember-wash), transparent 100%); filter: blur(calc(var(--s) * .05)); animation: la-breathe 4.5s ease-in-out infinite; }
.la-ember .la-p { left: var(--x); bottom: 22%; width: max(2px, calc(var(--s) * .042)); aspect-ratio: 1; border-radius: 50%; background: radial-gradient(circle, #fff6e6 0 25%, var(--ember-spark) 60%); box-shadow: 0 0 calc(var(--s) * .05) var(--ember-glow); opacity: 0; animation: la-rise var(--dur) ease-in infinite; animation-delay: var(--d); }
@keyframes la-rise { 0% { transform: translate(0, 0) scale(1); opacity: 0; } 15% { opacity: 1; } 70% { opacity: .8; } 100% { transform: translate(var(--dx), calc(var(--s) * -.95)) scale(.4); opacity: 0; } }

/* moonlight (v2): silver rim that follows the pet, a small crescent, drifting motes */
.la-moon .la-wash { inset: 12%; background: radial-gradient(closest-side, var(--moon-wash), transparent); filter: blur(calc(var(--s) * .04)); }
.la-moon .la-silwrap { animation: la-rimpulse 6s ease-in-out infinite; }
.la-moon .la-sil { background: var(--moon-rim); transform: scale(1.065); }
.la-moon .la-crescent { right: 16%; top: 15%; width: max(5px, calc(var(--s) * .15)); aspect-ratio: 1; border-radius: 50%; box-shadow: calc(var(--s) * .035) calc(var(--s) * -.022) 0 0 var(--moon-c); filter: drop-shadow(0 0 calc(var(--s) * .04) var(--moon-glow)); transform: rotate(-10deg); animation: la-bob 7s ease-in-out infinite; }
.la-moon .la-p { left: var(--x); top: var(--y); width: max(2px, calc(var(--s) * .026)); aspect-ratio: 1; border-radius: 50%; background: var(--moon-mote); box-shadow: 0 0 calc(var(--s) * .04) var(--moon-glow); animation: la-float var(--dur) ease-in-out infinite; animation-delay: var(--d); }
@keyframes la-rimpulse { 0%, 100% { opacity: .45; } 50% { opacity: .9; } }
@keyframes la-bob { 0%, 100% { translate: 0 0; } 50% { translate: 0 calc(var(--s) * -.035); } }
@keyframes la-float { 0%,100% { transform: translateY(0); opacity: .25; } 50% { transform: translateY(calc(var(--s) * -.08)); opacity: 1; } }

/* blossom */
.la-blossom .la-wash { background: radial-gradient(closest-side, var(--blossom-wash), transparent); filter: blur(calc(var(--s) * .04)); animation: la-breathe 5s ease-in-out infinite; }
.la-blossom .la-p, .la-leaf .la-p { left: var(--x); top: 4%; width: max(3px, calc(var(--s) * .075)); height: max(2px, calc(var(--s) * .05)); border-radius: 85% 0 85% 0; background: linear-gradient(135deg, var(--petal-a), var(--petal-b)); opacity: 0; animation: la-fall var(--dur) linear infinite; animation-delay: var(--d); }
@keyframes la-fall {
  0% { transform: translate(0, 0) rotate(0deg); opacity: 0; }
  12% { opacity: .95; }
  50% { transform: translate(var(--dx), calc(var(--s) * .6)) rotate(160deg); }
  85% { opacity: .85; }
  100% { transform: translate(calc(var(--dx) * -.4), calc(var(--s) * 1.25)) rotate(320deg); opacity: 0; }
}

/* frost */
.la-frost .la-wash { background: radial-gradient(closest-side, var(--frost-wash), transparent); filter: blur(calc(var(--s) * .04)); }
.la-frost .la-shine { inset: 16%; border-radius: 50%; overflow: hidden; -webkit-mask: radial-gradient(closest-side, #000 55%, transparent); mask: radial-gradient(closest-side, #000 55%, transparent); }
.la-frost .la-shine::after { content: ""; position: absolute; inset: -20%; background: linear-gradient(115deg, transparent 40%, var(--shine) 50%, transparent 60%); transform: translateX(-80%); animation: la-sweep 5.5s ease-in-out infinite; }
.la-frost .la-p { left: var(--x); top: 6%; width: max(2px, calc(var(--s) * .032)); aspect-ratio: 1; border-radius: 50%; background: var(--snow); box-shadow: 0 0 calc(var(--s) * .03) var(--snow); opacity: 0; animation: la-snow var(--dur) linear infinite; animation-delay: var(--d); }
@keyframes la-sweep { 0%, 55% { transform: translateX(-80%); } 100% { transform: translateX(80%); } }
@keyframes la-snow { 0% { transform: translate(0,0); opacity: 0; } 15% { opacity: .95; } 100% { transform: translate(var(--dx), calc(var(--s) * 1.15)); opacity: 0; } }

/* starlit */
.la-star .la-wash { background: radial-gradient(closest-side, var(--star-wash), transparent); filter: blur(calc(var(--s) * .04)); }
.la-star .la-p, .la-prism .la-p { left: var(--x); top: var(--y); width: max(4px, calc(var(--s) * .085)); aspect-ratio: 1; background: var(--star); clip-path: polygon(50% 0, 60% 40%, 100% 50%, 60% 60%, 50% 100%, 40% 60%, 0 50%, 40% 40%); filter: drop-shadow(0 0 calc(var(--s) * .03) var(--star-glow)); transform: scale(0); animation: la-twinkle var(--dur) ease-in-out infinite; animation-delay: var(--d); }
@keyframes la-twinkle { 0%, 100% { transform: scale(0) rotate(0); opacity: 0; } 45% { transform: scale(1) rotate(45deg); opacity: 1; } 60% { transform: scale(.85) rotate(60deg); opacity: .9; } }

/* ink mist */
.la-ink .la-orbit { inset: 6%; animation: la-spin 16s linear infinite; }
.la-ink .la-blob { width: 46%; height: 46%; border-radius: 50%; background: radial-gradient(closest-side, var(--ink-mist), transparent); filter: blur(calc(var(--s) * .05)); }
.la-ink .la-b1 { left: 0; top: 10%; } .la-ink .la-b2 { right: 0; top: 30%; } .la-ink .la-b3 { left: 26%; bottom: 0; }
.la-ink .la-p { left: var(--x); top: var(--y); width: max(2px, calc(var(--s) * .035)); aspect-ratio: 1; border-radius: 50% 50% 50% 0; background: var(--ink-drop); animation: la-drip var(--dur) ease-in-out infinite; animation-delay: var(--d); opacity: 0; }
@keyframes la-spin { to { transform: rotate(360deg); } }
@keyframes la-drip { 0%, 100% { opacity: 0; transform: translateY(0) rotate(-45deg) scale(.6); } 40% { opacity: .9; transform: translateY(calc(var(--s) * -.04)) rotate(-45deg) scale(1); } 80% { opacity: 0; transform: translateY(calc(var(--s) * .06)) rotate(-45deg) scale(.7); } }

/* aurora */
.la-aurora .la-band { inset: 8%; border-radius: 50%; background: conic-gradient(from 0deg, #3ee6c4, #6f8bff, #c77dff, #ff8fc7, #7cf2a0, #3ee6c4); filter: blur(calc(var(--s) * .09)); opacity: var(--aurora-op); -webkit-mask: radial-gradient(closest-side, transparent 38%, #000 62%, transparent 100%); mask: radial-gradient(closest-side, transparent 38%, #000 62%, transparent 100%); animation: la-spin 14s linear infinite, la-huey 9s ease-in-out infinite; }
@keyframes la-huey { 0%, 100% { filter: blur(calc(var(--s) * .09)) hue-rotate(0deg); } 50% { filter: blur(calc(var(--s) * .09)) hue-rotate(40deg); } }

/* fireflies */
.la-firefly .la-wash { background: radial-gradient(closest-side, var(--fly-wash), transparent); filter: blur(calc(var(--s) * .05)); }
.la-firefly .la-p { left: var(--x); top: var(--y); width: max(2px, calc(var(--s) * .036)); aspect-ratio: 1; border-radius: 50%; background: var(--fly); box-shadow: 0 0 calc(var(--s) * .06) calc(var(--s) * .012) var(--fly-glow); animation: la-wander var(--dur) ease-in-out infinite, la-blink var(--bl) ease-in-out infinite; animation-delay: var(--d), var(--d); }
@keyframes la-wander { 0%, 100% { transform: translate(0, 0); } 33% { transform: translate(var(--ax), var(--ay)); } 66% { transform: translate(var(--bx), var(--by)); } }
@keyframes la-blink { 0%, 100% { opacity: .1; } 50% { opacity: 1; } }

/* bubbles */
.la-bubble .la-wash { background: radial-gradient(closest-side, var(--bub-wash), transparent); filter: blur(calc(var(--s) * .05)); }
.la-bubble .la-p { left: var(--x); bottom: 14%; width: max(3px, calc(var(--s) * var(--r))); aspect-ratio: 1; border-radius: 50%; border: max(1px, calc(var(--s) * .008)) solid var(--bub-edge); background: radial-gradient(circle at 32% 30%, rgba(255,255,255,.95) 0 12%, transparent 28%), radial-gradient(circle, transparent 55%, var(--bub-tint)); opacity: 0; animation: la-bubble var(--dur) ease-in infinite; animation-delay: var(--d); }
@keyframes la-bubble { 0% { transform: translate(0, 0) scale(.5); opacity: 0; } 10% { opacity: .95; } 50% { transform: translate(var(--dx), calc(var(--s) * -.5)) scale(.9); } 88% { opacity: .85; transform: translate(calc(var(--dx) * -.5), calc(var(--s) * -.9)) scale(1); } 100% { transform: translate(calc(var(--dx) * -.5), calc(var(--s) * -.95)) scale(1.5); opacity: 0; } }

/* hearts */
.la-heart .la-wash { background: radial-gradient(closest-side at 50% 55%, var(--heart-wash), transparent); filter: blur(calc(var(--s) * .05)); animation: la-breathe 3.2s ease-in-out infinite; }
.la-heart .la-p { left: var(--x); bottom: 30%; font-size: max(7px, calc(var(--s) * .13)); line-height: 1; color: var(--heart); text-shadow: 0 0 calc(var(--s) * .04) var(--heart-glow); opacity: 0; animation: la-heartrise var(--dur) ease-out infinite; animation-delay: var(--d); }
@keyframes la-heartrise { 0% { transform: translate(0, 0) scale(.4) rotate(0); opacity: 0; } 20% { transform: translate(calc(var(--dx) * .3), calc(var(--s) * -.12)) scale(1) rotate(-8deg); opacity: 1; } 60% { transform: translate(var(--dx), calc(var(--s) * -.5)) scale(.95) rotate(8deg); opacity: .9; } 100% { transform: translate(calc(var(--dx) * .4), calc(var(--s) * -.85)) scale(.7) rotate(-4deg); opacity: 0; } }

/* autumn leaves */
.la-leaf .la-wash { background: radial-gradient(closest-side, var(--leaf-wash), transparent); filter: blur(calc(var(--s) * .05)); }
.la-leaf .la-p { width: max(4px, calc(var(--s) * .085)); height: max(3px, calc(var(--s) * .06)); border-radius: 0 100% 0 100%; background: linear-gradient(135deg, var(--leaf-a), var(--leaf-b)); }

/* butterflies */
.la-butterfly .la-p { left: 0; top: 0; width: max(9px, calc(var(--s) * .15)); height: max(8px, calc(var(--s) * .13)); background: linear-gradient(var(--cloud-shade), var(--cloud-shade)) center / max(1px, 9%) 62% no-repeat; offset-path: ellipse(44% 36% at 50% 50%); offset-rotate: 0deg; filter: drop-shadow(0 0 calc(var(--s) * .025) var(--wing-glow)); animation: la-orbit var(--dur) linear infinite; animation-delay: var(--d); }
.la-butterfly .la-p::before, .la-butterfly .la-p::after { content: ""; position: absolute; top: 0; width: 50%; height: 100%; background: radial-gradient(ellipse 46% 30% at 52% 30%, var(--wing-a) 0 94%, transparent 100%), radial-gradient(ellipse 30% 21% at 62% 72%, var(--wing-b) 0 92%, transparent 100%); animation: la-flap var(--fl, .55s) ease-in-out infinite; animation-delay: var(--fd, 0s); }
.la-butterfly .la-p::before { left: 0; transform-origin: right center; }
.la-butterfly .la-p::after { right: 0; transform-origin: left center; background: radial-gradient(ellipse 46% 30% at 48% 30%, var(--wing-a) 0 94%, transparent 100%), radial-gradient(ellipse 30% 21% at 38% 72%, var(--wing-b) 0 92%, transparent 100%); }
@keyframes la-flap { 0%, 100% { transform: scaleX(1); } 50% { transform: scaleX(.3); } }
@keyframes la-orbit { from { offset-distance: 0%; } to { offset-distance: 100%; } }

/* rain cloud */
.la-rain .la-cloud { left: 31%; top: 4%; width: 38%; height: 14%; filter: drop-shadow(0 calc(var(--s) * .01) calc(var(--s) * .02) rgba(0,0,0,.25)); animation: la-bob 5s ease-in-out infinite; }
.la-rain .la-cloud i { background: var(--cloud); border-radius: 50%; box-shadow: inset 0 calc(var(--s) * -.012) 0 var(--cloud-shade); }
.la-rain .la-c1 { left: 6%; top: 38%; width: 38%; height: 62%; }
.la-rain .la-c2 { left: 28%; top: 0; width: 46%; height: 84%; }
.la-rain .la-c3 { right: 4%; top: 30%; width: 36%; height: 64%; }
.la-rain .la-c4 { left: 12%; bottom: 0; width: 78%; height: 44%; border-radius: 999px !important; }
.la-rain .la-p { left: var(--x); top: 15%; width: max(1px, calc(var(--s) * .014)); height: calc(var(--s) * .08); border-radius: 2px; background: linear-gradient(transparent, var(--drop)); opacity: 0; animation: la-drizzle var(--dur) linear infinite; animation-delay: var(--d); }
@keyframes la-drizzle { 0% { transform: translateY(0); opacity: 0; } 10% { opacity: 1; } 70% { opacity: .9; } 100% { transform: translateY(calc(var(--s) * .3)); opacity: 0; } }

/* music notes */
.la-note .la-wash { background: radial-gradient(closest-side, var(--note-wash), transparent); filter: blur(calc(var(--s) * .05)); }
.la-note .la-p { left: var(--x); bottom: 30%; font-size: max(8px, calc(var(--s) * .12)); line-height: 1; color: var(--note); text-shadow: 0 0 calc(var(--s) * .04) var(--note-glow); opacity: 0; animation: la-heartrise var(--dur) ease-out infinite; animation-delay: var(--d); }

/* nightshade */
.la-shade .la-silwrap { animation: la-rimpulse 4s ease-in-out infinite; }
.la-shade .la-sil { background: var(--shade-rim); transform: scale(1.11); }
.la-shade .la-p { left: var(--x); bottom: 20%; width: calc(var(--s) * .22); aspect-ratio: 1; border-radius: 50%; background: radial-gradient(closest-side, var(--shade-smoke), transparent); filter: blur(calc(var(--s) * .06)); opacity: 0; animation: la-smoke var(--dur) ease-out infinite; animation-delay: var(--d); }
@keyframes la-smoke { 0% { transform: translate(0, 0) scale(.5); opacity: 0; } 25% { opacity: 1; } 100% { transform: translate(var(--dx), calc(var(--s) * -.7)) scale(1.6); opacity: 0; } }

/* prism */
.la-prism .la-silwrap { filter: blur(max(1px, calc(var(--s) * .022))); }
.la-prism .la-sil { transform: scale(1.1); }
.la-prism .la-spin { inset: -50%; background: conic-gradient(#ff7eb6, #ffd36e, #7cf2a0, #6fd3ff, #a98bff, #ff7eb6); animation: la-spin 5s linear infinite; }
.la-prism .la-p { --star: #ffffff; --star-glow: rgba(255,255,255,.9); width: max(3px, calc(var(--s) * .06)); }

@keyframes la-breathe { 0%, 100% { transform: scale(.94); opacity: .8; } 50% { transform: scale(1.05); opacity: 1; } }

.la-prism .la-p { --star: #ffffff; --star-glow: rgba(255,255,255,.9); }
body[data-theme="inkpaw"] .la-prism .la-p, body[data-theme="default"][data-default-mode="light"] .la-prism .la-p { --star: #b58cff; --star-glow: rgba(160,120,255,.5); }

/* Calm variant for dense lists (message avatars): every effect frozen on a varied frame. */
.lemo-aura.is-still *, .lemo-aura.is-still *::before, .lemo-aura.is-still *::after { animation-play-state: paused !important; }
@media (prefers-reduced-motion: reduce) { .lemo-aura *, .lemo-aura *::before, .lemo-aura *::after, .la-orb * { animation-play-state: paused !important; } }

/* Glow orb: the tradeable item form of an aura. */
.la-orb { --c1: #dfe7ff; --c2: #8fa6ff; position: relative; display: grid; place-items: center; width: 100%; height: 100%; container-type: size; }
.la-orb-float { position: absolute; inset: 0 0 10% 0; display: grid; place-items: center; animation: la-orb-bob 5s ease-in-out infinite; }
.la-orb-float > .lemo-aura { width: 100%; height: 100%; }
.la-orb .la-silwrap, .la-orb .la-crescent { display: none; }
.la-essence { position: relative; z-index: 1; grid-area: 1 / 1; display: block; width: 40%; aspect-ratio: 1; border-radius: 50%;
  background: radial-gradient(circle at 36% 32%, #fff 0 7%, color-mix(in srgb, var(--c1) 92%, #fff) 26%, var(--c2) 64%, color-mix(in srgb, var(--c2) 60%, #000) 100%);
  box-shadow: 0 0 calc(100cqw * .07) color-mix(in srgb, var(--c1) 80%, transparent), 0 0 calc(100cqw * .2) color-mix(in srgb, var(--c2) 50%, transparent), inset 0 calc(100cqw * -.03) calc(100cqw * .05) color-mix(in srgb, var(--c2) 70%, #000); }
.la-essence .la-swirl { position: absolute; inset: -22%; border-radius: 50%;
  background: conic-gradient(from 0deg, transparent, color-mix(in srgb, var(--c1) 90%, transparent) 18%, transparent 38%, color-mix(in srgb, var(--c2) 80%, transparent) 62%, transparent 84%);
  -webkit-mask: radial-gradient(closest-side, transparent 60%, #000 66%, transparent 84%); mask: radial-gradient(closest-side, transparent 60%, #000 66%, transparent 84%); animation: la-spin 5s linear infinite; }
.la-essence .la-gloss { position: absolute; left: 20%; top: 14%; width: 34%; height: 22%; border-radius: 50%; background: rgba(255,255,255,.75); filter: blur(calc(100cqw * .006)); rotate: -30deg; }
.la-orb-prism .la-essence { background: radial-gradient(circle at 36% 32%, #fff 0 10%, transparent 34%), conic-gradient(from 30deg, #ff9cc6, #ffe08a, #9ff5b8, #8fdcff, #b9a2ff, #ff9cc6); animation: la-spin 9s linear infinite; }
.la-orb-shadow { position: absolute; left: 50%; bottom: 2%; width: 44%; height: 9%; translate: -50% 0; border-radius: 50%;
  background: radial-gradient(closest-side, color-mix(in srgb, var(--c2) 45%, rgba(0,0,0,.6)), transparent); filter: blur(calc(100cqw * .015)); animation: la-orb-shadow 5s ease-in-out infinite; }
body[data-theme="inkpaw"] .la-orb-shadow, body[data-theme="default"][data-default-mode="light"] .la-orb-shadow { background: radial-gradient(closest-side, color-mix(in srgb, var(--c2) 35%, rgba(73,55,34,.35)), transparent); }
@keyframes la-orb-bob { 0%, 100% { translate: 0 0; } 50% { translate: 0 calc(100cqw * -.035); } }
@keyframes la-orb-shadow { 0%, 100% { scale: 1; opacity: .9; } 50% { scale: .82; opacity: .6; } }

/* Host adjustments */
.profile-avatar:has(> .lemo-aura) { overflow: visible; }
.profile-avatar > .lemo-aura { width: 82%; height: 82%; }
.profile-avatar .lemo-aura > img { width: 100%; height: 100%; }
span.moment-pet, span.moment-preview-pet { display: grid; place-items: center; }
.moment-pet .lemo-aura > img, .moment-preview-pet .lemo-aura > img { width: 100%; height: 100%; }

/* Arc: current tracking around the Lemo's own outline. Each band is the silhouette minus a slightly
   smaller copy of itself; inside sits an oversized noise sheet that only ever rotates, so the whole
   effect stays on the compositor. Sharpness lives in the texture, never in a runtime filter. */
.lemo-aura { --arc-noise: url('/images/aura-arc-noise.png'); --arc-hot: #fff; --arc-mid: #dce9ff; --arc-far: #8aa2cc; --arc-haze: #a9b6ff; }
.la-arc .la-cur { position: absolute; inset: 0; display: block; overflow: hidden;
  -webkit-mask-image: var(--la-mask), var(--la-mask); mask-image: var(--la-mask), var(--la-mask);
  -webkit-mask-repeat: no-repeat, no-repeat; mask-repeat: no-repeat, no-repeat;
  -webkit-mask-position: center, center; mask-position: center, center;
  -webkit-mask-size: var(--arc-out), var(--arc-in); mask-size: var(--arc-out), var(--arc-in);
  -webkit-mask-composite: xor; mask-composite: exclude; }
.lemo-aura:not([style*="--la-mask"]) .la-cur { display: none; }
/* Keep the discharge at the extremities rather than evenly all round. */
.la-arc .la-cur::after { content: ""; position: absolute; inset: 0; z-index: 2;
  background: radial-gradient(circle at 50% 58%, rgba(0,0,0,.4) 0 16%, transparent 54%); mix-blend-mode: multiply; }
.la-arc .la-cur > i { position: absolute; left: -110%; top: -110%; width: 320%; height: 320%; display: block;
  background: var(--arc-tint); transform-origin: 50% 50%;
  -webkit-mask: var(--arc-noise) repeat 0 0 / 16.666% 16.666%; mask: var(--arc-noise) repeat 0 0 / 16.666% 16.666%;
  will-change: transform; animation: la-cur-turn var(--arc-speed, 7s) linear infinite; }
.la-arc .la-cur > i.la-two { animation-name: la-cur-turn-back; transform-origin: 38% 62%; opacity: .85; }
.la-arc .la-cur > i.la-three { animation-name: la-cur-turn-off; transform-origin: 64% 34%; opacity: .7; }
@keyframes la-cur-turn { to { transform: rotate(360deg); } }
@keyframes la-cur-turn-back { to { transform: rotate(-360deg) scale(1.08); } }
@keyframes la-cur-turn-off { 0% { transform: rotate(0) translate3d(3%, -2%, 0); } 100% { transform: rotate(360deg) translate3d(3%, -2%, 0); } }
.la-arc .la-cur-core { z-index: 3; --arc-out: 65.4%; --arc-in: 62.5%; --arc-tint: var(--arc-hot); mix-blend-mode: screen; animation: la-cur-beat 5.6s linear infinite; }
.la-arc .la-cur-core > i { --arc-speed: 7s; } .la-arc .la-cur-core > i.la-two { --arc-speed: 4.4s; } .la-arc .la-cur-core > i.la-three { --arc-speed: 6.2s; }
.la-arc .la-cur-mid { z-index: 2; --arc-out: 69%; --arc-in: 62.6%; --arc-tint: var(--arc-mid); opacity: .95; }
.la-arc .la-cur-mid > i { --arc-speed: 9s; animation-direction: reverse; } .la-arc .la-cur-mid > i.la-two { --arc-speed: 5.6s; }
.la-arc .la-cur-far { z-index: 1; --arc-out: 74%; --arc-in: 62.8%; --arc-tint: var(--arc-far); opacity: .7; }
.la-arc .la-cur-far > i { --arc-speed: 13s; }
/* Front passes: a light on the inside edge, and strands crossing over the body. */
.la-arc .la-cur-inner { z-index: 5; --arc-out: 62.5%; --arc-in: 58.8%; --arc-tint: var(--arc-hot); opacity: .5; mix-blend-mode: screen; }
.la-arc .la-cur-inner > i { --arc-speed: 6s; animation-direction: reverse; }
.la-arc .la-cur-front { z-index: 6; --arc-tint: var(--arc-hot); opacity: .34; mix-blend-mode: screen;
  -webkit-mask-image: var(--la-mask); mask-image: var(--la-mask);
  -webkit-mask-size: 61.4%; mask-size: 61.4%; -webkit-mask-composite: add; mask-composite: add;
  animation: la-cur-front 3.8s ease-in-out infinite; }
.la-arc .la-cur-front::after { background: radial-gradient(circle at 50% 56%, rgba(0,0,0,.55) 0 30%, transparent 70%); }
.la-arc .la-cur-front > i { --arc-speed: 8.5s; } .la-arc .la-cur-front > i.la-two { --arc-speed: 5.2s; }
@keyframes la-cur-beat { 0%, 88%, 100% { opacity: .92; } 91% { opacity: 1; } 93% { opacity: .75; } 95% { opacity: 1; } }
@keyframes la-cur-front { 0%, 100% { opacity: .18; } 45% { opacity: .42; } 70% { opacity: .26; } }
/* Small hosts lose sub-pixel strands, so widen the bands and coarsen the grain. */
@container (max-width: 90px) {
  .la-arc .la-cur-core { --arc-out: 66.8%; --arc-in: 62.4%; }
  .la-arc .la-cur-mid { --arc-out: 70.4%; --arc-in: 62.6%; opacity: .75; }
  .la-arc .la-cur-far { opacity: .45; }
  .la-arc .la-cur-front { opacity: .22; }
  .la-arc .la-cur > i { -webkit-mask-size: 26% 26%; mask-size: 26% 26%; }
}
.la-arc .la-cur .la-wash { display: none; }
/* The orb has no silhouette to hug, so it gets the haze and its own ring instead. */
.la-orb-arc .la-essence { box-shadow: 0 0 calc(100cqw * .09) #fff, 0 0 calc(100cqw * .26) color-mix(in srgb, var(--arc-haze) 70%, transparent); }
