@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.
150 lines (129 loc) • 5.63 kB
CSS
/*
* Accessibility - Contrast
*
* Styles und Utilities für verbesserten Farbkontrast.
* Diese Datei enthält Definitionen für kontrastreiche Farben und Kontrastprüfung.
*/
@layer accessibility {
/*
* Kontrastreiche Farbvariablen
*
* Diese Variablen bieten Farben mit hohem Kontrast für eine bessere Zugänglichkeit.
* Sie erfüllen mindestens die WCAG 2.1 AA-Anforderungen (Kontrastverhältnis ≥ 4.5:1).
*/
:root {
/* Primäre Kontrastfarben */
--color-a11y-primary: var(--color-blue-600); /* Dunkleres Blau für besseren Kontrast auf weißem Hintergrund */
--color-a11y-primary-hover: var(--color-blue-700); /* Noch dunkleres Blau für Hover-Zustände */
--color-a11y-primary-text: var(--color-white); /* Weißer Text auf dunklerem Blau */
/* Sekundäre Kontrastfarben */
--color-a11y-secondary: var(--color-gray-600); /* Dunkleres Grau für besseren Kontrast */
--color-a11y-secondary-hover: var(--color-gray-700); /* Noch dunkleres Grau für Hover-Zustände */
--color-a11y-secondary-text: var(--color-white); /* Weißer Text auf dunklerem Grau */
/* Statusfarben mit hohem Kontrast */
--color-a11y-success: var(--color-green-600); /* Dunkleres Grün für besseren Kontrast */
--color-a11y-warning: var(--color-orange-600); /* Dunkleres Orange für besseren Kontrast */
--color-a11y-error: var(--color-red-600); /* Dunkleres Rot für besseren Kontrast */
--color-a11y-info: var(--color-blue-600); /* Dunkleres Blau für besseren Kontrast */
/* Text-Farben mit hohem Kontrast */
--color-a11y-text-primary: var(--color-gray-very-dark); /* Fast schwarzer Text auf hellem Hintergrund */
--color-a11y-text-secondary: var(--color-gray-600); /* Dunkleres Grau für sekundären Text */
--color-a11y-text-tertiary: var(--color-gray-medium); /* Dunkleres Grau für tertiären Text */
/* Hintergrundfarben mit hohem Kontrast */
--color-a11y-background: var(--color-white); /* Weißer Hintergrund */
--color-a11y-surface: var(--color-gray-very-light); /* Hellgraue Oberfläche */
/* Randfarben mit hohem Kontrast */
--color-a11y-border: var(--color-gray-600); /* Dunklerer Rahmen für besseren Kontrast */
}
/*
* Kontrast-Modus
*
* Diese Klasse kann auf body oder :root angewendet werden,
* um einen Hochkontrast-Modus zu aktivieren.
*/
.high-contrast-mode {
/* Überschreibe Standard-Farbvariablen mit Hochkontrast-Versionen */
--color-primary-500: var(--color-a11y-primary);
--color-primary-600: var(--color-a11y-primary-hover);
--color-primary-700: var(--color-a11y-primary-hover);
--color-secondary-500: var(--color-a11y-secondary);
--color-secondary-600: var(--color-a11y-secondary-hover);
--color-secondary-700: var(--color-a11y-secondary-hover);
--color-success: var(--color-a11y-success);
--color-warning: var(--color-a11y-warning);
--color-error: var(--color-a11y-error);
--color-info: var(--color-a11y-info);
--color-text-primary: var(--color-a11y-text-primary);
--color-text-secondary: var(--color-a11y-text-secondary);
--color-text-tertiary: var(--color-a11y-text-tertiary);
--color-background: var(--color-a11y-background);
--color-surface: var(--color-a11y-surface);
--color-border: var(--color-a11y-border);
/* Erhöhter Kontrast durch verstärkte Schattierungen */
--shadow-sm: 0 var(--border-width) 3px 0 rgb(0 0 0 / 300000);
--shadow-md: 0 var(--spacing-1) 6px 0 rgb(0 0 0 / 300000);
--shadow-lg: 0 10px 15px 0 rgb(0 0 0 / 300000);
/* Verstärkte Fokus-Indikatoren */
--focus-ring: 0 0 0 3px rgb(0 82 204 / 800000);
/* Erhöhte Textlesbarkeit */
--line-height-normal: 1.6;
/* Entfernung subtiler Transparenz-Effekte */
--color-overlay: var(--color-overlay-dark);
--color-overlay-light: var(--color-overlay-medium);
}
/*
* Kontrast-Klassen für einzelne Elemente
*
* Diese Klassen können auf einzelne Elemente angewendet werden,
* um ihren Kontrast zu verbessern, ohne den gesamten Modus zu aktivieren.
*/
/* Verbesserte Textlesbarkeit */
.a11y-text {
color: var(--color-a11y-text-primary);
font-weight: var(--font-weight-medium);
line-height: var(--line-height-none).6;
}
/* Kontrastreiche Buttons */
.a11y-button {
background-color: var(--color-a11y-primary);
border: var(--border-width-thick) solid var(--color-a11y-primary);
color: var(--color-a11y-primary-text);
font-weight: var(--font-weight-semibold);
}
.a11y-button:hover,
.a11y-button:focus {
background-color: var(--color-a11y-primary-hover);
border-color: var(--color-a11y-primary-hover);
}
/* Kontrastreiche Links */
.a11y-link {
color: var(--color-a11y-primary);
font-weight: var(--font-weight-medium);
text-decoration: underline;
}
.a11y-link:hover,
.a11y-link:focus {
color: var(--color-a11y-primary-hover);
text-decoration: underline;
}
/* Kontrastreiche Rahmen */
.a11y-border {
border: var(--border-width-thick) solid var(--color-a11y-border);
}
/* Kontrastreiche Formular-Elemente */
.a11y-input {
background-color: var(--color-a11y-background);
border: var(--border-width-thick) solid var(--color-a11y-border);
color: var(--color-a11y-text-primary);
}
.a11y-input:focus {
border-color: var(--color-a11y-primary);
outline: var(--focus-ring);
}
/* Kontrastreiche Icons */
.a11y-icon {
color: var(--color-a11y-primary);
height: 1%.5em;
width: 1%.5em;
}
}