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,154 @@
1
+ // Generador de la sección "Tipografía" para las demos de tema
2
+ // Lee config.typo y produce una tabla HTML con: clase, family, weight,
3
+ // mobile (size), desktop (size), line-height compartida, preview en vivo.
4
+ // La fuente de verdad es config.json — así el demo siempre refleja
5
+ // exactamente lo que existe en dist/output.css.
6
+ //
7
+ // Nota: el line-height casi siempre coincide entre breakpoints, por
8
+ // eso se muestra en una sola columna. Si mobile y desktop divergen,
9
+ // formatLineHeight cae a mostrar ambos separados por una barra.
10
+
11
+ const { getFontFamilyName } = require('../generators/utils');
12
+
13
+ const SAMPLE_TEXT = 'Aa Bb Cc 123';
14
+
15
+ function escapeHtml(str) {
16
+ if (str === undefined || str === null) return '';
17
+ return String(str)
18
+ .replace(/&/g, '&')
19
+ .replace(/</g, '&lt;')
20
+ .replace(/>/g, '&gt;')
21
+ .replace(/"/g, '&quot;');
22
+ }
23
+
24
+ function formatSize(bp) {
25
+ if (!bp || !bp.fontSize) return '<span class="hg-typo-empty">—</span>';
26
+ return `<span class="hg-typo-num">${escapeHtml(bp.fontSize)}</span>`;
27
+ }
28
+
29
+ function formatLineHeight(mobile, desktop) {
30
+ const m = mobile && mobile.lineHeight;
31
+ const d = desktop && desktop.lineHeight;
32
+ if (!m && !d) return '<span class="hg-typo-empty">—</span>';
33
+ if (m && d && m === d) return `<span class="hg-typo-num">${escapeHtml(m)}</span>`;
34
+ // Fallback: valores distintos → mostrar mobile / desktop explícitamente
35
+ return `<span class="hg-typo-num">${escapeHtml(m || '—')}</span> <span class="hg-typo-meta">/ ${escapeHtml(d || '—')}</span>`;
36
+ }
37
+
38
+ function formatFamily(fontFamily, fontFamilyMap) {
39
+ if (!fontFamily) return '—';
40
+ const alias = getFontFamilyName(fontFamily, fontFamilyMap || {});
41
+ // alias puede coincidir con la familia real; si difiere, mostramos ambas
42
+ if (alias && alias !== fontFamily) {
43
+ return `<code>${escapeHtml(alias)}</code> <span class="hg-typo-meta">${escapeHtml(fontFamily)}</span>`;
44
+ }
45
+ return `<code>${escapeHtml(fontFamily)}</code>`;
46
+ }
47
+
48
+ function generateRow(className, cls, fontFamilyMap) {
49
+ const family = formatFamily(cls.fontFamily, fontFamilyMap);
50
+ const weight = cls.fontWeight ? escapeHtml(cls.fontWeight) : '—';
51
+ const ls = cls.letterSpacing ? escapeHtml(cls.letterSpacing) : '—';
52
+ const tt = cls.textTransform ? escapeHtml(cls.textTransform) : '—';
53
+
54
+ return ` <tr>
55
+ <td class="hg-typo-preview"><span class="${escapeHtml(className)}">${SAMPLE_TEXT}</span></td>
56
+ <td><code>.${escapeHtml(className)}</code></td>
57
+ <td>${family}</td>
58
+ <td>${weight}</td>
59
+ <td>${formatSize(cls.mobile)}</td>
60
+ <td>${formatSize(cls.desktop)}</td>
61
+ <td>${formatLineHeight(cls.mobile, cls.desktop)}</td>
62
+ <td>${ls}</td>
63
+ <td>${tt}</td>
64
+ </tr>`;
65
+ }
66
+
67
+ /**
68
+ * Genera la sección HTML con la tabla de tipografías.
69
+ * Devuelve string vacío si no hay clases en config.typo (sin romper builds).
70
+ */
71
+ function generateTypographyHTML(config) {
72
+ const typo = config && config.typo;
73
+ if (!typo || Object.keys(typo).length === 0) return '';
74
+
75
+ const fontFamilyMap = (config && config.fontFamilyMap) || {};
76
+
77
+ const rows = Object.entries(typo)
78
+ .map(([className, cls]) => generateRow(className, cls, fontFamilyMap))
79
+ .join('\n');
80
+
81
+ // Estilos locales: la tabla vive dentro de la demo, no del CSS principal.
82
+ // Mantengo todo en línea para que el snippet sea autocontenido y
83
+ // ThemeTransformer pueda inyectarlo donde encuentre el placeholder.
84
+ return ` <section class="demo-section" id="typography">
85
+ <h2 class="demo-title">Tipografía</h2>
86
+ <p class="mb-24">
87
+ Cada fila usa la clase real generada en <code>dist/output.css</code> a partir de <code>config.json → typo</code>.
88
+ La columna <em>Preview</em> aplica la clase tal cual, así puedes comparar el valor numérico con el render en vivo.
89
+ </p>
90
+
91
+ <style>
92
+ .hg-typo-table-wrap { overflow-x: auto; }
93
+ .hg-typo-table {
94
+ width: 100%;
95
+ border-collapse: collapse;
96
+ font-family: arial, sans-serif;
97
+ font-size: 13px;
98
+ }
99
+ .hg-typo-table th,
100
+ .hg-typo-table td {
101
+ text-align: left;
102
+ padding: 10px 12px;
103
+ border-bottom: 1px solid var(--hg-color-middle-grey, #a9a9a9);
104
+ vertical-align: middle;
105
+ }
106
+ .hg-typo-table thead th {
107
+ font-weight: 700;
108
+ font-size: 11px;
109
+ text-transform: uppercase;
110
+ letter-spacing: 0.04em;
111
+ color: var(--hg-color-dark-grey, #737373);
112
+ border-bottom: 2px solid var(--hg-color-middle-grey, #a9a9a9);
113
+ background: var(--hg-color-bg-light, #f0f0f0);
114
+ }
115
+ .hg-typo-table tbody tr:hover { background: var(--hg-color-bg-light, #f0f0f0); }
116
+ .hg-typo-table code {
117
+ background: var(--hg-color-bg-light, #f0f0f0);
118
+ padding: 2px 6px;
119
+ border-radius: 3px;
120
+ font-size: 12px;
121
+ }
122
+ .hg-typo-preview {
123
+ min-width: 180px;
124
+ color: var(--hg-color-primary, #1d1d1d);
125
+ }
126
+ .hg-typo-num { font-weight: 700; }
127
+ .hg-typo-meta { color: var(--hg-color-dark-grey, #737373); font-size: 12px; }
128
+ .hg-typo-empty { color: var(--hg-color-middle-grey, #a9a9a9); }
129
+ </style>
130
+
131
+ <div class="hg-typo-table-wrap">
132
+ <table class="hg-typo-table">
133
+ <thead>
134
+ <tr>
135
+ <th>Preview</th>
136
+ <th>Clase</th>
137
+ <th>Font family</th>
138
+ <th>Weight</th>
139
+ <th>Mobile</th>
140
+ <th>Desktop</th>
141
+ <th>Line height</th>
142
+ <th>Letter spacing</th>
143
+ <th>Text transform</th>
144
+ </tr>
145
+ </thead>
146
+ <tbody>
147
+ ${rows}
148
+ </tbody>
149
+ </table>
150
+ </div>
151
+ </section>`;
152
+ }
153
+
154
+ module.exports = { generateTypographyHTML };
@@ -1,3 +1,72 @@
1
+ /* ============================================
2
+ FUENTES — Suisse Intl (sans) + Suisse Works (serif)
3
+ Convención: una font-family por peso (suisse-light/regular/
4
+ medium/semibold) en lugar de una familia con varios pesos.
5
+ local() permite usar la fuente instalada en el sistema si
6
+ existe, evitando la descarga. font-display: swap evita el
7
+ FOIT — el texto se muestra con la fuente fallback y se
8
+ sustituye al cargar la web. Servimos woff2 (formato moderno,
9
+ más comprimido) con fallback a woff para navegadores muy
10
+ antiguos.
11
+ ============================================ */
12
+ @font-face {
13
+ font-family: "suisse-light";
14
+ font-weight: 100;
15
+ font-display: swap;
16
+ src: local("SuisseIntl-Light"),
17
+ url('assets/fonts/suisse-intl-light.woff2') format('woff2'),
18
+ url('assets/fonts/suisse-intl-light.woff') format('woff');
19
+ }
20
+ @font-face {
21
+ font-family: "suisse-regular";
22
+ font-weight: 300;
23
+ font-display: swap;
24
+ src: local("SuisseIntl-Regular"),
25
+ url('assets/fonts/suisse-intl-regular.woff2') format('woff2'),
26
+ url('assets/fonts/suisse-intl-regular.woff') format('woff');
27
+ }
28
+ @font-face {
29
+ font-family: "suisse-medium";
30
+ font-weight: 400;
31
+ font-display: swap;
32
+ src: local("SuisseIntl-Medium"),
33
+ url('assets/fonts/suisse-intl-medium.woff2') format('woff2'),
34
+ url('assets/fonts/suisse-intl-medium.woff') format('woff');
35
+ }
36
+ @font-face {
37
+ font-family: "suisse-semibold";
38
+ font-weight: 500;
39
+ font-display: swap;
40
+ src: local("SuisseIntl-SemiBold"),
41
+ url('assets/fonts/suisse-intl-semibold.woff2') format('woff2'),
42
+ url('assets/fonts/suisse-intl-semibold.woff') format('woff');
43
+ }
44
+ /* Suisse Works (serif) — reservado para el tema Limited */
45
+ @font-face {
46
+ font-family: "suisse-works-regular";
47
+ font-weight: 400;
48
+ font-display: swap;
49
+ src: local("SuisseWorks-Regular"),
50
+ url('assets/fonts/suisse-works-regular.woff2') format('woff2'),
51
+ url('assets/fonts/suisse-works-regular.woff') format('woff');
52
+ }
53
+ @font-face {
54
+ font-family: "suisse-works-medium";
55
+ font-weight: 500;
56
+ font-display: swap;
57
+ src: local("SuisseWorks-Medium"),
58
+ url('assets/fonts/suisse-works-medium.woff2') format('woff2'),
59
+ url('assets/fonts/suisse-works-medium.woff') format('woff');
60
+ }
61
+ @font-face {
62
+ font-family: "suisse-works-bold";
63
+ font-weight: 700;
64
+ font-display: swap;
65
+ src: local("SuisseWorks-Bold"),
66
+ url('assets/fonts/suisse-works-bold.woff2') format('woff2'),
67
+ url('assets/fonts/suisse-works-bold.woff') format('woff');
68
+ }
69
+
1
70
  /* ============================================
2
71
  RESET Y BASE
3
72
  ============================================ */
@@ -8,7 +77,7 @@
8
77
  body {
9
78
  margin: 0;
10
79
  padding: 0;
11
- font-family: var(--hg-typo-font-family-primary);
80
+ font-family: var(--hg-typo-font-family-primary-regular);
12
81
  }
13
82
 
14
83
  h2 {
@@ -37,12 +106,12 @@ h2 {
37
106
  margin-bottom: 40px;
38
107
  font-weight: 500;
39
108
  color: #000;
40
- font-family: "Instrument Sans", sans-serif;
109
+ font-family: var(--hg-typo-font-family-primary-bold);
41
110
  letter-spacing: 0;
42
111
  }
43
112
 
44
113
  .guide-main-content h3 {
45
- font-family: helvetica;
114
+ font-family: var(--hg-typo-font-family-primary-regular);
46
115
  color: #000;
47
116
  font-size: 16px;
48
117
  line-height: 28px;
@@ -57,7 +126,7 @@ h2 {
57
126
  }
58
127
 
59
128
  .guide-main-content h3 {
60
- font-family: helvetica;
129
+ font-family: var(--hg-typo-font-family-primary-regular);
61
130
  color: #000;
62
131
  font-size: 20px;
63
132
  line-height: 28px;
@@ -110,7 +179,7 @@ h2 {
110
179
  margin-top: 1rem;
111
180
  font-size: 28px;
112
181
  color: #000000;
113
- font-family: "Instrument Sans", sans-serif;
182
+ font-family: var(--hg-typo-font-family-primary-light);
114
183
  margin-bottom: 20px;
115
184
 
116
185
  line-height: 1.2;
@@ -125,7 +194,7 @@ h2 {
125
194
  margin-top: 1rem;
126
195
  font-size: 28px;
127
196
  color: #000000;
128
- font-family: "Instrument Sans", sans-serif;
197
+ font-family: var(--hg-typo-font-family-primary-light);
129
198
  margin-bottom: 20px;
130
199
 
131
200
  line-height: 1.2;
@@ -206,11 +275,14 @@ h2 {
206
275
  align-items: center;
207
276
  }
208
277
  .guide-nav a {
278
+ font-family: var(--hg-typo-font-family-primary-regular);
209
279
  font-size: 13px;
210
280
  color: #666;
211
281
  text-decoration: none;
212
282
  transition: color 0.2s;
213
283
  white-space: nowrap;
284
+ text-transform: uppercase;
285
+ letter-spacing: 0.05em;
214
286
  }
215
287
  .guide-nav a:hover {
216
288
  color: #000;
@@ -351,6 +423,102 @@ h2 {
351
423
  overflow: auto;
352
424
  }
353
425
 
426
+ /* ============================================
427
+ VARIABLES CSS — Grid de 3 columnas compacto
428
+ ============================================ */
429
+ .guide-variables-grid {
430
+ column-count: 2;
431
+ column-gap: 2rem;
432
+ margin-top: 0;
433
+ font-family: var(--hg-typo-font-family-primary-regular);
434
+ }
435
+ @media (max-width: 720px) {
436
+ .guide-variables-grid { column-count: 1; }
437
+ }
438
+ .guide-variables-group {
439
+ break-inside: avoid;
440
+ -webkit-column-break-inside: avoid;
441
+ page-break-inside: avoid;
442
+ margin: 0 0 1.5rem;
443
+ padding: 0.75rem 1rem;
444
+ border: 1px solid #e9e9e9;
445
+ border-radius: 6px;
446
+ background: #fff;
447
+ display: block;
448
+ }
449
+ .guide-variables-group-title {
450
+ margin: 0 0 0.5rem;
451
+ font-family: var(--hg-typo-font-family-primary-regular);
452
+ font-size: 0.75rem;
453
+ font-weight: 700;
454
+ letter-spacing: 0.06em;
455
+ text-transform: uppercase;
456
+ color: #737373;
457
+ }
458
+ .guide-variables-group-count {
459
+ color: #a9a9a9;
460
+ font-weight: 400;
461
+ margin-left: 0.25rem;
462
+ }
463
+ .guide-variables-group-list {
464
+ display: flex;
465
+ flex-direction: column;
466
+ }
467
+ .guide-variable-item {
468
+ display: flex;
469
+ align-items: center;
470
+ justify-content: space-between;
471
+ gap: 0.75rem;
472
+ padding: 0.4rem 0;
473
+ border-bottom: 1px solid #efefef;
474
+ min-width: 0;
475
+ font-size: 0.72rem;
476
+ }
477
+ .guide-variables-group-list .guide-variable-item:last-child {
478
+ border-bottom: 0;
479
+ }
480
+ .guide-variable-item .guide-variable-name {
481
+ font-weight: 600;
482
+ color: #000;
483
+ word-break: break-all;
484
+ cursor: pointer;
485
+ line-height: 1.3;
486
+ flex: 1 1 auto;
487
+ min-width: 0;
488
+ }
489
+ .guide-variable-item .guide-variable-values {
490
+ display: flex;
491
+ align-items: baseline;
492
+ gap: 0.75rem;
493
+ flex-shrink: 0;
494
+ text-align: right;
495
+ font-size: 0.68rem;
496
+ }
497
+ .guide-variable-item .guide-variable-value {
498
+ color: #333;
499
+ cursor: pointer;
500
+ word-break: break-all;
501
+ max-width: 180px;
502
+ }
503
+ .guide-variable-item .guide-value-center-blue,
504
+ .guide-variable-item .guide-value-center-orange {
505
+ cursor: pointer;
506
+ font-weight: 500;
507
+ white-space: nowrap;
508
+ }
509
+ .guide-variable-item .guide-changed {
510
+ background: transparent;
511
+ }
512
+ .guide-variable-item .guide-variable-swatch {
513
+ display: inline-block;
514
+ width: 14px;
515
+ height: 14px;
516
+ border-radius: 3px;
517
+ border: 1px solid #e3e3e3;
518
+ flex-shrink: 0;
519
+ vertical-align: middle;
520
+ }
521
+
354
522
  .guide-table {
355
523
  width: 100%;
356
524
  border-collapse: collapse;
@@ -413,7 +581,12 @@ h2 {
413
581
  padding: 0.75rem;
414
582
  min-height: 50px;
415
583
  font-size: 1.5rem;
416
- font-weight: 600;
584
+ /* Dejamos que cada font-family muestre su peso natural. En
585
+ esta convención (una familia por peso) cada @font-face
586
+ declara un único font-weight, así que forzar un weight
587
+ aquí anula la diferencia visual entre light / regular /
588
+ medium / semibold. */
589
+ font-weight: normal;
417
590
  }
418
591
 
419
592
  /* Rectángulo de lados afectados (tabla spacing modernas) */
@@ -506,12 +679,12 @@ h2 {
506
679
  .guide-layout-class-name {
507
680
  font-weight: 600;
508
681
  color: #000000;
509
- font-family: arial;
682
+ font-family: var(--hg-typo-font-family-primary-regular);
510
683
  }
511
684
 
512
685
  .guide-text-regular,
513
686
  .guide-table .guide-table-value {
514
- font-family: arial;
687
+ font-family: var(--hg-typo-font-family-primary-regular);
515
688
  color: #333;
516
689
  font-size: 13px;
517
690
  }
@@ -521,7 +694,7 @@ h2 {
521
694
  .guide-table .guide-desktop-value,
522
695
  .guide-table .guide-value-center-blue {
523
696
  font-weight: 500;
524
- font-family: arial;
697
+ font-family: var(--hg-typo-font-family-primary-regular);
525
698
  color: #000000;
526
699
  }
527
700
 
@@ -529,7 +702,7 @@ h2 {
529
702
  .guide-layout-property,
530
703
  .guide-color-var-name,
531
704
  .guide-color-value {
532
- font-family: arial;
705
+ font-family: var(--hg-typo-font-family-primary-regular);
533
706
  color: #666;
534
707
  font-size: 13px;
535
708
  }
@@ -553,7 +726,7 @@ h2 {
553
726
 
554
727
  .guide-table .guide-value-center-orange {
555
728
  font-weight: 500;
556
- font-family: arial;
729
+ font-family: var(--hg-typo-font-family-primary-regular);
557
730
  color: #cc6600;
558
731
  }
559
732
 
@@ -661,7 +834,7 @@ h2 {
661
834
  .guide-info-box-code-info {
662
835
  padding: 0.125rem 0.375rem;
663
836
  border-radius: 3px;
664
- font-family: arial;
837
+ font-family: var(--hg-typo-font-family-primary-regular);
665
838
  font-size: 0.875rem;
666
839
  }
667
840
 
@@ -671,7 +844,7 @@ h2 {
671
844
  padding: 1rem;
672
845
  border-radius: 4px;
673
846
  overflow-x: auto;
674
- font-family: arial;
847
+ font-family: var(--hg-typo-font-family-primary-regular);
675
848
  font-size: 12px;
676
849
  border-radius: 24px;
677
850
  margin-bottom: 24px;
@@ -770,18 +943,18 @@ h2 {
770
943
  ============================================ */
771
944
  .guide-colors-grid {
772
945
  display: grid;
773
- grid-template-columns: repeat(auto-fill, minmax(130px, 1fr));
774
- gap: 1.5rem;
946
+ grid-template-columns: repeat(10, minmax(0, 1fr));
947
+ gap: 0.75rem;
775
948
  margin-top: 2rem;
776
949
  padding-inline: 0.5rem;
777
950
  padding-bottom: 2rem;
778
951
  }
779
952
 
780
-
781
- @media (min-width: 768px) {
782
- .guide-colors-grid {
783
- grid-template-columns: repeat(auto-fill, minmax(180px, 1fr));
784
- }
953
+ @media (max-width: 1280px) {
954
+ .guide-colors-grid { grid-template-columns: repeat(5, minmax(0, 1fr)); }
955
+ }
956
+ @media (max-width: 720px) {
957
+ .guide-colors-grid { grid-template-columns: repeat(2, minmax(0, 1fr)); }
785
958
  }
786
959
 
787
960
 
@@ -956,7 +1129,7 @@ h2 {
956
1129
  position: absolute;
957
1130
  font-size: 0.875rem;
958
1131
  font-weight: 600;
959
- font-family: arial;
1132
+ font-family: var(--hg-typo-font-family-primary-regular);
960
1133
  color: #333;
961
1134
  background: white;
962
1135
  padding: 0.25rem 0.5rem;
@@ -1023,7 +1196,7 @@ h2 {
1023
1196
  }
1024
1197
 
1025
1198
  .guide-typeface-left {
1026
- font-family: var(--hg-typo-font-family-primary);
1199
+ font-family: var(--hg-typo-font-family-primary-regular);
1027
1200
  display: flex;
1028
1201
  flex-direction: column;
1029
1202
  gap: 2rem;
@@ -1188,7 +1361,7 @@ h2 {
1188
1361
  }
1189
1362
 
1190
1363
  .case-study-holygrail-title {
1191
- font-family: 'Roboto', sans-serif;
1364
+ font-family: var(--hg-typo-font-family-primary-light);
1192
1365
  font-size: clamp(2.5rem, 12vw, 8rem);
1193
1366
  font-weight: 100;
1194
1367
  letter-spacing: 0.2em;