Files
kantinen-wrapper/dist/install.html

282 lines
171 KiB
HTML
Executable File
Raw 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.
<!DOCTYPE html>
<html lang="de">
<head>
<meta charset="UTF-8">
<title>Kantine Wrapper Installer (v1.6.10)</title>
<link rel="icon" type="image/png" href="data:image/png;base64,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">
<style>
body { font-family: 'Inter', sans-serif; max-width: 600px; margin: 40px auto; padding: 20px; background: #1a1a2e; color: #eee; }
h1 { color: #029AA8; } /* Knapp Teal */
.instructions { background: #16213e; padding: 20px; border-radius: 12px; margin: 20px 0; }
.instructions ol li { margin: 10px 0; }
a.bookmarklet { display: inline-block; background: #029AA8; color: white; padding: 12px 24px; border-radius: 8px; text-decoration: none; font-weight: 600; font-size: 18px; cursor: grab; }
a.bookmarklet:hover { background: #006269; }
code { background: #0f3460; padding: 2px 6px; border-radius: 4px; }
/* Collapsible Changelog */
details.styled-details { background: rgba(0,0,0,0.2); border-radius: 8px; overflow: hidden; }
summary.styled-summary { padding: 15px; cursor: pointer; font-weight: bold; list-style: none; display: flex; justify-content: space-between; align-items: center; user-select: none; }
summary.styled-summary:hover { background: rgba(255,255,255,0.05); }
summary.styled-summary::-webkit-details-marker { display: none; }
summary.styled-summary::after { content: '▼'; font-size: 0.8em; transition: transform 0.2s; }
details.styled-details[open] summary.styled-summary::after { transform: rotate(180deg); transition: transform 0.2s; }
.changelog-container { padding: 0 15px 15px 15px; border-top: 1px solid rgba(255,255,255,0.05); }
</style>
</head>
<body>
<!-- Banner Video: plays once, collapses after ending -->
<div id="banner-video-wrap" style="width: 100%; max-width: 600px; margin: 0 auto 20px auto; border-radius: 12px; overflow: hidden; pointer-events: none; user-select: none; max-height: 400px; opacity: 1; transition: max-height 0.8s ease-in-out, opacity 0.6s ease-in-out, margin 0.8s ease-in-out;">
<video id="banner-video" autoplay muted playsinline disablepictureinpicture style="width: 100%; display: block;" src="https://github.com/TauNeutrino/kantine-overview/raw/main/dist/Arrow_and_fork_fly_away_bd43310bea.mp4"></video>
</div>
<script>
document.getElementById('banner-video').addEventListener('ended', function() {
var w = document.getElementById('banner-video-wrap');
w.style.maxHeight = '0';
w.style.opacity = '0';
w.style.marginBottom = '0';
});
</script>
<div style="text-align: center; margin-bottom: 30px;">
<h1 style="margin-bottom: 5px; display: flex; align-items: center; justify-content: center; gap: 10px;">
<img src="data:image/png;base64,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" alt="Logo" style="width: 40px; height: 40px;">
Kantine Wrapper
<span style="font-size:0.5em; opacity:0.6; font-weight:400; margin-left:5px;">v1.6.10</span>
</h1>
<p style="font-size: 1.2rem; color: #a0aec0; margin-top: 0; font-style: italic;">"Mahlzeit! Jetzt bessa einfach."</p>
</div>
<!-- 1. BUTTON (Top Priority) -->
<div class="card" style="text-align: center; border: 2px solid #029AA8;">
<p style="margin-bottom:15px; font-weight:bold;">👇 Diesen Button in die Lesezeichen-Leiste ziehen:</p>
<p><a class="bookmarklet" id="bookmarklet-link" href="#" onclick="event.preventDefault(); return false;" title="Nicht klicken! Ziehe mich in deine Lesezeichen-Leiste.">⏳ Wird generiert...</a></p>
</div>
<!-- 2. INSTRUCTIONS -->
<div class="card">
<h2>So funktioniert's</h2>
<ol>
<li>Ziehe den Button oben in deine <strong>Lesezeichen-Leiste</strong> (Drag & Drop)</li>
<li>Navigiere zu <a href="https://web.bessa.app/knapp-kantine" style="color:#029AA8">web.bessa.app/knapp-kantine</a></li>
<li>Klicke auf das Lesezeichen <code>Kantine v1.6.10</code></li>
</ol>
</div>
<!-- 3. FEATURES -->
<div class="card">
<h2>✨ Features</h2>
<ul>
<li>📅 <strong>Wochenübersicht:</strong> Die ganze Woche auf einen Blick.</li>
<li><strong>Order Countdown:</strong> Roter Alarm 1h vor Bestellschluss.</li>
<li>🌟 <strong>Smart Highlights:</strong> Markiere deine Favoriten (z.B. "Schnitzel").</li>
<li>💰 <strong>Kostenkontrolle:</strong> Automatische Berechnung der Wochensumme.</li>
<li>🔑 <strong>Auto-Login:</strong> Nutzt deine bestehende Session.</li>
<li>🏷️ <strong>Badges & Status:</strong> Menü-Codes (M1, M2) und Bestellstatus direkt sichtbar.</li>
</ul>
<div style="margin-top: 30px; padding: 15px; background: rgba(233, 69, 96, 0.1); border: 1px solid rgba(233, 69, 96, 0.3); border-radius: 8px; font-size: 0.85em; color: #ddd;">
<strong>⚠️ Haftungsausschluss:</strong><br>
Die Verwendung dieses Bookmarklets erfolgt auf eigene Verantwortung. Der Entwickler übernimmt keine Haftung für Schäden, Datenverlust oder ungewollte Bestellungen, die durch die Nutzung dieser Software entstehen.
</div>
</div>
<!-- 4. CHANGELOG (Bottom) -->
<div class="card">
<details class="styled-details">
<summary class="styled-summary">Changelog & Version History</summary>
<div class="changelog-container">
<h3>v1.6.10 (2026-03-09)</h3>
<ul>
<li>**Feature**: Robuste Kurs-Erkennung in zweisprachigen Menüs ([FR-121](REQUIREMENTS.md#FR-121)).</li>
<li>**Fix**: Verhindert das Verschieben von Gängen bei fehlenden englischen Übersetzungen.</li>
<li>**Improved**: Heuristik-Split erkennt nun zuverlässiger den Übergang von Englisch zurück zu Deutsch (z.B. bei "Achtung"-Hinweisen)</li>
</ul>
<h3>v1.6.9 (2026-03-09)</h3>
<ul>
<li>🐛 **Bugfix**: Fehlerhafte Zeitangabe beim Bell-Icon ("vor 291h") behoben. Der Tooltip wird nun minütlich aktualisiert und nach jeder Menü-Prüfung korrekt neu gesetzt.</li>
<li>🔄 **Refactor**: Zeitstempel-Management für die letzte Aktualisierung vereinheitlicht und im `localStorage` persistiert.</li>
</ul>
<h3>v1.6.8 (2026-03-06)</h3>
<ul>
<li>⚡ **Performance**: Das JavaScript für das Kantinen-Bookmarklet wird nun beim Build-Prozess (via Terser) minimiert, was die Länge der injizierten URL spürbar reduziert.</li>
</ul>
<h3>v1.6.7 (2026-03-06)</h3>
<ul>
<li>🎨 **Style**: Das neue Header-Logo (`favicon_base.png`) wird nun konsequent auf 40x40px generiert und gerendert.</li>
</ul>
<h3>v1.6.6 (2026-03-06)</h3>
<ul>
<li>🎨 **Style**: Den Schatten und den hervorstehenden Karten-Effekt für bestellte Menüs an vergangenen Tagen komplett entfernt - verbleiben nun visuell flach und unaufdringlich wie nicht-bestellte Menüs.</li>
</ul>
<h3>v1.6.5 (2026-03-06)</h3>
<ul>
<li>✨ **Feature**: Das `restaurant_menu` Icon im Header wurde durch das neue `favicon_base.png` Logo ersetzt, passend zur Textgröße skaliert.</li>
<li>🎨 **Style**: Violette Umrahmung (Bestellt-Markierung) an vergangenen Tagen entfernt, um den Fokus auf aktuelle und zukünftige Bestellungen zu lenken.</li>
<li>🎨 **Style**: Der Glow-Effekt für am heutigen Tag bestellte Menüs wurde intensiviert.</li>
</ul>
<h3>v1.6.4 (2026-03-05)</h3>
<ul>
<li>✨ **Feature**: Sprach-Lexikon (DE/EN) massiv erweitert um österreichische Begriffe (Nockerl, Fleckerl, Topfen, Mohn, Most etc.) und gängige Tippfehler aus dem Bessa-System (trukey, coffe, oveb etc.).</li>
<li>🧹 **Cleanup**: Sprach-Lexikon dedupliziert und alphabetisch sortiert für bessere Performance und Wartbarkeit.</li>
<li>🐛 **Bugfix**: Trennung von zweisprachigen Menüs (`splitLanguage`) verbessert: Erfasst nun auch Schrägstriche ohne Leerzeichen (z.B. `Suppe/Soup`).</li>
<li>🐛 **Bugfix**: Fehlerhafte Badge-Anzeige korrigiert (Variable `count` vs `orderCount`).</li>
</ul>
<h3>v1.6.3 (2026-03-05)</h3>
<ul>
<li>✨ **Chore**: Slogan im Footer aktualisiert ("Jetzt Bessa Einfach! • Knapp-Kantine Wrapper • 2026 by Kaufis-Kitchen") und Footer-Höhe für mehr Platzierung optimiert.</li>
</ul>
<h3>v1.6.2 (2026-03-05)</h3>
<ul>
<li>✨ **Feature**: Wochentags-Header (Montag, Dienstag etc.) scrollen nun als "Sticky Header" mit und bleiben am oberen Bildschirmrand haften.</li>
- Das Layout clippt scrollende Speisen ordentlich darunter weg.
- Vollständiges Viewport-Scrolling: Das Layout nutzt nun die ganze Höhe aus (`100dvh`), wodurch Scrollbalken sauber am Rand positioniert sind.
<li>🐛 **Bugfix**: Probleme mit Bessa's default `overflow` Verhalten behoben, das `position: sticky` auf iOS/WebKit-Browsern blockierte.</li>
</ul>
<h3>v1.6.0 (2026-03-04)</h3>
<ul>
<li>✨ **Feature**: Sprachfilter für zweisprachige Menübeschreibungen. Neuer DE/EN/ALL Toggle im Header ermöglicht das Umschalten zwischen Deutsch, Englisch und dem vollen Originaltext. Allergen-Codes werden in allen Modi angezeigt. Einstellung wird persistent gespeichert.</li>
</ul>
<h3>v1.5.1 (2026-03-04)</h3>
<ul>
<li>🐛 **Bugfix**: Freitagsbestellungen schlugen fehl ("Onlinebestellung sind nicht verfügbar"). Ursache: Der Order-Payload verwendete `preorder: false` und eine falsche Uhrzeit (`T10:00:00.000Z` statt `T10:30:00Z`). Beides wurde anhand der originalen Bessa-API korrigiert.</li>
</ul>
<h3>v1.5.0 (2026-02-26)</h3>
Das große "Quality of Life"-Update! Zusammenfassung aller Features und Fixes seit v1.4.0:
<li>✨ **Bestellhistorie**: Übersichtliche Historie direkt in der App gruppiert nach Jahr/Monat, inklusive Summen, Stati (Offen/Abgeschlossen/Storniert) und Delta-Cache für rasantes Laden.</li>
<li>⚡ **Smart Cache & Performance**: Massive Reduzierung von API-Calls und Ladezeiten durch intelligenten lokalen Cache. Das Bookmarklet startet nun praktisch verzögerungsfrei.</li>
<li>🔄 **GitHub Release Management**: In-App Versions-Menü mit Auto-Update Check (`🆕` Icon). Umschalten zwischen "Stable" und "Dev" Versionen sowie Downgrade-Möglichkeit direkt über die GitHub API.</li>
<li>🌟 **Smart Highlights & UX**: Speisen-Favoriten leuchten nun im Design-Violett und erhalten Feature-Badges. Der Bestell-Badge für nächste Woche filtert nun intelligent personalisierte Highlights voraus.</li>
<li>🔔 **Bestell-Warnung & Notifications**: Der System-Alarm berücksichtigt nun Sessions korrekt, zeigt dynamische Farbwechsel (gelb/grün/rot) und warnt verlässlich vor dem Bestellschluss (10:00 Uhr). Altlasten von Vortagen werden automatisch geputzt.</li>
<li>🎨 **Eigenes Favicon**: Das Bookmarklet und der Installer haben nun ein eigenes Icon (Dreieck mit Besteck), das beim Hineinziehen in die Lesezeichenleiste übernommen wird (dynamisch generiert als lokales PNG).</li>
<li>🧹 **Lokaler Cache-Clear**: Ein in das Versions-Menü eingebauter "Papierkorb", der ausschließlich fehlerhafte Kantinen-Caches putzt, ohne dabei versehentlich die aktive Bessa-Host-Session zu zerstören.</li>
<li>🔒 **Sitzungs-Persistenz**: Die Login-Session überdauert jetzt neue Tabs, Fenster und Version-Upgrades reibungslos durch den Wechsel auf `localStorage`.</li>
<li>🛡️ **Testing & Stabilität**: Vollautomatische DOM- und Logik-Testing-Suites in der Release-Pipeline integriert. Fehlerhafte UI-Buttons gehören der Vergangenheit an.</li>
</ul>
<h3>v1.4.0 (2026-02-22)</h3>
<ul>
<li>**Feature**: Bestellhistorie per Knopfdruck abrufbar. Übersichtliche Darstellung, gruppiert nach Monaten und Kalenderwochen, inklusive Stornos. 📜✨</li>
</ul>
<h3>v1.3.2 (2026-02-19)</h3>
<ul>
<li>**Fix**: Falsche Anzahl an Highlight-Menüs im "Nächste Woche"-Badge korrigiert (zählte alle Menüs statt nur Highlights). 🐛</li>
</ul>
<h3>v1.3.1 (2026-02-17)</h3>
<ul>
<li>**Feature**: Smart Cache API-Refresh beim Start wird übersprungen wenn Daten für die aktuelle KW vorhanden und Cache < 1h alt ist. </li>
</ul>
<h3>v1.3.0 (2026-02-16)</h3>
<ul>
<li>**Feature**: GitHub Release Management 📦</li>
- Version-Menü: Klick auf Versionsnummer zeigt alle verfügbaren Versionen
- Dev-Mode Toggle: Zwischen Releases (stabil) und Tags (dev) wechseln
- Downgrade-Support: Jede Version hat einen eigenen Installer-Link
- Update-Check nutzt jetzt die GitHub API statt `version.txt`
- GitHub PAT für höheres API-Rate-Limit (5000/h)
- SemVer-Check: Update-Icon nur bei wirklich neuerer Version
<h3>v1.2.9 (2026-02-16)</h3>
<h3>v1.2.8 (2026-02-16)</h3>
<ul>
<li>**Debug**: Weiteres Logging (Fetch-Status, Start-Log) zur Fehlersuche. 🔎</li>
</ul>
<h3>v1.2.7 (2026-02-16)</h3>
<ul>
<li>**Debug**: Verbose Logging für Update-Check eingebaut. 🐞</li>
</ul>
<h3>v1.2.6 (2026-02-16)</h3>
<ul>
<li>**Test**: Version Bump zum Testen der Live-Update-Erkennung. 🧪</li>
</ul>
<h3>v1.2.5 (2026-02-16)</h3>
<ul>
<li>**Refactor**: Update-Erkennung komplett überarbeitet (stündlicher Check, diskretes 🆕 Icon im Header, kein Banner mehr). 🔄</li>
<li>**Cleanup**: Ungenutzter CSS-Code und Netzwerk-Traffic reduziert. 🧹</li>
<li>**Fix**: Highlight-Logik stabilisiert (keine falschen Matches bei leeren Tags). 🏷️</li>
</ul>
<h3>v1.2.4 (2026-02-16)</h3>
<ul>
<li>**Feature**: Gefundene Highlights werden jetzt direkt im Menü als Badge angezeigt. 🏷️</li>
</ul>
<h3>v1.2.3 (2026-02-16)</h3>
<ul>
<li>**Fix**: Update-Icon ist jetzt klickbar und führt direkt zum Installer. 🔗</li>
<li>**Dev**: Unit-Tests für Update-Logik im Build integriert. 🛡️</li>
</ul>
<h3>v1.2.2 (2026-02-16)</h3>
<ul>
<li>**UX**: Installer-Changelog jetzt einklappbar für mehr Übersicht. 📂</li>
</ul>
<h3>v1.2.1 (2026-02-16)</h3>
<ul>
<li>**Fix**: Smart Highlights werden jetzt korrekt auf Menü-Items angewendet (`checkHighlight` in `createDayCard`). 🌟</li>
<li>**Feature**: Mock-Daten (`mock-data.js`) für Standalone-Tests eingebaut. 🧪</li>
<li>**Style**: Highlight-Glow mit blauer Puls-Animation (`blue-pulse`) überarbeitet. 💎</li>
<li>**Style**: Tag-Badges konsistent mit Badge-System gestaltet. 🏷️</li>
<li>**Style**: "Hinzufügen"-Button (`#btn-add-tag`) als Primary-Button gestylt. 🎨</li>
<li>**Style**: Modal-Body Padding und Input-Font korrigiert. 🔧</li>
<li>**Docs**: README Projektstruktur mit Tabelle für `dist/`-Artefakte ergänzt. 📖</li>
</ul>
<h3>v1.2.0 (2026-02-16)</h3>
<ul>
<li>**Feature**: Bessere UX im Installer (Button oben, Log unten, Features aktualisiert). 💅</li>
<li>**Tech**: Build-Tests hinzugefügt. 🧪</li>
<li>**Fix**: Encoding-Probleme final behoben (dank Python Buildlogic). 🐍</li>
</ul>
<h3>v1.1.2 (2026-02-16)</h3>
<ul>
<li>**Fix**: Encoding-Problem beim Bookmarklet behoben (URL Malformed Error). 🔗</li>
</ul>
<h3>v1.1.1 (2026-02-16)</h3>
<ul>
<li>**Fix**: Kritischer Fehler behoben, der das Laden des Wrappers verhinderte. 🐛</li>
</ul>
<h3>v1.1.0 (2026-02-16)</h3>
<ul>
<li>**Feature: Bestell-Countdown**: Zeigt 1 Stunde vor Bestellschluss einen roten Countdown an. ⏳</li>
<li>**Feature: Smart Highlights**: Markiere deine Lieblingsspeisen (z.B. "Schnitzel", "Vegetarisch"), damit sie leuchten. 🌟</li>
<li>**Feature: Changelog**: Diese Übersicht der Änderungen. 📜</li>
<li>**Verbesserung**: Live-Check der Version beim Update.</li>
</ul>
<h3>v1.0.3 (2026-02-13)</h3>
<ul>
<li>**Fix**: Update-Link öffnet nun den Installer direkt als Webseite (via htmlpreview).</li>
</ul>
<h3>v1.0.2 (2026-02-13)</h3>
<ul>
<li>**Sync**: Version mit GitHub synchronisiert.</li>
</ul>
<h3>v1.0.1 (2026-02-12)</h3>
<ul>
<li>**UI**: Besseres Design für "Nächste Woche" (Badges).</li>
<li>**Core**: Grundlegende Funktionen (Bestellen, Guthaben, Token-Store).</li>
</div>
</details>
</div>
<div style="text-align: center; margin-top: 40px; color: #5c6b7f; font-size: 0.8rem;">
<p>Powered by <strong>Kaufis-Kitchen</strong> 👨‍🍳</p>
</div>
<script>
document.getElementById('bookmarklet-link').href =
"javascript:(function()%7Bvar%20s=document.createElement(%27style%27);s.textContent=%27:root%20%7B%20%20%20/%2A%20Premium%20Slate/Gray-Blue%20Palette%20-%20Light%20Mode%20%2A/%20%20%20--bg-body:%20%23f1f5f9;%20%20%20/%2A%20Slate%20100%20%2A/%20%20%20--bg-card:%20%23ffffff;%20%20%20--text-primary:%20%23334155;%20%20%20/%2A%20Slate%20700%20%2A/%20%20%20--text-secondary:%20%2364748b;%20%20%20--accent-color:%20%230f172a;%20%20%20/%2A%20Slate%20900%20(High%20contrast)%20%2A/%20%20%20--border-color:%20%23cbd5e1;%20%20%20/%2A%20Slate%20300%20%2A/%20%20%20--banner-bg:%20%23e2e8f0;%20%20%20--banner-text:%20%231e293b;%20%20%20--success-color:%20%23059669;%20%20%20--error-color:%20%23dc2626;%20%20%20--card-shadow:%200%204px%206px%20-1px%20rgb(0%200%200%20/%200.05),%200%202px%204px%20-2px%20rgb(0%200%200%20/%200.05);%20%20%20--header-bg:%20rgba(255,%20255,%20255,%200.9);%20%20%20--header-border:%201px%20solid%20rgba(203,%20213,%20225,%200.6);%20%7D%20%5Bdata-theme=%5C%22dark%5C%22%5D%20%7B%20%20%20/%2A%20Premium%20Slate/Gray-Blue%20Palette%20-%20Dark%20Mode%20%2A/%20%20%20--bg-body:%20%231e293b;%20%20%20/%2A%20Deep%20Slate%20Gray%20(Requested)%20%2A/%20%20%20--bg-card:%20%23334155;%20%20%20/%2A%20Slate%20700%20%2A/%20%20%20--text-primary:%20%23f8fafc;%20%20%20/%2A%20Slate%2050%20%2A/%20%20%20--text-secondary:%20%23cbd5e1;%20%20%20/%2A%20Slate%20300%20%2A/%20%20%20--accent-color:%20%2360a5fa;%20%20%20/%2A%20Blue%20400%20%2A/%20%20%20--border-color:%20%23475569;%20%20%20/%2A%20Slate%20600%20%2A/%20%20%20--banner-bg:%20%23475569;%20%20%20--banner-text:%20%23e2e8f0;%20%20%20--header-bg:%20rgba(30,%2041,%2059,%200.9);%20%20%20--header-border:%201px%20solid%20rgba(71,%2085,%20105,%200.6);%20%20%20--card-shadow:%200%2010px%2015px%20-3px%20rgb(0%200%200%20/%200.4);%20%7D%20%2A%20%7B%20%20%20box-sizing:%20border-box;%20%20%20margin:%200;%20%20%20padding:%200;%20%7D%20body%20%7B%20%20%20font-family:%20%5C%27Inter%5C%27,%20system-ui,%20-apple-system,%20sans-serif;%20%20%20background-color:%20var(--bg-body);%20%20%20color:%20var(--text-primary);%20%20%20transition:%20background-color%200.3s%20ease,%20color%200.3s%20ease;%20%20%20line-height:%201.5;%20%20%20-webkit-font-smoothing:%20antialiased;%20%7D%20/%2A%20Fix%20scrolling%20bug:%20Reset%20html/body%20styles%20from%20host%20page%20%2A/%20/%2A%20IMPORTANT:%20html%20must%20NOT%20have%20overflow%20set,%20or%20it%20creates%20a%20scroll%20container%20that%20breaks%20position:%20sticky%20%2A/%20html%20%7B%20%20%20height:%20auto%20!important;%20%20%20min-height:%20100%25%20!important;%20%20%20overflow:%20visible%20!important;%20%20%20position:%20static%20!important;%20%20%20margin:%200%20!important;%20%20%20padding:%200%20!important;%20%7D%20body%20%7B%20%20%20height:%20auto%20!important;%20%20%20min-height:%20100%25%20!important;%20%20%20overflow-x:%20clip%20!important;%20%20%20/%2A%20clip%20prevents%20horizontal%20overflow%20without%20breaking%20sticky%20%2A/%20%20%20overflow-y:%20visible%20!important;%20%20%20position:%20static%20!important;%20%20%20margin:%200%20!important;%20%20%20padding:%200%20!important;%20%7D%20/%2A%20Header%20%2A/%20.app-header%20%7B%20%20%20flex-shrink:%200;%20%20%20z-index:%20100;%20%20%20backdrop-filter:%20blur(12px);%20%20%20background-color:%20var(--header-bg);%20%20%20border-bottom:%20var(--header-border);%20%20%20padding:%201rem%200;%20%7D%20.header-content%20%7B%20%20%20width:%20100%25;%20%20%20/%2A%20Full%20width%20%2A/%20%20%20padding:%200%202rem;%20%20%20/%2A%20Comfortable%20padding%20%2A/%20%20%20display:%20grid;%20%20%20grid-template-columns:%201fr%20auto%201fr;%20%20%20align-items:%20center;%20%20%20gap:%201rem;%20%7D%20.brand%20%7B%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%200.75rem;%20%7D%20.brand-text%20%7B%20%20%20display:%20flex;%20%20%20flex-direction:%20column;%20%7D%20.brand%20h1%20%7B%20%20%20font-size:%201.25rem;%20%20%20font-weight:%20700;%20%20%20letter-spacing:%20-0.025em;%20%20%20margin-bottom:%200;%20%7D%20.subtitle%20%7B%20%20%20font-size:%200.85rem;%20%20%20color:%20var(--text-secondary);%20%20%20font-weight:%20400;%20%20%20margin-left:%202px;%20%7D%20.logo-icon%20%7B%20%20%20font-size:%201.5rem;%20%20%20color:%20var(--accent-color);%20%7D%20/%2A%20Controls%20%2A/%20.controls%20%7B%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%201.5rem;%20%20%20justify-self:%20end;%20%7D%20/%2A%20Header%20Week%20Info%20(centered)%20%2A/%20.header-week-info%20%7B%20%20%20text-align:%20center;%20%20%20line-height:%201.3;%20%7D%20.header-center-wrapper%20%7B%20%20%20display:%20flex;%20%20%20flex-direction:%20row;%20%20%20align-items:%20center;%20%20%20gap:%201.5rem;%20%20%20justify-content:%20center;%20%7D%20%20.header-week-title%20%7B%20%20%20font-size:%201.1rem;%20%20%20font-weight:%20600;%20%20%20color:%20var(--text-primary);%20%7D%20.header-week-subtitle%20%7B%20%20%20font-size:%200.85rem;%20%20%20color:%20var(--text-secondary);%20%7D%20/%2A%20Language%20Toggle%20(FR-100)%20%2A/%20.lang-toggle%20%7B%20%20%20display:%20inline-flex;%20%20%20gap:%200;%20%20%20border-radius:%206px;%20%20%20overflow:%20hidden;%20%20%20border:%201px%20solid%20var(--border-color);%20%20%20background:%20var(--bg-card);%20%7D%20.lang-btn%20%7B%20%20%20padding:%203px%2010px;%20%20%20font-size:%200.7rem;%20%20%20font-weight:%20600;%20%20%20letter-spacing:%200.03em;%20%20%20background:%20transparent;%20%20%20color:%20var(--text-secondary);%20%20%20border:%20none;%20%20%20cursor:%20pointer;%20%20%20transition:%20all%200.2s;%20%7D%20.lang-btn:hover%20%7B%20%20%20color:%20var(--text-primary);%20%20%20background:%20rgba(100,%20116,%20139,%200.1);%20%7D%20.lang-btn.active%20%7B%20%20%20background:%20var(--accent-color);%20%20%20color:%20white;%20%7D%20.nav-group%20%7B%20%20%20display:%20flex;%20%20%20background-color:%20var(--bg-card);%20%20%20border:%201px%20solid%20var(--border-color);%20%20%20padding:%200.25rem;%20%20%20border-radius:%208px;%20%7D%20.nav-btn%20%7B%20%20%20background:%20none;%20%20%20border:%20none;%20%20%20padding:%200.5rem%201rem;%20%20%20font-size:%200.875rem;%20%20%20font-weight:%20500;%20%20%20color:%20var(--text-secondary);%20%20%20cursor:%20pointer;%20%20%20border-radius:%206px;%20%20%20transition:%20all%200.2s;%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%200.5rem;%20%7D%20.nav-btn:hover%20%7B%20%20%20color:%20var(--text-primary);%20%20%20background-color:%20rgba(100,%20116,%20139,%200.1);%20%7D%20.nav-btn.active%20%7B%20%20%20background-color:%20var(--accent-color);%20%20%20color:%20white;%20%7D%20/%2A%20Notification%20state%20for%20Next%20Week%20%2A/%20.nav-btn.new-week-available%20%7B%20%20%20animation:%20goldPulse%202s%20infinite;%20%20%20border-color:%20%23f59e0b;%20%20%20color:%20var(--accent-color);%20%7D%20.nav-btn.new-week-available.active%20%7B%20%20%20color:%20white;%20%7D%20%40keyframes%20goldPulse%20%7B%20%20%200%25%20%7B%20%20%20%20%20box-shadow:%200%200%200%200%20rgba(245,%20158,%2011,%200.7);%20%20%20%7D%20%20%2070%25%20%7B%20%20%20%20%20box-shadow:%200%200%200%2010px%20rgba(245,%20158,%2011,%200);%20%20%20%7D%20%20%20100%25%20%7B%20%20%20%20%20box-shadow:%200%200%200%200%20rgba(245,%20158,%2011,%200);%20%20%20%7D%20%7D%20%20/%2A%20Badge%20for%20nav%20buttons%20(day%20count%20indicator)%20%2A/%20.nav-badge%20%7B%20%20%20background-color:%20var(--error-color);%20%20%20color:%20white;%20%20%20font-size:%200.75rem;%20%20%20font-weight:%20600;%20%20%20padding:%200%206px;%20%20%20border-radius:%2010px;%20%20%20min-width:%2018px;%20%20%20height:%2018px;%20%20%20display:%20inline-flex;%20%20%20align-items:%20center;%20%20%20justify-content:%20center;%20%20%20margin-left:%208px;%20%20%20gap:%203px;%20%20%20line-height:%201;%20%7D%20.nav-badge%20.orderable%20%7B%20%20%20color:%20%23fff;%20%20%20font-weight:%20800;%20%7D%20.nav-badge%20.separator%20%7B%20%20%20opacity:%200.6;%20%20%20font-weight:%20400;%20%7D%20.nav-badge%20.total%20%7B%20%20%20opacity:%200.8;%20%20%20font-weight:%20400;%20%7D%20.nav-btn.active%20.nav-badge%20%7B%20%20%20background:%20rgba(255,%20255,%20255,%200.3);%20%7D%20/%2A%20Primary%20style%20for%20Login%20Button%20to%20match%20header%20%2A/%20%23btn-login-open%20%7B%20%20%20background-color:%20var(--accent-color);%20%20%20color:%20white;%20%20%20padding:%200.5rem%201.25rem;%20%20%20border-radius:%208px;%20%20%20font-weight:%20600;%20%20%20letter-spacing:%200.025em;%20%20%20box-shadow:%200%202px%204px%20rgba(0,%200,%200,%200.1);%20%7D%20%23btn-login-open:hover%20%7B%20%20%20background-color:%20%23334155;%20%20%20/%2A%20Slightly%20lighter%20than%20slate-900%20%2A/%20%20%20transform:%20translateY(-1px);%20%20%20box-shadow:%200%204px%206px%20rgba(0,%200,%200,%200.1);%20%7D%20/%2A%20User%20Badge%20Button%20(Login)%20%2A/%20.user-badge-btn%20%7B%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%208px;%20%20%20padding:%206px%2012px;%20%20%20background:%20var(--bg-card);%20%20%20border:%201px%20solid%20var(--border-color);%20%20%20border-radius:%2020px;%20%20%20font-size:%200.9rem;%20%20%20font-weight:%20500;%20%20%20color:%20var(--text-primary);%20%20%20cursor:%20pointer;%20%20%20transition:%20all%200.2s;%20%7D%20.user-badge-btn:hover%20%7B%20%20%20background:%20rgba(100,%20116,%20139,%200.1);%20%20%20border-color:%20var(--accent-color);%20%7D%20.user-badge-btn%20.material-icons-round%20%7B%20%20%20font-size:%201.25rem;%20%20%20color:%20var(--accent-color);%20%7D%20.icon-btn%20%7B%20%20%20background:%20none;%20%20%20border:%20none;%20%20%20color:%20var(--text-primary);%20%20%20cursor:%20pointer;%20%20%20padding:%200.5rem;%20%20%20border-radius:%2050%25;%20%20%20transition:%20background-color%200.2s;%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20justify-content:%20center;%20%7D%20.icon-btn:hover%20%7B%20%20%20background-color:%20rgba(100,%20116,%20139,%200.1);%20%7D%20/%2A%20Refresh%20button%20animation%20%2A/%20%23btn-refresh.refreshing%20.material-icons-round%20%7B%20%20%20animation:%20rotate%201s%20linear%20infinite;%20%7D%20%40keyframes%20rotate%20%7B%20%20%20from%20%7B%20%20%20%20%20transform:%20rotate(0deg);%20%20%20%7D%20%20%20to%20%7B%20%20%20%20%20transform:%20rotate(360deg);%20%20%20%7D%20%7D%20/%2A%20Progress%20Modal%20%2A/%20.progress-container%20%7B%20%20%20margin-bottom:%201.5rem;%20%7D%20.progress-bar%20%7B%20%20%20width:%20100%25;%20%20%20height:%208px;%20%20%20background-color:%20var(--border-color);%20%20%20border-radius:%204px;%20%20%20overflow:%20hidden;%20%20%20margin-bottom:%200.75rem;%20%7D%20.progress-fill%20%7B%20%20%20height:%20100%25;%20%20%20background:%20linear-gradient(90deg,%20var(--accent-color)%200%25,%20%2360a5fa%20100%25);%20%20%20width:%200%25;%20%20%20transition:%20width%200.3s%20ease;%20%20%20border-radius:%204px;%20%7D%20.progress-percent%20%7B%20%20%20text-align:%20center;%20%20%20font-size:%201.5rem;%20%20%20font-weight:%20700;%20%20%20color:%20var(--text-primary);%20%20%20margin-bottom:%200.5rem;%20%7D%20.progress-message%20%7B%20%20%20text-align:%20center;%20%20%20color:%20var(--text-secondary);%20%20%20font-size:%200.9rem;%20%20%20font-weight:%20500;%20%7D%20.weekly-cost%20%7B%20%20%20background-color:%20rgba(59,%20130,%20246,%200.1);%20%20%20/%2A%20Blue%20tint%20%2A/%20%20%20color:%20var(--accent-color);%20%20%20padding:%200.4rem%200.8rem;%20%20%20border-radius:%208px;%20%20%20font-weight:%20600;%20%20%20font-size:%200.9rem;%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%200.5rem;%20%20%20border:%201px%20solid%20rgba(59,%20130,%20246,%200.2);%20%7D%20.weekly-cost%20.material-icons-round%20%7B%20%20%20font-size:%2018px;%20%7D%20/%2A%20Container%20-%20flex%20column,%20full%20width%20so%20child%20scrollbar%20is%20at%20edge%20%2A/%20.container%20%7B%20%20%20flex:%201;%20%20%20width:%20100%25;%20%20%20overflow:%20hidden;%20%20%20padding:%200%200%200%200;%20%20%20/%2A%20Only%20top%20padding,%20no%20horizontal%20so%20child%20fills%20width%20%2A/%20%20%20display:%20flex;%20%20%20flex-direction:%20column;%20%7D%20/%2A%20Add%20horizontal%20padding%20to%20direct%20children%20of%20container%20to%20maintain%20layout%20%2A/%20.container%3E%2A:not(.menu-grid)%20%7B%20%20%20padding-left:%202rem;%20%20%20padding-right:%202rem;%20%7D%20/%2A%20Banner%20%2A/%20.banner%20%7B%20%20%20background-color:%20var(--banner-bg);%20%20%20color:%20var(--banner-text);%20%20%20padding:%200.75rem%201rem;%20%20%20border-radius:%208px;%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%200.5rem;%20%20%20margin-bottom:%202rem;%20%20%20font-size:%200.875rem;%20%20%20font-weight:%20500;%20%20%20border:%201px%20solid%20var(--border-color);%20%20%20max-width:%20fit-content;%20%7D%20/%2A%20User%20Badge%20%2A/%20.user-badge%20%7B%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%208px;%20%20%20padding:%206px%2012px;%20%20%20background:%20var(--bg-card);%20%20%20/%2A%20Changed%20from%20--surface%20%2A/%20%20%20border:%201px%20solid%20var(--border-color);%20%20%20/%2A%20Changed%20from%20--border%20%2A/%20%20%20border-radius:%2020px;%20%20%20font-size:%200.9rem;%20%20%20font-weight:%20500;%20%7D%20.icon-btn-small%20%7B%20%20%20background:%20none;%20%20%20border:%20none;%20%20%20padding:%204px;%20%20%20cursor:%20pointer;%20%20%20color:%20var(--text-secondary);%20%20%20/%2A%20Changed%20from%20--text-muted%20%2A/%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20justify-content:%20center;%20%20%20border-radius:%2050%25;%20%20%20transition:%20all%200.2s;%20%7D%20.icon-btn-small:hover%20%7B%20%20%20color:%20var(--error-color);%20%20%20/%2A%20Changed%20from%20--danger%20%2A/%20%20%20background:%20rgba(239,%2068,%2068,%200.1);%20%7D%20/%2A%20Modal%20%2A/%20.modal%20%7B%20%20%20position:%20fixed;%20%20%20top:%200;%20%20%20left:%200;%20%20%20width:%20100%25;%20%20%20height:%20100%25;%20%20%20background:%20rgba(0,%200,%200,%200.5);%20%20%20backdrop-filter:%20blur(4px);%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20justify-content:%20center;%20%20%20z-index:%201000;%20%20%20transition:%20all%200.3s;%20%7D%20.modal.hidden%20%7B%20%20%20opacity:%200;%20%20%20pointer-events:%20none;%20%7D%20.modal-content%20%7B%20%20%20background:%20var(--bg-card);%20%20%20width:%2090%25;%20%20%20max-width:%20400px;%20%20%20border-radius:%2016px;%20%20%20box-shadow:%200%2020px%2025px%20-5px%20rgba(0,%200,%200,%200.1),%200%2010px%2010px%20-5px%20rgba(0,%200,%200,%200.04);%20%20%20overflow:%20hidden;%20%20%20animation:%20modalSlide%200.3s%20ease-out;%20%7D%20/%2A%20History%20Modal%20specific%20%2A/%20.history-modal-content%20%7B%20%20%20max-width:%20600px;%20%20%20max-height:%2085vh;%20%20%20display:%20flex;%20%20%20flex-direction:%20column;%20%7D%20.history-modal-content%20.modal-body%20%7B%20%20%20overflow-y:%20auto;%20%20%20padding:%200;%20%20%20/%2A%20Padding%20is%20handled%20by%20inner%20elements%20%2A/%20%7D%20/%2A%20History%20Styles%20%2A/%20.history-year-group%20%7B%20%20%20margin-bottom:%2016px;%20%7D%20.history-year-header%20%7B%20%20%20background:%20var(--bg-card);%20%20%20padding:%2012px%2020px;%20%20%20margin:%200;%20%20%20font-size:%201.2rem;%20%20%20font-weight:%20700;%20%20%20color:%20var(--text-primary);%20%20%20border-bottom:%202px%20solid%20var(--border-color);%20%20%20position:%20sticky;%20%20%20top:%200;%20%20%20z-index:%2012;%20%7D%20.history-month-group%20%7B%20%20%20border-bottom:%201px%20solid%20var(--border-color);%20%7D%20.history-month-header%20%7B%20%20%20display:%20flex;%20%20%20justify-content:%20space-between;%20%20%20align-items:%20center;%20%20%20padding:%2014px%2020px;%20%20%20margin:%200;%20%20%20font-size:%201.05rem;%20%20%20font-weight:%20600;%20%20%20color:%20var(--text-primary);%20%20%20background:%20var(--bg-body);%20%20%20cursor:%20pointer;%20%20%20transition:%20background%200.2s;%20%7D%20.history-month-header:hover%20%7B%20%20%20background:%20var(--border-color);%20%20%20/%2A%20Slight%20hover%20effect%20%2A/%20%7D%20.history-month-summary%20%7B%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%2012px;%20%20%20font-size:%200.95rem;%20%20%20color:%20var(--text-secondary);%20%7D%20.history-month-content%20%7B%20%20%20display:%20none;%20%20%20/%2A%20Collapsed%20by%20default%20%2A/%20%20%20background:%20var(--bg-card);%20%7D%20.history-month-group.open%20.history-month-content%20%7B%20%20%20display:%20block;%20%20%20/%2A%20Expanded%20when%20open%20class%20is%20present%20%2A/%20%7D%20.history-month-group.open%20.history-month-header%20.material-icons-round%20%7B%20%20%20transform:%20rotate(180deg);%20%7D%20.history-month-header%20.material-icons-round%20%7B%20%20%20transition:%20transform%200.3s;%20%20%20font-size:%2020px;%20%7D%20.history-week-group%20%7B%20%20%20padding:%2012px%2020px;%20%20%20border-bottom:%201px%20dashed%20var(--border-color);%20%7D%20.history-week-group:last-child%20%7B%20%20%20border-bottom:%20none;%20%7D%20.history-week-header%20%7B%20%20%20display:%20flex;%20%20%20justify-content:%20space-between;%20%20%20align-items:%20center;%20%20%20font-size:%200.9rem;%20%20%20font-weight:%20600;%20%20%20color:%20var(--text-secondary);%20%20%20margin-bottom:%2010px;%20%7D%20.history-week-summary%20%7B%20%20%20font-size:%200.85rem;%20%20%20font-weight:%20500;%20%20%20background:%20rgba(100,%20116,%20139,%200.1);%20%20%20padding:%204px%2010px;%20%20%20border-radius:%2012px;%20%7D%20.history-items%20%7B%20%20%20display:%20flex;%20%20%20flex-direction:%20column;%20%20%20gap:%208px;%20%7D%20.history-item%20%7B%20%20%20display:%20grid;%20%20%20grid-template-columns:%2050px%201fr%20auto;%20%20%20align-items:%20center;%20%20%20gap:%2012px;%20%20%20padding:%2010px%2012px;%20%20%20background:%20var(--bg-body);%20%20%20border-radius:%208px;%20%20%20border:%201px%20solid%20var(--border-color);%20%7D%20.history-item-date%20%7B%20%20%20font-size:%200.85rem;%20%20%20color:%20var(--text-secondary);%20%20%20font-weight:%20500;%20%7D%20.history-item-details%20%7B%20%20%20display:%20flex;%20%20%20flex-direction:%20column;%20%20%20gap:%204px;%20%7D%20.history-item-name%20%7B%20%20%20font-size:%200.95rem;%20%20%20font-weight:%20500;%20%20%20color:%20var(--text-primary);%20%7D%20.history-item-price%20%7B%20%20%20font-weight:%20600;%20%20%20color:%20var(--text-primary);%20%7D%20.history-item-status%20%7B%20%20%20font-size:%200.8rem;%20%20%20font-weight:%20600;%20%20%20color:%20var(--text-primary);%20%20%20text-transform:%20uppercase;%20%20%20letter-spacing:%200.5px;%20%7D%20.history-item-cancelled%20%7B%20%20%20opacity:%200.5;%20%20%20filter:%20grayscale(1);%20%7D%20.history-item-price-cancelled%20%7B%20%20%20text-decoration:%20line-through;%20%20%20color:%20var(--text-secondary);%20%7D%20%40keyframes%20modalSlide%20%7B%20%20%20from%20%7B%20%20%20%20%20transform:%20translateY(20px);%20%20%20%20%20opacity:%200;%20%20%20%7D%20%20%20to%20%7B%20%20%20%20%20transform:%20translateY(0);%20%20%20%20%20opacity:%201;%20%20%20%7D%20%7D%20.modal-header%20%7B%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20justify-content:%20space-between;%20%20%20padding:%2020px;%20%20%20border-bottom:%201px%20solid%20var(--border-color);%20%7D%20.modal-header%20h2%20%7B%20%20%20margin:%200;%20%20%20font-size:%201.25rem;%20%7D%20.modal-body%20%7B%20%20%20padding:%2020px;%20%7D%20%23login-form%20%7B%20%20%20padding:%2020px;%20%7D%20.form-group%20%7B%20%20%20margin-bottom:%2020px;%20%7D%20.form-group%20label%20%7B%20%20%20display:%20block;%20%20%20margin-bottom:%206px;%20%20%20font-weight:%20500;%20%20%20font-size:%200.9rem;%20%7D%20.form-group%20input%20%7B%20%20%20width:%20100%25;%20%20%20padding:%2010px%2012px;%20%20%20border:%201px%20solid%20var(--border-color);%20%20%20/%2A%20Changed%20from%20--border%20%2A/%20%20%20border-radius:%208px;%20%20%20background:%20var(--bg-body);%20%20%20/%2A%20Changed%20from%20--bg%20%2A/%20%20%20color:%20var(--text-primary);%20%20%20/%2A%20Changed%20from%20--text%20%2A/%20%20%20font-family:%20inherit;%20%20%20transition:%20border-color%200.2s;%20%7D%20.form-group%20input:focus%20%7B%20%20%20outline:%20none;%20%20%20border-color:%20var(--accent-color);%20%20%20/%2A%20Changed%20from%20--primary%20%2A/%20%7D%20.help-text%20%7B%20%20%20display:%20block;%20%20%20margin-top:%204px;%20%20%20color:%20var(--text-secondary);%20%20%20/%2A%20Changed%20from%20--text-muted%20%2A/%20%20%20font-size:%200.75rem;%20%7D%20.error-msg%20%7B%20%20%20margin-bottom:%2016px;%20%20%20padding:%2010px;%20%20%20background:%20rgba(239,%2068,%2068,%200.1);%20%20%20color:%20var(--error-color);%20%20%20/%2A%20Changed%20from%20--danger%20%2A/%20%20%20border-radius:%208px;%20%20%20font-size:%200.85rem;%20%20%20text-align:%20center;%20%7D%20.modal-actions%20%7B%20%20%20margin-top:%2024px;%20%7D%20.btn-primary.wide%20%7B%20%20%20width:%20100%25;%20%20%20justify-content:%20center;%20%7D%20.hidden%20%7B%20%20%20display:%20none%20!important;%20%7D%20/%2A%20Menu%20Grid%20Container%20%2A/%20.menu-grid%20%7B%20%20%20display:%20flex;%20%20%20flex-direction:%20column;%20%20%20flex:%201;%20%20%20overflow:%20hidden;%20%20%20gap:%201rem;%20%7D%20.week-section%20%7B%20%20%20margin-bottom:%202rem;%20%7D%20.week-header%20%7B%20%20%20margin-bottom:%201.5rem;%20%20%20border-bottom:%201px%20solid%20var(--border-color);%20%20%20padding-bottom:%201rem;%20%20%20text-align:%20center;%20%7D%20.week-title%20%7B%20%20%20font-size:%201.75rem;%20%20%20font-weight:%20700;%20%20%20color:%20var(--text-primary);%20%7D%20.week-range%20%7B%20%20%20color:%20var(--text-secondary);%20%20%20font-size:%200.9rem;%20%20%20margin-top:%200.25rem;%20%7D%20/%2A%20Full-viewport%20layout:%20header%20+%20scrollable%20content%20+%20footer%20%2A/%20%23kantine-wrapper%20%7B%20%20%20display:%20flex;%20%20%20flex-direction:%20column;%20%20%20height:%20100vh;%20%20%20height:%20100dvh;%20%20%20/%2A%20Dynamic%20viewport%20height%20for%20mobile%20browsers%20%2A/%20%20%20overflow:%20hidden;%20%7D%20.days-grid%20%7B%20%20%20display:%20grid;%20%20%20grid-template-columns:%20repeat(auto-fit,%20minmax(180px,%201fr));%20%20%20gap:%200.75rem;%20%20%20flex:%201;%20%20%20overflow-y:%20auto;%20%20%20/%2A%20This%20is%20the%20scroll%20container%20at%20the%20window%20edge%20%2A/%20%20%20align-content:%20start;%20%20%20padding:%200%202rem%202rem%202rem;%20%7D%20/%2A%20Card%20%2A/%20.menu-card%20%7B%20%20%20background-color:%20var(--bg-card);%20%20%20border-radius:%2012px;%20%20%20border:%201px%20solid%20var(--border-color);%20%20%20box-shadow:%20var(--card-shadow);%20%20%20overflow:%20clip;%20%20%20/%2A%20Clips%20scrolling%20content%20behind%20sticky%20header%20%2A/%20%20%20transition:%20box-shadow%200.2s%20ease;%20%20%20display:%20flex;%20%20%20flex-direction:%20column;%20%7D%20/%2A%20Past%20Day%20Styling%20-%20Target%20specific%20elements%20so%20ordered%20items%20can%20remain%20visible%20AND%20preserve%20sticky%20context%20%2A/%20/%2A%20We%20MUST%20apply%20filter/opacity%20to%20children,%20not%20the%20parent%20.menu-card,%20or%20else%20position:%20sticky%20breaks%20%2A/%20/%2A%20Header%20keeps%20fully%20opaque%20background%20to%20hide%20scrolling%20items,%20only%20grayscales%20%2A/%20.menu-card.past-day%20.card-header%20%7B%20%20%20filter:%20grayscale(0.8);%20%20%20transition:%20filter%200.3s;%20%7D%20/%2A%20Items%20become%20semi-transparent%20%2A/%20.menu-card.past-day%20.menu-item:not(.ordered)%20%7B%20%20%20opacity:%200.6;%20%20%20filter:%20grayscale(0.8);%20%20%20transition:%20opacity%200.3s,%20filter%200.3s;%20%7D%20.menu-card.past-day:hover%20.card-header%20%7B%20%20%20filter:%20grayscale(0.4);%20%7D%20.menu-card.past-day:hover%20.menu-item:not(.ordered)%20%7B%20%20%20opacity:%200.8;%20%20%20filter:%20grayscale(0.4);%20%7D%20/%2A%20Past%20ordered%20items%20get%20no%20special%20frame%20or%20shadow,%20but%20remain%20visually%20distinct%20by%20staying%20fully%20opaque%20(via%20the%20:not(.ordered)%20selector%20above)%20%2A/%20.menu-item.today-ordered%20%7B%20%20%20border:%202px%20solid%20%238b5cf6;%20%20%20box-shadow:%200%200%2030px%20rgba(139,%2092,%20246,%200.6);%20%20%20border-radius:%208px;%20%20%20padding:%201rem;%20%20%20margin:%200%20-1rem%201.5rem%20-1rem;%20%20%20background:%20var(--bg-card);%20%20%20position:%20relative;%20%20%20z-index:%205;%20%20%20animation:%20pulse-glow-strong%203s%20infinite;%20%7D%20%40keyframes%20pulse-glow-strong%20%7B%20%20%200%25%20%7B%20%20%20%20%20box-shadow:%200%200%2020px%20rgba(139,%2092,%20246,%200.4);%20%20%20%7D%20%20%2050%25%20%7B%20%20%20%20%20box-shadow:%200%200%2040px%20rgba(139,%2092,%20246,%200.8);%20%20%20%7D%20%20%20100%25%20%7B%20%20%20%20%20box-shadow:%200%200%2020px%20rgba(139,%2092,%20246,%200.4);%20%20%20%7D%20%7D%20%20.menu-card:hover%20%7B%20%20%20box-shadow:%200%2020px%2025px%20-5px%20rgb(0%200%200%20/%200.1),%200%208px%2010px%20-6px%20rgb(0%200%200%20/%200.1);%20%7D%20.card-header%20%7B%20%20%20padding:%201rem%201.25rem;%20%20%20border-bottom:%201px%20solid%20var(--border-color);%20%20%20display:%20flex;%20%20%20justify-content:%20space-between;%20%20%20align-items:%20baseline;%20%20%20background-color:%20var(--bg-card);%20%20%20/%2A%20Removed%20border-radius:%2012px%2012px%200%200;%20%20%20%20.menu-card%5C%27s%20overflow:%20clip%20will%20round%20the%20corners%20initially.%20%20%20%20When%20sticky%20at%20the%20top,%20it%20will%20be%20square%20and%20perfectly%20hide%20scrolling%20content!%20%2A/%20%20%20/%2A%20Sticky%20within%20.container%20scroll%20area%20%2A/%20%20%20position:%20sticky;%20%20%20top:%200;%20%20%20z-index:%2090;%20%7D%20.card-body%20%7B%20%20%20padding:%201.25rem;%20%20%20display:%20grid;%20%20%20grid-template-rows:%20auto;%20%20%20align-content:%20start;%20%7D%20.day-name%20%7B%20%20%20font-size:%201.125rem;%20%20%20font-weight:%20600;%20%7D%20.day-date%20%7B%20%20%20font-size:%200.875rem;%20%20%20color:%20var(--text-secondary);%20%7D%20%20.empty-state%20%7B%20%20%20color:%20var(--text-secondary);%20%20%20font-style:%20italic;%20%20%20text-align:%20center;%20%20%20padding:%201rem;%20%7D%20/%2A%20Menu%20Items%20%2A/%20.menu-item%20%7B%20%20%20margin-bottom:%201.5rem;%20%20%20padding-bottom:%201.5rem;%20%20%20border-bottom:%201px%20solid%20var(--border-color);%20%7D%20.menu-item:last-child%20%7B%20%20%20margin-bottom:%200;%20%20%20padding-bottom:%200;%20%20%20border-bottom:%20none;%20%7D%20.item-header%20%7B%20%20%20display:%20flex;%20%20%20justify-content:%20space-between;%20%20%20align-items:%20flex-start;%20%20%20margin-bottom:%200.5rem;%20%20%20gap:%201rem;%20%7D%20.item-name%20%7B%20%20%20font-weight:%20600;%20%20%20color:%20var(--text-primary);%20%20%20font-size:%201rem;%20%7D%20.item-price%20%7B%20%20%20font-weight:%20700;%20%20%20color:%20var(--accent-color);%20%20%20white-space:%20nowrap;%20%7D%20.item-desc%20%7B%20%20%20font-size:%200.875rem;%20%20%20color:%20var(--text-secondary);%20%20%20line-height:%201.6;%20%20%20margin-bottom:%200.75rem;%20%20%20white-space:%20pre-wrap;%20%7D%20.badges%20%7B%20%20%20display:%20flex;%20%20%20gap:%200.5rem;%20%20%20margin-left:%20auto;%20%7D%20.item-status-row%20%7B%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%200.5rem;%20%20%20margin-bottom:%200.75rem;%20%7D%20.badge%20%7B%20%20%20display:%20inline-flex;%20%20%20align-items:%20center;%20%20%20justify-content:%20center;%20%20%20height:%2024px;%20%20%20font-size:%200.75rem;%20%20%20padding:%200%2010px;%20%20%20border-radius:%204px;%20%20%20font-weight:%20600;%20%20%20text-transform:%20uppercase;%20%20%20letter-spacing:%200.05em;%20%20%20line-height:%20normal;%20%20%20white-space:%20nowrap;%20%7D%20.badge.available%20%7B%20%20%20background-color:%20rgba(16,%20185,%20129,%200.1);%20%20%20/%2A%20Emerald%20500%20/%2010%25%20%2A/%20%20%20color:%20var(--success-color);%20%20%20border:%201px%20solid%20rgba(16,%20185,%20129,%200.2);%20%7D%20.badge.sold-out%20%7B%20%20%20background-color:%20rgba(239,%2068,%2068,%200.1);%20%20%20/%2A%20Red%20500%20/%2010%25%20%2A/%20%20%20color:%20var(--error-color);%20%20%20border:%201px%20solid%20rgba(239,%2068,%2068,%200.2);%20%7D%20.badge.ordered%20%7B%20%20%20background-color:%20rgba(139,%2092,%20246,%200.1);%20%20%20/%2A%20Violet%20500%20/%2010%25%20%2A/%20%20%20color:%20%238b5cf6;%20%20%20border:%201px%20solid%20rgba(139,%2092,%20246,%200.2);%20%20%20gap:%204px;%20%7D%20.badge.ordered%20.material-icons-round%20%7B%20%20%20font-size:%201rem;%20%7D%20/%2A%20Loading%20%2A/%20.loading-state%20%7B%20%20%20text-align:%20center;%20%20%20padding:%204rem;%20%20%20color:%20var(--text-secondary);%20%7D%20.spinner%20%7B%20%20%20width:%2040px;%20%20%20height:%2040px;%20%20%20border:%203px%20solid%20var(--border-color);%20%20%20border-top-color:%20var(--accent-color);%20%20%20border-radius:%2050%25;%20%20%20margin:%200%20auto%201rem;%20%20%20animation:%20spin%201s%20linear%20infinite;%20%7D%20%40keyframes%20spin%20%7B%20%20%20to%20%7B%20%20%20%20%20transform:%20rotate(360deg);%20%20%20%7D%20%7D%20/%2A%20Footer%20%2A/%20.app-footer%20%7B%20%20%20flex-shrink:%200;%20%20%20text-align:%20center;%20%20%20padding:%200.4rem%202rem;%20%20%20color:%20var(--text-secondary);%20%20%20font-size:%200.8rem;%20%20%20border-top:%201px%20solid%20var(--border-color);%20%7D%20/%2A%20===%20Order%20/%20Cancel%20Buttons%20(inline%20in%20status%20row)%20===%20%2A/%20.btn-order%20%7B%20%20%20display:%20inline-flex;%20%20%20align-items:%20center;%20%20%20gap:%204px;%20%20%20padding:%204px%2010px;%20%20%20border:%20none;%20%20%20border-radius:%206px;%20%20%20background:%20var(--success-color);%20%20%20color:%20white;%20%20%20font-size:%200.75rem;%20%20%20font-weight:%20600;%20%20%20cursor:%20pointer;%20%20%20transition:%20all%200.2s%20ease;%20%20%20font-family:%20inherit;%20%7D%20.btn-order%20.material-icons-round%20%7B%20%20%20font-size:%2016px;%20%7D%20.btn-order:hover:not(:disabled)%20%7B%20%20%20filter:%20brightness(1.15);%20%20%20transform:%20translateY(-1px);%20%7D%20.btn-order:disabled%20%7B%20%20%20opacity:%200.5;%20%20%20cursor:%20not-allowed;%20%7D%20.btn-order.loading%20%7B%20%20%20pointer-events:%20none;%20%20%20opacity:%200.6;%20%7D%20.btn-order-compact%20%7B%20%20%20padding:%202px%204px;%20%20%20gap:%200;%20%7D%20.btn-order-compact%20.material-icons-round%20%7B%20%20%20font-size:%2016px;%20%7D%20.btn-cancel%20%7B%20%20%20display:%20inline-flex;%20%20%20align-items:%20center;%20%20%20justify-content:%20center;%20%20%20padding:%204px%206px;%20%20%20border:%20none;%20%20%20border-radius:%206px;%20%20%20background:%20var(--error-color);%20%20%20color:%20white;%20%20%20font-size:%200.75rem;%20%20%20cursor:%20pointer;%20%20%20transition:%20all%200.2s%20ease;%20%20%20font-family:%20inherit;%20%7D%20.btn-cancel%20.material-icons-round%20%7B%20%20%20font-size:%2016px;%20%7D%20.btn-cancel:hover:not(:disabled)%20%7B%20%20%20filter:%20brightness(1.15);%20%20%20transform:%20translateY(-1px);%20%7D%20.btn-cancel:disabled%20%7B%20%20%20opacity:%200.5;%20%20%20cursor:%20not-allowed;%20%7D%20/%2A%20Past%20days:%20hide%20action%20buttons%20%2A/%20.past-day%20.item-actions%20%7B%20%20%20display:%20none;%20%7D%20/%2A%20Order%20count%20badge%20(for%20multi-orders)%20%2A/%20.order-count-badge%20%7B%20%20%20display:%20inline-flex;%20%20%20align-items:%20center;%20%20%20justify-content:%20center;%20%20%20background:%20rgba(255,%20255,%20255,%200.3);%20%20%20color:%20white;%20%20%20font-size:%200.65rem;%20%20%20font-weight:%20700;%20%20%20min-width:%2016px;%20%20%20height:%2016px;%20%20%20padding:%200%204px;%20%20%20border-radius:%208px;%20%20%20margin-left:%204px;%20%20%20line-height:%201;%20%7D%20/%2A%20===%20Toast%20Notifications%20===%20%2A/%20%23toast-container%20%7B%20%20%20position:%20fixed;%20%20%20bottom:%2020px;%20%20%20right:%2020px;%20%20%20z-index:%2010000;%20%20%20display:%20flex;%20%20%20flex-direction:%20column;%20%20%20gap:%208px;%20%20%20pointer-events:%20none;%20%7D%20.toast%20%7B%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%208px;%20%20%20padding:%2010px%2016px;%20%20%20border-radius:%208px;%20%20%20font-size:%200.85rem;%20%20%20font-weight:%20500;%20%20%20font-family:%20%5C%27Inter%5C%27,%20sans-serif;%20%20%20color:%20white;%20%20%20backdrop-filter:%20blur(10px);%20%20%20box-shadow:%200%204px%2012px%20rgba(0,%200,%200,%200.3);%20%20%20pointer-events:%20auto;%20%20%20transform:%20translateX(120%25);%20%20%20opacity:%200;%20%20%20transition:%20transform%200.3s%20ease,%20opacity%200.3s%20ease;%20%7D%20.toast.show%20%7B%20%20%20transform:%20translateX(0);%20%20%20opacity:%201;%20%7D%20.toast%20.material-icons-round%20%7B%20%20%20font-size:%2018px;%20%7D%20.toast-success%20%7B%20%20%20background:%20rgba(5,%20150,%20105,%200.95);%20%7D%20.toast-error%20%7B%20%20%20background:%20rgba(220,%2038,%2038,%200.95);%20%7D%20.toast-info%20%7B%20%20%20background:%20rgba(59,%20130,%20246,%200.95);%20%7D%20/%2A%20===%20Mobile%20Responsiveness%20===%20%2A/%20%40media%20(max-width:%20600px)%20%7B%20%20%20.header-content%20%7B%20%20%20%20%20flex-direction:%20column;%20%20%20%20%20gap:%201rem;%20%20%20%20%20padding:%200.75rem;%20%20%20%7D%20%20%20.week-nav%20%7B%20%20%20%20%20width:%20100%25;%20%20%20%20%20justify-content:%20center;%20%20%20%7D%20%20%20.nav-pills%20%7B%20%20%20%20%20width:%20100%25;%20%20%20%20%20justify-content:%20space-between;%20%20%20%7D%20%20%20.nav-btn%20%7B%20%20%20%20%20flex:%201;%20%20%20%20%20justify-content:%20center;%20%20%20%20%20padding:%200.5rem;%20%20%20%20%20font-size:%200.85rem;%20%20%20%7D%20%20%20.days-grid%20%7B%20%20%20%20%20grid-template-columns:%201fr;%20%20%20%20%20/%2A%20Force%20single%20column%20%2A/%20%20%20%7D%20%20%20.main-content%20%7B%20%20%20%20%20padding:%201rem;%20%20%20%7D%20%20%20.week-title%20%7B%20%20%20%20%20font-size:%201.5rem;%20%20%20%7D%20%20%20/%2A%20Adjust%20toast%20position%20for%20mobile%20%2A/%20%20%20.toast-container%20%7B%20%20%20%20%20bottom:%201rem;%20%20%20%20%20right:%201rem;%20%20%20%20%20left:%201rem;%20%20%20%20%20/%2A%20Center%20on%20mobile%20%2A/%20%20%20%20%20width:%20auto;%20%20%20%7D%20%20%20.menu-card%20%7B%20%20%20%20%20margin-bottom:%201rem;%20%20%20%7D%20%7D%20/%2A%20===%20Flagging%20%26%20Notification%20Styles%20===%20%2A/%20.btn-flag%20%7B%20%20%20display:%20inline-flex;%20%20%20align-items:%20center;%20%20%20justify-content:%20center;%20%20%20background:%20transparent;%20%20%20border:%201px%20solid%20var(--text-secondary);%20%20%20color:%20var(--text-secondary);%20%20%20border-radius:%206px;%20%20%20padding:%204px;%20%20%20cursor:%20pointer;%20%20%20transition:%20all%200.2s;%20%20%20margin-right:%200.5rem;%20%20%20width:%2028px;%20%20%20height:%2028px;%20%7D%20.btn-flag:hover%20%7B%20%20%20background:%20rgba(234,%20179,%208,%200.1);%20%20%20/%2A%20Yellow-500%20/%2010%25%20%2A/%20%20%20color:%20%23eab308;%20%20%20border-color:%20%23eab308;%20%7D%20.btn-flag.active%20%7B%20%20%20background:%20rgba(234,%20179,%208,%200.1);%20%20%20color:%20%23eab308;%20%20%20border-color:%20%23eab308;%20%7D%20.btn-flag%20.material-icons-round%20%7B%20%20%20font-size:%201.1rem;%20%7D%20/%2A%20Flagged%20%26%20Sold%20Out%20(Yellow%20Glow)%20%2A/%20.menu-item.flagged-sold-out%20%7B%20%20%20border:%201px%20solid%20%23eab308;%20%20%20box-shadow:%200%200%2010px%20rgba(234,%20179,%208,%200.2);%20%20%20border-radius:%208px;%20%20%20padding:%201rem;%20%20%20margin:%200%20-1rem%201.5rem%20-1rem;%20%20%20background:%20var(--bg-card);%20%20%20position:%20relative;%20%20%20z-index:%205;%20%20%20animation:%20yellow-pulse%203s%20infinite;%20%7D%20%40keyframes%20yellow-pulse%20%7B%20%20%200%25%20%7B%20%20%20%20%20box-shadow:%200%200%208px%20rgba(234,%20179,%208,%200.2);%20%20%20%7D%20%20%2050%25%20%7B%20%20%20%20%20box-shadow:%200%200%2016px%20rgba(234,%20179,%208,%200.5);%20%20%20%7D%20%20%20100%25%20%7B%20%20%20%20%20box-shadow:%200%200%208px%20rgba(234,%20179,%208,%200.2);%20%20%20%7D%20%7D%20/%2A%20Flagged%20%26%20Available%20(Green%20Glow)%20%2A/%20.menu-item.flagged-available%20%7B%20%20%20border:%202px%20solid%20var(--success-color);%20%20%20box-shadow:%200%200%2015px%20rgba(16,%20185,%20129,%200.3);%20%20%20border-radius:%208px;%20%20%20padding:%201rem;%20%20%20margin:%200%20-1rem%201.5rem%20-1rem;%20%20%20background:%20var(--bg-card);%20%20%20position:%20relative;%20%20%20z-index:%205;%20%20%20animation:%20green-pulse%203s%20infinite;%20%7D%20%40keyframes%20green-pulse%20%7B%20%20%200%25%20%7B%20%20%20%20%20box-shadow:%200%200%2010px%20rgba(16,%20185,%20129,%200.3);%20%20%20%7D%20%20%2050%25%20%7B%20%20%20%20%20box-shadow:%200%200%2020px%20rgba(16,%20185,%20129,%200.6);%20%20%20%7D%20%20%20100%25%20%7B%20%20%20%20%20box-shadow:%200%200%2010px%20rgba(16,%20185,%20129,%200.3);%20%20%20%7D%20%7D%20/%2A%20Day%20Header%20Badges%20%2A/%20.day-header-left%20%7B%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%200.75rem;%20%7D%20.menu-code-badge%20%7B%20%20%20font-size:%200.75rem;%20%20%20font-weight:%20700;%20%20%20color:%20%238b5cf6;%20%20%20/%2A%20Violet%20500%20%2A/%20%20%20background-color:%20rgba(139,%2092,%20246,%200.15);%20%20%20border:%201px%20solid%20rgba(139,%2092,%20246,%200.3);%20%20%20padding:%202px%206px;%20%20%20border-radius:%206px;%20%20%20line-height:%20normal;%20%20%20display:%20inline-block;%20%7D%20/%2A%20Detailed%20Badge%20Colors%20%2A/%20.nav-badge.badge-violet%20%7B%20%20%20background-color:%20%238b5cf6;%20%7D%20.nav-badge.badge-green%20%7B%20%20%20background-color:%20var(--success-color);%20%7D%20.nav-badge.badge-red%20%7B%20%20%20background-color:%20var(--error-color);%20%7D%20.nav-badge.badge-blue%20%7B%20%20%20background-color:%20var(--accent-color);%20%7D%20/%2A%20Day%20Header%20Status%20Colors%20(User%20Request)%20%2A/%20.card-header.header-violet%20%7B%20%20%20background-color:%20var(--bg-card);%20%20%20background-image:%20linear-gradient(rgba(139,%2092,%20246,%200.15),%20rgba(139,%2092,%20246,%200.15));%20%20%20border-bottom:%202px%20solid%20%238b5cf6;%20%7D%20.card-header.header-green%20%7B%20%20%20background-color:%20var(--bg-card);%20%20%20background-image:%20linear-gradient(rgba(16,%20185,%20129,%200.15),%20rgba(16,%20185,%20129,%200.15));%20%20%20border-bottom:%202px%20solid%20var(--success-color);%20%7D%20.card-header.header-red%20%7B%20%20%20background-color:%20var(--bg-card);%20%20%20background-image:%20linear-gradient(rgba(239,%2068,%2068,%200.15),%20rgba(239,%2068,%2068,%200.15));%20%20%20border-bottom:%202px%20solid%20var(--error-color);%20%7D%20.card-header.header-violet%20.day-name,%20.card-header.header-green%20.day-name,%20.card-header.header-red%20.day-name%20%7B%20%20%20font-weight:%20700;%20%20%20color:%20var(--text-primary);%20%20%20/%2A%20Ensure%20text%20remains%20standard%20color%20%2A/%20%7D%20/%2A%20Update%20Icon%20%2A/%20.update-icon%20%7B%20%20%20display:%20inline-flex;%20%20%20align-items:%20center;%20%20%20justify-content:%20center;%20%20%20margin-left:%208px;%20%20%20background-color:%20rgba(16,%20185,%20129,%200.2);%20%20%20/%2A%20Green%20tint%20%2A/%20%20%20color:%20var(--success-color);%20%20%20border-radius:%2050%25;%20%20%20width:%2024px;%20%20%20height:%2024px;%20%20%20cursor:%20pointer;%20%20%20font-size:%2014px;%20%20%20transition:%20all%200.2s;%20%20%20text-decoration:%20none;%20%20%20animation:%20pulse%202s%20infinite;%20%7D%20.update-icon:hover%20%7B%20%20%20background-color:%20var(--success-color);%20%20%20color:%20white;%20%20%20transform:%20scale(1.1);%20%7D%20%40keyframes%20pulse%20%7B%20%20%200%25%20%7B%20%20%20%20%20box-shadow:%200%200%200%200%20rgba(16,%20185,%20129,%200.4);%20%20%20%7D%20%20%2070%25%20%7B%20%20%20%20%20box-shadow:%200%200%200%206px%20rgba(16,%20185,%20129,%200);%20%20%20%7D%20%20%20100%25%20%7B%20%20%20%20%20box-shadow:%200%200%200%200%20rgba(16,%20185,%20129,%200);%20%20%20%7D%20%7D%20/%2A%20Order%20Countdown%20%2A/%20%23order-countdown%20%7B%20%20%20background:%20rgba(255,%20255,%20255,%200.1);%20%20%20padding:%200.25rem%200.75rem;%20%20%20border-radius:%2099px;%20%20%20font-size:%200.85rem;%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%200.5rem;%20%20%20white-space:%20nowrap;%20%20%20border:%201px%20solid%20var(--border-color);%20%7D%20%23order-countdown%20span%20%7B%20%20%20opacity:%200.7;%20%20%20font-size:%200.75rem;%20%20%20text-transform:%20uppercase;%20%20%20letter-spacing:%200.5px;%20%7D%20%23order-countdown.urgent%20%7B%20%20%20background:%20rgba(239,%2068,%2068,%200.2);%20%20%20border-color:%20rgba(239,%2068,%2068,%200.5);%20%20%20color:%20%23ef4444;%20%20%20animation:%20pulse-red%202s%20infinite;%20%7D%20%40keyframes%20pulse-red%20%7B%20%20%200%25%20%7B%20%20%20%20%20box-shadow:%200%200%200%200%20rgba(239,%2068,%2068,%200.4);%20%20%20%7D%20%20%2070%25%20%7B%20%20%20%20%20box-shadow:%200%200%200%206px%20rgba(239,%2068,%2068,%200);%20%20%20%7D%20%20%20100%25%20%7B%20%20%20%20%20box-shadow:%200%200%200%200%20rgba(239,%2068,%2068,%200);%20%20%20%7D%20%7D%20/%2A%20Smart%20Highlights%20(Blue%20Glow%20-%20matches%20today-ordered/flagged%20pattern)%20%2A/%20.menu-item.highlight-glow%20%7B%20%20%20border:%202px%20solid%20rgba(59,%20130,%20246,%200.7);%20%20%20box-shadow:%200%200%2020px%20rgba(59,%20130,%20246,%200.4);%20%20%20border-radius:%208px;%20%20%20padding:%201rem;%20%20%20margin:%200%20-1rem%201.5rem%20-1rem;%20%20%20background:%20var(--bg-card);%20%20%20position:%20relative;%20%20%20z-index:%205;%20%20%20animation:%20blue-pulse%203s%20infinite;%20%7D%20%40keyframes%20blue-pulse%20%7B%20%20%200%25%20%7B%20%20%20%20%20box-shadow:%200%200%2015px%20rgba(59,%20130,%20246,%200.3);%20%20%20%7D%20%20%2050%25%20%7B%20%20%20%20%20box-shadow:%200%200%2025px%20rgba(59,%20130,%20246,%200.6);%20%20%20%7D%20%20%20100%25%20%7B%20%20%20%20%20box-shadow:%200%200%2015px%20rgba(59,%20130,%20246,%200.3);%20%20%20%7D%20%7D%20/%2A%20Nav%20Badge%20with%20Count%20%2A/%20.nav-badge.has-highlights%20%7B%20%20%20background-color:%20var(--bg-card);%20%20%20/%2A%20Neutral%20background%20%2A/%20%20%20color:%20var(--text-primary);%20%20%20border:%201px%20solid%20var(--border-color);%20%20%20padding:%202px%206px;%20%7D%20.nav-badge%20.highlight-count%20%7B%20%20%20color:%20%233b82f6;%20%20%20/%2A%20Blue%20500%20%2A/%20%20%20font-weight:%20700;%20%20%20margin-left:%204px;%20%7D%20/%2A%20Tag%20Management%20Modal%20%2A/%20%23tags-list%20%7B%20%20%20display:%20flex;%20%20%20flex-wrap:%20wrap;%20%20%20gap:%200.5rem;%20%20%20margin-top:%201rem;%20%20%20min-height:%2050px;%20%7D%20/%2A%20Tag%20badges%20styled%20consistently%20with%20.badge%20(verf%C3%BCgbar/ausverkauft)%20%2A/%20.tag-badge%20%7B%20%20%20display:%20inline-flex;%20%20%20align-items:%20center;%20%20%20justify-content:%20center;%20%20%20height:%2024px;%20%20%20font-size:%200.75rem;%20%20%20padding:%200%2010px;%20%20%20border-radius:%204px;%20%20%20font-weight:%20600;%20%20%20text-transform:%20uppercase;%20%20%20letter-spacing:%200.05em;%20%20%20line-height:%20normal;%20%20%20white-space:%20nowrap;%20%20%20background-color:%20rgba(59,%20130,%20246,%200.1);%20%20%20color:%20%233b82f6;%20%20%20border:%201px%20solid%20rgba(59,%20130,%20246,%200.2);%20%20%20gap:%204px;%20%7D%20.tag-remove%20%7B%20%20%20cursor:%20pointer;%20%20%20opacity:%200.7;%20%20%20font-size:%201.1em;%20%20%20line-height:%201;%20%20%20transition:%20all%200.2s;%20%7D%20.tag-remove:hover%20%7B%20%20%20opacity:%201;%20%20%20color:%20%23ef4444;%20%7D%20.input-group%20%7B%20%20%20display:%20flex;%20%20%20gap:%200.5rem;%20%7D%20.input-group%20input%20%7B%20%20%20flex:%201;%20%20%20padding:%200.75rem;%20%20%20background:%20var(--bg-body);%20%20%20border:%201px%20solid%20var(--border-color);%20%20%20color:%20var(--text-primary);%20%20%20border-radius:%208px;%20%20%20font-family:%20inherit;%20%7D%20/%2A%20Add%20tag%20button%20-%20styled%20like%20.btn-order%20with%20nav-btn.active%20color%20%2A/%20%23btn-add-tag%20%7B%20%20%20display:%20inline-flex;%20%20%20align-items:%20center;%20%20%20gap:%204px;%20%20%20padding:%200.5rem%201rem;%20%20%20border:%20none;%20%20%20border-radius:%206px;%20%20%20background:%20var(--accent-color);%20%20%20color:%20white;%20%20%20font-size:%200.8rem;%20%20%20font-weight:%20600;%20%20%20cursor:%20pointer;%20%20%20transition:%20all%200.2s%20ease;%20%20%20font-family:%20inherit;%20%20%20white-space:%20nowrap;%20%7D%20%23btn-add-tag:hover%20%7B%20%20%20filter:%20brightness(1.15);%20%20%20transform:%20translateY(-1px);%20%7D%20%20.matched-tags%20%7B%20%20%20display:%20flex;%20%20%20flex-wrap:%20wrap;%20%20%20gap:%206px;%20%20%20margin-bottom:%208px;%20%20%20/%2A%20Space%20between%20tags%20and%20title%20%2A/%20%20%20margin-top:%20-5px;%20%20%20/%2A%20Pull%20closer%20to%20header%20%2A/%20%7D%20.tag-badge-small%20%7B%20%20%20display:%20inline-flex;%20%20%20align-items:%20center;%20%20%20font-size:%200.7rem;%20%20%20padding:%202px%208px;%20%20%20border-radius:%204px;%20%20%20background:%20rgba(59,%20130,%20246,%200.15);%20%20%20color:%20%2360a5fa;%20%20%20border:%201px%20solid%20rgba(59,%20130,%20246,%200.3);%20%20%20font-weight:%20600;%20%20%20text-transform:%20uppercase;%20%20%20letter-spacing:%200.05em;%20%7D%20%5Bdata-theme=%5C%22light%5C%22%5D%20.tag-badge-small%20%7B%20%20%20background:%20rgba(37,%2099,%20235,%200.1);%20%20%20color:%20%232563eb;%20%20%20border:%201px%20solid%20rgba(37,%2099,%20235,%200.2);%20%7D%20%20/%2A%20Installer%20Changelog%20%2A/%20.changelog-container%20ul%20%7B%20%20%20padding-left:%201.5rem;%20%20%20margin:%200.5rem%200;%20%7D%20.changelog-container%20li%20%7B%20%20%20margin-bottom:%200.4rem;%20%20%20line-height:%201.5;%20%7D%20.changelog-container%20h3%20%7B%20%20%20margin-top:%201.5rem;%20%20%20margin-bottom:%200.5rem;%20%20%20font-size:%201.1em;%20%20%20color:%20var(--accent-color);%20%7D%20/%2A%20===%20Version%20Menu%20===%20%2A/%20.version-tag%20%7B%20%20%20cursor:%20pointer;%20%20%20transition:%20opacity%200.2s%20ease,%20text-decoration%200.2s%20ease;%20%7D%20.version-tag:hover%20%7B%20%20%20opacity:%201%20!important;%20%20%20text-decoration:%20underline;%20%7D%20.version-list%20%7B%20%20%20list-style:%20none;%20%20%20padding:%200;%20%20%20margin:%200;%20%7D%20.version-item%20%7B%20%20%20display:%20flex;%20%20%20justify-content:%20space-between;%20%20%20align-items:%20center;%20%20%20padding:%2010px%2014px;%20%20%20border-radius:%208px;%20%20%20margin-bottom:%204px;%20%20%20transition:%20background%200.2s;%20%7D%20.version-item:hover%20%7B%20%20%20background:%20rgba(100,%20116,%20139,%200.08);%20%7D%20.version-item.current%20%7B%20%20%20background:%20rgba(2,%20154,%20168,%200.1);%20%20%20border:%201px%20solid%20rgba(2,%20154,%20168,%200.25);%20%7D%20%5Bdata-theme=%5C%22dark%5C%22%5D%20.version-item:hover%20%7B%20%20%20background:%20rgba(255,%20255,%20255,%200.05);%20%7D%20%5Bdata-theme=%5C%22dark%5C%22%5D%20.version-item.current%20%7B%20%20%20background:%20rgba(96,%20165,%20250,%200.12);%20%20%20border:%201px%20solid%20rgba(96,%20165,%20250,%200.25);%20%7D%20.version-info%20%7B%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%2010px;%20%7D%20.badge-current%20%7B%20%20%20font-size:%200.75rem;%20%20%20font-weight:%20600;%20%20%20color:%20var(--success-color);%20%20%20padding:%202px%208px;%20%20%20border-radius:%204px;%20%20%20background:%20rgba(5,%20150,%20105,%200.1);%20%7D%20.badge-new%20%7B%20%20%20font-size:%200.75rem;%20%20%20font-weight:%20600;%20%20%20color:%20%23029aa8;%20%20%20padding:%202px%208px;%20%20%20border-radius:%204px;%20%20%20background:%20rgba(2,%20154,%20168,%200.1);%20%7D%20%5Bdata-theme=%5C%22dark%5C%22%5D%20.badge-new%20%7B%20%20%20color:%20%2360a5fa;%20%20%20background:%20rgba(96,%20165,%20250,%200.12);%20%7D%20.install-link%20%7B%20%20%20font-size:%200.8rem;%20%20%20font-weight:%20500;%20%20%20padding:%204px%2012px;%20%20%20border-radius:%206px;%20%20%20background:%20rgba(2,%20154,%20168,%200.1);%20%20%20color:%20%23029aa8;%20%20%20text-decoration:%20none;%20%20%20border:%201px%20solid%20rgba(2,%20154,%20168,%200.25);%20%20%20transition:%20all%200.2s;%20%20%20white-space:%20nowrap;%20%7D%20.install-link:hover%20%7B%20%20%20background:%20rgba(2,%20154,%20168,%200.2);%20%20%20border-color:%20rgba(2,%20154,%20168,%200.4);%20%7D%20%5Bdata-theme=%5C%22dark%5C%22%5D%20.install-link%20%7B%20%20%20color:%20%2360a5fa;%20%20%20background:%20rgba(96,%20165,%20250,%200.12);%20%20%20border:%201px%20solid%20rgba(96,%20165,%20250,%200.25);%20%7D%20%5Bdata-theme=%5C%22dark%5C%22%5D%20.install-link:hover%20%7B%20%20%20background:%20rgba(96,%20165,%20250,%200.2);%20%20%20border-color:%20rgba(96,%20165,%20250,%200.4);%20%7D%20.dev-toggle%20%7B%20%20%20padding:%2010px%2014px;%20%20%20border-radius:%208px;%20%20%20background:%20rgba(100,%20116,%20139,%200.05);%20%20%20border:%201px%20solid%20var(--border-color);%20%7D%20.dev-toggle%20input%5Btype=%5C%22checkbox%5C%22%5D%20%7B%20%20%20accent-color:%20%23029aa8;%20%20%20width:%2016px;%20%20%20height:%2016px;%20%7D%20%5Bdata-theme=%5C%22dark%5C%22%5D%20.dev-toggle%20input%5Btype=%5C%22checkbox%5C%22%5D%20%7B%20%20%20accent-color:%20%2360a5fa;%20%7D%27;document.head.appendChild(s);function%20showErrorModal(e,t,n,a)%7Bconst%20s=%22error-modal%22;let%20o=document.getElementById(s);o%26%26o.remove(),o=document.createElement(%22div%22),o.id=s,o.className=%22modal%20hidden%22,o.innerHTML=%60%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-content%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-header%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch2%20style=%22color:%20var(--error-color);%20display:%20flex;%20align-items:%20center;%20gap:%2010px;%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Esignal_wifi_off%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%7Be%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/h2%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style=%22padding:%2020px;%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%20style=%22margin-bottom:%2015px;%20color:%20var(--text-primary);%22%3E%24%7Bt%7D%3C/p%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style=%22margin-top:%2020px;%20display:%20flex;%20justify-content:%20center;%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-error-redirect%22%20style=%22%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20background-color:%20var(--accent-color);%20%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20color:%20white;%20%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20padding:%2012px%2024px;%20%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20border-radius:%208px;%20%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20border:%20none;%20%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20font-weight:%20600;%20%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20cursor:%20pointer;%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20display:%20flex;%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20align-items:%20center;%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20gap:%208px;%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20width:%20100%25;%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20justify-content:%20center;%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20transition:%20transform%200.1s;%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%7Bn%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Eopen_in_new%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%60,document.body.appendChild(o),document.getElementById(%22btn-error-redirect%22).addEventListener(%22click%22,()=%3E%7Bwindow.location.href=a%7D),requestAnimationFrame(()=%3E%7Bo.classList.remove(%22hidden%22)%7D)%7D!function()%7B%22use%20strict%22;if(window.__KANTINE_LOADED)return;window.__KANTINE_LOADED=!0;const%20e=%22https://api.bessa.app/v1%22,t=%22c3418725e95a9f90e3645cbc846b4d67c7c66131%22,n=591,a=%22TauNeutrino/kantine-overview%22,s=%60https://api.github.com/repos/%24%7Ba%7D%60,o=%60https://htmlpreview.github.io/%3Fhttps://github.com/%24%7Ba%7D/blob%60;let%20i=%5B%5D,r=G(new%20Date),l=(new%20Date).getFullYear(),c=%22this-week%22,d=localStorage.getItem(%22kantine_authToken%22),m=localStorage.getItem(%22kantine_currentUser%22),u=new%20Map,g=new%20Set(JSON.parse(localStorage.getItem(%22kantine_flags%22)%7C%7C%22%5B%5D%22)),h=null,p=localStorage.getItem(%22kantine_lang%22)%7C%7C%22de%22;function%20f(e)%7Breturn%7BAuthorization:%60Token%20%24%7Be%7C%7Ct%7D%60,Accept:%22application/json%22,%22Content-Type%22:%22application/json%22,%22X-Client-Version%22:%22v1.6.10%22%7D%7Dfunction%20v()%7Bif(!d)try%7Bconst%20e=localStorage.getItem(%22AkitaStores%22);if(e)%7Bconst%20t=JSON.parse(e);t.auth%26%26t.auth.token%26%26(console.log(%22Found%20existing%20Bessa%20session!%22),d=t.auth.token,localStorage.setItem(%22kantine_authToken%22,d),t.auth.user%26%26(m=t.auth.user.id%7C%7C%22unknown%22,localStorage.setItem(%22kantine_currentUser%22,m),t.auth.user.firstName%26%26localStorage.setItem(%22kantine_firstName%22,t.auth.user.firstName),t.auth.user.lastName%26%26localStorage.setItem(%22kantine_lastName%22,t.auth.user.lastName)))%7D%7Dcatch(e)%7Bconsole.warn(%22Failed%20to%20parse%20AkitaStores:%22,e)%7Dd=localStorage.getItem(%22kantine_authToken%22),m=localStorage.getItem(%22kantine_currentUser%22);const%20e=localStorage.getItem(%22kantine_firstName%22),t=document.getElementById(%22btn-login-open%22),n=document.getElementById(%22user-info%22),a=document.getElementById(%22user-id-display%22);d%3F(t.classList.add(%22hidden%22),n.classList.remove(%22hidden%22),a.textContent=e%7C%7C(m%3F%60User%20%24%7Bm%7D%60:%22Angemeldet%22),y()):(t.classList.remove(%22hidden%22),n.classList.add(%22hidden%22),a.textContent=%22%22),j()%7Dasync%20function%20y()%7Bif(d)try%7Bconst%20t=await%20fetch(%60%24%7Be%7D/user/orders/%3Fvenue=591%26ordering=-created%26limit=50%60,%7Bheaders:f(d)%7D),n=await%20t.json();if(t.ok)%7Bu=new%20Map;const%20e=n.results%7C%7C%5B%5D;for(const%20t%20of%20e)%7Bif(9===t.order_state)continue;const%20e=t.date.split(%22T%22)%5B0%5D;for(const%20n%20of%20t.items%7C%7C%5B%5D)%7Bconst%20a=%60%24%7Be%7D_%24%7Bn.article%7D%60;u.has(a)%7C%7Cu.set(a,%5B%5D),u.get(a).push(t.id)%7D%7Dconsole.log(%60Fetched%20%24%7Be.length%7D%20orders,%20mapped%20active%20ones.%60),j(),z()%7D%7Dcatch(e)%7Bconsole.error(%22Error%20fetching%20orders:%22,e)%7D%7Dlet%20b=null;function%20w(e)%7Bconst%20t=document.getElementById(%22history-content%22);if(!e%7C%7C0===e.length)return%20void(t.innerHTML=%27%3Cp%20style=%22text-align:center;color:var(--text-secondary);padding:20px;%22%3EKeine%20Bestellungen%20gefunden.%3C/p%3E%27);const%20n=%7B%7D;e.forEach(e=%3E%7Bconst%20t=new%20Date(e.date),a=t.getFullYear(),s=t.getMonth(),o=%60%24%7Ba%7D-%24%7Bs.toString().padStart(2,%220%22)%7D%60,i=t.toLocaleString(%22de-AT%22,%7Bmonth:%22long%22%7D),r=G(t);n%5Ba%5D%7C%7C(n%5Ba%5D=%7Byear:a,months:%7B%7D%7D),n%5Ba%5D.months%5Bo%5D%7C%7C(n%5Ba%5D.months%5Bo%5D=%7Bname:i,year:a,monthIndex:s,count:0,total:0,weeks:%7B%7D%7D),n%5Ba%5D.months%5Bo%5D.weeks%5Br%5D%7C%7C(n%5Ba%5D.months%5Bo%5D.weeks%5Br%5D=%7Blabel:%60KW%20%24%7Br%7D%60,items:%5B%5D,count:0,total:0%7D);(e.items%7C%7C%5B%5D).forEach(t=%3E%7Bconst%20s=parseFloat(t.price%7C%7Ce.total%7C%7C0);n%5Ba%5D.months%5Bo%5D.weeks%5Br%5D.items.push(%7Bdate:e.date,name:t.name%7C%7C%22Men%C3%BC%22,price:s,state:e.order_state%7D),9!==e.order_state%26%26(n%5Ba%5D.months%5Bo%5D.weeks%5Br%5D.count++,n%5Ba%5D.months%5Bo%5D.weeks%5Br%5D.total+=s,n%5Ba%5D.months%5Bo%5D.count++,n%5Ba%5D.months%5Bo%5D.total+=s)%7D)%7D);const%20a=Object.keys(n).sort((e,t)=%3Et-e);let%20s=%22%22;a.forEach(e=%3E%7Bconst%20t=n%5Be%5D;s+=%60%3Cdiv%20class=%22history-year-group%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch2%20class=%22history-year-header%22%3E%24%7Bt.year%7D%3C/h2%3E%60;Object.keys(t.months).sort((e,t)=%3Et.localeCompare(e)).forEach(e=%3E%7Bconst%20n=t.months%5Be%5D;s+=%60%3Cdiv%20class=%22history-month-group%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22history-month-header%22%20tabindex=%220%22%20role=%22button%22%20aria-expanded=%22false%22%20title=%22Klicken,%20um%20die%20Bestellungen%20f%C3%BCr%20diesen%20Monat%20ein-/auszublenden%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style=%22display:flex;%20flex-direction:column;%20gap:4px;%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%3E%24%7Bn.name%7D%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22history-month-summary%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%3E%24%7Bn.count%7D%20Bestellungen%20%26bull;%20%3Cstrong%3E%E2%82%AC%24%7Bn.total.toFixed(2)%7D%3C/strong%3E%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Eexpand_more%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22history-month-content%22%3E%60;Object.keys(n.weeks).sort((e,t)=%3EparseInt(t)-parseInt(e)).forEach(e=%3E%7Bconst%20t=n.weeks%5Be%5D;s+=%60%3Cdiv%20class=%22history-week-group%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22history-week-header%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cstrong%3E%24%7Bt.label%7D%3C/strong%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%3E%24%7Bt.count%7D%20Bestellungen%20%26bull;%20%3Cstrong%3E%E2%82%AC%24%7Bt.total.toFixed(2)%7D%3C/strong%3E%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%60,t.items.forEach(e=%3E%7Bconst%20t=new%20Date(e.date).toLocaleDateString(%22de-AT%22,%7Bweekday:%22short%22,day:%222-digit%22,month:%222-digit%22%7D);let%20n=%22%22;n=9===e.state%3F%27%3Cspan%20class=%22history-item-status%22%3EStorniert%3C/span%3E%27:8===e.state%3F%27%3Cspan%20class=%22history-item-status%22%3EAbgeschlossen%3C/span%3E%27:%27%3Cspan%20class=%22history-item-status%22%3E%C3%9Cbertragen%3C/span%3E%27,s+=%60%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22history-item%20%24%7B9===e.state%3F%22history-item-cancelled%22:%22%22%7D%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style=%22font-size:%200.85rem;%20color:%20var(--text-secondary);%22%3E%24%7Bt%7D%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22history-item-details%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22history-item-name%22%3E%24%7BW(e.name)%7D%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%3E%24%7Bn%7D%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22history-item-price%20%24%7B9===e.state%3F%22history-item-price-cancelled%22:%22%22%7D%22%3E%E2%82%AC%24%7Be.price.toFixed(2)%7D%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%60%7D),s+=%22%3C/div%3E%22%7D),s+=%22%3C/div%3E%3C/div%3E%22%7D),s+=%22%3C/div%3E%22%7D),t.innerHTML=s;t.querySelectorAll(%22.history-month-header%22).forEach(e=%3E%7Be.addEventListener(%22click%22,()=%3E%7Bconst%20t=e.parentElement;t.classList.contains(%22open%22)%3F(t.classList.remove(%22open%22),e.setAttribute(%22aria-expanded%22,%22false%22)):(t.classList.add(%22open%22),e.setAttribute(%22aria-expanded%22,%22true%22))%7D)%7D)%7Dfunction%20k()%7BlocalStorage.setItem(%22kantine_flags%22,JSON.stringify(%5B...g%5D))%7Dfunction%20A()%7Bconst%20e=document.getElementById(%22alarm-bell%22),t=document.getElementById(%22alarm-bell-icon%22);if(!e%7C%7C!t)return;if(0===g.size)return%20e.classList.add(%22hidden%22),e.style.display=%22none%22,t.style.color=%22var(--text-secondary)%22,void(t.style.textShadow=%22none%22);e.classList.remove(%22hidden%22),e.style.display=%22inline-flex%22;let%20n=!1;for(const%20e%20of%20i)if(e.days)%7Bfor(const%20t%20of%20e.days)if(t.items)%7Bfor(const%20e%20of%20t.items)if(e.available%26%26g.has(e.id))%7Bn=!0;break%7Dif(n)break%7Dif(n)break%7Dlet%20a=localStorage.getItem(%22kantine_last_updated%22),s=%22gerade%20eben%22;a%7C%7C(a=(new%20Date).toISOString(),localStorage.setItem(%22kantine_last_updated%22,a));s=%24(new%20Date(a)),e.title=%60Zuletzt%20gepr%C3%BCft:%20%24%7Bs%7D%60,n%3F(t.style.color=%22%2310b981%22,t.style.textShadow=%220%200%2010px%20rgba(16,%20185,%20129,%200.4)%22):(t.style.color=%22%23f59e0b%22,t.style.textShadow=%220%200%2010px%20rgba(245,%20158,%2011,%200.4)%22)%7Dfunction%20E(n,a,s,o)%7Bconst%20r=%60%24%7Bn%7D_%24%7Ba%7D%60;let%20l=!1;g.has(r)%3F(g.delete(r),F(%60Flag%20entfernt%20f%C3%BCr%20%24%7Bs%7D%60,%22success%22)):(g.add(r),l=!0,F(%60Benachrichtigung%20aktiviert%20f%C3%BCr%20%24%7Bs%7D%60,%22success%22),%22default%22===Notification.permission%26%26Notification.requestPermission()),k(),A(),j(),l%26%26async%20function()%7Bif(0===g.size)return;const%20n=d%7C%7Ct,a=new%20Set;for(const%20e%20of%20g)%7Bconst%5Bt%5D=e.split(%22_%22);a.add(t)%7Dlet%20s=!1;for(const%20t%20of%20a)try%7Bconst%20a=await%20fetch(%60%24%7Be%7D/venues/591/menu/7/%24%7Bt%7D/%60,%7Bheaders:f(n)%7D);if(!a.ok)continue;const%20o=(await%20a.json()).results%7C%7C%5B%5D;let%20r=%5B%5D;for(const%20e%20of%20o)e.items%26%26Array.isArray(e.items)%26%26(r=r.concat(e.items));for(let%20e%20of%20i)%7Bif(!e.days)continue;let%20n=e.days.find(e=%3Ee.date===t);n%26%26(n.items=r.map(e=%3E%7Bconst%20n=!1===e.amount_tracking,a=parseInt(e.available_amount)%3E0;return%7Bid:%60%24%7Bt%7D_%24%7Be.id%7D%60,articleId:e.id,name:e.name%7C%7C%22Unknown%22,description:e.description%7C%7C%22%22,price:parseFloat(e.price)%7C%7C0,available:n%7C%7Ca,availableAmount:parseInt(e.available_amount)%7C%7C0,amountTracking:!1!==e.amount_tracking%7D%7D),s=!0)%7D%7Dcatch(e)%7Bconsole.error(%22Error%20refreshing%20flag%20date%22,t,e)%7Ds%26%26(O(),q((new%20Date).toISOString()),A(),j())%7D()%7Dfunction%20I()%7Bh%7C%7Cd%26%26(h=setInterval(()=%3Easync%20function()%7Bif(0===g.size%7C%7C!d)return;console.log(%60Polling%20%24%7Bg.size%7D%20flagged%20items...%60);for(const%20t%20of%20g)%7Bconst%5Bn,a%5D=t.split(%22_%22),s=parseInt(a);try%7Bconst%20t=await%20fetch(%60%24%7Be%7D/venues/591/menu/7/%24%7Bn%7D/%60,%7Bheaders:f(d)%7D);if(!t.ok)continue;const%20a=(await%20t.json()).results%7C%7C%5B%5D;let%20o=null;for(const%20e%20of%20a)if(e.items%26%26(o=e.items.find(e=%3Ee.id===s%7C%7Ce.article===s),o))break;if(o)%7Bif(!1===o.amount_tracking%7C%7CparseInt(o.available_amount)%3E0)%7Bconst%20e=o.name%7C%7C%22Unbekannt%22;F(%60%24%7Be%7D%20ist%20jetzt%20verf%C3%BCgbar!%60,%22success%22),%22granted%22===Notification.permission%26%26new%20Notification(%22Kantine%20Wrapper%22,%7Bbody:%60%24%7Be%7D%20ist%20jetzt%20verf%C3%BCgbar!%60,icon:%22%F0%9F%8D%BD%EF%B8%8F%22%7D),N()%7D%7D%7Dcatch(e)%7Bconsole.error(%60Poll%20error%20for%20%24%7Bt%7D:%60,e),await%20new%20Promise(e=%3EsetTimeout(e,200))%7D%7Dq((new%20Date).toISOString())%7D(),3e5),console.log(%22Polling%20started%20(every%205%20min)%22))%7Dlet%20L=JSON.parse(localStorage.getItem(%22kantine_highlightTags%22)%7C%7C%22%5B%5D%22);function%20S()%7BlocalStorage.setItem(%22kantine_highlightTags%22,JSON.stringify(L)),j(),z()%7Dfunction%20B()%7Bconst%20e=document.getElementById(%22tags-list%22);e.innerHTML=%22%22,L.forEach(t=%3E%7Bconst%20n=document.createElement(%22span%22);n.className=%22tag-badge%22,n.innerHTML=%60%24%7Bt%7D%20%3Cspan%20class=%22tag-remove%22%20data-tag=%22%24%7Bt%7D%22%20title=%22Schlagwort%20entfernen%22%3E%26times;%3C/span%3E%60,e.appendChild(n)%7D),e.querySelectorAll(%22.tag-remove%22).forEach(e=%3E%7Be.addEventListener(%22click%22,e=%3E%7Bvar%20t;t=e.target.dataset.tag,L=L.filter(e=%3Ee!==t),S(),B()%7D)%7D)%7Dfunction%20x(e)%7Breturn%20e%3F(e=e.toLowerCase(),L.filter(t=%3Ee.includes(t))):%5B%5D%7Dconst%20D=%22kantine_menuCache%22,C=%22kantine_menuCacheTs%22;function%20O()%7Btry%7BlocalStorage.setItem(D,JSON.stringify(i)),localStorage.setItem(C,(new%20Date).toISOString())%7Dcatch(e)%7Bconsole.warn(%22Failed%20to%20cache%20menu%20data:%22,e)%7D%7Dasync%20function%20N()%7Bconst%20n=document.getElementById(%22loading%22),a=document.getElementById(%22progress-modal%22),s=document.getElementById(%22progress-fill%22),o=document.getElementById(%22progress-percent%22),c=document.getElementById(%22progress-message%22);n.classList.remove(%22hidden%22);const%20m=d%7C%7Ct;try%7Ba.classList.remove(%22hidden%22),c.textContent=%22Hole%20verf%C3%BCgbare%20Daten...%22,s.style.width=%220%25%22,o.textContent=%220%25%22;const%20t=await%20fetch(%60%24%7Be%7D/venues/591/menu/dates/%60,%7Bheaders:f(m)%7D);if(!t.ok)throw%20new%20Error(%60Failed%20to%20fetch%20dates:%20%24%7Bt.status%7D%60);let%20n=(await%20t.json()).results%7C%7C%5B%5D;const%20d=new%20Date;d.setDate(d.getDate()-7);const%20u=d.toISOString().split(%22T%22)%5B0%5D;n=n.filter(e=%3Ee.date%3E=u).sort((e,t)=%3Ee.date.localeCompare(t.date)).slice(0,30);const%20g=n.length;c.textContent=%60%24%7Bg%7D%20Tage%20gefunden.%20Lade%20Details...%60;const%20h=%5B%5D;let%20p=0;for(const%20t%20of%20n)%7Bconst%20n=t.date,a=Math.round((p+1)/g%2A100);s.style.width=%60%24%7Ba%7D%25%60,o.textContent=%60%24%7Ba%7D%25%60,c.textContent=%60Lade%20Men%C3%BC%20f%C3%BCr%20%24%7Bn%7D...%60;try%7Bconst%20a=await%20fetch(%60%24%7Be%7D/venues/591/menu/7/%24%7Bn%7D/%60,%7Bheaders:f(m)%7D);if(a.ok)%7Bconst%20e=await%20a.json();0===p%26%26console.log(%22%5BKantine%20Debug%5D%20Raw%20API%20response%20for%22,n,%22:%22,JSON.stringify(e).substring(0,2e3));const%20s=e.results%7C%7C%5B%5D;let%20o=%5B%5D;for(const%20e%20of%20s)e.items%26%26Array.isArray(e.items)%26%26(o=o.concat(e.items));o.length%3E0%26%26(0===p%26%26(console.log(%22%5BKantine%20Debug%5D%20First%20item%20keys:%22,Object.keys(o%5B0%5D)),console.log(%22%5BKantine%20Debug%5D%20First%20item:%22,JSON.stringify(o%5B0%5D).substring(0,500))),h.push(%7Bdate:n,menu_items:o,orders:t.orders%7C%7C%5B%5D%7D))%7D%7Dcatch(e)%7Bconsole.error(%60Failed%20to%20fetch%20details%20for%20%24%7Bn%7D:%60,e)%7Dp++,await%20new%20Promise(e=%3EsetTimeout(e,100))%7Dconst%20y=new%20Map;i%26%26i.length%3E0%26%26i.forEach(e=%3E%7Bconst%20t=%60%24%7Be.year%7D-%24%7Be.weekNumber%7D%60;try%7By.set(t,%7Byear:e.year,weekNumber:e.weekNumber,days:e.days%3Fe.days.map(e=%3E(%7B...e,items:e.items%3F%5B...e.items%5D:%5B%5D%7D)):%5B%5D%7D)%7Dcatch(e)%7Bconsole.warn(%22Error%20hydrating%20week:%22,e)%7D%7D);for(const%20e%20of%20h)%7Bconst%20t=new%20Date(e.date),n=G(t),a=J(t),s=%60%24%7Ba%7D-%24%7Bn%7D%60;y.has(s)%7C%7Cy.set(s,%7Byear:a,weekNumber:n,days:%5B%5D%7D);const%20o=y.get(s),i=t.toLocaleDateString(%22en-US%22,%7Bweekday:%22long%22%7D),r=new%20Date(e.date);r.setHours(10,0,0,0);const%20l=%7Bdate:e.date,weekday:i,orderCutoff:r.toISOString(),items:e.menu_items.map(t=%3E%7Bconst%20n=!1===t.amount_tracking,a=parseInt(t.available_amount)%3E0;return%7Bid:%60%24%7Be.date%7D_%24%7Bt.id%7D%60,articleId:t.id,name:t.name%7C%7C%22Unknown%22,description:t.description%7C%7C%22%22,price:parseFloat(t.price)%7C%7C0,available:n%7C%7Ca,availableAmount:parseInt(t.available_amount)%7C%7C0,amountTracking:!1!==t.amount_tracking%7D%7D)%7D,c=o.days.findIndex(t=%3Et.date===e.date);c%3E=0%3Fo.days%5Bc%5D=l:o.days.push(l)%7Di=Array.from(y.values()).sort((e,t)=%3Ee.year!==t.year%3Fe.year-t.year:e.weekNumber-t.weekNumber),i.forEach(e=%3E%7Be.days%26%26e.days.sort((e,t)=%3Ee.date.localeCompare(t.date))%7D),O(),q((new%20Date).toISOString()),r=G(new%20Date),l=(new%20Date).getFullYear(),v(),j(),z(),A(),c.textContent=%22Fertig!%22,setTimeout(()=%3Ea.classList.add(%22hidden%22),500)%7Dcatch(e)%7Bconsole.error(%22Error%20fetching%20menu:%22,e),a.classList.add(%22hidden%22),showErrorModal(%22Keine%20Verbindung%22,%60Die%20Men%C3%BCdaten%20konnten%20nicht%20geladen%20werden.%20M%C3%B6glicherweise%20besteht%20keine%20Verbindung%20zur%20API%20oder%20zur%20Bessa-Webseite.%3Cbr%3E%3Cbr%3E%3Csmall%20style=%22color:var(--text-secondary)%22%3E%24%7Be.message%7D%3C/small%3E%60,%22Zur%20Original-Seite%22,%22https://web.bessa.app/knapp-kantine%22)%7Dfinally%7Bn.classList.add(%22hidden%22)%7D%7Dlet%20M=null,T=null;function%20q(e)%7Bconst%20t=document.getElementById(%22last-updated-subtitle%22);if(e)%7BM=e,localStorage.setItem(%22kantine_last_updated%22,e);try%7Bconst%20n=new%20Date(e),a=n.toLocaleTimeString(%22de-DE%22,%7Bhour:%222-digit%22,minute:%222-digit%22%7D),s=n.toLocaleDateString(%22de-DE%22,%7Bday:%222-digit%22,month:%222-digit%22%7D),o=%24(n);t.textContent=%60Aktualisiert:%20%24%7Bs%7D%20%24%7Ba%7D%20(%24%7Bo%7D)%60%7Dcatch(e)%7Bt.textContent=%22%22%7DT%7C%7C(T=setInterval(()=%3E%7BM%26%26(q(M),A())%7D,6e4))%7D%7Dfunction%20%24(e)%7Bconst%20t=Date.now()-e.getTime(),n=Math.floor(t/6e4);if(n%3C1)return%22gerade%20eben%22;if(1===n)return%22vor%201%20min.%22;if(n%3C60)return%60vor%20%24%7Bn%7D%20min.%60;const%20a=Math.floor(n/60);return%201===a%3F%22vor%201%20Std.%22:%60vor%20%24%7Ba%7D%20Std.%60%7Dfunction%20F(e,t=%22info%22)%7Blet%20n=document.getElementById(%22toast-container%22);n%7C%7C(n=document.createElement(%22div%22),n.id=%22toast-container%22,document.body.appendChild(n));const%20a=document.createElement(%22div%22);a.className=%60toast%20toast-%24%7Bt%7D%60;const%20s=%22success%22===t%3F%22check_circle%22:%22error%22===t%3F%22error%22:%22info%22;a.innerHTML=%60%3Cspan%20class=%22material-icons-round%22%3E%24%7Bs%7D%3C/span%3E%3Cspan%3E%24%7Be%7D%3C/span%3E%60,n.appendChild(a),requestAnimationFrame(()=%3Ea.classList.add(%22show%22)),setTimeout(()=%3E%7Ba.classList.remove(%22show%22),setTimeout(()=%3Ea.remove(),300)%7D,3e3)%7Dfunction%20z()%7Bconst%20e=document.getElementById(%22btn-next-week%22);let%20t=r+1,n=l;t%3E52%26%26(t=1,n++);const%20a=i.find(e=%3Ee.weekNumber===t%26%26e.year===n);let%20s=0,o=0,c=0,d=0;a%26%26a.days%26%26a.days.forEach(e=%3E%7Bif(e.items%26%26e.items.length%3E0)%7Bs++;const%20t=e.items.some(e=%3Ee.available);t%26%26o++;let%20n=!1;e.items.forEach(t=%3E%7Bconst%20a=t.articleId%7C%7CparseInt(t.id.split(%22_%22)%5B1%5D),s=%60%24%7Be.date%7D_%24%7Ba%7D%60;u.has(s)%26%26u.get(s).length%3E0%26%26(n=!0)%7D),n%26%26c++,t%26%26!n%26%26d++%7D%7D);let%20m=e.querySelector(%22.nav-badge%22);if(s%3E0)%7Bm%7C%7C(m=document.createElement(%22span%22),m.className=%22nav-badge%22,e.appendChild(m)),m.title=%60%24%7Bc%7D%20bestellt%20/%20%24%7Bo%7D%20bestellbar%20/%20%24%7Bs%7D%20gesamt%60,m.innerHTML=%60%3Cspan%20class=%22ordered%22%3E%24%7Bc%7D%3C/span%3E%3Cspan%20class=%22separator%22%3E/%3C/span%3E%3Cspan%20class=%22orderable%22%3E%24%7Bo%7D%3C/span%3E%3Cspan%20class=%22separator%22%3E/%3C/span%3E%3Cspan%20class=%22total%22%3E%24%7Bs%7D%3C/span%3E%60,m.classList.remove(%22badge-violet%22,%22badge-green%22,%22badge-red%22,%22badge-blue%22),c%3E0%26%260===d%3Fm.classList.add(%22badge-violet%22):d%3E0%3Fm.classList.add(%22badge-green%22):0===o%3Fm.classList.add(%22badge-red%22):m.classList.add(%22badge-blue%22);let%20i=0;if(a%26%26a.days%26%26a.days.forEach(e=%3E%7Be.items.forEach(e=%3E%7Bconst%20t=x(e.name),n=x(e.description);(t.length%3E0%7C%7Cn.length%3E0)%26%26i++%7D)%7D),i%3E0%26%26(m.innerHTML+=%60%3Cspan%20class=%22highlight-count%22%20title=%22%24%7Bi%7D%20Highlight%20Men%C3%BCs%22%3E(%24%7Bi%7D)%3C/span%3E%60,m.title+=%60%20%E2%80%A2%20%24%7Bi%7D%20Highlights%20gefunden%60,m.classList.add(%22has-highlights%22)),0===c)%7Be.classList.add(%22new-week-available%22);const%20a=%60kantine_notified_nextweek_%24%7Bn%7D_%24%7Bt%7D%60;localStorage.getItem(a)%7C%7C(localStorage.setItem(a,%22true%22),F(%22Neue%20Men%C3%BCdaten%20f%C3%BCr%20n%C3%A4chste%20Woche%20verf%C3%BCgbar!%22,%22info%22))%7Delse%20e.classList.remove(%22new-week-available%22)%7Delse%20m%26%26m.remove()%7Dfunction%20j()%7Bconst%20t=document.getElementById(%22menu-container%22);if(!t)return;t.innerHTML=%22%22;let%20a=r,s=l;%22next-week%22===c%26%26(a++,a%3E52%26%26(a=1,s++));const%20o=i.flatMap(e=%3Ee.days%7C%7C%5B%5D).filter(e=%3E%7Bconst%20t=new%20Date(e.date);return%20G(t)===a%26%26J(t)===s%7D);if(0===o.length)return%20t.innerHTML=%60%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22empty-state%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%3EKeine%20Men%C3%BCdaten%20f%C3%BCr%20KW%20%24%7Ba%7D%20(%24%7Bs%7D)%20verf%C3%BCgbar.%3C/p%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Csmall%3EVersuchen%20Sie%20eine%20andere%20Woche%20oder%20schauen%20Sie%20sp%C3%A4ter%20vorbei.%3C/small%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%60,void%20document.getElementById(%22weekly-cost-display%22).classList.add(%22hidden%22);!function(e)%7Blet%20t=0;e%26%26e.length%3E0%26%26e.forEach(e=%3E%7Be.items%26%26e.items.forEach(n=%3E%7Bconst%20a=n.articleId%7C%7CparseInt(n.id.split(%22_%22)%5B1%5D),s=%60%24%7Be.date%7D_%24%7Ba%7D%60,o=u.get(s)%7C%7C%5B%5D;o.length%3E0%26%26(t+=n.price%2Ao.length)%7D)%7D);const%20n=document.getElementById(%22weekly-cost-display%22);t%3E0%3F(n.innerHTML=%60%3Cspan%20class=%22material-icons-round%22%3Eshopping_bag%3C/span%3E%20%3Cspan%3EGesamt:%20%24%7Bt.toFixed(2).replace(%22.%22,%22,%22)%7D%20%E2%82%AC%3C/span%3E%60,n.classList.remove(%22hidden%22)):n.classList.add(%22hidden%22)%7D(o);const%20m=document.getElementById(%22header-week-info%22),h=%22this-week%22===c%3F%22Diese%20Woche%22:%22N%C3%A4chste%20Woche%22;m.innerHTML=%60%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22header-week-title%22%3E%24%7Bh%7D%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22header-week-subtitle%22%3EWeek%20%24%7Ba%7D%20%E2%80%A2%20%24%7Bs%7D%3C/div%3E%60;const%20v=document.createElement(%22div%22);v.className=%22days-grid%22,o.sort((e,t)=%3Ee.date.localeCompare(t.date));o.filter(e=%3E%7Bconst%20t=new%20Date(e.date).getDay();return%200!==t%26%266!==t%7D).forEach(t=%3E%7Bconst%20a=function(t)%7Bif(!t.items%7C%7C0===t.items.length)return%20null;const%20a=document.createElement(%22div%22);a.className=%22menu-card%22;const%20s=new%20Date,o=new%20Date(t.date);let%20i=!1;if(t.orderCutoff)i=s%3E=new%20Date(t.orderCutoff);else%7Bconst%20e=new%20Date;e.setHours(0,0,0,0);const%20n=new%20Date(t.date);n.setHours(0,0,0,0),i=n%3Ce%7Di%26%26a.classList.add(%22past-day%22);const%20r=%5B%5D;t.items%26%26t.items.forEach(e=%3E%7Bconst%20n=e.articleId%7C%7CparseInt(e.id.split(%22_%22)%5B1%5D),a=%60%24%7Bt.date%7D_%24%7Bn%7D%60,s=(u.get(a)%7C%7C%5B%5D).length;if(s%3E0)%7Bconst%20t=e.name.match(/(%5BM%5D%5B1-9%5D%5BFf%5D%3F)/);if(t)%7Blet%20e=t%5B1%5D;s%3E1%26%26(e+=%22+%22),r.push(e)%7D%7D%7D);const%20l=document.createElement(%22div%22);l.className=%22card-header%22;const%20c=o.toLocaleDateString(%22de-DE%22,%7Bday:%222-digit%22,month:%222-digit%22%7D),m=r.map(e=%3E%60%3Cspan%20class=%22menu-code-badge%22%3E%24%7Be%7D%3C/span%3E%60).join(%22%22);let%20h=%22%22;const%20v=t.items%26%26t.items.some(e=%3E%7Bconst%20n=e.articleId%7C%7CparseInt(e.id.split(%22_%22)%5B1%5D),a=%60%24%7Bt.date%7D_%24%7Bn%7D%60;return%20u.has(a)%26%26u.get(a).length%3E0%7D),w=t.items%26%26t.items.some(e=%3Ee.available);h=v%3F%22header-violet%22:w%26%26!i%3F%22header-green%22:%22header-red%22;h%26%26l.classList.add(h);l.innerHTML=%60%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22day-header-left%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22day-name%22%3E%24%7Bk=t.weekday,%7BMonday:%22Montag%22,Tuesday:%22Dienstag%22,Wednesday:%22Mittwoch%22,Thursday:%22Donnerstag%22,Friday:%22Freitag%22,Saturday:%22Samstag%22,Sunday:%22Sonntag%22%7D%5Bk%5D%7C%7Ck%7D%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22day-badges%22%3E%24%7Bm%7D%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22day-date%22%3E%24%7Bc%7D%3C/span%3E%60,a.appendChild(l);var%20k;const%20A=document.createElement(%22div%22);A.className=%22card-body%22;const%20I=(new%20Date).toISOString().split(%22T%22)%5B0%5D,L=t.date===I,S=%5B...t.items%5D.sort((e,n)=%3E%7Bif(L)%7Bconst%20a=e.articleId%7C%7CparseInt(e.id.split(%22_%22)%5B1%5D),s=n.articleId%7C%7CparseInt(n.id.split(%22_%22)%5B1%5D),o=u.has(%60%24%7Bt.date%7D_%24%7Ba%7D%60),i=u.has(%60%24%7Bt.date%7D_%24%7Bs%7D%60);if(o%26%26!i)return-1;if(!o%26%26i)return%201%7Dreturn%20e.name.localeCompare(n.name)%7D);return%20S.forEach(a=%3E%7Bconst%20o=document.createElement(%22div%22);o.className=%22menu-item%22;const%20r=a.articleId%7C%7CparseInt(a.id.split(%22_%22)%5B1%5D),l=%60%24%7Bt.date%7D_%24%7Br%7D%60,c=(u.get(l)%7C%7C%5B%5D).length;let%20m=%22%22;m=a.available%3Fa.amountTracking%3F%60%3Cspan%20class=%22badge%20available%22%3EVerf%C3%BCgbar%20(%24%7Ba.availableAmount%7D)%3C/span%3E%60:%27%3Cspan%20class=%22badge%20available%22%3EVerf%C3%BCgbar%3C/span%3E%27:%27%3Cspan%20class=%22badge%20sold-out%22%3EAusverkauft%3C/span%3E%27;let%20h=%22%22;if(c%3E0)%7Bh=%60%3Cspan%20class=%22badge%20ordered%22%3E%3Cspan%20class=%22material-icons-round%22%3Echeck_circle%3C/span%3E%20Bestellt%24%7Bc%3E1%3F%60%3Cspan%20class=%22order-count-badge%22%3E%24%7Bc%7D%3C/span%3E%60:%22%22%7D%3C/span%3E%60,o.classList.add(%22ordered%22),new%20Date(t.date).toDateString()===s.toDateString()%26%26o.classList.add(%22today-ordered%22)%7Dconst%20v=%60%24%7Bt.date%7D_%24%7Br%7D%60,w=g.has(v);w%26%26o.classList.add(a.available%3F%22flagged-available%22:%22flagged-sold-out%22);const%20k=%5B...new%20Set(%5B...x(a.name),...x(a.description)%5D)%5D;k.length%3E0%26%26o.classList.add(%22highlight-glow%22);let%20I=%22%22,L=%22%22,S=%22%22;if(d%26%26!i)%7Bconst%20e=w%3F%22notifications_active%22:%22notifications_none%22,n=w%3F%22btn-flag%20active%22:%22btn-flag%22,s=w%3F%22Benachrichtigung%20deaktivieren%22:%22Benachrichtigen%20wenn%20verf%C3%BCgbar%22;if(a.available%26%26!w%7C%7C(S=%60%3Cbutton%20class=%22%24%7Bn%7D%22%20data-date=%22%24%7Bt.date%7D%22%20data-article=%22%24%7Br%7D%22%20data-name=%22%24%7BW(a.name)%7D%22%20data-cutoff=%22%24%7Bt.orderCutoff%7D%22%20title=%22%24%7Bs%7D%22%3E%3Cspan%20class=%22material-icons-round%22%3E%24%7Be%7D%3C/span%3E%3C/button%3E%60),a.available%26%26(I=c%3E0%3F%60%3Cbutton%20class=%22btn-order%20btn-order-compact%22%20data-date=%22%24%7Bt.date%7D%22%20data-article=%22%24%7Br%7D%22%20data-name=%22%24%7BW(a.name)%7D%22%20data-price=%22%24%7Ba.price%7D%22%20data-desc=%22%24%7BW(a.description%7C%7C%22%22)%7D%22%20title=%22%24%7BW(a.name)%7D%20nochmal%20bestellen%22%3E%3Cspan%20class=%22material-icons-round%22%3Eadd%3C/span%3E%3C/button%3E%60:%60%3Cbutton%20class=%22btn-order%22%20data-date=%22%24%7Bt.date%7D%22%20data-article=%22%24%7Br%7D%22%20data-name=%22%24%7BW(a.name)%7D%22%20data-price=%22%24%7Ba.price%7D%22%20data-desc=%22%24%7BW(a.description%7C%7C%22%22)%7D%22%20title=%22%24%7BW(a.name)%7D%20bestellen%22%3E%3Cspan%20class=%22material-icons-round%22%3Eadd_shopping_cart%3C/span%3E%20Bestellen%3C/button%3E%60),c%3E0)%7Bconst%20e=1===c%3F%22close%22:%22remove%22,n=1===c%3F%22Bestellung%20stornieren%22:%22Eine%20Bestellung%20stornieren%22;L=%60%3Cbutton%20class=%22btn-cancel%22%20data-date=%22%24%7Bt.date%7D%22%20data-article=%22%24%7Br%7D%22%20data-name=%22%24%7BW(a.name)%7D%22%20title=%22%24%7Bn%7D%22%3E%3Cspan%20class=%22material-icons-round%22%3E%24%7Be%7D%3C/span%3E%3C/button%3E%60%7D%7Dlet%20B=%22%22;if(k.length%3E0)%7BB=%60%3Cdiv%20class=%22matched-tags%22%3E%24%7Bk.map(e=%3E%60%3Cspan%20class=%22tag-badge-small%22%3E%3Cspan%20class=%22material-icons-round%22%20style=%22font-size:10px;margin-right:2px%22%3Estar%3C/span%3E%24%7BW(e)%7D%3C/span%3E%60).join(%22%22)%7D%3C/div%3E%60%7Do.innerHTML=%60%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22item-header%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22item-name%22%3E%24%7BW(a.name)%7D%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22item-price%22%3E%24%7Ba.price.toFixed(2)%7D%20%E2%82%AC%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22item-status-row%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%7Bh%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%7BL%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%7BI%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%7BS%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22badges%22%3E%24%7Bm%7D%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%7BB%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%20class=%22item-desc%22%3E%24%7BW(function(e)%7Bif(%22all%22===p)return%20e%7C%7C%22%22;const%20t=function(e)%7Bif(!e)return%7Bde:%22%22,en:%22%22,raw:%22%22%7D;let%20t=e.replace(/(%3F:%5C(%7C(%3F:%5C/%7C%5Cs%7C%5E))(%5BA-Z,%5D+)%5C)%5Cs%2A(%3F=%5CS)(%3F!%5Cs%2A%5C/)/g,%22(%241)%5Cn%E2%80%A2%20%22);t.startsWith(%22%E2%80%A2%20%22)%7C%7C(t=%22%E2%80%A2%20%22+t);function%20n(e)%7Blet%20t=0,n=0;return%20e.forEach(e=%3E%7Bconst%20a=e.toLowerCase().replace(/%5B%5Ea-z%C3%A4%C3%B6%C3%BC%C3%9F%5D/g,%22%22);if(a)%7Blet%20s=0,o=0;P.includes(a)%3Fs=a.length:P.forEach(e=%3E%7Ba.includes(e)%26%26e.length%3Es%26%26(s=e.length)%7D),V.includes(a)%3Fo=a.length:V.forEach(e=%3E%7Ba.includes(e)%26%26e.length%3Eo%26%26(o=e.length)%7D),s%3E0%26%26(t+=s/a.length),o%3E0%26%26(n+=o/a.length),/%5E%5BA-Z%C3%84%C3%96%C3%9C%5D/.test(e)%26%26(t+=.5)%7D%7D),%7Bde:t,en:n%7D%7Dfunction%20a(e)%7Bconst%20t=e.trim().split(/%5Cs+/);if(t.length%3C2)return%7BenPart:e,nextDe:%22%22%7D;let%20a=-1,s=-9999;for(let%20e=1;e%3Ct.length;e++)%7Bconst%20o=t.slice(0,e),i=t.slice(e),r=n(o),l=n(i),c=i%5B0%5D;let%20d=0;/%5E%5BA-Z%C3%84%C3%96%C3%9C%5D/.test(c)%26%26(d=1);const%20m=r.en-r.de+(l.de-l.en)+d,u=r.en%3Er.de%7C%7Cr.en%3E0,g=l.de+d%3El.en;u%26%26g%26%26m%3Es%26%26(s=m,a=e)%7Dreturn-1!==a%3F%7BenPart:t.slice(0,a).join(%22%20%22),nextDe:t.slice(a).join(%22%20%22)%7D:%7BenPart:e,nextDe:%22%22%7D%7Dconst%20s=/(.%2A%3F)(%3F:%5C(%7C(%3F:%5C/%7C%5Cs%7C%5E))(%5BA-Z,%5D+)%5C)%5Cs%2A(%3F!%5Cs%2A%5B/%5D)/g;let%20o;const%20i=%5B%5D;let%20r=0;for(;null!==(o=s.exec(e));)o.index%3Er%26%26i.push(e.substring(r,o.index).trim()),i.push(o%5B0%5D.trim()),r=s.lastIndex;r%3Ce.length%26%26i.push(e.substring(r).trim());0===i.length%26%26%22%22!==e.trim()%26%26i.push(e.trim());const%20l=%5B%5D,c=%5B%5D;for(let%20e%20of%20i)%7Blet%20t=e.match(/(.%2A%3F)(%3F:%5C(%7C(%3F:%5C/%7C%5Cs%7C%5E))(%5BA-Z,%5D+)%5C)%5Cs%2A%24/),n=e,s=%22%22,o=%22%22;t%26%26(n=t%5B1%5D.trim(),o=t%5B2%5D,s=%60%20(%24%7Bo%7D)%60);const%20i=n.split(/%5Cs%2A%5C/%5Cs%2A(%3F!%5BA-Z,%5D+%24)/);if(i.length%3E=2)%7Bconst%20e=i%5B0%5D.trim();let%20t=i.slice(1).join(%22%20/%20%22).trim();const%20n=a(t);if(n.nextDe)%7Bl.push(e+s),c.push(n.enPart+s);const%20t=n.nextDe+s;l.push(t),c.push(t)%7Delse%7Bconst%20n=t+s,a=e.includes(s.trim())%3Fe:e+s;l.push(a),c.push(n)%7D%7Delse%7Bconst%20e=a(n);e.nextDe%3F(c.push(e.enPart+s),l.push(e.nextDe+s)):(l.push(n+s),c.push(n+s))%7D%7Dlet%20d=l.join(%22%5Cn%E2%80%A2%20%22);l.length%3E0%26%26!d.startsWith(%22%E2%80%A2%20%22)%26%26(d=%22%E2%80%A2%20%22+d);let%20m=c.join(%22%5Cn%E2%80%A2%20%22);c.length%3E0%26%26!m.startsWith(%22%E2%80%A2%20%22)%26%26(m=%22%E2%80%A2%20%22+m);return%7Bde:d,en:m,raw:t%7D%7D(e);return%22en%22===p%3Ft.en%7C%7Ct.raw:t.de%7C%7Ct.raw%7D(a.description))%7D%3C/p%3E%60;const%20D=o.querySelector(%22.btn-order%22);D%26%26D.addEventListener(%22click%22,t=%3E%7Bt.stopPropagation();const%20a=t.currentTarget;a.disabled=!0,a.classList.add(%22loading%22),async%20function(t,a,s,o,i)%7Bif(d)try%7Bconst%20r=await%20fetch(%60%24%7Be%7D/auth/user/%60,%7Bheaders:f(d)%7D);if(!r.ok)return%20void%20F(%22Fehler:%20Benutzerdaten%20konnten%20nicht%20geladen%20werden%22,%22error%22);const%20l=await%20r.json(),c=(new%20Date).toISOString(),m=%7Buuid:crypto.randomUUID(),created:c,updated:c,order_type:7,items:%5B%7Barticle:a,course_group:null,modifiers:%5B%5D,uuid:crypto.randomUUID(),name:s,description:i%7C%7C%22%22,price:String(parseFloat(o)),amount:1,vat:%2210.00%22,comment:%22%22%7D%5D,table:null,total:parseFloat(o),tip:0,currency:%22EUR%22,venue:n,states:%5B%5D,order_state:1,date:%60%24%7Bt%7DT10:30:00Z%60,payment_method:%22payroll%22,customer:%7Bfirst_name:l.first_name,last_name:l.last_name,email:l.email,newsletter:!1%7D,preorder:!0,delivery_fee:0,cash_box_table_name:null,take_away:!1%7D,u=await%20fetch(%60%24%7Be%7D/user/orders/%60,%7Bmethod:%22POST%22,headers:f(d),body:JSON.stringify(m)%7D);if(u.ok%7C%7C201===u.status)F(%60Bestellt:%20%24%7Bs%7D%60,%22success%22),b=null,await%20y();else%7Bconst%20e=await%20u.json();F(%60Fehler:%20%24%7Be.detail%7C%7Ce.non_field_errors%3F.%5B0%5D%7C%7C%22Bestellung%20fehlgeschlagen%22%7D%60,%22error%22)%7D%7Dcatch(e)%7Bconsole.error(%22Order%20error:%22,e),F(%22Netzwerkfehler%20bei%20Bestellung%22,%22error%22)%7D%7D(a.dataset.date,parseInt(a.dataset.article),a.dataset.name,parseFloat(a.dataset.price),a.dataset.desc%7C%7C%22%22).finally(()=%3E%7Ba.disabled=!1,a.classList.remove(%22loading%22)%7D)%7D);const%20C=o.querySelector(%22.btn-cancel%22);C%26%26C.addEventListener(%22click%22,t=%3E%7Bt.stopPropagation();const%20n=t.currentTarget;n.disabled=!0,async%20function(t,n,a)%7Bif(!d)return;const%20s=%60%24%7Bt%7D_%24%7Bn%7D%60,o=u.get(s);if(!o%7C%7C0===o.length)return;const%20i=o%5Bo.length-1%5D;try%7Bconst%20t=await%20fetch(%60%24%7Be%7D/user/orders/%24%7Bi%7D/cancel/%60,%7Bmethod:%22PATCH%22,headers:f(d),body:JSON.stringify(%7B%7D)%7D);t.ok%3F(F(%60Storniert:%20%24%7Ba%7D%60,%22success%22),b=null,await%20y()):F(%60Fehler:%20%24%7B(await%20t.json()).detail%7C%7C%22Stornierung%20fehlgeschlagen%22%7D%60,%22error%22)%7Dcatch(e)%7Bconsole.error(%22Cancel%20error:%22,e),F(%22Netzwerkfehler%20bei%20Stornierung%22,%22error%22)%7D%7D(n.dataset.date,parseInt(n.dataset.article),n.dataset.name).finally(()=%3E%7Bn.disabled=!1%7D)%7D);const%20O=o.querySelector(%22.btn-flag%22);O%26%26O.addEventListener(%22click%22,e=%3E%7Be.stopPropagation();const%20t=e.currentTarget;E(t.dataset.date,parseInt(t.dataset.article),t.dataset.name,t.dataset.cutoff)%7D),A.appendChild(o)%7D),a.appendChild(A),a%7D(t);a%26%26v.appendChild(a)%7D),t.appendChild(v),setTimeout(()=%3Efunction(e)%7Bconst%20t=e.querySelectorAll(%22.menu-card%22);if(0===t.length)return;let%20n=0;t.forEach(e=%3E%7Bn=Math.max(n,e.querySelectorAll(%22.menu-item%22).length)%7D);for(let%20e=0;e%3Cn;e++)%7Blet%20n=0;const%20a=%5B%5D;t.forEach(t=%3E%7Bconst%20s=t.querySelectorAll(%22.menu-item%22);s%5Be%5D%26%26(s%5Be%5D.style.height=%22auto%22,n=Math.max(n,s%5Be%5D.offsetHeight),a.push(s%5Be%5D))%7D),a.forEach(e=%3E%7Be.style.height=%60%24%7Bn%7Dpx%60%7D)%7D%7D(v),0)%7Dfunction%20H(e,t)%7Bif(!e%7C%7C!t)return!1;const%20n=e.replace(/%5Ev/,%22%22).split(%22.%22).map(Number),a=t.replace(/%5Ev/,%22%22).split(%22.%22).map(Number);for(let%20e=0;e%3CMath.max(n.length,a.length);e++)%7Bif((n%5Be%5D%7C%7C0)%3E(a%5Be%5D%7C%7C0))return!0;if((n%5Be%5D%7C%7C0)%3C(a%5Be%5D%7C%7C0))return!1%7Dreturn!1%7Dasync%20function%20K(e)%7Bconst%20t=e%3F%60%24%7Bs%7D/tags%3Fper_page=20%60:%60%24%7Bs%7D/releases%3Fper_page=20%60,n=await%20fetch(t,%7Bheaders:%7BAccept:%22application/vnd.github.v3+json%22%7D%7D);if(!n.ok)%7Bif(403===n.status)throw%20new%20Error(%22API%20Rate%20Limit%20erreicht%20(403).%20Bitte%20sp%C3%A4ter%20erneut%20versuchen.%22);throw%20new%20Error(%60GitHub%20API%20%24%7Bn.status%7D%60)%7Dreturn(await%20n.json()).map(t=%3E%7Bconst%20n=e%3Ft.name:t.tag_name;return%7Btag:n,name:e%3Fn:t.name%7C%7Cn,url:%60%24%7Bo%7D/%24%7Bn%7D/dist/install.html%60,body:t.body%7C%7C%22%22%7D%7D)%7Dasync%20function%20Q()%7Bconst%20e=%22v1.6.10%22,t=%22true%22===localStorage.getItem(%22kantine_dev_mode%22);try%7Bconst%20n=await%20K(t);if(!n.length)return;localStorage.setItem(%22kantine_version_cache%22,JSON.stringify(%7Btimestamp:Date.now(),devMode:t,versions:n%7D));const%20a=n%5B0%5D.tag;if(console.log(%60%5BKantine%5D%20Version%20Check:%20Local%20%5B%24%7Be%7D%5D%20vs%20Latest%20%5B%24%7Ba%7D%5D%20(%24%7Bt%3F%22dev%22:%22stable%22%7D)%60),!H(a,e))return;console.log(%60%5BKantine%5D%20Update%20verf%C3%BCgbar:%20%24%7Ba%7D%60);const%20s=document.querySelector(%22.header-left%20h1%22);if(s%26%26!s.querySelector(%22.update-icon%22))%7Bconst%20e=document.createElement(%22a%22);e.className=%22update-icon%22,e.href=n%5B0%5D.url,e.target=%22_blank%22,e.innerHTML=%22%F0%9F%86%95%22,e.title=%60Update:%20%24%7Ba%7D%20%E2%80%94%20Klick%20zum%20Installieren%60,e.style.cssText=%22margin-left:8px;font-size:1em;text-decoration:none;cursor:pointer;vertical-align:middle;%22,s.appendChild(e)%7D%7Dcatch(e)%7Bconsole.warn(%22%5BKantine%5D%20Version%20check%20failed:%22,e)%7D%7Dfunction%20X()%7Bif(!d%7C%7C!m)return%20void%20U();const%20e=new%20Date,t=e.getDay();if(0===t%7C%7C6===t)return%20void%20U();const%20n=e.toISOString().split(%22T%22)%5B0%5D;let%20a=!1;for(const%20e%20of%20u.keys())if(e.startsWith(n))%7Ba=!0;break%7Dif(a)return%20void%20U();const%20s=new%20Date;s.setHours(10,0,0,0);const%20o=s-e;if(o%3C=0)return%20void%20U();const%20i=Math.floor(o/36e5),r=Math.floor(o%2536e5/6e4),l=document.querySelector(%22.header-center-wrapper%22);if(!l)return;let%20c=document.getElementById(%22order-countdown%22);if(c%7C%7C(c=document.createElement(%22div%22),c.id=%22order-countdown%22,l.insertBefore(c,l.firstChild)),c.innerHTML=%60%3Cspan%3EBestellschluss:%3C/span%3E%20%3Cstrong%3E%24%7Bi%7Dh%20%24%7Br%7Dm%3C/strong%3E%60,o%3C36e5)%7Bc.classList.add(%22urgent%22);const%20e=%60kantine_notified_%24%7Bn%7D%60;localStorage.getItem(e)%7C%7C(%22granted%22===Notification.permission%3Fnew%20Notification(%22Kantine:%20Bestellschluss%20naht!%22,%7Bbody:%22Du%20hast%20heute%20noch%20nichts%20bestellt.%20Nur%20noch%201%20Stunde!%22,icon:%22%E2%8F%B3%22%7D):%22default%22===Notification.permission%26%26Notification.requestPermission(),localStorage.setItem(e,%22true%22))%7Delse%20c.classList.remove(%22urgent%22)%7Dfunction%20U()%7Bconst%20e=document.getElementById(%22order-countdown%22);e%26%26e.remove()%7Dfunction%20G(e)%7Bconst%20t=new%20Date(Date.UTC(e.getFullYear(),e.getMonth(),e.getDate())),n=t.getUTCDay()%7C%7C7;t.setUTCDate(t.getUTCDate()+4-n);const%20a=new%20Date(Date.UTC(t.getUTCFullYear(),0,1));return%20Math.ceil(((t-a)/864e5+1)/7)%7Dfunction%20J(e)%7Bconst%20t=new%20Date(e.getTime());return%20t.setDate(t.getDate()+3-(t.getDay()+6)%257),t.getFullYear()%7Dfunction%20W(e)%7Bconst%20t=document.createElement(%22div%22);return%20t.textContent=e%7C%7C%22%22,t.innerHTML%7DsetInterval(X,6e4),setTimeout(X,1e3);const%20P=%5B%22apfel%22,%22achtung%22,%22aubergine%22,%22auflauf%22,%22beere%22,%22blumenkohl%22,%22bohne%22,%22braten%22,%22brokkoli%22,%22brot%22,%22brust%22,%22br%C3%B6tchen%22,%22butter%22,%22chili%22,%22dessert%22,%22dip%22,%22eier%22,%22eintopf%22,%22eis%22,%22erbse%22,%22erdbeer%22,%22essig%22,%22filet%22,%22fisch%22,%22fisole%22,%22fleckerl%22,%22fleisch%22,%22fl%C3%BCgel%22,%22frucht%22,%22f%C3%BCr%22,%22gebraten%22,%22gem%C3%BCse%22,%22gew%C3%BCrz%22,%22gratin%22,%22grie%C3%9F%22,%22gulasch%22,%22gurke%22,%22himbeer%22,%22honig%22,%22huhn%22,%22h%C3%A4hnchen%22,%22jambalaya%22,%22joghurt%22,%22karotte%22,%22kartoffel%22,%22keule%22,%22kirsch%22,%22knacker%22,%22knoblauch%22,%22kn%C3%B6del%22,%22kompott%22,%22kraut%22,%22kr%C3%A4uter%22,%22kuchen%22,%22k%C3%A4se%22,%22k%C3%BCrbis%22,%22lauch%22,%22mandel%22,%22milch%22,%22mild%22,%22mit%22,%22mohn%22,%22most%22,%22m%C3%B6hre%22,%22natur%22,%22nockerl%22,%22nudel%22,%22nuss%22,%22nu%C3%9F%22,%22obst%22,%22oder%22,%22olive%22,%22paprika%22,%22pfanne%22,%22pfannkuchen%22,%22pfeffer%22,%22pikant%22,%22pilz%22,%22plunder%22,%22p%C3%BCree%22,%22ragout%22,%22rahm%22,%22reis%22,%22rind%22,%22sahne%22,%22salami%22,%22salat%22,%22salz%22,%22sauer%22,%22scharf%22,%22schinken%22,%22schnitte%22,%22schnitzel%22,%22schoko%22,%22schupf%22,%22schwein%22,%22sellerie%22,%22senf%22,%22sosse%22,%22so%C3%9Fe%22,%22spargel%22,%22sp%C3%A4tzle%22,%22speck%22,%22spie%C3%9F%22,%22spinat%22,%22steak%22,%22suppe%22,%22s%C3%BC%C3%9F%22,%22tofu%22,%22tomate%22,%22topfen%22,%22torte%22,%22tr%C3%BCffel%22,%22und%22,%22vanille%22,%22vogerl%22,%22vom%22,%22wien%22,%22wurst%22,%22zucchini%22,%22zum%22,%22zur%22,%22zwiebel%22,%22%C3%B6l%22%5D,V=%5B%22almond%22,%22and%22,%22apple%22,%22asparagus%22,%22bacon%22,%22baked%22,%22ball%22,%22bean%22,%22beef%22,%22berry%22,%22bread%22,%22breast%22,%22broccoli%22,%22bun%22,%22butter%22,%22cabbage%22,%22cake%22,%22caper%22,%22carrot%22,%22casserole%22,%22cauliflower%22,%22celery%22,%22cheese%22,%22cherry%22,%22chicken%22,%22chili%22,%22choco%22,%22chocolate%22,%22cider%22,%22cilantro%22,%22coffee%22,%22compote%22,%22cream%22,%22cucumber%22,%22curd%22,%22danish%22,%22dessert%22,%22dip%22,%22dumpling%22,%22egg%22,%22eggplant%22,%22filet%22,%22fish%22,%22for%22,%22fried%22,%22from%22,%22fruit%22,%22garlic%22,%22goulash%22,%22gratin%22,%22ham%22,%22herb%22,%22honey%22,%22hot%22,%22ice%22,%22jambalaya%22,%22leek%22,%22leg%22,%22mash%22,%22meat%22,%22mexican%22,%22mild%22,%22milk%22,%22mint%22,%22mushroom%22,%22mustard%22,%22noodle%22,%22nut%22,%22oat%22,%22oil%22,%22olive%22,%22onion%22,%22or%22,%22oven%22,%22pan%22,%22pancake%22,%22pea%22,%22pepper%22,%22plain%22,%22plate%22,%22poppy%22,%22pork%22,%22potato%22,%22pumpkin%22,%22radish%22,%22ragout%22,%22raspberry%22,%22rice%22,%22roast%22,%22roll%22,%22salad%22,%22salami%22,%22salt%22,%22sauce%22,%22sausage%22,%22shrimp%22,%22skewer%22,%22slice%22,%22soup%22,%22sour%22,%22spice%22,%22spicy%22,%22spinach%22,%22steak%22,%22stew%22,%22strawberr%22,%22strawberry%22,%22strudel%22,%22sweet%22,%22tart%22,%22thyme%22,%22to%22,%22tofu%22,%22tomat%22,%22tomato%22,%22truffle%22,%22trukey%22,%22turkey%22,%22vanilla%22,%22vegan%22,%22vegetable%22,%22vinegar%22,%22wedge%22,%22wing%22,%22with%22,%22wok%22,%22yogurt%22,%22zucchini%22%5D;!function()%7Bdocument.title=%22Kantine%20Weekly%20Menu%22,document.querySelectorAll%26%26document.querySelectorAll(%27link%5Brel%2A=%22icon%22%5D%27).forEach(e=%3Ee.remove());const%20e=document.createElement(%22link%22);if(e.rel=%22icon%22,e.type=%22image/png%22,e.href=%22data:image/png;base64,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%22,document.head.appendChild(e),!document.querySelector(%27link%5Bhref%2A=%22fonts.googleapis.com/css2%3Ffamily=Inter%22%5D%27))%7Bconst%20e=document.createElement(%22link%22);e.rel=%22stylesheet%22,e.href=%22https://fonts.googleapis.com/css2%3Ffamily=Inter:wght%40300;400;500;600;700%26display=swap%22,document.head.appendChild(e)%7Dif(!document.querySelector(%27link%5Bhref%2A=%22Material+Icons+Round%22%5D%27))%7Bconst%20e=document.createElement(%22link%22);e.rel=%22stylesheet%22,e.href=%22https://fonts.googleapis.com/icon%3Ffamily=Material+Icons+Round%22,document.head.appendChild(e)%7Ddocument.body.innerHTML=%60%5Cn%20%20%20%20%20%20%20%20%3Cdiv%20id=%22kantine-wrapper%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cheader%20class=%22app-header%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22header-content%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22brand%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cimg%20src=%22data:image/png;base64,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%22%20alt=%22Logo%22%20class=%22logo-img%22%20style=%22height:%202em;%20width:%202em;%20object-fit:%20contain;%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22header-left%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch1%3EKantinen%20%C3%9Cbersicht%20%3Csmall%20class=%22version-tag%22%20style=%22font-size:%200.6em;%20opacity:%200.7;%20font-weight:%20400;%20cursor:%20pointer;%22%20title=%22Klick%20f%C3%BCr%20Versionsmen%C3%BC%22%3Ev1.6.10%3C/small%3E%3C/h1%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22last-updated-subtitle%22%20class=%22subtitle%22%3E%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22nav-group%22%20style=%22margin-left:%201rem;%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-this-week%22%20class=%22nav-btn%20active%22%20title=%22Men%C3%BC%20dieser%20Woche%20anzeigen%22%3EDiese%20Woche%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-next-week%22%20class=%22nav-btn%22%20title=%22Men%C3%BC%20n%C3%A4chster%20Woche%20anzeigen%22%3EN%C3%A4chste%20Woche%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22alarm-bell%22%20class=%22icon-btn%20hidden%22%20aria-label=%22Benachrichtigungen%22%20title=%22Keine%20beobachteten%20Men%C3%BCs%22%20style=%22margin-left:%20-0.5rem;%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%20id=%22alarm-bell-icon%22%20style=%22color:var(--text-secondary);%20transition:%20color%200.3s;%22%3Enotifications%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22header-center-wrapper%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22lang-toggle%22%20class=%22lang-toggle%22%20title=%22Sprache%20der%20Men%C3%BCbeschreibung%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20class=%22lang-btn%24%7B%22de%22===p%3F%22%20active%22:%22%22%7D%22%20data-lang=%22de%22%3EDE%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20class=%22lang-btn%24%7B%22en%22===p%3F%22%20active%22:%22%22%7D%22%20data-lang=%22en%22%3EEN%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20class=%22lang-btn%24%7B%22all%22===p%3F%22%20active%22:%22%22%7D%22%20data-lang=%22all%22%3EALL%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22header-week-info%22%20class=%22header-week-info%22%3E%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22weekly-cost-display%22%20class=%22weekly-cost%20hidden%22%3E%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22controls%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-refresh%22%20class=%22icon-btn%22%20aria-label=%22Men%C3%BCdaten%20aktualisieren%22%20title=%22Men%C3%BCdaten%20neu%20laden%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Erefresh%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-history%22%20class=%22icon-btn%22%20aria-label=%22Bestellhistorie%22%20title=%22Bestellhistorie%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Ereceipt_long%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-highlights%22%20class=%22icon-btn%22%20aria-label=%22Pers%C3%B6nliche%20Highlights%20verwalten%22%20title=%22Pers%C3%B6nliche%20Highlights%20verwalten%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Elabel%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22theme-toggle%22%20class=%22icon-btn%22%20aria-label=%22Toggle%20Theme%22%20title=%22Erscheinungsbild%20(Hell/Dunkel)%20wechseln%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%20theme-icon%22%3Elight_mode%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-login-open%22%20class=%22user-badge-btn%20icon-btn-small%22%20title=%22Mit%20Bessa.app%20Account%20anmelden%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Elogin%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%3EAnmelden%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22user-info%22%20class=%22user-badge%20hidden%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Eperson%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20id=%22user-id-display%22%3E%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-logout%22%20class=%22icon-btn-small%22%20aria-label=%22Logout%22%20title=%22Von%20Bessa.app%20abmelden%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Elogout%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3C/header%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22login-modal%22%20class=%22modal%20hidden%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-content%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-header%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch2%3ELogin%3C/h2%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-login-close%22%20class=%22icon-btn%22%20aria-label=%22Close%22%20title=%22Schlie%C3%9Fen%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Eclose%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cform%20id=%22login-form%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22form-group%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Clabel%20for=%22employee-id%22%3EMitarbeiternummer%3C/label%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cinput%20type=%22text%22%20id=%22employee-id%22%20name=%22employee-id%22%20placeholder=%22z.B.%202041%22%20required%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Csmall%20class=%22help-text%22%3EDeine%20offizielle%20Knapp%20Mitarbeiternummer.%3C/small%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22form-group%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Clabel%20for=%22password%22%3EPasswort%3C/label%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cinput%20type=%22password%22%20id=%22password%22%20name=%22password%22%20placeholder=%22Bessa%20Passwort%22%20required%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Csmall%20class=%22help-text%22%3EDas%20Passwort%20f%C3%BCr%20deinen%20Bessa%20Account.%3C/small%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22login-error%22%20class=%22error-msg%20hidden%22%3E%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-actions%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20type=%22submit%22%20class=%22btn-primary%20wide%22%3EEinloggen%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/form%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22progress-modal%22%20class=%22modal%20hidden%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-content%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-header%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch2%3EMen%C3%BCdaten%20aktualisieren%3C/h2%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-body%22%20style=%22padding:%2020px;%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22progress-container%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22progress-bar%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22progress-fill%22%20class=%22progress-fill%22%3E%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22progress-percent%22%20class=%22progress-percent%22%3E0%25%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%20id=%22progress-message%22%20class=%22progress-message%22%3EInitialisierung...%3C/p%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22highlights-modal%22%20class=%22modal%20hidden%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-content%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-header%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch2%3EMeine%20Highlights%3C/h2%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-highlights-close%22%20class=%22icon-btn%22%20aria-label=%22Close%22%20title=%22Schlie%C3%9Fen%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Eclose%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-body%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%20style=%22margin-bottom:%201rem;%20color:%20var(--text-secondary);%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20Markiere%20Men%C3%BCs%20automatisch,%20wenn%20sie%20diese%20Schlagw%C3%B6rter%20enthalten.%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/p%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22input-group%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cinput%20type=%22text%22%20id=%22tag-input%22%20placeholder=%22z.B.%20Schnitzel,%20Vegetarisch...%22%20title=%22Neues%20Schlagwort%20zum%20Hervorheben%20eingeben%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-add-tag%22%20class=%22btn-primary%22%20title=%22Schlagwort%20zur%20Liste%20hinzuf%C3%BCgen%22%3EHinzuf%C3%BCgen%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22tags-list%22%3E%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22history-modal%22%20class=%22modal%20hidden%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-content%20history-modal-content%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-header%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch2%3EBestellhistorie%3C/h2%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-history-close%22%20class=%22icon-btn%22%20aria-label=%22Close%22%20title=%22Schlie%C3%9Fen%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Eclose%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-body%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22history-loading%22%20class=%22hidden%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%20id=%22history-progress-text%22%20style=%22text-align:%20center;%20margin-bottom:%201rem;%20color:%20var(--text-secondary);%22%3ELade%20Historie...%3C/p%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22progress-container%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22progress-bar%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22history-progress-fill%22%20class=%22progress-fill%22%3E%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22history-content%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%5Cx3c!--%20Dynamically%20populated%20--%5Cx3e%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22version-modal%22%20class=%22modal%20hidden%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-content%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-header%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ch2%3E%F0%9F%93%A6%20Versionen%3C/h2%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-version-close%22%20class=%22icon-btn%22%20aria-label=%22Close%22%20title=%22Schlie%C3%9Fen%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Eclose%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22modal-body%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style=%22margin-bottom:%201rem;%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cstrong%3EAktuell:%3C/strong%3E%20%3Cspan%20id=%22version-current%22%3Ev1.6.10%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22dev-toggle%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Clabel%20style=%22display:flex;align-items:center;gap:8px;cursor:pointer;%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cinput%20type=%22checkbox%22%20id=%22dev-mode-toggle%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%3EDev-Mode%20(alle%20Tags%20anzeigen)%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/label%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22version-list-container%22%20style=%22margin-top:1rem;%20max-height:%20250px;%20overflow-y:%20auto;%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%20style=%22color:var(--text-secondary);%22%3ELade%20Versionen...%3C/p%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20style=%22margin-top:%201.5rem;%20padding-top:%201rem;%20border-top:%201px%20solid%20var(--border-color);%20display:%20flex;%20flex-direction:%20column;%20gap:%200.75rem;%20font-size:%200.9em;%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20href=%22https://github.com/TauNeutrino/kantine-overview/issues%22%20target=%22_blank%22%20rel=%22noopener%20noreferrer%22%20style=%22color:%20var(--primary-color);%20text-decoration:%20none;%20display:%20flex;%20align-items:%20center;%20gap:%200.5rem;%22%20title=%22Melde%20einen%20Fehler%20auf%20GitHub%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%20style=%22font-size:%201.2em;%22%3Ebug_report%3C/span%3E%20Fehler%20melden%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/a%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Ca%20href=%22https://github.com/TauNeutrino/kantine-overview/discussions/categories/ideas%22%20target=%22_blank%22%20rel=%22noopener%20noreferrer%22%20style=%22color:%20var(--primary-color);%20text-decoration:%20none;%20display:%20flex;%20align-items:%20center;%20gap:%200.5rem;%22%20title=%22Schlage%20ein%20neues%20Feature%20auf%20GitHub%20vor%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%20style=%22font-size:%201.2em;%22%3Elightbulb%3C/span%3E%20Feature%20vorschlagen%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/a%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cbutton%20id=%22btn-clear-cache%22%20style=%22background:%20none;%20border:%20none;%20padding:%200;%20color:%20var(--error-color);%20text-decoration:%20none;%20display:%20flex;%20align-items:%20center;%20gap:%200.5rem;%20cursor:%20pointer;%20text-align:%20left;%20font-size:%20inherit;%20font-family:%20inherit;%22%20title=%22L%C3%B6scht%20alle%20lokalen%20Daten%20%26%20erzwingt%20einen%20Neuladen%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%20style=%22font-size:%201.2em;%22%3Edelete_forever%3C/span%3E%20Lokalen%20Cache%20leeren%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/button%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cmain%20class=%22container%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22last-updated-banner%22%20class=%22banner%20hidden%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22material-icons-round%22%3Eupdate%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20id=%22last-updated-text%22%3EGerade%20aktualisiert%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22loading%22%20class=%22loading-state%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22spinner%22%3E%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%3ELade%20Men%C3%BCdaten...%3C/p%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20id=%22menu-container%22%20class=%22menu-grid%22%3E%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3C/main%3E%5Cn%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cfooter%20class=%22app-footer%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%3EJetzt%20Bessa%20Einfach!%20%26bull;%20Knapp-Kantine%20Wrapper%20%26bull;%20%3Cspan%20id=%22current-year%22%3E%24%7B(new%20Date).getFullYear()%7D%3C/span%3E%20by%20Kaufi%20%F0%9F%98%83%F0%9F%91%8D%20mit%20Hilfe%20von%20KI%20%F0%9F%A4%96%3C/p%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3C/footer%3E%5Cn%20%20%20%20%20%20%20%20%3C/div%3E%60%7D(),function()%7Bconst%20n=document.getElementById(%22btn-this-week%22),a=document.getElementById(%22btn-next-week%22),s=document.getElementById(%22btn-refresh%22),o=document.getElementById(%22theme-toggle%22),i=document.getElementById(%22btn-login-open%22),r=document.getElementById(%22btn-login-close%22),l=document.getElementById(%22btn-logout%22),g=document.getElementById(%22login-form%22),k=document.getElementById(%22login-modal%22),A=document.getElementById(%22btn-highlights%22),E=document.getElementById(%22highlights-modal%22),x=document.getElementById(%22btn-highlights-close%22),D=document.getElementById(%22btn-add-tag%22),C=document.getElementById(%22tag-input%22),O=document.getElementById(%22btn-history%22),M=document.getElementById(%22history-modal%22),T=document.getElementById(%22btn-history-close%22);document.querySelectorAll(%22.lang-btn%22).forEach(e=%3E%7Be.addEventListener(%22click%22,()=%3E%7Bp=e.dataset.lang,localStorage.setItem(%22kantine_lang%22,p),document.querySelectorAll(%22.lang-btn%22).forEach(e=%3Ee.classList.remove(%22active%22)),e.classList.add(%22active%22),j()%7D)%7D),A%26%26A.addEventListener(%22click%22,()=%3E%7BE.classList.remove(%22hidden%22)%7D),x%26%26x.addEventListener(%22click%22,()=%3E%7BE.classList.add(%22hidden%22)%7D),O.addEventListener(%22click%22,()=%3E%7Bd%3F(M.classList.remove(%22hidden%22),async%20function()%7Bconst%20t=document.getElementById(%22history-loading%22),n=document.getElementById(%22history-content%22),a=document.getElementById(%22history-progress-fill%22),s=document.getElementById(%22history-progress-text%22);let%20o=%5B%5D;if(b)o=b;else%7Bconst%20e=localStorage.getItem(%22kantine_history_cache%22);if(e)try%7Bo=JSON.parse(e),b=o%7Dcatch(e)%7Bconsole.warn(%22History%20cache%20parse%20error%22,e)%7D%7Do.length%3E0%26%26w(o);if(!d)return;0===o.length%26%26(n.innerHTML=%22%22,t.classList.remove(%22hidden%22));a.style.width=%220%25%22,s.textContent=o.length%3E0%3F%22Suche%20nach%20neuen%20Bestellungen...%22:%22Lade%20Bestellhistorie...%22,o.length%3E0%26%26t.classList.remove(%22hidden%22);let%20i=o.length%3E0%3F%60%24%7Be%7D/user/orders/%3Fvenue=591%26ordering=-created%26limit=5%60:%60%24%7Be%7D/user/orders/%3Fvenue=591%26ordering=-created%26limit=50%60,r=%5B%5D,l=0,c=0===o.length,m=!1;try%7Bfor(;i%26%26!m;)%7Bconst%20e=await%20fetch(i,%7Bheaders:f(d)%7D);if(!e.ok)throw%20new%20Error(%60Fetch%20failed:%20%24%7Be.status%7D%60);const%20t=await%20e.json();t.count%26%260===l%26%26(l=t.count);const%20n=t.results%7C%7C%5B%5D;for(const%20e%20of%20n)%7Bconst%20t=o.findIndex(t=%3Et.id===e.id);if(!c%26%26-1!==t)%7Bconst%20n=o%5Bt%5D;if(n.updated===e.updated%26%26n.order_state===e.order_state)%7Bm=!0;break%7D%7Dr.push(e)%7Dif(!m%26%26c)if(l%3E0)%7Bconst%20e=Math.round(r.length/l%2A100);a.style.width=%60%24%7Be%7D%25%60,s.textContent=%60Lade%20Bestellung%20%24%7Br.length%7D%20von%20%24%7Bl%7D...%60%7Delse%20s.textContent=%60Lade%20Bestellung%20%24%7Br.length%7D...%60;else%20m%7C%7C(s.textContent=%60%24%7Br.length%7D%20neue/ge%C3%A4nderte%20Bestellungen%20gefunden...%60);i=m%3Fnull:t.next%7Dif(r.length%3E0)%7Bconst%20e=new%20Map(o.map(e=%3E%5Be.id,e%5D));for(const%20t%20of%20r)e.set(t.id,t);const%20t=Array.from(e.values());t.sort((e,t)=%3Enew%20Date(t.created)-new%20Date(e.created)),b=t;try%7BlocalStorage.setItem(%22kantine_history_cache%22,JSON.stringify(t))%7Dcatch(e)%7Bconsole.warn(%22History%20cache%20write%20error%22,e)%7Dw(b)%7D%7Dcatch(e)%7Bconsole.error(%22Error%20in%20history%20sync:%22,e),0===o.length%3Fn.innerHTML=%27%3Cp%20style=%22color:var(--error-color);text-align:center;%22%3EFehler%20beim%20Laden%20der%20Historie.%3C/p%3E%27:F(%22Hintergrund-Synchronisation%20fehlgeschlagen%22,%22error%22)%7Dfinally%7Bt.classList.add(%22hidden%22)%7D%7D()):k.classList.remove(%22hidden%22)%7D),T.addEventListener(%22click%22,()=%3E%7BM.classList.add(%22hidden%22)%7D),window.addEventListener(%22click%22,e=%3E%7Be.target===M%26%26M.classList.add(%22hidden%22),e.target===E%26%26E.classList.add(%22hidden%22)%7D);const%20q=document.querySelector(%22.version-tag%22),%24=document.getElementById(%22version-modal%22),z=document.getElementById(%22btn-version-close%22);q%26%26q.addEventListener(%22click%22,e=%3E%7Be.preventDefault(),e.stopPropagation(),function()%7Bconst%20e=document.getElementById(%22version-modal%22),t=document.getElementById(%22version-list-container%22),n=document.getElementById(%22dev-mode-toggle%22),a=%22v1.6.10%22;if(!e)return;e.classList.remove(%22hidden%22);const%20s=document.getElementById(%22version-current%22);s%26%26(s.textContent=a);const%20o=%22true%22===localStorage.getItem(%22kantine_dev_mode%22);async%20function%20i(e)%7Bconst%20s=n.checked;function%20o(e)%7Bif(!e%7C%7C!e.length)return%20void(t.innerHTML=%27%3Cp%20style=%22color:var(--text-secondary);%22%3EKeine%20Versionen%20gefunden.%3C/p%3E%27);t.innerHTML=%27%3Cul%20class=%22version-list%22%3E%3C/ul%3E%27;const%20n=t.querySelector(%22.version-list%22);e.forEach(e=%3E%7Bconst%20t=e.tag===a,s=H(e.tag,a),o=document.createElement(%22li%22);o.className=%22version-item%22+(t%3F%22%20current%22:%22%22);let%20i=%22%22;t%3Fi=%27%3Cspan%20class=%22badge-current%22%3E%E2%9C%93%20Installiert%3C/span%3E%27:s%26%26(i=%27%3Cspan%20class=%22badge-new%22%3E%E2%AC%86%20Neu!%3C/span%3E%27);let%20r=%22%22;t%7C%7C(r=%60%3Ca%20href=%22%24%7Be.url%7D%22%20target=%22_blank%22%20class=%22install-link%22%20title=%22%24%7Be.tag%7D%20installieren%22%3EInstallieren%3C/a%3E%60),o.innerHTML=%60%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22version-info%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cstrong%3E%24%7Be.tag%7D%3C/strong%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%7Bi%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%7Br%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%60,n.appendChild(o)%7D)%7Dt.innerHTML=%27%3Cp%20style=%22color:var(--text-secondary);%22%3ELade%20Versionen...%3C/p%3E%27;try%7Bconst%20e=localStorage.getItem(%22kantine_version_cache%22);let%20t=null;if(e)try%7Bt=JSON.parse(e)%7Dcatch(e)%7B%7Dt%26%26t.devMode===s%26%26t.versions%26%26o(t.versions);const%20n=await%20K(s),a=JSON.stringify(n);a!==(t%3FJSON.stringify(t.versions):%22%22)%26%26(localStorage.setItem(%22kantine_version_cache%22,JSON.stringify(%7Btimestamp:Date.now(),devMode:s,versions:n%7D)),o(n))%7Dcatch(e)%7Bt.innerHTML=%60%3Cp%20style=%22color:%23e94560;%22%3EFehler:%20%24%7Be.message%7D%3C/p%3E%60%7D%7Dn.checked=o,i(!1),n.onchange=()=%3E%7BlocalStorage.setItem(%22kantine_dev_mode%22,n.checked),localStorage.removeItem(%22kantine_version_cache%22),i(!0)%7D%7D()%7D),z%26%26z.addEventListener(%22click%22,()=%3E%7B%24.classList.add(%22hidden%22)%7D);const%20Q=document.getElementById(%22btn-clear-cache%22);Q%26%26Q.addEventListener(%22click%22,()=%3E%7Bconfirm(%22M%C3%B6chtest%20du%20wirklich%20alle%20lokalen%20Daten%20(inkl.%20Login-Session,%20Cache%20und%20Einstellungen)%20l%C3%B6schen%3F%20Die%20Seite%20wird%20danach%20neu%20geladen.%22)%26%26(Object.keys(localStorage).forEach(e=%3E%7Be.startsWith(%22kantine_%22)%26%26localStorage.removeItem(e)%7D),window.location.reload())%7D),window.addEventListener(%22click%22,e=%3E%7Be.target===%24%26%26%24.classList.add(%22hidden%22)%7D),D.addEventListener(%22click%22,()=%3E%7B(function(e)%7Bif(e=e.trim().toLowerCase(),e%26%26!L.includes(e))return%20L.push(e),S(),!0;return!1%7D)(C.value)%26%26(C.value=%22%22,B())%7D),C.addEventListener(%22keypress%22,e=%3E%7B%22Enter%22===e.key%26%26D.click()%7D);const%20X=localStorage.getItem(%22theme%22),U=window.matchMedia(%22(prefers-color-scheme:%20dark)%22).matches,G=o.querySelector(%22.theme-icon%22);%22dark%22===X%7C%7C!X%26%26U%3F(document.documentElement.setAttribute(%22data-theme%22,%22dark%22),G.textContent=%22dark_mode%22):(document.documentElement.setAttribute(%22data-theme%22,%22light%22),G.textContent=%22light_mode%22),o.addEventListener(%22click%22,()=%3E%7Bconst%20e=%22dark%22===document.documentElement.getAttribute(%22data-theme%22)%3F%22light%22:%22dark%22;document.documentElement.setAttribute(%22data-theme%22,e),localStorage.setItem(%22theme%22,e),G.textContent=%22dark%22===e%3F%22dark_mode%22:%22light_mode%22%7D),n.addEventListener(%22click%22,()=%3E%7B%22this-week%22!==c%26%26(c=%22this-week%22,n.classList.add(%22active%22),a.classList.remove(%22active%22),j())%7D),a.addEventListener(%22click%22,()=%3E%7Ba.classList.remove(%22new-week-available%22),%22next-week%22!==c%26%26(c=%22next-week%22,a.classList.add(%22active%22),n.classList.remove(%22active%22),j())%7D),s.addEventListener(%22click%22,()=%3E%7Bd%3FN():k.classList.remove(%22hidden%22)%7D),i.addEventListener(%22click%22,()=%3E%7Bk.classList.remove(%22hidden%22),document.getElementById(%22login-error%22).classList.add(%22hidden%22),g.reset()%7D),r.addEventListener(%22click%22,()=%3E%7Bk.classList.add(%22hidden%22)%7D),window.addEventListener(%22click%22,e=%3E%7Be.target===k%26%26k.classList.add(%22hidden%22)%7D),g.addEventListener(%22submit%22,async%20n=%3E%7Bn.preventDefault();const%20a=document.getElementById(%22employee-id%22).value.trim(),s=document.getElementById(%22password%22).value,o=document.getElementById(%22login-error%22),i=g.querySelector(%27button%5Btype=%22submit%22%5D%27),r=i.textContent;i.disabled=!0,i.textContent=%22Wird%20eingeloggt...%22;try%7Bconst%20n=%60knapp-%24%7Ba%7D%40bessa.app%60,i=await%20fetch(%60%24%7Be%7D/auth/login/%60,%7Bmethod:%22POST%22,headers:f(t),body:JSON.stringify(%7Bemail:n,password:s%7D)%7D),r=await%20i.json();if(i.ok)%7Bd=r.key,m=a,localStorage.setItem(%22kantine_authToken%22,r.key),localStorage.setItem(%22kantine_currentUser%22,a);try%7Bconst%20t=await%20fetch(%60%24%7Be%7D/auth/user/%60,%7Bheaders:f(d)%7D);if(t.ok)%7Bconst%20e=await%20t.json();e.first_name%26%26localStorage.setItem(%22kantine_firstName%22,e.first_name),e.last_name%26%26localStorage.setItem(%22kantine_lastName%22,e.last_name)%7D%7Dcatch(e)%7Bconsole.error(%22Failed%20to%20fetch%20user%20info:%22,e)%7Dv(),k.classList.add(%22hidden%22),y(),g.reset(),I(),N()%7Delse%20o.textContent=r.non_field_errors%3F.%5B0%5D%7C%7Cr.error%7C%7C%22Login%20fehlgeschlagen%22,o.classList.remove(%22hidden%22)%7Dcatch(e)%7Bconsole.error(%22Login%20error:%22,e),o.textContent=%22Ein%20Fehler%20ist%20aufgetreten%22,o.classList.remove(%22hidden%22)%7Dfinally%7Bi.disabled=!1,i.textContent=r%7D%7D),l.addEventListener(%22click%22,()=%3E%7BlocalStorage.removeItem(%22kantine_authToken%22),localStorage.removeItem(%22kantine_currentUser%22),localStorage.removeItem(%22kantine_firstName%22),localStorage.removeItem(%22kantine_lastName%22),d=null,m=null,u=new%20Map,h%26%26(clearInterval(h),h=null,console.log(%22Polling%20stopped%22)),v(),j()%7D)%7D(),v(),function()%7Bconst%20e=new%20Date,t=e.toISOString().split(%22T%22)%5B0%5D;let%20n=!1;for(const%20a%20of%5B...g%5D)%7Bconst%5Bs%5D=a.split(%22_%22);let%20o=!1;if(s%3Ct)o=!0;else%20if(s===t)%7Bconst%20t=new%20Date(s);t.setHours(10,0,0,0),e%3E=t%26%26(o=!0)%7Do%26%26(g.delete(a),n=!0)%7Dn%26%26k()%7D();(function()%7Btry%7Bconst%20e=localStorage.getItem(D),t=localStorage.getItem(C);if(console.log(%60%5BCache%5D%20localStorage:%20key=%24%7B!!e%7D%20(%24%7Be%3Fe.length:0%7D%20chars),%20ts=%24%7Bt%7D%60),e)%7Bi=JSON.parse(e),r=G(new%20Date),l=(new%20Date).getFullYear(),console.log(%60%5BCache%5D%20Parsed%20%24%7Bi.length%7D%20weeks:%60,i.map(e=%3E%60KW%24%7Be.weekNumber%7D/%24%7Be.year%7D%20(%24%7B(e.days%7C%7C%5B%5D).length%7D%20days)%60)),j(),z(),A(),t%26%26q(t);try%7Bconst%20e=new%20Set;i.forEach(t=%3E%7B(t.days%7C%7C%5B%5D).forEach(t=%3E%7B(t.items%7C%7C%5B%5D).forEach(t=%3E%7Blet%20n=(t.description%7C%7C%22%22).replace(/%5Cs+/g,%22%20%22).trim();n%26%26n.includes(%22%20/%20%22)%26%26e.add(n)%7D)%7D)%7D);const%20t=Array.from(e).join(%22%5Cn%5Cn%22);console.log(%22===%20GEFUNDENE%20MEN%C3%9C-TEXTE%20(%22+e.size+%22)%20===%22),console.log(t)%7Dcatch(e)%7B%7Dreturn%20console.log(%22Loaded%20menu%20from%20cache%22),!0%7D%7Dcatch(e)%7Bconsole.warn(%22Failed%20to%20load%20cached%20menu:%22,e)%7Dreturn!1%7D)()%3F(document.getElementById(%22loading%22).classList.add(%22hidden%22),!function()%7Bconst%20e=localStorage.getItem(C);if(!e)return%20console.log(%22%5BCache%5D%20No%20timestamp%20found%22),!1;const%20t=Date.now()-new%20Date(e).getTime(),n=Math.round(t/6e4);if(t%3E36e5)return%20console.log(%60%5BCache%5D%20Stale:%20%24%7Bn%7Dmin%20old%20(max%2060)%60),!1;const%20a=G(new%20Date),s=J(new%20Date),o=i.some(e=%3Ee.weekNumber===a%26%26e.year===s%26%26e.days%26%26e.days.length%3E0);return%20console.log(%60%5BCache%5D%20Age:%20%24%7Bn%7Dmin,%20looking%20for%20KW%24%7Ba%7D/%24%7Bs%7D,%20found:%20%24%7Bo%7D%60),o%7D()%3F(console.log(%22Cache%20stale%20or%20incomplete%20%E2%80%93%20refreshing%20from%20API%22),N()):console.log(%22Cache%20fresh%20%26%20complete%20%E2%80%93%20skipping%20API%20refresh%22)):N(),d%26%26I(),Q(),setInterval(Q,36e5),console.log(%22Kantine%20Wrapper%20loaded%20%E2%9C%85%22)%7D();%0A%7D)();";
// Dynamic favicon injection — setTimeout ensures it runs AFTER
// htmlpreview.github.io's document.write() processing completes
setTimeout(function() {
document.querySelectorAll('link[rel*="icon"]').forEach(function(el) { el.remove(); });
var fi = document.createElement('link');
fi.rel = 'icon';
fi.type = 'image/png';
fi.href = 'data:image/png;base64,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';
document.head.appendChild(fi);
}, 0);
document.getElementById('bookmarklet-link').textContent = 'Kantine v1.6.10';
</script>
</body>
</html>