@khipu/design-system 0.2.0-alpha.2 → 0.2.0-alpha.4

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.
@@ -11,7 +11,7 @@
11
11
  *
12
12
  * AUTO-GENERATED FILE - DO NOT EDIT MANUALLY
13
13
  * Source: design-system/src/tokens/tokens.json
14
- * Generated: 2026-05-05T20:41:24.239Z
14
+ * Generated: 2026-05-14T19:34:35.577Z
15
15
  *
16
16
  * To regenerate:
17
17
  * cd design-system && npm run tokens:generate
@@ -147,9 +147,9 @@
147
147
  --kds-letter-spacing-widest: 1px;
148
148
 
149
149
  /* Button typography */
150
- --kds-typography-button-font-size: 0.9375rem;
150
+ --kds-typography-button-font-size: 0.875rem;
151
151
  --kds-typography-button-font-weight: 500;
152
- --kds-typography-button-line-height: 26px;
152
+ --kds-typography-button-line-height: 1.5;
153
153
  --kds-typography-button-letter-spacing: 0.46px;
154
154
 
155
155
  /* Typography margins */
@@ -199,10 +199,10 @@
199
199
  --kds-spacing-input-padding-y: 16px;
200
200
  --kds-spacing-input-padding-x: 12px;
201
201
  --kds-spacing-input-padding: 16px 12px;
202
- --kds-spacing-button-padding-y: 8px;
203
- --kds-spacing-button-padding-x: 22px;
204
- --kds-spacing-button-padding: 8px 22px;
205
- --kds-spacing-button-min-height: 50px;
202
+ --kds-spacing-button-padding-y: 0;
203
+ --kds-spacing-button-padding-x: 16px;
204
+ --kds-spacing-button-padding: 0 16px;
205
+ --kds-spacing-button-min-height: 44px;
206
206
  --kds-spacing-button-icon-size: 20px;
207
207
  --kds-spacing-sidebar-width: 280px;
208
208
  --kds-spacing-sidebar-width-collapsed: 72px;
@@ -241,7 +241,7 @@
241
241
  --kds-radius-full: 9999px;
242
242
 
243
243
  /* Component-specific radii */
244
- --kds-radius-button: 4px;
244
+ --kds-radius-button: 10px;
245
245
  --kds-radius-input: 4px;
246
246
  --kds-radius-card: 14px;
247
247
  --kds-radius-modal: 20px;
