        /* CSS Variables for dynamic theming from appearance settings */
        :root {
            /* Primary colors - will be overridden by appearance settings */
            --primary-color: #1a1a1a;
            --secondary-color: #666666;
            --accent-color: #4a90e2;
            --success-color: #27ae60;
            --info-color: #17a2b8;
            --info-bg: #f8f9fa;
            
            /* Text colors */
            --text-color: #2c2c2c;
            --text-muted: #666666;
            
            /* Typography */
            --font-family: 'Lato', -apple-system, sans-serif;
            --font-size-base: 1rem;
            --font-size-h1: 2.5rem;
            --font-size-h2: 2rem;
            --font-size-h3: 1.5rem;
            --font-size-h4: 1.125rem;
            
            /* Content type specific colors */
            --dish-border: transparent;
            --beverage-border: #4a90e2;
            --service-border: #27ae60;
            --info-border: #17a2b8;
        }
        
        /* Elegant Restaurant Menu Styling */
        body {
            font-family: var(--font-family);
            font-weight: 300;
            color: var(--text-color);
            background: #f8f8f8;
            margin: 0;
        }
        
        h1, h2 {
            font-family: 'Playfair Display', serif;
        }
        
        .page-container {
            max-width: 900px;
            margin: 0 auto;
            background: white;
            min-height: 100vh;
            box-shadow: 0 0 50px rgba(0,0,0,0.08);
            display: flex;
            flex-direction: column;
        }
        
        /* Header */
        #menuHeader {
            text-align: center;
            padding: 3rem 2rem 2rem;
            background: white;
            position: relative;
        }
        
        /* Header Style Variations */
        #menuHeader.style-simple {
            /* Default simple style - already defined above */
        }
        
        #menuHeader.style-hero {
            min-height: 60vh;
            display: flex;
            flex-direction: column;
            justify-content: center;
            align-items: center;
            padding: 4rem 2rem;
            background: linear-gradient(135deg, var(--color-primary), var(--color-secondary, var(--color-primary)));
            color: white;
            position: relative;
            overflow: hidden;
        }
        
        #menuHeader.style-hero::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: rgba(0, 0, 0, 0.3);
            z-index: 1;
        }
        
        #menuHeader.style-hero > * {
            position: relative;
            z-index: 2;
        }
        
        #menuHeader.style-hero .menu-title {
            color: white;
            font-size: calc(var(--font-size-h1) * 1.5);
            text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.3);
        }
        
        #menuHeader.style-hero .menu-subtitle {
            color: rgba(255, 255, 255, 0.95);
            font-size: 1.1rem;
        }
        
        #menuHeader.style-hero .price-badge {
            background: rgba(255, 255, 255, 0.2);
            backdrop-filter: blur(10px);
            border: 2px solid white;
        }
        
        #menuHeader.style-banner {
            padding: 2rem;
            background: var(--color-primary);
            color: white;
            position: relative;
            overflow: hidden;
        }
        
        #menuHeader.style-banner::after {
            content: '';
            position: absolute;
            bottom: -50px;
            left: -50px;
            width: 150px;
            height: 150px;
            background: rgba(255, 255, 255, 0.1);
            border-radius: 50%;
        }
        
        #menuHeader.style-banner::before {
            content: '';
            position: absolute;
            top: -30px;
            right: -30px;
            width: 100px;
            height: 100px;
            background: rgba(255, 255, 255, 0.1);
            border-radius: 50%;
        }
        
        #menuHeader.style-banner .menu-title {
            color: white;
            position: relative;
            z-index: 2;
        }
        
        #menuHeader.style-banner .menu-subtitle {
            color: rgba(255, 255, 255, 0.9);
            position: relative;
            z-index: 2;
        }
        
        /* Header with background image */
        #menuHeader.has-cover-image {
            background-size: cover;
            background-position: center;
            background-repeat: no-repeat;
        }
        
        #menuHeader.has-cover-image::before {
            content: '';
            position: absolute;
            top: 0;
            left: 0;
            right: 0;
            bottom: 0;
            background: linear-gradient(to bottom, 
                rgba(0, 0, 0, 0.4) 0%, 
                rgba(0, 0, 0, 0.6) 100%);
            z-index: 1;
        }
        
        #menuHeader.has-cover-image > * {
            position: relative;
            z-index: 2;
        }
        
        #menuHeader.has-cover-image .menu-title,
        #menuHeader.has-cover-image .menu-subtitle {
            color: white;
            text-shadow: 2px 2px 4px rgba(0, 0, 0, 0.5);
        }
        
        /* Sticky header */
        #menuHeader.sticky {
            position: sticky;
            top: 0;
            z-index: 1000;
            transition: all 0.3s ease;
        }
        
        #menuHeader.sticky.scrolled {
            padding: 1rem 2rem;
            box-shadow: 0 2px 10px rgba(0, 0, 0, 0.1);
            background: rgba(255, 255, 255, 0.98);
            backdrop-filter: blur(10px);
        }
        
        #menuHeader.sticky.scrolled .menu-title {
            font-size: 1.5rem;
        }
        
        #menuHeader.sticky.scrolled .menu-subtitle,
        #menuHeader.sticky.scrolled .business-logo {
            display: none;
        }
        
        .menu-title {
            font-size: 2.5rem;
            color: var(--primary-color, #1a1a1a);
            margin-bottom: 0.75rem;
            font-weight: 400;
        }
        
        .menu-subtitle {
            font-size: 1rem;
            color: #666;
            max-width: 100%;
            margin: 0 auto 1.5rem;
            line-height: 1.6;
            padding: 0 1rem;
        }
        
        @media (min-width: 769px) {
            .menu-subtitle {
                padding: 0;
            }
        }
        
        .price-badge {
            display: inline-block;
            padding: 0.5rem 1.25rem;
            background: var(--primary-color, #1a1a1a);
            color: white;
            border-radius: 25px;
            font-size: 1.1rem;
            font-weight: 400;
            margin-top: 1rem;
        }
        
        /* Decorative Separator */
        .separator {
            text-align: center;
            margin: 0;
            color: var(--color-primary, #d4d4d4);
            font-size: 1.2rem;
            letter-spacing: 0.5em;
            opacity: 0.4;
        }
        
        /* Sections */
        .menu-section {
            padding: 1.5rem 2rem;
            text-align: center;
        }
        
        .section-header {
            font-size: 1.4rem;
            color: var(--primary-color, #1a1a1a);
            text-align: center;
            margin-bottom: 1.5rem;
            font-weight: 400;
            text-transform: uppercase;
            letter-spacing: 0.05em;
            font-family: 'Playfair Display', serif;
        }
        
        .dishes-container {
            max-width: 650px;
            margin: 0 auto;
        }
        
        /* Dishes */
        .dish-item {
            margin-bottom: 1.75rem;
            text-align: center;
        }
        
        .dish-name {
            font-size: 1.05rem;
            color: #2c2c2c;
            margin-bottom: 0.35rem;
            font-weight: 600;  /* Slightly bolder for better readability */
            line-height: 1.4;
        }
        
        .dish-description {
            color: #666;
            font-size: 0.9rem;
            line-height: 1.5;
            margin-bottom: 0.5rem;
            font-weight: 300;
        }
        
        .dish-price {
            color: var(--primary-color, #666);
            font-size: 0.95rem;
            font-weight: 400;
        }
        
        /* Allergens */
        .allergen-list {
            display: flex;
            flex-wrap: wrap;
            gap: 0.4rem;
            justify-content: center;
            margin-top: 0.5rem;
        }
        
        .allergen-badge {
            padding: 0.15rem 0.5rem;
            background: #fff3cd;
            color: #856404;
            border-radius: 10px;
            font-size: 0.75rem;
            font-weight: 400;
            transition: all 0.2s ease;
            display: inline-flex;
            align-items: center;
            gap: 0.25rem;
        }
        
        /* First allergen-icon definition - removed filter that was ruining SVGs */
        .allergen-icon {
            height: 16px;
            width: 16px;
            display: inline-block;
            vertical-align: middle;
        }
        
        /* Highlight all allergens */
        .allergen-badge.allergen-highlight {
            background: #f8d7da;
            color: #721c24;
            border-color: #f5c6cb;
            font-weight: bold;
            box-shadow: 0 0 0 2px rgba(248, 215, 218, 0.5);
        }
        
        /* Highlight only gluten */
        .allergen-badge.allergen-highlight-gluten {
            background: #ff9800;
            color: white;
            border-color: #ff6b00;
            font-weight: bold;
            box-shadow: 0 0 0 2px rgba(255, 152, 0, 0.3);
        }
        
        /* Allergen icons */
        .allergen-icon {
            width: 16px;
            height: 16px;
            display: inline-block;
            vertical-align: middle;
            margin-right: 4px;
        }
        
        /* Allergen icons - clean display without boxes for menu view */
        .allergen-icons {
            display: inline-flex;
            align-items: center;
            gap: 4px;
            margin-top: 0.25rem;
        }
        
        /* Allergen icon wrapper with tooltip */
        .allergen-icon-wrapper {
            position: relative;
            display: inline-block;
            margin: 0 3px;
        }
        
        .allergen-icon-wrapper[data-tooltip]:hover::after {
            content: attr(data-tooltip);
            position: absolute;
            bottom: 100%;
            left: 50%;
            transform: translateX(-50%);
            background: rgba(0, 0, 0, 0.9);
            color: white;
            padding: 4px 8px;
            border-radius: 4px;
            font-size: 12px;
            white-space: nowrap;
            margin-bottom: 4px;
            z-index: 1000;
            pointer-events: none;
        }
        
        .allergen-icon-wrapper[data-tooltip]:hover::before {
            content: '';
            position: absolute;
            bottom: 100%;
            left: 50%;
            transform: translateX(-50%);
            border: 4px solid transparent;
            border-top-color: rgba(0, 0, 0, 0.9);
            margin-bottom: -4px;
            z-index: 1000;
            pointer-events: none;
        }
        
        .allergen-icon {
            height: 28px;
            width: 28px;
            display: inline-block;
            vertical-align: middle;
            opacity: 0.9;
            transition: opacity 0.2s;
            cursor: help; /* Show help cursor on hover */
        }
        
        .allergen-icon:hover {
            opacity: 1;
            transform: scale(1.1);
        }
        
        .allergen-badge {
            display: inline-flex;
            align-items: center;
            gap: 4px;
        }
        
        .allergen-emoji {
            font-size: 1.1em;
        }
        
        /* Note: Language Selector CSS is now managed by WActivity CMS ShellRenderer */

        .business-logo img {
            max-height: 80px;
            width: auto;
        }
        
        /* Footer */
        /* Content wrapper to push footer down */
        .content-wrapper {
            flex: 1;
            display: flex;
            flex-direction: column;
        }
        
        #menuContent {
            flex: 1;
        }
        
        #menuFooter {
            padding: 3rem 2rem;
            text-align: center;
            border-top: 1px solid #e5e5e5;
            background: #fafafa;
            margin-top: auto;
        }
        
        /* Animations */
        @keyframes fadeIn {
            from { opacity: 0; transform: translateY(10px); }
            to { opacity: 1; transform: translateY(0); }
        }
        
        .menu-section {
            animation: fadeIn 0.6s ease-in;
        }

        /* Info block rich HTML content styling */
        .info-block-rich-content ul,
        .info-block-rich-content ol {
            margin-left: 1.5rem;
            margin-top: 0.5rem;
            margin-bottom: 0.5rem;
            text-align: left !important;
        }
        .info-block-rich-content ul {
            list-style-type: disc;
        }
        .info-block-rich-content ol {
            list-style-type: decimal;
        }
        .info-block-rich-content li {
            margin-bottom: 0.25rem;
            text-align: left !important;
        }
        .info-block-rich-content ul ul,
        .info-block-rich-content ol ol,
        .info-block-rich-content ul ol,
        .info-block-rich-content ol ul {
            margin-top: 0.25rem;
            margin-bottom: 0.25rem;
        }
        .info-block-rich-content strong,
        .info-block-rich-content b {
            font-weight: 600;
        }
        .info-block-rich-content em,
        .info-block-rich-content i {
            font-style: italic;
        }
        .info-block-rich-content p {
            margin-bottom: 0.5rem;
        }
        .info-block-rich-content p:last-child {
            margin-bottom: 0;
        }

        /* À la carte menu item with dotted leader */
        .menu-item-with-price {
            display: flex;
            align-items: baseline;
            margin-bottom: 0;  /* No margin - let description be close */
            position: relative;
        }
        
        .menu-item-name {
            flex: 0 0 auto;
            padding-right: 0.5rem;
            background: white;
            position: relative;
            z-index: 2;
        }
        
        .menu-item-dots {
            flex: 1 1 auto;
            height: 1em;
            position: relative;
            overflow: hidden;
            margin: 0 0.25rem;
        }
        
        .menu-item-dots::before {
            content: '';
            position: absolute;
            left: 0;
            right: 0;
            bottom: 0.5em;  /* Align with text baseline */
            border-bottom: 1px dotted #999;
        }
        
        .menu-item-price {
            flex: 0 0 auto;
            padding-left: 0.5rem;
            background: white;
            position: relative;
            z-index: 2;
            font-weight: 600;
        }
        
        .menu-item-description {
            color: #666;
            font-size: 0.9rem;
            margin-top: 0.25rem;
            margin-bottom: 0.5rem;
        }
        
        /* Page wrapper styles for single menu view */
        body.single-menu-view {
            background: #f5f5f5;
            padding: 2rem 1rem;
        }
        
        .single-menu-view #menuContainer {
            min-height: 100vh;
            background: white;
            margin: 0 auto 3rem !important;
            max-width: 900px !important;
            box-shadow: 0 10px 30px rgba(0,0,0,0.1) !important;
            position: relative;
            display: flex;
            flex-direction: column;
        }
        
        .single-menu-view .page-container {
            max-width: 900px !important;
            box-shadow: 0 10px 30px rgba(0,0,0,0.1) !important;
        }

        /* Campaign view: allow full width for cover images */
        .campaign-view .page-container {
            max-width: 100%;
            box-shadow: none;
        }
        
        .single-menu-view #menuHeader {
            text-align: center;
            padding: 3rem 2rem 2rem !important;
            background: white;
            position: relative;
        }
        
        .single-menu-view #menuContent {
            padding: 0 2rem 2rem !important;
        }
        
        @media (max-width: 768px) {
            body.single-menu-view {
                padding: 0;
            }
            .single-menu-view #menuContainer {
                box-shadow: none;
                margin: 0;
            }
            .single-menu-view #menuHeader,
            .single-menu-view #menuContent {
                padding-left: 1rem;
                padding-right: 1rem;
            }
            
            }
        
        /* Fixed CTA Buttons Styles */
        .fixed-cta-container {
            position: fixed;
            bottom: 20px;
            left: 50%;
            transform: translateX(-50%);
            z-index: 999;
            display: flex;
            justify-content: center;
            gap: 1rem;
            pointer-events: none; /* Allow clicks to pass through container */
        }
        
        .fixed-cta-container > * {
            pointer-events: auto; /* But allow clicks on buttons */
        }
        
        .fixed-cta-container.hidden {
            display: none;
        }
        
        .fixed-cta-btn {
            padding: 0.75rem 1.5rem;
            border-radius: 25px;
            font-weight: 600;
            text-decoration: none;
            transition: all 0.3s ease;
            display: inline-flex;
            align-items: center;
            gap: 0.5rem;
            box-shadow: 0 4px 12px rgba(0, 0, 0, 0.15);
        }
        
        .fixed-cta-btn.primary {
            background-color: #22c55e;
            color: white;
        }
        
        .fixed-cta-btn.primary:hover {
            background-color: #16a34a;
            transform: translateY(-3px);
            box-shadow: 0 8px 20px rgba(34, 197, 94, 0.4);
        }
        
        .fixed-cta-btn.secondary {
            background-color: #3b82f6;
            color: white;
        }
        
        .fixed-cta-btn.secondary:hover {
            background-color: #2563eb;
            transform: translateY(-3px);
            box-shadow: 0 8px 20px rgba(59, 130, 246, 0.4);
        }
        
        @media (max-width: 768px) {
            .fixed-cta-container {
                bottom: 15px;
                gap: 0.75rem;
                width: 90%;
            }
            
            .fixed-cta-btn {
                padding: 0.625rem 1rem;
                font-size: 0.875rem;
                box-shadow: 0 3px 10px rgba(0, 0, 0, 0.2);
            }
            
            .fixed-cta-btn .btn-text {
                display: none;
            }
            
            .fixed-cta-btn .btn-text-mobile {
                display: inline;
            }
        }
        
        @media (min-width: 769px) {
            .fixed-cta-btn .btn-text-mobile {
                display: none;
            }
        }
        
        /* Campaign header responsive styles */
        .campaign-header-content {
            transition: all 0.3s ease;
        }
        
        .campaign-description {
            max-width: 100%;
            margin-left: auto;
            margin-right: auto;
        }
        
        @media (max-width: 768px) {
            .campaign-header-content {
                max-width: 90%;
                margin: 0 auto;
            }
        }
        
        @media (min-width: 769px) and (max-width: 1024px) {
            .campaign-header-content {
                max-width: 85%;
                margin: 0 auto;
            }
        }
        
        @media (min-width: 1025px) {
            .campaign-header-content {
                max-width: min(80%, 1200px);
                margin: 0 auto;
            }
        }
        
        @media (min-width: 1440px) {
            .campaign-header-content {
                max-width: min(70%, 1400px);
                margin: 0 auto;
            }
        }
