@openkfw/design-tokens 0.7.0 → 1.0.2

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.
@@ -1,2023 +0,0 @@
1
- /* -------------------------------------------------------------------------
2
- Establish the order of layers upfront
3
- ------------------------------------------------------------------------- */
4
- @layer reset, tokens, base, icons, components, utilities;
5
-
6
- /* -------------------------------------------------------------------------
7
- Custom Media Queries
8
- ------------------------------------------------------------------------- */
9
- @import url("vendor/gen-custom-media.css");
10
-
11
- /* -------------------------------------------------------------------------
12
- Reset & Normalize
13
- ------------------------------------------------------------------------- */
14
- @import url("uaplus/uaplus.css") layer(reset);
15
-
16
- /* -------------------------------------------------------------------------
17
- KfW Design Tokens
18
- ------------------------------------------------------------------------- */
19
- @import url("@openkfw/design-tokens/output/css/kfw-design-tokens.light.css") layer(tokens);
20
-
21
- /* -------------------------------------------------------------------------
22
- Icons
23
- ------------------------------------------------------------------------- */
24
- @import url("vendor/gen-icons.css") layer(icons);
25
-
26
- /* -------------------------------------------------------------------------
27
- Additional Tokens
28
- ------------------------------------------------------------------------- */
29
-
30
- /* Shorthand variables and overrides for parent elements */
31
- @layer tokens {
32
- :root,
33
- :host {
34
- --kfw-space-large: clamp(var(--kfw-space-large-min), var(--kfw-space-large-val), var(--kfw-space-large-max));
35
- --kfw-space-xlarge: clamp(var(--kfw-space-xlarge-min), var(--kfw-space-xlarge-val), var(--kfw-space-xlarge-max));
36
- --kfw-space-big: clamp(var(--kfw-space-big-min), var(--kfw-space-big-val), var(--kfw-space-big-max));
37
- --kfw-gridgap-large: clamp(var(--kfw-gridgap-large-min), var(--kfw-gridgap-large-val), var(--kfw-gridgap-large-max));
38
- --kfw-gridgap-basic: clamp(var(--kfw-gridgap-basic-min), var(--kfw-gridgap-basic-val), var(--kfw-gridgap-basic-max));
39
- --kfw-safezone: var(--kfw-safezone-mobile);
40
- --headline-color: var(--kfw-color-text);
41
- --kfw-focusring-outline-color: var(--kfw-color-fn-active);
42
- --kfw-fontsize-heading-4: clamp(var(--kfw-fontsize-heading-4-min), var(--kfw-fontsize-heading-4-val), var(--kfw-fontsize-heading-4-max));
43
- --kfw-invalid-border-width: 0.2rem;
44
- --kfw-invalid-border-offset: 1rem;
45
- }
46
-
47
- @media (--kfw-breakpoint-mobile) {
48
- :root,
49
- :host {
50
- --kfw-safezone: var(--kfw-safezone-tablet);
51
- }
52
- }
53
-
54
- @media (--kfw-breakpoint-desktop) {
55
- :root,
56
- :host {
57
- --kfw-safezone: var(--kfw-safezone-desktop);
58
- }
59
- }
60
-
61
- @media (--kfw-breakpoint-desktop-large) {
62
- :root,
63
- :host {
64
- --kfw-safezone: var(--kfw-safezone-desktop-large);
65
- }
66
- }
67
- }
68
-
69
- /* -------------------------------------------------------------------------
70
- Base Styles
71
- ------------------------------------------------------------------------- */
72
- @layer base {
73
- :root,
74
- :host {
75
- font-size: 62.5%; /* 1rem = 10px */
76
- font-family: var(--kfw-fontfamily);
77
- background-color: var(--kfw-color-background);
78
- color: var(--kfw-color-text);
79
- line-height: var(--kfw-lineheight);
80
- font-weight: var(--kfw-fontweight);
81
- font-synthesis: none;
82
- -webkit-font-smoothing: antialiased;
83
- -moz-osx-font-smoothing: grayscale;
84
- scroll-padding-block-start: 5.8rem; /* Height of sticky header */
85
- }
86
-
87
- :focus-visible {
88
- outline-offset: var(--kfw-focusring-outline-offset);
89
- outline: 0 var(--kfw-focusring-outline-style) var(--kfw-focusring-outline-color);
90
- }
91
-
92
- [data-whatinput="keyboard"]:not([data-whatintent="mouse"]) *:focus-visible {
93
- outline-width: var(--kfw-focusring-outline-width);
94
- }
95
-
96
- /* Reset default body styles */
97
- body {
98
- margin: 0;
99
- font-size: 1.6rem; /* Set 16px as default */
100
- }
101
-
102
- body.no-scroll {
103
- overflow: hidden;
104
- overscroll-behavior: contain;
105
- position: relative;
106
- padding-inline: 0;
107
- padding-block-start: 0;
108
- margin-inline: 0;
109
- margin-block-start: 0;
110
- }
111
-
112
- :where(strong, b) {
113
- font-weight: var(--kfw-fontweight-bold);
114
- }
115
-
116
- :where(small) {
117
- font-size: var(--kfw-fontsize-small); /* overwrite user-agent font-size: smaller; */
118
- }
119
-
120
- :where(sub, sup) {
121
- position: relative;
122
- line-height: 0;
123
- vertical-align: baseline;
124
- font-size: 75%;
125
- }
126
-
127
- sub {
128
- inset-block-end: -0.25em;
129
- }
130
-
131
- sup {
132
- inset-block-start: -0.5em;
133
- }
134
-
135
- :where(address, blockquote, dl, ol, p, pre, table, ul) {
136
- margin-block: 0 var(--kfw-space-small);
137
- }
138
-
139
- :where(address, blockquote, dl, ol, p, pre, table, ul):last-child {
140
- margin-block-end: 0;
141
- }
142
-
143
- mark {
144
- padding: 0.125rem 0.25rem;
145
- vertical-align: baseline;
146
- background-color: var(--kfw-color-background-medium-green);
147
- color: var(--kfw-color-text);
148
- }
149
-
150
- mark::selection {
151
- background-color: var(--kfw-color-background);
152
- color: var(--kfw-color-text);
153
- }
154
-
155
- .bg-dark mark {
156
- background-color: var(--kfw-color-background);
157
- color: var(--kfw-color-text);
158
- }
159
-
160
- .bg-dark mark::selection {
161
- background-color: var(--kfw-color-background-dark-blue);
162
- color: var(--kfw-color-text-on-dark-bg);
163
- }
164
-
165
- .bg-light mark {
166
- background-color: var(--kfw-color-background-dark-blue);
167
- color: var(--kfw-color-text-on-dark-bg);
168
- }
169
-
170
- .bg-light mark::selection {
171
- background-color: var(--kfw-color-background);
172
- color: var(--kfw-color-text);
173
- }
174
-
175
- blockquote {
176
- margin-inline: 0;
177
- }
178
-
179
- blockquote footer {
180
- margin-block-start: var(--kfw-space-tiny);
181
- }
182
-
183
- :where(cite, i, em) {
184
- font-style: normal;
185
- }
186
-
187
- :where(dialog),
188
- :where(dialog)::backdrop {
189
- opacity: 1;
190
- transition: none;
191
- }
192
-
193
- /**
194
- * Lists
195
- */
196
- ul,
197
- ol,
198
- menu {
199
- list-style: none;
200
- padding-inline-start: 0;
201
- font-weight: var(--kfw-fontweight);
202
- }
203
-
204
- ul li ul,
205
- ul li ol,
206
- ol li ul,
207
- ol li ol {
208
- margin-block-start: var(--kfw-space-xsmall);
209
- padding-inline-start: var(--kfw-space-small);
210
- }
211
-
212
- .list-item {
213
- position: relative;
214
- margin-block-end: var(--kfw-space-xsmall);
215
- }
216
-
217
- .list-item::before {
218
- position: absolute;
219
- inset-block-start: 0;
220
- inset-inline-start: 0;
221
- pointer-events: none;
222
- mask-size: contain;
223
- mask-position: center;
224
- mask-repeat: no-repeat;
225
- background-repeat: no-repeat;
226
- }
227
-
228
- :where(.list--numbers, .list--letters, .list--caps, .list--icon, .list--big-checks, .list--checks, .list--bullets) > .list-item {
229
- padding-inline-start: 2rem;
230
- }
231
-
232
- :where(.list--numbers, .list--letters, .list--caps, .list--icon, .list--big-checks, .list--checks, .list--bullets) > .list-item::before {
233
- content: "";
234
- }
235
-
236
- :where(.list--numbers, .list--letters, .list--caps, .list--icon, .list--big-checks, .list--checks, .list--bullets) > .list-item :where(ul, ol) {
237
- padding-inline-start: 0;
238
- }
239
-
240
- /* Numbered and Lettered Lists */
241
- :where(.list--letters, .list--caps) {
242
- counter-reset: item;
243
- }
244
-
245
- :where(.list--letters, .list--caps) .list-item::before {
246
- content: counter(item, lower-latin) ".";
247
- counter-increment: item;
248
- font-weight: var(--kfw-fontweight-bold);
249
- }
250
-
251
- .list--caps .list-item::before {
252
- content: counter(item, upper-latin) ".";
253
- }
254
-
255
- .list--numbers {
256
- counter-reset: item-counter;
257
- }
258
-
259
- .list--numbers > .list-item::before {
260
- content: counter(item-counter) ".";
261
- counter-increment: item-counter;
262
- font-weight: var(--kfw-fontweight-bold);
263
- }
264
-
265
- /* Check and Big Check Lists */
266
- :where(.list--checks, .list--big-checks) > .list-item {
267
- --icon: var(--kfw-icon-checked);
268
- }
269
-
270
- .list--checks > .list-item::before {
271
- min-inline-size: var(--icon-size-sm);
272
- min-block-size: var(--icon-size-sm);
273
- mask-image: var(--icon);
274
- background-color: var(--kfw-color-background-dark-green);
275
- inset-block-start: 0.3rem;
276
- }
277
-
278
- .list--big-checks > .list-item {
279
- --size: var(--icon-size-lg);
280
- --space: 1.5rem;
281
-
282
- padding-inline-start: calc(var(--size) + var(--space));
283
- }
284
-
285
- .list--big-checks > .list-item::before {
286
- min-inline-size: var(--size);
287
- min-block-size: var(--size);
288
- inset-block-start: -0.1rem;
289
- mask-image: var(--icon);
290
- background-color: var(--kfw-color-background-dark-green);
291
- }
292
-
293
- @media (--kfw-breakpoint-desktop-large) {
294
- .list--big-checks > .list-item {
295
- --size: var(--icon-size-xl);
296
- --space: 1rem;
297
- }
298
-
299
- .list--big-checks > .list-item::before {
300
- inset-block-start: -0.3rem;
301
- }
302
- }
303
-
304
- /* Icon Lists */
305
- .list--icon > .list-item {
306
- --size: var(--icon-size-md);
307
- --space: 1.5rem;
308
- --icon: var(--kfw-icon-checked);
309
-
310
- margin-block-end: var(--kfw-space-small);
311
- font-weight: var(--kfw-fontweight-bold);
312
- padding-inline-start: calc(var(--size) + var(--space));
313
- }
314
-
315
- .list--icon > .list-item::before {
316
- --icon-color: var(--kfw-color-background-dark-green);
317
-
318
- min-inline-size: var(--size);
319
- min-block-size: var(--size);
320
- mask-image: var(--icon);
321
- background-color: var(--icon-color);
322
- inset-block-start: -0.1rem;
323
- }
324
-
325
- /* Bullet Lists */
326
- .list--bullets > .list-item {
327
- --icon-size-md: 0.7rem;
328
-
329
- padding-inline-start: calc(var(--icon-size-md) + 1rem);
330
- }
331
-
332
- .list--bullets > .list-item::before {
333
- min-inline-size: var(--icon-size-md);
334
- min-block-size: var(--icon-size-md);
335
- inset-block-start: 0.8rem;
336
- mask-image: var(--kfw-icon-bullet-point);
337
- background-color: currentcolor;
338
- }
339
-
340
- .list--bullets-empty > .list-item::before {
341
- mask-image: var(--kfw-icon-bullet-point-empty);
342
- background-color: currentcolor;
343
- }
344
-
345
- /**
346
- * Table
347
- */
348
-
349
- table {
350
- inline-size: 100%;
351
- border-collapse: collapse;
352
- border-spacing: 0;
353
- border-inline-start: 0;
354
- border-inline-end: 0;
355
- text-indent: 0;
356
- overflow: visible;
357
- border-block-start: var(--kfw-borderwidth) solid var(--kfw-color-line-10);
358
- border-block-end: var(--kfw-borderwidth-large) solid var(--kfw-color-line-7);
359
- }
360
-
361
- tr {
362
- background-color: var(--kfw-color-background);
363
- }
364
-
365
- thead tr {
366
- border-block-end: var(--kfw-borderwidth) solid var(--kfw-color-line-8);
367
- }
368
-
369
- tr:not(:last-of-type) {
370
- border-block-end: var(--kfw-borderwidth) solid var(--kfw-color-line-8);
371
- }
372
-
373
- tr.highlighted-col,
374
- tr.highlighted,
375
- td.highlighted-col,
376
- td.highlighted,
377
- th.highlighted-col,
378
- th.highlighted {
379
- background-color: var(--kfw-color-background-light-green);
380
- }
381
-
382
- th {
383
- text-align: start;
384
- font-weight: var(--kfw-fontweight-bold);
385
- }
386
-
387
- :where(th, td) {
388
- border: 0;
389
- vertical-align: top;
390
- letter-spacing: 0;
391
- word-spacing: inherit;
392
- font-size: var(--kfw-fontsize);
393
- line-height: var(--kfw-lineheight);
394
- font-weight: var(--kfw-fontweight);
395
- color: var(--kfw-color-text);
396
- padding: 1.2rem 1rem;
397
- }
398
-
399
- table.striped tbody tr:nth-child(odd):not(.highlighted) {
400
- background-color: var(--kfw-color-background-light-blue);
401
- }
402
-
403
- /**
404
- * Embedded content
405
- */
406
- :where(audio, canvas, iframe, img, svg, video) {
407
- vertical-align: middle;
408
- }
409
-
410
- audio,
411
- video {
412
- display: inline-block;
413
- }
414
-
415
- :where(iframe) {
416
- border-style: none;
417
- }
418
-
419
- img,
420
- video {
421
- max-inline-size: 100%;
422
- block-size: auto;
423
- border-style: none;
424
- }
425
-
426
- code,
427
- kbd,
428
- samp,
429
- pre {
430
- font-family: var(--kfw-fontfamily-code);
431
- line-height: initial;
432
- }
433
-
434
- pre {
435
- display: block;
436
- margin-block: 0 var(--kfw-space-small);
437
- overflow: auto;
438
- -ms-overflow-style: scrollbar;
439
- }
440
-
441
- abbr[title] {
442
- text-decoration: underline dotted;
443
- cursor: help;
444
- }
445
-
446
- ins {
447
- color: var(--kfw-color-state-success);
448
- text-decoration: none;
449
- }
450
-
451
- del {
452
- color: var(--kfw-color-state-danger);
453
- }
454
-
455
- :where(h1, h2, h3, h4, h5, h6, .hl--1, .hl--2, .hl--3, .hl--4, .hl--5, .hl--6) {
456
- font-weight: var(--kfw-fontweight-bold);
457
- line-height: var(--kfw-lineheight-heading);
458
- margin-block-start: 0;
459
- color: var(--headline-color);
460
- display: block;
461
- }
462
-
463
- :where(h1, .hl--1) {
464
- font-size: clamp(var(--kfw-fontsize-heading-1-min), var(--kfw-fontsize-heading-1-val), var(--kfw-fontsize-heading-1-max));
465
- margin-block-end: var(--kfw-space-small);
466
- }
467
-
468
- @media (--kfw-breakpoint-desktop-large) {
469
- :where(h1, .hl--1) {
470
- letter-spacing: var(--kfw-base-letterspacing-tight);
471
- }
472
- }
473
-
474
- :where(h2, .hl--2) {
475
- font-size: clamp(var(--kfw-fontsize-heading-2-min), var(--kfw-fontsize-heading-2-val), var(--kfw-fontsize-heading-2-max));
476
- margin-block-end: var(--kfw-space-small);
477
- letter-spacing: var(--kfw-base-letterspacing-tight);
478
- }
479
-
480
- :where(h3, .hl--3) {
481
- font-size: clamp(var(--kfw-fontsize-heading-3-min), var(--kfw-fontsize-heading-3-val), var(--kfw-fontsize-heading-3-max));
482
- margin-block-end: var(--kfw-space-xsmall);
483
- letter-spacing: var(--kfw-base-letterspacing-tight);
484
- }
485
-
486
- @media (--kfw-breakpoint-desktop-large) {
487
- :where(h3, .hl--3) {
488
- letter-spacing: var(--kfw-base-letterspacing-normal);
489
- }
490
- }
491
-
492
- :where(h4, .hl--4) {
493
- font-size: var(--kfw-fontsize-heading-4);
494
- margin-block-end: var(--kfw-space-xsmall);
495
- }
496
-
497
- :where(h5, .hl--5) {
498
- font-size: var(--kfw-fontsize-heading-5);
499
- margin-block-end: var(--kfw-space-xsmall);
500
- line-height: var(--kfw-lineheight-heading-5);
501
- letter-spacing: var(--kfw-base-letterspacing-normal);
502
- }
503
-
504
- @media (--kfw-breakpoint-desktop-large) {
505
- :where(h5, .hl--5) {
506
- letter-spacing: var(--kfw-base-letterspacing-wide);
507
- }
508
- }
509
-
510
- :where(h6, .hl--6) {
511
- font-size: var(--kfw-fontsize-heading-6);
512
- margin-block-end: var(--kfw-space-xsmall);
513
- letter-spacing: var(--kfw-base-letterspacing-wide);
514
- line-height: var(--kfw-lineheight);
515
- }
516
-
517
- /**
518
- * Form
519
- */
520
- :where(.form-control, .form-select) {
521
- --borderhover: var(--kfw-color-fn-active);
522
- --placeholder-color: var(--kfw-color-fn);
523
-
524
- appearance: none;
525
- inline-size: 100%;
526
- block-size: 4.3rem;
527
- font-size: var(--kfw-fontsize);
528
- font-family: inherit;
529
- line-height: var(--kfw-lineheight);
530
- color: var(--kfw-color-fn);
531
- border-radius: var(--kfw-borderradius);
532
- margin-block-start: 0;
533
- border: var(--kfw-borderwidth) var(--kfw-borderstyle) var(--kfw-color-fn-border);
534
- padding-inline: 1.5rem;
535
- padding-block: 1rem;
536
- background-color: var(--kfw-color-background);
537
- background-repeat: no-repeat;
538
- }
539
-
540
- :where(.form-control::placeholder, .form-select::placeholder) {
541
- color: var(--placeholder-color);
542
- }
543
-
544
- :where(.form-control:disabled, .form-select:disabled) {
545
- --placeholder-color: var(--kfw-color-text);
546
-
547
- background-color: transparent;
548
- color: var(--kfw-color-text);
549
- border-color: var(--kfw-color-fn-inactive);
550
- }
551
-
552
- :where(.form-control, .form-select):hover:not(:disabled) {
553
- box-shadow: 0 0 0 var(--kfw-borderwidth) var(--borderhover);
554
- }
555
-
556
- :where([type="checkbox"], [type="radio"], .form-select):not(:disabled) {
557
- cursor: pointer;
558
- }
559
-
560
- :where(.form-control, .form-select)[aria-invalid="true"] {
561
- --borderhover: var(--kfw-color-state-danger);
562
- --placeholder-color: var(--kfw-color-state-danger);
563
-
564
- border-color: var(--kfw-color-state-danger);
565
- color: var(--kfw-color-state-danger);
566
- box-shadow: 0 0 0 var(--kfw-borderwidth) var(--borderhover);
567
- }
568
-
569
- textarea.form-control {
570
- block-size: auto;
571
- }
572
-
573
- /**
574
- * Select
575
- */
576
- .form-select {
577
- --form-control-space: 1.5rem;
578
-
579
- padding-block: 0;
580
- padding-inline: var(--form-control-space) calc(var(--icon-size-md) + var(--form-control-space) * 2);
581
- background-position: center right var(--form-control-space);
582
- background-size: var(--icon-size-md) auto;
583
- background-image: var(--kfw-icon-select);
584
- }
585
-
586
- .form-select:disabled {
587
- background-image: var(--kfw-icon-select-disabled);
588
- }
589
-
590
- :where(progress, [type="checkbox"], [type="radio"], [type="range"]) {
591
- accent-color: var(--kfw-color-fn);
592
- }
593
-
594
- textarea {
595
- display: block;
596
- resize: block;
597
- }
598
-
599
- fieldset {
600
- margin: 0;
601
- padding: 0;
602
- border: 0;
603
- }
604
-
605
- :where(.form-text, .invalid-feedback) {
606
- --space: 0.5rem;
607
-
608
- white-space: pre-line;
609
- column-gap: var(--space);
610
- inline-size: 100%;
611
- margin-block-start: var(--space);
612
- font-size: var(--kfw-fontsize-small);
613
- line-height: var(--kfw-lineheight);
614
- letter-spacing: var(--kfw-base-letterspacing-normal);
615
- display: inline-grid;
616
- grid-template-columns: auto 1fr;
617
- }
618
-
619
- :where(.form-text--single, .invalid-feedback--single) {
620
- margin-block-start: 0;
621
- }
622
-
623
- :where(.form-text--group, .invalid-feedback--group) {
624
- margin-block-start: calc(var(--kfw-invalid-border-width) + var(--kfw-invalid-border-offset) + 0.5rem);
625
- }
626
-
627
- .invalid-feedback {
628
- color: var(--kfw-color-state-danger);
629
- }
630
-
631
- .invalid-feedback::before {
632
- content: "";
633
- display: block;
634
- inline-size: var(--icon-size-xs);
635
- color: inherit;
636
- background-color: currentcolor;
637
- mask: var(--kfw-icon-alert) center / contain no-repeat;
638
- block-size: 1.9rem;
639
- }
640
-
641
- .invalid-border {
642
- outline: var(--kfw-invalid-border-width) solid var(--kfw-color-state-danger);
643
- outline-offset: var(--kfw-invalid-border-offset);
644
- }
645
-
646
- :where(label, .form-label) {
647
- display: inline-block;
648
- margin-block-end: 0.8rem;
649
- font-weight: var(--kfw-fontweight-bold);
650
- color: var(--kfw-color-text);
651
- }
652
-
653
- .form-group {
654
- margin-block-end: var(--kfw-space-medium);
655
- }
656
-
657
- .list-group-form {
658
- --col-gap: 1.5rem;
659
- --field-size: 2.8rem;
660
-
661
- align-items: start;
662
- display: flex;
663
- flex-direction: column;
664
- gap: var(--kfw-space-small) var(--kfw-space-medium);
665
- }
666
-
667
- .list-group-form > li {
668
- align-items: start;
669
- display: flex;
670
- margin-block-end: 0;
671
- }
672
-
673
- .list-group-form label {
674
- font-weight: var(--kfw-fontweight);
675
- padding-inline-start: var(--col-gap);
676
- inline-size: 100%;
677
- margin-block-end: 0;
678
- display: flex;
679
- flex: 1 1;
680
- flex-direction: column;
681
- padding-block-start: 0.4rem;
682
- }
683
-
684
- .list-group-form :where([type="checkbox"], [type="radio"]) {
685
- appearance: none;
686
- inline-size: var(--field-size);
687
- block-size: var(--field-size);
688
- margin: 0;
689
- border: var(--kfw-borderwidth) solid var(--kfw-color-text);
690
- color: var(--kfw-color-fn-active);
691
- vertical-align: middle;
692
- position: relative;
693
- display: flex;
694
- align-items: baseline;
695
- flex-shrink: 0;
696
- justify-content: center;
697
- background-color: var(--kfw-color-background);
698
- }
699
-
700
- [aria-invalid="true"] .list-group-form :where([type="checkbox"], [type="radio"]),
701
- .list-group-form :where([type="checkbox"], [type="radio"])[aria-invalid="true"] {
702
- border-color: var(--kfw-color-state-danger);
703
- border-width: var(--kfw-borderwidth-large);
704
- color: var(--kfw-color-fn-active);
705
- outline-color: var(--kfw-color-state-danger);
706
- }
707
-
708
- .list-group-form [type="radio"] {
709
- border-radius: var(--kfw-borderradius-circle);
710
- }
711
-
712
- .list-group-form [type="checkbox"] {
713
- border-radius: var(--kfw-borderradius);
714
- }
715
-
716
- .list-group-form :where([type="checkbox"], [type="radio"]):disabled {
717
- background-color: var(--kfw-base-color-gray-100);
718
- color: var(--kfw-color-fn-inactive);
719
- border-color: var(--kfw-color-fn-inactive);
720
- }
721
-
722
- .list-group-form :where([type="checkbox"], [type="radio"])::before {
723
- content: none;
724
- display: block;
725
- position: absolute;
726
- inset-block-start: 50%;
727
- inset-inline-start: 50%;
728
- border-color: currentcolor;
729
- border-block-end-style: solid;
730
- border-inline-start-style: solid;
731
- }
732
-
733
- .list-group-form [type="checkbox"]::before {
734
- inline-size: 1.6rem;
735
- block-size: 0.9rem;
736
- transform: translate(-50%, -50%) rotate(314deg);
737
- margin-block-start: -1px;
738
- border-block-end-width: 0.225rem;
739
- border-inline-start-width: 0.225rem;
740
- }
741
-
742
- .list-group-form [type="radio"]::before {
743
- inline-size: 1.4rem;
744
- block-size: 1.4rem;
745
- transform: translate(-50%, -50%);
746
- border-radius: var(--kfw-borderradius-circle);
747
- background-color: currentcolor;
748
- forced-color-adjust: none;
749
- }
750
-
751
- .list-group-form :where([type="checkbox"], [type="radio"]):checked::before {
752
- content: "";
753
- }
754
-
755
- .list-group-form :where([type="radio"], [type="checkbox"]):hover:not(:disabled) {
756
- border-width: var(--kfw-borderwidth-large);
757
- }
758
-
759
- .list-group-form :where([type="radio"], [type="checkbox"]):focus-visible:not(:disabled) {
760
- outline-width: var(--kfw-focusring-outline-width);
761
- }
762
-
763
- .list-group-form--with-description label {
764
- font-weight: var(--kfw-fontweight-bold);
765
- }
766
-
767
- .list-group-form--with-description label > span {
768
- font-weight: var(--kfw-fontweight);
769
- }
770
-
771
- .list-group-form > li:has(input:not(:disabled)) label {
772
- cursor: pointer;
773
- }
774
-
775
- .list-group-form > li:has(.list-group-form--subgroup) {
776
- flex-wrap: wrap;
777
- }
778
-
779
- .list-group-form--subgroup {
780
- flex-basis: 100%;
781
- margin-block-start: var(--kfw-space-small);
782
- padding-inline-start: calc(var(--field-size) + var(--col-gap));
783
- }
784
-
785
- @media (--kfw-breakpoint-mobile) {
786
- .list-group-form--inline {
787
- flex-flow: row wrap;
788
- }
789
- }
790
-
791
- /* Focus styling for invalid states, keyboard users */
792
- [data-whatinput="keyboard"] :where(.form-control, .form-select)[aria-invalid="true"]:focus-visible {
793
- outline-color: var(--kfw-color-state-danger);
794
- }
795
-
796
- :where([type="date"], [type="time"])::-webkit-calendar-picker-indicator {
797
- background: transparent; /* rest native icon */
798
- inline-size: 1.8rem;
799
- block-size: 1.8rem;
800
- }
801
-
802
- [type="date"]::-webkit-calendar-picker-indicator {
803
- background-image: var(--kfw-icon-input-datepicker);
804
- background-size: var(--icon-size-md);
805
- background-repeat: no-repeat;
806
- background-position: center center;
807
- }
808
-
809
- [type="time"]::-webkit-calendar-picker-indicator {
810
- background-image: var(--kfw-icon-input-timepicker);
811
- background-size: var(--icon-size-md);
812
- background-repeat: no-repeat;
813
- background-position: center center;
814
- }
815
-
816
- .button-group {
817
- display: flex;
818
- flex-wrap: wrap;
819
- align-items: center;
820
- gap: var(--kfw-space-small);
821
- }
822
-
823
- :where(a:not([role="button"]), [role="link"]) {
824
- --link-color: var(--kfw-color-fn);
825
- --link-color-hover: var(--kfw-color-fn-active);
826
- --link-background: transparent;
827
- --link-border: transparent;
828
-
829
- color: var(--link-color);
830
- text-decoration: none;
831
- border-radius: var(--kfw-borderradius);
832
- display: inline-flex;
833
- vertical-align: top;
834
- padding-inline: var(--kfw-borderwidth-large);
835
- border-style: var(--kfw-borderstyle);
836
- border-width: 0;
837
- border-color: var(--link-border);
838
- cursor: pointer;
839
- background-color: var(--link-background);
840
- outline: 0 var(--kfw-focusring-outline-style) var(--kfw-focusring-outline-color);
841
- }
842
-
843
- :where(a:not([role="button"]), [role="link"]):where(:hover, :focus-visible, :active) {
844
- color: var(--link-color-hover);
845
- text-decoration: underline;
846
- }
847
-
848
- :where(a:not([role="button"]), [role="link"]):focus-visible {
849
- outline-width: var(--kfw-focusring-outline-width);
850
- }
851
-
852
- :where(a:not([role="button"]), [role="link"]).has-icon-only:where(:hover, :active) {
853
- outline: var(--kfw-borderwidth-large) var(--kfw-borderstyle) var(--link-color-hover);
854
- }
855
-
856
- :where(a:not([role="button"]), [role="link"]):active {
857
- outline: var(--kfw-borderwidth) var(--kfw-borderstyle) var(--link-color-hover);
858
- }
859
-
860
- :where(a:not([role="button"]), [role="link"]).has-icon-only:where(:focus-visible) {
861
- outline-offset: 0;
862
- }
863
-
864
- :where(a:not([role="button"]), [role="link"]):has(.icon) {
865
- --space: 0.5rem;
866
-
867
- column-gap: var(--space);
868
- }
869
-
870
- p :where(a:not([role="button"]), [role="link"]) {
871
- text-decoration: underline;
872
- }
873
-
874
- p :where(a:not([role="button"]), [role="link"]):where(:hover, :focus-visible, :active) {
875
- text-decoration: none;
876
- }
877
-
878
- :where(button:not([role="link"]), [role="button"]) {
879
- --space: 0.8rem;
880
-
881
- font-family: var(--kfw-fontfamily);
882
- font-weight: var(--kfw-fontweight);
883
- border-radius: var(--kfw-borderradius);
884
- display: inline-flex;
885
- column-gap: var(--space);
886
- text-align: center;
887
- text-decoration: none;
888
- line-height: var(--kfw-lineheight);
889
- padding-block: 1.2rem;
890
- padding-inline: 2.5rem;
891
- justify-content: center;
892
- max-inline-size: 100%;
893
- vertical-align: middle;
894
- cursor: pointer;
895
- border-width: var(--kfw-borderwidth);
896
- border-style: solid;
897
- border-color: transparent;
898
- color: var(--kfw-color-fn);
899
- background-color: transparent;
900
- }
901
-
902
- .button-primary {
903
- --button-border-color: var(--kfw-color-fn);
904
- --button-bg: var(--kfw-color-fn);
905
- --button-color: var(--kfw-color-text-on-dark-bg);
906
- --button-border-color-hover: var(--kfw-color-fn-active);
907
- --button-bg-hover: var(--kfw-color-fn-active);
908
- --button-color-hover: var(--button-color);
909
-
910
- background-color: var(--button-bg);
911
- color: var(--button-color);
912
- border-color: var(--button-border-color);
913
- }
914
-
915
- .button-primary:where(:hover, :focus-visible, :active) {
916
- text-decoration: underline;
917
- }
918
-
919
- .button-primary:where(:hover, :focus-visible) {
920
- color: var(--button-color-hover);
921
- background-color: var(--button-bg-hover);
922
- border-color: var(--button-border-color-hover);
923
- }
924
-
925
- .button-primary:focus-visible {
926
- outline-width: var(--kfw-focusring-outline-width);
927
- }
928
-
929
- .button-primary:active {
930
- background-color: var(--button-color);
931
- color: var(--button-bg-hover);
932
- border-color: var(--button-bg-hover);
933
- }
934
-
935
- .button-secondary {
936
- --button-border-color: var(--kfw-color-fn);
937
- --button-bg: transparent;
938
- --button-color: var(--kfw-color-fn);
939
- --button-border-color-hover: var(--kfw-color-fn-active);
940
- --button-bg-hover: var(--kfw-color-fn-active);
941
- --button-color-hover: var(--kfw-color-text-on-dark-bg);
942
-
943
- background-color: var(--button-bg);
944
- color: var(--button-color);
945
- border-color: var(--button-border-color);
946
- }
947
-
948
- .button-secondary:where(:hover, :focus-visible, :active) {
949
- text-decoration: underline;
950
- }
951
-
952
- .button-secondary:where(:hover, :focus-visible) {
953
- color: var(--button-color-hover);
954
- background-color: var(--button-bg-hover);
955
- border-color: var(--button-border-color-hover);
956
- }
957
-
958
- .button-secondary:focus-visible {
959
- outline-width: var(--kfw-focusring-outline-width);
960
- }
961
-
962
- .button-secondary:active {
963
- color: var(--button-bg-hover);
964
- background-color: var(--button-color-hover);
965
- border-color: var(--button-bg-hover);
966
- }
967
-
968
- :where(.button-primary, .button-secondary).has-icon-only:where(:hover),
969
- :where(.button-secondary).has-icon-only:where(:focus-visible) {
970
- color: var(--kfw-color-fn-active);
971
- background-color: var(--kfw-color-background);
972
- border: var(--kfw-borderwidth-large) var(--kfw-borderstyle) var(--kfw-color-fn-active);
973
- border-radius: var(--kfw-borderradius);
974
- }
975
-
976
- .button-primary.has-icon-only:where(:focus-visible) {
977
- color: var(--kfw-color-fn-active);
978
- background-color: var(--kfw-color-background);
979
- border-width: 0;
980
- border-radius: var(--kfw-borderradius);
981
- }
982
-
983
- .button-primary.has-icon-only:where(:active) {
984
- border-width: var(--kfw-borderwidth);
985
- }
986
-
987
- .button-secondary.has-icon-only:where(:active) {
988
- color: var(--kfw-color-text-on-dark-bg);
989
- background-color: var(--kfw-color-fn-active);
990
- }
991
-
992
- .button--icon-position-left {
993
- padding-inline-start: 2rem;
994
- }
995
-
996
- .button--icon-position-right {
997
- padding-inline-end: 2rem;
998
- }
999
-
1000
- .button--small {
1001
- --space: 0.6rem;
1002
-
1003
- padding-block: 0.8rem;
1004
- padding-inline: 1.6rem;
1005
- font-size: var(--kfw-fontsize-small);
1006
- }
1007
-
1008
- .button--small.button--icon-position-left {
1009
- padding-inline-start: 1.2rem;
1010
- }
1011
-
1012
- .button--small.button--icon-position-right {
1013
- padding-inline-end: 1.2rem;
1014
- }
1015
-
1016
- input:not([type="submit"], [type="button"], [type="reset"])[disabled],
1017
- select[disabled],
1018
- textarea[disabled],
1019
- label[aria-disabled="true"],
1020
- :where(fieldset[disabled]) :where(input:not([type="submit"], [type="button"], [type="reset"]), select, textarea) {
1021
- pointer-events: none;
1022
- }
1023
-
1024
- /**
1025
- * Searchfield
1026
- */
1027
- .searchfield {
1028
- position: relative;
1029
- display: flex;
1030
- }
1031
-
1032
- .searchfield__input {
1033
- inline-size: 100%;
1034
- padding-inline-end: 3rem;
1035
- }
1036
-
1037
- .searchfield__input::-webkit-search-cancel-button {
1038
- appearance: none;
1039
- }
1040
-
1041
- .searchfield__button {
1042
- position: absolute;
1043
- inset-inline-end: 1.5rem;
1044
- inset-block-start: 50%;
1045
- transform: translateY(-50%);
1046
- }
1047
-
1048
- /**
1049
- * File-Upload
1050
- */
1051
- .file-upload {
1052
- display: grid;
1053
- row-gap: var(--kfw-space-medium);
1054
- }
1055
-
1056
- .file-upload__inner {
1057
- display: flex;
1058
- flex-direction: column;
1059
- align-items: center;
1060
- padding: var(--kfw-space-small) var(--kfw-space-small) var(--kfw-space-medium);
1061
- background-color: var(--kfw-color-background-light-green);
1062
- }
1063
-
1064
- .file-upload__title {
1065
- margin-block-end: var(--kfw-space-medium);
1066
- font-weight: var(--kfw-fontweight);
1067
- text-align: center;
1068
- }
1069
-
1070
- .file-upload__input {
1071
- display: none;
1072
- }
1073
-
1074
- .file-upload__icon {
1075
- color: var(--kfw-color-fn);
1076
- margin-block-end: 2rem;
1077
- }
1078
-
1079
- /**
1080
- * Container
1081
- */
1082
- :where(.container, .container-extended, .container-narrow, .container-fluid) {
1083
- margin-inline: auto;
1084
- inline-size: 100%;
1085
- padding-inline: var(--kfw-safezone);
1086
- }
1087
-
1088
- .container {
1089
- max-inline-size: var(--kfw-contentwrapper-basic);
1090
- }
1091
-
1092
- .container-extended {
1093
- max-inline-size: var(--kfw-contentwrapper-extended);
1094
- }
1095
-
1096
- .container-narrow {
1097
- max-inline-size: var(--kfw-contentwrapper-narrow);
1098
- }
1099
-
1100
- /**
1101
- * Overflow auto (e.g. for code blocks, tables)
1102
- */
1103
- .overflow-auto {
1104
- overflow: auto;
1105
- }
1106
- }
1107
-
1108
- /* -------------------------------------------------------------------------
1109
- Base64 Icons, Standard Sizes & Helper Classes
1110
- ------------------------------------------------------------------------- */
1111
-
1112
- /*
1113
- This layer provides:
1114
- 1. Base64-encoded icons used as a fallback for elements that don’t support
1115
- pseudo-elements, so mask-image cannot be applied (e.g., <input>, <select>)
1116
- 2. Standard icon size variables for consistent sizing.
1117
- 3. Helper classes for common icon patterns, e.g., sizing
1118
- (.icon--md) and icon-only containers (.has-icon-only).
1119
- */
1120
- @layer icons {
1121
- :root,
1122
- :host {
1123
- /* base64 icons */
1124
- --kfw-icon-select-disabled: svg-load("icons/arrow-down.svg", "var(--kfw-color-text)");
1125
- --kfw-icon-select: svg-load("icons/arrow-down.svg", "var(--kfw-color-fn)");
1126
- --kfw-icon-input-datepicker: svg-load("icons/calendar.svg", "var(--kfw-color-fn)");
1127
- --kfw-icon-input-timepicker: svg-load("icons/time.svg", "var(--kfw-color-fn)");
1128
- --kfw-icon-input-upload: svg-load("icons/upload.svg", "var(--kfw-color-fn)");
1129
- --kfw-icon-input-upload-white: svg-load("icons/upload.svg", "var(--kfw-color-background)");
1130
-
1131
- /* icon sizes */
1132
- --icon-size-xs: 1.4rem;
1133
- --icon-size-sm: 1.6rem;
1134
- --icon-size-md: 2.4rem;
1135
- --icon-size-lg: 2.8rem;
1136
- --icon-size-xl: 3.2rem;
1137
- --icon-size-2xl: 3.6rem;
1138
- --icon-size-3xl: 4rem;
1139
- --icon-size-4xl: 4.8rem;
1140
- --icon-size: var(--icon-size-md);
1141
- --icon-only-md: 3.6rem;
1142
- --icon-only-lg: 4rem;
1143
- --icon-only-xl: 5.4rem;
1144
- --icon-only-2xl: 5.8rem;
1145
- }
1146
-
1147
- .icon {
1148
- --size: var(--icon-size);
1149
-
1150
- display: inline-block;
1151
- flex-shrink: 0;
1152
- vertical-align: top;
1153
- pointer-events: none;
1154
- background-color: currentcolor;
1155
- min-inline-size: var(--size);
1156
- min-block-size: var(--size);
1157
- mask: var(--icon) center / contain no-repeat;
1158
- }
1159
-
1160
- :where(a:not([role="button"]), [role="link"]),
1161
- :where(button:not([role="link"]), [role="button"]) {
1162
- --icon-size: var(--icon-size-sm);
1163
- }
1164
-
1165
- .icon--sm {
1166
- --size: var(--icon-size-sm);
1167
- }
1168
-
1169
- .icon--md {
1170
- --size: var(--icon-size-md);
1171
- }
1172
-
1173
- .icon--lg {
1174
- --size: var(--icon-size-lg);
1175
- }
1176
-
1177
- .icon--xl {
1178
- --size: var(--icon-size-xl);
1179
- }
1180
-
1181
- .icon--2xl {
1182
- --size: var(--icon-size-2xl);
1183
- }
1184
-
1185
- .icon--3xl {
1186
- --size: var(--icon-size-3xl);
1187
- }
1188
-
1189
- .has-icon-only {
1190
- --outer-size: var(--icon-only-md);
1191
- --icon-size: var(--icon-size-md);
1192
-
1193
- display: inline-flex;
1194
- padding: 0;
1195
- align-items: center;
1196
- justify-content: center;
1197
- inline-size: var(--outer-size);
1198
- block-size: var(--outer-size);
1199
- }
1200
-
1201
- .has-icon-only:focus-visible {
1202
- outline-offset: 0;
1203
- border-color: transparent;
1204
- }
1205
-
1206
- /* Necessary to style the outline around the icon, as it is not possible to apply it directly to masked elements */
1207
- .has-icon-only__inner {
1208
- border-radius: var(--kfw-borderradius);
1209
- outline: 0 var(--kfw-borderstyle) var(--kfw-color-background);
1210
- }
1211
-
1212
- .has-icon-only--close {
1213
- --outer-size: var(--icon-only-lg);
1214
-
1215
- border-radius: 0;
1216
- }
1217
-
1218
- @media (--kfw-breakpoint-tablet) {
1219
- .has-icon-only--close {
1220
- --outer-size: var(--icon-only-xl);
1221
- }
1222
- }
1223
-
1224
- .has-icon-only--close:where(:hover, :focus-visible) {
1225
- color: var(--kfw-color-text-on-dark-bg);
1226
- background-color: var(--kfw-color-fn);
1227
- border-color: transparent;
1228
- }
1229
-
1230
- .has-icon-only--close:focus-visible {
1231
- outline: none;
1232
- }
1233
-
1234
- .has-icon-only--close:hover .has-icon-only__inner {
1235
- outline-width: var(--kfw-focusring-outline-width);
1236
- }
1237
-
1238
- .has-icon-only--close:focus-visible .has-icon-only__inner {
1239
- outline-style: var(--kfw-focusring-outline-style);
1240
- outline-offset: var(--kfw-focusring-outline-offset);
1241
- outline-width: var(--kfw-focusring-outline-width);
1242
- }
1243
-
1244
- .has-icon-only--close:active .has-icon-only__inner {
1245
- outline-width: var(--kfw-borderwidth);
1246
- outline-style: var(--kfw-borderstyle);
1247
- }
1248
- }
1249
-
1250
- /* -------------------------------------------------------------------------
1251
- Components
1252
- ------------------------------------------------------------------------- */
1253
- @layer components {
1254
- .header {
1255
- position: sticky;
1256
- inset-block-start: 0;
1257
- z-index: 20;
1258
- background-color: var(--kfw-color-background);
1259
- }
1260
-
1261
- .header::after {
1262
- content: "";
1263
- position: absolute;
1264
- inset-inline: 0;
1265
- inset-block-end: 0;
1266
- border-block-end: var(--kfw-borderwidth) solid var(--kfw-color-line-11);
1267
- pointer-events: none;
1268
- }
1269
-
1270
- @media (--kfw-breakpoint-desktop) {
1271
- .header :where(a, button) {
1272
- font-size: var(--kfw-fontsize-large);
1273
- }
1274
- }
1275
-
1276
- .header__inner {
1277
- display: grid;
1278
- grid-template-columns: 1fr auto 1fr;
1279
- align-items: center;
1280
- min-block-size: 5.8rem;
1281
- gap: var(--kfw-space-medium);
1282
- }
1283
-
1284
- .header__hamburger {
1285
- --outer-size: 3.6rem;
1286
-
1287
- inline-size: var(--outer-size);
1288
- block-size: var(--outer-size);
1289
- display: grid;
1290
- place-items: center;
1291
- padding: 0;
1292
- justify-content: center;
1293
- align-items: center;
1294
- }
1295
-
1296
- @media (--kfw-breakpoint-tablet) {
1297
- .header__hamburger {
1298
- --outer-size: 4.8rem;
1299
- }
1300
- }
1301
-
1302
- .header__hamburger:where(:active) {
1303
- border-width: var(--kfw-borderwidth);
1304
- border-color: var(--kfw-color-fn-active);
1305
- }
1306
-
1307
- .header__hamburger:where(:hover):not(:active) {
1308
- color: var(--kfw-color-text-on-dark-bg);
1309
- background-color: var(--kfw-color-fn-active);
1310
- border-width: 0;
1311
- }
1312
-
1313
- .header__hamburger .icon {
1314
- --size: var(--icon-size-2xl);
1315
- }
1316
-
1317
- @media (--kfw-breakpoint-tablet) {
1318
- .header__hamburger .icon {
1319
- --size: var(--icon-size-4xl);
1320
- }
1321
- }
1322
-
1323
- .header__secondary-nav {
1324
- text-align: end;
1325
- }
1326
-
1327
- .header__secondary-nav .icon {
1328
- margin-block-start: 0;
1329
- }
1330
-
1331
- @media (--kfw-breakpoint-tablet) {
1332
- .header__secondary-nav .icon {
1333
- margin-inline-end: 0.8rem;
1334
- }
1335
- }
1336
-
1337
- .header__login-text {
1338
- display: none;
1339
- }
1340
-
1341
- @media (--kfw-breakpoint-tablet) {
1342
- .header__login-text {
1343
- display: inline-flex;
1344
- }
1345
- }
1346
-
1347
- .header__logo {
1348
- display: block;
1349
- margin: 0 auto;
1350
- padding: 0;
1351
- }
1352
-
1353
- @media (--kfw-breakpoint-tablet) {
1354
- .header__logo {
1355
- margin-block: 3rem;
1356
- }
1357
-
1358
- .header--sticky .header__logo {
1359
- margin-block: 0;
1360
- }
1361
- }
1362
-
1363
- :where(.header__logo-small, .header__logo-large img) {
1364
- inline-size: auto;
1365
- }
1366
-
1367
- .header__logo-small {
1368
- block-size: 2.8rem;
1369
- }
1370
-
1371
- .header__logo-large {
1372
- display: none;
1373
- block-size: 6rem;
1374
- }
1375
-
1376
- @media (--kfw-breakpoint-tablet) {
1377
- .header__logo-small {
1378
- display: none;
1379
- }
1380
-
1381
- .header__logo-large {
1382
- display: block;
1383
- }
1384
- }
1385
-
1386
- .header--sticky .header__logo-small {
1387
- display: block;
1388
- }
1389
-
1390
- .header--sticky .header__logo-large {
1391
- display: none;
1392
- }
1393
-
1394
- .footer {
1395
- --kfw-focusring-outline-color: var(--kfw-color-background);
1396
-
1397
- border-block-start: var(--kfw-borderwidth) solid var(--kfw-color-line-11);
1398
- line-height: var(--kfw-lineheight);
1399
- padding-block: var(--kfw-space-medium) var(--kfw-space-large);
1400
- }
1401
-
1402
- .footer > * {
1403
- display: flex;
1404
- flex-direction: column;
1405
- gap: var(--kfw-space-medium);
1406
- justify-content: space-between;
1407
- }
1408
-
1409
- @media (--kfw-breakpoint-desktop) {
1410
- .footer > * {
1411
- gap: 3.6rem;
1412
- flex-direction: row;
1413
- align-items: center;
1414
- }
1415
- }
1416
-
1417
- .footer__copyright {
1418
- flex-shrink: 0;
1419
- font-size: var(--kfw-fontsize-small);
1420
- }
1421
-
1422
- .footer__list {
1423
- list-style: none;
1424
- padding: 0;
1425
- margin: 0;
1426
- display: flex;
1427
- flex-flow: row wrap;
1428
- max-inline-size: 100%;
1429
- gap: 1.6rem var(--kfw-space-large);
1430
- font-size: var(--kfw-fontsize-small);
1431
- }
1432
-
1433
- .navigation {
1434
- border: none;
1435
- margin: 0;
1436
- padding: 0;
1437
- background-color: transparent;
1438
- color: var(--kfw-color-text);
1439
- position: fixed;
1440
- inset-block-start: 4rem;
1441
- inset-inline-start: 0;
1442
- block-size: calc(100vb - 4rem);
1443
- overflow: hidden;
1444
- }
1445
-
1446
- .navigation::backdrop {
1447
- background-color: var(--kfw-color-opaque-gray-500-30);
1448
- }
1449
-
1450
- .navigation__close {
1451
- --outer-size: var(--icon-only-2xl);
1452
-
1453
- position: absolute;
1454
- inset-block-start: 0;
1455
- inset-inline-end: 0;
1456
- }
1457
-
1458
- .navigation__container {
1459
- --min-width: 28rem;
1460
-
1461
- margin-block: 0;
1462
- min-inline-size: calc(var(--min-width) + var(--icon-only-2xl));
1463
- padding-inline: 0 var(--icon-only-2xl);
1464
- inline-size: 100%;
1465
- max-block-size: 100%;
1466
- display: flex;
1467
- flex-direction: column;
1468
- inset-block-start: 0.6rem;
1469
- inset-inline-end: 0.6rem;
1470
- position: relative;
1471
- }
1472
-
1473
- .navigation__content {
1474
- display: flex;
1475
- flex-direction: column;
1476
- flex: 1;
1477
- min-block-size: 0;
1478
- }
1479
-
1480
- .navigation__nav {
1481
- flex: 1;
1482
- min-block-size: 0;
1483
- overflow-block: auto;
1484
- padding: calc(var(--kfw-focusring-outline-width) + var(--kfw-focusring-outline-offset));
1485
- margin: calc(-1 * (var(--kfw-focusring-outline-width) + var(--kfw-focusring-outline-offset)));
1486
- }
1487
-
1488
- .navigation__scroll-area {
1489
- flex: 1;
1490
- min-block-size: 0;
1491
- display: flex;
1492
- flex-direction: column;
1493
- overflow: hidden;
1494
- padding-inline: var(--kfw-base-space-static-40) var(--kfw-base-space-static-20);
1495
- padding-block: 0 var(--kfw-base-space-static-50);
1496
- }
1497
-
1498
- .navigation__title {
1499
- --fontsize: var(--kfw-base-fontsize-static-xl);
1500
-
1501
- margin: 0;
1502
- padding-inline: 4rem 2rem;
1503
- padding-block: 1.4rem;
1504
- position: relative;
1505
- color: inherit;
1506
- font-size: var(--fontsize);
1507
- }
1508
-
1509
- @media (--kfw-breakpoint-desktop-large) {
1510
- .navigation__title {
1511
- --fontsize: var(--kfw-base-fontsize-static-2xl);
1512
- }
1513
- }
1514
-
1515
- .navigation__title::after {
1516
- content: "";
1517
- position: absolute;
1518
- inset-inline: 0;
1519
- inset-block-end: 0;
1520
- border-block-end: var(--kfw-borderwidth) var(--kfw-borderstyle) var(--kfw-color-line-11);
1521
- pointer-events: none;
1522
- }
1523
-
1524
- .navigation__subtitle {
1525
- font-size: var(--kfw-fontsize-introduction);
1526
- display: block;
1527
- padding-block-start: 1.4rem;
1528
- }
1529
-
1530
- :where(.navigation__title, .navigation__subtitle) {
1531
- text-align: center;
1532
- }
1533
-
1534
- @media (--kfw-breakpoint-mobile) {
1535
- :where(.navigation__title, .navigation__subtitle) {
1536
- text-align: inherit;
1537
- }
1538
- }
1539
-
1540
- .navigation__list > li {
1541
- border-block-end: var(--kfw-borderwidth-large) var(--kfw-borderstyle) var(--kfw-color-line-8);
1542
- margin-block-end: 0;
1543
- padding-block: var(--kfw-space-small);
1544
- }
1545
-
1546
- .navigation__list > li a {
1547
- inline-size: 100%;
1548
- }
1549
-
1550
- .auto-grid {
1551
- display: grid;
1552
- grid-template-columns: 1fr;
1553
- column-gap: var(--kfw-gridgap-large);
1554
- }
1555
-
1556
- @media (--kfw-breakpoint-tablet) {
1557
- .auto-grid {
1558
- grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
1559
- }
1560
- }
1561
-
1562
- .auto-grid__item {
1563
- margin-block-end: var(--kfw-space-small);
1564
- }
1565
-
1566
- .hero {
1567
- --hero-content-desktop-width: 42.9rem;
1568
-
1569
- position: relative;
1570
- }
1571
-
1572
- @media (--kfw-breakpoint-mobile-max) {
1573
- .hero__container {
1574
- --kfw-safezone: 0;
1575
- }
1576
- }
1577
-
1578
- .hero__bars {
1579
- display: block;
1580
- inline-size: 100%;
1581
- }
1582
-
1583
- @media (--kfw-breakpoint-mobile) {
1584
- .hero__bars {
1585
- display: none;
1586
- }
1587
- }
1588
-
1589
- .hero__bars-desktop {
1590
- display: none;
1591
- inline-size: var(--hero-content-desktop-width);
1592
- position: absolute;
1593
- inset-block-start: 4rem;
1594
- }
1595
-
1596
- @media (--kfw-breakpoint-mobile) {
1597
- .hero__bars-desktop {
1598
- display: block;
1599
- }
1600
- }
1601
-
1602
- .hero__title {
1603
- inline-size: 100%;
1604
- margin-block: 0;
1605
- align-items: center;
1606
- display: flex;
1607
- flex-direction: row;
1608
- padding: 2rem;
1609
- background-color: var(--kfw-color-background-light-blue);
1610
- }
1611
-
1612
- @media (--kfw-breakpoint-mobile) {
1613
- .hero__title {
1614
- flex-direction: row;
1615
- position: absolute;
1616
- display: flex;
1617
- inline-size: var(--hero-content-desktop-width);
1618
- background-color: var(--kfw-color-opaque-white-95);
1619
- inset-block-start: calc(4rem + 1rem + 25px); /* outsidePaddingTop + 10px space + barsHeight */
1620
- border-radius: 0 0 var(--kfw-borderradius-large) 0;
1621
- padding: 2rem 3rem 3rem;
1622
- }
1623
- }
1624
-
1625
- .hero__image {
1626
- inline-size: 100%;
1627
- margin-inline: auto;
1628
- display: block;
1629
- object-fit: cover;
1630
- block-size: auto;
1631
- max-inline-size: 128rem;
1632
- }
1633
-
1634
- .color-palette {
1635
- display: grid;
1636
- grid-template-columns: 1fr;
1637
- }
1638
-
1639
- @media (--kfw-breakpoint-tablet) {
1640
- .color-palette {
1641
- grid-template-columns: repeat(auto-fit, minmax(0, 1fr));
1642
- }
1643
- }
1644
-
1645
- .color-palette :where(button, [role="button"]) {
1646
- white-space: normal;
1647
- }
1648
-
1649
- .color-palette__item {
1650
- margin-block-end: var(--kfw-space-small);
1651
- }
1652
-
1653
- .color-palette__label {
1654
- text-wrap: balance;
1655
- display: block;
1656
- padding: 0.5rem;
1657
- margin-block-end: 0;
1658
- }
1659
-
1660
- .color-palette__container {
1661
- text-align: center;
1662
- padding-inline: var(--kfw-space-xsmall);
1663
- }
1664
-
1665
- .color-palette__color {
1666
- display: block;
1667
- inline-size: 100%;
1668
- block-size: 3rem;
1669
- border: var(--kfw-borderwidth) solid transparent;
1670
- border-inline-width: 0;
1671
- border-block-color: var(--kfw-color-fn-inactive);
1672
- border-inline-start: var(--kfw-borderwidth) solid var(--kfw-color-fn-inactive);
1673
- border-inline-end: var(--kfw-borderwidth) solid var(--kfw-color-fn-inactive);
1674
- }
1675
-
1676
- @media (--kfw-breakpoint-tablet) {
1677
- .color-palette__color {
1678
- border-inline-start: 0;
1679
- border-inline-end: 0;
1680
- }
1681
-
1682
- .color-palette__item:first-child .color-palette__color {
1683
- border-inline-start: var(--kfw-borderwidth) solid var(--kfw-color-fn-inactive);
1684
- }
1685
-
1686
- .color-palette__item:last-child .color-palette__color {
1687
- border-inline-end: var(--kfw-borderwidth) solid var(--kfw-color-fn-inactive);
1688
- }
1689
- }
1690
-
1691
- .spacing-demo {
1692
- display: flex;
1693
- flex-direction: column;
1694
- gap: var(--kfw-space-xsmall);
1695
- margin-block-end: var(--kfw-space-big);
1696
- }
1697
-
1698
- .spacing-demo__item {
1699
- display: flex;
1700
- align-items: center;
1701
- gap: var(--kfw-space-small);
1702
- }
1703
-
1704
- .spacing-demo__visual {
1705
- block-size: 3rem;
1706
- background-color: var(--kfw-color-fn);
1707
- border-radius: var(--kfw-borderradius-small);
1708
- }
1709
-
1710
- .spacing-demo__label {
1711
- font-family: var(--kfw-fontfamily-code);
1712
- font-size: var(--kfw-fontsize-small);
1713
- min-inline-size: 20rem;
1714
- }
1715
-
1716
- .custom-form {
1717
- inline-size: 100%;
1718
- max-inline-size: var(--kfw-contentwrapper-narrow);
1719
- }
1720
-
1721
- table.file-upload-table {
1722
- border-block-start: 0;
1723
- min-block-size: 1rem;
1724
- min-inline-size: 50rem;
1725
- }
1726
-
1727
- table.file-upload-table :where(.file-upload-table__error, .file-upload-table__success, .file-upload-table__info) {
1728
- grid-column: 1 / span 3;
1729
- }
1730
-
1731
- table.file-upload-table :where(.form-text, .invalid-feedback, .valid-feedback) {
1732
- margin-block-start: 0;
1733
- }
1734
-
1735
- table.file-upload-table tr {
1736
- --name: calc(100% - var(--size) - var(--action));
1737
- --size: 30%;
1738
- --action: 15%;
1739
-
1740
- display: grid;
1741
- grid-template-columns: var(--name) var(--size) var(--action);
1742
- inline-size: 100%;
1743
- border-block-start: var(--kfw-borderwidth) solid var(--kfw-color-line-10);
1744
- }
1745
-
1746
- table.file-upload-table tr:not(:last-of-type) {
1747
- border-block-end: 0;
1748
- }
1749
-
1750
- @media (--kfw-breakpoint-mobile) {
1751
- table.file-upload-table tr {
1752
- --size: 25%;
1753
- --action: 25%;
1754
- }
1755
- }
1756
-
1757
- @media (--kfw-breakpoint-desktop) {
1758
- table.file-upload-table tr {
1759
- --action: 20%;
1760
- }
1761
- }
1762
-
1763
- table.file-upload-table .file-upload-table__filename {
1764
- overflow-wrap: break-word;
1765
- }
1766
-
1767
- :where(.hl--sb, .hl--tb, .hl--hb, .hl--ms) {
1768
- display: block;
1769
- line-height: var(--kfw-lineheight-heading);
1770
- letter-spacing: var(--kfw-base-letterspacing-normal);
1771
- margin-block-end: var(--kfw-space-medium);
1772
- }
1773
-
1774
- .hl--sb {
1775
- font-size: var(--kfw-fontsize-introduction);
1776
- }
1777
-
1778
- @media (--kfw-breakpoint-desktop-large) {
1779
- .hl--sb {
1780
- font-size: var(--kfw-base-fontsize-static-5xl);
1781
- line-height: var(--kfw-lineheight-small);
1782
- }
1783
- }
1784
-
1785
- .hl--tb {
1786
- font-size: var(--kfw-fontsize-heading-4);
1787
- }
1788
-
1789
- @media (--kfw-breakpoint-desktop-large) {
1790
- .hl--tb {
1791
- line-height: var(--kfw-lineheight-large);
1792
- }
1793
- }
1794
-
1795
- .hl--hb {
1796
- font-size: var(--kfw-fontsize-introduction);
1797
- }
1798
-
1799
- @media (--kfw-breakpoint-tablet) {
1800
- .hl--hb {
1801
- font-size: var(--kfw-base-fontsize-static-3xl);
1802
- letter-spacing: var(--kfw-base-letterspacing-tight);
1803
- }
1804
- }
1805
-
1806
- @media (--kfw-breakpoint-desktop-large) {
1807
- .hl--hb {
1808
- font-size: var(--kfw-base-fontsize-static-5xl);
1809
- line-height: var(--kfw-lineheight-small);
1810
- letter-spacing: 0;
1811
- }
1812
- }
1813
-
1814
- .hl--ms {
1815
- margin-block-end: var(--kfw-space-xsmall);
1816
- font-size: var(--kfw-fontsize-introduction);
1817
- }
1818
-
1819
- @media (--kfw-breakpoint-tablet) {
1820
- .hl--ms {
1821
- font-size: var(--kfw-fontsize-large);
1822
- line-height: var(--kfw-lineheight-heading-5);
1823
- }
1824
- }
1825
-
1826
- .smk--1 {
1827
- line-height: var(--kfw-lineheight-heading);
1828
- letter-spacing: var(--kfw-base-letterspacing-wider);
1829
- font-size: var(--kfw-fontsize-small);
1830
- }
1831
-
1832
- .tx--1 {
1833
- line-height: var(--kfw-lineheight);
1834
- letter-spacing: var(--kfw-base-letterspacing-normal);
1835
- font-size: var(--kfw-fontsize);
1836
- }
1837
-
1838
- .tx--1-medium {
1839
- line-height: var(--kfw-lineheight);
1840
- letter-spacing: var(--kfw-base-letterspacing-wide);
1841
- font-size: var(--kfw-fontsize);
1842
- }
1843
-
1844
- .tx--2 {
1845
- line-height: var(--kfw-lineheight);
1846
- letter-spacing: var(--kfw-base-letterspacing-normal);
1847
- font-size: var(--kfw-fontsize-small);
1848
- }
1849
-
1850
- .tx--4 {
1851
- line-height: var(--kfw-lineheight);
1852
- letter-spacing: var(--kfw-base-letterspacing-normal);
1853
- font-size: var(--kfw-fontsize-introduction);
1854
- }
1855
-
1856
- .tx--8 {
1857
- line-height: var(--kfw-lineheight-heading);
1858
- letter-spacing: var(--kfw-base-letterspacing-normal);
1859
- font-size: var(--kfw-fontsize-large);
1860
- }
1861
- }
1862
-
1863
- /* -------------------------------------------------------------------------
1864
- Utility Classes
1865
- ------------------------------------------------------------------------- */
1866
- @layer utilities {
1867
- :where(.bg-dark, .footer) {
1868
- --headline-color: var(--kfw-color-text-headline-on-dark-bg);
1869
- --kfw-focusring-outline-color: var(--kfw-color-background);
1870
-
1871
- background-color: var(--kfw-color-background-dark-blue);
1872
- color: var(--kfw-color-text-on-dark-bg);
1873
- }
1874
-
1875
- :where(.bg-dark, .footer) :where(a:not([role="button"]), [role="link"]) {
1876
- --link-color: var(--kfw-color-text-on-dark-bg);
1877
- --link-color-hover: var(--kfw-color-text-on-dark-bg);
1878
- }
1879
-
1880
- :where(.bg-dark, .footer) :where(a:not([role="button"]), [role="link"]):where(:active) {
1881
- --link-background: var(--kfw-color-fn-active);
1882
- }
1883
-
1884
- :where(.bg-dark, .footer) :where(.button-primary) {
1885
- --button-color: var(--kfw-color-fn-active);
1886
- --button-bg: var(--kfw-color-text-on-dark-bg);
1887
- --button-border-color: var(--kfw-color-text-on-dark-bg);
1888
- --button-bg-hover: var(--kfw-color-text-on-dark-bg);
1889
- --button-color-hover: var(--button-color);
1890
- --button-border-color-hover: var(--kfw-color-text-on-dark-bg);
1891
- }
1892
-
1893
- :where(.bg-dark, .footer) :where(.button-secondary) {
1894
- --button-color: var(--kfw-color-text-on-dark-bg);
1895
- --button-border-color: var(--kfw-color-text-on-dark-bg);
1896
- --button-bg-hover: var(--kfw-color-text-on-dark-bg);
1897
- --button-color-hover: var(--kfw-color-fn-active);
1898
- --button-border-color-hover: var(--kfw-color-text-on-dark-bg);
1899
- }
1900
-
1901
- :where(.bg-dark, .footer) :where(.button-primary.has-icon-only:where(:hover, :focus-visible)),
1902
- :where(.bg-dark, .footer) :where(.button-secondary.has-icon-only:where(:hover, :focus-visible)) {
1903
- color: var(--kfw-color-text-on-dark-bg);
1904
- background-color: var(--kfw-color-fn-active);
1905
- border-width: var(--kfw-borderradius-small);
1906
- }
1907
-
1908
- :where(.bg-dark, .footer) :where(.button-primary.has-icon-only:where(:hover)),
1909
- :where(.bg-dark, .footer) :where(.button-secondary.has-icon-only:where(:hover)) {
1910
- border-color: var(--kfw-color-text-on-dark-bg);
1911
- }
1912
-
1913
- :where(.bg-dark, .footer) :where(.button-primary.has-icon-only:where(:active)),
1914
- :where(.bg-dark, .footer) :where(.button-secondary.has-icon-only:where(:active)) {
1915
- border-width: var(--kfw-borderwidth);
1916
- }
1917
-
1918
- .bg-subtle {
1919
- background-color: var(--kfw-color-background-subtle);
1920
- }
1921
-
1922
- .bg-light {
1923
- background-color: var(--kfw-color-background-light-blue);
1924
- }
1925
-
1926
- .bg-white {
1927
- background-color: var(--kfw-color-background);
1928
- }
1929
-
1930
- .visually-hidden {
1931
- clip: rect(0 0 0 0); /* stylelint-disable-line property-no-deprecated */
1932
- clip-path: inset(50%);
1933
- block-size: 1px;
1934
- overflow: hidden;
1935
- position: absolute;
1936
- white-space: nowrap;
1937
- inline-size: 1px;
1938
- }
1939
-
1940
- .d-block {
1941
- display: block;
1942
- }
1943
-
1944
- .my-lg {
1945
- margin-block: var(--kfw-space-large);
1946
- }
1947
-
1948
- .m-auto {
1949
- margin-inline: auto;
1950
- }
1951
-
1952
- .p-0 {
1953
- padding: 0;
1954
- }
1955
-
1956
- .p-sm {
1957
- padding: var(--kfw-space-small);
1958
- }
1959
-
1960
- .mb-0 {
1961
- margin-block-end: 0;
1962
- }
1963
-
1964
- .mb-xs {
1965
- margin-block-end: var(--kfw-space-xsmall);
1966
- }
1967
-
1968
- .mb-sm {
1969
- margin-block-end: var(--kfw-space-small);
1970
- }
1971
-
1972
- .mb-md {
1973
- margin-block-end: var(--kfw-space-medium);
1974
- }
1975
-
1976
- .mb-lg {
1977
- margin-block-end: var(--kfw-space-large);
1978
- }
1979
-
1980
- .mb-xl {
1981
- margin-block-end: var(--kfw-space-big);
1982
- }
1983
-
1984
- .grid-padding-x {
1985
- padding-inline: var(--kfw-gridgap-large);
1986
- }
1987
-
1988
- .grid-padding-y {
1989
- padding-block: var(--kfw-gridgap-large);
1990
- }
1991
-
1992
- .grid-margin-x {
1993
- margin-inline: var(--kfw-gridgap-large);
1994
- }
1995
-
1996
- .grid-margin-y {
1997
- margin-block: var(--kfw-gridgap-large);
1998
- }
1999
-
2000
- .t-center {
2001
- text-align: center;
2002
- }
2003
-
2004
- .relative {
2005
- position: relative;
2006
- }
2007
-
2008
- .static {
2009
- position: static;
2010
- }
2011
-
2012
- .fixed {
2013
- position: fixed;
2014
- }
2015
-
2016
- .sticky {
2017
- position: sticky;
2018
- }
2019
-
2020
- .absolute {
2021
- position: absolute;
2022
- }
2023
- }