feat(design): Wellen in der Seitenleiste von Aura rollen

Die festen Huegel weichen drei Wellenkacheln (aura-wave-back/mid/front).
Jede ist genau eine Sinusperiode breit, wiederholt sich waagerecht und
wandert in 40 s um ihre eigene Kachelbreite - nahtlos und in beiden
Modi. Unterschiedliche Kachelbreiten ergeben unterschiedliche
Geschwindigkeiten. Loest aura-hills ab; bei prefers-reduced-motion
stehen die Wellen still.

Co-Authored-By: Claude Opus 5 (1M context) <noreply@anthropic.com>
This commit is contained in:
Sascha Wolf
2026-09-17 23:31:12 +02:00
co-authored by Claude Opus 5
parent 49c03f5e1b
commit 2d84bac91d
7 changed files with 85 additions and 29 deletions
+43 -22
View File
@@ -902,6 +902,9 @@ html.theme-aura:not(.dark) {
rgb(255 253 247 / 0.35) 78%,
rgb(255 253 247 / 0.5) 100%
),
url('/themes/aura-wave-front.svg'),
url('/themes/aura-wave-mid.svg'),
url('/themes/aura-wave-back.svg'),
url('/themes/aura-sidebar.svg');
--color-canvas: #fbf6ea;
@@ -967,6 +970,9 @@ html.theme-aura.dark {
rgb(19 22 42 / 0.6) 78%,
rgb(19 22 42 / 0.7) 100%
),
url('/themes/aura-wave-front.svg'),
url('/themes/aura-wave-mid.svg'),
url('/themes/aura-wave-back.svg'),
url('/themes/aura-sidebar.svg');
--color-canvas: #0c0e1c;
@@ -1114,16 +1120,29 @@ html.theme-aura.dark {
}
/*
* Aura, hell: die Huegel in der Seitenleiste schaukeln langsam hin und her.
* Rollende Wellen in der Seitenleiste (Theme Aura, beide Modi).
*
* Bewegt wird nur die Grafik-Ebene (zweiter Wert), der Schleier darueber
* bleibt stehen. Die Grafik ist an der Unterkante verankert und wird
* beschnitten (preserveAspectRatio slice), deshalb entsteht am Rand keine
* Luecke. 26 Sekunden pro Runde: als Bewegung kaum zu bemerken, aber die
* Leiste wirkt nicht mehr wie ein Standbild.
* Drei Wellenkacheln (aura-wave-*.svg) liegen unter dem Schleier und ueber
* dem Dunst. Jede ist genau eine Sinusperiode breit und wiederholt sich
* waagerecht; @keyframes aura-waves schiebt jede um genau ihre eigene
* Kachelbreite weiter, deshalb sieht das Bild am Ende der Runde aus wie am
* Anfang und es ruckt nicht. Weil die Kacheln unterschiedlich breit sind,
* laufen sie bei gleicher Dauer unterschiedlich schnell - vorne schneller
* als hinten, das gibt Tiefe.
*
* Es bewegen sich nur die Wellen: der Schleier (erste Ebene) und der Dunst
* (letzte) stehen still, sonst wanderte die Helligkeit unter den
* Menuepunkten.
*/
html.theme-aura:not(.dark) .app-sidebar {
animation: aura-hills 26s ease-in-out infinite;
html.theme-aura .app-sidebar {
background-repeat: no-repeat, repeat-x, repeat-x, repeat-x, no-repeat;
background-size:
cover,
260px 165px,
320px 200px,
400px 235px,
cover;
animation: aura-waves 40s linear infinite;
}
/* Sonnenstrahl (components/AuraWeather.tsx): verjuengt zur Sonne hin. */
@@ -1144,7 +1163,7 @@ html.theme-aura.dark {
@media (prefers-reduced-motion: reduce) {
html.theme-aura .app-header::before,
html.theme-aura:not(.dark) .app-sidebar {
html.theme-aura .app-sidebar {
animation: none;
}
}
@@ -1269,24 +1288,26 @@ html.theme-aura.dark {
}
/*
* Schaukelnde Huegel in der Seitenleiste (Theme Aura, hell). Der erste Wert ist
* der Schleier und bleibt stehen, der zweite die Grafik: 9 px nach rechts,
* dabei 4 px tiefer, und zurueck.
* Rollende Wellen in der Seitenleiste (Theme Aura). Reihenfolge der Werte wie
* im Bild: Schleier, Welle vorn, Welle Mitte, Welle hinten, Dunst. Jede Welle
* wandert um genau ihre Kachelbreite - 260, 320 und 400 px - und ist damit
* nach einer Runde wieder deckungsgleich.
*/
@keyframes aura-hills {
0% {
@keyframes aura-waves {
from {
background-position:
center top,
calc(50% - 9px) bottom;
0 bottom,
0 bottom,
0 bottom,
center bottom;
}
50% {
to {
background-position:
center top,
calc(50% + 9px) calc(100% + 4px);
}
100% {
background-position:
center top,
calc(50% - 9px) bottom;
260px bottom,
320px bottom,
400px bottom,
center bottom;
}
}