.elementor-kit-11{--e-global-color-primary:#093570;--e-global-color-secondary:#ffd1af;--e-global-color-text:#093570;--e-global-color-accent:#ff751f;--e-global-color-bhv01:#4a5d7d;--e-global-color-bhv02:#ffffff;--e-global-color-bhv03:#fdfaf5;--e-global-color-bhv04:#80adea;--e-global-color-bhv05:#ffffff;--e-global-color-bhv06:#0b3f85;--e-global-color-bhv07:#072a5a;--e-global-color-bhv08:#ff873c;--e-global-color-bhv09:#e0620f;--e-global-color-bhv10:#fff1e4;--e-global-color-bhv11:#e3ebf6;--e-global-color-bhv12:#fff3cd;--e-global-color-bhv13:#d9a441;--e-global-color-bhv14:#6b4a12;--e-global-color-bhv15:#fff8e8;--e-global-color-bhv16:#e0b45c;--e-global-color-bhv17:#eefaf1;--e-global-color-bhv18:#b9e3c5;--e-global-color-bhv19:#f7f4ee;--e-global-color-3effff14:#eef2f8;--e-global-color-a4d656f4:#fff8f2;--e-global-color-f9bf5bc6:#8a3800;--e-global-typography-primary-font-family:"Caprasimo";--e-global-typography-primary-font-weight:400;--e-global-typography-primary-line-height:1.08;--e-global-typography-primary-letter-spacing:-0.005em;--e-global-typography-secondary-font-family:"Caprasimo";--e-global-typography-secondary-font-weight:400;--e-global-typography-secondary-line-height:1.2;--e-global-typography-text-font-family:"DM Sans";--e-global-typography-text-font-size:17px;--e-global-typography-text-font-weight:400;--e-global-typography-text-line-height:1.6;--e-global-typography-accent-font-family:"DM Sans";--e-global-typography-accent-font-size:16px;--e-global-typography-accent-font-weight:700;--e-global-typography-accent-line-height:1.1;--e-global-typography-bhvt01-font-family:"Caprasimo";--e-global-typography-bhvt01-font-size:clamp(38px, 5.2vw, 64px);--e-global-typography-bhvt01-font-weight:400;--e-global-typography-bhvt01-line-height:1.08;--e-global-typography-bhvt01-letter-spacing:-0.005em;--e-global-typography-bhvt02-font-family:"Caprasimo";--e-global-typography-bhvt02-font-size:clamp(30px, 4.6vw, 58px);--e-global-typography-bhvt02-font-weight:400;--e-global-typography-bhvt02-line-height:1.08;--e-global-typography-bhvt02-letter-spacing:-0.005em;--e-global-typography-bhvt03-font-family:"Caprasimo";--e-global-typography-bhvt03-font-size:clamp(32px, 4vw, 48px);--e-global-typography-bhvt03-font-weight:400;--e-global-typography-bhvt03-line-height:1.08;--e-global-typography-bhvt03-letter-spacing:-0.005em;--e-global-typography-bhvt04-font-family:"Caprasimo";--e-global-typography-bhvt04-font-size:clamp(28px, 3vw, 36px);--e-global-typography-bhvt04-font-weight:400;--e-global-typography-bhvt04-line-height:1.08;--e-global-typography-bhvt04-letter-spacing:-0.005em;--e-global-typography-bhvt05-font-family:"Caprasimo";--e-global-typography-bhvt05-font-size:clamp(22px, 2.2vw, 26px);--e-global-typography-bhvt05-font-weight:400;--e-global-typography-bhvt05-line-height:1.2;--e-global-typography-bhvt05-letter-spacing:-0.005em;--e-global-typography-bhvt06-font-family:"Caprasimo";--e-global-typography-bhvt06-font-size:23px;--e-global-typography-bhvt06-font-weight:400;--e-global-typography-bhvt06-line-height:1.2;--e-global-typography-bhvt06-letter-spacing:-0.005em;--e-global-typography-bhvt07-font-family:"Caprasimo";--e-global-typography-bhvt07-font-size:26px;--e-global-typography-bhvt07-font-weight:400;--e-global-typography-bhvt07-line-height:1.2;--e-global-typography-bhvt07-letter-spacing:-0.005em;--e-global-typography-bhvt08-font-family:"Caprasimo";--e-global-typography-bhvt08-font-size:28px;--e-global-typography-bhvt08-font-weight:400;--e-global-typography-bhvt08-line-height:1.2;--e-global-typography-bhvt08-letter-spacing:-0.005em;--e-global-typography-bhvt09-font-family:"DM Sans";--e-global-typography-bhvt09-font-size:18px;--e-global-typography-bhvt09-font-weight:400;--e-global-typography-bhvt09-line-height:1.6;--e-global-typography-bhvt10-font-family:"DM Sans";--e-global-typography-bhvt10-font-size:17px;--e-global-typography-bhvt10-font-weight:400;--e-global-typography-bhvt10-line-height:1.6;--e-global-typography-bhvt11-font-family:"DM Sans";--e-global-typography-bhvt11-font-size:17.5px;--e-global-typography-bhvt11-font-weight:400;--e-global-typography-bhvt11-line-height:1.6;--e-global-typography-bhvt12-font-family:"DM Sans";--e-global-typography-bhvt12-font-size:15.5px;--e-global-typography-bhvt12-font-weight:400;--e-global-typography-bhvt12-line-height:1.6;--e-global-typography-bhvt13-font-family:"DM Sans";--e-global-typography-bhvt13-font-size:16.5px;--e-global-typography-bhvt13-font-weight:400;--e-global-typography-bhvt13-line-height:1.6;--e-global-typography-bhvt14-font-family:"Caprasimo";--e-global-typography-bhvt14-font-size:18px;--e-global-typography-bhvt14-font-weight:400;--e-global-typography-bhvt14-line-height:1.6;--e-global-typography-bhvt15-font-family:"Caprasimo";--e-global-typography-bhvt15-font-size:19px;--e-global-typography-bhvt15-font-weight:400;--e-global-typography-bhvt15-line-height:1.2;--e-global-typography-bhvt16-font-family:"Caprasimo";--e-global-typography-bhvt16-font-size:18px;--e-global-typography-bhvt16-font-weight:400;--e-global-typography-bhvt17-font-family:"Caprasimo";--e-global-typography-bhvt17-font-size:17px;--e-global-typography-bhvt17-font-weight:400;--e-global-typography-bhvt18-font-family:"Caprasimo";--e-global-typography-bhvt18-font-size:14px;--e-global-typography-bhvt18-font-weight:400;--e-global-typography-bhvt18-text-transform:none;--e-global-typography-bhvt18-letter-spacing:0.14em;--e-global-typography-bhvt19-font-family:"DM Sans";--e-global-typography-bhvt19-font-size:14px;--e-global-typography-bhvt19-font-weight:700;--e-global-typography-bhvt20-font-family:"DM Sans";--e-global-typography-bhvt20-font-size:16px;--e-global-typography-bhvt20-font-weight:700;--e-global-typography-bhvt20-line-height:1.1;--e-global-typography-bhvt21-font-family:"DM Sans";--e-global-typography-bhvt21-font-size:17px;--e-global-typography-bhvt21-font-weight:700;--e-global-typography-bhvt21-line-height:1.1;--e-global-typography-bhvt22-font-family:"DM Sans";--e-global-typography-bhvt22-font-size:13px;--e-global-typography-bhvt22-font-weight:700;--e-global-typography-bhvt22-text-transform:uppercase;--e-global-typography-bhvt22-letter-spacing:0.04em;--e-global-typography-bhvt23-font-family:"DM Sans";--e-global-typography-bhvt23-font-size:14px;--e-global-typography-bhvt23-font-weight:700;--e-global-typography-bhvt24-font-family:"DM Sans";--e-global-typography-bhvt24-font-size:14.5px;--e-global-typography-bhvt24-font-weight:400;--e-global-typography-bhvt24-line-height:1.6;--e-global-typography-bhvt25-font-family:"DM Sans";--e-global-typography-bhvt25-font-size:16px;--e-global-typography-bhvt25-font-weight:400;--e-global-typography-bhvt26-font-family:"DM Sans";--e-global-typography-bhvt26-font-size:13px;--e-global-typography-bhvt26-font-weight:700;--e-global-typography-bhvt26-text-transform:uppercase;--e-global-typography-bhvt26-letter-spacing:0.08em;--e-global-typography-bhvt27-font-family:"DM Sans";--e-global-typography-bhvt27-font-size:14px;--e-global-typography-bhvt27-font-weight:400;--e-global-typography-bhvt27-line-height:1.6;--e-global-typography-bhvt28-font-family:"Caprasimo";--e-global-typography-bhvt28-font-size:22px;--e-global-typography-bhvt28-font-weight:400;--e-global-typography-bhvt29-font-family:"Caprasimo";--e-global-typography-bhvt29-font-size:40px;--e-global-typography-bhvt29-font-weight:400;--e-global-typography-bhvt29-line-height:1;--e-global-typography-bhvt30-font-family:"DM Sans";--e-global-typography-bhvt30-font-size:12.5px;--e-global-typography-bhvt30-font-weight:700;--e-global-typography-bhvt30-text-transform:uppercase;--e-global-typography-bhvt30-letter-spacing:0.08em;--e-global-typography-bhvt31-font-family:"Caprasimo";--e-global-typography-bhvt31-font-size:21px;--e-global-typography-bhvt31-font-weight:400;--e-global-typography-bhvt32-font-family:"DM Sans";--e-global-typography-bhvt32-font-size:12px;--e-global-typography-bhvt32-font-weight:700;--e-global-typography-bhvt32-text-transform:uppercase;--e-global-typography-bhvt32-letter-spacing:0.08em;--e-global-typography-bhvt33-font-family:"Caprasimo";--e-global-typography-bhvt33-font-size:22px;--e-global-typography-bhvt33-font-weight:400;--e-global-typography-bhvt33-line-height:1.35;--e-global-typography-bhvt34-font-family:"Caprasimo";--e-global-typography-bhvt34-font-size:20px;--e-global-typography-bhvt34-font-weight:400;--e-global-typography-bhvt35-font-family:"Caprasimo";--e-global-typography-bhvt35-font-size:20px;--e-global-typography-bhvt35-font-weight:400;--e-global-typography-bhvt36-font-family:"DM Sans";--e-global-typography-bhvt36-font-size:16px;--e-global-typography-bhvt36-font-weight:400;--e-global-typography-bhvt36-line-height:1.6;--e-global-typography-bhvt37-font-family:"Caprasimo";--e-global-typography-bhvt37-font-size:26px;--e-global-typography-bhvt37-font-weight:400;--e-global-typography-bhvt38-font-family:"DM Sans";--e-global-typography-bhvt38-font-size:19px;--e-global-typography-bhvt38-font-weight:400;--e-global-typography-bhvt38-line-height:1.6;color:var( --e-global-color-text );font-family:var( --e-global-typography-text-font-family ), Sans-serif;font-size:var( --e-global-typography-text-font-size );font-weight:var( --e-global-typography-text-font-weight );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );word-spacing:var( --e-global-typography-text-word-spacing );}.elementor-kit-11 button,.elementor-kit-11 input[type="button"],.elementor-kit-11 input[type="submit"],.elementor-kit-11 .elementor-button{background-color:var( --e-global-color-accent );font-family:var( --e-global-typography-bhvt20-font-family ), Sans-serif;font-size:var( --e-global-typography-bhvt20-font-size );font-weight:var( --e-global-typography-bhvt20-font-weight );line-height:var( --e-global-typography-bhvt20-line-height );letter-spacing:var( --e-global-typography-bhvt20-letter-spacing );word-spacing:var( --e-global-typography-bhvt20-word-spacing );color:var( --e-global-color-bhv05 );border-radius:999px 999px 999px 999px;padding:0px 28px 0px 28px;}.elementor-kit-11 e-page-transition{background-color:#FFBC7D;}.elementor-kit-11 a{color:var( --e-global-color-accent );}.elementor-kit-11 a:hover{color:var( --e-global-color-bhv09 );}.elementor-kit-11 h1{color:var( --e-global-color-text );font-family:var( --e-global-typography-bhvt01-font-family ), Sans-serif;font-size:var( --e-global-typography-bhvt01-font-size );font-weight:var( --e-global-typography-bhvt01-font-weight );line-height:var( --e-global-typography-bhvt01-line-height );letter-spacing:var( --e-global-typography-bhvt01-letter-spacing );word-spacing:var( --e-global-typography-bhvt01-word-spacing );}.elementor-kit-11 h2{color:var( --e-global-color-text );font-family:var( --e-global-typography-bhvt03-font-family ), Sans-serif;font-size:var( --e-global-typography-bhvt03-font-size );font-weight:var( --e-global-typography-bhvt03-font-weight );line-height:var( --e-global-typography-bhvt03-line-height );letter-spacing:var( --e-global-typography-bhvt03-letter-spacing );word-spacing:var( --e-global-typography-bhvt03-word-spacing );}.elementor-kit-11 h3{color:var( --e-global-color-text );font-family:var( --e-global-typography-bhvt05-font-family ), Sans-serif;font-size:var( --e-global-typography-bhvt05-font-size );font-weight:var( --e-global-typography-bhvt05-font-weight );line-height:var( --e-global-typography-bhvt05-line-height );letter-spacing:var( --e-global-typography-bhvt05-letter-spacing );word-spacing:var( --e-global-typography-bhvt05-word-spacing );}.elementor-kit-11 h4{color:var( --e-global-color-text );font-family:var( --e-global-typography-bhvt35-font-family ), Sans-serif;font-size:var( --e-global-typography-bhvt35-font-size );font-weight:var( --e-global-typography-bhvt35-font-weight );line-height:var( --e-global-typography-bhvt35-line-height );letter-spacing:var( --e-global-typography-bhvt35-letter-spacing );word-spacing:var( --e-global-typography-bhvt35-word-spacing );}.elementor-kit-11 h5{color:var( --e-global-color-text );}.elementor-kit-11 h6{color:var( --e-global-color-text );}.elementor-kit-11 input:not([type="button"]):not([type="submit"]),.elementor-kit-11 textarea,.elementor-kit-11 .elementor-field-textual{font-family:var( --e-global-typography-bhvt10-font-family ), Sans-serif;font-size:var( --e-global-typography-bhvt10-font-size );font-weight:var( --e-global-typography-bhvt10-font-weight );line-height:var( --e-global-typography-bhvt10-line-height );letter-spacing:var( --e-global-typography-bhvt10-letter-spacing );word-spacing:var( --e-global-typography-bhvt10-word-spacing );color:var( --e-global-color-text );background-color:var( --e-global-color-bhv02 );border-style:solid;border-width:2px 2px 2px 2px;border-color:var( --e-global-color-bhv04 );border-radius:14px 14px 14px 14px;padding:12px 16px 12px 16px;}.elementor-kit-11 input:focus:not([type="button"]):not([type="submit"]),.elementor-kit-11 textarea:focus,.elementor-kit-11 .elementor-field-textual:focus{color:var( --e-global-color-text );border-style:solid;border-width:2px 2px 2px 2px;border-color:var( --e-global-color-accent );border-radius:14px 14px 14px 14px;}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1240px;}.e-con{--container-max-width:1240px;}.elementor-widget:not(:last-child){--kit-widget-spacing:20px;}.elementor-element{--widgets-spacing:20px 20px;--widgets-spacing-row:20px;--widgets-spacing-column:20px;}{}h1.entry-title{display:var(--page-title-display);}.site-header .site-branding{flex-direction:column;align-items:stretch;}.site-header{padding-inline-end:0px;padding-inline-start:0px;}.site-footer .site-branding{flex-direction:column;align-items:stretch;}@media(max-width:1024px){.elementor-kit-11{font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );word-spacing:var( --e-global-typography-text-word-spacing );}.elementor-kit-11 h1{font-size:var( --e-global-typography-bhvt01-font-size );line-height:var( --e-global-typography-bhvt01-line-height );letter-spacing:var( --e-global-typography-bhvt01-letter-spacing );word-spacing:var( --e-global-typography-bhvt01-word-spacing );}.elementor-kit-11 h2{font-size:var( --e-global-typography-bhvt03-font-size );line-height:var( --e-global-typography-bhvt03-line-height );letter-spacing:var( --e-global-typography-bhvt03-letter-spacing );word-spacing:var( --e-global-typography-bhvt03-word-spacing );}.elementor-kit-11 h3{font-size:var( --e-global-typography-bhvt05-font-size );line-height:var( --e-global-typography-bhvt05-line-height );letter-spacing:var( --e-global-typography-bhvt05-letter-spacing );word-spacing:var( --e-global-typography-bhvt05-word-spacing );}.elementor-kit-11 h4{font-size:var( --e-global-typography-bhvt35-font-size );line-height:var( --e-global-typography-bhvt35-line-height );letter-spacing:var( --e-global-typography-bhvt35-letter-spacing );word-spacing:var( --e-global-typography-bhvt35-word-spacing );}.elementor-kit-11 button,.elementor-kit-11 input[type="button"],.elementor-kit-11 input[type="submit"],.elementor-kit-11 .elementor-button{font-size:var( --e-global-typography-bhvt20-font-size );line-height:var( --e-global-typography-bhvt20-line-height );letter-spacing:var( --e-global-typography-bhvt20-letter-spacing );word-spacing:var( --e-global-typography-bhvt20-word-spacing );}.elementor-kit-11 input:not([type="button"]):not([type="submit"]),.elementor-kit-11 textarea,.elementor-kit-11 .elementor-field-textual{font-size:var( --e-global-typography-bhvt10-font-size );line-height:var( --e-global-typography-bhvt10-line-height );letter-spacing:var( --e-global-typography-bhvt10-letter-spacing );word-spacing:var( --e-global-typography-bhvt10-word-spacing );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:1024px;}.e-con{--container-max-width:1024px;}}@media(max-width:767px){.elementor-kit-11{font-size:var( --e-global-typography-text-font-size );line-height:var( --e-global-typography-text-line-height );letter-spacing:var( --e-global-typography-text-letter-spacing );word-spacing:var( --e-global-typography-text-word-spacing );}.elementor-kit-11 h1{font-size:var( --e-global-typography-bhvt01-font-size );line-height:var( --e-global-typography-bhvt01-line-height );letter-spacing:var( --e-global-typography-bhvt01-letter-spacing );word-spacing:var( --e-global-typography-bhvt01-word-spacing );}.elementor-kit-11 h2{font-size:var( --e-global-typography-bhvt03-font-size );line-height:var( --e-global-typography-bhvt03-line-height );letter-spacing:var( --e-global-typography-bhvt03-letter-spacing );word-spacing:var( --e-global-typography-bhvt03-word-spacing );}.elementor-kit-11 h3{font-size:var( --e-global-typography-bhvt05-font-size );line-height:var( --e-global-typography-bhvt05-line-height );letter-spacing:var( --e-global-typography-bhvt05-letter-spacing );word-spacing:var( --e-global-typography-bhvt05-word-spacing );}.elementor-kit-11 h4{font-size:var( --e-global-typography-bhvt35-font-size );line-height:var( --e-global-typography-bhvt35-line-height );letter-spacing:var( --e-global-typography-bhvt35-letter-spacing );word-spacing:var( --e-global-typography-bhvt35-word-spacing );}.elementor-kit-11 button,.elementor-kit-11 input[type="button"],.elementor-kit-11 input[type="submit"],.elementor-kit-11 .elementor-button{font-size:var( --e-global-typography-bhvt20-font-size );line-height:var( --e-global-typography-bhvt20-line-height );letter-spacing:var( --e-global-typography-bhvt20-letter-spacing );word-spacing:var( --e-global-typography-bhvt20-word-spacing );}.elementor-kit-11 input:not([type="button"]):not([type="submit"]),.elementor-kit-11 textarea,.elementor-kit-11 .elementor-field-textual{font-size:var( --e-global-typography-bhvt10-font-size );line-height:var( --e-global-typography-bhvt10-line-height );letter-spacing:var( --e-global-typography-bhvt10-letter-spacing );word-spacing:var( --e-global-typography-bhvt10-word-spacing );}.elementor-section.elementor-section-boxed > .elementor-container{max-width:767px;}.e-con{--container-max-width:767px;}}:root { --color-primary:#093570; --color-secondary:#ffd1af; --color-accent:#ff751f; --color-text:#093570; --color-text-muted:#4a5d7d; --color-surface:#ffffff; --color-surface-alt:#fdfaf5; --color-border:#80adea; --color-on-primary:#ffffff; --navy-2:#0b3f85; --navy-deep:#072a5a; --orange-2:#ff873c; --orange-dark:#e0620f; --peach-2:#fff1e4; --line-soft:#e3ebf6; --marker-bg:#fff3cd; --marker-border:#d9a441; --marker-text:#6b4a12; --marker-block-bg:#fff8e8; --marker-block-border:#e0b45c; --ok-bg:#eefaf1; --ok-border:#b9e3c5; --hero-bg:#f7f4ee; --font-heading:Caprasimo; --font-body:DM Sans; --text-h1:clamp(38px, 5.2vw, 64px); --text-h1-home:clamp(30px, 4.6vw, 58px); --text-h2:clamp(32px, 4vw, 48px); --text-h2-prose:clamp(28px, 3vw, 36px); --text-h3:clamp(22px, 2.2vw, 26px); --text-h3-prose:23px; --text-h3-answer:28px; --text-h3-offer:44px; --text-h3-offer-sm:36px; --text-card-title:23px; --text-why-title:26px; --text-lead:18px; --text-body:17px; --text-prose:17.5px; --text-card-body:15.5px; --text-answer-body:16.5px; --text-step-body:16px; --text-band-copy:19px; --text-eyebrow:18px; --text-chip:19px; --text-chip-sm:17px; --text-usp:19px; --text-textlink:18px; --text-textlink-card:17px; --text-nav:14px; --text-btn:16px; --text-btn-lg:17px; --text-badge:13px; --text-cat:14px; --text-cat-meta:15px; --text-stat:40px; --text-stat-label:12.5px; --text-step-num:30px; --text-step-title:20px; --text-summary:20px; --text-summary-icon:28px; --text-blockquote:22px; --text-fact-value:21px; --text-fact-label:12px; --text-table:16px; --text-table-th:13px; --text-label:14px; --text-consent:14.5px; --text-footer-h4:22px; --text-footer-tag:16px; --text-footer-bottom:15px; --text-drawer-link:26px; --text-small:14px; --text-marker-block:15px; --container-max:1240px; --container-pad:clamp(18px, 4vw, 40px); --section-pad:clamp(56px, 7vw, 96px); --section-pad-tight:clamp(36px, 4vw, 56px); --band-pad:clamp(36px, 5vw, 64px); --page-hero-pad:clamp(44px, 6vw, 80px); --hero-pad-top:clamp(48px, 7vw, 96px); --hero-pad-bottom:clamp(120px, 11vw, 150px); --split-gap:clamp(28px, 5vw, 64px); --article-gap:clamp(32px, 5vw, 72px); --grid-gap:22px; --facts-gap:18px; --chip-gap:12px; --pill-gap:10px; --btn-gap:14px; --footer-gap:40px; --usp-overlap:-66px; --facts-overlap:-34px; --sidebar-sticky-top:110px; --footer-margin-top:clamp(40px, 6vw, 80px); --radius-card:22px; --radius-band:28px; --radius-pill:999px; --radius-md:18px; --radius-sm:16px; --radius-input:14px; --radius-focus:6px; --control-h:52px; --control-h-lg:60px; --control-h-min:44px; --control-pad-x:28px; --control-pad-x-lg:34px; --control-pad-x-row:20px; --border-control:2px; --border-hairline:1px; --measure-lead:62ch; --measure-lead-hero:52ch; --measure-prose:70ch; --measure-marcel:46ch; --measure-band:56ch; --measure-contact:52ch; --measure-article-head:78ch; --measure-footer-tag:36ch; --measure-faq-col:820px; --measure-hero-copy:600px; --sidebar-w:320px; --header-h:86px; --color-img-placeholder:#eef2f8; --color-error-fill:#fff8f2; --color-error-text:#8a3800; }
/* Start custom CSS *//* ============================================================================
   BHV design system - the CSS layer that Elementor v4 cannot express.
   Companion to: 121 v4 Global Variables (tokens) + 40 v4 Global Classes.
   RULE: nothing here hard-codes a design colour. Every colour is var(--token),
   so the accent keeps exactly TWO global homes - one v4 Global Variable and one
   v3 kit colour (BUILD_PLAN task 0.1, decision D-I). A literal rgba(255,117,31,..)
   would be a third home that Batch 9's accent-hex grep could not even see.
   ============================================================================ */
:root{
  /* Shadow tokens. The v4 Variables Manager has only color/font/size types, so a
     shadow cannot be a Global Variable. color-mix() reproduces PROTO's
     rgba(255,117,31,.28) / rgba(9,53,112,.10) exactly, from the tokens. */
  --shadow-card:0 10px 30px color-mix(in srgb, var(--color-primary) 10%, transparent);
  --shadow-btn:0 8px 20px color-mix(in srgb, var(--color-accent) 28%, transparent);
  /* Font stacks. Derived aliases over the two font Global Variables - NOT second
     definitions of the family, which is why the variable holds the bare family name
     (Elementor's self-hosting resolver needs that exact string). */
  --stack-heading:var(--font-heading),"Cooper Black",Georgia,serif;
  --stack-body:var(--font-body),"Helvetica Neue",Arial,sans-serif;
}
body{
  font-synthesis:none;   /* Caprasimo has ONE weight. Without this every browser
                            fake-bolds it and the whole site's heading weight drifts. */
  font-family:var(--stack-body);
  overflow-wrap:break-word;
}
h1,h2,h3,h4,h5,h6{font-family:var(--stack-heading);font-weight:400}
@media(max-width:600px){h1,h2,h3{overflow-wrap:anywhere}}
[hidden]{display:none!important}  /* load-bearing: .card sets display:flex at (0,1,0) and
                                     would otherwise beat the UA sheet's [hidden] rule, so
                                     the Kennisbank / agenda filters would update their
                                     count while changing nothing on screen. */

/* --- 4.0  NO RED. Neutralise Hello Elementor reset.css on every control. -------
   BUILD_PLAN task 4.0 / decision D-Q. reset.css ships, at (0,1,0)/(0,0,1)/(0,2,0):
     [type=button],[type=submit],button{border:1px solid #c36;color:#c36}
     [type=button]:focus,[type=button]:hover,...,button:hover{background-color:#c36}
   c36 is #cc3366, a pink-red, and this project forbids red outright (task 0.3).
   The v3 kit mirror already overrides `color` and `background-color` at BASE for
   these .elementor-kit-11s, but it declares NO border - so a red border was live on every
   control not individually styled. Measured on a probe page before this block
   existed: computed border-top-color rgb(204,51,102) on all five of <button>,
   <button type=button>, <button type=submit>, <input type=submit>,
   <input type=button>. The :hover/:focus red background was live too on anything
   matching [type=button]/[type=submit], because the reset states those at (0,2,0)
   and the kit's base rule is only (0,1,1).

   SPECIFICITY IS DELIBERATE AND THIS BLOCK MUST STAY FIRST IN THIS FILE.
   It reuses the RESET'S OWN SELECTORS, so it carries exactly the reset's
   specificity and beats it on source order alone (post-<kit>.css loads after
   reset.css). It therefore cannot outrank anything in the design system: every
   button / chip / pill Global Class is (0,2,0) in a LATER stylesheet, Elementor
   Pro's own form CSS is (0,2,0) in a later stylesheet, and every chrome rule
   below in this file is (0,2,0)+ and later in this file. It is a floor, not an
   override. The values restate the v3 kit's own button base, so an unstyled
   control simply does not change on hover instead of turning red. -------------- */
[type=button],[type=submit],button{border-color:var(--color-accent);color:var(--color-on-primary)}
[type=button]:hover,[type=button]:focus,
[type=submit]:hover,[type=submit]:focus,
button:hover,button:focus{background-color:var(--color-accent);color:var(--color-on-primary)}

/* --- Centring backstop -------------------------------------------------------
   `container` constrains the width; `section`/`section-alt`/`section-compact`/
   `section-hero` centre it via flex align-items. Those are two different jobs on two
   different classes, and a band that carries only `container` renders hard-left - a
   defect that passes every token and width check (wordpress-lessons 2026-08-28).
   This makes the failure unreachable. `auto` is not a valid v4 dimension value, so it
   cannot live in the class. */
.elementor .container{margin-inline:auto}

/* --- Shadows -----------------------------------------------------------------*/
.elementor .btn-primary,.elementor .btn-primary-lg{box-shadow:var(--shadow-btn)}
.elementor .card:hover{box-shadow:var(--shadow-card)}

/* --- Motion. PROTO has no reduced-motion guard; design-tokens 4.4 proposes one and
   this is where it can be expressed (a media query is not a v4 style variant). ---*/
.elementor .btn-primary,.elementor .btn-primary-lg,.elementor .btn-secondary,
.elementor .btn-outline-light,.elementor .btn-ghost,.elementor .chip,.elementor .card{
  transition:transform .15s ease,background-color .15s ease,border-color .15s ease,box-shadow .15s ease;
}
@media(prefers-reduced-motion:no-preference){
  .elementor .btn-primary:hover,.elementor .btn-primary-lg:hover,.elementor .btn-secondary:hover,
  .elementor .btn-outline-light:hover,.elementor .btn-ghost:hover,.elementor .chip:hover{transform:translateY(-1px)}
  .elementor .card:hover{transform:translateY(-3px)}
}

/* --- Focus ring. PROTO: outline 3px accent, offset 3px.
   PROTO also sets border-radius:6px inside this rule; it is omitted deliberately -
   every control here defines its own radius (999px pill, 14px input, 22px card) and
   would be squared off on focus. ACC-4 records that this ring is 2.69:1 on white,
   which is below WCAG 2.4.11; it is in scope of the D-I accepted exception. --------*/
.elementor :focus-visible{outline:3px solid var(--color-accent);outline-offset:3px}

/* --- textlink-card pins itself to the bottom of a card. `auto` is not a valid v4
   dimension value, so it cannot live in the class.
   🔴 FIXED 2026-09-10 (Batch 4A): this rule was written single-class in Batch 2 and
   had been INERT ever since. `.elementor .e-paragraph-base{margin:0px}` in
   base-desktop.css is the same (0,2,0) weight and loads AFTER this file, so the
   `auto` never applied - measured margin-top 0px on all seven card links, with the
   four cards of a 4-up row equal-height (462px) but their links ending at 4026 /
   4001 / 4051 / 4026, i.e. not aligned. The doubled class is (0,3,0). ------------ */
.elementor .textlink-card.textlink-card{margin-block-start:auto;padding-block-start:12px}

/* ---------------------------------------------------------------------------
   Decorative cross pattern - PROTO .crosses / .crosses.peach  (BUILD_PLAN 2.5, 2.6)
   ONE repeating 220x220 SVG background, never an image per band.
   Layer opacity is 0.4 and lives on the `crosses` / `crosses-peach` GLOBAL CLASS
   together with position and inset; this block carries ONLY what the v4 style schema
   has no property for. (01-WordPress-build-instructions.md says opacity .81 - it is
   WRONG and would roughly double the effective alpha on all six surfaces.)
   stroke-opacity .12 (white) / .22 (accent) is baked into the tile, so the effective
   alpha is 4.8% and 8.8%, matching PROTO.
   Painted through a MASK, not a background-image, because a data: URI SVG cannot read
   var() - a background-image would hard-code the accent hex a third time.
   2.6: PROTO defines .crosses.peach and never renders it. The approved design shows it
   on the peach half of the Marcel band, so it ships as `crosses-peach`.
   --------------------------------------------------------------------------- */
.elementor .crosses,.elementor .crosses-peach{
  pointer-events:none;
  -webkit-mask-size:220px 220px;mask-size:220px 220px;
  -webkit-mask-repeat:repeat;mask-repeat:repeat;
  -webkit-mask-position:0 0;mask-position:0 0;
}
.elementor .crosses{
  background-color:var(--color-on-primary);
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220' viewBox='0 0 220 220' fill='none' stroke='%23ffffff' stroke-opacity='.12' stroke-width='2'%3E%3Cpath d='M40 20h20v20h20v20H60v20H40V60H20V40h20z'/%3E%3Cpath d='M150 110h14v14h14v14h-14v14h-14v-14h-14v-14h14z'/%3E%3Cpath d='M100 160h10v10h10v10h-10v10h-10v-10H90v-10h10z'/%3E%3Cpath d='M180 30h8v8h8v8h-8v8h-8v-8h-8v-8h8z'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220' viewBox='0 0 220 220' fill='none' stroke='%23ffffff' stroke-opacity='.12' stroke-width='2'%3E%3Cpath d='M40 20h20v20h20v20H60v20H40V60H20V40h20z'/%3E%3Cpath d='M150 110h14v14h14v14h-14v14h-14v-14h-14v-14h14z'/%3E%3Cpath d='M100 160h10v10h10v10h-10v10h-10v-10H90v-10h10z'/%3E%3Cpath d='M180 30h8v8h8v8h-8v8h-8v-8h-8v-8h8z'/%3E%3C/svg%3E");
}
.elementor .crosses-peach{
  background-color:var(--color-accent);
  -webkit-mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220' viewBox='0 0 220 220' fill='none' stroke='%23ffffff' stroke-opacity='.22' stroke-width='2'%3E%3Cpath d='M40 20h20v20h20v20H60v20H40V60H20V40h20z'/%3E%3Cpath d='M150 110h14v14h14v14h-14v14h-14v-14h-14v-14h14z'/%3E%3Cpath d='M100 160h10v10h10v10h-10v10h-10v-10H90v-10h10z'/%3E%3C/svg%3E");
  mask-image:url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' width='220' height='220' viewBox='0 0 220 220' fill='none' stroke='%23ffffff' stroke-opacity='.22' stroke-width='2'%3E%3Cpath d='M40 20h20v20h20v20H60v20H40V60H20V40h20z'/%3E%3Cpath d='M150 110h14v14h14v14h-14v14h-14v-14h-14v-14h14z'/%3E%3Cpath d='M100 160h10v10h10v10h-10v10h-10v-10H90v-10h10z'/%3E%3C/svg%3E");
}
/* Content inside a band must paint above the pattern. z-index ONLY - never `position`
   in a blanket sibling rule, which would drop existing absolutely-positioned children
   into flow (wordpress-lessons 2026-08-31). z-index is inert on a static element. */
.elementor .crosses ~ *,.elementor .crosses-peach ~ *{z-index:1}

/* ============================================================================
   GLOBAL CHROME - C1 header, C1b mobile drawer, C17 footer   (BUILD_PLAN Batch 3)
   Companion markup: wp-content/mu-plugins/bhv-chrome.php (menus, burger, drawer,
   footer contact column, footer bottom bar) + the Elementor Theme Builder
   header (124) and footer (125) templates.

   WHY THE RESPONSIVE RULES ARE HERE AND NOT v4 STYLE VARIANTS.
   design-tokens.md 3.4 lists TEN max-width breakpoints, all present in PROTO:
   1060 1000 960 900 700 640 600 560 520 480. Elementor exposes at most FIVE named
   max-width slots (mobile / mobile_extra / tablet / tablet_extra / laptop), so the
   approved set cannot be expressed as style variants. Using variants for four of
   them and CSS for the other six would put two mechanisms on one problem, which is
   the failure mode wordpress-lessons records as "both wrong choices fail silently".
   One mechanism: media queries, at PROTO's exact numbers.

   CASCADE NOTE. Stylesheet order on a page is
     frontend.min.css -> post-<kit>.css (THIS FILE) -> base-desktop.css
     -> global-<post>-frontend-*.css -> local-<post>-frontend-*.css
   so a rule here at equal specificity LOSES to an atomic base style, to a global
   class and to a per-element local style. Where a rule below must beat one of
   those it says so and buys the specificity deliberately (a doubled .s-* class,
   never !important).

   No raw design hex anywhere: every colour is var(--token), so the accent still has
   exactly TWO global homes (task 0.1 / decision D-I). The three alpha values PROTO
   writes as rgba(255,255,255,.86 / .12 / .25) are color-mix() over --color-surface /
   --color-on-primary, which resolves to the identical value without a third home.
   ============================================================================ */

/* --- C1 header ------------------------------------------------------------ */
/* The sticky bar's fill. PROTO writes rgba(255,255,255,.86); color-mix() over
   --color-surface reproduces it exactly without a second white. It lives here rather
   than in the element's local styles because the v4 colour prop takes hex only, and
   #ffffffdb is 0.8588 alpha, not 0.86 - close enough to look right and wrong enough
   to be a raw hex a token already covers. Nothing else sets background-color on this
   element, so (0,2,0) from this file is sufficient. */
.elementor .s-bhv-headerbar{background-color:color-mix(in srgb,var(--color-surface) 86%,transparent)}
/* Atomic children of a flex row demand `.e-con{width:100%}` and shrink-fight.
   The logo link needs (0,3,1) here: e-image's own base style is `all: unset`, which
   resets flex, sits at (0,2,0) and loads AFTER this file - measured squeezing the
   104px logo to 88px at 1061px, with object-fit letterboxing the difference so it
   looked merely small rather than broken. The CTA carries flex in its own local
   styles. The MENU is deliberately the one shrinkable child, exactly as PROTO's
   bare <ul> flex item is. */
.elementor .s-bhv-headernav > a.e-image-link-base,
.elementor .s-bhv-headernav > .elementor-element-bhv-hdr-burger{flex:0 0 auto}
.elementor .s-bhv-headernav > .elementor-element-bhv-hdr-menu{flex:0 1 auto;min-width:0}
/* 4.C0 (2026-09-14): the burger is no longer an HTML widget inside a wrapper. It is an
   atomic e-flexbox rendered as <button>, so the element carrying
   .elementor-element-bhv-hdr-burger IS the button; its display:none lives on
   `.bhv-burger.bhv-burger` below. The trap this rule used to handle still holds for any
   widget: a hidden control inside a visible wrapper still consumes one 20px `gap`. */

.elementor .bhv-menu{display:flex;gap:clamp(14px,2vw,28px);list-style:none;margin:0;padding:0}
.elementor .bhv-menu li{margin:0;padding:0}
.elementor .bhv-menu a{
  display:block;
  font-family:var(--stack-body);font-weight:700;font-size:var(--text-nav);
  color:var(--color-text);text-decoration:none;
  padding:8px 2px;border-bottom:3px solid transparent;
}
/* Current page and hover are deliberately IDENTICAL - approved design, flagged
   ACC-7 in components.md C1. current-menu-ancestor/-parent covers the three D-B
   target-group children under BHV training; `bhv-active` is what bhv-chrome.php's
   nav_menu_css_class filter adds for an article, a category archive and
   /veelgestelde-vragen/, none of which WordPress marks natively. */
.elementor .bhv-menu a:hover,
.elementor .bhv-menu > li.current-menu-item > a,
.elementor .bhv-menu > li.current-menu-ancestor > a,
.elementor .bhv-menu > li.current-menu-parent > a,
.elementor .bhv-menu > li.current-page-ancestor > a,
.elementor .bhv-menu > li.current-page-parent > a,
.elementor .bhv-menu > li.bhv-active > a{border-bottom-color:var(--color-accent)}
/* MEASURED, not assumed: on /bhv-training/logistiek|zorg|bedrijven/ WordPress marks the
   parent item `current-page-ancestor`, NOT `current-menu-ancestor` - core only emits the
   latter when the MENU ITEM itself has child menu items, which these do not. Selecting on
   current-menu-ancestor alone left all three D-B pages with nothing highlighted. */

/* (0,3,0): .e-flexbox-base sets display:flex and padding:10px at (0,2,0) and loads after
   this file. The glyph is an e-svg (class bhv-svg) sized here; its <svg> fills it.
   `transition:all .3s` restates what the burger had as a plain <button> (Hello's reset.css):
   Elementor's `.e-con` would otherwise replace it with its own background/border/box-shadow/
   transform list - measured in the 4.C0 before/after diff. Safe here: the burger is never
   focused while it is becoming visible (the trap recorded as B3-5 above). */
.elementor .bhv-burger.bhv-burger{
  display:none;background:none;border:2px solid var(--color-border);border-radius:12px;
  width:48px;height:48px;min-width:0;padding:0;cursor:pointer;color:var(--color-text);place-items:center;
  transition:all .3s;
}
.elementor .bhv-burger .bhv-svg.bhv-svg{width:24px;height:24px}

@media(max-width:1060px){
  .elementor .elementor-element-bhv-hdr-menu{display:none}
  /* Doubled class = (0,3,0). btn-primary sets display:inline-flex at (0,2,0) in the
     global-class bucket, which loads AFTER this file, so a single class would lose. */
  .elementor .s-bhv-hdr-cta.s-bhv-hdr-cta{display:none}
  .elementor .bhv-burger.bhv-burger{display:grid}
}

/* --- C1b mobile drawer ----------------------------------------------------
   Printed by bhv-chrome.php on wp_footer, i.e. a true sibling of <header>.
   It may NEVER be nested inside the header: backdrop-filter makes the header a
   containing block for position:fixed descendants, so `inset:0` would resolve
   against the 86px header box and the drawer would open as a clipped navy strip.
   -------------------------------------------------------------------------- */
.bhv-drawer{display:none}
@media(max-width:1060px){
  .bhv-drawer{
    display:block;position:fixed;inset:0;z-index:200;
    background:var(--color-primary);color:var(--color-on-primary);
    padding:24px;padding-bottom:56px;
    overflow-y:auto;-webkit-overflow-scrolling:touch;overscroll-behavior:contain;
    transform:translateX(100%);transition:transform .25s,visibility 0s .25s;visibility:hidden;
  }
  .bhv-drawer.open{transform:none;visibility:visible;transition:transform .25s}
}
@media(prefers-reduced-motion:reduce){
  .bhv-drawer,.bhv-drawer.open{transition:none}
}
/* 🔴 Hello Elementor's reset.css styles EVERY <button>:
     [type=button],[type=submit],button{border:1px solid #c36;color:#c36;transition:all .3s}
   Two consequences, both measured on this build.
   (1) #c36 is PINK-RED. Any button whose border-color and color are not explicitly
       overridden ships a red control, which this project forbids outright. The burger
       and this close button override both; Batch 4's form controls must too.
   (2) `transition: all .3s` includes the INHERITED visibility flip. At the instant the
       drawer opens the close button is therefore still visibility:hidden, so
       closeBtn.focus() silently no-ops and C1b's "move focus to the close button" fails
       - in a real browser as well as a headless one, because focus() runs in the same
       task as the class toggle. The two rules below remove that dependency. */
/* 🔴 AND a third: the v3 kit mirror styles EVERY button on the site as
     .elementor-kit-11 button{background-color:var(--e-global-color-accent);font-size:16px;...}
   at (0,1,1) - `elementor-kit-11` is a BODY class, so it reaches anything, including
   markup that is not inside an Elementor document. A bare `.bhv-drawer-close` at (0,1,0)
   loses to it: measured background rgb(255,117,31) and font-size 16px instead of a
   transparent 34px glyph, i.e. an ORANGE BLOCK where the × should be. Every rule that
   styles a <button> or an <a> must therefore out-specify (0,1,1); the drawer root carries
   the `elementor` class, so `.elementor.bhv-drawer <sel>` = (0,3,0) does it.
   The same trap is waiting for every control in Batch 4. */
.elementor.bhv-drawer .bhv-drawer-close{transition:none}
.elementor.bhv-drawer.open .bhv-drawer-close{visibility:visible}
.elementor.bhv-drawer .bhv-drawer-close{
  background:none;border:0;color:var(--color-on-primary);
  font-size:34px;line-height:1;cursor:pointer;float:right;padding:4px 10px;
  min-height:var(--control-h-min);min-width:var(--control-h-min);
  font-family:var(--stack-body);font-weight:400;text-align:center;
}
.elementor.bhv-drawer .bhv-drawer-menu{list-style:none;padding:0;margin:56px 0 24px}
.elementor.bhv-drawer .bhv-drawer-menu li{margin:0}
/* No font-weight: PROTO writes 700 here, but Caprasimo ships ONE weight and
   body{font-synthesis:none} means 700 would render 400 anyway. Same treatment as
   the three other hard-coded 700/900 values on Caprasimo elements (finding F9). */
.elementor.bhv-drawer .bhv-drawer-menu a{
  display:block;color:var(--color-on-primary);text-decoration:none;
  font-family:var(--stack-heading);font-size:var(--text-drawer-link);font-weight:400;
  padding:12px 0;
  border-bottom:1px solid color-mix(in srgb,var(--color-on-primary) 12%,transparent);
}
/* (0,3,0) - beats btn-primary's own display/width in the later global bucket. */
.elementor.bhv-drawer .btn-primary{width:100%;margin-top:12px}

/* --- C17 footer ----------------------------------------------------------- */
/* (0,3,0) since 4.C0: the Contact heading is an atomic e-heading, whose base style
   margin:0 is (0,2,0) and loads after this file. */
.elementor .bhv-footer-h4.bhv-footer-h4{
  font-family:var(--stack-heading);font-weight:400;
  color:var(--color-accent);font-size:var(--text-footer-h4);
  margin:0 0 14px;
}
.elementor .bhv-footer-list,.elementor .bhv-footer-contact.bhv-footer-contact{
  list-style:none;padding:0;margin:0;display:grid;gap:var(--pill-gap);
}
.elementor .bhv-footer-list li{margin:0}
.elementor .bhv-footer-list a,
.elementor .bhv-footer-contact a,
.elementor .bhv-footer-bottom a{color:var(--color-on-primary);text-decoration:none}
.elementor .bhv-footer-list a:hover,
.elementor .bhv-footer-contact a:hover,
.elementor .bhv-footer-bottom a:hover{text-decoration:underline}
/* 4.C0 (2026-09-14): the contact column is atomic, not an HTML widget. Column =
   e-div-block `bhv-footer-col`; list = e-flexbox role="list" `bhv-footer-contact`; row =
   e-flexbox role="listitem" `bhv-fc-row`; round icon = e-div-block `bhv-fc-icon` holding an
   e-svg; linked rows = e-flexbox tag a `bhv-fc-link`. Every rule is (0,3,0) because the
   atomic base styles (.e-flexbox-base display:flex + padding:10px, .e-div-block-base
   display:block + min-width:30px + padding:10px) are (0,2,0) and load after this file. */
.elementor .bhv-footer-col.bhv-footer-col{display:block;padding:0;min-width:auto}
.elementor .bhv-fc-row.bhv-fc-row{display:flex;flex-direction:row;gap:var(--chip-gap);align-items:center;padding:0;margin:0}
.elementor .bhv-fc-icon.bhv-fc-icon{
  width:34px;height:34px;min-width:0;padding:0;border-radius:50%;background:var(--color-accent);
  display:inline-grid;place-items:center;flex:none;color:var(--color-primary);
}
.elementor .bhv-fc-icon .bhv-svg.bhv-svg{width:18px;height:18px}
.elementor .bhv-fc-link.bhv-fc-link{display:block;width:auto;min-width:auto;padding:0;flex:0 1 auto}
/* The phone row's link lives inside an e-paragraph (an html-v3 <a>), not in an e-flexbox link.
   Give it the block box the old <li> flex-item link had: a 27.19px line box, not a 22px inline
   box - measured in the 4.C0 before/after diff. */
.elementor .bhv-fc-row > .e-paragraph-base > a{display:block}
/* (0,3,0) since 4.C0: the bar is an atomic e-flexbox (base padding:10px at (0,2,0), later). */
.elementor .bhv-footer-bottom.bhv-footer-bottom{
  padding:0;flex-direction:row;
  border-top:1px solid color-mix(in srgb,var(--color-on-primary) 25%,transparent);
  margin-top:var(--footer-gap);padding-top:22px;
  display:flex;justify-content:space-between;align-items:center;
  gap:16px;flex-wrap:wrap;font-size:var(--text-footer-bottom);position:relative;
}
.elementor .bhv-social{display:flex;gap:14px}
.elementor .bhv-social a{
  width:34px;height:34px;border:2px solid var(--color-on-primary);
  border-radius:50%;display:grid;place-items:center;
}
.elementor .bhv-social svg{width:16px;height:16px;fill:var(--color-on-primary)}
/* 4.C0: each social link is a linked e-svg, whose <svg> fills the link's content box; 7px
   padding inside the 34px ring (2px border) keeps the glyph at 16px, centred. Hidden (P-I). */
.elementor .bhv-social a.bhv-svg{padding:7px}
/* Doubled class = (0,3,0): the desktop 1.4fr 1fr 1fr 1.4fr is a per-element local
   style, and that bucket loads after this file. */
@media(max-width:900px){.elementor .s-bhv-footergrid.s-bhv-footergrid{grid-template-columns:1fr 1fr}}
@media(max-width:560px){.elementor .s-bhv-footergrid.s-bhv-footergrid{grid-template-columns:1fr}}

/* --- C24 inline [te bevestigen] marker ------------------------------------
   Defined here because C17's e-mail row needs it now; components.md C24 (task
   4.23) owns the full component and must NOT redefine `.tbc` - extend it. -- */
.elementor .tbc,.elementor span[id^="tbc-"]{
  background:var(--marker-bg);border:1px dashed var(--marker-border);
  border-radius:var(--radius-focus);padding:0 6px;color:var(--marker-text);
  font-family:var(--stack-body);font-size:.85em;font-weight:500;
  box-decoration-break:clone;-webkit-box-decoration-break:clone;
}
/* ============================================================================
   COMPONENT LIBRARY - C2 to C13        (BUILD_PLAN Batch 4A, tasks 4.1 - 4.13)
   Companion markup: the Elementor container templates listed in the worklog and
   the reference page /componentenbibliotheek/.

   WHY ALL OF IT IS HERE AND NONE OF IT IS A v4 STYLE VARIANT OR A LOCAL STYLE.
   Decision D-N: every responsive step is a CSS media query at PROTO's exact
   number, because the approved design has TEN max-width breakpoints (1060 1000
   960 900 700 640 600 560 520 480) and Elementor can express five. A component
   that is placed more than once cannot key its responsive rules on a per-element
   local style id either, because that id is unique per element - so the shared
   hook is a literal `bhv-*` class in the element's `classes` array. Verified on
   this install: a literal class renders AND survives a Document::save() round
   trip. (A Global Class, by contrast, must be referenced by its `gc-...` ID -
   putting its LABEL in `classes` renders the right class name and loads none of
   its CSS, because the page's global bucket is built from the ids in the tree.)

   WHY EVERY COMPONENT CLASS IS DOUBLED - `.elementor .bhv-x.bhv-x` = (0,3,0).
   MEASURED, not assumed: `base-desktop.css` ships
     .elementor .e-flexbox-base{padding:10px;display:flex;flex-direction:row}
     .elementor .e-div-block-base{min-width:30px;padding:10px;display:block}
     .elementor .e-paragraph-base{margin:0px}   .elementor .e-heading-base{margin:0px}
   at (0,2,0), and base-desktop.css loads AFTER this file. A single-class rule
   here is therefore the SAME weight and LOSES: the first build of this page had
   every card body laid out as a flex ROW with 10px of padding, overflowing the
   document to 1736px at a 1440px viewport, while `grid-template-columns` - which
   the base does not set - applied correctly. Doubling buys exactly one class of
   specificity in the open. It also, deliberately, out-ranks a Global Class where
   the two genuinely collide (the page hero's padding-block against `container`'s
   zero) - every such case is intentional and listed in the worklog.
   `unset` never means zero in v4: every component container states padding.

   NO RAW DESIGN COLOUR. Every colour is var(--token). PROTO's rgba() alphas are
   reproduced with color-mix() over the token, which resolves to the identical
   value without giving any colour a third home (task 0.1 / D-I).
   ============================================================================ */

/* --- Inline highlight ------------------------------------------------------
   PROTO writes <span class="o"> (51x) and <span class="w"> (1x) inside headings.
   Elementor 4.2.4's html-v3 prop allows <span> with an `id` attribute ONLY - no
   `class` (read off Html_V3_Prop_Type::get_allowed_tags() on this install) - so
   the approved markup cannot be reproduced literally. <b> IS in the allow-list
   and IS the right semantic (a stylistically offset run); Caprasimo ships one
   weight and body{font-synthesis:none} is in force, so <b> adds no weight of its
   own. The hook is scoped to the type classes so it can never leak into a fact
   value or into prose. `.w` is used exactly once in PROTO - the middle why-card,
   where the fill is ALREADY orange - and is a context override, not a second
   hook, because html-v3 offers no second usable inline element. -------------- */
.elementor .text-h1 b,.elementor .text-h1-home b,.elementor .text-h2 b,
.elementor .text-h2-prose b,.elementor .text-h3 b,.elementor .text-h4 b,
.elementor .text-card-title b,.elementor .text-body-lg b,.elementor .text-body b{
  color:var(--color-accent);font-weight:inherit;
}

/* --- Shared component primitives ------------------------------------------
   `bhv-stack`: a plain vertical wrapper. PROTO uses bare <div>s here; an atomic
   e-flexbox is a 10px-padded ROW until told otherwise.
   `bhv-icon`: the host of an icon. It is collapsed with display:contents so the icon
   ITSELF is the flex item and the per-component size rules land on the right box.
   `bhv-svg` (4.C0, 2026-09-14): every icon is an atomic e-svg, not an HTML widget.
   Elementor inlines the file's <svg> with style="width:100%;height:100%", so each
   component sizes the e-svg BOX at (0,3,0) - .e-svg-base sets 65x65 at (0,2,0) and loads
   after this file - and the <svg> fills it. display:block on the <svg> removes the
   inline baseline gap inside that box. ------------------------------------------- */
.elementor .bhv-stack.bhv-stack{display:flex;flex-direction:column;padding:0;min-width:0}
.elementor .bhv-icon.bhv-icon{display:contents}
.elementor .bhv-svg svg{display:block}

/* --- Headings on a dark surface -------------------------------------------
   🔴 MEASURED DEFECT, fixed here. The v3 kit mirror emits
   `.elementor-kit-11 h1..h6{color:var(--e-global-color-text)}` at (0,1,1), and an
   explicit declaration always beats INHERITANCE - so a heading inside a navy band
   rendered navy-on-navy and was invisible. `.band .text-h2` computed
   rgb(9,53,112) before this rule existed, on the band, the photo-CTA band, the
   Marcel band and the contact band. The design system's note that "type classes
   carry no colour, so a navy band turns its text white with one class" holds for
   paragraphs and spans only; headings are a special case because the kit paints
   them. Every dark surface therefore states its own heading colour, at (0,2,1).
   The inline <b> highlight still wins on the <b> element itself, so the approved
   orange (or, on the filled card, white) run is unaffected. ------------------- */
.elementor .band h1,.elementor .band h2,.elementor .band h3,.elementor .band h4,
.elementor .bhv-cta-photo h1,.elementor .bhv-cta-photo h2,.elementor .bhv-cta-photo h3,
.elementor .bhv-marcel-left h1,.elementor .bhv-marcel-left h2,.elementor .bhv-marcel-left h3,
.elementor .bhv-small-cta h1,.elementor .bhv-small-cta h2,.elementor .bhv-small-cta h3,
.elementor .bhv-why-card h3,.elementor .bhv-offer h3{color:var(--color-on-primary)}

/* --- Flex-item width ------------------------------------------------------
   MEASURED: `frontend.min.css` ships `.e-con{width:var(--width)}` and --width
   resolves to 100% for every atomic container, so an e-flexbox used as a flex
   ITEM demands the whole line - the first build laid the four chips out as four
   full-width rows. `.e-con` is (0,1,0), so the doubled component class at (0,3,0)
   overrides it cleanly. Every component row states the width of its own children
   rather than relying on content sizing. -------------------------------------- */
.elementor .bhv-chips.bhv-chips > *,
.elementor .bhv-why-head.bhv-why-head > *,
.elementor .bhv-cta-row.bhv-cta-row > *,
.elementor .bhv-stats.bhv-stats > *,
.elementor .bhv-hero-actions.bhv-hero-actions > *,
.elementor .bhv-actions.bhv-actions > *,
.elementor .bhv-marcel-cta.bhv-marcel-cta{width:auto}

/* --- C2 hero (home only) ---------------------------------------------------
   PROTO paints the photo as a CSS background on .hero-img. It ships here as a
   real <img> inside an absolutely positioned layer instead: identical geometry
   (object-fit:cover + object-position 60% 40% == background 60% 40%/cover), and
   it is the ONLY form that can carry fetchpriority, srcset/sizes, width/height
   and an alt - all four required by technical-seo-requirements 8.1, which names
   this photo as the LCP element. ------------------------------------------- */
.elementor .bhv-hero.bhv-hero{position:relative;overflow:hidden;background-color:var(--hero-bg)}
.elementor .bhv-hero-img.bhv-hero-img{position:absolute;inset:0;left:34%;width:auto;padding:0;min-width:0}
.elementor .bhv-hero-img img{width:100%;height:100%;object-fit:cover;object-position:60% 40%;display:block}
/* QA round 1 M-01: both layers are atomic .e-con boxes, and frontend.min.css gives every .e-con
   width:var(--width) = 100%. With an explicit width the left/right pair is over-constrained and
   `right` is dropped, so since the C2 build the photo box was the full hero width starting at 34 %
   (1440 wide at 1440, cropped by overflow:hidden) and the fade spanned the whole hero. width:auto
   restores PROTO: the photo box is left 34 % to the right edge, and the fade sits over that same
   box (PROTO draws it as .hero-img::before), so its 0-48 % gradient covers the photo's left 48 %. */
.elementor .bhv-hero-fade.bhv-hero-fade{position:absolute;inset:0;left:34%;width:auto;padding:0;min-width:0;
  background:linear-gradient(90deg,var(--hero-bg) 0%,
    color-mix(in srgb,var(--hero-bg) 85%,transparent) 18%,
    color-mix(in srgb,var(--hero-bg) 0%,transparent) 48%)}
.elementor .bhv-hero-body.bhv-hero-body{position:relative;z-index:1}
.elementor .bhv-hero-copy.bhv-hero-copy{max-width:var(--measure-hero-copy);
  display:flex;flex-direction:column;padding:0;min-width:0}
.elementor .bhv-hero-lead.bhv-hero-lead{margin:22px 0 30px;max-width:var(--measure-lead-hero)}
.elementor .bhv-hero-actions.bhv-hero-actions{display:flex;flex-direction:row;flex-wrap:wrap;
  gap:var(--btn-gap);padding:0;min-width:0}
/* ACC-6: below 900 the photo becomes a washed full-bleed backdrop and the navy H1
   and lead sit on photographic pixels with no guaranteed contrast. Approved
   design; flagged in components.md C2, measured by Phase-5 QA, NOT changed here. */
@media(max-width:900px){
  .elementor .bhv-hero-img.bhv-hero-img{left:0;opacity:.28}
  .elementor .bhv-hero-fade.bhv-hero-fade{display:none}
}

/* --- C2b USP bar (part of C2, home only) ---------------------------------- */
.elementor .bhv-usp.bhv-usp{position:relative;margin-block-start:var(--usp-overlap);z-index:2}
.elementor .bhv-usp-bar.bhv-usp-bar{
  display:grid;grid-template-columns:repeat(4,1fr);gap:20px;min-width:0;
  padding:22px clamp(18px,3vw,40px);
  background-color:color-mix(in srgb,var(--color-surface) 92%,transparent);
  border:var(--border-hairline) solid var(--color-border);
  border-radius:var(--radius-card);box-shadow:var(--shadow-card);
  -webkit-backdrop-filter:blur(6px);backdrop-filter:blur(6px);
}
.elementor .bhv-usp-item.bhv-usp-item{display:flex;flex-direction:row;align-items:center;
  gap:var(--btn-gap);padding:0;min-width:auto;
  font-family:var(--stack-heading);font-weight:400;font-size:var(--text-usp);line-height:1.15}
.elementor .bhv-usp-item .bhv-svg.bhv-svg{width:46px;height:46px;flex:none;color:var(--color-primary)}
.elementor .bhv-usp-item .bhv-svg svg{stroke-width:2}
.elementor .bhv-usp-item b{color:var(--color-accent);font-weight:inherit}
/* Item 3 is the one USP the approved PDF paints in orange-2 #ff873c rather than
   the accent (design-tokens.md 2 / components.md C2b row 3). Keyed on position
   because <b> is the only inline hook html-v3 gives us. */
.elementor .bhv-usp-item:nth-child(3) b{color:var(--orange-2)}
@media(max-width:900px){.elementor .bhv-usp-bar.bhv-usp-bar{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:520px){.elementor .bhv-usp-bar.bhv-usp-bar{grid-template-columns:minmax(0,1fr)}}

/* --- C3 page hero, variant A (photo) and variant B (simple) --------------- */
.elementor .bhv-page-hero.bhv-page-hero{background-color:var(--color-surface-alt);
  border-block-end:var(--border-hairline) solid var(--line-soft);padding:0;
  display:flex;flex-direction:column;align-items:center}
.elementor .bhv-page-hero-grid.bhv-page-hero-grid{display:grid;
  grid-template-columns:1.1fr .9fr;gap:var(--split-gap);align-items:center;
  padding-block:var(--page-hero-pad);min-width:0}
.elementor .bhv-page-hero-grid > *{min-width:0}
.elementor .bhv-page-hero-lead.bhv-page-hero-lead{margin:18px 0 28px}
/* Links inside a hero lead (task 6.0d: MC-3b on the 404; PROTO draws the same pattern in the /veelgestelde-vragen/ and
   /kennisbank/ leads, "Stel hem aan mij"): PROTO's base rule a{color:inherit} with the browser underline. Without it the v3
   kit link colour (accent) paints them orange. (0,3,1) beats the kit link rules and the theme reset; no hover change. */
.elementor .bhv-page-hero-lead a:not([class]){color:inherit;text-decoration:underline}
.elementor .bhv-page-hero-photo.bhv-page-hero-photo{border-radius:var(--radius-card);
  overflow:hidden;aspect-ratio:4/3;box-shadow:var(--shadow-card);padding:0;min-width:0}
.elementor .bhv-page-hero-photo img{width:100%;height:100%;object-fit:cover;display:block}
/* Variant B, declared after variant A so the single-column value wins the tie. */
.elementor .bhv-page-hero-simple.bhv-page-hero-simple{grid-template-columns:minmax(0,1fr)}
@media(max-width:900px){.elementor .bhv-page-hero-grid.bhv-page-hero-grid{grid-template-columns:minmax(0,1fr)}}

/* --- C4 facts row (course pages only) ------------------------------------- */
.elementor .bhv-facts.bhv-facts{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:var(--facts-gap);margin-block-start:var(--facts-overlap);position:relative;z-index:2;
  padding:0;min-width:0}
.elementor .bhv-fact.bhv-fact{background-color:var(--color-surface);
  border:var(--border-hairline) solid var(--color-border);border-radius:var(--radius-md);
  padding:18px 20px;box-shadow:var(--shadow-card);min-width:0;overflow-wrap:anywhere;
  display:block}
.elementor .bhv-fact-label.bhv-fact-label{display:block;font-family:var(--stack-body);
  font-weight:700;font-size:var(--text-fact-label);letter-spacing:.08em;
  text-transform:uppercase;color:var(--color-text-muted);line-height:1.6}
.elementor .bhv-fact-value.bhv-fact-value{display:block;font-family:var(--stack-heading);
  font-weight:400;font-size:var(--text-fact-value);line-height:1.6;margin:4px 0 0}
.elementor .bhv-fact-sub.bhv-fact-sub{display:block;font-family:var(--stack-body);
  font-weight:400;font-size:15px;line-height:calc(var(--text-fact-value) * 1.6);margin:0}
@media(max-width:900px){.elementor .bhv-facts.bhv-facts{grid-template-columns:repeat(2,minmax(0,1fr))}}
@media(max-width:480px){.elementor .bhv-facts.bhv-facts{grid-template-columns:minmax(0,1fr)}}

/* --- C5 chip -------------------------------------------------------------
   The chip BOX is the `chip` / `chip-on` Global Class (self-sufficient, applied
   alone). Only the group and the orange dot live here. -------------------- */
.elementor .bhv-chips.bhv-chips{display:flex;flex-direction:row;flex-wrap:wrap;
  gap:var(--chip-gap);justify-content:center;padding:0;min-width:0}
.elementor .bhv-chip-dot.bhv-chip-dot{width:26px;height:26px;min-width:0;padding:0;
  border-radius:50%;flex:none;background-color:var(--color-accent);
  display:inline-grid;place-items:center;color:var(--color-on-primary)}
.elementor .bhv-chip-dot .bhv-svg.bhv-svg{width:14px;height:14px}
/* D-BO (6.0g, 2026-09-15): no chip step at 900. PROTO's base .chips and .chip rules
   come AFTER its own 900 media query, so PROTO renders the row centred and the chip
   at 19px at every width, and D-BO rules that render approved. The row keeps its base
   rule above and the chip its Global Class (one mechanism). The earlier 900 step
   (flex-start, 17px) was removed here. */

/* --- C6 navy band --------------------------------------------------------
   The band itself is the `band` Global Class. `.small-cta` is a SEPARATE,
   self-sufficient variant, not `band` plus a modifier - two rules of Global-Class
   weight setting the same property on one element is the cascade regression the
   design system explicitly forbids. D-K: radius-card 22px, not radius-md. ---- */
.elementor .bhv-band.bhv-band{display:flex;flex-direction:column;min-width:0}
.elementor .bhv-small-cta.bhv-small-cta{background-color:var(--color-primary);
  color:var(--color-on-primary);border-radius:var(--radius-card);padding:28px;
  position:relative;overflow:hidden;display:flex;flex-direction:column;
  align-items:flex-start;gap:8px;min-width:0}
.elementor .bhv-small-cta .text-h3{color:var(--color-on-primary)}
.elementor .bhv-band-copy.bhv-band-copy{margin:12px 0 0;font-size:var(--text-lead)}

/* --- C7 why-card x3 (inside C6, home only) -------------------------------
   D-I: the middle card is white-on-orange at 2.69:1. That is a knowing, ruled
   acceptance. Build it, do not substitute a darker orange. D-K: radius-card. -- */
.elementor .bhv-why-head.bhv-why-head{display:flex;flex-direction:row;
  justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;
  margin-block-end:36px;padding:0;min-width:0}
.elementor .bhv-why-grid.bhv-why-grid{display:grid;
  grid-template-columns:repeat(3,1fr);gap:var(--grid-gap);padding:0;min-width:0}
.elementor .bhv-why-card.bhv-why-card{min-width:auto;min-height:300px;display:flex;
  flex-direction:column;gap:var(--btn-gap);padding:30px 28px;
  border-radius:var(--radius-card);
  border:var(--border-hairline) solid color-mix(in srgb,var(--color-on-primary) 28%,transparent);
  background-color:color-mix(in srgb,var(--color-on-primary) 4%,transparent)}
.elementor .bhv-why-card-hi.bhv-why-card-hi{background-color:var(--color-accent);
  border-color:var(--color-accent)}
.elementor .bhv-why-card .bhv-svg.bhv-svg{width:56px;height:56px;color:var(--color-on-primary);
  margin-block-end:12px;flex:none}
.elementor .bhv-why-card .bhv-svg svg{stroke-width:2}
.elementor .bhv-why-card .text-h3{color:var(--color-on-primary);font-size:var(--text-why-title)}
.elementor .bhv-why-card p{margin:0;opacity:.95}
/* PROTO's `.w`: on the orange card the highlight must be white, because the fill
   is already the accent. (0,4,0) beats the generic highlight rule at (0,2,1). */
.elementor .bhv-why-card-hi .text-h3 b{color:var(--color-on-primary)}
@media(max-width:900px){.elementor .bhv-why-grid.bhv-why-grid{grid-template-columns:minmax(0,1fr)}}

/* --- C8 course card / C9 article card ------------------------------------
   D-E: both are BORDERED. The card box is the `card` Global Class; the grid, the
   image slot, the body and the two badge positions live here. --------------- */
.elementor .bhv-cards.bhv-cards{display:grid;grid-template-columns:repeat(4,minmax(0,1fr));
  gap:var(--grid-gap);padding:0;min-width:0}
.elementor .bhv-cards-three.bhv-cards-three{grid-template-columns:repeat(3,minmax(0,1fr))}
.elementor .bhv-cards > *{min-width:0}
.elementor .bhv-card-img.bhv-card-img{aspect-ratio:4/3;width:100%;padding:0;min-width:0;
  background-color:var(--color-img-placeholder);display:block;position:relative}
.elementor .bhv-card-img img{width:100%;height:100%;object-fit:cover;display:block}
.elementor .bhv-card-body.bhv-card-body{padding:22px 22px 24px;display:flex;
  flex-direction:column;gap:var(--pill-gap);flex:1;min-width:0}
.elementor .bhv-card-body p{margin:0}
/* C8: centred, straddling the top edge. C9 "Nieuw": inside the image, top-right. */
.elementor .bhv-badge-center.bhv-badge-center{position:absolute;inset-block-start:-14px;
  inset-inline-start:50%;transform:translateX(-50%);z-index:2;white-space:nowrap}
.elementor .bhv-badge-tr.bhv-badge-tr{position:absolute;inset-block-start:14px;
  inset-inline-end:16px;z-index:2;white-space:nowrap}
@media(max-width:1000px){
  .elementor .bhv-cards.bhv-cards,
  .elementor .bhv-cards-three.bhv-cards-three{grid-template-columns:repeat(2,minmax(0,1fr))}
}
@media(max-width:600px){
  .elementor .bhv-cards.bhv-cards,
  .elementor .bhv-cards-three.bhv-cards-three{grid-template-columns:minmax(0,1fr)}
}

/* --- C10 photo CTA band (home only) --------------------------------------
   The photo ships as a real <img> in an absolutely positioned layer for the same
   reason as C2. The overlay is a sibling layer rather than a ::before so it can
   sit between the photo and the row without a stacking-context surprise. ----- */
.elementor .bhv-cta-photo.bhv-cta-photo{position:relative;overflow:hidden;
  border-radius:var(--radius-band);color:var(--color-on-primary);min-height:320px;
  display:flex;flex-direction:row;align-items:center;padding:var(--band-pad);min-width:0}
.elementor .bhv-cta-photo-img.bhv-cta-photo-img{position:absolute;inset:0;padding:0;min-width:0}
.elementor .bhv-cta-photo-img img{width:100%;height:100%;object-fit:cover;display:block}
.elementor .bhv-cta-photo-overlay.bhv-cta-photo-overlay{position:absolute;inset:0;
  padding:0;min-width:0;background:linear-gradient(90deg,
  color-mix(in srgb,var(--color-primary) 82%,transparent) 0%,
  color-mix(in srgb,var(--color-primary) 55%,transparent) 55%,
  color-mix(in srgb,var(--color-primary) 35%,transparent) 100%)}
/* C10 addendum (m-04, D-CB), on Marcel's sign-off list: at <=600px the copy spans the whole
   band, so the left-to-right gradient cannot hold it. Flat navy 87% is the least that passes the
   orange accent at 3:1 over any photo (solved: 0.865). Do not lower it. */
@media (max-width:600px){.elementor .bhv-cta-photo-overlay.bhv-cta-photo-overlay{background:color-mix(in srgb,var(--color-primary) 87%,transparent)}}
.elementor .bhv-cta-row.bhv-cta-row{position:relative;z-index:1;width:100%;display:flex;
  flex-direction:row;justify-content:space-between;align-items:center;gap:32px;
  flex-wrap:wrap;padding:0;min-width:0}
.elementor .bhv-cta-copy.bhv-cta-copy{max-width:var(--measure-band);
  font-size:var(--text-band-copy);margin:16px 0 0}

/* --- C11 Marcel band (home only) -----------------------------------------
   ASSET GAP, flagged not fixed: the approved design draws a background-REMOVED
   cut-out on the peach half. The only portrait for this slot has a cafe
   background, so the prototype's cover-crop ships (object-position 50% 20%,
   verbatim) until the manager rules. P-D: the peach half carries the orange
   cross layer the prototype defines but never renders - it is added here per the
   design, and with a cover-crop portrait filling the half it is COVERED, which
   is a consequence of the same asset gap and is reported, not worked around. - */
.elementor .bhv-marcel.bhv-marcel{display:grid;
  grid-template-columns:repeat(2,minmax(0,1fr));border-radius:var(--radius-band);
  overflow:hidden;min-height:520px;padding:0;min-width:0}
.elementor .bhv-marcel-left.bhv-marcel-left{min-width:0;position:relative;
  padding:var(--band-pad);background-color:var(--color-primary);
  color:var(--color-on-primary);display:flex;flex-direction:column;align-items:flex-start}
.elementor .bhv-marcel-left::after{content:"";position:absolute;inset-inline-end:-1px;
  inset-block-start:50%;transform:translateY(-50%);border:26px solid transparent;
  border-inline-end:0;border-inline-start:30px solid var(--color-primary);z-index:2}
.elementor .bhv-marcel-right.bhv-marcel-right{min-width:0;position:relative;overflow:hidden;
  background-color:var(--color-secondary);display:flex;flex-direction:row;
  align-items:flex-end;justify-content:center;padding:0}
/* 2026-09-11 (4.A1, D-Z): the portrait is now the background-removed CUT-OUT
   (attachment 161, `-derived`, pending Marcel's sign-off), so it is contained and
   bottom-aligned on the peach, as the design PDF draws it — no longer a cover-crop of the
   cafe photo. That is what un-hides the crosses-peach layer (P-D / D-T). */
.elementor .bhv-marcel-right img{position:absolute;inset:0;width:100%;height:100%;
  object-fit:contain;object-position:50% 100%;display:block}
.elementor .bhv-marcel-copy.bhv-marcel-copy{max-width:var(--measure-marcel);margin:18px 0 0}
.elementor .bhv-marcel-cta.bhv-marcel-cta{margin-block-start:18px;padding:0;min-width:0;
  display:flex;flex-direction:row}
.elementor .bhv-stats.bhv-stats{display:flex;flex-direction:row;gap:var(--footer-gap);
  flex-wrap:wrap;margin-block-start:36px;padding:0;min-width:0}
.elementor .bhv-stat.bhv-stat{min-width:0;padding:0;display:flex;flex-direction:column}
.elementor .bhv-stat-value.bhv-stat-value{display:block;font-family:var(--stack-heading);
  font-weight:400;font-size:var(--text-stat);line-height:1;margin:0}
.elementor .bhv-stat-label.bhv-stat-label{display:block;font-family:var(--stack-body);
  font-weight:700;font-size:var(--text-stat-label);letter-spacing:.08em;
  text-transform:uppercase;opacity:.9;margin:6px 0 0;line-height:1.6}
@media(max-width:900px){
  .elementor .bhv-marcel.bhv-marcel{grid-template-columns:minmax(0,1fr)}
  .elementor .bhv-marcel-left::after{display:none}
  .elementor .bhv-marcel-right.bhv-marcel-right{min-height:420px}
}

/* --- C12 contact band (home only) ---------------------------------------
   D-K: `.offer` takes radius-card 22px. D-O: the WhatsApp row is in the blocked-
   content register - the component supports it, the link is NOT published until
   Marcel confirms the number carries WhatsApp, so it is absent here. -------- */
.elementor .bhv-contact-band.bhv-contact-band{display:grid;grid-template-columns:1.1fr .9fr;
  gap:var(--footer-gap);align-items:center;padding:0;min-width:0}
.elementor .bhv-contact-band > *{min-width:0}
.elementor .bhv-contact-copy.bhv-contact-copy{max-width:var(--measure-contact);
  font-size:var(--text-lead);margin:18px 0 0}
.elementor .bhv-actions.bhv-actions{display:flex;flex-direction:row;gap:var(--btn-gap);
  flex-wrap:wrap;margin-block-start:28px;padding:0;min-width:0}
.elementor .bhv-offer.bhv-offer{position:relative;padding:32px;border-radius:var(--radius-card);
  display:block;min-width:0;
  border:var(--border-hairline) solid color-mix(in srgb,var(--color-on-primary) 30%,transparent);
  background-color:color-mix(in srgb,var(--color-on-primary) 4%,transparent)}
.elementor .bhv-offer-badge.bhv-offer-badge{position:absolute;inset-block-start:-18px;
  inset-inline-end:24px;z-index:2}
.elementor .bhv-offer .text-h3{color:var(--color-on-primary);font-size:var(--text-h3-offer);
  margin:6px 0 10px}
.elementor .bhv-offer p{margin:0}
/* C16 check list, C12 instance: 28px disc, 16px tick, centred. The generic
   `.list-check` (26px / 15px / top-aligned) is task 4.16 and is NOT this rule.
   The tick is a white-KEYWORD SVG over a token background - no hex anywhere. */
.elementor .bhv-checks.bhv-checks{display:block;margin:0;width:100%}
.elementor .bhv-checks ul{list-style:none;padding:0;margin:18px 0 0;display:grid;gap:var(--btn-gap)}
.elementor .bhv-checks li{display:flex;gap:var(--chip-gap);align-items:center;
  font-size:var(--text-body);margin:0}
.elementor .bhv-checks li::before{content:"";width:28px;height:28px;border-radius:50%;flex:none;
  background:var(--color-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5L20 7'/%3E%3C/svg%3E") center/16px no-repeat}
@media(max-width:900px){.elementor .bhv-contact-band.bhv-contact-band{grid-template-columns:minmax(0,1fr)}}

/* Demo-only stack for the C13 reference page's prose column. ⚠ <p> is NOT in
   html-v3's allow-list on 4.2.4 - Document::save() strips it silently, measured on
   this build - so prose is ONE e-paragraph per paragraph and the spacing has to be
   a gap. Task 4.21 (C22 prose block) owns the real rule; this is a stand-in so the
   sidebar has something to stand beside. -------------------------------------- */
.elementor .bhv-prose-demo.bhv-prose-demo{gap:1em}

/* --- C13 sidebar card (sticky) -------------------------------------------
   BUILD TRAP (design-lessons 2026-09-02): without align-self:start the card
   stretches to the full height of the prose column, and a stretched element
   already fills its scrollport, so position:sticky silently does nothing. Both
   the grid child AND the card carry it - the `surface-cream` Global Class also
   sets it, which is a deliberate second belt. D-K keeps radius-card here.
   The /contact/ variant is 1.4fr 1fr and static, and is NOT sticky (approved). */
.elementor .bhv-article-grid.bhv-article-grid{display:grid;
  grid-template-columns:1fr var(--sidebar-w);gap:var(--article-gap);padding:0;min-width:0}
.elementor .bhv-article-grid > *{min-width:0;align-self:start}
.elementor .bhv-article-grid-contact.bhv-article-grid-contact{grid-template-columns:1.4fr 1fr}
.elementor .bhv-side.bhv-side{position:sticky;inset-block-start:var(--sidebar-sticky-top);
  align-self:start;display:flex;flex-direction:column;align-items:stretch;min-width:0}
.elementor .bhv-side-static.bhv-side-static{position:static}
.elementor .bhv-side.bhv-side .text-h3.text-h3{margin:0 0 8px}
.elementor .bhv-side-copy.bhv-side-copy{font-size:15px;margin:0 0 1em}
.elementor .bhv-side-list.bhv-side-list{display:block;margin:0}
.elementor .bhv-side-list ul{padding-inline-start:1.1em;margin:12px 0;font-size:15px}
.elementor .bhv-side-copy + .bhv-side-list ul{margin-top:0}
.elementor .bhv-side-list li{margin:0}
/* (0,3,0) - beats the button Global Classes' own display/width in the later bucket. */
.elementor .bhv-side .btn-primary,.elementor .bhv-side .btn-secondary,
.elementor .bhv-side .btn-primary-lg,.elementor .bhv-side .btn-ghost{
  width:100%;margin-block-start:10px}
@media(max-width:960px){
  .elementor .bhv-article-grid.bhv-article-grid,
  .elementor .bhv-article-grid-contact.bhv-article-grid-contact{grid-template-columns:minmax(0,1fr)}
  .elementor .bhv-side.bhv-side{position:static}
}

/* ===========================================================================================
   BATCH 4B (2026-09-11) — C14 FAQ, C19 contact form, C20 agenda, C21 cursuskiezer.
   Same contract as 4A (memory 160): literal bhv-* hooks, doubled classes against
   base-desktop.css, every value a token unless it is single-use geometry (D-W).
   Four of these surfaces are v3 ISLANDS (design-tokens.md 5.2): a legacy container at page
   root that re-creates `section` + `container`, so the v3 widget inside never sits in a v4
   wrapper. Their .elementor-kit-11s are deliberately heavier than Elementor's own per-widget rules
   (`.elementor-<post> .elementor-element.elementor-element-<id> ...` = 0,4,0 or 0,5,0).
   =========================================================================================== */

/* --- v3 island shell ------------------------------------------------------------------------ */
.elementor .e-con.bhv-island.bhv-island{
  --padding-top:var(--section-pad);--padding-bottom:var(--section-pad);
  --padding-left:var(--container-pad);--padding-right:var(--container-pad);
  --gap:0px;--row-gap:0px;--column-gap:0px;align-items:center}
.elementor .e-con.bhv-island.bhv-island > .elementor-element{
  width:100%;max-width:calc(var(--container-max) - 2 * var(--container-pad))}

/* --- C14 FAQ accordion (Elementor nested-accordion, v3) ------------------------------------- */
/* PROTO: a LEFT-aligned 820px column inside the 1160 container; one <details> per question. */
.elementor .elementor-element.elementor-widget-n-accordion.bhv-faq .e-n-accordion{max-width:var(--measure-faq-col)}
.elementor .elementor-element.elementor-widget-n-accordion.bhv-faq .e-n-accordion-item{
  border:var(--border-hairline) solid var(--color-border);border-radius:var(--radius-sm);
  padding:0 22px;margin:0 0 12px;background-color:var(--color-surface);scroll-margin-top:110px}
.elementor .elementor-element.elementor-widget-n-accordion.bhv-faq .e-n-accordion-item > .e-n-accordion-item-title{
  display:flex;flex-direction:row;justify-content:space-between;align-items:center;gap:16px;
  padding:18px 0;margin:0;border:0;border-radius:0;background:none;cursor:pointer;list-style:none;
  font-family:var(--font-heading);font-weight:400;font-size:var(--text-summary);line-height:1.6;
  color:var(--color-primary)}
.elementor .elementor-element.elementor-widget-n-accordion.bhv-faq .e-n-accordion-item-title::-webkit-details-marker{display:none}
.elementor .elementor-element.elementor-widget-n-accordion.bhv-faq .e-n-accordion-item-title-header{flex:1 1 auto}
.elementor .elementor-element.elementor-widget-n-accordion.bhv-faq .e-n-accordion-item-title-text{font:inherit;color:inherit}
.elementor .elementor-element.elementor-widget-n-accordion.bhv-faq .e-n-accordion-item-title::after{
  content:"+";flex:none;color:var(--color-accent);font-size:var(--text-summary-icon);line-height:1}
.elementor .elementor-element.elementor-widget-n-accordion.bhv-faq .e-n-accordion-item[open] > .e-n-accordion-item-title::after{content:"\2013"}
.elementor .elementor-element.elementor-widget-n-accordion.bhv-faq .bhv-faq-a.bhv-faq-a{
  --padding-top:0px;--padding-right:0px;--padding-bottom:20px;--padding-left:0px;
  border:0;background:none;max-width:var(--measure-prose);
  font-family:var(--font-body);font-size:var(--text-answer-body);line-height:1.6;color:var(--color-text)}
.elementor .elementor-element.elementor-widget-n-accordion.bhv-faq .bhv-faq-a .elementor-widget-text-editor{font:inherit;color:inherit}
.elementor .elementor-element.elementor-widget-n-accordion.bhv-faq .bhv-faq-a p{margin:0}

/* --- C19 contact form (Elementor Pro Form, v3) ---------------------------------------------- */
/* Grid, not Pro's padded flex columns. The honeypot's wrapper is not a field group and the
   hidden `datum` field has no visible form — both are taken out of the grid entirely. */
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-form-fields-wrapper{
  display:grid;grid-template-columns:1fr 1fr;gap:18px;margin:0}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-form-fields-wrapper > *{
  width:auto;max-width:none;min-width:0;margin:0;padding:0}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-form-fields-wrapper > .elementor-col-100{grid-column:1 / -1}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-form-fields-wrapper > .elementor-field-type-hidden,
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-form-fields-wrapper > div:not(.elementor-field-group){display:none}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-group{display:block}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-label{
  display:block;margin:0 0 6px;padding:0;font-family:var(--font-body);font-weight:700;
  font-size:var(--text-label);line-height:1.4;color:var(--color-text)}
/* Mirrors the v4 `input-field` Global Class value for value — a v3 control cannot take it. */
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-textual{
  width:100%;max-width:100%;min-height:var(--control-h);margin:0;padding:12px 16px;
  border:var(--border-control) solid var(--color-border);border-radius:var(--radius-input);
  background-color:var(--color-surface);color:var(--color-text);box-shadow:none;
  font-family:var(--font-body);font-size:var(--text-body);line-height:1.6}
.elementor .elementor-widget-form.bhv-form.bhv-form select.elementor-field-textual{padding-inline-end:44px}
.elementor .elementor-widget-form.bhv-form.bhv-form textarea.elementor-field-textual{min-height:140px;resize:vertical}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-select-wrapper{width:100%}
/* Focus — components.md C19: 3px accent ring, offset 2px, accent border. Pro's own
   `.elementor-field-textual:focus{outline:0}` is (0,2,0); this is (0,6,0). */
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-textual:focus-visible{
  border-color:var(--color-accent);outline:3px solid var(--color-accent);outline-offset:2px}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-type-acceptance .elementor-field-subgroup{display:block;width:100%}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-type-acceptance .elementor-field-option{
  display:flex;gap:10px;align-items:flex-start;margin:0}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-acceptance-field{
  flex:none;width:auto;min-height:0;margin:4px 0 0;accent-color:var(--color-accent)}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-acceptance-field:focus-visible{
  outline:3px solid var(--color-accent);outline-offset:2px}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-type-acceptance label{
  margin:0;font-family:var(--font-body);font-size:var(--text-consent);font-weight:400;line-height:1.5;color:var(--color-text)}
/* The consent link sits inside the C24 marker; accent-on-marker would be unreadable. */
.elementor .tbc a,.elementor span[id^="tbc-"] a{color:inherit;text-decoration:underline}
/* Submit — mirrors `btn-primary-lg`, full width (components.md C19). */
.elementor .elementor-widget-form.bhv-form.bhv-form .e-form__buttons .elementor-button{
  width:100%;min-height:var(--control-h-lg);margin:0;padding:0 var(--control-pad-x-lg);
  display:inline-flex;align-items:center;justify-content:center;gap:8px;
  border:var(--border-control) solid var(--color-accent);border-radius:var(--radius-pill);
  background-color:var(--color-accent);color:var(--color-on-primary);box-shadow:none;cursor:pointer;
  font-family:var(--font-body);font-weight:700;font-size:var(--text-btn-lg);line-height:1.1;text-decoration:none}
.elementor .elementor-widget-form.bhv-form.bhv-form .e-form__buttons .elementor-button:hover,
.elementor .elementor-widget-form.bhv-form.bhv-form .e-form__buttons .elementor-button:focus-visible{
  background-color:var(--orange-dark);border-color:var(--orange-dark);color:var(--color-on-primary)}
.elementor .elementor-widget-form.bhv-form.bhv-form .e-form__buttons .elementor-button:focus-visible{
  outline:3px solid var(--color-accent);outline-offset:3px}
/* Error states — components.md C19 "never any red": Pro ships a red default on
   .elementor-message-danger; replaced here on every state. */
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-error .elementor-field-textual{
  border-color:var(--orange-dark);background-color:var(--color-error-fill)}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-error .elementor-acceptance-field{
  outline:2px solid var(--orange-dark);outline-offset:2px}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-group .elementor-message{
  display:block;margin:6px 0 0;padding:0;border:0;background:none;
  font-family:var(--font-body);font-size:var(--text-label);font-weight:700;line-height:1.4;
  color:var(--color-error-text)}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-message::before{content:none;display:none}
/* Form-level message base (C19 update 2026-09-21): the failure values, so no Pro message type can fall back to
   the [te bevestigen] marker look. Success and danger are set explicitly below (m-05 block). */
.elementor .elementor-widget-form.bhv-form.bhv-form form > .elementor-message{
  margin:18px 0 0;padding:22px;border:var(--border-control) solid var(--orange-dark);
  border-radius:var(--radius-sm);background-color:var(--color-error-fill);color:var(--color-error-text);
  font-family:var(--font-body);font-size:var(--text-label);font-weight:700;line-height:1.4}

/* --- C20 agenda ----------------------------------------------------------------------------- */
.elementor .bhv-agenda-top.bhv-agenda-top{padding-block-start:var(--section-pad)}
.elementor .bhv-agenda-pills.bhv-agenda-pills{
  display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--pill-gap);margin:26px 0 30px;padding:0}
.elementor .bhv-agenda-pills.bhv-agenda-pills > *{width:auto;flex:none}
.elementor .e-con.bhv-island.bhv-island-agenda{--padding-top:0px}
.elementor .bhv-agenda .bhv-table-wrap{
  overflow-x:auto;border:var(--border-hairline) solid var(--color-border);
  border-radius:var(--radius-md);background-color:var(--color-surface)}
.elementor .bhv-agenda .bhv-agenda-table{
  width:100%;margin:0;border-collapse:collapse;font-family:var(--font-body);font-size:var(--text-table)}
.elementor .bhv-agenda .bhv-agenda-table th{
  padding:12px 14px;border:0;border-bottom:var(--border-control) solid var(--color-border);background:none;
  text-align:start;font-size:var(--text-table-th);font-weight:700;letter-spacing:.08em;
  text-transform:uppercase;color:var(--color-text-muted);white-space:nowrap}
.elementor .bhv-agenda .bhv-agenda-table td{
  padding:16px 14px;border:0;border-bottom:var(--border-hairline) solid var(--line-soft);
  background:none;vertical-align:middle;color:var(--color-text)}
.elementor .bhv-agenda .bhv-agenda-table tbody tr:last-child td{border-bottom:0}
.elementor .bhv-agenda .bhv-agenda-table tr[hidden]{display:none}
.elementor .bhv-agenda .bhv-agenda-name{display:block}
.elementor .bhv-agenda .bhv-agenda-duur{display:block;font-size:var(--text-small);color:var(--color-text-muted)}
.elementor .bhv-agenda .bhv-agenda-btn{min-height:var(--control-h-min);padding:0 var(--control-pad-x-row);white-space:nowrap}
.elementor .bhv-agenda .bhv-agenda-empty{padding:32px 22px;text-align:center}
.elementor .bhv-agenda .bhv-agenda-empty p{margin:0;font-size:var(--text-lead);line-height:1.6;color:var(--color-text-muted)}
.elementor .bhv-agenda .bhv-agenda-note{margin:12px 0 0;font-size:var(--text-small);color:var(--color-text-muted)}

/* --- C21 cursuskiezer ----------------------------------------------------------------------- */
.elementor .bhv-kiezer.bhv-kiezer{display:grid;grid-template-columns:1fr 1.4fr;gap:40px;align-items:start;padding:0}
.elementor .bhv-kiezer.bhv-kiezer > *{width:auto;min-width:0}
.elementor .bhv-kiezer-options.bhv-kiezer-options > *{width:100%}
.elementor .bhv-kiezer-chip.bhv-kiezer-chip{justify-content:flex-start;width:100%}
.elementor .bhv-kiezer-answers.bhv-kiezer-answers{display:block;padding:0}
.elementor .bhv-kiezer-panel.bhv-kiezer-panel{display:flex;flex-direction:column;padding:32px}
/* `hidden` must survive every display rule above — the seven answers are in the HTML for
   crawlers (technical-seo 6.1) and invisible until chosen. */
.elementor .bhv-kiezer-panel.bhv-kiezer-panel[hidden]{display:none}
.elementor .bhv-kiezer-h3.bhv-kiezer-h3{font-size:var(--text-h3-answer);margin:0 0 10px}
.elementor .bhv-kiezer-actions.bhv-kiezer-actions{
  display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--btn-gap);margin-block-start:22px;padding:0}
.elementor .bhv-kiezer-actions.bhv-kiezer-actions > *{width:auto;flex:none}

@media(max-width:900px){
  .elementor .bhv-kiezer.bhv-kiezer{grid-template-columns:1fr}
}
@media(max-width:640px){
  .elementor .elementor-widget-form.bhv-form.bhv-form .elementor-form-fields-wrapper{grid-template-columns:1fr}
}

/* --- 4B fixes found by measuring (2026-09-11) ----------------------------------------------- */
/* (1) Pro generates `.elementor-<post> .elementor-element.elementor-element-<id> .elementor-field-group
   .elementor-field:not(.elementor-select-wrapper){background:#fff}` at (0,6,0) in post-<id>.css,
   which loads AFTER the kit — it tied the error fill and won on order. This is (0,7,0). */
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-group.elementor-error .elementor-field-textual{
  border-color:var(--orange-dark);background-color:var(--color-error-fill)}
/* (2) Pro appends a select's error INSIDE its flex select-wrapper, and a checkbox's error inside
   the flex consent row, so both sat beside the control. Wrap them onto their own line, and pin
   the select caret to the select's own centre (border + padding + half the 1.6 line box) so it
   does not drift when the wrapper grows. */
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-select-wrapper{flex-wrap:wrap}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-select-wrapper > select{flex:1 1 100%}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-select-wrapper > .elementor-message,
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-option > .elementor-message{flex:0 0 100%}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-type-acceptance .elementor-field-option{flex-wrap:wrap}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-select-wrapper .select-caret-down-wrapper{
  top:calc(var(--border-control) + 12px + 0.8 * var(--text-body))}
/* (3) Hello's reset gives `[tabindex]:not([tabindex="-1"]):focus-visible` a BLACK 2px ring plus a
   white box-shadow at (0,3,0), which beats the kit's `.elementor :focus-visible` (0,2,0) on any
   element carrying a tabindex — the FAQ <summary> is one. Element-qualified replacement, same
   ring as everywhere else (wordpress-lessons 2026-09-10, Ausim). */
.elementor [tabindex]:not([tabindex="-1"]):focus-visible{
  outline:3px solid var(--color-accent);outline-offset:3px;box-shadow:none}

/* ===========================================================================================
   BATCH 4C (2026-09-14) — 4.C1 sticky header · C15 steps · C16 check list · C18 Kennisbank pills
   =========================================================================================== */

/* --- 4.C1 — the header actually sticks (decision D-AJ, finding E-C0-1) ------------------------
   C1 / PROTO .header: `position:sticky; top:0; z-index:50`. Since Batch 3 that declaration sat on
   .s-bhv-headerbar, whose containing block is Elementor Pro's own location wrapper
   <header class="elementor elementor-124 elementor-location-header">. The wrapper is exactly as
   tall as the bar (87px), so the bar had no room to stick - measured bar top -1500 at scrollY
   1500 on every width (worklog 4.C0). The wrapper is a direct child of <body>; body's
   overflow-x:clip creates no scroll container, so sticky on the WRAPPER resolves against the
   viewport. The bar keeps its own (now inert) sticky and its backdrop-filter. The drawer stays a
   body-level sibling at z-index 200, above this 50.
   (a) Logged in: the WordPress admin bar is position:fixed and publishes its height as
       --wp-admin--admin-bar--height (32px; 46px at <=782px) ONLY while it is shown, so for
       visitors the fallback is 0. At <=600px admin-bar.css makes the bar position:absolute and it
       scrolls away, so the header goes back to top:0 there.
   (b) Anchors: PROTO has no scroll-margin / scroll-padding (its router centres a hash target with
       scrollIntoView, which the C14 controller copies). A sticky bar would otherwise cover any
       target the browser scrolls to the top edge: a native #hash jump, or keyboard focus
       scrolling onto an element (WCAG 2.4.11). scroll-padding-top reserves exactly the bar:
       --header-h (86) + the 1px hairline = the measured 87px, plus the admin bar when present.
       :root (0,1,0) beats admin-bar.css's own `html{scroll-padding-top}` (0,0,1) in any order.
   (c) C13's sticky sidebar (top 110 = bar 87 + 23) keeps its gap below the header when the admin
       bar is present; for visitors the added term is 0, so nothing changes. */
.elementor.elementor-location-header{position:sticky;top:var(--wp-admin--admin-bar--height,0px);z-index:50}
:root{scroll-padding-top:calc(var(--header-h) + var(--border-hairline) + var(--wp-admin--admin-bar--height,0px))}
@media(min-width:601px){
  .elementor .bhv-side.bhv-side{inset-block-start:calc(var(--sidebar-sticky-top) + var(--wp-admin--admin-bar--height,0px))}
}
@media screen and (max-width:600px){
  .elementor.elementor-location-header{top:0}
  :root{scroll-padding-top:calc(var(--header-h) + var(--border-hairline))}
}

/* --- C15 steps (task 4.15; /bhv-training/ only, strategy D7) ------------------------------------
   PROTO: .steps{display:grid;gap:18px;counter-reset:s}
          .step{display:grid;grid-template-columns:56px 1fr;gap:18px;border:1px solid var(--line);
                border-radius:18px;padding:20px 22px;background:#fff}
          .step::before{counter-increment:s;content:counter(s);font-family:Caprasimo;font-size:30px;
                color:var(--orange);line-height:1}   (weight 400 - PROTO's 900 is overridden by its own
                font-weight:400!important rule; Caprasimo has one weight)
          .step h4{font-size:20px;margin-bottom:4px}  .step p{margin:0;font-size:16px}
   MEASURED in PROTO at 1440: step 93.19px tall (21.6 + 4 + 25.6 + 40 + 2), numeral box 56 wide,
   h4 line box 21.6 = PROTO's h1-h4 line-height 1.08. The design system's `text-h4` class carries
   line-height 1.2 (agency value) - the title class below restores PROTO's 1.08 (a listed one-off).
   The numeral is a CSS COUNTER (components.md C15 [ASSUMPTION]): adding, removing or reordering a
   step in the editor renumbers the list, and nobody types a digit.
   Border colour is --color-border (#80adea, design-tokens C-2), not PROTO's --line #c9d8ee.
   🔴 TRAP: atomic containers are `.e-con`, and frontend.min.css gives `.e-con:before` the
   background-overlay layer (position:absolute, top/left, width/height max(100%...), opacity,
   mix-blend-mode, border, a .3s transition). The numeral IS that ::before, so each of those is reset
   here or the numeral would become an absolutely positioned layer over the step
   (wordpress-lessons 2026-09-11, Ausim). --------------------------------------------------------- */
.elementor .bhv-steps.bhv-steps{display:grid;gap:var(--facts-gap);counter-reset:bhv-step;padding:0;min-width:0}
.elementor .bhv-steps.bhv-steps > *{width:auto;min-width:0}
.elementor .bhv-step.bhv-step{display:grid;grid-template-columns:56px 1fr;gap:var(--facts-gap);
  border:var(--border-hairline) solid var(--color-border);border-radius:var(--radius-md);
  padding:20px 22px;background-color:var(--color-surface)}
.elementor .bhv-step.bhv-step::before{counter-increment:bhv-step;content:counter(bhv-step);
  display:block;position:static;top:auto;left:auto;width:auto;height:auto;opacity:1;
  mix-blend-mode:normal;border:0;border-radius:0;transition:none;
  font-family:var(--stack-heading);font-weight:400;font-size:var(--text-step-num);line-height:1;
  color:var(--color-accent)}
.elementor .bhv-step.bhv-step > *{width:auto;min-width:0}
.elementor .bhv-step-title.bhv-step-title{margin:0 0 4px;line-height:1.08}
.elementor .bhv-step-body.bhv-step-body{margin:0;font-size:var(--text-step-body);line-height:1.6}

/* --- C16 check list, prose size (task 4.16) ---------------------------------------------------
   PROTO: .list-check{list-style:none;padding:0;margin:0;display:grid;gap:12px}
          .list-check li{display:flex;gap:12px;align-items:flex-start}
          .list-check li::before{26x26 orange disc, margin-top:2px, white tick centre/15px}
   ⚠ MEASURED IN PROTO, NOT READ OFF THE SPEC: all eight of PROTO's check lists sit inside .prose, and
   `.prose ul{padding-left:1.2em}` + `.prose li{margin:.35em 0}` (both 0,1,1) outrank `.list-check`
   (0,1,0). Rendered at 1440: ul padding-left 21px, li margin 6.125px top and bottom, gap 12px.
   components.md C16 lists padding 0 because it read the declaration; PROTO owns every dimension, so
   the rendered values are built (in em, so they follow the list's own font size).
   Built like C12's `.bhv-checks`: ONE e-paragraph (tag span) holding a real <ul><li> - html-v3 allows
   ul / li / b on 4.2.4 and they survive Document::save() (measured at 4A). The tick is a white-KEYWORD
   SVG over the accent token, so the accent keeps exactly two homes. The C12 offer-card size
   (28px / 16px / centred) is `.bhv-checks` and is NOT this rule. ----------------------------------- */
.elementor .bhv-list-check.bhv-list-check{display:block;margin:0}
.elementor .bhv-list-check ul{list-style:none;padding:0 0 0 1.2em;margin:0;display:grid;gap:var(--chip-gap)}
.elementor .bhv-list-check li{display:flex;gap:var(--chip-gap);align-items:flex-start;margin:.35em 0}
.elementor .bhv-list-check li::before{content:"";width:26px;height:26px;border-radius:50%;flex:none;margin-top:2px;
  background:var(--color-accent) url("data:image/svg+xml,%3Csvg xmlns='http://www.w3.org/2000/svg' viewBox='0 0 24 24' fill='none' stroke='white' stroke-width='3' stroke-linecap='round' stroke-linejoin='round'%3E%3Cpath d='M5 12l5 5L20 7'/%3E%3C/svg%3E") center/15px no-repeat}
.elementor .bhv-list-check b{font-weight:700}
/* 4.C3(b) / D-AV (human, 2026-09-14): at 374px and below the bold lead-in check list scrolled 2px sideways at 320px
   (li min-content 282.73px = 26 bullet + 12 gap + lead-in + 12 gap + longest word "tussenpersonen."). Tighter gap on
   lead-in items only (4px less per gap), scoped with :has(> b) so plain check lists keep 12px. No effect at 375px and up.
   Words never break (no overflow-wrap change). */
@media (max-width:374px){.elementor .bhv-list-check li:has(> b){gap:calc(var(--chip-gap) - 4px)}}

/* --- C18 Kennisbank filter pills (task 4.17) ----------------------------------------------------
   PROTO .filter{display:flex;gap:10px;flex-wrap:wrap;margin:26px 0 30px}. The <div> and its
   <button>s are printed by [bhv_kennisbank_filter] (bhv-components.php 2b) from the categories that
   have posts; the buttons carry the filter-pill / filter-pill-on Global Classes (51.2px, 4.B4),
   loaded by that plugin's styles bucket. A plain <div> has no atomic base style, so (0,2,0) is
   enough here. -------------------------------------------------------------------------------- */
.elementor .bhv-kb-pills{display:flex;flex-direction:row;flex-wrap:wrap;gap:var(--pill-gap);margin:26px 0 30px;padding:0}
.elementor .bhv-kb-pills > button{flex:none}

/* ===========================================================================================
   BATCH 4C (2026-09-14, second part) - C22 prose block, C23 photo grid, C24 marker family.
   C27 (bedankt block) and the 404 template add NO CSS: they reuse C3 variant B, the C5 chip
   group and the button classes exactly as built.
   =========================================================================================== */

/* --- C22 prose block (task 4.21) ---------------------------------------------------------------------------
   ONE rule set for BOTH prose surfaces, so an article and a page render prose identically.
   (1) ARTICLE BODY, a WordPress post: Elementor Pro "Post Content" widget (theme-post-content) in the
       single-post Theme Builder template (task 6.10), with the CSS class bhv-prose. The widget prints the
       block-editor markup itself as its direct children: p, h2, ul, blockquote holding a p, inline a/strong.
   (2) PAGE-LEVEL PROSE: an atomic e-div-block with the classes prose + bhv-prose holding one e-heading per
       heading, one e-paragraph (tag p) per paragraph, and an e-paragraph (tag span) that carries a list or a
       blockquote in its html-v3 text (p is not in the html-v3 allow-list, finding B4A-5).
   Values are the RENDERED prototype .prose, measured at 8 widths: 17.5px/1.6; p 0 0 1em; h2 1.6em 0 .5em;
   h3 1.4em 0 .4em; 0 margin-top on the first child; lists 1em 0 with padding-left 1.2em and items .35em 0;
   blockquote 1.4em 0 with padding .4em 0 .4em 1.2em and a 4px accent rule; links inherit navy, underlined.
   Only DIRECT children are styled, so a component nested in the column (photo grid, marker, check list,
   a button) keeps its own rules. Specificity: the block is doubled (0,3,0) against .e-div-block-base
   (padding 10px, loads later); children are (0,3,1) against .e-heading-base / .e-paragraph-base (margin 0,
   (0,2,0)), the v3 kit h1-h6 and link rules (0,1,1) and the theme reset (0,0,1). flow-root keeps child
   margins inside the block, as the grid item in the prototype does. ------------------------------------------ */
.elementor .bhv-prose.bhv-prose{display:flow-root;padding:0;min-width:0;max-width:var(--measure-prose);
  font-family:var(--stack-body);font-size:var(--text-prose);font-weight:400;line-height:1.6;color:var(--color-text)}
.elementor .bhv-prose.bhv-prose > p{margin:0 0 1em}
.elementor .bhv-prose.bhv-prose > span{display:block;margin:0}
.elementor .bhv-prose.bhv-prose > h2{font-family:var(--stack-heading);font-weight:400;font-size:var(--text-h2-prose);
  line-height:1.08;letter-spacing:-.005em;color:var(--color-text);margin:1.6em 0 .5em}
.elementor .bhv-prose.bhv-prose > h3{font-family:var(--stack-heading);font-weight:400;font-size:var(--text-h3-prose);
  line-height:1.2;letter-spacing:-.005em;color:var(--color-text);margin:1.4em 0 .4em}
.elementor .bhv-prose.bhv-prose > :first-child{margin-top:0}
.elementor .bhv-prose.bhv-prose > ul,.elementor .bhv-prose.bhv-prose > ol,
.elementor .bhv-prose.bhv-prose > span:not(.bhv-list-check) > ul,
.elementor .bhv-prose.bhv-prose > span:not(.bhv-list-check) > ol{margin:1em 0;padding:0 0 0 1.2em}
.elementor .bhv-prose.bhv-prose > ul > li,.elementor .bhv-prose.bhv-prose > ol > li,
.elementor .bhv-prose.bhv-prose > span:not(.bhv-list-check) > ul > li,
.elementor .bhv-prose.bhv-prose > span:not(.bhv-list-check) > ol > li{margin:.35em 0}
.elementor .bhv-prose.bhv-prose > blockquote,.elementor .bhv-prose.bhv-prose > span > blockquote{margin:1.4em 0;
  padding:.4em 0 .4em 1.2em;border:0;border-inline-start:4px solid var(--color-accent);font-family:var(--stack-heading);
  font-weight:400;font-size:var(--text-blockquote);line-height:1.35;color:var(--color-text)}
.elementor .bhv-prose.bhv-prose blockquote > p{margin:0;font:inherit;color:inherit}
.elementor .bhv-prose.bhv-prose > :is(p,ul,ol,span,blockquote,h2,h3) a:not([class]){color:inherit;text-decoration:underline}
/* Post Content widget (article body): in a Theme Builder template the widget sits directly inside an atomic container, and
   frontend.min.css sets `.elementor.elementor .e-con>.elementor-widget{max-width:100%}` at (0,4,0). Measured: the article
   column lost its 70ch measure at 960px (883.22px, prototype 841.55px). This (0,5,0) rule restores the measure. -------- */
.elementor.elementor .e-con > .bhv-prose.bhv-prose{max-width:var(--measure-prose)}

/* --- C23 photo grid (task 4.22; /over-marcel/ only) ---------------------------------------------------------
   Prototype .photo-grid: 3 equal columns, 18px gap, 2 columns at 700px and below (never 1, approved). Tiles
   are 4:3 with radius-md and overflow hidden; the photo fills its tile with object-fit cover, like the C3 hero
   photo. The fourth tile is the C24 placeholder tile (tbc-ph). Grid children are e-div-blocks and one
   e-paragraph, so padding, width and margin are stated against their atomic base styles. ------------------- */
.elementor .bhv-photo-grid.bhv-photo-grid{display:grid;grid-template-columns:repeat(3,minmax(0,1fr));
  gap:var(--facts-gap);padding:0;margin:0;min-width:0}
.elementor .bhv-photo-grid.bhv-photo-grid > *{aspect-ratio:4/3;border-radius:var(--radius-md);overflow:hidden;
  min-width:0;width:auto;margin:0}
.elementor .bhv-photo-tile.bhv-photo-tile{padding:0}
.elementor .bhv-photo-tile img{width:100%;height:100%;object-fit:cover;display:block}
@media(max-width:700px){.elementor .bhv-photo-grid.bhv-photo-grid{grid-template-columns:repeat(2,minmax(0,1fr))}}

/* --- C24 [te bevestigen] marker family (task 4.23). EXTENDS the inline .tbc rule, never redefines it --------
   One prefix for the whole family, so a single search finds every unconfirmed item before go-live:
   (1) a whole element as an inline marker: class tbc (defined with the chrome, assumption A14);
   (2) a marker INSIDE a sentence: html-v3 lets a span carry only an id, so the approved marked span is
       span id="tbc-SLUG"; the .tbc rule and its link rule now also select span[id^="tbc-"] (.elementor-kit-11 added,
       declarations untouched). The id must be unique on its page;
   (3) the block marker tbc-block and the photo placeholder tile tbc-ph (prototype .tbc-block and .ph).
   Amber marker tokens only, no red. The text inside a marker is always the approved wording that says the
   item is still open (for example "Marcel bevestigt ..."), so it never reads as a confirmed fact. --------- */
.elementor .tbc-block.tbc-block{display:block;margin:24px 0;padding:20px 24px;background:var(--marker-block-bg);
  border:2px dashed var(--marker-block-border);border-radius:var(--radius-sm);color:var(--marker-text);
  font-family:var(--stack-body);font-size:var(--text-marker-block);font-weight:400;line-height:1.6}
.elementor .bhv-prose.bhv-prose > .tbc-block{margin:24px 0}
.elementor .tbc-ph.tbc-ph{display:grid;place-items:center;text-align:center;padding:16px;background:var(--marker-block-bg);
  border:2px dashed var(--marker-block-border);color:var(--marker-text);font-family:var(--stack-body);
  font-size:var(--text-small);font-weight:400;line-height:1.6}

/* ===========================================================================================
   BATCH 6A (2026-09-14): page arrangement for Home and the three course pages, and C28.
   Same contract as every block above: literal bhv-* hooks registered as id = label Global Classes,
   doubled classes against base-desktop.css, PROTO's exact values, no raw colour, no media query
   outside PROTO's own breakpoints (D-N).
   =========================================================================================== */

/* --- Home split blocks (page-layouts.md 1, blocks 3, 7 and 9; PROTO .split and .split-head) ----------------
   PROTO: .split{display:grid;grid-template-columns:1fr 1.2fr;gap:clamp(28px,5vw,64px);align-items:start},
   inline align-items:center on blocks 3 and 9 and grid-template-columns:.8fr 2.2fr on block 7; one column at
   900px and below. The copy column is a plain block in PROTO (eyebrow, h2, .lead with an inline margin-top of
   14px and p's own 1em bottom margin, then the button's inline margin-top of 10px), so it is an e-div-block
   in normal flow here, which keeps PROTO's margins exactly. ---------------------------------------------- */
.elementor .bhv-split.bhv-split{display:grid;grid-template-columns:1fr 1.2fr;gap:var(--split-gap);
  align-items:start;padding:0;min-width:0}
.elementor .bhv-split-center.bhv-split-center{align-items:center}
.elementor .bhv-split-news.bhv-split-news{grid-template-columns:.8fr 2.2fr}
.elementor .bhv-split-copy.bhv-split-copy{display:block;padding:0;min-width:0}
.elementor .bhv-split-copy.bhv-split-copy > p{margin:14px 0 1em}
.elementor .bhv-split-copy.bhv-split-copy > .btn-secondary{margin-block-start:10px}
@media(max-width:900px){
  .elementor .bhv-split.bhv-split,.elementor .bhv-split-news.bhv-split-news{grid-template-columns:1fr}
}
/* Block 5: PROTO .split-head{display:flex;justify-content:space-between;align-items:end;gap:32px;
   margin-bottom:36px;flex-wrap:wrap} and .split-head .lead{margin:6px 0 0}. Its flex children size to their
   content, so the atomic width:100% is reset. */
.elementor .bhv-split-head.bhv-split-head{display:flex;flex-direction:row;justify-content:space-between;
  align-items:flex-end;gap:32px;margin-block-end:36px;flex-wrap:wrap;padding:0;min-width:0}
.elementor .bhv-split-head.bhv-split-head > *{width:auto}
.elementor .bhv-split-head-copy.bhv-split-head-copy{display:block;padding:0;min-width:0}
.elementor .bhv-split-head-copy.bhv-split-head-copy > p{margin:6px 0 0}

/* --- Home "In het nieuws": an atomic Pro post loop (e-collection-loop) of C9 cards -----------------------
   The layout element carries bhv-cards + bhv-cards-three, so the grid, gap and breakpoints are C8/C9's own.
   Its base style sets grid-auto-rows:1fr; PROTO's grid rows are auto, which only differs when the cards wrap
   to two rows (1000px and below), so it is reset. Each item is a flex column so the card fills its row, as a
   PROTO card fills its grid area. The "Nieuw" badge shows on the first item only: the loop is ordered newest
   first. C26: with zero posts the loop prints an empty list, and the whole block (eyebrow, heading, lead and
   button included) is hidden; with one or two posts the cards keep their column width. */
.elementor .bhv-news.bhv-news{padding:0}
.elementor .bhv-news-loop.bhv-news-loop{grid-auto-rows:auto}
.elementor .bhv-news-item.bhv-news-item{display:flex;flex-direction:column;padding:0;min-width:0}
.elementor .bhv-news-item.bhv-news-item > .card{flex:1 1 auto}
.elementor .bhv-news-item:not(:first-child) .bhv-badge-tr{display:none}
.elementor .bhv-news-section:not(:has(.bhv-news-item)){display:none}

/* --- Course pages: components inside the page prose column (page-layouts.md 2 to 4) -----------------------
   PROTO draws the target-group card row inside .prose with an inline margin of 22px 0 8px. */
.elementor .bhv-prose.bhv-prose > .bhv-cards.bhv-cards{margin:22px 0 8px}
.elementor .bhv-prose .card .text-card-title.text-card-title{margin:1.4em 0 .4em}
/* FAQ answers with an in-body link (course pages): PROTO's a{color:inherit} with the browser underline.
   Without it the v3 kit paints the link in the accent colour. */
.elementor .elementor-element.elementor-widget-n-accordion.bhv-faq .bhv-faq-a a:not([class]){color:inherit;text-decoration:underline}

/* C28 breadcrumb (task 4.28, D-AU): Rank Math's [rank_math_breadcrumb] in a v3 Shortcode widget inside a v3 island */
.elementor .e-con.bhv-island.bhv-island-breadcrumb{--padding-top:14px;--padding-bottom:0px}
.elementor .e-con.bhv-island.bhv-island-breadcrumb-cream{background-color:var(--color-surface-alt)}
.elementor .e-con.bhv-island-breadcrumb:not(:has(.rank-math-breadcrumb)){display:none}
.elementor .bhv-breadcrumb .rank-math-breadcrumb{display:block;margin:0;padding:0;font-family:var(--stack-body);
  font-size:var(--text-small);font-weight:400;font-style:normal;line-height:1.6;letter-spacing:normal;
  color:var(--color-text-muted);overflow-wrap:break-word}
.elementor .bhv-breadcrumb .rank-math-breadcrumb :is(p,ol){display:block;margin:0;padding:0;list-style:none}
.elementor .bhv-breadcrumb .rank-math-breadcrumb li{display:inline;margin:0;padding:0}
.elementor .bhv-breadcrumb .rank-math-breadcrumb a{display:inline-block;max-inline-size:100%;min-block-size:24px;
  color:var(--color-text-muted);text-decoration:underline}
.elementor .bhv-breadcrumb .rank-math-breadcrumb a:visited{color:var(--color-text-muted)}
.elementor .bhv-breadcrumb .rank-math-breadcrumb a:hover,
.elementor .bhv-breadcrumb .rank-math-breadcrumb a:active{color:var(--color-primary)}
.elementor .bhv-breadcrumb .rank-math-breadcrumb .separator,
.elementor .bhv-breadcrumb .rank-math-breadcrumb .last{color:var(--color-text-muted)}


/* ===========================================================================================
   BATCH 6B-2a (2026-09-21) - 6.8 /trainingsagenda/ and 6.9 /kennisbank/ + the /categorie/<slug>/ archives
   (Theme Builder archive documents 372 and 375). PROTO draws each page body as ONE `.container.section`
   in block flow; the build is `section` (flex) > `container` e-div-block + `bhv-page-body`.
   =========================================================================================== */
.elementor .bhv-page-body.bhv-page-body{display:block;min-width:0}

/* --- C6 small CTA on /trainingsagenda/: PROTO .small-cta{margin-top:40px}, its inner row
   {display:flex;justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap}, h3 margin-bottom 8px,
   copy {margin:0;max-width:56ch}, .small-cta .btn{margin-top:14px}. ------------------------------------------ */
.elementor .bhv-page-body > .bhv-small-cta.bhv-small-cta{margin-block-start:40px}
.elementor .bhv-small-cta-row.bhv-small-cta-row{position:relative;z-index:1;width:100%;display:flex;flex-direction:row;
  justify-content:space-between;align-items:center;gap:24px;flex-wrap:wrap;padding:0;min-width:0}
.elementor .bhv-small-cta-row.bhv-small-cta-row > *{width:auto}
.elementor .bhv-small-cta-copy.bhv-small-cta-copy{display:block;padding:0;min-width:0}
.elementor .bhv-small-cta-copy.bhv-small-cta-copy > h3{margin:0 0 8px}
.elementor .bhv-small-cta-copy.bhv-small-cta-copy > p{margin:0;max-width:56ch}
.elementor .bhv-small-cta-row.bhv-small-cta-row > .btn-primary{margin-block-start:14px}

/* --- C18 on the Kennisbank: the pills hide cards with the `hidden` attribute (components.md C18). The loop item's
   display:flex (0,3,0) would override the UA [hidden]{display:none}. ---------------------------------------- */
.elementor .bhv-news-item.bhv-news-item[hidden]{display:none}

/* --- "Snel antwoord" (page-layouts.md 9, block 4): PROTO .split with inline grid-template-columns:.8fr 1.6fr and
   margin-top:72px, one column at 900px and below; lead margin-top:12px with an inherited-colour link; the
   "Alle veelgestelde vragen" text link in a <p style="margin-top:16px">. ---------------------------------- */
.elementor .bhv-split-faq.bhv-split-faq{grid-template-columns:.8fr 1.6fr;margin-block-start:72px}
@media(max-width:900px){.elementor .bhv-split-faq.bhv-split-faq{grid-template-columns:1fr}}
.elementor .bhv-split-faq .bhv-split-copy.bhv-split-copy > p{margin-block-start:12px}
.elementor .bhv-split-faq .bhv-split-copy p a:not([class]){color:inherit;text-decoration:underline}
/* PROTO: the last <details> margin-bottom 12px collapses into the <p>'s margin-top 16px in block flow (16px between them)
   and the <p> keeps its default 1em bottom margin. The build's list column is a flex column (no collapsing), so 16 - 12 = 4. */
.elementor .bhv-faq-more.bhv-faq-more{margin:4px 0 1em}
/* The C14 820px FAQ column cap (/veelgestelde-vragen/) does not apply here: PROTO's #kb-faq has no max-width, so at 900px
   (one column, 828px) the accordion is full width. */
.elementor .bhv-split-faq .elementor-element.elementor-widget-n-accordion.bhv-faq .e-n-accordion{max-width:none}
.elementor .bhv-faq-more a{font-family:var(--font-heading);font-weight:400;font-size:var(--text-textlink);
  color:var(--color-accent);text-decoration:none}
.elementor .bhv-faq-more a:hover{text-decoration:underline}

/* --- C26 / MC-2: an empty category archive. The line and its button follow the loop and show only when the loop
   has no item. ----------------------------------------------------------------------------------------- */
.elementor .bhv-kb-empty.bhv-kb-empty{padding:40px 22px;text-align:center;min-width:0}
.elementor .bhv-kb-empty.bhv-kb-empty > p{margin:0 auto 18px;color:var(--color-text-muted)}
.elementor .bhv-news:has(.bhv-news-item) ~ .bhv-kb-empty{display:none}
/* ===========================================================================================
   BATCH 6B-2b (2026-09-21): task 6.10 article template (document 386, layout §10, PROTO .article-head /
   .article-meta / .article-hero-img), task 6.17 related rail, task 6.9a link pills on the category archives.
   ======================================================================================== */
.elementor .bhv-article-head.bhv-article-head{display:block;max-width:78ch;padding:0;min-width:0}
.elementor .bhv-article-back a{color:inherit;text-decoration:none}
.elementor .bhv-article-meta.bhv-article-meta{display:flex;flex-wrap:wrap;align-items:center;gap:14px;
  margin:14px 0 24px;padding:0;min-width:0;font-size:14px;color:var(--color-text-muted)}
.elementor .bhv-article-meta.bhv-article-meta > *{margin:0}
.elementor .bhv-article-cat.bhv-article-cat{font-family:var(--stack-heading);font-weight:400;font-size:15px;color:var(--color-accent)}
/* a post without a reading time: the empty field prints nothing, so two separators meet; show one */
.elementor .bhv-meta-sep + .bhv-meta-sep{display:none}
.elementor .bhv-article-hero.bhv-article-hero{display:block;aspect-ratio:21/9;width:100%;margin:0 0 40px;padding:0;min-width:0;
  border-radius:var(--radius-card);overflow:hidden;background-color:var(--color-img-placeholder)}
.elementor .bhv-related.bhv-related{display:block;margin-block-start:72px;padding:0;min-width:0}
.elementor .bhv-kb-pills-links a{text-decoration:none}
/* ===========================================================================================
   BATCH 6C-1 (2026-09-21): 6.11 /veelgestelde-vragen/, 6.13 /cursuskiezer/, 6.14 /contact/ (layout 11, 13, 14) and 6.10a (article hero image).
   The FAQ (167), the cursuskiezer (170) and the form (168) reach these pages through Elementor Pro's Template widget. The page root that holds
   the widget (bhv-embed) adds nothing: the embedded template's own section supplies the rhythm and the container, as on its component page.
   ======================================================================================== */
.elementor .e-con.bhv-embed.bhv-embed{--padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px;
  --gap:0px;--row-gap:0px;--column-gap:0px}
/* /contact/: the C19 form island (168) sits INSIDE the form column of the 1.4fr 1fr grid, so its own section padding and width cap go */
.elementor .bhv-article-grid-contact .e-con.bhv-island.bhv-island{--padding-top:0px;--padding-right:0px;--padding-bottom:0px;--padding-left:0px}
.elementor .bhv-article-grid-contact .e-con.bhv-island.bhv-island > .elementor-element{max-width:none}
/* C19 on /contact/, measured against PROTO's rendered form (a v3 form cannot take the v4 classes, so these follow PROTO's own
   .form rules): labels and consent inherit body line-height 1.6; the select keeps line-height normal (PROTO 52 px); the textarea is
   140 px high (Pro's rows="5" would make it 164); the checkbox keeps the browser margin PROTO leaves (4 3 3 4); the submit is an
   inline button in a full-width row. The consent text stays BESIDE its checkbox (the 4B flex-wrap for Pro's error line had pushed the
   label onto its own row); the error line itself still wraps below. The textarea sits inline as in PROTO, so its row keeps the line-box
   space PROTO has under it before the consent row; the submit is an (PROTO .btn-lg 285.59 px), capped at the row so it wraps rather than overflows at 320 (D-BP). */
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-group .elementor-field-label{line-height:1.6}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-group select.elementor-field-textual{line-height:normal}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-group textarea.elementor-field-textual{height:140px;display:inline-block;vertical-align:baseline}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-type-acceptance .elementor-field-option label{line-height:1.6}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-type-acceptance .elementor-acceptance-field{margin:4px 3px 3px 4px}
.elementor .elementor-widget-form.bhv-form.bhv-form .elementor-field-type-acceptance .elementor-field-option > label{flex:1 1 0;min-width:0;margin:0 0 6px}
.elementor .elementor-widget-form.bhv-form.bhv-form .e-form__buttons .elementor-button.elementor-button{width:auto;max-width:100%}
/* C13 /contact/ sidebar (PROTO .side): the C16 list keeps PROTO's .side ul indent and spacing (1.1em, 14 above, 12 below, 12 between,
   no item margin); the WhatsApp button is followed 28 px lower by the navy-inverted offer card (PROTO inline style); its H3 is 36 px with
   PROTO's .offer h3 top margin and .side h3 bottom margin; text white, border transparent. */
.elementor .bhv-side .bhv-list-check ul{padding:0 0 0 1.1em;margin:6px 0 12px;gap:12px}
.elementor .bhv-side .bhv-list-check li{margin:0}
.elementor .bhv-side .bhv-offer.bhv-offer{margin-block-start:28px;background-color:var(--color-primary);
  border-color:transparent;color:var(--color-on-primary)}
.elementor .bhv-side .bhv-offer.bhv-offer .text-h3.text-h3{font-size:36px;margin:6px 0 8px;color:var(--color-on-primary)}
.elementor .bhv-side .bhv-offer.bhv-offer p{color:var(--color-on-primary)}
/* C21: the default answer's last paragraph keeps PROTO's p margin (1em) above the panel padding. */
.elementor .bhv-kiezer-panel.bhv-kiezer-panel > p:last-child{margin-block-end:1em}
/* 6.10a (D-BV): with a featured image the 21:9 slot is filled by it, PROTO .article-hero-img img. */
.elementor .bhv-article-hero.bhv-article-hero img{display:block;width:100%;height:100%;object-fit:cover}
/* C16 in the contact sidebar: the tel link inherits the list colour and is underlined, as PROTO renders it (the v3 kit paints links accent). */
.elementor .bhv-side .bhv-list-check a:not([class]){color:inherit;text-decoration:underline}

/* ==========================================================================================================
 * 9.0(b) D-BZ (2026-09-21): metric-matched FALLBACK faces for the self-hosted web fonts (font-swap CLS).
 * Invisible once DM Sans / Caprasimo have loaded: each fallback family sits AFTER its web family in every
 * stack, so it only paints during the swap period (slow first visits). Numbers derived from the SERVED woff2
 * (dmsans-002a94d0, caprasimo-2a0f0470; CoreText, USE_TYPO_METRICS respected) and the macOS Arial / Georgia Bold
 * files. size-adjust = the 10th percentile of web/fallback width over the site's own rendered strings per role (headings: the minimum),
 * so the fallback is almost never WIDER than the web font and cannot add a line before the swap (Batch 9 worklog table).
 * unicode-range = the web faces' latin + latin-ext coverage, so a character the web font lacks (the arrows
 * U+2190/2192) keeps its previous fallback after load. Worklog Batch 9 has the table and the CLS proof.
 * The variables below re-declare the SAME families with the fallback appended; the Variables Manager and the
 * v3 kit typography keep their single-family values (do not edit them to add the fallback).
 * ========================================================================================================= */
@font-face{font-family:"DM Sans Fallback";font-style:normal;font-weight:400;src:local("Arial"), local("ArialMT");size-adjust:101.46%;ascent-override:97.77%;descent-override:30.55%;line-gap-override:0%;unicode-range:U+0000-00FF, U+0100-02BA, U+02BB-02BC, U+02BD-02C5, U+02C6, U+02C7-02CC, U+02CE-02D7, U+02DA, U+02DC, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20AB, U+20AC, U+20AD-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD}
@font-face{font-family:"DM Sans Fallback";font-style:normal;font-weight:500;src:local("Arial"), local("ArialMT");size-adjust:105.07%;ascent-override:94.41%;descent-override:29.50%;line-gap-override:0%;unicode-range:U+0000-00FF, U+0100-02BA, U+02BB-02BC, U+02BD-02C5, U+02C6, U+02C7-02CC, U+02CE-02D7, U+02DA, U+02DC, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20AB, U+20AC, U+20AD-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD}
@font-face{font-family:"DM Sans Fallback";font-style:normal;font-weight:700;src:local("Arial Bold"), local("Arial-BoldMT");size-adjust:100.53%;ascent-override:98.68%;descent-override:30.84%;line-gap-override:0%;unicode-range:U+0000-00FF, U+0100-02BA, U+02BB-02BC, U+02BD-02C5, U+02C6, U+02C7-02CC, U+02CE-02D7, U+02DA, U+02DC, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20AB, U+20AC, U+20AD-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD}
@font-face{font-family:"Caprasimo Fallback";font-style:normal;font-weight:400;src:local("Georgia Bold"), local("Georgia-Bold");size-adjust:96.00%;ascent-override:95.62%;descent-override:23.85%;line-gap-override:0%;unicode-range:U+0000-00FF, U+0100-02BA, U+02BB-02BC, U+02BD-02C5, U+02C6, U+02C7-02CC, U+02CE-02D7, U+02DA, U+02DC, U+02DD-02FF, U+0304, U+0308, U+0329, U+1D00-1DBF, U+1E00-1E9F, U+1EF2-1EFF, U+2000-206F, U+20A0-20AB, U+20AC, U+20AD-20C0, U+2113, U+2122, U+2191, U+2193, U+2212, U+2215, U+2C60-2C7F, U+A720-A7FF, U+FEFF, U+FFFD}
:root{--font-body:"DM Sans","DM Sans Fallback";--font-heading:"Caprasimo","Caprasimo Fallback"}
.elementor-kit-11{--e-global-typography-accent-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt01-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt02-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt03-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt04-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt05-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt06-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt07-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt08-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt09-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt10-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt11-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt12-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt13-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt14-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt15-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt16-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt17-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt18-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt19-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt20-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt21-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt22-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt23-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt24-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt25-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt26-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt27-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt28-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt29-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt30-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt31-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt32-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt33-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt34-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt35-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt36-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-bhvt37-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-bhvt38-font-family:"DM Sans","DM Sans Fallback";--e-global-typography-primary-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-secondary-font-family:"Caprasimo","Caprasimo Fallback";--e-global-typography-text-font-family:"DM Sans","DM Sans Fallback"}

/* === QA round 1 (2026-09-21) ==========================================================
   M-03 · Elementor's base-desktop.css ships `.elementor .e-image-link-base{all:unset}` (also the
   heading and paragraph link bases) at (0,2,0), loading after this file, so it unset the site's
   `.elementor :focus-visible` ring on the linked header logo (the only Tab stop without a ring).
   One element and one pseudo-class more (0,3,1) restores the site's own ring on every such link. */
.elementor a.e-image-link-base:focus-visible,
.elementor a.e-heading-link-base:focus-visible,
.elementor a.e-paragraph-link-base:focus-visible{outline:3px solid var(--color-accent);outline-offset:3px}

/* m-03 · the skip-link target (id="content", now tabindex="-1") is a content container, not a
   control: it receives focus so the next Tab starts there, and it draws no ring (the design
   defines none for it). The skip link itself keeps its ring. */
.elementor #content[tabindex="-1"]:focus,
.elementor #content[tabindex="-1"]:focus-visible,
main#content[tabindex="-1"]:focus,
main#content[tabindex="-1"]:focus-visible{outline:none}

/* m-02 · heading levels changed by TAG only (SEO 6.2, no skipped levels). The footer column
   titles are now <h2 class="bhv-footer-h4">: the class pins the line-height and letter-spacing it
   used to inherit as an h4, because the v3 kit gives h2 its own (1.08, -0.005em). The agenda's
   small-CTA heading is now an h2 and keeps its 8 px bottom margin. Measured 0 boxes moved. */
.elementor .bhv-footer-h4.bhv-footer-h4{line-height:1.6;letter-spacing:normal}
.elementor .bhv-small-cta-copy.bhv-small-cta-copy > h2{margin:0 0 8px}

/* m-05 · a failed submission shows the site's own ERROR treatment (the field-level error colours,
   components.md C19), no longer the yellow dashed [te bevestigen] marker look it borrowed. No red. */
.elementor .elementor-widget-form.bhv-form.bhv-form form > .elementor-message.elementor-message-danger{
  border:var(--border-control) solid var(--orange-dark);background-color:var(--color-error-fill);
  color:var(--color-error-text);font-size:var(--text-label);font-weight:700;line-height:1.4}
/* C19 update 2026-09-21 (E-QA1-4) · success: Pro appends it in the same step as the redirect, so it shows until
   /bedankt/ paints. PROTO .form-ok: ok tokens, hairline border, body text colour; font, radius, padding and margin
   as the failure box (base rule above). */
.elementor .elementor-widget-form.bhv-form.bhv-form form > .elementor-message.elementor-message-success{
  border:var(--border-hairline) solid var(--ok-border);background-color:var(--ok-bg);
  color:var(--color-text);font-size:var(--text-label);font-weight:700;line-height:1.4}

/* m-06 · search results (Hello's template, no Elementor document) set in the site's own scale:
   the C3-B page-hero title position and size, card-title results, muted body excerpts (each
   result's approved meta description). Existing tokens only; assumption for Marcel's sign-off. */
body.search main#content.site-main{
  box-sizing:border-box;width:100%;max-width:var(--container-max);margin-inline:auto;
  padding:var(--page-hero-pad) var(--container-pad) var(--section-pad)}
body.search .site-main .page-header{margin:0 0 var(--section-pad-tight)}
body.search .site-main .page-header .entry-title{
  margin:0;max-width:none;padding:0;font-family:var(--stack-heading);font-weight:400;
  font-size:var(--text-h1);line-height:1.08;letter-spacing:-.005em;color:var(--color-text)}
body.search .site-main .page-content{max-width:var(--measure-prose)}
body.search .site-main article.post{padding:24px 0;border-block-start:var(--border-hairline) solid var(--line-soft)}
body.search .site-main article.post .entry-title{
  margin:0 0 8px;font-family:var(--stack-heading);font-weight:400;
  font-size:var(--text-card-title);line-height:1.2;letter-spacing:-.005em}
body.search .site-main article.post .entry-title a{color:var(--color-text);text-decoration:none}
body.search .site-main article.post .entry-title a:hover{text-decoration:underline}
body.search .site-main article.post p{
  margin:0;font-size:var(--text-body);line-height:1.6;color:var(--color-text-muted)}

/* D-CA / E-QA1-1 · search with no results (Hello's template): the approved MC-6 sentence with its
   /contact/ link, then WordPress core's own search form (core's Dutch strings). Existing values
   only: the sentence is body text and its link follows the site's inline-link rule; the field
   mirrors the C19 field (`input-field`), the button mirrors `btn-primary`, the gap is C19's 18 px,
   focus rings as C19 and `.elementor :focus-visible`. Hello's reset (the #c36 border and hover
   fill, 3 px radius, black ring with a white shadow) is replaced on every state. On Marcel's
   sign-off list with m-06. */
body.search .site-main .page-content > .bhv-search-empty{
  margin:0 0 18px;font-family:var(--font-body);font-size:var(--text-body);line-height:1.6;color:var(--color-text)}
body.search .site-main .page-content > .bhv-search-empty a{color:inherit;text-decoration:underline}
body.search .site-main .page-content > .search-form{display:flex;flex-wrap:wrap;align-items:stretch;gap:18px;margin:0}
body.search .site-main .search-form label{flex:1 1 200px;min-width:0;margin:0}
body.search .site-main .search-form .search-field{
  box-sizing:border-box;width:100%;max-width:100%;min-height:var(--control-h);margin:0;padding:12px 16px;
  border:var(--border-control) solid var(--color-border);border-radius:var(--radius-input);
  background-color:var(--color-surface);color:var(--color-text);box-shadow:none;transition:none;
  font-family:var(--font-body);font-size:var(--text-body);line-height:1.6}
body.search .site-main .search-form .search-field:focus{border-color:var(--color-border);outline:none;box-shadow:none}
body.search .site-main .search-form .search-field:focus-visible{
  border-color:var(--color-accent);outline:3px solid var(--color-accent);outline-offset:2px;box-shadow:none}
body.search .site-main .search-form .search-submit{
  flex:0 0 auto;box-sizing:border-box;min-height:var(--control-h);margin:0;padding:0 var(--control-pad-x);
  display:inline-flex;align-items:center;justify-content:center;white-space:nowrap;
  border:var(--border-control) solid var(--color-accent);border-radius:var(--radius-pill);
  background-color:var(--color-accent);color:var(--color-on-primary);box-shadow:none;cursor:pointer;
  font-family:var(--font-body);font-weight:700;font-size:var(--text-btn);line-height:1.1;text-decoration:none}
body.search .site-main .search-form .search-submit:focus{
  border-color:var(--color-accent);background-color:var(--color-accent);color:var(--color-on-primary);outline:none;box-shadow:none}
body.search .site-main .search-form .search-submit:hover,
body.search .site-main .search-form .search-submit:focus-visible{
  border-color:var(--orange-dark);background-color:var(--orange-dark);color:var(--color-on-primary)}
body.search .site-main .search-form .search-submit:focus-visible{outline:3px solid var(--color-accent);outline-offset:3px;box-shadow:none}/* End custom CSS */