{"id":12410,"date":"2026-10-15T11:26:25","date_gmt":"2026-10-15T09:26:25","guid":{"rendered":"https:\/\/dairytop.eu\/?page_id=12410"},"modified":"2026-10-15T20:18:27","modified_gmt":"2026-10-15T18:18:27","slug":"colostrum-management","status":"publish","type":"page","link":"https:\/\/dairytop.eu\/en\/colostrum-management\/","title":{"rendered":"Colostrum management"},"content":{"rendered":"\t\t<div data-elementor-type=\"wp-page\" data-elementor-id=\"12410\" class=\"elementor elementor-12410 elementor-12388\" data-elementor-post-type=\"page\">\n\t\t\t\t\t\t<section class=\"elementor-section elementor-top-section elementor-element elementor-element-11e6b99 elementor-section-full_width elementor-section-height-default elementor-section-height-default\" data-id=\"11e6b99\" data-element_type=\"section\" data-e-type=\"section\">\n\t\t\t\t\t\t<div class=\"elementor-container elementor-column-gap-default\">\n\t\t\t\t\t<div class=\"elementor-column elementor-col-100 elementor-top-column elementor-element elementor-element-\" data-id=\"\" data-element_type=\"column\" data-e-type=\"column\">\n\t\t\t<div class=\"elementor-widget-wrap elementor-element-populated\">\n\t\t\t\t\t\t<div class=\"elementor-element elementor-element- elementor-widget elementor-widget-html\" data-id=\"\" 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<!-- DairyTop kalverhuisvesting: https:\/\/dairytop.eu\/en\/colostrum-management\/ (EN). Plakken in een Elementor HTML-widget. -->\n<style>\nbody:has(.dtk) .site-content { margin-left: 0 !important; margin-right: 0 !important; }\n@media (max-width: 767px) { body:has(.dtk) .site-content, body:has(.dtk) .site-content .ast-container, body:has(.dtk) .site-content .elementor-container { padding-left: 0 !important; padding-right: 0 !important; } }\n\/* Ankers (#opstelling e.d.) onder de vaste Astra-header laten landen. Hoogte gemeten op dairytop.eu 07-10-2026:\n   241 px boven 921 px breed, 129 px tot 544 px, daaronder 112 px; plus de WP-adminbalk voor ingelogde gebruikers.\n   Een sectie heeft zelf al var(--section) witruimte boven de kop, die gaat eraf. *\/\n.dtk { --dtk-sticky: 241px; --dtk-admin: 0px; }\n@media (max-width: 921px) { .dtk { --dtk-sticky: 129px; } }\n@media (max-width: 544px) { .dtk { --dtk-sticky: 112px; } }\n.admin-bar .dtk { --dtk-admin: 32px; }\n@media (max-width: 782px) { .admin-bar .dtk { --dtk-admin: 46px; } }\n@media (max-width: 600px) { .admin-bar .dtk { --dtk-admin: 0px; } }\n.dtk [id] { scroll-margin-top: calc(var(--dtk-sticky) + var(--dtk-admin) + 24px); }\n.dtk .dtk-section[id] { scroll-margin-top: calc(var(--dtk-sticky) + var(--dtk-admin) + 24px - var(--section)); }\nbody .dtk button { background: none; border: 0; border-radius: 0; padding: 0; margin: 0; box-shadow: none; text-shadow: none; text-transform: none; letter-spacing: inherit; font: inherit; line-height: inherit; color: inherit; min-height: 0; text-decoration: none; }\nbody .dtk :is(ul, ol) { margin: 0; padding: 0; list-style: none; }\nbody .dtk li { margin: 0; }\nbody .dtk :is(input, select, textarea) { box-shadow: none; }\n\/* Dairytop kalverhuisvesting. Alles gescoped onder .dtk zodat het in een Elementor HTML-widget past. *\/\nhtml body .dtk {\n  --navy: #1f3741;\n  --navy-2: #2b4a57;\n  --blue: #40bcf3;\n  --blue-soft: #d9f1fc;\n  --ink: #48515b;\n  --concrete: #eef2f3;\n  --line: #dce3e5;\n  --muted: #5f6b73;\n  --white: #fff;\n  --r-s: 4px;\n  --r-m: 10px;\n  --gutter: clamp(16px, 4vw, 40px);\n  --section: clamp(56px, 8vw, 112px);\n  --display: 'Outfit', system-ui, sans-serif;\n  --text: 'DM Sans', system-ui, sans-serif;\n  font-family: var(--text);\n  font-size: 17px;\n  line-height: 1.6;\n  color: var(--ink);\n  overflow-x: clip;\n  -webkit-font-smoothing: antialiased;\n}\n\/* Witte achtergrond alleen voor de pagina-blokken: de footer van de plugin heeft ook de class dtk (dtk-ft) en is navy. *\/\nhtml body .dtk:not(.dtk-ft) { background: var(--white); }\nhtml body .dtk *, html body .dtk *::before, html body .dtk *::after { box-sizing: border-box; }\nhtml body .dtk img { max-width: 100%; height: auto; display: block; }\nhtml body :where(.dtk) :where(h1, h2, h3, h4) {\n  font-family: var(--display);\n  color: var(--navy);\n  margin: 0;\n  font-weight: 600;\n  letter-spacing: -0.015em;\n  line-height: 1.1;\n  text-wrap: balance;\n}\nhtml body :where(.dtk) h2 { font-size: clamp(1.75rem, 1.2rem + 2vw, 2.6rem); }\nhtml body :where(.dtk) h3 { font-size: 1.3rem; line-height: 1.25; }\nhtml body :where(.dtk) p { margin: 0 0 1em; text-wrap: pretty; }\nhtml body :where(.dtk) p:last-child { margin-bottom: 0; }\nhtml body :where(.dtk) a { color: var(--navy); }\nhtml body :where(.dtk) :where(ul, ol) { margin: 0; padding: 0; list-style: none; }\nhtml body .dtk :focus-visible { outline: 3px solid var(--navy); outline-offset: 3px; border-radius: 2px; }\nhtml body .dtk .dtk-on-dark :focus-visible, html body .dtk-hero :focus-visible { outline-color: var(--blue); }\nhtml body .dtk-ic { width: 1.1em; height: 1.1em; flex: none; }\nhtml body .dtk-num { font-variant-numeric: tabular-nums; }\n\nhtml body .dtk-wrap { max-width: 1240px; margin-inline: auto; padding-inline: var(--gutter); }\nhtml body .dtk-section { padding-block: var(--section) calc(var(--section) * 1.08); }\nhtml body .dtk-section--tint { background: var(--concrete); }\nhtml body .dtk-head { max-width: 46rem; margin-bottom: clamp(28px, 4vw, 48px); }\nhtml body .dtk-head p { font-size: 1.08rem; margin-top: 14px; }\nhtml body .dtk-kicker {\n  display: inline-flex; align-items: center; gap: 10px;\n  font-family: var(--display); font-weight: 500; font-size: .95rem;\n  color: var(--navy); margin-bottom: 12px;\n}\nhtml body .dtk-kicker::before { content: ''; width: 18px; height: 3px; background: var(--blue); border-radius: 2px; }\n\n\/* Buttons and links *\/\nhtml body .dtk-actions { display: flex; flex-wrap: wrap; gap: 14px 22px; align-items: center; }\nhtml body .dtk-btn {\n  display: inline-flex; align-items: center; gap: 10px;\n  min-height: 48px; padding: 12px 22px;\n  background: var(--blue); color: var(--navy) !important;\n  font-family: var(--display); font-weight: 600; font-size: 1.02rem;\n  text-decoration: none; border-radius: var(--r-s); border: 0;\n  transition: background-color .2s ease, transform .15s ease;\n}\nhtml body .dtk-btn:hover { background: #6fcdf6; }\nhtml body .dtk-btn:active { transform: translateY(1px); }\nhtml body .dtk-btn--ghost { background: transparent; color: var(--white) !important; box-shadow: inset 0 0 0 2px rgba(255,255,255,.75); }\nhtml body .dtk-btn--ghost:hover { background: rgba(255,255,255,.12); }\nhtml body .dtk-btn--dark { background: var(--navy); color: var(--white) !important; }\nhtml body .dtk-btn--dark:hover { background: var(--navy-2); }\nhtml body .dtk-link {\n  display: inline-flex; align-items: center; gap: 8px;\n  font-family: var(--display); font-weight: 600; color: var(--navy);\n  text-decoration: none; padding-block: 8px;\n  background: linear-gradient(var(--blue), var(--blue)) 0 100% \/ 100% 2px no-repeat;\n  transition: background-size .25s ease;\n}\nhtml body .dtk-link:hover { background-size: 0 2px; background-position: 100% 100%; }\nhtml body .dtk-link .dtk-ic { transition: transform .2s ease; }\nhtml body .dtk-link:hover .dtk-ic { transform: translateX(3px); }\nhtml body .dtk-links { display: flex; flex-wrap: wrap; column-gap: 28px; row-gap: 4px; }\nhtml body .dtk-link-light { color: var(--white) !important; }\n\n\/* Breadcrumbs *\/\nhtml body .dtk-crumbs ol { display: flex; flex-wrap: wrap; gap: 4px 0; font-size: .88rem; }\nhtml body .dtk-crumbs li { display: flex; align-items: center; }\nhtml body .dtk-crumbs li + li::before { content: '\/'; margin-inline: 8px; opacity: .6; }\nhtml body .dtk-crumbs a { text-decoration: none; }\nhtml body .dtk-crumbs a:hover { text-decoration: underline; }\n\n\/* Hero *\/\nhtml body .dtk-hero { position: relative; min-height: clamp(460px, 68vh, 660px); display: flex; color: var(--white); isolation: isolate; }\nhtml body .dtk-hero-img { position: absolute; inset: 0; width: 100%; height: 100% !important; object-fit: cover; z-index: -2; }\nhtml body .dtk-hero::after {\n  content: ''; position: absolute; inset: 0; z-index: -1;\n  background:\n    linear-gradient(90deg, rgba(20,38,46,.86) 0%, rgba(20,38,46,.62) 38%, rgba(20,38,46,.08) 72%),\n    linear-gradient(0deg, rgba(20,38,46,.55) 0%, rgba(20,38,46,0) 45%);\n}\nhtml body .dtk-hero-inner { width: 100%; display: flex; flex-direction: column; justify-content: space-between; padding-block: 24px clamp(88px, 11vw, 132px); }\nhtml body .dtk-hero .dtk-crumbs a, html body .dtk-hero .dtk-crumbs span { color: rgba(255,255,255,.88); }\nhtml body .dtk-hero-copy { max-width: 38rem; margin-top: 48px; }\nhtml body .dtk-hero h1 { color: var(--white); font-size: clamp(2.4rem, 1.4rem + 4.2vw, 4.4rem); font-weight: 600; letter-spacing: -0.025em; line-height: 1.02; }\nhtml body .dtk-hero-kicker { font-family: var(--display); font-weight: 500; color: var(--blue); margin-bottom: 14px !important; }\nhtml body .dtk-lead { font-size: clamp(1.05rem, 1rem + .35vw, 1.22rem); line-height: 1.55; margin: 20px 0 28px !important; max-width: 34rem; }\nhtml body .dtk-hero .dtk-lead { color: rgba(255,255,255,.92); }\n\n\/* Facts strip, overlaps the hero *\/\nhtml body .dtk-facts {\n  position: relative; z-index: 2;\n  margin: calc(clamp(56px, 7vw, 76px) * -1) 0 0;\n  display: grid; grid-template-columns: repeat(4, 1fr);\n  background: var(--white); border-top: 4px solid var(--blue);\n  border-radius: 0;\n  box-shadow: 0 18px 40px -24px rgba(31,55,65,.45);\n}\nhtml body .dtk-facts > div { padding: 22px clamp(16px, 2vw, 28px); border-left: 1px solid var(--line); }\nhtml body .dtk-facts > div:first-child { border-left: 0; }\nhtml body .dtk-facts dt { font-size: .9rem; color: var(--muted); order: 2; }\nhtml body .dtk-facts dd { margin: 0 0 4px; font-family: var(--display); font-weight: 600; font-size: clamp(1.35rem, 1rem + 1vw, 1.9rem); color: var(--navy); font-variant-numeric: tabular-nums; line-height: 1.15; }\n\/* Waarde (vet) boven, uitleg (dun) eronder. *\/\nhtml body .dtk-facts > div { display: flex; flex-direction: column; justify-content: flex-start; }\n\n\/* Feature (image to the edge + text) *\/\nhtml body .dtk-feature { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, 1fr); align-items: stretch; min-height: 560px; }\nhtml body .dtk-feature + .dtk-feature { margin-top: clamp(40px, 6vw, 88px); }\nhtml body .dtk-feature-media { position: relative; min-height: 360px; }\nhtml body .dtk-feature-media img { position: absolute; inset: 0; width: 100%; height: 100% !important; object-fit: cover; }\nhtml body .dtk-feature-body { --edge: max(var(--gutter), calc((100vw - 1240px) \/ 2 + var(--gutter))); padding: clamp(28px, 5vw, 72px) var(--edge) clamp(28px, 5vw, 72px) clamp(28px, 5vw, 72px); align-self: center; }\nhtml body .dtk-feature-body > * { max-width: 520px; }\nhtml body .dtk-feature--flip { grid-template-columns: minmax(0, 1fr) minmax(0, 1.15fr); }\nhtml body .dtk-feature--flip .dtk-feature-media { order: 2; }\nhtml body .dtk-feature--flip .dtk-feature-body { padding-left: var(--edge); padding-right: clamp(28px, 5vw, 72px); }\nhtml body .dtk-feature-body h3 { font-size: clamp(1.8rem, 1.3rem + 1.6vw, 2.6rem); margin-bottom: 16px; }\nhtml body .dtk-feature-tag { font-family: var(--display); font-weight: 500; color: var(--muted); margin-bottom: 10px !important; }\nhtml body .dtk-checks { display: grid; gap: 10px; margin: 20px 0 28px; }\nhtml body .dtk-checks li { display: flex; gap: 12px; align-items: flex-start; }\nhtml body .dtk-checks .dtk-ic { color: var(--navy); background: var(--blue-soft); border-radius: 50%; padding: 3px; width: 24px; height: 24px; margin-top: 1px; }\nhtml body .dtk-checks strong { color: var(--navy); font-weight: 600; }\n\n\/* Index list of all categories *\/\nhtml body .dtk-index { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(24px, 5vw, 72px); border-top: 2px solid var(--navy); }\nhtml body .dtk-index a { align-content: center; display: grid; grid-template-columns: 1fr auto; gap: 4px 20px; align-items: center; padding: 22px 0; border-bottom: 1px solid var(--line); text-decoration: none; }\nhtml body .dtk-index-t { font-family: var(--display); font-weight: 600; font-size: 1.25rem; color: var(--navy); }\nhtml body .dtk-index-d { grid-column: 1; color: var(--ink); font-size: .96rem; }\nhtml body .dtk-index .dtk-ic { grid-row: 1 \/ span 2; grid-column: 2; color: var(--navy); width: 22px; height: 22px; transition: transform .2s ease; }\nhtml body .dtk-index a:hover .dtk-ic { transform: translateX(4px); }\nhtml body .dtk-index a:hover .dtk-index-t { text-decoration: underline; text-decoration-color: var(--blue); text-decoration-thickness: 2px; text-underline-offset: 4px; }\n\n\/* Split: text next to an image that runs to the viewport edge *\/\nhtml body .dtk-split { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 80px); align-items: center; }\nhtml body .dtk-split-media { margin-right: calc((min(100vw, 1920px) - min(100vw, 1240px)) \/ -2 - var(--gutter)); }\nhtml body .dtk-split-media img { width: 100%; aspect-ratio: 4 \/ 3; object-fit: cover; border-radius: var(--r-m) 0 0 var(--r-m); }\nhtml body .dtk-split--flip .dtk-split-media { order: -1; margin-right: 0; margin-left: calc((min(100vw, 1920px) - min(100vw, 1240px)) \/ -2 - var(--gutter)); }\nhtml body .dtk-split--flip .dtk-split-media img { border-radius: 0 var(--r-m) var(--r-m) 0; }\n\n\/* Model comparison (OKS) *\/\nhtml body .dtk-models { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(20px, 3vw, 40px); }\nhtml body .dtk-model { display: flex; flex-direction: column; }\nhtml body .dtk-model-img { aspect-ratio: 3 \/ 2; object-fit: cover; width: 100%; border-radius: var(--r-s); }\nhtml body .dtk-model h3 { margin: 20px 0 6px; font-size: 1.45rem; }\nhtml body .dtk-model-sub { color: var(--muted); font-size: .95rem; margin-bottom: 16px !important; }\nhtml body .dtk-model-plan { background: var(--concrete); border-radius: var(--r-s); padding: 18px 10px 8px; display: flex; justify-content: center; }\nhtml body .dtk-model dl { margin: 18px 0 20px; display: grid; gap: 0; }\nhtml body .dtk-model dl div { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line); font-size: .95rem; }\nhtml body .dtk-model dt { color: var(--muted); }\nhtml body .dtk-model dd { margin: 0; font-weight: 600; color: var(--navy); font-variant-numeric: tabular-nums; text-align: right; }\nhtml body .dtk-model .dtk-link { margin-top: auto; align-self: flex-start; }\nhtml body .dtk-note { font-size: .9rem; color: var(--muted); margin-top: 24px !important; }\n\n\/* Plans (SVG) *\/\nhtml body .dtk-plan { width: 100%; max-width: 250px; height: auto; font-family: var(--display); overflow: visible; }\nhtml body .dtk-plan-floor { fill: var(--blue-soft); }\nhtml body .dtk-plan-wall { fill: none; stroke: var(--navy); stroke-linejoin: miter; }\nhtml body .dtk-plan-solid { fill: var(--navy); }\nhtml body .dtk-plan-divider { fill: var(--navy); transition: opacity .3s ease, transform .3s ease; transform-box: fill-box; transform-origin: top; }\nhtml body .dtk-plan-front { stroke: var(--navy); stroke-width: 2; stroke-dasharray: 5 4; fill: none; }\nhtml body .dtk-plan-door { stroke: var(--navy); stroke-width: 1; fill: none; stroke-dasharray: 2 3; }\nhtml body .dtk-plan-area { font-size: 15px; font-weight: 600; fill: var(--navy); text-anchor: middle; font-variant-numeric: tabular-nums; }\nhtml body .dtk-plan-n { font-size: 12px; font-weight: 600; fill: var(--navy); text-anchor: middle; }\nhtml body .dtk-plan-note { font-size: 10px; fill: var(--muted); }\nhtml body .dtk-plan-m2 { font-size: 10.5px; fill: var(--navy); text-anchor: middle; font-variant-numeric: tabular-nums; }\nhtml body .dtk-dim path { stroke: var(--muted); stroke-width: 1; fill: none; }\nhtml body .dtk-dim text { font-size: 10.5px; fill: var(--muted); text-anchor: middle; font-variant-numeric: tabular-nums; }\nhtml body .dtk-plan-q { max-width: 560px; }\n\n\/* Quattro configurator *\/\nhtml body .dtk-config { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.3fr); gap: clamp(28px, 5vw, 72px); align-items: center; }\nhtml body .dtk-seg { display: inline-flex; background: var(--white); border: 1px solid var(--line); border-radius: var(--r-s); padding: 4px; gap: 4px; margin: 20px 0 22px; flex-wrap: wrap; }\nhtml body .dtk-seg button { font: inherit; font-family: var(--display); font-weight: 600; font-size: .98rem; color: var(--navy); background: transparent; border: 0; border-radius: 3px; padding: 10px 16px; min-height: 44px; cursor: pointer; transition: background-color .2s ease; }\nhtml body .dtk-seg button:hover { background: var(--concrete); }\nhtml body .dtk-seg button[aria-pressed=\"true\"] { background: var(--navy); color: var(--white); }\nhtml body .dtk-config-out { min-height: 5.2em; }\nhtml body .dtk-config-out strong { display: block; font-family: var(--display); color: var(--navy); font-size: 1.2rem; margin-bottom: 6px; }\nhtml body .dtk-config-stage { background: var(--white); border-radius: var(--r-m); padding: clamp(18px, 3vw, 36px); display: flex; justify-content: center; }\nhtml body .dtk-config .dtk-q-labels { opacity: 0; transition: opacity .25s ease; }\nhtml body .dtk-config[data-mode=\"eenling\"] .dtk-q-labels[data-mode=\"eenling\"], html body .dtk-config[data-mode=\"duo\"] .dtk-q-labels[data-mode=\"duo\"], html body .dtk-config[data-mode=\"groep\"] .dtk-q-labels[data-mode=\"groep\"] { opacity: 1; }\nhtml body .dtk-config[data-mode=\"duo\"] [data-div=\"1\"], html body .dtk-config[data-mode=\"duo\"] [data-div=\"3\"], html body .dtk-config[data-mode=\"groep\"] .dtk-plan-divider { opacity: .12; transform: scaleY(.3); } \/* krimpt naar de achterwand, weg van de tekst *\/\nhtml body .dtk-plan-static .dtk-q-labels[data-mode=\"eenling\"] { opacity: 1; }\nhtml body .dtk-plan-static .dtk-q-labels:not([data-mode=\"eenling\"]) { display: none; }\n\n\/* Steps with photos (klapbodem, build-up) *\/\nhtml body .dtk-steps { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(16px, 2vw, 28px); counter-reset: step; }\nhtml body .dtk-steps--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); }\nhtml body .dtk-step { counter-increment: step; }\nhtml body .dtk-step img { aspect-ratio: 4 \/ 5; object-fit: cover; width: 100%; border-radius: var(--r-s); }\nhtml body .dtk-steps--3 .dtk-step img { aspect-ratio: 4 \/ 3; }\nhtml body .dtk-step h3 { display: flex; gap: 10px; align-items: baseline; margin: 18px 0 8px; font-size: 1.2rem; }\nhtml body .dtk-step h3::before { content: counter(step); font-variant-numeric: tabular-nums; flex: none; display: inline-grid; place-items: center; width: 28px; height: 28px; border-radius: 50%; background: var(--blue); color: var(--navy); font-size: .9rem; transform: translateY(-2px); }\nhtml body .dtk-step p { font-size: .97rem; }\n\n\/* Daily work mosaic *\/\nhtml body .dtk-mosaic { display: grid; grid-template-columns: repeat(12, minmax(0, 1fr)); gap: clamp(16px, 2.4vw, 32px); }\nhtml body .dtk-mosaic figure { margin: 0; }\nhtml body .dtk-mosaic img { width: 100%; object-fit: cover; border-radius: var(--r-s); }\nhtml body .dtk-mosaic figcaption { margin-top: 14px; }\nhtml body .dtk-mosaic figcaption h3 { font-size: 1.2rem; margin-bottom: 6px; }\nhtml body .dtk-mosaic figcaption p { font-size: .97rem; max-width: 42ch; }\nhtml body .dtk-m-a { grid-column: 1 \/ span 7; } html body .dtk-m-a img { aspect-ratio: 16 \/ 10; }\nhtml body .dtk-m-b { grid-column: 8 \/ span 5; align-self: end; } html body .dtk-m-b img { aspect-ratio: 4 \/ 5; }\nhtml body .dtk-m-c { grid-column: 1 \/ span 5; } html body .dtk-m-c img { aspect-ratio: 4 \/ 5; }\nhtml body .dtk-m-d { grid-column: 6 \/ span 7; align-self: start; } html body .dtk-m-d img { aspect-ratio: 16 \/ 10; }\n\n\/* Photo strip *\/\nhtml body .dtk-strip { display: flex; gap: 12px; overflow-x: auto; scroll-snap-type: x mandatory; padding: 4px var(--gutter) 18px; scrollbar-width: thin; }\nhtml body .dtk-strip img { height: clamp(220px, 32vw, 380px); width: auto; flex: none; scroll-snap-align: start; border-radius: var(--r-s); }\n\n\/* Comparison table *\/\nhtml body .dtk-compare-wrap { overflow-x: auto; -webkit-overflow-scrolling: touch; }\nhtml body .dtk-compare { width: 100%; border-collapse: collapse; min-width: 640px; font-size: .97rem; }\nhtml body .dtk-compare th, html body .dtk-compare td { text-align: left; vertical-align: top; padding: 14px 16px 14px 0; border-bottom: 1px solid var(--line); }\nhtml body .dtk-compare thead th { font-family: var(--display); font-weight: 600; color: var(--navy); font-size: 1.15rem; border-bottom: 2px solid var(--navy); padding-bottom: 16px; }\nhtml body .dtk-compare thead th a { color: inherit; }\nhtml body .dtk-compare tbody th { font-weight: 500; color: var(--muted); width: 24%; }\nhtml body .dtk-compare td { color: var(--navy); font-variant-numeric: tabular-nums; }\nhtml body .dtk-todo { background: #fff3c4; color: #5c4700; padding: 1px 6px; border-radius: 3px; font-size: .88em; }\n\n\/* Options list *\/\nhtml body .dtk-options { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: 0 clamp(20px, 3vw, 40px); border-top: 2px solid var(--navy); }\nhtml body .dtk-options li { padding: 22px 0; border-bottom: 1px solid var(--line); }\nhtml body .dtk-options h3 { font-size: 1.15rem; margin-bottom: 6px; }\nhtml body .dtk-options p { font-size: .96rem; }\n\n\/* FAQ *\/\nhtml body .dtk-faq-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1.6fr); gap: clamp(28px, 5vw, 80px); align-items: start; }\nhtml body .dtk-faq-head { position: sticky; top: 24px; }\nhtml body .dtk-faq-head p { margin-top: 14px; }\nhtml body .dtk-faq-list { border-top: 2px solid var(--navy); }\nhtml body .dtk-faq details { border-bottom: 1px solid var(--line); }\nhtml body .dtk-faq summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; gap: 18px; align-items: center; padding: 20px 0; font-family: var(--display); font-weight: 600; font-size: 1.12rem; color: var(--navy); }\nhtml body .dtk-faq summary::-webkit-details-marker { display: none; }\nhtml body .dtk-faq summary .dtk-ic-plus { width: 22px; height: 22px; transition: transform .25s ease; }\nhtml body .dtk-faq details[open] .dtk-ic-plus { transform: rotate(45deg); }\nhtml body .dtk-faq summary:hover span { text-decoration: underline; text-decoration-color: var(--blue); text-decoration-thickness: 2px; text-underline-offset: 4px; }\nhtml body .dtk-faq-a { padding: 0 40px 22px 0; max-width: 62ch; }\n\n\/* Contact band *\/\nhtml body .dtk-contact { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, 1fr); background: var(--blue-soft); color: var(--ink); } \/* lichtblauw: los van de navy footer (Noah, 07-10) *\/\nhtml body .dtk-contact-media { position: relative; min-height: 380px; }\nhtml body .dtk-contact-media img { position: absolute; inset: 0; width: 100%; height: 100% !important; object-fit: cover; object-position: 70% 30%; }\nhtml body .dtk-contact-body { padding: clamp(40px, 6vw, 96px) var(--gutter) clamp(44px, 6.5vw, 104px) clamp(28px, 5vw, 80px); max-width: 640px; align-self: center; }\n\/* Kleur met .dtk ervoor: de oude dtk-CSS in de Elementor-site-instellingen (post-4) zet html body .dtk-contact h2 wit. *\/\nhtml body .dtk .dtk-contact h2 { color: var(--navy); }\nhtml body .dtk-contact h2 { margin-bottom: 16px; }\nhtml body .dtk-contact p { margin-bottom: 28px !important; }\n\n\/* Lightbox: arrows beside the photo, caption and counter below *\/\nhtml body .dtk-lightbox { border: 0; padding: 0; background: rgb(14,26,31); max-width: 100vw; max-height: 100vh; width: 100vw; height: 100vh; margin: 0; }\nhtml body .dtk-lightbox::backdrop { background: rgba(14,26,31,.97); }\nhtml body .dtk-lightbox-inner { position: relative; width: 100%; height: 100%; display: grid; grid-template-columns: auto minmax(0, 1fr) auto; align-items: center; gap: clamp(8px, 2vw, 28px); padding: 64px clamp(8px, 3vw, 40px) 24px; }\nhtml body .dtk-lightbox figure { margin: 0; display: grid; justify-items: center; align-content: center; gap: 6px; min-height: 0; height: 100%; }\nhtml body .dtk-lightbox img { max-width: 100%; max-height: calc(100vh - 170px); width: auto; height: auto; object-fit: contain; border-radius: 3px; }\nhtml body .dtk-lightbox figcaption { color: rgba(255,255,255,.9); text-align: center; padding-top: 10px; font-size: .98rem; max-width: 60ch; }\nhtml body .dtk-lb-count { color: rgba(255,255,255,.65); font-size: .88rem; font-variant-numeric: tabular-nums; margin: 0 !important; }\nhtml body .dtk-lightbox button { font: inherit; font-family: var(--display); font-weight: 600; color: var(--white); background: rgba(255,255,255,.12); border: 0; min-width: 48px; min-height: 48px; padding: 0 16px; border-radius: var(--r-s); cursor: pointer; transition: background-color .2s ease; }\nhtml body .dtk-lightbox button:hover { background: rgba(255,255,255,.24); }\nhtml body .dtk-lightbox .dtk-lb-nav { width: 56px; height: 56px; padding: 0; border-radius: 50%; font-size: 1.3rem; }\nhtml body .dtk-lightbox .dtk-lb-close { position: absolute; top: 12px; right: 12px; }\n@media (max-width: 700px) {\n  html body .dtk-lightbox-inner { grid-template-columns: minmax(0, 1fr); padding-inline: 12px; }\n  html body .dtk-lightbox .dtk-lb-nav { position: absolute; top: 50%; transform: translateY(-50%); z-index: 1; background: rgba(14,26,31,.6); width: 48px; height: 48px; }\n  html body .dtk-lightbox .dtk-lb-prev { left: 8px; }\n  html body .dtk-lightbox .dtk-lb-next { right: 8px; }\n  html body .dtk-lightbox figure { grid-row: 1; grid-column: 1; }\n}\n\n\/* Responsive *\/\n@media (max-width: 1080px) {\n  html body .dtk-facts { grid-template-columns: repeat(2, 1fr); }\n  html body .dtk-facts > div:nth-child(3) { border-left: 0; }\n  html body .dtk-facts > div:nth-child(n+3) { border-top: 1px solid var(--line); }\n  html body .dtk-steps { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 36px; }\n  html body .dtk-options { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n}\n@media (max-width: 900px) {\n  html body .dtk-feature, html body .dtk-feature--flip { grid-template-columns: 1fr; min-height: 0; }\n  html body .dtk-feature--flip .dtk-feature-media { order: 0; }\n  \/* Foto in de flow: in WebKit werd een vlak met alleen aspect-ratio en een absolute foto 0 px hoog. *\/\n  html body .dtk-feature-media { min-height: 0; }\n  html body .dtk-feature-media img { position: relative; inset: auto; height: auto !important; aspect-ratio: 4 \/ 3; }\n  html body .dtk-feature-body, html body .dtk-feature--flip .dtk-feature-body { padding: 28px var(--gutter) 0; max-width: none; justify-self: stretch; }\n  html body .dtk-index { grid-template-columns: 1fr; }\n  html body .dtk-split, html body .dtk-split--flip { grid-template-columns: 1fr; }\n  html body .dtk-split-media, html body .dtk-split--flip .dtk-split-media { order: -1; margin: 0 calc(var(--gutter) * -1); }\n  html body .dtk-split-media img, html body .dtk-split--flip .dtk-split-media img { border-radius: 0; }\n  html body .dtk-models { grid-template-columns: 1fr; gap: 48px; }\n  html body .dtk-config { grid-template-columns: 1fr; }\n  html body .dtk-mosaic { grid-template-columns: 1fr; }\n  html body .dtk-m-a, html body .dtk-m-b, html body .dtk-m-c, html body .dtk-m-d { grid-column: 1; }\n  html body .dtk-mosaic img { aspect-ratio: 16 \/ 10 !important; }\n  html body .dtk-faq-grid { grid-template-columns: 1fr; }\n  html body .dtk-faq-head { position: static; }\n  html body .dtk-contact { grid-template-columns: 1fr; }\n  html body .dtk-contact-media { min-height: 0; aspect-ratio: 16 \/ 10; }\n  html body .dtk-contact-body { padding-left: var(--gutter); }\n  html body .dtk-steps--3 { grid-template-columns: 1fr; }\n}\n@media (max-width: 600px) {\n  html body .dtk { font-size: 16px; }\n  html body .dtk-facts { grid-template-columns: 1fr 1fr; }\n  html body .dtk-facts > div { padding: 16px 14px; }\n  html body .dtk-steps { grid-template-columns: 1fr; }\n  html body .dtk-step img { aspect-ratio: 4 \/ 3; }\n  html body .dtk-options { grid-template-columns: 1fr; }\n  html body .dtk-faq-a { padding-right: 0; }\n  html body .dtk-hero-copy { margin-top: 32px; }\n  html body .dtk-seg { display: flex; }\n  html body .dtk-seg button { flex: 1 1 auto; padding: 10px; }\n}\n@media (prefers-reduced-motion: reduce) {\n  html body .dtk *, html body .dtk *::before, html body .dtk *::after { transition: none !important; scroll-behavior: auto !important; }\n}\nhtml body .dtk .dtk-mt { margin-top: 16px; }\nhtml body .dtk .dtk-mt-l { margin-top: 28px; }\nhtml body .dtk-gallery-band { padding-bottom: clamp(24px, 4vw, 48px); }\nhtml body .dtk-strip:focus-visible { outline-offset: -3px; }\nhtml body .dtk .dtk-sr { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }\nhtml body .dtk-crumbs a { display: inline-block; padding-block: 4px; }\nhtml body .dtk-compare thead th a { display: inline-block; padding-block: 3px; }\nhtml body .dtk-hero h1 { overflow-wrap: anywhere; hyphens: manual; }\n@media (max-width: 360px) { html body .dtk-hero h1 { font-size: 2.15rem; } }\n\/* E\u00e9n lang woord dat breder is dan de tekstkolom: vanaf tablet op \u00e9\u00e9n regel, over de foto heen. *\/\n@media (min-width: 768px) { html body .dtk-nowrap-md { white-space: nowrap; } }\n@media (max-width: 700px) {\n  html body .dtk-hero::after { background: linear-gradient(0deg, rgba(20,38,46,.9) 0%, rgba(20,38,46,.72) 55%, rgba(20,38,46,.45) 100%); }\n}\n\n\/* Carousel *\/\nhtml body .dtk-carousel { position: relative; }\nhtml body .dtk-carousel-nav { position: absolute; right: 0; top: -72px; display: flex; gap: 8px; }\nhtml body .dtk-carousel-nav[hidden] { display: none; }\nhtml body .dtk-carousel-btn { width: 48px; height: 48px; border-radius: 50%; border: 2px solid var(--navy); background: var(--white); color: var(--navy); display: grid; place-items: center; cursor: pointer; transition: background-color .2s ease, color .2s ease, opacity .2s ease; }\nhtml body .dtk-carousel-btn svg { width: 20px; height: 20px; }\nhtml body .dtk-carousel-btn:hover:not(:disabled) { background: var(--navy); color: var(--white); }\nhtml body .dtk-carousel-btn:disabled { opacity: .3; cursor: default; }\nhtml body .dtk-carousel-track { display: grid; grid-auto-flow: column; grid-auto-columns: calc((100% - 2 * clamp(16px, 2vw, 28px)) \/ 3.25); gap: clamp(16px, 2vw, 28px); overflow-x: auto; scroll-snap-type: x mandatory; scroll-behavior: smooth; scrollbar-width: none; padding-bottom: 8px; margin-right: calc((min(100vw, 1920px) - min(100vw, 1240px)) \/ -2 - var(--gutter)); padding-right: var(--gutter); }\nhtml body .dtk-carousel-track::-webkit-scrollbar { display: none; }\nhtml body .dtk-card { scroll-snap-align: start; }\nhtml body .dtk-card a { display: grid; gap: 6px; text-decoration: none; }\nhtml body .dtk-card-media { display: block; aspect-ratio: 4 \/ 3; overflow: hidden; border-radius: var(--r-s); background: var(--concrete); margin-bottom: 10px; }\nhtml body .dtk-card-media img { width: 100%; height: 100% !important; object-fit: cover; transition: transform .5s ease; }\nhtml body .dtk-card-media--fit img { object-fit: contain; padding: 8%; mix-blend-mode: multiply; }\nhtml body .dtk-card a:hover .dtk-card-media img { transform: scale(1.04); }\nhtml body .dtk-card-t { display: flex; align-items: center; justify-content: space-between; gap: 12px; font-family: var(--display); font-weight: 600; font-size: 1.25rem; color: var(--navy); }\nhtml body .dtk-card-t .dtk-ic { width: 22px; height: 22px; transition: transform .2s ease; }\nhtml body .dtk-card a:hover .dtk-card-t .dtk-ic { transform: translateX(4px); }\nhtml body .dtk-card-d { color: var(--ink); font-size: .96rem; }\n\n\/* Strip items open the lightbox *\/\nhtml body .dtk-strip-item { font: inherit; padding: 0; border: 0; background: none; cursor: zoom-in; flex: none; scroll-snap-align: start; border-radius: var(--r-s); overflow: hidden; }\nhtml body .dtk-strip-item img { transition: opacity .2s ease; }\nhtml body .dtk-strip-item:hover img { opacity: .85; }\n\n\/* Model notes (OKS) *\/\nhtml body .dtk-model-note { font-size: .92rem; background: var(--blue-soft); color: var(--navy); padding: 12px 14px; border-radius: var(--r-s); margin: 0 0 20px !important; }\n\n@media (max-width: 1080px) {\n  html body .dtk-carousel-track { grid-auto-columns: calc((100% - clamp(16px, 2vw, 28px)) \/ 2.2); }\n  html body .dtk-carousel-nav { position: static; justify-content: flex-end; margin-bottom: 14px; }\n}\n@media (max-width: 600px) {\n  html body .dtk-carousel-track { grid-auto-columns: 78%; }\n}\n@media (max-width: 900px) {\n}\nhtml body .dtk-btn--outline { background: transparent; color: var(--navy) !important; box-shadow: inset 0 0 0 2px var(--navy); }\nhtml body .dtk-btn--outline:hover { background: var(--navy); color: var(--white) !important; }\n\n\/* Photo slider *\/\nhtml body .dtk-slider-band { padding-block: clamp(48px, 7vw, 96px); }\nhtml body .dtk-slider-viewport { margin-right: calc((min(100vw, 1920px) - min(100vw, 1240px)) \/ -2 - var(--gutter)); }\nhtml body .dtk-slider-track { display: flex; gap: clamp(12px, 1.6vw, 20px); overflow-x: auto; scroll-snap-type: x mandatory; scrollbar-width: none; padding-right: var(--gutter); }\nhtml body .dtk-slider-track::-webkit-scrollbar { display: none; }\nhtml body .dtk-slide { flex: 0 0 min(62%, 760px); scroll-snap-align: start; }\nhtml body .dtk-slide-btn { position: relative; display: block; width: 100%; padding: 0; border: 0; background: var(--concrete); border-radius: var(--r-s); overflow: hidden; cursor: zoom-in; }\nhtml body .dtk .dtk-slide-btn img { width: 100%; aspect-ratio: 3 \/ 2; height: auto; object-fit: cover; transition: transform .5s ease, opacity .3s ease; }\nhtml body .dtk-slide:not(.is-current) .dtk-slide-btn img { opacity: .55; }\nhtml body .dtk-slide-btn:hover img { transform: scale(1.02); }\nhtml body .dtk-slide-zoom { position: absolute; right: 12px; bottom: 12px; width: 40px; height: 40px; border-radius: 50%; background: rgba(31,55,65,.85); color: var(--white); display: grid; place-items: center; opacity: 0; transition: opacity .2s ease; }\nhtml body .dtk-slide-zoom svg { width: 18px; height: 18px; }\nhtml body .dtk-slide-btn:hover .dtk-slide-zoom, html body .dtk-slide-btn:focus-visible .dtk-slide-zoom, html body .dtk-slide.is-current .dtk-slide-zoom { opacity: 1; }\nhtml body .dtk-slider-bar { display: flex; align-items: center; justify-content: space-between; gap: 16px 24px; margin-top: 18px; flex-wrap: wrap; }\nhtml body .dtk-slider-cap { margin: 0 !important; display: flex; gap: 14px; align-items: baseline; color: var(--ink); font-size: .96rem; min-width: 0; flex: 1 1 280px; }\nhtml body .dtk-slider-count { font-family: var(--display); font-weight: 600; color: var(--navy); font-variant-numeric: tabular-nums; white-space: nowrap; }\nhtml body .dtk-slider-count b { font-weight: 600; }\nhtml body .dtk-slider-ctrl { display: flex; gap: 8px; align-items: center; }\nhtml body .dtk-slider-zoom { display: inline-flex; align-items: center; gap: 8px; height: 48px; padding: 0 18px; border-radius: 999px; border: 2px solid var(--navy); background: var(--white); color: var(--navy); font: inherit; font-family: var(--display); font-weight: 600; cursor: pointer; transition: background-color .2s ease, color .2s ease; }\nhtml body .dtk-slider-zoom svg { width: 18px; height: 18px; }\nhtml body .dtk-slider-zoom:hover { background: var(--navy); color: var(--white); }\n@media (max-width: 600px) {\n  html body .dtk-slide { flex-basis: 86%; }\n  html body .dtk-slider-zoom-t { display: none; }\n  html body .dtk-slider-zoom { width: 48px; padding: 0; justify-content: center; }\n}\nhtml body .dtk img.dtk-brand-logo { width: 190px; height: auto; margin-bottom: 22px; }\n\n\/* Life stages: vertical timeline, calf left, text right, the calf grows per stage *\/\nhtml body .dtk-stages { position: relative; display: grid; gap: clamp(40px, 6vw, 72px); --rail: clamp(34%, 40%, 460px); }\nhtml body .dtk-stages::before { content: ''; position: absolute; top: 8px; bottom: 8px; left: var(--rail); width: 2px; background: var(--line); }\nhtml body .dtk-stage { display: grid; grid-template-columns: var(--rail) minmax(0, 1fr); align-items: start; position: relative; }\nhtml body .dtk-stage::before { content: ''; position: absolute; left: var(--rail); top: 4px; width: 18px; height: 18px; margin-left: -8px; border-radius: 50%; background: var(--white); border: 3px solid var(--navy); box-sizing: border-box; }\nhtml body .dtk-stage-media { display: flex; justify-content: flex-end; align-items: flex-end; padding-right: clamp(24px, 4vw, 56px); border-bottom: 2px solid var(--navy); margin-right: -1px; }\nhtml body .dtk .dtk-stage-media img.dtk-calf { width: auto; max-width: 100%; height: auto; display: block; margin-bottom: -4px; }\nhtml body .dtk .dtk-stage-media img.dtk-calf--zittend { width: 58%; }\nhtml body .dtk .dtk-stage-media img.dtk-calf--groepje { width: 86%; }\nhtml body .dtk .dtk-stage-media img.dtk-calf--groep { width: 92%; }\nhtml body .dtk-stage-body { padding-left: clamp(28px, 4vw, 56px); align-self: start; }\nhtml body .dtk-stage-when { display: inline-block; font-family: var(--display); font-weight: 600; color: var(--navy); font-size: .9rem; background: var(--blue-soft); padding: 4px 10px; border-radius: 999px; margin-bottom: 12px !important; }\nhtml body .dtk-stage h3 { font-size: clamp(1.4rem, 1.1rem + .9vw, 1.9rem); margin-bottom: 10px; }\nhtml body .dtk-stage p { max-width: 48ch; }\nhtml body .dtk-stage-links { margin-top: 18px; display: grid; max-width: 460px; }\nhtml body .dtk-stage-links a { display: flex; align-items: center; justify-content: space-between; gap: 12px; padding: 12px 0; border-top: 1px solid var(--line); text-decoration: none; font-weight: 500; color: var(--navy); }\nhtml body .dtk-stage-links a:last-child { border-bottom: 1px solid var(--line); }\nhtml body .dtk-stage-links a:hover { color: #0f7fb3; }\nhtml body .dtk-stage-links small { color: var(--muted); font-weight: 400; font-size: .85rem; display: block; }\n@media (max-width: 760px) {\n  html body .dtk-stages { --rail: 10px; gap: 48px; }\n  html body .dtk-stages::before { left: 9px; }\n  html body .dtk-stage { grid-template-columns: 1fr; padding-left: 36px; }\n  html body .dtk-stage::before { left: 10px; top: 0; bottom: auto; }\n  html body .dtk-stage-media { justify-content: flex-start; padding-right: 0; margin: 0 0 18px; }\n  html body .dtk .dtk-stage-media img.dtk-calf--zittend { width: 56%; }\n  html body .dtk .dtk-stage-media img.dtk-calf--groepje { width: 84%; }\n  html body .dtk .dtk-stage-media img.dtk-calf--groep { width: 90%; }\n  html body .dtk-stage-body { padding-left: 0; }\n}\n\n\/* Keuzehulp: \u00e9\u00e9n vraag tegelijk op een vlak, daarna maximaal drie uitkomsten naast elkaar. *\/\nhtml body .dtk-find-quiz { border: 1px solid var(--line); border-radius: var(--r-m); padding: clamp(20px, 3.5vw, 40px); max-width: 60rem; }\nhtml body .dtk-find-top, html body .dtk-find-result-head { display: flex; align-items: center; justify-content: space-between; gap: 16px; flex-wrap: wrap; }\nhtml body .dtk-find-step { margin: 0 !important; font-size: .9rem; color: var(--muted); font-variant-numeric: tabular-nums; }\nhtml body .dtk-find-back { background: none; border: 0; padding: 6px 0; font: inherit; font-size: .92rem; color: var(--navy); text-decoration: underline; text-underline-offset: 3px; cursor: pointer; }\nhtml body .dtk-find-back:hover { color: #0f7fb3; }\nhtml body .dtk-find-bar { height: 4px; background: var(--line); border-radius: 2px; margin: 12px 0 clamp(20px, 3vw, 32px); overflow: hidden; }\nhtml body .dtk-find-bar span { display: block; height: 100%; background: var(--blue); transition: width .3s ease; }\nhtml body .dtk-find-q { border: 0; margin: 0; padding: 0; min-width: 0; }\nhtml body .dtk-find-q legend { padding: 0; margin-bottom: 18px; }\nhtml body .dtk-find-qt { font-family: var(--display); font-weight: 600; color: var(--navy); font-size: clamp(1.3rem, 1.05rem + .9vw, 1.75rem); line-height: 1.2; outline: none; }\nhtml body .dtk-find-answers { display: grid; grid-template-columns: repeat(auto-fit, minmax(190px, 1fr)); gap: 10px; }\nhtml body .dtk-find-answers button { font: inherit; font-weight: 600; color: var(--navy); text-align: left; background: var(--white); border: 1.5px solid #b9c5c9; border-radius: var(--r-s); padding: 16px 18px; cursor: pointer; transition: border-color .15s ease, background-color .15s ease; }\nhtml body .dtk-find-answers button:hover { border-color: var(--navy); }\nhtml body .dtk-find-answers button[aria-pressed=\"true\"] { border-color: var(--navy); background: var(--blue-soft); }\nhtml body .dtk-find-answers button:focus-visible, html body .dtk-find-back:focus-visible { outline: 3px solid var(--navy); outline-offset: 2px; }\nhtml body .dtk-find-result-head { margin-bottom: clamp(20px, 3vw, 32px); }\nhtml body .dtk-find-result-head h3 { font-size: clamp(1.4rem, 1.1rem + .9vw, 1.9rem); outline: none; }\nhtml body .dtk-find-list { list-style: none; margin: 0; padding: 0; display: grid; grid-template-columns: repeat(auto-fill, minmax(min(100%, 300px), 1fr)); gap: clamp(24px, 3vw, 40px); }\nhtml body .dtk-find-card { display: grid; align-content: start; gap: 14px; }\nhtml body .dtk-find-media { display: block; aspect-ratio: 4 \/ 3; overflow: hidden; border-radius: var(--r-s); background: var(--concrete); }\nhtml body .dtk-find-media img { width: 100%; height: 100% !important; object-fit: cover; }\nhtml body .dtk-find-best { display: inline-block; margin: 0 0 8px !important; font-family: var(--display); font-weight: 600; font-size: .85rem; color: var(--navy); background: var(--blue-soft); padding: 3px 10px; border-radius: 999px; }\nhtml body .dtk-find-body h4 { font-family: var(--display); font-size: 1.3rem; color: var(--navy); margin: 0 0 8px; line-height: 1.2; }\nhtml body .dtk-find-body h4 a { color: inherit; text-decoration: none; }\nhtml body .dtk-find-body h4 a:hover { color: #0f7fb3; }\nhtml body .dtk-find-body > p { font-size: .96rem; }\nhtml body .dtk-find-why { display: flex; flex-wrap: wrap; align-items: baseline; gap: 6px 8px; margin: 12px 0 16px; font-size: .88rem; }\nhtml body .dtk-find-why span { color: var(--muted); }\nhtml body .dtk-find-why ul { display: contents; list-style: none; }\nhtml body .dtk-find-why li { color: var(--navy); border: 1px solid var(--line); border-radius: 999px; padding: 2px 10px; }\nhtml body .dtk-find-why li[hidden] { display: none; }\nhtml body .dtk-find-actions { display: flex; flex-wrap: wrap; align-items: center; gap: 12px 20px; }\nhtml body .dtk-find-note { margin-top: clamp(24px, 3vw, 36px) !important; padding-top: 18px; border-top: 1px solid var(--line); color: var(--muted); }\nhtml body .dtk-find-note a { color: var(--navy); font-weight: 600; }\nhtml body .dtk-finder [hidden] { display: none !important; }\n\n\/* Offerte-popup *\/\nhtml body .dtk-quote { border: 0; padding: 0; margin: auto; width: min(1040px, calc(100vw - 32px)); max-height: min(760px, calc(100dvh - 32px)); border-radius: var(--r-m); background: var(--white); color: var(--ink); box-shadow: 0 30px 80px -20px rgba(14,26,31,.55); overflow: hidden; font-family: var(--text); font-size: 16px; line-height: 1.55; }\nhtml body .dtk-quote::backdrop { background: rgba(14,26,31,.72); }\nhtml body .dtk-q-shell { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); height: min(760px, calc(100dvh - 32px)); }\nhtml body .dtk-q-panel { position: relative; background: var(--navy); color: var(--white); overflow: hidden; }\nhtml body .dtk-q-panel-img { position: absolute; inset: 0; width: 100%; height: 100% !important; object-fit: cover; opacity: .9; transition: opacity .3s ease; }\nhtml body .dtk-q-panel::after { content: ''; position: absolute; inset: 0; background: linear-gradient(0deg, rgba(20,38,46,.95) 0%, rgba(20,38,46,.55) 45%, rgba(20,38,46,.1) 75%); }\nhtml body .dtk-q-panel-copy { position: absolute; left: 0; right: 0; bottom: 0; z-index: 1; padding: 28px clamp(20px, 3vw, 36px); }\nhtml body .dtk-q-panel-k { font-family: var(--display); color: var(--blue); font-weight: 500; margin: 0 0 4px !important; }\nhtml body .dtk-q-panel-t { font-family: var(--display); font-weight: 600; font-size: 1.7rem; line-height: 1.1; margin: 0 0 18px !important; color: var(--white); }\nhtml body .dtk-q-panel-steps { counter-reset: q; display: grid; gap: 10px; font-size: .92rem; color: rgba(255,255,255,.88); }\nhtml body .dtk-q-panel-steps li { counter-increment: q; display: flex; gap: 10px; align-items: baseline; }\nhtml body .dtk-q-panel-steps li::before { content: counter(q); flex: none; width: 22px; height: 22px; border-radius: 50%; background: rgba(255,255,255,.14); display: inline-grid; place-items: center; font-size: .78rem; font-weight: 600; font-family: var(--display); }\nhtml body .dtk-q-form { display: flex; flex-direction: column; min-height: 0; padding: 22px clamp(20px, 3.4vw, 40px) 20px; }\nhtml body .dtk-q-top { display: flex; justify-content: space-between; align-items: center; }\nhtml body .dtk-q-progress-t { margin: 0 !important; font-family: var(--display); font-weight: 600; color: var(--navy); font-size: .9rem; font-variant-numeric: tabular-nums; }\nhtml body .dtk-q-close { width: 44px; height: 44px; border-radius: 50%; border: 0; background: var(--concrete); color: var(--navy); display: grid; place-items: center; cursor: pointer; }\nhtml body .dtk-q-close svg { width: 18px; height: 18px; }\nhtml body .dtk-q-close:hover { background: var(--line); }\nhtml body .dtk-q-progress { height: 4px; background: var(--concrete); border-radius: 2px; margin: 12px 0 22px; overflow: hidden; }\nhtml body .dtk-q-progress span { display: block; height: 100%; width: 25%; background: var(--blue); transition: width .35s ease; }\nhtml body .dtk-q-step { border: 0; margin: 0; padding: 0 4px 8px 0; min-width: 0; flex: 1 1 auto; overflow-y: auto; }\nhtml body .dtk-q-step legend { padding: 0; margin-bottom: 14px; }\nhtml body .dtk-q-h { display: block; font-family: var(--display); font-weight: 600; font-size: clamp(1.4rem, 1.1rem + 1vw, 1.8rem); color: var(--navy); letter-spacing: -.015em; line-height: 1.15; outline: none; }\nhtml body .dtk-q-label { font-family: var(--display); font-weight: 600; color: var(--navy); margin: 18px 0 10px !important; }\nhtml body .dtk-q-hint { color: var(--muted); margin: -4px 0 14px !important; font-size: .95rem; }\nhtml body .dtk-q-choices { display: grid; grid-template-columns: 1fr 1fr; gap: 10px; }\nhtml body .dtk-q-choices > :last-child:nth-child(odd) { grid-column: 1 \/ -1; }\nhtml body .dtk-q-choice { position: relative; cursor: pointer; }\nhtml body .dtk-q-choice input, html body .dtk-q-chip input { position: absolute; opacity: 0; width: 1px; height: 1px; }\nhtml body .dtk-q-choice-box { display: grid; gap: 2px; height: 100%; padding: 12px 14px 12px 40px; border: 1.5px solid #b9c5c9; border-radius: var(--r-s); transition: border-color .15s ease, background-color .15s ease; position: relative; }\nhtml body .dtk-q-choice-box::before { content: ''; position: absolute; left: 14px; top: 15px; width: 16px; height: 16px; border-radius: 50%; border: 1.5px solid #8a979c; background: var(--white); }\nhtml body .dtk-q-choice-t { font-weight: 600; color: var(--navy); }\nhtml body .dtk-q-choice-s { font-size: .85rem; color: var(--muted); }\nhtml body .dtk-q-choice:hover .dtk-q-choice-box { border-color: var(--navy); }\nhtml body .dtk-q-choice input:checked + .dtk-q-choice-box { border-color: var(--navy); background: var(--blue-soft); }\nhtml body .dtk-q-choice input:checked + .dtk-q-choice-box::before { border: 5px solid var(--navy); }\nhtml body .dtk-q-choice input:focus-visible + .dtk-q-choice-box, html body .dtk-q-chip input:focus-visible + span { outline: 3px solid var(--navy); outline-offset: 2px; }\nhtml body .dtk-q-sub { margin-top: 4px; }\nhtml body .dtk-q-chips { display: flex; flex-wrap: wrap; gap: 8px; }\nhtml body .dtk-q-chip { position: relative; cursor: pointer; }\nhtml body .dtk-q-chip span { display: inline-flex; align-items: center; min-height: 40px; padding: 8px 14px; border-radius: 999px; border: 1.5px solid #b9c5c9; font-size: .92rem; color: var(--navy); transition: all .15s ease; }\nhtml body .dtk-q-chip:hover span { border-color: var(--navy); }\nhtml body .dtk-q-chip input:checked + span { background: var(--navy); border-color: var(--navy); color: var(--white); }\nhtml body .dtk-q-grid { display: grid; grid-template-columns: 1fr 1fr; gap: 14px 16px; }\nhtml body .dtk-q-field { display: grid; gap: 6px; margin-top: 14px; font-size: .92rem; color: var(--navy); font-weight: 500; }\nhtml body .dtk-q-grid .dtk-q-field { margin-top: 0; }\nhtml body .dtk-q-field abbr { text-decoration: none; color: #b3261e; }\nhtml body .dtk-quote input[type=text], html body .dtk-quote input[type=email], html body .dtk-quote input[type=tel], html body .dtk-quote input[type=number], html body .dtk-quote select, html body .dtk-quote textarea { font: inherit; font-weight: 400; color: var(--navy); width: 100%; min-height: 46px; padding: 10px 12px; border: 1.5px solid #8a979c; border-radius: var(--r-s); background: var(--white); }\nhtml body .dtk-quote textarea { resize: vertical; min-height: 96px; }\nhtml body .dtk-quote input:focus-visible, html body .dtk-quote select:focus-visible, html body .dtk-quote textarea:focus-visible { outline: 3px solid var(--blue); outline-offset: 0; border-color: var(--navy); }\nhtml body .dtk-quote [aria-invalid=\"true\"] { border-color: #b3261e; }\nhtml body .dtk-q-err { color: #b3261e; font-style: normal; font-size: .85rem; font-weight: 500; }\nhtml body .dtk-q-dims { display: flex; align-items: center; gap: 8px; }\nhtml body .dtk-q-dims span { color: var(--muted); }\nhtml body .dtk-q-drop { display: grid; justify-items: center; gap: 6px; padding: 28px 16px; border: 2px dashed #8a979c; border-radius: var(--r-m); background: var(--concrete); text-align: center; cursor: pointer; position: relative; transition: border-color .15s ease, background-color .15s ease; }\nhtml body .dtk-q-drop input { position: absolute; inset: 0; opacity: 0; cursor: pointer; }\nhtml body .dtk-q-drop:focus-within { outline: 3px solid var(--navy); outline-offset: 2px; }\nhtml body .dtk-q-drop.is-over, html body .dtk-q-drop:hover { border-color: var(--navy); background: var(--blue-soft); }\nhtml body .dtk-q-drop svg { width: 34px; height: 34px; color: var(--navy); }\nhtml body .dtk-q-drop-t { font-weight: 600; color: var(--navy); }\nhtml body .dtk-q-drop-s { font-size: .85rem; color: var(--muted); }\nhtml body .dtk-q-error { color: #b3261e; font-size: .9rem; margin: 10px 0 0 !important; }\nhtml body .dtk-q-thumbs { display: grid; grid-template-columns: repeat(auto-fill, minmax(84px, 1fr)); gap: 10px; margin-top: 14px !important; }\nhtml body .dtk-q-thumbs li { position: relative; }\nhtml body .dtk-q-thumbs img { width: 100%; aspect-ratio: 1; object-fit: cover; border-radius: var(--r-s); display: block; }\nhtml body .dtk-q-thumb-rm { position: absolute; top: 4px; right: 4px; width: 28px; height: 28px; border-radius: 50%; border: 0; background: rgba(14,26,31,.8); color: var(--white); font-size: 1.1rem; line-height: 1; cursor: pointer; }\nhtml body .dtk-q-hp { position: absolute; left: -9999px; width: 1px; height: 1px; overflow: hidden; }\nhtml body .dtk-q-privacy { font-size: .84rem; color: var(--muted); margin-top: 16px !important; }\nhtml body .dtk-q-nav { display: flex; justify-content: flex-end; align-items: center; gap: 12px; padding-top: 16px; border-top: 1px solid var(--line); margin-top: 8px; }\nhtml body .dtk-q-back { margin-right: auto; font: inherit; font-family: var(--display); font-weight: 600; color: var(--navy); background: none; border: 0; min-height: 44px; padding: 0 6px; cursor: pointer; text-decoration: underline; text-underline-offset: 4px; }\nhtml body .dtk-q-done { flex: 1; display: grid; align-content: center; justify-items: start; gap: 12px; outline: none; }\nhtml body .dtk-q-done svg { width: 56px; height: 56px; }\nhtml body .dtk-q-done p { margin: 0 !important; max-width: 44ch; }\nhtml body .dtk-q-demo { font-size: .85rem; color: var(--muted); }\n@media (max-width: 760px) {\n  html body .dtk-quote { width: 100vw; max-width: 100vw; max-height: 100dvh; height: 100dvh; border-radius: 0; }\n  html body .dtk-q-shell { grid-template-columns: 1fr; grid-template-rows: 120px minmax(0, 1fr); height: 100dvh; }\n  html body .dtk-q-panel-steps, html body .dtk-q-panel-k { display: none; }\n  html body .dtk-q-panel-copy { padding: 14px 20px; }\n  html body .dtk-q-panel-t { font-size: 1.3rem; margin: 0 !important; }\n  html body .dtk-q-choices, html body .dtk-q-grid { grid-template-columns: 1fr; }\n}\n@media (prefers-reduced-motion: reduce) { html body .dtk-q-progress span { transition: none; } }\nhtml body .dtk-quote [hidden] { display: none !important; }\nhtml body .dtk .dtk-q-h:focus, html body .dtk .dtk-q-h:focus-visible, html body .dtk .dtk-q-done:focus { outline: none; }\nhtml body .dtk-quote select { appearance: none; -webkit-appearance: none; min-height: 46px; padding-right: 36px; background: var(--white) url(\"data:image\/svg+xml,%3Csvg xmlns='http:\/\/www.w3.org\/2000\/svg' viewBox='0 0 20 20'%3E%3Cpath d='M5 8l5 5 5-5' fill='none' stroke='%231f3741' stroke-width='2'\/%3E%3C\/svg%3E\") no-repeat right 10px center \/ 18px; }\nhtml body .dtk-q-choice-box { padding-block: 10px; }\nhtml body .dtk-q-label { margin: 14px 0 8px !important; }\nhtml body .dtk-q-chip span { min-height: 38px; padding: 6px 13px; }\nhtml body .dtk-q-form { min-height: 0; overflow: hidden; }\n@media (max-width: 760px) {\n  html body .dtk-q-shell { grid-template-rows: 96px minmax(0, 1fr); }\n  html body .dtk-q-form { padding: 14px 16px 12px; }\n  html body .dtk-q-progress { margin: 10px 0 16px; }\n  html body .dtk-q-nav { padding-top: 12px; }\n}\n@media (max-height: 520px) {\n  html body .dtk-quote { width: 100vw; max-width: 100vw; height: 100dvh; max-height: 100dvh; border-radius: 0; }\n  html body .dtk-q-shell { grid-template-columns: 1fr; grid-template-rows: minmax(0, 1fr); height: 100dvh; }\n  html body .dtk-q-panel { display: none; }\n}\nhtml body .dtk-q-step { min-height: 0; flex: 1 1 0; }\nhtml body .dtk-q-nav { flex: none; }\n\n\/* Modellen onder elkaar: foto links, tekeningen en maten rechts *\/\nhtml body .dtk-mrows { display: grid; gap: clamp(40px, 5vw, 64px); }\nhtml body .dtk-mrow { display: grid; grid-template-columns: minmax(0, 0.9fr) minmax(0, 1.1fr); gap: clamp(24px, 4vw, 56px); align-items: start; padding-top: clamp(32px, 4vw, 48px); border-top: 2px solid var(--navy); }\nhtml body .dtk-mrow:first-child { border-top: 0; padding-top: 0; }\nhtml body .dtk .dtk-mrow-media img { width: 100%; aspect-ratio: 4 \/ 3; object-fit: cover; border-radius: var(--r-s); }\nhtml body .dtk-mrow-body h3 { font-size: clamp(1.5rem, 1.2rem + 1vw, 2rem); margin-bottom: 4px; }\nhtml body .dtk-mrow-draw { display: grid; grid-template-columns: minmax(0, .8fr) minmax(0, 1.2fr); gap: 12px; margin: 18px 0 8px; }\nhtml body .dtk-mrow-draw--q { grid-template-columns: minmax(0, 1.25fr) minmax(0, 1fr); }\nhtml body .dtk-draw { margin: 0; background: var(--concrete); border-radius: var(--r-s); padding: 16px 12px 10px; display: grid; align-content: space-between; justify-items: center; gap: 8px; }\nhtml body .dtk-draw figcaption { font-family: var(--display); font-weight: 600; font-size: .82rem; color: var(--muted); justify-self: start; }\nhtml body .dtk-draw .dtk-plan { max-width: 170px; }\nhtml body .dtk-mrow-draw--q .dtk-plan { max-width: 100%; }\nhtml body .dtk-side { width: 100%; height: auto; font-family: var(--display); overflow: visible; }\nhtml body .dtk-side-wall { fill: var(--blue-soft); stroke: var(--navy); stroke-width: 2.5; stroke-linejoin: round; }\nhtml body .dtk-side-roof { stroke: var(--navy); stroke-width: 5; stroke-linecap: round; fill: none; }\nhtml body .dtk-side-plinth { fill: var(--white, #fff); }\nhtml body .dtk-side-plinth-edge { fill: none; stroke: var(--navy); stroke-width: 1.5; }\nhtml body .dtk-side-label--s { font-size: 9.5px; }\nhtml body .dtk-side-plinth-hatch { stroke: var(--muted); stroke-width: .8; }\nhtml body .dtk-side-ground { stroke: var(--muted); stroke-width: 1; stroke-dasharray: 2 3; }\nhtml body .dtk-side-label { font-size: 10.5px; fill: var(--navy); font-weight: 600; text-anchor: middle; }\nhtml body .dtk-mrow-spec { display: grid; grid-template-columns: 1fr 1fr; column-gap: 24px; margin: 14px 0 18px; }\nhtml body .dtk-mrow-spec div { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line); font-size: .94rem; }\nhtml body .dtk-mrow-spec dt { color: var(--muted); }\nhtml body .dtk-mrow-spec dd { margin: 0; font-weight: 600; color: var(--navy); text-align: right; font-variant-numeric: tabular-nums; }\nhtml body .dtk-mrow .dtk-model-note { margin-bottom: 18px !important; }\n@media (max-width: 1080px) { html body .dtk-mrow-spec { grid-template-columns: 1fr; } }\n@media (max-width: 900px) { html body .dtk-mrow { grid-template-columns: 1fr; } }\n@media (max-width: 520px) { html body .dtk-mrow-draw, html body .dtk-mrow-draw--q { grid-template-columns: 1fr; } html body .dtk-draw .dtk-plan { max-width: 150px; } }\nhtml body .dtk-draw { grid-template-rows: minmax(0, 1fr) auto; }\nhtml body .dtk-draw > svg, html body .dtk-draw > .dtk-plan-static { align-self: center; }\nhtml body .dtk-section--tint .dtk-draw { background: var(--white); }\nhtml body .dtk-mrow-spec--1 { grid-template-columns: 1fr; }\nhtml body .dtk-mrow-spec--1 dd { max-width: 60%; }\nhtml body .dtk-front-hek { fill: none; stroke: var(--navy); stroke-width: 1.4; }\nhtml body .dtk-front-bar { stroke: var(--navy); stroke-width: .8; }\n\/* Modelrij v2: foto en tekeningen links, maten en knop rechts *\/\nhtml body .dtk-mrow { grid-template-columns: minmax(0, 1.1fr) minmax(0, 0.9fr); }\nhtml body .dtk-mrow-left { display: grid; gap: 12px; min-width: 0; }\nhtml body .dtk-mrow-left .dtk-mrow-draw { margin: 0; }\nhtml body .dtk-mrow-draw--q { grid-template-columns: minmax(0, 1.3fr) minmax(0, 1fr); }\nhtml body .dtk-draw-note { font-size: .82rem; color: var(--muted); margin: 0 !important; line-height: 1.5; }\nhtml body .dtk-mrow-body .dtk-actions { margin-top: 22px; }\nhtml body .dtk-mrow-body h3 { margin-top: 4px; }\nhtml body .dtk-mrow-left .dtk-mrow-draw:not(.dtk-mrow-draw--q) { grid-template-columns: minmax(0, .55fr) minmax(0, 1.45fr); }\nhtml body .dtk-mrow-left .dtk-draw .dtk-plan { max-width: 120px; }\nhtml body .dtk-model-note, html body .dtk-mrow-spec dd { overflow-wrap: anywhere; }\n@media (max-width: 600px) {\n  html body .dtk-mrow-spec--1 div { flex-direction: column; gap: 2px; }\n  html body .dtk-mrow-spec--1 dd { max-width: none; text-align: left; }\n}\n\n\/* Modelrij: foto en tekeningen openen samen in de lightbox (modelMedia in lib.mjs). *\/\nhtml body .dtk-mrow-media { position: relative; display: block; width: 100%; padding: 0; border: 0; background: none; border-radius: var(--r-s); overflow: hidden; cursor: zoom-in; }\nhtml body .dtk-mrow-media img { transition: transform .5s ease; }\nhtml body .dtk-mrow-media:hover img { transform: scale(1.02); }\nhtml body .dtk-draw { position: relative; }\nhtml body .dtk-draw-zoom { position: absolute; inset: 0; padding: 0; border: 0; background: none; border-radius: var(--r-s); cursor: zoom-in; }\nhtml body .dtk-mrow-media .dtk-slide-zoom, html body .dtk-draw-zoom .dtk-slide-zoom { opacity: 1; }\nhtml body .dtk-draw-zoom .dtk-slide-zoom { right: 8px; bottom: 8px; width: 34px; height: 34px; }\nhtml body .dtk-draw-zoom .dtk-slide-zoom svg { width: 15px; height: 15px; }\nhtml body .dtk-draw-zoom:focus-visible { outline: 3px solid var(--blue); outline-offset: 2px; }\nhtml body .dtk-lb-draw { width: min(1100px, 100%); background: var(--concrete); border-radius: var(--r-s); padding: clamp(16px, 4vw, 48px); display: grid; place-items: center; min-height: 0; }\nhtml body .dtk-lb-draw svg { width: 100%; height: auto; max-height: calc(100vh - 230px); }\nhtml body .dtk-lb-draw .dtk-plan { max-width: none; width: auto; height: calc(100vh - 260px); max-width: 100%; }\nhtml body .dtk-lb-draw[hidden], html body .dtk-lightbox img[hidden] { display: none; }\n\/* Mobiel: tekeningen onder elkaar, de plattegrond niet breder dan nodig. *\/\n@media (max-width: 900px) {\n  \/* Staat na de desktopregel voor .dtk-mrow, anders blijft de rij op mobiel in twee kolommen. *\/\n  html body .dtk-mrow { grid-template-columns: minmax(0, 1fr); }\n}\n@media (max-width: 600px) {\n  html body .dtk-mrow-left .dtk-mrow-draw:not(.dtk-mrow-draw--q), html body .dtk-mrow-left .dtk-mrow-draw--q { grid-template-columns: minmax(0, 1fr); }\n  html body .dtk-mrow-left .dtk-draw .dtk-plan { max-width: 140px; }\n  html body .dtk-mrow-left .dtk-draw .dtk-side { max-width: 420px; }\n}\n\nhtml body .dtk-swipe-count { display: none; }\n\n\/* Mobiel: modelhok (foto + tekeningen) en klapbodemstappen als veegcarrousel.\n   Items zijn smaller dan het scherm, zodat de volgende zichtbaar in beeld piept. *\/\n@media (max-width: 600px) {\n  html body .dtk-mrow-left, html body .dtk-steps--swipe {\n    display: flex; gap: 12px; overflow-x: auto; overscroll-behavior-x: contain;\n    scroll-snap-type: x mandatory; scroll-padding-inline: var(--gutter);\n    margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter);\n    scrollbar-width: none;\n  }\n  html body .dtk-mrow-left::-webkit-scrollbar, html body .dtk-steps--swipe::-webkit-scrollbar { display: none; }\n  html body .dtk-mrow-left .dtk-mrow-draw { display: contents; }\n  html body .dtk-mrow-left > .dtk-mrow-media, html body .dtk-mrow-left .dtk-draw { flex: 0 0 84%; scroll-snap-align: start; }\n  html body .dtk-mrow-left .dtk-draw { aspect-ratio: 4 \/ 3; grid-template-rows: minmax(0, 1fr) auto; padding: 14px 12px 10px; }\n  html body .dtk-mrow-left .dtk-draw > svg { width: 100%; height: 100%; min-height: 0; max-width: none; }\n  html body .dtk-mrow-left .dtk-draw .dtk-plan, html body .dtk-mrow-left .dtk-draw .dtk-side { max-width: none; }\n  \/* Plattegrond links in zijn vlak, zodat de doorkijk vanaf de foto al een stuk tekening laat zien. *\/\n  html body .dtk-mrow-left .dtk-draw > .dtk-plan { width: auto; justify-self: start; }\n  html body .dtk-steps--swipe { gap: 16px; }\n  html body .dtk-steps--swipe > .dtk-step { flex: 0 0 80%; scroll-snap-align: start; }\n  html body .dtk-steps--swipe:focus-visible { outline: 3px solid var(--blue); outline-offset: 4px; }\n  html body .dtk-swipe-count { display: block; margin: 10px 0 0 !important; font-family: var(--display); font-weight: 600; font-size: .96rem; color: var(--navy); font-variant-numeric: tabular-nums; }\n  html body .dtk-swipe-count b { font-weight: 600; }\n  \/* In de modelrij is de teller een grid-item; de rij-afstand is hier 24px, dus terug naar 10px onder de foto. *\/\n  html body .dtk-mrow > .dtk-swipe-count { margin-top: -14px !important; }\n}\n\n\/* ---------------------------------------------------------------- Biestmanagement *\/\n\/* Waar koop je het: op offerte (navy lijn) of in de webshop (blauw vlak). *\/\nhtml body .dtk-tag { display: inline-flex; align-items: center; gap: 6px; font-family: var(--display); font-size: .78rem; font-weight: 600; letter-spacing: .01em; line-height: 1; padding: 6px 9px; border-radius: 999px; white-space: nowrap; }\nhtml body .dtk-tag--shop { background: var(--blue-soft); color: var(--navy); }\nhtml body .dtk-tag--quote { box-shadow: inset 0 0 0 1.5px var(--navy); color: var(--navy); }\nhtml body .dtk-tag::before { content: ''; width: 6px; height: 6px; border-radius: 50%; background: currentColor; }\nhtml body .dtk-tag--shop::before { background: var(--blue); }\n\n\/* Vier stappen, \u00e9\u00e9n zak: een doorlopende lijn met een punt per stap. *\/\nhtml body .dtk-flow { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(20px, 2.4vw, 36px); counter-reset: flow; }\nhtml body .dtk-flow-step { position: relative; padding-top: 44px; counter-increment: flow; }\nhtml body .dtk-flow-step::before { content: counter(flow); position: absolute; top: 0; left: 0; width: 30px; height: 30px; border-radius: 50%; background: var(--navy); color: var(--white); font-family: var(--display); font-weight: 600; font-size: .95rem; display: grid; place-items: center; font-variant-numeric: tabular-nums; z-index: 1; }\nhtml body .dtk-flow-step::after { content: ''; position: absolute; top: 14px; left: 30px; right: calc(clamp(20px, 2.4vw, 36px) * -1); height: 2px; background: var(--line); }\nhtml body .dtk-flow-step:last-child::after { display: none; }\nhtml body .dtk-flow-step h3 { margin-bottom: 8px; }\nhtml body .dtk-flow-step > p { font-size: .95rem; margin-bottom: 18px !important; }\nhtml body .dtk-flow-step--quote::before { background: var(--white); color: var(--navy); box-shadow: inset 0 0 0 2px var(--navy); }\n\/* Kop, tekst en productlijst op dezelfde hoogte in alle kolommen (subgrid); mobiel, in \u00e9\u00e9n kolom, gewoon onder elkaar. *\/\n@media (min-width: 601px) {\n  html body .dtk-flow { grid-auto-rows: auto; }\n  html body .dtk-flow-step { display: grid; grid-template-rows: subgrid; grid-row: span 4; row-gap: 0; align-content: start; }\n  html body .dtk-flow-step > * { align-self: start; }\n}\n\n\/* Productregel: miniatuur op wit, naam, label. De shopfoto's zijn klein; ze blijven klein. *\/\nhtml body .dtk-prods { display: grid; gap: 2px; }\nhtml body .dtk-prod { display: grid; grid-template-columns: 56px minmax(0, 1fr); align-items: center; column-gap: 12px; row-gap: 4px; padding: 8px 0; border-top: 1px solid var(--line); text-decoration: none; color: var(--navy); }\nhtml body .dtk-prod:last-child { border-bottom: 1px solid var(--line); }\nhtml body .dtk-prod-img { grid-row: span 2; width: 56px; height: 56px; background: var(--white); border-radius: var(--r-s); box-shadow: inset 0 0 0 1px var(--line); overflow: hidden; }\nhtml body .dtk-prod-img img { width: 100%; height: 100%; object-fit: contain; padding: 4px; }\nhtml body .dtk-prod-n { font-weight: 600; font-size: .92rem; line-height: 1.3; }\nhtml body .dtk-prod .dtk-tag { justify-self: start; }\nhtml body a.dtk-prod:hover .dtk-prod-n { text-decoration: underline; text-underline-offset: 3px; }\nhtml body .dtk-section--tint .dtk-prod-img { box-shadow: none; }\n\n\/* Zakken bestellen: inhoud x verpakking, elke cel \u00e9\u00e9n link naar de shop. *\/\nhtml body .dtk-bags-scroll { overflow-x: auto; margin-inline: calc(var(--gutter) * -1); padding-inline: var(--gutter); }\n\/* Astra zet randen op elke table, th en td (main.min.css); hier eerst alles op nul, dan alleen de horizontale lijnen. *\/\nhtml body .dtk-bags { width: 100%; min-width: 560px; border-collapse: collapse; border: 0; font-variant-numeric: tabular-nums; }\nhtml body .dtk-bags th, html body .dtk-bags td { padding: 14px 12px; text-align: left; vertical-align: middle; border: 0; border-bottom: 1px solid var(--line); }\nhtml body .dtk-bags thead th { border-bottom: 2px solid var(--navy); font-family: var(--display); color: var(--navy); font-weight: 600; font-size: 1.05rem; }\nhtml body .dtk-bags thead th:first-child { width: 28%; }\nhtml body .dtk-bags-size { display: flex; align-items: center; gap: 12px; }\nhtml body .dtk-bags-size img { width: 52px; height: 52px; object-fit: contain; background: var(--white); border-radius: var(--r-s); padding: 3px; }\nhtml body .dtk-bags tbody th { font-weight: 600; color: var(--navy); }\nhtml body .dtk-bags tbody th small { display: block; font-weight: 400; color: var(--muted); font-size: .86rem; }\nhtml body .dtk-bags a { display: inline-flex; align-items: center; gap: 8px; font-weight: 600; text-decoration: none; padding: 8px 12px 8px 0; }\nhtml body .dtk-bags a .dtk-ic { color: var(--navy); transition: transform .2s ease; }\nhtml body .dtk-bags a:hover { text-decoration: underline; text-underline-offset: 3px; }\nhtml body .dtk-bags a:hover .dtk-ic { transform: translateX(3px); }\nhtml body .dtk-bags-n { display: block; font-weight: 400; color: var(--muted); font-size: .86rem; }\n\n\/* Uitgelichte accessoires: raster met lijnen, geen kaarten. *\/\nhtml body .dtk-shopgrid { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: 0 clamp(16px, 2vw, 28px); }\nhtml body .dtk-shopgrid li { border-top: 2px solid var(--navy); padding: 18px 0 26px; }\nhtml body .dtk-shopgrid a { display: grid; gap: 10px; justify-items: start; text-decoration: none; color: var(--navy); }\nhtml body .dtk-shopgrid .dtk-shop-img { justify-self: stretch; }\nhtml body .dtk-shopgrid .dtk-shop-img { aspect-ratio: 1; background: var(--white); border-radius: var(--r-s); display: grid; place-items: center; overflow: hidden; }\nhtml body .dtk-shopgrid .dtk-shop-img img { width: 72%; height: 72%; object-fit: contain; }\nhtml body .dtk-shopgrid h3 { font-size: 1.02rem; }\nhtml body .dtk-shopgrid p { font-size: .9rem; color: var(--ink); margin: 0 !important; }\nhtml body .dtk-shopgrid a:hover h3 { text-decoration: underline; text-underline-offset: 3px; }\n\n\/* Modelrij met productbeeld (pasteurs): wit vlak, contain. *\/\nhtml body .dtk-pmedia { background: var(--white); border-radius: var(--r-m); aspect-ratio: 4 \/ 3; display: grid; place-items: center; box-shadow: inset 0 0 0 1px var(--line); }\nhtml body .dtk-pmedia img { width: 78%; height: 86%; object-fit: contain; }\nhtml body .dtk-section--tint .dtk-pmedia { box-shadow: none; }\n\nhtml body .dtk-split--top { align-items: start; }\n\n@media (max-width: 1080px) {\n  html body .dtk-flow { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 40px; }\n  html body .dtk-flow-step:nth-child(2)::after { display: none; }\n  html body .dtk-shopgrid { grid-template-columns: repeat(3, minmax(0, 1fr)); }\n}\n@media (max-width: 760px) {\n  html body .dtk-shopgrid { grid-template-columns: repeat(2, minmax(0, 1fr)); }\n}\n@media (max-width: 600px) {\n  \/* Op mobiel staan de stappen onder elkaar; de lijn loopt verticaal langs de nummers. *\/\n  html body .dtk-flow { grid-template-columns: 1fr; row-gap: 0; }\n  html body .dtk-flow-step { padding: 0 0 32px 48px; }\n  html body .dtk-flow-step::after, html body .dtk-flow-step:nth-child(2)::after { display: block; top: 30px; left: 14px; right: auto; bottom: 0; width: 2px; height: auto; }\n  html body .dtk-flow-step:last-child::after { display: none; }\n  html body .dtk-flow-step h3 { padding-top: 3px; }\n}\n\n\/* ---------------------------------------------------------------- Homepage *\/\nhtml body .dtk-hero--home { min-height: clamp(440px, 62vh, 620px); }\nhtml body .dtk-hero--home .dtk-hero-inner { justify-content: center; }\nhtml body .dtk-hero--home .dtk-hero-copy { margin-top: 0; }\n\/* Rij OKS-afdelingen: uitsnede naar rechts, waar de rij met kalveren de diepte in loopt (zichtbaar op smalle schermen). *\/\nhtml body .dtk-hero--home .dtk-hero-img { object-position: 50% 70%; } \/* oks-windmolens: lucht en windmolens links (tekst), stal rechtsonder *\/\n@media (max-width: 767px) { html body .dtk-hero--home .dtk-hero-img { object-position: 22% 70%; } } \/* mobiel: de stal met kalveren *\/\n\n\/* Kalfassistent: navy vlak, zoeken links, antwoorden rechts. *\/\nhtml body .dtk-assist { background: var(--blue-soft); color: var(--ink); padding-block: clamp(48px, 7vw, 96px); }\nhtml body .dtk-assist-grid { display: grid; grid-template-columns: minmax(0, 1fr) minmax(0, .62fr); gap: clamp(20px, 3vw, 48px); align-items: end; }\nhtml body .dtk-assist-intro > p { margin: 12px 0 22px; max-width: 40rem; }\nhtml body .dtk-assist-form label { display: block; font-family: var(--display); font-weight: 600; color: var(--navy); margin-bottom: 8px; }\nhtml body .dtk-assist-field { display: flex; gap: 8px; }\nhtml body .dtk-assist-field input { flex: 1; min-width: 0; font: inherit; font-size: 1rem; color: var(--navy); background: var(--white); border: 1.5px solid #8a979e; border-radius: var(--r-s); padding: 13px 16px; }\nhtml body .dtk-assist-field input::placeholder { color: #5f6b73; }\nhtml body .dtk-assist-field input:focus-visible { outline: 3px solid var(--navy); outline-offset: 2px; }\nhtml body .dtk-assist-field input::-webkit-search-cancel-button { cursor: pointer; }\nhtml body .dtk-assist-chips { display: flex; flex-wrap: wrap; gap: 8px; margin-top: 16px; }\nhtml body .dtk-assist-chips button { font: inherit; font-size: .9rem; color: var(--navy); background: var(--white); border: 1px solid #8a979e; border-radius: 999px; padding: 7px 14px; cursor: pointer; }\nhtml body .dtk-assist-chips button:hover { border-color: var(--navy); }\nhtml body .dtk-assist-out { background: var(--white); color: var(--ink); border-radius: var(--r-m); padding: clamp(18px, 2.4vw, 28px); margin-top: 22px; box-shadow: 0 10px 30px rgba(31, 55, 65, .08); }\nhtml body .dtk-assist-status { font-family: var(--display); font-weight: 600; color: var(--navy); margin-bottom: 4px !important; }\nhtml body .dtk-assist-list details { border-bottom: 1px solid var(--line); }\nhtml body .dtk-assist-list summary { list-style: none; cursor: pointer; display: flex; justify-content: space-between; gap: 16px; align-items: center; padding: 15px 0; font-weight: 600; color: var(--navy); }\nhtml body .dtk-assist-list summary::-webkit-details-marker { display: none; }\nhtml body .dtk-assist-list summary .dtk-ic-plus { width: 20px; height: 20px; transition: transform .25s ease; }\nhtml body .dtk-assist-list details[open] .dtk-ic-plus { transform: rotate(45deg); }\nhtml body .dtk-assist-list summary:hover span { text-decoration: underline; text-decoration-color: var(--blue); text-decoration-thickness: 2px; text-underline-offset: 4px; }\nhtml body .dtk-assist-a { padding: 0 0 18px; }\nhtml body .dtk-assist-a p { margin-bottom: 10px !important; }\nhtml body .dtk-assist-a mark { background: var(--blue-soft); color: inherit; border-radius: 2px; }\nhtml body .dtk-assist-none { padding: 14px 0; border-bottom: 1px solid var(--line); }\nhtml body .dtk-assist-help { margin: 18px 0 0 !important; display: flex; flex-wrap: wrap; align-items: center; gap: 6px 18px; font-size: .95rem; }\nhtml body .dtk-assist-help a { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; }\n\n\/* Van biest tot groep: vier fases naast elkaar, foto boven. *\/\nhtml body .dtk-journey { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(20px, 2.4vw, 32px); }\nhtml body .dtk-journey-card { display: grid; gap: 4px; text-decoration: none; color: var(--navy); }\nhtml body .dtk-journey-img { display: block; overflow: hidden; border-radius: var(--r-m); margin-bottom: 12px; }\nhtml body .dtk-journey img { width: 100%; aspect-ratio: 4 \/ 3; object-fit: cover; transition: transform .5s ease; }\nhtml body .dtk-journey-card:hover img { transform: scale(1.03); }\nhtml body .dtk-journey-h { font-family: var(--display); font-weight: 600; font-size: 1.25rem; line-height: 1.2; }\nhtml body .dtk-journey-link { display: inline-flex; align-items: center; gap: 8px; margin-top: 6px; font-weight: 600; font-size: .95rem; color: var(--navy); }\nhtml body .dtk-journey-card:hover .dtk-journey-link { text-decoration: underline; text-underline-offset: 3px; }\nhtml body .dtk-journey-when { font-family: var(--display); font-weight: 500; font-size: .9rem; color: var(--muted); }\n\n\/* Kalverhuisvesting: raster van drie, OKS groot. *\/\nhtml body .dtk-bento { display: grid; grid-template-columns: minmax(0, 1.6fr) minmax(0, 1fr); grid-template-rows: auto auto; gap: clamp(16px, 2vw, 24px); }\nhtml body .dtk-bento-a { grid-row: span 2; }\nhtml body .dtk-bento-a, html body .dtk-bento-b { display: flex; flex-direction: column; background: var(--white); border-radius: var(--r-m); overflow: hidden; text-decoration: none; color: var(--ink); }\nhtml body .dtk-bento-img { display: block; overflow: hidden; }\nhtml body .dtk-bento-img img { width: 100%; height: 100%; object-fit: cover; transition: transform .5s ease; }\nhtml body .dtk-bento-a .dtk-bento-img { flex: 1; min-height: 320px; }\nhtml body .dtk-bento-b .dtk-bento-img { aspect-ratio: 16 \/ 9; }\nhtml body .dtk-bento-a:hover img, html body .dtk-bento-b:hover img { transform: scale(1.02); }\nhtml body .dtk-bento-body { display: grid; gap: 6px; padding: 18px 22px 22px; font-size: .95rem; }\nhtml body .dtk-bento-t { display: flex; justify-content: space-between; align-items: center; gap: 12px; font-family: var(--display); font-weight: 600; font-size: 1.2rem; color: var(--navy); }\nhtml body .dtk-bento-c { background: var(--blue-soft); color: var(--ink); border-radius: var(--r-m); padding: clamp(22px, 3vw, 32px); display: flex; flex-direction: column; align-items: flex-start; gap: 14px; }\nhtml body .dtk-bento-c h3 { font-size: 1.4rem; }\nhtml body .dtk-bento-c p { margin: 0 !important; }\n\n\/* Beursagenda: datum groot, naam en plaats, landcode. *\/\nhtml body .dtk-fairs { display: grid; grid-template-columns: repeat(2, minmax(0, 1fr)); column-gap: clamp(24px, 4vw, 64px); }\nhtml body .dtk-fairs li { display: grid; grid-template-columns: 7.5rem minmax(0, 1fr) auto; gap: 18px; align-items: center; padding: 16px 0; border-top: 1px solid var(--line); }\nhtml body .dtk-fairs li { border-bottom: 1px solid var(--line); border-top: 0; }\nhtml body .dtk-fair-date { display: grid; line-height: 1.15; }\nhtml body .dtk-fair-date b { font-family: var(--display); font-weight: 600; font-size: 1.35rem; color: var(--navy); font-variant-numeric: tabular-nums; }\nhtml body .dtk-fair-date span { font-size: .88rem; color: var(--muted); }\nhtml body .dtk-fair-name { display: grid; }\nhtml body .dtk-fair-name strong { font-family: var(--display); font-weight: 600; color: var(--navy); font-size: 1.1rem; }\nhtml body .dtk-fair-name span { font-size: .92rem; }\nhtml body .dtk-fair-land { display: block; width: 36px; line-height: 0; }\nhtml body .dtk-fair-land svg { display: block; width: 36px; height: 24px; border-radius: 3px; box-shadow: 0 0 0 1px var(--line); }\n\n@media (max-width: 1080px) {\n  html body .dtk-journey { grid-template-columns: repeat(2, minmax(0, 1fr)); row-gap: 40px; }\n}\n@media (max-width: 900px) {\n  html body .dtk-assist-grid { grid-template-columns: 1fr; }\n  html body .dtk-bento { grid-template-columns: 1fr; }\n  html body .dtk-bento-a { grid-row: auto; }\n  html body .dtk-bento-a .dtk-bento-img { min-height: 0; aspect-ratio: 16 \/ 10; flex: none; }\n}\n@media (max-width: 600px) {\n  html body .dtk-journey { grid-template-columns: 1fr; }\n  html body .dtk-assist-field { flex-direction: column; }\n  html body .dtk-fairs li { grid-template-columns: 6.2rem minmax(0, 1fr) auto; gap: 12px; }\n  html body .dtk-fair-date b { font-size: 1.15rem; }\n}\nhtml body .dtk-fairs li[hidden], html body .dtk-assist [hidden], html body .dtk-section[hidden] { display: none !important; }\n\n\/* Homepage ronde 2: videoknop in de hero, videovenster, persoonlijk advies. *\/\nhtml body .dtk-hero--home .dtk-hero-inner { position: relative; }\nhtml body .dtk-video-btn { position: absolute; right: var(--gutter); bottom: clamp(24px, 4vw, 48px); display: inline-flex; align-items: center; gap: 12px; font: inherit; font-family: var(--display); font-weight: 600; color: var(--white); background: rgba(20, 38, 46, .72); border: 1px solid rgba(255,255,255,.28); border-radius: 999px; padding: 8px 20px 8px 8px; cursor: pointer; backdrop-filter: blur(6px); -webkit-backdrop-filter: blur(6px); }\nhtml body .dtk-video-btn:hover { background: rgba(20, 38, 46, .88); }\nhtml body .dtk-video-play { width: 40px; height: 40px; border-radius: 50%; background: var(--blue); color: var(--navy); display: grid; place-items: center; }\nhtml body .dtk-video-play svg { width: 18px; height: 18px; margin-left: 2px; }\nhtml body .dtk-video-btn:focus-visible { outline: 3px solid var(--blue); outline-offset: 3px; }\nhtml body .dtk-video { width: min(1100px, 94vw); max-height: 94vh; padding: 0; border: 0; border-radius: var(--r-m); background: #0d1b21; color: rgba(255,255,255,.8); }\nhtml body .dtk-video::backdrop { background: rgba(10, 20, 25, .82); }\nhtml body .dtk-video-inner { position: relative; padding: 52px 16px 14px; }\nhtml body .dtk-video .dtk-lb-close { position: absolute; top: 10px; right: 12px; }\nhtml body .dtk-video-frame { position: relative; aspect-ratio: 16 \/ 9; background: #000; border-radius: var(--r-s); overflow: hidden; }\nhtml body .dtk-video-frame iframe { position: absolute; inset: 0; width: 100%; height: 100%; border: 0; }\nhtml body .dtk-video-note { font-size: .85rem; margin: 10px 2px 0 !important; }\n\nhtml body .dtk-people { display: grid; grid-template-columns: minmax(0, .85fr) minmax(0, 1.15fr); gap: clamp(28px, 5vw, 72px); align-items: center; }\nhtml body .dtk-people-grid { display: grid; grid-template-columns: 1.25fr 1fr; grid-template-rows: 1fr 1fr; gap: clamp(10px, 1.4vw, 18px); }\nhtml body .dtk-people-grid figure { margin: 0; overflow: hidden; border-radius: var(--r-m); }\nhtml body .dtk-people-grid img { width: 100%; height: 100%; object-fit: cover; }\nhtml body .dtk-people-a { grid-row: span 2; aspect-ratio: 4 \/ 5; }\nhtml body .dtk-people-b, html body .dtk-people-c { aspect-ratio: 4 \/ 3; }\n\n@media (max-width: 900px) {\n  html body .dtk-people { grid-template-columns: 1fr; }\n  html body .dtk-fairs { grid-template-columns: 1fr; }\n}\n@media (max-width: 700px) {\n  html body .dtk-video-btn { position: static; margin-top: 24px; align-self: flex-start; }\n  html body .dtk-hero--home .dtk-hero-inner { justify-content: flex-end; }\n}\n\n\/* Homepage ronde 3: verkopen eerst. *\/\nhtml body .dtk-hero--home { min-height: clamp(480px, 70vh, 680px); }\nhtml body .dtk-hero--home .dtk-hero-inner { padding-bottom: clamp(96px, 10vw, 140px); }\nhtml body .dtk-usps { position: relative; z-index: 2; display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(12px, 1.6vw, 20px); margin: clamp(-64px, -5vw, -48px) 0 0; }\nhtml body .dtk-usps li { display: flex; gap: 14px; align-items: flex-start; background: var(--white); border-radius: var(--r-m); padding: 20px 22px; box-shadow: 0 12px 32px rgba(31, 55, 65, .12); }\nhtml body .dtk-usps .dtk-ic { width: 22px; height: 22px; color: var(--navy); background: var(--blue-soft); border-radius: 50%; padding: 4px; box-sizing: content-box; flex: none; }\nhtml body .dtk-usps span { display: grid; gap: 2px; font-size: .92rem; }\nhtml body .dtk-usps strong { font-family: var(--display); font-weight: 600; color: var(--navy); font-size: 1.02rem; }\nhtml body .dtk-usps a { font-weight: 600; }\nhtml body .dtk-section--top { padding-top: clamp(48px, 6vw, 80px); }\nhtml body .dtk-row-head { display: flex; flex-wrap: wrap; align-items: baseline; justify-content: space-between; gap: 8px 24px; margin-bottom: clamp(22px, 3vw, 36px); }\nhtml body .dtk-row-head p { margin: 0 !important; width: 100%; }\n\n\/* Productgroepen als kaarten: beeld op wit, titel, regel, bekijken. *\/\nhtml body .dtk-cats { display: grid; grid-template-columns: repeat(4, minmax(0, 1fr)); gap: clamp(12px, 1.6vw, 20px); }\n\/* Kaart vult het hele rijvak via flex op de li, niet met height: 100% (dat hield de kaart op de rijhoogte vast terwijl\n   de inhoud met grotere tekst hoger werd: Bekijken viel dan op de rand). *\/\nhtml body .dtk-cats > li { display: flex; }\nhtml body .dtk-cats a { flex: 1 1 auto; min-width: 0; display: grid; grid-template-rows: auto auto 1fr auto; background: var(--white); border: 1px solid var(--line); border-radius: var(--r-m); padding: 16px 18px 18px; text-decoration: none; color: var(--ink); transition: box-shadow .25s ease, transform .25s ease; }\nhtml body .dtk-cats a:hover { box-shadow: 0 14px 34px rgba(31, 55, 65, .12); transform: translateY(-2px); }\n\/* Rij van 100%: anders rekent height: 100% op de foto als auto en wordt een vierkante foto hoger dan het 4:3-vak. *\/\nhtml body .dtk-cats-img { display: grid; grid-template-rows: 100%; place-items: center; aspect-ratio: 4 \/ 3; margin-bottom: 12px; overflow: hidden; }\nhtml body .dtk-cats-img img { width: 78%; height: 100%; object-fit: contain; }\nhtml body .dtk-cats-t { font-family: var(--display); font-weight: 600; font-size: 1.12rem; color: var(--navy); }\nhtml body .dtk-cats-s { font-size: .9rem; margin-top: 2px; }\nhtml body .dtk-cats-more { display: inline-flex; align-items: center; gap: 6px; margin-top: 12px; font-weight: 600; font-size: .92rem; color: var(--navy); }\nhtml body .dtk-cats-all a { background: var(--blue-soft); border-color: transparent; align-content: end; grid-template-rows: 1fr auto auto; }\nhtml body .dtk-cats-all .dtk-cats-t { font-size: 1.35rem; }\n\n\/* Kalfassistent met een gezicht: chat links, adviseur rechts op de onderrand. *\/\nhtml body .dtk-assist { padding-bottom: 0; overflow: hidden; }\nhtml body .dtk-assist-chat { padding-bottom: clamp(48px, 7vw, 96px); }\nhtml body .dtk-assist-person { position: relative; align-self: end; }\nhtml body .dtk-assist-person img { width: 100%; max-width: 420px; margin-left: auto; display: block; }\nhtml body .dtk-assist-bubble { position: absolute; top: 8%; left: -6%; z-index: 1; margin: 0 !important; background: var(--white); color: var(--navy); font-family: var(--display); font-weight: 600; padding: 12px 18px; border-radius: 18px 18px 18px 4px; box-shadow: 0 10px 26px rgba(31, 55, 65, .14); white-space: nowrap; }\n\n\/* Landschap met kalveren als overgang naar het CTA-blok. *\/\nhtml body .dtk-landscape { position: relative; height: clamp(120px, 14vw, 220px); margin-top: -1px; }\nhtml body .dtk-landscape svg { position: absolute; inset: 0; width: 100%; height: 100%; display: block; }\nhtml body .dtk .dtk-landscape-calves { position: absolute; left: 58%; bottom: 34%; width: clamp(160px, 22vw, 330px); height: auto; }\nhtml body .dtk-landscape + .dtk-contact { margin-top: -2px; }\n\n@media (max-width: 1080px) { html body .dtk-cats { grid-template-columns: repeat(3, minmax(0, 1fr)); } }\n@media (max-width: 900px) {\n  html body .dtk-usps { grid-template-columns: 1fr; margin-top: -40px; }\n  html body .dtk-assist-grid { grid-template-columns: 1fr; }\n  html body .dtk-assist-person { justify-self: center; width: min(260px, 70%); margin-top: -24px; }\n  html body .dtk-assist-person { text-align: center; }\n  html body .dtk-assist-bubble { position: relative; left: auto; top: auto; display: inline-block; margin-bottom: 10px !important; }\n  html body .dtk-assist-chat { padding-bottom: 32px; }\n  html body .dtk-assist { padding-bottom: 0; }\n}\n@media (max-width: 600px) { html body .dtk-cats { grid-template-columns: repeat(2, minmax(0, 1fr)); } html body .dtk-cats a { padding: 12px; } }\nhtml body .dtk-landscape { background: var(--concrete); }\n\nhtml body .dtk-hero--home .dtk-video-btn { bottom: clamp(96px, 9vw, 128px); }\nhtml body .dtk-cats-all .dtk-cats-img { place-items: end start; }\nhtml body .dtk-cats-all .dtk-cats-img img { width: 70%; height: auto; }\n\n@media (max-width: 600px) { html body .dtk-cats-t, html body .dtk-cats-s { hyphens: auto; overflow-wrap: break-word; } html body .dtk-cats-t { font-size: 1rem; } }\n\n\/* Kalfassistent als chat (ronde 4). *\/\nhtml body .dtk-sr { position: absolute !important; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); white-space: nowrap; }\nhtml body .dtk-chat { background: var(--white); border-radius: var(--r-m); box-shadow: 0 10px 30px rgba(31, 55, 65, .08); padding: clamp(14px, 2vw, 22px); display: grid; gap: 14px; }\nhtml body .dtk-chat-log { position: relative; display: flex; flex-direction: column; gap: 12px; max-height: 460px; overflow-y: auto; padding: 4px 2px; scroll-behavior: smooth; }\nhtml body .dtk-msg { max-width: 86%; padding: 12px 16px; border-radius: 16px; font-size: .97rem; }\nhtml body .dtk-msg p { margin: 0 0 8px !important; }\nhtml body .dtk-msg p:last-child { margin-bottom: 0 !important; }\nhtml body .dtk-msg-who { display: block; font-family: var(--display); font-weight: 600; font-size: .78rem; margin-bottom: 4px; }\nhtml body .dtk-msg--bot { align-self: flex-start; background: var(--blue-soft); color: var(--ink); border-bottom-left-radius: 4px; }\nhtml body .dtk-msg--bot .dtk-msg-who { color: var(--navy); }\nhtml body .dtk-msg--you { align-self: flex-end; background: var(--navy); color: var(--white); border-bottom-right-radius: 4px; }\nhtml body .dtk-msg--you .dtk-msg-who { color: rgba(255,255,255,.75); }\nhtml body .dtk-msg-lead { font-size: .88rem; color: var(--muted); }\nhtml body .dtk-msg-q { font-family: var(--display); font-weight: 600; color: var(--navy); }\nhtml body .dtk-msg .dtk-link { font-size: .93rem; }\nhtml body .dtk-msg-more { display: grid; gap: 4px; }\nhtml body .dtk-msg-links { display: flex; flex-wrap: wrap; gap: 6px 16px; }\nhtml body .dtk-msg-links a { display: inline-flex; align-items: center; gap: 6px; font-weight: 600; }\nhtml body .dtk-chat-chips { display: flex; flex-wrap: wrap; gap: 8px; }\nhtml body .dtk-chat-chips button { font: inherit; font-size: .88rem; color: var(--navy); background: var(--white); border: 1px solid #8a979e; border-radius: 999px; padding: 7px 14px; cursor: pointer; text-align: left; }\nhtml body .dtk-chat-chips button:hover { border-color: var(--navy); background: var(--blue-soft); }\nhtml body .dtk-chat-form { display: flex; gap: 8px; }\nhtml body .dtk-chat-form input { flex: 1; min-width: 0; font: inherit; font-size: 1rem; color: var(--navy); background: var(--white); border: 1.5px solid #8a979e; border-radius: 999px; padding: 12px 18px; }\nhtml body .dtk-chat-form input::placeholder { color: #5f6b73; }\nhtml body .dtk-chat-form input:focus-visible { outline: 3px solid var(--navy); outline-offset: 2px; }\nhtml body .dtk-chat-form .dtk-btn { border-radius: 999px; }\nhtml body .dtk-assist .dtk-assist-help { margin-top: 16px !important; }\n\/* Ballon met de punt rechtsonder, naar Karen toe. *\/\nhtml body .dtk-assist-bubble { left: -12%; top: 6%; border-radius: 18px 18px 4px 18px; }\nhtml body .dtk-assist-bubble::after { content: ''; position: absolute; right: 14px; bottom: -9px; border: 10px solid transparent; border-top-color: var(--white); border-bottom: 0; transform: skewX(-25deg); }\n@media (max-width: 900px) { html body .dtk-msg { max-width: 94%; } html body .dtk-assist-bubble { left: auto; } }\n\n\/* Pagina Veelgestelde vragen: onderwerpen links, vragen rechts. *\/\nhtml body .dtk-faqpage { display: grid; grid-template-columns: minmax(0, .32fr) minmax(0, 1fr); gap: clamp(28px, 5vw, 72px); align-items: start; }\nhtml body .dtk-faqpage-nav { position: sticky; top: calc(var(--dtk-sticky, 0px) + var(--dtk-admin, 0px) + 24px); } \/* onder de vaste menubalk: Next 60 px, WordPress zet --dtk-sticky zelf *\/\nhtml body .dtk-faqpage-nav h2 { font-size: 1.15rem; margin-bottom: 12px; }\nhtml body .dtk-faqpage-nav ul { display: grid; gap: 2px; }\nhtml body .dtk-faqpage-nav a { display: flex; justify-content: space-between; gap: 12px; padding: 9px 0; border-bottom: 1px solid var(--line); text-decoration: none; font-weight: 500; }\nhtml body .dtk-faqpage-nav a span { color: var(--muted); font-variant-numeric: tabular-nums; }\nhtml body .dtk-faqpage-groups { display: grid; gap: clamp(36px, 5vw, 64px); }\nhtml body .dtk-faqpage-head { display: flex; flex-wrap: wrap; justify-content: space-between; align-items: baseline; gap: 6px 20px; margin-bottom: 6px; }\nhtml body .dtk-faqpage-head h2 { font-size: clamp(1.4rem, 1.1rem + 1vw, 1.9rem); }\nhtml body .dtk-faqpage-group details, html body .dtk-faqpage-group { scroll-margin-top: calc(var(--dtk-sticky, 0px) + var(--dtk-admin, 0px) + 24px); }\n@media (max-width: 900px) { html body .dtk-faqpage { grid-template-columns: 1fr; } html body .dtk-faqpage-nav { position: static; } }\n\n\/* Van dag \u00e9\u00e9n tot groep als horizontale tijdlijn (ronde 5): lijn met een punt per fase. *\/\nhtml body .dtk-tl-track { padding-top: 26px; }\nhtml body .dtk-tl-item { position: relative; display: grid; align-content: start; gap: 10px; }\nhtml body .dtk-tl-item::before { content: ''; position: absolute; top: -19px; left: 0; right: calc(clamp(16px, 2vw, 28px) * -1); height: 2px; background: var(--line); }\nhtml body .dtk-tl-item::after { content: ''; position: absolute; top: -25px; left: 0; width: 14px; height: 14px; border-radius: 50%; background: var(--blue); box-shadow: 0 0 0 4px var(--white); }\nhtml body .dtk-tl-item:last-child::before { right: 0; }\nhtml body .dtk-tl-item .dtk-stage-when { justify-self: start; margin: 0 !important; }\nhtml body .dtk-tl-img { display: block; overflow: hidden; border-radius: var(--r-m); }\nhtml body .dtk-tl-img img { width: 100%; aspect-ratio: 4 \/ 3; object-fit: cover; }\nhtml body .dtk-tl-item h3 { margin-top: 4px; }\nhtml body .dtk-tl-item > p:not(.dtk-stage-when) { font-size: .95rem; margin: 0 !important; }\nhtml body .dtk-tl-item .dtk-stage-links { margin-top: 4px; }\nhtml body .dtk-timeline .dtk-carousel-nav { top: -64px; }\n@media (max-width: 700px) { html body .dtk-timeline .dtk-carousel-nav { top: auto; } }\n\n\/* Ballon rechts naast Karen, op schouderhoogte, met de punt naar haar toe (Noah, 07-10). *\/\nhtml body .dtk-assist-bubble { left: auto; right: -14%; top: 52%; border-radius: 18px 18px 18px 18px; }\nhtml body .dtk-assist-bubble::after { right: auto; left: 18px; bottom: auto; top: -9px; border: 10px solid transparent; border-bottom-color: var(--white); border-top: 0; transform: skewX(25deg); }\n@media (max-width: 1240px) { html body .dtk-assist-bubble { right: -4%; } }\n@media (max-width: 900px) { html body .dtk-assist-bubble { right: auto; top: auto; } html body .dtk-assist-bubble::after { display: none; } }\n\n\/* Kalvervoeding: voerplan in drie fases, melkpoederlijn als datasheet, shopartikelen per moment. *\/\n@media (min-width: 901px) { html body .dtk-flow--3 { grid-template-columns: repeat(3, minmax(0, 1fr)); } html body .dtk-flow--3 .dtk-flow-step:nth-child(2)::after { display: block; } }\nhtml body .dtk-flow-step .dtk-link { display: inline-flex; }\n\nhtml body .dtk-powders-head { display: grid; grid-template-columns: minmax(0, 1.15fr) minmax(0, .85fr); gap: clamp(24px, 4vw, 64px); align-items: end; }\nhtml body .dtk-powders-bags { display: grid; grid-template-columns: 1fr 1fr; gap: 12px; background: var(--blue-soft); border-radius: var(--r-m); padding: clamp(16px, 2vw, 28px); }\nhtml body .dtk-powders-bags img { width: 100%; aspect-ratio: 1; object-fit: contain; mix-blend-mode: multiply; }\nhtml body .dtk-powder-table { min-width: 820px; }\nhtml body .dtk-powder-table thead th:first-child { width: 20%; }\nhtml body .dtk-powder-table .dtk-num { text-align: right; white-space: nowrap; }\nhtml body .dtk-powder-table tbody th a { white-space: nowrap; }\nhtml body .dtk-powder-note { font-size: .9rem; min-width: 220px; }\nhtml body .dtk-meter { display: flex; align-items: center; gap: 12px; min-width: 190px; }\nhtml body .dtk-meter-bar { position: relative; flex: 1; height: 10px; border-radius: 999px; background: var(--concrete); overflow: hidden; }\nhtml body .dtk-meter-bar::after { content: ''; position: absolute; inset: 0; background: var(--blue); transform: scaleX(var(--v)); transform-origin: left; }\nhtml body .dtk-meter-v { min-width: 4.5ch; text-align: right; font-weight: 600; color: var(--navy); font-variant-numeric: tabular-nums; }\nhtml body .dtk-meter-none { font-size: .9rem; color: var(--muted); }\n\nhtml body .dtk-pmedia--photo { overflow: hidden; box-shadow: none; }\nhtml body .dtk-pmedia--photo img { width: 100%; height: 100%; object-fit: cover; }\n\nhtml body .dtk-need { display: grid; grid-template-columns: minmax(0, .34fr) minmax(0, 1fr); gap: clamp(16px, 3vw, 48px); border-top: 2px solid var(--navy); padding: 22px 0 40px; }\nhtml body .dtk-need-head h3 { font-size: 1.2rem; margin-bottom: 6px; }\nhtml body .dtk-need-head p { font-size: .92rem; color: var(--muted); margin: 0 !important; }\n@media (max-width: 900px) {\n  html body .dtk-powders-head { grid-template-columns: minmax(0, 1fr); }\n  html body .dtk-powders-bags { max-width: 420px; }\n  html body .dtk-need { grid-template-columns: minmax(0, 1fr); }\n}\n\/* Melkpoeders direct na het voerplan: twee witte secties op elkaar gaven dubbele witruimte. *\/\nhtml body .dtk-section:has(+ .dtk-powders) { padding-bottom: clamp(40px, 5vw, 64px); }\nhtml body .dtk-section + .dtk-powders { padding-top: 0; }\nhtml body .dtk-section + .dtk-powders .dtk-powders-head { border-top: 1px solid var(--line); padding-top: clamp(32px, 4vw, 56px); }\n\/* Aanvullende diervoeders als shopkaarten: beeld, naam, regel, live prijs (script.js) en winkelwagenknop. *\/\nhtml body .dtk-pcards { display: grid; grid-template-columns: repeat(3, minmax(0, 1fr)); gap: clamp(16px, 2vw, 28px); }\nhtml body .dtk-pcard { display: flex; flex-direction: column; gap: 14px; }\nhtml body .dtk-pcard-link { display: grid; gap: 8px; text-decoration: none; color: inherit; flex: 1; align-content: start; }\nhtml body .dtk-pcard-img { aspect-ratio: 1; background: var(--white); border-radius: var(--r-m); box-shadow: inset 0 0 0 1px var(--line); display: grid; place-items: center; overflow: hidden; margin-bottom: 6px; }\nhtml body .dtk-pcard-img img { width: 76%; height: 76%; object-fit: contain; transition: transform .4s ease; }\nhtml body .dtk-pcard-link:hover .dtk-pcard-img img { transform: scale(1.04); }\nhtml body .dtk-pcard-n { font-family: var(--display); font-weight: 600; color: var(--navy); line-height: 1.25; }\nhtml body .dtk-pcard-link:hover .dtk-pcard-n { text-decoration: underline; text-decoration-color: var(--blue); text-decoration-thickness: 2px; text-underline-offset: 3px; }\nhtml body .dtk-pcard-d { font-size: .88rem; line-height: 1.45; }\nhtml body .dtk-pcard-buy { display: grid; gap: 10px; padding-top: 12px; border-top: 1px solid var(--line); }\nhtml body .dtk-pcard-buy .dtk-price { min-height: 2.6em; }\nhtml body .dtk-pcard-buy .dtk-btn { justify-content: center; }\nhtml body .dtk-price { font-family: var(--display); font-weight: 600; font-size: 1.1rem; color: var(--navy); font-variant-numeric: tabular-nums; }\nhtml body .dtk-price small { display: block; font-family: var(--text); font-weight: 400; font-size: .76rem; color: var(--muted); }\nhtml body .dtk .dtk-btn--sm { min-height: 44px; padding: 10px 16px; font-size: .94rem; }\n@media (max-width: 1080px) { html body .dtk-pcards { grid-template-columns: repeat(2, minmax(0, 1fr)); } }\n\n\/* Melkpoedertabel op een telefoon: elke rij een blok (naam, balk, eiwit en vet, kenmerk) in plaats van zijwaarts scrollen. *\/\n@media (max-width: 760px) {\n  html body .dtk-bags-scroll:has(.dtk-powder-table) { overflow: visible; margin-inline: 0; padding-inline: 0; }\n  html body .dtk-powder-table { min-width: 0; }\n  html body .dtk-powder-table thead { position: absolute; width: 1px; height: 1px; overflow: hidden; clip: rect(0 0 0 0); }\n  html body .dtk-powder-table tbody tr { display: grid; grid-template-columns: auto auto 1fr; column-gap: 20px; row-gap: 6px; padding: 16px 0; border-bottom: 1px solid var(--line); }\n  html body .dtk-powder-table tbody tr:last-child { border-bottom: 0; }\n  html body .dtk-powder-table tbody th, html body .dtk-powder-table tbody td { padding: 0; border: 0; }\n  html body .dtk-powder-table tbody th, html body .dtk-powder-table tbody td:nth-child(2), html body .dtk-powder-table .dtk-powder-note { grid-column: 1 \/ -1; }\n  html body .dtk-powder-table .dtk-num { text-align: left; font-size: .92rem; color: var(--navy); font-weight: 600; }\n  html body .dtk-powder-table .dtk-num::before { content: attr(data-l) ' '; font-weight: 400; color: var(--muted); }\n  html body .dtk-powder-table .dtk-powder-note { min-width: 0; }\n  html body .dtk-meter { min-width: 0; max-width: 340px; }\n}\nhtml body .dtk-prod-n, html body .dtk-pcard-n { overflow-wrap: anywhere; }\n\n<\/style>\n<div class=\"dtk\" lang=\"en\">\n\n<header class=\"dtk-hero\">\n  <img fetchpriority=\"high\" class=\"dtk-hero-img\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda-erf.webp\" srcset=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda-erf-640.webp 640w, https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda-erf.webp 2200w\" sizes=\"100vw\" width=\"2200\" height=\"1466\" alt=\"A farm worker puts a Perfect Udder bag into the Matilda, in front of a row of calf pens with calves\" fetchpriority=\"high\" decoding=\"async\">\n  <div class=\"dtk-hero-inner dtk-wrap\">\n    <nav class=\"dtk-crumbs\" aria-label=\"Breadcrumb\"><ol><li><a href=\"https:\/\/dairytop.eu\/en\/\">Home<\/a><\/li><li><span aria-current=\"page\">Colostrum management<\/span><\/li><\/ol><\/nav>\n    <div class=\"dtk-hero-copy\">\n      <p class=\"dtk-hero-kicker\">Perfect Udder<\/p>\n      <h1>Colostrum management<\/h1>\n      <p class=\"dtk-lead\">With the Perfect Udder bag, colostrum stays in one bag from milking to feeding. You pasteurise, cool, freeze and warm it in that bag, and feed straight from it.<\/p>\n      <div class=\"dtk-actions\"><a class=\"dtk-btn\" href=\"#zakken\">Order bags<\/a><a class=\"dtk-btn dtk-btn--ghost\" href=\"https:\/\/dairytop.eu\/en\/contact\/\" data-quote=\"biest\">Advice on pasteurising<\/a><\/div>\n    <\/div>\n  <\/div>\n<\/header>\n<div class=\"dtk-wrap\"><dl class=\"dtk-facts\"><div><dt>From milking to feeding<\/dt><dd>In bag or bulk<\/dd><\/div><div><dt>Bag sizes<\/dt><dd>2, 3 or 4 litres<\/dd><\/div><div><dt>Pasteurisers, on quotation<\/dt><dd>4 models<\/dd><\/div><div><dt>Bags and accessories<\/dt><dd>Online shop<\/dd><\/div><\/dl><\/div>\n\n<section class=\"dtk-section\" aria-labelledby=\"alle-h\">\n  <div class=\"dtk-wrap\">\n    <div class=\"dtk-head\">\n      <h2 id=\"alle-h\">Everything for colostrum management<\/h2>\n      <p>Pasteurisers are supplied on quotation. Bags and accessories you order straight from the shop.<\/p>\n    <\/div>\n    <div class=\"dtk-carousel\" data-carousel>\n  <div class=\"dtk-carousel-nav\">\n    <button type=\"button\" class=\"dtk-carousel-btn\" data-dir=\"-1\" aria-controls=\"biest-cat\" aria-label=\"Previous categories\"><svg viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M12.5 4.5L7 10l5.5 5.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button>\n    <button type=\"button\" class=\"dtk-carousel-btn\" data-dir=\"1\" aria-controls=\"biest-cat\" aria-label=\"Next categories\"><svg viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M7.5 4.5L13 10l-5.5 5.5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/button>\n  <\/div>\n  <ul class=\"dtk-carousel-track\" id=\"biest-cat\" aria-label=\"Colostrum management categories\">\n    <li class=\"dtk-card\"><a href=\"https:\/\/dairytop.eu\/en\/pasteurisers\/\">\n      <span class=\"dtk-card-media dtk-card-media--fit\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-matilda.webp\" srcset=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-matilda-640.webp 640w, https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-matilda.webp 1200w\" sizes=\"auto, (min-width: 1000px) 30vw, 80vw\" width=\"1200\" height=\"1200\" alt=\"Matilda colostrum pasteuriser\" loading=\"lazy\" decoding=\"async\"><\/span>\n      <span class=\"dtk-card-t\">Pasteurisers<svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>\n      <span class=\"dtk-card-d\">Matilda and the Adda 10G, 30G and 60G. On quotation.<\/span>\n    <\/a><\/li>\n    <li class=\"dtk-card\"><a href=\"https:\/\/dairytop.eu\/en\/product-category\/perfect-udder-colostrum-management\/colostrum-bags\/\">\n      <span class=\"dtk-card-media dtk-card-media--fit\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-kit-4.webp\" width=\"238\" height=\"238\" alt=\"Perfect Udder 4 litre bag\" loading=\"lazy\" decoding=\"async\"><\/span>\n      <span class=\"dtk-card-t\">Colostrum bags<svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>\n      <span class=\"dtk-card-d\">Bags of 2, 3 and 4 litres, from sample kit to bulk. In the shop.<\/span>\n    <\/a><\/li>\n    <li class=\"dtk-card\"><a href=\"https:\/\/dairytop.eu\/en\/product-category\/perfect-udder-colostrum-management\/accessories-2\/\">\n      <span class=\"dtk-card-media dtk-card-media--fit\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-refrac-ma871.webp\" width=\"531\" height=\"531\" alt=\"MA871 digital refractometer\" loading=\"lazy\" decoding=\"async\"><\/span>\n      <span class=\"dtk-card-t\">Accessories<svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/span>\n      <span class=\"dtk-card-d\">Filling stations, refractometers, teats and drench tubes. In the shop.<\/span>\n    <\/a><\/li>\n  <\/ul>\n<\/div>\n  <\/div>\n<\/section>\n\n<section class=\"dtk-section dtk-section--tint\" id=\"werkwijze\" aria-labelledby=\"flow-h\">\n  <div class=\"dtk-wrap\">\n    <div class=\"dtk-head\">\n      <p class=\"dtk-kicker\">From cow to calf<\/p>\n      <h2 id=\"flow-h\">Colostrum in four steps, in one bag<\/h2>\n      <p>Each step shows what you need, and whether you order it from the shop or on quotation.<\/p>\n    <\/div>\n    <ol class=\"dtk-flow\">\n      <li class=\"dtk-flow-step\">\n        <h3>Check the quality<\/h3>\n        <p>Test the colostrum before you store it. A refractometer measures the Brix value; the colostrometer shows the quality straight away in green, yellow or red.<\/p>\n        <div class=\"dtk-prods\"><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/product\/digital-refractometer-type-ma871\/\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-refrac-ma871.webp\" width=\"531\" height=\"531\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Digital Refractometer Type MA871<\/span><span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span><\/a><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/product\/manual-refractometer\/\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-refrac.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Manual Refractometer<\/span><span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span><\/a><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/product\/colostrometer\/\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-kolostrometer.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Colostrum tester<\/span><span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span><\/a><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/product\/dual-digital-refractometer\/\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-refrac-dual.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Dual Digital Refractometer<\/span><span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span><\/a><\/div>\n      <\/li>\n      <li class=\"dtk-flow-step\">\n        <h3>Into the bag<\/h3>\n        <p>The Economy Filler holds the bag and its opening in place. The Deluxe Filling Station fills the bag hands-free and accurately to the number of litres you want. Both fit 2, 3 and 4 litre bags.<\/p>\n        <div class=\"dtk-prods\"><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/product\/economy-filler-for-perfect-udder-bags\/\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-filler-economy.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Economy Filler for Perfect Udder\u00ae bags<\/span><span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span><\/a><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/product\/deluxe-filling-station-for-perfect-udder-bags\/\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-filling-deluxe.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Deluxe Filling Station for Perfect Udder\u00ae bags<\/span><span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span><\/a><\/div>\n      <\/li>\n      <li class=\"dtk-flow-step dtk-flow-step--quote\">\n        <h3>Pasteurise and store<\/h3>\n        <p>Thanks to the heat-conducting material, you pasteurise, cool, freeze and warm the colostrum in the same bag. A Matilda or Adda does this automatically, at the right temperature and for the right time.<\/p>\n        <div class=\"dtk-prods\"><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/pasteurisers\/#matilda\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-matilda.webp\" srcset=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-matilda-640.webp 640w, https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-matilda.webp 1200w\" sizes=\"auto, 56px\" width=\"1200\" height=\"1200\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Matilda Colostrum Pasteurizer<\/span><span class=\"dtk-tag dtk-tag--quote\">On quotation<\/span><\/a><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/pasteurisers\/#adda-10g\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-adda-10.webp\" srcset=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-adda-10-640.webp 640w, https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-adda-10.webp 1200w\" sizes=\"auto, 56px\" width=\"1200\" height=\"1200\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Perfect Udder Pasteurizer Adda 10G<\/span><span class=\"dtk-tag dtk-tag--quote\">On quotation<\/span><\/a><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/pasteurisers\/#adda-30g\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-adda-30.webp\" srcset=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-adda-30-640.webp 640w, https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-adda-30.webp 1200w\" sizes=\"auto, 56px\" width=\"1200\" height=\"1200\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Perfect Udder Pasteurizer Adda 30G<\/span><span class=\"dtk-tag dtk-tag--quote\">On quotation<\/span><\/a><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/pasteurisers\/#adda-60g\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-adda-60.webp\" srcset=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-adda-60-640.webp 640w, https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-adda-60.webp 1200w\" sizes=\"auto, 56px\" width=\"1200\" height=\"1200\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Perfect Udder Pasteurizer Adda 60G<\/span><span class=\"dtk-tag dtk-tag--quote\">On quotation<\/span><\/a><\/div>\n      <\/li>\n      <li class=\"dtk-flow-step\">\n        <h3>Feed<\/h3>\n        <p>You feed straight from the bag, with a teat or a drench tube. Prefer a bottle? The Hiko 1-click bottle is frost-resistant, so you can freeze colostrum in it too. With the Trusti Tuber you tube-feed colostrum with one hand.<\/p>\n        <div class=\"dtk-prods\"><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/product\/perfect-udder-colostrum-management-kit-2-litres-50-bags\/\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-kit-2.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Perfect Udder\u00ae Colostrum Management Kit 2 litres (50 bags)<\/span><span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span><\/a><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/product\/perfect-udder-colostrum-management-kit-4-liters-50-bags\/\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-kit-4.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Perfect Udder\u00ae Colostrum Management Kit 4 Liters (50 bags)<\/span><span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span><\/a><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/product\/hiko-1-click-bottle\/\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-hiko-fles.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Hiko 1-click bottle<\/span><span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span><\/a><a class=\"dtk-prod\" href=\"https:\/\/dairytop.eu\/en\/product\/trusti-tuber\/\"><span class=\"dtk-prod-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-trusti.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span><span class=\"dtk-prod-n\">Trusti Tuber<\/span><span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span><\/a><\/div>\n      <\/li>\n    <\/ol>\n  <\/div>\n<\/section>\n\n<section class=\"dtk-section\" aria-labelledby=\"prak-h\">\n  <div class=\"dtk-wrap\">\n    <div class=\"dtk-head\">\n      <p class=\"dtk-kicker\">In practice<\/p>\n      <h2 id=\"prak-h\">From the bag to the calf<\/h2>\n    <\/div>\n    <div class=\"dtk-mosaic\">\n      <figure class=\"dtk-m-a\">\n        <img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-drenchen.webp\" srcset=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-drenchen-640.webp 640w, https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-drenchen.webp 2200w\" sizes=\"auto, (min-width: 900px) 58vw, 100vw\" width=\"2200\" height=\"1466\" alt=\"A farm worker feeds a newborn calf colostrum from a Perfect Udder bag through a drench tube\" loading=\"lazy\" decoding=\"async\">\n        <figcaption><h3>Feeding from the bag<\/h3><p>With the drench tube on the bag, the calf gets the colostrum straight away.<\/p><\/figcaption>\n      <\/figure>\n      <figure class=\"dtk-m-b\">\n        <img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-zak-openen.webp\" srcset=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-zak-openen-640.webp 640w, https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-zak-openen.webp 2200w\" sizes=\"auto, (min-width: 900px) 40vw, 100vw\" width=\"2200\" height=\"1466\" alt=\"A farm worker takes a Perfect Udder bag out of its pack, above the Matilda\" loading=\"lazy\" decoding=\"async\">\n        <figcaption><h3>One bag, start to finish<\/h3><p>The same bag goes from filling through the pasteuriser to the calf.<\/p><\/figcaption>\n      <\/figure>\n      <figure class=\"dtk-m-c\">\n        <img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda-paneel.webp\" srcset=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda-paneel-640.webp 640w, https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda-paneel.webp 2200w\" sizes=\"auto, (min-width: 900px) 40vw, 100vw\" width=\"2200\" height=\"1466\" alt=\"Control panel of the Matilda with buttons for the programmes\" loading=\"lazy\" decoding=\"async\">\n        <figcaption><h3>Choose a programme<\/h3><p>Choose the programme and the Matilda does the rest.<\/p><\/figcaption>\n      <\/figure>\n      <figure class=\"dtk-m-d\">\n        <img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda.webp\" srcset=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda-640.webp 640w, https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda.webp 2200w\" sizes=\"auto, (min-width: 900px) 58vw, 100vw\" width=\"2200\" height=\"1466\" alt=\"The Matilda on a stand next to the calf pens, with calves at the feed trough\" loading=\"lazy\" decoding=\"async\">\n        <figcaption><h3>Right by the calves<\/h3><p>The Matilda only needs to be connected to power and water.<\/p><\/figcaption>\n      <\/figure>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"dtk-section dtk-section--tint\" id=\"zakken\" aria-labelledby=\"zak-h\">\n  <div class=\"dtk-wrap\">\n    <div class=\"dtk-head\">\n      <p class=\"dtk-kicker\">You will need more<\/p>\n      <h2 id=\"zak-h\">Order bags<\/h2>\n      <p>Choose the size and the pack. Each link takes you to the product in the shop.<\/p>\n    <\/div>\n    <div class=\"dtk-bags-scroll\" tabindex=\"0\" role=\"region\" aria-labelledby=\"zak-h\">\n      <table class=\"dtk-bags\">\n        <thead><tr><th scope=\"col\">Pack<\/th><th scope=\"col\"><span class=\"dtk-bags-size\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-kit-2.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\">2 litres<\/span><\/th><th scope=\"col\"><span class=\"dtk-bags-size\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-kit-3.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\">3 litres<\/span><\/th><th scope=\"col\"><span class=\"dtk-bags-size\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-kit-4.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\">4 litres<\/span><\/th><\/tr><\/thead>\n        <tbody>\n          <tr><th scope=\"row\">Sample kit<small>To try them out, with teats and drench tubes<\/small><\/th><td><a href=\"https:\/\/dairytop.eu\/en\/product\/perfect-udder-colostrum-management-sample-kit-2-liters-10-bags\/\" aria-label=\"Order: Perfect Udder\u00ae Colostrum Management Sample Kit 2 liters (10 bags)\">Order <svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><span class=\"dtk-bags-n\">10 bags of 2 litres<\/span><\/td><td><a href=\"https:\/\/dairytop.eu\/en\/product\/perfect-udder-colostrum-management-sample-kit-3-liters-10-bags\/\" aria-label=\"Order: Perfect Udder\u00ae Colostrum Management Sample Kit 3 liters (10 bags)\">Order <svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><span class=\"dtk-bags-n\">10 bags of 3 litres<\/span><\/td><td><a href=\"https:\/\/dairytop.eu\/en\/product\/perfect-udder-colostrum-management-sample-kit-4-liters-10-bags\/\" aria-label=\"Order: Perfect Udder\u00ae Colostrum Management Sample Kit 4 Liters (10 bags)\">Order <svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><span class=\"dtk-bags-n\">10 bags of 4 litres<\/span><\/td><\/tr>\n          <tr><th scope=\"row\">Kit<small>For the season, optionally with teats and drench tubes<\/small><\/th><td><a href=\"https:\/\/dairytop.eu\/en\/product\/perfect-udder-colostrum-management-kit-2-litres-50-bags\/\" aria-label=\"Order: Perfect Udder\u00ae Colostrum Management Kit 2 litres (50 bags)\">Order <svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><span class=\"dtk-bags-n\">50 bags of 2 litres<\/span><\/td><td><a href=\"https:\/\/dairytop.eu\/en\/product\/perfect-udder-colostrum-management-kit-3-liters-50-bags\/\" aria-label=\"Order: Perfect Udder\u00ae Colostrum Management Kit 3 liters (50 bags)\">Order <svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><span class=\"dtk-bags-n\">50 bags of 3 litres<\/span><\/td><td><a href=\"https:\/\/dairytop.eu\/en\/product\/perfect-udder-colostrum-management-kit-4-liters-50-bags\/\" aria-label=\"Order: Perfect Udder\u00ae Colostrum Management Kit 4 Liters (50 bags)\">Order <svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><span class=\"dtk-bags-n\">50 bags of 4 litres<\/span><\/td><\/tr>\n          <tr><th scope=\"row\">Bulk pack<small>Larger volume, lowest price per bag<\/small><\/th><td><a href=\"https:\/\/dairytop.eu\/en\/product\/perfect-udder-bulk-kit-2l-500-pcs\/\" aria-label=\"Order: Perfect Udder Bulk Kit 2L (500 pcs.)\">Order <svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><span class=\"dtk-bags-n\">500 bags of 2 litres<\/span><\/td><td><a href=\"https:\/\/dairytop.eu\/en\/product\/perfect-udder-bulk-kit-3l-400-pcs\/\" aria-label=\"Order: Perfect Udder Bulk Kit 3L (400 pcs.)\">Order <svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><span class=\"dtk-bags-n\">400 bags of 3 litres<\/span><\/td><td><a href=\"https:\/\/dairytop.eu\/en\/product\/perfect-udder-bulk-kit-4l-400-pcs\/\" aria-label=\"Order: Perfect Udder Bulk Kit 4L (400 pcs)\">Order <svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><span class=\"dtk-bags-n\">400 bags of 4 litres<\/span><\/td><\/tr>\n        <\/tbody>\n      <\/table>\n    <\/div>\n    <p class=\"dtk-note\">Not sure how many bags you need? Call us on <a href=\"tel:+31593241712\">+31 (0)593 24 17 12<\/a>.<\/p>\n  <\/div>\n<\/section>\n\n<section class=\"dtk-section\" aria-labelledby=\"acc-h\">\n  <div class=\"dtk-wrap\">\n    <div class=\"dtk-head\">\n      <p class=\"dtk-kicker\">Popular<\/p>\n      <h2 id=\"acc-h\">Accessories<\/h2>\n    <\/div>\n    <ul class=\"dtk-shopgrid\">\n      <li><a href=\"https:\/\/dairytop.eu\/en\/product\/digital-refractometer-type-ma871\/\">\n        <span class=\"dtk-shop-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-refrac-ma871.webp\" width=\"531\" height=\"531\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span>\n        <h3>Digital Refractometer Type MA871<\/h3>\n        <p>Digital refractometer that measures colostrum quality in Brix.<\/p>\n        <span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span>\n      <\/a><\/li>\n      <li><a href=\"https:\/\/dairytop.eu\/en\/product\/dual-digital-refractometer\/\">\n        <span class=\"dtk-shop-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-refrac-dual.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span>\n        <h3>Dual Digital Refractometer<\/h3>\n        <p>Measures colostrum quality digitally, in Brix.<\/p>\n        <span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span>\n      <\/a><\/li>\n      <li><a href=\"https:\/\/dairytop.eu\/en\/product\/colostrometer\/\">\n        <span class=\"dtk-shop-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-kolostrometer.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span>\n        <h3>Colostrum tester<\/h3>\n        <p>Quick check: green, yellow or red.<\/p>\n        <span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span>\n      <\/a><\/li>\n      <li><a href=\"https:\/\/dairytop.eu\/en\/product\/calf-feeder-zipper-bag-2-5l\/\">\n        <span class=\"dtk-shop-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-kalversonde.webp\" srcset=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-kalversonde-640.webp 640w, https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-kalversonde.webp 1080w\" sizes=\"auto, (min-width: 1000px) 18vw, 40vw\" width=\"1080\" height=\"1080\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span>\n        <h3>Calf feeder, zipper bag 2.5L<\/h3>\n        <p>2.5 litre bag with a scale and a flexible tube.<\/p>\n        <span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span>\n      <\/a><\/li>\n      <li><a href=\"https:\/\/dairytop.eu\/en\/product\/perfect-udder-deluxe-drench-tubes-5pk-small\/\">\n        <span class=\"dtk-shop-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-drenchslang.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span>\n        <h3>Perfect Udder Deluxe Drench Hose Small<\/h3>\n        <p>Drench tube of approx. 1.27 m with a clamp, for small calves.<\/p>\n        <span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span>\n      <\/a><\/li>\n      <li><a href=\"https:\/\/dairytop.eu\/en\/product\/hiko-1-click-bottle\/\">\n        <span class=\"dtk-shop-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-hiko-fles.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span>\n        <h3>Hiko 1-click bottle<\/h3>\n        <p>3 litre feeding bottle with teat and valve, frost-resistant.<\/p>\n        <span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span>\n      <\/a><\/li>\n      <li><a href=\"https:\/\/dairytop.eu\/en\/product\/trusti-tuber\/\">\n        <span class=\"dtk-shop-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-trusti.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span>\n        <h3>Trusti Tuber<\/h3>\n        <p>Tube feeder with a 4 litre bottle, held in place with one hand.<\/p>\n        <span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span>\n      <\/a><\/li>\n      <li><a href=\"https:\/\/dairytop.eu\/en\/product\/perfect-udder-nipples-5-pieces\/\">\n        <span class=\"dtk-shop-img\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-spenen.webp\" width=\"238\" height=\"238\" alt=\"\" loading=\"lazy\" decoding=\"async\"><\/span>\n        <h3>Perfect Udder\u00ae Nipples (5 pieces)<\/h3>\n        <p>Five teats for the Perfect Udder bags.<\/p>\n        <span class=\"dtk-tag dtk-tag--shop\">In the online shop<\/span>\n      <\/a><\/li>\n    <\/ul>\n    <div class=\"dtk-links dtk-mt-l\"><a class=\"dtk-link\" href=\"https:\/\/dairytop.eu\/en\/product-category\/perfect-udder-colostrum-management\/accessories-2\/\">All accessories in the shop <svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg><\/a><\/div>\n  <\/div>\n<\/section>\n\n<section class=\"dtk-section dtk-section--tint\" aria-labelledby=\"past-h\">\n  <div class=\"dtk-wrap dtk-split\">\n    <div>\n      <p class=\"dtk-kicker\">On quotation<\/p>\n      <h2 id=\"past-h\">Pasteurising colostrum<\/h2>\n      <p class=\"dtk-mt\">A pasteuriser heats the colostrum to the right temperature, holds it there for the right time and stirs it meanwhile. According to the manufacturer, this kills pathogens such as Johne\u2019s disease, Salmonella and E. coli while keeping the antibodies (IgG) intact.<\/p>\n      <p>Which model suits you depends on the number of calves on your farm. An adviser puts together a tailored quote.<\/p>\n      <div class=\"dtk-actions dtk-mt-l\"><a class=\"dtk-btn dtk-btn--dark\" href=\"https:\/\/dairytop.eu\/en\/pasteurisers\/\">Compare the pasteurisers<\/a><a class=\"dtk-btn dtk-btn--outline\" href=\"https:\/\/dairytop.eu\/en\/contact\/\" data-quote=\"biest\">Request a quote<\/a><\/div>\n    <\/div>\n    <div class=\"dtk-split-media\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-zak-in-matilda.webp\" srcset=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-zak-in-matilda-640.webp 640w, https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-zak-in-matilda.webp 2200w\" sizes=\"auto, (min-width: 900px) 50vw, 100vw\" width=\"2200\" height=\"1466\" alt=\"Matilda colostrum pasteuriser with the lid open and a Perfect Udder bag inside, next to the calf pens\" loading=\"lazy\" decoding=\"async\"><\/div>\n  <\/div>\n<\/section>\n\n<section class=\"dtk-section dtk-faq\" aria-labelledby=\"faq-h\">\n  <div class=\"dtk-wrap dtk-faq-grid\">\n    <div class=\"dtk-faq-head\">\n      <h2 id=\"faq-h\">Frequently asked questions about colostrum management<\/h2>\n      <p>Can\u2019t find your question? Our advisers will be glad to help.<\/p>\n    <\/div>\n    <div class=\"dtk-faq-list\">\n      <details><summary><span>What is a Perfect Udder bag?<\/span><svg class=\"dtk-ic dtk-ic-plus\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M10 4v12M4 10h12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"\/><\/svg><\/summary><div class=\"dtk-faq-a\"><p>A bag for colostrum, from milking through to feeding. In the same bag you can pasteurise, cool, freeze and warm the colostrum, then feed it with a teat or a drench tube. The heat-conducting material of the bag makes this possible.<\/p><\/div><\/details>\n      <details><summary><span>Which bag sizes are there?<\/span><svg class=\"dtk-ic dtk-ic-plus\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M10 4v12M4 10h12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"\/><\/svg><\/summary><div class=\"dtk-faq-a\"><p>Bags of 2, 3 and 4 litres, as a sample kit of 10, a kit of 50 and in bulk (500 bags of 2 litres, 400 of 3 or 4 litres). The filling stations fit all three sizes.<\/p><\/div><\/details>\n      <details><summary><span>What is in a kit?<\/span><svg class=\"dtk-ic dtk-ic-plus\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M10 4v12M4 10h12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"\/><\/svg><\/summary><div class=\"dtk-faq-a\"><p>Besides the bags, a sample kit contains three teats and three drench tubes. With a kit, teats and drench tubes are optional. The bulk pack contains bags only, at the lowest price per bag.<\/p><\/div><\/details>\n      <details><summary><span>How do I check colostrum quality?<\/span><svg class=\"dtk-ic dtk-ic-plus\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M10 4v12M4 10h12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"\/><\/svg><\/summary><div class=\"dtk-faq-a\"><p>A refractometer measures the Brix value of the colostrum; the manual refractometer reads from 0 to 85%. For a quick check without reading a scale, use the colostrometer: green is good quality, yellow average and red poor.<\/p><\/div><\/details>\n      <details><summary><span>Why can\u2019t I just buy a pasteuriser in the shop?<\/span><svg class=\"dtk-ic dtk-ic-plus\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M10 4v12M4 10h12\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\"\/><\/svg><\/summary><div class=\"dtk-faq-a\"><p>Which pasteuriser suits you depends on the number of calves and the way you work. That is why a DairyTop adviser puts together a tailored quote. Bags and accessories you can order straight from the shop.<\/p><\/div><\/details>\n    <\/div>\n  <\/div>\n<\/section>\n\n<section class=\"dtk-contact\" id=\"contact\" aria-labelledby=\"contact-h\">\n  <div class=\"dtk-contact-media\"><img loading=\"lazy\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/qk-adviseur.webp\" srcset=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/qk-adviseur-640.webp 640w, https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/qk-adviseur.webp 1400w\" sizes=\"auto, (min-width: 900px) 50vw, 100vw\" width=\"1400\" height=\"934\" alt=\"DairyTop adviser in a barn, next to a cow at the feed barrier\" loading=\"lazy\" decoding=\"async\"><\/div>\n  <div class=\"dtk-contact-body\">\n    <h2 id=\"contact-h\">Advice on colostrum management<\/h2>\n    <p>Thinking about pasteurising colostrum, or not sure which bags and accessories you need? Tell us how many calves you have a year and how you work now. We are happy to advise you.<\/p>\n    <div class=\"dtk-actions\">\n      <a class=\"dtk-btn dtk-btn--dark\" href=\"https:\/\/dairytop.eu\/en\/contact\/\" data-quote=\"biest\">Request a quote<\/a>\n      <a class=\"dtk-link\" href=\"tel:+31593241712\"><svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M6.2 2.8l2 3.6-1.6 1.5a10 10 0 005.5 5.5l1.5-1.6 3.6 2-.8 2.9c-.2.6-.8 1-1.4.9C8.6 16.9 3.1 11.4 2.4 5c0-.6.3-1.2.9-1.4z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"\/><\/svg><span>+31 (0)593 24 17 12<\/span><\/a>\n    <\/div>\n  <\/div>\n<\/section>\n\n<dialog class=\"dtk-quote\" aria-labelledby=\"q-title\" data-quote-dialog data-endpoint=\"\/wp-json\/dairytop\/v1\/offerte\">\n  <div class=\"dtk-q-shell\">\n    <aside class=\"dtk-q-panel\" aria-hidden=\"true\">\n      <img decoding=\"async\" class=\"dtk-q-panel-img\" src=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/oksng-rij.webp\" alt=\"\" width=\"640\" height=\"427\">\n      <div class=\"dtk-q-panel-copy\">\n        <p class=\"dtk-q-panel-k\">Quote or advice<\/p>\n        <p class=\"dtk-q-panel-t\" data-q-panel-title>Calf housing<\/p>\n        <ol class=\"dtk-q-panel-steps\">\n          <li>Tell us what you need, in as much or as little detail as you like<\/li>\n          <li>A DairyTop adviser gets in touch with you<\/li>\n          <li>You receive a quote, or we come and see you on the farm<\/li>\n        <\/ol>\n      <\/div>\n    <\/aside>\n    <form class=\"dtk-q-form\" novalidate data-q-form>\n      <div class=\"dtk-q-top\">\n        <p class=\"dtk-q-progress-t\" data-q-stepnum>Step 1 of 4<\/p>\n        <button type=\"button\" class=\"dtk-q-close\" data-q-close aria-label=\"Close form\"><svg viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M5 5l10 10M15 5L5 15\" stroke=\"currentColor\" stroke-width=\"2\" stroke-linecap=\"round\"\/><\/svg><\/button>\n      <\/div>\n      <div class=\"dtk-q-progress\" aria-hidden=\"true\"><span data-q-bar><\/span><\/div>\n\n      <fieldset class=\"dtk-q-step\" data-q-step=\"1\">\n        <legend><span class=\"dtk-q-h\" id=\"q-title\" tabindex=\"-1\">How can we help?<\/span><\/legend>\n        <p class=\"dtk-q-label\">What would you like a quote or advice on?<\/p>\n        <div class=\"dtk-q-choices\">\n          <label class=\"dtk-q-choice\"><input type=\"radio\" name=\"systeem\" value=\"oks\"><span class=\"dtk-q-choice-box\"><span class=\"dtk-q-choice-t\">Optima Klima Calf Barn<\/span><span class=\"dtk-q-choice-s\">Outdoor barn, 6 to 8 calves per pen<\/span><\/span><\/label>\n          <label class=\"dtk-q-choice\"><input type=\"radio\" name=\"systeem\" value=\"quattro\"><span class=\"dtk-q-choice-box\"><span class=\"dtk-q-choice-t\">Quattro Calf Box XL<\/span><span class=\"dtk-q-choice-s\">Liftable unit with four lying spaces<\/span><\/span><\/label>\n          <label class=\"dtk-q-choice\"><input type=\"radio\" name=\"systeem\" value=\"biest\"><span class=\"dtk-q-choice-box\"><span class=\"dtk-q-choice-t\">Pasteurising colostrum<\/span><span class=\"dtk-q-choice-s\">Matilda or an Adda pasteuriser<\/span><\/span><\/label>\n          <label class=\"dtk-q-choice\"><input type=\"radio\" name=\"systeem\" value=\"voeding\"><span class=\"dtk-q-choice-box\"><span class=\"dtk-q-choice-t\">Calf nutrition<\/span><span class=\"dtk-q-choice-s\">Milk replacer, Dairy Pansen Pro or Dairy Calf TMR<\/span><\/span><\/label>\n          <label class=\"dtk-q-choice\"><input type=\"radio\" name=\"systeem\" value=\"maatwerk\"><span class=\"dtk-q-choice-box\"><span class=\"dtk-q-choice-t\">Made to measure, or something else<\/span><span class=\"dtk-q-choice-s\">A barn or fit-out built to measure<\/span><\/span><\/label>\n        <\/div>\n        <div class=\"dtk-q-sub\" data-q-sub=\"oks\" hidden>\n          <p class=\"dtk-q-label\">Which size?<\/p>\n          <div class=\"dtk-q-chips\"><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_oks\" value=\"Optima Klima Stal (OKS)\"><span>Optima Klima Stal (OKS), 14.0 m\u00b2<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_oks\" value=\"Optima Klima Stal Next Gen\"><span>Optima Klima Stal Next Gen, 15.3 m\u00b2<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_oks\" value=\"Optima Klima Stal XL\"><span>Optima Klima Stal XL, 18.3 m\u00b2<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_oks\" value=\"Weet ik nog niet\" checked><span>Not sure yet<\/span><\/label><\/div>\n        <\/div>\n        <div class=\"dtk-q-sub\" data-q-sub=\"quattro\" hidden>\n          <p class=\"dtk-q-label\">Which version?<\/p>\n          <div class=\"dtk-q-chips\"><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_quattro\" value=\"Zonder klapbodem\"><span>Without hinged floor<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_quattro\" value=\"Met klapbodem\"><span>With hinged floor<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_quattro\" value=\"Weet ik nog niet\" checked><span>Not sure yet<\/span><\/label><\/div>\n        <\/div>\n        <div class=\"dtk-q-sub\" data-q-sub=\"biest\" hidden>\n          <p class=\"dtk-q-label\">Which model?<\/p>\n          <div class=\"dtk-q-chips\"><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_biest\" value=\"Matilda\"><span>Matilda<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_biest\" value=\"Adda 10G\"><span>Adda 10G<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_biest\" value=\"Adda 30G\"><span>Adda 30G<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_biest\" value=\"Adda 60G\"><span>Adda 60G<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_biest\" value=\"Weet ik nog niet\" checked><span>Not sure yet<\/span><\/label><\/div>\n        <\/div>\n        <div class=\"dtk-q-sub\" data-q-sub=\"voeding\" hidden>\n          <p class=\"dtk-q-label\">About what?<\/p>\n          <div class=\"dtk-q-chips\"><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_voeding\" value=\"Melkpoeder\"><span>Milk replacer<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_voeding\" value=\"Dairy Pansen Pro\"><span>Dairy Pansen Pro<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_voeding\" value=\"Dairy Kalver TMR\"><span>Dairy Calf TMR<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"uitvoering_voeding\" value=\"Weet ik nog niet\" checked><span>Not sure yet<\/span><\/label><\/div>\n        <\/div>\n        <p class=\"dtk-q-label\">What would you prefer?<\/p>\n        <div class=\"dtk-q-chips\"><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"voorkeur\" value=\"Offerte\" checked><span>Send me a quote<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"voorkeur\" value=\"Bezoek\"><span>Have an adviser visit<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"voorkeur\" value=\"Terugbellen\"><span>Call me back<\/span><\/label><\/div>\n      <\/fieldset>\n\n      <fieldset class=\"dtk-q-step\" data-q-step=\"2\" hidden>\n        <legend><span class=\"dtk-q-h\" tabindex=\"-1\">Tell us about your situation<\/span><\/legend>\n        <p class=\"dtk-q-hint\">Everything on this step is optional. The more we know, the more specific our advice.<\/p>\n        <div class=\"dtk-q-grid\">\n          <label class=\"dtk-q-field\"><span>Number of calves<\/span><input type=\"number\" name=\"aantal\" min=\"1\" max=\"2000\" inputmode=\"numeric\" placeholder=\"For example 12\"><\/label>\n          <div class=\"dtk-q-field\" data-q-housing><span id=\"q-ruimte\">Available space in metres<\/span>\n            <div class=\"dtk-q-dims\" role=\"group\" aria-labelledby=\"q-ruimte\"><input type=\"text\" name=\"lengte\" inputmode=\"decimal\" pattern=\"[0-9]+([,.][0-9]+)?\" maxlength=\"8\" placeholder=\"Length\" aria-label=\"Length in metres\"><span aria-hidden=\"true\">\u00d7<\/span><input type=\"text\" name=\"breedte\" inputmode=\"decimal\" pattern=\"[0-9]+([,.][0-9]+)?\" maxlength=\"8\" placeholder=\"Width\" aria-label=\"Width in metres\"><\/div>\n          <\/div>\n        <\/div>\n        <p class=\"dtk-q-label\" data-q-housing>Where will the housing go?<\/p>\n        <div class=\"dtk-q-chips\" data-q-housing><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"plek\" value=\"Buiten\"><span>Outdoors<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"plek\" value=\"Binnen in een stal\"><span>Inside a barn<\/span><\/label><label class=\"dtk-q-chip\"><input type=\"radio\" name=\"plek\" value=\"Weet ik nog niet\" checked><span>Not sure yet<\/span><\/label><\/div>\n        <label class=\"dtk-q-field\"><span>When would you like to start using it?<\/span>\n          <select name=\"planning\"><option value=\"\">Please choose<\/option><option value=\"Zo snel mogelijk\">As soon as possible<\/option><option value=\"Binnen drie maanden\">Within three months<\/option><option value=\"Later dit jaar\">Later this year<\/option><option value=\"Ik ori\u00ebnteer me nog\">Just looking for now<\/option><\/select><\/label>\n        <label class=\"dtk-q-field\"><span>Your plans or other details<\/span><textarea name=\"toelichting\" rows=\"4\" maxlength=\"2000\" placeholder=\"For example: we want to replace our individual pens and keep calves outdoors in groups of six.\"><\/textarea><\/label>\n      <\/fieldset>\n\n      <fieldset class=\"dtk-q-step\" data-q-step=\"3\" hidden>\n        <legend><span class=\"dtk-q-h\" tabindex=\"-1\">Photos of your yard or barn<\/span><\/legend>\n        <p class=\"dtk-q-hint\">Optional. A few photos of the site help our adviser work out what suits you. Up to 6 photos, max. 10 MB each.<\/p>\n        <label class=\"dtk-q-drop\" data-q-drop>\n          <input type=\"file\" name=\"fotos\" accept=\"image\/jpeg,image\/png,image\/heic,image\/webp\" multiple data-q-files title=\"Choose photos\">\n          <svg viewBox=\"0 0 24 24\" aria-hidden=\"true\"><path d=\"M4 16l4.5-5 3.5 4 2.5-3L20 16M4 5h16v14H4z\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.6\" stroke-linejoin=\"round\"\/><\/svg>\n          <span class=\"dtk-q-drop-t\">Drag photos here or <u>choose files<\/u><\/span>\n          <span class=\"dtk-q-drop-s\">JPG, PNG, HEIC or WebP<\/span>\n        <\/label>\n        <p class=\"dtk-q-error\" data-q-file-error role=\"alert\" hidden><\/p>\n        <ul class=\"dtk-q-thumbs\" data-q-thumbs aria-label=\"Selected photos\"><\/ul>\n      <\/fieldset>\n\n      <fieldset class=\"dtk-q-step\" data-q-step=\"4\" hidden>\n        <legend><span class=\"dtk-q-h\" tabindex=\"-1\">How can we reach you?<\/span><\/legend>\n        <div class=\"dtk-q-grid\">\n          <label class=\"dtk-q-field\"><span>Name <abbr title=\"required\">*<\/abbr><\/span><input type=\"text\" name=\"naam\" autocomplete=\"name\" required maxlength=\"80\"><em class=\"dtk-q-err\" hidden>Please enter your name.<\/em><\/label>\n          <label class=\"dtk-q-field\"><span>Farm or company name<\/span><input type=\"text\" name=\"bedrijf\" autocomplete=\"organization\" maxlength=\"120\"><\/label>\n          <label class=\"dtk-q-field\"><span>Email address <abbr title=\"required\">*<\/abbr><\/span><input type=\"email\" name=\"email\" autocomplete=\"email\" required maxlength=\"120\"><em class=\"dtk-q-err\" hidden>Please enter a valid email address.<\/em><\/label>\n          <label class=\"dtk-q-field\"><span>Phone number <abbr title=\"required\">*<\/abbr><\/span><input type=\"tel\" name=\"telefoon\" autocomplete=\"tel\" required maxlength=\"30\"><em class=\"dtk-q-err\" hidden>Please enter your phone number.<\/em><\/label>\n          <label class=\"dtk-q-field\"><span>Postcode<\/span><input type=\"text\" name=\"postcode\" autocomplete=\"postal-code\" maxlength=\"12\"><\/label>\n          <label class=\"dtk-q-field\"><span>Town<\/span><input type=\"text\" name=\"plaats\" autocomplete=\"address-level2\" maxlength=\"80\"><\/label>\n        <\/div>\n        <label class=\"dtk-q-hp\" aria-hidden=\"true\">Leave this field empty<input type=\"text\" name=\"website\" tabindex=\"-1\" autocomplete=\"off\"><\/label>\n        <p class=\"dtk-q-privacy\">DairyTop B.V. uses your details and photos only to answer your request and keeps them no longer than necessary. You can read more in our <a href=\"https:\/\/dairytop.eu\/en\/important-information\/\">privacy statement<\/a>.<\/p>\n      <\/fieldset>\n\n      <div class=\"dtk-q-done\" data-q-done hidden tabindex=\"-1\">\n        <svg viewBox=\"0 0 48 48\" aria-hidden=\"true\"><circle cx=\"24\" cy=\"24\" r=\"22\" fill=\"#d9f1fc\"\/><path d=\"M14 25l7 7 13-15\" fill=\"none\" stroke=\"#1f3741\" stroke-width=\"3.2\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>\n        <p class=\"dtk-q-h\">Thank you, we have received your request<\/p>\n        <p>A DairyTop adviser will contact you as soon as possible. In a hurry? Call us on <a href=\"tel:+31593241712\">+31 (0)593 24 17 12<\/a>.<\/p>\n        <button type=\"button\" class=\"dtk-btn dtk-btn--dark\" data-q-close>Close<\/button>\n      <\/div>\n\n      <p class=\"dtk-q-error\" data-q-send-error role=\"alert\" hidden><\/p>\n      <div class=\"dtk-q-nav\" data-q-nav>\n        <button type=\"button\" class=\"dtk-q-back\" data-q-back hidden>Back<\/button>\n        <button type=\"button\" class=\"dtk-btn dtk-btn--dark\" data-q-next>Next<\/button>\n        <button type=\"submit\" class=\"dtk-btn\" data-q-submit hidden>Send request<\/button>\n      <\/div>\n    <\/form>\n  <\/div>\n  <template data-q-panels>{\"oks\":{\"src\":\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/oksng-front-2.webp\",\"title\":\"Optima Klima Calf Barn\"},\"quattro\":{\"src\":\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/qk-hoog.webp\",\"title\":\"Quattro Calf Box XL\"},\"maatwerk\":{\"src\":\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/oksxl-front.webp\",\"title\":\"Made to measure\"},\"advies\":{\"src\":\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/oksng-rij.webp\",\"title\":\"Calf housing\"},\"biest\":{\"src\":\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pu-matilda.webp\",\"title\":\"Pasteurising colostrum\"},\"voeding\":{\"src\":\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/pro-elite-zak.webp\",\"title\":\"Calf nutrition\"}}<\/template>\n<\/dialog>\n<script type=\"application\/ld+json\">{\"@context\":\"https:\/\/schema.org\",\"@graph\":[{\"@type\":\"FAQPage\",\"mainEntity\":[{\"@type\":\"Question\",\"name\":\"What is a Perfect Udder bag?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"A bag for colostrum, from milking through to feeding. In the same bag you can pasteurise, cool, freeze and warm the colostrum, then feed it with a teat or a drench tube. The heat-conducting material of the bag makes this possible.\"}},{\"@type\":\"Question\",\"name\":\"Which bag sizes are there?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Bags of 2, 3 and 4 litres, as a sample kit of 10, a kit of 50 and in bulk (500 bags of 2 litres, 400 of 3 or 4 litres). The filling stations fit all three sizes.\"}},{\"@type\":\"Question\",\"name\":\"What is in a kit?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Besides the bags, a sample kit contains three teats and three drench tubes. With a kit, teats and drench tubes are optional. The bulk pack contains bags only, at the lowest price per bag.\"}},{\"@type\":\"Question\",\"name\":\"How do I check colostrum quality?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"A refractometer measures the Brix value of the colostrum; the manual refractometer reads from 0 to 85%. For a quick check without reading a scale, use the colostrometer: green is good quality, yellow average and red poor.\"}},{\"@type\":\"Question\",\"name\":\"Why can\u2019t I just buy a pasteuriser in the shop?\",\"acceptedAnswer\":{\"@type\":\"Answer\",\"text\":\"Which pasteuriser suits you depends on the number of calves and the way you work. That is why a DairyTop adviser puts together a tailored quote. Bags and accessories you can order straight from the shop.\"}}]}]}<\/script>\n<\/div>\n<script>\n(function () {\n  \/\/ Teksten in de taal van de pagina (lang op .dtk): nl, en of de.\n  var LANG = ((document.querySelector('.dtk[lang]') || document.documentElement).getAttribute('lang') || 'nl').slice(0, 2);\n  var TX = {\n    nl: { photoDrawings: 'Foto en tekeningen', photos: 'Foto\u2019s', close: 'Sluiten', prev: 'Vorige foto', next: 'Volgende foto', step: 'Stap {n} van {m}', remove: 'Verwijder {f}', notPhoto: '{f} is geen foto', tooBig: '{f} is groter dan 10 MB', max: \"maximaal {n} foto's\", notAdded: 'Niet toegevoegd: ', sent: 'Verstuurd', uploading: \"Foto's uploaden...\", sending: 'Versturen...', submit: 'Aanvraag versturen', failed: 'Versturen lukte niet. Probeer het opnieuw of bel ons.', tooMany: 'Te veel aanvragen in korte tijd. Bel ons gerust: +31 (0)593 24 17 12.', check: 'Controleer uw naam, e-mailadres en telefoonnummer.', photoCount: \"Maximaal 6 foto's per aanvraag.\", photoSize: 'Een foto is te groot. Kies een kleinere foto of laat hem weg.', photoType: 'Een bestand is geen foto (JPG, PNG, WebP of HEIC).', photoFailed: 'Een foto kon niet worden ge\u00fcpload. Probeer het opnieuw zonder die foto.' },\n    en: { photoDrawings: 'Photo and drawings', photos: 'Photos', close: 'Close', prev: 'Previous photo', next: 'Next photo', step: 'Step {n} of {m}', remove: 'Remove {f}', notPhoto: '{f} is not a photo', tooBig: '{f} is larger than 10 MB', max: 'no more than {n} photos', notAdded: 'Not added: ', sent: 'Sent', uploading: 'Uploading photos...', sending: 'Sending...', submit: 'Send request', failed: 'Your request could not be sent. Please try again or give us a call.', tooMany: 'Too many requests in a short time. Feel free to call us: +31 (0)593 24 17 12.', check: 'Please check your name, email address and phone number.', photoCount: 'No more than 6 photos per request.', photoSize: 'A photo is too large. Choose a smaller photo or leave it out.', photoType: 'A file is not a photo (JPG, PNG, WebP or HEIC).', photoFailed: 'A photo could not be uploaded. Please try again without that photo.' },\n    de: { photoDrawings: 'Foto und Zeichnungen', photos: 'Fotos', close: 'Schlie\u00dfen', prev: 'Vorheriges Foto', next: 'N\u00e4chstes Foto', step: 'Schritt {n} von {m}', remove: '{f} entfernen', notPhoto: '{f} ist kein Foto', tooBig: '{f} ist gr\u00f6\u00dfer als 10 MB', max: 'h\u00f6chstens {n} Fotos', notAdded: 'Nicht hinzugef\u00fcgt: ', sent: 'Gesendet', uploading: 'Fotos werden hochgeladen...', sending: 'Wird gesendet...', submit: 'Anfrage senden', failed: 'Die Anfrage konnte nicht gesendet werden. Bitte versuchen Sie es erneut oder rufen Sie uns an.', tooMany: 'Zu viele Anfragen in kurzer Zeit. Rufen Sie uns gerne an: +31 (0)593 24 17 12.', check: 'Bitte pr\u00fcfen Sie Ihren Namen, Ihre E-Mail-Adresse und Telefonnummer.', photoCount: 'H\u00f6chstens 6 Fotos pro Anfrage.', photoSize: 'Ein Foto ist zu gro\u00df. W\u00e4hlen Sie ein kleineres Foto oder lassen Sie es weg.', photoType: 'Eine Datei ist kein Foto (JPG, PNG, WebP oder HEIC).', photoFailed: 'Ein Foto konnte nicht hochgeladen werden. Bitte versuchen Sie es ohne dieses Foto erneut.' },\n  };\n  function tx(key, vars) {\n    var s = (TX[LANG] || TX.nl)[key];\n    for (var k in vars) s = s.replace('{' + k + '}', vars[k]);\n    return s;\n  }\n\n  \/\/ Mobile menu (only present in the version with header).\n  var burger = document.querySelector('.dtc-burger');\n  var nav = document.getElementById('dtc-nav');\n  if (burger && nav) {\n    burger.addEventListener('click', function () {\n      var open = nav.classList.toggle('is-open');\n      burger.setAttribute('aria-expanded', String(open));\n    });\n    document.addEventListener('keydown', function (e) {\n      if (e.key === 'Escape' && nav.classList.contains('is-open')) {\n        nav.classList.remove('is-open');\n        burger.setAttribute('aria-expanded', 'false');\n        burger.focus();\n      }\n    });\n    window.matchMedia('(min-width: 901px)').addEventListener('change', function (m) {\n      if (m.matches) { nav.classList.remove('is-open'); burger.setAttribute('aria-expanded', 'false'); }\n    });\n  }\n\n  \/\/ Quattro configurator: one unit, three layouts.\n  document.querySelectorAll('[data-config]').forEach(function (box) {\n    var buttons = box.querySelectorAll('[data-set]');\n    var outs = box.querySelectorAll('[data-out]');\n    buttons.forEach(function (b) {\n      b.addEventListener('click', function () {\n        var mode = b.getAttribute('data-set');\n        box.setAttribute('data-mode', mode);\n        buttons.forEach(function (x) { x.setAttribute('aria-pressed', String(x === b)); });\n        outs.forEach(function (o) { o.hidden = o.getAttribute('data-out') !== mode; });\n      });\n    });\n  });\n\n  \/\/ Carousel: prev\/next scroll by one card, disabled at the ends.\n  document.querySelectorAll('[data-carousel]').forEach(function (c) {\n    var track = c.querySelector('.dtk-carousel-track');\n    var btns = c.querySelectorAll('[data-dir]');\n    function update() {\n      var max = track.scrollWidth - track.clientWidth - 2;\n      btns[0].disabled = track.scrollLeft <= 2;\n      btns[1].disabled = track.scrollLeft >= max;\n      c.querySelector('.dtk-carousel-nav').hidden = max <= 0;\n    }\n    btns.forEach(function (b) {\n      b.addEventListener('click', function () {\n        var card = track.querySelector('.dtk-card');\n        var step = card ? card.getBoundingClientRect().width + parseFloat(getComputedStyle(track).columnGap || 0) : track.clientWidth;\n        track.scrollBy({ left: step * +b.getAttribute('data-dir'), behavior: 'smooth' });\n      });\n    });\n    track.addEventListener('scroll', update, { passive: true });\n    window.addEventListener('resize', update);\n    update();\n  });\n\n  \/\/ Photo slider: one photo in focus, arrows and counter, enlarge opens the lightbox.\n  document.querySelectorAll('[data-slider]').forEach(function (sl) {\n    var track = sl.querySelector('.dtk-slider-track');\n    var slides = sl.querySelectorAll('.dtk-slide');\n    var list = JSON.parse(sl.querySelector('template[data-all]').innerHTML);\n    var cur = sl.querySelector('[data-cur]'), cap = sl.querySelector('[data-cap]');\n    var i = 0, lock = null;\n    function go(n) {\n      i = (n + slides.length) % slides.length;\n      clearTimeout(lock); lock = setTimeout(function () { lock = null; }, 900);\n      track.scrollTo({ left: slides[i].offsetLeft - slides[0].offsetLeft, behavior: 'smooth' });\n      set(i);\n    }\n    function set(n) {\n      i = n; cur.textContent = n + 1; cap.textContent = list[n][1];\n      slides.forEach(function (s, k) { s.classList.toggle('is-current', k === n); });\n    }\n    sl.querySelectorAll('[data-step]').forEach(function (b) {\n      b.addEventListener('click', function () { go(i + (+b.getAttribute('data-step'))); });\n    });\n    \/\/ A clicked (or focused) photo becomes the current one.\n    sl.querySelectorAll('.dtk-slide-btn').forEach(function (b, k) {\n      b.addEventListener('click', function () { if (k !== i) go(k); });\n    });\n    \/\/ Current photo follows the scroll position (swipe, trackpad, restored scroll on reload).\n    function sync() {\n      var x = track.scrollLeft, best = 0, d = Infinity;\n      slides.forEach(function (s, k) { var dd = Math.abs(s.offsetLeft - slides[0].offsetLeft - x); if (dd < d) { d = dd; best = k; } });\n      \/\/ At the end of the track the last slides cannot scroll to the start; keep the chosen one.\n      var atEnd = x >= track.scrollWidth - track.clientWidth - 2;\n      if (atEnd && i > best) return;\n      set(best);\n    }\n    var t;\n    track.addEventListener('scroll', function () {\n      if (lock) return;\n      clearTimeout(t);\n      t = setTimeout(sync, 80);\n    }, { passive: true });\n    set(0);\n    requestAnimationFrame(sync);\n    window.addEventListener('load', sync);\n  });\n\n  \/\/ Veegcarrousels op mobiel (modelhok, klapbodemstappen, opbouw): teller onder de rij.\n  \/\/ Op desktop staat de rij als grid en is de teller verborgen (CSS).\n  document.querySelectorAll('.dtk-mrow-left, .dtk-steps--swipe').forEach(function (row) {\n    var items = row.matches('.dtk-mrow-left') ? row.querySelectorAll('.dtk-mrow-media, .dtk-draw') : row.children;\n    items = Array.prototype.slice.call(items);\n    if (items.length < 2) return;\n    var count = document.createElement('p');\n    count.className = 'dtk-swipe-count';\n    count.setAttribute('aria-hidden', 'true');\n    count.innerHTML = '<b>1<\/b> \/ ' + items.length;\n    row.insertAdjacentElement('afterend', count);\n    var cur = count.querySelector('b');\n    function sync() {\n      var pad = parseFloat(getComputedStyle(row).paddingLeft) || 0;\n      var left = row.getBoundingClientRect().left + pad, best = 0, d = Infinity;\n      items.forEach(function (el, k) { var dd = Math.abs(el.getBoundingClientRect().left - left); if (dd < d) { d = dd; best = k; } });\n      \/\/ Aan het eind komen de laatste items niet meer tegen de rand; dan telt het laatste.\n      if (row.scrollLeft > 0 && row.scrollLeft >= row.scrollWidth - row.clientWidth - 2) best = items.length - 1;\n      cur.textContent = best + 1;\n    }\n    var t;\n    row.addEventListener('scroll', function () { clearTimeout(t); t = setTimeout(sync, 60); }, { passive: true });\n    window.addEventListener('resize', sync);\n  });\n\n  \/\/ Galleries (photo sliders) share one native <dialog> lightbox.\n  \/\/ Keuzehulp: \u00e9\u00e9n vraag tegelijk, daarna punten optellen en de top drie tonen (weging in _finder.mjs).\n  document.querySelectorAll('[data-finder]').forEach(function (f) {\n    var qs = Array.prototype.slice.call(f.querySelectorAll('[data-finder-q]'));\n    var quiz = f.querySelector('[data-finder-quiz]'), result = f.querySelector('[data-finder-result]');\n    var stepEl = f.querySelector('[data-finder-step]'), bar = f.querySelector('[data-finder-bar]'), back = f.querySelector('[data-finder-back]');\n    var list = f.querySelector('[data-finder-list]'), cards = Array.prototype.slice.call(list.children);\n    var of = f.getAttribute('data-of'), answers = {}, cur = 0;\n    function show(i, focus) {\n      cur = i;\n      qs.forEach(function (q, k) { q.hidden = k !== i; });\n      stepEl.textContent = of.replace('{n}', i + 1).replace('{m}', qs.length);\n      bar.style.width = ((i + 1) \/ qs.length * 100) + '%';\n      back.hidden = i === 0;\n      if (focus) qs[i].querySelector('.dtk-find-qt').focus();\n    }\n    function finish() {\n      var scored = cards.map(function (c, order) {\n        var s = JSON.parse(c.getAttribute('data-score')), pts = 0;\n        Object.keys(answers).forEach(function (q) { pts += s[q + ':' + answers[q]] || 0; });\n        return { c: c, pts: pts, order: order, group: c.getAttribute('data-group') };\n      }).sort(function (a, b) { return b.pts - a.pts || a.order - b.order; });\n      var top = [], seen = {};\n      scored.forEach(function (x) {\n        if (top.length >= 3 || x.pts <= 0 || (top.length && x.pts < top[0].pts \/ 2)) return;\n        if (x.group) { if (seen[x.group]) return; seen[x.group] = true; }\n        top.push(x);\n      });\n      if (!top.length) top.push(scored[0]);\n      cards.forEach(function (c) { c.hidden = true; });\n      top.forEach(function (x, k) {\n        list.appendChild(x.c);\n        x.c.hidden = false;\n        x.c.querySelector('.dtk-find-best').hidden = k !== 0;\n        var any = false;\n        x.c.querySelectorAll('[data-reason]').forEach(function (li) {\n          var p = li.getAttribute('data-reason').split(':');\n          li.hidden = answers[p[0]] !== p[1];\n          if (!li.hidden) any = true;\n        });\n        x.c.querySelector('.dtk-find-why').hidden = !any;\n      });\n      quiz.hidden = true; result.hidden = false;\n      result.querySelector('[data-finder-result-h]').focus();\n    }\n    qs.forEach(function (q, i) {\n      q.querySelectorAll('[data-answer]').forEach(function (b) {\n        b.addEventListener('click', function () {\n          q.querySelectorAll('[data-answer]').forEach(function (o) { o.setAttribute('aria-pressed', String(o === b)); });\n          answers[q.getAttribute('data-finder-q')] = b.getAttribute('data-answer');\n          if (i < qs.length - 1) show(i + 1, true); else finish();\n        });\n      });\n    });\n    back.addEventListener('click', function () { if (cur > 0) show(cur - 1, true); });\n    f.querySelector('[data-finder-restart]').addEventListener('click', function () {\n      answers = {};\n      f.querySelectorAll('[data-answer]').forEach(function (o) { o.setAttribute('aria-pressed', 'false'); });\n      result.hidden = true; quiz.hidden = false;\n      show(0, true);\n    });\n  });\n\n  document.querySelectorAll('[data-gallery]').forEach(function (g) {\n    var list = JSON.parse(g.querySelector('template[data-all]').innerHTML);\n    var dlg = document.createElement('dialog');\n    dlg.className = 'dtk-lightbox';\n    dlg.setAttribute('aria-label', list.some(function (x) { return x[0].charAt(0) === '#'; }) ? tx('photoDrawings') : tx('photos'));\n    dlg.innerHTML = '<div class=\"dtk-lightbox-inner\"><button type=\"button\" class=\"dtk-lb-close\" aria-label=\"' + tx('close') + '\">' + tx('close') + '<\/button>' +\n      '<button type=\"button\" class=\"dtk-lb-nav dtk-lb-prev\" data-step=\"-1\" aria-label=\"' + tx('prev') + '\">\\u2190<\/button>' +\n      '<figure><figcaption><\/figcaption><p class=\"dtk-lb-count\" aria-live=\"polite\"><\/p><\/figure>' +\n      '<button type=\"button\" class=\"dtk-lb-nav dtk-lb-next\" data-step=\"1\" aria-label=\"' + tx('next') + '\">\\u2192<\/button><\/div>';\n    (g.closest('.dtk') || document.body).appendChild(dlg);\n    var im = null, pic = null, cap = dlg.querySelector('figcaption'), count = dlg.querySelector('.dtk-lb-count');\n    var i = 0, opener = null;\n    if (list.length < 2) dlg.querySelectorAll('.dtk-lb-nav').forEach(function (b) { b.hidden = true; });\n    function show(n) {\n      i = (n + list.length) % list.length;\n      var src = list[i][0];\n      if (src.charAt(0) === '#') {\n        \/\/ Tekening: kopie van de SVG op de pagina, zonder id's (die staan al in het document).\n        var svg = document.querySelector(src + ' svg');\n        if (!pic) { pic = document.createElement('div'); pic.className = 'dtk-lb-draw'; cap.parentNode.insertBefore(pic, cap); }\n        var copy = svg.cloneNode(true);\n        copy.querySelectorAll('[id]').forEach(function (el) { el.removeAttribute('id'); });\n        copy.removeAttribute('aria-labelledby');\n        copy.setAttribute('aria-label', list[i][1]);\n        pic.replaceChildren(copy);\n        pic.hidden = false;\n        if (im) im.hidden = true;\n      } else {\n        if (!im) { im = document.createElement('img'); cap.parentNode.insertBefore(im, cap); }\n        im.src = src; im.alt = list[i][1]; im.hidden = false;\n        if (pic) pic.hidden = true;\n      }\n      cap.textContent = list[i][1];\n      count.textContent = (i + 1) + ' \/ ' + list.length;\n    }\n    g.querySelectorAll('[data-index]').forEach(function (btn) {\n      btn.addEventListener('click', function () {\n        opener = btn; show(+btn.getAttribute('data-index')); dlg.showModal();\n      });\n    });\n    dlg.querySelectorAll('[data-step]').forEach(function (b) {\n      b.addEventListener('click', function () { show(i + (+b.getAttribute('data-step'))); });\n    });\n    dlg.querySelector('.dtk-lb-close').addEventListener('click', function () { dlg.close(); });\n    dlg.addEventListener('click', function (e) { if (e.target === dlg || e.target.classList.contains('dtk-lightbox-inner')) dlg.close(); });\n    dlg.addEventListener('keydown', function (e) {\n      if (e.key === 'ArrowRight') show(i + 1);\n      if (e.key === 'ArrowLeft') show(i - 1);\n    });\n    dlg.addEventListener('close', function () { if (opener) opener.focus({ preventScroll: true }); });\n  });\n\n  \/\/ Kalfassistent (homepage), in chatvorm: de vraag komt als bericht in het gesprek, het antwoord is het best\n  \/\/ passende antwoord uit de veelgestelde vragen met een link naar het hele antwoord. Geen server, geen taalmodel:\n  \/\/ tekst normaliseren, synoniemen in drie talen, punten optellen.\n  document.querySelectorAll('[data-assist]').forEach(function (box) {\n    var input = box.querySelector('[data-assist-input]'), log = box.querySelector('[data-chat-log]');\n    var tpl = box.querySelector('template[data-assist-index]');\n    var arrow = '<svg class=\"dtk-ic\" viewBox=\"0 0 20 20\" aria-hidden=\"true\"><path d=\"M4 10h11m-4.5-5L15 10l-4.5 5\" fill=\"none\" stroke=\"currentColor\" stroke-width=\"1.8\" stroke-linecap=\"round\" stroke-linejoin=\"round\"\/><\/svg>';\n    function norm(s) { return s.toLowerCase().normalize('NFD').replace(\/[\u0300-\u036f]\/g, '').replace(\/[^a-z0-9]+\/g, ' ').trim(); }\n    var items = Array.prototype.map.call(tpl.content.querySelectorAll('article'), function (a) {\n      var l = a.querySelector('a');\n      var it = { q: a.querySelector('h3').textContent, a: a.querySelector('p').textContent, href: l.getAttribute('href'), label: '' };\n      it.wq = norm(it.q).split(' '); it.wa = norm(it.a).split(' '); it.wt = norm((a.getAttribute('data-terms') || '') + ' ' + it.label).split(' ');\n      return it;\n    });\n    var STOP = ('de het een en of van in op te is ik mijn wat hoe hoeveel welke wanneer waar waarom kan kunnen moet ook met voor bij aan er dat die u uw hij zijn heb nodig ' +\n      'the a an and or of in on to is i my what how many much which when where why can do does with for at it that you your need ' +\n      'der das ein eine und oder von auf zu ist mein meine was wie viel viele wieviel welche welcher wann wo warum kann konnen mit fur bei es dass sie ihr ihre brauche').split(' ');\n    var SYN = [['biest', 'biestmelk', 'colostrum', 'kolostrum', 'biestmilch'], ['kalf', 'kalveren', 'calf', 'calves', 'kalb', 'kalber'],\n      ['groep', 'groepen', 'groepshuisvesting', 'group', 'groups', 'gruppe', 'gruppen'], ['eenling', 'eenlingbox', 'eenlingboxen', 'individual', 'einzel', 'einzelbox', 'einzelboxen'],\n      ['pasteur', 'pasteuriseren', 'pasteuriseerder', 'pasteuriser', 'pasteurise', 'pasteurisierer', 'pasteurisieren'], ['zak', 'zakken', 'bag', 'bags', 'beutel'],\n      ['stal', 'barn', 'stall'], ['uitmesten', 'mest', 'mesten', 'muck', 'mucking', 'ausmisten', 'misten', 'ausmisten'], ['shovel', 'loader', 'hoflader'], ['duobox', 'duoboxen', 'duohok', 'pair', 'doppelbox'],\n      ['klapbodem', 'hinged', 'klappboden'], ['kwaliteit', 'quality', 'qualitat', 'brix', 'refractometer', 'refraktometer'], ['afdeling', 'afdelingen', 'pen', 'pens', 'bucht', 'buchten'],\n      ['melkpoeder', 'kunstmelk', 'replacer', 'milchaustauscher', 'milchpulver'], ['diarree', 'scours', 'diarrhoea', 'durchfall'], ['krachtvoer', 'kalverbrok', 'brok', 'concentrate', 'concentrates', 'pellet', 'kraftfutter']];\n    \/\/ Een woord past bij een zoekterm als het begin overeenkomt (kalveren ~ kalver, beurzen ~ beurs).\n    function hit(words, term) {\n      var stem = term.length > 5 ? term.slice(0, term.length - 2) : term;\n      for (var i = 0; i < words.length; i++) { var w = words[i]; if (w === term || (term.length >= 4 && (w.indexOf(stem) === 0 || term.indexOf(w) === 0 && w.length >= Math.max(4, term.length - 2)))) return true; }\n      return false;\n    }\n    function variants(term) {\n      var out = [term];\n      SYN.forEach(function (g) { if (g.some(function (x) { return hit([x], term) || hit([term], x); })) out = out.concat(g); });\n      return out;\n    }\n    function search(query) {\n      var terms = norm(query).split(' ').filter(function (w) { return w.length > 1 && STOP.indexOf(w) < 0; });\n      if (!terms.length) return null;\n      return items.map(function (it) {\n        var score = 0;\n        terms.forEach(function (term) {\n          var v = variants(term), best = 0;\n          v.forEach(function (x) { if (hit(it.wq, x)) best = Math.max(best, 3); else if (hit(it.wt, x)) best = Math.max(best, 2); else if (hit(it.wa, x)) best = Math.max(best, 1); });\n          score += best;\n        });\n        return { it: it, score: score };\n      }).filter(function (r) { return r.score > 0; }).sort(function (a, b) { return b.score - a.score || a.it.q.length - b.it.q.length; }) \/\/ gelijk: de gerichtste (kortste) vraag eerst\n        .filter(function (r, i, all) { return r.score * 2 >= all[0].score; }).slice(0, 6); \/\/ zwakke treffers weg\n    }\n    function el(tag, cls, text) { var e = document.createElement(tag); if (cls) e.className = cls; if (text != null) e.textContent = text; return e; }\n    function msg(kind) {\n      var li = el('div', 'dtk-msg dtk-msg--' + kind);\n      li.appendChild(el('span', 'dtk-msg-who', log.getAttribute(kind === 'you' ? 'data-you' : 'data-bot')));\n      log.appendChild(li);\n      return li;\n    }\n    function link(href, text) { var a = el('a', 'dtk-link', text + ' '); a.href = href; a.insertAdjacentHTML('beforeend', arrow); return a; }\n    function ask(q) {\n      q = q.trim(); if (!q) return;\n      var you = msg('you'); you.appendChild(el('p', null, q));\n      var r = search(q) || [], bot = msg('bot');\n      if (!r.length) {\n        bot.appendChild(el('p', null, log.getAttribute('data-none')));\n        var help = box.querySelector('.dtk-assist-help');\n        if (help) { var row = el('p', 'dtk-msg-links'); Array.prototype.forEach.call(help.querySelectorAll('a'), function (a, k) { if (k < 2) row.appendChild(a.cloneNode(true)); }); bot.appendChild(row); }\n      } else {\n        bot.appendChild(el('p', 'dtk-msg-lead', log.getAttribute('data-found')));\n        bot.appendChild(el('p', 'dtk-msg-q', r[0].it.q));\n        bot.appendChild(el('p', null, r[0].it.a));\n        bot.appendChild(link(r[0].it.href, log.getAttribute('data-read')));\n        if (r.length > 1) {\n          bot.appendChild(el('p', 'dtk-msg-lead', log.getAttribute('data-related')));\n          var ul = el('ul', 'dtk-msg-more');\n          r.slice(1, 3).forEach(function (x) { var li = el('li'); li.appendChild(link(x.it.href, x.it.q)); ul.appendChild(li); });\n          bot.appendChild(ul);\n        }\n      }\n      \/\/ Alleen het gesprek scrollt (niet de pagina): de vraag bovenaan in beeld, het antwoord eronder.\n      log.scrollTop += you.getBoundingClientRect().top - log.getBoundingClientRect().top - 8;\n    }\n    box.querySelector('[data-assist-form]').addEventListener('submit', function (e) { e.preventDefault(); ask(input.value); input.value = ''; input.focus({ preventScroll: true }); });\n    box.querySelectorAll('[data-assist-chip]').forEach(function (b) {\n      b.addEventListener('click', function () { ask(b.getAttribute('data-assist-chip')); });\n    });\n  });\n\n  \/\/ Veelgestelde vragen: een link naar #v-... opent die vraag en scrolt ernaartoe.\n  function openFaq() {\n    var id = decodeURIComponent(location.hash.slice(1)); if (!\/^v-\/.test(id)) return;\n    var d = document.getElementById(id); if (d && d.tagName === 'DETAILS') { d.open = true; d.scrollIntoView({ block: 'start' }); }\n  }\n  openFaq(); window.addEventListener('hashchange', openFaq);\n\n  \/\/ Bedrijfsvideo: de YouTube-speler komt pas na een klik in de pagina (youtube-nocookie) en gaat weg bij sluiten.\n  var vd = document.querySelector('[data-video-dialog]');\n  if (vd) {\n    var vframe = vd.querySelector('[data-video-frame]'), vOpener = null;\n    document.querySelectorAll('[data-video]').forEach(function (b) {\n      b.addEventListener('click', function () {\n        var f = document.createElement('iframe');\n        f.src = 'https:\/\/www.youtube-nocookie.com\/embed\/' + encodeURIComponent(b.getAttribute('data-video')) + '?autoplay=1&rel=0';\n        f.title = vd.getAttribute('aria-label');\n        f.allow = 'autoplay; encrypted-media; picture-in-picture; fullscreen';\n        f.setAttribute('allowfullscreen', '');\n        vframe.replaceChildren(f);\n        vOpener = b;\n        vd.showModal();\n      });\n    });\n    vd.querySelector('[data-video-close]').addEventListener('click', function () { vd.close(); });\n    vd.addEventListener('click', function (e) { if (e.target === vd) vd.close(); });\n    vd.addEventListener('close', function () { vframe.replaceChildren(); if (vOpener) vOpener.focus({ preventScroll: true }); });\n  }\n\n  \/\/ Beursagenda: voorbije beurzen weg; is er niets meer over, dan het hele blok.\n  document.querySelectorAll('[data-fair-end]').forEach(function (li) {\n    var today = new Date().toISOString().slice(0, 10);\n    if (li.getAttribute('data-fair-end') < today) li.hidden = true;\n  });\n  document.querySelectorAll('.dtk-fairs').forEach(function (ol) {\n    if (!ol.querySelector('li:not([hidden])')) ol.closest('section').hidden = true;\n  });\n\n  \/\/ Offerte-popup in stappen. Elk element met data-quote opent hem, met de keuze al ingevuld.\n  var qd = document.querySelector('[data-quote-dialog]');\n  if (qd) {\n    var form = qd.querySelector('[data-q-form]');\n    var steps = qd.querySelectorAll('[data-q-step]');\n    var panels = JSON.parse(qd.querySelector('template[data-q-panels]').innerHTML);\n    var pImg = qd.querySelector('.dtk-q-panel-img'), pTitle = qd.querySelector('[data-q-panel-title]');\n    var bar = qd.querySelector('[data-q-bar]'), num = qd.querySelector('[data-q-stepnum]');\n    var back = qd.querySelector('[data-q-back]'), next = qd.querySelector('[data-q-next]'), submit = qd.querySelector('[data-q-submit]');\n    var done = qd.querySelector('[data-q-done]'), qNav = qd.querySelector('[data-q-nav]');\n    var fileInput = qd.querySelector('[data-q-files]'), thumbs = qd.querySelector('[data-q-thumbs]'), fileErr = qd.querySelector('[data-q-file-error]');\n    var files = [], step = 1, qOpener = null, openedAt = 0, sending = false;\n    \/\/ Verzendadres (WordPress-plugin DairyTop Offerte). Zonder data-endpoint is dit de preview: er gaat niets weg.\n    var endpoint = qd.getAttribute('data-endpoint');\n    var sendErr = qd.querySelector('[data-q-send-error]');\n    var MAX_FILES = 6, MAX_BYTES = 10 * 1024 * 1024;\n\n    function panel(key) {\n      var p = panels[key] || panels.advies;\n      pImg.src = p.src; pTitle.textContent = p.title;\n    }\n    function show(n, focus) {\n      step = n;\n      steps.forEach(function (f) { f.hidden = +f.getAttribute('data-q-step') !== n; });\n      num.textContent = tx('step', { n: n, m: steps.length });\n      bar.style.width = (n \/ steps.length * 100) + '%';\n      back.hidden = n === 1;\n      next.hidden = n === steps.length;\n      submit.hidden = n !== steps.length;\n      if (focus !== false) { var h = qd.querySelector('[data-q-step=\"' + n + '\"] .dtk-q-h'); if (h) h.focus(); }\n    }\n    function syncSystem() {\n      var v = (form.querySelector('input[name=\"systeem\"]:checked') || {}).value;\n      qd.querySelectorAll('[data-q-sub]').forEach(function (s) { s.hidden = s.getAttribute('data-q-sub') !== v; });\n      \/\/ Ruimte en buiten\/binnen gaan over huisvesting; bij biest en voeding vragen we ze niet.\n      qd.querySelectorAll('[data-q-housing]').forEach(function (el) { el.hidden = v === 'biest' || v === 'voeding'; });\n      panel(v || 'advies');\n    }\n    function reset() {\n      form.reset(); files = []; renderFiles(); fileErr.hidden = true;\n      qd.querySelectorAll('.dtk-q-err').forEach(function (e) { e.hidden = true; });\n      qd.querySelectorAll('[aria-invalid]').forEach(function (e) { e.removeAttribute('aria-invalid'); });\n      done.hidden = true; qNav.hidden = false; form.classList.remove('is-done');\n      if (sendErr) sendErr.hidden = true;\n    }\n    function open(trigger) {\n      reset();\n      var sys = trigger.getAttribute('data-quote');\n      var model = trigger.getAttribute('data-model');\n      var intent = trigger.getAttribute('data-intent');\n      if (sys && sys !== 'advies') { var r = form.querySelector('input[name=\"systeem\"][value=\"' + sys + '\"]'); if (r) r.checked = true; }\n      if (model) { var m = form.querySelector('input[name^=\"uitvoering_\"][value=\"' + model + '\"]'); if (m) m.checked = true; }\n      if (intent) { var it = form.querySelector('input[name=\"voorkeur\"][value=\"' + intent + '\"]'); if (it) it.checked = true; }\n      syncSystem();\n      qOpener = trigger;\n      openedAt = Date.now();\n      qd.showModal();\n      show(1);\n    }\n    document.addEventListener('click', function (e) {\n      var t = e.target.closest('[data-quote]');\n      if (!t) return;\n      e.preventDefault();\n      open(t);\n    });\n    form.addEventListener('change', function (e) { if (e.target.name === 'systeem') syncSystem(); });\n    next.addEventListener('click', function () { show(Math.min(step + 1, steps.length)); });\n    back.addEventListener('click', function () { show(Math.max(step - 1, 1)); });\n    qd.querySelectorAll('[data-q-close]').forEach(function (b) { b.addEventListener('click', function () { qd.close(); }); });\n    qd.addEventListener('close', function () { if (qOpener) qOpener.focus({ preventScroll: true }); });\n    qd.addEventListener('click', function (e) { if (e.target === qd) qd.close(); });\n    \/\/ Enter in een veld gaat naar de volgende stap in plaats van direct te versturen.\n    form.addEventListener('keydown', function (e) {\n      if (e.key === 'Enter' && e.target.tagName === 'INPUT' && step < steps.length) { e.preventDefault(); show(step + 1); }\n    });\n\n    \/\/ Foto's: type en grootte in de browser; de server controleert opnieuw.\n    function renderFiles() {\n      thumbs.innerHTML = '';\n      files.forEach(function (f, k) {\n        var li = document.createElement('li');\n        var im = document.createElement('img'); im.alt = f.name; im.src = URL.createObjectURL(f);\n        im.onload = function () { URL.revokeObjectURL(im.src); };\n        var rm = document.createElement('button'); rm.type = 'button'; rm.className = 'dtk-q-thumb-rm';\n        rm.setAttribute('aria-label', tx('remove', { f: f.name })); rm.textContent = '\u00d7';\n        rm.addEventListener('click', function () { files.splice(k, 1); renderFiles(); });\n        li.appendChild(im); li.appendChild(rm); thumbs.appendChild(li);\n      });\n    }\n    function addFiles(list) {\n      var msg = [];\n      Array.prototype.forEach.call(list, function (f) {\n        if (!\/^image\\\/(jpeg|png|webp|heic|heif)$\/.test(f.type) && !\/\\.(heic|heif)$\/i.test(f.name)) { msg.push(tx('notPhoto', { f: f.name })); return; }\n        if (f.size > MAX_BYTES) { msg.push(tx('tooBig', { f: f.name })); return; }\n        if (files.length >= MAX_FILES) { msg.push(tx('max', { n: MAX_FILES })); return; }\n        files.push(f);\n      });\n      fileErr.hidden = !msg.length; fileErr.textContent = msg.length ? tx('notAdded') + msg.filter(function (m, k, a) { return a.indexOf(m) === k; }).join(', ') + '.' : '';\n      renderFiles(); fileInput.value = '';\n    }\n    fileInput.addEventListener('change', function () { addFiles(fileInput.files); });\n    var drop = qd.querySelector('[data-q-drop]');\n    ['dragenter', 'dragover'].forEach(function (ev) { drop.addEventListener(ev, function (e) { e.preventDefault(); drop.classList.add('is-over'); }); });\n    ['dragleave', 'drop'].forEach(function (ev) { drop.addEventListener(ev, function (e) { e.preventDefault(); drop.classList.remove('is-over'); }); });\n    drop.addEventListener('drop', function (e) { if (e.dataTransfer) addFiles(e.dataTransfer.files); });\n\n    form.addEventListener('submit', function (e) {\n      e.preventDefault();\n      var first = null;\n      [['naam', function (v) { return v.trim().length > 1; }], ['email', function (v) { return \/^[^\\s@]+@[^\\s@]+\\.[^\\s@]+$\/.test(v.trim()); }], ['telefoon', function (v) { return v.replace(\/\\D\/g, '').length >= 8; }]].forEach(function (c) {\n        var el = form.elements[c[0]], ok = c[1](el.value), err = el.parentNode.querySelector('.dtk-q-err');\n        err.hidden = ok; if (ok) el.removeAttribute('aria-invalid'); else { el.setAttribute('aria-invalid', 'true'); first = first || el; }\n      });\n      if (first) { first.focus(); return; }\n      if (!endpoint) { finish(); return; } \/\/ preview: niets versturen\n      if (sending) return;\n      sending = true; submit.disabled = true; submit.textContent = files.length ? tx('uploading') : tx('sending');\n      if (sendErr) sendErr.hidden = true;\n      Promise.all(files.map(shrink)).then(function (photos) {\n        var fd = new FormData(form);\n        fd.delete('fotos');\n        photos.forEach(function (f) { fd.append('fotos[]', f, f.name); });\n        fd.append('taal', LANG);\n        fd.append('bron', location.href.split('#')[0]);\n        fd.append('invultijd', String(Date.now() - openedAt));\n        submit.textContent = tx('sending');\n        return fetch(endpoint, { method: 'POST', body: fd, credentials: 'same-origin' });\n      }).then(function (res) {\n        return res.json().catch(function () { return {}; }).then(function (j) {\n          if (!res.ok || !j.ok) throw new Error(res.status === 413 ? tx('photoSize') : (j.code && (TX[LANG] || TX.nl)[j.code]) || tx('failed'));\n        });\n      }).then(finish, function (err) {\n        if (sendErr) { sendErr.textContent = (err && err.message) || tx('failed'); sendErr.hidden = false; sendErr.scrollIntoView({ block: 'nearest' }); }\n      }).then(function () { sending = false; submit.disabled = false; submit.textContent = tx('submit'); });\n    });\n    function finish() {\n      steps.forEach(function (f) { f.hidden = true; });\n      qNav.hidden = true; form.classList.add('is-done'); done.hidden = false; done.focus();\n      bar.style.width = '100%'; num.textContent = tx('sent');\n    }\n    \/\/ Foto's altijd opnieuw coderen in de browser (lange zijde max 2400 px, JPEG 0,82): kleinere upload binnen de\n    \/\/ PHP-limieten, HEIC leesbaar als de browser hem kan openen, en EXIF (GPS-locatie, tijdstip, toestel) eraf,\n    \/\/ want een canvas neemt geen metadata mee. Kan de browser het beeld niet openen, dan bij JPEG de\n    \/\/ metadatablokken eruit (stripJpeg); alleen een ander type dat niet te openen is gaat ongewijzigd.\n    function shrink(f) {\n      var MAX = 2400;\n      if (!\/^image\\\/(jpeg|png|webp|heic|heif)$\/.test(f.type)) return Promise.resolve(f);\n      return decode(f).then(function (img) {\n        var w = img.width || img.naturalWidth, h = img.height || img.naturalHeight;\n        var k = Math.min(1, MAX \/ Math.max(w, h));\n        var c = document.createElement('canvas');\n        c.width = Math.round(w * k); c.height = Math.round(h * k);\n        var g = c.getContext('2d'); g.fillStyle = '#fff'; g.fillRect(0, 0, c.width, c.height); g.drawImage(img, 0, 0, c.width, c.height);\n        if (img.close) img.close();\n        return new Promise(function (r, x) { c.toBlob(function (b) { b ? r(new File([b], f.name.replace(\/\\.[^.]+$\/, '') + '.jpg', { type: 'image\/jpeg' })) : x(); }, 'image\/jpeg', 0.82); });\n      }).catch(function () { return f.type === 'image\/jpeg' ? stripJpeg(f) : f; });\n    }\n    function decode(f) {\n      var viaImg = function () {\n        return new Promise(function (r, x) {\n          var u = URL.createObjectURL(f), im = new Image();\n          im.onload = function () { URL.revokeObjectURL(u); im.naturalWidth ? r(im) : x(); };\n          im.onerror = function () { URL.revokeObjectURL(u); x(); };\n          im.src = u;\n        });\n      };\n      return window.createImageBitmap ? createImageBitmap(f).catch(viaImg) : viaImg();\n    }\n    \/\/ JPEG zonder persoonlijke metadata: APP1 (EXIF met GPS, XMP), APP13 (IPTC) en commentaar weg. Kleurprofiel\n    \/\/ (APP2) en Adobe-blok (APP14) blijven, die bepalen de kleuren; de beelddata blijft ongewijzigd.\n    function stripJpeg(f) {\n      return f.arrayBuffer().then(function (buf) {\n        var d = new Uint8Array(buf), parts = [d.subarray(0, 2)], i = 2;\n        if (d[0] !== 0xFF || d[1] !== 0xD8) return f;\n        while (i + 4 <= d.length && d[i] === 0xFF) {\n          var m = d[i + 1];\n          if (m === 0xDA) break; \/\/ begin beelddata\n          var end = i + 2 + ((d[i + 2] << 8) | d[i + 3]);\n          if (m !== 0xE1 && m !== 0xED && m !== 0xFE) parts.push(d.subarray(i, end));\n          i = end;\n        }\n        parts.push(d.subarray(i));\n        return new File(parts, f.name, { type: 'image\/jpeg' });\n      }).catch(function () { return f; });\n    }\n  }\n})();\n(function () {\n  \/\/ Live prijzen bij de shopkaarten (Kalvervoeding) uit de WooCommerce Store API. De prijs staat bewust niet in de HTML:\n  \/\/ die wijzigt in WooCommerce. Geen antwoord = het vak blijft leeg, de kaart werkt gewoon.\n  var grid = document.querySelector('[data-prices]');\n  if (!grid || !window.fetch) return;\n  var ids = [];\n  grid.querySelectorAll('[data-price]').forEach(function (s) { ids.push(s.getAttribute('data-price')); });\n  if (!ids.length) return;\n  var lang = grid.getAttribute('data-lang') || 'nl';\n  var tag = { nl: 'nl-NL', en: 'en-GB', de: 'de-DE' }[lang] || 'nl-NL';\n  var src = grid.getAttribute('data-prices') + '?per_page=' + ids.length + '&include=' + ids.join(',') + (lang !== 'nl' ? '&lang=' + lang : '');\n  fetch(src, { credentials: 'omit' }).then(function (r) { return r.ok ? r.json() : []; }).then(function (list) {\n    (Array.isArray(list) ? list : []).forEach(function (p) {\n      var pr = p && p.prices, el = pr && grid.querySelector('[data-price=\"' + Number(p.id) + '\"]');\n      if (!el) return;\n      var amount = Number(pr.price_range ? pr.price_range.min_amount : pr.price) \/ Math.pow(10, pr.currency_minor_unit || 2);\n      if (!(amount > 0)) return;\n      el.textContent = (pr.price_range ? grid.getAttribute('data-from') + ' ' : '') + new Intl.NumberFormat(tag, { style: 'currency', currency: pr.currency_code || 'EUR' }).format(amount);\n      var small = document.createElement('small');\n      small.textContent = grid.getAttribute('data-excl');\n      el.appendChild(small);\n    });\n  }).catch(function () {});\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<\/div>\n\t\t\t\t\t<\/div>\n\t\t<\/section>\n\t\t\t\t<\/div>\n\t\t","protected":false},"excerpt":{"rendered":"<p>Home Colostrum management Perfect Udder Colostrum management With the Perfect Udder bag, colostrum stays in one bag from milking to feeding. You pasteurise, cool, freeze and warm it in that bag, and feed straight from it. Order bagsAdvice on pasteurising From milking to feeding In bag or bulk Bag sizes 2, 3 or 4 litres [&hellip;]<\/p>\n","protected":false},"author":584,"featured_media":0,"parent":0,"menu_order":0,"comment_status":"closed","ping_status":"closed","template":"elementor_header_footer","meta":{"site-sidebar-layout":"no-sidebar","site-content-layout":"page-builder","ast-site-content-layout":"full-width-container","site-content-style":"unboxed","site-sidebar-style":"unboxed","ast-global-header-display":"","ast-banner-title-visibility":"","ast-main-header-display":"","ast-hfb-above-header-display":"","ast-hfb-below-header-display":"","ast-hfb-mobile-header-display":"","site-post-title":"disabled","ast-breadcrumbs-content":"","ast-featured-img":"disabled","footer-sml-layout":"","ast-disable-related-posts":"","theme-transparent-header-meta":"default","adv-header-id-meta":"","stick-header-meta":"default","header-above-stick-meta":"","header-main-stick-meta":"","header-below-stick-meta":"","astra-migrate-meta-layouts":"set","ast-page-background-enabled":"default","ast-page-background-meta":{"desktop":{"background-color":"var(--ast-global-color-4)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"ast-content-background-meta":{"desktop":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"tablet":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""},"mobile":{"background-color":"var(--ast-global-color-5)","background-image":"","background-repeat":"repeat","background-position":"center center","background-size":"auto","background-attachment":"scroll","background-type":"","background-media":"","overlay-type":"","overlay-color":"","overlay-opacity":"","overlay-gradient":""}},"footnotes":""},"class_list":["post-12410","page","type-page","status-publish","hentry"],"yoast_head":"<!-- This site is optimized with the Yoast SEO plugin v28.6 - https:\/\/yoast.com\/product\/yoast-seo-wordpress\/ -->\n<title>Colostrum management | DairyTop<\/title>\n<meta name=\"description\" content=\"Colostrum management with Perfect Udder: from milking to feeding in one bag. Bags of 2, 3 and 4 litres and accessories in the shop, pasteurisers (Matilda, Adda) on quotation.\" \/>\n<meta name=\"robots\" content=\"index, follow, max-snippet:-1, max-image-preview:large, max-video-preview:-1\" \/>\n<link rel=\"canonical\" href=\"https:\/\/dairytop.eu\/en\/colostrum-management\/\" \/>\n<meta property=\"og:locale\" content=\"en_US\" \/>\n<meta property=\"og:type\" content=\"article\" \/>\n<meta property=\"og:title\" content=\"Colostrum management | DairyTop\" \/>\n<meta property=\"og:description\" content=\"Colostrum management with Perfect Udder: from milking to feeding in one bag. Bags of 2, 3 and 4 litres and accessories in the shop, pasteurisers (Matilda, Adda) on quotation.\" \/>\n<meta property=\"og:url\" content=\"https:\/\/dairytop.eu\/en\/colostrum-management\/\" \/>\n<meta property=\"og:site_name\" content=\"Dairytop\" \/>\n<meta property=\"article:modified_time\" content=\"2026-10-15T18:18:27+00:00\" \/>\n<meta property=\"og:image\" content=\"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda-erf.webp\" \/>\n<meta name=\"twitter:card\" content=\"summary_large_image\" \/>\n<meta name=\"twitter:label1\" content=\"Est. reading time\" \/>\n\t<meta name=\"twitter:data1\" content=\"14 minutes\" \/>\n<script type=\"application\/ld+json\" class=\"yoast-schema-graph\">{\"@context\":\"https:\\\/\\\/schema.org\",\"@graph\":[{\"@type\":\"WebPage\",\"@id\":\"https:\\\/\\\/dairytop.eu\\\/en\\\/colostrum-management\\\/\",\"url\":\"https:\\\/\\\/dairytop.eu\\\/en\\\/colostrum-management\\\/\",\"name\":\"Colostrum management | DairyTop\",\"isPartOf\":{\"@id\":\"https:\\\/\\\/dairytop.eu\\\/#website\"},\"primaryImageOfPage\":{\"@id\":\"https:\\\/\\\/dairytop.eu\\\/en\\\/colostrum-management\\\/#primaryimage\"},\"image\":{\"@id\":\"https:\\\/\\\/dairytop.eu\\\/en\\\/colostrum-management\\\/#primaryimage\"},\"thumbnailUrl\":\"https:\\\/\\\/dairytop.eu\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/bm-matilda-erf.webp\",\"datePublished\":\"2026-10-15T09:26:25+00:00\",\"dateModified\":\"2026-10-15T18:18:27+00:00\",\"description\":\"Colostrum management with Perfect Udder: from milking to feeding in one bag. Bags of 2, 3 and 4 litres and accessories in the shop, pasteurisers (Matilda, Adda) on quotation.\",\"breadcrumb\":{\"@id\":\"https:\\\/\\\/dairytop.eu\\\/en\\\/colostrum-management\\\/#breadcrumb\"},\"inLanguage\":\"en-US\",\"potentialAction\":[{\"@type\":\"ReadAction\",\"target\":[\"https:\\\/\\\/dairytop.eu\\\/en\\\/colostrum-management\\\/\"]}]},{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/dairytop.eu\\\/en\\\/colostrum-management\\\/#primaryimage\",\"url\":\"https:\\\/\\\/dairytop.eu\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/bm-matilda-erf.webp\",\"contentUrl\":\"https:\\\/\\\/dairytop.eu\\\/wp-content\\\/uploads\\\/2026\\\/10\\\/bm-matilda-erf.webp\"},{\"@type\":\"BreadcrumbList\",\"@id\":\"https:\\\/\\\/dairytop.eu\\\/en\\\/colostrum-management\\\/#breadcrumb\",\"itemListElement\":[{\"@type\":\"ListItem\",\"position\":1,\"name\":\"Home\",\"item\":\"https:\\\/\\\/dairytop.eu\\\/de\\\/\"},{\"@type\":\"ListItem\",\"position\":2,\"name\":\"Colostrum management\"}]},{\"@type\":\"WebSite\",\"@id\":\"https:\\\/\\\/dairytop.eu\\\/#website\",\"url\":\"https:\\\/\\\/dairytop.eu\\\/\",\"name\":\"DairyTop\",\"description\":\"Uw specialist in Kalveropfok\",\"publisher\":{\"@id\":\"https:\\\/\\\/dairytop.eu\\\/#organization\"},\"potentialAction\":[{\"@type\":\"SearchAction\",\"target\":{\"@type\":\"EntryPoint\",\"urlTemplate\":\"https:\\\/\\\/dairytop.eu\\\/?s={search_term_string}\"},\"query-input\":{\"@type\":\"PropertyValueSpecification\",\"valueRequired\":true,\"valueName\":\"search_term_string\"}}],\"inLanguage\":\"en-US\"},{\"@type\":\"Organization\",\"@id\":\"https:\\\/\\\/dairytop.eu\\\/#organization\",\"name\":\"DairyTop\",\"url\":\"https:\\\/\\\/dairytop.eu\\\/\",\"logo\":{\"@type\":\"ImageObject\",\"inLanguage\":\"en-US\",\"@id\":\"https:\\\/\\\/dairytop.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\",\"url\":\"https:\\\/\\\/dairytop.eu\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/cropped-DairyTop-logo-large-1-1-1.png\",\"contentUrl\":\"https:\\\/\\\/dairytop.eu\\\/wp-content\\\/uploads\\\/2025\\\/10\\\/cropped-DairyTop-logo-large-1-1-1.png\",\"width\":143,\"height\":119,\"caption\":\"DairyTop\"},\"image\":{\"@id\":\"https:\\\/\\\/dairytop.eu\\\/#\\\/schema\\\/logo\\\/image\\\/\"}}]}<\/script>\n<!-- \/ Yoast SEO plugin. -->","yoast_head_json":{"title":"Colostrum management | DairyTop","description":"Colostrum management with Perfect Udder: from milking to feeding in one bag. Bags of 2, 3 and 4 litres and accessories in the shop, pasteurisers (Matilda, Adda) on quotation.","robots":{"index":"index","follow":"follow","max-snippet":"max-snippet:-1","max-image-preview":"max-image-preview:large","max-video-preview":"max-video-preview:-1"},"canonical":"https:\/\/dairytop.eu\/en\/colostrum-management\/","og_locale":"en_US","og_type":"article","og_title":"Colostrum management | DairyTop","og_description":"Colostrum management with Perfect Udder: from milking to feeding in one bag. Bags of 2, 3 and 4 litres and accessories in the shop, pasteurisers (Matilda, Adda) on quotation.","og_url":"https:\/\/dairytop.eu\/en\/colostrum-management\/","og_site_name":"Dairytop","article_modified_time":"2026-10-15T18:18:27+00:00","og_image":[{"url":"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda-erf.webp","type":"","width":"","height":""}],"twitter_card":"summary_large_image","twitter_misc":{"Est. reading time":"14 minutes"},"schema":{"@context":"https:\/\/schema.org","@graph":[{"@type":"WebPage","@id":"https:\/\/dairytop.eu\/en\/colostrum-management\/","url":"https:\/\/dairytop.eu\/en\/colostrum-management\/","name":"Colostrum management | DairyTop","isPartOf":{"@id":"https:\/\/dairytop.eu\/#website"},"primaryImageOfPage":{"@id":"https:\/\/dairytop.eu\/en\/colostrum-management\/#primaryimage"},"image":{"@id":"https:\/\/dairytop.eu\/en\/colostrum-management\/#primaryimage"},"thumbnailUrl":"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda-erf.webp","datePublished":"2026-10-15T09:26:25+00:00","dateModified":"2026-10-15T18:18:27+00:00","description":"Colostrum management with Perfect Udder: from milking to feeding in one bag. Bags of 2, 3 and 4 litres and accessories in the shop, pasteurisers (Matilda, Adda) on quotation.","breadcrumb":{"@id":"https:\/\/dairytop.eu\/en\/colostrum-management\/#breadcrumb"},"inLanguage":"en-US","potentialAction":[{"@type":"ReadAction","target":["https:\/\/dairytop.eu\/en\/colostrum-management\/"]}]},{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dairytop.eu\/en\/colostrum-management\/#primaryimage","url":"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda-erf.webp","contentUrl":"https:\/\/dairytop.eu\/wp-content\/uploads\/2026\/10\/bm-matilda-erf.webp"},{"@type":"BreadcrumbList","@id":"https:\/\/dairytop.eu\/en\/colostrum-management\/#breadcrumb","itemListElement":[{"@type":"ListItem","position":1,"name":"Home","item":"https:\/\/dairytop.eu\/de\/"},{"@type":"ListItem","position":2,"name":"Colostrum management"}]},{"@type":"WebSite","@id":"https:\/\/dairytop.eu\/#website","url":"https:\/\/dairytop.eu\/","name":"DairyTop","description":"Uw specialist in Kalveropfok","publisher":{"@id":"https:\/\/dairytop.eu\/#organization"},"potentialAction":[{"@type":"SearchAction","target":{"@type":"EntryPoint","urlTemplate":"https:\/\/dairytop.eu\/?s={search_term_string}"},"query-input":{"@type":"PropertyValueSpecification","valueRequired":true,"valueName":"search_term_string"}}],"inLanguage":"en-US"},{"@type":"Organization","@id":"https:\/\/dairytop.eu\/#organization","name":"DairyTop","url":"https:\/\/dairytop.eu\/","logo":{"@type":"ImageObject","inLanguage":"en-US","@id":"https:\/\/dairytop.eu\/#\/schema\/logo\/image\/","url":"https:\/\/dairytop.eu\/wp-content\/uploads\/2025\/10\/cropped-DairyTop-logo-large-1-1-1.png","contentUrl":"https:\/\/dairytop.eu\/wp-content\/uploads\/2025\/10\/cropped-DairyTop-logo-large-1-1-1.png","width":143,"height":119,"caption":"DairyTop"},"image":{"@id":"https:\/\/dairytop.eu\/#\/schema\/logo\/image\/"}}]}},"_links":{"self":[{"href":"https:\/\/dairytop.eu\/en\/wp-json\/wp\/v2\/pages\/12410","targetHints":{"allow":["GET"]}}],"collection":[{"href":"https:\/\/dairytop.eu\/en\/wp-json\/wp\/v2\/pages"}],"about":[{"href":"https:\/\/dairytop.eu\/en\/wp-json\/wp\/v2\/types\/page"}],"author":[{"embeddable":true,"href":"https:\/\/dairytop.eu\/en\/wp-json\/wp\/v2\/users\/584"}],"replies":[{"embeddable":true,"href":"https:\/\/dairytop.eu\/en\/wp-json\/wp\/v2\/comments?post=12410"}],"version-history":[{"count":15,"href":"https:\/\/dairytop.eu\/en\/wp-json\/wp\/v2\/pages\/12410\/revisions"}],"predecessor-version":[{"id":12770,"href":"https:\/\/dairytop.eu\/en\/wp-json\/wp\/v2\/pages\/12410\/revisions\/12770"}],"wp:attachment":[{"href":"https:\/\/dairytop.eu\/en\/wp-json\/wp\/v2\/media?parent=12410"}],"curies":[{"name":"wp","href":"https:\/\/api.w.org\/{rel}","templated":true}]}}