@openkfw/design-tokens 0.5.2 → 0.5.3

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.
@@ -0,0 +1,1085 @@
1
+ /* Establish the order of layers upfront */
2
+ @layer core, third-party, components, utility;
3
+ @layer core.reset, core.tokens, core.base;
4
+ @layer third-party.imports, third-party.overrides;
5
+ @layer components.base, components.variations;
6
+
7
+ /* Reset, normalize, etc. */
8
+ @import url("vendor/uaplus.css") layer(core.reset);
9
+
10
+ /* KfW Design Tokens with Custom Media Queries */
11
+ @import url("@openkfw/design-tokens/output/css/kfw-design-tokens.light.css") layer(core.tokens);
12
+ @import url("vendor/gen-custom-media.css") layer(core.tokens);
13
+
14
+ @layer core {
15
+ @layer tokens {
16
+ :root {
17
+ /* fluid shorthands */
18
+ --kfw-safezone: clamp(var(--kfw-safezone-min), var(--kfw-safezone-val), var(--kfw-safezone-max));
19
+ --kfw-space-large: clamp(var(--kfw-space-large-min), var(--kfw-space-large-val), var(--kfw-space-large-max));
20
+ --kfw-space-big: clamp(var(--kfw-space-big-min), var(--kfw-space-big-val), var(--kfw-space-big-max));
21
+
22
+ /* global color.tokens prepared for overwrites by parent selector (bg-dark) */
23
+ --headline-color: var(--kfw-color-text);
24
+ --kfw-focusring-outline-color: var(--kfw-color-fn-active);
25
+ }
26
+ }
27
+
28
+ @layer base {
29
+ :root {
30
+ font-size: 62.5%; /* 1rem = 10px */
31
+ font-family: var(--kfw-fontfamily);
32
+ background-color: var(--kfw-color-background);
33
+ color: var(--kfw-color-text);
34
+ line-height: var(--kfw-lineheight);
35
+ font-weight: var(--kfw-fontweight);
36
+ -webkit-font-smoothing: antialiased;
37
+ -moz-osx-font-smoothing: grayscale;
38
+ }
39
+
40
+ *:focus-visible {
41
+ outline: var(--kfw-focusring-outline-width) var(--kfw-focusring-outline-style) var(--kfw-focusring-outline-color);
42
+ outline-offset: var(--kfw-focusring-outline-offset);
43
+ }
44
+
45
+ body {
46
+ margin: 0;
47
+ font-size: 1.6rem; /* Set 16px as default */
48
+ }
49
+
50
+ strong,
51
+ b {
52
+ font-weight: var(--kfw-fontweight-bold);
53
+ }
54
+
55
+ small {
56
+ font-size: 80%;
57
+ }
58
+
59
+ :is(sub, sup) {
60
+ position: relative;
61
+ line-height: 0;
62
+ vertical-align: baseline;
63
+ font-size: 75%;
64
+ }
65
+
66
+ sub {
67
+ bottom: -0.25em;
68
+ }
69
+
70
+ sup {
71
+ top: -0.5em;
72
+ }
73
+
74
+ :is(address, blockquote, dl, ol, p, pre, table, ul) {
75
+ margin-block: 0 var(--kfw-fontspace);
76
+ }
77
+
78
+ :is(address, blockquote, dl, ol, p, pre, table, ul):last-child {
79
+ margin-block-end: 0;
80
+ }
81
+
82
+ ul,
83
+ ol,
84
+ menu {
85
+ list-style: none inside none;
86
+ padding-inline-start: 0;
87
+ }
88
+
89
+ mark {
90
+ padding: 0.125rem 0.25rem;
91
+ vertical-align: baseline;
92
+ background-color: var(--kfw-color-background-dark-blue);
93
+ color: var(--kfw-color-text-on-dark-bg);
94
+ }
95
+
96
+ blockquote {
97
+ margin-inline: 0;
98
+ }
99
+
100
+ blockquote footer {
101
+ margin-block-start: var(--kfw-fontspace-2xsmall);
102
+ }
103
+
104
+ /**
105
+ * Table
106
+ */
107
+
108
+ /*
109
+ :where(table) {
110
+ width: 100%;
111
+ border-collapse: collapse;
112
+ border-spacing: 0;
113
+ text-indent: 0;
114
+ }
115
+
116
+ th,
117
+ td {
118
+ padding: calc(var(--kfw-space-medium) / 2) var(--kfw-space-medium);
119
+ border-bottom: var(--kfw-borderwidth) solid var(--kfw-color-text);
120
+ background-color: var(--kfw-color-background-light-blue);
121
+ color: var(--kfw-color-text);
122
+ font-weight: var(--kfw-fontweight);
123
+ border-color: transparent;
124
+ }
125
+
126
+ tfoot th,
127
+ tfoot td {
128
+ border-top: var(--kfw-borderwidth) solid var(--kfw-color-text);
129
+ border-bottom: 0;
130
+ }
131
+
132
+ table.striped tbody tr:nth-child(odd) th,
133
+ table.striped tbody tr:nth-child(odd) td {
134
+ background-color: var(--kfw-color-background);
135
+ } */
136
+
137
+ /**
138
+ * Embedded content
139
+ */
140
+ :where(audio, canvas, iframe, img, svg, video) {
141
+ vertical-align: middle;
142
+ }
143
+
144
+ audio,
145
+ video {
146
+ display: inline-block;
147
+ }
148
+
149
+ :where(iframe) {
150
+ border-style: none;
151
+ }
152
+
153
+ img,
154
+ video {
155
+ max-width: 100%;
156
+ height: auto;
157
+ border-style: none;
158
+ }
159
+
160
+ figure {
161
+ display: block;
162
+ margin: 0;
163
+ padding: 0;
164
+ }
165
+
166
+ figure figcaption {
167
+ padding: var(--kfw-space-xsmall);
168
+ }
169
+
170
+ code,
171
+ kbd,
172
+ samp,
173
+ pre {
174
+ font-family: var(--kfw-fontfamily-code);
175
+ line-height: initial;
176
+ }
177
+
178
+ pre {
179
+ display: block;
180
+ margin-block: 0 var(--kfw-fontspace);
181
+ overflow: auto;
182
+ -ms-overflow-style: scrollbar;
183
+ }
184
+
185
+ abbr[title] {
186
+ text-decoration: underline dotted;
187
+ cursor: help;
188
+ }
189
+
190
+ ins {
191
+ color: var(--kfw-color-state-success);
192
+ text-decoration: none;
193
+ }
194
+
195
+ del {
196
+ color: var(--kfw-color-state-danger);
197
+ }
198
+
199
+ :is(h1, h2, h3, h4, h5, h6, .hl--1, .hl--2, .hl--3, .hl--4, .hl--5, .hl--6) {
200
+ font-weight: var(--kfw-fontweight-bold);
201
+ line-height: var(--kfw-lineheight-heading);
202
+ margin-block-start: 0;
203
+ color: var(--headline-color);
204
+ display: block;
205
+ }
206
+
207
+ h1,
208
+ .hl--1 {
209
+ font-size: clamp(var(--kfw-fontsize-heading-1-min), var(--kfw-fontsize-heading-1-val), var(--kfw-fontsize-heading-1-max));
210
+ margin-block-end: var(--kfw-fontspace-heading-1);
211
+ }
212
+
213
+ @media (--kfw-breakpoint-desktop-large) {
214
+ h1,
215
+ .hl--1 {
216
+ letter-spacing: var(--kfw-base-letterspacing-tight);
217
+ }
218
+ }
219
+
220
+ h2,
221
+ .hl--2 {
222
+ font-size: clamp(var(--kfw-fontsize-heading-2-min), var(--kfw-fontsize-heading-2-val), var(--kfw-fontsize-heading-2-max));
223
+ margin-block-end: var(--kfw-fontspace-heading-2);
224
+ letter-spacing: var(--kfw-base-letterspacing-tight);
225
+ }
226
+
227
+ h3,
228
+ .hl--3 {
229
+ font-size: clamp(var(--kfw-fontsize-heading-3-min), var(--kfw-fontsize-heading-3-val), var(--kfw-fontsize-heading-3-max));
230
+ margin-block-end: var(--kfw-fontspace-heading-3);
231
+ letter-spacing: var(--kfw-base-letterspacing-tight);
232
+ }
233
+
234
+ @media (--kfw-breakpoint-desktop-large) {
235
+ h3,
236
+ .hl--3 {
237
+ letter-spacing: var(--kfw-base-letterspacing-normal);
238
+ }
239
+ }
240
+
241
+ h4,
242
+ .hl--4 {
243
+ font-size: clamp(var(--kfw-fontsize-heading-4-min), var(--kfw-fontsize-heading-4-val), var(--kfw-fontsize-heading-4-max));
244
+ margin-block-end: var(--kfw-fontspace-heading-4);
245
+ }
246
+
247
+ h5,
248
+ .hl--5 {
249
+ font-size: var(--kfw-fontsize-heading-5);
250
+ margin-block-end: var(--kfw-fontspace-heading-5);
251
+ line-height: var(--kfw-lineheight-heading-5);
252
+ letter-spacing: var(--kfw-base-letterspacing-normal);
253
+ }
254
+
255
+ @media (--kfw-breakpoint-desktop-large) {
256
+ h5,
257
+ .hl--5 {
258
+ letter-spacing: var(--kfw-base-letterspacing-wide);
259
+ }
260
+ }
261
+
262
+ h6,
263
+ .hl--6 {
264
+ font-size: var(--kfw-fontsize-heading-6);
265
+ margin-block-end: var(--kfw-fontspace-heading-6);
266
+ letter-spacing: var(--kfw-base-letterspacing-wide);
267
+ line-height: var(--kfw-lineheight);
268
+ }
269
+
270
+ /**
271
+ * Link
272
+ */
273
+ :where(a:not([role="button"])),
274
+ [role="link"] {
275
+ --link-color: var(--kfw-color-fn);
276
+ --link-color-hover: var(--kfw-color-fn-active);
277
+
278
+ color: var(--link-color);
279
+ text-decoration: none;
280
+ border-radius: var(--kfw-borderradius);
281
+ }
282
+
283
+ a:not([role="button"]):where(:hover, :focus, :active, [aria-current]:not([aria-current="false"])),
284
+ [role="link"]:where(:hover, :focus, :active, [aria-current]:not([aria-current="false"])) {
285
+ color: var(--link-color-hover);
286
+ text-decoration: underline;
287
+ }
288
+
289
+ a[role="button"] {
290
+ display: inline-block;
291
+ }
292
+
293
+ /**
294
+ * Form
295
+ */
296
+ .form-control {
297
+ --borderhover: var(--kfw-color-fn-active);
298
+ --placeholder-color: var(--kfw-color-fn);
299
+
300
+ appearance: none;
301
+ width: 100%;
302
+ height: 4.3rem;
303
+ font-size: var(--kfw-fontsize);
304
+ font-family: inherit;
305
+ line-height: var(--kfw-lineheight);
306
+ color: var(--kfw-color-fn);
307
+ border-radius: var(--kfw-borderradius);
308
+ margin-block-start: 0;
309
+ border: var(--kfw-borderwidth) solid var(--kfw-base-color-gray-500);
310
+ padding-inline: 1.5rem;
311
+ padding-block: 1rem;
312
+ background-color: var(--kfw-color-background);
313
+ }
314
+
315
+ .form-control::placeholder {
316
+ color: var(--placeholder-color);
317
+ }
318
+
319
+ .form-control:disabled {
320
+ --placeholder-color: var(--kfw-color-text);
321
+
322
+ background-color: transparent;
323
+ color: var(--kfw-color-text);
324
+ border-color: var(--kfw-color-fn-inactive);
325
+ }
326
+
327
+ .form-control:hover:not(:disabled) {
328
+ box-shadow: 0 0 0 var(--kfw-borderwidth) var(--borderhover);
329
+ }
330
+
331
+ :is([type="checkbox"], [type="radio"], select.form-control):not(:disabled) {
332
+ cursor: pointer;
333
+ }
334
+
335
+ select.form-control {
336
+ padding-block: 0;
337
+ }
338
+
339
+ textarea.form-control {
340
+ height: auto;
341
+ }
342
+
343
+ .form-control[aria-invalid="true"] {
344
+ --borderhover: var(--kfw-color-state-danger);
345
+ --placeholder-color: var(--kfw-color-state-danger);
346
+
347
+ border-color: var(--kfw-color-state-danger);
348
+ color: var(--kfw-color-state-danger);
349
+ box-shadow: 0 0 0 var(--kfw-borderwidth) var(--borderhover);
350
+ }
351
+
352
+ :is(progress, [type="checkbox"], [type="radio"], [type="range"]) {
353
+ accent-color: var(--kfw-color-fn);
354
+ }
355
+
356
+ textarea {
357
+ display: block;
358
+ resize: vertical;
359
+ }
360
+
361
+ fieldset {
362
+ margin: 0;
363
+ padding: 0;
364
+ border: 0;
365
+ }
366
+
367
+ [type="file"],
368
+ [type="range"] {
369
+ padding: 0;
370
+ border: 0;
371
+ width: 100%;
372
+ }
373
+
374
+ [type="file"]::file-selector-button {
375
+ margin-inline-end: var(--kfw-space-xsmall);
376
+ }
377
+
378
+ :where(input, select, textarea, fieldset) + small,
379
+ .invalid-feedback {
380
+ display: block;
381
+ width: 100%;
382
+ margin-block-start: 0.8rem;
383
+ font-size: var(--kfw-fontsize-small);
384
+ line-height: var(--kfw-lineheight);
385
+ letter-spacing: var(--kfw-base-letterspacing-normal);
386
+ }
387
+
388
+ .invalid-feedback {
389
+ color: var(--kfw-color-state-danger);
390
+ }
391
+
392
+ :is(label, fieldset legend, .form-label) {
393
+ display: inline-block;
394
+ margin-block-end: 0.8rem;
395
+ font-weight: var(--kfw-fontweight-bold);
396
+ color: var(--kfw-color-text);
397
+ }
398
+
399
+ :is([type="checkbox"], [type="radio"]) {
400
+ appearance: none;
401
+ width: var(--field-size);
402
+ height: var(--field-size);
403
+ margin: 0;
404
+ border: var(--kfw-borderwidth) solid var(--kfw-color-fn-active);
405
+ color: var(--kfw-color-fn-active);
406
+ vertical-align: middle;
407
+ position: relative;
408
+ display: flex;
409
+ align-items: center;
410
+ flex-shrink: 0;
411
+ justify-content: center;
412
+ background-color: var(--kfw-color-background);
413
+ }
414
+
415
+ :is([type="checkbox"], [type="radio"])[aria-invalid="true"] {
416
+ border-color: var(--kfw-color-state-danger);
417
+ border-width: var(--kfw-borderwidth-large);
418
+ color: var(--kfw-color-state-danger);
419
+ }
420
+
421
+ [type="radio"] {
422
+ border-radius: var(--kfw-borderradius-circle);
423
+ }
424
+
425
+ [type="checkbox"] {
426
+ border-radius: var(--kfw-borderradius);
427
+ }
428
+
429
+ :is([type="checkbox"], [type="radio"]):disabled {
430
+ background-color: var(--kfw-base-color-gray-100);
431
+ color: var(--kfw-color-fn-inactive);
432
+ border-color: var(--kfw-color-fn-inactive);
433
+ }
434
+
435
+ :is([type="checkbox"], [type="radio"])::before {
436
+ content: none;
437
+ display: block;
438
+ position: absolute;
439
+ top: 50%;
440
+ left: 50%;
441
+ border-color: currentcolor;
442
+ border-bottom-style: solid;
443
+ border-left-style: solid;
444
+ }
445
+
446
+ [type="checkbox"]::before {
447
+ width: 1.6rem;
448
+ height: 0.9rem;
449
+ transform: translate(-50%, -50%) rotate(314deg);
450
+ margin-top: -1px;
451
+ border-bottom-width: 0.225rem;
452
+ border-left-width: 0.225rem;
453
+ }
454
+
455
+ [type="radio"]::before {
456
+ width: 1.4rem;
457
+ height: 1.4rem;
458
+ transform: translate(-50%, -50%);
459
+ border-radius: var(--kfw-borderradius-circle);
460
+ background-color: currentcolor;
461
+ forced-color-adjust: none;
462
+ }
463
+
464
+ :is([type="checkbox"], [type="radio"]):checked::before {
465
+ content: "";
466
+ }
467
+
468
+ :is([type="radio"], [type="checkbox"]):hover:not(:disabled),
469
+ :is([type="radio"], [type="checkbox"]):focus:not(:disabled) {
470
+ border-width: var(--kfw-borderwidth-large);
471
+ }
472
+
473
+ .form-group {
474
+ margin-block-end: var(--kfw-space-medium);
475
+ }
476
+
477
+ .list-group-form {
478
+ --col-gap: 1.5rem;
479
+ --field-size: 2.8rem;
480
+
481
+ align-items: flex-start;
482
+ display: flex;
483
+ flex-direction: column;
484
+ gap: var(--kfw-space-small) var(--kfw-space-medium);
485
+ }
486
+
487
+ .list-group-form > * {
488
+ align-items: flex-start;
489
+ display: flex;
490
+ margin-bottom: 0;
491
+ }
492
+
493
+ .list-group-form label {
494
+ font-weight: var(--kfw-fontweight);
495
+ padding-left: var(--col-gap);
496
+ width: 100%;
497
+ margin-block-end: 0;
498
+ display: flex;
499
+ flex: 1 1;
500
+ flex-direction: column;
501
+ padding-block-start: 0.4rem;
502
+ }
503
+
504
+ .list-group-form--with-description label {
505
+ font-weight: var(--kfw-fontweight-bold);
506
+ }
507
+
508
+ .list-group-form--with-description label > * {
509
+ font-weight: var(--kfw-fontweight);
510
+ }
511
+
512
+ .list-group-form > *:has(input:not(:disabled)) label {
513
+ cursor: pointer;
514
+ }
515
+
516
+ .list-group-form > *:has(.list-group-form--subgroup) {
517
+ flex-wrap: wrap;
518
+ }
519
+
520
+ .list-group-form--subgroup {
521
+ flex-basis: 100%;
522
+ margin-block-start: var(--kfw-space-small);
523
+ padding-left: calc(var(--field-size) + var(--col-gap));
524
+ }
525
+
526
+ @media (--kfw-breakpoint-mobile) {
527
+ .list-group-form--inline {
528
+ flex-flow: row wrap;
529
+ }
530
+ }
531
+
532
+ /**
533
+ * Button
534
+ */
535
+ button,
536
+ [type="submit"],
537
+ [type="reset"],
538
+ [type="button"],
539
+ [type="file"]::file-selector-button,
540
+ [role="button"] {
541
+ border: var(--kfw-borderwidth) solid transparent;
542
+ font-family: var(--kfw-fontfamily);
543
+ font-size: var(--kfw-fontsize);
544
+ font-weight: var(--kfw-fontweight);
545
+ border-radius: var(--kfw-borderradius);
546
+ display: inline-flex;
547
+ gap: 0.8rem;
548
+ text-align: center;
549
+ text-decoration: none;
550
+ line-height: var(--kfw-lineheight);
551
+ padding: 1.2rem 2.5rem;
552
+ justify-content: center;
553
+ max-width: 100%;
554
+ vertical-align: middle;
555
+ white-space: nowrap;
556
+ cursor: pointer;
557
+ }
558
+
559
+ .button--primary {
560
+ --button-border-color: var(--kfw-color-fn);
561
+ --button-bg: var(--kfw-color-fn);
562
+ --button-color: var(--kfw-color-text-on-dark-bg);
563
+ --button-border-color-hover: var(--kfw-color-fn-active);
564
+ --button-bg-hover: var(--kfw-color-fn-active);
565
+ --button-color-hover: var(--button-color);
566
+
567
+ background-color: var(--button-bg);
568
+ color: var(--button-color);
569
+ border-color: var(--button-border-color);
570
+ }
571
+
572
+ .button--primary:is(:hover, :focus) {
573
+ color: var(--button-color-hover);
574
+ background-color: var(--button-bg-hover);
575
+ border-color: var(--button-border-color-hover);
576
+ text-decoration: underline;
577
+ }
578
+
579
+ [type="file"]::file-selector-button,
580
+ :is([type="reset"], .button--secondary) {
581
+ --button-border-color: var(--kfw-color-fn);
582
+ --button-bg: transparent;
583
+ --button-color: var(--kfw-color-fn);
584
+ --button-border-color-hover: var(--kfw-color-fn-active);
585
+ --button-bg-hover: var(--kfw-color-fn-active);
586
+ --button-color-hover: var(--kfw-color-text-on-dark-bg);
587
+
588
+ background-color: var(--button-bg);
589
+ color: var(--button-color);
590
+ border-color: var(--button-border-color);
591
+ }
592
+
593
+ [type="file"]::file-selector-button:is(:hover, :focus),
594
+ :is([type="reset"], .button--secondary):is(:hover, :focus) {
595
+ color: var(--button-color-hover);
596
+ background-color: var(--button-bg-hover);
597
+ border-color: var(--button-border-color-hover);
598
+ text-decoration: underline;
599
+ }
600
+
601
+ .button--tertiary {
602
+ --button-color: var(--kfw-color-fn);
603
+ --button-bg: transparent;
604
+ --button-color-hover: var(--kfw-color-fn-active);
605
+
606
+ background-color: var(--button-bg);
607
+ color: var(--button-color);
608
+ padding: 0;
609
+ border: 0;
610
+ text-decoration: none;
611
+ }
612
+
613
+ .button--tertiary:is(:hover, :focus) {
614
+ color: var(--button-color-hover);
615
+ text-decoration: underline;
616
+ }
617
+
618
+ .button--small {
619
+ padding: 0.8rem 1.6rem;
620
+ font-size: var(--kfw-fontsize-small);
621
+ }
622
+
623
+ input:not([type="submit"], [type="button"], [type="reset"])[disabled],
624
+ select[disabled],
625
+ textarea[disabled],
626
+ label[aria-disabled="true"],
627
+ :where(fieldset[disabled]) :is(input:not([type="submit"], [type="button"], [type="reset"]), select, textarea) {
628
+ pointer-events: none;
629
+ }
630
+
631
+ /**
632
+ * File-Upload
633
+ */
634
+ .file-upload {
635
+ display: flex;
636
+ flex-direction: column;
637
+ align-items: center;
638
+ padding: var(--kfw-space-small) var(--kfw-space-small) var(--kfw-space-medium);
639
+ background-color: var(--kfw-color-background-light-green);
640
+ margin-block-end: var(--kfw-space-medium);
641
+ }
642
+
643
+ .file-upload__title {
644
+ margin-block-end: var(--kfw-fontspace);
645
+ }
646
+
647
+ label.file-upload__title {
648
+ margin-block-end: var(--kfw-fontspace);
649
+ font-weight: var(--kfw-fontweight);
650
+ }
651
+
652
+ .file-upload__input {
653
+ width: auto;
654
+ max-width: 100%;
655
+ }
656
+
657
+ .file-upload--with-native-input .file-upload__input {
658
+ display: none;
659
+ }
660
+
661
+ .file-upload--with-native-input .file-upload__input--has-files {
662
+ display: block;
663
+ }
664
+
665
+ .file-upload--with-native-input:has(.file-upload__input--has-files) :is(button, [role="button"]) {
666
+ display: none;
667
+ }
668
+
669
+ .file-upload__icon {
670
+ position: relative;
671
+ display: block;
672
+ transform: scale(1);
673
+ width: 2.8rem;
674
+ height: 1.3rem;
675
+ border: 0.3rem solid var(--kfw-color-fn);
676
+ border-top: 0;
677
+ margin-block: 2.5rem 2rem;
678
+ }
679
+
680
+ .file-upload__icon::before,
681
+ .file-upload__icon::after {
682
+ content: "";
683
+ display: block;
684
+ position: absolute;
685
+ }
686
+
687
+ .file-upload__icon::before {
688
+ left: 1rem;
689
+ bottom: 0.4rem;
690
+ width: 0.3rem;
691
+ height: 1.9rem;
692
+ background-color: var(--kfw-color-fn);
693
+ }
694
+
695
+ .file-upload__icon::after {
696
+ bottom: 0.7rem;
697
+ left: 0.35rem;
698
+ width: 1.6rem;
699
+ height: 1.6rem;
700
+ transform: rotate(45deg);
701
+ border-left: 0.3rem solid var(--kfw-color-fn);
702
+ border-top: 0.3rem solid var(--kfw-color-fn);
703
+ }
704
+
705
+ /**
706
+ * Containers
707
+ */
708
+ :is(.container, .container-fluid, .container-narrow, .container-extended, .container-extended-fullwidth) {
709
+ margin-inline: auto;
710
+ width: 100%;
711
+ }
712
+
713
+ :is(.container, .container-fluid, .container-narrow, .container-extended) {
714
+ padding-inline: var(--kfw-safezone);
715
+ }
716
+
717
+ .container {
718
+ max-width: var(--kfw-contentwrapper-basic);
719
+ }
720
+
721
+ .container-narrow {
722
+ max-width: var(--kfw-contentwrapper-narrow);
723
+ }
724
+
725
+ .container-extended {
726
+ max-width: var(--kfw-contentwrapper-extended);
727
+ }
728
+
729
+ .container-extended-fullwidth {
730
+ max-width: var(--kfw-contentwrapper-extended);
731
+ }
732
+
733
+ [class^="container"] > section {
734
+ margin-block: var(--kfw-space-large) var(--kfw-space-large);
735
+ }
736
+
737
+ /**
738
+ * Overflow auto (e.g. for code blocks, tables)
739
+ */
740
+ .overflow-auto {
741
+ overflow: auto;
742
+ }
743
+ }
744
+ }
745
+
746
+ @layer components {
747
+ @layer base {
748
+ .header {
749
+ background-color: var(--kfw-color-background);
750
+ border-bottom: var(--kfw-borderwidth) solid var(--kfw-color-line-11);
751
+ position: sticky;
752
+ top: 0;
753
+ z-index: 1000;
754
+ }
755
+
756
+ .header > div {
757
+ display: grid;
758
+ grid-template-columns: 1fr auto 1fr;
759
+ align-items: center;
760
+ min-height: 6.4rem;
761
+ gap: var(--kfw-space-medium);
762
+ }
763
+
764
+ .header img {
765
+ width: auto;
766
+ }
767
+
768
+ .header__menu {
769
+ text-align: right;
770
+ }
771
+
772
+ .header-logo-mobile {
773
+ height: 2.8rem;
774
+ }
775
+
776
+ .header-logo-desktop {
777
+ display: none;
778
+ }
779
+
780
+ .header--sticky .header-logo-mobile {
781
+ display: block;
782
+ }
783
+
784
+ .header--sticky .header-logo-desktop {
785
+ display: none;
786
+ }
787
+
788
+ @media (--kfw-breakpoint-desktop) {
789
+ .header :is(button, a) {
790
+ font-size: var(--kfw-fontsize-large);
791
+ }
792
+
793
+ .header-logo-mobile {
794
+ display: none;
795
+ }
796
+
797
+ .header-logo-desktop {
798
+ display: block;
799
+ height: 6rem;
800
+ margin-block: 3rem;
801
+ }
802
+ }
803
+
804
+ .footer {
805
+ --kfw-focusring-outline-color: var(--kfw-color-background);
806
+
807
+ border-top: var(--kfw-base-borderwidth-md) solid var(--kfw-color-line-11);
808
+ background-color: var(--kfw-color-background-dark-blue);
809
+ color: var(--kfw-color-text-on-dark-bg);
810
+ font-size: var(--kfw-fontsize-small);
811
+ line-height: var(--kfw-lineheight);
812
+ padding-block: var(--kfw-space-medium) var(--kfw-space-large);
813
+ }
814
+
815
+ .footer .button--secondary {
816
+ /* use the same styles as .bg-dark .button--secondary */
817
+ --button-color: var(--kfw-color-text-on-dark-bg);
818
+ --button-border-color: var(--kfw-color-text-on-dark-bg);
819
+ --button-bg-hover: var(--kfw-color-text-on-dark-bg);
820
+ --button-color-hover: var(--kfw-color-text);
821
+ --button-border-color-hover: var(--kfw-color-text-on-dark-bg);
822
+ }
823
+
824
+ .footer :where(a:not([role="button"])),
825
+ .footer [role="link"] {
826
+ /* use the same styles as .bg-dark a */
827
+ --link-color: var(--kfw-color-text-on-dark-bg);
828
+ --link-color-hover: var(--kfw-color-text-on-dark-bg);
829
+
830
+ text-decoration: underline;
831
+ }
832
+
833
+ .footer a:not([role="button"]):where(:hover, :focus, :active, [aria-current]:not([aria-current="false"])),
834
+ .footer [role="link"]:where(:hover, :focus, :active, [aria-current]:not([aria-current="false"])) {
835
+ text-decoration: none;
836
+ }
837
+
838
+ .footer > * {
839
+ align-items: baseline;
840
+ display: flex;
841
+ flex-direction: column;
842
+ gap: var(--kfw-space-medium);
843
+ justify-content: space-between;
844
+ }
845
+
846
+ @media (--kfw-breakpoint-desktop) {
847
+ .footer > * {
848
+ gap: 3.6rem;
849
+ flex-direction: row;
850
+ }
851
+ }
852
+
853
+ .footer__copyright {
854
+ flex-shrink: 0;
855
+ }
856
+
857
+ .footer__list {
858
+ list-style: none;
859
+ padding: 0;
860
+ margin: 0;
861
+ display: flex;
862
+ flex-flow: row wrap;
863
+ max-width: 100%;
864
+ gap: 1.6rem var(--kfw-space-large);
865
+ }
866
+
867
+ .grid {
868
+ display: grid;
869
+ grid-template-columns: 1fr;
870
+ column-gap: var(--kfw-safezone);
871
+ margin-block-end: var(--kfw-fontspace);
872
+ }
873
+
874
+ @media (--kfw-breakpoint-tablet) {
875
+ .grid {
876
+ grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
877
+ margin-block-end: 0;
878
+ }
879
+ }
880
+
881
+ .hero {
882
+ --hero-content-desktop-width: 42.9rem;
883
+ }
884
+
885
+ .hero > * {
886
+ position: relative;
887
+ }
888
+
889
+ .hero__bars {
890
+ display: block;
891
+ width: 100%;
892
+ }
893
+
894
+ @media (--kfw-breakpoint-desktop) {
895
+ .hero__bars {
896
+ width: var(--hero-content-desktop-width);
897
+ position: absolute;
898
+ top: 4rem;
899
+ left: 4rem;
900
+ bottom: 4rem;
901
+ }
902
+ }
903
+
904
+ .hero__title {
905
+ width: 100%;
906
+ margin-block: 0;
907
+ align-items: center;
908
+ display: flex;
909
+ flex-direction: row;
910
+ padding: 2rem;
911
+ background-color: var(--kfw-color-background-light-blue);
912
+ }
913
+
914
+ @media (--kfw-breakpoint-desktop) {
915
+ .hero__title {
916
+ flex-direction: row;
917
+ position: absolute;
918
+ display: flex;
919
+ width: var(--hero-content-desktop-width);
920
+ background-color: var(--kfw-color-opaque-white-95);
921
+ left: 4rem;
922
+ top: calc(4rem + 1rem + 25px); /* outsidePaddingTop + 10px space + barsHeight */
923
+ border-radius: 0 0 var(--kfw-borderradius-large) 0;
924
+ padding: 2rem 3rem 3rem;
925
+ }
926
+ }
927
+
928
+ .hero__image {
929
+ width: 100%;
930
+ margin-inline: auto;
931
+ display: block;
932
+ object-fit: cover;
933
+ height: auto;
934
+ max-width: 128rem;
935
+ }
936
+ }
937
+
938
+ @layer variations {
939
+ .bg-dark {
940
+ --headline-color: var(--kfw-color-text-headline-on-dark-bg);
941
+ --kfw-focusring-outline-color: var(--kfw-color-background);
942
+
943
+ background-color: var(--kfw-color-background-dark-blue);
944
+ color: var(--kfw-color-text-on-dark-bg);
945
+ }
946
+
947
+ .bg-dark :where(a:not([role="button"])),
948
+ .bg-dark [role="link"] {
949
+ --link-color: var(--kfw-color-text-on-dark-bg);
950
+ --link-color-hover: var(--kfw-color-text-on-dark-bg);
951
+
952
+ text-decoration: underline;
953
+ }
954
+
955
+ .bg-dark :where(a:not([role="button"])):is([aria-current]:not([aria-current="false"]), :hover, :active, :focus),
956
+ .bg-dark [role="link"]:is([aria-current]:not([aria-current="false"]), :hover, :active, :focus) {
957
+ text-decoration: none;
958
+ }
959
+
960
+ .bg-dark .button--primary {
961
+ --button-color: var(--kfw-color-fn);
962
+ --button-bg: var(--kfw-color-text-on-dark-bg);
963
+ --button-border-color: var(--kfw-color-text-on-dark-bg);
964
+ --button-bg-hover: var(--kfw-color-text-on-dark-bg);
965
+ --button-color-hover: var(--button-color);
966
+ --button-border-color-hover: var(--kfw-color-text-on-dark-bg);
967
+ }
968
+
969
+ .bg-dark .button--secondary {
970
+ --button-color: var(--kfw-color-text-on-dark-bg);
971
+ --button-border-color: var(--kfw-color-text-on-dark-bg);
972
+ --button-bg-hover: var(--kfw-color-text-on-dark-bg);
973
+ --button-color-hover: var(--kfw-color-text);
974
+ --button-border-color-hover: var(--kfw-color-text-on-dark-bg);
975
+ }
976
+
977
+ .bg-dark .button--tertiary {
978
+ --button-color: var(--kfw-color-text-on-dark-bg);
979
+ --button-color-hover: var(--kfw-color-text-on-dark-bg);
980
+ }
981
+
982
+ .bg-subtle {
983
+ background-color: var(--kfw-color-background-subtle);
984
+ }
985
+
986
+ .hl--sb {
987
+ line-height: var(--kfw-lineheight-heading);
988
+ letter-spacing: var(--kfw-base-letterspacing-normal);
989
+ font-size: var(--kfw-fontsize-introduction);
990
+ }
991
+
992
+ @media (--kfw-breakpoint-desktop-large) {
993
+ .hl--sb {
994
+ font-size: var(--kfw-base-fontsize-static-5xl);
995
+ }
996
+ }
997
+
998
+ .smk--1 {
999
+ line-height: var(--kfw-lineheight-heading);
1000
+ letter-spacing: var(--kfw-base-letterspacing-wider);
1001
+ font-size: var(--kfw-fontsize-small);
1002
+ }
1003
+
1004
+ .tx--1 {
1005
+ line-height: var(--kfw-lineheight);
1006
+ letter-spacing: var(--kfw-base-letterspacing-normal);
1007
+ font-size: var(--kfw-fontsize);
1008
+ }
1009
+
1010
+ .tx--1-medium {
1011
+ line-height: var(--kfw-lineheight);
1012
+ letter-spacing: var(--kfw-base-letterspacing-wide);
1013
+ font-size: var(--kfw-fontsize);
1014
+ }
1015
+
1016
+ .tx--2 {
1017
+ line-height: var(--kfw-lineheight);
1018
+ letter-spacing: var(--kfw-base-letterspacing-normal);
1019
+ font-size: var(--kfw-fontsize-small);
1020
+ }
1021
+
1022
+ .tx--4 {
1023
+ line-height: var(--kfw-lineheight);
1024
+ letter-spacing: var(--kfw-base-letterspacing-normal);
1025
+ font-size: var(--kfw-fontsize-introduction);
1026
+ }
1027
+ }
1028
+ }
1029
+
1030
+ /* Utility and helper classes */
1031
+ @layer utility {
1032
+ .visually-hidden {
1033
+ clip: rect(0 0 0 0); /* stylelint-disable-line property-no-deprecated */
1034
+ clip-path: inset(50%);
1035
+ height: 1px;
1036
+ overflow: hidden;
1037
+ position: absolute;
1038
+ white-space: nowrap;
1039
+ width: 1px;
1040
+ }
1041
+
1042
+ .d-block {
1043
+ display: block;
1044
+ }
1045
+
1046
+ .m-auto {
1047
+ margin-inline: auto;
1048
+ }
1049
+
1050
+ .p-x {
1051
+ padding-inline: var(--kfw-safezone);
1052
+ }
1053
+
1054
+ .p-y {
1055
+ padding-block: var(--kfw-safezone);
1056
+ }
1057
+
1058
+ .m-x {
1059
+ margin-inline: var(--kfw-safezone);
1060
+ }
1061
+
1062
+ .m-y {
1063
+ margin-block: var(--kfw-safezone);
1064
+ }
1065
+
1066
+ .mb-xs {
1067
+ margin-block-end: var(--kfw-space-xsmall);
1068
+ }
1069
+
1070
+ .mb-sm {
1071
+ margin-block-end: var(--kfw-space-small);
1072
+ }
1073
+
1074
+ .mb-md {
1075
+ margin-block-end: var(--kfw-space-medium);
1076
+ }
1077
+
1078
+ .mb-lg {
1079
+ margin-block-end: var(--kfw-space-large);
1080
+ }
1081
+
1082
+ .mb-xl {
1083
+ margin-block-end: var(--kfw-space-big);
1084
+ }
1085
+ }