{"id":25092,"date":"2026-10-01T14:57:23","date_gmt":"2026-10-01T12:57:23","guid":{"rendered":"https:\/\/visitvendsyssel.dk\/?page_id=25092"},"modified":"2026-10-01T16:43:00","modified_gmt":"2026-10-01T14:43:00","slug":"program-aalbaek-julemarked-2026","status":"publish","type":"page","link":"https:\/\/visitvendsyssel.dk\/de\/program-aalbaek-julemarked-2026\/","title":{"rendered":"Programm Aalb\u00e6k Weihnachtsmarkt 2026"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"25092\" class=\"elementor elementor-25092\" data-elementor-post-type=\"page\">\n\t\t\t\t<div data-particle_enable=\"false\" data-particle-mobile-disabled=\"false\" class=\"elementor-element elementor-element-484a722 e-flex e-con-boxed e-con e-parent\" data-id=\"484a722\" 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-331af00 elementor-widget__width-inherit elementor-widget elementor-widget-html\" data-id=\"331af00\" 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<!--\n  AALB\u00c6K JULEMARKED 2026 \u2013 SELVST\u00c6NDIG PROGRAMSIDE\n\n  Inds\u00e6t hele filens indhold i \u00e9t Elementor HTML-element p\u00e5:\n  https:\/\/visitvendsyssel.dk\/aalbaek-julemarked-program\/\n\n  Siden henter automatisk de aktuelle Aalb\u00e6k-juleevents fra Eventsyssel.\n  Den eksisterende Meta-kampagne skal fortsat pege p\u00e5 hovedsiden:\n  https:\/\/visitvendsyssel.dk\/aalbaek-julemarked-2026\/\n-->\n\n<style>\n  #aalbaek-programsite {\n    --ap-ink: #142621;\n    --ap-green: #0b4d42;\n    --ap-green-dark: #063a32;\n    --ap-wine: #722436;\n    --ap-gold: #d5a34a;\n    --ap-cream: #f7f2e8;\n    --ap-paper: #fffdf8;\n    --ap-white: #ffffff;\n    --ap-muted: #60706c;\n    --ap-line: rgba(20, 38, 33, 0.14);\n    --ap-shadow: 0 18px 50px rgba(13, 44, 37, 0.12);\n    width: 100vw;\n    max-width: 100vw;\n    margin-right: calc(50% - 50vw);\n    margin-left: calc(50% - 50vw);\n    overflow: hidden;\n    color: var(--ap-ink);\n    background: var(--ap-cream);\n    font-family: Arial, Helvetica, sans-serif;\n  }\n\n  #aalbaek-programsite,\n  #aalbaek-programsite *,\n  #aalbaek-programsite *::before,\n  #aalbaek-programsite *::after {\n    box-sizing: border-box;\n  }\n\n  #aalbaek-programsite a {\n    color: inherit;\n  }\n\n  #aalbaek-programsite button,\n  #aalbaek-programsite a {\n    -webkit-tap-highlight-color: transparent;\n  }\n\n  #aalbaek-programsite .ap-shell {\n    width: min(1180px, calc(100% - 56px));\n    margin: 0 auto;\n  }\n\n  \/* HERO *\/\n  #aalbaek-programsite .ap-hero {\n    position: relative;\n    min-height: 600px;\n    display: flex;\n    flex-direction: column;\n    isolation: isolate;\n    color: var(--ap-white);\n    background:\n      linear-gradient(90deg, rgba(4, 30, 25, 0.92) 0%, rgba(4, 30, 25, 0.70) 48%, rgba(4, 30, 25, 0.22) 100%),\n      linear-gradient(0deg, rgba(4, 30, 25, 0.66) 0%, rgba(4, 30, 25, 0.02) 68%),\n      url(\"https:\/\/visitvendsyssel.dk\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-14.-sep.-2026-13.39.01.png\") center 54% \/ cover no-repeat;\n  }\n\n  #aalbaek-programsite .ap-hero::after {\n    position: absolute;\n    inset: auto 0 0;\n    z-index: -1;\n    height: 180px;\n    background: linear-gradient(0deg, rgba(4, 30, 25, 0.48), transparent);\n    content: \"\";\n  }\n\n  #aalbaek-programsite .ap-nav {\n    min-height: 104px;\n    display: flex;\n    align-items: center;\n    justify-content: space-between;\n    gap: 24px;\n    border-bottom: 1px solid rgba(255, 255, 255, 0.2);\n  }\n\n  #aalbaek-programsite .ap-logo {\n    display: block;\n    width: 178px;\n    height: auto;\n  }\n\n  #aalbaek-programsite .ap-back {\n    min-height: 46px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 10px;\n    padding: 0 20px;\n    border: 1px solid rgba(255, 255, 255, 0.56);\n    border-radius: 999px;\n    color: var(--ap-white) !important;\n    font-size: 13px;\n    font-weight: 700;\n    letter-spacing: 0.3px;\n    text-decoration: none !important;\n    transition: background-color 180ms ease, border-color 180ms ease, transform 180ms ease;\n  }\n\n  #aalbaek-programsite .ap-back:hover,\n  #aalbaek-programsite .ap-back:focus-visible {\n    border-color: var(--ap-white);\n    background: rgba(255, 255, 255, 0.14);\n    transform: translateY(-1px);\n  }\n\n  #aalbaek-programsite .ap-back-arrow {\n    font-size: 18px;\n    line-height: 1;\n  }\n\n  #aalbaek-programsite .ap-hero-content {\n    flex: 1;\n    display: flex;\n    align-items: flex-end;\n    padding-top: 88px;\n    padding-bottom: 76px;\n  }\n\n  #aalbaek-programsite .ap-hero-copy {\n    width: min(820px, 100%);\n  }\n\n  #aalbaek-programsite .ap-eyebrow {\n    display: flex;\n    align-items: center;\n    gap: 13px;\n    margin: 0 0 18px;\n    color: #f1c66f;\n    font-size: 12px;\n    font-weight: 800;\n    letter-spacing: 2.2px;\n    line-height: 1;\n    text-transform: uppercase;\n  }\n\n  #aalbaek-programsite .ap-eyebrow::before {\n    width: 42px;\n    height: 2px;\n    flex: 0 0 auto;\n    background: currentColor;\n    content: \"\";\n  }\n\n  #aalbaek-programsite .ap-title {\n    max-width: 820px;\n    margin: 0 !important;\n    padding: 0 !important;\n    color: var(--ap-white) !important;\n    font-family: Georgia, \"Times New Roman\", serif !important;\n    font-size: clamp(58px, 7vw, 94px) !important;\n    font-weight: 400 !important;\n    letter-spacing: -3px !important;\n    line-height: 0.96 !important;\n  }\n\n  #aalbaek-programsite .ap-lead {\n    max-width: 690px;\n    margin: 25px 0 0 !important;\n    color: rgba(255, 255, 255, 0.91) !important;\n    font-size: 18px !important;\n    line-height: 1.65 !important;\n  }\n\n  #aalbaek-programsite .ap-facts {\n    display: flex;\n    flex-wrap: wrap;\n    gap: 10px;\n    margin-top: 30px;\n  }\n\n  #aalbaek-programsite .ap-fact {\n    min-height: 40px;\n    display: inline-flex;\n    align-items: center;\n    gap: 9px;\n    padding: 0 14px;\n    border: 1px solid rgba(255, 255, 255, 0.25);\n    border-radius: 999px;\n    color: rgba(255, 255, 255, 0.94);\n    background: rgba(5, 42, 35, 0.42);\n    backdrop-filter: blur(5px);\n    font-size: 13px;\n    font-weight: 700;\n  }\n\n  #aalbaek-programsite .ap-fact-icon {\n    color: #f1c66f;\n    font-size: 15px;\n  }\n\n  \/* PROGRAM *\/\n  #aalbaek-programsite .ap-program {\n    padding: 82px 0 94px;\n  }\n\n  #aalbaek-programsite .ap-program-head {\n    display: grid;\n    grid-template-columns: minmax(0, 0.8fr) minmax(320px, 1.2fr);\n    gap: 70px;\n    align-items: end;\n    margin-bottom: 38px;\n  }\n\n  #aalbaek-programsite .ap-section-label {\n    display: flex;\n    align-items: center;\n    gap: 11px;\n    margin: 0 0 14px;\n    color: var(--ap-wine);\n    font-size: 11px;\n    font-weight: 800;\n    letter-spacing: 2px;\n    text-transform: uppercase;\n  }\n\n  #aalbaek-programsite .ap-section-label::before {\n    width: 34px;\n    height: 2px;\n    background: var(--ap-gold);\n    content: \"\";\n  }\n\n  #aalbaek-programsite .ap-heading {\n    margin: 0 !important;\n    color: var(--ap-ink) !important;\n    font-family: Georgia, \"Times New Roman\", serif !important;\n    font-size: clamp(46px, 5vw, 68px) !important;\n    font-weight: 400 !important;\n    letter-spacing: -2px !important;\n    line-height: 1 !important;\n  }\n\n  #aalbaek-programsite .ap-intro {\n    margin: 0 !important;\n    color: var(--ap-muted) !important;\n    font-size: 17px !important;\n    line-height: 1.7 !important;\n  }\n\n  #aalbaek-programsite .ap-filter-wrap {\n    position: sticky;\n    top: 0;\n    z-index: 20;\n    margin: 0 0 46px;\n    padding: 13px;\n    border: 1px solid var(--ap-line);\n    border-radius: 18px;\n    background: rgba(255, 253, 248, 0.94);\n    box-shadow: 0 8px 30px rgba(20, 38, 33, 0.08);\n    backdrop-filter: blur(12px);\n  }\n\n  #aalbaek-programsite .ap-filters {\n    display: flex;\n    gap: 9px;\n    overflow-x: auto;\n    padding-bottom: 1px;\n    scrollbar-width: thin;\n    scrollbar-color: rgba(11, 77, 66, 0.35) transparent;\n  }\n\n  #aalbaek-programsite .ap-filter {\n    min-height: 46px;\n    flex: 0 0 auto;\n    padding: 0 17px;\n    border: 1px solid var(--ap-line);\n    border-radius: 999px;\n    color: var(--ap-ink);\n    background: var(--ap-white);\n    cursor: pointer;\n    font-family: Arial, Helvetica, sans-serif;\n    font-size: 13px;\n    font-weight: 800;\n    white-space: nowrap;\n    transition: color 180ms ease, background-color 180ms ease, border-color 180ms ease, transform 180ms ease;\n  }\n\n  #aalbaek-programsite .ap-filter:hover,\n  #aalbaek-programsite .ap-filter:focus-visible {\n    border-color: rgba(11, 77, 66, 0.48);\n    transform: translateY(-1px);\n  }\n\n  #aalbaek-programsite .ap-filter[aria-pressed=\"true\"] {\n    border-color: var(--ap-green);\n    color: var(--ap-white);\n    background: var(--ap-green);\n  }\n\n  #aalbaek-programsite .ap-status {\n    min-height: 23px;\n    margin: -24px 0 31px;\n    color: var(--ap-muted);\n    font-size: 13px;\n    font-weight: 700;\n  }\n\n  #aalbaek-programsite .ap-days {\n    display: grid;\n    gap: 54px;\n  }\n\n  #aalbaek-programsite .ap-day {\n    scroll-margin-top: 92px;\n  }\n\n  #aalbaek-programsite .ap-day-head {\n    display: grid;\n    grid-template-columns: 112px minmax(0, 1fr);\n    gap: 24px;\n    align-items: center;\n    margin-bottom: 20px;\n    padding-bottom: 18px;\n    border-bottom: 1px solid var(--ap-line);\n  }\n\n  #aalbaek-programsite .ap-date-box {\n    min-height: 92px;\n    display: flex;\n    align-items: center;\n    justify-content: center;\n    gap: 8px;\n    padding: 13px;\n    border-radius: 14px;\n    color: var(--ap-white);\n    background: var(--ap-wine);\n    box-shadow: 0 10px 24px rgba(114, 36, 54, 0.16);\n  }\n\n  #aalbaek-programsite .ap-date-number {\n    font-family: Georgia, \"Times New Roman\", serif;\n    font-size: 43px;\n    line-height: 1;\n  }\n\n  #aalbaek-programsite .ap-date-month {\n    font-size: 10px;\n    font-weight: 800;\n    letter-spacing: 1.5px;\n    line-height: 1.25;\n    text-transform: uppercase;\n  }\n\n  #aalbaek-programsite .ap-day-name {\n    margin: 0 !important;\n    color: var(--ap-ink) !important;\n    font-family: Georgia, \"Times New Roman\", serif !important;\n    font-size: 34px !important;\n    font-weight: 400 !important;\n    line-height: 1.1 !important;\n  }\n\n  #aalbaek-programsite .ap-day-count {\n    margin: 7px 0 0 !important;\n    color: var(--ap-muted) !important;\n    font-size: 13px !important;\n    font-weight: 700;\n  }\n\n  #aalbaek-programsite .ap-card-grid {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 22px;\n  }\n\n  #aalbaek-programsite .ap-card {\n    min-width: 0;\n    display: grid;\n    grid-template-columns: 180px minmax(0, 1fr);\n    overflow: hidden;\n    border: 1px solid var(--ap-line);\n    border-radius: 17px;\n    background: var(--ap-paper);\n    box-shadow: 0 12px 32px rgba(20, 38, 33, 0.08);\n    transition: box-shadow 180ms ease, transform 180ms ease, border-color 180ms ease;\n  }\n\n  #aalbaek-programsite .ap-card:hover {\n    border-color: rgba(11, 77, 66, 0.34);\n    box-shadow: var(--ap-shadow);\n    transform: translateY(-3px);\n  }\n\n  #aalbaek-programsite .ap-card-media {\n    position: relative;\n    min-height: 230px;\n    overflow: hidden;\n    background: linear-gradient(145deg, var(--ap-green), var(--ap-green-dark));\n  }\n\n  #aalbaek-programsite .ap-card-image {\n    width: 100%;\n    height: 100%;\n    display: block;\n    object-fit: cover;\n    transition: transform 450ms ease;\n  }\n\n  #aalbaek-programsite .ap-card:hover .ap-card-image {\n    transform: scale(1.035);\n  }\n\n  #aalbaek-programsite .ap-time {\n    position: absolute;\n    top: 13px;\n    left: 13px;\n    min-height: 34px;\n    display: inline-flex;\n    align-items: center;\n    padding: 0 11px;\n    border-radius: 999px;\n    color: var(--ap-white);\n    background: rgba(6, 39, 33, 0.88);\n    box-shadow: 0 5px 15px rgba(0, 0, 0, 0.16);\n    backdrop-filter: blur(6px);\n    font-size: 12px;\n    font-weight: 800;\n  }\n\n  #aalbaek-programsite .ap-card-body {\n    min-width: 0;\n    display: flex;\n    flex-direction: column;\n    align-items: flex-start;\n    padding: 22px 21px 21px;\n  }\n\n  #aalbaek-programsite .ap-category {\n    margin-bottom: 10px;\n    color: var(--ap-wine);\n    font-size: 10px;\n    font-weight: 800;\n    letter-spacing: 1.4px;\n    text-transform: uppercase;\n  }\n\n  #aalbaek-programsite .ap-card-title {\n    margin: 0 !important;\n    color: var(--ap-ink) !important;\n    font-family: Georgia, \"Times New Roman\", serif !important;\n    font-size: 24px !important;\n    font-weight: 400 !important;\n    letter-spacing: -0.5px !important;\n    line-height: 1.15 !important;\n  }\n\n  #aalbaek-programsite .ap-card-text {\n    display: -webkit-box;\n    overflow: hidden;\n    -webkit-box-orient: vertical;\n    -webkit-line-clamp: 3;\n    margin: 12px 0 18px !important;\n    color: var(--ap-muted) !important;\n    font-size: 14px !important;\n    line-height: 1.55 !important;\n  }\n\n  #aalbaek-programsite .ap-card-link {\n    min-height: 40px;\n    display: inline-flex;\n    align-items: center;\n    gap: 8px;\n    margin-top: auto;\n    color: var(--ap-green) !important;\n    font-size: 13px;\n    font-weight: 800;\n    text-decoration: none !important;\n  }\n\n  #aalbaek-programsite .ap-card-link::after {\n    font-size: 17px;\n    line-height: 1;\n    content: \"\u2192\";\n    transition: transform 180ms ease;\n  }\n\n  #aalbaek-programsite .ap-card-link:hover::after,\n  #aalbaek-programsite .ap-card-link:focus-visible::after {\n    transform: translateX(3px);\n  }\n\n  #aalbaek-programsite .ap-loading {\n    display: grid;\n    grid-template-columns: repeat(2, minmax(0, 1fr));\n    gap: 22px;\n  }\n\n  #aalbaek-programsite .ap-skeleton {\n    min-height: 250px;\n    border-radius: 17px;\n    background: linear-gradient(90deg, #eee8dc 25%, #f8f4ec 50%, #eee8dc 75%);\n    background-size: 200% 100%;\n    animation: ap-shimmer 1.5s infinite;\n  }\n\n  @keyframes ap-shimmer {\n    to { background-position: -200% 0; }\n  }\n\n  #aalbaek-programsite .ap-message {\n    padding: 34px;\n    border: 1px solid var(--ap-line);\n    border-radius: 17px;\n    text-align: center;\n    background: var(--ap-paper);\n  }\n\n  #aalbaek-programsite .ap-message-title {\n    margin: 0 0 10px !important;\n    color: var(--ap-ink) !important;\n    font-family: Georgia, \"Times New Roman\", serif !important;\n    font-size: 28px !important;\n    font-weight: 400 !important;\n  }\n\n  #aalbaek-programsite .ap-message-text {\n    margin: 0 !important;\n    color: var(--ap-muted) !important;\n    font-size: 15px !important;\n    line-height: 1.6 !important;\n  }\n\n  #aalbaek-programsite .ap-message-link {\n    min-height: 44px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    margin-top: 18px;\n    padding: 0 18px;\n    border-radius: 999px;\n    color: var(--ap-white) !important;\n    background: var(--ap-green);\n    font-size: 13px;\n    font-weight: 800;\n    text-decoration: none !important;\n  }\n\n  \/* FOOT CTA *\/\n  #aalbaek-programsite .ap-footer {\n    padding: 72px 0;\n    color: var(--ap-white);\n    background: var(--ap-green-dark);\n  }\n\n  #aalbaek-programsite .ap-footer-inner {\n    display: grid;\n    grid-template-columns: minmax(0, 1fr) auto;\n    gap: 40px;\n    align-items: center;\n  }\n\n  #aalbaek-programsite .ap-footer-title {\n    margin: 0 !important;\n    color: var(--ap-white) !important;\n    font-family: Georgia, \"Times New Roman\", serif !important;\n    font-size: clamp(37px, 4vw, 53px) !important;\n    font-weight: 400 !important;\n    letter-spacing: -1.4px !important;\n    line-height: 1.04 !important;\n  }\n\n  #aalbaek-programsite .ap-footer-text {\n    max-width: 650px;\n    margin: 15px 0 0 !important;\n    color: rgba(255, 255, 255, 0.78) !important;\n    font-size: 16px !important;\n    line-height: 1.6 !important;\n  }\n\n  #aalbaek-programsite .ap-footer-button {\n    min-height: 52px;\n    display: inline-flex;\n    align-items: center;\n    justify-content: center;\n    gap: 10px;\n    padding: 0 24px;\n    border-radius: 999px;\n    color: var(--ap-green-dark) !important;\n    background: var(--ap-white);\n    font-size: 13px;\n    font-weight: 800;\n    text-decoration: none !important;\n    white-space: nowrap;\n    transition: background-color 180ms ease, transform 180ms ease;\n  }\n\n  #aalbaek-programsite .ap-footer-button:hover,\n  #aalbaek-programsite .ap-footer-button:focus-visible {\n    background: #f3d494;\n    transform: translateY(-2px);\n  }\n\n  #aalbaek-programsite .ap-source {\n    margin: 25px 0 0 !important;\n    color: rgba(255, 255, 255, 0.53) !important;\n    font-size: 11px !important;\n    line-height: 1.5 !important;\n  }\n\n  \/* TABLET *\/\n  @media (max-width: 1060px) {\n    #aalbaek-programsite .ap-program-head {\n      grid-template-columns: 1fr;\n      gap: 25px;\n    }\n\n    #aalbaek-programsite .ap-card {\n      grid-template-columns: 145px minmax(0, 1fr);\n    }\n\n    #aalbaek-programsite .ap-card-media {\n      min-height: 250px;\n    }\n  }\n\n  @media (max-width: 860px) {\n    #aalbaek-programsite .ap-card-grid {\n      grid-template-columns: 1fr;\n    }\n\n    #aalbaek-programsite .ap-card {\n      grid-template-columns: 220px minmax(0, 1fr);\n    }\n\n    #aalbaek-programsite .ap-card-media {\n      min-height: 215px;\n    }\n  }\n\n  \/* MOBIL *\/\n  @media (max-width: 650px) {\n    #aalbaek-programsite .ap-shell {\n      width: min(100% - 36px, 1180px);\n    }\n\n    #aalbaek-programsite .ap-hero {\n      min-height: 660px;\n      background:\n        linear-gradient(90deg, rgba(4, 30, 25, 0.88), rgba(4, 30, 25, 0.62)),\n        linear-gradient(0deg, rgba(4, 30, 25, 0.64), rgba(4, 30, 25, 0.05) 70%),\n        url(\"https:\/\/visitvendsyssel.dk\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-14.-sep.-2026-13.39.01.png\") 62% center \/ cover no-repeat;\n    }\n\n    #aalbaek-programsite .ap-nav {\n      min-height: 82px;\n    }\n\n    #aalbaek-programsite .ap-logo {\n      width: 138px;\n    }\n\n    #aalbaek-programsite .ap-back {\n      min-height: 42px;\n      padding: 0 14px;\n      font-size: 12px;\n    }\n\n    #aalbaek-programsite .ap-back-label-long {\n      display: none;\n    }\n\n    #aalbaek-programsite .ap-hero-content {\n      padding-top: 70px;\n      padding-bottom: 58px;\n    }\n\n    #aalbaek-programsite .ap-eyebrow {\n      font-size: 10px;\n      letter-spacing: 1.7px;\n    }\n\n    #aalbaek-programsite .ap-eyebrow::before {\n      width: 31px;\n    }\n\n    #aalbaek-programsite .ap-title {\n      font-size: 52px !important;\n      letter-spacing: -2.1px !important;\n    }\n\n    #aalbaek-programsite .ap-lead {\n      margin-top: 20px !important;\n      font-size: 16px !important;\n      line-height: 1.55 !important;\n    }\n\n    #aalbaek-programsite .ap-facts {\n      display: grid;\n      grid-template-columns: 1fr;\n      gap: 7px;\n      margin-top: 23px;\n    }\n\n    #aalbaek-programsite .ap-fact {\n      width: fit-content;\n      min-height: 35px;\n      padding: 0 12px;\n      font-size: 12px;\n    }\n\n    #aalbaek-programsite .ap-program {\n      padding: 57px 0 66px;\n    }\n\n    #aalbaek-programsite .ap-program-head {\n      margin-bottom: 27px;\n    }\n\n    #aalbaek-programsite .ap-heading {\n      font-size: 45px !important;\n      letter-spacing: -1.4px !important;\n    }\n\n    #aalbaek-programsite .ap-intro {\n      font-size: 15px !important;\n      line-height: 1.62 !important;\n    }\n\n    #aalbaek-programsite .ap-filter-wrap {\n      margin-right: -18px;\n      margin-bottom: 39px;\n      margin-left: -18px;\n      padding: 10px 18px;\n      border-right: 0;\n      border-left: 0;\n      border-radius: 0;\n    }\n\n    #aalbaek-programsite .ap-filter {\n      min-height: 42px;\n      padding: 0 15px;\n      font-size: 12px;\n    }\n\n    #aalbaek-programsite .ap-status {\n      margin-top: -20px;\n      margin-bottom: 27px;\n      font-size: 12px;\n    }\n\n    #aalbaek-programsite .ap-days {\n      gap: 44px;\n    }\n\n    #aalbaek-programsite .ap-day-head {\n      grid-template-columns: 82px minmax(0, 1fr);\n      gap: 16px;\n      margin-bottom: 15px;\n      padding-bottom: 15px;\n    }\n\n    #aalbaek-programsite .ap-date-box {\n      min-height: 72px;\n      gap: 6px;\n      padding: 10px;\n      border-radius: 11px;\n    }\n\n    #aalbaek-programsite .ap-date-number {\n      font-size: 34px;\n    }\n\n    #aalbaek-programsite .ap-date-month {\n      font-size: 9px;\n      letter-spacing: 1px;\n    }\n\n    #aalbaek-programsite .ap-day-name {\n      font-size: 27px !important;\n    }\n\n    #aalbaek-programsite .ap-card {\n      grid-template-columns: 1fr;\n      border-radius: 14px;\n    }\n\n    #aalbaek-programsite .ap-card-media {\n      min-height: 0;\n      aspect-ratio: 16 \/ 9;\n    }\n\n    #aalbaek-programsite .ap-card-body {\n      padding: 19px 18px 18px;\n    }\n\n    #aalbaek-programsite .ap-card-title {\n      font-size: 23px !important;\n    }\n\n    #aalbaek-programsite .ap-loading {\n      grid-template-columns: 1fr;\n    }\n\n    #aalbaek-programsite .ap-loading .ap-skeleton:nth-child(n + 3) {\n      display: none;\n    }\n\n    #aalbaek-programsite .ap-footer {\n      padding: 55px 0;\n    }\n\n    #aalbaek-programsite .ap-footer-inner {\n      grid-template-columns: 1fr;\n      gap: 26px;\n    }\n\n    #aalbaek-programsite .ap-footer-title {\n      font-size: 39px !important;\n    }\n\n    #aalbaek-programsite .ap-footer-button {\n      width: 100%;\n    }\n  }\n\n  @media (max-width: 390px) {\n    #aalbaek-programsite .ap-title {\n      font-size: 46px !important;\n    }\n\n    #aalbaek-programsite .ap-heading {\n      font-size: 40px !important;\n    }\n  }\n\n  @media (prefers-reduced-motion: reduce) {\n    #aalbaek-programsite *,\n    #aalbaek-programsite *::before,\n    #aalbaek-programsite *::after {\n      scroll-behavior: auto !important;\n      animation-duration: 0.01ms !important;\n      animation-iteration-count: 1 !important;\n      transition-duration: 0.01ms !important;\n    }\n  }\n<\/style>\n\n<main id=\"aalbaek-programsite\">\n  <header class=\"ap-hero\">\n    <div class=\"ap-shell\">\n      <nav class=\"ap-nav\" aria-label=\"Programnavigation\">\n        <a href=\"https:\/\/visitvendsyssel.dk\/aalbaek-julemarked-2026\/\" aria-label=\"Til Aalb\u00e6k Julemarkeds hovedside\">\n          <img data-recalc-dims=\"1\" fetchpriority=\"high\" decoding=\"async\"\n            class=\"ap-logo\"\n            src=\"https:\/\/i0.wp.com\/visitvendsyssel.dk\/wp-content\/uploads\/2026\/09\/ChatGPT-Image-14.-sep.-2026-13.36.29.png?resize=356%2C178&#038;ssl=1\"\n            alt=\"Aalb\u00e6k Julemarked\"\n            width=\"356\"\n            height=\"178\"\n          >\n        <\/a>\n\n        <a class=\"ap-back\" href=\"https:\/\/visitvendsyssel.dk\/aalbaek-julemarked-2026\/\">\n          <span class=\"ap-back-arrow\" aria-hidden=\"true\">\u2190<\/span>\n          <span><span class=\"ap-back-label-long\">Tilbage til <\/span>julemarkedet<\/span>\n        <\/a>\n      <\/nav>\n    <\/div>\n\n    <div class=\"ap-shell ap-hero-content\">\n      <div class=\"ap-hero-copy\">\n        <p class=\"ap-eyebrow\">6. november \u2013 6. december 2026<\/p>\n        <h1 class=\"ap-title\">Program for<br>Aalb\u00e6k Julemarked<\/h1>\n        <p class=\"ap-lead\">\n          F\u00e5 overblik over musik, smagninger og aktiviteter. V\u00e6lg en weekend,\n          eller se hele programmet i kronologisk r\u00e6kkef\u00f8lge.\n        <\/p>\n\n        <div class=\"ap-facts\" aria-label=\"Kort information\">\n          <span class=\"ap-fact\"><span class=\"ap-fact-icon\" aria-hidden=\"true\">\u25cf<\/span> Fredag kl. 14\u201318<\/span>\n          <span class=\"ap-fact\"><span class=\"ap-fact-icon\" aria-hidden=\"true\">\u25cf<\/span> L\u00f8rdag og s\u00f8ndag kl. 11\u201318<\/span>\n          <span class=\"ap-fact\"><span class=\"ap-fact-icon\" aria-hidden=\"true\">\u25cf<\/span> Haven ved Aalb\u00e6k Badehotel<\/span>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/header>\n\n  <section class=\"ap-program\" aria-labelledby=\"ap-program-heading\">\n    <div class=\"ap-shell\">\n      <div class=\"ap-program-head\">\n        <div>\n          <p class=\"ap-section-label\">Dag for dag<\/p>\n          <h2 class=\"ap-heading\" id=\"ap-program-heading\">V\u00e6lg weekend<\/h2>\n        <\/div>\n        <p class=\"ap-intro\">\n          Brug knapperne til at filtrere programmet. Klik p\u00e5 et programpunkt for\n          at se alle detaljer p\u00e5 Eventsyssel.\n        <\/p>\n      <\/div>\n\n      <div class=\"ap-filter-wrap\">\n        <div class=\"ap-filters\" role=\"group\" aria-label=\"Filtr\u00e9r programmet efter weekend\">\n          <button class=\"ap-filter\" type=\"button\" data-weekend=\"all\" aria-pressed=\"true\">Hele programmet<\/button>\n          <button class=\"ap-filter\" type=\"button\" data-weekend=\"1\" aria-pressed=\"false\">6.\u20138. november<\/button>\n          <button class=\"ap-filter\" type=\"button\" data-weekend=\"2\" aria-pressed=\"false\">13.\u201315. november<\/button>\n          <button class=\"ap-filter\" type=\"button\" data-weekend=\"3\" aria-pressed=\"false\">20.\u201322. november<\/button>\n          <button class=\"ap-filter\" type=\"button\" data-weekend=\"4\" aria-pressed=\"false\">27.\u201329. november<\/button>\n          <button class=\"ap-filter\" type=\"button\" data-weekend=\"5\" aria-pressed=\"false\">4.\u20136. december<\/button>\n        <\/div>\n      <\/div>\n\n      <p class=\"ap-status\" id=\"ap-status\" role=\"status\" aria-live=\"polite\">Henter det aktuelle program \u2026<\/p>\n\n      <div id=\"ap-program-content\">\n        <div class=\"ap-loading\" aria-hidden=\"true\">\n          <div class=\"ap-skeleton\"><\/div>\n          <div class=\"ap-skeleton\"><\/div>\n          <div class=\"ap-skeleton\"><\/div>\n          <div class=\"ap-skeleton\"><\/div>\n        <\/div>\n      <\/div>\n    <\/div>\n  <\/section>\n\n  <footer class=\"ap-footer\">\n    <div class=\"ap-shell ap-footer-inner\">\n      <div>\n        <h2 class=\"ap-footer-title\">Planl\u00e6g resten af bes\u00f8get<\/h2>\n        <p class=\"ap-footer-text\">\n          P\u00e5 hovedsiden finder du \u00e5bningstider, entr\u00e9, parkering, udstillere og\n          praktiske oplysninger om Aalb\u00e6k Julemarked.\n        <\/p>\n        <p class=\"ap-source\">Se alle detaljer om de enkelte programpunkter p\u00e5 Eventsyssel.<\/p>\n      <\/div>\n\n      <a class=\"ap-footer-button\" href=\"https:\/\/visitvendsyssel.dk\/aalbaek-julemarked-2026\/\">\n        Til Aalb\u00e6k Julemarked <span aria-hidden=\"true\">\u2192<\/span>\n      <\/a>\n    <\/div>\n  <\/footer>\n<\/main>\n\n<script>\n  (() => {\n    const root = document.getElementById('aalbaek-programsite');\n    if (!root || root.dataset.initialized === 'true') return;\n    root.dataset.initialized = 'true';\n\n    const API_URL = 'https:\/\/events.visitvendsyssel.dk\/api\/public\/events?city=Aalb%C3%A6k&category=jul&days=365&limit=100&language=da';\n    const FALLBACK_URL = 'https:\/\/events.visitvendsyssel.dk\/aalbaek-events';\n    const content = root.querySelector('#ap-program-content');\n    const status = root.querySelector('#ap-status');\n    const filters = [...root.querySelectorAll('.ap-filter')];\n\n    const weekends = {\n      1: ['2026-11-06', '2026-11-08'],\n      2: ['2026-11-13', '2026-11-15'],\n      3: ['2026-11-20', '2026-11-22'],\n      4: ['2026-11-27', '2026-11-29'],\n      5: ['2026-12-04', '2026-12-06']\n    };\n\n    const monthNames = {\n      11: 'NOV',\n      12: 'DEC'\n    };\n\n    let events = [];\n    let activeWeekend = getInitialWeekend();\n\n    function getInitialWeekend() {\n      const value = new URLSearchParams(window.location.search).get('weekend');\n      return Object.prototype.hasOwnProperty.call(weekends, value) ? value : 'all';\n    }\n\n    function escapeHtml(value) {\n      return String(value ?? '')\n        .replaceAll('&', '&amp;')\n        .replaceAll('<', '&lt;')\n        .replaceAll('>', '&gt;')\n        .replaceAll('\"', '&quot;')\n        .replaceAll(\"'\", '&#039;');\n    }\n\n    function safeUrl(value) {\n      try {\n        const url = new URL(value, window.location.origin);\n        return url.protocol === 'https:' ? url.href : FALLBACK_URL;\n      } catch {\n        return FALLBACK_URL;\n      }\n    }\n\n    function dateParts(dateString) {\n      const [year, month, day] = dateString.split('-').map(Number);\n      return { year, month, day, date: new Date(year, month - 1, day, 12, 0, 0) };\n    }\n\n    function dayLabel(dateString) {\n      return new Intl.DateTimeFormat('da-DK', { weekday: 'long' }).format(dateParts(dateString).date);\n    }\n\n    function timeLabel(event) {\n      const start = event.startTime ? event.startTime.slice(0, 5).replace(':', '.') : '';\n      const end = event.endTime ? event.endTime.slice(0, 5).replace(':', '.') : '';\n      if (start && end) return `Kl. ${start}\u2013${end}`;\n      if (start) return `Kl. ${start}`;\n      return 'Se tidspunkt';\n    }\n\n    function weekendFor(dateString) {\n      return Object.entries(weekends).find(([, range]) => dateString >= range[0] && dateString <= range[1])?.[0] ?? null;\n    }\n\n    function currentEvents() {\n      if (activeWeekend === 'all') return events;\n      return events.filter((event) => weekendFor(event.date) === activeWeekend);\n    }\n\n    function updateQuery() {\n      try {\n        const url = new URL(window.location.href);\n        if (activeWeekend === 'all') url.searchParams.delete('weekend');\n        else url.searchParams.set('weekend', activeWeekend);\n        window.history.replaceState({}, '', url);\n      } catch {\n        \/* Siden fungerer ogs\u00e5 uden delbart filterlink. *\/\n      }\n    }\n\n    function cardTemplate(event) {\n      const title = escapeHtml(event.title?.trim() || 'Arrangement p\u00e5 Aalb\u00e6k Julemarked');\n      const description = escapeHtml((event.shortDescription || event.description || '').trim());\n      const category = escapeHtml(event.category || event.categories?.[0]?.label || 'Jul');\n      const image = safeUrl(event.imageUrl || '');\n      const detail = safeUrl(event.detailUrl || event.eventUrl || FALLBACK_URL);\n      const imageMarkup = event.imageUrl\n        ? `<img class=\"ap-card-image\" src=\"${image}\" alt=\"${title}\" loading=\"lazy\" decoding=\"async\">`\n        : '';\n\n      return `\n        <article class=\"ap-card\">\n          <div class=\"ap-card-media\">\n            ${imageMarkup}\n            <time class=\"ap-time\" datetime=\"${escapeHtml(event.date)}T${escapeHtml(event.startTime || '')}\">${escapeHtml(timeLabel(event))}<\/time>\n          <\/div>\n          <div class=\"ap-card-body\">\n            <span class=\"ap-category\">${category}<\/span>\n            <h3 class=\"ap-card-title\">${title}<\/h3>\n            ${description ? `<p class=\"ap-card-text\">${description}<\/p>` : ''}\n            <a class=\"ap-card-link\" href=\"${detail}\" target=\"_blank\" rel=\"noopener\">Se arrangementet<\/a>\n          <\/div>\n        <\/article>`;\n    }\n\n    function dayTemplate(dateString, dayEvents) {\n      const { month, day } = dateParts(dateString);\n      const label = dayLabel(dateString);\n      const countText = dayEvents.length === 1 ? '1 programpunkt' : `${dayEvents.length} programpunkter`;\n\n      return `\n        <section class=\"ap-day\" aria-labelledby=\"ap-day-${escapeHtml(dateString)}\">\n          <header class=\"ap-day-head\">\n            <div class=\"ap-date-box\" aria-hidden=\"true\">\n              <span class=\"ap-date-number\">${day}<\/span>\n              <span class=\"ap-date-month\">${monthNames[month] || ''}<\/span>\n            <\/div>\n            <div>\n              <h3 class=\"ap-day-name\" id=\"ap-day-${escapeHtml(dateString)}\">${escapeHtml(label)}<\/h3>\n              <p class=\"ap-day-count\">${countText}<\/p>\n            <\/div>\n          <\/header>\n          <div class=\"ap-card-grid\">\n            ${dayEvents.map(cardTemplate).join('')}\n          <\/div>\n        <\/section>`;\n    }\n\n    function render() {\n      filters.forEach((button) => {\n        button.setAttribute('aria-pressed', String(button.dataset.weekend === activeWeekend));\n      });\n\n      const filtered = currentEvents();\n      if (!filtered.length) {\n        status.textContent = 'Der er endnu ikke registreret programpunkter for denne weekend.';\n        content.innerHTML = `\n          <div class=\"ap-message\">\n            <h3 class=\"ap-message-title\">Programmet er p\u00e5 vej<\/h3>\n            <p class=\"ap-message-text\">Nye programpunkter tilf\u00f8jes l\u00f8bende.<\/p>\n            <a class=\"ap-message-link\" href=\"${FALLBACK_URL}\" target=\"_blank\" rel=\"noopener\">Se Eventsyssel<\/a>\n          <\/div>`;\n        return;\n      }\n\n      const grouped = filtered.reduce((result, event) => {\n        (result[event.date] ||= []).push(event);\n        return result;\n      }, {});\n\n      Object.values(grouped).forEach((dayEvents) => {\n        dayEvents.sort((a, b) => String(a.startTime || '').localeCompare(String(b.startTime || '')));\n      });\n\n      const dayCount = Object.keys(grouped).length;\n      status.textContent = `${filtered.length} programpunkter fordelt p\u00e5 ${dayCount} ${dayCount === 1 ? 'dag' : 'dage'}.`;\n      content.innerHTML = `<div class=\"ap-days\">${Object.keys(grouped).sort().map((date) => dayTemplate(date, grouped[date])).join('')}<\/div>`;\n    }\n\n    filters.forEach((button) => {\n      button.addEventListener('click', () => {\n        activeWeekend = button.dataset.weekend;\n        updateQuery();\n        render();\n        root.querySelector('.ap-program-head')?.scrollIntoView({ behavior: 'smooth', block: 'start' });\n      });\n    });\n\n    fetch(API_URL, { headers: { Accept: 'application\/json' } })\n      .then((response) => {\n        if (!response.ok) throw new Error(`HTTP ${response.status}`);\n        return response.json();\n      })\n      .then((data) => {\n        const incoming = Array.isArray(data) ? data : data.events;\n        events = (Array.isArray(incoming) ? incoming : [])\n          .filter((event) => event?.date && weekendFor(event.date))\n          .sort((a, b) => `${a.date} ${a.startTime || ''}`.localeCompare(`${b.date} ${b.startTime || ''}`));\n        render();\n      })\n      .catch(() => {\n        status.textContent = 'Programmet kunne ikke hentes lige nu.';\n        content.innerHTML = `\n          <div class=\"ap-message\">\n            <h3 class=\"ap-message-title\">Se det aktuelle program p\u00e5 Eventsyssel<\/h3>\n            <p class=\"ap-message-text\">Programoversigten kunne ikke indl\u00e6ses. Brug knappen for at g\u00e5 direkte til arrangementerne.<\/p>\n            <a class=\"ap-message-link\" href=\"${FALLBACK_URL}\" target=\"_blank\" rel=\"noopener\">\u00c5bn Eventsyssel<\/a>\n          <\/div>`;\n      });\n  })();\n<\/script>\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>\u2190 Tilbage til julemarkedet 6. november \u2013 6. december 2026 Program forAalb\u00e6k Julemarked F\u00e5 overblik over musik, smagninger og aktiviteter. V\u00e6lg en weekend, eller se hele programmet i kronologisk r\u00e6kkef\u00f8lge. \u25cf Fredag kl. 14\u201318 \u25cf L\u00f8rdag og s\u00f8ndag kl. 11\u201318 \u25cf Haven ved Aalb\u00e6k Badehotel Dag for dag V\u00e6lg weekend Brug knapperne til at filtrere [&hellip;]<\/p>\n","protected":false},"author":249072023,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"","meta":{"_wpcom_ai_launchpad_about_page":false,"_wpcom_ai_launchpad_gallery_page":false,"_wpcom_ai_launchpad_contact_page":false,"_wpcom_ai_launchpad_events_page":false,"_wpcom_ai_launchpad_video_page":false,"_wpcom_ai_launchpad_portfolio_piece":false,"footnotes":""},"class_list":["post-25092","page","type-page","status-publish","hentry"],"jetpack_sharing_enabled":true,"jetpack_shortlink":"https:\/\/wp.me\/PfGbFv-6wI","_links":{"self":[{"href":"https:\/\/visitvendsyssel.dk\/de\/wp-json\/wp\/v2\/pages\/25092","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/visitvendsyssel.dk\/de\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/visitvendsyssel.dk\/de\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/visitvendsyssel.dk\/de\/wp-json\/wp\/v2\/users\/249072023"}],"replies":[{"embeddable":true,"href":"https:\/\/visitvendsyssel.dk\/de\/wp-json\/wp\/v2\/comments?post=25092"}],"version-history":[{"count":5,"href":"https:\/\/visitvendsyssel.dk\/de\/wp-json\/wp\/v2\/pages\/25092\/revisions"}],"predecessor-version":[{"id":25097,"href":"https:\/\/visitvendsyssel.dk\/de\/wp-json\/wp\/v2\/pages\/25092\/revisions\/25097"}],"wp:attachment":[{"href":"https:\/\/visitvendsyssel.dk\/de\/wp-json\/wp\/v2\/media?parent=25092"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}