{"id":9083,"date":"2026-04-10T10:30:39","date_gmt":"2026-04-10T08:30:39","guid":{"rendered":"https:\/\/www.myslivna.com\/?page_id=9083"},"modified":"2026-10-07T21:24:02","modified_gmt":"2026-10-07T19:24:02","slug":"konfigurator","status":"publish","type":"page","link":"https:\/\/www.myslivna.com\/de\/konfigurator\/","title":{"rendered":"Konfigur\u00e1tor"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"9083\" class=\"elementor elementor-9083\">\n\t\t\t\t<div class=\"elementor-element elementor-element-5eb32e4 e-flex e-con-boxed wpr-particle-no wpr-jarallax-no wpr-parallax-no wpr-sticky-section-no wpr-column-slider-no wpr-equal-height-no e-con e-parent\" data-id=\"5eb32e4\" data-element_type=\"container\" data-e-type=\"container\">\n\t\t\t\t\t<div class=\"e-con-inner\">\n\t\t\t\t<div class=\"elementor-element elementor-element-38c31f0 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"38c31f0\" data-element_type=\"widget\" data-e-type=\"widget\" data-widget_type=\"html.default\">\n\t\t\t\t<div class=\"elementor-widget-container\">\n\t\t\t\t\t<!DOCTYPE html>\r\n<html lang=\"cs\">\r\n<head>\r\n    <meta charset=\"UTF-8\">\r\n    <meta name=\"viewport\" content=\"width=device-width, initial-scale=1.0\">\r\n    <title>Chytr\u00fd konfigur\u00e1tor hostiny - Hotel Myslivna<\/title>\r\n    <!-- Fonty se na\u010d\u00edtaj\u00ed z webu Myslivna.com \/ Elementoru -->\r\n    <link rel=\"stylesheet\" href=\"https:\/\/cdnjs.cloudflare.com\/ajax\/libs\/font-awesome\/6.0.0\/css\/all.min.css\">\r\n    <style>\r\n        :root {\r\n            --forest-green: #013220;\r\n            --gold: #B8860B;\r\n            --gold-light: #D4AF37;\r\n            --cream: #FAF9F6;\r\n            --white: #ffffff;\r\n            --text-dark: #1a1a1a;\r\n            --text-muted: #666;\r\n            --transition: all 0.4s cubic-bezier(0.165, 0.84, 0.44, 1);\r\n        }\r\n        body { \r\n            background: var(--cream); \r\n            font-family: inherit, sans-serif;\r\n            color: var(--text-dark); \r\n            margin: 0;\r\n            padding: 0;\r\n        }\r\n        h1, h2, h3, h4 { \r\n            font-family: inherit, serif;\r\n            color: var(--forest-green); \r\n            margin-top: 0;\r\n        }\r\n        \/* Z-INDEX OCHRANA A ROZLO\u017dEN\u00cd PRO ELEMENTOR *\/\r\n        .wizard-step { \r\n            display: none; \r\n            margin: 20px auto; \r\n            max-width: 1100px; \r\n            padding: 0 10px; \r\n            animation: fadeIn 0.4s;\r\n            padding-bottom: 80px; \r\n            position: relative;\r\n            z-index: 10;\r\n        }\r\n        .wizard-step.active { display: block; }\r\n        @keyframes fadeIn { \r\n            from { opacity: 0; transform: translateY(15px); } \r\n            to { opacity: 1; transform: translateY(0); } \r\n        }\r\n        .section-card { \r\n            background: var(--white); \r\n            border-radius: 30px; \r\n            padding: 35px;\r\n            box-shadow: 0 15px 50px rgba(0,0,0,0.05); \r\n            border: 1px solid rgba(184, 134, 11, 0.05); \r\n            margin-bottom: 30px; \r\n            position: relative;\r\n            z-index: 15;\r\n            overflow: visible;\r\n        }\r\n        .event-grid { display: grid; grid-template-columns: repeat(3, 1fr); gap: 15px; margin-bottom: 25px; }\r\n        .event-card { \r\n            background: rgba(0, 0, 0, 0.7); \r\n            padding: 25px 15px; \r\n            border-radius: 20px; \r\n            text-align: center; \r\n            cursor: pointer; \r\n            transition: all 0.15s ease !important; \r\n            border: 2px solid rgba(255, 255, 255, 0.1) !important; \r\n            z-index: 20; \r\n            position: relative; \r\n            color: white !important;\r\n            touch-action: manipulation;\r\n            -webkit-tap-highlight-color: rgba(184, 134, 11, 0.25);\r\n            user-select: none;\r\n            -webkit-user-select: none;\r\n        }\r\n        .event-card * { pointer-events: none; }\r\n        .event-card h3 { color: #fff !important; font-size: 16px !important; margin-bottom: 6px !important; }\r\n        .event-card p { color: rgba(255, 255, 255, 0.75) !important; font-size: 12px !important; margin: 0 !important; line-height: 1.3 !important; }\r\n        .event-card:hover { transform: translateY(-3px); background: rgba(0, 0, 0, 0.9); box-shadow: 0 12px 25px rgba(0,0,0,0.25); border-color: var(--gold) !important; }\r\n        .event-card:active { transform: scale(0.96) !important; filter: brightness(1.2) !important; transition: transform 0.05s ease !important; }\r\n        .event-card.selected { \r\n            background: var(--forest-green) !important; \r\n            color: white !important; \r\n            border: 2px solid var(--gold) !important; \r\n            box-shadow: 0 8px 25px rgba(184, 134, 11, 0.35) !important; \r\n        }\r\n        .event-card.selected h3 { color: #fff !important; }\r\n        .event-card.selected p { color: rgba(255, 255, 255, 0.95) !important; }\r\n        .event-card.selected i { color: var(--gold) !important; transform: scale(1.1); }\r\n        .event-card i { font-size: 2.2rem; color: var(--gold); margin-bottom: 12px; transition: transform 0.2s ease; }\r\n        \r\n        #location-grid .event-card { padding: 18px 12px; }\r\n        #location-grid .event-card i { font-size: 1.8rem; margin-bottom: 8px; }\r\n\r\n        \/* SATIETY TIERS (CHYTR\u00dd RAUT) *\/\r\n        .satiety-tier-grid { display: grid; grid-template-columns: repeat(4, 1fr); gap: 12px; margin-bottom: 25px; }\r\n        .satiety-tier-card {\r\n            background: #ffffff !important;\r\n            border: 2px solid #e0e0e0 !important;\r\n            border-radius: 16px !important;\r\n            padding: 18px 12px !important;\r\n            text-align: center !important;\r\n            cursor: pointer !important;\r\n            transition: all 0.15s ease !important;\r\n            position: relative !important;\r\n            box-sizing: border-box !important;\r\n            touch-action: manipulation;\r\n            -webkit-tap-highlight-color: rgba(184, 134, 11, 0.2);\r\n            user-select: none;\r\n            -webkit-user-select: none;\r\n        }\r\n        .satiety-tier-card * { pointer-events: none; }\r\n        .satiety-tier-card:hover {\r\n            border-color: var(--gold) !important;\r\n            transform: translateY(-2px) !important;\r\n            box-shadow: 0 8px 20px rgba(0,0,0,0.06) !important;\r\n        }\r\n        .satiety-tier-card:active {\r\n            transform: scale(0.96) !important;\r\n            border-color: var(--gold) !important;\r\n            background: #fffcf0 !important;\r\n            transition: transform 0.05s ease !important;\r\n        }\r\n        .satiety-tier-card.selected {\r\n            border-color: var(--forest-green) !important;\r\n            background: #f0f7f3 !important;\r\n            box-shadow: 0 4px 15px rgba(1, 50, 32, 0.15) !important;\r\n            border-width: 2px !important;\r\n        }\r\n        .satiety-tier-card h4 {\r\n            margin: 0 0 5px 0 !important;\r\n            font-size: 15px !important;\r\n            font-weight: 700 !important;\r\n            color: var(--forest-green) !important;\r\n        }\r\n        .satiety-tier-card .tier-grams {\r\n            font-size: 16px !important;\r\n            font-weight: 800 !important;\r\n            color: var(--gold);\r\n            margin-bottom: 5px !important;\r\n        }\r\n        .satiety-tier-card p {\r\n            margin: 0 !important;\r\n            font-size: 11px !important;\r\n            color: var(--text-muted) !important;\r\n            line-height: 1.3 !important;\r\n        }\r\n        .tier-badge {\r\n            position: absolute !important;\r\n            top: -10px !important;\r\n            right: 12px !important;\r\n            background: var(--gold) !important;\r\n            color: white !important;\r\n            font-size: 9px !important;\r\n            font-weight: 800 !important;\r\n            padding: 2px 8px !important;\r\n            border-radius: 12px !important;\r\n            text-transform: uppercase !important;\r\n            letter-spacing: 0.5px !important;\r\n        }\r\n\r\n        \/* CHYTR\u00dd PANEL SESTAVY RAUTU (NOV\u00dd DASHBOARD) *\/\r\n        .buffet-dashboard {\r\n            display: grid;\r\n            grid-template-columns: 1.35fr 1fr;\r\n            gap: 20px;\r\n            background: #fffcf5;\r\n            border: 1px dashed var(--gold);\r\n            border-radius: 24px;\r\n            padding: 25px;\r\n            margin-bottom: 30px;\r\n            box-sizing: border-box;\r\n            max-width: 100%;\r\n        }\r\n        .buffet-panel-left {\r\n            display: flex;\r\n            flex-direction: column;\r\n            min-width: 0;\r\n            max-width: 100%;\r\n        }\r\n        .buffet-panel-right {\r\n            display: flex;\r\n            flex-direction: column;\r\n            background: #ffffff;\r\n            border: 1px solid rgba(184, 134, 11, 0.2);\r\n            border-radius: 20px;\r\n            padding: 22px;\r\n            box-shadow: 0 4px 15px rgba(0,0,0,0.03);\r\n            justify-content: space-between;\r\n            min-width: 0;\r\n            max-width: 100%;\r\n        }\r\n        .buffet-list-header {\r\n            display: flex;\r\n            justify-content: space-between;\r\n            align-items: center;\r\n            margin-bottom: 12px;\r\n            flex-wrap: wrap;\r\n            gap: 10px;\r\n        }\r\n        .buffet-list-header h4 {\r\n            margin: 0 !important;\r\n            font-size: 15px !important;\r\n            font-weight: 700 !important;\r\n            color: var(--forest-green) !important;\r\n            text-transform: uppercase;\r\n            letter-spacing: 0.5px;\r\n        }\r\n        .buffet-items-scroll {\r\n            max-height: 280px;\r\n            overflow-y: auto;\r\n            overflow-x: hidden;\r\n            padding-right: 5px;\r\n        }\r\n        .buffet-item-row {\r\n            background: #ffffff;\r\n            border: 1px solid #eee;\r\n            border-radius: 14px;\r\n            padding: 10px 14px;\r\n            margin-bottom: 8px;\r\n            display: flex;\r\n            align-items: center;\r\n            justify-content: space-between;\r\n            gap: 12px;\r\n            transition: var(--transition);\r\n            box-sizing: border-box;\r\n        }\r\n        .buffet-item-row:hover {\r\n            border-color: var(--gold);\r\n            box-shadow: 0 2px 8px rgba(0,0,0,0.04);\r\n        }\r\n        .buffet-item-row.is-locked {\r\n            border-left: 4px solid var(--gold);\r\n            background: #fffefb;\r\n        }\r\n        .buffet-item-info {\r\n            flex: 1;\r\n            min-width: 0;\r\n        }\r\n        .buffet-item-name {\r\n            font-weight: 700;\r\n            font-size: 13px;\r\n            color: var(--forest-green);\r\n            white-space: nowrap;\r\n            overflow: hidden;\r\n            text-overflow: ellipsis;\r\n            display: block;\r\n        }\r\n        .buffet-item-meta {\r\n            font-size: 11px;\r\n            color: var(--text-muted);\r\n            margin-top: 2px;\r\n        }\r\n        .buffet-item-weight {\r\n            text-align: right;\r\n            white-space: nowrap;\r\n            flex-shrink: 0;\r\n        }\r\n        .buffet-item-weight .grams-total {\r\n            font-weight: 800;\r\n            font-size: 14px;\r\n            color: var(--gold);\r\n            display: block;\r\n        }\r\n        .buffet-item-weight .grams-per-person {\r\n            font-size: 11px;\r\n            color: var(--forest-green);\r\n            font-weight: 600;\r\n        }\r\n        .buffet-item-actions {\r\n            display: flex;\r\n            align-items: center;\r\n            gap: 6px;\r\n            flex-shrink: 0;\r\n        }\r\n        .buffet-action-buttons {\r\n            display: inline-flex;\r\n            align-items: center;\r\n            gap: 6px;\r\n        }\r\n        .lock-btn {\r\n            background: #f4f4f4 !important;\r\n            border: 1px solid #ddd !important;\r\n            border-radius: 12px !important;\r\n            padding: 4px 8px !important;\r\n            font-size: 10px !important;\r\n            font-weight: 700 !important;\r\n            cursor: pointer !important;\r\n            color: #666 !important;\r\n            transition: 0.2s !important;\r\n            display: inline-flex !important;\r\n            align-items: center !important;\r\n            gap: 3px !important;\r\n        }\r\n        .lock-btn:hover {\r\n            border-color: var(--gold) !important;\r\n            color: var(--gold) !important;\r\n        }\r\n        .lock-btn.locked {\r\n            background: #fff8e6 !important;\r\n            border-color: var(--gold) !important;\r\n            color: var(--gold) !important;\r\n        }\r\n        .remove-mini-btn {\r\n            background: none !important;\r\n            border: none !important;\r\n            color: #e74c3c !important;\r\n            cursor: pointer !important;\r\n            font-size: 14px !important;\r\n            padding: 4px 6px !important;\r\n            opacity: 0.7;\r\n            transition: 0.2s;\r\n        }\r\n        .remove-mini-btn:hover {\r\n            opacity: 1;\r\n            transform: scale(1.15);\r\n        }\r\n        .empty-buffet-box {\r\n            text-align: center;\r\n            padding: 30px 15px;\r\n            color: var(--text-muted);\r\n            font-size: 13px;\r\n            border: 1px dashed #ddd;\r\n            border-radius: 14px;\r\n            background: rgba(255,255,255,0.6);\r\n        }\r\n        .empty-buffet-box i {\r\n            font-size: 24px;\r\n            color: var(--gold);\r\n            margin-bottom: 8px;\r\n            display: block;\r\n        }\r\n\r\n        \/* PACKAGE CARD SPECIAL (V\u00ddB\u011aRY \u0160\u00c9FKUCHA\u0158E) *\/\r\n        .package-card {\r\n            background: #ffffff !important;\r\n            border: 2px solid #eee !important;\r\n            border-radius: 20px !important;\r\n            overflow: hidden !important;\r\n            transition: var(--transition) !important;\r\n            display: flex !important;\r\n            flex-direction: column !important;\r\n        }\r\n        .package-card:hover {\r\n            border-color: var(--gold) !important;\r\n            box-shadow: 0 10px 30px rgba(184, 134, 11, 0.15) !important;\r\n            transform: translateY(-4px) !important;\r\n        }\r\n        .package-card.selected {\r\n            border-color: var(--forest-green) !important;\r\n            border-width: 2px !important;\r\n            box-shadow: 0 8px 25px rgba(1, 50, 32, 0.15) !important;\r\n            background: #fafdfb !important;\r\n        }\r\n        .package-img-box {\r\n            height: 200px !important;\r\n            position: relative !important;\r\n            overflow: hidden !important;\r\n            background: #eee !important;\r\n        }\r\n        .package-img-box img {\r\n            width: 100% !important;\r\n            height: 100% !important;\r\n            object-fit: cover !important;\r\n            transition: transform 0.8s cubic-bezier(0.165, 0.84, 0.44, 1) !important;\r\n        }\r\n        .package-card:hover .package-img-box img {\r\n            transform: scale(1.08) !important;\r\n        }\r\n        .package-badge-selected {\r\n            position: absolute !important;\r\n            top: 15px !important;\r\n            right: 15px !important;\r\n            background: var(--forest-green) !important;\r\n            color: white !important;\r\n            font-size: 11px !important;\r\n            font-weight: 800 !important;\r\n            padding: 6px 14px !important;\r\n            border-radius: 20px !important;\r\n            box-shadow: 0 4px 10px rgba(0,0,0,0.2) !important;\r\n            letter-spacing: 0.5px !important;\r\n            text-transform: uppercase !important;\r\n        }\r\n\r\n        \/* COVERAGE STATUS BAR PRO SERV\u00cdROVAN\u00c9 MENU *\/\r\n        .coverage-box {\r\n            background: #fffcf5 !important;\r\n            border: 1px dashed var(--gold) !important;\r\n            padding: 18px 25px !important;\r\n            border-radius: 16px !important;\r\n            margin-bottom: 25px !important;\r\n            display: flex !important;\r\n            justify-content: space-around !important;\r\n            flex-wrap: wrap !important;\r\n            gap: 15px !important;\r\n            text-align: center !important;\r\n        }\r\n        .coverage-item strong {\r\n            display: block !important;\r\n            font-size: 20px !important;\r\n            color: var(--forest-green) !important;\r\n        }\r\n        .coverage-item span {\r\n            font-size: 12px !important;\r\n            color: var(--text-muted) !important;\r\n            text-transform: uppercase !important;\r\n            letter-spacing: 0.5px !important;\r\n            font-weight: 700 !important;\r\n        }\r\n\r\n        \/* INPUTS *\/\r\n        .field-label { display: block; margin-bottom: 10px; font-weight: 700; font-size: 14px; text-transform: uppercase; color: var(--forest-green); letter-spacing: 0.5px; }\r\n        .input-base { width: 100%; border: 1px solid #ddd; padding: 0 20px; border-radius: 12px; font-family: inherit; font-size: 18px; font-weight: 600; background: white !important; color: #333 !important; transition: var(--transition); box-sizing: border-box; height: 60px !important; }\r\n        .input-base:focus { border-color: var(--gold); outline: none; background: white !important; }\r\n        select.input-base { cursor: pointer; appearance: menulist !important; -webkit-appearance: menulist !important; line-height: 60px !important; }\r\n        .form-row { display: grid; grid-template-columns: 1fr 1fr; gap: 20px; margin-bottom: 25px; }\r\n\r\n        \/* BUTTONS - AGRESIVN\u00cd VYNUCEN\u00cd P\u0158ES THEME CSS *\/\r\n        .myslivna-btn { background: var(--gold) !important; color: white !important; border: none !important; padding: 20px 40px !important; border-radius: 50px !important; font-weight: 700 !important; font-size: 18px !important; cursor: pointer !important; text-transform: uppercase !important; transition: all 0.15s ease !important; letter-spacing: 1px !important; display: block !important; text-align: center !important; position: relative !important; z-index: 9999 !important; box-sizing: border-box !important; text-decoration: none !important; touch-action: manipulation; -webkit-tap-highlight-color: rgba(184, 134, 11, 0.25); user-select: none; -webkit-user-select: none; }\r\n        .myslivna-btn:hover { background: var(--gold-light) !important; transform: translateY(-2px) !important; box-shadow: 0 10px 20px rgba(184, 134, 11, 0.2) !important; color: white !important; }\r\n        .myslivna-btn:active { transform: scale(0.96) translateY(2px) !important; filter: brightness(0.92) !important; box-shadow: 0 4px 12px rgba(0,0,0,0.2) !important; }\r\n        .myslivna-btn-secondary { background: #f0f0f0 !important; color: #333 !important; font-size: 13px !important; padding: 10px 20px !important; border: none !important; border-radius: 30px !important; font-weight: 700 !important; cursor: pointer !important; text-decoration: none !important; display: inline-flex !important; align-items: center !important; gap: 6px !important; transition: all 0.15s ease !important; touch-action: manipulation; -webkit-tap-highlight-color: rgba(184, 134, 11, 0.2); }\r\n        .myslivna-btn-secondary:hover { background: #e0e0e0 !important; transform: translateY(-2px) !important; color: #000 !important; }\r\n        .myslivna-btn-secondary:active { transform: scale(0.95) !important; background: #d5cbb5 !important; }\r\n\r\n        \/* SATIETY PROGRESS BAR *\/\r\n        .sat-bar { height: 12px; background: #e0e0e0; border-radius: 20px; margin-top: 10px; margin-bottom: 12px; overflow: hidden; }\r\n        .sat-fill { height: 100%; width: 0%; transition: width 0.5s ease-out, background-color 0.5s; }\r\n\r\n        \/* CATEGORY TABS *\/\r\n        .cat-tabs { display: flex; gap: 10px; overflow-x: auto; padding-bottom: 10px; margin-bottom: 30px; scrollbar-width: none; }\r\n        .cat-tabs::-webkit-scrollbar { display: none; }\r\n        .cat-btn { flex-shrink: 0; background: white !important; border: 1px solid #ddd !important; padding: 12px 25px !important; border-radius: 30px !important; cursor: pointer !important; white-space: nowrap !important; font-weight: 700 !important; color: var(--forest-green) !important; transition: all 0.15s ease !important; text-transform: uppercase !important; font-size: 13px !important; min-width: 120px !important; text-align: center !important; touch-action: manipulation; -webkit-tap-highlight-color: rgba(184, 134, 11, 0.2); user-select: none; -webkit-user-select: none; }\r\n        .cat-btn * { pointer-events: none; }\r\n        .cat-btn:hover { border-color: var(--gold) !important; color: var(--gold) !important; }\r\n        .cat-btn:active { transform: scale(0.94) !important; background: var(--gold) !important; color: white !important; border-color: var(--gold) !important; }\r\n        .cat-btn.active { background: var(--forest-green) !important; color: white !important; border-color: var(--forest-green) !important; }\r\n\r\n        \/* GASTRO GRID & CARDS *\/\r\n        .gastro-grid { display: grid; grid-template-columns: repeat(auto-fill, minmax(280px, 1fr)); gap: 25px; }\r\n        .food-card { background: var(--white); border-radius: 20px; border: 1px solid #eee; overflow: hidden; display: flex; flex-direction: column; transition: var(--transition); position: relative; }\r\n        .food-card:hover { border-color: var(--gold); box-shadow: 0 10px 30px rgba(184, 134, 11, 0.1); transform: translateY(-5px); }\r\n        .food-card.selected-card { border-color: var(--gold); box-shadow: 0 8px 25px rgba(184, 134, 11, 0.12); }\r\n        .food-img-box { height: 160px; overflow: hidden; position: relative; background: #eee; }\r\n        .food-img-box img { width: 100%; height: 100%; object-fit: cover; transition: transform 0.8s cubic-bezier(0.165, 0.84, 0.44, 1); }\r\n        .food-card:hover .food-img-box img { transform: scale(1.1); }\r\n        .food-content { padding: 25px; display: flex; flex-direction: column; flex: 1; }\r\n        .food-title { font-size: 17px !important; font-weight: 700 !important; color: var(--forest-green) !important; margin-bottom: 8px !important; line-height: 1.3 !important;}\r\n        .food-desc { font-size: 13px !important; color: var(--text-muted) !important; flex: 1 !important; margin-bottom: 20px !important; }\r\n        \r\n        .food-price-row { display: flex !important; justify-content: space-between !important; align-items: flex-end !important; margin-bottom: 15px !important; }\r\n        .food-price { font-weight: 700 !important; font-size: 20px !important; color: #000 !important; }\r\n        \/* P\u0158\u00cdLOHA K HLAVN\u00cdMU CHODU (SERV\u00cdROVAN\u00c9 MENU) *\/\r\n        .main-side-container {\r\n            margin: 10px 0 14px 0 !important;\r\n            padding: 12px 14px !important;\r\n            background: #faf8f3 !important;\r\n            border: 1.5px solid #e2dacd !important;\r\n            border-radius: 14px !important;\r\n            box-sizing: border-box !important;\r\n            transition: var(--transition) !important;\r\n        }\r\n        .main-side-container.has-side {\r\n            border-color: var(--gold) !important;\r\n            background: #fffcf5 !important;\r\n            box-shadow: 0 4px 15px rgba(184, 134, 11, 0.08) !important;\r\n        }\r\n        .main-side-header {\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            justify-content: space-between !important;\r\n            margin-bottom: 8px !important;\r\n            flex-wrap: wrap !important;\r\n            gap: 6px !important;\r\n        }\r\n        .main-side-label {\r\n            font-size: 11px !important;\r\n            font-weight: 700 !important;\r\n            color: var(--forest-green) !important;\r\n            text-transform: uppercase !important;\r\n            letter-spacing: 0.5px !important;\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 6px !important;\r\n            margin: 0 !important;\r\n        }\r\n        .main-side-badge {\r\n            color: var(--gold) !important;\r\n            font-weight: 800 !important;\r\n            font-size: 10px !important;\r\n            background: #ffffff !important;\r\n            padding: 2px 8px !important;\r\n            border-radius: 12px !important;\r\n            border: 1px solid var(--gold) !important;\r\n            text-transform: uppercase !important;\r\n            letter-spacing: 0.5px !important;\r\n            white-space: nowrap !important;\r\n        }\r\n        .main-side-select {\r\n            width: 100% !important;\r\n            height: 44px !important;\r\n            min-height: 44px !important;\r\n            line-height: 42px !important;\r\n            padding: 0 36px 0 12px !important;\r\n            font-size: 13px !important;\r\n            font-family: inherit !important;\r\n            font-weight: 600 !important;\r\n            color: var(--text-dark) !important;\r\n            background-color: #ffffff !important;\r\n            background-image: url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' width='12' height='12' viewBox='0 0 24 24' fill='none' stroke='%23B8860B' stroke-width='2.5' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpolyline points='6 9 12 15 18 9'%3E%3C\/polyline%3E%3C\/svg%3E\") !important;\r\n            background-repeat: no-repeat !important;\r\n            background-position: calc(100% - 12px) center !important;\r\n            background-size: 12px !important;\r\n            border: 1.5px solid #d4c5a9 !important;\r\n            border-radius: 10px !important;\r\n            cursor: pointer !important;\r\n            outline: none !important;\r\n            box-sizing: border-box !important;\r\n            -webkit-appearance: none !important;\r\n            -moz-appearance: none !important;\r\n            appearance: none !important;\r\n            text-overflow: ellipsis !important;\r\n            white-space: nowrap !important;\r\n            transition: var(--transition) !important;\r\n            display: block !important;\r\n        }\r\n        .main-side-select:focus, .main-side-container.has-side .main-side-select {\r\n            border-color: var(--gold) !important;\r\n            box-shadow: 0 0 0 2px rgba(184, 134, 11, 0.15) !important;\r\n        }\r\n        .main-side-confirm {\r\n            font-size: 11px !important;\r\n            color: var(--forest-green) !important;\r\n            margin-top: 7px !important;\r\n            font-weight: 600 !important;\r\n            display: flex !important;\r\n            align-items: center !important;\r\n            gap: 5px !important;\r\n            line-height: 1.3 !important;\r\n        }\r\n        \r\n        \/* QUANTITY BUTTONS *\/\r\n        .qty-box { background: #fafafa !important; border: 1px solid #ddd !important; border-radius: 12px !important; display: flex !important; justify-content: space-between !important; align-items: center !important; padding: 5px !important; }\r\n        .qty-btn { background: white !important; border: 1px solid #eee !important; width: 40px !important; height: 40px !important; border-radius: 8px !important; cursor: pointer !important; color: var(--forest-green) !important; font-size: 16px !important; box-shadow: 0 2px 5px rgba(0,0,0,0.05) !important; transition: 0.2s !important; display: flex !important; align-items: center !important; justify-content: center !important;}\r\n        .qty-btn:hover { background: var(--gold) !important; color: white !important; border-color: var(--gold) !important; }\r\n        .qty-add-btn { background: var(--cream) !important; border: 1px solid var(--gold) !important; color: var(--gold) !important; width: 100% !important; padding: 15px !important; border-radius: 12px !important; font-weight: 700 !important; cursor: pointer !important; transition: 0.2s !important; text-transform: uppercase !important; font-size: 13px !important; display: block !important; text-align: center !important;}\r\n        .qty-add-btn:hover { background: var(--gold) !important; color: white !important; }\r\n\r\n        \/* CHECKBOXES & RADIO CARDS *\/\r\n        .radio-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(200px, 1fr)); gap: 15px; }\r\n        .radio-card { border: 1px solid #ddd; border-radius: 15px; padding: 20px; cursor: pointer; background: white; transition: var(--transition); }\r\n        .radio-card.active { border-color: var(--forest-green); border-width: 2px; background: #f0fdf4; }\r\n        \r\n        .checkbox-custom { width: 24px; height: 24px; accent-color: var(--forest-green); cursor: pointer; flex-shrink: 0;}\r\n        .service-row { display: flex; align-items: flex-start; gap: 15px; padding: 20px; border: 1px solid #ddd; border-radius: 15px; margin-bottom: 15px; background: white; transition: var(--transition);}\r\n        .service-row:hover { border-color: var(--gold); }\r\n        .service-row.active { border-color: var(--forest-green); background: #f0fdf4; border-width: 2px;}\r\n\r\n        \/* GLASSMORPHISM CART *\/\r\n        .sticky-cart { \r\n            position: fixed; \r\n            bottom: 25px; \r\n            left: 50%; \r\n            transform: translateX(-50%); \r\n            background: rgba(26, 60, 40, 0.85); \r\n            backdrop-filter: blur(12px);\r\n            -webkit-backdrop-filter: blur(12px);\r\n            color: white; \r\n            width: 90%; \r\n            max-width: 1000px; \r\n            border-radius: 50px; \r\n            padding: 15px 30px; \r\n            display: flex; \r\n            justify-content: space-between; \r\n            align-items: center; \r\n            z-index: 1000; \r\n            box-shadow: 0 10px 30px rgba(0,0,0,0.25), inset 0 1px 1px rgba(255,255,255,0.15); \r\n            border: 1px solid rgba(255,255,255,0.1); \r\n            transition: transform 0.3s cubic-bezier(0.165, 0.84, 0.44, 1), box-shadow 0.3s;\r\n        }\r\n        .sticky-cart:hover {\r\n            transform: translateX(-50%) translateY(-2px);\r\n            box-shadow: 0 20px 40px rgba(0,0,0,0.35), inset 0 1px 1px rgba(255,255,255,0.2); \r\n        }\r\n        .service-list-action { justify-content: space-between; }\r\n        \r\n        .summary-list-item { display: flex; justify-content: space-between; padding: 12px 0; border-bottom: 1px solid #eee; font-size: 15px; color: #333; }\r\n        .price-tag { font-weight: 700; color: var(--forest-green); }\r\n        .price-tag.discounted { color: #059669; }\r\n        .old-price { text-decoration: line-through; color: #999; font-size: 13px; margin-right: 8px; }\r\n\r\n        @media (max-width: 768px) {\r\n            h1 { font-size: 1.8rem !important; }\r\n            .section-card { padding: 25px 15px; margin-bottom: 15px; box-sizing: border-box !important; }\r\n            .form-row { grid-template-columns: 1fr; gap: 15px; margin-bottom: 15px; }\r\n            .event-grid { grid-template-columns: repeat(3, 1fr); gap: 8px; }\r\n            .event-card { padding: 15px 5px; border-radius: 15px; }\r\n            .event-card i { font-size: 1.4rem; margin-bottom: 8px; }\r\n            .event-card h3 { font-size: 12px !important; line-height: 1.2 !important; }\r\n            #location-grid { grid-template-columns: 1fr !important; gap: 10px !important; }\r\n            #format-grid { grid-template-columns: 1fr !important; gap: 10px !important; }\r\n            .satiety-tier-grid { grid-template-columns: 1fr 1fr !important; gap: 8px !important; }\r\n            \r\n            \/* CHYTR\u00dd RAUT DASHBOARD MOBILN\u00cd ZAROVN\u00c1N\u00cd *\/\r\n            .buffet-dashboard { \r\n                grid-template-columns: 100% !important; \r\n                padding: 14px 12px !important; \r\n                gap: 16px !important; \r\n                width: 100% !important;\r\n                max-width: 100% !important;\r\n                box-sizing: border-box !important;\r\n                overflow-x: hidden !important;\r\n            }\r\n            .buffet-panel-left {\r\n                width: 100% !important;\r\n                max-width: 100% !important;\r\n                min-width: 0 !important;\r\n                box-sizing: border-box !important;\r\n            }\r\n            .buffet-list-header {\r\n                flex-direction: row !important;\r\n                justify-content: space-between !important;\r\n                align-items: center !important;\r\n                gap: 8px !important;\r\n                margin-bottom: 10px !important;\r\n            }\r\n            .buffet-list-header h4 {\r\n                font-size: 13px !important;\r\n                white-space: normal !important;\r\n            }\r\n            .buffet-items-scroll {\r\n                max-height: 320px !important;\r\n                overflow-y: auto !important;\r\n                overflow-x: hidden !important;\r\n                padding-right: 2px !important;\r\n                width: 100% !important;\r\n                box-sizing: border-box !important;\r\n            }\r\n            #buffet-items-list {\r\n                width: 100% !important;\r\n                box-sizing: border-box !important;\r\n            }\r\n            .buffet-item-row {\r\n                display: flex !important;\r\n                flex-wrap: wrap !important;\r\n                justify-content: space-between !important;\r\n                align-items: flex-start !important;\r\n                padding: 10px 12px !important;\r\n                margin-bottom: 8px !important;\r\n                gap: 8px 6px !important;\r\n                width: 100% !important;\r\n                max-width: 100% !important;\r\n                box-sizing: border-box !important;\r\n            }\r\n            .buffet-item-info {\r\n                flex: 1 1 calc(100% - 110px) !important;\r\n                min-width: 0 !important;\r\n            }\r\n            .buffet-item-name {\r\n                font-size: 13px !important;\r\n                white-space: normal !important;\r\n                line-height: 1.25 !important;\r\n                word-break: break-word !important;\r\n            }\r\n            .buffet-item-meta {\r\n                font-size: 11px !important;\r\n                margin-top: 3px !important;\r\n                color: var(--text-muted) !important;\r\n            }\r\n            .buffet-item-weight {\r\n                flex: 0 0 auto !important;\r\n                text-align: right !important;\r\n                white-space: nowrap !important;\r\n            }\r\n            .buffet-item-weight .grams-total {\r\n                font-size: 14px !important;\r\n                font-weight: 800 !important;\r\n                color: var(--gold) !important;\r\n                display: block !important;\r\n            }\r\n            .buffet-item-weight .grams-per-person {\r\n                font-size: 10px !important;\r\n                color: var(--forest-green) !important;\r\n                font-weight: 600 !important;\r\n                display: block !important;\r\n            }\r\n            .buffet-item-actions {\r\n                flex: 1 1 100% !important;\r\n                width: 100% !important;\r\n                display: flex !important;\r\n                justify-content: space-between !important;\r\n                align-items: center !important;\r\n                margin-top: 4px !important;\r\n                padding-top: 8px !important;\r\n                border-top: 1px dashed #f0ede6 !important;\r\n                box-sizing: border-box !important;\r\n            }\r\n            .buffet-item-actions .qty-box {\r\n                background: #f8f8f8 !important;\r\n                border: 1px solid #ddd !important;\r\n                border-radius: 10px !important;\r\n                padding: 2px !important;\r\n                margin: 0 !important;\r\n                display: inline-flex !important;\r\n                align-items: center !important;\r\n            }\r\n            .buffet-item-actions .qty-btn {\r\n                width: 32px !important;\r\n                height: 32px !important;\r\n                font-size: 12px !important;\r\n            }\r\n            .buffet-item-actions .qty-input {\r\n                width: 36px !important;\r\n                font-size: 13px !important;\r\n                font-weight: 700 !important;\r\n            }\r\n            .buffet-action-buttons {\r\n                display: inline-flex !important;\r\n                align-items: center !important;\r\n                gap: 6px !important;\r\n            }\r\n            .lock-btn {\r\n                padding: 6px 10px !important;\r\n                font-size: 11px !important;\r\n                border-radius: 10px !important;\r\n                min-height: 32px !important;\r\n            }\r\n            .remove-mini-btn {\r\n                font-size: 16px !important;\r\n                padding: 6px 8px !important;\r\n                min-height: 32px !important;\r\n                display: inline-flex !important;\r\n                align-items: center !important;\r\n                justify-content: center !important;\r\n            }\r\n            .buffet-panel-right {\r\n                width: 100% !important;\r\n                max-width: 100% !important;\r\n                min-width: 0 !important;\r\n                box-sizing: border-box !important;\r\n                padding: 16px 14px !important;\r\n            }\r\n\r\n            .gastro-grid { grid-template-columns: 1fr !important; gap: 15px; }\r\n            .food-img-box { height: 180px !important; }\r\n            .food-content { padding: 15px; }\r\n            .food-title { font-size: 15px !important; }\r\n            .food-price { font-size: 18px !important; }\r\n            \r\n            .qty-box { padding: 3px !important; }\r\n            .qty-btn { width: 35px !important; height: 35px !important; }\r\n            \r\n            \/* Kompaktn\u00ed spodn\u00ed ko\u0161\u00edk *\/\r\n            .sticky-cart { flex-direction: row; gap: 10px; border-radius: 20px; bottom: 10px; padding: 12px 15px; width: 95%; justify-content: space-between; }\r\n            .sticky-cart .myslivna-btn { width: auto !important; margin-top: 0 !important; padding: 10px 15px !important; font-size: 13px !important; }\r\n            #cart-total { font-size: 20px !important; }\r\n            \r\n            \/* Oprava zobrazen\u00ed porce *\/\r\n            .wizard-step div[style*=\"font-size:18px\"] { font-size: 15px !important; }\r\n            .wizard-step div[style*=\"font-size:14px\"] { font-size: 12px !important; }\r\n            \r\n            .hide-mobile { display: none !important; }\r\n            .cat-tabs { margin-bottom: 20px; }\r\n            .wizard-step { padding-bottom: 100px; }\r\n        }\r\n    \r\n        .modul-details { margin-top: 10px; background: rgba(188, 155, 77, 0.05); border-radius: 8px; font-size: 13px; line-height: 1.5; text-align: left; }\r\n        .modul-details summary { cursor: pointer; padding: 10px; font-weight: 700; color: var(--gold); border-bottom: 1px solid rgba(188, 155, 77, 0.2); }\r\n        .modul-details .modul-content { padding: 10px; color: var(--text-muted); }\r\n        .modul-content strong { color: var(--forest-green); display: block; margin-top: 8px; font-size: 12px; text-transform: uppercase; letter-spacing: 0.5px; }\r\n        input[type=number].qty-input::-webkit-inner-spin-button, input[type=number].qty-input::-webkit-outer-spin-button { -webkit-appearance: none; margin: 0; }\r\n        .qty-input { width: 50px; text-align: center; font-weight: 700; color: var(--forest-green); font-size: 16px; border: none; background: transparent; outline: none; -moz-appearance: textfield; padding: 0; }\r\n\r\n        \/* V\u0160EOBECN\u00c1 OKAM\u017dIT\u00c1 HAPTICK\u00c1 A VIZU\u00c1LN\u00cd ODEZVA PRO V\u0160ECHNA TLA\u010c\u00cdTKA *\/\r\n        button, .myslivna-btn, .qty-btn, .qty-add-btn, .lock-btn, .remove-mini-btn, .event-card, .satiety-tier-card, .cat-btn, .service-row {\r\n            touch-action: manipulation;\r\n            -webkit-tap-highlight-color: rgba(184, 134, 11, 0.25);\r\n        }\r\n        .qty-btn { transition: all 0.1s ease !important; touch-action: manipulation; }\r\n        .qty-btn:active { transform: scale(0.85) !important; background: var(--gold) !important; color: white !important; border-color: var(--gold) !important; }\r\n        .qty-add-btn { transition: all 0.15s ease !important; touch-action: manipulation; }\r\n        .qty-add-btn:active { transform: scale(0.95) !important; background: var(--forest-green) !important; color: white !important; border-color: var(--forest-green) !important; }\r\n        .lock-btn { transition: all 0.1s ease !important; touch-action: manipulation; }\r\n        .lock-btn:active { transform: scale(0.88) !important; }\r\n        .remove-mini-btn { transition: all 0.1s ease !important; touch-action: manipulation; }\r\n        .remove-mini-btn:active { transform: scale(0.82) !important; color: #c0392b !important; }\r\n        .service-row:active { transform: scale(0.98) !important; border-color: var(--gold) !important; }\r\n    <\/style>\r\n<\/head>\r\n<body>\r\n<div id=\"app\">\r\n    <!-- KROK 1: ONBOARDING -->\r\n    <div id=\"step-1\" class=\"wizard-step active\">\r\n        <div class=\"section-card\" style=\"max-width: 800px; margin: 0 auto; text-align: center;\">\r\n            <i class=\"fas fa-utensils\" style=\"font-size: 3rem; color: var(--gold); margin-bottom: 20px;\"><\/i>\r\n            <h1 style=\"font-size: 2.5rem;\">Konfigur\u00e1tor hostiny<\/h1>\r\n            <p style=\"color: var(--text-muted); margin-bottom: 35px;\">Zadejte z\u00e1kladn\u00ed parametry Va\u0161\u00ed akce v Hotelu Myslivna.<\/p>\r\n            \r\n            <div style=\"text-align: left; margin-bottom: 25px;\">\r\n                <label class=\"field-label\">N\u00e1zev akce<\/label>\r\n                <input type=\"text\" id=\"evName\" placeholder=\"Nap\u0159. Oslava 50. narozenin, Na\u0161e svatba\" class=\"input-base\">\r\n            <\/div>\r\n\r\n            <div style=\"text-align: left; margin-bottom: 10px;\">\r\n                <label class=\"field-label\">Typ ud\u00e1losti<\/label>\r\n            <\/div>\r\n            <div class=\"event-grid\" id=\"type-grid\">\r\n                <div class=\"event-card selected\" onclick=\"window.app.setType('Svatba', this)\">\r\n                    <i class=\"fas fa-ring\"><\/i>\r\n                    <h3>Svatba<\/h3>\r\n                <\/div>\r\n                <div class=\"event-card\" onclick=\"window.app.setType('Rodinn\u00e1 oslava', this)\">\r\n                    <i class=\"fas fa-glass-cheers\"><\/i>\r\n                    <h3>Oslava<\/h3>\r\n                <\/div>\r\n                <div class=\"event-card\" onclick=\"window.app.setType('Firemn\u00ed akce', this)\">\r\n                    <i class=\"fas fa-users\"><\/i>\r\n                    <h3>Firemn\u00ed<\/h3>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div style=\"text-align: left; margin-bottom: 10px; margin-top: 10px;\">\r\n                <label class=\"field-label\">Zp\u016fsob pod\u00e1v\u00e1n\u00ed hostiny<\/label>\r\n            <\/div>\r\n            <div class=\"event-grid\" id=\"format-grid\">\r\n                <div class=\"event-card selected\" onclick=\"window.app.setFormat('SMART_BUFFET', this)\" id=\"fmt-SMART_BUFFET\">\r\n                    <i class=\"fas fa-magic\"><\/i>\r\n                    <h3>Chytr\u00fd raut na m\u00edru<\/h3>\r\n                    <p>Degusta\u010dn\u00ed rautov\u00e9 porce (100g, men\u0161\u00ed kusy po v\u00edce ks) se z\u00e1rukou sytosti<\/p>\r\n                <\/div>\r\n                <div class=\"event-card\" onclick=\"window.app.setFormat('CHEF_PACKAGE', this)\" id=\"fmt-CHEF_PACKAGE\">\r\n                    <i class=\"fas fa-concierge-bell\"><\/i>\r\n                    <h3>V\u00fdb\u011bry \u0161\u00e9fkucha\u0159e<\/h3>\r\n                    <p>3 hotov\u00e9 osv\u011bd\u010den\u00e9 rautov\u00e9 sestavy (800g \/ 1000g \/ 1200g)<\/p>\r\n                <\/div>\r\n                <div class=\"event-card\" onclick=\"window.app.setFormat('PLATED_MENU', this)\" id=\"fmt-PLATED_MENU\">\r\n                    <i class=\"fas fa-utensils\"><\/i>\r\n                    <h3>Serv\u00edrovan\u00e9 menu<\/h3>\r\n                    <p>Klasick\u00e9 pln\u00e9 porce (150g na hosta) serv\u00edrovan\u00e9 p\u0159\u00edmo ke stolu<\/p>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div style=\"text-align: left; margin-bottom: 10px; margin-top: 10px;\">\r\n                <label class=\"field-label\">M\u00edsto kon\u00e1n\u00ed<\/label>\r\n            <\/div>\r\n            <div class=\"event-grid\" style=\"grid-template-columns: 1fr 1fr;\" id=\"location-grid\">\r\n                <div class=\"event-card selected\" onclick=\"window.app.setLocation('U n\u00e1s v restauraci', this)\" id=\"loc-Restaurace\">\r\n                    <i class=\"fas fa-home\"><\/i>\r\n                    <h3>U n\u00e1s v restauraci<\/h3>\r\n                <\/div>\r\n                <div class=\"event-card\" onclick=\"window.app.setLocation('Vlastn\u00ed m\u00edsto', this)\" id=\"loc-Vlastni\">\r\n                    <i class=\"fas fa-truck\"><\/i>\r\n                    <h3>Vlastn\u00ed m\u00edsto (Catering)<\/h3>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"form-row\" style=\"text-align: left;\">\r\n                <div>\r\n                    <label class=\"field-label\">Term\u00edn kon\u00e1n\u00ed<\/label>\r\n                    <input type=\"date\" id=\"evDate\" class=\"input-base\" oninput=\"this.style.borderColor=''; this.style.boxShadow='';\">\r\n                <\/div>\r\n                <div>\r\n                    <label class=\"field-label\">\u010cas za\u010d\u00e1tku<\/label>\r\n                    <select id=\"evTime\" class=\"input-base\">\r\n                        <option value=\"11:00\">11:00<\/option>\r\n                        <option value=\"11:30\">11:30<\/option>\r\n                        <option value=\"12:00\">12:00<\/option>\r\n                        <option value=\"12:30\">12:30<\/option>\r\n                        <option value=\"13:00\" selected>13:00<\/option>\r\n                        <option value=\"13:30\">13:30<\/option>\r\n                        <option value=\"14:00\">14:00<\/option>\r\n                        <option value=\"14:30\">14:30<\/option>\r\n                        <option value=\"15:00\">15:00<\/option>\r\n                        <option value=\"15:30\">15:30<\/option>\r\n                        <option value=\"16:00\">16:00<\/option>\r\n                        <option value=\"16:30\">16:30<\/option>\r\n                        <option value=\"17:00\">17:00<\/option>\r\n                        <option value=\"17:30\">17:30<\/option>\r\n                        <option value=\"18:00\">18:00<\/option>\r\n                        <option value=\"18:30\">18:30<\/option>\r\n                        <option value=\"19:00\">19:00<\/option>\r\n                        <option value=\"19:30\">19:30<\/option>\r\n                        <option value=\"20:00\">20:00<\/option>\r\n                    <\/select>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <div class=\"form-row\" style=\"text-align: left;\">\r\n                <div>\r\n                    <label class=\"field-label\">Po\u010det dosp\u011bl\u00fdch<\/label>\r\n                    <input type=\"number\" id=\"evAd\" min=\"1\" value=\"20\" class=\"input-base\" onchange=\"window.app.onGuestCountChange()\">\r\n                <\/div>\r\n                <div>\r\n                    <label class=\"field-label\" style=\"color: #059669;\">D\u011bti do 12 let (Sleva 25 %)<\/label>\r\n                    <input type=\"number\" id=\"evCh\" min=\"0\" value=\"0\" class=\"input-base\" style=\"border-color: #059669;\" onchange=\"window.app.onGuestCountChange()\">\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <button onclick=\"window.app.goto(2)\" class=\"myslivna-btn\" style=\"width: 100% !important; margin-top: 30px !important;\">\r\n                Sestavit sv\u00e1te\u010dn\u00ed menu <i class=\"fas fa-arrow-right\" style=\"margin-left: 10px;\"><\/i>\r\n            <\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- KROK 2: GASTRO CATALOG -->\r\n    <div id=\"step-2\" class=\"wizard-step\">\r\n        <div class=\"section-card\">\r\n            \r\n            <div style=\"display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; margin-bottom:25px;\">\r\n                <div>\r\n                    <h1 style=\"margin-bottom:5px;\">V\u00fdb\u011br gastronomie<\/h1>\r\n                    <p id=\"cat-subtitle\" style=\"color:var(--text-muted); font-weight:600; margin:0;\">20 osob \u2022 Svatba \u2022 Chytr\u00fd raut na m\u00edru<\/p>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <!-- CHYTR\u00dd RAUT: V\u00ddB\u011aR \u00daROVN\u011a SYTOSTI A POKRO\u010cIL\u00dd DASHBOARD -->\r\n            <div id=\"smart-buffet-panel\">\r\n                <div style=\"text-align: left; margin-bottom: 12px;\">\r\n                    <label class=\"field-label\"><i class=\"fas fa-balance-scale\" style=\"color:var(--gold);\"><\/i> Zvolte po\u017eadovanou \u00farove\u0148 sytosti rautu:<\/label>\r\n                <\/div>\r\n                <div class=\"satiety-tier-grid\" id=\"satiety-tier-grid\">\r\n                    <div class=\"satiety-tier-card\" onclick=\"window.app.setSatietyTier('TIER_500', this)\" id=\"tier-TIER_500\">\r\n                        <h4>Mysliveck\u00e1 sva\u010dina<\/h4>\r\n                        <div class=\"tier-grams\">500 g \/ osoba<\/div>\r\n                        <p>Leh\u010d\u00ed raut k pivu, v\u00ednu \u010di ve\u010dern\u00edmu posezen\u00ed<\/p>\r\n                    <\/div>\r\n                    <div class=\"satiety-tier-card selected\" onclick=\"window.app.setSatietyTier('TIER_800', this)\" id=\"tier-TIER_800\">\r\n                        <span class=\"tier-badge\">DOPORU\u010cENO<\/span>\r\n                        <h4>Pansk\u00e1 hostina<\/h4>\r\n                        <div class=\"tier-grams\">800 g \/ osoba<\/div>\r\n                        <p>Bohat\u00fd plnohodnotn\u00fd raut pro celove\u010dern\u00ed oslavu \u010di svatbu<\/p>\r\n                    <\/div>\r\n                    <div class=\"satiety-tier-card\" onclick=\"window.app.setSatietyTier('TIER_1150', this)\" id=\"tier-TIER_1150\">\r\n                        <h4>Ro\u017embersk\u00e1 tabule<\/h4>\r\n                        <div class=\"tier-grams\">1 150 g \/ osoba<\/div>\r\n                        <p>Kr\u00e1lovsk\u00e1 hostina pro nejn\u00e1ro\u010dn\u011bj\u0161\u00ed gurm\u00e1ny s velkou chut\u00ed<\/p>\r\n                    <\/div>\r\n                    <div class=\"satiety-tier-card\" onclick=\"window.app.setSatietyTier('TIER_CUSTOM', this)\" id=\"tier-TIER_CUSTOM\">\r\n                        <h4>Vlastn\u00ed v\u00fdb\u011br<\/h4>\r\n                        <div class=\"tier-grams\">Ru\u010dn\u00ed po\u010dty<\/div>\r\n                        <p>P\u0159esn\u00fd po\u010det porc\u00ed si u ka\u017ed\u00e9ho j\u00eddla ur\u010d\u00edte sami<\/p>\r\n                    <\/div>\r\n                <\/div>\r\n\r\n                <!-- CHYTR\u00dd DASHBOARD RAUTU: SEZNAM J\u00cdDEL S GRAM\u00c1\u017d\u00cd A CELKOV\u00c1 SYTOST -->\r\n                <div class=\"buffet-dashboard\">\r\n                    <!-- LEV\u00dd PANEL: SEZNAM NAVOLEN\u00ddCH J\u00cdDEL S GRAM\u00c1\u017d\u00cd -->\r\n                    <div class=\"buffet-panel-left\">\r\n                        <div class=\"buffet-list-header\">\r\n                            <h4><i class=\"fas fa-clipboard-list\" style=\"color:var(--gold); margin-right:6px;\"><\/i> Vybran\u00e1 j\u00eddla na rautov\u00fd st\u016fl<\/h4>\r\n                            <button onclick=\"window.app.unlockAll()\" class=\"myslivna-btn-secondary\" style=\"font-size:11px !important; padding:5px 12px !important;\" title=\"Odemkne v\u0161echny polo\u017eky a rozd\u011bl\u00ed 100% sytosti rovn\u00fdm d\u00edlem\">\r\n                                <i class=\"fas fa-sync-alt\"><\/i> Vyv\u00e1\u017eit rovnom\u011brn\u011b\r\n                            <\/button>\r\n                        <\/div>\r\n                        <div class=\"buffet-items-scroll\" id=\"buffet-items-list\">\r\n                            <!-- JS sem dynamicky renderuje vybran\u00e1 j\u00eddla -->\r\n                        <\/div>\r\n                    <\/div>\r\n\r\n                    <!-- PRAV\u00dd PANEL: CELKOV\u00c1 SYTOST A SHRNUT\u00cd -->\r\n                    <div class=\"buffet-panel-right\">\r\n                        <div>\r\n                            <div style=\"display:flex; justify-content:space-between; align-items:flex-start; margin-bottom:5px;\">\r\n                                <div>\r\n                                    <div style=\"font-size:11px; text-transform:uppercase; color:var(--text-muted); font-weight:700; letter-spacing:0.5px;\">Celkov\u00e1 sytost rautu<\/div>\r\n                                    <div id=\"satiety-text\" style=\"font-size:22px; font-weight:800; color:var(--forest-green); margin-top:2px;\">0 g \/ 800 g (0 %)<\/div>\r\n                                <\/div>\r\n                                <span id=\"satiety-status-badge\" style=\"background:#e74c3c; color:white; font-size:10px; font-weight:800; padding:4px 10px; border-radius:12px; text-transform:uppercase;\">M\u00e1lo j\u00eddla<\/span>\r\n                            <\/div>\r\n                            \r\n                            <div class=\"sat-bar\">\r\n                                <div id=\"satiety-fill\" class=\"sat-fill\" style=\"width:0%; background:#e74c3c;\"><\/div>\r\n                            <\/div>\r\n\r\n                            <div style=\"background:#fafafa; border:1px solid #eee; border-radius:14px; padding:12px; margin-top:10px;\">\r\n                                <div style=\"display:flex; justify-content:space-between; font-size:12px; margin-bottom:6px;\">\r\n                                    <span style=\"color:var(--text-muted);\">V\u00e1ha j\u00eddla na rautov\u00e9m stole:<\/span>\r\n                                    <strong id=\"dash-total-weight\" style=\"color:var(--forest-green);\">0 kg<\/strong>\r\n                                <\/div>\r\n                                <div style=\"display:flex; justify-content:space-between; font-size:12px; margin-bottom:6px;\">\r\n                                    <span style=\"color:var(--text-muted);\">Cena za vybran\u00e9 j\u00eddlo:<\/span>\r\n                                    <strong id=\"dash-total-price\" style=\"color:var(--gold);\">0 K\u010d<\/strong>\r\n                                <\/div>\r\n                                <div style=\"display:flex; justify-content:space-between; font-size:12px;\">\r\n                                    <span style=\"color:var(--text-muted);\">Po\u010det vybran\u00fdch pokrm\u016f:<\/span>\r\n                                    <strong id=\"dash-items-count\">0 druh\u016f<\/strong>\r\n                                <\/div>\r\n                            <\/div>\r\n                        <\/div>\r\n\r\n                        <div style=\"font-size:11px; color:var(--text-muted); line-height:1.4; margin-top:12px; border-top:1px dashed #eee; padding-top:10px;\">\r\n                            <i class=\"fas fa-info-circle\" style=\"color:var(--gold);\"><\/i> <strong>Princip 100% rozd\u011blen\u00ed:<\/strong> Ka\u017ed\u00e9 p\u0159idan\u00e9 j\u00eddlo se rozd\u011bl\u00ed rovn\u00fdm d\u00edlem. Ru\u010dn\u011b upraven\u00e1 polo\u017eka se zafixuje (<i class=\"fas fa-lock\" style=\"color:var(--gold);\"><\/i>) a zb\u00fdvaj\u00edc\u00ed gram\u00e1\u017e se automaticky dopo\u010dte z ostatn\u00edch j\u00eddel.\r\n                        <\/div>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>\r\n\r\n            <!-- V\u00ddB\u011aRY \u0160\u00c9FKUCHA\u0158E: 3 HOTOV\u00c9 BAL\u00cd\u010cKY -->\r\n            <div id=\"chef-packages-panel\" style=\"display:none; margin-bottom:30px;\">\r\n                <p style=\"color:var(--text-muted); font-size:14px; margin-bottom:20px;\">\r\n                    Vyberte si jeden z na\u0161ich t\u0159ech vyhl\u00e1\u0161en\u00fdch hotov\u00fdch raut\u016f. Sta\u010d\u00ed jedno kliknut\u00ed a menu pro v\u0161echny hosty je hotov\u00e9.\r\n                <\/p>\r\n                <div class=\"gastro-grid\" id=\"chef-packages-grid\">\r\n                    <!-- Bal\u00ed\u010dky vykresleny dynamicky JS -->\r\n                <\/div>\r\n            <\/div>\r\n\r\n                        <!-- SERV\u00cdROVAN\u00c9 MENU: UKAZATEL POKRYT\u00cd HOST\u016e -->\r\n            <div id=\"plated-menu-panel\" style=\"display:none;\">\r\n                <div class=\"coverage-box\" style=\"grid-template-columns: repeat(4, 1fr);\">\r\n                    <div class=\"coverage-item\">\r\n                        <strong id=\"cov-soups\">0 \/ 20<\/strong>\r\n                        <span>Pol\u00e9vky<\/span>\r\n                    <\/div>\r\n                    <div class=\"coverage-item\">\r\n                        <strong id=\"cov-mains\">0 \/ 20<\/strong>\r\n                        <span>Hlavn\u00ed chody<\/span>\r\n                    <\/div>\r\n                    <div class=\"coverage-item\">\r\n                        <strong id=\"cov-sides\">0 \/ 20<\/strong>\r\n                        <span>P\u0159\u00edlohy k chod\u016fm<\/span>\r\n                    <\/div>\r\n                    <div class=\"coverage-item\">\r\n                        <strong id=\"cov-desserts\">0 \/ 20<\/strong>\r\n                        <span>Dezerty<\/span>\r\n                    <\/div>\r\n                <\/div>\r\n                <p style=\"color:var(--text-muted); font-size:13px; margin-bottom:20px; text-align:center;\">\r\n                    <i class=\"fas fa-info-circle\" style=\"color:var(--gold);\"><\/i> Pro serv\u00edrovanou hostinu si <strong>u ka\u017ed\u00e9ho hlavn\u00edho chodu p\u0159\u00edmo v kart\u011b zvolte individu\u00e1ln\u00ed p\u0159\u00edlohu<\/strong> (knedl\u00edky, noky, grenaille, hranolky apod.).\r\n                <\/p>\r\n            <\/div>\r\n\r\n\r\n            <!-- KATALOG J\u00cdDEL (pro Chytr\u00fd raut a Serv\u00edrovan\u00e9 menu) -->\r\n            <div id=\"gastro-catalog-wrap\">\r\n                <div class=\"cat-tabs\" id=\"cat-tabs\">\r\n                    <!-- Tabs generov\u00e1ny dynamicky JS -->\r\n                <\/div>\r\n                <div class=\"gastro-grid\" id=\"catalog-grid\">\r\n                    <!-- Polo\u017eky generov\u00e1ny dynamicky JS -->\r\n                <\/div>\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- KROK 3: EXTRAS & DRINKS -->\r\n    <div id=\"step-3\" class=\"wizard-step\">\r\n        <div class=\"section-card\">\r\n            <div style=\"display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; margin-bottom:30px;\">\r\n                <div>\r\n                    <h1>Dopl\u0148ky a Pit\u00ed<\/h1>\r\n                    <p style=\"color:var(--text-muted); font-weight:600;\">Krok 3 ze 4 \u2022 V\u00fdb\u011br n\u00e1poj\u016f a slu\u017eeb<\/p>\r\n                <\/div>\r\n            <\/div>\r\n            <div class=\"cat-tabs\" id=\"extra-tabs\">\r\n                <!-- Tabs generov\u00e1ny dynamicky -->\r\n            <\/div>\r\n            <div class=\"gastro-grid\" id=\"extra-grid\">\r\n                <!-- Polo\u017eky generov\u00e1ny dynamicky -->\r\n            <\/div>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- KROK 4: REKAPITULACE -->\r\n    <div id=\"step-4\" class=\"wizard-step\">\r\n        <div class=\"section-card\">\r\n            <div style=\"display:flex; justify-content:space-between; align-items:center; flex-wrap:wrap; margin-bottom:30px; border-bottom: 2px solid #f0f0f0; padding-bottom:30px;\">\r\n                <div>\r\n                    <h1>Polo\u017ekov\u00e1 Rekapitulace<\/h1>\r\n                    <p style=\"color:var(--text-muted); font-weight:600;\">Krok 4 ze 4<\/p>\r\n                <\/div>\r\n                <button onclick=\"window.app.goto(3)\" class=\"myslivna-btn myslivna-btn-secondary\" style=\"display:inline-block !important; width:auto !important;\">\r\n                    <i class=\"fas fa-plus-circle\"><\/i> Zm\u011bnit dopl\u0148ky\r\n                <\/button>\r\n            <\/div>\r\n            <div style=\"margin-bottom:40px;\">\r\n                <h3 style=\"margin-bottom:20px;\">Va\u0161e vybran\u00e9 menu a slu\u017eby<\/h3>\r\n                <div id=\"final-items-list\" style=\"background:#fff; border:1px solid #eee; border-radius:15px; padding:20px; margin-bottom: 20px;\">\r\n                    <!-- JS sem vykresl\u00ed polo\u017eky -->\r\n                <\/div>\r\n                \r\n                <div style=\"background:#fffcf0; border:1px dashed var(--gold); padding:20px; border-radius:15px; margin-bottom:20px;\">\r\n                    <h3 style=\"margin-top:0; color:var(--gold); font-size:16px; margin-bottom:12px;\">M\u00e1te slevov\u00fd voucher?<\/h3>\r\n                    <div style=\"display:flex; gap:10px;\">\r\n                        <input type=\"text\" id=\"voucherCode\" placeholder=\"K\u00f3d voucheru\" class=\"input-base\" style=\"padding: 10px 15px; font-size:14px;\">\r\n                        <button onclick=\"window.app.applyVoucher()\" class=\"myslivna-btn\" style=\"padding: 10px 25px !important; font-size:14px !important; width:auto !important; margin:0 !important;\">Uplatnit<\/button>\r\n                    <\/div>\r\n                    <div id=\"voucher-msg\" style=\"margin-top:10px; font-weight:700; color:#059669; font-size:13px; display:none;\"><i class=\"fas fa-check-circle\"><\/i> Slevy byly aplikov\u00e1ny.<\/div>\r\n                <\/div>\r\n                <div style=\"background:var(--forest-green); color:white; padding:30px; border-radius:20px; text-align:center;\">\r\n                    <div style=\"font-size:12px; text-transform:uppercase; color:var(--gold); letter-spacing:1px; margin-bottom:5px;\">Celkov\u00e1 cena k popt\u00e1vce<\/div>\r\n                    <div style=\"font-family: inherit, serif; font-size:40px; color:var(--gold); font-weight:700;\" id=\"summary-total\">0 K\u010d<\/div>\r\n                    <div id=\"summary-weight\" style=\"font-size:14px; opacity:0.85; margin-top:8px;\"><\/div>\r\n                <\/div>\r\n            <\/div>\r\n            <h3 style=\"margin-bottom: 20px;\">Dokon\u010den\u00ed popt\u00e1vky<\/h3>\r\n            <div class=\"form-row\">\r\n                <div>\r\n                    <label class=\"field-label\">Jm\u00e9no a p\u0159\u00edjmen\u00ed<\/label>\r\n                    <input type=\"text\" id=\"finalName\" class=\"input-base\" placeholder=\"Va\u0161e jm\u00e9no\">\r\n                <\/div>\r\n                <div>\r\n                    <label class=\"field-label\">Telefon<\/label>\r\n                    <input type=\"text\" id=\"finalPhone\" class=\"input-base\" placeholder=\"Tel. \u010d\u00edslo\">\r\n                <\/div>\r\n            <\/div>\r\n            <div style=\"margin-bottom:30px;\">\r\n                <label class=\"field-label\">E-mail<\/label>\r\n                <input type=\"email\" id=\"finalEmail\" class=\"input-base\" placeholder=\"E-mailov\u00e1 adresa\">\r\n            <\/div>\r\n            <button onclick=\"window.app.submit()\" id=\"btn-submit\" class=\"myslivna-btn\" style=\"width:100% !important; margin: 0 auto !important;\">ODESLAT POPT\u00c1VKU \u017dIV\u011a<\/button>\r\n        <\/div>\r\n    <\/div>\r\n\r\n    <!-- GLOB\u00c1LN\u00cd STICKY KO\u0160\u00cdK -->\r\n    <div id=\"global-cart\" class=\"sticky-cart\" style=\"display:none;\">\r\n        <div style=\"display:flex; align-items:center; gap:20px;\">\r\n            <div>\r\n                <div style=\"font-size: 11px; text-transform: uppercase; color: rgba(255,255,255,0.6);\">Aktu\u00e1ln\u00ed cena<\/div>\r\n                <div id=\"cart-total\" style=\"font-weight:700; font-size:26px; color:var(--gold);\">0 K\u010d<\/div>\r\n            <\/div>\r\n            <div id=\"cart-info-text\" class=\"hide-mobile\" style=\"font-size:13px; opacity:0.8; margin-left:10px;\">Vyberte si j\u00eddlo k hostin\u011b<\/div>\r\n        <\/div>\r\n        <div style=\"display:flex; gap:10px;\">\r\n            <button onclick=\"window.app.goBack()\" class=\"myslivna-btn myslivna-btn-secondary\" style=\"margin:0 !important; border: none !important; padding: 12px 20px !important;\">\r\n                <i class=\"fas fa-arrow-left\"><\/i> <span class=\"hide-mobile\">Zp\u011bt<\/span>\r\n            <\/button>\r\n            <button onclick=\"window.app.goNext()\" class=\"myslivna-btn\" style=\"width:auto !important; margin:0 !important; background:white !important; color:var(--forest-green) !important; border: 2px solid var(--gold) !important; padding: 12px 30px !important;\">\r\n                Dal\u0161\u00ed <i class=\"fas fa-arrow-right\" style=\"margin-left: 5px;\"><\/i>\r\n            <\/button>\r\n        <\/div>\r\n    <\/div>\r\n    \r\n    <div style=\"text-align: center; margin-top: 50px; padding-bottom: 20px; font-size: 12px; color: var(--text-muted); opacity: 0.7;\">\r\n        * V\u0161echny zobrazen\u00e9 fotografie v konfigur\u00e1toru jsou pouze ilustra\u010dn\u00ed.\r\n    <\/div>\r\n<\/div>\r\n\r\n<script data-cookieconsent=\"ignore\">\r\n\/\/ KOMPLETN\u00cd DATAB\u00c1ZE POLO\u017dEK\r\nconst MENU_ITEMS = [\r\n    \/\/ V\u00ddB\u011aRY \u0160\u00c9FKUCHA\u0158E (ponech\u00e1no v p\u016fvodn\u00ed velikosti)\r\n    { \r\n        id: 'm1', cat: 'V\u00fdb\u011bry \u0161\u00e9fkucha\u0159e', name: 'Tradi\u010dn\u00ed jiho\u010desk\u00fd raut', price: 690, weight: 800, unit: '800g',\r\n        img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/jihocesky-raut-1.jpg',\r\n        desc: 'Osv\u011bd\u010den\u00e1 klasika pro ka\u017edou p\u0159\u00edle\u017eitost. Ide\u00e1ln\u00ed volba pro hosty, kte\u0159\u00ed miluj\u00ed poctivou \u010deskou kuchyni.<div class=\"modul-details\" style=\"margin-top:15px; background:rgba(255,255,255,0.5); padding:10px; border-radius:10px;\"><div class=\"modul-content\"><strong>Studen\u00e9 p\u0159edkrmy:<\/strong>Hov\u011bz\u00ed tatar\u00e1k s topinkami a \u010desnekem.<br>Kr\u00e9mov\u00e1 s\u00fdrov\u00e1 rol\u00e1da.<br>V\u00fdb\u011br jemn\u011b uzen\u00fdch specialit s nakl\u00e1dan\u00fdmi delikatesami.<strong>Tepl\u00e9 pokrmy:<\/strong>Variace vep\u0159ov\u00fdch a ku\u0159ec\u00edch mini \u0159\u00edze\u010dk\u016f.<br>Poctiv\u00fd zv\u011b\u0159inov\u00fd gul\u00e1\u0161ek.<br>Mini hamburgery a vyhl\u00e1\u0161en\u00e9 kap\u0159\u00ed \u0161kvarky s pikantn\u00ed majon\u00e9zou.<strong>Sal\u00e1ty a p\u0159\u00edlohy:<\/strong>\u0160opsk\u00fd a bramborov\u00fd sal\u00e1t.<br>Dom\u00e1c\u00ed brambor\u00e1\u010dky, variace dip\u016f a \u010derstv\u00e9 pe\u010divo.<strong>Sladk\u00e1 te\u010dka:<\/strong>Dom\u00e1c\u00ed jable\u010dn\u00fd z\u00e1vin se \u0161leha\u010dkou.<\/div><\/div>' \r\n    },\r\n    { \r\n        id: 'm2', cat: 'V\u00fdb\u011bry \u0161\u00e9fkucha\u0159e', name: 'T\u0159ebo\u0148sk\u00fd gurm\u00e1nsk\u00fd raut', price: 850, weight: 1000, unit: '1000g',\r\n        img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/trebonsky-raut.jpg',\r\n        desc: 'To nejlep\u0161\u00ed z T\u0159ebon\u011b na jednom stole. Zam\u011b\u0159eno na vyhl\u00e1\u0161en\u00e9 ryb\u00ed speciality a uzen\u00e9 lah\u016fdky.<div class=\"modul-details\" style=\"margin-top:15px; background:rgba(255,255,255,0.5); padding:10px; border-radius:10px;\"><div class=\"modul-content\"><strong>Studen\u00e9 p\u0159edkrmy:<\/strong>Tepl\u00e1 uzen\u00e1 k\u00fdta kr\u00e1jen\u00e1 p\u0159\u00edmo od kosti.<br>Tatar\u00e1k z t\u0159ebo\u0148sk\u00e9ho kapra.<strong>Tepl\u00e9 pokrmy:<\/strong>Zv\u011b\u0159inov\u00e1 sm\u011bs s houbami a pomalu pe\u010den\u00e1 krkovice vcelku.<br>Origin\u00e1ln\u00ed t\u0159ebo\u0148sk\u00e9 kap\u0159\u00ed hranolky.<br>Lehk\u00e9 zeleninov\u00e9 sot\u00e9 s tofu.<strong>Sal\u00e1ty a p\u0159\u00edlohy:<\/strong>Sal\u00e1t Coleslaw a variace \u010derstv\u00e9 trhan\u00e9 zeleniny.<br>Pe\u010den\u00e9 bramb\u016frky Grenaille, dipy a banketn\u00ed pe\u010divo.<strong>Sladk\u00e1 te\u010dka:<\/strong>Rakytn\u00edkov\u00fd cheesecake a ovocn\u00e1 m\u00edsa.<\/div><\/div>' \r\n    },\r\n    { \r\n        id: 'm3', cat: 'V\u00fdb\u011bry \u0161\u00e9fkucha\u0159e', name: 'Mysliveck\u00fd exkluzivn\u00ed raut', price: 950, weight: 1200, unit: '1200g',\r\n        img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/exklusive.jpg',\r\n        desc: 'V\u00fdkladn\u00ed sk\u0159\u00ed\u0148 na\u0161\u00ed kuchyn\u011b. Luxusn\u00ed kombinace u\u0161lechtil\u00e9 zv\u011b\u0159iny, cand\u00e1ta a pr\u00e9miov\u00fdch mas.<div class=\"modul-details\" style=\"margin-top:15px; background:rgba(255,255,255,0.5); padding:10px; border-radius:10px;\"><div class=\"modul-content\"><strong>Studen\u00e9 p\u0159edkrmy:<\/strong>V\u00fdb\u011br elegantn\u00edch kanapek.<br>Zv\u011b\u0159inov\u00e1 pa\u0161tika s brusinkami.<strong>Tepl\u00e9 pokrmy:<\/strong>Filety z cand\u00e1ta na zeleninov\u00e9m l\u016f\u017eku.<br>Slaninov\u00e1 korunka s \u010desnekov\u00fdm kaprem.<br>Zlatav\u00e9 ku\u0159ec\u00ed supr\u00eame s om\u00e1\u010dkou dle \u0161\u00e9fkucha\u0159e.<br>Dan\u010d\u00ed maso s ko\u0159enovou zeleninou na \u010derven\u00e9m v\u00edn\u011b.<br>Pomalu pe\u010den\u00fd hov\u011bz\u00ed ro\u0161t\u011bnec s om\u00e1\u010dkou z barevn\u00e9ho pep\u0159e.<strong>Sal\u00e1ty a p\u0159\u00edlohy:<\/strong>Zv\u011b\u0159inov\u00fd sal\u00e1t s trhan\u00fdm masem a bylinkov\u00fdm dresinkem.<br>Sv\u011b\u017e\u00ed mix zeleniny, brambor\u00e1\u010dky, dipy a v\u00fdb\u011br pe\u010diva.<strong>Sladk\u00e1 te\u010dka:<\/strong>\u010cokol\u00e1dov\u00fd mousse s vi\u0161n\u011bmi a variace ovoce.<\/div><\/div>' \r\n    },\r\n\r\n    \/\/ POL\u00c9VKY (ponech\u00e1no na standardn\u00ed porci 330g)\r\n    { id: 'p1', cat: 'Pol\u00e9vky', name: 'Jiho\u010desk\u00e1 kulajda s vejcem', price: 60, weight: 330, unit: '330g', price_buffet: 60, weight_buffet: 330, unit_buffet: '330g', price_plated: 60, weight_plated: 330, unit_plated: '330g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/kulajda.jpg', desc: 'S lesn\u00edmi houbami a \u010derstv\u00fdm koprem.' },\r\n    { id: 'p2', cat: 'Pol\u00e9vky', name: 'Ro\u017embersk\u00e1 ryb\u00ed pol\u00e9vka', price: 60, weight: 330, unit: '330g', price_buffet: 60, weight_buffet: 330, unit_buffet: '330g', price_plated: 60, weight_plated: 330, unit_plated: '330g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/rybi.jpg', desc: 'Tradi\u010dn\u00ed v\u00fdvar s krutony.' },\r\n    { id: 'p3', cat: 'Pol\u00e9vky', name: 'Hov\u011bz\u00ed v\u00fdvar s masem', price: 60, weight: 330, unit: '330g', price_buffet: 60, weight_buffet: 330, unit_buffet: '330g', price_plated: 60, weight_plated: 330, unit_plated: '330g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/vyvar.jpg', desc: 'S ko\u0159enovou zeleninou a nudlemi.' },\r\n\r\n    \/\/ P\u0158EDKRMY (Degusta\u010dn\u00ed raut 100g vs Serv\u00edrovan\u00e9 150g)\r\n    { id: 'pr1', cat: 'P\u0159edkrmy', name: 'Zv\u011b\u0159inov\u00e1 pa\u0161tika', price: 149, weight: 150, unit: '150g', price_buffet: 99, weight_buffet: 100, unit_buffet: '100g', price_plated: 149, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/pastika-brusinky.jpg', desc: 'S brusinkami a mandlemi.' },\r\n    { id: 'pr2', cat: 'P\u0159edkrmy', name: 'Dom\u00e1c\u00ed pa\u0161tika s cibulovou marmel\u00e1dou', price: 168, weight: 150, unit: '150g', price_buffet: 112, weight_buffet: 100, unit_buffet: '100g', price_plated: 168, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/pastika-s-catni.jpg', desc: 'Tradi\u010dn\u00ed receptura s dom\u00e1c\u00ed cibulovou marmel\u00e1dou.' },\r\n    { id: 'pr3', cat: 'P\u0159edkrmy', name: 'Hov\u011bz\u00ed tatar\u00e1k s topinkami', price: 297, weight: 150, unit: '150g', price_buffet: 198, weight_buffet: 100, unit_buffet: '100g', price_plated: 297, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/tatarak.jpg', desc: 'Nam\u00edchan\u00fd s \u010desnekem a ko\u0159en\u00edm.' },\r\n    { id: 'pr4', cat: 'P\u0159edkrmy', name: 'Tatar\u00e1k z t\u0159ebo\u0148sk\u00e9ho kapra', price: 189, weight: 150, unit: '150g', price_buffet: 126, weight_buffet: 100, unit_buffet: '100g', price_plated: 189, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/kapr-tatarak.jpg', desc: 'Netradi\u010dn\u00ed ryb\u00ed delikatesa.' },\r\n    { id: 'pr5', cat: 'P\u0159edkrmy', name: 'Variace kanapek (15 ks)', price: 390, weight: 300, unit: '15 ks (26 K\u010d\/ks)', price_buffet: 390, weight_buffet: 300, unit_buffet: '15 ks (26 K\u010d\/ks)', price_plated: 390, weight_plated: 300, unit_plated: '15 ks (26 K\u010d\/ks)', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/jednohubky.jpg', desc: 'Mix tradi\u010dn\u00edch i gurm\u00e1nsk\u00fdch chut\u00ed.' },\r\n    { id: 'pr8', cat: 'P\u0159edkrmy', name: 'Grilovan\u00fd hermel\u00edn se sal\u00e1tkem', price: 218, weight: 150, unit: '150g', price_buffet: 145, weight_buffet: 100, unit_buffet: '100g', price_plated: 218, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/hermelin.jpg', desc: 'S brusinkami a mixem listov\u00fdch sal\u00e1t\u016f.' },\r\n    { id: 'pr9', cat: 'P\u0159edkrmy', name: 'Caesar sal\u00e1t s parmaz\u00e1nem', price: 98, weight: 150, unit: '150g', price_buffet: 65, weight_buffet: 100, unit_buffet: '100g', price_plated: 98, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/cesar.jpg', desc: 'Klasick\u00fd sal\u00e1t s krutony.' },\r\n    { id: 'pr10', cat: 'P\u0159edkrmy', name: 'V\u00fdb\u011br uzen\u00fdch specialit', price: 545, weight: 500, unit: '500g', price_buffet: 545, weight_buffet: 500, unit_buffet: '500g', price_plated: 545, weight_plated: 500, unit_plated: '500g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/uzeniny.jpg', desc: 'S nakl\u00e1dan\u00fdmi lah\u016fdkami a kr\u00e9movou s\u00fdrovou rol\u00e1dou.' },\r\n    { id: 'prn0', cat: 'P\u0159edkrmy', name: 'Kr\u00e9mov\u00e1 s\u00fdrov\u00e1 rol\u00e1da', price: 218, weight: 150, unit: '150g', price_buffet: 145, weight_buffet: 100, unit_buffet: '100g', price_plated: 218, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/syr-rolada.jpg', desc: 'Jemn\u00e1 s\u00fdrov\u00e1 chu\u0165 s bylinkami.' },\r\n    { id: 'prn1', cat: 'P\u0159edkrmy', name: 'Uzen\u00e1 k\u00fdta od kosti', price: 98, weight: 150, unit: '150g', price_buffet: 65, weight_buffet: 100, unit_buffet: '100g', price_plated: 98, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/kyta.jpg', desc: 'Poctiv\u00e1 chu\u0165 tradi\u010dn\u00edho uzen\u00e9ho masa.' },\r\n    { id: 'prn3', cat: 'P\u0159edkrmy', name: 'Celozrnn\u00e9 mini sendvi\u010de', price: 40, weight: 60, unit: 'ks', price_buffet: 40, weight_buffet: 60, unit_buffet: 'ks', price_plated: 40, weight_plated: 60, unit_plated: 'ks', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/minisendvice.jpg', desc: 'K\u0159upav\u00e1 energie v lehk\u00e9m balen\u00ed.' },\r\n    { id: 'prn4', cat: 'P\u0159edkrmy', name: 'Vegansk\u00e1 pomaz\u00e1nka, zelenina, krekry', price: 65, weight: 80, unit: '80g', price_buffet: 65, weight_buffet: 80, unit_buffet: '80g', price_plated: 65, weight_plated: 80, unit_plated: '80g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/krekry.jpg', desc: 'Zdrav\u00e9 rostlinn\u00e9 k\u0159up\u00e1n\u00ed pln\u00e9 barev.' },\r\n\r\n    \/\/ HLAVN\u00cd J\u00cdDLA (Degusta\u010dn\u00ed raut 100g vs Serv\u00edrovan\u00e9 150g)\r\n    { id: 'h1', cat: 'Hlavn\u00ed j\u00eddla', name: 'Hov\u011bz\u00ed sv\u00ed\u010dkov\u00e1 na smetan\u011b', price: 198, weight: 150, unit: '150g', price_buffet: 132, weight_buffet: 100, unit_buffet: '100g', price_plated: 198, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/svickova.jpg', desc: 'Tradi\u010dn\u00ed sv\u00ed\u010dkov\u00e1 na smetan\u011b s brusinkov\u00fdm ter\u010dem a \u0161leha\u010dkou.' },\r\n    { id: 'h2', cat: 'Hlavn\u00ed j\u00eddla', name: 'Konfitovan\u00e9 kachn\u00ed stehno', price: 198, weight: 250, unit: '250g (1 ks)', price_buffet: 198, weight_buffet: 250, unit_buffet: '250g (1 ks)', price_plated: 198, weight_plated: 250, unit_plated: '250g (1 ks)', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/kachna.jpg', desc: 'Pomalu konfitovan\u00e9 k\u0159upav\u00e9 kachn\u00ed stehno na divok\u00e9m km\u00ednu.' },\r\n    { id: 'h3', cat: 'Hlavn\u00ed j\u00eddla', name: 'Dan\u010d\u00ed maso na \u010derven\u00e9m v\u00edn\u011b', price: 230, weight: 150, unit: '150g', price_buffet: 153, weight_buffet: 100, unit_buffet: '100g', price_plated: 230, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/danek.jpg', desc: 'S ko\u0159enovou zeleninou a bylinkami.' },\r\n    { id: 'h4', cat: 'Hlavn\u00ed j\u00eddla', name: 'Pikantn\u00ed zv\u011b\u0159inov\u00fd gul\u00e1\u0161ek', price: 165, weight: 150, unit: '150g', price_buffet: 110, weight_buffet: 100, unit_buffet: '100g', price_plated: 165, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/gulas.jpg', desc: 'Poctiv\u00fd zv\u011b\u0159inov\u00fd gul\u00e1\u0161ek s \u010derstvou cibulkou.' },\r\n    { id: 'h6', cat: 'Hlavn\u00ed j\u00eddla', name: 'Ro\u0161t\u011bnec s pep\u0159ovou om\u00e1\u010dkou', price: 185, weight: 150, unit: '150g', price_buffet: 123, weight_buffet: 100, unit_buffet: '100g', price_plated: 185, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/peprova.jpg', desc: 'Pomalu pe\u010den\u00fd s om\u00e1\u010dkou z barevn\u00e9ho pep\u0159e.' },\r\n    { id: 'h8', cat: 'Hlavn\u00ed j\u00eddla', name: 'Zlatav\u00e9 ku\u0159ec\u00ed supr\u00eame', price: 113, weight: 150, unit: '150g', price_buffet: 75, weight_buffet: 100, unit_buffet: '100g', price_plated: 113, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/kure.jpg', desc: 'S jemnou om\u00e1\u010dkou dle \u0161\u00e9fkucha\u0159e.' },\r\n    { id: 'h9', cat: 'Hlavn\u00ed j\u00eddla', name: 'Variace mini \u0159\u00edze\u010dk\u016f', price: 105, weight: 150, unit: '3 ks (150g)', price_buffet: 70, weight_buffet: 100, unit_buffet: '2 ks (100g)', price_plated: 105, weight_plated: 150, unit_plated: '3 ks (150g)', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/rizecky.jpg', desc: 'Mix vep\u0159ov\u00fdch a ku\u0159ec\u00edch mas.' },\r\n    { id: 'h13', cat: 'Hlavn\u00ed j\u00eddla', name: 'Kap\u0159\u00ed \u0161kvarky s majon\u00e9zou', price: 119, weight: 150, unit: '150g', price_buffet: 79, weight_buffet: 100, unit_buffet: '100g', price_plated: 119, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/skvarky.jpg', desc: 'Pikantn\u00ed chu\u0165ovka k pivu.' },\r\n    { id: 'h14', cat: 'Hlavn\u00ed j\u00eddla', name: 'Cand\u00e1t na zeleninov\u00e9m l\u016f\u017eku', price: 233, weight: 150, unit: '150g', price_buffet: 155, weight_buffet: 100, unit_buffet: '100g', price_plated: 233, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/candat.jpg', desc: 'Jemn\u00e1 ryba na m\u00e1sle a bylink\u00e1ch.' },\r\n    { id: 'h17', cat: 'Hlavn\u00ed j\u00eddla', name: 'Kr\u010d\u00ednova ryb\u00ed m\u00edsa (pro 2-3 os)', price: 540, weight: 500, unit: '500g (pro 2-3 os)', price_buffet: 540, weight_buffet: 500, unit_buffet: '500g (pro 2-3 os)', price_plated: 540, weight_plated: 500, unit_plated: '500g (pro 2-3 os)', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/misa.jpg', desc: 'V\u00fdb\u011br t\u0159ebo\u0148sk\u00fdch ryb s dipem.' },\r\n    { id: 'h18', cat: 'Hlavn\u00ed j\u00eddla', name: 'Houbov\u00e9 kroupoto', price: 85, weight: 150, unit: '150g', price_buffet: 57, weight_buffet: 100, unit_buffet: '100g', price_plated: 85, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/kroupeto.jpg', desc: 'S bylinkami a hoblinkami parmaz\u00e1nu.' },\r\n    { id: 'hn5', cat: 'Hlavn\u00ed j\u00eddla', name: 'Zv\u011b\u0159inov\u00e1 sm\u011bs s houbami', price: 158, weight: 150, unit: '150g', price_buffet: 105, weight_buffet: 100, unit_buffet: '100g', price_plated: 158, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/houbova.jpg', desc: 'Poctiv\u00e1 chu\u0165 lesa a hub.' },\r\n    { id: 'hn6', cat: 'Hlavn\u00ed j\u00eddla', name: 'Pomalu pe\u010den\u00e1 krkovice', price: 135, weight: 150, unit: '150g', price_buffet: 90, weight_buffet: 100, unit_buffet: '100g', price_plated: 135, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/krkovice.jpg', desc: '\u0160\u0165avnat\u00e9 maso pe\u010den\u00e9 s p\u00e9\u010d\u00ed.' },\r\n    { id: 'hn7', cat: 'Hlavn\u00ed j\u00eddla', name: 'Mini hamburgery', price: 147, weight: 150, unit: '3 ks (150g)', price_buffet: 98, weight_buffet: 100, unit_buffet: '2 ks (100g)', price_plated: 147, weight_plated: 150, unit_plated: '3 ks (150g)', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/burgery.jpg', desc: 'Obl\u00edben\u00e1 klasika v mal\u00e9m vyd\u00e1n\u00ed.' },\r\n    { id: 'hn8', cat: 'Hlavn\u00ed j\u00eddla', name: 'T\u0159ebo\u0148sk\u00e9 kap\u0159\u00ed hranolky', price: 134, weight: 150, unit: '150g', price_buffet: 89, weight_buffet: 100, unit_buffet: '100g', price_plated: 134, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/kapri-hrany.jpg', desc: 'Vyhl\u00e1\u0161en\u00e1 specialita z m\u00edstn\u00edch ryb.' },\r\n    { id: 'hn9', cat: 'Hlavn\u00ed j\u00eddla', name: 'Pstruh pe\u010den\u00fd na m\u00e1sle a bylink\u00e1ch', price: 104, weight: 150, unit: '150g', price_buffet: 69, weight_buffet: 100, unit_buffet: '100g', price_plated: 104, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/pstruh.jpg', desc: 'Lehk\u00e1 ryba s v\u016fn\u00ed bylinek.' },\r\n    { id: 'hn10', cat: 'Hlavn\u00ed j\u00eddla', name: 'Slaninov\u00e1 korunka s \u010desnekov\u00fdm kaprem', price: 380, weight: 500, unit: '500g', price_buffet: 380, weight_buffet: 500, unit_buffet: '500g', price_plated: 380, weight_plated: 500, unit_plated: '500g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/kapr-se-slaninou.jpg', desc: 'Origin\u00e1ln\u00ed kombinace chut\u00ed a v\u016fn\u00ed.' },\r\n    { id: 'hn11', cat: 'Hlavn\u00ed j\u00eddla', name: 'Pe\u010den\u00e9 bramb\u016frky Grenaille s koz\u00edm s\u00fdrem', price: 95, weight: 150, unit: '150g', price_buffet: 63, weight_buffet: 100, unit_buffet: '100g', price_plated: 95, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/grenailee-syr.jpg', desc: 'Zlatav\u00e9 bramb\u016frky s jemn\u00fdm s\u00fdrem.' },\r\n    { id: 'hn12', cat: 'Hlavn\u00ed j\u00eddla', name: 'Sal\u00e1t s trhan\u00fdm masem ze zv\u011b\u0159iny', price: 104, weight: 150, unit: '150g', price_buffet: 69, weight_buffet: 100, unit_buffet: '100g', price_plated: 104, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/trhany.jpg', desc: 'Sv\u011b\u017e\u00ed mix s delik\u00e1tn\u00ed zv\u011b\u0159inou.' },\r\n\r\n    \/\/ SAL\u00c1TY A P\u0158\u00cdLOHY (Degusta\u010dn\u00ed raut 100g vs Serv\u00edrovan\u00e9 150g)\r\n    { id: 'sa1', cat: 'Sal\u00e1ty a p\u0159\u00edlohy', name: 'Coleslaw', price: 75, weight: 150, unit: '150g', price_buffet: 50, weight_buffet: 100, unit_buffet: '100g', price_plated: 75, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/coleslav.jpg', desc: 'Sv\u011b\u017e\u00ed zeln\u00fd sal\u00e1t s mrkv\u00ed a jemnou z\u00e1livkou.' },\r\n    { id: 'sa2', cat: 'Sal\u00e1ty a p\u0159\u00edlohy', name: '\u0160opsk\u00fd sal\u00e1t', price: 75, weight: 150, unit: '150g', price_buffet: 50, weight_buffet: 100, unit_buffet: '100g', price_plated: 75, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/sopsky.jpg', desc: 'Klasick\u00fd sal\u00e1t s balk\u00e1nsk\u00fdm s\u00fdrem.' },\r\n    { id: 'sa3', cat: 'Sal\u00e1ty a p\u0159\u00edlohy', name: 'Bramborov\u00fd sal\u00e1t', price: 75, weight: 150, unit: '150g', price_buffet: 50, weight_buffet: 100, unit_buffet: '100g', price_plated: 75, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/bramb-sal.jpg', desc: 'Tradi\u010dn\u00ed bramborov\u00fd sal\u00e1t pln\u00fd chut\u00ed.' },\r\n    { id: 'sa4', cat: 'Sal\u00e1ty a p\u0159\u00edlohy', name: 'Mix \u010derstv\u00e9 zeleniny', price: 75, weight: 150, unit: '150g', price_buffet: 50, weight_buffet: 100, unit_buffet: '100g', price_plated: 75, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/zelenina.jpg', desc: 'V\u00fdb\u011br sez\u00f3nn\u00ed zeleniny pro lehk\u00e9 zakousnut\u00ed.' },\r\n    { id: 's1', cat: 'Sal\u00e1ty a p\u0159\u00edlohy', name: 'Banketky, kaiserky a chl\u00e9b', price: 55, weight: 150, unit: '3 ks', price_buffet: 55, weight_buffet: 150, unit_buffet: '3 ks', price_plated: 55, weight_plated: 150, unit_plated: '3 ks', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/pecivo.jpg', desc: 'V\u00fdb\u011br \u010derstv\u00e9ho sv\u011btl\u00e9ho a tmav\u00e9ho pe\u010diva.' },\r\n    { id: 's2', cat: 'Sal\u00e1ty a p\u0159\u00edlohy', name: 'Dom\u00e1c\u00ed brambor\u00e1\u010dky (3ks)', price: 55, weight: 200, unit: '200g (3 ks)', price_buffet: 55, weight_buffet: 200, unit_buffet: '200g (3 ks)', price_plated: 55, weight_plated: 200, unit_plated: '200g (3 ks)', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/bramboracky.jpg', desc: 'Zlatav\u00e9 a k\u0159upav\u00e9 dle na\u0161\u00ed receptury.' },\r\n    { id: 's3', cat: 'Sal\u00e1ty a p\u0159\u00edlohy', name: 'Pe\u010den\u00e9 brambory ve slupce (grenaille)', price: 68, weight: 150, unit: '150g', price_buffet: 45, weight_buffet: 100, unit_buffet: '100g', price_plated: 68, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/grenaille.jpg', desc: 'Pe\u010den\u00e9 baby bramb\u016frky s bylinkami a hrubou sol\u00ed.' },\r\n    { id: 's4', cat: 'Sal\u00e1ty a p\u0159\u00edlohy', name: 'Bramborov\u00e9 hranolky', price: 68, weight: 150, unit: '150g', price_buffet: 45, weight_buffet: 100, unit_buffet: '100g', price_plated: 68, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/10\/bramborove-hranolky-1.jpg', desc: 'Zlatav\u00e9 a k\u0159upav\u00e9 bramborov\u00e9 hranolky.' },\r\n    { id: 's5', cat: 'Sal\u00e1ty a p\u0159\u00edlohy', name: 'Va\u0159en\u00e9 brambory ma\u0161t\u011bn\u00e9 m\u00e1slem', price: 68, weight: 150, unit: '150g', price_buffet: 45, weight_buffet: 100, unit_buffet: '100g', price_plated: 68, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/10\/Varene-brambory.jpg', desc: 'Tradi\u010dn\u00ed va\u0159en\u00e9 brambory ma\u0161t\u011bn\u00e9 poctiv\u00fdm m\u00e1slem a petr\u017eelkou.' },\r\n    { id: 's6', cat: 'Sal\u00e1ty a p\u0159\u00edlohy', name: '\u0160\u0165ouchan\u00e9 brambory s cibulkou', price: 68, weight: 150, unit: '150g', price_buffet: 45, weight_buffet: 100, unit_buffet: '100g', price_plated: 68, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/10\/stouchane-brambory.jpg', desc: '\u0160\u0165ouchan\u00e9 brambory se zlatavou restovanou cibulkou.' },\r\n    { id: 's7', cat: 'Sal\u00e1ty a p\u0159\u00edlohy', name: 'Selsk\u00fd bramborov\u00fd sal\u00e1t (bez majon\u00e9zy)', price: 68, weight: 150, unit: '150g', price_buffet: 45, weight_buffet: 100, unit_buffet: '100g', price_plated: 68, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/bramb-sal.jpg', desc: 'Lehk\u00fd bramborov\u00fd sal\u00e1t s cibulkou a jemn\u00fdm n\u00e1levem bez majon\u00e9zy.' },\r\n    { id: 's8', cat: 'Sal\u00e1ty a p\u0159\u00edlohy', name: 'Karlovarsk\u00fd knedl\u00edk', price: 68, weight: 150, unit: '150g', price_buffet: 45, weight_buffet: 100, unit_buffet: '100g', price_plated: 68, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/10\/karlovarsky-knedlik.jpg', desc: 'Tradi\u010dn\u00ed nad\u00fdchan\u00fd karlovarsk\u00fd knedl\u00edk s petr\u017eelkou.' },\r\n    { id: 's9', cat: 'Sal\u00e1ty a p\u0159\u00edlohy', name: 'Bramborov\u00e9 noky', price: 68, weight: 150, unit: '150g', price_buffet: 45, weight_buffet: 100, unit_buffet: '100g', price_plated: 68, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/10\/noky.jpg', desc: 'Jemn\u00e9 bramborov\u00e9 noky ma\u0161t\u011bn\u00e9 rozpu\u0161t\u011bn\u00fdm m\u00e1slem.' },\r\n\r\n\r\n    \/\/ DEZERTY (ponech\u00e1no v p\u016fvodn\u00ed velikosti)\r\n    { id: 'd1', cat: 'Dezerty', name: 'Mysliveck\u00fd cheesecake', price: 110, weight: 120, unit: '120g', price_buffet: 110, weight_buffet: 120, unit_buffet: '120g', price_plated: 110, weight_plated: 120, unit_plated: '120g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/chese-mysl.jpg', desc: 'S medem a vla\u0161sk\u00fdmi o\u0159echy.' },\r\n    { id: 'd3', cat: 'Dezerty', name: 'Tvarohov\u00fd dort s ovocem', price: 95, weight: 120, unit: '120g', price_buffet: 95, weight_buffet: 120, unit_buffet: '120g', price_plated: 95, weight_plated: 120, unit_plated: '120g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/tvaroh.jpg', desc: 'Sv\u011b\u017e\u00ed dezert s lesn\u00edmi plody.' },\r\n    { id: 'd4', cat: 'Dezerty', name: 'Dom\u00e1c\u00ed jable\u010dn\u00fd z\u00e1vin', price: 75, weight: 100, unit: '100g', price_buffet: 75, weight_buffet: 100, unit_buffet: '100g', price_plated: 75, weight_plated: 100, unit_plated: '100g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/zavin.jpg', desc: 'S vla\u0161sk\u00fdmi o\u0159echy a \u0161leha\u010dkou.' },\r\n    { id: 'd5', cat: 'Dezerty', name: '\u010cokol\u00e1dov\u00fd mousse s vi\u0161n\u011bmi', price: 90, weight: 100, unit: '100g', price_buffet: 90, weight_buffet: 100, unit_buffet: '100g', price_plated: 90, weight_plated: 100, unit_plated: '100g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/mouse.jpg', desc: 'Intenzivn\u00ed \u010dokol\u00e1dov\u00e1 p\u011bna.' },\r\n    { id: 'd9', cat: 'Dezerty', name: 'Ovocn\u00e9 m\u00edsy', price: 80, weight: 150, unit: '150g', price_buffet: 80, weight_buffet: 150, unit_buffet: '150g', price_plated: 80, weight_plated: 150, unit_plated: '150g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/ovoce.jpg', desc: 'Mix \u010derstv\u00e9ho sez\u00f3nn\u00edho ovoce (lze p\u0159ipravit i velkou m\u00edsu 1 kg za 420 K\u010d).' },\r\n    { id: 'dn13', cat: 'Dezerty', name: 'Rakytn\u00edkov\u00fd cheesecake', price: 110, weight: 120, unit: '120g', price_buffet: 110, weight_buffet: 120, unit_buffet: '120g', price_plated: 110, weight_plated: 120, unit_plated: '120g', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/04\/rakytnik.jpg', desc: 'Sv\u011b\u017e\u00ed spojen\u00ed rakytn\u00edku a s\u00fdra.' },\r\n\r\n    \/\/ N\u00c1POJE\r\n    \/\/ APERITIVY\r\n    { id: 'ap1', cat: 'N\u00e1poje', subcat: 'Aperitivy', name: 'Cinzano Bianco (0,1 l)', price: 75, weight: 100, unit: '0,1 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/cinzano.jpg', desc: 'Klasick\u00fd italsk\u00fd aperitiv.' },\r\n    { id: 'ap2', cat: 'N\u00e1poje', subcat: 'Aperitivy', name: 'Martini Extra Dry (0,1 l)', price: 85, weight: 100, unit: '0,1 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/martiny.jpg', desc: 'Extra such\u00e9 martini.' },\r\n\r\n    \/\/ V\u00cdNA KUB\u00cdK\r\n    { id: 'vk1', cat: 'N\u00e1poje', subcat: 'V\u00edna & Sekty', name: 'Chardonnay (0,15 l) - Kub\u00edk', price: 60, weight: 150, unit: '0,15 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/chardonay.jpg', desc: 'Such\u00e9 b\u00edl\u00e9 v\u00edno.' },\r\n    { id: 'vk2', cat: 'N\u00e1poje', subcat: 'V\u00edna & Sekty', name: 'Cuve\u00e9 Fresh\u016fvka (0,15 l) - Kub\u00edk', price: 66, weight: 150, unit: '0,15 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/fresh.jpg', desc: 'Such\u00e9 b\u00edl\u00e9 v\u00edno.' },\r\n    { id: 'vk3', cat: 'N\u00e1poje', subcat: 'V\u00edna & Sekty', name: 'P\u00e1lava (0,15 l) - Kub\u00edk', price: 66, weight: 150, unit: '0,15 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/palava.jpg', desc: 'Polosladk\u00e9 b\u00edl\u00e9 v\u00edno.' },\r\n    { id: 'vk4', cat: 'N\u00e1poje', subcat: 'V\u00edna & Sekty', name: 'Modr\u00fd Portugal (0,15 l) - Kub\u00edk', price: 60, weight: 150, unit: '0,15 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/portugal.jpg', desc: 'Such\u00e9 \u010derven\u00e9 v\u00edno.' },\r\n    { id: 'vk5', cat: 'N\u00e1poje', subcat: 'V\u00edna & Sekty', name: 'Frankovka Ros\u00e9 (0,15 l) - Kub\u00edk', price: 66, weight: 150, unit: '0,15 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/rose.jpg', desc: 'Polosuch\u00e9 r\u016f\u017eov\u00e9 v\u00edno.' },\r\n\r\n    \/\/ \u0160UMIV\u00c1 V\u00cdNA\r\n    { id: 'sv1', cat: 'N\u00e1poje', subcat: 'V\u00edna & Sekty', name: 'Bohemia Sekt Brut (0,75 l)', price: 350, weight: 750, unit: '0,75 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/brut.jpg', desc: 'Such\u00fd sekt.' },\r\n    { id: 'sv2', cat: 'N\u00e1poje', subcat: 'V\u00edna & Sekty', name: 'Bohemia Sekt Demi Sec (0,75 l)', price: 350, weight: 750, unit: '0,75 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/bohemia-sec-1.jpg', desc: 'Polosuch\u00fd sekt.' },\r\n    { id: 'sv3', cat: 'N\u00e1poje', subcat: 'V\u00edna & Sekty', name: 'Prosecco (0,75 l)', price: 350, weight: 750, unit: '0,75 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/proseco.jpg', desc: 'Italsk\u00e9 perliv\u00e9 v\u00edno.' },\r\n\r\n    \/\/ LIHOVINY\r\n    { id: 'li1', cat: 'N\u00e1poje', subcat: 'Lihoviny', name: 'Tuzem\u00e1k (0,04 l)', price: 55, weight: 40, unit: '0,04 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/tuzemak.jpg', desc: 'Klasika z Bo\u017ekova.' },\r\n    { id: 'li2', cat: 'N\u00e1poje', subcat: 'Lihoviny', name: 'Bo\u017ekov REPUBLICA EXCLUSIVE (0,04 l)', price: 65, weight: 40, unit: '0,04 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/republica.jpg', desc: 'Pr\u00e9miov\u00fd \u010desk\u00fd rum.' },\r\n    { id: 'li3', cat: 'N\u00e1poje', subcat: 'Lihoviny', name: 'Beefeater Gin (0,04 l)', price: 70, weight: 40, unit: '0,04 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/gin.jpg', desc: 'Stylov\u00fd lond\u00fdnsk\u00fd gin.' },\r\n    { id: 'li4', cat: 'N\u00e1poje', subcat: 'Lihoviny', name: 'Vodka Finlandia (0,04 l)', price: 70, weight: 40, unit: '0,04 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/vodka.jpg', desc: '\u010cist\u00e1 finsk\u00e1 vodka.' },\r\n    { id: 'li5', cat: 'N\u00e1poje', subcat: 'Lihoviny', name: 'Becherovka (0,04 l)', price: 60, weight: 40, unit: '0,04 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/becher.jpg', desc: 'Bylinn\u00fd lik\u00e9r z Karlov\u00fdch Var\u016f.' },\r\n    { id: 'li6', cat: 'N\u00e1poje', subcat: 'Lihoviny', name: 'J\u00e4germeister (0,04 l)', price: 75, weight: 40, unit: '0,04 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/jager.jpg', desc: 'N\u011bmeck\u00fd bylinn\u00fd lik\u00e9r.' },\r\n    { id: 'li7', cat: 'N\u00e1poje', subcat: 'Lihoviny', name: 'Fernet Stock - Citrus (0,04 l)', price: 55, weight: 40, unit: '0,04 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/fernet.jpg', desc: 'Citrusov\u00fd bylinn\u00fd lik\u00e9r.' },\r\n    { id: 'li8', cat: 'N\u00e1poje', subcat: 'Lihoviny', name: 'Rudolf Jel\u00ednek slivovice 45% (0,04 l)', price: 70, weight: 40, unit: '0,04 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/slivovice.jpg', desc: 'Tradi\u010dn\u00ed ovocn\u00fd destil\u00e1t.' },\r\n    { id: 'li9', cat: 'N\u00e1poje', subcat: 'Lihoviny', name: 'Metaxa ***** (0,04 l)', price: 85, weight: 40, unit: '0,04 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/metaxa.jpg', desc: '\u0158eck\u00e1 brandy.' },\r\n    { id: 'li10', cat: 'N\u00e1poje', subcat: 'Lihoviny', name: 'Tullamore Dew Irish Whiskey (0,04 l)', price: 85, weight: 40, unit: '0,04 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/tulamore.jpg', desc: 'Jemn\u00e1 irsk\u00e1 whiskey.' },\r\n    { id: 'li11', cat: 'N\u00e1poje', subcat: 'Lihoviny', name: 'L\u00e1ze\u0148sk\u00e1 brusinka (0,04 l)', price: 60, weight: 40, unit: '0,04 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/brusinka.jpg', desc: 'Ovocn\u00fd lik\u00e9r.' },\r\n    { id: 'li12', cat: 'N\u00e1poje', subcat: 'Lihoviny', name: 'Griotka (0,04 l)', price: 50, weight: 40, unit: '0,04 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/griotka.jpg', desc: 'Vi\u0161\u0148ov\u00fd lik\u00e9r.' },\r\n\r\n    \/\/ NEALKO & PIVO\r\n    { id: 'n3', cat: 'N\u00e1poje', subcat: 'Nealko & Pivo', name: 'To\u010den\u00e9 pivo (Regent 11\u00b0 sv\u011btl\u00e9)', price: 55, weight: 500, unit: '0,5 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/pivo.jpg', desc: '\u010cepovan\u00e9 lok\u00e1ln\u00ed sv\u011btl\u00e9 pivo.' },\r\n    { id: 'n3b', cat: 'N\u00e1poje', subcat: 'Nealko & Pivo', name: 'To\u010den\u00e9 pivo (Regent 13\u00b0 polotmav\u00e9)', price: 60, weight: 500, unit: '0,5 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/pivo-13.jpg', desc: '\u010cepovan\u00e9 lok\u00e1ln\u00ed polotmav\u00e9 pivo.' },\r\n    { id: 'n3c', cat: 'N\u00e1poje', subcat: 'Nealko & Pivo', name: 'Sud piva Regent 11\u00b0 sv\u011btl\u00e9 (30 l)', price: 3300, weight: 30000, unit: '30 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/30L.jpg', desc: 'Sv\u011btl\u00e9 pivo v sudu (60 piv).' },\r\n    { id: 'n3d', cat: 'N\u00e1poje', subcat: 'Nealko & Pivo', name: 'Sud piva Regent 11\u00b0 sv\u011btl\u00e9 (50 l)', price: 5500, weight: 50000, unit: '50 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/50L.jpg', desc: 'Sv\u011btl\u00e9 pivo v sudu (100 piv).' },\r\n    { id: 'n3e', cat: 'N\u00e1poje', subcat: 'Nealko & Pivo', name: 'Sud piva Regent 13\u00b0 polotmav\u00e9 (30 l)', price: 3600, weight: 30000, unit: '30 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/30L.jpg', desc: 'Polotmav\u00e9 pivo v sudu (60 piv).' },\r\n    { id: 'n3f', cat: 'N\u00e1poje', subcat: 'Nealko & Pivo', name: 'Sud piva Regent 13\u00b0 polotmav\u00e9 (50 l)', price: 6000, weight: 50000, unit: '50 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/50L.jpg', desc: 'Polotmav\u00e9 pivo v sudu (100 piv).' },\r\n    { id: 'n4', cat: 'N\u00e1poje', subcat: 'Nealko & Pivo', name: 'Dom\u00e1c\u00ed limon\u00e1da (2 druhy)', price: 75, weight: 400, unit: '0,4 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/limca.jpg', desc: 'Osv\u011b\u017euj\u00edc\u00ed ovocn\u00e9 limon\u00e1dy.' },\r\n    { id: 'n5', cat: 'N\u00e1poje', subcat: 'Nealko & Pivo', name: 'Miner\u00e1ln\u00ed voda perliv\u00e1 a neperliv\u00e1', price: 45, weight: 330, unit: '0,33 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/mattoni.jpg', desc: 'Balen\u00e1 voda.' },\r\n    { id: 'n6', cat: 'N\u00e1poje', subcat: 'Nealko & Pivo', name: 'Voda s citr\u00f3nem', price: 60, weight: 1000, unit: '1 l (d\u017eb\u00e1n)', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/voda.jpg', desc: 'Ve d\u017eb\u00e1nech.' },\r\n    { id: 'n7', cat: 'N\u00e1poje', subcat: 'Nealko & Pivo', name: 'Ovocn\u00e9 d\u017eusy (jable\u010dn\u00fd, pomeran\u010dov\u00fd)', price: 55, weight: 250, unit: '0,25 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/dzusy.jpg', desc: 'Rozl\u00e9van\u00e9 d\u017eusy.' },\r\n    { id: 'n8', cat: 'N\u00e1poje', subcat: 'Nealko & Pivo', name: 'Pepsi, Mirinda, 7UP, Tonic', price: 55, weight: 250, unit: '0,25 l', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/tonic-pepsi-7up-mirinda.jpg', desc: 'Sycen\u00e9 n\u00e1poje.' },\r\n    { id: 'n9', cat: 'N\u00e1poje', subcat: 'Nealko & Pivo', name: 'Variace k\u00e1vy a v\u00fdb\u011br \u010daj\u016f', price: 65, weight: 100, unit: '\u0161\u00e1lek', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/kava.jpg', desc: 'K\u00e1va a \u010daje na vy\u017e\u00e1d\u00e1n\u00ed.' },\r\n\r\n    \/\/ KORKOVN\u00c9\r\n    { id: 'n10', cat: 'N\u00e1poje', subcat: 'Korkovn\u00e9', name: 'Servis vlastn\u00edho v\u00edna (korkovn\u00e9)', price: 150, unit: '1 l\u00e1hev', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/korkovne-vino.jpg', desc: 'Slu\u017eba na p\u0159inesen\u00e9 vlastn\u00ed v\u00edno (cena za 1 l\u00e1hev).' },\r\n    { id: 'n11', cat: 'N\u00e1poje', subcat: 'Korkovn\u00e9', name: 'Servis vlastn\u00edho destil\u00e1tu (korkovn\u00e9)', price: 300, unit: '1 l\u00e1hev', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/korkovne-destilaty.jpg', desc: 'Slu\u017eba na p\u0159inesen\u00fd vlastn\u00ed tvrd\u00fd alkohol (cena za 1 l\u00e1hev).' },\r\n\r\n    \/\/ SLU\u017dBY\r\n    { id: 'sl1', cat: 'Slu\u017eby', name: 'Ubytov\u00e1n\u00ed na hotelu', price: 1500, unit: 'noc \/ pokoj', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/ubytovani.jpg', desc: 'Pokoj v\u010d. sn\u00eddan\u011b (max 27 l\u016f\u017eek).' },\r\n    { id: 'sl2', cat: 'Slu\u017eby', name: 'Doprava (Rozvoz)', price: 15, unit: '1 km', img: 'https:\/\/www.myslivna.com\/wp-content\/uploads\/2026\/05\/doprava.jpg', desc: 'Odvoz host\u016f po akci nebo doprava cateringu na m\u00edsto (cena za 1 km).' }\r\n];\r\n\r\nconst GASTRO_CATS = ['P\u0159edkrmy', 'Pol\u00e9vky', 'Hlavn\u00ed j\u00eddla', 'Sal\u00e1ty a p\u0159\u00edlohy', 'Dezerty'];\r\nconst EXTRA_CATS = ['N\u00e1poje', 'Slu\u017eby'];\r\n\r\nwindow.app = {\r\n    state: {\r\n        step: 1,\r\n        type: 'Svatba',\r\n        format: 'SMART_BUFFET', \/\/ 'SMART_BUFFET' | 'CHEF_PACKAGE' | 'PLATED_MENU'\r\n        location: 'U n\u00e1s v restauraci',\r\n        adults: 20,\r\n        kids: 0,\r\n        satietyTier: 'TIER_800', \/\/ 'TIER_500' | 'TIER_800' | 'TIER_1150' | 'TIER_CUSTOM'\r\n        targetSatietyGrams: 800,\r\n        selectedChefPackageId: 'm1',\r\n        cart: {}, \r\n        locked: {}, \/\/ id -> boolean (ru\u010dn\u011b nastaven\u00e9 mno\u017estv\u00ed m\u00e1 z\u00e1mek)\r\n        mainSides: {}, \/\/ mainId -> sideId (p\u0159i\u0159azen\u00ed p\u0159\u00edlohy k hlavn\u00edmu chodu)\r\n        activeGastroCat: GASTRO_CATS[0],\r\n        activeExtraCat: EXTRA_CATS[0],\r\n        activeBeverageSubcat: 'Nealko & Pivo',\r\n        voucherType: null\r\n    },\r\n\r\n    getItemPrice(item) {\r\n        if (!item) return 0;\r\n        if (this.state.format === 'SMART_BUFFET' && item.price_buffet !== undefined) {\r\n            return item.price_buffet;\r\n        }\r\n        if (this.state.format === 'PLATED_MENU' && item.price_plated !== undefined) {\r\n            return item.price_plated;\r\n        }\r\n        return item.price || 0;\r\n    },\r\n\r\n    getItemWeight(item) {\r\n        if (!item) return 0;\r\n        if (this.state.format === 'SMART_BUFFET' && item.weight_buffet !== undefined) {\r\n            return item.weight_buffet;\r\n        }\r\n        if (this.state.format === 'PLATED_MENU' && item.weight_plated !== undefined) {\r\n            return item.weight_plated;\r\n        }\r\n        return item.weight || 0;\r\n    },\r\n\r\n    getItemUnit(item) {\r\n        if (!item) return '';\r\n        if (this.state.format === 'SMART_BUFFET' && item.unit_buffet !== undefined) {\r\n            return item.unit_buffet;\r\n        }\r\n        if (this.state.format === 'PLATED_MENU' && item.unit_plated !== undefined) {\r\n            return item.unit_plated;\r\n        }\r\n        return item.unit || '';\r\n    },\r\n\r\n    setMainSide(mainId, sideId) {\r\n        if (!this.state.mainSides) this.state.mainSides = {};\r\n        if (!sideId) {\r\n            delete this.state.mainSides[mainId];\r\n        } else {\r\n            this.state.mainSides[mainId] = sideId;\r\n            if (!this.state.cart[mainId] || this.state.cart[mainId] <= 0) {\r\n                const guests = this.state.adults + this.state.kids || 1;\r\n                this.state.cart[mainId] = Math.max(1, guests);\r\n            }\r\n        }\r\n        this.renderCatalog();\r\n        this.calc();\r\n        if (this.state.format === 'PLATED_MENU') this.updatePlatedCoverage();\r\n    },\r\n\r\n    haptic() {\r\n        if (typeof navigator !== 'undefined' && navigator.vibrate) {\r\n            try { navigator.vibrate(10); } catch (e) {}\r\n        }\r\n    },\r\n\r\n    init() {\r\n        if (typeof document !== 'undefined') {\r\n            document.addEventListener('touchstart', function() {}, { passive: true });\r\n        }\r\n        this.renderTabs();\r\n        this.renderCatalog();\r\n        this.renderBuffetDashboard();\r\n        this.renderChefPackages();\r\n        this.renderExtraTabs();\r\n        this.renderExtraCatalog();\r\n        this.calc();\r\n    },\r\n\r\n    setType(t, el) {\r\n        this.haptic();\r\n        this.state.type = t;\r\n        document.querySelectorAll('#type-grid .event-card').forEach(c => c.classList.remove('selected'));\r\n        if (el) el.classList.add('selected');\r\n        this.calc();\r\n    },\r\n\r\n    setFormat(fmt, el) {\r\n        this.haptic();\r\n        const prevFmt = this.state.format;\r\n        this.state.format = fmt;\r\n        document.querySelectorAll('#format-grid .event-card').forEach(c => c.classList.remove('selected'));\r\n        if (el) el.classList.add('selected');\r\n\r\n        if (fmt === 'CHEF_PACKAGE') {\r\n            this.clearGastroCart();\r\n            const guests = this.state.adults + this.state.kids;\r\n            this.state.cart[this.state.selectedChefPackageId] = guests;\r\n        } else {\r\n            \/\/ Odebere bal\u00ed\u010dky \u0161\u00e9fkucha\u0159e z ko\u0161\u00edku\r\n            ['m1', 'm2', 'm3'].forEach(id => delete this.state.cart[id]);\r\n            if (fmt === 'SMART_BUFFET') {\r\n                if (prevFmt !== 'SMART_BUFFET') {\r\n                    this.state.locked = {};\r\n                }\r\n                this.rebalance();\r\n            }\r\n        }\r\n\r\n        this.updateStep2UI();\r\n        this.renderCatalog();\r\n        this.renderBuffetDashboard();\r\n        if (fmt === 'PLATED_MENU') this.updatePlatedCoverage();\r\n        this.calc();\r\n    },\r\n\r\n    setLocation(l, el) {\r\n        this.haptic();\r\n        this.state.location = l;\r\n        const lr = document.getElementById('loc-Restaurace');\r\n        const lv = document.getElementById('loc-Vlastni');\r\n        if (lr) lr.classList.remove('selected');\r\n        if (lv) lv.classList.remove('selected');\r\n        if (el) el.classList.add('selected');\r\n        this.calc();\r\n    },\r\n\r\n    setSatietyTier(tier, el) {\r\n        this.haptic();\r\n        this.state.satietyTier = tier;\r\n        document.querySelectorAll('.satiety-tier-card').forEach(c => c.classList.remove('selected'));\r\n        if (el) el.classList.add('selected');\r\n\r\n        if (tier === 'TIER_500') this.state.targetSatietyGrams = 500;\r\n        else if (tier === 'TIER_800') this.state.targetSatietyGrams = 800;\r\n        else if (tier === 'TIER_1150') this.state.targetSatietyGrams = 1150;\r\n        else this.state.targetSatietyGrams = 0; \/\/ Vlastn\u00ed v\u00fdb\u011br\r\n\r\n        if (this.state.targetSatietyGrams > 0) {\r\n            this.rebalance();\r\n        }\r\n\r\n        this.renderBuffetDashboard();\r\n        this.renderCatalog();\r\n        this.calc();\r\n    },\r\n\r\n    onGuestCountChange() {\r\n        this.state.adults = Math.max(1, parseInt(document.getElementById('evAd').value) || 1);\r\n        this.state.kids = Math.max(0, parseInt(document.getElementById('evCh').value) || 0);\r\n        const guests = this.state.adults + this.state.kids;\r\n\r\n        if (this.state.format === 'CHEF_PACKAGE' && this.state.selectedChefPackageId) {\r\n            this.state.cart[this.state.selectedChefPackageId] = guests;\r\n        } else if (this.state.format === 'SMART_BUFFET' && this.state.targetSatietyGrams > 0) {\r\n            this.rebalance();\r\n        }\r\n\r\n        this.updateStep2UI();\r\n        this.renderBuffetDashboard();\r\n        this.renderCatalog();\r\n        this.calc();\r\n    },\r\n\r\n    updateStep2UI() {\r\n        const guests = this.state.adults + this.state.kids;\r\n        const fmtNames = {\r\n            'SMART_BUFFET': 'Chytr\u00fd raut na m\u00edru',\r\n            'CHEF_PACKAGE': 'V\u00fdb\u011bry \u0161\u00e9fkucha\u0159e',\r\n            'PLATED_MENU': 'Serv\u00edrovan\u00e9 menu'\r\n        };\r\n        const sub = document.getElementById('cat-subtitle');\r\n        if (sub) {\r\n            sub.innerText = `${guests} osob \u2022 ${this.state.type} \u2022 ${fmtNames[this.state.format]}`;\r\n        }\r\n\r\n        const sbPanel = document.getElementById('smart-buffet-panel');\r\n        const cpPanel = document.getElementById('chef-packages-panel');\r\n        const pmPanel = document.getElementById('plated-menu-panel');\r\n        const catWrap = document.getElementById('gastro-catalog-wrap');\r\n\r\n        if (this.state.format === 'CHEF_PACKAGE') {\r\n            if (sbPanel) sbPanel.style.display = 'none';\r\n            if (cpPanel) cpPanel.style.display = 'block';\r\n            if (pmPanel) pmPanel.style.display = 'none';\r\n            if (catWrap) catWrap.style.display = 'none';\r\n            this.renderChefPackages();\r\n        } else if (this.state.format === 'PLATED_MENU') {\r\n            if (sbPanel) sbPanel.style.display = 'none';\r\n            if (cpPanel) cpPanel.style.display = 'none';\r\n            if (pmPanel) pmPanel.style.display = 'block';\r\n            if (catWrap) catWrap.style.display = 'block';\r\n            this.updatePlatedCoverage();\r\n        } else {\r\n            \/\/ SMART_BUFFET\r\n            if (sbPanel) sbPanel.style.display = 'block';\r\n            if (cpPanel) cpPanel.style.display = 'none';\r\n            if (pmPanel) pmPanel.style.display = 'none';\r\n            if (catWrap) catWrap.style.display = 'block';\r\n        }\r\n    },\r\n\r\n    clearGastroCart() {\r\n        Object.keys(this.state.cart).forEach(id => {\r\n            const it = MENU_ITEMS.find(x => x.id === id);\r\n            if (it && (GASTRO_CATS.includes(it.cat) || it.cat === 'V\u00fdb\u011bry \u0161\u00e9fkucha\u0159e')) {\r\n                delete this.state.cart[id];\r\n            }\r\n        });\r\n        this.state.locked = {};\r\n    },\r\n\r\n    selectChefPackage(id) {\r\n        this.state.selectedChefPackageId = id;\r\n        this.clearGastroCart();\r\n        const guests = this.state.adults + this.state.kids;\r\n        this.state.cart[id] = guests;\r\n        this.renderChefPackages();\r\n        this.calc();\r\n    },\r\n\r\n    renderChefPackages() {\r\n        const grid = document.getElementById('chef-packages-grid');\r\n        if (!grid) return;\r\n        const pkgs = MENU_ITEMS.filter(i => i.cat === 'V\u00fdb\u011bry \u0161\u00e9fkucha\u0159e');\r\n        grid.innerHTML = pkgs.map(p => {\r\n            const isSel = (this.state.selectedChefPackageId === p.id && this.state.cart[p.id] > 0);\r\n            return `\r\n            <div class=\"package-card ${isSel ? 'selected' : ''}\">\r\n                <div class=\"package-img-box\">\r\n                    <img decoding=\"async\" src=\"${p.img}\" alt=\"${p.name}\">\r\n                    ${isSel ? '<span class=\"package-badge-selected\"><i class=\"fas fa-check\"><\/i> Vybr\u00e1no<\/span>' : ''}\r\n                <\/div>\r\n                <div class=\"food-content\">\r\n                    <h3 class=\"food-title\" style=\"font-size:19px !important;\">${p.name}<\/h3>\r\n                    <div class=\"food-desc\">${p.desc}<\/div>\r\n                    <div class=\"food-price-row\">\r\n                        <div>\r\n                            <span class=\"food-price\">${p.price} K\u010d<\/span>\r\n                            <span style=\"font-size:13px; font-weight:600; color:var(--text-muted); margin-left:4px;\">\/ ${p.unit} (osoba)<\/span>\r\n                        <\/div>\r\n                    <\/div>\r\n                    <button onclick=\"window.app.selectChefPackage('${p.id}')\" class=\"myslivna-btn\" style=\"width:100% !important; padding:15px !important; font-size:15px !important; ${isSel ? 'background:var(--forest-green) !important;' : ''}\">\r\n                        ${isSel ? '<i class=\"fas fa-check\"><\/i> Vybr\u00e1no pro v\u0161echny hosty' : 'Zvolit tento raut'}\r\n                    <\/button>\r\n                <\/div>\r\n            <\/div>`;\r\n        }).join('');\r\n    },\r\n\r\n    \/\/ 100% PRINCIP PROPORCION\u00c1LN\u00cdHO ROZD\u011aLEN\u00cd V CHYTR\u00c9M RAUTU S PODPOROU Z\u00c1MK\u016e\r\n    rebalance(changedId = null) {\r\n        if (this.state.format !== 'SMART_BUFFET' || this.state.targetSatietyGrams === 0) return;\r\n        const guests = this.state.adults + this.state.kids;\r\n        if (guests <= 0) return;\r\n\r\n        const totalTargetWeight = guests * this.state.targetSatietyGrams;\r\n\r\n        \/\/ V\u0161echna vybran\u00e1 gastro j\u00eddla na rautu\r\n        const gastroItemIds = Object.keys(this.state.cart).filter(id => {\r\n            const it = MENU_ITEMS.find(x => x.id === id);\r\n            return it && GASTRO_CATS.includes(it.cat) && (this.state.cart[id] || 0) > 0;\r\n        });\r\n\r\n        if (gastroItemIds.length === 0) return;\r\n\r\n        if (!this.state.locked) this.state.locked = {};\r\n\r\n        \/\/ Pokud je na rautu pouze 1 j\u00eddlo, dost\u00e1v\u00e1 cel\u00fdch 100% rozpo\u010dtu (pokud nen\u00ed ru\u010dn\u011b uzam\u010deno)\r\n        if (gastroItemIds.length === 1) {\r\n            const onlyId = gastroItemIds[0];\r\n            if (!this.state.locked || !this.state.locked[onlyId]) {\r\n                const it = MENU_ITEMS.find(x => x.id === onlyId);\r\n                const itWeight = this.getItemWeight(it) || 100;\r\n                const minQ = (itWeight <= 60) ? 10 : ((itWeight >= 400) ? 1 : 5);\r\n                this.state.cart[onlyId] = Math.max(minQ, Math.round(totalTargetWeight \/ itWeight));\r\n            }\r\n            return;\r\n        }\r\n\r\n        const unlockedIds = gastroItemIds.filter(id => !this.state.locked[id]);\r\n        const lockedIds = gastroItemIds.filter(id => this.state.locked[id]);\r\n\r\n        if (unlockedIds.length > 0) {\r\n            \/\/ Odem\u010den\u00e1 j\u00eddla si rovn\u00fdm d\u00edlem rozd\u011bl\u00ed zb\u00fdvaj\u00edc\u00ed gram\u00e1\u017e po ode\u010dten\u00ed uzam\u010den\u00fdch j\u00eddel\r\n            let lockedWeight = 0;\r\n            lockedIds.forEach(id => {\r\n                const it = MENU_ITEMS.find(x => x.id === id);\r\n                lockedWeight += (this.state.cart[id] || 0) * (this.getItemWeight(it) || 0);\r\n            });\r\n\r\n            const remainingWeight = Math.max(0, totalTargetWeight - lockedWeight);\r\n            const perUnlockedWeight = remainingWeight \/ unlockedIds.length;\r\n\r\n            unlockedIds.forEach(id => {\r\n                const it = MENU_ITEMS.find(x => x.id === id);\r\n                const itWeight = this.getItemWeight(it) || 100;\r\n                const minQ = (itWeight <= 60) ? 10 : ((itWeight >= 400) ? 1 : 5);\r\n                this.state.cart[id] = Math.max(minQ, Math.round(perUnlockedWeight \/ itWeight));\r\n            });\r\n        } else if (changedId && lockedIds.length > 1) {\r\n            \/\/ V\u0161echna j\u00eddla byla uzam\u010dena, ale u\u017eivatel pr\u00e1v\u011b upravil changedId!\r\n            const changedItem = MENU_ITEMS.find(x => x.id === changedId);\r\n            const changedWeight = (this.state.cart[changedId] || 0) * (this.getItemWeight(changedItem) || 0);\r\n            const otherIds = lockedIds.filter(id => id !== changedId);\r\n            \r\n            let otherCurrentWeight = 0;\r\n            otherIds.forEach(id => {\r\n                const it = MENU_ITEMS.find(x => x.id === id);\r\n                otherCurrentWeight += (this.state.cart[id] || 0) * (this.getItemWeight(it) || 0);\r\n            });\r\n\r\n            const targetOtherWeight = Math.max(0, totalTargetWeight - changedWeight);\r\n            if (otherCurrentWeight > 0) {\r\n                const ratio = targetOtherWeight \/ otherCurrentWeight;\r\n                otherIds.forEach(id => {\r\n                    const it = MENU_ITEMS.find(x => x.id === id);\r\n                    const itWeight = this.getItemWeight(it) || 100;\r\n                    const minQ = (itWeight <= 60) ? 10 : ((itWeight >= 400) ? 1 : 5);\r\n                    this.state.cart[id] = Math.max(minQ, Math.round((this.state.cart[id] || 0) * ratio));\r\n                });\r\n            }\r\n        }\r\n    },\r\n\r\n    toggleLock(id) {\r\n        this.haptic();\r\n        if (!this.state.locked) this.state.locked = {};\r\n        this.state.locked[id] = !this.state.locked[id];\r\n        this.rebalance();\r\n        this.renderBuffetDashboard();\r\n        this.renderCatalog();\r\n        this.calc();\r\n    },\r\n\r\n    unlockAll() {\r\n        this.haptic();\r\n        this.state.locked = {};\r\n        this.rebalance();\r\n        this.renderBuffetDashboard();\r\n        this.renderCatalog();\r\n        this.calc();\r\n    },\r\n\r\n    \/\/ VYKRESLEN\u00cd SEZNAMU VYBRAN\u00ddCH J\u00cdDEL V CHYTR\u00c9M PANELU\r\n    renderBuffetDashboard() {\r\n        const listBox = document.getElementById('buffet-items-list');\r\n        if (!listBox) return;\r\n\r\n        const guests = this.state.adults + this.state.kids || 1;\r\n        const targetGrams = this.state.targetSatietyGrams || 800;\r\n        const totalTargetWeight = guests * targetGrams;\r\n\r\n        const activeGastroItems = Object.keys(this.state.cart).filter(id => {\r\n            const it = MENU_ITEMS.find(x => x.id === id);\r\n            return it && GASTRO_CATS.includes(it.cat) && (this.state.cart[id] || 0) > 0;\r\n        });\r\n\r\n        if (activeGastroItems.length === 0) {\r\n            listBox.innerHTML = `\r\n                <div class=\"empty-buffet-box\">\r\n                    <i class=\"fas fa-utensils\"><\/i>\r\n                    <div><strong>Zat\u00edm jste nevybrali \u017e\u00e1dn\u00e9 j\u00eddlo na raut.<\/strong><\/div>\r\n                    <div style=\"margin-top:4px;\">Klikn\u011bte n\u00ed\u017ee na \u201e+ Vybrat\u201c a konfigur\u00e1tor j\u00eddla automaticky vyv\u00e1\u017e\u00ed do 100% sytosti.<\/div>\r\n                <\/div>`;\r\n            return;\r\n        }\r\n\r\n        let html = '';\r\n        activeGastroItems.forEach(id => {\r\n            const it = MENU_ITEMS.find(x => x.id === id);\r\n            const qty = this.state.cart[id];\r\n            const isLocked = !!(this.state.locked && this.state.locked[id]);\r\n            const itWeight = this.getItemWeight(it);\r\n            const itPrice = this.getItemPrice(it);\r\n            const itUnit = this.getItemUnit(it);\r\n            const sub = (itUnit && itUnit.includes('ks') ? 'ks' : 'porc\u00ed');\r\n            \r\n            const totalW = (itWeight || 0) * qty;\r\n            const perPersonGrams = Math.round(totalW \/ guests);\r\n            const pctShare = targetGrams > 0 ? Math.round((totalW \/ totalTargetWeight) * 100) : 0;\r\n\r\n            const totalWStr = totalW >= 1000 \r\n                ? (totalW \/ 1000).toFixed(1).replace('.0', '') + ' kg'\r\n                : totalW.toLocaleString('cs-CZ') + ' g';\r\n\r\n            html += `\r\n            <div class=\"buffet-item-row ${isLocked ? 'is-locked' : ''}\">\r\n                <div class=\"buffet-item-info\">\r\n                    <span class=\"buffet-item-name\" title=\"${it.name}\">${it.name}<\/span>\r\n                    <div class=\"buffet-item-meta\">${it.cat} \u2022 ${qty}\u00d7 ${itPrice} K\u010d (${itUnit})<\/div>\r\n                <\/div>\r\n                \r\n                <div class=\"buffet-item-weight\">\r\n                    <span class=\"grams-total\">${totalWStr}<\/span>\r\n                    <span class=\"grams-per-person\">\u2248 ${perPersonGrams} g\/os (${pctShare} %)<\/span>\r\n                <\/div>\r\n\r\n                <div class=\"buffet-item-actions\">\r\n                    <div class=\"qty-box\" style=\"padding:2px; margin:0;\">\r\n                        <button class=\"qty-btn\" onclick=\"window.app.changeQty('${it.id}', -1)\"><i class=\"fas fa-minus\"><\/i><\/button>\r\n                        <input type=\"number\" class=\"qty-input\" value=\"${qty}\" onchange=\"window.app.setQty('${it.id}', parseInt(this.value) || 0)\" onfocus=\"this.select()\">\r\n                        <button class=\"qty-btn\" onclick=\"window.app.changeQty('${it.id}', 1)\"><i class=\"fas fa-plus\"><\/i><\/button>\r\n                    <\/div>\r\n\r\n                    <div class=\"buffet-action-buttons\">\r\n                        <button onclick=\"window.app.toggleLock('${it.id}')\" class=\"lock-btn ${isLocked ? 'locked' : ''}\" title=\"${isLocked ? 'Pevn\u011b nastaveno u\u017eivatelem (klikn\u011bte pro automatick\u00e9 vyva\u017eov\u00e1n\u00ed)' : 'Automaticky vyva\u017eov\u00e1no (klikn\u011bte pro uzam\u010den\u00ed)'}\">\r\n                            <i class=\"fas ${isLocked ? 'fa-lock' : 'fa-lock-open'}\"><\/i> ${isLocked ? 'Pevn\u00e9' : 'Auto'}\r\n                        <\/button>\r\n\r\n                        <button onclick=\"window.app.setQty('${it.id}', 0)\" class=\"remove-mini-btn\" title=\"Odebrat z rautu\">\r\n                            <i class=\"fas fa-times\"><\/i>\r\n                        <\/button>\r\n                    <\/div>\r\n                <\/div>\r\n            <\/div>`;\r\n        });\r\n\r\n        listBox.innerHTML = html;\r\n    },\r\n\r\n    updatePlatedCoverage() {\r\n        const guests = this.state.adults + this.state.kids;\r\n        let soups = 0, mains = 0, desserts = 0, sidesCount = 0;\r\n        Object.entries(this.state.cart).forEach(([id, qty]) => {\r\n            const it = MENU_ITEMS.find(x => x.id === id);\r\n            if (it) {\r\n                if (it.cat === 'Pol\u00e9vky') soups += qty;\r\n                else if (it.cat === 'Hlavn\u00ed j\u00eddla') {\r\n                    mains += qty;\r\n                    if (this.state.mainSides && this.state.mainSides[id]) {\r\n                        sidesCount += qty;\r\n                    }\r\n                }\r\n                else if (it.cat === 'Dezerty') desserts += qty;\r\n            }\r\n        });\r\n        const elS = document.getElementById('cov-soups');\r\n        const elM = document.getElementById('cov-mains');\r\n        const elSides = document.getElementById('cov-sides');\r\n        const elD = document.getElementById('cov-desserts');\r\n        if (elS) elS.innerText = `${soups} \/ ${guests}`;\r\n        if (elM) elM.innerText = `${mains} \/ ${guests}`;\r\n        if (elSides) elSides.innerText = `${sidesCount} \/ ${mains || guests}`;\r\n        if (elD) elD.innerText = `${desserts} \/ ${guests}`;\r\n    },\r\n\r\n\r\n    goto(step) {\r\n        this.haptic();\r\n        if (step === 2) {\r\n            const dateInput = document.getElementById('evDate');\r\n            const dateVal = dateInput ? dateInput.value : '';\r\n            if (!dateVal) {\r\n                if (dateInput) {\r\n                    dateInput.style.borderColor = '#e74c3c';\r\n                    dateInput.style.boxShadow = '0 0 12px rgba(231, 76, 60, 0.4)';\r\n                    dateInput.focus();\r\n                    dateInput.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n                }\r\n                return alert('Pros\u00edm, vyberte term\u00edn kon\u00e1n\u00ed akce.');\r\n            }\r\n            const evDate = new Date(dateVal);\r\n            const today = new Date();\r\n            today.setHours(0,0,0,0);\r\n            const diffTime = evDate.getTime() - today.getTime();\r\n            const diffDays = Math.ceil(diffTime \/ (1000 * 60 * 60 * 24));\r\n            \r\n            if (diffDays <= 2) {\r\n                if (dateInput) {\r\n                    dateInput.style.borderColor = '#e74c3c';\r\n                    dateInput.style.boxShadow = '0 0 12px rgba(231, 76, 60, 0.4)';\r\n                    dateInput.focus();\r\n                    dateInput.scrollIntoView({ behavior: 'smooth', block: 'center' });\r\n                }\r\n                return alert('Hostinu nelze objednat na m\u00e9n\u011b ne\u017e 3 dny dop\u0159edu. Pros\u00edm, vyberte pozd\u011bj\u0161\u00ed term\u00edn.');\r\n            }\r\n            if (dateInput) {\r\n                dateInput.style.borderColor = '';\r\n                dateInput.style.boxShadow = '';\r\n            }\r\n\r\n            this.state.adults = parseInt(document.getElementById('evAd').value) || 1;\r\n            this.state.kids = parseInt(document.getElementById('evCh').value) || 0;\r\n            this.updateStep2UI();\r\n            this.renderBuffetDashboard();\r\n            document.getElementById('cart-info-text').innerText = 'Sestavte si sv\u00e9 menu';\r\n        }\r\n        if (step === 3) {\r\n            document.getElementById('cart-info-text').innerText = 'Vyberte si n\u00e1poje a slu\u017eby';\r\n        }\r\n        if (step === 4) {\r\n            this.renderFinalList();\r\n        }\r\n        document.querySelectorAll('.wizard-step').forEach(e => e.classList.remove('active'));\r\n        document.getElementById('step-' + step).classList.add('active');\r\n        document.getElementById('global-cart').style.display = (step === 1 || step === 4) ? 'none' : 'flex';\r\n        this.state.step = step;\r\n        document.getElementById('app').scrollIntoView({behavior: 'smooth', block: 'start'});\r\n        this.calc();\r\n    },\r\n\r\n    goNext() {\r\n        this.haptic();\r\n        if (Object.keys(this.state.cart).length === 0) return alert(\"Nezvolili jste zat\u00edm \u017e\u00e1dn\u00fd produkt. Pros\u00edm, vyberte si n\u011bco z nab\u00eddky.\");\r\n        if (this.state.step === 2) this.goto(3);\r\n        else if (this.state.step === 3) this.goto(4);\r\n    },\r\n\r\n    goBack() {\r\n        this.haptic();\r\n        if (this.state.step === 2) this.goto(1);\r\n        else if (this.state.step === 3) this.goto(2);\r\n    },\r\n\r\n    setCat(c) {\r\n        this.haptic();\r\n        this.state.activeGastroCat = c;\r\n        this.renderTabs();\r\n        this.renderCatalog();\r\n    },\r\n    \r\n    setBeverageSubcat(sc) {\r\n        this.haptic();\r\n        this.state.activeBeverageSubcat = sc;\r\n        this.renderExtraTabs();\r\n        this.renderExtraCatalog();\r\n    },\r\n\r\n    setExtraCat(c) {\r\n        this.haptic();\r\n        this.state.activeExtraCat = c;\r\n        this.renderExtraTabs();\r\n        this.renderExtraCatalog();\r\n    },\r\n\r\n    setQty(id, val) {\r\n        this.haptic();\r\n        const item = MENU_ITEMS.find(x => x.id === id);\r\n        if (!item) return;\r\n\r\n        if (isNaN(val) || val <= 0) {\r\n            delete this.state.cart[id];\r\n            if (this.state.locked) delete this.state.locked[id];\r\n            if (this.state.mainSides) delete this.state.mainSides[id];\r\n            if (GASTRO_CATS.includes(item.cat) && this.state.format === 'SMART_BUFFET') {\r\n                this.rebalance();\r\n            }\r\n        } else {\r\n            if (id === 'sl1' && val > 27) val = 27;\r\n            this.state.cart[id] = val;\r\n            if (GASTRO_CATS.includes(item.cat) && this.state.format === 'SMART_BUFFET') {\r\n                if (!this.state.locked) this.state.locked = {};\r\n                this.state.locked[id] = true; \/\/ Zafixuje tuto polo\u017eku\r\n                this.rebalance(id); \/\/ Propor\u010dn\u011b vyv\u00e1\u017e\u00ed ostatn\u00ed\r\n            }\r\n        }\r\n\r\n        this.renderCatalog();\r\n        this.renderBuffetDashboard();\r\n        this.renderExtraCatalog();\r\n        if (this.state.format === 'PLATED_MENU') this.updatePlatedCoverage();\r\n        this.calc();\r\n    },\r\n\r\n    changeQty(id, delta) {\r\n        this.haptic();\r\n        let item = MENU_ITEMS.find(x => x.id === id);\r\n        if (!item) return;\r\n        let current = this.state.cart[id] || 0;\r\n        let guests = this.state.adults + this.state.kids;\r\n        \r\n        if (current === 0 && delta > 0) {\r\n            \/\/ P\u0159id\u00e1n\u00ed nov\u00e9 polo\u017eky do ko\u0161\u00edku\r\n            if (item.cat === 'V\u00fdb\u011bry \u0161\u00e9fkucha\u0159e') {\r\n                this.selectChefPackage(id);\r\n                return;\r\n            } else if (this.state.format === 'SMART_BUFFET' && GASTRO_CATS.includes(item.cat)) {\r\n                this.state.cart[id] = 1; \/\/ Do\u010dasn\u00e1 hodnota pro z\u00e1pis\r\n                if (!this.state.locked) this.state.locked = {};\r\n                this.state.locked[id] = false; \/\/ Nov\u00e9 j\u00eddlo vstupuje jako automaticky vyva\u017eovan\u00e9\r\n                this.rebalance(); \/\/ Rovnom\u011brn\u011b rozd\u011bl\u00ed 100% rozpo\u010dtu s ostatn\u00edmi odem\u010den\u00fdmi\r\n            } else if (this.state.format === 'PLATED_MENU' && GASTRO_CATS.includes(item.cat)) {\r\n                if (item.cat === 'Pol\u00e9vky') this.state.cart[id] = guests;\r\n                else this.state.cart[id] = Math.max(1, guests);\r\n            } else if (item.id === 'n3c' || item.id === 'n3d' || item.id === 'n3e' || item.id === 'n3f') {\r\n                this.state.cart[id] = 1;\r\n            } else if (item.cat === 'N\u00e1poje') {\r\n                if (item.subcat === 'Nealko & Pivo' && item.id !== 'n3' && item.id !== 'n3b') {\r\n                    this.state.cart[id] = guests;\r\n                } else {\r\n                    this.state.cart[id] = this.state.adults;\r\n                }\r\n            } else if (item.id === 'sl1') {\r\n                this.state.cart[id] = guests; \r\n            } else if (item.id === 'sl2') {\r\n                this.state.cart[id] = 20;\r\n            } else {\r\n                this.state.cart[id] = GASTRO_CATS.includes(item.cat) ? Math.max(5, guests) : guests;\r\n            }\r\n        } else {\r\n            \/\/ \u00daprava st\u00e1vaj\u00edc\u00edho mno\u017estv\u00ed\r\n            current += delta;\r\n            if (current <= 0) {\r\n                delete this.state.cart[id];\r\n                if (this.state.locked) delete this.state.locked[id];\r\n                if (this.state.mainSides) delete this.state.mainSides[id];\r\n                if (GASTRO_CATS.includes(item.cat) && this.state.format === 'SMART_BUFFET') {\r\n                    this.rebalance();\r\n                }\r\n            } else {\r\n                if (item.id === 'sl1' && current > 27) current = 27;\r\n                this.state.cart[id] = current;\r\n                if (GASTRO_CATS.includes(item.cat) && this.state.format === 'SMART_BUFFET') {\r\n                    if (!this.state.locked) this.state.locked = {};\r\n                    this.state.locked[id] = true; \/\/ Zafixuje tuto polo\u017eku jako ru\u010dn\u011b upravenou\r\n                    this.rebalance(id); \/\/ Ostatn\u00ed odem\u010den\u00e9 polo\u017eky se p\u0159izp\u016fsob\u00ed\r\n                }\r\n            }\r\n        }\r\n        \r\n        this.renderCatalog();\r\n        this.renderBuffetDashboard();\r\n        this.renderExtraCatalog();\r\n        if (this.state.format === 'PLATED_MENU') this.updatePlatedCoverage();\r\n        this.calc();\r\n    },\r\n\r\n    renderTabs() {\r\n        let html = '';\r\n        GASTRO_CATS.forEach((c) => {\r\n            html += `<button onclick=\"window.app.setCat('${c}')\" class=\"cat-btn ${c === this.state.activeGastroCat ? 'active' : ''}\">${c}<\/button>`;\r\n        });\r\n        document.getElementById('cat-tabs').innerHTML = html;\r\n    },\r\n\r\n    renderExtraTabs() {\r\n        let html = EXTRA_CATS.map(c => \r\n            `<button onclick=\"window.app.setExtraCat('${c}')\" class=\"cat-btn ${c === this.state.activeExtraCat ? 'active' : ''}\">${c}<\/button>`\r\n        ).join('');\r\n        \r\n        if (this.state.activeExtraCat === 'N\u00e1poje') {\r\n            const subcats = ['Nealko & Pivo', 'V\u00edna & Sekty', 'Aperitivy', 'Lihoviny', 'Korkovn\u00e9'];\r\n            html += `<div style=\"width: 100%; margin-top: 15px;\"><\/div>`; \r\n            html += subcats.map(sc => \r\n                `<button onclick=\"window.app.setBeverageSubcat('${sc}')\" class=\"cat-btn ${sc === this.state.activeBeverageSubcat ? 'active' : ''}\" style=\"font-size:11px !important; text-transform:none !important; font-weight:500 !important; padding:6px 14px !important; min-width:auto; letter-spacing:normal !important; opacity:0.9;\">${sc}<\/button>`\r\n            ).join('');\r\n        }\r\n        \r\n        document.getElementById('extra-tabs').innerHTML = html;\r\n        document.getElementById('extra-tabs').style.flexWrap = 'wrap';\r\n    },\r\n\r\n    renderCatalog() {\r\n        const items = MENU_ITEMS.filter(i => i.cat === this.state.activeGastroCat);\r\n        document.getElementById('catalog-grid').innerHTML = items.map(i => this.renderCard(i)).join('');\r\n    },\r\n\r\n    renderExtraCatalog() {\r\n        const isBottleLayout = this.state.activeExtraCat === 'N\u00e1poje' && ['V\u00edna & Sekty', 'Aperitivy', 'Lihoviny'].includes(this.state.activeBeverageSubcat);\r\n        document.getElementById('extra-grid').style.gridTemplateColumns = isBottleLayout ? 'repeat(auto-fill, minmax(220px, 1fr))' : 'repeat(auto-fill, minmax(280px, 1fr))';\r\n        document.getElementById('extra-grid').style.display = 'grid';\r\n        const items = MENU_ITEMS.filter(i => i.cat === this.state.activeExtraCat && (i.cat !== 'N\u00e1poje' || !i.subcat || i.subcat === this.state.activeBeverageSubcat));\r\n        document.getElementById('extra-grid').innerHTML = items.map(i => this.renderCard(i)).join('');\r\n    },\r\n\r\n    renderCard(i) {\r\n        const qty = this.state.cart[i.id] || 0;\r\n        const guests = this.state.adults + this.state.kids || 1;\r\n        const targetGrams = this.state.targetSatietyGrams || 800;\r\n        const totalTargetWeight = guests * targetGrams;\r\n        \r\n        const itemPrice = this.getItemPrice(i);\r\n        const itemWeight = this.getItemWeight(i);\r\n        const itemUnit = this.getItemUnit(i);\r\n        const sub = (i.id === 'sl1') ? 'os' : (i.id === 'sl2' ? 'km' : (i.id === 'n10' || i.id === 'n11' ? 'lahv\u00ed' : (itemUnit && itemUnit.includes('ks') ? 'ks' : 'porc\u00ed')));\r\n        const defaultImg = 'https:\/\/images.unsplash.com\/photo-1546069901-ba9599a7e63c?auto=format&fit=crop&q=80&w=400';\r\n        const isBottle = i.cat === 'N\u00e1poje' && ['V\u00edna & Sekty', 'Aperitivy', 'Lihoviny'].includes(i.subcat);\r\n        const imgHeight = isBottle ? '260px' : '160px';\r\n        const imgFit = isBottle ? 'object-fit: contain; background: white;' : 'object-fit: cover;';\r\n\r\n        \/\/ P\u0158\u00cdLOHA K HLAVN\u00cdMU CHODU (pro serv\u00edrovan\u00e9 menu \/ serv\u00edrovan\u00e9 rauty)\r\n        const isPlatedMain = (this.state.format === 'PLATED_MENU' && i.cat === 'Hlavn\u00ed j\u00eddla');\r\n        const selectedSideId = (isPlatedMain && this.state.mainSides) ? this.state.mainSides[i.id] : null;\r\n        const sideItem = selectedSideId ? MENU_ITEMS.find(x => x.id === selectedSideId) : null;\r\n        const sidePrice = sideItem ? this.getItemPrice(sideItem) : 0;\r\n        const sideWeight = sideItem ? (this.getItemWeight(sideItem) || 0) : 0;\r\n\r\n        const effectivePortionPrice = itemPrice + sidePrice;\r\n        const effectivePortionWeight = (itemWeight || 0) + sideWeight;\r\n\r\n        const totalItemPrice = effectivePortionPrice * qty;\r\n        const totalItemWeight = effectivePortionWeight * qty;\r\n        let weightStr = '';\r\n        if (effectivePortionWeight && qty > 0) {\r\n            if (totalItemWeight >= 1000) {\r\n                weightStr = (totalItemWeight \/ 1000).toFixed(1).replace('.0', '') + ' kg (' + totalItemWeight.toLocaleString('cs-CZ') + ' g)';\r\n            } else {\r\n                weightStr = totalItemWeight.toLocaleString('cs-CZ') + ' g';\r\n            }\r\n        }\r\n        const perGuestGrams = Math.round(totalItemWeight \/ guests);\r\n        const pctShare = targetGrams > 0 ? Math.round((totalItemWeight \/ totalTargetWeight) * 100) : 0;\r\n\r\n        \/\/ SELEKTOR P\u0158\u00cdLOHY PRO HLAVN\u00cd J\u00cdDLA V SERV\u00cdROVAN\u00c9M MENU\r\n        let sideSelectorHtml = '';\r\n        if (isPlatedMain) {\r\n            const sideItems = MENU_ITEMS.filter(x => x.cat === 'Sal\u00e1ty a p\u0159\u00edlohy');\r\n            const sideOptionsHtml = sideItems.map(s => {\r\n                const sp = this.getItemPrice(s);\r\n                const sel = (selectedSideId === s.id) ? 'selected' : '';\r\n                return `<option value=\"${s.id}\" ${sel}>${s.name} (+${sp} K\u010d)<\/option>`;\r\n            }).join('');\r\n\r\n            sideSelectorHtml = `\r\n            <div class=\"main-side-container ${sideItem ? 'has-side' : ''}\">\r\n                <div class=\"main-side-header\">\r\n                    <span class=\"main-side-label\">\r\n                        <i class=\"fas fa-utensils\" style=\"color: var(--gold);\"><\/i> P\u0159\u00edloha k tomuto chodu:\r\n                    <\/span>\r\n                    ${sideItem ? `<span class=\"main-side-badge\">+${sidePrice} K\u010d \/ porce<\/span>` : ''}\r\n                <\/div>\r\n                <select class=\"main-side-select\" onchange=\"window.app.setMainSide('${i.id}', this.value)\">\r\n                    <option value=\"\">-- Bez p\u0159\u00edlohy (pouze chod) --<\/option>\r\n                    ${sideOptionsHtml}\r\n                <\/select>\r\n                ${sideItem ? `\r\n                <div class=\"main-side-confirm\">\r\n                    <i class=\"fas fa-check-circle\" style=\"color: #2ecc71;\"><\/i> Vybr\u00e1no k chodu: <strong>${sideItem.name}<\/strong> (${this.getItemUnit(sideItem)})\r\n                <\/div>` : ''}\r\n            <\/div>`;\r\n        }\r\n\r\n        return `\r\n        <div class=\"food-card ${qty > 0 ? 'selected-card' : ''}\">\r\n            <div class=\"food-img-box\" style=\"height: ${imgHeight}; background: ${isBottle ? 'white' : '#eee'};\">\r\n                <img decoding=\"async\" src=\"${i.img || defaultImg}\" alt=\"${i.name}\" loading=\"lazy\" style=\"${imgFit}\">\r\n                ${qty > 0 && GASTRO_CATS.includes(i.cat) ? `\r\n                    <span style=\"position:absolute; top:10px; right:10px; background:var(--forest-green); color:white; font-size:11px; font-weight:800; padding:4px 10px; border-radius:20px; box-shadow:0 2px 6px rgba(0,0,0,0.3); letter-spacing:0.5px;\">\r\n                        <i class=\"fas fa-check\"><\/i> ${qty} ${sub} (${totalItemWeight >= 1000 ? (totalItemWeight\/1000).toFixed(1).replace('.0', '') + ' kg' : totalItemWeight + ' g'}${sideItem ? ' v\u010d. p\u0159\u00edlohy' : ''})\r\n                    <\/span>` : ''}\r\n            <\/div>\r\n            <div class=\"food-content\">\r\n                <h3 class=\"food-title\">${i.name}<\/h3>\r\n                <div class=\"food-desc\">${i.desc}<\/div>\r\n                ${i.id === 'sl2' ? `<div style=\"margin-top:5px; margin-bottom:10px;\"><a href=\"https:\/\/www.google.com\/maps\/dir\/\/Ro\u017embersk\u00e1+33,+379+01+T\u0159ebo\u0148\" target=\"_blank\" style=\"color:var(--gold); font-size:12px; font-weight:700; text-decoration:none; display:inline-block; padding: 4px 0;\"><i class=\"fas fa-map-marker-alt\"><\/i> \ud83d\udccd Zjistit vzd\u00e1lenost z T\u0159ebon\u011b (Mapy)<\/a><\/div>` : ''}\r\n                \r\n                ${sideSelectorHtml}\r\n\r\n                <!-- DYNAMICK\u00dd P\u0158EHLED CENY A GRAM\u00c1\u017dE PRO VYBRAN\u00c9 MNO\u017dSTV\u00cd -->\r\n                <div class=\"food-price-row\" style=\"margin-bottom: 15px !important; align-items: flex-end !important;\">\r\n                    ${qty > 0 ? `\r\n                        <div>\r\n                            <span class=\"food-price\" style=\"color:var(--forest-green) !important; font-size: 21px !important;\">${totalItemPrice.toLocaleString('cs-CZ')} K\u010d<\/span>\r\n                            ${sideItem ? `\r\n                            <span style=\"font-size:11px; font-weight:600; color:var(--text-muted); display:block; margin-top:2px;\">\r\n                                ${qty}\u00d7 ${effectivePortionPrice} K\u010d (${itemPrice} K\u010d chod + ${sidePrice} K\u010d ${sideItem.name})\r\n                            <\/span>\r\n                            ` : `\r\n                            <span style=\"font-size:11px; font-weight:600; color:var(--text-muted); display:block; margin-top:2px;\">\r\n                                ${qty}\u00d7 ${itemPrice} K\u010d ${itemUnit ? '(' + itemUnit + ')' : ''}\r\n                            <\/span>\r\n                            `}\r\n                        <\/div>\r\n                        ${effectivePortionWeight && GASTRO_CATS.includes(i.cat) ? `\r\n                        <div style=\"text-align:right;\">\r\n                            <span style=\"font-weight:800; font-size:15px; color:var(--gold); display:block;\">\r\n                                ${weightStr} celkem\r\n                            <\/span>\r\n                            ${this.state.format === 'SMART_BUFFET' ? `\r\n                            <span style=\"font-size:11px; font-weight:600; color:var(--forest-green); display:block; margin-top:2px;\">\r\n                                \u2248 ${perGuestGrams} g \/ host (${pctShare} %)\r\n                            <\/span>` : `\r\n                            <span style=\"font-size:11px; font-weight:600; color:var(--forest-green); display:block; margin-top:2px;\">\r\n                                ${effectivePortionWeight} g \/ porce${sideItem ? ' v\u010d. p\u0159\u00edlohy' : ''}\r\n                            <\/span>`}\r\n                        <\/div>` : ''}\r\n                    ` : `\r\n                        <div>\r\n                            ${sideItem ? `\r\n                            <span class=\"food-price\">${effectivePortionPrice} K\u010d<\/span>\r\n                            <span class=\"food-unit\" style=\"font-size:12px; font-weight:600; color:var(--text-muted); margin-left:4px;\">\/ porce v\u010d. p\u0159\u00edlohy (${itemPrice} + ${sidePrice} K\u010d)<\/span>\r\n                            ` : `\r\n                            <span class=\"food-price\">${itemPrice} K\u010d<\/span>\r\n                            ${itemUnit ? `<span class=\"food-unit\" style=\"font-size:13px; font-weight:600; color:var(--text-muted); margin-left:4px;\">\/ ${itemUnit}<\/span>` : ''}\r\n                            `}\r\n                        <\/div>\r\n                    `}\r\n                <\/div>\r\n\r\n                ${qty > 0 ? `\r\n                    <div class=\"qty-box\">\r\n                        <button class=\"qty-btn\" onclick=\"window.app.changeQty('${i.id}', -1)\"><i class=\"fas fa-minus\"><\/i><\/button>\r\n                        <div style=\"display:flex; align-items:center;\">\r\n                            <input type=\"number\" class=\"qty-input\" value=\"${qty}\" onchange=\"window.app.setQty('${i.id}', parseInt(this.value) || 0)\" onfocus=\"this.select()\">\r\n                            <span style=\"font-size:12px; font-weight:700; color:var(--forest-green); margin-left: 2px;\">${sub}<\/span>\r\n                        <\/div>\r\n                        <button class=\"qty-btn\" onclick=\"window.app.changeQty('${i.id}', 1)\"><i class=\"fas fa-plus\"><\/i><\/button>\r\n                    <\/div>\r\n                    <div style=\"text-align: center; margin-top: 10px;\">\r\n                        <span onclick=\"window.app.setQty('${i.id}', 0)\" style=\"color: #e74c3c; font-size: 13px; font-weight: 700; cursor: pointer; text-transform: uppercase;\"><i class=\"fas fa-times\"><\/i> Odebrat<\/span>\r\n                    <\/div>\r\n                ` : `\r\n                    <button class=\"qty-add-btn\" onclick=\"window.app.changeQty('${i.id}', 1)\"><i class=\"fas fa-plus\"><\/i> Vybrat<\/button>\r\n                `}\r\n            <\/div>\r\n        <\/div>`;\r\n    },\r\n\r\n\r\n        applyVoucher() {\r\n        const code = document.getElementById('voucherCode').value.toUpperCase();\r\n        if (['SALON10', 'SVATBA10', 'VOUCHER10'].includes(code)) {\r\n            this.state.voucherType = 'SVATBA'; \r\n            document.getElementById('voucher-msg').style.display='block';\r\n        } else {\r\n            this.state.voucherType = null;\r\n            document.getElementById('voucher-msg').style.display='none';\r\n            alert('Neplatn\u00fd nebo pro\u0161l\u00fd k\u00f3d.');\r\n        }\r\n        this.renderFinalList();\r\n        this.calc();\r\n    },\r\n\r\n    calc() {\r\n        let ad = this.state.adults;\r\n        let ch = this.state.kids;\r\n        let guests = ad + ch;\r\n        if (guests === 0) return;\r\n        let totalWeight = 0;\r\n        let totalFoodPrice = 0;\r\n        let finalPrice = 0;\r\n        let factor = this.state.voucherType === 'SVATBA' ? 0.9 : 1;\r\n        let activeGastroCount = 0;\r\n\r\n        Object.entries(this.state.cart).forEach(([id, qty]) => {\r\n            let item = MENU_ITEMS.find(x => x.id === id);\r\n            if (item) {\r\n                let p = this.getItemPrice(item);\r\n                let w = this.getItemWeight(item);\r\n                if (ch > 0 && (GASTRO_CATS.includes(item.cat) || item.cat === 'N\u00e1poje' || item.cat === 'V\u00fdb\u011bry \u0161\u00e9fkucha\u0159e')) {\r\n                    p *= (ad * 1 + ch * 0.75) \/ guests;\r\n                }\r\n                if (item.id === 'sl2') p = p * 2; \/\/ Cesta tam i zp\u011bt\r\n                finalPrice += p * qty;\r\n                if (GASTRO_CATS.includes(item.cat) || item.cat === 'V\u00fdb\u011bry \u0161\u00e9fkucha\u0159e') {\r\n                    totalWeight += (w || 0) * qty;\r\n                    totalFoodPrice += p * qty;\r\n                    if (qty > 0) activeGastroCount++;\r\n                }\r\n\r\n                \/\/ P\u0158\u00cdLOHA K HLAVN\u00cdMU CHODU (pro serv\u00edrovan\u00e9 menu \/ serv\u00edrovan\u00e9 rauty)\r\n                if (this.state.format === 'PLATED_MENU' && item.cat === 'Hlavn\u00ed j\u00eddla' && this.state.mainSides && this.state.mainSides[id]) {\r\n                    const sideId = this.state.mainSides[id];\r\n                    const sideItem = MENU_ITEMS.find(x => x.id === sideId);\r\n                    if (sideItem) {\r\n                        let sp = this.getItemPrice(sideItem);\r\n                        let sw = this.getItemWeight(sideItem);\r\n                        if (ch > 0 && GASTRO_CATS.includes(sideItem.cat)) {\r\n                            sp *= (ad * 1 + ch * 0.75) \/ guests;\r\n                        }\r\n                        finalPrice += sp * qty;\r\n                        totalWeight += (sw || 0) * qty;\r\n                        totalFoodPrice += sp * qty;\r\n                    }\r\n                }\r\n            }\r\n        });\r\n\r\n        finalPrice *= factor;\r\n        const priceFormatted = Math.round(finalPrice).toLocaleString('cs-CZ') + ' K\u010d';\r\n        const ct = document.getElementById('cart-total');\r\n        const st = document.getElementById('summary-total');\r\n        if (ct) ct.innerText = priceFormatted;\r\n        if (st) st.innerText = priceFormatted;\r\n\r\n        let wpp = totalWeight \/ guests;\r\n        let target = this.state.targetSatietyGrams || 800;\r\n        let pct = target > 0 ? Math.round((wpp \/ target) * 100) : 100;\r\n        let fill = Math.min(pct, 100);\r\n\r\n        let sLab = 'M\u00e1lo j\u00eddla'; \r\n        let sCol = '#e74c3c';\r\n        \r\n        if (this.state.format === 'CHEF_PACKAGE') {\r\n            sLab = 'Bohat\u00fd raut \u0161\u00e9fkucha\u0159e'; \r\n            sCol = '#2ecc71';\r\n            fill = 100;\r\n            pct = 100;\r\n        } else if (this.state.targetSatietyGrams > 0) {\r\n            if (pct >= 95 && pct <= 105) {\r\n                sLab = 'P\u0159esn\u011b vyv\u00e1\u017eeno'; sCol = '#2ecc71';\r\n            } else if (pct > 105) {\r\n                sLab = 'Vydatn\u00fd raut'; sCol = '#9b59b6';\r\n            } else if (pct >= 60) {\r\n                sLab = 'Leh\u010d\u00ed raut'; sCol = '#f1c40f';\r\n            } else {\r\n                sLab = 'M\u00e1lo j\u00eddla'; sCol = '#e74c3c';\r\n            }\r\n        } else {\r\n            \/\/ Vlastn\u00ed v\u00fdb\u011br\r\n            if (wpp >= 300) { sLab = 'Lehk\u00e9'; sCol = '#f1c40f'; }\r\n            if (wpp >= 500) { sLab = 'Ide\u00e1ln\u00ed'; sCol = '#2ecc71'; }\r\n            if (wpp >= 800) { sLab = 'Hostina'; sCol = '#9b59b6'; }\r\n        }\r\n        \r\n        const sf = document.getElementById('satiety-fill');\r\n        const stext = document.getElementById('satiety-text');\r\n        const sbadge = document.getElementById('satiety-status-badge');\r\n        const dashWeight = document.getElementById('dash-total-weight');\r\n        const dashPrice = document.getElementById('dash-total-price');\r\n        const dashCount = document.getElementById('dash-items-count');\r\n        const sumWeight = document.getElementById('summary-weight');\r\n\r\n        if (sf && stext) {\r\n            sf.style.width = fill + '%'; \r\n            sf.style.backgroundColor = sCol;\r\n            if (this.state.targetSatietyGrams > 0 && this.state.format === 'SMART_BUFFET') {\r\n                stext.innerText = `${Math.round(wpp)} g \/ ${target} g (${pct} %)`;\r\n            } else {\r\n                stext.innerText = `${Math.round(wpp)} g (${sLab})`;\r\n            }\r\n        }\r\n\r\n        if (sbadge) {\r\n            sbadge.innerText = sLab;\r\n            sbadge.style.backgroundColor = sCol;\r\n        }\r\n\r\n        const totalWeightFormatted = totalWeight >= 1000 \r\n            ? (totalWeight \/ 1000).toFixed(1).replace('.0', '') + ' kg (' + Math.round(totalWeight).toLocaleString('cs-CZ') + ' g)'\r\n            : Math.round(totalWeight).toLocaleString('cs-CZ') + ' g';\r\n\r\n        if (dashWeight) dashWeight.innerText = `${totalWeightFormatted} pro ${guests} host\u016f`;\r\n        if (dashPrice) dashPrice.innerText = Math.round(totalFoodPrice).toLocaleString('cs-CZ') + ' K\u010d';\r\n        if (dashCount) dashCount.innerText = `${activeGastroCount} ${activeGastroCount === 1 ? 'druh' : (activeGastroCount < 5 ? 'druhy' : 'druh\u016f')}`;\r\n\r\n        if (sumWeight) {\r\n            sumWeight.innerText = `Celkov\u00e1 gram\u00e1\u017e j\u00eddla na rautu: ${totalWeightFormatted} (pr\u016fm\u011brn\u011b ${Math.round(wpp)} g \/ hosta)`;\r\n        }\r\n    },\r\n\r\n    renderFinalList() {\r\n        const box = document.getElementById('final-items-list');\r\n        const factor = this.state.voucherType === 'SVATBA' ? 0.9 : 1;\r\n        let ad = this.state.adults;\r\n        let ch = this.state.kids;\r\n        let guests = ad + ch;\r\n        let html = '';\r\n\r\n        Object.entries(this.state.cart).forEach(([id, qty]) => {\r\n            let item = MENU_ITEMS.find(x => x.id === id);\r\n            if (!item) return;\r\n            let pEffective = this.getItemPrice(item);\r\n            let itemWeight = this.getItemWeight(item);\r\n            let itemUnit = this.getItemUnit(item);\r\n\r\n            if (ch > 0 && (GASTRO_CATS.includes(item.cat) || item.cat === 'N\u00e1poje' || item.cat === 'V\u00fdb\u011bry \u0161\u00e9fkucha\u0159e')) {\r\n                pEffective *= (ad * 1 + ch * 0.75) \/ guests;\r\n            }\r\n            if (item.id === 'sl2') pEffective = pEffective * 2; \/\/ Cesta tam i zp\u011bt\r\n            let rowTotalOld = pEffective * qty;\r\n            let rowTotalNew = rowTotalOld * factor;\r\n            \r\n            const isKm = item.id === 'sl2';\r\n            const isOs = item.id === 'sl1';\r\n            const isBottles = item.id === 'n10' || item.id === 'n11';\r\n            const label = isKm ? `${qty} km ${item.name} (tam i zp\u011bt)` : isOs ? `${qty} os ${item.name}` : isBottles ? `${qty} lahv\u00ed ${item.name}` : `${qty}x ${item.name}`;\r\n\r\n            const itemWeightTotal = itemWeight * qty;\r\n            let itemWeightStr = '';\r\n            if (itemWeightTotal > 0 && GASTRO_CATS.includes(item.cat)) {\r\n                const targetText = this.state.format === 'PLATED_MENU' ? 'serv\u00edrovan\u00e9' : 'na raut';\r\n                itemWeightStr = itemWeightTotal >= 1000 \r\n                    ? ` \u2022 Celkem ${(itemWeightTotal\/1000).toFixed(1).replace('.0', '')} kg ${targetText}`\r\n                    : ` \u2022 Celkem ${itemWeightTotal} g ${targetText}`;\r\n            }\r\n\r\n            html += `\r\n            <div class=\"summary-list-item\">\r\n                <div style=\"flex:1;\">\r\n                    <strong style=\"color:var(--forest-green);\">${label}<\/strong>${itemUnit ? ` <span style=\"font-size:12px; font-weight:600; color:var(--text-muted);\">(${itemUnit}${itemWeightStr})<\/span>` : ''}<br>\r\n                    <span style=\"font-size:11px; opacity:0.6; text-transform:uppercase;\">${item.cat}<\/span>\r\n                <\/div>\r\n                <div style=\"text-align:right;\">\r\n                    ${factor < 1 ? `<span class=\"old-price\">${Math.round(rowTotalOld).toLocaleString('cs-CZ')} K\u010d<\/span>` : ''}\r\n                    <span class=\"price-tag ${factor < 1 ? 'discounted' : ''}\">${Math.round(rowTotalNew).toLocaleString('cs-CZ')} K\u010d<\/span>\r\n                <\/div>\r\n            <\/div>`;\r\n\r\n            \/\/ P\u0158\u00cdLOHA K HLAVN\u00cdMU CHODU V SOUHRNU (serv\u00edrovan\u00e9 menu \/ serv\u00edrovan\u00e9 rauty)\r\n            if (this.state.format === 'PLATED_MENU' && item.cat === 'Hlavn\u00ed j\u00eddla' && this.state.mainSides && this.state.mainSides[id]) {\r\n                const sideId = this.state.mainSides[id];\r\n                const sideItem = MENU_ITEMS.find(x => x.id === sideId);\r\n                if (sideItem) {\r\n                    let spEffective = this.getItemPrice(sideItem);\r\n                    let sideW = this.getItemWeight(sideItem);\r\n                    let sideUnit = this.getItemUnit(sideItem);\r\n                    if (ch > 0 && GASTRO_CATS.includes(sideItem.cat)) {\r\n                        spEffective *= (ad * 1 + ch * 0.75) \/ guests;\r\n                    }\r\n                    let sideRowTotalOld = spEffective * qty;\r\n                    let sideRowTotalNew = sideRowTotalOld * factor;\r\n                    let sideWeightTotal = (sideW || 0) * qty;\r\n                    let sideWeightStr = sideWeightTotal >= 1000 \r\n                        ? ` \u2022 Celkem ${(sideWeightTotal\/1000).toFixed(1).replace('.0', '')} kg serv\u00edrovan\u00e9`\r\n                        : ` \u2022 Celkem ${sideWeightTotal} g serv\u00edrovan\u00e9`;\r\n\r\n                    html += `\r\n                    <div class=\"summary-list-item\" style=\"padding-left: 28px; background: #faf8f5; border-left: 3px solid var(--gold); margin-top: -6px; margin-bottom: 8px;\">\r\n                        <div style=\"flex:1;\">\r\n                            <span style=\"color:var(--forest-green); font-size:13px; font-weight:700;\"><i class=\"fas fa-level-up-alt fa-rotate-90\" style=\"color:var(--gold); margin-right:6px;\"><\/i>P\u0159\u00edloha k chodu: ${qty}x ${sideItem.name}<\/span>\r\n                            ${sideUnit ? ` <span style=\"font-size:12px; font-weight:600; color:var(--text-muted);\">(${sideUnit}${sideWeightStr})<\/span>` : ''}<br>\r\n                            <span style=\"font-size:11px; opacity:0.6; text-transform:uppercase;\">P\u0158\u00cdLOHA K HLAVN\u00cdMU CHODU<\/span>\r\n                        <\/div>\r\n                        <div style=\"text-align:right;\">\r\n                            ${factor < 1 ? `<span class=\"old-price\">${Math.round(sideRowTotalOld).toLocaleString('cs-CZ')} K\u010d<\/span>` : ''}\r\n                            <span class=\"price-tag ${factor < 1 ? 'discounted' : ''}\">+${Math.round(sideRowTotalNew).toLocaleString('cs-CZ')} K\u010d<\/span>\r\n                        <\/div>\r\n                    <\/div>`;\r\n                }\r\n            }\r\n        });\r\n        box.innerHTML = html || '<p style=\"text-align:center; opacity:0.5; padding:20px;\">Zat\u00edm jste nic nevybrali.<\/p>';\r\n    },\r\n\r\n\r\n        submit() {\r\n        const name = document.getElementById('finalName').value.trim();\r\n        const email = document.getElementById('finalEmail').value.trim();\r\n        const phone = document.getElementById('finalPhone').value.trim();\r\n        const dateVal = document.getElementById('evDate').value;\r\n        const timeVal = document.getElementById('evTime').value;\r\n\r\n        if (!name || !email) return alert('Dopl\u0148te pros\u00edm Jm\u00e9no a p\u0159\u00edjmen\u00ed a E-mail.');\r\n        if (!dateVal || !timeVal || !this.state.location) return alert('Dopl\u0148te pros\u00edm datum, \u010das a m\u00edsto kon\u00e1n\u00ed v prvn\u00edm kroku.');\r\n\r\n        const evDate = new Date(dateVal);\r\n        const today = new Date();\r\n        today.setHours(0,0,0,0);\r\n        const diffTime = evDate.getTime() - today.getTime();\r\n        const diffDays = Math.ceil(diffTime \/ (1000 * 60 * 60 * 24));\r\n        \r\n        if (diffDays <= 2) {\r\n            return alert('Hostinu nelze objednat na m\u00e9n\u011b ne\u017e 3 dny dop\u0159edu. Pros\u00edm, zm\u011b\u0148te term\u00edn v prvn\u00edm kroku.');\r\n        }\r\n\r\n        document.getElementById('btn-submit').innerText = 'ODES\u00cdL\u00c1M...';\r\n        \r\n        let polozkyStr = \"\";\r\n        Object.entries(this.state.cart).forEach(([id, qty]) => {\r\n            const item = MENU_ITEMS.find(i => i.id === id);\r\n            if (item) {\r\n                const isKm = item.id === 'sl2';\r\n                const isOs = item.id === 'sl1';\r\n                const isBottles = item.id === 'n10' || item.id === 'n11';\r\n                const itemPrice = this.getItemPrice(item);\r\n                const itemW = (this.getItemWeight(item) || 0) * qty;\r\n                const itemUnit = this.getItemUnit(item);\r\n                const weightNote = (itemW > 0 && GASTRO_CATS.includes(item.cat)) ? ` [Celkem ${itemW >= 1000 ? (itemW\/1000).toFixed(1)+'kg' : itemW+'g'}]` : '';\r\n                const unitStr = itemUnit ? ` (${itemUnit}${weightNote})` : '';\r\n                const label = isKm ? `${qty} km (tam i zp\u011bt)` : isOs ? `${qty} os` : isBottles ? `${qty} lahv\u00ed` : `${qty}x`;\r\n                polozkyStr += `- ${label} ${item.name} [${itemPrice} K\u010d\/porce]${unitStr}\\n`;\r\n\r\n                \/\/ P\u0158\u00cdLOHA K HLAVN\u00cdMU CHODU V POPT\u00c1VCE (serv\u00edrovan\u00e9 menu \/ serv\u00edrovan\u00e9 rauty)\r\n                if (this.state.format === 'PLATED_MENU' && item.cat === 'Hlavn\u00ed j\u00eddla' && this.state.mainSides && this.state.mainSides[id]) {\r\n                    const sideId = this.state.mainSides[id];\r\n                    const sideItem = MENU_ITEMS.find(x => x.id === sideId);\r\n                    if (sideItem) {\r\n                        const sidePrice = this.getItemPrice(sideItem);\r\n                        const sideW = (this.getItemWeight(sideItem) || 0) * qty;\r\n                        const sideUnit = this.getItemUnit(sideItem);\r\n                        const sideWeightNote = sideW > 0 ? ` [Celkem ${sideW >= 1000 ? (sideW\/1000).toFixed(1)+'kg' : sideW+'g'}]` : '';\r\n                        polozkyStr += `  \u21b3 P\u0159\u00edloha: ${qty}x ${sideItem.name} [+${sidePrice} K\u010d\/porce] (${sideUnit}${sideWeightNote})\\n`;\r\n                    }\r\n                }\r\n            }\r\n        });\r\n        const voucherStr = this.state.voucherType ? 'Ano' : 'Ne';\r\n        const cena = document.getElementById('summary-total').innerText;\r\n        const fmtNames = {\r\n            'SMART_BUFFET': 'Chytr\u00fd raut na m\u00edru',\r\n            'CHEF_PACKAGE': 'V\u00fdb\u011bry \u0161\u00e9fkucha\u0159e',\r\n            'PLATED_MENU': 'Serv\u00edrovan\u00e9 menu'\r\n        };\r\n\r\n        const subjectStr = `POPT\u00c1VKA HOTEL MYSLIVNA: ${this.state.type} (${fmtNames[this.state.format]}) - ${name}`;\r\n        const messageBody = `Telefon: ${phone || 'Nevypln\u011bn'}\\nTerm\u00edn: ${dateVal} v ${timeVal}\\nHost\u00e9 celkem: ${this.state.adults + this.state.kids} (Dosp\u011bl\u00ed: ${this.state.adults}, D\u011bti: ${this.state.kids})\\nTyp akce: ${this.state.type}\\nForm\u00e1t hostiny: ${fmtNames[this.state.format]}\\nM\u00edsto: ${this.state.location}\\nVoucher uplatn\u011bn: ${voucherStr}\\nCelkov\u00e1 cena k popt\u00e1vce: ${cena}\\n\\nVybran\u00e9 polo\u017eky:\\n${polozkyStr || '\u017d\u00e1dn\u00e9 konkr\u00e9tn\u00ed polo\u017eky.'}`;\r\n\r\n        const payload = {\r\n            name: name,\r\n            email: email,\r\n            message: messageBody,\r\n            _subject: subjectStr\r\n        };\r\n        \r\n        fetch(`\/wp-admin\/admin-ajax.php?action=odeslat_rezervaci`, {\r\n            method: 'POST',\r\n            headers: { \r\n                'Content-Type': 'application\/json',\r\n                'Accept': 'application\/json'\r\n            },\r\n            body: JSON.stringify(payload)\r\n        }).then(r => {\r\n            if (!r.ok) throw new Error(\"Chyba serveru\");\r\n            return r.json();\r\n        })\r\n        .then(data => {\r\n            if (data.success || data.data) {\r\n                alert('Va\u0161e popt\u00e1vka byla \u00fasp\u011b\u0161n\u011b odesl\u00e1na. Brzy se V\u00e1m ozveme!');\r\n            } else {\r\n                throw new Error(\"P\u0159i odes\u00edl\u00e1n\u00ed nastala chyba\");\r\n            }\r\n        }).catch(err => {\r\n            const mailtoLink = `mailto:info@myslivna.com?subject=${encodeURIComponent(subjectStr)}&body=${encodeURIComponent(messageBody)}`;\r\n            window.location.href = mailtoLink;\r\n            alert('P\u0159i automatick\u00e9m odes\u00edl\u00e1n\u00ed nastala chyba, proto jsme V\u00e1m p\u0159ipravili e-mail pro ru\u010dn\u00ed odesl\u00e1n\u00ed.');\r\n        }).finally(() => {\r\n            document.getElementById('btn-submit').innerText = 'ODESLAT POPT\u00c1VKU \u017dIV\u011a';\r\n        });\r\n    }\r\n};\r\n\r\n\r\n    window.app.init();\r\n<\/script>\r\n<\/body>\r\n<\/html>\r\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Chytr\u00fd konfigur\u00e1tor hostiny &#8211; Hotel Myslivna Konfigur\u00e1tor hostiny Zadejte z\u00e1kladn\u00ed parametry Va\u0161\u00ed akce v Hotelu Myslivna. N\u00e1zev akce Typ ud\u00e1losti Svatba Oslava Firemn\u00ed Zp\u016fsob pod\u00e1v\u00e1n\u00ed hostiny Chytr\u00fd raut na m\u00edru Degusta\u010dn\u00ed rautov\u00e9 porce (100g, men\u0161\u00ed kusy po v\u00edce ks) se z\u00e1rukou sytosti V\u00fdb\u011bry \u0161\u00e9fkucha\u0159e 3 hotov\u00e9 osv\u011bd\u010den\u00e9 rautov\u00e9 sestavy (800g \/ 1000g \/ 1200g) Serv\u00edrovan\u00e9 menu Klasick\u00e9 pln\u00e9 porce (150g na hosta) serv\u00edrovan\u00e9 p\u0159\u00edmo ke stolu M\u00edsto kon\u00e1n\u00ed U n\u00e1s v restauraci Vlastn\u00ed m\u00edsto (Catering) Term\u00edn kon\u00e1n\u00ed \u010cas za\u010d\u00e1tku 11:0011:3012:0012:3013:0013:3014:0014:3015:0015:3016:0016:3017:0017:3018:0018:3019:0019:3020:00 Po\u010det dosp\u011bl\u00fdch D\u011bti do 12 let (Sleva 25 %) Sestavit sv\u00e1te\u010dn\u00ed menu V\u00fdb\u011br gastronomie 20 osob \u2022 Svatba \u2022 Chytr\u00fd raut na m\u00edru Zvolte po\u017eadovanou \u00farove\u0148 sytosti rautu: Mysliveck\u00e1 sva\u010dina 500 g \/ osoba Leh\u010d\u00ed raut k pivu, v\u00ednu \u010di ve\u010dern\u00edmu posezen\u00ed DOPORU\u010cENO Pansk\u00e1 hostina 800 g \/ osoba Bohat\u00fd plnohodnotn\u00fd raut pro celove\u010dern\u00ed oslavu \u010di svatbu Ro\u017embersk\u00e1 tabule 1 150 g \/ osoba Kr\u00e1lovsk\u00e1 hostina pro nejn\u00e1ro\u010dn\u011bj\u0161\u00ed gurm\u00e1ny s velkou chut\u00ed Vlastn\u00ed v\u00fdb\u011br Ru\u010dn\u00ed po\u010dty P\u0159esn\u00fd po\u010det porc\u00ed si u ka\u017ed\u00e9ho j\u00eddla ur\u010d\u00edte sami Vybran\u00e1 j\u00eddla na rautov\u00fd st\u016fl Vyv\u00e1\u017eit rovnom\u011brn\u011b Celkov\u00e1 sytost rautu 0 g \/ 800 g (0 %) M\u00e1lo j\u00eddla V\u00e1ha j\u00eddla na rautov\u00e9m stole: 0 kg Cena za vybran\u00e9 j\u00eddlo: 0 K\u010d Po\u010det vybran\u00fdch pokrm\u016f: 0 druh\u016f Princip 100% rozd\u011blen\u00ed: Ka\u017ed\u00e9 p\u0159idan\u00e9 j\u00eddlo se rozd\u011bl\u00ed rovn\u00fdm d\u00edlem. Ru\u010dn\u011b upraven\u00e1 polo\u017eka se zafixuje () a zb\u00fdvaj\u00edc\u00ed gram\u00e1\u017e se automaticky dopo\u010dte z ostatn\u00edch j\u00eddel. Vyberte si jeden z na\u0161ich t\u0159ech vyhl\u00e1\u0161en\u00fdch hotov\u00fdch raut\u016f. Sta\u010d\u00ed jedno kliknut\u00ed a menu pro v\u0161echny hosty je hotov\u00e9. 0 \/ 20 Pol\u00e9vky 0 \/ 20 Hlavn\u00ed chody 0 \/ 20 P\u0159\u00edlohy k chod\u016fm 0 \/ 20 Dezerty Pro serv\u00edrovanou hostinu si u ka\u017ed\u00e9ho hlavn\u00edho chodu p\u0159\u00edmo v kart\u011b zvolte individu\u00e1ln\u00ed p\u0159\u00edlohu (knedl\u00edky, noky, grenaille, hranolky apod.). Dopl\u0148ky a Pit\u00ed Krok 3 ze 4 \u2022 V\u00fdb\u011br n\u00e1poj\u016f a slu\u017eeb Polo\u017ekov\u00e1 Rekapitulace Krok 4 ze 4 Zm\u011bnit dopl\u0148ky Va\u0161e vybran\u00e9 menu a slu\u017eby M\u00e1te slevov\u00fd voucher? Uplatnit Slevy byly aplikov\u00e1ny. Celkov\u00e1 cena k popt\u00e1vce 0 K\u010d Dokon\u010den\u00ed popt\u00e1vky Jm\u00e9no a p\u0159\u00edjmen\u00ed Telefon E-mail ODESLAT POPT\u00c1VKU \u017dIV\u011a Aktu\u00e1ln\u00ed cena 0 K\u010d Vyberte si j\u00eddlo k hostin\u011b Zp\u011bt Dal\u0161\u00ed * V\u0161echny zobrazen\u00e9 fotografie v konfigur\u00e1toru jsou pouze ilustra\u010dn\u00ed.<\/p>","protected":false},"author":3,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_canvas","meta":{"footnotes":""},"class_list":["post-9083","page","type-page","status-publish","hentry","entry"],"_links":{"self":[{"href":"https:\/\/www.myslivna.com\/de\/wp-json\/wp\/v2\/pages\/9083","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/www.myslivna.com\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/www.myslivna.com\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/www.myslivna.com\/de\/wp-json\/wp\/v2\/users\/3"}],"replies":[{"embeddable":true,"href":"https:\/\/www.myslivna.com\/de\/wp-json\/wp\/v2\/comments?post=9083"}],"version-history":[{"count":41,"href":"https:\/\/www.myslivna.com\/de\/wp-json\/wp\/v2\/pages\/9083\/revisions"}],"predecessor-version":[{"id":9480,"href":"https:\/\/www.myslivna.com\/de\/wp-json\/wp\/v2\/pages\/9083\/revisions\/9480"}],"wp:attachment":[{"href":"https:\/\/www.myslivna.com\/de\/wp-json\/wp\/v2\/media?parent=9083"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}