diff --git a/src/lib/components/home/StageAmbience.svelte b/src/lib/components/home/StageAmbience.svelte
index 386de94..f7fcac0 100644
--- a/src/lib/components/home/StageAmbience.svelte
+++ b/src/lib/components/home/StageAmbience.svelte
@@ -4,7 +4,8 @@
import Cloud from '../svg/Cloud.svelte';
import Moon from '../svg/Moon.svelte';
import Star from '../svg/Star.svelte';
- import Ground from '../svg/Ground.svelte';
+ import Meadow from '../svg/Meadow.svelte';
+ import Butterfly from '../svg/Butterfly.svelte';
let { stage }: { stage: Stage } = $props();
@@ -57,15 +58,6 @@
{ l: 93, t: 61, s: 30, sc: 3, rot: 10, d: 2.5, dl: 0.2 },
];
- const grass: Deco[] = [
- { l: 5, b: 1, s: 66, d: 2.4, dl: 0 },
- { l: 19, b: 2, s: 48, flip: true, d: 2.8, dl: 0.4 },
- { l: 33, b: 1, s: 56, d: 2.2, dl: 0.7 },
- { l: 63, b: 2, s: 50, flip: true, d: 2.6, dl: 0.2 },
- { l: 78, b: 1, s: 70, d: 2.3, dl: 0.9 },
- { l: 90, b: 2, s: 46, flip: true, d: 2.7, dl: 0.5 },
- ];
-
function baseStyle(d: Deco): string {
const vert = d.b != null ? `bottom:${d.b}%` : `top:${d.t}%`;
return `left:${d.l}%; ${vert}; transform: scaleX(${d.flip ? -1 : 1}) rotate(${d.rot ?? 0}deg);`;
@@ -98,11 +90,10 @@
{/each}
{:else}
- {#each grass as d, i (i)}
-
-
-
- {/each}
+
+
+
+
{/if}
@@ -139,10 +130,22 @@
50% { opacity: 1; transform: scale(1.35); }
}
- .sway { animation: sway var(--dur, 2.5s) ease-in-out infinite alternate; transform-origin: bottom center; }
- @keyframes sway {
- from { transform: rotate(-12deg); }
- to { transform: rotate(12deg); }
+ .butterfly { position: absolute; }
+ .b1 { animation: fly1 9s ease-in-out infinite; }
+ .b2 { animation: fly2 11s ease-in-out infinite; }
+ @keyframes fly1 {
+ 0% { left: 12%; top: 62%; }
+ 25% { left: 24%; top: 44%; }
+ 50% { left: 35%; top: 56%; }
+ 75% { left: 20%; top: 50%; }
+ 100% { left: 12%; top: 62%; }
+ }
+ @keyframes fly2 {
+ 0% { left: 64%; top: 42%; }
+ 25% { left: 80%; top: 58%; }
+ 50% { left: 88%; top: 46%; }
+ 75% { left: 72%; top: 38%; }
+ 100% { left: 64%; top: 42%; }
}
.moon {
@@ -179,6 +182,6 @@
}
@media (prefers-reduced-motion: reduce) {
- .anim, .moon { animation: none; }
+ .anim, .moon, .butterfly { animation: none; }
}
diff --git a/src/lib/components/svg/Butterfly.svelte b/src/lib/components/svg/Butterfly.svelte
new file mode 100644
index 0000000..d70c402
--- /dev/null
+++ b/src/lib/components/svg/Butterfly.svelte
@@ -0,0 +1,46 @@
+
+
+
+
+
diff --git a/src/lib/components/svg/Meadow.svelte b/src/lib/components/svg/Meadow.svelte
new file mode 100644
index 0000000..5b7fe93
--- /dev/null
+++ b/src/lib/components/svg/Meadow.svelte
@@ -0,0 +1,95 @@
+
+
+
+
+
+
+
+ {#each tufts as t, i (i)}
+
+
+ {#if t.type === 'blade'}
+
+ {:else}
+
+ {/if}
+
+
+ {/each}
+
+
+