purinto-website/assets/css/tokens.css
Denise Krölling 1a63f66463 Website der Purinto GmbH aufsetzen
Statische Website ohne Build-Schritt: reines HTML, CSS und Vanilla-JS,
lauffaehig auf beliebigem Webspace.

Neun Seiten: Startseite, Dienstleistungen, Projekte, Ueber uns, Kontakt
sowie Impressum, Datenschutz, Danke-Seite und 404.

Kernstueck der Startseite ist die Stueckzahl-Achse: ein logarithmischer
Regler von 1 bis 100.000 Stueck, der zur gewaehlten Menge Verfahren,
Werkzeugkosten, Lieferzeit und Anwendungsfall ausgibt. Die dritte Zone
ist optisch zurueckgenommen, weil Serienspritzguss ueber Partnerbetriebe
laeuft und nicht zum eigenen Leistungsumfang gehoert. Der Leistungsumfang
ist durchgehend auf FDM, SLA und SLA-gedruckte Formeinsaetze beschraenkt.

Gestaltung nach Vorgabe: Anthrazit, Salbeigruen und Flieder als Akzent.
Archivo, Public Sans und IBM Plex Mono werden lokal ausgeliefert statt
ueber die Google-CDN eingebunden.

Kontaktformular ueber Web3Forms mit Client-Validierung; der Access-Key
ist noch ein Platzhalter. Alle Firmen- und Projektinhalte sind sichtbar
als Platzhalter markiert, die Uebergabe-Checkliste steht in der README.

Geprueft: WCAG-AA-Kontraste auf allen Seiten, kein horizontaler Ueberlauf
von 320 bis 1920 px, Tastaturbedienung der Achse, feste Zeilenzahl der
Hero-Headline.

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-08-13 13:07:08 +02:00

184 lines
6.2 KiB
CSS
Raw Blame History

This file contains invisible Unicode characters

This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

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.