@@ -643,6 +643,7 @@ body.dark {
643
643
  /* Scroll Container Utilities */
644
644
  --kds-scroll-sm-height: 280px;
645
645
  --kds-scroll-md-height: 420px;
646
+
646
647
  --kds-scroll-lg-height: 600px;
647
648
 
648
649
  /* Stage Layout */
@@ -821,34 +822,37 @@ a.kds-btn {
821
822
  justify-content: center;
822
823
  gap: 8px;
823
824
  text-align: center;
825
+ width: 100%;
824
826
 
825
827
  /* Typography - Using design tokens */
826
828
  font-family: var(--kds-font-family-secondary);
827
- font-weight: var(--kds-font-weight-medium); /* 500, no 600 */
828
- font-size: var(--kds-typography-button-font-size); /* 0.9375rem = 15px */
829
- line-height: var(--kds-typography-button-line-height); /* 26px, no 1 */
829
+ font-weight: var(--kds-font-weight-medium); /* 500 */
830
+ font-size: var(--kds-typography-button-font-size); /* 0.875rem = 14px */
831
+ line-height: var(--kds-typography-button-line-height); /* 1.5 */
830
832
  letter-spacing: var(--kds-typography-button-letter-spacing); /* 0.46px */
831
833
  text-transform: uppercase;
832
834
 
833
835
  /* Spacing - Using design tokens */
834
- padding: var(--kds-spacing-button-padding); /* 8px 22px */
835
- min-height: var(--kds-spacing-button-min-height); /* 50px */
836
- height: auto; /* Remove fixed height, let content + padding define it */
836
+ padding: var(--kds-spacing-button-padding); /* 0 16px */
837
+ height: var(--kds-spacing-button-min-height); /* 44px */
837
838
 
838
839
  /* Border - Using design token */
839
- border-radius: var(--kds-radius-button); /* 4px */
840
+ border-radius: var(--kds-radius-button); /* 10px */
840
841
  border: none;
841
842
 
842
843
  /* Interaction */
843
844
  cursor: pointer;
844
- transition: background-color 250ms cubic-bezier(0.4, 0, 0.2, 1),
845
- box-shadow 250ms cubic-bezier(0.4, 0, 0.2, 1),
846
- border-color 250ms cubic-bezier(0.4, 0, 0.2, 1),
847
- color 250ms cubic-bezier(0.4, 0, 0.2, 1);
845
+ transition: background .15s, box-shadow .15s, transform .05s;
848
846
  box-sizing: border-box;
849
847
  vertical-align: middle;
850
848
  }
851
849
 
850
+ /* Active state - add subtle press effect */
851
+ button.kds-btn:active:not(:disabled),
852
+ a.kds-btn:active:not(:disabled) {
853
+ transform: translateY(1px);
854
+ }
855
+
852
856
  /* Disabled state - colores específicos en lugar de opacity */
853
857
  button.kds-btn:disabled,
854
858
  a.kds-btn:disabled {
@@ -866,18 +870,13 @@ a.kds-btn-primary {
866
870
  background: var(--kds-color-primary-main); /* #8347AD */
867
871
  color: white;
868
872
  border: none;
869
- box-shadow: 0px 3px 1px -2px rgba(0, 0, 0, 0.2),
870
- 0px 2px 2px 0px rgba(0, 0, 0, 0.14),
871
- 0px 1px 5px 0px rgba(0, 0, 0, 0.12); /* elevation/2 */
873
+ box-shadow: 0 1px 2px rgba(131, 71, 173, .25);
872
874
  }
873
875
 
874
- /* Hover State - background más oscuro + elevation/4 */
876
+ /* Hover State - background más oscuro */
875
877
  button.kds-btn-primary:hover:not(:disabled),
876
878
  a.kds-btn-primary:hover:not(:disabled) {
877
- background: var(--kds-color-primary-dark); /* #6A3A8C */
878
- box-shadow: 0px 2px 4px -1px rgba(0, 0, 0, 0.2),
879
- 0px 4px 5px 0px rgba(0, 0, 0, 0.14),
880
- 0px 1px 10px 0px rgba(0, 0, 0, 0.12); /* elevation/4 */
879
+ background: var(--kds-color-primary-dark); /* #5B3179 */
881
880
  }
882
881
 
883
882
  /* Active/Focus State */
@@ -4907,19 +4906,45 @@ dialog#surveyModal button.circle {
4907
4906
  align-items: center;
4908
4907
  justify-content: center;
4909
4908
  gap: var(--kds-spacing-1);
4910
- color: var(--kds-color-text-disabled);
4909
+ color: var(--kds-color-gray-400);
4911
4910
  font-size: var(--kds-font-size-xs);
4911
+ letter-spacing: var(--kds-letter-spacing-wide);
4912
4912
  padding: var(--kds-spacing-1) 0;
4913
4913
  }
4914
4914
 
4915
- .kds-secure-footer i {
4916
- font-size: var(--kds-font-size-sm);
4915
+ /* Desktop: footer inside card hidden; Mobile: footer outside card hidden */
4916
+ .kds-card-elevated > .kds-secure-footer {
4917
+ display: none;
4917
4918
  }
4918
4919
 
4919
- /* Inside a card: push to bottom with auto margin, subtle top spacing */
4920
- .kds-secure-footer.inside {
4921
- margin-top: auto;
4922
- padding-top: var(--kds-spacing-3);
4920
+ @media (max-width: 767px) {
4921
+ .kds-card-elevated > .kds-secure-footer {
4922
+ display: flex;
4923
+ }
4924
+ .kds-screen > .kds-secure-footer {
4925
+ display: none;
4926
+ }
4927
+ }
4928
+
4929
+ .kds-secure-footer-lock {
4930
+ width: 12px;
4931
+ height: 12px;
4932
+ flex: 0 0 auto;
4933
+ display: block;
4934
+ fill: none;
4935
+ stroke: currentColor;
4936
+ stroke-width: 1.75;
4937
+ stroke-linecap: round;
4938
+ stroke-linejoin: round;
4939
+ }
4940
+
4941
+ .kds-secure-footer .khipu-mark {
4942
+ height: 11px;
4943
+ width: auto;
4944
+ flex: 0 0 auto;
4945
+ display: block;
4946
+ object-fit: contain;
4947
+ overflow: visible;
4923
4948
  }
4924
4949
 
4925
4950
  .kds-secure-footer-code {
@@ -4934,7 +4959,7 @@ dialog#surveyModal button.circle {
4934
4959
  .kds-expand-toggle {
4935
4960
  background: none;
4936
4961
  border: 0;
4937
- padding: var(--kds-spacing-0-5) 0;
4962
+ padding: 0;
4938
4963
  color: var(--kds-color-primary-main);
4939
4964
  font-weight: var(--kds-font-weight-medium);
4940
4965
  font-size: var(--kds-font-size-sm);
@@ -4974,7 +4999,7 @@ dialog#surveyModal button.circle {
4974
4999
 
4975
5000
  .kds-expand-panel.open {
4976
5001
  max-height: 800px;
4977
- margin-top: var(--kds-spacing-1);
5002
+ margin-top: 0;
4978
5003
  }
4979
5004
 
4980
5005
  /* ========================================
@@ -5310,6 +5335,7 @@ dialog#surveyModal button.circle {
5310
5335
  background: var(--kds-color-background-muted);
5311
5336
  border-radius: var(--kds-radius-lg);
5312
5337
  padding: var(--kds-spacing-0-25);
5338
+ margin-bottom: var(--kds-spacing-2);
5313
5339
  display: flex;
5314
5340
  position: relative;
5315
5341
  }
@@ -5451,7 +5477,13 @@ dialog#surveyModal button.circle {
5451
5477
  opacity: calc(1 - var(--collapse-progress) * 1.5);
5452
5478
  }
5453
5479
 
5454
- /* Amount: NO font-size change (source keeps 30px always) */
5480
+ /* Amount: 30px 24px (progressive) */
5481
+ .kds-invoice-sticky .kds-invoice-amount {
5482
+ font-size: calc(
5483
+ var(--kds-font-size-3xl) -
5484
+ (var(--kds-font-size-3xl) - var(--kds-font-size-2xl)) * var(--collapse-progress)
5485
+ );
5486
+ }
5455
5487
 
5456
5488
  /* Merchant tile: 64×64px → 50×50px, radius 8px → 6px (progressive) */
5457
5489
  .kds-invoice-sticky .kds-invoice-merchant {
@@ -5477,10 +5509,11 @@ dialog#surveyModal button.circle {
5477
5509
  );
5478
5510
  }
5479
5511
 
5480
- /* Code: margin-top 4px → 0 (progressive). Font-size stays 12px. */
5512
+ /* Code: margin-top 8px → 0, font-size 12px → 11px (progressive) */
5481
5513
  .kds-invoice-sticky .kds-invoice-code {
5482
5514
  margin-top: calc(var(--kds-spacing-1) * (1 - var(--collapse-progress)));
5483
5515
  margin-bottom: 0;
5516
+ font-size: calc(var(--kds-font-size-xs) - 1px * var(--collapse-progress));
5484
5517
  }
5485
5518
 
5486
5519
  /* Pull all siblings after sticky wrapper up to fill clipped gap.
@@ -5510,23 +5543,19 @@ dialog#surveyModal button.circle {
5510
5543
 
5511
5544
  /* -- Invoice Collapsible (kv rows below header) -- */
5512
5545
  .kds-invoice-collapsible {
5513
- margin-top: var(--kds-spacing-1-5);
5546
+ margin-top: var(--kds-spacing-1);
5514
5547
  }
5515
5548
 
5516
- /* -- Invoice Summary (kv + expand toggle side by side) -- */
5549
+ /* -- Invoice Summary -- */
5517
5550
  .kds-invoice-summary {
5518
5551
  display: flex;
5519
5552
  align-items: flex-end;
5520
- gap: var(--kds-spacing-2);
5553
+ gap: var(--kds-spacing-1);
5521
5554
  }
5522
5555
  .kds-invoice-summary .kds-kv {
5523
5556
  flex: 1;
5524
5557
  min-width: 0;
5525
5558
  }
5526
- .kds-invoice-summary .kds-expand-toggle {
5527
- flex-shrink: 0;
5528
- white-space: nowrap;
5529
- }
5530
5559
 
5531
5560
  /* -- Invoice Header (amount + merchant tile) -- */
5532
5561
  /* Compound selector overrides BeerCSS `header { padding:0 1rem; display:grid; align-content:center }` */
@@ -5549,11 +5578,11 @@ div.kds-invoice-header,
5549
5578
  }
5550
5579
 
5551
5580
  .kds-invoice-amount {
5552
- font-weight: 700;
5553
- font-size: 30px;
5554
- line-height: 1.25;
5555
- letter-spacing: 0.4px;
5556
- color: var(--kds-color-text-primary);
5581
+ font-weight: var(--kds-font-weight-bold);
5582
+ font-size: var(--kds-font-size-3xl);
5583
+ line-height: var(--kds-line-height-tight);
5584
+ letter-spacing: var(--kds-letter-spacing-wide);
5585
+ color: var(--kds-color-gray-900);
5557
5586
  margin: 0;
5558
5587
  }
5559
5588
 
@@ -5562,12 +5591,21 @@ div.kds-invoice-header,
5562
5591
  }
5563
5592
 
5564
5593
  .kds-invoice-code {
5594
+ font-family: var(--kds-font-family-mono);
5565
5595
  font-size: var(--kds-font-size-xs);
5566
- color: var(--kds-color-text-hint);
5596
+ font-weight: var(--kds-font-weight-regular);
5597
+ letter-spacing: var(--kds-letter-spacing-wider);
5598
+ font-variant-numeric: tabular-nums;
5599
+ color: var(--kds-color-gray-400);
5600
+ text-transform: uppercase;
5567
5601
  margin: 0;
5568
5602
  margin-top: var(--kds-spacing-1);
5569
5603
  }
5570
5604
 
5605
+ .kds-invoice-code-value {
5606
+ text-transform: lowercase;
5607
+ }
5608
+
5571
5609
  .kds-invoice-merchant {
5572
5610
  width: 64px;
5573
5611
  height: 64px;
@@ -5595,6 +5633,13 @@ div.kds-invoice-header,
5595
5633
  line-height: 1;
5596
5634
  }
5597
5635
 
5636
+ .kds-invoice-merchant img {
5637
+ width: 100%;
5638
+ height: 100%;
5639
+ object-fit: cover;
5640
+ border-radius: var(--kds-radius-md);
5641
+ }
5642
+
5598
5643
  /* -- Card Title -- */
5599
5644
  .kds-card-title {
5600
5645
  font-weight: 700;
@@ -5602,7 +5647,7 @@ div.kds-invoice-header,
5602
5647
  line-height: 1.5;
5603
5648
  letter-spacing: -0.31px;
5604
5649
  color: var(--kds-color-text-primary);
5605
- margin: 0 0 var(--kds-spacing-2);
5650
+ margin-bottom: var(--kds-spacing-2) !important;
5606
5651
  }
5607
5652
 
5608
5653
  /* -- Key-Value Grid -- */
@@ -5616,8 +5661,9 @@ div.kds-invoice-header,
5616
5661
 
5617
5662
  .kds-kv dt {
5618
5663
  font-size: var(--kds-font-size-xs);
5619
- letter-spacing: 0.2px;
5620
- color: var(--kds-color-text-hint);
5664
+ line-height: var(--kds-line-height-relaxed);
5665
+ letter-spacing: normal;
5666
+ color: var(--kds-color-text-secondary);
5621
5667
  text-transform: uppercase;
5622
5668
  margin: 0;
5623
5669
  }
@@ -5625,8 +5671,14 @@ div.kds-invoice-header,
5625
5671
  .kds-kv dd {
5626
5672
  margin: 0;
5627
5673
  font-size: var(--kds-font-size-sm);
5628
- font-weight: 600;
5629
- color: var(--kds-color-text-primary);
5674
+ line-height: var(--kds-line-height-relaxed);
5675
+ font-weight: var(--kds-font-weight-bold);
5676
+ letter-spacing: normal;
5677
+ color: var(--kds-color-gray-800);
5678
+ min-width: 0;
5679
+ white-space: nowrap;
5680
+ overflow: hidden;
5681
+ text-overflow: ellipsis;
5630
5682
  }
5631
5683
 
5632
5684
  /* -- Dividers -- */
@@ -5648,13 +5700,13 @@ div.kds-invoice-header,
5648
5700
  .kds-detail-list {
5649
5701
  display: flex;
5650
5702
  flex-direction: column;
5651
- gap: var(--kds-spacing-1-75);
5652
- margin: var(--kds-spacing-1-75) 0 0;
5653
- padding: 0;
5703
+ gap: var(--kds-spacing-1-5);
5704
+ margin: 0;
5705
+ padding: 0 0 var(--kds-spacing-1);
5654
5706
  }
5655
5707
 
5656
5708
  .kds-detail-group {
5657
- margin-bottom: var(--kds-spacing-1-75);
5709
+ margin-bottom: var(--kds-spacing-1-5);
5658
5710
  }
5659
5711
 
5660
5712
  .kds-detail-group:last-child {
@@ -5663,7 +5715,7 @@ div.kds-invoice-header,
5663
5715
 
5664
5716
  .kds-detail-group dt {
5665
5717
  font-size: var(--kds-font-size-xs);
5666
- letter-spacing: 0.2px;
5718
+ letter-spacing: var(--kds-letter-spacing-wide);
5667
5719
  color: var(--kds-color-text-hint);
5668
5720
  text-transform: uppercase;
5669
5721
  margin: 0 0 var(--kds-spacing-0-5);
@@ -5672,7 +5724,7 @@ div.kds-invoice-header,
5672
5724
  .kds-detail-group dd {
5673
5725
  margin: 0;
5674
5726
  font-size: var(--kds-font-size-sm);
5675
- line-height: 1.45;
5727
+ line-height: var(--kds-line-height-normal);
5676
5728
  color: var(--kds-color-text-primary);
5677
5729
  }
5678
5730
 
@@ -5834,7 +5886,11 @@ button.kds-btn-success::after {
5834
5886
  display: flex;
5835
5887
  flex-direction: column;
5836
5888
  gap: var(--kds-spacing-1);
5837
- margin-top: var(--kds-spacing-1);
5889
+ margin-bottom: var(--kds-spacing-1);
5890
+ }
5891
+
5892
+ .kds-bank-list:last-child {
5893
+ margin-bottom: 0;
5838
5894
  }
5839
5895
 
5840
5896
  /* -- Field group spacing -- */
@@ -5888,6 +5944,134 @@ button.kds-btn-success::after {
5888
5944
  margin-top: var(--kds-spacing-2-5);
5889
5945
  }
5890
5946
 
5947
+ /* -- PSP Banner -- */
5948
+ .kds-psp-banner {
5949
+ padding: var(--kds-spacing-0-5) var(--kds-spacing-1-25);
5950
+ font-size: var(--kds-font-size-sm);
5951
+ border-radius: var(--kds-radius-sm);
5952
+ margin-top: var(--kds-spacing-1-5);
5953
+ }
5954
+
5955
+ /* -- Bill Description -- */
5956
+ .kds-bill-description-body {
5957
+ font-family: inherit;
5958
+ white-space: pre-wrap;
5959
+ overflow-wrap: anywhere;
5960
+ margin: 0;
5961
+ padding: 0;
5962
+ background: transparent;
5963
+ color: var(--kds-color-text-secondary);
5964
+ font-size: var(--kds-font-size-sm);
5965
+ line-height: var(--kds-line-height-normal);
5966
+ }
5967
+
5968
+ .kds-bill-description-picture {
5969
+ width: 120px;
5970
+ height: 120px;
5971
+ object-fit: contain;
5972
+ background: var(--kds-color-background-paper);
5973
+ padding: var(--kds-spacing-1-25);
5974
+ border-radius: var(--kds-radius-md);
5975
+ margin-top: var(--kds-spacing-1);
5976
+ display: block;
5977
+ box-sizing: content-box;
5978
+ }
5979
+
5980
+ /* -- Share Card (mustContinue) -- */
5981
+ .kds-share-card {
5982
+ margin-top: var(--kds-spacing-2);
5983
+ padding: var(--kds-spacing-2);
5984
+ border: var(--kds-border-width-sm) solid var(--kds-color-gray-200);
5985
+ border-radius: var(--kds-radius-lg);
5986
+ background: var(--kds-color-background-paper);
5987
+ }
5988
+
5989
+ .kds-share-eyebrow {
5990
+ font-size: var(--kds-font-size-caption);
5991
+ letter-spacing: var(--kds-letter-spacing-wide);
5992
+ color: var(--kds-color-gray-500);
5993
+ text-transform: uppercase;
5994
+ font-weight: var(--kds-font-weight-bold);
5995
+ margin: 0 0 var(--kds-spacing-0-75);
5996
+ }
5997
+
5998
+ .kds-share-copy {
5999
+ font-size: var(--kds-font-size-body1);
6000
+ line-height: var(--kds-line-height-normal);
6001
+ color: var(--kds-color-gray-800);
6002
+ margin: 0 0 var(--kds-spacing-1-5);
6003
+ }
6004
+
6005
+ .kds-share-divider {
6006
+ height: 0;
6007
+ border: 0;
6008
+ border-top: var(--kds-border-width-sm) dashed var(--kds-color-gray-200);
6009
+ margin: var(--kds-spacing-1-5) 0;
6010
+ }
6011
+
6012
+ .kds-share-link {
6013
+ display: block;
6014
+ font-size: var(--kds-font-size-sm);
6015
+ color: var(--kds-color-primary-main);
6016
+ text-decoration: none;
6017
+ word-break: break-all;
6018
+ margin: 0 0 var(--kds-spacing-1-5);
6019
+ }
6020
+
6021
+ .kds-share-link:hover {
6022
+ text-decoration: underline;
6023
+ }
6024
+
6025
+ .kds-share-action {
6026
+ display: flex;
6027
+ align-items: center;
6028
+ justify-content: center;
6029
+ gap: var(--kds-spacing-0-75);
6030
+ background: none;
6031
+ border: 0;
6032
+ padding: var(--kds-spacing-0-75) var(--kds-spacing-1-25);
6033
+ cursor: pointer;
6034
+ color: var(--kds-color-text-primary);
6035
+ font-size: var(--kds-font-size-sm);
6036
+ font-family: inherit;
6037
+ border-radius: var(--kds-radius-sm);
6038
+ margin: 0 auto;
6039
+ }
6040
+
6041
+ .kds-share-action:hover {
6042
+ background: var(--kds-color-primary-hover);
6043
+ color: var(--kds-color-primary-main);
6044
+ }
6045
+
6046
+ .kds-share-action .material-symbols-outlined {
6047
+ font-size: var(--kds-font-size-2xl);
6048
+ }
6049
+
6050
+ /* -- Participants List (mustContinue) -- */
6051
+ .kds-participants {
6052
+ margin: 0 0 var(--kds-spacing-2);
6053
+ padding: var(--kds-spacing-1-5) var(--kds-spacing-1-75);
6054
+ background: var(--kds-alert-success-bg);
6055
+ border-radius: var(--kds-radius-md);
6056
+ }
6057
+
6058
+ .kds-participants-label {
6059
+ font-size: var(--kds-font-size-xs);
6060
+ font-weight: var(--kds-font-weight-bold);
6061
+ color: var(--kds-alert-success-text);
6062
+ margin: 0 0 var(--kds-spacing-0-75);
6063
+ text-transform: uppercase;
6064
+ letter-spacing: var(--kds-letter-spacing-wide);
6065
+ }
6066
+
6067
+ .kds-participants-list {
6068
+ margin: 0;
6069
+ padding-left: var(--kds-spacing-2);
6070
+ color: var(--kds-alert-success-text);
6071
+ font-size: var(--kds-font-size-sm);
6072
+ line-height: var(--kds-line-height-relaxed);
6073
+ }
6074
+
5891
6075
  /* ================================================================
5892
6076
  PAYMENT FLOW LAYOUT
5893
6077
  Stage, flow container, brand row, screen transitions
@@ -5930,6 +6114,7 @@ button.kds-btn-success::after {
5930
6114
  /* Mobile: Cards full-width with rounded corners */
5931
6115
  @media (max-width: 767px) {
5932
6116
  .kds-payment-stage {
6117
+ padding-top: 0;
5933
6118
  padding-left: 0;
5934
6119
  padding-right: 0;
5935
6120
  }
@@ -5939,7 +6124,7 @@ button.kds-btn-success::after {
5939
6124
  padding: 0;
5940
6125
  }
5941
6126
 
5942
- /* Cards: rounded corners, full width within padded stage */
6127
+ /* Cards: rounded corners, full width, explicit vertical padding */
5943
6128
  .kds-card-elevated,
5944
6129
  .khipu-card-elevated {
5945
6130
  margin-left: 0;
@@ -5948,6 +6133,18 @@ button.kds-btn-success::after {
5948
6133
  width: 100%;
5949
6134
  }
5950
6135
 
6136
+ .kds-payment-flow .kds-card-elevated {
6137
+ padding-top: var(--kds-spacing-2);
6138
+ padding-bottom: var(--kds-spacing-2);
6139
+ }
6140
+
6141
+ /* Invoice sticky card: progressive padding-top (expanded 20px → collapsed 8px).
6142
+ Overrides base rule at same specificity; source order wins here. */
6143
+ .kds-payment-flow .kds-card-elevated.kds-invoice-sticky {
6144
+ padding-top: var(--kds-spacing-1-5);
6145
+ }
6146
+
6147
+
5951
6148
  }
5952
6149
 
5953
6150
  /* Desktop: restore card padding and full border-radius on invoice sticky */
@@ -5995,6 +6192,7 @@ button.kds-btn-success::after {
5995
6192
  .kds-brand-inner {
5996
6193
  display: flex;
5997
6194
  }
6195
+
5998
6196
  }
5999
6197
 
6000
6198
  /* Screen transitions (multi-step flows) */
@@ -6008,8 +6206,8 @@ button.kds-btn-success::after {
6008
6206
  gap: var(--kds-spacing-3);
6009
6207
  }
6010
6208
  @keyframes kds-fadein {
6011
- from { opacity: 0; transform: translateY(var(--kds-spacing-0-5)); }
6012
- to { opacity: 1; transform: none; }
6209
+ from { opacity: 0; }
6210
+ to { opacity: 1; }
6013
6211
  }
6014
6212
 
6015
6213
  /* ================================================================