holygrail5 1.0.19 → 1.0.21

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.
Files changed (77) hide show
  1. package/README.md +88 -18
  2. package/config.json +205 -77
  3. package/dist/assets/fonts/suisse-intl-light.woff +0 -0
  4. package/dist/assets/fonts/suisse-intl-light.woff2 +0 -0
  5. package/dist/assets/fonts/suisse-intl-medium.woff +0 -0
  6. package/dist/assets/fonts/suisse-intl-medium.woff2 +0 -0
  7. package/dist/assets/fonts/suisse-intl-regular.woff +0 -0
  8. package/dist/assets/fonts/suisse-intl-regular.woff2 +0 -0
  9. package/dist/assets/fonts/suisse-intl-semibold.woff +0 -0
  10. package/dist/assets/fonts/suisse-intl-semibold.woff2 +0 -0
  11. package/dist/assets/fonts/suisse-works-bold.woff +0 -0
  12. package/dist/assets/fonts/suisse-works-bold.woff2 +0 -0
  13. package/dist/assets/fonts/suisse-works-medium.woff +0 -0
  14. package/dist/assets/fonts/suisse-works-medium.woff2 +0 -0
  15. package/dist/assets/fonts/suisse-works-regular.woff +0 -0
  16. package/dist/assets/fonts/suisse-works-regular.woff2 +0 -0
  17. package/dist/componentes.html +429 -0
  18. package/dist/developer-guide.md +7 -7
  19. package/dist/guide-styles.css +197 -25
  20. package/dist/index.html +807 -689
  21. package/dist/output.css +217 -114
  22. package/dist/skills.html +14 -8
  23. package/dist/themes/dutti-demo.html +713 -19
  24. package/dist/themes/dutti.css +67 -16
  25. package/dist/themes/limited-demo.html +1121 -0
  26. package/dist/themes/limited.css +2493 -0
  27. package/package.json +1 -1
  28. package/src/.data/.previous-values.json +151 -84
  29. package/src/assets/fonts/suisse-intl-light.woff +0 -0
  30. package/src/assets/fonts/suisse-intl-light.woff2 +0 -0
  31. package/src/assets/fonts/suisse-intl-medium.woff +0 -0
  32. package/src/assets/fonts/suisse-intl-medium.woff2 +0 -0
  33. package/src/assets/fonts/suisse-intl-regular.woff +0 -0
  34. package/src/assets/fonts/suisse-intl-regular.woff2 +0 -0
  35. package/src/assets/fonts/suisse-intl-semibold.woff +0 -0
  36. package/src/assets/fonts/suisse-intl-semibold.woff2 +0 -0
  37. package/src/assets/fonts/suisse-works-bold.woff +0 -0
  38. package/src/assets/fonts/suisse-works-bold.woff2 +0 -0
  39. package/src/assets/fonts/suisse-works-medium.woff +0 -0
  40. package/src/assets/fonts/suisse-works-medium.woff2 +0 -0
  41. package/src/assets/fonts/suisse-works-regular.woff +0 -0
  42. package/src/assets/fonts/suisse-works-regular.woff2 +0 -0
  43. package/src/build/asset-manager.js +94 -3
  44. package/src/build/build-orchestrator.js +74 -12
  45. package/src/build/components-generator.js +584 -0
  46. package/src/build/skills-generator.js +43 -5
  47. package/src/build/theme-config-loader.js +58 -0
  48. package/src/build/theme-transformer.js +109 -16
  49. package/src/build/theme-vars-table-generator.js +349 -0
  50. package/src/build/typo-table-generator.js +154 -0
  51. package/src/docs-generator/guide-styles.css +197 -24
  52. package/src/docs-generator/html-generator.js +92 -246
  53. package/src/docs-generator/sections/colors-section.js +109 -0
  54. package/src/docs-generator/value-tracker.js +154 -0
  55. package/src/generators/typo-generator.js +2 -1
  56. package/src/generators/utils.js +90 -1
  57. package/src/skills.html +1 -0
  58. package/src/watch-config.js +99 -32
  59. package/themes/{dutti → _base}/_buttons.css +2 -2
  60. package/themes/{dutti → _base}/_checkboxes.css +1 -1
  61. package/themes/{dutti → _base}/_forms.css +1 -1
  62. package/themes/{dutti → _base}/_inputs.css +55 -10
  63. package/themes/{dutti → _base}/_labels.css +1 -1
  64. package/themes/dutti/README.md +67 -21
  65. package/themes/dutti/_variables.css +7 -1
  66. package/themes/dutti/demo.html +18 -14
  67. package/themes/dutti/theme.css +22 -44
  68. package/themes/dutti/theme.json +86 -0
  69. package/themes/limited/_variables.css +123 -0
  70. package/themes/limited/demo.html +296 -0
  71. package/themes/limited/theme.css +32 -0
  72. package/themes/limited/theme.json +105 -0
  73. /package/themes/{dutti → _base}/_containers.css +0 -0
  74. /package/themes/{dutti → _base}/_radios.css +0 -0
  75. /package/themes/{dutti → _base}/_switches.css +0 -0
  76. /package/themes/{dutti → _base}/components/_icons.css +0 -0
  77. /package/themes/{dutti → _base}/objects/_grid.css +0 -0