/* ==========================================================================
Purinto GmbH — Design-Tokens
Einzige Quelle für Farben, Typografie, Abstände und Radien.
Farbvorgabe: helleres Anthrazit + Salbeigrün + Flieder als Akzent.
========================================================================== */
:root {
/* --- Anthrazit: trägt den Engineering-Ernst ---------------------------- */
--anthrazit-900: #22282b;
--anthrazit-800: #2e3538;
--anthrazit-700: #3c4347; /* "helleres Anthrazit" – dunkle Sektionen */
--anthrazit-600: #525b5f;
--anthrazit-500: #626b6f; /* auf --dunst geprüft: 5,03:1 (WCAG AA) */
--anthrazit-400: #8b9296;
--anthrazit-300: #aeb5b7;
--anthrazit-200: #c9cfd0;
--anthrazit-100: #e3e7e6;
/* --- Salbei: trägt die Nachhaltigkeit --------------------------------- */
--salbei-800: #4a5d50;
--salbei-700: #5e7565;
--salbei-600: #75907c;
--salbei-500: #8fa894;
--salbei-400: #a9bdad;
--salbei-300: #c2d0c4;
--salbei-200: #d6e0d6;
--salbei-100: #e8eee8;
/* --- Flieder: der freundliche, unerwartete Ton. Sparsam einsetzen. ----- */
--flieder-900: #493a6b;
--flieder-800: #5b4880; /* CTA-Fläche, weißer Text ~6,5:1 */
--flieder-700: #6e5a96; /* Links, Fokusring */
--flieder-600: #8570ae;
--flieder-500: #9b85c4;
--flieder-400: #b09fd5;
--flieder-300: #c6b5e3; /* heller Marker auf dunklem Grund */
--flieder-200: #dcd2ef;
--flieder-100: #eee9f7;
/* --- Neutrale Flächen ------------------------------------------------- */
--dunst: #f5f6f3;
--papier: #ffffff;
/* --- Semantische Zuweisungen ------------------------------------------ */
--bg: var(--dunst);
--bg-karte: var(--papier);
--bg-dunkel: var(--anthrazit-700);
--bg-dunkel-tief: var(--anthrazit-900);
--bg-salbei: var(--salbei-100);
--text: var(--anthrazit-900);
--text-leise: var(--anthrazit-500);
--text-invers: #f2f4f1;
--text-invers-leise: #b6bfbc;
/* Gedämpfter Text auf --bg-dunkel. Nicht --anthrazit-400 verwenden:
das ergibt dort nur 3,19:1 und fällt unter AA. */
--text-invers-schwach: var(--anthrazit-300);
--linie: var(--anthrazit-200);
--linie-zart: var(--anthrazit-100);
--linie-invers: rgba(255, 255, 255, 0.16);
--akzent: var(--flieder-800);
--akzent-hover: var(--flieder-900);
--akzent-hell: var(--flieder-300);
--fokus: var(--flieder-700);
/* --- Typografie -------------------------------------------------------
Archivo in expandierter Breite gibt der weichen Salbei-Flieder-Palette
ein hartes Rückgrat. Verdana als Fallback, weil ebenfalls breit läuft. */
--f-display: "Archivo", "Archivo Fallback", Verdana, "DejaVu Sans", sans-serif;
--f-text: "Public Sans", -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto,
Helvetica, Arial, sans-serif;
--f-mono: "IBM Plex Mono", ui-monospace, "Cascadia Mono", Consolas, "SF Mono",
"Liberation Mono", monospace;
/* Fließende Typo-Skala */
/* Hergeleitet, nicht geschätzt: Die Hero-Headline hat feste Umbrüche und
soll immer genau drei Zeilen haben. Ihre längste Zeile misst 10,26 em.
Neben dem Logo (3,06 em breit) plus Spalten­abstand muss also gelten:
10,26 F <= Spaltenbreite. Daraus ergeben sich Minimum, Steigung und
Maximum unten. Wird der Headline-Text geändert, neu rechnen. */
--t-3xl: clamp(2.1rem, 0.05rem + 6.2vw, 5rem);
--t-2xl: clamp(1.95rem, 1.45rem + 2.2vw, 3.3rem);
--t-xl: clamp(1.45rem, 1.28rem + 0.85vw, 2.05rem);
--t-lg: clamp(1.15rem, 1.07rem + 0.36vw, 1.4rem);
--t-md: 1.0625rem;
--t-sm: 0.9375rem;
--t-xs: 0.8125rem;
--t-2xs: 0.6875rem;
--lh-eng: 1.02;
/* Fortsetzung siehe Media Query am Dateiende: Unter 500px gilt für --t-3xl
eine eigene, größere Skala, weil dort vier Headline-Zeilen erlaubt sind. */
--lh-kopf: 1.14;
--lh-normal: 1.62;
--ls-display: -0.022em;
--ls-mono: 0.11em;
/* --- Abstände ---------------------------------------------------------- */
--s-1: 0.25rem;
--s-2: 0.5rem;
--s-3: 0.75rem;
--s-4: 1rem;
--s-5: 1.5rem;
--s-6: 2rem;
--s-7: 3rem;
--s-8: 4rem;
--s-9: 6rem;
--s-10: 8rem;
--sektion-y: clamp(3.5rem, 2rem + 6vw, 7rem);
--breite: 1200px;
--breite-eng: 740px;
--rand: clamp(1.15rem, 0.6rem + 2.4vw, 2.5rem);
/* --- Radien: zurückhaltend, technisch ---------------------------------- */
--r-1: 2px;
--r-2: 4px;
--r-3: 8px;
--r-4: 14px;
/* --- Schatten ---------------------------------------------------------- */
--schatten-1: 0 1px 2px rgba(34, 40, 43, 0.05),
0 2px 8px rgba(34, 40, 43, 0.04);
--schatten-2: 0 2px 4px rgba(34, 40, 43, 0.06),
0 14px 30px rgba(34, 40, 43, 0.08);
--dauer: 220ms;
--kurve: cubic-bezier(0.2, 0.7, 0.3, 1);
/* --- Schichtlinien: Textur, die auf den additiven Schichtaufbau anspielt.
Wird sehr sparsam als Hintergrund eingesetzt. -------------------- */
--schichten: repeating-linear-gradient(
to bottom,
rgba(255, 255, 255, 0.05) 0,
rgba(255, 255, 255, 0.05) 1px,
transparent 1px,
transparent 7px
);
}
/* Unter 500px darf die Hero-Headline vier Zeilen haben. Die festen Umbrüche
sind dort ausgeblendet (siehe .hero__umbruch), sie bricht also frei um.
Dadurch entfällt die enge Grenze aus der längsten Einzelzeile, und die
Schrift kann auf dem Telefon deutlich größer stehen. */
@media (max-width: 499px) {
:root {
--t-3xl: clamp(1.75rem, -0.07rem + 9.1vw, 2.8rem);
}
}
/* Schriften werden lokal ausgeliefert – keine Einbindung über die Google-CDN,
die in AT/DE datenschutzrechtlich angreifbar ist (LG München I, 3 O 17493/20).
Fehlen die Dateien, greifen automatisch die Fallbacks oben. */
@font-face {
font-family: "Archivo";
src: url("../fonts/archivo-variable.woff2") format("woff2-variations");
font-weight: 100 900;
font-stretch: 62% 125%;
font-display: swap;
}
@font-face {
font-family: "Public Sans";
src: url("../fonts/public-sans-variable.woff2") format("woff2-variations");
font-weight: 100 900;
font-display: swap;
}
@font-face {
font-family: "IBM Plex Mono";
src: url("../fonts/ibm-plex-mono-regular.woff2") format("woff2");
font-weight: 400;
font-display: swap;
}
@font-face {
font-family: "IBM Plex Mono";
src: url("../fonts/ibm-plex-mono-medium.woff2") format("woff2");
font-weight: 500;
font-display: swap;
}