@bytebrand/fe-ui-core-autobahn 1.0.59 → 1.0.61
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/cards/CarCard.tsx +55 -19
- package/cards/CarRow.tsx +66 -16
- package/cards/cardParts.tsx +303 -31
- package/cards/index.ts +4 -0
- package/cards/types.ts +7 -0
- package/constants.ts +31 -31
- package/data/toAutobahnCar.ts +13 -3
- package/locales/de/autobahn.json +34 -20
- package/locales/en/autobahn.json +33 -19
- package/package.json +1 -1
- package/theme/md3.css +557 -51
- package/utils/financeFormat.ts +62 -62
- package/utils/priceRating.ts +58 -58
- package/vdp/FinanceCalculator.tsx +127 -96
- package/vdp/VdpModules.tsx +219 -44
package/theme/md3.css
CHANGED
|
@@ -3869,11 +3869,10 @@ line-height: 31px;
|
|
|
3869
3869
|
min-height: 230px;
|
|
3870
3870
|
}
|
|
3871
3871
|
|
|
3872
|
-
/* grid card media — fixed 4:3
|
|
3872
|
+
/* grid card media — fixed 4:3 */
|
|
3873
3873
|
.md3 .cc-media {
|
|
3874
3874
|
aspect-ratio: 4 / 3;
|
|
3875
3875
|
width: 100%;
|
|
3876
|
-
border-bottom: 1px solid var(--md-outline-variant);
|
|
3877
3876
|
}
|
|
3878
3877
|
.md3 .cc-media .cardcar {
|
|
3879
3878
|
height: 100%;
|
|
@@ -3933,6 +3932,52 @@ line-height: 31px;
|
|
|
3933
3932
|
font-weight: 600;
|
|
3934
3933
|
white-space: nowrap;
|
|
3935
3934
|
}
|
|
3935
|
+
/* Car Card gallery overlay pills (Figma "Vehicle Gallery / Photos Button" node 281:1016 and
|
|
3936
|
+
"Push Chips / Likes" node 297:1037) — light glass pill, distinct from the dark `.imglabel`
|
|
3937
|
+
used elsewhere (VDP main gallery) and from the older `.gallery-pill` iteration above. */
|
|
3938
|
+
.md3 .cc-photo-pill {
|
|
3939
|
+
display: inline-flex;
|
|
3940
|
+
align-items: center;
|
|
3941
|
+
gap: 3px;
|
|
3942
|
+
height: 30px;
|
|
3943
|
+
padding: 0 12px;
|
|
3944
|
+
border-radius: 16px;
|
|
3945
|
+
background: rgba(245, 247, 250, 0.5);
|
|
3946
|
+
border: 1px solid #E5EAF0;
|
|
3947
|
+
backdrop-filter: blur(2px);
|
|
3948
|
+
color: #111820;
|
|
3949
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
3950
|
+
font-weight: 700;
|
|
3951
|
+
font-size: 12px;
|
|
3952
|
+
white-space: nowrap;
|
|
3953
|
+
cursor: pointer;
|
|
3954
|
+
transition: background var(--dur-1) var(--ease-standard), border-color var(--dur-1) var(--ease-standard);
|
|
3955
|
+
}
|
|
3956
|
+
.md3 .cc-photo-pill:hover {
|
|
3957
|
+
background: rgba(245, 247, 250, 0.85);
|
|
3958
|
+
border-color: #d4dde7;
|
|
3959
|
+
}
|
|
3960
|
+
.md3 .cc-activity-pill {
|
|
3961
|
+
display: inline-flex;
|
|
3962
|
+
align-items: center;
|
|
3963
|
+
gap: 13px;
|
|
3964
|
+
height: 30px;
|
|
3965
|
+
padding: 0 12px;
|
|
3966
|
+
border-radius: 16px;
|
|
3967
|
+
background: rgba(245, 247, 250, 0.5);
|
|
3968
|
+
border: 1px solid #E5EAF0;
|
|
3969
|
+
backdrop-filter: blur(2px);
|
|
3970
|
+
white-space: nowrap;
|
|
3971
|
+
}
|
|
3972
|
+
.md3 .cc-activity-pill-item {
|
|
3973
|
+
display: inline-flex;
|
|
3974
|
+
align-items: center;
|
|
3975
|
+
gap: 2px;
|
|
3976
|
+
color: #1D2A38;
|
|
3977
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
3978
|
+
font-weight: 700;
|
|
3979
|
+
font-size: 12px;
|
|
3980
|
+
}
|
|
3936
3981
|
.md3 .listcard-info {
|
|
3937
3982
|
padding: 16px 18px;
|
|
3938
3983
|
display: flex;
|
|
@@ -3962,6 +4007,23 @@ line-height: 31px;
|
|
|
3962
4007
|
background: var(--md-sc-low);
|
|
3963
4008
|
border-radius: var(--md-r-md);
|
|
3964
4009
|
}
|
|
4010
|
+
/* desktop only (mobile keeps the flex-wrap flow above, untouched): a clean 2-column grid so
|
|
4011
|
+
pairs line up (km|EZ, Kraftstoff|Getriebe, Leistung|Halter) instead of reflowing by text
|
|
4012
|
+
length (Figma "mcard"). Facts render in DOM order [km, EZ, Getriebe, Kraftstoff, Leistung,
|
|
4013
|
+
Halter, Verfügbarkeit]; only Getriebe/Kraftstoff swap columns via `order` to land as
|
|
4014
|
+
Kraftstoff|Getriebe per the mockup — the array itself stays untouched (mobile relies on it). */
|
|
4015
|
+
@media (min-width: 601px) {
|
|
4016
|
+
.md3 .specstrip {
|
|
4017
|
+
display: grid;
|
|
4018
|
+
grid-template-columns: 1fr 1fr;
|
|
4019
|
+
}
|
|
4020
|
+
/* km/EZ/Kraftstoff pulled negative (in that order) so they sort ahead of the untouched,
|
|
4021
|
+
default-order Getriebe/Leistung/Halter/Verfügbarkeit — net effect: km, EZ, Kraftstoff,
|
|
4022
|
+
Getriebe, Leistung, Halter, Verfügbarkeit, i.e. only Kraftstoff hops in front of Getriebe. */
|
|
4023
|
+
.md3 .specstrip > span:nth-child(1) { order: -3; }
|
|
4024
|
+
.md3 .specstrip > span:nth-child(2) { order: -2; }
|
|
4025
|
+
.md3 .specstrip > span:nth-child(4) { order: -1; }
|
|
4026
|
+
}
|
|
3965
4027
|
/* filter rail: collapsible sections */
|
|
3966
4028
|
.md3 .frail-group {
|
|
3967
4029
|
border-bottom: 1px solid var(--md-outline-variant);
|
|
@@ -4197,8 +4259,25 @@ line-height: 31px;
|
|
|
4197
4259
|
/* struck-through reference rate/price shown next to the tabbed hero price (Figma card) —
|
|
4198
4260
|
same red strike as .pp-old, sized for the hero context rather than the compact list row. */
|
|
4199
4261
|
.md3 .pp-hero-old { font-size: 15px; color: var(--md-error); text-decoration: line-through; white-space: nowrap; }
|
|
4200
|
-
.md3 .pp-hero-val sup, .md3 .pp-hero-old sup, .md3 .pp-hero-unit sup { font-size: .6em; }
|
|
4201
4262
|
.md3 .pp-hero-terms { margin-top: 9px; font-size: 11.5px; color: var(--md-on-surface-variant); }
|
|
4263
|
+
/* "Details" link at the end of the financing/leasing terms lines (Figma "mcard") — quiet, same
|
|
4264
|
+
color as the rest of the terms line but underlined so it still reads as tappable. */
|
|
4265
|
+
.md3 .pp-details-link { color: var(--md-primary); text-decoration: underline; font-weight: 600; white-space: nowrap; }
|
|
4266
|
+
/* z.B./old-rate/unit column beside the CarCard hero figure — mirrors .fin-rate-unit
|
|
4267
|
+
(FinanceCalculator.tsx/md3.css) exactly; only used inside .cc-price's PriceHero. */
|
|
4268
|
+
.md3 .pp-hero-unit-group {
|
|
4269
|
+
display: flex;
|
|
4270
|
+
flex-direction: column;
|
|
4271
|
+
line-height: 1.25;
|
|
4272
|
+
font-size: 14px;
|
|
4273
|
+
font-weight: 600;
|
|
4274
|
+
color: var(--md-on-surface-variant);
|
|
4275
|
+
flex: none;
|
|
4276
|
+
}
|
|
4277
|
+
.md3 .cc-price .pp-hero-rate {
|
|
4278
|
+
align-items: center;
|
|
4279
|
+
flex-wrap: nowrap;
|
|
4280
|
+
}
|
|
4202
4281
|
/* separator line between the financing block and the leasing row (legacy-design parity) */
|
|
4203
4282
|
.md3 .pp-lease-row {
|
|
4204
4283
|
margin-top: 16px;
|
|
@@ -4340,14 +4419,362 @@ line-height: 31px;
|
|
|
4340
4419
|
/* grid Car Card price block (Figma "Component | Car Card | Desktop") — the hero price/tabs are
|
|
4341
4420
|
much larger here than the shared .pp-hero-* sizing used to give them (those classes are only
|
|
4342
4421
|
consumed inside .cc-price now, so bumping them here is safe). */
|
|
4422
|
+
.md3 .cc-card .md-title {
|
|
4423
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4424
|
+
font-style: normal;
|
|
4425
|
+
font-weight: 700;
|
|
4426
|
+
font-size: 24px;
|
|
4427
|
+
line-height: 27px;
|
|
4428
|
+
color: #0e2238;
|
|
4429
|
+
margin-bottom: 6px;
|
|
4430
|
+
}
|
|
4431
|
+
.md3 .cc-card .md-body-sm {
|
|
4432
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4433
|
+
font-style: normal;
|
|
4434
|
+
font-weight: 400;
|
|
4435
|
+
font-size: 13px;
|
|
4436
|
+
line-height: 17px;
|
|
4437
|
+
color: #0e2238;
|
|
4438
|
+
margin-bottom: 6px;
|
|
4439
|
+
}
|
|
4440
|
+
/* SpecLine is only ever used by CarCard (not CarRow) — safe to reach into its inline
|
|
4441
|
+
font-size/color with !important rather than plumbing a style-override prop through it. */
|
|
4442
|
+
.md3 .cc-card .cc-spec {
|
|
4443
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4444
|
+
font-weight: 400;
|
|
4445
|
+
font-size: 11px !important;
|
|
4446
|
+
line-height: 15px;
|
|
4447
|
+
color: #1d2a38 !important;
|
|
4448
|
+
margin-bottom: 10px;
|
|
4449
|
+
}
|
|
4450
|
+
/* deal chips (Ersparnis / -X% / 0€ Anzahlung) — Figma: 30px tall pill (15px radius = half the
|
|
4451
|
+
height), 14px bold, a tint of the icon/text color (~20% bg, ~5% border). Was previously gated
|
|
4452
|
+
to min-width:1025px (mobile fell back to the plain-JSX solid-fill/white-pill treatment);
|
|
4453
|
+
applied at every width now so mobile CarCard matches too. */
|
|
4454
|
+
.md3 .cc-card .cc-badges {
|
|
4455
|
+
gap: 8px !important;
|
|
4456
|
+
}
|
|
4457
|
+
.md3 .cc-card .deal-chip {
|
|
4458
|
+
height: 30px !important;
|
|
4459
|
+
padding: 0 10px !important;
|
|
4460
|
+
border-radius: 15px !important;
|
|
4461
|
+
font-size: 14px !important;
|
|
4462
|
+
font-weight: 700 !important;
|
|
4463
|
+
box-shadow: none !important;
|
|
4464
|
+
border: 1px solid transparent;
|
|
4465
|
+
}
|
|
4466
|
+
.md3 .cc-card .deal-chip--drop {
|
|
4467
|
+
background: rgba(17, 110, 57, 0.2) !important;
|
|
4468
|
+
border-color: rgba(17, 110, 57, 0.05);
|
|
4469
|
+
color: #116e39 !important;
|
|
4470
|
+
}
|
|
4471
|
+
.md3 .cc-card .deal-chip--percent {
|
|
4472
|
+
background: rgba(217, 45, 32, 0.2) !important;
|
|
4473
|
+
border-color: rgba(217, 45, 32, 0.05);
|
|
4474
|
+
color: #d92d20 !important;
|
|
4475
|
+
}
|
|
4476
|
+
.md3 .cc-card .deal-chip--zerodown {
|
|
4477
|
+
background: rgba(0, 92, 255, 0.2) !important;
|
|
4478
|
+
border-color: rgba(0, 92, 255, 0.05);
|
|
4479
|
+
color: #005cff !important;
|
|
4480
|
+
}
|
|
4481
|
+
/* NEU badge — Figma: amber tint pill, not the mobile solid-primary-blue pill */
|
|
4482
|
+
.md3 .cc-card .neu-badge {
|
|
4483
|
+
height: 30px;
|
|
4484
|
+
padding: 0 10px;
|
|
4485
|
+
background: rgba(255, 184, 0, 0.2);
|
|
4486
|
+
border: 1px solid rgba(255, 184, 0, 0.05);
|
|
4487
|
+
color: #ffb800;
|
|
4488
|
+
font-size: 13px;
|
|
4489
|
+
}
|
|
4490
|
+
/* "⚡ Angebot" badge — Figma: black-tinted ROUNDED RECT (10px radius, not a full pill), black
|
|
4491
|
+
text — bigger than and visually distinct from the mobile dark-solid pill. */
|
|
4492
|
+
.md3 .cc-card .offer-badge {
|
|
4493
|
+
height: 30px;
|
|
4494
|
+
padding: 0 10px;
|
|
4495
|
+
border-radius: 10px;
|
|
4496
|
+
background: rgba(0, 0, 0, 0.2);
|
|
4497
|
+
border: 1px solid rgba(0, 0, 0, 0.05);
|
|
4498
|
+
color: #000;
|
|
4499
|
+
font-size: 14px;
|
|
4500
|
+
}
|
|
4501
|
+
.md3 .cc-card .offer-badge .lucide {
|
|
4502
|
+
width: 15px;
|
|
4503
|
+
height: 15px;
|
|
4504
|
+
color: #000;
|
|
4505
|
+
}
|
|
4343
4506
|
.md3 .cc-price .fin-tabs { margin-bottom: 12px; }
|
|
4344
|
-
.md3 .cc-price .fin-tab { font-size: 17px; font-weight: 700; padding:
|
|
4345
|
-
|
|
4346
|
-
|
|
4347
|
-
|
|
4348
|
-
|
|
4349
|
-
.md3 .cc-price .pp-
|
|
4350
|
-
.md3 .
|
|
4507
|
+
.md3 .cc-price .fin-tab { font-size: 17px; font-weight: 700; padding: 10px 5px; }
|
|
4508
|
+
/* Finanzierung tab price row (Figma "similar cars" card) — matches the VDP finance-calculator's
|
|
4509
|
+
MOBILE .fin-price-grid treatment one-to-one (same rate/old-price/pill typography and colors),
|
|
4510
|
+
by explicit spec. Previously gated to min-width:601px (left the pre-existing mobile .cc-card
|
|
4511
|
+
price row alone); now applied at every width on request, so mobile CarCard matches too. */
|
|
4512
|
+
.md3 .cc-price .pp-eyebrow,
|
|
4513
|
+
.md3 .fin-calc-card .pp-eyebrow {
|
|
4514
|
+
position: relative;
|
|
4515
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4516
|
+
font-style: normal;
|
|
4517
|
+
font-weight: 400;
|
|
4518
|
+
font-size: 8px;
|
|
4519
|
+
line-height: 9px;
|
|
4520
|
+
letter-spacing: normal;
|
|
4521
|
+
text-transform: none;
|
|
4522
|
+
color: #0e2238;
|
|
4523
|
+
margin-bottom: 2px;
|
|
4524
|
+
}
|
|
4525
|
+
/* footnote badge (small bordered circle, not a plain <sup>) pinned to the eyebrow's top-right
|
|
4526
|
+
corner — absolute against .pp-eyebrow's own position:relative above. Shared by the CarCard
|
|
4527
|
+
hero (.cc-price) and the VDP FinanceCalculator's own rate example (.fin-calc-card). */
|
|
4528
|
+
.md3 .cc-price .pp-eyebrow-badge,
|
|
4529
|
+
.md3 .fin-calc-card .pp-eyebrow-badge {
|
|
4530
|
+
display: inline-flex;
|
|
4531
|
+
align-items: center;
|
|
4532
|
+
justify-content: center;
|
|
4533
|
+
position: absolute;
|
|
4534
|
+
top: -5px;
|
|
4535
|
+
right: -8px;
|
|
4536
|
+
border-radius: 50%;
|
|
4537
|
+
width: 12px;
|
|
4538
|
+
height: 11px;
|
|
4539
|
+
background: rgba(255, 255, 255, 0.96);
|
|
4540
|
+
border: 0.5px solid #005cff;
|
|
4541
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4542
|
+
font-style: normal;
|
|
4543
|
+
font-weight: 400;
|
|
4544
|
+
font-size: 8px;
|
|
4545
|
+
line-height: 9px;
|
|
4546
|
+
text-align: center;
|
|
4547
|
+
color: #0e2238;
|
|
4548
|
+
cursor: pointer;
|
|
4549
|
+
}
|
|
4550
|
+
/* mobile-only nudge: same badge, tucked slightly closer to the eyebrow text on narrow cards. */
|
|
4551
|
+
@media (max-width: 1024px) {
|
|
4552
|
+
.md3 .cc-price .pp-eyebrow-badge {
|
|
4553
|
+
top: -5px;
|
|
4554
|
+
right: -5px;
|
|
4555
|
+
}
|
|
4556
|
+
}
|
|
4557
|
+
/* "2" badge (Kaufen, nested in .pp-hero-old instead of .pp-eyebrow) sits closer to the price
|
|
4558
|
+
figure than the "3" badge's own offsets above. */
|
|
4559
|
+
.md3 .cc-price .pp-hero-old .pp-eyebrow-badge,
|
|
4560
|
+
.md3 .fin-calc-card .pp-hero-old .pp-eyebrow-badge {
|
|
4561
|
+
top: -7px;
|
|
4562
|
+
right: -12px;
|
|
4563
|
+
}
|
|
4564
|
+
/* "3" footnote popover — click the badge above to open, the × or an outside click to close. */
|
|
4565
|
+
.md3 .cc-price .pp-uvp-tooltip,
|
|
4566
|
+
.md3 .fin-calc-card .pp-uvp-tooltip {
|
|
4567
|
+
position: absolute;
|
|
4568
|
+
top: 6px;
|
|
4569
|
+
right: -84px;
|
|
4570
|
+
z-index: 20;
|
|
4571
|
+
width: 281px;
|
|
4572
|
+
padding: 10px 12px;
|
|
4573
|
+
border-radius: 15px;
|
|
4574
|
+
background: #c5c6d2;
|
|
4575
|
+
box-shadow: var(--md-e2, 0 4px 12px rgba(0, 0, 0, 0.15));
|
|
4576
|
+
white-space: normal;
|
|
4577
|
+
cursor: default;
|
|
4578
|
+
}
|
|
4579
|
+
/* floating circular close button — overlaps the tooltip's top-right corner from outside,
|
|
4580
|
+
same "glass circle" convention as VdpViewer's close/back/next overlay buttons. */
|
|
4581
|
+
.md3 .cc-price .pp-uvp-tooltip-close,
|
|
4582
|
+
.md3 .fin-calc-card .pp-uvp-tooltip-close {
|
|
4583
|
+
position: absolute;
|
|
4584
|
+
top: -38px;
|
|
4585
|
+
right: -35px;
|
|
4586
|
+
display: flex;
|
|
4587
|
+
align-items: center;
|
|
4588
|
+
justify-content: center;
|
|
4589
|
+
width: 48px;
|
|
4590
|
+
height: 48px;
|
|
4591
|
+
border-radius: 50%;
|
|
4592
|
+
background: rgba(11, 19, 32, 0.35);
|
|
4593
|
+
border: 1.5px solid rgba(255, 255, 255, 0.25);
|
|
4594
|
+
padding: 0;
|
|
4595
|
+
cursor: pointer;
|
|
4596
|
+
}
|
|
4597
|
+
.md3 .cc-price .pp-uvp-tooltip-body,
|
|
4598
|
+
.md3 .fin-calc-card .pp-uvp-tooltip-body {
|
|
4599
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4600
|
+
font-weight: 400;
|
|
4601
|
+
font-size: 11px;
|
|
4602
|
+
line-height: 13px;
|
|
4603
|
+
color: #0e2238;
|
|
4604
|
+
}
|
|
4605
|
+
.md3 .cc-price .pp-hero-val {
|
|
4606
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4607
|
+
font-style: normal;
|
|
4608
|
+
font-weight: 700;
|
|
4609
|
+
font-size: 65px;
|
|
4610
|
+
line-height: 58px;
|
|
4611
|
+
letter-spacing: -2px;
|
|
4612
|
+
color: #005cff;
|
|
4613
|
+
}
|
|
4614
|
+
/* long rates shrink so the hero figure doesn't overflow the card. */
|
|
4615
|
+
.md3 .cc-price .pp-hero-val--len4 {
|
|
4616
|
+
font-size: 50px;
|
|
4617
|
+
line-height: 53px;
|
|
4618
|
+
}
|
|
4619
|
+
.md3 .cc-price .pp-hero-val--len5 {
|
|
4620
|
+
font-size: 43px;
|
|
4621
|
+
line-height: 45px;
|
|
4622
|
+
}
|
|
4623
|
+
.md3 .cc-price .pp-hero-val--len6 {
|
|
4624
|
+
font-size: 37px;
|
|
4625
|
+
line-height: 40px;
|
|
4626
|
+
}
|
|
4627
|
+
/* diagonal red strike (Figma), replacing the native horizontal line-through — shared by the
|
|
4628
|
+
CarCard hero (.cc-price) and the VDP FinanceCalculator's mobile Kaufen old price
|
|
4629
|
+
(.fin-calc-card, .fin-rate-old-list). */
|
|
4630
|
+
.md3 .cc-price .pp-hero-old,
|
|
4631
|
+
.md3 .fin-calc-card .pp-hero-old {
|
|
4632
|
+
position: relative;
|
|
4633
|
+
display: inline-block;
|
|
4634
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4635
|
+
font-style: normal;
|
|
4636
|
+
font-weight: 400;
|
|
4637
|
+
font-size: 17px;
|
|
4638
|
+
line-height: 20px;
|
|
4639
|
+
letter-spacing: 0;
|
|
4640
|
+
color: #0e2238;
|
|
4641
|
+
text-decoration: none;
|
|
4642
|
+
}
|
|
4643
|
+
.md3 .cc-price .pp-hero-old::after,
|
|
4644
|
+
.md3 .fin-calc-card .pp-hero-old::after {
|
|
4645
|
+
content: "";
|
|
4646
|
+
position: absolute;
|
|
4647
|
+
left: -2px;
|
|
4648
|
+
right: -2px;
|
|
4649
|
+
top: 50%;
|
|
4650
|
+
border-top: 2px solid #e60000;
|
|
4651
|
+
transform: rotate(12.53deg);
|
|
4652
|
+
transform-origin: center;
|
|
4653
|
+
}
|
|
4654
|
+
.md3 .cc-price .pp-hero-old--len4,
|
|
4655
|
+
.md3 .fin-calc-card .pp-hero-old--len4 {
|
|
4656
|
+
font-size: 13px;
|
|
4657
|
+
line-height: 17px;
|
|
4658
|
+
}
|
|
4659
|
+
.md3 .cc-price .pp-hero-old--len5,
|
|
4660
|
+
.md3 .fin-calc-card .pp-hero-old--len5 {
|
|
4661
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4662
|
+
font-weight: 400;
|
|
4663
|
+
font-size: 14px;
|
|
4664
|
+
line-height: 16px;
|
|
4665
|
+
color: #0e2238;
|
|
4666
|
+
}
|
|
4667
|
+
.md3 .cc-price .pp-hero-unit {
|
|
4668
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4669
|
+
font-style: normal;
|
|
4670
|
+
font-weight: 700;
|
|
4671
|
+
font-size: 18px;
|
|
4672
|
+
line-height: 21px;
|
|
4673
|
+
color: #5b6b7f;
|
|
4674
|
+
}
|
|
4675
|
+
/* Kaufen: the UVP/old-price group sits ABOVE the hero figure (Figma), not beside it like the
|
|
4676
|
+
Finanzierung/Leasing z.B. column — stack the row and pull the group first via order. */
|
|
4677
|
+
.md3 .cc-price .pp-hero--buy .pp-hero-rate {
|
|
4678
|
+
flex-direction: column;
|
|
4679
|
+
align-items: flex-start;
|
|
4680
|
+
gap: 2px;
|
|
4681
|
+
}
|
|
4682
|
+
.md3 .cc-price .pp-hero--buy .pp-hero-unit-group {
|
|
4683
|
+
order: -1;
|
|
4684
|
+
align-self: flex-end;
|
|
4685
|
+
}
|
|
4686
|
+
/* Preisbewertung pill + segmented tier bar, grouped in one column exactly like the VDP
|
|
4687
|
+
finance-calculator's MOBILE .fin-eval-col (FinanceCalculator.tsx) — replaces the old
|
|
4688
|
+
StatChip pill + full-width gradient .pp-bar (see PriceEvalCol in cardParts.tsx). No
|
|
4689
|
+
grid here (unlike .fin-price-grid), so the 112px column width is set directly instead
|
|
4690
|
+
of via grid-area/grid-template-columns. */
|
|
4691
|
+
.md3 .cc-price .fin-eval-col {
|
|
4692
|
+
display: flex;
|
|
4693
|
+
flex-direction: column;
|
|
4694
|
+
gap: 16px;
|
|
4695
|
+
width: 112px;
|
|
4696
|
+
flex: none;
|
|
4697
|
+
}
|
|
4698
|
+
.md3 .cc-price .fin-eval-pill {
|
|
4699
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4700
|
+
font-style: normal;
|
|
4701
|
+
font-weight: 700;
|
|
4702
|
+
font-size: 12px;
|
|
4703
|
+
line-height: 14px;
|
|
4704
|
+
text-align: center;
|
|
4705
|
+
}
|
|
4706
|
+
.md3 .cc-price .fin-eval-pill--good {
|
|
4707
|
+
background: #dff3e5 !important;
|
|
4708
|
+
border-radius: 11px !important;
|
|
4709
|
+
width: 100%;
|
|
4710
|
+
height: 27px;
|
|
4711
|
+
box-sizing: border-box;
|
|
4712
|
+
justify-content: center;
|
|
4713
|
+
}
|
|
4714
|
+
/* footnote 4 ("Top-Preis" claim) — .fin-eval-pill is a flex container, so vertical-align has
|
|
4715
|
+
no effect on the sup (it's a flex item, not inline content); position:relative/top raises
|
|
4716
|
+
it instead, same technique as the hero price's own 1/2/3 footnote markers. Shared by the
|
|
4717
|
+
CarCard hero (.cc-price) and the VDP FinanceCalculator's own pill (.fin-calc-card). */
|
|
4718
|
+
.md3 .cc-price .fin-eval-pill sup,
|
|
4719
|
+
.md3 .fin-calc-card .fin-eval-pill sup {
|
|
4720
|
+
position: relative;
|
|
4721
|
+
top: 0px;
|
|
4722
|
+
left: -4px;
|
|
4723
|
+
font-size: 9px;
|
|
4724
|
+
line-height: 9px;
|
|
4725
|
+
}
|
|
4726
|
+
.md3 .cc-price .fin-eval-bar {
|
|
4727
|
+
height: 7px;
|
|
4728
|
+
}
|
|
4729
|
+
.md3 .cc-price .fin-eval-seg:first-child {
|
|
4730
|
+
border-radius: 4px 0 0 4px;
|
|
4731
|
+
}
|
|
4732
|
+
.md3 .cc-price .fin-eval-seg:last-of-type {
|
|
4733
|
+
border-radius: 0 4px 4px 0;
|
|
4734
|
+
}
|
|
4735
|
+
.md3 .cc-price .fin-eval-thumb {
|
|
4736
|
+
width: 18px;
|
|
4737
|
+
height: 18px;
|
|
4738
|
+
border-width: 2px;
|
|
4739
|
+
border-radius: 9px;
|
|
4740
|
+
}
|
|
4741
|
+
.md3 .cc-price .fin-eval-thumb--good {
|
|
4742
|
+
border-color: #168a45 !important;
|
|
4743
|
+
}
|
|
4744
|
+
/* financing/leasing terms line + "Finanzierungsdetails"/"Leasingdetails" link (PriceTerms in
|
|
4745
|
+
cardParts.tsx), full-width under the price/rating row. Same quiet typography as .pp-hero-terms
|
|
4746
|
+
(PricePaths); the link resets button chrome and reuses the primary color so it reads as tappable. */
|
|
4747
|
+
.md3 .cc-terms {
|
|
4748
|
+
margin-top: 9px;
|
|
4749
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4750
|
+
font-style: normal;
|
|
4751
|
+
font-weight: 400;
|
|
4752
|
+
font-size: 13px;
|
|
4753
|
+
line-height: 15px;
|
|
4754
|
+
color: #0e2238;
|
|
4755
|
+
}
|
|
4756
|
+
.md3 .cc-terms-dot {
|
|
4757
|
+
display: inline-block;
|
|
4758
|
+
margin: 0 2px;
|
|
4759
|
+
color: #5b6b7f;
|
|
4760
|
+
font-size: 20px;
|
|
4761
|
+
line-height: 0;
|
|
4762
|
+
vertical-align: -2px;
|
|
4763
|
+
}
|
|
4764
|
+
.md3 .cc-terms-link {
|
|
4765
|
+
border: 0;
|
|
4766
|
+
background: none;
|
|
4767
|
+
padding: 0;
|
|
4768
|
+
margin: 0;
|
|
4769
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
4770
|
+
font-style: normal;
|
|
4771
|
+
font-weight: 400;
|
|
4772
|
+
font-size: 13px;
|
|
4773
|
+
line-height: 15px;
|
|
4774
|
+
letter-spacing: -0.03em;
|
|
4775
|
+
color: #0e2238;
|
|
4776
|
+
cursor: pointer;
|
|
4777
|
+
}
|
|
4351
4778
|
/* card CTA row (Angebot anfragen / phone / Rate anpassen) — the shared .mbtn padding (0 24px)
|
|
4352
4779
|
and 14px font were sized for full-width VDP buttons; at a ~330-360px card/column width three
|
|
4353
4780
|
buttons with real text at that size overflow their flex share. Scoped-down here only. */
|
|
@@ -4632,6 +5059,14 @@ line-height: 31px;
|
|
|
4632
5059
|
gap: 12px;
|
|
4633
5060
|
flex-wrap: wrap;
|
|
4634
5061
|
}
|
|
5062
|
+
/* "Persönliche Beratung. Wir sind für Sie da!" — mobile .fin-info, icon + one line. */
|
|
5063
|
+
.md3 .fin-info-line {
|
|
5064
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
5065
|
+
font-weight: 400;
|
|
5066
|
+
font-size: 14px;
|
|
5067
|
+
line-height: 16px;
|
|
5068
|
+
color: #0e2238;
|
|
5069
|
+
}
|
|
4635
5070
|
.md3 .fin-id {
|
|
4636
5071
|
font-size: 12px;
|
|
4637
5072
|
color: var(--md-on-surface-variant);
|
|
@@ -6073,7 +6508,7 @@ line-height: 31px;
|
|
|
6073
6508
|
(14px) than the 14/24px desktop default set inline. */
|
|
6074
6509
|
@media (max-width: 600px) {
|
|
6075
6510
|
.md3 .vdp-main {
|
|
6076
|
-
padding:
|
|
6511
|
+
padding: 0 14px 48px !important;
|
|
6077
6512
|
}
|
|
6078
6513
|
.md3 .vdp-push-badges {
|
|
6079
6514
|
gap: 6px;
|
|
@@ -6124,7 +6559,7 @@ background: ;
|
|
|
6124
6559
|
*/
|
|
6125
6560
|
|
|
6126
6561
|
.md3 .push-badge--save {
|
|
6127
|
-
background:
|
|
6562
|
+
background: color-mix(in srgb, #116e39 20%, white);
|
|
6128
6563
|
color: #116e39;
|
|
6129
6564
|
border: 1px solid rgba(17, 110, 57, 0.05);
|
|
6130
6565
|
font-family: Arial, Helvetica, sans-serif;
|
|
@@ -6138,7 +6573,7 @@ background: ;
|
|
|
6138
6573
|
color: #116e39;
|
|
6139
6574
|
}
|
|
6140
6575
|
.md3 .push-badge--discount {
|
|
6141
|
-
background:
|
|
6576
|
+
background: color-mix(in srgb, #d92d20 20%, white);
|
|
6142
6577
|
border: 1px solid rgba(217, 45, 32, 0.05);
|
|
6143
6578
|
color: #D92D20;
|
|
6144
6579
|
font-weight: 700;
|
|
@@ -6149,7 +6584,7 @@ background: ;
|
|
|
6149
6584
|
font-weight: 700;
|
|
6150
6585
|
font-size: 13px;
|
|
6151
6586
|
line-height: 15px;
|
|
6152
|
-
background:
|
|
6587
|
+
background: color-mix(in srgb, #005cff 20%, white);
|
|
6153
6588
|
border: 1px solid rgba(0, 92, 255, 0.05);
|
|
6154
6589
|
border-radius: 15px;
|
|
6155
6590
|
color: #005CFF;
|
|
@@ -6157,7 +6592,7 @@ color: #005CFF;
|
|
|
6157
6592
|
/* NEU badge, as the trailing pill inside the vdp-push-badges row (VDP mobile mockup) —
|
|
6158
6593
|
scoped override, the base .neu-badge above still serves the car-card usage. */
|
|
6159
6594
|
.md3 .vdp-push-badges .neu-badge {
|
|
6160
|
-
background:
|
|
6595
|
+
background: color-mix(in srgb, #ffb800 20%, white);
|
|
6161
6596
|
border: 1px solid rgba(255, 184, 0, 0.05);
|
|
6162
6597
|
border-radius: 15px;
|
|
6163
6598
|
font-weight: 700;
|
|
@@ -6286,34 +6721,6 @@ color: #005CFF;
|
|
|
6286
6721
|
gap: 0;
|
|
6287
6722
|
justify-content: flex-start;
|
|
6288
6723
|
}
|
|
6289
|
-
.md3 .fin-info-main {
|
|
6290
|
-
flex: 0 0 53% !important;
|
|
6291
|
-
width: 53%;
|
|
6292
|
-
padding-left: 21px;
|
|
6293
|
-
box-sizing: border-box;
|
|
6294
|
-
}
|
|
6295
|
-
.md3 .fin-info-details-btn {
|
|
6296
|
-
flex: 0 0 37%;
|
|
6297
|
-
width: 30%;
|
|
6298
|
-
box-sizing: border-box;
|
|
6299
|
-
}
|
|
6300
|
-
.md3 .fin-info-sub {
|
|
6301
|
-
font-family: Arial, Helvetica, sans-serif;
|
|
6302
|
-
font-style: normal;
|
|
6303
|
-
font-weight: 400;
|
|
6304
|
-
font-size: 12px;
|
|
6305
|
-
line-height: 14px;
|
|
6306
|
-
color: #111820;
|
|
6307
|
-
}
|
|
6308
|
-
.md3 .fin-info-details-label {
|
|
6309
|
-
font-family: Arial, Helvetica, sans-serif;
|
|
6310
|
-
font-style: normal;
|
|
6311
|
-
font-weight: 400;
|
|
6312
|
-
font-size: 10px;
|
|
6313
|
-
line-height: 16px;
|
|
6314
|
-
color: #111820;
|
|
6315
|
-
width: 69px;
|
|
6316
|
-
}
|
|
6317
6724
|
.md3 .fin-adjust-btn-label {
|
|
6318
6725
|
font-family: Arial, Helvetica, sans-serif;
|
|
6319
6726
|
font-style: normal;
|
|
@@ -7316,6 +7723,24 @@ color: #005CFF;
|
|
|
7316
7723
|
line-height: 58px !important;
|
|
7317
7724
|
color: #005cff !important;
|
|
7318
7725
|
}
|
|
7726
|
+
/* mobile Kaufen UVP-strike text (.pp-hero-old, shared with CarCard) also carries .num for its
|
|
7727
|
+
tabular-nums digits, so the 65px blue hero rule above would otherwise win via !important —
|
|
7728
|
+
repeat with !important here, same technique as .fin-rate-cash-mobile below. */
|
|
7729
|
+
.md3 .fin-rate-main .num.pp-hero-old {
|
|
7730
|
+
font-family: Arial, Helvetica, sans-serif !important;
|
|
7731
|
+
font-weight: 400 !important;
|
|
7732
|
+
font-size: 17px !important;
|
|
7733
|
+
line-height: 20px !important;
|
|
7734
|
+
color: #0e2238 !important;
|
|
7735
|
+
}
|
|
7736
|
+
.md3 .fin-rate-main .num.pp-hero-old.pp-hero-old--len4 {
|
|
7737
|
+
font-size: 13px !important;
|
|
7738
|
+
line-height: 17px !important;
|
|
7739
|
+
}
|
|
7740
|
+
.md3 .fin-rate-main .num.pp-hero-old.pp-hero-old--len5 {
|
|
7741
|
+
font-size: 14px !important;
|
|
7742
|
+
line-height: 16px !important;
|
|
7743
|
+
}
|
|
7319
7744
|
/* Kaufen/Barzahlung tab hero price (mobile) — same family/weight/line-height/color as
|
|
7320
7745
|
the shared .num rule above, just a smaller size for this specific instance. */
|
|
7321
7746
|
.md3 .fin-rate-main .num.fin-rate-cash-mobile {
|
|
@@ -7362,14 +7787,6 @@ color: #005CFF;
|
|
|
7362
7787
|
.md3 .fin-rate-main .fin-rate-hero.fin-rate-hero--len6 {
|
|
7363
7788
|
font-size: 36px !important;
|
|
7364
7789
|
}
|
|
7365
|
-
/* "Finanzierung & Leasing möglich" note (mobile) */
|
|
7366
|
-
.md3 .fin-financing-leasing-note {
|
|
7367
|
-
font-family: Arial, Helvetica, sans-serif !important;
|
|
7368
|
-
font-weight: 400 !important;
|
|
7369
|
-
font-size: 10px !important;
|
|
7370
|
-
line-height: 16px !important;
|
|
7371
|
-
color: #111820 !important;
|
|
7372
|
-
}
|
|
7373
7790
|
/* the struck old figure must NOT inherit the new hero rate styling (font, weight,
|
|
7374
7791
|
color, line-height) — only the hero .num itself gets the 65px treatment */
|
|
7375
7792
|
.md3 .fin-rate-main .fin-rate-old {
|
|
@@ -7536,6 +7953,16 @@ color: #005CFF;
|
|
|
7536
7953
|
color: #111820;
|
|
7537
7954
|
margin-bottom: 12px;
|
|
7538
7955
|
}
|
|
7956
|
+
/* "Finanzierungsdetails"/"Leasing-Details" reads as a link here (unlike CarCard's quiet
|
|
7957
|
+
.cc-terms-link, which stays text-colored on purpose) — underlined. */
|
|
7958
|
+
.md3 .fin-cond .cc-terms-link {
|
|
7959
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
7960
|
+
font-weight: 400;
|
|
7961
|
+
font-size: 13px;
|
|
7962
|
+
line-height: 15px;
|
|
7963
|
+
color: #0e2238;
|
|
7964
|
+
text-decoration: underline;
|
|
7965
|
+
}
|
|
7539
7966
|
.md3 .fin-rate-main > div {
|
|
7540
7967
|
flex-wrap: wrap;
|
|
7541
7968
|
}
|
|
@@ -9258,3 +9685,82 @@ color: #005CFF;
|
|
|
9258
9685
|
grid-template-columns: repeat(4, 1fr);
|
|
9259
9686
|
}
|
|
9260
9687
|
}
|
|
9688
|
+
|
|
9689
|
+
/* ==========================================================================
|
|
9690
|
+
CarCard (libs/packages/fe-ui-core-autobahn/cards/CarCard.tsx) — the grid
|
|
9691
|
+
card reused on VDP's "Ähnliche Fahrzeuge" section (VehicleDetailedNextPage
|
|
9692
|
+
.vdp-similar / .cards-3) — desktop-only pixel-match to Figma "Component |
|
|
9693
|
+
Car Card | Desktop", file 2U6FNIz6STpwSBoqvLIKRV:
|
|
9694
|
+
- Finanzierung tab active → node 245:752
|
|
9695
|
+
- Leasing tab active → node 318:1366
|
|
9696
|
+
- Kaufen tab active → node 331:1891
|
|
9697
|
+
Confirmed with the user: only the price/rating block actually changes with
|
|
9698
|
+
the active tab — the image treatment/gallery-nav differences between the
|
|
9699
|
+
3 frames are just 3 different demo cars' own data, not a tab-driven
|
|
9700
|
+
restyle, so those are intentionally left alone here.
|
|
9701
|
+
Mobile AND tablet are untouched: `.cards-3` itself drops to 2 columns at
|
|
9702
|
+
<=1024px (existing rule above), so "desktop" here starts at 1025px — every
|
|
9703
|
+
rule below is inside that query, and every selector requires
|
|
9704
|
+
`.cc-card`/`.cc-price` so nothing here can leak into any other
|
|
9705
|
+
`.mcard`/`.statchip`/`.neu-badge`/etc. usage elsewhere on the site.
|
|
9706
|
+
========================================================================== */
|
|
9707
|
+
@media (min-width: 1025px) {
|
|
9708
|
+
/* card shell: 18px corners, #d4dde7 border, resting elevation (Figma shows this shadow at
|
|
9709
|
+
rest, not just on hover — the existing .mcard--interactive:hover elevation is untouched). */
|
|
9710
|
+
.md3 .cc-card {
|
|
9711
|
+
border-radius: 18px;
|
|
9712
|
+
border-color: #d4dde7;
|
|
9713
|
+
box-shadow: 0px 3px 14px 0px rgba(14, 34, 56, 0.09);
|
|
9714
|
+
}
|
|
9715
|
+
|
|
9716
|
+
/* favorite heart + top-left badge stack position (Figma: heart top15/right11 of a 362-wide
|
|
9717
|
+
card; badge stack starts top15, row gap 8 between the chip row and the Angebot badge). */
|
|
9718
|
+
.md3 .cc-card .cc-fav {
|
|
9719
|
+
top: 15px !important;
|
|
9720
|
+
right: 11px !important;
|
|
9721
|
+
}
|
|
9722
|
+
.md3 .cc-card .cc-badges {
|
|
9723
|
+
top: 15px !important;
|
|
9724
|
+
}
|
|
9725
|
+
|
|
9726
|
+
/* hero price — Figma's rate figure (Finanzierung/Leasing) is much larger than the shared
|
|
9727
|
+
.cc-price sizing; the flat purchase price (Kaufen, .pp-hero--buy) stays smaller since real
|
|
9728
|
+
purchase prices run 5-6 digits and would overflow the card at the rate-sized figure. */
|
|
9729
|
+
.md3 .cc-price .pp-hero--buy .pp-hero-val {
|
|
9730
|
+
font-family: Arial, Helvetica, sans-serif;
|
|
9731
|
+
font-weight: 700;
|
|
9732
|
+
font-size: 52px;
|
|
9733
|
+
line-height: 58px;
|
|
9734
|
+
color: #005cff;
|
|
9735
|
+
}
|
|
9736
|
+
/* 6-digit purchase price (e.g. 113.249 €) shrinks further so it still fits. */
|
|
9737
|
+
.md3 .cc-price .pp-hero--buy .pp-hero-val.pp-hero-val--buy-len6 {
|
|
9738
|
+
font-size: 48px;
|
|
9739
|
+
line-height: 54px;
|
|
9740
|
+
}
|
|
9741
|
+
/* 7-digit purchase price (e.g. 1.553.249 €) shrinks even further. */
|
|
9742
|
+
.md3 .cc-price .pp-hero--buy .pp-hero-val.pp-hero-val--buy-len7 {
|
|
9743
|
+
font-size: 43px;
|
|
9744
|
+
line-height: 47px;
|
|
9745
|
+
}
|
|
9746
|
+
|
|
9747
|
+
/* Finanzierung/Leasing/Kaufen tabs — Figma: only the ACTIVE tab is bold + Deep Navy #0e2238
|
|
9748
|
+
inactive text (the shared .fin-tab rule bolds both and uses #111820, since the VDP
|
|
9749
|
+
finance-calculator tabs it's shared with want both bold there); base divider and active
|
|
9750
|
+
underline are literal Figma tokens (#d4dde7 divider, #005cff underline with 2px-rounded
|
|
9751
|
+
ends), not the site-wide --md-outline-variant/--md-primary shades. */
|
|
9752
|
+
.md3 .cc-price .fin-tabs {
|
|
9753
|
+
border-bottom-color: #d4dde7;
|
|
9754
|
+
}
|
|
9755
|
+
.md3 .cc-price .fin-tab {
|
|
9756
|
+
font-weight: 400;
|
|
9757
|
+
color: #0e2238;
|
|
9758
|
+
}
|
|
9759
|
+
.md3 .cc-price .fin-tab.on {
|
|
9760
|
+
font-weight: 700;
|
|
9761
|
+
color: #005cff;
|
|
9762
|
+
border-bottom-width: 3px;
|
|
9763
|
+
border-bottom-left-radius: 2px;
|
|
9764
|
+
border-bottom-right-radius: 2px;
|
|
9765
|
+
}
|
|
9766
|
+
}
|