Initialize client project from skeleton

Client: test
Generated: 2026-02-03T14:52:51.711Z
This commit is contained in:
Prototype Generator
2026-02-03 15:53:41 +01:00
parent 6c7ae06e58
commit c853b468fb
7 changed files with 1371 additions and 572 deletions
+74 -114
View File
@@ -1,54 +1,63 @@
@import "tailwindcss";
@import "./stylesheet.css";
/*
* CSS Variables - Single Source of Truth
* These variables are placeholders. Override them per project via design_tokens.json
*/
/* ═══════════════════════════════════════════════════════════ */
/* globals.css Single Source of Truth (CSS Custom Props) */
/* Generated by website-prototype-generator */
/* DO NOT add layout or component styles here. */
/* ═══════════════════════════════════════════════════════════ */
:root {
/* Colors - Placeholders */
--color-primary: #000000;
--color-secondary: #666666;
--color-accent: #0066cc;
/* ── Colors ──────────────────────────────────────── */
--color-primary: #2563eb;
--color-secondary: #64748b;
--color-accent: #f59e0b;
--color-neutral: #6b7280;
--color-background: #ffffff;
--color-foreground: #000000;
--color-muted: #f5f5f5;
--color-border: #e5e5e5;
--color-error: #dc2626;
--color-success: #16a34a;
--color-warning: #ca8a04;
--color-foreground: #0f172a;
--color-muted: #f3f4f6;
--color-muted-foreground: #4b505a;
--color-border: #e5e7eb;
--color-success: #10b981;
--color-warning: #f59e0b;
--color-error: #ef4444;
/* Typography - Placeholders */
--font-sans: system-ui, -apple-system, sans-serif;
--font-serif: Georgia, serif;
--font-mono: ui-monospace, monospace;
/* ── Typography – Families ────────────────────────── */
--font-heading: 'Inter', sans-serif;
--font-body: 'Inter', sans-serif;
--font-heading-weight: 700;
--font-body-weight: 400;
--font-size-xs: 0.75rem;
--font-size-sm: 0.875rem;
--font-size-base: 1rem;
--font-size-lg: 1.125rem;
--font-size-xl: 1.25rem;
--font-size-2xl: 1.5rem;
--font-size-3xl: 1.875rem;
--font-size-4xl: 2.25rem;
--font-size-5xl: 3rem;
/* ── Typography Scale ───────────────────────────── */
--text-xs: 0.75rem;
--text-xs-line-height: 1.125rem;
--text-xs-letter-spacing: 0;
--text-sm: 0.875rem;
--text-sm-line-height: 1.25rem;
--text-sm-letter-spacing: 0;
--text-base: 1rem;
--text-base-line-height: 1.5rem;
--text-base-letter-spacing: 0;
--text-lg: 1.125rem;
--text-lg-line-height: 1.75rem;
--text-lg-letter-spacing: 0;
--text-xl: 1.25rem;
--text-xl-line-height: 1.75rem;
--text-xl-letter-spacing: -0.01em;
--text-2xl: 1.5rem;
--text-2xl-line-height: 2rem;
--text-2xl-letter-spacing: -0.015em;
--text-3xl: 1.875rem;
--text-3xl-line-height: 2.25rem;
--text-3xl-letter-spacing: -0.02em;
--text-4xl: 2.25rem;
--text-4xl-line-height: 2.5rem;
--text-4xl-letter-spacing: -0.025em;
--text-5xl: 3rem;
--text-5xl-line-height: 1.1;
--text-5xl-letter-spacing: -0.03em;
--text-6xl: 3.75rem;
--text-6xl-line-height: 1.1;
--text-6xl-letter-spacing: -0.03em;
--font-weight-normal: 400;
--font-weight-medium: 500;
--font-weight-semibold: 600;
--font-weight-bold: 700;
--line-height-tight: 1.25;
--line-height-normal: 1.5;
--line-height-relaxed: 1.75;
/* Letter Spacing - Placeholders */
--letter-spacing-tight: -0.01em;
--letter-spacing-normal: 0em;
--letter-spacing-wide: 0.05em;
/* Spacing - Placeholders */
/* ── Spacing ─────────────────────────────────────── */
--spacing-xs: 0.25rem;
--spacing-sm: 0.5rem;
--spacing-md: 1rem;
@@ -56,80 +65,31 @@
--spacing-xl: 2rem;
--spacing-2xl: 3rem;
--spacing-3xl: 4rem;
--spacing-4xl: 6rem;
--spacing-5xl: 8rem;
--spacing-section: 5rem;
--spacing-container: 1200px;
--spacing-container-padding: 2rem;
--spacing-6xl: 10rem;
/* Border Radius - Placeholders */
/* ── Border Radius ───────────────────────────────── */
--radius-none: 0;
--radius-sm: 0.25rem;
--radius-md: 0.5rem;
--radius-lg: 1rem;
--radius-lg: 0.75rem;
--radius-xl: 1rem;
--radius-full: 9999px;
/* Shadows - Placeholders */
--shadow-sm: 0 1px 2px 0 rgb(0 0 0 / 0.05);
--shadow-md: 0 4px 6px -1px rgb(0 0 0 / 0.1);
--shadow-lg: 0 10px 15px -3px rgb(0 0 0 / 0.1);
--shadow-xl: 0 20px 25px -5px rgb(0 0 0 / 0.1);
/* ── Shadows ─────────────────────────────────────── */
--shadow-sm: 0 1px 3px 0 rgb(0 0 0 / 0.1);
--shadow-md: 0 4px 8px -1px rgb(0 0 0 / 0.1), 0 2px 4px -2px rgb(0 0 0 / 0.1);
--shadow-lg: 0 10px 20px -3px rgb(0 0 0 / 0.1), 0 4px 8px -4px rgb(0 0 0 / 0.1);
--shadow-xl: 0 20px 30px -5px rgb(0 0 0 / 0.1), 0 8px 12px -6px rgb(0 0 0 / 0.1);
/* Transitions - Placeholders */
--duration-fast: 150ms;
--duration-normal: 300ms;
--duration-slow: 500ms;
--easing-default: cubic-bezier(0.4, 0, 0.2, 1);
/* Z-Index Scale */
--z-base: 0;
--z-dropdown: 100;
--z-sticky: 200;
--z-fixed: 300;
--z-modal: 400;
--z-popover: 500;
--z-tooltip: 600;
/* Layout - Placeholders */
--container-max-width: 80rem;
--container-padding-x: clamp(1rem, 5vw, 2rem);
--section-spacing-y: var(--spacing-3xl);
}
/*
* Base Resets
*/
*,
*::before,
*::after {
box-sizing: border-box;
}
html {
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
text-rendering: optimizeLegibility;
}
body {
margin: 0;
padding: 0;
font-family: var(--font-sans);
font-size: var(--font-size-base);
line-height: var(--line-height-normal);
color: var(--color-foreground);
background-color: var(--color-background);
}
img,
video {
max-width: 100%;
height: auto;
display: block;
}
a {
color: inherit;
text-decoration: none;
}
button {
font: inherit;
cursor: pointer;
/* ── Breakpoints (reference) ─────────────────────── */
--breakpoint-sm: 640px;
--breakpoint-md: 768px;
--breakpoint-lg: 1024px;
--breakpoint-xl: 1280px;
--breakpoint-2xl: 1536px;
}
+246 -116
View File
@@ -1,164 +1,294 @@
/*
* Stylesheet
*
* Typography & structural rules only.
* NO component styles. NO layout sections.
* This file is imported by globals.css.
*
* Structure:
* 1. Typography
* 2. Structural Rules
* 3. Utility Classes
* 4. Animations
*/
/* ═══════════════════════════════════════════════════════════ */
/* stylesheet.css Structural framework */
/* Uses variables from globals.css (Single Source of Truth) */
/* Generated by website-prototype-generator */
/* */
/* REGELN: */
/* - Jede Section MUSS .section nutzen */
/* - Content MUSS in .container eingebettet sein */
/* - Buttons NUR über .btn + Variante */
/* - Typografie NUR über definierte Klassen/Heading-Tags */
/* - KEINE Inline-Styles, KEINE harten Pixelwerte */
/* ═══════════════════════════════════════════════════════════ */
/* ==========================================================================
1. Typography
========================================================================== */
@import "tailwindcss";
h1,
h2,
h3,
h4,
h5,
h6 {
font-weight: var(--font-weight-bold);
line-height: var(--line-height-tight);
letter-spacing: var(--letter-spacing-tight);
margin-top: 0;
margin-bottom: var(--spacing-md);
/* ── Base Resets ───────────────────────────────────── */
*, *::before, *::after {
box-sizing: border-box;
margin: 0;
padding: 0;
}
h1 {
font-size: var(--font-size-4xl);
html {
scroll-behavior: smooth;
-webkit-font-smoothing: antialiased;
-moz-osx-font-smoothing: grayscale;
}
h2 {
font-size: var(--font-size-3xl);
body {
font-family: var(--font-body);
font-weight: var(--font-body-weight);
color: var(--color-foreground);
background-color: var(--color-background);
line-height: var(--text-base-line-height);
font-size: var(--text-base);
}
h3 {
font-size: var(--font-size-2xl);
/* ── Section & Container (PFLICHT-Bausteine) ────── */
/* Jede Seite MUSS aus <section class="section"> bestehen. */
/* Innerhalb jeder Section MUSS ein <div class="container"> */
/* den Content umschließen. */
.section {
position: relative;
width: 100%;
padding-block: var(--spacing-section);
}
h4 {
font-size: var(--font-size-xl);
.section--sm {
padding-block: var(--spacing-2xl);
}
h5 {
font-size: var(--font-size-lg);
.section--lg {
padding-block: var(--spacing-5xl);
}
h6 {
font-size: var(--font-size-base);
font-weight: var(--font-weight-semibold);
.section--hero {
padding-block: var(--spacing-5xl) var(--spacing-section);
min-height: 80vh;
display: flex;
align-items: center;
}
p {
margin-top: 0;
margin-bottom: var(--spacing-md);
line-height: var(--line-height-normal);
.section--flush {
padding-block: 0;
}
small {
font-size: var(--font-size-sm);
.container {
width: 100%;
max-width: var(--spacing-container);
margin-inline: auto;
padding-inline: var(--spacing-container-padding);
}
strong,
b {
font-weight: var(--font-weight-bold);
.container--narrow {
max-width: 48rem;
}
/* Prevent orphans and widows in text blocks */
p,
li,
dd {
orphans: 2;
widows: 2;
.container--wide {
max-width: 90rem;
}
/* Lists */
ul,
ol {
margin-top: 0;
margin-bottom: var(--spacing-md);
padding-left: var(--spacing-lg);
/* ── Headings (Typography System) ─────────────────── */
/* Headlines MÜSSEN über HTML-Tags (h1h6) oder */
/* .heading-* Klassen gestylt werden. */
/* VERBOTEN: style={{ fontSize: ... }} oder harte px */
h1, h2, h3, h4, h5, h6 {
font-family: var(--font-heading);
font-weight: var(--font-heading-weight);
color: var(--color-foreground);
}
li {
margin-bottom: var(--spacing-xs);
h1, .heading-1 {
font-size: var(--text-5xl);
line-height: var(--text-5xl-line-height);
letter-spacing: var(--text-5xl-letter-spacing);
}
/* Blockquote */
blockquote {
margin: 0 0 var(--spacing-md);
padding-left: var(--spacing-lg);
border-left: 3px solid var(--color-border);
font-style: italic;
h2, .heading-2 {
font-size: var(--text-4xl);
line-height: var(--text-4xl-line-height);
letter-spacing: var(--text-4xl-letter-spacing);
}
/* Code */
code {
font-family: var(--font-mono);
font-size: var(--font-size-sm);
h3, .heading-3 {
font-size: var(--text-3xl);
line-height: var(--text-3xl-line-height);
letter-spacing: var(--text-3xl-letter-spacing);
}
pre {
margin-top: 0;
margin-bottom: var(--spacing-md);
overflow-x: auto;
h4, .heading-4 {
font-size: var(--text-2xl);
line-height: var(--text-2xl-line-height);
letter-spacing: var(--text-2xl-letter-spacing);
}
pre code {
font-size: var(--font-size-sm);
h5, .heading-5 {
font-size: var(--text-xl);
line-height: var(--text-xl-line-height);
letter-spacing: var(--text-xl-letter-spacing);
}
/* ==========================================================================
2. Structural Rules
========================================================================== */
h6, .heading-6 {
font-size: var(--text-lg);
line-height: var(--text-lg-line-height);
letter-spacing: var(--text-lg-letter-spacing);
}
/* ── Body Text Utilities ───────────────────────────── */
.text-xs { font-size: var(--text-xs); line-height: var(--text-xs-line-height); }
.text-sm { font-size: var(--text-sm); line-height: var(--text-sm-line-height); }
.text-base { font-size: var(--text-base); line-height: var(--text-base-line-height); }
.text-lg { font-size: var(--text-lg); line-height: var(--text-lg-line-height); }
.text-xl { font-size: var(--text-xl); line-height: var(--text-xl-line-height); }
.text-muted {
color: var(--color-muted-foreground);
}
.lead {
font-size: var(--text-xl);
line-height: var(--text-xl-line-height);
color: var(--color-muted-foreground);
}
/* ── Button System (EINZIGER erlaubter Weg) ──────── */
/* Buttons MÜSSEN eine der folgenden Klassen nutzen: */
/* .btn-primary Hauptaktion (CTA) */
/* .btn-secondary Sekundäraktion */
/* .btn-outline Umrandeter Button */
/* .btn-ghost Textartig, minimal */
/* VERBOTEN: Eigene bg/text-Kombinationen auf <button> */
.btn {
display: inline-flex;
align-items: center;
justify-content: center;
gap: var(--spacing-sm);
padding: var(--spacing-sm) var(--spacing-lg);
font-family: var(--font-body);
font-size: var(--text-base);
font-weight: 500;
line-height: var(--text-base-line-height);
border-radius: var(--radius-md);
border: 2px solid transparent;
cursor: pointer;
transition: all 0.2s ease;
text-decoration: none;
white-space: nowrap;
}
.btn:focus-visible {
outline: 2px solid var(--color-primary);
outline-offset: 2px;
}
.btn:disabled {
opacity: 0.5;
cursor: not-allowed;
}
.btn-primary {
background-color: var(--color-primary);
color: var(--color-background);
border-color: var(--color-primary);
}
.btn-primary:hover {
filter: brightness(0.9);
}
.btn-secondary {
background-color: var(--color-secondary);
color: var(--color-background);
border-color: var(--color-secondary);
}
.btn-secondary:hover {
filter: brightness(0.9);
}
.btn-outline {
background-color: transparent;
color: var(--color-primary);
border-color: var(--color-primary);
}
.btn-outline:hover {
background-color: var(--color-primary);
color: var(--color-background);
}
.btn-ghost {
background-color: transparent;
color: var(--color-foreground);
border-color: transparent;
}
.btn-ghost:hover {
background-color: var(--color-muted);
}
.btn-sm {
padding: var(--spacing-xs) var(--spacing-md);
font-size: var(--text-sm);
}
.btn-lg {
padding: var(--spacing-md) var(--spacing-xl);
font-size: var(--text-lg);
}
/* ── Card Component ─────────────────────────────── */
.card {
background-color: var(--color-background);
border: 1px solid var(--color-border);
border-radius: var(--radius-lg);
padding: var(--spacing-xl);
box-shadow: var(--shadow-sm);
}
/* ── Links ───────────────────────────────────────── */
a {
color: var(--color-primary);
text-decoration: none;
}
a:hover {
text-decoration: underline;
}
/* ── Images ──────────────────────────────────────── */
img, video, svg {
display: block;
max-width: 100%;
height: auto;
}
/* ── Focus ───────────────────────────────────────── */
/* Focus styles for keyboard navigation */
:focus-visible {
outline: 2px solid var(--color-primary);
outline-offset: 2px;
}
/* Selection */
/* ── Selection ──────────────────────────────────── */
::selection {
background-color: var(--color-primary);
color: var(--color-background);
}
/* Reduced motion */
@media (prefers-reduced-motion: reduce) {
*,
*::before,
*::after {
animation-duration: 0.01ms !important;
animation-iteration-count: 1 !important;
transition-duration: 0.01ms !important;
scroll-behavior: auto !important;
}
/* ── Spacing Utilities ──────────────────────────── */
.stack-xs > * + * { margin-top: var(--spacing-xs); }
.stack-sm > * + * { margin-top: var(--spacing-sm); }
.stack-md > * + * { margin-top: var(--spacing-md); }
.stack-lg > * + * { margin-top: var(--spacing-lg); }
.stack-xl > * + * { margin-top: var(--spacing-xl); }
.stack-2xl > * + * { margin-top: var(--spacing-2xl); }
/* ── Divider ───────────────────────────────────── */
.divider {
border: none;
border-top: 1px solid var(--color-border);
margin-block: var(--spacing-2xl);
}
/* ==========================================================================
3. Utility Classes
========================================================================== */
.visually-hidden {
position: absolute;
width: 1px;
height: 1px;
padding: 0;
margin: -1px;
overflow: hidden;
clip: rect(0, 0, 0, 0);
white-space: nowrap;
border: 0;
}
/* ==========================================================================
4. Animations
========================================================================== */
/* Animations are added per project */