Initialize client project from skeleton
Client: test Generated: 2026-02-03T14:52:51.711Z
This commit is contained in:
+74
-114
@@ -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
@@ -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 (h1–h6) 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 */
|
||||
|
||||
Reference in New Issue
Block a user