Begrüßungs-Karte im Kundenkonto besonders gestaltet
Wandernder Mehrfarb-Verlaufsrand, sanfter Farbschein im Hintergrund, ein Glanz-Sweep, der regelmäßig durchläuft, ein pulsierender Leucht-Ring um den Avatar und zwei funkelnde ✨-Sternchen — dieselbe Formsprache wie beim "Meine Daten"-Knopf, nur größer und ruhiger für gute Lesbarkeit. Respektiert prefers-reduced-motion. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
57183825a0
commit
fac404190f
@@ -65,6 +65,8 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
<section class="section-tight">
|
<section class="section-tight">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="account-head card">
|
<div class="account-head card">
|
||||||
|
<span class="account-head-sparkle account-head-sparkle-1" aria-hidden="true">✨</span>
|
||||||
|
<span class="account-head-sparkle account-head-sparkle-2" aria-hidden="true">✨</span>
|
||||||
<div class="account-head-identity">
|
<div class="account-head-identity">
|
||||||
<span class="account-avatar-lg" id="dash-avatar" aria-hidden="true"></span>
|
<span class="account-avatar-lg" id="dash-avatar" aria-hidden="true"></span>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
<section class="section-tight">
|
<section class="section-tight">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="account-head card">
|
<div class="account-head card">
|
||||||
|
<span class="account-head-sparkle account-head-sparkle-1" aria-hidden="true">✨</span>
|
||||||
|
<span class="account-head-sparkle account-head-sparkle-2" aria-hidden="true">✨</span>
|
||||||
<div class="account-head-identity">
|
<div class="account-head-identity">
|
||||||
<span class="account-avatar-lg" id="dash-avatar" aria-hidden="true"></span>
|
<span class="account-avatar-lg" id="dash-avatar" aria-hidden="true"></span>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
<section class="section-tight">
|
<section class="section-tight">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="account-head card">
|
<div class="account-head card">
|
||||||
|
<span class="account-head-sparkle account-head-sparkle-1" aria-hidden="true">✨</span>
|
||||||
|
<span class="account-head-sparkle account-head-sparkle-2" aria-hidden="true">✨</span>
|
||||||
<div class="account-head-identity">
|
<div class="account-head-identity">
|
||||||
<span class="account-avatar-lg" id="dash-avatar" aria-hidden="true"></span>
|
<span class="account-avatar-lg" id="dash-avatar" aria-hidden="true"></span>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -65,6 +65,8 @@ const offeneSendungen = beispielBestellungen.filter((b) => b.status === "versend
|
|||||||
<section class="section-tight">
|
<section class="section-tight">
|
||||||
<div class="container">
|
<div class="container">
|
||||||
<div class="account-head card">
|
<div class="account-head card">
|
||||||
|
<span class="account-head-sparkle account-head-sparkle-1" aria-hidden="true">✨</span>
|
||||||
|
<span class="account-head-sparkle account-head-sparkle-2" aria-hidden="true">✨</span>
|
||||||
<div class="account-head-identity">
|
<div class="account-head-identity">
|
||||||
<span class="account-avatar-lg" id="dash-avatar" aria-hidden="true"></span>
|
<span class="account-avatar-lg" id="dash-avatar" aria-hidden="true"></span>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -1303,16 +1303,65 @@ a:focus-visible, button:focus-visible {
|
|||||||
/* Persönlicher Kundenbereich (/konto/angemeldet/) — Ansicht für angemeldete Kund:innen mit
|
/* Persönlicher Kundenbereich (/konto/angemeldet/) — Ansicht für angemeldete Kund:innen mit
|
||||||
Bestellhistorie, Sendungsverfolgung, Wunschliste und Profildaten. Nutzt durchgehend die
|
Bestellhistorie, Sendungsverfolgung, Wunschliste und Profildaten. Nutzt durchgehend die
|
||||||
bestehende Karten-/Badge-Optik der Seite, damit sich nichts fremd anfühlt. */
|
bestehende Karten-/Badge-Optik der Seite, damit sich nichts fremd anfühlt. */
|
||||||
|
/* Die Begrüßungs-Karte ganz oben im Kundenbereich darf ruhig "die Spezielle" sein — wandernder
|
||||||
|
Mehrfarb-Verlaufsrand, ein sanfter Farbschein im Hintergrund, ein leiser Glanz-Sweep, der
|
||||||
|
regelmäßig durchläuft, ein pulsierender Leucht-Ring um den Avatar und zwei funkelnde
|
||||||
|
Sternchen. Dieselbe Formsprache wie beim "Meine Daten"-Knopf, nur größer und ruhiger, damit
|
||||||
|
der Text weiterhin gut lesbar bleibt. */
|
||||||
.account-head {
|
.account-head {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
display: flex;
|
display: flex;
|
||||||
align-items: flex-start;
|
align-items: flex-start;
|
||||||
justify-content: space-between;
|
justify-content: space-between;
|
||||||
gap: 1.5rem;
|
gap: 1.5rem;
|
||||||
flex-wrap: wrap;
|
flex-wrap: wrap;
|
||||||
|
border: 1.5px solid transparent;
|
||||||
|
background:
|
||||||
|
linear-gradient(165deg, var(--c-anthracite-light), var(--c-anthracite)) padding-box,
|
||||||
|
linear-gradient(120deg, #9b7fd6, var(--c-accent), #e3b23c, var(--c-sale), #9b7fd6) border-box;
|
||||||
|
background-size: 100% 100%, 300% 100%;
|
||||||
|
animation: account-head-border-shift 9s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
|
.account-head::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
background: radial-gradient(60% 90% at 10% 15%, color-mix(in srgb, #9b7fd6 22%, transparent), transparent 70%);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.account-head::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -60%;
|
||||||
|
width: 35%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(100deg, transparent, rgba(255, 255, 255, 0.13), transparent);
|
||||||
|
transform: skewX(-18deg);
|
||||||
|
animation: account-head-shine 6s ease-in-out infinite;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.account-head > * { position: relative; z-index: 1; }
|
||||||
.account-head-identity { display: flex; align-items: center; gap: 1rem; }
|
.account-head-identity { display: flex; align-items: center; gap: 1rem; }
|
||||||
.account-head h1 { margin: 0.2rem 0 0.5rem; }
|
.account-head h1 { margin: 0.2rem 0 0.5rem; }
|
||||||
.account-head .lead { margin: 0; max-width: 52ch; }
|
.account-head .lead { margin: 0; max-width: 52ch; }
|
||||||
|
.account-head-sparkle {
|
||||||
|
position: absolute;
|
||||||
|
font-size: 0.9rem;
|
||||||
|
pointer-events: none;
|
||||||
|
z-index: 1;
|
||||||
|
}
|
||||||
|
.account-head-sparkle-1 { top: 1.1rem; right: 8.5rem; animation: account-nav-sparkle-twinkle 2.6s ease-in-out infinite; }
|
||||||
|
.account-head-sparkle-2 { bottom: 1.3rem; right: 3.2rem; font-size: 0.7rem; animation: account-nav-sparkle-twinkle 3.4s ease-in-out infinite 0.6s; }
|
||||||
|
@keyframes account-head-border-shift {
|
||||||
|
0%, 100% { background-position: 0 0, 0% 50%; }
|
||||||
|
50% { background-position: 0 0, 100% 50%; }
|
||||||
|
}
|
||||||
|
@keyframes account-head-shine {
|
||||||
|
0% { left: -60%; }
|
||||||
|
35%, 100% { left: 130%; }
|
||||||
|
}
|
||||||
/* Großer Avatar (Kopfzeile des Dashboards + Profil-Bereich) — gleiches Prinzip wie der kleine
|
/* Großer Avatar (Kopfzeile des Dashboards + Profil-Bereich) — gleiches Prinzip wie der kleine
|
||||||
Avatar im Header-Konto-Menü (Foto als Hintergrundbild, sonst erster Buchstabe des Namens). */
|
Avatar im Header-Konto-Menü (Foto als Hintergrundbild, sonst erster Buchstabe des Namens). */
|
||||||
.account-avatar-lg {
|
.account-avatar-lg {
|
||||||
@@ -1330,6 +1379,18 @@ a:focus-visible, button:focus-visible {
|
|||||||
font-weight: 800;
|
font-weight: 800;
|
||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
|
.account-head-identity .account-avatar-lg {
|
||||||
|
animation: account-avatar-glow 3.6s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
@keyframes account-avatar-glow {
|
||||||
|
0%, 100% { box-shadow: 0 0 0 3px color-mix(in srgb, var(--c-accent) 35%, transparent), 0 0 16px -4px color-mix(in srgb, #9b7fd6 55%, transparent); }
|
||||||
|
50% { box-shadow: 0 0 0 3px color-mix(in srgb, #e3b23c 40%, transparent), 0 0 22px -2px color-mix(in srgb, #e3b23c 65%, transparent); }
|
||||||
|
}
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
.account-head, .account-head::after, .account-head-sparkle-1, .account-head-sparkle-2, .account-head-identity .account-avatar-lg {
|
||||||
|
animation: none;
|
||||||
|
}
|
||||||
|
}
|
||||||
@media (max-width: 500px) { .account-head-identity { flex-wrap: wrap; } }
|
@media (max-width: 500px) { .account-head-identity { flex-wrap: wrap; } }
|
||||||
/* Kontobereich-Schnellnavigation: statt drei einzelner, loser Kästchen EINE zusammenhängende
|
/* Kontobereich-Schnellnavigation: statt drei einzelner, loser Kästchen EINE zusammenhängende
|
||||||
Leiste direkt über den zugehörigen Abschnitten — jedes Segment ist ein echter Filter-Knopf:
|
Leiste direkt über den zugehörigen Abschnitten — jedes Segment ist ein echter Filter-Knopf:
|
||||||
|
|||||||
Reference in New Issue
Block a user