Files
2026-06-27 21:34:54 +00:00

6 lines
34 KiB
HTML
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
```json
{
"files": {
"index.html": "<!DOCTYPE html>\n<html lang=\"de\">\n<head>\n <meta charset=\"UTF-8\">\n <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\n <title>Oishii Sushi Restaurant Aachen - Authentisches Sushi & Japanische Küche</title>\n <meta name=\"description\" content=\"Oishii Sushi Restaurant in Aachen - Genießen Sie frisches Sushi und authentische japanische Küche in modernem Ambiente.\">\n <link rel=\"stylesheet\" href=\"assets/style.css\">\n</head>\n<body>\n <!-- Navigation -->\n <nav class=\"navbar\">\n <div class=\"container\">\n <div class=\"nav-content\">\n <a href=\"#\" class=\"logo\">Oishii</a>\n <ul class=\"nav-menu\">\n <li><a href=\"#home\">Home</a></li>\n <li><a href=\"#menu\">Menü</a></li>\n <li><a href=\"#about\">Über uns</a></li>\n <li><a href=\"#contact\" class=\"btn-nav\">Kontakt</a></li>\n </ul>\n <button class=\"mobile-toggle\" aria-label=\"Menü öffnen\">\n <span></span>\n <span></span>\n <span></span>\n </button>\n </div>\n </div>\n </nav>\n\n <!-- Hero Section -->\n <section id=\"home\" class=\"hero\">\n <div class=\"hero-overlay\"></div>\n <div class=\"container\">\n <div class=\"hero-content\">\n <div class=\"hero-badge\">Aachen</div>\n <h1 class=\"hero-title\">Oishii<span class=\"subtitle\">おいしい</span></h1>\n <p class=\"hero-description\">Authentische japanische Küche trifft moderne Kreationen</p>\n <p class=\"hero-tagline\">Frischer Fisch • Handgemachtes Sushi • Traditionelle Rezepte</p>\n <div class=\"hero-buttons\">\n <a href=\"#menu\" class=\"btn btn-primary\">Unser Menü entdecken</a>\n <a href=\"#contact\" class=\"btn btn-secondary\">Reservierung</a>\n </div>\n </div>\n </div>\n <div class=\"scroll-indicator\">\n <span></span>\n </div>\n </section>\n\n <!-- Services/Menu Overview -->\n <section id=\"menu\" class=\"services\">\n <div class=\"container\">\n <div class=\"section-header\">\n <span class=\"section-badge\">Unser Angebot</span>\n <h2>Kulinarische Vielfalt</h2>\n <p>Entdecken Sie die Kunst der japanischen Küche</p>\n </div>\n <div class=\"services-grid\">\n <div class=\"service-card\">\n <div class=\"service-icon\">🍣</div>\n <h3>Sushi & Sashimi</h3>\n <p>Frischeste Zutaten, kunstvoll zubereitet nach traditionellen Techniken. Von klassischen Nigiri bis zu kreativen Inside-Out Rolls.</p>\n <ul class=\"service-features\">\n <li>Nigiri & Maki</li>\n <li>California & Philadelphia Rolls</li>\n <li>Sashimi-Variationen</li>\n </ul>\n </div>\n <div class=\"service-card\">\n <div class=\"service-icon\">🍜</div>\n <h3>Warme Küche</h3>\n <p>Aromatische Ramen, knuspriges Tempura und saftige Teriyaki-Gerichte die perfekte Balance aus Tradition und Innovation.</p>\n <ul class=\"service-features\">\n <li>Ramen & Udon Nudeln</li>\n <li>Teriyaki & Donburi</li>\n <li>Tempura & Gyoza</li>\n </ul>\n </div>\n <div class=\"service-card\">\n <div class=\"service-icon\">🍱</div>\n <h3>Bento & Sets</h3>\n <p>Sorgfältig zusammengestellte Bento-Boxen und Menüs für ein komplettes japanisches Geschmackserlebnis.</p>\n <ul class=\"service-features\">\n <li>Lunch Bento-Boxen</li>\n <li>Sushi-Sets für 2-4 Personen</li>\n <li>Vegetarische Optionen</li>\n </ul>\n </div>\n </div>\n </div>\n </section>\n\n <!-- About Section -->\n <section id=\"about\" class=\"about\">\n <div class=\"container\">\n <div class=\"about-grid\">\n <div class=\"about-image\">\n <div class=\"image-placeholder\">\n <span class=\"image-icon\">🏮</span>\n </div>\n </div>\n <div class=\"about-content\">\n <span class=\"section-badge\">Über uns</span>\n <h2>Willkommen bei Oishii</h2>\n <p class=\"lead\">Im Herzen von Aachen servieren wir seit Jahren authentische japanische Küche mit Leidenschaft und Hingabe.</p>\n <p>Unser Name \"Oishii\" bedeutet \"lecker\" auf Japanisch und genau das ist unser Versprechen an Sie. Wir kombinieren traditionelle Rezepte mit frischen, regionalen Zutaten und modernen Geschmacksnoten.</p>\n <div class=\"about-features\">\n <div class=\"about-feature\">\n <div class=\"feature-number\">01</div>\n <h4>Frische Qualität</h4>\n <p>Täglich frische Lieferung von Premium-Fisch und ausgewählten Zutaten</p>\n </div>\n <div class=\"about-feature\">\n <div class=\"feature-number\">02</div>\n <h4>Meisterhafte Zubereitung</h4>\n <p>Unser Team besteht aus erfahrenen Sushi-Meistern</p>\n </div>\n <div class=\"about-feature\">\n <div class=\"feature-number\">03</div>\n <h4>Modernes Ambiente</h4>\n <p>Genießen Sie Ihr Essen in stilvoller, entspannter Atmosphäre</p>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n\n <!-- CTA Section -->\n <section id=\"contact\" class=\"cta\">\n <div class=\"container\">\n <div class=\"cta-content\">\n <span class=\"section-badge light\">Besuchen Sie uns</span>\n <h2>Bereit für ein unvergessliches Geschmackserlebnis?</h2>\n <p>Reservieren Sie jetzt Ihren Tisch oder bestellen Sie zum Mitnehmen</p>\n <div class=\"contact-cards\">\n <a href=\"tel:+492419008360\" class=\"contact-card\">\n <div class=\"contact-icon\">📞</div>\n <div class=\"contact-info\">\n <span class=\"contact-label\">Telefon</span>\n <span class=\"contact-value\">+49 241 9008360</span>\n </div>\n </a>\n <a href=\"mailto:info@oishii.de\" class=\"contact-card\">\n <div class=\"contact-icon\">✉️</div>\n <div class=\"contact-info\">\n <span class=\"contact-label\">E-Mail</span>\n <span class=\"contact-value\">info@oishii.de</span>\n </div>\n </a>\n </div>\n <div class=\"opening-hours\">\n <h3>Öffnungszeiten</h3>\n <div class=\"hours-grid\">\n <div class=\"hours-item\">\n <span class=\"day\">Mo - Fr</span>\n <span class=\"time\">11:30 - 15:00 & 17:30 - 22:30</span>\n </div>\n <div class=\"hours-item\">\n <span class=\"day\">Sa - So</span>\n <span class=\"time\">12:00 - 23:00</span>\n </div>\n </div>\n </div>\n </div>\n </div>\n </section>\n\n <!-- Footer -->\n <footer class=\"footer\">\n <div class=\"container\">\n <div class=\"footer-grid\">\n <div class=\"footer-col\">\n <h3 class=\"footer-logo\">Oishii</h3>\n <p>Authentische japanische Küche im Herzen von Aachen</p>\n <div class=\"social-links\">\n <a href=\"#\" aria-label=\"Facebook\" class=\"social-link\">f</a>\n <a href=\"#\" aria-label=\"Instagram\" class=\"social-link\">📷</a>\n <a href=\"#\" aria-label=\"TripAdvisor\" class=\"social-link\">TA</a>\n </div>\n </div>\n <div class=\"footer-col\">\n <h4>Kontakt</h4>\n <ul class=\"footer-links\">\n <li><a href=\"tel:+492419008360\">+49 241 9008360</a></li>\n <li><a href=\"mailto:info@oishii.de\">info@oishii.de</a></li>\n <li>Aachen, Deutschland</li>\n </ul>\n </div>\n <div class=\"footer-col\">\n <h4>Navigation</h4>\n <ul class=\"footer-links\">\n <li><a href=\"#home\">Home</a></li>\n <li><a href=\"#menu\">Menü</a></li>\n <li><a href=\"#about\">Über uns</a></li>\n <li><a href=\"#contact\">Kontakt</a></li>\n </ul>\n </div>\n <div class=\"footer-col\">\n <h4>Service</h4>\n <ul class=\"footer-links\">\n <li><a href=\"#\">Reservierung</a></li>\n <li><a href=\"#\">Catering</a></li>\n <li><a href=\"#\">Gutscheine</a></li>\n <li><a href=\"#\">Jobs</a></li>\n </ul>\n </div>\n </div>\n <div class=\"footer-bottom\">\n <p>&copy; 2024 Oishii Sushi Restaurant. Alle Rechte vorbehalten.</p>\n <div class=\"footer-legal\">\n <a href=\"#\">Impressum</a>\n <a href=\"#\">Datenschutz</a>\n <a href=\"#\">AGB</a>\n </div>\n </div>\n </div>\n </footer>\n\n <script src=\"assets/app.js\"></script>\n</body>\n</html>",
"assets/style.css": ":root {\n --color-primary: #c41e3a;\n --color-primary-dark: #a01830;\n --color-secondary: #1a1a1a;\n --color-accent: #d4af37;\n --color-text: #2c2c2c;\n --color-text-light: #666666;\n --color-bg: #ffffff;\n --color-bg-light: #f8f8f8;\n --color-bg-dark: #1a1a1a;\n --color-border: #e5e5e5;\n \n --font-primary: -apple-system, BlinkMacSystemFont, 'Segoe UI', 'Roboto', 'Helvetica Neue', Arial, sans-serif;\n --font-accent: 'Georgia', serif;\n \n --shadow-sm: 0 2px 8px rgba(0, 0, 0, 0.08);\n --shadow-md: 0 4px 16px rgba(0, 0, 0, 0.12);\n --shadow-lg: 0 8px 32px rgba(0, 0, 0, 0.16);\n \n --transition: all 0.3s cubic-bezier(0.4, 0, 0.2, 1);\n}\n\n* {\n margin: 0;\n padding: 0;\n box-sizing: border-box;\n}\n\nhtml {\n scroll-behavior: smooth;\n}\n\nbody {\n font-family: var(--font-primary);\n color: var(--color-text);\n line-height: 1.6;\n background-color: var(--color-bg);\n overflow-x: hidden;\n}\n\n.container {\n max-width: 1200px;\n margin: 0 auto;\n padding: 0 24px;\n}\n\n/* Navigation */\n.navbar {\n position: fixed;\n top: 0;\n left: 0;\n right: 0;\n background: rgba(255, 255, 255, 0.98);\n backdrop-filter: blur(10px);\n box-shadow: var(--shadow-sm);\n z-index: 1000;\n transition: var(--transition);\n}\n\n.navbar.scrolled {\n box-shadow: var(--shadow-md);\n}\n\n.nav-content {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding: 20px 0;\n}\n\n.logo {\n font-size: 28px;\n font-weight: 700;\n color: var(--color-primary);\n text-decoration: none;\n letter-spacing: 1px;\n transition: var(--transition);\n}\n\n.logo:hover {\n color: var(--color-primary-dark);\n}\n\n.nav-menu {\n display: flex;\n list-style: none;\n gap: 40px;\n align-items: center;\n}\n\n.nav-menu a {\n color: var(--color-text);\n text-decoration: none;\n font-weight: 500;\n font-size: 15px;\n transition: var(--transition);\n position: relative;\n}\n\n.nav-menu a::after {\n content: '';\n position: absolute;\n bottom: -5px;\n left: 0;\n width: 0;\n height: 2px;\n background: var(--color-primary);\n transition: var(--transition);\n}\n\n.nav-menu a:hover::after,\n.nav-menu a.active::after {\n width: 100%;\n}\n\n.nav-menu a:hover {\n color: var(--color-primary);\n}\n\n.btn-nav {\n background: var(--color-primary);\n color: white !important;\n padding: 10px 24px;\n border-radius: 6px;\n}\n\n.btn-nav::after {\n display: none;\n}\n\n.btn-nav:hover {\n background: var(--color-primary-dark);\n color: white !important;\n transform: translateY(-2px);\n}\n\n.mobile-toggle {\n display: none;\n flex-direction: column;\n gap: 5px;\n background: none;\n border: none;\n cursor: pointer;\n padding: 5px;\n}\n\n.mobile-toggle span {\n width: 25px;\n height: 3px;\n background: var(--color-text);\n transition: var(--transition);\n border-radius: 2px;\n}\n\n/* Hero Section */\n.hero {\n position: relative;\n min-height: 100vh;\n display: flex;\n align-items: center;\n justify-content: center;\n background: linear-gradient(135deg, #1a1a1a 0%, #2c2c2c 100%);\n overflow: hidden;\n margin-top: 76px;\n}\n\n.hero::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-image: \n radial-gradient(circle at 20% 50%, rgba(196, 30, 58, 0.1) 0%, transparent 50%),\n radial-gradient(circle at 80% 80%, rgba(212, 175, 55, 0.1) 0%, transparent 50%);\n pointer-events: none;\n}\n\n.hero-overlay {\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background: url('data:image/svg+xml,<svg width=\"60\" height=\"60\" xmlns=\"http://www.w3.org/2000/svg\"><rect width=\"1\" height=\"1\" fill=\"rgba(255,255,255,0.03)\"/></svg>');\n opacity: 0.5;\n}\n\n.hero-content {\n text-align: center;\n position: relative;\n z-index: 2;\n max-width: 800px;\n padding: 40px 0;\n}\n\n.hero-badge {\n display: inline-block;\n background: rgba(255, 255, 255, 0.1);\n backdrop-filter: blur(10px);\n color: var(--color-accent);\n padding: 8px 20px;\n border-radius: 30px;\n font-size: 14px;\n font-weight: 600;\n letter-spacing: 2px;\n text-transform: uppercase;\n margin-bottom: 30px;\n border: 1px solid rgba(212, 175, 55, 0.3);\n}\n\n.hero-title {\n font-size: clamp(48px, 8vw, 96px);\n font-weight: 700;\n color: white;\n margin-bottom: 20px;\n letter-spacing: 2px;\n display: flex;\n flex-direction: column;\n align-items: center;\n gap: 10px;\n}\n\n.subtitle {\n font-size: clamp(24px, 4vw, 42px);\n color: var(--color-accent);\n font-weight: 400;\n letter-spacing: 4px;\n}\n\n.hero-description {\n font-size: clamp(18px, 2.5vw, 24px);\n color: rgba(255, 255, 255, 0.9);\n margin-bottom: 15px;\n font-weight: 300;\n letter-spacing: 1px;\n}\n\n.hero-tagline {\n font-size: 16px;\n color: rgba(255, 255, 255, 0.7);\n margin-bottom: 40px;\n letter-spacing: 1px;\n}\n\n.hero-buttons {\n display: flex;\n gap: 20px;\n justify-content: center;\n flex-wrap: wrap;\n}\n\n.btn {\n display: inline-block;\n padding: 16px 40px;\n border-radius: 8px;\n text-decoration: none;\n font-weight: 600;\n font-size: 16px;\n transition: var(--transition);\n cursor: pointer;\n border: 2px solid transparent;\n}\n\n.btn-primary {\n background: var(--color-primary);\n color: white;\n}\n\n.btn-primary:hover {\n background: var(--color-primary-dark);\n transform: translateY(-3px);\n box-shadow: 0 8px 24px rgba(196, 30, 58, 0.3);\n}\n\n.btn-secondary {\n background: transparent;\n color: white;\n border: 2px solid white;\n}\n\n.btn-secondary:hover {\n background: white;\n color: var(--color-text);\n transform: translateY(-3px);\n}\n\n.scroll-indicator {\n position: absolute;\n bottom: 40px;\n left: 50%;\n transform: translateX(-50%);\n z-index: 2;\n}\n\n.scroll-indicator span {\n display: block;\n width: 24px;\n height: 40px;\n border: 2px solid rgba(255, 255, 255, 0.5);\n border-radius: 20px;\n position: relative;\n}\n\n.scroll-indicator span::before {\n content: '';\n position: absolute;\n top: 8px;\n left: 50%;\n transform: translateX(-50%);\n width: 4px;\n height: 8px;\n background: rgba(255, 255, 255, 0.5);\n border-radius: 2px;\n animation: scroll 2s infinite;\n}\n\n@keyframes scroll {\n 0%, 100% {\n opacity: 0;\n transform: translateX(-50%) translateY(0);\n }\n 50% {\n opacity: 1;\n transform: translateX(-50%) translateY(8px);\n }\n}\n\n/* Section Styles */\nsection {\n padding: 100px 0;\n}\n\n.section-header {\n text-align: center;\n max-width: 700px;\n margin: 0 auto 60px;\n}\n\n.section-badge {\n display: inline-block;\n background: rgba(196, 30, 58, 0.1);\n color: var(--color-primary);\n padding: 8px 20px;\n border-radius: 30px;\n font-size: 14px;\n font-weight: 600;\n letter-spacing: 2px;\n text-transform: uppercase;\n margin-bottom: 20px;\n}\n\n.section-badge.light {\n background: rgba(255, 255, 255, 0.2);\n color: white;\n}\n\n.section-header h2 {\n font-size: clamp(32px, 5vw, 48px);\n color: var(--color-secondary);\n margin-bottom: 20px;\n font-weight: 700;\n}\n\n.section-header p {\n font-size: 18px;\n color: var(--color-text-light);\n}\n\n/* Services Section */\n.services {\n background: var(--color-bg-light);\n}\n\n.services-grid {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(320px, 1fr));\n gap: 40px;\n}\n\n.service-card {\n background: white;\n padding: 40px;\n border-radius: 16px;\n box-shadow: var(--shadow-sm);\n transition: var(--transition);\n border: 1px solid var(--color-border);\n}\n\n.service-card:hover {\n transform: translateY(-8px);\n box-shadow: var(--shadow-lg);\n border-color: var(--color-primary);\n}\n\n.service-icon {\n font-size: 64px;\n margin-bottom: 24px;\n display: block;\n}\n\n.service-card h3 {\n font-size: 24px;\n color: var(--color-secondary);\n margin-bottom: 16px;\n font-weight: 700;\n}\n\n.service-card > p {\n color: var(--color-text-light);\n margin-bottom: 24px;\n line-height: 1.7;\n}\n\n.service-features {\n list-style: none;\n padding: 0;\n}\n\n.service-features li {\n color: var(--color-text);\n padding: 10px 0;\n padding-left: 28px;\n position: relative;\n font-size: 15px;\n}\n\n.service-features li::before {\n content: '✓';\n position: absolute;\n left: 0;\n color: var(--color-primary);\n font-weight: 700;\n}\n\n/* About Section */\n.about {\n background: white;\n}\n\n.about-grid {\n display: grid;\n grid-template-columns: 1fr 1fr;\n gap: 80px;\n align-items: center;\n}\n\n.about-image {\n position: relative;\n}\n\n.image-placeholder {\n aspect-ratio: 4/3;\n background: linear-gradient(135deg, var(--color-primary) 0%, var(--color-primary-dark) 100%);\n border-radius: 16px;\n display: flex;\n align-items: center;\n justify-content: center;\n box-shadow: var(--shadow-lg);\n position: relative;\n overflow: hidden;\n}\n\n.image-placeholder::before {\n content: '';\n position: absolute;\n top: -50%;\n left: -50%;\n width: 200%;\n height: 200%;\n background: radial-gradient(circle, rgba(255,255,255,0.1) 0%, transparent 70%);\n}\n\n.image-icon {\n font-size: 120px;\n opacity: 0.3;\n position: relative;\n z-index: 1;\n}\n\n.about-content .section-badge {\n margin-bottom: 20px;\n}\n\n.about-content h2 {\n font-size: clamp(32px, 4vw, 42px);\n color: var(--color-secondary);\n margin-bottom: 24px;\n font-weight: 700;\n}\n\n.about-content .lead {\n font-size: 20px;\n color: var(--color-text);\n font-weight: 500;\n margin-bottom: 20px;\n line-height: 1.6;\n}\n\n.about-content p {\n color: var(--color-text-light);\n margin-bottom: 40px;\n line-height: 1.8;\n}\n\n.about-features {\n display: flex;\n flex-direction: column;\n gap: 30px;\n}\n\n.about-feature {\n display: flex;\n gap: 20px;\n}\n\n.feature-number {\n flex-shrink: 0;\n width: 50px;\n height: 50px;\n background: rgba(196, 30, 58, 0.1);\n color: var(--color-primary);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n font-weight: 700;\n font-size: 18px;\n}\n\n.about-feature h4 {\n font-size: 18px;\n color: var(--color-secondary);\n margin-bottom: 8px;\n font-weight: 600;\n}\n\n.about-feature p {\n margin: 0;\n font-size: 15px;\n}\n\n/* CTA Section */\n.cta {\n background: linear-gradient(135deg, var(--color-secondary) 0%, #2c2c2c 100%);\n color: white;\n position: relative;\n overflow: hidden;\n}\n\n.cta::before {\n content: '';\n position: absolute;\n top: 0;\n left: 0;\n right: 0;\n bottom: 0;\n background-image: \n radial-gradient(circle at 30% 30%, rgba(196, 30, 58, 0.15) 0%, transparent 50%),\n radial-gradient(circle at 70% 70%, rgba(212, 175, 55, 0.15) 0%, transparent 50%);\n pointer-events: none;\n}\n\n.cta-content {\n position: relative;\n z-index: 2;\n text-align: center;\n max-width: 900px;\n margin: 0 auto;\n}\n\n.cta-content h2 {\n font-size: clamp(32px, 5vw, 48px);\n color: white;\n margin-bottom: 20px;\n font-weight: 700;\n}\n\n.cta-content > p {\n font-size: 18px;\n color: rgba(255, 255, 255, 0.8);\n margin-bottom: 50px;\n}\n\n.contact-cards {\n display: grid;\n grid-template-columns: repeat(auto-fit, minmax(280px, 1fr));\n gap: 30px;\n margin-bottom: 60px;\n}\n\n.contact-card {\n background: rgba(255, 255, 255, 0.1);\n backdrop-filter: blur(10px);\n border: 1px solid rgba(255, 255, 255, 0.2);\n padding: 30px;\n border-radius: 12px;\n display: flex;\n align-items: center;\n gap: 20px;\n text-decoration: none;\n transition: var(--transition);\n}\n\n.contact-card:hover {\n background: rgba(255, 255, 255, 0.15);\n transform: translateY(-5px);\n border-color: var(--color-accent);\n}\n\n.contact-icon {\n font-size: 40px;\n flex-shrink: 0;\n}\n\n.contact-info {\n display: flex;\n flex-direction: column;\n align-items: flex-start;\n text-align: left;\n}\n\n.contact-label {\n font-size: 14px;\n color: rgba(255, 255, 255, 0.7);\n text-transform: uppercase;\n letter-spacing: 1px;\n margin-bottom: 5px;\n}\n\n.contact-value {\n font-size: 18px;\n color: white;\n font-weight: 600;\n}\n\n.opening-hours {\n background: rgba(255, 255, 255, 0.05);\n backdrop-filter: blur(10px);\n border: 1px solid rgba(255, 255, 255, 0.1);\n padding: 40px;\n border-radius: 12px;\n max-width: 600px;\n margin: 0 auto;\n}\n\n.opening-hours h3 {\n font-size: 24px;\n margin-bottom: 30px;\n color: var(--color-accent);\n}\n\n.hours-grid {\n display: flex;\n flex-direction: column;\n gap: 20px;\n}\n\n.hours-item {\n display: flex;\n justify-content: space-between;\n align-items: center;\n padding-bottom: 20px;\n border-bottom: 1px solid rgba(255, 255, 255, 0.1);\n}\n\n.hours-item:last-child {\n border-bottom: none;\n padding-bottom: 0;\n}\n\n.day {\n font-weight: 600;\n font-size: 16px;\n}\n\n.time {\n color: rgba(255, 255, 255, 0.8);\n font-size: 15px;\n}\n\n/* Footer */\n.footer {\n background: var(--color-bg-dark);\n color: rgba(255, 255, 255, 0.8);\n padding: 80px 0 30px;\n}\n\n.footer-grid {\n display: grid;\n grid-template-columns: 2fr 1fr 1fr 1fr;\n gap: 50px;\n margin-bottom: 50px;\n}\n\n.footer-logo {\n font-size: 28px;\n font-weight: 700;\n color: var(--color-primary);\n margin-bottom: 20px;\n}\n\n.footer-col p {\n color: rgba(255, 255, 255, 0.6);\n margin-bottom: 25px;\n line-height: 1.7;\n}\n\n.social-links {\n display: flex;\n gap: 15px;\n}\n\n.social-link {\n width: 40px;\n height: 40px;\n background: rgba(255, 255, 255, 0.1);\n border: 1px solid rgba(255, 255, 255, 0.2);\n border-radius: 50%;\n display: flex;\n align-items: center;\n justify-content: center;\n text-decoration: none;\n color: white;\n transition: var(--transition);\n font-size: 14px;\n}\n\n.social-link:hover {\n background: var(--color-primary);\n border-color: var(--color-primary);\n transform: translateY(-3px);\n}\n\n.footer-col h4 {\n color: white;\n font-size: 18px;\n margin-bottom: 20px;\n font-weight: 600;\n}\n\n.footer-links {\n list-style: none;\n display: flex;\n flex-direction: column;\n gap: 12px;\n}\n\n.footer-links a {\n color: rgba(255, 255, 255, 0.6);\n text-decoration: none;\n transition: var(--transition);\n font-size: 15px;\n}\n\n.footer-links a:hover {\n color: var(--color-primary);\n padding-left: 5px;\n}\n\n.footer-links li {\n color: rgba(255, 255, 255, 0.6);\n font-size: 15px;\n}\n\n.footer-bottom {\n padding-top: 30px;\n border-top: 1px solid rgba(255, 255, 255, 0.1);\n display: flex;\n justify-content: space-between;\n align-items: center;\n flex-wrap: wrap;\n gap: 20px;\n}\n\n.footer-bottom p {\n color: rgba(255, 255, 255, 0.5);\n font-size: 14px;\n}\n\n.footer-legal {\n display: flex;\n gap: 30px;\n}\n\n.footer-legal a {\n color: rgba(255, 255, 255, 0.5);\n text-decoration: none;\n font-size: 14px;\n transition: var(--transition);\n}\n\n.footer-legal a:hover {\n color: var(--color-primary);\n}\n\n/* Responsive Design */\n@media (max-width: 968px) {\n .nav-menu {\n position: fixed;\n top: 76px;\n left: -100%;\n width: 100%;\n height: calc(100vh - 76px);\n background: white;\n flex-direction: column;\n justify-content: flex-start;\n padding: 40px 0;\n transition: var(--transition);\n box-shadow: var(--shadow-lg);\n }\n \n .nav-menu.active {\n left: 0;\n }\n \n .mobile-toggle {\n display: flex;\n }\n \n .mobile-toggle.active span:nth-child(1) {\n transform: rotate(45deg) translate(7px, 7px);\n }\n \n .mobile-toggle.active span:nth-child(2) {\n opacity: 0;\n }\n \n .mobile-toggle.active span:nth-child(3) {\n transform: rotate(-45deg) translate(7px, -7px);\n }\n \n .about-grid {\n grid-template-columns: 1fr;\n gap: 50px;\n }\n \n .footer-grid {\n grid-template-columns: 1fr 1fr;\n gap: 40px;\n }\n}\n\n@media (max-width: 768px) {\n section {\n padding: 60px 0;\n }\n \n .hero {\n margin-top: 76px;\n min-height: calc(100vh - 76px);\n }\n \n .services-grid {\n grid-template-columns: 1fr;\n gap: 30px;\n }\n \n .contact-cards {\n grid-template-columns: 1fr;\n }\n \n .footer-grid {\n grid-template-columns: 1fr;\n gap: 40px;\n }\n \n .footer-bottom {\n flex-direction: column;\n text-align: center;\n }\n \n .footer-legal {\n flex-direction: column;\n gap: 15px;\n }\n}\n\n@media (max-width: 480px) {\n .hero-buttons {\n flex-direction: column;\n width: 100%;\n }\n \n .btn {\n width: 100%;\n text-align: center;\n }\n \n .container {\n padding: 0 16px;\n }\n \n .service-card,\n .opening-hours {\n padding: 30px 20px;\n }\n}",
"assets/app.js": "// Mobile Menu Toggle\nconst mobileToggle = document.querySelector('.mobile-toggle');\nconst navMenu = document.querySelector('.nav-menu');\nconst body = document.body;\n\nif (mobileToggle && navMenu) {\n mobileToggle.addEventListener('click', () => {\n mobileToggle.classList.toggle('active');\n navMenu.classList.toggle('active');\n body.style.overflow = navMenu.classList.contains('active') ? 'hidden' : '';\n });\n\n // Close menu when clicking on a link\n const navLinks = document.querySelectorAll('.nav-menu a');\n navLinks.forEach(link => {\n link.addEventListener('click', () => {\n mobileToggle.classList.remove('active');\n navMenu.classList.remove('active');\n body.style.overflow = '';\n });\n });\n}\n\n// Navbar scroll effect\nconst navbar = document.querySelector('.navbar');\nlet lastScroll = 0;\n\nwindow.addEventListener('scroll', () => {\n const currentScroll = window.pageYOffset;\n \n if (currentScroll > 100) {\n navbar.classList.add('scrolled');\n } else {\n navbar.classList.remove('scrolled');\n }\n \n lastScroll = currentScroll;\n});\n\n// Active nav link on scroll\nconst sections = document.querySelectorAll('section[id]');\nconst navItems = document.querySelectorAll('.nav-menu a');\n\nfunction highlightNavOnScroll() {\n const scrollY = window.pageYOffset;\n \n sections.forEach(section => {\n const sectionHeight = section.offsetHeight;\n const sectionTop = section.offsetTop - 100;\n const sectionId = section.getAttribute('id');\n \n if (scrollY > sectionTop && scrollY <= sectionTop + sectionHeight) {\n navItems.forEach(item => {\n item.classList.remove('active');\n if (item.getAttribute('href') === `#${sectionId}`) {\n item.classList.add('active');\n }\n });\n }\n });\n}\n\nwindow.addEventListener('scroll', highlightNavOnScroll);\n\n// Smooth scroll for anchor links\nconst anchorLinks = document.querySelectorAll('a[href^=\"#\"]');\n\nanchorLinks.forEach(link => {\n link.addEventListener('click', (e) => {\n const href = link.getAttribute('href');\n \n // Skip if it's just \"#\"\n if (href === '#') {\n e.preventDefault();\n return;\n }\n \n const target = document.querySelector(href);\n \n if (target) {\n e.preventDefault();\n const offsetTop = target.offsetTop - 76; // Account for fixed navbar\n \n window.scrollTo({\n top: offsetTop,\n behavior: 'smooth'\n });\n }\n });\n});\n\n// Intersection Observer for fade-in animations\nconst observerOptions = {\n threshold: 0.1,\n rootMargin: '0px 0px -50px 0px'\n};\n\nconst observer = new IntersectionObserver((entries) => {\n entries.forEach(entry => {\n if (entry.isIntersecting) {\n entry.target.style.opacity = '1';\n entry.target.style.transform = 'translateY(0)';\n }\n });\n}, observerOptions);\n\n// Observe all service cards and about features\nconst animatedElements = document.querySelectorAll('.service-card, .about-feature, .contact-card');\n\nanimatedElements.forEach(el => {\n el.style.opacity = '0';\n el.style.transform = 'translateY(30px)';\n el.style.transition = 'opacity 0.6s ease, transform 0.6s ease';\n observer.observe(el);\n});\n\n// Stagger animation for service cards\nconst serviceCards = document.querySelectorAll('.service-card');\nserviceCards.forEach((card, index) => {\n card.style.transitionDelay = `${index * 0.1}s`;\n});\n\n// Phone and email link tracking (optional analytics)\nconst contactLinks = document.querySelectorAll('a[href^=\"tel:\"], a[href^=\"mailto:\"]');\n\ncontactLinks.forEach(link => {\n link.addEventListener('click', (e) => {\n const type = link.href.startsWith('tel:') ? 'phone' : 'email';\n const value = link.href.replace(/^(tel:|mailto:)/, '');\n \n // Log contact interaction (you can replace this with actual analytics)\n console.log(`Contact interaction: ${type} - ${value}`);\n \n // Example: Google Analytics event\n // if (typeof gtag !== 'undefined') {\n // gtag('event', 'contact', {\n // 'event_category': type,\n // 'event_label': value\n // });\n // }\n });\n});\n\n// Parallax effect for hero section\nconst hero = document.querySelector('.hero');\n\nif (hero) {\n window.addEventListener('scroll', () => {\n const scrolled = window.pageYOffset;\n const parallaxSpeed = 0.5;\n \n if (scrolled < window.innerHeight) {\n hero.style.transform = `translateY(${scrolled * parallaxSpeed}px)`;\n }\n });\n}\n\n// Add loading animation\nwindow.addEventListener('load', () => {\n document.body.classList.add('loaded');\n \n // Animate hero content on load\n const heroContent = document.querySelector('.hero-content');\n if (heroContent) {\n heroContent.style.opacity = '0';\n heroContent.style.transform = 'translateY(30px)';\n \n setTimeout(() => {\n heroContent.style.transition = 'opacity 0.8s ease, transform 0.8s ease';\n heroContent.style.opacity = '1';\n heroContent.style.transform