@khipu/design-system 0.1.0-alpha.31 → 0.1.0-alpha.32

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-04-01T17:47:56.079Z
14
+ * Generated: 2026-04-06T17:40:39.111Z
15
15
  *
16
16
  * To regenerate:
17
17
  * cd design-system && npm run tokens:generate
@@ -895,20 +895,9 @@ a.kds-btn.kds-btn-md {
895
895
  box-shadow: var(--kds-shadow-6);
896
896
  }
897
897
 
898
- /* Main content card (centered, max-width) */
899
- .kds-card-main {
900
- background: var(--kds-color-background-paper);
901
- border-radius: var(--kds-radius-md);
902
- padding: var(--kds-spacing-2);
903
- max-width: 800px;
904
- margin: var(--kds-spacing-3) auto;
905
- box-shadow: var(--kds-shadow-card);
906
- }
907
-
908
898
  @media (max-width: 768px) {
909
899
  .kds-card-elevated,
910
- .khipu-card-elevated,
911
- .kds-card-main {
900
+ .khipu-card-elevated {
912
901
  padding: var(--kds-spacing-3);
913
902
  border-radius: var(--kds-radius-md);
914
903
  }
@@ -916,8 +905,7 @@ a.kds-btn.kds-btn-md {
916
905
 
917
906
  @media (max-width: 480px) {
918
907
  .kds-card-elevated,
919
- .khipu-card-elevated,
920
- .kds-card-main {
908
+ .khipu-card-elevated {
921
909
  padding: var(--kds-spacing-2);
922
910
  }
923
911
  }
@@ -989,8 +977,8 @@ a.kds-btn.kds-btn-md {
989
977
  position: relative;
990
978
  display: flex;
991
979
  flex-direction: column;
992
- gap: var(--kds-spacing-6);
993
- padding: var(--kds-spacing-8);
980
+ gap: var(--kds-spacing-2);
981
+ padding: var(--kds-spacing-4);
994
982
  border-radius: var(--kds-radius-lg);
995
983
  border: 2px solid var(--kds-border-medium);
996
984
  max-width: 400px; /* Increased from 365px for better text spacing */
@@ -1007,7 +995,7 @@ a.kds-btn.kds-btn-md {
1007
995
  }
1008
996
 
1009
997
  /* Recommended Plan */
1010
- .kds-card-plan.recommended {
998
+ .recommended {
1011
999
  border-color: var(--primary);
1012
1000
  background: linear-gradient(to bottom, rgba(131, 71, 173, 0.05), var(--kds-surface-base));
1013
1001
  box-shadow: var(--kds-shadow-elevation-3);
@@ -1109,36 +1097,6 @@ a.kds-btn.kds-btn-md {
1109
1097
  color: var(--kds-text-disabled);
1110
1098
  }
1111
1099
 
1112
- /* Verification/Status card (from onboarding patterns) */
1113
- .kds-card-status {
1114
- display: flex;
1115
- align-items: center;
1116
- justify-content: space-between;
1117
- padding: 10px 20px;
1118
- min-height: 80px;
1119
- border-radius: 6px;
1120
- border: 1px solid var(--kds-border-light);
1121
- gap: var(--kds-spacing-4);
1122
- background: var(--kds-surface-base);
1123
- transition: background 0.2s ease;
1124
- }
1125
-
1126
- .kds-card-status.muted {
1127
- border-color: transparent;
1128
- background: var(--kds-surface-elevated);
1129
- }
1130
-
1131
- .kds-card-status .status-icon {
1132
- flex-shrink: 0;
1133
- font-size: 24px;
1134
- min-width: 24px;
1135
- min-height: 24px;
1136
- }
1137
-
1138
- .kds-card-status .status-content {
1139
- flex: 1;
1140
- }
1141
-
1142
1100
  /* Card sections (header, body, footer) */
1143
1101
  .kds-card-header {
1144
1102
  margin-bottom: var(--kds-spacing-3);
@@ -1867,173 +1825,6 @@ body.dark {
1867
1825
  color: var(--primary);
1868
1826
  }
1869
1827
 
1870
- /* ========================================
1871
- Snackbar Components (Material Design 3)
1872
- Floating notifications at bottom of screen
1873
- ======================================== */
1874
-
1875
- /* Base snackbar - extends BeerCSS .snackbar */
1876
- .kds-snackbar {
1877
- position: fixed;
1878
- bottom: var(--kds-spacing-3);
1879
- left: 50%;
1880
- transform: translateX(-50%);
1881
- z-index: var(--kds-z-index-snackbar);
1882
-
1883
- /* Layout */
1884
- display: flex;
1885
- align-items: center;
1886
- gap: var(--kds-spacing-2);
1887
-
1888
- /* Sizing */
1889
- min-width: 344px;
1890
- max-width: 672px;
1891
- padding: var(--kds-spacing-2) var(--kds-spacing-3);
1892
-
1893
- /* Styling */
1894
- border-radius: var(--kds-radius-sm);
1895
- box-shadow: var(--kds-shadow-8);
1896
-
1897
- /* Typography */
1898
- font-family: var(--kds-font-family-primary);
1899
- font-size: var(--kds-font-size-sm);
1900
- font-weight: var(--kds-font-weight-medium);
1901
- line-height: var(--kds-line-height-normal);
1902
-
1903
- /* Animation */
1904
- animation: kds-snackbar-in 0.3s cubic-bezier(0.4, 0, 0.2, 1);
1905
- }
1906
-
1907
- /* Snackbar animation */
1908
- @keyframes kds-snackbar-in {
1909
- from {
1910
- transform: translateX(-50%) translateY(100px);
1911
- opacity: 0;
1912
- }
1913
- to {
1914
- transform: translateX(-50%) translateY(0);
1915
- opacity: 1;
1916
- }
1917
- }
1918
-
1919
- /* Icon */
1920
- .kds-snackbar-icon {
1921
- flex-shrink: 0;
1922
- font-size: var(--kds-spacing-button-icon-size);
1923
- min-width: var(--kds-spacing-button-icon-size);
1924
- min-height: var(--kds-spacing-button-icon-size);
1925
- }
1926
-
1927
- /* Content */
1928
- .kds-snackbar-content {
1929
- flex: 1;
1930
- min-width: 0;
1931
- }
1932
-
1933
- /* Action button (optional) */
1934
- .kds-snackbar-action {
1935
- flex-shrink: 0;
1936
- }
1937
-
1938
- /* Snackbar Variants */
1939
- .kds-snackbar.kds-success {
1940
- background: var(--kds-snackbar-success-bg);
1941
- border: 1px solid var(--kds-color-success-main);
1942
- color: var(--kds-color-success-dark);
1943
- }
1944
-
1945
- .kds-snackbar.kds-success .kds-snackbar-icon {
1946
- color: var(--kds-color-success-dark);
1947
- }
1948
-
1949
- .kds-snackbar.kds-success .kds-snackbar-action button,
1950
- .kds-snackbar.kds-success .kds-snackbar-action .kds-btn {
1951
- color: var(--kds-color-success-dark);
1952
- }
1953
-
1954
- .kds-snackbar.kds-warning {
1955
- background: var(--kds-snackbar-warning-bg);
1956
- border: 1px solid var(--kds-color-warning-main);
1957
- color: var(--kds-color-warning-dark);
1958
- }
1959
-
1960
- .kds-snackbar.kds-warning .kds-snackbar-icon {
1961
- color: var(--kds-color-warning-dark);
1962
- }
1963
-
1964
- .kds-snackbar.kds-warning .kds-snackbar-action button,
1965
- .kds-snackbar.kds-warning .kds-snackbar-action .kds-btn {
1966
- color: var(--kds-color-warning-dark);
1967
- }
1968
-
1969
- .kds-snackbar.kds-error {
1970
- background: var(--kds-snackbar-error-bg);
1971
- border: 1px solid var(--kds-color-error-main);
1972
- color: var(--kds-color-error-dark);
1973
- }
1974
-
1975
- .kds-snackbar.kds-error .kds-snackbar-icon {
1976
- color: var(--kds-color-error-dark);
1977
- }
1978
-
1979
- .kds-snackbar.kds-error .kds-snackbar-action button,
1980
- .kds-snackbar.kds-error .kds-snackbar-action .kds-btn {
1981
- color: var(--kds-color-error-dark);
1982
- }
1983
-
1984
- .kds-snackbar.kds-info {
1985
- background: var(--kds-snackbar-info-bg);
1986
- border: 1px solid var(--kds-color-info-main);
1987
- color: var(--kds-color-info-dark);
1988
- }
1989
-
1990
- .kds-snackbar.kds-info .kds-snackbar-icon {
1991
- color: var(--kds-color-info-dark);
1992
- }
1993
-
1994
- .kds-snackbar.kds-info .kds-snackbar-action button,
1995
- .kds-snackbar.kds-info .kds-snackbar-action .kds-btn {
1996
- color: var(--kds-color-info-dark);
1997
- }
1998
-
1999
- /* Static variant for showcase/demo purposes */
2000
- .kds-snackbar.static {
2001
- position: relative;
2002
- left: auto;
2003
- bottom: auto;
2004
- transform: none;
2005
- margin-bottom: var(--kds-spacing-3);
2006
- animation: none;
2007
- }
2008
-
2009
- /* Top position variant - for notifications that should appear at top */
2010
- .kds-snackbar-top {
2011
- top: var(--kds-spacing-4);
2012
- bottom: auto;
2013
- }
2014
-
2015
- /* Mobile responsive */
2016
- @media (max-width: 768px) {
2017
- .kds-snackbar {
2018
- min-width: calc(100vw - var(--kds-spacing-4));
2019
- max-width: calc(100vw - var(--kds-spacing-4));
2020
- left: var(--kds-spacing-2);
2021
- right: var(--kds-spacing-2);
2022
- transform: translateX(0);
2023
- }
2024
-
2025
- @keyframes kds-snackbar-in {
2026
- from {
2027
- transform: translateY(100px);
2028
- opacity: 0;
2029
- }
2030
- to {
2031
- transform: translateY(0);
2032
- opacity: 1;
2033
- }
2034
- }
2035
- }
2036
-
2037
1828
  /* ========================================
2038
1829
  TOOLTIPS - Personaliza Beer CSS .tooltip
2039
1830
  ======================================== */
@@ -2110,52 +1901,11 @@ body.dark {
2110
1901
  max-width: 800px;
2111
1902
  }
2112
1903
 
2113
- /* Status card content styling */
2114
- .kds-card-status .status-content strong {
2115
- display: block;
2116
- font-weight: var(--kds-font-weight-semibold);
2117
- margin-bottom: var(--kds-spacing-1);
2118
- }
2119
-
2120
- .kds-card-status .status-content p {
2121
- margin: 0;
2122
- font-size: var(--kds-font-size-sm);
2123
- color: var(--on-surface-variant, rgba(0, 0, 0, 0.60));
2124
- }
2125
-
2126
- /* Status icon colors */
2127
- .kds-card-status .status-icon.success {
2128
- color: var(--kds-color-success);
2129
- }
2130
-
2131
- .kds-card-status .status-icon.warning {
2132
- color: var(--kds-color-warning);
2133
- }
2134
-
2135
- .kds-card-status .status-icon.error {
2136
- color: var(--kds-color-error);
2137
- }
2138
-
2139
- .kds-card-status .status-icon.info {
2140
- color: var(--kds-color-info);
2141
- }
2142
-
2143
1904
  /* Card action buttons full width */
2144
- .kds-card-flow button,
2145
1905
  .kds-card-plan button {
2146
1906
  width: 100%;
2147
1907
  }
2148
1908
 
2149
- /* Flow card content spacing */
2150
- .kds-card-flow h3 {
2151
- margin-top: 0;
2152
- }
2153
-
2154
- .kds-card-flow ul {
2155
- margin: var(--kds-spacing-4) 0;
2156
- padding-left: var(--kds-spacing-5);
2157
- }
2158
-
2159
1909
  /* Plan card title */
2160
1910
  .kds-card-plan h3 {
2161
1911
  margin: 0;
@@ -2232,68 +1982,6 @@ label.radio:has(input:disabled) {
2232
1982
  Multi-stage onboarding flow with form validation
2233
1983
  ======================================== */
2234
1984
 
2235
- /* Onboarding Container - Main wrapper for all stages */
2236
- .kds-onboarding-container {
2237
- display: flex;
2238
- flex-direction: column;
2239
- min-height: 100vh;
2240
- background: var(--kds-surface-background);
2241
- }
2242
-
2243
- /* Onboarding Header - Contains stepper and progress */
2244
- .kds-onboarding-header {
2245
- background: var(--kds-color-background-paper);
2246
- border-bottom: 1px solid var(--kds-border-light);
2247
- position: sticky;
2248
- top: 0;
2249
- z-index: 100;
2250
- }
2251
-
2252
- /* Onboarding Main - Content area */
2253
- .kds-onboarding-main {
2254
- flex: 1 0 auto;
2255
- display: flex;
2256
- flex-direction: column;
2257
- padding: var(--kds-onboarding-padding);
2258
- }
2259
-
2260
- /* Onboarding Footer - Action buttons */
2261
- .kds-onboarding-footer {
2262
- flex-shrink: 0;
2263
- background: var(--kds-color-background-paper);
2264
- border-top: 1px solid var(--kds-border-light);
2265
- padding: var(--kds-spacing-4) var(--kds-spacing-6);
2266
- display: flex;
2267
- justify-content: space-between;
2268
- align-items: center;
2269
- gap: var(--kds-spacing-3);
2270
- position: sticky;
2271
- bottom: 0;
2272
- z-index: 100;
2273
- }
2274
-
2275
- .kds-onboarding-footer .button-group {
2276
- display: flex;
2277
- gap: var(--kds-spacing-3);
2278
- align-items: center;
2279
- }
2280
-
2281
- @media (max-width: 768px) {
2282
- .kds-onboarding-footer {
2283
- flex-direction: column;
2284
- align-items: stretch;
2285
- }
2286
-
2287
- .kds-onboarding-footer .button-group {
2288
- width: 100%;
2289
- flex-direction: column;
2290
- }
2291
-
2292
- .kds-onboarding-footer button {
2293
- width: 100% !important;
2294
- }
2295
- }
2296
-
2297
1985
  /* Stage Layout - Individual stage wrapper */
2298
1986
  .kds-stage {
2299
1987
  max-width: var(--kds-onboarding-max-width);
@@ -2360,538 +2048,52 @@ label.radio:has(input:disabled) {
2360
2048
  }
2361
2049
 
2362
2050
  /* ========================================
2363
- FILE UPLOAD COMPONENT
2364
- Drag-and-drop file upload with preview
2051
+ MODAL BASE CONFIGURATION
2052
+ Override BeerCSS modal defaults
2365
2053
  ======================================== */
2366
2054
 
2367
- .kds-file-upload {
2368
- width: 100%;
2369
- }
2370
-
2371
- /* Upload Zone - Drag and drop area */
2372
- .kds-file-upload-zone {
2373
- border: 2px dashed var(--kds-upload-zone-border);
2374
- border-radius: var(--kds-radius-lg);
2375
- background: var(--kds-upload-zone-bg);
2376
- padding: var(--kds-spacing-8);
2377
- text-align: center;
2378
- cursor: pointer;
2379
- transition: all 0.3s ease;
2380
- position: relative;
2381
- }
2382
-
2383
- .kds-file-upload-zone:hover {
2384
- border-color: var(--kds-upload-zone-border-hover);
2385
- background: #F3F4F6;
2386
- }
2387
-
2388
- .kds-file-upload-zone.dragover {
2389
- border-color: var(--kds-upload-zone-border-drag);
2390
- background: var(--kds-color-primary-50);
2391
- box-shadow: 0 0 0 4px rgba(131, 71, 173, 0.1);
2392
- }
2393
-
2394
- .kds-file-upload-zone.error {
2395
- border-color: var(--kds-upload-zone-border-error);
2396
- background: var(--kds-alert-error-bg);
2397
- }
2398
-
2399
- .kds-file-upload-zone.success {
2400
- border-color: var(--kds-upload-zone-border-success);
2401
- background: var(--kds-alert-success-bg);
2402
- }
2403
-
2404
- /* Upload zone content */
2405
- .kds-file-upload-icon {
2406
- font-size: 48px;
2407
- min-width: 48px;
2408
- min-height: 48px;
2409
- color: #9CA3AF;
2410
- margin-bottom: var(--kds-spacing-3);
2411
- }
2412
-
2413
- .kds-file-upload-zone.dragover .kds-file-upload-icon {
2414
- color: var(--kds-color-primary-500);
2415
- }
2416
-
2417
- .kds-file-upload-text {
2418
- font-size: var(--kds-font-size-base);
2419
- font-weight: var(--kds-font-weight-medium);
2420
- color: var(--kds-color-text-primary);
2421
- margin-bottom: var(--kds-spacing-2);
2422
- }
2423
-
2424
- .kds-file-upload-button {
2425
- color: var(--primary);
2426
- text-decoration: underline;
2427
- cursor: pointer;
2428
- font-weight: 600;
2429
- }
2430
-
2431
- .kds-file-upload-button:hover {
2432
- color: var(--kds-color-primary-700);
2433
- }
2434
-
2435
- .kds-file-upload-helper {
2436
- font-size: var(--kds-font-size-sm);
2437
- color: var(--kds-color-text-secondary);
2438
- display: block;
2439
- margin-top: var(--kds-spacing-1);
2440
- }
2441
-
2442
- .kds-file-upload-hint {
2443
- font-size: var(--kds-font-size-sm);
2444
- color: var(--kds-color-text-secondary);
2055
+ dialog.modal {
2056
+ background: var(--kds-modal-bg);
2057
+ border: none;
2058
+ border-radius: var(--kds-modal-border-radius);
2059
+ padding: var(--kds-modal-padding);
2060
+ max-width: var(--kds-modal-max-width);
2061
+ box-shadow: var(--kds-modal-shadow);
2062
+ z-index: 1000;
2445
2063
  }
2446
2064
 
2447
- /* Hidden file input */
2448
- .kds-file-upload input[type="file"] {
2449
- display: none;
2450
- }
2451
-
2452
- /* File Preview Area */
2453
- .kds-file-upload-preview {
2454
- margin-top: var(--kds-spacing-4);
2455
- display: flex;
2456
- flex-direction: column;
2457
- gap: var(--kds-spacing-3);
2458
- }
2459
-
2460
- /* Individual File Item */
2461
- .kds-file-upload-item {
2462
- display: flex;
2463
- align-items: center;
2464
- gap: var(--kds-spacing-3);
2465
- padding: var(--kds-spacing-3);
2466
- background: var(--kds-upload-item-bg);
2467
- border: 1px solid var(--kds-upload-item-border);
2468
- border-radius: var(--kds-radius-md);
2469
- transition: all 0.2s ease;
2470
- }
2471
-
2472
- .kds-file-upload-item:hover {
2473
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
2474
- }
2475
-
2476
- /* File icon */
2477
- .kds-file-upload-item-icon {
2478
- flex-shrink: 0;
2479
- width: 40px;
2480
- height: 40px;
2481
- min-width: 40px;
2482
- min-height: 40px;
2483
- display: flex;
2484
- align-items: center;
2485
- justify-content: center;
2486
- background: var(--kds-color-primary-50);
2487
- border-radius: var(--kds-radius-md);
2488
- color: var(--kds-color-primary-500);
2489
- font-size: 20px;
2490
- }
2491
-
2492
- .kds-file-upload-item-icon i {
2493
- min-width: 20px;
2494
- min-height: 20px;
2495
- }
2496
-
2497
- /* File info */
2498
- .kds-file-upload-item-info {
2499
- flex: 1;
2500
- min-width: 0;
2501
- }
2502
-
2503
- .kds-file-upload-item-name {
2504
- font-size: var(--kds-font-size-sm);
2505
- font-weight: var(--kds-font-weight-medium);
2506
- color: var(--kds-color-text-primary);
2507
- white-space: nowrap;
2508
- overflow: hidden;
2509
- text-overflow: ellipsis;
2510
- }
2511
-
2512
- .kds-file-upload-item-meta {
2513
- font-size: var(--kds-font-size-xs);
2514
- color: var(--kds-color-text-secondary);
2515
- margin-top: 2px;
2516
- }
2517
-
2518
- .kds-file-upload-item-size {
2519
- font-size: var(--kds-font-size-xs);
2520
- color: var(--kds-color-text-secondary);
2521
- margin-top: 2px;
2522
- }
2523
-
2524
- /* File status */
2525
- .kds-file-upload-item-status {
2526
- flex-shrink: 0;
2527
- font-size: 20px;
2528
- }
2529
-
2530
- .kds-file-upload-item-status.success {
2531
- color: var(--kds-color-success);
2532
- }
2533
-
2534
- .kds-file-upload-item-status.error {
2535
- color: var(--kds-color-error);
2536
- }
2537
-
2538
- .kds-file-upload-item-status.uploading {
2539
- color: var(--kds-color-info);
2540
- }
2541
-
2542
- /* Remove button */
2543
- .kds-file-upload-item-remove {
2544
- flex-shrink: 0;
2545
- background: transparent;
2546
- border: none;
2547
- color: #9CA3AF;
2548
- cursor: pointer;
2549
- padding: var(--kds-spacing-1);
2550
- border-radius: var(--kds-radius-sm);
2551
- transition: all 0.2s ease;
2552
- font-size: 20px;
2553
- display: flex;
2554
- align-items: center;
2555
- justify-content: center;
2556
- }
2557
-
2558
- .kds-file-upload-item-remove:hover {
2559
- background: var(--kds-alert-error-bg);
2560
- color: var(--kds-color-error);
2561
- }
2562
-
2563
- /* Progress bar (for async uploads) */
2564
- .kds-file-upload-progress {
2565
- height: 4px;
2566
- background: var(--kds-color-background-elevated);
2567
- border-radius: 2px;
2568
- overflow: hidden;
2569
- margin-top: var(--kds-spacing-2);
2570
- }
2571
-
2572
- .kds-file-upload-progress-bar {
2573
- height: 100%;
2574
- background: var(--kds-color-primary-500);
2575
- transition: width 0.3s ease;
2576
- }
2577
-
2578
- /* ========================================
2579
- OTP INPUT COMPONENT
2580
- 6-digit one-time password input
2581
- ======================================== */
2582
-
2583
- .kds-otp-input {
2584
- display: flex;
2585
- justify-content: center;
2586
- gap: var(--kds-spacing-3);
2587
- margin: var(--kds-spacing-6) 0;
2588
- }
2589
-
2590
- .kds-otp-digit {
2591
- width: var(--kds-otp-digit-size);
2592
- height: var(--kds-otp-digit-height);
2593
- font-size: var(--kds-font-size-2xl);
2594
- font-weight: var(--kds-font-weight-bold);
2595
- text-align: center;
2596
- border: 2px solid var(--kds-otp-digit-border);
2597
- border-radius: var(--kds-radius-md);
2598
- background: var(--kds-otp-digit-bg);
2599
- transition: all 0.2s ease;
2600
- outline: none;
2601
- color: var(--kds-color-text-primary);
2602
- }
2603
-
2604
- .kds-otp-digit:focus {
2605
- border-color: var(--kds-otp-digit-border-focus);
2606
- box-shadow: 0 0 0 3px rgba(59, 130, 246, 0.1);
2607
- }
2608
-
2609
- .kds-otp-digit:not(:placeholder-shown) {
2610
- background: var(--kds-otp-digit-bg-filled);
2611
- border-color: var(--kds-color-success);
2612
- }
2613
-
2614
- .kds-otp-digit.error {
2615
- border-color: var(--kds-color-error);
2616
- background: var(--kds-alert-error-bg);
2617
- }
2618
-
2619
- /* Mobile responsive */
2620
- @media (max-width: 480px) {
2621
- .kds-otp-input {
2622
- gap: var(--kds-spacing-2);
2623
- }
2624
-
2625
- .kds-otp-digit {
2626
- width: 48px;
2627
- height: 56px;
2628
- font-size: var(--kds-font-size-xl);
2629
- }
2630
- }
2631
-
2632
- /* ========================================
2633
- BANK SELECTOR GRID
2634
- Grid of selectable bank cards
2635
- ======================================== */
2636
-
2637
- .kds-bank-grid {
2638
- display: grid;
2639
- grid-template-columns: repeat(auto-fill, minmax(120px, 1fr));
2640
- gap: var(--kds-spacing-4);
2641
- margin: var(--kds-spacing-4) 0;
2642
- }
2643
-
2644
- @media (max-width: 768px) {
2645
- .kds-bank-grid {
2646
- grid-template-columns: repeat(auto-fill, minmax(100px, 1fr));
2647
- gap: var(--kds-spacing-3);
2648
- }
2649
- }
2650
-
2651
- @media (max-width: 480px) {
2652
- .kds-bank-grid {
2653
- grid-template-columns: repeat(3, minmax(0, 1fr));
2654
- gap: var(--kds-spacing-2);
2655
- }
2656
- }
2657
-
2658
- /* Individual Bank Item */
2659
- .kds-bank-item {
2660
- aspect-ratio: 1;
2661
- display: flex;
2662
- flex-direction: column;
2663
- align-items: center;
2664
- justify-content: center;
2665
- padding: var(--kds-spacing-3);
2666
- border: 2px solid var(--kds-bank-item-border);
2667
- border-radius: var(--kds-radius-lg);
2668
- background: var(--kds-color-background-paper);
2669
- cursor: pointer;
2670
- transition: all 0.3s ease;
2671
- position: relative;
2672
- }
2673
-
2674
- .kds-bank-item:hover {
2675
- border-color: var(--kds-bank-item-border-hover);
2676
- background: var(--kds-bank-item-bg-hover);
2677
- box-shadow: 0 2px 4px rgba(0, 0, 0, 0.1);
2678
- }
2679
-
2680
- .kds-bank-item.selected {
2681
- border-color: var(--kds-bank-item-border-selected);
2682
- background: var(--kds-bank-item-bg-selected);
2683
- box-shadow: 0 4px 6px rgba(59, 130, 246, 0.2);
2684
- }
2685
-
2686
- /* Bank logo */
2687
- .kds-bank-item-logo {
2688
- width: 100%;
2689
- height: auto;
2690
- max-width: 80px;
2691
- margin-bottom: var(--kds-spacing-2);
2692
- object-fit: contain;
2693
- }
2694
-
2695
- /* Bank name */
2696
- .kds-bank-item-name {
2697
- font-size: var(--kds-font-size-xs);
2698
- font-weight: var(--kds-font-weight-medium);
2699
- color: var(--kds-color-text-primary);
2700
- text-align: center;
2701
- line-height: 1.3;
2702
- }
2703
-
2704
- /* Selected checkmark */
2705
- .kds-bank-item-check {
2706
- position: absolute;
2707
- top: 8px;
2708
- right: 8px;
2709
- width: 24px;
2710
- height: 24px;
2711
- background: var(--kds-color-primary-500);
2712
- border-radius: 50%;
2713
- display: none;
2714
- align-items: center;
2715
- justify-content: center;
2716
- color: white;
2717
- font-size: 14px;
2718
- }
2719
-
2720
- .kds-bank-item.selected .kds-bank-item-check {
2721
- display: flex;
2722
- }
2723
-
2724
- .kds-bank-item-check::after {
2725
- content: "✓";
2726
- font-weight: 700;
2727
- }
2728
-
2729
- /* Mobile adjustments */
2730
- @media (max-width: 480px) {
2731
- .kds-bank-item {
2732
- padding: var(--kds-spacing-2);
2733
- }
2734
-
2735
- .kds-bank-item-logo {
2736
- max-width: 60px;
2737
- }
2738
-
2739
- .kds-bank-item-name {
2740
- font-size: 10px;
2741
- }
2742
-
2743
- .kds-bank-item-check {
2744
- width: 20px;
2745
- height: 20px;
2746
- font-size: 12px;
2747
- top: 4px;
2748
- right: 4px;
2749
- }
2750
- }
2751
-
2752
- /* ========================================
2753
- MODAL BASE CONFIGURATION
2754
- Override BeerCSS modal defaults
2755
- ======================================== */
2756
-
2757
- dialog.modal {
2758
- background: var(--kds-modal-bg);
2759
- border: none;
2760
- border-radius: var(--kds-modal-border-radius);
2761
- padding: var(--kds-modal-padding);
2762
- max-width: var(--kds-modal-max-width);
2763
- box-shadow: var(--kds-modal-shadow);
2764
- z-index: 1000;
2765
- }
2766
-
2767
- dialog.modal::backdrop {
2768
- background: var(--kds-modal-backdrop);
2065
+ dialog.modal::backdrop {
2066
+ background: var(--kds-modal-backdrop);
2769
2067
  }
2770
2068
 
2771
2069
  /* ========================================
2772
2070
  MODAL FIELD STYLES
2773
2071
  Consistent input/select styling for all modals
2774
- ======================================== */
2775
-
2776
- dialog.modal .field {
2777
- margin-bottom: var(--kds-spacing-4);
2778
- box-sizing: border-box;
2779
- }
2780
-
2781
- dialog.modal .field.border {
2782
- border: var(--kds-border-width-sm) solid var(--kds-color-divider);
2783
- border-radius: var(--kds-radius-md);
2784
- background: var(--kds-color-background-paper);
2785
- padding: 0;
2786
- }
2787
-
2788
- dialog.modal .field.border select,
2789
- dialog.modal .field.border input {
2790
- font-size: var(--kds-font-size-md);
2791
- box-sizing: border-box;
2792
- }
2793
-
2794
- /* Focus state - use outline to prevent width change */
2795
- dialog.modal .field.border:focus-within {
2796
- outline: var(--kds-border-width-md) solid var(--kds-color-primary-main);
2797
- outline-offset: 0;
2798
- border-color: var(--kds-color-primary-main);
2799
- }
2800
-
2801
- /* ========================================
2802
- KYC BLOCKING MODAL
2803
- Warning modal for high-risk sectors
2804
- ======================================== */
2805
-
2806
- .kds-kyc-modal {
2807
- background: var(--kds-modal-bg);
2808
- border: none;
2809
- border-radius: var(--kds-modal-border-radius);
2810
- padding: var(--kds-modal-padding);
2811
- max-width: var(--kds-modal-max-width);
2812
- margin: 0 auto;
2813
- box-shadow: var(--kds-modal-shadow);
2814
- }
2815
-
2816
- .kds-kyc-modal-icon {
2817
- text-align: center;
2818
- margin-bottom: var(--kds-spacing-4);
2819
- }
2820
-
2821
- .kds-kyc-modal-icon i {
2822
- font-size: 64px;
2823
- min-width: 64px;
2824
- min-height: 64px;
2825
- color: var(--kds-modal-icon-warning);
2826
- }
2827
-
2828
- .kds-kyc-modal-title {
2829
- font-size: var(--kds-font-size-2xl);
2830
- font-weight: var(--kds-font-weight-bold);
2831
- color: var(--kds-modal-title-color);
2832
- text-align: center;
2833
- margin-bottom: var(--kds-spacing-4);
2834
- }
2835
-
2836
- .kds-kyc-modal-message {
2837
- font-size: var(--kds-font-size-base);
2838
- color: var(--kds-modal-text-color);
2839
- line-height: 1.6;
2840
- margin-bottom: var(--kds-spacing-6);
2841
- text-align: center;
2842
- }
2843
-
2844
- .kds-kyc-modal-contact {
2845
- background: var(--kds-surface-elevated);
2846
- border-radius: var(--kds-radius-md);
2847
- padding: var(--kds-spacing-4);
2848
- margin-bottom: var(--kds-spacing-6);
2849
- border-left: 4px solid var(--primary);
2850
- }
2851
-
2852
- .kds-kyc-modal-contact strong {
2853
- display: block;
2854
- font-weight: var(--kds-font-weight-semibold);
2855
- color: var(--kds-modal-title-color);
2856
- margin-bottom: var(--kds-spacing-2);
2857
- }
2858
-
2859
- .kds-kyc-modal-contact a {
2860
- color: var(--kds-color-primary-500);
2861
- text-decoration: none;
2862
- font-weight: var(--kds-font-weight-medium);
2863
- }
2072
+ ======================================== */
2864
2073
 
2865
- .kds-kyc-modal-contact a:hover {
2866
- text-decoration: underline;
2074
+ dialog.modal .field {
2075
+ margin-bottom: var(--kds-spacing-4);
2076
+ box-sizing: border-box;
2867
2077
  }
2868
2078
 
2869
- .kds-kyc-modal-actions {
2870
- display: flex;
2871
- gap: var(--kds-spacing-3);
2872
- justify-content: center;
2079
+ dialog.modal .field.border {
2080
+ border: var(--kds-border-width-sm) solid var(--kds-color-divider);
2081
+ border-radius: var(--kds-radius-md);
2082
+ background: var(--kds-color-background-paper);
2083
+ padding: 0;
2873
2084
  }
2874
2085
 
2875
- @media (max-width: 480px) {
2876
- .kds-kyc-modal,
2877
- dialog.modal {
2878
- padding: var(--kds-modal-padding-mobile);
2879
- max-width: var(--kds-modal-max-width-mobile);
2880
- }
2881
-
2882
- .kds-kyc-modal-icon i {
2883
- font-size: 48px;
2884
- min-width: 48px;
2885
- min-height: 48px;
2886
- }
2887
-
2888
- .kds-kyc-modal-actions {
2889
- flex-direction: column;
2890
- }
2086
+ dialog.modal .field.border select,
2087
+ dialog.modal .field.border input {
2088
+ font-size: var(--kds-font-size-md);
2089
+ box-sizing: border-box;
2090
+ }
2891
2091
 
2892
- .kds-kyc-modal-actions button {
2893
- width: 100% !important;
2894
- }
2092
+ /* Focus state - use outline to prevent width change */
2093
+ dialog.modal .field.border:focus-within {
2094
+ outline: var(--kds-border-width-md) solid var(--kds-color-primary-main);
2095
+ outline-offset: 0;
2096
+ border-color: var(--kds-color-primary-main);
2895
2097
  }
2896
2098
 
2897
2099
  /* ========================================
@@ -3091,49 +2293,6 @@ dialog.modal .field.border:focus-within {
3091
2293
  padding-left: var(--kds-spacing-5);
3092
2294
  }
3093
2295
 
3094
- /* ========================================
3095
- SIGNATURE PAD
3096
- Canvas-based signature capture
3097
- ======================================== */
3098
-
3099
- .kds-signature-pad {
3100
- width: 100%;
3101
- }
3102
-
3103
- .kds-signature-canvas-wrapper {
3104
- border: 2px solid var(--kds-signature-border);
3105
- border-radius: var(--kds-radius-md);
3106
- background: var(--kds-signature-bg);
3107
- padding: var(--kds-spacing-2);
3108
- margin-bottom: var(--kds-spacing-3);
3109
- }
3110
-
3111
- .kds-signature-canvas {
3112
- display: block;
3113
- width: 100%;
3114
- height: 200px;
3115
- border-radius: var(--kds-radius-sm);
3116
- cursor: crosshair;
3117
- touch-action: none;
3118
- }
3119
-
3120
- .kds-signature-actions {
3121
- display: flex;
3122
- gap: var(--kds-spacing-2);
3123
- justify-content: flex-end;
3124
- }
3125
-
3126
- .kds-signature-clear {
3127
- background: transparent !important;
3128
- color: var(--kds-color-text-secondary) !important;
3129
- border: 1px solid #D1D5DB !important;
3130
- }
3131
-
3132
- .kds-signature-clear:hover {
3133
- background: #F3F4F6 !important;
3134
- border-color: #9CA3AF !important;
3135
- }
3136
-
3137
2296
  /* Form Grid - 2-column responsive layout for forms */
3138
2297
  .kds-form-grid {
3139
2298
  display: grid;
@@ -3191,228 +2350,6 @@ dialog.modal .field.border:focus-within {
3191
2350
  border-radius: var(--kds-radius-md);
3192
2351
  }
3193
2352
 
3194
- /* ========================================
3195
- SUMMARY CARD (Review/Validation)
3196
- Used in validation stage to show user data
3197
- ======================================== */
3198
-
3199
- .kds-summary-card {
3200
- background: white;
3201
- border: 1px solid var(--kds-border-light);
3202
- border-radius: var(--kds-radius-lg);
3203
- padding: var(--kds-spacing-5);
3204
- margin-bottom: var(--kds-spacing-4);
3205
- }
3206
-
3207
- .kds-summary-card-header {
3208
- display: flex;
3209
- justify-content: space-between;
3210
- align-items: center;
3211
- margin-bottom: var(--kds-spacing-4);
3212
- padding-bottom: var(--kds-spacing-3);
3213
- border-bottom: 1px solid #F3F4F6;
3214
- }
3215
-
3216
- .kds-summary-card-title {
3217
- display: flex;
3218
- align-items: center;
3219
- gap: var(--kds-spacing-2);
3220
- font-size: var(--kds-font-size-lg);
3221
- font-weight: var(--kds-font-weight-semibold);
3222
- color: var(--kds-color-text-primary);
3223
- }
3224
-
3225
- .kds-summary-card-edit {
3226
- color: var(--primary);
3227
- text-decoration: none;
3228
- font-size: var(--kds-font-size-sm);
3229
- font-weight: var(--kds-font-weight-medium);
3230
- display: flex;
3231
- align-items: center;
3232
- gap: 4px;
3233
- transition: opacity 0.2s ease;
3234
- }
3235
-
3236
- .kds-summary-card-edit:hover {
3237
- text-decoration: underline;
3238
- opacity: 0.8;
3239
- }
3240
-
3241
- .kds-summary-row {
3242
- display: flex;
3243
- padding: var(--kds-spacing-2) 0;
3244
- }
3245
-
3246
- .kds-summary-label {
3247
- flex: 0 0 140px;
3248
- font-size: var(--kds-font-size-sm);
3249
- font-weight: var(--kds-font-weight-medium);
3250
- color: var(--kds-color-text-secondary);
3251
- }
3252
-
3253
- .kds-summary-value {
3254
- flex: 1;
3255
- font-size: var(--kds-font-size-sm);
3256
- color: var(--kds-color-text-primary);
3257
- }
3258
-
3259
- .kds-summary-value.badge {
3260
- display: inline-block;
3261
- padding: 4px 12px;
3262
- background: var(--kds-color-primary-100);
3263
- color: var(--primary);
3264
- border-radius: var(--kds-radius-full);
3265
- font-weight: var(--kds-font-weight-medium);
3266
- }
3267
-
3268
- /* ========================================
3269
- SUCCESS PAGE COMPONENTS
3270
- Celebration/completion page layout
3271
- ======================================== */
3272
-
3273
- .kds-success-container {
3274
- display: flex;
3275
- flex-direction: column;
3276
- align-items: center;
3277
- justify-content: center;
3278
- min-height: 80vh;
3279
- text-align: center;
3280
- padding: var(--kds-spacing-8);
3281
- }
3282
-
3283
- .kds-success-icon {
3284
- width: 120px;
3285
- height: 120px;
3286
- background: #ECFDF5;
3287
- border-radius: 50%;
3288
- display: flex;
3289
- align-items: center;
3290
- justify-content: center;
3291
- margin-bottom: var(--kds-spacing-6);
3292
- animation: scaleIn 0.5s ease-out;
3293
- }
3294
-
3295
- @keyframes scaleIn {
3296
- from {
3297
- transform: scale(0);
3298
- opacity: 0;
3299
- }
3300
- to {
3301
- transform: scale(1);
3302
- opacity: 1;
3303
- }
3304
- }
3305
-
3306
- .kds-success-icon i {
3307
- font-size: 80px;
3308
- min-width: 80px;
3309
- min-height: 80px;
3310
- color: var(--kds-color-success);
3311
- }
3312
-
3313
- .kds-success-title {
3314
- font-size: var(--kds-font-size-3xl);
3315
- font-weight: var(--kds-font-weight-bold);
3316
- color: var(--kds-color-text-primary);
3317
- margin-bottom: var(--kds-spacing-3);
3318
- }
3319
-
3320
- .kds-success-subtitle {
3321
- font-size: var(--kds-font-size-lg);
3322
- color: var(--kds-color-text-secondary);
3323
- margin-bottom: var(--kds-spacing-8);
3324
- max-width: 600px;
3325
- }
3326
-
3327
- .kds-next-steps {
3328
- background: white;
3329
- border: 1px solid var(--kds-border-light);
3330
- border-radius: var(--kds-radius-xl);
3331
- padding: var(--kds-spacing-6);
3332
- max-width: 700px;
3333
- width: 100%;
3334
- margin-bottom: var(--kds-spacing-6);
3335
- text-align: left;
3336
- }
3337
-
3338
- .kds-next-steps-title {
3339
- font-size: var(--kds-font-size-xl);
3340
- font-weight: var(--kds-font-weight-semibold);
3341
- color: var(--kds-color-text-primary);
3342
- margin-bottom: var(--kds-spacing-4);
3343
- display: flex;
3344
- align-items: center;
3345
- gap: var(--kds-spacing-2);
3346
- }
3347
-
3348
- .kds-step-item {
3349
- display: flex;
3350
- gap: var(--kds-spacing-3);
3351
- padding: var(--kds-spacing-3) 0;
3352
- border-bottom: 1px solid #F3F4F6;
3353
- }
3354
-
3355
- .kds-step-item:last-child {
3356
- border-bottom: none;
3357
- }
3358
-
3359
- .kds-step-number {
3360
- flex-shrink: 0;
3361
- width: 32px;
3362
- height: 32px;
3363
- background: var(--kds-color-primary-100);
3364
- color: var(--primary);
3365
- border-radius: 50%;
3366
- display: flex;
3367
- align-items: center;
3368
- justify-content: center;
3369
- font-weight: var(--kds-font-weight-semibold);
3370
- font-size: var(--kds-font-size-sm);
3371
- }
3372
-
3373
- .kds-step-content {
3374
- flex: 1;
3375
- }
3376
-
3377
- .kds-step-title {
3378
- font-size: var(--kds-font-size-base);
3379
- font-weight: var(--kds-font-weight-semibold);
3380
- color: var(--kds-color-text-primary);
3381
- margin-bottom: 4px;
3382
- }
3383
-
3384
- .kds-step-description {
3385
- font-size: var(--kds-font-size-sm);
3386
- color: var(--kds-color-text-secondary);
3387
- line-height: 1.5;
3388
- }
3389
-
3390
- .kds-success-actions {
3391
- display: flex;
3392
- gap: var(--kds-spacing-3);
3393
- flex-wrap: wrap;
3394
- justify-content: center;
3395
- }
3396
-
3397
- @media (max-width: 768px) {
3398
- .kds-success-title {
3399
- font-size: var(--kds-font-size-2xl);
3400
- }
3401
-
3402
- .kds-success-subtitle {
3403
- font-size: var(--kds-font-size-base);
3404
- }
3405
-
3406
- .kds-success-actions {
3407
- flex-direction: column;
3408
- width: 100%;
3409
- }
3410
-
3411
- .kds-success-actions button {
3412
- width: 100%;
3413
- }
3414
- }
3415
-
3416
2353
  /* ========================================
3417
2354
  Responsive Utilities
3418
2355
  ======================================== */
@@ -4017,11 +2954,6 @@ footer > .kds-container-center {
4017
2954
  font-weight: var(--kds-font-weight-semibold);
4018
2955
  }
4019
2956
 
4020
- /* Layout con espacio para topbar */
4021
- .kds-page-layout {
4022
- padding-top: var(--kds-spacing-7);
4023
- }
4024
-
4025
2957
  /* Sidebar = drawer full-width */
4026
2958
  .kds-sidebar {
4027
2959
  position: fixed;
@@ -4609,50 +3541,6 @@ dialog#surveyModal button.circle {
4609
3541
  line-height: var(--kds-line-height-relaxed);
4610
3542
  }
4611
3543
 
4612
- /* ========================================
4613
- SUMMARY CARD (Validation page)
4614
- ======================================== */
4615
-
4616
- .kds-summary-card {
4617
- background: var(--kds-color-background-paper);
4618
- border: 1px solid var(--kds-color-divider);
4619
- border-radius: var(--kds-radius-lg);
4620
- padding: var(--kds-spacing-5);
4621
- margin-bottom: var(--kds-spacing-4);
4622
- }
4623
-
4624
- .kds-summary-card-header {
4625
- display: flex;
4626
- justify-content: space-between;
4627
- align-items: center;
4628
- margin-bottom: var(--kds-spacing-4);
4629
- padding-bottom: var(--kds-spacing-3);
4630
- border-bottom: 1px solid var(--kds-color-divider);
4631
- }
4632
-
4633
- .kds-summary-card-title {
4634
- font-size: var(--kds-font-size-lg);
4635
- font-weight: var(--kds-font-weight-semibold);
4636
- color: var(--kds-color-text-primary);
4637
- }
4638
-
4639
- .kds-summary-card-row {
4640
- display: flex;
4641
- justify-content: space-between;
4642
- padding: var(--kds-spacing-2) 0;
4643
- }
4644
-
4645
- .kds-summary-card-label {
4646
- font-size: var(--kds-font-size-sm);
4647
- color: var(--kds-color-text-secondary);
4648
- }
4649
-
4650
- .kds-summary-card-value {
4651
- font-size: var(--kds-font-size-sm);
4652
- font-weight: var(--kds-font-weight-medium);
4653
- color: var(--kds-color-text-primary);
4654
- }
4655
-
4656
3544
  /* ========================================
4657
3545
  CONTRACT CONTENT (Contract page)
4658
3546
  ======================================== */