@khipu/design-system 0.2.0-alpha.5 → 0.2.0-alpha.50
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/dist/beercss/khipu-beercss.css +1085 -137
- package/dist/beercss/khipu-beercss.js +59 -26
- package/dist/beercss/khipu-beercss.min.css +1 -1
- package/dist/beercss/khipu-beercss.min.js +1 -1
- package/dist/beercss/khipu-beercss.scoped.css +7890 -0
- package/dist/beercss/khipu-beercss.scoped.min.css +1 -0
- package/dist/beercss/metadata.json +8 -4
- package/dist/index.d.mts +622 -259
- package/dist/index.d.ts +622 -259
- package/dist/index.js +760 -378
- package/dist/index.mjs +783 -402
- package/package.json +12 -9
- package/dist/khipu-logo-color-TV75AKOV.svg +0 -19
|
@@ -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-
|
|
14
|
+
* Generated: 2026-06-16T20:37:41.525Z
|
|
15
15
|
*
|
|
16
16
|
* To regenerate:
|
|
17
17
|
* cd design-system && npm run tokens:generate
|
|
@@ -48,15 +48,21 @@
|
|
|
48
48
|
--kds-color-success-main: #2E7D32;
|
|
49
49
|
--kds-color-success-light: #4CAF50;
|
|
50
50
|
--kds-color-success-dark: #1B5E20;
|
|
51
|
+
--kds-color-success-contrast: #FFFFFF;
|
|
51
52
|
--kds-color-warning-main: #EF6C00;
|
|
52
53
|
--kds-color-warning-light: #FF9800;
|
|
53
54
|
--kds-color-warning-dark: #E65100;
|
|
55
|
+
--kds-color-warning-contrast: #FFFFFF;
|
|
56
|
+
--kds-color-warning-warm: #8A6D1A;
|
|
54
57
|
--kds-color-error-main: #D32F2F;
|
|
55
58
|
--kds-color-error-light: #EF5350;
|
|
56
59
|
--kds-color-error-dark: #C62828;
|
|
60
|
+
--kds-color-error-contrast: #FFFFFF;
|
|
57
61
|
--kds-color-info-main: #0288D1;
|
|
58
62
|
--kds-color-info-light: #03A9F4;
|
|
59
63
|
--kds-color-info-dark: #01579B;
|
|
64
|
+
--kds-color-info-contrast: #FFFFFF;
|
|
65
|
+
--kds-color-info-blue: #5A5FE0;
|
|
60
66
|
|
|
61
67
|
/* Text colors */
|
|
62
68
|
--kds-color-text-primary: #333333;
|
|
@@ -134,6 +140,8 @@
|
|
|
134
140
|
--kds-font-weight-bold: 700;
|
|
135
141
|
|
|
136
142
|
/* Font sizes (base scale xs–4xl: see responsive section below) */
|
|
143
|
+
--kds-font-size-decimal-sup: 0.5em;
|
|
144
|
+
|
|
137
145
|
/* Line heights */
|
|
138
146
|
--kds-line-height-tight: 1.2;
|
|
139
147
|
--kds-line-height-snug: 1.375;
|
|
@@ -846,7 +854,10 @@ a.kds-btn {
|
|
|
846
854
|
|
|
847
855
|
/* Interaction */
|
|
848
856
|
cursor: pointer;
|
|
849
|
-
transition: background
|
|
857
|
+
transition: background-color var(--kds-transition-shorter) var(--kds-easing-standard),
|
|
858
|
+
color var(--kds-transition-shorter) var(--kds-easing-standard),
|
|
859
|
+
box-shadow var(--kds-transition-shorter) var(--kds-easing-standard),
|
|
860
|
+
transform var(--kds-transition-shortest) var(--kds-easing-standard);
|
|
850
861
|
box-sizing: border-box;
|
|
851
862
|
vertical-align: middle;
|
|
852
863
|
}
|
|
@@ -978,7 +989,7 @@ a.kds-btn-text {
|
|
|
978
989
|
|
|
979
990
|
button.kds-btn-text:hover:not(:disabled),
|
|
980
991
|
a.kds-btn-text:hover:not(:disabled) {
|
|
981
|
-
|
|
992
|
+
color: var(--kds-color-primary-dark);
|
|
982
993
|
}
|
|
983
994
|
|
|
984
995
|
button.kds-btn-text:disabled,
|
|
@@ -988,6 +999,30 @@ a.kds-btn-text:disabled {
|
|
|
988
999
|
box-shadow: none;
|
|
989
1000
|
}
|
|
990
1001
|
|
|
1002
|
+
/* Error text (destructive, ghost) — red text, no fill/border. Para acciones
|
|
1003
|
+
destructivas secundarias que no deben competir con el CTA primario. */
|
|
1004
|
+
button.kds-btn-error-text,
|
|
1005
|
+
a.kds-btn-error-text {
|
|
1006
|
+
background: transparent;
|
|
1007
|
+
color: var(--kds-color-error-main);
|
|
1008
|
+
border: none;
|
|
1009
|
+
padding: 6px var(--kds-spacing-2);
|
|
1010
|
+
min-height: 32px;
|
|
1011
|
+
box-shadow: none;
|
|
1012
|
+
}
|
|
1013
|
+
|
|
1014
|
+
button.kds-btn-error-text:hover:not(:disabled),
|
|
1015
|
+
a.kds-btn-error-text:hover:not(:disabled) {
|
|
1016
|
+
color: var(--kds-color-error-dark);
|
|
1017
|
+
}
|
|
1018
|
+
|
|
1019
|
+
button.kds-btn-error-text:disabled,
|
|
1020
|
+
a.kds-btn-error-text:disabled {
|
|
1021
|
+
background: transparent;
|
|
1022
|
+
color: var(--kds-color-action-disabled);
|
|
1023
|
+
box-shadow: none;
|
|
1024
|
+
}
|
|
1025
|
+
|
|
991
1026
|
/* Icon wrapper - control size via span container */
|
|
992
1027
|
button.kds-btn > .kds-icon,
|
|
993
1028
|
a.kds-btn > .kds-icon {
|
|
@@ -1050,6 +1085,7 @@ a.kds-btn.kds-btn-md {
|
|
|
1050
1085
|
padding: var(--kds-spacing-2);
|
|
1051
1086
|
box-shadow: var(--kds-shadow-card);
|
|
1052
1087
|
transition: box-shadow 0.3s ease;
|
|
1088
|
+
margin-block-start: 0 !important;
|
|
1053
1089
|
}
|
|
1054
1090
|
|
|
1055
1091
|
.kds-card-elevated:hover,
|
|
@@ -1072,63 +1108,90 @@ a.kds-btn.kds-btn-md {
|
|
|
1072
1108
|
}
|
|
1073
1109
|
}
|
|
1074
1110
|
|
|
1075
|
-
/* Selection card
|
|
1111
|
+
/* Selection card.
|
|
1112
|
+
IMPORTANTE: este componente se renderiza como `<button>`. BeerCSS aplica al
|
|
1113
|
+
`button` base: `display: inline-flex; align-items: center; justify-content: center;
|
|
1114
|
+
block-size: 2.5rem; padding: 0 1rem; background: var(--primary); color: on-primary`.
|
|
1115
|
+
Todas esas reglas hay que sobreescribirlas para que el card-selector funcione como
|
|
1116
|
+
un contenedor flex column de altura variable y alineado a la izquierda.
|
|
1117
|
+
|
|
1118
|
+
Convención del DS: spacing entre hijos via `gap` del flex padre + padding.
|
|
1119
|
+
Los elementos internos (.kds-card-selector-icon/-title/-description) NO usan margin. */
|
|
1076
1120
|
.kds-card-selector {
|
|
1121
|
+
/* Reset BeerCSS button */
|
|
1122
|
+
display: flex;
|
|
1123
|
+
flex-direction: column;
|
|
1124
|
+
align-items: stretch;
|
|
1125
|
+
justify-content: flex-start;
|
|
1126
|
+
block-size: auto;
|
|
1127
|
+
inline-size: 100%;
|
|
1128
|
+
text-align: left;
|
|
1129
|
+
line-height: 1.5;
|
|
1130
|
+
color: var(--kds-color-text-primary);
|
|
1131
|
+
/* Estilos propios del card-selector */
|
|
1077
1132
|
padding: var(--kds-spacing-3);
|
|
1133
|
+
gap: var(--kds-spacing-1-5);
|
|
1078
1134
|
border-radius: var(--kds-radius-md);
|
|
1079
|
-
border:
|
|
1135
|
+
border: var(--kds-border-width-md) solid var(--kds-border-light);
|
|
1080
1136
|
background: var(--kds-color-background-paper);
|
|
1081
1137
|
transition: all 0.3s ease;
|
|
1082
|
-
text-align: left;
|
|
1083
1138
|
cursor: pointer;
|
|
1084
|
-
display: flex;
|
|
1085
|
-
flex-direction: column;
|
|
1086
1139
|
}
|
|
1087
1140
|
|
|
1088
|
-
.kds-card-selector:hover {
|
|
1089
|
-
border-color:
|
|
1141
|
+
.kds-card-selector:hover:not(.selected) {
|
|
1142
|
+
border-color: var(--kds-color-primary-light);
|
|
1143
|
+
background: var(--kds-color-primary-hover);
|
|
1144
|
+
}
|
|
1145
|
+
|
|
1146
|
+
/* Override del ripple/overlay default de BeerCSS:
|
|
1147
|
+
`:is(.wave,.chip,.button,button,nav.tabbed>a,...):not([class*=ripple])::after`
|
|
1148
|
+
tiene specificity (0,2,4) según DevTools (Chrome cuenta cada selector dentro
|
|
1149
|
+
de :is() individualmente para algunos motores). Usamos !important — consistente
|
|
1150
|
+
con cómo se overridean otros estilos de BeerCSS en este archivo (67 usos previos).
|
|
1151
|
+
Antes pintaba negro porque `currentColor` resolvía a text-primary del card. */
|
|
1152
|
+
.kds-card-selector::after {
|
|
1153
|
+
background-image: radial-gradient(circle, var(--kds-color-primary-main) 1%, transparent 1%) !important;
|
|
1090
1154
|
}
|
|
1091
1155
|
|
|
1092
1156
|
.kds-card-selector.selected {
|
|
1093
|
-
border-color:
|
|
1094
|
-
background:
|
|
1157
|
+
border-color: var(--kds-color-primary-main);
|
|
1158
|
+
background: var(--kds-color-primary-faint);
|
|
1095
1159
|
box-shadow: var(--kds-shadow-md);
|
|
1096
1160
|
}
|
|
1097
1161
|
|
|
1098
|
-
/* Icon container */
|
|
1162
|
+
/* Icon container — spacing manejado por gap del padre, no margin */
|
|
1099
1163
|
.kds-card-selector-icon {
|
|
1100
|
-
width:
|
|
1101
|
-
height:
|
|
1102
|
-
background:
|
|
1103
|
-
border-radius:
|
|
1164
|
+
width: var(--kds-spacing-6);
|
|
1165
|
+
height: var(--kds-spacing-6);
|
|
1166
|
+
background: var(--kds-color-primary-focus);
|
|
1167
|
+
border-radius: var(--kds-radius-sm);
|
|
1104
1168
|
display: flex;
|
|
1105
1169
|
align-items: center;
|
|
1106
1170
|
justify-content: center;
|
|
1107
|
-
margin-bottom: 16px;
|
|
1108
1171
|
}
|
|
1109
1172
|
|
|
1110
1173
|
.kds-card-selector-icon i,
|
|
1111
1174
|
.kds-card-selector-icon svg {
|
|
1112
|
-
width:
|
|
1113
|
-
height:
|
|
1114
|
-
min-width:
|
|
1115
|
-
min-height:
|
|
1116
|
-
|
|
1175
|
+
width: var(--kds-spacing-3);
|
|
1176
|
+
height: var(--kds-spacing-3);
|
|
1177
|
+
min-width: var(--kds-spacing-3);
|
|
1178
|
+
min-height: var(--kds-spacing-3);
|
|
1179
|
+
font-size: var(--kds-spacing-3);
|
|
1180
|
+
color: var(--kds-color-primary-main);
|
|
1117
1181
|
}
|
|
1118
1182
|
|
|
1119
|
-
/* Title */
|
|
1183
|
+
/* Title — spacing manejado por gap del padre, no margin */
|
|
1120
1184
|
.kds-card-selector-title {
|
|
1121
|
-
font-weight:
|
|
1185
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
1122
1186
|
color: var(--kds-color-text-primary);
|
|
1123
|
-
|
|
1124
|
-
font-size: 16px;
|
|
1187
|
+
font-size: var(--kds-font-size-lg);
|
|
1125
1188
|
}
|
|
1126
1189
|
|
|
1127
1190
|
/* Description */
|
|
1128
1191
|
.kds-card-selector-description {
|
|
1129
|
-
font-size:
|
|
1130
|
-
color:
|
|
1131
|
-
line-height:
|
|
1192
|
+
font-size: var(--kds-font-size-sm);
|
|
1193
|
+
color: var(--kds-color-text-secondary);
|
|
1194
|
+
line-height: var(--kds-line-height-normal);
|
|
1132
1195
|
}
|
|
1133
1196
|
|
|
1134
1197
|
/* Selected state - visual feedback via border only */
|
|
@@ -1140,14 +1203,22 @@ a.kds-btn.kds-btn-md {
|
|
|
1140
1203
|
display: flex;
|
|
1141
1204
|
flex-direction: column;
|
|
1142
1205
|
gap: var(--kds-spacing-2);
|
|
1143
|
-
padding: var(--kds-spacing-
|
|
1206
|
+
padding: var(--kds-spacing-2);
|
|
1144
1207
|
border-radius: var(--kds-radius-lg);
|
|
1145
1208
|
border: 2px solid var(--kds-border-medium);
|
|
1146
|
-
|
|
1209
|
+
/* Ancho mínimo aplicado a TODOS los planes — así un plan sin badge en una
|
|
1210
|
+
grilla con un plan recomendado mantiene la misma anchura, y el badge nunca
|
|
1211
|
+
se superpone al título por estrechez del card. */
|
|
1212
|
+
min-width: 260px;
|
|
1213
|
+
max-width: 400px;
|
|
1147
1214
|
background: var(--kds-surface-base);
|
|
1148
1215
|
transition: all 0.3s ease;
|
|
1149
1216
|
cursor: pointer;
|
|
1150
|
-
|
|
1217
|
+
/* Alto fijo: el card se estira al alto de su row del grid (align-items stretch
|
|
1218
|
+
es el default) — todas las cards de la misma fila quedan a la misma altura
|
|
1219
|
+
sin importar el contenido. `align-self: stretch` lo hace explícito. */
|
|
1220
|
+
height: 100%;
|
|
1221
|
+
align-self: stretch;
|
|
1151
1222
|
}
|
|
1152
1223
|
|
|
1153
1224
|
.kds-card-plan:hover {
|
|
@@ -1167,18 +1238,19 @@ a.kds-btn.kds-btn-md {
|
|
|
1167
1238
|
box-shadow: var(--kds-shadow-elevation-4);
|
|
1168
1239
|
}
|
|
1169
1240
|
|
|
1170
|
-
/* Recommended Badge
|
|
1241
|
+
/* Recommended Badge — inline dentro del card (no flotante).
|
|
1242
|
+
Es el primer hijo del .kds-card-plan, así que aparece arriba de todo
|
|
1243
|
+
el contenido, alineado a la izquierda. */
|
|
1171
1244
|
.kds-card-plan-badge {
|
|
1172
|
-
|
|
1173
|
-
|
|
1174
|
-
right: var(--kds-spacing-6);
|
|
1175
|
-
padding: var(--kds-spacing-1) var(--kds-spacing-4);
|
|
1245
|
+
align-self: flex-start;
|
|
1246
|
+
padding: var(--kds-spacing-0-5) var(--kds-spacing-1-5);
|
|
1176
1247
|
background: var(--primary);
|
|
1177
1248
|
color: white;
|
|
1178
|
-
font-size: var(--kds-font-size-
|
|
1249
|
+
font-size: var(--kds-font-size-xs);
|
|
1179
1250
|
font-weight: var(--kds-font-weight-semibold);
|
|
1251
|
+
line-height: 1;
|
|
1180
1252
|
border-radius: var(--kds-radius-full);
|
|
1181
|
-
|
|
1253
|
+
white-space: nowrap;
|
|
1182
1254
|
}
|
|
1183
1255
|
|
|
1184
1256
|
/* Plan Header */
|
|
@@ -1206,13 +1278,11 @@ a.kds-btn.kds-btn-md {
|
|
|
1206
1278
|
display: flex;
|
|
1207
1279
|
align-items: baseline;
|
|
1208
1280
|
gap: var(--kds-spacing-2);
|
|
1209
|
-
padding: var(--kds-spacing-4) 0;
|
|
1210
1281
|
border-bottom: 1px solid var(--kds-border-light);
|
|
1211
|
-
min-height: 88px; /* Standardize price area height */
|
|
1212
1282
|
}
|
|
1213
1283
|
|
|
1214
1284
|
.kds-price {
|
|
1215
|
-
font-size:
|
|
1285
|
+
font-size: var(--kds-font-size-4xl);
|
|
1216
1286
|
font-weight: var(--kds-font-weight-bold);
|
|
1217
1287
|
color: var(--primary);
|
|
1218
1288
|
line-height: 1.1;
|
|
@@ -1726,53 +1796,108 @@ a.kds-btn.kds-btn-md {
|
|
|
1726
1796
|
}
|
|
1727
1797
|
|
|
1728
1798
|
/* ========================================
|
|
1729
|
-
Snackbar Positioning
|
|
1799
|
+
Snackbar Positioning & Styling
|
|
1730
1800
|
======================================== */
|
|
1731
1801
|
|
|
1732
1802
|
.snackbar {
|
|
1733
1803
|
position: fixed;
|
|
1734
|
-
bottom: var(--kds-spacing-3);
|
|
1735
|
-
left: 50%;
|
|
1736
|
-
transform: translateX(-50%);
|
|
1737
1804
|
z-index: var(--kds-z-index-snackbar);
|
|
1738
1805
|
min-width: 344px;
|
|
1739
1806
|
max-width: var(--kds-snackbar-max-width);
|
|
1740
1807
|
box-shadow: var(--kds-shadow-8);
|
|
1808
|
+
border-radius: var(--kds-radius-md);
|
|
1809
|
+
padding: var(--kds-spacing-1-5) var(--kds-spacing-2);
|
|
1810
|
+
gap: var(--kds-spacing-1);
|
|
1811
|
+
font-family: var(--kds-font-family-primary);
|
|
1812
|
+
font-size: var(--kds-font-size-body2);
|
|
1813
|
+
font-weight: var(--kds-font-weight-medium);
|
|
1814
|
+
line-height: var(--kds-line-height-normal);
|
|
1815
|
+
letter-spacing: var(--kds-letter-spacing-normal);
|
|
1816
|
+
overflow: hidden;
|
|
1741
1817
|
}
|
|
1742
1818
|
|
|
1743
1819
|
/* Snackbar active state - ensure visibility when toggled via JS */
|
|
1744
1820
|
.snackbar.active {
|
|
1745
1821
|
visibility: visible !important;
|
|
1746
1822
|
opacity: 1 !important;
|
|
1747
|
-
transform: translateX(-50%) !important;
|
|
1748
1823
|
}
|
|
1749
1824
|
|
|
1750
|
-
/* Snackbar semantic variants
|
|
1825
|
+
/* Snackbar semantic variants
|
|
1826
|
+
All use white text (--kds-color-primary-contrast) on solid semantic backgrounds */
|
|
1751
1827
|
.snackbar.error {
|
|
1752
1828
|
background-color: var(--kds-color-error-main) !important;
|
|
1753
|
-
color: var(--
|
|
1829
|
+
color: var(--kds-color-primary-contrast) !important;
|
|
1754
1830
|
}
|
|
1755
1831
|
|
|
1756
1832
|
.snackbar.error i {
|
|
1757
|
-
color: var(--
|
|
1833
|
+
color: var(--kds-color-primary-contrast) !important;
|
|
1758
1834
|
}
|
|
1759
1835
|
|
|
1760
1836
|
.snackbar.info {
|
|
1761
1837
|
background-color: var(--kds-color-info-main) !important;
|
|
1762
|
-
color: var(--
|
|
1838
|
+
color: var(--kds-color-primary-contrast) !important;
|
|
1763
1839
|
}
|
|
1764
1840
|
|
|
1765
1841
|
.snackbar.info i {
|
|
1766
|
-
color: var(--
|
|
1842
|
+
color: var(--kds-color-primary-contrast) !important;
|
|
1767
1843
|
}
|
|
1768
1844
|
|
|
1769
1845
|
.snackbar.success {
|
|
1770
1846
|
background-color: var(--kds-color-success-main) !important;
|
|
1771
|
-
color: var(--
|
|
1847
|
+
color: var(--kds-color-primary-contrast) !important;
|
|
1772
1848
|
}
|
|
1773
1849
|
|
|
1774
1850
|
.snackbar.success i {
|
|
1775
|
-
color: var(--
|
|
1851
|
+
color: var(--kds-color-primary-contrast) !important;
|
|
1852
|
+
}
|
|
1853
|
+
|
|
1854
|
+
/* Snackbar progress bar — animated timer for auto-dismiss */
|
|
1855
|
+
.snackbar[data-auto-dismiss]::after {
|
|
1856
|
+
content: '';
|
|
1857
|
+
position: absolute;
|
|
1858
|
+
bottom: 0;
|
|
1859
|
+
left: 0;
|
|
1860
|
+
height: 3px;
|
|
1861
|
+
width: 100%;
|
|
1862
|
+
background: rgba(255, 255, 255, 0.35);
|
|
1863
|
+
border-radius: 0 0 var(--kds-radius-md) var(--kds-radius-md);
|
|
1864
|
+
animation: kds-snackbar-timer var(--kds-snackbar-duration, 5s) linear forwards;
|
|
1865
|
+
}
|
|
1866
|
+
|
|
1867
|
+
@keyframes kds-snackbar-timer {
|
|
1868
|
+
from { width: 100%; }
|
|
1869
|
+
to { width: 0; }
|
|
1870
|
+
}
|
|
1871
|
+
|
|
1872
|
+
/* Snackbar close button */
|
|
1873
|
+
.kds-snackbar-close {
|
|
1874
|
+
background: none !important;
|
|
1875
|
+
border: none !important;
|
|
1876
|
+
color: var(--kds-color-primary-contrast) !important;
|
|
1877
|
+
cursor: pointer;
|
|
1878
|
+
padding: var(--kds-spacing-0-5) !important;
|
|
1879
|
+
margin: calc(-1 * var(--kds-spacing-0-5)) !important;
|
|
1880
|
+
margin-left: 0 !important;
|
|
1881
|
+
border-radius: var(--kds-radius-full) !important;
|
|
1882
|
+
display: flex;
|
|
1883
|
+
align-items: center;
|
|
1884
|
+
justify-content: center;
|
|
1885
|
+
flex-shrink: 0;
|
|
1886
|
+
opacity: 0.7;
|
|
1887
|
+
transition: opacity 150ms;
|
|
1888
|
+
min-width: auto !important;
|
|
1889
|
+
width: auto !important;
|
|
1890
|
+
height: auto !important;
|
|
1891
|
+
}
|
|
1892
|
+
|
|
1893
|
+
.kds-snackbar-close:hover {
|
|
1894
|
+
opacity: 1;
|
|
1895
|
+
background: rgba(255, 255, 255, 0.15) !important;
|
|
1896
|
+
}
|
|
1897
|
+
|
|
1898
|
+
.kds-snackbar-close i {
|
|
1899
|
+
font-size: 18px !important;
|
|
1900
|
+
color: var(--kds-color-primary-contrast) !important;
|
|
1776
1901
|
}
|
|
1777
1902
|
|
|
1778
1903
|
/* ========================================
|
|
@@ -1973,6 +2098,210 @@ a.kds-btn-google:disabled {
|
|
|
1973
2098
|
height: var(--kds-spacing-button-icon-size);
|
|
1974
2099
|
}
|
|
1975
2100
|
|
|
2101
|
+
/* ========================================
|
|
2102
|
+
KDS LINEAR PROGRESS
|
|
2103
|
+
Native <progress> (KdsLinearProgress). Additive over BeerCSS `progress`,
|
|
2104
|
+
scoped to .kds-progress so other consumers are unaffected.
|
|
2105
|
+
======================================== */
|
|
2106
|
+
|
|
2107
|
+
/* `progress` is inline-block by default → leaves a baseline (descender) gap
|
|
2108
|
+
below the bar. Block removes that gap so it sits flush with siblings. */
|
|
2109
|
+
.kds-progress {
|
|
2110
|
+
display: block;
|
|
2111
|
+
}
|
|
2112
|
+
|
|
2113
|
+
/* Animate the filled value when it changes (e.g. advancing a step). BeerCSS
|
|
2114
|
+
sets the value background but no transition, so the width jumps abruptly. */
|
|
2115
|
+
.kds-progress::-webkit-progress-value {
|
|
2116
|
+
transition: width var(--kds-transition-standard) var(--kds-easing-standard);
|
|
2117
|
+
}
|
|
2118
|
+
|
|
2119
|
+
.kds-progress::-moz-progress-bar {
|
|
2120
|
+
transition: width var(--kds-transition-standard) var(--kds-easing-standard);
|
|
2121
|
+
}
|
|
2122
|
+
|
|
2123
|
+
/* ========================================
|
|
2124
|
+
KDS SECURE LOADER
|
|
2125
|
+
Loader de espera: anillo circular + candado centrado + frases opcionales.
|
|
2126
|
+
El anillo reutiliza el spinner circular de BeerCSS, escalado.
|
|
2127
|
+
======================================== */
|
|
2128
|
+
|
|
2129
|
+
.kds-secure-loader {
|
|
2130
|
+
display: flex;
|
|
2131
|
+
flex-direction: column;
|
|
2132
|
+
align-items: center;
|
|
2133
|
+
justify-content: center;
|
|
2134
|
+
gap: var(--kds-spacing-4);
|
|
2135
|
+
text-align: center;
|
|
2136
|
+
/* Llena y centra dentro de contenedores flex (pantalla de carga); en flujo
|
|
2137
|
+
normal (contenedor no-flex) se reduce a su contenido. */
|
|
2138
|
+
flex: 1 1 auto;
|
|
2139
|
+
}
|
|
2140
|
+
|
|
2141
|
+
.kds-secure-loader-text {
|
|
2142
|
+
display: flex;
|
|
2143
|
+
flex-direction: column;
|
|
2144
|
+
gap: var(--kds-spacing-0-25);
|
|
2145
|
+
}
|
|
2146
|
+
|
|
2147
|
+
.kds-secure-loader-title {
|
|
2148
|
+
margin: 0;
|
|
2149
|
+
font-family: var(--kds-font-family-primary);
|
|
2150
|
+
font-size: var(--kds-font-size-h6);
|
|
2151
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
2152
|
+
line-height: var(--kds-line-height-snug);
|
|
2153
|
+
color: var(--kds-color-text-primary);
|
|
2154
|
+
}
|
|
2155
|
+
|
|
2156
|
+
.kds-secure-loader-message {
|
|
2157
|
+
margin: 0;
|
|
2158
|
+
font-family: var(--kds-font-family-secondary);
|
|
2159
|
+
font-size: var(--kds-font-size-body1);
|
|
2160
|
+
line-height: var(--kds-line-height-normal);
|
|
2161
|
+
color: var(--kds-color-primary-main);
|
|
2162
|
+
}
|
|
2163
|
+
|
|
2164
|
+
/* Caja del spinner con tamaño fijo: la animación no altera el layout.
|
|
2165
|
+
6.25rem (100px) = tamaño del loader original (CircularProgress size=100). */
|
|
2166
|
+
.kds-secure-loader-spinner {
|
|
2167
|
+
position: relative;
|
|
2168
|
+
display: inline-grid;
|
|
2169
|
+
place-items: center;
|
|
2170
|
+
inline-size: var(--kds-secure-loader-size, 6.25rem);
|
|
2171
|
+
block-size: var(--kds-secure-loader-size, 6.25rem);
|
|
2172
|
+
}
|
|
2173
|
+
|
|
2174
|
+
/* Anillo: SVG nativo con arco vía stroke-dasharray, rotando. Replica el
|
|
2175
|
+
CircularProgress original (viewBox 44u, thickness 2, arco ~63%, disableShrink). */
|
|
2176
|
+
.kds-secure-loader-ring {
|
|
2177
|
+
inline-size: var(--kds-secure-loader-size, 6.25rem);
|
|
2178
|
+
block-size: var(--kds-secure-loader-size, 6.25rem);
|
|
2179
|
+
animation: kds-secure-loader-spin 1.2s linear infinite;
|
|
2180
|
+
}
|
|
2181
|
+
|
|
2182
|
+
.kds-secure-loader-ring circle {
|
|
2183
|
+
fill: none;
|
|
2184
|
+
stroke: var(--kds-color-primary-main);
|
|
2185
|
+
stroke-width: 2;
|
|
2186
|
+
stroke-linecap: round;
|
|
2187
|
+
/* circunferencia ≈ 2π·20.2 ≈ 127; arco visible ≈ 80 (~63%) */
|
|
2188
|
+
stroke-dasharray: 80 127;
|
|
2189
|
+
}
|
|
2190
|
+
|
|
2191
|
+
@keyframes kds-secure-loader-spin {
|
|
2192
|
+
to {
|
|
2193
|
+
transform: rotate(360deg);
|
|
2194
|
+
}
|
|
2195
|
+
}
|
|
2196
|
+
|
|
2197
|
+
/* Candado centrado sobre el anillo (~0.3 del diámetro). Centrado explícito
|
|
2198
|
+
(top/left 50% + translate) para que no dependa del grid ni se recorte. */
|
|
2199
|
+
.kds-secure-loader-lock {
|
|
2200
|
+
position: absolute;
|
|
2201
|
+
top: 50%;
|
|
2202
|
+
left: 50%;
|
|
2203
|
+
transform: translate(-50%, -50%);
|
|
2204
|
+
color: var(--kds-color-text-secondary);
|
|
2205
|
+
font-size: calc(var(--kds-secure-loader-size, 6.25rem) * 0.3);
|
|
2206
|
+
line-height: 1;
|
|
2207
|
+
pointer-events: none;
|
|
2208
|
+
}
|
|
2209
|
+
|
|
2210
|
+
/* ========================================
|
|
2211
|
+
KDS COPY BUTTON
|
|
2212
|
+
Chip compacto que muestra un valor + icono copy y lo copia al click.
|
|
2213
|
+
Acción inline (distinto de KdsCopyRow). Look del copy button de khenshin.
|
|
2214
|
+
======================================== */
|
|
2215
|
+
|
|
2216
|
+
.kds-copy-button {
|
|
2217
|
+
display: inline-flex;
|
|
2218
|
+
align-items: center;
|
|
2219
|
+
gap: var(--kds-spacing-1);
|
|
2220
|
+
padding: var(--kds-spacing-0-5) var(--kds-spacing-1-5);
|
|
2221
|
+
border: none;
|
|
2222
|
+
border-radius: var(--kds-radius-button);
|
|
2223
|
+
background: var(--kds-alert-info-bg);
|
|
2224
|
+
color: var(--kds-color-info-dark);
|
|
2225
|
+
font-family: var(--kds-font-family-secondary);
|
|
2226
|
+
font-size: var(--kds-font-size-sm);
|
|
2227
|
+
font-weight: var(--kds-font-weight-medium);
|
|
2228
|
+
line-height: var(--kds-line-height-normal);
|
|
2229
|
+
cursor: pointer;
|
|
2230
|
+
transition: background-color var(--kds-transition-shorter) var(--kds-easing-standard),
|
|
2231
|
+
color var(--kds-transition-shorter) var(--kds-easing-standard);
|
|
2232
|
+
}
|
|
2233
|
+
|
|
2234
|
+
/* value y copiedText se apilan en la MISMA celda de grid: la celda toma el
|
|
2235
|
+
ancho del texto más largo, por lo que el botón conserva su ancho al alternar
|
|
2236
|
+
entre "valor" y "copiado" (sin reflow). */
|
|
2237
|
+
.kds-copy-button-label {
|
|
2238
|
+
display: inline-grid;
|
|
2239
|
+
}
|
|
2240
|
+
|
|
2241
|
+
.kds-copy-button-value,
|
|
2242
|
+
.kds-copy-button-copied {
|
|
2243
|
+
grid-area: 1 / 1;
|
|
2244
|
+
white-space: nowrap;
|
|
2245
|
+
}
|
|
2246
|
+
|
|
2247
|
+
/* Estado por defecto: visible el valor, oculto (pero ocupando espacio) el copiado */
|
|
2248
|
+
.kds-copy-button-copied {
|
|
2249
|
+
visibility: hidden;
|
|
2250
|
+
}
|
|
2251
|
+
|
|
2252
|
+
/* Al copiar se invierte la visibilidad; el ancho no cambia */
|
|
2253
|
+
.kds-copy-button.copied .kds-copy-button-value {
|
|
2254
|
+
visibility: hidden;
|
|
2255
|
+
}
|
|
2256
|
+
|
|
2257
|
+
.kds-copy-button.copied .kds-copy-button-copied {
|
|
2258
|
+
visibility: visible;
|
|
2259
|
+
}
|
|
2260
|
+
|
|
2261
|
+
.kds-copy-button .material-symbols-outlined {
|
|
2262
|
+
font-size: 1rem;
|
|
2263
|
+
color: var(--kds-color-info-main);
|
|
2264
|
+
flex-shrink: 0;
|
|
2265
|
+
}
|
|
2266
|
+
|
|
2267
|
+
.kds-copy-button.copied {
|
|
2268
|
+
background: var(--kds-alert-success-bg);
|
|
2269
|
+
color: var(--kds-alert-success-text);
|
|
2270
|
+
animation: kds-copy-button-pulse var(--kds-transition-short) var(--kds-easing-standard);
|
|
2271
|
+
}
|
|
2272
|
+
|
|
2273
|
+
.kds-copy-button.copied .material-symbols-outlined {
|
|
2274
|
+
color: var(--kds-color-success-main);
|
|
2275
|
+
/* el check entra con un pop al copiar */
|
|
2276
|
+
animation: kds-copy-button-pop var(--kds-transition-short) var(--kds-easing-standard);
|
|
2277
|
+
}
|
|
2278
|
+
|
|
2279
|
+
@keyframes kds-copy-button-pulse {
|
|
2280
|
+
0% {
|
|
2281
|
+
transform: scale(1);
|
|
2282
|
+
}
|
|
2283
|
+
50% {
|
|
2284
|
+
transform: scale(1.04);
|
|
2285
|
+
}
|
|
2286
|
+
100% {
|
|
2287
|
+
transform: scale(1);
|
|
2288
|
+
}
|
|
2289
|
+
}
|
|
2290
|
+
|
|
2291
|
+
@keyframes kds-copy-button-pop {
|
|
2292
|
+
0% {
|
|
2293
|
+
transform: scale(0.3);
|
|
2294
|
+
opacity: 0;
|
|
2295
|
+
}
|
|
2296
|
+
60% {
|
|
2297
|
+
transform: scale(1.25);
|
|
2298
|
+
opacity: 1;
|
|
2299
|
+
}
|
|
2300
|
+
100% {
|
|
2301
|
+
transform: scale(1);
|
|
2302
|
+
}
|
|
2303
|
+
}
|
|
2304
|
+
|
|
1976
2305
|
/* ========================================
|
|
1977
2306
|
Link Styles
|
|
1978
2307
|
======================================== */
|
|
@@ -2105,6 +2434,17 @@ body.dark {
|
|
|
2105
2434
|
transition: border-color 0.2s, box-shadow 0.2s, outline-color 0.2s;
|
|
2106
2435
|
}
|
|
2107
2436
|
|
|
2437
|
+
/* === TEXTAREA FIX === */
|
|
2438
|
+
/* BeerCSS base sets minimal block padding; add breathing room for textarea */
|
|
2439
|
+
.field > textarea {
|
|
2440
|
+
padding-block: 0.75rem;
|
|
2441
|
+
resize: vertical;
|
|
2442
|
+
}
|
|
2443
|
+
|
|
2444
|
+
.field.label > textarea {
|
|
2445
|
+
padding-block-start: 1.5rem;
|
|
2446
|
+
}
|
|
2447
|
+
|
|
2108
2448
|
/* ==========================================
|
|
2109
2449
|
NOTCH VISIBILITY (opacity)
|
|
2110
2450
|
========================================== */
|
|
@@ -2192,12 +2532,16 @@ body.dark {
|
|
|
2192
2532
|
Asegurar que el dropdown arrow sea visible
|
|
2193
2533
|
========================================== */
|
|
2194
2534
|
|
|
2195
|
-
/* Select:
|
|
2535
|
+
/* Select: reset nativo + arrow custom via SVG (iOS Safari ignora estilos con appearance:auto) */
|
|
2196
2536
|
.field select {
|
|
2197
|
-
|
|
2198
|
-
appearance:
|
|
2199
|
-
|
|
2200
|
-
-
|
|
2537
|
+
-webkit-appearance: none;
|
|
2538
|
+
-moz-appearance: none;
|
|
2539
|
+
appearance: none;
|
|
2540
|
+
background-image: url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='24' height='24' viewBox='0 0 24 24'%3E%3Cpath fill='%23333' d='M7 10l5 5 5-5z'/%3E%3C/svg%3E");
|
|
2541
|
+
background-repeat: no-repeat;
|
|
2542
|
+
background-position: right var(--kds-spacing-1) center;
|
|
2543
|
+
background-size: 20px;
|
|
2544
|
+
padding-right: var(--kds-spacing-4) !important;
|
|
2201
2545
|
}
|
|
2202
2546
|
|
|
2203
2547
|
/* ==========================================
|
|
@@ -2222,6 +2566,23 @@ body.dark {
|
|
|
2222
2566
|
color: var(--error); /* Rojo error */
|
|
2223
2567
|
}
|
|
2224
2568
|
|
|
2569
|
+
/* ==========================================
|
|
2570
|
+
PASSWORD REVEAL TOGGLE (KdsTextField `revealable`)
|
|
2571
|
+
El <a role="button"> reusa el posicionamiento de icono de BeerCSS
|
|
2572
|
+
(.field > a, pointer-events: all). Aquí solo: color del icono
|
|
2573
|
+
(on-surface-variant) y un focus ring accesible para el toggle
|
|
2574
|
+
navegable por teclado (BeerCSS hace `outline: inherit` en <a>).
|
|
2575
|
+
========================================== */
|
|
2576
|
+
.field > a.kds-field-reveal {
|
|
2577
|
+
color: var(--on-surface-variant);
|
|
2578
|
+
}
|
|
2579
|
+
|
|
2580
|
+
.field > a.kds-field-reveal:focus-visible {
|
|
2581
|
+
outline: 2px solid var(--primary);
|
|
2582
|
+
outline-offset: 2px;
|
|
2583
|
+
border-radius: 50%;
|
|
2584
|
+
}
|
|
2585
|
+
|
|
2225
2586
|
/* ==========================================
|
|
2226
2587
|
LABEL COLOR
|
|
2227
2588
|
Mantener sincronizado con border
|
|
@@ -2329,6 +2690,71 @@ body.dark {
|
|
|
2329
2690
|
display: inline-flex;
|
|
2330
2691
|
}
|
|
2331
2692
|
|
|
2693
|
+
/* ========================================
|
|
2694
|
+
Radix Tooltip (.kds-tooltip)
|
|
2695
|
+
Espejo de `.tooltip` pero para popovers de Radix:
|
|
2696
|
+
bg oscuro, texto blanco, sombra + animación fade/slide direccional.
|
|
2697
|
+
======================================== */
|
|
2698
|
+
|
|
2699
|
+
.kds-tooltip {
|
|
2700
|
+
background-color: var(--kds-color-text-primary);
|
|
2701
|
+
color: var(--kds-color-background-paper);
|
|
2702
|
+
font-family: var(--kds-font-family-primary);
|
|
2703
|
+
font-size: var(--kds-font-size-xs);
|
|
2704
|
+
font-weight: var(--kds-font-weight-medium);
|
|
2705
|
+
line-height: var(--kds-line-height-normal);
|
|
2706
|
+
border-radius: var(--kds-radius-sm);
|
|
2707
|
+
padding: var(--kds-spacing-0-75) var(--kds-spacing-1-5);
|
|
2708
|
+
box-shadow: var(--kds-shadow-4);
|
|
2709
|
+
max-width: 280px;
|
|
2710
|
+
z-index: var(--kds-z-index-tooltip, 1500);
|
|
2711
|
+
user-select: none;
|
|
2712
|
+
/* Animación direccional según Radix data-side — coordinada con copy-row
|
|
2713
|
+
(cubic-bezier 0.2, 0.8, 0.2, 1) para un feel consistente del DS. */
|
|
2714
|
+
animation-duration: 240ms;
|
|
2715
|
+
animation-timing-function: cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
2716
|
+
will-change: transform, opacity;
|
|
2717
|
+
}
|
|
2718
|
+
|
|
2719
|
+
.kds-tooltip[data-state='closed'] {
|
|
2720
|
+
animation-duration: 140ms;
|
|
2721
|
+
animation-timing-function: cubic-bezier(0.4, 0, 0.6, 1);
|
|
2722
|
+
}
|
|
2723
|
+
|
|
2724
|
+
/* Direccional según data-side (Radix añade el attr en runtime).
|
|
2725
|
+
Cada lado entra desde su dirección con ~8px de offset (más visible que 4px). */
|
|
2726
|
+
.kds-tooltip[data-side='top'][data-state='delayed-open'],
|
|
2727
|
+
.kds-tooltip[data-side='top'][data-state='instant-open'] { animation-name: kds-tooltip-in-top; }
|
|
2728
|
+
.kds-tooltip[data-side='bottom'][data-state='delayed-open'],
|
|
2729
|
+
.kds-tooltip[data-side='bottom'][data-state='instant-open'] { animation-name: kds-tooltip-in-bottom; }
|
|
2730
|
+
.kds-tooltip[data-side='left'][data-state='delayed-open'],
|
|
2731
|
+
.kds-tooltip[data-side='left'][data-state='instant-open'] { animation-name: kds-tooltip-in-left; }
|
|
2732
|
+
.kds-tooltip[data-side='right'][data-state='delayed-open'],
|
|
2733
|
+
.kds-tooltip[data-side='right'][data-state='instant-open'] { animation-name: kds-tooltip-in-right; }
|
|
2734
|
+
|
|
2735
|
+
/* Fallback cuando no hay data-side resuelto aún */
|
|
2736
|
+
.kds-tooltip[data-state='delayed-open']:not([data-side]),
|
|
2737
|
+
.kds-tooltip[data-state='instant-open']:not([data-side]) {
|
|
2738
|
+
animation-name: kds-tooltip-in-top;
|
|
2739
|
+
}
|
|
2740
|
+
|
|
2741
|
+
.kds-tooltip[data-state='closed'] { animation-name: kds-tooltip-out; }
|
|
2742
|
+
|
|
2743
|
+
@keyframes kds-tooltip-in-top { from { opacity: 0; transform: translateY(8px) scale(0.96); } to { opacity: 1; transform: none; } }
|
|
2744
|
+
@keyframes kds-tooltip-in-bottom { from { opacity: 0; transform: translateY(-8px) scale(0.96); } to { opacity: 1; transform: none; } }
|
|
2745
|
+
@keyframes kds-tooltip-in-left { from { opacity: 0; transform: translateX(8px) scale(0.96); } to { opacity: 1; transform: none; } }
|
|
2746
|
+
@keyframes kds-tooltip-in-right { from { opacity: 0; transform: translateX(-8px) scale(0.96); } to { opacity: 1; transform: none; } }
|
|
2747
|
+
|
|
2748
|
+
@keyframes kds-tooltip-out {
|
|
2749
|
+
from { opacity: 1; transform: none; }
|
|
2750
|
+
to { opacity: 0; transform: scale(0.96); }
|
|
2751
|
+
}
|
|
2752
|
+
|
|
2753
|
+
/* Arrow (SVG path generado por Radix) */
|
|
2754
|
+
.kds-tooltip-arrow {
|
|
2755
|
+
fill: var(--kds-color-text-primary);
|
|
2756
|
+
}
|
|
2757
|
+
|
|
2332
2758
|
/* ========================================
|
|
2333
2759
|
Material Symbols Icon Sizing
|
|
2334
2760
|
======================================== */
|
|
@@ -2745,7 +3171,8 @@ dialog.modal .field.border:focus-within {
|
|
|
2745
3171
|
padding: var(--kds-spacing-2);
|
|
2746
3172
|
}
|
|
2747
3173
|
|
|
2748
|
-
.snackbar
|
|
3174
|
+
.snackbar,
|
|
3175
|
+
.snackbar.active {
|
|
2749
3176
|
min-width: calc(100% - 32px);
|
|
2750
3177
|
left: 16px;
|
|
2751
3178
|
right: 16px;
|
|
@@ -3044,6 +3471,32 @@ footer > .kds-container-center {
|
|
|
3044
3471
|
color: var(--kds-color-error-dark);
|
|
3045
3472
|
}
|
|
3046
3473
|
|
|
3474
|
+
/* Close button — icon-only, discreto, no usa kds-btn para no romper el flex layout del alert */
|
|
3475
|
+
.kds-alert-close {
|
|
3476
|
+
flex-shrink: 0;
|
|
3477
|
+
display: inline-flex;
|
|
3478
|
+
align-items: center;
|
|
3479
|
+
justify-content: center;
|
|
3480
|
+
width: 28px;
|
|
3481
|
+
height: 28px;
|
|
3482
|
+
padding: 0;
|
|
3483
|
+
background: transparent;
|
|
3484
|
+
border: 0;
|
|
3485
|
+
border-radius: 50%;
|
|
3486
|
+
color: inherit;
|
|
3487
|
+
cursor: pointer;
|
|
3488
|
+
transition: background-color 0.15s ease;
|
|
3489
|
+
}
|
|
3490
|
+
|
|
3491
|
+
.kds-alert-close:hover {
|
|
3492
|
+
background: rgba(0, 0, 0, 0.06);
|
|
3493
|
+
}
|
|
3494
|
+
|
|
3495
|
+
.kds-alert-close i {
|
|
3496
|
+
font-size: 18px;
|
|
3497
|
+
line-height: 1;
|
|
3498
|
+
}
|
|
3499
|
+
|
|
3047
3500
|
/* Lists inside alerts */
|
|
3048
3501
|
.kds-alert ul {
|
|
3049
3502
|
padding-left: var(--kds-spacing-2);
|
|
@@ -4040,20 +4493,76 @@ dialog#surveyModal button.circle {
|
|
|
4040
4493
|
text-align: center;
|
|
4041
4494
|
}
|
|
4042
4495
|
|
|
4043
|
-
.kds-text-
|
|
4044
|
-
text-
|
|
4496
|
+
.kds-text-left {
|
|
4497
|
+
text-align: left;
|
|
4498
|
+
}
|
|
4499
|
+
|
|
4500
|
+
.kds-text-right {
|
|
4501
|
+
text-align: right;
|
|
4502
|
+
}
|
|
4503
|
+
|
|
4504
|
+
.kds-text-underline {
|
|
4505
|
+
text-decoration: underline;
|
|
4506
|
+
}
|
|
4507
|
+
|
|
4508
|
+
.kds-text-no-decoration {
|
|
4509
|
+
text-decoration: none;
|
|
4510
|
+
}
|
|
4511
|
+
|
|
4512
|
+
.kds-text-muted {
|
|
4513
|
+
color: var(--on-surface-variant);
|
|
4514
|
+
}
|
|
4515
|
+
|
|
4516
|
+
.kds-text-sm {
|
|
4517
|
+
font-size: var(--kds-font-size-sm);
|
|
4518
|
+
}
|
|
4519
|
+
|
|
4520
|
+
/* ── Font-size scale utilities (additive — opt-in companions to .kds-text-sm) ── */
|
|
4521
|
+
.kds-text-base {
|
|
4522
|
+
font-size: var(--kds-font-size-base);
|
|
4523
|
+
}
|
|
4524
|
+
|
|
4525
|
+
.kds-text-lg {
|
|
4526
|
+
font-size: var(--kds-font-size-lg);
|
|
4527
|
+
}
|
|
4528
|
+
|
|
4529
|
+
.kds-text-xl {
|
|
4530
|
+
font-size: var(--kds-font-size-xl);
|
|
4531
|
+
}
|
|
4532
|
+
|
|
4533
|
+
.kds-text-2xl {
|
|
4534
|
+
font-size: var(--kds-font-size-2xl);
|
|
4535
|
+
}
|
|
4536
|
+
|
|
4537
|
+
/* ── Font-weight utilities ── */
|
|
4538
|
+
.kds-fw-regular {
|
|
4539
|
+
font-weight: var(--kds-font-weight-regular);
|
|
4540
|
+
}
|
|
4541
|
+
|
|
4542
|
+
.kds-fw-medium {
|
|
4543
|
+
font-weight: var(--kds-font-weight-medium);
|
|
4544
|
+
}
|
|
4545
|
+
|
|
4546
|
+
.kds-fw-semibold {
|
|
4547
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
4548
|
+
}
|
|
4549
|
+
|
|
4550
|
+
.kds-fw-bold {
|
|
4551
|
+
font-weight: var(--kds-font-weight-bold);
|
|
4045
4552
|
}
|
|
4046
4553
|
|
|
4047
|
-
|
|
4048
|
-
|
|
4554
|
+
/* ── Text-transform utilities ── */
|
|
4555
|
+
.kds-text-transform-none {
|
|
4556
|
+
text-transform: none;
|
|
4049
4557
|
}
|
|
4050
4558
|
|
|
4051
|
-
|
|
4052
|
-
|
|
4559
|
+
/* ── Soft background utilities (semantic muted backgrounds for callouts) ── */
|
|
4560
|
+
.kds-bg-warning-soft {
|
|
4561
|
+
background-color: var(--kds-color-warning-soft);
|
|
4053
4562
|
}
|
|
4054
4563
|
|
|
4055
|
-
.kds-
|
|
4056
|
-
|
|
4564
|
+
.kds-bg-info-soft {
|
|
4565
|
+
background-color: var(--kds-color-info-soft);
|
|
4057
4566
|
}
|
|
4058
4567
|
|
|
4059
4568
|
/* ── Typography variants ── */
|
|
@@ -4146,6 +4655,12 @@ dialog#surveyModal button.circle {
|
|
|
4146
4655
|
color: var(--kds-color-primary-dark, #5B3179);
|
|
4147
4656
|
}
|
|
4148
4657
|
|
|
4658
|
+
/* Inline emphasis: bold weight only, inherits size/color/family from context so it
|
|
4659
|
+
works as a highlighted fragment inside any other variant (body, heading, etc.). */
|
|
4660
|
+
.kds-text-strong {
|
|
4661
|
+
font-weight: var(--kds-font-weight-bold, 700);
|
|
4662
|
+
}
|
|
4663
|
+
|
|
4149
4664
|
/* Display utilities */
|
|
4150
4665
|
.kds-hidden {
|
|
4151
4666
|
display: none;
|
|
@@ -4266,7 +4781,9 @@ dialog#surveyModal button.circle {
|
|
|
4266
4781
|
======================================== */
|
|
4267
4782
|
|
|
4268
4783
|
.kds-badge {
|
|
4269
|
-
display: inline-
|
|
4784
|
+
display: inline-flex;
|
|
4785
|
+
align-items: center;
|
|
4786
|
+
gap: 4px;
|
|
4270
4787
|
padding: 2px 8px;
|
|
4271
4788
|
border-radius: var(--kds-radius-sm);
|
|
4272
4789
|
font-size: var(--kds-font-size-xs);
|
|
@@ -4274,6 +4791,40 @@ dialog#surveyModal button.circle {
|
|
|
4274
4791
|
line-height: 1.5;
|
|
4275
4792
|
}
|
|
4276
4793
|
|
|
4794
|
+
/* Icon prefix inside chip — small inline icon */
|
|
4795
|
+
.kds-badge > i.material-symbols-outlined {
|
|
4796
|
+
font-size: 14px;
|
|
4797
|
+
line-height: 1;
|
|
4798
|
+
}
|
|
4799
|
+
|
|
4800
|
+
/* Deletable chip close button — discreto, sin kds-btn (eso lo agrandaba ridículo) */
|
|
4801
|
+
.kds-badge-close {
|
|
4802
|
+
display: inline-flex;
|
|
4803
|
+
align-items: center;
|
|
4804
|
+
justify-content: center;
|
|
4805
|
+
width: 16px;
|
|
4806
|
+
height: 16px;
|
|
4807
|
+
margin-right: -2px;
|
|
4808
|
+
padding: 0;
|
|
4809
|
+
background: transparent;
|
|
4810
|
+
border: 0;
|
|
4811
|
+
border-radius: 50%;
|
|
4812
|
+
color: inherit;
|
|
4813
|
+
cursor: pointer;
|
|
4814
|
+
opacity: 0.7;
|
|
4815
|
+
transition: opacity 0.15s, background-color 0.15s;
|
|
4816
|
+
}
|
|
4817
|
+
|
|
4818
|
+
.kds-badge-close:hover {
|
|
4819
|
+
opacity: 1;
|
|
4820
|
+
background: rgba(0, 0, 0, 0.1);
|
|
4821
|
+
}
|
|
4822
|
+
|
|
4823
|
+
.kds-badge-close i {
|
|
4824
|
+
font-size: 14px;
|
|
4825
|
+
line-height: 1;
|
|
4826
|
+
}
|
|
4827
|
+
|
|
4277
4828
|
.kds-badge.success {
|
|
4278
4829
|
background-color: var(--kds-color-success-container);
|
|
4279
4830
|
color: var(--kds-color-success-dark);
|
|
@@ -4552,6 +5103,11 @@ dialog#surveyModal button.circle {
|
|
|
4552
5103
|
color: var(--kds-color-text-primary);
|
|
4553
5104
|
}
|
|
4554
5105
|
|
|
5106
|
+
/* Opt-in color modifier — switches the value to the LigoPay/khipu-blue tone */
|
|
5107
|
+
.kds-amount-value--info {
|
|
5108
|
+
color: var(--kds-color-info-blue); /* #5A5FE0 */
|
|
5109
|
+
}
|
|
5110
|
+
|
|
4555
5111
|
.kds-amount-value small {
|
|
4556
5112
|
font-size: 18px;
|
|
4557
5113
|
font-weight: 500;
|
|
@@ -4909,7 +5465,7 @@ dialog#surveyModal button.circle {
|
|
|
4909
5465
|
display: flex;
|
|
4910
5466
|
align-items: center;
|
|
4911
5467
|
justify-content: center;
|
|
4912
|
-
gap: var(--kds-spacing-
|
|
5468
|
+
gap: var(--kds-spacing-0-5);
|
|
4913
5469
|
color: var(--kds-color-gray-400);
|
|
4914
5470
|
font-size: var(--kds-font-size-xs);
|
|
4915
5471
|
letter-spacing: var(--kds-letter-spacing-wide);
|
|
@@ -4921,6 +5477,10 @@ dialog#surveyModal button.circle {
|
|
|
4921
5477
|
display: none;
|
|
4922
5478
|
}
|
|
4923
5479
|
|
|
5480
|
+
.kds-screen > form {
|
|
5481
|
+
margin-block-start: 0 !important;
|
|
5482
|
+
}
|
|
5483
|
+
|
|
4924
5484
|
@media (max-width: 767px) {
|
|
4925
5485
|
.kds-card-elevated > .kds-secure-footer {
|
|
4926
5486
|
display: flex;
|
|
@@ -4970,14 +5530,20 @@ dialog#surveyModal button.circle {
|
|
|
4970
5530
|
cursor: pointer;
|
|
4971
5531
|
display: inline-flex;
|
|
4972
5532
|
align-items: center;
|
|
4973
|
-
gap:
|
|
5533
|
+
gap: 0;
|
|
4974
5534
|
}
|
|
4975
5535
|
|
|
4976
|
-
.kds-expand-toggle:hover
|
|
5536
|
+
.kds-expand-toggle:hover,
|
|
5537
|
+
.kds-expand-toggle:focus,
|
|
5538
|
+
.kds-expand-toggle:active {
|
|
4977
5539
|
background: transparent;
|
|
5540
|
+
outline: none;
|
|
5541
|
+
box-shadow: none;
|
|
4978
5542
|
}
|
|
4979
5543
|
|
|
4980
|
-
.kds-expand-toggle:hover span
|
|
5544
|
+
.kds-expand-toggle:hover span,
|
|
5545
|
+
.kds-expand-toggle:focus span,
|
|
5546
|
+
.kds-expand-toggle:active span {
|
|
4981
5547
|
text-decoration: underline;
|
|
4982
5548
|
}
|
|
4983
5549
|
|
|
@@ -5157,11 +5723,11 @@ dialog#surveyModal button.circle {
|
|
|
5157
5723
|
color: var(--kds-color-success-main);
|
|
5158
5724
|
}
|
|
5159
5725
|
|
|
5160
|
-
/* Variant: pending (animated spinner) */
|
|
5726
|
+
/* Variant: pending (animated blue spinner, sin icono interno) */
|
|
5161
5727
|
.kds-status-block[data-status="pending"] .kds-status-block-icon {
|
|
5162
5728
|
background: transparent;
|
|
5163
5729
|
border: 3px solid var(--kds-color-divider);
|
|
5164
|
-
border-top-color: var(--kds-color-
|
|
5730
|
+
border-top-color: var(--kds-color-info-main);
|
|
5165
5731
|
animation: kds-spin 1s linear infinite;
|
|
5166
5732
|
}
|
|
5167
5733
|
|
|
@@ -5179,12 +5745,21 @@ dialog#surveyModal button.circle {
|
|
|
5179
5745
|
color: var(--kds-color-error-main);
|
|
5180
5746
|
}
|
|
5181
5747
|
|
|
5748
|
+
/* Variant: info — usar SIEMPRE con icon "info_i" (i minúscula sin glyph circular)
|
|
5749
|
+
para que solo se vea nuestro círculo decorativo. Iconos como "info" tienen
|
|
5750
|
+
su propio círculo built-in → causarían doble círculo. */
|
|
5751
|
+
.kds-status-block[data-status="info"] .kds-status-block-icon {
|
|
5752
|
+
background: var(--kds-color-info-soft);
|
|
5753
|
+
border: var(--kds-border-width-md) solid var(--kds-color-info-main);
|
|
5754
|
+
color: var(--kds-color-info-main);
|
|
5755
|
+
}
|
|
5756
|
+
|
|
5182
5757
|
/* Inline variant: icon left + text right */
|
|
5183
5758
|
.kds-status-block.inline {
|
|
5184
5759
|
text-align: left;
|
|
5185
5760
|
display: flex;
|
|
5186
5761
|
align-items: center;
|
|
5187
|
-
gap: var(--kds-spacing-
|
|
5762
|
+
gap: var(--kds-spacing-2);
|
|
5188
5763
|
padding: var(--kds-spacing-1) 0;
|
|
5189
5764
|
}
|
|
5190
5765
|
|
|
@@ -5246,6 +5821,40 @@ dialog#surveyModal button.circle {
|
|
|
5246
5821
|
background: var(--kds-color-divider);
|
|
5247
5822
|
}
|
|
5248
5823
|
|
|
5824
|
+
/* Close button — top-right discreto, NO usa kds-btn (rompía el flex layout) */
|
|
5825
|
+
.kds-bottom-sheet-close {
|
|
5826
|
+
position: absolute;
|
|
5827
|
+
top: var(--kds-spacing-1);
|
|
5828
|
+
right: var(--kds-spacing-1);
|
|
5829
|
+
width: 32px;
|
|
5830
|
+
height: 32px;
|
|
5831
|
+
display: inline-flex;
|
|
5832
|
+
align-items: center;
|
|
5833
|
+
justify-content: center;
|
|
5834
|
+
padding: 0;
|
|
5835
|
+
background: transparent;
|
|
5836
|
+
border: 0;
|
|
5837
|
+
border-radius: 50%;
|
|
5838
|
+
color: var(--kds-color-text-secondary);
|
|
5839
|
+
cursor: pointer;
|
|
5840
|
+
transition: background-color 0.15s ease;
|
|
5841
|
+
}
|
|
5842
|
+
|
|
5843
|
+
.kds-bottom-sheet-close:hover {
|
|
5844
|
+
background: rgba(0, 0, 0, 0.06);
|
|
5845
|
+
}
|
|
5846
|
+
|
|
5847
|
+
.kds-bottom-sheet-close i {
|
|
5848
|
+
font-size: 20px;
|
|
5849
|
+
line-height: 1;
|
|
5850
|
+
}
|
|
5851
|
+
|
|
5852
|
+
/* Body container — separa el content del title/actions */
|
|
5853
|
+
.kds-bottom-sheet-body {
|
|
5854
|
+
text-align: left;
|
|
5855
|
+
margin-top: var(--kds-spacing-1);
|
|
5856
|
+
}
|
|
5857
|
+
|
|
5249
5858
|
.kds-bottom-sheet-icon {
|
|
5250
5859
|
font-size: var(--kds-font-size-4xl);
|
|
5251
5860
|
}
|
|
@@ -5575,6 +6184,13 @@ div.kds-invoice-header,
|
|
|
5575
6184
|
align-content: initial;
|
|
5576
6185
|
}
|
|
5577
6186
|
|
|
6187
|
+
/* Mobile collapsed state: center-align so merchant tile aligns with the smaller amount */
|
|
6188
|
+
@media (max-width: 767px) {
|
|
6189
|
+
.kds-invoice-sticky.is-collapsed .kds-invoice-header {
|
|
6190
|
+
align-items: center;
|
|
6191
|
+
}
|
|
6192
|
+
}
|
|
6193
|
+
|
|
5578
6194
|
/* Reset BeerCSS sibling margin on <p> inside invoice header — specificity (0,4,1) ties BeerCSS, wins by source order */
|
|
5579
6195
|
.kds-card-elevated.kds-invoice-sticky .kds-invoice-header p.kds-invoice-amount,
|
|
5580
6196
|
.kds-card-elevated.kds-invoice-sticky .kds-invoice-header p.kds-invoice-code {
|
|
@@ -5582,7 +6198,7 @@ div.kds-invoice-header,
|
|
|
5582
6198
|
}
|
|
5583
6199
|
|
|
5584
6200
|
.kds-invoice-amount {
|
|
5585
|
-
font-weight: var(--kds-font-weight-
|
|
6201
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
5586
6202
|
font-size: var(--kds-font-size-3xl);
|
|
5587
6203
|
line-height: var(--kds-line-height-tight);
|
|
5588
6204
|
letter-spacing: var(--kds-letter-spacing-wide);
|
|
@@ -5603,10 +6219,16 @@ div.kds-invoice-header,
|
|
|
5603
6219
|
color: var(--kds-color-gray-400);
|
|
5604
6220
|
text-transform: uppercase;
|
|
5605
6221
|
margin: 0;
|
|
5606
|
-
margin-
|
|
6222
|
+
margin-block: unset;
|
|
6223
|
+
display: flex;
|
|
6224
|
+
gap: var(--kds-spacing-1-5);
|
|
5607
6225
|
}
|
|
5608
6226
|
|
|
5609
6227
|
.kds-invoice-code-value {
|
|
6228
|
+
color: var(--kds-color-gray-400);
|
|
6229
|
+
}
|
|
6230
|
+
|
|
6231
|
+
.kds-invoice-code-value--lowercase {
|
|
5610
6232
|
text-transform: lowercase;
|
|
5611
6233
|
}
|
|
5612
6234
|
|
|
@@ -5619,6 +6241,9 @@ div.kds-invoice-header,
|
|
|
5619
6241
|
place-items: center;
|
|
5620
6242
|
color: #fff;
|
|
5621
6243
|
flex-shrink: 0;
|
|
6244
|
+
/* Clip the slightly-oversized logo (see `.kds-invoice-merchant img`) to the
|
|
6245
|
+
rounded square so it can fully cover the deep-purple background. */
|
|
6246
|
+
overflow: hidden;
|
|
5622
6247
|
}
|
|
5623
6248
|
|
|
5624
6249
|
.kds-invoice-merchant i {
|
|
@@ -5638,15 +6263,18 @@ div.kds-invoice-header,
|
|
|
5638
6263
|
}
|
|
5639
6264
|
|
|
5640
6265
|
.kds-invoice-merchant img {
|
|
5641
|
-
|
|
5642
|
-
|
|
6266
|
+
/* Slightly larger than the container (+2px, centered by the grid) so the
|
|
6267
|
+
logo overflows under the parent's rounded clip and the deep-purple
|
|
6268
|
+
background never peeks through at the corners when the logo shrinks. */
|
|
6269
|
+
width: calc(100% + 2px);
|
|
6270
|
+
height: calc(100% + 2px);
|
|
5643
6271
|
object-fit: cover;
|
|
5644
6272
|
border-radius: var(--kds-radius-md);
|
|
5645
6273
|
}
|
|
5646
6274
|
|
|
5647
6275
|
/* -- Card Title -- */
|
|
5648
6276
|
.kds-card-title {
|
|
5649
|
-
font-weight:
|
|
6277
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
5650
6278
|
font-size: var(--kds-font-size-base);
|
|
5651
6279
|
line-height: 1.5;
|
|
5652
6280
|
letter-spacing: -0.31px;
|
|
@@ -5654,12 +6282,22 @@ div.kds-invoice-header,
|
|
|
5654
6282
|
margin-bottom: var(--kds-spacing-2) !important;
|
|
5655
6283
|
}
|
|
5656
6284
|
|
|
6285
|
+
/* Opt-in size modifiers (additive — do NOT change default 16/600) */
|
|
6286
|
+
.kds-card-title--lg {
|
|
6287
|
+
font-size: var(--kds-font-size-xl); /* 20px */
|
|
6288
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
6289
|
+
}
|
|
6290
|
+
|
|
6291
|
+
.kds-card-title--xl {
|
|
6292
|
+
font-size: var(--kds-font-size-2xl); /* 24px */
|
|
6293
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
6294
|
+
}
|
|
6295
|
+
|
|
5657
6296
|
/* -- Key-Value Grid -- */
|
|
5658
6297
|
.kds-kv {
|
|
5659
6298
|
display: grid;
|
|
5660
6299
|
grid-template-columns: auto 1fr;
|
|
5661
|
-
|
|
5662
|
-
column-gap: var(--kds-spacing-1-5);
|
|
6300
|
+
column-gap: var(--kds-spacing-1);
|
|
5663
6301
|
align-items: baseline;
|
|
5664
6302
|
}
|
|
5665
6303
|
|
|
@@ -5676,7 +6314,7 @@ div.kds-invoice-header,
|
|
|
5676
6314
|
margin: 0;
|
|
5677
6315
|
font-size: var(--kds-font-size-sm);
|
|
5678
6316
|
line-height: var(--kds-line-height-relaxed);
|
|
5679
|
-
font-weight: var(--kds-font-weight-
|
|
6317
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
5680
6318
|
letter-spacing: normal;
|
|
5681
6319
|
color: var(--kds-color-gray-800);
|
|
5682
6320
|
min-width: 0;
|
|
@@ -5706,7 +6344,13 @@ div.kds-invoice-header,
|
|
|
5706
6344
|
flex-direction: column;
|
|
5707
6345
|
gap: var(--kds-spacing-1-5);
|
|
5708
6346
|
margin: 0;
|
|
5709
|
-
padding: 0
|
|
6347
|
+
padding: 0;
|
|
6348
|
+
}
|
|
6349
|
+
|
|
6350
|
+
@media (max-width: 767px) {
|
|
6351
|
+
.kds-detail-list {
|
|
6352
|
+
padding-bottom: var(--kds-spacing-2);
|
|
6353
|
+
}
|
|
5710
6354
|
}
|
|
5711
6355
|
|
|
5712
6356
|
.kds-detail-group {
|
|
@@ -5722,7 +6366,6 @@ div.kds-invoice-header,
|
|
|
5722
6366
|
letter-spacing: var(--kds-letter-spacing-wide);
|
|
5723
6367
|
color: var(--kds-color-text-hint);
|
|
5724
6368
|
text-transform: uppercase;
|
|
5725
|
-
margin: 0 0 var(--kds-spacing-0-5);
|
|
5726
6369
|
}
|
|
5727
6370
|
|
|
5728
6371
|
.kds-detail-group dd {
|
|
@@ -5791,16 +6434,16 @@ div.kds-invoice-header,
|
|
|
5791
6434
|
font-size: var(--kds-font-size-sm);
|
|
5792
6435
|
}
|
|
5793
6436
|
|
|
5794
|
-
.kds-recap-list .
|
|
6437
|
+
.kds-recap-list .kds-key {
|
|
5795
6438
|
color: var(--kds-color-text-secondary);
|
|
5796
6439
|
}
|
|
5797
6440
|
|
|
5798
|
-
.kds-recap-list .
|
|
6441
|
+
.kds-recap-list .kds-value {
|
|
5799
6442
|
color: var(--kds-color-text-primary);
|
|
5800
6443
|
font-weight: 500;
|
|
5801
6444
|
}
|
|
5802
6445
|
|
|
5803
|
-
.kds-recap-list .
|
|
6446
|
+
.kds-recap-list .kds-value.placeholder {
|
|
5804
6447
|
color: var(--kds-color-text-hint);
|
|
5805
6448
|
}
|
|
5806
6449
|
|
|
@@ -5827,6 +6470,72 @@ a.kds-btn-success:disabled {
|
|
|
5827
6470
|
box-shadow: none;
|
|
5828
6471
|
}
|
|
5829
6472
|
|
|
6473
|
+
/* -- Button Warning (amber CTA) -- */
|
|
6474
|
+
button.kds-btn-warning,
|
|
6475
|
+
a.kds-btn-warning {
|
|
6476
|
+
background: var(--kds-color-warning-main);
|
|
6477
|
+
color: var(--kds-color-warning-contrast);
|
|
6478
|
+
border: none;
|
|
6479
|
+
}
|
|
6480
|
+
|
|
6481
|
+
button.kds-btn-warning:hover:not(:disabled),
|
|
6482
|
+
a.kds-btn-warning:hover:not(:disabled) {
|
|
6483
|
+
background: var(--kds-color-warning-dark);
|
|
6484
|
+
}
|
|
6485
|
+
|
|
6486
|
+
button.kds-btn-warning:active:not(:disabled),
|
|
6487
|
+
button.kds-btn-warning:focus-visible:not(:disabled),
|
|
6488
|
+
a.kds-btn-warning:active:not(:disabled),
|
|
6489
|
+
a.kds-btn-warning:focus-visible:not(:disabled) {
|
|
6490
|
+
background: var(--kds-color-warning-dark);
|
|
6491
|
+
outline: 2px solid var(--kds-color-warning-main);
|
|
6492
|
+
outline-offset: 2px;
|
|
6493
|
+
}
|
|
6494
|
+
|
|
6495
|
+
button.kds-btn-warning:disabled,
|
|
6496
|
+
a.kds-btn-warning:disabled {
|
|
6497
|
+
background-color: var(--kds-color-action-disabled-bg);
|
|
6498
|
+
color: var(--kds-color-action-disabled);
|
|
6499
|
+
box-shadow: none;
|
|
6500
|
+
}
|
|
6501
|
+
|
|
6502
|
+
button.kds-btn-warning::after {
|
|
6503
|
+
display: none;
|
|
6504
|
+
}
|
|
6505
|
+
|
|
6506
|
+
/* -- Button Error (red / destructive CTA) -- */
|
|
6507
|
+
button.kds-btn-error,
|
|
6508
|
+
a.kds-btn-error {
|
|
6509
|
+
background: var(--kds-color-error-main);
|
|
6510
|
+
color: var(--kds-color-error-contrast);
|
|
6511
|
+
border: none;
|
|
6512
|
+
}
|
|
6513
|
+
|
|
6514
|
+
button.kds-btn-error:hover:not(:disabled),
|
|
6515
|
+
a.kds-btn-error:hover:not(:disabled) {
|
|
6516
|
+
background: var(--kds-color-error-dark);
|
|
6517
|
+
}
|
|
6518
|
+
|
|
6519
|
+
button.kds-btn-error:active:not(:disabled),
|
|
6520
|
+
button.kds-btn-error:focus-visible:not(:disabled),
|
|
6521
|
+
a.kds-btn-error:active:not(:disabled),
|
|
6522
|
+
a.kds-btn-error:focus-visible:not(:disabled) {
|
|
6523
|
+
background: var(--kds-color-error-dark);
|
|
6524
|
+
outline: 2px solid var(--kds-color-error-main);
|
|
6525
|
+
outline-offset: 2px;
|
|
6526
|
+
}
|
|
6527
|
+
|
|
6528
|
+
button.kds-btn-error:disabled,
|
|
6529
|
+
a.kds-btn-error:disabled {
|
|
6530
|
+
background-color: var(--kds-color-action-disabled-bg);
|
|
6531
|
+
color: var(--kds-color-action-disabled);
|
|
6532
|
+
box-shadow: none;
|
|
6533
|
+
}
|
|
6534
|
+
|
|
6535
|
+
button.kds-btn-error::after {
|
|
6536
|
+
display: none;
|
|
6537
|
+
}
|
|
6538
|
+
|
|
5830
6539
|
/* -- Field Helper Text -- */
|
|
5831
6540
|
.kds-field-helper {
|
|
5832
6541
|
font-size: var(--kds-font-size-xs);
|
|
@@ -5869,6 +6578,8 @@ button.kds-btn-success::after {
|
|
|
5869
6578
|
/* -- Alert inline (borderless, used inside cards) -- */
|
|
5870
6579
|
.kds-alert-inline {
|
|
5871
6580
|
border: none;
|
|
6581
|
+
padding: var(--kds-spacing-1) var(--kds-spacing-1-5);
|
|
6582
|
+
margin-bottom: var(--kds-spacing-1-5);
|
|
5872
6583
|
}
|
|
5873
6584
|
|
|
5874
6585
|
/* -- Card dimmed (behind overlays) -- */
|
|
@@ -5970,17 +6681,42 @@ button.kds-btn-success::after {
|
|
|
5970
6681
|
}
|
|
5971
6682
|
|
|
5972
6683
|
.kds-bill-description-picture {
|
|
5973
|
-
width:
|
|
5974
|
-
height: 120px;
|
|
6684
|
+
max-width: 100px;
|
|
5975
6685
|
object-fit: contain;
|
|
5976
6686
|
background: var(--kds-color-background-paper);
|
|
5977
|
-
|
|
5978
|
-
border-radius: var(--kds-radius-md);
|
|
5979
|
-
margin-top: var(--kds-spacing-1);
|
|
6687
|
+
margin-top: var(--kds-spacing-1-25);
|
|
5980
6688
|
display: block;
|
|
5981
6689
|
box-sizing: content-box;
|
|
5982
6690
|
}
|
|
5983
6691
|
|
|
6692
|
+
/* -- Bill Attachments -- */
|
|
6693
|
+
.kds-bill-attachments {
|
|
6694
|
+
display: flex;
|
|
6695
|
+
flex-direction: column;
|
|
6696
|
+
gap: var(--kds-spacing-0-75);
|
|
6697
|
+
}
|
|
6698
|
+
|
|
6699
|
+
.kds-bill-attachment {
|
|
6700
|
+
display: inline-flex;
|
|
6701
|
+
align-items: center;
|
|
6702
|
+
justify-content: flex-start;
|
|
6703
|
+
width: fit-content;
|
|
6704
|
+
color: var(--kds-color-info-main);
|
|
6705
|
+
font-size: var(--kds-font-size-sm);
|
|
6706
|
+
font-weight: var(--kds-font-weight-medium);
|
|
6707
|
+
text-decoration: none;
|
|
6708
|
+
}
|
|
6709
|
+
|
|
6710
|
+
.kds-bill-attachment:hover span {
|
|
6711
|
+
text-decoration: underline;
|
|
6712
|
+
}
|
|
6713
|
+
|
|
6714
|
+
.kds-bill-attachment i {
|
|
6715
|
+
font-size: var(--kds-font-size-lg);
|
|
6716
|
+
min-width: unset;
|
|
6717
|
+
justify-content: flex-start;
|
|
6718
|
+
}
|
|
6719
|
+
|
|
5984
6720
|
/* -- Share Card (mustContinue) -- */
|
|
5985
6721
|
.kds-share-card {
|
|
5986
6722
|
margin-top: var(--kds-spacing-2);
|
|
@@ -6093,6 +6829,14 @@ button.kds-btn-success::after {
|
|
|
6093
6829
|
padding-top: 0;
|
|
6094
6830
|
padding-bottom: 0;
|
|
6095
6831
|
}
|
|
6832
|
+
|
|
6833
|
+
/* Reset BeerCSS sibling margin on form/section inside payment cards.
|
|
6834
|
+
BeerCSS sets `:not(.grid,nav,.row) > … + form/section { margin-block-start:1rem }`
|
|
6835
|
+
which adds unwanted spacing inside cards that contain forms. */
|
|
6836
|
+
.kds-payment-flow .kds-card-elevated > form,
|
|
6837
|
+
.kds-payment-flow .kds-card-elevated > section {
|
|
6838
|
+
margin-block-start: 0;
|
|
6839
|
+
}
|
|
6096
6840
|
.kds-payment-flow .kds-card-elevated.kds-invoice-sticky {
|
|
6097
6841
|
padding-top: var(--kds-spacing-1);
|
|
6098
6842
|
padding-bottom: 0;
|
|
@@ -6142,10 +6886,17 @@ button.kds-btn-success::after {
|
|
|
6142
6886
|
padding-bottom: var(--kds-spacing-2);
|
|
6143
6887
|
}
|
|
6144
6888
|
|
|
6145
|
-
/* Invoice sticky card
|
|
6146
|
-
|
|
6889
|
+
/* Invoice sticky card padding (mobile).
|
|
6890
|
+
Top: estático 12px. Bottom: progresivo 20px (expandido) → 8px (colapsado).
|
|
6891
|
+
El padding-bottom animado da breathing room natural cuando expandido y se
|
|
6892
|
+
reduce convencionalmente al colapsar — sin depender de que el clip-path
|
|
6893
|
+
corte el padding abruptamente. */
|
|
6147
6894
|
.kds-payment-flow .kds-card-elevated.kds-invoice-sticky {
|
|
6148
6895
|
padding-top: var(--kds-spacing-1-5);
|
|
6896
|
+
padding-bottom: calc(
|
|
6897
|
+
var(--kds-spacing-2-5)
|
|
6898
|
+
- var(--kds-spacing-1-5) * var(--collapse-progress, 0)
|
|
6899
|
+
);
|
|
6149
6900
|
}
|
|
6150
6901
|
|
|
6151
6902
|
|
|
@@ -6184,7 +6935,8 @@ button.kds-btn-success::after {
|
|
|
6184
6935
|
}
|
|
6185
6936
|
.kds-brand-inner svg,
|
|
6186
6937
|
.kds-brand-inner img {
|
|
6187
|
-
|
|
6938
|
+
width: calc(50px - 16px * var(--collapse-progress, 0));
|
|
6939
|
+
height: auto;
|
|
6188
6940
|
display: block;
|
|
6189
6941
|
}
|
|
6190
6942
|
|
|
@@ -6403,7 +7155,7 @@ button.kds-btn-success::after {
|
|
|
6403
7155
|
inset: 0;
|
|
6404
7156
|
background: var(--kds-modal-backdrop);
|
|
6405
7157
|
display: none;
|
|
6406
|
-
align-items:
|
|
7158
|
+
align-items: flex-start;
|
|
6407
7159
|
justify-content: center;
|
|
6408
7160
|
z-index: var(--kds-z-index-modal, 50);
|
|
6409
7161
|
animation: kds-fade 0.2s ease both;
|
|
@@ -6431,7 +7183,7 @@ button.kds-btn-success::after {
|
|
|
6431
7183
|
display: flex;
|
|
6432
7184
|
align-items: center;
|
|
6433
7185
|
justify-content: space-between;
|
|
6434
|
-
padding: var(--kds-spacing-
|
|
7186
|
+
padding: var(--kds-spacing-1) var(--kds-spacing-2) var(--kds-spacing-1);
|
|
6435
7187
|
}
|
|
6436
7188
|
|
|
6437
7189
|
.kds-bank-modal-header h3 {
|
|
@@ -6578,7 +7330,7 @@ button.kds-btn-success::after {
|
|
|
6578
7330
|
min-width: 0;
|
|
6579
7331
|
}
|
|
6580
7332
|
|
|
6581
|
-
.kds-qr-text .title {
|
|
7333
|
+
.kds-qr-text .kds-qr-title {
|
|
6582
7334
|
font-family: var(--kds-font-family-primary);
|
|
6583
7335
|
font-weight: 600;
|
|
6584
7336
|
font-size: var(--kds-font-size-sm);
|
|
@@ -6586,10 +7338,15 @@ button.kds-btn-success::after {
|
|
|
6586
7338
|
color: var(--kds-color-text-primary);
|
|
6587
7339
|
}
|
|
6588
7340
|
|
|
6589
|
-
.kds-qr-text .
|
|
7341
|
+
.kds-qr-text .kds-qr-subtitle {
|
|
6590
7342
|
font-family: var(--kds-font-family-primary);
|
|
6591
7343
|
font-size: var(--kds-font-size-caption);
|
|
6592
7344
|
color: var(--kds-color-text-secondary);
|
|
7345
|
+
/* Trunca con ellipsis en lugar de wrap a 2 líneas — evita apretar el row
|
|
7346
|
+
cuando el contenedor es angosto (mobile o decorator constrained). */
|
|
7347
|
+
overflow: hidden;
|
|
7348
|
+
text-overflow: ellipsis;
|
|
7349
|
+
white-space: nowrap;
|
|
6593
7350
|
}
|
|
6594
7351
|
|
|
6595
7352
|
/* QR Badge - "Rápido" indicator */
|
|
@@ -6612,46 +7369,26 @@ button.kds-btn-success::after {
|
|
|
6612
7369
|
font-size: 20px;
|
|
6613
7370
|
}
|
|
6614
7371
|
|
|
6615
|
-
/* Mobile responsive:
|
|
7372
|
+
/* Mobile responsive (≤480px): respira más — mantenemos padding/gap/avatar igual
|
|
7373
|
+
que desktop y solo agregamos truncation al subtitle y `flex-shrink: 0` en los
|
|
7374
|
+
ítems que deben mantener su tamaño (avatar, badge, chevron). */
|
|
6616
7375
|
@media (max-width: 480px) {
|
|
6617
|
-
.kds-qr-row {
|
|
6618
|
-
gap: var(--kds-spacing-1-5);
|
|
6619
|
-
padding: var(--kds-spacing-1-5);
|
|
6620
|
-
}
|
|
6621
|
-
|
|
6622
7376
|
.kds-qr-avatar {
|
|
6623
|
-
width: var(--kds-spacing-4-5);
|
|
6624
|
-
height: var(--kds-spacing-4-5);
|
|
6625
7377
|
flex-shrink: 0;
|
|
6626
7378
|
}
|
|
6627
7379
|
|
|
6628
|
-
.kds-qr-avatar .material-symbols-outlined,
|
|
6629
|
-
.kds-qr-avatar .material-icons-round {
|
|
6630
|
-
font-size: var(--kds-font-size-lg);
|
|
6631
|
-
}
|
|
6632
|
-
|
|
6633
|
-
.kds-qr-text .title {
|
|
6634
|
-
font-size: var(--kds-font-size-xs);
|
|
6635
|
-
line-height: var(--kds-line-height-tight);
|
|
6636
|
-
}
|
|
6637
|
-
|
|
6638
7380
|
.kds-qr-text .sub {
|
|
6639
|
-
font-size: var(--kds-font-size-caption);
|
|
6640
|
-
line-height: var(--kds-line-height-tight);
|
|
6641
7381
|
overflow: hidden;
|
|
6642
7382
|
text-overflow: ellipsis;
|
|
6643
7383
|
white-space: nowrap;
|
|
6644
7384
|
}
|
|
6645
7385
|
|
|
6646
7386
|
.kds-qr-badge {
|
|
6647
|
-
font-size: var(--kds-font-size-caption);
|
|
6648
|
-
padding: var(--kds-spacing-0-25) var(--kds-spacing-0-75);
|
|
6649
7387
|
flex-shrink: 0;
|
|
6650
7388
|
}
|
|
6651
7389
|
|
|
6652
7390
|
.kds-qr-row .material-symbols-outlined:last-child,
|
|
6653
7391
|
.kds-qr-row .material-icons-round:last-child {
|
|
6654
|
-
font-size: var(--kds-font-size-base);
|
|
6655
7392
|
flex-shrink: 0;
|
|
6656
7393
|
}
|
|
6657
7394
|
}
|
|
@@ -6680,7 +7417,11 @@ button.kds-btn-success::after {
|
|
|
6680
7417
|
border-radius: var(--kds-spacing-0-75);
|
|
6681
7418
|
font-size: var(--kds-font-size-sm);
|
|
6682
7419
|
cursor: pointer;
|
|
6683
|
-
|
|
7420
|
+
/* Transición más amplia y suave: bg + color + border ease-out */
|
|
7421
|
+
transition:
|
|
7422
|
+
background-color 280ms cubic-bezier(0.2, 0.8, 0.2, 1),
|
|
7423
|
+
color 280ms cubic-bezier(0.2, 0.8, 0.2, 1),
|
|
7424
|
+
border-top-color 280ms ease-out;
|
|
6684
7425
|
position: relative;
|
|
6685
7426
|
user-select: none;
|
|
6686
7427
|
}
|
|
@@ -6689,19 +7430,21 @@ button.kds-btn-success::after {
|
|
|
6689
7430
|
border-top: 0;
|
|
6690
7431
|
}
|
|
6691
7432
|
|
|
6692
|
-
|
|
7433
|
+
/* Hover NO aplica mientras la row esté en `.copied` o `.settling`
|
|
7434
|
+
(evita el flicker del hover state al desaparecer el verde de "copiado") */
|
|
7435
|
+
.kds-copyable-table-row:not(.copied):not(.settling):hover {
|
|
6693
7436
|
background: var(--kds-color-primary-faint);
|
|
6694
7437
|
}
|
|
6695
7438
|
|
|
6696
|
-
.kds-copyable-table-row:hover + .kds-copyable-table-row {
|
|
7439
|
+
.kds-copyable-table-row:not(.copied):not(.settling):hover + .kds-copyable-table-row {
|
|
6697
7440
|
border-top-color: transparent;
|
|
6698
7441
|
}
|
|
6699
7442
|
|
|
6700
|
-
.kds-copyable-table-row:active {
|
|
7443
|
+
.kds-copyable-table-row:not(.copied):not(.settling):active {
|
|
6701
7444
|
background: var(--kds-color-primary-selected);
|
|
6702
7445
|
}
|
|
6703
7446
|
|
|
6704
|
-
.kds-copyable-table-row .
|
|
7447
|
+
.kds-copyable-table-row .kds-key {
|
|
6705
7448
|
color: var(--kds-color-text-secondary);
|
|
6706
7449
|
font-size: var(--kds-font-size-caption);
|
|
6707
7450
|
letter-spacing: 0.3px;
|
|
@@ -6710,7 +7453,7 @@ button.kds-btn-success::after {
|
|
|
6710
7453
|
flex: 0 0 auto;
|
|
6711
7454
|
}
|
|
6712
7455
|
|
|
6713
|
-
.kds-copyable-table-row .
|
|
7456
|
+
.kds-copyable-table-row .kds-value {
|
|
6714
7457
|
color: var(--kds-color-text-primary);
|
|
6715
7458
|
font-family: 'JetBrains Mono', 'SF Mono', ui-monospace, Menlo, Consolas, monospace;
|
|
6716
7459
|
font-weight: var(--kds-font-weight-medium);
|
|
@@ -6726,17 +7469,18 @@ button.kds-btn-success::after {
|
|
|
6726
7469
|
flex: 1 1 auto;
|
|
6727
7470
|
}
|
|
6728
7471
|
|
|
6729
|
-
.kds-copyable-table-row .
|
|
7472
|
+
.kds-copyable-table-row .kds-value::after {
|
|
6730
7473
|
content: 'content_copy';
|
|
6731
7474
|
font-family: 'Material Symbols Outlined';
|
|
6732
7475
|
font-size: var(--kds-font-size-sm);
|
|
6733
7476
|
color: var(--kds-color-primary-main);
|
|
6734
7477
|
opacity: 0;
|
|
6735
|
-
|
|
7478
|
+
/* Transición coordinada con la row */
|
|
7479
|
+
transition: opacity 280ms cubic-bezier(0.2, 0.8, 0.2, 1);
|
|
6736
7480
|
flex: 0 0 auto;
|
|
6737
7481
|
}
|
|
6738
7482
|
|
|
6739
|
-
.kds-copyable-table-row:hover .
|
|
7483
|
+
.kds-copyable-table-row:not(.copied):not(.settling):hover .kds-value::after {
|
|
6740
7484
|
opacity: 0.7;
|
|
6741
7485
|
}
|
|
6742
7486
|
|
|
@@ -6744,17 +7488,25 @@ button.kds-btn-success::after {
|
|
|
6744
7488
|
background: var(--kds-color-success-soft);
|
|
6745
7489
|
}
|
|
6746
7490
|
|
|
6747
|
-
.kds-copyable-table-row.copied .
|
|
7491
|
+
.kds-copyable-table-row.copied .kds-value {
|
|
6748
7492
|
color: var(--kds-color-success-dark);
|
|
6749
7493
|
}
|
|
6750
7494
|
|
|
6751
|
-
.kds-copyable-table-row.copied .
|
|
7495
|
+
.kds-copyable-table-row.copied .kds-value::after {
|
|
6752
7496
|
content: 'check';
|
|
6753
7497
|
font-family: 'Material Symbols Outlined';
|
|
6754
7498
|
color: var(--kds-color-success-dark);
|
|
6755
7499
|
opacity: 1;
|
|
6756
7500
|
}
|
|
6757
7501
|
|
|
7502
|
+
/* `.settling`: estado de "recién copiado" — la row vuelve al normal sin
|
|
7503
|
+
activar hover. Dura lo mismo que la transición (~300ms) y se aplica
|
|
7504
|
+
desde React tras quitar `.copied`. */
|
|
7505
|
+
.kds-copyable-table-row.settling .kds-value::after {
|
|
7506
|
+
/* Mantén el check con opacity 0 mientras settling, fade out suave */
|
|
7507
|
+
opacity: 0;
|
|
7508
|
+
}
|
|
7509
|
+
|
|
6758
7510
|
/* Disable BeerCSS ripple on copyable table rows */
|
|
6759
7511
|
.kds-copyable-table-row::after {
|
|
6760
7512
|
display: none;
|
|
@@ -6817,6 +7569,14 @@ a.kds-copy-all-btn.copied:hover {
|
|
|
6817
7569
|
min-height: unset;
|
|
6818
7570
|
}
|
|
6819
7571
|
|
|
7572
|
+
/* Severity variants — default stays warning (backward-compatible) */
|
|
7573
|
+
.kds-section-note.kds-info { color: var(--kds-color-info-dark); }
|
|
7574
|
+
.kds-section-note.kds-info > i { color: var(--kds-color-info-dark); }
|
|
7575
|
+
.kds-section-note.kds-success { color: var(--kds-color-success-dark); }
|
|
7576
|
+
.kds-section-note.kds-success > i { color: var(--kds-color-success-dark); }
|
|
7577
|
+
.kds-section-note.kds-error { color: var(--kds-color-error-dark); }
|
|
7578
|
+
.kds-section-note.kds-error > i { color: var(--kds-color-error-dark); }
|
|
7579
|
+
|
|
6820
7580
|
/* ========================================
|
|
6821
7581
|
INFO TOOLTIP (.kds-info-tip)
|
|
6822
7582
|
Inline info button with hover/click tooltip bubble.
|
|
@@ -6912,7 +7672,7 @@ a.kds-copy-all-btn.copied:hover {
|
|
|
6912
7672
|
.kds-monto-row {
|
|
6913
7673
|
display: flex;
|
|
6914
7674
|
justify-content: space-between;
|
|
6915
|
-
align-items: flex-
|
|
7675
|
+
align-items: flex-start;
|
|
6916
7676
|
padding: var(--kds-spacing-1-75) 0 var(--kds-spacing-1);
|
|
6917
7677
|
border-top: 1px dashed var(--kds-color-divider);
|
|
6918
7678
|
margin-top: var(--kds-spacing-1-75);
|
|
@@ -6936,3 +7696,191 @@ a.kds-copy-all-btn.copied:hover {
|
|
|
6936
7696
|
color: var(--kds-color-text-primary);
|
|
6937
7697
|
}
|
|
6938
7698
|
|
|
7699
|
+
/* ========================================
|
|
7700
|
+
PAYMENT TOTAL (.kds-payment-total)
|
|
7701
|
+
Bloque "monto a pagar" para QR view y email templates.
|
|
7702
|
+
Portado desde paylink-ligopay → <kh:paymentTotal> + materialize-config.css.
|
|
7703
|
+
Variantes:
|
|
7704
|
+
- default: amount grande (3rem) en color primario Khipu.
|
|
7705
|
+
- email: amount compacto (1.5rem) en color texto primario.
|
|
7706
|
+
Responsive (default): mobile (≤ 1024px) centra y oculta titleMobile.
|
|
7707
|
+
======================================== */
|
|
7708
|
+
|
|
7709
|
+
.kds-payment-total {
|
|
7710
|
+
/* Component-scoped tokens — overrideables sin tocar el CSS global. */
|
|
7711
|
+
--kds-payment-total-title-size: var(--kds-font-size-2xl); /* 24px */
|
|
7712
|
+
--kds-payment-total-label-size: var(--kds-font-size-xl); /* 20px */
|
|
7713
|
+
--kds-payment-amount-size: 3rem; /* 48px — destacado */
|
|
7714
|
+
--kds-payment-amount-line-height: var(--kds-line-height-snug);
|
|
7715
|
+
--kds-payment-amount-color: var(--kds-color-primary-main);
|
|
7716
|
+
--kds-payment-amount-weight: var(--kds-font-weight-medium);
|
|
7717
|
+
|
|
7718
|
+
text-align: left;
|
|
7719
|
+
}
|
|
7720
|
+
|
|
7721
|
+
.kds-payment-total-title,
|
|
7722
|
+
.kds-payment-total-title-mobile {
|
|
7723
|
+
font-size: var(--kds-payment-total-title-size);
|
|
7724
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
7725
|
+
color: var(--kds-color-text-primary);
|
|
7726
|
+
margin-bottom: var(--kds-spacing-4);
|
|
7727
|
+
}
|
|
7728
|
+
|
|
7729
|
+
.kds-payment-total-title-mobile {
|
|
7730
|
+
display: none;
|
|
7731
|
+
}
|
|
7732
|
+
|
|
7733
|
+
.kds-payment-total .kds-payment-label {
|
|
7734
|
+
font-size: var(--kds-payment-total-label-size);
|
|
7735
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
7736
|
+
color: var(--kds-color-text-primary);
|
|
7737
|
+
margin-bottom: var(--kds-spacing-1);
|
|
7738
|
+
padding-top: 0;
|
|
7739
|
+
}
|
|
7740
|
+
|
|
7741
|
+
.kds-payment-total .kds-payment-amount {
|
|
7742
|
+
font-size: var(--kds-payment-amount-size);
|
|
7743
|
+
font-weight: var(--kds-payment-amount-weight);
|
|
7744
|
+
line-height: var(--kds-payment-amount-line-height);
|
|
7745
|
+
color: var(--kds-payment-amount-color);
|
|
7746
|
+
margin-bottom: var(--kds-spacing-4);
|
|
7747
|
+
}
|
|
7748
|
+
|
|
7749
|
+
.kds-payment-total .kds-payment-amount .kds-payment-total-decimal-sup,
|
|
7750
|
+
.kds-invoice-amount .kds-payment-total-decimal-sup {
|
|
7751
|
+
font-size: var(--kds-font-size-decimal-sup);
|
|
7752
|
+
font-weight: var(--kds-font-weight-semibold);
|
|
7753
|
+
position: relative;
|
|
7754
|
+
top: 0;
|
|
7755
|
+
}
|
|
7756
|
+
|
|
7757
|
+
/* Variante email: amount compacto en color texto primario, alineación izquierda fija */
|
|
7758
|
+
.kds-payment-total--email {
|
|
7759
|
+
--kds-payment-amount-size: var(--kds-font-size-2xl); /* 24px */
|
|
7760
|
+
--kds-payment-amount-line-height: var(--kds-line-height-snug);
|
|
7761
|
+
--kds-payment-amount-color: var(--kds-color-text-primary);
|
|
7762
|
+
--kds-payment-amount-weight: var(--kds-font-weight-semibold);
|
|
7763
|
+
}
|
|
7764
|
+
|
|
7765
|
+
/* Tone modifier: swaps the amount color to the khipu-blue / LigoPay info blue.
|
|
7766
|
+
Combinable with --email or with the default variant. */
|
|
7767
|
+
.kds-payment-total--tone-info {
|
|
7768
|
+
--kds-payment-amount-color: var(--kds-color-info-blue); /* #5A5FE0 */
|
|
7769
|
+
}
|
|
7770
|
+
|
|
7771
|
+
/* Centered modifier: removes the asymmetric desktop padding (which exists for
|
|
7772
|
+
LigoPay QR view) and centers all internal text. Composable with --email and
|
|
7773
|
+
--tone-info. */
|
|
7774
|
+
.kds-payment-total--centered {
|
|
7775
|
+
padding-left: 0;
|
|
7776
|
+
padding-top: 0;
|
|
7777
|
+
text-align: center;
|
|
7778
|
+
}
|
|
7779
|
+
.kds-payment-total--centered .kds-payment-total-title,
|
|
7780
|
+
.kds-payment-total--centered .kds-payment-total-title-mobile,
|
|
7781
|
+
.kds-payment-total--centered .kds-payment-label,
|
|
7782
|
+
.kds-payment-total--centered .kds-payment-amount {
|
|
7783
|
+
text-align: center;
|
|
7784
|
+
}
|
|
7785
|
+
|
|
7786
|
+
/* Responsive: mobile ≤ 1024px — centra y conmuta los títulos (sólo variante default) */
|
|
7787
|
+
@media (max-width: 1024px) {
|
|
7788
|
+
.kds-payment-total {
|
|
7789
|
+
text-align: center;
|
|
7790
|
+
}
|
|
7791
|
+
|
|
7792
|
+
.kds-payment-total .kds-payment-total-title {
|
|
7793
|
+
display: none;
|
|
7794
|
+
}
|
|
7795
|
+
|
|
7796
|
+
.kds-payment-total .kds-payment-total-title-mobile {
|
|
7797
|
+
display: block;
|
|
7798
|
+
text-align: center;
|
|
7799
|
+
}
|
|
7800
|
+
|
|
7801
|
+
.kds-payment-total .kds-payment-label,
|
|
7802
|
+
.kds-payment-total .kds-payment-amount {
|
|
7803
|
+
text-align: center;
|
|
7804
|
+
}
|
|
7805
|
+
|
|
7806
|
+
/* Email mantiene alineación izquierda incluso en mobile (matchea email clients) */
|
|
7807
|
+
.kds-payment-total--email,
|
|
7808
|
+
.kds-payment-total--email .kds-payment-label,
|
|
7809
|
+
.kds-payment-total--email .kds-payment-amount {
|
|
7810
|
+
text-align: left;
|
|
7811
|
+
}
|
|
7812
|
+
}
|
|
7813
|
+
|
|
7814
|
+
/* ==========================================================================
|
|
7815
|
+
GRID UTILITIES — semantic aliases for BeerCSS .grid / .s* / .m* / .l*
|
|
7816
|
+
|
|
7817
|
+
Estas utilidades son ALIAS de las clases cortas de BeerCSS para que
|
|
7818
|
+
consumers (payment, LigoPay, Grails legacy) puedan escribir markup con
|
|
7819
|
+
nombres descriptivos sin renunciar al grid de 12 columnas de BeerCSS.
|
|
7820
|
+
|
|
7821
|
+
Convención (estilo Bootstrap responsive):
|
|
7822
|
+
- kds-grid → .grid (12-col CSS grid + 1rem gap)
|
|
7823
|
+
- kds-col-sm-{1..12} → .s{1..12} (mobile, siempre aplica)
|
|
7824
|
+
- kds-col-md-{1..12} → .m{1..12} (>=601px)
|
|
7825
|
+
- kds-col-lg-{1..12} → .l{1..12} (>=993px)
|
|
7826
|
+
|
|
7827
|
+
Las definiciones originales de BeerCSS NO se tocan; estas son aditivas.
|
|
7828
|
+
========================================================================== */
|
|
7829
|
+
|
|
7830
|
+
.kds-grid {
|
|
7831
|
+
--_gap: 1rem;
|
|
7832
|
+
display: grid;
|
|
7833
|
+
grid-template-columns: repeat(12, 1fr);
|
|
7834
|
+
gap: var(--_gap);
|
|
7835
|
+
block-size: auto;
|
|
7836
|
+
}
|
|
7837
|
+
|
|
7838
|
+
.kds-grid.kds-grid-no-space { --_gap: 0rem; }
|
|
7839
|
+
.kds-grid.kds-grid-medium-space { --_gap: 1.5rem; }
|
|
7840
|
+
.kds-grid.kds-grid-large-space { --_gap: 2rem; }
|
|
7841
|
+
|
|
7842
|
+
.kds-grid > * { margin: 0; }
|
|
7843
|
+
|
|
7844
|
+
.kds-col-sm-1 { grid-area: auto/span 1; }
|
|
7845
|
+
.kds-col-sm-2 { grid-area: auto/span 2; }
|
|
7846
|
+
.kds-col-sm-3 { grid-area: auto/span 3; }
|
|
7847
|
+
.kds-col-sm-4 { grid-area: auto/span 4; }
|
|
7848
|
+
.kds-col-sm-5 { grid-area: auto/span 5; }
|
|
7849
|
+
.kds-col-sm-6 { grid-area: auto/span 6; }
|
|
7850
|
+
.kds-col-sm-7 { grid-area: auto/span 7; }
|
|
7851
|
+
.kds-col-sm-8 { grid-area: auto/span 8; }
|
|
7852
|
+
.kds-col-sm-9 { grid-area: auto/span 9; }
|
|
7853
|
+
.kds-col-sm-10 { grid-area: auto/span 10; }
|
|
7854
|
+
.kds-col-sm-11 { grid-area: auto/span 11; }
|
|
7855
|
+
.kds-col-sm-12 { grid-area: auto/span 12; }
|
|
7856
|
+
|
|
7857
|
+
@media only screen and (min-width: 601px) {
|
|
7858
|
+
.kds-col-md-1 { grid-area: auto/span 1; }
|
|
7859
|
+
.kds-col-md-2 { grid-area: auto/span 2; }
|
|
7860
|
+
.kds-col-md-3 { grid-area: auto/span 3; }
|
|
7861
|
+
.kds-col-md-4 { grid-area: auto/span 4; }
|
|
7862
|
+
.kds-col-md-5 { grid-area: auto/span 5; }
|
|
7863
|
+
.kds-col-md-6 { grid-area: auto/span 6; }
|
|
7864
|
+
.kds-col-md-7 { grid-area: auto/span 7; }
|
|
7865
|
+
.kds-col-md-8 { grid-area: auto/span 8; }
|
|
7866
|
+
.kds-col-md-9 { grid-area: auto/span 9; }
|
|
7867
|
+
.kds-col-md-10 { grid-area: auto/span 10; }
|
|
7868
|
+
.kds-col-md-11 { grid-area: auto/span 11; }
|
|
7869
|
+
.kds-col-md-12 { grid-area: auto/span 12; }
|
|
7870
|
+
}
|
|
7871
|
+
|
|
7872
|
+
@media only screen and (min-width: 993px) {
|
|
7873
|
+
.kds-col-lg-1 { grid-area: auto/span 1; }
|
|
7874
|
+
.kds-col-lg-2 { grid-area: auto/span 2; }
|
|
7875
|
+
.kds-col-lg-3 { grid-area: auto/span 3; }
|
|
7876
|
+
.kds-col-lg-4 { grid-area: auto/span 4; }
|
|
7877
|
+
.kds-col-lg-5 { grid-area: auto/span 5; }
|
|
7878
|
+
.kds-col-lg-6 { grid-area: auto/span 6; }
|
|
7879
|
+
.kds-col-lg-7 { grid-area: auto/span 7; }
|
|
7880
|
+
.kds-col-lg-8 { grid-area: auto/span 8; }
|
|
7881
|
+
.kds-col-lg-9 { grid-area: auto/span 9; }
|
|
7882
|
+
.kds-col-lg-10 { grid-area: auto/span 10; }
|
|
7883
|
+
.kds-col-lg-11 { grid-area: auto/span 11; }
|
|
7884
|
+
.kds-col-lg-12 { grid-area: auto/span 12; }
|
|
7885
|
+
}
|
|
7886
|
+
|