Files
windwiderstand/src/app.css
T
Peter Meier bedfe597ab
Deploy / verify (push) Successful in 41s
Deploy / deploy (push) Successful in 1m0s
style: update typography and enhance OrganisationsBlock layout
- Changed comment in app.css to reflect German terminology for quotes.
- Added Button component to OrganisationsBlock for improved call-to-action presentation.
- Adjusted button styling and layout in OrganisationsBlock for better responsiveness and visual consistency.
2026-04-21 13:39:57 +02:00

509 lines
11 KiB
CSS
Raw 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.
/* Windwiderstand Design System Fonts
Nur erlaubte Gewichte (02-typography.md: 300/400/500/600/700). 800/900 entfernt.
@fontsource setzt font-display: swap als Default — Text sichtbar während Font-Load. */
@import "@fontsource/inter/latin-300.css";
@import "@fontsource/inter/latin-400.css";
@import "@fontsource/inter/latin-500.css";
@import "@fontsource/inter/latin-600.css";
@import "@fontsource/inter/latin-700.css";
@import "@fontsource-variable/lora";
@import "tailwindcss";
/* ==========================================================================
Design Tokens Windwiderstand (01-colors, 02-typography, 06-tokens.json)
========================================================================== */
@theme {
/* Palette: Wald (Primary) */
--color-wald-50: #f0f5f1;
--color-wald-100: #d9e8dc;
--color-wald-200: #b3d1b9;
--color-wald-300: #7fb58a;
--color-wald-400: #4a9960;
--color-wald-500: #2d7a45;
--color-wald-600: #236335;
--color-wald-700: #1a4d28;
--color-wald-800: #12361c;
--color-wald-900: #0a2011;
/* Palette: Erde (Secondary) */
--color-erde-50: #faf6f1;
--color-erde-100: #f0e6d6;
--color-erde-200: #e0ccad;
--color-erde-300: #c9a87a;
--color-erde-400: #b08a52;
--color-erde-500: #8b6d3f;
--color-erde-600: #6e5530;
--color-erde-700: #524023;
--color-erde-800: #372b18;
--color-erde-900: #1c160c;
/* Palette: Himmel (Accent / Links) */
--color-himmel-50: #f2f5f7;
--color-himmel-100: #dce4ea;
--color-himmel-200: #b8c9d4;
--color-himmel-300: #8aaabb;
--color-himmel-400: #5e8ba2;
--color-himmel-500: #436e85;
--color-himmel-600: #34576a;
--color-himmel-700: #264150;
--color-himmel-800: #1a2c36;
--color-himmel-900: #0e181e;
/* Palette: Fire (Tertiary) */
--color-fire-50: #fdf2f1;
--color-fire-100: #fbe5e3;
--color-fire-200: #f7c9c5;
--color-fire-300: #f2a8a2;
--color-fire-400: #eb8078;
--color-fire-500: #e35651;
--color-fire-600: #d93d36;
--color-fire-700: #c82e27;
--color-fire-800: #b5231e;
--color-fire-900: #981b18;
--color-fire-950: #5d0f0b;
/* Palette: Stein (Neutrals) */
--color-stein-0: #ffffff;
--color-stein-50: #f7f8f7;
--color-stein-100: #eceeed;
--color-stein-200: #d5d8d6;
--color-stein-300: #b0b5b2;
--color-stein-400: #868c89;
--color-stein-500: #636966;
--color-stein-600: #4a4f4c;
--color-stein-700: #333735;
--color-stein-800: #1f2221;
--color-stein-900: #0f1110;
/* Semantic: Success, Warning, Error, Info */
--color-success: var(--color-wald-500);
--color-success-subtle: var(--color-wald-50);
--color-warning: #a6780a;
--color-warning-subtle: #fdf8ec;
--color-error: #b53629;
--color-error-subtle: #fdf2f1;
--color-info: var(--color-himmel-500);
--color-info-subtle: var(--color-himmel-50);
/* Button (Primary = Wald) für @apply bg-btn-bg, text-btn-txt, bg-btn-hover-bg */
--color-btn-bg: var(--color-wald-500);
--color-btn-hover-bg: var(--color-wald-600);
--color-btn-txt: #fff;
/* Link (Himmel) für @apply text-link */
--color-link: var(--color-himmel-500);
}
:root {
/* Typography Inter (primary), Lora (Zitate) */
--font-body: Inter, ui-sans-serif, system-ui, -apple-system, sans-serif;
--font-secondary: "Lora Variable", Lora, Georgia, "Times New Roman", serif;
/* Semantic (nur Light Theme) */
--bg-primary: #ffffff;
--bg-secondary: #f7f8f7;
--bg-tertiary: #eceeed;
--bg-elevated: #ffffff;
--text-primary: #1f2221;
--text-secondary: #636966;
--text-tertiary: #868c89;
--border-default: #d5d8d6;
--border-strong: #b0b5b2;
--accent: #2d7a45;
--accent-hover: #236335;
--link: #436e85;
/* Legacy / App-Aliase (weiterverwendet) */
--color-font: var(--text-primary);
--color-headings: var(--text-primary);
--color-font-highlight: var(--color-error);
--color-navigation: var(--color-stein-0);
--background-color: var(--bg-primary);
--color-text: var(--text-primary);
--color-link: var(--link);
--color-btn-bg: var(--accent);
--color-btn-hover-bg: var(--accent-hover);
--color-btn-txt: #fff;
/* Breakout-Bereich: Verlauf Wald-50 → Wald-100 */
--color-container-breakout: linear-gradient(
to bottom,
white,
var(--color-wald-50)
);
font-family: var(--font-body);
font-size: 1.125rem; /* 18px Body Large laut Design System */
line-height: 1.556;
color: var(--color-font);
}
html {
background: var(--background-color);
}
main {
background: var(--bg-primary);
}
/* ==========================================================================
Typography Type Scale (02-typography.md)
Erlaubte Gewichte: 300, 400, 500, 600, 700. Inter primary, Lora nur Zitate.
========================================================================== */
h1,
h2,
h3,
h4 {
color: var(--color-headings);
}
/* Mobile first, dann Tablet (768px), Desktop (1024px) */
h1 {
font-size: 1.75rem;
line-height: 2.125rem;
font-weight: 700;
letter-spacing: -0.015em;
}
h2 {
font-size: 1.375rem;
line-height: 1.75rem;
font-weight: 700;
letter-spacing: -0.01em;
}
h3 {
font-size: 1.25rem;
line-height: 1.625rem;
font-weight: 600;
letter-spacing: -0.005em;
}
h4 {
font-size: 1.125rem;
line-height: 1.5rem;
font-weight: 600;
}
@media (min-width: 768px) {
h1 {
font-size: 2.125rem;
line-height: 2.625rem;
}
h2 {
font-size: 1.5rem;
line-height: 2rem;
}
h3 {
font-size: 1.375rem;
line-height: 1.875rem;
}
h4 {
font-size: 1.125rem;
line-height: 1.625rem;
}
}
@media (min-width: 1024px) {
h1 {
font-size: 2.5rem;
line-height: 3rem;
}
h2 {
font-size: 1.75rem;
line-height: 2.25rem;
}
h3 {
font-size: 1.5rem;
line-height: 2rem;
}
}
/* Page-Titel (wie www.windwiderstand.de) */
.pageTitle h1 {
font-size: 1.5rem;
line-height: 2rem;
font-weight: 700;
margin-bottom: 0.5rem;
}
.pageTitle h2 {
font-size: 1rem;
line-height: 1.5rem;
font-weight: 500;
text-transform: none;
letter-spacing: 0;
}
.pageTitle h1,
.pageTitle h2 {
text-wrap: balance;
word-break: break-word;
overflow-wrap: break-word;
}
.pageTitle strong {
font-weight: 700;
}
@media (min-width: 768px) {
.pageTitle h1 {
font-size: 2.25rem;
line-height: 2.5rem;
}
.pageTitle h2 {
font-size: 1.5rem;
line-height: 2rem;
padding-left: 0.25rem;
}
}
@media (min-width: 1024px) {
.pageTitle h1 {
font-size: 3.75rem;
line-height: 1.14;
font-weight: 700;
letter-spacing: -0.02em;
}
.pageTitle h2 {
font-size: 1.875rem;
line-height: 2.25rem;
padding-left: 0.25rem;
}
}
/* Content-Links: Himmel (Design System Links) */
main a:not(.no-underline) {
color: var(--color-link);
text-decoration: underline;
}
main a:not(.no-underline):hover {
color: var(--color-himmel-600);
}
/* Lange URLs umbrechen, damit sie nicht über den Bildschirmrand ragen */
main a,
.markdown a {
overflow-wrap: break-word;
word-break: break-all;
}
main strong {
font-weight: 600;
}
main ul {
margin-left: 1em;
margin-bottom: 1em;
}
main ul li {
list-style: disc;
}
main ol {
margin-left: 1.1em;
margin-bottom: 1em;
}
main ol li {
list-style-type: decimal;
}
/* Buttons Wald (Primary) */
.btn-primary {
@apply inline-block no-underline transition-colors duration-200 font-light px-4 py-2 rounded-md shadow-sm bg-btn-bg text-btn-txt;
}
.btn-primary:hover {
@apply bg-btn-hover-bg;
}
/* Content-Blöcke */
.content p {
@apply mb-4;
}
.content h1,
.content h2,
.content h3,
.content h4 {
@apply mb-2;
}
/* Markdown: Abstände, Listen, Bilder, Tabellen (Stein-Palette) */
.markdown {
@apply min-w-0 overflow-x-auto;
}
.markdown h1,
.markdown h2,
.markdown h3,
.markdown h4,
.markdown hr {
@apply mt-4 mb-3;
}
.markdown hr {
@apply border-stein-200 border-dotted mb-4;
}
.markdown li,
.markdown li p {
@apply mt-0 mb-0;
}
.markdown p {
@apply mb-4;
}
.markdown ul,
.markdown ol {
@apply mt-0 mb-4;
}
.markdown li ul,
.markdown li ol {
@apply mb-0;
}
/* Markdown-Bilder: /cms-images-Transform, max-height begrenzt Höhe; Link öffnet Bild in neuem Tab */
.markdown img {
@apply max-w-full w-full my-2 border border-stein-200 rounded-md bg-stein-200 shadow-sm inline-block;
max-height: 30vh;
}
.markdown .markdown-image-link {
@apply inline-block;
}
.markdown table {
@apply w-full min-w-max border-collapse text-left text-sm mb-4;
}
.markdown thead {
@apply bg-stein-100;
}
.markdown th {
@apply px-3 py-2 font-medium border border-stein-200;
}
.markdown td {
@apply px-3 py-2 border border-stein-200;
}
.markdown tbody tr:nth-child(even) {
@apply bg-stein-50;
}
.markdown tbody tr:hover {
@apply bg-stein-100;
}
.markdown table a {
@apply text-link underline underline-offset-2 break-all;
}
.markdown table a:hover {
@apply text-himmel-600;
}
/* Code: Inline und Block (pre/code) lesbare Größe, Stein-Palette */
main code,
.content code,
.markdown code {
@apply font-mono bg-stein-100 text-stein-800 border border-stein-200;
@apply text-sm px-1.5 py-0.5;
}
main pre,
.content pre,
.markdown pre {
@apply mt-3 mb-4 overflow-x-auto rounded-md border border-stein-200 bg-stein-100 px-4 py-3 text-stein-800 leading-normal;
}
main pre code,
.content pre code,
.markdown pre code {
@apply border-0 bg-transparent p-0 text-inherit;
}
/* Container */
.container-custom {
@apply w-full mx-auto px-4 md:px-6;
}
@media (min-width: 768px) {
.container-custom {
max-width: 768px;
}
}
@media (min-width: 1024px) {
.container-custom {
max-width: 1024px;
}
}
@media (min-width: 1280px) {
.container-custom {
max-width: 1280px;
}
}
/* Zitate: Lora (Design System nur für Zitate) */
blockquote[data-block-type="quote"],
blockquote[data-block-type="quote"] p,
blockquote[data-block-type="quote"] cite {
font-family: var(--font-secondary);
}
.content-row + .content-row {
margin-top: 1.5rem;
}
/* Footer */
footer a,
.content-footer a {
color: var(--color-link);
}
footer a:hover,
.content-footer a:hover {
color: var(--color-himmel-600);
}
.container-breakout {
margin-left: calc(50% - 50vw + 0.01rem);
margin-right: calc(50% - 50vw + 0.01rem);
background: var(--color-container-breakout);
}
/* Kalender: Container Query links Kalender, rechts Eventblock ab ~500px Containerbreite */
.calendar-block {
container-type: inline-size;
container-name: calendar;
}
@container calendar (min-width: 600px) {
.calendar-block .calendar-grid-wrapper {
grid-template-columns: auto 1fr;
}
.calendar-block .calendar-column {
min-width: 300px;
max-width: 450px;
}
.calendar-block .calendar-events-wrapper {
position: relative;
}
.calendar-block .calendar-events-panel {
position: absolute;
inset: 0;
border-top: none;
border-left: 1px solid var(--color-stein-200);
}
}