Initially adds the current state of the project
73
README.md
Normal file
|
|
@ -0,0 +1,73 @@
|
|||
# Tischlerei Staffenberger – Kleine Firmenwebsite
|
||||
|
||||
Kleine, statische Website für einen selbstständigen Tischler (Ein-Mann-Betrieb).
|
||||
Technik: reines HTML, CSS und JavaScript ohne Frameworks.
|
||||
|
||||
## Ordnerstruktur
|
||||
|
||||
```
|
||||
Tischlerei-Staffenberger/
|
||||
├── index.html # Startseite (Landing Page)
|
||||
├── pictures.html # Bildergalerie mit Filter
|
||||
├── shop.html # Kleiner Shop (Anfragen per E-Mail)
|
||||
├── impressum.html # Impressum mit Platzhalterdaten
|
||||
├── README.md
|
||||
├── css/
|
||||
│ └── style.css # Ein zentrales Stylesheet
|
||||
├── js/
|
||||
│ └── script.js # Navigation, Galerie-Filter, Shop-Anfragen
|
||||
└── images/
|
||||
└── .gitkeep # Ordner für eigene Bilder (optional)
|
||||
```
|
||||
|
||||
## Lokal ausführen
|
||||
|
||||
Die Seite besteht nur aus statischen Dateien. Sie können sie so starten:
|
||||
|
||||
### Option 1: Direkt im Browser öffnen
|
||||
|
||||
- Doppelklick auf `index.html` oder
|
||||
- Datei in den Browser ziehen
|
||||
|
||||
**Hinweis:** Einige Browser blockieren bei `file://` das Laden externer Ressourcen (z.B. Google Fonts, Platzhalter-Bilder von picsum.photos). Dann Option 2 nutzen.
|
||||
|
||||
### Option 2: Mit lokalem Webserver (empfohlen)
|
||||
|
||||
Im Projektordner in der Kommandozeile:
|
||||
|
||||
**Mit Python 3:**
|
||||
```bash
|
||||
# Ab Python 3.x
|
||||
python -m http.server 8000
|
||||
```
|
||||
|
||||
**Mit Node.js (npx):**
|
||||
```bash
|
||||
npx serve .
|
||||
```
|
||||
|
||||
**Mit PHP:**
|
||||
```bash
|
||||
php -S localhost:8000
|
||||
```
|
||||
|
||||
Anschließend im Browser aufrufen: **http://localhost:8000**
|
||||
|
||||
Von dort aus funktionieren alle Links, Schriftarten und Platzhalter-Bilder.
|
||||
|
||||
## Anpassungen
|
||||
|
||||
- **Impressum & Kontakt:** In `impressum.html` und im Footer aller Seiten die Platzhalterdaten (Name, Adresse, Telefon, E-Mail, USt-ID) durch echte Angaben ersetzen.
|
||||
- **Shop-Anfragen:** In `js/script.js` die E-Mail-Adresse in der Zeile mit `mailto:` durch Ihre echte Adresse ersetzen.
|
||||
- **Bilder:** Aktuell werden Platzhalter von [picsum.photos](https://picsum.photos) genutzt. Eigene Fotos in den Ordner `images/` legen und in `pictures.html` bzw. `shop.html` die `src`-Pfade anpassen (z.B. `images/kuche-1.jpg`).
|
||||
|
||||
## Seitenüberblick
|
||||
|
||||
| Seite | Inhalt |
|
||||
|-------------|--------|
|
||||
| **Start** | Banner, Willkommenstext, Über mich, Leistungen (Möbel, Küchen, Außen), CTA „Kontakt“. |
|
||||
| **Bilder** | Galerie mit Filter: Alle / Küche / Außenbereich / Sonderanfertigung. |
|
||||
| **Shop** | 6 Beispielprodukte mit Bild, Beschreibung, Preis und Button „Anfragen“ (öffnet E-Mail). |
|
||||
| **Impressum** | Anbieter, Kontakt, USt-ID, Verantwortlichkeit, Haftungsausschluss (Platzhalter). |
|
||||
|
||||
Navigation ist auf allen Seiten gleich; die aktuelle Seite wird hervorgehoben.
|
||||
720
css/style.css
Normal file
|
|
@ -0,0 +1,720 @@
|
|||
/* ============================================
|
||||
Tischlerei Staffenberger - Main Stylesheet
|
||||
Traditional, warm, responsive design
|
||||
============================================ */
|
||||
|
||||
/* --- Google Fonts --- */
|
||||
@import url('https://fonts.googleapis.com/css2?family=Cormorant+Garamond:ital,wght@0,400;0,600;0,700;1,400&family=Source+Sans+3:wght@400;500;600&display=swap');
|
||||
|
||||
/* --- CSS Custom Properties --- */
|
||||
:root {
|
||||
/* Warm wood & earth tones */
|
||||
--color-wood-dark: #3d2914;
|
||||
--color-wood-medium: #5c4033;
|
||||
--color-wood-light: #8b7355;
|
||||
--color-beige: #e8dfd4;
|
||||
--color-beige-light: #f5f0e8;
|
||||
--color-cream: #faf8f5;
|
||||
/* Accent */
|
||||
--color-accent: #2d4a3e;
|
||||
--color-accent-hover: #3d5a4e;
|
||||
/* Neutrals */
|
||||
--color-text: #2c2419;
|
||||
--color-text-muted: #5a5248;
|
||||
--color-border: #d4c9bc;
|
||||
/* Typography */
|
||||
--font-heading: 'Cormorant Garamond', Georgia, serif;
|
||||
--font-body: 'Source Sans 3', 'Segoe UI', sans-serif;
|
||||
/* Spacing & layout */
|
||||
--max-width: 960px;
|
||||
--spacing-xs: 0.5rem;
|
||||
--spacing-sm: 1rem;
|
||||
--spacing-md: 1.5rem;
|
||||
--spacing-lg: 2rem;
|
||||
--spacing-xl: 3rem;
|
||||
--radius: 4px;
|
||||
--shadow: 0 2px 8px rgba(61, 41, 20, 0.08);
|
||||
}
|
||||
|
||||
/* --- Reset & Base --- */
|
||||
*,
|
||||
*::before,
|
||||
*::after {
|
||||
box-sizing: border-box;
|
||||
}
|
||||
|
||||
html {
|
||||
scroll-behavior: smooth;
|
||||
}
|
||||
|
||||
body {
|
||||
margin: 0;
|
||||
font-family: var(--font-body);
|
||||
font-size: 1rem;
|
||||
line-height: 1.6;
|
||||
color: var(--color-text);
|
||||
background-color: var(--color-cream);
|
||||
}
|
||||
|
||||
img {
|
||||
max-width: 100%;
|
||||
height: auto;
|
||||
display: block;
|
||||
}
|
||||
|
||||
a {
|
||||
color: var(--color-accent);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
a:hover {
|
||||
color: var(--color-accent-hover);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* --- Layout wrapper --- */
|
||||
.layout {
|
||||
max-width: var(--max-width);
|
||||
margin: 0 auto;
|
||||
padding: 0 var(--spacing-md);
|
||||
}
|
||||
|
||||
/* ============================================
|
||||
Header & Hero Banner (widescreen image)
|
||||
============================================ */
|
||||
.site-header {
|
||||
position: relative;
|
||||
color: var(--color-beige);
|
||||
border-bottom: 3px solid var(--color-wood-light);
|
||||
}
|
||||
|
||||
/* Full-width hero image container; fixed aspect/height for responsive look */
|
||||
.hero-banner {
|
||||
position: relative;
|
||||
width: 100%;
|
||||
min-height: 40vh;
|
||||
max-height: 60vh;
|
||||
height: 50vh;
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: space-between;
|
||||
}
|
||||
|
||||
/* Background image: carpentry/woodworking – optimized WebP with JPEG fallback */
|
||||
.hero-banner .hero-image {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background-image: url('../images/optimized/banner-1920w.jpg');
|
||||
background-image: image-set(
|
||||
url('../images/optimized/banner-1920w.webp') type('image/webp'),
|
||||
url('../images/optimized/banner-1920w.jpg') type('image/jpeg')
|
||||
);
|
||||
background-size: cover;
|
||||
background-position: center;
|
||||
background-repeat: no-repeat;
|
||||
}
|
||||
|
||||
@media (max-width: 640px) {
|
||||
.hero-banner .hero-image {
|
||||
background-image: url('../images/optimized/banner-800w.jpg');
|
||||
background-image: image-set(
|
||||
url('../images/optimized/banner-800w.webp') type('image/webp'),
|
||||
url('../images/optimized/banner-800w.jpg') type('image/jpeg')
|
||||
);
|
||||
}
|
||||
}
|
||||
|
||||
/* Dark overlay so title and nav stay readable */
|
||||
.hero-banner .hero-overlay {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
background: rgba(45, 33, 20, 0.5);
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* Logo above title in hero banner */
|
||||
.hero-logo {
|
||||
width: clamp(60px, 9vw, 90px);
|
||||
height: auto;
|
||||
margin: 0 auto var(--spacing-sm);
|
||||
filter: drop-shadow(0 1px 4px rgba(0, 0, 0, 0.4));
|
||||
}
|
||||
|
||||
/* Centered title and subtitle on top of the image */
|
||||
.hero-text {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
text-align: center;
|
||||
padding: var(--spacing-xl) var(--spacing-md) var(--spacing-md);
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.hero-text h1 {
|
||||
margin: 0;
|
||||
font-family: var(--font-heading);
|
||||
font-size: clamp(1.75rem, 4vw, 2.5rem);
|
||||
font-weight: 700;
|
||||
letter-spacing: 0.02em;
|
||||
color: var(--color-beige-light);
|
||||
text-shadow: 0 1px 2px rgba(0, 0, 0, 0.3);
|
||||
}
|
||||
|
||||
.hero-text .hero-subtitle {
|
||||
margin: var(--spacing-xs) 0 0;
|
||||
font-size: clamp(0.9rem, 2vw, 1.05rem);
|
||||
color: var(--color-beige);
|
||||
opacity: 0.95;
|
||||
font-weight: 400;
|
||||
}
|
||||
|
||||
/* Main Navigation at bottom of banner */
|
||||
.hero-banner .main-nav {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
.main-nav ul {
|
||||
list-style: none;
|
||||
margin: 0;
|
||||
padding: 0;
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: center;
|
||||
gap: 0;
|
||||
border-top: 1px solid rgba(232, 223, 212, 0.25);
|
||||
background: rgba(45, 33, 20, 0.4);
|
||||
}
|
||||
|
||||
.main-nav li {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.main-nav a {
|
||||
display: block;
|
||||
padding: var(--spacing-sm) var(--spacing-md);
|
||||
color: var(--color-beige);
|
||||
text-decoration: none;
|
||||
font-weight: 500;
|
||||
transition: background-color 0.2s ease, color 0.2s ease;
|
||||
}
|
||||
|
||||
.main-nav a:hover {
|
||||
background-color: rgba(255, 255, 255, 0.1);
|
||||
color: var(--color-beige-light);
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.main-nav a.active {
|
||||
background-color: var(--color-accent);
|
||||
color: var(--color-beige-light);
|
||||
}
|
||||
|
||||
/* ============================================
|
||||
Main content area
|
||||
============================================ */
|
||||
main {
|
||||
padding: var(--spacing-xl) 0;
|
||||
min-height: 50vh;
|
||||
}
|
||||
|
||||
main .layout {
|
||||
padding: 0 var(--spacing-md);
|
||||
}
|
||||
|
||||
/* --- Typography in content --- */
|
||||
h2 {
|
||||
font-family: var(--font-heading);
|
||||
font-size: clamp(1.5rem, 3vw, 2rem);
|
||||
font-weight: 600;
|
||||
color: var(--color-wood-dark);
|
||||
margin: 0 0 var(--spacing-md);
|
||||
border-bottom: 2px solid var(--color-border);
|
||||
padding-bottom: var(--spacing-xs);
|
||||
}
|
||||
|
||||
h3 {
|
||||
font-family: var(--font-heading);
|
||||
font-size: 1.25rem;
|
||||
font-weight: 600;
|
||||
color: var(--color-wood-medium);
|
||||
margin: 0 0 var(--spacing-sm);
|
||||
}
|
||||
|
||||
/* ============================================
|
||||
Landing page sections
|
||||
============================================ */
|
||||
.hero {
|
||||
text-align: center;
|
||||
padding: var(--spacing-lg) 0;
|
||||
background: var(--color-beige-light);
|
||||
border-radius: var(--radius);
|
||||
margin-bottom: var(--spacing-xl);
|
||||
border: 1px solid var(--color-border);
|
||||
}
|
||||
|
||||
.hero h2 {
|
||||
border: none;
|
||||
margin-bottom: var(--spacing-sm);
|
||||
}
|
||||
|
||||
.hero p {
|
||||
margin: 0;
|
||||
max-width: 36em;
|
||||
margin-left: auto;
|
||||
margin-right: auto;
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
.section {
|
||||
margin-bottom: var(--spacing-xl);
|
||||
}
|
||||
|
||||
.section p {
|
||||
margin: 0 0 var(--spacing-sm);
|
||||
color: var(--color-text-muted);
|
||||
}
|
||||
|
||||
/* --- Services grid --- */
|
||||
.services-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fit, minmax(260px, 1fr));
|
||||
gap: var(--spacing-lg);
|
||||
margin-top: var(--spacing-md);
|
||||
}
|
||||
|
||||
.service-card {
|
||||
background: var(--color-beige-light);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: var(--radius);
|
||||
padding: var(--spacing-lg);
|
||||
transition: box-shadow 0.2s ease;
|
||||
}
|
||||
|
||||
.service-card:hover {
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
.service-card h3 {
|
||||
margin-top: 0;
|
||||
}
|
||||
|
||||
/* --- CTA --- */
|
||||
.cta-section {
|
||||
text-align: center;
|
||||
padding: var(--spacing-xl) 0;
|
||||
}
|
||||
|
||||
.btn {
|
||||
display: inline-block;
|
||||
padding: var(--spacing-sm) var(--spacing-lg);
|
||||
font-family: var(--font-body);
|
||||
font-size: 1rem;
|
||||
font-weight: 600;
|
||||
color: var(--color-beige-light);
|
||||
background-color: var(--color-accent);
|
||||
border: none;
|
||||
border-radius: var(--radius);
|
||||
cursor: pointer;
|
||||
text-decoration: none;
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
.btn:hover {
|
||||
background-color: var(--color-accent-hover);
|
||||
text-decoration: none;
|
||||
color: var(--color-beige-light);
|
||||
}
|
||||
|
||||
/* ============================================
|
||||
Pictures / Gallery page
|
||||
============================================ */
|
||||
.gallery-header {
|
||||
margin-bottom: var(--spacing-lg);
|
||||
}
|
||||
|
||||
.gallery-filters {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
gap: var(--spacing-sm);
|
||||
margin-bottom: var(--spacing-lg);
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.gallery-filters button {
|
||||
padding: var(--spacing-xs) var(--spacing-md);
|
||||
font-family: var(--font-body);
|
||||
font-size: 0.95rem;
|
||||
font-weight: 500;
|
||||
color: var(--color-wood-medium);
|
||||
background: var(--color-beige-light);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: var(--radius);
|
||||
cursor: pointer;
|
||||
transition: background-color 0.2s ease, color 0.2s ease;
|
||||
}
|
||||
|
||||
.gallery-filters button:hover,
|
||||
.gallery-filters button.active {
|
||||
background: var(--color-accent);
|
||||
color: var(--color-beige-light);
|
||||
border-color: var(--color-accent);
|
||||
}
|
||||
|
||||
.gallery-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(280px, 1fr));
|
||||
gap: var(--spacing-md);
|
||||
}
|
||||
|
||||
.gallery-item {
|
||||
border-radius: var(--radius);
|
||||
overflow: hidden;
|
||||
border: 1px solid var(--color-border);
|
||||
background: var(--color-beige-light);
|
||||
}
|
||||
|
||||
.gallery-item img {
|
||||
width: 100%;
|
||||
aspect-ratio: 4/3;
|
||||
object-fit: cover;
|
||||
}
|
||||
|
||||
.gallery-item figcaption {
|
||||
display: none; /* Hide gallery item captions (file names/descriptions) */
|
||||
padding: var(--spacing-sm);
|
||||
font-size: 0.9rem;
|
||||
color: var(--color-text-muted);
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* Clickable gallery image (cursor + no drag) */
|
||||
.gallery-item .gallery-image-link {
|
||||
display: block;
|
||||
cursor: pointer;
|
||||
line-height: 0;
|
||||
}
|
||||
|
||||
.gallery-item .gallery-image-link img {
|
||||
pointer-events: none;
|
||||
}
|
||||
|
||||
/* ============================================
|
||||
Lightbox / Modal (Bilder page)
|
||||
============================================ */
|
||||
.lightbox {
|
||||
display: none;
|
||||
position: fixed;
|
||||
inset: 0;
|
||||
z-index: 1000;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
padding: var(--spacing-md);
|
||||
background: rgba(0, 0, 0, 0.85);
|
||||
opacity: 0;
|
||||
transition: opacity 0.2s ease;
|
||||
}
|
||||
|
||||
.lightbox.is-open {
|
||||
display: flex;
|
||||
opacity: 1;
|
||||
}
|
||||
|
||||
.lightbox-backdrop {
|
||||
position: absolute;
|
||||
inset: 0;
|
||||
cursor: pointer;
|
||||
}
|
||||
|
||||
.lightbox-content {
|
||||
position: relative;
|
||||
z-index: 1;
|
||||
max-width: 90vw;
|
||||
max-height: 85vh;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.lightbox-content img {
|
||||
max-width: 100%;
|
||||
max-height: 85vh;
|
||||
width: auto;
|
||||
height: auto;
|
||||
object-fit: contain;
|
||||
border-radius: var(--radius);
|
||||
box-shadow: 0 4px 24px rgba(0, 0, 0, 0.5);
|
||||
}
|
||||
|
||||
/* Prev / Next navigation buttons */
|
||||
.lightbox-prev,
|
||||
.lightbox-next {
|
||||
position: absolute;
|
||||
top: 50%;
|
||||
transform: translateY(-50%);
|
||||
z-index: 2;
|
||||
width: 3rem;
|
||||
height: 3rem;
|
||||
padding: 0;
|
||||
font-size: 2.5rem;
|
||||
line-height: 1;
|
||||
color: var(--color-beige);
|
||||
background: rgba(45, 33, 20, 0.55);
|
||||
border: 1px solid rgba(232, 223, 212, 0.25);
|
||||
border-radius: var(--radius);
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: background-color 0.2s ease;
|
||||
user-select: none;
|
||||
}
|
||||
|
||||
.lightbox-prev:hover,
|
||||
.lightbox-next:hover {
|
||||
background: var(--color-accent);
|
||||
}
|
||||
|
||||
.lightbox-prev { left: var(--spacing-sm); }
|
||||
.lightbox-next { right: var(--spacing-sm); }
|
||||
|
||||
.lightbox-prev[hidden],
|
||||
.lightbox-next[hidden] { display: none; }
|
||||
|
||||
/* Close button (X) */
|
||||
.lightbox-close {
|
||||
position: absolute;
|
||||
top: -2.5rem;
|
||||
right: 0;
|
||||
width: 2.25rem;
|
||||
height: 2.25rem;
|
||||
padding: 0;
|
||||
font-size: 1.5rem;
|
||||
line-height: 1;
|
||||
color: var(--color-beige);
|
||||
background: var(--color-wood-medium);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: var(--radius);
|
||||
cursor: pointer;
|
||||
display: flex;
|
||||
align-items: center;
|
||||
justify-content: center;
|
||||
transition: background-color 0.2s ease;
|
||||
}
|
||||
|
||||
.lightbox-close:hover {
|
||||
background: var(--color-accent);
|
||||
color: var(--color-beige-light);
|
||||
}
|
||||
|
||||
/* ============================================
|
||||
Shop page
|
||||
============================================ */
|
||||
.shop-grid {
|
||||
display: grid;
|
||||
grid-template-columns: repeat(auto-fill, minmax(260px, 1fr));
|
||||
gap: var(--spacing-lg);
|
||||
}
|
||||
|
||||
.shop-empty-message {
|
||||
margin: var(--spacing-lg) 0 0;
|
||||
text-align: center;
|
||||
color: var(--color-text-muted);
|
||||
font-size: 1.05rem;
|
||||
}
|
||||
|
||||
.product-card {
|
||||
background: var(--color-beige-light);
|
||||
border: 1px solid var(--color-border);
|
||||
border-radius: var(--radius);
|
||||
overflow: hidden;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
transition: box-shadow 0.2s ease;
|
||||
}
|
||||
|
||||
.product-card:hover {
|
||||
box-shadow: var(--shadow);
|
||||
}
|
||||
|
||||
.product-card .product-image {
|
||||
aspect-ratio: 1;
|
||||
object-fit: cover;
|
||||
width: 100%;
|
||||
background: var(--color-beige);
|
||||
}
|
||||
|
||||
.product-card .product-body {
|
||||
padding: var(--spacing-md);
|
||||
flex: 1;
|
||||
display: flex;
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.product-card h3 {
|
||||
margin: 0 0 var(--spacing-xs);
|
||||
font-size: 1.15rem;
|
||||
}
|
||||
|
||||
.product-card .product-desc {
|
||||
font-size: 0.9rem;
|
||||
color: var(--color-text-muted);
|
||||
margin: 0 0 var(--spacing-sm);
|
||||
flex: 1;
|
||||
}
|
||||
|
||||
.product-card .product-price {
|
||||
font-weight: 600;
|
||||
color: var(--color-wood-dark);
|
||||
margin-bottom: var(--spacing-sm);
|
||||
}
|
||||
|
||||
.product-card .btn {
|
||||
margin-top: auto;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
/* ============================================
|
||||
Impressum page
|
||||
============================================ */
|
||||
.impressum-content {
|
||||
max-width: 640px;
|
||||
}
|
||||
|
||||
.impressum-content section {
|
||||
margin-bottom: var(--spacing-lg);
|
||||
}
|
||||
|
||||
.impressum-content h2 {
|
||||
font-size: 1.35rem;
|
||||
margin-bottom: var(--spacing-sm);
|
||||
}
|
||||
|
||||
.impressum-content p,
|
||||
.impressum-content address {
|
||||
margin: 0 0 var(--spacing-sm);
|
||||
color: var(--color-text-muted);
|
||||
font-style: normal;
|
||||
}
|
||||
|
||||
.impressum-content address {
|
||||
line-height: 1.7;
|
||||
}
|
||||
|
||||
/* ============================================
|
||||
Footer
|
||||
============================================ */
|
||||
.site-footer {
|
||||
background: var(--color-wood-medium);
|
||||
color: var(--color-beige);
|
||||
padding: var(--spacing-lg) var(--spacing-md);
|
||||
margin-top: auto;
|
||||
}
|
||||
|
||||
.site-footer .layout {
|
||||
display: flex;
|
||||
flex-wrap: wrap;
|
||||
justify-content: space-between;
|
||||
align-items: center;
|
||||
gap: var(--spacing-md);
|
||||
}
|
||||
|
||||
.site-footer a {
|
||||
color: var(--color-beige);
|
||||
}
|
||||
|
||||
.site-footer a:hover {
|
||||
color: var(--color-beige-light);
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
.footer-contact {
|
||||
font-size: 0.95rem;
|
||||
}
|
||||
|
||||
.footer-logo {
|
||||
width: 48px;
|
||||
height: auto;
|
||||
margin-bottom: var(--spacing-xs);
|
||||
opacity: 0.8;
|
||||
}
|
||||
|
||||
.footer-contact p {
|
||||
margin: 0;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
display: flex;
|
||||
gap: var(--spacing-md);
|
||||
}
|
||||
|
||||
.footer-links a {
|
||||
text-decoration: none;
|
||||
}
|
||||
|
||||
.footer-links a:hover {
|
||||
text-decoration: underline;
|
||||
}
|
||||
|
||||
/* ============================================
|
||||
Page title (inner pages)
|
||||
============================================ */
|
||||
.page-title {
|
||||
font-family: var(--font-heading);
|
||||
font-size: clamp(1.5rem, 3vw, 2rem);
|
||||
color: var(--color-wood-dark);
|
||||
margin: 0 0 var(--spacing-lg);
|
||||
border-bottom: 2px solid var(--color-border);
|
||||
padding-bottom: var(--spacing-sm);
|
||||
}
|
||||
|
||||
/* ============================================
|
||||
Responsive adjustments
|
||||
============================================ */
|
||||
@media (max-width: 640px) {
|
||||
.hero-banner {
|
||||
min-height: 35vh;
|
||||
max-height: 55vh;
|
||||
height: 45vh;
|
||||
}
|
||||
|
||||
.hero-text {
|
||||
padding: var(--spacing-md);
|
||||
}
|
||||
|
||||
|
||||
.main-nav ul {
|
||||
flex-direction: column;
|
||||
}
|
||||
|
||||
.main-nav a {
|
||||
text-align: center;
|
||||
border-bottom: 1px solid rgba(232, 223, 212, 0.15);
|
||||
}
|
||||
|
||||
.lightbox-close {
|
||||
top: var(--spacing-sm);
|
||||
right: var(--spacing-sm);
|
||||
}
|
||||
|
||||
.site-footer .layout {
|
||||
flex-direction: column;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
.footer-links {
|
||||
justify-content: center;
|
||||
}
|
||||
|
||||
.gallery-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
|
||||
.shop-grid {
|
||||
grid-template-columns: 1fr;
|
||||
}
|
||||
}
|
||||
BIN
images/fotowebsite/aussenbereich/FotoPosch 101.jpg
Normal file
|
After Width: | Height: | Size: 4.8 MiB |
BIN
images/fotowebsite/aussenbereich/FotoPosch 102.jpg
Normal file
|
After Width: | Height: | Size: 5.6 MiB |
BIN
images/fotowebsite/aussenbereich/FotoPosch 108.jpg
Normal file
|
After Width: | Height: | Size: 5.6 MiB |
BIN
images/fotowebsite/aussenbereich/FotoPosch 109.jpg
Normal file
|
After Width: | Height: | Size: 4.4 MiB |
BIN
images/fotowebsite/aussenbereich/FotoPosch 110.jpg
Normal file
|
After Width: | Height: | Size: 4.6 MiB |
BIN
images/fotowebsite/aussenbereich/FotoPosch 111.jpg
Normal file
|
After Width: | Height: | Size: 5.1 MiB |
BIN
images/fotowebsite/aussenbereich/FotoPosch 112.jpg
Normal file
|
After Width: | Height: | Size: 4.6 MiB |
BIN
images/fotowebsite/aussenbereich/FotoPosch 204.jpg
Normal file
|
After Width: | Height: | Size: 4.9 MiB |
BIN
images/fotowebsite/aussenbereich/FotoPosch 205.jpg
Normal file
|
After Width: | Height: | Size: 4.5 MiB |
BIN
images/fotowebsite/aussenbereich/FotoPosch 213.jpg
Normal file
|
After Width: | Height: | Size: 4.8 MiB |
BIN
images/fotowebsite/aussenbereich/FotoPosch 214.jpg
Normal file
|
After Width: | Height: | Size: 2.9 MiB |
BIN
images/fotowebsite/aussenbereich/FotoPosch 215.jpg
Normal file
|
After Width: | Height: | Size: 5 MiB |
BIN
images/fotowebsite/aussenbereich/FotoPosch 216.jpg
Normal file
|
After Width: | Height: | Size: 3.9 MiB |
BIN
images/fotowebsite/aussenbereich/FotoPosch 306.jpg
Normal file
|
After Width: | Height: | Size: 5.3 MiB |
BIN
images/fotowebsite/banner.jpg
Executable file
|
After Width: | Height: | Size: 19 MiB |
BIN
images/fotowebsite/küche/FotoPosch 307.jpg
Normal file
|
After Width: | Height: | Size: 4 MiB |
BIN
images/fotowebsite/küche/FotoPosch 317.jpg
Normal file
|
After Width: | Height: | Size: 5.4 MiB |
BIN
images/fotowebsite/küche/FotoPosch 318.jpg
Normal file
|
After Width: | Height: | Size: 5.2 MiB |
BIN
images/fotowebsite/küche/FotoPosch 419.jpg
Normal file
|
After Width: | Height: | Size: 5.5 MiB |
BIN
images/fotowebsite/küche/FotoPosch 420.jpg
Normal file
|
After Width: | Height: | Size: 3.6 MiB |
BIN
images/fotowebsite/küche/FotoPosch 421.jpg
Normal file
|
After Width: | Height: | Size: 5 MiB |
BIN
images/fotowebsite/küche/FotoPosch 422.jpg
Normal file
|
After Width: | Height: | Size: 5.4 MiB |
BIN
images/fotowebsite/küche/FotoPosch 423.jpg
Normal file
|
After Width: | Height: | Size: 5 MiB |
BIN
images/fotowebsite/küche/FotoPosch 424.jpg
Normal file
|
After Width: | Height: | Size: 4.6 MiB |
BIN
images/fotowebsite/küche/FotoPosch 425.jpg
Normal file
|
After Width: | Height: | Size: 4.7 MiB |
BIN
images/fotowebsite/küche/FotoPosch 426.jpg
Normal file
|
After Width: | Height: | Size: 5.5 MiB |
BIN
images/fotowebsite/küche/FotoPosch 427.jpg
Normal file
|
After Width: | Height: | Size: 4.4 MiB |
BIN
images/fotowebsite/küche/FotoPosch 428.jpg
Normal file
|
After Width: | Height: | Size: 4.4 MiB |
BIN
images/fotowebsite/sonderanfertigungen/FotoPosch 430.jpg
Normal file
|
After Width: | Height: | Size: 6 MiB |
BIN
images/fotowebsite/sonderanfertigungen/FotoPosch 431.jpg
Normal file
|
After Width: | Height: | Size: 5 MiB |
BIN
images/fotowebsite/sonderanfertigungen/FotoPosch 432.jpg
Normal file
|
After Width: | Height: | Size: 4.3 MiB |
BIN
images/fotowebsite/sonderanfertigungen/FotoPosch 433.jpg
Normal file
|
After Width: | Height: | Size: 5.4 MiB |
BIN
images/fotowebsite/sonderanfertigungen/FotoPosch 434.jpg
Normal file
|
After Width: | Height: | Size: 4.8 MiB |
BIN
images/fotowebsite/sonderanfertigungen/FotoPosch 435.jpg
Normal file
|
After Width: | Height: | Size: 4.7 MiB |
BIN
images/fotowebsite/sonderanfertigungen/FotoPosch029.jpg
Normal file
|
After Width: | Height: | Size: 5.7 MiB |
BIN
images/fotowebsite/sonderanfertigungen/FotoPosch103.jpg
Normal file
|
After Width: | Height: | Size: 4.6 MiB |
BIN
images/optimized/aussenbereich/FotoPosch-101-1920w.jpg
Normal file
|
After Width: | Height: | Size: 240 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-101-1920w.webp
Normal file
|
After Width: | Height: | Size: 152 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-101-800w.jpg
Normal file
|
After Width: | Height: | Size: 61 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-101-800w.webp
Normal file
|
After Width: | Height: | Size: 42 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-102-1920w.jpg
Normal file
|
After Width: | Height: | Size: 339 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-102-1920w.webp
Normal file
|
After Width: | Height: | Size: 285 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-102-800w.jpg
Normal file
|
After Width: | Height: | Size: 74 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-102-800w.webp
Normal file
|
After Width: | Height: | Size: 63 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-108-1920w.jpg
Normal file
|
After Width: | Height: | Size: 346 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-108-1920w.webp
Normal file
|
After Width: | Height: | Size: 274 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-108-800w.jpg
Normal file
|
After Width: | Height: | Size: 76 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-108-800w.webp
Normal file
|
After Width: | Height: | Size: 66 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-109-1920w.jpg
Normal file
|
After Width: | Height: | Size: 421 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-109-1920w.webp
Normal file
|
After Width: | Height: | Size: 279 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-109-800w.jpg
Normal file
|
After Width: | Height: | Size: 92 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-109-800w.webp
Normal file
|
After Width: | Height: | Size: 57 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-110-1920w.jpg
Normal file
|
After Width: | Height: | Size: 474 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-110-1920w.webp
Normal file
|
After Width: | Height: | Size: 324 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-110-800w.jpg
Normal file
|
After Width: | Height: | Size: 107 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-110-800w.webp
Normal file
|
After Width: | Height: | Size: 62 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-111-1920w.jpg
Normal file
|
After Width: | Height: | Size: 486 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-111-1920w.webp
Normal file
|
After Width: | Height: | Size: 344 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-111-800w.jpg
Normal file
|
After Width: | Height: | Size: 94 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-111-800w.webp
Normal file
|
After Width: | Height: | Size: 55 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-112-1920w.jpg
Normal file
|
After Width: | Height: | Size: 433 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-112-1920w.webp
Normal file
|
After Width: | Height: | Size: 302 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-112-800w.jpg
Normal file
|
After Width: | Height: | Size: 84 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-112-800w.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-204-1920w.jpg
Normal file
|
After Width: | Height: | Size: 254 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-204-1920w.webp
Normal file
|
After Width: | Height: | Size: 164 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-204-800w.jpg
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-204-800w.webp
Normal file
|
After Width: | Height: | Size: 45 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-205-1920w.jpg
Normal file
|
After Width: | Height: | Size: 165 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-205-1920w.webp
Normal file
|
After Width: | Height: | Size: 88 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-205-800w.jpg
Normal file
|
After Width: | Height: | Size: 40 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-205-800w.webp
Normal file
|
After Width: | Height: | Size: 23 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-213-1920w.jpg
Normal file
|
After Width: | Height: | Size: 442 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-213-1920w.webp
Normal file
|
After Width: | Height: | Size: 321 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-213-800w.jpg
Normal file
|
After Width: | Height: | Size: 87 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-213-800w.webp
Normal file
|
After Width: | Height: | Size: 48 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-214-1920w.jpg
Normal file
|
After Width: | Height: | Size: 116 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-214-1920w.webp
Normal file
|
After Width: | Height: | Size: 59 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-214-800w.jpg
Normal file
|
After Width: | Height: | Size: 32 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-214-800w.webp
Normal file
|
After Width: | Height: | Size: 19 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-215-1920w.jpg
Normal file
|
After Width: | Height: | Size: 524 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-215-1920w.webp
Normal file
|
After Width: | Height: | Size: 420 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-215-800w.jpg
Normal file
|
After Width: | Height: | Size: 101 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-215-800w.webp
Normal file
|
After Width: | Height: | Size: 64 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-216-1920w.jpg
Normal file
|
After Width: | Height: | Size: 192 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-216-1920w.webp
Normal file
|
After Width: | Height: | Size: 99 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-216-800w.jpg
Normal file
|
After Width: | Height: | Size: 46 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-216-800w.webp
Normal file
|
After Width: | Height: | Size: 27 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-306-1920w.jpg
Normal file
|
After Width: | Height: | Size: 248 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-306-1920w.webp
Normal file
|
After Width: | Height: | Size: 178 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-306-800w.jpg
Normal file
|
After Width: | Height: | Size: 54 KiB |
BIN
images/optimized/aussenbereich/FotoPosch-306-800w.webp
Normal file
|
After Width: | Height: | Size: 39 KiB |
BIN
images/optimized/banner-1920w.jpg
Normal file
|
After Width: | Height: | Size: 582 KiB |
BIN
images/optimized/banner-1920w.webp
Normal file
|
After Width: | Height: | Size: 617 KiB |
BIN
images/optimized/banner-800w.jpg
Normal file
|
After Width: | Height: | Size: 96 KiB |
BIN
images/optimized/banner-800w.webp
Normal file
|
After Width: | Height: | Size: 103 KiB |
BIN
images/optimized/küche/FotoPosch-307-1920w.jpg
Normal file
|
After Width: | Height: | Size: 606 KiB |
BIN
images/optimized/küche/FotoPosch-307-1920w.webp
Normal file
|
After Width: | Height: | Size: 503 KiB |