Vorschau: Rheingau Standard 1
HTML-Quelltext (schreibgeschΓΌtzt)
html_body
<!DOCTYPE html> <html lang="de"> <head> <meta charset="UTF-8"> <meta name="viewport" content="width=device-width, initial-scale=1.0"> <!-- SEO Meta --> <title>{{meta_title}}</title> <meta name="description" content="{{meta_description}}"> <link rel="canonical" href="{{canonical_url}}"> <!-- Open Graph --> <meta property="og:title" content="{{meta_title}}"> <meta property="og:description" content="{{meta_description}}"> <meta property="og:image" content="{{og_image}}"> <meta property="og:type" content="website"> <meta property="og:locale" content="de_DE"> <!-- Schema.org JSON-LD --> {{schema_org}} <!-- Pico.css β minimales semantisches CSS, kein JS, kein Build-Step --> <link rel="stylesheet" href="https://cdn.jsdelivr.net/npm/@picocss/pico@2/css/pico.min.css"> <style> /* ββ Design Tokens ββββββββββββββββββββββββββββββββββββββββ */ :root { --primary: #0f4c5c; --primary-hover: rgba(15, 76, 92, 0.85); --primary-foreground: #ffffff; --background: #ffffff; --card-bg: #ffffff; --text-main: #1f2937; --text-muted: #4b5563; --border-color: #e5e7eb; --radius-xl: 12px; --radius-2xl: 16px; --shadow-lg: 0 10px 15px -3px rgba(0,0,0,.1), 0 4px 6px -2px rgba(0,0,0,.05); --app-header-h: 72px; } /* ββ Basis & Typografie βββββββββββββββββββββββββββββββββββ */ body { background-color: var(--background); color: var(--text-main); font-family: ui-sans-serif, system-ui, -apple-system, BlinkMacSystemFont, "Segoe UI", Roboto, "Helvetica Neue", Arial, sans-serif; -webkit-font-smoothing: antialiased; -moz-osx-font-smoothing: grayscale; margin: 0; padding: 0; } h1, h2, h3 { font-weight: 700; letter-spacing: -0.025em; color: var(--text-main); } /* Pico-Overrides: eigene Farben durchsetzen */ :root { --pico-primary: var(--primary); --pico-primary-hover: var(--primary-hover); --pico-background-color: var(--background); --pico-color: var(--text-main); --pico-muted-color: var(--text-muted); --pico-border-color: var(--border-color); } /* ββ Container ββββββββββββββββββββββββββββββββββββββββββββ */ .container { width: 100%; margin-right: auto; margin-left: auto; padding-right: 1rem; padding-left: 1rem; } @media (min-width: 640px) { .container { max-width: 640px; } } @media (min-width: 768px) { .container { max-width: 768px; } } @media (min-width: 1024px) { .container { max-width: 1024px; } } @media (min-width: 1280px) { .container { max-width: 1280px; } } /* ββ Site-Header βββββββββββββββββββββββββββββββββββββββββββ */ .site-header { background-color: var(--primary); padding: 1rem 0; } .site-header .container { display: flex; align-items: center; justify-content: space-between; flex-wrap: wrap; gap: 0.75rem; } .site-logo { display: flex; align-items: center; gap: 0.625rem; text-decoration: none; color: var(--primary-foreground); font-weight: 700; font-size: 1.1rem; letter-spacing: -0.02em; } .site-logo:hover { color: rgba(255,255,255,0.85); } .nav-brand-icon { width: 2rem; height: 2rem; border-radius: var(--radius-xl); background-color: rgba(255,255,255,0.15); display: flex; align-items: center; justify-content: center; font-size: 1rem; flex-shrink: 0; } .site-nav { display: flex; gap: 1.5rem; list-style: none; margin: 0; padding: 0; flex-wrap: wrap; } .site-nav a { font-size: 0.875rem; font-weight: 500; color: rgba(255,255,255,0.8); text-decoration: none; transition: color 0.2s ease; } .site-nav a:hover { color: #fff; } /* ββ Breadcrumb βββββββββββββββββββββββββββββββββββββββββββ */ .breadcrumb-bar { background-color: rgba(15, 76, 92, 0.05); border-bottom: 1px solid var(--border-color); padding: 0.625rem 0; } .breadcrumb { display: flex; flex-wrap: wrap; gap: 0.25rem; list-style: none; margin: 0; padding: 0; font-size: 0.8rem; color: var(--text-muted); } .breadcrumb li + li::before { content: "βΊ"; margin-right: 0.25rem; color: #bbb; } .breadcrumb a { color: var(--primary); text-decoration: none; font-weight: 500; transition: color 0.15s; } .breadcrumb a:hover { text-decoration: underline; } .breadcrumb [aria-current="page"] { color: var(--text-muted); } /* ββ Hauptinhalt-Wrapper βββββββββββββββββββββββββββββββββββ */ .main-content-wrapper { min-height: 100vh; background-color: var(--background); padding-top: 2rem; padding-bottom: 4rem; } /* ββ 2-Spalten-Grid ββββββββββββββββββββββββββββββββββββββββ */ .page-grid { display: grid; grid-template-columns: 1fr 220px; gap: 2rem; align-items: start; } @media (max-width: 768px) { .page-grid { grid-template-columns: 1fr; gap: 1.25rem; } .page-sidebar { order: -1; } /* Bild zuerst auf Mobile */ } /* ββ Pico-Override: article-Rahmen entfernen ββββββββββββββ */ article, .content-card { background-color: var(--card-bg); border: none !important; box-shadow: none !important; padding: 0; margin: 0; } /* ββ Seitentitel & Intro βββββββββββββββββββββββββββββββββββ */ .page-content h1 { font-size: clamp(1.5rem, 4vw, 2rem); line-height: 1.2; color: var(--text-main); margin-top: 0; margin-bottom: 0.875rem; } .intro { font-size: 1.05rem; color: var(--text-muted); line-height: 1.7; margin-bottom: 1.75rem; padding-bottom: 1.5rem; border-bottom: 1px solid var(--border-color); } /* ββ Sections (KI-generierte Abschnitte) βββββββββββββββββββ */ .sections-block h2 { font-size: 1.2rem; color: var(--text-main); margin-top: 1.75rem; margin-bottom: 0.5rem; padding-bottom: 0.375rem; border-bottom: 2px solid rgba(15, 76, 92, 0.12); } .sections-block p { color: var(--text-muted); line-height: 1.7; margin-bottom: 1rem; } /* ββ Kategorie-Block (Ausbaustufe) ββββββββββββββββββββββββ */ .category-block { margin-top: 2rem; background-color: rgba(15, 76, 92, 0.04); border: 1px solid rgba(15, 76, 92, 0.15); border-radius: var(--radius-xl); padding: 1.25rem 1.5rem; } .category-block h2 { font-size: 1.05rem; color: var(--primary); margin-top: 0; margin-bottom: 0.875rem; } .category-block ol, .category-block ul { padding-left: 1.25rem; color: var(--text-muted); line-height: 1.9; } .category-block a { color: var(--primary); text-decoration: none; font-weight: 500; } .category-block a:hover { text-decoration: underline; } /* ββ FAQ ββββββββββββββββββββββββββββββββββββββββββββββββββββ */ .faq-block { margin-top: 2rem; padding-top: 1.5rem; border-top: 1px solid var(--border-color); } .faq-block > h2 { font-size: 1.2rem; color: var(--text-main); margin-top: 0; margin-bottom: 1.25rem; } .faq-item { margin-bottom: 1.25rem; padding: 1rem 1.25rem; background-color: var(--background); border-radius: var(--radius-xl); border: 1px solid var(--border-color); } .faq-question { font-weight: 600; color: var(--text-main); margin: 0 0 0.375rem; font-size: 0.95rem; } .faq-answer { color: var(--text-muted); margin: 0; font-size: 0.9rem; line-height: 1.65; } /* ββ Sidebar ββββββββββββββββββββββββββββββββββββββββββββββββ */ .page-sidebar { position: sticky; top: 1rem; display: flex; flex-direction: column; gap: 1rem; } /* Teaserbild */ .teaser-img-wrap { background-color: var(--card-bg); border-radius: var(--radius-2xl); border: 1px solid var(--border-color); box-shadow: var(--shadow-lg); overflow: hidden; text-align: center; } .teaser-img-wrap img { max-width: 200px; width: 100%; height: auto; display: block; margin: 0 auto; } /* Sidebar-Links */ .sidebar-links { background-color: var(--card-bg); border: 1px solid var(--border-color); border-radius: var(--radius-2xl); box-shadow: var(--shadow-lg); padding: 1.125rem 1.25rem; } .sidebar-links h3 { font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.07em; color: var(--primary); margin: 0 0 0.875rem; } .sidebar-links ul { list-style: none; padding: 0; margin: 0; } .sidebar-links li { border-bottom: 1px solid var(--border-color); } .sidebar-links li:last-child { border-bottom: none; } .sidebar-links a { display: block; padding: 0.5rem 0; color: var(--text-muted); text-decoration: none; font-size: 0.875rem; font-weight: 500; transition: color 0.15s, padding-left 0.15s; } .sidebar-links a:hover { color: var(--primary); padding-left: 4px; } /* ββ Footer ββββββββββββββββββββββββββββββββββββββββββββββββ */ footer { border-top: 1px solid var(--border-color); background-color: rgba(75, 85, 99, 0.03); padding-top: 2.5rem; padding-bottom: 2rem; } .footer-grid { display: grid; grid-template-columns: 1fr; gap: 2rem; } @media (min-width: 768px) { .footer-grid { grid-template-columns: repeat(3, 1fr); } } .footer-title { font-weight: 600; font-size: 0.875rem; margin-bottom: 0.875rem; color: var(--text-main); } .footer-links { list-style: none; padding: 0; margin: 0; } .footer-links li { margin-bottom: 0.5rem; } .footer-link { font-size: 0.875rem; color: var(--text-muted); text-decoration: none; transition: color 0.2s; } .footer-link:hover { color: var(--text-main); } .footer-bottom { margin-top: 2rem; padding-top: 1.25rem; border-top: 1px solid var(--border-color); font-size: 0.8rem; color: var(--text-muted); text-align: center; } .footer-bottom a { color: var(--text-muted); text-decoration: none; } .footer-bottom a:hover { color: var(--text-main); } /* ββ Barrierefreiheit βββββββββββββββββββββββββββββββββββββββ */ .sr-only { position: absolute; width: 1px; height: 1px; padding: 0; margin: -1px; overflow: hidden; clip: rect(0,0,0,0); white-space: nowrap; border: 0; } </style> </head> <body> <!-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββ --> <!-- SITE HEADER + NAVIGATION --> <!-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββ --> <header class="site-header"> <div class="container"> <a href="/" class="site-logo"> rheingau.top </a> <nav aria-label="Hauptnavigation"> <ul class="site-nav"> <li><a href="/restaurants.html">Restaurants</a></li> <li><a href="/weinguter.html">WeingΓΌter</a></li> <li><a href="/sehenswurdigkeiten.html">SehenswΓΌrdigkeiten</a></li> <li><a href="/ubernachten.html">Γbernachten</a></li> </ul> </nav> </div> </header> <!-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββ --> <!-- BREADCRUMB --> <!-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββ --> <div class="breadcrumb-bar"> <div class="container"> <nav aria-label="Breadcrumb"> {{breadcrumb}} <!-- Beispiel-Output (wird durch PHP ersetzt): <ol class="breadcrumb"> <li><a href="/">Rheingau</a></li> <li><a href="/restaurants.html">Restaurants</a></li> <li><span aria-current="page">Restaurants in RΓΌdesheim</span></li> </ol> --> </nav> </div> </div> <!-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββ --> <!-- HAUPTINHALT --> <!-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββ --> <div class="main-content-wrapper"> <div class="container"> <div class="page-grid"> <!-- ββ Linke Spalte: Inhalt βββββββββββββββββββββββββββ --> <article class="page-content"> <div class="content-card"> <h1>{{h1}}</h1> <div class="intro"> {{intro}} </div> <div class="sections-block"> {{sections}} <!-- Beispiel-Output (wird durch PHP ersetzt): <h2>Die besten WeingΓΌter im Rheingau</h2> <p>Der Rheingau ist bekannt fΓΌr seinen Riesling ...</p> <h2>Tipps fΓΌr Ihren Besuch</h2> <p>Am besten besuchen Sie den Rheingau im Herbst ...</p> --> </div> <!-- Kategorie-Block (Ausbaustufe β je Kategorie durch PHP befΓΌllt) --> <div class="category-block"> {{category_block}} <!-- Beispiel fΓΌr Kategorie "Restaurants": <h2>π½οΈ Top 5 Restaurants im Rheingau</h2> <ol> <li><a href="/restaurants/zum-krug-eltville.html">Zum Krug β Eltville</a></li> </ol> --> </div> <!-- FAQ --> <div class="faq-block"> {{faq}} <!-- Beispiel-Output (wird durch PHP ersetzt): <h2>HΓ€ufige Fragen</h2> <div class="faq-item"> <p class="faq-question">Was ist der Rheingau bekannt fΓΌr?</p> <p class="faq-answer">Der Rheingau ist vor allem fΓΌr seinen Riesling-Wein weltberΓΌhmt ...</p> </div> --> </div> </div><!-- /content-card --> </article> <!-- ββ Rechte Spalte: Sidebar βββββββββββββββββββββββββ --> <aside class="page-sidebar" aria-label="ErgΓ€nzende Informationen"> <!-- Teaserbild (max 200px) --> <div class="teaser-img-wrap"> {{teaser_image}} <!-- Beispiel-Output: <img src="/assets/teaser/riesling-ruedesheim.jpg" alt="Riesling WeingΓΌter RΓΌdesheim am Rhein" width="200" height="150" loading="lazy"> --> </div> <!-- Γhnliche Themen / Child-Links --> <div class="sidebar-links"> <h3>Γhnliche Themen</h3> {{child_links}} <!-- Beispiel-Output: <ul> <li><a href="/restaurants-in-eltville.html">Restaurants in Eltville</a></li> <li><a href="/restaurants-in-ruedesheim.html">Restaurants in RΓΌdesheim</a></li> <li><a href="/weinguter-rheingau.html">WeingΓΌter im Rheingau</a></li> </ul> --> </div> </aside> </div><!-- /page-grid --> </div><!-- /container --> </div><!-- /main-content-wrapper --> <!-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββ --> <!-- FOOTER --> <!-- βββββββββββββββββββββββββββββββββββββββββββββββββββββββ --> <footer> <div class="container"> <div class="footer-grid"> <div> <p class="footer-title">rheingau.top</p> <p style="font-size:.875rem;color:var(--text-muted);line-height:1.6"> Die Besten Seiten im Rheingau. Deine Orientierung fΓΌr Restaurants, Ausflugsziele und vieles mehr. </p> </div> <div> <p class="footer-title">Themen</p> <ul class="footer-links"> <li><a href="/restaurants.html" class="footer-link">Restaurants</a></li> <li><a href="/weinguter.html" class="footer-link">WeingΓΌter</a></li> <li><a href="/sehenswurdigkeiten.html" class="footer-link">SehenswΓΌrdigkeiten</a></li> <li><a href="/ubernachten.html" class="footer-link">Γbernachten</a></li> </ul> </div> <div> <p class="footer-title">Rechtliches</p> <ul class="footer-links"> <li><a href="/impressum.html" class="footer-link">Impressum</a></li> <li><a href="/datenschutz.html" class="footer-link">Datenschutz</a></li> </ul> </div> </div> <div class="footer-bottom"> <p>© 2025 rheingau.top Β· <a href="/impressum.html">Impressum</a> Β· <a href="/datenschutz.html">Datenschutz</a> </p> </div> </div> </footer> </body> </html>
json_schema
{ "fields": [ "meta_title", "meta_description", "h1", "intro", "sections", "faq", "schema_org" ] }