Files

247 lines
11 KiB
Plaintext

<!DOCTYPE html>
<html lang="de" dir="ltr">
<head>
<meta charset="utf-8" />
<meta name="viewport" content="width=device-width, initial-scale=1.0, viewport-fit=cover" />
@* Primary SEO Meta Tags *@
<meta name="description" content="Reifen Späth Kfz-Meisterbetrieb in Langenmosen - Ihr Spezialist für Premium Reifen, Felgen, Reifenwechsel und professionelle Reifeneinlagerung in der Region." />
<meta name="keywords" content="Reifen, Felgen, Kfz-Meisterbetrieb, Reifenwechsel, Reifeneinlagerung, Langenmosen, Bayern, Alufelgen, Winterreifen, Sommerreifen" />
<meta name="author" content="Reifen Späth - Daniel Späth" />
<meta name="robots" content="index, follow" />
<meta name="googlebot" content="index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1" />
<meta name="bingbot" content="index, follow" />
@* Theme & Mobile Meta Tags *@
<meta name="theme-color" content="#dc2626" media="(prefers-color-scheme: light)" />
<meta name="theme-color" content="#dc2626" media="(prefers-color-scheme: dark)" />
<meta name="color-scheme" content="dark" />
<meta name="apple-mobile-web-app-capable" content="yes" />
<meta name="apple-mobile-web-app-status-bar-style" content="black-translucent" />
<meta name="apple-mobile-web-app-title" content="Reifen Späth" />
<meta name="application-name" content="Reifen Späth" />
<meta name="format-detection" content="telephone=no" />
<meta name="msapplication-TileColor" content="#dc2626" />
<meta name="msapplication-config" content="none" />
@* Open Graph Default Meta Tags *@
<meta property="og:site_name" content="Reifen Späth Kfz-Meisterbetrieb" />
<meta property="og:locale" content="de_DE" />
<meta property="og:type" content="website" />
@* Twitter Card Defaults *@
<meta name="twitter:card" content="summary_large_image" />
@* Geo Meta Tags for Local SEO *@
<meta name="geo.region" content="DE-BY" />
<meta name="geo.placename" content="Langenmosen" />
<meta name="geo.position" content="48.6;11.15" />
<meta name="ICBM" content="48.6, 11.15" />
<base href="/" />
@* Preconnect for critical resources (performance) *@
<link rel="preconnect" href="https://fonts.googleapis.com" />
<link rel="preconnect" href="https://fonts.gstatic.com" crossorigin />
@* DNS Prefetch for external resources *@
<link rel="dns-prefetch" href="https://analytics.spaeth-bayern.de" />
@* Preload critical CSS for faster LCP *@
<link rel="preload" href="app.css?v=@CacheVersion" as="style" />
@* Fonts with display=swap for better CLS *@
<link href="https://fonts.googleapis.com/css2?family=Inter:wght@300;400;500;600;700&family=Orbitron:wght@400;500;600;700;800;900&family=Rajdhani:wght@400;500;600;700&display=swap" rel="stylesheet" />
@* Stylesheets *@
<link rel="stylesheet" href="bootstrap/bootstrap.min.css" />
<link rel="stylesheet" href="app.css?v=@CacheVersion" />
<link rel="stylesheet" href="css/app-interop.css?v=@CacheVersion" />
<link rel="stylesheet" href="Lagerbestand.styles.css?v=@CacheVersion" />
@* Favicon & Icons for all platforms - cache busted *@
<link rel="icon" href="favicon.png?v=2" type="image/png" />
<link rel="shortcut icon" href="favicon.png?v=2" type="image/png" />
<link rel="apple-touch-icon" href="favicon.png?v=2" sizes="180x180" />
<link rel="icon" type="image/png" sizes="192x192" href="favicon.png?v=2" />
<link rel="icon" type="image/png" sizes="32x32" href="favicon.png?v=2" />
<link rel="icon" type="image/png" sizes="16x16" href="favicon.png?v=2" />
<link rel="mask-icon" href="favicon.png?v=2" color="#dc2626" />
<meta name="msapplication-TileImage" content="favicon.png?v=2" />
@* Structured Data - Organization Schema *@
<script type="application/ld+json">
{
"@@context": "https://schema.org",
"@@type": "AutoRepair",
"@@id": "https://www.reifenspaeth.de/#organization",
"name": "Reifen Späth Kfz-Meisterbetrieb",
"alternateName": "Reifen Späth",
"url": "https://www.reifenspaeth.de",
"logo": {
"@@type": "ImageObject",
"url": "https://www.reifenspaeth.de/favicon.png",
"width": 512,
"height": 512
},
"image": "https://www.reifenspaeth.de/favicon.png",
"description": "Kfz-Meisterbetrieb - Ihr Spezialist für Premium Reifen, Felgen und professionelle Reifeneinlagerung in Langenmosen.",
"telephone": "+4915568569616",
"email": "info@reifenspaeth.de",
"address": {
"@@type": "PostalAddress",
"streetAddress": "Sandizeller Str. 10C",
"addressLocality": "Langenmosen",
"postalCode": "86571",
"addressCountry": "DE",
"addressRegion": "Bayern"
},
"geo": {
"@@type": "GeoCoordinates",
"latitude": 48.6,
"longitude": 11.15
},
"openingHoursSpecification": [
{
"@@type": "OpeningHoursSpecification",
"dayOfWeek": "Friday",
"opens": "15:00",
"closes": "18:00"
},
{
"@@type": "OpeningHoursSpecification",
"dayOfWeek": "Saturday",
"opens": "09:00",
"closes": "16:00"
}
],
"priceRange": "€€",
"currenciesAccepted": "EUR",
"paymentAccepted": "Cash, EC Card",
"areaServed": [
"Langenmosen",
"Neuburg an der Donau",
"Schrobenhausen",
"Ingolstadt",
"Aichach-Friedberg"
],
"sameAs": [],
"hasOfferCatalog": {
"@@type": "OfferCatalog",
"name": "Reifen & Felgen Services",
"itemListElement": [
{
"@@type": "Offer",
"itemOffered": {
"@@type": "Service",
"name": "Reifenwechsel",
"description": "Professioneller Wechsel Ihrer Sommerreifen und Winterreifen mit Auswuchten und Druckkontrolle"
}
},
{
"@@type": "Offer",
"itemOffered": {
"@@type": "Service",
"name": "Reifeneinlagerung",
"description": "Professionelle Einlagerung Ihrer Reifen - ganzjährig verfügbar"
}
},
{
"@@type": "Offer",
"itemOffered": {
"@@type": "Service",
"name": "Felgen-Service",
"description": "Alufelgen, Stahlfelgen und Spezialfelgen - Verkauf, Montage und Reparatur"
}
}
]
}
}
</script>
@* Structured Data - Website Schema for sitelinks searchbox *@
<script type="application/ld+json">
{
"@@context": "https://schema.org",
"@@type": "WebSite",
"@@id": "https://www.reifenspaeth.de/#website",
"url": "https://www.reifenspaeth.de",
"name": "Reifen Späth",
"description": "Kfz-Meisterbetrieb für Premium Reifen und Felgen in Langenmosen",
"publisher": {
"@@id": "https://www.reifenspaeth.de/#organization"
},
"inLanguage": "de-DE"
}
</script>
@* Analytics - defer for non-blocking *@
<script defer src="https://analytics.spaeth-bayern.de/script.js" data-website-id="de97bee6-7355-4fe5-9b52-ddb4cf2c708c"></script>
<HeadOutlet @rendermode="InteractiveServer" />
</head>
<body>
@* Skip to main content link for accessibility *@
<a href="#main-content" class="skip-link visually-hidden-focusable">Zum Hauptinhalt springen</a>
<Routes @rendermode="InteractiveServer" />
@* Custom Blazor Server reconnect overlay (replaces default) *@
<div id="components-reconnect-modal" role="alertdialog" aria-modal="true" aria-labelledby="reconnect-title" aria-live="assertive">
<div class="reconnect-dialog">
<div class="reconnect-icon" aria-hidden="true">
<svg width="28" height="28" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<path d="M21 12a9 9 0 1 1-6.22-8.56"></path>
<polyline points="21 3 21 9 15 9"></polyline>
</svg>
</div>
<h2 id="reconnect-title">Verbindung wird wiederhergestellt</h2>
<p class="reconnect-text-show">
Die Verbindung zum Server wurde kurzzeitig unterbrochen.
Ihre Eingaben bleiben erhalten &ndash; bitte einen Moment warten&hellip;
</p>
<p class="reconnect-text-failed">
Die Verbindung zum Server konnte nicht wiederhergestellt werden.
Bitte laden Sie die Seite neu.
</p>
<p class="reconnect-text-rejected">
Ihre Sitzung ist abgelaufen. Bitte laden Sie die Seite neu,
um weiterzuarbeiten.
</p>
<div class="reconnect-actions-failed">
<button type="button" class="reconnect-retry">Erneut versuchen</button>
<button type="button" class="reconnect-reload">Seite neu laden</button>
</div>
</div>
</div>
@* Idle-lock overlay (JS-driven via appInterop.startIdleWatcher) *@
<div id="app-idle-overlay" role="alertdialog" aria-modal="true" aria-labelledby="idle-title" aria-hidden="true">
<div class="app-idle-dialog">
<div class="app-idle-icon" aria-hidden="true">
<svg width="32" height="32" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" stroke-linejoin="round">
<circle cx="12" cy="12" r="10"></circle>
<polyline points="12 6 12 12 16 14"></polyline>
</svg>
</div>
<h2 id="idle-title">Sitzung pausiert</h2>
<p>Ihre Sitzung ist aufgrund l&auml;ngerer Inaktivit&auml;t pausiert.<br />
Alle Eingaben bleiben erhalten.</p>
<button type="button" class="app-idle-resume">Weiter arbeiten</button>
</div>
</div>
@* Blazor Framework - defer loading *@
<script src="_framework/blazor.web.js" autostart="true"></script>
<script src="js/app-interop.js?v=@CacheVersion" defer></script>
<script src="js/qr-scanner.js?v=@CacheVersion" defer></script>
</body>
</html>
@code {
private static readonly string CacheVersion = DateTime.UtcNow.Ticks.ToString();
}