Zahlungskarten im Checkout kräftiger/edler gestaltet

Jede Zahlungsart-Karte hat jetzt einen deutlich sichtbaren Farbschein in
der jeweiligen Markenfarbe (auch im Ruhezustand, nicht erst bei Hover),
einen feinen Farbstreifen am oberen Rand und einen dezenten Glanz-Sweep
beim Hover — wirkt hochwertiger/"geiler", bleibt aber gedeckt genug fürs
dunkle Gesamtdesign. Kreditkarte (Visa/Mastercard) bekommt einen eigenen
Gold-Akzent statt der bisherigen, kaum sichtbaren Farbe.

Co-Authored-By: Claude Sonnet 5 <[email protected]>
This commit is contained in:
qcigano
2026-08-03 12:48:20 +02:00
co-authored by Claude Sonnet 5
parent c9a9370039
commit 7549ec239b
5 changed files with 56 additions and 18 deletions
+1 -1
View File
@@ -54,7 +54,7 @@ const t = useTranslations(lang);
<p class="pay-connect-status" id="klarna-status"></p> <p class="pay-connect-status" id="klarna-status"></p>
</div> </div>
</div> </div>
<div class="pay-card" style="--brand-color:#7fa8c9; --brand-bg:#241f3d;"> <div class="pay-card" style="--brand-color:#e3b23c; --brand-bg:#241f3d;">
<label class="pay-option"> <label class="pay-option">
<span class="pay-icon-cards" aria-hidden="true"> <span class="pay-icon-cards" aria-hidden="true">
<span class="mini-card mini-card-visa"> <span class="mini-card mini-card-visa">
+1 -1
View File
@@ -54,7 +54,7 @@ const t = useTranslations(lang);
<p class="pay-connect-status" id="klarna-status"></p> <p class="pay-connect-status" id="klarna-status"></p>
</div> </div>
</div> </div>
<div class="pay-card" style="--brand-color:#7fa8c9; --brand-bg:#241f3d;"> <div class="pay-card" style="--brand-color:#e3b23c; --brand-bg:#241f3d;">
<label class="pay-option"> <label class="pay-option">
<span class="pay-icon-cards" aria-hidden="true"> <span class="pay-icon-cards" aria-hidden="true">
<span class="mini-card mini-card-visa"> <span class="mini-card mini-card-visa">
+1 -1
View File
@@ -54,7 +54,7 @@ const t = useTranslations(lang);
<p class="pay-connect-status" id="klarna-status"></p> <p class="pay-connect-status" id="klarna-status"></p>
</div> </div>
</div> </div>
<div class="pay-card" style="--brand-color:#7fa8c9; --brand-bg:#241f3d;"> <div class="pay-card" style="--brand-color:#e3b23c; --brand-bg:#241f3d;">
<label class="pay-option"> <label class="pay-option">
<span class="pay-icon-cards" aria-hidden="true"> <span class="pay-icon-cards" aria-hidden="true">
<span class="mini-card mini-card-visa"> <span class="mini-card mini-card-visa">
+1 -1
View File
@@ -54,7 +54,7 @@ const t = useTranslations(lang);
<p class="pay-connect-status" id="klarna-status"></p> <p class="pay-connect-status" id="klarna-status"></p>
</div> </div>
</div> </div>
<div class="pay-card" style="--brand-color:#7fa8c9; --brand-bg:#241f3d;"> <div class="pay-card" style="--brand-color:#e3b23c; --brand-bg:#241f3d;">
<label class="pay-option"> <label class="pay-option">
<span class="pay-icon-cards" aria-hidden="true"> <span class="pay-icon-cards" aria-hidden="true">
<span class="mini-card mini-card-visa"> <span class="mini-card mini-card-visa">
+52 -14
View File
@@ -1749,27 +1749,63 @@ a:focus-visible, button:focus-visible {
beim Anklicken den passenden "Verbinden"-Bereich direkt in sich selbst auf (reines CSS über beim Anklicken den passenden "Verbinden"-Bereich direkt in sich selbst auf (reines CSS über
:has(), kein Zwischenschritt, kein separates Panel weiter unten). */ :has(), kein Zwischenschritt, kein separates Panel weiter unten). */
.payment-options { display: grid; gap: 0.85rem; } .payment-options { display: grid; gap: 0.85rem; }
/* Kräftigere Markenfarbigkeit pro Karte, auch im Ruhezustand (nicht erst bei Hover/Auswahl):
ein sanfter Farbschein aus der Ecke ("Glow"), ein feiner Farbstreifen oben und ein dezenter
Glanz-Sweep beim Hover — bewusst schon deutlich sichtbar, aber gedeckt genug fürs dunkle
Gesamtbild, kein grelles Regenbogen-Grid. */
.pay-card { .pay-card {
border: 1.5px solid rgba(244, 241, 247, 0.12); position: relative;
isolation: isolate;
border: 1.5px solid color-mix(in srgb, var(--brand-color, var(--c-accent)) 38%, rgba(244, 241, 247, 0.14));
border-radius: var(--radius-l); border-radius: var(--radius-l);
background: linear-gradient(155deg, var(--c-anthracite), color-mix(in srgb, var(--c-anthracite) 85%, #000)); background:
transition: border-color 0.2s var(--ease), background 0.2s var(--ease), box-shadow 0.2s var(--ease), transform 0.2s var(--ease); radial-gradient(130% 160% at 0% 0%, color-mix(in srgb, var(--brand-color, var(--c-accent)) 26%, transparent), transparent 62%),
linear-gradient(155deg, var(--c-anthracite), color-mix(in srgb, var(--c-anthracite) 85%, #000));
box-shadow: 0 8px 20px -14px color-mix(in srgb, var(--brand-color, var(--c-accent)) 60%, transparent);
transition: border-color 0.2s var(--ease), background 0.25s var(--ease), box-shadow 0.25s var(--ease), transform 0.2s var(--ease);
overflow: hidden; overflow: hidden;
} }
.pay-card::before {
content: "";
position: absolute;
inset: 0 0 auto 0;
height: 3px;
background: linear-gradient(90deg, transparent, var(--brand-color, var(--c-accent)), transparent);
opacity: 0.65;
z-index: 1;
}
.pay-card::after {
content: "";
position: absolute;
top: 0;
left: -60%;
width: 40%;
height: 100%;
background: linear-gradient(100deg, transparent, rgba(255, 255, 255, 0.16), transparent);
transform: skewX(-18deg);
transition: left 0.65s ease;
pointer-events: none;
z-index: 1;
}
.pay-card:hover::after { left: 130%; }
.pay-card:hover { .pay-card:hover {
border-color: color-mix(in srgb, var(--brand-color, var(--c-accent)) 55%, transparent); border-color: color-mix(in srgb, var(--brand-color, var(--c-accent)) 70%, transparent);
transform: translateY(-2px); transform: translateY(-3px);
box-shadow: 0 10px 22px -12px color-mix(in srgb, var(--brand-color, var(--c-accent)) 55%, transparent); box-shadow: 0 16px 30px -14px color-mix(in srgb, var(--brand-color, var(--c-accent)) 70%, transparent);
} }
.pay-card:has(input:checked) { .pay-card:has(input:checked) {
border-color: var(--brand-color, var(--c-accent)); border-color: var(--brand-color, var(--c-accent));
background: linear-gradient(155deg, color-mix(in srgb, var(--brand-color, var(--c-accent)) 16%, var(--c-anthracite)), color-mix(in srgb, var(--c-anthracite) 85%, #000)); background:
box-shadow: 0 0 0 1px color-mix(in srgb, var(--brand-color, var(--c-accent)) 55%, transparent), 0 8px 20px -8px color-mix(in srgb, var(--brand-color, var(--c-accent)) 65%, transparent); radial-gradient(130% 160% at 0% 0%, color-mix(in srgb, var(--brand-color, var(--c-accent)) 38%, transparent), transparent 62%),
linear-gradient(155deg, color-mix(in srgb, var(--brand-color, var(--c-accent)) 20%, var(--c-anthracite)), color-mix(in srgb, var(--c-anthracite) 85%, #000));
box-shadow: 0 0 0 1.5px var(--brand-color, var(--c-accent)), 0 18px 34px -12px color-mix(in srgb, var(--brand-color, var(--c-accent)) 78%, transparent);
} }
.pay-card:has(input:checked)::before { opacity: 1; }
.pay-card:has(input:checked) .pay-option span:not(.pay-icon) { color: var(--brand-color, var(--c-accent)); } .pay-card:has(input:checked) .pay-option span:not(.pay-icon) { color: var(--brand-color, var(--c-accent)); }
.pay-option { .pay-option {
position: relative; position: relative;
z-index: 2;
display: flex; display: flex;
align-items: center; align-items: center;
gap: 1.1em; gap: 1.1em;
@@ -1794,8 +1830,10 @@ a:focus-visible, button:focus-visible {
letter-spacing: -0.03em; letter-spacing: -0.03em;
line-height: 1; line-height: 1;
flex-shrink: 0; flex-shrink: 0;
box-shadow: 0 4px 12px -3px rgba(0, 0, 0, 0.55), inset 0 1px 0 rgba(255, 255, 255, 0.18); position: relative;
background-image: linear-gradient(160deg, rgba(255, 255, 255, 0.16), rgba(255, 255, 255, 0) 55%); z-index: 2;
box-shadow: 0 6px 18px -4px color-mix(in srgb, var(--brand-color, var(--c-accent)) 65%, rgba(0, 0, 0, 0.6)), inset 0 1px 0 rgba(255, 255, 255, 0.22);
background-image: linear-gradient(160deg, rgba(255, 255, 255, 0.18), rgba(255, 255, 255, 0) 55%);
background-blend-mode: overlay; background-blend-mode: overlay;
} }
.pay-option .pay-icon.pay-icon-emoji { font-size: 1.7rem; font-style: normal; } .pay-option .pay-icon.pay-icon-emoji { font-size: 1.7rem; font-style: normal; }
@@ -1807,7 +1845,7 @@ a:focus-visible, button:focus-visible {
nebeneinander, in unveränderten Originalfarben (Visa-Blau bzw. Mastercard Rot/Orange) — nebeneinander, in unveränderten Originalfarben (Visa-Blau bzw. Mastercard Rot/Orange) —
genau die Kombination, die auf einer Kreditkarten-Zahlungsoption üblich und von beiden genau die Kombination, die auf einer Kreditkarten-Zahlungsoption üblich und von beiden
Marken als "Acceptance Mark" vorgesehen ist. */ Marken als "Acceptance Mark" vorgesehen ist. */
.pay-icon-cards { display: flex; align-items: center; gap: 0.5em; flex-shrink: 0; height: 52px; } .pay-icon-cards { display: flex; align-items: center; gap: 0.5em; flex-shrink: 0; height: 52px; position: relative; z-index: 2; }
.mini-card { .mini-card {
width: 46px; width: 46px;
height: 32px; height: 32px;
@@ -1815,10 +1853,10 @@ a:focus-visible, button:focus-visible {
display: flex; display: flex;
align-items: center; align-items: center;
justify-content: center; justify-content: center;
box-shadow: 0 4px 12px -3px rgba(0, 0, 0, 0.5), inset 0 1px 0 rgba(255, 255, 255, 0.35); box-shadow: 0 4px 14px -3px var(--mini-glow, rgba(0, 0, 0, 0.5)), inset 0 1px 0 rgba(255, 255, 255, 0.35);
} }
.mini-card-visa { background: #fff; } .mini-card-visa { background: #fff; --mini-glow: rgba(20, 52, 203, 0.55); }
.mini-card-mastercard { background: #16161f; } .mini-card-mastercard { background: #16161f; --mini-glow: rgba(235, 0, 27, 0.45); }
/* Marken-Icon-Badges (PayPal, Klarna): echtes Markenlogo (SVG) mittig auf einer Kachel in der /* Marken-Icon-Badges (PayPal, Klarna): echtes Markenlogo (SVG) mittig auf einer Kachel in der
jeweiligen offiziellen Markenfarbe statt einem groben Buchstaben-Platzhalter. */ jeweiligen offiziellen Markenfarbe statt einem groben Buchstaben-Platzhalter. */