Kundenkonto: einheitlicher "premium" Look für alle Kisten + größerer Avatar
Größeres Profilbild in der "Mein Konto"-Karte. Alle vier Navigations- Knöpfe (Bestellungen/Offene Sendungen/Wunschliste/Meine Daten) haben jetzt denselben besonderen Stil wie vorher nur "Meine Daten": wanderndes Verlaufs- licht in der eigenen Akzentfarbe, pulsierender Glanzrand, funkelndes Sternchen und Farbverlauf-Text — nur die Farbe unterscheidet sich pro Knopf. Der "Meine Daten"-Inhaltsbereich (Profilkarte) bekommt dieselbe "mega besondere" Behandlung wie die Begrüßungs-Karte (wandernder Verlaufs- rand, Farbschein, Glanz-Sweep, Sternchen). Bestellkarten bekommen einen passenden dezenten Glanz-Sweep und pulsierenden Schein in ihrer Status- farbe für ein stimmigeres Gesamtbild. Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
co-authored by
Claude Sonnet 5
parent
8873c5e8eb
commit
e523d6f0e5
@@ -87,16 +87,19 @@ const angekommeneBestellungen = beispielBestellungen.filter((b) => b.status ===
|
|||||||
Abschnitt weiter unten, Icon und Akzentfarbe passen zur jeweiligen Überschrift. */}
|
Abschnitt weiter unten, Icon und Akzentfarbe passen zur jeweiligen Überschrift. */}
|
||||||
<nav class="account-nav" aria-label={t.accountDash.navLabel}>
|
<nav class="account-nav" aria-label={t.accountDash.navLabel}>
|
||||||
<button type="button" class="account-nav-item account-nav-orders" data-tab="bestellungen">
|
<button type="button" class="account-nav-item account-nav-orders" data-tab="bestellungen">
|
||||||
|
<span class="account-nav-sparkle" aria-hidden="true">✨</span>
|
||||||
<span class="account-nav-icon" aria-hidden="true">📦</span>
|
<span class="account-nav-icon" aria-hidden="true">📦</span>
|
||||||
<span class="account-nav-value">{angekommeneBestellungen}</span>
|
<span class="account-nav-value">{angekommeneBestellungen}</span>
|
||||||
<span class="account-nav-label">{t.accountDash.statOrders}</span>
|
<span class="account-nav-label">{t.accountDash.statOrders}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="account-nav-item account-nav-open" data-tab="offene">
|
<button type="button" class="account-nav-item account-nav-open" data-tab="offene">
|
||||||
|
<span class="account-nav-sparkle" aria-hidden="true">✨</span>
|
||||||
<span class="account-nav-icon" aria-hidden="true">🚚</span>
|
<span class="account-nav-icon" aria-hidden="true">🚚</span>
|
||||||
<span class="account-nav-value">{offeneSendungen}</span>
|
<span class="account-nav-value">{offeneSendungen}</span>
|
||||||
<span class="account-nav-label">{t.accountDash.statOpen}</span>
|
<span class="account-nav-label">{t.accountDash.statOpen}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="account-nav-item account-nav-wishlist" data-tab="wunschliste">
|
<button type="button" class="account-nav-item account-nav-wishlist" data-tab="wunschliste">
|
||||||
|
<span class="account-nav-sparkle" aria-hidden="true">✨</span>
|
||||||
<span class="account-nav-icon" aria-hidden="true">🩵</span>
|
<span class="account-nav-icon" aria-hidden="true">🩵</span>
|
||||||
<span class="account-nav-value">0</span>
|
<span class="account-nav-value">0</span>
|
||||||
<span class="account-nav-label">{t.accountDash.statWishlist}</span>
|
<span class="account-nav-label">{t.accountDash.statWishlist}</span>
|
||||||
@@ -239,6 +242,8 @@ const angekommeneBestellungen = beispielBestellungen.filter((b) => b.status ===
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>{t.accountDash.profileTitle}</h2>
|
<h2>{t.accountDash.profileTitle}</h2>
|
||||||
<div class="card profile-card">
|
<div class="card profile-card">
|
||||||
|
<span class="profile-card-sparkle profile-card-sparkle-1" aria-hidden="true">✨</span>
|
||||||
|
<span class="profile-card-sparkle profile-card-sparkle-2" aria-hidden="true">✨</span>
|
||||||
<div class="profile-photo-row">
|
<div class="profile-photo-row">
|
||||||
<span class="account-avatar-lg" id="profile-avatar" aria-hidden="true"></span>
|
<span class="account-avatar-lg" id="profile-avatar" aria-hidden="true"></span>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -87,16 +87,19 @@ const angekommeneBestellungen = beispielBestellungen.filter((b) => b.status ===
|
|||||||
Abschnitt weiter unten, Icon und Akzentfarbe passen zur jeweiligen Überschrift. */}
|
Abschnitt weiter unten, Icon und Akzentfarbe passen zur jeweiligen Überschrift. */}
|
||||||
<nav class="account-nav" aria-label={t.accountDash.navLabel}>
|
<nav class="account-nav" aria-label={t.accountDash.navLabel}>
|
||||||
<button type="button" class="account-nav-item account-nav-orders" data-tab="bestellungen">
|
<button type="button" class="account-nav-item account-nav-orders" data-tab="bestellungen">
|
||||||
|
<span class="account-nav-sparkle" aria-hidden="true">✨</span>
|
||||||
<span class="account-nav-icon" aria-hidden="true">📦</span>
|
<span class="account-nav-icon" aria-hidden="true">📦</span>
|
||||||
<span class="account-nav-value">{angekommeneBestellungen}</span>
|
<span class="account-nav-value">{angekommeneBestellungen}</span>
|
||||||
<span class="account-nav-label">{t.accountDash.statOrders}</span>
|
<span class="account-nav-label">{t.accountDash.statOrders}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="account-nav-item account-nav-open" data-tab="offene">
|
<button type="button" class="account-nav-item account-nav-open" data-tab="offene">
|
||||||
|
<span class="account-nav-sparkle" aria-hidden="true">✨</span>
|
||||||
<span class="account-nav-icon" aria-hidden="true">🚚</span>
|
<span class="account-nav-icon" aria-hidden="true">🚚</span>
|
||||||
<span class="account-nav-value">{offeneSendungen}</span>
|
<span class="account-nav-value">{offeneSendungen}</span>
|
||||||
<span class="account-nav-label">{t.accountDash.statOpen}</span>
|
<span class="account-nav-label">{t.accountDash.statOpen}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="account-nav-item account-nav-wishlist" data-tab="wunschliste">
|
<button type="button" class="account-nav-item account-nav-wishlist" data-tab="wunschliste">
|
||||||
|
<span class="account-nav-sparkle" aria-hidden="true">✨</span>
|
||||||
<span class="account-nav-icon" aria-hidden="true">🩵</span>
|
<span class="account-nav-icon" aria-hidden="true">🩵</span>
|
||||||
<span class="account-nav-value">0</span>
|
<span class="account-nav-value">0</span>
|
||||||
<span class="account-nav-label">{t.accountDash.statWishlist}</span>
|
<span class="account-nav-label">{t.accountDash.statWishlist}</span>
|
||||||
@@ -239,6 +242,8 @@ const angekommeneBestellungen = beispielBestellungen.filter((b) => b.status ===
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>{t.accountDash.profileTitle}</h2>
|
<h2>{t.accountDash.profileTitle}</h2>
|
||||||
<div class="card profile-card">
|
<div class="card profile-card">
|
||||||
|
<span class="profile-card-sparkle profile-card-sparkle-1" aria-hidden="true">✨</span>
|
||||||
|
<span class="profile-card-sparkle profile-card-sparkle-2" aria-hidden="true">✨</span>
|
||||||
<div class="profile-photo-row">
|
<div class="profile-photo-row">
|
||||||
<span class="account-avatar-lg" id="profile-avatar" aria-hidden="true"></span>
|
<span class="account-avatar-lg" id="profile-avatar" aria-hidden="true"></span>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -87,16 +87,19 @@ const angekommeneBestellungen = beispielBestellungen.filter((b) => b.status ===
|
|||||||
Abschnitt weiter unten, Icon und Akzentfarbe passen zur jeweiligen Überschrift. */}
|
Abschnitt weiter unten, Icon und Akzentfarbe passen zur jeweiligen Überschrift. */}
|
||||||
<nav class="account-nav" aria-label={t.accountDash.navLabel}>
|
<nav class="account-nav" aria-label={t.accountDash.navLabel}>
|
||||||
<button type="button" class="account-nav-item account-nav-orders" data-tab="bestellungen">
|
<button type="button" class="account-nav-item account-nav-orders" data-tab="bestellungen">
|
||||||
|
<span class="account-nav-sparkle" aria-hidden="true">✨</span>
|
||||||
<span class="account-nav-icon" aria-hidden="true">📦</span>
|
<span class="account-nav-icon" aria-hidden="true">📦</span>
|
||||||
<span class="account-nav-value">{angekommeneBestellungen}</span>
|
<span class="account-nav-value">{angekommeneBestellungen}</span>
|
||||||
<span class="account-nav-label">{t.accountDash.statOrders}</span>
|
<span class="account-nav-label">{t.accountDash.statOrders}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="account-nav-item account-nav-open" data-tab="offene">
|
<button type="button" class="account-nav-item account-nav-open" data-tab="offene">
|
||||||
|
<span class="account-nav-sparkle" aria-hidden="true">✨</span>
|
||||||
<span class="account-nav-icon" aria-hidden="true">🚚</span>
|
<span class="account-nav-icon" aria-hidden="true">🚚</span>
|
||||||
<span class="account-nav-value">{offeneSendungen}</span>
|
<span class="account-nav-value">{offeneSendungen}</span>
|
||||||
<span class="account-nav-label">{t.accountDash.statOpen}</span>
|
<span class="account-nav-label">{t.accountDash.statOpen}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="account-nav-item account-nav-wishlist" data-tab="wunschliste">
|
<button type="button" class="account-nav-item account-nav-wishlist" data-tab="wunschliste">
|
||||||
|
<span class="account-nav-sparkle" aria-hidden="true">✨</span>
|
||||||
<span class="account-nav-icon" aria-hidden="true">🩵</span>
|
<span class="account-nav-icon" aria-hidden="true">🩵</span>
|
||||||
<span class="account-nav-value">0</span>
|
<span class="account-nav-value">0</span>
|
||||||
<span class="account-nav-label">{t.accountDash.statWishlist}</span>
|
<span class="account-nav-label">{t.accountDash.statWishlist}</span>
|
||||||
@@ -239,6 +242,8 @@ const angekommeneBestellungen = beispielBestellungen.filter((b) => b.status ===
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>{t.accountDash.profileTitle}</h2>
|
<h2>{t.accountDash.profileTitle}</h2>
|
||||||
<div class="card profile-card">
|
<div class="card profile-card">
|
||||||
|
<span class="profile-card-sparkle profile-card-sparkle-1" aria-hidden="true">✨</span>
|
||||||
|
<span class="profile-card-sparkle profile-card-sparkle-2" aria-hidden="true">✨</span>
|
||||||
<div class="profile-photo-row">
|
<div class="profile-photo-row">
|
||||||
<span class="account-avatar-lg" id="profile-avatar" aria-hidden="true"></span>
|
<span class="account-avatar-lg" id="profile-avatar" aria-hidden="true"></span>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
@@ -87,16 +87,19 @@ const angekommeneBestellungen = beispielBestellungen.filter((b) => b.status ===
|
|||||||
Abschnitt weiter unten, Icon und Akzentfarbe passen zur jeweiligen Überschrift. */}
|
Abschnitt weiter unten, Icon und Akzentfarbe passen zur jeweiligen Überschrift. */}
|
||||||
<nav class="account-nav" aria-label={t.accountDash.navLabel}>
|
<nav class="account-nav" aria-label={t.accountDash.navLabel}>
|
||||||
<button type="button" class="account-nav-item account-nav-orders" data-tab="bestellungen">
|
<button type="button" class="account-nav-item account-nav-orders" data-tab="bestellungen">
|
||||||
|
<span class="account-nav-sparkle" aria-hidden="true">✨</span>
|
||||||
<span class="account-nav-icon" aria-hidden="true">📦</span>
|
<span class="account-nav-icon" aria-hidden="true">📦</span>
|
||||||
<span class="account-nav-value">{angekommeneBestellungen}</span>
|
<span class="account-nav-value">{angekommeneBestellungen}</span>
|
||||||
<span class="account-nav-label">{t.accountDash.statOrders}</span>
|
<span class="account-nav-label">{t.accountDash.statOrders}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="account-nav-item account-nav-open" data-tab="offene">
|
<button type="button" class="account-nav-item account-nav-open" data-tab="offene">
|
||||||
|
<span class="account-nav-sparkle" aria-hidden="true">✨</span>
|
||||||
<span class="account-nav-icon" aria-hidden="true">🚚</span>
|
<span class="account-nav-icon" aria-hidden="true">🚚</span>
|
||||||
<span class="account-nav-value">{offeneSendungen}</span>
|
<span class="account-nav-value">{offeneSendungen}</span>
|
||||||
<span class="account-nav-label">{t.accountDash.statOpen}</span>
|
<span class="account-nav-label">{t.accountDash.statOpen}</span>
|
||||||
</button>
|
</button>
|
||||||
<button type="button" class="account-nav-item account-nav-wishlist" data-tab="wunschliste">
|
<button type="button" class="account-nav-item account-nav-wishlist" data-tab="wunschliste">
|
||||||
|
<span class="account-nav-sparkle" aria-hidden="true">✨</span>
|
||||||
<span class="account-nav-icon" aria-hidden="true">🩵</span>
|
<span class="account-nav-icon" aria-hidden="true">🩵</span>
|
||||||
<span class="account-nav-value">0</span>
|
<span class="account-nav-value">0</span>
|
||||||
<span class="account-nav-label">{t.accountDash.statWishlist}</span>
|
<span class="account-nav-label">{t.accountDash.statWishlist}</span>
|
||||||
@@ -239,6 +242,8 @@ const angekommeneBestellungen = beispielBestellungen.filter((b) => b.status ===
|
|||||||
<div class="container">
|
<div class="container">
|
||||||
<h2>{t.accountDash.profileTitle}</h2>
|
<h2>{t.accountDash.profileTitle}</h2>
|
||||||
<div class="card profile-card">
|
<div class="card profile-card">
|
||||||
|
<span class="profile-card-sparkle profile-card-sparkle-1" aria-hidden="true">✨</span>
|
||||||
|
<span class="profile-card-sparkle profile-card-sparkle-2" aria-hidden="true">✨</span>
|
||||||
<div class="profile-photo-row">
|
<div class="profile-photo-row">
|
||||||
<span class="account-avatar-lg" id="profile-avatar" aria-hidden="true"></span>
|
<span class="account-avatar-lg" id="profile-avatar" aria-hidden="true"></span>
|
||||||
<div>
|
<div>
|
||||||
|
|||||||
+98
-31
@@ -1344,6 +1344,7 @@ a:focus-visible, button:focus-visible {
|
|||||||
}
|
}
|
||||||
.account-head > * { position: relative; z-index: 1; }
|
.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 > #dash-logout-btn { margin-left: auto; }
|
||||||
.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 {
|
.account-head-sparkle {
|
||||||
@@ -1380,8 +1381,12 @@ a:focus-visible, button:focus-visible {
|
|||||||
flex-shrink: 0;
|
flex-shrink: 0;
|
||||||
}
|
}
|
||||||
.account-head-identity .account-avatar-lg {
|
.account-head-identity .account-avatar-lg {
|
||||||
|
width: 84px;
|
||||||
|
height: 84px;
|
||||||
|
font-size: 2.1rem;
|
||||||
animation: account-avatar-glow 3.6s ease-in-out infinite;
|
animation: account-avatar-glow 3.6s ease-in-out infinite;
|
||||||
}
|
}
|
||||||
|
@media (max-width: 500px) { .account-head-identity .account-avatar-lg { width: 68px; height: 68px; font-size: 1.7rem; } }
|
||||||
@keyframes account-avatar-glow {
|
@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); }
|
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); }
|
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); }
|
||||||
@@ -1407,6 +1412,10 @@ a:focus-visible, button:focus-visible {
|
|||||||
background: linear-gradient(155deg, var(--c-anthracite-light), var(--c-anthracite));
|
background: linear-gradient(155deg, var(--c-anthracite-light), var(--c-anthracite));
|
||||||
box-shadow: 0 12px 28px -18px rgba(0, 0, 0, 0.65);
|
box-shadow: 0 12px 28px -18px rgba(0, 0, 0, 0.65);
|
||||||
}
|
}
|
||||||
|
/* Alle vier Knöpfe haben jetzt dieselbe "besondere" Formsprache wie vorher nur "Meine Daten":
|
||||||
|
ein sanft wanderndes Mehrfarb-Verlaufslicht im eigenen Farbton, ein pulsierender Glanzrand
|
||||||
|
und ein funkelndes Sternchen — nur die Farbe unterscheidet sich pro Knopf (--nav-color).
|
||||||
|
Bewusst gedeckt genug, um nicht kitschig zu wirken, aber klar erkennbar "premium". */
|
||||||
.account-nav-item {
|
.account-nav-item {
|
||||||
flex: 1;
|
flex: 1;
|
||||||
display: flex;
|
display: flex;
|
||||||
@@ -1426,6 +1435,15 @@ a:focus-visible, button:focus-visible {
|
|||||||
background-color: transparent;
|
background-color: transparent;
|
||||||
font: inherit;
|
font: inherit;
|
||||||
cursor: pointer;
|
cursor: pointer;
|
||||||
|
background-image: linear-gradient(
|
||||||
|
120deg,
|
||||||
|
color-mix(in srgb, var(--nav-color, var(--c-accent)) 20%, transparent),
|
||||||
|
color-mix(in srgb, var(--nav-color, var(--c-accent)) 8%, transparent),
|
||||||
|
color-mix(in srgb, var(--nav-color, var(--c-accent)) 20%, transparent)
|
||||||
|
);
|
||||||
|
background-size: 300% 100%;
|
||||||
|
animation: account-nav-item-shift 7s ease-in-out infinite, account-nav-item-glow 3.2s ease-in-out infinite;
|
||||||
|
animation-delay: var(--nav-delay, 0s);
|
||||||
}
|
}
|
||||||
.account-nav-item + .account-nav-item { border-left: 1px solid rgba(244, 241, 247, 0.12); }
|
.account-nav-item + .account-nav-item { border-left: 1px solid rgba(244, 241, 247, 0.12); }
|
||||||
.account-nav-item::after {
|
.account-nav-item::after {
|
||||||
@@ -1439,62 +1457,48 @@ a:focus-visible, button:focus-visible {
|
|||||||
transform: scaleX(0);
|
transform: scaleX(0);
|
||||||
transition: transform 0.25s var(--ease);
|
transition: transform 0.25s var(--ease);
|
||||||
}
|
}
|
||||||
.account-nav-item:hover { background: color-mix(in srgb, var(--nav-color, var(--c-accent)) 14%, transparent); }
|
.account-nav-item:hover { background-color: color-mix(in srgb, var(--nav-color, var(--c-accent)) 14%, transparent); }
|
||||||
.account-nav-item:hover::after, .account-nav-item:focus-visible::after { transform: scaleX(1); }
|
.account-nav-item:hover::after, .account-nav-item:focus-visible::after { transform: scaleX(1); }
|
||||||
.account-nav-item.is-active { background: color-mix(in srgb, var(--nav-color, var(--c-accent)) 20%, transparent); }
|
.account-nav-item.is-active { background-color: color-mix(in srgb, var(--nav-color, var(--c-accent)) 20%, transparent); }
|
||||||
.account-nav-item.is-active::after { transform: scaleX(1); }
|
.account-nav-item.is-active::after { transform: scaleX(1); }
|
||||||
.account-nav-icon { font-size: 1.35rem; }
|
.account-nav-icon { font-size: 1.35rem; }
|
||||||
.account-nav-value { font-family: var(--font-head); font-size: 1.7rem; font-weight: 700; color: var(--nav-color, var(--c-accent)); line-height: 1; }
|
.account-nav-value { font-family: var(--font-head); font-size: 1.7rem; font-weight: 700; color: var(--nav-color, var(--c-accent)); line-height: 1; }
|
||||||
.account-nav-label { font-size: 0.82rem; color: var(--c-text-muted); text-align: center; }
|
.account-nav-label {
|
||||||
.account-nav-orders { --nav-color: #9b7fd6; }
|
font-size: 0.82rem;
|
||||||
.account-nav-wishlist { --nav-color: var(--c-sale); }
|
text-align: center;
|
||||||
.account-nav-open { --nav-color: var(--c-accent); }
|
|
||||||
/* "Meine Daten" ist bewusst der auffälligste der vier Knöpfe — der eigene Bereich zum Profil-
|
|
||||||
Pflegen darf ruhig etwas "Besonderes" ausstrahlen: ein sanft wanderndes Mehrfarb-Verlaufslicht
|
|
||||||
im Hintergrund, ein pulsierender Glanzrand und ein funkelndes Sternchen. Bewusst gedeckt genug,
|
|
||||||
um nicht kitschig zu wirken, aber klar erkennbar "premium" im Vergleich zu den anderen drei. */
|
|
||||||
.account-nav-data {
|
|
||||||
--nav-color: #e3b23c;
|
|
||||||
position: relative;
|
|
||||||
background: linear-gradient(
|
|
||||||
120deg,
|
|
||||||
color-mix(in srgb, #9b7fd6 22%, transparent),
|
|
||||||
color-mix(in srgb, #e3b23c 20%, transparent),
|
|
||||||
color-mix(in srgb, var(--c-sale) 20%, transparent),
|
|
||||||
color-mix(in srgb, #9b7fd6 22%, transparent)
|
|
||||||
);
|
|
||||||
background-size: 300% 100%;
|
|
||||||
animation: account-nav-data-shift 7s ease-in-out infinite, account-nav-data-glow 3.2s ease-in-out infinite;
|
|
||||||
}
|
|
||||||
.account-nav-data .account-nav-label {
|
|
||||||
font-weight: 700;
|
font-weight: 700;
|
||||||
background: linear-gradient(90deg, #c3b0ea, #e3b23c, var(--c-sale));
|
background-image: linear-gradient(90deg, var(--nav-color, var(--c-accent)), color-mix(in srgb, var(--nav-color, var(--c-accent)) 40%, #fff));
|
||||||
-webkit-background-clip: text;
|
-webkit-background-clip: text;
|
||||||
background-clip: text;
|
background-clip: text;
|
||||||
color: transparent;
|
color: transparent;
|
||||||
}
|
}
|
||||||
|
.account-nav-orders { --nav-color: #9b7fd6; --nav-delay: 0s; }
|
||||||
|
.account-nav-open { --nav-color: var(--c-accent); --nav-delay: 0.4s; }
|
||||||
|
.account-nav-wishlist { --nav-color: var(--c-sale); --nav-delay: 0.8s; }
|
||||||
|
.account-nav-data { --nav-color: #e3b23c; --nav-delay: 1.2s; }
|
||||||
.account-nav-sparkle {
|
.account-nav-sparkle {
|
||||||
position: absolute;
|
position: absolute;
|
||||||
top: 0.55rem;
|
top: 0.55rem;
|
||||||
right: 0.9rem;
|
right: 0.9rem;
|
||||||
font-size: 0.85rem;
|
font-size: 0.85rem;
|
||||||
animation: account-nav-sparkle-twinkle 2.4s ease-in-out infinite;
|
animation: account-nav-sparkle-twinkle 2.4s ease-in-out infinite;
|
||||||
|
animation-delay: var(--nav-delay, 0s);
|
||||||
pointer-events: none;
|
pointer-events: none;
|
||||||
}
|
}
|
||||||
@keyframes account-nav-data-shift {
|
@keyframes account-nav-item-shift {
|
||||||
0%, 100% { background-position: 0% 50%; }
|
0%, 100% { background-position: 0% 50%; }
|
||||||
50% { background-position: 100% 50%; }
|
50% { background-position: 100% 50%; }
|
||||||
}
|
}
|
||||||
@keyframes account-nav-data-glow {
|
@keyframes account-nav-item-glow {
|
||||||
0%, 100% { box-shadow: inset 0 0 0 1px color-mix(in srgb, #e3b23c 45%, transparent), 0 0 16px -6px color-mix(in srgb, #e3b23c 60%, transparent); }
|
0%, 100% { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--nav-color, var(--c-accent)) 40%, transparent), 0 0 14px -6px color-mix(in srgb, var(--nav-color, var(--c-accent)) 55%, transparent); }
|
||||||
50% { box-shadow: inset 0 0 0 1px color-mix(in srgb, #9b7fd6 55%, transparent), 0 0 20px -4px color-mix(in srgb, #9b7fd6 70%, transparent); }
|
50% { box-shadow: inset 0 0 0 1px color-mix(in srgb, var(--nav-color, var(--c-accent)) 65%, transparent), 0 0 20px -4px color-mix(in srgb, var(--nav-color, var(--c-accent)) 75%, transparent); }
|
||||||
}
|
}
|
||||||
@keyframes account-nav-sparkle-twinkle {
|
@keyframes account-nav-sparkle-twinkle {
|
||||||
0%, 100% { opacity: 0.35; transform: scale(0.8) rotate(-8deg); }
|
0%, 100% { opacity: 0.35; transform: scale(0.8) rotate(-8deg); }
|
||||||
50% { opacity: 1; transform: scale(1.2) rotate(8deg); }
|
50% { opacity: 1; transform: scale(1.2) rotate(8deg); }
|
||||||
}
|
}
|
||||||
@media (prefers-reduced-motion: reduce) {
|
@media (prefers-reduced-motion: reduce) {
|
||||||
.account-nav-data { animation: none; }
|
.account-nav-item { animation: none; }
|
||||||
.account-nav-sparkle { animation: none; }
|
.account-nav-sparkle { animation: none; }
|
||||||
}
|
}
|
||||||
@media (max-width: 560px) {
|
@media (max-width: 560px) {
|
||||||
@@ -1523,6 +1527,27 @@ a:focus-visible, button:focus-visible {
|
|||||||
border-radius: inherit;
|
border-radius: inherit;
|
||||||
}
|
}
|
||||||
.order-card > * { position: relative; z-index: 1; }
|
.order-card > * { position: relative; z-index: 1; }
|
||||||
|
.order-card {
|
||||||
|
overflow: hidden;
|
||||||
|
animation: order-card-glow 3.6s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
.order-card::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -60%;
|
||||||
|
width: 30%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(100deg, transparent, color-mix(in srgb, var(--status-color, #fff) 16%, transparent), transparent);
|
||||||
|
transform: skewX(-18deg);
|
||||||
|
animation: account-head-shine 8s ease-in-out infinite;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
@keyframes order-card-glow {
|
||||||
|
0%, 100% { box-shadow: -2px 0 10px -6px color-mix(in srgb, var(--status-color, transparent) 50%, transparent); }
|
||||||
|
50% { box-shadow: -2px 0 16px -4px color-mix(in srgb, var(--status-color, transparent) 70%, transparent); }
|
||||||
|
}
|
||||||
|
@media (prefers-reduced-motion: reduce) { .order-card, .order-card::after { animation: none; } }
|
||||||
|
|
||||||
.order-card-bezahlt { --status-color: #9b7fd6; }
|
.order-card-bezahlt { --status-color: #9b7fd6; }
|
||||||
.order-card-bearbeitung { --status-color: #e3b23c; }
|
.order-card-bearbeitung { --status-color: #e3b23c; }
|
||||||
@@ -1606,8 +1631,50 @@ a:focus-visible, button:focus-visible {
|
|||||||
.invoice-total-row td { font-weight: 700; color: var(--c-accent); border-bottom: none; padding-top: 0.8em; font-size: 1rem; }
|
.invoice-total-row td { font-weight: 700; color: var(--c-accent); border-bottom: none; padding-top: 0.8em; font-size: 1rem; }
|
||||||
.invoice-vat-note { margin: 1.1rem 0 0; font-size: 0.8rem; color: var(--c-text-muted); }
|
.invoice-vat-note { margin: 1.1rem 0 0; font-size: 0.8rem; color: var(--c-text-muted); }
|
||||||
.invoice-foot { display: flex; justify-content: flex-end; margin-top: 1.4rem; }
|
.invoice-foot { display: flex; justify-content: flex-end; margin-top: 1.4rem; }
|
||||||
.profile-card { display: flex; flex-direction: column; align-items: stretch; gap: 1.3rem; }
|
/* "Meine Daten" ist der persönlichste Bereich im Kundenkonto — bekommt deshalb dieselbe
|
||||||
|
"mega besondere" Behandlung wie die Begrüßungs-Karte ganz oben: wandernder Mehrfarb-
|
||||||
|
Verlaufsrand, sanfter Farbschein, ein durchlaufender Glanz-Sweep und funkelnde Sternchen. */
|
||||||
|
.profile-card {
|
||||||
|
position: relative;
|
||||||
|
overflow: hidden;
|
||||||
|
display: flex;
|
||||||
|
flex-direction: column;
|
||||||
|
align-items: stretch;
|
||||||
|
gap: 1.3rem;
|
||||||
|
border: 1.5px solid transparent;
|
||||||
|
background:
|
||||||
|
linear-gradient(165deg, var(--c-anthracite-light), var(--c-anthracite)) padding-box,
|
||||||
|
linear-gradient(120deg, #e3b23c, var(--c-sale), #9b7fd6, var(--c-accent), #e3b23c) border-box;
|
||||||
|
background-size: 100% 100%, 300% 100%;
|
||||||
|
animation: account-head-border-shift 10s ease-in-out infinite;
|
||||||
|
}
|
||||||
|
.profile-card::before {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
inset: 0;
|
||||||
|
background: radial-gradient(60% 90% at 90% 10%, color-mix(in srgb, #e3b23c 20%, transparent), transparent 70%);
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.profile-card::after {
|
||||||
|
content: "";
|
||||||
|
position: absolute;
|
||||||
|
top: 0;
|
||||||
|
left: -60%;
|
||||||
|
width: 35%;
|
||||||
|
height: 100%;
|
||||||
|
background: linear-gradient(100deg, transparent, rgba(255, 255, 255, 0.12), transparent);
|
||||||
|
transform: skewX(-18deg);
|
||||||
|
animation: account-head-shine 7s ease-in-out infinite 1s;
|
||||||
|
pointer-events: none;
|
||||||
|
}
|
||||||
|
.profile-card > * { position: relative; z-index: 1; }
|
||||||
.profile-card .specs { margin-top: 0; width: 100%; }
|
.profile-card .specs { margin-top: 0; width: 100%; }
|
||||||
|
.profile-card-sparkle { position: absolute; font-size: 0.85rem; pointer-events: none; z-index: 1; }
|
||||||
|
.profile-card-sparkle-1 { top: 1.1rem; right: 1.3rem; animation: account-nav-sparkle-twinkle 2.8s ease-in-out infinite; }
|
||||||
|
.profile-card-sparkle-2 { bottom: 1.2rem; left: 1.3rem; font-size: 0.7rem; animation: account-nav-sparkle-twinkle 3.6s ease-in-out infinite 0.7s; }
|
||||||
|
@media (prefers-reduced-motion: reduce) {
|
||||||
|
.profile-card, .profile-card::after, .profile-card-sparkle-1, .profile-card-sparkle-2 { animation: none; }
|
||||||
|
}
|
||||||
.profile-photo-row { display: flex; align-items: center; gap: 1.1rem; }
|
.profile-photo-row { display: flex; align-items: center; gap: 1.1rem; }
|
||||||
.profile-photo-btn { display: inline-block; cursor: pointer; }
|
.profile-photo-btn { display: inline-block; cursor: pointer; }
|
||||||
.profile-field { display: flex; flex-direction: column; gap: 0.4rem; }
|
.profile-field { display: flex; flex-direction: column; gap: 0.4rem; }
|
||||||
|
|||||||
Reference in New Issue
Block a user