@import "tailwindcss"; @import "tw-animate-css"; @import "shadcn/tailwind.css"; @import "@fontsource/barlow/400.css"; @import "@fontsource/barlow/500.css"; @import "@fontsource/barlow/600.css"; @import "@fontsource/barlow-condensed/500.css"; @import "@fontsource/barlow-condensed/600.css"; @import "@fontsource/barlow-condensed/700.css"; @import "@fontsource/jetbrains-mono/400.css"; @import "@fontsource/jetbrains-mono/500.css"; /* * Cockpit (Box-Wart-Umbau 09/2026, Richtung A): dunkles Instrumentenbrett. * Bernstein = Achtung (Hinweise, Hauptknöpfe), Grün = läuft, Cyan = Info/Anzeige, * Rot = Störung. Farbe erscheint nur, wenn etwas ist — im Normalfall bleibt es ruhig. * Nur ein dunkles Design (User-Entscheid 23.09.), daher alle Werte direkt auf :root. */ @custom-variant dark (&:is(.dark *)); @theme inline { --font-sans: "Barlow", "Segoe UI", system-ui, sans-serif; --font-heading: "Barlow Condensed", "Barlow", "Segoe UI", sans-serif; --font-anzeige: "Barlow Condensed", "Barlow", "Segoe UI", sans-serif; --font-mono: "JetBrains Mono", ui-monospace, "Cascadia Mono", Consolas, monospace; --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-border: var(--border); --color-input: var(--input); --color-ring: var(--ring); --color-panel: var(--panel); --color-erhaben: var(--erhaben); --color-linie: var(--linie); --color-linie-stark: var(--linie-stark); --color-text-2: var(--text-2); --color-text-3: var(--text-3); --color-bernstein: var(--bernstein); --color-bernstein-hell: var(--bernstein-hell); --color-bernstein-grund: var(--bernstein-grund); --color-bernstein-lampe: var(--bernstein-lampe); --color-gruen: var(--gruen); --color-gruen-text: var(--gruen-text); --color-gruen-grund: var(--gruen-grund); --color-gruen-rand: var(--gruen-rand); --color-cyan: var(--cyan); --color-cyan-text: var(--cyan-text); --color-cyan-grund: var(--cyan-grund); --color-cyan-rand: var(--cyan-rand); --color-rot: var(--rot); --color-rot-text: var(--rot-text); --color-rot-grund: var(--rot-grund); --color-rot-rand: var(--rot-rand); --color-aus-grund: var(--aus-grund); --color-aus-rand: var(--aus-rand); --color-aus-text: var(--aus-text); --radius-sm: calc(var(--radius) * 0.6); --radius-md: calc(var(--radius) * 0.8); --radius-lg: var(--radius); --radius-xl: calc(var(--radius) * 1.4); --radius-2xl: calc(var(--radius) * 1.8); } :root { color-scheme: dark; --radius: 0.625rem; --background: #0e1012; --foreground: #e6eaee; --card: #15181b; --card-foreground: #e6eaee; --popover: #15181b; --popover-foreground: #e6eaee; --primary: #ffb020; --primary-foreground: #1a1300; --secondary: #1c2126; --secondary-foreground: #e6eaee; --muted: #1c2126; --muted-foreground: #8b949e; --accent: #1c2126; --accent-foreground: #e6eaee; --destructive: #ff5a4f; --border: #262b30; --input: #3a4148; --ring: #5cc8ff; --panel: #15181b; --erhaben: #1c2126; --linie: #262b30; --linie-stark: #3a4148; --text-2: #aeb6bf; --text-3: #8b949e; --bernstein: #ffb020; --bernstein-hell: #ffc24d; --bernstein-grund: #2a1e05; --bernstein-lampe: #3a2a08; --gruen: #3ddc8a; --gruen-text: #7cc9a0; --gruen-grund: #0f2319; --gruen-rand: #1f5a3b; --cyan: #5cc8ff; --cyan-text: #93d5f8; --cyan-grund: #0c2230; --cyan-rand: #2f7fb0; --rot: #ff5a4f; --rot-text: #ff9a92; --rot-grund: #2e0f0d; --rot-rand: #a33a33; --aus-grund: #171b1f; --aus-rand: #2e343a; --aus-text: #9aa3ad; } @layer base { * { @apply border-border outline-ring/50; } html { @apply font-sans; -webkit-font-smoothing: antialiased; } body { @apply bg-background text-foreground; margin: 0; } :focus-visible { outline: 2px solid var(--cyan); outline-offset: 2px; } } @layer utilities { /* Beschriftung wie auf einem Instrumentenbrett: schmal, groß, gesperrt. */ .schild { font-family: var(--font-anzeige); font-weight: 600; text-transform: uppercase; letter-spacing: 0.16em; } .ziffern { font-family: var(--font-mono); font-variant-numeric: tabular-nums; } } /* Leuchtende Lampen: nur ein ruhiges Atmen, und nur wenn das System Bewegung erlaubt. */ @keyframes lampe-atmen { 0%, 100% { box-shadow: 0 0 10px color-mix(in srgb, var(--bernstein) 25%, transparent); } 50% { box-shadow: 0 0 22px color-mix(in srgb, var(--bernstein) 45%, transparent); } } @media (prefers-reduced-motion: no-preference) { .lampe-atmet { animation: lampe-atmen 3.2s ease-in-out infinite; } }