syncova-policies/app/globals.css
Weapie 265ca8ac38
All checks were successful
Container-Image bauen und veröffentlichen / build-and-push (push) Successful in 5m15s
Improve accessibility and access controls; verify production and database recovery
2026-09-14 11:44:41 +02:00

286 lines
8.7 KiB
CSS
Raw Permalink Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

@import "tailwindcss";
@import "tw-animate-css";
@custom-variant dark (&:is(.dark *));
:root {
--radius: 0.625rem;
--background: oklch(0.99 0.001 286);
--foreground: oklch(0.16 0.004 286);
--card: oklch(1 0 0);
--card-foreground: oklch(0.16 0.004 286);
--popover: oklch(1 0 0);
--popover-foreground: oklch(0.16 0.004 286);
--primary: oklch(0.21 0.006 286);
--primary-foreground: oklch(0.985 0 0);
--secondary: oklch(0.968 0.002 286);
--secondary-foreground: oklch(0.21 0.006 286);
--muted: oklch(0.968 0.002 286);
/* 4.55:1 auch auf muted-Flächen – vorher 0.552 und damit knapp darunter */
--muted-foreground: oklch(0.545 0.014 286);
--accent: oklch(0.968 0.002 286);
--accent-foreground: oklch(0.21 0.006 286);
--destructive: oklch(0.520 0.245 27.325); /* 4.5:1 auch auf 10%-Fläche im Badge */
--destructive-foreground: oklch(0.985 0 0);
--success: oklch(0.495 0.145 163); /* 4.5:1 auch auf 10%-Fläche im Badge */
--border: oklch(0.918 0.004 286);
/* Rahmen von Eingabefeldern: 3:1 nach WCAG 1.4.11, sonst ist das Feld
nicht als solches erkennbar. Dekorative Trenner nutzen --border. */
--input: oklch(0.620 0.004 286);
--ring: oklch(0.53 0.155 258); /* Fokus in Markenfarbe, 5.2:1 */
--brand: oklch(0.53 0.155 258); /* 4.5:1 auch auf 10%-Fläche im Badge */
--brand-foreground: oklch(0.985 0 0);
--chart-1: oklch(0.55 0.155 258);
--chart-2: oklch(0.6 0.118 184.704);
--chart-3: oklch(0.398 0.07 227.392);
--chart-4: oklch(0.828 0.189 84.429);
--chart-5: oklch(0.769 0.188 70.08);
--sidebar: oklch(0.985 0.001 286);
--sidebar-foreground: oklch(0.16 0.004 286);
--sidebar-primary: oklch(0.21 0.006 286);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.968 0.002 286);
--sidebar-accent-foreground: oklch(0.21 0.006 286);
--sidebar-border: oklch(0.918 0.004 286);
--sidebar-ring: oklch(0.6 0.012 286);
}
.dark {
--background: oklch(0.14 0.004 286);
--foreground: oklch(0.985 0 0);
--card: oklch(0.18 0.005 286);
--card-foreground: oklch(0.985 0 0);
--popover: oklch(0.19 0.005 286);
--popover-foreground: oklch(0.985 0 0);
--primary: oklch(0.985 0 0);
--primary-foreground: oklch(0.21 0.006 286);
--secondary: oklch(0.256 0.006 286);
--secondary-foreground: oklch(0.985 0 0);
--muted: oklch(0.256 0.006 286);
--muted-foreground: oklch(0.712 0.013 286);
--accent: oklch(0.256 0.006 286);
--accent-foreground: oklch(0.985 0 0);
--destructive: oklch(0.670 0.237 25.331); /* 4.5:1 auf 20%-Fläche im Badge */
--destructive-foreground: oklch(0.985 0 0);
--success: oklch(0.696 0.17 162.48);
--border: oklch(1 0 0 / 10%);
--input: oklch(0.500 0.006 286); /* deckend statt transparent, 3:1 */
--ring: oklch(0.68 0.14 258); /* Fokus in Markenfarbe, 6.9:1 */
--brand: oklch(0.68 0.14 258);
--brand-foreground: oklch(0.14 0.004 286);
--chart-1: oklch(0.68 0.14 258);
--chart-2: oklch(0.696 0.17 162.48);
--chart-3: oklch(0.769 0.188 70.08);
--chart-4: oklch(0.627 0.265 303.9);
--chart-5: oklch(0.645 0.246 16.439);
--sidebar: oklch(0.18 0.005 286);
--sidebar-foreground: oklch(0.985 0 0);
--sidebar-primary: oklch(0.68 0.14 258);
--sidebar-primary-foreground: oklch(0.985 0 0);
--sidebar-accent: oklch(0.256 0.006 286);
--sidebar-accent-foreground: oklch(0.985 0 0);
--sidebar-border: oklch(1 0 0 / 10%);
--sidebar-ring: oklch(0.55 0.012 286);
}
@theme inline {
--font-sans: var(--font-inter), system-ui, sans-serif;
--color-background: var(--background);
--color-foreground: var(--foreground);
--color-card: var(--card);
--color-card-foreground: var(--card-foreground);
--color-popover: var(--popover);
--color-popover-foreground: var(--popover-foreground);
--color-primary: var(--primary);
--color-primary-foreground: var(--primary-foreground);
--color-secondary: var(--secondary);
--color-secondary-foreground: var(--secondary-foreground);
--color-muted: var(--muted);
--color-muted-foreground: var(--muted-foreground);
--color-accent: var(--accent);
--color-accent-foreground: var(--accent-foreground);
--color-destructive: var(--destructive);
--color-destructive-foreground: var(--destructive-foreground);
--color-success: var(--success);
--color-brand: var(--brand);
--color-brand-foreground: var(--brand-foreground);
--color-border: var(--border);
--color-input: var(--input);
--color-ring: var(--ring);
--color-chart-1: var(--chart-1);
--color-chart-2: var(--chart-2);
--color-chart-3: var(--chart-3);
--color-chart-4: var(--chart-4);
--color-chart-5: var(--chart-5);
--color-sidebar: var(--sidebar);
--color-sidebar-foreground: var(--sidebar-foreground);
--color-sidebar-primary: var(--sidebar-primary);
--color-sidebar-primary-foreground: var(--sidebar-primary-foreground);
--color-sidebar-accent: var(--sidebar-accent);
--color-sidebar-accent-foreground: var(--sidebar-accent-foreground);
--color-sidebar-border: var(--sidebar-border);
--color-sidebar-ring: var(--sidebar-ring);
--radius-sm: calc(var(--radius) - 4px);
--radius-md: calc(var(--radius) - 2px);
--radius-lg: var(--radius);
--radius-xl: calc(var(--radius) + 4px);
--animate-accordion-down: accordion-down 0.18s ease-out;
--animate-accordion-up: accordion-up 0.18s ease-out;
}
@keyframes accordion-down {
from {
height: 0;
}
to {
height: var(--radix-accordion-content-height);
}
}
@keyframes accordion-up {
from {
height: var(--radix-accordion-content-height);
}
to {
height: 0;
}
}
@layer base {
* {
@apply border-border outline-ring;
}
body {
@apply bg-background text-foreground antialiased;
}
}
/* ---------------------------------------------------------------
Markdown-Inhalte
--------------------------------------------------------------- */
.markdown-content {
@apply text-base leading-relaxed text-foreground;
overflow-wrap: anywhere;
}
.markdown-content > :first-child {
@apply mt-0;
}
.markdown-content > :last-child {
@apply mb-0;
}
.markdown-content h1 {
@apply mt-5 mb-2 text-lg font-semibold tracking-tight text-foreground;
}
.markdown-content h2 {
@apply mt-5 mb-2 text-base font-semibold tracking-tight text-foreground;
}
.markdown-content h3 {
@apply mt-4 mb-1.5 text-sm font-semibold tracking-tight text-foreground;
}
.markdown-content p {
@apply mb-3;
}
.markdown-content strong {
@apply font-semibold text-foreground;
}
.markdown-content em {
@apply italic;
}
.markdown-content code {
@apply rounded bg-muted px-1.5 py-0.5 font-mono text-xs;
}
.markdown-content ul {
@apply mb-3 list-disc space-y-1 pl-5;
}
.markdown-content ol {
@apply mb-3 list-decimal space-y-1 pl-5;
}
.markdown-content a {
@apply font-medium text-brand underline underline-offset-4 hover:no-underline;
}
.markdown-content hr {
@apply my-5 border-border;
}
.markdown-content blockquote {
@apply my-3 border-l-2 border-border pl-4 text-muted-foreground;
}
.markdown-table { max-width: 100%; overflow-x: auto; }
.markdown-content table { width: 100%; border-collapse: collapse; }
.markdown-content th, .markdown-content td { padding: .5rem; border: 1px solid var(--border); text-align: left; }
.markdown-content img { max-width: 100%; height: auto; }
html { scroll-padding-top: 6rem; }
@media (prefers-reduced-motion: reduce) {
*, *::before, *::after { animation-duration: 0.01ms !important; transition-duration: 0.01ms !important; scroll-behavior: auto !important; }
}
/* Seitliche Direktlinks; auf schmalen Ansichten im Dokumentfluss,
damit weder Inhalte noch fokussierte Bedienelemente verdeckt werden. */
.accessibility-rail {
display: flex;
justify-content: flex-end;
gap: .375rem;
max-width: 64rem;
margin: .75rem auto 0;
padding: 0 1rem;
}
.accessibility-rail-link {
display: flex;
align-items: center;
justify-content: center;
flex: 0 0 3rem;
width: 3rem;
height: 3rem;
border: 2px solid var(--foreground);
border-radius: .375rem;
background: var(--background);
color: var(--foreground);
box-shadow: 0 2px 6px rgb(0 0 0 / .06);
}
.accessibility-rail-link svg { width: 1.75rem; height: 1.75rem; }
.accessibility-rail-link:hover { background: var(--foreground); color: var(--background); }
.accessibility-rail-link:focus-visible {
outline: 3px solid var(--ring);
outline-offset: 3px;
}
@media (min-width: 80rem) {
.accessibility-rail {
position: fixed;
top: 35%;
right: 0;
z-index: 30;
flex-direction: column;
margin: 0;
padding: 0;
}
.accessibility-rail-link {
flex-basis: 3.5rem;
width: 3.5rem;
height: 3.5rem;
border-radius: .375rem 0 0 .375rem;
border-right: 0;
}
.accessibility-rail-link svg { width: 2rem; height: 2rem; }
.accessibility-rail-link:focus-visible { outline-offset: -5px; }
}
@media print { .accessibility-rail { display: none; } }