{"id":4724,"date":"2025-10-30T10:10:45","date_gmt":"2025-10-30T09:10:45","guid":{"rendered":"https:\/\/www.kirstin-ellen-vietze.de\/?page_id=4724"},"modified":"2026-07-11T10:08:01","modified_gmt":"2026-07-11T09:08:01","slug":"getraenkebestellung","status":"publish","type":"page","link":"https:\/\/www.kirstin-ellen-vietze.de\/en\/getraenkebestellung\/","title":{"rendered":"Drink order"},"content":{"rendered":"<div class=\"wpb-content-wrapper\" id=\"wpb-content-root\"><div data-vc-full-width=\"true\" data-vc-full-width-temp=\"true\" data-vc-full-width-init=\"false\" data-vc-stretch-content=\"true\" class=\"vc_row wpb_row vc_row-fluid\"><div class=\"wpb_column vc_column_container vc_col-sm-12\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"vc_row wpb_row vc_inner vc_row-fluid\"><div class=\"wpb_column vc_column_container vc_col-sm-12\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\">\n\t<div class=\"wpb_raw_code wpb_raw_html wpb_content_element\" >\n\t\t<div class=\"wpb_wrapper\">\n\t\t\t<!doctype html>\r\n<html lang=\"de\">\r\n<head>\r\n<meta charset=\"utf-8\" \/>\r\n<meta name=\"viewport\" content=\"width=device-width, initial-scale=1\" \/>\r\n<title>Getr\u00e4nkebestellung<\/title>\r\n<style>\r\n  :root{\r\n    --bg:#f7f7fb;\r\n    --card:#ffffff;\r\n    --ink:#14151a;\r\n    --muted:#6b6f76;\r\n    --brand:#1C2342;\r\n    --accent:#E8BD4F;\r\n    --accent-strong:#d8a830;\r\n    --ok:#2e7d32;\r\n    --err:#c62828;\r\n    --soft:#eef0f5;\r\n    --gap-s:10px;\r\n    --gap:12px;\r\n    --gap-l:16px;\r\n    --radius:14px;\r\n  }\r\n\r\n  *,\r\n  *::before,\r\n  *::after{\r\n    box-sizing:border-box;\r\n  }\r\n\r\n  html,body{\r\n    margin:0;\r\n    background:var(--bg);\r\n    color:var(--ink);\r\n    font:500 16px\/1.5 system-ui,-apple-system,\"Segoe UI\",Roboto,Arial,sans-serif;\r\n  }\r\n  html{\r\n    -webkit-text-size-adjust:100%;\r\n    text-size-adjust:100%;\r\n  }\r\n  button,\r\n  input,\r\n  select,\r\n  textarea,\r\n  summary,\r\n  .cat{\r\n    touch-action:manipulation;\r\n  }\r\n\r\n  .wrap{\r\n    max-width:820px;\r\n    margin:auto;\r\n    padding:16px 16px 120px;\r\n  }\r\n\r\n  h1.headline{\r\n    font-size:22px;\r\n    margin:6px 0 4px;\r\n    text-align:center;\r\n    font-weight:700;\r\n  }\r\n  .subline{\r\n    margin:0 0 14px;\r\n    text-align:center;\r\n    font-size:14px;\r\n    color:var(--muted);\r\n  }\r\n  .text-gold{\r\n    color:var(--accent);\r\n    font-weight:700;\r\n  }\r\n\r\n  \/* ===================== STATUS \u2013 Ticket + Stepper + Text ===================== *\/\r\n\r\n  #orderStatus{\r\n    margin:14px 0 10px;\r\n  }\r\n\r\n  .status-card{\r\n    background:var(--card);\r\n    border-radius:16px;\r\n    border:1px solid #e2e5ec;\r\n    padding:12px 14px 14px;\r\n    box-shadow:0 10px 28px rgba(0,0,0,.06);\r\n    font-size:14px;\r\n  }\r\n  .status-card[hidden]{\r\n    display:none !important;\r\n  }\r\n\r\n  .status-combo{\r\n    \/* Marker-Klasse f\u00fcr Status-Design *\/\r\n  }\r\n\r\n  \/* Ticket-Kopf *\/\r\n\r\n  .combo-ticket{\r\n    display:flex;\r\n    align-items:center;\r\n    gap:12px;\r\n    padding:8px 10px;\r\n    border-radius:12px;\r\n    background:linear-gradient(90deg,#f8f9ff,#fefaf2);\r\n    border:1px solid #e6e9f3;\r\n    margin-bottom:10px;\r\n  }\r\n  .combo-ticket__icon{\r\n    width:34px;\r\n    height:34px;\r\n    border-radius:999px;\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    background:#fff;\r\n    box-shadow:0 2px 6px rgba(0,0,0,.06);\r\n    font-size:19px;\r\n    flex-shrink:0;\r\n  }\r\n  .combo-ticket__body{\r\n    flex:1;\r\n    min-width:0;\r\n  }\r\n  .combo-ticket__title{\r\n    font-size:13px;\r\n    font-weight:700;\r\n    margin-bottom:2px;\r\n    white-space:nowrap;\r\n    overflow:hidden;\r\n    text-overflow:ellipsis;\r\n    color:var(--brand);\r\n  }\r\n  .combo-ticket__meta{\r\n    font-size:12px;\r\n    color:var(--muted);\r\n    white-space:nowrap;\r\n    overflow:hidden;\r\n    text-overflow:ellipsis;\r\n  }\r\n  .combo-ticket__tag{\r\n    font-size:11px;\r\n    padding:4px 9px;\r\n    border-radius:999px;\r\n    background:#fff;\r\n    border:1px dashed #e0e3ee;\r\n    color:var(--muted);\r\n    white-space:nowrap;\r\n    flex-shrink:0;\r\n  }\r\n\r\n  \/* Ticket-Farben je Status *\/\r\n\r\n  .status-combo[data-status=\"new\"]        .combo-ticket__icon{background:#fff;}\r\n  .status-combo[data-status=\"seen\"]       .combo-ticket__icon{background:#e3f5e8;}\r\n  .status-combo[data-status=\"delivering\"] .combo-ticket__icon{background:#fff4db;}\r\n  .status-combo[data-status=\"done\"]       .combo-ticket__icon{background:#e2f1ff;}\r\n\r\n  .status-combo[data-status=\"new\"]        .combo-ticket__tag{border-style:dashed;}\r\n  .status-combo[data-status=\"seen\"]       .combo-ticket__tag{border-color:#c8e6c9;}\r\n  .status-combo[data-status=\"delivering\"] .combo-ticket__tag{border-color:#ffe082;}\r\n  .status-combo[data-status=\"done\"]       .combo-ticket__tag{border-color:#bbdefb;}\r\n\r\n  \/* Stepper *\/\r\n\r\n  .combo-stepper{\r\n    position:relative;\r\n    display:grid;\r\n    grid-template-columns:repeat(4,1fr);\r\n    gap:4px;\r\n    margin:2px 0 8px;\r\n    padding-top:6px;\r\n  }\r\n  .combo-stepper::before,\r\n  .combo-stepper::after{\r\n    content:\"\";\r\n    position:absolute;\r\n    left:8%;\r\n    right:8%;\r\n    height:3px;\r\n    top:19px;\r\n    border-radius:999px;\r\n  }\r\n  .combo-stepper::before{\r\n    background:#e0e3ee;\r\n  }\r\n  .combo-stepper::after{\r\n    background:linear-gradient(90deg,var(--accent),var(--accent-strong));\r\n    width:0%;\r\n    transition:width .25s ease-out;\r\n  }\r\n\r\n  .status-combo[data-status=\"new\"]        .combo-stepper::after{width:5%;}\r\n  .status-combo[data-status=\"seen\"]       .combo-stepper::after{width:35%;}\r\n  .status-combo[data-status=\"delivering\"] .combo-stepper::after{width:70%;}\r\n  .status-combo[data-status=\"done\"]       .combo-stepper::after{width:100%;}\r\n\r\n  .cstep{\r\n    position:relative;\r\n    z-index:1;\r\n    text-align:center;\r\n    font-size:11px;\r\n    text-transform:uppercase;\r\n    letter-spacing:.04em;\r\n    color:var(--muted);\r\n  }\r\n  .cstep__dot{\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    width:24px;\r\n    height:24px;\r\n    border-radius:999px;\r\n    border:2px solid #d4d7e6;\r\n    background:#fff;\r\n    margin-bottom:4px;\r\n    font-size:11px;\r\n    font-weight:700;\r\n  }\r\n  .cstep__label{\r\n    display:block;\r\n  }\r\n\r\n  .status-combo[data-status=\"new\"]        .cstep--new        .cstep__dot,\r\n  .status-combo[data-status=\"seen\"]       .cstep--seen       .cstep__dot,\r\n  .status-combo[data-status=\"delivering\"] .cstep--delivering .cstep__dot,\r\n  .status-combo[data-status=\"done\"]       .cstep--done       .cstep__dot{\r\n    border-color:var(--accent);\r\n    background:var(--accent);\r\n    color:#111;\r\n    animation:statusDotPulse 1.7s ease-in-out infinite;\r\n  }\r\n  .status-combo[data-status=\"done\"] .cstep--done .cstep__dot::before{\r\n    content:\"\u2713\";\r\n    font-size:13px;\r\n  }\r\n\r\n  .status-combo[data-status=\"new\"]        .cstep--new,\r\n  .status-combo[data-status=\"seen\"]       .cstep--seen,\r\n  .status-combo[data-status=\"delivering\"] .cstep--delivering,\r\n  .status-combo[data-status=\"done\"]       .cstep--done{\r\n    color:var(--brand);\r\n    font-weight:700;\r\n  }\r\n\r\n  @keyframes statusDotPulse{\r\n    0%,100%{box-shadow:0 0 0 0 rgba(232,189,79,.34);}\r\n    50%{box-shadow:0 0 0 8px rgba(232,189,79,0);}\r\n  }\r\n  @keyframes statusCardEnter{\r\n    from{opacity:0; transform:translateY(-8px);}\r\n    to{opacity:1; transform:translateY(0);}\r\n  }\r\n  .status-card.status-new,\r\n  .status-card.status-seen,\r\n  .status-card.status-delivering,\r\n  .status-card.status-done{\r\n    animation:statusCardEnter .24s ease-out;\r\n  }\r\n  .status-combo[data-status=\"delivering\"] .copy-icon{\r\n    animation:statusWalk 1.2s ease-in-out infinite;\r\n  }\r\n  @keyframes statusWalk{\r\n    0%,100%{transform:translateX(0);}\r\n    50%{transform:translateX(4px);}\r\n  }\r\n  .status-combo[data-status=\"done\"] .copy-icon{\r\n    animation:statusSpark .7s ease-out both;\r\n  }\r\n  @keyframes statusSpark{\r\n    0%{transform:scale(.9) rotate(-8deg);}\r\n    45%{transform:scale(1.2) rotate(8deg);}\r\n    100%{transform:scale(1) rotate(0);}\r\n  }\r\n\r\n  \/* Status-Text *\/\r\n\r\n  .status-copy{\r\n    margin-top:6px;\r\n    padding-top:6px;\r\n    border-top:1px dashed #eceffa;\r\n  }\r\n  .copy-headline{\r\n    font-weight:700;\r\n    margin:0 0 2px;\r\n    color:var(--brand);\r\n    display:flex;\r\n    gap:6px;\r\n    align-items:center;\r\n    font-size:13px;\r\n  }\r\n  .copy-icon{\r\n    font-size:18px;\r\n  }\r\n  .copy-subline{\r\n    font-size:13px;\r\n    color:var(--muted);\r\n    margin:0;\r\n  }\r\n\r\n  @media (max-width:480px){\r\n    .status-card{\r\n      padding:10px 10px 12px;\r\n    }\r\n    .combo-ticket{\r\n      flex-direction:row;\r\n      align-items:flex-start;\r\n      gap:10px;\r\n    }\r\n    .combo-ticket__meta{\r\n      white-space:normal;\r\n    }\r\n    .cstep__label{\r\n      font-size:10px;\r\n    }\r\n  }\r\n\r\n  \/* ===================== Formfelder ===================== *\/\r\n\r\n  .field{margin:12px 0;}\r\n  .field-error{\r\n    display:none;\r\n    margin-top:6px;\r\n    color:var(--err);\r\n    font-size:13px;\r\n    font-weight:700;\r\n  }\r\n  .field-error.show{\r\n    display:block;\r\n  }\r\n  .label{\r\n    font-weight:700;\r\n    margin-bottom:6px;\r\n    display:block;\r\n    font-size:14px;\r\n  }\r\n  .label .text-gold{margin-right:4px;}\r\n  .recommend-note{\r\n    display:inline-flex;\r\n    align-items:center;\r\n    gap:6px;\r\n    margin-top:7px;\r\n    border:1px solid rgba(200,155,60,.55);\r\n    background:#fff8e7;\r\n    color:#6b4a00;\r\n    border-radius:7px;\r\n    padding:6px 8px;\r\n    font-size:12px;\r\n    font-weight:800;\r\n  }\r\n  input[type=\"text\"], select, textarea{\r\n    width:100%;\r\n    box-sizing:border-box;\r\n    border:1.5px solid #e2e5ec;\r\n    background:#fff;\r\n    border-radius:12px;\r\n    padding:12px 13px;\r\n    font:inherit;\r\n    font-size:16px;\r\n  }\r\n\r\n  \/* Namensfeld \u2013 leichte Wackel-Animation, solange leer *\/\r\n  @keyframes nameWiggle{\r\n    0%, 80%, 100% { transform:translateX(0); }\r\n    85% { transform:translateX(-2px); }\r\n    90% { transform:translateX(2px); }\r\n    95% { transform:translateX(-1px); }\r\n  }\r\n  .field-name input.name-attn:not(:focus){\r\n    animation:nameWiggle 3s infinite;\r\n    box-shadow:0 0 0 1px rgba(232,189,79,.7);\r\n  }\r\n\r\n  .wine-ticker{\r\n    box-sizing:border-box;\r\n    width:100%;\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:space-between;\r\n    gap:14px;\r\n    margin:12px 0 14px;\r\n    padding:13px 14px;\r\n    border:1px solid rgba(232,189,79,.55);\r\n    border-radius:16px;\r\n    overflow:hidden;\r\n    background:linear-gradient(135deg,#fffdf7 0%,#fff7df 54%,#f7ead0 100%);\r\n    color:#171922;\r\n    box-shadow:0 8px 22px rgba(20,21,26,.08);\r\n    cursor:pointer;\r\n    text-align:left;\r\n  }\r\n  .wine-ticker:hover{\r\n    border-color:rgba(216,168,48,.9);\r\n    box-shadow:0 10px 28px rgba(20,21,26,.11);\r\n  }\r\n  .wine-ticker__content{\r\n    min-width:0;\r\n  }\r\n  .wine-ticker__eyebrow{\r\n    display:flex;\r\n    align-items:center;\r\n    gap:8px;\r\n    margin-bottom:3px;\r\n    color:#7a5a12;\r\n    font-size:11px;\r\n    font-weight:900;\r\n    text-transform:uppercase;\r\n  }\r\n  .wine-ticker__dot{\r\n    width:6px;\r\n    height:6px;\r\n    border-radius:999px;\r\n    background:var(--accent);\r\n    box-shadow:0 0 0 4px rgba(232,189,79,.18);\r\n  }\r\n  .wine-ticker__title{\r\n    display:block;\r\n    color:#15171d;\r\n    font-size:15px;\r\n    font-weight:900;\r\n    line-height:1.25;\r\n    overflow-wrap:anywhere;\r\n  }\r\n  .wine-ticker__sub{\r\n    display:block;\r\n    margin-top:2px;\r\n    color:#5f6470;\r\n    font-size:12px;\r\n    font-weight:700;\r\n    line-height:1.3;\r\n    overflow-wrap:anywhere;\r\n  }\r\n  .wine-ticker__arrow{\r\n    flex:0 0 auto;\r\n    width:34px;\r\n    height:34px;\r\n    border-radius:999px;\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    background:#1C2342;\r\n    color:#fff;\r\n    font-size:18px;\r\n    font-weight:900;\r\n    transition:transform .16s ease;\r\n  }\r\n  .wine-ticker:hover .wine-ticker__arrow{\r\n    transform:translateX(2px);\r\n  }\r\n  @media (max-width:430px){\r\n    .wine-ticker{\r\n      padding:12px;\r\n      gap:10px;\r\n    }\r\n    .wine-ticker__title{\r\n      font-size:14px;\r\n    }\r\n    .wine-ticker__arrow{\r\n      width:30px;\r\n      height:30px;\r\n      font-size:16px;\r\n    }\r\n  }\r\n  .list-section.is-targeted{\r\n    color:#111;\r\n  }\r\n  .list-section.is-targeted::after{\r\n    background:var(--accent);\r\n  }\r\n\r\n  \/* ===================== Woechentliche Empfehlungen ===================== *\/\r\n\r\n  .weekly-picks{\r\n    margin:16px 0 18px;\r\n  }\r\n  .weekly-picks__head{\r\n    display:flex;\r\n    align-items:end;\r\n    justify-content:space-between;\r\n    gap:12px;\r\n    margin-bottom:10px;\r\n  }\r\n  .weekly-picks__eyebrow{\r\n    display:block;\r\n    color:var(--accent-strong);\r\n    font-size:11px;\r\n    font-weight:800;\r\n    letter-spacing:.06em;\r\n    text-transform:uppercase;\r\n  }\r\n  .weekly-picks__title{\r\n    margin:1px 0 0;\r\n    font-size:18px;\r\n    line-height:1.2;\r\n  }\r\n  .weekly-picks__grid{\r\n    display:grid;\r\n    grid-template-columns:repeat(2,minmax(0,1fr));\r\n    gap:10px;\r\n  }\r\n  .weekly-pick{\r\n    overflow:hidden;\r\n    border:1px solid #e5dfd1;\r\n    border-radius:16px;\r\n    background:var(--card);\r\n    box-shadow:0 6px 18px rgba(20,21,26,.07);\r\n  }\r\n  .weekly-pick__image{\r\n    position:relative;\r\n    aspect-ratio:4\/3;\r\n    overflow:hidden;\r\n    background:#eef0f5;\r\n  }\r\n  .weekly-pick__image img{\r\n    width:100%;\r\n    height:100%;\r\n    display:block;\r\n    object-fit:cover;\r\n  }\r\n  .weekly-pick__badge{\r\n    position:absolute;\r\n    top:8px;\r\n    left:8px;\r\n    max-width:calc(100% - 16px);\r\n    padding:4px 8px;\r\n    border-radius:999px;\r\n    background:rgba(17,22,42,.88);\r\n    color:#fff;\r\n    font-size:10px;\r\n    font-weight:800;\r\n    line-height:1.15;\r\n  }\r\n  .weekly-pick__body{\r\n    display:grid;\r\n    gap:8px;\r\n    padding:10px;\r\n  }\r\n  .weekly-pick__name{\r\n    min-height:38px;\r\n    font-size:14px;\r\n    font-weight:800;\r\n    line-height:1.3;\r\n  }\r\n  .weekly-pick__bottom{\r\n    display:grid;\r\n    gap:7px;\r\n  }\r\n  .weekly-pick__price{\r\n    min-height:18px;\r\n    color:var(--brand);\r\n    font-size:13px;\r\n    font-weight:800;\r\n  }\r\n  .weekly-pick__add{\r\n    width:100%;\r\n    min-height:44px;\r\n    border:0;\r\n    border-radius:12px;\r\n    background:linear-gradient(135deg,var(--accent),var(--accent-strong));\r\n    color:#151515;\r\n    font:inherit;\r\n    font-size:13px;\r\n    font-weight:800;\r\n    line-height:1.1;\r\n    cursor:pointer;\r\n  }\r\n  .weekly-pick__add.is-added{\r\n    background:#dff3e4;\r\n    color:#176b35;\r\n  }\r\n  .weekly-picks[hidden]{display:none !important;}\r\n\r\n  @media (max-width:350px){\r\n    .weekly-picks__grid{grid-template-columns:1fr;}\r\n    .weekly-pick__name{min-height:0;}\r\n  }\r\n\r\n  \/* ===================== Kategorien ===================== *\/\r\n\r\n  .grid-cat{\r\n    display:grid;\r\n    grid-template-columns:repeat(2,1fr);\r\n    gap:12px;\r\n    margin-top:10px;\r\n  }\r\n  @media (min-width:760px){\r\n    .grid-cat{grid-template-columns:repeat(4,1fr);}\r\n  }\r\n\r\n  .cat{\r\n    position:relative;\r\n    overflow:hidden;\r\n    border-radius:16px;\r\n    background:linear-gradient(135deg,#eef0f5,#dfe3ec);\r\n    color:#fff;\r\n    cursor:pointer;\r\n    border:2px solid transparent;\r\n    box-shadow:0 4px 12px rgba(0,0,0,.18);\r\n    transition:transform .12s ease, box-shadow .12s ease, border-color .12s ease;\r\n  }\r\n  .cat:hover{\r\n    transform:translateY(-1px);\r\n    box-shadow:0 6px 16px rgba(0,0,0,.22);\r\n  }\r\n  .cat:active{\r\n    transform:translateY(0);\r\n    box-shadow:0 3px 8px rgba(0,0,0,.18);\r\n  }\r\n  .cat.disabled{\r\n    opacity:.5;\r\n    pointer-events:none;\r\n    box-shadow:none;\r\n  }\r\n  .cat img{\r\n    width:100%;\r\n    height:160px;\r\n    object-fit:cover;\r\n    display:block;\r\n    background:linear-gradient(135deg,#eef0f5,#dfe3ec);\r\n  }\r\n  .cat .title{\r\n    position:absolute;\r\n    left:10px;\r\n    right:10px;\r\n    bottom:10px;\r\n    font-weight:800;\r\n    text-shadow:0 2px 10px rgba(0,0,0,.45);\r\n  }\r\n  .cat.active{border-color:var(--accent);}\r\n\r\n  \/* Weihnachtsspecial: oben & mittig *\/\r\n  .cat.xmas{grid-column:1\/-1;}\r\n  .cat.xmas .title{\r\n    text-align:center;\r\n    font-size:18px;\r\n  }\r\n\r\n  \/* \"Demn\u00e4chst\"-Label *\/\r\n  .cat .soon{\r\n    position:absolute;\r\n    top:10px;\r\n    right:10px;\r\n    padding:4px 10px;\r\n    border-radius:999px;\r\n    background:rgba(0,0,0,.75);\r\n    font-size:12px;\r\n    font-weight:800;\r\n    text-transform:uppercase;\r\n    letter-spacing:.04em;\r\n  }\r\n  .cat:not(.disabled) .soon{display:none;}\r\n  .cat.disabled .soon{\r\n    display:inline-flex;\r\n    align-items:center;\r\n  }\r\n  .cat.is-hidden{\r\n    display:none;\r\n  }\r\n\r\n  \/* Auf sehr kleinen Handys: 1 Kachel pro Reihe, mehr H\u00f6he *\/\r\n  @media (max-width:420px){\r\n    .grid-cat{\r\n      grid-template-columns:repeat(2,minmax(0,1fr));\r\n      gap:10px;\r\n    }\r\n    .cat img{\r\n      height:128px;\r\n    }\r\n    .cat .title{\r\n      left:8px;\r\n      right:8px;\r\n      bottom:8px;\r\n      font-size:13px;\r\n      line-height:1.15;\r\n    }\r\n  }\r\n\r\n  \/* ===================== Items Popup Overlay ===================== *\/\r\n\r\n  .items-popup{\r\n    position:fixed;\r\n    inset:0;\r\n    background:rgba(0,0,0,.5);\r\n    z-index:2147483000;\r\n    visibility:hidden;\r\n    opacity:0;\r\n    pointer-events:none;\r\n    transition:opacity .3s ease, visibility 0s .3s;\r\n  }\r\n  .items-popup.show{\r\n    visibility:visible;\r\n    opacity:1;\r\n    pointer-events:auto;\r\n    transition:opacity .3s ease, visibility 0s 0s;\r\n  }\r\n\r\n  .items-header{\r\n    position:fixed;\r\n    top:0;\r\n    left:0;\r\n    right:0;\r\n    background:#fff;\r\n    padding:12px 16px;\r\n    border-bottom:1px solid #e2e5ec;\r\n    display:flex;\r\n    align-items:center;\r\n    gap:12px;\r\n    box-shadow:0 2px 8px rgba(0,0,0,.05);\r\n    z-index:2147483600;\r\n    transform:translateY(-100%);\r\n    transition:transform .25s cubic-bezier(0.4, 0, 0.2, 1);\r\n  }\r\n  .items-popup.show .items-header{\r\n    transform:translateY(0);\r\n  }\r\n\r\n  .items-content-wrapper{\r\n    position:fixed;\r\n    top:64px;\r\n    left:0;\r\n    right:0;\r\n    bottom:0;\r\n    background:var(--bg);\r\n    overflow-y:auto;\r\n    -webkit-overflow-scrolling:touch;\r\n    z-index:2147483500;\r\n    transform:translateY(100%);\r\n    transition:transform .25s cubic-bezier(0.4, 0, 0.2, 1);\r\n  }\r\n  .items-popup.show .items-content-wrapper{\r\n    transform:translateY(0);\r\n  }\r\n\r\n  .items-content{\r\n    padding:16px;\r\n  }\r\n\r\n  .back-btn{\r\n    background:var(--soft);\r\n    border:1px solid #e2e5ec;\r\n    border-radius:999px;\r\n    width:40px;\r\n    height:40px;\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    font-size:20px;\r\n    cursor:pointer;\r\n    flex-shrink:0;\r\n    -webkit-tap-highlight-color:transparent;\r\n    touch-action:manipulation;\r\n    transition:background .12s ease, transform .1s ease, box-shadow .12s ease;\r\n    box-shadow:0 2px 6px rgba(0,0,0,.12);\r\n  }\r\n  .back-btn:hover{background:#e4e7ef;}\r\n  .back-btn:active{\r\n    background:#dfe2e8;\r\n    transform:translateY(1px);\r\n    box-shadow:0 1px 3px rgba(0,0,0,.18);\r\n  }\r\n  .items-header h2{\r\n    margin:0;\r\n    font-size:18px;\r\n    flex:1;\r\n    min-width:0;\r\n    overflow:hidden;\r\n    text-overflow:ellipsis;\r\n    white-space:nowrap;\r\n  }\r\n\r\n  \/* Items *\/\r\n\r\n  .list{\r\n    display:grid;\r\n    grid-template-columns:1fr 1fr;\r\n    gap:12px;\r\n  }\r\n  .list-section{\r\n    grid-column:1 \/ -1;\r\n    display:flex;\r\n    align-items:center;\r\n    gap:10px;\r\n    margin:8px 0 0;\r\n    color:#2b2b2f;\r\n    font-size:13px;\r\n    font-weight:900;\r\n    letter-spacing:0;\r\n  }\r\n  .list-section::after{\r\n    content:\"\";\r\n    height:1px;\r\n    flex:1;\r\n    background:#e2e4ea;\r\n  }\r\n  .list-section:first-child{\r\n    margin-top:0;\r\n  }\r\n  @media (max-width:560px){\r\n    .list{grid-template-columns:1fr;}\r\n  }\r\n\r\n  .card{\r\n    background:#fff;\r\n    border:1px solid #e9e9ec;\r\n    border-radius:var(--radius);\r\n    overflow:hidden;\r\n    box-shadow:0 2px 8px rgba(0,0,0,.06);\r\n    transition:transform .12s ease, box-shadow .12s ease;\r\n    cursor:pointer;\r\n  }\r\n  .card:hover{\r\n    transform:translateY(-1px);\r\n    box-shadow:0 5px 14px rgba(0,0,0,.12);\r\n  }\r\n  .card:active{\r\n    transform:translateY(0);\r\n    box-shadow:0 3px 8px rgba(0,0,0,.1);\r\n  }\r\n  .card.card-added{\r\n    animation:cardAdded .35s ease-out;\r\n  }\r\n  @keyframes cardAdded{\r\n    0%{transform:scale(1);}\r\n    45%{transform:scale(.985);}\r\n    100%{transform:scale(1);}\r\n  }\r\n\r\n  \/* Bild + Overlay (NEU) *\/\r\n  .imgwrap{\r\n    position:relative;\r\n    overflow:hidden;\r\n    aspect-ratio:3\/2;\r\n    background:#eceff5;\r\n  }\r\n  .imgwrap img{\r\n    width:100%;\r\n    height:100%;\r\n    object-fit:cover;\r\n    display:block;\r\n    border-bottom:1px solid #eee;\r\n  }\r\n  .image-badge{\r\n    position:absolute;\r\n    left:10px;\r\n    top:10px;\r\n    z-index:2;\r\n    display:inline-flex;\r\n    align-items:center;\r\n    min-height:26px;\r\n    padding:6px 9px;\r\n    border-radius:999px;\r\n    background:rgba(232,189,79,.95);\r\n    color:#111;\r\n    font-size:12px;\r\n    font-weight:900;\r\n    line-height:1;\r\n    box-shadow:0 6px 16px rgba(0,0,0,.18);\r\n  }\r\n  @media (max-width:560px){\r\n    .imgwrap img{\r\n      height:100%;\r\n      max-height:none;\r\n    }\r\n  }\r\n\r\n  .img-overlay{\r\n    position:absolute;\r\n    inset:0;\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    padding:14px;\r\n    text-align:center;\r\n    background:rgba(0,0,0,.58);\r\n    backdrop-filter:blur(2px);\r\n    -webkit-backdrop-filter:blur(2px);\r\n  }\r\n  .img-overlay__box{\r\n    max-width:92%;\r\n    border:1px solid rgba(232,189,79,.65);\r\n    border-radius:16px;\r\n    padding:12px 12px;\r\n    background:rgba(17,17,17,.35);\r\n    box-shadow:0 10px 26px rgba(0,0,0,.35);\r\n  }\r\n  .img-overlay__title{\r\n    font-weight:900;\r\n    letter-spacing:.02em;\r\n    font-size:14px;\r\n    line-height:1.25;\r\n    color:#fff;\r\n    text-shadow:0 2px 10px rgba(0,0,0,.35);\r\n  }\r\n\r\n  .card.unavailable .imgwrap img{\r\n    filter:grayscale(1) contrast(.95) brightness(.75);\r\n    transform:scale(1.02);\r\n  }\r\n\r\n  .card .info{\r\n    padding:12px;\r\n    font-size:14px;\r\n  }\r\n  .card-main{\r\n    display:flex;\r\n    align-items:flex-start;\r\n    justify-content:space-between;\r\n    gap:12px;\r\n  }\r\n  .card-copy{\r\n    min-width:0;\r\n    flex:1;\r\n  }\r\n  .price-col{\r\n    flex-shrink:0;\r\n    text-align:right;\r\n  }\r\n  .name{\r\n    font-weight:800;\r\n    font-size:15px;\r\n    line-height:1.25;\r\n  }\r\n  .meta{\r\n    color:var(--muted);\r\n    font-size:12px;\r\n    margin-top:2px;\r\n  }\r\n  .price{\r\n    color:var(--brand);\r\n    font-size:14px;\r\n    font-weight:800;\r\n    white-space:nowrap;\r\n  }\r\n  .service-note{\r\n    color:var(--muted);\r\n    font-size:11px;\r\n    margin-top:3px;\r\n    overflow-wrap:anywhere;\r\n  }\r\n  .actions{\r\n    display:flex;\r\n    gap:8px;\r\n    margin-top:10px;\r\n    flex-wrap:wrap;\r\n  }\r\n  .actions .btn-add{\r\n    flex:1;\r\n  }\r\n  .btn-add.is-added{\r\n    background:#2e7d32;\r\n    color:#fff;\r\n  }\r\n  @media (max-width:560px){\r\n    .card{\r\n      border-radius:16px;\r\n    }\r\n    .card .info{\r\n      padding:13px 14px 14px;\r\n    }\r\n    .name{\r\n      font-size:16px;\r\n    }\r\n    .meta{\r\n      font-size:13px;\r\n    }\r\n    .actions{\r\n      margin-top:12px;\r\n    }\r\n    .actions .btn{\r\n      min-height:46px;\r\n    }\r\n    .actions .btn-add{\r\n      font-size:15px;\r\n    }\r\n  }\r\n\r\n  \/* Buttons \u2013 KEV Gold Style *\/\r\n\r\n  .btn{\r\n    display:inline-flex;\r\n    justify-content:center;\r\n    align-items:center;\r\n    gap:8px;\r\n    background:var(--accent-strong);\r\n    color:#14151a;\r\n    border:0;\r\n    border-radius:999px;\r\n    padding:11px 16px;\r\n    font-weight:800;\r\n    font-size:14px;\r\n    cursor:pointer;\r\n    min-height:44px;\r\n    -webkit-tap-highlight-color:transparent;\r\n    box-shadow:0 6px 14px rgba(0,0,0,.14);\r\n    transition:transform .12s ease, box-shadow .12s ease, background .12s ease, filter .12s ease;\r\n  }\r\n  .btn:hover:not(:disabled){\r\n    filter:brightness(1.03);\r\n    box-shadow:0 8px 18px rgba(0,0,0,.18);\r\n  }\r\n  .btn:disabled{\r\n    opacity:.6;\r\n    cursor:not-allowed;\r\n    box-shadow:none;\r\n  }\r\n  .btn:active:not(:disabled){\r\n    transform:translateY(1px) scale(0.98);\r\n    box-shadow:0 3px 8px rgba(0,0,0,.2);\r\n  }\r\n\r\n  .btn.secondary{\r\n    background:#f5f5f9;\r\n    color:#111;\r\n    border:1px solid #e2e5ec;\r\n    box-shadow:none;\r\n  }\r\n  .btn.submit{\r\n    background:var(--accent-strong);\r\n    color:#14151a;\r\n  }\r\n\r\n  .btn.icon{\r\n    padding:8px 10px;\r\n    border-radius:10px;\r\n    min-height:auto;\r\n  }\r\n  .btn.warning{\r\n    background:#ffe6e6;\r\n    color:#7a1f2a;\r\n    border:1px solid #ffd3d3;\r\n    box-shadow:none;\r\n  }\r\n  .btn.ghost{\r\n    background:#fff;\r\n    color:#111;\r\n    border:1px solid #e2e5ec;\r\n    box-shadow:none;\r\n  }\r\n\r\n  \/* Info-Buttons (Marke & Item) *\/\r\n  .btn-info,\r\n  .btn-info-brand{\r\n    font-size:13px;\r\n    padding:6px 12px;\r\n    background:#fff;\r\n    color:var(--brand);\r\n    border-radius:999px;\r\n    border:1px solid var(--accent);\r\n    box-shadow:none;\r\n  }\r\n  .btn-info::before,\r\n  .btn-info-brand::before{\r\n    content:\"i\";\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    width:18px;\r\n    height:18px;\r\n    border-radius:999px;\r\n    border:1px solid var(--accent);\r\n    font-size:11px;\r\n    font-weight:700;\r\n    margin-right:6px;\r\n  }\r\n  .btn-info-brand{\r\n    font-weight:700;\r\n    max-width:100%;\r\n    white-space:normal;\r\n    text-align:left;\r\n    line-height:1.25;\r\n  }\r\n  .brand-info-row{\r\n    margin-top:8px;\r\n  }\r\n  .info-block{\r\n    margin:0;\r\n  }\r\n  .info-block h4{\r\n    margin:14px 0 4px;\r\n    font-size:14px;\r\n    line-height:1.25;\r\n    color:#15171d;\r\n  }\r\n  .info-block h4:first-child{\r\n    margin-top:0;\r\n  }\r\n  .info-block p{\r\n    margin:0 0 10px;\r\n  }\r\n\r\n  .toast{\r\n    margin-top:10px;\r\n    padding:10px 12px;\r\n    border-radius:10px;\r\n    font-weight:600;\r\n    display:none;\r\n  }\r\n  .toast.ok{\r\n    background:#e9f5ec;\r\n    color:var(--ok);\r\n    display:block;\r\n  }\r\n  .toast.err{\r\n    background:#fdecea;\r\n    color:var(--err);\r\n    display:block;\r\n  }\r\n  .note{\r\n    font-size:13px;\r\n    color:var(--muted);\r\n    margin-top:8px;\r\n  }\r\n\r\n  \/* Bottom cart *\/\r\n\r\n  .cartbar{\r\n    position:fixed;\r\n    left:0;\r\n    right:0;\r\n    bottom:0;\r\n    background:#fff;\r\n    border-top:1px solid #e2e5ec;\r\n    box-shadow:0 -8px 24px rgba(0,0,0,.06);\r\n    z-index:100;\r\n    padding-bottom:env(safe-area-inset-bottom,0px);\r\n  }\r\n  .cartbar.cartbar--empty{\r\n    box-shadow:0 -5px 18px rgba(0,0,0,.05);\r\n  }\r\n  .cartwrap{\r\n    max-width:820px;\r\n    margin:auto;\r\n    padding:12px 16px;\r\n    display:grid;\r\n    grid-template-columns:1fr auto;\r\n    gap:12px;\r\n    align-items:center;\r\n  }\r\n  .cartbar.cartbar--empty .cartwrap{\r\n    grid-template-columns:1fr;\r\n  }\r\n  .cartbar.cartbar--empty .cartlist{\r\n    display:none;\r\n  }\r\n  .cartbar.cartbar--empty #sendBtn{\r\n    display:none;\r\n  }\r\n  .cartbar #clearBtn{\r\n    display:none;\r\n  }\r\n  .cartlist{\r\n    display:flex;\r\n    gap:8px;\r\n    overflow:auto;\r\n    padding-bottom:2px;\r\n  }\r\n  .chip{\r\n    display:inline-flex;\r\n    gap:6px;\r\n    align-items:center;\r\n    background:var(--soft);\r\n    border:1px solid #e2e5ec;\r\n    border-radius:999px;\r\n    padding:8px 12px;\r\n    white-space:nowrap;\r\n    font-size:13px;\r\n  }\r\n  .chip .x{\r\n    cursor:pointer;\r\n    font-weight:800;\r\n    padding-left:4px;\r\n  }\r\n  .cartwrap > .submit{\r\n    display:flex;\r\n    gap:8px;\r\n    align-items:center;\r\n    min-width:0;\r\n  }\r\n  .cartwrap > .submit .btn{\r\n    text-align:center;\r\n  }\r\n  .cartbar.cartbar--bump .badge{\r\n    animation:badgeBump .38s ease-out;\r\n  }\r\n  @keyframes badgeBump{\r\n    0%{transform:scale(1);}\r\n    45%{transform:scale(1.26);}\r\n    100%{transform:scale(1);}\r\n  }\r\n  @media (max-width:720px){\r\n    .cartwrap{\r\n      display:block;\r\n    }\r\n    .cartlist{\r\n      display:none;\r\n    }\r\n    .cartwrap > .submit{\r\n      display:grid;\r\n      grid-template-columns:repeat(2,minmax(0,1fr));\r\n      gap:10px;\r\n      width:100%;\r\n      align-items:stretch;\r\n    }\r\n    .cartbar.cartbar--empty .cartwrap > .submit{\r\n      grid-template-columns:1fr;\r\n    }\r\n    #cartOpen{\r\n      width:100%;\r\n      min-width:0;\r\n      padding-left:10px;\r\n      padding-right:10px;\r\n      display:flex;\r\n      align-items:center;\r\n      justify-content:center;\r\n      gap:6px;\r\n    }\r\n    #cartOpen,\r\n    #sendBtn{\r\n      min-height:52px;\r\n      border-radius:10px;\r\n    }\r\n    #cartOpen .badge{\r\n      min-width:0;\r\n      height:auto;\r\n      padding:0;\r\n      border:0;\r\n      background:transparent;\r\n      font-size:17px;\r\n    }\r\n    #sendBtn{\r\n      width:100%;\r\n      min-width:0;\r\n      display:flex;\r\n      justify-content:center;\r\n      align-items:center;\r\n      text-align:center;\r\n      line-height:1.2;\r\n      white-space:nowrap;\r\n      font-size:13px;\r\n      padding-left:10px;\r\n      padding-right:10px;\r\n    }\r\n  }\r\n\r\n  \/* Dialoge *\/\r\n\r\n  dialog{\r\n    border:0;\r\n    border-radius:16px;\r\n    max-width:680px;\r\n    width:clamp(280px,92vw,680px);\r\n    padding:0;\r\n    box-shadow:0 20px 80px rgba(0,0,0,.3);\r\n  }\r\n  dialog::backdrop{\r\n    background:rgba(0,0,0,.4);\r\n  }\r\n  dialog.mobile-sheet::backdrop{\r\n    background:rgba(11,16,35,.46);\r\n  }\r\n  .sheet{\r\n    padding:16px;\r\n    font-size:14px;\r\n  }\r\n  .sheet-handle{\r\n    display:none;\r\n  }\r\n  .sheet h3{\r\n    margin:0 0 12px;\r\n  }\r\n  .row{\r\n    display:grid;\r\n    grid-template-columns:1fr 1fr;\r\n    gap:12px;\r\n  }\r\n  @media (max-width:560px){\r\n    .row{grid-template-columns:1fr;}\r\n  }\r\n  .sheet .btnrow{\r\n    display:flex;\r\n    justify-content:flex-end;\r\n    gap:8px;\r\n    margin-top:12px;\r\n  }\r\n  .tiny{\r\n    font-size:12px;\r\n    color:var(--muted);\r\n    margin-top:6px;\r\n  }\r\n  @media (max-width:640px){\r\n    dialog.mobile-sheet{\r\n      width:100vw;\r\n      max-width:100vw;\r\n      margin:auto 0 0;\r\n      border-radius:20px 20px 0 0;\r\n      max-height:86vh;\r\n      overflow:auto;\r\n      animation:sheetUp .24s cubic-bezier(.2,.8,.2,1);\r\n    }\r\n    dialog.mobile-sheet .sheet{\r\n      padding:12px 16px 16px;\r\n    }\r\n    dialog.mobile-sheet .sheet-handle{\r\n      display:block;\r\n      width:42px;\r\n      height:4px;\r\n      border-radius:999px;\r\n      background:#d9dce5;\r\n      margin:0 auto 12px;\r\n    }\r\n    dialog.mobile-sheet .btnrow{\r\n      position:sticky;\r\n      bottom:0;\r\n      background:#fff;\r\n      padding-top:12px;\r\n      display:grid;\r\n      grid-template-columns:1fr;\r\n    }\r\n    dialog.mobile-sheet .btnrow .btn{\r\n      width:100%;\r\n    }\r\n    @keyframes sheetUp{\r\n      from{transform:translateY(100%);}\r\n      to{transform:translateY(0);}\r\n    }\r\n  }\r\n\r\n  \/* Warenkorb-Dialog *\/\r\n\r\n  .cart-title{\r\n    display:flex;\r\n    justify-content:space-between;\r\n    align-items:center;\r\n  }\r\n  .cart-empty{\r\n    padding:8px 0;\r\n    color:var(--muted);\r\n  }\r\n  .cart-list{\r\n    display:grid;\r\n    gap:10px;\r\n    margin:10px 0;\r\n  }\r\n  .cart-item{\r\n    display:grid;\r\n    grid-template-columns:1fr auto;\r\n    gap:8px;\r\n    align-items:center;\r\n    border:1px solid #e2e5ec;\r\n    background:#fff;\r\n    border-radius:12px;\r\n    padding:10px 12px;\r\n  }\r\n  .cart-item .tt{\r\n    font-weight:800;\r\n  }\r\n  .cart-opts{\r\n    color:var(--muted);\r\n    font-size:13px;\r\n  }\r\n  .qty{\r\n    display:inline-flex;\r\n    align-items:center;\r\n    gap:8px;\r\n  }\r\n  .badge{\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    min-width:26px;\r\n    height:26px;\r\n    border-radius:999px;\r\n    background:#eef0f5;\r\n    border:1px solid #e2e5ec;\r\n    font-weight:800;\r\n  }\r\n\r\n  \/* Avatar-Select (Stylist) *\/\r\n\r\n  .avatar-select-trigger{\r\n    width:100%;\r\n    border:1.5px solid #e2e5ec;\r\n    border-radius:12px;\r\n    background:#fff;\r\n    padding:0;\r\n    color:inherit;\r\n    font:inherit;\r\n    text-align:left;\r\n    cursor:pointer;\r\n  }\r\n  .avatar-select-trigger__summary{\r\n    display:flex;\r\n    align-items:center;\r\n    gap:12px;\r\n    padding:10px 12px;\r\n  }\r\n  .avatar-select-trigger__summary > div{\r\n    min-width:0;\r\n    flex:1;\r\n  }\r\n  .avatar-select-trigger__arrow{\r\n    color:var(--brand);\r\n    font-size:24px;\r\n    font-weight:800;\r\n  }\r\n\r\n  .avatar-select{\r\n    border:1.5px solid #e2e5ec;\r\n    border-radius:12px;\r\n    background:#fff;\r\n    padding:0;\r\n  }\r\n  .avatar-select[open]{\r\n    box-shadow:0 8px 28px rgba(0,0,0,.08);\r\n  }\r\n  .avatar-select summary{\r\n    list-style:none;\r\n    cursor:pointer;\r\n    display:flex;\r\n    align-items:center;\r\n    gap:12px;\r\n    padding:10px 12px;\r\n    border-radius:12px;\r\n  }\r\n  .avatar-select summary::-webkit-details-marker{display:none;}\r\n  .avatar{\r\n    width:80px;\r\n    height:80px;\r\n    border-radius:50%;\r\n    object-fit:cover;\r\n    border:1px solid #e2e5ec;\r\n    background:#fff;\r\n  }\r\n  .avatar-name{\r\n    font-weight:800;\r\n  }\r\n  .avatar-hint{\r\n    color:var(--muted);\r\n    font-size:13px;\r\n  }\r\n  .avatar-grid{\r\n    display:grid;\r\n    grid-template-columns:1fr 1fr;\r\n    gap:10px;\r\n    padding:10px;\r\n    border-top:1px solid #eef0f5;\r\n    max-height:340px;\r\n    overflow:auto;\r\n    background:#fff;\r\n    border-radius:0 0 12px 12px;\r\n  }\r\n  .avatar-option{\r\n    display:flex;\r\n    align-items:center;\r\n    gap:10px;\r\n    padding:8px;\r\n    border:1px solid #e2e5ec;\r\n    background:#fff;\r\n    border-radius:12px;\r\n    cursor:pointer;\r\n  }\r\n  .avatar-option:hover{\r\n    outline:2px solid var(--accent);\r\n  }\r\n  .avatar-option .who{\r\n    font-weight:700;\r\n  }\r\n  .avatar-option .role{\r\n    font-size:12px;\r\n    color:var(--muted);\r\n  }\r\n  @media (max-width:560px){\r\n    .avatar{\r\n      width:64px;\r\n      height:64px;\r\n    }\r\n    .avatar-grid{\r\n      grid-template-columns:1fr;\r\n    }\r\n  }\r\n\r\n  \/* Unverf\u00fcgbar Darstellung *\/\r\n\r\n  .card.unavailable .name{\r\n    text-decoration:line-through;\r\n    color:var(--muted);\r\n  }\r\n  .card.unavailable .btn-add{\r\n    background:var(--soft);\r\n    color:#666;\r\n    border:1px solid #e2e5ec;\r\n    cursor:not-allowed;\r\n    box-shadow:none;\r\n  }\r\n  .tag-off{\r\n    display:inline-block;\r\n    margin-left:8px;\r\n    font-size:12px;\r\n    background:#ffe8e8;\r\n    color:#8a1d1d;\r\n    border:1px solid #ffd4d4;\r\n    border-radius:6px;\r\n    padding:2px 6px;\r\n  }\r\n\r\n  \/* Kategorie-Hinweis *\/\r\n\r\n  .cat-hint{\r\n    background:#fff;\r\n    padding:12px;\r\n    border-radius:12px;\r\n    border:1px solid #e2e5ec;\r\n    font-size:14px;\r\n    color:var(--muted);\r\n    margin-bottom:12px;\r\n  }\r\n\r\n  \/* Desktop: Popup zentriert & schmaler *\/\r\n\r\n  @media (min-width:900px){\r\n    .items-header,\r\n    .items-content-wrapper{\r\n      max-width:720px;\r\n      margin:0 auto;\r\n    }\r\n    .items-header{\r\n      border-radius:16px 16px 0 0;\r\n    }\r\n    .items-content-wrapper{\r\n      border-radius:0 0 16px 16px;\r\n      box-shadow:0 16px 40px rgba(0,0,0,.25);\r\n    }\r\n  }\r\n\r\n  \/* ===================== In-App Status Overlay (Variante B) ===================== *\/\r\n\r\n  .status-overlay{\r\n    position:fixed;\r\n    inset:0;\r\n    background:rgba(11,16,35,.88);\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    padding:20px;\r\n    box-sizing:border-box;\r\n    z-index:2147483900;\r\n  }\r\n  .status-overlay[hidden]{\r\n    display:none;\r\n  }\r\n  .status-overlay-card{\r\n    box-sizing:border-box;\r\n    width:100%;\r\n    max-width:420px;\r\n    background:var(--card);\r\n    border-radius:22px;\r\n    padding:20px 18px 16px;\r\n    box-shadow:0 24px 80px rgba(0,0,0,.55);\r\n    border:1px solid #e2e5ec;\r\n    text-align:center;\r\n    animation:overlayPop .24s ease-out;\r\n  }\r\n  @keyframes overlayPop{\r\n    from{opacity:0; transform:translateY(12px) scale(.98);}\r\n    to{opacity:1; transform:translateY(0) scale(1);}\r\n  }\r\n  .status-overlay-icon{\r\n    font-size:32px;\r\n    margin-bottom:8px;\r\n  }\r\n  .status-overlay-title{\r\n    margin:0 0 6px;\r\n    font-size:20px;\r\n    font-weight:800;\r\n    color:var(--brand);\r\n  }\r\n  .status-overlay-text{\r\n    margin:0 0 14px;\r\n    font-size:14px;\r\n    color:var(--muted);\r\n  }\r\n  .status-overlay .btn{\r\n    width:100%;\r\n    justify-content:center;\r\n  }\r\n\r\n  \/* ===================== Eigene Order-Status-Seite ===================== *\/\r\n\r\n  .order-status-page{\r\n    position:fixed;\r\n    inset:0;\r\n    z-index:2147483800;\r\n    background:linear-gradient(180deg,#fbfcff 0%,#eef1f7 100%);\r\n    display:flex;\r\n    flex-direction:column;\r\n  }\r\n  .order-status-page[hidden]{\r\n    display:none;\r\n  }\r\n  .order-status-page__header{\r\n    background:#fff;\r\n    border-bottom:1px solid #e2e5ec;\r\n    padding:18px 16px 15px;\r\n    box-shadow:0 4px 18px rgba(20,21,26,.06);\r\n  }\r\n  .order-status-page__inner{\r\n    width:100%;\r\n    max-width:820px;\r\n    margin:0 auto;\r\n  }\r\n  .order-status-page__header h2{\r\n    margin:0;\r\n    font-size:21px;\r\n    color:var(--brand);\r\n    display:flex;\r\n    align-items:center;\r\n    justify-content:space-between;\r\n    gap:12px;\r\n  }\r\n  .order-status-page__header h2::after{\r\n    content:\"Live\";\r\n    display:inline-flex;\r\n    align-items:center;\r\n    min-height:26px;\r\n    padding:0 10px;\r\n    border-radius:999px;\r\n    background:#e9f5ec;\r\n    color:var(--ok);\r\n    border:1px solid #cfe8d5;\r\n    font-size:12px;\r\n    font-weight:900;\r\n    letter-spacing:.02em;\r\n  }\r\n  .order-status-page__header p{\r\n    margin:3px 0 0;\r\n    color:var(--muted);\r\n    font-size:14px;\r\n  }\r\n  .order-status-page__summary{\r\n    margin-top:10px;\r\n    padding:10px 12px;\r\n    border:1px solid #e7deca;\r\n    border-radius:14px;\r\n    background:#fff;\r\n    color:var(--brand);\r\n    font-size:13px;\r\n    font-weight:800;\r\n    box-shadow:0 8px 22px rgba(28,35,66,.06);\r\n  }\r\n  .order-status-page__body{\r\n    flex:1;\r\n    overflow:auto;\r\n    padding:18px 16px 112px;\r\n  }\r\n  .order-status-page__body .status-card{\r\n    margin-top:0;\r\n  }\r\n  .order-status-page .status-card{\r\n    padding:16px;\r\n    border-radius:20px;\r\n    border-color:#dde2ec;\r\n    box-shadow:0 18px 48px rgba(20,21,26,.10);\r\n    background:linear-gradient(180deg,#fff 0%,#fbfcff 100%);\r\n  }\r\n  .order-status-page .combo-ticket{\r\n    margin-bottom:18px;\r\n    padding:12px;\r\n    border-radius:16px;\r\n    background:linear-gradient(135deg,#ffffff 0%,#fff8e8 100%);\r\n    border-color:#ebe1c7;\r\n    box-shadow:0 10px 24px rgba(20,21,26,.06);\r\n  }\r\n  .order-status-page .combo-ticket__icon{\r\n    width:42px;\r\n    height:42px;\r\n    font-size:22px;\r\n  }\r\n  .order-status-page .combo-ticket__title{\r\n    font-size:15px;\r\n  }\r\n  .order-status-page .combo-ticket__meta{\r\n    font-size:13px;\r\n  }\r\n  .order-status-page .combo-ticket__tag{\r\n    border-style:solid;\r\n    background:#fff;\r\n    color:var(--brand);\r\n    font-weight:800;\r\n  }\r\n  .status-page-panel .combo-stepper{\r\n    display:grid;\r\n    grid-template-columns:1fr;\r\n    gap:0;\r\n    margin:8px 0 16px;\r\n    padding:4px 0;\r\n  }\r\n  .status-page-panel .combo-stepper::before,\r\n  .status-page-panel .combo-stepper::after{\r\n    left:16px;\r\n    right:auto;\r\n    top:18px;\r\n    bottom:18px;\r\n    width:3px;\r\n    height:auto;\r\n    border-radius:999px;\r\n  }\r\n  .status-page-panel .combo-stepper::before{\r\n    background:#e0e3ee;\r\n  }\r\n  .status-page-panel .combo-stepper::after{\r\n    background:linear-gradient(180deg,var(--accent),var(--accent-strong));\r\n    bottom:auto;\r\n    width:3px !important;\r\n    height:0%;\r\n    transition:height .28s ease-out;\r\n  }\r\n  .status-page-panel.status-combo[data-status=\"new\"]        .combo-stepper::after{width:3px !important; height:5%;}\r\n  .status-page-panel.status-combo[data-status=\"seen\"]       .combo-stepper::after{width:3px !important; height:35%;}\r\n  .status-page-panel.status-combo[data-status=\"delivering\"] .combo-stepper::after{width:3px !important; height:70%;}\r\n  .status-page-panel.status-combo[data-status=\"done\"]       .combo-stepper::after{width:3px !important; height:100%;}\r\n  .status-page-panel .cstep{\r\n    min-height:64px;\r\n    display:grid;\r\n    grid-template-columns:36px 1fr;\r\n    align-items:start;\r\n    gap:12px;\r\n    text-align:left;\r\n    font-size:12px;\r\n    text-transform:none;\r\n    letter-spacing:0;\r\n    padding:8px 10px 8px 0;\r\n    border-radius:14px;\r\n  }\r\n  .status-page-panel .cstep__dot{\r\n    margin:0;\r\n    box-shadow:0 0 0 4px #fff;\r\n  }\r\n  .status-page-panel .cstep__label{\r\n    padding-top:1px;\r\n    font-size:15px;\r\n    font-weight:800;\r\n    color:var(--ink);\r\n  }\r\n  .status-page-panel .cstep__label::after{\r\n    display:block;\r\n    margin-top:2px;\r\n    font-size:12px;\r\n    font-weight:600;\r\n    color:var(--muted);\r\n    line-height:1.35;\r\n  }\r\n  .status-page-panel .cstep--new .cstep__label::after{\r\n    content:\"Deine Bestellung ist bei uns eingegangen.\";\r\n  }\r\n  .status-page-panel .cstep--seen .cstep__label::after{\r\n    content:\"Wir bereiten dein Getr\u00e4nk vor.\";\r\n  }\r\n  .status-page-panel .cstep--delivering .cstep__label::after{\r\n    content:\"Dein Getr\u00e4nk wird an deinen Platz gebracht.\";\r\n  }\r\n  .status-page-panel .cstep--done .cstep__label::after{\r\n    content:\"Dein Getr\u00e4nk wurde serviert.\";\r\n  }\r\n  .status-page-panel[data-status=\"seen\"] .cstep--new .cstep__dot,\r\n  .status-page-panel[data-status=\"delivering\"] .cstep--new .cstep__dot,\r\n  .status-page-panel[data-status=\"delivering\"] .cstep--seen .cstep__dot,\r\n  .status-page-panel[data-status=\"done\"] .cstep--new .cstep__dot,\r\n  .status-page-panel[data-status=\"done\"] .cstep--seen .cstep__dot,\r\n  .status-page-panel[data-status=\"done\"] .cstep--delivering .cstep__dot{\r\n    background:var(--brand);\r\n    border-color:var(--brand);\r\n    color:#fff;\r\n    font-size:0;\r\n  }\r\n  .status-page-panel[data-status=\"seen\"] .cstep--new .cstep__dot::before,\r\n  .status-page-panel[data-status=\"delivering\"] .cstep--new .cstep__dot::before,\r\n  .status-page-panel[data-status=\"delivering\"] .cstep--seen .cstep__dot::before,\r\n  .status-page-panel[data-status=\"done\"] .cstep--new .cstep__dot::before,\r\n  .status-page-panel[data-status=\"done\"] .cstep--seen .cstep__dot::before,\r\n  .status-page-panel[data-status=\"done\"] .cstep--delivering .cstep__dot::before{\r\n    content:\"\u2713\";\r\n    font-size:13px;\r\n  }\r\n  .status-page-panel[data-status=\"new\"] .cstep--new,\r\n  .status-page-panel[data-status=\"seen\"] .cstep--seen,\r\n  .status-page-panel[data-status=\"delivering\"] .cstep--delivering,\r\n  .status-page-panel[data-status=\"done\"] .cstep--done{\r\n    background:#fff9eb;\r\n    box-shadow:inset 0 0 0 1px rgba(232,189,79,.42);\r\n  }\r\n  .status-page-panel[data-status=\"new\"] .cstep--new .cstep__label,\r\n  .status-page-panel[data-status=\"seen\"] .cstep--seen .cstep__label,\r\n  .status-page-panel[data-status=\"delivering\"] .cstep--delivering .cstep__label,\r\n  .status-page-panel[data-status=\"done\"] .cstep--done .cstep__label{\r\n    color:var(--brand);\r\n  }\r\n  .status-page-panel[data-status=\"new\"] .cstep--new .cstep__dot,\r\n  .status-page-panel[data-status=\"seen\"] .cstep--seen .cstep__dot,\r\n  .status-page-panel[data-status=\"delivering\"] .cstep--delivering .cstep__dot,\r\n  .status-page-panel[data-status=\"done\"] .cstep--done .cstep__dot{\r\n    transform:scale(1.08);\r\n    box-shadow:0 0 0 4px #fff, 0 0 0 10px rgba(232,189,79,.16);\r\n  }\r\n  .status-page-panel[data-status=\"new\"] .cstep--new .cstep__dot{\r\n    font-size:0;\r\n  }\r\n  .status-page-panel[data-status=\"new\"] .cstep--new .cstep__dot::before{\r\n    content:\"\u2713\";\r\n    font-size:13px;\r\n  }\r\n  .status-page-panel .status-copy{\r\n    margin-top:14px;\r\n    padding:12px;\r\n    border:1px solid #e7eaf2;\r\n    border-radius:16px;\r\n    background:#fff;\r\n  }\r\n  .status-page-panel .copy-headline{\r\n    font-size:15px;\r\n  }\r\n  .status-page-panel .copy-subline{\r\n    font-size:14px;\r\n  }\r\n\r\n  \/* KEV Premium-Statusansicht *\/\r\n  .order-status-page{\r\n    background:linear-gradient(180deg,#ffffff 0%,#f3f5f9 52%,#eef1f6 100%);\r\n  }\r\n  .order-status-page__header{\r\n    border-bottom:1px solid #e7deca;\r\n    background:linear-gradient(180deg,#ffffff 0%,#fbfaf7 100%);\r\n  }\r\n  .order-status-page__header h2{\r\n    font-size:22px;\r\n    letter-spacing:0;\r\n  }\r\n  .order-status-page__header h2::after{\r\n    content:\"Live Status\";\r\n    background:#1C2342;\r\n    color:#fff;\r\n    border:1px solid rgba(232,189,79,.55);\r\n    box-shadow:0 6px 18px rgba(28,35,66,.16);\r\n  }\r\n  .order-status-page__header p{\r\n    color:#5f6470;\r\n  }\r\n  .order-status-page .status-card{\r\n    border:1px solid #e3dccb;\r\n    background:#fff;\r\n    box-shadow:0 20px 54px rgba(28,35,66,.12);\r\n  }\r\n  .order-status-page .combo-ticket{\r\n    background:#1C2342;\r\n    border:1px solid rgba(232,189,79,.58);\r\n    color:#fff;\r\n    box-shadow:0 16px 34px rgba(28,35,66,.22);\r\n  }\r\n  .order-status-page .combo-ticket__icon{\r\n    background:#fff;\r\n    color:#1C2342;\r\n    border:1px solid rgba(232,189,79,.72);\r\n    box-shadow:none;\r\n    font-size:17px;\r\n    font-weight:900;\r\n    letter-spacing:0;\r\n  }\r\n  .order-status-page .combo-ticket__title{\r\n    color:#fff;\r\n    letter-spacing:0;\r\n  }\r\n  .order-status-page .combo-ticket__meta{\r\n    color:rgba(255,255,255,.76);\r\n  }\r\n  .order-status-page .combo-ticket__tag{\r\n    background:rgba(255,255,255,.08);\r\n    color:#fff;\r\n    border-color:rgba(232,189,79,.58);\r\n  }\r\n  .status-page-panel .combo-stepper{\r\n    margin:12px 0 18px;\r\n  }\r\n  .status-page-panel .combo-stepper::before{\r\n    background:#dde2eb;\r\n  }\r\n  .status-page-panel .combo-stepper::after{\r\n    background:linear-gradient(180deg,#1C2342 0%,#E8BD4F 100%);\r\n  }\r\n  .status-page-panel .cstep{\r\n    min-height:72px;\r\n    grid-template-columns:38px 1fr;\r\n    gap:14px;\r\n    padding:10px 12px 10px 0;\r\n  }\r\n  .status-page-panel .cstep__dot{\r\n    width:26px;\r\n    height:26px;\r\n    border-width:2px;\r\n    border-color:#cfd5e0;\r\n    color:#687080;\r\n    background:#fff;\r\n    box-shadow:0 0 0 5px #fff;\r\n    animation:none !important;\r\n  }\r\n  .status-page-panel .cstep__label{\r\n    font-size:16px;\r\n    color:#2a2d35;\r\n  }\r\n  .status-page-panel .cstep__label::after{\r\n    margin-top:3px;\r\n    color:#6b6f76;\r\n  }\r\n  .status-page-panel[data-status=\"seen\"] .cstep--new .cstep__dot,\r\n  .status-page-panel[data-status=\"delivering\"] .cstep--new .cstep__dot,\r\n  .status-page-panel[data-status=\"delivering\"] .cstep--seen .cstep__dot,\r\n  .status-page-panel[data-status=\"done\"] .cstep--new .cstep__dot,\r\n  .status-page-panel[data-status=\"done\"] .cstep--seen .cstep__dot,\r\n  .status-page-panel[data-status=\"done\"] .cstep--delivering .cstep__dot,\r\n  .status-page-panel[data-status=\"new\"] .cstep--new .cstep__dot{\r\n    background:#1C2342;\r\n    border-color:#1C2342;\r\n    color:#fff;\r\n  }\r\n  .status-page-panel[data-status=\"new\"] .cstep--new,\r\n  .status-page-panel[data-status=\"seen\"] .cstep--seen,\r\n  .status-page-panel[data-status=\"delivering\"] .cstep--delivering,\r\n  .status-page-panel[data-status=\"done\"] .cstep--done{\r\n    background:#fbf7ee;\r\n    box-shadow:inset 0 0 0 1px rgba(232,189,79,.46);\r\n  }\r\n  .status-page-panel[data-status=\"seen\"] .cstep--seen .cstep__dot,\r\n  .status-page-panel[data-status=\"delivering\"] .cstep--delivering .cstep__dot{\r\n    background:#E8BD4F;\r\n    border-color:#D8A830;\r\n    color:#1C2342;\r\n  }\r\n  .status-page-panel[data-status=\"done\"] .cstep--done .cstep__dot{\r\n    background:#1C2342;\r\n    border-color:#1C2342;\r\n    color:#fff;\r\n    font-size:0;\r\n  }\r\n  .status-page-panel[data-status=\"done\"] .cstep--done .cstep__dot::before{\r\n    content:\"\u2713\";\r\n    font-size:13px;\r\n  }\r\n  .status-page-panel .status-copy{\r\n    border-color:#e3dccb;\r\n    background:#fbfaf7;\r\n  }\r\n  .status-page-panel .copy-icon{\r\n    width:24px;\r\n    height:24px;\r\n    border-radius:999px;\r\n    display:inline-flex;\r\n    align-items:center;\r\n    justify-content:center;\r\n    background:#1C2342;\r\n    color:#fff;\r\n    font-size:12px;\r\n    font-weight:900;\r\n    animation:none !important;\r\n  }\r\n  .order-status-page__footer{\r\n    background:rgba(255,255,255,.96);\r\n    border-top-color:#e7deca;\r\n  }\r\n  .order-status-page__footer{\r\n    position:fixed;\r\n    left:0;\r\n    right:0;\r\n    bottom:0;\r\n    background:#fff;\r\n    border-top:1px solid #e2e5ec;\r\n    box-shadow:0 -10px 28px rgba(20,21,26,.08);\r\n    padding:12px 16px calc(12px + env(safe-area-inset-bottom,0px));\r\n  }\r\n  .order-status-page__footer .btn{\r\n    width:100%;\r\n  }\r\n\r\n  dialog.stylist-fullscreen{\r\n    position:fixed;\r\n    inset:0;\r\n    width:100vw;\r\n    max-width:none;\r\n    height:100vh;\r\n    height:100dvh;\r\n    max-height:none;\r\n    margin:0;\r\n    border-radius:0;\r\n    overflow:hidden;\r\n    background:var(--bg);\r\n    box-shadow:none;\r\n  }\r\n  dialog.stylist-fullscreen::backdrop{background:var(--bg);}\r\n  .stylist-fullscreen__layout{\r\n    height:100%;\r\n    display:flex;\r\n    flex-direction:column;\r\n  }\r\n  .stylist-fullscreen__header{\r\n    flex:0 0 auto;\r\n    display:grid;\r\n    grid-template-columns:42px 1fr;\r\n    gap:10px;\r\n    align-items:center;\r\n    padding:calc(14px + env(safe-area-inset-top,0px)) 16px 14px;\r\n    border-bottom:1px solid #e2e5ec;\r\n    background:rgba(255,255,255,.97);\r\n  }\r\n  .stylist-fullscreen__header h2{\r\n    margin:0;\r\n    color:var(--brand);\r\n    font-size:20px;\r\n    line-height:1.2;\r\n  }\r\n  .stylist-fullscreen__header p{\r\n    margin:3px 0 0;\r\n    color:var(--muted);\r\n    font-size:13px;\r\n  }\r\n  .stylist-fullscreen__body{\r\n    flex:1;\r\n    overflow:auto;\r\n    padding:14px 16px calc(18px + env(safe-area-inset-bottom,0px));\r\n  }\r\n  .stylist-fullscreen__grid{\r\n    display:grid;\r\n    grid-template-columns:repeat(2,minmax(0,1fr));\r\n    gap:12px;\r\n    max-width:520px;\r\n    margin:0 auto;\r\n  }\r\n  .stylist-fullscreen .avatar-option{\r\n    min-width:0;\r\n    min-height:154px;\r\n    display:flex;\r\n    flex-direction:column;\r\n    justify-content:center;\r\n    gap:8px;\r\n    padding:12px 8px;\r\n    text-align:center;\r\n    box-shadow:0 6px 18px rgba(20,21,26,.06);\r\n  }\r\n  .stylist-fullscreen .avatar-option .avatar{\r\n    width:86px;\r\n    height:86px;\r\n  }\r\n  .stylist-fullscreen .avatar-option.is-selected{\r\n    border-color:var(--accent-strong);\r\n    background:#fff9e8;\r\n    box-shadow:0 0 0 2px rgba(232,189,79,.22);\r\n  }\r\n  @media (max-width:340px){\r\n    .stylist-fullscreen__grid{grid-template-columns:1fr;}\r\n  }\r\n  .checkout-details{\r\n    margin-top:16px;\r\n    padding:14px;\r\n    border:1px solid #e7deca;\r\n    border-radius:16px;\r\n    background:#fbfaf7;\r\n  }\r\n  .checkout-details__head{margin-bottom:10px;}\r\n  .checkout-details__step{\r\n    color:var(--accent-strong);\r\n    font-size:11px;\r\n    font-weight:800;\r\n    letter-spacing:.06em;\r\n    text-transform:uppercase;\r\n  }\r\n  .checkout-details h4{margin:2px 0 0;font-size:17px;}\r\n  .checkout-details .field:last-of-type{margin-bottom:0;}\r\n  dialog.mobile-sheet .cart-actions{\r\n    grid-template-columns:1fr 1fr;\r\n    gap:8px;\r\n  }\r\n  dialog.mobile-sheet .cart-actions .btn{\r\n    border-radius:10px;\r\n  }\r\n  dialog.mobile-sheet .cart-actions .cart-action-minor{\r\n    min-height:36px;\r\n    padding:7px 9px;\r\n    border:1px solid #e2e5ec;\r\n    background:#fff;\r\n    color:var(--muted);\r\n    font-size:12px;\r\n    font-weight:650;\r\n    box-shadow:none;\r\n  }\r\n  dialog.mobile-sheet .cart-actions #cartSubmit{\r\n    grid-column:1\/-1;\r\n    min-height:54px;\r\n    margin-top:2px;\r\n    font-size:16px;\r\n    font-weight:850;\r\n  }\r\n  .status-next-copy{\r\n    margin-bottom:8px;\r\n    text-align:center;\r\n    color:var(--brand);\r\n    font-size:14px;\r\n    font-weight:800;\r\n  }\r\n  .status-next-actions{\r\n    display:grid;\r\n    grid-template-columns:1fr 1fr;\r\n    gap:10px;\r\n  }\r\n  @media (max-width:360px){.status-next-actions{grid-template-columns:1fr;}}\r\n  .smart-upsell{\r\n    margin-top:16px;\r\n    padding:14px;\r\n    border:1px solid #e7deca;\r\n    border-radius:18px;\r\n    background:linear-gradient(145deg,#fffdf7,#fff7df);\r\n    box-shadow:0 10px 28px rgba(20,21,26,.08);\r\n  }\r\n  .smart-upsell__moment{color:var(--accent-strong);font-size:11px;font-weight:850;text-transform:uppercase;letter-spacing:.06em;}\r\n  .smart-upsell h3{margin:2px 0 3px;color:var(--brand);font-size:18px;}\r\n  .smart-upsell p{margin:0;color:var(--muted);font-size:13px;}\r\n  .smart-upsell__product{display:grid;grid-template-columns:62px minmax(0,1fr);gap:10px;align-items:center;margin-top:12px;}\r\n  .smart-upsell__product img{width:62px;height:62px;border-radius:12px;object-fit:cover;background:#eef0f5;}\r\n  .smart-upsell__product div{display:grid;gap:2px;min-width:0;}\r\n  .smart-upsell__product strong{color:var(--brand);font-size:14px;}\r\n  .smart-upsell__product span{color:var(--muted);font-size:13px;}\r\n  .smart-upsell__product .btn{grid-column:1\/-1;width:100%;border-radius:10px;}\r\n<\/style>\r\n<\/head>\r\n<body>\r\n<div class=\"wrap\">\r\n  <h1 class=\"headline\">Getr\u00e4nkebestellung<\/h1>\r\n  <p class=\"subline\">Bestell dein <span class=\"text-gold\">Lieblingsgetr\u00e4nk<\/span> direkt am Platz.<\/p>\r\n\r\n  <!-- Statusanzeige (Ticket + Stepper) -->\r\n  <div id=\"orderStatus\" class=\"status-card status-combo\" hidden><\/div>\r\n\r\n  <section id=\"weeklyPicks\" class=\"weekly-picks\" aria-labelledby=\"weeklyPicksTitle\" hidden>\r\n    <div class=\"weekly-picks__head\">\r\n      <div>\r\n        <span class=\"weekly-picks__eyebrow\">F\u00fcr dich ausgew\u00e4hlt<\/span>\r\n        <h2 id=\"weeklyPicksTitle\" class=\"weekly-picks__title\">Unsere Empfehlungen<\/h2>\r\n      <\/div>\r\n    <\/div>\r\n    <div id=\"weeklyPicksGrid\" class=\"weekly-picks__grid\"><\/div>\r\n  <\/section>\r\n\r\n  <button id=\"wineBanner\" class=\"wine-ticker\" type=\"button\" aria-label=\"Neue Winzerweine \u00f6ffnen\">\r\n    <span class=\"wine-ticker__content\">\r\n      <span class=\"wine-ticker__eyebrow\"><span class=\"wine-ticker__dot\"><\/span>Neu im Salon<\/span>\r\n      <span class=\"wine-ticker__title\">Winzerweine von V\u00f6gelein &amp; Anselmann<\/span>\r\n      <span class=\"wine-ticker__sub\">Silvaner, Wei\u00dfburgunder und Ros\u00e9 entdecken<\/span>\r\n    <\/span>\r\n    <span class=\"wine-ticker__arrow\" aria-hidden=\"true\">\u203a<\/span>\r\n  <\/button>\r\n\r\n  <!-- Kategorien -->\r\n  <label class=\"label\">Oder nach Kategorie ausw\u00e4hlen<\/label>\r\n  <div class=\"grid-cat\" id=\"cats\">\r\n    <div class=\"cat xmas is-hidden disabled\" data-id=\"xmas\">\r\n      <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/11\/xmas_collage.png\" alt=\"Weihnachtsspecial\" id=\"img-cat-xmas\" width=\"1200\" height=\"800\">\r\n      <div class=\"soon\">Demn\u00e4chst<\/div>\r\n      <div class=\"title\">Weihnachtsspecial<\/div>\r\n    <\/div>\r\n\r\n    <div class=\"cat\" data-id=\"hot\">\r\n      <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/11\/heissgetraenke_collage_500x500.png\" alt=\"Hei\u00dfgetr\u00e4nke\" id=\"img-cat-hot\" width=\"1200\" height=\"800\">\r\n      <div class=\"title\">Hei\u00dfgetr\u00e4nke<\/div>\r\n    <\/div>\r\n    <div class=\"cat\" data-id=\"soft\">\r\n      <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/11\/softdrinks_collage_500x500.png\" alt=\"Softdrinks &amp; Wasser\" id=\"img-cat-soft\" width=\"1200\" height=\"800\">\r\n      <div class=\"title\">Softdrinks \/ Wasser<\/div>\r\n    <\/div>\r\n    <div class=\"cat\" data-id=\"wine\">\r\n      <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/11\/Wein_Sekt_collage.png\" alt=\"Bier \u00b7 Weine \u00b7 Sekt\" id=\"img-cat-wine\" width=\"1200\" height=\"800\">\r\n      <div class=\"title\">Bier | Weine | Sekt<\/div>\r\n    <\/div>\r\n    <div class=\"cat\" data-id=\"long\">\r\n      <img loading=\"lazy\" decoding=\"async\" src=\"https:\/\/cdn.shopify.com\/s\/files\/1\/0578\/9161\/8875\/files\/4568db75-6ab8-489d-a337-6be37c4fbe47.jpg?v=1780066066\" alt=\"Longdrinks\" id=\"img-cat-long\" width=\"1200\" height=\"800\">\r\n      <div class=\"title\">Longdrinks<\/div>\r\n    <\/div>\r\n  <\/div>\r\n\r\n  <div id=\"toast\" class=\"toast\"><\/div>\r\n<\/div>\r\n\r\n<!-- Items Popup (Header + Content als Geschwister) -->\r\n<div class=\"items-popup\" id=\"itemsPopup\">\r\n  <div class=\"items-header\">\r\n    <button class=\"back-btn\" id=\"backBtn\" type=\"button\">\u2190<\/button>\r\n    <h2 id=\"popupTitle\">Kategorie<\/h2>\r\n  <\/div>\r\n  <div class=\"items-content-wrapper\">\r\n    <div class=\"items-content\">\r\n      <div class=\"cat-hint\" id=\"catHint\" style=\"display:none\"><\/div>\r\n      <div class=\"list\" id=\"list\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- Bottom cart -->\r\n<div class=\"cartbar cartbar--empty\">\r\n  <div class=\"cartwrap\">\r\n    <div class=\"cartlist\" id=\"cart\"><\/div>\r\n    <div class=\"submit\">\r\n      <button id=\"cartOpen\" class=\"btn ghost\" type=\"button\" aria-label=\"Warenkorb \u00f6ffnen\">\r\n        <span id=\"cartBadge\" class=\"badge\">0<\/span>\r\n      <\/button>\r\n      <button id=\"clearBtn\" class=\"btn secondary\" type=\"button\">Leeren<\/button>\r\n      <button id=\"sendBtn\" class=\"btn submit\" disabled>\ud83e\uddfe Absenden<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- Config sheet -->\r\n<dialog id=\"cfg\" class=\"mobile-sheet\">\r\n  <div class=\"sheet\">\r\n    <div class=\"sheet-handle\" aria-hidden=\"true\"><\/div>\r\n    <h3 id=\"cfgTitle\">Optionen<\/h3>\r\n    <div id=\"cfgFields\"><\/div>\r\n    <div class=\"tiny\" id=\"cfgHint\"><\/div>\r\n    <div class=\"sheet btnrow\">\r\n      <button id=\"cfgCancel\" class=\"btn secondary\" type=\"button\">Abbrechen<\/button>\r\n      <button id=\"cfgAdd\" class=\"btn\" type=\"button\">Hinzuf\u00fcgen<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/dialog>\r\n\r\n<!-- Cart (Warenkorb) modal -->\r\n<dialog id=\"cartDlg\" class=\"mobile-sheet\">\r\n  <div class=\"sheet\">\r\n    <div class=\"sheet-handle\" aria-hidden=\"true\"><\/div>\r\n    <div class=\"cart-title\">\r\n      <h3 style=\"margin:0\">\ud83e\uddfa Warenkorb<\/h3>\r\n      <span class=\"tiny\" id=\"cartSummary\">0 Positionen<\/span>\r\n    <\/div>\r\n\r\n    <div id=\"cartList\" class=\"cart-list\"><\/div>\r\n    <div id=\"cartEmpty\" class=\"cart-empty\" style=\"display:none\">Noch nichts ausgew\u00e4hlt.<\/div>\r\n\r\n    <section class=\"checkout-details\" aria-labelledby=\"checkoutDetailsTitle\">\r\n      <div class=\"checkout-details__head\">\r\n        <span class=\"checkout-details__step\">Fast geschafft<\/span>\r\n        <h4 id=\"checkoutDetailsTitle\">Wohin d\u00fcrfen wir servieren?<\/h4>\r\n      <\/div>\r\n      <div class=\"field field-name\">\r\n        <label class=\"label\" for=\"cust\">Dein Name<\/label>\r\n        <input id=\"cust\" type=\"text\" placeholder=\"Trage deinen Namen ein\" autocomplete=\"given-name\" required>\r\n        <div id=\"nameError\" class=\"field-error\">Bitte gib deinen Namen ein.<\/div>\r\n      <\/div>\r\n      <div class=\"field\">\r\n        <label class=\"label\" for=\"stylistPicker\">Bei wem bist du heute? <span class=\"tiny\">optional<\/span><\/label>\r\n        <button id=\"stylistPicker\" class=\"avatar-select-trigger\" type=\"button\">\r\n          <span id=\"stylistSummary\" class=\"avatar-select-trigger__summary\">\r\n            <img decoding=\"async\" class=\"avatar\" id=\"stylistSummaryImg\" alt=\"Avatar\" src=\"data:image\/svg+xml;utf8,<?xml version='1.0' encoding='UTF-8'?><svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='50' height='50'><rect width='100%' height='100%' rx='40' ry='40' fill='%23eef0f5'\/><text x='50%' y='54%' font-size='30' text-anchor='middle' fill='%236b6f76'>\ud83d\udc64<\/text><\/svg>\">\r\n            <div>\r\n              <div class=\"avatar-name\" id=\"stylistSummaryName\">Stylist ausw\u00e4hlen<\/div>\r\n              <div class=\"avatar-hint\">Hilft uns bei der schnellen Zuordnung<\/div>\r\n            <\/div>\r\n            <span class=\"avatar-select-trigger__arrow\" aria-hidden=\"true\">\u203a<\/span>\r\n          <\/span>\r\n        <\/button>\r\n      <\/div>\r\n      <input id=\"stylist\" type=\"hidden\" value=\"Unbekannt\">\r\n    <\/section>\r\n\r\n    <div class=\"sheet btnrow cart-actions\">\r\n      <button id=\"cartClose\" class=\"btn cart-action-minor\" type=\"button\">Schlie\u00dfen<\/button>\r\n      <button id=\"cartClear\" class=\"btn cart-action-minor\" type=\"button\">Bestellung leeren<\/button>\r\n      <button id=\"cartSubmit\" class=\"btn submit\" type=\"button\" disabled>\ud83e\uddfe Absenden<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/dialog>\r\n\r\n<!-- Fullscreen Stylist-Auswahl -->\r\n<dialog id=\"stylistDlg\" class=\"stylist-fullscreen\" aria-labelledby=\"stylistDlgTitle\">\r\n  <div class=\"stylist-fullscreen__layout\">\r\n    <header class=\"stylist-fullscreen__header\">\r\n      <button id=\"stylistDlgClose\" class=\"back-btn\" type=\"button\" aria-label=\"Zur\u00fcck zum Warenkorb\">\u2190<\/button>\r\n      <div>\r\n        <h2 id=\"stylistDlgTitle\">Bei wem bist du heute?<\/h2>\r\n        <p>W\u00e4hle deinen Stylisten f\u00fcr eine schnelle Zuordnung.<\/p>\r\n      <\/div>\r\n    <\/header>\r\n    <div class=\"stylist-fullscreen__body\">\r\n      <div class=\"stylist-fullscreen__grid\" id=\"stylistList\"><\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/dialog>\r\n\r\n<!-- Confirm modal -->\r\n<dialog id=\"sent\" class=\"mobile-sheet\">\r\n  <div class=\"sheet\">\r\n    <div class=\"sheet-handle\" aria-hidden=\"true\"><\/div>\r\n    <div class=\"confirm-head\" style=\"display:flex;gap:10px;align-items:center;\">\r\n      <span class=\"check\" style=\"font-size:26px;\">\u2713<\/span>\r\n      <div>\r\n        <h3 style=\"margin:0\">Bestellung ist eingegangen<\/h3>\r\n        <div class=\"tiny\" id=\"sentMeta\"><\/div>\r\n      <\/div>\r\n    <\/div>\r\n    <div class=\"tiny\" style=\"margin-top:8px\">Wir k\u00fcmmern uns darum.<\/div>\r\n    <ul class=\"confirm-summary\" id=\"sentList\" style=\"margin:6px 0 0 18px;padding:0;\"><\/ul>\r\n    <div class=\"sheet btnrow\">\r\n      <button id=\"sentClose\" class=\"btn secondary\" type=\"button\">Status ansehen<\/button>\r\n      <button id=\"sentNew\" class=\"btn\" type=\"button\">Neue Bestellung<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/dialog>\r\n\r\n<!-- Eigene Statusseite nach erfolgreicher Bestellung -->\r\n<div id=\"orderStatusPage\" class=\"order-status-page\" hidden>\r\n  <div class=\"order-status-page__header\">\r\n    <div class=\"order-status-page__inner\">\r\n      <h2>Deine Bestellung<\/h2>\r\n      <p>Kirstin Ellen Vietze \u00b7 Berlin-Mitte \u00b7 Dorotheenstra\u00dfe 60<\/p>\r\n      <div id=\"orderStatusSummary\" class=\"order-status-page__summary\" hidden><\/div>\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"order-status-page__body\">\r\n    <div class=\"order-status-page__inner\">\r\n      <div id=\"orderStatusPanel\" class=\"status-card status-combo status-page-panel\" hidden><\/div>\r\n      <section id=\"smartUpsell\" class=\"smart-upsell\" hidden>\r\n        <div class=\"smart-upsell__copy\">\r\n          <span id=\"smartUpsellMoment\" class=\"smart-upsell__moment\">Genussmoment<\/span>\r\n          <h3 id=\"smartUpsellTitle\">Darf es noch etwas sein?<\/h3>\r\n          <p id=\"smartUpsellText\"><\/p>\r\n        <\/div>\r\n        <div class=\"smart-upsell__product\">\r\n          <img decoding=\"async\" id=\"smartUpsellImage\" src=\"\" alt=\"\">\r\n          <div><strong id=\"smartUpsellName\"><\/strong><span id=\"smartUpsellPrice\"><\/span><\/div>\r\n          <button id=\"smartUpsellAdd\" class=\"btn\" type=\"button\">Hinzuf\u00fcgen<\/button>\r\n        <\/div>\r\n      <\/section>\r\n    <\/div>\r\n  <\/div>\r\n  <div class=\"order-status-page__footer\">\r\n    <div class=\"order-status-page__inner\">\r\n      <div class=\"status-next-copy\">Noch etwas gef\u00e4llig?<\/div>\r\n      <div class=\"status-next-actions\">\r\n        <button id=\"statusReorder\" class=\"btn secondary\" type=\"button\">Dasselbe noch einmal<\/button>\r\n        <button id=\"statusNewOrder\" class=\"btn\" type=\"button\">Etwas anderes w\u00e4hlen<\/button>\r\n      <\/div>\r\n    <\/div>\r\n  <\/div>\r\n<\/div>\r\n\r\n<!-- Info-Dialog f\u00fcr Marken- und Getr\u00e4nke-Infos -->\r\n<dialog id=\"infoDlg\" class=\"mobile-sheet\">\r\n  <div class=\"sheet\">\r\n    <div class=\"sheet-handle\" aria-hidden=\"true\"><\/div>\r\n    <h3 id=\"infoTitle\" style=\"margin:0 0 8px\">Info<\/h3>\r\n    <div id=\"infoBody\" class=\"tiny\" style=\"font-size:14px; line-height:1.5; margin-top:4px;\"><\/div>\r\n    <div class=\"sheet btnrow\">\r\n      <button id=\"infoClose\" class=\"btn secondary\" type=\"button\">Schlie\u00dfen<\/button>\r\n    <\/div>\r\n  <\/div>\r\n<\/dialog>\r\n\r\n<!-- In-App Status Overlay (Variante B) -->\r\n<div id=\"statusOverlay\" class=\"status-overlay\" hidden>\r\n  <div class=\"status-overlay-card\">\r\n    <div id=\"statusOverlayIcon\" class=\"status-overlay-icon\">\ud83d\udeb6<\/div>\r\n    <h2 id=\"statusOverlayTitle\" class=\"status-overlay-title\">Dein Getr\u00e4nk ist unterwegs<\/h2>\r\n    <p id=\"statusOverlayText\" class=\"status-overlay-text\">\r\n      Lehn dich zur\u00fcck \u2013 wir bringen dir dein Getr\u00e4nk gleich an den Platz.\r\n    <\/p>\r\n    <button id=\"statusOverlayClose\" type=\"button\" class=\"btn\">Alles klar<\/button>\r\n  <\/div>\r\n<\/div>\r\n\r\n<script type=\"module\">\r\n  import { initializeApp } from \"https:\/\/www.gstatic.com\/firebasejs\/12.4.0\/firebase-app.js\";\r\n  import { getDatabase, ref, onValue } from \"https:\/\/www.gstatic.com\/firebasejs\/12.4.0\/firebase-database.js\";\r\n\r\n  const CATEGORY_ACTIVE = {\r\n    xmas: \"Nein\"\r\n  };\r\n\r\n  const DEFAULT_AKTIV = {\r\n    hot: {\r\n      \"Espresso\": \"Ja\",\r\n      \"Doppelter Espresso\": \"Ja\",\r\n      \"Caf\\u00e9 Crema\": \"Ja\",\r\n      \"Cappuccino\": \"Ja\",\r\n      \"Latte Macchiato\": \"Ja\",\r\n      \"Gro\\u00dfer Milchkaffee\": \"Ja\",\r\n      \"Aroma Kaffee\": \"Ja\",\r\n      \"Hei\\u00dfe Schokolade\": \"Ja\",\r\n      \"Wei\\u00dfe Schokolade\": \"Ja\",\r\n      \"Wei\\u00dfe Schokolade mit Espresso\": \"Ja\",\r\n      \"Tee\": \"Ja\"\r\n    },\r\n    flavors: {\r\n      \"Haselnuss\": \"Ja\",\r\n      \"Karamell\": \"Ja\",\r\n      \"Vanille\":  \"Ja\"\r\n    },\r\n    tea: {\r\n      \"Gr\\u00fcntee\": {\r\n        \"Gr\\u00fcntee pur\":            \"Ja\",\r\n        \"Gr\\u00fcntee Kr\\u00e4utermischung\":\"Ja\"\r\n      },\r\n      \"Schwarztee\": {\r\n        \"Darjeeling\": \"Ja\",\r\n        \"Earl Grey\":  \"Ja\"\r\n      },\r\n      \"Fr\\u00fcchtetee\": {\r\n        \"Fr\\u00fcchtetee Mischung\": \"Ja\",\r\n        \"Fr\\u00fcchtetee THC Frei\": \"Ja\"\r\n      },\r\n      \"Kr\\u00e4utertee\": {\r\n        \"Kamille\":         \"Ja\",\r\n        \"Minze\":           \"Ja\",\r\n        \"Kr\\u00e4utermischung\": \"Ja\"\r\n      }\r\n    },\r\n    soft: {\r\n      \"Coca Cola \\u00b7 0,33 l\":               \"Ja\",\r\n      \"Coca Cola Zero \\u00b7 0,33 l\":          \"Ja\",\r\n      \"Fever-Tree Mediterranean Tonic \\u00b7 0,2 l\": \"Nein\",\r\n      \"Vio Limo Zitrone \\u00b7 0,25 l\":        \"Ja\",\r\n      \"Vio Schorle Apfel \\u00b7 0,25 l\":       \"Ja\",\r\n      \"Vio Schorle Johannisbeere \\u00b7 0,25 l\":\"Ja\",\r\n      \"Wasser\":                            \"Ja\"\r\n    },\r\n    wine: {\r\n      \"Bier \\u00b7 0,33 l\": \"Ja\",\r\n      \"Sekt\": \"Ja\",\r\n      \"Winzerwein V\\u00f6gelein\": \"Ja\",\r\n      \"Winzerwein Anselmann Wei\\u00df\": \"Ja\",\r\n      \"Wei\\u00dfwein Piccolo Classic\": \"Ja\",\r\n      \"Wei\\u00dfweinschorle\": \"Ja\",\r\n      \"Rotwein Piccolo Classic\": \"Ja\",\r\n      \"Winzerwein Anselmann Ros\\u00e9\": \"Ja\",\r\n      \"Ros\\u00e9wein Piccolo Classic\": \"Ja\"\r\n    },\r\n    long: {\r\n      \"Gin Tonic\": \"Ja\",\r\n      \"Cuba Libre\": \"Ja\",\r\n      \"Whisky Highball\": \"Ja\",\r\n      \"Whisky Tonic\": \"Ja\",\r\n      \"Gin Straight\": \"Ja\",\r\n      \"Whisky Straight\": \"Ja\",\r\n      \"Rum Straight\": \"Ja\"\r\n    },\r\n    xmas: {\r\n      \"Amaretto-Gl\\u00fchwein\": \"Nein\",\r\n      \"Latte Macchiato mit Baileys\": \"Ja\",\r\n      \"Cappuccino mit Baileys\": \"Ja\"\r\n    }\r\n  };\r\n\r\n  function cloneAvailability(source){\r\n    return JSON.parse(JSON.stringify(source || {}));\r\n  }\r\n\r\n  function mergeAvailabilityDefaults(defaults, remote){\r\n    const next = cloneAvailability(defaults);\r\n\r\n    function applyRemote(target, value){\r\n      if(!value || typeof value !== \"object\") return;\r\n      Object.entries(value).forEach(([key, remoteValue])=>{\r\n        if(remoteValue && typeof remoteValue === \"object\" && !Array.isArray(remoteValue)){\r\n          if(!target[key] || typeof target[key] !== \"object\" || Array.isArray(target[key])){\r\n            target[key] = {};\r\n          }\r\n          applyRemote(target[key], remoteValue);\r\n          return;\r\n        }\r\n        target[key] = remoteValue;\r\n      });\r\n    }\r\n\r\n    applyRemote(next, remote);\r\n    return next;\r\n  }\r\n\r\n  let AKTIV = cloneAvailability(DEFAULT_AKTIV);\r\n\r\n  const isYes = (v)=>{\r\n    if(v === true) return true;\r\n    if(v === false) return false;\r\n    const value = String(v ?? \"Ja\").trim().toLowerCase();\r\n    return value === \"ja\" || value === \"true\" || value === \"1\" || value === \"aktiv\";\r\n  };\r\n\r\n  \/* Overlay-Text f\u00fcr bestimmte nicht verf\u00fcgbare Items (NEU) *\/\r\n  const UNAVAILABLE_OVERLAY_TEXT = {\r\n    \"xmas-gluehwein\": \"Gl\u00fchwein Saison beendet, wir w\u00fcnschen ein Erfolgreiches neues Jahr\",\r\n    \"gin-tonic\": \"Fever-Tree Tonic aktuell leer\",\r\n    \"whisky-tonic\": \"Fever-Tree Tonic aktuell leer\",\r\n    \"cuba-libre\": \"Cola aktuell leer\"\r\n  };\r\n\r\n  \/* ---------- ph-Funktion MIT BILD-SUPPORT ---------- *\/\r\n  function ph(type, label = null, from=\"#11162a\", to=\"#1c2342\"){\r\n    const imageMap = {\r\n      cat_hot:  \"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/11\/heissgetraenke_collage_500x500.png\",\r\n      cat_soft: \"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/11\/softdrinks_collage_500x500.png\",\r\n      cat_xmas: \"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/11\/xmas_collage.png\",\r\n      cat_wine: \"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/11\/Wein_Sekt_collage.png\",\r\n    };\r\n\r\n    if (imageMap[type]) {\r\n      return imageMap[type];\r\n    }\r\n\r\n    const emojiMap = {\r\n      cat_hot:\"\u2615\ufe0f\", cat_soft:\"\ud83e\udd64\", cat_wine:\"\ud83c\udf77\", cat_long:\"\ud83c\udf79\", cat_xmas:\"\ud83c\udf84\",\r\n      coke:\"\ud83e\udd64\", zero:\"\ud83e\udd64\", fever:\"\ud83e\udd64\", lemon:\"\ud83c\udf4b\", apple:\"\ud83c\udf4e\", berry:\"\ud83e\uded0\", water:\"\ud83d\udca7\",\r\n      beer:\"\ud83c\udf7a\", sekt:\"\ud83e\udd42\", wine:\"\ud83c\udf77\"\r\n    };\r\n    const emoji = emojiMap[type] || \"\ud83c\udf79\";\r\n    const labelSVG = label\r\n      ? `<text x='50%' y='88%' font-size='80' text-anchor='middle' fill='rgba(255,255,255,.9)'>${label}<\/text>`\r\n      : \"\";\r\n    const svg = `\r\n      <svg xmlns='http:\/\/www.w3.org\/2000\/svg' width='1200' height='800'>\r\n        <defs><linearGradient id='g' x1='0' y1='0' x2='1' y2='1'>\r\n          <stop offset='0' stop-color='${from}'\/><stop offset='1' stop-color='${to}'\/><\/linearGradient><\/defs>\r\n        <rect width='100%' height='100%' fill='url(#g)'\/>\r\n        <text x='50%' y='45%' font-size='360' text-anchor='middle'>${emoji}<\/text>\r\n        ${labelSVG}\r\n      <\/svg>`;\r\n    return \"data:image\/svg+xml;utf8,\" + encodeURIComponent(svg);\r\n  }\r\n  \/* ---------- ENDE ph ---------- *\/\r\n\r\n  function setCategoryImage(id, src){\r\n    const img = document.getElementById(id);\r\n    if(img && !img.getAttribute(\"src\")) img.src = src;\r\n  }\r\n\r\n  setCategoryImage(\"img-cat-xmas\", ph(\"cat_xmas\", null,\"#4b1c3d\",\"#b23448\"));\r\n  setCategoryImage(\"img-cat-hot\",  ph(\"cat_hot\", null,\"#1a203d\",\"#29316b\"));\r\n  setCategoryImage(\"img-cat-soft\", ph(\"cat_soft\", null,\"#102a3a\",\"#195a6b\"));\r\n  setCategoryImage(\"img-cat-wine\", ph(\"cat_wine\", null,\"#3d0f1a\",\"#651b28\"));\r\n  setCategoryImage(\"img-cat-long\", ph(\"cat_long\", null,\"#153a2a\",\"#1d6b4d\"));\r\n\r\n  const DB_URL = \"https:\/\/getr-9e2fe-default-rtdb.europe-west1.firebasedatabase.app\";\r\n  const firebaseConfig = {\r\n    apiKey: \"AIzaSyAbXNeYuiyto7eFxJ9nD0YgsUtj2b1iapw\",\r\n    authDomain: \"getr-9e2fe.firebaseapp.com\",\r\n    projectId: \"getr-9e2fe\",\r\n    storageBucket: \"getr-9e2fe.firebasestorage.app\",\r\n    messagingSenderId: \"794918654915\",\r\n    appId: \"1:794918654915:web:7841e0ec3c459bcde5a376\",\r\n    databaseURL: DB_URL\r\n  };\r\n  const app = initializeApp(firebaseConfig);\r\n  const db  = getDatabase(app);\r\n  const availabilityRef = ref(db, \"settings\/availability\");\r\n  const customDrinksRef = ref(db, \"settings\/customDrinks\");\r\n  const recommendationsRef = ref(db, \"settings\/recommendations\");\r\n  const recommendationBestsellersRef = ref(db, \"settings\/recommendationBestsellers\");\r\n\r\n  const STYLISTS = [\r\n    { id:\"kirstin\",   name:\"Kirstin Ellen Vietze\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2024\/08\/Gruppe-maskieren283.png\" },\r\n    { id:\"sabrina\",   name:\"Sabrina\",               img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/06\/Bild2-e1749562614522.png\" },\r\n    { id:\"paraskevi\", name:\"Paraskevi\",             img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2024\/08\/Gruppe-maskieren282.png\" },\r\n    { id:\"franziska\", name:\"Franziska\",             img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2024\/08\/Franziska-Schoenebeck.png\" },\r\n    { id:\"bahareh\",   name:\"Bahareh\",               img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2024\/08\/Bahareh-Pourali.png\" },\r\n    { id:\"raffat\",    name:\"Raffat\",                img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2024\/11\/Foto-Raffat-unbearbeitet-modified-e1732111628418.png\" },\r\n    { id:\"vanessa\",   name:\"Vanessa\",               img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2024\/08\/Gruppe-maskieren-278-round.png\" },\r\n    { id:\"khalil\",    name:\"Khalil\",                img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/02\/MA-Team-Coach-8-1.png\" }\r\n  ];\r\n\r\n  const DATA = {\r\n    xmas: {\r\n      name: \"Weihnachtsspecial\",\r\n      brandName: \"Weihnachtsspecials im Salon\",\r\n      brandInfo: \"In der Weihnachtszeit bieten wir dir limitierte Specials wie Amaretto-Gl\u00fchwein und Kaffee-Drinks mit Baileys. Nur f\u00fcr kurze Zeit und solange der Vorrat reicht.\",\r\n      items: [\r\n        {\r\n          id:\"xmas-gluehwein\",\r\n          name:\"Amaretto-Gl\u00fchwein\",\r\n          img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/11\/xmas-Gluehwein.png\",\r\n          info:\"Aromatischer Gl\u00fchwein mit einem Schuss Amaretto \u2013 perfekt zum Aufw\u00e4rmen in der Weihnachtszeit.\"\r\n        },\r\n        {\r\n          id:\"xmas-latte-baileys\",\r\n          name:\"Latte Macchiato mit Baileys\",\r\n          img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/11\/xmas-costalatte1200x800.png\",\r\n          info:\"Cremiger Latte Macchiato mit einem Schuss Baileys \u2013 sanft, leicht s\u00fc\u00df und ideal als Winter-Special.\",\r\n          options:[\r\n            {\r\n              type:\"select\",\r\n              id:\"baileys\",\r\n              label:\"Baileys-Sorte\",\r\n              required:true,\r\n              default:\"Baileys Original\",\r\n              choices:[\r\n                \"Baileys Original\",\r\n                \"Baileys Zimtschnecke\",\r\n                \"Baileys Schoko-Haselnuss\"\r\n              ]\r\n            }\r\n          ]\r\n        },\r\n        {\r\n          id:\"xmas-cappuccino-baileys\",\r\n          name:\"Cappuccino mit Baileys\",\r\n          img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/11\/xmas-costacappucino1200x800.png\",\r\n          info:\"Cappuccino mit einem Schuss Baileys \u2013 Kombination aus Espresso, Milch und Lik\u00f6r f\u00fcr besondere Momente.\",\r\n          options:[\r\n            {\r\n              type:\"select\",\r\n              id:\"baileys\",\r\n              label:\"Baileys-Sorte\",\r\n              required:true,\r\n              default:\"Baileys Original\",\r\n              choices:[\r\n                \"Baileys Original\",\r\n                \"Baileys Zimtschnecke\",\r\n                \"Baileys Schoko-Haselnuss\"\r\n              ]\r\n            }\r\n          ]\r\n        }\r\n      ],\r\n      globalOptions:[\r\n        {\r\n          type:\"select\",\r\n          id:\"water\",\r\n          label:\"Wasser dazu\",\r\n          choices:[\"Still\",\"Mit Kohlens\u00e4ure\",\"Ohne Wasser\"],\r\n          required:true,\r\n          default:\"Still\"\r\n        }\r\n      ],\r\n      hint:\"Weihnachtsspecials nur f\u00fcr kurze Zeit verf\u00fcgbar \u2013 sobald die Rubrik freigeschaltet ist. \ud83c\udf84\"\r\n    },\r\n\r\n    hot: {\r\n      name: \"Hei\\u00dfgetr\\u00e4nke\",\r\n      brandName: \"Costa Coffee & samova Tee\",\r\n      brandInfo: \"F\\u00fcr unsere Kaffees verwenden wir Costa Coffee - gegr\\u00fcndet 1971 von den Br\\u00fcdern Sergio und Bruno Costa, bekannt f\\u00fcr die Signature Blend aus 65 % Arabica- und 35 % Robusta-Bohnen mit Noten von Karamell, Schokolade und einem leichten Nussaroma. Unsere Tees stammen von samova aus Hamburg: moderne Bio-Teekultur mit kreativen Mischungen, nachhaltigen Materialien und ausgezeichnetem Design - perfekt f\\u00fcr hochwertigen Tee-Genuss im Salon.\",\r\n      items: [\r\n        { id:\"espresso\", name:\"Espresso\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/costaespresso1200x800.png\", price:2.5, info:\"Kr\\u00e4ftiger Espresso, frisch mit Costa Coffee Bohnen zubereitet - ideal als schneller Wachmacher.\" },\r\n        { id:\"double-espresso\", name:\"Doppelter Espresso\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/costaespresso1200x800.png\", price:4.3, info:\"Doppelter Shot Costa Coffee Espresso f\\u00fcr extra viel Energie.\" },\r\n        { id:\"cafecrema\", name:\"Caf\\u00e9 Crema\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/costacafecrema1200x800.png\", price:3.0, info:\"Ausgewogener Caf\\u00e9 Crema mit feiner Crema - der Allround-Kaffee f\\u00fcr jede Gelegenheit.\" },\r\n        { id:\"cappuccino\", name:\"Cappuccino\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/costacappucino1200x800.png\", price:3.5, info:\"Klassischer Cappuccino mit Espresso und cremigem Milchschaum - auf Wunsch mit etwas Kakao dekoriert.\" },\r\n        {\r\n          id:\"latte\",\r\n          name:\"Latte Macchiato\",\r\n          img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/Costalatte1200x800.png\",\r\n          price:4.2,\r\n          info:\"Sanfter Latte Macchiato mit viel Milch und cremigem Schaum im Glas - optional mit Flavor wie Haselnuss, Karamell oder Vanille.\",\r\n          options:[\r\n            { type:\"switch\", id:\"flavorOn\", label:\"Flavor shot hinzuf\\u00fcgen?\", default:true },\r\n            { type:\"select\", id:\"flavor\", label:\"Flavor\", choices:[\"Haselnuss\",\"Karamell\",\"Vanille\"], showIf:{ field:\"flavorOn\", eq:true } }\r\n          ]\r\n        },\r\n        { id:\"milchkaffee\", name:\"Gro\\u00dfer Milchkaffee\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/Costamilschkaffe1200x800.png\", price:4.5, info:\"Milder Kaffee mit viel Milch - perfekt, wenn du es nicht ganz so stark magst.\" },\r\n        { id:\"aroma-coffee\", name:\"Aroma Kaffee\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/costacafecrema1200x800.png\", price:5.5, info:\"Kr\\u00e4ftiger Kaffee mit extra Aroma - intensiver im Geschmack und etwas besonderer als der klassische Caf\\u00e9 Crema.\" },\r\n        { id:\"hot-choc\", name:\"Hei\\u00dfe Schokolade\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/costa-Schokolade1200x800.png\", price:3.3, info:\"Cremige hei\\u00dfe Schokolade - perfekt zum Entspannen w\\u00e4hrend deines Salonbesuchs.\" },\r\n        { id:\"white-choc\", name:\"Wei\\u00dfe Schokolade\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/costaweisseschokolade1200x800.png\", price:3.5, info:\"S\\u00fc\\u00dfe, helle Trinkschokolade mit wei\\u00dfer Schokolade - besonders mild und cremig.\" },\r\n        { id:\"white-choc-espresso\", name:\"Wei\\u00dfe Schokolade mit Espresso\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/Costaweisseschokolademitespress1200x800.png\", price:4.0, info:\"Kombination aus wei\\u00dfer Schokolade und Espresso - s\\u00fc\\u00df und kr\\u00e4ftig zugleich.\" },\r\n        {\r\n          id:\"tea\",\r\n          name:\"Tee\",\r\n          img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/samovatee1200x800.png\",\r\n          price:3.0,\r\n          info:\"Ausgew\\u00e4hlte lose Tees von samova - du w\\u00e4hlst Kategorie und Sorte im n\\u00e4chsten Schritt.\",\r\n          options: [\r\n            { type:\"select\", id:\"teaCat\", label:\"Kategorie\", required:true, default:\"Gr\\u00fcntee\", choices:[\"Gr\\u00fcntee\",\"Schwarztee\",\"Fr\\u00fcchtetee\",\"Kr\\u00e4utertee\"] },\r\n            { type:\"select\", id:\"teaVarietyGreen\", label:\"Sorte\", required:true, default:\"Gr\\u00fcntee pur\", choices:[\"Gr\\u00fcntee pur\",\"Gr\\u00fcntee Kr\\u00e4utermischung\"], showIf:{ field:\"teaCat\", eq:\"Gr\\u00fcntee\" } },\r\n            { type:\"select\", id:\"teaVarietyBlack\", label:\"Sorte\", required:true, default:\"Darjeeling\", choices:[\"Darjeeling\",\"Earl Grey\"], showIf:{ field:\"teaCat\", eq:\"Schwarztee\" } },\r\n            { type:\"select\", id:\"teaVarietyFruit\", label:\"Sorte\", required:true, default:\"Fr\\u00fcchtetee Mischung\", choices:[\"Fr\\u00fcchtetee Mischung\",\"Fr\\u00fcchtetee THC Frei\"], showIf:{ field:\"teaCat\", eq:\"Fr\\u00fcchtetee\" } },\r\n            { type:\"select\", id:\"teaVarietyHerb\", label:\"Sorte\", required:true, default:\"Kamille\", choices:[\"Kamille\",\"Minze\",\"Kr\\u00e4utermischung\"], showIf:{ field:\"teaCat\", eq:\"Kr\\u00e4utertee\" } }\r\n          ]\r\n        }\r\n      ],\r\n      globalOptions:[\r\n        { type:\"select\", id:\"water\", label:\"Wasser dazu\", choices:[\"Still\",\"Mit Kohlens\\u00e4ure\",\"Ohne Wasser\"], required:true, default:\"Still\" }\r\n      ],\r\n      hint:\"Milch & Zucker werden standardm\\u00e4\\u00dfig dazu gereicht.\"\r\n    },\r\n    soft: {\r\n      name: \"Softdrinks \/ Wasser\",\r\n      brandName: \"Coca-Cola & ViO\",\r\n      brandInfo: \"Bei Softdrinks setzen wir auf bekannte Marken: Coca-Cola, Coca-Cola Zero, ViO Limonaden und ViO Schorlen. So bekommst du zu deinem Salonbesuch eine kleine, klare Auswahl an gek\\u00fchlten Erfrischungen.\",\r\n      items: [\r\n        { id:\"coke\", name:\"Coca Cola \\u00b7 0,33 l\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/CocaColaoriginal1200x800.png\", price:3.5, info:\"Klassische Coca-Cola 0,33 l - eisgek\\u00fchlt aus der Flasche.\" },\r\n        { id:\"coke-zero\", name:\"Coca Cola Zero \\u00b7 0,33 l\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/Colazero1200x800.png\", price:3.5, info:\"Coca-Cola Zero 0,33 l - voller Geschmack, ohne Zucker.\" },\r\n        { id:\"fever-tree\", name:\"Fever-Tree Mediterranean Tonic \\u00b7 0,2 l\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/FevertreeTonic1200x800.png\", info:\"Mediterranean Tonic von Fever-Tree - feinperlig und aromatisch, auch pur ein Genuss.\" },\r\n        { id:\"vio-lemon\", name:\"Vio Limo Zitrone \\u00b7 0,25 l\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/Vioschorlelimette1200x800.png\", price:3.5, info:\"ViO Limo Zitrone 0,25 l - leichte Zitronenlimonade mit feiner S\\u00fc\\u00dfe.\" },\r\n        { id:\"vio-apple\", name:\"Vio Schorle Apfel \\u00b7 0,25 l\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/VioschorleApfel1200x800.png\", price:3.5, info:\"ViO Schorle Apfel 0,25 l - erfrischende Apfelsaftschorle.\" },\r\n        { id:\"vio-berry\", name:\"Vio Schorle Johannisbeere \\u00b7 0,25 l\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/VioschorleJohannisbeere1200x800.png\", price:3.5, info:\"ViO Schorle Johannisbeere 0,25 l - fruchtige Johannisbeerschorle.\" },\r\n        { id:\"water\", name:\"Wasser\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/Wasser1200x800.jpg\", price:0, info:\"Still oder mit Kohlens\\u00e4ure.\", options:[{ type:\"select\", id:\"wasserArt\", label:\"Art\", choices:[\"Still\",\"Mit Kohlens\\u00e4ure\"], required:true, default:\"Still\" }] }\r\n      ]\r\n    },\r\n    wine: {\r\n      name: \"Bier | Weine | Sekt\",\r\n      brandName: \"Bier, Weine & Sekt-Auswahl\",\r\n      brandInfo: '<div class=\"info-block\"><h4>Unsere Auswahl<\/h4><p>F\\u00fcr besondere Momente servieren wir dir eine kleine Auswahl aus Flaschenbier, Rotk\\u00e4ppchen Sekt sowie Wei\\u00df-, Rot- und Ros\\u00e9wein.<\/p><h4>V\\u00f6gelein<\/h4><p>V\\u00f6gelein steht f\\u00fcr fr\\u00e4nkische Weine von der Weininsel Nordheim am Main. Der Name geht auf die bekannte Lage Nordheimer V\\u00f6gelein zur\\u00fcck.<\/p><h4>Anselmann<\/h4><p>Anselmann kommt aus Edesheim in der Pfalz und z\\u00e4hlt zu den gro\\u00dfen familiengef\\u00fchrten Weing\\u00fctern Deutschlands.<\/p><h4>Im Salon<\/h4><p>So bekommst du eine kleine, gut verst\\u00e4ndliche Auswahl mit fr\\u00e4nkischem Silvaner, Pf\\u00e4lzer Wei\\u00dfburgunder und Ros\\u00e9.<\/p><\/div>',\r\n      items: [\r\n        { section:\"Bier\", id:\"beer\", name:\"Bier \\u00b7 0,33 l\", img:\"https:\/\/cdn.shopify.com\/s\/files\/1\/0578\/9161\/8875\/files\/Bierflaschen.webp?v=1780043310\", price:3.5, info:\"0,33 l Bier - wahlweise normal oder alkoholfrei, gut gek\\u00fchlt.\", options:[{ type:\"select\", id:\"art\", label:\"Art\", choices:[\"Normal\",\"Alkoholfrei\"], required:true, default:\"Normal\" }] },\r\n        { section:\"Winzerweine\", id:\"white-wine-voegelein\", name:\"Winzerwein V\\u00f6gelein\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2026\/05\/voegelein_silvaner_1200x800_srgb-1.webp\", price:7.9, badge:\"Empfehlung\", info:\"Fr\\u00e4nkischer Silvaner aus der bekannten Lage Nordheimer V\\u00f6gelein. Trocken, frisch und mineralisch mit Noten von gelbem Kernobst, Zitrus und feinen Kr\\u00e4utern. Ein eleganter, unkomplizierter Wei\\u00dfwein mit typisch fr\\u00e4nkischem Charakter.\" },\r\n        { id:\"white-wine-anselmann\", name:\"Winzerwein Anselmann Wei\\u00df\", img:\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2026\/05\/Amselmann_weiss.webp\", price:7.9, badge:\"Empfehlung\", info:\"Trockener Wei\\u00dfburgunder aus der Pfalz. Fruchtbetont und elegant mit Noten von Birne, Quitte und Honigmelone, frisch im Geschmack und angenehm rund. Passt gut zu leichten Speisen oder einfach als feiner Aperitif.\" },\r\n        { id:\"rose-wine-anselmann\", name:\"Winzerwein Anselmann Ros\\u00e9\", img:\"https:\/\/cdn.shopify.com\/s\/files\/1\/0578\/9161\/8875\/files\/41676585_digital-image23neu.jpg?v=1780042477\", price:7.9, badge:\"Empfehlung\", info:\"Sp\\u00e4tburgunder Ros\\u00e9 aus der Pfalz. Fruchtig und harmonisch mit Aromen von Himbeere, Kirsche und Erdbeere, erfrischend mit milder S\\u00fc\\u00dfe. Ein leichter Ros\\u00e9 f\\u00fcr entspannte, sonnige Momente.\" },\r\n        { section:\"Weine\", id:\"white-wine-classic\", name:\"Wei\\u00dfwein Piccolo Classic\", img:\"https:\/\/cdn.shopify.com\/s\/files\/1\/0578\/9161\/8875\/files\/ChatGPT_Image_29._Mai_2026_15_00_19.png?v=1780059749\", price:6.5, info:\"Wei\\u00dfwein Piccolo Classic, 0,25 l.\" },\r\n        { id:\"white-wine-schorle\", name:\"Wei\\u00dfweinschorle\", img:\"https:\/\/cdn.shopify.com\/s\/files\/1\/0578\/9161\/8875\/files\/ChatGPT_Image_29._Mai_2026_17_05_56.png?v=1780067185\", price:5.2, info:\"Wei\\u00dfweinschorle - leicht, spritzig und gut gek\\u00fchlt.\" },\r\n        { id:\"red-wine-classic\", name:\"Rotwein Piccolo Classic\", img:\"https:\/\/cdn.shopify.com\/s\/files\/1\/0578\/9161\/8875\/files\/ChatGPT_Image_29._Mai_2026_16_55_48.png?v=1780066572\", price:6.5, info:\"Rotwein Piccolo Classic, 0,25 l.\" },\r\n        { id:\"rose-wine-classic\", name:\"Ros\\u00e9wein Piccolo Classic\", img:\"https:\/\/cdn.shopify.com\/s\/files\/1\/0578\/9161\/8875\/files\/ChatGPT_Image_29._Mai_2026_16_58_54.png?v=1780066749\", price:6.5, info:\"Ros\\u00e9wein Piccolo Classic, 0,25 l.\" },\r\n        { section:\"Sekt\", id:\"sekt\", name:\"Sekt\", img: ph(\"sekt\", null,\"#7a1f3a\",\"#3a0f1f\"), priceByOption:{ menge:{ \"Winzersekt\":7.9, \"Rotk\\u00e4ppchen Glas 0,1 l\":3.8, \"Rotk\\u00e4ppchen Piccolo 0,2 l\":5.9, \"Rotk\\u00e4ppchen Flasche 0,75 l\":21.5 } }, info:\"Sekt - w\\u00e4hle zwischen Winzersekt und Rotk\\u00e4ppchen.\", options:[{ type:\"select\", id:\"menge\", label:\"Auswahl\", choices:[\"Winzersekt\",\"Rotk\\u00e4ppchen Glas 0,1 l\",\"Rotk\\u00e4ppchen Piccolo 0,2 l\",\"Rotk\\u00e4ppchen Flasche 0,75 l\"], recommended:\"Winzersekt\", required:true, default:\"Winzersekt\" }] }\r\n      ]\r\n    },\r\n    long: {\r\n      name: \"Longdrinks\",\r\n      brandName: \"Longdrinks\",\r\n      brandInfo: \"Unsere Longdrinks starten mit Gin Tonic, Cuba Libre, Whisky Highball und Whisky Tonic. Zus\u00e4tzlich kannst du alle Gin-, Whisky- und Rum-Sorten auch straight bestellen - mit oder ohne Eis.\",\r\n      items: [\r\n        { section:\"Longdrinks\", id:\"gin-tonic\", name:\"Gin Tonic\", img:\"https:\/\/cdn.shopify.com\/s\/files\/1\/0578\/9161\/8875\/files\/13f8538d-00e3-4cd7-854f-545c9ce8c795.jpg?v=1780066906\", price:9.5, info:\"Frisch, klar und elegant: Unser Gin Tonic wird mit Fever-Tree Mediterranean Tonic serviert und bekommt durch deine Gin-Wahl seinen eigenen Charakter. The Botanist ist fein und kr\u00e4uterfrisch, Hendricks Grand Cabaret bringt florale Fruchtigkeit, No. Ten wirkt zitrisch, klassisch und besonders geradlinig.\", options:[{ type:\"select\", id:\"gin\", label:\"Gin\", choices:[\"The Botanist\",\"Hendricks Grand Cabaret\",\"No. Ten\"], required:true, default:\"The Botanist\" }] },\r\n        { id:\"cuba-libre\", name:\"Cuba Libre\", img:\"https:\/\/cdn.shopify.com\/s\/files\/1\/0578\/9161\/8875\/files\/852ee2f4-d1bf-4790-8c53-f6630249cd0a.jpg?v=1780066826\", price:9.5, info:\"Sonnig, lebendig und herrlich unkompliziert: Cuba Libre verbindet Rum, Limette und Coca-Cola zu einem vollen, erfrischenden Klassiker. Plantation XO macht ihn weich und elegant, Botucal schenkt karamellige Tiefe, Don Papa Barokko bringt eine s\u00fc\u00dfere, tropische Note. Dazu w\u00e4hlst du Coca-Cola Original oder Zero.\", options:[{ type:\"select\", id:\"rum\", label:\"Rum\", choices:[\"Plantation XO\",\"Botucal\",\"Don Papa Barokko\"], required:true, default:\"Plantation XO\" },{ type:\"select\", id:\"cola\", label:\"Cola\", choices:[{ label:\"Coca Cola Original\", value:\"Coca Cola Original\", availabilityKey:\"Coca Cola \\u00b7 0,33 l\" },{ label:\"Coca Cola Zero\", value:\"Coca Cola Zero\", availabilityKey:\"Coca Cola Zero \\u00b7 0,33 l\" }], availabilityCat:\"soft\", required:true, default:\"Coca Cola Original\" }] },\r\n        { id:\"whisky-highball\", name:\"Whisky Highball\", img: ph(\"cat_long\", null,\"#241910\",\"#8a5a26\"), price:9.5, info:\"Leicht, spritzig und stilvoll: Der Whisky Highball ist ein eleganter Drink f\u00fcr alle, die Whisky frisch und zug\u00e4nglich genie\u00dfen m\u00f6chten. Connemara bringt feinen Rauch und Tiefe, The Deveron wirkt weich und malzig, Monkey Shoulder ist rund, mild und wunderbar harmonisch.\", options:[{ type:\"select\", id:\"whisky\", label:\"Whisky\", choices:[\"Connemara Peated Single Malt 12 Jahre\",\"The Deveron 10 Jahre\",\"Monkey Shoulder\"], required:true, default:\"The Deveron 10 Jahre\" }] },\r\n        { id:\"whisky-tonic\", name:\"Whisky Tonic\", img: ph(\"cat_long\", null,\"#1e2017\",\"#7d6a2b\"), price:9.5, info:\"Herb, frisch und \u00fcberraschend elegant: Whisky Tonic bringt die aromatische Tiefe des Whiskys mit der feinen Bitterkeit von Fever-Tree Mediterranean Tonic zusammen. Connemara sorgt f\u00fcr rauchige Spannung, The Deveron f\u00fcr weiche Balance, Monkey Shoulder f\u00fcr einen milden, fruchtigen Einstieg.\", options:[{ type:\"select\", id:\"whisky\", label:\"Whisky\", choices:[\"Connemara Peated Single Malt 12 Jahre\",\"The Deveron 10 Jahre\",\"Monkey Shoulder\"], required:true, default:\"The Deveron 10 Jahre\" }] },\r\n        { section:\"Spirits Straight\", id:\"gin-straight\", name:\"Gin Straight\", img: ph(\"cat_long\", null,\"#1d2f26\",\"#4f7a5a\"), price:9.5, info:\"Pur serviert zeigt Gin seine ganze Pers\u00f6nlichkeit. The Botanist wirkt fein, gr\u00fcn und kr\u00e4uterbetont, Hendricks Grand Cabaret ist floraler und fruchtiger, No. Ten klar, zitrisch und klassisch. Mit Eis wird der Gin etwas weicher, ohne Eis bleibt er besonders direkt und aromatisch.\", options:[{ type:\"select\", id:\"gin\", label:\"Gin\", choices:[\"The Botanist\",\"Hendricks Grand Cabaret\",\"No. Ten\"], required:true, default:\"The Botanist\" },{ type:\"select\", id:\"ice\", label:\"Eis\", choices:[\"Mit Eis\",\"Ohne Eis\"], required:true, default:\"Mit Eis\" }] },\r\n        { id:\"whisky-straight\", name:\"Whisky Straight\", img: ph(\"cat_long\", null,\"#241910\",\"#8a5a26\"), price:9.5, info:\"F\u00fcr ruhige Genussmomente: Whisky straight l\u00e4sst Aroma, Textur und Nachklang unverf\u00e4lscht wirken. Connemara bringt feinen Torfrauch, The Deveron 10 Jahre zeigt sich weich und malzig, Monkey Shoulder ist rund, mild und sehr zug\u00e4nglich. Mit Eis wird er k\u00fchler und sanfter, ohne Eis intensiver.\", options:[{ type:\"select\", id:\"whisky\", label:\"Whisky\", choices:[\"Connemara Peated Single Malt 12 Jahre\",\"The Deveron 10 Jahre\",\"Monkey Shoulder\"], required:true, default:\"The Deveron 10 Jahre\" },{ type:\"select\", id:\"ice\", label:\"Eis\", choices:[\"Mit Eis\",\"Ohne Eis\"], required:true, default:\"Mit Eis\" }] },\r\n        { id:\"rum-straight\", name:\"Rum Straight\", img: ph(\"cat_long\", null,\"#281710\",\"#7b3f22\"), price:9.5, info:\"Warm, weich und aromatisch: Rum straight ist ideal, wenn du die Basis ganz bewusst genie\u00dfen m\u00f6chtest. Plantation XO wirkt elegant und rund, Botucal bringt Tiefe mit karamelligen Noten, Don Papa Barokko zeigt sich s\u00fc\u00dfer und tropischer. Mit Eis etwas milder, ohne Eis voller im Ausdruck.\", options:[{ type:\"select\", id:\"rum\", label:\"Rum\", choices:[\"Plantation XO\",\"Botucal\",\"Don Papa Barokko\"], required:true, default:\"Plantation XO\" },{ type:\"select\", id:\"ice\", label:\"Eis\", choices:[\"Mit Eis\",\"Ohne Eis\"], required:true, default:\"Mit Eis\" }] }\r\n      ]\r\n    }\r\n  };\r\n\r\n  const BASE_DATA = JSON.parse(JSON.stringify(DATA));\r\n\r\n  function cloneBaseData(){\r\n    return JSON.parse(JSON.stringify(BASE_DATA));\r\n  }\r\n\r\n  function customDrinkPlaceholder(category){\r\n    const map = {\r\n      hot: ph(\"cat_hot\", null, \"#1a203d\", \"#29316b\"),\r\n      soft: ph(\"cat_soft\", null, \"#102a3a\", \"#195a6b\"),\r\n      wine: ph(\"cat_wine\", null, \"#3d0f1a\", \"#651b28\"),\r\n      long: ph(\"cat_long\", null, \"#153a2a\", \"#1d6b4d\"),\r\n      xmas: ph(\"cat_xmas\", null, \"#4b1c3d\", \"#b23448\")\r\n    };\r\n    return map[category] || ph(\"drink\", null, \"#11162a\", \"#1c2342\");\r\n  }\r\n\r\n  function normalizeCustomDrink(id, drink){\r\n    if(!drink || !drink.name || !drink.category) return null;\r\n    const price = Number(drink.price);\r\n    return {\r\n      id: drink.id || id,\r\n      name: String(drink.name).trim(),\r\n      img: drink.img || customDrinkPlaceholder(drink.category),\r\n      price: Number.isFinite(price) ? price : 0,\r\n      info: drink.info || \"\",\r\n      recommendable: !!drink.recommendable,\r\n      salesMoment: drink.salesMoment || \"\",\r\n      _customDrink: true\r\n    };\r\n  }\r\n\r\n  function applyCustomDrinks(remote){\r\n    const fresh = cloneBaseData();\r\n    Object.keys(DATA).forEach(key => delete DATA[key]);\r\n    Object.assign(DATA, fresh);\r\n\r\n    Object.entries(remote || {}).forEach(([id, drink])=>{\r\n      const item = normalizeCustomDrink(id, drink);\r\n      if(!item || !DATA[drink.category]) return;\r\n      const existing = DATA[drink.category].items.find(entry => (\r\n        entry.name === item.name || entry.name === drink.baseName || entry.id === drink.baseId\r\n      ));\r\n      if(existing){\r\n        if(String(drink.name || '').trim()) existing.name = String(drink.name).trim();\r\n        if(Number.isFinite(Number(drink.price))) existing.price = Number(drink.price);\r\n        if(String(drink.img || '').trim()) existing.img = String(drink.img).trim();\r\n        if(String(drink.info || '').trim()) existing.info = String(drink.info).trim();\r\n        existing.recommendable = !!drink.recommendable;\r\n        existing.salesMoment = drink.salesMoment || existing.salesMoment || \"\";\r\n        existing._customDrinkId = id;\r\n        return;\r\n      }\r\n      DATA[drink.category].items.push(item);\r\n    });\r\n\r\n    pruneUnavailableBasketItems();\r\n    renderWeeklyRecommendations();\r\n    if(activeCat) renderList();\r\n    if(cartDlg.open) refreshCartDialog();\r\n  }\r\n\r\n  const cats = document.getElementById(\"cats\");\r\n  const list = document.getElementById(\"list\");\r\n  const wineBanner = document.getElementById(\"wineBanner\");\r\n  const weeklyPicks = document.getElementById(\"weeklyPicks\");\r\n  const weeklyPicksGrid = document.getElementById(\"weeklyPicksGrid\");\r\n  const cart = document.getElementById(\"cart\");\r\n  const cust = document.getElementById(\"cust\");\r\n  const nameError = document.getElementById(\"nameError\");\r\n  const stylistHidden = document.getElementById(\"stylist\");\r\n  const sendBtn = document.getElementById(\"sendBtn\");\r\n  const clearBtn= document.getElementById(\"clearBtn\");\r\n  const toast  = document.getElementById(\"toast\");\r\n  const cartOpen = document.getElementById(\"cartOpen\");\r\n  const cartBadge= document.getElementById(\"cartBadge\");\r\n  const cartbarEl = document.querySelector(\".cartbar\");\r\n\r\n  const itemsPopup = document.getElementById(\"itemsPopup\");\r\n  const popupTitle = document.getElementById(\"popupTitle\");\r\n  const backBtn = document.getElementById(\"backBtn\");\r\n  const catHint = document.getElementById(\"catHint\");\r\n\r\n  const cfg = document.getElementById(\"cfg\");\r\n  const cfgTitle = document.getElementById(\"cfgTitle\");\r\n  const cfgFields= document.getElementById(\"cfgFields\");\r\n  const cfgHint  = document.getElementById(\"cfgHint\");\r\n  const cfgCancel= document.getElementById(\"cfgCancel\");\r\n  const cfgAdd   = document.getElementById(\"cfgAdd\");\r\n\r\n  const cartDlg   = document.getElementById(\"cartDlg\");\r\n  const cartList  = document.getElementById(\"cartList\");\r\n  const cartEmpty = document.getElementById(\"cartEmpty\");\r\n  const cartSummary = document.getElementById(\"cartSummary\");\r\n  const cartClose = document.getElementById(\"cartClose\");\r\n  const cartClear = document.getElementById(\"cartClear\");\r\n  const cartSubmit= document.getElementById(\"cartSubmit\");\r\n\r\n  const sent   = document.getElementById(\"sent\");\r\n  const sentMeta = document.getElementById(\"sentMeta\");\r\n  const sentList = document.getElementById(\"sentList\");\r\n  const sentClose= document.getElementById(\"sentClose\");\r\n  const sentNew  = document.getElementById(\"sentNew\");\r\n\r\n  const orderStatusPage = document.getElementById(\"orderStatusPage\");\r\n  const orderStatusPanel = document.getElementById(\"orderStatusPanel\");\r\n  const orderStatusSummary = document.getElementById(\"orderStatusSummary\");\r\n  const statusNewOrder = document.getElementById(\"statusNewOrder\");\r\n  const statusReorder = document.getElementById(\"statusReorder\");\r\n  const smartUpsell = document.getElementById(\"smartUpsell\");\r\n  const smartUpsellMoment = document.getElementById(\"smartUpsellMoment\");\r\n  const smartUpsellTitle = document.getElementById(\"smartUpsellTitle\");\r\n  const smartUpsellText = document.getElementById(\"smartUpsellText\");\r\n  const smartUpsellImage = document.getElementById(\"smartUpsellImage\");\r\n  const smartUpsellName = document.getElementById(\"smartUpsellName\");\r\n  const smartUpsellPrice = document.getElementById(\"smartUpsellPrice\");\r\n  const smartUpsellAdd = document.getElementById(\"smartUpsellAdd\");\r\n\r\n  const infoDlg   = document.getElementById(\"infoDlg\");\r\n  const infoTitle = document.getElementById(\"infoTitle\");\r\n  const infoBody  = document.getElementById(\"infoBody\");\r\n  const infoClose = document.getElementById(\"infoClose\");\r\n\r\n  const stylistPicker = document.getElementById(\"stylistPicker\");\r\n  const stylistList   = document.getElementById(\"stylistList\");\r\n  const stylistSummaryName = document.getElementById(\"stylistSummaryName\");\r\n  const stylistSummaryImg  = document.getElementById(\"stylistSummaryImg\");\r\n  const stylistDlg = document.getElementById(\"stylistDlg\");\r\n  const stylistDlgClose = document.getElementById(\"stylistDlgClose\");\r\n\r\n  \/\/ In-App Overlay Elemente (Variante B)\r\n  const statusOverlay = document.getElementById(\"statusOverlay\");\r\n  const statusOverlayIcon = document.getElementById(\"statusOverlayIcon\");\r\n  const statusOverlayTitle = document.getElementById(\"statusOverlayTitle\");\r\n  const statusOverlayText = document.getElementById(\"statusOverlayText\");\r\n  const statusOverlayClose = document.getElementById(\"statusOverlayClose\");\r\n\r\n  let activeCat = null;\r\n  let pendingItem = null;\r\n  const basket = [];\r\n  let isSubmitting = false;\r\n\r\n  \/* Status-Tracking f\u00fcr letzte Bestellung des Gastes *\/\r\n  const LS_LAST_ORDER_ID = \"bev_lastOrderId\";\r\n  const LS_PENDING_ORDERS = \"bev_pendingOrders\";\r\n  const LS_GUEST_PROFILE = \"bev_guestProfile\";\r\n  const SEND_TIMEOUT_MS = 9000;\r\n  let statusUnsub = null;\r\n  let lastKnownStatus = null;\r\n  let statusOverlayTimer = null;\r\n  let statusPollTimer = null;\r\n  let activeStatusOrderId = null;\r\n  let isFlushingQueue = false;\r\n  let confirmStatusTimer = null;\r\n  let lastOrderSummary = null;\r\n  let returnToCartAfterStylist = false;\r\n  let activeUpsellRecommendation = null;\r\n\r\n  function saveGuestProfile(){\r\n    try{\r\n      window.sessionStorage.setItem(LS_GUEST_PROFILE, JSON.stringify({\r\n        name:cust?.value?.trim() || \"\",\r\n        stylist:stylistHidden?.value || \"Unbekannt\"\r\n      }));\r\n    }catch(e){}\r\n  }\r\n\r\n  function restoreGuestProfile(){\r\n    try{\r\n      const profile = JSON.parse(window.sessionStorage.getItem(LS_GUEST_PROFILE) || \"null\");\r\n      if(!profile) return;\r\n      if(cust && profile.name) cust.value = String(profile.name);\r\n      if(profile.stylist && profile.stylist !== \"Unbekannt\"){\r\n        const stylist = STYLISTS.find(entry => entry.name === profile.stylist);\r\n        if(stylist){\r\n          stylistHidden.value = stylist.name;\r\n          stylistSummaryName.textContent = stylist.name;\r\n          stylistSummaryImg.src = stylist.img;\r\n        }\r\n      }\r\n    }catch(e){}\r\n  }\r\n\r\n  function normalizeOrderStatus(status){\r\n    if(status == null || status === \"\") return null;\r\n    const value = String(status).trim().toLowerCase();\r\n    const map = {\r\n      new:\"new\",\r\n      neu:\"new\",\r\n      sent:\"new\",\r\n      pending:\"new\",\r\n      open:\"new\",\r\n      offen:\"new\",\r\n      seen:\"seen\",\r\n      gesehen:\"seen\",\r\n      accepted:\"seen\",\r\n      preparing:\"seen\",\r\n      in_bearbeitung:\"seen\",\r\n      in_progress:\"seen\",\r\n      inprogress:\"seen\",\r\n      bearbeitung:\"seen\",\r\n      delivering:\"delivering\",\r\n      delivery:\"delivering\",\r\n      unterwegs:\"delivering\",\r\n      on_the_way:\"delivering\",\r\n      ontheway:\"delivering\",\r\n      done:\"done\",\r\n      delivered:\"done\",\r\n      served:\"done\",\r\n      completed:\"done\",\r\n      complete:\"done\",\r\n      closed:\"done\",\r\n      fertig:\"done\",\r\n      abgeschlossen:\"done\"\r\n    };\r\n    return map[value] || value;\r\n  }\r\n\r\n  function updateStatusUI(status){\r\n    const bar = orderStatusPanel || document.getElementById(\"orderStatus\");\r\n    if(!bar) return;\r\n    status = normalizeOrderStatus(status);\r\n\r\n    const cfgMap = {\r\n      new: {\r\n        icon:\"\u2713\",\r\n        headline:\"Eingegangen\",\r\n        subline:\"Deine Bestellung ist im Salon angekommen.\"\r\n      },\r\n      seen: {\r\n        icon:\"II\",\r\n        headline:\"Wird vorbereitet\",\r\n        subline:\"Wir bereiten dein Getr\u00e4nk vor.\"\r\n      },\r\n      delivering: {\r\n        icon:\"\u2192\",\r\n        headline:\"Auf dem Weg\",\r\n        subline:\"Dein Getr\u00e4nk ist gleich bei dir am Platz.\"\r\n      },\r\n      done: {\r\n        icon:\"\u2713\",\r\n        headline:\"Serviert\",\r\n        subline:\"Dein Getr\u00e4nk wurde serviert.\"\r\n      }\r\n    };\r\n\r\n    if(!status || !cfgMap[status]){\r\n      bar.hidden = true;\r\n      bar.innerHTML = \"\";\r\n      bar.removeAttribute(\"data-status\");\r\n      bar.className = bar.id === \"orderStatusPanel\"\r\n        ? \"status-card status-combo status-page-panel\"\r\n        : \"status-card status-combo\";\r\n      return;\r\n    }\r\n\r\n    const cfg = cfgMap[status];\r\n\r\n    bar.hidden = false;\r\n    bar.dataset.status = status;\r\n    bar.className = bar.id === \"orderStatusPanel\"\r\n      ? \"status-card status-combo status-page-panel status-\" + status\r\n      : \"status-card status-combo status-\" + status;\r\n\r\n    bar.innerHTML = `\r\n      <div class=\"combo-ticket\">\r\n        <div class=\"combo-ticket__icon\">${cfg.icon}<\/div>\r\n        <div class=\"combo-ticket__body\">\r\n          <div class=\"combo-ticket__title\">Kirstin Ellen Vietze Service<\/div>\r\n          <div class=\"combo-ticket__meta\">Wir k\u00fcmmern uns um deine Bestellung.<\/div>\r\n        <\/div>\r\n        <div class=\"combo-ticket__tag\">Salonservice<\/div>\r\n      <\/div>\r\n\r\n      <div class=\"combo-stepper\">\r\n        <div class=\"cstep cstep--new\">\r\n          <div class=\"cstep__dot\">1<\/div>\r\n          <div class=\"cstep__label\">Eingegangen<\/div>\r\n        <\/div>\r\n        <div class=\"cstep cstep--seen\">\r\n          <div class=\"cstep__dot\">2<\/div>\r\n          <div class=\"cstep__label\">Wird vorbereitet<\/div>\r\n        <\/div>\r\n        <div class=\"cstep cstep--delivering\">\r\n          <div class=\"cstep__dot\">3<\/div>\r\n          <div class=\"cstep__label\">Auf dem Weg<\/div>\r\n        <\/div>\r\n        <div class=\"cstep cstep--done\">\r\n          <div class=\"cstep__dot\">4<\/div>\r\n          <div class=\"cstep__label\">Serviert<\/div>\r\n        <\/div>\r\n      <\/div>\r\n\r\n      <div class=\"status-copy\">\r\n        <p class=\"copy-headline\">\r\n          <span class=\"copy-icon\">${cfg.icon}<\/span>${cfg.headline}\r\n        <\/p>\r\n        <p class=\"copy-subline\">${cfg.subline}<\/p>\r\n      <\/div>\r\n    `;\r\n  }\r\n\r\n  function showOrderStatusPage(status = lastKnownStatus || \"new\"){\r\n    updateOrderStatusSummary();\r\n    updateStatusUI(status);\r\n    renderSmartUpsell();\r\n    if(orderStatusPage){\r\n      orderStatusPage.hidden = false;\r\n      window.scrollTo({top:0, behavior:\"smooth\"});\r\n    }\r\n  }\r\n\r\n  function updateOrderStatusSummary(){\r\n    if(!orderStatusSummary) return;\r\n    if(!lastOrderSummary){\r\n      orderStatusSummary.hidden = true;\r\n      orderStatusSummary.textContent = \"\";\r\n      return;\r\n    }\r\n    const count = lastOrderSummary.count || 0;\r\n    const drinkWord = count === 1 ? \"Getr\u00e4nk\" : \"Getr\u00e4nke\";\r\n    const namePart = lastOrderSummary.customer ? `Bestellung f\u00fcr ${lastOrderSummary.customer}` : \"Deine Bestellung\";\r\n    orderStatusSummary.textContent = `${namePart} \u00b7 ${count} ${drinkWord}`;\r\n    orderStatusSummary.hidden = false;\r\n  }\r\n\r\n  function hideOrderStatusPage(){\r\n    if(orderStatusPage){\r\n      orderStatusPage.hidden = true;\r\n      document.activeElement?.blur();\r\n    }\r\n  }\r\n\r\n  function completeStatusTracking(){\r\n    try{\r\n      window.localStorage.removeItem(LS_LAST_ORDER_ID);\r\n    }catch(e){}\r\n    if(statusUnsub){\r\n      statusUnsub();\r\n      statusUnsub = null;\r\n    }\r\n    stopStatusPolling();\r\n    activeStatusOrderId = null;\r\n    lastKnownStatus = null;\r\n    setTimeout(()=>{\r\n      if(!orderStatusPage || orderStatusPage.hidden) updateStatusUI(null);\r\n    }, 15000);\r\n  }\r\n\r\n  function applyOrderStatus(rawStatus, data = {}){\r\n    const status = normalizeOrderStatus(rawStatus || \"new\");\r\n    if(!status) return;\r\n    if(Array.isArray(data.items)){\r\n      lastOrderSummary = {\r\n        customer:String(data.forCustomer || \"\"),\r\n        count:data.items.length,\r\n        items:data.items.map(item=>({...item}))\r\n      };\r\n      updateOrderStatusSummary();\r\n    }\r\n\r\n    if(status !== lastKnownStatus){\r\n      handleStatusChange(status, data);\r\n      lastKnownStatus = status;\r\n    }\r\n\r\n    updateStatusUI(status);\r\n\r\n    if(status === \"done\"){\r\n      completeStatusTracking();\r\n    }\r\n  }\r\n\r\n  function stopStatusPolling(){\r\n    if(statusPollTimer){\r\n      clearInterval(statusPollTimer);\r\n      statusPollTimer = null;\r\n    }\r\n  }\r\n\r\n  async function pollOrderStatus(orderId){\r\n    if(!orderId) return;\r\n    try{\r\n      const res = await fetchWithTimeout(firebaseUrl(`orders\/${orderId}`), {\r\n        method:\"GET\",\r\n        cache:\"no-store\"\r\n      }, 5000);\r\n      if(!res.ok) throw new Error(`Status ${res.status}`);\r\n      const val = await res.json();\r\n      if(val){\r\n        applyOrderStatus(val.status || \"new\", val);\r\n      }\r\n    }catch(e){\r\n      console.warn(\"Status polling failed\", e);\r\n    }\r\n  }\r\n\r\n  function startStatusPolling(orderId){\r\n    stopStatusPolling();\r\n    pollOrderStatus(orderId);\r\n    statusPollTimer = setInterval(()=> pollOrderStatus(orderId), 3500);\r\n  }\r\n\r\n  \/* ========= Variante B: Browser Notification + In-App Overlay ========= *\/\r\n\r\n  function ensureNotificationPermission(){\r\n    if(typeof Notification === \"undefined\") return;\r\n    if(Notification.permission === \"default\"){\r\n      try{\r\n        Notification.requestPermission().catch(()=>{});\r\n      }catch(e){}\r\n    }\r\n  }\r\n\r\n  function showStatusNotification(status, data){\r\n    if(typeof Notification === \"undefined\") return;\r\n    const customer = (data && data.forCustomer && String(data.forCustomer).trim()) || \"\";\r\n    const namePart = customer ? `, ${customer}` : \"\";\r\n\r\n    let body = \"\";\r\n    if(status === \"delivering\"){\r\n      body = `Dein Getr\u00e4nk ist unterwegs zu dir${namePart}.`;\r\n    }else{\r\n      return;\r\n    }\r\n\r\n    const title = \"KEV Getr\u00e4nkeservice\";\r\n    const options = {\r\n      body,\r\n      tag: \"kev-drink-status\",\r\n      renotify: true,\r\n      icon: \"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2025\/10\/Costalatte1200x800.png\"\r\n    };\r\n\r\n    if(Notification.permission === \"granted\"){\r\n      new Notification(title, options);\r\n    }else if(Notification.permission === \"default\"){\r\n      try{\r\n        Notification.requestPermission().then((perm)=>{\r\n          if(perm === \"granted\"){\r\n            new Notification(title, options);\r\n          }\r\n        }).catch(()=>{});\r\n      }catch(e){}\r\n    }\r\n  }\r\n\r\n  function showStatusOverlay(status, data){\r\n    if(!statusOverlay) return;\r\n\r\n    const customer = (data && data.forCustomer && String(data.forCustomer).trim()) || \"\";\r\n    const nameToken = customer || \"dir\";\r\n\r\n    const map = {\r\n      delivering: {\r\n        icon:\"\ud83d\udeb6\",\r\n        title:`Dein Getr\u00e4nk ist unterwegs, ${nameToken}`,\r\n        text:\"Lehn dich zur\u00fcck \u2013 wir bringen dir dein Getr\u00e4nk gleich an den Platz.\"\r\n      },\r\n    };\r\n\r\n    const cfg = map[status];\r\n    if(!cfg) return;\r\n\r\n    if(statusOverlayTimer){\r\n      clearTimeout(statusOverlayTimer);\r\n      statusOverlayTimer = null;\r\n    }\r\n\r\n    statusOverlayIcon.textContent = cfg.icon;\r\n    statusOverlayTitle.textContent = cfg.title;\r\n    statusOverlayText.textContent = cfg.text;\r\n    statusOverlay.hidden = false;\r\n\r\n    statusOverlayTimer = setTimeout(()=>{\r\n      statusOverlay.hidden = true;\r\n    }, 15000);\r\n  }\r\n\r\n  function handleStatusChange(status, data){\r\n    if(status === \"delivering\"){\r\n      showStatusOverlay(status, data);\r\n      showStatusNotification(status, data);\r\n    }\r\n  }\r\n\r\n  if(statusOverlayClose){\r\n    statusOverlayClose.addEventListener(\"click\", ()=>{\r\n      statusOverlay.hidden = true;\r\n    });\r\n  }\r\n  if(statusOverlay){\r\n    statusOverlay.addEventListener(\"click\", (e)=>{\r\n      if(e.target === statusOverlay){\r\n        statusOverlay.hidden = true;\r\n      }\r\n    });\r\n  }\r\n\r\n  function startStatusListener(orderId){\r\n    if(!orderId) return;\r\n\r\n    if(typeof statusUnsub === \"function\"){\r\n      statusUnsub();\r\n      statusUnsub = null;\r\n    }\r\n\r\n    stopStatusPolling();\r\n    activeStatusOrderId = orderId;\r\n    lastKnownStatus = null;\r\n    startStatusPolling(orderId);\r\n\r\n    const orderRef = ref(db, \"orders\/\" + orderId);\r\n    statusUnsub = onValue(orderRef, (snap)=>{\r\n      const val = snap.val();\r\n      if(!val){\r\n        return;\r\n      }\r\n      applyOrderStatus(val.status || \"new\", val);\r\n    }, (err)=>{\r\n      console.warn(\"Realtime status listener failed\", err);\r\n    });\r\n\r\n    try{\r\n      window.localStorage.setItem(LS_LAST_ORDER_ID, orderId);\r\n    }catch(e){}\r\n  }\r\n\r\n  function restoreLastStatusListener(){\r\n    try{\r\n      const lastId = window.localStorage.getItem(LS_LAST_ORDER_ID);\r\n      if(lastId){\r\n        startStatusListener(lastId);\r\n        showOrderStatusPage(\"new\");\r\n      }\r\n    }catch(e){}\r\n  }\r\n\r\n  function createOrderId(){\r\n    const rand = Math.random().toString(36).slice(2, 10);\r\n    return `web_${Date.now()}_${rand}`;\r\n  }\r\n\r\n  function firebaseUrl(path){\r\n    return `${DB_URL}\/${path}.json`;\r\n  }\r\n\r\n  function trackCustomerEvent(type, details = {}){\r\n    const payload = {\r\n      type,\r\n      ...details,\r\n      rotation:recommendationRotationIndex(),\r\n      createdAt:Date.now(),\r\n      source:\"mobile-drink-page\"\r\n    };\r\n    fetch(firebaseUrl(\"analytics\/customerEvents\"), {\r\n      method:\"POST\",\r\n      headers:{\"Content-Type\":\"application\/json\"},\r\n      body:JSON.stringify(payload),\r\n      keepalive:true\r\n    }).catch(()=>{});\r\n  }\r\n\r\n  async function fetchWithTimeout(url, options = {}, timeoutMs = SEND_TIMEOUT_MS){\r\n    const controller = new AbortController();\r\n    const timer = setTimeout(()=> controller.abort(), timeoutMs);\r\n    try{\r\n      return await fetch(url, {...options, signal: controller.signal});\r\n    }finally{\r\n      clearTimeout(timer);\r\n    }\r\n  }\r\n\r\n  async function orderExists(orderId){\r\n    const res = await fetchWithTimeout(firebaseUrl(`orders\/${orderId}\/clientOrderId`), {\r\n      method:\"GET\",\r\n      cache:\"no-store\"\r\n    }, 5000);\r\n    if(!res.ok) throw new Error(`Status ${res.status}`);\r\n    const val = await res.json();\r\n    return val != null;\r\n  }\r\n\r\n  async function writeOrderPayload(orderId, payload){\r\n    const res = await fetchWithTimeout(firebaseUrl(`orders\/${orderId}`), {\r\n      method:\"PUT\",\r\n      headers:{\"Content-Type\":\"application\/json\"},\r\n      body:JSON.stringify({...payload, clientOrderId:orderId})\r\n    });\r\n    if(!res.ok) throw new Error(`Status ${res.status}`);\r\n    return orderId;\r\n  }\r\n\r\n  function readPendingOrders(){\r\n    try{\r\n      const raw = window.localStorage.getItem(LS_PENDING_ORDERS);\r\n      const parsed = raw ? JSON.parse(raw) : [];\r\n      return Array.isArray(parsed) ? parsed : [];\r\n    }catch(e){\r\n      return [];\r\n    }\r\n  }\r\n\r\n  function writePendingOrders(entries){\r\n    try{\r\n      window.localStorage.setItem(LS_PENDING_ORDERS, JSON.stringify(entries));\r\n    }catch(e){}\r\n  }\r\n\r\n  function queuePendingOrder(entry){\r\n    const pending = readPendingOrders();\r\n    const exists = pending.some(x => x.orderId === entry.orderId);\r\n    if(!exists){\r\n      pending.push(entry);\r\n      writePendingOrders(pending);\r\n    }\r\n  }\r\n\r\n  function removePendingOrder(orderId){\r\n    writePendingOrders(readPendingOrders().filter(x => x.orderId !== orderId));\r\n  }\r\n\r\n  async function flushPendingOrders({silent = true} = {}){\r\n    if(isFlushingQueue) return;\r\n    const pending = readPendingOrders();\r\n    if(!pending.length) return;\r\n\r\n    isFlushingQueue = true;\r\n    try{\r\n      for(const entry of pending){\r\n        try{\r\n          const exists = await orderExists(entry.orderId);\r\n          if(!exists){\r\n            await writeOrderPayload(entry.orderId, entry.payload);\r\n          }\r\n          removePendingOrder(entry.orderId);\r\n          startStatusListener(entry.orderId);\r\n          if(!silent) showToast(true, \"Offene Bestellung wurde gesendet.\");\r\n        }catch(e){\r\n          console.warn(\"Pending order still not sent\", e);\r\n          break;\r\n        }\r\n      }\r\n    }finally{\r\n      isFlushingQueue = false;\r\n    }\r\n  }\r\n\r\n  const xmasCard = document.querySelector('.cat[data-id=\"xmas\"]');\r\n  if (xmasCard) {\r\n    const enabled = isYes(CATEGORY_ACTIVE.xmas);\r\n    xmasCard.classList.toggle('is-hidden', !enabled);\r\n    xmasCard.classList.toggle('disabled', !enabled);\r\n  }\r\n\r\n  const el = (tag, cls, html)=>{\r\n    const n=document.createElement(tag);\r\n    if(cls) n.className=cls;\r\n    if(html!=null) n.innerHTML=html;\r\n    return n;\r\n  };\r\n\r\n  function showToast(ok, msg, duration = 2200){\r\n    toast.className = \"toast \" + (ok?\"ok\":\"err\");\r\n    toast.textContent = msg;\r\n    toast.style.display = \"block\";\r\n    setTimeout(()=> toast.style.display=\"none\", duration);\r\n  }\r\n\r\n  function bumpCartbar(){\r\n    if(!cartbarEl) return;\r\n    cartbarEl.classList.remove(\"cartbar--bump\");\r\n    void cartbarEl.offsetWidth;\r\n    cartbarEl.classList.add(\"cartbar--bump\");\r\n    setTimeout(()=> cartbarEl.classList.remove(\"cartbar--bump\"), 420);\r\n  }\r\n\r\n  function buildSubtitleFromOpts(opts){\r\n    if(!opts) return \"\";\r\n    const parts = [];\r\n    for (const [k,v] of Object.entries(opts)) {\r\n      if (v===\"\" || v===false || v==null) continue;\r\n      if (k===\"flavorOn\") {\r\n        if (opts.flavor) parts.push(`Flavor: ${opts.flavor}`);\r\n        else parts.push(\"mit Flavor\");\r\n      } else {\r\n        parts.push(String(v));\r\n      }\r\n    }\r\n    return parts.join(\" \\u00b7 \");\r\n  }\r\n\r\n  function formatPrice(value){\r\n    if(typeof value !== \"number\" || Number.isNaN(value)) return \"\";\r\n    if(value === 0) return \"gratis\";\r\n    return `${value.toFixed(2).replace(\".\",\",\")} \\u20ac`;\r\n  }\r\n\r\n  function getItemPriceValue(item, opts){\r\n    if(!item) return null;\r\n    const maps = item.priceByOption;\r\n    if(maps && opts){\r\n      for(const [key, valueMap] of Object.entries(maps)){\r\n        const selected = opts[key];\r\n        if(selected != null && Object.prototype.hasOwnProperty.call(valueMap, selected)){\r\n          return valueMap[selected];\r\n        }\r\n      }\r\n    }\r\n    return typeof item.price === \"number\" ? item.price : null;\r\n  }\r\n\r\n  function getItemPriceLabel(item, opts){\r\n    if(!item) return \"\";\r\n    const directValue = getItemPriceValue(item, opts);\r\n    if(directValue != null) return formatPrice(directValue);\r\n    if(item.priceByOption){\r\n      const values = Object.values(item.priceByOption)\r\n        .flatMap(map => Object.values(map))\r\n        .filter(value => typeof value === \"number\" && !Number.isNaN(value));\r\n      if(values.length){\r\n        const min = Math.min(...values);\r\n        const max = Math.max(...values);\r\n        return min === max ? formatPrice(min) : `ab ${formatPrice(min)}`;\r\n      }\r\n    }\r\n    return \"\";\r\n  }\r\n\r\n  function updateCartUI(){\r\n    cart.innerHTML = \"\";\r\n    basket.forEach((b)=>{\r\n      const detailParts = [b._subtitle, b._priceLabel].filter(Boolean);\r\n      const label = b.name + (detailParts.length ? ` \u00b7 ${detailParts.join(\" \u00b7 \")}` : \"\");\r\n      const chip = el(\"div\",\"chip\", `${label} <span class=\"x\" title=\"Alle entfernen\">\u00d7<\/span>`);\r\n      const keyId = b.id;\r\n      const keyOpts = JSON.stringify(b.opts||{});\r\n      chip.querySelector(\".x\").addEventListener(\"click\", ()=>{\r\n        const filtered = basket.filter(entry => !(entry.id===keyId && JSON.stringify(entry.opts||{})===keyOpts));\r\n        basket.length = 0;\r\n        basket.push(...filtered);\r\n        updateCartUI();\r\n        if(navigator.vibrate) navigator.vibrate(10);\r\n      });\r\n      cart.appendChild(chip);\r\n    });\r\n\r\n    cartBadge.textContent = String(basket.length);\r\n    const hasName = cust.value.trim().length>0;\r\n    sendBtn.disabled = isSubmitting || !basket.length;\r\n    cartSubmit.disabled = isSubmitting || !basket.length;\r\n    sendBtn.setAttribute(\"aria-busy\", isSubmitting ? \"true\" : \"false\");\r\n    cartSubmit.setAttribute(\"aria-busy\", isSubmitting ? \"true\" : \"false\");\r\n\r\n    if(cartbarEl){\r\n      cartbarEl.classList.toggle(\"cartbar--empty\", basket.length === 0);\r\n      cartbarEl.classList.toggle(\"cartbar--has-items\", basket.length > 0);\r\n    }\r\n\r\n    const drinkWord = basket.length === 1 ? \"Getr\u00e4nk\" : \"Getr\u00e4nke\";\r\n    if(isSubmitting){\r\n      sendBtn.textContent = \"Wird gesendet...\";\r\n      cartSubmit.textContent = \"Wird gesendet...\";\r\n    }else if(basket.length && !hasName){\r\n      sendBtn.textContent = \"Bestellung abschlie\u00dfen\";\r\n      cartSubmit.textContent = \"Name eingeben & bestellen\";\r\n    }else if(basket.length){\r\n      sendBtn.textContent = `${basket.length} ${drinkWord} bestellen`;\r\n      cartSubmit.textContent = \"Bestellung absenden\";\r\n    }else{\r\n      sendBtn.textContent = \"Absenden\";\r\n      cartSubmit.textContent = \"Absenden\";\r\n    }\r\n\r\n    if(cartDlg.open) refreshCartDialog();\r\n  }\r\n\r\n  function groupBasket(){\r\n    const map = new Map();\r\n    basket.forEach((b)=>{\r\n      const key = b.id + \"|\" + JSON.stringify(b.opts||{});\r\n      if(!map.has(key)){\r\n        map.set(key, {\r\n          key,\r\n          id: b.id,\r\n          name: b.name,\r\n          subtitle: [b._subtitle || buildSubtitleFromOpts(b.opts||{}), b._priceLabel].filter(Boolean).join(\" \u00b7 \"),\r\n          count: 0,\r\n          optsKey: JSON.stringify(b.opts||{})\r\n        });\r\n      }\r\n      map.get(key).count++;\r\n    });\r\n    return Array.from(map.values());\r\n  }\r\n\r\n  function refreshCartDialog(){\r\n    const groups = groupBasket();\r\n    cartList.innerHTML = \"\";\r\n    const total = basket.length;\r\n    cartSummary.textContent = `${total} Position${total===1?\"\":\"en\"}`;\r\n    cartEmpty.style.display = total ? \"none\" : \"block\";\r\n    cartClear.disabled = !total;\r\n    cartSubmit.disabled = isSubmitting || !total;\r\n\r\n    groups.forEach(g=>{\r\n      const row = el(\"div\",\"cart-item\");\r\n      const left = el(\"div\",\"\", `\r\n        <div class=\"tt\">${g.name}<\/div>\r\n        ${g.subtitle ? `<div class=\"cart-opts\">${g.subtitle}<\/div>` : ``}\r\n      `);\r\n      const right = el(\"div\",\"qty\");\r\n      const badge = el(\"span\",\"badge\", String(g.count));\r\n      const minus = el(\"button\",\"btn icon secondary\",\"\u2212\");\r\n      const removeAll = el(\"button\",\"btn icon warning\",\"\u2715\");\r\n      minus.addEventListener(\"click\", ()=>{\r\n        const idx = basket.findIndex(b => b.id===g.id && JSON.stringify(b.opts||{})===g.optsKey);\r\n        if(idx>=0){ basket.splice(idx,1); updateCartUI(); }\r\n      });\r\n      removeAll.addEventListener(\"click\", ()=>{\r\n        const filtered = basket.filter(b => !(b.id===g.id && JSON.stringify(b.opts||{})===g.optsKey));\r\n        basket.length = 0; basket.push(...filtered);\r\n        updateCartUI();\r\n      });\r\n      right.append(minus, badge, removeAll);\r\n      row.append(left, right);\r\n      cartList.appendChild(row);\r\n    });\r\n  }\r\n\r\n  const itemActiveByName = (catId, itemName)=>{\r\n    const table = AKTIV[catId];\r\n    if(catId === \"long\" && itemName === \"Gin Tonic\"){\r\n      return isYes(table?.[itemName]) && isYes(AKTIV.soft?.[\"Fever-Tree Mediterranean Tonic \\u00b7 0,2 l\"]);\r\n    }\r\n    if(catId === \"long\" && itemName === \"Whisky Tonic\"){\r\n      return isYes(table?.[itemName]) && isYes(AKTIV.soft?.[\"Fever-Tree Mediterranean Tonic \\u00b7 0,2 l\"]);\r\n    }\r\n    if(catId === \"long\" && itemName === \"Cuba Libre\"){\r\n      const hasCola = isYes(AKTIV.soft?.[\"Coca Cola \\u00b7 0,33 l\"]) || isYes(AKTIV.soft?.[\"Coca Cola Zero \\u00b7 0,33 l\"]);\r\n      return isYes(table?.[itemName]) && hasCola;\r\n    }\r\n    return isYes(table?.[itemName]);\r\n  };\r\n\r\n  const RECOMMENDATION_ROTATION_START = Date.UTC(2026, 6, 6);\r\n  const RECOMMENDATION_ROTATIONS = [\r\n    {\r\n      title:\"Salon-Klassiker\",\r\n      slots:[\r\n        {badge:\"Geht immer\", candidates:[[\"hot\",\"cappuccino\"],[\"hot\",\"latte\"],[\"hot\",\"cafecrema\"],[\"hot\",\"aroma-coffee\"]]},\r\n        {badge:\"Fruchtig & frisch\", candidates:[[\"soft\",\"vio-apple\"],[\"soft\",\"vio-berry\"],[\"soft\",\"vio-lemon\"],[\"soft\",\"coke-zero\"],[\"soft\",\"coke\"]]},\r\n        {badge:\"Unsere Weinempfehlung\", candidates:[[\"wine\",\"white-wine-anselmann\"],[\"wine\",\"white-wine-voegelein\"],[\"wine\",\"rose-wine-anselmann\"],[\"wine\",\"white-wine-classic\"]]},\r\n        {badge:\"Etwas Besonderes\", candidates:[[\"long\",\"gin-tonic\"],[\"long\",\"cuba-libre\"],[\"long\",\"whisky-highball\"],[\"long\",\"whisky-tonic\"]]}\r\n      ]\r\n    },\r\n    {\r\n      title:\"Fruchtig & entspannt\",\r\n      slots:[\r\n        {badge:\"Cremiger Favorit\", candidates:[[\"hot\",\"latte\"],[\"hot\",\"cappuccino\"],[\"hot\",\"milchkaffee\"],[\"hot\",\"cafecrema\"]]},\r\n        {badge:\"Fruchtig & frisch\", candidates:[[\"soft\",\"vio-berry\"],[\"soft\",\"vio-apple\"],[\"soft\",\"vio-lemon\"],[\"soft\",\"coke-zero\"]]},\r\n        {badge:\"Aus Franken\", candidates:[[\"wine\",\"white-wine-voegelein\"],[\"wine\",\"white-wine-anselmann\"],[\"wine\",\"rose-wine-anselmann\"],[\"wine\",\"white-wine-classic\"]]},\r\n        {badge:\"Klassiker im Glas\", candidates:[[\"long\",\"cuba-libre\"],[\"long\",\"gin-tonic\"],[\"long\",\"whisky-highball\"],[\"long\",\"rum-straight\"]]}\r\n      ]\r\n    },\r\n    {\r\n      title:\"Frisch & besonders\",\r\n      slots:[\r\n        {badge:\"Salon-Favorit\", candidates:[[\"hot\",\"cafecrema\"],[\"hot\",\"cappuccino\"],[\"hot\",\"latte\"],[\"hot\",\"espresso\"]]},\r\n        {badge:\"Zitrisch & leicht\", candidates:[[\"soft\",\"vio-lemon\"],[\"soft\",\"vio-apple\"],[\"soft\",\"vio-berry\"],[\"soft\",\"coke-zero\"]]},\r\n        {badge:\"Ros\u00e9-Empfehlung\", candidates:[[\"wine\",\"rose-wine-anselmann\"],[\"wine\",\"white-wine-anselmann\"],[\"wine\",\"white-wine-voegelein\"],[\"wine\",\"rose-wine-classic\"]]},\r\n        {badge:\"Leicht & elegant\", candidates:[[\"long\",\"whisky-highball\"],[\"long\",\"gin-tonic\"],[\"long\",\"whisky-tonic\"],[\"long\",\"cuba-libre\"]]}\r\n      ]\r\n    },\r\n    {\r\n      title:\"Kr\u00e4ftig & elegant\",\r\n      slots:[\r\n        {badge:\"Mit extra Aroma\", candidates:[[\"hot\",\"aroma-coffee\"],[\"hot\",\"double-espresso\"],[\"hot\",\"cafecrema\"],[\"hot\",\"cappuccino\"]]},\r\n        {badge:\"Zuckerfrei\", candidates:[[\"soft\",\"coke-zero\"],[\"soft\",\"vio-lemon\"],[\"soft\",\"vio-apple\"],[\"soft\",\"vio-berry\"]]},\r\n        {badge:\"Klassisch\", candidates:[[\"wine\",\"white-wine-classic\"],[\"wine\",\"white-wine-anselmann\"],[\"wine\",\"white-wine-voegelein\"],[\"wine\",\"rose-wine-classic\"]]},\r\n        {badge:\"Herb & frisch\", candidates:[[\"long\",\"whisky-tonic\"],[\"long\",\"gin-tonic\"],[\"long\",\"whisky-highball\"],[\"long\",\"cuba-libre\"]]}\r\n      ]\r\n    },\r\n    {\r\n      title:\"Genussmoment\",\r\n      slots:[\r\n        {badge:\"S\u00fc\u00dfe Auszeit\", candidates:[[\"hot\",\"hot-choc\"],[\"hot\",\"white-choc\"],[\"hot\",\"latte\"],[\"hot\",\"cappuccino\"]]},\r\n        {badge:\"Feinperlig\", candidates:[[\"soft\",\"fever-tree\"],[\"soft\",\"vio-apple\"],[\"soft\",\"vio-berry\"],[\"soft\",\"vio-lemon\"]]},\r\n        {badge:\"Ros\u00e9-Moment\", candidates:[[\"wine\",\"rose-wine-classic\"],[\"wine\",\"rose-wine-anselmann\"],[\"wine\",\"white-wine-anselmann\"],[\"wine\",\"white-wine-classic\"]]},\r\n        {badge:\"Ruhiger Genuss\", candidates:[[\"long\",\"rum-straight\"],[\"long\",\"gin-straight\"],[\"long\",\"whisky-straight\"],[\"long\",\"gin-tonic\"]]}\r\n      ]\r\n    }\r\n  ];\r\n  let remoteRecommendationConfig = null;\r\n  let recommendationBestsellerItems = [];\r\n\r\n  function recommendationRotationIndex(date = new Date()){\r\n    const todayUtc = Date.UTC(date.getFullYear(), date.getMonth(), date.getDate());\r\n    const weeks = Math.floor((todayUtc - RECOMMENDATION_ROTATION_START) \/ 604800000);\r\n    return ((weeks % RECOMMENDATION_ROTATIONS.length) + RECOMMENDATION_ROTATIONS.length) % RECOMMENDATION_ROTATIONS.length;\r\n  }\r\n\r\n  function findRecommendationItem(catId, itemReference){\r\n    const item = DATA[catId]?.items?.find(entry => entry.id === itemReference || entry.name === itemReference);\r\n    return item ? {catId, cat:DATA[catId], item} : null;\r\n  }\r\n\r\n  function selectWeeklyRecommendations(rotation){\r\n    const used = new Set();\r\n    return rotation.slots.map(slot=>{\r\n      const configured = slot.candidates || [];\r\n      const first = configured[0];\r\n      const slotCategory = slot.category || (Array.isArray(first) ? first[0] : null);\r\n      const bestsellerRefs = recommendationBestsellerItems.filter(item=>item.category===slotCategory).map(item=>item.name);\r\n      const ordered = [first, ...bestsellerRefs, ...configured.slice(1)].filter(Boolean);\r\n      for(const candidate of ordered){\r\n        const catId = Array.isArray(candidate) ? candidate[0] : slotCategory;\r\n        const itemReference = Array.isArray(candidate) ? candidate[1] : candidate;\r\n        const match = findRecommendationItem(catId, itemReference);\r\n        if(!match || used.has(`${catId}:${match.item.id}`)) continue;\r\n        if(!itemActiveByName(catId, match.item.name)) continue;\r\n        used.add(`${catId}:${match.item.id}`);\r\n        return {...match, badge:slot.badge};\r\n      }\r\n      return null;\r\n    }).filter(Boolean);\r\n  }\r\n\r\n  function addRecommendationDirect(rec, sourceCard, sourceButton){\r\n    const entry = {\r\n      id:rec.item.id,\r\n      name:rec.item.name,\r\n      cat:rec.cat.name,\r\n      catId:rec.catId,\r\n      opts:{}\r\n    };\r\n    entry._priceLabel = getItemPriceLabel(rec.item, {});\r\n    entry._subtitle = \"\";\r\n    basket.push(entry);\r\n    trackCustomerEvent(\"recommendation_add\", {itemId:rec.item.id, category:rec.catId});\r\n    updateCartUI();\r\n    bumpCartbar();\r\n    sourceCard?.classList.add(\"card-added\");\r\n    if(sourceButton){\r\n      sourceButton.classList.add(\"is-added\");\r\n      sourceButton.textContent = \"Hinzugef\u00fcgt\";\r\n      setTimeout(()=>{\r\n        sourceButton.classList.remove(\"is-added\");\r\n        sourceButton.textContent = \"Hinzuf\u00fcgen\";\r\n      }, 1300);\r\n    }\r\n    if(navigator.vibrate) navigator.vibrate(20);\r\n  }\r\n\r\n  function renderWeeklyRecommendations(){\r\n    if(!weeklyPicks || !weeklyPicksGrid) return;\r\n    const rotations = remoteRecommendationConfig?.rotations?.length === 5\r\n      ? remoteRecommendationConfig.rotations\r\n      : RECOMMENDATION_ROTATIONS;\r\n    const rotation = rotations[recommendationRotationIndex()];\r\n    const recommendations = selectWeeklyRecommendations(rotation);\r\n    weeklyPicks.hidden = recommendations.length === 0;\r\n    weeklyPicksGrid.innerHTML = \"\";\r\n    const title = document.getElementById(\"weeklyPicksTitle\");\r\n    if(title) title.textContent = rotation.title;\r\n    try{\r\n      const viewKey = `bev_recommendation_view_${recommendationRotationIndex()}`;\r\n      if(!window.sessionStorage.getItem(viewKey)){\r\n        window.sessionStorage.setItem(viewKey, \"1\");\r\n        trackCustomerEvent(\"recommendation_view\", {visibleItems:recommendations.map(rec=>rec.item.id)});\r\n      }\r\n    }catch(e){}\r\n\r\n    recommendations.forEach(rec=>{\r\n      const card = el(\"article\",\"weekly-pick\");\r\n      const price = getItemPriceLabel(rec.item);\r\n      card.innerHTML = `\r\n        <div class=\"weekly-pick__image\">\r\n          <img decoding=\"async\" src=\"${rec.item.img}\" alt=\"${rec.item.name}\" loading=\"lazy\" width=\"600\" height=\"450\">\r\n          <span class=\"weekly-pick__badge\">${rec.badge}<\/span>\r\n        <\/div>\r\n        <div class=\"weekly-pick__body\">\r\n          <div class=\"weekly-pick__name\">${rec.item.name}<\/div>\r\n          <div class=\"weekly-pick__bottom\">\r\n            <div class=\"weekly-pick__price\">${price || \"\"}<\/div>\r\n            <button class=\"weekly-pick__add\" type=\"button\">Hinzuf\u00fcgen<\/button>\r\n          <\/div>\r\n        <\/div>`;\r\n      const button = card.querySelector(\".weekly-pick__add\");\r\n      button.addEventListener(\"click\", ()=>{\r\n        if(!itemActiveByName(rec.catId, rec.item.name)){\r\n          renderWeeklyRecommendations();\r\n          showToast(false, \"Diese Empfehlung ist gerade nicht verf\u00fcgbar.\", 3200);\r\n          return;\r\n        }\r\n        const needsConfig = !!rec.cat.globalOptions?.length || !!rec.item.options?.length;\r\n        if(needsConfig){\r\n          trackCustomerEvent(\"recommendation_open\", {itemId:rec.item.id, category:rec.catId});\r\n          openConfig(rec.item, rec.cat, card, button, rec.catId);\r\n        }\r\n        else addRecommendationDirect(rec, card, button);\r\n      });\r\n      weeklyPicksGrid.appendChild(card);\r\n    });\r\n  }\r\n\r\n  function resolveSavedOrderItem(saved){\r\n    for(const [catId, cat] of Object.entries(DATA)){\r\n      const item = cat.items?.find(entry => entry.id === saved?.id || entry.name === saved?.name);\r\n      if(item) return {catId,cat,item};\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function getSmartUpsellRecommendation(){\r\n    const orderedItems = lastOrderSummary?.items || [];\r\n    const first = resolveSavedOrderItem(orderedItems[0]);\r\n    if(!first) return null;\r\n    const targetMap = {hot:['wine','soft','long'],soft:['wine','long','hot'],wine:['soft','hot','long'],long:['soft','hot','wine']};\r\n    const targets = targetMap[first.catId] || ['soft','wine','hot','long'];\r\n    const alreadyOrdered = new Set(orderedItems.map(item=>item.id || item.name));\r\n    const rotations = remoteRecommendationConfig?.rotations?.length === 5 ? remoteRecommendationConfig.rotations : RECOMMENDATION_ROTATIONS;\r\n    const rotation = rotations[recommendationRotationIndex()];\r\n\r\n    for(const category of targets){\r\n      const bestsellerNames = recommendationBestsellerItems.filter(item=>item.category===category).map(item=>item.name);\r\n      const slot = rotation.slots.find(entry=>entry.category===category || (Array.isArray(entry.candidates?.[0]) && entry.candidates[0][0]===category));\r\n      const configured = (slot?.candidates || []).map(candidate=>Array.isArray(candidate)?candidate[1]:candidate);\r\n      for(const reference of [...bestsellerNames,...configured]){\r\n        const match = findRecommendationItem(category, reference);\r\n        if(!match || alreadyOrdered.has(match.item.id) || alreadyOrdered.has(match.item.name)) continue;\r\n        if(!itemActiveByName(category, match.item.name)) continue;\r\n        return {...match,badge:match.item.salesMoment || slot?.badge || ({hot:'W\u00e4hrend der Farbe',soft:'Erfrischende Pause',wine:'Zum Ansto\u00dfen',long:'Genussmoment'}[category])};\r\n      }\r\n    }\r\n    return null;\r\n  }\r\n\r\n  function renderSmartUpsell(){\r\n    if(!smartUpsell) return;\r\n    activeUpsellRecommendation = getSmartUpsellRecommendation();\r\n    smartUpsell.hidden = !activeUpsellRecommendation;\r\n    if(!activeUpsellRecommendation) return;\r\n    const rec = activeUpsellRecommendation;\r\n    smartUpsellMoment.textContent = rec.badge || 'Genussmoment';\r\n    smartUpsellTitle.textContent = rec.catId === 'wine' || rec.catId === 'long' ? 'Darf es etwas Besonderes sein?' : 'Noch eine kleine Erfrischung?';\r\n    smartUpsellText.textContent = 'Passend zu deiner ersten Auswahl und aktuell verf\u00fcgbar.';\r\n    smartUpsellImage.src = rec.item.img;\r\n    smartUpsellImage.alt = rec.item.name;\r\n    smartUpsellName.textContent = rec.item.name;\r\n    smartUpsellPrice.textContent = getItemPriceLabel(rec.item) || '';\r\n  }\r\n\r\n  smartUpsellAdd?.addEventListener('click', ()=>{\r\n    const rec = activeUpsellRecommendation;\r\n    if(!rec || !itemActiveByName(rec.catId, rec.item.name)){\r\n      renderSmartUpsell();\r\n      return;\r\n    }\r\n    hideOrderStatusPage();\r\n    const needsConfig = !!rec.cat.globalOptions?.length || !!rec.item.options?.length;\r\n    if(needsConfig){\r\n      openConfig(rec.item, rec.cat, smartUpsell, smartUpsellAdd, rec.catId);\r\n    }else{\r\n      addRecommendationDirect(rec, smartUpsell, smartUpsellAdd);\r\n      refreshCartDialog();\r\n      cartDlg.showModal();\r\n    }\r\n    trackCustomerEvent('smart_upsell_open',{itemId:rec.item.id,category:rec.catId});\r\n  });\r\n  const flavorActive = (name)=> isYes(AKTIV.flavors?.[name]);\r\n  const teaVarActive = (catLabel, variety)=> isYes(AKTIV.tea?.[catLabel]?.[variety]);\r\n  const choiceValue = (choice)=> typeof choice === \"object\" ? choice.value : choice;\r\n  const choiceLabel = (choice)=> typeof choice === \"object\" ? (choice.label || choice.value) : choice;\r\n  const choiceAvailabilityKey = (choice)=> typeof choice === \"object\" ? (choice.availabilityKey || choice.value) : choice;\r\n  const getAvailableChoices = (def)=>{\r\n    const choices = def.choices || [];\r\n    if(!def.availabilityCat) return choices;\r\n    const table = AKTIV[def.availabilityCat] || {};\r\n    return choices.filter(choice => isYes(table[choiceAvailabilityKey(choice)]));\r\n  };\r\n\r\n  function categoryIdForBasketEntry(entry){\r\n    if(entry?.catId && DATA[entry.catId]) return entry.catId;\r\n    return Object.keys(DATA).find(id => DATA[id]?.name === entry?.cat) || null;\r\n  }\r\n\r\n  function basketEntryAvailable(entry){\r\n    const catId = categoryIdForBasketEntry(entry);\r\n    if(!catId) return true;\r\n    return itemActiveByName(catId, entry.name);\r\n  }\r\n\r\n  function pruneUnavailableBasketItems(showMessage = false){\r\n    const before = basket.length;\r\n    if(!before) return;\r\n    const kept = basket.filter(basketEntryAvailable);\r\n    if(kept.length === before) return;\r\n\r\n    basket.length = 0;\r\n    basket.push(...kept);\r\n    updateCartUI();\r\n    if(cartDlg.open) refreshCartDialog();\r\n    if(showMessage){\r\n      showToast(false, \"Nicht verf\u00fcgbare Getr\u00e4nke wurden aus dem Warenkorb entfernt.\", 4200);\r\n    }\r\n  }\r\n\r\n  onValue(availabilityRef, (snap)=>{\r\n    AKTIV = mergeAvailabilityDefaults(DEFAULT_AKTIV, snap.val() || {});\r\n    pruneUnavailableBasketItems();\r\n    renderWeeklyRecommendations();\r\n    if(activeCat) renderList();\r\n    if(cartDlg.open) refreshCartDialog();\r\n  }, (err)=>{\r\n    console.warn(\"Verf\u00fcgbarkeit konnte nicht geladen werden:\", err);\r\n  });\r\n\r\n  onValue(customDrinksRef, (snap)=>{\r\n    applyCustomDrinks(snap.val() || {});\r\n  }, (err)=>{\r\n    console.warn(\"Eigene Getraenke konnten nicht geladen werden:\", err);\r\n  });\r\n\r\n  onValue(recommendationsRef, snap=>{\r\n    const remote = snap.val();\r\n    remoteRecommendationConfig = remote?.rotations?.length === 5 ? remote : null;\r\n    renderWeeklyRecommendations();\r\n  }, err=>console.warn(\"Empfehlungsrotationen konnten nicht geladen werden:\", err));\r\n\r\n  onValue(recommendationBestsellersRef, snap=>{\r\n    recommendationBestsellerItems = Array.isArray(snap.val()?.items) ? snap.val().items : [];\r\n    renderWeeklyRecommendations();\r\n  }, err=>console.warn(\"Bestseller konnten nicht geladen werden:\", err));\r\n\r\n  function getItemTag(catId, item){\r\n    if(catId === \"hot\") return \"hei\u00df\";\r\n    if(catId === \"soft\") return item?.id === \"water\" ? \"Wasser\" : \"gek\u00fchlt\";\r\n    if(catId === \"wine\") return item?.id === \"beer\" ? \"Bier\" : \"Aperitif\";\r\n    if(catId === \"long\") return \"Longdrink\";\r\n    if(catId === \"xmas\") return \"Special\";\r\n    return \"Drink\";\r\n  }\r\n\r\n  function focusNameField(){\r\n    cust.scrollIntoView({behavior:\"smooth\", block:\"center\"});\r\n    cust.classList.add(\"name-attn\");\r\n    setTimeout(()=> {\r\n      cust.focus({preventScroll:true});\r\n      try{\r\n        cust.setSelectionRange(cust.value.length, cust.value.length);\r\n      }catch(e){}\r\n    }, 180);\r\n  }\r\n\r\n  function showInfo(entity, cat){\r\n    if(!entity) return;\r\n    infoTitle.textContent = entity.name || (cat?.name || \"Info\");\r\n    infoBody.innerHTML = entity.info || \"\";\r\n    infoDlg.showModal();\r\n  }\r\n  infoClose.addEventListener(\"click\", ()=> infoDlg.close());\r\n\r\n  \/* Namensfeld-Attention *\/\r\n  function updateNameAttention(){\r\n    const empty = !cust.value.trim();\r\n    if(empty) cust.classList.add(\"name-attn\");\r\n    else cust.classList.remove(\"name-attn\");\r\n    if(nameError && !empty) nameError.classList.remove(\"show\");\r\n  }\r\n\r\n  \/* Popup \u00f6ffnen\/schlie\u00dfen *\/\r\n  function openPopup(catId) {\r\n    activeCat = catId;\r\n    const c = DATA[catId];\r\n    if(!c) return;\r\n\r\n    popupTitle.textContent = c.name;\r\n\r\n    if(c.hint || c.brandInfo) {\r\n      let html = \"\";\r\n      if(c.hint) {\r\n        html += `<div>${c.hint}<\/div>`;\r\n      }\r\n      if(c.brandInfo) {\r\n        const label = c.brandName || c.name;\r\n        html += `<div class=\"brand-info-row\"><button class=\"btn btn-info-brand\" type=\"button\">Mehr zu ${label}<\/button><\/div>`;\r\n      }\r\n      catHint.innerHTML = html;\r\n      catHint.style.display = \"block\";\r\n    } else {\r\n      catHint.style.display = \"none\";\r\n      catHint.innerHTML = \"\";\r\n    }\r\n\r\n    renderList();\r\n\r\n    if(c.brandInfo){\r\n      const brandBtn = catHint.querySelector(\".btn-info-brand\");\r\n      if(brandBtn){\r\n        brandBtn.addEventListener(\"click\", (e)=>{\r\n          e.preventDefault();\r\n          e.stopPropagation();\r\n          showInfo({ name: c.brandName || c.name, info: c.brandInfo }, c);\r\n        });\r\n      }\r\n    }\r\n\r\n    requestAnimationFrame(() => {\r\n      itemsPopup.classList.add(\"show\");\r\n    });\r\n\r\n    if(navigator.vibrate) navigator.vibrate(10);\r\n  }\r\n\r\n  function closePopup() {\r\n    itemsPopup.classList.remove(\"show\");\r\n    activeCat = null;\r\n    setTimeout(() => {\r\n      list.innerHTML = \"\";\r\n    }, 250);\r\n  }\r\n\r\n  cats.addEventListener(\"click\", (e)=>{\r\n    const card = e.target.closest(\".cat\");\r\n    if(!card || card.classList.contains(\"disabled\")) return;\r\n    openPopup(card.dataset.id);\r\n  });\r\n\r\n  if(wineBanner){\r\n    wineBanner.addEventListener(\"click\", ()=>{\r\n      openPopup(\"wine\");\r\n      setTimeout(()=>{\r\n        const target = list.querySelector('[data-section=\"Winzerweine\"]');\r\n        if(target){\r\n          target.scrollIntoView({behavior:\"smooth\", block:\"start\"});\r\n          target.classList.add(\"is-targeted\");\r\n          setTimeout(()=> target.classList.remove(\"is-targeted\"), 1800);\r\n        }\r\n      }, 180);\r\n    });\r\n  }\r\n\r\n  if(backBtn){\r\n    const handleBack = (e)=>{\r\n      e.preventDefault();\r\n      e.stopPropagation();\r\n      closePopup();\r\n    };\r\n    backBtn.addEventListener(\"click\", handleBack, {passive:false});\r\n    backBtn.addEventListener(\"pointerup\", handleBack, {passive:false});\r\n    backBtn.addEventListener(\"touchend\", handleBack, {passive:false});\r\n  }\r\n\r\n  itemsPopup.addEventListener(\"click\", (e) => {\r\n    if(e.target === itemsPopup) {\r\n      closePopup();\r\n    }\r\n  });\r\n\r\n  function renderList(){\r\n    list.innerHTML = \"\";\r\n    const c = DATA[activeCat];\r\n    if(!c) return;\r\n\r\n    c.items.forEach(item=>{\r\n      if(item.section){\r\n        const section = el(\"div\",\"list-section\",item.section);\r\n        section.dataset.section = item.section;\r\n        list.appendChild(section);\r\n      }\r\n\r\n      const card = el(\"div\",\"card\");\r\n      const unavailable = !itemActiveByName(activeCat, item.name);\r\n      const hasInfo = !!item.info;\r\n      const priceLabel = getItemPriceLabel(item);\r\n      const serviceNote = activeCat === \"hot\" ? \"1. Hei\\u00dfgetr\\u00e4nk gratis als Service\" : \"\";\r\n      const badgeHTML = item.badge ? `<div class=\"image-badge\">${item.badge}<\/div>` : \"\";\r\n\r\n      const overlayText = UNAVAILABLE_OVERLAY_TEXT[item.id] || \"\";\r\n      const overlayHTML = (unavailable && overlayText)\r\n        ? `<div class=\"img-overlay\" aria-hidden=\"true\">\r\n             <div class=\"img-overlay__box\">\r\n               <div class=\"img-overlay__title\">${overlayText}<\/div>\r\n             <\/div>\r\n           <\/div>`\r\n        : \"\";\r\n\r\n      const infoBtnHTML = hasInfo\r\n        ? '<button class=\"btn secondary btn-info\" type=\"button\">Info<\/button>'\r\n        : '';\r\n\r\n      card.innerHTML = `\r\n        <div class=\"imgwrap\">\r\n          <img decoding=\"async\" src=\"${item.img}\" loading=\"lazy\" alt=\"${item.name}\" width=\"1200\" height=\"800\">\r\n          ${badgeHTML}\r\n          ${overlayHTML}\r\n        <\/div>\r\n        <div class=\"info\">\r\n          <div class=\"card-main\">\r\n            <div class=\"card-copy\">\r\n              <div class=\"name\">${item.name}${unavailable ? '<span class=\"tag-off\">nicht vorr\u00e4tig<\/span>' : ''}<\/div>\r\n              ${serviceNote ? `<div class=\"service-note\">${serviceNote}<\/div>` : \"\"}\r\n            <\/div>\r\n            <div class=\"price-col\">${priceLabel ? `<div class=\"price\">${priceLabel}<\/div>` : \"\"}<\/div>\r\n          <\/div>\r\n          <div class=\"actions\">\r\n            ${infoBtnHTML}\r\n            <button class=\"btn btn-add\" type=\"button\"${unavailable?' disabled':''}>\r\n              ${unavailable ? 'Nicht verf\u00fcgbar' : 'Hinzuf\u00fcgen'}\r\n            <\/button>\r\n          <\/div>\r\n        <\/div>\r\n      `;\r\n\r\n      if(unavailable) card.classList.add(\"unavailable\");\r\n\r\n      const addBtn = card.querySelector(\".btn-add\");\r\n      if(!unavailable && addBtn){\r\n        addBtn.addEventListener(\"click\", ()=> openConfig(item, c, card, addBtn));\r\n      }\r\n\r\n      const infoBtn = card.querySelector(\".btn-info\");\r\n      if(hasInfo && infoBtn){\r\n        infoBtn.addEventListener(\"click\", (e)=>{\r\n          e.stopPropagation();\r\n          showInfo(item, c);\r\n        });\r\n      }\r\n\r\n      if(!unavailable){\r\n        card.addEventListener(\"click\", (evt)=>{\r\n          if(evt.target.closest(\".btn-info\") || evt.target.closest(\".btn-add\")) return;\r\n          if(addBtn) addBtn.click();\r\n        });\r\n      }\r\n\r\n      list.appendChild(card);\r\n    });\r\n  }\r\n\r\n  function openConfig(item, cat, sourceCard = null, sourceButton = null, catId = activeCat){\r\n    pendingItem = { item, cat, catId, sourceCard, sourceButton };\r\n    cfgTitle.textContent = item.name;\r\n    cfgFields.innerHTML = \"\";\r\n\r\n    if (cat?.name === \"Hei\u00dfgetr\u00e4nke\" || cat?.name === \"Weihnachtsspecial\") {\r\n      const info = el(\"div\",\"tiny\",\"F\u00fcr Hei\u00dfgetr\u00e4nke reichen wir auf Wunsch Wasser dazu.\");\r\n      info.style.marginBottom = \"6px\";\r\n      cfgFields.appendChild(info);\r\n    }\r\n\r\n    const fields = [];\r\n    if(cat.globalOptions) cat.globalOptions.forEach(o=> fields.push(o));\r\n    if(item.options)      item.options.forEach(o=> fields.push(o));\r\n\r\n    fields.forEach(def=>{\r\n      const wrap = el(\"div\",\"field\");\r\n      wrap.dataset.id = def.id;\r\n      let ctrl;\r\n      if(def.type===\"select\"){\r\n        wrap.appendChild(el(\"label\",\"label\",def.label));\r\n        ctrl = el(\"select\");\r\n        getAvailableChoices(def).forEach(ch=>{\r\n          const opt = el(\"option\",null,choiceLabel(ch));\r\n          opt.value = choiceValue(ch);\r\n          if(def.default && def.default===opt.value) opt.selected = true;\r\n          ctrl.appendChild(opt);\r\n        });\r\n        wrap.appendChild(ctrl);\r\n        if(def.recommended){\r\n          wrap.appendChild(el(\"div\",\"recommend-note\",`Empfehlung: ${def.recommended}`));\r\n        }\r\n      }else if(def.type===\"switch\"){\r\n        ctrl = el(\"input\");\r\n        ctrl.type=\"checkbox\";\r\n        ctrl.checked = !!def.default;\r\n        const lab = el(\"label\",\"label\",`${def.label} <input type=\"checkbox\" ${ctrl.checked?'checked':''} style=\"margin-left:8px; transform:translateY(2px)\">`);\r\n        lab.lastElementChild.replaceWith(ctrl);\r\n        wrap.appendChild(lab);\r\n      }\r\n      if(def.required) wrap.dataset.required = \"1\";\r\n      wrap._def = def;\r\n      wrap._ctrl = ctrl;\r\n      cfgFields.appendChild(wrap);\r\n    });\r\n\r\n    const getWrap = id => [...cfgFields.children].find(w=>w.dataset.id===id);\r\n\r\n    function rebuildFlavorSelect(){\r\n      const flavorWrap = getWrap('flavor');\r\n      if(!flavorWrap) return;\r\n      const sel = flavorWrap._ctrl;\r\n      const base = flavorWrap._def.choices||[];\r\n      sel.innerHTML = \"\";\r\n      let anyActive = false;\r\n      base.forEach(ch=>{\r\n        const active = flavorActive(ch);\r\n        const opt = el('option', null, active ? ch : `${ch} (nicht verf\u00fcgbar)`);\r\n        if(!active) opt.disabled = true;\r\n        sel.appendChild(opt);\r\n        if(active) anyActive = true;\r\n      });\r\n      if(!anyActive){\r\n        const phOpt = el('option', null, '\u2014 keine Sorten verf\u00fcgbar \u2014');\r\n        phOpt.disabled = true;\r\n        phOpt.selected = true;\r\n        sel.appendChild(phOpt);\r\n      }else{\r\n        const def = flavorWrap._def.default;\r\n        const firstEnabled = [...sel.options].find(o=>!o.disabled);\r\n        sel.value = (def && flavorActive(def)) ? def : (firstEnabled?.value || \"\");\r\n      }\r\n    }\r\n\r\n    function rebuildTeaSelects(){\r\n      const teaCatWrap = getWrap('teaCat');\r\n      if(!teaCatWrap) return;\r\n      const catLabel = teaCatWrap._ctrl.value;\r\n      const rebuild = (id)=>{\r\n        const w = getWrap(id);\r\n        if(!w) return;\r\n        const shouldShow = w._def.showIf && w._def.showIf.field===\"teaCat\" && w._def.showIf.eq===catLabel;\r\n        if(!shouldShow) return;\r\n        const sel = w._ctrl;\r\n        const base = w._def.choices||[];\r\n        sel.innerHTML = \"\";\r\n        let anyActive = false;\r\n        base.forEach(ch=>{\r\n          const active = teaVarActive(catLabel, ch);\r\n          const opt = el('option', null, active ? ch : `${ch} (nicht verf\u00fcgbar)`);\r\n          if(!active) opt.disabled = true;\r\n          sel.appendChild(opt);\r\n          if(active) anyActive = true;\r\n        });\r\n        if(!anyActive){\r\n          const phOpt = el('option', null, '\u2014 keine Sorte verf\u00fcgbar \u2014');\r\n          phOpt.disabled = true;\r\n          phOpt.selected = true;\r\n          sel.appendChild(phOpt);\r\n        }else{\r\n          const def = w._def.default;\r\n          const firstEnabled = [...sel.options].find(o=>!o.disabled);\r\n          sel.value = (def && teaVarActive(catLabel, def)) ? def : (firstEnabled?.value || \"\");\r\n        }\r\n      };\r\n      rebuild('teaVarietyGreen');\r\n      rebuild('teaVarietyBlack');\r\n      rebuild('teaVarietyFruit');\r\n      rebuild('teaVarietyHerb');\r\n    }\r\n\r\n    function getValue(wrap){\r\n      const def = wrap._def, ctrl = wrap._ctrl;\r\n      if(def?.type===\"switch\") return !!ctrl.checked;\r\n      if(def?.type===\"select\") return ctrl.value;\r\n      return null;\r\n    }\r\n    function applyVisibility(){\r\n      [...cfgFields.children].forEach(w=>{\r\n        const def = w._def;\r\n        if(!def) return;\r\n        if(def.showIf){\r\n          const dep = [...cfgFields.children].find(x => x._def && x.dataset.id === def.showIf.field);\r\n          let visible = false;\r\n          if(dep){ visible = (getValue(dep) === def.showIf.eq); }\r\n          w.style.display = visible ? \"block\" : \"none\";\r\n          if(!visible) w.dataset.hidden = \"1\"; else delete w.dataset.hidden;\r\n        }\r\n      });\r\n      rebuildFlavorSelect();\r\n      rebuildTeaSelects();\r\n    }\r\n\r\n    cfgFields.onchange = applyVisibility;\r\n    applyVisibility();\r\n\r\n    cfgHint.textContent = cat.hint || \"\";\r\n\r\n    cfgCancel.setAttribute('autofocus', 'autofocus');\r\n    cfg.showModal();\r\n    setTimeout(()=> {\r\n      if (document.activeElement && document.activeElement.tagName === 'SELECT') {\r\n        document.activeElement.blur();\r\n      }\r\n    }, 0);\r\n  }\r\n\r\n  cfgCancel.addEventListener(\"click\", ()=> cfg.close());\r\n  cfgAdd.addEventListener(\"click\", ()=>{\r\n    if(!pendingItem) return;\r\n    if(!itemActiveByName(pendingItem.catId, pendingItem.item.name)){\r\n      cfg.close();\r\n      pendingItem = null;\r\n      renderList();\r\n      showToast(false, \"Dieses Getr\u00e4nk ist gerade nicht verf\u00fcgbar.\", 3800);\r\n      return;\r\n    }\r\n    const opts = {};\r\n    for(const wrap of [...cfgFields.children]){\r\n      if(wrap.dataset.hidden===\"1\") continue;\r\n      const def = wrap._def, ctrl = wrap._ctrl;\r\n      if(!def) continue;\r\n      if(def.type===\"switch\"){\r\n        opts[def.id] = !!ctrl.checked;\r\n      }else if(def.type===\"select\"){\r\n        const sel = ctrl;\r\n        const selected = sel.options[sel.selectedIndex];\r\n        if(def.required && (!selected || selected.disabled)){\r\n          sel?.focus();\r\n          return;\r\n        }\r\n        opts[def.id] = sel.value;\r\n      }\r\n    }\r\n    const entry = {\r\n      id: pendingItem.item.id,\r\n      name: pendingItem.item.name,\r\n      cat: pendingItem.cat.name,\r\n      catId: pendingItem.catId,\r\n      opts\r\n    };\r\n    entry._priceLabel = getItemPriceLabel(pendingItem.item, opts);\r\n    entry._subtitle = buildSubtitleFromOpts(opts);\r\n    basket.push(entry);\r\n    if(pendingItem.sourceCard?.classList.contains(\"weekly-pick\")){\r\n      trackCustomerEvent(\"recommendation_add\", {itemId:pendingItem.item.id, category:pendingItem.catId});\r\n    }\r\n\r\n    const sourceCard = pendingItem.sourceCard;\r\n    const sourceButton = pendingItem.sourceButton;\r\n    const fromSmartUpsell = sourceCard?.classList.contains(\"smart-upsell\");\r\n    cfg.close();\r\n    pendingItem = null;\r\n    updateCartUI();\r\n    bumpCartbar();\r\n    if(sourceCard) sourceCard.classList.add(\"card-added\");\r\n    if(sourceButton){\r\n      sourceButton.classList.add(\"is-added\");\r\n      sourceButton.textContent = \"Hinzugef\u00fcgt\";\r\n    }\r\n    if(fromSmartUpsell){\r\n      refreshCartDialog();\r\n      cartDlg.showModal();\r\n    }\r\n    setTimeout(()=> closePopup(), 320);\r\n    if(navigator.vibrate) navigator.vibrate(20);\r\n  });\r\n\r\n  cartOpen.addEventListener(\"click\", ()=>{\r\n    refreshCartDialog();\r\n    cartDlg.showModal();\r\n  });\r\n  cartClose.addEventListener(\"click\", ()=> cartDlg.close());\r\n  cartClear.addEventListener(\"click\", ()=>{\r\n    basket.length = 0;\r\n    updateCartUI();\r\n  });\r\n  cartSubmit.addEventListener(\"click\", submitOrder);\r\n\r\n  cust.addEventListener(\"input\", ()=>{\r\n    updateCartUI();\r\n    updateNameAttention();\r\n    saveGuestProfile();\r\n  });\r\n  cust.addEventListener(\"focus\", updateNameAttention);\r\n  cust.addEventListener(\"blur\", updateNameAttention);\r\n\r\n  clearBtn.addEventListener(\"click\", ()=>{\r\n    basket.length = 0;\r\n    updateCartUI();\r\n  });\r\n\r\n  function updateStylistSelection(){\r\n    const selected = stylistHidden.value;\r\n    stylistList.querySelectorAll(\".avatar-option\").forEach(button=>{\r\n      const active = button.dataset.stylist === selected;\r\n      button.classList.toggle(\"is-selected\", active);\r\n      button.setAttribute(\"aria-pressed\", active ? \"true\" : \"false\");\r\n    });\r\n  }\r\n\r\n  function openStylistFullscreen(){\r\n    returnToCartAfterStylist = !!cartDlg.open;\r\n    if(cartDlg.open) cartDlg.close();\r\n    updateStylistSelection();\r\n    stylistDlg.showModal();\r\n  }\r\n\r\n  function closeStylistFullscreen(){\r\n    if(stylistDlg.open) stylistDlg.close();\r\n  }\r\n\r\n  stylistPicker?.addEventListener(\"click\", openStylistFullscreen);\r\n  stylistDlgClose?.addEventListener(\"click\", closeStylistFullscreen);\r\n  stylistDlg?.addEventListener(\"close\", ()=>{\r\n    if(!returnToCartAfterStylist) return;\r\n    returnToCartAfterStylist = false;\r\n    refreshCartDialog();\r\n    cartDlg.showModal();\r\n  });\r\n\r\n  (function initStylistPicker(){\r\n    stylistList.innerHTML = \"\";\r\n    STYLISTS.forEach(s=>{\r\n      const btn = el(\"button\",\"avatar-option\");\r\n      btn.type = \"button\";\r\n      btn.dataset.stylist = s.name;\r\n      btn.innerHTML = `\r\n        <img decoding=\"async\" class=\"avatar\" alt=\"${s.name}\" src=\"${s.img}\">\r\n        <div><div class=\"who\">${s.name}<\/div><\/div>\r\n      `;\r\n      btn.addEventListener(\"click\", ()=>{\r\n        stylistHidden.value = s.name;\r\n        stylistSummaryName.textContent = s.name;\r\n        stylistSummaryImg.src = s.img;\r\n        updateStylistSelection();\r\n        saveGuestProfile();\r\n        closeStylistFullscreen();\r\n        if(navigator.vibrate) navigator.vibrate(15);\r\n      });\r\n      stylistList.appendChild(btn);\r\n    });\r\n  })();\r\n  restoreGuestProfile();\r\n  updateStylistSelection();\r\n\r\n  function openConfirm(orderId, forCustomer, items){\r\n    if(confirmStatusTimer){\r\n      clearTimeout(confirmStatusTimer);\r\n      confirmStatusTimer = null;\r\n    }\r\n\r\n    const time = new Date().toLocaleTimeString([], {hour:'2-digit', minute:'2-digit'});\r\n    const who = (stylistHidden.value && stylistHidden.value!==\"Unbekannt\") ? ` \u00b7 Stylist: ${stylistHidden.value}` : \"\";\r\n    const total = items.length;\r\n    const drinkWord = total === 1 ? \"Getr\u00e4nk\" : \"Getr\u00e4nke\";\r\n    lastOrderSummary = {customer:forCustomer, count:total, items:items.map(item=>({...item}))};\r\n    updateOrderStatusSummary();\r\n    sentMeta.textContent = `${forCustomer ? ('F\u00fcr ' + forCustomer) : 'Deine Bestellung'} \u00b7 ${total} ${drinkWord} \u00b7 ${time}${who}`;\r\n\r\n    sentList.innerHTML = \"\";\r\n    items.forEach(it=>{\r\n      const li = document.createElement('li');\r\n      const opts = it.options || it.opts || {};\r\n      const optStr = Object.keys(opts).length\r\n        ? ' \u2014 ' + Object.entries(opts).map(([k,v])=> k==='flavorOn' ? (v?'mit Flavor': 'ohne Flavor') : String(v)).join(' \u00b7 ')\r\n        : '';\r\n      li.textContent = it.name + optStr;\r\n      sentList.appendChild(li);\r\n    });\r\n    sent.showModal();\r\n\r\n    confirmStatusTimer = setTimeout(()=>{\r\n      confirmStatusTimer = null;\r\n      if(sent.open) sent.close();\r\n      showOrderStatusPage(lastKnownStatus || \"new\");\r\n    }, 2200);\r\n  }\r\n\r\n  const handleSentClose = (e)=>{\r\n    e.preventDefault();\r\n    e.stopPropagation();\r\n    if(confirmStatusTimer){\r\n      clearTimeout(confirmStatusTimer);\r\n      confirmStatusTimer = null;\r\n    }\r\n    if(sent.open) sent.close();\r\n    showOrderStatusPage(lastKnownStatus || \"new\");\r\n  };\r\n  const handleSentNew = (e)=>{\r\n    e.preventDefault();\r\n    e.stopPropagation();\r\n    if(confirmStatusTimer){\r\n      clearTimeout(confirmStatusTimer);\r\n      confirmStatusTimer = null;\r\n    }\r\n    if(sent.open) sent.close();\r\n    hideOrderStatusPage();\r\n    document.activeElement?.blur();\r\n  };\r\n  sentClose.addEventListener(\"pointerup\", handleSentClose);\r\n  sentClose.addEventListener(\"click\", handleSentClose);\r\n  sentNew.addEventListener(\"pointerup\", handleSentNew);\r\n  sentNew.addEventListener(\"click\", handleSentNew);\r\n  if(statusNewOrder){\r\n    statusNewOrder.addEventListener(\"click\", ()=>{\r\n      hideOrderStatusPage();\r\n      document.getElementById(\"weeklyPicks\")?.scrollIntoView({behavior:\"smooth\", block:\"start\"});\r\n    });\r\n  }\r\n  if(statusReorder){\r\n    statusReorder.addEventListener(\"click\", ()=>{\r\n      const items = lastOrderSummary?.items || [];\r\n      let added = 0;\r\n      items.forEach(saved=>{\r\n        let found = null;\r\n        for(const [catId, cat] of Object.entries(DATA)){\r\n          const item = cat.items?.find(entry => entry.id === saved.id || entry.name === saved.name);\r\n          if(item){ found = {catId, cat, item}; break; }\r\n        }\r\n        if(!found || !itemActiveByName(found.catId, found.item.name)) return;\r\n        const opts = saved.options || saved.opts || {};\r\n        basket.push({\r\n          id:found.item.id,\r\n          name:found.item.name,\r\n          cat:found.cat.name,\r\n          catId:found.catId,\r\n          opts:{...opts},\r\n          _priceLabel:getItemPriceLabel(found.item, opts),\r\n          _subtitle:buildSubtitleFromOpts(opts)\r\n        });\r\n        added++;\r\n      });\r\n      hideOrderStatusPage();\r\n      updateCartUI();\r\n      if(added){\r\n        refreshCartDialog();\r\n        cartDlg.showModal();\r\n        trackCustomerEvent(\"reorder_open\", {itemCount:added});\r\n      }else{\r\n        showToast(false, \"Diese Auswahl ist gerade nicht mehr vollst\u00e4ndig verf\u00fcgbar.\", 4200);\r\n        document.getElementById(\"weeklyPicks\")?.scrollIntoView({behavior:\"smooth\", block:\"start\"});\r\n      }\r\n    });\r\n  }\r\n\r\n  async function submitOrder(){\r\n    if(isSubmitting) return;\r\n    if(!basket.length) return;\r\n    pruneUnavailableBasketItems(true);\r\n    if(!basket.length) return;\r\n\r\n    const customerName = cust.value.trim();\r\n    if(!customerName){\r\n      if(!cartDlg.open){\r\n        refreshCartDialog();\r\n        cartDlg.showModal();\r\n      }\r\n      if(nameError) nameError.classList.add(\"show\");\r\n      focusNameField();\r\n      showToast(false, \"Bitte gib deinen Namen an.\");\r\n      return;\r\n    }\r\n\r\n    const orderId = createOrderId();\r\n    const itemsPayload = basket.map(({id,name,cat,opts})=>({id,name,cat,options:opts}));\r\n    const payload = {\r\n      stylist: stylistHidden.value || \"Unbekannt\",\r\n      forCustomer: customerName,\r\n      items: itemsPayload,\r\n      status: \"new\",\r\n      createdAt: Date.now(),\r\n      source: \"order.html\",\r\n      clientOrderId: orderId\r\n    };\r\n\r\n    isSubmitting = true;\r\n    updateCartUI();\r\n\r\n    try{\r\n      if(cartDlg.open) cartDlg.close();\r\n      ensureNotificationPermission();\r\n      await writeOrderPayload(orderId, payload);\r\n      trackCustomerEvent(\"order_complete\", {itemCount:itemsPayload.length, itemIds:itemsPayload.map(item=>item.id)});\r\n      basket.length = 0;\r\n      showToast(true, \"\ud83d\udc4d Bestellung wurde gesendet!\");\r\n      if(navigator.vibrate) navigator.vibrate(40);\r\n\r\n      startStatusListener(orderId);\r\n      openConfirm(orderId, payload.forCustomer, itemsPayload);\r\n    }catch(e){\r\n      console.error(e);\r\n      if(String(e?.message || \"\").includes(\"Status 401\") || String(e?.message || \"\").includes(\"Status 403\")){\r\n        showToast(false, \"\u2757 Konnte nicht senden. Bitte Team informieren.\", 5000);\r\n      }else{\r\n        queuePendingOrder({orderId, payload, itemsPayload, queuedAt:Date.now()});\r\n        basket.length = 0;\r\n        startStatusListener(orderId);\r\n        showToast(false, \"Verbindung langsam. Bestellung wird automatisch gesendet.\", 6000);\r\n        setTimeout(()=> flushPendingOrders({silent:false}), 2000);\r\n      }\r\n    }finally{\r\n      isSubmitting = false;\r\n      updateCartUI();\r\n    }\r\n  }\r\n  sendBtn.addEventListener(\"click\", submitOrder);\r\n\r\n  window.addEventListener(\"online\", ()=> flushPendingOrders({silent:false}));\r\n  window.addEventListener(\"focus\", ()=> flushPendingOrders({silent:false}));\r\n  document.addEventListener(\"visibilitychange\", ()=>{\r\n    if(!document.hidden) flushPendingOrders({silent:false});\r\n  });\r\n  setInterval(()=> flushPendingOrders({silent:true}), 15000);\r\n\r\n  cartBadge.textContent = \"0\";\r\n  renderWeeklyRecommendations();\r\n  updateCartUI();\r\n  updateNameAttention();\r\n  restoreLastStatusListener();\r\n  flushPendingOrders({silent:true});\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\n\t\t<\/div>\n\t<\/div>\n<\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vc_row-full-width vc_clearfix\"><\/div><div data-vc-full-width=\"true\" data-vc-full-width-temp=\"true\" data-vc-full-width-init=\"false\" data-vc-stretch-content=\"true\" class=\"vc_row wpb_row vc_row-fluid\"><div class=\"wpb_column vc_column_container vc_col-sm-12\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><div class=\"vc_row wpb_row vc_inner vc_row-fluid\"><div class=\"wpb_column vc_column_container vc_col-sm-12\"><div class=\"vc_column-inner\"><div class=\"wpb_wrapper\"><\/div><\/div><\/div><\/div><\/div><\/div><\/div><\/div><div class=\"vc_row-full-width vc_clearfix\"><\/div>\n<\/div>","protected":false},"excerpt":{"rendered":"Getr\u00e4nkebestellung Getr\u00e4nkebestellung Bestell dein Lieblingsgetr\u00e4nk direkt am Platz. F\u00fcr dich ausgew\u00e4hlt Unsere Empfehlungen Neu im Salon Winzerweine von V\u00f6gelein &amp; Anselmann Silvaner, Wei\u00dfburgunder und Ros\u00e9 entdecken \u203a Oder nach Kategorie ausw\u00e4hlen Demn\u00e4chst Weihnachtsspecial Hei\u00dfgetr\u00e4nke Softdrinks \/ Wasser Bier | Weine | Sekt Longdrinks \u2190 Kategorie 0 Leeren \ud83e\uddfe Absenden Optionen Abbrechen Hinzuf\u00fcgen \ud83e\uddfa Warenkorb 0 [...]","protected":false},"author":5,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_acf_changed":false,"om_disable_all_campaigns":false,"inline_featured_image":false,"_monsterinsights_skip_tracking":false,"_uf_show_specific_survey":0,"_uf_disable_surveys":false,"footnotes":""},"class_list":["post-4724","page","type-page","status-publish","hentry"],"acf":[],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v26.5 - https:\/\/yoast.com\/wordpress\/plugins\/seo\/ -->\n<title>Getr\u00e4nkebestellung - Kirstin Ellen Vietze<\/title>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/www.kirstin-ellen-vietze.de\/en\/getraenkebestellung\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Getr\u00e4nkebestellung - Kirstin Ellen Vietze\" \/>\n<meta property=\"og:url\" content=\"https:\/\/www.kirstin-ellen-vietze.de\/en\/getraenkebestellung\/\" \/>\n<meta property=\"og:site_name\" content=\"Kirstin Ellen Vietze\" \/>\n<meta property=\"article:publisher\" content=\"https:\/\/www.facebook.com\/kirstinellenvietze\/\" \/>\n<meta property=\"article:modified_time\" content=\"2026-07-11T09:08:01+00:00\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"1 minute\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\/\/www.kirstin-ellen-vietze.de\/getraenkebestellung\/\",\"url\":\"https:\/\/www.kirstin-ellen-vietze.de\/getraenkebestellung\/\",\"name\":\"Getr\u00e4nkebestellung - Kirstin Ellen Vietze\",\"isPartOf\":{\"@id\":\"https:\/\/www.kirstin-ellen-vietze.de\/#website\"},\"datePublished\":\"2025-10-30T09:10:45+00:00\",\"dateModified\":\"2026-07-11T09:08:01+00:00\",\"breadcrumb\":{\"@id\":\"https:\/\/www.kirstin-ellen-vietze.de\/getraenkebestellung\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\/\/www.kirstin-ellen-vietze.de\/getraenkebestellung\/\"]}]},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\/\/www.kirstin-ellen-vietze.de\/getraenkebestellung\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Startseite\",\"item\":\"https:\/\/www.kirstin-ellen-vietze.de\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Getr\u00e4nkebestellung\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\/\/www.kirstin-ellen-vietze.de\/#website\",\"url\":\"https:\/\/www.kirstin-ellen-vietze.de\/\",\"name\":\"Kirstin Ellen Vietze\",\"description\":\"\",\"publisher\":{\"@id\":\"https:\/\/www.kirstin-ellen-vietze.de\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\/\/www.kirstin-ellen-vietze.de\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\/\/www.kirstin-ellen-vietze.de\/#organization\",\"name\":\"Kirstin Ellen Vietze\",\"url\":\"https:\/\/www.kirstin-ellen-vietze.de\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\/\/www.kirstin-ellen-vietze.de\/#\/schema\/logo\/image\/\",\"url\":\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2024\/04\/logo_dark.png\",\"contentUrl\":\"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2024\/04\/logo_dark.png\",\"width\":149,\"height\":52,\"caption\":\"Kirstin Ellen Vietze\"},\"image\":{\"@id\":\"https:\/\/www.kirstin-ellen-vietze.de\/#\/schema\/logo\/image\/\"},\"sameAs\":[\"https:\/\/www.facebook.com\/kirstinellenvietze\/\"]}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Getr\u00e4nkebestellung - Kirstin Ellen Vietze","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/www.kirstin-ellen-vietze.de\/en\/getraenkebestellung\/","og_locale":"en_US","og_type":"article","og_title":"Getr\u00e4nkebestellung - Kirstin Ellen Vietze","og_url":"https:\/\/www.kirstin-ellen-vietze.de\/en\/getraenkebestellung\/","og_site_name":"Kirstin Ellen Vietze","article_publisher":"https:\/\/www.facebook.com\/kirstinellenvietze\/","article_modified_time":"2026-07-11T09:08:01+00:00","twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"1 minute"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/www.kirstin-ellen-vietze.de\/getraenkebestellung\/","url":"https:\/\/www.kirstin-ellen-vietze.de\/getraenkebestellung\/","name":"Getr\u00e4nkebestellung - Kirstin Ellen Vietze","isPartOf":{"@id":"https:\/\/www.kirstin-ellen-vietze.de\/#website"},"datePublished":"2025-10-30T09:10:45+00:00","dateModified":"2026-07-11T09:08:01+00:00","breadcrumb":{"@id":"https:\/\/www.kirstin-ellen-vietze.de\/getraenkebestellung\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/www.kirstin-ellen-vietze.de\/getraenkebestellung\/"]}]},{"@type":"BreadcrumbList","@id":"https:\/\/www.kirstin-ellen-vietze.de\/getraenkebestellung\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Startseite","item":"https:\/\/www.kirstin-ellen-vietze.de\/"},{"@type":"ListItem","position":2,"name":"Getr\u00e4nkebestellung"}]},{"@type":"WebSite","@id":"https:\/\/www.kirstin-ellen-vietze.de\/#website","url":"https:\/\/www.kirstin-ellen-vietze.de\/","name":"Kirstin Ellen Vietze","description":"","publisher":{"@id":"https:\/\/www.kirstin-ellen-vietze.de\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/www.kirstin-ellen-vietze.de\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/www.kirstin-ellen-vietze.de\/#organization","name":"Kirstin Ellen Vietze","url":"https:\/\/www.kirstin-ellen-vietze.de\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/www.kirstin-ellen-vietze.de\/#\/schema\/logo\/image\/","url":"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2024\/04\/logo_dark.png","contentUrl":"https:\/\/www.kirstin-ellen-vietze.de\/wp-content\/uploads\/2024\/04\/logo_dark.png","width":149,"height":52,"caption":"Kirstin Ellen Vietze"},"image":{"@id":"https:\/\/www.kirstin-ellen-vietze.de\/#\/schema\/logo\/image\/"},"sameAs":["https:\/\/www.facebook.com\/kirstinellenvietze\/"]}]}},"_links":{"self":[{"href":"https:\/\/www.kirstin-ellen-vietze.de\/en\/wp-json\/wp\/v2\/pages\/4724","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.kirstin-ellen-vietze.de\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.kirstin-ellen-vietze.de\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.kirstin-ellen-vietze.de\/en\/wp-json\/wp\/v2\/users\/5"}],"replies":[{"embeddable":true,"href":"https:\/\/www.kirstin-ellen-vietze.de\/en\/wp-json\/wp\/v2\/comments?post=4724"}],"version-history":[{"count":82,"href":"https:\/\/www.kirstin-ellen-vietze.de\/en\/wp-json\/wp\/v2\/pages\/4724\/revisions"}],"predecessor-version":[{"id":5495,"href":"https:\/\/www.kirstin-ellen-vietze.de\/en\/wp-json\/wp\/v2\/pages\/4724\/revisions\/5495"}],"wp:attachment":[{"href":"https:\/\/www.kirstin-ellen-vietze.de\/en\/wp-json\/wp\/v2\/media?parent=4724"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}