<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Youvia - Domain Discovery</title>
    <meta name="description" content="Verified domain information for youvia.nl via Aztrix Online Discovery Platform">
    <meta name="robots" content="index, follow">
    <link rel="canonical" href="https://youvia.nl/">
    <link rel="alternate" hreflang="en" href="https://youvia.nl/?lang=en">
    <link rel="alternate" hreflang="fr" href="https://youvia.nl/?lang=fr">
    <link rel="alternate" hreflang="nl" href="https://youvia.nl/?lang=nl">
    <link rel="alternate" hreflang="de" href="https://youvia.nl/?lang=de">
    <link rel="alternate" hreflang="es" href="https://youvia.nl/?lang=es">
    <link rel="alternate" hreflang="pt-BR" href="https://youvia.nl/?lang=pt-BR">
    <link rel="alternate" hreflang="x-default" href="https://youvia.nl/">
    <!-- AI / machine-readable peers — same content, formats LLM tools prefer.
         ?src=alt lets bot-stats attribute crawler hits to the alternate-discovery
         channel (vs ?src=llms, ?src=sitemap, or unsourced raw scrape). -->
    <link rel="alternate" type="text/markdown" href="/about.md?src=alt">
    <link rel="alternate" type="text/plain" href="/llms.txt?src=alt">
    <link rel="alternate" type="application/ld+json" href="/.well-known/schema.json?src=alt">
    <meta name="ai-content-policy" content="readable">
    <meta property="og:title" content="Youvia">
    <meta property="og:description" content="Youvia is a Dutch online discovery and marketing platform that helps small and medium businesses get found across search engines, business directories, and AI assistants. Successor to the Gouden Gids network, Youvia provides listing management, online visibility tools, and partner integrations for the Dutch SME market.">
    <meta property="og:url" content="https://youvia.nl/">
    <meta property="og:type" content="website">
    <meta property="og:image" content="https://nnaayfkzvllcnpcnaizx.supabase.co/functions/v1/og-image?domain=youvia.nl">
    <meta property="og:image:width" content="1200">
    <meta property="og:image:height" content="630">
    <meta name="twitter:card" content="summary_large_image">
    <meta name="twitter:image" content="https://nnaayfkzvllcnpcnaizx.supabase.co/functions/v1/og-image?domain=youvia.nl">
    <link rel="icon" type="image/png" href="https://www.google.com/s2/favicons?domain=youvia.nl&sz=64">
    <link rel="apple-touch-icon" href="https://www.google.com/s2/favicons?domain=youvia.nl&sz=180">
    <script type="application/ld+json">{"@context":"https://schema.org","@type":["Organization","ProfessionalService"],"name":"Youvia","url":"https://youvia.nl","description":"Youvia is a Dutch online discovery and marketing platform that helps small and medium businesses get found across search engines, business directories, and AI assistants. Successor to the Gouden Gids network, Youvia provides listing management, online visibility tools, and partner integrations for the Dutch SME market.","sameAs":"https://www.youvia.nl"}</script>
    <link rel="preconnect" href="https://fonts.googleapis.com">
    <link rel="preconnect" href="https://fonts.gstatic.com" crossorigin>
    <link href="https://fonts.googleapis.com/css2?family=Lato:wght@400;700;900&display=swap" rel="stylesheet">
    <style>
        :root {
            --accent: #0ea5e9;
            --accent-dark: #0c8cc6;
            --brand-green: #10b981;
            --bg-base: #0A0A0A;
            --bg-surface: #111827;
            --bg-elevated: #1F2937;
            --bg-glass: rgba(255,255,255,0.05);
            --border-glass: rgba(255,255,255,0.10);
            --text-primary: #F8FAFC;
            --text-secondary: #94A3B8;
            --text-tertiary: #666666;
            --icon-bg-muted: rgba(255,255,255,0.06);
            --shadow-card: none;
        }
        * { margin: 0; padding: 0; box-sizing: border-box; }
        body { font-family: 'Lato', -apple-system, BlinkMacSystemFont, 'Segoe UI', sans-serif; line-height: 1.5; color: var(--text-primary); background: var(--bg-base); min-height: 100vh; padding: 0; }
        .container { max-width: 900px; margin: 0 auto; padding: 0 1rem; }

        /* Hero */
        .hero { padding: 4rem 1rem 3rem; text-align: center; position: relative; }
        .hero::after { content: ''; position: absolute; bottom: 0; left: 10%; right: 10%; height: 1px; background: linear-gradient(90deg, transparent, var(--border-glass), transparent); }
        /* Hero photo variant — set via vertical_attributes.cover_image_url in website mode. Background image is composited with a dark scrim for text contrast. */
        .hero-with-photo { padding: 6rem 1rem 5rem; background-size: cover; background-position: center; background-repeat: no-repeat; color: #fff; }
        .hero-with-photo h1 { color: #fff; text-shadow: 0 2px 12px rgba(0,0,0,0.4); }
        .hero-with-photo .hero-headline { color: rgba(255,255,255,0.92); text-shadow: 0 1px 8px rgba(0,0,0,0.4); }
        .hero-with-photo .hero-status { color: rgba(255,255,255,0.92); }
        .hero-with-photo .hero-status-pin svg { color: #fff; }
        .hero-with-photo .category-chip { background: rgba(255,255,255,0.18); color: #fff; border-color: rgba(255,255,255,0.28); backdrop-filter: blur(8px); }
        .hero-with-photo::after { display: none; }
        .hero .category-chip { display: inline-block; background: var(--bg-glass); color: var(--text-secondary); padding: 0.25rem 0.875rem; border-radius: 999px; font-size: 0.6875rem; font-weight: 700; letter-spacing: 0.08em; text-transform: uppercase; margin-bottom: 1rem; border: 1px solid var(--border-glass); }
        .hero h1 { font-size: 2rem; font-weight: 700; color: var(--text-primary); margin-bottom: 0.375rem; line-height: 1.2; }
        .hero .domain { font-size: 1rem; color: var(--accent); margin-bottom: 0.75rem; font-weight: 400; }
        .verified-badge { display: inline-flex; align-items: center; gap: 0.375rem; background: rgba(16,185,129,0.12); color: var(--brand-green); padding: 0.375rem 0.875rem; border-radius: 999px; font-size: 0.8125rem; font-weight: 700; border: 1px solid rgba(16,185,129,0.25); }
        .hero-headline { font-size: 1.125rem; color: var(--text-secondary); max-width: 600px; margin: 1.5rem auto 0; line-height: 1.6; }
        .hero-cta { display: inline-flex; align-items: center; gap: 0.5rem; background: var(--accent); color: #000; padding: 0.75rem 2rem; border-radius: 999px; text-decoration: none; font-weight: 700; font-size: 0.9375rem; margin-top: 1.75rem; transition: all 0.2s ease; }
        .hero-cta:hover { background: var(--accent-dark); transform: translateY(-1px); }

        /* Pipeline */
        .pipeline-section { padding: 2.5rem 0; }
        .pipeline-header { text-align: center; margin-bottom: 2rem; }
        .pipeline-header h2 { font-size: 1.25rem; font-weight: 700; color: var(--text-primary); margin-bottom: 0.25rem; }
        .pipeline-header p { font-size: 0.875rem; color: var(--text-secondary); }
        .pipeline { display: flex; gap: 0; align-items: stretch; position: relative; }
        .pipeline-step { flex: 1; text-decoration: none; color: var(--text-primary); text-align: center; padding: 1.25rem 0.75rem; border-radius: 12px; background: var(--bg-surface); border: 1px solid var(--border-glass); transition: all 0.2s ease; position: relative; }
        .pipeline-step:hover { background: var(--bg-elevated); border-color: var(--accent); transform: translateY(-2px); }
        .pipeline-step.ucp-step { border-color: rgba(16,185,129,0.4); background: rgba(16,185,129,0.08); }
        .pipeline-step.ucp-step:hover { border-color: var(--brand-green); }
        .pipeline-hook { font-size: 0.6875rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.06em; color: var(--text-tertiary); margin-bottom: 0.5rem; }
        .pipeline-file { font-size: 0.9375rem; font-weight: 700; color: var(--accent); margin-bottom: 0.25rem; font-family: 'JetBrains Mono', 'Fira Code', monospace; }
        .pipeline-step.ucp-step .pipeline-file { color: var(--brand-green); }
        .pipeline-label { font-size: 0.75rem; color: var(--text-secondary); }
        .pipeline-arrow { display: flex; align-items: center; justify-content: center; width: 24px; flex-shrink: 0; color: var(--text-tertiary); }
        @media (max-width: 640px) {
            .pipeline { flex-direction: column; gap: 0.5rem; }
            .pipeline-arrow { transform: rotate(90deg); width: auto; height: 20px; }
            .hero h1 { font-size: 1.5rem; }
        }

        /* Cards */
        .card { background: var(--bg-surface); border-radius: 12px; padding: 1.75rem; margin-bottom: 1.5rem; border: 1px solid var(--border-glass); box-shadow: var(--shadow-card); }
        .section { margin-bottom: 1.75rem; }
        .section:last-child { margin-bottom: 0; }
        .section h2 { font-size: 1.25rem; font-weight: 700; color: var(--text-primary); margin-bottom: 0.75rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--border-glass); }
        .section-source { display: inline-block; font-size: 0.6875rem; font-weight: 700; color: var(--text-tertiary); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 0.5rem; padding: 0.125rem 0.5rem; background: var(--bg-glass); border-radius: 4px; border: 1px solid var(--border-glass); }
        /* Website mode: hide platform-chrome "from llms.txt" / "from ai.json" badges; the customer's site is theirs, the file-source attribution is for the AI version (footer link). */
        body[data-presentation="website"] .section-source { display: none; }
        body[data-presentation="website"] .domain { display: none; }
        body[data-presentation="website"] .verified-badge { display: none; }
        /* Hero status one-liner — only rendered in website mode. Populated client-side by the existing opening-hours JS so it shares logic. */
        .hero-status { display: flex; align-items: center; justify-content: center; gap: 0.75rem; flex-wrap: wrap; margin: 0.875rem 0 1.25rem; font-size: 0.9375rem; color: var(--text-secondary); }
        .hero-status-pin { display: inline-flex; align-items: center; gap: 0.375rem; }
        .hero-status-pin svg { color: var(--accent); }
        .hero-status-time:empty { display: none; }
        .hero-status-time:not(:empty)::before { content: "·"; color: var(--text-tertiary); margin-right: 0.5rem; }
        .info-grid { display: grid; grid-template-columns: repeat(auto-fit, minmax(220px, 1fr)); gap: 1rem; margin-bottom: 1.25rem; }
        .info-item { background: var(--bg-glass); padding: 1rem; border-radius: 8px; border: 1px solid var(--border-glass); }
        .info-item h3 { font-size: 0.75rem; color: var(--accent); text-transform: uppercase; letter-spacing: 0.06em; margin-bottom: 0.375rem; font-weight: 700; }
        .info-item p { color: var(--text-primary); font-size: 0.9375rem; }

        /* CTA buttons */
        .cta-panel { display: flex; flex-wrap: wrap; gap: 0.625rem; margin-top: 0.5rem; }
        .cta-btn { display: inline-flex; align-items: center; gap: 0.4rem; background: var(--bg-glass); color: var(--text-primary); padding: 0.625rem 1.25rem; border-radius: 999px; text-decoration: none; font-weight: 400; font-size: 0.875rem; border: 1px solid var(--border-glass); transition: all 0.15s ease; }
        .cta-btn:hover { background: var(--bg-elevated); border-color: rgba(255,255,255,0.2); }
        .cta-btn.cta-primary { background: var(--accent); border-color: var(--accent); color: #000; font-weight: 700; }
        .cta-btn.cta-primary:hover { background: var(--accent-dark); border-color: var(--accent-dark); }
        .cta-btn.cta-wa { background: rgba(37,211,102,0.15); border-color: rgba(37,211,102,0.3); color: #25d366; font-weight: 700; }
        .cta-btn.cta-wa:hover { background: rgba(37,211,102,0.25); }

        /* Profile / discovery file links */
        .discovery-files { display: grid; grid-template-columns: repeat(auto-fit, minmax(180px, 1fr)); gap: 0.75rem; }
        .discovery-file { display: block; background: var(--bg-glass); border: 1px solid var(--border-glass); padding: 1.25rem; border-radius: 12px; text-decoration: none; color: var(--text-primary); transition: all 0.2s ease; text-align: center; }
        .discovery-file:hover { background: var(--bg-elevated); border-color: var(--accent); transform: translateY(-2px); }
        .discovery-file .file-title { font-weight: 700; margin-bottom: 0.125rem; color: var(--accent); font-family: 'JetBrains Mono', 'Fira Code', monospace; font-size: 0.875rem; }
        .discovery-file .file-desc { font-size: 0.75rem; color: var(--text-secondary); }
        .profile-btn { display: inline-flex; align-items: center; gap: 0.5rem; background: var(--accent); color: #000; padding: 0.625rem 1.5rem; border-radius: 999px; text-decoration: none; font-weight: 700; font-size: 0.875rem; margin-top: 1rem; transition: all 0.2s ease; }
        .profile-btn:hover { background: var(--accent-dark); }

        /* Related domains */
        .related-domain { background: var(--bg-glass); padding: 0.75rem 1rem; border-radius: 8px; border-left: 3px solid var(--accent); margin-bottom: 0.5rem; }
        .tag { display: inline-block; background: var(--bg-glass); color: var(--text-secondary); padding: 0.25rem 0.75rem; border-radius: 8px; font-size: 0.8125rem; margin: 0.25rem; border: 1px solid var(--border-glass); }

        /* Footer */
        .footer { text-align: center; padding: 2.5rem 0 2rem; color: var(--text-tertiary); font-size: 0.8125rem; }
        .footer a { color: var(--accent); text-decoration: none; }

        /* Theme toggle */
        .theme-toggle { position: fixed; bottom: 1.25rem; right: 1.25rem; width: 40px; height: 40px; border-radius: 50%; border: 1px solid var(--border-glass); background: var(--bg-surface); color: var(--text-secondary); cursor: pointer; display: flex; align-items: center; justify-content: center; z-index: 100; transition: all 0.2s ease; box-shadow: var(--shadow-card); }
        .theme-toggle:hover { border-color: var(--accent); color: var(--accent); }

        /* Trust card */
        .trust-title { font-size: 1.25rem; font-weight: 700; color: var(--text-primary); margin-bottom: 1.25rem; padding-bottom: 0.5rem; border-bottom: 1px solid var(--border-glass); }
        .trust-card { background: var(--bg-surface); border-radius: 12px; padding: 1.75rem; margin-bottom: 1.5rem; border: 1px solid var(--border-glass); box-shadow: var(--shadow-card); }
        .trust-details { }
        .trust-details > summary { list-style: none; cursor: pointer; }
        .trust-details > summary::-webkit-details-marker { display: none; }
        .trust-header { display: flex; align-items: center; gap: 1.25rem; }
        .trust-details[open] .trust-header { margin-bottom: 1.5rem; }
        .trust-header-text { flex: 1; min-width: 0; }
        .trust-chevron { flex-shrink: 0; color: var(--text-secondary); transition: transform 0.2s ease; }
        .trust-details[open] .trust-chevron { transform: rotate(180deg); }
        .trust-ring-wrap { position: relative; width: 64px; height: 64px; flex-shrink: 0; }
        .trust-ring-score { position: absolute; inset: 0; display: flex; align-items: center; justify-content: center; font-size: 0.875rem; font-weight: 700; }
        .trust-tier-badge { display: inline-flex; align-items: center; gap: 0.375rem; padding: 0.375rem 0.75rem; border-radius: 999px; font-size: 0.75rem; font-weight: 700; border: 1px solid; }
        .trust-score-label { font-size: 0.75rem; color: var(--text-secondary); margin-top: 0.25rem; }
        .trust-dims { display: flex; flex-direction: column; gap: 0.75rem; }
        .trust-group-label { font-size: 0.6875rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; color: var(--text-secondary); margin-bottom: -0.25rem; }
        .trust-dim { display: flex; align-items: center; gap: 0.75rem; }
        .trust-dim-icon { width: 32px; height: 32px; border-radius: 8px; display: flex; align-items: center; justify-content: center; flex-shrink: 0; }
        .trust-dim-label { flex: 1; font-size: 0.875rem; font-weight: 400; color: var(--text-primary); min-width: 0; }
        .trust-dim-detail { font-size: 0.75rem; color: var(--text-secondary); font-weight: 400; margin-left: 0.375rem; }
        .trust-dim-status { flex-shrink: 0; font-size: 0.75rem; font-weight: 400; text-align: right; }
        .trust-footer { font-size: 0.625rem; color: var(--text-tertiary); margin-top: 1rem; padding-top: 0.75rem; border-top: 1px solid var(--border-glass); }

        /* Hours */
        .hours-summary { display: flex; align-items: center; cursor: pointer; user-select: none; gap: 0.75rem; }
        .hours-summary h2 { flex-shrink: 0; }
        .hours-status { font-size: 0.8125rem; color: var(--text-secondary); display: flex; align-items: center; gap: 0.375rem; margin-left: auto; }
        .hours-dot { width: 8px; height: 8px; border-radius: 50%; display: inline-block; flex-shrink: 0; }
        .hours-dot-open { background: #10b981; box-shadow: 0 0 6px rgba(16,185,129,0.5); }
        .hours-dot-closed { background: #ef4444; box-shadow: 0 0 6px rgba(239,68,68,0.4); }
        .hours-table { width: 100%; border-collapse: collapse; }
        .hours-table tr { border-bottom: 1px solid var(--border-glass); }
        .hours-table tr:last-child { border-bottom: none; }
        .hours-table td { padding: 0.625rem 0; font-size: 0.9375rem; }
        .hours-table .hours-day { color: var(--text-primary); font-weight: 400; width: 40%; }
        .hours-table .hours-time { color: var(--text-secondary); text-align: right; }
        .hours-table tr.hours-today .hours-day { color: var(--accent); font-weight: 700; }
        .hours-table tr.hours-today .hours-time { color: var(--text-primary); font-weight: 400; }

        /* Reviews */
        .reviews-hero { display: flex; align-items: center; gap: 1.25rem; margin-bottom: 1rem; }
        .reviews-score { font-size: 3rem; font-weight: 700; color: var(--text-primary); line-height: 1; }
        .reviews-stars { display: flex; gap: 0.125rem; margin-bottom: 0.25rem; }
        .reviews-stars svg { width: 20px; height: 20px; }
        .reviews-count { font-size: 0.875rem; color: var(--text-secondary); }

        /* Social */
        .social-grid { display: flex; flex-wrap: wrap; gap: 0.625rem; }
        .social-link { display: inline-flex; align-items: center; gap: 0.5rem; background: var(--bg-glass); border: 1px solid var(--border-glass); color: var(--text-primary); padding: 0.5rem 1rem; border-radius: 999px; text-decoration: none; font-size: 0.8125rem; font-weight: 400; transition: all 0.15s ease; }
        .social-link:hover { background: var(--bg-elevated); border-color: rgba(255,255,255,0.2); }

        /* Menu */
        .menu-summary { display: flex; align-items: center; cursor: pointer; user-select: none; gap: 0.75rem; }
        .menu-count { font-size: 0.8125rem; color: var(--text-secondary); margin-left: auto; }
        .menu-section-title { font-size: 1rem; font-weight: 700; color: var(--accent); margin: 1.5rem 0 0.75rem; padding-bottom: 0.375rem; border-bottom: 1px solid var(--border-glass); }
        .menu-section-title:first-child { margin-top: 0; }
        .menu-item { display: flex; justify-content: space-between; align-items: center; padding: 0.6rem 0; border-bottom: 1px dotted var(--border-glass); gap: 0.5rem; }
        .menu-item:last-child { border-bottom: none; }
        .menu-item-img { width: 48px; height: 48px; border-radius: 8px; object-fit: cover; flex-shrink: 0; }
        .menu-item-info { flex: 1; min-width: 0; }
        .menu-item-right { display: flex; align-items: center; gap: 0.5rem; flex-shrink: 0; }
        .menu-item-name { color: var(--text-primary); font-size: 0.9375rem; font-weight: 400; }
        .menu-item-desc { color: var(--text-secondary); font-size: 0.8125rem; margin-top: 0.125rem; }
        .menu-item-price { color: var(--accent); font-weight: 700; font-size: 0.9375rem; white-space: nowrap; }
        .menu-add-btn { width: 28px; height: 28px; border-radius: 50%; border: 1.5px solid var(--accent); background: transparent; color: var(--accent); font-size: 1.1rem; font-weight: 700; cursor: pointer; display: flex; align-items: center; justify-content: center; transition: all 0.15s; line-height: 1; }
        .menu-add-btn:hover { background: var(--accent); color: var(--bg-base); }
        .menu-add-btn:active { transform: scale(0.9); }

        /* Cart bar */
        .cart-bar { position: fixed; bottom: 0; left: 0; right: 0; background: var(--bg-elevated); border-top: 1px solid var(--border-glass); padding: 0.75rem 1rem; display: none; align-items: center; justify-content: space-between; z-index: 100; backdrop-filter: blur(12px); }
        .cart-bar.visible { display: flex; }
        .cart-bar-info { color: var(--text-primary); font-size: 0.9rem; font-weight: 400; }
        .cart-bar-info span { color: var(--accent); font-weight: 700; }
        .cart-bar-btn { background: var(--accent); color: var(--bg-base); border: none; padding: 0.6rem 1.5rem; border-radius: 999px; font-size: 0.9rem; font-weight: 700; cursor: pointer; transition: opacity 0.15s; }
        .cart-bar-btn:hover { opacity: 0.9; }

        /* Variant modal */
        .variant-overlay { position: fixed; inset: 0; background: rgba(0,0,0,0.6); z-index: 200; display: none; align-items: flex-end; justify-content: center; }
        .variant-overlay.visible { display: flex; }
        .variant-sheet { background: var(--bg-elevated); border-radius: 28px 28px 0 0; width: 100%; max-width: 480px; padding: 1.5rem; max-height: 70vh; overflow-y: auto; }
        .variant-title { color: var(--text-primary); font-size: 1.1rem; font-weight: 700; margin-bottom: 1rem; }
        .variant-group { margin-bottom: 1rem; }
        .variant-group-label { color: var(--text-secondary); font-size: 0.75rem; font-weight: 700; text-transform: uppercase; letter-spacing: 0.05em; margin-bottom: 0.5rem; }
        .variant-option { display: flex; align-items: center; justify-content: space-between; padding: 0.6rem 0.75rem; border-radius: 8px; border: 1.5px solid var(--border-glass); margin-bottom: 0.4rem; cursor: pointer; transition: all 0.15s; color: var(--text-primary); font-size: 0.9rem; }
        .variant-option:hover { border-color: var(--accent); }
        .variant-option.selected { border-color: var(--accent); background: rgba(14,165,233,0.1); }
        .variant-option-price { color: var(--accent); font-weight: 700; font-size: 0.85rem; }
        .variant-add-btn { width: 100%; padding: 0.75rem; border-radius: 999px; border: none; background: var(--accent); color: var(--bg-base); font-size: 0.95rem; font-weight: 700; cursor: pointer; margin-top: 0.5rem; transition: opacity 0.15s; }
        .variant-add-btn:hover { opacity: 0.9; }
        .variant-add-btn:disabled { opacity: 0.4; cursor: default; }

        /* Cart review */
        .cart-review { display: none; }
        .cart-review.visible { display: block; }
        .cart-review-item { display: flex; align-items: center; justify-content: space-between; padding: 0.5rem 0; border-bottom: 1px dotted var(--border-glass); }
        .cart-review-item:last-child { border-bottom: none; }
        .cart-qty-ctrl { display: flex; align-items: center; gap: 0.4rem; }
        .cart-qty-btn { width: 24px; height: 24px; border-radius: 6px; border: 1px solid rgba(255,255,255,0.2); background: transparent; color: var(--text-primary); font-size: 0.9rem; cursor: pointer; display: flex; align-items: center; justify-content: center; }
        .cart-qty-btn:hover { border-color: var(--accent); color: var(--accent); }
        .cart-qty { color: var(--text-primary); font-size: 0.9rem; font-weight: 700; min-width: 1.5rem; text-align: center; }
    </style>
</head>
<body data-presentation="directory">

        <!-- Act 1: Hero -->
        <div class="hero">
          
          <div class="container">
            <div class="category-chip">Professional Services</div>
            <h1>Youvia</h1>
            <div class="domain">youvia.nl</div>
            <span class="verified-badge">&#10003; Verified by Aztrix</span>
            <p class="hero-headline">This domain serves 5 machine-readable files that make youvia.nl instantly discoverable and shoppable by ChatGPT, Perplexity, Google AI, and 200+ AI agents.</p>
            
            <a href="https://aztrix.io/youvia.nl" class="hero-cta" data-cta="cta_hero" target="_blank">Get in Touch</a>
          </div>
        </div>

        <!-- Discovery Pipeline -->
        <div class="pipeline-section">
          <div class="container">
            <div class="pipeline-header">
                <h2>How AI discovers this business</h2>
                <p>5 files turn a domain into an AI-ready, shoppable storefront</p>
            </div>
            <div class="pipeline">
                <a href="/llms.txt" class="pipeline-step">
                    <div class="pipeline-hook">Who you are</div>
                    <div class="pipeline-file">llms.txt</div>
                    <div class="pipeline-label">LLM Context File</div>
                </a>
                <div class="pipeline-arrow"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14m-6-6l6 6-6 6"/></svg></div>
                <a href="/.well-known/ai.json" class="pipeline-step">
                    <div class="pipeline-hook">What you do</div>
                    <div class="pipeline-file">ai.json</div>
                    <div class="pipeline-label">AI Configuration</div>
                </a>
                <div class="pipeline-arrow"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14m-6-6l6 6-6 6"/></svg></div>
                <a href="/robots.txt" class="pipeline-step">
                    <div class="pipeline-hook">Who can crawl</div>
                    <div class="pipeline-file">robots.txt</div>
                    <div class="pipeline-label">Crawling Rules</div>
                </a>
                <div class="pipeline-arrow"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14m-6-6l6 6-6 6"/></svg></div>
                <a href="/sitemap.xml" class="pipeline-step">
                    <div class="pipeline-hook">What to index</div>
                    <div class="pipeline-file">sitemap.xml</div>
                    <div class="pipeline-label">Site Map</div>
                </a>
                <div class="pipeline-arrow"><svg width="16" height="16" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M5 12h14m-6-6l6 6-6 6"/></svg></div>
                <a href="/.well-known/ucp" class="pipeline-step ucp-step">
                    <div class="pipeline-hook">What's for sale</div>
                    <div class="pipeline-file">ucp</div>
                    <div class="pipeline-label">Commerce Protocol</div>
                </a>
            </div>
          </div>
        </div>

        <div class="container" style="padding-top:0;">
          <div style="display:flex;align-items:center;justify-content:center;gap:0.5rem;padding:0.625rem 1rem;background:var(--bg-glass);border:1px solid var(--border-glass);border-radius:10px;margin-top:1rem;">
            <svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="var(--accent)" stroke-width="2" stroke-linecap="round"><path d="M13 2L3 14h9l-1 8 10-12h-9l1-8z"/></svg>
            <span style="font-size:0.8125rem;color:var(--text-secondary);">AI assistants fetched our discovery files <strong style="color:var(--text-primary);font-variant-numeric:tabular-nums;">73</strong> times in <strong style="color:var(--text-primary);font-variant-numeric:tabular-nums;">1</strong> day &middot; first crawl <strong style="color:var(--accent);">31m</strong> after going live</span>
          </div>
        </div>

        <div class="container" style="padding-top:2rem;">

        <!-- Act 2: Business Profile -->
        <div class="card">

            <!-- About (from llms.txt) -->
            <div class="section">
                <div class="section-source">From llms.txt</div>
                <h2>About</h2>
                <p style="color:var(--text-secondary);font-size:1rem;line-height:1.7;">Youvia is a Dutch online discovery and marketing platform that helps small and medium businesses get found across search engines, business directories, and AI assistants. Successor to the Gouden Gids network, Youvia provides listing management, online visibility tools, and partner integrations for the Dutch SME market.</p>
            </div>

            <!-- For Sale -->
            

            <!-- Key info grid (from ai.json) -->
            <div class="section">
                <div class="section-source">From ai.json</div>
                <div class="info-grid">
                    <div class="info-item"><h3>Category</h3><p>Professional Services</p></div>
                    
                    <div class="info-item"><h3>Status</h3><p>Active</p></div>
                </div>
            </div>

            <!-- Category-specific CTA section -->
            <div class="section"><h2>Get in Touch</h2><div class="cta-panel"><a href="https://youvia.nl" class="cta-btn cta-primary" data-cta="website" target="_blank">Our Website</a></div></div>

            <!-- Opening Hours (from ai.json) -->
            

            <!-- Inline Menu (from sitemap.xml / ucp) -->
            <div class="section-source">From sitemap.xml</div><div class="section" id="menu-section" data-listing-id="5d259df7-c869-44ff-b23e-fde0784ee768">
    <div class="menu-summary" onclick="var m=document.getElementById('menu-items'),a=document.getElementById('menu-chevron');if(m.style.display==='none'){m.style.display='';a.style.transform='rotate(0)'}else{m.style.display='none';a.style.transform='rotate(-90deg)'}">
      <h2 style="border:0;margin:0;padding:0;">Menu</h2>
      <span class="menu-count">8 items</span>
      <svg id="menu-chevron" style="width:18px;height:18px;color:var(--text-tertiary);transition:transform 0.2s;transform:rotate(-90deg);flex-shrink:0;" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2"><path d="M6 9l6 6 6-6"/></svg>
    </div>
    <div id="menu-items" style="display:none;margin-top:1rem;">
      <h4 class="menu-section-title">Menu</h4>
<div class="menu-item" data-item-id="16fb50d6-2135-44c2-a31b-8e7acdcfad6f">
    <img src="https://www.youvia.nl/wp-content/uploads/2025/02/Jouw-bedrijf-op-goudengids-Youvia.jpg" alt="" class="menu-item-img" loading="lazy">
    <div class="menu-item-info">
      <div class="menu-item-name">Gouden Gids</div>
      <div class="menu-item-desc">Hoe hoger de ranking hoe beter je gevonden wordt door jouw koopklare klanten.</div>
    </div>
    <div class="menu-item-right">
      <div class="menu-item-price">€19.00 – €3,084.00</div>
      
    </div>
  </div>
<div class="menu-item" data-item-id="f56e3c43-d738-4c0d-b0e3-6a5df61909cc">
    <img src="https://www.youvia.nl/wp-content/uploads/2025/07/2025-04-09-Youvia-102.jpg" alt="" class="menu-item-img" loading="lazy">
    <div class="menu-item-info">
      <div class="menu-item-name">Webshop – Unlimited</div>
      <div class="menu-item-desc">Met Ecommerce+ Professional kun je zelfstandig een onbeperkt aantal producten toevoegen voor professionele e-commerce.</div>
    </div>
    <div class="menu-item-right">
      <div class="menu-item-price">€103.00</div>
      
    </div>
  </div>
<div class="menu-item" data-item-id="1f6e1e43-d6e7-40b5-b9c4-8811c873b799">
    <img src="https://www.youvia.nl/wp-content/uploads/2025/07/2025-04-09-Youvia-94.jpg" alt="" class="menu-item-img" loading="lazy">
    <div class="menu-item-info">
      <div class="menu-item-name">Webshop – Professional</div>
      <div class="menu-item-desc">Optimaliseer conversies met Ecommerce+ landing page tot 250 producten zelfstandig op te voeren.</div>
    </div>
    <div class="menu-item-right">
      <div class="menu-item-price">€60.00</div>
      
    </div>
  </div>
<div class="menu-item" data-item-id="0e2a7a00-6136-4542-bdc0-6f19ca3be731">
    <img src="https://www.youvia.nl/wp-content/uploads/2025/07/2025-04-09-Youvia-86.jpg" alt="" class="menu-item-img" loading="lazy">
    <div class="menu-item-info">
      <div class="menu-item-name">Webshop – Essential</div>
      <div class="menu-item-desc">Essentiële e-commerce oplossing met Ecommerce+ Essential tot 100 producten zelfstandig op te voeren.</div>
    </div>
    <div class="menu-item-right">
      <div class="menu-item-price">€47.00</div>
      
    </div>
  </div>
<div class="menu-item" data-item-id="261a6deb-126d-469e-b9ab-077244e45639">
    <img src="https://www.youvia.nl/wp-content/uploads/2025/07/2025-04-09-Youvia-93.jpg" alt="" class="menu-item-img" loading="lazy">
    <div class="menu-item-info">
      <div class="menu-item-name">NetSync</div>
      <div class="menu-item-desc">Jouw online aanwezigheid, bereikbaarheid en vindbaarheid op 20 platformen door middel van social media/reviews/online locatie management en concurrentie analyse.</div>
    </div>
    <div class="menu-item-right">
      <div class="menu-item-price">€67.00</div>
      
    </div>
  </div>
<div class="menu-item" data-item-id="3220324d-2e97-48cf-a0fb-9310e47697c0">
    <img src="https://www.youvia.nl/wp-content/uploads/2025/02/Online-webcheck-Youvia.jpg" alt="" class="menu-item-img" loading="lazy">
    <div class="menu-item-info">
      <div class="menu-item-name">Webcheck</div>
      <div class="menu-item-desc">Inzicht in je websiteprestaties, knelpunten, verbeterkansen en concurrentie.</div>
    </div>
    <div class="menu-item-right">
      <div class="menu-item-price">€10.00</div>
      
    </div>
  </div>
<div class="menu-item" data-item-id="a6c820a3-0134-4ac8-b74b-b5e30d93123f">
    <img src="https://www.youvia.nl/wp-content/uploads/2025/06/2025-04-09-Youvia-18-scaled-e1750945852222.jpg" alt="" class="menu-item-img" loading="lazy">
    <div class="menu-item-info">
      <div class="menu-item-name">Website – Basic</div>
      <div class="menu-item-desc">Bouw jouw basis website met onze expertise.</div>
    </div>
    <div class="menu-item-right">
      <div class="menu-item-price">€34.00</div>
      
    </div>
  </div>
<div class="menu-item" data-item-id="31fc0d18-f05e-4ec7-989c-6ff72f3c15cc">
    <img src="https://www.youvia.nl/wp-content/uploads/2025/06/2025-04-09-Youvia-18-scaled-e1750945852222.jpg" alt="" class="menu-item-img" loading="lazy">
    <div class="menu-item-info">
      <div class="menu-item-name">Website – Advanced</div>
      <div class="menu-item-desc">3 Jaar websitebeheer, Gouden Gids-vermelding, Webcheck voor gebruiksvriendelijke optimalisatie, en met OLM Start een consistente online aanwezigheid en bereikbaarheid.</div>
    </div>
    <div class="menu-item-right">
      <div class="menu-item-price">€44.00</div>
      
    </div>
  </div>
    </div>
  </div>
  

            <!-- Reviews -->
            

            <!-- Social Links (from ai.json) -->
            

            <!-- Location Map -->
            

            <!-- Technologies -->
            

            <!-- Certifications -->
            

            <!-- Related domains -->
            

        </div>

        <!-- API Access -->
        <div class="card">
            <div class="section" style="margin-bottom:0;">
                <h2>API Access</h2>
                <div class="info-item">
                    <h3>Domain Lookup</h3>
                    <p style="font-family:'JetBrains Mono','Fira Code',monospace;font-size:0.8125rem;word-break:break-all;">
                        <a href="https://aztrix.io/api/domains/lookup?domain=youvia.nl" style="color:var(--accent);text-decoration:none;" target="_blank">https://aztrix.io/api/domains/lookup?domain=youvia.nl</a>
                    </p>
                </div>
            </div>
        </div>

        <!-- Act 3: Verification Trust Card -->
        

        <div class="footer">
            <p style="margin-bottom:0.75rem;"><a href="/graph" data-cta="discovery_graph" style="display:inline-flex;align-items:center;gap:0.375rem;background:var(--bg-surface);color:#10b981;padding:0.5rem 1rem;border-radius:999px;font-size:0.8125rem;font-weight:600;text-decoration:none;border:1px solid var(--border-glass);"><svg width="14" height="14" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round"><circle cx="12" cy="12" r="3"/><line x1="12" y1="5" x2="12" y2="3"/><line x1="17" y1="7" x2="19" y2="5"/><line x1="19" y1="12" x2="21" y2="12"/><line x1="17" y1="17" x2="19" y2="19"/><line x1="12" y1="19" x2="12" y2="21"/><line x1="7" y1="17" x2="5" y2="19"/><line x1="5" y1="12" x2="3" y2="12"/><line x1="7" y1="7" x2="5" y2="5"/></svg>Discovery Graph</a> <a href="/llms.txt?src=alt" data-cta="ai_version" style="display:inline-flex;align-items:center;gap:0.375rem;background:var(--bg-surface);color:var(--text-secondary);padding:0.5rem 1rem;border-radius:999px;font-size:0.8125rem;font-weight:600;text-decoration:none;border:1px solid var(--border-glass);margin-left:0.5rem;" title="Same site, formatted for AI assistants and crawlers">AI version &nearr;</a></p>
            <p>Powered by <a href="https://aztrix.io" target="_blank">Aztrix</a> &mdash; Online Discovery Platform</p>
            <p style="margin-top:0.375rem;">Last verified: 2026-05-11</p>
            <p style="margin-top:1rem;"><a href="https://aztrix.io/en/register">Register on Aztrix to manage this domain</a></p>
            <p style="margin-top:0.375rem;"><a href="/login" style="color:var(--accent);">Manage this business</a></p>
        </div>

        </div>

<button class="theme-toggle" id="theme-toggle" aria-label="Toggle theme">
  <svg id="theme-icon-sun" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round">
    <circle cx="12" cy="12" r="5"/><line x1="12" y1="1" x2="12" y2="3"/><line x1="12" y1="21" x2="12" y2="23"/><line x1="4.22" y1="4.22" x2="5.64" y2="5.64"/><line x1="18.36" y1="18.36" x2="19.78" y2="19.78"/><line x1="1" y1="12" x2="3" y2="12"/><line x1="21" y1="12" x2="23" y2="12"/><line x1="4.22" y1="19.78" x2="5.64" y2="18.36"/><line x1="18.36" y1="5.64" x2="19.78" y2="4.22"/>
  </svg>
  <svg id="theme-icon-moon" width="18" height="18" viewBox="0 0 24 24" fill="none" stroke="currentColor" stroke-width="2" stroke-linecap="round" style="display:none">
    <path d="M21 12.79A9 9 0 1111.21 3 7 7 0 0021 12.79z"/>
  </svg>
</button>

<script>
(function(){
  var d="youvia.nl";
  var u="https://nnaayfkzvllcnpcnaizx.supabase.co/functions/v1/landing-page-event";
  // Capture ?src= and utm_* on first hit, cache for the session, forward on
  // every CTA. Canonical URL is left untouched in the browser bar.
  var s="";
  var utm={};
  var UK=["utm_source","utm_medium","utm_campaign","utm_content","utm_term"];
  try{
    var qp=new URL(location.href).searchParams;
    var q=qp.get("src");
    if(q){s=q.slice(0,32);try{sessionStorage.setItem("aztrix_src",s)}catch(e){}}
    else{try{s=sessionStorage.getItem("aztrix_src")||""}catch(e){}}
    var hit=false;
    for(var i=0;i<UK.length;i++){var v=qp.get(UK[i]);if(v){utm[UK[i]]=v.slice(0,64);hit=true}}
    if(hit){try{sessionStorage.setItem("aztrix_utm",JSON.stringify(utm))}catch(e){}}
    else{try{utm=JSON.parse(sessionStorage.getItem("aztrix_utm")||"{}")}catch(e){utm={}}}
  }catch(e){}
  document.addEventListener("click",function(e){
    var a=e.target.closest("[data-cta]");
    if(!a)return;
    var t=a.getAttribute("data-cta");
    if(!t)return;
    var p={domain:d,event:t};if(s)p.source=s;
    for(var j=0;j<UK.length;j++){if(utm[UK[j]])p[UK[j]]=utm[UK[j]]}
    var b=JSON.stringify(p);
    if(navigator.sendBeacon){navigator.sendBeacon(u,new Blob([b],{type:"application/json"}))}
    else{fetch(u,{method:"POST",body:b,headers:{"Content-Type":"application/json"},keepalive:true}).catch(function(){})}
  });
})();
(function(){
  var k=["mon","tue","wed","thu","fri","sat","sun"];
  var d=new Date().getDay();
  var t=k[d===0?6:d-1];
  var r=document.querySelector('tr[data-day="'+t+'"]');
  if(r)r.classList.add("hours-today");
})();
(function(){
  var DARK={
    "--bg-base":"#0A0A0A","--bg-surface":"#111827","--bg-elevated":"#1F2937",
    "--bg-glass":"rgba(255,255,255,0.05)","--border-glass":"rgba(255,255,255,0.10)",
    "--text-primary":"#F8FAFC","--text-secondary":"#94A3B8","--text-tertiary":"#666666",
    "--icon-bg-muted":"rgba(255,255,255,0.06)","--shadow-card":"none"
  };
  var LIGHT={
    "--bg-base":"#F9F9F9","--bg-surface":"#FFFFFF","--bg-elevated":"#F3F4F6",
    "--bg-glass":"rgba(0,0,0,0.03)","--border-glass":"rgba(0,0,0,0.08)",
    "--text-primary":"#1E293B","--text-secondary":"#64748B","--text-tertiary":"#94A3B8",
    "--icon-bg-muted":"rgba(0,0,0,0.04)","--shadow-card":"0 1px 3px rgba(0,0,0,0.08)"
  };
  var key="aztrix-theme-"+"youvia.nl";
  var def="dark";
  var cur=localStorage.getItem(key)||def;
  var sun=document.getElementById("theme-icon-sun");
  var moon=document.getElementById("theme-icon-moon");
  function apply(theme){
    var vars=theme==="light"?LIGHT:DARK;
    var root=document.documentElement;
    for(var p in vars)root.style.setProperty(p,vars[p]);
    sun.style.display=theme==="light"?"none":"";
    moon.style.display=theme==="light"?"":"none";
    localStorage.setItem(key,theme);
    cur=theme;
  }
  if(cur!==def)apply(cur);
  document.getElementById("theme-toggle").addEventListener("click",function(){
    apply(cur==="light"?"dark":"light");
  });
})();
</script>

<!-- Cart bar -->
<div class="cart-bar" id="cart-bar">
  <div class="cart-bar-info"><span id="cart-count">0</span> items &middot; <span id="cart-total">&euro;0.00</span></div>
  <button class="cart-bar-btn" id="cart-view-btn">View order</button>
</div>

<!-- Variant picker modal -->
<div class="variant-overlay" id="variant-overlay">
  <div class="variant-sheet">
    <div class="variant-title" id="variant-title"></div>
    <div id="variant-options"></div>
    <button class="variant-add-btn" id="variant-add-btn" disabled>Add to order</button>
  </div>
</div>

<!-- Cart review modal -->
<div class="variant-overlay" id="cart-overlay">
  <div class="variant-sheet">
    <div class="variant-title">Your order</div>
    <div id="cart-items"></div>
    <div style="display:flex;justify-content:space-between;align-items:center;padding:0.75rem 0;border-top:1px solid var(--border-glass);margin-top:0.5rem;">
      <div style="color:var(--text-primary);font-weight:700;">Total</div>
      <div style="color:var(--accent);font-weight:700;font-size:1.1rem;" id="cart-review-total"></div>
    </div>
    <button class="variant-add-btn" id="cart-checkout-btn">Place order</button>
    <button class="variant-add-btn" id="cart-close-btn" style="background:transparent;color:var(--text-secondary);border:1px solid var(--border-glass);margin-top:0.5rem;">Continue browsing</button>
  </div>
</div>

<script>
(function(){
  var catalog=window.__menuCatalog||[];
  if(!catalog.length)return;
  var catalogMap={};
  catalog.forEach(function(i){catalogMap[i.id]=i});

  // Cart state
  var cart=JSON.parse(localStorage.getItem('aztrix_cart_'+location.hostname)||'[]');
  var listingId=document.getElementById('menu-section')?.getAttribute('data-listing-id')||'';

  function saveCart(){localStorage.setItem('aztrix_cart_'+location.hostname,JSON.stringify(cart))}

  function updateBar(){
    var count=0,total=0;
    cart.forEach(function(c){count+=c.qty;total+=c.price*c.qty});
    document.getElementById('cart-count').textContent=count;
    document.getElementById('cart-total').textContent=catalog[0]?.currency==='USD'?'$'+total.toFixed(2):'\u20AC'+total.toFixed(2);
    document.getElementById('cart-bar').classList.toggle('visible',count>0);
  }

  function addToCart(itemId,variantId,variantLabel,price){
    var key=itemId+(variantId?':'+variantId:'');
    var existing=cart.find(function(c){return c.key===key});
    if(existing){existing.qty++}
    else{
      var item=catalogMap[itemId];
      cart.push({key:key,itemId:itemId,variantId:variantId||null,title:item.title+(variantLabel?' ('+variantLabel+')':''),price:price,qty:1,currency:item.currency});
    }
    saveCart();updateBar();
  }

  function removeFromCart(key){
    var idx=cart.findIndex(function(c){return c.key===key});
    if(idx===-1)return;
    if(cart[idx].qty>1)cart[idx].qty--;
    else cart.splice(idx,1);
    saveCart();updateBar();renderCartReview();
  }

  function addQty(key){
    var item=cart.find(function(c){return c.key===key});
    if(item)item.qty++;
    saveCart();updateBar();renderCartReview();
  }

  // Variant picker
  var pickerItemId=null;
  var pickerSelection={};

  function showVariantPicker(itemId){
    var item=catalogMap[itemId];
    if(!item||!item.options||!item.options.length)return;
    pickerItemId=itemId;
    pickerSelection={};
    document.getElementById('variant-title').textContent=item.title;
    var html='';
    item.options.forEach(function(opt){
      html+='<div class="variant-group"><div class="variant-group-label">'+esc(opt.name)+'</div>';
      (opt.values||[]).forEach(function(val){
        var v=item.variants?.find(function(vr){return vr.options?.some(function(o){return o.name===opt.name&&o.value===val})});
        var priceStr=v?('\u20AC'+Number(v.price).toFixed(2)):'';
        html+='<div class="variant-option" data-opt="'+esc(opt.name)+'" data-val="'+esc(val)+'">'+esc(val)+(priceStr?'<span class="variant-option-price">'+priceStr+'</span>':'')+'</div>';
      });
      html+='</div>';
    });
    document.getElementById('variant-options').innerHTML=html;
    document.getElementById('variant-add-btn').disabled=true;
    document.getElementById('variant-overlay').classList.add('visible');
  }

  function esc(s){return String(s).replace(/&/g,'&amp;').replace(/</g,'&lt;').replace(/>/g,'&gt;').replace(/"/g,'&quot;')}

  document.getElementById('variant-options')?.addEventListener('click',function(e){
    var opt=e.target.closest('.variant-option');
    if(!opt)return;
    var name=opt.getAttribute('data-opt');
    var val=opt.getAttribute('data-val');
    pickerSelection[name]=val;
    // Highlight selected
    opt.parentElement.querySelectorAll('.variant-option').forEach(function(o){o.classList.remove('selected')});
    opt.classList.add('selected');
    // Enable add button if all options selected
    var item=catalogMap[pickerItemId];
    var allSelected=item.options.every(function(o){return pickerSelection[o.name]});
    document.getElementById('variant-add-btn').disabled=!allSelected;
  });

  document.getElementById('variant-add-btn')?.addEventListener('click',function(){
    var item=catalogMap[pickerItemId];
    if(!item)return;
    // Find matching variant by selected options
    var variant=null;
    if(item.variants){
      variant=item.variants.find(function(v){
        return v.options?.every(function(o){return pickerSelection[o.name]===o.value});
      });
    }
    var price=variant?variant.price:item.price;
    var variantId=variant?.id||null;
    var label=Object.values(pickerSelection).join(', ');
    addToCart(pickerItemId,variantId,label,price);
    document.getElementById('variant-overlay').classList.remove('visible');
  });

  document.getElementById('variant-overlay')?.addEventListener('click',function(e){
    if(e.target===this)this.classList.remove('visible');
  });

  // Add to order buttons
  document.addEventListener('click',function(e){
    var btn=e.target.closest('.menu-add-btn');
    if(!btn)return;
    var id=btn.getAttribute('data-add');
    if(btn.getAttribute('data-has-variants')){
      showVariantPicker(id);
    }else{
      var item=catalogMap[id];
      if(item)addToCart(id,null,null,item.price);
    }
  });

  // Cart review
  function renderCartReview(){
    var html='';
    cart.forEach(function(c){
      html+='<div class="cart-review-item"><div style="flex:1;min-width:0"><div class="menu-item-name" style="font-size:0.85rem">'+esc(c.title)+'</div><div style="color:var(--accent);font-size:0.8rem;font-weight:700">\u20AC'+Number(c.price*c.qty).toFixed(2)+'</div></div>';
      html+='<div class="cart-qty-ctrl"><button class="cart-qty-btn" data-minus="'+esc(c.key)+'">&minus;</button><span class="cart-qty">'+c.qty+'</span><button class="cart-qty-btn" data-plus="'+esc(c.key)+'">+</button></div></div>';
    });
    document.getElementById('cart-items').innerHTML=html;
    var total=0;cart.forEach(function(c){total+=c.price*c.qty});
    document.getElementById('cart-review-total').textContent='\u20AC'+total.toFixed(2);
  }

  document.getElementById('cart-view-btn')?.addEventListener('click',function(){
    renderCartReview();
    document.getElementById('cart-overlay').classList.add('visible');
  });

  document.getElementById('cart-items')?.addEventListener('click',function(e){
    var minus=e.target.closest('[data-minus]');
    var plus=e.target.closest('[data-plus]');
    if(minus)removeFromCart(minus.getAttribute('data-minus'));
    if(plus)addQty(plus.getAttribute('data-plus'));
  });

  document.getElementById('cart-close-btn')?.addEventListener('click',function(){
    document.getElementById('cart-overlay').classList.remove('visible');
  });

  document.getElementById('cart-overlay')?.addEventListener('click',function(e){
    if(e.target===this)this.classList.remove('visible');
  });

  document.getElementById('cart-checkout-btn')?.addEventListener('click',function(){
    if(!cart.length)return;
    // Build checkout URL with cart data
    var params=new URLSearchParams();
    params.set('merchant_id',listingId);
    params.set('items',JSON.stringify(cart.map(function(c){return{item_id:c.itemId,variant_id:c.variantId,quantity:c.qty}})));
    window.location.href='/checkout?'+params.toString();
  });

  // Clear cart if redirected from cancel
  if(new URLSearchParams(location.search).get('clear_cart')==='1'){
    cart=[];saveCart();
    history.replaceState(null,'',location.pathname);
  }

  updateBar();
})();
</script>
</body>
</html>