367 lines
193 KiB
HTML
Executable File
367 lines
193 KiB
HTML
Executable File
<!DOCTYPE html>
|
||
<html lang="de">
|
||
<head>
|
||
<meta charset="UTF-8">
|
||
<title>Kantine Wrapper Installer (v1.6.25)</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.25</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.25</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.25 (2026-03-12)</h3>
|
||
<ul>
|
||
<li>⚡ **Performance**: Debounced Resize-Listener hinzugefügt. Die Höhen-Synchronisierung der Menü-Karten wird nun auch bei Viewport-Änderungen (z.B. Fenster-Skalierung oder Orientierungswechsel) automatisch und effizient ausgeführt.</li>
|
||
<li>🧹 **Tech**: `debounce` Utility-Funktion in `utils.js` ergänzt.</li>
|
||
</ul>
|
||
<h3>v1.6.24 (2026-03-12)</h3>
|
||
<ul>
|
||
<li>⚡ **Performance**: Layout Thrashing in `syncMenuItemHeights` behoben. Durch Batch-Verarbeitung von DOM-Lese- und Schreibvorgängen wurde die Rendering-Effizienz beim Wochenwechsel verbessert.</li>
|
||
</ul>
|
||
<h3>v1.6.23 (2026-03-12)</h3>
|
||
<ul>
|
||
<li>🎨 **UI**: Umfassende UI-Verbesserungen umgesetzt:</li>
|
||
- **Glassmorphism**: Header-Hintergrundtransparenz auf 72% reduziert (war 90%) – der Blur-Effekt ist nun beim Scrollen sichtbar.
|
||
- **Dark-Mode Kontrast**: `--bg-card` abgedunkelt (`#283548`), `--border-color` leicht aufgehellt (`#526377`) – bessere Trennung zwischen Body und Card.
|
||
- **Accent-Color**: Im Light-Mode von Slate-900 (fast schwarz) auf Blue-600 (`#2563eb`) geändert – klarer sichtbarer Akzent.
|
||
- **Typography**: `.item-desc` `line-height` auf 1.5 (body-konsistent), `.day-date` kleiner und dezenter (0.8rem, opacity 0.75), `.item-name` leicht reduziert (0.95rem).
|
||
- **Item-Separator**: Subtile Trennlinie zwischen Menü-Items in der Tageskarte.
|
||
- **Badge-Konsistenz**: Alle Badges (`badge`, `tag-badge-small`) auf `border-radius: 6px` vereinheitlicht.
|
||
- **A11y – Reduced Motion**: `@media (prefers-reduced-motion: reduce)` deaktiviert alle dekorativen Puls-/Glow-Animationen für Motion-sensitive Nutzer.
|
||
- **A11y – Focus-Visible**: Globaler `:focus-visible` Outline-Ring (2px, accent-color) für Tastaturnavigation.
|
||
- **Active-States**: `:active` Feedback (`scale(0.97)`) für Bestell-, Storno- und Flag-Buttons.
|
||
- **Mobile Breakpoint**: Von 600px auf 768px erweitert (deckt Tablets ab); Grid-Deklaration explizit gesetzt um Browser-Override-Bug zu vermeiden.
|
||
|
||
<h3>v1.6.22 (2026-03-12)</h3>
|
||
<ul>
|
||
<li>🧹 **UX Cleanup**: Text-Label am Sprachumschalter entfernt. Der Button zeigt nun nur noch das `translate`-Icon an, was die Controls-Bar ruhiger macht.</li>
|
||
</ul>
|
||
<h3>v1.6.21 (2026-03-12)</h3>
|
||
<ul>
|
||
<li>✨ **Feature**: Sprachumschaltung Redesign – Die Sprachwahl (DE/EN/ALL) wurde von der Header-Mitte in den rechten Controls-Bereich verschoben. Sie ist nun als Icon-Dropdown mit aktueller Status-Anzeige (z.B. "DE") verfügbar. Für die deutsche Sprache wird die 🇦🇹 Flagge verwendet.</li>
|
||
</ul>
|
||
<h3>v1.6.20 (2026-03-12)</h3>
|
||
<ul>
|
||
<li>🧹 **Cleanup**: Wochenkosten-Anzeige entfernt (Weekly Cost Display) – Auf User-Wunsch wurde die Anzeige der wöchentlichen Gesamtkosten im Header entfernt, um die UI zu entschlacken. FR-040 als obsolet markiert.</li>
|
||
</ul>
|
||
<h3>v1.6.19 (2026-03-11)</h3>
|
||
<ul>
|
||
<li>🎨 **UX**: Grid-Layout & Glow Overlap Fix – Die Karten-Inhalte wurden auf ein sauberes Grid-Gap-Modell umgestellt (`row-gap: 1.5rem`). Dies verhindert technische Überlappungen von Menü-Items und stellt sicher, dass Glow-Effekte (Bestellt, Highlight) alle Inhalte korrekt umschließen. Manuelle Abstände wurden bereinigt.</li>
|
||
</ul>
|
||
<li>🎨 **UX**: Glow-Styling angepasst – Die farblichen Hervorhebungen (Bestellt, Highlight, Flagged) wurden so korrigiert, dass sie nicht mehr bis an den Kartenrand reichen, sondern innerhalb des Karten-Bodys mit entsprechendem Seitenabstand angezeigt werden.</li>
|
||
</ul>
|
||
<li>🎨 **UX**: Fix Card Content Overflow – In der 5-Tage-Ansicht (Landscape) auf schmalen Bildschirmen umbrechen die Status-Badges und Buttons jetzt korrekt in eine neue Zeile, statt über den Kartenrand hinauszuragen. Das Karten-Padding wurde für Desktop-Ansichten optimiert.</li>
|
||
</ul>
|
||
<li>🧹 **Wartbarkeit**: Alle verbliebenen hardcodierten deutschen UI-Strings in `actions.js` via `t()` übersetzt (Progress-Texte, Fehler-Labels, 'Angemeldet', 'Hintergrund-Synchronisation').</li>
|
||
<li>🔑 **Wartbarkeit**: Alle `localStorage`-Schlüssel in einheitliches `LS`-Objekt in `constants.js` zentralisiert. Alle Quelldateien verwenden jetzt `LS.*` statt Rohstrings.</li>
|
||
<li>🛡️ **Robustheit**: `setLangMode()` und `setDisplayMode()` in `state.js` prüfen jetzt Eingabewerte – ungültige Werte werden verworfen und protokolliert.</li>
|
||
<li>📝 **Kodierung**: JSDoc für `ui.js` und `injectUI()` ergänzt.</li>
|
||
</ul>
|
||
<li>🐛 **Bugfix**: Geprüfte Menüs (`refreshFlaggedItems`) aktualisieren jetzt nur noch die tatsächlich geflaggten Artikel – nicht mehr alle Menüs des betroffenen Tages ([Bug 1]).</li>
|
||
<li>🐛 **Bugfix**: Beim Öffnen des Highlights-Modals werden bestehende Tags sofort angezeigt, auch ohne vorherige Neueingabe ([Bug 2]).</li>
|
||
<li>🎨 **UX**: Die Zahlen-Badges im „Nächste Woche"-Button wurden entfernt. Die Bestellübersicht (bestellt / bestellbar / gesamt + Highlights) ist jetzt als Tooltip abrufbar ([FR-100 Update]).</li>
|
||
<li>🌍 **Feature**: Bei Auswahl von EN wird die gesamte Benutzeroberfläche auf Englisch umgestellt (Buttons, Tooltips, Modals, Status-Badges, Wochentage, Bestellhistorie). DE und ALL behalten Deutsch bei ([FR-122]).</li>
|
||
<li>✨ **Feature**: Das Glühen des „Nächste Woche"-Buttons wird jetzt nur noch ausgelöst, wenn für Montag–Donnerstag bestellbare Menüs ohne bestehende Bestellung vorhanden sind. Freitag ist von dieser Prüfung ausgenommen ([FR-092 Update]).</li>
|
||
<li>🧹 **Wartbarkeit**: Code-Qualitätsprüfung aller Quelldateien – JSDoc-Kommentare ergänzt, Erklärungen für komplexe Logikblöcke hinzugefügt.</li>
|
||
<li>📦 **Neu**: `src/i18n.js` – Zentrales Übersetzungsmodul für alle statischen UI-Labels (DE/EN).</li>
|
||
</ul>
|
||
<h3>v1.6.14 (2026-03-10)</h3>
|
||
<ul>
|
||
<li>🐛 **Bugfix**: Die globale "Aktualisiert am"-Zeit im Header wird bei einer manuellen Prüfung der geflaggten Menüs nicht mehr zurückgesetzt.</li>
|
||
</ul>
|
||
<h3>v1.6.13 (2026-03-10)</h3>
|
||
<ul>
|
||
<li>✨ **Feature**: Manueller Refresh der geflaggten Menüs durch Klick auf das Alarm-Icon im Header ([FR-093](REQUIREMENTS.md#FR-093)).</li>
|
||
<li>🔄 **UI**: Visuelle Rückmeldung während der Prüfung durch Rotation des Icons.</li>
|
||
<li>🔔 **Notification**: Toast-Benachrichtigung zeigt die Anzahl der geprüften Menüs an.</li>
|
||
</ul>
|
||
<h3>v1.6.12 (2026-03-10)</h3>
|
||
<ul>
|
||
<li>🔄 **Refactor**: Modularisierung von `kantine.js` in ES6-Module (`api.js`, `state.js`, `utils.js`, `ui.js`, etc.).</li>
|
||
<li>📦 **Build**: Integration von Webpack in den Build-Prozess zur Unterstützung der modularen Struktur.</li>
|
||
<li>🛡️ **Security**: XSS-Schutz durch Escaping dynamischer Inhalte in `innerHTML`.</li>
|
||
<li>⚡ **Performance**:</li>
|
||
- Optimierte Tag-Badge-Generierung und UI-Render-Loops (Verwendung von `reduce`).
|
||
- Nutzung von `insertAdjacentHTML` statt `innerHTML` für effizienteres Rendering.
|
||
- Batch-Fetching von `availableDates` zur Reduzierung der API-Calls.
|
||
- Performance-Fixes in `ui_helpers.js`.
|
||
<li>🧪 **Testing**: Unit-Tests für GitHub API-Header Generierung hinzugefügt.</li>
|
||
<li>🧹 **Cleanup**: Entfernung verwaister `console.log` Statements.</li>
|
||
<li>🐛 **Bugfix**: Korrektur des Tooltips beim Alarm-Icon (Polling-Zeit vs. globale Aktualisierungszeit).</li>
|
||
</ul>
|
||
<h3>v1.6.11 (2026-03-09)</h3>
|
||
<ul>
|
||
<li>🔄 **Refactor**: Trennung der Zeitstempel für die Hauptaktualisierung (Header) und die Benachrichtigungsprüfung (Bell-Icon). Das Polling aktualisiert nun nicht mehr fälschlicherweise die "Aktualisiert am"-Zeit im Header.</li>
|
||
<li>🏷️ **Metadata**: Version auf v1.6.11 angehoben.</li>
|
||
</ul>
|
||
<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%232563eb;%20%20%20/%2A%20Blue%20600%20%E2%80%93%20visible%20accent,%20distinguishable%20from%20text%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/%2A%20Reduced%20opacity%20for%20visible%20glassmorphism%20blur%20effect%20%2A/%20%20%20--header-bg:%20rgba(255,%20255,%20255,%200.72);%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%23283548;%20%20%20/%2A%20Darker%20than%20Slate%20700%20%E2%86%92%20more%20layer%20contrast%20vs%20bg-body%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%23526377;%20%20%20/%2A%20Slightly%20lighter%20%E2%86%92%20visible%20border%20on%20darker%20card%20bg%20%2A/%20%20%20--banner-bg:%20%23475569;%20%20%20--banner-text:%20%23e2e8f0;%20%20%20/%2A%20Reduced%20opacity%20for%20visible%20glassmorphism%20blur%20effect%20%2A/%20%20%20--header-bg:%20rgba(30,%2041,%2059,%200.72);%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%23alarm-bell.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%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/%2A%20Language%20Toggle%20%2A/%20.lang-toggle-dropdown%20%7B%20%20%20position:%20relative;%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%7D%20%23btn-lang-toggle%20%7B%20%20%20padding:%200;%20%20%20min-width:%2042px;%20%7D%20.lang-dropdown-menu%20%7B%20%20%20position:%20absolute;%20%20%20top:%20calc(100%25%20+%208px);%20%20%20right:%200;%20%20%20background:%20var(--bg-card);%20%20%20backdrop-filter:%20blur(12px);%20%20%20border:%201px%20solid%20var(--border-color);%20%20%20border-radius:%2012px;%20%20%20box-shadow:%200%2010px%2015px%20-3px%20rgba(0,%200,%200,%200.1),%200%204px%206px%20-2px%20rgba(0,%200,%200,%200.05);%20%20%20z-index:%201001;%20%20%20min-width:%20120px;%20%20%20padding:%208px;%20%20%20display:%20flex;%20%20%20flex-direction:%20column;%20%20%20gap:%204px;%20%20%20animation:%20modalSlide%200.2s%20ease-out;%20%7D%20.lang-dropdown-menu%20.lang-btn%20%7B%20%20%20background:%20none;%20%20%20border:%20none;%20%20%20padding:%2010px%2014px;%20%20%20border-radius:%208px;%20%20%20color:%20var(--text-primary);%20%20%20font-size:%200.9rem;%20%20%20font-weight:%20500;%20%20%20cursor:%20pointer;%20%20%20text-align:%20left;%20%20%20transition:%20all%200.2s;%20%20%20display:%20flex;%20%20%20align-items:%20center;%20%20%20gap:%208px;%20%20%20white-space:%20nowrap;%20%7D%20.lang-dropdown-menu%20.lang-btn:hover%20%7B%20%20%20background:%20rgba(59,%20130,%20246,%200.1);%20%20%20color:%20var(--accent-color);%20%7D%20.lang-dropdown-menu%20.lang-btn.active%20%7B%20%20%20background:%20rgba(59,%20130,%20246,%200.15);%20%20%20color:%20var(--accent-color);%20%20%20font-weight:%20700;%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(230px,%201fr));%20%20%20gap:%200.5rem;%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%20%20display:%20flex;%20%20%20flex-direction:%20column;%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-columns:%201fr;%20%20%20row-gap:%201.5rem;%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.8rem;%20%20%20font-weight:%20400;%20%20%20color:%20var(--text-secondary);%20%20%20opacity:%200.75;%20%20%20/%2A%20Visually%20subordinate%20to%20day-name%20%2A/%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%20/%2A%20Spacing%20now%20handled%20by%20.card-body%20grid%20gap%20%2A/%20%20%20display:%20flex;%20%20%20flex-direction:%20column;%20%20%20/%2A%20Subtle%20separator%20between%20items%20%2A/%20%20%20border-bottom:%201px%20solid%20var(--border-color);%20%20%20padding-bottom:%200.25rem;%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:%200.95rem;%20%20%20/%2A%20Slightly%20smaller%20to%20reduce%20visual%20competition%20with%20day%20header%20%2A/%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.5;%20%20%20/%2A%20Consistent%20with%20body%20line-height%20%2A/%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%20%20flex-wrap:%20wrap;%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%20%20flex-wrap:%20wrap;%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:%206px;%20%20%20/%2A%20Unified%20radius%20matching%20buttons%20and%20tag-badge-small%20%2A/%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:active:not(:disabled)%20%7B%20%20%20transform:%20scale(0.97);%20%20%20filter:%20brightness(0.95);%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:active:not(:disabled)%20%7B%20%20%20transform:%20scale(0.97);%20%20%20filter:%20brightness(0.95);%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/%2A%20768px%20covers%20tablets%20(e.g.%20iPad%20Mini);%20600px%20was%20too%20narrow-only%20%2A/%20%40media%20(max-width:%20768px)%20%7B%20%20%20.header-content%20%7B%20%20%20%20%20display:%20grid;%20%20%20%20%20/%2A%20Ensure%20grid%20is%20active,%20prevents%20flex-only%20fallback%20%2A/%20%20%20%20%20grid-template-columns:%201fr;%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%20display:%20grid;%20%20%20%20%20/%2A%20Explicit%20grid%20declaration%20to%20prevent%20flex-context%20override%20%2A/%20%20%20%20%20grid-template-columns:%201fr;%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%20Tighter%20layout%20for%20high%20column%20counts%20(e.g.,%205-day%20landscape)%20%2A/%20%40media%20(min-width:%201024px)%20%7B%20%20%20.card-body%20%7B%20%20%20%20%20padding:%201rem%200.75rem;%20%20%20%7D%20%20%20.item-header%20%7B%20%20%20%20%20gap:%200.5rem;%20%20%20%7D%20%7D%20/%2A%20===%20Accessibility:%20Respect%20prefers-reduced-motion%20===%20%2A/%20%40media%20(prefers-reduced-motion:%20reduce)%20%7B%20%20%20/%2A%20Disable%20all%20decorative%20pulse/glow%20animations%20%2A/%20%20%20.menu-item.today-ordered,%20%20%20.menu-item.flagged-sold-out,%20%20%20.menu-item.flagged-available,%20%20%20.menu-item.highlight-glow,%20%20%20.nav-btn.new-week-available,%20%20%20.update-icon,%20%20%20%23order-countdown.urgent%20%7B%20%20%20%20%20animation:%20none;%20%20%20%7D%20%20%20/%2A%20Keep%20functional%20animations%20(modal%20slide,%20spinner)%20%2A/%20%20%20.toast%20%7B%20%20%20%20%20transition:%20none;%20%20%20%7D%20%7D%20/%2A%20===%20Focus%20Visibility%20(A11y:%20Keyboard%20Navigation)%20===%20%2A/%20:focus-visible%20%7B%20%20%20outline:%202px%20solid%20var(--accent-color);%20%20%20outline-offset:%202px;%20%20%20border-radius:%204px;%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:active%20%7B%20%20%20transform:%20scale(0.97);%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%20%20display:%20flex;%20%20%20flex-direction:%20column;%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%20%20display:%20flex;%20%20%20flex-direction:%20column;%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%20%20display:%20flex;%20%20%20flex-direction:%20column;%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:%206px;%20%20%20/%2A%20Unified%20with%20.badge%20and%20button%20border-radius%20%2A/%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);(()=%3E%7B%22use%20strict%22;var%20e=%7B367(e,t,n)%7Bn.d(t,%7BA0:()=%3Ev,Aq:()=%3Eg,BM:()=%3ES,Et:()=%3EE,Gb:()=%3Eu,H:()=%3Eb,KG:()=%3ET,N4:()=%3Ep,P0:()=%3EH,PQ:()=%3Ey,VL:()=%3ED,Y1:()=%3EL,g8:()=%3Ew,i_:()=%3Ec,m9:()=%3EO,oL:()=%3Ek,wH:()=%3Eh%7D);var%20a=n(901),o=n(413),s=n(521),i=n(672),r=n(842),l=n(646);let%20d=null;function%20c()%7Bif(!a.gX)try%7Bconst%20e=localStorage.getItem(%22AkitaStores%22);if(e)%7Bconst%20t=JSON.parse(e);t.auth%26%26t.auth.token%26%26((0,a.O5)(t.auth.token),localStorage.setItem(s.LS.AUTH_TOKEN,t.auth.token),t.auth.user%26%26((0,a.lt)(t.auth.user.id%7C%7C%22unknown%22),localStorage.setItem(s.LS.CURRENT_USER,t.auth.user.id%7C%7C%22unknown%22),t.auth.user.firstName%26%26localStorage.setItem(s.LS.FIRST_NAME,t.auth.user.firstName),t.auth.user.lastName%26%26localStorage.setItem(s.LS.LAST_NAME,t.auth.user.lastName)))%7D%7Dcatch(e)%7Bconsole.warn(%22Failed%20to%20parse%20AkitaStores:%22,e)%7D(0,a.O5)(localStorage.getItem(s.LS.AUTH_TOKEN)),(0,a.lt)(localStorage.getItem(s.LS.CURRENT_USER));const%20e=localStorage.getItem(s.LS.FIRST_NAME),t=document.getElementById(%22btn-login-open%22),n=document.getElementById(%22user-info%22),o=document.getElementById(%22user-id-display%22);a.gX%3F(t.classList.add(%22hidden%22),n.classList.remove(%22hidden%22),o.textContent=e%7C%7C(a.Ny%3F%60User%20%24%7Ba.Ny%7D%60:(0,l.t)(%22loggedIn%22)),u()):(t.classList.remove(%22hidden%22),n.classList.add(%22hidden%22),o.textContent=%22%22),(0,r.OR)()%7Dasync%20function%20u()%7Bif(a.gX)try%7Bconst%20e=await%20fetch(%60%24%7Bs.tE%7D/user/orders/%3Fvenue=%24%7Bs.eW%7D%26ordering=-created%26limit=50%60,%7Bheaders:(0,i.H)(a.gX)%7D),t=await%20e.json();if(e.ok)%7Bconst%20e=new%20Map,n=t.results%7C%7C%5B%5D;for(const%20t%20of%20n)%7Bif(9===t.order_state)continue;const%20n=t.date.split(%22T%22)%5B0%5D;for(const%20a%20of%20t.items%7C%7C%5B%5D)%7Bconst%20o=%60%24%7Bn%7D_%24%7Ba.article%7D%60;e.has(o)%7C%7Ce.set(o,%5B%5D),e.get(o).push(t.id)%7D%7D(0,a.di)(e),(0,r.OR)(),(0,r.gJ)()%7D%7Dcatch(e)%7Bconsole.error(%22Error%20fetching%20orders:%22,e)%7D%7Dasync%20function%20g()%7Bconst%20e=document.getElementById(%22history-loading%22),t=document.getElementById(%22history-content%22),n=document.getElementById(%22history-progress-fill%22),o=document.getElementById(%22history-progress-text%22);let%20r=%5B%5D;if(d)r=d;else%7Bconst%20e=localStorage.getItem(s.LS.HISTORY_CACHE);if(e)try%7Br=JSON.parse(e),d=r%7Dcatch(e)%7Bconsole.warn(%22History%20cache%20parse%20error%22,e)%7D%7Dif(r.length%3E0%26%26m(r),!a.gX)return;0===r.length%26%26(t.innerHTML=%22%22,e.classList.remove(%22hidden%22)),n.style.width=%220%25%22,o.textContent=r.length%3E0%3F(0,l.t)(%22historyLoadingDelta%22):(0,l.t)(%22historyLoadingFull%22),r.length%3E0%26%26e.classList.remove(%22hidden%22);let%20c=r.length%3E0%3F%60%24%7Bs.tE%7D/user/orders/%3Fvenue=%24%7Bs.eW%7D%26ordering=-created%26limit=5%60:%60%24%7Bs.tE%7D/user/orders/%3Fvenue=%24%7Bs.eW%7D%26ordering=-created%26limit=50%60,u=%5B%5D,g=0,h=0===r.length,p=!1;try%7Bfor(;c%26%26!p;)%7Bconst%20e=await%20fetch(c,%7Bheaders:(0,i.H)(a.gX)%7D);if(!e.ok)throw%20new%20Error(%60Fetch%20failed:%20%24%7Be.status%7D%60);const%20t=await%20e.json();t.count%26%260===g%26%26(g=t.count);const%20s=t.results%7C%7C%5B%5D;for(const%20e%20of%20s)%7Bconst%20t=r.findIndex(t=%3Et.id===e.id);if(!h%26%26-1!==t)%7Bconst%20n=r%5Bt%5D;if(n.updated===e.updated%26%26n.order_state===e.order_state)%7Bp=!0;break%7D%7Du.push(e)%7Dif(!p%26%26h)if(g%3E0)%7Bconst%20e=Math.round(u.length/g%2A100);n.style.width=%60%24%7Be%7D%25%60,o.textContent=%60%24%7B(0,l.t)(%22historyLoadingItem%22)%7D%20%24%7Bu.length%7D%20%24%7B(0,l.t)(%22historyLoadingOf%22)%7D%20%24%7Bg%7D...%60%7Delse%20o.textContent=%60%24%7B(0,l.t)(%22historyLoadingItem%22)%7D%20%24%7Bu.length%7D...%60;else%20p%7C%7C(o.textContent=%60%24%7Bu.length%7D%20%24%7B(0,l.t)(%22historyLoadingNew%22)%7D%60);c=p%3Fnull:t.next%7Dif(u.length%3E0)%7Bconst%20e=new%20Map(r.map(e=%3E%5Be.id,e%5D));for(const%20t%20of%20u)e.set(t.id,t);const%20t=Array.from(e.values());t.sort((e,t)=%3Enew%20Date(t.created)-new%20Date(e.created)),d=t;try%7BlocalStorage.setItem(s.LS.HISTORY_CACHE,JSON.stringify(t))%7Dcatch(e)%7Bconsole.warn(%22History%20cache%20write%20error%22,e)%7Dm(d)%7D%7Dcatch(e)%7Bconsole.error(%22Error%20in%20history%20sync:%22,e),0===r.length%3Ft.innerHTML=%60%3Cp%20style=%22color:var(--error-color);text-align:center;%22%3E%24%7B(0,l.t)(%22historyLoadError%22)%7D%3C/p%3E%60:H((0,l.t)(%22bgSyncFailed%22),%22error%22)%7Dfinally%7Be.classList.add(%22hidden%22)%7D%7Dfunction%20m(e)%7Bconst%20t=document.getElementById(%22history-content%22);if(!e%7C%7C0===e.length)return%20void(t.innerHTML=%60%3Cp%20style=%22text-align:center;color:var(--text-secondary);padding:20px;%22%3E%24%7B(0,l.t)(%22noOrders%22)%7D%3C/p%3E%60);const%20n=%7B%7D;e.forEach(e=%3E%7Bconst%20t=new%20Date(e.date),s=t.getFullYear(),i=t.getMonth(),r=%60%24%7Bs%7D-%24%7Bi.toString().padStart(2,%220%22)%7D%60,l=%22en%22===a.Kl%3F%22en-US%22:%22de-AT%22,d=t.toLocaleString(l,%7Bmonth:%22long%22%7D),c=(0,o.sn)(t);n%5Bs%5D%7C%7C(n%5Bs%5D=%7Byear:s,months:%7B%7D%7D),n%5Bs%5D.months%5Br%5D%7C%7C(n%5Bs%5D.months%5Br%5D=%7Bname:d,year:s,monthIndex:i,count:0,total:0,weeks:%7B%7D%7D),n%5Bs%5D.months%5Br%5D.weeks%5Bc%5D%7C%7C(n%5Bs%5D.months%5Br%5D.weeks%5Bc%5D=%7Blabel:%22en%22===a.Kl%3F%60CW%20%24%7Bc%7D%60:%60KW%20%24%7Bc%7D%60,items:%5B%5D,count:0,total:0%7D);(e.items%7C%7C%5B%5D).forEach(t=%3E%7Bconst%20a=parseFloat(t.price%7C%7Ce.total%7C%7C0);n%5Bs%5D.months%5Br%5D.weeks%5Bc%5D.items.push(%7Bdate:e.date,name:t.name%7C%7C%22Men%C3%BC%22,price:a,state:e.order_state%7D),9!==e.order_state%26%26(n%5Bs%5D.months%5Br%5D.weeks%5Bc%5D.count++,n%5Bs%5D.months%5Br%5D.weeks%5Bc%5D.total+=a,n%5Bs%5D.months%5Br%5D.count++,n%5Bs%5D.months%5Br%5D.total+=a)%7D)%7D),t.innerHTML=%22%22;Object.keys(n).sort((e,t)=%3Et-e).forEach(e=%3E%7Bconst%20o=n%5Be%5D,s=document.createElement(%22div%22);s.className=%22history-year-group%22;const%20i=document.createElement(%22h2%22);i.className=%22history-year-header%22,i.textContent=o.year,s.appendChild(i);Object.keys(o.months).sort((e,t)=%3Et.localeCompare(e)).forEach(e=%3E%7Bconst%20t=o.months%5Be%5D,n=document.createElement(%22div%22);n.className=%22history-month-group%22;const%20i=document.createElement(%22div%22);i.className=%22history-month-header%22,i.setAttribute(%22tabindex%22,%220%22),i.setAttribute(%22role%22,%22button%22),i.setAttribute(%22aria-expanded%22,%22false%22),i.setAttribute(%22title%22,(0,l.t)(%22historyMonthToggle%22));const%20r=document.createElement(%22div%22);r.style.display=%22flex%22,r.style.flexDirection=%22column%22,r.style.gap=%224px%22;const%20d=document.createElement(%22span%22);d.textContent=t.name,r.appendChild(d);const%20c=document.createElement(%22div%22);c.className=%22history-month-summary%22;const%20u=document.createElement(%22span%22);u.innerHTML=%60%24%7Bt.count%7D%20%24%7B(0,l.t)(%22orders%22)%7D%20%26bull;%20%3Cstrong%3E%E2%82%AC%24%7Bt.total.toFixed(2)%7D%3C/strong%3E%60,c.appendChild(u),r.appendChild(c),i.appendChild(r);const%20g=document.createElement(%22span%22);g.className=%22material-icons-round%22,g.textContent=%22expand_more%22,i.appendChild(g),i.addEventListener(%22click%22,()=%3E%7Bconst%20e=i.parentElement;e.classList.contains(%22open%22)%3F(e.classList.remove(%22open%22),i.setAttribute(%22aria-expanded%22,%22false%22)):(e.classList.add(%22open%22),i.setAttribute(%22aria-expanded%22,%22true%22))%7D),n.appendChild(i);const%20m=document.createElement(%22div%22);m.className=%22history-month-content%22;Object.keys(t.weeks).sort((e,t)=%3EparseInt(t)-parseInt(e)).forEach(e=%3E%7Bconst%20n=t.weeks%5Be%5D,o=document.createElement(%22div%22);o.className=%22history-week-group%22;const%20s=document.createElement(%22div%22);s.className=%22history-week-header%22;const%20i=document.createElement(%22strong%22);i.textContent=n.label,s.appendChild(i);const%20r=document.createElement(%22span%22);r.innerHTML=%60%24%7Bn.count%7D%20%24%7B(0,l.t)(%22orders%22)%7D%20%26bull;%20%3Cstrong%3E%E2%82%AC%24%7Bn.total.toFixed(2)%7D%3C/strong%3E%60,s.appendChild(r),o.appendChild(s),n.items.forEach(e=%3E%7Bconst%20t=new%20Date(e.date),n=%22en%22===a.Kl%3F%22en-US%22:%22de-AT%22,s=t.toLocaleDateString(n,%7Bweekday:%22short%22,day:%222-digit%22,month:%222-digit%22%7D),i=document.createElement(%22div%22);i.className=%22history-item%22,9===e.state%26%26i.classList.add(%22history-item-cancelled%22);const%20r=document.createElement(%22div%22);r.style.fontSize=%220.85rem%22,r.style.color=%22var(--text-secondary)%22,r.textContent=s,i.appendChild(r);const%20d=document.createElement(%22div%22);d.className=%22history-item-details%22;const%20c=document.createElement(%22span%22);c.className=%22history-item-name%22,c.textContent=e.name,d.appendChild(c);const%20u=document.createElement(%22div%22),g=document.createElement(%22span%22);g.className=%22history-item-status%22,9===e.state%3Fg.textContent=(0,l.t)(%22stateCancelled%22):8===e.state%3Fg.textContent=(0,l.t)(%22stateCompleted%22):g.textContent=(0,l.t)(%22stateTransferred%22),u.appendChild(g),d.appendChild(u),i.appendChild(d);const%20m=document.createElement(%22div%22);m.className=%22history-item-price%22,9===e.state%26%26m.classList.add(%22history-item-price-cancelled%22),m.textContent=%60%E2%82%AC%24%7Be.price.toFixed(2)%7D%60,i.appendChild(m),o.appendChild(i)%7D),m.appendChild(o)%7D),n.appendChild(m),s.appendChild(n)%7D),t.appendChild(s)%7D)%7Dasync%20function%20h(e,t,n,o,r)%7Bif(a.gX)try%7Bconst%20c=await%20fetch(%60%24%7Bs.tE%7D/auth/user/%60,%7Bheaders:(0,i.H)(a.gX)%7D);if(!c.ok)return%20void%20H(%22Fehler:%20Benutzerdaten%20konnten%20nicht%20geladen%20werden%22,%22error%22);const%20g=await%20c.json(),m=(new%20Date).toISOString(),h=%7Buuid:crypto.randomUUID(),created:m,updated:m,order_type:7,items:%5B%7Barticle:t,course_group:null,modifiers:%5B%5D,uuid:crypto.randomUUID(),name:n,description:r%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:s.eW,states:%5B%5D,order_state:1,date:%60%24%7Be%7DT10:30:00Z%60,payment_method:%22payroll%22,customer:%7Bfirst_name:g.first_name,last_name:g.last_name,email:g.email,newsletter:!1%7D,preorder:!0,delivery_fee:0,cash_box_table_name:null,take_away:!1%7D,p=await%20fetch(%60%24%7Bs.tE%7D/user/orders/%60,%7Bmethod:%22POST%22,headers:(0,i.H)(a.gX),body:JSON.stringify(h)%7D);if(p.ok%7C%7C201===p.status)H(%60%24%7B(0,l.t)(%22orderSuccess%22)%7D:%20%24%7Bn%7D%60,%22success%22),d=null,await%20u();else%7Bconst%20e=await%20p.json();H(%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),H(%22Netzwerkfehler%20bei%20Bestellung%22,%22error%22)%7D%7Dasync%20function%20p(e,t,n)%7Bif(!a.gX)return;const%20o=%60%24%7Be%7D_%24%7Bt%7D%60,r=a.L.get(o);if(!r%7C%7C0===r.length)return;const%20c=r%5Br.length-1%5D;try%7Bconst%20e=await%20fetch(%60%24%7Bs.tE%7D/user/orders/%24%7Bc%7D/cancel/%60,%7Bmethod:%22PATCH%22,headers:(0,i.H)(a.gX),body:JSON.stringify(%7B%7D)%7D);if(e.ok)H(%60%24%7B(0,l.t)(%22cancelSuccess%22)%7D:%20%24%7Bn%7D%60,%22success%22),d=null,await%20u();else%7BH(%60Fehler:%20%24%7B(await%20e.json()).detail%7C%7C%22Stornierung%20fehlgeschlagen%22%7D%60,%22error%22)%7D%7Dcatch(e)%7Bconsole.error(%22Cancel%20error:%22,e),H(%22Netzwerkfehler%20bei%20Stornierung%22,%22error%22)%7D%7Dfunction%20f()%7BlocalStorage.setItem(%22kantine_flags%22,JSON.stringify(%5B...a.BY%5D))%7Dasync%20function%20v()%7Bif(0===a.BY.size)return;const%20e=a.gX%7C%7Cs.f9,t=new%20Set;for(const%20e%20of%20a.BY)%7Bconst%5Bn%5D=e.split(%22_%22);t.add(n)%7Dlet%20n=!1;const%20o=document.getElementById(%22alarm-bell%22);o%26%26o.classList.add(%22refreshing%22);try%7Bfor(const%20o%20of%20t)try%7Bconst%20t=await%20fetch(%60%24%7Bs.tE%7D/venues/%24%7Bs.eW%7D/menu/%24%7Bs.YU%7D/%24%7Bo%7D/%60,%7Bheaders:(0,i.H)(e)%7D);if(!t.ok)continue;const%20r=(await%20t.json()).results%7C%7C%5B%5D,l=new%20Map;for(const%20e%20of%20r)if(e.items%26%26Array.isArray(e.items))for(const%20t%20of%20e.items)l.set(t.id,t);for(let%20e%20of%20a.p_)%7Bif(!e.days)continue;const%20t=e.days.find(e=%3Ee.date===o);if(t%26%26t.items)for(let%20e=0;e%3Ct.items.length;e++)%7Bconst%20s=t.items%5Be%5D,i=%60%24%7Bo%7D_%24%7Bs.articleId%7D%60;if(!a.BY.has(i))continue;const%20r=l.get(s.articleId);if(r)%7Bconst%20e=!1===r.amount_tracking,t=parseInt(r.available_amount)%3E0;s.available=e%7C%7Ct,s.availableAmount=parseInt(r.available_amount)%7C%7C0,s.amountTracking=!1!==r.amount_tracking,n=!0%7D%7D%7D%7Dcatch(e)%7Bconsole.error(%22Error%20refreshing%20flag%20date%22,o,e)%7Dn%26%26B(),localStorage.setItem(%22kantine_flagged_items_last_checked%22,(new%20Date).toISOString()),(0,r.Mb)(),(0,r.OR)(),H(%60%24%7Ba.BY.size%7D%20%24%7B1===a.BY.size%3F(0,l.t)(%22menuSingular%22):(0,l.t)(%22menuPlural%22)%7D%20%24%7B(0,l.t)(%22menuChecked%22)%7D%60,%22info%22)%7Dfinally%7Bo%26%26o.classList.remove(%22refreshing%22)%7D%7Dfunction%20y(e,t,n,o)%7Bconst%20s=%60%24%7Be%7D_%24%7Bt%7D%60;let%20i=!1;a.BY.has(s)%3F(a.BY.delete(s),H(%60%24%7B(0,l.t)(%22flagRemoved%22)%7D%20%24%7Bn%7D%60,%22success%22)):(a.BY.add(s),i=!0,H(%60%24%7B(0,l.t)(%22flagActivated%22)%7D%20%24%7Bn%7D%60,%22success%22),%22default%22===Notification.permission%26%26Notification.requestPermission()),f(),(0,r.Mb)(),(0,r.OR)(),i%26%26v()%7Dfunction%20b()%7Bconst%20e=new%20Date,t=e.toISOString().split(%22T%22)%5B0%5D;let%20n=!1;for(const%20o%20of%5B...a.BY%5D)%7Bconst%5Bs%5D=o.split(%22_%22);let%20i=!1;if(s%3Ct)i=!0;else%20if(s===t)%7Bconst%20t=new%20Date(s);t.setHours(10,0,0,0),e%3E=t%26%26(i=!0)%7Di%26%26(a.BY.delete(o),n=!0)%7Dn%26%26f()%7Dfunction%20w()%7Ba.K8%7C%7Ca.gX%26%26(0,a.cc)(setInterval(()=%3Easync%20function()%7Bif(0===a.BY.size%7C%7C!a.gX)return;for(const%20e%20of%20a.BY)%7Bconst%5Bt,n%5D=e.split(%22_%22),o=parseInt(n);try%7Bconst%20e=await%20fetch(%60%24%7Bs.tE%7D/venues/%24%7Bs.eW%7D/menu/%24%7Bs.YU%7D/%24%7Bt%7D/%60,%7Bheaders:(0,i.H)(a.gX)%7D);if(!e.ok)continue;const%20n=(await%20e.json()).results%7C%7C%5B%5D;let%20r=null;for(const%20e%20of%20n)if(e.items%26%26(r=e.items.find(e=%3Ee.id===o%7C%7Ce.article===o),r))break;if(r)%7Bif(!1===r.amount_tracking%7C%7CparseInt(r.available_amount)%3E0)%7Bconst%20e=r.name%7C%7C%22Unbekannt%22;H(%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),O()%7D%7D%7Dcatch(t)%7Bconsole.error(%60Poll%20error%20for%20%24%7Be%7D:%60,t),await%20new%20Promise(e=%3EsetTimeout(e,200))%7D%7DlocalStorage.setItem(%22kantine_flagged_items_last_checked%22,(new%20Date).toISOString()),(0,r.Mb)()%7D(),s.fv))%7Dfunction%20E()%7Ba.K8%26%26(clearInterval(a.K8),(0,a.cc)(null))%7Dfunction%20A()%7BlocalStorage.setItem(%22kantine_highlightTags%22,JSON.stringify(a.yz)),(0,r.OR)(),(0,r.gJ)()%7Dfunction%20k(e)%7Bif((e=e.trim().toLowerCase())%26%26!a.yz.includes(e))%7Bconst%20t=%5B...a.yz,e%5D;return(0,a.iw)(t),A(),!0%7Dreturn!1%7Dfunction%20L()%7Bconst%20e=document.getElementById(%22tags-list%22);e.innerHTML=%22%22,a.yz.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%7B!function(e)%7Bconst%20t=a.yz.filter(t=%3Et!==e);(0,a.iw)(t),A()%7D(e.target.dataset.tag),L()%7D)%7D)%7Dfunction%20S(e)%7Breturn%20e%3F(e=e.toLowerCase(),a.yz.filter(t=%3Ee.includes(t))):%5B%5D%7Dconst%20I=%22kantine_menuCache%22,C=%22kantine_menuCacheTs%22;function%20B()%7Btry%7BlocalStorage.setItem(I,JSON.stringify(a.p_)),localStorage.setItem(C,(new%20Date).toISOString())%7Dcatch(e)%7Bconsole.warn(%22Failed%20to%20cache%20menu%20data:%22,e)%7D%7Dfunction%20T()%7Btry%7Bconst%20e=localStorage.getItem(I),t=localStorage.getItem(C);if(e)%7B(0,a.tn)(JSON.parse(e)),(0,a.Xt)((0,o.sn)(new%20Date)),(0,a.pK)((new%20Date).getFullYear()),(0,r.OR)(),(0,r.gJ)(),(0,r.Mb)(),t%26%26N(t);try%7Bconst%20e=new%20Set;a.p_.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)%7Dcatch(e)%7B%7Dreturn!0%7D%7Dcatch(e)%7Bconsole.warn(%22Failed%20to%20load%20cached%20menu:%22,e)%7Dreturn!1%7Dfunction%20D()%7Bconst%20e=localStorage.getItem(C);if(!e)return!1;if(Date.now()-new%20Date(e).getTime()%3E36e5)return!1;const%20t=(0,o.sn)(new%20Date),n=(0,o.Ao)(new%20Date);return%20a.p_.some(e=%3Ee.weekNumber===t%26%26e.year===n%26%26e.days%26%26e.days.length%3E0)%7Dasync%20function%20O()%7Bconst%20e=document.getElementById(%22loading%22),t=document.getElementById(%22progress-modal%22),l=document.getElementById(%22progress-fill%22),d=document.getElementById(%22progress-percent%22),u=document.getElementById(%22progress-message%22);e.classList.remove(%22hidden%22);const%20g=a.gX%7C%7Cs.f9;try%7Bt.classList.remove(%22hidden%22),u.textContent=%22Hole%20verf%C3%BCgbare%20Daten...%22,l.style.width=%220%25%22,d.textContent=%220%25%22;const%20e=await%20fetch(%60%24%7Bs.tE%7D/venues/%24%7Bs.eW%7D/menu/dates/%60,%7Bheaders:(0,i.H)(g)%7D);if(!e.ok)throw%20new%20Error(%60Failed%20to%20fetch%20dates:%20%24%7Be.status%7D%60);let%20n=(await%20e.json()).results%7C%7C%5B%5D;const%20m=new%20Date;m.setDate(m.getDate()-7);const%20h=m.toISOString().split(%22T%22)%5B0%5D;n=n.filter(e=%3Ee.date%3E=h).sort((e,t)=%3Ee.date.localeCompare(t.date)).slice(0,30);const%20p=n.length;u.textContent=%60%24%7Bp%7D%20Tage%20gefunden.%20Lade%20Details...%60;const%20f=%5B%5D;let%20v=0;const%20y=5;for(let%20e=0;e%3Cp;e+=y)%7Bconst%20t=n.slice(e,e+y),a=await%20Promise.all(t.map(async%20e=%3E%7Bconst%20t=e.date;let%20n=null;try%7Bconst%20a=await%20fetch(%60%24%7Bs.tE%7D/venues/%24%7Bs.eW%7D/menu/%24%7Bs.YU%7D/%24%7Bt%7D/%60,%7Bheaders:(0,i.H)(g)%7D);if(a.ok)%7Bconst%20o=(await%20a.json()).results%7C%7C%5B%5D;let%20s=%5B%5D;for(const%20e%20of%20o)e.items%26%26Array.isArray(e.items)%26%26(s=s.concat(e.items));s.length%3E0%26%26(n=%7Bdate:t,menu_items:s,orders:e.orders%7C%7C%5B%5D%7D)%7D%7Dcatch(e)%7Bconsole.error(%60Failed%20to%20fetch%20details%20for%20%24%7Bt%7D:%60,e)%7Dfinally%7Bv++;const%20e=Math.round(v/p%2A100);l.style.width=%60%24%7Be%7D%25%60,d.textContent=%60%24%7Be%7D%25%60,u.textContent=%60Lade%20Men%C3%BC%20f%C3%BCr%20%24%7Bt%7D...%60%7Dreturn%20n%7D));for(const%20e%20of%20a)e%26%26f.push(e)%7Dconst%20b=new%20Map;a.p_%26%26a.p_.length%3E0%26%26a.p_.forEach(e=%3E%7Bconst%20t=%60%24%7Be.year%7D-%24%7Be.weekNumber%7D%60;try%7Bb.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%20f)%7Bconst%20t=new%20Date(e.date),n=(0,o.sn)(t),a=(0,o.Ao)(t),s=%60%24%7Ba%7D-%24%7Bn%7D%60;b.has(s)%7C%7Cb.set(s,%7Byear:a,weekNumber:n,days:%5B%5D%7D);const%20i=b.get(s),r=t.toLocaleDateString(%22en-US%22,%7Bweekday:%22long%22%7D),l=new%20Date(e.date);l.setHours(10,0,0,0);const%20d=%7Bdate:e.date,weekday:r,orderCutoff:l.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=i.days.findIndex(t=%3Et.date===e.date);c%3E=0%3Fi.days%5Bc%5D=d:i.days.push(d)%7Dconst%20w=Array.from(b.values()).sort((e,t)=%3Ee.year!==t.year%3Fe.year-t.year:e.weekNumber-t.weekNumber);w.forEach(e=%3E%7Be.days%26%26e.days.sort((e,t)=%3Ee.date.localeCompare(t.date))%7D),(0,a.tn)(w),B(),N((new%20Date).toISOString()),(0,a.Xt)((0,o.sn)(new%20Date)),(0,a.pK)((new%20Date).getFullYear()),c(),(0,r.OR)(),(0,r.gJ)(),(0,r.Mb)(),u.textContent=%22Fertig!%22,setTimeout(()=%3Et.classList.add(%22hidden%22),500)%7Dcatch(e)%7Bconsole.error(%22Error%20fetching%20menu:%22,e),t.classList.add(%22hidden%22),Promise.resolve().then(n.bind(n,842)).then(t=%3E%7Bt.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%7B(0,o.ZD)(e.message)%7D%3C/small%3E%60,%22Zur%20Original-Seite%22,%22https://web.bessa.app/knapp-kantine%22)%7D)%7Dfinally%7Be.classList.add(%22hidden%22)%7D%7Dlet%20M=null,x=null;function%20N(e)%7Bconst%20t=document.getElementById(%22last-updated-subtitle%22);if(e)%7BM=e,localStorage.setItem(%22kantine_last_updated%22,e),localStorage.setItem(%22kantine_last_checked%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),i=(0,o.gs)(n);t.textContent=%60Aktualisiert:%20%24%7Bs%7D%20%24%7Ba%7D%20(%24%7Bi%7D)%60%7Dcatch(e)%7Bt.textContent=%22%22%7Dx%7C%7C(x=setInterval(()=%3E%7BM%26%26(N(M),(0,r.Mb)())%7D,6e4))%7D%7Dfunction%20H(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%7B(0,o.ZD)(e)%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)%7D%7D,672(e,t,n)%7Bn.d(t,%7BH:()=%3Eo,O:()=%3Es%7D);var%20a=n(521);function%20o(e)%7Breturn%7BAuthorization:%60Token%20%24%7Be%7C%7Ca.f9%7D%60,Accept:%22application/json%22,%22Content-Type%22:%22application/json%22,%22X-Client-Version%22:a.fZ%7D%7Dfunction%20s()%7Breturn%7BAccept:%22application/vnd.github.v3+json%22%7D%7D%7D,521(e,t,n)%7Bn.d(t,%7BLS:()=%3Eg,YU:()=%3Er,d_:()=%3Eu,eW:()=%3Ei,f9:()=%3Eo,fZ:()=%3Es,fv:()=%3El,pe:()=%3Ec,tE:()=%3Ea%7D);const%20a=%22https://api.bessa.app/v1%22,o=%22c3418725e95a9f90e3645cbc846b4d67c7c66131%22,s=%22v1.6.19%22,i=591,r=7,l=3e5,d=%22TauNeutrino/kantine-overview%22,c=%60https://api.github.com/repos/%24%7Bd%7D%60,u=%60https://htmlpreview.github.io/%3Fhttps://github.com/%24%7Bd%7D/blob%60,g=%7BAUTH_TOKEN:%22kantine_authToken%22,CURRENT_USER:%22kantine_currentUser%22,FIRST_NAME:%22kantine_firstName%22,LAST_NAME:%22kantine_lastName%22,LANG:%22kantine_lang%22,FLAGS:%22kantine_flags%22,FLAGGED_LAST_CHECKED:%22kantine_flagged_items_last_checked%22,LAST_CHECKED:%22kantine_last_checked%22,MENU_CACHE:%22kantine_menuCache%22,MENU_CACHE_TS:%22kantine_menuCacheTs%22,HISTORY_CACHE:%22kantine_history_cache%22,HIGHLIGHT_TAGS:%22kantine_highlightTags%22,LAST_UPDATED:%22kantine_last_updated%22,VERSION_CACHE:%22kantine_version_cache%22,DEV_MODE:%22kantine_dev_mode%22%7D%7D,646(e,t,n)%7Bn.d(t,%7Bt:()=%3Es%7D);var%20a=n(901);const%20o=%7Bde:%7BthisWeek:%22Diese%20Woche%22,nextWeek:%22N%C3%A4chste%20Woche%22,nextWeekTooltipDefault:%22Men%C3%BC%20n%C3%A4chster%20Woche%20anzeigen%22,thisWeekTooltip:%22Men%C3%BC%20dieser%20Woche%20anzeigen%22,appTitle:%22Kantinen%20%C3%9Cbersicht%22,updatedAt:%22Aktualisiert%22,langTooltip:%22Sprache%20der%20Men%C3%BCbeschreibung%22,weekLabel:%22Woche%22,refresh:%22Men%C3%BCdaten%20neu%20laden%22,history:%22Bestellhistorie%22,highlights:%22Pers%C3%B6nliche%20Highlights%20verwalten%22,themeTooltip:%22Erscheinungsbild%20(Hell/Dunkel)%20wechseln%22,login:%22Anmelden%22,loginTooltip:%22Mit%20Bessa.app%20Account%20anmelden%22,logout:%22Abmelden%22,logoutTooltip:%22Von%20Bessa.app%20abmelden%22,loginTitle:%22Login%22,employeeId:%22Mitarbeiternummer%22,employeeIdPlaceholder:%22z.B.%202041%22,employeeIdHelp:%22Deine%20offizielle%20Knapp%20Mitarbeiternummer.%22,password:%22Passwort%22,passwordPlaceholder:%22Bessa%20Passwort%22,passwordHelp:%22Das%20Passwort%20f%C3%BCr%20deinen%20Bessa%20Account.%22,loginButton:%22Einloggen%22,loggingIn:%22Wird%20eingeloggt...%22,highlightsTitle:%22Meine%20Highlights%22,highlightsDesc:%22Markiere%20Men%C3%BCs%20automatisch,%20wenn%20sie%20diese%20Schlagw%C3%B6rter%20enthalten.%22,tagInputPlaceholder:%22z.B.%20Schnitzel,%20Vegetarisch...%22,tagInputTooltip:%22Neues%20Schlagwort%20zum%20Hervorheben%20eingeben%22,addTag:%22Hinzuf%C3%BCgen%22,addTagTooltip:%22Schlagwort%20zur%20Liste%20hinzuf%C3%BCgen%22,removeTagTooltip:%22Schlagwort%20entfernen%22,historyTitle:%22Bestellhistorie%22,loadingHistory:%22Lade%20Historie...%22,noOrders:%22Keine%20Bestellungen%20gefunden.%22,orders:%22Bestellungen%22,historyMonthToggle:%22Klicken,%20um%20die%20Bestellungen%20f%C3%BCr%20diesen%20Monat%20ein-/auszublenden%22,available:%22Verf%C3%BCgbar%22,soldOut:%22Ausverkauft%22,ordered:%22Bestellt%22,orderButton:%22Bestellen%22,orderAgainTooltip:%22nochmal%20bestellen%22,orderTooltip:%22bestellen%22,cancelOrder:%22Bestellung%20stornieren%22,cancelOneOrder:%22Eine%20Bestellung%20stornieren%22,flagActivate:%22Benachrichtigen%20wenn%20verf%C3%BCgbar%22,flagDeactivate:%22Benachrichtigung%20deaktivieren%22,alarmTooltipNone:%22Keine%20beobachteten%20Men%C3%BCs%22,alarmLastChecked:%22Zuletzt%20gepr%C3%BCft%22,versionsTitle:%22%F0%9F%93%A6%20Versionen%22,currentVersion:%22Aktuell%22,devModeLabel:%22Dev-Mode%20(alle%20Tags%20anzeigen)%22,loadingVersions:%22Lade%20Versionen...%22,noVersions:%22Keine%20Versionen%20gefunden.%22,installed:%22%E2%9C%93%20Installiert%22,newVersion:%22%E2%AC%86%20Neu!%22,installLink:%22Installieren%22,reportBug:%22Fehler%20melden%22,reportBugTooltip:%22Melde%20einen%20Fehler%20auf%20GitHub%22,featureRequest:%22Feature%20vorschlagen%22,featureRequestTooltip:%22Schlage%20ein%20neues%20Feature%20auf%20GitHub%20vor%22,clearCache:%22Lokalen%20Cache%20leeren%22,clearCacheTooltip:%22L%C3%B6scht%20alle%20lokalen%20Daten%20%26%20erzwingt%20einen%20Neuladen%22,clearCacheConfirm:%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,versionMenuTooltip:%22Klick%20f%C3%BCr%20Versionsmen%C3%BC%22,progressTitle:%22Men%C3%BCdaten%20aktualisieren%22,progressInit:%22Initialisierung...%22,noMenuData:%22Keine%20Men%C3%BCdaten%20f%C3%BCr%20KW%22,noMenuDataHint:%22Versuchen%20Sie%20eine%20andere%20Woche%20oder%20schauen%20Sie%20sp%C3%A4ter%20vorbei.%22,orderDeadline:%22Bestellschluss%22,flagRemoved:%22Flag%20entfernt%20f%C3%BCr%22,flagActivated:%22Benachrichtigung%20aktiviert%20f%C3%BCr%22,menuChecked:%22gepr%C3%BCft%22,menuSingular:%22Men%C3%BC%22,menuPlural:%22Men%C3%BCs%22,newMenuDataAvailable:%22Neue%20Men%C3%BCdaten%20f%C3%BCr%20n%C3%A4chste%20Woche%20verf%C3%BCgbar!%22,orderSuccess:%22Bestellt%22,cancelSuccess:%22Storniert%22,bgSyncFailed:%22Hintergrund-Synchronisation%20fehlgeschlagen%22,historyLoadError:%22Fehler%20beim%20Laden%20der%20Historie.%22,historyLoadingFull:%22Lade%20Bestellhistorie...%22,historyLoadingDelta:%22Suche%20nach%20neuen%20Bestellungen...%22,historyLoadingItem:%22Lade%20Bestellung%22,historyLoadingOf:%22von%22,historyLoadingNew:%22neue/ge%C3%A4nderte%20Bestellungen%20gefunden...%22,badgeOrdered:%22bestellt%22,badgeOrderable:%22bestellbar%22,badgeTotal:%22gesamt%22,badgeHighlights:%22Highlights%20gefunden%22,stateCancelled:%22Storniert%22,stateCompleted:%22Abgeschlossen%22,stateTransferred:%22%C3%9Cbertragen%22,close:%22Schlie%C3%9Fen%22,noConnection:%22Keine%20Verbindung%22,toOriginalPage:%22Zur%20Original-Seite%22,loggedIn:%22Angemeldet%22%7D,en:%7BthisWeek:%22This%20Week%22,nextWeek:%22Next%20Week%22,nextWeekTooltipDefault:%22Show%20next%20week%27s%20menu%22,thisWeekTooltip:%22Show%20this%20week%27s%20menu%22,appTitle:%22Canteen%20Overview%22,updatedAt:%22Updated%22,langTooltip:%22Menu%20description%20language%22,weekLabel:%22Week%22,refresh:%22Reload%20menu%20data%22,history:%22Order%20history%22,highlights:%22Manage%20personal%20highlights%22,themeTooltip:%22Toggle%20appearance%20(Light/Dark)%22,login:%22Sign%20in%22,loginTooltip:%22Sign%20in%20with%20Bessa.app%20account%22,logout:%22Sign%20out%22,logoutTooltip:%22Sign%20out%20from%20Bessa.app%22,loginTitle:%22Login%22,employeeId:%22Employee%20ID%22,employeeIdPlaceholder:%22e.g.%202041%22,employeeIdHelp:%22Your%20official%20Knapp%20employee%20number.%22,password:%22Password%22,passwordPlaceholder:%22Bessa%20password%22,passwordHelp:%22The%20password%20for%20your%20Bessa%20account.%22,loginButton:%22Log%20in%22,loggingIn:%22Logging%20in...%22,highlightsTitle:%22My%20Highlights%22,highlightsDesc:%22Automatically%20highlight%20menus%20containing%20these%20keywords.%22,tagInputPlaceholder:%22e.g.%20Schnitzel,%20Vegetarian...%22,tagInputTooltip:%22Enter%20new%20keyword%20to%20highlight%22,addTag:%22Add%22,addTagTooltip:%22Add%20keyword%20to%20list%22,removeTagTooltip:%22Remove%20keyword%22,historyTitle:%22Order%20History%22,loadingHistory:%22Loading%20history...%22,noOrders:%22No%20orders%20found.%22,orders:%22Orders%22,historyMonthToggle:%22Click%20to%20expand/collapse%20orders%20for%20this%20month%22,available:%22Available%22,soldOut:%22Sold%20out%22,ordered:%22Ordered%22,orderButton:%22Order%22,orderAgainTooltip:%22order%20again%22,orderTooltip:%22order%22,cancelOrder:%22Cancel%20order%22,cancelOneOrder:%22Cancel%20one%20order%22,flagActivate:%22Notify%20when%20available%22,flagDeactivate:%22Deactivate%20notification%22,alarmTooltipNone:%22No%20flagged%20menus%22,alarmLastChecked:%22Last%20checked%22,versionsTitle:%22%F0%9F%93%A6%20Versions%22,currentVersion:%22Current%22,devModeLabel:%22Dev%20mode%20(show%20all%20tags)%22,loadingVersions:%22Loading%20versions...%22,noVersions:%22No%20versions%20found.%22,installed:%22%E2%9C%93%20Installed%22,newVersion:%22%E2%AC%86%20New!%22,installLink:%22Install%22,reportBug:%22Report%20a%20bug%22,reportBugTooltip:%22Report%20a%20bug%20on%20GitHub%22,featureRequest:%22Request%20a%20feature%22,featureRequestTooltip:%22Suggest%20a%20new%20feature%20on%20GitHub%22,clearCache:%22Clear%20local%20cache%22,clearCacheTooltip:%22Deletes%20all%20local%20data%20%26%20forces%20a%20reload%22,clearCacheConfirm:%22Do%20you%20really%20want%20to%20delete%20all%20local%20data%20(including%20login%20session,%20cache,%20and%20settings)%3F%20The%20page%20will%20reload%20afterwards.%22,versionMenuTooltip:%22Click%20for%20version%20menu%22,progressTitle:%22Updating%20menu%20data%22,progressInit:%22Initializing...%22,noMenuData:%22No%20menu%20data%20for%20CW%22,noMenuDataHint:%22Try%20another%20week%20or%20check%20back%20later.%22,orderDeadline:%22Order%20deadline%22,flagRemoved:%22Flag%20removed%20for%22,flagActivated:%22Notification%20activated%20for%22,menuChecked:%22checked%22,menuSingular:%22menu%22,menuPlural:%22menus%22,newMenuDataAvailable:%22New%20menu%20data%20available%20for%20next%20week!%22,orderSuccess:%22Ordered%22,cancelSuccess:%22Cancelled%22,bgSyncFailed:%22Background%20synchronisation%20failed%22,historyLoadError:%22Error%20loading%20history.%22,historyLoadingFull:%22Loading%20order%20history...%22,historyLoadingDelta:%22Checking%20for%20new%20orders...%22,historyLoadingItem:%22Loading%20order%22,historyLoadingOf:%22of%22,historyLoadingNew:%22new/updated%20orders%20found...%22,badgeOrdered:%22ordered%22,badgeOrderable:%22orderable%22,badgeTotal:%22total%22,badgeHighlights:%22highlights%20found%22,stateCancelled:%22Cancelled%22,stateCompleted:%22Completed%22,stateTransferred:%22Transferred%22,close:%22Close%22,noConnection:%22No%20connection%22,toOriginalPage:%22Go%20to%20original%20page%22,loggedIn:%22Logged%20in%22%7D%7D;function%20s(e)%7Bconst%20t=%22en%22===a.Kl%3F%22en%22:%22de%22;return%20o%5Bt%5D%5Be%5D%7C%7Co.de%5Be%5D%7C%7Ce%7D%7D,901(e,t,n)%7Bn.d(t,%7BBT:()=%3Ei,BY:()=%3Eg,K8:()=%3Em,Kl:()=%3Eh,L:()=%3Eu,Ny:()=%3Ec,O5:()=%3Eb,UD:()=%3ES,Xt:()=%3Ev,cc:()=%3EA,di:()=%3EE,gX:()=%3Ed,iw:()=%3Ek,lt:()=%3Ew,pK:()=%3Ey,p_:()=%3Es,qo:()=%3EL,sw:()=%3El,tn:()=%3Ef,vW:()=%3Er,yz:()=%3Ep%7D);var%20a=n(413),o=n(521);let%20s=%5B%5D,i=(0,a.sn)(new%20Date),r=(new%20Date).getFullYear(),l=%22this-week%22,d=localStorage.getItem(o.LS.AUTH_TOKEN),c=localStorage.getItem(o.LS.CURRENT_USER),u=new%20Map,g=new%20Set(JSON.parse(localStorage.getItem(o.LS.FLAGS)%7C%7C%22%5B%5D%22)),m=null,h=localStorage.getItem(o.LS.LANG)%7C%7C%22de%22,p=JSON.parse(localStorage.getItem(o.LS.HIGHLIGHT_TAGS)%7C%7C%22%5B%5D%22);function%20f(e)%7Bs=e%7Dfunction%20v(e)%7Bi=e%7Dfunction%20y(e)%7Br=e%7Dfunction%20b(e)%7Bd=e%7Dfunction%20w(e)%7Bc=e%7Dfunction%20E(e)%7Bu=e%7Dfunction%20A(e)%7Bm=e%7Dfunction%20k(e)%7Bp=e%7Dfunction%20L(e)%7B%22this-week%22===e%7C%7C%22next-week%22===e%3Fl=e:console.warn(%60%5Bstate%5D%20Invalid%20displayMode:%20%22%24%7Be%7D%22.%20Ignoring.%60)%7Dfunction%20S(e)%7B%5B%22de%22,%22en%22,%22all%22%5D.includes(e)%3Fh=e:console.warn(%60%5Bstate%5D%20Invalid%20langMode:%20%22%24%7Be%7D%22.%20Ignoring.%60)%7D%7D,842(e,t,n)%7Bn.d(t,%7BGk:()=%3Eh,Mb:()=%3Ey,OR:()=%3Ec,Ux:()=%3Em,gJ:()=%3Ed,showErrorModal:()=%3Ev,wy:()=%3Eu%7D);var%20a=n(901),o=n(413),s=n(521),i=n(672),r=n(367),l=n(646);function%20d()%7Bconst%20e=document.getElementById(%22btn-next-week%22);let%20t=a.BT+1,n=a.vW;t%3E52%26%26(t=1,n++);const%20o=a.p_.find(e=%3Ee.weekNumber===t%26%26e.year===n);let%20s=0,i=0,d=0,c=0;o%26%26o.days%26%26o.days.forEach(e=%3E%7Bif(e.items%26%26e.items.length%3E0)%7Bs++;const%20t=e.items.some(e=%3Ee.available);t%26%26i++;let%20n=!1;e.items.forEach(t=%3E%7Bconst%20o=t.articleId%7C%7CparseInt(t.id.split(%22_%22)%5B1%5D),s=%60%24%7Be.date%7D_%24%7Bo%7D%60;a.L.has(s)%26%26a.L.get(s).length%3E0%26%26(n=!0)%7D),n%26%26d++;const%20o=new%20Date(e.date).getDay();o%3E=1%26%26o%3C=4%26%26t%26%26!n%26%26c++%7D%7D);const%20u=e.querySelector(%22.nav-badge%22);if(u%26%26u.remove(),s%3E0)%7Blet%20a=0;o%26%26o.days%26%26o.days.forEach(e=%3E%7Be.items.forEach(e=%3E%7Bconst%20t=(0,r.BM)(e.name),n=(0,r.BM)(e.description);(t.length%3E0%7C%7Cn.length%3E0)%26%26a++%7D)%7D);let%20u=%5B%60%24%7Bd%7D%20%24%7B(0,l.t)(%22badgeOrdered%22)%7D%20/%20%24%7Bi%7D%20%24%7B(0,l.t)(%22badgeOrderable%22)%7D%20/%20%24%7Bs%7D%20%24%7B(0,l.t)(%22badgeTotal%22)%7D%60%5D;if(a%3E0%26%26u.push(%60%24%7Ba%7D%20%24%7B(0,l.t)(%22badgeHighlights%22)%7D%60),e.title=u.join(%22%20%E2%80%A2%20%22),c%3E0)%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),(0,r.P0)((0,l.t)(%22newMenuDataAvailable%22),%22info%22))%7Delse%20e.classList.remove(%22new-week-available%22)%7Delse%20e.title=(0,l.t)(%22nextWeekTooltipDefault%22),e.classList.remove(%22new-week-available%22)%7Dfunction%20c()%7Bconst%20e=document.getElementById(%22menu-container%22);if(!e)return;e.innerHTML=%22%22;let%20t=a.BT,n=a.vW;%22next-week%22===a.sw%26%26(t++,t%3E52%26%26(t=1,n++));const%20s=a.p_.flatMap(e=%3Ee.days%7C%7C%5B%5D).filter(e=%3E%7Bconst%20a=new%20Date(e.date);return(0,o.sn)(a)===t%26%26(0,o.Ao)(a)===n%7D);if(0===s.length)return%20void(e.innerHTML=%60%5Cn%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%3Cp%3E%24%7B(0,l.t)(%22noMenuData%22)%7D%20%24%7Bt%7D%20(%24%7Bn%7D).%3C/p%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Csmall%3E%24%7B(0,l.t)(%22noMenuDataHint%22)%7D%3C/small%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3C/div%3E%60);const%20i=document.getElementById(%22header-week-info%22),d=%22this-week%22===a.sw%3F(0,l.t)(%22thisWeek%22):(0,l.t)(%22nextWeek%22);i.innerHTML=%60%5Cn%20%20%20%20%20%20%20%20%3Cdiv%20class=%22header-week-title%22%3E%24%7Bd%7D%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%3Cdiv%20class=%22header-week-subtitle%22%3E%24%7B(0,l.t)(%22weekLabel%22)%7D%20%24%7Bt%7D%20%E2%80%A2%20%24%7Bn%7D%3C/div%3E%60;const%20c=document.createElement(%22div%22);c.className=%22days-grid%22,s.sort((e,t)=%3Ee.date.localeCompare(t.date));s.filter(e=%3E%7Bconst%20t=new%20Date(e.date).getDay();return%200!==t%26%266!==t%7D).forEach(e=%3E%7Bconst%20t=function(e)%7Bif(!e.items%7C%7C0===e.items.length)return%20null;const%20t=document.createElement(%22div%22);t.className=%22menu-card%22;const%20n=new%20Date,s=new%20Date(e.date);let%20i=!1;if(e.orderCutoff)i=n%3E=new%20Date(e.orderCutoff);else%7Bconst%20t=new%20Date;t.setHours(0,0,0,0);const%20n=new%20Date(e.date);n.setHours(0,0,0,0),i=n%3Ct%7Di%26%26t.classList.add(%22past-day%22);const%20d=%5B%5D;e.items%26%26e.items.forEach(t=%3E%7Bconst%20n=t.articleId%7C%7CparseInt(t.id.split(%22_%22)%5B1%5D),o=%60%24%7Be.date%7D_%24%7Bn%7D%60,s=(a.L.get(o)%7C%7C%5B%5D).length;if(s%3E0)%7Bconst%20e=t.name.match(/(%5BM%5D%5B1-9%5D%5BFf%5D%3F)/);if(e)%7Blet%20t=e%5B1%5D;s%3E1%26%26(t+=%22+%22),d.push(t)%7D%7D%7D);const%20c=document.createElement(%22div%22);c.className=%22card-header%22;const%20u=s.toLocaleDateString(%22de-DE%22,%7Bday:%222-digit%22,month:%222-digit%22%7D),g=d.reduce((e,t)=%3Ee+%60%3Cspan%20class=%22menu-code-badge%22%3E%24%7Bt%7D%3C/span%3E%60,%22%22);let%20m=%22%22;const%20h=e.items%26%26e.items.some(t=%3E%7Bconst%20n=t.articleId%7C%7CparseInt(t.id.split(%22_%22)%5B1%5D),o=%60%24%7Be.date%7D_%24%7Bn%7D%60;return%20a.L.has(o)%26%26a.L.get(o).length%3E0%7D),p=e.items%26%26e.items.some(e=%3Ee.available);m=h%3F%22header-violet%22:p%26%26!i%3F%22header-green%22:%22header-red%22;m%26%26c.classList.add(m);c.innerHTML=%60%5Cn%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%3Cspan%20class=%22day-name%22%3E%24%7B(0,o.FS)(e.weekday)%7D%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22day-badges%22%3E%24%7Bg%7D%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%3Cspan%20class=%22day-date%22%3E%24%7Bu%7D%3C/span%3E%60,t.appendChild(c);const%20f=document.createElement(%22div%22);f.className=%22card-body%22;const%20v=(new%20Date).toISOString().split(%22T%22)%5B0%5D,y=e.date===v,b=%5B...e.items%5D.sort((t,n)=%3E%7Bif(y)%7Bconst%20o=t.articleId%7C%7CparseInt(t.id.split(%22_%22)%5B1%5D),s=n.articleId%7C%7CparseInt(n.id.split(%22_%22)%5B1%5D),i=a.L.has(%60%24%7Be.date%7D_%24%7Bo%7D%60),r=a.L.has(%60%24%7Be.date%7D_%24%7Bs%7D%60);if(i%26%26!r)return-1;if(!i%26%26r)return%201%7Dreturn%20t.name.localeCompare(n.name)%7D);return%20b.forEach(t=%3E%7Bconst%20s=document.createElement(%22div%22);s.className=%22menu-item%22;const%20d=t.articleId%7C%7CparseInt(t.id.split(%22_%22)%5B1%5D),c=%60%24%7Be.date%7D_%24%7Bd%7D%60,u=(a.L.get(c)%7C%7C%5B%5D).length;let%20g=%22%22;g=t.available%3Ft.amountTracking%3F%60%3Cspan%20class=%22badge%20available%22%3E%24%7B(0,l.t)(%22available%22)%7D%20(%24%7Bt.availableAmount%7D)%3C/span%3E%60:%60%3Cspan%20class=%22badge%20available%22%3E%24%7B(0,l.t)(%22available%22)%7D%3C/span%3E%60:%60%3Cspan%20class=%22badge%20sold-out%22%3E%24%7B(0,l.t)(%22soldOut%22)%7D%3C/span%3E%60;let%20m=%22%22;if(u%3E0)%7Bconst%20t=u%3E1%3F%60%3Cspan%20class=%22order-count-badge%22%3E%24%7Bu%7D%3C/span%3E%60:%22%22;m=%60%3Cspan%20class=%22badge%20ordered%22%3E%3Cspan%20class=%22material-icons-round%22%3Echeck_circle%3C/span%3E%20%24%7B(0,l.t)(%22ordered%22)%7D%24%7Bt%7D%3C/span%3E%60,s.classList.add(%22ordered%22),new%20Date(e.date).toDateString()===n.toDateString()%26%26s.classList.add(%22today-ordered%22)%7Dconst%20h=%60%24%7Be.date%7D_%24%7Bd%7D%60,p=a.BY.has(h);p%26%26s.classList.add(t.available%3F%22flagged-available%22:%22flagged-sold-out%22);const%20v=%5B...new%20Set(%5B...(0,r.BM)(t.name),...(0,r.BM)(t.description)%5D)%5D;v.length%3E0%26%26s.classList.add(%22highlight-glow%22);let%20y=%22%22,b=%22%22,w=%22%22;if(a.gX%26%26!i)%7Bconst%20n=p%3F%22notifications_active%22:%22notifications_none%22,a=p%3F%22btn-flag%20active%22:%22btn-flag%22,s=p%3F(0,l.t)(%22flagDeactivate%22):(0,l.t)(%22flagActivate%22);if(t.available%26%26!p%7C%7C(w=%60%3Cbutton%20class=%22%24%7Ba%7D%22%20data-date=%22%24%7Be.date%7D%22%20data-article=%22%24%7Bd%7D%22%20data-name=%22%24%7B(0,o.ZD)(t.name)%7D%22%20data-cutoff=%22%24%7Be.orderCutoff%7D%22%20title=%22%24%7Bs%7D%22%3E%3Cspan%20class=%22material-icons-round%22%3E%24%7Bn%7D%3C/span%3E%3C/button%3E%60),t.available%26%26(y=u%3E0%3F%60%3Cbutton%20class=%22btn-order%20btn-order-compact%22%20data-date=%22%24%7Be.date%7D%22%20data-article=%22%24%7Bd%7D%22%20data-name=%22%24%7B(0,o.ZD)(t.name)%7D%22%20data-price=%22%24%7Bt.price%7D%22%20data-desc=%22%24%7B(0,o.ZD)(t.description%7C%7C%22%22)%7D%22%20title=%22%24%7B(0,o.ZD)(t.name)%7D%20%E2%80%93%20%24%7B(0,l.t)(%22orderAgainTooltip%22)%7D%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%7Be.date%7D%22%20data-article=%22%24%7Bd%7D%22%20data-name=%22%24%7B(0,o.ZD)(t.name)%7D%22%20data-price=%22%24%7Bt.price%7D%22%20data-desc=%22%24%7B(0,o.ZD)(t.description%7C%7C%22%22)%7D%22%20title=%22%24%7B(0,o.ZD)(t.name)%7D%20%E2%80%93%20%24%7B(0,l.t)(%22orderTooltip%22)%7D%22%3E%3Cspan%20class=%22material-icons-round%22%3Eadd_shopping_cart%3C/span%3E%20%24%7B(0,l.t)(%22orderButton%22)%7D%3C/button%3E%60),u%3E0)%7Bconst%20n=1===u%3F%22close%22:%22remove%22,a=1===u%3F(0,l.t)(%22cancelOrder%22):(0,l.t)(%22cancelOneOrder%22);b=%60%3Cbutton%20class=%22btn-cancel%22%20data-date=%22%24%7Be.date%7D%22%20data-article=%22%24%7Bd%7D%22%20data-name=%22%24%7B(0,o.ZD)(t.name)%7D%22%20title=%22%24%7Ba%7D%22%3E%3Cspan%20class=%22material-icons-round%22%3E%24%7Bn%7D%3C/span%3E%3C/button%3E%60%7D%7Dlet%20E=%22%22;if(v.length%3E0)%7BE=%60%3Cdiv%20class=%22matched-tags%22%3E%24%7Bv.reduce((e,t)=%3Ee+%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%7B(0,o.ZD)(t)%7D%3C/span%3E%60,%22%22)%7D%3C/div%3E%60%7Ds.innerHTML=%60%5Cn%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%3Cspan%20class=%22item-name%22%3E%24%7B(0,o.ZD)(t.name)%7D%3C/span%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cspan%20class=%22item-price%22%3E%24%7Bt.price.toFixed(2)%7D%20%E2%82%AC%3C/span%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%3Cdiv%20class=%22item-status-row%22%3E%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%7Bm%7D%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%24%7By%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%24%7Bw%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%3Cdiv%20class=%22badges%22%3E%24%7Bg%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%24%7BE%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%3Cp%20class=%22item-desc%22%3E%24%7B(0,o.ZD)((0,o.PC)(t.description))%7D%3C/p%3E%60;const%20A=s.querySelector(%22.btn-order%22);A%26%26A.addEventListener(%22click%22,e=%3E%7Be.stopPropagation();const%20t=e.currentTarget;t.disabled=!0,t.classList.add(%22loading%22),(0,r.wH)(t.dataset.date,parseInt(t.dataset.article),t.dataset.name,parseFloat(t.dataset.price),t.dataset.desc%7C%7C%22%22).finally(()=%3E%7Bt.disabled=!1,t.classList.remove(%22loading%22)%7D)%7D);const%20k=s.querySelector(%22.btn-cancel%22);k%26%26k.addEventListener(%22click%22,e=%3E%7Be.stopPropagation();const%20t=e.currentTarget;t.disabled=!0,(0,r.N4)(t.dataset.date,parseInt(t.dataset.article),t.dataset.name).finally(()=%3E%7Bt.disabled=!1%7D)%7D);const%20L=s.querySelector(%22.btn-flag%22);L%26%26L.addEventListener(%22click%22,e=%3E%7Be.stopPropagation();const%20t=e.currentTarget;(0,r.PQ)(t.dataset.date,parseInt(t.dataset.article),t.dataset.name,t.dataset.cutoff)%7D),f.appendChild(s)%7D),t.appendChild(f),t%7D(e);t%26%26c.appendChild(t)%7D),e.appendChild(c),setTimeout(()=%3Eu(c),0)%7Dfunction%20u(e)%7Bconst%20t=e.querySelectorAll(%22.menu-card%22);if(0===t.length)return;const%20n=%5B%5D;let%20a=0;const%20o=Array.from(t).map(e=%3E%7Bconst%20t=Array.from(e.querySelectorAll(%22.menu-item%22));return%20a=Math.max(a,t.length),t%7D);for(let%20e=0;e%3Ca;e++)n%5Be%5D=o.map(t=%3Et%5Be%5D).filter(e=%3E!!e);n.flat().forEach(e=%3E%7Be.style.height=%22auto%22%7D);const%20s=n.map(e=%3EMath.max(...e.map(e=%3Ee.offsetHeight)));n.forEach((e,t)=%3E%7Bconst%20n=%60%24%7Bs%5Bt%5D%7Dpx%60;e.forEach(e=%3E%7Be.style.height=n%7D)%7D)%7Dasync%20function%20g(e)%7Bconst%20t=e%3F%60%24%7Bs.pe%7D/tags%3Fper_page=20%60:%60%24%7Bs.pe%7D/releases%3Fper_page=20%60,n=await%20fetch(t,%7Bheaders:(0,i.O)()%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%7Bs.d_%7D/%24%7Bn%7D/dist/install.html%60,body:t.body%7C%7C%22%22%7D%7D)%7Dasync%20function%20m()%7Bconst%20e=%22true%22===localStorage.getItem(s.LS.DEV_MODE);try%7Bconst%20t=await%20g(e);if(!t.length)return;localStorage.setItem(s.LS.VERSION_CACHE,JSON.stringify(%7Btimestamp:Date.now(),devMode:e,versions:t%7D));const%20n=t%5B0%5D.tag;if(!(0,o.U4)(n,%22v1.6.25%22))return;const%20a=document.querySelector(%22.header-left%20h1%22);if(a%26%26!a.querySelector(%22.update-icon%22))%7Bconst%20e=document.createElement(%22a%22);e.className=%22update-icon%22,e.href=t%5B0%5D.url,e.target=%22_blank%22,e.innerHTML=%22%F0%9F%86%95%22,e.title=%60Update:%20%24%7Bn%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,a.appendChild(e)%7D%7Dcatch(e)%7Bconsole.warn(%22%5BKantine%5D%20Version%20check%20failed:%22,e)%7D%7Dfunction%20h()%7Bconst%20e=document.getElementById(%22version-modal%22),t=document.getElementById(%22version-list-container%22),n=document.getElementById(%22dev-mode-toggle%22),a=%22v1.6.25%22;if(!e)return;e.classList.remove(%22hidden%22);const%20i=document.getElementById(%22version-current%22);i%26%26(i.textContent=a);const%20r=%22true%22===localStorage.getItem(s.LS.DEV_MODE);async%20function%20l(e)%7Bconst%20i=n.checked;function%20r(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=(0,o.U4)(e.tag,a),i=document.createElement(%22li%22);i.className=%22version-item%22+(t%3F%22%20current%22:%22%22);let%20r=%22%22;t%3Fr=%27%3Cspan%20class=%22badge-current%22%3E%E2%9C%93%20Installiert%3C/span%3E%27:s%26%26(r=%27%3Cspan%20class=%22badge-new%22%3E%E2%AC%86%20Neu!%3C/span%3E%27);let%20l=%22%22;t%7C%7C(l=%60%3Ca%20href=%22%24%7B(0,o.ZD)(e.url)%7D%22%20target=%22_blank%22%20class=%22install-link%22%20title=%22%24%7B(0,o.ZD)(e.tag)%7D%20installieren%22%3EInstallieren%3C/a%3E%60),i.innerHTML=%60%5Cn%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%3Cstrong%3E%24%7B(0,o.ZD)(e.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%24%7Br%7D%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%24%7Bl%7D%5Cn%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%20%60,n.appendChild(i)%7D)%7Dt.innerHTML=%27%3Cp%20style=%22color:var(--text-secondary);%22%3ELade%20Versionen...%3C/p%3E%27;try%7Bconst%20e=localStorage.getItem(s.LS.VERSION_CACHE);let%20t=null;if(e)try%7Bt=JSON.parse(e)%7Dcatch(e)%7B%7Dt%26%26t.devMode===i%26%26t.versions%26%26r(t.versions);const%20n=await%20g(i),a=JSON.stringify(n);a!==(t%3FJSON.stringify(t.versions):%22%22)%26%26(localStorage.setItem(s.LS.VERSION_CACHE,JSON.stringify(%7Btimestamp:Date.now(),devMode:i,versions:n%7D)),r(n))%7Dcatch(e)%7Bt.innerHTML=%60%3Cp%20style=%22color:%23e94560;%22%3EFehler:%20%24%7B(0,o.ZD)(e.message)%7D%3C/p%3E%60%7D%7Dn.checked=r,l(),n.onchange=()=%3E%7BlocalStorage.setItem(s.LS.DEV_MODE,n.checked),localStorage.removeItem(s.LS.VERSION_CACHE),l()%7D%7Dfunction%20p()%7Bif(!a.gX%7C%7C!a.Ny)return%20void%20f();const%20e=new%20Date,t=e.getDay();if(0===t%7C%7C6===t)return%20void%20f();const%20n=e.toISOString().split(%22T%22)%5B0%5D;let%20o=!1;for(const%20e%20of%20a.L.keys())if(e.startsWith(n))%7Bo=!0;break%7Dif(o)return%20void%20f();const%20s=new%20Date;s.setHours(10,0,0,0);const%20i=s-e;if(i%3C=0)return%20void%20f();const%20r=Math.floor(i/36e5),d=Math.floor(i%2536e5/6e4),c=document.querySelector(%22.header-center-wrapper%22);if(!c)return;let%20u=document.getElementById(%22order-countdown%22);if(u%7C%7C(u=document.createElement(%22div%22),u.id=%22order-countdown%22,c.insertBefore(u,c.firstChild)),u.innerHTML=%60%3Cspan%3E%24%7B(0,l.t)(%22orderDeadline%22)%7D:%3C/span%3E%20%3Cstrong%3E%24%7Br%7Dh%20%24%7Bd%7Dm%3C/strong%3E%60,i%3C36e5)%7Bu.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%20u.classList.remove(%22urgent%22)%7Dfunction%20f()%7Bconst%20e=document.getElementById(%22order-countdown%22);e%26%26e.remove()%7Dfunction%20v(e,t,n,a)%7Bconst%20s=%22error-modal%22;let%20i=document.getElementById(s);i%26%26i.remove(),i=document.createElement(%22div%22),i.id=s,i.className=%22modal%20hidden%22,i.innerHTML=%60%5Cn%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%3Cdiv%20class=%22modal-header%22%3E%5Cn%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%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%24%7B(0,o.ZD)(e)%7D%5Cn%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%3C/div%3E%5Cn%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%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%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%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%20background-color:%20var(--accent-color);%5Cn%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;%5Cn%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;%5Cn%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;%5Cn%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;%5Cn%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;%5Cn%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%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%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%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%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%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%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%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%24%7B(0,o.ZD)(n)%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%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%3C/button%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%3C/div%3E%5Cn%20%20%20%20%60,document.body.appendChild(i),document.getElementById(%22btn-error-redirect%22).addEventListener(%22click%22,()=%3E%7Bwindow.location.href=a%7D),requestAnimationFrame(()=%3E%7Bi.classList.remove(%22hidden%22)%7D)%7Dfunction%20y()%7Bconst%20e=document.getElementById(%22alarm-bell%22),t=document.getElementById(%22alarm-bell-icon%22);if(!e%7C%7C!t)return;if(0===a.BY.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%20a.p_)if(e.days)%7Bfor(const%20t%20of%20e.days)if(t.items)%7Bfor(const%20e%20of%20t.items)if(e.available%26%26a.BY.has(e.id))%7Bn=!0;break%7Dif(n)break%7Dif(n)break%7Dconst%20i=localStorage.getItem(s.LS.LAST_CHECKED),r=localStorage.getItem(s.LS.FLAGGED_LAST_CHECKED);let%20d=0;i%26%26(d=Math.max(d,new%20Date(i).getTime())),r%26%26(d=Math.max(d,new%20Date(r).getTime()));let%20c=%22gerade%20eben%22;if(0===d)%7Bconst%20e=(new%20Date).toISOString();localStorage.setItem(s.LS.LAST_CHECKED,e),d=new%20Date(e).getTime()%7Dc=(0,o.gs)(new%20Date(d)),e.title=%60%24%7B(0,l.t)(%22alarmLastChecked%22)%7D:%20%24%7Bc%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)%7DsetInterval(p,6e4),setTimeout(p,1e3)%7D,413(e,t,n)%7Bn.d(t,%7BAo:()=%3Es,FS:()=%3Ei,PC:()=%3Eg,U4:()=%3El,ZD:()=%3Er,gs:()=%3Ed,sg:()=%3Em,sn:()=%3Eo%7D);var%20a=n(901);function%20o(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%20s(e)%7Bconst%20t=new%20Date(e.getTime());return%20t.setDate(t.getDate()+3-(t.getDay()+6)%257),t.getFullYear()%7Dfunction%20i(e)%7Bif(%22en%22===a.Kl)return%20e;return%7BMonday:%22Montag%22,Tuesday:%22Dienstag%22,Wednesday:%22Mittwoch%22,Thursday:%22Donnerstag%22,Friday:%22Freitag%22,Saturday:%22Samstag%22,Sunday:%22Sonntag%22%7D%5Be%5D%7C%7Ce%7Dfunction%20r(e)%7Bconst%20t=document.createElement(%22div%22);return%20t.textContent=e%7C%7C%22%22,t.innerHTML%7Dfunction%20l(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%7Dfunction%20d(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%7Dconst%20c=%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,u=%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%20g(e)%7Bif(%22all%22===a.Kl)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);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%20o=0,s=0;c.includes(a)%3Fo=a.length:c.forEach(e=%3E%7Ba.includes(e)%26%26e.length%3Eo%26%26(o=e.length)%7D),u.includes(a)%3Fs=a.length:u.forEach(e=%3E%7Ba.includes(e)%26%26e.length%3Es%26%26(s=e.length)%7D),o%3E0%26%26(t+=o/a.length),s%3E0%26%26(n+=s/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,o=-9999;for(let%20e=1;e%3Ct.length;e++)%7Bconst%20s=t.slice(0,e),i=t.slice(e),r=n(s),l=n(i),d=i%5B0%5D;let%20c=0;/%5E%5BA-Z%C3%84%C3%96%C3%9C%5D/.test(d)%26%26(c=1);const%20u=r.en-r.de+(l.de-l.en)+c,g=r.en%3Er.de%7C%7Cr.en%3E0,m=l.de+c%3El.en;g%26%26m%26%26u%3Eo%26%26(o=u,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%7Dt.startsWith(%22%E2%80%A2%20%22)%7C%7C(t=%22%E2%80%A2%20%22+t);const%20o=/(.%2A%3F)(%3F:%5C(%7C(%3F:%5C/%7C%5Cs%7C%5E))(%5BA-Z,%5D+)%5C)%5Cs%2A(%3F!%5Cs%2A%5B/%5D)/g;let%20s;const%20i=%5B%5D;let%20r=0;for(;null!==(s=o.exec(e));)s.index%3Er%26%26i.push(e.substring(r,s.index).trim()),i.push(s%5B0%5D.trim()),r=o.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,d=%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,o=%22%22,s=%22%22;t%26%26(n=t%5B1%5D.trim(),s=t%5B2%5D,o=%60%20(%24%7Bs%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+o),d.push(n.enPart+o);const%20t=n.nextDe+o;l.push(t),d.push(t)%7Delse%7Bconst%20n=t+o,a=e.includes(o.trim())%3Fe:e+o;l.push(a),d.push(n)%7D%7Delse%7Bconst%20e=a(n);e.nextDe%3F(d.push(e.enPart+o),l.push(e.nextDe+o)):(l.push(n+o),d.push(n+o))%7D%7Dlet%20g=l.join(%22%5Cn%E2%80%A2%20%22);l.length%3E0%26%26!g.startsWith(%22%E2%80%A2%20%22)%26%26(g=%22%E2%80%A2%20%22+g);let%20m=d.join(%22%5Cn%E2%80%A2%20%22);return%20d.length%3E0%26%26!m.startsWith(%22%E2%80%A2%20%22)%26%26(m=%22%E2%80%A2%20%22+m),%7Bde:g,en:m,raw:t%7D%7D(e);return%22en%22===a.Kl%3Ft.en%7C%7Ct.raw:t.de%7C%7Ct.raw%7Dfunction%20m(e,t)%7Blet%20n;return%20function(...a)%7BclearTimeout(n),n=setTimeout(()=%3E%7BclearTimeout(n),e(...a)%7D,t)%7D%7D%7D%7D,t=%7B%7D;function%20n(a)%7Bvar%20o=t%5Ba%5D;if(void%200!==o)return%20o.exports;var%20s=t%5Ba%5D=%7Bexports:%7B%7D%7D;return%20e%5Ba%5D(s,s.exports,n),s.exports%7Dn.d=(e,t)=%3E%7Bfor(var%20a%20in%20t)n.o(t,a)%26%26!n.o(e,a)%26%26Object.defineProperty(e,a,%7Benumerable:!0,get:t%5Ba%5D%7D)%7D,n.o=(e,t)=%3EObject.prototype.hasOwnProperty.call(e,t);var%20a=n(901);var%20o=n(367),s=n(842),i=n(521),r=n(672),l=n(646),d=n(413);if(!window.__KANTINE_LOADED)%7Bwindow.__KANTINE_LOADED=!0,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)%7Dconst%20t=%60%5Cn%20%20%20%20%3Cdiv%20id=%22kantine-wrapper%22%3E%5Cn%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%3Cdiv%20class=%22header-content%22%3E%5Cn%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%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%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%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.25%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%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%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=%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%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%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%3C/div%3E%5Cn%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%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%3C/button%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=%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%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%3C/div%3E%5Cn%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%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%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%3C/button%3E%5Cn%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%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%3C/button%3E%5Cn%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%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%3C/button%3E%5Cn%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%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%3C/button%3E%5Cn%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-dropdown%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%3Cbutton%20id=%22btn-lang-toggle%22%20class=%22icon-btn%22%20aria-label=%22Sprache%20w%C3%A4hlen%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%3Cspan%20class=%22material-icons-round%22%3Etranslate%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=%22lang-dropdown%22%20class=%22lang-dropdown-menu%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%3Cbutton%20class=%22lang-btn%24%7B%22de%22===a.Kl%3F%22%20active%22:%22%22%7D%22%20data-lang=%22de%22%3E%F0%9F%87%A6%F0%9F%87%B9%20DE%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===a.Kl%3F%22%20active%22:%22%22%7D%22%20data-lang=%22en%22%3E%F0%9F%87%AC%F0%9F%87%A7%20EN%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===a.Kl%3F%22%20active%22:%22%22%7D%22%20data-lang=%22all%22%3E%F0%9F%8C%90%20ALL%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%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%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%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%3C/button%3E%5Cn%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%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%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%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%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%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%3C/header%3E%5Cn%5Cn%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%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%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%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%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%3C/button%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%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%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%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%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%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%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=%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%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%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%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%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%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%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%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%3C/div%3E%5Cn%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%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%3C/div%3E%5Cn%5Cn%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%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%3EMen%C3%BCdaten%20aktualisieren%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%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%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%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%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%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=%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%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%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%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%3C/div%3E%5Cn%5Cn%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%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%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%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%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%3C/button%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=%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%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%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%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%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%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%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%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%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%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%3C/div%3E%5Cn%5Cn%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%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%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%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%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%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%3C/button%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=%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%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%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%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=%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%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%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%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%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%3C/div%3E%5Cn%5Cn%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%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%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%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%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%3C/button%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=%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%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%3Cstrong%3EAktuell:%3C/strong%3E%20%3Cspan%20id=%22version-current%22%3Ev1.6.25%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=%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%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%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%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%3C/label%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%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%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%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%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%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%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%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%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%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%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%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%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%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%3C/div%3E%5Cn%5Cn%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%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%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%3Cspan%20id=%22last-updated-text%22%3EGerade%20aktualisiert%3C/span%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%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%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%3Cp%3ELade%20Men%C3%BCdaten...%3C/p%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%3Cdiv%20id=%22menu-container%22%20class=%22menu-grid%22%3E%3C/div%3E%5Cn%20%20%20%20%20%20%20%20%3C/main%3E%5Cn%5Cn%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%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%3C/footer%3E%5Cn%20%20%20%20%3C/div%3E%60;document.body.innerHTML=t%7D(),function()%7Bconst%20e=document.getElementById(%22btn-this-week%22),t=document.getElementById(%22btn-next-week%22),n=document.getElementById(%22btn-refresh%22),c=document.getElementById(%22theme-toggle%22),u=document.getElementById(%22btn-login-open%22),g=document.getElementById(%22btn-login-close%22),m=document.getElementById(%22btn-logout%22),h=document.getElementById(%22login-form%22),p=document.getElementById(%22login-modal%22),f=document.getElementById(%22btn-highlights%22),v=document.getElementById(%22highlights-modal%22),y=document.getElementById(%22btn-highlights-close%22),b=document.getElementById(%22btn-add-tag%22),w=document.getElementById(%22tag-input%22),E=document.getElementById(%22btn-history%22),A=document.getElementById(%22history-modal%22),k=document.getElementById(%22btn-history-close%22),L=document.getElementById(%22btn-lang-toggle%22),S=document.getElementById(%22lang-dropdown%22);L%26%26S%26%26L.addEventListener(%22click%22,e=%3E%7Be.stopPropagation(),S.classList.toggle(%22hidden%22)%7D),document.querySelectorAll(%22.lang-btn%22).forEach(e=%3E%7Be.addEventListener(%22click%22,()=%3E%7B(0,a.UD)(e.dataset.lang),localStorage.setItem(i.LS.LANG,e.dataset.lang),document.querySelectorAll(%22.lang-btn%22).forEach(e=%3Ee.classList.remove(%22active%22)),e.classList.add(%22active%22),S%26%26S.classList.add(%22hidden%22),function()%7Bconst%20e=document.getElementById(%22btn-this-week%22),t=document.getElementById(%22btn-next-week%22);e%26%26(e.textContent=(0,l.t)(%22thisWeek%22),e.title=(0,l.t)(%22thisWeekTooltip%22)),t%26%26(t.textContent=(0,l.t)(%22nextWeek%22));const%20n=document.querySelector(%22.header-left%20h1%22);if(n)%7Bconst%20e=n.querySelector(%22.version-tag%22),t=n.querySelector(%22.update-icon%22);n.textContent=(0,l.t)(%22appTitle%22)+%22%20%22,e%26%26n.appendChild(e),t%26%26n.appendChild(t)%7Dconst%20o=document.getElementById(%22btn-refresh%22);o%26%26o.setAttribute(%22aria-label%22,(0,l.t)(%22refresh%22)),o%26%26(o.title=(0,l.t)(%22refresh%22));const%20i=document.getElementById(%22btn-history%22);i%26%26i.setAttribute(%22aria-label%22,(0,l.t)(%22history%22)),i%26%26(i.title=(0,l.t)(%22history%22));const%20r=document.getElementById(%22btn-highlights%22);r%26%26r.setAttribute(%22aria-label%22,(0,l.t)(%22highlights%22)),r%26%26(r.title=(0,l.t)(%22highlights%22));const%20d=document.getElementById(%22theme-toggle%22);d%26%26(d.title=(0,l.t)(%22themeTooltip%22));const%20c=document.getElementById(%22btn-login-open%22);if(c)%7Bc.title=(0,l.t)(%22loginTooltip%22);const%20e=c.querySelector(%22span:last-child%22);e%26%26!e.classList.contains(%22material-icons-round%22)%26%26(e.textContent=(0,l.t)(%22login%22))%7Dconst%20u=document.getElementById(%22btn-logout%22);u%26%26(u.title=(0,l.t)(%22logoutTooltip%22));const%20g=document.getElementById(%22lang-toggle%22);g%26%26(g.title=(0,l.t)(%22langTooltip%22));const%20m=document.querySelector(%22%23highlights-modal%20.modal-header%20h2%22);m%26%26(m.textContent=(0,l.t)(%22highlightsTitle%22));const%20h=document.querySelector(%22%23highlights-modal%20.modal-body%20%3E%20p%22);h%26%26(h.textContent=(0,l.t)(%22highlightsDesc%22));const%20p=document.getElementById(%22tag-input%22);p%26%26(p.placeholder=(0,l.t)(%22tagInputPlaceholder%22),p.title=(0,l.t)(%22tagInputTooltip%22));const%20f=document.getElementById(%22btn-add-tag%22);f%26%26(f.textContent=(0,l.t)(%22addTag%22),f.title=(0,l.t)(%22addTagTooltip%22));const%20v=document.querySelector(%22%23history-modal%20.modal-header%20h2%22);v%26%26(v.textContent=(0,l.t)(%22historyTitle%22));const%20y=document.querySelector(%22%23login-modal%20.modal-header%20h2%22);y%26%26(y.textContent=(0,l.t)(%22loginTitle%22));const%20b=document.getElementById(%22alarm-bell%22);b%26%260===a.BY.size%26%26(b.title=(0,l.t)(%22alarmTooltipNone%22)),(0,s.OR)(),(0,s.gJ)(),(0,s.Mb)()%7D()%7D)%7D),f%26%26f.addEventListener(%22click%22,()=%3E%7B(0,o.Y1)(),v.classList.remove(%22hidden%22)%7D),y%26%26y.addEventListener(%22click%22,()=%3E%7Bv.classList.add(%22hidden%22)%7D),E.addEventListener(%22click%22,()=%3E%7Ba.gX%3F(A.classList.remove(%22hidden%22),(0,o.Aq)()):p.classList.remove(%22hidden%22)%7D),k.addEventListener(%22click%22,()=%3E%7BA.classList.add(%22hidden%22)%7D),window.addEventListener(%22click%22,e=%3E%7Be.target===A%26%26A.classList.add(%22hidden%22),e.target===v%26%26v.classList.add(%22hidden%22),!S%7C%7CS.classList.contains(%22hidden%22)%7C%7Ce.target.closest(%22%23lang-toggle%22)%7C%7CS.classList.add(%22hidden%22)%7D);const%20I=document.querySelector(%22.version-tag%22),C=document.getElementById(%22version-modal%22),B=document.getElementById(%22btn-version-close%22);I%26%26I.addEventListener(%22click%22,e=%3E%7Be.preventDefault(),e.stopPropagation(),(0,s.Gk)()%7D),B%26%26B.addEventListener(%22click%22,()=%3E%7BC.classList.add(%22hidden%22)%7D);const%20T=document.getElementById(%22btn-clear-cache%22);T%26%26T.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===C%26%26C.classList.add(%22hidden%22)%7D),b.addEventListener(%22click%22,()=%3E%7Bconst%20e=w.value;(0,o.oL)(e)%26%26(w.value=%22%22,(0,o.Y1)())%7D),w.addEventListener(%22keypress%22,e=%3E%7B%22Enter%22===e.key%26%26b.click()%7D);const%20D=localStorage.getItem(%22theme%22),O=window.matchMedia(%22(prefers-color-scheme:%20dark)%22).matches,M=c.querySelector(%22.theme-icon%22);%22dark%22===D%7C%7C!D%26%26O%3F(document.documentElement.setAttribute(%22data-theme%22,%22dark%22),M.textContent=%22dark_mode%22):(document.documentElement.setAttribute(%22data-theme%22,%22light%22),M.textContent=%22light_mode%22),c.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),M.textContent=%22dark%22===e%3F%22dark_mode%22:%22light_mode%22%7D),e.addEventListener(%22click%22,()=%3E%7B%22this-week%22!==a.sw%26%26((0,a.qo)(%22this-week%22),e.classList.add(%22active%22),t.classList.remove(%22active%22),(0,s.OR)())%7D),t.addEventListener(%22click%22,()=%3E%7Bt.classList.remove(%22new-week-available%22),%22next-week%22!==a.sw%26%26((0,a.qo)(%22next-week%22),t.classList.add(%22active%22),e.classList.remove(%22active%22),(0,s.OR)())%7D),n.addEventListener(%22click%22,()=%3E%7Ba.gX%3F(0,o.m9)():p.classList.remove(%22hidden%22)%7D);const%20x=document.getElementById(%22alarm-bell%22);x%26%26x.addEventListener(%22click%22,()=%3E%7B(0,o.A0)()%7D),u.addEventListener(%22click%22,()=%3E%7Bp.classList.remove(%22hidden%22),document.getElementById(%22login-error%22).classList.add(%22hidden%22),h.reset()%7D),g.addEventListener(%22click%22,()=%3E%7Bp.classList.add(%22hidden%22)%7D),window.addEventListener(%22click%22,e=%3E%7Be.target===p%26%26p.classList.add(%22hidden%22)%7D),h.addEventListener(%22submit%22,async%20e=%3E%7Be.preventDefault();const%20t=document.getElementById(%22employee-id%22).value.trim(),n=document.getElementById(%22password%22).value,s=document.getElementById(%22login-error%22),l=h.querySelector(%27button%5Btype=%22submit%22%5D%27),d=l.textContent;l.disabled=!0,l.textContent=%22Wird%20eingeloggt...%22;try%7Bconst%20e=%60knapp-%24%7Bt%7D%40bessa.app%60,l=await%20fetch(%60%24%7Bi.tE%7D/auth/login/%60,%7Bmethod:%22POST%22,headers:(0,r.H)(i.f9),body:JSON.stringify(%7Bemail:e,password:n%7D)%7D),d=await%20l.json();if(l.ok)%7B(0,a.O5)(d.key),(0,a.lt)(t),localStorage.setItem(i.LS.AUTH_TOKEN,d.key),localStorage.setItem(i.LS.CURRENT_USER,t);try%7Bconst%20e=await%20fetch(%60%24%7Bi.tE%7D/auth/user/%60,%7Bheaders:(0,r.H)(d.key)%7D);if(e.ok)%7Bconst%20t=await%20e.json();t.first_name%26%26localStorage.setItem(i.LS.FIRST_NAME,t.first_name),t.last_name%26%26localStorage.setItem(i.LS.LAST_NAME,t.last_name)%7D%7Dcatch(e)%7Bconsole.error(%22Failed%20to%20fetch%20user%20info:%22,e)%7D(0,o.i_)(),p.classList.add(%22hidden%22),(0,o.Gb)(),h.reset(),(0,o.g8)(),(0,o.m9)()%7Delse%20s.textContent=d.non_field_errors%3F.%5B0%5D%7C%7Cd.error%7C%7C%22Login%20fehlgeschlagen%22,s.classList.remove(%22hidden%22)%7Dcatch(e)%7Bconsole.error(%22Login%20error:%22,e),s.textContent=%22Ein%20Fehler%20ist%20aufgetreten%22,s.classList.remove(%22hidden%22)%7Dfinally%7Bl.disabled=!1,l.textContent=d%7D%7D),m.addEventListener(%22click%22,()=%3E%7BlocalStorage.removeItem(i.LS.AUTH_TOKEN),localStorage.removeItem(i.LS.CURRENT_USER),localStorage.removeItem(i.LS.FIRST_NAME),localStorage.removeItem(i.LS.LAST_NAME),(0,a.O5)(null),(0,a.lt)(null),(0,a.di)(new%20Map),(0,o.Et)(),(0,o.i_)(),(0,s.OR)()%7D),window.addEventListener(%22resize%22,(0,d.sg)(()=%3E%7Bconst%20e=document.querySelector(%22.days-grid%22);e%26%26(0,s.wy)(e)%7D,150))%7D(),(0,o.i_)(),(0,o.H)();(0,o.KG)()%3F(document.getElementById(%22loading%22).classList.add(%22hidden%22),(0,o.VL)()%7C%7C(0,o.m9)()):(0,o.m9)(),a.gX%26%26(0,o.g8)(),(0,s.Ux)(),setInterval(s.Ux,36e5)%7D%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.25';
|
||
</script>
|
||
</body>
|
||
</html>
|