chore: wipe legacy codebase for complete project restart

This commit is contained in:
leonardo committed 2026-09-16 21:50:39 +00:00
1 parent a90af21a8c
commit e94410f388
11161 files changed
+1628844 -2097

No files matched your search

+1
View File
@@ -0,0 +1 @@
@import"https://fonts.googleapis.com/css2?family=Playfair+Display:ital,wght@0,400..700;1,400..700&family=Plus+Jakarta+Sans:ital,wght@0,300..800;1,300..800&display=swap";*,:before,:after{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }::backdrop{--tw-border-spacing-x: 0;--tw-border-spacing-y: 0;--tw-translate-x: 0;--tw-translate-y: 0;--tw-rotate: 0;--tw-skew-x: 0;--tw-skew-y: 0;--tw-scale-x: 1;--tw-scale-y: 1;--tw-pan-x: ;--tw-pan-y: ;--tw-pinch-zoom: ;--tw-scroll-snap-strictness: proximity;--tw-gradient-from-position: ;--tw-gradient-via-position: ;--tw-gradient-to-position: ;--tw-ordinal: ;--tw-slashed-zero: ;--tw-numeric-figure: ;--tw-numeric-spacing: ;--tw-numeric-fraction: ;--tw-ring-inset: ;--tw-ring-offset-width: 0px;--tw-ring-offset-color: #fff;--tw-ring-color: rgb(59 130 246 / .5);--tw-ring-offset-shadow: 0 0 #0000;--tw-ring-shadow: 0 0 #0000;--tw-shadow: 0 0 #0000;--tw-shadow-colored: 0 0 #0000;--tw-blur: ;--tw-brightness: ;--tw-contrast: ;--tw-grayscale: ;--tw-hue-rotate: ;--tw-invert: ;--tw-saturate: ;--tw-sepia: ;--tw-drop-shadow: ;--tw-backdrop-blur: ;--tw-backdrop-brightness: ;--tw-backdrop-contrast: ;--tw-backdrop-grayscale: ;--tw-backdrop-hue-rotate: ;--tw-backdrop-invert: ;--tw-backdrop-opacity: ;--tw-backdrop-saturate: ;--tw-backdrop-sepia: ;--tw-contain-size: ;--tw-contain-layout: ;--tw-contain-paint: ;--tw-contain-style: }*,:before,:after{box-sizing:border-box;border-width:0;border-style:solid;border-color:#e5e7eb}:before,:after{--tw-content: ""}html,:host{line-height:1.5;-webkit-text-size-adjust:100%;-moz-tab-size:4;-o-tab-size:4;tab-size:4;font-family:Plus Jakarta Sans,Inter,sans-serif;font-feature-settings:normal;font-variation-settings:normal;-webkit-tap-highlight-color:transparent}body{margin:0;line-height:inherit}hr{height:0;color:inherit;border-top-width:1px}abbr:where([title]){-webkit-text-decoration:underline dotted;text-decoration:underline dotted}h1,h2,h3,h4,h5,h6{font-size:inherit;font-weight:inherit}a{color:inherit;text-decoration:inherit}b,strong{font-weight:bolder}code,kbd,samp,pre{font-family:ui-monospace,SFMono-Regular,Menlo,Monaco,Consolas,Liberation Mono,Courier New,monospace;font-feature-settings:normal;font-variation-settings:normal;font-size:1em}small{font-size:80%}sub,sup{font-size:75%;line-height:0;position:relative;vertical-align:baseline}sub{bottom:-.25em}sup{top:-.5em}table{text-indent:0;border-color:inherit;border-collapse:collapse}button,input,optgroup,select,textarea{font-family:inherit;font-feature-settings:inherit;font-variation-settings:inherit;font-size:100%;font-weight:inherit;line-height:inherit;letter-spacing:inherit;color:inherit;margin:0;padding:0}button,select{text-transform:none}button,input:where([type=button]),input:where([type=reset]),input:where([type=submit]){-webkit-appearance:button;background-color:transparent;background-image:none}:-moz-focusring{outline:auto}:-moz-ui-invalid{box-shadow:none}progress{vertical-align:baseline}::-webkit-inner-spin-button,::-webkit-outer-spin-button{height:auto}[type=search]{-webkit-appearance:textfield;outline-offset:-2px}::-webkit-search-decoration{-webkit-appearance:none}::-webkit-file-upload-button{-webkit-appearance:button;font:inherit}summary{display:list-item}blockquote,dl,dd,h1,h2,h3,h4,h5,h6,hr,figure,p,pre{margin:0}fieldset{margin:0;padding:0}legend{padding:0}ol,ul,menu{list-style:none;margin:0;padding:0}dialog{padding:0}textarea{resize:vertical}input::-moz-placeholder,textarea::-moz-placeholder{opacity:1;color:#9ca3af}input::placeholder,textarea::placeholder{opacity:1;color:#9ca3af}button,[role=button]{cursor:pointer}:disabled{cursor:default}img,svg,video,canvas,audio,iframe,embed,object{display:block;vertical-align:middle}img,video{max-width:100%;height:auto}[hidden]:where(:not([hidden=until-found])){display:none}html{font-family:Plus Jakarta Sans,sans-serif;background-color:var(--bg-dark);color:var(--text-main);scroll-behavior:smooth}body{backgrouLine truncated
+1
View File
@@ -0,0 +1 @@
import"./hoisted.jAcVTPu2.js";const o=document.querySelectorAll("#faq-filters button"),l=document.querySelectorAll(".faq-item");o.forEach(e=>{e.addEventListener("click",()=>{const s=e.getAttribute("data-filter");o.forEach(t=>{t.classList.remove("bg-[#C85A32]","text-white"),t.classList.add("bg-white","text-stone-700")}),e.classList.remove("bg-white","text-stone-700"),e.classList.add("bg-[#C85A32]","text-white"),l.forEach(t=>{const c=t.getAttribute("data-category");s==="all"||c===s?t.style.display="block":t.style.display="none"})})});document.querySelectorAll(".faq-toggle").forEach(e=>{e.addEventListener("click",()=>{const s=e.closest(".faq-item");if(!s)return;const t=s.querySelector(".faq-content"),c=s.querySelector(".faq-icon");if(t&&c){const i=t.classList.contains("hidden");t.classList.toggle("hidden"),c.textContent=i?"−":"+"}})});
+19
View File
@@ -0,0 +1,19 @@
import"./hoisted.jAcVTPu2.js";document.addEventListener("DOMContentLoaded",()=>{const p=document.getElementById("res-date");if(p){const e=new Date;e.setDate(e.getDate()+1),p.value=e.toISOString().split("T")[0]}const l=document.getElementById("reservation-form"),y=document.getElementById("res-success"),h=document.getElementById("res-summary-box"),b=document.getElementById("res-whatsapp-btn");l&&l.addEventListener("submit",e=>{e.preventDefault();const t=document.getElementById("res-date").value,n=document.getElementById("res-shift").value,c=document.getElementById("res-time").value,m=document.getElementById("res-guests").value,o=document.getElementById("res-name").value,u=document.getElementById("res-phone").value,g=document.getElementById("res-email").value,s=document.getElementById("res-notes").value;h&&(h.innerHTML=`
<p><strong>Gast:</strong> ${o}</p>
<p><strong>Datum & Zeit:</strong> ${t} um ${c} Uhr (${n})</p>
<p><strong>Personen:</strong> ${m}</p>
<p><strong>Kontakt:</strong> ${u} | ${g}</p>
${s?`<p><strong>Anmerkungen:</strong> ${s}</p>`:""}
`);const v=encodeURIComponent(`Hallo Alessandra, ich möchte einen Tisch in der Trattoria reservieren:
• Name: ${o}
• Datum: ${t} um ${c} Uhr
• Personen: ${m}
• Telefon: ${u}
`+(s?`• Anmerkung: ${s}`:""));b&&(b.href=`https://wa.me/4915207483196?text=${v}`),l.classList.add("hidden"),y&&y.classList.remove("hidden")});const i=document.getElementById("voucher-form"),S=document.querySelectorAll('input[name="delivery_type"]'),r=document.getElementById("address-fields"),f=document.getElementById("voucher-total-display"),E=document.querySelectorAll(".voucher-amount-card"),I=document.querySelectorAll(".voucher-motif-card"),B=document.getElementById("voucher-success"),$=document.getElementById("voucher-summary-box");let d=50,a=0;function L(){const e=d+a;f&&(f.textContent=`${e.toFixed(2).replace(".",",")} €`)}E.forEach(e=>{e.addEventListener("click",()=>{const t=e.querySelector("input");t&&(t.checked=!0,d=parseInt(t.value,10),E.forEach(n=>{n.classList.remove("border-amber-400","bg-amber-500/20","text-amber-300","font-bold"),n.classList.add("border-stone-700","bg-stone-900/80","text-stone-300")}),e.classList.remove("border-stone-700","bg-stone-900/80","text-stone-300"),e.classList.add("border-amber-400","bg-amber-500/20","text-amber-300","font-bold"),L())})}),I.forEach(e=>{e.addEventListener("click",()=>{const t=e.querySelector("input");t&&(t.checked=!0,I.forEach(n=>{n.classList.remove("border-amber-400","bg-amber-500/20"),n.classList.add("border-stone-700","bg-stone-900/80")}),e.classList.remove("border-stone-700","bg-stone-900/80"),e.classList.add("border-amber-400","bg-amber-500/20"))})}),S.forEach(e=>{e.addEventListener("change",()=>{e.value==="post"?(a=5,r&&r.classList.remove("hidden")):(a=0,r&&r.classList.add("hidden")),L()})}),i&&i.addEventListener("submit",e=>{e.preventDefault();const t=document.querySelector('input[name="voucher_motif"]:checked')?.value||"Standard",n=document.querySelector('input[name="delivery_type"]:checked')?.value,c=document.getElementById("v-buyer-name").value,m=document.getElementById("v-buyer-email").value;let o="Abholung vor Ort in der Trattoria (Bäckerstraße 18, Goslar)";if(n==="post"){const u=document.getElementById("v-street-name").value,g=document.getElementById("v-street-addr").value,s=document.getElementById("v-city").value,v=document.getElementById("v-country").value;o=`Postversand (+5,00 €) an: ${u}, ${g}, ${s}, ${v}`}$&&($.innerHTML=`
<p><strong>Gutscheinwert:</strong> ${d},00 €</p>
<p><strong>Motiv:</strong> ${t}</p>
<p><strong>Käufer:</strong> ${c} (${m})</p>
<p><strong>Versandart:</strong> ${o}</p>
<p><strong>Gesamtsumme:</strong> ${(d+a).toFixed(2).replace(".",",")} €</p>
`),i.classList.add("hidden"),B&&B.classList.remove("hidden")})});
+1
View File
@@ -0,0 +1 @@
import"./hoisted.jAcVTPu2.js";document.addEventListener("DOMContentLoaded",()=>{const o=document.querySelectorAll(".filter-btn"),r=document.querySelectorAll(".apartment-item");o.forEach(e=>{e.addEventListener("click",()=>{const s=e.getAttribute("data-category");o.forEach(t=>{t.classList.remove("bg-[#C85A32]","text-white","active"),t.classList.add("bg-white","text-stone-700","border","border-stone-200")}),e.classList.remove("bg-white","text-stone-700","border","border-stone-200"),e.classList.add("bg-[#C85A32]","text-white","active"),r.forEach(t=>{const a=t.getAttribute("data-type");s==="all"||a===s?t.style.display="block":t.style.display="none"})})})});
+73
View File
@@ -0,0 +1,73 @@
import"./hoisted.jAcVTPu2.js";const b=document.querySelectorAll(".admin-tab"),f=document.querySelectorAll(".tab-content");b.forEach(e=>{e.addEventListener("click",()=>{const n=e.getAttribute("data-tab");b.forEach(t=>{t.classList.remove("bg-[#C85A32]","text-white","shadow-sm"),t.classList.add("bg-white","text-stone-700")}),e.classList.remove("bg-white","text-stone-700"),e.classList.add("bg-[#C85A32]","text-white","shadow-sm"),f.forEach(t=>{t.id===`tab-${n}`?t.classList.remove("hidden"):t.classList.add("hidden")})})});let u="",d="",a="";window.openAiDraftModal=function(e,n,t,s,r,o){u=e,d=n,a=t;const i=document.getElementById("ai-modal");document.getElementById("modal-title");const l=document.getElementById("modal-guest-name"),c=document.getElementById("modal-action-type"),g=document.getElementById("modal-details"),m=document.getElementById("ai-draft-textarea");l&&(l.textContent=n),c&&(c.textContent=t==="Confirm"?"Tischbestätigung":"Absage / Alternativtermin"),g&&(g.textContent=`${s} (${r})`),m&&(t==="Confirm"?m.value=`Liebe/r ${n},
herzlichen Dank für Ihre Anfrage! Sehr gerne bestätigen wir Ihren Tisch in der Trattoria da Enzo am ${s} für ${r}.
Ihre Wünsche (${o}) haben wir sehr gerne vermerkt. Wir freuen uns darauf, Sie bei uns in der Bäckerstraße 18 begrüßen zu dürfen und Sie mit kulinarischen Köstlichkeiten aus Sizilien zu verwöhnen!
Herzlichst,
Alessandra & das Casa da Enzo Team`:m.value=`Liebe/r ${n},
vielen Dank für Ihr Interesse an der Trattoria da Enzo. Leider sind für den gewünschten Termin (${s}) bereits alle Tische ausgebucht.
Sehr gerne bieten wir Ihnen eine Alternative an demselben Tag um 21:00 Uhr oder am Folgetag an. Antworten Sie einfach auf diese Nachricht.
Herzliche Grüße,
Alessandra & das Casa da Enzo Team`),i&&i.classList.remove("hidden")};window.closeAiModal=function(){const e=document.getElementById("ai-modal");e&&e.classList.add("hidden")};window.regenerateAiDraft=function(){const e=document.getElementById("ai-draft-textarea");e&&(a==="Confirm"?e.value=`Caro/a ${d},
Benvenuto! Wir freuen uns außerordentlich, Ihnen mitteilen zu können, dass Ihr Tisch am ${new Date().toLocaleDateString("de-DE")} reserviert ist.
Alessandra bereitet bereits die besten Zutaten vor. Bis ganz bald in Goslar!
Saluti festosi,
Enzo & Familie`:e.value=`Liebe/r ${d},
leider lässt unsere Kapazität am gewünschten Abend keine weitere Reservierung zu. Wir möchten Sie jedoch unbedingt bei Ihrem nächsten Goslar-Besuch begrüßen!
Herzliche Grüße,
Trattoria da Enzo`)};window.confirmAndSendDraft=function(){const e=document.getElementById(`res-card-${u}`);e&&e.remove();const n=document.getElementById("processed-res-tbody");if(n){const r=document.createElement("tr"),o=new Date().toLocaleString("de-DE");r.innerHTML=`
<td class="p-3 font-mono font-bold">#RES-${u}</td>
<td class="p-3 font-semibold">${d}</td>
<td class="p-3">Anfrage bearbeitet</td>
<td class="p-3">${a==="Confirm"?"Bestätigt":"Abgelehnt"}</td>
<td class="p-3"><span class="px-2 py-0.5 rounded ${a==="Confirm"?"bg-emerald-100 text-emerald-800":"bg-rose-100 text-rose-800"} font-bold">${a==="Confirm"?"Bestätigt":"Abgelehnt"}</span></td>
<td class="p-3 text-stone-500">ENZO-STAFF-01 (Alessandra) • ${o}</td>
`,n.prepend(r)}const t=document.getElementById("history-log-tbody");if(t){const r=document.createElement("tr"),o=new Date().toLocaleString("de-DE");r.innerHTML=`
<td class="p-3 text-stone-500">${o}</td>
<td class="p-3"><span class="px-2 py-0.5 bg-emerald-100 text-emerald-900 font-bold rounded">Reservierung</span></td>
<td class="p-3 font-bold text-stone-900">Tisch #RES-${u} (${d}) ${a==="Confirm"?"Bestätigt":"Abgelehnt"}</td>
<td class="p-3">ENZO-STAFF-01 (Alessandra Campisi)</td>
<td class="p-3 text-stone-600">KI-Antwort verfasst & per E-Mail/WhatsApp gesendet</td>
`,t.prepend(r)}const s=document.getElementById("pending-badge");if(s){const r=document.querySelectorAll("#reservations-list > div").length;s.textContent=`${r} Neu`}window.closeAiModal(),alert(`E-Mail & Statusmeldung für ${d} erfolgreich versendet!`)};window.saveVacationSettings=function(){const e=document.getElementById("vacation-toggle"),n=document.getElementById("vacation-text-input"),t=document.getElementById("vacation-status-dot"),s=document.getElementById("vacation-status-text");e&&t&&s&&(e.checked?(t.className="w-2.5 h-2.5 rounded-full bg-amber-400 animate-pulse",s.innerHTML='Website Status: <strong class="text-amber-400">Betriebsferien Banner Aktiv</strong>',alert(`Betriebsferien-Banner auf Website aktiviert!
Hinweis: "${n?n.value:""}"`)):(t.className="w-2.5 h-2.5 rounded-full bg-emerald-400",s.innerHTML="Website Status: <strong>Normalbetrieb</strong>",alert("Betriebsferien-Banner deaktiviert.")))};window.restoreMenuVersion=function(){const e=document.getElementById("menu-version-select"),n=document.getElementById("current-menu-version");e&&n&&(n.textContent=e.value+" (Wiederhergestellt)",alert(`Speisekarte erfolgreich auf Version ${e.value} zurückgesetzt!`))};window.translateMenuToEn=function(){alert("KI-Übersetzung abgeschlossen! Alle deutschen Gerichtsbezeichnungen und Beschreibungen besitzen nun ein englisches Pendant.")};window.publishMenu=function(){const e=document.getElementById("history-log-tbody");if(e){const n=document.createElement("tr"),t=new Date().toLocaleString("de-DE");n.innerHTML=`
<td class="p-3 text-stone-500">${t}</td>
<td class="p-3"><span class="px-2 py-0.5 bg-amber-100 text-amber-900 font-bold rounded">Menu</span></td>
<td class="p-3 font-bold text-stone-900">Speisekarte live geschaltet</td>
<td class="p-3">ENZO-STAFF-01 (Alessandra Campisi)</td>
<td class="p-3 text-stone-600">Änderungen auf casa-daenzo.de veröffentlicht</td>
`,e.prepend(n)}alert("🎉 Speisekarte erfolgreich auf der Website veröffentlicht!")};window.aiPolishDish=function(e){const n=e.closest(".p-4");if(!n)return;const t=n.querySelector(".dish-desc");t&&(t.value=t.value+" • Frisch zubereitet mit feinstem Olivenöl aus Sizilien.",alert("Gerichts-Beschreibung verfeinert!"))};window.addDish=function(e){const n=document.getElementById(`category-${e}`);if(!n)return;const t=document.createElement("div");t.className="p-4 rounded-2xl bg-stone-50 border border-stone-200 flex flex-col md:flex-row items-start md:items-center justify-between gap-4",t.innerHTML=`
<div class="space-y-1 flex-1">
<div class="flex items-center gap-2">
<input type="text" value="Neues Gericht" class="dish-title font-serif font-bold text-stone-900 text-base bg-transparent border-b border-stone-300 focus:outline-none focus:border-[#C85A32] w-full max-w-md">
<span class="text-xs font-mono font-bold text-stone-600">14.50 €</span>
</div>
<input type="text" value="Beschreibung der Zutaten und Zubereitung" class="dish-desc text-xs text-stone-600 bg-transparent border-b border-stone-200 focus:outline-none focus:border-[#C85A32] w-full">
<p class="dish-en text-[11px] text-indigo-600 font-medium italic mt-1">EN: New dish description</p>
</div>
<div class="flex items-center gap-2">
<button onclick="aiPolishDish(this)" class="px-3 py-1 rounded-lg bg-amber-100 text-amber-900 text-[11px] font-bold hover:bg-amber-200">✨ KI-Text schärfen</button>
<button onclick="this.closest('.p-4').remove()" class="text-rose-600 text-xs hover:underline">Löschen</button>
</div>
`,n.appendChild(t)};window.triggerVoucherEmail=function(e,n,t){const s=document.getElementById(`track-${e}`),r=s?s.value:"",o=document.getElementById(`vstatus-${e}`);o&&(o.className="px-2 py-0.5 rounded bg-emerald-100 text-emerald-800 font-bold",o.textContent=t==="Postalisch"?"Versendet":"Abholbereit");const i=document.getElementById("history-log-tbody");if(i){const l=document.createElement("tr"),c=new Date().toLocaleString("de-DE");l.innerHTML=`
<td class="p-3 text-stone-500">${c}</td>
<td class="p-3"><span class="px-2 py-0.5 bg-indigo-100 text-indigo-900 font-bold rounded">Gutschein</span></td>
<td class="p-3 font-bold text-stone-900">Gutschein #GUT-2026-${e} ${t==="Postalisch"?"versendet":"bereitgestellt"}</td>
<td class="p-3">ENZO-STAFF-01 (Alessandra Campisi)</td>
<td class="p-3 text-stone-600">${t==="Postalisch"?`DHL Sendungsnr: ${r}`:"Abhol-E-Mail gesendet"}</td>
`,i.prepend(l)}alert(t==="Postalisch"?`E-Mail an ${n} gesendet!
Inhalt: Ihre Gutschein-Bestellung ist auf dem Weg. DHL Sendungsnummer: ${r}`:`E-Mail an ${n} gesendet!
Inhalt: Ihr Gutschein liegt in der Trattoria da Enzo abholbereit.`)};window.addDayOverride=function(){const e=prompt("Datum der Sonderregelung (z.B. 03.10.2026):");if(!e)return;const n=prompt("Anlass / Grund (z.B. Tag der Deutschen Einheit):"),t=prompt("Öffnungszeit / Status (z.B. Durchgehend geöffnet 12:00-23:00 Uhr):"),s=document.getElementById("overrides-tbody");if(s&&e&&n&&t){const r=document.createElement("tr");r.innerHTML=`
<td class="p-3 font-bold">${e}</td>
<td class="p-3">${n}</td>
<td class="p-3"><span class="px-2 py-0.5 rounded bg-amber-100 text-amber-800 font-bold">${t}</span></td>
<td class="p-3"><button onclick="this.closest('tr').remove()" class="text-rose-600 hover:underline">Entfernen</button></td>
`,s.appendChild(r)}};
+12
View File
@@ -0,0 +1,12 @@
function h(){const r=document.getElementById("mobile-menu-btn"),s=document.getElementById("mobile-menu");r&&s&&r.addEventListener("click",()=>{s.classList.toggle("hidden")})}document.addEventListener("DOMContentLoaded",h);document.addEventListener("astro:page-load",h);function p(){const r=document.getElementById("enzino-launcher"),s=document.getElementById("enzino-chat-window"),l=document.getElementById("enzino-close-btn"),c=document.getElementById("enzino-disable-btn"),u=document.getElementById("enzino-form"),o=document.getElementById("enzino-input"),i=document.getElementById("enzino-messages"),d=document.getElementById("enzino-typing"),a=document.getElementById("enzino-widget");if(!r||!s||!l||!i)return;if(sessionStorage.getItem("enzino_disabled")==="true"){a&&(a.style.display="none");return}const g=a?.getAttribute("data-lang")||"de";r.addEventListener("click",()=>{s.classList.remove("hidden"),s.classList.add("flex"),r.classList.add("hidden"),o&&o.focus()}),l.addEventListener("click",()=>{s.classList.add("hidden"),s.classList.remove("flex"),r.classList.remove("hidden")}),c&&c.addEventListener("click",()=>{confirm(g==="de"?"Enzino für diese Browser-Sitzung ausblenden?":"Disable Enzino for this session?")&&(sessionStorage.setItem("enzino_disabled","true"),a&&(a.style.display="none"))}),document.querySelectorAll(".enzino-chip").forEach(n=>{n.addEventListener("click",t=>{const e=t.currentTarget.getAttribute("data-question");e&&m(e)})}),u&&u.addEventListener("submit",n=>{n.preventDefault();const t=o.value.trim();t&&(o.value="",m(t))});function f(n){const t=document.createElement("div");t.className="flex justify-end",t.innerHTML=`
<div class="bg-[#2D5A43] text-[#E6D5C3] p-3 rounded-2xl rounded-tr-none max-w-[85%] leading-relaxed shadow-sm">
${v(n)}
</div>
`,i.appendChild(t),i.scrollTop=i.scrollHeight}function b(n){const t=document.createElement("div");t.className="flex gap-2.5 items-start",t.innerHTML=`
<div class="w-7 h-7 rounded-full bg-[#C85A32]/20 border border-[#C85A32]/40 flex items-center justify-center text-xs shrink-0">
🇮🇹
</div>
<div class="bg-[#2E2A25] border border-[#D4A373]/15 p-3 rounded-2xl rounded-tl-none max-w-[85%] leading-relaxed shadow-sm">
${n}
</div>
`,i.appendChild(t),i.scrollTop=i.scrollHeight}function v(n){return n.replace(/&/g,"&amp;").replace(/</g,"&lt;").replace(/>/g,"&gt;")}function m(n){f(n),d&&d.classList.remove("hidden"),setTimeout(()=>{d&&d.classList.add("hidden");const t=k(n,g);b(t)},700)}function k(n,t){const e=n.toLowerCase();return e.includes("check-in")||e.includes("checkin")||e.includes("anreise")||e.includes("nuki")||e.includes("schlüssel")||e.includes("key")?t==="de"?"<strong>Perfetto!</strong> Der Check-in verläuft 100% kontaktlos und digital. Du erhältst vor deiner Anreise deinen persönlichen Nuki-PIN-Code per WhatsApp oder E-Mail. Check-in ist ab <strong>15:00 Uhr</strong> möglich. Bei Fragen erreichst du Alja direkt über <a href='https://wa.me/4915207483196' target='_blank' class='text-[#D4A373] underline'>WhatsApp (+49 1520 7483196)</a>.":"<strong>Perfetto!</strong> Check-in is 100% digital & contactless. You'll receive your personal Nuki PIN code via WhatsApp or email prior to arrival. Check-in starts at <strong>3:00 PM</strong>. For queries, text Alja directly via <a href='https://wa.me/4915207483196' target='_blank' class='text-[#D4A373] underline'>WhatsApp (+49 1520 7483196)</a>.":e.includes("tisch")||e.includes("trattoria")||e.includes("essen")||e.includes("pasta")||e.includes("reservier")||e.includes("restaurant")||e.includes("speisekarte")?t==="de"?"<strong>Mamma Mia!</strong> In Alessandras Trattoria wartet ehrliche sizilianische Küche auf dich! Öffnungszeiten: Di–So 17:00–22:30 Uhr (Montag Ruhetag). Hotelgäste genießen bevorzugte Tischreservierungen! Für Reservierungen rufe direkt unser Trattoria-Festnetz an: <a href='tel:+49532123456' class='text-[#D4A373] underline'>+49 5321 23456</a>.":"<strong>Mamma Mia!</strong> Honest Sicilian cuisine awaits you at Alessandra's Trattoria! Hours: Tue–Sun 5:00 PM–10:30 PM (Mon closed). Apartment guests get priority table reservations! Call our Trattoria landline: <a href='tel:+49532123456' class='text-[#D4A373] underline'>+49 5321 23456</a>.":e.includes("bestpreis")||e.includes("preis")||e.includes("rabatt")||e.includes("booking")||e.includes("direkt")?t==="de"?"<strong>Bellissimo!</strong> Wenn du direkt auf unserer Website buchst, sparst du dir <strong>15% OTA-Gebühren</strong> gegenüber Booking.com oder Airbnb. Wir garantieren dir den besten verfügbaren Preis!":"<strong>Bellissimo!</strong> Booking directly on our website saves you <strong>15% in OTA commissions</strong> compared to Booking.com or Airbnb. We guarantee the best available rate!":e.includes("eviivo")||e.includes("gästebuch")||e.includes("guest")||e.includes("directory")||e.includes("mappe")?t==="de"?"<strong>Prego!</strong> In unserem <a href='https://casa-daenzo.de/eviivo-guest' target='_blank' class='text-[#D4A373] underline'>Eviivo Digital Guest Directory</a> findest du alle Details zu deinem Aufenthalt, WLAN-Passwort und Tipps für Goslar. Logge dich einfach mit deiner Buchungsnummer und deinem Nachnamen ein!":"<strong>Prego!</strong> In our <a href='https://casa-daenzo.de/eviivo-guest' target='_blank' class='text-[#D4A373] underline'>Eviivo Digital Guest Directory</a> you'll find all details about your stay, Wi-Fi password, and local tips. Simply log in with your booking number and last name!":e.includes("kontakt")||e.includes("telefon")||e.includes("nummer")||e.includes("whatsapp")||e.includes("anja")||e.includes("alja")?t==="de"?"<strong>Hier ist unsere Kontakttrennung:</strong><br/>• <strong>Apartments & Buchungen:</strong> Alja per <a href='https://wa.me/4915207483196' target='_blank' class='text-[#D4A373] underline'>WhatsApp (+49 1520 7483196)</a><br/>• <strong>Trattoria & Tische:</strong> Festnetz <a href='tel:+49532123456' class='text-[#D4A373] underline'>+49 5321 23456</a>":"<strong>Here is our contact separation:</strong><br/>• <strong>Apartments & Bookings:</strong> Alja via <a href='https://wa.me/4915207483196' target='_blank' class='text-[#D4A373] underline'>WhatsApp (+49 1520 7483196)</a><br/>• <strong>Trattoria & Tables:</strong> Landline <a href='tel:+49532123456' class='text-[#D4A373] underline'>+49 5321 23456</a>":e.includes("parken")||e.includes("parking")||e.includes("auto")||e.includes("garagen")?t==="de"?"<strong>Molto bene!</strong> Zum Ausladen deines Gepäcks kannst du direkt vor das Haus (Bäckerstraße 18) fahren. Öffentliche Parkplätze & das Parkhaus 'Kaiserpassage' liegen nur 2-3 Gehminuten entfernt.":"<strong>Molto bene!</strong> You can stop directly in front of the building (Bäckerstraße 18) to unload luggage. Public parking and 'Kaiserpassage' parking garage are just 2-3 minutes walk away.":t==="de"?"<strong>Grazie für deine Frage!</strong> Bei allen Anliegen zu den Apartments schreib Alja per <a href='https://wa.me/4915207483196' target='_blank' class='text-[#D4A373] underline'>WhatsApp (+49 1520 7483196)</a>. Für Tischreservierungen rufe die Trattoria an (<a href='tel:+49532123456' class='text-[#D4A373] underline'>+49 5321 23456</a>)!" Line truncated