@@ -0,0 +1,2493 @@
1
+ /* === _variables.css === */
2
+ /**
3
+ * Variables del Tema Limited
4
+ * Paleta: lujo cálido (dorados, bronces y crema)
5
+ * Tipografía 100% serif: Suisse Works (titulares + texto corrido).
6
+ *
7
+ * Las @font-face de Suisse Works se declaran en guide-styles.css
8
+ * y se sirven desde dist/assets/fonts/ como woff2.
9
+ *
10
+ * Sobrescribe los tokens de color base de HolyGrail5 (--hg-color-*)
11
+ * y los tokens de tipografía (--hg-typo-font-family-*) para aplicar
12
+ * el look & feel del tema sin tocar config.json.
13
+ */
14
+
15
+ :root {
16
+ /* ─────────────────────────────────────────────
17
+ Overrides de tokens base HolyGrail5 (colores)
18
+ Estos valores prevalecen sobre config.json y
19
+ actualizan automáticamente los componentVars
20
+ que apuntan con var(--hg-color-*).
21
+ ───────────────────────────────────────────── */
22
+ --hg-color-primary: #1D1D1D;
23
+ --hg-color-feel: #A38A6B;
24
+ --hg-color-feel-dark: #7A6346;
25
+ --hg-color-error: #9B2A1E;
26
+ --hg-color-success: #7A8D5F;
27
+ --hg-color-warning: #D4A84B;
28
+ --hg-color-info: #5B7FA1;
29
+ --hg-color-bg-light: #F4F2ED;
30
+ --hg-color-bg-cream: #F4F2ED;
31
+
32
+ /* ─────────────────────────────────────────────
33
+ Overrides de tipografía del tema (100% serif)
34
+ Suisse Works → titulares y texto corrido
35
+ ───────────────────────────────────────────── */
36
+ --hg-typo-font-family-primary-light: "suisse-works-regular", Georgia, "Times New Roman", serif;
37
+ --hg-typo-font-family-primary-regular: "suisse-works-regular", Georgia, "Times New Roman", serif;
38
+ --hg-typo-font-family-primary-bold: "suisse-works-bold", Georgia, "Times New Roman", serif;
39
+ --hg-typo-font-family-secondary: "suisse-works-medium", Georgia, "Times New Roman", serif;
40
+
41
+ /* ─────────────────────────────────────────────
42
+ Variables del tema (mapeo a los tokens base)
43
+ ───────────────────────────────────────────── */
44
+ --btn-primary-bg: var(--hg-color-primary);
45
+ --btn-primary-color: var(--hg-color-white);
46
+ --btn-primary-hover-bg: var(--hg-color-feel-dark);
47
+
48
+ --btn-secondary-bg: var(--hg-color-feel);
49
+ --btn-secondary-color: var(--hg-color-white);
50
+ --btn-secondary-hover-bg: var(--hg-color-feel-dark);
51
+
52
+ --btn-outline-border: var(--hg-color-feel-dark);
53
+ --btn-outline-color: var(--hg-color-feel-dark);
54
+ --btn-outline-hover-bg: var(--hg-color-feel-dark);
55
+ --btn-outline-hover-color: var(--hg-color-white);
56
+
57
+ --btn-ghost-color: var(--hg-color-primary);
58
+ --btn-ghost-hover-bg: var(--hg-color-bg-cream);
59
+
60
+ --btn-feel-bg: var(--hg-color-feel);
61
+ --btn-feel-color: var(--hg-color-white);
62
+ --btn-feel-hover-bg: var(--hg-color-feel-dark);
63
+
64
+ --input-border: var(--hg-color-middle-grey);
65
+ --input-border-focus: var(--hg-color-feel-dark);
66
+ --input-bg: var(--hg-color-white);
67
+ --input-color: var(--hg-color-primary);
68
+ --input-placeholder: var(--hg-color-middle-grey);
69
+
70
+ --input-error-border: var(--hg-color-error);
71
+ --input-success-border: var(--hg-color-success);
72
+ --input-warning-border: var(--hg-color-warning);
73
+
74
+ --label-color: var(--hg-color-primary);
75
+ --label-required: var(--hg-color-error);
76
+
77
+ --checkbox-bg: var(--hg-color-white);
78
+ --checkbox-border: var(--hg-color-middle-grey);
79
+ --checkbox-checked-bg: var(--hg-color-feel-dark);
80
+ --checkbox-checked-border: var(--hg-color-feel-dark);
81
+
82
+ --radio-bg: var(--hg-color-white);
83
+ --radio-border: var(--hg-color-middle-grey);
84
+ --radio-checked-bg: var(--hg-color-feel-dark);
85
+ --radio-checked-border: var(--hg-color-feel-dark);
86
+
87
+ --switch-bg: var(--hg-color-middle-grey);
88
+ --switch-active-bg: var(--hg-color-feel);
89
+ --switch-thumb: var(--hg-color-white);
90
+
91
+ /* Espaciados - usando variables de HolyGrail5 */
92
+ --btn-padding-x-sm: var(--hg-spacing-12);
93
+ --btn-padding-y-sm: var(--hg-spacing-8);
94
+ --btn-padding-x-md: var(--hg-spacing-16);
95
+ --btn-padding-y-md: var(--hg-spacing-12);
96
+ --btn-padding-x-lg: var(--hg-spacing-24);
97
+ --btn-padding-y-lg: var(--hg-spacing-16);
98
+
99
+ --input-padding-x: var(--hg-spacing-16);
100
+ --input-padding-y: var(--hg-spacing-12);
101
+ --input-gap: var(--hg-spacing-8);
102
+
103
+ --form-group-gap: var(--hg-spacing-16);
104
+
105
+ /* Bordes y radios */
106
+ --border-radius: 0;
107
+ --border-width: 1px;
108
+ --border-style: solid;
109
+
110
+ /* Transiciones */
111
+ --transition: all 0.3s ease;
112
+ }
113
+
114
+ /* ─────────────────────────────────────────────
115
+ Refuerzo tipográfico: titulares en Suisse Works
116
+ ───────────────────────────────────────────── */
117
+ .demo-container h1,
118
+ .demo-container h2,
119
+ .demo-container .demo-title,
120
+ .demo-container .hg-vars-section__title {
121
+ font-family: var(--hg-typo-font-family-secondary);
122
+ font-weight: 600;
123
+ letter-spacing: 0.01em;
124
+ }
125
+
126
+
127
+ /* === _buttons.css === */
128
+ /**
129
+ * Botones
130
+ * Variantes: primary, secondary, tertiary, label-m, link, badge
131
+ * Tamaños: sm, md, lg
132
+ */
133
+
134
+ .btn {
135
+ display: inline-flex;
136
+ align-items: center;
137
+ justify-content: center;
138
+ gap: var(--hg-spacing-8);
139
+ font-family: var(--hg-typo-font-family-primary-regular);
140
+ font-size: var(--hg-typo-font-size-13);
141
+ font-weight: var(--hg-typo-font-weight-400);
142
+ line-height: var(--hg-typo-line-height-1-5);
143
+ text-decoration: none;
144
+ border: var(--border-width) var(--border-style) transparent;
145
+ border-radius: var(--border-radius);
146
+ cursor: pointer;
147
+ transition: var(--transition);
148
+ white-space: nowrap;
149
+ user-select: none;
150
+ -webkit-tap-highlight-color: transparent;
151
+ min-height: 32px;
152
+ }
153
+
154
+ /* Tamaños de botones */
155
+ .btn-sm {
156
+ padding: var(--btn-padding-y-sm) var(--btn-padding-x-sm);
157
+ font-size: var(--hg-typo-font-size-12);
158
+ }
159
+
160
+ .btn-md {
161
+ padding: var(--btn-padding-y-md) var(--btn-padding-x-md);
162
+ font-size: var(--hg-typo-font-size-13);
163
+ }
164
+
165
+ .btn-lg {
166
+ padding: var(--btn-padding-y-lg) var(--btn-padding-x-lg);
167
+ font-size: var(--hg-typo-font-size-14);
168
+ }
169
+
170
+ /* PRIMARY BUTTON */
171
+ .btn-primary {
172
+ color: var(--hg-color-white);
173
+ background-color: var(--hg-color-black);
174
+ border: var(--border-width) var(--border-style) var(--hg-color-black);
175
+ font-family: var(--hg-typo-font-family-primary-regular);
176
+ font-weight: var(--hg-typo-font-weight-400);
177
+ }
178
+
179
+ .btn-primary svg g {
180
+ fill: var(--hg-color-white);
181
+ stroke: var(--hg-color-white);
182
+ }
183
+
184
+ .btn-primary svg circle {
185
+ stroke: var(--hg-color-white);
186
+ }
187
+
188
+ .btn-primary svg path {
189
+ fill: var(--hg-color-white);
190
+ }
191
+
192
+ .btn-primary:focus,
193
+ .btn-primary.focus,
194
+ .btn-primary:hover,
195
+ .btn-primary.hover,
196
+ .btn-primary:active,
197
+ .btn-primary.active {
198
+ color: var(--hg-color-white);
199
+ background-color: var(--hg-color-dark-grey);
200
+ border: var(--border-width) var(--border-style) var(--hg-color-dark-grey);
201
+ opacity: 1;
202
+ cursor: pointer;
203
+ }
204
+
205
+ .btn-primary[disabled],
206
+ .btn-primary:disabled,
207
+ .btn-primary.disabled {
208
+ background-color: var(--hg-color-bg-light);
209
+ border: var(--border-width) var(--border-style) var(--hg-color-bg-light);
210
+ color: var(--hg-color-dark-grey);
211
+ opacity: 1;
212
+ cursor: not-allowed;
213
+ pointer-events: none;
214
+ }
215
+
216
+ .btn-primary[disabled] svg g,
217
+ .btn-primary:disabled svg g,
218
+ .btn-primary.disabled svg g {
219
+ fill: var(--hg-color-dark-grey);
220
+ stroke: var(--hg-color-dark-grey);
221
+ }
222
+
223
+ .btn-primary[disabled] svg circle,
224
+ .btn-primary:disabled svg circle,
225
+ .btn-primary.disabled svg circle {
226
+ stroke: var(--hg-color-dark-grey);
227
+ }
228
+
229
+ .btn-primary[disabled] svg path,
230
+ .btn-primary:disabled svg path,
231
+ .btn-primary.disabled svg path {
232
+ fill: var(--hg-color-dark-grey);
233
+ }
234
+
235
+ /* SECONDARY BUTTON */
236
+ .btn-secondary {
237
+ color: var(--hg-color-black);
238
+ background-color: var(--hg-color-white);
239
+ border: var(--border-width) var(--border-style) var(--hg-color-black);
240
+ line-height: 1;
241
+ }
242
+
243
+ .btn-secondary svg circle {
244
+ stroke: var(--hg-color-black);
245
+ }
246
+
247
+ .btn-secondary:focus,
248
+ .btn-secondary.focus,
249
+ .btn-secondary:hover,
250
+ .btn-secondary.hover,
251
+ .btn-secondary:active,
252
+ .btn-secondary.active {
253
+ color: var(--hg-color-black);
254
+ background-color: var(--hg-color-white);
255
+ border: var(--border-width) var(--border-style) var(--hg-color-dark-grey);
256
+ opacity: 1;
257
+ }
258
+
259
+ .btn-secondary[disabled],
260
+ .btn-secondary:disabled,
261
+ .btn-secondary.disabled {
262
+ background-color: var(--hg-color-bg-light);
263
+ border: var(--border-width) var(--border-style) var(--hg-color-bg-light);
264
+ color: var(--hg-color-dark-grey);
265
+ opacity: 1;
266
+ cursor: not-allowed;
267
+ pointer-events: none;
268
+ }
269
+
270
+ .btn-secondary[disabled] svg g,
271
+ .btn-secondary:disabled svg g,
272
+ .btn-secondary.disabled svg g {
273
+ fill: var(--hg-color-middle-grey);
274
+ stroke: var(--hg-color-middle-grey);
275
+ }
276
+
277
+ .btn-secondary[disabled] svg circle,
278
+ .btn-secondary:disabled svg circle,
279
+ .btn-secondary.disabled svg circle {
280
+ stroke: var(--hg-color-middle-grey);
281
+ }
282
+
283
+ .btn-secondary[disabled] svg path,
284
+ .btn-secondary:disabled svg path,
285
+ .btn-secondary.disabled svg path {
286
+ fill: var(--hg-color-middle-grey);
287
+ }
288
+
289
+ /* TERTIARY BUTTON */
290
+ .btn-tertiary {
291
+ background-color: transparent;
292
+ border: 0 solid transparent;
293
+ height: auto;
294
+ min-height: auto;
295
+ padding-top: 6px;
296
+ padding-bottom: 6px;
297
+ line-height: 1;
298
+ min-width: 24px;
299
+ padding-inline: 0;
300
+ }
301
+
302
+ .btn-tertiary svg g {
303
+ fill: var(--hg-color-black);
304
+ stroke: var(--hg-color-black);
305
+ }
306
+
307
+ .btn-tertiary svg circle {
308
+ stroke: var(--hg-color-black);
309
+ }
310
+
311
+ .btn-tertiary:focus,
312
+ .btn-tertiary.focus,
313
+ .btn-tertiary:hover,
314
+ .btn-tertiary.hover,
315
+ .btn-tertiary:active,
316
+ .btn-tertiary.active {
317
+ border: 0 solid transparent;
318
+ background-color: transparent;
319
+ cursor: pointer;
320
+ }
321
+
322
+ .btn-tertiary.active {
323
+ border-bottom: 0.5px solid var(--hg-color-black);
324
+ }
325
+
326
+ .btn-tertiary:disabled,
327
+ .btn-tertiary[disabled],
328
+ .btn-tertiary.disabled {
329
+ pointer-events: none;
330
+ cursor: default;
331
+ background-color: var(--hg-color-bg-light);
332
+ border: var(--border-width) var(--border-style) var(--hg-color-bg-light);
333
+ color: var(--hg-color-dark-grey);
334
+ filter: none;
335
+ opacity: 1;
336
+ }
337
+
338
+ .btn-tertiary:disabled svg-icon,
339
+ .btn-tertiary:disabled svg-icon2,
340
+ .btn-tertiary:disabled md-icon,
341
+ .btn-tertiary[disabled] svg-icon,
342
+ .btn-tertiary[disabled] svg-icon2,
343
+ .btn-tertiary[disabled] md-icon,
344
+ .btn-tertiary.disabled svg-icon,
345
+ .btn-tertiary.disabled svg-icon2,
346
+ .btn-tertiary.disabled md-icon {
347
+ background-color: transparent !important;
348
+ border: 0 solid transparent !important;
349
+ }
350
+
351
+ /* LABEL M BUTTON (similar a tertiary) */
352
+ .btn-label-m {
353
+ background-color: transparent;
354
+ border: 0 solid transparent;
355
+ height: auto;
356
+ min-height: auto;
357
+ padding-top: 6px;
358
+ padding-bottom: 6px;
359
+ line-height: 1;
360
+ min-width: 24px;
361
+ padding-inline: 0;
362
+ color: var(--hg-color-black);
363
+ letter-spacing: 0.16em;
364
+ }
365
+
366
+ .btn-label-m svg g {
367
+ fill: var(--hg-color-black);
368
+ stroke: var(--hg-color-black);
369
+ }
370
+
371
+ .btn-label-m svg circle {
372
+ stroke: var(--hg-color-black);
373
+ }
374
+
375
+ .btn-label-m:focus,
376
+ .btn-label-m.focus,
377
+ .btn-label-m:hover,
378
+ .btn-label-m.hover,
379
+ .btn-label-m:active,
380
+ .btn-label-m.active {
381
+ border: 0 solid transparent;
382
+ background-color: transparent;
383
+ cursor: pointer;
384
+ font-family: var(--hg-typo-font-family-primary-bold);
385
+ font-weight: var(--hg-typo-font-weight-500);
386
+ }
387
+
388
+ .btn-label-m.active {
389
+ border-bottom: 0.5px solid var(--hg-color-black);
390
+ }
391
+
392
+ .btn-label-m:disabled,
393
+ .btn-label-m[disabled],
394
+ .btn-label-m.disabled {
395
+ pointer-events: none;
396
+ cursor: default;
397
+ background-color: var(--hg-color-bg-light);
398
+ border: var(--border-width) var(--border-style) var(--hg-color-bg-light);
399
+ color: var(--hg-color-dark-grey);
400
+ filter: none;
401
+ opacity: 1;
402
+ }
403
+
404
+ .btn-label-m:disabled svg-icon,
405
+ .btn-label-m:disabled svg-icon2,
406
+ .btn-label-m:disabled md-icon,
407
+ .btn-label-m[disabled] svg-icon,
408
+ .btn-label-m[disabled] svg-icon2,
409
+ .btn-label-m[disabled] md-icon,
410
+ .btn-label-m.disabled svg-icon,
411
+ .btn-label-m.disabled svg-icon2,
412
+ .btn-label-m.disabled md-icon {
413
+ background-color: transparent !important;
414
+ border: 0 solid transparent !important;
415
+ }
416
+
417
+ /* LINK BUTTON */
418
+ .btn-link {
419
+ background-color: transparent;
420
+ border: none;
421
+ color: var(--hg-color-black);
422
+ padding: 0;
423
+ min-height: auto;
424
+ font-weight: var(--hg-typo-font-weight-400);
425
+ }
426
+
427
+ .btn-link:hover,
428
+ .btn-link:focus {
429
+ color: var(--hg-color-dark-grey);
430
+ background-color: transparent;
431
+ }
432
+
433
+ .btn-link:disabled,
434
+ .btn-link[disabled],
435
+ .btn-link.disabled {
436
+ color: var(--hg-color-dark-grey);
437
+ background-color: transparent;
438
+ cursor: not-allowed;
439
+ pointer-events: none;
440
+ opacity: 0.5;
441
+ }
442
+
443
+
444
+ .btn-badge {
445
+ min-height: auto;
446
+ height: auto;
447
+ padding: var(--hg-spacing-4) var(--hg-spacing-12);
448
+
449
+ background-color: transparent;
450
+ color: var(--hg-color-dark-grey);
451
+ font-size: var(--hg-typo-font-size-12);
452
+ white-space: nowrap;
453
+ }
454
+
455
+ .btn-badge:focus,
456
+ .btn-badge.focus,
457
+ .btn-badge:hover,
458
+ .btn-badge.hover,
459
+ .btn-badge:active,
460
+ .btn-badge.active {
461
+ background-color:transparent;
462
+ color: var(--hg-color-primary);
463
+ border-color: transparent;
464
+ cursor: pointer;
465
+ }
466
+
467
+ .btn-badge:disabled,
468
+ .btn-badge[disabled],
469
+ .btn-badge.disabled {
470
+ pointer-events: none;
471
+ cursor: default;
472
+ background-color: var(--hg-color-white);
473
+ border-color: transparent;
474
+ color: var(--hg-color-middle-grey);
475
+ opacity: 1;
476
+ }
477
+
478
+ /* Badge en contexto claro (fondo oscuro) */
479
+ .has-light .btn-badge {
480
+ background-color: transparent;
481
+ color: var(--hg-color-white);
482
+ border-color: transparent;
483
+ }
484
+
485
+ .has-light .btn-badge:focus,
486
+ .has-light .btn-badge.focus,
487
+ .has-light .btn-badge:hover,
488
+ .has-light .btn-badge.hover,
489
+ .has-light .btn-badge:active,
490
+ .has-light .btn-badge.active {
491
+ background-color: transparent;
492
+ color: var(--hg-color-white);
493
+ border-color: transparent;
494
+ cursor: pointer;
495
+ }
496
+
497
+ .has-light .btn-badge:disabled,
498
+ .has-light .btn-badge[disabled],
499
+ .has-light .btn-badge.disabled {
500
+ background-color: transparent;
501
+ border-color: transparent;
502
+ color: var(--hg-color-light-grey);
503
+ opacity: 1;
504
+ }
505
+
506
+ /* Ancho completo */
507
+ .btn-full {
508
+ width: 100%;
509
+ }
510
+
511
+
512
+ /* === _inputs.css === */
513
+ /**
514
+ * Inputs
515
+ * Estados: error, success, warning, disabled
516
+ */
517
+
518
+ .input {
519
+ display: block;
520
+ width: 100%;
521
+ font-family: var(--hg-typo-font-family-primary-regular);
522
+ font-size: var(--hg-typo-font-size-13);
523
+ font-weight: var(--hg-typo-font-weight-400);
524
+ line-height: var(--hg-typo-line-height-1-5);
525
+ color: var(--input-color);
526
+ background-color: var(--input-bg);
527
+ border: var(--border-width) var(--border-style) var(--input-border);
528
+ border-radius: var(--border-radius);
529
+ padding: var(--input-padding-y) var(--input-padding-x);
530
+ min-height: 40px;
531
+ -webkit-appearance: none;
532
+ -moz-appearance: none;
533
+ appearance: none;
534
+ }
535
+
536
+ .input:focus {
537
+ outline: none;
538
+ border-color: var(--input-border-focus);
539
+ }
540
+
541
+ .input::placeholder {
542
+ color: var(--input-placeholder);
543
+ opacity: 1;
544
+ }
545
+
546
+ .input:disabled {
547
+ opacity: 0.5;
548
+ cursor: not-allowed;
549
+ background-color: var(--hg-color-light-grey);
550
+ }
551
+
552
+ /* Estados de inputs */
553
+ .input-error {
554
+ border-color: var(--input-error-border);
555
+ }
556
+
557
+ .input-success {
558
+ border-color: var(--input-success-border);
559
+ }
560
+
561
+ .input-warning {
562
+ border-color: var(--input-warning-border);
563
+ }
564
+
565
+ /* ============================================
566
+ FORM-INPUT-LABEL-2 (Inputs con label flotante)
567
+ ============================================ */
568
+
569
+ .form-input-label-2,
570
+ .error-zone {
571
+ font-family: var(--hg-typo-font-family-primary-regular);
572
+ position: relative;
573
+
574
+ display: block;
575
+ }
576
+
577
+ .form-input-label-2 label,
578
+ .error-zone label {
579
+ font-size: 12px;
580
+ }
581
+
582
+ .form-input-label-2 .validation-error-messages,
583
+ .error-zone .validation-error-messages {
584
+ width: calc(100% - 40px);
585
+ }
586
+
587
+ .form-input-label-2 .help,
588
+ .error-zone .help {
589
+ font-family: var(--hg-typo-font-family-primary-regular);
590
+ position: relative;
591
+ line-height: 1.5;
592
+ font-size: 12px;
593
+ margin-top: 0;
594
+ padding-top: 2px;
595
+ margin-bottom: var(--hg-spacing-4);
596
+ display: flex;
597
+ flex-direction: row;
598
+ justify-content: flex-start;
599
+ align-items: flex-start;
600
+ }
601
+
602
+ .form-input-label-2 .input-text,
603
+ .error-zone .input-text {
604
+ color: var(--hg-color-dark-grey);
605
+ margin-top: var(--hg-spacing-4);
606
+ line-height: 1;
607
+ }
608
+
609
+ .form-input-label-2 .info-text,
610
+ .error-zone .info-text {
611
+ color: var(--hg-color-dark-grey);
612
+ margin-top: var(--hg-spacing-4);
613
+ width: auto;
614
+ position: absolute;
615
+ right: 0;
616
+ }
617
+
618
+ .form-input-label-2 > input,
619
+ .form-input-label-2 > textarea,
620
+ .form-input-label-2 > select,
621
+ .form-input-label-2 > label,
622
+ .error-zone > input,
623
+ .error-zone > textarea,
624
+ .error-zone > select,
625
+ .error-zone > label {
626
+ font-family: var(--hg-typo-font-family-primary-regular);
627
+ font-weight: normal;
628
+ }
629
+
630
+ .form-input-label-2 > input,
631
+ .form-input-label-2 > textarea,
632
+ .form-input-label-2 > select,
633
+ .error-zone > input,
634
+ .error-zone > textarea,
635
+ .error-zone > select {
636
+ border: none;
637
+ border-bottom: var(--border-width) var(--border-style) var(--hg-color-primary);
638
+ border-radius: 0;
639
+ background-color: transparent;
640
+ padding: var(--hg-spacing-16) 0 var(--hg-spacing-8) 0;
641
+ padding-left: 0;
642
+ padding-right: 0;
643
+ box-sizing: border-box;
644
+ transition: border-bottom-color 0.1s ease-in-out, border-bottom-width 0.1s ease-in-out;
645
+ margin: 0;
646
+ vertical-align: top;
647
+ }
648
+
649
+ .form-input-label-2 > input,
650
+ .form-input-label-2 > select,
651
+ .error-zone > input,
652
+ .error-zone > select {
653
+ height: 40px;
654
+ }
655
+
656
+ /* El textarea mantiene su altura natural (rows) pero respeta el padding
657
+ superior para dejar aire al label flotado. */
658
+ .form-input-label-2 > textarea,
659
+ .error-zone > textarea {
660
+ min-height: 40px;
661
+ resize: vertical;
662
+ }
663
+
664
+ .form-input-label-2 > label,
665
+ .error-zone > label {
666
+ box-sizing: border-box;
667
+ position: absolute;
668
+ top: var(--hg-spacing-16);
669
+ left: 0;
670
+ display: block;
671
+ width: 100%;
672
+ font-weight: normal;
673
+ margin: 0;
674
+ padding: 0;
675
+ line-height: 1.1;
676
+ color: #000000;
677
+ border-radius: 0;
678
+ transition: transform 0.1s ease-in-out, font-size 0.1s ease-in-out, color 0.1s ease-in-out, top 0.1s ease-in-out;
679
+ pointer-events: none;
680
+ transform-origin: left top;
681
+ }
682
+
683
+ .form-input-label-2 input::placeholder,
684
+ .form-input-label-2 textarea::placeholder,
685
+ .error-zone input::placeholder,
686
+ .error-zone textarea::placeholder {
687
+ color: transparent;
688
+ }
689
+
690
+ .form-input-label-2 input:not(:placeholder-shown) ~ label,
691
+ .form-input-label-2 textarea:not(:placeholder-shown) ~ label,
692
+ .error-zone input:not(:placeholder-shown) ~ label,
693
+ .error-zone textarea:not(:placeholder-shown) ~ label {
694
+ top: 0;
695
+ font-size: 12px;
696
+ color: var(--hg-color-dark-grey);
697
+ transform: translateY(0);
698
+ }
699
+
700
+ /* El <select> no soporta :placeholder-shown (siempre tiene una option
701
+ seleccionada), así que forzamos el label a estar permanentemente
702
+ flotado arriba cuando el control es un select. */
703
+ .form-input-label-2 > select ~ label,
704
+ .error-zone > select ~ label {
705
+ top: 0;
706
+ font-size: 12px;
707
+ color: var(--hg-color-dark-grey);
708
+ transform: translateY(0);
709
+ }
710
+
711
+ .form-input-label-2 input:focus,
712
+ .form-input-label-2 textarea:focus,
713
+ .form-input-label-2 select:focus,
714
+ .error-zone input:focus,
715
+ .error-zone textarea:focus,
716
+ .error-zone select:focus {
717
+ outline: none;
718
+ }
719
+
720
+ .form-input-label-2 input:focus ~ label,
721
+ .form-input-label-2 textarea:focus ~ label,
722
+ .form-input-label-2 select:focus ~ label,
723
+ .error-zone input:focus ~ label,
724
+ .error-zone textarea:focus ~ label,
725
+ .error-zone select:focus ~ label {
726
+ top: 0;
727
+ font-size: 12px;
728
+ color: var(--hg-color-dark-grey);
729
+ transform: translateY(0);
730
+ }
731
+
732
+ .form-input-label-2 input::-webkit-list-button,
733
+ .form-input-label-2 input::-webkit-calendar-picker-indicator,
734
+ .error-zone input::-webkit-list-button,
735
+ .error-zone input::-webkit-calendar-picker-indicator {
736
+ display: none;
737
+ opacity: 0;
738
+ }
739
+
740
+ .form-input-label-2 input:-webkit-autofill,
741
+ .form-input-label-2 input:-webkit-autofill:hover,
742
+ .form-input-label-2 input:-webkit-autofill:focus,
743
+ .error-zone input:-webkit-autofill,
744
+ .error-zone input:-webkit-autofill:hover,
745
+ .error-zone input:-webkit-autofill:focus {
746
+ border-bottom: var(--border-width) var(--border-style) var(--hg-color-primary);
747
+ -webkit-text-fill-color: var(--hg-color-primary);
748
+ box-shadow: 0 0 0 1000px var(--hg-color-white) inset;
749
+ transition: background-color 5000s ease-in-out 0s;
750
+ }
751
+
752
+ .form-input-label-2.input-line .input,
753
+ .error-zone.input-line .input {
754
+ border: none;
755
+ }
756
+
757
+ .form-input-label-2 input,
758
+ .error-zone input {
759
+ background-color: transparent;
760
+ }
761
+
762
+ .form-input-label-2.has-ico-pre.btn,
763
+ .form-input-label-2.has-ico-pre > input,
764
+ .form-input-label-2.has-ico-pre > label,
765
+ .form-input-label-2 .has-ico-pre.btn,
766
+ .form-input-label-2 .has-ico-pre > input,
767
+ .form-input-label-2 .has-ico-pre > label,
768
+ .error-zone.has-ico-pre.btn,
769
+ .error-zone.has-ico-pre > input,
770
+ .error-zone.has-ico-pre > label,
771
+ .error-zone .has-ico-pre.btn,
772
+ .error-zone .has-ico-pre > input,
773
+ .error-zone .has-ico-pre > label {
774
+ padding-left: var(--hg-spacing-24);
775
+ }
776
+
777
+ .form-input-label-2.has-ico-pre .form-icon,
778
+ .form-input-label-2 .has-ico-pre .form-icon,
779
+ .error-zone.has-ico-pre .form-icon,
780
+ .error-zone .has-ico-pre .form-icon {
781
+ top: 0;
782
+ left: 0;
783
+ }
784
+
785
+ .form-input-label-2.has-ico-pre .ico-pre,
786
+ .form-input-label-2 .has-ico-pre .ico-pre,
787
+ .error-zone.has-ico-pre .ico-pre,
788
+ .error-zone .has-ico-pre .ico-pre {
789
+ height: 45px;
790
+ position: absolute;
791
+ top: 0;
792
+ right: auto;
793
+ left: 0;
794
+ box-sizing: border-box;
795
+ margin: 0;
796
+ cursor: pointer;
797
+ align-items: center;
798
+ display: inline-flex;
799
+ justify-content: center;
800
+ }
801
+
802
+ .form-input-label-2.has-ico-post.btn,
803
+ .form-input-label-2.has-ico-post > input,
804
+ .form-input-label-2.has-ico-post > label,
805
+ .form-input-label-2 .has-ico-post.btn,
806
+ .form-input-label-2 .has-ico-post > input,
807
+ .form-input-label-2 .has-ico-post > label,
808
+ .error-zone.has-ico-post.btn,
809
+ .error-zone.has-ico-post > input,
810
+ .error-zone.has-ico-post > label,
811
+ .error-zone .has-ico-post.btn,
812
+ .error-zone .has-ico-post > input,
813
+ .error-zone .has-ico-post > label {
814
+ padding-inline-end: 36px;
815
+ padding-inline-start: 0;
816
+ }
817
+
818
+ .form-input-label-2.has-ico-post .form-icon,
819
+ .form-input-label-2 .has-ico-post .form-icon,
820
+ .error-zone.has-ico-post .form-icon,
821
+ .error-zone .has-ico-post .form-icon {
822
+ padding: var(--hg-spacing-12);
823
+ top: 0;
824
+ right: 0;
825
+ left: auto;
826
+ }
827
+
828
+ .form-input-label-2.has-ico-post .ico-post,
829
+ .form-input-label-2 .has-ico-post .ico-post,
830
+ .error-zone.has-ico-post .ico-post,
831
+ .error-zone .has-ico-post .ico-post {
832
+ height: 45px;
833
+ position: absolute;
834
+ top: 0;
835
+ inset-inline-end: 0;
836
+ box-sizing: border-box;
837
+ margin: 0;
838
+ cursor: pointer;
839
+ align-items: center;
840
+ display: inline-flex;
841
+ justify-content: center;
842
+ }
843
+
844
+ .form-input-label-2 .input[type=search]::-webkit-search-cancel-button {
845
+ -webkit-appearance: none;
846
+ appearance: none;
847
+ }
848
+
849
+ .form-input-label-2.required label::after {
850
+ content: " *";
851
+ }
852
+
853
+ /* Estados de error y éxito para form-input-label-2 */
854
+ .is-error .input,
855
+ .is-error .help {
856
+ color: var(--hg-color-error) !important;
857
+ }
858
+
859
+ .is-error .input {
860
+ border-bottom: var(--border-width) var(--border-style) var(--hg-color-error);
861
+ }
862
+
863
+ .is-error .input-prefix :nth-child(1)::placeholder {
864
+ color: var(--hg-color-error);
865
+ }
866
+
867
+ .is-error svg g {
868
+ stroke: var(--hg-color-error) !important;
869
+ }
870
+
871
+ .is-error svg path {
872
+ fill: var(--hg-color-error) !important;
873
+ }
874
+
875
+ .is-error .ico-default svg g {
876
+ stroke: var(--hg-color-primary) !important;
877
+ }
878
+
879
+ .is-error .ico-default svg path {
880
+ fill: var(--hg-color-primary) !important;
881
+ }
882
+
883
+ .ok-input .input,
884
+ .ok-input .help {
885
+ color: var(--hg-color-success) !important;
886
+ }
887
+
888
+ .ok-input .input {
889
+ border-bottom: var(--border-width) var(--border-style) var(--hg-color-success);
890
+ color: var(--hg-color-success);
891
+ }
892
+
893
+ .ok-input .input-prefix:nth-child(1)::placeholder {
894
+ color: var(--hg-color-success);
895
+ }
896
+
897
+ .ok-input .input-line {
898
+ border-top: var(--border-width) var(--border-style) transparent;
899
+ border-left: var(--border-width) var(--border-style) transparent;
900
+ border-right: var(--border-width) var(--border-style) transparent;
901
+ border-bottom: var(--border-width) var(--border-style) var(--hg-color-success);
902
+ color: var(--hg-color-success);
903
+ }
904
+
905
+
906
+ /* === _labels.css === */
907
+ /**
908
+ * Labels
909
+ * Variantes: normal, required, inline
910
+ */
911
+
912
+ .label {
913
+ display: block;
914
+ font-family: var(--hg-typo-font-family-primary-regular);
915
+ font-size: var(--hg-typo-font-size-12);
916
+ font-weight: var(--hg-typo-font-weight-700);
917
+ line-height: var(--hg-typo-line-height-1-5);
918
+ color: var(--label-color);
919
+ margin-block-end: var(--hg-spacing-8);
920
+ }
921
+
922
+ .label-required::after {
923
+ content: " *";
924
+ color: var(--label-required);
925
+ }
926
+
927
+ .label-inline {
928
+ display: inline-flex;
929
+ align-items: center;
930
+ gap: var(--hg-spacing-8);
931
+ margin-block-end: 0;
932
+ cursor: pointer;
933
+ }
934
+
935
+
936
+
937
+ /* === _checkboxes.css === */
938
+ /**
939
+ * Checkboxes
940
+ * Estados: checked, disabled, focus
941
+ * Variantes: checkbox, checkbox-item, checkbox-item-2, checkbox-item-img, checkbox-radio, checkbox-card
942
+ */
943
+
944
+ /* ============================================
945
+ CHECKBOX BÁSICO (SVG INLINE)
946
+ ============================================ */
947
+
948
+ .checkbox {
949
+ position: relative;
950
+ display: inline-flex;
951
+ align-items: center;
952
+ gap: var(--hg-spacing-8);
953
+ cursor: pointer;
954
+ user-select: none;
955
+ vertical-align: middle;
956
+ }
957
+
958
+ .checkbox input[type="checkbox"] {
959
+ position: absolute;
960
+ opacity: 0;
961
+ width: 0;
962
+ height: 0;
963
+ margin: 0;
964
+ padding: 0;
965
+ border: 0;
966
+ clip: rect(0 0 0 0);
967
+ overflow: hidden;
968
+ }
969
+
970
+ .checkbox-indicator {
971
+ display: inline-flex;
972
+ align-items: center;
973
+ justify-content: center;
974
+ width: 14px;
975
+ height: 14px;
976
+ background-color: var(--checkbox-bg);
977
+ border: var(--border-width) var(--border-style) var(--checkbox-border);
978
+ border-radius: var(--border-radius);
979
+ transition: var(--transition);
980
+ flex-shrink: 0;
981
+ position: relative;
982
+ box-sizing: border-box;
983
+ }
984
+
985
+ .checkbox input[type="checkbox"]:checked + .checkbox-indicator {
986
+ background-color: var(--checkbox-checked-bg);
987
+ border-color: var(--checkbox-checked-border);
988
+ }
989
+
990
+ .checkbox-indicator .cbox__icon {
991
+ display: block;
992
+ width: 10px;
993
+ height: 8px;
994
+ opacity: 0;
995
+ transform: scale(.9);
996
+ transition: opacity .12s ease, transform .12s ease;
997
+ color: var(--checkbox-check-color, var(--hg-color-white));
998
+ }
999
+
1000
+ .checkbox input[type="checkbox"]:checked + .checkbox-indicator .cbox__icon {
1001
+ opacity: 1;
1002
+ transform: scale(1);
1003
+ }
1004
+
1005
+ .checkbox input[type="checkbox"]:checked + .checkbox-indicator::after {
1006
+ content: none;
1007
+ }
1008
+
1009
+ .checkbox input[type="checkbox"]:focus-visible + .checkbox-indicator {
1010
+ outline: 2px solid var(--hg-color-info);
1011
+ outline-offset: 2px;
1012
+ }
1013
+
1014
+ .checkbox input[type="checkbox"]:focus:not(:focus-visible) + .checkbox-indicator {
1015
+ outline: none;
1016
+ }
1017
+
1018
+ .checkbox input[type="checkbox"]:disabled + .checkbox-indicator {
1019
+ opacity: 0.5;
1020
+ cursor: not-allowed;
1021
+ }
1022
+
1023
+ .checkbox input[type="checkbox"]:disabled ~ .checkbox-label {
1024
+ opacity: 0.6;
1025
+ cursor: not-allowed;
1026
+ }
1027
+
1028
+ .checkbox-label {
1029
+ font-family: var(--hg-typo-font-family-primary-regular);
1030
+ font-size: var(--hg-typo-font-size-13);
1031
+ font-weight: var(--hg-typo-font-weight-400);
1032
+ line-height: var(--hg-typo-line-height-1-5);
1033
+ color: var(--label-color);
1034
+ }
1035
+
1036
+ /* ============================================
1037
+ CHECKBOX-ITEM
1038
+ ============================================ */
1039
+
1040
+ .checkbox-item {
1041
+ text-align: center;
1042
+ position: relative;
1043
+ }
1044
+
1045
+ .checkbox-item .ico-check {
1046
+ width: 22px;
1047
+ height: 22px;
1048
+ left: 0;
1049
+ top: 0;
1050
+ }
1051
+
1052
+ .checkbox-item .ico-check::after {
1053
+ position: absolute;
1054
+ content: "";
1055
+ height: 1px;
1056
+ background-color: var(--hg-color-primary);
1057
+ width: var(--hg-spacing-16);
1058
+ transform: rotate(136deg);
1059
+ left: var(--hg-spacing-4);
1060
+ top: var(--hg-spacing-8);
1061
+ }
1062
+
1063
+ .checkbox-item .ico-check::before {
1064
+ position: absolute;
1065
+ content: "";
1066
+ width: var(--hg-spacing-8);
1067
+ height: 1px;
1068
+ top: 10px;
1069
+ transform: rotate(50deg);
1070
+ background-color: var(--hg-color-primary);
1071
+ }
1072
+
1073
+ .checkbox-item [type=checkbox]:not(:checked) + label,
1074
+ .checkbox-item [type=checkbox]:checked + label {
1075
+ position: relative;
1076
+ padding-left: var(--hg-spacing-24);
1077
+ cursor: pointer;
1078
+ font-weight: var(--hg-typo-font-weight-400);
1079
+ font-size: var(--hg-typo-font-size-12);
1080
+ text-align: initial;
1081
+ display: flex;
1082
+ }
1083
+
1084
+ .checkbox-item [type=checkbox]:not(:checked) + label::before,
1085
+ .checkbox-item [type=checkbox]:checked + label::before {
1086
+ position: absolute;
1087
+ content: "";
1088
+ width: 14px;
1089
+ height: 14px;
1090
+ left: 0;
1091
+ border: none;
1092
+ border: var(--border-width) var(--border-style) var(--hg-color-primary);
1093
+ outline: 0;
1094
+ display: inline-block;
1095
+ vertical-align: top;
1096
+ }
1097
+
1098
+ .checkbox-item [type=checkbox]:not(:checked) + label span,
1099
+ .checkbox-item [type=checkbox]:checked + label span {
1100
+ display: initial;
1101
+ vertical-align: top;
1102
+ margin: 0;
1103
+ line-height: 16px;
1104
+ min-height: 20px;
1105
+ padding-left: 0;
1106
+ }
1107
+
1108
+ .checkbox-item [type=checkbox]:not(:checked) + label span::after,
1109
+ .checkbox-item [type=checkbox]:checked + label span::after {
1110
+ content: " ";
1111
+ }
1112
+
1113
+ .checkbox-item [type=checkbox]:not(:checked) + label a,
1114
+ .checkbox-item [type=checkbox]:checked + label a {
1115
+ text-decoration: underline;
1116
+ margin-right: var(--hg-spacing-4);
1117
+ }
1118
+
1119
+ .checkbox-item [type=checkbox]:not(:checked),
1120
+ .checkbox-item [type=checkbox]:checked {
1121
+ position: absolute;
1122
+ clip: rect(0 0 0 0);
1123
+ width: 1px;
1124
+ height: 1px;
1125
+ margin: -1px;
1126
+ padding: 0;
1127
+ border: 0;
1128
+ overflow: hidden;
1129
+ }
1130
+
1131
+ .checkbox-item input[type=checkbox] {
1132
+ box-sizing: border-box;
1133
+ padding: 0;
1134
+ margin: var(--hg-spacing-4) 0 0;
1135
+ margin-top: 1px \9;
1136
+ line-height: normal;
1137
+ }
1138
+
1139
+ .checkbox-item [type=checkbox]:not(:checked) + label .icon,
1140
+ .checkbox-item [type=checkbox]:checked + label .icon {
1141
+ position: absolute;
1142
+ top: 3px;
1143
+ left: 2px;
1144
+ color: var(--hg-color-primary);
1145
+ transition: var(--transition);
1146
+ }
1147
+
1148
+ .checkbox-item [type=checkbox]:not(:checked) + label .icon {
1149
+ opacity: 0;
1150
+ transform: scale(0);
1151
+ }
1152
+
1153
+ .checkbox-item [type=checkbox]:checked + label .icon {
1154
+ opacity: 1;
1155
+ transform: scale(1);
1156
+ }
1157
+
1158
+ .checkbox-item [type=checkbox]:not(:checked) + label::before {
1159
+ background-color: var(--hg-color-white);
1160
+ }
1161
+
1162
+ .checkbox-item [type=checkbox]:checked + label::before {
1163
+ background-color: var(--hg-color-primary);
1164
+ }
1165
+
1166
+ .checkbox-item.color-filter [type=checkbox]:not(:checked) + label,
1167
+ .checkbox-item.color-filter [type=checkbox]:checked + label {
1168
+ padding-left: var(--hg-spacing-32);
1169
+ }
1170
+
1171
+ .checkbox-item.color-filter .color-wrap button {
1172
+ margin-right: 0;
1173
+ }
1174
+
1175
+ .checkbox-item.color-filter [type=checkbox]:not(:checked) + label span,
1176
+ .checkbox-item.color-filter [type=checkbox]:checked + label span {
1177
+ padding-left: 14px;
1178
+ }
1179
+
1180
+ .checkbox-item.is-error {
1181
+ color: var(--hg-color-error);
1182
+ }
1183
+
1184
+ .checkbox-item.is-error [type=checkbox]:checked + label::before,
1185
+ .checkbox-item.is-error [type=checkbox]:not(:checked) + label::before {
1186
+ border: var(--border-width) var(--border-style) var(--hg-color-error);
1187
+ }
1188
+
1189
+ /* ============================================
1190
+ CHECKBOX-ITEM-2 (Switch style)
1191
+ ============================================ */
1192
+
1193
+ .checkbox-item-2 {
1194
+ display: inline-block;
1195
+ text-align: center;
1196
+ margin: 0;
1197
+ }
1198
+
1199
+ .checkbox-item-2 [type=checkbox]:not(:checked) + label,
1200
+ .checkbox-item-2 [type=checkbox]:checked + label {
1201
+ display: flex;
1202
+ flex-flow: row wrap;
1203
+ justify-content: flex-start;
1204
+ align-items: center;
1205
+ position: relative;
1206
+ padding-inline-start: 0;
1207
+ cursor: pointer;
1208
+ font-weight: var(--hg-typo-font-weight-400);
1209
+ font-size: var(--hg-typo-font-size-12);
1210
+ text-align: initial;
1211
+ min-height: 26px;
1212
+ }
1213
+
1214
+ .checkbox-item-2 [type=checkbox]:not(:checked) + label::before,
1215
+ .checkbox-item-2 [type=checkbox]:checked + label::before {
1216
+ position: absolute;
1217
+ content: "";
1218
+ width: 62px;
1219
+ height: 26px;
1220
+ border-radius: 0;
1221
+ inset-inline-start: 0;
1222
+ border: none;
1223
+ border: var(--border-width) var(--border-style) var(--hg-color-primary);
1224
+ outline: 0;
1225
+ display: inline-block;
1226
+ vertical-align: top;
1227
+ margin-block: 0;
1228
+ margin-inline: 0 10px;
1229
+ top: 0;
1230
+ }
1231
+
1232
+ .checkbox-item-2 [type=checkbox]:not(:checked) + label span,
1233
+ .checkbox-item-2 [type=checkbox]:checked + label span {
1234
+ display: inline-block;
1235
+ vertical-align: top;
1236
+ margin: 0;
1237
+ padding-inline-start: 70px;
1238
+ }
1239
+
1240
+ .checkbox-item-2 [type=checkbox]:not(:checked),
1241
+ .checkbox-item-2 [type=checkbox]:checked {
1242
+ position: absolute;
1243
+ clip: rect(0 0 0 0);
1244
+ width: 1px;
1245
+ height: 1px;
1246
+ margin: -1px;
1247
+ padding: 0;
1248
+ border: 0;
1249
+ overflow: hidden;
1250
+ }
1251
+
1252
+ .checkbox-item-2 input[type=checkbox] {
1253
+ box-sizing: border-box;
1254
+ padding: 0;
1255
+ margin: var(--hg-spacing-4) 0 0;
1256
+ line-height: normal;
1257
+ }
1258
+
1259
+ .checkbox-item-2 .checkbox-circle {
1260
+ background: var(--hg-color-primary);
1261
+ width: 20px;
1262
+ height: 20px;
1263
+ border-radius: 0;
1264
+ }
1265
+
1266
+ .checkbox-item-2 [type=checkbox]:not(:checked) + label .checkbox-circle,
1267
+ .checkbox-item-2 [type=checkbox]:checked + label .checkbox-circle {
1268
+ position: absolute;
1269
+ top: 3px;
1270
+ inset-inline-start: 6px;
1271
+ color: var(--hg-color-primary);
1272
+ transition: var(--transition);
1273
+ }
1274
+
1275
+ .checkbox-item-2 [type=checkbox]:not(:checked) + label .checkbox-circle {
1276
+ opacity: 1;
1277
+ transform: scale(1);
1278
+ inset-inline-start: var(--hg-spacing-4);
1279
+ }
1280
+
1281
+ .checkbox-item-2 [type=checkbox]:checked + label .checkbox-circle {
1282
+ opacity: 1;
1283
+ transform: scale(1);
1284
+ inset-inline-start: 38px;
1285
+ }
1286
+
1287
+ /* ============================================
1288
+ CHECKBOX-ITEM-TEXT
1289
+ ============================================ */
1290
+
1291
+ .checkbox-item-text {
1292
+ min-height: 42px;
1293
+ }
1294
+
1295
+ .checkbox-item-text span {
1296
+ position: relative;
1297
+ margin-left: var(--hg-spacing-24);
1298
+ min-height: 40px;
1299
+ }
1300
+
1301
+ /* ============================================
1302
+ CHECKBOX-ITEM-BOX
1303
+ ============================================ */
1304
+
1305
+ .checkbox-item-box {
1306
+ position: relative;
1307
+ width: 14px;
1308
+ height: 14px;
1309
+ }
1310
+
1311
+ /* ============================================
1312
+ CHECKBOX-ITEM-IMG
1313
+ ============================================ */
1314
+
1315
+ .checkbox-item-img {
1316
+ text-align: center;
1317
+ position: relative;
1318
+ }
1319
+
1320
+ .checkbox-item-img.is-error {
1321
+ color: var(--hg-color-error);
1322
+ }
1323
+
1324
+ .checkbox-item-img.is-error [type=checkbox]:checked + label::before,
1325
+ .checkbox-item-img.is-error [type=checkbox]:not(:checked) + label::before {
1326
+ border: var(--border-width) var(--border-style) var(--hg-color-error);
1327
+ }
1328
+
1329
+ .checkbox-item-img .ico-check {
1330
+ width: 22px;
1331
+ height: 22px;
1332
+ left: 0;
1333
+ top: 0;
1334
+ }
1335
+
1336
+ .checkbox-item-img .ico-check::after {
1337
+ position: absolute;
1338
+ content: "";
1339
+ height: 1px;
1340
+ background-color: var(--hg-color-primary);
1341
+ width: var(--hg-spacing-16);
1342
+ transform: rotate(136deg);
1343
+ left: var(--hg-spacing-4);
1344
+ top: var(--hg-spacing-8);
1345
+ }
1346
+
1347
+ .checkbox-item-img .ico-check::before {
1348
+ position: absolute;
1349
+ content: "";
1350
+ width: var(--hg-spacing-8);
1351
+ height: 1px;
1352
+ top: 10px;
1353
+ transform: rotate(50deg);
1354
+ background-color: var(--hg-color-primary);
1355
+ }
1356
+
1357
+ .checkbox-item-img [type=checkbox] + label::after {
1358
+ width: 80px;
1359
+ height: 80px;
1360
+ content: "";
1361
+ }
1362
+
1363
+ .checkbox-item-img [type=checkbox]:not(:checked),
1364
+ .checkbox-item-img [type=checkbox]:checked {
1365
+ position: absolute;
1366
+ left: -9999px;
1367
+ }
1368
+
1369
+ .checkbox-item-img [type=checkbox]:not(:checked) + label,
1370
+ .checkbox-item-img [type=checkbox]:checked + label {
1371
+ padding-bottom: 132%;
1372
+ height: 100%;
1373
+ width: 100%;
1374
+ aspect-ratio: 3/4;
1375
+ position: relative;
1376
+ padding-left: var(--hg-spacing-24);
1377
+ cursor: pointer;
1378
+ font-weight: var(--hg-typo-font-weight-400);
1379
+ font-size: var(--hg-typo-font-size-12);
1380
+ text-align: initial;
1381
+ display: flex;
1382
+ }
1383
+
1384
+ .checkbox-item-img [type=checkbox]:not(:checked) + label span,
1385
+ .checkbox-item-img [type=checkbox]:checked + label span {
1386
+ display: initial;
1387
+ vertical-align: top;
1388
+ margin: 0;
1389
+ line-height: 16px;
1390
+ min-height: 20px;
1391
+ padding-left: 0;
1392
+ }
1393
+
1394
+ .checkbox-item-img [type=checkbox]:not(:checked) + label span::after,
1395
+ .checkbox-item-img [type=checkbox]:checked + label span::after {
1396
+ content: " ";
1397
+ }
1398
+
1399
+ .checkbox-item-img [type=checkbox]:not(:checked) + label::before,
1400
+ .checkbox-item-img [type=checkbox]:checked + label::before {
1401
+ position: absolute;
1402
+ content: "";
1403
+ width: 100%;
1404
+ height: 100%;
1405
+ aspect-ratio: 3/4;
1406
+ left: 0;
1407
+ border: none;
1408
+ border: var(--border-width) var(--border-style) var(--hg-color-middle-grey);
1409
+ outline: 0;
1410
+ display: inline-block;
1411
+ vertical-align: top;
1412
+ margin: 0;
1413
+ }
1414
+
1415
+ .checkbox-item-img [type=checkbox]:not(:checked) + label a,
1416
+ .checkbox-item-img [type=checkbox]:checked + label a {
1417
+ text-decoration: underline;
1418
+ margin-right: var(--hg-spacing-4);
1419
+ }
1420
+
1421
+ .checkbox-item-img .checkbox-item [type=checkbox]:not(:checked) + label .icon,
1422
+ .checkbox-item-img .checkbox-item [type=checkbox]:checked + label .icon {
1423
+ position: absolute;
1424
+ top: 50%;
1425
+ left: 50%;
1426
+ transform: scale(1) translate(-50%, calc(-50% - 30px));
1427
+ color: var(--hg-color-primary);
1428
+ transition: var(--transition);
1429
+ }
1430
+
1431
+ .checkbox-item-img input[type=checkbox] {
1432
+ box-sizing: border-box;
1433
+ padding: 0;
1434
+ margin: var(--hg-spacing-4) 0 0;
1435
+ margin-top: 1px \9;
1436
+ line-height: normal;
1437
+ }
1438
+
1439
+ .checkbox-item-img [type=checkbox]:checked + label .icon,
1440
+ .checkbox-item-img .checkbox-item [type=checkbox]:checked + label .icon {
1441
+ opacity: 1;
1442
+ transform: scale(1) translate(-50%, calc(-50% - 30px));
1443
+ }
1444
+
1445
+ .checkbox-item-img [type=checkbox]:checked + label {
1446
+ border: var(--border-width) var(--border-style) var(--hg-color-primary);
1447
+ }
1448
+
1449
+ .checkbox-item-img [type=checkbox]:not(:checked) + label .icon {
1450
+ opacity: 0;
1451
+ transform: scale(0) translate(-50%, calc(-50% - 30px));
1452
+ }
1453
+
1454
+ .checkbox-item-img [type=checkbox]:not(:checked) + label {
1455
+ border: var(--border-width) var(--border-style) transparent;
1456
+ }
1457
+
1458
+ .checkbox-item-img.color-filter [type=checkbox]:not(:checked) + label,
1459
+ .checkbox-item-img.color-filter [type=checkbox]:checked + label {
1460
+ padding-left: var(--hg-spacing-32);
1461
+ }
1462
+
1463
+ .checkbox-item-img.color-filter .color-wrap button {
1464
+ margin-right: 0;
1465
+ }
1466
+
1467
+ .checkbox-item-img.color-filter [type=checkbox]:not(:checked) + label span,
1468
+ .checkbox-item-img.color-filter [type=checkbox]:checked + label span {
1469
+ padding-left: 14px;
1470
+ }
1471
+
1472
+ .checkbox-item-img img {
1473
+ width: 100%;
1474
+ position: absolute;
1475
+ top: 0;
1476
+ left: 0;
1477
+ }
1478
+
1479
+ .checkbox-item-img .checkbox-item-img-text {
1480
+ position: absolute;
1481
+ bottom: 0;
1482
+ left: 0;
1483
+ width: 100%;
1484
+ height: 80px;
1485
+ }
1486
+
1487
+
1488
+
1489
+ /* ============================================
1490
+ CHECKBOX-CARD
1491
+ ============================================ */
1492
+
1493
+ .checkbox-card .checkbox-card-label {
1494
+ border-radius: 0;
1495
+ overflow: hidden;
1496
+ border: var(--border-width) var(--border-style) var(--hg-color-middle-grey);
1497
+ background: var(--hg-color-white);
1498
+ flex-direction: column;
1499
+ display: flex;
1500
+ width: 100%;
1501
+ padding: var(--hg-spacing-8);
1502
+ box-sizing: border-box;
1503
+ transition: var(--transition);
1504
+ }
1505
+
1506
+ .checkbox-card [type=radio] {
1507
+ position: absolute;
1508
+ clip: rect(0 0 0 0);
1509
+ width: 1px;
1510
+ height: 1px;
1511
+ margin: -1px;
1512
+ padding: 0;
1513
+ border: 0;
1514
+ overflow: hidden;
1515
+ }
1516
+
1517
+ .checkbox-card [type=radio]:checked + .checkbox-card-label,
1518
+ .checkbox-card :hover + .checkbox-card-label {
1519
+ cursor: pointer;
1520
+ border: var(--border-width) var(--border-style) var(--hg-color-primary);
1521
+ }
1522
+
1523
+ .has-light .checkbox-card {
1524
+ color: var(--hg-color-white);
1525
+ }
1526
+
1527
+ .has-light .checkbox-card .checkbox-card-label {
1528
+ border: var(--border-width) var(--border-style) var(--hg-color-dark-grey);
1529
+ background: var(--hg-color-primary);
1530
+ }
1531
+
1532
+ .has-light .checkbox-card [type=radio]:checked + .checkbox-card-label,
1533
+ .has-light .checkbox-card :hover + .checkbox-card-label {
1534
+ cursor: pointer;
1535
+ border: var(--border-width) var(--border-style) var(--hg-color-white);
1536
+ }
1537
+
1538
+ .checkbox-card.is-error .checkbox-card-label {
1539
+ border: var(--border-width) var(--border-style) var(--hg-color-error) !important;
1540
+ color: var(--hg-color-error) !important;
1541
+ }
1542
+
1543
+ /* ============================================
1544
+ ESTADOS Y MODIFICADORES
1545
+ ============================================ */
1546
+
1547
+ .is-active.checkbox-radio .border-1,
1548
+ .is-active.checkbox-radio .border-1-grey {
1549
+ border: var(--border-width) var(--border-style) var(--hg-color-primary);
1550
+ }
1551
+
1552
+ .is-active.checkbox-radio [type=radio] + label .ico-radio {
1553
+ opacity: 1;
1554
+ transform: scale(1);
1555
+ }
1556
+
1557
+ .is-error.checkbox-item [type=checkbox]:checked + label::before,
1558
+ .is-error.checkbox-item [type=checkbox]:not(:checked) + label::before,
1559
+ .is-error .checkbox-item [type=checkbox]:checked + label::before,
1560
+ .is-error .checkbox-item [type=checkbox]:not(:checked) + label::before {
1561
+ border: var(--border-width) var(--border-style) var(--hg-color-error) !important;
1562
+ }
1563
+
1564
+ .is-error.checkbox-item a,
1565
+ .is-error .checkbox-item a {
1566
+ color: var(--hg-color-error) !important;
1567
+ }
1568
+
1569
+ .is-error.checkbox-item svg g,
1570
+ .is-error .checkbox-item svg g {
1571
+ fill: var(--hg-color-error) !important;
1572
+ }
1573
+
1574
+ .is-error.checkbox-item svg g polyline,
1575
+ .is-error .checkbox-item svg g polyline {
1576
+ stroke: var(--hg-color-error) !important;
1577
+ }
1578
+
1579
+ /* ============================================
1580
+ HAS-LIGHT (Modo claro/claro)
1581
+ ============================================ */
1582
+
1583
+ .has-light .checkbox-item .ico-check::after {
1584
+ background-color: transparent;
1585
+ }
1586
+
1587
+ .has-light .checkbox-item .ico-check::before {
1588
+ background-color: var(--hg-color-white);
1589
+ }
1590
+
1591
+ .has-light .checkbox-item [type=checkbox]:not(:checked) + label::before,
1592
+ .has-light .checkbox-item [type=checkbox]:checked + label::before {
1593
+ border: var(--border-width) var(--border-style) var(--hg-color-white);
1594
+ }
1595
+
1596
+ .has-light .checkbox-item [type=checkbox]:not(:checked) + label .icon,
1597
+ .has-light .checkbox-item [type=checkbox]:checked + label .icon {
1598
+ color: var(--hg-color-white);
1599
+ }
1600
+
1601
+ .has-light .checkbox-item svg g {
1602
+ fill: var(--hg-color-white);
1603
+ }
1604
+
1605
+ .has-light .checkbox-item svg g polyline {
1606
+ stroke: var(--hg-color-white);
1607
+ }
1608
+
1609
+ .has-light .checkbox-radio [type=radio]:not(:checked) + label::before,
1610
+ .has-light .checkbox-radio [type=radio]:checked + label::before {
1611
+ border: var(--border-width) var(--border-style) var(--hg-color-white);
1612
+ }
1613
+
1614
+ .has-light .checkbox-radio [type=radio]:not(:checked) + label .ico-radio,
1615
+ .has-light .checkbox-radio [type=radio]:checked + label .ico-radio {
1616
+ background-color: var(--hg-color-white);
1617
+ }
1618
+
1619
+ .has-light .checkbox-item-2 [type=checkbox]:not(:checked) + label::before,
1620
+ .has-light .checkbox-item-2 [type=checkbox]:checked + label::before {
1621
+ border: var(--border-width) var(--border-style) var(--hg-color-white);
1622
+ }
1623
+
1624
+ .has-light .checkbox-item-2 .checkbox-circle {
1625
+ background: var(--hg-color-white);
1626
+ }
1627
+
1628
+ .has-light .checkbox-item-2 [type=checkbox]:not(:checked) + label .checkbox-circle,
1629
+ .has-light .checkbox-item-2 [type=checkbox]:checked + label .checkbox-circle {
1630
+ color: var(--hg-color-white);
1631
+ }
1632
+
1633
+
1634
+ /* === _radios.css === */
1635
+ /**
1636
+ * Radios
1637
+ * Estados: checked, disabled, focus
1638
+ * Variantes: checkbox-radio, check-center, check-no, check-bleed, check-top, check-clear
1639
+ */
1640
+
1641
+ /* ============================================
1642
+ CHECKBOX-RADIO (Radio buttons con estilo checkbox)
1643
+ ============================================ */
1644
+
1645
+ .checkbox-radio {
1646
+ position: relative;
1647
+ }
1648
+
1649
+ /* Input oculto */
1650
+ .checkbox-radio [type=radio] {
1651
+ position: absolute;
1652
+ clip: rect(0 0 0 0);
1653
+ width: 1px;
1654
+ height: 1px;
1655
+ margin: -1px;
1656
+ padding: 0;
1657
+ border: 0;
1658
+ overflow: hidden;
1659
+ box-sizing: border-box;
1660
+ line-height: normal;
1661
+ }
1662
+
1663
+ /* Label base */
1664
+ .checkbox-radio [type=radio] + label {
1665
+ position: relative;
1666
+ padding-left: 0;
1667
+ padding-bottom: 0;
1668
+ cursor: pointer;
1669
+ font-weight: normal;
1670
+ font-size: var(--hg-typo-font-size-xs, 12px);
1671
+ text-align: initial;
1672
+ display: flex;
1673
+ flex-direction: column;
1674
+ float: none;
1675
+ }
1676
+
1677
+ /* Círculo del radio (::before) */
1678
+ .checkbox-radio [type=radio] + label::before {
1679
+ position: absolute;
1680
+ box-sizing: border-box;
1681
+ content: "";
1682
+ width: 14px;
1683
+ height: 14px;
1684
+ left: 0;
1685
+ border: var(--border-width) var(--border-style) var(--hg-color-primary);
1686
+ outline: 0;
1687
+ display: inline-block;
1688
+ vertical-align: top;
1689
+ margin: 0 var(--hg-spacing-10, 10px) 0 0;
1690
+ border-radius: 0;
1691
+ }
1692
+
1693
+ /* Texto del label */
1694
+ .checkbox-radio [type=radio] + label span {
1695
+ display: inline-block;
1696
+ vertical-align: top;
1697
+ margin: 0;
1698
+ line-height: var(--hg-typo-line-height-sm, 16px);
1699
+ padding-left: var(--hg-spacing-24);
1700
+ min-height: 20px;
1701
+ }
1702
+
1703
+ /* Indicador interno (punto) */
1704
+ .checkbox-radio [type=radio] + label .ico-radio {
1705
+ position: absolute;
1706
+ top: 5px;
1707
+ left: 5px;
1708
+ width: 4px;
1709
+ height: 4px;
1710
+ background-color: var(--hg-color-primary);
1711
+ border-radius: 0;
1712
+ transition: var(--transition);
1713
+ }
1714
+
1715
+ /* Estado no seleccionado */
1716
+ .checkbox-radio [type=radio]:not(:checked) + label .ico-radio {
1717
+ opacity: 0;
1718
+ transform: scale(0);
1719
+ }
1720
+
1721
+ /* Estado seleccionado */
1722
+ .checkbox-radio [type=radio]:checked + label .ico-radio {
1723
+ opacity: 1;
1724
+ transform: scale(1);
1725
+ }
1726
+
1727
+ /* Estado deshabilitado */
1728
+ .checkbox-radio [type=radio]:disabled {
1729
+ opacity: 0.5;
1730
+ }
1731
+
1732
+ .checkbox-radio [type=radio]:disabled + label::before {
1733
+ opacity: 0.5;
1734
+ }
1735
+
1736
+ /* Estado de error */
1737
+ .checkbox-radio.is-error label::before {
1738
+ border-color: var(--hg-color-error) !important;
1739
+ }
1740
+
1741
+ .checkbox-radio.is-error span {
1742
+ color: var(--hg-color-error) !important;
1743
+ }
1744
+
1745
+ /* ============================================
1746
+ VARIANTES DE CHECKBOX-RADIO
1747
+ ============================================ */
1748
+
1749
+ /* Variante: Centrado verticalmente */
1750
+ .check-center.checkbox-radio [type=radio] + label::before {
1751
+ position: absolute;
1752
+ top: 50%;
1753
+ left: var(--hg-spacing-16);
1754
+ transform: translateY(-50%);
1755
+ }
1756
+
1757
+ .check-center.checkbox-radio [type=radio] + label .ico-radio {
1758
+ top: 50%;
1759
+ left: 21px;
1760
+ margin-top: -2px;
1761
+ }
1762
+
1763
+ .check-center .box3-content {
1764
+ padding-left: var(--hg-spacing-30, 30px);
1765
+ }
1766
+
1767
+ .check-center.checkbox-radio [type=radio]:checked + label .border-1,
1768
+ .check-center.checkbox-radio [type=radio]:checked + label .border-1-grey {
1769
+ border-color: var(--hg-color-primary);
1770
+ }
1771
+
1772
+ /* Variante: Sin indicador visual (solo borde) */
1773
+ .check-no.checkbox-radio [type=radio] + label::before {
1774
+ display: none;
1775
+ }
1776
+
1777
+ .check-no.checkbox-radio [type=radio]:checked + label .ico-radio {
1778
+ display: none;
1779
+ }
1780
+
1781
+ .check-no.checkbox-radio [type=radio]:checked + label .border-1,
1782
+ .check-no.checkbox-radio [type=radio]:checked + label .border-1-grey {
1783
+ border-color: var(--hg-color-primary);
1784
+ }
1785
+
1786
+ /* Variante: Sin margen izquierdo */
1787
+ .check-bleed.checkbox-radio [type=radio] + label::before {
1788
+ left: 0;
1789
+ }
1790
+
1791
+ .check-bleed.checkbox-radio [type=radio] + label .ico-radio {
1792
+ left: 5px;
1793
+ }
1794
+
1795
+ /* Variante: Posición superior */
1796
+ .check-top.checkbox-radio [type=radio] + label::before {
1797
+ position: absolute;
1798
+ top: var(--hg-spacing-16);
1799
+ left: var(--hg-spacing-16);
1800
+ }
1801
+
1802
+ .check-top.checkbox-radio [type=radio] + label .ico-radio {
1803
+ top: 23px;
1804
+ left: 23px;
1805
+ }
1806
+
1807
+ .check-top .box3-content {
1808
+ padding-left: var(--hg-spacing-30, 30px);
1809
+ }
1810
+
1811
+ .check-top.checkbox-radio [type=radio]:checked + label .border-1,
1812
+ .check-top.checkbox-radio [type=radio]:checked + label .border-1-grey {
1813
+ border-color: var(--hg-color-primary);
1814
+ }
1815
+
1816
+ /* Variante: Sin padding izquierdo */
1817
+ .check-clear.checkbox-radio [type=radio] + label::before {
1818
+ position: absolute;
1819
+ top: var(--hg-spacing-16);
1820
+ left: 0;
1821
+ }
1822
+
1823
+ .check-clear.checkbox-radio [type=radio] + label .ico-radio {
1824
+ top: 23px;
1825
+ left: var(--hg-spacing-4);
1826
+ }
1827
+
1828
+ .check-clear .box3-content {
1829
+ padding-left: var(--hg-spacing-30, 30px);
1830
+ }
1831
+
1832
+ .check-clear.checkbox-radio [type=radio]:checked + label .border-1,
1833
+ .check-clear.checkbox-radio [type=radio]:checked + label .border-1-grey {
1834
+ border-color: var(--hg-color-primary);
1835
+ }
1836
+
1837
+
1838
+ /* === _switches.css === */
1839
+ /**
1840
+ * Switches / Toggles
1841
+ * Estados: checked, disabled, focus
1842
+ * Variantes: switch, checkbox-item-2
1843
+ */
1844
+
1845
+ /* ============================================
1846
+ SWITCH BÁSICO (Switch estándar)
1847
+ ============================================ */
1848
+
1849
+ .checkbox-item-2 {
1850
+ display: inline-block;
1851
+ text-align: center;
1852
+ margin: 0;
1853
+ }
1854
+ .checkbox-item-2 [type=checkbox]:not(:checked) + label,
1855
+ .checkbox-item-2 [type=checkbox]:checked + label {
1856
+ display: flex;
1857
+ flex-flow: row wrap;
1858
+ justify-content: flex-start;
1859
+ align-items: center;
1860
+ position: relative;
1861
+ padding-inline-start: 0;
1862
+ cursor: pointer;
1863
+ font-weight: normal;
1864
+ font-size: 12px;
1865
+ text-align: initial;
1866
+ display: flex;
1867
+ min-height: 26px;
1868
+ }
1869
+ .checkbox-item-2 [type=checkbox]:not(:checked) + label::before,
1870
+ .checkbox-item-2 [type=checkbox]:checked + label::before {
1871
+ position: absolute;
1872
+ content: "";
1873
+ width: 62px;
1874
+ height: 26px;
1875
+ border-radius: 0;
1876
+ inset-inline-start: 0;
1877
+ border: none;
1878
+ border: 1px solid #000000;
1879
+ outline: 0;
1880
+ display: inline-block;
1881
+ vertical-align: top;
1882
+ margin-block: 0;
1883
+ margin-inline: 0 10px;
1884
+ top: 0;
1885
+ }
1886
+ .checkbox-item-2 [type=checkbox]:not(:checked) + label span,
1887
+ .checkbox-item-2 [type=checkbox]:checked + label span {
1888
+ display: inline-block;
1889
+ vertical-align: top;
1890
+ margin: 0;
1891
+ padding-inline-start: 70px;
1892
+ }
1893
+ .checkbox-item-2 [type=checkbox]:not(:checked),
1894
+ .checkbox-item-2 [type=checkbox]:checked {
1895
+ position: absolute; /* Lo saca del flujo normal */
1896
+ clip: rect(0 0 0 0); /* Recorta el elemento para que no sea visible */
1897
+ width: 1px;
1898
+ height: 1px;
1899
+ margin: -1px;
1900
+ padding: 0;
1901
+ border: 0;
1902
+ overflow: hidden;
1903
+ }
1904
+ .checkbox-item-2 input[type=checkbox] {
1905
+ box-sizing: border-box;
1906
+ padding: 0;
1907
+ margin: 4px 0 0;
1908
+ line-height: normal;
1909
+ }
1910
+ .checkbox-item-2 .checkbox-circle {
1911
+ background: #000000;
1912
+ width: 20px;
1913
+ height: 20px;
1914
+ border-radius: 0;
1915
+ }
1916
+ .checkbox-item-2 [type=checkbox]:not(:checked) + label .checkbox-circle,
1917
+ .checkbox-item-2 [type=checkbox]:checked + label .checkbox-circle {
1918
+ position: absolute;
1919
+ top: 3px;
1920
+ inset-inline-start: 6px;
1921
+ color: #000000;
1922
+ transition: all 0.2s;
1923
+ }
1924
+ .checkbox-item-2 [type=checkbox]:not(:checked) + label .checkbox-circle {
1925
+ opacity: 1;
1926
+ transform: scale(1);
1927
+ inset-inline-start: 4px;
1928
+ }
1929
+ .checkbox-item-2 [type=checkbox]:checked + label .checkbox-circle {
1930
+ opacity: 1;
1931
+ transform: scale(1);
1932
+ inset-inline-start: 38px;
1933
+ }
1934
+
1935
+
1936
+ /* === _forms.css === */
1937
+ /**
1938
+ * Form Groups, Form Rows y Helper Text
1939
+ */
1940
+
1941
+ /* Form Groups */
1942
+ .form-group {
1943
+ display: flex;
1944
+ flex-direction: column;
1945
+ gap: 0;
1946
+ margin-block-end: var(--hg-spacing-24);
1947
+ }
1948
+
1949
+ .form-group:last-child {
1950
+ margin-block-end: 0;
1951
+ }
1952
+
1953
+ .form-group-inline {
1954
+ flex-direction: row;
1955
+ align-items: center;
1956
+ gap: var(--hg-spacing-16);
1957
+ }
1958
+
1959
+ .form-group-inline .label {
1960
+ margin-block-end: 0;
1961
+ flex-shrink: 0;
1962
+ }
1963
+
1964
+ /* Helper Text / Messages */
1965
+ .helper-text {
1966
+ display: block;
1967
+ font-family: var(--hg-typo-font-family-primary-regular);
1968
+ font-size: var(--hg-typo-font-size-12);
1969
+ font-weight: var(--hg-typo-font-weight-400);
1970
+ line-height: var(--hg-typo-line-height-1-5);
1971
+ margin-block-start: var(--hg-spacing-4);
1972
+ color: var(--hg-color-dark-grey);
1973
+ }
1974
+
1975
+ .helper-text-error {
1976
+ color: var(--hg-color-error);
1977
+ }
1978
+
1979
+ .helper-text-success {
1980
+ color: var(--hg-color-success);
1981
+ }
1982
+
1983
+ .helper-text-warning {
1984
+ color: var(--hg-color-warning);
1985
+ }
1986
+
1987
+ /* Form Row */
1988
+ .form-row {
1989
+ display: flex;
1990
+ gap: var(--hg-spacing-16);
1991
+ flex-wrap: wrap;
1992
+ }
1993
+
1994
+ .form-row > * {
1995
+ flex: 1;
1996
+ min-width: 200px;
1997
+ }
1998
+
1999
+
2000
+
2001
+ /* === _containers.css === */
2002
+ /* ============================================
2003
+ CONTAINERS — Dutti Theme
2004
+ $padding-global: var(--hg-spacing-20) = 20px
2005
+ $padding-mobile: var(--hg-spacing-20) = 20px
2006
+ ============================================ */
2007
+
2008
+ .container {
2009
+ margin-left: auto;
2010
+ margin-right: auto;
2011
+ max-width: 800px;
2012
+ padding-inline: var(--hg-spacing-20);
2013
+ position: relative;
2014
+ width: 100%;
2015
+ }
2016
+ @media (min-width: 768px) {
2017
+ .container {
2018
+ max-width: 768px;
2019
+ padding-inline: var(--hg-spacing-20);
2020
+ width: 90%;
2021
+ }
2022
+ }
2023
+ @media (min-width: 992px) {
2024
+ .container {
2025
+ max-width: 992px;
2026
+ width: 80%;
2027
+ }
2028
+ }
2029
+ @media (min-width: 1280px) {
2030
+ .container {
2031
+ max-width: 1280px;
2032
+ width: 80%;
2033
+ }
2034
+ }
2035
+ @media (min-width: 1440px) {
2036
+ .container {
2037
+ max-width: 1440px;
2038
+ width: 100%;
2039
+ }
2040
+ }
2041
+
2042
+ .container-2 {
2043
+ margin-left: auto;
2044
+ margin-right: auto;
2045
+ max-width: 700px;
2046
+ padding-inline: var(--hg-spacing-20);
2047
+ position: relative;
2048
+ width: 90%;
2049
+ }
2050
+
2051
+ .container-3 {
2052
+ margin-left: auto;
2053
+ margin-right: auto;
2054
+ max-width: 900px;
2055
+ padding-inline: 3.75rem; /* $padding-global * 3 = 60px */
2056
+ position: relative;
2057
+ width: 100%;
2058
+ }
2059
+ @media (min-width: 768px) {
2060
+ .container-3 {
2061
+ padding-inline: var(--hg-spacing-20);
2062
+ }
2063
+ }
2064
+
2065
+ .container-4 {
2066
+ margin-left: auto;
2067
+ margin-right: auto;
2068
+ max-width: 360px;
2069
+ padding-inline: 2.5rem; /* $padding-global * 2 = 40px */
2070
+ position: relative;
2071
+ width: 100%;
2072
+ }
2073
+
2074
+ .container-5 {
2075
+ margin: 0 auto;
2076
+ max-width: 800px;
2077
+ padding: 0 var(--hg-spacing-20);
2078
+ position: relative;
2079
+ width: 100%;
2080
+ }
2081
+ @media (min-width: 1280px) {
2082
+ .container-5 {
2083
+ max-width: 1000px;
2084
+ padding: 0;
2085
+ }
2086
+ }
2087
+
2088
+ .container-6 {
2089
+ margin: 0 auto;
2090
+ max-width: 442px;
2091
+ padding: 0 var(--hg-spacing-20);
2092
+ position: relative;
2093
+ width: 100%;
2094
+ }
2095
+
2096
+ .container-7 {
2097
+ margin: 0 auto;
2098
+ max-width: 295px;
2099
+ padding: 0 2.5rem; /* $padding-global * 2 = 40px */
2100
+ position: relative;
2101
+ width: 100%;
2102
+ }
2103
+ @media (min-width: 768px) {
2104
+ .container-7 {
2105
+ max-width: 460px;
2106
+ padding-left: var(--hg-spacing-20);
2107
+ padding-right: var(--hg-spacing-20);
2108
+ }
2109
+ }
2110
+ @media (min-width: 992px) {
2111
+ .container-7 {
2112
+ max-width: 460px;
2113
+ }
2114
+ }
2115
+ @media (min-width: 1280px) {
2116
+ .container-7 {
2117
+ max-width: 595px;
2118
+ }
2119
+ }
2120
+
2121
+ .container-8 {
2122
+ margin: 0 auto;
2123
+ max-width: 395px;
2124
+ padding: 0 var(--hg-spacing-20);
2125
+ position: relative;
2126
+ width: 100%;
2127
+ }
2128
+
2129
+ .container-9 {
2130
+ margin: 0 auto;
2131
+ max-width: 798px;
2132
+ padding: 0 var(--hg-spacing-20);
2133
+ position: relative;
2134
+ width: 100%;
2135
+ }
2136
+
2137
+ .container-10 {
2138
+ max-width: 200px;
2139
+ position: relative;
2140
+ }
2141
+
2142
+ .container-11 {
2143
+ margin: 0 auto;
2144
+ max-width: 1080px;
2145
+ padding: 0 var(--hg-spacing-20);
2146
+ position: relative;
2147
+ width: 100%;
2148
+ }
2149
+
2150
+ .container-12 {
2151
+ max-width: 1080px;
2152
+ padding: 0 var(--hg-spacing-20);
2153
+ position: relative;
2154
+ width: 100%;
2155
+ }
2156
+
2157
+ .container-360 {
2158
+ max-width: 360px;
2159
+ width: 100%;
2160
+ }
2161
+
2162
+ .container-496 {
2163
+ max-width: 496px;
2164
+ width: 100%;
2165
+ }
2166
+
2167
+ .container-512 {
2168
+ max-width: 512px;
2169
+ width: 100%;
2170
+ }
2171
+
2172
+ .container-640 {
2173
+ max-width: 640px;
2174
+ width: 100%;
2175
+ }
2176
+
2177
+
2178
+ /* === _grid.css === */
2179
+ .hg-grid-cols-1 {
2180
+ grid-template-columns: repeat(1, 1fr);
2181
+ }
2182
+
2183
+ .hg-grid-cols-2 {
2184
+ grid-template-columns: repeat(2, 1fr);
2185
+ }
2186
+
2187
+ .hg-grid-cols-3 {
2188
+ grid-template-columns: repeat(3, 1fr);
2189
+ }
2190
+
2191
+ .hg-grid-cols-4 {
2192
+ grid-template-columns: repeat(4, 1fr);
2193
+ }
2194
+
2195
+ .hg-grid-cols-5 {
2196
+ grid-template-columns: repeat(5, 1fr);
2197
+ }
2198
+
2199
+ .hg-grid-cols-6 {
2200
+ grid-template-columns: repeat(6, 1fr);
2201
+ }
2202
+
2203
+ .hg-grid-cols-7 {
2204
+ grid-template-columns: repeat(7, 1fr);
2205
+ }
2206
+
2207
+ .hg-grid-cols-8 {
2208
+ grid-template-columns: repeat(8, 1fr);
2209
+ }
2210
+
2211
+ .hg-grid-cols-9 {
2212
+ grid-template-columns: repeat(9, 1fr);
2213
+ }
2214
+
2215
+ .hg-grid-cols-10 {
2216
+ grid-template-columns: repeat(10, 1fr);
2217
+ }
2218
+
2219
+ .hg-grid-cols-11 {
2220
+ grid-template-columns: repeat(11, 1fr);
2221
+ }
2222
+
2223
+ .hg-grid-cols-12 {
2224
+ grid-template-columns: repeat(12, 1fr);
2225
+ }
2226
+
2227
+ [class*="hg-col-span-"] {
2228
+ padding: 0;
2229
+ }
2230
+
2231
+ .hg-col-span-1 {
2232
+ grid-column: span 1;
2233
+ }
2234
+
2235
+ .hg-col-span-2 {
2236
+ grid-column: span 2;
2237
+ }
2238
+
2239
+ .hg-col-span-3 {
2240
+ grid-column: span 3;
2241
+ }
2242
+
2243
+ .hg-col-span-4 {
2244
+ grid-column: span 4;
2245
+ }
2246
+
2247
+ .hg-col-span-5 {
2248
+ grid-column: span 5;
2249
+ }
2250
+
2251
+ .hg-col-span-6 {
2252
+ grid-column: span 6;
2253
+ }
2254
+
2255
+ .hg-col-span-7 {
2256
+ grid-column: span 7;
2257
+ }
2258
+
2259
+ .hg-col-span-8 {
2260
+ grid-column: span 8;
2261
+ }
2262
+
2263
+ .hg-col-span-9 {
2264
+ grid-column: span 9;
2265
+ }
2266
+
2267
+ .hg-col-span-10 {
2268
+ grid-column: span 10;
2269
+ }
2270
+
2271
+ .hg-col-span-11 {
2272
+ grid-column: span 11;
2273
+ }
2274
+
2275
+ .hg-col-span-12 {
2276
+ grid-column: span 12;
2277
+ }
2278
+
2279
+ .hg-col-start-1 {
2280
+ grid-column-start: 1;
2281
+ }
2282
+
2283
+ .hg-col-start-2 {
2284
+ grid-column-start: 2;
2285
+ }
2286
+
2287
+ .hg-col-start-3 {
2288
+ grid-column-start: 3;
2289
+ }
2290
+
2291
+ .hg-col-start-4 {
2292
+ grid-column-start: 4;
2293
+ }
2294
+
2295
+ .hg-col-start-5 {
2296
+ grid-column-start: 5;
2297
+ }
2298
+
2299
+ .hg-col-start-6 {
2300
+ grid-column-start: 6;
2301
+ }
2302
+
2303
+ .hg-col-start-7 {
2304
+ grid-column-start: 7;
2305
+ }
2306
+
2307
+ .hg-col-start-8 {
2308
+ grid-column-start: 8;
2309
+ }
2310
+
2311
+ .hg-col-start-9 {
2312
+ grid-column-start: 9;
2313
+ }
2314
+
2315
+ .hg-col-start-10 {
2316
+ grid-column-start: 10;
2317
+ }
2318
+
2319
+ .hg-col-start-11 {
2320
+ grid-column-start: 11;
2321
+ }
2322
+
2323
+ .hg-col-start-12 {
2324
+ grid-column-start: 12;
2325
+ }
2326
+
2327
+ @media (min-width: 48rem) {
2328
+ .md\:hg-grid-cols-1 {
2329
+ grid-template-columns: repeat(1, 1fr);
2330
+ }
2331
+
2332
+ .md\:hg-grid-cols-2 {
2333
+ grid-template-columns: repeat(2, 1fr);
2334
+ }
2335
+
2336
+ .md\:hg-grid-cols-3 {
2337
+ grid-template-columns: repeat(3, 1fr);
2338
+ }
2339
+
2340
+ .md\:hg-grid-cols-4 {
2341
+ grid-template-columns: repeat(4, 1fr);
2342
+ }
2343
+
2344
+ .md\:hg-grid-cols-5 {
2345
+ grid-template-columns: repeat(5, 1fr);
2346
+ }
2347
+
2348
+ .md\:hg-grid-cols-6 {
2349
+ grid-template-columns: repeat(6, 1fr);
2350
+ }
2351
+
2352
+ .md\:hg-grid-cols-7 {
2353
+ grid-template-columns: repeat(7, 1fr);
2354
+ }
2355
+
2356
+ .md\:hg-grid-cols-8 {
2357
+ grid-template-columns: repeat(8, 1fr);
2358
+ }
2359
+
2360
+ .md\:hg-grid-cols-9 {
2361
+ grid-template-columns: repeat(9, 1fr);
2362
+ }
2363
+
2364
+ .md\:hg-grid-cols-10 {
2365
+ grid-template-columns: repeat(10, 1fr);
2366
+ }
2367
+
2368
+ .md\:hg-grid-cols-11 {
2369
+ grid-template-columns: repeat(11, 1fr);
2370
+ }
2371
+
2372
+ .md\:hg-grid-cols-12 {
2373
+ grid-template-columns: repeat(12, 1fr);
2374
+ }
2375
+
2376
+ [class*="md\:hg-col-span-"] {
2377
+ padding: 0;
2378
+ }
2379
+
2380
+ .md\:hg-col-span-1 {
2381
+ grid-column: span 1;
2382
+ }
2383
+
2384
+ .md\:hg-col-span-2 {
2385
+ grid-column: span 2;
2386
+ }
2387
+
2388
+ .md\:hg-col-span-3 {
2389
+ grid-column: span 3;
2390
+ }
2391
+
2392
+ .md\:hg-col-span-4 {
2393
+ grid-column: span 4;
2394
+ }
2395
+
2396
+ .md\:hg-col-span-5 {
2397
+ grid-column: span 5;
2398
+ }
2399
+
2400
+ .md\:hg-col-span-6 {
2401
+ grid-column: span 6;
2402
+ }
2403
+
2404
+ .md\:hg-col-span-7 {
2405
+ grid-column: span 7;
2406
+ }
2407
+
2408
+ .md\:hg-col-span-8 {
2409
+ grid-column: span 8;
2410
+ }
2411
+
2412
+ .md\:hg-col-span-9 {
2413
+ grid-column: span 9;
2414
+ }
2415
+
2416
+ .md\:hg-col-span-10 {
2417
+ grid-column: span 10;
2418
+ }
2419
+
2420
+ .md\:hg-col-span-11 {
2421
+ grid-column: span 11;
2422
+ }
2423
+
2424
+ .md\:hg-col-span-12 {
2425
+ grid-column: span 12;
2426
+ }
2427
+
2428
+ .md\:hg-col-start-1 {
2429
+ grid-column-start: 1;
2430
+ }
2431
+
2432
+ .md\:hg-col-start-2 {
2433
+ grid-column-start: 2;
2434
+ }
2435
+
2436
+ .md\:hg-col-start-3 {
2437
+ grid-column-start: 3;
2438
+ }
2439
+
2440
+ .md\:hg-col-start-4 {
2441
+ grid-column-start: 4;
2442
+ }
2443
+
2444
+ .md\:hg-col-start-5 {
2445
+ grid-column-start: 5;
2446
+ }
2447
+
2448
+ .md\:hg-col-start-6 {
2449
+ grid-column-start: 6;
2450
+ }
2451
+
2452
+ .md\:hg-col-start-7 {
2453
+ grid-column-start: 7;
2454
+ }
2455
+
2456
+ .md\:hg-col-start-8 {
2457
+ grid-column-start: 8;
2458
+ }
2459
+
2460
+ .md\:hg-col-start-9 {
2461
+ grid-column-start: 9;
2462
+ }
2463
+
2464
+ .md\:hg-col-start-10 {
2465
+ grid-column-start: 10;
2466
+ }
2467
+
2468
+ .md\:hg-col-start-11 {
2469
+ grid-column-start: 11;
2470
+ }
2471
+
2472
+ .md\:hg-col-start-12 {
2473
+ grid-column-start: 12;
2474
+ }
2475
+ }
2476
+
2477
+ /* === _icons.css === */
2478
+ :root {
2479
+ --hg-icon-size: var(--hg-spacing-16);
2480
+ }
2481
+
2482
+ .hg-icon {
2483
+ align-items: center;
2484
+ display: inline-flex;
2485
+ flex-flow: column nowrap;
2486
+ justify-content: center;
2487
+ }
2488
+
2489
+ .hg-icon svg {
2490
+ display: block;
2491
+ height: auto;
2492
+ width: var(--hg-icon-size);
2493
+ }