@casoon/dragonfly
Version:
Modular, lightweight CSS framework and design system for modern web projects. Optimized for Astro JS, LightningCSS and Container Queries with @layer-based architecture and comprehensive accessibility.
1,820 lines (1,557 loc) • 155 kB
CSS
/* Datei: core/smooth-scroll.css */
/**
* Smooth Scroll CSS-Komponente
* ---------------------------
* Diese Datei enthält Stile für erweiterte Scroll-Funktionalitäten und -Effekte.
*
* Eigenschaften:
* - Sanftes Scrollen (smooth-scroll) für eine verbesserte Benutzererfahrung
* - Scroll-Snap für präzises Positionieren von Elementen beim Scrollen
* - Fortschrittsanzeigen für die Visualisierung der Scroll-Position
* - Parallax-Effekte für tiefenwirksame Layouts
* - Scroll-Animation-Effekte (fade, scale, slide, rotate)
* - Gestaffelte Scroll-Animationen für Gruppen von Elementen
* - Scroll-zu-Top-Funktionalität
* - Scroll-Spy für Navigation
* - Barrierefreiheitsanpassungen für reduzierte Bewegung
*
* Verwendung:
* Fügen Sie die entsprechenden Klassen zu Ihren HTML-Elementen hinzu,
* um die verschiedenen Scroll-Effekte und -Funktionen zu aktivieren.
*
* @layer core - Grundlegende Scroll-Funktionalitäten und -Effekte
* @layer components - Wiederverwendbare Scroll-Komponenten
*/
/* Animationen */
@keyframes scroll-timeline-fade {
0% {
opacity: 0;
transform: translateY(var(--spacing-5, 1.25rem));
}
100% {
opacity: 1;
transform: translateX(0);
}
}
@layer smooth-scroll {
/* Smooth Scroll Variables */
:root {
--scroll-behavior: smooth;
--scroll-padding-top: 0;
--scroll-snap-type: none;
--scroll-snap-align: none;
--scroll-snap-stop: always;
--scroll-margin: 0;
--scroll-timeline-name: none;
--scroll-timeline-axis: block;
--scroll-timeline-view-offset: 0;
}
/* Base Smooth Scroll */
html {
scroll-behavior: var(--scroll-behavior, smooth);
scroll-padding-top: var(--scroll-padding-top, 0);
}
/* Scroll Snap */
.scroll-snap-container {
height: 100vh;
overflow-y: auto;
scroll-snap-type: var(--scroll-snap-type, none);
}
.scroll-snap-item {
scroll-margin: var(--scroll-margin, 0);
scroll-snap-align: var(--scroll-snap-align, none);
scroll-snap-stop: var(--scroll-snap-stop, normal);
}
/* Scroll Progress */
.scroll-progress {
background: linear-gradient(to right, var(--color-primary, #3b82f6) var(--scroll), transparent 0);
height: var(--spacing-1, 0.25rem);
left: 0;
position: fixed;
top: 0;
width: 100%;
z-index: var(--z-50);
}
/* Scroll Timeline */
.scroll-timeline {
scroll-timeline-axis: var(--scroll-timeline-axis);
scroll-timeline-name: var(--scroll-timeline-name);
scroll-timeline-view-offset: var(--scroll-timeline-view-offset);
}
/* Parallax Scrolling */
.parallax-container {
height: 100vh;
overflow: hidden auto;
perspective: var(--border-width);
}
.parallax-layer {
inset: 0;
position: absolute;
}
.parallax-layer-back {
transform: translateZ(calc(-1 * var(--border-width))) scale(2);
}
.parallax-layer-base {
transform: translateZ(0);
}
.parallax-layer-front {
transform: translateZ(var(--border-width)) scale(0.5);
}
/* Scroll Reveal */
.scroll-reveal {
opacity: 0;
transform: translateY(var(--spacing-5, 1.25rem));
transition: all var(--transition-normal, 200ms ease);
}
.scroll-reveal.visible {
opacity: 1;
transform: translateX(0);
}
/* Scroll Fade */
.scroll-fade {
opacity: 0;
transition: opacity var(--transition-normal, 200ms ease);
}
.scroll-fade.visible {
opacity: 1;
}
/* Scroll Scale */
.scroll-scale {
opacity: 0;
transform: scale(0.95);
transition: all var(--transition-normal, 200ms ease);
}
.scroll-scale.visible {
opacity: 1;
transform: scale(1);
}
/* Scroll Slide - Konsolidierte Version */
.scroll-slide {
opacity: 0;
transition: all var(--transition-normal, 200ms ease);
}
.scroll-slide.visible {
opacity: 1;
transform: translate(0, 0);
}
/* Scroll Slide Richtungs-Varianten */
.scroll-slide-left { transform: translateX(-50px); }
.scroll-slide-right { transform: translateX(50px); }
.scroll-slide-up { transform: translateY(50px); }
.scroll-slide-down { transform: translateY(-50px); }
/* Scroll Rotate */
.scroll-rotate {
opacity: 0;
transform: rotate(-15deg);
transition: all var(--transition-normal, 200ms ease);
}
.scroll-rotate.visible {
opacity: 1;
transform: rotate(0);
}
/* Scroll Stagger */
.scroll-stagger > * {
opacity: 0;
transform: translateY(var(--spacing-5, 1.25rem));
transition: all var(--transition-normal, 200ms ease);
}
/* Stagger Delays - Kompakte Version */
.scroll-stagger > *:nth-child(1) { transition-delay: 0.1s; }
.scroll-stagger > *:nth-child(2) { transition-delay: 0.2s; }
.scroll-stagger > *:nth-child(3) { transition-delay: 0.3s; }
.scroll-stagger > *:nth-child(4) { transition-delay: 0.4s; }
.scroll-stagger > *:nth-child(5) { transition-delay: 0.5s; }
.scroll-stagger.visible > * {
opacity: 1;
transform: translateX(0);
}
/* Scroll Progress Bar */
.scroll-progress-bar {
background: var(--slider-track-color);
height: var(--spacing-1, 0.25rem);
left: 0;
position: fixed;
top: 0;
width: 100%;
}
.scroll-progress-bar::before {
background: var(--color-primary, #3b82f6);
content: '';
height: 100vh;
left: 0;
position: absolute;
top: 0;
transition: width var(--transition-normal, 200ms ease);
width: var(--scroll);
}
/* Scroll to Top Button */
.scroll-to-top {
align-items: center;
background: var(--color-primary, #3b82f6);
border-radius: 5px;
bottom: var(--spacing-5, 1.25rem);
color: var(--color-white, #fff);
cursor: pointer;
display: flex;
height: var(--spacing-10, 2.5rem);
justify-content: center;
opacity: 0;
position: fixed;
right: var(--spacing-5, 1.25rem);
transform: translateY(var(--spacing-5, 1.25rem));
transition: all var(--transition-normal, 200ms ease);
width: var(--spacing-10, 2.5rem);
z-index: var(--z-50);
}
.scroll-to-top.visible {
opacity: 1;
transform: translateX(0);
}
.scroll-to-top:hover {
background: var(--color-primary-dark);
transform: translateY(calc(-1 * var(--border-width-thick)));
}
/* Scroll Spy Navigation */
.scroll-spy-nav {
position: fixed;
right: var(--spacing-5, 1.25rem);
top: 50;
transform: translateX(-50);
}
.scroll-spy-nav a {
background: var(--slider-track-color);
border-radius: 5px;
display: block;
height: var(--space-small-10px);
margin: var(--space-small-10px) 0;
transition: all var(--transition-normal, 200ms ease);
width: var(--space-small-10px);
}
.scroll-spy-nav a.active {
background: var(--color-primary, #3b82f6);
transform: scale(1.2);
}
/* Scroll Timeline Animation */
.scroll-timeline-animation {
animation: scroll-timeline-fade 1s ease-out forwards;
animation-range: entry 10 cover 30;
animation-timeline: view();
}
/* Scroll Performance */
.scroll-performance {
backface-visibility: hidden;
transform: translateZ(0);
will-change: transform, opacity;
}
/* Respektiere Nutzereinstellung für reduzierte Bewegung */
@media (prefers-reduced-motion: reduce) {
/* Deaktiviere alle Scroll-Animationen */
html,
body,
.scroll-smooth,
.scroll-behavior-smooth,
.scroll-mt,
.scroll-mb,
.scroll-ms,
.scroll-me,
.scroll-pt,
.scroll-pb,
.scroll-ps,
.scroll-pe,
[data-scroll-trigger],
.scroll-snap-container,
.scroll-snap-item {
animation: none !important;
scroll-behavior: auto !important;
scroll-padding: 0 !important;
scroll-snap-type: none !important;
transition: none !important;
}
}
/* Responsive Anpassungen */
@media (max-width: 640px) {
.touch-feedback::after {
block-size: 150;
inline-size: 150;
}
.focus-ring:focus-visible {
box-shadow: 0 0 0 var(--border-width) var(--color-primary, #3b82f6);
}
}
@media (min-width: 640px) {
/* Fade Stagger Delays - Kompakte Version */
.scroll-fade-staggered > *:nth-child(2) { animation-delay: 0.1s; }
.scroll-fade-staggered > *:nth-child(3) { animation-delay: 0.2s; }
.scroll-fade-staggered > *:nth-child(4) { animation-delay: 0.3s; }
}
@media (min-width: 768px) {
.scroll-to-top {
bottom: var(--spacing-8);
right: var(--spacing-8);
}
}
@media (min-width: 1024px) {
.scroll-parallax {
transform: translateY(calc(var(--scroll-offset) * 0.15));
}
}
/* Reduzierte Bewegung für Barrierefreiheit */
@media (prefers-reduced-motion: reduce) {
:root {
--scroll-behavior: auto;
}
.scroll-fade,
.scroll-scale,
.scroll-slide,
.scroll-rotate,
.scroll-parallax,
.scroll-fade-staggered > * {
animation: none;
opacity: 1;
transform: none;
transition: none;
}
}
}
/* Datei: core/reset.css */
/**
* @casoon/dragonfly – Reset CSS
*
* This file provides a clean, consistent baseline across all browsers to ensure
* reliable styling for components and layouts.
*
* ➤ Modern reset principles are applied without over-normalizing.
* ➤ Accessibility, performance, and logical defaults are prioritized.
* ➤ All rules are scoped within @layer reset to prevent specificity conflicts.
*
* 🚨 Important: This file must be imported first before any other styles,
* especially tokens, themes, and components.
*
* Recommended Import Order:
* 1. @import "@casoon/dragonfly/core/reset.css";
* 2. @import "@casoon/dragonfly/tokens/index.css";
* 3. @import "@casoon/dragonfly/themes/index.css";
* 4. @import "@casoon/dragonfly/ui/index.css";
*
* Accessibility:
* - Includes support for `prefers-reduced-motion`
* - Uses system fonts and semantic defaults
*
* Compatibility:
* - Optimized for modern browsers (Chrome, Firefox, Safari, Edge)
* - Progressive enhancement for older ones
*/
@layer reset {
/* 1. Box-Sizing + Margin-Reset */
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
/* 2. Core Root Defaults */
html {
-webkit-font-smoothing: antialiased;
height: 100;
scroll-behavior: smooth;
text-size-adjust: 100;
}
html:focus-within {
scroll-behavior: smooth;
}
body {
background-color: var(--color-background, var(--color-white));
color: var(--color-foreground, var(--color-black));
font-family: system-ui, sans-serif;
line-height: 1.5;
min-height: 100;
text-rendering: optimizespeed;
}
/* 3. List & Table */
ul, ol {
list-style: none;
}
table {
border-collapse: collapse;
border-spacing: 0;
}
/* 4. Media */
img, picture, video, canvas, svg {
display: block;
height: auto;
max-width: 100;
}
/* 5. Forms & Buttons */
input, button, textarea, select {
appearance: none;
background: none;
border: none;
color: inherit;
font: inherit;
margin: 0;
padding: 0;
}
button {
cursor: pointer;
}
textarea {
resize: vertical;
}
/* 6. Links */
a:not([class]) {
color: inherit;
text-decoration-skip-ink: auto;
}
/* 7. Accessibility: Motion Reduce */
@media (prefers-reduced-motion: reduce) {
html {
scroll-behavior: auto;
}
*, *::before, *::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
}
}
}
/* Datei: core/logical-properties.css */
/**
* Logische CSS-Eigenschaften für Internationalisierung
*
* Diese Datei implementiert logische CSS-Eigenschaften, die eine richtungsunabhängige
* Gestaltung von Layouts ermöglichen. Sie unterstützt mehrsprachige Anwendungen durch
* Vermeidung von richtungsspezifischen Eigenschaften wie left/right und top/bottom.
*
* Stattdessen werden Eigenschaften verwendet, die unabhängig von der Schreibrichtung (RTL/LTR) sind:
* - block-start/block-end (ersetzt top/bottom)
* - inline-start/inline-end (ersetzt left/right)
* - margin-inline, padding-block usw.
*
* Hauptvorteile:
* - Unterstützung für bidirektionale (RTL/LTR) Layouts ohne Codeänderungen
* - Bessere Wartbarkeit durch eine einzige Codebasis für alle Sprachen
* - Verbesserte Barrierefreiheit und Unterstützung für internationale Standards
*
* @hinweis Diese Datei sollte früh im Stylesheet-Laden eingebunden werden.
* @wichtig Beim Erstellen neuer Komponenten immer logische Eigenschaften verwenden.
*/
/*
* Logische CSS Properties für Internationalisierung
*/
@layer logical-properties {
/* Basisklassen für Schreibrichtung */
:root {
--text-direction: ltr;
}
:root[dir="rtl"] {
--text-direction: rtl;
}
html {
text-align: start;
}
/* Standardabstände nutzen logische Properties */
.spacing {
margin-block: var(--spacing-4);
margin-inline: var(--spacing-2);
padding-block: var(--spacing-3);
padding-inline: var(--spacing-2);
}
/* Überschriften verwenden logische Properties */
h1, h2, h3, h4, h5, h6 {
border-block-end: var(--border-width) solid var(--color-surface-300);
margin-block: var(--spacing-6) var(--spacing-4);
padding-block-end: var(--spacing-2);
}
/* Textausrichtung für RTL/LTR Support */
.text-start {
text-align: start;
}
.text-end {
text-align: end;
}
/* Flexbox mit logischen Properties */
.flex-row {
display: flex;
flex-direction: row;
}
.flex-row-reverse {
display: flex;
flex-direction: row-reverse;
}
.justify-start {
justify-content: flex-start;
}
.justify-end {
justify-content: flex-end;
}
/* Container-Abstände */
.container {
margin-inline: auto;
max-inline-size: var(--space-large-80rem);
padding-inline: var(--spacing-4);
}
/* Ränder mit logischen Properties */
.border-start {
border-inline-start: var(--border-width) solid var(--color-surface-300);
}
.border-end {
border-inline-end: var(--border-width) solid var(--color-surface-300);
}
.border-block {
border-block: var(--border-width) solid var(--color-surface-300);
}
.border-inline {
border-inline: var(--border-width) solid var(--color-surface-300);
}
/* Abgerundete Ecken mit logischen Properties */
.rounded {
border-radius: var(--spacing-1);
}
.rounded-start {
border-end-start-radius: var(--spacing-1);
border-start-start-radius: var(--spacing-1);
}
.rounded-end {
border-end-end-radius: var(--spacing-1);
border-start-end-radius: var(--spacing-1);
}
.rounded-top {
border-start-end-radius: var(--spacing-1);
border-start-start-radius: var(--spacing-1);
}
.rounded-bottom {
border-end-end-radius: var(--spacing-1);
border-end-start-radius: var(--spacing-1);
}
/* Positionierung mit logischen Properties */
.position-start {
inset-inline-start: 0;
}
.position-end {
inset-inline-end: 0;
}
.position-top {
inset-block-start: 0;
}
.position-bottom {
inset-block-end: 0;
}
/* Float mit logischen Properties */
.float-start {
float: inline-start;
}
.float-end {
float: inline-end;
}
.clear-start {
clear: inline-start;
}
.clear-end {
clear: inline-end;
}
/* Größen mit logischen Properties */
.inline-size-full {
inline-size: 100%;
}
.block-size-full {
block-size: 100%;
}
.inline-size-half {
inline-size: 50%;
}
.block-size-half {
block-size: 50%;
}
/* Grid mit logischen Properties */
.grid-cols-2 {
display: grid;
gap: var(--spacing-4);
grid-template-columns: repeat(2, 1fr);
}
.grid-cols-3 {
display: grid;
gap: var(--spacing-4);
grid-template-columns: repeat(3, 1fr);
}
.grid-cols-4 {
display: grid;
gap: var(--spacing-4);
grid-template-columns: repeat(4, 1fr);
}
/* Abstände Utility-Klassen */
.m-block-1 {
margin-block: var(--spacing-1);
}
.m-block-2 {
margin-block: var(--spacing-2);
}
.m-block-3 {
margin-block: var(--spacing-3);
}
.m-block-4 {
margin-block: var(--spacing-4);
}
.m-inline-1 {
margin-inline: var(--spacing-1);
}
.m-inline-2 {
margin-inline: var(--spacing-2);
}
.m-inline-3 {
margin-inline: var(--spacing-3);
}
.m-inline-4 {
margin-inline: var(--spacing-4);
}
.p-block-1 {
padding-block: var(--spacing-1);
}
.p-block-2 {
padding-block: var(--spacing-2);
}
.p-block-3 {
padding-block: var(--spacing-3);
}
.p-block-4 {
padding-block: var(--spacing-4);
}
.p-inline-1 {
padding-inline: var(--spacing-1);
}
.p-inline-2 {
padding-inline: var(--spacing-2);
}
.p-inline-3 {
padding-inline: var(--spacing-3);
}
.p-inline-4 {
padding-inline: var(--spacing-4);
}
/* Richtungsspezifische Abstände */
.m-block-start-1 {
margin-block-start: var(--spacing-1);
}
.m-block-start-2 {
margin-block-start: var(--spacing-2);
}
.m-block-start-3 {
margin-block-start: var(--spacing-3);
}
.m-block-start-4 {
margin-block-start: var(--spacing-4);
}
.m-block-end-1 {
margin-block-end: var(--spacing-1);
}
.m-block-end-2 {
margin-block-end: var(--spacing-2);
}
.m-block-end-3 {
margin-block-end: var(--spacing-3);
}
.m-block-end-4 {
margin-block-end: var(--spacing-4);
}
.m-inline-start-1 {
margin-inline-start: var(--spacing-1);
}
.m-inline-start-2 {
margin-inline-start: var(--spacing-2);
}
.m-inline-start-3 {
margin-inline-start: var(--spacing-3);
}
.m-inline-start-4 {
margin-inline-start: var(--spacing-4);
}
.m-inline-end-1 {
margin-inline-end: var(--spacing-1);
}
.m-inline-end-2 {
margin-inline-end: var(--spacing-2);
}
.m-inline-end-3 {
margin-inline-end: var(--spacing-3);
}
.m-inline-end-4 {
margin-inline-end: var(--spacing-4);
}
.p-block-start-1 {
padding-block-start: var(--spacing-1);
}
.p-block-start-2 {
padding-block-start: var(--spacing-2);
}
.p-block-start-3 {
padding-block-start: var(--spacing-3);
}
.p-block-start-4 {
padding-block-start: var(--spacing-4);
}
.p-block-end-1 {
padding-block-end: var(--spacing-1);
}
.p-block-end-2 {
padding-block-end: var(--spacing-2);
}
.p-block-end-3 {
padding-block-end: var(--spacing-3);
}
.p-block-end-4 {
padding-block-end: var(--spacing-4);
}
.p-inline-start-1 {
padding-inline-start: var(--spacing-1);
}
.p-inline-start-2 {
padding-inline-start: var(--spacing-2);
}
.p-inline-start-3 {
padding-inline-start: var(--spacing-3);
}
.p-inline-start-4 {
padding-inline-start: var(--spacing-4);
}
.p-inline-end-1 {
padding-inline-end: var(--spacing-1);
}
.p-inline-end-2 {
padding-inline-end: var(--spacing-2);
}
.p-inline-end-3 {
padding-inline-end: var(--spacing-3);
}
.p-inline-end-4 {
padding-inline-end: var(--spacing-4);
}
/* Scrollen mit logischen Properties */
.overflow-inline {
overflow-inline: auto;
}
.overflow-block {
overflow-block: auto;
}
/* Übersetzte Layouts unterstützen */
[lang="ar"],
[lang="he"],
[lang="fa"],
[lang="ur"] {
direction: rtl;
}
/* Komponenten für internationalisierte UIs */
.navbar {
border-block-end: var(--border-width) solid var(--color-surface-300);
display: flex;
padding-block: var(--spacing-3);
padding-inline: var(--spacing-4);
}
.navbar-brand {
margin-inline-end: var(--spacing-4);
}
.navbar-nav {
display: flex;
gap: var(--spacing-4);
margin-inline-start: auto;
}
.dropdown-menu {
border: var(--border-width) solid var(--color-surface-300);
border-radius: var(--spacing-1);
inset-block-start: 100%;
inset-inline-start: 0;
min-inline-size: var(--spacing-40);
padding-block: var(--spacing-2);
padding-inline: 0;
position: absolute;
}
.dropdown-item {
padding-block: var(--spacing-1);
padding-inline: var(--spacing-3);
text-align: start;
}
/* Karten-Komponente mit logischen Properties */
.card {
border: var(--border-width) solid var(--color-surface-300);
border-radius: var(--spacing-2);
padding-block: var(--spacing-4);
padding-inline: var(--spacing-4);
}
.card-header {
border-block-end: var(--border-width) solid var(--color-surface-200);
margin-block-end: var(--spacing-3);
padding-block-end: var(--spacing-2);
}
.card-footer {
border-block-start: var(--border-width) solid var(--color-surface-200);
margin-block-start: var(--spacing-3);
padding-block-start: var(--spacing-2);
}
/* Listen mit logischen Properties */
.list {
padding-inline-start: var(--spacing-4);
}
.list-item {
margin-block-end: var(--spacing-2);
}
/* Formular-Elemente mit logischen Properties */
.form-group {
margin-block-end: var(--spacing-3);
}
.form-label {
display: block;
margin-block-end: var(--spacing-1);
}
.form-control {
border: var(--border-width) solid var(--color-surface-300);
border-radius: var(--spacing-1);
inline-size: 100%;
padding-block: var(--spacing-2);
padding-inline: var(--spacing-3);
}
/* Buttons mit logischen Properties */
.btn {
border: var(--border-width) solid transparent;
border-radius: var(--spacing-1);
padding-block: var(--spacing-2);
padding-inline: var(--spacing-4);
}
.btn-icon {
margin-inline-end: var(--spacing-2);
}
/* Tabellen mit logischen Properties */
.table {
border-collapse: collapse;
inline-size: 100%;
}
.table th,
.table td {
border-block-end: var(--border-width) solid var(--color-surface-300);
padding-block: var(--spacing-2);
padding-inline: var(--spacing-3);
text-align: start;
}
/* Navigations-Tabs mit logischen Properties */
.tabs {
border-block-end: var(--border-width) solid var(--color-surface-300);
display: flex;
}
.tab {
border-block-end: var(--border-width-thick) solid transparent;
padding-block: var(--spacing-2);
padding-inline: var(--spacing-4);
}
.tab.active {
border-block-end-color: var(--color-primary-500);
}
/* Alert-Komponente mit logischen Properties */
.alert {
border-inline-start: var(--spacing-1) solid var(--color-primary-500);
border-radius: var(--spacing-1);
padding-block: var(--spacing-3);
padding-inline: var(--spacing-4);
}
.alert-danger {
border-inline-start-color: var(--color-error-500);
}
.alert-success {
border-inline-start-color: var(--color-success-500);
}
/* Abstand-Automatisierung */
.text-flow > * + * {
margin-block-start: var(--spacing-3);
}
/* Benutzeroberflächenführungen */
.steps {
display: flex;
margin-block: var(--spacing-4);
}
.step {
border-block-end: var(--border-width-thick) solid var(--color-surface-300);
flex: 1;
padding-block: var(--spacing-2);
text-align: center;
}
.step.active {
border-block-end-color: var(--color-primary-500);
}
/* Dialog/Modal */
.modal {
align-items: center;
display: flex;
inset: 0;
justify-content: center;
position: fixed;
}
.modal-dialog {
background: var(--color-white);
border-radius: var(--spacing-2);
max-block-size: 90%;
max-inline-size: 90%;
min-inline-size: var(--space-large-30rem);
padding-block: var(--spacing-4);
padding-inline: var(--spacing-4);
}
.modal-header {
border-block-end: var(--border-width) solid var(--color-surface-300);
margin-block-end: var(--spacing-3);
padding-block-end: var(--spacing-2);
}
.modal-footer {
border-block-start: var(--border-width) solid var(--color-surface-300);
display: flex;
gap: var(--spacing-2);
justify-content: flex-end;
margin-block-start: var(--spacing-3);
padding-block-start: var(--spacing-2);
}
/* Responsives Layout mit logischen Properties */
@media (max-width: 768px) {
.navbar {
align-items: flex-start;
flex-direction: column;
}
.navbar-nav {
flex-direction: column;
margin-block-start: var(--spacing-3);
margin-inline-start: 0;
}
.grid-cols-2,
.grid-cols-3,
.grid-cols-4 {
grid-template-columns: 1fr;
}
}
/* RTL spezifische Anpassungen */
[dir="rtl"] .btn-icon {
transform: scaleX(-1);
}
[dir="rtl"] .dropdown-menu {
text-align: right;
}
/* Lang-spezifische Anpassungen */
[lang="ja"],
[lang="zh"],
[lang="ko"] {
font-feature-settings: "palt";
line-break: strict;
word-break: normal;
}
[lang="th"],
[lang="my"] {
line-height: 1.8;
}
/* Komplette Layout-Anordnung, unabhängig von der Schreibrichtung */
.layout {
display: grid;
grid-template:
"header header header" auto "sidebar main aside" 1fr "footer footer footer" auto / 200px 1fr 200px;
min-block-size: 100%;
}
.layout-header {
border-block-end: var(--border-width) solid var(--color-surface-300);
grid-area: header;
padding-block: var(--spacing-3);
padding-inline: var(--spacing-4);
}
.layout-sidebar {
border-inline-end: var(--border-width) solid var(--color-surface-300);
grid-area: sidebar;
padding-block: var(--spacing-4);
padding-inline: var(--spacing-3);
}
.layout-main {
grid-area: main;
padding-block: var(--spacing-4);
padding-inline: var(--spacing-4);
}
.layout-aside {
border-inline-start: var(--border-width) solid var(--color-surface-300);
grid-area: aside;
padding-block: var(--spacing-4);
padding-inline: var(--spacing-3);
}
.layout-footer {
border-block-start: var(--border-width) solid var(--color-surface-300);
grid-area: footer;
padding-block: var(--spacing-3);
padding-inline: var(--spacing-4);
}
/* Responsives Layout */
@media (max-width: 990px) {
.layout {
grid-template-areas:
"header header"
"sidebar main"
"footer footer";
grid-template-columns: var(--space-large-200) 1fr;
}
.layout-aside {
display: none;
}
}
@media (max-width: 768px) {
.layout {
grid-template-areas:
"header"
"main"
"footer";
grid-template-columns: 1fr;
}
.layout-sidebar {
display: none;
}
}
/* Responsive Anpassungen für logische Eigenschaften */
@media (max-width: 768px) {
/* Anpassungen für kleinere Bildschirme */
.block-spacer {
margin-block: var(--spacing-4);
}
.inline-spacer {
margin-inline: 0.5rem;
}
.flow-spacing > * + * {
margin-block-start: 0.75rem;
}
.center-content {
align-items: center;
justify-content: center;
}
}
/* Tablet-Anpassungen */
@media (max-width: 990px) {
.tablet-padding {
padding-block: var(--spacing-4);
padding-inline: var(--spacing-6);
}
.tablet-margin {
margin-block: var(--spacing-4);
margin-inline: var(--spacing-6);
}
.tablet-spacing > * + * {
margin-inline-start: var(--spacing-4);
}
}
/* Mobile vertikale Ausrichtung */
@media (max-width: 768px) {
.logical-stack {
display: flex;
flex-direction: column;
gap: var(--space-4);
}
.logical-stack > * {
margin-block-start: var(--space-0);
margin-inline-start: var(--space-0);
}
}
}
/* Datei: core/colors.css */
/**
* Farbsystem
*
* Diese Datei definiert die komplette Farbpalette des Designsystems mit
* modernen OKLCH-Farbwerten für optimale Farbwiedergabe und -konsistenz.
*
* Das Farbsystem besteht aus:
* - Hauptfarbpaletten (Blau, Grün, Rot, etc.) mit jeweils 10 Abstufungen
* - Neutrale Farbpaletten (Grau, Warm-Grau) für UI-Elemente
* - Utility-Klassen für Text- und Hintergrundfarben
*
* Alle Farben sind im OKLCH-Farbraum definiert, der folgende Vorteile bietet:
* - Perceptive Gleichmäßigkeit der Farbabstufungen
* - Erweiterten Farbraum verglichen mit RGB/sRGB
* - Bessere Barrierefreiheit durch vorhersagbare Kontraste
*
* @hinweis Diese Datei wird vor color-mix.css geladen und stellt die Basis-Farbwerte bereit
* @technisch Verwendet den modernen OKLCH-Farbraum für optimale Farbwiedergabe
*/
@layer colors {
:root {
/* Blautöne */
--color-blue-50: oklch(95% 0.05 250deg);
--color-blue-100: oklch(90% 0.1 250deg);
--color-blue-200: oklch(85% 0.15 250deg);
--color-blue-300: oklch(80% 0.2 250deg);
--color-blue-400: oklch(75% 0.25 250deg);
--color-blue-500: oklch(70% 0.3 250deg);
--color-blue-600: oklch(65% 0.35 250deg);
--color-blue-700: oklch(60% 0.4 250deg);
--color-blue-800: oklch(55% 0.45 250deg);
--color-blue-900: oklch(50% 0.5 250deg);
/* Hellblautöne */
--color-sky-50: oklch(95% 0.05 230deg);
--color-sky-100: oklch(90% 0.1 230deg);
--color-sky-200: oklch(85% 0.15 230deg);
--color-sky-300: oklch(80% 0.2 230deg);
--color-sky-400: oklch(75% 0.25 230deg);
--color-sky-500: oklch(70% 0.3 230deg);
--color-sky-600: oklch(65% 0.35 230deg);
--color-sky-700: oklch(60% 0.4 230deg);
--color-sky-800: oklch(55% 0.45 230deg);
--color-sky-900: oklch(50% 0.5 230deg);
/* Türkistöne */
--color-cyan-50: oklch(95% 0.05 200deg);
--color-cyan-100: oklch(90% 0.1 200deg);
--color-cyan-200: oklch(85% 0.15 200deg);
--color-cyan-300: oklch(80% 0.2 200deg);
--color-cyan-400: oklch(75% 0.25 200deg);
--color-cyan-500: oklch(70% 0.3 200deg);
--color-cyan-600: oklch(65% 0.35 200deg);
--color-cyan-700: oklch(60% 0.4 200deg);
--color-cyan-800: oklch(55% 0.45 200deg);
--color-cyan-900: oklch(50% 0.5 200deg);
/* Minttöne */
--color-mint-50: oklch(95% 0.05 170deg);
--color-mint-100: oklch(90% 0.1 170deg);
--color-mint-200: oklch(85% 0.15 170deg);
--color-mint-300: oklch(80% 0.2 170deg);
--color-mint-400: oklch(75% 0.25 170deg);
--color-mint-500: oklch(70% 0.3 170deg);
--color-mint-600: oklch(65% 0.35 170deg);
--color-mint-700: oklch(60% 0.4 170deg);
--color-mint-800: oklch(55% 0.45 170deg);
--color-mint-900: oklch(50% 0.5 170deg);
/* Grüntöne */
--color-green-50: oklch(95% 0.05 150deg);
--color-green-100: oklch(90% 0.1 150deg);
--color-green-200: oklch(85% 0.15 150deg);
--color-green-300: oklch(80% 0.2 150deg);
--color-green-400: oklch(75% 0.25 150deg);
--color-green-500: oklch(70% 0.3 150deg);
--color-green-600: oklch(65% 0.35 150deg);
--color-green-700: oklch(60% 0.4 150deg);
--color-green-800: oklch(55% 0.45 150deg);
--color-green-900: oklch(50% 0.5 150deg);
/* Limettöne */
--color-lime-50: oklch(95% 0.05 120deg);
--color-lime-100: oklch(90% 0.1 120deg);
--color-lime-200: oklch(85% 0.15 120deg);
--color-lime-300: oklch(80% 0.2 120deg);
--color-lime-400: oklch(75% 0.25 120deg);
--color-lime-500: oklch(70% 0.3 120deg);
--color-lime-600: oklch(65% 0.35 120deg);
--color-lime-700: oklch(60% 0.4 120deg);
--color-lime-800: oklch(55% 0.45 120deg);
--color-lime-900: oklch(50% 0.5 120deg);
/* Gelbtöne */
--color-yellow-50: oklch(95% 0.1 80deg);
--color-yellow-100: oklch(90% 0.15 80deg);
--color-yellow-200: oklch(85% 0.2 80deg);
--color-yellow-300: oklch(80% 0.25 80deg);
--color-yellow-400: oklch(75% 0.3 80deg);
--color-yellow-500: oklch(70% 0.35 80deg);
--color-yellow-600: oklch(65% 0.4 80deg);
--color-yellow-700: oklch(60% 0.45 80deg);
--color-yellow-800: oklch(55% 0.5 80deg);
--color-yellow-900: oklch(50% 0.55 80deg);
/* Goldtöne */
--color-gold-50: oklch(95% 0.1 65deg);
--color-gold-100: oklch(90% 0.15 65deg);
--color-gold-200: oklch(85% 0.2 65deg);
--color-gold-300: oklch(80% 0.25 65deg);
--color-gold-400: oklch(75% 0.3 65deg);
--color-gold-500: oklch(70% 0.35 65deg);
--color-gold-600: oklch(65% 0.4 65deg);
--color-gold-700: oklch(60% 0.45 65deg);
--color-gold-800: oklch(55% 0.5 65deg);
--color-gold-900: oklch(50% 0.55 65deg);
/* Orangetöne */
--color-orange-50: oklch(95% 0.1 50deg);
--color-orange-100: oklch(90% 0.15 50deg);
--color-orange-200: oklch(85% 0.2 50deg);
--color-orange-300: oklch(80% 0.25 50deg);
--color-orange-400: oklch(75% 0.3 50deg);
--color-orange-500: oklch(70% 0.35 50deg);
--color-orange-600: oklch(65% 0.4 50deg);
--color-orange-700: oklch(60% 0.45 50deg);
--color-orange-800: oklch(55% 0.5 50deg);
--color-orange-900: oklch(50% 0.55 50deg);
/* Koralltöne */
--color-coral-50: oklch(95% 0.1 40deg);
--color-coral-100: oklch(90% 0.15 40deg);
--color-coral-200: oklch(85% 0.2 40deg);
--color-coral-300: oklch(80% 0.25 40deg);
--color-coral-400: oklch(75% 0.3 40deg);
--color-coral-500: oklch(70% 0.35 40deg);
--color-coral-600: oklch(65% 0.4 40deg);
--color-coral-700: oklch(60% 0.45 40deg);
--color-coral-800: oklch(55% 0.5 40deg);
--color-coral-900: oklch(50% 0.55 40deg);
/* Rottöne */
--color-red-50: oklch(95% 0.1 30deg);
--color-red-100: oklch(90% 0.15 30deg);
--color-red-200: oklch(85% 0.2 30deg);
--color-red-300: oklch(80% 0.25 30deg);
--color-red-400: oklch(75% 0.3 30deg);
--color-red-500: oklch(70% 0.35 30deg);
--color-red-600: oklch(65% 0.4 30deg);
--color-red-700: oklch(60% 0.45 30deg);
--color-red-800: oklch(55% 0.5 30deg);
--color-red-900: oklch(50% 0.55 30deg);
/* Pinktöne */
--color-pink-50: oklch(95% 0.1 0deg);
--color-pink-100: oklch(90% 0.15 0deg);
--color-pink-200: oklch(85% 0.2 0deg);
--color-pink-300: oklch(80% 0.25 0deg);
--color-pink-400: oklch(75% 0.3 0deg);
--color-pink-500: oklch(70% 0.35 0deg);
--color-pink-600: oklch(65% 0.4 0deg);
--color-pink-700: oklch(60% 0.45 0deg);
--color-pink-800: oklch(55% 0.5 0deg);
--color-pink-900: oklch(50% 0.55 0deg);
/* Rosatöne */
--color-rose-50: oklch(95% 0.1 10deg);
--color-rose-100: oklch(90% 0.15 10deg);
--color-rose-200: oklch(85% 0.2 10deg);
--color-rose-300: oklch(80% 0.25 10deg);
--color-rose-400: oklch(75% 0.3 10deg);
--color-rose-500: oklch(70% 0.35 10deg);
--color-rose-600: oklch(65% 0.4 10deg);
--color-rose-700: oklch(60% 0.45 10deg);
--color-rose-800: oklch(55% 0.5 10deg);
--color-rose-900: oklch(50% 0.55 10deg);
/* Violetttöne */
--color-purple-50: oklch(95% 0.05 350deg);
--color-purple-100: oklch(90% 0.1 350deg);
--color-purple-200: oklch(85% 0.15 350deg);
--color-purple-300: oklch(80% 0.2 350deg);
--color-purple-400: oklch(75% 0.25 350deg);
--color-purple-500: oklch(70% 0.3 350deg);
--color-purple-600: oklch(65% 0.35 350deg);
--color-purple-700: oklch(60% 0.4 350deg);
--color-purple-800: oklch(55% 0.45 350deg);
--color-purple-900: oklch(50% 0.5 350deg);
/* Indigotöne */
--color-indigo-50: oklch(95% 0.05 300deg);
--color-indigo-100: oklch(90% 0.1 300deg);
--color-indigo-200: oklch(85% 0.15 300deg);
--color-indigo-300: oklch(80% 0.2 300deg);
--color-indigo-400: oklch(75% 0.25 300deg);
--color-indigo-500: oklch(70% 0.3 300deg);
--color-indigo-600: oklch(65% 0.35 300deg);
--color-indigo-700: oklch(60% 0.4 300deg);
--color-indigo-800: oklch(55% 0.45 300deg);
--color-indigo-900: oklch(50% 0.5 300deg);
/* Grautöne */
--color-gray-50: oklch(98% 0.02 250deg);
--color-gray-100: oklch(95% 0.02 250deg);
--color-gray-200: oklch(90% 0.02 250deg);
--color-gray-300: oklch(85% 0.02 250deg);
--color-gray-400: oklch(80% 0.02 250deg);
--color-gray-500: oklch(75% 0.02 250deg);
--color-gray-600: oklch(70% 0.02 250deg);
--color-gray-700: oklch(65% 0.02 250deg);
--color-gray-800: oklch(60% 0.02 250deg);
--color-gray-900: oklch(55% 0.02 250deg);
/* System-Grautöne (mit Hue-Berechnung) */
--color-gray-hue: 262;
--color-system-gray-100: oklch(98.7% 0.003 var(--color-gray-hue));
--color-system-gray-200: oklch(97.4% 0.004 var(--color-gray-hue));
--color-system-gray-300: oklch(94.2% 0.006 var(--color-gray-hue));
--color-system-gray-400: oklch(89% 0.01 var(--color-gray-hue));
--color-system-gray-500: oklch(81% 0.014 var(--color-gray-hue));
--color-system-gray-600: oklch(68% 0.018 var(--color-gray-hue));
--color-system-gray-700: oklch(54% 0.02 var(--color-gray-hue));
--color-system-gray-800: oklch(36% 0.015 var(--color-gray-hue));
--color-system-gray-900: oklch(22% 0.01 var(--color-gray-hue));
/* Warme Grautöne */
--color-warm-gray-50: oklch(98% 0.02 30deg);
--color-warm-gray-100: oklch(95% 0.02 30deg);
--color-warm-gray-200: oklch(90% 0.02 30deg);
--color-warm-gray-300: oklch(85% 0.02 30deg);
--color-warm-gray-400: oklch(80% 0.02 30deg);
--color-warm-gray-500: oklch(75% 0.02 30deg);
--color-warm-gray-600: oklch(70% 0.02 30deg);
--color-warm-gray-700: oklch(65% 0.02 30deg);
--color-warm-gray-800: oklch(60% 0.02 30deg);
--color-warm-gray-900: oklch(55% 0.02 30deg);
/* Kalte Grautöne */
--color-cool-gray-50: oklch(98% 0.02 270deg);
--color-cool-gray-100: oklch(95% 0.02 270deg);
--color-cool-gray-200: oklch(90% 0.02 270deg);
--color-cool-gray-300: oklch(85% 0.02 270deg);
--color-cool-gray-400: oklch(80% 0.02 270deg);
--color-cool-gray-500: oklch(75% 0.02 270deg);
--color-cool-gray-600: oklch(70% 0.02 270deg);
--color-cool-gray-700: oklch(65% 0.02 270deg);
--color-cool-gray-800: oklch(60% 0.02 270deg);
--color-cool-gray-900: oklch(55% 0.02 270deg);
/* Reines Weiß und Schwarz */
--color-white: oklch(100% 0 0deg);
--color-black: oklch(0 0 0deg);
/* Alias für häufig verwendete Farben */
--color-text: var(--color-gray-900);
--color-text-secondary: var(--color-gray-600);
--color-background: var(--color-gray-50);
--color-background-secondary: var(--color-gray-100);
--color-background-tertiary: var(--color-gray-200);
--color-border: var(--color-gray-300);
/* Azurtöne */
--color-azure-50: oklch(95% 0.05 240deg);
--color-azure-100: oklch(90% 0.1 240deg);
--color-azure-200: oklch(85% 0.15 240deg);
--color-azure-300: oklch(80% 0.2 240deg);
--color-azure-400: oklch(75% 0.25 240deg);
--color-azure-500: oklch(70% 0.3 240deg);
--color-azure-600: oklch(65% 0.35 240deg);
--color-azure-700: oklch(60% 0.4 240deg);
--color-azure-800: oklch(55% 0.45 240deg);
--color-azure-900: oklch(50% 0.5 240deg);
/* Tealtöne */
--color-teal-50: oklch(95% 0.05 190deg);
--color-teal-100: oklch(90% 0.1 190deg);
--color-teal-200: oklch(85% 0.15 190deg);
--color-teal-300: oklch(80% 0.2 190deg);
--color-teal-400: oklch(75% 0.25 190deg);
--color-teal-500: oklch(70% 0.3 190deg);
--color-teal-600: oklch(65% 0.35 190deg);
--color-teal-700: oklch(60% 0.4 190deg);
--color-teal-800: oklch(55% 0.45 190deg);
--color-teal-900: oklch(50% 0.5 190deg);
/* Smaragdtöne */
--color-emerald-50: oklch(95% 0.1 165deg);
--color-emerald-100: oklch(90% 0.15 165deg);
--color-emerald-200: oklch(85% 0.2 165deg);
--color-emerald-300: oklch(80% 0.25 165deg);
--color-emerald-400: oklch(75% 0.3 165deg);
--color-emerald-500: oklch(70% 0.35 165deg);
--color-emerald-600: oklch(65% 0.4 165deg);
--color-emerald-700: oklch(60% 0.45 165deg);
--color-emerald-800: oklch(55% 0.5 165deg);
--color-emerald-900: oklch(50% 0.55 165deg);
/* Olivtöne */
--color-olive-50: oklch(95% 0.05 110deg);
--color-olive-100: oklch(90% 0.1 110deg);
--color-olive-200: oklch(85% 0.15 110deg);
--color-olive-300: oklch(80% 0.2 110deg);
--color-olive-400: oklch(75% 0.25 110deg);
--color-olive-500: oklch(70% 0.3 110deg);
--color-olive-600: oklch(65% 0.35 110deg);
--color-olive-700: oklch(60% 0.4 110deg);
--color-olive-800: oklch(55% 0.45 110deg);
--color-olive-900: oklch(50% 0.5 110deg);
/* Bernstein */
--color-amber-50: oklch(95% 0.1 70deg);
--color-amber-100: oklch(90% 0.15 70deg);
--color-amber-200: oklch(85% 0.2 70deg);
--color-amber-300: oklch(80% 0.25 70deg);
--color-amber-400: oklch(75% 0.3 70deg);
--color-amber-500: oklch(70% 0.35 70deg);
--color-amber-600: oklch(65% 0.4 70deg);
--color-amber-700: oklch(60% 0.45 70deg);
--color-amber-800: oklch(55% 0.5 70deg);
--color-amber-900: oklch(50% 0.55 70deg);
/* Kupfertöne */
--color-copper-50: oklch(95% 0.1 45deg);
--color-copper-100: oklch(90% 0.15 45deg);
--color-copper-200: oklch(85% 0.2 45deg);
--color-copper-300: oklch(80% 0.25 45deg);
--color-copper-400: oklch(75% 0.3 45deg);
--color-copper-500: oklch(70% 0.35 45deg);
--color-copper-600: oklch(65% 0.4 45deg);
--color-copper-700: oklch(60% 0.45 45deg);
--color-copper-800: oklch(55% 0.5 45deg);
--color-copper-900: oklch(50% 0.55 45deg);
/* Kirschtöne */
--color-cherry-50: oklch(95% 0.1 20deg);
--color-cherry-100: oklch(90% 0.15 20deg);
--color-cherry-200: oklch(85% 0.2 20deg);
--color-cherry-300: oklch(80% 0.25 20deg);
--color-cherry-400: oklch(75% 0.3 20deg);
--color-cherry-500: oklch(70% 0.35 20deg);
--color-cherry-600: oklch(65% 0.4 20deg);
--color-cherry-700: oklch(60% 0.45 20deg);
--color-cherry-800: oklch(55% 0.5 20deg);
--color-cherry-900: oklch(50% 0.55 20deg);
/* Magentatöne */
--color-magenta-50: oklch(95% 0.1 340deg);
--color-magenta-100: oklch(90% 0.15 340deg);
--color-magenta-200: oklch(85% 0.2 340deg);
--color-magenta-300: oklch(80% 0.25 340deg);
--color-magenta-400: oklch(75% 0.3 340deg);
--color-magenta-500: oklch(70% 0.35 340deg);
--color-magenta-600: oklch(65% 0.4 340deg);
--color-magenta-700: oklch(60% 0.45 340deg);
--color-magenta-800: oklch(55% 0.5 340deg);
--color-magenta-900: oklch(50% 0.55 340deg);
/* Lavendeltöne */
--color-lavender-50: oklch(95% 0.05 320deg);
--color-lavender-100: oklch(90% 0.1 320deg);
--color-lavender-200: oklch(85% 0.15 320deg);
--color-lavender-300: oklch(80% 0.2 320deg);
--color-lavender-400: oklch(75% 0.25 320deg);
--color-lavender-500: oklch(70% 0.3 320deg);
--color-lavender-600: oklch(65% 0.35 320deg);
--color-lavender-700: oklch(60% 0.4 320deg);
--color-lavender-800: oklch(55% 0.45 320deg);
--color-lavender-900: oklch(50% 0.5 320deg);
/* Bronzetöne */
--color-bronze-50: oklch(95% 0.1 40deg);
--color-bronze-100: oklch(90% 0.15 40deg);
--color-bronze-200: oklch(85% 0.2 40deg);
--color-bronze-300: oklch(80% 0.25 40deg);
--color-bronze-400: oklch(75% 0.3 40deg);
--color-bronze-500: oklch(70% 0.35 40deg);
--color-bronze-600: oklch(65% 0.4 40deg);
--color-bronze-700: oklch(60% 0.45 40deg);
--color-bronze-800: oklch(55% 0.5 40deg);
--color-bronze-900: oklch(50% 0.55 40deg);
/* Perltöne */
--color-pearl-50: oklch(98% 0.01 0deg);
--color-pearl-100: oklch(95% 0.01 0deg);
--color-pearl-200: oklch(92% 0.01 0deg);
--color-pearl-300: oklch(89% 0.01 0deg);
--color-pearl-400: oklch(86% 0.01 0deg);
--color-pearl-500: oklch(83% 0.01 0deg);
--color-pearl-600: oklch(80% 0.01 0deg);
--color-pearl-700: oklch(77% 0.01 0deg);
--color-pearl-800: oklch(74% 0.01 0deg);
--color-pearl-900: oklch(71% 0.01 0deg);
/* Champagnertöne */
--color-champagne-50: oklch(98% 0.02 60deg);
--color-champagne-100: oklch(95% 0.02 60deg);
--color-champagne-200: oklch(92% 0.02 60deg);
--color-champagne-300: oklch(89% 0.02 60deg);
--color-champagne-400: oklch(86% 0.02 60deg);
--color-champagne-500: oklch(83% 0.02 60deg);
--color-champagne-600: oklch(80% 0.02 60deg);
--color-champagne-700: oklch(77% 0.02 60deg);
--color-champagne-800: oklch(74% 0.02 60deg);
--color-champagne-900: oklch(71% 0.02 60deg);
/* Tauptöne */
--color-taupe-50: oklch(95% 0.02 20deg);
--color-taupe-100: oklch(90% 0.02 20deg);
--color-taupe-200: oklch(85% 0.02 20deg);
--color-taupe-300: oklch(80% 0.02 20deg);
--color-taupe-400: oklch(75% 0.02 20deg);
--color-taupe-500: oklch(70% 0.02 20deg);
--color-taupe-600: oklch(65% 0.02 20deg);
--color-taupe-700: oklch(60% 0.02 20deg);
--color-taupe-800: oklch(55% 0.02 20deg);
--color-taupe-900: oklch(50% 0.02 20deg);
/* Beigetöne */
--color-beige-50: oklch(98% 0.02 80deg);
--color-beige-100: oklch(95% 0.02 80deg);
--color-beige-200: oklch(92% 0.02 80deg);
--color-beige-300: oklch(89% 0.02 80deg);
--color-beige-400: oklch(86% 0.02 80deg);
--color-beige-500: oklch(83% 0.02 80deg);
--color-beige-600: oklch(80% 0.02 80deg);
--color-beige-700: oklch(77% 0.02 80deg);
--color-beige-800: oklch(74% 0.02 80deg);
--color-beige-900: oklch(71% 0.02 80deg);
/* Khakitöne */
--color-khaki-50: oklch(95% 0.05 100deg);
--color-khaki-100: oklch(90% 0.05 100deg);
--color-khaki-200: oklch(85% 0.05 100deg);
--color-khaki-300: oklch(80% 0.05 100deg);
--color-khaki-400: oklch(75% 0.05 100deg);
--color-khaki-500: oklch(70% 0.05 100deg);
--color-khaki-600: oklch(65% 0.05 100deg);
--color-khaki-700: oklch(60% 0.05 100deg);
--color-khaki-800: oklch(55% 0.05 100deg);
--color-khaki-900: oklch(50% 0.05 100deg);
/* Terrakottatöne */
--color-terracotta-50: oklch(95% 0.1 25deg);
--color-terracotta-100: oklch(90% 0.15 25deg);
--color-terracotta-200: oklch(85% 0.2 25deg);
--color-terracotta-300: oklch(80% 0.25 25deg);
--color-terracotta-400: oklch(75% 0.3 25deg);
--color-terracotta-500: oklch(70% 0.35 25deg);
--color-terracotta-600: oklch(65% 0.4 25deg);
--color-terracotta-700: oklch(60% 0.45 25deg);
--color-terracotta-800: oklch(55% 0.5 25deg);
--color-terracotta-900: oklch(50% 0.55 25deg);
/* Burgundertöne */
--color-burgundy-50: oklch(95% 0.1 350deg);
--color-burgundy-100: oklch(90% 0.15 350deg);
--color-burgundy-200: oklch(85% 0.2 350deg);
--color-burgundy-300: oklch(80% 0.25 350deg);
--color-burgundy-400: oklch(75% 0.3 350deg);
--color-burgundy-500: oklch(70% 0.35 350deg);
--color-burgundy-600: oklch(65% 0.4 350deg);
--color-burgundy-700: oklch(60% 0.45 350deg);
--color-burgundy-800: oklch(55% 0.5 350deg);
--color-burgundy-900: oklch(50% 0.55 350deg);
/* Silbertöne */
--color-silver-50: oklch(98% 0.01 250deg);
--color-silver-100: oklch(95% 0.01 250deg);
--color-silver-200: oklch(92% 0.01 250deg);
--color-silver-300: oklch(89% 0.01 250deg);
--color-silver-400: oklch(86% 0.01 250deg);
--color-silver-500: oklch(83% 0.01 250deg);
--color-silver-600: oklch(80% 0.01 250deg);
--color-silver-700: oklch(77% 0.01 250deg);
--color-silver-800: oklch(74% 0.01 250deg);
--color-silver-900: oklch(71% 0.01 250deg);
/* Platinatöne */
--color-platinum-50: oklch(98% 0.01 270deg);
--color-platinum-100: oklch(95% 0.01 270deg);
--color-platinum-200: oklch(92% 0.01 270deg);
--color-platinum-300: oklch(89% 0.01 270deg);
--color-platinum-400: oklch(86% 0.01 270deg);
--color-platinum-500: oklch(83% 0.01 270deg);
--color-platinum-600: oklch(80% 0.01 270deg);
--color-platinum-700: oklch(77% 0.01 270deg);
--color-platinum-800: oklch(74% 0.01 270deg);
--color-platinum-900: oklch(71% 0.01 270deg);
/* Graphittöne */
--color-graphite-50: oklch(95% 0.02 280deg);
--color-graphite-100: oklch(90% 0.02 280deg);
--color-graphite-200: oklch(85% 0.02 280deg);
--color-graphite-300: oklch(80% 0.02 280deg);
--color-graphite-400: oklch(75% 0.02 280deg);
--color-graphite-500: oklch(70% 0.02 280deg);
--color-graphite-600: oklch(65% 0.02 280deg);
--color-graphite-700: oklch(60% 0.02 280deg);
--color-graphite-800: oklch(55% 0.02 280deg);
--color-graphite-900: oklch(50% 0.02 280deg);
/* Moostöne */
--color-moss-50: oklch(95% 0.05 140deg);
--color-moss-100: oklch(90% 0.05 140deg);
--color-moss-200: oklch(85% 0.05 140deg);
--color-moss-300: oklch(80% 0.05 140deg);
--color-moss-400: oklch(75% 0.05 140deg);
--color-moss-500: oklch(70% 0.05 140deg);
--color-moss-600: oklch(65% 0.05 140deg);
--color-moss-700: oklch(60% 0.05 140deg);
--color-moss-800: oklch(55% 0.05 140deg);
--color-moss-900: oklch(50% 0.05 140deg);
/* Jade */
--color-jade-50: oklch(95% 0.1 150deg);
--color-jade-100: oklch(90% 0.15 150deg);
--color-jade-200: oklch(85% 0.2 150deg);
--color-jade-300: oklch(80% 0.25 150deg);
--color-jade-400: oklch(75% 0.3 150deg);
--color-jade-500: oklch(70% 0.35 150deg);
--color-jade-600: oklch(65% 0.4 150deg);
--color-jade-700: oklch(60% 0.45 150deg);
--color-jade-800: oklch(55% 0.5 150deg);
--color-jade-900: oklch(50% 0.55 150deg);
/* Saphir */
--color-sapphire-50: oklch(95% 0.1 260deg);
--color-sapphire-100: oklch(90% 0.15 260deg);
--color-sapphire-200: oklch(85% 0.2 260deg);
--color-sapphire-300: oklch(80% 0.25 260deg);
--color-sapphire-400: oklch(75% 0.3 260deg);
--color-sapphire-500: oklch(70% 0.35 260deg);
--color-sapphire-600: oklch(65% 0.4 260deg);
--color-sapphire-700: oklch(60% 0.45 260deg);
--color-sapphire-800: oklch(55% 0.5 260deg);
--color-sapphire-900: oklch(50% 0.55 260deg);
/* Rubin */
--color-ruby-50: oklch(95% 0.1 0deg);
--color-ruby-100: oklch(90% 0.15 0deg);
--color-ruby-200: oklch(85% 0.2 0deg);
--color-ruby-300: oklch(80% 0.25 0deg);
--color-ruby-400: oklch(75% 0.3 0deg);
--color-ruby-500: oklch(70% 0.35 0deg);
--color-ruby-600: oklch(65% 0.4 0deg);
--color-ruby-700: oklch(60% 0.45 0deg);
--color-ruby-800: oklch(55% 0.5 0deg);
--color-ruby-900: oklch(50% 0.55 0deg);
/* Amethyst */
--color-amethyst-50: oklch(95% 0.1 310deg);
--color-amethyst-100: oklch(90% 0.15 310deg);
--color-amethyst-200: oklch(85% 0.2 310deg);
--color-amethyst-300: oklch(80% 0.25 310deg);
--color-amethyst-400: oklch(75% 0.3 310deg);
--color-amethyst-500: oklch(70% 0.35 310deg)