@openkfw/design-tokens 0.5.2 → 0.5.4

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