Files
mission-control-v2/frontend/src/index.css
T
HitonabiandClaude Opus 5.5 907289d7dc umbau(boxwart): neue Oberflaeche im Cockpit-Stil (Richtung A), Werkzeuge angehoben
Drei Seiten statt zehn: Start, Updates, Modelle — am PC mit Kopfnavigation, am Handy
mit Leiste unten. Umsetzung von Mockup A („Cockpit“), vom User am 23.09. gewaehlt.

- Start: Hauptwarnleuchte + 8 Warnlampen, Rundinstrumente mit Live-Werten aus dem
  Strom (Speicher, Temperatur, Platte) und Laufzeit-Zaehlwerk, Checkliste der
  Waechter-Hinweise mit ihren Knoepfen, Flugplan (heute gelaufen / geplant), Radar-Kasten.
- Updates: Bausteine mit „Laeuft → Neu“ und Zusammenfassung, laufende Auftraege,
  Verlauf der Sonntagslaeufe (neu: GET /api/updates/verlauf), Sicherungen samt
  Zurueckspielen mit Rueckfrage.
- Modelle: Speicherbalken, Rollen Hirn/Coder/Dritte Rolle, wer die Modelle nutzt
  (7 Tage + 24 h je Stunde), Modell-Radar, weitere Eintraege, Modelle selbst suchen.
- Schubladen: Dienste mit Protokoll und Neustart, Einstellungen (HF-Zugang), Hermes-Link.
- Werkzeuge: Vite 8, React 19.3 mit React Compiler 1.0 (Babel), vitest 5, Tailwind 4.3,
  shadcn 4 (Radix) fuer Dialog/Schublade/Knopf, Schriften Barlow/Barlow Condensed/
  JetBrains Mono. Entfernt: recharts, cmdk, Kraftgraph, zustand, Inter, Space Grotesk.
- Startbuendel 115 KB gzip (Budget 140); Updates/Modelle/Schubladen laden bei Bedarf.
- 16 Oberflaechen-Tests (Instrument-Bogen, Hauptleuchte, Zeitformate, Versionen).

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
2026-09-23 21:39:07 +02:00

172 lines
5.1 KiB
CSS

@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; }
}